From 6b66bae334926c1329955b9abc458f4d4d45d285 Mon Sep 17 00:00:00 2001 From: cajus Date: Tue, 24 Feb 2009 07:56:34 +0000 Subject: [PATCH] Created trunk inside of 2.6-lhm git-svn-id: https://oss.gonicus.de/repositories/gosa/branches/2.6-lhm@13441 594d385d-05f5-0310-b6e9-bd551577e9d8 --- trunk/gosa-core/AUTHORS | 79 + trunk/gosa-core/CODING | 216 + trunk/gosa-core/COPYING | 284 + trunk/gosa-core/Changelog | 670 + trunk/gosa-core/FAQ | 590 + trunk/gosa-core/INSTALL | 109 + trunk/gosa-core/README | 73 + trunk/gosa-core/README.safemode | 14 + trunk/gosa-core/bin/gosa-encrypt-passwords | 114 + trunk/gosa-core/bin/mkntpasswd | 10 + trunk/gosa-core/contrib/artwork/GOsa-logo.eps | 64 + trunk/gosa-core/contrib/desktoprc | 1 + trunk/gosa-core/contrib/encodings | 9 + trunk/gosa-core/contrib/extract-locale | 8 + trunk/gosa-core/contrib/gosa | 177 + trunk/gosa-core/contrib/gosa.1 | 41 + trunk/gosa-core/contrib/gosa.conf | 635 + trunk/gosa-core/contrib/gosa.conf.5 | 1360 + trunk/gosa-core/contrib/gosa.spec | 324 + trunk/gosa-core/contrib/latex2html | 17413 ++++ trunk/gosa-core/contrib/make-gosa-package | 221 + trunk/gosa-core/contrib/openldap/gofax.ldif | 18 + trunk/gosa-core/contrib/openldap/gofax.schema | 95 + trunk/gosa-core/contrib/openldap/gofon.ldif | 57 + trunk/gosa-core/contrib/openldap/gofon.schema | 324 + .../contrib/openldap/gosa-samba2.ldif | 74 + .../contrib/openldap/gosa-samba2.schema | 402 + .../contrib/openldap/gosa-samba3.ldif | 74 + .../contrib/openldap/gosa-samba3.schema | 406 + .../gosa-core/contrib/openldap/goserver.ldif | 100 + .../contrib/openldap/goserver.schema | 594 + .../gosa-core/contrib/openldap/gosystem.ldif | 54 + .../contrib/openldap/gosystem.schema | 350 + .../gosa-core/contrib/openldap/goto-mime.ldif | 10 + .../contrib/openldap/goto-mime.schema | 61 + trunk/gosa-core/contrib/openldap/goto.ldif | 28 + trunk/gosa-core/contrib/openldap/goto.schema | 154 + .../contrib/openldap/rfc2307bis.ldif | 52 + .../contrib/openldap/rfc2307bis.schema | 288 + trunk/gosa-core/contrib/openldap/samba.ldif | 21 + trunk/gosa-core/contrib/openldap/samba.schema | 152 + trunk/gosa-core/contrib/openldap/samba3.ldif | 58 + .../gosa-core/contrib/openldap/samba3.schema | 554 + trunk/gosa-core/contrib/openldap/slapd.conf | 234 + trunk/gosa-core/contrib/openldap/trust.ldif | 6 + trunk/gosa-core/contrib/openldap/trust.schema | 21 + trunk/gosa-core/contrib/shells | 6 + trunk/gosa-core/debian/README.Debian | 89 + trunk/gosa-core/debian/changelog | 24 + trunk/gosa-core/debian/compat | 1 + trunk/gosa-core/debian/control | 97 + trunk/gosa-core/debian/copyright | 31 + trunk/gosa-core/debian/gosa-16.xpm | 137 + trunk/gosa-core/debian/gosa-apache.conf | 14 + trunk/gosa-core/debian/gosa-desktop.config | 9 + trunk/gosa-core/debian/gosa-desktop.desktop | 12 + trunk/gosa-core/debian/gosa-desktop.dirs | 4 + trunk/gosa-core/debian/gosa-desktop.install | 5 + trunk/gosa-core/debian/gosa-desktop.manpages | 1 + trunk/gosa-core/debian/gosa-desktop.menu | 8 + trunk/gosa-core/debian/gosa-desktop.postinst | 11 + trunk/gosa-core/debian/gosa-desktop.postrm | 7 + trunk/gosa-core/debian/gosa-desktop.templates | 9 + trunk/gosa-core/debian/gosa-dev.dirs | 1 + trunk/gosa-core/debian/gosa-dev.install | 3 + trunk/gosa-core/debian/gosa-dev.manpages | 5 + trunk/gosa-core/debian/gosa-help-de.dirs | 1 + trunk/gosa-core/debian/gosa-help-de.install | 1 + trunk/gosa-core/debian/gosa-help-en.dirs | 1 + trunk/gosa-core/debian/gosa-help-en.install | 1 + trunk/gosa-core/debian/gosa-help-es.dirs | 1 + trunk/gosa-core/debian/gosa-help-es.install | 1 + trunk/gosa-core/debian/gosa-help-fr.dirs | 1 + trunk/gosa-core/debian/gosa-help-fr.install | 1 + trunk/gosa-core/debian/gosa-help-nl.dirs | 1 + trunk/gosa-core/debian/gosa-help-nl.install | 1 + trunk/gosa-core/debian/gosa-schema.dirs | 1 + trunk/gosa-core/debian/gosa-schema.install | 12 + trunk/gosa-core/debian/gosa.dirs | 6 + trunk/gosa-core/debian/gosa.docs | 4 + trunk/gosa-core/debian/gosa.install | 13 + trunk/gosa-core/debian/gosa.lintian-overrides | 7 + trunk/gosa-core/debian/gosa.manpages | 4 + trunk/gosa-core/debian/gosa.postinst | 77 + trunk/gosa-core/debian/gosa.postrm | 42 + trunk/gosa-core/debian/gosa.xpm | 490 + trunk/gosa-core/debian/patches/00list | 5 + .../patches/01_fix_smarty_location.dpatch | 23 + .../patches/02_fix_template_location.dpatch | 19 + .../patches/03_fix_class_mapping.dpatch | 60 + .../patches/04_fix_locale_location.dpatch | 48 + .../04_fix_online_help_location.dpatch | 31 + trunk/gosa-core/debian/po/POTFILES.in | 1 + trunk/gosa-core/debian/po/cz.po | 39 + trunk/gosa-core/debian/po/de.po | 39 + trunk/gosa-core/debian/po/es.po | 63 + trunk/gosa-core/debian/po/eu.po | 42 + trunk/gosa-core/debian/po/fi.po | 32 + trunk/gosa-core/debian/po/fr.po | 41 + trunk/gosa-core/debian/po/it.po | 42 + trunk/gosa-core/debian/po/nl.po | 36 + trunk/gosa-core/debian/po/pl.po | 40 + trunk/gosa-core/debian/po/pt.po | 41 + trunk/gosa-core/debian/po/ru.po | 43 + trunk/gosa-core/debian/po/sv.po | 43 + trunk/gosa-core/debian/po/templates.pot | 37 + trunk/gosa-core/debian/rules | 86 + trunk/gosa-core/debian/smarty-acl-render.dirs | 1 + .../debian/smarty-acl-render.install | 2 + trunk/gosa-core/debian/watch | 3 + trunk/gosa-core/dh-make-gosa | 399 + trunk/gosa-core/dh-make-gosa.1 | 89 + .../gosa-core/doc/admin/en/manual_gosa_en.tex | 72 + .../doc/admin/en/manual_gosa_en_apache.tex | 837 + .../doc/admin/en/manual_gosa_en_ldap.tex | 1059 + .../doc/admin/en/referencias_gosa.bib | 109 + .../gosa-core/doc/admin/es/manual_gosa_es.tex | 120 + .../doc/admin/es/manual_gosa_es_apache.tex | 822 + .../admin/es/manual_gosa_es_certificates.tex | 102 + .../doc/admin/es/manual_gosa_es_dns.tex | 304 + .../admin/es/manual_gosa_es_fileserver.tex | 11 + .../doc/admin/es/manual_gosa_es_ftp.tex | 1 + .../doc/admin/es/manual_gosa_es_gw.tex | 1 + .../doc/admin/es/manual_gosa_es_im.tex | 1 + .../doc/admin/es/manual_gosa_es_kerberos.tex | 693 + .../doc/admin/es/manual_gosa_es_ldap.tex | 1135 + .../doc/admin/es/manual_gosa_es_mail.tex | 329 + .../doc/admin/es/manual_gosa_es_otros.tex | 27 + .../doc/admin/es/manual_gosa_es_printing.tex | 1 + .../doc/admin/es/manual_gosa_es_proxy.tex | 1 + .../doc/admin/es/manual_gosa_es_ssh.tex | 1 + .../doc/admin/es/manual_gosa_es_vpn.tex | 1 + .../doc/admin/es/referencias_gosa.bib | 182 + .../doc/core/de/html/applications/WARNINGS | 4 + .../de/html/applications/applications.css | 36 + .../de/html/applications/applications.html | 68 + .../doc/core/de/html/applications/edit.png | Bin 0 -> 946 bytes .../doc/core/de/html/applications/index.html | 68 + .../doc/core/de/html/applications/labels.pl | 13 + .../core/de/html/applications/list_back.png | Bin 0 -> 862 bytes .../core/de/html/applications/list_home.png | Bin 0 -> 865 bytes .../de/html/applications/list_new_app.png | Bin 0 -> 794 bytes .../core/de/html/applications/list_reload.png | Bin 0 -> 910 bytes .../core/de/html/applications/list_root.png | Bin 0 -> 852 bytes .../doc/core/de/html/applications/node1.html | 149 + .../doc/core/de/html/applications/node2.html | 76 + .../doc/core/de/html/applications/node3.html | 74 + .../doc/core/de/html/applications/node4.html | 88 + .../doc/core/de/html/applications/node5.html | 62 + .../doc/core/de/html/applications/node6.html | 62 + .../doc/core/de/html/applications/node7.html | 40 + .../doc/core/de/html/applications/node8.html | 51 + .../doc/core/de/html/applications/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/applications/search.png | Bin 0 -> 1023 bytes .../doc/core/de/html/blocklists/WARNINGS | 3 + .../core/de/html/blocklists/blocklists.css | 35 + .../core/de/html/blocklists/blocklists.html | 60 + .../doc/core/de/html/blocklists/index.html | 60 + .../doc/core/de/html/blocklists/labels.pl | 13 + .../doc/core/de/html/blocklists/list_back.png | Bin 0 -> 862 bytes .../doc/core/de/html/blocklists/list_home.png | Bin 0 -> 865 bytes .../de/html/blocklists/list_new_blocklist.png | Bin 0 -> 781 bytes .../core/de/html/blocklists/list_reload.png | Bin 0 -> 910 bytes .../doc/core/de/html/blocklists/list_root.png | Bin 0 -> 852 bytes .../doc/core/de/html/blocklists/node1.html | 160 + .../doc/core/de/html/blocklists/node2.html | 61 + .../doc/core/de/html/blocklists/node3.html | 51 + .../doc/core/de/html/blocklists/node4.html | 41 + .../doc/core/de/html/blocklists/node5.html | 51 + .../doc/core/de/html/blocklists/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/blocklists/search.png | Bin 0 -> 1023 bytes .../doc/core/de/html/conference/WARNINGS | 3 + .../core/de/html/conference/conference.css | 44 + .../core/de/html/conference/conference.html | 64 + .../doc/core/de/html/conference/index.html | 64 + .../doc/core/de/html/conference/labels.pl | 13 + .../doc/core/de/html/conference/list_back.png | Bin 0 -> 862 bytes .../doc/core/de/html/conference/list_home.png | Bin 0 -> 865 bytes .../core/de/html/conference/list_reload.png | Bin 0 -> 910 bytes .../doc/core/de/html/conference/list_root.png | Bin 0 -> 852 bytes .../doc/core/de/html/conference/node1.html | 170 + .../doc/core/de/html/conference/node2.html | 48 + .../doc/core/de/html/conference/node3.html | 66 + .../doc/core/de/html/conference/node4.html | 86 + .../doc/core/de/html/conference/node5.html | 39 + .../doc/core/de/html/conference/node6.html | 51 + .../doc/core/de/html/conference/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/conference/search.png | Bin 0 -> 1023 bytes .../html/conference/select_new_component.png | Bin 0 -> 452 bytes .../doc/core/de/html/departments/WARNINGS | 4 + .../core/de/html/departments/departments.css | 37 + .../core/de/html/departments/departments.html | 70 + .../doc/core/de/html/departments/edit.png | Bin 0 -> 946 bytes .../doc/core/de/html/departments/index.html | 70 + .../doc/core/de/html/departments/labels.pl | 13 + .../core/de/html/departments/list_back.png | Bin 0 -> 862 bytes .../core/de/html/departments/list_home.png | Bin 0 -> 865 bytes .../html/departments/list_new_department.png | Bin 0 -> 717 bytes .../core/de/html/departments/list_reload.png | Bin 0 -> 910 bytes .../core/de/html/departments/list_root.png | Bin 0 -> 852 bytes .../doc/core/de/html/departments/node1.html | 159 + .../doc/core/de/html/departments/node2.html | 45 + .../doc/core/de/html/departments/node3.html | 47 + .../doc/core/de/html/departments/node4.html | 50 + .../doc/core/de/html/departments/node5.html | 59 + .../doc/core/de/html/departments/node6.html | 56 + .../doc/core/de/html/departments/node7.html | 48 + .../doc/core/de/html/departments/node8.html | 39 + .../doc/core/de/html/departments/node9.html | 51 + .../doc/core/de/html/departments/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/departments/search.png | Bin 0 -> 1023 bytes .../doc/core/de/html/faxreports/WARNINGS | 3 + .../core/de/html/faxreports/faxreports.css | Bin 0 -> 1016 bytes .../core/de/html/faxreports/faxreports.html | 58 + .../doc/core/de/html/faxreports/index.html | 58 + .../doc/core/de/html/faxreports/labels.pl | 13 + .../doc/core/de/html/faxreports/node1.html | 52 + .../doc/core/de/html/faxreports/node2.html | 64 + .../doc/core/de/html/faxreports/node3.html | 50 + .../doc/core/de/html/faxreports/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/fonreports/WARNINGS | 3 + .../core/de/html/fonreports/fonreports.css | 35 + .../core/de/html/fonreports/fonreports.html | 59 + .../doc/core/de/html/fonreports/index.html | 59 + .../doc/core/de/html/fonreports/labels.pl | 13 + .../doc/core/de/html/fonreports/node1.html | 53 + .../doc/core/de/html/fonreports/node2.html | 65 + .../doc/core/de/html/fonreports/node3.html | 51 + .../doc/core/de/html/fonreports/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/groups/WARNINGS | 3 + .../doc/core/de/html/groups/groups.css | Bin 0 -> 1116 bytes .../doc/core/de/html/groups/groups.html | 96 + .../doc/core/de/html/groups/index.html | 96 + .../doc/core/de/html/groups/labels.pl | 13 + .../doc/core/de/html/groups/list_back.png | Bin 0 -> 862 bytes .../doc/core/de/html/groups/list_home.png | Bin 0 -> 865 bytes .../core/de/html/groups/list_new_group.png | Bin 0 -> 911 bytes .../doc/core/de/html/groups/list_reload.png | Bin 0 -> 910 bytes .../doc/core/de/html/groups/list_root.png | Bin 0 -> 852 bytes .../doc/core/de/html/groups/mailto.png | Bin 0 -> 635 bytes .../doc/core/de/html/groups/node1.html | 266 + .../doc/core/de/html/groups/node10.html | 43 + .../doc/core/de/html/groups/node11.html | 43 + .../doc/core/de/html/groups/node12.html | 48 + .../doc/core/de/html/groups/node13.html | 62 + .../doc/core/de/html/groups/node14.html | 62 + .../doc/core/de/html/groups/node15.html | 52 + .../doc/core/de/html/groups/node16.html | 59 + .../doc/core/de/html/groups/node17.html | 55 + .../doc/core/de/html/groups/node18.html | 48 + .../doc/core/de/html/groups/node19.html | 39 + .../doc/core/de/html/groups/node2.html | 56 + .../doc/core/de/html/groups/node20.html | 51 + .../doc/core/de/html/groups/node3.html | 44 + .../doc/core/de/html/groups/node4.html | 54 + .../doc/core/de/html/groups/node5.html | 101 + .../doc/core/de/html/groups/node6.html | 60 + .../doc/core/de/html/groups/node7.html | 76 + .../doc/core/de/html/groups/node8.html | 43 + .../doc/core/de/html/groups/node9.html | 43 + .../doc/core/de/html/groups/rocket.png | Bin 0 -> 828 bytes .../de/html/groups/select_application.png | Bin 0 -> 959 bytes .../doc/core/de/html/groups/select_groups.png | Bin 0 -> 868 bytes .../core/de/html/groups/select_winstation.png | Bin 0 -> 675 bytes .../doc/core/de/html/groups/smallenv.png | Bin 0 -> 733 bytes .../doc/core/de/html/logview/WARNINGS | 3 + .../doc/core/de/html/logview/index.html | 57 + .../doc/core/de/html/logview/labels.pl | 13 + .../doc/core/de/html/logview/logview.css | 33 + .../doc/core/de/html/logview/logview.html | 57 + .../doc/core/de/html/logview/node1.html | 46 + .../doc/core/de/html/logview/node2.html | 59 + .../doc/core/de/html/logview/node3.html | 51 + .../gosa-core/doc/core/de/html/macro/WARNINGS | 3 + .../doc/core/de/html/macro/false.png | Bin 0 -> 745 bytes .../doc/core/de/html/macro/index.html | 62 + .../doc/core/de/html/macro/labels.pl | 13 + .../doc/core/de/html/macro/list_back.png | Bin 0 -> 862 bytes .../doc/core/de/html/macro/list_home.png | Bin 0 -> 865 bytes .../doc/core/de/html/macro/list_new_macro.png | Bin 0 -> 823 bytes .../doc/core/de/html/macro/list_reload.png | Bin 0 -> 910 bytes .../doc/core/de/html/macro/list_root.png | Bin 0 -> 852 bytes .../doc/core/de/html/macro/macro.css | 46 + .../doc/core/de/html/macro/macro.html | 62 + .../doc/core/de/html/macro/node1.html | 177 + .../doc/core/de/html/macro/node2.html | 54 + .../doc/core/de/html/macro/node3.html | 74 + .../doc/core/de/html/macro/node4.html | 64 + .../doc/core/de/html/macro/node5.html | 39 + .../doc/core/de/html/macro/node6.html | 51 + .../doc/core/de/html/macro/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/macro/search.png | Bin 0 -> 1023 bytes .../gosa-core/doc/core/de/html/macro/true.png | Bin 0 -> 661 bytes .../doc/core/de/html/mailqueue/WARNINGS | 3 + .../doc/core/de/html/mailqueue/edittrash.png | Bin 0 -> 691 bytes .../doc/core/de/html/mailqueue/index.html | 61 + .../doc/core/de/html/mailqueue/labels.pl | 13 + .../doc/core/de/html/mailqueue/mailq_hold.png | Bin 0 -> 750 bytes .../core/de/html/mailqueue/mailq_requeue.png | Bin 0 -> 910 bytes .../core/de/html/mailqueue/mailq_unhold.png | Bin 0 -> 829 bytes .../doc/core/de/html/mailqueue/mailqueue.css | Bin 0 -> 997 bytes .../doc/core/de/html/mailqueue/mailqueue.html | 61 + .../doc/core/de/html/mailqueue/node1.html | 55 + .../doc/core/de/html/mailqueue/node2.html | 68 + .../doc/core/de/html/mailqueue/node3.html | 72 + .../doc/core/de/html/mailqueue/node4.html | 51 + .../doc/core/de/html/mailqueue/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/ogroups/WARNINGS | 4 + .../doc/core/de/html/ogroups/index.html | 59 + .../doc/core/de/html/ogroups/labels.pl | 13 + .../doc/core/de/html/ogroups/list_back.png | Bin 0 -> 862 bytes .../doc/core/de/html/ogroups/list_home.png | Bin 0 -> 865 bytes .../core/de/html/ogroups/list_new_ogroup.png | Bin 0 -> 754 bytes .../doc/core/de/html/ogroups/list_reload.png | Bin 0 -> 910 bytes .../doc/core/de/html/ogroups/list_root.png | Bin 0 -> 852 bytes .../doc/core/de/html/ogroups/node1.html | 178 + .../doc/core/de/html/ogroups/node2.html | 63 + .../doc/core/de/html/ogroups/node3.html | 39 + .../doc/core/de/html/ogroups/node4.html | 51 + .../doc/core/de/html/ogroups/ogroups.css | 38 + .../doc/core/de/html/ogroups/ogroups.html | 59 + .../doc/core/de/html/ogroups/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/ogroups/search.png | Bin 0 -> 1023 bytes .../gosa-core/doc/core/de/html/users/WARNINGS | 4 + .../doc/core/de/html/users/fax_small.png | Bin 0 -> 787 bytes .../doc/core/de/html/users/index.html | 171 + .../doc/core/de/html/users/labels.pl | 13 + .../doc/core/de/html/users/list_back.png | Bin 0 -> 862 bytes .../doc/core/de/html/users/list_home.png | Bin 0 -> 865 bytes .../doc/core/de/html/users/list_new_user.png | Bin 0 -> 788 bytes .../doc/core/de/html/users/list_reload.png | Bin 0 -> 910 bytes .../doc/core/de/html/users/list_root.png | Bin 0 -> 852 bytes .../doc/core/de/html/users/mailto.png | Bin 0 -> 635 bytes .../doc/core/de/html/users/node1.html | 361 + .../doc/core/de/html/users/node10.html | 51 + .../doc/core/de/html/users/node11.html | 74 + .../doc/core/de/html/users/node12.html | 76 + .../doc/core/de/html/users/node13.html | 71 + .../doc/core/de/html/users/node14.html | 43 + .../doc/core/de/html/users/node15.html | 43 + .../doc/core/de/html/users/node16.html | 43 + .../doc/core/de/html/users/node17.html | 43 + .../doc/core/de/html/users/node18.html | 43 + .../doc/core/de/html/users/node19.html | 43 + .../doc/core/de/html/users/node2.html | 57 + .../doc/core/de/html/users/node20.html | 58 + .../doc/core/de/html/users/node21.html | 60 + .../doc/core/de/html/users/node22.html | 52 + .../doc/core/de/html/users/node23.html | 95 + .../doc/core/de/html/users/node24.html | 56 + .../doc/core/de/html/users/node25.html | 54 + .../doc/core/de/html/users/node26.html | 62 + .../doc/core/de/html/users/node27.html | 159 + .../doc/core/de/html/users/node28.html | 102 + .../doc/core/de/html/users/node29.html | 66 + .../doc/core/de/html/users/node3.html | 43 + .../doc/core/de/html/users/node30.html | 62 + .../doc/core/de/html/users/node31.html | 97 + .../doc/core/de/html/users/node32.html | 41 + .../doc/core/de/html/users/node33.html | 41 + .../doc/core/de/html/users/node34.html | 43 + .../doc/core/de/html/users/node35.html | 58 + .../doc/core/de/html/users/node36.html | 43 + .../doc/core/de/html/users/node37.html | 43 + .../doc/core/de/html/users/node38.html | 46 + .../doc/core/de/html/users/node39.html | 60 + .../doc/core/de/html/users/node4.html | 54 + .../doc/core/de/html/users/node40.html | 56 + .../doc/core/de/html/users/node41.html | 58 + .../doc/core/de/html/users/node42.html | 67 + .../doc/core/de/html/users/node43.html | 53 + .../doc/core/de/html/users/node44.html | 55 + .../doc/core/de/html/users/node45.html | 56 + .../doc/core/de/html/users/node46.html | 56 + .../doc/core/de/html/users/node47.html | 58 + .../doc/core/de/html/users/node48.html | 49 + .../doc/core/de/html/users/node49.html | 39 + .../doc/core/de/html/users/node5.html | 48 + .../doc/core/de/html/users/node50.html | 51 + .../doc/core/de/html/users/node6.html | 105 + .../doc/core/de/html/users/node7.html | 111 + .../doc/core/de/html/users/node8.html | 56 + .../doc/core/de/html/users/node9.html | 66 + .../doc/core/de/html/users/penguin.png | Bin 0 -> 964 bytes .../doc/core/de/html/users/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/html/users/search.png | Bin 0 -> 1023 bytes .../core/de/html/users/select_netatalk.png | Bin 0 -> 828 bytes .../doc/core/de/html/users/select_phone.png | Bin 0 -> 784 bytes .../doc/core/de/html/users/select_user.png | Bin 0 -> 753 bytes .../core/de/html/users/select_winstation.png | Bin 0 -> 675 bytes .../doc/core/de/html/users/smallenv.png | Bin 0 -> 733 bytes .../doc/core/de/html/users/users.css | Bin 0 -> 1416 bytes .../doc/core/de/html/users/users.html | 171 + .../doc/core/de/lyx-source/applications.lyx | 605 + .../doc/core/de/lyx-source/blocklists.lyx | 342 + .../doc/core/de/lyx-source/conference.lyx | 416 + .../doc/core/de/lyx-source/departments.lyx | 423 + .../doc/core/de/lyx-source/faxreports.lyx | 187 + .../doc/core/de/lyx-source/fonreports.lyx | 187 + .../doc/core/de/lyx-source/groups.lyx | 985 + .../doc/core/de/lyx-source/images/action.png | Bin 0 -> 397 bytes .../de/lyx-source/images/addr_company.png | Bin 0 -> 1818 bytes .../core/de/lyx-source/images/addr_home.png | Bin 0 -> 1381 bytes .../de/lyx-source/images/addr_personal.png | Bin 0 -> 1372 bytes .../core/de/lyx-source/images/addressbook.png | Bin 0 -> 5434 bytes .../de/lyx-source/images/alternatemail.png | Bin 0 -> 893 bytes .../core/de/lyx-source/images/application.png | Bin 0 -> 3839 bytes .../doc/core/de/lyx-source/images/back.png | Bin 0 -> 733 bytes .../doc/core/de/lyx-source/images/banana.png | Bin 0 -> 784 bytes .../core/de/lyx-source/images/blocklists.png | Bin 0 -> 4295 bytes .../doc/core/de/lyx-source/images/branch.png | Bin 0 -> 694 bytes .../de/lyx-source/images/branch_small.png | Bin 0 -> 609 bytes .../de/lyx-source/images/button_cancel.png | Bin 0 -> 883 bytes .../de/lyx-source/images/cant_editpaste.png | Bin 0 -> 465 bytes .../doc/core/de/lyx-source/images/certs.png | Bin 0 -> 693 bytes .../core/de/lyx-source/images/closedlock.png | Bin 0 -> 750 bytes .../core/de/lyx-source/images/conference.png | Bin 0 -> 4094 bytes .../core/de/lyx-source/images/copypaste.png | Bin 0 -> 990 bytes .../core/de/lyx-source/images/crossref.png | Bin 0 -> 628 bytes .../core/de/lyx-source/images/cutpaste.png | Bin 0 -> 898 bytes .../doc/core/de/lyx-source/images/default.jpg | Bin 0 -> 2502 bytes .../de/lyx-source/images/default_icon.png | Bin 0 -> 1957 bytes .../core/de/lyx-source/images/department.png | Bin 0 -> 3728 bytes .../doc/core/de/lyx-source/images/dfs.png | Bin 0 -> 3646 bytes .../doc/core/de/lyx-source/images/dhcp.png | Bin 0 -> 4674 bytes .../doc/core/de/lyx-source/images/display.png | Bin 0 -> 733 bytes .../doc/core/de/lyx-source/images/dns.png | Bin 0 -> 4739 bytes .../doc/core/de/lyx-source/images/drives.png | Bin 0 -> 950 bytes .../doc/core/de/lyx-source/images/dtree.png | Bin 0 -> 694 bytes .../doc/core/de/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../core/de/lyx-source/images/editcopy.png | Bin 0 -> 777 bytes .../doc/core/de/lyx-source/images/editcut.png | Bin 0 -> 804 bytes .../core/de/lyx-source/images/editdelete.png | Bin 0 -> 892 bytes .../core/de/lyx-source/images/editpaste.png | Bin 0 -> 990 bytes .../core/de/lyx-source/images/edittrash.png | Bin 0 -> 691 bytes .../doc/core/de/lyx-source/images/email.png | Bin 0 -> 4142 bytes .../doc/core/de/lyx-source/images/empty.png | Bin 0 -> 174 bytes .../core/de/lyx-source/images/encrypted.png | Bin 0 -> 1239 bytes .../doc/core/de/lyx-source/images/env.png | Bin 0 -> 3242 bytes .../core/de/lyx-source/images/envelope.png | Bin 0 -> 843 bytes .../doc/core/de/lyx-source/images/expand.png | Bin 0 -> 183 bytes .../doc/core/de/lyx-source/images/fai.png | Bin 0 -> 4931 bytes .../core/de/lyx-source/images/fai_hook.png | Bin 0 -> 692 bytes .../de/lyx-source/images/fai_new_hook.png | Bin 0 -> 662 bytes .../de/lyx-source/images/fai_new_packages.png | Bin 0 -> 743 bytes .../images/fai_new_partitionTable.png | Bin 0 -> 809 bytes .../de/lyx-source/images/fai_new_profile.png | Bin 0 -> 903 bytes .../de/lyx-source/images/fai_new_script.png | Bin 0 -> 658 bytes .../de/lyx-source/images/fai_new_template.png | Bin 0 -> 630 bytes .../de/lyx-source/images/fai_new_variable.png | Bin 0 -> 410 bytes .../de/lyx-source/images/fai_packages.png | Bin 0 -> 959 bytes .../lyx-source/images/fai_partitionTable.png | Bin 0 -> 725 bytes .../core/de/lyx-source/images/fai_profile.png | Bin 0 -> 1094 bytes .../core/de/lyx-source/images/fai_script.png | Bin 0 -> 601 bytes .../core/de/lyx-source/images/fai_small.png | Bin 0 -> 885 bytes .../de/lyx-source/images/fai_template.png | Bin 0 -> 512 bytes .../de/lyx-source/images/fai_variable.png | Bin 0 -> 429 bytes .../doc/core/de/lyx-source/images/false.png | Bin 0 -> 745 bytes .../doc/core/de/lyx-source/images/fax.png | Bin 0 -> 3352 bytes .../core/de/lyx-source/images/fax_small.png | Bin 0 -> 787 bytes .../core/de/lyx-source/images/filesaveas.png | Bin 0 -> 1253 bytes .../doc/core/de/lyx-source/images/flag.png | Bin 0 -> 745 bytes .../doc/core/de/lyx-source/images/folder.png | Bin 0 -> 594 bytes .../doc/core/de/lyx-source/images/forward.png | Bin 0 -> 726 bytes .../doc/core/de/lyx-source/images/ftp.png | Bin 0 -> 4365 bytes .../core/de/lyx-source/images/fullfolder.png | Bin 0 -> 587 bytes .../de/lyx-source/images/gfx_hardware.png | Bin 0 -> 819 bytes .../doc/core/de/lyx-source/images/group.png | Bin 0 -> 4224 bytes .../core/de/lyx-source/images/hardware.png | Bin 0 -> 836 bytes .../lyx-source/images/hdd_linux_unmount.png | Bin 0 -> 6805 bytes .../doc/core/de/lyx-source/images/head.png | Bin 0 -> 753 bytes .../doc/core/de/lyx-source/images/help.png | Bin 0 -> 1136 bytes .../doc/core/de/lyx-source/images/hotplug.png | Bin 0 -> 861 bytes .../doc/core/de/lyx-source/images/house.png | Bin 0 -> 713 bytes .../doc/core/de/lyx-source/images/img1.png | Bin 0 -> 97 bytes .../doc/core/de/lyx-source/images/info.png | Bin 0 -> 1195 bytes .../core/de/lyx-source/images/info_small.png | Bin 0 -> 936 bytes .../core/de/lyx-source/images/keyboard.png | Bin 0 -> 343 bytes .../doc/core/de/lyx-source/images/lamp.png | Bin 0 -> 829 bytes .../doc/core/de/lyx-source/images/launch.png | Bin 0 -> 1263 bytes .../core/de/lyx-source/images/ldapserver.png | Bin 0 -> 3276 bytes .../doc/core/de/lyx-source/images/ldif.png | Bin 0 -> 2801 bytes .../core/de/lyx-source/images/list_back.png | Bin 0 -> 862 bytes .../de/lyx-source/images/list_blocklist.png | Bin 0 -> 671 bytes .../core/de/lyx-source/images/list_home.png | Bin 0 -> 865 bytes .../core/de/lyx-source/images/list_macro.png | Bin 0 -> 927 bytes .../core/de/lyx-source/images/list_new.png | Bin 0 -> 642 bytes .../de/lyx-source/images/list_new_app.png | Bin 0 -> 794 bytes .../lyx-source/images/list_new_blocklist.png | Bin 0 -> 781 bytes .../lyx-source/images/list_new_conference.png | Bin 0 -> 904 bytes .../lyx-source/images/list_new_department.png | Bin 0 -> 717 bytes .../de/lyx-source/images/list_new_group.png | Bin 0 -> 911 bytes .../de/lyx-source/images/list_new_macro.png | Bin 0 -> 823 bytes .../de/lyx-source/images/list_new_ogroup.png | Bin 0 -> 754 bytes .../de/lyx-source/images/list_new_user.png | Bin 0 -> 788 bytes .../core/de/lyx-source/images/list_ogroup.png | Bin 0 -> 728 bytes .../de/lyx-source/images/list_password.png | Bin 0 -> 693 bytes .../core/de/lyx-source/images/list_reload.png | Bin 0 -> 910 bytes .../core/de/lyx-source/images/list_root.png | Bin 0 -> 852 bytes .../de/lyx-source/images/list_seperator.png | Bin 0 -> 177 bytes .../core/de/lyx-source/images/list_submit.png | Bin 0 -> 614 bytes .../doc/core/de/lyx-source/images/list_up.png | Bin 0 -> 862 bytes .../de/lyx-source/images/log_critical.png | Bin 0 -> 745 bytes .../core/de/lyx-source/images/log_info.png | Bin 0 -> 936 bytes .../core/de/lyx-source/images/log_unknown.png | Bin 0 -> 746 bytes .../core/de/lyx-source/images/log_warning.png | Bin 0 -> 829 bytes .../doc/core/de/lyx-source/images/login.png | Bin 0 -> 9533 bytes .../doc/core/de/lyx-source/images/logview.png | Bin 0 -> 3406 bytes .../doc/core/de/lyx-source/images/macros.png | Bin 0 -> 4794 bytes .../de/lyx-source/images/mailq_active.png | Bin 0 -> 574 bytes .../de/lyx-source/images/mailq_header.png | Bin 0 -> 936 bytes .../core/de/lyx-source/images/mailq_hold.png | Bin 0 -> 750 bytes .../de/lyx-source/images/mailq_requeue.png | Bin 0 -> 910 bytes .../de/lyx-source/images/mailq_unhold.png | Bin 0 -> 829 bytes .../core/de/lyx-source/images/mailqueue.png | Bin 0 -> 4132 bytes .../doc/core/de/lyx-source/images/mailto.png | Bin 0 -> 635 bytes .../core/de/lyx-source/images/mainboard.png | Bin 0 -> 782 bytes .../doc/core/de/lyx-source/images/members.png | Bin 0 -> 868 bytes .../doc/core/de/lyx-source/images/memory.png | Bin 0 -> 931 bytes .../doc/core/de/lyx-source/images/monitor.png | Bin 0 -> 733 bytes .../core/de/lyx-source/images/monitoring.png | Bin 0 -> 4804 bytes .../doc/core/de/lyx-source/images/mouse.png | Bin 0 -> 751 bytes .../de/lyx-source/images/net_hardware.png | Bin 0 -> 828 bytes .../core/de/lyx-source/images/netatalk.png | Bin 0 -> 3642 bytes .../doc/core/de/lyx-source/images/network.png | Bin 0 -> 894 bytes .../doc/core/de/lyx-source/images/null.gif | Bin 0 -> 49 bytes .../doc/core/de/lyx-source/images/ogroup.png | Bin 0 -> 3510 bytes .../core/de/lyx-source/images/openlock.png | Bin 0 -> 923 bytes .../core/de/lyx-source/images/password.png | Bin 0 -> 3316 bytes .../doc/core/de/lyx-source/images/penguin.png | Bin 0 -> 964 bytes .../core/de/lyx-source/images/personal.png | Bin 0 -> 4119 bytes .../doc/core/de/lyx-source/images/phone.png | Bin 0 -> 4263 bytes .../core/de/lyx-source/images/phonereport.png | Bin 0 -> 3125 bytes .../doc/core/de/lyx-source/images/posix.png | Bin 0 -> 4083 bytes .../doc/core/de/lyx-source/images/printer.png | Bin 0 -> 678 bytes .../core/de/lyx-source/images/processor.png | Bin 0 -> 400 bytes .../doc/core/de/lyx-source/images/proxy.png | Bin 0 -> 5227 bytes .../doc/core/de/lyx-source/images/reports.png | Bin 0 -> 4298 bytes .../core/de/lyx-source/images/rightarrow.png | Bin 0 -> 863 bytes .../doc/core/de/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../doc/core/de/lyx-source/images/samba.png | Bin 0 -> 5472 bytes .../doc/core/de/lyx-source/images/save.png | Bin 0 -> 595 bytes .../doc/core/de/lyx-source/images/scanner.png | Bin 0 -> 809 bytes .../doc/core/de/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../core/de/lyx-source/images/search_user.png | Bin 0 -> 962 bytes .../lyx-source/images/select_application.png | Bin 0 -> 959 bytes .../de/lyx-source/images/select_component.png | Bin 0 -> 458 bytes .../lyx-source/images/select_conference.png | Bin 0 -> 868 bytes .../de/lyx-source/images/select_default.png | Bin 0 -> 725 bytes .../lyx-source/images/select_department.png | Bin 0 -> 731 bytes .../de/lyx-source/images/select_groups.png | Bin 0 -> 868 bytes .../images/select_invalid_application.png | Bin 0 -> 858 bytes .../de/lyx-source/images/select_macro.png | Bin 0 -> 927 bytes .../de/lyx-source/images/select_netatalk.png | Bin 0 -> 828 bytes .../images/select_new_component.png | Bin 0 -> 452 bytes .../de/lyx-source/images/select_new_phone.png | Bin 0 -> 660 bytes .../lyx-source/images/select_new_printer.png | Bin 0 -> 746 bytes .../lyx-source/images/select_new_server.png | Bin 0 -> 813 bytes .../lyx-source/images/select_new_terminal.png | Bin 0 -> 776 bytes .../images/select_new_workstation.png | Bin 0 -> 827 bytes .../de/lyx-source/images/select_newsystem.png | Bin 0 -> 642 bytes .../de/lyx-source/images/select_ogroup.png | Bin 0 -> 794 bytes .../de/lyx-source/images/select_phone.png | Bin 0 -> 784 bytes .../images/select_phone_connected.png | Bin 0 -> 864 bytes .../de/lyx-source/images/select_printer.png | Bin 0 -> 678 bytes .../de/lyx-source/images/select_proxy.png | Bin 0 -> 894 bytes .../de/lyx-source/images/select_server.png | Bin 0 -> 879 bytes .../de/lyx-source/images/select_template.png | Bin 0 -> 512 bytes .../de/lyx-source/images/select_terminal.png | Bin 0 -> 778 bytes .../core/de/lyx-source/images/select_user.png | Bin 0 -> 753 bytes .../lyx-source/images/select_winstation.png | Bin 0 -> 675 bytes .../lyx-source/images/select_workstation.png | Bin 0 -> 817 bytes .../doc/core/de/lyx-source/images/server.png | Bin 0 -> 879 bytes .../doc/core/de/lyx-source/images/service.png | Bin 0 -> 4135 bytes .../de/lyx-source/images/small_filter.png | Bin 0 -> 814 bytes .../core/de/lyx-source/images/smallenv.png | Bin 0 -> 733 bytes .../de/lyx-source/images/snd_hardware.png | Bin 0 -> 803 bytes .../core/de/lyx-source/images/sort_down.png | Bin 0 -> 174 bytes .../doc/core/de/lyx-source/images/sort_up.png | Bin 0 -> 176 bytes .../doc/core/de/lyx-source/images/sound.png | Bin 0 -> 898 bytes .../doc/core/de/lyx-source/images/stop.png | Bin 0 -> 974 bytes .../doc/core/de/lyx-source/images/system.png | Bin 0 -> 3105 bytes .../de/lyx-source/images/terminal_small.png | Bin 0 -> 778 bytes .../doc/core/de/lyx-source/images/time.png | Bin 0 -> 1049 bytes .../doc/core/de/lyx-source/images/tree.png | Bin 0 -> 894 bytes .../doc/core/de/lyx-source/images/true.png | Bin 0 -> 661 bytes .../doc/core/de/lyx-source/images/user.png | Bin 0 -> 3204 bytes .../doc/core/de/lyx-source/images/warning.png | Bin 0 -> 1692 bytes .../doc/core/de/lyx-source/images/zip.png | Bin 0 -> 791 bytes .../doc/core/de/lyx-source/ldapmanager.lyx | 275 + .../doc/core/de/lyx-source/logview.lyx | 150 + .../doc/core/de/lyx-source/macro.lyx | 484 + .../doc/core/de/lyx-source/mailqueue.lyx | 237 + .../doc/core/de/lyx-source/ogroups.lyx | 327 + .../doc/core/de/lyx-source/users.lyx | 2863 + .../doc/core/en/html/applications/WARNINGS | 5 + .../en/html/applications/applications.css | 35 + .../en/html/applications/applications.html | 67 + .../doc/core/en/html/applications/index.html | 67 + .../doc/core/en/html/applications/labels.pl | 13 + .../core/en/html/applications/list_back.png | Bin 0 -> 862 bytes .../core/en/html/applications/list_home.png | Bin 0 -> 865 bytes .../en/html/applications/list_new_app.png | Bin 0 -> 794 bytes .../core/en/html/applications/list_root.png | Bin 0 -> 852 bytes .../doc/core/en/html/applications/node1.html | 146 + .../doc/core/en/html/applications/node2.html | 72 + .../doc/core/en/html/applications/node3.html | 82 + .../doc/core/en/html/applications/node4.html | 46 + .../doc/core/en/html/applications/node5.html | 54 + .../doc/core/en/html/applications/node6.html | 38 + .../doc/core/en/html/applications/node7.html | 51 + .../doc/core/en/html/applications/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/applications/search.png | Bin 0 -> 1023 bytes .../doc/core/en/html/blocklists/WARNINGS | 5 + .../core/en/html/blocklists/blocklists.css | Bin 0 -> 1219 bytes .../core/en/html/blocklists/blocklists.html | 61 + .../doc/core/en/html/blocklists/index.html | 61 + .../doc/core/en/html/blocklists/labels.pl | 13 + .../doc/core/en/html/blocklists/list_back.png | Bin 0 -> 862 bytes .../doc/core/en/html/blocklists/list_home.png | Bin 0 -> 865 bytes .../en/html/blocklists/list_new_blocklist.png | Bin 0 -> 781 bytes .../doc/core/en/html/blocklists/list_root.png | Bin 0 -> 852 bytes .../doc/core/en/html/blocklists/node1.html | 139 + .../doc/core/en/html/blocklists/node2.html | 61 + .../doc/core/en/html/blocklists/node3.html | 48 + .../doc/core/en/html/blocklists/node4.html | 37 + .../doc/core/en/html/blocklists/node5.html | 51 + .../doc/core/en/html/blocklists/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/blocklists/search.png | Bin 0 -> 1023 bytes .../doc/core/en/html/conference/WARNINGS | 5 + .../core/en/html/conference/conference.css | Bin 0 -> 1277 bytes .../core/en/html/conference/conference.html | 65 + .../doc/core/en/html/conference/index.html | 65 + .../doc/core/en/html/conference/labels.pl | 13 + .../doc/core/en/html/conference/list_back.png | Bin 0 -> 862 bytes .../doc/core/en/html/conference/list_home.png | Bin 0 -> 865 bytes .../doc/core/en/html/conference/list_root.png | Bin 0 -> 852 bytes .../doc/core/en/html/conference/node1.html | 151 + .../doc/core/en/html/conference/node2.html | 48 + .../doc/core/en/html/conference/node3.html | 66 + .../doc/core/en/html/conference/node4.html | 89 + .../doc/core/en/html/conference/node5.html | 38 + .../doc/core/en/html/conference/node6.html | 51 + .../doc/core/en/html/conference/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/conference/search.png | Bin 0 -> 1023 bytes .../html/conference/select_new_component.png | Bin 0 -> 452 bytes .../doc/core/en/html/departments/WARNINGS | 5 + .../core/en/html/departments/departments.css | 44 + .../core/en/html/departments/departments.html | 65 + .../doc/core/en/html/departments/index.html | 65 + .../doc/core/en/html/departments/labels.pl | 13 + .../core/en/html/departments/list_back.png | Bin 0 -> 862 bytes .../core/en/html/departments/list_home.png | Bin 0 -> 865 bytes .../html/departments/list_new_department.png | Bin 0 -> 717 bytes .../core/en/html/departments/list_root.png | Bin 0 -> 852 bytes .../doc/core/en/html/departments/node1.html | 147 + .../doc/core/en/html/departments/node2.html | 48 + .../doc/core/en/html/departments/node3.html | 59 + .../doc/core/en/html/departments/node4.html | 62 + .../doc/core/en/html/departments/node5.html | 38 + .../doc/core/en/html/departments/node6.html | 51 + .../doc/core/en/html/departments/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/departments/search.png | Bin 0 -> 1023 bytes .../doc/core/en/html/faxreports/WARNINGS | 5 + .../core/en/html/faxreports/faxreports.css | Bin 0 -> 960 bytes .../core/en/html/faxreports/faxreports.html | 60 + .../doc/core/en/html/faxreports/index.html | 60 + .../doc/core/en/html/faxreports/labels.pl | 13 + .../doc/core/en/html/faxreports/node1.html | 49 + .../doc/core/en/html/faxreports/node2.html | 38 + .../doc/core/en/html/faxreports/node3.html | 51 + .../doc/core/en/html/faxreports/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/fonreports/WARNINGS | 5 + .../core/en/html/fonreports/fonreports.css | Bin 0 -> 960 bytes .../core/en/html/fonreports/fonreports.html | 60 + .../doc/core/en/html/fonreports/index.html | 60 + .../doc/core/en/html/fonreports/labels.pl | 13 + .../doc/core/en/html/fonreports/node1.html | 49 + .../doc/core/en/html/fonreports/node2.html | 38 + .../doc/core/en/html/fonreports/node3.html | 51 + .../doc/core/en/html/fonreports/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/groups/WARNINGS | 5 + .../doc/core/en/html/groups/groups.css | 52 + .../doc/core/en/html/groups/groups.html | 91 + .../doc/core/en/html/groups/index.html | 91 + .../doc/core/en/html/groups/labels.pl | 13 + .../doc/core/en/html/groups/list_back.png | Bin 0 -> 862 bytes .../doc/core/en/html/groups/list_home.png | Bin 0 -> 865 bytes .../core/en/html/groups/list_new_group.png | Bin 0 -> 911 bytes .../doc/core/en/html/groups/list_root.png | Bin 0 -> 852 bytes .../doc/core/en/html/groups/node1.html | 193 + .../doc/core/en/html/groups/node10.html | 50 + .../doc/core/en/html/groups/node11.html | 55 + .../doc/core/en/html/groups/node12.html | 60 + .../doc/core/en/html/groups/node13.html | 47 + .../doc/core/en/html/groups/node14.html | 59 + .../doc/core/en/html/groups/node15.html | 50 + .../doc/core/en/html/groups/node16.html | 47 + .../doc/core/en/html/groups/node17.html | 38 + .../doc/core/en/html/groups/node18.html | 51 + .../doc/core/en/html/groups/node2.html | 72 + .../doc/core/en/html/groups/node3.html | 60 + .../doc/core/en/html/groups/node4.html | 43 + .../doc/core/en/html/groups/node5.html | 43 + .../doc/core/en/html/groups/node6.html | 43 + .../doc/core/en/html/groups/node7.html | 43 + .../doc/core/en/html/groups/node8.html | 43 + .../doc/core/en/html/groups/node9.html | 43 + .../doc/core/en/html/groups/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/ldapmanager/WARNINGS | 4 + .../doc/core/en/html/ldapmanager/index.html | 63 + .../doc/core/en/html/ldapmanager/labels.pl | 13 + .../core/en/html/ldapmanager/ldapmanager.css | Bin 0 -> 931 bytes .../core/en/html/ldapmanager/ldapmanager.html | 63 + .../doc/core/en/html/ldapmanager/node1.html | 52 + .../doc/core/en/html/ldapmanager/node2.html | 53 + .../doc/core/en/html/ldapmanager/node3.html | 53 + .../doc/core/en/html/ldapmanager/node4.html | 64 + .../doc/core/en/html/ldapmanager/node5.html | 46 + .../doc/core/en/html/ldapmanager/node6.html | 51 + .../doc/core/en/html/logview/WARNINGS | 4 + .../doc/core/en/html/logview/index.html | 57 + .../doc/core/en/html/logview/labels.pl | 13 + .../doc/core/en/html/logview/logview.css | 33 + .../doc/core/en/html/logview/logview.html | 57 + .../doc/core/en/html/logview/node1.html | 46 + .../doc/core/en/html/logview/node2.html | 54 + .../doc/core/en/html/logview/node3.html | 51 + .../gosa-core/doc/core/en/html/macro/WARNINGS | 5 + .../doc/core/en/html/macro/index.html | 61 + .../doc/core/en/html/macro/labels.pl | 13 + .../doc/core/en/html/macro/list_back.png | Bin 0 -> 862 bytes .../doc/core/en/html/macro/list_home.png | Bin 0 -> 865 bytes .../doc/core/en/html/macro/list_new_macro.png | Bin 0 -> 823 bytes .../doc/core/en/html/macro/list_root.png | Bin 0 -> 852 bytes .../doc/core/en/html/macro/macro.css | 35 + .../doc/core/en/html/macro/macro.html | 61 + .../doc/core/en/html/macro/node1.html | 143 + .../doc/core/en/html/macro/node2.html | 74 + .../doc/core/en/html/macro/node3.html | 59 + .../doc/core/en/html/macro/node4.html | 38 + .../doc/core/en/html/macro/node5.html | 51 + .../doc/core/en/html/macro/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/macro/search.png | Bin 0 -> 1023 bytes .../doc/core/en/html/ogroups/WARNINGS | 5 + .../doc/core/en/html/ogroups/index.html | 59 + .../doc/core/en/html/ogroups/labels.pl | 13 + .../doc/core/en/html/ogroups/list_back.png | Bin 0 -> 862 bytes .../doc/core/en/html/ogroups/list_home.png | Bin 0 -> 865 bytes .../core/en/html/ogroups/list_new_ogroup.png | Bin 0 -> 754 bytes .../doc/core/en/html/ogroups/list_root.png | Bin 0 -> 852 bytes .../doc/core/en/html/ogroups/node1.html | 162 + .../doc/core/en/html/ogroups/node2.html | 61 + .../doc/core/en/html/ogroups/node3.html | 38 + .../doc/core/en/html/ogroups/node4.html | 51 + .../doc/core/en/html/ogroups/ogroups.css | 43 + .../doc/core/en/html/ogroups/ogroups.html | 59 + .../doc/core/en/html/ogroups/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/ogroups/search.png | Bin 0 -> 1023 bytes .../gosa-core/doc/core/en/html/users/WARNINGS | 5 + .../doc/core/en/html/users/index.html | 139 + .../doc/core/en/html/users/labels.pl | 13 + .../doc/core/en/html/users/list_back.png | Bin 0 -> 862 bytes .../doc/core/en/html/users/list_home.png | Bin 0 -> 865 bytes .../doc/core/en/html/users/list_new_user.png | Bin 0 -> 788 bytes .../doc/core/en/html/users/list_root.png | Bin 0 -> 852 bytes .../doc/core/en/html/users/node1.html | 243 + .../doc/core/en/html/users/node10.html | 60 + .../doc/core/en/html/users/node11.html | 43 + .../doc/core/en/html/users/node12.html | 43 + .../doc/core/en/html/users/node13.html | 43 + .../doc/core/en/html/users/node14.html | 43 + .../doc/core/en/html/users/node15.html | 43 + .../doc/core/en/html/users/node16.html | 43 + .../doc/core/en/html/users/node17.html | 56 + .../doc/core/en/html/users/node18.html | 59 + .../doc/core/en/html/users/node19.html | 52 + .../doc/core/en/html/users/node2.html | 48 + .../doc/core/en/html/users/node20.html | 73 + .../doc/core/en/html/users/node21.html | 53 + .../doc/core/en/html/users/node22.html | 54 + .../doc/core/en/html/users/node23.html | 62 + .../doc/core/en/html/users/node24.html | 129 + .../doc/core/en/html/users/node25.html | 54 + .../doc/core/en/html/users/node26.html | 60 + .../doc/core/en/html/users/node27.html | 46 + .../doc/core/en/html/users/node28.html | 47 + .../doc/core/en/html/users/node29.html | 46 + .../doc/core/en/html/users/node3.html | 105 + .../doc/core/en/html/users/node30.html | 46 + .../doc/core/en/html/users/node31.html | 72 + .../doc/core/en/html/users/node32.html | 56 + .../doc/core/en/html/users/node33.html | 56 + .../doc/core/en/html/users/node34.html | 53 + .../doc/core/en/html/users/node35.html | 58 + .../doc/core/en/html/users/node36.html | 58 + .../doc/core/en/html/users/node37.html | 54 + .../doc/core/en/html/users/node38.html | 47 + .../doc/core/en/html/users/node39.html | 56 + .../doc/core/en/html/users/node4.html | 109 + .../doc/core/en/html/users/node40.html | 46 + .../doc/core/en/html/users/node41.html | 39 + .../doc/core/en/html/users/node42.html | 51 + .../doc/core/en/html/users/node5.html | 56 + .../doc/core/en/html/users/node6.html | 64 + .../doc/core/en/html/users/node7.html | 49 + .../doc/core/en/html/users/node8.html | 47 + .../doc/core/en/html/users/node9.html | 67 + .../doc/core/en/html/users/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/html/users/search.png | Bin 0 -> 1023 bytes .../doc/core/en/html/users/users.css | 78 + .../doc/core/en/html/users/users.html | 139 + .../doc/core/en/lyx-source/applications.lyx | 464 + .../doc/core/en/lyx-source/blocklists.lyx | 319 + .../doc/core/en/lyx-source/conference.lyx | 406 + .../doc/core/en/lyx-source/departments.lyx | 414 + .../doc/core/en/lyx-source/faxreports.lyx | 68 + .../doc/core/en/lyx-source/fonreports.lyx | 68 + .../doc/core/en/lyx-source/groups.lyx | 633 + .../doc/core/en/lyx-source/images/action.png | Bin 0 -> 397 bytes .../en/lyx-source/images/addr_company.png | Bin 0 -> 1818 bytes .../core/en/lyx-source/images/addr_home.png | Bin 0 -> 1381 bytes .../en/lyx-source/images/addr_personal.png | Bin 0 -> 1372 bytes .../core/en/lyx-source/images/addressbook.png | Bin 0 -> 5434 bytes .../en/lyx-source/images/alternatemail.png | Bin 0 -> 893 bytes .../core/en/lyx-source/images/application.png | Bin 0 -> 3839 bytes .../doc/core/en/lyx-source/images/back.png | Bin 0 -> 733 bytes .../doc/core/en/lyx-source/images/banana.png | Bin 0 -> 784 bytes .../core/en/lyx-source/images/blocklists.png | Bin 0 -> 4295 bytes .../en/lyx-source/images/button_cancel.png | Bin 0 -> 883 bytes .../doc/core/en/lyx-source/images/certs.png | Bin 0 -> 693 bytes .../core/en/lyx-source/images/closedlock.png | Bin 0 -> 750 bytes .../core/en/lyx-source/images/conference.png | Bin 0 -> 4094 bytes .../core/en/lyx-source/images/crossref.png | Bin 0 -> 628 bytes .../doc/core/en/lyx-source/images/default.jpg | Bin 0 -> 2502 bytes .../en/lyx-source/images/default_icon.png | Bin 0 -> 1957 bytes .../core/en/lyx-source/images/department.png | Bin 0 -> 3728 bytes .../doc/core/en/lyx-source/images/dhcp.png | Bin 0 -> 4674 bytes .../doc/core/en/lyx-source/images/display.png | Bin 0 -> 733 bytes .../doc/core/en/lyx-source/images/dns.png | Bin 0 -> 4739 bytes .../doc/core/en/lyx-source/images/dtree.png | Bin 0 -> 694 bytes .../doc/core/en/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../core/en/lyx-source/images/editcopy.png | Bin 0 -> 777 bytes .../core/en/lyx-source/images/editdelete.png | Bin 0 -> 892 bytes .../core/en/lyx-source/images/editpaste.png | Bin 0 -> 990 bytes .../core/en/lyx-source/images/edittrash.png | Bin 0 -> 691 bytes .../doc/core/en/lyx-source/images/email.png | Bin 0 -> 4142 bytes .../doc/core/en/lyx-source/images/empty.png | Bin 0 -> 174 bytes .../core/en/lyx-source/images/encrypted.png | Bin 0 -> 1239 bytes .../core/en/lyx-source/images/envelope.png | Bin 0 -> 843 bytes .../doc/core/en/lyx-source/images/expand.png | Bin 0 -> 183 bytes .../doc/core/en/lyx-source/images/false.png | Bin 0 -> 745 bytes .../doc/core/en/lyx-source/images/fax.png | Bin 0 -> 3352 bytes .../core/en/lyx-source/images/fax_small.png | Bin 0 -> 787 bytes .../core/en/lyx-source/images/filesaveas.png | Bin 0 -> 1253 bytes .../doc/core/en/lyx-source/images/flag.png | Bin 0 -> 745 bytes .../doc/core/en/lyx-source/images/folder.png | Bin 0 -> 594 bytes .../doc/core/en/lyx-source/images/forward.png | Bin 0 -> 726 bytes .../doc/core/en/lyx-source/images/ftp.png | Bin 0 -> 4365 bytes .../core/en/lyx-source/images/fullfolder.png | Bin 0 -> 587 bytes .../doc/core/en/lyx-source/images/group.png | Bin 0 -> 4224 bytes .../core/en/lyx-source/images/hardware.png | Bin 0 -> 836 bytes .../lyx-source/images/hdd_linux_unmount.png | Bin 0 -> 6805 bytes .../doc/core/en/lyx-source/images/head.png | Bin 0 -> 753 bytes .../doc/core/en/lyx-source/images/help.png | Bin 0 -> 1136 bytes .../doc/core/en/lyx-source/images/house.png | Bin 0 -> 713 bytes .../doc/core/en/lyx-source/images/img1.png | Bin 0 -> 97 bytes .../doc/core/en/lyx-source/images/info.png | Bin 0 -> 1195 bytes .../core/en/lyx-source/images/info_small.png | Bin 0 -> 936 bytes .../core/en/lyx-source/images/keyboard.png | Bin 0 -> 343 bytes .../doc/core/en/lyx-source/images/lamp.png | Bin 0 -> 829 bytes .../doc/core/en/lyx-source/images/launch.png | Bin 0 -> 1263 bytes .../core/en/lyx-source/images/ldapserver.png | Bin 0 -> 3276 bytes .../doc/core/en/lyx-source/images/ldif.png | Bin 0 -> 2801 bytes .../core/en/lyx-source/images/list_back.png | Bin 0 -> 862 bytes .../en/lyx-source/images/list_blocklist.png | Bin 0 -> 671 bytes .../core/en/lyx-source/images/list_home.png | Bin 0 -> 865 bytes .../core/en/lyx-source/images/list_macro.png | Bin 0 -> 927 bytes .../core/en/lyx-source/images/list_new.png | Bin 0 -> 642 bytes .../en/lyx-source/images/list_new_app.png | Bin 0 -> 794 bytes .../lyx-source/images/list_new_blocklist.png | Bin 0 -> 781 bytes .../lyx-source/images/list_new_department.png | Bin 0 -> 717 bytes .../en/lyx-source/images/list_new_group.png | Bin 0 -> 911 bytes .../en/lyx-source/images/list_new_macro.png | Bin 0 -> 823 bytes .../en/lyx-source/images/list_new_ogroup.png | Bin 0 -> 754 bytes .../en/lyx-source/images/list_new_user.png | Bin 0 -> 788 bytes .../core/en/lyx-source/images/list_ogroup.png | Bin 0 -> 728 bytes .../en/lyx-source/images/list_password.png | Bin 0 -> 693 bytes .../core/en/lyx-source/images/list_root.png | Bin 0 -> 852 bytes .../en/lyx-source/images/list_seperator.png | Bin 0 -> 177 bytes .../core/en/lyx-source/images/list_submit.png | Bin 0 -> 614 bytes .../doc/core/en/lyx-source/images/list_up.png | Bin 0 -> 862 bytes .../en/lyx-source/images/log_critical.png | Bin 0 -> 745 bytes .../core/en/lyx-source/images/log_info.png | Bin 0 -> 936 bytes .../core/en/lyx-source/images/log_unknown.png | Bin 0 -> 746 bytes .../core/en/lyx-source/images/log_warning.png | Bin 0 -> 829 bytes .../doc/core/en/lyx-source/images/login.png | Bin 0 -> 9533 bytes .../doc/core/en/lyx-source/images/logview.png | Bin 0 -> 3646 bytes .../doc/core/en/lyx-source/images/macros.png | Bin 0 -> 4794 bytes .../doc/core/en/lyx-source/images/mailto.png | Bin 0 -> 692 bytes .../doc/core/en/lyx-source/images/members.png | Bin 0 -> 868 bytes .../doc/core/en/lyx-source/images/mouse.png | Bin 0 -> 751 bytes .../doc/core/en/lyx-source/images/network.png | Bin 0 -> 894 bytes .../doc/core/en/lyx-source/images/null.gif | Bin 0 -> 49 bytes .../doc/core/en/lyx-source/images/ogroup.png | Bin 0 -> 3510 bytes .../core/en/lyx-source/images/openlock.png | Bin 0 -> 923 bytes .../core/en/lyx-source/images/password.png | Bin 0 -> 3316 bytes .../doc/core/en/lyx-source/images/penguin.png | Bin 0 -> 964 bytes .../core/en/lyx-source/images/personal.png | Bin 0 -> 4119 bytes .../doc/core/en/lyx-source/images/phone.png | Bin 0 -> 4263 bytes .../core/en/lyx-source/images/phonereport.png | Bin 0 -> 3125 bytes .../doc/core/en/lyx-source/images/posix.png | Bin 0 -> 4083 bytes .../doc/core/en/lyx-source/images/printer.png | Bin 0 -> 678 bytes .../doc/core/en/lyx-source/images/proxy.png | Bin 0 -> 5227 bytes .../doc/core/en/lyx-source/images/reports.png | Bin 0 -> 4298 bytes .../core/en/lyx-source/images/rightarrow.png | Bin 0 -> 863 bytes .../doc/core/en/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../doc/core/en/lyx-source/images/samba.png | Bin 0 -> 5472 bytes .../doc/core/en/lyx-source/images/save.png | Bin 0 -> 595 bytes .../doc/core/en/lyx-source/images/scanner.png | Bin 0 -> 809 bytes .../doc/core/en/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../lyx-source/images/select_application.png | Bin 0 -> 959 bytes .../en/lyx-source/images/select_component.png | Bin 0 -> 458 bytes .../en/lyx-source/images/select_default.png | Bin 0 -> 725 bytes .../lyx-source/images/select_department.png | Bin 0 -> 731 bytes .../en/lyx-source/images/select_groups.png | Bin 0 -> 868 bytes .../en/lyx-source/images/select_macro.png | Bin 0 -> 927 bytes .../images/select_new_component.png | Bin 0 -> 452 bytes .../en/lyx-source/images/select_new_phone.png | Bin 0 -> 660 bytes .../lyx-source/images/select_new_printer.png | Bin 0 -> 746 bytes .../lyx-source/images/select_new_server.png | Bin 0 -> 813 bytes .../lyx-source/images/select_new_terminal.png | Bin 0 -> 776 bytes .../images/select_new_workstation.png | Bin 0 -> 827 bytes .../en/lyx-source/images/select_ogroup.png | Bin 0 -> 794 bytes .../en/lyx-source/images/select_phone.png | Bin 0 -> 784 bytes .../images/select_phone_connected.png | Bin 0 -> 864 bytes .../en/lyx-source/images/select_printer.png | Bin 0 -> 678 bytes .../en/lyx-source/images/select_proxy.png | Bin 0 -> 894 bytes .../en/lyx-source/images/select_server.png | Bin 0 -> 879 bytes .../en/lyx-source/images/select_template.png | Bin 0 -> 512 bytes .../en/lyx-source/images/select_terminal.png | Bin 0 -> 778 bytes .../core/en/lyx-source/images/select_user.png | Bin 0 -> 753 bytes .../lyx-source/images/select_winstation.png | Bin 0 -> 675 bytes .../lyx-source/images/select_workstation.png | Bin 0 -> 817 bytes .../doc/core/en/lyx-source/images/server.png | Bin 0 -> 879 bytes .../doc/core/en/lyx-source/images/service.png | Bin 0 -> 4135 bytes .../en/lyx-source/images/small_filter.png | Bin 0 -> 814 bytes .../core/en/lyx-source/images/sort_down.png | Bin 0 -> 174 bytes .../doc/core/en/lyx-source/images/sort_up.png | Bin 0 -> 176 bytes .../doc/core/en/lyx-source/images/sound.png | Bin 0 -> 898 bytes .../doc/core/en/lyx-source/images/stop.png | Bin 0 -> 974 bytes .../doc/core/en/lyx-source/images/system.png | Bin 0 -> 3105 bytes .../en/lyx-source/images/terminal_small.png | Bin 0 -> 778 bytes .../doc/core/en/lyx-source/images/time.png | Bin 0 -> 1049 bytes .../doc/core/en/lyx-source/images/tree.png | Bin 0 -> 894 bytes .../doc/core/en/lyx-source/images/true.png | Bin 0 -> 661 bytes .../doc/core/en/lyx-source/images/user.png | Bin 0 -> 3204 bytes .../doc/core/en/lyx-source/images/warning.png | Bin 0 -> 1692 bytes .../doc/core/en/lyx-source/images/zip.png | Bin 0 -> 791 bytes .../doc/core/en/lyx-source/ldapmanager.lyx | 256 + .../doc/core/en/lyx-source/logview.lyx | 163 + .../doc/core/en/lyx-source/macro.lyx | 415 + .../doc/core/en/lyx-source/ogroups.lyx | 329 + .../doc/core/en/lyx-source/users.lyx | 1982 + .../doc/core/es/lyx-source/images/action.png | Bin 0 -> 397 bytes .../es/lyx-source/images/addr_company.png | Bin 0 -> 1818 bytes .../core/es/lyx-source/images/addr_home.png | Bin 0 -> 1381 bytes .../es/lyx-source/images/addr_personal.png | Bin 0 -> 1372 bytes .../core/es/lyx-source/images/addressbook.png | Bin 0 -> 5434 bytes .../es/lyx-source/images/alternatemail.png | Bin 0 -> 893 bytes .../core/es/lyx-source/images/application.png | Bin 0 -> 3839 bytes .../doc/core/es/lyx-source/images/back.png | Bin 0 -> 733 bytes .../doc/core/es/lyx-source/images/banana.png | Bin 0 -> 784 bytes .../core/es/lyx-source/images/blocklists.png | Bin 0 -> 4295 bytes .../doc/core/es/lyx-source/images/branch.png | Bin 0 -> 694 bytes .../es/lyx-source/images/branch_small.png | Bin 0 -> 609 bytes .../es/lyx-source/images/button_cancel.png | Bin 0 -> 883 bytes .../es/lyx-source/images/cant_editpaste.png | Bin 0 -> 465 bytes .../doc/core/es/lyx-source/images/certs.png | Bin 0 -> 693 bytes .../core/es/lyx-source/images/closedlock.png | Bin 0 -> 750 bytes .../core/es/lyx-source/images/conference.png | Bin 0 -> 4094 bytes .../core/es/lyx-source/images/copypaste.png | Bin 0 -> 990 bytes .../core/es/lyx-source/images/crossref.png | Bin 0 -> 628 bytes .../core/es/lyx-source/images/cutpaste.png | Bin 0 -> 898 bytes .../doc/core/es/lyx-source/images/default.jpg | Bin 0 -> 2502 bytes .../es/lyx-source/images/default_icon.png | Bin 0 -> 1957 bytes .../core/es/lyx-source/images/department.png | Bin 0 -> 3728 bytes .../doc/core/es/lyx-source/images/dfs.png | Bin 0 -> 3646 bytes .../doc/core/es/lyx-source/images/dhcp.png | Bin 0 -> 4674 bytes .../doc/core/es/lyx-source/images/display.png | Bin 0 -> 733 bytes .../doc/core/es/lyx-source/images/dns.png | Bin 0 -> 4739 bytes .../doc/core/es/lyx-source/images/drives.png | Bin 0 -> 950 bytes .../doc/core/es/lyx-source/images/dtree.png | Bin 0 -> 694 bytes .../doc/core/es/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../core/es/lyx-source/images/editcopy.png | Bin 0 -> 777 bytes .../doc/core/es/lyx-source/images/editcut.png | Bin 0 -> 804 bytes .../core/es/lyx-source/images/editdelete.png | Bin 0 -> 892 bytes .../core/es/lyx-source/images/editpaste.png | Bin 0 -> 990 bytes .../core/es/lyx-source/images/edittrash.png | Bin 0 -> 691 bytes .../doc/core/es/lyx-source/images/email.png | Bin 0 -> 4142 bytes .../doc/core/es/lyx-source/images/empty.png | Bin 0 -> 174 bytes .../core/es/lyx-source/images/encrypted.png | Bin 0 -> 1239 bytes .../doc/core/es/lyx-source/images/env.png | Bin 0 -> 3242 bytes .../core/es/lyx-source/images/envelope.png | Bin 0 -> 843 bytes .../doc/core/es/lyx-source/images/expand.png | Bin 0 -> 183 bytes .../doc/core/es/lyx-source/images/fai.png | Bin 0 -> 4931 bytes .../core/es/lyx-source/images/fai_hook.png | Bin 0 -> 692 bytes .../es/lyx-source/images/fai_new_hook.png | Bin 0 -> 662 bytes .../es/lyx-source/images/fai_new_packages.png | Bin 0 -> 743 bytes .../images/fai_new_partitionTable.png | Bin 0 -> 809 bytes .../es/lyx-source/images/fai_new_profile.png | Bin 0 -> 903 bytes .../es/lyx-source/images/fai_new_script.png | Bin 0 -> 658 bytes .../es/lyx-source/images/fai_new_template.png | Bin 0 -> 630 bytes .../es/lyx-source/images/fai_new_variable.png | Bin 0 -> 410 bytes .../es/lyx-source/images/fai_packages.png | Bin 0 -> 959 bytes .../lyx-source/images/fai_partitionTable.png | Bin 0 -> 725 bytes .../core/es/lyx-source/images/fai_profile.png | Bin 0 -> 1094 bytes .../core/es/lyx-source/images/fai_script.png | Bin 0 -> 601 bytes .../core/es/lyx-source/images/fai_small.png | Bin 0 -> 885 bytes .../es/lyx-source/images/fai_template.png | Bin 0 -> 512 bytes .../es/lyx-source/images/fai_variable.png | Bin 0 -> 429 bytes .../doc/core/es/lyx-source/images/false.png | Bin 0 -> 745 bytes .../doc/core/es/lyx-source/images/fax.png | Bin 0 -> 3352 bytes .../core/es/lyx-source/images/fax_small.png | Bin 0 -> 787 bytes .../core/es/lyx-source/images/filesaveas.png | Bin 0 -> 1253 bytes .../doc/core/es/lyx-source/images/flag.png | Bin 0 -> 745 bytes .../doc/core/es/lyx-source/images/folder.png | Bin 0 -> 594 bytes .../doc/core/es/lyx-source/images/forward.png | Bin 0 -> 726 bytes .../doc/core/es/lyx-source/images/ftp.png | Bin 0 -> 4365 bytes .../core/es/lyx-source/images/fullfolder.png | Bin 0 -> 587 bytes .../es/lyx-source/images/gfx_hardware.png | Bin 0 -> 819 bytes .../doc/core/es/lyx-source/images/group.png | Bin 0 -> 4224 bytes .../core/es/lyx-source/images/hardware.png | Bin 0 -> 836 bytes .../lyx-source/images/hdd_linux_unmount.png | Bin 0 -> 6805 bytes .../doc/core/es/lyx-source/images/head.png | Bin 0 -> 753 bytes .../doc/core/es/lyx-source/images/help.png | Bin 0 -> 1136 bytes .../doc/core/es/lyx-source/images/hotplug.png | Bin 0 -> 861 bytes .../doc/core/es/lyx-source/images/house.png | Bin 0 -> 713 bytes .../doc/core/es/lyx-source/images/img1.png | Bin 0 -> 97 bytes .../doc/core/es/lyx-source/images/info.png | Bin 0 -> 1195 bytes .../core/es/lyx-source/images/info_small.png | Bin 0 -> 936 bytes .../core/es/lyx-source/images/keyboard.png | Bin 0 -> 343 bytes .../doc/core/es/lyx-source/images/lamp.png | Bin 0 -> 829 bytes .../doc/core/es/lyx-source/images/launch.png | Bin 0 -> 1263 bytes .../core/es/lyx-source/images/ldapserver.png | Bin 0 -> 3276 bytes .../doc/core/es/lyx-source/images/ldif.png | Bin 0 -> 2801 bytes .../core/es/lyx-source/images/list_back.png | Bin 0 -> 862 bytes .../es/lyx-source/images/list_blocklist.png | Bin 0 -> 671 bytes .../core/es/lyx-source/images/list_home.png | Bin 0 -> 865 bytes .../core/es/lyx-source/images/list_macro.png | Bin 0 -> 927 bytes .../core/es/lyx-source/images/list_new.png | Bin 0 -> 642 bytes .../es/lyx-source/images/list_new_app.png | Bin 0 -> 794 bytes .../lyx-source/images/list_new_blocklist.png | Bin 0 -> 781 bytes .../lyx-source/images/list_new_conference.png | Bin 0 -> 904 bytes .../lyx-source/images/list_new_department.png | Bin 0 -> 717 bytes .../es/lyx-source/images/list_new_group.png | Bin 0 -> 911 bytes .../es/lyx-source/images/list_new_macro.png | Bin 0 -> 823 bytes .../es/lyx-source/images/list_new_ogroup.png | Bin 0 -> 754 bytes .../es/lyx-source/images/list_new_user.png | Bin 0 -> 788 bytes .../core/es/lyx-source/images/list_ogroup.png | Bin 0 -> 728 bytes .../es/lyx-source/images/list_password.png | Bin 0 -> 693 bytes .../core/es/lyx-source/images/list_reload.png | Bin 0 -> 910 bytes .../core/es/lyx-source/images/list_root.png | Bin 0 -> 852 bytes .../es/lyx-source/images/list_seperator.png | Bin 0 -> 177 bytes .../core/es/lyx-source/images/list_submit.png | Bin 0 -> 614 bytes .../doc/core/es/lyx-source/images/list_up.png | Bin 0 -> 862 bytes .../es/lyx-source/images/log_critical.png | Bin 0 -> 745 bytes .../core/es/lyx-source/images/log_info.png | Bin 0 -> 936 bytes .../core/es/lyx-source/images/log_unknown.png | Bin 0 -> 746 bytes .../core/es/lyx-source/images/log_warning.png | Bin 0 -> 829 bytes .../doc/core/es/lyx-source/images/login.png | Bin 0 -> 9533 bytes .../doc/core/es/lyx-source/images/logview.png | Bin 0 -> 3406 bytes .../doc/core/es/lyx-source/images/macros.png | Bin 0 -> 4794 bytes .../es/lyx-source/images/mailq_active.png | Bin 0 -> 574 bytes .../es/lyx-source/images/mailq_header.png | Bin 0 -> 936 bytes .../core/es/lyx-source/images/mailq_hold.png | Bin 0 -> 750 bytes .../es/lyx-source/images/mailq_requeue.png | Bin 0 -> 910 bytes .../es/lyx-source/images/mailq_unhold.png | Bin 0 -> 829 bytes .../core/es/lyx-source/images/mailqueue.png | Bin 0 -> 4132 bytes .../doc/core/es/lyx-source/images/mailto.png | Bin 0 -> 635 bytes .../core/es/lyx-source/images/mainboard.png | Bin 0 -> 782 bytes .../doc/core/es/lyx-source/images/members.png | Bin 0 -> 868 bytes .../doc/core/es/lyx-source/images/memory.png | Bin 0 -> 931 bytes .../doc/core/es/lyx-source/images/monitor.png | Bin 0 -> 733 bytes .../core/es/lyx-source/images/monitoring.png | Bin 0 -> 4804 bytes .../doc/core/es/lyx-source/images/mouse.png | Bin 0 -> 751 bytes .../es/lyx-source/images/net_hardware.png | Bin 0 -> 828 bytes .../core/es/lyx-source/images/netatalk.png | Bin 0 -> 3642 bytes .../doc/core/es/lyx-source/images/network.png | Bin 0 -> 894 bytes .../doc/core/es/lyx-source/images/null.gif | Bin 0 -> 49 bytes .../doc/core/es/lyx-source/images/ogroup.png | Bin 0 -> 3510 bytes .../core/es/lyx-source/images/openlock.png | Bin 0 -> 923 bytes .../core/es/lyx-source/images/password.png | Bin 0 -> 3316 bytes .../doc/core/es/lyx-source/images/penguin.png | Bin 0 -> 964 bytes .../core/es/lyx-source/images/personal.png | Bin 0 -> 4119 bytes .../doc/core/es/lyx-source/images/phone.png | Bin 0 -> 4263 bytes .../core/es/lyx-source/images/phonereport.png | Bin 0 -> 3125 bytes .../doc/core/es/lyx-source/images/posix.png | Bin 0 -> 4083 bytes .../doc/core/es/lyx-source/images/printer.png | Bin 0 -> 678 bytes .../core/es/lyx-source/images/processor.png | Bin 0 -> 400 bytes .../doc/core/es/lyx-source/images/proxy.png | Bin 0 -> 5227 bytes .../doc/core/es/lyx-source/images/reports.png | Bin 0 -> 4298 bytes .../core/es/lyx-source/images/rightarrow.png | Bin 0 -> 863 bytes .../doc/core/es/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../doc/core/es/lyx-source/images/samba.png | Bin 0 -> 5472 bytes .../doc/core/es/lyx-source/images/save.png | Bin 0 -> 595 bytes .../doc/core/es/lyx-source/images/scanner.png | Bin 0 -> 809 bytes .../doc/core/es/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../core/es/lyx-source/images/search_user.png | Bin 0 -> 962 bytes .../lyx-source/images/select_application.png | Bin 0 -> 959 bytes .../es/lyx-source/images/select_component.png | Bin 0 -> 458 bytes .../lyx-source/images/select_conference.png | Bin 0 -> 868 bytes .../es/lyx-source/images/select_default.png | Bin 0 -> 725 bytes .../lyx-source/images/select_department.png | Bin 0 -> 731 bytes .../es/lyx-source/images/select_groups.png | Bin 0 -> 868 bytes .../images/select_invalid_application.png | Bin 0 -> 858 bytes .../es/lyx-source/images/select_macro.png | Bin 0 -> 927 bytes .../es/lyx-source/images/select_netatalk.png | Bin 0 -> 828 bytes .../images/select_new_component.png | Bin 0 -> 452 bytes .../es/lyx-source/images/select_new_phone.png | Bin 0 -> 660 bytes .../lyx-source/images/select_new_printer.png | Bin 0 -> 746 bytes .../lyx-source/images/select_new_server.png | Bin 0 -> 813 bytes .../lyx-source/images/select_new_terminal.png | Bin 0 -> 776 bytes .../images/select_new_workstation.png | Bin 0 -> 827 bytes .../es/lyx-source/images/select_newsystem.png | Bin 0 -> 642 bytes .../es/lyx-source/images/select_ogroup.png | Bin 0 -> 794 bytes .../es/lyx-source/images/select_phone.png | Bin 0 -> 784 bytes .../images/select_phone_connected.png | Bin 0 -> 864 bytes .../es/lyx-source/images/select_printer.png | Bin 0 -> 678 bytes .../es/lyx-source/images/select_proxy.png | Bin 0 -> 894 bytes .../es/lyx-source/images/select_server.png | Bin 0 -> 879 bytes .../es/lyx-source/images/select_template.png | Bin 0 -> 512 bytes .../es/lyx-source/images/select_terminal.png | Bin 0 -> 778 bytes .../core/es/lyx-source/images/select_user.png | Bin 0 -> 753 bytes .../lyx-source/images/select_winstation.png | Bin 0 -> 675 bytes .../lyx-source/images/select_workstation.png | Bin 0 -> 817 bytes .../doc/core/es/lyx-source/images/server.png | Bin 0 -> 879 bytes .../doc/core/es/lyx-source/images/service.png | Bin 0 -> 4135 bytes .../es/lyx-source/images/small_filter.png | Bin 0 -> 814 bytes .../core/es/lyx-source/images/smallenv.png | Bin 0 -> 733 bytes .../es/lyx-source/images/snd_hardware.png | Bin 0 -> 803 bytes .../core/es/lyx-source/images/sort_down.png | Bin 0 -> 174 bytes .../doc/core/es/lyx-source/images/sort_up.png | Bin 0 -> 176 bytes .../doc/core/es/lyx-source/images/sound.png | Bin 0 -> 898 bytes .../doc/core/es/lyx-source/images/stop.png | Bin 0 -> 974 bytes .../doc/core/es/lyx-source/images/system.png | Bin 0 -> 3105 bytes .../es/lyx-source/images/terminal_small.png | Bin 0 -> 778 bytes .../doc/core/es/lyx-source/images/time.png | Bin 0 -> 1049 bytes .../doc/core/es/lyx-source/images/tree.png | Bin 0 -> 894 bytes .../doc/core/es/lyx-source/images/true.png | Bin 0 -> 661 bytes .../doc/core/es/lyx-source/images/user.png | Bin 0 -> 3204 bytes .../doc/core/es/lyx-source/images/warning.png | Bin 0 -> 1692 bytes .../doc/core/es/lyx-source/images/zip.png | Bin 0 -> 791 bytes .../doc/core/fr/html/applications/WARNINGS | 5 + .../fr/html/applications/applications.css | 37 + .../fr/html/applications/applications.html | 69 + .../doc/core/fr/html/applications/index.html | 69 + .../doc/core/fr/html/applications/labels.pl | 13 + .../core/fr/html/applications/list_back.png | Bin 0 -> 862 bytes .../core/fr/html/applications/list_home.png | Bin 0 -> 865 bytes .../fr/html/applications/list_new_app.png | Bin 0 -> 794 bytes .../core/fr/html/applications/list_root.png | Bin 0 -> 852 bytes .../doc/core/fr/html/applications/node1.html | 148 + .../doc/core/fr/html/applications/node2.html | 50 + .../doc/core/fr/html/applications/node3.html | 67 + .../doc/core/fr/html/applications/node4.html | 77 + .../doc/core/fr/html/applications/node5.html | 43 + .../doc/core/fr/html/applications/node6.html | 59 + .../doc/core/fr/html/applications/node7.html | 38 + .../doc/core/fr/html/applications/node8.html | 51 + .../doc/core/fr/html/applications/rocket.png | Bin 0 -> 828 bytes .../doc/core/fr/html/applications/search.png | Bin 0 -> 1023 bytes .../doc/core/fr/html/blocklists/WARNINGS | 5 + .../core/fr/html/blocklists/blocklists.css | Bin 0 -> 1074 bytes .../core/fr/html/blocklists/blocklists.html | 59 + .../doc/core/fr/html/blocklists/index.html | 59 + .../doc/core/fr/html/blocklists/labels.pl | 13 + .../doc/core/fr/html/blocklists/list_back.png | Bin 0 -> 862 bytes .../doc/core/fr/html/blocklists/list_home.png | Bin 0 -> 865 bytes .../fr/html/blocklists/list_new_blocklist.png | Bin 0 -> 781 bytes .../doc/core/fr/html/blocklists/list_root.png | Bin 0 -> 852 bytes .../doc/core/fr/html/blocklists/node1.html | 138 + .../doc/core/fr/html/blocklists/node2.html | 61 + .../doc/core/fr/html/blocklists/node3.html | 41 + .../doc/core/fr/html/blocklists/node4.html | 51 + .../doc/core/fr/html/blocklists/rocket.png | Bin 0 -> 828 bytes .../doc/core/fr/html/blocklists/search.png | Bin 0 -> 1023 bytes .../doc/core/fr/html/conference/WARNINGS | 5 + .../core/fr/html/conference/conference.css | 42 + .../core/fr/html/conference/conference.html | 65 + .../core/fr/html/conference/conference.png | Bin 0 -> 4094 bytes .../doc/core/fr/html/conference/index.html | 65 + .../doc/core/fr/html/conference/labels.pl | 13 + .../doc/core/fr/html/conference/list_back.png | Bin 0 -> 862 bytes .../doc/core/fr/html/conference/list_home.png | Bin 0 -> 865 bytes .../doc/core/fr/html/conference/list_root.png | Bin 0 -> 852 bytes .../doc/core/fr/html/conference/node1.html | 150 + .../doc/core/fr/html/conference/node2.html | 48 + .../doc/core/fr/html/conference/node3.html | 65 + .../doc/core/fr/html/conference/node4.html | 90 + .../doc/core/fr/html/conference/node5.html | 38 + .../doc/core/fr/html/conference/node6.html | 51 + .../doc/core/fr/html/conference/rocket.png | Bin 0 -> 828 bytes .../doc/core/fr/html/conference/search.png | Bin 0 -> 1023 bytes .../doc/core/fr/html/departments/WARNINGS | 5 + .../core/fr/html/departments/departments.css | 38 + .../core/fr/html/departments/departments.html | 65 + .../doc/core/fr/html/departments/index.html | 65 + .../doc/core/fr/html/departments/labels.pl | 13 + .../core/fr/html/departments/list_back.png | Bin 0 -> 862 bytes .../core/fr/html/departments/list_home.png | Bin 0 -> 865 bytes .../html/departments/list_new_department.png | Bin 0 -> 717 bytes .../core/fr/html/departments/list_root.png | Bin 0 -> 852 bytes .../doc/core/fr/html/departments/node1.html | 146 + .../doc/core/fr/html/departments/node2.html | 48 + .../doc/core/fr/html/departments/node3.html | 65 + .../doc/core/fr/html/departments/node4.html | 66 + .../doc/core/fr/html/departments/node5.html | 38 + .../doc/core/fr/html/departments/node6.html | 51 + .../doc/core/fr/html/departments/rocket.png | Bin 0 -> 828 bytes .../doc/core/fr/html/departments/search.png | Bin 0 -> 1023 bytes .../doc/core/fr/html/faxreports/WARNINGS | 4 + .../core/fr/html/faxreports/faxreports.css | Bin 0 -> 931 bytes .../core/fr/html/faxreports/faxreports.html | 52 + .../doc/core/fr/html/faxreports/index.html | 52 + .../doc/core/fr/html/faxreports/labels.pl | 13 + .../doc/core/fr/html/faxreports/node1.html | 35 + .../doc/core/fr/html/faxreports/node2.html | 51 + .../doc/core/fr/html/fonreports/WARNINGS | 4 + .../core/fr/html/fonreports/fonreports.css | Bin 0 -> 931 bytes .../core/fr/html/fonreports/fonreports.html | 52 + .../doc/core/fr/html/fonreports/index.html | 52 + .../doc/core/fr/html/fonreports/labels.pl | 13 + .../doc/core/fr/html/fonreports/node1.html | 35 + .../doc/core/fr/html/fonreports/node2.html | 51 + .../doc/core/fr/html/groups/WARNINGS | 5 + .../doc/core/fr/html/groups/groups.css | Bin 0 -> 997 bytes .../doc/core/fr/html/groups/groups.html | 91 + .../doc/core/fr/html/groups/index.html | 91 + .../doc/core/fr/html/groups/labels.pl | 13 + .../doc/core/fr/html/groups/list_back.png | Bin 0 -> 862 bytes .../doc/core/fr/html/groups/list_home.png | Bin 0 -> 865 bytes .../core/fr/html/groups/list_new_group.png | Bin 0 -> 911 bytes .../doc/core/fr/html/groups/list_root.png | Bin 0 -> 852 bytes .../doc/core/fr/html/groups/node1.html | 191 + .../doc/core/fr/html/groups/node10.html | 60 + .../doc/core/fr/html/groups/node11.html | 56 + .../doc/core/fr/html/groups/node12.html | 60 + .../doc/core/fr/html/groups/node13.html | 51 + .../doc/core/fr/html/groups/node14.html | 59 + .../doc/core/fr/html/groups/node15.html | 50 + .../doc/core/fr/html/groups/node16.html | 47 + .../doc/core/fr/html/groups/node17.html | 38 + .../doc/core/fr/html/groups/node18.html | 51 + .../doc/core/fr/html/groups/node2.html | 75 + .../doc/core/fr/html/groups/node3.html | 60 + .../doc/core/fr/html/groups/node4.html | 43 + .../doc/core/fr/html/groups/node5.html | 43 + .../doc/core/fr/html/groups/node6.html | 43 + .../doc/core/fr/html/groups/node7.html | 43 + .../doc/core/fr/html/groups/node8.html | 43 + .../doc/core/fr/html/groups/node9.html | 43 + .../doc/core/fr/html/groups/rocket.png | Bin 0 -> 828 bytes .../doc/core/fr/html/ldapmanager/WARNINGS | 4 + .../doc/core/fr/html/ldapmanager/index.html | 52 + .../doc/core/fr/html/ldapmanager/labels.pl | 13 + .../core/fr/html/ldapmanager/ldapmanager.css | Bin 0 -> 931 bytes .../core/fr/html/ldapmanager/ldapmanager.html | 52 + .../doc/core/fr/html/ldapmanager/node1.html | 35 + .../doc/core/fr/html/ldapmanager/node2.html | 51 + .../doc/core/fr/html/logview/WARNINGS | 4 + .../doc/core/fr/html/logview/index.html | 52 + .../doc/core/fr/html/logview/labels.pl | 13 + .../doc/core/fr/html/logview/logview.css | Bin 0 -> 931 bytes .../doc/core/fr/html/logview/logview.html | 52 + .../doc/core/fr/html/logview/node1.html | 35 + .../doc/core/fr/html/logview/node2.html | 51 + .../gosa-core/doc/core/fr/html/macro/WARNINGS | 5 + .../doc/core/fr/html/macro/index.html | 61 + .../doc/core/fr/html/macro/labels.pl | 13 + .../doc/core/fr/html/macro/list_back.png | Bin 0 -> 862 bytes .../doc/core/fr/html/macro/list_home.png | Bin 0 -> 865 bytes .../doc/core/fr/html/macro/list_new_macro.png | Bin 0 -> 823 bytes .../doc/core/fr/html/macro/list_root.png | Bin 0 -> 852 bytes .../doc/core/fr/html/macro/macro.css | 37 + .../doc/core/fr/html/macro/macro.html | 61 + .../doc/core/fr/html/macro/node1.html | 141 + .../doc/core/fr/html/macro/node2.html | 66 + .../doc/core/fr/html/macro/node3.html | 43 + .../doc/core/fr/html/macro/node4.html | 38 + .../doc/core/fr/html/macro/node5.html | 51 + .../doc/core/fr/html/macro/rocket.png | Bin 0 -> 828 bytes .../doc/core/fr/html/macro/search.png | Bin 0 -> 1023 bytes .../doc/core/fr/html/ogroups/WARNINGS | 5 + .../doc/core/fr/html/ogroups/index.html | 59 + .../doc/core/fr/html/ogroups/labels.pl | 13 + .../doc/core/fr/html/ogroups/list_back.png | Bin 0 -> 862 bytes .../doc/core/fr/html/ogroups/list_home.png | Bin 0 -> 865 bytes .../core/fr/html/ogroups/list_new_ogroup.png | Bin 0 -> 754 bytes .../doc/core/fr/html/ogroups/list_root.png | Bin 0 -> 852 bytes .../doc/core/fr/html/ogroups/node1.html | 156 + .../doc/core/fr/html/ogroups/node2.html | 61 + .../doc/core/fr/html/ogroups/node3.html | 38 + .../doc/core/fr/html/ogroups/node4.html | 51 + .../doc/core/fr/html/ogroups/ogroups.css | 35 + .../doc/core/fr/html/ogroups/ogroups.html | 59 + .../doc/core/fr/html/ogroups/rocket.png | Bin 0 -> 828 bytes .../doc/core/fr/html/ogroups/search.png | Bin 0 -> 1023 bytes .../gosa-core/doc/core/fr/html/users/WARNINGS | 5 + .../doc/core/fr/html/users/closedlock.png | Bin 0 -> 750 bytes .../doc/core/fr/html/users/index.html | 139 + .../doc/core/fr/html/users/labels.pl | 13 + .../doc/core/fr/html/users/list_back.png | Bin 0 -> 862 bytes .../doc/core/fr/html/users/list_home.png | Bin 0 -> 865 bytes .../doc/core/fr/html/users/list_new_user.png | Bin 0 -> 788 bytes .../doc/core/fr/html/users/list_root.png | Bin 0 -> 852 bytes .../doc/core/fr/html/users/node1.html | 252 + .../doc/core/fr/html/users/node10.html | 61 + .../doc/core/fr/html/users/node11.html | 43 + .../doc/core/fr/html/users/node12.html | 43 + .../doc/core/fr/html/users/node13.html | 43 + .../doc/core/fr/html/users/node14.html | 43 + .../doc/core/fr/html/users/node15.html | 43 + .../doc/core/fr/html/users/node16.html | 43 + .../doc/core/fr/html/users/node17.html | 57 + .../doc/core/fr/html/users/node18.html | 61 + .../doc/core/fr/html/users/node19.html | 52 + .../doc/core/fr/html/users/node2.html | 48 + .../doc/core/fr/html/users/node20.html | 76 + .../doc/core/fr/html/users/node21.html | 54 + .../doc/core/fr/html/users/node22.html | 54 + .../doc/core/fr/html/users/node23.html | 62 + .../doc/core/fr/html/users/node24.html | 133 + .../doc/core/fr/html/users/node25.html | 57 + .../doc/core/fr/html/users/node26.html | 60 + .../doc/core/fr/html/users/node27.html | 47 + .../doc/core/fr/html/users/node28.html | 48 + .../doc/core/fr/html/users/node29.html | 46 + .../doc/core/fr/html/users/node3.html | 108 + .../doc/core/fr/html/users/node30.html | 46 + .../doc/core/fr/html/users/node31.html | 74 + .../doc/core/fr/html/users/node32.html | 56 + .../doc/core/fr/html/users/node33.html | 56 + .../doc/core/fr/html/users/node34.html | 55 + .../doc/core/fr/html/users/node35.html | 60 + .../doc/core/fr/html/users/node36.html | 60 + .../doc/core/fr/html/users/node37.html | 54 + .../doc/core/fr/html/users/node38.html | 47 + .../doc/core/fr/html/users/node39.html | 58 + .../doc/core/fr/html/users/node4.html | 112 + .../doc/core/fr/html/users/node40.html | 46 + .../doc/core/fr/html/users/node41.html | 40 + .../doc/core/fr/html/users/node42.html | 51 + .../doc/core/fr/html/users/node5.html | 56 + .../doc/core/fr/html/users/node6.html | 65 + .../doc/core/fr/html/users/node7.html | 49 + .../doc/core/fr/html/users/node8.html | 49 + .../doc/core/fr/html/users/node9.html | 67 + .../doc/core/fr/html/users/rocket.png | Bin 0 -> 828 bytes .../doc/core/fr/html/users/search.png | Bin 0 -> 1023 bytes .../doc/core/fr/html/users/users.css | 39 + .../doc/core/fr/html/users/users.html | 139 + .../doc/core/fr/lyx-source/applications.lyx | 426 + .../doc/core/fr/lyx-source/blocklists.lyx | 286 + .../doc/core/fr/lyx-source/conference.lyx | 391 + .../doc/core/fr/lyx-source/departments.lyx | 400 + .../doc/core/fr/lyx-source/faxreports.lyx | 57 + .../doc/core/fr/lyx-source/fonreports.lyx | 57 + .../doc/core/fr/lyx-source/groups.lyx | 617 + .../doc/core/fr/lyx-source/images/action.png | Bin 0 -> 397 bytes .../fr/lyx-source/images/addr_company.png | Bin 0 -> 1818 bytes .../core/fr/lyx-source/images/addr_home.png | Bin 0 -> 1381 bytes .../fr/lyx-source/images/addr_personal.png | Bin 0 -> 1372 bytes .../core/fr/lyx-source/images/addressbook.png | Bin 0 -> 5434 bytes .../fr/lyx-source/images/alternatemail.png | Bin 0 -> 893 bytes .../core/fr/lyx-source/images/application.png | Bin 0 -> 3839 bytes .../doc/core/fr/lyx-source/images/back.png | Bin 0 -> 733 bytes .../doc/core/fr/lyx-source/images/banana.png | Bin 0 -> 784 bytes .../core/fr/lyx-source/images/blocklists.png | Bin 0 -> 4295 bytes .../fr/lyx-source/images/button_cancel.png | Bin 0 -> 883 bytes .../doc/core/fr/lyx-source/images/certs.png | Bin 0 -> 693 bytes .../core/fr/lyx-source/images/closedlock.png | Bin 0 -> 750 bytes .../core/fr/lyx-source/images/conference.png | Bin 0 -> 4094 bytes .../core/fr/lyx-source/images/crossref.png | Bin 0 -> 628 bytes .../doc/core/fr/lyx-source/images/default.jpg | Bin 0 -> 2502 bytes .../fr/lyx-source/images/default_icon.png | Bin 0 -> 1957 bytes .../core/fr/lyx-source/images/department.png | Bin 0 -> 3728 bytes .../doc/core/fr/lyx-source/images/dhcp.png | Bin 0 -> 4674 bytes .../doc/core/fr/lyx-source/images/display.png | Bin 0 -> 733 bytes .../doc/core/fr/lyx-source/images/dns.png | Bin 0 -> 4739 bytes .../doc/core/fr/lyx-source/images/dtree.png | Bin 0 -> 694 bytes .../doc/core/fr/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../core/fr/lyx-source/images/editcopy.png | Bin 0 -> 777 bytes .../core/fr/lyx-source/images/editdelete.png | Bin 0 -> 892 bytes .../core/fr/lyx-source/images/editpaste.png | Bin 0 -> 990 bytes .../core/fr/lyx-source/images/edittrash.png | Bin 0 -> 691 bytes .../doc/core/fr/lyx-source/images/email.png | Bin 0 -> 4142 bytes .../doc/core/fr/lyx-source/images/empty.png | Bin 0 -> 174 bytes .../core/fr/lyx-source/images/encrypted.png | Bin 0 -> 1239 bytes .../core/fr/lyx-source/images/envelope.png | Bin 0 -> 843 bytes .../doc/core/fr/lyx-source/images/expand.png | Bin 0 -> 183 bytes .../doc/core/fr/lyx-source/images/false.png | Bin 0 -> 745 bytes .../doc/core/fr/lyx-source/images/fax.png | Bin 0 -> 3352 bytes .../core/fr/lyx-source/images/fax_small.png | Bin 0 -> 787 bytes .../core/fr/lyx-source/images/filesaveas.png | Bin 0 -> 1253 bytes .../doc/core/fr/lyx-source/images/flag.png | Bin 0 -> 745 bytes .../doc/core/fr/lyx-source/images/folder.png | Bin 0 -> 594 bytes .../doc/core/fr/lyx-source/images/forward.png | Bin 0 -> 726 bytes .../doc/core/fr/lyx-source/images/ftp.png | Bin 0 -> 4365 bytes .../core/fr/lyx-source/images/fullfolder.png | Bin 0 -> 587 bytes .../doc/core/fr/lyx-source/images/group.png | Bin 0 -> 4224 bytes .../core/fr/lyx-source/images/hardware.png | Bin 0 -> 836 bytes .../lyx-source/images/hdd_linux_unmount.png | Bin 0 -> 6805 bytes .../doc/core/fr/lyx-source/images/head.png | Bin 0 -> 753 bytes .../doc/core/fr/lyx-source/images/help.png | Bin 0 -> 1136 bytes .../doc/core/fr/lyx-source/images/house.png | Bin 0 -> 713 bytes .../doc/core/fr/lyx-source/images/img1.png | Bin 0 -> 97 bytes .../doc/core/fr/lyx-source/images/info.png | Bin 0 -> 1195 bytes .../core/fr/lyx-source/images/info_small.png | Bin 0 -> 936 bytes .../core/fr/lyx-source/images/keyboard.png | Bin 0 -> 343 bytes .../doc/core/fr/lyx-source/images/lamp.png | Bin 0 -> 829 bytes .../doc/core/fr/lyx-source/images/launch.png | Bin 0 -> 1263 bytes .../core/fr/lyx-source/images/ldapserver.png | Bin 0 -> 3276 bytes .../doc/core/fr/lyx-source/images/ldif.png | Bin 0 -> 2801 bytes .../core/fr/lyx-source/images/list_back.png | Bin 0 -> 862 bytes .../fr/lyx-source/images/list_blocklist.png | Bin 0 -> 671 bytes .../core/fr/lyx-source/images/list_home.png | Bin 0 -> 865 bytes .../core/fr/lyx-source/images/list_macro.png | Bin 0 -> 927 bytes .../core/fr/lyx-source/images/list_new.png | Bin 0 -> 642 bytes .../fr/lyx-source/images/list_new_app.png | Bin 0 -> 794 bytes .../lyx-source/images/list_new_blocklist.png | Bin 0 -> 781 bytes .../lyx-source/images/list_new_department.png | Bin 0 -> 717 bytes .../fr/lyx-source/images/list_new_group.png | Bin 0 -> 911 bytes .../fr/lyx-source/images/list_new_macro.png | Bin 0 -> 823 bytes .../fr/lyx-source/images/list_new_ogroup.png | Bin 0 -> 754 bytes .../fr/lyx-source/images/list_new_user.png | Bin 0 -> 788 bytes .../core/fr/lyx-source/images/list_ogroup.png | Bin 0 -> 728 bytes .../fr/lyx-source/images/list_password.png | Bin 0 -> 693 bytes .../core/fr/lyx-source/images/list_root.png | Bin 0 -> 852 bytes .../fr/lyx-source/images/list_seperator.png | Bin 0 -> 177 bytes .../core/fr/lyx-source/images/list_submit.png | Bin 0 -> 614 bytes .../doc/core/fr/lyx-source/images/list_up.png | Bin 0 -> 862 bytes .../fr/lyx-source/images/log_critical.png | Bin 0 -> 745 bytes .../core/fr/lyx-source/images/log_info.png | Bin 0 -> 936 bytes .../core/fr/lyx-source/images/log_unknown.png | Bin 0 -> 746 bytes .../core/fr/lyx-source/images/log_warning.png | Bin 0 -> 829 bytes .../doc/core/fr/lyx-source/images/login.png | Bin 0 -> 9533 bytes .../doc/core/fr/lyx-source/images/logview.png | Bin 0 -> 3646 bytes .../doc/core/fr/lyx-source/images/macros.png | Bin 0 -> 4794 bytes .../doc/core/fr/lyx-source/images/mailto.png | Bin 0 -> 692 bytes .../doc/core/fr/lyx-source/images/members.png | Bin 0 -> 868 bytes .../doc/core/fr/lyx-source/images/mouse.png | Bin 0 -> 751 bytes .../doc/core/fr/lyx-source/images/network.png | Bin 0 -> 894 bytes .../doc/core/fr/lyx-source/images/null.gif | Bin 0 -> 49 bytes .../doc/core/fr/lyx-source/images/ogroup.png | Bin 0 -> 3510 bytes .../core/fr/lyx-source/images/openlock.png | Bin 0 -> 923 bytes .../core/fr/lyx-source/images/password.png | Bin 0 -> 3316 bytes .../doc/core/fr/lyx-source/images/penguin.png | Bin 0 -> 964 bytes .../core/fr/lyx-source/images/personal.png | Bin 0 -> 4119 bytes .../doc/core/fr/lyx-source/images/phone.png | Bin 0 -> 4263 bytes .../core/fr/lyx-source/images/phonereport.png | Bin 0 -> 3125 bytes .../doc/core/fr/lyx-source/images/posix.png | Bin 0 -> 4083 bytes .../doc/core/fr/lyx-source/images/printer.png | Bin 0 -> 678 bytes .../doc/core/fr/lyx-source/images/proxy.png | Bin 0 -> 5227 bytes .../doc/core/fr/lyx-source/images/reports.png | Bin 0 -> 4298 bytes .../core/fr/lyx-source/images/rightarrow.png | Bin 0 -> 863 bytes .../doc/core/fr/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../doc/core/fr/lyx-source/images/samba.png | Bin 0 -> 5472 bytes .../doc/core/fr/lyx-source/images/save.png | Bin 0 -> 595 bytes .../doc/core/fr/lyx-source/images/scanner.png | Bin 0 -> 809 bytes .../doc/core/fr/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../lyx-source/images/select_application.png | Bin 0 -> 959 bytes .../fr/lyx-source/images/select_component.png | Bin 0 -> 458 bytes .../fr/lyx-source/images/select_default.png | Bin 0 -> 725 bytes .../lyx-source/images/select_department.png | Bin 0 -> 731 bytes .../fr/lyx-source/images/select_groups.png | Bin 0 -> 868 bytes .../fr/lyx-source/images/select_macro.png | Bin 0 -> 927 bytes .../images/select_new_component.png | Bin 0 -> 452 bytes .../fr/lyx-source/images/select_new_phone.png | Bin 0 -> 660 bytes .../lyx-source/images/select_new_printer.png | Bin 0 -> 746 bytes .../lyx-source/images/select_new_server.png | Bin 0 -> 813 bytes .../lyx-source/images/select_new_terminal.png | Bin 0 -> 776 bytes .../images/select_new_workstation.png | Bin 0 -> 827 bytes .../fr/lyx-source/images/select_ogroup.png | Bin 0 -> 794 bytes .../fr/lyx-source/images/select_phone.png | Bin 0 -> 784 bytes .../images/select_phone_connected.png | Bin 0 -> 864 bytes .../fr/lyx-source/images/select_printer.png | Bin 0 -> 678 bytes .../fr/lyx-source/images/select_proxy.png | Bin 0 -> 894 bytes .../fr/lyx-source/images/select_server.png | Bin 0 -> 879 bytes .../fr/lyx-source/images/select_template.png | Bin 0 -> 512 bytes .../fr/lyx-source/images/select_terminal.png | Bin 0 -> 778 bytes .../core/fr/lyx-source/images/select_user.png | Bin 0 -> 753 bytes .../lyx-source/images/select_winstation.png | Bin 0 -> 675 bytes .../lyx-source/images/select_workstation.png | Bin 0 -> 817 bytes .../doc/core/fr/lyx-source/images/server.png | Bin 0 -> 879 bytes .../doc/core/fr/lyx-source/images/service.png | Bin 0 -> 4135 bytes .../fr/lyx-source/images/small_filter.png | Bin 0 -> 814 bytes .../core/fr/lyx-source/images/sort_down.png | Bin 0 -> 174 bytes .../doc/core/fr/lyx-source/images/sort_up.png | Bin 0 -> 176 bytes .../doc/core/fr/lyx-source/images/sound.png | Bin 0 -> 898 bytes .../doc/core/fr/lyx-source/images/stop.png | Bin 0 -> 974 bytes .../doc/core/fr/lyx-source/images/system.png | Bin 0 -> 3105 bytes .../fr/lyx-source/images/terminal_small.png | Bin 0 -> 778 bytes .../doc/core/fr/lyx-source/images/time.png | Bin 0 -> 1049 bytes .../doc/core/fr/lyx-source/images/tree.png | Bin 0 -> 894 bytes .../doc/core/fr/lyx-source/images/true.png | Bin 0 -> 661 bytes .../doc/core/fr/lyx-source/images/user.png | Bin 0 -> 3204 bytes .../doc/core/fr/lyx-source/images/warning.png | Bin 0 -> 1692 bytes .../doc/core/fr/lyx-source/images/zip.png | Bin 0 -> 791 bytes .../doc/core/fr/lyx-source/ldapmanager.lyx | 57 + .../doc/core/fr/lyx-source/logview.lyx | 57 + .../doc/core/fr/lyx-source/macro.lyx | 331 + .../doc/core/fr/lyx-source/ogroups.lyx | 303 + .../doc/core/fr/lyx-source/users.lyx | 2035 + trunk/gosa-core/doc/core/guide.xml | 67 + .../doc/core/nl/html/departments/WARNINGS | 5 + .../core/nl/html/departments/departments.css | Bin 0 -> 968 bytes .../core/nl/html/departments/departments.html | 75 + .../doc/core/nl/html/departments/index.html | 75 + .../doc/core/nl/html/departments/labels.pl | 13 + .../core/nl/html/departments/list_back.png | Bin 0 -> 862 bytes .../core/nl/html/departments/list_home.png | Bin 0 -> 865 bytes .../html/departments/list_new_department.png | Bin 0 -> 717 bytes .../core/nl/html/departments/list_reload.png | Bin 0 -> 910 bytes .../core/nl/html/departments/list_root.png | Bin 0 -> 852 bytes .../doc/core/nl/html/departments/node1.html | 159 + .../doc/core/nl/html/departments/node10.html | 51 + .../doc/core/nl/html/departments/node2.html | 56 + .../doc/core/nl/html/departments/node3.html | 41 + .../doc/core/nl/html/departments/node4.html | 54 + .../doc/core/nl/html/departments/node5.html | 50 + .../doc/core/nl/html/departments/node6.html | 59 + .../doc/core/nl/html/departments/node7.html | 56 + .../doc/core/nl/html/departments/node8.html | 51 + .../doc/core/nl/html/departments/node9.html | 39 + .../doc/core/nl/html/departments/rocket.png | Bin 0 -> 828 bytes .../doc/core/nl/html/departments/search.png | Bin 0 -> 1023 bytes .../doc/core/nl/html/groups/WARNINGS | 5 + .../doc/core/nl/html/groups/groups.css | Bin 0 -> 1146 bytes .../doc/core/nl/html/groups/groups.html | 99 + .../doc/core/nl/html/groups/index.html | 99 + .../doc/core/nl/html/groups/labels.pl | 13 + .../doc/core/nl/html/groups/list_back.png | Bin 0 -> 862 bytes .../doc/core/nl/html/groups/list_home.png | Bin 0 -> 865 bytes .../core/nl/html/groups/list_new_group.png | Bin 0 -> 911 bytes .../doc/core/nl/html/groups/list_reload.png | Bin 0 -> 910 bytes .../doc/core/nl/html/groups/list_root.png | Bin 0 -> 852 bytes .../doc/core/nl/html/groups/mailto.png | Bin 0 -> 635 bytes .../doc/core/nl/html/groups/node1.html | 256 + .../doc/core/nl/html/groups/node10.html | 43 + .../doc/core/nl/html/groups/node11.html | 43 + .../doc/core/nl/html/groups/node12.html | 43 + .../doc/core/nl/html/groups/node13.html | 47 + .../doc/core/nl/html/groups/node14.html | 61 + .../doc/core/nl/html/groups/node15.html | 62 + .../doc/core/nl/html/groups/node16.html | 48 + .../doc/core/nl/html/groups/node17.html | 85 + .../doc/core/nl/html/groups/node18.html | 50 + .../doc/core/nl/html/groups/node19.html | 47 + .../doc/core/nl/html/groups/node2.html | 56 + .../doc/core/nl/html/groups/node20.html | 39 + .../doc/core/nl/html/groups/node21.html | 51 + .../doc/core/nl/html/groups/node3.html | 43 + .../doc/core/nl/html/groups/node4.html | 54 + .../doc/core/nl/html/groups/node5.html | 107 + .../doc/core/nl/html/groups/node6.html | 60 + .../doc/core/nl/html/groups/node7.html | 43 + .../doc/core/nl/html/groups/node8.html | 43 + .../doc/core/nl/html/groups/node9.html | 43 + .../doc/core/nl/html/groups/rocket.png | Bin 0 -> 828 bytes .../doc/core/nl/html/groups/search.png | Bin 0 -> 1023 bytes .../nl/html/groups/select_application.png | Bin 0 -> 959 bytes .../doc/core/nl/html/groups/select_groups.png | Bin 0 -> 868 bytes .../core/nl/html/groups/select_winstation.png | Bin 0 -> 675 bytes .../doc/core/nl/html/groups/smallenv.png | Bin 0 -> 733 bytes .../gosa-core/doc/core/nl/html/users/WARNINGS | 5 + .../doc/core/nl/html/users/fax_small.png | Bin 0 -> 787 bytes .../doc/core/nl/html/users/index.html | 149 + .../doc/core/nl/html/users/labels.pl | 13 + .../doc/core/nl/html/users/list_back.png | Bin 0 -> 862 bytes .../doc/core/nl/html/users/list_home.png | Bin 0 -> 865 bytes .../doc/core/nl/html/users/list_new_user.png | Bin 0 -> 788 bytes .../doc/core/nl/html/users/list_reload.png | Bin 0 -> 910 bytes .../doc/core/nl/html/users/list_root.png | Bin 0 -> 852 bytes .../doc/core/nl/html/users/mailto.png | Bin 0 -> 635 bytes .../doc/core/nl/html/users/node1.html | 349 + .../doc/core/nl/html/users/node10.html | 51 + .../doc/core/nl/html/users/node11.html | 83 + .../doc/core/nl/html/users/node12.html | 78 + .../doc/core/nl/html/users/node13.html | 60 + .../doc/core/nl/html/users/node14.html | 43 + .../doc/core/nl/html/users/node15.html | 43 + .../doc/core/nl/html/users/node16.html | 43 + .../doc/core/nl/html/users/node17.html | 43 + .../doc/core/nl/html/users/node18.html | 43 + .../doc/core/nl/html/users/node19.html | 43 + .../doc/core/nl/html/users/node2.html | 57 + .../doc/core/nl/html/users/node20.html | 57 + .../doc/core/nl/html/users/node21.html | 61 + .../doc/core/nl/html/users/node22.html | 55 + .../doc/core/nl/html/users/node23.html | 89 + .../doc/core/nl/html/users/node24.html | 56 + .../doc/core/nl/html/users/node25.html | 54 + .../doc/core/nl/html/users/node26.html | 65 + .../doc/core/nl/html/users/node27.html | 174 + .../doc/core/nl/html/users/node28.html | 101 + .../doc/core/nl/html/users/node29.html | 63 + .../doc/core/nl/html/users/node3.html | 43 + .../doc/core/nl/html/users/node30.html | 72 + .../doc/core/nl/html/users/node31.html | 100 + .../doc/core/nl/html/users/node32.html | 74 + .../doc/core/nl/html/users/node33.html | 46 + .../doc/core/nl/html/users/node34.html | 46 + .../doc/core/nl/html/users/node35.html | 75 + .../doc/core/nl/html/users/node36.html | 58 + .../doc/core/nl/html/users/node37.html | 58 + .../doc/core/nl/html/users/node38.html | 56 + .../doc/core/nl/html/users/node39.html | 64 + .../doc/core/nl/html/users/node4.html | 54 + .../doc/core/nl/html/users/node40.html | 44 + .../doc/core/nl/html/users/node41.html | 55 + .../doc/core/nl/html/users/node42.html | 54 + .../doc/core/nl/html/users/node43.html | 58 + .../doc/core/nl/html/users/node44.html | 58 + .../doc/core/nl/html/users/node45.html | 50 + .../doc/core/nl/html/users/node46.html | 39 + .../doc/core/nl/html/users/node47.html | 51 + .../doc/core/nl/html/users/node5.html | 48 + .../doc/core/nl/html/users/node6.html | 111 + .../doc/core/nl/html/users/node7.html | 112 + .../doc/core/nl/html/users/node8.html | 56 + .../doc/core/nl/html/users/node9.html | 68 + .../doc/core/nl/html/users/penguin.png | Bin 0 -> 964 bytes .../doc/core/nl/html/users/rocket.png | Bin 0 -> 828 bytes .../doc/core/nl/html/users/search.png | Bin 0 -> 1023 bytes .../core/nl/html/users/select_netatalk.png | Bin 0 -> 828 bytes .../doc/core/nl/html/users/select_phone.png | Bin 0 -> 784 bytes .../doc/core/nl/html/users/select_user.png | Bin 0 -> 753 bytes .../core/nl/html/users/select_winstation.png | Bin 0 -> 675 bytes .../doc/core/nl/html/users/smallenv.png | Bin 0 -> 733 bytes .../doc/core/nl/html/users/users.css | Bin 0 -> 1326 bytes .../doc/core/nl/html/users/users.html | 149 + .../doc/core/nl/lyx-source/departments.lyx | 467 + .../doc/core/nl/lyx-source/groups.lyx | 967 + .../doc/core/nl/lyx-source/images/action.png | Bin 0 -> 397 bytes .../nl/lyx-source/images/addr_company.png | Bin 0 -> 1818 bytes .../core/nl/lyx-source/images/addr_home.png | Bin 0 -> 1381 bytes .../nl/lyx-source/images/addr_personal.png | Bin 0 -> 1372 bytes .../core/nl/lyx-source/images/addressbook.png | Bin 0 -> 5434 bytes .../nl/lyx-source/images/alternatemail.png | Bin 0 -> 893 bytes .../core/nl/lyx-source/images/application.png | Bin 0 -> 3839 bytes .../doc/core/nl/lyx-source/images/back.png | Bin 0 -> 733 bytes .../doc/core/nl/lyx-source/images/banana.png | Bin 0 -> 784 bytes .../core/nl/lyx-source/images/blocklists.png | Bin 0 -> 4295 bytes .../doc/core/nl/lyx-source/images/branch.png | Bin 0 -> 694 bytes .../nl/lyx-source/images/branch_small.png | Bin 0 -> 609 bytes .../nl/lyx-source/images/button_cancel.png | Bin 0 -> 883 bytes .../nl/lyx-source/images/cant_editpaste.png | Bin 0 -> 465 bytes .../doc/core/nl/lyx-source/images/certs.png | Bin 0 -> 693 bytes .../core/nl/lyx-source/images/closedlock.png | Bin 0 -> 750 bytes .../core/nl/lyx-source/images/conference.png | Bin 0 -> 4094 bytes .../core/nl/lyx-source/images/copypaste.png | Bin 0 -> 990 bytes .../core/nl/lyx-source/images/crossref.png | Bin 0 -> 628 bytes .../core/nl/lyx-source/images/cutpaste.png | Bin 0 -> 898 bytes .../doc/core/nl/lyx-source/images/default.jpg | Bin 0 -> 2502 bytes .../nl/lyx-source/images/default_icon.png | Bin 0 -> 1957 bytes .../core/nl/lyx-source/images/department.png | Bin 0 -> 3728 bytes .../doc/core/nl/lyx-source/images/dfs.png | Bin 0 -> 3646 bytes .../doc/core/nl/lyx-source/images/dhcp.png | Bin 0 -> 4674 bytes .../doc/core/nl/lyx-source/images/display.png | Bin 0 -> 733 bytes .../doc/core/nl/lyx-source/images/dns.png | Bin 0 -> 4739 bytes .../doc/core/nl/lyx-source/images/drives.png | Bin 0 -> 950 bytes .../doc/core/nl/lyx-source/images/dtree.png | Bin 0 -> 694 bytes .../doc/core/nl/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../core/nl/lyx-source/images/editcopy.png | Bin 0 -> 777 bytes .../doc/core/nl/lyx-source/images/editcut.png | Bin 0 -> 804 bytes .../core/nl/lyx-source/images/editdelete.png | Bin 0 -> 892 bytes .../core/nl/lyx-source/images/editpaste.png | Bin 0 -> 990 bytes .../core/nl/lyx-source/images/edittrash.png | Bin 0 -> 691 bytes .../doc/core/nl/lyx-source/images/email.png | Bin 0 -> 4142 bytes .../doc/core/nl/lyx-source/images/empty.png | Bin 0 -> 174 bytes .../core/nl/lyx-source/images/encrypted.png | Bin 0 -> 1239 bytes .../doc/core/nl/lyx-source/images/env.png | Bin 0 -> 3242 bytes .../core/nl/lyx-source/images/envelope.png | Bin 0 -> 843 bytes .../doc/core/nl/lyx-source/images/expand.png | Bin 0 -> 183 bytes .../doc/core/nl/lyx-source/images/fai.png | Bin 0 -> 4931 bytes .../core/nl/lyx-source/images/fai_hook.png | Bin 0 -> 692 bytes .../nl/lyx-source/images/fai_new_hook.png | Bin 0 -> 662 bytes .../nl/lyx-source/images/fai_new_packages.png | Bin 0 -> 743 bytes .../images/fai_new_partitionTable.png | Bin 0 -> 809 bytes .../nl/lyx-source/images/fai_new_profile.png | Bin 0 -> 903 bytes .../nl/lyx-source/images/fai_new_script.png | Bin 0 -> 658 bytes .../nl/lyx-source/images/fai_new_template.png | Bin 0 -> 630 bytes .../nl/lyx-source/images/fai_new_variable.png | Bin 0 -> 410 bytes .../nl/lyx-source/images/fai_packages.png | Bin 0 -> 959 bytes .../lyx-source/images/fai_partitionTable.png | Bin 0 -> 725 bytes .../core/nl/lyx-source/images/fai_profile.png | Bin 0 -> 1094 bytes .../core/nl/lyx-source/images/fai_script.png | Bin 0 -> 601 bytes .../core/nl/lyx-source/images/fai_small.png | Bin 0 -> 885 bytes .../nl/lyx-source/images/fai_template.png | Bin 0 -> 512 bytes .../nl/lyx-source/images/fai_variable.png | Bin 0 -> 429 bytes .../doc/core/nl/lyx-source/images/false.png | Bin 0 -> 745 bytes .../doc/core/nl/lyx-source/images/fax.png | Bin 0 -> 3352 bytes .../core/nl/lyx-source/images/fax_small.png | Bin 0 -> 787 bytes .../core/nl/lyx-source/images/filesaveas.png | Bin 0 -> 1253 bytes .../doc/core/nl/lyx-source/images/flag.png | Bin 0 -> 745 bytes .../doc/core/nl/lyx-source/images/folder.png | Bin 0 -> 594 bytes .../doc/core/nl/lyx-source/images/forward.png | Bin 0 -> 726 bytes .../doc/core/nl/lyx-source/images/ftp.png | Bin 0 -> 4365 bytes .../core/nl/lyx-source/images/fullfolder.png | Bin 0 -> 587 bytes .../nl/lyx-source/images/gfx_hardware.png | Bin 0 -> 819 bytes .../doc/core/nl/lyx-source/images/group.png | Bin 0 -> 4224 bytes .../core/nl/lyx-source/images/hardware.png | Bin 0 -> 836 bytes .../lyx-source/images/hdd_linux_unmount.png | Bin 0 -> 6805 bytes .../doc/core/nl/lyx-source/images/head.png | Bin 0 -> 753 bytes .../doc/core/nl/lyx-source/images/help.png | Bin 0 -> 1136 bytes .../doc/core/nl/lyx-source/images/hotplug.png | Bin 0 -> 861 bytes .../doc/core/nl/lyx-source/images/house.png | Bin 0 -> 713 bytes .../doc/core/nl/lyx-source/images/img1.png | Bin 0 -> 97 bytes .../doc/core/nl/lyx-source/images/info.png | Bin 0 -> 1195 bytes .../core/nl/lyx-source/images/info_small.png | Bin 0 -> 936 bytes .../core/nl/lyx-source/images/keyboard.png | Bin 0 -> 343 bytes .../doc/core/nl/lyx-source/images/lamp.png | Bin 0 -> 829 bytes .../doc/core/nl/lyx-source/images/launch.png | Bin 0 -> 1263 bytes .../core/nl/lyx-source/images/ldapserver.png | Bin 0 -> 3276 bytes .../doc/core/nl/lyx-source/images/ldif.png | Bin 0 -> 2801 bytes .../core/nl/lyx-source/images/list_back.png | Bin 0 -> 862 bytes .../nl/lyx-source/images/list_blocklist.png | Bin 0 -> 671 bytes .../core/nl/lyx-source/images/list_home.png | Bin 0 -> 865 bytes .../core/nl/lyx-source/images/list_macro.png | Bin 0 -> 927 bytes .../core/nl/lyx-source/images/list_new.png | Bin 0 -> 642 bytes .../nl/lyx-source/images/list_new_app.png | Bin 0 -> 794 bytes .../lyx-source/images/list_new_blocklist.png | Bin 0 -> 781 bytes .../lyx-source/images/list_new_conference.png | Bin 0 -> 904 bytes .../lyx-source/images/list_new_department.png | Bin 0 -> 717 bytes .../nl/lyx-source/images/list_new_group.png | Bin 0 -> 911 bytes .../nl/lyx-source/images/list_new_macro.png | Bin 0 -> 823 bytes .../nl/lyx-source/images/list_new_ogroup.png | Bin 0 -> 754 bytes .../nl/lyx-source/images/list_new_user.png | Bin 0 -> 788 bytes .../core/nl/lyx-source/images/list_ogroup.png | Bin 0 -> 728 bytes .../nl/lyx-source/images/list_password.png | Bin 0 -> 693 bytes .../core/nl/lyx-source/images/list_reload.png | Bin 0 -> 910 bytes .../core/nl/lyx-source/images/list_root.png | Bin 0 -> 852 bytes .../nl/lyx-source/images/list_seperator.png | Bin 0 -> 177 bytes .../core/nl/lyx-source/images/list_submit.png | Bin 0 -> 614 bytes .../doc/core/nl/lyx-source/images/list_up.png | Bin 0 -> 862 bytes .../nl/lyx-source/images/log_critical.png | Bin 0 -> 745 bytes .../core/nl/lyx-source/images/log_info.png | Bin 0 -> 936 bytes .../core/nl/lyx-source/images/log_unknown.png | Bin 0 -> 746 bytes .../core/nl/lyx-source/images/log_warning.png | Bin 0 -> 829 bytes .../doc/core/nl/lyx-source/images/login.png | Bin 0 -> 9533 bytes .../doc/core/nl/lyx-source/images/logview.png | Bin 0 -> 3406 bytes .../doc/core/nl/lyx-source/images/macros.png | Bin 0 -> 4794 bytes .../nl/lyx-source/images/mailq_active.png | Bin 0 -> 574 bytes .../nl/lyx-source/images/mailq_header.png | Bin 0 -> 936 bytes .../core/nl/lyx-source/images/mailq_hold.png | Bin 0 -> 750 bytes .../nl/lyx-source/images/mailq_requeue.png | Bin 0 -> 910 bytes .../nl/lyx-source/images/mailq_unhold.png | Bin 0 -> 829 bytes .../core/nl/lyx-source/images/mailqueue.png | Bin 0 -> 4132 bytes .../doc/core/nl/lyx-source/images/mailto.png | Bin 0 -> 635 bytes .../core/nl/lyx-source/images/mainboard.png | Bin 0 -> 782 bytes .../doc/core/nl/lyx-source/images/members.png | Bin 0 -> 868 bytes .../doc/core/nl/lyx-source/images/memory.png | Bin 0 -> 931 bytes .../doc/core/nl/lyx-source/images/monitor.png | Bin 0 -> 733 bytes .../core/nl/lyx-source/images/monitoring.png | Bin 0 -> 4804 bytes .../doc/core/nl/lyx-source/images/mouse.png | Bin 0 -> 751 bytes .../nl/lyx-source/images/net_hardware.png | Bin 0 -> 828 bytes .../core/nl/lyx-source/images/netatalk.png | Bin 0 -> 3642 bytes .../doc/core/nl/lyx-source/images/network.png | Bin 0 -> 894 bytes .../doc/core/nl/lyx-source/images/null.gif | Bin 0 -> 49 bytes .../doc/core/nl/lyx-source/images/ogroup.png | Bin 0 -> 3510 bytes .../core/nl/lyx-source/images/openlock.png | Bin 0 -> 923 bytes .../core/nl/lyx-source/images/password.png | Bin 0 -> 3316 bytes .../doc/core/nl/lyx-source/images/penguin.png | Bin 0 -> 964 bytes .../core/nl/lyx-source/images/personal.png | Bin 0 -> 4119 bytes .../doc/core/nl/lyx-source/images/phone.png | Bin 0 -> 4263 bytes .../core/nl/lyx-source/images/phonereport.png | Bin 0 -> 3125 bytes .../doc/core/nl/lyx-source/images/posix.png | Bin 0 -> 4083 bytes .../doc/core/nl/lyx-source/images/printer.png | Bin 0 -> 678 bytes .../core/nl/lyx-source/images/processor.png | Bin 0 -> 400 bytes .../doc/core/nl/lyx-source/images/proxy.png | Bin 0 -> 5227 bytes .../doc/core/nl/lyx-source/images/reports.png | Bin 0 -> 4298 bytes .../core/nl/lyx-source/images/rightarrow.png | Bin 0 -> 863 bytes .../doc/core/nl/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../doc/core/nl/lyx-source/images/samba.png | Bin 0 -> 5472 bytes .../doc/core/nl/lyx-source/images/save.png | Bin 0 -> 595 bytes .../doc/core/nl/lyx-source/images/scanner.png | Bin 0 -> 809 bytes .../doc/core/nl/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../core/nl/lyx-source/images/search_user.png | Bin 0 -> 962 bytes .../lyx-source/images/select_application.png | Bin 0 -> 959 bytes .../nl/lyx-source/images/select_component.png | Bin 0 -> 458 bytes .../lyx-source/images/select_conference.png | Bin 0 -> 868 bytes .../nl/lyx-source/images/select_default.png | Bin 0 -> 725 bytes .../lyx-source/images/select_department.png | Bin 0 -> 731 bytes .../nl/lyx-source/images/select_groups.png | Bin 0 -> 868 bytes .../images/select_invalid_application.png | Bin 0 -> 858 bytes .../nl/lyx-source/images/select_macro.png | Bin 0 -> 927 bytes .../nl/lyx-source/images/select_netatalk.png | Bin 0 -> 828 bytes .../images/select_new_component.png | Bin 0 -> 452 bytes .../nl/lyx-source/images/select_new_phone.png | Bin 0 -> 660 bytes .../lyx-source/images/select_new_printer.png | Bin 0 -> 746 bytes .../lyx-source/images/select_new_server.png | Bin 0 -> 813 bytes .../lyx-source/images/select_new_terminal.png | Bin 0 -> 776 bytes .../images/select_new_workstation.png | Bin 0 -> 827 bytes .../nl/lyx-source/images/select_newsystem.png | Bin 0 -> 642 bytes .../nl/lyx-source/images/select_ogroup.png | Bin 0 -> 794 bytes .../nl/lyx-source/images/select_phone.png | Bin 0 -> 784 bytes .../images/select_phone_connected.png | Bin 0 -> 864 bytes .../nl/lyx-source/images/select_printer.png | Bin 0 -> 678 bytes .../nl/lyx-source/images/select_proxy.png | Bin 0 -> 894 bytes .../nl/lyx-source/images/select_server.png | Bin 0 -> 879 bytes .../nl/lyx-source/images/select_template.png | Bin 0 -> 512 bytes .../nl/lyx-source/images/select_terminal.png | Bin 0 -> 778 bytes .../core/nl/lyx-source/images/select_user.png | Bin 0 -> 753 bytes .../lyx-source/images/select_winstation.png | Bin 0 -> 675 bytes .../lyx-source/images/select_workstation.png | Bin 0 -> 817 bytes .../doc/core/nl/lyx-source/images/server.png | Bin 0 -> 879 bytes .../doc/core/nl/lyx-source/images/service.png | Bin 0 -> 4135 bytes .../nl/lyx-source/images/small_filter.png | Bin 0 -> 814 bytes .../core/nl/lyx-source/images/smallenv.png | Bin 0 -> 733 bytes .../nl/lyx-source/images/snd_hardware.png | Bin 0 -> 803 bytes .../core/nl/lyx-source/images/sort_down.png | Bin 0 -> 174 bytes .../doc/core/nl/lyx-source/images/sort_up.png | Bin 0 -> 176 bytes .../doc/core/nl/lyx-source/images/sound.png | Bin 0 -> 898 bytes .../doc/core/nl/lyx-source/images/stop.png | Bin 0 -> 974 bytes .../doc/core/nl/lyx-source/images/system.png | Bin 0 -> 3105 bytes .../nl/lyx-source/images/terminal_small.png | Bin 0 -> 778 bytes .../doc/core/nl/lyx-source/images/time.png | Bin 0 -> 1049 bytes .../doc/core/nl/lyx-source/images/tree.png | Bin 0 -> 894 bytes .../doc/core/nl/lyx-source/images/true.png | Bin 0 -> 661 bytes .../doc/core/nl/lyx-source/images/user.png | Bin 0 -> 3204 bytes .../doc/core/nl/lyx-source/images/warning.png | Bin 0 -> 1692 bytes .../doc/core/nl/lyx-source/images/zip.png | Bin 0 -> 791 bytes .../doc/core/nl/lyx-source/users.lyx | 2920 + trunk/gosa-core/gosa-encrypt-passwords.1 | 162 + trunk/gosa-core/gosa-encrypt-passwords.pod | 33 + trunk/gosa-core/html/TreeMenu.js | 697 + trunk/gosa-core/html/TreeMenu.php | 822 + trunk/gosa-core/html/favicon.ico | Bin 0 -> 1406 bytes trunk/gosa-core/html/getFAIstatus.php | 48 + trunk/gosa-core/html/getbin.php | 54 + trunk/gosa-core/html/helpviewer.php | 275 + trunk/gosa-core/html/images/action.png | Bin 0 -> 397 bytes trunk/gosa-core/html/images/back.png | Bin 0 -> 733 bytes trunk/gosa-core/html/images/branch.gif | Bin 0 -> 79 bytes trunk/gosa-core/html/images/branchbottom.gif | Bin 0 -> 73 bytes trunk/gosa-core/html/images/branchtop.gif | Bin 0 -> 67 bytes trunk/gosa-core/html/images/dtree.png | Bin 0 -> 694 bytes trunk/gosa-core/html/images/empty.png | Bin 0 -> 174 bytes trunk/gosa-core/html/images/encrypted.png | Bin 0 -> 1239 bytes trunk/gosa-core/html/images/error.png | Bin 0 -> 1591 bytes trunk/gosa-core/html/images/false.png | Bin 0 -> 745 bytes trunk/gosa-core/html/images/filesaveas.png | Bin 0 -> 1253 bytes .../gosa-core/html/images/folder-expanded.gif | Bin 0 -> 923 bytes trunk/gosa-core/html/images/folder.gif | Bin 0 -> 922 bytes trunk/gosa-core/html/images/forward.png | Bin 0 -> 726 bytes trunk/gosa-core/html/images/head.png | Bin 0 -> 753 bytes trunk/gosa-core/html/images/info.png | Bin 0 -> 1195 bytes trunk/gosa-core/html/images/info_small.png | Bin 0 -> 936 bytes trunk/gosa-core/html/images/launch.png | Bin 0 -> 1263 bytes .../html/images/layer_menu/down-arrow.png | Bin 0 -> 164 bytes .../html/images/layer_menu/forward-arrow.png | Bin 0 -> 162 bytes .../html/images/layer_menu/transparent.png | Bin 0 -> 148 bytes trunk/gosa-core/html/images/ldapserver.png | Bin 0 -> 3276 bytes trunk/gosa-core/html/images/lists/action.png | Bin 0 -> 814 bytes trunk/gosa-core/html/images/lists/back.png | Bin 0 -> 862 bytes .../gosa-core/html/images/lists/back_grey.png | Bin 0 -> 509 bytes trunk/gosa-core/html/images/lists/copy.png | Bin 0 -> 777 bytes trunk/gosa-core/html/images/lists/cut.png | Bin 0 -> 804 bytes trunk/gosa-core/html/images/lists/delete.png | Bin 0 -> 892 bytes trunk/gosa-core/html/images/lists/edit.png | Bin 0 -> 946 bytes trunk/gosa-core/html/images/lists/expand.png | Bin 0 -> 183 bytes .../html/images/lists/folder-full.png | Bin 0 -> 587 bytes trunk/gosa-core/html/images/lists/folder.png | Bin 0 -> 594 bytes .../html/images/lists/folder_grey.png | Bin 0 -> 313 bytes trunk/gosa-core/html/images/lists/home.png | Bin 0 -> 865 bytes .../gosa-core/html/images/lists/home_grey.png | Bin 0 -> 502 bytes trunk/gosa-core/html/images/lists/import.png | Bin 0 -> 904 bytes trunk/gosa-core/html/images/lists/invalid.png | Bin 0 -> 745 bytes trunk/gosa-core/html/images/lists/key.png | Bin 0 -> 693 bytes trunk/gosa-core/html/images/lists/locked.png | Bin 0 -> 750 bytes trunk/gosa-core/html/images/lists/new.png | Bin 0 -> 642 bytes trunk/gosa-core/html/images/lists/off.png | Bin 0 -> 459 bytes trunk/gosa-core/html/images/lists/on.png | Bin 0 -> 829 bytes .../html/images/lists/paste-grey.png | Bin 0 -> 465 bytes trunk/gosa-core/html/images/lists/paste.png | Bin 0 -> 990 bytes trunk/gosa-core/html/images/lists/reload.png | Bin 0 -> 941 bytes trunk/gosa-core/html/images/lists/restore.png | Bin 0 -> 1080 bytes .../html/images/lists/restore_grey.png | Bin 0 -> 842 bytes trunk/gosa-core/html/images/lists/root.png | Bin 0 -> 852 bytes .../gosa-core/html/images/lists/root_grey.png | Bin 0 -> 499 bytes .../html/images/lists/search-subtree.png | Bin 0 -> 894 bytes .../html/images/lists/search-user.png | Bin 0 -> 962 bytes trunk/gosa-core/html/images/lists/search.png | Bin 0 -> 1023 bytes .../gosa-core/html/images/lists/seperator.png | Bin 0 -> 177 bytes .../gosa-core/html/images/lists/sort-down.png | Bin 0 -> 174 bytes trunk/gosa-core/html/images/lists/sort-up.png | Bin 0 -> 176 bytes trunk/gosa-core/html/images/lists/submit.png | Bin 0 -> 614 bytes trunk/gosa-core/html/images/lists/trash.png | Bin 0 -> 691 bytes .../gosa-core/html/images/lists/unlocked.png | Bin 0 -> 923 bytes trunk/gosa-core/html/images/lists/up.png | Bin 0 -> 862 bytes trunk/gosa-core/html/images/lists/upload.png | Bin 0 -> 528 bytes trunk/gosa-core/html/images/login-head.png | Bin 0 -> 4119 bytes trunk/gosa-core/html/images/login.png | Bin 0 -> 9533 bytes trunk/gosa-core/html/images/logout.png | Bin 0 -> 1330 bytes trunk/gosa-core/html/images/mailto.png | Bin 0 -> 635 bytes trunk/gosa-core/html/images/minus.gif | Bin 0 -> 98 bytes trunk/gosa-core/html/images/minustop.gif | Bin 0 -> 92 bytes .../html/images/move_object_down.png | Bin 0 -> 694 bytes .../gosa-core/html/images/move_object_up.png | Bin 0 -> 662 bytes trunk/gosa-core/html/images/null.gif | Bin 0 -> 49 bytes trunk/gosa-core/html/images/opacity_black.png | Bin 0 -> 169 bytes trunk/gosa-core/html/images/password.png | Bin 0 -> 3316 bytes trunk/gosa-core/html/images/penguin.png | Bin 0 -> 964 bytes trunk/gosa-core/html/images/plus.gif | Bin 0 -> 104 bytes trunk/gosa-core/html/images/plusbottom.gif | Bin 0 -> 100 bytes trunk/gosa-core/html/images/plustop.gif | Bin 0 -> 96 bytes trunk/gosa-core/html/images/rightarrow.png | Bin 0 -> 863 bytes trunk/gosa-core/html/images/rocket.png | Bin 0 -> 828 bytes trunk/gosa-core/html/images/save.png | Bin 0 -> 595 bytes .../html/images/select_department.png | Bin 0 -> 731 bytes trunk/gosa-core/html/images/select_proxy.png | Bin 0 -> 894 bytes trunk/gosa-core/html/images/setup/fai.png | Bin 0 -> 5037 bytes trunk/gosa-core/html/images/setup/ldap.png | Bin 0 -> 3972 bytes trunk/gosa-core/html/images/setup/license.png | Bin 0 -> 1411 bytes trunk/gosa-core/html/images/setup/locale.png | Bin 0 -> 4018 bytes trunk/gosa-core/html/images/setup/migrate.png | Bin 0 -> 4804 bytes trunk/gosa-core/html/images/setup/server.png | Bin 0 -> 3276 bytes trunk/gosa-core/html/images/setup/system.png | Bin 0 -> 2317 bytes trunk/gosa-core/html/images/setup/user.png | Bin 0 -> 3204 bytes trunk/gosa-core/html/images/setup/welcome.png | Bin 0 -> 3899 bytes trunk/gosa-core/html/images/small-error.png | Bin 0 -> 974 bytes trunk/gosa-core/html/images/small_error.png | Bin 0 -> 890 bytes trunk/gosa-core/html/images/small_warning.png | Bin 0 -> 571 bytes trunk/gosa-core/html/images/snapshot.png | Bin 0 -> 838 bytes trunk/gosa-core/html/images/status_pause.png | Bin 0 -> 750 bytes .../html/images/status_restart_all.png | Bin 0 -> 941 bytes .../html/images/status_restarting.png | Bin 0 -> 463 bytes trunk/gosa-core/html/images/status_start.png | Bin 0 -> 911 bytes .../html/images/status_start_all.png | Bin 0 -> 911 bytes trunk/gosa-core/html/images/status_stop.png | Bin 0 -> 856 bytes .../gosa-core/html/images/status_stop_all.png | Bin 0 -> 856 bytes trunk/gosa-core/html/images/true.png | Bin 0 -> 661 bytes trunk/gosa-core/html/images/warning.png | Bin 0 -> 1692 bytes trunk/gosa-core/html/images/welcome.png | Bin 0 -> 2925 bytes trunk/gosa-core/html/images/wizard.png | Bin 0 -> 571 bytes trunk/gosa-core/html/include/calendar.js | 263 + trunk/gosa-core/html/include/events.js | 20 + trunk/gosa-core/html/include/focus.js | 664 + .../include/layersmenu-browser_detection.js | 33 + .../html/include/layersmenu-library.js | 251 + trunk/gosa-core/html/include/layersmenu.js | 315 + trunk/gosa-core/html/include/png.js | 85 + trunk/gosa-core/html/include/pwdStrength.js | 247 + trunk/gosa-core/html/include/warning.js | 13 + trunk/gosa-core/html/index.php | 462 + trunk/gosa-core/html/logout.php | 100 + trunk/gosa-core/html/main.php | 437 + trunk/gosa-core/html/password.php | 304 + .../gosa-core/html/plugins/acl/images/acl.png | Bin 0 -> 750 bytes .../html/plugins/acl/images/new-role.png | Bin 0 -> 911 bytes .../html/plugins/acl/images/plugin.png | Bin 0 -> 3734 bytes .../html/plugins/acl/images/role.png | Bin 0 -> 868 bytes .../bugsubmitter/images/bugsubmitter.png | Bin 0 -> 4135 bytes .../plugins/departments/images/country.png | Bin 0 -> 811 bytes .../html/plugins/departments/images/dc.png | Bin 0 -> 770 bytes .../plugins/departments/images/department.png | Bin 0 -> 594 bytes .../departments/images/department_alias.png | Bin 0 -> 463 bytes .../departments/images/department_referal.png | Bin 0 -> 904 bytes .../plugins/departments/images/locality.png | Bin 0 -> 731 bytes .../departments/images/organization.png | Bin 0 -> 879 bytes .../plugins/departments/images/plugin.png | Bin 0 -> 3728 bytes .../html/plugins/generic/images/head.png | Bin 0 -> 753 bytes .../html/plugins/generic/images/house.png | Bin 0 -> 713 bytes .../html/plugins/generic/images/plugin.png | Bin 0 -> 3482 bytes trunk/gosa-core/html/plugins/gl | Bin 0 -> 782 bytes .../html/plugins/groups/images/asterisk.png | Bin 0 -> 784 bytes .../plugins/groups/images/environment.png | Bin 0 -> 733 bytes .../html/plugins/groups/images/groups.png | Bin 0 -> 868 bytes .../html/plugins/groups/images/mail.png | Bin 0 -> 635 bytes .../html/plugins/groups/images/menu.png | Bin 0 -> 959 bytes .../html/plugins/groups/images/new.png | Bin 0 -> 911 bytes .../html/plugins/groups/images/plugin.png | Bin 0 -> 4224 bytes .../html/plugins/groups/images/samba.png | Bin 0 -> 675 bytes .../plugins/ogroups/images/application.png | Bin 0 -> 959 bytes .../html/plugins/ogroups/images/asterisk.png | Bin 0 -> 784 bytes .../html/plugins/ogroups/images/generic.png | Bin 0 -> 778 bytes .../plugins/ogroups/images/list_ogroup.png | Bin 0 -> 728 bytes .../html/plugins/ogroups/images/mail.png | Bin 0 -> 635 bytes .../html/plugins/ogroups/images/new.png | Bin 0 -> 754 bytes .../html/plugins/ogroups/images/ogroup.png | Bin 0 -> 794 bytes .../html/plugins/ogroups/images/phone.png | Bin 0 -> 784 bytes .../html/plugins/ogroups/images/plugin.png | Bin 0 -> 4255 bytes .../html/plugins/ogroups/images/printer.png | Bin 0 -> 678 bytes .../plugins/ogroups/images/select_ogroup.png | Bin 0 -> 794 bytes .../ogroups/images/select_terminal.png | Bin 0 -> 778 bytes .../html/plugins/ogroups/images/server.png | Bin 0 -> 879 bytes .../html/plugins/ogroups/images/terminal.png | Bin 0 -> 778 bytes .../plugins/ogroups/images/winstation.png | Bin 0 -> 675 bytes .../plugins/ogroups/images/workstation.png | Bin 0 -> 817 bytes .../html/plugins/password/images/plugin.png | Bin 0 -> 3316 bytes .../html/plugins/posix/images/members.png | Bin 0 -> 868 bytes .../html/plugins/posix/images/plugin.png | Bin 0 -> 4505 bytes .../plugins/posix/images/terminal_small.png | Bin 0 -> 778 bytes .../html/plugins/users/images/default.jpg | Bin 0 -> 2502 bytes .../html/plugins/users/images/fax_small.png | Bin 0 -> 787 bytes .../plugins/users/images/list_new_user.png | Bin 0 -> 788 bytes .../plugins/users/images/list_password.png | Bin 0 -> 693 bytes .../plugins/users/images/select_template.png | Bin 0 -> 512 bytes .../html/plugins/users/images/select_user.png | Bin 0 -> 753 bytes .../users/images/small_environment.png | Bin 0 -> 733 bytes .../html/plugins/users/images/user.png | Bin 0 -> 3204 bytes .../html/plugins/users/images/wizard.png | Bin 0 -> 571 bytes trunk/gosa-core/html/progress.php | 94 + trunk/gosa-core/html/setup.php | 151 + .../themes/default/images/accountexpired.png | Bin 0 -> 1685 bytes .../html/themes/default/images/border.png | Bin 0 -> 135 bytes .../html/themes/default/images/go_logo.png | Bin 0 -> 3839 bytes .../html/themes/default/images/gohome.png | Bin 0 -> 1340 bytes .../html/themes/default/images/help.png | Bin 0 -> 1186 bytes .../html/themes/default/images/stop.png | Bin 0 -> 1330 bytes .../html/themes/default/password-style.css | 56 + trunk/gosa-core/html/themes/default/style.css | 1558 + .../default/GOsa_MultiSelectHeader.ihtml | 35 + .../GOsa_MultiSelectHeaderSubEntry.ihtml | 63 + .../themes/default/MultiSelectWindow.tpl | 148 + .../ihtml/themes/default/accountexpired.tpl | 74 + trunk/gosa-core/ihtml/themes/default/acl.tpl | 145 + .../gosa-core/ihtml/themes/default/colors.txt | 13 + .../ihtml/themes/default/conflict.tpl | 16 + .../ihtml/themes/default/copyPasteDialog.tpl | 34 + .../ihtml/themes/default/framework.tpl | 58 + .../ihtml/themes/default/headers.tpl | 33 + trunk/gosa-core/ihtml/themes/default/help.tpl | 39 + .../ihtml/themes/default/islocked.tpl | 23 + .../gosa-core/ihtml/themes/default/login.tpl | 101 + .../ihtml/themes/default/logout-close.tpl | 13 + .../gosa-core/ihtml/themes/default/logout.tpl | 22 + .../ihtml/themes/default/msg_dialog.tpl | 137 + .../ihtml/themes/default/password.tpl | 135 + .../gosa-core/ihtml/themes/default/remove.tpl | 17 + .../ihtml/themes/default/setup_headers.tpl | 25 + .../ihtml/themes/default/sizelimit.tpl | 17 + .../ihtml/themes/default/snapshotdialog.tpl | 97 + trunk/gosa-core/include/accept-to-gettext.inc | 212 + .../include/class_CopyPasteHandler.inc | 514 + .../include/class_MultiSelectWindow.inc | 804 + .../include/class_SnapShotDialog.inc | 198 + trunk/gosa-core/include/class_acl.inc | 1283 + .../include/class_baseSelectDialog.inc | 100 + trunk/gosa-core/include/class_certificate.inc | 276 + trunk/gosa-core/include/class_config.inc | 1003 + .../gosa-core/include/class_divSelectBox.inc | 143 + trunk/gosa-core/include/class_divlist.inc | 381 + .../include/class_gosaSupportDaemon.inc | 1927 + trunk/gosa-core/include/class_ldap.inc | 1382 + .../include/class_ldapMultiplexer.inc | 59 + trunk/gosa-core/include/class_log.inc | 253 + trunk/gosa-core/include/class_msg_dialog.inc | 202 + trunk/gosa-core/include/class_multi_plug.inc | 429 + trunk/gosa-core/include/class_plugin.inc | 2088 + trunk/gosa-core/include/class_pluglist.inc | 417 + trunk/gosa-core/include/class_session.inc | 227 + .../gosa-core/include/class_socketClient.inc | 219 + trunk/gosa-core/include/class_tabs.inc | 452 + trunk/gosa-core/include/class_userinfo.inc | 711 + trunk/gosa-core/include/functions.inc | 2829 + trunk/gosa-core/include/functions_debug.inc | 422 + .../include/functions_helpviewer.inc | 506 + .../class_password-methods-clear.inc | 51 + .../class_password-methods-crypt.inc | 134 + .../class_password-methods-md5.inc | 54 + .../class_password-methods-sha.inc | 64 + .../class_password-methods-smd5.inc | 55 + .../class_password-methods-ssha.inc | 66 + .../class_password-methods.inc | 295 + trunk/gosa-core/include/php_setup.inc | 288 + .../include/smarty/Config_File.class.php | 393 + .../gosa-core/include/smarty/Smarty.class.php | 1960 + .../include/smarty/Smarty_Compiler.class.php | 2351 + trunk/gosa-core/include/smarty/debug.tpl | 157 + .../core.assemble_plugin_filepath.php | 67 + .../core.assign_smarty_interface.php | 43 + .../internals/core.create_dir_structure.php | 79 + .../internals/core.display_debug_console.php | 61 + .../internals/core.get_include_path.php | 44 + .../smarty/internals/core.get_microtime.php | 23 + .../internals/core.get_php_resource.php | 80 + .../smarty/internals/core.is_secure.php | 59 + .../smarty/internals/core.is_trusted.php | 47 + .../smarty/internals/core.load_plugins.php | 125 + .../internals/core.load_resource_plugin.php | 74 + .../internals/core.process_cached_inserts.php | 71 + .../core.process_compiled_include.php | 37 + .../smarty/internals/core.read_cache_file.php | 101 + .../include/smarty/internals/core.rm_auto.php | 71 + .../include/smarty/internals/core.rmdir.php | 54 + .../internals/core.run_insert_handler.php | 71 + .../internals/core.smarty_include_php.php | 50 + .../internals/core.write_cache_file.php | 96 + .../internals/core.write_compiled_include.php | 91 + .../core.write_compiled_resource.php | 35 + .../smarty/internals/core.write_file.php | 54 + .../include/smarty/plugins/block.render.php | 124 + .../include/smarty/plugins/block.t.php | 126 + .../smarty/plugins/block.textformat.php | 103 + .../smarty/plugins/compiler.assign.php | 40 + .../smarty/plugins/function.assign.php | 38 + .../plugins/function.assign_debug_info.php | 40 + .../smarty/plugins/function.config_load.php | 142 + .../smarty/plugins/function.counter.php | 80 + .../include/smarty/plugins/function.cycle.php | 102 + .../include/smarty/plugins/function.debug.php | 35 + .../include/smarty/plugins/function.eval.php | 49 + .../include/smarty/plugins/function.fetch.php | 221 + .../plugins/function.html_checkboxes.php | 143 + .../smarty/plugins/function.html_image.php | 142 + .../smarty/plugins/function.html_options.php | 122 + .../smarty/plugins/function.html_radios.php | 156 + .../plugins/function.html_select_date.php | 331 + .../plugins/function.html_select_time.php | 194 + .../smarty/plugins/function.html_table.php | 177 + .../smarty/plugins/function.mailto.php | 165 + .../include/smarty/plugins/function.math.php | 84 + .../smarty/plugins/function.msgPool.php | 21 + .../include/smarty/plugins/function.popup.php | 119 + .../smarty/plugins/function.popup_init.php | 40 + .../smarty/plugins/modifier.capitalize.php | 43 + .../include/smarty/plugins/modifier.cat.php | 33 + .../plugins/modifier.count_characters.php | 32 + .../plugins/modifier.count_paragraphs.php | 29 + .../plugins/modifier.count_sentences.php | 29 + .../smarty/plugins/modifier.count_words.php | 33 + .../smarty/plugins/modifier.date_format.php | 58 + .../plugins/modifier.debug_print_var.php | 90 + .../smarty/plugins/modifier.default.php | 32 + .../smarty/plugins/modifier.escape.php | 93 + .../smarty/plugins/modifier.indent.php | 28 + .../include/smarty/plugins/modifier.lower.php | 26 + .../include/smarty/plugins/modifier.nl2br.php | 35 + .../smarty/plugins/modifier.regex_replace.php | 48 + .../smarty/plugins/modifier.replace.php | 30 + .../smarty/plugins/modifier.spacify.php | 30 + .../smarty/plugins/modifier.string_format.php | 29 + .../include/smarty/plugins/modifier.strip.php | 33 + .../smarty/plugins/modifier.strip_tags.php | 32 + .../smarty/plugins/modifier.truncate.php | 50 + .../include/smarty/plugins/modifier.upper.php | 26 + .../smarty/plugins/modifier.wordwrap.php | 29 + .../plugins/outputfilter.trimwhitespace.php | 75 + .../plugins/shared.escape_special_chars.php | 31 + .../smarty/plugins/shared.make_timestamp.php | 46 + .../gosa-core/include/utils/class_msgPool.inc | 564 + trunk/gosa-core/include/utils/class_tests.inc | 252 + .../include/utils/class_timezone.inc | 77 + .../excel/class.writeexcel_biffwriter.inc.php | 208 + .../excel/class.writeexcel_format.inc.php | 702 + .../excel/class.writeexcel_formula.inc.php | 1413 + .../excel/class.writeexcel_olewriter.inc.php | 353 + .../excel/class.writeexcel_workbook.inc.php | 1109 + .../excel/class.writeexcel_worksheet.inc.php | 2951 + .../functions.writeexcel_utility.inc.php | 271 + .../include/utils/layer-menu/COPYING | 504 + .../include/utils/layer-menu/lib/PHPLIB.php | 567 + .../lib/layersmenu-browser_detection.php | 80 + .../layer-menu/lib/layersmenu-common.inc.php | 955 + .../layer-menu/lib/layersmenu-process.inc.php | 158 + .../utils/layer-menu/lib/layersmenu.inc.php | 942 + .../utils/layer-menu/lib/phptreemenu.inc.php | 448 + .../utils/layer-menu/lib/plainmenu.inc.php | 281 + .../utils/layer-menu/lib/treemenu.inc.php | 352 + .../libjs/layersmenu-browser_detection.js | 33 + .../layer-menu/libjs/layersmenu-footer.ijs | 11 + .../layer-menu/libjs/layersmenu-header.ijs | 57 + .../layer-menu/libjs/layersmenu-library.js | 248 + .../libjs/layersmenu-see-through.js | 65 + .../utils/layer-menu/libjs/layersmenu.js | 316 + .../libjs/layerstreemenu-cookies.js | 70 + .../utils/layer-menu/libjs/layerstreemenu.ijs | 52 + .../locale/core/de/LC_MESSAGES/messages.po | 6524 ++ .../locale/core/es/LC_MESSAGES/messages.po | 7438 ++ .../locale/core/fr/LC_MESSAGES/messages.po | 6577 ++ .../locale/core/it/LC_MESSAGES/messages.po | 7872 ++ trunk/gosa-core/locale/core/messages.po | 6155 ++ .../locale/core/nl/LC_MESSAGES/messages.po | 8284 ++ .../locale/core/pl/LC_MESSAGES/messages.po | 8155 ++ .../locale/core/ru/LC_MESSAGES/messages.po | 8218 ++ .../locale/core/vi/LC_MESSAGES/messages.po | 6584 ++ .../locale/core/zh/LC_MESSAGES/messages.po | 8046 ++ .../bugsubmitter/class_bugsubmitter.inc | 29 + .../plugins/addons/bugsubmitter/main.inc | 26 + .../gosa-core/plugins/admin/acl/acl_role.tpl | 86 + .../plugins/admin/acl/class_aclManagement.inc | 684 + .../plugins/admin/acl/class_aclRole.inc | 766 + .../plugins/admin/acl/class_divListACL.inc | 249 + trunk/gosa-core/plugins/admin/acl/main.inc | 65 + .../plugins/admin/acl/paste_role.tpl | 10 + trunk/gosa-core/plugins/admin/acl/remove.tpl | 23 + .../gosa-core/plugins/admin/acl/tabs_acl.inc | 95 + .../plugins/admin/acl/tabs_acl_role.inc | 81 + .../departments/class_countryGeneric.inc | 96 + .../admin/departments/class_dcObject.inc | 95 + .../departments/class_departmentGeneric.inc | 744 + .../class_departmentManagement.inc | 636 + .../departments/class_divListDepartment.inc | 219 + .../departments/class_localityGeneric.inc | 96 + .../departments/class_organizationGeneric.inc | 136 + .../plugins/admin/departments/country.tpl | 57 + .../plugins/admin/departments/dcObject.tpl | 57 + .../plugins/admin/departments/dep_iframe.tpl | 21 + .../admin/departments/dep_move_confirm.tpl | 19 + .../plugins/admin/departments/generic.tpl | 128 + .../plugins/admin/departments/locality.tpl | 57 + .../plugins/admin/departments/main.inc | 65 + .../admin/departments/organization.tpl | 129 + .../plugins/admin/departments/remove.tpl | 24 + .../admin/departments/tabs_department.inc | 139 + .../admin/groups/class_divListGroup.inc | 327 + .../admin/groups/class_groupGeneric.inc | 1434 + .../admin/groups/class_groupManagement.inc | 836 + .../plugins/admin/groups/generic.tpl | 288 + .../plugins/admin/groups/group_objects.tpl | 59 + trunk/gosa-core/plugins/admin/groups/main.inc | 68 + .../plugins/admin/groups/paste_generic.tpl | 25 + .../gosa-core/plugins/admin/groups/remove.tpl | 27 + .../plugins/admin/groups/tabs_group.inc | 117 + .../plugins/admin/groups/trust_machines.tpl | 42 + .../admin/ogroups/class_divListOGroup.inc | 305 + .../plugins/admin/ogroups/class_ogroup.inc | 1139 + .../admin/ogroups/class_ogroupManagement.inc | 738 + .../plugins/admin/ogroups/generic.tpl | 93 + .../gosa-core/plugins/admin/ogroups/main.inc | 68 + .../plugins/admin/ogroups/ogroup_objects.tpl | 53 + .../plugins/admin/ogroups/paste_generic.tpl | 14 + .../plugins/admin/ogroups/remove.tpl | 24 + .../plugins/admin/ogroups/tabs_ogroups.inc | 369 + .../plugins/admin/ogroups/trust_machines.tpl | 42 + .../admin/users/class_divListUsers.inc | 394 + .../admin/users/class_userManagement.inc | 1223 + trunk/gosa-core/plugins/admin/users/main.inc | 73 + .../plugins/admin/users/password.tpl | 42 + .../gosa-core/plugins/admin/users/remove.tpl | 18 + .../plugins/admin/users/tabs_user.inc | 172 + .../plugins/admin/users/template.tpl | 60 + .../plugins/admin/users/templatize.tpl | 46 + .../generic/references/class_reference.inc | 203 + .../plugins/generic/references/contents.tpl | 19 + .../plugins/generic/welcome/main.inc | 32 + .../plugins/generic/welcome/welcome.tpl | 19 + .../plugins/personal/generic/class_user.inc | 1702 + .../plugins/personal/generic/generic.tpl | 576 + .../personal/generic/generic_certs.tpl | 96 + .../personal/generic/generic_picture.tpl | 37 + .../plugins/personal/generic/main.inc | 211 + .../personal/generic/multiple_generic.tpl | 482 + .../plugins/personal/generic/password.tpl | 28 + .../personal/generic/paste_generic.tpl | 59 + .../plugins/personal/password/changed.tpl | 12 + .../personal/password/class_password.inc | 155 + .../plugins/personal/password/main.inc | 62 + .../plugins/personal/password/nochange.tpl | 11 + .../plugins/personal/password/password.tpl | 54 + .../personal/posix/class_posixAccount.inc | 1753 + .../plugins/personal/posix/generic.tpl | 197 + .../gosa-core/plugins/personal/posix/main.inc | 147 + .../plugins/personal/posix/paste_generic.tpl | 70 + .../plugins/personal/posix/posix_groups.tpl | 83 + .../plugins/personal/posix/posix_shadow.tpl | 79 + .../plugins/personal/posix/trust_machines.tpl | 42 + .../redhat/01_fix_template_location.patch | 12 + .../redhat/02_fix_class_mapping.patch | 50 + .../redhat/03_fix_locale_location.patch | 41 + .../redhat/04_fix_online_help_location.patch | 24 + trunk/gosa-core/redhat/README.php | 1 + trunk/gosa-core/redhat/README.selinux | 9 + trunk/gosa-core/redhat/gosa.spec | 391 + trunk/gosa-core/redhat/make-gosa-package | 176 + trunk/gosa-core/redhat/rpm-make-gosa | 134 + trunk/gosa-core/setup/class_setup.inc | 307 + trunk/gosa-core/setup/class_setupStep.inc | 130 + .../setup/class_setupStep_Checks.inc | 280 + .../setup/class_setupStep_Config1.inc | 245 + .../setup/class_setupStep_Config2.inc | 327 + .../setup/class_setupStep_Config3.inc | 222 + .../setup/class_setupStep_Feedback.inc | 275 + .../setup/class_setupStep_Finish.inc | 143 + .../setup/class_setupStep_Language.inc | 72 + .../gosa-core/setup/class_setupStep_Ldap.inc | 212 + .../setup/class_setupStep_License.inc | 94 + .../setup/class_setupStep_Migrate.inc | 3286 + .../setup/class_setupStep_Schema.inc | 133 + .../setup/class_setupStep_Welcome.inc | 74 + trunk/gosa-core/setup/license.txt | 620 + trunk/gosa-core/setup/main.inc | 35 + trunk/gosa-core/setup/setup.tpl | 4 + trunk/gosa-core/setup/setup_checks.tpl | 122 + trunk/gosa-core/setup/setup_config1.tpl | 225 + trunk/gosa-core/setup/setup_config2.tpl | 352 + trunk/gosa-core/setup/setup_config3.tpl | 305 + trunk/gosa-core/setup/setup_feedback.tpl | 154 + trunk/gosa-core/setup/setup_finish.tpl | 23 + trunk/gosa-core/setup/setup_frame.tpl | 47 + trunk/gosa-core/setup/setup_language.tpl | 13 + trunk/gosa-core/setup/setup_ldap.tpl | 136 + trunk/gosa-core/setup/setup_license.tpl | 11 + trunk/gosa-core/setup/setup_migrate.tpl | 571 + trunk/gosa-core/setup/setup_schema.tpl | 52 + trunk/gosa-core/setup/setup_welcome.tpl | 37 + trunk/gosa-core/update-gosa | 569 + trunk/gosa-core/update-gosa.1 | 173 + trunk/gosa-core/update-gosa.pod | 45 + trunk/gosa-core/update-locale | 161 + trunk/gosa-core/update-locale.1 | 168 + trunk/gosa-core/update-locale.pod | 41 + trunk/gosa-core/update-online-help | 134 + trunk/gosa-core/update-online-help.1 | 161 + trunk/gosa-core/update-online-help.pod | 32 + trunk/gosa-core/update-pdf-help | 81 + trunk/gosa-core/update-pdf-help.1 | 161 + trunk/gosa-core/update-pdf-help.pod | 32 + .../addons/addressbook/address_edit.tpl | 274 + .../addons/addressbook/address_info.tpl | 196 + .../addons/addressbook/class_addressbook.inc | 873 + .../addons/addressbook/contents.tpl | 127 + .../addressbook/addons/addressbook/dial.tpl | 15 + .../addressbook/addons/addressbook/main.inc | 48 + .../addressbook/addons/addressbook/remove.tpl | 18 + .../help/de/html/addressbook/WARNINGS | 3 + .../help/de/html/addressbook/action.png | Bin 0 -> 397 bytes .../help/de/html/addressbook/addressbook.css | 37 + .../help/de/html/addressbook/addressbook.html | 69 + .../help/de/html/addressbook/closedlock.png | Bin 0 -> 750 bytes .../help/de/html/addressbook/dtree.png | Bin 0 -> 694 bytes .../help/de/html/addressbook/index.html | 69 + .../help/de/html/addressbook/labels.pl | 13 + .../help/de/html/addressbook/list_ogroup.png | Bin 0 -> 728 bytes .../help/de/html/addressbook/mailto.png | Bin 0 -> 692 bytes .../help/de/html/addressbook/node1.html | 102 + .../help/de/html/addressbook/node2.html | 103 + .../help/de/html/addressbook/node3.html | 57 + .../help/de/html/addressbook/node4.html | 59 + .../help/de/html/addressbook/node5.html | 59 + .../help/de/html/addressbook/node6.html | 53 + .../help/de/html/addressbook/node7.html | 66 + .../help/de/html/addressbook/node8.html | 51 + .../help/de/html/addressbook/rocket.png | Bin 0 -> 828 bytes .../help/de/html/addressbook/save.png | Bin 0 -> 595 bytes .../help/de/html/addressbook/search.png | Bin 0 -> 1023 bytes .../help/de/lyx-source/addressbook.lyx | 600 + .../help/de/lyx-source/images/action.png | Bin 0 -> 397 bytes .../help/de/lyx-source/images/closedlock.png | Bin 0 -> 750 bytes .../help/de/lyx-source/images/dtree.png | Bin 0 -> 694 bytes .../help/de/lyx-source/images/editpaste.png | Bin 0 -> 990 bytes .../help/de/lyx-source/images/list_ogroup.png | Bin 0 -> 728 bytes .../help/de/lyx-source/images/mailto.png | Bin 0 -> 692 bytes .../help/de/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../help/de/lyx-source/images/save.png | Bin 0 -> 595 bytes .../help/de/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../help/en/html/addressbook/WARNINGS | 5 + .../help/en/html/addressbook/action.png | Bin 0 -> 397 bytes .../help/en/html/addressbook/addressbook.css | Bin 0 -> 1465 bytes .../help/en/html/addressbook/addressbook.html | 65 + .../help/en/html/addressbook/closedlock.png | Bin 0 -> 750 bytes .../help/en/html/addressbook/dtree.png | Bin 0 -> 694 bytes .../help/en/html/addressbook/editpaste.png | Bin 0 -> 990 bytes .../help/en/html/addressbook/index.html | 65 + .../help/en/html/addressbook/labels.pl | 13 + .../help/en/html/addressbook/list_ogroup.png | Bin 0 -> 728 bytes .../help/en/html/addressbook/mailto.png | Bin 0 -> 692 bytes .../help/en/html/addressbook/node1.html | 169 + .../help/en/html/addressbook/node2.html | 67 + .../help/en/html/addressbook/node3.html | 59 + .../help/en/html/addressbook/node4.html | 53 + .../help/en/html/addressbook/node5.html | 66 + .../help/en/html/addressbook/node6.html | 51 + .../help/en/html/addressbook/rocket.png | Bin 0 -> 828 bytes .../help/en/html/addressbook/save.png | Bin 0 -> 595 bytes .../help/en/html/addressbook/search.png | Bin 0 -> 1023 bytes .../help/en/lyx-source/addressbook.lyx | 726 + .../help/en/lyx-source/images/action.png | Bin 0 -> 397 bytes .../help/en/lyx-source/images/closedlock.png | Bin 0 -> 750 bytes .../help/en/lyx-source/images/dtree.png | Bin 0 -> 694 bytes .../help/en/lyx-source/images/editpaste.png | Bin 0 -> 990 bytes .../help/en/lyx-source/images/list_ogroup.png | Bin 0 -> 728 bytes .../help/en/lyx-source/images/mailto.png | Bin 0 -> 692 bytes .../help/en/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../help/en/lyx-source/images/save.png | Bin 0 -> 595 bytes .../help/en/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../help/es/lyx-source/addressbook.lyx | 680 + .../help/es/lyx-source/images/action.png | Bin 0 -> 397 bytes .../help/es/lyx-source/images/closedlock.png | Bin 0 -> 750 bytes .../help/es/lyx-source/images/dtree.png | Bin 0 -> 694 bytes .../help/es/lyx-source/images/editpaste.png | Bin 0 -> 990 bytes .../help/es/lyx-source/images/list_ogroup.png | Bin 0 -> 728 bytes .../help/es/lyx-source/images/mailto.png | Bin 0 -> 635 bytes .../help/es/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../help/es/lyx-source/images/save.png | Bin 0 -> 595 bytes .../help/es/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../help/fr/lyx-source/addressbook.lyx | 675 + .../help/fr/lyx-source/images/action.png | Bin 0 -> 397 bytes .../help/fr/lyx-source/images/closedlock.png | Bin 0 -> 750 bytes .../help/fr/lyx-source/images/dtree.png | Bin 0 -> 694 bytes .../help/fr/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../help/fr/lyx-source/images/editdelete.png | Bin 0 -> 892 bytes .../help/fr/lyx-source/images/editpaste.png | Bin 0 -> 990 bytes .../help/fr/lyx-source/images/list_ogroup.png | Bin 0 -> 728 bytes .../help/fr/lyx-source/images/mailto.png | Bin 0 -> 635 bytes .../help/fr/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../help/fr/lyx-source/images/save.png | Bin 0 -> 595 bytes .../help/fr/lyx-source/images/search.png | Bin 0 -> 1023 bytes trunk/gosa-plugins/addressbook/help/guide.xml | 1 + .../addressbook/html/getvcard.php | 170 + .../addressbook/html/images/addr_company.png | Bin 0 -> 1818 bytes .../addressbook/html/images/addr_home.png | Bin 0 -> 1381 bytes .../addressbook/html/images/addr_personal.png | Bin 0 -> 1372 bytes .../addressbook/html/images/objects.png | Bin 0 -> 728 bytes .../addressbook/html/images/phone.png | Bin 0 -> 3721 bytes .../addressbook/html/images/plugin.png | Bin 0 -> 3966 bytes .../locale/de/LC_MESSAGES/messages.po | 422 + .../locale/es/LC_MESSAGES/messages.po | 459 + .../locale/fr/LC_MESSAGES/messages.po | 419 + .../locale/it/LC_MESSAGES/messages.po | 454 + .../addressbook/locale/messages.po | 406 + .../locale/nl/LC_MESSAGES/messages.po | 424 + .../locale/pl/LC_MESSAGES/messages.po | 476 + .../locale/ru/LC_MESSAGES/messages.po | 489 + .../locale/zh/LC_MESSAGES/messages.po | 477 + trunk/gosa-plugins/addressbook/plugin.dsc | 6 + .../services/apache2/class_apacheUtils.inc | 253 + .../apache2/class_servApacheEditVhost.inc | 448 + .../apache2/class_servApacheVhost.inc | 311 + .../services/apache2/servApacheVhost.tpl | 27 + .../services/apache2/servApacheVhostEdit.tpl | 120 + .../apache2/contrib/mod_vhost_ldap.ldif | 11 + .../apache2/contrib/mod_vhost_ldap.schema | 68 + trunk/gosa-plugins/apache2/help/guide.xml | 0 .../apache2/locale/fr/LC_MESSAGES/messages.po | 148 + trunk/gosa-plugins/apache2/locale/messages.po | 144 + trunk/gosa-plugins/apache2/plugin.dsc | 7 + .../gosa-plugins/connectivity/help/guide.xml | 0 .../connectivity/html/images/plugin.png | Bin 0 -> 3972 bytes .../locale/de/LC_MESSAGES/messages.po | 61 + .../locale/es/LC_MESSAGES/messages.po | 82 + .../locale/fr/LC_MESSAGES/messages.po | 54 + .../locale/it/LC_MESSAGES/messages.po | 81 + .../connectivity/locale/messages.po | 56 + .../locale/nl/LC_MESSAGES/messages.po | 59 + .../locale/pl/LC_MESSAGES/messages.po | 78 + .../locale/ru/LC_MESSAGES/messages.po | 78 + .../locale/zh/LC_MESSAGES/messages.po | 83 + .../connectivity/class_connectivity.inc | 287 + .../connectivity/class_intranetAccount.inc | 268 + .../personal/connectivity/intranet.tpl | 6 + .../personal/connectivity/main.inc | 137 + trunk/gosa-plugins/connectivity/plugin.dsc | 6 + .../gosa-plugins/dak/addons/dak/class_DAK.inc | 121 + .../dak/addons/dak/class_dakkeyring.inc | 290 + .../dak/addons/dak/class_dakplug.inc | 31 + .../dak/addons/dak/class_dakqueue.inc | 71 + .../dak/addons/dak/class_dakrepository.inc | 57 + .../dak/addons/dak/dak_keyring.tpl | 33 + .../gosa-plugins/dak/addons/dak/dak_queue.tpl | 20 + .../dak/addons/dak/dak_repository.tpl | 1 + trunk/gosa-plugins/dak/addons/dak/main.inc | 51 + .../gosa-plugins/dak/addons/dak/tabs_dak.inc | 11 + .../dak/html/images/down-arrow.png | Bin 0 -> 164 bytes .../dak/html/images/forward-arrow.png | Bin 0 -> 162 bytes trunk/gosa-plugins/dak/html/images/plugin.png | Bin 0 -> 1591 bytes .../dak/locale/de/LC_MESSAGES/messages.po | 118 + .../dak/locale/es/LC_MESSAGES/messages.po | 254 + .../dak/locale/fr/LC_MESSAGES/messages.po | 111 + .../dak/locale/it/LC_MESSAGES/messages.po | 363 + trunk/gosa-plugins/dak/locale/messages.po | 113 + .../dak/locale/nl/LC_MESSAGES/messages.po | 444 + .../dak/locale/pl/LC_MESSAGES/messages.po | 432 + .../dak/locale/ru/LC_MESSAGES/messages.po | 443 + .../dak/locale/zh/LC_MESSAGES/messages.po | 433 + trunk/gosa-plugins/dak/plugin.dsc | 7 + .../dfs/addons/godfs/class_dfsManagment.inc | 262 + .../dfs/addons/godfs/class_dfsgeneric.inc | 205 + .../dfs/addons/godfs/contents.tpl | 54 + .../gosa-plugins/dfs/addons/godfs/generic.tpl | 52 + trunk/gosa-plugins/dfs/addons/godfs/main.inc | 50 + .../dfs/addons/godfs/tabs_dfs.inc | 39 + trunk/gosa-plugins/dfs/help/guide.xml | 0 trunk/gosa-plugins/dfs/html/images/dfs.png | Bin 0 -> 3646 bytes trunk/gosa-plugins/dfs/html/images/dtree.png | Bin 0 -> 694 bytes .../gosa-plugins/dfs/html/images/location.png | Bin 0 -> 713 bytes .../dfs/locale/de/LC_MESSAGES/messages.po | 137 + .../dfs/locale/es/LC_MESSAGES/messages.po | 134 + .../dfs/locale/fr/LC_MESSAGES/messages.po | 130 + .../dfs/locale/it/LC_MESSAGES/messages.po | 183 + trunk/gosa-plugins/dfs/locale/messages.po | 129 + .../dfs/locale/nl/LC_MESSAGES/messages.po | 135 + .../dfs/locale/pl/LC_MESSAGES/messages.po | 162 + .../dfs/locale/ru/LC_MESSAGES/messages.po | 184 + .../dfs/locale/zh/LC_MESSAGES/messages.po | 167 + trunk/gosa-plugins/dfs/plugin.dsc | 6 + .../services/dhcp/class_dhcpAdvanced.inc | 152 + .../systems/services/dhcp/class_dhcpGroup.inc | 132 + .../systems/services/dhcp/class_dhcpHost.inc | 187 + .../services/dhcp/class_dhcpNetwork.inc | 233 + .../dhcp/class_dhcpNewSectionDialog.inc | 80 + .../services/dhcp/class_dhcpPlugin.inc | 218 + .../systems/services/dhcp/class_dhcpPool.inc | 198 + .../services/dhcp/class_dhcpService.inc | 188 + .../services/dhcp/class_dhcpSharedNetwork.inc | 213 + .../services/dhcp/class_dhcpSubnet.inc | 216 + .../systems/services/dhcp/class_servDHCP.inc | 747 + .../systems/services/dhcp/dhcpNewSection.tpl | 25 + .../systems/services/dhcp/dhcp_advanced.tpl | 62 + .../systems/services/dhcp/dhcp_group.tpl | 24 + .../admin/systems/services/dhcp/dhcp_host.tpl | 60 + .../systems/services/dhcp/dhcp_network.tpl | 114 + .../admin/systems/services/dhcp/dhcp_pool.tpl | 32 + .../systems/services/dhcp/dhcp_service.tpl | 51 + .../services/dhcp/dhcp_sharedNetwork.tpl | 125 + .../systems/services/dhcp/dhcp_subnet.tpl | 58 + .../systems/services/dhcp/remove_dhcp.tpl | 17 + .../admin/systems/services/dhcp/servdhcp.tpl | 35 + trunk/gosa-plugins/dhcp/contrib/dhcp.ldif | 75 + trunk/gosa-plugins/dhcp/contrib/dhcp.schema | 462 + trunk/gosa-plugins/dhcp/help/guide.xml | 0 .../dhcp/locale/de/LC_MESSAGES/messages.po | 562 + .../dhcp/locale/es/LC_MESSAGES/messages.po | 700 + .../dhcp/locale/fr/LC_MESSAGES/messages.po | 554 + .../dhcp/locale/it/LC_MESSAGES/messages.po | 694 + trunk/gosa-plugins/dhcp/locale/messages.po | 536 + .../dhcp/locale/nl/LC_MESSAGES/messages.po | 569 + .../dhcp/locale/pl/LC_MESSAGES/messages.po | 709 + .../dhcp/locale/ru/LC_MESSAGES/messages.po | 709 + .../dhcp/locale/zh/LC_MESSAGES/messages.po | 710 + trunk/gosa-plugins/dhcp/plugin.dsc | 7 + .../admin/systems/services/dns/class_DNS.inc | 699 + .../systems/services/dns/class_servDNS.inc | 610 + .../services/dns/class_servDNSeditZone.inc | 602 + .../dns/class_servDNSeditZoneEntries.inc | 510 + .../services/dns/servDNSeditZoneEntries.tpl | 32 + .../admin/systems/services/dns/servdns.tpl | 63 + .../systems/services/dns/servdnseditzone.tpl | 182 + trunk/gosa-plugins/dns/contrib/dnszone.ldif | 28 + trunk/gosa-plugins/dns/contrib/dnszone.schema | 155 + trunk/gosa-plugins/dns/help/guide.xml | 0 .../dns/locale/de/LC_MESSAGES/messages.po | 383 + .../dns/locale/es/LC_MESSAGES/messages.po | 489 + .../dns/locale/fr/LC_MESSAGES/messages.po | 370 + .../dns/locale/it/LC_MESSAGES/messages.po | 455 + trunk/gosa-plugins/dns/locale/messages.po | 350 + .../dns/locale/nl/LC_MESSAGES/messages.po | 480 + .../dns/locale/pl/LC_MESSAGES/messages.po | 467 + .../dns/locale/ru/LC_MESSAGES/messages.po | 466 + .../dns/locale/zh/LC_MESSAGES/messages.po | 485 + trunk/gosa-plugins/dns/plugin.dsc | 7 + .../fai/admin/fai/askClassName.tpl | 89 + .../fai/admin/fai/branch_selector.tpl | 42 + .../gosa-plugins/fai/admin/fai/class_FAI.inc | 1242 + .../fai/admin/fai/class_askClassName.inc | 166 + .../fai/admin/fai/class_debconfTemplate.inc | 374 + .../fai/admin/fai/class_divListFai.inc | 362 + .../fai/admin/fai/class_faiGroupHandle.inc | 127 + .../fai/admin/fai/class_faiHook.inc | 596 + .../fai/admin/fai/class_faiHookEntry.inc | 205 + .../fai/admin/fai/class_faiManagement.inc | 1423 + .../fai/admin/fai/class_faiPackage.inc | 723 + .../fai/class_faiPackageConfiguration.inc | 106 + .../fai/admin/fai/class_faiPackageEntry.inc | 211 + .../fai/admin/fai/class_faiPartitionTable.inc | 615 + .../fai/class_faiPartitionTableEntry.inc | 486 + .../fai/admin/fai/class_faiProfile.inc | 514 + .../fai/admin/fai/class_faiProfileEntry.inc | 273 + .../fai/admin/fai/class_faiScript.inc | 652 + .../fai/admin/fai/class_faiScriptEntry.inc | 199 + .../fai/admin/fai/class_faiSummaryTab.inc | 589 + .../fai/admin/fai/class_faiTemplate.inc | 579 + .../fai/admin/fai/class_faiTemplateEntry.inc | 284 + .../fai/admin/fai/class_faiVariable.inc | 463 + .../fai/admin/fai/class_faiVariableEntry.inc | 146 + .../fai/admin/fai/faiGroupHandle.tpl | 108 + trunk/gosa-plugins/fai/admin/fai/faiHook.tpl | 63 + .../fai/admin/fai/faiHookEntry.tpl | 96 + .../fai/admin/fai/faiNewBranch.tpl | 55 + .../gosa-plugins/fai/admin/fai/faiPackage.tpl | 87 + .../fai/admin/fai/faiPackageConfiguration.tpl | 9 + .../fai/admin/fai/faiPackageEntry.tpl | 63 + .../fai/admin/fai/faiPartitionTable.tpl | 73 + .../fai/admin/fai/faiPartitionTableEntry.tpl | 50 + .../gosa-plugins/fai/admin/fai/faiProfile.tpl | 58 + .../fai/admin/fai/faiProfileEntry.tpl | 73 + .../gosa-plugins/fai/admin/fai/faiScript.tpl | 63 + .../fai/admin/fai/faiScriptEntry.tpl | 94 + .../gosa-plugins/fai/admin/fai/faiSummary.tpl | 27 + .../fai/admin/fai/faiTemplate.tpl | 52 + .../fai/admin/fai/faiTemplateEntry.tpl | 205 + .../fai/admin/fai/faiVariable.tpl | 72 + .../fai/admin/fai/faiVariableEntry.tpl | 66 + trunk/gosa-plugins/fai/admin/fai/main.inc | 62 + .../fai/admin/fai/paste_generic.tpl | 11 + trunk/gosa-plugins/fai/admin/fai/remove.tpl | 24 + .../fai/admin/fai/remove_branch.tpl | 18 + trunk/gosa-plugins/fai/admin/fai/tabsHook.inc | 44 + .../fai/admin/fai/tabsPackage.inc | 45 + .../fai/admin/fai/tabsPartition.inc | 46 + .../fai/admin/fai/tabsProfile.inc | 45 + .../gosa-plugins/fai/admin/fai/tabsScript.inc | 45 + .../fai/admin/fai/tabsTemplate.inc | 45 + .../fai/admin/fai/tabsVariable.inc | 45 + .../repository/class_divListRepositories.inc | 84 + .../repository/class_servRepository.inc | 366 + .../repository/class_servRepositorySetup.inc | 226 + .../services/repository/servRepository.tpl | 9 + .../repository/servRepositorySetup.tpl | 58 + trunk/gosa-plugins/fai/contrib/fai.ldif | 52 + trunk/gosa-plugins/fai/contrib/fai.schema | 474 + .../fai/help/de/lyx-source/fai.lyx | 2033 + .../fai/help/de/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../help/de/lyx-source/images/edittrash.png | Bin 0 -> 691 bytes .../de/lyx-source/images/fai_new_hook.png | Bin 0 -> 662 bytes .../de/lyx-source/images/fai_new_packages.png | Bin 0 -> 743 bytes .../images/fai_new_partitionTable.png | Bin 0 -> 809 bytes .../de/lyx-source/images/fai_new_profile.png | Bin 0 -> 903 bytes .../de/lyx-source/images/fai_new_script.png | Bin 0 -> 658 bytes .../de/lyx-source/images/fai_new_template.png | Bin 0 -> 630 bytes .../de/lyx-source/images/fai_new_variable.png | Bin 0 -> 410 bytes .../help/de/lyx-source/images/fai_profile.png | Bin 0 -> 1094 bytes .../help/de/lyx-source/images/list_back.png | Bin 0 -> 862 bytes .../help/de/lyx-source/images/list_home.png | Bin 0 -> 865 bytes .../help/de/lyx-source/images/list_reload.png | Bin 0 -> 910 bytes .../help/de/lyx-source/images/list_root.png | Bin 0 -> 852 bytes .../fai/help/de/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../fai/help/de/lyx-source/images/search.png | Bin 0 -> 1023 bytes trunk/gosa-plugins/fai/help/guide.xml | 18 + trunk/gosa-plugins/fai/html/images/branch.png | Bin 0 -> 694 bytes .../fai/html/images/branch_small.png | Bin 0 -> 609 bytes .../fai/html/images/branch_small_grey.png | Bin 0 -> 370 bytes .../gosa-plugins/fai/html/images/fai_hook.png | Bin 0 -> 692 bytes .../fai/html/images/fai_new_hook.png | Bin 0 -> 662 bytes .../fai/html/images/fai_new_packages.png | Bin 0 -> 743 bytes .../html/images/fai_new_partitionTable.png | Bin 0 -> 809 bytes .../fai/html/images/fai_new_profile.png | Bin 0 -> 903 bytes .../fai/html/images/fai_new_script.png | Bin 0 -> 658 bytes .../fai/html/images/fai_new_template.png | Bin 0 -> 630 bytes .../fai/html/images/fai_new_variable.png | Bin 0 -> 410 bytes .../fai/html/images/fai_packages.png | Bin 0 -> 959 bytes .../fai/html/images/fai_partitionTable.png | Bin 0 -> 725 bytes .../fai/html/images/fai_profile.png | Bin 0 -> 1094 bytes .../fai/html/images/fai_script.png | Bin 0 -> 601 bytes .../fai/html/images/fai_small.png | Bin 0 -> 885 bytes .../fai/html/images/fai_template.png | Bin 0 -> 512 bytes .../fai/html/images/fai_variable.png | Bin 0 -> 429 bytes trunk/gosa-plugins/fai/html/images/freeze.png | Bin 0 -> 750 bytes .../fai/html/images/freeze_grey.png | Bin 0 -> 481 bytes .../fai/html/images/package_configure.png | Bin 0 -> 851 bytes trunk/gosa-plugins/fai/html/images/plugin.png | Bin 0 -> 5037 bytes .../fai/html/images/removal_mark.png | Bin 0 -> 745 bytes .../fai/html/images/repository.png | Bin 0 -> 894 bytes .../fai/locale/de/LC_MESSAGES/messages.po | 1500 + .../fai/locale/es/LC_MESSAGES/messages.po | 1840 + .../fai/locale/fr/LC_MESSAGES/messages.po | 1490 + .../fai/locale/it/LC_MESSAGES/messages.po | 2220 + trunk/gosa-plugins/fai/locale/messages.po | 1435 + .../fai/locale/nl/LC_MESSAGES/messages.po | 2275 + .../fai/locale/pl/LC_MESSAGES/messages.po | 2234 + .../fai/locale/ru/LC_MESSAGES/messages.po | 2325 + .../fai/locale/zh/LC_MESSAGES/messages.po | 2227 + trunk/gosa-plugins/fai/plugin.dsc | 7 + trunk/gosa-plugins/glpi/README.glpi | 13 + .../systems/services/glpi/class_glpi.inc | 1777 + .../services/glpi/class_glpiAccount.inc | 819 + .../glpi/class_glpiAttachmentPool.inc | 359 + .../glpi/class_glpiDeviceManagement.inc | 422 + .../services/glpi/class_glpiManufacturer.inc | 165 + .../glpi/class_glpiPrinterAccount.inc | 821 + .../glpi/class_glpiPrinterCartridges.inc | 293 + .../glpi/class_glpiPrinterCartridgesEdit.inc | 332 + .../services/glpi/class_glpiSelectUser.inc | 281 + .../services/glpi/class_goGlpiServer.inc | 109 + .../glpi/admin/systems/services/glpi/glpi.tpl | 138 + .../services/glpi/glpiAttachmentEdit.tpl | 78 + .../services/glpi/glpiAttachmentPool.tpl | 54 + .../services/glpi/glpiDeviceManagement.tpl | 54 + .../services/glpi/glpiManufacturer.tpl | 15 + .../services/glpi/glpiManufacturerAdd.tpl | 89 + .../systems/services/glpi/glpiPrinter.tpl | 159 + .../services/glpi/glpiPrinterCartridges.tpl | 54 + .../glpi/glpiPrinterCartridgesEdit.tpl | 83 + .../systems/services/glpi/glpiSelectUser.tpl | 53 + .../systems/services/glpi/glpi_devices.tpl | 763 + .../glpi/glpi_edit_cartridge_type.tpl | 21 + .../systems/services/glpi/glpi_edit_os.tpl | 39 + .../services/glpi/glpi_edit_printer_type.tpl | 40 + .../systems/services/glpi/glpi_edit_type.tpl | 37 + .../systems/services/glpi/goGlpiServer.tpl | 36 + .../systems/services/glpi/remove_glpi.tpl | 17 + trunk/gosa-plugins/glpi/contrib/glpi.ldif | 5 + trunk/gosa-plugins/glpi/contrib/glpi.schema | 21 + trunk/gosa-plugins/glpi/contrib/glpi.sql | 1627 + trunk/gosa-plugins/glpi/help/guide.xml | 0 .../glpi/html/images/crossref.png | Bin 0 -> 628 bytes .../gosa-plugins/glpi/html/images/drives.png | Bin 0 -> 950 bytes .../glpi/html/images/gfx_hardware.png | Bin 0 -> 819 bytes .../glpi/html/images/glpi_device.png | Bin 0 -> 512 bytes .../glpi/html/images/harddisk.png | Bin 0 -> 725 bytes .../glpi/html/images/hardware.png | Bin 0 -> 836 bytes .../glpi/html/images/mainboard.png | Bin 0 -> 782 bytes .../glpi/html/images/net_hardware.png | Bin 0 -> 828 bytes .../glpi/html/images/new_attachment.png | Bin 0 -> 630 bytes trunk/gosa-plugins/glpi/html/images/zip.png | Bin 0 -> 791 bytes .../glpi/locale/de/LC_MESSAGES/messages.po | 1205 + .../glpi/locale/es/LC_MESSAGES/messages.po | 1202 + .../glpi/locale/fr/LC_MESSAGES/messages.po | 1193 + .../glpi/locale/it/LC_MESSAGES/messages.po | 1265 + trunk/gosa-plugins/glpi/locale/messages.po | 1139 + .../glpi/locale/nl/LC_MESSAGES/messages.po | 1232 + .../glpi/locale/pl/LC_MESSAGES/messages.po | 1194 + .../glpi/locale/ru/LC_MESSAGES/messages.po | 1311 + .../glpi/locale/zh/LC_MESSAGES/messages.po | 1180 + trunk/gosa-plugins/glpi/plugin.dsc | 6 + .../services/gofax/class_goFaxServer.inc | 103 + .../systems/services/gofax/goFaxServer.tpl | 27 + trunk/gosa-plugins/gofax/contrib/gofax.sql | 24 + .../blocklists/class_blocklistGeneric.inc | 395 + .../blocklists/class_blocklistManagement.inc | 513 + .../blocklists/class_divListBlocklists.inc | 219 + .../gofax/gofax/blocklists/generic.tpl | 113 + .../gofax/gofax/blocklists/main.inc | 43 + .../gofax/gofax/blocklists/paste_generic.tpl | 8 + .../gofax/gofax/blocklists/remove.tpl | 24 + .../gofax/gofax/blocklists/tabs_blocklist.inc | 38 + .../gofax/faxaccount/class_gofaxAccount.inc | 984 + .../gofax/gofax/faxaccount/generic.tpl | 152 + .../gofax/gofax/faxaccount/lists.tpl | 35 + .../gofax/gofax/faxaccount/locals.tpl | 64 + .../gofax/gofax/faxaccount/main.inc | 118 + .../gofax/gofax/faxaccount/paste_generic.tpl | 31 + .../gofax/faxreports/class_faxreport.inc | 514 + .../gofax/gofax/faxreports/contents.tpl | 59 + .../gofax/gofax/faxreports/detail.tpl | 69 + .../gofax/gofax/faxreports/main.inc | 24 + trunk/gosa-plugins/gofax/help/guide.xml | 0 trunk/gosa-plugins/gofax/html/getfax.php | 150 + .../gofax/html/images/blocklists.png | Bin 0 -> 3935 bytes .../gofax/html/images/fax_small.png | Bin 0 -> 787 bytes .../gofax/html/images/list_blocklist.png | Bin 0 -> 671 bytes .../gofax/html/images/list_new_blocklist.png | Bin 0 -> 781 bytes .../gosa-plugins/gofax/html/images/plugin.png | Bin 0 -> 2637 bytes .../gofax/html/images/printer.png | Bin 0 -> 678 bytes .../gofax/html/images/reports.png | Bin 0 -> 1770 bytes .../gofax/locale/de/LC_MESSAGES/messages.po | 717 + .../gofax/locale/es/LC_MESSAGES/messages.po | 763 + .../gofax/locale/fr/LC_MESSAGES/messages.po | 694 + .../gofax/locale/it/LC_MESSAGES/messages.po | 855 + trunk/gosa-plugins/gofax/locale/messages.po | 682 + .../gofax/locale/nl/LC_MESSAGES/messages.po | 918 + .../gofax/locale/pl/LC_MESSAGES/messages.po | 890 + .../gofax/locale/ru/LC_MESSAGES/messages.po | 911 + .../gofax/locale/zh/LC_MESSAGES/messages.po | 906 + trunk/gosa-plugins/gofax/manifest | 6 + trunk/gosa-plugins/gofax/plugin.dsc | 7 + .../admin/ogroups/gofon/class_phonequeue.inc | 959 + .../gofon/admin/ogroups/gofon/phonequeue.tpl | 328 + .../systems/gofon/class_phoneGeneric.inc | 538 + .../admin/systems/gofon/paste_generic.tpl | 8 + .../gofon/admin/systems/gofon/phone.tpl | 57 + .../admin/systems/gofon/phonesettings.tpl | 260 + .../gofon/admin/systems/gofon/tabs_phone.inc | 41 + .../services/gofon/class_goFonServer.inc | 186 + .../systems/services/gofon/goFonServer.tpl | 43 + trunk/gosa-plugins/gofon/contrib/gofon.sql | 24 + .../conference/class_divListConferences.inc | 248 + .../class_phoneConferenceGeneric.inc | 802 + .../class_phoneConferenceManagment.inc | 583 + .../gofon/gofon/conference/generic.tpl | 251 + .../gofon/gofon/conference/headpage.tpl | 45 + .../gofon/gofon/conference/main.inc | 63 + .../gofon/gofon/conference/paste_generic.tpl | 23 + .../gofon/gofon/conference/remove.tpl | 24 + .../gofon/conference/tabs_conference.inc | 41 + .../gofon/fonreports/class_fonreport.inc | 420 + .../gofon/gofon/fonreports/contents.tpl | 59 + .../gofon/gofon/fonreports/main.inc | 27 + .../gofon/gofon/macro/class_divListMacros.inc | 225 + .../gofon/gofon/macro/class_gofonMacro.inc | 583 + .../macro/class_gofonMacroManagement.inc | 605 + .../macro/class_gofonMacroParameters.inc | 414 + .../gofon/gofon/macro/generic.tpl | 83 + .../gofon/gofon/macro/headpage.tpl | 51 + trunk/gosa-plugins/gofon/gofon/macro/main.inc | 68 + .../gofon/gofon/macro/parameter.tpl | 28 + .../gofon/gofon/macro/paste_generic.tpl | 9 + .../gosa-plugins/gofon/gofon/macro/remove.tpl | 23 + .../gofon/gofon/macro/tabs_macros.inc | 40 + .../gofon/phoneaccount/class_phoneAccount.inc | 1769 + .../gofon/gofon/phoneaccount/generic.tpl | 156 + .../gofon/gofon/phoneaccount/main.inc | 136 + .../gofon/phoneaccount/paste_generic.tpl | 55 + trunk/gosa-plugins/gofon/help/guide.xml | 0 .../gosa-plugins/gofon/html/images/banana.png | Bin 0 -> 784 bytes .../gofon/html/images/conference.png | Bin 0 -> 4471 bytes .../gofon/html/images/hardware.png | Bin 0 -> 836 bytes .../gofon/html/images/list_macro.png | Bin 0 -> 927 bytes .../gofon/html/images/list_new_conference.png | Bin 0 -> 904 bytes .../gofon/html/images/list_new_macro.png | Bin 0 -> 823 bytes .../gosa-plugins/gofon/html/images/macros.png | Bin 0 -> 4392 bytes .../gofon/html/images/options.png | Bin 0 -> 794 bytes .../gofon/html/images/phoneAccount.png | Bin 0 -> 3721 bytes .../gofon/html/images/phonereport.png | Bin 0 -> 1929 bytes trunk/gosa-plugins/gofon/html/images/pin.png | Bin 0 -> 693 bytes .../gofon/html/images/select_conference.png | Bin 0 -> 868 bytes .../gofon/html/images/select_macro.png | Bin 0 -> 927 bytes .../gofon/html/images/select_phone.png | Bin 0 -> 784 bytes .../gosa-plugins/gofon/html/images/sound.png | Bin 0 -> 898 bytes .../gofon/locale/de/LC_MESSAGES/messages.po | 1554 + .../gofon/locale/es/LC_MESSAGES/messages.po | 1638 + .../gofon/locale/fr/LC_MESSAGES/messages.po | 1528 + .../gofon/locale/it/LC_MESSAGES/messages.po | 1878 + trunk/gosa-plugins/gofon/locale/messages.po | 1476 + .../gofon/locale/nl/LC_MESSAGES/messages.po | 2096 + .../gofon/locale/pl/LC_MESSAGES/messages.po | 2036 + .../gofon/locale/ru/LC_MESSAGES/messages.po | 1985 + .../gofon/locale/zh/LC_MESSAGES/messages.po | 2070 + trunk/gosa-plugins/gofon/plugin.dsc | 7 + .../goto/addons/goto/class_gotoLogView.inc | 215 + .../addons/goto/class_goto_import_file.inc | 179 + .../goto/addons/goto/class_gotomasses.inc | 922 + .../goto/addons/goto/class_target_list.inc | 334 + .../goto/events/DaemonEvent_activate.tpl | 63 + .../goto/events/DaemonEvent_faireboot.tpl | 63 + .../goto/events/DaemonEvent_goto_reload.tpl | 63 + .../addons/goto/events/DaemonEvent_halt.tpl | 63 + .../DaemonEvent_installation_activation.tpl | 63 + .../goto/events/DaemonEvent_localboot.tpl | 63 + .../addons/goto/events/DaemonEvent_lock.tpl | 63 + .../goto/events/DaemonEvent_memcheck.tpl | 63 + .../addons/goto/events/DaemonEvent_notify.tpl | 93 + .../addons/goto/events/DaemonEvent_reboot.tpl | 63 + .../goto/events/DaemonEvent_reinstall.tpl | 67 + .../events/DaemonEvent_reload_ldap_config.tpl | 63 + .../addons/goto/events/DaemonEvent_rescan.tpl | 63 + .../goto/events/DaemonEvent_sysinfo.tpl | 63 + .../addons/goto/events/DaemonEvent_update.tpl | 63 + .../addons/goto/events/DaemonEvent_wakeup.tpl | 63 + .../addons/goto/events/class_DaemonEvent.inc | 515 + .../events/class_DaemonEvent_activate.inc | 67 + .../events/class_DaemonEvent_activate_new.inc | 79 + .../events/class_DaemonEvent_faireboot.inc | 66 + .../events/class_DaemonEvent_goto_reload.inc | 75 + .../goto/events/class_DaemonEvent_halt.inc | 69 + ...ss_DaemonEvent_installation_activation.inc | 66 + .../events/class_DaemonEvent_localboot.inc | 66 + .../goto/events/class_DaemonEvent_lock.inc | 67 + .../events/class_DaemonEvent_memcheck.inc | 66 + .../goto/events/class_DaemonEvent_notify.inc | 211 + .../goto/events/class_DaemonEvent_reboot.inc | 67 + ...ss_DaemonEvent_recreate_fai_release_db.inc | 51 + ...ass_DaemonEvent_recreate_fai_server_db.inc | 51 + .../events/class_DaemonEvent_reinstall.inc | 76 + .../class_DaemonEvent_reload_ldap_config.inc | 66 + .../goto/events/class_DaemonEvent_rescan.inc | 66 + .../goto/events/class_DaemonEvent_sysinfo.inc | 66 + .../goto/events/class_DaemonEvent_update.inc | 67 + .../goto/events/class_DaemonEvent_wakeup.inc | 67 + .../goto/events/class_EventTargetAddList.inc | 288 + .../events/class_EventTargetAddUsersList.inc | 220 + .../goto/addons/goto/events/target_list.tpl | 7 + .../addons/goto/events/timestamp_select.tpl | 45 + .../goto/addons/goto/goto_import_file.tpl | 87 + .../goto/addons/goto/gotomasses.tpl | 141 + .../goto/addons/goto/log_view.tpl | 29 + trunk/gosa-plugins/goto/addons/goto/main.inc | 70 + .../gosa-plugins/goto/addons/goto/remove.tpl | 20 + .../applications/class_applicationGeneric.inc | 623 + .../class_applicationManagement.inc | 761 + .../class_applicationParameters.inc | 252 + .../applications/class_divListApplication.inc | 266 + .../goto/admin/applications/generic.tpl | 156 + .../goto/admin/applications/main.inc | 63 + .../goto/admin/applications/parameters.tpl | 2 + .../admin/applications/release_select.tpl | 16 + .../goto/admin/applications/remove.tpl | 23 + .../admin/applications/tabs_application.inc | 54 + .../admin/devices/class_deviceGeneric.inc | 273 + .../admin/devices/class_deviceManagement.inc | 599 + .../admin/devices/class_divListDevices.inc | 229 + .../goto/admin/devices/deviceGeneric.tpl | 89 + .../gosa-plugins/goto/admin/devices/main.inc | 64 + .../admin/devices/paste_deviceGeneric.tpl | 25 + .../goto/admin/devices/remove.tpl | 23 + .../goto/admin/devices/tabs_devices.inc | 38 + .../goto/admin/groups/apps/app_list.tpl | 163 + .../groups/apps/class_groupApplication.inc | 1447 + .../goto/admin/groups/apps/edit_entry.tpl | 70 + .../mimetypes/class_divListMimeTypes.inc | 267 + .../admin/mimetypes/class_mimetypeGeneric.inc | 776 + .../mimetypes/class_mimetypeManagement.inc | 773 + .../goto/admin/mimetypes/generic.tpl | 204 + .../goto/admin/mimetypes/main.inc | 63 + .../goto/admin/mimetypes/paste_generic.tpl | 31 + .../goto/admin/mimetypes/release_select.tpl | 16 + .../goto/admin/mimetypes/remove.tpl | 23 + .../goto/admin/mimetypes/tabs_mimetypes.inc | 54 + .../admin/ogroups/goto/class_termgroup.inc | 417 + .../goto/admin/ogroups/goto/termgroup.tpl | 132 + .../goto/admin/systems/goto/ArpNewDevice.tpl | 31 + .../admin/systems/goto/SelectDeviceType.tpl | 53 + .../goto/admin/systems/goto/chooser.tpl | 21 + .../admin/systems/goto/class_ArpNewDevice.inc | 75 + .../systems/goto/class_SelectDeviceType.inc | 102 + .../systems/goto/class_gotoLpdEnabled.inc | 304 + .../admin/systems/goto/class_printGeneric.inc | 1069 + .../goto/class_selectUserToPrinterDialog.inc | 207 + .../systems/goto/class_terminalGeneric.inc | 710 + .../admin/systems/goto/class_terminalInfo.inc | 264 + .../systems/goto/class_terminalService.inc | 711 + .../systems/goto/class_terminalStartup.inc | 554 + .../systems/goto/class_workstationGeneric.inc | 753 + .../systems/goto/class_workstationService.inc | 575 + .../systems/goto/class_workstationStartup.inc | 1326 + .../goto/admin/systems/goto/gencd.tpl | 20 + .../goto/admin/systems/goto/gencd_frame.tpl | 3 + .../goto/admin/systems/goto/gotoLpdEnable.tpl | 145 + .../goto/admin/systems/goto/info.tpl | 140 + .../goto/admin/systems/goto/printer.tpl | 150 + .../goto/selectUserToPrinterDialog.tpl | 70 + .../goto/admin/systems/goto/tabs_printers.inc | 92 + .../goto/admin/systems/goto/tabs_terminal.inc | 112 + .../admin/systems/goto/tabs_workstation.inc | 112 + .../goto/admin/systems/goto/terminal.tpl | 190 + .../admin/systems/goto/terminalService.tpl | 252 + .../admin/systems/goto/terminalStartup.tpl | 130 + .../goto/admin/systems/goto/workstation.tpl | 179 + .../admin/systems/goto/workstationService.tpl | 223 + .../admin/systems/goto/workstationStartup.tpl | 247 + .../admin/systems/ppd/class_ppdManager.inc | 361 + .../systems/ppd/class_printerPPDDialog.inc | 577 + .../ppd/class_printerPPDSelectionDialog.inc | 196 + .../admin/systems/ppd/printerPPDDialog.tpl | 40 + .../systems/ppd/printerPPDSelectionDialog.tpl | 48 + .../goto/admin/systems/ppd/remove_ppd.tpl | 15 + .../services/cups/class_goCupsServer.inc | 85 + .../systems/services/cups/goCupsServer.tpl | 9 + .../services/kiosk/class_goKioskService.inc | 282 + .../systems/services/kiosk/goKioskService.tpl | 42 + .../services/ldap/class_goLdapServer.inc | 142 + .../systems/services/ldap/goLdapServer.tpl | 13 + .../systems/services/nfs/class_servNfs.inc | 272 + .../admin/systems/services/nfs/servnfs.tpl | 144 + .../services/ntp/class_goNtpServer.inc | 149 + .../systems/services/ntp/goNtpServer.tpl | 32 + .../services/shares/class_goShareServer.inc | 413 + .../systems/services/shares/goShareServer.tpl | 33 + .../services/syslog/class_goLogDBServer.inc | 111 + .../services/syslog/class_goSyslogServer.inc | 83 + .../systems/services/syslog/goLogDBServer.tpl | 35 + .../services/syslog/goSyslogServer.tpl | 9 + .../terminal/class_goTerminalServer.inc | 180 + .../services/terminal/goTerminalServer.tpl | 28 + trunk/gosa-plugins/goto/contrib/resolutions | 4 + trunk/gosa-plugins/goto/help/guide.xml | 0 .../goto/html/images/application.png | Bin 0 -> 3839 bytes .../gosa-plugins/goto/html/images/branch.png | Bin 0 -> 694 bytes trunk/gosa-plugins/goto/html/images/clock.png | Bin 0 -> 875 bytes .../goto/html/images/default_icon.png | Bin 0 -> 1957 bytes .../gosa-plugins/goto/html/images/devices.png | Bin 0 -> 2631 bytes .../gosa-plugins/goto/html/images/display.png | Bin 0 -> 733 bytes .../goto/html/images/edit_share.png | Bin 0 -> 725 bytes .../goto/html/images/fai_settings.png | Bin 0 -> 1094 bytes .../gosa-plugins/goto/html/images/freeze.png | Bin 0 -> 750 bytes trunk/gosa-plugins/goto/html/images/goto.png | Bin 0 -> 2517 bytes .../goto/html/images/hardware.png | Bin 0 -> 836 bytes .../gosa-plugins/goto/html/images/hotplug.png | Bin 0 -> 861 bytes .../goto/html/images/keyboard.png | Bin 0 -> 343 bytes trunk/gosa-plugins/goto/html/images/kiosk.png | Bin 0 -> 713 bytes .../goto/html/images/list_mime.png | Bin 0 -> 851 bytes .../goto/html/images/list_new_app.png | Bin 0 -> 794 bytes .../goto/html/images/list_new_device.png | Bin 0 -> 642 bytes .../goto/html/images/list_new_mime.png | Bin 0 -> 698 bytes .../goto/html/images/list_reset_password.png | Bin 0 -> 820 bytes .../goto/html/images/localboot.png | Bin 0 -> 817 bytes .../goto/html/images/logon_script.png | Bin 0 -> 601 bytes .../goto/html/images/memcheck.png | Bin 0 -> 931 bytes .../goto/html/images/mime_embedding.png | Bin 0 -> 692 bytes .../goto/html/images/mime_leftclick.png | Bin 0 -> 946 bytes .../goto/html/images/mimetypes.png | Bin 0 -> 2694 bytes trunk/gosa-plugins/goto/html/images/mouse.png | Bin 0 -> 751 bytes .../gosa-plugins/goto/html/images/notify.png | Bin 0 -> 635 bytes .../gosa-plugins/goto/html/images/plugin.png | Bin 0 -> 3242 bytes .../goto/html/images/prio_decrease.png | Bin 0 -> 406 bytes .../goto/html/images/prio_increase.png | Bin 0 -> 412 bytes .../goto/html/images/reinstall.png | Bin 0 -> 885 bytes .../gosa-plugins/goto/html/images/rescan.png | Bin 0 -> 803 bytes .../gosa-plugins/goto/html/images/scanner.png | Bin 0 -> 809 bytes .../goto/html/images/select_application.png | Bin 0 -> 959 bytes .../goto/html/images/select_device.png | Bin 0 -> 861 bytes .../goto/html/images/select_mimetype.png | Bin 0 -> 851 bytes .../gosa-plugins/goto/html/images/sysinfo.png | Bin 0 -> 836 bytes .../gosa-plugins/goto/html/images/update.png | Bin 0 -> 1049 bytes .../goto/html/images/view_logs.png | Bin 0 -> 692 bytes .../goto/locale/de/LC_MESSAGES/messages.po | 3879 + .../goto/locale/es/LC_MESSAGES/messages.po | 5953 ++ .../goto/locale/fr/LC_MESSAGES/messages.po | 3860 + .../goto/locale/it/LC_MESSAGES/messages.po | 6826 ++ trunk/gosa-plugins/goto/locale/messages.po | 3776 + .../goto/locale/nl/LC_MESSAGES/messages.po | 7458 ++ .../goto/locale/pl/LC_MESSAGES/messages.po | 7389 ++ .../goto/locale/ru/LC_MESSAGES/messages.po | 7339 ++ .../goto/locale/zh/LC_MESSAGES/messages.po | 7183 ++ .../environment/class_environment.inc | 1793 + .../environment/class_hotplugDialog.inc | 119 + .../class_logonManagementDialog.inc | 134 + .../environment/class_selectPrinterDialog.inc | 159 + .../goto/personal/environment/environment.tpl | 416 + .../personal/environment/hotplugDialog.tpl | 70 + .../personal/environment/logonManagement.tpl | 84 + .../goto/personal/environment/main.inc | 139 + .../environment/selectPrinterDialog.tpl | 72 + trunk/gosa-plugins/goto/plugin.dsc | 7 + .../services/kerberos/class_goKrbServer.inc | 399 + .../class_password-methods-heimdal.inc | 420 + .../systems/services/kerberos/goKrbServer.tpl | 37 + .../systems/services/kerberos/pwd_heimdal.tpl | 201 + trunk/gosa-plugins/heimdal/contrib/hdb.ldif | 18 + trunk/gosa-plugins/heimdal/contrib/hdb.schema | 139 + trunk/gosa-plugins/heimdal/help/guide.xml | 0 .../heimdal/locale/de/LC_MESSAGES/messages.po | 189 + .../heimdal/locale/es/LC_MESSAGES/messages.po | 212 + .../heimdal/locale/fr/LC_MESSAGES/messages.po | 177 + .../heimdal/locale/it/LC_MESSAGES/messages.po | 218 + trunk/gosa-plugins/heimdal/locale/messages.po | 175 + .../heimdal/locale/nl/LC_MESSAGES/messages.po | 224 + .../heimdal/locale/pl/LC_MESSAGES/messages.po | 214 + .../heimdal/locale/ru/LC_MESSAGES/messages.po | 221 + .../heimdal/locale/zh/LC_MESSAGES/messages.po | 220 + trunk/gosa-plugins/heimdal/plugin.dsc | 8 + .../services/kolab/class_servKolab.inc | 467 + .../systems/services/kolab/servkolab.tpl | 253 + trunk/gosa-plugins/kolab/contrib/kolab2.ldif | 61 + .../gosa-plugins/kolab/contrib/kolab2.schema | 680 + trunk/gosa-plugins/kolab/contrib/rfc2739.ldif | 12 + .../gosa-plugins/kolab/contrib/rfc2739.schema | 134 + trunk/gosa-plugins/kolab/help/guide.xml | 0 .../kolab/locale/de/LC_MESSAGES/messages.po | 428 + .../kolab/locale/es/LC_MESSAGES/messages.po | 487 + .../kolab/locale/fr/LC_MESSAGES/messages.po | 427 + .../kolab/locale/it/LC_MESSAGES/messages.po | 468 + trunk/gosa-plugins/kolab/locale/messages.po | 414 + .../kolab/locale/nl/LC_MESSAGES/messages.po | 508 + .../kolab/locale/pl/LC_MESSAGES/messages.po | 487 + .../kolab/locale/ru/LC_MESSAGES/messages.po | 490 + .../kolab/locale/zh/LC_MESSAGES/messages.po | 495 + .../connectivity/kolab/class_kolabAccount.inc | 675 + .../personal/connectivity/kolab/kolab.tpl | 134 + .../mail/kolab/class_mail-methods-kolab.inc | 287 + .../mail/kolab/class_mail-methods-kolab22.inc | 105 + trunk/gosa-plugins/kolab/plugin.dsc | 7 + .../addons/ldapmanager/class_csvimport.inc | 507 + .../addons/ldapmanager/class_export.inc | 125 + .../addons/ldapmanager/class_exportxls.inc | 136 + .../addons/ldapmanager/class_import.inc | 130 + .../addons/ldapmanager/class_ldif.inc | 53 + .../addons/ldapmanager/contentcsv.tpl | 118 + .../addons/ldapmanager/contentexport.tpl | 73 + .../addons/ldapmanager/contentexportxls.tpl | 76 + .../addons/ldapmanager/contentimport.tpl | 52 + .../ldapmanager/addons/ldapmanager/main.inc | 54 + .../addons/ldapmanager/tabs_ldif.inc | 24 + trunk/gosa-plugins/ldapmanager/help/guide.xml | 0 .../gosa-plugins/ldapmanager/html/getldif.php | 110 + .../gosa-plugins/ldapmanager/html/getxls.php | 519 + .../ldapmanager/html/images/ldif.png | Bin 0 -> 1411 bytes .../locale/de/LC_MESSAGES/messages.po | 551 + .../locale/es/LC_MESSAGES/messages.po | 557 + .../locale/fr/LC_MESSAGES/messages.po | 543 + .../locale/it/LC_MESSAGES/messages.po | 554 + .../ldapmanager/locale/messages.po | 524 + .../locale/nl/LC_MESSAGES/messages.po | 573 + .../locale/pl/LC_MESSAGES/messages.po | 564 + .../locale/ru/LC_MESSAGES/messages.po | 591 + .../locale/zh/LC_MESSAGES/messages.po | 564 + trunk/gosa-plugins/ldapmanager/plugin.dsc | 7 + .../log/addons/logview/class_gosa_logview.inc | 427 + .../log/addons/logview/class_logview.inc | 425 + .../log/addons/logview/contents.tpl | 105 + .../log/addons/logview/gosa_log_contents.tpl | 107 + .../gosa-plugins/log/addons/logview/main.inc | 54 + .../log/addons/logview/tabs_log.inc | 24 + .../services/log/class_gosaLogServer.inc | 108 + .../systems/services/log/gosaLogServer.tpl | 35 + trunk/gosa-plugins/log/contrib/goconfig.ldif | 7 + .../gosa-plugins/log/contrib/goconfig.schema | 43 + trunk/gosa-plugins/log/contrib/golog.sql | 14 + trunk/gosa-plugins/log/contrib/logging.sql | 41 + trunk/gosa-plugins/log/help/guide.xml | 0 .../log/html/images/log_warning.png | Bin 0 -> 829 bytes trunk/gosa-plugins/log/html/images/plugin.png | Bin 0 -> 2216 bytes trunk/gosa-plugins/log/html/images/time.png | Bin 0 -> 1049 bytes .../log/locale/de/LC_MESSAGES/messages.po | 242 + .../log/locale/es/LC_MESSAGES/messages.po | 255 + .../log/locale/fr/LC_MESSAGES/messages.po | 234 + .../log/locale/it/LC_MESSAGES/messages.po | 264 + trunk/gosa-plugins/log/locale/messages.po | 233 + .../log/locale/nl/LC_MESSAGES/messages.po | 267 + .../log/locale/pl/LC_MESSAGES/messages.po | 262 + .../log/locale/ru/LC_MESSAGES/messages.po | 263 + .../log/locale/zh/LC_MESSAGES/messages.po | 264 + trunk/gosa-plugins/log/plugin.dsc | 7 + .../mail/addons/mailqueue/class_mailqueue.inc | 370 + .../addons/mailqueue/class_si_mailqueue.inc | 146 + .../mail/addons/mailqueue/contents.tpl | 159 + .../mail/addons/mailqueue/header.tpl | 7 + .../mail/addons/mailqueue/main.inc | 61 + .../admin/groups/mail/class_groupMail.inc | 1304 + .../mail/admin/groups/mail/mail.tpl | 253 + .../mail/admin/groups/mail/mail_admins.tpl | 40 + .../mail/admin/groups/mail/mail_locals.tpl | 69 + .../mail/admin/groups/mail/paste_mail.tpl | 56 + .../admin/ogroups/mail/class_mailogroup.inc | 204 + .../mail/admin/ogroups/mail/mail.tpl | 27 + .../mail/admin/ogroups/mail/paste_mail.tpl | 14 + .../services/imap/class_goImapServer.inc | 229 + .../systems/services/imap/goImapServer.tpl | 120 + .../services/mail/class_goMailServer.inc | 724 + .../systems/services/mail/goMailServer.tpl | 225 + .../services/spam/class_goSpamServer.inc | 353 + .../services/spam/class_goSpamServerRule.inc | 61 + .../systems/services/spam/goSpamServer.tpl | 129 + .../services/spam/goSpamServerRule.tpl | 25 + .../services/virus/class_goVirusServer.inc | 250 + .../systems/services/virus/goVirusServer.tpl | 172 + trunk/gosa-plugins/mail/contrib/goAgent.pl | 225 + .../mail/contrib/sieve_vacation/IMAP/Sieve.pm | 401 + .../contrib/sieve_vacation/update-vacation.pl | 600 + .../mail/contrib/vacation_example.txt | 9 + trunk/gosa-plugins/mail/help/guide.xml | 0 .../mail/html/images/alternatemail.png | Bin 0 -> 893 bytes .../mail/html/images/envelope.png | Bin 0 -> 843 bytes .../mail/html/images/mailq_active.png | Bin 0 -> 574 bytes .../mail/html/images/mailq_header.png | Bin 0 -> 936 bytes .../mail/html/images/mailq_hold.png | Bin 0 -> 750 bytes .../mail/html/images/mailq_unhold.png | Bin 0 -> 829 bytes .../mail/html/images/mailqueue.png | Bin 0 -> 1559 bytes .../gosa-plugins/mail/html/images/plugin.png | Bin 0 -> 955 bytes .../mail/html/images/shared_folder.png | Bin 0 -> 868 bytes .../mail/html/images/sieve_add_new_bottom.png | Bin 0 -> 929 bytes .../mail/html/images/sieve_add_new_top.png | Bin 0 -> 930 bytes .../mail/html/images/sieve_add_test.png | Bin 0 -> 895 bytes .../mail/html/images/sieve_del_object.png | Bin 0 -> 691 bytes .../html/images/sieve_move_object_down.png | Bin 0 -> 694 bytes .../mail/html/images/sieve_move_object_up.png | Bin 0 -> 662 bytes .../mail/locale/de/LC_MESSAGES/messages.po | 2224 + .../mail/locale/es/LC_MESSAGES/messages.po | 2551 + .../mail/locale/fr/LC_MESSAGES/messages.po | 2231 + .../mail/locale/it/LC_MESSAGES/messages.po | 2697 + trunk/gosa-plugins/mail/locale/messages.po | 2188 + .../mail/locale/nl/LC_MESSAGES/messages.po | 2788 + .../mail/locale/pl/LC_MESSAGES/messages.po | 2729 + .../mail/locale/ru/LC_MESSAGES/messages.po | 2759 + .../mail/locale/zh/LC_MESSAGES/messages.po | 2728 + .../mail/class_mail-methods-cyrus.inc | 572 + .../class_mail-methods-sendmail-cyrus.inc | 58 + .../mail/personal/mail/class_mail-methods.inc | 803 + .../mail/personal/mail/class_mailAccount.inc | 1450 + .../mail/personal/mail/copypaste.tpl | 70 + .../mail/personal/mail/generic.tpl | 343 + .../mail/personal/mail/mail_locals.tpl | 81 + .../gosa-plugins/mail/personal/mail/main.inc | 143 + .../mail/personal/mail/sieve-discard.txt | 3 + .../mail/personal/mail/sieve-header.txt | 3 + .../mail/personal/mail/sieve-mailsize.txt | 17 + .../mail/personal/mail/sieve-spam.txt | 5 + .../mail/personal/mail/sieve-vacation.txt | 4 + .../personal/mail/sieve/class_My_Parser.inc | 78 + .../personal/mail/sieve/class_My_Scanner.inc | 69 + .../personal/mail/sieve/class_My_Tree.inc | 782 + .../mail/personal/mail/sieve/class_parser.inc | 365 + .../personal/mail/sieve/class_scanner.inc | 140 + .../personal/mail/sieve/class_semantics.inc | 613 + .../mail/personal/mail/sieve/class_sieve.inc | 632 + .../sieve/class_sieveElement_Block_End.inc | 32 + .../sieve/class_sieveElement_Block_Start.inc | 33 + .../mail/sieve/class_sieveElement_Comment.inc | 84 + .../mail/sieve/class_sieveElement_Discard.inc | 40 + .../sieve/class_sieveElement_Else_Elsif.inc | 43 + .../sieve/class_sieveElement_Fileinto.inc | 104 + .../mail/sieve/class_sieveElement_If.inc | 1469 + .../mail/sieve/class_sieveElement_Keep.inc | 38 + .../sieve/class_sieveElement_Redirect.inc | 69 + .../mail/sieve/class_sieveElement_Reject.inc | 76 + .../mail/sieve/class_sieveElement_Require.inc | 109 + .../mail/sieve/class_sieveElement_Stop.inc | 39 + .../sieve/class_sieveElement_Vacation.inc | 179 + .../mail/sieve/class_sieveManagement.inc | 1055 + .../mail/personal/mail/sieve/class_tree.inc | 153 + .../mail/personal/mail/sieve/libsieve.inc | 8 + .../mail/sieve/templates/add_element.tpl | 14 + .../sieve/templates/block_indent_start.tpl | 12 + .../sieve/templates/block_indent_stop.tpl | 5 + .../mail/sieve/templates/create_script.tpl | 21 + .../mail/sieve/templates/edit_frame_base.tpl | 42 + .../mail/sieve/templates/element_address.tpl | 142 + .../mail/sieve/templates/element_allof.tpl | 16 + .../mail/sieve/templates/element_anyof.tpl | 16 + .../sieve/templates/element_block_end.tpl | 5 + .../sieve/templates/element_block_start.tpl | 12 + .../mail/sieve/templates/element_boolean.tpl | 12 + .../mail/sieve/templates/element_comment.tpl | 23 + .../mail/sieve/templates/element_discard.tpl | 12 + .../mail/sieve/templates/element_else.tpl | 7 + .../mail/sieve/templates/element_elsif.tpl | 8 + .../mail/sieve/templates/element_envelope.tpl | 134 + .../mail/sieve/templates/element_exists.tpl | 20 + .../mail/sieve/templates/element_fileinto.tpl | 30 + .../mail/sieve/templates/element_header.tpl | 136 + .../mail/sieve/templates/element_if.tpl | 8 + .../mail/sieve/templates/element_keep.tpl | 12 + .../mail/sieve/templates/element_redirect.tpl | 22 + .../mail/sieve/templates/element_reject.tpl | 28 + .../mail/sieve/templates/element_require.tpl | 21 + .../mail/sieve/templates/element_size.tpl | 25 + .../mail/sieve/templates/element_stop.tpl | 12 + .../mail/sieve/templates/element_vacation.tpl | 56 + .../mail/sieve/templates/import_script.tpl | 15 + .../mail/sieve/templates/management.tpl | 27 + .../mail/sieve/templates/object_container.tpl | 54 + .../templates/object_container_clear.tpl | 28 + .../sieve/templates/object_test_container.tpl | 17 + .../mail/sieve/templates/remove_script.tpl | 17 + .../mail/sieve/templates/select_test_type.tpl | 14 + trunk/gosa-plugins/mail/plugin.dsc | 7 + .../services/kerberos/class_goKrbServer.inc | 400 + .../services/kerberos/class_krb5_policy.inc | 171 + .../services/kerberos/class_krb_host_keys.inc | 472 + .../kerberos/class_password-methods-MIT.inc | 682 + .../systems/services/kerberos/goKrbServer.tpl | 41 + .../systems/services/kerberos/krb5_policy.tpl | 49 + .../services/kerberos/krb_host_keys.tpl | 13 + .../services/kerberos/pwd_kerberos_mit.tpl | 246 + trunk/gosa-plugins/mit-krb5/contrib/hdb.ldif | 18 + .../gosa-plugins/mit-krb5/contrib/hdb.schema | 139 + trunk/gosa-plugins/mit-krb5/help/guide.xml | 0 .../locale/de/LC_MESSAGES/messages.po | 364 + .../locale/es/LC_MESSAGES/messages.po | 411 + .../locale/fr/LC_MESSAGES/messages.po | 359 + .../locale/it/LC_MESSAGES/messages.po | 417 + .../gosa-plugins/mit-krb5/locale/messages.po | 355 + .../locale/nl/LC_MESSAGES/messages.po | 423 + .../locale/pl/LC_MESSAGES/messages.po | 413 + .../locale/ru/LC_MESSAGES/messages.po | 420 + .../locale/zh/LC_MESSAGES/messages.po | 419 + trunk/gosa-plugins/mit-krb5/plugin.dsc | 8 + trunk/gosa-plugins/nagios/README.nagios | 20 + trunk/gosa-plugins/nagios/contrib/goNagios.pl | 391 + trunk/gosa-plugins/nagios/contrib/nagios.ldif | 25 + .../gosa-plugins/nagios/contrib/nagios.schema | 183 + trunk/gosa-plugins/nagios/help/guide.xml | 0 .../nagios/html/images/plugin.png | Bin 0 -> 4804 bytes .../nagios/locale/de/LC_MESSAGES/messages.po | 162 + .../nagios/locale/es/LC_MESSAGES/messages.po | 214 + .../nagios/locale/fr/LC_MESSAGES/messages.po | 155 + .../nagios/locale/it/LC_MESSAGES/messages.po | 231 + trunk/gosa-plugins/nagios/locale/messages.po | 157 + .../nagios/locale/nl/LC_MESSAGES/messages.po | 221 + .../nagios/locale/pl/LC_MESSAGES/messages.po | 207 + .../nagios/locale/ru/LC_MESSAGES/messages.po | 235 + .../nagios/locale/zh/LC_MESSAGES/messages.po | 216 + .../personal/nagios/class_nagiosAccount.inc | 308 + .../nagios/personal/nagios/main.inc | 141 + .../nagios/personal/nagios/nagios.tpl | 192 + trunk/gosa-plugins/nagios/plugin.dsc | 6 + .../netatalk/contrib/apple.schema.README | 50 + trunk/gosa-plugins/netatalk/help/guide.xml | 0 .../netatalk/html/images/plugin.png | Bin 0 -> 3642 bytes .../netatalk/html/images/select_netatalk.png | Bin 0 -> 828 bytes .../locale/de/LC_MESSAGES/messages.po | 77 + .../locale/es/LC_MESSAGES/messages.po | 122 + .../locale/fr/LC_MESSAGES/messages.po | 70 + .../locale/it/LC_MESSAGES/messages.po | 119 + .../gosa-plugins/netatalk/locale/messages.po | 72 + .../locale/nl/LC_MESSAGES/messages.po | 123 + .../locale/pl/LC_MESSAGES/messages.po | 116 + .../locale/ru/LC_MESSAGES/messages.po | 120 + .../locale/zh/LC_MESSAGES/messages.po | 117 + .../personal/netatalk/class_netatalk.inc | 389 + .../netatalk/personal/netatalk/main.inc | 136 + .../netatalk/personal/netatalk/netatalk.tpl | 33 + trunk/gosa-plugins/netatalk/plugin.dsc | 7 + .../gosa-plugins/opengroupware/help/guide.xml | 0 .../locale/de/LC_MESSAGES/messages.po | 81 + .../locale/es/LC_MESSAGES/messages.po | 88 + .../locale/fr/LC_MESSAGES/messages.po | 74 + .../locale/it/LC_MESSAGES/messages.po | 92 + .../opengroupware/locale/messages.po | 76 + .../locale/nl/LC_MESSAGES/messages.po | 92 + .../locale/pl/LC_MESSAGES/messages.po | 86 + .../locale/ru/LC_MESSAGES/messages.po | 91 + .../locale/zh/LC_MESSAGES/messages.po | 90 + .../opengroupware/class_opengw.inc | 547 + .../opengroupware/class_opengwAccount.inc | 356 + .../opengroupware/class_pgsql_opengw.inc | 160 + .../connectivity/opengroupware/opengw.tpl | 59 + trunk/gosa-plugins/opengroupware/plugin.dsc | 7 + .../openxchange/README.openxchange | 437 + .../openxchange/contrib/openxchange.ldif | 121 + .../openxchange/contrib/openxchange.schema | 714 + trunk/gosa-plugins/openxchange/help/guide.xml | 0 .../locale/de/LC_MESSAGES/messages.po | 132 + .../locale/es/LC_MESSAGES/messages.po | 156 + .../locale/fr/LC_MESSAGES/messages.po | 125 + .../locale/it/LC_MESSAGES/messages.po | 155 + .../openxchange/locale/messages.po | 125 + .../locale/nl/LC_MESSAGES/messages.po | 164 + .../locale/pl/LC_MESSAGES/messages.po | 156 + .../locale/ru/LC_MESSAGES/messages.po | 158 + .../locale/zh/LC_MESSAGES/messages.po | 160 + .../openxchange/class_oxchangeAccount.inc | 455 + .../connectivity/openxchange/oxchange.tpl | 84 + trunk/gosa-plugins/openxchange/plugin.dsc | 7 + .../opsi/admin/opsi/class_opsi.inc | 502 + .../opsi/admin/opsi/class_opsiProperties.inc | 120 + .../opsi/admin/opsi/class_opsigeneric.inc | 726 + .../opsi/admin/opsi/class_opsiware.inc | 61 + .../gosa-plugins/opsi/admin/opsi/generic.tpl | 134 + .../opsi/admin/opsi/opsi_tabs.inc | 9 + .../gosa-plugins/opsi/admin/opsi/opsiware.tpl | 23 + .../opsi/admin/opsi/properties.tpl | 41 + .../opsi/admin/opsi/tabs_prodconfig.inc | 6 + trunk/gosa-plugins/opsi/help/guide.xml | 0 .../opsi/html/images/client_generic.png | Bin 0 -> 753 bytes .../opsi/html/images/hardware_info.png | Bin 0 -> 879 bytes .../opsi/html/images/local_package.png | Bin 0 -> 3325 bytes .../opsi/html/images/netboot_package.png | Bin 0 -> 3249 bytes trunk/gosa-plugins/opsi/html/images/opsi.png | Bin 0 -> 2317 bytes .../gosa-plugins/opsi/html/images/product.png | Bin 0 -> 595 bytes .../opsi/html/images/software_info.png | Bin 0 -> 675 bytes .../opsi/locale/de/LC_MESSAGES/messages.po | 166 + .../opsi/locale/fr/LC_MESSAGES/messages.po | 168 + trunk/gosa-plugins/opsi/plugin.dsc | 7 + .../phpgw/contrib/phpgwaccount.ldif | 10 + .../phpgw/contrib/phpgwaccount.schema | 79 + trunk/gosa-plugins/phpgw/help/guide.xml | 0 .../phpgw/locale/de/LC_MESSAGES/messages.po | 55 + .../phpgw/locale/es/LC_MESSAGES/messages.po | 60 + .../phpgw/locale/fr/LC_MESSAGES/messages.po | 48 + .../phpgw/locale/it/LC_MESSAGES/messages.po | 60 + trunk/gosa-plugins/phpgw/locale/messages.po | 50 + .../phpgw/locale/nl/LC_MESSAGES/messages.po | 64 + .../phpgw/locale/pl/LC_MESSAGES/messages.po | 56 + .../phpgw/locale/ru/LC_MESSAGES/messages.po | 59 + .../phpgw/locale/zh/LC_MESSAGES/messages.po | 62 + .../connectivity/phpgw/class_phpgwAccount.inc | 226 + .../personal/connectivity/phpgw/phpgw.tpl | 7 + trunk/gosa-plugins/phpgw/plugin.dsc | 7 + .../phpscheduleit/README.phpscheduleit | 10 + .../phpscheduleit/contrib/phpscheduleit.ldif | 5 + .../contrib/phpscheduleit.schema | 23 + .../gosa-plugins/phpscheduleit/help/guide.xml | 0 .../locale/de/LC_MESSAGES/messages.po | 55 + .../locale/es/LC_MESSAGES/messages.po | 60 + .../locale/fr/LC_MESSAGES/messages.po | 48 + .../locale/it/LC_MESSAGES/messages.po | 63 + .../phpscheduleit/locale/messages.po | 50 + .../locale/nl/LC_MESSAGES/messages.po | 65 + .../locale/pl/LC_MESSAGES/messages.po | 56 + .../locale/ru/LC_MESSAGES/messages.po | 62 + .../locale/zh/LC_MESSAGES/messages.po | 63 + .../class_phpscheduleitAccount.inc | 179 + .../phpscheduleit/phpscheduleit.tpl | 4 + trunk/gosa-plugins/phpscheduleit/plugin.dsc | 7 + trunk/gosa-plugins/pptp/contrib/README.pptp | 13 + trunk/gosa-plugins/pptp/contrib/pptp.ldif | 8 + trunk/gosa-plugins/pptp/contrib/pptp.schema | 42 + trunk/gosa-plugins/pptp/help/guide.xml | 0 .../pptp/locale/de/LC_MESSAGES/messages.po | 49 + .../pptp/locale/es/LC_MESSAGES/messages.po | 52 + .../pptp/locale/fr/LC_MESSAGES/messages.po | 42 + .../pptp/locale/it/LC_MESSAGES/messages.po | 54 + trunk/gosa-plugins/pptp/locale/messages.po | 44 + .../pptp/locale/nl/LC_MESSAGES/messages.po | 57 + .../pptp/locale/pl/LC_MESSAGES/messages.po | 50 + .../pptp/locale/ru/LC_MESSAGES/messages.po | 53 + .../pptp/locale/zh/LC_MESSAGES/messages.po | 55 + .../connectivity/pptp/class_pptpAccount.inc | 192 + .../pptp/personal/connectivity/pptp/pptp.tpl | 4 + trunk/gosa-plugins/pptp/plugin.dsc | 7 + .../pureftpd/contrib/pureftpd.ldif | 13 + .../pureftpd/contrib/pureftpd.schema | 64 + trunk/gosa-plugins/pureftpd/help/guide.xml | 0 .../locale/de/LC_MESSAGES/messages.po | 148 + .../locale/es/LC_MESSAGES/messages.po | 173 + .../locale/fr/LC_MESSAGES/messages.po | 141 + .../locale/it/LC_MESSAGES/messages.po | 178 + .../gosa-plugins/pureftpd/locale/messages.po | 143 + .../locale/nl/LC_MESSAGES/messages.po | 188 + .../locale/pl/LC_MESSAGES/messages.po | 169 + .../locale/ru/LC_MESSAGES/messages.po | 183 + .../locale/zh/LC_MESSAGES/messages.po | 186 + .../pureftpd/class_pureftpdAccount.inc | 328 + .../connectivity/pureftpd/pureftpd.tpl | 114 + trunk/gosa-plugins/pureftpd/plugin.dsc | 7 + .../admin/systems/samba/class_winGeneric.inc | 323 + .../admin/systems/samba/tabs_winstation.inc | 45 + .../samba/admin/systems/samba/wingeneric.tpl | 56 + trunk/gosa-plugins/samba/contrib/fix_munged | 95 + trunk/gosa-plugins/samba/contrib/goSamba.pl | 162 + trunk/gosa-plugins/samba/help/guide.xml | 0 .../gosa-plugins/samba/html/images/plugin.png | Bin 0 -> 4762 bytes .../samba/html/images/terminal_server.png | Bin 0 -> 733 bytes .../samba/locale/de/LC_MESSAGES/messages.po | 402 + .../samba/locale/es/LC_MESSAGES/messages.po | 402 + .../samba/locale/fr/LC_MESSAGES/messages.po | 399 + .../samba/locale/it/LC_MESSAGES/messages.po | 529 + trunk/gosa-plugins/samba/locale/messages.po | 391 + .../samba/locale/nl/LC_MESSAGES/messages.po | 408 + .../samba/locale/pl/LC_MESSAGES/messages.po | 549 + .../samba/locale/ru/LC_MESSAGES/messages.po | 556 + .../samba/locale/zh/LC_MESSAGES/messages.po | 548 + .../personal/samba/class_sambaAccount.inc | 1887 + .../personal/samba/class_sambaLogonHours.inc | 143 + .../personal/samba/class_sambaMungedDial.inc | 609 + .../samba/personal/samba/main.inc | 142 + .../samba/personal/samba/samba2.tpl | 116 + .../samba/personal/samba/samba3.tpl | 486 + .../personal/samba/samba3_workstations.tpl | 42 + .../samba/personal/samba/sambaLogonHours.tpl | 106 + trunk/gosa-plugins/samba/plugin.dsc | 7 + .../admin/groups/scalix/class_scalixGroup.inc | 42 + trunk/gosa-plugins/scalix/help/guide.xml | 0 .../scalix/html/images/envelope.png | Bin 0 -> 843 bytes .../scalix/html/images/plugin.png | Bin 0 -> 3343 bytes .../scalix/locale/de/LC_MESSAGES/messages.po | 274 + .../scalix/locale/es/LC_MESSAGES/messages.po | 306 + .../scalix/locale/fr/LC_MESSAGES/messages.po | 269 + .../scalix/locale/it/LC_MESSAGES/messages.po | 307 + trunk/gosa-plugins/scalix/locale/messages.po | 253 + .../scalix/locale/nl/LC_MESSAGES/messages.po | 316 + .../scalix/locale/pl/LC_MESSAGES/messages.po | 306 + .../scalix/locale/ru/LC_MESSAGES/messages.po | 309 + .../scalix/locale/zh/LC_MESSAGES/messages.po | 306 + .../personal/scalix/class_scalixAccount.inc | 558 + .../scalix/personal/scalix/generic.tpl | 133 + .../scalix/personal/scalix/main.inc | 144 + .../scalix/personal/scalix/paste_generic.tpl | 25 + trunk/gosa-plugins/scalix/plugin.dsc | 7 + trunk/gosa-plugins/squid/README.squid | 17 + trunk/gosa-plugins/squid/contrib/goQuota.pl | 294 + .../gosa-plugins/squid/contrib/goQuotaView.pl | 91 + trunk/gosa-plugins/squid/contrib/goSquid.pl | 136 + trunk/gosa-plugins/squid/contrib/mkHash.pl | 20 + trunk/gosa-plugins/squid/help/guide.xml | 0 .../squid/locale/de/LC_MESSAGES/messages.po | 109 + .../squid/locale/es/LC_MESSAGES/messages.po | 116 + .../squid/locale/fr/LC_MESSAGES/messages.po | 100 + .../squid/locale/it/LC_MESSAGES/messages.po | 116 + trunk/gosa-plugins/squid/locale/messages.po | 102 + .../squid/locale/nl/LC_MESSAGES/messages.po | 125 + .../squid/locale/pl/LC_MESSAGES/messages.po | 116 + .../squid/locale/ru/LC_MESSAGES/messages.po | 117 + .../squid/locale/zh/LC_MESSAGES/messages.po | 120 + .../connectivity/squid/class_proxyAccount.inc | 437 + .../personal/connectivity/squid/proxy.tpl | 130 + trunk/gosa-plugins/squid/plugin.dsc | 7 + trunk/gosa-plugins/ssh/help/guide.xml | 0 trunk/gosa-plugins/ssh/plugin.dsc | 6 + .../sudo/admin/sudo/class_divListSudo.inc | 243 + .../sudo/admin/sudo/class_sudoGeneric.inc | 751 + .../sudo/admin/sudo/class_sudoManagement.inc | 528 + .../sudo/admin/sudo/class_sudoOption.inc | 565 + .../admin/sudo/class_target_list_systems.inc | 302 + .../admin/sudo/class_target_list_users.inc | 284 + .../gosa-plugins/sudo/admin/sudo/generic.tpl | 145 + trunk/gosa-plugins/sudo/admin/sudo/main.inc | 69 + .../gosa-plugins/sudo/admin/sudo/options.tpl | 120 + .../sudo/admin/sudo/paste_generic.tpl | 11 + trunk/gosa-plugins/sudo/admin/sudo/remove.tpl | 17 + .../sudo/admin/sudo/tabs_sudo.inc | 64 + .../sudo/admin/sudo/trust_machines.tpl | 42 + trunk/gosa-plugins/sudo/contrib/sudo.ldif | 9 + trunk/gosa-plugins/sudo/contrib/sudo.schema | 44 + trunk/gosa-plugins/sudo/help/guide.xml | 0 .../sudo/html/images/list_new_sudo.png | Bin 0 -> 777 bytes .../gosa-plugins/sudo/html/images/negate.png | Bin 0 -> 745 bytes .../sudo/html/images/select_sudo.png | Bin 0 -> 777 bytes .../sudo/html/images/select_workstation.png | Bin 0 -> 817 bytes trunk/gosa-plugins/sudo/html/images/sudo.png | Bin 0 -> 2232 bytes .../sudo/locale/de/LC_MESSAGES/messages.po | 368 + .../sudo/locale/es/LC_MESSAGES/messages.po | 382 + .../sudo/locale/fr/LC_MESSAGES/messages.po | 370 + .../sudo/locale/it/LC_MESSAGES/messages.po | 385 + trunk/gosa-plugins/sudo/locale/messages.po | 366 + .../sudo/locale/nl/LC_MESSAGES/messages.po | 390 + .../sudo/locale/pl/LC_MESSAGES/messages.po | 385 + .../sudo/locale/ru/LC_MESSAGES/messages.po | 389 + .../sudo/locale/zh/LC_MESSAGES/messages.po | 387 + trunk/gosa-plugins/sudo/plugin.dsc | 7 + .../admin/systems/class_componentGeneric.inc | 361 + .../admin/systems/class_divListSystem.inc | 471 + .../systems/class_divListSystemService.inc | 171 + .../admin/systems/class_servGeneric.inc | 524 + .../admin/systems/class_serverService.inc | 485 + .../admin/systems/class_systemManagement.inc | 1841 + .../systems/admin/systems/class_termDNS.inc | 1140 + .../systems/admin/systems/component.tpl | 56 + .../systems/admin/systems/contents.tpl | 1 + .../systems/admin/systems/main.inc | 64 + .../systems/admin/systems/network.tpl | 180 + .../systems/admin/systems/password.tpl | 49 + .../systems/admin/systems/paste_generic.tpl | 50 + .../systems/admin/systems/remove.tpl | 23 + .../systems/admin/systems/server.tpl | 93 + .../systems/services/ServiceAddDialog.tpl | 32 + .../services/class_ServiceAddDialog.inc | 54 + .../systems/services/class_goService.inc | 262 + .../admin/systems/tabs_arpnewdevice.inc | 39 + .../systems/admin/systems/tabs_component.inc | 69 + .../systems/admin/systems/tabs_server.inc | 133 + .../systems/help/de/html/systems/WARNINGS | 3 + .../systems/help/de/html/systems/edit.png | Bin 0 -> 946 bytes .../systems/help/de/html/systems/index.html | 124 + .../systems/help/de/html/systems/labels.pl | 13 + .../help/de/html/systems/list_back.png | Bin 0 -> 862 bytes .../help/de/html/systems/list_home.png | Bin 0 -> 865 bytes .../help/de/html/systems/list_reload.png | Bin 0 -> 910 bytes .../help/de/html/systems/list_root.png | Bin 0 -> 852 bytes .../systems/help/de/html/systems/node1.html | 347 + .../systems/help/de/html/systems/node10.html | 48 + .../systems/help/de/html/systems/node11.html | 41 + .../systems/help/de/html/systems/node12.html | 50 + .../systems/help/de/html/systems/node13.html | 50 + .../systems/help/de/html/systems/node14.html | 69 + .../systems/help/de/html/systems/node15.html | 48 + .../systems/help/de/html/systems/node16.html | 48 + .../systems/help/de/html/systems/node17.html | 50 + .../systems/help/de/html/systems/node18.html | 66 + .../systems/help/de/html/systems/node19.html | 42 + .../systems/help/de/html/systems/node2.html | 288 + .../systems/help/de/html/systems/node20.html | 40 + .../systems/help/de/html/systems/node21.html | 52 + .../systems/help/de/html/systems/node22.html | 51 + .../systems/help/de/html/systems/node23.html | 51 + .../systems/help/de/html/systems/node24.html | 63 + .../systems/help/de/html/systems/node25.html | 47 + .../systems/help/de/html/systems/node26.html | 44 + .../systems/help/de/html/systems/node27.html | 104 + .../systems/help/de/html/systems/node28.html | 50 + .../systems/help/de/html/systems/node29.html | 65 + .../systems/help/de/html/systems/node3.html | 102 + .../systems/help/de/html/systems/node30.html | 47 + .../systems/help/de/html/systems/node31.html | 59 + .../systems/help/de/html/systems/node32.html | 56 + .../systems/help/de/html/systems/node33.html | 50 + .../systems/help/de/html/systems/node34.html | 48 + .../systems/help/de/html/systems/node35.html | 41 + .../systems/help/de/html/systems/node36.html | 50 + .../systems/help/de/html/systems/node37.html | 54 + .../systems/help/de/html/systems/node38.html | 45 + .../systems/help/de/html/systems/node39.html | 56 + .../systems/help/de/html/systems/node4.html | 50 + .../systems/help/de/html/systems/node40.html | 52 + .../systems/help/de/html/systems/node41.html | 40 + .../systems/help/de/html/systems/node42.html | 40 + .../systems/help/de/html/systems/node43.html | 40 + .../systems/help/de/html/systems/node44.html | 39 + .../systems/help/de/html/systems/node45.html | 39 + .../systems/help/de/html/systems/node46.html | 50 + .../systems/help/de/html/systems/node47.html | 51 + .../systems/help/de/html/systems/node48.html | 63 + .../systems/help/de/html/systems/node49.html | 47 + .../systems/help/de/html/systems/node5.html | 70 + .../systems/help/de/html/systems/node50.html | 44 + .../systems/help/de/html/systems/node51.html | 44 + .../systems/help/de/html/systems/node52.html | 63 + .../systems/help/de/html/systems/node53.html | 50 + .../systems/help/de/html/systems/node54.html | 51 + .../systems/help/de/html/systems/node55.html | 47 + .../systems/help/de/html/systems/node56.html | 39 + .../systems/help/de/html/systems/node57.html | 182 + .../systems/help/de/html/systems/node58.html | 170 + .../systems/help/de/html/systems/node59.html | 40 + .../systems/help/de/html/systems/node6.html | 47 + .../systems/help/de/html/systems/node60.html | 44 + .../systems/help/de/html/systems/node61.html | 59 + .../systems/help/de/html/systems/node62.html | 52 + .../systems/help/de/html/systems/node63.html | 51 + .../systems/help/de/html/systems/node64.html | 51 + .../systems/help/de/html/systems/node65.html | 63 + .../systems/help/de/html/systems/node66.html | 47 + .../systems/help/de/html/systems/node67.html | 44 + .../systems/help/de/html/systems/node68.html | 57 + .../systems/help/de/html/systems/node69.html | 50 + .../systems/help/de/html/systems/node7.html | 43 + .../systems/help/de/html/systems/node70.html | 51 + .../systems/help/de/html/systems/node71.html | 146 + .../systems/help/de/html/systems/node72.html | 47 + .../systems/help/de/html/systems/node73.html | 44 + .../systems/help/de/html/systems/node74.html | 53 + .../systems/help/de/html/systems/node75.html | 51 + .../systems/help/de/html/systems/node76.html | 47 + .../systems/help/de/html/systems/node77.html | 39 + .../systems/help/de/html/systems/node78.html | 51 + .../systems/help/de/html/systems/node8.html | 60 + .../systems/help/de/html/systems/node9.html | 50 + .../systems/help/de/html/systems/rocket.png | Bin 0 -> 828 bytes .../systems/help/de/html/systems/search.png | Bin 0 -> 1023 bytes .../de/html/systems/select_new_component.png | Bin 0 -> 452 bytes .../help/de/html/systems/select_new_phone.png | Bin 0 -> 660 bytes .../de/html/systems/select_new_printer.png | Bin 0 -> 746 bytes .../de/html/systems/select_new_server.png | Bin 0 -> 813 bytes .../de/html/systems/select_new_terminal.png | Bin 0 -> 776 bytes .../html/systems/select_new_workstation.png | Bin 0 -> 827 bytes .../systems/help/de/html/systems/systems.css | 76 + .../systems/help/de/html/systems/systems.html | 124 + .../help/de/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../help/de/lyx-source/images/list_back.png | Bin 0 -> 862 bytes .../help/de/lyx-source/images/list_home.png | Bin 0 -> 865 bytes .../help/de/lyx-source/images/list_reload.png | Bin 0 -> 910 bytes .../help/de/lyx-source/images/list_root.png | Bin 0 -> 852 bytes .../help/de/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../help/de/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../images/select_new_component.png | Bin 0 -> 452 bytes .../de/lyx-source/images/select_new_phone.png | Bin 0 -> 660 bytes .../lyx-source/images/select_new_printer.png | Bin 0 -> 746 bytes .../lyx-source/images/select_new_server.png | Bin 0 -> 813 bytes .../lyx-source/images/select_new_terminal.png | Bin 0 -> 776 bytes .../images/select_new_workstation.png | Bin 0 -> 827 bytes .../systems/help/de/lyx-source/systems.lyx | 3998 + .../systems/help/en/html/systems/WARNINGS | 5 + .../systems/help/en/html/systems/index.html | 213 + .../systems/help/en/html/systems/labels.pl | 13 + .../help/en/html/systems/list_back.png | Bin 0 -> 862 bytes .../help/en/html/systems/list_home.png | Bin 0 -> 865 bytes .../help/en/html/systems/list_root.png | Bin 0 -> 852 bytes .../systems/help/en/html/systems/node1.html | 339 + .../systems/help/en/html/systems/node10.html | 46 + .../systems/help/en/html/systems/node11.html | 56 + .../systems/help/en/html/systems/node12.html | 56 + .../systems/help/en/html/systems/node13.html | 56 + .../systems/help/en/html/systems/node14.html | 53 + .../systems/help/en/html/systems/node15.html | 53 + .../systems/help/en/html/systems/node16.html | 37 + .../systems/help/en/html/systems/node17.html | 83 + .../systems/help/en/html/systems/node18.html | 49 + .../systems/help/en/html/systems/node19.html | 46 + .../systems/help/en/html/systems/node2.html | 92 + .../systems/help/en/html/systems/node20.html | 37 + .../systems/help/en/html/systems/node21.html | 56 + .../systems/help/en/html/systems/node22.html | 56 + .../systems/help/en/html/systems/node23.html | 57 + .../systems/help/en/html/systems/node24.html | 53 + .../systems/help/en/html/systems/node25.html | 40 + .../systems/help/en/html/systems/node26.html | 42 + .../systems/help/en/html/systems/node27.html | 90 + .../systems/help/en/html/systems/node28.html | 37 + .../systems/help/en/html/systems/node29.html | 66 + .../systems/help/en/html/systems/node3.html | 37 + .../systems/help/en/html/systems/node30.html | 53 + .../systems/help/en/html/systems/node31.html | 45 + .../systems/help/en/html/systems/node32.html | 37 + .../systems/help/en/html/systems/node33.html | 56 + .../systems/help/en/html/systems/node34.html | 53 + .../systems/help/en/html/systems/node35.html | 46 + .../systems/help/en/html/systems/node36.html | 59 + .../systems/help/en/html/systems/node37.html | 56 + .../systems/help/en/html/systems/node38.html | 50 + .../systems/help/en/html/systems/node39.html | 37 + .../systems/help/en/html/systems/node4.html | 70 + .../systems/help/en/html/systems/node40.html | 57 + .../systems/help/en/html/systems/node41.html | 46 + .../systems/help/en/html/systems/node42.html | 46 + .../systems/help/en/html/systems/node43.html | 45 + .../systems/help/en/html/systems/node44.html | 45 + .../systems/help/en/html/systems/node45.html | 59 + .../systems/help/en/html/systems/node46.html | 56 + .../systems/help/en/html/systems/node47.html | 57 + .../systems/help/en/html/systems/node48.html | 53 + .../systems/help/en/html/systems/node49.html | 43 + .../systems/help/en/html/systems/node5.html | 53 + .../systems/help/en/html/systems/node50.html | 42 + .../systems/help/en/html/systems/node51.html | 58 + .../systems/help/en/html/systems/node52.html | 56 + .../systems/help/en/html/systems/node53.html | 53 + .../systems/help/en/html/systems/node54.html | 45 + .../systems/help/en/html/systems/node55.html | 178 + .../systems/help/en/html/systems/node56.html | 123 + .../systems/help/en/html/systems/node57.html | 46 + .../systems/help/en/html/systems/node58.html | 42 + .../systems/help/en/html/systems/node59.html | 56 + .../systems/help/en/html/systems/node6.html | 45 + .../systems/help/en/html/systems/node60.html | 37 + .../systems/help/en/html/systems/node61.html | 56 + .../systems/help/en/html/systems/node62.html | 56 + .../systems/help/en/html/systems/node63.html | 57 + .../systems/help/en/html/systems/node64.html | 53 + .../systems/help/en/html/systems/node65.html | 43 + .../systems/help/en/html/systems/node66.html | 52 + .../systems/help/en/html/systems/node67.html | 57 + .../systems/help/en/html/systems/node68.html | 147 + .../systems/help/en/html/systems/node69.html | 53 + .../systems/help/en/html/systems/node7.html | 37 + .../systems/help/en/html/systems/node70.html | 42 + .../systems/help/en/html/systems/node71.html | 50 + .../systems/help/en/html/systems/node72.html | 57 + .../systems/help/en/html/systems/node73.html | 53 + .../systems/help/en/html/systems/node74.html | 38 + .../systems/help/en/html/systems/node75.html | 51 + .../systems/help/en/html/systems/node8.html | 56 + .../systems/help/en/html/systems/node9.html | 53 + .../systems/help/en/html/systems/rocket.png | Bin 0 -> 828 bytes .../systems/help/en/html/systems/search.png | Bin 0 -> 1023 bytes .../en/html/systems/select_new_component.png | Bin 0 -> 452 bytes .../help/en/html/systems/select_new_phone.png | Bin 0 -> 660 bytes .../en/html/systems/select_new_printer.png | Bin 0 -> 746 bytes .../en/html/systems/select_new_server.png | Bin 0 -> 813 bytes .../en/html/systems/select_new_terminal.png | Bin 0 -> 776 bytes .../html/systems/select_new_workstation.png | Bin 0 -> 827 bytes .../systems/help/en/html/systems/systems.css | Bin 0 -> 3226 bytes .../systems/help/en/html/systems/systems.html | 213 + .../help/en/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../help/en/lyx-source/images/list_back.png | Bin 0 -> 862 bytes .../help/en/lyx-source/images/list_home.png | Bin 0 -> 865 bytes .../help/en/lyx-source/images/list_reload.png | Bin 0 -> 910 bytes .../help/en/lyx-source/images/list_root.png | Bin 0 -> 852 bytes .../help/en/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../help/en/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../images/select_new_component.png | Bin 0 -> 452 bytes .../en/lyx-source/images/select_new_phone.png | Bin 0 -> 660 bytes .../lyx-source/images/select_new_printer.png | Bin 0 -> 746 bytes .../lyx-source/images/select_new_server.png | Bin 0 -> 813 bytes .../lyx-source/images/select_new_terminal.png | Bin 0 -> 776 bytes .../images/select_new_workstation.png | Bin 0 -> 827 bytes .../systems/help/en/lyx-source/systems.lyx | 3681 + .../systems/help/fr/html/systems/WARNINGS | 5 + .../systems/help/fr/html/systems/index.html | 217 + .../systems/help/fr/html/systems/labels.pl | 13 + .../help/fr/html/systems/list_back.png | Bin 0 -> 862 bytes .../help/fr/html/systems/list_home.png | Bin 0 -> 865 bytes .../help/fr/html/systems/list_root.png | Bin 0 -> 852 bytes .../systems/help/fr/html/systems/node1.html | 340 + .../systems/help/fr/html/systems/node10.html | 46 + .../systems/help/fr/html/systems/node11.html | 56 + .../systems/help/fr/html/systems/node12.html | 56 + .../systems/help/fr/html/systems/node13.html | 56 + .../systems/help/fr/html/systems/node14.html | 53 + .../systems/help/fr/html/systems/node15.html | 53 + .../systems/help/fr/html/systems/node16.html | 37 + .../systems/help/fr/html/systems/node17.html | 62 + .../systems/help/fr/html/systems/node18.html | 48 + .../systems/help/fr/html/systems/node19.html | 46 + .../systems/help/fr/html/systems/node2.html | 92 + .../systems/help/fr/html/systems/node20.html | 37 + .../systems/help/fr/html/systems/node21.html | 56 + .../systems/help/fr/html/systems/node22.html | 66 + .../systems/help/fr/html/systems/node23.html | 51 + .../systems/help/fr/html/systems/node24.html | 53 + .../systems/help/fr/html/systems/node25.html | 46 + .../systems/help/fr/html/systems/node26.html | 43 + .../systems/help/fr/html/systems/node27.html | 92 + .../systems/help/fr/html/systems/node28.html | 37 + .../systems/help/fr/html/systems/node29.html | 64 + .../systems/help/fr/html/systems/node3.html | 37 + .../systems/help/fr/html/systems/node30.html | 53 + .../systems/help/fr/html/systems/node31.html | 46 + .../systems/help/fr/html/systems/node32.html | 37 + .../systems/help/fr/html/systems/node33.html | 56 + .../systems/help/fr/html/systems/node34.html | 54 + .../systems/help/fr/html/systems/node35.html | 46 + .../systems/help/fr/html/systems/node36.html | 57 + .../systems/help/fr/html/systems/node37.html | 56 + .../systems/help/fr/html/systems/node38.html | 50 + .../systems/help/fr/html/systems/node39.html | 37 + .../systems/help/fr/html/systems/node4.html | 70 + .../systems/help/fr/html/systems/node40.html | 62 + .../systems/help/fr/html/systems/node41.html | 47 + .../systems/help/fr/html/systems/node42.html | 47 + .../systems/help/fr/html/systems/node43.html | 48 + .../systems/help/fr/html/systems/node44.html | 46 + .../systems/help/fr/html/systems/node45.html | 37 + .../systems/help/fr/html/systems/node46.html | 56 + .../systems/help/fr/html/systems/node47.html | 66 + .../systems/help/fr/html/systems/node48.html | 51 + .../systems/help/fr/html/systems/node49.html | 53 + .../systems/help/fr/html/systems/node5.html | 53 + .../systems/help/fr/html/systems/node50.html | 46 + .../systems/help/fr/html/systems/node51.html | 43 + .../systems/help/fr/html/systems/node52.html | 60 + .../systems/help/fr/html/systems/node53.html | 57 + .../systems/help/fr/html/systems/node54.html | 53 + .../systems/help/fr/html/systems/node55.html | 46 + .../systems/help/fr/html/systems/node56.html | 177 + .../systems/help/fr/html/systems/node57.html | 48 + .../systems/help/fr/html/systems/node58.html | 174 + .../systems/help/fr/html/systems/node59.html | 46 + .../systems/help/fr/html/systems/node6.html | 46 + .../systems/help/fr/html/systems/node60.html | 43 + .../systems/help/fr/html/systems/node61.html | 56 + .../systems/help/fr/html/systems/node62.html | 37 + .../systems/help/fr/html/systems/node63.html | 56 + .../systems/help/fr/html/systems/node64.html | 66 + .../systems/help/fr/html/systems/node65.html | 51 + .../systems/help/fr/html/systems/node66.html | 53 + .../systems/help/fr/html/systems/node67.html | 43 + .../systems/help/fr/html/systems/node68.html | 52 + .../systems/help/fr/html/systems/node69.html | 57 + .../systems/help/fr/html/systems/node7.html | 37 + .../systems/help/fr/html/systems/node70.html | 164 + .../systems/help/fr/html/systems/node71.html | 53 + .../systems/help/fr/html/systems/node72.html | 43 + .../systems/help/fr/html/systems/node73.html | 50 + .../systems/help/fr/html/systems/node74.html | 57 + .../systems/help/fr/html/systems/node75.html | 53 + .../systems/help/fr/html/systems/node76.html | 38 + .../systems/help/fr/html/systems/node77.html | 51 + .../systems/help/fr/html/systems/node8.html | 56 + .../systems/help/fr/html/systems/node9.html | 54 + .../systems/help/fr/html/systems/rocket.png | Bin 0 -> 828 bytes .../systems/help/fr/html/systems/search.png | Bin 0 -> 1023 bytes .../fr/html/systems/select_new_component.png | Bin 0 -> 452 bytes .../help/fr/html/systems/select_new_phone.png | Bin 0 -> 660 bytes .../fr/html/systems/select_new_printer.png | Bin 0 -> 746 bytes .../fr/html/systems/select_new_server.png | Bin 0 -> 813 bytes .../fr/html/systems/select_new_terminal.png | Bin 0 -> 776 bytes .../html/systems/select_new_workstation.png | Bin 0 -> 827 bytes .../systems/help/fr/html/systems/systems.css | Bin 0 -> 1877 bytes .../systems/help/fr/html/systems/systems.html | 217 + .../help/fr/lyx-source/images/edit.png | Bin 0 -> 946 bytes .../help/fr/lyx-source/images/list_back.png | Bin 0 -> 862 bytes .../help/fr/lyx-source/images/list_home.png | Bin 0 -> 865 bytes .../help/fr/lyx-source/images/list_reload.png | Bin 0 -> 910 bytes .../help/fr/lyx-source/images/list_root.png | Bin 0 -> 852 bytes .../help/fr/lyx-source/images/rocket.png | Bin 0 -> 828 bytes .../help/fr/lyx-source/images/search.png | Bin 0 -> 1023 bytes .../images/select_new_component.png | Bin 0 -> 452 bytes .../fr/lyx-source/images/select_new_phone.png | Bin 0 -> 660 bytes .../lyx-source/images/select_new_printer.png | Bin 0 -> 746 bytes .../lyx-source/images/select_new_server.png | Bin 0 -> 813 bytes .../lyx-source/images/select_new_terminal.png | Bin 0 -> 776 bytes .../images/select_new_workstation.png | Bin 0 -> 827 bytes .../systems/help/fr/lyx-source/systems.lyx | 3688 + trunk/gosa-plugins/systems/help/guide.xml | 17 + .../systems/html/images/cdrom.png | Bin 0 -> 834 bytes .../systems/html/images/clock.png | Bin 0 -> 875 bytes .../systems/html/images/drives.png | Bin 0 -> 950 bytes .../systems/html/images/network.png | Bin 0 -> 894 bytes .../systems/html/images/plugin.png | Bin 0 -> 2317 bytes .../systems/html/images/select_component.png | Bin 0 -> 458 bytes .../systems/html/images/select_default.png | Bin 0 -> 725 bytes .../systems/html/images/select_new_server.png | Bin 0 -> 813 bytes .../systems/html/images/select_newsystem.png | Bin 0 -> 642 bytes .../systems/html/images/select_phone.png | Bin 0 -> 784 bytes .../systems/html/images/select_printer.png | Bin 0 -> 678 bytes .../systems/html/images/select_server.png | Bin 0 -> 879 bytes .../systems/html/images/select_terminal.png | Bin 0 -> 778 bytes .../systems/html/images/select_winstation.png | Bin 0 -> 675 bytes .../html/images/select_workstation.png | Bin 0 -> 817 bytes .../systems/html/images/server.png | Bin 0 -> 879 bytes .../systems/html/images/server_busy.png | Bin 0 -> 916 bytes .../systems/html/images/server_error.png | Bin 0 -> 902 bytes .../systems/html/images/server_locked.png | Bin 0 -> 918 bytes .../systems/html/images/terminal_error.png | Bin 0 -> 876 bytes .../systems/html/images/terminal_locked.png | Bin 0 -> 873 bytes .../systems/html/images/workstation_busy.png | Bin 0 -> 927 bytes .../systems/html/images/workstation_error.png | Bin 0 -> 959 bytes .../html/images/workstation_locked.png | Bin 0 -> 965 bytes .../systems/locale/de/LC_MESSAGES/messages.po | 957 + .../systems/locale/es/LC_MESSAGES/messages.po | 963 + .../systems/locale/fr/LC_MESSAGES/messages.po | 950 + .../systems/locale/it/LC_MESSAGES/messages.po | 1290 + trunk/gosa-plugins/systems/locale/messages.po | 925 + .../systems/locale/nl/LC_MESSAGES/messages.po | 1406 + .../systems/locale/pl/LC_MESSAGES/messages.po | 1368 + .../systems/locale/ru/LC_MESSAGES/messages.po | 1419 + .../systems/locale/zh/LC_MESSAGES/messages.po | 1397 + trunk/gosa-plugins/systems/plugin.dsc | 7 + .../uw-imap/contrib/procmail-discard.txt | 4 + .../uw-imap/contrib/procmail-footer.txt | 10 + .../uw-imap/contrib/procmail-header.txt | 15 + .../uw-imap/contrib/procmail-spam.txt | 34 + .../uw-imap/contrib/procmail-vacation.txt | 35 + .../uw-imap/class_mail-methods-uwimap.inc | 146 + trunk/gosa-plugins/uw-imap/plugin.dsc | 7 + trunk/gosa-plugins/webdav/help/guide.xml | 0 .../webdav/locale/de/LC_MESSAGES/messages.po | 49 + .../webdav/locale/es/LC_MESSAGES/messages.po | 52 + .../webdav/locale/fr/LC_MESSAGES/messages.po | 50 + .../webdav/locale/it/LC_MESSAGES/messages.po | 53 + trunk/gosa-plugins/webdav/locale/messages.po | 44 + .../webdav/locale/nl/LC_MESSAGES/messages.po | 57 + .../webdav/locale/pl/LC_MESSAGES/messages.po | 50 + .../webdav/locale/ru/LC_MESSAGES/messages.po | 52 + .../webdav/locale/zh/LC_MESSAGES/messages.po | 55 + .../webdav/class_webdavAccount.inc | 228 + .../personal/connectivity/webdav/webdav.tpl | 6 + trunk/gosa-plugins/webdav/plugin.dsc | 7 + trunk/gosa-si/Doxyfile | 305 + trunk/gosa-si/README | 28 + trunk/gosa-si/client.conf | 10 + trunk/gosa-si/client.conf.pod | 118 + trunk/gosa-si/client/events/corefunctions.pm | 627 + trunk/gosa-si/client/events/dak.pm | 218 + trunk/gosa-si/client/events/gosaTriggered.pm | 512 + trunk/gosa-si/client/events/installation.pm | 39 + trunk/gosa-si/client/events/krb5.pm | 617 + trunk/gosa-si/client/events/mailqueue.pm | 736 + trunk/gosa-si/debian/README.debian | 11 + trunk/gosa-si/debian/changelog | 43 + trunk/gosa-si/debian/compat | 1 + trunk/gosa-si/debian/control | 79 + trunk/gosa-si/debian/copyright | 31 + trunk/gosa-si/debian/gosa-si-client-dak.dirs | 1 + .../gosa-si/debian/gosa-si-client-dak.install | 1 + trunk/gosa-si/debian/gosa-si-client-krb5.dirs | 1 + .../debian/gosa-si-client-krb5.install | 1 + trunk/gosa-si/debian/gosa-si-client.dirs | 3 + trunk/gosa-si/debian/gosa-si-client.install | 6 + .../debian/gosa-si-client.lintian-overrides | 2 + trunk/gosa-si/debian/gosa-si-client.logrotate | 10 + trunk/gosa-si/debian/gosa-si-client.manpages | 2 + trunk/gosa-si/debian/gosa-si-client.postinst | 23 + trunk/gosa-si/debian/gosa-si-common.default | 3 + trunk/gosa-si/debian/gosa-si-common.dirs | 2 + trunk/gosa-si/debian/gosa-si-common.init | 88 + trunk/gosa-si/debian/gosa-si-common.install | 3 + trunk/gosa-si/debian/gosa-si-common.postinst | 15 + trunk/gosa-si/debian/gosa-si-server-opsi.dirs | 2 + .../debian/gosa-si-server-opsi.install | 3 + .../debian/gosa-si-server-postfix.dirs | 2 + .../debian/gosa-si-server-postfix.install | 3 + trunk/gosa-si/debian/gosa-si-server.dirs | 7 + trunk/gosa-si/debian/gosa-si-server.install | 16 + .../debian/gosa-si-server.lintian-overrides | 2 + trunk/gosa-si/debian/gosa-si-server.logrotate | 10 + trunk/gosa-si/debian/gosa-si-server.manpages | 2 + trunk/gosa-si/debian/gosa-si-server.postinst | 20 + trunk/gosa-si/debian/rules | 92 + trunk/gosa-si/gosa-si-client | 1263 + trunk/gosa-si/gosa-si-client.1 | 181 + trunk/gosa-si/gosa-si-client.conf.5 | 216 + trunk/gosa-si/gosa-si-client.pod | 56 + trunk/gosa-si/gosa-si-server | 3511 + trunk/gosa-si/gosa-si-server.1 | 183 + trunk/gosa-si/gosa-si-server.conf.5 | 286 + trunk/gosa-si/gosa-si-server.pod | 58 + trunk/gosa-si/modules/ArpHandler.pm | 450 + trunk/gosa-si/modules/ArpWatch.pm | 177 + trunk/gosa-si/modules/ClientPackages.pm | 1069 + trunk/gosa-si/modules/DBmysql.pm | 347 + trunk/gosa-si/modules/DBsqlite.pm | 407 + trunk/gosa-si/modules/GosaPackages.pm | 313 + trunk/gosa-si/modules/GosaSupportDaemon.pm | 885 + trunk/gosa-si/modules/ServerPackages.pm | 121 + trunk/gosa-si/modules/TestModule.pm | 76 + trunk/gosa-si/modules/oui.txt | 70911 ++++++++++++++++ trunk/gosa-si/server.conf | 27 + trunk/gosa-si/server.conf.pod | 231 + trunk/gosa-si/server/events/clMessages.pm | 804 + trunk/gosa-si/server/events/databases.pm | 309 + trunk/gosa-si/server/events/gosaTriggered.pm | 1267 + trunk/gosa-si/server/events/logHandling.pm | 485 + trunk/gosa-si/server/events/mailqueue_com.pm | 264 + trunk/gosa-si/server/events/opsi_com.pm | 1292 + .../server/events/server_server_com.pm | 406 + trunk/gosa-si/server/events/siTriggered.pm | 254 + trunk/gosa-si/tests/client.php | 231 + trunk/gosa-si/tests/db-check-clients.pl | 41 + trunk/gosa-si/tests/db-check-fai-release.pl | 41 + trunk/gosa-si/tests/db-check-fai-server.pl | 41 + .../gosa-si/tests/db-check-foreign-clients.pl | 41 + trunk/gosa-si/tests/db-check-incoming.pl | 41 + trunk/gosa-si/tests/db-check-jobs.pl | 41 + trunk/gosa-si/tests/db-check-messaging.pl | 41 + trunk/gosa-si/tests/db-check-packages-list.pl | 41 + trunk/gosa-si/tests/db-check-server.pl | 41 + trunk/gosa-si/tests/db-check-users.pl | 41 + trunk/gosa-si/tests/deploy-gosa-si.pl | 77 + trunk/gosa-si/tests/log-parser.pl | 51 + trunk/gosa-si/tests/sqlite-check-clients.pl | 46 + .../gosa-si/tests/sqlite-check-fai-release.pl | 44 + .../gosa-si/tests/sqlite-check-fai-server.pl | 44 + .../tests/sqlite-check-foreign-clients.pl | 46 + trunk/gosa-si/tests/sqlite-check-incoming.pl | 46 + trunk/gosa-si/tests/sqlite-check-jobs.pl | 46 + trunk/gosa-si/tests/sqlite-check-messaging.pl | 44 + .../tests/sqlite-check-packages-list.pl | 46 + trunk/gosa-si/tests/sqlite-check-server.pl | 45 + trunk/gosa-si/tests/sqlite-check-users.pl | 48 + trunk/gosa-si/tests/testGOsa.pl | 107 + 3984 files changed, 689052 insertions(+) create mode 100644 trunk/gosa-core/AUTHORS create mode 100644 trunk/gosa-core/CODING create mode 100644 trunk/gosa-core/COPYING create mode 100644 trunk/gosa-core/Changelog create mode 100644 trunk/gosa-core/FAQ create mode 100644 trunk/gosa-core/INSTALL create mode 100644 trunk/gosa-core/README create mode 100644 trunk/gosa-core/README.safemode create mode 100755 trunk/gosa-core/bin/gosa-encrypt-passwords create mode 100755 trunk/gosa-core/bin/mkntpasswd create mode 100644 trunk/gosa-core/contrib/artwork/GOsa-logo.eps create mode 100644 trunk/gosa-core/contrib/desktoprc create mode 100644 trunk/gosa-core/contrib/encodings create mode 100755 trunk/gosa-core/contrib/extract-locale create mode 100755 trunk/gosa-core/contrib/gosa create mode 100644 trunk/gosa-core/contrib/gosa.1 create mode 100644 trunk/gosa-core/contrib/gosa.conf create mode 100644 trunk/gosa-core/contrib/gosa.conf.5 create mode 100644 trunk/gosa-core/contrib/gosa.spec create mode 100755 trunk/gosa-core/contrib/latex2html create mode 100755 trunk/gosa-core/contrib/make-gosa-package create mode 100644 trunk/gosa-core/contrib/openldap/gofax.ldif create mode 100644 trunk/gosa-core/contrib/openldap/gofax.schema create mode 100644 trunk/gosa-core/contrib/openldap/gofon.ldif create mode 100644 trunk/gosa-core/contrib/openldap/gofon.schema create mode 100644 trunk/gosa-core/contrib/openldap/gosa-samba2.ldif create mode 100644 trunk/gosa-core/contrib/openldap/gosa-samba2.schema create mode 100644 trunk/gosa-core/contrib/openldap/gosa-samba3.ldif create mode 100644 trunk/gosa-core/contrib/openldap/gosa-samba3.schema create mode 100644 trunk/gosa-core/contrib/openldap/goserver.ldif create mode 100644 trunk/gosa-core/contrib/openldap/goserver.schema create mode 100644 trunk/gosa-core/contrib/openldap/gosystem.ldif create mode 100644 trunk/gosa-core/contrib/openldap/gosystem.schema create mode 100644 trunk/gosa-core/contrib/openldap/goto-mime.ldif create mode 100644 trunk/gosa-core/contrib/openldap/goto-mime.schema create mode 100644 trunk/gosa-core/contrib/openldap/goto.ldif create mode 100644 trunk/gosa-core/contrib/openldap/goto.schema create mode 100644 trunk/gosa-core/contrib/openldap/rfc2307bis.ldif create mode 100644 trunk/gosa-core/contrib/openldap/rfc2307bis.schema create mode 100644 trunk/gosa-core/contrib/openldap/samba.ldif create mode 100644 trunk/gosa-core/contrib/openldap/samba.schema create mode 100644 trunk/gosa-core/contrib/openldap/samba3.ldif create mode 100644 trunk/gosa-core/contrib/openldap/samba3.schema create mode 100644 trunk/gosa-core/contrib/openldap/slapd.conf create mode 100644 trunk/gosa-core/contrib/openldap/trust.ldif create mode 100644 trunk/gosa-core/contrib/openldap/trust.schema create mode 100644 trunk/gosa-core/contrib/shells create mode 100644 trunk/gosa-core/debian/README.Debian create mode 100644 trunk/gosa-core/debian/changelog create mode 100644 trunk/gosa-core/debian/compat create mode 100644 trunk/gosa-core/debian/control create mode 100644 trunk/gosa-core/debian/copyright create mode 100644 trunk/gosa-core/debian/gosa-16.xpm create mode 100644 trunk/gosa-core/debian/gosa-apache.conf create mode 100644 trunk/gosa-core/debian/gosa-desktop.config create mode 100644 trunk/gosa-core/debian/gosa-desktop.desktop create mode 100644 trunk/gosa-core/debian/gosa-desktop.dirs create mode 100644 trunk/gosa-core/debian/gosa-desktop.install create mode 100644 trunk/gosa-core/debian/gosa-desktop.manpages create mode 100644 trunk/gosa-core/debian/gosa-desktop.menu create mode 100644 trunk/gosa-core/debian/gosa-desktop.postinst create mode 100644 trunk/gosa-core/debian/gosa-desktop.postrm create mode 100644 trunk/gosa-core/debian/gosa-desktop.templates create mode 100644 trunk/gosa-core/debian/gosa-dev.dirs create mode 100644 trunk/gosa-core/debian/gosa-dev.install create mode 100644 trunk/gosa-core/debian/gosa-dev.manpages create mode 100644 trunk/gosa-core/debian/gosa-help-de.dirs create mode 100644 trunk/gosa-core/debian/gosa-help-de.install create mode 100644 trunk/gosa-core/debian/gosa-help-en.dirs create mode 100644 trunk/gosa-core/debian/gosa-help-en.install create mode 100644 trunk/gosa-core/debian/gosa-help-es.dirs create mode 100644 trunk/gosa-core/debian/gosa-help-es.install create mode 100644 trunk/gosa-core/debian/gosa-help-fr.dirs create mode 100644 trunk/gosa-core/debian/gosa-help-fr.install create mode 100644 trunk/gosa-core/debian/gosa-help-nl.dirs create mode 100644 trunk/gosa-core/debian/gosa-help-nl.install create mode 100644 trunk/gosa-core/debian/gosa-schema.dirs create mode 100644 trunk/gosa-core/debian/gosa-schema.install create mode 100644 trunk/gosa-core/debian/gosa.dirs create mode 100644 trunk/gosa-core/debian/gosa.docs create mode 100644 trunk/gosa-core/debian/gosa.install create mode 100644 trunk/gosa-core/debian/gosa.lintian-overrides create mode 100644 trunk/gosa-core/debian/gosa.manpages create mode 100644 trunk/gosa-core/debian/gosa.postinst create mode 100644 trunk/gosa-core/debian/gosa.postrm create mode 100644 trunk/gosa-core/debian/gosa.xpm create mode 100644 trunk/gosa-core/debian/patches/00list create mode 100755 trunk/gosa-core/debian/patches/01_fix_smarty_location.dpatch create mode 100755 trunk/gosa-core/debian/patches/02_fix_template_location.dpatch create mode 100755 trunk/gosa-core/debian/patches/03_fix_class_mapping.dpatch create mode 100755 trunk/gosa-core/debian/patches/04_fix_locale_location.dpatch create mode 100755 trunk/gosa-core/debian/patches/04_fix_online_help_location.dpatch create mode 100644 trunk/gosa-core/debian/po/POTFILES.in create mode 100644 trunk/gosa-core/debian/po/cz.po create mode 100644 trunk/gosa-core/debian/po/de.po create mode 100644 trunk/gosa-core/debian/po/es.po create mode 100644 trunk/gosa-core/debian/po/eu.po create mode 100644 trunk/gosa-core/debian/po/fi.po create mode 100644 trunk/gosa-core/debian/po/fr.po create mode 100644 trunk/gosa-core/debian/po/it.po create mode 100644 trunk/gosa-core/debian/po/nl.po create mode 100644 trunk/gosa-core/debian/po/pl.po create mode 100644 trunk/gosa-core/debian/po/pt.po create mode 100644 trunk/gosa-core/debian/po/ru.po create mode 100644 trunk/gosa-core/debian/po/sv.po create mode 100644 trunk/gosa-core/debian/po/templates.pot create mode 100755 trunk/gosa-core/debian/rules create mode 100644 trunk/gosa-core/debian/smarty-acl-render.dirs create mode 100644 trunk/gosa-core/debian/smarty-acl-render.install create mode 100644 trunk/gosa-core/debian/watch create mode 100755 trunk/gosa-core/dh-make-gosa create mode 100644 trunk/gosa-core/dh-make-gosa.1 create mode 100644 trunk/gosa-core/doc/admin/en/manual_gosa_en.tex create mode 100644 trunk/gosa-core/doc/admin/en/manual_gosa_en_apache.tex create mode 100644 trunk/gosa-core/doc/admin/en/manual_gosa_en_ldap.tex create mode 100644 trunk/gosa-core/doc/admin/en/referencias_gosa.bib create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_apache.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_certificates.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_dns.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_fileserver.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_ftp.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_gw.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_im.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_kerberos.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_ldap.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_mail.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_otros.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_printing.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_proxy.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_ssh.tex create mode 100644 trunk/gosa-core/doc/admin/es/manual_gosa_es_vpn.tex create mode 100644 trunk/gosa-core/doc/admin/es/referencias_gosa.bib create mode 100644 trunk/gosa-core/doc/core/de/html/applications/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/applications/applications.css create mode 100644 trunk/gosa-core/doc/core/de/html/applications/applications.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/edit.png create mode 100644 trunk/gosa-core/doc/core/de/html/applications/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/applications/list_back.png create mode 100644 trunk/gosa-core/doc/core/de/html/applications/list_home.png create mode 100644 trunk/gosa-core/doc/core/de/html/applications/list_new_app.png create mode 100644 trunk/gosa-core/doc/core/de/html/applications/list_reload.png create mode 100644 trunk/gosa-core/doc/core/de/html/applications/list_root.png create mode 100644 trunk/gosa-core/doc/core/de/html/applications/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/node4.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/node5.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/node6.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/node7.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/node8.html create mode 100644 trunk/gosa-core/doc/core/de/html/applications/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/applications/search.png create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/blocklists.css create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/blocklists.html create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/list_back.png create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/list_home.png create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/list_new_blocklist.png create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/list_reload.png create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/list_root.png create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/node4.html create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/node5.html create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/blocklists/search.png create mode 100644 trunk/gosa-core/doc/core/de/html/conference/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/conference/conference.css create mode 100644 trunk/gosa-core/doc/core/de/html/conference/conference.html create mode 100644 trunk/gosa-core/doc/core/de/html/conference/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/conference/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/conference/list_back.png create mode 100644 trunk/gosa-core/doc/core/de/html/conference/list_home.png create mode 100644 trunk/gosa-core/doc/core/de/html/conference/list_reload.png create mode 100644 trunk/gosa-core/doc/core/de/html/conference/list_root.png create mode 100644 trunk/gosa-core/doc/core/de/html/conference/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/conference/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/conference/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/conference/node4.html create mode 100644 trunk/gosa-core/doc/core/de/html/conference/node5.html create mode 100644 trunk/gosa-core/doc/core/de/html/conference/node6.html create mode 100644 trunk/gosa-core/doc/core/de/html/conference/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/conference/search.png create mode 100644 trunk/gosa-core/doc/core/de/html/conference/select_new_component.png create mode 100644 trunk/gosa-core/doc/core/de/html/departments/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/departments/departments.css create mode 100644 trunk/gosa-core/doc/core/de/html/departments/departments.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/edit.png create mode 100644 trunk/gosa-core/doc/core/de/html/departments/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/departments/list_back.png create mode 100644 trunk/gosa-core/doc/core/de/html/departments/list_home.png create mode 100644 trunk/gosa-core/doc/core/de/html/departments/list_new_department.png create mode 100644 trunk/gosa-core/doc/core/de/html/departments/list_reload.png create mode 100644 trunk/gosa-core/doc/core/de/html/departments/list_root.png create mode 100644 trunk/gosa-core/doc/core/de/html/departments/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/node4.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/node5.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/node6.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/node7.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/node8.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/node9.html create mode 100644 trunk/gosa-core/doc/core/de/html/departments/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/departments/search.png create mode 100644 trunk/gosa-core/doc/core/de/html/faxreports/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/faxreports/faxreports.css create mode 100644 trunk/gosa-core/doc/core/de/html/faxreports/faxreports.html create mode 100644 trunk/gosa-core/doc/core/de/html/faxreports/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/faxreports/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/faxreports/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/faxreports/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/faxreports/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/faxreports/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/fonreports/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/fonreports/fonreports.css create mode 100644 trunk/gosa-core/doc/core/de/html/fonreports/fonreports.html create mode 100644 trunk/gosa-core/doc/core/de/html/fonreports/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/fonreports/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/fonreports/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/fonreports/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/fonreports/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/fonreports/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/groups/groups.css create mode 100644 trunk/gosa-core/doc/core/de/html/groups/groups.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/groups/list_back.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/list_home.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/list_new_group.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/list_reload.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/list_root.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/mailto.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node10.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node11.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node12.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node13.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node14.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node15.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node16.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node17.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node18.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node19.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node20.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node4.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node5.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node6.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node7.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node8.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/node9.html create mode 100644 trunk/gosa-core/doc/core/de/html/groups/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/select_application.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/select_groups.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/select_winstation.png create mode 100644 trunk/gosa-core/doc/core/de/html/groups/smallenv.png create mode 100644 trunk/gosa-core/doc/core/de/html/logview/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/logview/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/logview/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/logview/logview.css create mode 100644 trunk/gosa-core/doc/core/de/html/logview/logview.html create mode 100644 trunk/gosa-core/doc/core/de/html/logview/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/logview/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/logview/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/macro/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/macro/false.png create mode 100644 trunk/gosa-core/doc/core/de/html/macro/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/macro/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/macro/list_back.png create mode 100644 trunk/gosa-core/doc/core/de/html/macro/list_home.png create mode 100644 trunk/gosa-core/doc/core/de/html/macro/list_new_macro.png create mode 100644 trunk/gosa-core/doc/core/de/html/macro/list_reload.png create mode 100644 trunk/gosa-core/doc/core/de/html/macro/list_root.png create mode 100644 trunk/gosa-core/doc/core/de/html/macro/macro.css create mode 100644 trunk/gosa-core/doc/core/de/html/macro/macro.html create mode 100644 trunk/gosa-core/doc/core/de/html/macro/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/macro/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/macro/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/macro/node4.html create mode 100644 trunk/gosa-core/doc/core/de/html/macro/node5.html create mode 100644 trunk/gosa-core/doc/core/de/html/macro/node6.html create mode 100644 trunk/gosa-core/doc/core/de/html/macro/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/macro/search.png create mode 100644 trunk/gosa-core/doc/core/de/html/macro/true.png create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/edittrash.png create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/mailq_hold.png create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/mailq_requeue.png create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/mailq_unhold.png create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/mailqueue.css create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/mailqueue.html create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/node4.html create mode 100644 trunk/gosa-core/doc/core/de/html/mailqueue/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/list_back.png create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/list_home.png create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/list_new_ogroup.png create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/list_reload.png create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/list_root.png create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/node4.html create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/ogroups.css create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/ogroups.html create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/ogroups/search.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/WARNINGS create mode 100644 trunk/gosa-core/doc/core/de/html/users/fax_small.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/index.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/labels.pl create mode 100644 trunk/gosa-core/doc/core/de/html/users/list_back.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/list_home.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/list_new_user.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/list_reload.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/list_root.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/mailto.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/node1.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node10.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node11.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node12.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node13.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node14.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node15.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node16.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node17.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node18.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node19.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node2.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node20.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node21.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node22.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node23.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node24.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node25.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node26.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node27.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node28.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node29.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node3.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node30.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node31.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node32.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node33.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node34.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node35.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node36.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node37.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node38.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node39.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node4.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node40.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node41.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node42.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node43.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node44.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node45.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node46.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node47.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node48.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node49.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node5.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node50.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node6.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node7.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node8.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/node9.html create mode 100644 trunk/gosa-core/doc/core/de/html/users/penguin.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/search.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/select_netatalk.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/select_phone.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/select_user.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/select_winstation.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/smallenv.png create mode 100644 trunk/gosa-core/doc/core/de/html/users/users.css create mode 100644 trunk/gosa-core/doc/core/de/html/users/users.html create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/applications.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/blocklists.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/conference.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/departments.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/faxreports.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/fonreports.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/groups.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/action.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/addr_company.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/addr_home.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/addr_personal.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/addressbook.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/alternatemail.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/application.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/back.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/banana.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/blocklists.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/branch.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/branch_small.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/button_cancel.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/cant_editpaste.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/certs.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/closedlock.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/conference.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/copypaste.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/crossref.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/cutpaste.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/default.jpg create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/default_icon.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/department.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/dfs.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/dhcp.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/display.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/dns.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/drives.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/dtree.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/edit.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/editcopy.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/editcut.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/editdelete.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/editpaste.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/edittrash.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/email.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/empty.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/encrypted.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/env.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/envelope.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/expand.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_hook.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_new_hook.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_new_packages.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_new_partitionTable.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_new_profile.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_new_script.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_new_template.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_new_variable.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_packages.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_partitionTable.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_profile.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_script.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_small.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_template.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fai_variable.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/false.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fax.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fax_small.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/filesaveas.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/flag.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/folder.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/forward.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/ftp.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/fullfolder.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/gfx_hardware.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/group.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/hardware.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/hdd_linux_unmount.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/head.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/help.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/hotplug.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/house.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/img1.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/info.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/info_small.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/keyboard.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/lamp.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/launch.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/ldapserver.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/ldif.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_back.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_blocklist.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_home.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_macro.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_new.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_new_app.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_new_blocklist.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_new_conference.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_new_department.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_new_group.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_new_macro.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_new_ogroup.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_new_user.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_ogroup.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_password.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_reload.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_root.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_seperator.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_submit.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/list_up.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/log_critical.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/log_info.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/log_unknown.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/log_warning.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/login.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/logview.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/macros.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/mailq_active.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/mailq_header.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/mailq_hold.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/mailq_requeue.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/mailq_unhold.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/mailqueue.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/mailto.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/mainboard.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/members.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/memory.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/monitor.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/monitoring.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/mouse.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/net_hardware.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/netatalk.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/network.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/null.gif create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/ogroup.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/openlock.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/password.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/penguin.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/personal.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/phone.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/phonereport.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/posix.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/printer.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/processor.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/proxy.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/reports.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/rightarrow.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/rocket.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/samba.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/save.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/scanner.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/search.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/search_user.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_application.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_component.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_conference.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_default.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_department.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_groups.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_invalid_application.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_macro.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_netatalk.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_new_component.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_new_phone.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_new_printer.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_new_server.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_new_terminal.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_new_workstation.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_newsystem.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_ogroup.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_phone.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_phone_connected.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_printer.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_proxy.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_server.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_template.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_terminal.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_user.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_winstation.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/select_workstation.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/server.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/service.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/small_filter.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/smallenv.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/snd_hardware.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/sort_down.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/sort_up.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/sound.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/stop.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/system.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/terminal_small.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/time.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/tree.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/true.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/user.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/warning.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/images/zip.png create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/ldapmanager.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/logview.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/macro.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/mailqueue.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/ogroups.lyx create mode 100644 trunk/gosa-core/doc/core/de/lyx-source/users.lyx create mode 100644 trunk/gosa-core/doc/core/en/html/applications/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/applications/applications.css create mode 100644 trunk/gosa-core/doc/core/en/html/applications/applications.html create mode 100644 trunk/gosa-core/doc/core/en/html/applications/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/applications/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/applications/list_back.png create mode 100644 trunk/gosa-core/doc/core/en/html/applications/list_home.png create mode 100644 trunk/gosa-core/doc/core/en/html/applications/list_new_app.png create mode 100644 trunk/gosa-core/doc/core/en/html/applications/list_root.png create mode 100644 trunk/gosa-core/doc/core/en/html/applications/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/applications/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/applications/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/applications/node4.html create mode 100644 trunk/gosa-core/doc/core/en/html/applications/node5.html create mode 100644 trunk/gosa-core/doc/core/en/html/applications/node6.html create mode 100644 trunk/gosa-core/doc/core/en/html/applications/node7.html create mode 100644 trunk/gosa-core/doc/core/en/html/applications/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/applications/search.png create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/blocklists.css create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/blocklists.html create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/list_back.png create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/list_home.png create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/list_new_blocklist.png create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/list_root.png create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/node4.html create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/node5.html create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/blocklists/search.png create mode 100644 trunk/gosa-core/doc/core/en/html/conference/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/conference/conference.css create mode 100644 trunk/gosa-core/doc/core/en/html/conference/conference.html create mode 100644 trunk/gosa-core/doc/core/en/html/conference/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/conference/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/conference/list_back.png create mode 100644 trunk/gosa-core/doc/core/en/html/conference/list_home.png create mode 100644 trunk/gosa-core/doc/core/en/html/conference/list_root.png create mode 100644 trunk/gosa-core/doc/core/en/html/conference/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/conference/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/conference/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/conference/node4.html create mode 100644 trunk/gosa-core/doc/core/en/html/conference/node5.html create mode 100644 trunk/gosa-core/doc/core/en/html/conference/node6.html create mode 100644 trunk/gosa-core/doc/core/en/html/conference/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/conference/search.png create mode 100644 trunk/gosa-core/doc/core/en/html/conference/select_new_component.png create mode 100644 trunk/gosa-core/doc/core/en/html/departments/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/departments/departments.css create mode 100644 trunk/gosa-core/doc/core/en/html/departments/departments.html create mode 100644 trunk/gosa-core/doc/core/en/html/departments/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/departments/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/departments/list_back.png create mode 100644 trunk/gosa-core/doc/core/en/html/departments/list_home.png create mode 100644 trunk/gosa-core/doc/core/en/html/departments/list_new_department.png create mode 100644 trunk/gosa-core/doc/core/en/html/departments/list_root.png create mode 100644 trunk/gosa-core/doc/core/en/html/departments/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/departments/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/departments/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/departments/node4.html create mode 100644 trunk/gosa-core/doc/core/en/html/departments/node5.html create mode 100644 trunk/gosa-core/doc/core/en/html/departments/node6.html create mode 100644 trunk/gosa-core/doc/core/en/html/departments/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/departments/search.png create mode 100644 trunk/gosa-core/doc/core/en/html/faxreports/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/faxreports/faxreports.css create mode 100644 trunk/gosa-core/doc/core/en/html/faxreports/faxreports.html create mode 100644 trunk/gosa-core/doc/core/en/html/faxreports/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/faxreports/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/faxreports/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/faxreports/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/faxreports/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/faxreports/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/fonreports/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/fonreports/fonreports.css create mode 100644 trunk/gosa-core/doc/core/en/html/fonreports/fonreports.html create mode 100644 trunk/gosa-core/doc/core/en/html/fonreports/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/fonreports/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/fonreports/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/fonreports/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/fonreports/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/fonreports/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/groups/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/groups/groups.css create mode 100644 trunk/gosa-core/doc/core/en/html/groups/groups.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/groups/list_back.png create mode 100644 trunk/gosa-core/doc/core/en/html/groups/list_home.png create mode 100644 trunk/gosa-core/doc/core/en/html/groups/list_new_group.png create mode 100644 trunk/gosa-core/doc/core/en/html/groups/list_root.png create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node10.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node11.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node12.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node13.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node14.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node15.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node16.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node17.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node18.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node4.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node5.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node6.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node7.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node8.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/node9.html create mode 100644 trunk/gosa-core/doc/core/en/html/groups/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/ldapmanager.css create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/ldapmanager.html create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/node4.html create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/node5.html create mode 100644 trunk/gosa-core/doc/core/en/html/ldapmanager/node6.html create mode 100644 trunk/gosa-core/doc/core/en/html/logview/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/logview/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/logview/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/logview/logview.css create mode 100644 trunk/gosa-core/doc/core/en/html/logview/logview.html create mode 100644 trunk/gosa-core/doc/core/en/html/logview/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/logview/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/logview/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/macro/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/macro/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/macro/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/macro/list_back.png create mode 100644 trunk/gosa-core/doc/core/en/html/macro/list_home.png create mode 100644 trunk/gosa-core/doc/core/en/html/macro/list_new_macro.png create mode 100644 trunk/gosa-core/doc/core/en/html/macro/list_root.png create mode 100644 trunk/gosa-core/doc/core/en/html/macro/macro.css create mode 100644 trunk/gosa-core/doc/core/en/html/macro/macro.html create mode 100644 trunk/gosa-core/doc/core/en/html/macro/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/macro/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/macro/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/macro/node4.html create mode 100644 trunk/gosa-core/doc/core/en/html/macro/node5.html create mode 100644 trunk/gosa-core/doc/core/en/html/macro/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/macro/search.png create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/list_back.png create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/list_home.png create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/list_new_ogroup.png create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/list_root.png create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/node4.html create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/ogroups.css create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/ogroups.html create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/ogroups/search.png create mode 100644 trunk/gosa-core/doc/core/en/html/users/WARNINGS create mode 100644 trunk/gosa-core/doc/core/en/html/users/index.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/labels.pl create mode 100644 trunk/gosa-core/doc/core/en/html/users/list_back.png create mode 100644 trunk/gosa-core/doc/core/en/html/users/list_home.png create mode 100644 trunk/gosa-core/doc/core/en/html/users/list_new_user.png create mode 100644 trunk/gosa-core/doc/core/en/html/users/list_root.png create mode 100644 trunk/gosa-core/doc/core/en/html/users/node1.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node10.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node11.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node12.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node13.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node14.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node15.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node16.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node17.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node18.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node19.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node2.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node20.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node21.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node22.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node23.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node24.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node25.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node26.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node27.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node28.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node29.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node3.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node30.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node31.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node32.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node33.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node34.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node35.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node36.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node37.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node38.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node39.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node4.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node40.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node41.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node42.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node5.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node6.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node7.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node8.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/node9.html create mode 100644 trunk/gosa-core/doc/core/en/html/users/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/html/users/search.png create mode 100644 trunk/gosa-core/doc/core/en/html/users/users.css create mode 100644 trunk/gosa-core/doc/core/en/html/users/users.html create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/applications.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/blocklists.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/conference.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/departments.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/faxreports.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/fonreports.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/groups.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/action.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/addr_company.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/addr_home.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/addr_personal.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/addressbook.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/alternatemail.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/application.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/back.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/banana.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/blocklists.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/button_cancel.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/certs.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/closedlock.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/conference.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/crossref.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/default.jpg create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/default_icon.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/department.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/dhcp.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/display.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/dns.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/dtree.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/edit.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/editcopy.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/editdelete.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/editpaste.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/edittrash.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/email.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/empty.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/encrypted.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/envelope.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/expand.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/false.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/fax.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/fax_small.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/filesaveas.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/flag.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/folder.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/forward.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/ftp.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/fullfolder.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/group.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/hardware.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/hdd_linux_unmount.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/head.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/help.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/house.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/img1.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/info.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/info_small.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/keyboard.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/lamp.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/launch.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/ldapserver.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/ldif.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_back.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_blocklist.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_home.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_macro.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_new.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_new_app.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_new_blocklist.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_new_department.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_new_group.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_new_macro.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_new_ogroup.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_new_user.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_ogroup.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_password.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_root.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_seperator.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_submit.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/list_up.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/log_critical.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/log_info.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/log_unknown.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/log_warning.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/login.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/logview.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/macros.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/mailto.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/members.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/mouse.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/network.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/null.gif create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/ogroup.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/openlock.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/password.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/penguin.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/personal.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/phone.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/phonereport.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/posix.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/printer.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/proxy.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/reports.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/rightarrow.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/rocket.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/samba.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/save.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/scanner.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/search.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_application.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_component.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_default.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_department.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_groups.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_macro.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_new_component.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_new_phone.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_new_printer.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_new_server.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_new_terminal.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_new_workstation.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_ogroup.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_phone.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_phone_connected.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_printer.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_proxy.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_server.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_template.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_terminal.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_user.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_winstation.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/select_workstation.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/server.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/service.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/small_filter.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/sort_down.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/sort_up.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/sound.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/stop.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/system.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/terminal_small.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/time.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/tree.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/true.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/user.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/warning.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/images/zip.png create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/ldapmanager.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/logview.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/macro.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/ogroups.lyx create mode 100644 trunk/gosa-core/doc/core/en/lyx-source/users.lyx create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/action.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/addr_company.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/addr_home.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/addr_personal.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/addressbook.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/alternatemail.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/application.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/back.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/banana.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/blocklists.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/branch.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/branch_small.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/button_cancel.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/cant_editpaste.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/certs.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/closedlock.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/conference.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/copypaste.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/crossref.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/cutpaste.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/default.jpg create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/default_icon.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/department.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/dfs.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/dhcp.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/display.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/dns.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/drives.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/dtree.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/edit.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/editcopy.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/editcut.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/editdelete.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/editpaste.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/edittrash.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/email.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/empty.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/encrypted.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/env.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/envelope.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/expand.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_hook.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_new_hook.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_new_packages.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_new_partitionTable.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_new_profile.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_new_script.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_new_template.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_new_variable.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_packages.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_partitionTable.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_profile.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_script.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_small.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_template.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fai_variable.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/false.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fax.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fax_small.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/filesaveas.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/flag.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/folder.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/forward.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/ftp.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/fullfolder.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/gfx_hardware.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/group.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/hardware.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/hdd_linux_unmount.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/head.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/help.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/hotplug.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/house.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/img1.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/info.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/info_small.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/keyboard.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/lamp.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/launch.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/ldapserver.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/ldif.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_back.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_blocklist.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_home.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_macro.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_new.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_new_app.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_new_blocklist.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_new_conference.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_new_department.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_new_group.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_new_macro.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_new_ogroup.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_new_user.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_ogroup.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_password.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_reload.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_root.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_seperator.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_submit.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/list_up.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/log_critical.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/log_info.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/log_unknown.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/log_warning.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/login.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/logview.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/macros.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/mailq_active.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/mailq_header.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/mailq_hold.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/mailq_requeue.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/mailq_unhold.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/mailqueue.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/mailto.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/mainboard.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/members.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/memory.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/monitor.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/monitoring.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/mouse.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/net_hardware.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/netatalk.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/network.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/null.gif create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/ogroup.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/openlock.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/password.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/penguin.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/personal.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/phone.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/phonereport.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/posix.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/printer.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/processor.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/proxy.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/reports.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/rightarrow.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/rocket.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/samba.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/save.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/scanner.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/search.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/search_user.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_application.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_component.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_conference.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_default.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_department.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_groups.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_invalid_application.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_macro.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_netatalk.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_new_component.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_new_phone.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_new_printer.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_new_server.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_new_terminal.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_new_workstation.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_newsystem.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_ogroup.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_phone.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_phone_connected.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_printer.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_proxy.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_server.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_template.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_terminal.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_user.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_winstation.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/select_workstation.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/server.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/service.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/small_filter.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/smallenv.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/snd_hardware.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/sort_down.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/sort_up.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/sound.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/stop.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/system.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/terminal_small.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/time.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/tree.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/true.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/user.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/warning.png create mode 100644 trunk/gosa-core/doc/core/es/lyx-source/images/zip.png create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/applications.css create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/applications.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/list_back.png create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/list_home.png create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/list_new_app.png create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/list_root.png create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/node3.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/node4.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/node5.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/node6.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/node7.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/node8.html create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/rocket.png create mode 100644 trunk/gosa-core/doc/core/fr/html/applications/search.png create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/blocklists.css create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/blocklists.html create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/list_back.png create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/list_home.png create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/list_new_blocklist.png create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/list_root.png create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/node3.html create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/node4.html create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/rocket.png create mode 100644 trunk/gosa-core/doc/core/fr/html/blocklists/search.png create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/conference.css create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/conference.html create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/conference.png create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/list_back.png create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/list_home.png create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/list_root.png create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/node3.html create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/node4.html create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/node5.html create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/node6.html create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/rocket.png create mode 100644 trunk/gosa-core/doc/core/fr/html/conference/search.png create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/departments.css create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/departments.html create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/list_back.png create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/list_home.png create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/list_new_department.png create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/list_root.png create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/node3.html create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/node4.html create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/node5.html create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/node6.html create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/rocket.png create mode 100644 trunk/gosa-core/doc/core/fr/html/departments/search.png create mode 100644 trunk/gosa-core/doc/core/fr/html/faxreports/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/faxreports/faxreports.css create mode 100644 trunk/gosa-core/doc/core/fr/html/faxreports/faxreports.html create mode 100644 trunk/gosa-core/doc/core/fr/html/faxreports/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/faxreports/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/faxreports/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/faxreports/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/fonreports/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/fonreports/fonreports.css create mode 100644 trunk/gosa-core/doc/core/fr/html/fonreports/fonreports.html create mode 100644 trunk/gosa-core/doc/core/fr/html/fonreports/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/fonreports/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/fonreports/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/fonreports/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/groups.css create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/groups.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/list_back.png create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/list_home.png create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/list_new_group.png create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/list_root.png create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node10.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node11.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node12.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node13.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node14.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node15.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node16.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node17.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node18.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node3.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node4.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node5.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node6.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node7.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node8.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/node9.html create mode 100644 trunk/gosa-core/doc/core/fr/html/groups/rocket.png create mode 100644 trunk/gosa-core/doc/core/fr/html/ldapmanager/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/ldapmanager/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/ldapmanager/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/ldapmanager/ldapmanager.css create mode 100644 trunk/gosa-core/doc/core/fr/html/ldapmanager/ldapmanager.html create mode 100644 trunk/gosa-core/doc/core/fr/html/ldapmanager/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/ldapmanager/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/logview/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/logview/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/logview/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/logview/logview.css create mode 100644 trunk/gosa-core/doc/core/fr/html/logview/logview.html create mode 100644 trunk/gosa-core/doc/core/fr/html/logview/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/logview/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/list_back.png create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/list_home.png create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/list_new_macro.png create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/list_root.png create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/macro.css create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/macro.html create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/node3.html create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/node4.html create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/node5.html create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/rocket.png create mode 100644 trunk/gosa-core/doc/core/fr/html/macro/search.png create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/list_back.png create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/list_home.png create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/list_new_ogroup.png create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/list_root.png create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/node3.html create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/node4.html create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/ogroups.css create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/ogroups.html create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/rocket.png create mode 100644 trunk/gosa-core/doc/core/fr/html/ogroups/search.png create mode 100644 trunk/gosa-core/doc/core/fr/html/users/WARNINGS create mode 100644 trunk/gosa-core/doc/core/fr/html/users/closedlock.png create mode 100644 trunk/gosa-core/doc/core/fr/html/users/index.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/labels.pl create mode 100644 trunk/gosa-core/doc/core/fr/html/users/list_back.png create mode 100644 trunk/gosa-core/doc/core/fr/html/users/list_home.png create mode 100644 trunk/gosa-core/doc/core/fr/html/users/list_new_user.png create mode 100644 trunk/gosa-core/doc/core/fr/html/users/list_root.png create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node1.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node10.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node11.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node12.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node13.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node14.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node15.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node16.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node17.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node18.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node19.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node2.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node20.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node21.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node22.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node23.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node24.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node25.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node26.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node27.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node28.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node29.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node3.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node30.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node31.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node32.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node33.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node34.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node35.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node36.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node37.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node38.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node39.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node4.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node40.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node41.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node42.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node5.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node6.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node7.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node8.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/node9.html create mode 100644 trunk/gosa-core/doc/core/fr/html/users/rocket.png create mode 100644 trunk/gosa-core/doc/core/fr/html/users/search.png create mode 100644 trunk/gosa-core/doc/core/fr/html/users/users.css create mode 100644 trunk/gosa-core/doc/core/fr/html/users/users.html create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/applications.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/blocklists.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/conference.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/departments.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/faxreports.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/fonreports.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/groups.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/action.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/addr_company.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/addr_home.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/addr_personal.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/addressbook.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/alternatemail.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/application.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/back.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/banana.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/blocklists.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/button_cancel.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/certs.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/closedlock.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/conference.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/crossref.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/default.jpg create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/default_icon.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/department.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/dhcp.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/display.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/dns.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/dtree.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/edit.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/editcopy.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/editdelete.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/editpaste.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/edittrash.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/email.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/empty.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/encrypted.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/envelope.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/expand.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/false.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/fax.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/fax_small.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/filesaveas.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/flag.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/folder.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/forward.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/ftp.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/fullfolder.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/group.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/hardware.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/hdd_linux_unmount.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/head.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/help.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/house.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/img1.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/info.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/info_small.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/keyboard.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/lamp.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/launch.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/ldapserver.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/ldif.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_back.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_blocklist.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_home.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_macro.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_new.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_new_app.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_new_blocklist.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_new_department.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_new_group.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_new_macro.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_new_ogroup.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_new_user.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_ogroup.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_password.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_root.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_seperator.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_submit.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/list_up.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/log_critical.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/log_info.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/log_unknown.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/log_warning.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/login.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/logview.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/macros.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/mailto.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/members.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/mouse.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/network.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/null.gif create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/ogroup.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/openlock.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/password.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/penguin.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/personal.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/phone.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/phonereport.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/posix.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/printer.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/proxy.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/reports.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/rightarrow.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/rocket.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/samba.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/save.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/scanner.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/search.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_application.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_component.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_default.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_department.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_groups.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_macro.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_new_component.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_new_phone.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_new_printer.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_new_server.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_new_terminal.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_new_workstation.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_ogroup.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_phone.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_phone_connected.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_printer.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_proxy.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_server.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_template.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_terminal.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_user.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_winstation.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/select_workstation.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/server.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/service.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/small_filter.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/sort_down.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/sort_up.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/sound.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/stop.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/system.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/terminal_small.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/time.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/tree.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/true.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/user.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/warning.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/images/zip.png create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/ldapmanager.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/logview.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/macro.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/ogroups.lyx create mode 100644 trunk/gosa-core/doc/core/fr/lyx-source/users.lyx create mode 100644 trunk/gosa-core/doc/core/guide.xml create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/WARNINGS create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/departments.css create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/departments.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/index.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/labels.pl create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/list_back.png create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/list_home.png create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/list_new_department.png create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/list_reload.png create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/list_root.png create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node1.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node10.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node2.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node3.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node4.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node5.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node6.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node7.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node8.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/node9.html create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/rocket.png create mode 100644 trunk/gosa-core/doc/core/nl/html/departments/search.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/WARNINGS create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/groups.css create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/groups.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/index.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/labels.pl create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/list_back.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/list_home.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/list_new_group.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/list_reload.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/list_root.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/mailto.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node1.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node10.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node11.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node12.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node13.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node14.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node15.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node16.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node17.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node18.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node19.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node2.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node20.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node21.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node3.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node4.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node5.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node6.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node7.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node8.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/node9.html create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/rocket.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/search.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/select_application.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/select_groups.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/select_winstation.png create mode 100644 trunk/gosa-core/doc/core/nl/html/groups/smallenv.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/WARNINGS create mode 100644 trunk/gosa-core/doc/core/nl/html/users/fax_small.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/index.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/labels.pl create mode 100644 trunk/gosa-core/doc/core/nl/html/users/list_back.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/list_home.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/list_new_user.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/list_reload.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/list_root.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/mailto.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node1.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node10.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node11.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node12.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node13.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node14.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node15.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node16.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node17.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node18.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node19.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node2.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node20.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node21.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node22.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node23.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node24.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node25.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node26.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node27.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node28.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node29.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node3.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node30.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node31.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node32.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node33.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node34.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node35.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node36.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node37.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node38.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node39.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node4.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node40.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node41.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node42.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node43.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node44.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node45.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node46.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node47.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node5.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node6.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node7.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node8.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/node9.html create mode 100644 trunk/gosa-core/doc/core/nl/html/users/penguin.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/rocket.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/search.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/select_netatalk.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/select_phone.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/select_user.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/select_winstation.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/smallenv.png create mode 100644 trunk/gosa-core/doc/core/nl/html/users/users.css create mode 100644 trunk/gosa-core/doc/core/nl/html/users/users.html create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/departments.lyx create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/groups.lyx create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/action.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/addr_company.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/addr_home.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/addr_personal.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/addressbook.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/alternatemail.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/application.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/back.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/banana.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/blocklists.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/branch.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/branch_small.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/button_cancel.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/cant_editpaste.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/certs.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/closedlock.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/conference.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/copypaste.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/crossref.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/cutpaste.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/default.jpg create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/default_icon.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/department.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/dfs.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/dhcp.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/display.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/dns.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/drives.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/dtree.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/edit.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/editcopy.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/editcut.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/editdelete.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/editpaste.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/edittrash.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/email.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/empty.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/encrypted.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/env.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/envelope.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/expand.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_hook.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_new_hook.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_new_packages.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_new_partitionTable.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_new_profile.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_new_script.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_new_template.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_new_variable.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_packages.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_partitionTable.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_profile.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_script.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_small.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_template.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fai_variable.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/false.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fax.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fax_small.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/filesaveas.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/flag.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/folder.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/forward.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/ftp.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/fullfolder.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/gfx_hardware.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/group.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/hardware.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/hdd_linux_unmount.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/head.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/help.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/hotplug.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/house.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/img1.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/info.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/info_small.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/keyboard.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/lamp.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/launch.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/ldapserver.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/ldif.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_back.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_blocklist.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_home.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_macro.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_new.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_new_app.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_new_blocklist.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_new_conference.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_new_department.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_new_group.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_new_macro.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_new_ogroup.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_new_user.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_ogroup.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_password.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_reload.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_root.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_seperator.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_submit.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/list_up.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/log_critical.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/log_info.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/log_unknown.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/log_warning.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/login.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/logview.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/macros.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/mailq_active.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/mailq_header.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/mailq_hold.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/mailq_requeue.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/mailq_unhold.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/mailqueue.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/mailto.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/mainboard.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/members.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/memory.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/monitor.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/monitoring.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/mouse.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/net_hardware.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/netatalk.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/network.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/null.gif create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/ogroup.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/openlock.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/password.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/penguin.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/personal.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/phone.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/phonereport.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/posix.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/printer.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/processor.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/proxy.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/reports.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/rightarrow.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/rocket.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/samba.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/save.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/scanner.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/search.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/search_user.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_application.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_component.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_conference.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_default.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_department.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_groups.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_invalid_application.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_macro.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_netatalk.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_new_component.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_new_phone.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_new_printer.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_new_server.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_new_terminal.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_new_workstation.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_newsystem.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_ogroup.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_phone.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_phone_connected.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_printer.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_proxy.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_server.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_template.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_terminal.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_user.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_winstation.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/select_workstation.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/server.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/service.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/small_filter.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/smallenv.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/snd_hardware.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/sort_down.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/sort_up.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/sound.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/stop.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/system.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/terminal_small.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/time.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/tree.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/true.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/user.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/warning.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/images/zip.png create mode 100644 trunk/gosa-core/doc/core/nl/lyx-source/users.lyx create mode 100644 trunk/gosa-core/gosa-encrypt-passwords.1 create mode 100644 trunk/gosa-core/gosa-encrypt-passwords.pod create mode 100644 trunk/gosa-core/html/TreeMenu.js create mode 100644 trunk/gosa-core/html/TreeMenu.php create mode 100644 trunk/gosa-core/html/favicon.ico create mode 100644 trunk/gosa-core/html/getFAIstatus.php create mode 100644 trunk/gosa-core/html/getbin.php create mode 100644 trunk/gosa-core/html/helpviewer.php create mode 100644 trunk/gosa-core/html/images/action.png create mode 100644 trunk/gosa-core/html/images/back.png create mode 100644 trunk/gosa-core/html/images/branch.gif create mode 100644 trunk/gosa-core/html/images/branchbottom.gif create mode 100644 trunk/gosa-core/html/images/branchtop.gif create mode 100644 trunk/gosa-core/html/images/dtree.png create mode 100644 trunk/gosa-core/html/images/empty.png create mode 100644 trunk/gosa-core/html/images/encrypted.png create mode 100644 trunk/gosa-core/html/images/error.png create mode 100644 trunk/gosa-core/html/images/false.png create mode 100644 trunk/gosa-core/html/images/filesaveas.png create mode 100644 trunk/gosa-core/html/images/folder-expanded.gif create mode 100644 trunk/gosa-core/html/images/folder.gif create mode 100644 trunk/gosa-core/html/images/forward.png create mode 100644 trunk/gosa-core/html/images/head.png create mode 100644 trunk/gosa-core/html/images/info.png create mode 100644 trunk/gosa-core/html/images/info_small.png create mode 100644 trunk/gosa-core/html/images/launch.png create mode 100644 trunk/gosa-core/html/images/layer_menu/down-arrow.png create mode 100644 trunk/gosa-core/html/images/layer_menu/forward-arrow.png create mode 100644 trunk/gosa-core/html/images/layer_menu/transparent.png create mode 100644 trunk/gosa-core/html/images/ldapserver.png create mode 100644 trunk/gosa-core/html/images/lists/action.png create mode 100644 trunk/gosa-core/html/images/lists/back.png create mode 100644 trunk/gosa-core/html/images/lists/back_grey.png create mode 100644 trunk/gosa-core/html/images/lists/copy.png create mode 100644 trunk/gosa-core/html/images/lists/cut.png create mode 100644 trunk/gosa-core/html/images/lists/delete.png create mode 100644 trunk/gosa-core/html/images/lists/edit.png create mode 100644 trunk/gosa-core/html/images/lists/expand.png create mode 100644 trunk/gosa-core/html/images/lists/folder-full.png create mode 100644 trunk/gosa-core/html/images/lists/folder.png create mode 100644 trunk/gosa-core/html/images/lists/folder_grey.png create mode 100644 trunk/gosa-core/html/images/lists/home.png create mode 100644 trunk/gosa-core/html/images/lists/home_grey.png create mode 100644 trunk/gosa-core/html/images/lists/import.png create mode 100644 trunk/gosa-core/html/images/lists/invalid.png create mode 100644 trunk/gosa-core/html/images/lists/key.png create mode 100644 trunk/gosa-core/html/images/lists/locked.png create mode 100644 trunk/gosa-core/html/images/lists/new.png create mode 100644 trunk/gosa-core/html/images/lists/off.png create mode 100644 trunk/gosa-core/html/images/lists/on.png create mode 100644 trunk/gosa-core/html/images/lists/paste-grey.png create mode 100644 trunk/gosa-core/html/images/lists/paste.png create mode 100644 trunk/gosa-core/html/images/lists/reload.png create mode 100644 trunk/gosa-core/html/images/lists/restore.png create mode 100644 trunk/gosa-core/html/images/lists/restore_grey.png create mode 100644 trunk/gosa-core/html/images/lists/root.png create mode 100644 trunk/gosa-core/html/images/lists/root_grey.png create mode 100644 trunk/gosa-core/html/images/lists/search-subtree.png create mode 100644 trunk/gosa-core/html/images/lists/search-user.png create mode 100644 trunk/gosa-core/html/images/lists/search.png create mode 100644 trunk/gosa-core/html/images/lists/seperator.png create mode 100644 trunk/gosa-core/html/images/lists/sort-down.png create mode 100644 trunk/gosa-core/html/images/lists/sort-up.png create mode 100644 trunk/gosa-core/html/images/lists/submit.png create mode 100644 trunk/gosa-core/html/images/lists/trash.png create mode 100644 trunk/gosa-core/html/images/lists/unlocked.png create mode 100644 trunk/gosa-core/html/images/lists/up.png create mode 100644 trunk/gosa-core/html/images/lists/upload.png create mode 100644 trunk/gosa-core/html/images/login-head.png create mode 100644 trunk/gosa-core/html/images/login.png create mode 100644 trunk/gosa-core/html/images/logout.png create mode 100644 trunk/gosa-core/html/images/mailto.png create mode 100644 trunk/gosa-core/html/images/minus.gif create mode 100644 trunk/gosa-core/html/images/minustop.gif create mode 100644 trunk/gosa-core/html/images/move_object_down.png create mode 100644 trunk/gosa-core/html/images/move_object_up.png create mode 100644 trunk/gosa-core/html/images/null.gif create mode 100644 trunk/gosa-core/html/images/opacity_black.png create mode 100644 trunk/gosa-core/html/images/password.png create mode 100644 trunk/gosa-core/html/images/penguin.png create mode 100644 trunk/gosa-core/html/images/plus.gif create mode 100644 trunk/gosa-core/html/images/plusbottom.gif create mode 100644 trunk/gosa-core/html/images/plustop.gif create mode 100644 trunk/gosa-core/html/images/rightarrow.png create mode 100644 trunk/gosa-core/html/images/rocket.png create mode 100644 trunk/gosa-core/html/images/save.png create mode 100644 trunk/gosa-core/html/images/select_department.png create mode 100644 trunk/gosa-core/html/images/select_proxy.png create mode 100644 trunk/gosa-core/html/images/setup/fai.png create mode 100644 trunk/gosa-core/html/images/setup/ldap.png create mode 100644 trunk/gosa-core/html/images/setup/license.png create mode 100644 trunk/gosa-core/html/images/setup/locale.png create mode 100644 trunk/gosa-core/html/images/setup/migrate.png create mode 100644 trunk/gosa-core/html/images/setup/server.png create mode 100644 trunk/gosa-core/html/images/setup/system.png create mode 100644 trunk/gosa-core/html/images/setup/user.png create mode 100644 trunk/gosa-core/html/images/setup/welcome.png create mode 100644 trunk/gosa-core/html/images/small-error.png create mode 100644 trunk/gosa-core/html/images/small_error.png create mode 100644 trunk/gosa-core/html/images/small_warning.png create mode 100644 trunk/gosa-core/html/images/snapshot.png create mode 100644 trunk/gosa-core/html/images/status_pause.png create mode 100644 trunk/gosa-core/html/images/status_restart_all.png create mode 100644 trunk/gosa-core/html/images/status_restarting.png create mode 100644 trunk/gosa-core/html/images/status_start.png create mode 100644 trunk/gosa-core/html/images/status_start_all.png create mode 100644 trunk/gosa-core/html/images/status_stop.png create mode 100644 trunk/gosa-core/html/images/status_stop_all.png create mode 100644 trunk/gosa-core/html/images/true.png create mode 100644 trunk/gosa-core/html/images/warning.png create mode 100644 trunk/gosa-core/html/images/welcome.png create mode 100644 trunk/gosa-core/html/images/wizard.png create mode 100644 trunk/gosa-core/html/include/calendar.js create mode 100644 trunk/gosa-core/html/include/events.js create mode 100644 trunk/gosa-core/html/include/focus.js create mode 100644 trunk/gosa-core/html/include/layersmenu-browser_detection.js create mode 100644 trunk/gosa-core/html/include/layersmenu-library.js create mode 100644 trunk/gosa-core/html/include/layersmenu.js create mode 100644 trunk/gosa-core/html/include/png.js create mode 100644 trunk/gosa-core/html/include/pwdStrength.js create mode 100644 trunk/gosa-core/html/include/warning.js create mode 100644 trunk/gosa-core/html/index.php create mode 100644 trunk/gosa-core/html/logout.php create mode 100644 trunk/gosa-core/html/main.php create mode 100644 trunk/gosa-core/html/password.php create mode 100644 trunk/gosa-core/html/plugins/acl/images/acl.png create mode 100644 trunk/gosa-core/html/plugins/acl/images/new-role.png create mode 100644 trunk/gosa-core/html/plugins/acl/images/plugin.png create mode 100644 trunk/gosa-core/html/plugins/acl/images/role.png create mode 100644 trunk/gosa-core/html/plugins/bugsubmitter/images/bugsubmitter.png create mode 100644 trunk/gosa-core/html/plugins/departments/images/country.png create mode 100644 trunk/gosa-core/html/plugins/departments/images/dc.png create mode 100644 trunk/gosa-core/html/plugins/departments/images/department.png create mode 100644 trunk/gosa-core/html/plugins/departments/images/department_alias.png create mode 100644 trunk/gosa-core/html/plugins/departments/images/department_referal.png create mode 100644 trunk/gosa-core/html/plugins/departments/images/locality.png create mode 100644 trunk/gosa-core/html/plugins/departments/images/organization.png create mode 100644 trunk/gosa-core/html/plugins/departments/images/plugin.png create mode 100644 trunk/gosa-core/html/plugins/generic/images/head.png create mode 100644 trunk/gosa-core/html/plugins/generic/images/house.png create mode 100644 trunk/gosa-core/html/plugins/generic/images/plugin.png create mode 100644 trunk/gosa-core/html/plugins/gl create mode 100644 trunk/gosa-core/html/plugins/groups/images/asterisk.png create mode 100644 trunk/gosa-core/html/plugins/groups/images/environment.png create mode 100644 trunk/gosa-core/html/plugins/groups/images/groups.png create mode 100644 trunk/gosa-core/html/plugins/groups/images/mail.png create mode 100644 trunk/gosa-core/html/plugins/groups/images/menu.png create mode 100644 trunk/gosa-core/html/plugins/groups/images/new.png create mode 100644 trunk/gosa-core/html/plugins/groups/images/plugin.png create mode 100644 trunk/gosa-core/html/plugins/groups/images/samba.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/application.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/asterisk.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/generic.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/list_ogroup.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/mail.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/new.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/ogroup.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/phone.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/plugin.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/printer.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/select_ogroup.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/select_terminal.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/server.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/terminal.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/winstation.png create mode 100644 trunk/gosa-core/html/plugins/ogroups/images/workstation.png create mode 100644 trunk/gosa-core/html/plugins/password/images/plugin.png create mode 100644 trunk/gosa-core/html/plugins/posix/images/members.png create mode 100644 trunk/gosa-core/html/plugins/posix/images/plugin.png create mode 100644 trunk/gosa-core/html/plugins/posix/images/terminal_small.png create mode 100644 trunk/gosa-core/html/plugins/users/images/default.jpg create mode 100644 trunk/gosa-core/html/plugins/users/images/fax_small.png create mode 100644 trunk/gosa-core/html/plugins/users/images/list_new_user.png create mode 100644 trunk/gosa-core/html/plugins/users/images/list_password.png create mode 100644 trunk/gosa-core/html/plugins/users/images/select_template.png create mode 100644 trunk/gosa-core/html/plugins/users/images/select_user.png create mode 100644 trunk/gosa-core/html/plugins/users/images/small_environment.png create mode 100644 trunk/gosa-core/html/plugins/users/images/user.png create mode 100644 trunk/gosa-core/html/plugins/users/images/wizard.png create mode 100644 trunk/gosa-core/html/progress.php create mode 100644 trunk/gosa-core/html/setup.php create mode 100644 trunk/gosa-core/html/themes/default/images/accountexpired.png create mode 100644 trunk/gosa-core/html/themes/default/images/border.png create mode 100644 trunk/gosa-core/html/themes/default/images/go_logo.png create mode 100644 trunk/gosa-core/html/themes/default/images/gohome.png create mode 100644 trunk/gosa-core/html/themes/default/images/help.png create mode 100644 trunk/gosa-core/html/themes/default/images/stop.png create mode 100644 trunk/gosa-core/html/themes/default/password-style.css create mode 100644 trunk/gosa-core/html/themes/default/style.css create mode 100644 trunk/gosa-core/ihtml/themes/default/GOsa_MultiSelectHeader.ihtml create mode 100644 trunk/gosa-core/ihtml/themes/default/GOsa_MultiSelectHeaderSubEntry.ihtml create mode 100644 trunk/gosa-core/ihtml/themes/default/MultiSelectWindow.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/accountexpired.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/acl.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/colors.txt create mode 100644 trunk/gosa-core/ihtml/themes/default/conflict.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/copyPasteDialog.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/framework.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/headers.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/help.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/islocked.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/login.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/logout-close.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/logout.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/msg_dialog.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/password.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/remove.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/setup_headers.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/sizelimit.tpl create mode 100644 trunk/gosa-core/ihtml/themes/default/snapshotdialog.tpl create mode 100644 trunk/gosa-core/include/accept-to-gettext.inc create mode 100644 trunk/gosa-core/include/class_CopyPasteHandler.inc create mode 100644 trunk/gosa-core/include/class_MultiSelectWindow.inc create mode 100644 trunk/gosa-core/include/class_SnapShotDialog.inc create mode 100644 trunk/gosa-core/include/class_acl.inc create mode 100644 trunk/gosa-core/include/class_baseSelectDialog.inc create mode 100644 trunk/gosa-core/include/class_certificate.inc create mode 100644 trunk/gosa-core/include/class_config.inc create mode 100644 trunk/gosa-core/include/class_divSelectBox.inc create mode 100644 trunk/gosa-core/include/class_divlist.inc create mode 100644 trunk/gosa-core/include/class_gosaSupportDaemon.inc create mode 100644 trunk/gosa-core/include/class_ldap.inc create mode 100644 trunk/gosa-core/include/class_ldapMultiplexer.inc create mode 100644 trunk/gosa-core/include/class_log.inc create mode 100644 trunk/gosa-core/include/class_msg_dialog.inc create mode 100644 trunk/gosa-core/include/class_multi_plug.inc create mode 100644 trunk/gosa-core/include/class_plugin.inc create mode 100644 trunk/gosa-core/include/class_pluglist.inc create mode 100644 trunk/gosa-core/include/class_session.inc create mode 100644 trunk/gosa-core/include/class_socketClient.inc create mode 100644 trunk/gosa-core/include/class_tabs.inc create mode 100644 trunk/gosa-core/include/class_userinfo.inc create mode 100644 trunk/gosa-core/include/functions.inc create mode 100644 trunk/gosa-core/include/functions_debug.inc create mode 100644 trunk/gosa-core/include/functions_helpviewer.inc create mode 100644 trunk/gosa-core/include/password-methods/class_password-methods-clear.inc create mode 100644 trunk/gosa-core/include/password-methods/class_password-methods-crypt.inc create mode 100644 trunk/gosa-core/include/password-methods/class_password-methods-md5.inc create mode 100644 trunk/gosa-core/include/password-methods/class_password-methods-sha.inc create mode 100644 trunk/gosa-core/include/password-methods/class_password-methods-smd5.inc create mode 100644 trunk/gosa-core/include/password-methods/class_password-methods-ssha.inc create mode 100644 trunk/gosa-core/include/password-methods/class_password-methods.inc create mode 100644 trunk/gosa-core/include/php_setup.inc create mode 100644 trunk/gosa-core/include/smarty/Config_File.class.php create mode 100644 trunk/gosa-core/include/smarty/Smarty.class.php create mode 100644 trunk/gosa-core/include/smarty/Smarty_Compiler.class.php create mode 100644 trunk/gosa-core/include/smarty/debug.tpl create mode 100644 trunk/gosa-core/include/smarty/internals/core.assemble_plugin_filepath.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.assign_smarty_interface.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.create_dir_structure.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.display_debug_console.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.get_include_path.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.get_microtime.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.get_php_resource.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.is_secure.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.is_trusted.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.load_plugins.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.load_resource_plugin.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.process_cached_inserts.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.process_compiled_include.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.read_cache_file.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.rm_auto.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.rmdir.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.run_insert_handler.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.smarty_include_php.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.write_cache_file.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.write_compiled_include.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.write_compiled_resource.php create mode 100644 trunk/gosa-core/include/smarty/internals/core.write_file.php create mode 100644 trunk/gosa-core/include/smarty/plugins/block.render.php create mode 100644 trunk/gosa-core/include/smarty/plugins/block.t.php create mode 100644 trunk/gosa-core/include/smarty/plugins/block.textformat.php create mode 100644 trunk/gosa-core/include/smarty/plugins/compiler.assign.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.assign.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.assign_debug_info.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.config_load.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.counter.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.cycle.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.debug.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.eval.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.fetch.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.html_checkboxes.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.html_image.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.html_options.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.html_radios.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.html_select_date.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.html_select_time.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.html_table.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.mailto.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.math.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.msgPool.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.popup.php create mode 100644 trunk/gosa-core/include/smarty/plugins/function.popup_init.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.capitalize.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.cat.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.count_characters.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.count_paragraphs.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.count_sentences.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.count_words.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.date_format.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.debug_print_var.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.default.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.escape.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.indent.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.lower.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.nl2br.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.regex_replace.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.replace.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.spacify.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.string_format.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.strip.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.strip_tags.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.truncate.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.upper.php create mode 100644 trunk/gosa-core/include/smarty/plugins/modifier.wordwrap.php create mode 100644 trunk/gosa-core/include/smarty/plugins/outputfilter.trimwhitespace.php create mode 100644 trunk/gosa-core/include/smarty/plugins/shared.escape_special_chars.php create mode 100644 trunk/gosa-core/include/smarty/plugins/shared.make_timestamp.php create mode 100644 trunk/gosa-core/include/utils/class_msgPool.inc create mode 100644 trunk/gosa-core/include/utils/class_tests.inc create mode 100644 trunk/gosa-core/include/utils/class_timezone.inc create mode 100644 trunk/gosa-core/include/utils/excel/class.writeexcel_biffwriter.inc.php create mode 100644 trunk/gosa-core/include/utils/excel/class.writeexcel_format.inc.php create mode 100644 trunk/gosa-core/include/utils/excel/class.writeexcel_formula.inc.php create mode 100644 trunk/gosa-core/include/utils/excel/class.writeexcel_olewriter.inc.php create mode 100644 trunk/gosa-core/include/utils/excel/class.writeexcel_workbook.inc.php create mode 100644 trunk/gosa-core/include/utils/excel/class.writeexcel_worksheet.inc.php create mode 100644 trunk/gosa-core/include/utils/excel/functions.writeexcel_utility.inc.php create mode 100644 trunk/gosa-core/include/utils/layer-menu/COPYING create mode 100644 trunk/gosa-core/include/utils/layer-menu/lib/PHPLIB.php create mode 100644 trunk/gosa-core/include/utils/layer-menu/lib/layersmenu-browser_detection.php create mode 100644 trunk/gosa-core/include/utils/layer-menu/lib/layersmenu-common.inc.php create mode 100644 trunk/gosa-core/include/utils/layer-menu/lib/layersmenu-process.inc.php create mode 100644 trunk/gosa-core/include/utils/layer-menu/lib/layersmenu.inc.php create mode 100644 trunk/gosa-core/include/utils/layer-menu/lib/phptreemenu.inc.php create mode 100644 trunk/gosa-core/include/utils/layer-menu/lib/plainmenu.inc.php create mode 100644 trunk/gosa-core/include/utils/layer-menu/lib/treemenu.inc.php create mode 100644 trunk/gosa-core/include/utils/layer-menu/libjs/layersmenu-browser_detection.js create mode 100644 trunk/gosa-core/include/utils/layer-menu/libjs/layersmenu-footer.ijs create mode 100644 trunk/gosa-core/include/utils/layer-menu/libjs/layersmenu-header.ijs create mode 100644 trunk/gosa-core/include/utils/layer-menu/libjs/layersmenu-library.js create mode 100644 trunk/gosa-core/include/utils/layer-menu/libjs/layersmenu-see-through.js create mode 100644 trunk/gosa-core/include/utils/layer-menu/libjs/layersmenu.js create mode 100644 trunk/gosa-core/include/utils/layer-menu/libjs/layerstreemenu-cookies.js create mode 100644 trunk/gosa-core/include/utils/layer-menu/libjs/layerstreemenu.ijs create mode 100644 trunk/gosa-core/locale/core/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-core/locale/core/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-core/locale/core/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-core/locale/core/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-core/locale/core/messages.po create mode 100644 trunk/gosa-core/locale/core/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-core/locale/core/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-core/locale/core/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-core/locale/core/vi/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-core/locale/core/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-core/plugins/addons/bugsubmitter/class_bugsubmitter.inc create mode 100644 trunk/gosa-core/plugins/addons/bugsubmitter/main.inc create mode 100644 trunk/gosa-core/plugins/admin/acl/acl_role.tpl create mode 100644 trunk/gosa-core/plugins/admin/acl/class_aclManagement.inc create mode 100644 trunk/gosa-core/plugins/admin/acl/class_aclRole.inc create mode 100644 trunk/gosa-core/plugins/admin/acl/class_divListACL.inc create mode 100644 trunk/gosa-core/plugins/admin/acl/main.inc create mode 100644 trunk/gosa-core/plugins/admin/acl/paste_role.tpl create mode 100644 trunk/gosa-core/plugins/admin/acl/remove.tpl create mode 100644 trunk/gosa-core/plugins/admin/acl/tabs_acl.inc create mode 100644 trunk/gosa-core/plugins/admin/acl/tabs_acl_role.inc create mode 100644 trunk/gosa-core/plugins/admin/departments/class_countryGeneric.inc create mode 100644 trunk/gosa-core/plugins/admin/departments/class_dcObject.inc create mode 100644 trunk/gosa-core/plugins/admin/departments/class_departmentGeneric.inc create mode 100644 trunk/gosa-core/plugins/admin/departments/class_departmentManagement.inc create mode 100644 trunk/gosa-core/plugins/admin/departments/class_divListDepartment.inc create mode 100644 trunk/gosa-core/plugins/admin/departments/class_localityGeneric.inc create mode 100644 trunk/gosa-core/plugins/admin/departments/class_organizationGeneric.inc create mode 100644 trunk/gosa-core/plugins/admin/departments/country.tpl create mode 100644 trunk/gosa-core/plugins/admin/departments/dcObject.tpl create mode 100644 trunk/gosa-core/plugins/admin/departments/dep_iframe.tpl create mode 100644 trunk/gosa-core/plugins/admin/departments/dep_move_confirm.tpl create mode 100644 trunk/gosa-core/plugins/admin/departments/generic.tpl create mode 100644 trunk/gosa-core/plugins/admin/departments/locality.tpl create mode 100644 trunk/gosa-core/plugins/admin/departments/main.inc create mode 100644 trunk/gosa-core/plugins/admin/departments/organization.tpl create mode 100644 trunk/gosa-core/plugins/admin/departments/remove.tpl create mode 100644 trunk/gosa-core/plugins/admin/departments/tabs_department.inc create mode 100644 trunk/gosa-core/plugins/admin/groups/class_divListGroup.inc create mode 100644 trunk/gosa-core/plugins/admin/groups/class_groupGeneric.inc create mode 100644 trunk/gosa-core/plugins/admin/groups/class_groupManagement.inc create mode 100644 trunk/gosa-core/plugins/admin/groups/generic.tpl create mode 100644 trunk/gosa-core/plugins/admin/groups/group_objects.tpl create mode 100644 trunk/gosa-core/plugins/admin/groups/main.inc create mode 100644 trunk/gosa-core/plugins/admin/groups/paste_generic.tpl create mode 100644 trunk/gosa-core/plugins/admin/groups/remove.tpl create mode 100644 trunk/gosa-core/plugins/admin/groups/tabs_group.inc create mode 100644 trunk/gosa-core/plugins/admin/groups/trust_machines.tpl create mode 100644 trunk/gosa-core/plugins/admin/ogroups/class_divListOGroup.inc create mode 100644 trunk/gosa-core/plugins/admin/ogroups/class_ogroup.inc create mode 100644 trunk/gosa-core/plugins/admin/ogroups/class_ogroupManagement.inc create mode 100644 trunk/gosa-core/plugins/admin/ogroups/generic.tpl create mode 100644 trunk/gosa-core/plugins/admin/ogroups/main.inc create mode 100644 trunk/gosa-core/plugins/admin/ogroups/ogroup_objects.tpl create mode 100644 trunk/gosa-core/plugins/admin/ogroups/paste_generic.tpl create mode 100644 trunk/gosa-core/plugins/admin/ogroups/remove.tpl create mode 100644 trunk/gosa-core/plugins/admin/ogroups/tabs_ogroups.inc create mode 100644 trunk/gosa-core/plugins/admin/ogroups/trust_machines.tpl create mode 100644 trunk/gosa-core/plugins/admin/users/class_divListUsers.inc create mode 100644 trunk/gosa-core/plugins/admin/users/class_userManagement.inc create mode 100644 trunk/gosa-core/plugins/admin/users/main.inc create mode 100644 trunk/gosa-core/plugins/admin/users/password.tpl create mode 100644 trunk/gosa-core/plugins/admin/users/remove.tpl create mode 100644 trunk/gosa-core/plugins/admin/users/tabs_user.inc create mode 100644 trunk/gosa-core/plugins/admin/users/template.tpl create mode 100644 trunk/gosa-core/plugins/admin/users/templatize.tpl create mode 100644 trunk/gosa-core/plugins/generic/references/class_reference.inc create mode 100644 trunk/gosa-core/plugins/generic/references/contents.tpl create mode 100644 trunk/gosa-core/plugins/generic/welcome/main.inc create mode 100644 trunk/gosa-core/plugins/generic/welcome/welcome.tpl create mode 100644 trunk/gosa-core/plugins/personal/generic/class_user.inc create mode 100644 trunk/gosa-core/plugins/personal/generic/generic.tpl create mode 100644 trunk/gosa-core/plugins/personal/generic/generic_certs.tpl create mode 100644 trunk/gosa-core/plugins/personal/generic/generic_picture.tpl create mode 100644 trunk/gosa-core/plugins/personal/generic/main.inc create mode 100644 trunk/gosa-core/plugins/personal/generic/multiple_generic.tpl create mode 100644 trunk/gosa-core/plugins/personal/generic/password.tpl create mode 100644 trunk/gosa-core/plugins/personal/generic/paste_generic.tpl create mode 100644 trunk/gosa-core/plugins/personal/password/changed.tpl create mode 100644 trunk/gosa-core/plugins/personal/password/class_password.inc create mode 100644 trunk/gosa-core/plugins/personal/password/main.inc create mode 100644 trunk/gosa-core/plugins/personal/password/nochange.tpl create mode 100644 trunk/gosa-core/plugins/personal/password/password.tpl create mode 100644 trunk/gosa-core/plugins/personal/posix/class_posixAccount.inc create mode 100644 trunk/gosa-core/plugins/personal/posix/generic.tpl create mode 100644 trunk/gosa-core/plugins/personal/posix/main.inc create mode 100644 trunk/gosa-core/plugins/personal/posix/paste_generic.tpl create mode 100644 trunk/gosa-core/plugins/personal/posix/posix_groups.tpl create mode 100644 trunk/gosa-core/plugins/personal/posix/posix_shadow.tpl create mode 100644 trunk/gosa-core/plugins/personal/posix/trust_machines.tpl create mode 100644 trunk/gosa-core/redhat/01_fix_template_location.patch create mode 100644 trunk/gosa-core/redhat/02_fix_class_mapping.patch create mode 100644 trunk/gosa-core/redhat/03_fix_locale_location.patch create mode 100644 trunk/gosa-core/redhat/04_fix_online_help_location.patch create mode 100644 trunk/gosa-core/redhat/README.php create mode 100644 trunk/gosa-core/redhat/README.selinux create mode 100644 trunk/gosa-core/redhat/gosa.spec create mode 100755 trunk/gosa-core/redhat/make-gosa-package create mode 100755 trunk/gosa-core/redhat/rpm-make-gosa create mode 100644 trunk/gosa-core/setup/class_setup.inc create mode 100644 trunk/gosa-core/setup/class_setupStep.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Checks.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Config1.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Config2.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Config3.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Feedback.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Finish.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Language.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Ldap.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_License.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Migrate.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Schema.inc create mode 100644 trunk/gosa-core/setup/class_setupStep_Welcome.inc create mode 100644 trunk/gosa-core/setup/license.txt create mode 100644 trunk/gosa-core/setup/main.inc create mode 100644 trunk/gosa-core/setup/setup.tpl create mode 100644 trunk/gosa-core/setup/setup_checks.tpl create mode 100644 trunk/gosa-core/setup/setup_config1.tpl create mode 100644 trunk/gosa-core/setup/setup_config2.tpl create mode 100644 trunk/gosa-core/setup/setup_config3.tpl create mode 100644 trunk/gosa-core/setup/setup_feedback.tpl create mode 100644 trunk/gosa-core/setup/setup_finish.tpl create mode 100644 trunk/gosa-core/setup/setup_frame.tpl create mode 100644 trunk/gosa-core/setup/setup_language.tpl create mode 100644 trunk/gosa-core/setup/setup_ldap.tpl create mode 100644 trunk/gosa-core/setup/setup_license.tpl create mode 100644 trunk/gosa-core/setup/setup_migrate.tpl create mode 100644 trunk/gosa-core/setup/setup_schema.tpl create mode 100644 trunk/gosa-core/setup/setup_welcome.tpl create mode 100755 trunk/gosa-core/update-gosa create mode 100644 trunk/gosa-core/update-gosa.1 create mode 100644 trunk/gosa-core/update-gosa.pod create mode 100755 trunk/gosa-core/update-locale create mode 100644 trunk/gosa-core/update-locale.1 create mode 100644 trunk/gosa-core/update-locale.pod create mode 100755 trunk/gosa-core/update-online-help create mode 100644 trunk/gosa-core/update-online-help.1 create mode 100644 trunk/gosa-core/update-online-help.pod create mode 100755 trunk/gosa-core/update-pdf-help create mode 100644 trunk/gosa-core/update-pdf-help.1 create mode 100644 trunk/gosa-core/update-pdf-help.pod create mode 100644 trunk/gosa-plugins/addressbook/addons/addressbook/address_edit.tpl create mode 100644 trunk/gosa-plugins/addressbook/addons/addressbook/address_info.tpl create mode 100644 trunk/gosa-plugins/addressbook/addons/addressbook/class_addressbook.inc create mode 100644 trunk/gosa-plugins/addressbook/addons/addressbook/contents.tpl create mode 100644 trunk/gosa-plugins/addressbook/addons/addressbook/dial.tpl create mode 100644 trunk/gosa-plugins/addressbook/addons/addressbook/main.inc create mode 100644 trunk/gosa-plugins/addressbook/addons/addressbook/remove.tpl create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/WARNINGS create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/action.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/addressbook.css create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/addressbook.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/closedlock.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/dtree.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/index.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/labels.pl create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/list_ogroup.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/mailto.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/node1.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/node2.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/node3.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/node4.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/node5.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/node6.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/node7.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/node8.html create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/rocket.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/save.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/html/addressbook/search.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/addressbook.lyx create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/images/action.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/images/closedlock.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/images/dtree.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/images/editpaste.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/images/list_ogroup.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/images/mailto.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/images/rocket.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/images/save.png create mode 100644 trunk/gosa-plugins/addressbook/help/de/lyx-source/images/search.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/WARNINGS create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/action.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/addressbook.css create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/addressbook.html create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/closedlock.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/dtree.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/editpaste.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/index.html create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/labels.pl create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/list_ogroup.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/mailto.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/node1.html create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/node2.html create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/node3.html create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/node4.html create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/node5.html create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/node6.html create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/rocket.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/save.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/html/addressbook/search.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/addressbook.lyx create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/images/action.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/images/closedlock.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/images/dtree.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/images/editpaste.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/images/list_ogroup.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/images/mailto.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/images/rocket.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/images/save.png create mode 100644 trunk/gosa-plugins/addressbook/help/en/lyx-source/images/search.png create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/addressbook.lyx create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/images/action.png create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/images/closedlock.png create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/images/dtree.png create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/images/editpaste.png create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/images/list_ogroup.png create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/images/mailto.png create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/images/rocket.png create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/images/save.png create mode 100644 trunk/gosa-plugins/addressbook/help/es/lyx-source/images/search.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/addressbook.lyx create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/action.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/closedlock.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/dtree.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/edit.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/editdelete.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/editpaste.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/list_ogroup.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/mailto.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/rocket.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/save.png create mode 100644 trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/search.png create mode 100644 trunk/gosa-plugins/addressbook/help/guide.xml create mode 100644 trunk/gosa-plugins/addressbook/html/getvcard.php create mode 100644 trunk/gosa-plugins/addressbook/html/images/addr_company.png create mode 100644 trunk/gosa-plugins/addressbook/html/images/addr_home.png create mode 100644 trunk/gosa-plugins/addressbook/html/images/addr_personal.png create mode 100644 trunk/gosa-plugins/addressbook/html/images/objects.png create mode 100644 trunk/gosa-plugins/addressbook/html/images/phone.png create mode 100644 trunk/gosa-plugins/addressbook/html/images/plugin.png create mode 100644 trunk/gosa-plugins/addressbook/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/addressbook/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/addressbook/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/addressbook/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/addressbook/locale/messages.po create mode 100644 trunk/gosa-plugins/addressbook/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/addressbook/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/addressbook/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/addressbook/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/addressbook/plugin.dsc create mode 100644 trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_apacheUtils.inc create mode 100644 trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_servApacheEditVhost.inc create mode 100644 trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_servApacheVhost.inc create mode 100644 trunk/gosa-plugins/apache2/admin/systems/services/apache2/servApacheVhost.tpl create mode 100644 trunk/gosa-plugins/apache2/admin/systems/services/apache2/servApacheVhostEdit.tpl create mode 100644 trunk/gosa-plugins/apache2/contrib/mod_vhost_ldap.ldif create mode 100644 trunk/gosa-plugins/apache2/contrib/mod_vhost_ldap.schema create mode 100644 trunk/gosa-plugins/apache2/help/guide.xml create mode 100644 trunk/gosa-plugins/apache2/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/apache2/locale/messages.po create mode 100644 trunk/gosa-plugins/apache2/plugin.dsc create mode 100644 trunk/gosa-plugins/connectivity/help/guide.xml create mode 100644 trunk/gosa-plugins/connectivity/html/images/plugin.png create mode 100644 trunk/gosa-plugins/connectivity/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/connectivity/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/connectivity/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/connectivity/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/connectivity/locale/messages.po create mode 100644 trunk/gosa-plugins/connectivity/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/connectivity/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/connectivity/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/connectivity/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/connectivity/personal/connectivity/class_connectivity.inc create mode 100644 trunk/gosa-plugins/connectivity/personal/connectivity/class_intranetAccount.inc create mode 100644 trunk/gosa-plugins/connectivity/personal/connectivity/intranet.tpl create mode 100644 trunk/gosa-plugins/connectivity/personal/connectivity/main.inc create mode 100644 trunk/gosa-plugins/connectivity/plugin.dsc create mode 100644 trunk/gosa-plugins/dak/addons/dak/class_DAK.inc create mode 100644 trunk/gosa-plugins/dak/addons/dak/class_dakkeyring.inc create mode 100644 trunk/gosa-plugins/dak/addons/dak/class_dakplug.inc create mode 100644 trunk/gosa-plugins/dak/addons/dak/class_dakqueue.inc create mode 100644 trunk/gosa-plugins/dak/addons/dak/class_dakrepository.inc create mode 100644 trunk/gosa-plugins/dak/addons/dak/dak_keyring.tpl create mode 100644 trunk/gosa-plugins/dak/addons/dak/dak_queue.tpl create mode 100644 trunk/gosa-plugins/dak/addons/dak/dak_repository.tpl create mode 100644 trunk/gosa-plugins/dak/addons/dak/main.inc create mode 100644 trunk/gosa-plugins/dak/addons/dak/tabs_dak.inc create mode 100644 trunk/gosa-plugins/dak/html/images/down-arrow.png create mode 100644 trunk/gosa-plugins/dak/html/images/forward-arrow.png create mode 100644 trunk/gosa-plugins/dak/html/images/plugin.png create mode 100644 trunk/gosa-plugins/dak/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dak/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dak/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dak/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dak/locale/messages.po create mode 100644 trunk/gosa-plugins/dak/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dak/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dak/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dak/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dak/plugin.dsc create mode 100644 trunk/gosa-plugins/dfs/addons/godfs/class_dfsManagment.inc create mode 100644 trunk/gosa-plugins/dfs/addons/godfs/class_dfsgeneric.inc create mode 100644 trunk/gosa-plugins/dfs/addons/godfs/contents.tpl create mode 100644 trunk/gosa-plugins/dfs/addons/godfs/generic.tpl create mode 100644 trunk/gosa-plugins/dfs/addons/godfs/main.inc create mode 100644 trunk/gosa-plugins/dfs/addons/godfs/tabs_dfs.inc create mode 100644 trunk/gosa-plugins/dfs/help/guide.xml create mode 100644 trunk/gosa-plugins/dfs/html/images/dfs.png create mode 100644 trunk/gosa-plugins/dfs/html/images/dtree.png create mode 100644 trunk/gosa-plugins/dfs/html/images/location.png create mode 100644 trunk/gosa-plugins/dfs/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dfs/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dfs/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dfs/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dfs/locale/messages.po create mode 100644 trunk/gosa-plugins/dfs/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dfs/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dfs/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dfs/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dfs/plugin.dsc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpAdvanced.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpGroup.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpHost.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpNetwork.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpPlugin.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpPool.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpService.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpSharedNetwork.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpSubnet.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_servDHCP.inc create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcpNewSection.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_advanced.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_group.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_host.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_network.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_pool.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_service.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_sharedNetwork.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_subnet.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/remove_dhcp.tpl create mode 100644 trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/servdhcp.tpl create mode 100644 trunk/gosa-plugins/dhcp/contrib/dhcp.ldif create mode 100644 trunk/gosa-plugins/dhcp/contrib/dhcp.schema create mode 100644 trunk/gosa-plugins/dhcp/help/guide.xml create mode 100644 trunk/gosa-plugins/dhcp/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dhcp/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dhcp/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dhcp/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dhcp/locale/messages.po create mode 100644 trunk/gosa-plugins/dhcp/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dhcp/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dhcp/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dhcp/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dhcp/plugin.dsc create mode 100644 trunk/gosa-plugins/dns/admin/systems/services/dns/class_DNS.inc create mode 100644 trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNS.inc create mode 100644 trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNSeditZone.inc create mode 100644 trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNSeditZoneEntries.inc create mode 100644 trunk/gosa-plugins/dns/admin/systems/services/dns/servDNSeditZoneEntries.tpl create mode 100644 trunk/gosa-plugins/dns/admin/systems/services/dns/servdns.tpl create mode 100644 trunk/gosa-plugins/dns/admin/systems/services/dns/servdnseditzone.tpl create mode 100644 trunk/gosa-plugins/dns/contrib/dnszone.ldif create mode 100644 trunk/gosa-plugins/dns/contrib/dnszone.schema create mode 100644 trunk/gosa-plugins/dns/help/guide.xml create mode 100644 trunk/gosa-plugins/dns/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dns/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dns/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dns/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dns/locale/messages.po create mode 100644 trunk/gosa-plugins/dns/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dns/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dns/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dns/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/dns/plugin.dsc create mode 100644 trunk/gosa-plugins/fai/admin/fai/askClassName.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/branch_selector.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_FAI.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_askClassName.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_debconfTemplate.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_divListFai.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiGroupHandle.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiHook.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiHookEntry.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiManagement.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiPackage.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiPackageConfiguration.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiPackageEntry.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTable.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTableEntry.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiProfile.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiProfileEntry.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiScript.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiScriptEntry.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiSummaryTab.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiTemplate.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiTemplateEntry.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiVariable.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/class_faiVariableEntry.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiGroupHandle.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiHook.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiHookEntry.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiNewBranch.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiPackage.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiPackageConfiguration.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiPackageEntry.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiPartitionTable.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiPartitionTableEntry.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiProfile.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiProfileEntry.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiScript.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiScriptEntry.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiSummary.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiTemplate.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiTemplateEntry.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiVariable.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/faiVariableEntry.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/main.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/paste_generic.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/remove.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/remove_branch.tpl create mode 100644 trunk/gosa-plugins/fai/admin/fai/tabsHook.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/tabsPackage.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/tabsPartition.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/tabsProfile.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/tabsScript.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/tabsTemplate.inc create mode 100644 trunk/gosa-plugins/fai/admin/fai/tabsVariable.inc create mode 100644 trunk/gosa-plugins/fai/admin/systems/services/repository/class_divListRepositories.inc create mode 100644 trunk/gosa-plugins/fai/admin/systems/services/repository/class_servRepository.inc create mode 100644 trunk/gosa-plugins/fai/admin/systems/services/repository/class_servRepositorySetup.inc create mode 100644 trunk/gosa-plugins/fai/admin/systems/services/repository/servRepository.tpl create mode 100644 trunk/gosa-plugins/fai/admin/systems/services/repository/servRepositorySetup.tpl create mode 100644 trunk/gosa-plugins/fai/contrib/fai.ldif create mode 100644 trunk/gosa-plugins/fai/contrib/fai.schema create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/fai.lyx create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/edit.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/edittrash.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_hook.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_packages.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_partitionTable.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_profile.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_script.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_template.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_variable.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_profile.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/list_back.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/list_home.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/list_reload.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/list_root.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/rocket.png create mode 100644 trunk/gosa-plugins/fai/help/de/lyx-source/images/search.png create mode 100644 trunk/gosa-plugins/fai/help/guide.xml create mode 100644 trunk/gosa-plugins/fai/html/images/branch.png create mode 100644 trunk/gosa-plugins/fai/html/images/branch_small.png create mode 100644 trunk/gosa-plugins/fai/html/images/branch_small_grey.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_hook.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_new_hook.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_new_packages.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_new_partitionTable.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_new_profile.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_new_script.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_new_template.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_new_variable.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_packages.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_partitionTable.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_profile.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_script.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_small.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_template.png create mode 100644 trunk/gosa-plugins/fai/html/images/fai_variable.png create mode 100644 trunk/gosa-plugins/fai/html/images/freeze.png create mode 100644 trunk/gosa-plugins/fai/html/images/freeze_grey.png create mode 100644 trunk/gosa-plugins/fai/html/images/package_configure.png create mode 100644 trunk/gosa-plugins/fai/html/images/plugin.png create mode 100644 trunk/gosa-plugins/fai/html/images/removal_mark.png create mode 100644 trunk/gosa-plugins/fai/html/images/repository.png create mode 100644 trunk/gosa-plugins/fai/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/fai/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/fai/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/fai/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/fai/locale/messages.po create mode 100644 trunk/gosa-plugins/fai/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/fai/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/fai/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/fai/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/fai/plugin.dsc create mode 100644 trunk/gosa-plugins/glpi/README.glpi create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpi.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiAccount.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiAttachmentPool.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiDeviceManagement.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiManufacturer.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterAccount.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterCartridges.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiSelectUser.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_goGlpiServer.inc create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiAttachmentEdit.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiAttachmentPool.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiDeviceManagement.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiManufacturer.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiManufacturerAdd.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinter.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinterCartridges.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiSelectUser.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_devices.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_cartridge_type.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_os.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_printer_type.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_type.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/goGlpiServer.tpl create mode 100644 trunk/gosa-plugins/glpi/admin/systems/services/glpi/remove_glpi.tpl create mode 100644 trunk/gosa-plugins/glpi/contrib/glpi.ldif create mode 100644 trunk/gosa-plugins/glpi/contrib/glpi.schema create mode 100644 trunk/gosa-plugins/glpi/contrib/glpi.sql create mode 100644 trunk/gosa-plugins/glpi/help/guide.xml create mode 100644 trunk/gosa-plugins/glpi/html/images/crossref.png create mode 100644 trunk/gosa-plugins/glpi/html/images/drives.png create mode 100644 trunk/gosa-plugins/glpi/html/images/gfx_hardware.png create mode 100644 trunk/gosa-plugins/glpi/html/images/glpi_device.png create mode 100644 trunk/gosa-plugins/glpi/html/images/harddisk.png create mode 100644 trunk/gosa-plugins/glpi/html/images/hardware.png create mode 100644 trunk/gosa-plugins/glpi/html/images/mainboard.png create mode 100644 trunk/gosa-plugins/glpi/html/images/net_hardware.png create mode 100644 trunk/gosa-plugins/glpi/html/images/new_attachment.png create mode 100644 trunk/gosa-plugins/glpi/html/images/zip.png create mode 100644 trunk/gosa-plugins/glpi/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/glpi/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/glpi/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/glpi/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/glpi/locale/messages.po create mode 100644 trunk/gosa-plugins/glpi/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/glpi/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/glpi/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/glpi/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/glpi/plugin.dsc create mode 100644 trunk/gosa-plugins/gofax/admin/systems/services/gofax/class_goFaxServer.inc create mode 100644 trunk/gosa-plugins/gofax/admin/systems/services/gofax/goFaxServer.tpl create mode 100644 trunk/gosa-plugins/gofax/contrib/gofax.sql create mode 100644 trunk/gosa-plugins/gofax/gofax/blocklists/class_blocklistGeneric.inc create mode 100644 trunk/gosa-plugins/gofax/gofax/blocklists/class_blocklistManagement.inc create mode 100644 trunk/gosa-plugins/gofax/gofax/blocklists/class_divListBlocklists.inc create mode 100644 trunk/gosa-plugins/gofax/gofax/blocklists/generic.tpl create mode 100644 trunk/gosa-plugins/gofax/gofax/blocklists/main.inc create mode 100644 trunk/gosa-plugins/gofax/gofax/blocklists/paste_generic.tpl create mode 100644 trunk/gosa-plugins/gofax/gofax/blocklists/remove.tpl create mode 100644 trunk/gosa-plugins/gofax/gofax/blocklists/tabs_blocklist.inc create mode 100644 trunk/gosa-plugins/gofax/gofax/faxaccount/class_gofaxAccount.inc create mode 100644 trunk/gosa-plugins/gofax/gofax/faxaccount/generic.tpl create mode 100644 trunk/gosa-plugins/gofax/gofax/faxaccount/lists.tpl create mode 100644 trunk/gosa-plugins/gofax/gofax/faxaccount/locals.tpl create mode 100644 trunk/gosa-plugins/gofax/gofax/faxaccount/main.inc create mode 100644 trunk/gosa-plugins/gofax/gofax/faxaccount/paste_generic.tpl create mode 100644 trunk/gosa-plugins/gofax/gofax/faxreports/class_faxreport.inc create mode 100644 trunk/gosa-plugins/gofax/gofax/faxreports/contents.tpl create mode 100644 trunk/gosa-plugins/gofax/gofax/faxreports/detail.tpl create mode 100644 trunk/gosa-plugins/gofax/gofax/faxreports/main.inc create mode 100644 trunk/gosa-plugins/gofax/help/guide.xml create mode 100644 trunk/gosa-plugins/gofax/html/getfax.php create mode 100644 trunk/gosa-plugins/gofax/html/images/blocklists.png create mode 100644 trunk/gosa-plugins/gofax/html/images/fax_small.png create mode 100644 trunk/gosa-plugins/gofax/html/images/list_blocklist.png create mode 100644 trunk/gosa-plugins/gofax/html/images/list_new_blocklist.png create mode 100644 trunk/gosa-plugins/gofax/html/images/plugin.png create mode 100644 trunk/gosa-plugins/gofax/html/images/printer.png create mode 100644 trunk/gosa-plugins/gofax/html/images/reports.png create mode 100644 trunk/gosa-plugins/gofax/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofax/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofax/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofax/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofax/locale/messages.po create mode 100644 trunk/gosa-plugins/gofax/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofax/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofax/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofax/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofax/manifest create mode 100644 trunk/gosa-plugins/gofax/plugin.dsc create mode 100644 trunk/gosa-plugins/gofon/admin/ogroups/gofon/class_phonequeue.inc create mode 100644 trunk/gosa-plugins/gofon/admin/ogroups/gofon/phonequeue.tpl create mode 100644 trunk/gosa-plugins/gofon/admin/systems/gofon/class_phoneGeneric.inc create mode 100644 trunk/gosa-plugins/gofon/admin/systems/gofon/paste_generic.tpl create mode 100644 trunk/gosa-plugins/gofon/admin/systems/gofon/phone.tpl create mode 100644 trunk/gosa-plugins/gofon/admin/systems/gofon/phonesettings.tpl create mode 100644 trunk/gosa-plugins/gofon/admin/systems/gofon/tabs_phone.inc create mode 100644 trunk/gosa-plugins/gofon/admin/systems/services/gofon/class_goFonServer.inc create mode 100644 trunk/gosa-plugins/gofon/admin/systems/services/gofon/goFonServer.tpl create mode 100644 trunk/gosa-plugins/gofon/contrib/gofon.sql create mode 100644 trunk/gosa-plugins/gofon/gofon/conference/class_divListConferences.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/conference/class_phoneConferenceGeneric.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/conference/class_phoneConferenceManagment.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/conference/generic.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/conference/headpage.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/conference/main.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/conference/paste_generic.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/conference/remove.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/conference/tabs_conference.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/fonreports/class_fonreport.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/fonreports/contents.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/fonreports/main.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/class_divListMacros.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacro.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacroManagement.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacroParameters.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/generic.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/headpage.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/main.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/parameter.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/paste_generic.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/remove.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/macro/tabs_macros.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/phoneaccount/class_phoneAccount.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/phoneaccount/generic.tpl create mode 100644 trunk/gosa-plugins/gofon/gofon/phoneaccount/main.inc create mode 100644 trunk/gosa-plugins/gofon/gofon/phoneaccount/paste_generic.tpl create mode 100644 trunk/gosa-plugins/gofon/help/guide.xml create mode 100644 trunk/gosa-plugins/gofon/html/images/banana.png create mode 100644 trunk/gosa-plugins/gofon/html/images/conference.png create mode 100644 trunk/gosa-plugins/gofon/html/images/hardware.png create mode 100644 trunk/gosa-plugins/gofon/html/images/list_macro.png create mode 100644 trunk/gosa-plugins/gofon/html/images/list_new_conference.png create mode 100644 trunk/gosa-plugins/gofon/html/images/list_new_macro.png create mode 100644 trunk/gosa-plugins/gofon/html/images/macros.png create mode 100644 trunk/gosa-plugins/gofon/html/images/options.png create mode 100644 trunk/gosa-plugins/gofon/html/images/phoneAccount.png create mode 100644 trunk/gosa-plugins/gofon/html/images/phonereport.png create mode 100644 trunk/gosa-plugins/gofon/html/images/pin.png create mode 100644 trunk/gosa-plugins/gofon/html/images/select_conference.png create mode 100644 trunk/gosa-plugins/gofon/html/images/select_macro.png create mode 100644 trunk/gosa-plugins/gofon/html/images/select_phone.png create mode 100644 trunk/gosa-plugins/gofon/html/images/sound.png create mode 100644 trunk/gosa-plugins/gofon/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofon/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofon/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofon/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofon/locale/messages.po create mode 100644 trunk/gosa-plugins/gofon/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofon/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofon/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofon/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/gofon/plugin.dsc create mode 100644 trunk/gosa-plugins/goto/addons/goto/class_gotoLogView.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/class_goto_import_file.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/class_gotomasses.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/class_target_list.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_activate.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_faireboot.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_goto_reload.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_halt.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_installation_activation.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_localboot.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_lock.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_memcheck.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_notify.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reboot.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reinstall.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reload_ldap_config.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_rescan.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_sysinfo.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_update.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_wakeup.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_activate.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_activate_new.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_faireboot.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_goto_reload.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_halt.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_installation_activation.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_localboot.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_lock.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_memcheck.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_notify.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reboot.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reinstall.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reload_ldap_config.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_rescan.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_sysinfo.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_update.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_wakeup.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_EventTargetAddList.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/class_EventTargetAddUsersList.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/target_list.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/events/timestamp_select.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/goto_import_file.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/gotomasses.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/log_view.tpl create mode 100644 trunk/gosa-plugins/goto/addons/goto/main.inc create mode 100644 trunk/gosa-plugins/goto/addons/goto/remove.tpl create mode 100644 trunk/gosa-plugins/goto/admin/applications/class_applicationGeneric.inc create mode 100644 trunk/gosa-plugins/goto/admin/applications/class_applicationManagement.inc create mode 100644 trunk/gosa-plugins/goto/admin/applications/class_applicationParameters.inc create mode 100644 trunk/gosa-plugins/goto/admin/applications/class_divListApplication.inc create mode 100644 trunk/gosa-plugins/goto/admin/applications/generic.tpl create mode 100644 trunk/gosa-plugins/goto/admin/applications/main.inc create mode 100644 trunk/gosa-plugins/goto/admin/applications/parameters.tpl create mode 100644 trunk/gosa-plugins/goto/admin/applications/release_select.tpl create mode 100644 trunk/gosa-plugins/goto/admin/applications/remove.tpl create mode 100644 trunk/gosa-plugins/goto/admin/applications/tabs_application.inc create mode 100644 trunk/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc create mode 100644 trunk/gosa-plugins/goto/admin/devices/class_deviceManagement.inc create mode 100644 trunk/gosa-plugins/goto/admin/devices/class_divListDevices.inc create mode 100644 trunk/gosa-plugins/goto/admin/devices/deviceGeneric.tpl create mode 100644 trunk/gosa-plugins/goto/admin/devices/main.inc create mode 100644 trunk/gosa-plugins/goto/admin/devices/paste_deviceGeneric.tpl create mode 100644 trunk/gosa-plugins/goto/admin/devices/remove.tpl create mode 100644 trunk/gosa-plugins/goto/admin/devices/tabs_devices.inc create mode 100644 trunk/gosa-plugins/goto/admin/groups/apps/app_list.tpl create mode 100644 trunk/gosa-plugins/goto/admin/groups/apps/class_groupApplication.inc create mode 100644 trunk/gosa-plugins/goto/admin/groups/apps/edit_entry.tpl create mode 100644 trunk/gosa-plugins/goto/admin/mimetypes/class_divListMimeTypes.inc create mode 100644 trunk/gosa-plugins/goto/admin/mimetypes/class_mimetypeGeneric.inc create mode 100644 trunk/gosa-plugins/goto/admin/mimetypes/class_mimetypeManagement.inc create mode 100644 trunk/gosa-plugins/goto/admin/mimetypes/generic.tpl create mode 100644 trunk/gosa-plugins/goto/admin/mimetypes/main.inc create mode 100644 trunk/gosa-plugins/goto/admin/mimetypes/paste_generic.tpl create mode 100644 trunk/gosa-plugins/goto/admin/mimetypes/release_select.tpl create mode 100644 trunk/gosa-plugins/goto/admin/mimetypes/remove.tpl create mode 100644 trunk/gosa-plugins/goto/admin/mimetypes/tabs_mimetypes.inc create mode 100644 trunk/gosa-plugins/goto/admin/ogroups/goto/class_termgroup.inc create mode 100644 trunk/gosa-plugins/goto/admin/ogroups/goto/termgroup.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/ArpNewDevice.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/SelectDeviceType.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/chooser.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_ArpNewDevice.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_SelectDeviceType.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_printGeneric.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_selectUserToPrinterDialog.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_terminalGeneric.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_terminalInfo.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_terminalService.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_terminalStartup.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_workstationGeneric.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/gencd.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/gencd_frame.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/gotoLpdEnable.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/info.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/printer.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/selectUserToPrinterDialog.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/tabs_printers.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/tabs_terminal.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/tabs_workstation.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/terminal.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/terminalService.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/terminalStartup.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/workstation.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/workstationService.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/goto/workstationStartup.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/ppd/class_ppdManager.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/ppd/class_printerPPDDialog.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/ppd/class_printerPPDSelectionDialog.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/ppd/printerPPDDialog.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/ppd/printerPPDSelectionDialog.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/ppd/remove_ppd.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/cups/class_goCupsServer.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/cups/goCupsServer.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/kiosk/class_goKioskService.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/kiosk/goKioskService.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/ldap/class_goLdapServer.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/ldap/goLdapServer.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/nfs/class_servNfs.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/nfs/servnfs.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/ntp/class_goNtpServer.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/ntp/goNtpServer.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/shares/class_goShareServer.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/shares/goShareServer.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/syslog/class_goLogDBServer.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/syslog/class_goSyslogServer.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/syslog/goLogDBServer.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/syslog/goSyslogServer.tpl create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/terminal/class_goTerminalServer.inc create mode 100644 trunk/gosa-plugins/goto/admin/systems/services/terminal/goTerminalServer.tpl create mode 100644 trunk/gosa-plugins/goto/contrib/resolutions create mode 100644 trunk/gosa-plugins/goto/help/guide.xml create mode 100644 trunk/gosa-plugins/goto/html/images/application.png create mode 100644 trunk/gosa-plugins/goto/html/images/branch.png create mode 100644 trunk/gosa-plugins/goto/html/images/clock.png create mode 100644 trunk/gosa-plugins/goto/html/images/default_icon.png create mode 100644 trunk/gosa-plugins/goto/html/images/devices.png create mode 100644 trunk/gosa-plugins/goto/html/images/display.png create mode 100644 trunk/gosa-plugins/goto/html/images/edit_share.png create mode 100644 trunk/gosa-plugins/goto/html/images/fai_settings.png create mode 100644 trunk/gosa-plugins/goto/html/images/freeze.png create mode 100644 trunk/gosa-plugins/goto/html/images/goto.png create mode 100644 trunk/gosa-plugins/goto/html/images/hardware.png create mode 100644 trunk/gosa-plugins/goto/html/images/hotplug.png create mode 100644 trunk/gosa-plugins/goto/html/images/keyboard.png create mode 100644 trunk/gosa-plugins/goto/html/images/kiosk.png create mode 100644 trunk/gosa-plugins/goto/html/images/list_mime.png create mode 100644 trunk/gosa-plugins/goto/html/images/list_new_app.png create mode 100644 trunk/gosa-plugins/goto/html/images/list_new_device.png create mode 100644 trunk/gosa-plugins/goto/html/images/list_new_mime.png create mode 100644 trunk/gosa-plugins/goto/html/images/list_reset_password.png create mode 100644 trunk/gosa-plugins/goto/html/images/localboot.png create mode 100644 trunk/gosa-plugins/goto/html/images/logon_script.png create mode 100644 trunk/gosa-plugins/goto/html/images/memcheck.png create mode 100644 trunk/gosa-plugins/goto/html/images/mime_embedding.png create mode 100644 trunk/gosa-plugins/goto/html/images/mime_leftclick.png create mode 100644 trunk/gosa-plugins/goto/html/images/mimetypes.png create mode 100644 trunk/gosa-plugins/goto/html/images/mouse.png create mode 100644 trunk/gosa-plugins/goto/html/images/notify.png create mode 100644 trunk/gosa-plugins/goto/html/images/plugin.png create mode 100644 trunk/gosa-plugins/goto/html/images/prio_decrease.png create mode 100644 trunk/gosa-plugins/goto/html/images/prio_increase.png create mode 100644 trunk/gosa-plugins/goto/html/images/reinstall.png create mode 100644 trunk/gosa-plugins/goto/html/images/rescan.png create mode 100644 trunk/gosa-plugins/goto/html/images/scanner.png create mode 100644 trunk/gosa-plugins/goto/html/images/select_application.png create mode 100644 trunk/gosa-plugins/goto/html/images/select_device.png create mode 100644 trunk/gosa-plugins/goto/html/images/select_mimetype.png create mode 100644 trunk/gosa-plugins/goto/html/images/sysinfo.png create mode 100644 trunk/gosa-plugins/goto/html/images/update.png create mode 100644 trunk/gosa-plugins/goto/html/images/view_logs.png create mode 100644 trunk/gosa-plugins/goto/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/goto/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/goto/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/goto/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/goto/locale/messages.po create mode 100644 trunk/gosa-plugins/goto/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/goto/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/goto/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/goto/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/goto/personal/environment/class_environment.inc create mode 100644 trunk/gosa-plugins/goto/personal/environment/class_hotplugDialog.inc create mode 100644 trunk/gosa-plugins/goto/personal/environment/class_logonManagementDialog.inc create mode 100644 trunk/gosa-plugins/goto/personal/environment/class_selectPrinterDialog.inc create mode 100644 trunk/gosa-plugins/goto/personal/environment/environment.tpl create mode 100644 trunk/gosa-plugins/goto/personal/environment/hotplugDialog.tpl create mode 100644 trunk/gosa-plugins/goto/personal/environment/logonManagement.tpl create mode 100644 trunk/gosa-plugins/goto/personal/environment/main.inc create mode 100644 trunk/gosa-plugins/goto/personal/environment/selectPrinterDialog.tpl create mode 100644 trunk/gosa-plugins/goto/plugin.dsc create mode 100644 trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/class_goKrbServer.inc create mode 100644 trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/class_password-methods-heimdal.inc create mode 100644 trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/goKrbServer.tpl create mode 100644 trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/pwd_heimdal.tpl create mode 100644 trunk/gosa-plugins/heimdal/contrib/hdb.ldif create mode 100644 trunk/gosa-plugins/heimdal/contrib/hdb.schema create mode 100644 trunk/gosa-plugins/heimdal/help/guide.xml create mode 100644 trunk/gosa-plugins/heimdal/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/heimdal/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/heimdal/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/heimdal/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/heimdal/locale/messages.po create mode 100644 trunk/gosa-plugins/heimdal/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/heimdal/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/heimdal/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/heimdal/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/heimdal/plugin.dsc create mode 100644 trunk/gosa-plugins/kolab/admin/systems/services/kolab/class_servKolab.inc create mode 100644 trunk/gosa-plugins/kolab/admin/systems/services/kolab/servkolab.tpl create mode 100644 trunk/gosa-plugins/kolab/contrib/kolab2.ldif create mode 100644 trunk/gosa-plugins/kolab/contrib/kolab2.schema create mode 100644 trunk/gosa-plugins/kolab/contrib/rfc2739.ldif create mode 100644 trunk/gosa-plugins/kolab/contrib/rfc2739.schema create mode 100644 trunk/gosa-plugins/kolab/help/guide.xml create mode 100644 trunk/gosa-plugins/kolab/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/kolab/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/kolab/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/kolab/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/kolab/locale/messages.po create mode 100644 trunk/gosa-plugins/kolab/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/kolab/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/kolab/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/kolab/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/kolab/personal/connectivity/kolab/class_kolabAccount.inc create mode 100644 trunk/gosa-plugins/kolab/personal/connectivity/kolab/kolab.tpl create mode 100644 trunk/gosa-plugins/kolab/personal/mail/kolab/class_mail-methods-kolab.inc create mode 100644 trunk/gosa-plugins/kolab/personal/mail/kolab/class_mail-methods-kolab22.inc create mode 100644 trunk/gosa-plugins/kolab/plugin.dsc create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_csvimport.inc create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_export.inc create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_exportxls.inc create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_import.inc create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_ldif.inc create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentcsv.tpl create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentexport.tpl create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentexportxls.tpl create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentimport.tpl create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/main.inc create mode 100644 trunk/gosa-plugins/ldapmanager/addons/ldapmanager/tabs_ldif.inc create mode 100644 trunk/gosa-plugins/ldapmanager/help/guide.xml create mode 100644 trunk/gosa-plugins/ldapmanager/html/getldif.php create mode 100644 trunk/gosa-plugins/ldapmanager/html/getxls.php create mode 100644 trunk/gosa-plugins/ldapmanager/html/images/ldif.png create mode 100644 trunk/gosa-plugins/ldapmanager/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/ldapmanager/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/ldapmanager/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/ldapmanager/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/ldapmanager/locale/messages.po create mode 100644 trunk/gosa-plugins/ldapmanager/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/ldapmanager/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/ldapmanager/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/ldapmanager/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/ldapmanager/plugin.dsc create mode 100644 trunk/gosa-plugins/log/addons/logview/class_gosa_logview.inc create mode 100644 trunk/gosa-plugins/log/addons/logview/class_logview.inc create mode 100644 trunk/gosa-plugins/log/addons/logview/contents.tpl create mode 100644 trunk/gosa-plugins/log/addons/logview/gosa_log_contents.tpl create mode 100644 trunk/gosa-plugins/log/addons/logview/main.inc create mode 100644 trunk/gosa-plugins/log/addons/logview/tabs_log.inc create mode 100644 trunk/gosa-plugins/log/admin/systems/services/log/class_gosaLogServer.inc create mode 100644 trunk/gosa-plugins/log/admin/systems/services/log/gosaLogServer.tpl create mode 100644 trunk/gosa-plugins/log/contrib/goconfig.ldif create mode 100644 trunk/gosa-plugins/log/contrib/goconfig.schema create mode 100644 trunk/gosa-plugins/log/contrib/golog.sql create mode 100644 trunk/gosa-plugins/log/contrib/logging.sql create mode 100644 trunk/gosa-plugins/log/help/guide.xml create mode 100644 trunk/gosa-plugins/log/html/images/log_warning.png create mode 100644 trunk/gosa-plugins/log/html/images/plugin.png create mode 100644 trunk/gosa-plugins/log/html/images/time.png create mode 100644 trunk/gosa-plugins/log/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/log/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/log/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/log/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/log/locale/messages.po create mode 100644 trunk/gosa-plugins/log/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/log/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/log/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/log/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/log/plugin.dsc create mode 100644 trunk/gosa-plugins/mail/addons/mailqueue/class_mailqueue.inc create mode 100644 trunk/gosa-plugins/mail/addons/mailqueue/class_si_mailqueue.inc create mode 100644 trunk/gosa-plugins/mail/addons/mailqueue/contents.tpl create mode 100644 trunk/gosa-plugins/mail/addons/mailqueue/header.tpl create mode 100644 trunk/gosa-plugins/mail/addons/mailqueue/main.inc create mode 100644 trunk/gosa-plugins/mail/admin/groups/mail/class_groupMail.inc create mode 100644 trunk/gosa-plugins/mail/admin/groups/mail/mail.tpl create mode 100644 trunk/gosa-plugins/mail/admin/groups/mail/mail_admins.tpl create mode 100644 trunk/gosa-plugins/mail/admin/groups/mail/mail_locals.tpl create mode 100644 trunk/gosa-plugins/mail/admin/groups/mail/paste_mail.tpl create mode 100644 trunk/gosa-plugins/mail/admin/ogroups/mail/class_mailogroup.inc create mode 100644 trunk/gosa-plugins/mail/admin/ogroups/mail/mail.tpl create mode 100644 trunk/gosa-plugins/mail/admin/ogroups/mail/paste_mail.tpl create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/imap/class_goImapServer.inc create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/imap/goImapServer.tpl create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/mail/class_goMailServer.inc create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/mail/goMailServer.tpl create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/spam/class_goSpamServer.inc create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/spam/class_goSpamServerRule.inc create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/spam/goSpamServer.tpl create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/spam/goSpamServerRule.tpl create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/virus/class_goVirusServer.inc create mode 100644 trunk/gosa-plugins/mail/admin/systems/services/virus/goVirusServer.tpl create mode 100644 trunk/gosa-plugins/mail/contrib/goAgent.pl create mode 100644 trunk/gosa-plugins/mail/contrib/sieve_vacation/IMAP/Sieve.pm create mode 100644 trunk/gosa-plugins/mail/contrib/sieve_vacation/update-vacation.pl create mode 100644 trunk/gosa-plugins/mail/contrib/vacation_example.txt create mode 100644 trunk/gosa-plugins/mail/help/guide.xml create mode 100644 trunk/gosa-plugins/mail/html/images/alternatemail.png create mode 100644 trunk/gosa-plugins/mail/html/images/envelope.png create mode 100644 trunk/gosa-plugins/mail/html/images/mailq_active.png create mode 100644 trunk/gosa-plugins/mail/html/images/mailq_header.png create mode 100644 trunk/gosa-plugins/mail/html/images/mailq_hold.png create mode 100644 trunk/gosa-plugins/mail/html/images/mailq_unhold.png create mode 100644 trunk/gosa-plugins/mail/html/images/mailqueue.png create mode 100644 trunk/gosa-plugins/mail/html/images/plugin.png create mode 100644 trunk/gosa-plugins/mail/html/images/shared_folder.png create mode 100644 trunk/gosa-plugins/mail/html/images/sieve_add_new_bottom.png create mode 100644 trunk/gosa-plugins/mail/html/images/sieve_add_new_top.png create mode 100644 trunk/gosa-plugins/mail/html/images/sieve_add_test.png create mode 100644 trunk/gosa-plugins/mail/html/images/sieve_del_object.png create mode 100644 trunk/gosa-plugins/mail/html/images/sieve_move_object_down.png create mode 100644 trunk/gosa-plugins/mail/html/images/sieve_move_object_up.png create mode 100644 trunk/gosa-plugins/mail/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mail/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mail/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mail/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mail/locale/messages.po create mode 100644 trunk/gosa-plugins/mail/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mail/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mail/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mail/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mail/personal/mail/class_mail-methods-cyrus.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/class_mail-methods-sendmail-cyrus.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/class_mail-methods.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/class_mailAccount.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/copypaste.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/generic.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/mail_locals.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/main.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve-discard.txt create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve-header.txt create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve-mailsize.txt create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve-spam.txt create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve-vacation.txt create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Parser.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Scanner.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Tree.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_parser.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_scanner.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_semantics.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieve.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Block_End.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Block_Start.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Comment.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Discard.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Else_Elsif.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Fileinto.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_If.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Keep.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Redirect.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Reject.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Require.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Stop.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Vacation.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveManagement.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/class_tree.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/libsieve.inc create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/add_element.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/block_indent_start.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/block_indent_stop.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/create_script.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/edit_frame_base.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_address.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_allof.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_anyof.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_block_end.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_block_start.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_boolean.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_comment.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_discard.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_else.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_elsif.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_envelope.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_exists.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_fileinto.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_header.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_if.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_keep.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_redirect.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_reject.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_require.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_size.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_stop.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_vacation.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/import_script.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/management.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_container.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_container_clear.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_test_container.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/remove_script.tpl create mode 100644 trunk/gosa-plugins/mail/personal/mail/sieve/templates/select_test_type.tpl create mode 100644 trunk/gosa-plugins/mail/plugin.dsc create mode 100644 trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_goKrbServer.inc create mode 100644 trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_krb5_policy.inc create mode 100644 trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_krb_host_keys.inc create mode 100644 trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_password-methods-MIT.inc create mode 100644 trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/goKrbServer.tpl create mode 100644 trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/krb5_policy.tpl create mode 100644 trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/krb_host_keys.tpl create mode 100644 trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/pwd_kerberos_mit.tpl create mode 100644 trunk/gosa-plugins/mit-krb5/contrib/hdb.ldif create mode 100644 trunk/gosa-plugins/mit-krb5/contrib/hdb.schema create mode 100644 trunk/gosa-plugins/mit-krb5/help/guide.xml create mode 100644 trunk/gosa-plugins/mit-krb5/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mit-krb5/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mit-krb5/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mit-krb5/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mit-krb5/locale/messages.po create mode 100644 trunk/gosa-plugins/mit-krb5/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mit-krb5/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mit-krb5/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mit-krb5/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/mit-krb5/plugin.dsc create mode 100644 trunk/gosa-plugins/nagios/README.nagios create mode 100755 trunk/gosa-plugins/nagios/contrib/goNagios.pl create mode 100644 trunk/gosa-plugins/nagios/contrib/nagios.ldif create mode 100644 trunk/gosa-plugins/nagios/contrib/nagios.schema create mode 100644 trunk/gosa-plugins/nagios/help/guide.xml create mode 100644 trunk/gosa-plugins/nagios/html/images/plugin.png create mode 100644 trunk/gosa-plugins/nagios/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/nagios/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/nagios/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/nagios/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/nagios/locale/messages.po create mode 100644 trunk/gosa-plugins/nagios/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/nagios/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/nagios/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/nagios/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/nagios/personal/nagios/class_nagiosAccount.inc create mode 100644 trunk/gosa-plugins/nagios/personal/nagios/main.inc create mode 100644 trunk/gosa-plugins/nagios/personal/nagios/nagios.tpl create mode 100644 trunk/gosa-plugins/nagios/plugin.dsc create mode 100644 trunk/gosa-plugins/netatalk/contrib/apple.schema.README create mode 100644 trunk/gosa-plugins/netatalk/help/guide.xml create mode 100644 trunk/gosa-plugins/netatalk/html/images/plugin.png create mode 100644 trunk/gosa-plugins/netatalk/html/images/select_netatalk.png create mode 100644 trunk/gosa-plugins/netatalk/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/netatalk/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/netatalk/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/netatalk/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/netatalk/locale/messages.po create mode 100644 trunk/gosa-plugins/netatalk/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/netatalk/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/netatalk/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/netatalk/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/netatalk/personal/netatalk/class_netatalk.inc create mode 100644 trunk/gosa-plugins/netatalk/personal/netatalk/main.inc create mode 100644 trunk/gosa-plugins/netatalk/personal/netatalk/netatalk.tpl create mode 100644 trunk/gosa-plugins/netatalk/plugin.dsc create mode 100644 trunk/gosa-plugins/opengroupware/help/guide.xml create mode 100644 trunk/gosa-plugins/opengroupware/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opengroupware/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opengroupware/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opengroupware/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opengroupware/locale/messages.po create mode 100644 trunk/gosa-plugins/opengroupware/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opengroupware/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opengroupware/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opengroupware/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_opengw.inc create mode 100644 trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_opengwAccount.inc create mode 100644 trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_pgsql_opengw.inc create mode 100644 trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/opengw.tpl create mode 100644 trunk/gosa-plugins/opengroupware/plugin.dsc create mode 100644 trunk/gosa-plugins/openxchange/README.openxchange create mode 100644 trunk/gosa-plugins/openxchange/contrib/openxchange.ldif create mode 100644 trunk/gosa-plugins/openxchange/contrib/openxchange.schema create mode 100644 trunk/gosa-plugins/openxchange/help/guide.xml create mode 100644 trunk/gosa-plugins/openxchange/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/openxchange/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/openxchange/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/openxchange/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/openxchange/locale/messages.po create mode 100644 trunk/gosa-plugins/openxchange/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/openxchange/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/openxchange/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/openxchange/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/openxchange/personal/connectivity/openxchange/class_oxchangeAccount.inc create mode 100644 trunk/gosa-plugins/openxchange/personal/connectivity/openxchange/oxchange.tpl create mode 100644 trunk/gosa-plugins/openxchange/plugin.dsc create mode 100644 trunk/gosa-plugins/opsi/admin/opsi/class_opsi.inc create mode 100644 trunk/gosa-plugins/opsi/admin/opsi/class_opsiProperties.inc create mode 100644 trunk/gosa-plugins/opsi/admin/opsi/class_opsigeneric.inc create mode 100644 trunk/gosa-plugins/opsi/admin/opsi/class_opsiware.inc create mode 100644 trunk/gosa-plugins/opsi/admin/opsi/generic.tpl create mode 100644 trunk/gosa-plugins/opsi/admin/opsi/opsi_tabs.inc create mode 100644 trunk/gosa-plugins/opsi/admin/opsi/opsiware.tpl create mode 100644 trunk/gosa-plugins/opsi/admin/opsi/properties.tpl create mode 100644 trunk/gosa-plugins/opsi/admin/opsi/tabs_prodconfig.inc create mode 100644 trunk/gosa-plugins/opsi/help/guide.xml create mode 100644 trunk/gosa-plugins/opsi/html/images/client_generic.png create mode 100644 trunk/gosa-plugins/opsi/html/images/hardware_info.png create mode 100644 trunk/gosa-plugins/opsi/html/images/local_package.png create mode 100644 trunk/gosa-plugins/opsi/html/images/netboot_package.png create mode 100644 trunk/gosa-plugins/opsi/html/images/opsi.png create mode 100644 trunk/gosa-plugins/opsi/html/images/product.png create mode 100644 trunk/gosa-plugins/opsi/html/images/software_info.png create mode 100644 trunk/gosa-plugins/opsi/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opsi/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/opsi/plugin.dsc create mode 100644 trunk/gosa-plugins/phpgw/contrib/phpgwaccount.ldif create mode 100644 trunk/gosa-plugins/phpgw/contrib/phpgwaccount.schema create mode 100644 trunk/gosa-plugins/phpgw/help/guide.xml create mode 100644 trunk/gosa-plugins/phpgw/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpgw/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpgw/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpgw/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpgw/locale/messages.po create mode 100644 trunk/gosa-plugins/phpgw/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpgw/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpgw/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpgw/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpgw/personal/connectivity/phpgw/class_phpgwAccount.inc create mode 100644 trunk/gosa-plugins/phpgw/personal/connectivity/phpgw/phpgw.tpl create mode 100644 trunk/gosa-plugins/phpgw/plugin.dsc create mode 100644 trunk/gosa-plugins/phpscheduleit/README.phpscheduleit create mode 100644 trunk/gosa-plugins/phpscheduleit/contrib/phpscheduleit.ldif create mode 100644 trunk/gosa-plugins/phpscheduleit/contrib/phpscheduleit.schema create mode 100644 trunk/gosa-plugins/phpscheduleit/help/guide.xml create mode 100644 trunk/gosa-plugins/phpscheduleit/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpscheduleit/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpscheduleit/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpscheduleit/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpscheduleit/locale/messages.po create mode 100644 trunk/gosa-plugins/phpscheduleit/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpscheduleit/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpscheduleit/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpscheduleit/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/phpscheduleit/personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc create mode 100644 trunk/gosa-plugins/phpscheduleit/personal/connectivity/phpscheduleit/phpscheduleit.tpl create mode 100644 trunk/gosa-plugins/phpscheduleit/plugin.dsc create mode 100644 trunk/gosa-plugins/pptp/contrib/README.pptp create mode 100644 trunk/gosa-plugins/pptp/contrib/pptp.ldif create mode 100644 trunk/gosa-plugins/pptp/contrib/pptp.schema create mode 100644 trunk/gosa-plugins/pptp/help/guide.xml create mode 100644 trunk/gosa-plugins/pptp/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pptp/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pptp/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pptp/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pptp/locale/messages.po create mode 100644 trunk/gosa-plugins/pptp/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pptp/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pptp/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pptp/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pptp/personal/connectivity/pptp/class_pptpAccount.inc create mode 100644 trunk/gosa-plugins/pptp/personal/connectivity/pptp/pptp.tpl create mode 100644 trunk/gosa-plugins/pptp/plugin.dsc create mode 100644 trunk/gosa-plugins/pureftpd/contrib/pureftpd.ldif create mode 100644 trunk/gosa-plugins/pureftpd/contrib/pureftpd.schema create mode 100644 trunk/gosa-plugins/pureftpd/help/guide.xml create mode 100644 trunk/gosa-plugins/pureftpd/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pureftpd/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pureftpd/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pureftpd/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pureftpd/locale/messages.po create mode 100644 trunk/gosa-plugins/pureftpd/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pureftpd/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pureftpd/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pureftpd/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/pureftpd/personal/connectivity/pureftpd/class_pureftpdAccount.inc create mode 100644 trunk/gosa-plugins/pureftpd/personal/connectivity/pureftpd/pureftpd.tpl create mode 100644 trunk/gosa-plugins/pureftpd/plugin.dsc create mode 100644 trunk/gosa-plugins/samba/admin/systems/samba/class_winGeneric.inc create mode 100644 trunk/gosa-plugins/samba/admin/systems/samba/tabs_winstation.inc create mode 100644 trunk/gosa-plugins/samba/admin/systems/samba/wingeneric.tpl create mode 100755 trunk/gosa-plugins/samba/contrib/fix_munged create mode 100755 trunk/gosa-plugins/samba/contrib/goSamba.pl create mode 100644 trunk/gosa-plugins/samba/help/guide.xml create mode 100644 trunk/gosa-plugins/samba/html/images/plugin.png create mode 100644 trunk/gosa-plugins/samba/html/images/terminal_server.png create mode 100644 trunk/gosa-plugins/samba/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/samba/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/samba/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/samba/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/samba/locale/messages.po create mode 100644 trunk/gosa-plugins/samba/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/samba/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/samba/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/samba/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/samba/personal/samba/class_sambaAccount.inc create mode 100644 trunk/gosa-plugins/samba/personal/samba/class_sambaLogonHours.inc create mode 100644 trunk/gosa-plugins/samba/personal/samba/class_sambaMungedDial.inc create mode 100644 trunk/gosa-plugins/samba/personal/samba/main.inc create mode 100644 trunk/gosa-plugins/samba/personal/samba/samba2.tpl create mode 100644 trunk/gosa-plugins/samba/personal/samba/samba3.tpl create mode 100644 trunk/gosa-plugins/samba/personal/samba/samba3_workstations.tpl create mode 100644 trunk/gosa-plugins/samba/personal/samba/sambaLogonHours.tpl create mode 100644 trunk/gosa-plugins/samba/plugin.dsc create mode 100644 trunk/gosa-plugins/scalix/admin/groups/scalix/class_scalixGroup.inc create mode 100644 trunk/gosa-plugins/scalix/help/guide.xml create mode 100644 trunk/gosa-plugins/scalix/html/images/envelope.png create mode 100644 trunk/gosa-plugins/scalix/html/images/plugin.png create mode 100644 trunk/gosa-plugins/scalix/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/scalix/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/scalix/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/scalix/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/scalix/locale/messages.po create mode 100644 trunk/gosa-plugins/scalix/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/scalix/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/scalix/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/scalix/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/scalix/personal/scalix/class_scalixAccount.inc create mode 100644 trunk/gosa-plugins/scalix/personal/scalix/generic.tpl create mode 100644 trunk/gosa-plugins/scalix/personal/scalix/main.inc create mode 100644 trunk/gosa-plugins/scalix/personal/scalix/paste_generic.tpl create mode 100644 trunk/gosa-plugins/scalix/plugin.dsc create mode 100644 trunk/gosa-plugins/squid/README.squid create mode 100644 trunk/gosa-plugins/squid/contrib/goQuota.pl create mode 100644 trunk/gosa-plugins/squid/contrib/goQuotaView.pl create mode 100644 trunk/gosa-plugins/squid/contrib/goSquid.pl create mode 100644 trunk/gosa-plugins/squid/contrib/mkHash.pl create mode 100644 trunk/gosa-plugins/squid/help/guide.xml create mode 100644 trunk/gosa-plugins/squid/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/squid/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/squid/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/squid/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/squid/locale/messages.po create mode 100644 trunk/gosa-plugins/squid/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/squid/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/squid/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/squid/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/squid/personal/connectivity/squid/class_proxyAccount.inc create mode 100644 trunk/gosa-plugins/squid/personal/connectivity/squid/proxy.tpl create mode 100644 trunk/gosa-plugins/squid/plugin.dsc create mode 100644 trunk/gosa-plugins/ssh/help/guide.xml create mode 100644 trunk/gosa-plugins/ssh/plugin.dsc create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/class_divListSudo.inc create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/class_sudoGeneric.inc create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/class_sudoManagement.inc create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/class_sudoOption.inc create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/class_target_list_systems.inc create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/class_target_list_users.inc create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/generic.tpl create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/main.inc create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/options.tpl create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/paste_generic.tpl create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/remove.tpl create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/tabs_sudo.inc create mode 100644 trunk/gosa-plugins/sudo/admin/sudo/trust_machines.tpl create mode 100644 trunk/gosa-plugins/sudo/contrib/sudo.ldif create mode 100644 trunk/gosa-plugins/sudo/contrib/sudo.schema create mode 100644 trunk/gosa-plugins/sudo/help/guide.xml create mode 100644 trunk/gosa-plugins/sudo/html/images/list_new_sudo.png create mode 100644 trunk/gosa-plugins/sudo/html/images/negate.png create mode 100644 trunk/gosa-plugins/sudo/html/images/select_sudo.png create mode 100644 trunk/gosa-plugins/sudo/html/images/select_workstation.png create mode 100644 trunk/gosa-plugins/sudo/html/images/sudo.png create mode 100644 trunk/gosa-plugins/sudo/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/sudo/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/sudo/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/sudo/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/sudo/locale/messages.po create mode 100644 trunk/gosa-plugins/sudo/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/sudo/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/sudo/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/sudo/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/sudo/plugin.dsc create mode 100644 trunk/gosa-plugins/systems/admin/systems/class_componentGeneric.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/class_divListSystem.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/class_divListSystemService.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/class_servGeneric.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/class_serverService.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/class_systemManagement.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/class_termDNS.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/component.tpl create mode 100644 trunk/gosa-plugins/systems/admin/systems/contents.tpl create mode 100644 trunk/gosa-plugins/systems/admin/systems/main.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/network.tpl create mode 100644 trunk/gosa-plugins/systems/admin/systems/password.tpl create mode 100644 trunk/gosa-plugins/systems/admin/systems/paste_generic.tpl create mode 100644 trunk/gosa-plugins/systems/admin/systems/remove.tpl create mode 100644 trunk/gosa-plugins/systems/admin/systems/server.tpl create mode 100644 trunk/gosa-plugins/systems/admin/systems/services/ServiceAddDialog.tpl create mode 100644 trunk/gosa-plugins/systems/admin/systems/services/class_ServiceAddDialog.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/services/class_goService.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/tabs_arpnewdevice.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/tabs_component.inc create mode 100644 trunk/gosa-plugins/systems/admin/systems/tabs_server.inc create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/WARNINGS create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/edit.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/index.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/labels.pl create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/list_back.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/list_home.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/list_reload.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/list_root.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node1.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node10.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node11.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node12.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node13.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node14.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node15.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node16.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node17.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node18.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node19.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node2.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node20.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node21.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node22.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node23.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node24.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node25.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node26.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node27.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node28.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node29.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node3.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node30.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node31.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node32.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node33.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node34.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node35.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node36.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node37.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node38.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node39.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node4.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node40.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node41.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node42.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node43.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node44.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node45.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node46.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node47.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node48.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node49.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node5.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node50.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node51.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node52.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node53.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node54.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node55.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node56.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node57.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node58.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node59.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node6.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node60.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node61.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node62.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node63.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node64.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node65.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node66.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node67.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node68.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node69.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node7.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node70.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node71.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node72.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node73.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node74.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node75.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node76.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node77.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node78.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node8.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/node9.html create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/rocket.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/search.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/select_new_component.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/select_new_phone.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/select_new_printer.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/select_new_server.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/select_new_terminal.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/select_new_workstation.png create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/systems.css create mode 100644 trunk/gosa-plugins/systems/help/de/html/systems/systems.html create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/edit.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/list_back.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/list_home.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/list_reload.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/list_root.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/rocket.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/search.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_component.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_phone.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_printer.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_server.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_terminal.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_workstation.png create mode 100644 trunk/gosa-plugins/systems/help/de/lyx-source/systems.lyx create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/WARNINGS create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/index.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/labels.pl create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/list_back.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/list_home.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/list_root.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node1.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node10.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node11.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node12.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node13.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node14.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node15.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node16.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node17.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node18.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node19.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node2.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node20.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node21.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node22.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node23.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node24.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node25.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node26.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node27.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node28.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node29.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node3.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node30.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node31.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node32.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node33.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node34.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node35.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node36.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node37.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node38.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node39.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node4.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node40.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node41.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node42.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node43.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node44.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node45.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node46.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node47.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node48.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node49.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node5.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node50.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node51.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node52.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node53.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node54.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node55.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node56.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node57.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node58.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node59.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node6.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node60.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node61.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node62.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node63.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node64.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node65.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node66.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node67.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node68.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node69.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node7.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node70.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node71.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node72.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node73.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node74.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node75.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node8.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/node9.html create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/rocket.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/search.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/select_new_component.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/select_new_phone.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/select_new_printer.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/select_new_server.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/select_new_terminal.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/select_new_workstation.png create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/systems.css create mode 100644 trunk/gosa-plugins/systems/help/en/html/systems/systems.html create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/edit.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/list_back.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/list_home.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/list_reload.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/list_root.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/rocket.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/search.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_component.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_phone.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_printer.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_server.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_terminal.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_workstation.png create mode 100644 trunk/gosa-plugins/systems/help/en/lyx-source/systems.lyx create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/WARNINGS create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/index.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/labels.pl create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/list_back.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/list_home.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/list_root.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node1.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node10.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node11.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node12.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node13.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node14.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node15.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node16.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node17.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node18.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node19.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node2.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node20.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node21.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node22.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node23.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node24.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node25.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node26.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node27.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node28.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node29.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node3.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node30.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node31.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node32.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node33.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node34.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node35.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node36.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node37.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node38.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node39.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node4.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node40.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node41.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node42.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node43.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node44.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node45.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node46.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node47.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node48.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node49.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node5.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node50.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node51.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node52.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node53.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node54.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node55.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node56.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node57.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node58.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node59.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node6.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node60.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node61.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node62.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node63.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node64.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node65.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node66.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node67.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node68.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node69.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node7.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node70.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node71.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node72.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node73.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node74.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node75.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node76.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node77.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node8.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/node9.html create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/rocket.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/search.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/select_new_component.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/select_new_phone.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/select_new_printer.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/select_new_server.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/select_new_terminal.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/select_new_workstation.png create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/systems.css create mode 100644 trunk/gosa-plugins/systems/help/fr/html/systems/systems.html create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/edit.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_back.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_home.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_reload.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_root.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/rocket.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/search.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_component.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_phone.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_printer.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_server.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_terminal.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_workstation.png create mode 100644 trunk/gosa-plugins/systems/help/fr/lyx-source/systems.lyx create mode 100644 trunk/gosa-plugins/systems/help/guide.xml create mode 100644 trunk/gosa-plugins/systems/html/images/cdrom.png create mode 100644 trunk/gosa-plugins/systems/html/images/clock.png create mode 100644 trunk/gosa-plugins/systems/html/images/drives.png create mode 100644 trunk/gosa-plugins/systems/html/images/network.png create mode 100644 trunk/gosa-plugins/systems/html/images/plugin.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_component.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_default.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_new_server.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_newsystem.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_phone.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_printer.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_server.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_terminal.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_winstation.png create mode 100644 trunk/gosa-plugins/systems/html/images/select_workstation.png create mode 100644 trunk/gosa-plugins/systems/html/images/server.png create mode 100644 trunk/gosa-plugins/systems/html/images/server_busy.png create mode 100644 trunk/gosa-plugins/systems/html/images/server_error.png create mode 100644 trunk/gosa-plugins/systems/html/images/server_locked.png create mode 100644 trunk/gosa-plugins/systems/html/images/terminal_error.png create mode 100644 trunk/gosa-plugins/systems/html/images/terminal_locked.png create mode 100644 trunk/gosa-plugins/systems/html/images/workstation_busy.png create mode 100644 trunk/gosa-plugins/systems/html/images/workstation_error.png create mode 100644 trunk/gosa-plugins/systems/html/images/workstation_locked.png create mode 100644 trunk/gosa-plugins/systems/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/systems/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/systems/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/systems/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/systems/locale/messages.po create mode 100644 trunk/gosa-plugins/systems/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/systems/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/systems/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/systems/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/systems/plugin.dsc create mode 100644 trunk/gosa-plugins/uw-imap/contrib/procmail-discard.txt create mode 100644 trunk/gosa-plugins/uw-imap/contrib/procmail-footer.txt create mode 100644 trunk/gosa-plugins/uw-imap/contrib/procmail-header.txt create mode 100644 trunk/gosa-plugins/uw-imap/contrib/procmail-spam.txt create mode 100644 trunk/gosa-plugins/uw-imap/contrib/procmail-vacation.txt create mode 100644 trunk/gosa-plugins/uw-imap/personal/mail/uw-imap/class_mail-methods-uwimap.inc create mode 100644 trunk/gosa-plugins/uw-imap/plugin.dsc create mode 100644 trunk/gosa-plugins/webdav/help/guide.xml create mode 100644 trunk/gosa-plugins/webdav/locale/de/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/webdav/locale/es/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/webdav/locale/fr/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/webdav/locale/it/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/webdav/locale/messages.po create mode 100644 trunk/gosa-plugins/webdav/locale/nl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/webdav/locale/pl/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/webdav/locale/ru/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/webdav/locale/zh/LC_MESSAGES/messages.po create mode 100644 trunk/gosa-plugins/webdav/personal/connectivity/webdav/class_webdavAccount.inc create mode 100644 trunk/gosa-plugins/webdav/personal/connectivity/webdav/webdav.tpl create mode 100644 trunk/gosa-plugins/webdav/plugin.dsc create mode 100644 trunk/gosa-si/Doxyfile create mode 100644 trunk/gosa-si/README create mode 100644 trunk/gosa-si/client.conf create mode 100644 trunk/gosa-si/client.conf.pod create mode 100644 trunk/gosa-si/client/events/corefunctions.pm create mode 100644 trunk/gosa-si/client/events/dak.pm create mode 100644 trunk/gosa-si/client/events/gosaTriggered.pm create mode 100644 trunk/gosa-si/client/events/installation.pm create mode 100644 trunk/gosa-si/client/events/krb5.pm create mode 100644 trunk/gosa-si/client/events/mailqueue.pm create mode 100644 trunk/gosa-si/debian/README.debian create mode 100644 trunk/gosa-si/debian/changelog create mode 100644 trunk/gosa-si/debian/compat create mode 100644 trunk/gosa-si/debian/control create mode 100644 trunk/gosa-si/debian/copyright create mode 100644 trunk/gosa-si/debian/gosa-si-client-dak.dirs create mode 100644 trunk/gosa-si/debian/gosa-si-client-dak.install create mode 100644 trunk/gosa-si/debian/gosa-si-client-krb5.dirs create mode 100644 trunk/gosa-si/debian/gosa-si-client-krb5.install create mode 100644 trunk/gosa-si/debian/gosa-si-client.dirs create mode 100644 trunk/gosa-si/debian/gosa-si-client.install create mode 100644 trunk/gosa-si/debian/gosa-si-client.lintian-overrides create mode 100644 trunk/gosa-si/debian/gosa-si-client.logrotate create mode 100644 trunk/gosa-si/debian/gosa-si-client.manpages create mode 100644 trunk/gosa-si/debian/gosa-si-client.postinst create mode 100644 trunk/gosa-si/debian/gosa-si-common.default create mode 100644 trunk/gosa-si/debian/gosa-si-common.dirs create mode 100755 trunk/gosa-si/debian/gosa-si-common.init create mode 100644 trunk/gosa-si/debian/gosa-si-common.install create mode 100644 trunk/gosa-si/debian/gosa-si-common.postinst create mode 100644 trunk/gosa-si/debian/gosa-si-server-opsi.dirs create mode 100644 trunk/gosa-si/debian/gosa-si-server-opsi.install create mode 100644 trunk/gosa-si/debian/gosa-si-server-postfix.dirs create mode 100644 trunk/gosa-si/debian/gosa-si-server-postfix.install create mode 100644 trunk/gosa-si/debian/gosa-si-server.dirs create mode 100644 trunk/gosa-si/debian/gosa-si-server.install create mode 100644 trunk/gosa-si/debian/gosa-si-server.lintian-overrides create mode 100644 trunk/gosa-si/debian/gosa-si-server.logrotate create mode 100644 trunk/gosa-si/debian/gosa-si-server.manpages create mode 100644 trunk/gosa-si/debian/gosa-si-server.postinst create mode 100755 trunk/gosa-si/debian/rules create mode 100755 trunk/gosa-si/gosa-si-client create mode 100644 trunk/gosa-si/gosa-si-client.1 create mode 100644 trunk/gosa-si/gosa-si-client.conf.5 create mode 100644 trunk/gosa-si/gosa-si-client.pod create mode 100755 trunk/gosa-si/gosa-si-server create mode 100644 trunk/gosa-si/gosa-si-server.1 create mode 100644 trunk/gosa-si/gosa-si-server.conf.5 create mode 100644 trunk/gosa-si/gosa-si-server.pod create mode 100644 trunk/gosa-si/modules/ArpHandler.pm create mode 100644 trunk/gosa-si/modules/ArpWatch.pm create mode 100644 trunk/gosa-si/modules/ClientPackages.pm create mode 100644 trunk/gosa-si/modules/DBmysql.pm create mode 100644 trunk/gosa-si/modules/DBsqlite.pm create mode 100644 trunk/gosa-si/modules/GosaPackages.pm create mode 100644 trunk/gosa-si/modules/GosaSupportDaemon.pm create mode 100644 trunk/gosa-si/modules/ServerPackages.pm create mode 100644 trunk/gosa-si/modules/TestModule.pm create mode 100644 trunk/gosa-si/modules/oui.txt create mode 100644 trunk/gosa-si/server.conf create mode 100644 trunk/gosa-si/server.conf.pod create mode 100644 trunk/gosa-si/server/events/clMessages.pm create mode 100644 trunk/gosa-si/server/events/databases.pm create mode 100644 trunk/gosa-si/server/events/gosaTriggered.pm create mode 100644 trunk/gosa-si/server/events/logHandling.pm create mode 100644 trunk/gosa-si/server/events/mailqueue_com.pm create mode 100644 trunk/gosa-si/server/events/opsi_com.pm create mode 100644 trunk/gosa-si/server/events/server_server_com.pm create mode 100644 trunk/gosa-si/server/events/siTriggered.pm create mode 100755 trunk/gosa-si/tests/client.php create mode 100755 trunk/gosa-si/tests/db-check-clients.pl create mode 100755 trunk/gosa-si/tests/db-check-fai-release.pl create mode 100755 trunk/gosa-si/tests/db-check-fai-server.pl create mode 100755 trunk/gosa-si/tests/db-check-foreign-clients.pl create mode 100755 trunk/gosa-si/tests/db-check-incoming.pl create mode 100755 trunk/gosa-si/tests/db-check-jobs.pl create mode 100755 trunk/gosa-si/tests/db-check-messaging.pl create mode 100755 trunk/gosa-si/tests/db-check-packages-list.pl create mode 100755 trunk/gosa-si/tests/db-check-server.pl create mode 100755 trunk/gosa-si/tests/db-check-users.pl create mode 100755 trunk/gosa-si/tests/deploy-gosa-si.pl create mode 100755 trunk/gosa-si/tests/log-parser.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-clients.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-fai-release.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-fai-server.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-foreign-clients.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-incoming.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-jobs.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-messaging.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-packages-list.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-server.pl create mode 100755 trunk/gosa-si/tests/sqlite-check-users.pl create mode 100644 trunk/gosa-si/tests/testGOsa.pl diff --git a/trunk/gosa-core/AUTHORS b/trunk/gosa-core/AUTHORS new file mode 100644 index 000000000..67df8d668 --- /dev/null +++ b/trunk/gosa-core/AUTHORS @@ -0,0 +1,79 @@ +GOsa AUTHORS +============ + +This is the alphabetical list of all people that have +contributed to the GOsa project, beeing code, translations, +documentation and additional help. + +* Markus Amersdorfer + Wiki setup, Testing, hints, proposals + +* Alessandro Amici + Italian translation + +* Holger Burbach + Kerberos PHP module + +* Craig Chang + Fixes for magic_quotes_qpc + +* Guillaume Delecourt + Setup fixes, nagios tab plugin, xls addons ldapmanager + pptp connectivity option, phpscheduleit connectivity option + +* Dan Ellis + Sieve lib is taken from him + +* Alejandro Escanero Blanco + Fixes, improvements, translation, Guide and some extensions + +* Fabian Hickert + Improvements for setup, various fixes and plugins + +* Eric Kilfoil + ldap.inc is taken from him + +* Niels Klomp + Dutch translation + +* Steve Moitozo + Password checker + +* Benoit Mortier + French translation + +* Igor Muratov + Various fixes and speed enhancements + +* Michael Pasdziernik + Documentation for GOsa and safe-mode, fixes + +* Cajus Pollmeier + Virtually everyting which is GOsa related + +* Piotr Rybicki + Polish translation + +* Henning Schmiedehausen + Various fixes, support for user defined people/group base + +* Alfred Schröder + German translation + +* Thomas Schüßler + debuglib.inc is taken from him + +* Jan Wenzel + Implementation and research for samba munged dial support, + fixing of "Fiptehlers"(TM) in the german translations. + +* Leila El Hitori + French online documentation + English online documentation + +* Vincent Seynhaeve + Xls export plugin + +* Wouter Verhelst + accept-to-gettext code that helps for language conversation + diff --git a/trunk/gosa-core/CODING b/trunk/gosa-core/CODING new file mode 100644 index 000000000..12853d1bb --- /dev/null +++ b/trunk/gosa-core/CODING @@ -0,0 +1,216 @@ +GOsa coding guidelines +====================== + +* Scope of style guidelines + +In order to keep the code consistent, please use the following conventions. +These conventions are no judgement call on your coding abilities, but more +of a style and look call. + + +* Indentation and line length + +As a basic style rule, please use spaces instead of tabulators. This will +remove problems when using "diff" and avoid unneeded commits when using +"subversion". + +For VI users, this can be achieved by the following settings: + +8<---------------------------------------------------------------------------- +set expandtab +set shiftwidth=4 +set softtabstop=4 +set tabstop=4 +8<---------------------------------------------------------------------------- + +The line length should not exceed 80 characters. There is one exception for +i18n strings that must not be split for gettext. + + +* Performance and Readability + +It is more important to be correct than to be fast. +It is more important to be maintainable than to be fast. +Fast code that is difficult to maintain is likely going to be looked down upon. + + +* Comments + +Avoid perl style comments using "#". Always use "//" for single line comments +and /* */ blocks for multi line comments. + +8<---------------------------------------------------------------------------- +/* + * This is a long comment... + * ... which should look like this. + */ + +// Short comment +8<---------------------------------------------------------------------------- + + +* Documentation + +8<---------------------------------------------------------------------------- + +8<---------------------------------------------------------------------------- + +svn propset svn:keywords "Id" file + + +* File format + +UTF-8, LF - not CR LF +svn propset svn:eol-style native file + + +* White spaces + +Use a space before an opening parenthesis when calling functions, or indexing, like this: + +8<---------------------------------------------------------------------------- +# Methods +foo ($parameter); + +# Arrays +$b = $value [0]; + +# Readability +if ($b + 5 > foo (bar () + 4)){ +} +8<---------------------------------------------------------------------------- + +Don't layout your code like this, always minimize spaces: + +8<---------------------------------------------------------------------------- +var $most = "something"; +8<---------------------------------------------------------------------------- + + +Always use spaces to seperate arguments after commata: + +8<---------------------------------------------------------------------------- +function foo ($param1, $param2) +8<---------------------------------------------------------------------------- + +Always use single spaces to split logical and mathematical operations: + +8<---------------------------------------------------------------------------- +if ( $a > 6 && $b == 17 && (foo ($b) < 1) ){ +} +8<---------------------------------------------------------------------------- + + +* Braces + +If statements with or without else clauses are formatted like this: + +8<---------------------------------------------------------------------------- +if ($value) { + foo (); + bar (); +} + +if ($value) { + foo (); +} else { + bar (); +} +8<---------------------------------------------------------------------------- + +Switches are formatted like this: + +8<---------------------------------------------------------------------------- +switch ($reason) { + case 'fine': + foo (); + break; + + case 'well': + bar (); + break; +} +8<---------------------------------------------------------------------------- + + +Always use use braces for single line blocks: + +8<---------------------------------------------------------------------------- +if ($value) { + foo (); +} +8<---------------------------------------------------------------------------- + +Function definitions, Classes and Methods have an opening brace on the next +line: + +8<---------------------------------------------------------------------------- +function bar () +{ + ... +} +8<---------------------------------------------------------------------------- + + +* Casing + +Always use camel casing with lowercase characters in the beginning for multi- +word identifiers: + +8<---------------------------------------------------------------------------- +function checkForValidity (){ + $testSucceeded = false; + ... +} +8<---------------------------------------------------------------------------- + + +* Naming + +Non trivial variable names should speak for themselves from within the context. + +8<---------------------------------------------------------------------------- +// Use +$hour = 5; +// instead of +$g = 5; +8<---------------------------------------------------------------------------- + +Find short function names that describe what the function does - in order to +make the code read like a written sentence. + +8<---------------------------------------------------------------------------- +if ( configReadable ("/etc/foo.conf") ){ +} +8<---------------------------------------------------------------------------- + +Use uppercase for constants/defines and _ if possible: + +8<---------------------------------------------------------------------------- +if ( $speedUp == TRUE ) { + $wait = SHORT_WAIT; +} else { + $wait = LONG_WAIT; +} +8<---------------------------------------------------------------------------- + + +* PHP specific + +Open and close tags: + + + + +HTML + +Do not include HTML code inside of your PHP file. Use smarty templating if +possible. + + +Code inclusion + +Use require_once instead of include. + diff --git a/trunk/gosa-core/COPYING b/trunk/gosa-core/COPYING new file mode 100644 index 000000000..ba4e0c63b --- /dev/null +++ b/trunk/gosa-core/COPYING @@ -0,0 +1,284 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, 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 diff --git a/trunk/gosa-core/Changelog b/trunk/gosa-core/Changelog new file mode 100644 index 000000000..5c57fab78 --- /dev/null +++ b/trunk/gosa-core/Changelog @@ -0,0 +1,670 @@ +GOsa2 changelog +=============== + +* gosa 2.6.4 + - Added missing images + - Fixed issue with the FAI log viewer + - Made DNS TTL settings optional + - Correct issues with newly created servers and DNS zones + - Added setup check for gosaDepartments at the base object + - Corrected js based disabling of widgets in Samba settings + - Fixed issue with wrong set mail attributes in the setup + - Added missing existance checks for group mail addresses + - Fixed uid autogeneration which contained curly braces + - Fixed FAI package list acl mapping + - Moved essential schema files back to the core package + - Updated integrated smarty + - Added imagick dependency to the setup + - Fixed ACL resolution for small ldap bases + - Added phoneNumber limitations to match asterisk realtime extension tables + - Updated addressbook permissions + +* gosa 2.6.3 + - Fixed several issues, occurred when using user templates + - Fixed problem with department creation, since GOsa 2.6.1 + - Fixed exponential escaping of special chars in dns record entries + - Added samba domain information to samba tab + - Removed readonly attributes from samba tab + +* gosa 2.6.2 + - Updated german locales + - Updated french locales + - Updated spanish locales + - Improved sieve handling, added more detailed error messages + - Mail methods cleanup for kolab 2.2 / IMAP acls + - Removed obsoleted GOlab mail method + - Optimized system to group assignments when activating new devices + - Add a choice for OPSI clients when activating new devices + - Setup cleanups + - Edit locking improvements, code cleanup + +* gosa 2.6.1 + - Build seperate packages for plugin schema files + - Make ACL editor more robust + - Fix problem with self modify ACL detection + - Increased all schema version numbers to make setup + check work again + - Added admin account migration to setup + - Session expired dialog is now translated + - Fixed problems with sieveManagement + - Fixed issue with department saving and structuralObjectClass errors + - Added local delivery flag to group mail + - Fixed problem with sudoers creation + - Fixed accidentally remove of non GOsa user accounts + - Simplified FAI management + - Fixed detection issues with password methods + - Fixed issues with user templates and storing password methods + - Removed forced dependency on GOsa-SI + +* gosa 2.6 + - Redesign of ACL handling + - Roles + - Fine grained read, write, change controls down to + the attributes + - Self service + - Separate password changer module + - Major dialog- and interface redesign + - Major performance improvements + - New backend daemon + - MIT kerberos support + - Mail queue-support + - System depolyment queue support + - OPSI support + - GOto support + - DAK keyring support + - Caching of slow data sources + - Queue support for system deployment + - Improved FAI integration + - Queues + - Copy on write storage for subreleases + - Logviewer + - OPSI integration + - SUDO support + - Split into GOsa core and GOsa plugins + - Edit multiple users/groups at a time + - Apply user templates afterwards + - Objects snapshots + - Configurable object RDNs + - Added manual page for gosa.conf + - More comprehensive keywords in gosa.conf + - Merging "main" and "location" attributes to + allow site wide defaults + - Automatic configuration reloading + - Vietnamese translation + - New manageable objects country, locality, organization and dcObject + +* gosa 2.5.16 + - Fixed problem with undefined ridbase in domain objects + - Fixed postremove/-create/-modify parameter expansion + - Updated integrated smarty to 2.6.19 + - Updated saving of ppds in printer setttings + - Fixed department tagging + - Fixed DNS record problem where nSRecords were not kept + - Updated shared folder acls, keep manually set acls + - Remove DNS entries for removed hosts + - Increased setup performance + - Added more secure way to save passwords in gosa.conf + +* gosa 2.5.15 + - Changed order of sys-action commandline parameters + - Changed sorting of management plugins to natural sorting + - Fixed problem with saving vacation message start/stop + - Fixed sorting of releases + - Updated translations (de/fr/pl) + - Fixed storage of (IMAP) ACLs in group/mail settings + - Fixed issues with sieve script management + - General code cleanup + - Fixed issue with undefined index and copy 'n paste in samba plugin + - Fixed problem with the references/ogroup handling with + special character DNs + - Optimized way of writing unit tags + - Online manual updates / helpviewer update + - Fixed renaming of printers which was broken in special cases + - DNS plugin updates + - DHCP plugin updates + +* gosa 2.5.14 + - Phone conference language is now selectable. + - Old phone numbers will be removed correctly from asterisk extensions table. + - Fixed saving of A/B networks reverse zone entries + - Fixed problem with non loaded class_dhcpPlugin in some cases. + - Added fglrx driver to driver list + - Added hook to specify custom X drivers + - Fixed non ISO display of IMAP folder names + - Fixed URL encoding in addressbook + - Fixed issues with IE and browser language detection + - Added check for used hardware adresses + - Allow special characters in share names + - Fixed removing of application categories + - PPD handling revised + - Added support for new devices detected by the arp monitor + - Grey out non used options for better usability in the server and + workstation tabs + - Fixed saving of USB devices + - Made SNMP community configurable + - Added login attributes uid/mail, you can log in via your mail + address, too + - Removed PHP5 dependency in branch 2.5 + - Fixed saving of IMAP acl's for groups + +* gosa 2.5.13 + - Re-added ISC DHCP support + - Fixes for the mail based bugtracker + - Fixed autouid problem with slashes + - Added list sorting for FAI script lists + - Added copy'n paste for mimetypes + - Cut'n paste objects are now greyed out + - Added swedish locale + - Improved language detection + - Added a statistic footer to lists + - Added the ssh plugin + - Layout fixes + +* gosa 2.5.12 + - Fixed problems with automatic reverse zones + - Fixed several IE6 related Java-Script problems + - Removed png.js by default. Looks ugly, but performs. Take + a look at the FAQ on how to re-enable it for IE. + - Added non-login password change dialog + - Various spelling fixes + - Added some extra robustness to the PPD reader code + - FAI partition ordering fixed, partition sizes fixed + - FAI release management updates + - Fixed installations that fail the schema check + - Updated error messages to fade out the interface + - Repository cleanup + - Added feedback link to easily report PHP errors + - Added more content sorting where needed + - Made gidNumber be the current in posix check hook + - Removed inconsistency in gosa/gosa+samba3 schema + - Fixed multiple saving of "My account" data + - Don't allow moving of objects from administrative units to other + administrative units where ACL's permit it. Objects "seemed" to + disapear because the tagging changes. + - Added gosa-desktop package to be able to start it by link + - Added method to highlight tabs + - Generel translation update for de, es, fr, it, nl, pl, ru, zh + +* gosa 2.5.11a + - Added chinese translation + - Fixed language detection and removed line wraps in tab headers + - Fixed french translation + +* gosa 2.5.11 + - Add workaround for failing is_php4() when using PHP5 + with "zend.ze1_compatibility_mode" set to "On" + - Backported new sieve filter editor from trunk + - Backported new setup from trunk + - Fixed double loaded pages in gecko based browsers when js + is activated + - Replaced a set of PHP var in samba class. + - Fixed checkbox selection in samba class. + - Connectivity netatalk: Moved plugin intialization from execute() to contructor(). + - Fixes various issues with setup.php + - Avoid tab lables to have line feeds + - Activated missing checks for IP and MAC + - Fixed copy'n paste errors for netatalk + - Various W3C fixes + - Fixed "My Account" mode, where buttons disappear after saving + - Avoid removal of shares while they are used by users + - Added finer grained ACL settings for mail accounts + - Fixed day of birth problem in M$ IE + - Fixed setting of Kerberos passwords + +* gosa 2.5.5 + - Added remove method for shared folder in kolab mode + - Added checkbox to decide if the shared folder should be deleted from IMAP + if the mail extension is removed from group mail account + - Updated request method for mail folders + - Resolved problem with infinite loop while storing sieve scripts + - Added subsearch checkbox to object group "add items" filter + - Fixed "missing PPD" configuration error, for newly created printer + - Corrected problem where the object base was sometimes broken when + saving object groups + - Fixed saving of terminal attribute gotoLpdEnable to contain "yes" + instead of "1" + - Avoid reset of several attributes from workstations when not + inherited from object groups + - Show error messages from password dialog + - Fixed a set of W3C problems + - Fixed multiple savings in addressbook (Closes: #23) + - Fixed shadow expire when using templates (Closes: #20) + - Made %uid, %sn, etc. available in templates using gosaMailAlternateAddress + +* gosa 2.5.4 + - Included patch to choose the addressbook base + - Applied fixes for logviewer done by Mario Minati + - Updated locales, fixed a set of missing strings + - Fixed problems in FAI list handling + - Added "uid" to personal plugins for replacement in post events + - Fixed saving of user logon scripts + - Fixed non-FAI application mode + - More speed fixes applied, especially for users, objectgroups and + generic plugin loading + - Bug while saving FAI partitions fixed + - Don't save PPD if none is not selected bug fixed + - Saving of non revisioned applications fixed + +* gosa 2.5.3 + - Fixed problem in reloading departments when we've PHP4 + - Fixed gotoPrinter membership problem. + - Fixed environment shares, only available shares will be displayed (gosaUnitTag was ignored) + - Fixed saving of inherited workstation settings + - Removed error when no FAI repositories were present + - Fixed posix group add dialog, filter wasn't working. + - Fixed get_printer_list undefined index warnings while editing a user. + - Fixed ogroup non-static method error + - Fixed user membership for gotoPrinter, if membership was edited + via user environemnt, some numeric values were stored too + - Fixed mail account, mail server string possibly was an array + - Fixed typos + - Fixed upper/lowcase ou's for groups/people when using an + unclean LDAP database + - Fixed ACL handling to *not* show the admin user dialog + when configured for self modify only + - Fixed problem when changing passwords via "My account" + - Added more information to hotplug devices. + +* gosa 2.5.2 + - Fixed current main base not beeing set when editing non tabbed + plugins + - Fixed filtering for divlists + - Fixed deletion of shares in environment tabs + - Updated french online help + - Updated german online help + - Fixed display of FAI partitions + - Removed Quota warnings for existing accounts without quota limits + - Worked around PHP4 session problems when creating new departments + - Fixed problems when moving around departments including a comma + - Unified bool values in gosa.conf. true/yes and false/no are valid + now in upper and lower case. + - Avoid the try of creating already existing ou's + - Fixed non working printer removal + +* gosa 2.5.1 + - Fixed problems with NFS shares and terminals + - Finalized polish translations + - Fixed problem with compressed gosa.conf in the debian package + +* gosa 2.5 + - Improved FAI support + * Server and workstations are treated the same way + * Destination selector for new devices + * Summary tab introduced + - Improved robustness while operating whith the LDAP + - Several Kolab related fixes + - Tagging of departments introduced + - Global check hooks allow user defined testing + of single plugins + - Major speedups with large databases + - Added english and french online help + - Unified plugin "head" selectors, (re-)added subtree + support + - Fixed PPD parsing for several commercial PPD's + - Tune LDAP error messages + - Moved from "guru mediation style" to div-popups + - Several css fixes + - Fixed series of bugs that lead to not shown groups + +* gosa 2.4 + - Updated layout to work cleanly with IE6+, Firefox 1.0.4+, khtml 3.4+ + - Added FAI (Fully Automatted Installation) support + - Added mail queue management + - Added many missing acl informations + - Added help browser and initial french help + - Fixed templating for samba and unix users + - Applied hundreds of smaller bugfixes + - Improved speed by switching to directory style dialogs and performing + sub searches. + - Per user language selector in generic tab + - New connectivity plugins (PHPscheduleit/PPTP/glpi) + +* gosa 2.4beta3 + - Updated layout + - Fixed application removal + - Improved accessibility for disabled persons + - Added intranet account to list of connectivity plugins + - Several kolab related fixes for server objects + - Corrected contributed slapd.conf + - Fixed kolab mode where GOsa saves KB quotas, interprets quotas as kolab MB + - Increased robustnes for non set fields + - Fixed IE issues with W3C compatibilty where IE posts disabled fields + - Fixed problems with existing samba accounts and password changed fields + - Removed login problems with undefined ldap_conf variable + - Fixed problems where the GECOS field is not written correctly + +* gosa 2.4beta2 + - Fixed error handler to be PHP 4.x compatible + - Fixed PHP compatibility problem in setup.php, using ini_get() + instead of ini_get_all() + - Fixed cases where ipHostAddress is required but not checked + by GOsa + - Fixed group dialog filters + - Fixed problems in setup which showed up with white pages if + PHP has been compiled without mbstring support + - Fixed layout if the rendered page does not cover 100% of the + browser window + - Improved phone plugin to respect IAX, CAPI and SIP phone + attributes + automatically if the revision changes + - Improved W3C compatibility + - Added checks that remove the contents of /var/spool/gosa/* + - Added postmodify for password change operations + +* gosa 2.4beta1 + - Override automatically detected user bases if they don't exist + - Don't shred samba group ID's if they are not present in the + combobox + - Updated smarty to version 2.6.9 + - Updated GOfon support to handle new features + - Replacement of most external programm calls + - Samba3 bugfixes for munged dial handling + - Updated LDIF export + - Improved setup checks to find more possible errors + - Fixed index ruler for long lists + - Completed system creation for servers, phones and misc components + - Added support for kolab users and kolab server settings + - Added server settings + - Added LDIF import + - Added CSV import + - Added italian translation (thanks to Alessandro Amici) + - Added subtree search checkbox in lists with potential higher + usage + - Added version indicator to make support more easy + - Added sample databases for fax, phone and system logging + - Added error handler for normal PHP errors + +* gosa 2.3 + - Updated smarty to version 2.6.7 + - Added dutch translations (thanks to Niels Klomp) + - Added webdav and phpgroupware accounts + - Fixed french translation + - Fixed error in shadowExpire attribute + - Unified all filters in dialogs to use the internationalized choosers + - Added option to do non subtree searches with filters + - Fixed sample configuration files to be unproblematic when used in + conjunction with OpenLDAP 2.2 + - Added experimental support for editing LDAP trees that contain referrals + - Updated Altlinux contributions, including themes and scripts + - Worked around a possible problem with sizelimit in php-ldap + - Improved big ldap support by size limits and non sub searches + - Various smaller fixes + - Added global TLS switch for LDAP connections + - Fixed SELECT queries to be mysql 3.x _and_ 4.x compatible + - Made departments movable + +* gosa 2.2 + - Removed DHCP/DNS plugins, they will be replaced by + the terminal/server/workstation plugins. + - Added case sensitivity check for login names + - Made bases set to users "home" department when creating new objects + - Moved sieve-*.txt config files to /etc/gosa + - Told IMAP plugin to remove mail accounts when the user is deleted + - Interface cleanups + - Added simple log file viewer + - Added support for asterisk + - Included javascript magic to improve usability (doubleclicks in + lists, disabling of fields, warning messages, etc.) + - More filtering and sizelimits for speed optimizations + - Mail handling is now pluggable + - Added possibility to bundle objects to object groups + - Added a reference tab to track relation ships of different objects + - Improved samba 3 support (terminal server support) + - Updated translations and added a french one + +* gosa 2.1.3 + - Fixed problem with initial password setting + - Increase number in version.inc + - Add a workaround to fix problem with groups not beeing displayed + with openldap. Here the server reacts with empty results if searching + for non existing objectClass "sambaGroupMapping" in case of using samba2 + - Fix the homeDirectory check which is a bit too harsh with templates + +* gosa 2.1.2 + - Fixed problem with uppercase login names + - Extensive speed increasements in ldap searches + - Fixed gettext problem on older installations + - Corrected sieve login which was broken due to a library switch + - Made in_array act case insensitive for is_account check + - Fixed location of DMODE and HASH in config file + - Fixed general problems with password hash generation if not + specified + - Complete move to unicode which removes all active encoding/decoding + of contents from GOsa itself + - Made GOsa run smooth on PHP 5 + - Added complete russian translation contributed by Igor Muratov + - Migrated phone list to (global) addressbook + - Filtering fixes + +* gosa 2.1.1 + - Enabled mail-account-less fax accounts + - Fixed upper/lower case problem in mail templates + - Fixed typo in generic plugin error message + - Made template dialog work again + - Fixed headpage for application management which tends to do no + proper display of used applications + - Added command line interface to use GOsa without web interface + - Updated debian control to be aware of apache2 based installations + - Transferd tab variables in group dialog, so the primary mail + address can be checked + - Fixed possible case problem with is_account + - Made base selector contain newly added departments in department + dialog + +* gosa 2.1 + Bugfix release + - size of homeDirectory attribute increased + - FAQ/README/INSTALL updated + - spec file updated + +* gosa 2.1rc2 + Bugfix release + - Made user dn configurable + - Fixed memory usage check + - Fixed size of alternate mail address field + - Fixed sorting of group in posix tab + - Made GOsa keep group membership even if user has no posix + account + - Fixed typo in blocklist spelling + - Fixed error message when trying to filter users without a + valid uid + - Made posix account visible, even if there are no shadow + attributes inside this entry + - Included setup + - Translation updates + +* gosa 2.1rc1 + Bugfix release + - Fixed annoying ACL bug in template mode + - Fixed possible privilege escalation problem in password + routine (thanks to Henning Schmiedehausen) + - Removed password storage from user info class (thanks to + Rainer Herbst) + - Various interface cleanups + - Templatization finished + - Reworked user headpage + - Made GOsa more robust in detecting errors in config + - Added additional error messages reported by LDAP server + - Added schmemacheck hook + - Started with setup implementation + +* gosa 2.1beta3 + Bugfix release + - Made template mode remember the templates primary group + - Templatized posix plugin + - Added option to disable strict checking of uid/gid names + - Massive samba3 updates + - Made ou=people and ou=groups configurable + - Fixed user/group lists to react on filter changes + +* gosa 2.1beta2 + Bugfix and feature enhancement release. + - Made GOsa remove object locks when changing plugins during edit + process. + - Added DHCP plugin + - Gerneral speed tunig, reduced the number of unessasary ldap + accesses + - Added syslog output for actions "save" and "remove" + - Fixed handling for multiple ACL's per base + - Fixed listboxes to unify output / sort output + - Fixed annoying bug in tab_groups.inc when removing the mailtab + - Bases did not get set in template mode + - Fixed user part + - Templatized faxaccount/pureftpd/samba and mail plugins + - Included calendar.js functionality in samba plugin + +* gosa 2.1beta1 + This release has some feature enhancements and contains many + bugfixes and design cleanups + - Fixed many HTML related things. Pages are now perfectly validated + as html 4.01 transitional. + - Added dn cleaner to getDN() in order to fix problems with + "broken" ldap databases. + - Added schemata for iplanet, checked if it works. + - Rewrote phonelist, added vcard export. + - Added filters to allmost all plugins. + - Added DNS plugin. + - Generic userinterface cleanups, everything is a template now and can be + redesigned/stripped. + - Improved translations, added missing ones. + - Added choosable templates for mail vacation messages. + - Improved templating stuff to generate user defined auto uids. + - Made user interface more comprehensive, so its important for you + to start with a clean gosa.conf from contrib. + - Added external password change hook, so that its possible to synchronize + with a non samba PDC via scripts. (Some organizations tend to keep a + readable copy of their users password which possible now, too.) + - Updated FAQ + +* gosa 2.0.1 + This release doesn't have feature enhancements (nearly), only + bugfixes reported by users are incorporated. + - Fixed oblivious fields when changing to subdialogs. All + user dialogs were affected + - Made facsimileTelephoneNumber beeing saved without the + need of a fax account + - Fixed printer sorting which destroyed the array index + - Removed redundant fields in terminal configuration + - Made terminal plugin save the terminal hardware information + - Added missing tags to index.php/main.php + - Fixed debian debconf script not to touch uidbase/ridbase + values in gosa.conf + - Fixed "Force ID", which creates a group for the posix + user with forced ID. + - Finetuning in login window behaviour + - Code cleanup and templatized two more plugins + - As requested by some users, you can now advise GOsa not to + create a group for the user, but take an existing group + as primary one. + - Added 'dn cleaner' for the acl list. So syntactically + problematic dn's with strange commata get fixed. + +* gosa 2.0 final + - Made samba3 support work + - Fixed several small bugs with the templating stuff + - Fixed problem with shared folders, added missing attribute + gosaSharedFolderTarget needed in some setups + - Updated icons + - Renamed icons to have more logical names + +* gosa 2.0rc2 + - Corrected mistakenly copied ui object in functions.inc + - Fixed errors when activating new terminals + - Removed krb warnings in class_user.inc + - Plugins user, apps, groups and departments didn't check for + already present entries. Now they do. + - Removed problem in terminal dialog where checkboxes are not + saved + - Fixed ACL handling for users primary group + - Replaced own template class by smarty, since only two files + were affected by this + - Changed basic layout to seperate public readable files from + templates + - Added FAQ, update TODO for next versions + - Made accounts movable between departments + - Added partial spanish translations + - Fixed mail group handling + +* gosa 2.0rc1 + - Switched to XML based gosa.conf + - Cleaned all plugins, moved to children of plugin.conf + - Moved back to gettext for translations + - Added hooks for pre-/post-install scripts + - Cleaned LDAP class + - Added workarounds for MS-IE (>5.5) to render transparent + PNGs in a correct way + - Redesigned login screen / some plugins + - Added hooks for eGOsa, which is a java applet based + browsing tool + - Switched from user based ACLs to group based ACLs, + removed standalone ACL plugin in favor of new group tab. + - Fixed samba2 rid generation (btw. still missing is sid + support for samba3. But this will go into the final.) + - Fixed many minor bugs + - Introduced simple theming support + - Added 'dn'-renaming for accounts + +Changelog starts with latest Beta 1.99.97 diff --git a/trunk/gosa-core/FAQ b/trunk/gosa-core/FAQ new file mode 100644 index 000000000..cd9dff864 --- /dev/null +++ b/trunk/gosa-core/FAQ @@ -0,0 +1,590 @@ +This is the textual form of the GOsa FAQ. Online information with +comments is set up at Wiki: https://oss.gonicus.de/labs/gosa/wiki/documentation + +Q: When creating many users for one department, I need to fill some + fields again and again. Is there a shortcut for that? + +A: Just create a user template and pre-fill all values you need. You + can use dynamic content, too: uid, sn and givenName will be replaced. + i.E. an entry '/home/%uid' in homeDirectory will be replaced by the + real uid of the user you're creating, %sn.%givenName@yourdomain.com + creates proper email addresses, etc. Templates include group membership. + + +Q: Can GOsa execute commands after creating/editing/removing users, + departments, etc. + +A: Yes. Edit /etc/gosa/gosa.conf's menu section. Each plugin may has + an entry "postremove", "postmodify" and "postcreate". You can use + ldap attributes as command line options. + i.E. postcreate="/usr/bin/sudo /usr/local/sbin/ftp.setperms %uid '%givenName'" + + +Q: I'd like to modify the look of GOsa to fit our CI. How can I create an + own theme? + +A: Themes are splitted into two parts. ihtml/ contains templates which + generate the ui, html/ contains all parts that must be readable from + clients. GOsa first looks for predefined files in the directory indirectly + defined via the "theme" parameter in /etc/gosa/gosa.conf. If it can't + find them here, it'll use the default one. + + So start over by copying html/themes/default to html/themes/yourtheme + and ihtml/themes/default to ihtml/themes/yourtheme. Change gosa.conf to + contain theme="yourtheme" in section main. Here are some files to edit: + + * login.tpl -> login screen + * framework.tpl -> page contents + * style.css -> stylesheets used by GOsa + + +Q: How can I let a person do administrative tasks under a specific department? + +A: Gosa 2.5.x + * Create a group inside this department. + * Put all administrative people inside + * go to the "ACL" tab and check all fields these users should be able to adminstrate. + + GOsa 2.6 implements a more flexible but complex ACL management, please have a look at + the following wiki page: https://oss.gonicus.de/labs/gosa/wiki/DocumentationWritingACLs2.6 + If you have still questions, please use the mailing list or the forum. + + +Q: How can I permit users to change some of their own attributes? + +A: Same like described above, but additionally you have to check the option + 'Apply this acl only for users own entries'. + (For versions 2.6.x, see the wiki pages) + + +Q: What about applications? + +A: GOsa can manage desktop applications in ldap. Create a group and put all users + in there, which have common desktop settings. Go to the "Application" tab and + add all applications common to this group. Applications can be created from the + application plugin. + The idea behind this feature is a script running on the terminal-servers/ + workstation which check for applications on login (or on a regular basis using + timestamps). This one will create the corresponding icons on your KDE or GNOME + desktop. + + +Q: What's this terminal stuff? + +A: GOto is - similar to LTSP - a ldap based diskless client system. It is available + from our projects page. + + +Q: I can't select any mailservers. What's wrong? + +A: It seems that a mail server is missing in your configuration. + Create a new server, go to the services tab and add the imap service. + For more details, please have a look at the FAQ and wiki pages. + (This may differ in older GOsa versions) + + +Q: GOsa is not in my native language, can I translate it to my language? + +A: Yes. Just go to the locale directory and copy the messages.po file somewhere + else. Edit the copy and put your translations into the msgstr lines. To be + included in next GOsa releases, you may want to send it to the GOsa maintainer. + Finally you need to create a directory with your language code. (i.e. de for + german) containing the LC_MESSAGES directory. Move your messages.po file there + and run 'msgfmt messages.po' in that directory. That's it. + + You may need to restart apache, depending on your setup. On Debian, be sure + to have your locale generated (dpkg-reconfigure locales) before. + + +Q: The online help doesn't exist in my language, can i translate it to my language? + +A: Yes. Just go to the doc/guide/user/en directory and copy the lyx-source directory + to a new directory in doc/guide/user/. You have to use the lyx + program create the online help in your language. When you have finish just run + ./gen_online_help from the gosa root directory to generate the online docs. + + +Q: Can I specify some kind of password policies? + +A: You can place the keywords "passwordMinLength" and "passwordMinDiffer" in the main + section of your gosa.conf. "passwordMinLength" specifies how many characters a + password must have to be accepted. "passwordMinDiffer" contains the number of + characters that must be different from the previous password. + + Note that these only affect passwords that are set by the user, not by the admins. + + +Q: I've to update passwords on external windows PDCs. Can I add a command to let + synchronize these for me? + +A: There's the possibility to add a password hook in gosa.conf's main section using + the keyword "passwordHook". The specified command will be executed with + three parameters: /path/to/your/script username oldpassword newpassword + + So you can call i.e. smbpasswd to handle your password change on the PDC. + + +Q: What about templates for vacation messages? + +A: Create a directory to keep a set of vacation messages which are readable by the + user that runs your apache. In this example I'll use /etc/gosa/vacation for that. + + Put your vacation files in there containing a "DESC:some descriptive text" as the + first line followed by the normal vacation text. You can use all attributes from + the generic tab. I.e.: + + /etc/gosa/vacation/business.txt + + |--> + DESC:Away from desk + Hi, I'm currently away from my desk. You can contact me on + my cell phone via %mobile. + + Greetings, + %givenName %sn + |<-- + + Place the config option vacationTemplateDirectory="/etc/gosa/vacation" in the location found in + gosa.conf and a template box is show in the vacation mail tab. + + +Q: How can I generate automatic ID's for user templates? + +A: Add an entry describing your id policy in gosa.conf, location section: + + a) using attributes + You can specify LDAP attributes (currently only sn and givenName) in braces {} + and add a percent sign befor it. Optionally you can strip it down to a number + of characters, specified in []. I.e. + + |--> + idGenerator="{%sn}-{%givenName[2-4]}" + |<-- + + will generate an ID using the full surename, adding a dash, and adding at least + the first two characters of givenName. If this ID is used, it'll use up to four + characters. If no automatic generation is possible, a input box is shown. + + b) using automatic id's + I.e. specifying + + |--> + idGenerator="acct{id:3}" + |<-- + + will generate a three digits id with the next free entry appended to "acct". + + |--> + idGenerator="ext{id#3}" + |<-- + + will generate a three digits random number appended to "ext". + + +Q: I'm migrating from the current LDAP, now GOsa does not allow uid's and group + with upper/lower case and spaces. What can I do? + +A: Include the strictNamingRules="no" keyword in your gosa.conf's location section. + WARNING: using strictNamingRules="no" will cause problems with cyrus/postfix!! + + +Q: I'd like to place my users under ou=staff, not under ou=people. Can I change + this? + +A: Yes. You can change the people and group locations by adding the following + statements to your location sections: + + |--> + userRDN="ou=staff" + groupRDN="ou=crowds" + |<-- + + After logging in again, people and groups are created in the configured places. + As a side note, you can leave these strings blank for flat structures, too. + + +Q: I've problems with many objectClass violations/undefined attributes. Can GOsa + check what's missing? + +A: Yes. Move away your gosa.conf and go to the GOsa setup. Follow the steps till + you can download the config. If you get up to this point, your schema is ok... + + +Q: I really don't want dn's containing the CN for user accounts because I don't + want to support anonymous binds for uid resolution. Is it possible to have dn's + containing the uid instead? + +A: Yes. Placing the accountPrimaryAttribute="uid" keyword in your gosa.conf's location + section will solve your problem. + + +Q: Hey, I've installed GOsa, but it claims something about "SID and / or RIDBASE + are missing in your configuration". What's wrong? + +A: You've configured GOsa to use samba3, but your LDAP has no samba domain object + inside. Either log into samba for the first time to let it create that object, + or supply the sid and ridbase for your domain in your gosa.conf's location, i.e.: + + |--> + + ... + sambaRidBase="1000" + sambaSID="0-815-4711" \> + |<-- + + Remember to fill in your real domain sid which is retrievable by the command + "net getlocalsid". + + +Q: We have massive performance problems with using samba as a member server. + +A: This is a known issue. We're working around this by putting + + |--> + + ... + sambaIdMapping="true" + ... \> + |<-- + + into the configuration. GOsa will write the additional objectClass sambaIdmapEntry + to the group and user objects. + + +Q: I get 'The value specified as GID/UID number is too small' when forcing IDs. Why? + +A: This is an additional security feature, so that no one can fall back to uid 0. The + default minimum ID is 100. You can set it to every value you like by specifying + + |--> + + ... + minId="40" + ... \> + |<-- + + in your configuration. In this example 40 will be the smallest ID you can enter. + + +Q: Aahhrg. I've updated to a new version and my gosa.conf seems to be broken. + +A: Some parameters may have changed. Please move your gosa.conf away and re-run the setup. + + +Q: I've saved my windows workstations in other locations like GOsa is doing it + for decades. Is there a way to change this? + +A: Yes. Use the winstation parameter in your location section: + + |--> + + ... + sambaMachineAccountRDN="ou=machineaccounts" + ... \> + |<-- + + +Q: GOsa doesn't seem to follow my referrals. What can I do? + +A: Place the option 'ldapFollowReferrals = "true"' inside your locations definition + and you should be fine. + + +Q: I'd like to have TLS based LDAP connections from within GOsa. Is this possible? + +A: Yes, add + + |--> + + ... + ldapTLS="true" + ... \> + |<-- + + to the location section of GOsa. This switch affects LDAP connections for a single location only. + + +Q: Cyrus folder get created in the style user.username. I prefer the unix hirachy + style user/username. Is it possible to change this? + +A: Yes, add + + |--> + + + %cn% - The groups cn. + %uid% - The users uid. + %prefix% - The default prefix used by the mailmethod. + %uattrib% - The configured mailAttribute="" (gosa.conf). + %domain% - The domain part of the given mail address. (user@domain.com = domain.com) + %mailpart% - The user part of the mail address. (user@domain.com = user) + %mail% - The complete mail address. + |<-- + + +Q: I want to use cyrus for multiple mail domains, but GOsa uses the 'uid' attribute for account namens, how do I change this to 'mail'? + +A: Just add/modify the following line to/in your gosa.conf: + + |--> + + check="/your/command/binary" + |<-- + + This binary will get an ldif to STDIN for analysis and may write an error message + to STDOUT. Note, that the supplied ldif may NOT be the original target ldif due + to technical reasons. + + +Q: Is there a way to use ACL independet filtering when using administrative units? + +A: Yes. Set "honourUnitTags" to "true" in your gosa.conf's location section. + + +Q: How can i active the account expiration code for the gosa interface? + +A: Yes. Just set "handleExpiredAccounts" to "true" in your gosa.conf's main section. + + +Q: What is the correct connection string for a Kolab server in GOsa? + +A: Try {localhost:143/novalidate-cert}. + + +Q: Sieve is not working from GOsa - there are authentication problems + with this service, IMAP/POP is working. What's wrong? + +A: Verify that the paramater sasl_auto_transition: no is not + present in your imap.conf + + +Q: I have a SIEVE problem - "Can't log into SIEVE server. Server says //. - + +A: Probably something is wrong with the authentification which is used by timesieved. + - Check if you can login with "sieveshell" on this host. + - Also check "telnet localhost 2000" - Is there any output about "Plain Login"? + + Please verify the ldap imap attributes, like goImapSieveServer and goImapSievePort. + These value can be modified using the server->services tab in GOsa 2.6 and in + GOsa 2.5 you can find these options under server->databases. + + Here is an older, but maybe helpful solution for Cyrus-Imapd 2.1.5 on SuSE 9.0: + - Install the "cyrus-sasl-plain" rpm from the distro-cd (This packet contains "sasl2/libplain" library). + - Modify your /etc/imap.conf: + + |--> + sasl_pwcheck_method: saslauthd + sasl_mech_list: plain login + |<-- + + - Modify your /etc/sysconfig/saslauthd: + + |--> + SASLAUTHD_AUTHMECH=pam + |<-- + + +Q: Slapd does not start with kolab2.schema included. It claims that the + definition of calFBURL is missing. What can I do? + +A: For Kolab to work correctly you have to include the rfc2739.schema + in your slapd.conf. Insert it before the kolab2.schema + + +Q: New implementations of OpenLDAP seem to require {sasl} instead of {kerberos} + in password hashes. GOsa writes the wrong string. What can I do? + +A: You can set "useSaslForKerberos" to "true" in your gosa.conf's main section. + + +Q: Is there a way to add the personalTitle attribute the the users dn? + +A: Just add this line into the location section of your gosa.conf. + + |--> + = 7, etc. IE is broken and + I don't want to waste my time with working around this old crap. There's + a quick hack, if you just put "iePngWorkaround='true'" inside the main + section of your gosa.conf. This is a JavaScript based workaround and I've + to place a WARNING here, that it is damn slow if you've large lists to + display. + + If you have much time, you can provide a seamless integration with MS + filter css extension. + + +Q: Is there a way to let users change passwords without logging into GOsa? + +A: Yes. Browse to "password.php". You can preset a couple of things i.e.: + + |--> + http://your.admin.server/password.php?uid=cajus&method=md5&directory=GONICUS+GmbH + |<-- + + +Q: GOsa only shows 300 entries at a time. Is this normal? + +A: There's a default sizelimit. You can set the "ldapSizelimit" option in your + gosa.conf's location section to a higher value to get rid of it. + + +Q: I have problems with my ldap server when I open groups with + a huge amount of members, what can I do? + +A: You can set a nesting limit which ensures that the user names will not be + resolved if the amount of members reaches this limit. + + |--> + + + |<-- + + +Q: I've shredded my access control and am not able to do anything from now on. Is there + a way to override the ACL? + +A: Yes. Insert the following statement in the location section of your gosa.conf: + + |--> + ignoreAcl="your user's dn" + |<-- + + +Q: I can't logon as Administration, what is wrong? + +A: It looks like you are missing an administrativ account. + In newer versions of GOsa you can simply re-run the setup and create + an admin account on the migration page. + + Additionally you can set ignoreACL in GOsa 2.6, just search the FAQ. + + +Q: The Unix's user's shell list is empty (unconfigured) + +A: Just copy or link your /etc/shell in /etc/gosa. + + +Q: After upgrading GOsa, the setup.php doesn't work or looks broken. + +A: You should delete all files in /var/spool/gosa + + |--> + # cd /var/spool/gosa + # rm -rf * + |<-- + + +Q: After installing GOsa using an existing LDAP tree, my user accounts are not listed. + +A: You need to add the following objectClasses to your accounts: + + |--> + objectClass: person + objectClass: organizationalPerson + |<-- + + The setup will automatically migrate those accounts, see migration step in GOsa setup! + + +Q: Is it possible to login with the users mail address too? + +A: Yes, just add the following line to your gosa.conf: + + |--> + + = 5.2.0, reload your apache webserver +and do your first GOsa dry run without configuration: + +http[s]://your-server/gosa + +GOsa setup will perform some basic system checks about general +prerequisites. The setup asks some questions and provides a +basic gosa.conf to save in /etc/gosa. Follow the instructions +until you're able to log in. + +You're done. Lets play with the GUI. + +--- + +* Installing from Packages + +If you install GOsa from packages, all the steps from above will +be done automatically. Go to the setup: + +http[s]://your-server/gosa + +GOsa setup will perform some basic system checks about general +prerequisites. The setup asks some questions and provides a +basic gosa.conf to save in /etc/gosa. Follow the instructions +until you're able to log in. + +You're done. Lets play with the GUI. + +--- + +* Migrating an existing tree + +To migrate an existing LDAP tree, you've to do all steps from above, +plus some modifications: + +- GOsa only shows users that have the objectClass gosaAccount + This one has been introduced for several reasons. First, there are + cases you want to hide special accounts from regular admins (i.e. + a samba admin account which is used to log windows machines into + their domain, where chaning a password by accident has bad consequences). + Secondly the gosaAccount keeps the lm/nt password hashes and the + attributes for the last password change - with the consequence that + adding a samba account "later" will not require the user to reset + the password. + +- GOsa only recognizes subtrees (or departments in GOsa's view of things) + that have the objectClass gosaDepartment. You can hide subtrees from GOsa + by not putting this objectClass inside. + +The GOsa setup may be used to do these migrations, but it is not meant +to work in every possible circumstance. For the first time: + +DO NOT WORK ON PRODUCTIVE DATA IF YOU DON'T KNOW WHAT YOU'RE DOING! + +That should be all. Entries should be visible in GOsa now. Be aware that if +your naming policy of user cn's differs from the way GOsa handles it, the +entries get rewritten to a GOsa style dn. + +--- + +* Further information + +To improve this piece of software, please report all kind of errors, either +using the bug tracker on www.gosa-project.org or the button on the upper +right. + +Documentation: https://www.gosa-project.org +Mailinglist: https://oss.gonicus.de/mailman/listinfo/gosa/ + +Have fun! + +--- +Cajus Pollmeier diff --git a/trunk/gosa-core/README b/trunk/gosa-core/README new file mode 100644 index 000000000..f4fc4eabc --- /dev/null +++ b/trunk/gosa-core/README @@ -0,0 +1,73 @@ +GOsa 2.6 README +=============== + +* Information + +GOsa is a LDAP administration frontend for user administration. It +is NO GENERIC frontend to dictionary servers. Informations are stored +in the way the underlying conecpts suppose them to be stored (i.e. +people accounts are stored in "ou=people" subtrees, etc.) This can +be configured marginally. + +Complete setups applying Kerberos, AFS, LDAP, Mail, Proxy and Fax setups +are not trivial at all. You should be familiar with these components and +with your UNIX installation, of cause. This file is (and will not be) +an introduction to any of these components. See INSTALL for a quick +overview about what to do, to get the things up and running. A complete +GOsa infrastructure howto is work in progress and not released yet. + + +* Translations + +GOsa is not available in your native language? Just read on... + +Translations (or I18N) in GOsa is done by the gettext library. As a +result, every set of translations is stored inside of one directory +per language as a text file called "messages.po". + +For GOsa you've to differenciate between gosa-core and single +gosa-plugins. The core as a translation and every plugin has a seperate +translation, too. + +GOsa core can be translated by taking a look at the locales/core +directory. Just take the messages.po file and copy it to some other +location and put your translations into the msgstr fields of this +file. For more comfort, use programs like i.e. kbabel or poedit to +achieve this. You may look at the de/LC_MESSAGES for the way how it +works. + +If you're ready with that, create a directory for your language using +the ISO shortcuts (i.e. es for spain) with a subdirectory LC_MESSAGES. +In case of spain this will be + + gosa-core/locales/core/es/LC_MESSAGES + +and put the freshly translated messages.po in this directory. + +To test this, you've depoly the messages.po file in your running copy +of GOsa and run the "update-gosa" command, to let GOsa merge the +translations. Then, Make sure your apache has locale support or, in case +of debian, that the specific locale will be generated (via dpkg-reconfigure +locales). + +You may want your translations to be included in the main GOsa repository, +then just send the .po file to me or ask for SVN access. + +For gosa-plugins, every plugin has a locales directory. Translation works +like described for gosa-core. + +Always run update-gosa after you've added translations in order to let GOsa +compile and re-sync the translations. + + +* NOTES + +Be sure that 'gosaUserTemplates' are not able to log into your server, +since they may have no password set. Example configs can be found in +the contrib directory. + +Have fun! + +--- +Cajus Pollmeier + diff --git a/trunk/gosa-core/README.safemode b/trunk/gosa-core/README.safemode new file mode 100644 index 000000000..e43434059 --- /dev/null +++ b/trunk/gosa-core/README.safemode @@ -0,0 +1,14 @@ +In order to run GOsa in PHP's safe mode, these changes in your php.ini +have been tested: + +magic_quotes_qpc = On +allow_url_fopen = No +register_globals = Off +safe_mode = On +safe_mode_include_dir = "/usr/share/gosa:/var/spool/gosa" +safe_mode_exec_dir = "/usr/lib/gosa" +safe_mode_allowed_env_vars = PHP_,LANG +open_basedir = "/etc/gosa:/var/spool/gosa:/var/cache/gosa:/usr/share/gosa:/tmp" +include_path = ".:/usr/share/php:/usr/share/gosa:/var/spool/gosa:/usr/share/gosa/safe_bin" +disable_functions = system, shell_exec, passthru, phpinfo, show_source + diff --git a/trunk/gosa-core/bin/gosa-encrypt-passwords b/trunk/gosa-core/bin/gosa-encrypt-passwords new file mode 100755 index 000000000..67365e247 --- /dev/null +++ b/trunk/gosa-core/bin/gosa-encrypt-passwords @@ -0,0 +1,114 @@ +#!/usr/bin/php +load("/etc/gosa/gosa.conf") or die ("Cannot read /etc/gosa/gosa.conf - aborted\n"); +$conf->encoding = 'UTF-8'; +$referrals= $conf->getElementsByTagName("referral"); +echo "* encrypting existent passwords with master key\n"; +foreach($referrals as $referral){ + $pw= $referral->attributes->getNamedItem("password"); + $pw->nodeValue= cred_encrypt($pw->nodeValue, $master_key); +} + +# Move original gosa.conf out of the way and make it unreadable for the web user +echo "* creating backup in /etc/gosa/gosa.conf.orig\n"; +rename("/etc/gosa/gosa.conf", "/etc/gosa/gosa.conf.orig"); +chmod("/etc/gosa/gosa.conf.orig", 0600); +chown ("/etc/gosa/gosa.conf.orig", "root"); +chgrp ("/etc/gosa/gosa.conf.orig", "root"); + +# Save new passwords +echo "* saving modified /etc/gosa/gosa.conf\n"; +$conf->save("/etc/gosa/gosa.conf") or die("Cannot write modified /etc/gosa/gosa.conf - aborted\n"); +chmod("/etc/gosa/gosa.conf", 0640); +chown ("/etc/gosa/gosa.conf", "root"); +chgrp ("/etc/gosa/gosa.conf", "www-data"); +echo "OK\n\n"; + +# Print reminder +echo<< + php_admin_flag engine on + php_admin_value open_basedir "/etc/gosa/:/usr/share/gosa/:/var/cache/gosa/:/var/spool/gosa/" + php_admin_flag register_globals off + php_admin_flag allow_call_time_pass_reference off + php_admin_flag expose_php off + php_admin_flag zend.ze1_compatibility_mode off + php_admin_flag register_long_arrays off + php_admin_flag magic_quotes_gpc on + include /etc/gosa/gosa.secrets + + + +Please reload your httpd configuration after you've modified anything. + + +EOF; +?> diff --git a/trunk/gosa-core/bin/mkntpasswd b/trunk/gosa-core/bin/mkntpasswd new file mode 100755 index 000000000..b860f371d --- /dev/null +++ b/trunk/gosa-core/bin/mkntpasswd @@ -0,0 +1,10 @@ +#!/bin/sh +if [ $# -ne 1 ]; then + echo "Usage: mkntpwd " + exit 1 +fi + +# Render hash using perl +perl -MCrypt::SmbHash -e "ntlmgen \"\$ARGV[0]\", \$lm, \$nt; print \"\${lm}:\${nt}\n\";" "$1" + +exit 0 diff --git a/trunk/gosa-core/contrib/artwork/GOsa-logo.eps b/trunk/gosa-core/contrib/artwork/GOsa-logo.eps new file mode 100644 index 000000000..adfab2462 --- /dev/null +++ b/trunk/gosa-core/contrib/artwork/GOsa-logo.eps @@ -0,0 +1,64 @@ +%!PS-Adobe-3.1 EPSF-3.0 %ADO_DSC_Encoding: MacOS Roman %%Title: GOsa-logo.eps %%Creator: Adobe Illustrator(R) 12 %%AI8_CreatorVersion: 12.0.1 %AI9_PrintingDataBegin %%For: stephan heller %%CreationDate: 09.02.2009 %%BoundingBox: 0 0 1191 347 %%HiResBoundingBox: 0 0 1190.5879 346.9991 %%CropBox: 0 0 1190.5879 346.9991 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 %%+ procset Adobe_CoolType_Utility_T42 1.0 0 %%+ procset Adobe_CoolType_Utility_MAKEOCF 1.19 0 %%+ procset Adobe_CoolType_Core 2.23 0 %%+ procset Adobe_AGM_Core 2.0 0 %%+ procset Adobe_AGM_Utils 1.0 0 %%DocumentFonts: %%DocumentNeededFonts: %%DocumentNeededFeatures: %%DocumentSuppliedFeatures: %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %ADO_BuildNumber: Adobe Illustrator(R) 12.0.1 x5205 R agm 4.3861 ct 5.530 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 40 8 %%BeginData: 6528 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDFCFFFDFCFFFD96FFA8A9A8A8A8FD1DFFA8A87EA87EA9A8AFA8FD %0FFFA87E5354535353A8A8FD3AFFAFA8535328FD04295A7EFD17FF7E5329 %2F2929282929292853FD0DFF7E2F29282928292829285353AFFD37FF7E53 %01292829282928290129297EAFFD11FFA853282928292829282928292829 %2FFD0BFF7E53062928292829282928292829287EFD35FF53292853292928 %292929285329292854A9FD0FFF7E2F2853292F2953292F2953292F287EFD %0AFF7E29292F2953292F2953292F29532929287EFD33FF29292829282929 %53537E5353062928290653A8FD0DFF532928292829282928292829282928 %2953FD09FF532928292829282928292829282928292829017EFD32FF5328 %2F28537EFD06FFA853FD0429FD0DFF7E292853292928532929282F292928 %2F287EFD08FF592929292853292928292829282F29292853292928AFFD32 %FF53017EA8FD09FF592928A9FD0CFF7E2928292829282928290629282928 %2906297EFD07FF7E292829282928292853537E7D53282928292829282953 %FD22FFA87EA9FD0DFFA8A8FFFFFFA953532F547EFFFFFF7EA9FD0CFFA853 %2953295329532829537E7EA97EA87EA97EFD08FF532853292F29292FA9FD %05FFA929292953292F2953FD20FFA85328292954A9FD09FFA92FFFFFFFA8 %53062928292829287EFFFFFF7E7EFD0AFF5306292829282928537EFD10FF %A828292829282928FD08FFA828292829282906A8FD1EFFA8290629532901 %53FD08FFA92829FFFFA95328292853292928292884FFFF53297EFD09FF29 %292853292F2853A9FD11FF532929292853287EFD09FF5329292853292953 %FD1EFFA828297EFF532953FD07FFA9282929FFFF53012928292829282928 %2928A9FF7E01297EFD07FF53292829282928297EFFFFFFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA82928292829282FA8FD09FF5329282928292853FD1EFF %A8A97EFFA82F0153FD07FF29292854FFA9287E29292953295328537E2953 %FF7E292853A8FD06FF53292F2953292953FD04FF7E2F532F5353532F5353 %53297EFF842853292F292953FD0AFFA8282F2953292953FD07FFA9FD19FF %A953282984FD06FF2929282928A82F287EFF2829282928297EFF28297E54 %28292829A8FD04FFA928292829282928A8FD04FF28292829282928292829 %282953FF53292829282906A8FD0AFF7E29282928292853FD04FF7E7E5353 %295353A9FD06FFA87E5353295353A9FD06FF7E2906297DFD06FFFD042953 %A97EA9A8FFFFAF292928537EFFFFA9A8A8A87E29292853A8FFFFFF7E2928 %5329292853FD04FFA92F28532929285329292853287EFF53292928532929 %A8FD0AFFA828532929282953FFFFFF532928292829282929A8FD04FF7E53 %282928292929287EFD04FF7E292853A8FD06FF29292829017EFD07FF7E28 %2953FD07FF7E2928290153FFFFFF7E06292829282953FD04FFA928292829 %282928292829282953FF28292829282928FD0BFF7E29282928290654FFFF %5329282929532929282928A9FFFF7E290629282F2829282928AFFFFF7E29 %28297EFFA8FD05FFA9FD04297EFFA8FD05FF53292953A8FD06FFA8292F28 %2FA8FFFFFF7E292953292F287EFD04FFA8292953292F2953292F2953287E %FF53292F29532953FD0BFF7E2853292F29297EFFA82F29297EFFFFFF5929 %29297EFFFF53282929A9FFFF532929297EFFA953292929532953A9FD05FF %A9282928292FA85329A8FF29292829282FA8FF292F7E53282928297EFD04 %FF7E06292829282953FD04FF840129012928292829282928297EFF282928 %29282929FD0BFF53292829282906A8FF7E0629287EFD04FF7EA8A8FFFFFF %7EA87DA8FFFFFFA928290684FFA8282F2829282953FD07FFA929292853FF %A8017E53292853292F28537E2929FF7E2928297EFD05FF7E292929285329 %53A9FFFFFF7E54537E537E2F292853292928A9FF53285329292853A9FD09 %FFA853292928532929A8FF8429282F297E7EFD0FFF532929297EFFFFFFA8 %FFA9FFA8FD09FFA8282929FFFF530129282928292829282906A8FF7E0629 %53FD06FFA8062928292829287EFD09FF7E282928292829A8FF2929282928 %2901A8FD09FF7E01292829282953FFFFFF2929282906292853A8FD05FFA8 %7E535329532829282928A8FD12FFA82853FFFFA82929532953292F295328 %7EFFFF7E297EFD07FFA853292F2953292929FD09FF2929295329292FFFFF %7E2853292F292953FD09FF2953292F295328A8FFFFFFA92929292F292F28 %297EFFFFFFA85328290629282F29532953FD14FF7E28FFFFFF7E29282928 %2928290154FFFFFF7E53FD09FF292928292829282929FD07FF5329282928 %29287EFFFF7E292829282928297EFD07FF2929282928292853FD06FF7D53 %2829282928297EFFA92F062928537EA9A82F282953FD15FFA9A87EFFFFA8 %7E29292853537EFFFF7EA8A8FD0AFF7E2853292928532929297EA8FFA8A8 %5329285329292829A8FFFFFF29292853292928297EFFA9FFA9A8FD042928 %5329297EFD08FFA959532853287EFFA9282928A9FD04FF29292884FD16FF %530153A8FFFFFFA8A8A8FFFFFF7E2928A9FD0AFFA8292829282928292829 %01292829062928292829282929FD04FF7E0629282928292829282F282F28 %2928292829282953FFFFFF7E7E53A8FD04FF7E29282953FF7D292853FD04 %FF7D2928297EFD15FF53285329537EFD06FFA953FD0429FD0BFF7E292953 %2953292F2953292F2953292F2953292928A9FD04FFAF532853292F295329 %2F282F292F2953292F292953FFFFFFA829282929FD04FF842853287EFFA8 %282929FFFFFFA853292929FD16FF2929282928292853537E535328292829 %2829A8FD0BFF532928292829282928292829282928292829067EFD06FF7E %292829282928292829282928292829282929FD05FF53292829297E595428 %292829A8FF7E292829297E59290629282FA9FD16FF532928532929282928 %29282F29292853A8FD0DFF7E292829285329292853292928532929287EFD %08FF7E29282F29292853292928532929282953FD07FF5329282928292829 %282F84FFFFFFFD042901292953282929FD18FF7D29012928292829282928 %29287EA8FD0FFF8453282906292829282928290629287EFD0AFFA8530129 %2829282928292829062F7DFD09FF7D5328292829287EA8FD04FFA9292928 %2953A97E292853A8FD18FFA87E532F28292929285359A9FD13FFA9595429 %29282F292929547EFD0EFFA95353292F29292953537EA9FD0DFFA8A9A8FD %09FFA8A9A8FFFFFFAFFD1EFFA8A87EA87EA9A8FD19FFA8A87EA9A8FD13FF %A9A97EA9A8A9A8FDFCFFFDFCFFFDFCFFFD3EFFFF %%EndData %%EndComments %%BeginDefaults %%ViewingOrientation: 1 0 0 1 %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Utils 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Utils 70 dict dup begin put /bdf { bind def } bind def /nd{ null def }bdf /xdf { exch def }bdf /ldf { load def }bdf /ddf { put }bdf /xddf { 3 -1 roll put }bdf /xpt { exch put }bdf /ndf { exch dup where{ pop pop pop }{ xdf }ifelse }def /cdndf { exch dup currentdict exch known{ pop pop }{ exch def }ifelse }def /ps_level /languagelevel where{ pop systemdict /languagelevel get exec }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr} stopped { -1 }if def /set_gvm { currentglobal exch setglobal }bdf /reset_gvm { setglobal }bdf /makereadonlyarray { /packedarray where{ pop packedarray }{ array astore readonly }ifelse }bdf /map_reserved_ink_name { dup type /stringtype eq{ dup /Red eq{ pop (_Red_) }{ dup /Green eq{ pop (_Green_) }{ dup /Blue eq{ pop (_Blue_) }{ dup () cvn eq{ pop (Process) }if }ifelse }ifelse }ifelse }if }bdf /AGMUTIL_GSTATE 22 dict def /get_gstate { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_clr_spc currentcolorspace def /AGMUTIL_GSTATE_clr_indx 0 def /AGMUTIL_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def} repeat pop /AGMUTIL_GSTATE_fnt rootfont def /AGMUTIL_GSTATE_lw currentlinewidth def /AGMUTIL_GSTATE_lc currentlinecap def /AGMUTIL_GSTATE_lj currentlinejoin def /AGMUTIL_GSTATE_ml currentmiterlimit def currentdash /AGMUTIL_GSTATE_do xdf /AGMUTIL_GSTATE_da xdf /AGMUTIL_GSTATE_sa currentstrokeadjust def /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def /AGMUTIL_GSTATE_op currentoverprint def /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit /AGMUTIL_GSTATE_gy_xfer xdf cvlit /AGMUTIL_GSTATE_b_xfer xdf cvlit /AGMUTIL_GSTATE_g_xfer xdf cvlit /AGMUTIL_GSTATE_r_xfer xdf /AGMUTIL_GSTATE_ht currenthalftone def /AGMUTIL_GSTATE_flt currentflat def end }def /set_gstate { AGMUTIL_GSTATE begin AGMUTIL_GSTATE_clr_spc setcolorspace AGMUTIL_GSTATE_clr_indx {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def} repeat setcolor AGMUTIL_GSTATE_fnt setfont AGMUTIL_GSTATE_lw setlinewidth AGMUTIL_GSTATE_lc setlinecap AGMUTIL_GSTATE_lj setlinejoin AGMUTIL_GSTATE_ml setmiterlimit AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash AGMUTIL_GSTATE_sa setstrokeadjust AGMUTIL_GSTATE_clr_rnd setcolorrendering AGMUTIL_GSTATE_op setoverprint AGMUTIL_GSTATE_bg cvx setblackgeneration AGMUTIL_GSTATE_ucr cvx setundercolorremoval AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer AGMUTIL_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or { currenthalftone /HalftoneType get AGMUTIL_GSTATE_ht /HalftoneType get ne { mark AGMUTIL_GSTATE_ht {sethalftone} stopped cleartomark } if }{ AGMUTIL_GSTATE_ht sethalftone } ifelse AGMUTIL_GSTATE_flt setflat end }def /get_gstate_and_matrix { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_ctm matrix currentmatrix def end get_gstate }def /set_gstate_and_matrix { set_gstate AGMUTIL_GSTATE begin AGMUTIL_GSTATE_ctm setmatrix end }def /AGMUTIL_str256 256 string def /AGMUTIL_src256 256 string def /AGMUTIL_dst64 64 string def /AGMUTIL_srcLen nd /AGMUTIL_ndx nd /thold_halftone { level3 {sethalftone currenthalftone} { dup /HalftoneType get 3 eq { sethalftone currenthalftone } { begin Width Height mul { Thresholds read {pop} if } repeat end currenthalftone } ifelse }ifelse } def /rdcmntline { currentfile AGMUTIL_str256 readline pop (%) anchorsearch {pop} if } bdf /filter_cmyk { dup type /filetype ne{ exch () /SubFileDecode filter } { exch pop } ifelse [ exch { AGMUTIL_src256 readstring pop dup length /AGMUTIL_srcLen exch def /AGMUTIL_ndx 0 def AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ 1 index exch get AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put /AGMUTIL_ndx AGMUTIL_ndx 1 add def }for pop AGMUTIL_dst64 0 AGMUTIL_ndx getinterval } bind /exec cvx ] cvx } bdf /filter_indexed_devn { cvi Names length mul names_index add Lookup exch get } bdf /filter_devn { 4 dict begin /srcStr xdf /dstStr xdf dup type /filetype ne{ 0 () /SubFileDecode filter }if [ exch [ /devicen_colorspace_dict /AGMCORE_gget cvx /begin cvx currentdict /srcStr get /readstring cvx /pop cvx /dup cvx /length cvx 0 /gt cvx [ Adobe_AGM_Utils /AGMUTIL_ndx 0 /ddf cvx names_index Names length currentdict /srcStr get length 1 sub { 1 /index cvx /exch cvx /get cvx currentdict /dstStr get /AGMUTIL_ndx /load cvx 3 -1 /roll cvx /put cvx Adobe_AGM_Utils /AGMUTIL_ndx /AGMUTIL_ndx /load cvx 1 /add cvx /ddf cvx } for currentdict /dstStr get 0 /AGMUTIL_ndx /load cvx /getinterval cvx ] cvx /if cvx /end cvx ] cvx bind /exec cvx ] cvx end } bdf /AGMUTIL_imagefile nd /read_image_file { AGMUTIL_imagefile 0 setfileposition 10 dict begin /imageDict xdf /imbufLen Width BitsPerComponent mul 7 add 8 idiv def /imbufIdx 0 def /origDataSource imageDict /DataSource get def /origMultipleDataSources imageDict /MultipleDataSources get def /origDecode imageDict /Decode get def /dstDataStr imageDict /Width get colorSpaceElemCnt mul string def imageDict /MultipleDataSources known {MultipleDataSources}{false} ifelse { /imbufCnt imageDict /DataSource get length def /imbufs imbufCnt array def 0 1 imbufCnt 1 sub { /imbufIdx xdf imbufs imbufIdx imbufLen string put imageDict /DataSource get imbufIdx [ AGMUTIL_imagefile imbufs imbufIdx get /readstring cvx /pop cvx ] cvx put } for DeviceN_PS2 { imageDict begin /DataSource [ DataSource /devn_sep_datasource cvx ] cvx def /MultipleDataSources false def /Decode [0 1] def end } if }{ /imbuf imbufLen string def Indexed_DeviceN level3 not and DeviceN_NoneName or { /srcDataStrs [ imageDict begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi string } repeat end ] def imageDict begin /DataSource [AGMUTIL_imagefile Decode BitsPerComponent false 1 /filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource /exec cvx] cvx def /Decode [0 1] def end }{ imageDict /DataSource [1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx /pop cvx names_index /get cvx /put cvx] cvx put imageDict /Decode [0 1] put } ifelse } ifelse imageDict exch load exec imageDict /DataSource origDataSource put imageDict /MultipleDataSources origMultipleDataSources put imageDict /Decode origDecode put end } bdf /write_image_file { begin { (AGMUTIL_imagefile) (w+) file } stopped{ false }{ Adobe_AGM_Utils/AGMUTIL_imagefile xddf 2 dict begin /imbufLen Width BitsPerComponent mul 7 add 8 idiv def MultipleDataSources {DataSource 0 get}{DataSource}ifelse type /filetype eq { /imbuf imbufLen string def }if 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ pop MultipleDataSources { 0 1 DataSource length 1 sub { DataSource type dup /arraytype eq { pop DataSource exch get exec }{ /filetype eq { DataSource exch get imbuf readstring pop }{ DataSource exch get } ifelse } ifelse AGMUTIL_imagefile exch writestring } for }{ DataSource type dup /arraytype eq { pop DataSource exec }{ /filetype eq { DataSource imbuf readstring pop }{ DataSource } ifelse } ifelse AGMUTIL_imagefile exch writestring } ifelse }for end true }ifelse end } bdf /close_image_file { AGMUTIL_imagefile closefile (AGMUTIL_imagefile) deletefile }def statusdict /product known userdict /AGMP_current_show known not and{ /pstr statusdict /product get def pstr (HP LaserJet 2200) eq pstr (HP LaserJet 4000 Series) eq or pstr (HP LaserJet 4050 Series ) eq or pstr (HP LaserJet 8000 Series) eq or pstr (HP LaserJet 8100 Series) eq or pstr (HP LaserJet 8150 Series) eq or pstr (HP LaserJet 5000 Series) eq or pstr (HP LaserJet 5100 Series) eq or pstr (HP Color LaserJet 4500) eq or pstr (HP Color LaserJet 4600) eq or pstr (HP LaserJet 5Si) eq or pstr (HP LaserJet 1200 Series) eq or pstr (HP LaserJet 1300 Series) eq or pstr (HP LaserJet 4100 Series) eq or { userdict /AGMP_current_show /show load put userdict /show { currentcolorspace 0 get /Pattern eq {false charpath f} {AGMP_current_show} ifelse } put }if currentdict /pstr undef } if /consumeimagedata { begin currentdict /MultipleDataSources known not {/MultipleDataSources false def} if MultipleDataSources { DataSource 0 get type dup /filetype eq { 1 dict begin /flushbuffer Width cvi string def 1 1 Height cvi { pop 0 1 DataSource length 1 sub { DataSource exch get flushbuffer readstring pop pop }for }for end }if dup /arraytype eq exch /packedarraytype eq or DataSource 0 get xcheck and { Width Height mul cvi { 0 1 DataSource length 1 sub {dup DataSource exch get exec length exch 0 ne {pop}if}for dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if } { /DataSource load type dup /filetype eq { 1 dict begin /flushbuffer Width Decode length 2 idiv mul cvi string def 1 1 Height { pop DataSource flushbuffer readstring pop pop} for end }if dup /arraytype eq exch /packedarraytype eq or /DataSource load xcheck and { Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul { DataSource length dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if }ifelse end }bdf /addprocs { 2{/exec load}repeat 3 1 roll [ 5 1 roll ] bind cvx }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end sethalftone pop }ifelse }def /clonearray { dup xcheck exch dup length array exch Adobe_AGM_Core/AGMCORE_tmp -1 ddf { Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf dup type /dicttype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonedict Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if dup type /arraytype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonearray Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if exch dup Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put }forall exch {cvx} if }bdf /clonedict { dup length dict begin { dup type /dicttype eq { clonedict } if dup type /arraytype eq { clonearray } if def }forall currentdict end }bdf /DeviceN_PS2 { /currentcolorspace AGMCORE_gget 0 get /DeviceN eq level3 not and } bdf /Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget dup null ne { dup /CSDBase known { /CSDBase get /CSD get_res /Names known }{ pop false }ifelse }{ pop false } ifelse } bdf /DeviceN_NoneName { /Names where { pop false Names { (None) eq or } forall }{ false }ifelse } bdf /DeviceN_PS2_inRip_seps { /AGMCORE_in_rip_sep where { pop dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /DeviceN eq level3 not and AGMCORE_in_rip_sep and { /currentcolorspace exch AGMCORE_gput false } { true }ifelse } { true } ifelse } { true } ifelse } bdf /base_colorspace_type { dup type /arraytype eq {0 get} if } bdf /currentdistillerparams where { pop currentdistillerparams /CoreDistVersion get 5000 lt}{true}ifelse { /pdfmark_5 {cleartomark} bind def }{ /pdfmark_5 {pdfmark} bind def }ifelse /ReadBypdfmark_5 { 2 dict begin /makerString exch def string /tmpString exch def { currentfile tmpString readline pop makerString anchorsearch { pop pop cleartomark exit }{ 3 copy /PUT pdfmark_5 pop 2 copy (\n) /PUT pdfmark_5 } ifelse }loop end } bdf /doc_setup{ Adobe_AGM_Utils begin }bdf /doc_trailer{ currentdict Adobe_AGM_Utils eq{ end }if }bdf systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright (C) 1997-2005 Adobe Systems, Inc. All Rights Reserved. %% Note: This procset assumes Adobe_AGM_Utils is opened on the stack below it, for %% definitions of some fundamental procedures. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Core 201 dict dup begin put /Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen [currentscreen] cvx def /AGMCORE_tmp 0 def /AGMCORE_&setgray nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&setcmykcolor nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_distilling nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSD_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_err_strings 4 dict def /AGMCORE_cur_err nd /AGMCORE_current_spot_alias false def /AGMCORE_inverting false def /AGMCORE_feature_dictCount nd /AGMCORE_feature_opCount nd /AGMCORE_feature_ctm nd /AGMCORE_ConvertToProcess false def /AGMCORE_Default_CTM matrix def /AGMCORE_Default_PageSize nd /AGMCORE_currentbg nd /AGMCORE_currentucr nd /AGMCORE_in_pattern false def /AGMCORE_currentpagedevice nd /knockout_unitsq nd currentglobal true setglobal [/CSA /Gradient /Procedure] { /Generic /Category findresource dup length dict copy /Category defineresource pop } forall setglobal /AGMCORE_key_known { where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /flushinput { save 2 dict begin /CompareBuffer 3 -1 roll def /readbuffer 256 string def mark { currentfile readbuffer {readline} stopped {cleartomark mark} { not {pop exit} if CompareBuffer eq {exit} if }ifelse }loop cleartomark end restore }bdf /getspotfunction { AGMCORE_screen exch pop exch pop dup type /dicttype eq{ dup /HalftoneType get 1 eq{ /SpotFunction get }{ dup /HalftoneType get 2 eq{ /GraySpotFunction get }{ pop { abs exch abs 2 copy add 1 gt{ 1 sub dup mul exch 1 sub dup mul add 1 sub }{ dup mul exch dup mul add 1 exch sub }ifelse }bind }ifelse }ifelse }if } def /clp_npth { clip newpath } def /eoclp_npth { eoclip newpath } def /npth_clp { newpath clip } def /graphic_setup { /AGMCORE_graphicsave save def concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth [] 0 setdash 10 setmiterlimit newpath false setoverprint false setstrokeadjust //Adobe_AGM_Core/spot_alias get exec /Adobe_AGM_Image where { pop Adobe_AGM_Image/spot_alias 2 copy known{ get exec }{ pop pop }ifelse } if 100 dict begin /dictstackcount countdictstack def /showpage {} def mark } def /graphic_cleanup { cleartomark dictstackcount 1 countdictstack 1 sub {end}for end AGMCORE_graphicsave restore } def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def } { AGMCORE_str256 exch AGMCORE_tmp xpt /AGMCORE_tmp AGMCORE_tmp 1 add def } ifelse } forall } bdf /doc_setup{ Adobe_AGM_Core begin /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict /AGM_handleerror known not{ errordict /AGM_handleerror errordict /handleerror get put errordict /handleerror { Adobe_AGM_Core begin $error /newerror get AGMCORE_cur_err null ne and{ $error /newerror false put AGMCORE_cur_err compose_error_msg }if $error /newerror true put end errordict /AGM_handleerror get exec } bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err /AGMCORE_bad_environ def} if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def }if /AGMCORE_currentbg currentblackgeneration def /AGMCORE_currentucr currentundercolorremoval def /AGMCORE_distilling /product where{ pop systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and }{ false }ifelse def /AGMCORE_GSTATE AGMCORE_key_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 10 def /AGMCORE_&gsave /gsave ldf /AGMCORE_&grestore /grestore ldf /AGMCORE_&grestoreall /grestoreall ldf /AGMCORE_&save /save ldf /AGMCORE_&setoverprint /setoverprint ldf /AGMCORE_gdictcopy { begin { def } forall end }def /AGMCORE_gput { AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget { AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave { AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if /AGMCORE_gstackptr exch store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore { AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt {1 add} if dup AGMCORE_gstack exch get dup /AGMCORE_currentoverprint known {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse /AGMCORE_gstackptr exch store }def /grestoreall { AGMCORE_&grestoreall /AGMCORE_gstackptr AGMCORE_gstacksaveptr store }def /save { AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if /AGMCORE_gstackptr exch store /AGMCORE_gstacksaveptr AGMCORE_gstackptr store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /setoverprint{ dup /AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint }def 0 1 AGMCORE_gstack length 1 sub { AGMCORE_gstack exch AGMCORE_gstackframekeys dict put } for }if level3 /AGMCORE_&sysshfill AGMCORE_key_known not and { /AGMCORE_&sysshfill systemdict/shfill get def /AGMCORE_&sysmakepattern systemdict/makepattern get def /AGMCORE_&usrmakepattern /makepattern load def }if /currentcmykcolor [0 0 0 0] AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace [/DeviceGray] AGMCORE_gput /sep_tint 0 AGMCORE_gput /devicen_tints [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /devicen_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent () AGMCORE_gput /customcolor_tint 1 AGMCORE_gput << /MaxPatternItem currentsystemparams /MaxPatternCache get >> setuserparams end }def /page_setup { /setcmykcolor where{ pop Adobe_AGM_Core/AGMCORE_&setcmykcolor /setcmykcolor load put }if Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor pop }ndf /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint { pop }ndf /currentoverprint { false }ndf /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_have_reported_unsupported_color_space false def /AGMCORE_report_unsupported_color_space { AGMCORE_have_reported_unsupported_color_space false eq { (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.) == Adobe_AGM_Core /AGMCORE_have_reported_unsupported_color_space true ddf } if }def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_in_rip_sep /AGMCORE_in_rip_sep where{ pop AGMCORE_in_rip_sep }{ AGMCORE_distilling { false }{ userdict/Adobe_AGM_OnHost_Seps known{ false }{ level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse }ifelse }ifelse }ifelse def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ AGMCORE_distilling AGMCORE_producing_seps or }ifelse def /AGM_is_distiller_preserving_spotimages { currentdistillerparams/PreserveOverprintSettings known { currentdistillerparams/PreserveOverprintSettings get { currentdistillerparams/ColorConversionStrategy known { currentdistillerparams/ColorConversionStrategy get /sRGB ne }{ true }ifelse }{ false }ifelse }{ false }ifelse }def /convert_spot_to_process where {pop}{ /convert_spot_to_process { //Adobe_AGM_Core begin dup map_alias { /Name get exch pop } if dup dup (None) eq exch (All) eq or { pop false }{ AGMCORE_host_sep { gsave 1 0 0 0 setcmykcolor currentgray 1 exch sub 0 1 0 0 setcmykcolor currentgray 1 exch sub 0 0 1 0 setcmykcolor currentgray 1 exch sub 0 0 0 1 setcmykcolor currentgray 1 exch sub add add add 0 eq { pop false }{ false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne }ifelse grestore }{ AGMCORE_distilling { pop AGM_is_distiller_preserving_spotimages not }{ //Adobe_AGM_Core/AGMCORE_name xddf false //Adobe_AGM_Core/AGMCORE_in_pattern known {//Adobe_AGM_Core/AGMCORE_in_pattern get}{false} ifelse not AGMCORE_currentpagedevice/OverrideSeparations known and { AGMCORE_currentpagedevice/OverrideSeparations get { /HqnSpots /ProcSet resourcestatus { pop pop pop true }if }if }if { AGMCORE_name /HqnSpots /ProcSet findresource /TestSpot get exec not }{ gsave [/Separation AGMCORE_name /DeviceGray {}]AGMCORE_&setcolorspace false AGMCORE_currentpagedevice/SeparationColorNames 2 copy known { get { AGMCORE_name eq or}forall not }{ pop pop pop true }ifelse grestore }ifelse }ifelse }ifelse }ifelse end }def }ifelse /convert_to_process where {pop}{ /convert_to_process { dup length 0 eq { pop false }{ AGMCORE_host_sep { dup true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process and}ifelse } forall { true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch (Black) eq or and }forall not }{pop false}ifelse }{ false exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process or}ifelse } forall }ifelse }ifelse }def }ifelse /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots userdict/Adobe_AGM_OnHost_Seps known userdict/Adobe_AGM_InRip_Seps known or not and }ifelse { /setcmykcolor[ { 4 copy add add add 0 eq currentoverprint and{ pop 0.0005 }if }/exec cvx /AGMCORE_&setcmykcolor load dup type/operatortype ne{ /exec cvx }if ]cvx def }if /AGMCORE_IsSeparationAProcessColor { dup (Cyan) eq exch dup (Magenta) eq exch dup (Yellow) eq exch (Black) eq or or or }def AGMCORE_host_sep{ /setcolortransfer { AGMCORE_cyan_plate{ pop pop pop }{ AGMCORE_magenta_plate{ 4 3 roll pop pop pop }{ AGMCORE_yellow_plate{ 4 2 roll pop pop pop }{ 4 1 roll pop pop pop }ifelse }ifelse }ifelse settransfer } def /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def /AGMCORE_RemoveProcessColorNames { 1 dict begin /filtername { dup /Cyan eq 1 index (Cyan) eq or {pop (_cyan_)}if dup /Magenta eq 1 index (Magenta) eq or {pop (_magenta_)}if dup /Yellow eq 1 index (Yellow) eq or {pop (_yellow_)}if dup /Black eq 1 index (Black) eq or {pop (_black_)}if }def dup type /arraytype eq {[exch {filtername}forall]} {filtername}ifelse end }def level3 { /AGMCORE_IsCurrentColor { dup AGMCORE_IsSeparationAProcessColor { AGMCORE_plate_ndx 0 eq {dup (Cyan) eq exch /Cyan eq or}if AGMCORE_plate_ndx 1 eq {dup (Magenta) eq exch /Magenta eq or}if AGMCORE_plate_ndx 2 eq {dup (Yellow) eq exch /Yellow eq or}if AGMCORE_plate_ndx 3 eq {dup (Black) eq exch /Black eq or}if AGMCORE_plate_ndx 4 eq {pop false}if }{ gsave false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne grestore }ifelse }def /AGMCORE_filter_functiondatasource { 5 dict begin /data_in xdf data_in type /stringtype eq { /ncomp xdf /comp xdf /string_out data_in length ncomp idiv string def 0 ncomp data_in length 1 sub { string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put }for string_out }{ string /string_in xdf /string_out 1 string def /component xdf [ data_in string_in /readstring cvx [component /get cvx 255 /exch cvx /sub cvx string_out /exch cvx 0 /exch cvx /put cvx string_out]cvx [/pop cvx ()]cvx /ifelse cvx ]cvx /ReusableStreamDecode filter }ifelse end }def /AGMCORE_separateShadingFunction { 2 dict begin /paint? xdf /channel xdf dup type /dicttype eq { begin FunctionType 0 eq { /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def currentdict /Decode known {/Decode Decode channel 2 mul 2 getinterval def}if paint? not {/Decode [1 1]def}if }if FunctionType 2 eq { paint? { /C0 [C0 channel get 1 exch sub] def /C1 [C1 channel get 1 exch sub] def }{ /C0 [1] def /C1 [1] def }ifelse }if FunctionType 3 eq { /Functions [Functions {channel paint? AGMCORE_separateShadingFunction} forall] def }if currentdict /Range known {/Range [0 1] def}if currentdict end}{ channel get 0 paint? AGMCORE_separateShadingFunction }ifelse end }def /AGMCORE_separateShading { 3 -1 roll begin currentdict /Function known { currentdict /Background known {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if Function 3 1 roll AGMCORE_separateShadingFunction /Function xdf /ColorSpace [/DeviceGray] def }{ ColorSpace dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def }{ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put }ifelse ColorSpace 0 get /Separation eq { { [1 /exch cvx /sub cvx]cvx }{ [/pop cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll put pop }{ { [exch ColorSpace 1 get length 1 sub exch sub /index cvx 1 /exch cvx /sub cvx ColorSpace 1 get length 1 add 1 /roll cvx ColorSpace 1 get length{/pop cvx} repeat]cvx }{ pop [ColorSpace 1 get length {/pop cvx} repeat cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll bind put }ifelse ColorSpace 2 /DeviceGray put }ifelse end }def /AGMCORE_separateShadingDict { dup /ColorSpace get dup type /arraytype ne {[exch]}if dup 0 get /DeviceCMYK eq { exch begin currentdict AGMCORE_cyan_plate {0 true}if AGMCORE_magenta_plate {1 true}if AGMCORE_yellow_plate {2 true}if AGMCORE_black_plate {3 true}if AGMCORE_plate_ndx 4 eq {0 false}if dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading currentdict end exch }if dup 0 get /Separation eq { exch begin ColorSpace 1 get dup /None ne exch /All ne and { ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /Separation ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading }if }ifelse }{ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor 0 exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse }if currentdict end exch }if dup 0 get /DeviceN eq { exch begin ColorSpace 1 get convert_to_process { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /DeviceN ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading /ColorSpace [/DeviceGray] def }if }ifelse }{ currentdict false -1 ColorSpace 1 get { AGMCORE_IsCurrentColor { 1 add exch pop true exch exit }if 1 add }forall exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse currentdict end exch }if dup 0 get dup /DeviceCMYK eq exch dup /Separation eq exch /DeviceN eq or or not { exch begin ColorSpace dup type /arraytype eq {0 get}if /DeviceGray ne { AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { ColorSpace 0 get /CIEBasedA eq { /ColorSpace [/Separation /_ciebaseda_ /DeviceGray {}] def }if ColorSpace 0 get dup /CIEBasedABC eq exch dup /CIEBasedDEF eq exch /DeviceRGB eq or or { /ColorSpace [/DeviceN [/_red_ /_green_ /_blue_] /DeviceRGB {}] def }if ColorSpace 0 get /CIEBasedDEFG eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def }if currentdict 0 false AGMCORE_separateShading }if }if currentdict end exch }if pop dup /AGMCORE_ignoreshade known { begin /ColorSpace [/Separation (None) /DeviceGray {}] def currentdict end }if }def /shfill { AGMCORE_separateShadingDict dup /AGMCORE_ignoreshade known {pop} {AGMCORE_&sysshfill}ifelse }def /makepattern { exch dup /PatternType get 2 eq { clonedict begin /Shading Shading AGMCORE_separateShadingDict def Shading /AGMCORE_ignoreshade known currentdict end exch {pop <>}if exch AGMCORE_&sysmakepattern }{ exch AGMCORE_&usrmakepattern }ifelse }def }if }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4 {4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ //Adobe_AGM_Core begin /AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf end [/Separation 4 -1 roll /DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation (All) /DeviceGray {}] setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4 {4 index mul 4 1 roll} repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval {255 div} forall } bdf /map_indexed_devn { Lookup Names length 3 -1 roll cvi map_index } bdf /n_color_components { base_colorspace_type dup /DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse }bdf level2{ /mo /moveto ldf /li /lineto ldf /cv /curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def level2 /setcolorspace AGMCORE_key_known not and{ /AGMCORE_&&&setcolorspace /setcolorspace ldf /AGMCORE_ReplaceMappedColor { dup type dup /arraytype eq exch /packedarraytype eq or { /AGMCORE_SpotAliasAry2 where { begin dup 0 get dup /Separation eq { pop dup length array copy dup dup 1 get current_spot_alias { dup map_alias { false set_spot_alias dup 1 exch setsepcolorspace true set_spot_alias begin /sep_colorspace_dict currentdict AGMCORE_gput pop pop pop [ /Separation Name CSA map_csa MappedCSA /sep_colorspace_proc load ] dup Name end }if }if map_reserved_ink_name 1 xpt }{ /DeviceN eq { dup length array copy dup dup 1 get [ exch { current_spot_alias{ dup map_alias{ /Name get exch pop }if }if map_reserved_ink_name } forall ] 1 xpt }if }ifelse end } if }if }def /setcolorspace { dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /Indexed eq { AGMCORE_distilling { /PhotoshopDuotoneList where { pop false }{ true }ifelse }{ true }ifelse { aload pop 3 -1 roll AGMCORE_ReplaceMappedColor 3 1 roll 4 array astore }if }{ AGMCORE_ReplaceMappedColor }ifelse }if DeviceN_PS2_inRip_seps {AGMCORE_&&&setcolorspace} if }def }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /li{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1 [8 0 0 8 0 0] {} image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /setcolorspace { /currentcolorspace exch AGMCORE_gput } def /currentcolorspace { /currentcolorspace AGMCORE_gget } def /setcolor_devicecolor { base_colorspace_type dup /DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup /DeviceGray ne{ dup /DeviceCMYK ne{ dup /DeviceRGB ne{ dup /Separation eq{ pop currentcolorspace 3 get exec currentcolorspace 2 get }{ dup /Indexed eq{ pop currentcolorspace 3 get dup type /stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err /AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor } def }ifelse /sop /setoverprint ldf /lw /setlinewidth ldf /lc /setlinecap ldf /lj /setlinejoin ldf /ml /setmiterlimit ldf /dsh /setdash ldf /sadj /setstrokeadjust ldf /gry /setgray ldf /rgb /setrgbcolor ldf /cmyk /setcmykcolor ldf /sep /setsepcolor ldf /devn /setdevicencolor ldf /idx /setindexedcolor ldf /colr /setcolor ldf /csacrd /set_csa_crd ldf /sepcs /setsepcolorspace ldf /devncs /setdevicencolorspace ldf /idxcs /setindexedcolorspace ldf /cp /closepath ldf /clp /clp_npth ldf /eclp /eoclp_npth ldf /f /fill ldf /ef /eofill ldf /@ /stroke ldf /nclp /npth_clp ldf /gset /graphic_setup ldf /gcln /graphic_cleanup ldf /AGMCORE_def_ht currenthalftone def /clonedict Adobe_AGM_Utils begin /clonedict load end def /clonearray Adobe_AGM_Utils begin /clonearray load end def currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and { bind }if def }forall /getrampcolor { /indx exch def 0 1 NumComp 1 sub { dup Samples exch get dup type /stringtype eq {indx get} if exch Scaling exch get aload pop 3 1 roll mul add } for ColorSpaceFamily /Separation eq {sep} { ColorSpaceFamily /DeviceN eq {devn} {setcolor}ifelse }ifelse } bdf /sssetbackground {aload pop setcolor} bdf /RadialShade { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /r2 xdf /c2y xdf /c2x xdf /r1 xdf /c1y xdf /c1x xdf /rampdict xdf /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if c1x c2x eq { c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse } { /slope c2y c1y sub c2x c1x sub div def /theta slope 1 atan def c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if } ifelse gsave clippath c1x c1y translate theta rotate -90 rotate { pathbbox } stopped { 0 0 0 0 } if /yMax xdf /xMax xdf /yMin xdf /xMin xdf grestore xMax xMin eq yMax yMin eq or { grestore end } { /max { 2 copy gt { pop } {exch pop} ifelse } bdf /min { 2 copy lt { pop } {exch pop} ifelse } bdf rampdict begin 40 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave c1x c1y translate theta rotate -90 rotate /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def /c1y 0 def /c1x 0 def /c2x 0 def ext0 { 0 getrampcolor c2y r2 add r1 sub 0.0001 lt { c1x c1y r1 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2y r1 add r2 le { c1x c1y r1 0 360 arc fill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r1 neg def /p1y c1y def /p2x r1 def /p2y c1y def p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto fill } { /AA r2 r1 sub c2y div def AA -1 eq { /theta 89.99 def} { /theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y p1x SS1 div neg def /SS2 90 theta sub dup sin exch cos div def /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y p2x SS2 div neg def r1 r2 gt { /L1maxX p1x yMin p1y sub SS1 div add def /L2maxX p2x yMin p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def } ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if c1x c2x sub dup mul c1y c2y sub dup mul add 0.5 exp 0 dtransform dup mul exch dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop /hires xdf hires mul /numpix xdf /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if /xInc c2x c1x sub numsteps div def /yInc c2y c1y sub numsteps div def /rInc r2 r1 sub numsteps div def /cx c1x def /cy c1y def /radius r1 def newpath xInc 0 eq yInc 0 eq rInc 0 eq and and { 0 getrampcolor cx cy radius 0 360 arc stroke NumSamples 1 sub getrampcolor cx cy radius 72 hires div add 0 360 arc 0 setlinewidth stroke } { 0 numsteps { dup subsampling { round cvi } if getrampcolor cx cy radius 0 360 arc /cx cx xInc add def /cy cy yInc add def /radius radius rInc add def cx cy radius 360 0 arcn eofill rampIndxInc add } repeat pop } ifelse ext1 { c2y r2 add r1 lt { c2x c2y r2 0 360 arc fill } { c2y r1 add r2 sub 0.0001 le { c2x c2y r2 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r2 neg def /p1y c2y def /p2x r2 def /p2y c2y def p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto fill } { /AA r2 r1 sub c2y div def AA -1 eq { /theta 89.99 def} { /theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y c2y p1x SS1 div sub def /SS2 90 theta sub dup sin exch cos div def /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y c2y p2x SS2 div sub def r1 r2 lt { /L1maxX p1x yMax p1y sub SS1 div add def /L2maxX p2x yMax p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if grestore grestore end end end } ifelse } bdf /GenStrips { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /y2 xdf /x2 xdf /y1 xdf /x1 xdf /rampdict xdf /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if x1 x2 eq { y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse } { /slope y2 y1 sub x2 x1 sub div def /theta slope 1 atan def x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if } ifelse gsave clippath x1 y1 translate theta rotate { pathbbox } stopped { 0 0 0 0 } if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end } { rampdict begin 20 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave x1 y1 translate theta rotate /xStart 0 def /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def /ySpan yMax yMin sub def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def xStart 0 transform xEnd 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop mul /numpix xdf numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if ext0 { 0 getrampcolor xMin xStart lt { xMin yMin xMin neg ySpan rectfill } if } if /xInc xEnd xStart sub numsteps div def /x xStart def 0 numsteps { dup subsampling { round cvi } if getrampcolor x yMin xInc ySpan rectfill /x x xInc add def rampIndxInc add } repeat pop ext1 { xMax xEnd gt { xEnd yMin xMax xEnd sub ySpan rectfill } if } if grestore grestore end end end } ifelse } bdf }def /page_trailer { end }def /doc_trailer{ }def /capture_currentpagedevice { //Adobe_AGM_Core/AGMCORE_currentpagedevice currentpagedevice ddf } def systemdict /findcolorrendering known{ /findcolorrendering systemdict /findcolorrendering get def }if systemdict /setcolorrendering known{ /setcolorrendering systemdict /setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { dup //Adobe_AGM_Core/AGMCORE_name xddf convert_spot_to_process not }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA get_csa_by_name setcolorspace_opt set_crd end } def /map_csa { currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse {pop}{get_csa_by_name /MappedCSA xdf}ifelse } def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup /sep_tint exch AGMCORE_gput TintProc end } def /setdevicencolor { /devicen_colorspace_dict AGMCORE_gget begin Names length copy Names length 1 sub -1 0 { /devicen_tints AGMCORE_gget 3 1 roll xpt } for TintProc end } def /sep_colorspace_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2 {AGMCORE_tmp mul NComponents 1 roll} repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll } repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end } def /sep_colorspace_gray_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end } def /sep_proc_name { dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{ pop [/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse } def /setsepcolorspace { current_spot_alias{ dup begin Name map_alias{ exch pop }if end }if dup /sep_colorspace_dict exch AGMCORE_gput begin CSA map_csa /AGMCORE_sep_special Name dup () eq exch (All) eq or store AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx ] setcolorspace_opt /TintProc { 255 mul round cvi setcolor }bdf }{ MappedCSA 0 get /DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc [ Components aload pop Name findcmykcustomcolor /exch cvx /setcustomcolor cvx ] cvx bdf }{ AGMCORE_host_sep Name (All) eq and{ /TintProc { 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and AGMCORE_host_sep or Name () eq and{ /TintProc [ MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{ cvx /setcmykcolor cvx }{ cvx /setgray cvx }ifelse ] cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc [ /dup cvx MappedCSA sep_proc_name cvx exch 0 get /DeviceGray eq{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx }if /Name cvx /findcmykcustomcolor cvx /exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep /Name cvx /AGMCORE_IsSeparationAProcessColor load /exec cvx /not cvx /and cvx }{ Name inRip_spot_has_ink not }ifelse [ /pop cvx 1 ] cvx /if cvx /setcustomcolor cvx ] cvx bdf }{ /TintProc {setcolor} bdf [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd setsepcolor end } def /additive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 0 1 numarrays 1 sub { 1 exch add /index cvx c1 /get cvx /mul cvx }for numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /subtractive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 1 0 1 numarrays 1 sub { 1 3 3 -1 roll add /index cvx c1 /get cvx /sub cvx /mul cvx }for /sub cvx numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /exec_tint_transform { /TintProc [ /TintTransform cvx /setcolor cvx ] cvx bdf MappedCSA setcolorspace_opt } bdf /devn_makecustomcolor { 2 dict begin /names_index xdf /Names xdf 1 1 1 1 Names names_index get findcmykcustomcolor /devicen_tints AGMCORE_gget names_index get setcustomcolor Names length {pop} repeat end } bdf /setdevicencolorspace { dup /AliasedColorants known {false}{true}ifelse current_spot_alias and { 7 dict begin /names_index 0 def dup /names_len exch /Names get length def /new_names names_len array def /new_LookupTables names_len array def /alias_cnt 0 def dup /Names get { dup map_alias { exch pop dup /ColorLookup known { dup begin new_LookupTables names_index ColorLookup put end }{ dup /Components known { dup begin new_LookupTables names_index Components put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse new_names names_index 3 -1 roll /Name get put /alias_cnt alias_cnt 1 add def }{ /name xdf new_names names_index name put dup /LookupTables known { dup begin new_LookupTables names_index LookupTables names_index get put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse /names_index names_index 1 add def } forall alias_cnt 0 gt { /AliasedColorants true def /lut_entry_len new_LookupTables 0 get dup length 256 ge {0 get length}{length}ifelse def 0 1 names_len 1 sub { /names_index xdf new_LookupTables names_index get dup length 256 ge {0 get length}{length}ifelse lut_entry_len ne { /AliasedColorants false def exit } { new_LookupTables names_index get 0 get null eq { dup /Names get names_index get /name xdf name (Cyan) eq name (Magenta) eq name (Yellow) eq name (Black) eq or or or not { /AliasedColorants false def exit } if } if } ifelse } for lut_entry_len 1 eq { /AliasedColorants false def } if AliasedColorants { dup begin /Names new_names def /LookupTables new_LookupTables def /AliasedColorants true def /NComponents lut_entry_len def /TintMethod NComponents 4 eq {/Subtractive}{/Additive}ifelse def /MappedCSA TintMethod /Additive eq {/DeviceRGB}{/DeviceCMYK}ifelse def currentdict /TTTablesIdx known not { /TTTablesIdx -1 def } if end } if }if end } if dup /devicen_colorspace_dict exch AGMCORE_gput begin currentdict /AliasedColorants known { AliasedColorants }{ false } ifelse dup not { CSA map_csa } if /TintTransform load type /nulltype eq or { /TintTransform [ 0 1 Names length 1 sub { /TTTablesIdx TTTablesIdx 1 add def dup LookupTables exch get dup 0 get null eq { 1 index Names exch get dup (Cyan) eq { pop exch LookupTables length exch sub /index cvx 0 0 0 } { dup (Magenta) eq { pop exch LookupTables length exch sub /index cvx 0 /exch cvx 0 0 } { (Yellow) eq { exch LookupTables length exch sub /index cvx 0 0 3 -1 /roll cvx 0 } { exch LookupTables length exch sub /index cvx 0 0 0 4 -1 /roll cvx } ifelse } ifelse } ifelse 5 -1 /roll cvx /astore cvx } { dup length 1 sub LookupTables length 4 -1 roll sub 1 add /index cvx /mul cvx /round cvx /cvi cvx /get cvx } ifelse Names length TTTablesIdx add 1 add 1 /roll cvx } for Names length [/pop cvx] cvx /repeat cvx NComponents Names length TintMethod /Subtractive eq { subtractive_blend } { additive_blend } ifelse ] cvx bdf } if AGMCORE_host_sep { Names convert_to_process { exec_tint_transform } { currentdict /AliasedColorants known { AliasedColorants not }{ false } ifelse 5 dict begin /AvoidAliasedColorants xdf /painted? false def /names_index 0 def /names_len Names length def AvoidAliasedColorants { /currentspotalias current_spot_alias def false set_spot_alias } if Names { AGMCORE_is_cmyk_sep { dup (Cyan) eq AGMCORE_cyan_plate and exch dup (Magenta) eq AGMCORE_magenta_plate and exch dup (Yellow) eq AGMCORE_yellow_plate and exch (Black) eq AGMCORE_black_plate and or or or { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def } if painted? {exit} if }{ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def exit } if } ifelse /names_index names_index 1 add def } forall AvoidAliasedColorants { currentspotalias set_spot_alias } if painted? { /devicen_colorspace_dict AGMCORE_gget /names_index names_index put }{ /devicen_colorspace_dict AGMCORE_gget /TintProc [ names_len [/pop cvx] cvx /repeat cvx 1 /setseparationgray cvx 0 0 0 0 /setcmykcolor cvx ] cvx ddf } ifelse end } ifelse } { AGMCORE_in_rip_sep { Names convert_to_process not }{ level3 } ifelse { [/DeviceN Names MappedCSA /TintTransform load] setcolorspace_opt /TintProc level3 not AGMCORE_in_rip_sep and { [ Names /length cvx [/pop cvx] cvx /repeat cvx ] cvx bdf }{ {setcolor} bdf } ifelse }{ exec_tint_transform } ifelse } ifelse set_crd /AliasedColorants false def end } def /setindexedcolorspace { dup /indexed_colorspace_dict exch AGMCORE_gput begin currentdict /CSDBase known { CSDBase /CSD get_res begin currentdict /Names known { currentdict devncs }{ 1 currentdict sepcs } ifelse AGMCORE_host_sep{ 4 dict begin /compCnt /Names where {pop Names length}{1}ifelse def /NewLookup HiVal 1 add string def 0 1 HiVal { /tableIndex xdf Lookup dup type /stringtype eq { compCnt tableIndex map_index }{ exec } ifelse /Names where { pop setdevicencolor }{ setsepcolor } ifelse currentgray tableIndex exch HiVal mul cvi NewLookup 3 1 roll put } for [/Indexed currentcolorspace HiVal NewLookup] setcolorspace_opt end }{ level3 { currentdict /Names known { [/Indexed [/DeviceN Names MappedCSA /TintTransform load] HiVal Lookup] setcolorspace_opt }{ [/Indexed [/Separation Name MappedCSA sep_proc_name load] HiVal Lookup] setcolorspace_opt } ifelse }{ [/Indexed MappedCSA HiVal [ currentdict /Names known { Lookup dup type /stringtype eq {/exch cvx CSDBase /CSD get_res /Names get length dup /mul cvx exch /getinterval cvx {255 div} /forall cvx} {/exec cvx}ifelse /TintTransform load /exec cvx }{ Lookup dup type /stringtype eq {/exch cvx /get cvx 255 /div cvx} {/exec cvx}ifelse CSDBase /CSD get_res /MappedCSA get sep_proc_name exch pop /load cvx /exec cvx } ifelse ]cvx ]setcolorspace_opt }ifelse } ifelse end set_crd } { CSA map_csa AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{ pop [/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval {} forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end } bind }{ Lookup }ifelse }ifelse ] setcolorspace_opt set_crd }ifelse }ifelse end }def /setindexedcolor { AGMCORE_host_sep { /indexed_colorspace_dict AGMCORE_gget dup /CSDBase known { begin CSDBase /CSD get_res begin currentdict /Names known{ map_indexed_devn devn } { Lookup 1 3 -1 roll map_index sep }ifelse end end }{ /Lookup get 4 3 -1 roll map_index setcmykcolor } ifelse }{ level3 not AGMCORE_in_rip_sep and /indexed_colorspace_dict AGMCORE_gget /CSDBase known and { /indexed_colorspace_dict AGMCORE_gget /CSDBase get /CSD get_res begin map_indexed_devn devn end } { setcolor } ifelse }ifelse } def /ignoreimagedata { currentoverprint not{ gsave dup clonedict begin 1 setgray /Decode [0 1] def /DataSource def /MultipleDataSources false def /BitsPerComponent 8 def currentdict end systemdict /image get exec grestore }if consumeimagedata }def /add_res { dup /CSD eq { pop //Adobe_AGM_Core begin /AGMCORE_CSD_cache load 3 1 roll put end }{ defineresource pop } ifelse }def /del_res { { aload pop exch dup /CSD eq { pop { //Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef }forall }{ exch { 1 index undefineresource }forall pop } ifelse } forall }def /get_res { dup /CSD eq { pop dup type dup /nametype eq exch /stringtype eq or { AGMCORE_CSD_cache exch get } if }{ findresource } ifelse }def /get_csa_by_name { dup type dup /nametype eq exch /stringtype eq or{ /CSA get_res } if }def /pattern_buf_init { /count get 0 0 put } def /pattern_buf_next { dup /count get dup 0 get dup 3 1 roll 1 add 0 xpt get } def /cachepattern_compress { 5 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def /string_size 16000 def /readbuffer string_size string def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal /LZWFilter { exch dup length 0 eq { pop }{ patarray dup length 1 sub 3 -1 roll put } ifelse {string_size}{0}ifelse string } /LZWEncode filter def { ReadFilter readbuffer readstring exch LZWFilter exch writestring not {exit} if } loop LZWFilter closefile patarray end }def /cachepattern { 2 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal { ReadFilter 16000 string readstring exch patarray dup length 1 sub 3 -1 roll put not {exit} if } loop patarray dup dup length 1 sub () put end }def /wrap_paintproc { statusdict /currentfilenameextend known{ clonedict begin /OldPaintProc /PaintProc load def /PaintProc { mark exch dup /OldPaintProc get stopped {closefile restore end} if cleartomark } def end } {pop} ifelse } def /make_pattern { exch clonedict exch dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform exch 3 index /XStep get 1 index exch 2 copy div cvi mul sub sub exch 3 index /YStep get 1 index exch 2 copy div cvi mul sub sub matrix translate exch matrix concatmatrix 1 index begin BBox 0 get XStep div cvi XStep mul /xshift exch neg def BBox 1 get YStep div cvi YStep mul /yshift exch neg def BBox 0 get xshift add BBox 1 get yshift add BBox 2 get xshift add BBox 3 get yshift add 4 array astore /BBox exch def [ xshift yshift /translate load null /exec load ] dup 3 /PaintProc load put cvx /PaintProc exch def end 1 index dup /ID get exch /Pattern add_res gsave 0 setgray makepattern grestore }def /set_pattern { dup /PatternType get 1 eq{ dup /PaintType get 1 eq{ currentoverprint sop [/DeviceGray] setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{ pop }{ setcolorspace }ifelse }def /updatecolorrendering { currentcolorrendering/RenderingIntent known{ currentcolorrendering/RenderingIntent get }{null}ifelse Intent ne { Intent /ColorRendering {findresource} stopped { pop pop systemdict /findcolorrendering known { Intent findcolorrendering pop /ColorRendering findresource true } {false} ifelse } {true} ifelse { dup begin currentdict /TransformPQR known { currentdict /TransformPQR get aload pop 3 {{} eq 3 1 roll} repeat or or } {true} ifelse currentdict /MatrixPQR known { currentdict /MatrixPQR get aload pop 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq and and and and and and and and } {true} ifelse end or { clonedict begin /TransformPQR [ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add} bind {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add} bind {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add} bind ] def /MatrixPQR [ 0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] def /RangePQR [-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392] def currentdict end } if setcolorrendering_opt } if }if } def /set_crd { AGMCORE_host_sep not level2 and{ currentdict /ColorRendering known{ ColorRendering /ColorRendering {findresource} stopped not {setcolorrendering_opt} if }{ currentdict/Intent known{ updatecolorrendering }if }ifelse currentcolorspace dup type /arraytype eq {0 get}if /DeviceRGB eq { currentdict/UCR known {/UCR}{/AGMCORE_currentucr}ifelse load setundercolorremoval currentdict/BG known {/BG}{/AGMCORE_currentbg}ifelse load setblackgeneration }if }if }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ clonedict begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /cpaint_gcomp { convert_to_process //Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not { (%end_cpaint_gcomp) flushinput }if }def /cpaint_gsep { //Adobe_AGM_Core/AGMCORE_ConvertToProcess get { (%end_cpaint_gsep) flushinput }if }def /cpaint_gend { newpath }def /set_spot_alias_ary { dup inherit_aliases //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf }def /set_spot_normalization_ary { dup inherit_aliases dup length /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add} if array //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf /AGMCORE_SpotAliasAry where{ pop AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval AGMCORE_SpotAliasAry length }{0} ifelse AGMCORE_SpotAliasAry2 3 1 roll exch putinterval true set_spot_alias }def /inherit_aliases { {dup /Name get map_alias {/CSD put}{pop} ifelse} forall }def /set_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias 3 -1 roll put }{ pop }ifelse }def /current_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias get }{ false }ifelse }def /map_alias { /AGMCORE_SpotAliasAry2 where{ begin /AGMCORE_name xdf false AGMCORE_SpotAliasAry2{ dup/Name get AGMCORE_name eq{ /CSD get /CSD get_res exch pop true exit }{ pop }ifelse }forall end }{ pop false }ifelse }bdf /spot_alias { true set_spot_alias /AGMCORE_&setcustomcolor AGMCORE_key_known not { //Adobe_AGM_Core/AGMCORE_&setcustomcolor /setcustomcolor load put } if /customcolor_tint 1 AGMCORE_gput //Adobe_AGM_Core begin /setcustomcolor { currentdict/TintProc known currentdict/CSA known and 3 1 roll //Adobe_AGM_Core begin dup /customcolor_tint exch AGMCORE_gput 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not current_spot_alias and{1 index 4 get map_alias}{false}ifelse { false set_spot_alias 4 -1 roll{ exch pop /sep_tint AGMCORE_gget exch }if mark 3 1 roll setsepcolorspace counttomark 0 ne{ setsepcolor }if pop pop true set_spot_alias }{ AGMCORE_&setcustomcolor pop }ifelse end }bdf end }def /begin_feature { Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if }def /end_feature { 2 dict begin /spd /setpagedevice load def /setpagedevice { get_gstate spd set_gstate } def stopped{$error/newerror false put}if end count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if }def /set_negative { //Adobe_AGM_Core begin /AGMCORE_inverting exch def level2{ currentpagedevice/NegativePrint known{ currentpagedevice/NegativePrint get //Adobe_AGM_Core/AGMCORE_inverting get ne{ true begin_feature true{ << /NegativePrint //Adobe_AGM_Core/AGMCORE_inverting get >> setpagedevice }end_feature }if /AGMCORE_inverting false def }if }if AGMCORE_inverting{ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer gsave newpath clippath 1 /setseparationgray where{pop setseparationgray}{setgray}ifelse /AGMIRS_&fill where {pop AGMIRS_&fill}{fill} ifelse grestore }if end }def /lw_save_restore_override { /md where { pop md begin initializepage /initializepage{}def /pmSVsetup{} def /endp{}def /pse{}def /psb{}def /orig_showpage where {pop} {/orig_showpage /showpage load def} ifelse /showpage {orig_showpage gR} def end }if }def /pscript_showpage_override { /NTPSOct95 where { begin showpage save /showpage /restore load def /restore {exch pop}def end }if }def /driver_media_override { /md where { pop md /initializepage known { md /initializepage {} put } if md /rC known { md /rC {4{pop}repeat} put } if }if /mysetup where { /mysetup [1 0 0 1 0 0] put }if Adobe_AGM_Core /AGMCORE_Default_CTM matrix currentmatrix put level2 {Adobe_AGM_Core /AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if }def /driver_check_media_override { /PrepsDict where {pop} { Adobe_AGM_Core /AGMCORE_Default_CTM get matrix currentmatrix ne Adobe_AGM_Core /AGMCORE_Default_PageSize get type /arraytype eq { Adobe_AGM_Core /AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and Adobe_AGM_Core /AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and }if { Adobe_AGM_Core /AGMCORE_Default_CTM get setmatrix }if }ifelse }def AGMCORE_err_strings begin /AGMCORE_bad_environ (Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. ) def /AGMCORE_color_space_onhost_seps (This job contains colors that will not separate with on-host methods. ) def /AGMCORE_invalid_color_space (This job contains an invalid color space. ) def end /set_def_ht { AGMCORE_def_ht sethalftone } def end systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 2.25 0 %%Copyright: Copyright 1997-2005 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.25 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict /Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined { /Adobe_CoolType_Core userdict /Adobe_CoolType_Core get def } if userdict /Adobe_CoolType_Core 60 dict dup begin put /Adobe_CoolType_Version 2.25 def /Level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if def Level2? not { /currentglobal false def /setglobal /pop load def /gcheck { pop false } bind def /currentpacking false def /setpacking /pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict /Adobe_CoolType_Data 2 copy known not { 2 copy 10 dict put } if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup /args 7 index 5 add array put put get } { get dup /args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch /args exch put } { pop } ifelse } ifelse begin count 1 sub 1 index lt { pop count } if dup /argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } { pop } ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end } bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt { { pop } repeat } { pop } ifelse args 0 argCount getinterval {} forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse } bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end } bind def /@Raise { exch cvx exch errordict exch get exec stop } bind def /@ReRaise { cvx $error /errorname get errordict exch get exec stop } bind def /@Stopped { 0 @#Stopped } bind def /@#Stopped { @_SaveStackLevels stopped { @_RestoreStackLevels true } { @_PopStackLevels false } ifelse } bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end } bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch /@shouldNotDisappearDict exch put begin count @_SaveStackLevels { (*) { pop stop } 128 string /Category resourceforall } stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data /@shouldNotDisappearDict get ne dup { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq { pop exit } if } loop } if } if end } { false } ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark { /steveamerige /Category resourcestatus } stopped { cleartomark true } { cleartomark currentglobal not } ifelse } { false } ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse end } bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad /ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup /CMap CTHasResourceStatusBug { CTResourceStatus } { resourcestatus } ifelse { pop dup 0 eq exch 1 eq or { dup /CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug { exit } { stop } ifelse } ifelse } { pop } ifelse } 128 string /CMap resourceforall } stopped { cleartomark } stopped pop setglobal } if } if } bind def /doc_setup { Adobe_CoolType_Core begin CTWorkAroundBugs /mov /moveto load def /nfnt /newencodedfont load def /mfnt /makefont load def /sfnt /setfont load def /ufnt /undefinefont load def /chp /charpath load def /awsh /awidthshow load def /wsh /widthshow load def /ash /ashow load def /sh /show load def end currentglobal false setglobal userdict /Adobe_CoolType_Data 2 copy known not { 2 copy 10 dict put } if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal } bind def /doc_trailer { currentdict Adobe_CoolType_Core eq { end } if } bind def /page_setup { Adobe_CoolType_Core begin } bind def /page_trailer { end } bind def /unload { systemdict /languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known { undef } { pop pop } ifelse } if } if } bind def /ndf { 1 index where { pop pop pop } { dup xcheck { bind } if def } ifelse } def /findfont systemdict begin userdict begin /globaldict where { /globaldict get begin } if dup where pop exch get /globaldict where { pop end } if end end Adobe_CoolType_Core_Defined { /systemfindfont exch def } { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont { pop } ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq { 0 } { dup length } ifelse 2 index length add 1 add dict begin exch { 1 index /FID eq { pop pop } { def } ifelse } forall dup null eq { pop } { { def } forall } ifelse currentdict end exch setglobal } bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal } bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } { FontDirectory 3 index known { FontDirectory 3 index get /FontReferenced known } { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } ifelse } ifelse dup { 3 index findfont /FontReferenced get 2 index dup type /nametype eq {findfont} if ne { pop false } if } if { pop 1 index findfont /Encoding get exch 0 1 255 { 2 copy get 3 index 3 1 roll put } for pop pop pop } { dup type /nametype eq { findfont } if dup dup maxlength 2 add dict begin exch { 1 index /FID ne {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type /stringtype eq { cvn } if def dup currentdict end definefont def } ifelse } bind def /SetSubstituteStrategy { $SubstituteFont begin dup type /dicttype ne { 0 dict } if currentdict /$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin { def } forall { def } forall currentdict dup /$Init known { dup /$Init get exec } if end /$Strategy exch def } { pop pop pop } ifelse } { pop pop } ifelse end } bind def /scff { $SubstituteFont begin dup type /stringtype eq { dup length exch } { null } ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse def end { findfont } @Stopped { dup length 8 add string exch 1 index 0 (BadFont:) putinterval 1 index exch 8 exch dup length string cvs putinterval cvn { findfont } @Stopped { pop /Courier findfont } if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end } bind def /isWidthsOnlyFont { dup /WidthsOnly known { pop pop true } { dup /FDepVector known { /FDepVector get { isWidthsOnlyFont dup { exit } if } forall } { dup /FDArray known { /FDArray get { isWidthsOnlyFont dup { exit } if } forall } { pop } ifelse } ifelse } ifelse } bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 4 index def /$doSmartSub false def end 3 index currentglobal false setglobal exch /CompatibleFonts /ProcSet resourcestatus { pop pop /CompatibleFonts /ProcSet findresource begin dup /CompatibleFont currentexception 1 index /CompatibleFont true setexception 1 index /Font resourcestatus { pop pop 3 2 roll setglobal end exch dup findfont /CompatibleFonts /ProcSet findresource begin 3 1 roll exch /CompatibleFont exch setexception end } { 3 2 roll setglobal 1 index exch /CompatibleFont exch setexception end findfont $SubstituteFont /$substituteFound true put } ifelse } { exch setglobal findfont } ifelse $SubstituteFont begin $substituteFound { false (%%[Using embedded font ) print 5 index ?str1 cvs print ( to avoid the font substitution problem noted earlier.]%%\n) print } { dup /FontName known { dup /FontName get $fontname eq 1 index /DistillerFauxFont known not and /currentdistillerparams where { pop false 2 index isWidthsOnlyFont not and } if } { false } ifelse } ifelse exch pop /$doSmartSub true def end { exch pop exch pop exch 2 dict dup /Found 3 index put exch findfont exch } { exch exec exch dup findfont dup /FontType get 3 eq { exch ?str1 cvs dup length 1 sub -1 0 { exch dup 2 index get 42 eq { exch 0 exch getinterval cvn 4 1 roll 3 2 roll pop exit } {exch pop} ifelse }for } { exch pop } ifelse 2 dict dup /Downloaded 6 5 roll put } ifelse dup /FontName 4 index put copyfont definefont pop } bind def /?str2 256 string def /?add { 1 index type /integertype eq { exch true 4 2 } { false 3 1 } ifelse roll 1 index findfont dup /Widths known { Adobe_CoolType_Data /AddWidths? true put gsave dup 1000 scalefont setfont } if /Downloaded known { exec exch { exch ?str2 cvs exch findfont /Downloaded get 1 dict begin /Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3 index putinterval exch length 1 add 1 index add ?str1 2 index (*) putinterval ?str1 0 2 index getinterval cvn findfont ?str1 3 index (+) putinterval 2 dict dup /FontName ?str1 0 6 index getinterval cvn put dup /Downloaded Downloaded put end copyfont dup /FontName get exch definefont pop pop pop } { pop } ifelse } { pop exch { findfont dup /Found get dup length exch ?str1 cvs pop ?str1 1 index (+) putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index exch /FontName exch put copyfont dup /FontName get exch definefont pop } { pop } ifelse } ifelse Adobe_CoolType_Data /AddWidths? get { grestore Adobe_CoolType_Data /AddWidths? false put } if } bind def /?sh { currentfont /Downloaded known { exch } if pop } bind def /?chp { currentfont /Downloaded known { pop } { false chp } ifelse } bind def /?mv { currentfont /Downloaded known { moveto pop pop } { pop pop moveto } ifelse } bind def setpacking userdict /$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known { get } { pop pop { pop /Courier } bind } ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams /CannotEmbedFontPolicy 2 copy known { get /Error eq } { pop pop false } ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup /WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type /stringtype eq { cvn } if def /FontType 3 def /FontMatrix [ .001 0 0 .001 0 0 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /FontBBox [ 0 0 0 0 ] def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth /y exch def /x exch def x y setcharwidth $SubstituteFont /$Strategy get /$Underprint get exec 0 0 moveto cc show x y moveto end end } bind def currentdict end exch setglobal } bind def /$GetaTint 2 dict dup begin /$BuildFont { dup /WMode known { dup /WMode get } { 0 } ifelse /$WMode exch def $fontname exch dup /FontName known { dup /FontName get dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse exch Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index /FontName get known { pop Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index get null copyfont } { $deepcopyfont } ifelse exch 1 index exch /FontBasedOn exch put dup /FontName $fontname dup type /stringtype eq { cvn } if put definefont Adobe_CoolType_Data /InVMDeepCopiedFonts get begin dup /FontBasedOn get 1 index def end } bind def /$Underprint { gsave x abs y abs gt { /y 1000 def } { /x -1000 def 500 120 translate } ifelse Level2? { [ /Separation (All) /DeviceCMYK { 0 0 0 1 pop } ] setcolorspace } { 0 setgray } ifelse 10 setlinewidth x .8 mul [ 7 3 ] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? { .2 setcolor } { .8 setgray } ifelse fill grestore stroke } forall pop grestore } bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict /FontName known { FontName dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse def /FontName $fontname dup type /stringtype eq { cvn } if def /currentdistillerparams where { pop } { /FontInfo currentdict /FontInfo known { FontInfo null copyfont } { 2 dict } ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [ 1 0 ItalicAngle dup sin exch cos div 1 0 0 ] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal } bind def end def /$None 1 dict dup begin /$BuildFont {} bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type /stringtype eq { cvn } if dup /$fontname exch def $sname null eq { $str cvs dup length $slen sub $slen getinterval } { pop $sname } ifelse $fontpat dup 0 (fonts/*) putinterval exch 7 exch putinterval /$match false def $SubstituteFont /$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval { /$match exch def exit } $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont /$dstack get { exch { 1 index eq { pop false } { true } ifelse } { begin false } ifelse } forall pop } if cleartomark /$slen 0 def $match false ne { $match (fonts/) anchorsearch pop pop cvn } { /Courier } ifelse } bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [ /Ryumin-Light /HeiseiMin-W3 /GothicBBB-Medium /HeiseiKakuGo-W5 /HeiseiMaruGo-W4 /Jun101-Light ] def /Korea1 [ /HYSMyeongJo-Medium /HYGoThic-Medium ] def /GB1 [ /STSong-Light /STHeiti-Regular ] def /CNS1 [ /MKai-Medium /MHei-Medium ] def end def end def /$cmapname null def /$deepcopyfont { dup /FontType get 0 eq { 1 dict dup /FontName /copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup /FontName /copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } { $Strategies /$Type3Underprint get exec } ifelse } bind def /$buildfontname { dup /CIDFont findresource /CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index (-) putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy (-) putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch { pop pop 3 2 roll putinterval cvn /$cmapname exch def } { pop pop pop pop pop } ifelse length $str 1 index (-) putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn } bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known { get } { pop pop [] } ifelse } { pop pop [] } ifelse false exch { dup /CIDFont resourcestatus { pop pop save 1 index /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get } { false } ifelse exch pop exch restore { pop } { exch pop true exit } ifelse } { pop } ifelse } forall { $str cvs $buildfontname } { false (*) { save exch dup /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get not } { true } ifelse exch /CIDSystemInfo get dup /Registry get Registry eq exch /Ordering get Ordering eq and and { exch restore exch pop true exit } { pop restore } ifelse } $str /CIDFont resourceforall { $buildfontname } { $fontname $findfontByEnum } ifelse } ifelse } bind def end end currentdict /$error known currentdict /languagelevel known and dup { pop $error /SubstituteFont known } if dup { $error } { Adobe_CoolType_Core } ifelse begin { /SubstituteFont /CMap /Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq { dup $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse Adobe_CoolType_Data /InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } { FontDirectory 1 index known { exch pop true exit } { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } ifelse } ifelse } forall } { pop pop false } ifelse { exch pop exch pop } { dup /CMap resourcestatus { pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS } { 128 string cvs dup (-) search { 3 1 roll search { 3 1 roll pop { dup cvi } stopped { pop pop pop pop pop $findfontByEnum } { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup /CMap resourcestatus { pop pop 4 1 roll pop pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS true exit } { pop } ifelse } for dup type /booleantype eq { pop } { pop pop pop $findfontByEnum } ifelse } ifelse } { pop pop pop $findfontByEnum } ifelse } { pop pop $findfontByEnum } ifelse } ifelse } ifelse } { //SubstituteFont exec } ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $findfontByEnum } { //SubstituteFont exec } ifelse end } } ifelse bind readonly def Adobe_CoolType_Core /scfindfont /systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup /FontName known { dup /FontName get dup 3 index ne } { /noname true } ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def /$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin { 1 index /FID eq { pop pop } { def } ifelse } forall currentdict end definefont dup /FontName known { dup /FontName get } { null } ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using ) print dup /FontName known { dup /FontName get } { (unspecified font) } ifelse $str cvs print (.\n) print } if } { exch pop } ifelse } { exch pop } ifelse end } bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core /findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type /stringtype ne { $str cvs } if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne { dup $inVMIndex $AddInVMFont } if $doSmartSub { currentdict /$Strategy known { $Strategy /$BuildFont get exec } if } if } if end } bind put } if } if end /$AddInVMFont { exch /FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data /InVMFontsByCMap get exch $DictAdd } { pop pop pop } ifelse } bind def /$DictAdd { 2 copy known not { 2 copy 4 index length dict put } if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get { forall } def 2 copy currentdict put end } { pop } ifelse } if get begin { def } forall end } bind def end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.21 0 %%Copyright: Copyright 1987-2005 Adobe Systems Incorporated. %%Version: 1.21 0 systemdict /languagelevel known dup { currentglobal false setglobal } { false } ifelse exch userdict /Adobe_CoolType_Utility 2 copy known { 2 copy get dup maxlength 27 add dict copy } { 27 dict } ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch /eCCRun known not ct_Level2? and or def ct_Level2? { globaldict begin currentglobal true setglobal } if /ct_AddStdCIDMap ct_Level2? { { mark Adobe_CoolType_Utility /@recognizeCIDFont currentdict put { ((Hex) 57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77) 0 () /SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility /@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq { 1 index length exch sub 1 sub { end } repeat exit } { pop } ifelse } for pop pop Adobe_CoolType_Utility /@eexecStartData get eexec } { cleartomark } ifelse } } { { Adobe_CoolType_Utility /@eexecStartData get eexec } } ifelse bind def userdict /cid_extensions known dup { cid_extensions /cid_UpdateDB known and } if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type /stringtype eq { exch cvn exch } if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq { pop pop cid_UpdateDB } { exch 1 index /Created get eq { exch pop exch pop } { pop cid_UpdateDB } ifelse } ifelse } { pop cid_UpdateDB } ifelse } { cid_UpdateDB } ifelse end } bind def end } if ct_Level2? { end setglobal } if /ct_UseNativeCapability? systemdict /composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring () def /usewidths? true def end def ct_Level2? { setglobal } { pop } ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict /languagelevel known { pop /CIDFont findresource /GlyphDirectory get } { 1 index /CIDFont findresource /GlyphDirectory get dup type /dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + } def /+ { systemdict /languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } { 1 dict begin } ifelse /$ exch def systemdict /languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ? { $ begin } if } def /? { $ type /dicttype eq } def /| { userdict /Adobe_CoolType_Data known { Adobe_CoolType_Data /AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data /CC 3 index put ? { def } { $ 3 1 roll put } ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont /Widths get exch CC exch put } { ? { def } { $ 3 1 roll put } ifelse } ifelse end end } { ? { def } { $ 3 1 roll put } ifelse } ifelse } { ? { def } { $ 3 1 roll put } ifelse } ifelse } def /! { ? { end } if systemdict /languagelevel known { gvm setglobal } if end } def /: { string currentfile exch readstring pop } executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx [.001 0 0 .001 0 0] def /ct_1000Mtx [1000 0 0 1000 0 0] def /ct_raise {exch cvx exch errordict exch get exec stop} bind def /ct_reraise { cvx $error /errorname get (Error: ) print dup ( ) cvs print errordict exch get exec stop } bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop } bind def /ct_GetInterval { Adobe_CoolType_Utility /ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt { dup string /dst_string exch def } if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add /dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add /dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt { arrayIndex get } { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end } bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal { /unknowninstancename /Category resourcestatus } stopped { cleartomark setglobal true } { cleartomark currentglobal not exch setglobal } ifelse { { mark 3 1 roll /Category findresource begin ct_Vars /vm currentglobal put ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse ct_Vars /vm get setglobal end } } { { resourcestatus } } ifelse bind def /CIDFont /Category ct_resourcestatus { pop pop } { currentglobal true setglobal /Generic /Category findresource dup length dict copy dup /InstanceType /dicttype put /CIDFont exch /Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering (Identity) def /Supplement 0 def end def /CMapName /Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } { pop pop /defineresource /undefined ct_raise } ifelse } bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known { get 3 1 roll pop pop} { pop pop /findresource /undefinedresource ct_raise } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /ct_resourcestatus /resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup (Binary) eq { pop null currentfile ct_Level2? { { cid_BYTE_COUNT () /SubFileDecode filter } stopped { pop pop pop } if } if /readstring load exit } if dup (Hex) eq { pop currentfile ct_Level2? { { null exch /ASCIIHexDecode filter /readstring } stopped { pop exch pop (>) exch /readhexstring } if } { (>) exch /readhexstring } ifelse load exit } if /StartData /typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch /GlyphData exch put 2 index null eq { pop pop pop } { pop /readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse } bind def /StartData { mark { currentdict dup /FDArray get 0 get /FontMatrix get 0 get 0.001 eq { dup /CDevProc known not { /CDevProc 1183615869 internaldict /stdCDevProc 2 copy known { get } { pop pop { pop pop pop pop pop 0 -1000 7 index 2 div 880 } } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp /cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul } def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup /cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup /SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup /SubrMapOffset undef dup /SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } { pop } ifelse } forall } if cleartomark pop pop end CIDFontName currentdict /CIDFont defineresource pop end end } stopped { cleartomark /StartData ct_reraise } if } bind def currentdict end def /ct_saveCIDInit { /CIDInit /ProcSet ct_resourcestatus { true } { /CIDInitC /ProcSet ct_resourcestatus } ifelse { pop pop /CIDInit /ProcSet findresource ct_UseNativeCapability? { pop null } { /CIDInit ct_CIDInit /ProcSet defineresource pop } ifelse } { /CIDInit ct_CIDInit /ProcSet defineresource pop null } ifelse ct_Vars exch /ct_oldCIDInit exch put } bind def /ct_restoreCIDInit { ct_Vars /ct_oldCIDInit get dup null ne { /CIDInit exch /ProcSet defineresource pop } { pop } ifelse } bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility /ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge { pop 0 } if /cid exch def { GlyphDirectory cid 2 copy known { get } { pop pop nullstring } ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne { 0 FDBytes ct_cvnsi } { pop 0 } ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq { /charstring nullstring def exit } if /cid 0 def } ifelse } loop } def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto } def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont /Widths get cid 2 copy known { get exch pop aload pop } { pop pop stringwidth } ifelse } { stringwidth } ifelse setcharwidth 0 0 moveto } ifelse } def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known { get } { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup /FontMatrix 2 copy known { get } { pop pop ct_defaultFontMtx } ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont /Widths get def /CharStrings 1 dict dup /.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup /CharStrings get 1 index /Encoding get ct_dfCharCode get charstring put rootfont /WMode 2 copy known { get } { pop pop 0 } ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } { ct_str1 show } ifelse } def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup /FontMatrix get dup ct_defaultFontMtx ct_matrixeq not { ct_1000Mtx matrix concatmatrix concat } { pop } ifelse /Private get Adobe_CoolType_Utility /ct_Level2? get not { ct_dfDict /Private 3 -1 roll { put } 1183615869 internaldict /superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility /ct_Level2? get { 1 index } { 3 index /Private get mark 6 1 roll } ifelse dup /RunInt known { /RunInt get } { pop /CCRun } ifelse get exec Adobe_CoolType_Utility /ct_Level2? get not { cleartomark } if } bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility /ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped { stop } if end end end end } bind def /BaseFontNameStr (BF00) def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /BuildChar /ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString /ct_Type3ShowCharString load def /ct_dfSetCacheProc /ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup /lenIV 4 put def /CharStrings 1 dict dup /.notdef put def /PaintType 0 def /ct_ShowCharString /ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not { exit } if } for exch pop exch pop } bind def /ct_makeocf { 15 dict begin exch /WMode exch def exch /FontName exch def /FontType 0 def /FMapType 2 def dup /FontMatrix known { dup /FontMatrix get /FontMatrix exch def } { /FontMatrix matrix def } ifelse /bfCount 1 index /CIDCount get 256 idiv 1 add dup 256 gt { pop 256} if def /Encoding 256 array 0 1 bfCount 1 sub { 2 copy dup put pop } for bfCount 1 255 { 2 copy bfCount put pop } for def /FDepVector bfCount dup 256 lt { 1 add } if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont /FontBBox known { CIDFont /FontBBox get /FontBBox exch def } if CIDFont /CDevProc known { CIDFont /CDevProc get /CDevProc exch def } if currentdict end BaseFontNameStr 3 (0) putinterval 0 1 bfCount dup 256 eq { 1 sub } if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup /CIDFirstByte exch 256 mul def FontType 3 eq { /ct_FDDict 2 dict def } if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? { /Widths 1 index /CIDFont get /GlyphDirectory get length dict def } if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont /Widths get begin exch /CIDFont get /GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } { exch pop } ifelse } bind def /ct_ComposeFont { ct_UseNativeCapability? { 2 index /CMap ct_resourcestatus { pop pop exch pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch /WMode exch def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity)} ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def /ct_MakeIdentity { ct_UseNativeCapability? { 1 index /CMap ct_resourcestatus { pop pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity) } ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { exch pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def currentdict readonly pop end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict /ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge } bind def /AllocGlyphStorage { Is2015? { pop } { {string} forall } ifelse } bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix [1 0 0 1 0 0] def 4 array astore cvx /FontBBox exch def /sfnts } bind def /Type42DictEnd { currentdict dup /FontName get exch definefont end ct_T42Dict exch dup /FontName get exch put } bind def /RD {string currentfile exch readstring pop} executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop } ifelse } bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop } ifelse } bind def /T0AddT42Mtx2 { /CIDFont findresource /Metrics2 get begin def end }bind def end %%EndResource Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Image 75 dict dup begin put /Adobe_AGM_Image_Id /Adobe_AGM_Image_1.0_0 def /nd{ null def }bind def /AGMIMG_&image nd /AGMIMG_&colorimage nd /AGMIMG_&imagemask nd /AGMIMG_mbuf () def /AGMIMG_ybuf () def /AGMIMG_kbuf () def /AGMIMG_c 0 def /AGMIMG_m 0 def /AGMIMG_y 0 def /AGMIMG_k 0 def /AGMIMG_tmp nd /AGMIMG_imagestring0 nd /AGMIMG_imagestring1 nd /AGMIMG_imagestring2 nd /AGMIMG_imagestring3 nd /AGMIMG_imagestring4 nd /AGMIMG_imagestring5 nd /AGMIMG_cnt nd /AGMIMG_fsave nd /AGMIMG_colorAry nd /AGMIMG_override nd /AGMIMG_name nd /AGMIMG_maskSource nd /AGMIMG_flushfilters nd /invert_image_samples nd /knockout_image_samples nd /img nd /sepimg nd /devnimg nd /idximg nd /doc_setup { Adobe_AGM_Core begin Adobe_AGM_Image begin /AGMIMG_&image systemdict/image get def /AGMIMG_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMIMG_&colorimage /colorimage ldf }if end end }def /page_setup { Adobe_AGM_Image begin /AGMIMG_ccimage_exists {/customcolorimage where { pop /Adobe_AGM_OnHost_Seps where { pop false }{ /Adobe_AGM_InRip_Seps where { pop false }{ true }ifelse }ifelse }{ false }ifelse }bdf level2{ /invert_image_samples { Adobe_AGM_Image/AGMIMG_tmp Decode length ddf /Decode [ Decode 1 get Decode 0 get] def }def /knockout_image_samples { Operator/imagemask ne{ /Decode [1 1] def }if }def }{ /invert_image_samples { {1 exch sub} currenttransfer addprocs settransfer }def /knockout_image_samples { { pop 1 } currenttransfer addprocs settransfer }def }ifelse /img /imageormask ldf /sepimg /sep_imageormask ldf /devnimg /devn_imageormask ldf /idximg /indexed_imageormask ldf /_ctype 7 def currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and{ bind }if def }forall }def /page_trailer { end }def /doc_trailer { }def /AGMIMG_flushfilters { dup type /arraytype ne {1 array astore}if aload length { dup type /filetype eq { dup status 1 index currentfile ne and {dup flushfile closefile} {pop} ifelse }{pop}ifelse } repeat }def /imageormask_sys { begin save mark level2{ currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMIMG_&imagemask }{ BitsPerComponent ImageMatrix /DataSource load AGMIMG_&image }ifelse }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if cleartomark restore end }def /overprint_plate { currentoverprint { 0 get dup type /nametype eq { dup /DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false exch { AGMOHS_sepink eq or } forall not } ifelse }{ pop false }ifelse }def /process_mask_L3 { dup begin /ImageType 1 def end 4 dict begin /DataDict exch def /ImageType 3 def /InterleaveType 3 def /MaskDict 9 dict begin /ImageType 1 def /Width DataDict dup /MaskWidth known {/MaskWidth}{/Width} ifelse get def /Height DataDict dup /MaskHeight known {/MaskHeight}{/Height} ifelse get def /ImageMatrix [Width 0 0 Height neg 0 Height] def /NComponents 1 def /BitsPerComponent 1 def /Decode [0 1] def /DataSource AGMIMG_maskSource def currentdict end def currentdict end }def /use_mask { dup type /dicttype eq { dup /Mask known { dup /Mask get { level3 {true} { dup /MaskWidth known {dup /MaskWidth get 1 index /Width get eq}{true}ifelse exch dup /MaskHeight known {dup /MaskHeight get 1 index /Height get eq}{true}ifelse 3 -1 roll and } ifelse } {false} ifelse } {false} ifelse } {false} ifelse }def /make_line_source { begin MultipleDataSources { [ Decode length 2 div cvi {Width string} repeat ] }{ Width Decode length 2 div mul cvi string }ifelse end }def /datasource_to_str { exch dup type dup /filetype eq { pop exch readstring }{ /arraytype eq { exec exch copy }{ pop }ifelse }ifelse pop }def /masked_image_simulation { 3 dict begin dup make_line_source /line_source xdf /mask_source AGMIMG_maskSource /LZWDecode filter def dup /Width get 8 div ceiling cvi string /mask_str xdf begin gsave 0 1 translate 1 -1 Height div scale 1 1 Height { pop gsave MultipleDataSources { 0 1 DataSource length 1 sub { dup DataSource exch get exch line_source exch get datasource_to_str } for }{ DataSource line_source datasource_to_str } ifelse << /PatternType 1 /PaintProc [ /pop cvx << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1.0 sub 1 matrix scale 0.5 0 matrix translate matrix concatmatrix /MultipleDataSources MultipleDataSources /DataSource line_source /BitsPerComponent BitsPerComponent /Decode Decode >> /image cvx ] cvx /BBox [0 0 Width 1] /XStep Width /YStep 1 /PaintType 1 /TilingType 2 >> matrix makepattern set_pattern << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1 matrix scale /MultipleDataSources false /DataSource mask_source mask_str readstring pop /BitsPerComponent 1 /Decode [0 1] >> imagemask grestore 0 1 translate } for grestore end end }def /imageormask { begin SkipImageProc { currentdict consumeimagedata } { save mark level2 AGMCORE_host_sep not and{ currentdict Operator /imagemask eq DeviceN_PS2 not and { imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{ [/Separation /Black /DeviceGray {}] setcolorspace /Decode [ Decode 1 get Decode 0 get ] def }if use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and { Names convert_to_process not { 2 dict begin /imageDict xdf /names_index 0 def gsave imageDict write_image_file { Names { dup (None) ne { [/Separation 3 -1 roll /DeviceGray {1 exch sub}] setcolorspace Operator imageDict read_image_file names_index 0 eq {true setoverprint} if /names_index names_index 1 add def }{ pop } ifelse } forall close_image_file } if grestore end }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load /Adobe_AGM_OnHost_Seps where { pop imagemask }{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator /colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ AGMCORE_is_cmyk_sep{ MultipleDataSources{ /DataSource [ DataSource 0 get /exec cvx DataSource 1 get /exec cvx DataSource 2 get /exec cvx DataSource 3 get /exec cvx /AGMCORE_get_ink_data cvx ] cvx def }{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul /DataSource load filter_cmyk 0 () /SubFileDecode filter def }ifelse /Decode [ Decode 0 get Decode 1 get ] def /MultipleDataSources false def /NComponents 1 def /Operator /image def invert_image_samples 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }{ MultipleDataSources NComponents AGMIMG_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator /image eq{ AGMCORE_host_sep{ /DoImage true def HostSepColorImage{ invert_image_samples }{ AGMCORE_black_plate not Operator/imagemask ne and{ /DoImage false def currentdict ignoreimagedata }if }ifelse 1 AGMCORE_&setgray DoImage {currentdict imageormask_sys} if }{ use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ image }ifelse }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentcolorspace overprint_plate not{ knockout_unitsq }if }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin CSA map_csa begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_avoid_L2_sep_space{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def }if AGMIMG_ccimage_exists MappedCSA 0 get /DeviceCMYK eq and currentdict/Components known and Name () ne and Name (All) ne and Operator /image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load /exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for } /exec cvx ] cvx bind MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator /imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentdict/ImageMatrix get concat knockout_unitsq }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name (All) ne and{ level2{ Name AGMCORE_IsSeparationAProcessColor { Operator /imagemask eq{ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor }{ invert_image_samples }ifelse }{ [ /Separation Name [/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub } bind ] AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor }ifelse currentdict imageormask_sys }{ currentdict Operator /imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name (All) eq or Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentcolorspace 0 get /Separation ne{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentoverprint MappedCSA 0 get /DeviceCMYK eq and Name AGMCORE_IsSeparationAProcessColor not and Name inRip_spot_has_ink not and Name (All) ne and { imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end end }def /decode_image_sample { 4 1 roll exch dup 5 1 roll sub 2 4 -1 roll exp 1 sub div mul add } bdf /colorSpaceElemCnt { mark currentcolor counttomark dup 2 add 1 roll cleartomark } bdf /devn_sep_datasource { 1 dict begin /dataSource xdf [ 0 1 dataSource length 1 sub { dup currentdict /dataSource get /exch cvx /get cvx /exec cvx /exch cvx names_index /ne cvx [ /pop cvx ] cvx /if cvx } for ] cvx bind end } bdf /devn_alt_datasource { 11 dict begin /convProc xdf /origcolorSpaceElemCnt xdf /origMultipleDataSources xdf /origBitsPerComponent xdf /origDecode xdf /origDataSource xdf /dsCnt origMultipleDataSources {origDataSource length}{1}ifelse def /DataSource origMultipleDataSources { [ BitsPerComponent 8 idiv origDecode length 2 idiv mul string 0 1 origDecode length 2 idiv 1 sub { dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch origDataSource exch get 0 () /SubFileDecode filter BitsPerComponent 8 idiv string /readstring cvx /pop cvx /putinterval cvx }for ]bind cvx }{origDataSource}ifelse 0 () /SubFileDecode filter def [ origcolorSpaceElemCnt string 0 2 origDecode length 2 sub { dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div 1 BitsPerComponent 8 idiv {DataSource /read cvx /not cvx{0}/if cvx /mul cvx}repeat /mul cvx /add cvx }for /convProc load /exec cvx origcolorSpaceElemCnt 1 sub -1 0 { /dup cvx 2 /add cvx /index cvx 3 1 /roll cvx /exch cvx 255 /mul cvx /cvi cvx /put cvx }for ]bind cvx 0 () /SubFileDecode filter end } bdf /devn_imageormask { /devicen_colorspace_dict AGMCORE_gget begin CSA map_csa 2 dict begin dup /srcDataStrs [ 3 -1 roll begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi { dup 65535 gt {1 add 2 div cvi}{exit}ifelse } loop string } repeat end ] def /dstDataStr srcDataStrs 0 get length string def begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_producing_seps not { level3 not { Operator /imagemask ne { /DataSource [ [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse colorSpaceElemCnt /devicen_colorspace_dict AGMCORE_gget /TintTransform get devn_alt_datasource 1 /string cvx /readstring cvx /pop cvx] cvx colorSpaceElemCnt 1 sub{dup}repeat] def /MultipleDataSources true def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def } if }if currentdict imageormask }{ AGMCORE_host_sep{ Names convert_to_process { CSA get_csa_by_name 0 get /DeviceCMYK eq { /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse 4 /devicen_colorspace_dict AGMCORE_gget /TintTransform get devn_alt_datasource filter_cmyk 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode [1 0] def /DeviceGray setcolorspace currentdict imageormask_sys }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate { /DataSource DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse CSA get_csa_by_name 0 get /DeviceRGB eq{3}{1}ifelse /devicen_colorspace_dict AGMCORE_gget /TintTransform get devn_alt_datasource /MultipleDataSources false def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def currentdict imageormask_sys } { gsave knockout_unitsq grestore currentdict consumeimagedata } ifelse } ifelse } { /devicen_colorspace_dict AGMCORE_gget /names_index known { Operator/imagemask ne{ MultipleDataSources { /DataSource [ DataSource devn_sep_datasource /exec cvx ] cvx def /MultipleDataSources false def }{ /DataSource /DataSource load dstDataStr srcDataStrs 0 get filter_devn def } ifelse invert_image_samples } if currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentdict imageormask }ifelse }ifelse cleartomark restore }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end end end }def /imageormask_l2_overprint { currentdict currentcmykcolor add add add 0 eq{ currentdict consumeimagedata }{ level3{ currentcmykcolor /AGMIMG_k xdf /AGMIMG_y xdf /AGMIMG_m xdf /AGMIMG_c xdf Operator/imagemask eq{ [/DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK {}] setcolorspace AGMIMG_c 0 ne {AGMIMG_c} if AGMIMG_m 0 ne {AGMIMG_m} if AGMIMG_y 0 ne {AGMIMG_y} if AGMIMG_k 0 ne {AGMIMG_k} if setcolor }{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def [/Indexed [ /DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK { AGMIMG_k 0 eq {0} if AGMIMG_y 0 eq {0 exch} if AGMIMG_m 0 eq {0 3 1 roll} if AGMIMG_c 0 eq {0 4 1 roll} if } ] 255 { 255 div mark exch dup dup dup AGMIMG_k 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_y 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_m 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_c 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop counttomark 1 roll }{ pop }ifelse counttomark 1 add -1 roll pop } ] setcolorspace }ifelse imageormask_sys }{ write_image_file{ currentcmykcolor 0 ne{ [/Separation /Black /DeviceGray {}] setcolorspace gsave /Black [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Yellow /DeviceGray {}] setcolorspace gsave /Yellow [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Magenta /DeviceGray {}] setcolorspace gsave /Magenta [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Cyan /DeviceGray {}] setcolorspace gsave /Cyan [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore } if close_image_file }{ imageormask }ifelse }ifelse }ifelse } def /indexed_imageormask { begin save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget dup /CSA known { /CSA get get_csa_by_name }{ /Names get } ifelse overprint_plate not{ knockout_unitsq }if }{ Indexed_DeviceN { /devicen_colorspace_dict AGMCORE_gget /names_index known { indexed_image_lev2_sep }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata } ifelse }{ AGMCORE_is_cmyk_sep{ Operator /imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ level2{ Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget begin }{ /indexed_colorspace_dict AGMCORE_gget begin CSA get_csa_by_name 0 get /DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and { [/Indexed [/DeviceN [/Cyan /Magenta /Yellow /Black] /DeviceCMYK {}] HiVal Lookup] setcolorspace } if end } ifelse imageormask Indexed_DeviceN { end } if }{ Operator /imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin Indexed_DeviceN not { currentcolorspace dup 1 /DeviceGray put dup 3 currentcolorspace 2 get 1 add string 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub { dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put }for put setcolorspace } if currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse end end }def /OPIimage { dup type /dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /ImageType 1 def /Decode [0 1 def] currentdict end }if dup begin /NComponents 1 cdndf /MultipleDataSources false cdndf /SkipImageProc {false} cdndf /HostSepColorImage false cdndf /Decode [ 0 currentcolorspace 0 get /Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ] cdndf /Operator /image cdndf end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cachemask_level2 { 3 dict begin /LZWEncode filter /WriteFilter xdf /readBuffer 256 string def /ReadFilter currentfile 0 (%EndMask) /SubFileDecode filter /ASCII85Decode filter /RunLengthDecode filter def { ReadFilter readBuffer readstring exch WriteFilter exch writestring not {exit} if }loop WriteFilter closefile end }def /cachemask_level3 { currentfile << /Filter [ /SubFileDecode /ASCII85Decode /RunLengthDecode ] /DecodeParms [ << /EODCount 0 /EODString (%EndMask) >> null null ] /Intent 1 >> /ReusableStreamDecode filter }def /spot_alias { /mapto_sep_imageormask { dup type /dicttype ne{ 12 dict begin /ImageType 1 def /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def }{ begin }ifelse /Decode [/customcolor_tint AGMCORE_gget 0] def /Operator /image def /HostSepColorImage false def /SkipImageProc {false} def currentdict end sep_imageormask }bdf /customcolorimage { Adobe_AGM_Image/AGMIMG_colorAry xddf /customcolor_tint AGMCORE_gget << /Name AGMIMG_colorAry 4 get /CSA [ /DeviceCMYK ] /TintMethod /Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components [ AGMIMG_colorAry aload pop pop ] >> setsepcolorspace mapto_sep_imageormask }ndf Adobe_AGM_Image/AGMIMG_&customcolorimage /customcolorimage load put /customcolorimage { Adobe_AGM_Image/AGMIMG_override false put current_spot_alias{dup 4 get map_alias}{false}ifelse { false set_spot_alias /customcolor_tint AGMCORE_gget exch setsepcolorspace pop mapto_sep_imageormask true set_spot_alias }{ AGMIMG_&customcolorimage }ifelse }bdf }def /snap_to_device { 6 dict begin matrix currentmatrix dup 0 get 0 eq 1 index 3 get 0 eq and 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop { 1 1 dtransform 0 gt exch 0 gt /AGMIMG_xSign? exch def /AGMIMG_ySign? exch def 0 0 transform AGMIMG_ySign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch AGMIMG_xSign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch itransform /AGMIMG_llY exch def /AGMIMG_llX exch def 1 1 transform AGMIMG_ySign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch AGMIMG_xSign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch itransform /AGMIMG_urY exch def /AGMIMG_urX exch def [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY] concat }{ }ifelse end } def level2 not{ /colorbuf { 0 1 2 index length 1 sub{ dup 2 index exch get 255 exch sub 2 index 3 1 roll put }for }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Image begin /AGMIMG_mbuf 0 string def /AGMIMG_ybuf 0 string def /AGMIMG_kbuf 0 string def { colorbuf dup length AGMIMG_mbuf length ne { dup length dup dup /AGMIMG_mbuf exch string def /AGMIMG_ybuf exch string def /AGMIMG_kbuf exch string def } if dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop } addprocs {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf} true 4 colorimage end } def /sep_imageormask_lev1 { begin MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get } currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ {AGMIMG_k mul 1 exch sub} currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMIMG_k mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_y mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_m mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_c mul 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get /DeviceGray eq { {255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf {AGMIMG_c mul 1 exch sub} {AGMIMG_m mul 1 exch sub} {AGMIMG_y mul 1 exch sub} {AGMIMG_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceGray eq { {HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def }if end systemdict /setpacking known { setpacking } if %%EndResource currentdict Adobe_AGM_Utils eq {end} if %%EndProlog %%BeginSetup Adobe_AGM_Utils begin 2 2010 Adobe_AGM_Core/doc_setup get exec Adobe_CoolType_Core/doc_setup get exec Adobe_AGM_Image/doc_setup get exec currentdict Adobe_AGM_Utils eq {end} if %%EndSetup %%Page: (Page 1) 1 %%EndPageComments %%BeginPageSetup /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 + + + + application/postscript + + + Adobe Illustrator CS2 + 2009-02-09T11:31:58+01:00 + 2009-02-09T11:31:59+01:00 + 2009-02-09T11:31:59+01:00 + + + + 256 + 76 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgATAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWOecPzB8q+ UbcSaxdhJ3HKGyiHO4kH+Sg6Db7TUX3y7Dp55D6QgyAeO6z/AM5Qao0jLoujQRRA/BJeu8rEeJSI xBf+CObKHZg/iPyazkS6H/nJzzsJAZtO0x4+6pHcIfvMz/qyZ7Mx95/HwR4hZx5V/wCckPK+pSpb 65ayaPM23r19e3r7soV1r/q098xcvZ047xNshketW9zb3MEdxbSpPbyqHimjYOjKdwystQQc15BG xbFTArsVdiqTeZ/OHlzyxZC71u9S1javpRmrSSEdo41qzfdQd8txYZTNRCCQHkGuf85QRLI8ehaK ZEH2Li9k41/55R1/5OZsYdmfzj8ms5GNT/8AOS3n6Q/u7XToQK7LDKSR2rymP4ZcOzcfeUeIVSH/ AJya89LxEljpkgH2j6U6sfpE1PwxPZuPvP4+C+IXvXkLX77zB5R03Wb6KOG6vY2keKGvADmwWnIs fsgd81OfGITMR0bYmwn+Upad1RS7kKiglmJoAB1JOKvJPOv/ADkT5c0iV7PQYf0zdpUNcBuFqp9n oWk/2Ip/lZscPZ8pby2H2tZyPMNQ/wCchfzKunZre6t7BT0SC3jYDf8A4vExzOj2fiHMWw4yssv+ cgvzNt3DTX0F4B1Se2iAP/IlYj+OMuz8R6UvGXo/kz/nJHSNQmjs/MtoNMlc0F9CS9vU/wA6n44x 7/F70zDzdnEbxNsxk73ssUsU0SSxOskUih45EIZWVhUEEbEEZrCKbF2KuxV2KuxV2KuxV2KuxV2K uxV2KrZVdonWN/TkZSEkpXiSNjQ9aYhXyR5u/Lj8wT56bSrtJdX1XUCZoL5SSk0daGQs20YTowNA vypnQ4dRj8OxsA0GJt6FoX/OOOh2Fkt75w1gqQKyxQOkECE9mmlBLfQFzDn2jImoBkMfejv+VS/k XqJFpp+uR/W22T6tqMEshP8AqN6lfuyP5vUDcj7E8MWAfmD+RPmHyxBJqOnyfpfSY/ilkRCs8Q8Z IwWqo/mU/MDMvT66M9jsWEoU9N/5x68uebdM0GS81S5ePSb5RJp2lyCpXlv69TugcdFHXr4ZhdoZ ISlQ5jmWcAXrea5sdirEPzM/MSw8k6F9bcCfUrnlHp1mT9twN3em/ppUcvu75k6bTnLKunVjKVPk nX/MGr6/qk2p6tctc3cxqWY7KK7Ii9FUdgM6DHjEBQ5NBNpdk1RVvpWp3Kc7eznmT+aON2G/uAci Zgcyqr+gNd/6tt1/yJk/5px8SPeFp9l+RbFrDyVoVm6lJIbC2WVTUEP6Sl9j/lVzms8rnI+bkR5J 5lSXzN+dv5tXWt6hP5d0Wcx6HbMY7qWM0+tSKaNUj/dSnYDo3XwpvNFpBEcUvq+5pnK3kWbBgy/R /wAo/wAxtYtFu7HQ5jbuAUeZorfkDuGUTvGSD2IFMx56vFE0SkRKB8zfl/5y8sxpLrely2kEh4rP VJYuR6KZImdAfYnJY9RCf0lSCGPZch7r/wA46fmDdfXW8n6hKZLeRGl0lnNSjIOUkIr+yVqwHah8 c1XaOnFcY+LZjl0fQOahtdirsVdirsVdirsVcSACSaAbknFWJ3n5r/lzaXZtJ9etROp4sELSKCOx dAyD78yBpchF8JY8QZNZX1lf2sd3ZTx3NrMOUU8LB0YeIZSQcolEg0WStgV5N+cH5zxeWlfRNBdJ teYUnn2ZLUEeHRpfBTsOp8M2Gj0fH6pfT97XKdK/k/zrH5c/JSw8x61K93ckXDLzcmSeaa6lZE5t U1Pc9gPbBmw8ecxjt/YkGovnzzp5u8z+ZNWe612WQPXlDZtySKFHHJRHGegKkb9T1qc2+HFGAqLU TbHsuQ9k/Jr81Nb0i8sdG8wPLN5e1Jzb2F5OGIhlBA4pI32o6uoZa/DUHbvrdZpYyBlH6gzhKk+/ Mn8x9X8kfmuk1rWbTLiytzf6eTRJAGkXkv8ALIANm+g7ZVptPHLh352mUqL2Hy55j0jzFpEGraTO J7ScbHoyMPtI6/ssvcZrcmMwNHm2A2meQS+OPzV84S+afOd9eiQtYwObbT1/ZEERIDAf5Zq5+edJ pcPhwA6uPI2WKQQTXE8cECGSaZljijUVZmY0VQPEnMgmkPqr8s/yZ0Hyzp8F3qltFf8AmB1DzTSg SJAxH2IVNVHHpz6n5bZoNTrJTNDaLdGFJ235s/lxGxRtftVZDxK1bYjanTKvymX+aU8Qa/5W5+W3 /UwWv3t/TH8pl/mleMO/5W5+W3/UwWv3t/TH8pl/mleMJf8Amp54ttM/LS51fSrlZDqarbabcRnY m4Bq6nxWNXYe4yelwGWXhPTmiR2fI+dC0vXP+cefIlvrevT69qEQlsNIKi3jcVV7p91JqCCIlHL5 lc1/aGfhjwjmfuZwjb6azRtyF1bSrDVtNudNv4hPZ3cbRTxN3VvDwI6g9jkoSMTY5qQ+Ite0qTSN c1DSpG5vYXMtsXpTl6TlOVPelc6jHPiiD3uMUX5L1KXTPN2jX8R4tb3kDHtVfUAdT7MpIORzR4oE eSjm+3M5dyXYq7FXYq7FXYq7FWLfmV5b1/zJ5Wm0fRb2OxnuXUXEkpdVaAA846oGb4jSviKjL9Nk jCfFIWxkLDxDzL+V3lXyV5DuJPMt0JvN10xGmx2srFNmABVGVCV47uzL7DfNpj1U8uT0j0dWsxoM x/5xhXUh5c1czc/0ebpPqnL7PqBP33H/AISuY/adcQ76ZY2UfnR5u8yeWvKpuNDtHeScmKfUgAy2 imgDlevJiaKaUB69gcfR4Yzn6j8O9MzQfLeg20eq+ZdOtb+R2jv72GK6mLfGVmlCu3Jq/F8RNTm+ yHhiSOgaQ+m7r8l/KF1pFro9xq2oy6ZZMXtbRrmLhGxrUqPT/wAo5oxrJgmQAs+TdwBAfnH5A8nS eR1vbidNPvNGtkh0+/eheYRoFjt5OIrJz47UFVO42qDPR6ifiUNxJE4inhn5Y+WtC8yebrXS9avv qVrICUUbNPICOMCudkL+J60oNyM2mpyyhAmItriLL6V81/lT5M1+y0uxvBJZWmkJJHYQ2sixKqyc eWzK9fsDf780uLVTgSRvbcYgvN/z78kaTZ6FF5hOo3eoat60NmJLmWJx6PGRqUjjj3BHXM3QZyZc NABhOLz38pvOHmrQPM0FtoULX66g6xXGl78Zh/MP5GUVPPt32zL1eGE43LaurGJIL6o833ktl5R1 u9j+GW20+6mSh3DRwsw3+YzQ4RcwPMNx5PiDOocd6B+ROmQX/wCZem+uAyWiy3Sqe7xoeB/2LEN9 GYmulWIsoc31Zqt4LLS7y9OwtoJJqnp+7Qt/DNBAWQG4vhQkkkk1J6nOqcdrFXYq9a/NS4a3/K/8 vdOUcUmtXunQneoji4tQ9m9ZqZr9KLyzPmzlyDyXNgwfVv8Azj3YRWv5Z2c6CjX1xcXEh8WWQwf8 RhGaDtCV5T5N0OT0nMJm7FXxZ+Y8yTef/MToar+kbkA/6srKf1Z02mH7uPuDjy5pX5ftWu9e020U FmuLqCIKOpLyKtB9+TyGok+SA+ofzk/NGXyXp9vbaciS6zqAYwmQVSGNNjIy/tGpoo6da9KHR6PS +KbP0hunKniOmaT+cH5hxz6hBcXd/bI5R5ZbhYYOexKIhZE2rWirQZs5Tw4dtg10SgLjUPzO/L7V 0t7i6vNMulAkSFpfVgkSux41eGRfvyYjizRsAFG4fSv5W+eh5z8qx6nJGIb6GRra+iX7PqoA3JK7 8WVgfbpvSuaTVYPDnXRuibDxf8yvz38w6jqdxpnlm4bT9Khdoluodri4KmnMP1RSfshaHxPYbPTa GIFy3LXKbGNS8j/m7b6a2v6ha6gLaNDK9w8/OZEpVmeP1DMoA61Xbvl8c+EnhBCOEsp/Jj82vMsX may0DV7yXUdN1BxBE1wxklhlYUjKu1WKlqKVJoOoyjWaSPCZRFEJhLd63+bH5lQeSNFR4UWfWL0s lhbt9kcac5ZKb8VqNu5+kjXaXTeLLyDZKVPnDRLzQ/MfmSbVfP8ArU6REh5eEbyTTmv92pRSkSD2 6dFHcbqYlCNYw0jfm+q/I995ZvfLFnN5ZjEWiANHaII2jFI3Kts4DH4gak9TmgzxkJni+pvjVbJ1 cW8FxBJb3EaywSqUlicBlZWFCrA7EEZWDSXzB+cX5Oz+V531nRkaXy9K3xpuzWjMdlY9TGT9lvoP YneaPWcfpl9X3tMo0yO2/L2180fkNpd1pVnENdtRLcJIkarLP6U8sckTMBVqqPhr3Ayk6gw1BBPp Tw3F5P5o86a/5hSyttRl42mmQx21nZpVY4xEgTkVPV24/Ex/AbZsMWGMLI6sCbSEEqQQaEbgjqDl qHomhyebfzT1XQfL+oyG4g0kSfWNSofUW1cpyMr9GakYVD1JO9euYcxDAJSHXp5shZTD86vKqN+Z VponlzTUSW5s4BDaWsaoGcs4LEKAPsr8THsN8hosv7oykeqZjd7F+U/5V2fkvTTPdBLjX7pf9Kug KiNTQ+jET+yD1P7R+jNbq9Ucp2+lnGNMq812MmoeVtZsIgTJd2NzAgHUtJCyDx8coxSqYPmGR5Ph 7OocdlH5aeaY/LHnXTdXnr9UjcxXdAT+5mUxu1BuePLl9GUanFxwMeqYmi+wL62tda0S4to562mp WzxLcwlW/dzxleaE8lOzVHUZzsSYyvub+by6L/nGPyUAfW1LUnPYo8C/rhbM49pz7gw8MPEfzL8t aJ5a82XOi6RdS3cFqiCaSYqWErDkyVQKPhBHbrm002SU4cRDXIUWMxRSSypFGpaSRgqKOpJNAMvJ Q9w/5yI8vnTvLfk9UX93p0T6e7jpVYouA/5JNmr7PyXKfnu2THJ4Zm0a31F/zjlrtve+QzpgYC50 m4kR46/F6c7GZHp4Fmdf9jmi7RhWS+9uxnZ6pmAzSDz15ts/Knli81i5ZecSlLSFjvLcMCI4wOpq dzTooJ7ZdgxHJIRCJGg+K5ZZJpXllYvJIxd3PUsxqSc6YCnHeg/kR5ak1n8wLO4ZCbTSa3s79gyb Qivj6hB+QOYeuycOMjv2ZQG7P/8AnJHyZrF+1h5jsIXuba0ha3vkjHJolDl0koN+PxMGPbbMTs7N EXE9WWQdXl3kf81/Nvk2FrXTZIp9PdzI1lcoXj5kAFlKlHWoHZqe2Z2fSwybnmwEiHrHlr89/Jfm O8trbzbpEFndoSttfSqlxbqz0B+J15w8qDxHiRmvyaGcBcDbYJg83sd5e6dpmnS3lzLHbWFtGZJZ TRUVAK12/hmuETI0ObY8L1388/y4ivf9xvlCDUxCwMd1PHBb7o1VZKxTOKHcVAObWGhy1vKmozHc luu/85I67qel3tpY6JDapPE8UkzyPOY0lHDlssS1HLau1e2Tx9nRiQSUHIwj8otNk1D8yNAhReXp XS3LV6BbcGYn/hPvzK1cqxS9zGPN9ReZ/wAufJvmi7iu9d0/65cQR+lE/rTxBU5FqcYpEXqetM0W LUTxiomm8xBSb/lRP5Vf9WP/AKerz/qtln57L3/YEcAZjo2j6bo2mW+l6ZCLextV4QQgs3EElj8T lmO57nMaczI2eaQKRmRSpXa2rWswu1RrUo3rrIAUKU+LkDtSnXCLvZXznL+esXl7WbfTvKFmn+Dr BpQLSUEPOZpTK7q7VeMBmPpjw+0OgG5Gh443M+stPHXJkN9pn5IfmS36Sh1JdE1ucAzxl0tpGkP+ /IpR6ch/yozv3OUxlnw7VxRT6Sgh+QHkSzIuNU83qLL7VeVvb1X/AIyO8i/TTJ/n8h2Ed14B3t61 +aXkPyNoc2hfl1Cs9/KKS6lQtGr0p6jSPvM4/ZA+Af8AC4IaXJllxZOXcpkByZR+TPnPRvN0s1/e wIvnS2t0t7y4pvLao3wyR/soCzfGF7+1AKNZhlj2H0MoG/e9UzAZuxV8j/nJ5DufK3my4ljjP6I1 N3uLCUD4V5Hk8NfGMnb/ACaZ0OjzjJDzDRIUWA5lsWY+T/zY86+VIRbaddiWwU1Wxul9WFamp47q yf7FhmPm0kMm5G6RIhPdX/5yI/MTULVoImtNO5ghprSJhJQ+DSvNT5jfKYdn4wepZGZeaSyyyyvL K7SSyMWkkYlmZmNSSTuSTmcAwei/kV5Lm8wec7e/ljP6M0Zlup5CPhaVTWGMHxLjkfYHMLXZuCFd SygLL6D/ADP8nf4t8m3ulxgfXVpcWDN0E8VSor25qWSvauajS5vDmD0bZCw+OLi3nt55Le4jaKeF iksTgqyspoVYHoQc6QG92hM/LHmrXfLGqLqejXJt7lQUcUDI6HqjodmX/bG+V5cUZipKDT0pf+cn POYio2m6cZafb4zgV8ePq/xzC/kyHeWfiF5/5x89+ZfN96lzrVz6iw1FvbRjhDEG68EHc9yan3zL w4I4xUWJNpLY2N5f3kNlZwtcXVw4jhhjFWZmNAAMtlIAWUPrf8s/IkfkXyk8Zj+tavOv1nUDFQl5 FU8YYyaVCfZWvck9857U5/Fn5N8RQYMf+coLA38MQ0GSOzMircTvODIkZNGKxLHuR1pyzK/kw19W 7HxGY635C/KTzZYtqjx2ipIvM6pZSpARyFeTMh4E7ftqcx4Z82M1v7ikxBfLfmOy0yx16/s9Lu/r 2nW8zx2t3t+8RTQNUbH5jY9c3uORMQSKLSXtv5mT6zafkD5cguCyzXBsobxTWvpCB5EV/cGNK175 q9MInUSrzbJfSkH/ADjtoPk/VdV1M61DBd6jAsR0+0uQroVPP1XWNvhdlovbbLu0Mk4gcOwRABlv /OQXnPQ7Hyw3lHT2ia9vXjN1BDxpBDC4kHIL9lmdFovhX2rj9n4ZGfGeQZTO1MZ/5xi0hZ/Mmraq wB+o2qQpXs9y5NR/sYWH05f2nOogd5Y4xu+j80rc7FXYq7FXYq8e/MX/AJx907Wp5dT8tSR6bqEl Wms3FLWRvFeIJiY+wK+w65stP2gY7S3DXKHc8S1r8sfP2jSsl7ol0UWv7+CMzxU8ecXNR9ObOGpx y5ENZiUqg8seZJ5BFBpN5LIeiJbysx7dAuWHLEdQimc+U/yB886zKj6jCNFsCRzlud5qd+EAPKv+ vxzFy6/HHl6iyECX0T5K8i6B5P0v6jpMRDSUa6upPimmcCgLttsOyjYffmmzZ5ZDZbhGmQ5Sl2Kp Z5j8t6N5j0qXS9XtlubSXcA7MjDo8bdVYeIyePJKBuKCLfP/AJt/5xu8yWUsk3lydNTtKkpbyssN yo8KtSN/nVflm3xdoxP1bFqOMvPr38u/PdkxW58v3602LrbySJ/waBl/HMyOoxnlIMeEqEHkjznP II4dB1GRz2W1mPelT8OwwnPAfxD5rRZx5T/5x6856tMkmsKujWFQXMpV52X/ACIlJof9cjMXL2hC P0+oshAvo7yv5X0byzo8Ok6TD6NtFuzHd5HP2pJGoOTN/YNs02XLKcrLaBSa5Wl5p+Z35J6T5tkf U9PkXTtdI+OUisM9BQesBuDt9tfpB2zO02tOPY7xYShbwbW/yf8AzF0iVkl0We6QfZmsl+sow8f3 XJh/sgM2sNXjl1+bUYlJU8m+b3YImh6gznYKtrOSfoC5b40O8fNFFlHl78jPzE1iVPU0/wDRlsx+ O4vj6VB/xi3lJ/2OUZNdjj1v3MhAvffy6/KTy95Lj9eP/TtYdeMuoyqAQD1WJKn018d6nuc1Go1c svlHubYxpnOYrJ5H+YX/ADj9pmv382q6JdLpl/cMXuLd15W8jnqw4/FGWO5pUe2bHT9oGAqQsNco W87P/ONn5ghyom08itOYmkp894q/hmZ/KWPzY+GWbeR/+ccLHTbyK/8AM12moyQkOlhApFvyBqDI 70aQf5PEe9RtmLn7RMhURTIY+96h5x8qad5p8u3WiXxKRXABjlQfFHIh5I6/Ijp3G2YOHKcchIMy LeAXH/OM/ndbwxQXthLa1+C4d5UPHxZBG5B9gT88247Sx1yLV4ZTy5/5xhmXQ40tdWjk1szK0skq slssPFgUQKHctyoeR+4ZSO0/VuPSnw2Y/k7+WGueRpdV/SF1bXMWorBx+rmTkrQGTrzVdiJcx9Zq Y5aoHZlCNPTMwWbsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdir/9k= + + + + + + uuid:9781C769F82F11DD957788AAD8F65D92 + uuid:9781C76AF82F11DD957788AAD8F65D92 + + uuid:18522BF22EF8DD11B6DFB2F17E203B27 + uuid:17522BF22EF8DD11B6DFB2F17E203B27 + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 %AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 Adobe_AGM_Utils begin Adobe_AGM_Core/page_setup get exec Adobe_AGM_Core/capture_currentpagedevice get exec Adobe_CoolType_Core/page_setup get exec Adobe_AGM_Image/page_setup get exec %%EndPageSetup Adobe_AGM_Core/AGMCORE_save save ddf 1 -1 scale 0 -346.999 translate [1 0 0 1 0 0 ] concat % page clip gsave newpath gsave % PSGState 0 0 mo 0 346.999 li 1190.59 346.999 li 1190.59 0 li cp clp [1 0 0 1 0 0 ] concat 117.664 249.537 mo 115.487 248.393 95.3335 232.718 94.9785 232.733 cv 92.7925 232.826 86.3252 242.936 84.0562 245.336 cv 78.8462 250.847 73.7607 253.542 72.2935 257.938 cv 91.8438 277.571 121.828 294.962 159.673 294.907 cv 197.007 294.853 227.463 277.275 246.213 257.099 cv 237.566 249.501 231.385 239.439 222.688 231.893 cv 200.563 260.887 152.141 267.663 117.664 249.537 cv cp 1072.96 183.161 mo 1069.04 134.177 972.732 145.522 967.938 187.362 cv 979.21 187.853 989.543 189.282 1000.71 189.884 cv 1004.07 167.746 1052.97 172.605 1036.83 200.806 cv 1011.5 208.045 988.711 200.9 968.777 214.249 cv 949.42 227.211 949.312 262.449 965.417 276.423 cv 983.789 292.364 1015.44 281.098 1026.75 268.861 cv 1027.02 273.635 1028.37 277.329 1029.27 281.464 cv 1040.19 281.464 1051.12 281.464 1062.04 281.464 cv 1052 247.624 1075.64 216.563 1072.96 183.161 cv cp 834.347 188.202 mo 831.496 215.83 855.318 223.207 874.676 230.212 cv 883.944 233.566 899.216 236.272 900.722 243.655 cv 904.187 260.636 872.965 264.786 859.553 256.258 cv 853.511 252.416 853.258 246.31 846.949 241.135 cv 836.673 242.9 826.02 244.29 815.862 246.176 cv 824.822 299.207 931.887 296.894 936.01 243.655 cv 937.918 219.014 917.988 209.959 897.361 203.326 cv 887.05 200.011 867.627 198.185 867.114 187.362 cv 866.465 173.664 890.315 171.611 903.242 178.12 cv 909.547 181.295 910.76 187.353 915.005 189.884 cv 924.697 188.093 934.158 186.071 944.412 184.842 cv 937.529 135.568 839.043 142.686 834.347 188.202 cv cp 163.875 107.544 mo 129.846 105.777 105.619 128.293 94.9785 157.116 cv 91.042 156.572 84.918 158.214 82.376 156.275 cv 81.9595 139.498 83.0938 128.673 83.2158 113.426 cv 71.8979 120.709 60.8799 131.561 50.4487 141.992 cv 39.7305 152.71 28.3745 163.109 18.5215 173.919 cv 41.0952 192.759 61.1343 218.305 83.2158 234.413 cv 83.1875 218.077 81.9224 206.733 82.376 189.043 cv 86.8569 189.043 91.3379 189.043 95.8188 189.043 cv 105.267 220.015 129.191 243.992 169.756 239.454 cv 199.332 236.146 216.002 214.026 225.208 189.043 cv 229.044 189.408 234.459 188.193 236.971 189.884 cv 237.443 207.288 236.043 218.351 236.131 234.413 cv 256.226 216.419 278.91 193.734 298.305 172.239 cv 277.22 152.715 257.723 131.603 236.131 112.585 cv 235.604 128.013 238.531 141.457 236.131 157.116 cv 232.21 157.116 228.289 157.116 224.368 157.116 cv 215.628 130.532 195.157 109.169 163.875 107.544 cv cp 1170.42 132.75 mo 1174.93 92.6963 1103.86 97.0156 1103.21 131.91 cv 1110.07 133.73 1118.88 133.607 1125.89 135.271 cv 1123.64 121.726 1145.51 115.46 1147.74 127.709 cv 1149.66 138.281 1132.93 147.278 1125.05 153.755 cv 1109.22 166.772 1097.29 175.587 1093.97 194.925 cv 1115.81 194.925 1137.66 194.925 1159.5 194.925 cv 1160.48 188.339 1162.72 183.024 1163.7 176.44 cv 1152.78 176.44 1141.86 176.44 1130.93 176.44 cv 1141.5 162.071 1167.96 154.686 1170.42 132.75 cv cp 463.823 51.2515 mo 423.245 53.4082 395.704 65.6802 372.242 88.2202 cv 350.11 109.482 333.479 139.475 331.072 173.079 cv 324.933 258.789 383.741 298.306 465.503 293.227 cv 540.949 288.54 566.031 227.583 563.805 141.992 cv 525.437 141.992 487.068 141.992 448.699 141.992 cv 446.654 160.689 443.366 182.566 442.818 199.966 cv 460.743 200.524 480.905 198.847 497.43 200.806 cv 496.612 225.762 478.18 235.873 459.622 237.774 cv 433.265 240.474 412.459 226.915 403.329 208.367 cv 385.779 172.716 406.732 130.137 432.735 116.787 cv 455.405 105.148 488.102 109.767 522.636 109.225 cv 525.261 90.8457 526.691 71.2705 529.357 52.9321 cv 506.556 52.5078 486.571 50.0425 463.823 51.2515 cv cp 234.45 99.9829 mo 236.877 97.5566 246.327 90.8779 246.213 88.2202 cv 246.105 85.6963 233.958 77.1836 229.409 73.937 cv 210.905 60.7314 186.125 51.1035 157.153 51.2515 cv 136.822 51.3555 119.82 56.355 103.38 64.6948 cv 97.7813 67.5352 72.0601 83.6055 72.2935 89.0601 cv 72.373 90.9224 81.8877 97.8145 84.0562 99.9829 cv 88.9297 104.856 91.4717 107.916 94.9785 111.746 cv 110.656 97.6343 133.008 84.1777 161.354 84.8594 cv 188.472 85.5117 208.859 98.792 223.528 112.585 cv 227.055 107.29 229.595 104.838 234.45 99.9829 cv cp 650.345 61.334 mo 612.505 80.8486 587.504 112.492 578.929 161.317 cv 565.98 235.039 608.083 288.694 671.35 293.227 cv 726.54 297.18 760.177 276.371 785.615 244.495 cv 804.927 220.299 819.205 187.081 815.862 141.152 cv 814.438 121.573 807.413 102.675 799.059 89.9004 cv 780.93 62.1777 742.297 43.6064 695.715 47.8906 cv 677.252 49.5889 663.646 54.4741 650.345 61.334 cv cp 0.877441 0 mo 397.437 0 794.029 0 1190.59 0 cv 1190.59 115.667 1190.59 231.33 1190.59 346.999 cv 793.734 346.999 396.897 346.999 0.0371094 346.999 cv 0.0371094 232.173 0.0371094 117.346 0.0371094 2.52051 cv -0.0351563 1.32813 -0.101563 0.141113 0.877441 0 cv cp false sop /0 << /Name (Black) /0 [/DeviceCMYK] /CSA add_res /CSA /0 get_csa_by_name /MappedCSA /0 /CSA get_res /TintMethod /Subtractive /TintProc null /NComponents 4 /Components [ 0 0 0 1 ] >> /CSD add_res 1 /0 /CSD get_res sepcs 0 sep ef 668.829 113.426 mo 644.736 133.127 630.34 201.173 657.906 227.691 cv 670.881 240.173 698.574 241.237 715.04 232.733 cv 753.499 212.87 764.906 123.76 723.441 105.864 cv 717.717 103.394 706.651 102.24 700.757 102.503 cv 686.892 103.122 676.364 107.264 668.829 113.426 cv cp 695.715 47.8906 mo 742.297 43.6064 780.93 62.1777 799.059 89.9004 cv 807.413 102.675 814.438 121.573 815.862 141.152 cv 819.205 187.081 804.927 220.299 785.615 244.495 cv 760.177 276.371 726.54 297.18 671.35 293.227 cv 608.083 288.694 565.98 235.039 578.929 161.317 cv 587.504 112.492 612.505 80.8486 650.345 61.334 cv 663.646 54.4741 677.252 49.5889 695.715 47.8906 cv cp 0.913725 0.807843 0.0470588 0.00392157 cmyk ef 223.528 112.585 mo 208.859 98.792 188.472 85.5117 161.354 84.8594 cv 133.008 84.1777 110.656 97.6343 94.9785 111.746 cv 91.4717 107.916 88.9297 104.856 84.0562 99.9829 cv 81.8877 97.8145 72.373 90.9224 72.2935 89.0601 cv 72.0601 83.6055 97.7813 67.5352 103.38 64.6948 cv 119.82 56.355 136.822 51.3555 157.153 51.2515 cv 186.125 51.1035 210.905 60.7314 229.409 73.937 cv 233.958 77.1836 246.105 85.6963 246.213 88.2202 cv 246.327 90.8779 236.877 97.5566 234.45 99.9829 cv 229.595 104.838 227.055 107.29 223.528 112.585 cv cp ef 529.357 52.9321 mo 526.691 71.2705 525.261 90.8457 522.636 109.225 cv 488.102 109.767 455.405 105.148 432.735 116.787 cv 406.732 130.137 385.779 172.716 403.329 208.367 cv 412.459 226.915 433.265 240.474 459.622 237.774 cv 478.18 235.873 496.612 225.762 497.43 200.806 cv 480.905 198.847 460.743 200.524 442.818 199.966 cv 443.366 182.566 446.654 160.689 448.699 141.992 cv 487.068 141.992 525.437 141.992 563.805 141.992 cv 566.031 227.583 540.949 288.54 465.503 293.227 cv 383.741 298.306 324.933 258.789 331.072 173.079 cv 333.479 139.475 350.11 109.482 372.242 88.2202 cv 395.704 65.6802 423.245 53.4082 463.823 51.2515 cv 486.571 50.0425 506.556 52.5078 529.357 52.9321 cv cp ef 700.757 102.503 mo 706.651 102.24 717.717 103.394 723.441 105.864 cv 764.906 123.76 753.499 212.87 715.04 232.733 cv 698.574 241.237 670.881 240.173 657.906 227.691 cv 630.34 201.173 644.736 133.127 668.829 113.426 cv 676.364 107.264 686.892 103.122 700.757 102.503 cv cp 1 /0 /CSD get_res sepcs 0 sep ef 1130.93 176.44 mo 1141.86 176.44 1152.78 176.44 1163.7 176.44 cv 1162.72 183.024 1160.48 188.339 1159.5 194.925 cv 1137.66 194.925 1115.81 194.925 1093.97 194.925 cv 1097.29 175.587 1109.22 166.772 1125.05 153.755 cv 1132.93 147.278 1149.66 138.281 1147.74 127.709 cv 1145.51 115.46 1123.64 121.726 1125.89 135.271 cv 1118.88 133.607 1110.07 133.73 1103.21 131.91 cv 1103.86 97.0156 1174.93 92.6963 1170.42 132.75 cv 1167.96 154.686 1141.5 162.071 1130.93 176.44 cv cp 0.913725 0.807843 0.0470588 0.00392157 cmyk ef 201.683 144.513 mo 192.101 154.255 182.006 163.484 171.436 172.239 cv 180.612 183.507 191.943 192.621 203.363 201.646 cv 203.363 195.765 203.363 189.884 203.363 184.002 cv 217.927 184.002 232.49 184.002 247.053 184.002 cv 247.053 176.72 247.053 169.438 247.053 162.157 cv 232.769 161.598 216.248 163.275 203.363 161.317 cv 202.349 156.169 205.459 146.898 201.683 144.513 cv cp 115.143 162.157 mo 100.58 162.157 86.0166 162.157 71.4531 162.157 cv 71.4531 169.438 71.4531 176.72 71.4531 184.002 cv 85.7383 184.561 102.258 182.884 115.143 184.842 cv 115.143 190.443 115.143 196.044 115.143 201.646 cv 126.515 193.133 135.993 182.728 146.23 173.079 cv 135.66 163.765 126.398 153.143 115.143 144.513 cv 115.143 150.394 115.143 156.275 115.143 162.157 cv cp 224.368 157.116 mo 228.289 157.116 232.21 157.116 236.131 157.116 cv 238.531 141.457 235.604 128.013 236.131 112.585 cv 257.723 131.603 277.22 152.715 298.305 172.239 cv 278.91 193.734 256.226 216.419 236.131 234.413 cv 236.043 218.351 237.443 207.288 236.971 189.884 cv 234.459 188.193 229.044 189.408 225.208 189.043 cv 216.002 214.026 199.332 236.146 169.756 239.454 cv 129.191 243.992 105.267 220.015 95.8188 189.043 cv 91.3379 189.043 86.8569 189.043 82.376 189.043 cv 81.9224 206.733 83.1875 218.077 83.2158 234.413 cv 61.1343 218.305 41.0952 192.759 18.5215 173.919 cv 28.3745 163.109 39.7305 152.71 50.4487 141.992 cv 60.8799 131.561 71.8979 120.709 83.2158 113.426 cv 83.0938 128.673 81.9595 139.498 82.376 156.275 cv 84.918 158.214 91.042 156.572 94.9785 157.116 cv 105.619 128.293 129.846 105.777 163.875 107.544 cv 195.157 109.169 215.628 130.532 224.368 157.116 cv cp ef 115.143 144.513 mo 126.398 153.143 135.66 163.765 146.23 173.079 cv 135.993 182.728 126.515 193.133 115.143 201.646 cv 115.143 196.044 115.143 190.443 115.143 184.842 cv 102.258 182.884 85.7383 184.561 71.4531 184.002 cv 71.4531 176.72 71.4531 169.438 71.4531 162.157 cv 86.0166 162.157 100.58 162.157 115.143 162.157 cv 115.143 156.275 115.143 150.394 115.143 144.513 cv cp 1 /0 /CSD get_res sepcs 0 sep ef 203.363 161.317 mo 216.248 163.275 232.769 161.598 247.053 162.157 cv 247.053 169.438 247.053 176.72 247.053 184.002 cv 232.49 184.002 217.927 184.002 203.363 184.002 cv 203.363 189.884 203.363 195.765 203.363 201.646 cv 191.943 192.621 180.612 183.507 171.436 172.239 cv 182.006 163.484 192.101 154.255 201.683 144.513 cv 205.459 146.898 202.349 156.169 203.363 161.317 cv cp ef 944.412 184.842 mo 934.158 186.071 924.697 188.093 915.005 189.884 cv 910.76 187.353 909.547 181.295 903.242 178.12 cv 890.315 171.611 866.465 173.664 867.114 187.362 cv 867.627 198.185 887.05 200.011 897.361 203.326 cv 917.988 209.959 937.918 219.014 936.01 243.655 cv 931.887 296.894 824.822 299.207 815.862 246.176 cv 826.02 244.29 836.673 242.9 846.949 241.135 cv 853.258 246.31 853.511 252.416 859.553 256.258 cv 872.965 264.786 904.187 260.636 900.722 243.655 cv 899.216 236.272 883.944 233.566 874.676 230.212 cv 855.318 223.207 831.496 215.83 834.347 188.202 cv 839.043 142.686 937.529 135.568 944.412 184.842 cv cp 0.913725 0.807843 0.0470588 0.00392157 cmyk ef 985.581 245.336 mo 985.816 249.693 988.654 255.782 993.983 257.938 cv 1015.86 266.791 1033.64 242.015 1031.79 221.811 cv 1016.6 226.935 984.439 224.199 985.581 245.336 cv cp 1062.04 281.464 mo 1051.12 281.464 1040.19 281.464 1029.27 281.464 cv 1028.37 277.329 1027.02 273.635 1026.75 268.861 cv 1015.44 281.098 983.789 292.364 965.417 276.423 cv 949.312 262.449 949.42 227.211 968.777 214.249 cv 988.711 200.9 1011.5 208.045 1036.83 200.806 cv 1052.97 172.605 1004.07 167.746 1000.71 189.884 cv 989.543 189.282 979.21 187.853 967.938 187.362 cv 972.732 145.522 1069.04 134.177 1072.96 183.161 cv 1075.64 216.563 1052 247.624 1062.04 281.464 cv cp ef 1031.79 221.811 mo 1033.64 242.015 1015.86 266.791 993.983 257.938 cv 988.654 255.782 985.816 249.693 985.581 245.336 cv 984.439 224.199 1016.6 226.935 1031.79 221.811 cv cp 1 /0 /CSD get_res sepcs 0 sep ef 222.688 231.893 mo 231.385 239.439 237.566 249.501 246.213 257.099 cv 227.463 277.275 197.007 294.853 159.673 294.907 cv 121.828 294.962 91.8438 277.571 72.2935 257.938 cv 73.7607 253.542 78.8462 250.847 84.0562 245.336 cv 86.3252 242.936 92.7925 232.826 94.9785 232.733 cv 95.3335 232.718 115.487 248.393 117.664 249.537 cv 152.141 267.663 200.563 260.887 222.688 231.893 cv cp 0.913725 0.807843 0.0470588 0.00392157 cmyk ef %ADOBeginClientInjection: EndPageContent "AI11EPS" userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse %ADOEndClientInjection: EndPageContent "AI11EPS" % page clip grestore grestore % PSGState Adobe_AGM_Core/AGMCORE_save get restore %%PageTrailer [/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 [ [/CSA [/0 ]] [/CSD [/0 ]] ] del_res Adobe_AGM_Image/page_trailer get exec Adobe_CoolType_Core/page_trailer get exec Adobe_AGM_Core/page_trailer get exec currentdict Adobe_AGM_Utils eq {end} if %%Trailer Adobe_AGM_Image/doc_trailer get exec Adobe_CoolType_Core/doc_trailer get exec Adobe_AGM_Core/doc_trailer get exec %%EOF %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 10.0 %%AI8_CreatorVersion: 12.0.1 %%For: (stephan heller) (heller & partner) %%Title: (GOsa-logo.eps) %%CreationDate: 09.02.2009 11:32 Uhr %AI9_DataStream %Gb!TMUoC[.;h*"QZ %^W]a#S(S8=b``!BQHSqsac#7srb;"8nuDI=>qDK0H@%a.-fm=!S,FI8J(UG*](YHM:8?r,+5j,YYZDpPWCOEar>]F;^:p]Gd\^C6d_h]4J>I@C=ag %N[M$#NppY/eL]H%).pIM&I1\.ag2V-5MP$OH[pLW]VC(M-["/"qY'@Np$>>Xm3d.jBia,ps"',$R68=^^fh'/687?(`ptXI:oV<- %.Q^IE4"A;/#_(tEC3p3(^>1DZ(9?V2((*.0-P?8UU%@^_ml:W`a`Ir'R/?@:GT`);uTb]Uf+aK\`h2$HZH9:l+B'_f9]D1#AL\/O%c^:]lhkO %Qg+5pT?9S!nsM=>h<9\c[^R9BSBdekp)*L*nRs01MA4$][gTB,J#sFfr$t %&Z5+qr:\^EI7@#F[J#pJjj[dIdHtr2j,^m#%!bM7[HsaFl[^%$8[;H14hIU1k]PVK_l;n>>1sUQTQ[gkhU76^?-)anYRo,g5\$1]ukTXHm3Yb9&oi:1,mS9a[kIqNBn1$nW*(FUtesn %b3=>(jBSMI*hr9^'eV88Y!lhXB?(:S8m$5jl"qi4p=3q]HV<67j1/Y;G(7uYG0tV*07XcV@^+s$mrIi;5PGcaSR/jE?HMP6N*<&] %?%eRgets6dVF[>dCDEA_A)[XQdiuirnn>#J,k5dOnEEQ`8s!/\TMV=nu3HXk,T%YsinX`4X`iQNgd,3a-[\:[ci*rXa.NZ'M.g7\-ROqq$hYIG;N<9=Z;)K9!rj.Y3"+MeFD-&[g.YG,LB^F*l %*p_BIkb1J(]Zj[Yb1t@-9UqGc48WF(8LJYO>AXdi'T-=6F4fVPm\M%L4OlE7TYlEG/uu(["(0ltJjSL"In(cZWuP63[t"EaFQlu4 %fX?%N5B36kI8;M[Fp;)TTbcA(6XtnE[[3VhN-?RQQmQ5@8 %frS%8H/Ql$3/8m*43Z=XV[))R33U]crS!HD:$>Mj/=4@XQICV,PU'I %bP.Z"a-Y)R?FPuI4qiYUC\&I0LA+p;Vu<",1JFdqJ-S6)jh8[`:CcjeG!9WlEK'.bGDBqJn*[;8P.>_g'sQ983fVV]1$i!p,.2.@q@uGP<]tg_!3U*+e:"rtG5j\$4qE%q5gl6.[2=lZ %@D2rWWT:ok^!ACD%!)-G@`!p\bUcKU1[R)HHf*jOqR6%u\_dd,hUCZ)gWOKtmCGA[]j/$6GAWVfF]XIOWS\^+CKe<-C"r8`EsLn" %HYjd(b4OB$e>W!"jm%^N1]$NeIEUZXSNjH+[p:Z=2gVZS06c83qn%h/6-8eTDqCXgXEZ!IqH!%6+5SU3k8F$ %2Tb\tT$lF?D_M.AbkL!?:FDKug"if6%Gm\i^K^&onSGK+k2]Y5B)@Y2Me06+g9J,o9ia3rAhj=1\%9C@s6"8Yg])<+^:IO#iq;;P %F*9h>iJaog8qHDc2?$8oPcuu/f-J$ %g#h=(*om/orV\(c^*gGYmQZ.,mmLQa[jsm73;]2W*=1ZrhQ:tuhnY27mJd+CmVgj!,T<58.gT/)bUi2mm])#e``F&2u3D#Gm;OO<'R'8:Cmd^s+*e02? %(Ad&EUYt`,n)gBh000=84F`Cn?8$L!"/uM5'T2pNW_KM&e?1dTs(IlVcr&gdK=B)$O5=R@nDTeM"rMTmR.K>kZgARBrpe8!DqA&b %o]GV+Va'&k=1EY_YI\"EhX)6boA>[PZJEh*h[K$*N'Eu(ItX0DdR$Nh--ou1rEVVS^MFh%qt,B?Frroo[_(G7]\[.?UdbTbT4c>/ %:WrIf4`i3AVNS?Wljg1IUXH\XaJT3d,D6.B+trmq`:1!aL=F!8\nbQQ=8/s^>i0R]>jU`1C\*e*P5>3peXMc'J!=7UZccqO(uRWW %affOEF8=bX5KhQ+94$u\k=71cUlU<%57`OqO\m=g@EaAiGUsj7l#n3l$iZK$jo5Q9h-L'Q0-#tdZ5N"pMtq;I(IJB[YcGHeOdGAs %r:K=;HESEeIZ0T15$unhl\F<^W_B"4f??u@p8>m[ro7KhfFiYhA_F^946IYgeAl0@oC4PqZ(q6.bNceAo>%rO4D%/l^@lh?@aAquhKM(V?6tfIrAsal`ldi2QfC=gH"B\?DVONHmH5hl^A3&H]Y%G7B:"P<@fN9o9VrW[Xs,*'29G1;lK2u- %dj4D5)qGcnC4CN8f^G0O[_^bNbQ#_$[_#c"r,j."fMLtEJXW_3ZVUElFF(a*(N].]Kam;CDP,]t@IjWd@^kK$`f`t95_+Ph$q9H( %13quE2pLc#-Ro"3>lUY$2G0bM4l5&_2jjVeT)hS;fuu?ViGNX^\"*+:=XR[Fm'j=ODDMBLk?kI!`>,j3?dRg9!"9PXT#=q^Kd?JHnaO$p7)80ec"=RTt'(!_eo<U.J4dkZ`=83EjiPoNUE%!BrBQn@C"EYii%l!R3STc*\$Q_Id,t+pSXP/U$j8s3E:@]Wq*cq.RVpgaG9=cZ:>:% %aWHg^H7pYZ=q@I4<.Bt]h6BW1bZM\__f`_O4nV*CK2p6gWG&XNrkurG?sChI%]*s-k7Q %Nlg5Q(sWW%3@&5elS56''g,<>ff9!W3+E*@SJE$G"od.os'/&NHX#iGtMli612_r=&C'40QqrRTF^U>cCoaJi1-$;l3k@H#3 %2cmIZiKgN7Z`pudBM>PGG(_T4D`6@9lnhEuBcDS.i@XYgDQnDhoB\Z@iF]I2O(c@:,oA;)lb23?T;LDI>C.d`r&!MY0Y;a@<3:AO %?=T/U"!Q*rL'_J5OR2!>=eK&oOt?(/@9th'`Q`.@i5;=C!rC)`n+\$aqKfDo^qC$0Cj3GBhp+-X8X3n7 %'GKnYE!JE37C1d0Bp>MEk3Eaeet*hO'+6-ukO^G'q].%t[o_V_Q4``iEKfl11$@SCqb)kGH`/4(%*+7@7:s4NT>YA8e"0R,oNnQR %I(!kh=:`i.5/"tlI']>m\_etgc$Zo\KlbW-Z&eOhXo$]T/M1V)LZQn2S`"p;F8K[1D)q<8VgL1tG5TS%.C]_M]'A-_:65P6qo-:U %X`5-Nfd)8mBC9p+SDn?o,nDV>^0R?b;^#RYYs9.UJ;bEZClodC!hGQ[YKPUBG=$*D$K)U'Ol[1nqn\F:U>8#k^(72u!N*MrS0,Gt %*HM)aif<=pcjmR7"SIlBQpk>bp>`48C$2HPS*flpFincgCj1*fD;3&AY_-1EqrBquOW@m5;oFkFX6'Ugqg=!.&2@BZK\;p9,j>lr %Ylat^FK]\Psh9L?6a12i2fkTVa[jS,/]8('9^)c92:LDs%3&JaXpM[<4`h)]MRD/X; %GE],>Df9fWoP]g9B(6bKc!%2D7=U>mA[M:#QW(Fr:Uo82N:0%[Sp[aMrI)3Ilp%k&pd%5qe):#5"nLDK,;]+S1Hnl8IUXcW$="9] %I=4,%qXP9q9?]?:ld\N9L%^WRk9"#9?oP0o+$ckW8GVj`\FkhonA?YKpu0^EIi@.&rpoEP]B".r %gt4ZSpJ&1K`m/-uh\,he??/6pg@D6boB0J,.U2JgY[;U;GWt-NV5nFik3?qlkV)OA"&J3:?0'_*AmCb0f"63-Nf2[.H;up\[\Yc3 %m5V4'rkKU&09)-RNNI?RIYoq=^f+?BLa;3I]VH'#uQHU-[6tB"UcH?P.)*:T7P@V(2K2(nT1HYR_>+L7N"6m'p"WY`V=]p_i %T"2cT>U%a.9oAoR>1-kr>[\:Mfs*D*pY`BuAVglaI$A::\4G"#F!]D-jH-:ENnpaU@;8J6j%WPF2rgjM]Ke-/Y:JRn"b3VUaNU"a %bBYI([fZNoXN6PEMl]1aDPeE:BpqDb=L]e#TSkNTikUL/P@L-4N7/2u/5eQQr:*2E=D(`S7PRan`[,o%,Aj88$KSCubn::o>ZMSm %S/6304s/J#[:=e,9;Z$HLQqS?OK!g$KGp4F2eOF;?S/#Q=M]o!t0pT,q=Um,Qiamsljs.;pRi/R6 %(s_9c=d]@K+sBK>/IbnKELB+tKlLU(@%lchW>fWg]X:"#SL%pg?ml,b(HEaEZ_PWnKK?Tj<*E+lV^];1d9,%k?"l5%3[eg`-LbbT %4t[3oXiMJ!b6aoL/EM$TQiRk1r^7=ERmEV\OAQjPR\R-eat:3%3>Ut7?T+3]c@ok?8%bF)=J3bZ#)Xt6$?e;VWp'[;PCe@m!Z@)k %>)\@dQsl3A+I[@8go>.mh,MU*%bks) %jeZ'?k,_H5!77Z!C7;0rniU^@LXd^pHjD3B"C=!Z]H9Cm1[-m1FEc0$r(71(qidEZ+["Ead] %Um?b%!?"NCse3Z//+fb3dF9=A6$OpWN/*AYY+;3k5Ijh!DqMP^@@ %=pe#g*V9GEa/,cN3*$#)Ar2'jgC1eS#P9V=-+)_E,#+K"c"tXRE*60J_6OLs%OsMuZDL]R.UaAf!Y8=#P-cQ\$ljCej]i0%PLaC) %<_X(iUC0d*<_#f7FQb'%A5gjf$q,mdZHY_k+JQd!+Faa;?I['f6IPS %(RUWmU+D/C]%6lY:fCPL-*#j5i"f8/"cHf^J*Ah@AtuLX\+&ec'^Q,9+9VBI7%.891pqou=/b8sPPG&"2`*()M0['oT^TCFgJ1'P %'APGcH4BV:dnO!Pp3"mi$2Sa`I5M-0gJN=".r?t?lD,@c)k!W6!,`D/o.jn47'J&#iQ\2FWu:oA^`)VZn>UOjkXPlBZ44I6'&Wu/ %@pDur2XkMJBRs)Q%EF2il]d]<"+d;9&,XuVPuW&d`jm('6"qGF:6um#3JX]/-Mkk'O>Jh,a`/!N^Ht\MG_8Nn[)/Z8)-c%41*cr; %?uomcbOYH"Xq4(S<[/HH7aUF)+:Z-'*V9HV0g5;bbTtT8&P1%_MTatHCZ<&\>9=9LJCr7XeaNoG:3$-=R]7&RF=fCL,96CZ'siZ8 %2usXO*J+q5#q]7,SO]W#$(f'iCpF`kBbC=^4UnO;;:@dp@IB!YKG?ean2gVh=UfdA>W.8r,fr[SJ[Y]=6L7$>i\ZN0C)pFpU4+8j %L.aHt<>m!N>n,g(dgHGt3k-+cjiEW.Ia3iJ6>-V$![j*6" %ZJC&;9t;K92Vi*h3>8,A=qD9`g=Vm7B3*1KE,^F#07[M+`Ei+%4]gb\[9QrpiG+j!k^,DaG^l`:f8ur %e&Er0!jcUb#^5G:@QiX0@C:QI%6^h3\mqr!:obJ/t-%_4HE,2#;6Hj:nGHe&73NA^_"FTIB[G%IM,cmpD]EjF9Ze1:8D&]-o7F*K$"IO!NiaT6Xk1S8X\"JZ\DK$er3`_Ku^8,.8)+: %g8q$bBC21OGmt!DQAM]hEBZ@GZ$^1@8(`QUWJZX+(G&uD"=G?s#s)lSd1Z72+^6[h-gq65$:r"U.W:M++@$RCP#5#`XBnq8U*`,]-Z/GGrM?8'>,P;>02iIgjh[*1 %Tk9g'Ck3nTDk81(/]E"Vh?oYoUd6Nr&lmiqG#_0j=m$JQZs>G@7!MTTQ<6YB6^[M;-+K[Y$Dqd$)b>*DRM/o2.]:6&9dR$oJ:J6[ %\_577M[WgiatT@k/!c&]9RuV3=uMSX(.H(u7u(me+'M@Whl>")2DEq0@2i*Q=ogPeaq5rQ%nWRMVQLBU*8kpNd)$5J %(H:O^,$0p25QlEFL_:b44?HiVV)JetY1X,54KB'[70+r9OqY>ln-iH._i_RRBXj6H&o0e1i]aZk:8E_?bN9NtOltGcQ;T"aD3[FM %"n:2`H]^?5GI+mJALLtVA91>j\Za"j&$&,,Gg%$*\udl7DIWQ]7O7dd7;HTdf\i+-@:]=.S00pQ+cQ(e'E+/3H];oo1ZoI`gs?fO %B/$//:0eaT10A4d$bfd'T1H'gR*LMf,&>)B_>L6HGDT@0CF/p!j!H$:-_7QeFN-J7h8?rd5"-$,Qs7V'\*A9mDTs5?$&QI5: %`=CJ,.bYTnUmBj[AaQIMcXAdc\V'&Ek5\5B?c77;W\Pe/1YkjSiCR=@3EjZO/=i8MZ3dp4(j!8W3/:,&SSA-KgB(FDDZkds'B[">)]5qj %fdYu.RmS&6-ppPbQ3V#hdmglp8a-u;&,'4.NqFUcc7ki292>p>3_CiKd>Jj8Tf4TXc^Hn&0'KgZWg&H6>aEm(16LLW=B^o]4bQfa %Gd+Dq'e++@$Xo0L=]e^_]!.D8X8#*jK9>``I:^FYEb&:ZN#"?^7F4T)1g3cd9pn"MU;/J)+Eg_61HD*:dqBdO]#7W%uZ[r_R`pHqA'e/@TC(Feecm>,=TMCYSbq4@hm-W*AaX:`[[]Kh))487Ot]OSMmG. %`[\^CicI5DN8(Y`^$/G6_.4D?lWBE6/;?YEk0_=tU]MX;dmra"Oh-&'FM@F,.&1?%G#g(P<;b?/.+fmjFt"Zu*[^Qc^cWeD8IlKVOk-0kUC81,lFRC65MZeF"H#AnEr3L/]1\:55D %)73qUqacje<%O;GiZtOU*ueZm./>SF1sG71$kXe!o=5N]&lD>]/JAHD\R6s;OYa3a*Amq"=W#LCp.aJp($0te6RYnUKZ5$R!HD0Q %\s1S3"@`tZSA;R""8k$b0Z!#&m3m!C'cpl(%_EoT@_oE)LTIbU %f^Q[74Of?2r<W;63R3]sd0*c6Z;i5$:VjK(+!d0rf6,=eN7dgFCCDF]fk[IDNpFu1!Vi.Zr6Z(o+po>9ER0m`1'*_qFp %R'C/Hi%QuI09)O%L'Op@iGA:,fVakTYgIi,#&T&[:WSEiALbQ&W %-]W7FC!ErPA_D^thMRd8W?eMg^ni`S3IBggl=C03FHoWQjJHK"4G$P!J@Xg6l$^K,f3?uFh"a0 %qL=JQ'V;>1F:t+WL?Gn*6eq1,2f]lX5;j"4QQq:4n\aY5Tlt\O*BbJTO3o2-mIi:&pN`#h!`Ngrk"-eOQ&md&72,F:Ok-Md0r %7^)^H5F:j,n;"pCs%<=iG.(L2gX48`p:3cU4&iP7__8[n-\Q[?osRG8+4i`^"^O7dP:&$@:.P=#4O.qm~> %AI9_PrivateDataEnd \ No newline at end of file diff --git a/trunk/gosa-core/contrib/desktoprc b/trunk/gosa-core/contrib/desktoprc new file mode 100644 index 000000000..27cfc1e3d --- /dev/null +++ b/trunk/gosa-core/contrib/desktoprc @@ -0,0 +1 @@ +URL="https://www.gosa-project.org/demo/2.6/" diff --git a/trunk/gosa-core/contrib/encodings b/trunk/gosa-core/contrib/encodings new file mode 100644 index 000000000..51d6f8211 --- /dev/null +++ b/trunk/gosa-core/contrib/encodings @@ -0,0 +1,9 @@ +# Encodings for class_servNfs.inc +# This file should be placed in /etc/gosa/ +UTF-8=UTF-8 +ISO8859-1=ISO8859-1 (Latin 1) +ISO8859-2=ISO8859-2 (Latin 2) +ISO8859-3=ISO8859-3 (Latin 3) +ISO8859-4=ISO8859-4 (Latin 4) +ISO8859-5=ISO8859-5 (Latin 5) +cp850=CP850 (Europe) diff --git a/trunk/gosa-core/contrib/extract-locale b/trunk/gosa-core/contrib/extract-locale new file mode 100755 index 000000000..2fceffbe0 --- /dev/null +++ b/trunk/gosa-core/contrib/extract-locale @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ ! -f contrib/extract-locale ]; then + echo "This script has to be executed in the gosa root - preferrable a gosa-all checkout!" + exit 1 +fi + +for i in $(find | grep messages.po | grep -v svn | grep -v LC_MES); do cp $i $(echo $i | sed 's#^.*/\([^/]*\)/[^/]*$#\1.po#'); done diff --git a/trunk/gosa-core/contrib/gosa b/trunk/gosa-core/contrib/gosa new file mode 100755 index 000000000..4fb078951 --- /dev/null +++ b/trunk/gosa-core/contrib/gosa @@ -0,0 +1,177 @@ +#!/bin/sh +# Start script for GOsa to be started via gecko based browsers + +[ -r /etc/gosa/desktoprc ] && . /etc/gosa/desktoprc +[ -r $HOME/.gosa-desktop ] && . $HOME/.gosa-desktop + +url="" +if [ $# -ne 1 -a -z "$URL" ]; then + echo "Usage: $(basename $0) " + exit 1 +fi + +if [ $# -ne 1 ]; then + url="$URL" +else + url="$1" +fi + +# What browser are we using? +result="" +echo -n "Looking for browser: " +for browser in iceweasel firefox mozilla; do + if which $browser 2> /dev/null; then + result=$browser + break + fi +done +if [ -z "$result" ]; then + echo "none found. You'll need iceweasel, firefox or mozilla in your PATH!" + exit 1 +fi +browser=$result +dbrowser=$browser + +# Workaround for debian +if [ "$browser" = "iceweasel" ]; then + dbrowser=firefox +fi + +# Check for presence of gosa profile +if [ ! -d $HOME/.mozilla/$dbrowser/*.gosa ]; then + echo "No browser profile found for GOsa - creating one..." + $browser -CreateProfile gosa + if [ "$browser" = "iceweasel" ]; then + config=`echo $HOME/.mozilla/firefox/*.gosa/` + else + config=`echo $HOME/.mozilla/$dbrowser/*.gosa/` + fi + + # Catch resolution + width=1024 + height=768 + if which xrandr > /dev/null; then + if xrandr 1> /dev/null 2> /dev/null; then + resolution=$(xrandr | sed -n '/current/s/^.*current \([0-9]*\)[^0-9]*\([0-9]*\).*$/\1 \2/p') + width=${resolution%% *} + height=${resolution##* } + + [ $width -gt 1050 ] && width=1050 + [ $height -gt 850 ] && height=850 + fi + fi + + cat << EOF > $config/prefs.js +# Mozilla User Preferences + +/* Do not edit this file. + * + * If you make changes to this file while the browser is running, + * the changes will be overwritten when the browser exits. + * + * To make a manual change to preferences, you can visit the URL about:config + * For more information, see http://www.mozilla.org/unix/customizing.html#prefs + */ + +user_pref("app.update.autoUpdateEnabled", false); +user_pref("app.update.enabled", false); +user_pref("browser.download.folderList", 2); +user_pref("browser.download.manager.showWhenStarting", false); +user_pref("browser.formfill.enable", false); +user_pref("browser.preferences.lastpanel", 1); +user_pref("browser.search.selectedEngine", "Damnfresh"); +user_pref("browser.startup.homepage", "$url"); +user_pref("browser.startup.homepage_override.mstone", "rv:1.8.1.1"); +user_pref("extensions.disabledObsolete", true); +user_pref("extensions.lastAppVersion", "2.0.0.1"); +user_pref("extensions.update.autoUpdateEnabled", false); +user_pref("intl.charsetmenu.browser.cache", "ISO-8859-1"); +user_pref("network.cookie.prefsMigrated", true); +user_pref("security.OCSP.URL", ""); +user_pref("security.OCSP.signingCA", "Builtin Object Token:IPS CLASE1 root"); +user_pref("security.warn_entering_secure", false); +user_pref("security.warn_leaving_secure", false); +user_pref("security.warn_submit_insecure", false); +user_pref("security.warn_viewing_mixed", false); +user_pref("signon.rememberSignons", false); +user_pref("security.warn_submit_insecure", false); +EOF + + cat << EOF > $config/84795799.s +#2c +http://vserver-02 +. +EOF + + [ ! -d $config/chrome ] && mkdir -p $config/chrome + cat << EOF > $config/chrome/userChrome.css +#main-menubar { + display: none; +} +#navigator-throbber { + display: none; +} +EOF + +cat << EOF > $config/localstore.rdf + + + + + + + + + + +EOF +fi + + +# Start mozilla with GOsa profile +$browser -P gosa $url + diff --git a/trunk/gosa-core/contrib/gosa.1 b/trunk/gosa-core/contrib/gosa.1 new file mode 100644 index 000000000..73f383efe --- /dev/null +++ b/trunk/gosa-core/contrib/gosa.1 @@ -0,0 +1,41 @@ +.TH gosa 1 +.SH NAME +gosa \- start script for the GOsa web interface +.SH SYNOPSIS +.PP +.B gosa +[ +URL +] +.SH DESCRIPTION +Start the +.B GOsa +web interface using a gecko based browser and generate +a special browser profile for +.B GOsa +usage. This profile will disable +normal style browser navigation and URL fields. +.SH OPTIONS +.TP +.BR URL +Open this URL when launching the browser with the GOsa profile. This +option is optional and may be preset by the +.B configuration +files. +.SH "RETURN VALUE" +The script return zero values on success. +.SH EXAMPLES +.B gosa +https://admin.example.net +.SH FILES +Presetting the URL works by placing something like +.B URL="http://admin.example.net" +inside one of these files: +.br +.nf +.\" set tabstop to longest possible filename, plus a wee bit +.ta \w'/usr/lib/perl/getopts.pl 'u +\fI/etc/gosa/desktoprc\fR system wide setting +\fI$HOME/.gosa-desktop\fR user specific setting +.SH AUTHOR +Cajus Pollmeier diff --git a/trunk/gosa-core/contrib/gosa.conf b/trunk/gosa-core/contrib/gosa.conf new file mode 100644 index 000000000..194da5b6c --- /dev/null +++ b/trunk/gosa-core/contrib/gosa.conf @@ -0,0 +1,635 @@ +{literal}{/literal} + + + + + + +
+ + + + + +{if $cv.use_netatalk} + +{else} + +{/if} + + + + + + +
+ + +
+ + + + + +{if $cv.enableMimeType} + +{else} + +{/if} + + + +{if $cv.enableFAI_management} + +{else} + +{/if} + + + + + +
+ + +
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + + +{if $cv.use_netatalk} {else} {/if} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{if $cv.enableFAI_management} + + +{else} + + +{/if} + + + + + + + + + + +{if $cv.enableFAI_management} + + +{else} + + +{/if} + + + + + + + + + + + + + + + + + + + + +{if $cv.mail == "kolab"} + +{/if} + + + + + + + + + + + + + + + + +{if $cv.generic_settings.enableDHCP} + +{/if} +{if $cv.generic_settings.enableDNS} + +{/if} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{if $cv.mail == "kolab"} + +{else} + +{/if} + + + + + + + + + + + + + + + + + + + +{if $cv.enableFAI_management} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{else} + +{/if} + + + + + + + + + + +
+ + + + + + + +
+
diff --git a/trunk/gosa-core/contrib/gosa.conf.5 b/trunk/gosa-core/contrib/gosa.conf.5 new file mode 100644 index 000000000..8fa937a2d --- /dev/null +++ b/trunk/gosa-core/contrib/gosa.conf.5 @@ -0,0 +1,1360 @@ +.TH gosa.conf 5 "2008-04-07" "GOsa v2.6" "Debian" +.SH NAME +gosa.conf - GOsa configuration file +.SH DESCRIPTION +The gosa.conf file contains configuration information for +.IR GOsa, +a powerful GPL'ed framework for managing accounts and systems in +LDAP databases. +.PP +The gosa.conf file is a XML style configuration file. It is parsed by +the GOsa web application during log in. The file may contain +extra tabs and newlines for formatting purposes. Tag keywords in the +file are case-insensitive. Comments should be placed outside of XML +tags and should be encapsulated inside of tags. +.PP +The gosa.conf file can be used to configure the look and feel, behaviour +and access control of the GOsa webinterface. +.SH Configuration layout + +The configuration has to be specified inside of the tags. It +basically consists of three main parts: menu definition, definition +of subdialogs (tabbed dialogs) and the main configuration - including +information about several locations. + +.B Layout example: + +.nf + + + + + + ... + + + + ... + + +
+ + + + ... + + +
+ +
+.fi + +.SH Menu definition + +This tag defines the side and icon menu inside the +interface. Defining an entry here is no guarantie to get it shown, +though. Only entries with matching ACL's get shown. + +There are two types of entries inside of the menu: section and plugin + +.B Defining a section + +Open a +.I
+tag including a +.I name +attribute. This will show up in the menu as a new section later on. +Own entries are not handled via I18N by default. Close the +.I
+tag after your plugin definitions. + +.B Defining a plugin + +Open a +.I +tag including a +.I "class" +attribute. The +.I "class" +should be present inside your GOsa setup - the entry will be ignored if it is not. + +Plugins should have an +.I "acl" +entry, that allows GOsa to decide wether a user is allowed to see a plugin or not. +The +.I "acl" +string matches with an ACL definition done inside of GOsa. + +You can override an icon by specifying the +.I "icon" +attribute. + +For every plugin, you can provide at least four additional hooks: +.I postcreate, +.I postdelete, +.I postmodify +and +.I check. +These can be used to perform special actions when a plugins gets +a create, delete, modify or check request. As a parameter, these +keywords get a shell script or program to the task. + +.I The +.B create / delete / modify +.I keywords + +These keywords take a full executable path of a script. You can +provide certain parameters in form of LDAP attributes. '%uid' +will pass the current user id, '%dn' the current object dn, etc. + +The script gets executed after create, delete or modify tasks. + +.I The +.B check +.I keyword + +This keyword takes a full executable path of a script. Check is +triggered after you press the +-I "Apply" +or +-I "OK" +button. The complete LDAP entry as it will be written to the +LDAP is passed to your script. If parts of the entry do not +match some logic of your script, just print an error message +to STDOUT. GOsa will show this message and abort the current +process of saving the entry to the LDAP. + +.B Example menu definition: + +.nf + +
+ + +
+
+.fi + +.SH Tabbed dialog definitions + +Tab definitions define the sub plugins which get included for certain +tabbed dialogs. If you change something here, never (!) remove the +primary (the first) "tab" tag which is defined. Most tabbed dialogs +need a primary plugin. + +.I "*tab" +should be looked for by a defined plugin. This one will take +every +.I "tab" +defined +.I "class" +and will show it inside of a tabbed dialog +with the header defined in +.I "name". + +.B Example tabbed dialog definition: + +.nf + + + + + + +.fi + +.SH Main section + +The main section defines global settings, which might be overridden by +each location definition inside of this global definition. + +.B Example layout: + +.nf +
+ + + + + +
+ +.fi + +.PP +.B Generic options + +.PP +.B forceGlobals +.I bool +.PP +The +.I forceGlobals +statement enables PHP security checks to force register_global settings to +be switched off. +.PP + +.B forceSSL +.I bool +.PP +The +.I forceSSL +statement enables PHP security checks to force encrypted access to the web +interface. GOsa will try to redirect to the same URL - just with https://. +.PP + +.B warnSSL +.I bool +.PP +The +.I warnSSL +statement enables PHP security checks to detect non encrypted access to +the web interface. GOsa will display a warning in this case. +.PP + +.B modificationDetectionAttribute +.I string +.PP +The +.I modificationDetectionAttribute +statement enables GOsa to check if a entry currently being edited has +been modified from someone else outside GOsa in the meantime. It will +display an informative dialog then. It can be set to +.I entryCSN +for OpenLDAP based systems or +.I contextCSN +for Sun DS based systems. +.PP + +.B logging +.I string +.PP +The +.I logging +statement enables event logging on GOsa side. Setting it to +.I syslog, +GOsa will log every action a user performs via syslog. Setting it to +.I mysql, +GOsa will log every action to a mysql server, defined in the +GOsa systems plugin. Both values can be combined as a comma seperated +list. + +GOsa will not log anything, if the logging value is empty. +.PP + +.B loginAttribute +.I string +.PP +The +.I loginAttribute +statement tells GOsa which LDAP attribute is used as the login name +during login. It can be set to +.I uid, mail +or +.I both. +.PP + +.B copyPaste +.I bool +.PP +The +.I copyPaste +statement enables copy and paste for LDAP entries managed with GOsa. +.PP + +.B snapshots +.I bool +.PP +The +.I snapshots +statement enables a snapshot mechaism in GOsa. This enables you to save +certain states of entries and restore them later on. +.PP + +.B snapshotBase +.I dn +.PP +The +.I snapshotBase +statement defines the base where snapshots should be stored inside of +the LDAP. +.PP + +.B snapshotURI +.I uri +.PP +The +.I snapshotURI +variable defines the LDAP URI for the server which is used to do object +snapshots. +.PP + +.B snapshotAdminDn +.I dn +.PP +The +.I snapshotAdminDn +variable defines the user which is used to authenticate when connecting +to +.I snapshotURI. +.PP + +.B snapshotAdminPassword +.I string +.PP +The +.I snapshotAdminPassword +variable defines the credentials which are used in combination with +.I snapshotAdminDn +and +.I snapshotURI +in order to authenticate. +.PP + +.B config +.I dn +.PP +The +.I config +statement defines the LDAP base, where GOsa stores management information, +such as site wide locking and user notifications. +.PP + +.B templateCompileDirectory +.I path +.PP +The +.I templateCompileDirectory +statements defines the path, where the PHP templating engins +.I smarty +should store its compiled GOsa templates for improved speed. This path +needs to be writeable by the user your webserver is running with. +.PP + +.B timezone +.I string +.PP +The +.I timezone +statements defines the timezone used inside of GOsa to handle date +related tasks, such as password expiery, vacation messages, etc. +The +.I timezone +value should be a unix conform timezone value like in /etc/timezone. +.PP + +.B honourIvbbAttributes +.I bool +.PP +The +.I honourIvbbAttributes +statement enables the IVBB mode inside of GOsa. You need the ivbb.schema +file from used by german authorities. +.PP + +.B strictNamingRules +.I bool +.PP +The +.I strictNamingRules +statement enables strict checking of uids and group names. If you need +characters like . or - inside of your accounts, set this to +.I false. +.PP + +.B honourUnitTags +.I bool +.PP +The +.I honourUnitTags +statement enables checking of +.I unitTag +attributes when using administrative units. If this is set to +.I true +GOsa can only see objects inside the administrative unit a +user is logged into. +.PP + +.B rfc2307bis +.I bool +.PP +The +.I rfc2307bis +statement enables rfc2307bis style groups in GOsa. You can use +.I member +attributes instead of memberUid in this case. To make it work +on unix systems, you've to adjust your NSS configuration to +use rfc2307bis style groups, too. +.PP + +.B ppdPath +.I path +.PP +The +.I ppdPath +variable defines where to store PPD files for the GOto environment plugins. +.PP + +.B resolutions +.I path +.PP +The +.I resolutions +variable defines a plain text file which contains additional resolutions +to be shown in the environment and system plugins. +.PP + +.B htaccessAuthentication +.I bool +.PP +The +.I htaccessAuthentication +variable tells GOsa to use either htaccess authentication or LDAP authentication. This +can be used if you want to use i.e. kerberos to authenticate the users. +.PP + +.B gosaSupportURI +.I URI +.PP +The +.I gosaSupportURI +defines the major gosa-si server host and the password for GOsa to connect to it. +can be used if you want to use i.e. kerberos to authenticate the users. + +The format is: + +.nf +credentials@host:port +.fi +.PP + + +.B Browser and display options + +.B listSummary +.I true/false +.PP +The +.I listSummary +statement determines whether a status bar will be shown on the bottom of +GOsa generated lists, displaying a short summary of type and number of +elements in the list. +.PP + +.B iconsize +.I size value +.PP +The +.I iconsize +statement sets the icon size in the main menu. Its value should be something +like 48x48. +.PP + +.B sendCompressedOutput +.I true/false +.PP +The +.I sendCompressedOutput +statement determines whether PHP should send compressed HTML pages to +browsers or not. This may increase or decrease the performance, depending +on your network. +.PP + +.B storeFilterSettings +.I true/false +.PP +The +.I storeFilterSettings +statement determines whether GOsa should store filter and plugin settings +inside of a cookie. +.PP + +.B language +.I string +.PP +The +.I language +statement defines the default language used by GOsa. Normally GOsa autodetects +the language from the browser settings. If this is not working or you want to +force the language, just add the language code (i.e. de for german) here. +.PP + +.B theme +.I string +.PP +The +.I theme +statement defines what theme is used to display GOsa pages. You can install some +corporate identity like theme and/or modify certain templates to fit your needs +within themes. Take a look at the GOsa +.I FAQ +for more information. +.PP + +.B sessionLifetime +.I int +.PP +The +.I sessionLifetime +value defines when a session will expire in seconds. For Debian systems, this will +not work because the sessions will be removed by a cron job instead. Please modify +the value inside of your php.ini instead. +.PP + +.B primaryGroupFilter +.I bool +.PP +The +.I primaryGroupFilter +variable enables or disables the group filter to show primary user groups. It is +time consuming to evaluate which groups are primary and which are not. So you may +want to set it to +.I true +if your group plugin is slow. +.PP + +.B iePngWorkaround +.I bool +.PP +The +.I iePngWorkaround +variable enables or disables a workaround for IE < 7 in order to display transparent +PNG files correctly. This drastically slows down browsing. Please use Firefox or Opera +instead. +.PP +.PP + + +.B Password options +.PP +.B passwordMinLength +.I integer +.PP +The +.I passwordMinLength +statement determines whether a newly entered password has to be of +a minimum length. +.PP + +.B passwordMinDiffer +.I integer +.PP +The +.I passwordMinDiffer +statement determines whether a newly entered password has to be checked +to have at least n different characters. +.PP + +.B passwordHook +.I path +.PP +The +.I passwordHook +can specify an external script to handle password settings at some other +location besides the LDAP. It will be called this way: + +.nf +/path/to/your/script "username" "oldpassword" "newpassword" +.fi + +.B handleExpiredAccounts +.I bool +.PP +The +.I handleExpiredAccounts +statement enables shadow attribute tests during the login to the GOsa web +interface and forces password renewal or account lockout. +.PP + +.B useSaslForKerberos +.I bool +.PP +The +.I useSaslForKerberos +statement defines the way the kerberos realm is stored in the +.I userPassword +attribute. Set it to +.I true +in order to get {sasl}user@REALM.NET, or to +.I false +to get {kerberos}user@REALM.NET. The latter is outdated, but may be +needed from time to time. +.PP +.PP + + +.B LDAP options +.PP +.B ldapMaxQueryTime +.I integer +.PP +The +.I ldapMaxQueryTime +statement tells GOsa to stop LDAP actions if there is no answer within the +specified number of seconds. +.PP + +.B schemaCheck +.I bool +.PP +The +.I schemaCheck +statement enables or disables schema checking during login. It is recommended +to switch this on in order to let GOsa handle object creation more efficient. +.PP + +.B ldapTLS +.I bool +.PP +The +.I ldapTLS +statement enables or disables TLS operating on LDAP connections. +.PP + +.B accountPrimaryAttribute +.I cn/uid +.PP +The +.I accountPrimaryAttribute +option tells GOsa how to create new accounts. Possible values are +.I uid +and +.I cn. +In the first case GOsa creates uid style DN entries: +.nf +uid=superuser,ou=staff,dc=example,dc=net +.fi +In the second case, GOsa creates cn style DN entries: +.nf +cn=Foo Bar,ou=staff,dc=example,dc=net +.fi +If you choose "cn" to be your +.I accountPrimaryAttribute +you can decide whether to include the personal title in your dn by +selecting +.I personalTitleInDN. +.PP + +.B personalTitleInDN +.I bool +.PP +The +.I personalTitleInDN +option tells GOsa to include the personal title in user DNs when +.I accountPrimaryAttribute +is set to "cn". + +.B userRDN +.I string +.PP +The +.I userRDN +statement defines the location where new accounts will be created inside of +defined departments. The default is +.I ou=people. +.PP + +.B groupsRDN +.I string +.PP +The +.I groupsRDN +statement defines the location where new groups will be created inside of +defined departments. The default is +.I ou=groups. +.PP + +.B sudoRDN +.I string +.PP +The +.I sudoRDN +statement defines the location where new groups will be created inside of +defined departments. The default is +.I ou=groups. +.PP + +.B sambaMachineAccountRDN +.I string +.PP +This statement defines the location where GOsa looks for new samba workstations. +.PP + +.B ogroupRDN +.I string +.PP +This statement defines the location where GOsa creates new object groups inside of defined +departments. Default is +.I ou=groups. +.PP + +.B serverRDN +.I string +.PP +This statement defines the location where GOsa creates new servers inside of defined +departments. Default is +.I ou=servers. +.PP + +.B terminalRDN +.I string +.PP +This statement defines the location where GOsa creates new terminals inside of defined +departments. Default is +.I ou=terminals. +.PP + +.B workstationRDN +.I string +.PP +This statement defines the location where GOsa creates new workstations inside of defined +departments. Default is +.I ou=workstations. +.PP + +.B printerRDN +.I string +.PP +This statement defines the location where GOsa creates new printers inside of defined +departments. Default is +.I ou=printers. +.PP + +.B componentRDN +.I string +.PP +This statement defines the location where GOsa creates new network components inside of defined +departments. Default is +.I ou=components. +.PP + +.B phoneRDN +.I string +.PP +This statement defines the location where GOsa creates new phones inside of defined +departments. Default is +.I ou=phones. +.PP + +.B phoneConferenceRDN +.I string +.PP +This statement defines the location where GOsa creates new phone conferences inside of defined +departments. Default is +.I ou=conferences. +.PP + +.B faxBlocklistRDN +.I string +.PP +This statement defines the location where GOsa creates new fax blocklists inside of defined +departments. Default is +.I ou=blocklists. +.PP + +.B systemIncomingRDN +.I string +.PP +This statement defines the location where GOsa looks for new systems to be joined to the LDAP. +Default is +.I ou=incoming. +.PP + +.B systemRDN +.I string +.PP +This statement defines the base location for servers, workstations, terminals, phones and +components. Default is +.I ou=systems. +.PP + +.B ogroupRDN +.I string +.PP +This statement defines the location where GOsa looks for object groups. +Default is +.I ou=groups. +.PP + +.B aclRoleRDN +.I string +.PP +This statement defines the location where GOsa stores ACL role definitions. +Default is +.I ou=aclroles. +.PP + +.B phoneMacroRDN +.I string +.PP +This statement defines the location where GOsa stores phone macros for use with the Asterisk +phone server. +Default is +.I ou=macros,ou=asterisk,ou=configs,ou=systems. +.PP + +.B faiBaseRDN +.I string +.PP +This statement defines the location where GOsa looks for FAI settings. +Default is +.I ou=fai,ou=configs,ou=systems. +.PP + +.B faiScriptRDN, faiHookRDN, faiTemplateRDN, faiVariableRDN, faiProfileRDN, faiPackageRDN, faiPartitionRDN +.I string +.PP +These statement define the location where GOsa stores FAI classes. The complete base for the +corresponding class is an additive of +.B faiBaseRDN +an and this value. +.PP + +.B deviceRDN +.I string +.PP +This statement defines the location where GOsa looks for devices. +Default is +.I ou=devices. +.PP + +.B mimetypeRDN +.I string +.PP +This statement defines the location where GOsa stores mime type definitions. +Default is +.I ou=mimetypes. +.PP + +.B applicationRDN +.I string +.PP +This statement defines the location where GOsa stores application definitions. +Default is +.I ou=apps. +.PP + +.B ldapFilterNestingLimit +.I integer +.PP +The +.I ldapFilterNestingLimit +statement can be used to speed up group handling for groups with several hundreds of members. +The default behaviour is, that GOsa will resolv the memberUid values in a group to real names. +To achieve this, it writes a single filter to minimize searches. Some LDAP servers (namely +Sun DS) simply crash when the filter gets too big. You can set a member limit, where GOsa will +stop to do these lookups. +.PP + +.B ldapSizelimit +.I integer +.PP +The +.I ldapSizelimit +statement tells GOsa to retrieve the specified maximum number of results. The user will get +a warning, that not all entries were shown. +.PP + +.B ldapFollowReferrals +.I bool +.PP +The +.I ldapFollowReferrals +statement tells GOsa to follow LDAP referrals. +.PP +.PP + + +.B Account creation options +.PP +.B uidNumberBase +.I integer +.PP +The +.I uidNumberBase +statement defines where to start looking for a new free user id. This should be synced +with your +.I adduser.conf +to avoid overlapping uidNumber values between local and LDAP based lookups. The uidNumberBase +can even be dynamic. Take a look at the +.I baseIdHook +definition below. +.PP + +.B gidNumberBase +.I integer +.PP +The +.I gidNumberBase +statement defines where to start looking for a new free group id. This should be synced +with your +.I adduser.conf +to avoid overlapping gidNumber values between local and LDAP based lookups. The gidNumberBase +can even be dynamic. Take a look at the +.I nextIdHook +definition below. +.PP + +.B minId +.I integer +.PP +The +.I minId +statement defines the minimum assignable user or group id to avoid security leaks with +uid 0 accounts. +.PP + +.B nextIdHook +.I path +.PP +The +.I nextIdHook +statement defines a script to be called for finding the next free id for users or groups +externaly. It gets called with the current entry "dn" and the attribute to be ID'd. It +should return an integer value. +.PP + +.B hash +.I string +.PP +The +.I hash +statement defines the default password hash to choose for new accounts. Valid values are +.I crypt/standard-des, crypt/md5, crypt/enhanced-des, crypt/blowfish, md5, sha, ssha, smd5, clear +and +.I sasl. +These values will be overridden when using templates. +.PP + +.B idGenerator +.I string +.PP +The +.I idGenerator +statement describes an automatic way to generate new user ids. There are two basic +functions supported - which can be combined: + + a) using attributes + + You can specify LDAP attributes (currently only sn and givenName) in + braces {} and add a percent sign befor it. Optionally you can strip it + down to a number of characters, specified in []. I.e. + +.nf + idGenerator="{%sn}-{%givenName[2-4]}" +.fi + + will generate an ID using the full surename, adding a dash, and adding at + least the first two characters of givenName. If this ID is used, it'll + use up to four characters. If no automatic generation is possible, a + input box is shown. + + b) using automatic id's + + I.e. specifying + +.nf + idGenerator="acct{id:3}" +.fi + + will generate a three digits id with the next free entry appended to + "acct". + +.nf + idGenerator="ext{id#3}" +.fi + + will generate a three digits random number appended to "ext". +.PP +.PP + + +.B Samba options +.PP +.B sambaSID +.I string +.PP +The +.I sambaSID +statement defines a samba SID if not available inside of the LDAP. You can retrieve +the current sid by +.I net getlocalsid. +.PP + +.B sambaRidBase +.I integer +.PP +The +.I sambaRidBase +statement defines the base id to add to ordinary sid calculations - if not available +inside of the LDAP. +.PP + +.B sambaversion +.I 2/3 +.PP +The +.I sambaversion +statement defines the version of samba you want to write LDAP entries for. Be sure +to include the correct schema in this case. Valid values are 2 and 3. +.PP + +.B sambaHashHook +.I path +.PP +The +.I sambaHashHook +statement contains an executable to generate samba hash values. This is required +for password synchronization, but not required if you apply gosa-si services. +If you don't have mkntpasswd from the samba distribution installed, you can use +perl to generate the hash: + +.nf +perl -MCrypt::SmbHash -e "print join(q[:], ntlmgen \\$ARGV[0]), $/;" +.if +.PP + +.B sambaidmapping +.I bool +.PP +The +.I sambaidmapping +statement tells GOsa to maintain sambaIdmapEntry objects. Depending on your +setup this can drastically improve the windows login performance. +.PP +.PP + +.B Asterisk options +.PP +.B ctiHook +.I path +.PP +The +.I ctiHook +statement defines a script to be executed if someone clicks on a phone number +inside of the addressbook plugin. It gets called with two parameters: + +.nf +ctiHook $source_number $destination_number +.fi + +This script can be used to do automatted dialing from the addressbook. +.PP +.PP + +.B Mail options +.PP +.B mailMethod +.I Cyrus/SendmailCyrus/Kolab/Kolab22 +.PP +The +.I mailMethod +statement tells GOsa which mail method the setup should use to communicate +with a possible mail server. Leave this undefined if your mail method does +not match the predefined ones. + +.I Cyrus +maintains accounts and sieve scripts in cyrus servers. +.I Kolab/Kolab22 +is like cyrus, but lets the kolab daemon maintain the accounts. +.I SendmailCyrus is based on sendmail LDAP attributes. +.PP + +.B cyrusUseSlashes +.I bool +.PP +The +.I cyrusUseSlashes +statement determines if GOsa should use "foo/bar" or "foo.bar" namespaces +in IMAP. Unix style is with slashes. + +.B postfixRestrictionFilters +.I path +.PP +The +.I postfixRestrictionFilters +statement defines a file to include for the postfix module in order +to display user defined restriction filters. + +.B postfixProtocols +.I path +.PP +The +.I postfixProtocols +statement defines a file to include for the postfix module in order +to display user defined protocols. + +.B mailAttribute +.I mail/uid +.PP +The +.I mailAttribute +statement determines which attribute GOsa will use to create accounts. +Valid values are +.I mail +and +.I uid. + +.B mailFolderCreation +Every mail method has its own way to create mail accounts like +.I share/development +or +.I shared.development@example.com +which is used to identify the accounts, set quotas or add acls. + +To override the methods default account creation syntax, you can set the +.I mailFolderCreation +option. + +.I Examples + +.nf + mailFolderCreation="%prefix%%cn%" => "shared.development" + mailFolderCreation="my-prefix.%cn%%domain%" => "my-prefix.development@example.com"> +.fi + +.I Placeholders + +.nf + %prefix% The methods default prefix. (Depends on cyrusUseSlashes=FALSE/TRUE) + %cn% The groups/users cn. + %uid% The users uid. + %mail% The objects mail attribute. + %domain% The domain part of the objects mail attribute. + %mailpart% The user address part of the mail address. + %uattrib% Depends on mailAttribute="uid/mail". +.fi + + +.B mailUserCreation +This attribute allows to override the user account creation syntax, see +the +.I mailFolderCreation +description for more details. + +.I Examples + +.nf + mailUserCreation="%prefix%%uid%" => "user.foobar" + mailUserCreation=my-prefix.%uid%%domain%" => "my-prefix.foobar@example.com" +.fi + + +.B vacationTemplateDirectory +.I path +.PP +The +.I vacationTemplateDirectory +statement sets the path where GOsa will look for vacation message +templates. Default is /etc/gosa/vacation. + +Example template /etc/gosa/vacation/business.txt: + +.nf + DESC:Away from desk + Hi, I'm currently away from my desk. You can contact me on + my cell phone via %mobile. + + Greetings, + %givenName %sn +.fi +.PP + + +.B Debug options +.PP +.B displayerrors +.I bool +.PP +The +.I displayerrors +statement tells GOsa to show PHP errors in the upper part of the screen. This +should be disabled in productive deployments, because there might be some +important passwords arround. +.PP + +.B ldapstats +.I bool +.PP +The +.I ldapstats +statement tells GOsa to track LDAP timing statistics to the syslog. This may +help to find indexing problems or bad search filters. +.PP + +.B ignoreAcl +.I dn +.PP +The +.I ignoreAcl +value tells GOsa to ignore complete ACL sets for the given DN. Add your +DN here and you'll be able to restore accidently dropped ACLs. +.PP + +.B debuglevel +.I integer +.PP +The +.I debuglevel +value tells GOsa to display certain information on each page load. Value +is an AND combination of the following byte values: + +DEBUG_TRACE = 1 + +DEBUG_LDAP = 2 + +DEBUG_MYSQL = 4 + +DEBUG_SHELL = 8 + +DEBUG_POST = 16 + +DEBUG_SESSION = 32 + +DEBUG_CONFIG = 64 + +DEBUG_ACL = 128 + +DEBUG_SI = 256 + +DEBUG_MAIL = 512 +.PP + + +.SH LDAP resource definition + +For every location you define inside your gosa.conf, you need at least +one entry of the type +.I referral. +These entries define the way how to connect to some directory service. + +.B Example: + +.nf + +.fi + +.I uri +is a valid LDAP uri extendet by the base this referral is responsible for. +.I admin +is the DN which has the permission to write LDAP entries. And +.I password +is the corresponding password for this DN. + +You can define a set of referrals if you have several server to +connect to. + +.SH Settings for the environment plugin + +In order to make full use of the environment plugin, you may want +to define the location where kiosk profiles will be stored on the +servers harddisk. + +This is done by the +.I kioskPath +keyword defined within the +.I environment +class definition inside your gosa.conf. + +.B Example: + +.nf + +.fi + +Make sure, that this path is writeable by GOsa. + +.SH Settings for the FAI plugin + +The FAI plugin can be used in a way that it generates branched or +freezed releases inside your repository. Specifying the +.I postcreate +and +.I postmodify +keywords in the +.I servrepository +definition, calls the provided script as a hook when adding or +removing branches. This script should do the rest inside of your +repository. + +.B Example: + +.nf + +Buildarch: noarch +%if %{suse} +Requires: apache2,apache2-mod_php5,php5,php5-gd,php5-ldap,php5-mcrypt,php5-mysql,php5-imap,php5-iconv,php5-mbstring,php5-gettext,php5-session,ImageMagick +%else +Requires: httpd,php,php-ldap,php-imap,php-snmp,php-mysql,php-mbstring,ImageMagick +%endif +BuildRoot: %{_tmppath}/%{name}-%{version}-root +BuildArch: noarch + +%define confdir /etc/%{name} + +%if %{suse} + %{echo:Building SuSE rpm} + %define apacheuser wwwrun + %define apachegroup root + %define webconf /etc/apache2/conf.d/ + %define docdir /usr/share/doc/packages/gosa +%else + %{echo:Building other rpm} + %define apacheuser apache + %define apachegroup apache + %define webconf /etc/httpd/conf.d/ + %define docdir /usr/share/doc/gosa-%{version} +%endif + +%description +GOsa is a combination of system-administrator and end-user web +interface, designed to handle LDAP based setups. +Provided is access to posix, shadow, samba, proxy, fax, and kerberos +accounts. It is able to manage the postfix/cyrus server combination +and can write user adapted sieve scripts. + +%package schema +Group: System/Administration +Summary: Schema Definitions for the GOSA package +%if %{suse} +Requires: openldap2 >= 2.1.22 +%else +Requires: openldap-servers >= 2.2.0 +%endif +Obsoletes: gosa-ldap + +%description schema +Contains the Schema definition files for the GOSA admin package. + +%package mkntpasswd +Group: System/Administration +Summary: Schema Definitions for the GOSA package +%if %{suse} +Requires: perl-Crypt-SmbHash +%else +Requires: perl-Crypt-SmbHash >= 0.02 +%endif + +%description mkntpasswd +Wrapper Script around perl to create Samba Hashes on the fly, added for completeness only. +If in doubt use sambas "native" mkntpwd tool to generate hashes for GOsa. + +%package help-en +Group: System/Administration +Summary: English online manual for GOSA package +Requires: gosa >= %{version} + +%description help-en +English online manual page for GOSA package + +%package help-de +Group: System/Administration +Summary: German localized online manual for GOSA package +Requires: gosa >= %{version} + +%description help-de +German localized online manual page for GOSA package + +%package help-fr +Group: System/Administration +Summary: French localized online manual for GOSA package +Requires: gosa >= %{version} + +%description help-fr +French localized online manual page for GOSA package + +%package help-nl +Group: System/Administration +Summary: Dutch localized online manual for GOSA package +Requires: gosa >= %{version} + +%description help-nl +Dutch localized online manual page for GOSA package + +%prep +%setup -q -n %{sourcename} +find . -depth -name CVS -type d | xargs rm -rf + +%build + + +%install +# Create buildroot +mkdir -p %{buildroot}/usr/share/gosa + +# Copy +DIRS="doc ihtml plugins html include locale setup" +for i in $DIRS; do \ + cp -ua $i %{buildroot}/usr/share/gosa/$i ; \ +done +mkdir %{buildroot}/usr/bin +cp bin/mkntpasswd %{buildroot}/usr/bin/ + +# Create files for temporary stuff +for i in compile config cache; do \ + mkdir -p %{buildroot}/var/spool/gosa/$i ; \ +done + +# Cleanup manual dirs +for i in admin devel; do \ + rm -rf %{buildroot}/usr/share/gosa/doc/guide/$i ; \ +done + +# Remove (some) unneeded files +for i in gen_locale.sh gen_online_help.sh gen_function_list.php update.sh; do \ + rm -rf %{buildroot}/usr/share/gosa/$i ; \ +done + +# Cleanup lyx warnings +find %{buildroot}/usr/share/gosa -name WARNINGS |xargs rm + + +# Cleanup guide +rm -rf %{buildroot}/usr/share/gosa/doc/guide/user/*/lyx-source + + +# Copy default config +mkdir -p %{buildroot}%{confdir} +mkdir -p %{buildroot}%{webconf} + +cat > %{buildroot}%{webconf}/gosa_include.conf < + Options None + AllowOverride None + Order allow,deny + Allow from all + +# Set alias to gosa +Alias /gosa /usr/share/gosa/html +EOF + +mkdir -p %{buildroot}/etc/openldap/schema/gosa +mv contrib/openldap/*.schema %{buildroot}/etc/openldap/schema/gosa +sed 's%"CONFIG_TEMPLATE_DIR", "../contrib/"%"CONFIG_TEMPLATE_DIR", "%{docdir}/"%g' %{buildroot}/usr/share/gosa/include/functions.inc > %{buildroot}/usr/share/gosa/include/functions.inc.new +mv -f %{buildroot}/usr/share/gosa/include/functions.inc.new %{buildroot}/usr/share/gosa/include/functions.inc + +mv -f doc manual +mkdir -p %{buildroot}/etc/gosa/vacation +mv -f %{buildroot}/usr/share/gosa/plugins/personal/mail/sieve-*.txt %{buildroot}/etc/gosa +mkdir -p %{buildroot}/usr/share/doc/gosa-%{version} +rm -rf %{buildroot}/usr/share/gosa/contrib +#rm -rf %{buildroot}/usr/share/gosa/doc +#rmdir contrib/openldap +bzip2 -9 contrib/opensides/goSamba.pl + +%clean +rm -rf %{buildroot} + +%post +# Add shells file to /etc/gosa +/bin/cp /etc/shells /etc/gosa + +%pre +# Cleanup compile dir on updates, always exit cleanly even on errors +[ -d /var/spool/gosa ] && rm -rf /var/spool/gosa/* ; exit 0 + +%postun +# Remove temporary files, just to be sure +[ -d /var/spool/gosa ] && rm -rf /var/spool/gosa/* ; exit 0 + +%files +%defattr(-,%{apacheuser},%{apachegroup}) +%doc %attr(-,root,root) AUTHORS TODO README README.safemode Changelog COPYING INSTALL FAQ +%doc %attr(-,root,root) contrib/altlinux contrib/fix_config.sh contrib/gosa.conf contrib/mysql contrib/opensides +%doc %attr(-,root,root) contrib/patches contrib/scripts contrib/vacation_example.txt contrib/demo.ldif contrib/openldap + +%config(noreplace) %attr(0600,%{apacheuser},%{apachegroup}) %{webconf}/gosa_include.conf +%config(noreplace) %attr(0700,%{apacheuser},%{apachegroup}) /etc/gosa +%attr(0700, %{apacheuser}, %{apachegroup}) /var/spool/gosa +%attr(0744, %{apacheuser}, %{apachegroup}) /usr/share/gosa/html +%attr(0744, %{apacheuser}, %{apachegroup}) /usr/share/gosa/ihtml +%attr(0744, %{apacheuser}, %{apachegroup}) /usr/share/gosa/include +%attr(0744, %{apacheuser}, %{apachegroup}) /usr/share/gosa/locale +%attr(0744, %{apacheuser}, %{apachegroup}) /usr/share/gosa/setup +%attr(0744, %{apacheuser}, %{apachegroup}) /usr/share/gosa/plugins +%attr(0744, %{apacheuser}, %{apachegroup}) /usr/share/gosa/doc/guide.xml + +%files schema +%defattr(-,root,root) +%doc COPYING AUTHORS README contrib/demo.ldif contrib/openldap +/etc/openldap/schema/gosa + +%files mkntpasswd +%defattr(-,root,root) +/usr/bin/mkntpasswd + +%files help-en +%defattr(-,root,root) +/usr/share/gosa/doc/guide/user/en + +%files help-de +%defattr(-,root,root) +/usr/share/gosa/doc/guide/user/de + +%files help-fr +%defattr(-,root,root) +/usr/share/gosa/doc/guide/user/fr + +%files help-nl +%defattr(-,root,root) +/usr/share/gosa/doc/guide/user/nl + +%changelog +* Mon May 7 2007 Lars Scheiter 2.5.99cvs +- Changed packageversion to reflect CVS status of resulting build + +* Wed Apr 11 2007 Lars Scheiter 2.5.10 +- New upstream +- Added new subpackage mkntpasswd +- Remove perl dependencies off of GOsa main package + +* Tue Mar 6 2007 Lars Scheiter 2.5.9 +- New upstream +- fixed typo in updateprocess + +* Mon Jan 15 2007 Lars Scheiter 2.5.8 +- New upstream release with security fixes + +* Wed Dec 20 2006 Lars Scheiter 2.5.7 +- New upstream +- %pre and %postun always end successfully now, even on errors + +* Fri Nov 17 2006 Lars Scheiter 2.5.6 +- New upstream +- Cleanup temporary dir after package removal +- Cleanup temporary dir before update + +* Thu Sep 28 2006 Lars Scheiter 2.5.4 +- New upstream version +- Downgraded SuSE dependencies to php4 + +* Wed Jun 21 2006 Lars Scheiter 2.5.1 +- New upstream version + +* Tue May 30 2006 Lars Scheiter 2.5 +- Updated RedHat dependencies +- New upstream version +- Spelling errors fixed ;) +- Seperation of online manual + +* Mon Dec 19 2005 Lars Scheiter 2.4-2 +- Updated SuSE dependencies to php5 + +* Mon Nov 21 2005 Lars Scheiter 2.4 +- New upstream version +- Removed %doc for postgresql and openexchange + +* Wed Jun 01 2005 Lars Scheiter 2.4beta1 +- New upstream version +- Added gosa.conf to contrib dir +- Rearranged documentation stuff +- Updated dependencies +- compress some files + +* Mon Feb 21 2005 Lars Scheiter 2.3 +- Update version to 2.3 (upstream) + +* Mon Dec 13 2004 Lars Scheiter 2.2-2 +- Optionally allow different sourcenames + +* Mon Nov 22 2004 Lars Scheiter 2.2 +- Update to 2.2 (upstream) +- reintroduction of suse detection +- small fixes +- Corrected URL +- Synchronize schema package name with debian + +* Mon May 19 2004 Levente Farkas 2.1.1 +- update to 2.1.1 + +* Mon Apr 19 2004 Levente Farkas 2.1 +- update to 2.1 + +* Fri Apr 16 2004 Levente Farkas 2.1 +- minor fixes +- update to 2.1rc2 + +* Tue Jan 24 2004 Henning P. Schmiedehausen 2.1-2t +- bumped to 2.1beta2 +- first INTERMETA internal build + +* Mon Oct 20 2003 Lars Scheiter +- Update to new upstream release (2.0rc1) + +* Fri Oct 17 2003 Lars Scheiter +- First build of GOsa as an RPM, should work on SuSE and RedHat diff --git a/trunk/gosa-core/contrib/latex2html b/trunk/gosa-core/contrib/latex2html new file mode 100755 index 000000000..5b4e3f7f5 --- /dev/null +++ b/trunk/gosa-core/contrib/latex2html @@ -0,0 +1,17413 @@ +#! /usr/bin/perl +# +# $Id: latex2html.pin,v 1.71 2004/01/06 23:49:54 RRM Exp $ +# +# Comprises patches and revisions by various authors: +# See Changes, the log file of LaTeX2HTML. +# +# Original Copyright notice: +# +# LaTeX2HTML by Nikos Drakos + +# **************************************************************** +# LaTeX To HTML Translation ************************************** +# **************************************************************** +# LaTeX2HTML is a Perl program that translates LaTeX source +# files into HTML (HyperText Markup Language). For each source +# file given as an argument the translator will create a +# directory containing the corresponding HTML files. +# +# The man page for this program is included at the end of this file +# and can be viewed using "perldoc latex2html" +# +# For more information on this program and some examples of its +# capabilities visit +# +# http://www.latex2html.org/ +# +# or see the accompanying documentation in the docs/ directory +# +# or +# +# http://www-texdev.ics.mq.edu.au/l2h/docs/manual/ +# +# or +# +# http://www.cbl.leeds.ac.uk/nikos/tex2html/doc/latex2html/ +# +# Original code written by Nikos Drakos, July 1993. +# +# Address: Computer Based Learning Unit +# University of Leeds +# Leeds, LS2 9JT +# +# Copyright (c) 1993-95. All rights reserved. +# +# +# Extensively modified by Ross Moore, Herb Swan and others +# +# Address: Mathematics Department +# Macquarie University +# Sydney, Australia, 2109 +# +# Copyright (c) 1996-2001. All rights reserved. +# +# See general license in the LICENSE file. +# +########################################################################## + +use 5.003; # refuse to work with old and buggy perl version +#use strict; +#use diagnostics; + +# include some perl packages; these come with the standard distribution +use Getopt::Long; +use Fcntl; +use AnyDBM_File; + +# The following are global variables that also appear in some modules +use vars qw($LATEX2HTMLDIR $LATEX2HTMLPLATDIR $SCRIPT + %Month %used_icons $inside_tabbing $TABLE_attribs + %mathentities $date_name $outer_math $TABLE__CELLPADDING_rx); + +BEGIN { + # print "scanning for l2hdir\n"; + if($ENV{'LATEX2HTMLDIR'}) { + $LATEX2HTMLDIR = $ENV{'LATEX2HTMLDIR'}; + } else { + $ENV{'LATEX2HTMLDIR'} = $LATEX2HTMLDIR = '/usr/share/latex2html'; + } + + if($ENV{'LATEX2HTMLPLATDIR'}) { + $LATEX2HTMLPLATDIR = $ENV{'LATEX2HTMLPLATDIR'}; + } else { + $LATEX2HTMLPLATDIR = '/usr/share/latex2html'||$LATEX2HTMLDIR; + $ENV{'LATEX2HTMLPLATDIR'} = $LATEX2HTMLPLATDIR; + } + if(-d $LATEX2HTMLPLATDIR) { + push(@INC,$LATEX2HTMLPLATDIR); + } + + if(-d $LATEX2HTMLDIR) { + push(@INC,$LATEX2HTMLDIR); + } else { + die qq{Fatal: Directory "$LATEX2HTMLDIR" does not exist.\n}; + } +} + +use L2hos; # Operating system dependent routines + +# $^W = 1; # turn on warnings + +my $RELEASE = '2002-2-1'; +my ($REVISION) = q$Revision: 1.71 $ =~ /:\s*(\S+)/; + +# The key, which delimts expressions defined in the environment +# depends on the operating system. +$envkey = L2hos->pathd(); + +# $dd is the directory delimiter character +$dd = L2hos->dd(); + +# make sure the $LATEX2HTMLDIR is on the search-path for forked processes +if($ENV{'PERL5LIB'}) { + $ENV{'PERL5LIB'} .= "$envkey$LATEX2HTMLDIR" + unless($ENV{'PERL5LIB'} =~ m|\Q$LATEX2HTMLDIR\E|o); +} else { + $ENV{'PERL5LIB'} = $LATEX2HTMLDIR; +} + +# Local configuration, read at runtime +# Read the $CONFIG_FILE (usually l2hconf.pm ) +if($ENV{'L2HCONFIG'}) { + require $ENV{'L2HCONFIG'} || + die "Fatal (require $ENV{'L2HCONFIG'}): $!"; +} else { + eval 'use l2hconf'; + if($@) { + die "Fatal (use l2hconf): $@\n"; + } +} + +# MRO: Changed this to global value in config/config.pl +# change these whenever you do a patch to this program and then +# name the resulting patch file accordingly +# $TVERSION = "2002-2-1"; +#$TPATCHLEVEL = " beta"; +#$TPATCHLEVEL = " release"; +#$RELDATE = "(March 30, 1999)"; +#$TEX2HTMLV_SHORT = $TVERSION . $TPATCHLEVEL; + +$TEX2HTMLV_SHORT = $RELEASE; +$TEX2HTMLVERSION = "$TEX2HTMLV_SHORT ($REVISION)"; +$TEX2HTMLADDRESS = "http://www.latex2html.org/"; +$AUTHORADDRESS = "http://cbl.leeds.ac.uk/nikos/personal.html"; +#$AUTHORADDRESS2 = "http://www-math.mpce.mq.edu.au/%7Eross/"; +$AUTHORADDRESS2 = "http://www.maths.mq.edu.au/~ross/"; + +# Set $HOME to what the system considers the home directory +$HOME = L2hos->home(); +push(@INC,$HOME); + +# flush stdout with every print -- gives better feedback during +# long computations +$| = 1; + +# set Perl's subscript separator to LaTeX's illegal character. +# (quite defensive but why not) +$; = "\000"; + +# No arguments!! +unless(@ARGV) { + die "Error: No files to process!\n"; +} + +# Image prefix +$IMAGE_PREFIX = '_image'; + +# Partition prefix +$PARTITION_PREFIX = 'part_' unless $PARTITION_PREFIX; + +# Author address +@address_data = &address_data('ISO'); +$ADDRESS = "$address_data[0]\n$address_data[1]"; + +# ensure non-zero defaults +$MAX_SPLIT_DEPTH = 4 unless ($MAX_SPLIT_DEPTH); +$MAX_LINK_DEPTH = 4 unless ($MAX_LINK_DEPTH); +$TOC_DEPTH = 4 unless ($TOC_DEPTH); + +# A global value may already be set in the $CONFIG_FILE +$INIT_FILE_NAME = $ENV{'L2HINIT_NAME'} || '.latex2html-init' + unless $INIT_FILE_NAME; + +# Read the $HOME/$INIT_FILE_NAME if one is found +if (-f "$HOME$dd$INIT_FILE_NAME" && -r _) { + print "Note: Loading $HOME$dd$INIT_FILE_NAME\n"; + require("$HOME$dd$INIT_FILE_NAME"); + $INIT_FILE = "$HOME$dd$INIT_FILE_NAME"; + # _MRO_TODO_: Introduce a version to be checked? + die "Error: You have an out-of-date " . $HOME . + "$dd$INIT_FILE_NAME file.\nPlease update or delete it.\n" + if ($DESTDIR eq '.'); +} + +# Read the $INIT_FILE_NAME file if one is found in current directory +if ( L2hos->Cwd() ne $HOME && -f ".$dd$INIT_FILE_NAME" && -r _) { + print "Note: Loading .$dd$INIT_FILE_NAME\n"; + require(".$dd$INIT_FILE_NAME"); + $INIT_FILE = "$INIT_FILE_NAME"; +} +die "Error: '.' is an incorrect setting for DESTDIR.\n" . + "Please check your $INIT_FILE_NAME file.\n" + if ($DESTDIR eq '.'); + +# User home substitutions +$LATEX2HTMLSTYLES =~ s/~([$dd$dd$envkey]|$)/$HOME$1/go; +# the next line fails utterly on non-UNIX systems +$LATEX2HTMLSTYLES =~ s/~([^$dd$dd$envkey]+)/L2hos->home($1)/geo; + +#absolutise the paths +$LATEX2HTMLSTYLES = join($envkey, + map(L2hos->Make_directory_absolute($_), + split(/$envkey/o, $LATEX2HTMLSTYLES))); + +#HWS: That was the last reference to HOME. Now set HOME to $LATEX2HTMLDIR, +# to enable dvips to see that version of .dvipsrc! But only if we +# have DVIPS_MODE not set - yes - this is a horrible nasty kludge +# MRO: The file has to be updated by configure _MRO_TODO_ + +if ($PK_GENERATION && ! $DVIPS_MODE) { + $ENV{HOME} = $LATEX2HTMLDIR; + delete $ENV{PRINTER}; # Overrides .dvipsrc +} + +# language of the DTD specified in the tag +$ISO_LANGUAGE = 'EN' unless $ISO_LANGUAGE; + +# Save the command line arguments, quote where necessary +$argv = join(' ', map {/[\s#*!\$%]/ ? "'$_'" : $_ } @ARGV); + +# Pre-process the command line for backward compatibility +foreach(@ARGV) { + s/^--?no_/-no/; # replace e.g. no_fork by nofork + # s/^[+](\d+)$/$1/; # remove + in front of integers +} + +# Process command line options +my %opt; +unless(GetOptions(\%opt, # all non-linked options go into %opt + # option linkage (optional) + 'help|h', + 'version|V', + 'split=s', + 'link=s', + 'toc_depth=i', \$TOC_DEPTH, + 'toc_stars!', \$TOC_STARS, + 'short_extn!', \$SHORTEXTN, + 'iso_language=s', \$ISO_LANGUAGE, + 'validate!', \$HTML_VALIDATE, + 'latex!', + 'djgpp!', \$DJGPP, + 'fork!', \$CAN_FORK, + 'external_images!', \$EXTERNAL_IMAGES, + 'ascii_mode!', \$ASCII_MODE, + 'lcase_tags!', \$LOWER_CASE_TAGS, + 'ps_images!', \$PS_IMAGES, + 'font_size=s', \$FONT_SIZE, + 'tex_defs!', \$TEXDEFS, + 'navigation!', + 'top_navigation!', \$TOP_NAVIGATION, + 'bottom_navigation!', \$BOTTOM_NAVIGATION, + 'auto_navigation!', \$AUTO_NAVIGATION, + 'index_in_navigation!', \$INDEX_IN_NAVIGATION, + 'contents_in_navigation!', \$CONTENTS_IN_NAVIGATION, + 'next_page_in_navigation!', \$NEXT_PAGE_IN_NAVIGATION, + 'previous_page_in_navigation!', \$PREVIOUS_PAGE_IN_NAVIGATION, + 'footnode!', + 'numbered_footnotes!', \$NUMBERED_FOOTNOTES, + 'prefix=s', \$PREFIX, + 'auto_prefix!', \$AUTO_PREFIX, + 'long_titles=i', \$LONG_TITLES, + 'custom_titles!', \$CUSTOM_TITLES, + 'title|t=s', \$TITLE, + 'rooted!', \$ROOTED, + 'rootdir=s', + 'dir=s', \$FIXEDDIR, + 'mkdir', \$MKDIR, + 'address=s', \$ADDRESS, + 'noaddress', + 'subdir!', + 'info=s', \$INFO, + 'noinfo', + 'auto_link!', + 'reuse=i', \$REUSE, + 'noreuse', + 'antialias_text!', \$ANTI_ALIAS_TEXT, + 'antialias!', \$ANTI_ALIAS, + 'transparent!', \$TRANSPARENT_FIGURES, + 'white!', \$WHITE_BACKGROUND, + 'discard!', \$DISCARD_PS, + 'image_type=s', \$IMAGE_TYPE, + 'images!', + 'accent_images=s', \$ACCENT_IMAGES, + 'noaccent_images', + 'style=s', \$STYLESHEET, + 'parbox_images!', + 'math!', + 'math_parsing!', + 'latin!', + 'entities!', \$USE_ENTITY_NAMES, + 'local_icons!', \$LOCAL_ICONS, + 'scalable_fonts!', \$SCALABLE_FONTS, + 'images_only!', \$IMAGES_ONLY, + 'show_section_numbers!',\$SHOW_SECTION_NUMBERS, + 'show_init!', \$SHOW_INIT_FILE, + 'init_file=s', \$INIT_FILE, + 'up_url=s', \$EXTERNAL_UP_LINK, + 'up_title=s', \$EXTERNAL_UP_TITLE, + 'down_url=s', \$EXTERNAL_DOWN_LINK, + 'down_title=s', \$EXTERNAL_DOWN_TITLE, + 'prev_url=s', \$EXTERNAL_PREV_LINK, + 'prev_title=s', \$EXTERNAL_PREV_TITLE, + 'index=s', \$EXTERNAL_INDEX, + 'biblio=s', \$EXTERNAL_BIBLIO, + 'contents=s', \$EXTERNAL_CONTENTS, + 'external_file=s', \$EXTERNAL_FILE, + 'short_index!', \$SHORT_INDEX, + 'unsegment!', \$UNSEGMENT, + 'debug!', \$DEBUG, + 'tmp=s', \$TMP, + 'ldump!', \$LATEX_DUMP, + 'timing!', \$TIMING, + 'verbosity=i', \$VERBOSITY, + 'html_version=s', \$HTML_VERSION, + 'strict!', \$STRICT_HTML, + 'xbit!', \$XBIT_HACK, + 'ssi!', \$ALLOW_SSI, + 'php!', \$ALLOW_PHP, + 'test_mode!' # undocumented switch + )) { + &usage(); + exit 1; +} + +# interpret options, check option consistency +if(defined $opt{'split'}) { + if ($opt{'split'} =~ /^(\+?)(\d+)$/) { + $MAX_SPLIT_DEPTH = $2; + if ($1) { $MAX_SPLIT_DEPTH *= -1; $REL_DEPTH = 1; } + } else { + &usage; + die "Error: Unrecognised value for -split: $opt{'split'}\n"; + } +} +if(defined $opt{'link'}) { + if ($opt{'link'} =~ /^(\+?)(\d+)$/) { + $MAX_LINK_DEPTH = $2; + if ($1) { $MAX_LINK_DEPTH *= -1 } + } else { + &usage; + die "Error: Unrecognised value for -link: $opt{'link'}\n"; + } +} +unless ($ISO_LANGUAGE =~ /^[A-Z.]+$/) { + die "Error: Language (-iso_language) must be uppercase and dots only: $ISO_LANGUAGE\n"; +} +if ($HTML_VALIDATE && !$HTML_VALIDATOR) { + die "Error: Need a HTML_VALIDATOR when -validate is specified.\n"; +} +&set_if_false($NOLATEX,$opt{latex}); # negate the option... +if ($ASCII_MODE || $PS_IMAGES) { + $EXTERNAL_IMAGES = 1; +} +if ($FONT_SIZE && $FONT_SIZE !~ /^\d+pt$/) { + die "Error: Font size (-font_size) must end with 'pt': $FONT_SIZE\n" +} +&set_if_false($NO_NAVIGATION,$opt{navigation}); +&set_if_false($NO_FOOTNODE,$opt{footnode}); +if (defined $TITLE && !length($TITLE)) { + die "Error: Empty title (-title).\n"; +} +if ($opt{rootdir}) { + $ROOTED = 1; + $FIXEDDIR = $opt{rootdir}; +} +if ($FIXEDDIR && !-d $FIXEDDIR) { + if ($MKDIR) { + print "\n *** creating directory: $FIXEDDIR "; + die "Failed: $!\n" unless (mkdir($FIXEDDIR, 0755)); + # _TODO_ use File::Path to create a series of directories + } else { + &usage; + die "Error: Specified directory (-rootdir, -dir) does not exist.\n"; + } +} +&set_if_false($NO_SUBDIR, $opt{subdir}); +&set_if_false($NO_AUTO_LINK, $opt{auto_link}); +if ($opt{noreuse}) { + $REUSE = 0; +} +unless(grep(/^\Q$IMAGE_TYPE\E$/o, @IMAGE_TYPES)) { + die <<"EOF"; +Error: No such image type '$IMAGE_TYPE'. + This installation supports (first is default): @IMAGE_TYPES +EOF +} +&set_if_false($NO_IMAGES, $opt{images}); +if ($opt{noaccent_images}) { + $ACCENT_IMAGES = ''; +} +if($opt{noaddress}) { + $ADDRESS = ''; +} +if($opt{noinfo}) { + $INFO = 0; +} +if($ACCENT_IMAGES && $ACCENT_IMAGES !~ /^[a-zA-Z,]+$/) { + die "Error: Single word or comma-list of style words needed for -accent_images, not: $_\n"; +} +&set_if_false($NO_PARBOX_IMAGES, $opt{parbox_images}); +&set_if_false($NO_SIMPLE_MATH, $opt{math}); +if (defined $opt{math_parsing}) { + $NO_MATH_PARSING = !$opt{math_parsing}; + $NO_SIMPLE_MATH = !$opt{math_parsing} unless(defined $opt{math}); +} +&set_if_false($NO_ISOLATIN, $opt{latin}); +if ($INIT_FILE) { + if (-f $INIT_FILE && -r _) { + print "Note: Initialising with file: $INIT_FILE\n" + if ($DEBUG || $VERBOSITY); + require($INIT_FILE); + } else { + die "Error: Could not find file (-init_file): $INIT_FILE\n"; + } +} +foreach($EXTERNAL_UP_LINK, $EXTERNAL_DOWN_LINK, $EXTERNAL_PREV_LINK, + $EXTERNAL_INDEX, $EXTERNAL_BIBLIO, $EXTERNAL_CONTENTS) { + $_ ||= ''; # initialize + s/~/~/g; # protect `~' +} +if($TMP && !(-d $TMP && -w _)) { + die "Error: '$TMP' not usable as temporary directory.\n"; +} +if ($opt{help}) { + L2hos->perldoc($SCRIPT); + exit 0; +} +if ($opt{version}) { + &banner(); + exit 0; +} +if ($opt{test_mode}) { + return; # make /usr/bin/latex2html non-exploitable + $TITLE = 'LaTeX2HTML Test Document'; + $TEXEXPAND = "$PERL /build/buildd/latex2html-2002-2-1-20050114${dd}texexpand"; + $PSTOIMG = "$PERL /build/buildd/latex2html-2002-2-1-20050114${dd}pstoimg"; + $ICONSERVER = L2hos->path2URL("/build/buildd/latex2html-2002-2-1-20050114${dd}icons"); + $TEST_MODE = 1; + $RGBCOLORFILE = "/build/buildd/latex2html-2002-2-1-20050114${dd}styles${dd}rgb.txt"; + $CRAYOLAFILE = "/build/buildd/latex2html-2002-2-1-20050114${dd}styles${dd}crayola.txt"; +} +if($DEBUG) { + # make the OS-dependent functions more chatty, too + $L2hos::Verbose = 1; +} + +undef %opt; # not needed any more + + +$FIXEDDIR = $FIXEDDIR || $DESTDIR || ''; # for backward compatibility + +if ($EXTERNAL_UP_TITLE xor $EXTERNAL_UP_LINK) { + warn "Warning (-up_url, -up_title): Need to specify both a parent URL and a parent title!\n"; + $EXTERNAL_UP_TITLE = $EXTERNAL_UP_LINK = ""; +} + +if ($EXTERNAL_DOWN_TITLE xor $EXTERNAL_DOWN_LINK) { + warn "Warning (-down_url, -down_title): Need to specify both a parent URL and a parent title!\n"; + $EXTERNAL_DOWN_TITLE = $EXTERNAL_DOWN_LINK = ""; +} + +# $NO_NAVIGATION = 1 unless $MAX_SPLIT_DEPTH; # Martin Wilck + +if ($MAX_SPLIT_DEPTH && $MAX_SPLIT_DEPTH < 0) { + $MAX_SPLIT_DEPTH *= -1; $REL_DEPTH = 1; +} +if ($MAX_LINK_DEPTH && $MAX_LINK_DEPTH < 0) { + $MAX_LINK_DEPTH *= -1; $LEAF_LINKS = 1; +} + +$FOOT_FILENAME = 'footnode' unless ($FOOT_FILENAME); +$NO_FOOTNODE = 1 unless ($MAX_SPLIT_DEPTH || $NO_FOOTNODE); +$NO_SPLIT = 1 unless $MAX_SPLIT_DEPTH; # _MRO_TODO_: is this needed at all? +$SEGMENT = $SEGMENTED = 0; +$NO_MATH_MARKUP = 1; + +# specify the filename extension to use with the generated HTML files +if ($SHORTEXTN) { $EXTN = ".htm"; } # for HTML files on CDROM +elsif ($ALLOW_PHP) { $EXTN = ".php"; } # has PHP dynamic includes + # with server-side includes (SSI) : +elsif ($ALLOW_SSI && !$XBIT_HACK) { $EXTN = ".shtml"; } + # ordinary names, valid also for SSI with XBit hack : +else { $EXTN = ".html"; } + +$NODE_NAME = 'node' unless (defined $NODE_NAME); + +# space for temporary files +# different to the $TMPDIR for image-generation +# MRO: No directory should end with $dd! +$TMP_ = "TMP"; + +$TMP_PREFIX = "l2h" unless ($TMP_PREFIX); + +# This can be set to 1 when using a version of dvips that is safe +# from the "dot-in-name" bug. +# _TODO_ this should be determined by configure +$DVIPS_SAFE = 1; + +$CHARSET = $charset || 'iso-8859-1'; + +#################################################################### +# +# If possible, use icons of the same type as generated images +# +if ($IMAGE_TYPE && defined %{"icons_$IMAGE_TYPE"}) { + %icons = %{"icons_$IMAGE_TYPE"}; +} + +#################################################################### +# +# Figure out what options we need to pass to DVIPS and store that in +# the $DVIPSOPT variable. Also, scaling is taken care of at the +# dvips level if PK_GENERATION is set to 1, so adjust SCALE_FACTORs +# accordingly. +# +if ($SCALABLE_FONTS) { + $PK_GENERATION = 0; + $DVIPS_MODE = ''; +} + +if ($PK_GENERATION) { + if ($MATH_SCALE_FACTOR <= 0) { $MATH_SCALE_FACTOR = 2; } + if ($FIGURE_SCALE_FACTOR <= 0) { $FIGURE_SCALE_FACTOR = 2; } + my $saveMSF = $MATH_SCALE_FACTOR; + my $saveFSF = $FIGURE_SCALE_FACTOR; + my $desired_dpi = int($MATH_SCALE_FACTOR*75); + $FIGURE_SCALE_FACTOR = ($METAFONT_DPI / 72) * + ($FIGURE_SCALE_FACTOR / $MATH_SCALE_FACTOR) ; + $MATH_SCALE_FACTOR = $METAFONT_DPI / 72; + $dvi_mag = int(1000 * $desired_dpi / $METAFONT_DPI); + if ($dvi_mag > 1000) { + &write_warnings( + "WARNING: Your SCALE FACTOR is too large for PK_GENERATION.\n" . + " See $CONFIG_FILE for more information.\n"); + } + + # RRM: over-sized scaling, using dvi-magnification + if ($EXTRA_IMAGE_SCALE) { + print "\n *** Images at $EXTRA_IMAGE_SCALE times resolution of displayed size ***\n"; + $desired_dpi = int($EXTRA_IMAGE_SCALE * $desired_dpi+.5); + print " desired_dpi = $desired_dpi METAFONT_DPI = $METAFONT_DPI\n" + if $DEBUG; + $dvi_mag = int(1000 * $desired_dpi / $METAFONT_DPI); + $MATH_SCALE_FACTOR = $saveMSF; + $FIGURE_SCALE_FACTOR = $saveFSF; + } + # no space after "-y", "-D", "-e" --- required by DVIPS under DOS ! + my $mode_switch = "-mode $DVIPS_MODE" if $DVIPS_MODE; + $DVIPSOPT .= " -y$dvi_mag -D$METAFONT_DPI $mode_switch -e5 "; +} else { # no PK_GENERATION +# if ($EXTRA_IMAGE_SCALE) { +# &write_warnings( +# "the \$EXTRA_IMAGE_SCALE feature requires either \$PK_GENERATION=1" +# . " or the '-scalable_fonts' option"); +# $EXTRA_IMAGE_SCALE = ''; +# } + # MRO: shifted to l2hconf + #$DVIPSOPT .= ' -M'; +} # end PK_GENERATION + +# The mapping from numbers to accents. +# These are required to process the \accent command, which is found in +# tables of contents whenever there is an accented character in a +# caption or section title. Processing the \accent command makes +# $encoded_*_number work properly (see &extract_captions) with +# captions that contain accented characters. +# I got the numbers from the plain.tex file, version 3.141. + +# Missing entries should be looked up by a native speaker. +# Have a look at generate_accent_commands and $iso_8859_1_character_map. + +# MEH: added more accent types +# MRO: only uppercase needed! +%accent_type = ( + '18' => 'grave', # \` + '19' => 'acute', # `' + '20' => 'caron', # \v + '21' => 'breve', # \u + '22' => 'macr', # \= + '23' => 'ring', # + '24' => 'cedil', # \c + '94' => 'circ', # \^ + '95' => 'dot', # \. + '7D' => 'dblac', # \H + '7E' => 'tilde', # \~ + '7F' => 'uml', # \" +); + +&driver; + +exit 0; # clean exit, no errors + +############################ Subroutines ################################## + +#check that $TMP is writable, if so create a subdirectory +sub make_tmp_dir { + &close_dbm_database if $DJGPP; # to save file-handles + + # determine a suitable temporary path + # + $TMPDIR = ''; + my @tmp_try = (); + push(@tmp_try, $TMP) if($TMP); + push(@tmp_try, "$DESTDIR$dd$TMP_") if($TMP_); + push(@tmp_try, $DESTDIR) if($DESTDIR); + push(@tmp_try, L2hos->Cwd()); + + my $try; + TempTry: foreach $try (@tmp_try) { + next unless(-d $try && -w _); + my $tmp = "$try$dd$TMP_PREFIX$$"; + if(mkdir($tmp,0755)) { + $TMPDIR=$tmp; + last TempTry; + } else { + warn "Warning: Cannot create temporary directory '$tmp': $!\n"; + } + } + + $dvips_warning = <<"EOF"; + +Warning: There is a '.' in \$TMPDIR, $DVIPS will probably fail. +Set \$TMP to use a /tmp directory, or rename the working directory. +EOF + die ($dvips_warning . "\n\$TMPDIR=$TMPDIR ***\n\n") + if ($TMPDIR =~ /\./ && $DVIPS =~ /dvips/ && !$DVIPS_SAFE); + + &open_dbm_database if $DJGPP; +} + +# MRO: set first parameter to the opposite of the second if second parameter is defined +sub set_if_false { + $_[0] = !$_[1] if(defined $_[1]); +} + +sub check_for_dots { + local($file) = @_; + if ($file =~ /\.[^.]*\./ && !$DVIPS_SAFE) { + die "\n\n\n *** Fatal Error --- but easy to fix ***\n" + . "\nCannot have '.' in file-name prefix, else dvips fails on images" + . "\nChange the name from $file and try again.\n\n"; + } +} + +# Process each file ... +sub driver { + local($FILE, $orig_cwd, %unknown_commands, %dependent, %depends_on + , %styleID, %env_style, $bbl_cnt, $dbg, %numbered_section); + # MRO: $texfilepath has to be global! + local(%styles_loaded); + $orig_cwd = L2hos->Cwd(); + + print "\n *** initialise *** " if ($VERBOSITY > 1); + &initialise; # Initialise some global variables + + print "\n *** check modes *** " if ($VERBOSITY > 1); + &ascii_mode if $ASCII_MODE; # Must come after initialization + &titles_language($TITLES_LANGUAGE); + &make_numbered_footnotes if ($NUMBERED_FOOTNOTES); + $dbg = $DEBUG ? "-debug" : ""; + $dbg .= (($VERBOSITY>2) ? " -verbose" : ""); + + #use the same hashes for all files in a batch + local(%cached_env_img, %id_map, %symbolic_labels, %latex_labels) + if ($FIXEDDIR && $NO_SUBDIR); + + local($MULTIPLE_FILES,$THIS_FILE); + $MULTIPLE_FILES = 1+$#ARGV if $ROOTED; + print "\n *** $MULTIPLE_FILES file".($MULTIPLE_FILES ? 's: ' : ': ') + . join(',',@ARGV) . " *** " if ($VERBOSITY > 1); + + local(%section_info, %toc_section_info, %cite_info, %ref_files); + + foreach $FILE (@ARGV) { + &check_for_dots($FILE) unless $DVIPS_SAFE; + ++$THIS_FILE if $MULTIPLE_FILES; + do { + %section_info = (); + %toc_section_info = (); + %cite_info = (); + %ref_files = (); + } unless $MULTIPLE_FILES; + local($bbl_nr) = 1; + + # The number of reused images and those in images.tex + local($global_page_num) = (0) unless($FIXEDDIR && $NO_SUBDIR); + # The number of images in images.tex + local($new_page_num) = (0); # unless($FIXEDDIR && $NO_SUBDIR); + local($pid, $sections_rx, + , $outermost_level, %latex_body, $latex_body + , %encoded_section_number + , %verbatim, %new_command, %new_environment + , %provide_command, %renew_command, %new_theorem + , $preamble, $aux_preamble, $prelatex, @preamble); + + # must retain these when all files are in the same directory + # else the images.pl and labels.pl files get clobbered + unless ($FIXEDDIR && $NO_SUBDIR) { + print "\nResetting image-cache" if ($#ARGV); + local(%cached_env_img, %id_map, %symbolic_labels, %latex_labels) + } + +## AYS: Allow extension other than .tex and make it optional + ($EXT = $FILE) =~ s/.*\.([^\.]*)$/$1/; + if ( $EXT eq $FILE ) { + $EXT = "tex"; + $FILE =~ s/$/.tex/; + } + + #RRM: allow user-customisation, dependent on file-name + # e.g. add directories to $TEXINPUTS named for the file + # --- idea due to Fred Drake + &custom_driver_hook($FILE) if (defined &custom_driver_hook); + +# JCL(jcl-dir) +# We need absolute paths for TEXINPUTS here, because +# we change the directory + if ($orig_cwd eq $texfilepath) { + &deal_with_texinputs($orig_cwd); + } else { + &deal_with_texinputs($orig_cwd, $texfilepath); + } + + ($texfilepath, $FILE) = &get_full_path($FILE); + $texfilepath = '.' unless($texfilepath); + + die "Cannot read $texfilepath$dd$FILE \n" + unless (-f "$texfilepath$dd$FILE"); + + +# Tell texexpand which files we *don't* want to look at. + $ENV{'TEXE_DONT_INCLUDE'} = $DONT_INCLUDE if $DONT_INCLUDE; +# Tell texexpand which files we *do* want to look at, e.g. +# home-brew style files + $ENV{'TEXE_DO_INCLUDE'} = $DO_INCLUDE if $DO_INCLUDE; + + $FILE =~ s/\.[^\.]*$//; ## AYS + $DESTDIR = ''; # start at empty + if ($FIXEDDIR) { + $DESTDIR = $FIXEDDIR unless ($FIXEDDIR eq '.'); + if (($ROOTED)&&!($texfilepath eq $orig_cwd)) { + $DESTDIR .= $dd . $FILE unless $NO_SUBDIR; + }; + } elsif ($texfilepath eq $orig_cwd) { + $DESTDIR = ($NO_SUBDIR ? '.' : $FILE); + } else { + $DESTDIR = $ROOTED ? '.' : $texfilepath; + $DESTDIR .= $dd . $FILE unless $NO_SUBDIR; + } + $PREFIX = "$FILE-" if $AUTO_PREFIX; + + print "\nOPENING $texfilepath$dd$FILE.$EXT \n"; ## AYS + + next unless (&new_dir($DESTDIR,'')); + # establish absolute path to $DESTDIR + $DESTDIR = L2hos->Make_directory_absolute($DESTDIR); + &make_tmp_dir; + print "\nNote: Working directory is $DESTDIR\n"; + print "Note: Images will be generated in $TMPDIR\n\n"; + +# Need to clean up a bit in case there's garbage left +# from former runs. + if ($DESTDIR) { chdir($DESTDIR) || die "$!\n"; } + if (opendir (TMP,$TMP_)) { + foreach (readdir TMP) { + L2hos->Unlink("TMP_$dd$_") unless (/^\.\.?$/); + } + closedir TMP; + } + &cleanup(1); + unless(-d $TMP_) { + mkdir($TMP_, 0755) || + die "Cannot create directory '$TMP_': $!\n"; + } + chdir($orig_cwd); + +# RRM 14/5/98 moved this to occur earlier +## JCL(jcl-dir) +## We need absolute paths for TEXINPUTS here, because +## we change the directory +# if ($orig_cwd eq $texfilepath) { +# &deal_with_texinputs($orig_cwd); +# } else { +# &deal_with_texinputs($orig_cwd, $texfilepath); +# } + + +# This needs $DESTDIR to have been created ... + print " *** calling `texexpand' ***" if ($VERBOSITY > 1); + local($unseg) = ($UNSEGMENT ? "-unsegment " : ""); + +# does DOS need to check these here ? +# die "File $TEXEXPAND does not exist or is not executable\n" +# unless (-x $TEXEXPAND); + L2hos->syswait("$TEXEXPAND $dbg -auto_exclude $unseg" + . "-save_styles $DESTDIR$dd$TMP_${dd}styles " + . ($TEXINPUTS ? "-texinputs $TEXINPUTS " : '' ) + . (($VERBOSITY >2) ? "-verbose " : '' ) + . "-out $DESTDIR$dd$TMP_$dd$FILE " + . "$texfilepath$dd$FILE.$EXT") + && die " texexpand failed: $!\n"; + print STDOUT "\n *** `texexpand' done ***\n" if ($VERBOSITY > 1); + + chdir($DESTDIR) if $DESTDIR; + $SIG{'INT'} = 'handler'; + + &open_dbm_database; + &initialise_sections; + print STDOUT "\n *** database open ***\n" if ($VERBOSITY > 1); + + if ($IMAGES_ONLY) { + &make_off_line_images; + } else { + &rename_image_files; + &load_style_file_translations; + &make_language_rx; + &make_raw_arg_cmd_rx; +# &make_isolatin1_rx unless ($NO_ISOLATIN); + &translate_titles; + &make_sections_rx; + print "\nReading ..."; + if ($SHORT_FILENAME) { + L2hos->Rename ("$TMP_$dd$FILE" ,"$TMP_$dd$SHORT_FILENAME" ); + &slurp_input_and_partition_and_pre_process( + "$TMP_$dd$SHORT_FILENAME"); + } else { + &slurp_input_and_partition_and_pre_process("$TMP_$dd$FILE"); + } + &add_preamble_head; + # Create a regular expressions + &set_depth_levels; + &make_sections_rx; + &make_order_sensitive_rx; + &add_document_info_page if ($INFO && !(/\\htmlinfo/)); + &add_bbl_and_idx_dummy_commands; + &translate; # Destructive! + } + &style_sheet; + &close_dbm_database; + &cleanup(); + +#JCL: read warnings from file to $warnings + local($warnings) = &get_warnings; + print "\n\n*********** WARNINGS *********** \n$warnings" + if ($warnings || $NO_IMAGES || $IMAGES_ONLY); + &image_cache_message if ($NO_IMAGES || $IMAGES_ONLY); + &image_message if ($warnings =~ /Failed to convert/io); + undef $warnings; + +# JCL - generate directory index entry. +# Yet, a hard link, cause Perl lacks symlink() on some systems. + do { + local($EXTN) = $EXTN; + $EXTN =~ s/_\w+(\.html?)/$1/ if ($frame_main_name); + local($from,$to) = (eval($LINKPOINT),eval($LINKNAME)); + if (length($from) && length($to) && ($from ne $to)) { + #frames may have altered $EXTN + $from =~ s/$frame_main_name(\.html?)/$1/ if ($frame_main_name); + $to =~ s/$frame_main_name(\.html?)/$1/ if ($frame_main_name); + L2hos->Unlink($to); + L2hos->Link($from,$to); + } + } unless ($NO_AUTO_LINK || !($LINKPOINT) || !($LINKNAME)); + + &html_validate if ($HTML_VALIDATE && $HTML_VALIDATOR); + +# Go back to the source directory + chdir($orig_cwd); + $TEST_MODE = $DESTDIR if($TEST_MODE); # save path + $DESTDIR = ''; + $OUT_NODE = 0 unless $FIXEDDIR; + $STYLESHEET = '' if ($STYLESHEET =~ /^\Q$FILE./); + } + print "\nUnknown commands: ". join(" ",keys %unknown_commands) + if %unknown_commands; +###MEH -- math support + print "\nMath commands outside math: " . + join(" ",keys %commands_outside_math) . + "\n Output may look weird or may be faulty!\n" + if %commands_outside_math; + print "\nDone.\n"; + if($TEST_MODE) { + $TEST_MODE =~ s:[$dd$dd]+$::; + print "\nTo view the results, point your browser at:\n", + L2hos->path2URL(L2hos->Make_directory_absolute($TEST_MODE).$dd. + "index$EXTN"),"\n"; + } + $end_time = time; + $total_time = $end_time - $start_time; + print STDOUT join(' ',"Timing:",$total_time,"seconds\n") + if ($TIMING||$DEBUG||($VERBOSITY > 2)); + $_; +} + +sub open_dbm_database { + # These are DBM (unix DataBase Management) arrays which are actually + # stored in external files. They are used for communication between + # the main process and forked child processes; + print STDOUT "\n"; # this mysteriously prevents a core dump ! + + dbmopen(%verb, "$TMP_${dd}verb",0755); +# dbmopen(%verbatim, "$TMP_${dd}verbatim",0755); + dbmopen(%verb_delim, "$TMP_${dd}verb_delim",0755); + dbmopen(%expanded,"$TMP_${dd}expanded",0755); +# Holds max_id, verb_counter, verbatim_counter, eqn_number + dbmopen(%global, "$TMP_${dd}global",0755); +# Hold style sheet information + dbmopen(%env_style, "$TMP_${dd}envstyles",0755); + dbmopen(%txt_style, "$TMP_${dd}txtstyles",0755); + dbmopen(%styleID, "$TMP_${dd}styleIDs",0755); + +# These next two are used during off-line image conversion +# %new_id_map maps image id's to page_numbers of the images in images.tex +# %image_params maps image_ids to conversion parameters for that image + dbmopen(%new_id_map, "$TMP_${dd}ID_MAP",0755); + dbmopen(%img_params, "$TMP_${dd}IMG_PARAMS",0755); + dbmopen(%orig_name_map, "$TMP_${dd}ORIG_MAP",0755); + + $global{'max_id'} = ($global{'max_id'} | 0); + &read_mydb(\%verbatim, "verbatim"); + $global{'verb_counter'} = ($global{'verb_counter'} | 0); + $global{'verbatim_counter'} = ($global{'verbatim_counter'} | 0); + + &read_mydb(\%new_command, "new_command"); + &read_mydb(\%renew_command, "renew_command"); + &read_mydb(\%provide_command, "provide_command"); + &read_mydb(\%new_theorem, "new_theorem"); + &read_mydb(\%new_environment, "new_environment"); + &read_mydb(\%dependent, "dependent"); +# &read_mydb(\%env_style, "env_style"); +# &read_mydb(\%styleID, "styleID"); + # MRO: Why should we use read_mydb instead of catfile? + $preamble = &catfile(&_dbname("preamble"),1) || ''; + $prelatex = &catfile(&_dbname("prelatex"),1) || ''; + $aux_preamble = &catfile(&_dbname("aux_preamble"),1) || ''; + &restore_critical_variables; +} + +sub close_dbm_database { + &save_critical_variables; + dbmclose(%verb); undef %verb; +# dbmclose(%verbatim); undef %verbatim; + dbmclose(%verb_delim); undef %verb_delim; + dbmclose(%expanded); undef %expanded; + dbmclose(%global); undef %global; + dbmclose(%env_style); undef %env_style; + dbmclose(%style_id); undef %style_id; + dbmclose(%new_id_map); undef %new_id_map; + dbmclose(%img_params); undef %img_params; + dbmclose(%orig_name_map); undef %orig_name_map; + dbmclose(%txt_style); undef %txt_style; + dbmclose(%styleID); undef %styleID; +} + +sub clear_images_dbm_database { + # + # %new_id_map will be used by the off-line image conversion process + # + dbmclose(%new_id_map); + dbmclose(%img_params); + dbmclose(%orig_name_map); + undef %new_id_map; + undef %img_params; + undef %orig_name_map; + dbmopen(%new_id_map, "$TMP_${dd}ID_MAP",0755); + dbmopen(%img_params, "$TMP_${dd}IMG_PARAMS",0755); + dbmopen(%orig_name_map, "$TMP_${dd}ORIG_MAP",0755); +} + +sub initialise_sections { + local($key); + foreach $key (keys %numbered_section) { + $global{$key} = $numbered_section{$key}} +} + +sub save_critical_variables { + $global{'math_markup'} = $NO_MATH_MARKUP; + $global{'charset'} = $CHARSET; + $global{'charenc'} = $charset; + $global{'language'} = $default_language; + $global{'isolatin'} = $ISOLATIN_CHARS; + $global{'unicode'} = $UNICODE_CHARS; + if ($UNFINISHED_ENV) { + $global{'unfinished_env'} = $UNFINISHED_ENV; + $global{'replace_end_env'} = $REPLACE_END_ENV; + } + $global{'unfinished_comment'} = $UNFINISHED_COMMENT; + if (@UNMATCHED_OPENING) { + $global{'unmatched'} = join(',',@UNMATCHED_OPENING); + } +} + +sub restore_critical_variables { + $NO_MATH_MARKUP = ($global{'math_markup'}| + (defined $NO_MATH_MARKUP ? $NO_MATH_MARKUP:1)); + $CHARSET = ($global{'charset'}| $CHARSET); + $charset = ($global{'charenc'}| $charset); + $default_language = ($global{'language'}| + (defined $default_language ? $default_language:'english')); + $ISOLATIN_CHARS = ($global{'isolatin'}| + (defined $ISOLATIN_CHARS ? $ISOLATIN_CHARS:0)); + $UNICODE_CHARS = ($global{'unicode'}| + (defined $UNICODE_CHARS ? $UNICODE_CHARS:0)); + if ($global{'unfinished_env'}) { + $UNFINISHED_ENV = $global{'unfinished_env'}; + $REPLACE_END_ENV = $global{'replace_end_env'}; + } + $UNFINISHED_COMMENT = $global{'unfinished_comment'}; + if ($global{'unmatched'}) { + @UNMATCHED_OPENING = split(',',$global{'unmatched'}); + } + + # undef any renewed-commands... + # so the new defs are read from %new_command + local($cmd,$key,$code); + foreach $key (keys %renew_command) { + $cmd = "do_cmd_$key"; + $code = "undef \&$cmd"; eval($code) if (defined &$cmd); + if ($@) { print "\nundef \&do_cmd_$cmd failed"} + } +} + +#JCL: The warnings should have been handled within the DBM database. +# Unfortunately if the contents of an array are more than ~900 (system +# dependent) chars long then dbm cannot handle it and gives error messages. +sub write_warnings { #clean + my ($str) = @_; + $str .= "\n" unless($str =~ /\n$/); + print STDOUT "\n *** Warning: $str" if ($VERBOSITY > 1); + my $warnings = ''; + if(-f 'WARNINGS') { + $warnings = &catfile('WARNINGS') || ''; + } + return () if ($warnings =~ /\Q$str\E/); + if(open(OUT,">>WARNINGS")) { + print OUT $str; + close OUT; + } else { + print "\nError: Cannot append to 'WARNINGS': $!\n"; + } +} + +sub get_warnings { + return &catfile('WARNINGS',1) || ''; +} + +# MRO: Standardizing +sub catfile { + my ($file,$ignore) = @_; + unless(open(CATFILE,"<$file")) { + print "\nError: Cannot read '$file': $!\n" + unless($ignore); + return undef; + } + local($/) = undef; # slurp in whole file + my $contents = ; + close(CATFILE); + $contents; +} + + +sub html_validate { + my ($extn) = $EXTN; + if ($EXTN !~ /^\.html?$/i) { + $extn =~ s/^[^\.]*(\.html?)$/$1/; + } + print "\n *** Validating ***\n"; + my @htmls = glob("*$extn"); + my $file; + foreach $file (@htmls) { + system("$HTML_VALIDATOR $file"); + } +} + +sub lost_argument { + local($cmd) = @_; + &write_warnings("\nincomplete argument to command: \\$cmd"); +} + + +# These subroutines should have been handled within the DBM database. +# Unfortunately if the contents of an array are more than ~900 (system +# dependent) chars long then dbm cannot handle it and gives error messages. +# So here we save and then read the contents explicitly. +sub write_mydb { + my ($db, $key, $str) = @_; + &write_mydb_simple($db, "\n$mydb_mark#$key#$str"); +} + +# generate the DB file name from the DB name +sub _dbname { + "$TMP_$dd$_[0]"; +} + +sub write_mydb_simple { + my ($db, $str) = @_; + my $file = &_dbname($db); + if(open(DB,">>$file")) { + print DB $str; + close DB; + } else { + print "\nError: Cannot append to '$file': $!\n"; + } +} + +sub clear_mydb { + my ($db) = @_; + my $file = &_dbname($db); + if(open(DB,">$file")) { + close DB; + } else { + print "\nError: Cannot clear '$file': $!\n"; + } +} + +# Assumes the existence of a DB file which contains +# sequences of e.g. verbatim counters and verbatim contents. +sub read_mydb { + my ($dbref,$name) = @_; + my $contents = &catfile(&_dbname($name),1); + return '' unless(defined $contents); + my @tmp = split(/\n$mydb_mark#([^#]*)#/, $contents); + my $i = 1; # Ignore the first element at 0 + print "\nDBM: $name open..." if ($VERBOSITY > 2); + while ($i < scalar(@tmp)) { + my $tmp1 = $tmp[$i]; + my $tmp2 = $tmp[++$i]; + $$dbref{$tmp1} = defined $tmp2 ? $tmp2 : ''; + ++$i; + }; + $contents; +} + + +# Reads in a latex generated file (e.g. .bbl or .aux) +# It returns success or failure +# ****** and binds $_ in the caller as a side-effect ****** +sub process_ext_file { + local($ext) = @_; + local($found, $extfile,$dum,$texpath); + $extfile = $EXTERNAL_FILE||$FILE; + local($file) = &fulltexpath("$extfile.$ext"); + $found = 0; + &write_warnings( + "\n$extfile.$EXT is newer than $extfile.$ext: Please rerun latex" . ## AYS + (($ext =~ /bbl/) ? " and bibtex.\n" : ".\n")) + if ( ($found = (-f $file)) && + &newer(&fulltexpath("$extfile.$EXT"), $file)); ## AYS + if ((!$found)&&($extfile =~ /\.$EXT$/)) { + $file = &fulltexpath("$extfile"); + &write_warnings( + "\n$extfile is newer than $extfile: Please rerun latex" . ## AYS + (($ext =~ /bbl/) ? " and bibtex.\n" : ".\n")) + if ( ($found = (-f $file)) && + &newer(&fulltexpath("$extfile"), $file)); ## AYS + } + + # check in other directories on the $TEXINPUTS paths + if (!$found) { + foreach $texpath (split /$envkey/, $TEXINPUTS ) { + $file = "$texpath$dd$extfile.$ext"; + last if ($found = (-f $file)); + } + } + if ( $found ) { + print "\nReading $ext file: $file ..."; + # must allow @ within control-sequence names + $dum = &do_cmd_makeatletter(); + &slurp_input($file); + if ($ext =~ /bbl/) { + # remove the \newcommand{\etalchar}{...} since not needed + s/^\\newcommand{\\etalchar}[^\n\r]*[\n\r]+//s; + } + &pre_process; + &substitute_meta_cmds if (%new_command || %new_environment); + if ($ext eq "aux") { + my $latex_pathname = L2hos->path2latex($file); + $aux_preamble .= + "\\AtBeginDocument{\\makeatletter\n\\input $latex_pathname\n\\makeatother\n}\n"; + local(@extlines) = split ("\n", $_); + print " translating ".(0+@extlines). " lines " if ($VERBOSITY >1); + local($eline,$skip_to); #$_ = ''; + foreach $eline (@extlines) { + if ($skip_to) { next unless ($eline =~ s/$O$skip_to$C//) } + $skip_to = ''; + # skip lines added for pdfTeX/hyperref compatibility + next if ($eline =~ /^\\(ifx|else|fi|global \\let|gdef|AtEndDocument|let )/); + # remove \index and \label commands, else invalid links may result + $eline =~ s/\\(index|label)\s*($O\d+$C).*\2//g; + if ($eline =~ /\\(old)?contentsline/) { + do { local($_,$save_AUX) = ($eline,$AUX_FILE); + $AUX_FILE = 0; + &wrap_shorthand_environments; + #footnote markers upset the numbering + s/\\footnote(mark|text)?//g; + $eline = &translate_environments($_); + $AUX_FILE = $save_AUX; + undef $_ }; + } elsif ($eline =~ s/^\\\@input//) { + &do_cmd__at_input($eline); + $eline = ''; + } elsif ($eline =~ s/^\\\@setckpt$O(\d+)$C//) { + $skip_to = $1; next; + } +# $eline =~ s/$image_mark#([^#]+)#/print "\nIMAGE:",$img_params{$1},"\n";''/e; +# $_ .= &translate_commands(&translate_environments($eline)); + $_ .= &translate_commands($eline) if $eline; + } + undef @extlines; + } elsif ($ext =~ /$caption_suffixes/) { + local(@extlines) = split ("\n", $_); + print " translating ".(0+@extlines). " lines "if ($VERBOSITY >1); + local($eline); $_ = ''; + foreach $eline (@extlines) { + # remove \index and \label commands, else invalid links may result + $eline =~ s/\\(index|label)\s*($O\d+$C).*\2//gso; + if ($eline =~ /\\(old)?contentsline/) { + do { local($_,$save_PREAMBLE) = ($eline,$PREAMBLE); + $PREAMBLE = 0; + &wrap_shorthand_environments; + $eline = &translate_environments($_); + $PREAMBLE = $save_PREAMBLE; + undef $_ }; + } + $_ .= &translate_commands($eline); + } + undef @extlines; + } else { + print " wrapping " if ($VERBOSITY >1); + &wrap_shorthand_environments; + $_ = &translate_commands(&translate_environments($_)); + print " translating " if ($VERBOSITY >1); + } + print "\n processed size: ".length($_)."\n" if($VERBOSITY>1); + $dum = &do_cmd_makeatother(); + } else { + print "\n*** Could not find file: $file ***\n" if ($DEBUG) + }; + $found; +} + +sub deal_with_texinputs { +# The dot precedes all, this let's local files override always. +# The dirs we want are given as parameter list. + if(!$TEXINPUTS) { $TEXINPUTS = '.' } + elsif ($TEXINPUTS =~ /^$envkey/) { + $TEXINPUTS = '.'.$TEXINPUTS + }; + if ($ROOTED) {$TEXINPUTS .= "$envkey$FIXEDDIR"} + $TEXINPUTS = &absolutize_path($TEXINPUTS); + $ENV{'TEXINPUTS'} = join($envkey,".",@_,$TEXINPUTS,$ENV{'TEXINPUTS'}); +} + +# provided by Fred Drake +sub absolutize_path { + my ($path) = @_; + my $npath = ''; + foreach $dir (split /$envkey/o, $path) { + $npath .= L2hos->Make_directory_absolute($dir) . $envkey; + } + $npath =~ s/$envkey$//; + $npath; +} + +sub add_document_info_page { + # Uses $outermost_level + # Nasty race conditions if the next two are done in parallel + local($X) = ++$global{'max_id'}; + local($Y) = ++$global{'max_id'}; + ###MEH -- changed for math support: no underscores in commandnames + $_ = join('', $_ + , (($MAX_SPLIT_DEPTH <= $section_commands{$outermost_level})? + "\n
\n" : '') + , "\\$outermost_level", "*" + , "$O$X$C$O$Y$C\\infopagename$O$Y$C$O$X$C\n", + , " \\textohtmlinfopage"); +} + + +# For each style file name in TMP_styles (generated by texexpand) look for a +# perl file in $LATEX2HTMLDIR/styles and load it. +sub load_style_file_translations { + local($_, $style, $options, $dir); + print "\n"; + if ($TEXDEFS) { + foreach $dir (split(/$envkey/,$LATEX2HTMLSTYLES)) { + if (-f ($_ = "$dir${dd}texdefs.perl")) { + print "\nLoading $_..."; + require ($_); + $styles_loaded{'texdefs'} = 1; + last; + } + } + } + + # packages automatically implemented + local($auto_styles) = $AUTO_STYLES; + $auto_styles .= 'array|' if ($HTML_VERSION > 3.1); + $auto_styles .= 'tabularx|' if ($HTML_VERSION > 3.1); + $auto_styles .= 'theorem|'; + + # these are not packages, but can appear as if class-options + $auto_styles .= 'psamsfonts|'; + $auto_styles .= 'noamsfonts|'; + + $auto_styles =~ s/\|$//; + + if(open(STYLES, "<$TMP_${dd}styles")) { + while() { + if(s/^\s*(\S+)\s*(.*)$/$style = $1; $options = $2;/eo) { + &do_require_package($style); + $_ = $DONT_INCLUDE; + s/:/|/g; + &write_warnings("No implementation found for style \`$style\'\n") + unless ($styles_loaded{$style} || $style =~ /^($_)$/ + || $style =~ /$auto_styles/); + + # MRO: Process options for packages + &do_package_options($style,$options) if($options); + } + } + close(STYLES); + } else { + print "\nError: Cannot read '$TMP_${dd}styles': $!\n"; + } +} + +################## Weird Special case ################## + +# The new texexpand can be told to leave in \input and \include +# commands which contain code that the translator should simply pass +# to latex, such as the psfig stuff. These should still be seen by +# TeX, so we add them to the preamble ... + +sub do_include_lines { + while (s/$include_line_rx//o) { + local($include_line) = &revert_to_raw_tex($&); + &add_to_preamble ('include', $include_line); + } +} + +########################## Preprocessing ############################ + +# JCL(jcl-verb) +# The \verb declaration and the verbatim environment contain simulated +# typed text and should not be processed. Characters such as $,\,{,and } +# loose their special meanings and should not be considered when marking +# brackets etc. To achieve this \verb declarations and the contents of +# verbatim environments are replaced by markers. At the end the original +# text is put back into the document. +# The markers for verb and verbatim are different so that these commands +# can be restored to what the raw input was just in case they need to +# be passed to latex. + +sub pre_process { + # Modifies $_; + #JKR: We need support for some special environments. + # This has to be here, because they might contain + # structuring commands like \section etc. + local(%comments); + &pre_pre_process if (defined &pre_pre_process); + s/\\\\/\\\\ /go; # Makes it unnecessary to look for escaped cmds + &replace_html_special_chars; + # Remove fake environment which should be invisible to LaTeX2HTML. + s/\001//m; + s/[%]end\s*{latexonly}/\001/gom; + s/[%]begin\s*{latexonly}([^\001]*)\001/%/gos; + s/\001//m; + + &preprocess_alltt if defined(&preprocess_alltt); + + $KEEP_FILE_MARKERS = 1; + if ($KEEP_FILE_MARKERS) { +# if (s/%%% TEXEXPAND: \w+ FILE( MARKER)? (\S*).*/ +# ''.qq|#$2#|."\n"/em) { +# $_ = "#$2#\n". $_ }; + #RRM: ignore \n at end of included file, else \par may result + if (s/(\n{1,2})?%%% TEXEXPAND: \w+ FILE( MARKER)? (\S*).*\n?/ + ($2?$1:"\n").''.qq|#$3#|."\n"/em) { + $_ = "#$3#\n". $_ }; + } else { + s/%%% TEXEXPAND[^\n]*\n//gm; + } + + # Move all LaTeX comments into a local list + s/([ \t]*(^|\G|[^\\]))(%.*(\n[ \t]*|$))/print "%"; + $comments{++$global{'verbatim_counter'}} = "$3"; + &write_mydb("verbatim", $global{'verbatim_counter'}, $3); + "$1$comment_mark".$global{'verbatim_counter'}."\n"/mge; + # Remove the htmlonly-environment + s/\\begin\s*{htmlonly}\s*\n?//gom; + s/\\end\s*{htmlonly}\s*\n?//gom; + # Remove enviroments which should be invisible to LaTeX2HTML. + s/\n[^%\n]*\\end\s*{latexonly}\s*\n?/\001/gom; + s/((^|\n)[^%\n]*)\\begin\s*{latexonly}([^\001]*)\001/$1/gom; + s/\\end\s*{comment}\s*\n?/\001/gom; + s/\\begin\s*{comment}([^\001]*)\001//gom; + + # this used to be earlier, but that can create problems with comments + &wrap_other_environments if (%other_environments); + +# s/\\\\/\\\\ /go; # Makes it unnecessary to look for escaped cmds + local($next, $esc_del); + &normalize_language_changes; + # Patches by #JKR, #EI#, #JCL(jcl-verb) + + #protect \verb|\begin/end....| parts, for LaTeX documentation + s/(\\verb\*?(.))\\(begin|end)/$1\003$3/g; + + local(@processedV); + local($opt, $style_info,$before, $contents, $after, $env); + while (($UNFINISHED_COMMENT)|| + (/\\begin\s*($opt_arg_rx)?\s*\{($verbatim_env_rx|$keepcomments_rx)\}/o)) { + ($opt, $style_info) = ($1,$2); + $before=$contents=$after=$env=''; + if ($UNFINISHED_COMMENT) { + $UNFINISHED_COMMENT =~ s/([^:]*)::(\d+)/$env=$1;$after=$_; + $before = join("",$unfinished_mark,$env,$2,"#");''/e; + print "\nfound the lost \\end{$env}\n"; + } + #RRM: can we avoid copying long strings here ? + # maybe this loop can be an s/.../../s with (.*?) + # + ($before, $after, $env) = ($`, $', $3) unless ($env); + if (!($before =~ + /\\begin(\s*\[[^\]]*\]\s*)?\{($verbatim_env_rx|$keepcomments_rx)\}/)) { + push(@processedV,$before); + print "'";$before = ''; + } + if ($after =~ /\s*\\end{$env[*]?}/) { # Must NOT use the s///o option!!! + ($contents, $after) = ($`, $'); + $contents =~ s/^\n+/\n/s; +# $contents =~ s/\n+$//s; + + # re-insert comments + $contents =~ s/$comment_mark(\d+)\n?/$comments{$1}/g; +# $contents =~ s/$comment_mark(\d+)/$verbatim{$1}/g; + + # revert '\\ ' -> '\\' only once + if ($env =~ /rawhtml|$keepcomments_rx/i) { + $contents = &revert_to_raw_tex($contents); + } else { + $contents =~ s/([^\\](?:\\\\)*\\)([$html_escape_chars])/$1.&special($2)/geos; + $contents =~ s/\\\\ /\\\\/go; + } + + if ($env =~/$keepcomments_rx/) { + $verbatim{++$global{'verbatim_counter'}} = "$contents"; + } else { + &write_mydb("verbatim", ++$global{'verbatim_counter'}, $contents); + } +# $verbatim{$global{'verbatim_counter'}} = "$contents" if ($env =~/$keepcomments_rx/); +# $verbatim{$global{'verbatim_counter'}} = "$contents"; + + if ($env =~ /rawhtml|$keepcomments_rx/i) { + if ($before) { + $after = join("",$verbatim_mark,$env + ,$global{'verbatim_counter'},"#",$after); + } else { + push (@processedV, join("",$verbatim_mark,$env + ,$global{'verbatim_counter'},"#")); + } + } elsif ($env =~ /tex2html_code/) { + if ($before) { + $after = join("","\\begin", $opt, "\{verbatim_code\}" + , $verbatim_mark,$env + , $global{'verbatim_counter'},"#" + , "\\end\{verbatim_code\}",$after); + } else { + push (@processedV + , join("","\\begin", $opt, "\{verbatim_code\}" + , $verbatim_mark,$env + , $global{'verbatim_counter'},"#" + , "\\end\{verbatim_code\}")); + } + } else { + if ($before) { + $after = join("","\\begin", $opt, "\{tex2html_preform\}" + , $verbatim_mark,$env + , $global{'verbatim_counter'},"#" + , "\\end\{tex2html_preform\}",$after); + } else { + push (@processedV + , join("","\\begin", $opt, "\{tex2html_preform\}" + , $verbatim_mark,$env + , $global{'verbatim_counter'},"#" + , "\\end\{tex2html_preform\}" )); + } + } + } else { + print "Cannot find \\end{$env}\n"; + $after =~ s/$comment_mark(\d+)\n?/$comments{$1}/g; +# $after =~ s/$comment_mark(\d+)/$verbatim{$1}/g; + if ($env =~ /rawhtml|$keepcomments_rx/i) { + $after = &revert_to_raw_tex($contents); + } else { + $after =~ s/([^\\](?:\\\\)*\\)([$html_escape_chars])/$1.&special($2)/geos; + $after =~ s/\\\\ /\\\\/go; + } + if ($env =~/$keepcomments_rx/) { + $verbatim{++$global{'verbatim_counter'}} = "$after"; + } else { + &write_mydb("verbatim", ++$global{'verbatim_counter'}, $after ); + } + $after = join("",$unfinished_mark,$env + ,$global{'verbatim_counter'},"#"); + } + $_ = join("",$before,$after); + } + print STDOUT "\nsensitive environments found: ".(int(0+@processedV/2))." " + if((@processedV)&&($VERBOSITY > 1)); + $_ = join('',@processedV, $_); undef @processedV; + + #restore \verb|\begin/end....| parts, for LaTeX documentation +# $_ =~ s/(\\verb\W*?)\003(begin|end)/$1\\$2/g; + $_ =~ s/(\\verb(;SPM\w+;|\W*?))\003(begin|end)/$1\\$3/g; + + # Now do the \verb declarations + # Patches by: #JKR, #EI#, #JCL(jcl-verb) + # Tag \verb command and legal opening delimiter with unique number. + # Replace tagged ones and its contents with $verb_mark & id number if the + # closing delimiter can be found. After no more \verb's are to tag, revert + # tagged one's to the original pattern. + local($del,$contents,$verb_rerun); + local($id) = $global{'verb_counter'}; + # must tag only one alternation per loop + ##RRM: can this be speeded up using a list ?? + my $vbmark = $verb_mark; + while (s/\\verb(\t*\*\t*)(\S)/"$2"/e || + s/\\verb()(\;SPM\w+\;|[^a-zA-Z*\s])/"$2"/e || + s/\\verb(\t\t*)([^*\s])/"$2"/e) { + + $del = $2; + #RRM: retain knowledge of whether \verb* or \verb + $vb_mark = ($1 =~/^\s*\*/? $verbstar_mark : $verb_mark); + $esc_del = &escape_rx_chars($del); + $esc_del = '' if (length($del) > 2); + + # try to find closing delimiter and substitute the complete + # statement with $verb_mark or $verbstar_mark +# s/(]*$id>[\Q$del\E])([^$esc_del\n]*)([\Q$del\E]|$comment_mark(\d+)\n?)/ + s/(]*$id>\Q$del\E)([^$esc_del\n]*?)(\Q$del\E|$comment_mark(\d+)\n?)/ + $contents=$2; + if ($4) { $verb_rerun = 1; + join('', "\\verb$del", $contents, $comments{$4}) + } else { + $contents =~ s|\\\\ |\\\\|g; + $contents =~ s|\n| |g; + $verb{$id}=$contents; + $verb_delim{$id}=$del; + join('',$vb_mark,$id,$verb_mark) + } + /e; + } + $global{'verb_counter'} = $id; + # revert changes to fake verb statements + s/]*)\d+>/\\verb$1/g; + + #JKR: the comments include the linebreak and the following whitespace +# s/([^\\]|^)(%.*\n[ \t]*)+/$1/gom; # Remove Comments but not % which may be meaningful + s/((^|\n)$comment_mark(\d+))+//gom; # Remove comment markers on new lines, but *not* the trailing \n + s/(\\\w+|(\W?))($comment_mark\d*\n?)/($2)? $2.$3:($1? $1.' ':'')/egm; # Remove comment markers, not after braces +# s/(\W?)($comment_mark\d*\n?)/($1)? $1.$2:''/egm; # Remove comment markers, not after braces + # Remove comment markers, but *not* the trailing \n +# HWS: Correctly remove multiple %%'s. +# + s/\\%/\002/gm; +# s/(%.*\n[ \t]*)//gm; + s/(%[^\n]*\n)[ \t]*/$comment_mark\n/gm; + + s/\002/\\%/gm; + + local($tmp1,$tmp2); + s/^$unfinished_mark$keepcomments_rx(\d+)#\n?$verbatim_mark$keepcomments_rx(\d+)#/ + $verbatim{$4}."\n\\end{$1}"/egm; # Raw TeX + s/$verbatim_mark$keepcomments_rx(\d+)#/ + $tmp1 = $1; + $tmp2 = &protect_after_comments($verbatim{$2}); + $tmp2 =~ s!\n$!!s; + join ('', "\\begin{$tmp1}" + , $tmp2 + , "\n\\end{$tmp1}" + )/egm; # Raw TeX + s/$unfinished_mark$keepcomments_rx(\d+)#/$UNFINISHED_COMMENT="$1::$2"; + "\\begin{$1}\n".$verbatim{$2}/egm; # Raw TeX + + $KEEP_FILE_MARKERS = 1; + if ($KEEP_FILE_MARKERS) { + s/%%% TEXEXPAND: \w+ FILE( MARKER) (\S*).*\n/ + ''.qq|#.$2#\n|/gem; + } else { + s/%%% TEXEXPAND[^\n]*\n//gm; + } + + &mark_string($_); + + + # attempt to remove the \html \latex and \latexhtml commands + s/\\latex\s*($O\d+$C)(.*)\1//gm; + s/\\latexhtml\s*($O\d+$C)(.*)\1\s*($O\d+$C)(.*)\3/$4/sg; + s/\\html\s*($O\d+$C)(.*)\1/$2/sg; + s/\\html\s*($O\d+$C)//gm; + +# &make_unique($_); +} + +# RRM: When comments are retained, then ensure that they are benign +# by removing \s and escaping braces, +# so that environments/bracing cannot become unbalanced. +sub protect_after_comments { + my ($verb_text) = @_; +# $verb_text =~ s/\%(.*)/'%'.&protect_helper($1)/eg; + $verb_text =~ s/(^|[^\\])(\\\\)*\%(.*)/$1.$2.'%'.&protect_helper($3)/emg; + $verb_text; +} + +sub protect_helper { + my ($text) = @_; + $text =~ s/\\/ /g; + $text =~ s/(\{|\})/\\$1/g; + $text; +} + +sub make_comment { + local($type,$_) = @_; + $_ =~ s/\\(index|label)\s*(($O|$OP)\d+($C|$CP)).*\2//sg; + $_ = &revert_to_raw_tex($_); s/^\n+//m; + $_ =~ s/\\(index|label)\s*\{.*\}//sg; + s/\-\-/- -/g; s/\-\-/- -/g; # cannot have -- inside a comment + $_ = join('', '" ); + $verbatim{++$global{'verbatim_counter'}} = $_; + &write_mydb('verbatim', $global{'verbatim_counter'}, $_ ); + join('', $verbatim_mark, 'verbatim' , $global{'verbatim_counter'},'#') +} + +sub wrap_other_environments { + local($key, $env, $start, $end, $opt_env, $opt_start); + foreach $key (keys %other_environments) { + # skip bogus entries + next unless ($env = $other_environments{$key}); + $key =~ s/:/($start,$end)=($`,$');':'/e; + + if (($end =~ /^\#$/m) && ($start =~ /^\#/m)) { + # catch Indica pre-processor language switches + $opt_start = $'; + if ($env =~ s/\[(\w*)\]//o) { + $opt_env = join('','[', ($1 ? $1 : $opt_start ), ']'); + } + local($next); + while ($_ =~ /$start\b/) { + push(@pre_wrapped, $`, "\\begin\{pre_$env\}", $opt_env ); + $_=$'; + if (/(\n*)$end/) { + push(@pre_wrapped, $`.$1,"\\end\{pre_$env\}$1"); + $_ = $'; + if (!(s/^N(IL)?//o)) {$_ = '#'.$_ } + } else { + print "\n *** unclosed $start...$end chunk ***\n"; + last; + } + } + $_ = join('', @pre_wrapped, $_); + undef @pre_wrapped; + + } elsif (($end=~/^\n$/) && ($start =~ /^\#/)) { + # catch ITRANS pre-processor language info; $env = 'nowrap'; + local($ilang) = $start; $ilang =~ s/^\#//m; + s/$start\s*\=([^<\n%]*)\s*($comment_mark\d*|\n|%)/\\begin\{tex2html_$env\}\\ITRANSinfo\{$ilang\}\{$1\}\n\\end\{tex2html_$env\}$2/g; + + } elsif (!$end &&($start =~ /^\#/m)) { + # catch Indica pre-processor input-mode switches + s/$start(.*)\n/\\begin\{tex2html_$env\}$&\\end\{tex2html_$env\}\n/g; + + } elsif (($start eq $end)&&(length($start) == 1)) { + $start =~ s/(\W)/\\$1/; $end = $start; + s/([^$end])$start([^$end]+)$end/$1\\begin\{pre_$env\}$2\\end\{pre_$env\}/mg; + } elsif ($start eq $end) { + if (!($start =~ /\#\#/)) { + $start =~ s/(\W)/\\$1/g; $end = $start; } + local (@pre_wrapped); + local($opt); $opt = '[indian]' if ($start =~ /^\#\#$/m); + while ($_ =~ /$start/s) { + push(@pre_wrapped, $` , "\\begin\{pre_$env\}$opt"); + $_=$'; + if (/$end/s) { + push(@pre_wrapped, $`, "\\end\{pre_$env\}"); + $_ = $'; + } else { + print "\n *** unclosed $start...$end chunk ***\n"; + last; + } + } + $_ = join('', @pre_wrapped, $_); + undef @pre_wrapped; + } elsif ($start && ($env =~ /itrans/)) { + # ITRANS is of this form + local($indic); if($start =~ /\#(\w+)$/m) {$indic = $1} + #include the language-name as an optional parameter + s/$start\b/\\begin\{pre_$env\}\[$indic\]/sg; + s/$end\b/\\end\{pre_$env\}/sg; + } elsif (($start)&&($end)) { + s/$start\b/\\begin\{pre_$env\}/sg; + s/$end\b/\\end\{pre_$env\}/sg; + } + } + $_; +} + +#################### Marking Matching Brackets ###################### + +# Reads the entire input file and performs pre_processing operations +# on it before returning it as a single string. The pre_processing is +# done on separate chunks of the input file by separate Unix processes +# as determined by LaTeX \input commands, in order to reduce the memory +# requirements of LaTeX2HTML. +sub slurp_input_and_partition_and_pre_process { + local($file) = @_; + local(%string, @files, $pos); + local ($count) = 1; + + unless(open(SINPUT,"<$file")) { + die "\nError: Cannot read '$file': $!\n"; + } + local(@file_string); + print STDOUT "$file" if ($VERBOSITY >1); + while () { + if (/TEXEXPAND: INCLUDED FILE MARKER (\S*)/) { + # Forking seems to screw up the rest of the input stream + # We save the current position ... + $pos = tell SINPUT; + print STDOUT " fork at offset $pos " if ($VERBOSITY >1); + $string{'STRING'} = join('',@file_string); @file_string = (); + &write_string_out($count); + delete $string{'STRING'}; + # ... so that we can return to it + seek(SINPUT, $pos, 0); + print STDOUT "\nDoing $1 "; + ++$count} + else { +# $string{'STRING'} .= $_ + push(@file_string,$_); + } + } + $string{'STRING'} = join('',@file_string); @file_string = (); + &write_string_out($count); + delete $string{'STRING'}; + close SINPUT; + @files = (); + if(opendir(DIR, $TMP_)) { + @files = sort grep(/^\Q$PARTITION_PREFIX\E\d+/, readdir(DIR)); + closedir(DIR); + } + + unless(@files) { + die "\nFailed to read in document parts.\n". + "Look up section Globbing in the troubleshooting manual.\n"; + } + + $count = 0; + foreach $file (@files) { + print STDOUT "\nappending file: $TMP_$dd$file " if ($VERBOSITY > 1); + $_ .= (&catfile("$TMP_$dd$file") || ''); + print STDOUT "\ntotal length: ".length($_)." characters\n" if ($VERBOSITY > 1); + } + die "\nFailed to read in document parts (out of memory?).\n" + unless length($_); + print STDOUT "\ntotal length: ".length($_)." characters\n" if ($VERBOSITY > 1); +} + +sub write_string_out { + local($count) = @_; + if ($count < 10) {$count = '00'.$count} + elsif ($count < 100) {$count = '0'.$count} + local($pid); + # All open unflushed streams are inherited by the child. If this is + # not set then the parent will *not* wait + $| = 1; + # fork returns 0 to the child and PID to the parent + &write_mydb_simple("prelatex", $prelatex); + &close_dbm_database; + unless ($CAN_FORK) { + &do_write_string_out; + } else { + unless ($pid = fork) { + &do_write_string_out; + exit 0; + }; + waitpid($pid,0); + } + &open_dbm_database; +} + +sub do_write_string_out { + local($_); + close (SINPUT) if($CAN_FORK); + &open_dbm_database; + $_ = delete $string{'STRING'}; + # locate blank-lines, for paragraphs. + # Replace verbatim environments etc. + &pre_process; + # locate the blank lines for \par s + &substitute_pars; + # Handle newcommand, newenvironment, newcounter ... + &substitute_meta_cmds; + &wrap_shorthand_environments; + print STDOUT "\n *** End-of-partition ***" if ($VERBOSITY > 1); + if(open(OUT, ">$TMP_$dd$PARTITION_PREFIX$count")) { + print OUT $_; + close(OUT); + } else { + print "\nError: Cannot write '$TMP_$dd$PARTITION_PREFIX$count': $!\n"; + } + print STDOUT $_ if ($VERBOSITY > 9); + $preamble = join("\n",$preamble,@preamble); # undef @preamble; + &write_mydb_simple("preamble", $preamble); + # this was done earlier; it should not be repeated + #&write_mydb_simple("prelatex", $prelatex); + &write_mydb_simple("aux_preamble", $aux_preamble); + &close_dbm_database; +} + +# Reads the entire input file into a +# single string. +sub slurp_input { + local($file) = @_; + local(%string); + if(open(INPUT,"<$file")) { + local(@file_string); + while () { + push(@file_string, $_ ); + } + $string{'STRING'} = join('',@file_string); + close INPUT; + undef @file_string; + } else { + print "\nError: Cannot read '$file': $!\n"; + } + $_ = delete $string{'STRING'}; # Blow it away and return the result +} + +# MRO: make them more efficient +sub special { + $html_specials{$_[0]} || $_[0]; +} + +sub special_inv { + $html_specials_inv{$_[0]} || $_[0]; +} + +sub special_html { + $html_special_entities{$_[0]} || $_[0]; +} + +sub special_html_inv { + $html_spec_entities_inv{$_[0]} || $_[0]; +} + +# Mark each matching opening and closing bracket with a unique id. +sub mark_string { + # local (*_) = @_; # Modifies $_ in the caller; + # -> MRO: changed to $_[0] (same effect) + # MRO: removed deprecated $*, replaced by option /m + $_[0] =~ s/(^|[^\\])\\{/$1tex2html_escaped_opening_bracket/gom; + $_[0] =~ s/(^|[^\\])\\{/$1tex2html_escaped_opening_bracket/gom; # repeat this + $_[0] =~ s/(^|[^\\])\\}/$1tex2html_escaped_closing_bracket/gom; + $_[0] =~ s/(^|[^\\])\\}/$1tex2html_escaped_closing_bracket/gom; # repeat this + my $id = $global{'max_id'}; + my $prev_id = $id; + # mark all balanced braces + # MRO: This should in fact mark all of them as the hierarchy is + # processed inside-out. + 1 while($_[0] =~ s/{([^{}]*)}/join("",$O,++$id,$C,$1,$O,$id,$C)/geo); + # What follows seems esoteric... + my @processedB = (); + # Take one opening brace at a time + while ($_[0] =~ /\{/) { + my ($before,$after) = ($`,$'); + my $change = 0; + while (@UNMATCHED_OPENING && $before =~ /\}/) { + my $this = pop(@UNMATCHED_OPENING); + print "\n *** matching brace \#$this found ***\n"; + $before =~ s/\}/join("",$O,$this,$C)/eo; + $change = 1; + } + $_[0] = join('',$before,"\{",$after) if($change); + # MRO: mark one opening brace + if($_[0] =~ s/^([^{]*){/push(@processedB,$1);join('',$O,++$id,$C)/eos) { + $before=''; $after=$'; + } + if ($after =~ /\}/) { + $after =~ s/\}/join("",$O,$id,$C)/eo; + $_[0] = join('',$before,$O,$id,$C,$after); + } else { + print "\n *** opening brace \#$id is unmatched ***\n"; + $after =~ /^(.+\n)(.+\n)?/; + print " preceding: $after \n"; + push (@UNMATCHED_OPENING,$id); + } + } + $_[0] = join('',@processedB,$_[0]); undef(@processedB); + print STDOUT "\nInfo: bracketings found: ", $id - $prev_id,"\n" + if ($VERBOSITY > 1); + # process remaining closing braces + while (@UNMATCHED_OPENING && $_[0] =~ /\}/) { + my $this = pop(@UNMATCHED_OPENING); + print "\n *** matching brace \#$this found ***\n"; + $_[0] =~ s/\}/join("",$O,$this,$C)/eo; + } + + while ($_[0] =~ /\}/) { + print "\n *** there was an unmatched closing \} "; + my ($beforeline,$prevline,$afterline) = ($`, $`.$& , $'); + $prevline =~ /\n([^\n]+)\}$/m; + if ($1) { + print "at the end of:\n" . $1 . "\}\n\n"; + } else { + $afterline =~ /^([^\n]+)\n/m; + if ($1) { + print "at the start of:\n\}" . $1 ."\n\n"; + } else { + $prevline =~ /\n([^\n]+)\n\}$/m; + print "on a line by itself after:\n" . $1 . "\n\}\n\n"; + } + } + $_[0] = $beforeline . $afterline; + } + $global{'max_id'} = $id; + + # restore escaped braces + $_[0] =~ s/tex2html_escaped_opening_bracket/\\{/go; + $_[0] =~ s/tex2html_escaped_closing_bracket/\\}/go; +} + +sub replace_html_special_chars { + # Replaces html special characters with markers unless preceded by "\" + s/([^\\])(<|>|&|\"|``|'')/&special($1).&special($2)/geom; + # MUST DO IT AGAIN JUST IN CASE THERE ARE CONSECUTIVE HTML SPECIALS + s/([^\\])(<|>|&|\"|``|'')/&special($1).&special($2)/geom; + s/^(<|>|&|\"|``|'')/&special($1)/geom; +} + +# used in \verbatiminput only: $html_escape_chars = '<>&'; +sub replace_all_html_special_chars { s/([$html_escape_chars])/&special($1)/geom; } + +# The bibliography and the index should be treated as separate sections +# in their own HTML files. The \bibliography{} command acts as a sectioning command +# that has the desired effect. But when the bibliography is constructed +# manually using the thebibliography environment, or when using the +# theindex environment it is not possible to use the normal sectioning +# mechanism. This subroutine inserts a \bibliography{} or a dummy +# \textohtmlindex command just before the appropriate environments +# to force sectioning. +sub add_bbl_and_idx_dummy_commands { + local($id) = $global{'max_id'}; + + s/([\\]begin\s*$O\d+$C\s*thebibliography)/$bbl_cnt++; $1/eg; + ## if ($bbl_cnt == 1) { + s/([\\]begin\s*$O\d+$C\s*thebibliography)/$id++; "\\bibliography$O$id$C$O$id$C $1"/geo; + #} + $global{'max_id'} = $id; + s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlindex $1/o; + s/[\\]printindex/\\textohtmlindex /o; + &lib_add_bbl_and_idx_dummy_commands() if defined(&lib_add_bbl_and_idx_dummy_commands); +} + + +# Uses and modifies $default_language +# This would be straight-forward except when there are +# \MakeUppercase, \MakeLowercase or \uppercase , \lowercase commands +# present in the source. The cases have to be adjusted before the +# ISO-character code is set; e.g. with "z --> "Z in german.perl +# +sub convert_iso_latin_chars { + local($_) = @_; + local($next_language, $pattern); + local($xafter, $before, $after, $funct, $level, $delim); + local(@case_processed); + while (/$case_change_rx/) { + $xafter = $2; +# $before .= $`; + push(@case_processed, $`); + $funct = $3; + $after = ''; + $_ = $'; + if ($xafter =~ /noexpand/) { $before .= "\\$funct"; next; } + + s/^[\s%]*(.)/$delim=$1;''/eo; + if ($delim =~ /{/ ) { + # brackets not yet numbered... +# $before .= $funct . $delim; + push(@case_processed, $funct . $delim); + $level = 1; + $after = $delim; + while (($level)&&($_)&&(/[\{\}]/)) { + $after .= $` . $&; + $_ = $'; + if ( "$&" eq "\{" ) {$level++} + elsif ( "$&" eq "\}" ) { $level-- } + else { print $_ } + print "$level"; + } +# $before .= $after; + push(@case_processed, $after); + } elsif ($delim eq "<") { + # brackets numbered, but maybe not processed... + s/((<|#)(\d+)(>|#)>).*\1//; + $after .= $delim . $&; + $_ = $'; + print STDOUT "\n<$2$funct$4>" if ($VERBOSITY > 2); + $funct =~ s/^\\//o; + local($cmd) = "do_cmd_$funct"; + $after = &$cmd($after); +# $before .= $after; + push(@case_processed, $after); + } elsif (($xafter)&&($delim eq "\\")) { + # preceded by \expandafter ... + # ...so expand the following macro first + $funct =~ s/^\\//o; + local($case_change) = $funct; + s/^(\w+|\W)/$funct=$1;''/eo; + local($cmd) = $funct; + local($thiscmd) = "do_cmd_$funct"; + if (defined &$thiscmd) { $_ = &$thiscmd($_) } + elsif ($new_command{$funct}) { + local($argn, $body, $opt) = split(/:!:/, $new_command{$funct}); + do { ### local($_) = $body; + &make_unique($body); + } if ($body =~ /$O/); + if ($argn) { + do { + local($before) = ''; + local($after) = "\\$funct ".$_; + $after = &substitute_newcmd; # may change $after + $after =~ s/\\\@#\@\@/\\/o ; + } + } else { $_ = $body . $_; } + } else { print "\nUNKNOWN COMMAND: $cmd "; } + + $cmd = $case_change; + $case_change = "do_cmd_$cmd"; + if (defined &$case_change) { $_ = &$case_change($_) } + } else { + # this should not happen, but just in case... + $funct =~ s/^\\//o; + local($cmd) = "do_cmd_$funct"; + print STDOUT "\n\n<$delim$funct>" if ($VERBOSITY > 2); + $_ = join('', $delim , $_ ); + if (defined &$cmd) { $_ = &$cmd($_) } + } + } +# $_ = join('', $before, $_) if ($before); + $_ = join('', @case_processed, $_) if (@case_processed); + + # ...now do the conversions + ($before, $after, $funct) = ('','',''); + @case_processed = (); + if (/$language_rx/o) { + ($next_language, $pattern, $before, $after) = (($2||$1), $&, $`, $'); + $before = &convert_iso_latin_chars($before) if ($before); +# push(@case_processed, $pattern, $before); + local($br_id) = ++$global{'max_id'}; + $pattern = join('' , '\selectlanguage', $O.$br_id.$C + , (($pattern =~ /original/) ? $TITLES_LANGUAGE : $next_language ) + , $O.$br_id.$C ); + push(@case_processed, $before, $pattern); + push(@language_stack, $default_language); + $default_language = $next_language; + $_ = &convert_iso_latin_chars($after); + $default_language = pop @language_stack; + } else { + $funct = $language_translations{$default_language}; + (defined(&$funct) ? $_ = &$funct($_) : + do { &write_warnings( + "\nCould not find translation function for $default_language.\n\n") + } + ); + if ($USE_UTF ||(!$NO_UTF &&(defined %unicode_table)&&length(%unicode_table)>2)) { + &convert_to_unicode($_)}; + } + $_ = join('', @case_processed, $_); undef(@case_processed); + $_; +} + +# May need to add something here later +sub english_translation { $_[0] } + +# This replaces \setlanguage{\language} with \languageTeX +# This makes the identification of language chunks easier. +sub normalize_language_changes { + s/$setlanguage_rx/\\$2TeX/gs; +} + +sub get_current_language { + return () if ($default_language eq $TITLES_LANGUAGE); + local($lang,$lstyle) = ' LANG="'; + $lang_code = $iso_languages{$default_language}; + if (%styled_languages) { + $lstyle = $styled_languages{$default_language}; + $lstyle = '" CLASS="'.$lstyle if $lstyle; + } + ($lang_code ? $lang.$lang_code.$lstyle.'"' : ''); +} + +%styled_languages = (); + +sub do_cmd_htmllanguagestyle { + local($_) = @_; + local($class) = &get_next_optional_argument; + local($lang) = &missing_braces unless ( + (s/$next_pair_pr_rx/$lang=$2;''/e) + ||(s/$next_pair_rx/$lang=$2;''/e)); + return ($_) unless $lang; + local($class) = $iso_languages{$lang} unless $class; + if ($USING_STYLES && $class) { + print "\nStyling language: $lang = \"$class\" "; + $styled_languages{"$lang"} = $class; + } + $_; +} + +# General translation mechanism: +# +# +# The main program latex2html calls texexpand with the document name +# in order to expand some of its \input and \include statements, here +# also called 'merging', and to write a list of sensitized style, class, +# input, or include file names. +# When texexpand has finished, all is contained in one file, TMP_foo. +# (assumed foo.tex is the name of the document to translate). +# +# In this version, texexpand cares for following environments +# that may span include files / section boundaries: +# (For a more technical description, see texexpand.) +# a) \begin{comment} +# b) %begin{comment} +# c) \begin{any} introduced with \excludecomment +# d) %begin{any} +# e) \begin{verbatim} +# f) \begin{latexonly} +# g) %begin{latexonly} +# +# a)-d) cause texexpand to drop its contents, it will not show up in the +# output file. You can use this to 'comment out' a bunch of files, say. +# +# e)-g) prevent texexpand from expanding input files, but the environment +# content goes fully into the output file. +# +# Together with each merging of \input etc. there are so-called %%%texexpand +# markers accompanying the boundary. +# +# When latex2html reads in the output file, it uses these markers to write +# each part to a separate file, and process them further. +# +# +# If you have, for example: +# +# a) preample +# b) \begin{document} +# c) text +# d) \input{chapter} +# e) more text +# f) \end{document} +# +# you end up in two parts, part 1 is a)-c), part 2 is the rest. +# Regardless of environments spanning input files or sections. +# +# +# What now starts is meta command substitution: +# Therefore, latex2html forks a child process on the first part and waits +# until it finished, then forks another on the next part and so forth +# (see also &slurp_input_and_partition_and_preprocess). +# +# Here's what each child is doing: +# Each child process reads the new commands translated so far by the previous +# child from the TMP_global DBM database. +# After &pre_processing, it substitutes the meta commands (\newcommand, \def, +# and the like) it finds, and adds the freshly retrieved new commands to the +# list so far. +# This is done *only on its part* of the document; this saves upwards of memory. +# Finally, it writes its list of new commands (synopsis and bodies) to the +# DBM database, and exits. +# After the last child finished, latex2html reads in all parts and +# concatenates them. +# +# +# So, at this point in time (start of &translate), it again has the complete +# document, but now preprocessed and with new commands substituted. +# This has several disadvantages: an amount of commands is substituted (in +# TeX lingo, expanded) earlier than the rest. +# This causes trouble if commands really must get expanded at the point +# in time they show up. +# +# +# Then, still in &translate, latex2html uses the list of section commands to +# split the complete document into chunks. +# The chunks are not written to files yet. They are retained in the @sections +# list, but each chunk is handled separately. +# latex2html puts the current chunk to $_ and processes it with +# &translate_environments etc., then fetches the next chunk, and so on. +# This prevents environments that span section boundaries from getting +# translated, because \begin and \end cannot find one another, to say it this +# way. +# +# +# After the chunk is translated to HTML, it is written to a file. +# When all chunks are done, latex2html rereads each file to get cross +# references right, replace image markers with the image file names, and +# writes index and bibliography. +# +# +sub translate { + &normalize_sections; # Deal with the *-form of sectioning commands + + # Split the input into sections, keeping the preamble together + # Due to the regular expression, each split will create 5 more entries. + # Entry 1 and 2: non-letter/letter sectioning command, + # entry 4: the delimiter (may be empty) + # entry 5: the text. + local($pre_section, @sections); + if (/\\(startdocument|begin\s*($O\d+$C)\s*document\s*\2)/) { + $pre_section = $`.$&; $_ = $'; + } + @sections = split(/$sections_rx/, $_); + $sections[0] = $pre_section.$sections[0] if ($pre_section); + undef $pre_section; + local($sections) = int(scalar(@sections) / 5); + + # Initialises $curr_sec_id to a list of 0's equal to + # the number of sectioning commands. + local(@curr_sec_id) = split(' ', &make_first_key); + local(@segment_sec_id) = @curr_sec_id; + local($i, $j, $current_depth) = (0,0,0); + local($curr_sec) = $SHORT_FILENAME||$FILE; + local($top_sec) = ($SEGMENT ? '' : 'top of '); +# local(%section_info, %toc_section_info, $CURRENT_FILE, %cite_info, %ref_files); + local($CURRENT_FILE); + # These filenames may be set when translating the corresponding commands. + local($tocfile, $loffile, $lotfile, $footfile, $citefile, $idxfile, + $figure_captions, $table_captions, $footnotes, $citations, %font_size, %index, + %done, $t_title, $t_author, $t_date, $t_address, $t_affil, $changed); + local(@authors,@affils,@addresses,@emails,@authorURLs); + local(%index_labels, %index_segment, $preindex, %footnotes, %citefiles); + local($segment_table_captions, $segment_figure_captions); + local($dir,$nosave) = ('',''); + local($del,$close_all,$open_all,$toc_sec_title,$multiple_toc); + local($open_tags_R) = []; + local(@save_open_tags)= (); + local(@language_stack) = (); + push (@language_stack, $default_language); + +# $LATEX_FONT_SIZE = '10pt' unless ($LATEX_FONT_SIZE); + &process_aux_file + if $SHOW_SECTION_NUMBERS || /\\(caption|(html|hyper)?((eq)?ref|cite))/; + + require ("${PREFIX}internals.pl") if (-f "${PREFIX}internals.pl"); +#JCL(jcl-del) + &make_single_cmd_rx; +# + $tocfile = $EXTERNAL_CONTENTS; + $idxfile = $EXTERNAL_INDEX; + $citefile = $EXTERNAL_BIBLIO; $citefile =~ s/#.*$//; + $citefiles{1} = $citefile if ($citefile); + print "\nTranslating ..."; + + while ($i <= @sections) { + undef $_; + $_ = $sections[$i]; + s/^[\s]*//; # Remove initial blank lines + + # The section command was removed when splitting ... + s/^/\\$curr_sec$del/ if ($i > 0); # ... so put it back + if ($current_depth < $MAX_SPLIT_DEPTH) { + if (($footnotes)&&($NO_FOOTNODE)&&( $current_depth < $MAX_SPLIT_DEPTH)) { + local($thesenotes) = &make_footnotes ; + print OUTPUT $thesenotes; + } + $CURRENT_FILE = &make_name($curr_sec, join('_',@curr_sec_id)); + + open(OUTPUT, ">$CURRENT_FILE") + || die "Cannot write '$CURRENT_FILE': $!\n"; + if ($XBIT_HACK) { # use Apache's XBit hack + chmod 0744, $CURRENT_FILE; + &check_htaccess; + } else { + chmod 0644, $CURRENT_FILE; + } + + if ($MULTIPLE_FILES && $ROOTED) { + if ($DESTDIR =~ /^\Q$FIXEDDIR\E[$dd$dd]?([^$dd$dd]+)/) + { $CURRENT_FILE = "$1$dd$CURRENT_FILE" }; + } + } + &remove_document_env; +# &wrap_shorthand_environments; #RRM Is this needed ? + print STDOUT "\n" if ($VERBOSITY); + print STDOUT "\n" if ($VERBOSITY > 2); + print $i/5,"/$sections"; + print ":$top_sec$curr_sec:" if ($VERBOSITY); + + # Must do this early ... It also sets $TITLE + &process_command($sections_rx, $_) if (/^$sections_rx/); + # reset tags saved from the previous section + $open_tags_R = [ @save_open_tags ]; + @save_open_tags = (); + + local($curr_sec_tex); + if ((! $TITLE) || ($TITLE eq $default_title)) { + eval '$TITLE = '.$default_title; + $TITLE = $default_title if $@; + $curr_sec_tex = ($top_sec ? '' : + join('', '"', &revert_to_raw_tex($curr_sec), '"')); + print STDOUT "$curr_sec_tex for $CURRENT_FILE\n" if ($VERBOSITY); + } else { + local($tmp) = &purify($TITLE,1); + $tmp = &revert_to_raw_tex($tmp); + print STDOUT "\"$tmp\" for $CURRENT_FILE\n" if ($VERBOSITY); + } + + if (/\\(latextohtmlditchpreceding|startdocument)/m) { + local($after) = $'; + local($before) = $`.$&; + $SEGMENT = 1 if ($1 =~ /startdocument/); + print STDOUT "\n *** translating preamble ***\n" if ($VERBOSITY); + $_ = &translate_preamble($before); + s/\n\n//g; s/
//g; # remove redundant blank lines and breaks +# +# &process_aux_file if $AUX_FILE_NEEDED; +# + print STDOUT "\n *** preamble done ***\n" if ($VERBOSITY); + $PREAMBLE = 0; + $NESTING_LEVEL=0; + &do_AtBeginDocument; + $after =~ s/^\s*//m; + print STDOUT (($VERBOSITY >2)? "\n*** Translating environments ***" : ";"); + $after = &translate_environments($after); + print STDOUT (($VERBOSITY >2)? "\n*** Translating commands ***" : ";"); + $_ .= &translate_commands($after); +# $_ = &translate_commands($after); + } else { + &do_AtBeginDocument; + $PREAMBLE = 0; + $NESTING_LEVEL=0; + print STDOUT (($VERBOSITY >2)? "\n*** Translating environments ***" : ";"); + $_ = &translate_environments($_); + print STDOUT (($VERBOSITY >2)? "\n*** Translating commands ***" : ";"); + $_ = &translate_commands($_); + } + + # close any tags that remain open + if (@$open_tags_R) { + ($close_all,$open_all) = &preserve_open_tags(); + $_ .= $close_all; + @save_open_tags = @$open_tags_R; $open_tags_R = []; + } else { ($close_all,$open_all) = ('','') } + + print STDOUT (($VERBOSITY >2)? "\n*** Translations done ***" : "\n"); +# if (($footnotes)&&($NO_FOOTNODE)&&( $current_depth < $MAX_SPLIT_DEPTH)) { +# $_ .= &make_footnotes +# } + print OUTPUT $_; + + # Associate each id with the depth, the filename and the title + ###MEH -- starred sections don't show up in TOC ... + # RRM: ...unless $TOC_STARS is set +# $toc_sec_title = &simplify($toc_sec_title); + $toc_sec_title = &purify($toc_sec_title);# if $SEGMENT; + $toc_sec_title = &purify($TITLE) unless ($toc_sec_title); + + if ($TOC_STARS) { + $toc_section_info{join(' ',@curr_sec_id)} = + "$current_depth$delim$CURRENT_FILE$delim$toc_sec_title" +# if ($current_depth <= $MAX_SPLIT_DEPTH + $MAX_LINK_DEPTH); + if ($current_depth <= $TOC_DEPTH); + } else { + $toc_section_info{join(' ',@curr_sec_id)} = + "$current_depth$delim$CURRENT_FILE$delim$toc_sec_title" + . ($curr_sec =~ /star$/ ? "$delim" : "") +# if ($current_depth <= $MAX_SPLIT_DEPTH + $MAX_LINK_DEPTH); + if ($current_depth <= $TOC_DEPTH); + } + + # include $BODYTEXT in the section_info, when starting a new page + $section_info{join(' ',@curr_sec_id)} = + "$current_depth$delim$CURRENT_FILE$delim$TITLE$delim" + . (($current_depth < $MAX_SPLIT_DEPTH)? $BODYTEXT: ""); + + # Get type of section (see also the split above) + $curr_sec = $sections[$i+1].$sections[$i+2]; + $del = $sections[$i+4]; + + # Get the depth of the current section; +# $curr_sec = $outermost_level unless $curr_sec; + $current_depth = $section_commands{$curr_sec}; + if ($after_segment) { + $current_depth = $after_segment; + $curr_sec_id[$after_segment] += $after_seg_num; + ($after_segment,$after_seg_num) = ('',''); + for($j=1+$current_depth; $j <= $#curr_sec_id; $j++) { + $curr_sec_id[$j] = 0; + } + } + if ($SEGMENT||$SEGMENTED) { + for($j=1; $j <= $#curr_sec_id; $j++) { + $curr_sec_id[$j] += $segment_sec_id[$j]; + $segment_sec_id[$j] = 0; + } + }; + + + # this may alter the section-keys + $multiple_toc = 1 if ($MULTIPLE_FILES && $ROOTED && (/$toc_mark/)); + + + #RRM : Should this be done here, or in \stepcounter ? + @curr_sec_id = &new_level($current_depth, @curr_sec_id); + + $toc_sec_title = $TITLE = $top_sec = ''; + $i+=5; #skip to next text section + } + $open_tags_R = []; + $open_all = ''; + + $_ = undef; + $_ = &make_footnotes if ($footnotes); + $CURRENT_FILE = ''; + print OUTPUT; + close OUTPUT; + + +# # this may alter the section-keys +# &adjust_root_keys if $multiple_toc; + + if ($PREPROCESS_IMAGES) { &preprocess_images } + else { &make_image_file } + print STDOUT "\n *** making images ***" if ($VERBOSITY > 1); + &make_images; + + # Link sections, add head/body/address do cross-refs etc + print STDOUT "\n *** post-process ***" if ($VERBOSITY > 1); + &post_process; + + if (defined &document_post_post_process) { + #BRM: extra document-wide post-processing + print STDOUT "\n *** post-processing Document ***" if ($VERBOSITY > 1); + &document_post_post_process(); + } + + print STDOUT "\n *** post-processed ***" if ($VERBOSITY > 1); + ©_icons if $LOCAL_ICONS; + if ($SEGMENT || $DEBUG || $SEGMENTED) { + &save_captions_in_file("figure", $figure_captions) if $figure_captions; + &save_captions_in_file("table", $table_captions) if $table_captions; +# &save_array_in_file ("captions", "figure_captions", 0, %figure_captions) if %figure_captions; +# &save_array_in_file ("captions", "table_captions", 0, %table_captions) if %table_captions; + &save_array_in_file ("index", "index", 0, %index); + &save_array_in_file ("sections", "section_info", 0, %section_info); + &save_array_in_file ("contents", "toc_section_info", 0,%toc_section_info); + &save_array_in_file ("index", "sub_index", 1, %sub_index) if %sub_index; + &save_array_in_file ("index", "index_labels", 1, %index_labels) if %index_labels; + &save_array_in_file ("index", "index_segment", 1, %index_segment) if %index_segment; + &save_array_in_file ("index", "printable_key", 1, %printable_key) + if (%printable_key || %index_segment); + } + elsif ($MULTIPLE_FILES && $ROOTED) { + &save_array_in_file ("sections", "section_info", 0, %section_info); + &save_array_in_file ("contents", "toc_section_info", 0, %toc_section_info); + } + &save_array_in_file ("internals", "ref_files", 0, %ref_files) if $changed; + &save_array_in_file ("labels", "external_labels", 0, %ref_files); + &save_array_in_file ("labels", "external_latex_labels", 1, %latex_labels); + &save_array_in_file ("images", "cached_env_img", 0, %cached_env_img); +} + +# RRM: +sub translate_preamble { + local($_) = @_; + $PREAMBLE = 1; + $NESTING_LEVEL=0; #counter for TeX group nesting level + # remove some artificially inserted constructions + s/\n${tex2html_deferred_rx}\\par\s*${tex2html_deferred_rx2}\n/\n/gm; + s/\\newedcommand(<<\d+>>)([A-Za-z]+|[^A-Za-z])\1(\[\d+\])?(\[[^]]*\])?(<<\d+>>)[\w\W\n]*\5($comment_mark\d*)?//gm; + s/\n{2,}/\n/ogm; + + if (/\\htmlhead/) { + print STDOUT "\nPREAMBLE: discarding...\n$`" if ($VERBOSITY > 4); + local($after) = $&.$'; + # translate segment preamble preceding \htmlhead + &translate_commands(&translate_environments($`)); + # translate \htmlhead and rest of preamble + $_=&translate_commands(&translate_environments($after)); + print STDOUT "\nPREAMBLE: retaining...\n$_" if ($VERBOSITY > 4); + } else { + # translate only preamble here (metacommands etc.) + # there should be no textual results, if so, discard them + &translate_commands(&translate_environments($_)); + print STDOUT "\nPREAMBLE: discarding...\n$_" if ($VERBOSITY > 4); + $_=""; + }; + $_ = &do_AtBeginDocument($_); + if (! $SEGMENT) { $_ = ''} # segmented documents have a heading already + $_; +} + +############################ Processing Environments ########################## + +sub wrap_shorthand_environments { + # This wraps a dummy environment around environments that do not use + # the begin-end convention. The wrapper will force them to be + # evaluated by Latex rather than them being translated. + # Wrap a dummy environment around matching TMPs. + # s/^\$\$|([^\\])\$\$/{$1.&next_wrapper('tex2html_double_dollar')}/ge; + # Wrap a dummy environment around matching $s. + # s/^\$|([^\\])\$/{$1.&next_wrapper('$')}/ge; + # s/tex2html_double_dollar/\$\$/go; + # Do \(s and \[s + # + local($wrapper) = "tex2html_wrap_inline"; # \ensuremath wrapper + print STDOUT "\n *** wrapping environments ***\n" if ($VERBOSITY > 3); + + # MRO: replaced $* with /m + print STDOUT "\\(" if ($VERBOSITY > 3); + s/(^\\[(])|([^\\])(\\[(])/{$2.&make_any_wrapper(1,'',$wrapper).$1.$3}/geom; + print STDOUT "\\)" if ($VERBOSITY > 3); + s/(^\\[)]|[^\\]\\[)])/{$1.&make_any_wrapper(0,'',$wrapper)}/geom; + + print STDOUT "\\[" if ($VERBOSITY > 3); + s/(^\\[[])|([^\\])(\\[[])/{$2.&make_any_wrapper(1,1,"displaymath")}/geom; + print STDOUT "\\]" if ($VERBOSITY > 3); + s/(^\\[\]])|([^\\])(\\[\]])/{$2.&make_any_wrapper(0,1,"displaymath")}/geom; + + print STDOUT "\$" if ($VERBOSITY > 3); + s/$enspair/print "\$"; + {&make_any_wrapper(1,'',$wrapper).$&.&make_any_wrapper(0,'',$wrapper)}/geom; + + $double_dol_rx = '(^|[^\\\\])\\$\\$'; + $single_dol_rx = '(^|[^\\\\])\\$'; + print STDOUT "\$" if ($VERBOSITY > 3); + + local($dollars_remain) = 0; + $_ = &wrap_math_environment; + $_ = &wrap_raw_arg_cmds; +} + +sub wrap_math_environment { + + # This wraps math-type environments + # The trick here is that the opening brace is the same as the close, + # but they *can* still nest, in cases like this: + # + # $ outer stuff ... \hbox{ ... $ inner stuff $ ... } ... $ + # + # Note that the inner pair of $'s is nested within a group. So, to + # handle these cases correctly, we need to make sure that the outer + # brace-level is the same as the inner. --- rst + #tex2html_wrap + # And yet another problem: there is a scungy local idiom to do + # this: $\_$ for a boldfaced underscore. xmosaic can't display the + # resulting itty-bitty bitmap, for some reason; even if it could, it + # would probably come out as an overbar because of the floating- + # baseline problem. So, we have to special case this. --- rst again. + + local ($processed_text, @processed_text, $before, $end_rx, $delim, $ifclosed); + local ($underscore_match_rx) = "^\\s*\\\\\\_\\s*\\\$"; + local ($wrapper); + print STDOUT "\nwrap math:" if ($VERBOSITY > 3); + + #find braced dollars, in tabular-specs + while (/((($O|$OP)\d+($C|$CP))\s*)\$(\s*\2)/) { + push (@processed_text, $`, $1.$dol_mark.$5); + $_ = $'; + } + $_ = join('',@processed_text, $_) if (@processed_text); + undef @processed_text; + + $dollars_remain = 0; + while (/$single_dol_rx/) { + $processed_text .= $`.$1; + $_ = $'; + $wrapper = "tex2html_wrap_inline"; + $end_rx = $single_dol_rx; # Default, unless we begin with $$. + $delim = "\$"; + + if (/^\$/ && (! $`)) { + s/^\$//; + $end_rx = $double_dol_rx; + $delim = ""; # Cannot say "\$\$" inside displaymath + $wrapper = "displaymath"; + + } elsif (/$underscore_match_rx/ && (! $`)) { + + # Special case for $\_$ ... + + s/$underscore_match_rx//; + $processed_text .= '\\_'; + next; + } + + # Have an opening $ or $$. Find matching close, at same bracket level +# $processed_text .= &make_any_wrapper(1,'',$wrapper).$delim; + + print STDOUT "\$" if ($VERBOSITY > 3); + $ifclosed = 0; + local($thismath); + while (/$end_rx/) { + # Forget the $$ if we are going to replace it with "displaymath" + $before = $` . (($wrapper eq "displaymath")? "$1" : $&); + last if ($before =~ /\\(sub)*(item|section|chapter|part|paragraph)(star)?\b/); + $thismath .= $before; + $_ = $'; + s/^( [^\n])/\\space$1/s; #make sure a trailing space doesn't get lost. + + # Found dollar sign inside open subgroup ... now see if it's + # at the same brace-level ... + + local ($losing, $br_rx) = (0, ''); + print STDOUT "\$" if ($VERBOSITY > 3); + while ($before =~ /$begin_cmd_rx/) { + $br_rx = &make_end_cmd_rx($1); $before = $'; + + if ($before =~ /$br_rx/) { $before = $'; } + else { $losing = 1; last; } + } + do { $ifclosed = 1; last } unless $losing; + + # It wasn't ... find the matching close brace farther on; then + # keep going. + + /$br_rx/; + + $thismath .= $`.$&; + + #RRM: may now contain unprocessed $s e.g. $\mbox{...$...$...}$ + # the &do_cmd_mbox uses this specially to force an image + # ...but there may be other situations; e.g. \hbox + # so set a flag: + $dollars_remain = 1; + + $_ = $'; + } + + # Got to the end. Whew! + if ($ifclosed) { + # also process any nested math + while (($dollars_remain)&&($delim eq "\$")) { + local($saved) = $_; + $thismath =~ s/\$$//; + $_ = $thismath; + $thismath = &wrap_math_environment; + $thismath .= "\$"; + $_ = $saved; + } + $processed_text .= &make_any_wrapper(1,'',$wrapper) . $delim + . $thismath . &make_any_wrapper(0,'',$wrapper); + } else { + print STDERR "\n\n *** Error: unclosed math or extra `\$', before:\n$thismath\n\n"; +# # remove a $ to try to recover as much as possible. +# $thismath =~ s/([^\\]\\\\|[^\\])\$/$1\%\%/; +# $_ = $thismath . $_; $thismath = ""; + print "\n$thismath\n\n\n$_\n\n\n"; die; + + } + } + $processed_text . $_; +} + +sub translate_environments { + local ($_) = @_; + local($tmp, $capenv); +# print "\nTranslating environments ..."; + local($after, @processedE); + local ($contents, $before, $br_id, $env, $pattern); + for (;;) { +# last unless (/$begin_env_rx/o); + last unless (/$begin_env_rx|$begin_cmd_rx|\\(selectlanguage)/o); +# local ($contents, $before, $br_id, $env, $pattern); + local($this_env, $opt_arg, $style_info); + $contents = ''; + # $1,$2 : optional argument/text --- stylesheet info + # $3 : br_id (at the beginning of an environment name) + # $4 : environment name + # $5 : br_id of open-brace, when $3 == $4 == ''; + # $6 : \selectlanguage{...} + if ($7) { + push(@processedE,$`); + $_ = $'; + if (defined &do_cmd_selectlanguage) { + $_ = &do_cmd_selectlanguage($_); + } else { + local($cmd) = $7; + $pattern = &missing_braces unless ( + s/$next_pair_rx/$pattern = $2;''/e); + local($trans) = $pattern.'_translation'; + if (defined &$trans) { + &set_default_language($pattern,$_); + } + undef $cmd; undef $trans; + } + next; + } elsif ($4) { + ($before, $opt_arg, $style_info, $br_id + , $env, $after, $pattern) = ($`, $2, $3, $4, $5, $', $&); + if (($before)&& (!($before =~ /$begin_env_rx|$begin_cmd_rx/))) { + push(@processedE,$before); + $_ = $pattern . $after; $before = ''; + } + } else { + ($before, $br_id, $env, $after, $pattern) = ($`, $6, 'group', $', $&); + if (($before)&& (!($before =~ /$begin_env_rx|$begin_cmd_rx/))) { + push(@processedE,$before); + $_ = $pattern . $after; $before = ''; + } + local($end_cmd_rx) = &make_end_cmd_rx($br_id); + if ($after =~ /$end_cmd_rx/) { + # ... find the the matching closing one + $NESTING_LEVEL++; + ($contents, $after) = ($`, $'); + $contents = &process_group_env($contents); + print STDOUT "\nOUT: {$br_id} ".length($contents) if ($VERBOSITY > 3); + print STDOUT "\n:$contents\n" if ($VERBOSITY > 7); + # THIS MARKS THE OPEN-CLOSE DELIMITERS AS PROCESSED + $_ = join("", $before,"$OP$br_id$CP", $contents,"$OP$br_id$CP", $after); + $NESTING_LEVEL--; + } else { + $pattern = &escape_rx_chars($pattern); + s/$pattern//; + print "\nCannot find matching bracket for $br_id"; + $_ = join("", $before,"$OP$br_id$CP", $after); + } + next; + } + $contents = undef; + local($defenv) = $env =~ /deferred/; +# local($color_env); + local($color_env) + unless ($env =~ /tabular|longtable|in(line|display)|math/); + local($closures,$reopens); + local(@save_open_tags) = @$open_tags_R unless ($defenv); + local($open_tags_R) = [ @save_open_tags ] unless ($defenv); + local(@saved_tags) if ($env =~ /tabular|longtable/); + if ($env =~ /tabular|longtable|makeimage|in(line|display)/) { + @save_open_tags = @$open_tags_R; + $open_tags_R = [ @save_open_tags ]; + # check for color + local($color_test) = join(',',@$open_tags_R); + if ($color_test =~ /(color{[^}]*})/g ) { + $color_env = $1; + } # else { $color_env = '' } + + if ($env =~ /tabular|longtable|makeimage/) { + # close to the surrounding block-type tag + ($closures,$reopens,@saved_tags) = &preserve_open_block_tags(); + @save_open_tags = @$open_tags_R; + $open_tags_R = [ @save_open_tags ]; + if ($color_env) { + $color_test = join(',',@saved_tags); + if ($color_test =~ /(color{[^}]*})/g ) { + $color_env = $1; + } + } + } elsif ($env =~ /in(line|display)/) { + $closures = &close_all_tags() if ((&defined_env($env)) + &&!($defenv)&&!($env=~/inline/)&&(!$declarations{$env})); + if ($color_env) { + $color_test = $declarations{$color_env}; + $color_test =~ s/<\/.*$//; + $closures .= "\n$color_test"; + push (@$open_tags_R , $color_env); + } + } + } elsif ($env =~ /alltt|tex2html_wrap/) { + # alltt is constructed as paragraphs, not with
+	    #  tex2html_wrap  creates an image, which is at text-level
+	} else {
+	    $closures = &close_all_tags() if ((&defined_env($env))
+		&&!($defenv)&&(!$declarations{$env}) );
+	}
+	# Sets $contents and modifies $after
+	if (&find_end_env($env,$contents,$after)) {
+	    print STDOUT "\nIN-A {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
+	    &process_command($counters_rx, $before)
+		if ($before =~ /$counters_rx/);
+	    # This may modify $before and $after
+	    # Modifies $contents
+#RRM: the do_env_... subroutines handle when to translate sub-environments
+#	    $contents = &translate_environments($contents) if
+##		((!$defenv) && (&defined_env($env)) && (! $raw_arg_cmds{$env})
+##		&& (!$declarations{$env})
+#		((&defined_env($env)) && (! $raw_arg_cmds{$env})
+#		&& (!($env =~ /latexonly|enumerate|figure|table|makeimage|wrap_inline/))
+#		&& ((! $NO_SIMPLE_MATH)||(!($env =~ /wrap/)))
+#		&& (!($env =~ /(math|wrap|equation|eqnarray|makeimage|minipage|tabular)/) )
+#		);
+	    if ($opt_arg) { 
+		&process_environment(1, $env, $br_id, $style_info); # alters $contents
+	    } else {
+		&process_environment(0, $env, $br_id, '');
+	    }
+	    undef $_;
+	    print STDOUT "\nOUT-A {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
+	    #JCL(jcl-env) - insert the $O$br_id$C stuff to handle environment grouping
+	    if (!($contents eq '')) {
+		$after =~ s/^\n//o if ($defenv);
+		$this_env = join("", $before, $closures
+			  , $contents
+			  , ($defenv ? '': &balance_tags())
+			  , $reopens ); $_ = $after;
+	    } else { 
+		$this_env = join("", $before , $closures
+			  , ($defenv ? '': &balance_tags())
+			  , $reopens ); $_ = $after;
+	    };
+	### Evan Welsh  added the next 24 lines ##
+	} elsif (&defined_env($env)) {
+	    print STDOUT "\nIN-B {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
+	    # If I specify a function for the environment then it
+	    # calls it with the contents truncated at the next section.
+	    # It assumes I know what I'm doing and doesn't give a
+	    # deferred warning.
+	    $contents = $after;
+	    if ($opt_arg) { 
+		$contents = &process_environment(1, $env, $br_id, $style_info);
+	    } else {
+		$contents = &process_environment(0, $env, $br_id, '');
+	    }
+	    print STDOUT "\nOUT-B {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
+	    $this_env = join("", $before, $closures ,$contents, $reopens);
+
+	    # there should not be anything left over 
+#	    $_ = $after;
+	    $_ = '';
+	} elsif ($ignore{$env}) {
+	    print STDOUT "\nIGNORED {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
+	    # If I specify that the environment should be ignored then
+	    # it is but I get a deferred warning.
+	    $this_env = join("", $before , $closures , &balance_tags()
+		      , $contents, $reopens );
+	    $_ = $after;
+	    &write_warnings("\n\\end{$env} not found (ignored).\n");
+	} elsif ($raw_arg_cmds{$env}) {
+	    print "\nIN-C {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
+	    # If I specify that the environment should be passed to tex
+	    # then it is with the environment truncated at the next
+	    # section and I get a deferred warning.
+
+	    $contents = $after;
+	    if ($opt_arg) { 
+		$contents = &process_environment(1, $env, $br_id, $style_info);
+	    } else {
+		$contents = &process_environment(0, $env, $br_id, '');
+	    }
+	    print STDOUT "\nOUT-C {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
+	    $this_env = join("", $before, $closures
+			     , $contents, &balance_tags(), $reopens );
+	    $_='';
+	    &write_warnings(
+	        "\n\\end{$env $br_id} not found (truncated at next section boundary).\n");
+	} else {
+	    $pattern = &escape_rx_chars($pattern);
+	    s/$pattern/$closures/;
+	    print "\nCannot find \\end{$env $br_id}\n";
+	    $_ .= join('', &balance_tags(), $reopens) unless ($defenv);
+	}
+	if ($this_env =~ /$begin_env_rx|$begin_cmd_rx/) {
+	    $_ = $this_env . $_;
+	} else { push (@processedE, $this_env) }
+    }
+    $_ = join('',@processedE) . $_;
+    $tmp = $_; undef $_;
+    &process_command($counters_rx, $tmp) if ($tmp =~ /$counters_rx/);
+    $_ = $tmp; undef $tmp;
+    $_
+}
+
+sub find_end_env {
+    # MRO: find_end_env($env,$contents,$rest)
+    #local ($env, *ref_contents, *rest) = @_;
+    my $env = $_[0];
+    my $be_rx = &make_begin_end_env_rx($env);
+    my $count = 1;
+
+    while ($_[2] =~ /($be_rx)(\n?)/s) { # $rest
+	$_[1] .= $`; # $contents
+
+	if ($2 eq "begin") { ++$count }
+	else { --$count };
+
+	#include any final \n at an {end} only
+	$_[2] = (($2 eq 'end')? $5 : '') . $'; # $rest
+	last if $count == 0;
+
+	$_[1] .= $1; # $contents
+    }
+
+    if ($count != 0) {
+	$_[2] = join('', $_[1], $_[2]); # $rest = join('', $contents, $rest);
+	$_[1] = ''; # $contents
+	return(0)
+    } else { return(1) }
+}
+
+
+sub process_group_env {
+    local($contents) = @_;
+    local(@save_open_tags) = @$open_tags_R;
+    local($open_tags_R) = [ @save_open_tags ];
+    print STDOUT "\nIN::{group $br_id}" if ($VERBOSITY > 4);
+    print STDOUT "\n:$contents\n" if ($VERBOSITY > 6);
+
+    # need to catch explicit local font-changes
+    local(%font_size) = %font_size if (/\\font\b/);
+
+    # record class/id info for a style-sheet entry
+    local($env_id, $tmp, $etmp);
+    if (($USING_STYLES) && !$PREAMBLE ) { $env_id = $br_id; }
+#	$env_id = "grp$br_id";
+#	$styleID{$env_id} = " ";
+#        $env_id = " ID=\"$env_id\"";
+#    }
+
+    undef $_;
+    $contents =~ s/^\s*$par_rx\s*//s; # don't start with a \par 
+    if ($contents =~ /^\s*\\($image_switch_rx)\b\s*/s) {
+	# catch TeX-like environments: {\fontcmd ... }
+	local($image_style) = $1;
+	if ($USING_STYLES) {
+	    $env_style{$image_style} = " " unless ($env_style{$image_style});
+	}
+	local($switch_cmd) = "do_cmd_${image_style}";
+	if (defined &$switch_cmd ) {
+	    eval "\$contents = \&${switch_cmd}(\$')";
+	    print "\n*** &$switch_cmd didn't work: $@\n$contents\n\n" if ($@);
+	} elsif ($contents =~ /$par_rx/) {
+	    # split into separate image for each paragraph
+	    local($par_style,$this_par_img) = '';
+	    local(@par_pieces) = split($par_rx, $contents);
+	    local($this_par,$par_style,$par_comment);
+	    $contents = '';
+	    while (@par_pieces) {
+		$this_par = shift @par_pieces;
+		if ($this_par =~ /^\s*\\($image_switch_rx)\b/s) {
+		    $image_style = $1;
+		    $par_style = 'P.'.$1;
+		    $env_style{$par_style} = " " unless ($env_style{$par_style});
+		}
+#	no comment: source is usually too highly encoded to be meaningful
+#	$par_comment = &make_comment($image_style,$this_par);
+		$this_par_img = &process_in_latex("\{".$this_par."\}");
+		$contents .=  join(''  #,"\n", $par_comment
+			, "\n", $this_par_img
+			, "

\n"); + if (@par_pieces) { + # discard the pieces from matching $par_rx + $dum = shift @par_pieces; + $dum = shift @par_pieces; + $dum = shift @par_pieces; + $dum = shift @par_pieces; + $dum = shift @par_pieces; + $dum = shift @par_pieces; +# $contents .= "\n

\n

"; + } + } + } else { + $contents = &process_undefined_environment("tex2html_accent_inline" + , ++$global{'max_id'},"\{".$contents."\}"); + } + } elsif ($contents =~ /^\s*\\(html)?url\b($O\d+$C)[^<]*\2\s*/) { + # do nothing + $contents = &translate_environments($contents); + $contents = &translate_commands($contents); + } elsif (($env_switch_rx)&&($contents =~ s/^(\s*)\\($env_switch_rx)\b//s)) { + # write directly into images.tex, protected by \begingroup...\endgroup + local($prespace, $cmd, $tmp) = ($1,$2,"do_cmd_$2"); + $latex_body .= "\n\\begingroup "; + if (defined &$tmp) { + eval("\$contents = &do_cmd_$cmd(\$contents)"); + } + $contents = &translate_environments($contents); + $contents = &translate_commands($contents); + undef $tmp; undef $cmd; + $contents .= "\n\\endgroup "; + } elsif ($contents =~ /^\s*\\([a-zA-Z]+)\b/s) { + local($after_cmd) = $'; + local($cmd) = $1; $tmp = "do_cmd_$cmd"; $etmp = "do_env_$cmd"; + if (($cmd =~/^(rm(family)?|normalsize)$/) + ||($declarations{$cmd}&&(defined &$tmp))) { + do{ + local(@save_open_tags) = @$open_tags_R; + eval "\$contents = \&$tmp(\$after_cmd);"; + print "\n*** eval &$tmp failed: $@\n$contents\n\n" if ($@); + $contents .= &balance_tags(); + }; + } elsif ($declarations{$cmd}&&(defined &$etmp)) { + eval "\$contents = \&$etmp(\$after_cmd);"; + } else { + $contents = &translate_environments($contents); + $contents = &translate_commands($contents) + if ($contents =~ /$match_br_rx/o); + # Modifies $contents + &process_command($single_cmd_rx,$contents) if ($contents =~ /\\/o); + } + undef $cmd; undef $tmp; undef $etmp; + } else { + $contents = &translate_environments($contents); + $contents = &translate_commands($contents) + if ($contents =~ /$match_br_rx/o); + # Modifies $contents + &process_command($single_cmd_rx,$contents) + if ($contents =~ /\\/o); + } + $contents . &balance_tags(); +} + +# MODIFIES $contents +sub process_environment { + local($opt, $env, $id, $styles) = @_; + + local($envS) = $env; $envS =~ s/\*\s*$/star/; + local($env_sub,$border,$attribs,$env_id) = ("do_env_$envS",'','',''); + local($original) = $contents; + + if ($env =~ /tex2html_deferred/ ) { + $contents = &do_env_tex2html_deferred($contents); + return ($contents); + } + $env_id = &read_style_info($opt, $env, $id, $styles) + if (($USING_STYLES)&&($opt)); + + if (&defined_env($env)) { + print STDOUT ","; + print STDOUT "{$env $id}" if ($VERBOSITY > 1); +# $env_sub =~ s/\*$/star/; + $contents = &$env_sub($contents); + + } elsif ($env =~ /tex2html_nowrap/) { + #pass it on directly for LaTeX, via images.tex + $contents = &process_undefined_environment($env, $id, $contents); + return ($contents); + +# elsif (&special_env) { # &special_env modifies $contents + } else { + local($no_special_chars) = 0; + local($failed) = 0; + local($has_special_chars) = 0; + &special_env; # modifies $contents + print STDOUT "\n" if ($VERBOSITY > 3); + if ($failed || $has_special_chars) { + $contents = $original; + $failed = 1; + print STDOUT " !failed!\n" if ($VERBOSITY > 3); + } + } + if (($contents) && ($contents eq $original)) { + if ($ignore{$env}) { return(''); } + # Generate picture + if ($contents =~ s/$htmlborder_rx//o) { + $attribs = $2; $border = (($4)? "$4" : 1) + } elsif ($contents =~ s/$htmlborder_pr_rx//o) { + $attribs = $2; $border = (($4)? "$4" : 1) + } + $contents = &process_undefined_environment($env, $id, $contents); + $env_sub = "post_latex_$env_sub"; # i.e. post_latex_do_env_ENV + if ( defined &$env_sub) { + $contents = &$env_sub($contents); + } elsif (($border||($attributes))&&($HTML_VERSION > 2.1)) { + $contents = &make_table($border,$attribs,'','','',$contents); + } else { + $contents = join('',"
\n",$contents,"\n
") + unless (!($contents)||($inner_math)||($env =~ + /^(tex2html_wrap|tex2html_nowrap|\w*math|eq\w*n)/o )); + } + } + $contents; +} + + +#RRM: This reads the style information contained in the optional argument +# to the \begin command. It is stored to be recovered later as an entry +# within the automatically-generated style-sheet, if $USING_STYLES is set. +# Syntax for this info is: +# + + + +

+This is a sub menu template.
+This comment does not appear on the resulting page.
+
+The table tags just inside the first div are needed
+to avoid problems with layers that cross the boundaries of the browsing window
+and to make things work with Opera 6.
+If you are sure that *all* your layers stay inside the browsing window
+and you do not have to support Opera 6
+(or if you will provide a "compatibility" menu version to Opera 6),
+you can safely remove it.
+--
+
+ + + + + + + + + diff --git a/trunk/gosa-core/ihtml/themes/default/MultiSelectWindow.tpl b/trunk/gosa-core/ihtml/themes/default/MultiSelectWindow.tpl new file mode 100644 index 000000000..92c88323e --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/MultiSelectWindow.tpl @@ -0,0 +1,148 @@ + + + + + + + + + + {if $is_headpage} + + {else} + + {/if} + +
+
+

+ {$Summary} {$hint} +

+
+
+
+ + + + {if $HeaderDropDown != ""} + + + {/if} + +
+ {$Header} + + - + + + {$HeaderDropDown} +
+
+
+
+
+
+ {$DivList} + +
+
+ {$UserBox1} + {if $Information != ""} +
+

+ [i]{t}Information{/t} +

+
+
+ {$Information} +
+
+ {/if} + {$UserBox2} + {if !$Skip_Filter_Part } +
+

+ [F]{t}Filters{/t} +

+
+
+ {if $Display_alphabet} + + {$alphabet} +
+ {/if} + { if $CheckBoxes != ""} + + + + +
+ {$CheckBoxes} +
+ {/if} + {$regexes} + {$apply} +
+ {$UserBox3} + {/if} +
+ {$UserBox1} +
+

+ [i]{t}Information{/t} +

+
+
+ {$Information} +
+ {$UserBox2} +
+ {if !$Skip_Filter_Part } +
+

+ [F]{t}Filters{/t} +

+
+
+ {if $Display_alphabet} + + {$alphabet} +
+ {/if} + { if $CheckBoxes != ""} + + + + +
+ {$CheckBoxes} +
+ {/if} + {$regexes} + {$apply} + {$UserBox3} +
+ {/if} +
+{if $Display_Save | $Display_Close} +

  +

+
+

+ {if $Display_Save} + + {/if} + {if $Display_Close} + + {/if} +

+
+{/if} +{if $IgnoreAccount} + +{/if} + + diff --git a/trunk/gosa-core/ihtml/themes/default/accountexpired.tpl b/trunk/gosa-core/ihtml/themes/default/accountexpired.tpl new file mode 100644 index 000000000..9755ce5eb --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/accountexpired.tpl @@ -0,0 +1,74 @@ + +{* GOsa login - smarty template *} +{$php_errors} +{$errors} + + +
+ + + + + +
+
+ +

+ {t}Your password has expired. Please choose a new one!{/t} +

+ + +
+ + + + + + + + + + + + + + + + +
+

{t}Old password{/t}

+
+ +
+

{t}New password{/t}

+
+ +
+

{t}Verify password{/t}

+
+ +
+
+ +
+ +
+ +
+
+ + + + + +
+ diff --git a/trunk/gosa-core/ihtml/themes/default/acl.tpl b/trunk/gosa-core/ihtml/themes/default/acl.tpl new file mode 100644 index 000000000..de2a24823 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/acl.tpl @@ -0,0 +1,145 @@ +{if !$acl_readable} + +

{msgPool type=permView}

+ +{else} + {if $dialogState eq 'head'} +

{t}Assigned ACL for current entry{/t}

+ {$aclList} + + + {if $acl_createable} + + {/if} + {/if} + + {if $dialogState eq 'create'} +

{t}ACL type{/t} + {if !$acl_writeable} +   + {else} +   + {if $javascript eq 'false'} + + {/if} + {/if} +

+ +

 

+
+ {t}Additional filter options{/t}  + {if !$acl_writeable} + + {else} + + {/if} +
+ + + + + + + + + + + + +
+ {t}Use members from{/t} + + {if $javascript eq 'false'}{/if}

+
+ +
+ {t}Available members{/t}
+ {if !$acl_writeable} + + {else} + + {/if} +
+ {if $acl_writeable} + +

+ + {/if} +
+ {t}Members{/t}
+ {if !$acl_writeable} + + + {else} + + {/if} +
+ + {if $aclType ne 'reset'} + {if $aclType ne 'role'} + {if $aclType ne 'base'} +

 

+ +

{t}List of available ACL categories{/t}

+ {$aclList} + {/if} + {/if} + {/if} + + {if $aclType eq 'base'} +

 

+

{t}ACL for this object{/t}

+ {$aclSelector} + {/if} + + {if $aclType eq 'role'} +

 

+

{t}Available roles{/t}

+ {$roleSelector} + {/if} + +

 

+
+ {if $acl_writeable} + +   + {/if} + +
+ {/if} + + {if $dialogState eq 'edit'} + +

{$headline}

+ + {$aclSelector} + +

 

+
+ +   + +
+ {/if} +{/if} diff --git a/trunk/gosa-core/ihtml/themes/default/colors.txt b/trunk/gosa-core/ihtml/themes/default/colors.txt new file mode 100644 index 000000000..55539aac3 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/colors.txt @@ -0,0 +1,13 @@ +Color guide +=========== + +Background: #FFFFFF +Header-background: #A9FBA6 +Font colors: #000000 + #00008F +Menu: #F8F8F8 +Highlight: #F0F0F0 +Borders: #AAAAAA +Font Error: #FF0000 +Font Warning: #FFA500 +Font OK: #008000 diff --git a/trunk/gosa-core/ihtml/themes/default/conflict.tpl b/trunk/gosa-core/ihtml/themes/default/conflict.tpl new file mode 100644 index 000000000..48add53a8 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/conflict.tpl @@ -0,0 +1,16 @@ +
+ {t}Session conflict detected{/t} +
+ +

+ {t}Warning{/t}: {t}Probably there's another active instance of your session. Multiple window operation is technical not possible and heavily depends on the browser you're using. Usage of different browsers at a time (i.e. IE and Mozilla) is possible. Pressing the Logout button will close this session.{/t} +

+ +

+ {t}Ignoring this message will change/destroy the data you're currently editing, so please close multiple windows and log in again.{/t} +

+ +

+ +

+ diff --git a/trunk/gosa-core/ihtml/themes/default/copyPasteDialog.tpl b/trunk/gosa-core/ihtml/themes/default/copyPasteDialog.tpl new file mode 100644 index 000000000..a43275e2a --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/copyPasteDialog.tpl @@ -0,0 +1,34 @@ +

{t}Copy & paste wizard{/t}

+ +{$message} +
+
+{if $Complete == false} + {t}Some values need to be unique in the complete directory while some combinations make no sense. GOsa shows the relevant attributes. Please maintain the values below to fullfill the policies.{/t} +
+{t}Remember that some properties like taken snapshots will not be copied!{/t}  +{t}Or if you copy or cut an entry within GOsa and delete the source object, you may get errors while pasting this object again!{/t} + +

 

+
+ {$AttributesToFix} + {if $SubDialog == false} +
+ +
+   + {if $type == "modified"} + + {/if} + + +
+ {/if} +{else} +

 

+
+

{t}Operation complete{/t}

+
+   +
+{/if} diff --git a/trunk/gosa-core/ihtml/themes/default/framework.tpl b/trunk/gosa-core/ihtml/themes/default/framework.tpl new file mode 100644 index 000000000..c02e26576 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/framework.tpl @@ -0,0 +1,58 @@ + + +{$php_errors} +
+
+
GOsa + {if !$javascript} + Main {t}Main{/t} + + {else} + Main {t}Main{/t} + + {/if} +   + + Help {t}Help{/t} + +   + {if !$javascript} + + Sign out {t}Sign out{/t} + + {else} + + Sign out {t}Sign out{/t} + + {/if} +
+ +
+ + + + + + + + + + {if $channel != ""} + + {/if} +
+ + + + +
+ {$msg_dialogs} + {$contents} +
+
{$errors}{$focus}
diff --git a/trunk/gosa-core/ihtml/themes/default/headers.tpl b/trunk/gosa-core/ihtml/themes/default/headers.tpl new file mode 100644 index 000000000..d21dea2a8 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/headers.tpl @@ -0,0 +1,33 @@ + + + + + {if isset($title)}{$title}{else}GOsa{/if} + + + + + + + + + + + + + + + + +{if $iePngWorkaround} + +{/if} + + + + + + + + diff --git a/trunk/gosa-core/ihtml/themes/default/help.tpl b/trunk/gosa-core/ihtml/themes/default/help.tpl new file mode 100644 index 000000000..2c91d5649 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/help.tpl @@ -0,0 +1,39 @@ + +{$php_errors} + +
+
+ + + + + + +
+ {t}GOsa help viewer{/t} + + {$backward} +    + + {t}Index{/t} + +    + {$forward} + +   +
+
+
+{$help_contents} +
+ + + + +
+ + diff --git a/trunk/gosa-core/ihtml/themes/default/islocked.tpl b/trunk/gosa-core/ihtml/themes/default/islocked.tpl new file mode 100644 index 000000000..75de1c40e --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/islocked.tpl @@ -0,0 +1,23 @@ +
+  {t}Locking conflict detected{/t} +
+ +

+ {t}Warning{/t}: {$message} +

+

+ {t}If this lock detection is false, the other person has obviously closed the webbrowser during the edit operation. You may want to take over the lock by pressing the 'Edit anyway' button.{/t} +

+ +

+ + {if $allow_readonly} +   + + {/if} +   + +

+ + + diff --git a/trunk/gosa-core/ihtml/themes/default/login.tpl b/trunk/gosa-core/ihtml/themes/default/login.tpl new file mode 100644 index 000000000..2563ea095 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/login.tpl @@ -0,0 +1,101 @@ + + +{$php_errors} +
+
+
GOsa
+
{$version}
+
+
+ {t}GOsa login screen{/t} +
+
+ +{* GOsa login - smarty template *} + + +
+ +
 
+
+
+ +{$msg_dialogs} +
+
+

+ {t}Login screen{/t} +

+
+
+
+ +
+ {t}Please use your username and your password to log into the site administration system.{/t}
+ {if $ssl}{$ssl}{/if} + {if $lifetime}{$lifetime}{/if} +
+ + + +
+ {t}Username{/t}  + +
+
+ {t}Password{/t}  + +
+
+ {t}Directory{/t}  + +
+ + +

+ +

+
+
+
+ {$message} +
+
+ + + + +
+
+
+ +
+
+ +
+ +{$errors} + + + + diff --git a/trunk/gosa-core/ihtml/themes/default/logout-close.tpl b/trunk/gosa-core/ihtml/themes/default/logout-close.tpl new file mode 100644 index 000000000..b98070723 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/logout-close.tpl @@ -0,0 +1,13 @@ + + +
+
+

{t}Your GOsa session has been closed!{/t}

+

+ {t}Please close this browser window and clean the authentication caches to avoid an automatic re-authentication by your browser.{/t} +

+
+
+ + + diff --git a/trunk/gosa-core/ihtml/themes/default/logout.tpl b/trunk/gosa-core/ihtml/themes/default/logout.tpl new file mode 100644 index 000000000..bf00c46ac --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/logout.tpl @@ -0,0 +1,22 @@ + + +
+
+

{t}Your GOsa session has expired!{/t}

+

+ {t}The last interaction with the GOsa web interface has been some time ago in the past. For security reasons, the session has been closed. To continue with administrative tasks, please sign in again.{/t} +

+
+
+
+
+ + + + + + diff --git a/trunk/gosa-core/ihtml/themes/default/msg_dialog.tpl b/trunk/gosa-core/ihtml/themes/default/msg_dialog.tpl new file mode 100644 index 000000000..96765217d --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/msg_dialog.tpl @@ -0,0 +1,137 @@ +{if $frame} + {if $IE} + +
+ {else} +
+ + {/if} +{else} + + + {if !$JS} + +
+
+ +
+ {if $i_Type == ERROR_DIALOG} + {t}Error{/t} + {elseif $i_Type == WARNING_DIALOG} + {t}Warning{/t} + {elseif $i_Type == INFO_DIALOG || $i_Type == CONFIRM_DIALOG || $i_Type == OK_CANCEL_DIALOG} + {t}Information{/t} + {/if} + {$s_Title}
+
+ + + + + + + +
+ {$s_Message} +
+
+ {if $i_Type == ERROR_DIALOG || $i_Type == WARNING_DIALOG || $i_Type == INFO_DIALOG} + + {elseif $i_Type == CONFIRM_DIALOG || $i_Type == OK_CANCEL_DIALOG} + + + {/if} +
+
+ + {else} + + {if $s_Trace != "" && $i_TraceCnt != 0} + + + {/if} + + + {/if} +{/if} diff --git a/trunk/gosa-core/ihtml/themes/default/password.tpl b/trunk/gosa-core/ihtml/themes/default/password.tpl new file mode 100644 index 000000000..8956e5175 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/password.tpl @@ -0,0 +1,135 @@ + + + + + GOsa - {t}Change your password{/t} + + + + + + + + + + + + + + + + + {if isset($ieworkaround)}{/if} + + + + + + +{* GOsa login - smarty template *} +{$php_errors} + +{if $changed} +
+{t}Success{/t} {t}Your password has been changed successfully.{/t} +
+{else} +
+

+ {t}Password{/t} + {t}Password change{/t} +

+ + +

{$ssl}

+ + + +

{$message}

+ + +

+ {t}This dialog provides a simple way to change your password. Enter the current password and the new password (twice) in the fields below and press the 'Change' button.{/t} +

+ +
+ + {if $show_directory_chooser} + + + + + {/if} + + + + + + + + + + + + + + + + + + + + +
{t}Directory{/t} + +
{t}Username{/t}{if $display_username} + + {else} + {$uid} + {/if} +
{t}Current password{/t}
{t}New password{/t}
{t}New password repeated{/t}
{t}Password strength{/t} + + +
+ +
+ +
+ + +
+ +

+ +

+ +
+ +{/if} + +{$msg_dialogs} + +
{$errors}
+ + + + + + diff --git a/trunk/gosa-core/ihtml/themes/default/remove.tpl b/trunk/gosa-core/ihtml/themes/default/remove.tpl new file mode 100644 index 000000000..d413beab7 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/remove.tpl @@ -0,0 +1,17 @@ +
+  {t}Warning{/t} +
+

+ {$intro} + {t}This may be used by several groups. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+

+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ +   + +

+ diff --git a/trunk/gosa-core/ihtml/themes/default/setup_headers.tpl b/trunk/gosa-core/ihtml/themes/default/setup_headers.tpl new file mode 100644 index 000000000..95605b49c --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/setup_headers.tpl @@ -0,0 +1,25 @@ + + + + + {if isset($title)}{$title}{else}GOsa{/if} + + + + + + + + + + + + + + + + + + + + diff --git a/trunk/gosa-core/ihtml/themes/default/sizelimit.tpl b/trunk/gosa-core/ihtml/themes/default/sizelimit.tpl new file mode 100644 index 000000000..276404de8 --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/sizelimit.tpl @@ -0,0 +1,17 @@ +

{$warning}

+

+{t}The size limit option makes LDAP operations faster and saves the LDAP server from getting too much load. The easiest way to handle big databases without long timeouts would be to limit your search to smaller values and use filters to get the entries you are looking for.{/t} +

+

+{t}Please choose the way to react for this session{/t}: +

+ +{t}ignore this error and show all entries the LDAP server returns{/t}
+{t}ignore this error and show all entries that fit into the defined sizelimit and let me use filters instead{/t}
+{$limit_message} + +

+ +

+ + diff --git a/trunk/gosa-core/ihtml/themes/default/snapshotdialog.tpl b/trunk/gosa-core/ihtml/themes/default/snapshotdialog.tpl new file mode 100644 index 000000000..5ca89580f --- /dev/null +++ b/trunk/gosa-core/ihtml/themes/default/snapshotdialog.tpl @@ -0,0 +1,97 @@ +{if $RestoreMode} + +

{t}Restoring object snapshots{/t}

+

 

+
+{t}This procedure will restore a snapshot of the selected object. It will replace the existing object after pressing the restore button.{/t} +
+
+{t}Remember that DNS configuration and database entries could not be restored. For some objects it is only nescessary to open and save them again (goFon), but some entries must be recreated manually (glpi).{/t} +
+
+{t}Don't forget to check references to other objects, for example does the selected printer still exists ?{/t} +
+

 

+
+ + {if !$restore_deleted} + + + + {/if} + + + + + + +
+ {t}Object{/t}  + {$CurrentDN} +
+
+ {if $CountSnapShots==0} + {t}There is no snapshot available that could be restored{/t} + {else} + {t}Choose a snapshot and click the folder image, to restore the snapshot{/t} + {/if} +
+ {$SnapShotDivlist} +
+ +

 

+
+ +
+ +{else} + +

{t}Creating object snapshots{/t}

+

 

+
+{t}This procedure will create a snapshot of the selected object. It will be stored inside a special branch of your directory system and can be restored later on.{/t} +
+
+{t}Remember that database entries, DNS configurations and possibly created zones in server extensions will not be stored in the snapshot.{/t} +
+

 

+
+ + + + + + + + + + + + +
+ {t}Object{/t} + + {$CurrentDN} +
+ {t}Timestamp{/t} + + {$CurrentDate} +
+
+ {t}Reason for generating this snapshot{/t}
+ +
+ +

 

+
+ +   + +
+ + +{/if} diff --git a/trunk/gosa-core/include/accept-to-gettext.inc b/trunk/gosa-core/include/accept-to-gettext.inc new file mode 100644 index 000000000..5913a5098 --- /dev/null +++ b/trunk/gosa-core/include/accept-to-gettext.inc @@ -0,0 +1,212 @@ + + * + * 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 + * + * Usage: + * + * $locale=al2gt(, + * ); + * setlocale('LC_ALL', $locale); // or 'LC_MESSAGES', or whatever... + * + * Example: + * + * $langs=array('nl_BE.ISO-8859-15','nl_BE.UTF-8','en_US.UTF-8','en_GB.UTF-8'); + * $locale=al2gt($langs, 'text/html'); + * setlocale('LC_ALL', $locale); + * + * Note that this will send out header information (to be + * RFC2616-compliant), so it must be called before anything is sent to + * the user. + * + * Assumptions made: + * * Charset encodings are written the same way as the Accept-Charset + * HTTP header specifies them (RFC2616), except that they're parsed + * case-insensitive. + * * Country codes and language codes are the same in both gettext and + * the Accept-Language syntax (except for the case differences, which + * are dealt with easily). If not, some input may be ignored. + * * The provided gettext-strings are fully qualified; i.e., no "en_US"; + * always "en_US.ISO-8859-15" or "en_US.UTF-8", or whichever has been + * used. "en.ISO-8859-15" is OK, though. + * * The language is more important than the charset; i.e., if the + * following is given: + * + * Accept-Language: nl-be, nl;q=0.8, en-us;q=0.5, en;q=0.3 + * Accept-Charset: ISO-8859-15, utf-8;q=0.5 + * + * And the supplied parameter contains (amongst others) nl_BE.UTF-8 + * and nl.ISO-8859-15, then nl_BE.UTF-8 will be picked. + * + * $Log: accept-to-gettext.inc,v $ + * Revision 1.1.1.1 2003/11/19 19:31:15 wouter + * * moved to new CVS repo after death of the old + * * Fixed code to apply a default to both Accept-Charset and + * Accept-Language if none of those headers are supplied; patch from + * Dominic Chambers + * + * Revision 1.2 2003/08/14 10:23:59 wouter + * Removed little error in Content-Type header syntaxis. + * + */ + +/* not really important, this one; perhaps I could've put it inline with + * the rest. */ +function find_match($curlscore,$curcscore,$curgtlang,$langval,$charval, + $gtlang) +{ + if($curlscore < $langval) { + $curlscore=$langval; + $curcscore=$charval; + $curgtlang=$gtlang; + } else if ($curlscore == $langval) { + if($curcscore < $charval) { + $curcscore=$charval; + $curgtlang=$gtlang; + } + } + return array($curlscore, $curcscore, $curgtlang); +} + + +function al2gt($gettextlangs, $mime) +{ + /* Check if ACCEPT_LANGUAGE isset */ + if(!isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])){ + $_SERVER["HTTP_ACCEPT_LANGUAGE"] = ""; + } + if(!isset($_SERVER["HTTP_ACCEPT_CHARSET"])){ + $_SERVER["HTTP_ACCEPT_CHARSET"] = ""; + } + + /* default to "everything is acceptable", as RFC2616 specifies */ + $acceptLang=(($_SERVER["HTTP_ACCEPT_LANGUAGE"] == '') ? '*' : + $_SERVER["HTTP_ACCEPT_LANGUAGE"]); + $acceptChar=(($_SERVER["HTTP_ACCEPT_CHARSET"] == '') ? 'ISO-8859-1,utf-8;q=0.7,*;q=0.7' : + $_SERVER["HTTP_ACCEPT_CHARSET"]); + $alparts=@preg_split("/,/",$acceptLang); + $acparts=@preg_split("/,/",$acceptChar); + + /* Parse the contents of the Accept-Language header.*/ + foreach($alparts as $part) { + $part=trim($part); + if(preg_match("/;/", $part)) { + $lang=@preg_split("/;/",$part); + $score=@preg_split("/=/",$lang[1]); + $alscores[$lang[0]]=$score[1]; + } else { + $alscores[$part]=1; + } + } + + /* Do the same for the Accept-Charset header. */ + + /* RFC2616: ``If no "*" is present in an Accept-Charset field, then + * all character sets not explicitly mentioned get a quality value of + * 0, except for ISO-8859-1, which gets a quality value of 1 if not + * explicitly mentioned.'' + * + * Making it 2 for the time being, so that we + * can distinguish between "not specified" and "specified as 1" later + * on. */ + $acscores["ISO-8859-1"]=2; + + foreach($acparts as $part) { + $part=trim($part); + if(preg_match("/;/", $part)) { + $cs=@preg_split("/;/",$part); + $score=@preg_split("/=/",$cs[1]); + $acscores[strtoupper($cs[0])]=$score[1]; + } else { + $acscores[strtoupper($part)]=1; + } + } + if($acscores["ISO-8859-1"]==2) { + $acscores["ISO-8859-1"]=(isset($acscores["*"])?$acscores["*"]:1); + } + + /* + * Loop through the available languages/encodings, and pick the one + * with the highest score, excluding the ones with a charset the user + * did not include. + */ + $curlscore=0; + $curcscore=0; + $curgtlang=NULL; + foreach($gettextlangs as $gtlang) { + + $tmp1=preg_replace("/\_/","-",$gtlang); + $tmp2=@preg_split("/\./",$tmp1); + $allang=strtolower($tmp2[0]); + $gtcs=strtoupper($tmp2[1]); + $noct=@preg_split("/-/",$allang); + + if(!isset($alscores["*"])){ + $alscores["*"] = ""; + } + + if(!isset($alscores[$allang])){ + $alscores[$allang] = ""; + } + + if(!isset($alscores[$noct[0]])){ + $alscores[$noct[0]] = ""; + } + + if(!isset($acscores[$gtcs])){ + $acscores[$gtcs] = ""; + } + $testvals=array( + array($alscores[$allang], $acscores[$gtcs]), + array($alscores[$noct[0]], $acscores[$gtcs]), + array($alscores[$allang], $acscores["*"]), + array($alscores[$noct[0]], $acscores["*"]), + array($alscores["*"], $acscores[$gtcs]), + array($alscores["*"], $acscores["*"])); + + $found=FALSE; + foreach($testvals as $tval) { + if(!$found && isset($tval[0]) && isset($tval[1])) { + $arr=find_match($curlscore, $curcscore, $curgtlang, $tval[0], + $tval[1], $gtlang); + $curlscore=$arr[0]; + $curcscore=$arr[1]; + $curgtlang=$arr[2]; + $found=TRUE; + } + } + } + + /* We must re-parse the gettext-string now, since we may have found it + * through a "*" qualifier.*/ + + $gtparts=@preg_split("/\./",$curgtlang); + $tmp=strtolower($gtparts[0]); + $lang=preg_replace("/\_/", "-", $tmp); + if (!headers_sent()){ + header("Content-Language: $lang"); + if(isset($gtparts[1])){ + $charset=$gtparts[1]; + header("Content-Type: $mime; charset=$charset"); + } + } + return $curgtlang; +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_CopyPasteHandler.inc b/trunk/gosa-core/include/class_CopyPasteHandler.inc new file mode 100644 index 000000000..ee772bb30 --- /dev/null +++ b/trunk/gosa-core/include/class_CopyPasteHandler.inc @@ -0,0 +1,514 @@ +config = &$config; + $this->current= NULL; + $this->queue = array(); + $this->setvar_array = array(); + } + + + /* Entry entry to Copy & Paste queue. + * A Queue entry is represented as follows. + * array['file_name'] - Position on hdd + * array['method'] - copy/cut + * array['dn'] - the dn of the object added to the queue + * array['tab_class'] - Tab object that should be used to initialize the new object + * array['tab_object'] - Tab object name used to initialize correct object Type like USERTABS + */ + function add_to_queue($dn,$action,$tab_class,$tab_object,$tab_acl_category) + { + if(!class_available($tab_class)){ + trigger_error(sprintf("Specified class object '%s' does not exists.",$tab_class)); + return(FALSE); + } + + if(!isset($this->config->data['TABS'][$tab_object])){ + trigger_error(sprintf("Specified tab object '%s' does not exists.",$tab_object)); + return(FALSE); + } + + if(!in_array($action,array("cut","copy"))){ + trigger_error(sprintf("Specified action '%s' does not exists for copy & paste.",$action)); + return(FALSE); + } + + if($file_name = $this->save_dn_attributes_to_hdd($dn)){ + $tmp = array(); + $tmp['file_name'] = $file_name; + $tmp['method'] = $action; + $tmp['dn'] = $dn; + $tmp['tab_class'] = $tab_class; + $tmp['tab_object']= $tab_object; + $tmp['tab_acl_category']= $tab_acl_category; + $this->queue[] = $tmp; + $this->require_update = TRUE; + } + } + + + /* This removes all objects from queue. + * Remove hdd dumps of current entries too. + * Remove entries older than 24 hours. + */ + function cleanup_queue() + { + $this->current = FALSE; + $this->require_update = TRUE; + $this->setvar_array = array(); + + /* Remove all entries from queue */ + foreach($this->queue as $key => $entry){ + @rmdir($entry['file_name']); + unset($this->queue[$key]); + } + + /* Create patch if it doesn't exists */ + if(!is_dir(LDAP_DUMP_PATH)){ + @mkdir(LDAP_DUMP_PATH); + + /* Update folder permissions */ + if(!@chmod(LDAP_DUMP_PATH,0700)){ + $msg= sprintf(_("Copy and paste failed!")."

"._("Error").": "._("Cannot set permission for '%s'")."" ,LDAP_DUMP_PATH); + msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); + new log("copy","all/all","copy & paste, event queue.",array(), $msg); + return(FALSE); + } + } + + /* check if we are able to create a new file the given directory */ + if(!is_writeable(LDAP_DUMP_PATH)){ + $msg= _("Copy and paste failed!")."

"._("Error").": ".msgPool::cannotWriteFile(LDAP_DUMP_PATH).""; + msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); + new log("copy","all/all","copy & paste, event queue.",array(), $msg); + return(FALSE); + } + + /* Remove entries from hdd that are older than24 hours */ + $fp = opendir(LDAP_DUMP_PATH); + while($file = readdir($fp)){ + if(is_file(LDAP_DUMP_PATH."/".$file) && !preg_match("/^\./",$file)){ + $file_time = fileatime(LDAP_DUMP_PATH."/".$file); + if($file_time < (time() - (24* 60 *60))){ + @unlink(LDAP_DUMP_PATH."/".$file); + } + } + } + } + + + /* To increase performance we save the ldap dump on hdd + * This function automatically creates the dumps and returns + * the name of the dumpfile we created + */ + function save_dn_attributes_to_hdd($dn) + { + $filename = "Should not be returned"; + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $res = $ldap->cat($dn); + + /* Check if given dn is valid and ldap search was succesfull */ + if(!$res){ + $msg= sprintf(_("Copy and paste failed!")."

"._("Error").": "._("'%s' is no vaild LDAP object"), LDAP::fix($dn)); + msg_dialog::display(_("Internal error"), $msg, ERROR_DIALOG); + new log("copy","all/all",$dn,array(), $msg); + return(FALSE); + } + + /* Create data to save given ldap dump on the hdd */ + $filename = "gosa_copy-paste_dump_".preg_replace("/[^0-9]/","",microtime()); + $path = LDAP_DUMP_PATH; + + /* Create patch if it doesn't exists */ + if(!is_dir($path)){ + @mkdir($path); + } + + /* check if we are able to create a new file the given directory */ + if(!is_writeable($path)){ + $msg= sprintf(_("Copy and paste failed!")."

"._("Error").": "._("No write permission in '%s'"),LDAP_DUMP_PATH); + msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); + new log("copy","all/all",$dn,array(), $msg); + return(FALSE); + } + + /* Create file handle */ + $fp = @fopen($path."/".$filename,"w+"); + if(!$fp){ + $msg= _("Copy and paste failed!")."

"._("Error").": ".msgPool::cannotWriteFile("$path/$filename").""; + msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); + new log("copy","all/all",$dn,array(), $msg); + return(FALSE); + } + + /* Update folder permissions */ + if(!@chmod($path."/".$filename,0700)){ + $msg= sprintf(_("Copy and paste failed!")."

"._("Error").": "._("Cannot set permission for '%s'"),LDAP_DUMP_PATH); + msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); + new log("copy","all/all","copy & paste, event queue.",array(), $msg); + return(FALSE); + } + + $data = serialize($ldap->fetch()); + fwrite($fp,$data,strlen($data)); + fclose($fp); + + /* Only the webserver should be able to read those files */ + @chmod($path."/".$filename,0600); + return($path."/".$filename); + } + + + /* Check if there are still entries the object queue */ + function entries_queued() + { + return( count($this->queue) >=1 || $this->current != FALSE); + } + + + /* Paste one entry from queue */ + function load_entry_from_queue($entry) + { + if(!isset($entry['tab_class'])){ + return(array()); + } + + + $tab_c = $entry['tab_class']; + $tab_o = $entry['tab_object']; + $tab_a = $entry['tab_acl_category']; + + if($entry['method'] == "copy"){ + $entry['object'] = new $tab_c($this->config,$this->config->data['TABS'][$tab_o],"new",$tab_a); + }else{ + $entry['object'] = new $tab_c($this->config,$this->config->data['TABS'][$tab_o],$entry['dn'],$tab_a); + } + + $entry['source_data'] = $this->load_attributes_from_hdd($entry['file_name']); + + if($entry['method'] == "copy"){ + + /* Prepare each plugin of this tab object to be posted */ + foreach($entry['object']->by_object as $name => $obj){ + + /* Prepare every single class, to be copied */ + $entry['object']->by_object[$name]->PrepareForCopyPaste($entry['source_data']); + + /* handle some special vars */ + foreach(array("is_account") as $attr){ + if(isset($entry['source_data'][$attr])){ + $entry['object']->by_object[$name]->$attr = $entry['source_data'][$attr]; + } + } + } + } + return($entry); + } + + + /* Load dumped ldap entry specified by $filename and + * return data an unserailized data array + */ + function load_attributes_from_hdd($filename) + { + $fp = @fopen($filename,"r"); + if(is_file($filename) && is_readable($filename) && $fp){ + $data = ""; + while($str = fgets($fp,512)){ + $data .= $str; + } + return(unserialize($data)); + }else{ + $msg= sprintf(_("Copy and paste failed!")."

"._("Error").": ".msgPool::cannotReadFile($filename).""); + msg_dialog::display(_("Internal error"), $msg, ERROR_DIALOG); + new log("copy","all/all",$dn,array(), $msg); + return(FALSE); + } + } + + + /* Displays a dialog which allows the user to fix all dependencies of this object. + Create unique names, ids, or what ever */ + function execute() + { + $ui = get_userinfo(); + $type = $this->current['method']; + + /* Check which entries can be pasted directly. + * Create a list of all entries that can be pasted directly. + */ + if($this->require_update){ + $this->clean_objects = array(); + $this->objects_to_fix = array(); + $this->disallowed_objects = array(); + + /* Put each queued object in one of the above arrays + */ + foreach($this->queue as $key => $entry){ + + /* Update entries on demand + */ + if(!isset($entry['object'])){ + $entry = $this->load_entry_from_queue($entry); + $this->queue[$key] = $entry; + } + $entry= $this->_update_vars($entry); + $msgs = $entry['object']->check(); + + /* To copy an object we require full read access to the object category + */ + $copy_acl = preg_match("/r/",$ui->has_complete_category_acls($entry['dn'], $entry['tab_acl_category'])); + + /* In order to copy an object we require read an delete acls + */ + $cut_acl = preg_match("/d/",$ui->has_complete_category_acls($entry['dn'], $entry['tab_acl_category'])); + $cut_acl &= preg_match("/r/",$ui->has_complete_category_acls($entry['dn'], $entry['tab_acl_category'])); + + /* Check permissions */ + if($entry['method'] == "copy" && !$copy_acl){ + $this->disallowed_objects[$key] = $entry; + }elseif($entry['method'] == "cut" && !$cut_acl){ + $this->disallowed_objects[$key] = $entry; + }elseif(!count($msgs)){ + $this->clean_objects[$key] = $entry; + }else{ + $this->objects_to_fix[$key] = $entry; + } + } + if(count($this->disallowed_objects)){ + $dns = array(); + foreach($this->disallowed_objects as $entry){ + $dns[] = $entry['dn']; + } +# msg_dialog::display(_("Permission"),msgPool::permCreate($dns),INFO_DIALOG); + } + $this->require_update = FALSE; + } + + /* Save objects that can be pasted directly + */ + if(isset($_POST['PerformCopyPaste']) && count($this->clean_objects)){ + $this->save_object(); + $this->current = FALSE; + foreach($this->clean_objects as $key => $entry){ + + /* Remove from queue -> avoid saving twice */ + unset($this->queue[$key]); + unset($this->clean_objects[$key]); + + /* Load next queue entry */ + $this->current = $entry; + $this->lastdn = $this->current['object']->dn; + $this->current= $this->_update_vars($this->current); + $this->current['object']->save(); + $this->current = FALSE; + } + } + + /* Save edited entry and force loading new one + */ + if(isset($_POST['PerformCopyPaste']) && $this->current){ + $this->current['object']->saveCopyDialog(); + $msgs = $this->check(); + + /* Load next queue entry */ + if(!count($msgs)){ + $this->lastdn = $this->current['object']->dn; + $this->current['object']->save(); + $this->current = FALSE; + }else{ + foreach( $msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + } + } + + /* Display a list of all pastable entries + */ + if(count($this->clean_objects)){ + + $dns = array(); + foreach($this->clean_objects as $object){ + $dns[] = $object['dn']; + } + + $smarty = get_smarty(); + $smarty->assign("type","directly"); + $smarty->assign("Complete",false); + $smarty->assign("AttributesToFix"," "); + $smarty->assign("SubDialog",""); + $smarty->assign("message" , sprintf(_("These objects will be pasted: %s"), "
".msgPool::buildList($dns))); + return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE))); + } + + /* Display a list of all pastable entries + */ + if($this->current || count($this->objects_to_fix)){ + $this->save_object(); + if(!$this->current){ + $key = key($this->objects_to_fix); + if(isset($this->objects_to_fix[$key])){ + $this->current = $this->objects_to_fix[$key]; + $this->current= $this->_update_vars($this->current); + unset($this->objects_to_fix[$key]); + unset($this->queue[$key]); + } + } + if($this->current){ + $smarty = get_smarty(); + $smarty->assign("type","modified"); + $smarty->assign("Complete",false); + $smarty->assign("AttributesToFix",$this->generateAttributesToFix()); + $smarty->assign("SubDialog",$this->current['object']->SubDialog); + $smarty->assign("objectDN",$this->current['source_data']['dn']); + $smarty->assign("message", sprintf(_("This object will be pasted: %s"), "

".$this->current['source_data']['dn'])); + return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE))); + } + } + return(""); + } + + + /* Return the dn of the last edited entry */ + function last_entry() + { + return($this->lastdn); + } + + + /* Save new values posted by copy & paste dialog */ + function save_object() + { + if(isset($_POST['abort_current_cut-copy_operation'])){ + $this->current = FALSE; + } + + if(isset($_POST['abort_all_cut-copy_operations'])){ + $this->cleanup_queue(); + $this->current = FALSE; + } + } + + + /* Create dialog which asks unique attributes/values ... + * call tabs -> getCopyDialog() + * which calls tab -> getCopyDialog() */ + function generateAttributesToFix() + { + if($this->current){ + return($this->current['object']->getCopyDialog()); + } + } + + + /* Set a single attribute to specified value + * example : ("base", $newBase ); */ + function SetVar($name,$value) + { + $this->setvar_array[$name]=$value; + } + + + /* Update current object attributes, collected via SetVar */ + function _update_vars($entry) + { + /* Update all attributes specified with SetVar */ + foreach($this->setvar_array as $name => $value){ + if(isset($entry['object']->$name)){ + $entry['object']->$name = $value; + } + } + + /* Walk through tabs */ + foreach($entry['object']->by_object as $key => $obj){ + + /* Update all attributes specified with SetVar */ + foreach($this->setvar_array as $name => $value){ + + /* Do not update parent for plugins, this may break things */ + if($name == "parent") continue; + + if(isset($entry['object']->by_object[$key]->$name)){ + $entry['object']->by_object[$key]->$name = $value; + } + } + } + return($entry); + } + + + /* Returns errors from including tabs. */ + function check() + { + $ret = array(); + foreach($this->current['object']->by_object as $obj){ + if($obj->is_account || $obj->ignore_account){ + $ret = array_merge($ret , $obj->check()); + } + } + return($ret); + } + + + /* returns the paste icon for headpages */ + function generatePasteIcon() + { + $Copy_Paste= "  "; + if($this->entries_queued()){ + $img= "images/lists/paste.png"; + $Copy_Paste.= " "; + }else{ + $Copy_Paste.= "\""._("Cannot "; + } + return ($Copy_Paste); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_MultiSelectWindow.inc b/trunk/gosa-core/include/class_MultiSelectWindow.inc new file mode 100644 index 000000000..8c75dd229 --- /dev/null +++ b/trunk/gosa-core/include/class_MultiSelectWindow.inc @@ -0,0 +1,804 @@ +get_module_departments($this->module); + if(!in_array($this->selectedBase, $deps)){ + $this->selectedBase = array_shift($deps); + } + $this->array_Elements = array(); + } + + function HideFilterPart($bool = true) + { + $this->HideFilterPart = $bool; + } + + function SetHeight($height) + { + $this->DivHeight=$height; + } + + /* Adds a regex input field to the current dialog */ + function AddRegex($name,$string,$value,$conn,$image="images/lists/search.png") + { + $arr = array(); + + /* Check if the given input field name was already used + for this type of dialog */ + $MultiDialogFilters = session::get('MultiDialogFilters'); + if(isset($MultiDialogFilters[$this->filterName][$name])){ + $arr['value'] = $MultiDialogFilters[$this->filterName][$name]; + $this->$name = $arr['value']; + }else{ + $arr['value'] = $value; + } + + $arr['name'] = $name; + $arr['string'] = $string; + $arr['image'] = $image; + $arr['connAlpha'] = $conn; // Connect with alphabet select + $this->array_Regexes[] = $arr; + } + + + function SetDropDownHeaderMenu($str) + { + $this->string_ListDropDown = $str; + } + + function GetDropDownHeaderMenu() + { + if(!empty($this->string_ListDropDown)){ + $mid = new LayersMenu(6, 7, 2, 1); + $mid->setImgwww("./images/layer_menu/"); + $mid->setIcondir("./images/layer_menu/"); + $mid->setDirroot("../include/utils/layer-menu/"); + $mid->setHorizontalMenuTpl("../ihtml/".get_template_path("",FALSE).'GOsa_MultiSelectHeader.ihtml'); + $mid->setSubMenuTpl("../ihtml/".get_template_path("",FALSE).'GOsa_MultiSelectHeaderSubEntry.ihtml'); + $mid->setMenuStructureString($this->string_ListDropDown); + $mid->parseStructureForMenu('menu'); + $mid->newHorizontalMenu('menu'); + $s = $mid->getHeader(); + $s.= $mid->getMenu('menu'); + $s.= $mid->getFooter('menu'); + return($s); + }else{ + return(""); + } + } + + + /* Contrucktion */ + function MultiSelectWindow(&$config, $filterName, $module) + { + $this->config = &$config; + $this->module = $module; + $this->SaveButtonString = _("Save"); + $this->CloseButtonString = _("Close"); + $this->filterName = $filterName; + $this->ui = get_userinfo(); + $this->post_id = preg_replace("/[^0-9]/","",microtime(TRUE)); + + /* Check default values for SaveAdditionalVars */ + $MultiDialogFilters = session::get('MultiDialogFilters'); + foreach($this->SaveAdditionalVars as $name){ + if(isset($MultiDialogFilters[$this->filterName][$name])){ + $this->$name = $MultiDialogFilters[$this->filterName][$name]; + } + } + + } + + /* Enables the headpage mode, which changes the list look */ + function SetHeadpageMode() + { + $this->is_headpage = true; + } + + /* Sets the List internal name (not displayed anywhere) + it is used to identify every single list + */ + function SetTitle($str) + { + $this->string_Title = $str; + } + + /* Set the list header string */ + function SetListHeader($str) + { + $this->string_ListHeader = $str; + } + + /* This sets the list description which is the first gray bar on top of the list */ + function SetSummary($str) + { + $this->string_Summary = $str; + } + + /* If the save button is enabled, you can change its caption with this function */ + function SetSaveButtonString($str) + { + $this->SaveButtonString = $str; + } + + /* If the close button is enabled, you can change its caption with this function */ + function SetCloseButtonString($str) + { + $this->CloseButtonString = $str; + } + + /* With this function you can change the text of the information box */ + function SetInformation($str) + { + $this->string_Information = $str; + } + + /* Display the alphabet selection box*/ + function EnableAplhabet($bool) + { + $this->bool_DisplayAlpahabet = $bool; + } + + /* Add additional header col */ + function AddHeader($arr) + { + $this->array_Header[] = $arr; + } + + /* add additional List element */ + function AddElement($arr) + { + $this->array_Elements[] = $arr; + } + + + /* Return default header part. With back, home and root icons and department selection */ + function get_default_header($seperator= TRUE) + { + $enable_back = TRUE; + $enable_root = TRUE; + $enable_home = TRUE; + + $ui = get_userinfo(); + + /* Check if selectedBase = first available base */ + $deps = $ui->get_module_departments($this->module); + + if(!count($deps) || $deps[0] == $this->selectedBase){ + $enable_back = FALSE; + $enable_root = FALSE; + } + + $listhead =""; + + /* Check if we are in users home department */ + if(!count($deps) ||$this->selectedBase == get_base_from_people($ui->dn)){ + $enable_home = FALSE; + } + + /* Draw root button */ + if($enable_root){ + $listhead .= "  "; + }else{ + $listhead .= " "._("Root")." "; + } + + /* Draw back button */ + if($enable_back){ + $listhead .= "  "; + }else{ + $listhead .= " "._("Up")." "; + } + + /* Draw home button */ + if($enable_home){ + $listhead .= "  "; + }else{ + $listhead .= " "._("Home")." "; + } + + /* And at least draw reload button, this button is enabled everytime */ + $listhead .= "  "; + if ($seperator){ + $listhead.= " - "; + } + return ($listhead); + } + + /* Add a checkbox to the filter element, + the name specifies an existing class var to store the 'selection' */ + function AddCheckBox($name,$value="Unset",$string="Unset",$default=false) + { + $arr = array(); + + if($name == SEPERATOR){ + $arr['name'] = SEPERATOR; + }else{ + /* Check if there was already a variable + for this dialog which we should use instead of the default*/ + $MultiDialogFilters = session::get('MultiDialogFilters'); + if(isset($MultiDialogFilters[$this->filterName][$name])){ + $arr['default'] = $MultiDialogFilters[$this->filterName][$name]; + $this->$name = $arr['default']; + }else{ + $arr['default'] = $default; + $this->$name = $default; + } + $arr['name'] = $name; + $arr['string'] = $string; + $arr['value'] = $value; + $arr['enabled'] = true; + + } + $this->array_Checkboxes[] = $arr; + } + + + /* Hides or unhides the checkbox with the given name */ + function DisableCheckBox($name,$HideShow = false) + { + foreach($this->array_Checkboxes as $key => $chkbox){ + if($chkbox['name'] == $name){ + $this->array_Checkboxes[$key]['enabled'] = $HideShow; + } + } + } + + + /* Returns true if the close button was pressed */ + function isClosed() + { + return($this->is_closed); + } + + + function SetListFooter($str){ + $this->footer = $str; + } + + + /* Enable the close button */ + function EnableCloseButton($bool) + { + $this->bool_DisplayCloseButton = $bool; + } + + /* Enable the save button on the bottom of the list*/ + function EnableSaveButton ($bool) + { + $this->bool_DisplaySaveButton = $bool; + } + + /* Add a list specific filter object to position + 1 on top of Information + 2 Between Information && Filter + 3 Below the Filter Part */ + function AddUserBoxToFilter($position) + { + return(""); + } + + function EnableJSLeaveMsg($ignore = TRUE) + { + $this->IgnoreAccount = !$ignore; + } + + /* Draw the list with all list elements and filters */ + function Draw() + { + + /* Check for exeeded sizelimit */ + if (($message= check_sizelimit()) != ""){ + return($message); + } + + $smarty = get_smarty(); + $smarty->assign("UserBox1",$this->AddUserBoxToFilter(1)); + $smarty->assign("UserBox2",$this->AddUserBoxToFilter(2)); + $smarty->assign("UserBox3",$this->AddUserBoxToFilter(3)); + + $divlist = new divlist($this->string_Title); + $divlist->SetSummary($this->string_Summary); + $divlist->SetEntriesPerPage(0); // 0 for scrollable list + + /* Display list footer with summary of all listed entries */ + if ($this->config->get_cfg_value("listSummary") == "true"){ + $divlist->SetFooter($this->get_List_Bottom_Info()); + } + + if($this->DivHeight != ""){ + $divlist->SetHeight($this->DivHeight); + } + + /* set Header informations + */ + $header = array(); + foreach($this->array_Header as $head){ + $header[] = $head; + } + $divlist->SetHeader($header); + + /* set Entries + */ + $elements = array(); + foreach($this->array_Elements as $element){ + $divlist->AddEntry($element); + } + + /* Create checkboxes fields + */ + $boxes = ""; + $boxClick = " onClick='document.mainform.submit();' "; + foreach($this->array_Checkboxes as $box){ + + if($box['name'] == SEPERATOR){ + $boxes .= "'; + } + } + + /* Build final entry */ + if (isset($attrs['description'])){ + $description= $attrs['description'][0]; + } else { + $description= "-"; + } + $content= $this->createContentString($attrs['objectClass']); + if ($addon == ""){ + $img= "images/lists/expand.png"; + } else { + $img= "images/lists/sort-down.png"; + } + $this->objectlist.= ''.$addon; + + $id++; + } + + } + + function getCacheObject($dn) + { + if (!isset($this->objectCache[$dn])){ + $ldap= $this->config->get_ldap_link(); + if (preg_match('/,/', $dn)){ + $ldap->cat($dn, array("cn", "objectClass", "description","ou")); + } else { + $ldap->search("(uid=$dn)", array("cn", "objectClass", "description","ou")); + } + if ($ldap->count()){ + $attrs= $ldap->fetch(); + + if(isset($attrs['ou']) && !isset($attrs['cn'])){ + $attrs['cn'] = $attrs['ou']; + } + + if (isset($attrs['description'])){ + $description= $attrs['description'][0]; + } else { + $description= "-"; + } + $this->objectCache[$dn]= array( 'name' => $attrs['cn'][0], + 'description' => "$description", + 'type' => $this->createContentString($attrs['objectClass'])); + } else { + return NULL; + } + } + return ($this->objectCache[$dn]); + } + + function createContentString($classes) + { + $result= ""; + if(!is_null($classes)) { + foreach ($classes as $class){ + if (isset($this->obtypes[$class])){ + $result.= "\"\" ".$this->obtypes[$class]['text']." "; + } + } + } + return (preg_replace('/ $/', '', $result)); + } + +} + +?> diff --git a/trunk/gosa-core/plugins/generic/references/contents.tpl b/trunk/gosa-core/plugins/generic/references/contents.tpl new file mode 100644 index 000000000..e953da19f --- /dev/null +++ b/trunk/gosa-core/plugins/generic/references/contents.tpl @@ -0,0 +1,19 @@ +{if $objectList ne ""} +
"; + continue; + } + + /* Skip disabled boxes */ + if(!$box['enabled']) continue; + + /* Check if box is checked */ + if($box['default'] == true){ + $boxes .=" ".$box['string']."
"; + }else{ + $boxes .=" ".$box['string']."
"; + } + } + $smarty->assign("CheckBoxes", $boxes); + + /* Assign regex fields + */ + $regexes = ""; + foreach($this->array_Regexes as $regex){ + $regexes.=" + + + + +
+ + + +
"; + } + $smarty->assign("regexes" , $regexes ); + + /* Hide Filter Part if Requested or empty */ + if((empty($boxes)) && (empty($regexes)) || ($this->HideFilterPart)){ + $smarty->assign("Skip_Filter_Part", true); + }else{ + $smarty->assign("Skip_Filter_Part", false); + } + + /* Assign alphabet and display it + */ + $smarty->assign("Display_alphabet", $this->bool_DisplayAlpahabet); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("Header" , $this->string_ListHeader); + $smarty->assign("HeaderDropDown", $this->GetDropDownHeaderMenu()); + $smarty->assign("Summary" , $this->string_Summary); + $smarty->assign("Title" , $this->string_Title); + $smarty->assign("Information" , $this->string_Information); + $smarty->assign("IgnoreAccount" , $this->IgnoreAccount); + $smarty->assign("POST_ID", $this->post_id); + + /* Check for exeeded sizelimit */ + $smarty->assign("hint" , print_sizelimit_warning()); + $smarty->assign("DivList" , $divlist->DrawList()."\n\n\n\n\n".$this->footer."\n\n\n\n\n"); + + if($this->is_headpage){ + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info.png')); + $smarty->assign("launchimage", get_template_path('images/launch.png')); + $smarty->assign("apply", apply_filter()); + }else{ + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info_small.png')); + $smarty->assign("launchimage", get_template_path('images/rocket.png')); + $smarty->assign("apply", apply_filter()); + } + + /* Button handling */ + $smarty->assign("SaveButtonString" ,$this->SaveButtonString); + $smarty->assign("CloseButtonString",$this->CloseButtonString); + + $smarty->assign("Display_Close", $this->bool_DisplayCloseButton); + $smarty->assign("Display_Save" , $this->bool_DisplaySaveButton); + + $smarty->assign("filterName" , $this->filterName); + $smarty->assign("is_headpage" , $this->is_headpage); + + $display = $smarty->fetch(get_template_path("MultiSelectWindow.tpl")); + return($display); + } + + /* Set the close var, which simulates the close button is pressed */ + function Close() + { + $this->is_closed = true; + } + + function Save() + { + $this->is_saved = true; + } + + /* Store all checkboxes/ regexes ... + Store data also into a session var, to keep the checkboxes check after reload */ + function save_object() + { + + /* Ensure that we do not handle posts for other dialogs + */ + if((isset($_POST['POST_ID']) && $_POST['POST_ID'] != $this->post_id) || + (isset($_GET['post_id']) && $_GET['post_id'] != $this->post_id)){ + return; + } + + /* Get up to date config */ + if(isset($this->parent->config)){ + $this->config = $this->parent->config; + } + + /* Update current base */ + $s_action =""; + foreach($_POST as $key => $value){ + if(preg_match("/^dep_back.*/i",$key)){ + $s_action="back"; + }elseif(preg_match("/^dep_root.*/",$key)){ + $s_action="root"; + }elseif(preg_match("/^dep_home.*/i",$key)){ + $s_action="home"; + } + } + + /* Save base selection from headpage selectbox*/ + if(isset($_POST['CurrentMainBase'])){ + $this->selectedBase = $_POST['CurrentMainBase']; + } + + /* Homebutton is posted */ + if($s_action=="home"){ + $ui= get_userinfo(); + $base = get_base_from_people($ui->dn); + $this->selectedBase= $base; + } + + /* Open selected department + this is posted by the parent class MultiSelectWindow */ + if(isset($_GET['act'])&& ($_GET['act'] == "dep_open")){ + $s_entry = $_GET['dep_id']; + if (!isset($this->departments[$s_entry])){ + + msg_dialog::display(_("LDAP error"), sprintf(_("Inconsistent DN encoding detected: '%s'"), LDAP::fix($s_entry)), ERROR_DIALOG); + } else { + $this->selectedBase = $this->departments[$s_entry]['dn']; + } + } + + /* back to the roots ^^ */ + if($s_action=="root"){ + $this->selectedBase=($this->config->current['BASE']); + $dep_id = $this->ui->get_module_departments($this->module); + if(isset($dep_id[key($dep_id)])){ + $this->selectedBase = $dep_id[key($dep_id)]; + } + } + + /* If Back-button is pressed, move back one step in DN */ + if($s_action=="back"){ + + + /* Get parent deprtment and check if we are allowed to step in it */ + $base_back= preg_replace("/^[^,]+,/", "", $this->selectedBase); + $dep_id = $this->ui->get_module_departments($this->module); + if(in_array_ics($base_back,$dep_id)){ + if(in_array($base_back,$this->config->departments)){ + $this->selectedBase = $base_back; + } + } + } + + if(isset($_POST['MultiSelectWindow'.$this->filterName])){ + + /* Save some additional vars */ + $MultiDialogFilters = session::get('MultiDialogFilters'); + foreach($this->SaveAdditionalVars as $name){ + if(isset($_POST[$name])){ + if(isset($this->$name)){ + $this->$name = $_POST[$name]; + $MultiDialogFilters[$this->filterName][$name] = $_POST[$name]; + } + } + } + session::set('MultiDialogFilters',$MultiDialogFilters); + + /* Check posts from checkboxes + */ + foreach($this->array_Checkboxes as $key => $box){ + if(isset($_POST[$box['name']])){ + $this->array_Checkboxes[$key]['default'] = true; + $this->$box['name'] = true; + }else{ + $this->array_Checkboxes[$key]['default'] = false; + $this->$box['name'] = false; + } + + /* Save settings in out session */ + $MultiDialogFilters = session::get('MultiDialogFilters'); + $MultiDialogFilters[$this->filterName][$box['name']] = $this->$box['name']; + session::set('MultiDialogFilters',$MultiDialogFilters); + } + + /* Check regex posts */ + foreach($this->array_Regexes as $key => $box){ + $this->array_Regexes[$key]['value'] = $_POST[$box['name']]; + $this->$box['name'] = $_POST[$box['name']]; + $MultiDialogFilters = session::get('MultiDialogFilters'); + $MultiDialogFilters[$this->filterName][$box['name']] = $this->$box['name']; + session::set('MultiDialogFilters',$MultiDialogFilters); + } + + /* call close/save if buttons are pressed */ + if(isset($_POST['CloseMultiSelectWindow'])){ + $this->Close(); + } + + if(isset($_POST['SaveMultiSelectWindow'])){ + $this->Save(); + } + } + + /* check for alphabet selection + Check which regexes are connected to the alphabet + */ + if(isset($_GET['search'])){ + foreach($this->array_Regexes as $key => $box){ + /* check if this regex is connected to the alphabet selection */ + if(($box['connAlpha'])&&(isset($_GET['search']))){ + $val = $_GET['search']."*"; + $val = preg_replace("/\*\**/","*",$val); + $this->array_Regexes[$key]['value'] = $val; + $this->$box['name'] = $val; + $MultiDialogFilters = session::get('MultiDialogFilters'); + $MultiDialogFilters[$this->filterName][$box['name']] = $val; + session::set('MultiDialogFilters',$MultiDialogFilters); + } + } + } + + /* Save currenlty selected base in session */ + session::global_set("CurrentMainBase",$this->selectedBase); + } + + + /* this function adds the sub-departments of the current tree to the list */ + function AddDepartments($base = false,$numtabs = 3,$empty_tabs_in_front = 0) + { + $this->DepartmentsAdded = true; + $this->Added_Departments = array(); + $this->departments = array(); + + if(isset($this->Regex)){ + $this->base_selection_regex = $this->Regex; + } + + $linkopen = "%s"; + $types = departmentManagement::get_support_departments(); + $ui = get_userinfo(); + $module_deps = $ui->get_module_departments($this->module); + $found_deps = array(); + + /* check for a valid base */ + if(!$base){ + $base = $this->selectedBase; + } + + /* Create ldap obj and switch into base*/ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($base); + + /* Get all departments within this subtree */ + $s_filter = ""; + $s_attrs = array("description","objectClass"); + $s_acls = $this->module; + foreach($types as $name => $data){ + $s_filter.= "(&(objectClass=gosaDepartment)(objectClass=".$data['OC'].")(".$data['ATTR']."=".$this->base_selection_regex."))"; + $s_attrs[]= $data['ATTR']; + } + + $tmp = get_list("(|".$s_filter.")",$s_acls,$this->selectedBase,$s_attrs,GL_NONE | GL_SIZELIMIT); + foreach($tmp as $attrs){ + foreach($types as $name => $data){ + if(in_array($data['OC'],$attrs['objectClass']) && isset($attrs[$data['ATTR']][0])){ + $attrs['NAME'] = $attrs[$data['ATTR']][0]; + $attrs['TYPE'] = $data; + $name = $attrs['NAME']." ".$attrs['dn']; + $departments[$name] = $attrs; + $found_deps[$name] = $attrs['dn']; + break; + } + } + } + + /* Detect allowed departments + */ + $deps = array_intersect($found_deps,$module_deps); + uksort($deps, 'strnatcasecmp'); + $key = 0; + foreach($deps as $name => $dn){ + $key ++; + $val = $departments[$name]; + $this->departments[$key] = $val; + $img = ""; + + /* Add spacer cols to divlist + */ + $row = array(); + if($empty_tabs_in_front){ + for($i = 0; $i < $empty_tabs_in_front ; $i ++){ + $row[] = array("string"=>" ", "attach" => "style='text-align:center;width:20px;'"); + } + } + + /* Create entry name + */ + $name = $val['NAME']; + if(isset($val['description'])){ + $name .= " - [".$val["description"][0]."]"; + } + + /* Add departments + */ + $row[]=array("string"=> $img,"attach"=>"style='text-align:center;width:20px;'"); + $row[]=array("string"=>sprintf($linkopen,$key,$name), "attach" => "style=''"); + + /* Add spacer tabs + */ + if($numtabs > 2){ + for($i = 2 ; $i < $numtabs;$i++){ + if(isset( $this->array_Header[$i + $empty_tabs_in_front]['attach'])){ + $row[] = array("string"=>" ","attach" => $this->array_Header[$i + $empty_tabs_in_front]['attach']); + }else{ + $row[] = array("string"=>" "); + } + } + } + $this->AddElement($row); + $this->Added_Departments[] = $row; + } + } + + + function create_department_list($modules) + { + $departments = array(); + $ui= get_userinfo(); + $first = ""; + $found = FALSE; + $options =""; + + $ids = $this->config->idepartments; + $d = $ui->get_module_departments($modules); + $k_ids = array_keys($ids); + $deps = array_intersect($d,$k_ids); + foreach($k_ids as $department){ + $departments[$department] = $ids[$department]; + } + + foreach($departments as $value => $name){ + + /* Keep first base dn in mind, we could need this + * info if no valid base was found + */ + if(empty($first)) { + $first = $value; + } + + if ($this->selectedBase == $value){ + $found = TRUE; + $options.= ""; + } else { + $options.= ""; + } + } + + /* The currently used base is not visible with your acl setup. + * Set base to first useable base. + */ + if(!$found){ + $this->selectedBase = $first; + } + + return($options); + } + + function set_List_Bottom_Info($str) + { + $this->List_Bottom_Info = $str; + } + + function get_List_Bottom_Info() + { + return($this->List_Bottom_Info); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_SnapShotDialog.inc b/trunk/gosa-core/include/class_SnapShotDialog.inc new file mode 100644 index 000000000..b13f1cdbe --- /dev/null +++ b/trunk/gosa-core/include/class_SnapShotDialog.inc @@ -0,0 +1,198 @@ +parent = &$parent; + $this->ui = get_userinfo(); + } + + + /* Show deleted snapshots from these bases */ + function set_snapshot_bases($bases) + { + $this->snap_shot_bases = $bases; + } + + + /* Display snapshot dialog */ + function execute() + { + plugin::execute(); + $smarty = get_smarty(); + + if(!isset($this->parent->acl_module) || !count($this->parent->acl_module)){ + trigger_error("Could not detect acl_module in parent object (".get_class($this->parent).")."); + return(""); + } + + $ui = get_userinfo(); + + $once = true; + foreach($_POST as $name => $value){ + if((preg_match("/^RemoveSnapShot_/",$name)) && ($once)){ + $once = false; + + $entry = preg_replace("/^RemoveSnapShot_/","",$name); + $entry = base64_decode(preg_replace("/_[xy]$/","",$entry)); + + $found = false; + foreach($this->last_list as $t_stamp => $obj){ + if($obj['dn'] == $entry){ + $found = true; + break; + } + } + + if($found){ + $this->del_dn = $entry; + $smarty= get_smarty(); + $smarty->assign("intro", sprintf(_("You're about to delete the snapshot '%s'."), LDAP::fix($this->del_dn))); + return($smarty->fetch (get_template_path('remove.tpl'))); + } + } + } + + /* Remove snapshot */ + if(isset($_POST['delete_confirm']) && !empty($this->del_dn)){ + $this->remove_snapshot($this->del_dn); + $this->del_dn = ""; + } + + /* We must restore a snapshot */ + + if($this->display_restore_dialog){ + + /* Should we only display all snapshots of already deleted objects + or the snapshots for the given object dn */ + $res = array(); + $tmp = array(); + if($this->display_all_removed_objects){ + if(count($this->snap_shot_bases)){ + foreach($this->snap_shot_bases as $dn){ + $tmp = array_merge($tmp,$this->getAllDeletedSnapshots($dn,true)); + } + }else{ + $tmp = $this->getAllDeletedSnapshots($this->snap_shot_bases,true); + } + }else{ + $tmp = $this->Available_SnapsShots($this->dn,true); + } + + $DivListSnapShots = new divSelectBox("SnapShotRestore"); + $DivListSnapShots->SetHeight(180); + + $list_of_elements = array(); + + /* Walk through all entries and setup the display text */ + foreach($tmp as $key => $entry){ + + /* Check permissions */ + $TimeStamp = $entry['gosaSnapshotTimestamp'][0]; + $list_of_elements[$TimeStamp] = $entry; + } + + /* Sort generated list */ + krsort($list_of_elements); + + /* Add Elements to divlist */ + $this->last_list = $list_of_elements; + foreach($list_of_elements as $entry){ + + $actions= " "; + $actions.= " "; + + $time_stamp = date(_("Y-m-d, H:i:s"),preg_replace("/\-.*$/","",$entry['gosaSnapshotTimestamp'][0])); + $display_data = $entry['description'][0]; + + if($this->display_all_removed_objects){ + $display_data.= " - ".$entry['gosaSnapshotDN'][0]; + } + + $field0 = array("string"=> $time_stamp , "attach"=> "style='vertical-align:top;width:120px;'"); + $field1 = array("string"=> htmlentities (utf8_decode($display_data)), "attach"=> ""); + $field2 = array("string"=> str_replace("%KEY",base64_encode($entry['dn']),$actions) , + "attach"=> "style='border-right:0px;vertical-align:top;width:40px;text-align:right;'"); + $DivListSnapShots->AddEntry(array($field0,$field1,$field2)); + } + + $smarty->assign("SnapShotDivlist",$DivListSnapShots->DrawList()); + $smarty->assign("CountSnapShots",count($list_of_elements)); + } + + $smarty->assign("restore_deleted",$this->display_all_removed_objects); + $smarty->assign("RestoreMode",$this->display_restore_dialog); + $smarty->assign("CurrentDate",date(_("Y-m-d, H:i:s"))); + $smarty->assign("CurrentDN",$this->dn); + $smarty->assign("CurrentDescription",$this->CurrentDescription); + return($smarty->fetch(get_template_path("snapshotdialog.tpl"))); + } + + + function check() + { + $message = plugin::check(); + if(!$this->display_restore_dialog){ + if(empty($this->CurrentDescription)){ + $message[]= msgPool::invalid(_("Description")); + } + } + return($message); + } + + + function save_object() + { + plugin::save_object(); + foreach($this->attributes as $name){ + if(isset($_POST[$name])){ + $this->$name = stripslashes($_POST[$name]); + } + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_acl.inc b/trunk/gosa-core/include/class_acl.inc new file mode 100644 index 000000000..a1809b044 --- /dev/null +++ b/trunk/gosa-core/include/class_acl.inc @@ -0,0 +1,1283 @@ +gosaAclEntry= array(); + if (isset($this->attrs['gosaAclEntry'])){ + for ($i= 0; $i<$this->attrs['gosaAclEntry']['count']; $i++){ + $acl= $this->attrs['gosaAclEntry'][$i]; + $this->gosaAclEntry= array_merge($this->gosaAclEntry, acl::explodeACL($acl)); + } + } + ksort($this->gosaAclEntry); + + /* Save parent - we've to know more about it than other plugins... */ + $this->parent= &$parent; + + /* Container? */ + if (preg_match('/^(o|ou|c|l|dc)=/i', $dn)){ + $this->isContainer= TRUE; + } + + /* Users */ + $ui= get_userinfo(); + $tag= $ui->gosaUnitTag; + $ldap= $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + if ($tag == ""){ + $ldap->search('(objectClass=gosaAccount)', array('uid', 'cn')); + } else { + $ldap->search('(&(objectClass=gosaAccount)(gosaUnitTag='.$tag.'))', array('uid', 'cn')); + } + while ($attrs= $ldap->fetch()){ + $this->users['U:'.$attrs['dn']]= $attrs['cn'][0].' ['.$attrs['uid'][0].']'; + } + ksort($this->users); + + /* Groups */ + $ldap->cd($config->current['BASE']); +# if ($tag == ""){ + $ldap->search('(objectClass=posixGroup)', array('cn', 'description')); +# } else { +# $ldap->search('(&(objectClass=posixGroup)(gosaUnitTag='.$tag.'))', array('cn', 'description')); +# } + while ($attrs= $ldap->fetch()){ + $dsc= ""; + if (isset($attrs['description'][0])){ + $dsc= $attrs['description'][0]; + } + $this->groups['G:'.$attrs['dn']]= $attrs['cn'][0].' ['.$dsc.']'; + } + ksort($this->groups); + + /* Roles */ + $ldap->cd($config->current['BASE']); +# if ($tag == ""){ + $ldap->search('(objectClass=gosaRole)', array('cn', 'description','gosaAclTemplate','dn')); +# } else { +# $ldap->search('(&(objectClass=gosaRole)(gosaUnitTag='.$tag.'))', array('cn', 'description','gosaAclTemplate','dn')); +# } + while ($attrs= $ldap->fetch()){ + $dsc= ""; + if (isset($attrs['description'][0])){ + $dsc= $attrs['description'][0]; + } + + $role_id = $attrs['dn']; + + $this->roles[$role_id]['acls'] =array(); + for ($i= 0; $i < $attrs['gosaAclTemplate']['count']; $i++){ + $acl= $attrs['gosaAclTemplate'][$i]; + $this->roles[$role_id]['acls'] = array_merge($this->roles[$role_id]['acls'],acl::explodeACL($acl)); + } + $this->roles[$role_id]['description'] = $dsc; + $this->roles[$role_id]['cn'] = $attrs['cn'][0]; + } + + /* Objects */ + $tmp= session::global_get('plist'); + $plist= $tmp->info; + $cats = array(); + if (isset($this->parent) && $this->parent !== NULL){ + $oc= array(); + foreach ($this->parent->by_object as $key => $obj){ + $oc= array_merge($oc, $obj->objectclasses); + if(isset($obj->acl_category)){ + $tmp= str_replace("/","",$obj->acl_category); + $cats[$tmp] = $tmp; + } + } + if (in_array_ics('organizationalUnit', $oc)){ + $this->isContainer= TRUE; + } + } else { + $oc= $this->attrs['objectClass']; + } + + /* Extract available categories from plugin info list */ + foreach ($plist as $class => $acls){ + + /* Only feed categories */ + if (isset($acls['plCategory'])){ + + /* Walk through supplied list and feed only translated categories */ + foreach($acls['plCategory'] as $idx => $data){ + + /* Non numeric index means -> base object containing more informations */ + if (preg_match('/^[0-9]+$/', $idx)){ + + if (!isset($this->ocMapping[$data])){ + $this->ocMapping[$data]= array(); + $this->ocMapping[$data][]= '0'; + } + + if(isset($cats[$data])){ + $this->myAclObjects[$data.'/'.$class]= $acls['plDescription']; + } + $this->ocMapping[$data][]= $class; + } else { + if (!isset($this->ocMapping[$idx])){ + $this->ocMapping[$idx]= array(); + $this->ocMapping[$idx][]= '0'; + } + $this->ocMapping[$idx][]= $class; + $this->aclObjects[$idx]= $data['description']; + + /* Additionally filter the classes we're interested in in "self edit" mode */ + if (is_array($data['objectClass'])){ + foreach($data['objectClass'] as $objectClass){ + if (in_array_ics($objectClass, $oc)){ + $this->myAclObjects[$idx.'/'.$class]= $acls['plDescription']; + break; + } + } + } else { + if (in_array_ics($data['objectClass'], $oc)){ + $this->myAclObjects[$idx.'/'.$class]= $acls['plDescription']; + } + } + } + + } + } + } + $this->aclObjects['all']= '* '._("All categories"); + $this->ocMapping['all']= array('0' => 'all'); + + /* Sort categories */ + asort($this->aclObjects); + + /* Fill acl types */ + if ($this->isContainer){ + $this->aclTypes= array("reset" => _("Reset ACLs"), + "one" => _("One level"), + "base" => _("Current object"), + "sub" => _("Complete subtree"), + "psub" => _("Complete subtree (permanent)"), + "role" => _("Use ACL defined in role")); + } else { + $this->aclTypes= array("base" => _("Current object"), + "role" => _("Use ACL defined in role")); + } + asort($this->aclTypes); + $this->targets= array("user" => _("Users"), "group" => _("Groups")); + asort($this->targets); + + /* Finally - we want to get saved... */ + $this->is_account= TRUE; + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + $tmp= session::global_get('plist'); + $plist= $tmp->info; + + /* Handle posts */ + if (isset($_POST['new_acl'])){ + $this->dialogState= 'create'; + $this->dialog= TRUE; + $this->currentIndex= count($this->gosaAclEntry); + $this->loadAclEntry(TRUE); + } + + $new_acl= array(); + $aclDialog= FALSE; + $firstedit= FALSE; + + foreach($_POST as $name => $post){ + + /* Actions... */ + if (preg_match('/^acl_edit_.*_x/', $name)){ + $this->dialogState= 'create'; + $firstedit= TRUE; + $this->dialog= TRUE; + $this->currentIndex= preg_replace('/^acl_edit_([0-9]+).*$/', '\1', $name); + $this->loadAclEntry(); + continue; + } + + if (preg_match('/^cat_edit_.*_x/', $name)){ + $this->aclObject= preg_replace('/^cat_edit_([^_]+)_.*$/', '\1', $name); + $this->dialogState= 'edit'; + foreach ($this->ocMapping[$this->aclObject] as $oc){ + if (isset($this->aclContents[$oc])){ + $this->savedAclContents[$oc]= $this->aclContents[$oc]; + } + } + continue; + } + + /* Only handle posts, if we allowed to modify ACLs */ + if(!$this->acl_is_writeable("")){ + continue; + } + + if (preg_match('/^acl_del_.*_x/', $name)){ + unset($this->gosaAclEntry[preg_replace('/^acl_del_([0-9]+).*$/', '\1', $name)]); + continue; + } + + if (preg_match('/^cat_del_.*_x/', $name)){ + $idx= preg_replace('/^cat_del_([^_]+)_.*$/', '\1', $name); + foreach ($this->ocMapping[$idx] as $key){ + unset($this->aclContents["$idx/$key"]); + } + continue; + } + + /* Sorting... */ + if (preg_match('/^sortup_.*_x/', $name)){ + $index= preg_replace('/^sortup_([0-9]+).*$/', '\1', $name); + if ($index > 0){ + $tmp= $this->gosaAclEntry[$index]; + $this->gosaAclEntry[$index]= $this->gosaAclEntry[$index-1]; + $this->gosaAclEntry[$index-1]= $tmp; + } + continue; + } + if (preg_match('/^sortdown_.*_x/', $name)){ + $index= preg_replace('/^sortdown_([0-9]+).*$/', '\1', $name); + if ($index < count($this->gosaAclEntry)-1){ + $tmp= $this->gosaAclEntry[$index]; + $this->gosaAclEntry[$index]= $this->gosaAclEntry[$index+1]; + $this->gosaAclEntry[$index+1]= $tmp; + } + continue; + } + + /* ACL saving... */ + if (preg_match('/^acl_.*_[^xy]$/', $name)){ + list($dummy, $object, $attribute, $value)= split('_', $name); + + /* Skip for detection entry */ + if ($object == 'dummy') { + continue; + } + + /* Ordinary ACLs */ + if (!isset($new_acl[$object])){ + $new_acl[$object]= array(); + } + if (isset($new_acl[$object][$attribute])){ + $new_acl[$object][$attribute].= $value; + } else { + $new_acl[$object][$attribute]= $value; + } + } + + if(isset($_POST['selected_role'])){ + $this->aclContents = ""; + $this->aclContents = base64_decode($_POST['selected_role']); + } + } + + if(isset($_POST['acl_dummy_0_0_0'])){ + $aclDialog= TRUE; + } + + if($this->acl_is_writeable("")){ + + /* Only be interested in new acl's, if we're in the right _POST place */ + if ($aclDialog && $this->aclObject != "" && is_array($this->ocMapping[$this->aclObject])){ + + foreach ($this->ocMapping[$this->aclObject] as $oc){ + + if(isset($this->aclContents[$oc]) && is_array($this->aclContents)){ + unset($this->aclContents[$oc]); + }elseif(isset($this->aclContents[$this->aclObject.'/'.$oc]) && is_array($this->aclContents)){ + unset($this->aclContents[$this->aclObject.'/'.$oc]); + }else{ +# trigger_error("Huhm?"); + } + if (isset($new_acl[$oc]) && is_array($new_acl)){ + $this->aclContents[$oc]= $new_acl[$oc]; + } + if (isset($new_acl[$this->aclObject.'/'.$oc]) && is_array($new_acl)){ + $this->aclContents[$this->aclObject.'/'.$oc]= $new_acl[$this->aclObject.'/'.$oc]; + } + } + } + + /* Save new acl in case of base edit mode */ + if ($this->aclType == 'base' && !$firstedit){ + $this->aclContents= $new_acl; + } + } + + /* Cancel new acl? */ + if (isset($_POST['cancel_new_acl'])){ + $this->dialogState= 'head'; + $this->dialog= FALSE; + if ($this->wasNewEntry){ + unset ($this->gosaAclEntry[$this->currentIndex]); + } + } + + /* Save common values */ + if($this->acl_is_writeable("")){ + foreach (array("aclType","aclFilter", "aclObject", "target") as $key){ + if (isset($_POST[$key])){ + $this->$key= validate($_POST[$key]); + } + } + } + + /* Store ACL in main object? */ + if (isset($_POST['submit_new_acl'])){ + $this->gosaAclEntry[$this->currentIndex]['type']= $this->aclType; + $this->gosaAclEntry[$this->currentIndex]['members']= $this->recipients; + $this->gosaAclEntry[$this->currentIndex]['acl']= $this->aclContents; + $this->gosaAclEntry[$this->currentIndex]['filter']= $this->aclFilter; + $this->dialogState= 'head'; + $this->dialog= FALSE; + } + + /* Cancel edit acl? */ + if (isset($_POST['cancel_edit_acl'])){ + $this->dialogState= 'create'; + foreach ($this->ocMapping[$this->aclObject] as $oc){ + if (isset($this->savedAclContents[$oc])){ + $this->aclContents[$oc]= $this->savedAclContents[$oc]; + } + } + } + + /* Save edit acl? */ + if (isset($_POST['submit_edit_acl'])){ + $this->dialogState= 'create'; + } + + /* Add acl? */ + if (isset($_POST['add_acl']) && $_POST['aclObject'] != ""){ + $this->dialogState= 'edit'; + $this->savedAclContents= array(); + foreach ($this->ocMapping[$this->aclObject] as $oc){ + if (isset($this->aclContents[$oc])){ + $this->savedAclContents[$oc]= $this->aclContents[$oc]; + } + } + } + + /* Add to list? */ + if (isset($_POST['add']) && isset($_POST['source'])){ + foreach ($_POST['source'] as $key){ + if ($this->target == 'user'){ + $this->recipients[$key]= $this->users[$key]; + } + if ($this->target == 'group'){ + $this->recipients[$key]= $this->groups[$key]; + } + } + ksort($this->recipients); + } + + /* Remove from list? */ + if (isset($_POST['del']) && isset($_POST['recipient'])){ + foreach ($_POST['recipient'] as $key){ + unset($this->recipients[$key]); + } + } + + /* Create templating instance */ + $smarty= get_smarty(); + $smarty->assign("acl_readable",$this->acl_is_readable("")); + if(!$this->acl_is_readable("")){ + return ($smarty->fetch (get_template_path('acl.tpl'))); + } + + if ($this->dialogState == 'head'){ + /* Draw list */ + $aclList= new divSelectBox("aclList"); + $aclList->SetHeight(450); + + /* Fill in entries */ + foreach ($this->gosaAclEntry as $key => $entry){ + if(!$this->acl_is_readable("")) continue; + + $action =""; + + $field1= array("string" => $this->aclTypes[$entry['type']], "attach" => "style='width:150px'"); + $field2= array("string" => $this->assembleAclSummary($entry)); + + if($this->acl_is_writeable("")){ + $action.= ""; + $action.= ""; + } + + if($this->acl_is_readable("")){ + $action.= ""; + } + if($this->acl_is_removeable("")){ + $action.= ""; + } + + $field3= array("string" => $action, "attach" => "style='border-right:0px;width:50px;text-align:right;'"); + $aclList->AddEntry(array($field1, $field2, $field3)); + } + + $smarty->assign("aclList", $aclList->DrawList()); + } + + if ($this->dialogState == 'create'){ + /* Draw list */ + $aclList= new divSelectBox("aclList"); + $aclList->SetHeight(150); + + /* Add settings for all categories to the (permanent) list */ + foreach ($this->aclObjects as $section => $dsc){ + $summary= ""; + foreach($this->ocMapping[$section] as $oc){ + if (isset($this->aclContents[$oc]) && count($this->aclContents[$oc]) && isset($this->aclContents[$oc][0]) && + $this->aclContents[$oc][0] != ""){ + + $summary.= "$oc, "; + continue; + } + if (isset($this->aclContents["$section/$oc"]) && count($this->aclContents["$section/$oc"])){ + $summary.= "$oc, "; + continue; + } + if (isset($this->aclContents[$oc]) && !isset($this->aclContents[$oc][0]) && count($this->aclContents[$oc])){ + $summary.= "$oc, "; + } + } + + /* Set summary... */ + if ($summary == ""){ + $summary= ''._("No ACL settings for this category!").''; + } else { + $summary= sprintf(_("Contains ACLs for these objects: %s"), preg_replace('/, $/', '', $summary)); + } + + $actions =""; + if($this->acl_is_readable("")){ + $actions= ""; + } + if($this->acl_is_removeable()){ + $actions.= ""; + } + + $field1= array("string" => $dsc, "attach" => "style='width:100px'"); + $field2= array("string" => $summary); + $field3= array("string" => $actions, "attach" => "style='border-right:0px;width:50px'"); + $aclList->AddEntry(array($field1, $field2, $field3)); + } + + $smarty->assign("aclList", $aclList->DrawList()); + $smarty->assign("aclType", $this->aclType); + $smarty->assign("aclFilter", $this->aclFilter); + $smarty->assign("aclTypes", $this->aclTypes); + $smarty->assign("target", $this->target); + $smarty->assign("targets", $this->targets); + + /* Assign possible target types */ + $smarty->assign("targets", $this->targets); + foreach ($this->attributes as $attr){ + $smarty->assign($attr, $this->$attr); + } + + + /* Generate list */ + $tmp= array(); + foreach (array("user" => "users", "group" => "groups") as $field => $arr){ + if ($this->target == $field){ + foreach ($this->$arr as $key => $value){ + if (!isset($this->recipients[$key])){ + $tmp[$key]= $value; + } + } + } + } + $smarty->assign('sources', $tmp); + $smarty->assign('recipients', $this->recipients); + + /* Acl selector if scope is base */ + if ($this->aclType == 'base'){ + $smarty->assign('aclSelector', $this->buildAclSelector($this->myAclObjects)); + } + + /* Role selector if scope is base */ + if ($this->aclType == 'role'){ + $smarty->assign('roleSelector', "Role selector");#, $this->buildRoleSelector($this->myAclObjects)); + $smarty->assign('roleSelector', $this->buildRoleSelector($this->roles)); + } + } + + if ($this->dialogState == 'edit'){ + $smarty->assign('headline', sprintf(_("Edit ACL for '%s' - scope is '%s'"), $this->aclObjects[$this->aclObject], $this->aclTypes[$this->aclType])); + + /* Collect objects for selected category */ + foreach ($this->ocMapping[$this->aclObject] as $idx => $class){ + if ($idx == 0){ + continue; + } + $aclObjects[$this->aclObject.'/'.$class]= $plist[$class]['plDescription']; + } + if ($this->aclObject == 'all'){ + $aclObjects['all']= _("All objects in current subtree"); + } + + /* Role selector if scope is base */ + if ($this->aclType == 'role'){ + $smarty->assign('roleSelector', $this->buildRoleSelector($this->roles)); + } else { + $smarty->assign('aclSelector', $this->buildAclSelector($aclObjects)); + } + } + + /* Show main page */ + $smarty->assign("dialogState", $this->dialogState); + + /* Assign acls */ + $smarty->assign("acl_createable",$this->acl_is_createable()); + $smarty->assign("acl_writeable" ,$this->acl_is_writeable("")); + $smarty->assign("acl_readable" ,$this->acl_is_readable("")); + $smarty->assign("acl_removeable",$this->acl_is_removeable()); + + return ($smarty->fetch (get_template_path('acl.tpl'))); + } + + + function sort_by_priority($list) + { + $tmp= session::global_get('plist'); + $plist= $tmp->info; + asort($plist); + $newSort = array(); + + foreach($list as $name => $translation){ + $na = preg_replace("/^.*\//","",$name); + $prio = 0; + if(isset($plist[$na]['plPriority'])){ + $prio= $plist[$na]['plPriority'] ; + } + + $newSort[$name] = $prio; + } + + asort($newSort); + + $ret = array(); + foreach($newSort as $name => $prio){ + $ret[$name] = $list[$name]; + } + return($ret); + } + + + function buildRoleSelector($list) + { + $D_List =new divSelectBox("Acl_Roles"); + + $selected = $this->aclContents; + if(!is_string($this->aclContents) || !isset($list[$this->aclContents])){ + $selected = key($list); + } + + $str =""; + foreach($list as $dn => $values){ + + if($dn == $selected){ + $option = ""; + }else{ + $option = ""; + } + + $field1 = array("string" => $option) ; + $field2 = array("string" => $values['cn'], "attach" => "style='width:200px;'") ; + $field3 = array("string" => $values['description'],"attach" => "style='border-right:0px;'") ; + + $D_List->AddEntry(array($field1,$field2,$field3)); + } + return($D_List->DrawList()); + } + + + function buildAclSelector($list) + { + $display= ""; + $cols= 3; + $tmp= session::global_get('plist'); + $plist= $tmp->info; + asort($plist); + + /* Add select all/none buttons */ + $style = "style='width:100px;'"; + + if($this->acl_is_writeable("")){ + $display .= ""; + $display .= ""; + $display .= " - "; + $display .= ""; + $display .= " - "; + + $display .= ""; + $display .= ""; + + $display .= "
"; + + $style = "style='width:50px;'"; + $display .= ""; + $display .= ""; + $display .= ""; + $display .= ""; + $display .= ""; + $display .= " - "; + $display .= ""; + $display .= ""; + $display .= ""; + $display .= " - "; + + $display .= ""; + $display .= ""; + $display .= ""; + $display .= ""; + } + + /* Build general objects */ + $list =$this->sort_by_priority($list); + foreach ($list as $key => $name){ + + /* Create sub acl if it does not exist */ + if (!isset($this->aclContents[$key])){ + $this->aclContents[$key]= array(); + $this->aclContents[$key][0]= ''; + } + $currentAcl= $this->aclContents[$key]; + + /* Get the overall plugin acls + */ + $overall_acl =""; + if(isset($currentAcl[0])){ + $overall_acl = $currentAcl[0]; + } + + /* Object header */ + $tname= preg_replace("/[^a-z0-9]/i","_",$name); + if(session::global_get('js')) { + if(isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/gecko/i",$_SERVER['HTTP_USER_AGENT'])) { + $display.= "\n". + "\n ". + "\n ". + "\n ". + "\n "; + } else if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/ie/i",$_SERVER['HTTP_USER_AGENT'])) { + $display.= "\n
"._("Object").": $name". + "\n
". + "\n ". + "\n ". + "\n ". + "\n "; + } else { + $display.= "\n
"._("Object").": $name". + "\n
". + "\n ". + "\n ". + "\n "; + } + } else { + $display.= "\n
"._("Object").": $name
". + "\n ". + "\n ". + "\n "; + } + + /* Generate options */ + $spc= "  "; + $options= $this->mkchkbx($key."_0_c", _("Create objects"), preg_match('/c/', $overall_acl)).$spc; + $options.= $this->mkchkbx($key."_0_m", _("Move objects"), preg_match('/m/', $overall_acl)).$spc; + $options.= $this->mkchkbx($key."_0_d", _("Remove objects"), preg_match('/d/', $overall_acl)).$spc; + if ($plist[preg_replace('%^.*/%', '', $key)]['plSelfModify']){ + $options.= $this->mkchkbx($key."_0_s", _("Grant permission to owner"), preg_match('/s/', $overall_acl)).$spc; + } + + /* Global options */ + $more_options= $this->mkchkbx($key."_0_r", _("read"), preg_match('/r/', $overall_acl)).$spc; + $more_options.= $this->mkchkbx($key."_0_w", _("write"), preg_match('/w/', $overall_acl)); + + $display.= "\n ". + "\n ". + "\n ". + "\n "; + + /* Walk through the list of attributes */ + $cnt= 1; + $splist= $plist[preg_replace('%^.*/%', '', $key)]['plProvidedAcls']; +# asort($splist); + if(session::global_get('js')) { + if(isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/gecko/i",$_SERVER['HTTP_USER_AGENT'])) { + $display.= "\n ". + "\n "; + return($str); + } + + $i = $this->_numEntries(); + foreach($this->a_entries as $s_key => $s_value){ + $i--; + + if($i_alternate!=0){ + $i_alternate=0; + } else { + $i_alternate=1; + } + + $s_return .= "\n"; + + $cnt = 0; + + foreach($s_value as $s_key2 => $s_value2 ){ + $this->cols = count($s_value) ; + $cnt++; + + if(!isset($s_value2['class'])){ + $class = "list".$i_alternate; + } else { + $class = $s_value2['class']; + } + + if(!isset($s_value2['attach'])){ + $style = ""; + } else { + $style = " ".$s_value2['attach']." " ; + } + + $s_return .= "\n"; + } + $s_return.="\n"; + } + $s_return.="\n"; + for($i = 0 ; $i < ($this->cols) ; $i ++){ + if($i >= ($this->cols-1)){ + $s_return .= ""; + }else{ + $s_return .= ""; + } + + } + $s_return.=""; + return $s_return; + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_divlist.inc b/trunk/gosa-core/include/class_divlist.inc new file mode 100644 index 000000000..9a3f69991 --- /dev/null +++ b/trunk/gosa-core/include/class_divlist.inc @@ -0,0 +1,381 @@ +i_currentPage = 0; + $this->i_entriesPerPage = 10; + $this->s_height = "450"; + $this->s_width = "600px"; + $this->s_summary = ""; + $this->a_entries = array(); + $this->a_header = array(); + $this->b_displayPageNums= true; + $this->cols = 0; + $this->pageid = $pageid; + } + + function __destruct(){ + + } + + function SetPluginMode($val = TRUE) + { + $this->fix_list_for_plugins = $val; + } + + function SetFooter($str) + { + $this->list_footer = $str; + } + + function AddEntry($a_entriedata) { + $this->a_entries[] = $a_entriedata; + } + + function DisablePageNums() { + $this->b_displayPageNums =false; + } + + function SetHeader($a_headerdata) { + $this->a_header[] = $a_headerdata ; + } + + function SetHeight($s_height) { + $this->s_height= $s_height; + $this->force_height = true; + } + + function SetWidth($s_width) { + $this->s_width= $s_width; + if(preg_match("/^[0-9]*$/",$this->s_width)){ + $this->s_width .="px"; + } + } + + function SetEntriesPerPage($i_num){ + $this->i_entriesPerPage=$i_num; + } + + function DrawList(){ + $s_return = ""; + if(!$this->force_height){ + $s_return.= "
"._("Object").": $name
$options "._("Complete object").": $more_options
". + "\n
 
"; + $s_return .= $s_value2['string']; + $s_return .= "
 
 
"; + } else { + $s_return.= "
"; + } + + $s_return.= $this->_generateHeader(); + $s_return.= $this->_generatePage(); + $s_return.= $this->_generateFooter(); + $s_return.= "
"; + + return ($s_return); + } + + function _numpages(){ + $cnt = count($this->a_entries); + + $pages = (int) ($cnt / $this->i_entriesPerPage); + if($cnt % $this->i_entriesPerPage){ + $pages++; + } + + return $pages; + } + + function _numentries(){ + return count($this->a_entries); + } + + function _generateFooter() + { + $s_return = ""; + if(!empty($this->list_footer)){ + + // Using scrolltable? + if($this->i_entriesPerPage == 0) { + if(!$this->force_height) { + $s_return.= "\n
"; + } else { + $s_return.= "\n"; + } + + $s_return.= "\n"; + + } + return($s_return); + } + + function _generateHeader(){ + $s_return = ""; + $s_value = ""; + $s_key = ""; + + // Using scrolltable? + if($this->i_entriesPerPage == 0) { + if(!$this->force_height) { + $s_return.= "\n"; + } + + $ch = mb_substr($characters, $i, 1, "UTF8"); + $alphabet.= ""; + + if ($c++ == $count){ + $alphabet.= ""; + $c= 0; + } + } + + /* Fill remaining cells */ + while ($c++ <= $count){ + $alphabet.= ""; + } + + return ($alphabet); +} + + +function validate($string) +{ + return (strip_tags(str_replace('\0', '', $string))); +} + + +function get_gosa_version() +{ + global $svn_revision, $svn_path; + + /* Extract informations */ + $revision= preg_replace('/^[^0-9]*([0-9]+)[^0-9]*$/', '\1', $svn_revision); + + /* Release or development? */ + if (preg_match('%/gosa/trunk/%', $svn_path)){ + return (sprintf(_("GOsa development snapshot (Rev %s)"), $revision)); + } else { + $release= preg_replace('%^.*/([^/]+)/include/functions.inc.*$%', '\1', $svn_path); + return (sprintf(_("GOsa $release"), $revision)); + } +} + + +function rmdirRecursive($path, $followLinks=false) { + $dir= opendir($path); + while($entry= readdir($dir)) { + if(is_file($path."/".$entry) || ((!$followLinks) && is_link($path."/".$entry))) { + unlink($path."/".$entry); + } elseif (is_dir($path."/".$entry) && $entry!='.' && $entry!='..') { + rmdirRecursive($path."/".$entry); + } + } + closedir($dir); + return rmdir($path); +} + + +function scan_directory($path,$sort_desc=false) +{ + $ret = false; + + /* is this a dir ? */ + if(is_dir($path)) { + + /* is this path a readable one */ + if(is_readable($path)){ + + /* Get contents and write it into an array */ + $ret = array(); + + $dir = opendir($path); + + /* Is this a correct result ?*/ + if($dir){ + while($fp = readdir($dir)) + $ret[]= $fp; + } + } + } + /* Sort array ascending , like scandir */ + sort($ret); + + /* Sort descending if parameter is sort_desc is set */ + if($sort_desc) { + $ret = array_reverse($ret); + } + + return($ret); +} + + +function clean_smarty_compile_dir($directory) +{ + global $svn_revision; + + if(is_dir($directory) && is_readable($directory)) { + // Set revision filename to REVISION + $revision_file= $directory."/REVISION"; + + /* Is there a stamp containing the current revision? */ + if(!file_exists($revision_file)) { + // create revision file + create_revision($revision_file, $svn_revision); + } else { + # check for "$config->...['CONFIG']/revision" and the + # contents should match the revision number + if(!compare_revision($revision_file, $svn_revision)){ + // If revision differs, clean compile directory + foreach(scan_directory($directory) as $file) { + if(($file==".")||($file=="..")) continue; + if( is_file($directory."/".$file) && + is_writable($directory."/".$file)) { + // delete file + if(!unlink($directory."/".$file)) { + msg_dialog::display(_("Internal error"), sprintf(_("File '%s' could not be deleted."), $directory."/".$file), ERROR_DIALOG); + // This should never be reached + } + } elseif(is_dir($directory."/".$file) && + is_writable($directory."/".$file)) { + // Just recursively delete it + rmdirRecursive($directory."/".$file); + } + } + // We should now create a fresh revision file + clean_smarty_compile_dir($directory); + } else { + // Revision matches, nothing to do + } + } + } else { + // Smarty compile dir is not accessible + // (Smarty will warn about this) + } +} + + +function create_revision($revision_file, $revision) +{ + $result= false; + + if(is_dir(dirname($revision_file)) && is_writable(dirname($revision_file))) { + if($fh= fopen($revision_file, "w")) { + if(fwrite($fh, $revision)) { + $result= true; + } + } + fclose($fh); + } else { + msg_dialog::display(_("Internal error"), _("Cannot write to revision file!"), ERROR_DIALOG); + } + + return $result; +} + + +function compare_revision($revision_file, $revision) +{ + // false means revision differs + $result= false; + + if(file_exists($revision_file) && is_readable($revision_file)) { + // Open file + if($fh= fopen($revision_file, "r")) { + // Compare File contents with current revision + if($revision == fread($fh, filesize($revision_file))) { + $result= true; + } + } else { + msg_dialog::display(_("Internal error"), _("Cannot write to revision file!"), ERROR_DIALOG); + } + // Close file + fclose($fh); + } + + return $result; +} + + +function progressbar($percentage,$width=100,$height=15,$showvalue=false) +{ + $str = ""; // Our return value will be saved in this var + + $color = dechex($percentage+150); + $color2 = dechex(150 - $percentage); + $bgcolor= $showvalue?"FFFFFF":"DDDDDD"; + + $progress = (int)(($percentage /100)*$width); + + /* If theres a better solution for this, use it... */ + $str = "\n
"; + + $str.= "\n
"; + + if(($height >10)&&($showvalue)){ + $str.= "\n "; + $str.= "\n ".$percentage."% "; + $str.= "\n "; + } + + $str.= "\n
"; + $str.= "\n
"; + $str.= "\n
"; + $str.= "\n
"; + + return($str); +} + + +function array_key_ics($ikey, $items) +{ + $tmp= array_change_key_case($items, CASE_LOWER); + $ikey= strtolower($ikey); + if (isset($tmp[$ikey])){ + return($tmp[$ikey]); + } + + return (''); +} + + +function array_differs($src, $dst) +{ + /* If the count is differing, the arrays differ */ + if (count ($src) != count ($dst)){ + return (TRUE); + } + + return (count(array_diff($src, $dst)) != 0); +} + + +function saveFilter($a_filter, $values) +{ + if (isset($_POST['regexit'])){ + $a_filter["regex"]= $_POST['regexit']; + + foreach($values as $type){ + if (isset($_POST[$type])) { + $a_filter[$type]= "checked"; + } else { + $a_filter[$type]= ""; + } + } + } + + /* React on alphabet links if needed */ + if (isset($_GET['search'])){ + $s= mb_substr(validate($_GET['search']), 0, 1, "UTF8")."*"; + if ($s == "**"){ + $s= "*"; + } + $a_filter['regex']= $s; + } + + return ($a_filter); +} + + +/* Escape all LDAP filter relevant characters */ +function normalizeLdap($input) +{ + return (addcslashes($input, '()|')); +} + + +/* Resturns the difference between to microtime() results in float */ +function get_MicroTimeDiff($start , $stop) +{ + $a = split("\ ",$start); + $b = split("\ ",$stop); + + $secs = $b[1] - $a[1]; + $msecs= $b[0] - $a[0]; + + $ret = (float) ($secs+ $msecs); + return($ret); +} + + +function get_base_dir() +{ + global $BASE_DIR; + + return $BASE_DIR; +} + + +function obj_is_readable($dn, $object, $attribute) +{ + global $ui; + + return preg_match('/r/', $ui->get_permissions($dn, $object, $attribute)); +} + + +function obj_is_writable($dn, $object, $attribute) +{ + global $ui; + + return preg_match('/w/', $ui->get_permissions($dn, $object, $attribute)); +} + + +function gosa_ldap_explode_dn($dn,$config = NULL,$verify_in_ldap=false) +{ + /* Initialize variables */ + $ret = array("count" => 0); // Set count to 0 + $next = true; // if false, then skip next loops and return + $cnt = 0; // Current number of loops + $max = 100; // Just for security, prevent looops + $ldap = NULL; // To check if created result a valid + $keep = ""; // save last failed parse string + + /* Check each parsed dn in ldap ? */ + if($config!==NULL && $verify_in_ldap){ + $ldap = $config->get_ldap_link(); + } + + /* Lets start */ + $called = false; + while(preg_match("/,/",$dn) && $next && $cnt < $max){ + + $cnt ++; + if(!preg_match("/,/",$dn)){ + $next = false; + } + $object = preg_replace("/[,].*$/","",$dn); + $dn = preg_replace("/^[^,]+,/","",$dn); + + $called = true; + + /* Check if current dn is valid */ + if($ldap!==NULL){ + $ldap->cd($dn); + $ldap->cat($dn,array("dn")); + if($ldap->count()){ + $ret[] = $keep.$object; + $keep = ""; + }else{ + $keep .= $object.","; + } + }else{ + $ret[] = $keep.$object; + $keep = ""; + } + } + + /* No dn was posted */ + if($cnt == 0 && !empty($dn)){ + $ret[] = $dn; + } + + /* Append the rest */ + $test = $keep.$dn; + if($called && !empty($test)){ + $ret[] = $keep.$dn; + } + $ret['count'] = count($ret) - 1; + + return($ret); +} + + +function get_base_from_hook($dn, $attrib) +{ + global $config; + + if ($config->get_cfg_value("baseIdHook") != ""){ + + /* Call hook script - if present */ + $command= $config->get_cfg_value("baseIdHook"); + + if ($command != ""){ + $command.= " '".LDAP::fix($dn)."' $attrib"; + if (check_command($command)){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execute"); + exec($command, $output); + if (preg_match("/^[0-9]+$/", $output[0])){ + return ($output[0]); + } else { + msg_dialog::display(_("Warning"), _("'baseIdHook' is not available. Using default base!"), WARNING_DIALOG); + return ($config->get_cfg_value("uidNumberBase")); + } + } else { + msg_dialog::display(_("Warning"), _("'baseIdHook' is not available. Using default base!"), WARNING_DIALOG); + return ($config->get_cfg_value("uidNumberBase")); + } + + } else { + + msg_dialog::display(_("Warning"), _("'baseIdHook' is not available. Using default base!"), WARNING_DIALOG); + return ($config->get_cfg_value("uidNumberBase")); + + } + } +} + + +function check_schema_version($class, $version) +{ + return preg_match("/\(v$version\)/", $class['DESC']); +} + + +function check_schema($cfg,$rfc2307bis = FALSE) +{ + $messages= array(); + + /* Get objectclasses */ + $ldap = new ldapMultiplexer(new LDAP($cfg['admin'],$cfg['password'],$cfg['connection'] ,FALSE, $cfg['tls'])); + $objectclasses = $ldap->get_objectclasses(); + if(count($objectclasses) == 0){ + msg_dialog::display(_("LDAP warning"), _("Cannot get schema information from server. No schema check possible!"), WARNING_DIALOG); + } + + /* This is the default block used for each entry. + * to avoid unset indexes. + */ + $def_check = array("REQUIRED_VERSION" => "0", + "SCHEMA_FILES" => array(), + "CLASSES_REQUIRED" => array(), + "STATUS" => FALSE, + "IS_MUST_HAVE" => FALSE, + "MSG" => "", + "INFO" => "");#_("There is currently no information specified for this schema extension.")); + + /* The gosa base schema */ + $checks['gosaObject'] = $def_check; + $checks['gosaObject']['REQUIRED_VERSION'] = "2.6.1"; + $checks['gosaObject']['SCHEMA_FILES'] = array("gosa+samba3.schema","gosa.schema"); + $checks['gosaObject']['CLASSES_REQUIRED'] = array("gosaObject"); + $checks['gosaObject']['IS_MUST_HAVE'] = TRUE; + + /* GOsa Account class */ + $checks["gosaAccount"]["REQUIRED_VERSION"]= "2.6.1"; + $checks["gosaAccount"]["SCHEMA_FILES"] = array("gosa+samba3.schema","gosa.schema"); + $checks["gosaAccount"]["CLASSES_REQUIRED"]= array("gosaAccount"); + $checks["gosaAccount"]["IS_MUST_HAVE"] = TRUE; + $checks["gosaAccount"]["INFO"] = _("Used to store account specific informations."); + + /* GOsa lock entry, used to mark currently edited objects as 'in use' */ + $checks["gosaLockEntry"]["REQUIRED_VERSION"] = "2.6.1"; + $checks["gosaLockEntry"]["SCHEMA_FILES"] = array("gosa+samba3.schema","gosa.schema"); + $checks["gosaLockEntry"]["CLASSES_REQUIRED"] = array("gosaLockEntry"); + $checks["gosaLockEntry"]["IS_MUST_HAVE"] = TRUE; + $checks["gosaLockEntry"]["INFO"] = _("Used to lock currently edited entries to avoid multiple changes at the same time."); + + /* Some other checks */ + foreach(array( + "gosaCacheEntry" => array("version" => "2.6.1"), + "gosaDepartment" => array("version" => "2.6.1"), + "goFaxAccount" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"), + "goFaxSBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"), + "goFaxRBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"), + "gosaUserTemplate" => array("version" => "2.6.1", "class" => "posixAccount","file" => "nis.schema"), + "gosaMailAccount" => array("version" => "2.6.1", "class" => "mailAccount","file" => "gosa+samba3.schema"), + "gosaProxyAccount" => array("version" => "2.6.1", "class" => "proxyAccount","file" => "gosa+samba3.schema"), + "gosaApplication" => array("version" => "2.6.1", "class" => "appgroup","file" => "gosa.schema"), + "gosaApplicationGroup" => array("version" => "2.6.1", "class" => "appgroup","file" => "gosa.schema"), + "GOhard" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), + "gotoTerminal" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), + "goServer" => array("version" => "2.6.1","class" => "server","file" => "goserver.schema"), + "goTerminalServer" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), + "goShareServer" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), + "goNtpServer" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), + "goSyslogServer" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), + "goLdapServer" => array("version" => "2.6.1"), + "goCupsServer" => array("version" => "2.6.1", "class" => array("posixAccount", "terminals"),), + "goImapServer" => array("version" => "2.6.1", "class" => array("mailAccount", "mailgroup"),"file" => "gosa+samba3. schema"), + "goKrbServer" => array("version" => "2.6.1"), + "goFaxServer" => array("version" => "2.6.1", "class" => "gofaxAccount","file" => "gofax.schema"), + ) as $name => $values){ + + $checks[$name] = $def_check; + if(isset($values['version'])){ + $checks[$name]["REQUIRED_VERSION"] = $values['version']; + } + if(isset($values['file'])){ + $checks[$name]["SCHEMA_FILES"] = array($values['file']); + } + $checks[$name]["CLASSES_REQUIRED"] = array($name); + } + foreach($checks as $name => $value){ + foreach($value['CLASSES_REQUIRED'] as $class){ + + if(!isset($objectclasses[$name])){ + $checks[$name]['STATUS'] = FALSE; + if($value['IS_MUST_HAVE']){ + $checks[$name]['MSG'] = sprintf(_("Missing required object class '%s'!"),$class); + }else{ + $checks[$name]['MSG'] = sprintf(_("Missing optional object class '%s'!"),$class); + } + }elseif(!check_schema_version($objectclasses[$name],$value['REQUIRED_VERSION'])){ + $checks[$name]['STATUS'] = FALSE; + + if($value['IS_MUST_HAVE']){ + $checks[$name]['MSG'] = sprintf(_("Version mismatch for required object class '%s' (!=%s)!"), $class, $value['REQUIRED_VERSION']); + }else{ + $checks[$name]['MSG'] = sprintf(_("Version mismatch for optional object class '%s' (!=%s)!"), $class, $value['REQUIRED_VERSION']); + } + }else{ + $checks[$name]['STATUS'] = TRUE; + $checks[$name]['MSG'] = sprintf(_("Class(es) available")); + } + } + } + + $tmp = $objectclasses; + + /* The gosa base schema */ + $checks['posixGroup'] = $def_check; + $checks['posixGroup']['REQUIRED_VERSION'] = "2.6.1"; + $checks['posixGroup']['SCHEMA_FILES'] = array("gosa+samba3.schema","gosa.schema"); + $checks['posixGroup']['CLASSES_REQUIRED'] = array("posixGroup"); + $checks['posixGroup']['STATUS'] = TRUE; + $checks['posixGroup']['IS_MUST_HAVE'] = TRUE; + $checks['posixGroup']['MSG'] = ""; + $checks['posixGroup']['INFO'] = ""; + + /* Depending on selected rfc2307bis mode, we need different schema configurations */ + if(isset($tmp['posixGroup'])){ + + if($rfc2307bis && isset($tmp['posixGroup']['STRUCTURAL'])){ + $checks['posixGroup']['STATUS'] = FALSE; + $checks['posixGroup']['MSG'] = _("You have enabled the rfc2307bis option on the 'ldap setup' step, but your schema configuration do not support this option."); + $checks['posixGroup']['INFO'] = _("In order to use rfc2307bis conform groups the objectClass 'posixGroup' must be AUXILIARY"); + } + if(!$rfc2307bis && !isset($tmp['posixGroup']['STRUCTURAL'])){ + $checks['posixGroup']['STATUS'] = FALSE; + $checks['posixGroup']['MSG'] = _("Your schema is configured to support the rfc2307bis group, but you have disabled this option on the 'ldap setup' step."); + $checks['posixGroup']['INFO'] = _("The objectClass 'posixGroup' must be STRUCTURAL"); + } + } + + return($checks); +} + + +function get_languages($languages_in_own_language = FALSE,$strip_region_tag = FALSE) +{ + $tmp = array( + "de_DE" => "German", + "fr_FR" => "French", + "it_IT" => "Italian", + "es_ES" => "Spanish", + "en_US" => "English", + "nl_NL" => "Dutch", + "pl_PL" => "Polish", + #"sv_SE" => "Swedish", + "zh_CN" => "Chinese", + "vi_VN" => "Vietnamese", + "ru_RU" => "Russian"); + + $tmp2= array( + "de_DE" => _("German"), + "fr_FR" => _("French"), + "it_IT" => _("Italian"), + "es_ES" => _("Spanish"), + "en_US" => _("English"), + "nl_NL" => _("Dutch"), + "pl_PL" => _("Polish"), + #"sv_SE" => _("Swedish"), + "zh_CN" => _("Chinese"), + "vi_VN" => _("Vietnamese"), + "ru_RU" => _("Russian")); + + $ret = array(); + if($languages_in_own_language){ + + $old_lang = setlocale(LC_ALL, 0); + + /* If the locale wasn't correclty set before, there may be an incorrect + locale returned. Something like this: + C_CTYPE=de_DE.UTF-8;LC_NUMERIC=C;LC_TIME=de_DE.UTF-8;LC ... + Extract the locale name from this string and use it to restore old locale. + */ + if(preg_match("/LC_CTYPE/",$old_lang)){ + $old_lang = preg_replace("/^.*LC_CTYPE=([^;]*).*$/","\\1",$old_lang); + } + + foreach($tmp as $key => $name){ + $lang = $key.".UTF-8"; + setlocale(LC_ALL, $lang); + if($strip_region_tag){ + $ret[preg_replace("/^([^_]*).*$/","\\1",$key)] = _($name)." (".$tmp2[$key].")"; + }else{ + $ret[$key] = _($name)."  (".$tmp2[$key].")"; + } + } + setlocale(LC_ALL, $old_lang); + }else{ + foreach($tmp as $key => $name){ + if($strip_region_tag){ + $ret[preg_replace("/^([^_]*).*/","\\1",$key)] = _($name); + }else{ + $ret[$key] = _($name); + } + } + } + return($ret); +} + + +/* Returns contents of the given POST variable and check magic quotes settings */ +function get_post($name) +{ + if(!isset($_POST[$name])){ + trigger_error("Requested POST value (".$name.") does not exists, you should add a check to prevent this message."); + return(FALSE); + } + if(get_magic_quotes_gpc()){ + return(stripcslashes($_POST[$name])); + }else{ + return($_POST[$name]); + } +} + + +/* Return class name in correct case */ +function get_correct_class_name($cls) +{ + global $class_mapping; + if(isset($class_mapping) && is_array($class_mapping)){ + foreach($class_mapping as $class => $file){ + if(preg_match("/^".$cls."$/i",$class)){ + return($class); + } + } + } + return(FALSE); +} + + +// change_password, changes the Password, of the given dn +function change_password ($dn, $password, $mode=0, $hash= "") +{ + global $config; + $newpass= ""; + + /* Convert to lower. Methods are lowercase */ + $hash= strtolower($hash); + + // Get all available encryption Methods + + // NON STATIC CALL :) + $methods = new passwordMethod(session::get('config')); + $available = $methods->get_available_methods(); + + // read current password entry for $dn, to detect the encryption Method + $ldap = $config->get_ldap_link(); + $ldap->cat ($dn, array("shadowLastChange", "userPassword", "uid")); + $attrs = $ldap->fetch (); + + /* Is ensure that clear passwords will stay clear */ + if($hash == "" && isset($attrs['userPassword'][0]) && !preg_match ("/^{([^}]+)}(.+)/", $attrs['userPassword'][0])){ + $hash = "clear"; + } + + // Detect the encryption Method + if ( (isset($attrs['userPassword'][0]) && preg_match ("/^{([^}]+)}(.+)/", $attrs['userPassword'][0], $matches)) || $hash != ""){ + + /* Check for supported algorithm */ + mt_srand((double) microtime()*1000000); + + /* Extract used hash */ + if ($hash == ""){ + $test = passwordMethod::get_method($attrs['userPassword'][0],$dn); + } else { + $test = new $available[$hash]($config,$dn); + $test->set_hash($hash); + } + + } else { + // User MD5 by default + $hash= "md5"; + $test = new $available['md5']($config); + } + + if($test instanceOf passwordMethod){ + + $deactivated = $test->is_locked($config,$dn); + + /* Feed password backends with information */ + $test->dn= $dn; + $test->attrs= $attrs; + $newpass= $test->generate_hash($password); + + // Update shadow timestamp? + if (isset($attrs["shadowLastChange"][0])){ + $shadow= (int)(date("U") / 86400); + } else { + $shadow= 0; + } + + // Write back modified entry + $ldap->cd($dn); + $attrs= array(); + + // Not for groups + if ($mode == 0){ + + if ($shadow != 0){ + $attrs['shadowLastChange']= $shadow; + } + + // Create SMB Password + $attrs= generate_smb_nt_hash($password); + } + + $attrs['userPassword']= array(); + $attrs['userPassword']= $newpass; + + $ldap->modify($attrs); + + /* Read ! if user was deactivated */ + if($deactivated){ + $test->lock_account($config,$dn); + } + + new log("modify","users/passwordMethod",$dn,array_keys($attrs),$ldap->get_error()); + + if (!$ldap->success()) { + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD, ERROR_DIALOG)); + } else { + + /* Run backend method for change/create */ + if(!$test->set_password($password)){ + return(FALSE); + } + + /* Find postmodify entries for this class */ + $command= $config->search("password", "POSTMODIFY",array('menu')); + + if ($command != ""){ + /* Walk through attribute list */ + $command= preg_replace("/%userPassword/", $password, $command); + $command= preg_replace("/%dn/", $dn, $command); + + if (check_command($command)){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execute"); + exec($command); + } else { + $message= sprintf(_("Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to exist."), $command, "password"); + msg_dialog::display(_("Configuration error"), $message, ERROR_DIALOG); + } + } + } + return(TRUE); + } +} + + +// Return something like array['sambaLMPassword']= "lalla..." +function generate_smb_nt_hash($password) +{ + global $config; + + # Try to use gosa-si? + if ($config->get_cfg_value("gosaSupportURI") != ""){ + $res= gosaSupportDaemon::send("gosa_gen_smb_hash", "GOSA", array("password" => $password), TRUE); + if (isset($res['XML']['HASH'])){ + $hash= $res['XML']['HASH']; + } else { + $hash= ""; + } + + if ($hash == "") { + msg_dialog::display(_("Configuration error"), _("Cannot generate samba hash!"), ERROR_DIALOG); + return (""); + } + } else { + $tmp= $config->get_cfg_value('sambaHashHook')." ".escapeshellarg($password); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $tmp, "Execute"); + + exec($tmp, $ar); + flush(); + reset($ar); + $hash= current($ar); + + if ($hash == "") { + msg_dialog::display(_("Configuration error"), sprintf(_("Cannot generate samba hash: running '%s' failed, check the 'sambaHashHook'!"),$config->get_cfg_value('sambaHashHook')), ERROR_DIALOG); + return (""); + } + } + + list($lm,$nt)= split (":", trim($hash)); + + if ($config->get_cfg_value("sambaversion") == 3) { + $attrs['sambaLMPassword']= $lm; + $attrs['sambaNTPassword']= $nt; + $attrs['sambaPwdLastSet']= date('U'); + $attrs['sambaBadPasswordCount']= "0"; + $attrs['sambaBadPasswordTime']= "0"; + } else { + $attrs['lmPassword']= $lm; + $attrs['ntPassword']= $nt; + $attrs['pwdLastSet']= date('U'); + } + return($attrs); +} + + +function getEntryCSN($dn) +{ + global $config; + if(empty($dn) || !is_object($config)){ + return(""); + } + + /* Get attribute that we should use as serial number */ + $attr= $config->get_cfg_value("modificationDetectionAttribute"); + if($attr != ""){ + $ldap = $config->get_ldap_link(); + $ldap->cat($dn,array($attr)); + $csn = $ldap->fetch(); + if(isset($csn[$attr][0])){ + return($csn[$attr][0]); + } + } + return(""); +} + + +/* Add a given objectClass to an attrs entry */ +function add_objectClass($classes, &$attrs) +{ + if (is_array($classes)){ + $list= $classes; + } else { + $list= array($classes); + } + + foreach ($list as $class){ + $attrs['objectClass'][]= $class; + } +} + + +/* Removes a given objectClass from the attrs entry */ +function remove_objectClass($classes, &$attrs) +{ + if (isset($attrs['objectClass'])){ + /* Array? */ + if (is_array($classes)){ + $list= $classes; + } else { + $list= array($classes); + } + + $tmp= array(); + foreach ($attrs['objectClass'] as $oc) { + foreach ($list as $class){ + if (strtolower($oc) != strtolower($class)){ + $tmp[]= $oc; + } + } + } + $attrs['objectClass']= $tmp; + } +} + +/*! \brief Initialize a file download with given content, name and data type. + * @param data String The content to send. + * @param name String The name of the file. + * @param type String The content identifier, default value is "application/octet-stream"; + */ +function send_binary_content($data,$name,$type = "application/octet-stream") +{ + 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: no-cache"); + header("Pragma: no-cache"); + header("Cache-Control: post-check=0, pre-check=0"); + header("Content-type: ".$type.""); + + $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT']; + + /* Strip name if it is a complete path */ + if (preg_match ("/\//", $name)) { + $name= basename($name); + } + + /* force download dialog */ + if (preg_match('/MSIE 5.5/', $HTTP_USER_AGENT) || preg_match('/MSIE 6.0/', $HTTP_USER_AGENT)) { + header('Content-Disposition: filename="'.$name.'"'); + } else { + header('Content-Disposition: attachment; filename="'.$name.'"'); + } + + echo $data; + exit(); +} + + +function reverse_html_entities($str,$type = ENT_QUOTES , $charset = "UTF-8") +{ + if(is_string($str)){ + return(htmlentities($str,$type,$charset)); + }elseif(is_array($str)){ + foreach($str as $name => $value){ + $str[$name] = reverse_html_entities($value,$type,$charset); + } + } + return($str); +} + + +/*! \brief Encode special string characters so we can use the string in \ + HTML output, without breaking quotes. + @param The String we want to encode. + @return The encoded String + */ +function xmlentities($str) +{ + if(is_string($str)){ + + static $asc2uni= array(); + if (!count($asc2uni)){ + for($i=128;$i<256;$i++){ + # $asc2uni[chr($i)] = "&#x".dechex($i).";"; + } + } + + $str = str_replace("&", "&", $str); + $str = str_replace("<", "<", $str); + $str = str_replace(">", ">", $str); + $str = str_replace("'", "'", $str); + $str = str_replace("\"", """, $str); + $str = str_replace("\r", "", $str); + $str = strtr($str,$asc2uni); + return $str; + }elseif(is_array($str)){ + foreach($str as $name => $value){ + $str[$name] = xmlentities($value); + } + } + return($str); +} + + +/*! \brief Updates all accessTo attributes from a given value to a new one. + For example if a host is renamed. + @param String $from The source accessTo name. + @param String $to The destination accessTo name. +*/ +function update_accessTo($from,$to) +{ + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->search("(&(objectClass=trustAccount)(accessTo=".$from."))",array("objectClass","accessTo")); + while($attrs = $ldap->fetch()){ + $new_attrs = array("accessTo" => array()); + $dn = $attrs['dn']; + for($i = 0 ; $i < $attrs['objectClass']['count']; $i++){ + $new_attrs['objectClass'][] = $attrs['objectClass'][$i]; + } + for($i = 0 ; $i < $attrs['accessTo']['count']; $i++){ + if($attrs['accessTo'][$i] == $from){ + if(!empty($to)){ + $new_attrs['accessTo'][] = $to; + } + }else{ + $new_attrs['accessTo'][] = $attrs['accessTo'][$i]; + } + } + $ldap->cd($dn); + $ldap->modify($new_attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD, "update_accessTo($from,$to)")); + } + new log("modify","update_accessTo($from,$to)",$dn,array_keys($new_attrs),$ldap->get_error()); + } +} + + +function get_random_char () { + $randno = rand (0, 63); + if ($randno < 12) { + return (chr ($randno + 46)); // Digits, '/' and '.' + } else if ($randno < 38) { + return (chr ($randno + 53)); // Uppercase + } else { + return (chr ($randno + 59)); // Lowercase + } +} + + +function cred_encrypt($input, $password) { + + $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); + $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM); + + return bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $password, $input, MCRYPT_MODE_ECB, $iv)); + +} + +function cred_decrypt($input,$password) { + $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); + $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM); + + return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $password, pack("H*", $input), MCRYPT_MODE_ECB, $iv); +} + +function get_object_info() +{ + return(session::get('objectinfo')); +} + +function set_object_info($str = "") +{ + session::set('objectinfo',$str); +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/functions_debug.inc b/trunk/gosa-core/include/functions_debug.inc new file mode 100644 index 000000000..9c30cec39 --- /dev/null +++ b/trunk/gosa-core/include/functions_debug.inc @@ -0,0 +1,422 @@ + +** Filename......: debuglib.php(s) +** Last changed..: 16. July 2003 +** License.......: Free to use. Postcardware ;) +** +************************************************* +** +** Functions in this library: +** +** print_a( array array [,int mode] ) +** prints arrays in a readable, understandable form. +** if mode is defined the function returns the output instead of +** printing it to the browser +** +** +** show_vars([int mode]) +** use this function on the bottom of your script to see all +** superglobals and global variables in your script in a nice +** formated way +** +** show_vars() without parameter shows $_GET, $_POST, $_SESSION, +** $_FILES and all global variables you've defined in your script +** +** show_vars(1) shows $_SERVER and $_ENV in addition +** +** +** +** print_result( result_handle ) +** prints a mysql_result set returned by mysql_query() as a table +** this function is work in progress! use at your own risk +** +** +** +** +** Happy debugging and feel free to email me your comments. +** +** +** +** History: (starting with version 0.5.3 at 2003-02-24) +** +** - added tooltips to the td's showing the type of keys and values (thanks Itomic) +** 2003-07-16 +** - pre() function now trims trailing tabs +************************************************/ + + +# This file must be the first include on your page. + +/* used for tracking of generation-time */ +{ + $MICROTIME_START = microtime(); + @$GLOBALS_initial_count = count($GLOBALS); +} + +/************************************************ +** print_a class and helper function +** prints out an array in a more readable way +** than print_r() +** +** based on the print_a() function from +** Stephan Pirson (Saibot) +************************************************/ + +class Print_a_class { + + # this can be changed to FALSE if you don't like the fancy string formatting + var $look_for_leading_tabs = TRUE; + + var $output; + var $iterations; + var $key_bg_color = '1E32C8'; + var $value_bg_color = 'DDDDEE'; + var $fontsize = '8pt'; + var $keyalign = 'center'; + var $fontfamily = 'Verdana'; + var $export_flag; + var $show_object_vars; + var $export_dumper_path = 'http://tools.www.mdc.xmc.de/print_a_dumper/print_a_dumper.php'; + # i'm still working on the dumper! don't use it now + # put the next line into the print_a_dumper.php file (optional) + # print htmlspecialchars( stripslashes ( $_POST['array'] ) ); + var $export_hash; + + function Print_a_class() { + $this->export_hash = uniqid(''); + } + + # recursive function! + function print_a($array, $iteration = FALSE, $key_bg_color = FALSE) { + $key_bg_color or $key_bg_color = $this->key_bg_color; + + # if print_a() was called with a fourth parameter (1 or 2) + # and you click on the table a window opens with only the output of print_a() in it + # 1 = serialized array + # 2 = normal print_a() display + + /* put the following code on the page defined with $export_dumper_path; + --->%---- snip --->%---- + + if($_GET['mode'] == 1) { + print htmlspecialchars( stripslashes ( $_POST['array'] ) ); + } elseif($_GET['mode'] == 2) { + print_a(unserialize( stripslashes($_POST['array'])) ); + } + + ---%<---- snip ---%<---- + */ + + if( !$iteration && isset($this->export_flag) ) { + $this->output .= ''; + } + + # lighten up the background color for the key td's =) + if( $iteration ) { + for($i=0; $i<6; $i+=2) { + $c = substr( $key_bg_color, $i, 2 ); + $c = hexdec( $c ); + ( $c += 15 ) > 255 and $c = 255; + isset($tmp_key_bg_color) or $tmp_key_bg_color = ''; + $tmp_key_bg_color .= sprintf( "%02X", $c ); + } + $key_bg_color = $tmp_key_bg_color; + } + + # build a single table ... may be nested + $this->output .= '
"; + } + } + $s_return .= ""; + // Attach a 13px-wide column (used as scrollbar space in body-table), + // but do this only if we are really using scrolltables. + if($this->i_entriesPerPage == 0) { + $s_return.= "\n"; + $s_return.= "\n
".$this->list_footer." 
"; + } else { + $s_return.= "\n"; + } + + $s_return.= "\n"; + return $s_return; + } + + function SetSummary($msg){ + $this->s_summary = $msg; + } + + function _generatePage(){ + + $s_value = ""; + $s_key = ""; + $s_return = ""; + + if($this->i_entriesPerPage == 0) { + // We need to construct a "body"-table that is width-of-scrollbar thinner than the "head"-table. + if(!$this->force_height || $this->fix_list_for_plugins) { + $s_return .= "\n"; + } + $s_return .= ""; + return $s_return; + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_gosaSupportDaemon.inc b/trunk/gosa-core/include/class_gosaSupportDaemon.inc new file mode 100644 index 000000000..3cf6e7da5 --- /dev/null +++ b/trunk/gosa-core/include/class_gosaSupportDaemon.inc @@ -0,0 +1,1927 @@ +s_host); + } + + public function get_port() + { + return($this->i_port); + } + + /*! \brief Creates a new gosaSupportDaemon object. + @param string Host The Host where the daemon is running on. + @param integer Port The port which the daemon use. + @param string Key The encryption string. + @param boolean Connect Directly connect to daemon socket. + @param float Timeout The timelimit for all socket actions. + */ + public function __construct($connect=TRUE,$timeout=10) + { + #FIXME: bad idea about referencing global variables from within classes + global $config; + + /* This should only be the case if we call this from setup. + __autoload() + */ + if(!is_object($config)) { return; } + + # load from config, store statically + if ($config->get_cfg_value("gosaSupportURI") != ""){ + + if ($this->s_host == ""){ + $this->s_host= preg_replace("/^.*@([^:]+):.*$/", "$1", $config->get_cfg_value("gosaSupportURI")); + $this->i_port= preg_replace("/^.*@[^:]+:(.*)$/", "$1", $config->get_cfg_value("gosaSupportURI")); + $this->s_encryption_key = preg_replace("/^(.*)@[^:]+:.*$/", "$1", $config->get_cfg_value("gosaSupportURI")); + } + $this->is_configured = TRUE; + $this->f_timeout = $timeout; + if($connect){ + $this->connect(); + } + } + } + + + public function is_configured() + { + return($this->is_configured); + } + + + /*! \brief Establish daemon connection. + @return boolean Returns true if the connection was succesfully established. + */ + public function connect() + { + if(!empty($this->s_host) && !empty($this->i_port)){ + $this->o_sock = new Socket_Client($this->s_host,$this->i_port,TRUE,$this->f_timeout); + if($this->o_sock->connected()){ + $this->o_sock->setEncryptionKey($this->s_encryption_key); + $this->is_connected = TRUE; + }else{ + $this->set_error($this->o_sock->get_error()); + $this->disconnect(); + new log("debug","gosaSupportDaemon::connect()", "Cannot connect to si-server", array(),$this->get_error()); + } + }else{ + $this->set_error(msgPool::cmdnotfound("gosaSupportURI",_("GOsa support daemon"))); + } + return($this->is_connected); + } + + + /*! \brief Returns TRUE whether we are connected or not + @return BOOLEAN Returns TRUE when connected else FALSE + */ + public function is_connected() + { + return($this->is_connected); + } + + + /*! \brief */ + public function get_hosts_with_module($mod) + { + $data = array("module_name" => $mod); + $res = $this->send_data("gosa_get_hosts_with_module",$this->s_host.":".$this->i_port,$data,TRUE); + $hosts = array(); + if(isset($res['XML'][0])){ + foreach($res['XML'][0] as $name => $data){ + if(preg_match("/^ANSWER[0-9]*$/",$name)){ + if(isset($data[0]['MAC'][0]['VALUE']) && $data[0]['MAC'][0]['VALUE'] != ""){ + $hosts[] = $data[0]['MAC'][0]['VALUE']; + } elseif(isset($data[0]['IP'][0]['VALUE']) && $data[0]['IP'][0]['VALUE'] != "") { + $hosts[] = $data[0]['IP'][0]['VALUE']; + } + } + } + } + + if(count($hosts) == 0){ + @DEBUG(DEBUG_SI, __LINE__, "".__CLASS__."::".__FUNCTION__."" , + __FILE__, "Found: 0", $info=$mod); + }else{ + @DEBUG(DEBUG_SI, __LINE__, "".__CLASS__."::".__FUNCTION__."" , + __FILE__, "Found: ".count($hosts)."", $info=$mod); + } + + return($hosts); + } + + + /*! \brief Disconnect from gosa daemon. + */ + public function disconnect() + { + $this->o_sock->close(); + $this->is_connected = FALSE; + } + + + /*! \brief Sets an error message, which can be returned with get_error(). + @param string The Error message, + */ + private function set_error($str) + { + /****** + Debug handling + ******/ + $debug = debug_backtrace(); + $file = __FILE__; + $function = __FUNCTION__; + $line = __LINE__; + $class = __CLASS__; + foreach($debug as $info){ + if(!in_array($info['function'],array("send_data","_send","set_error","connect"))){ + $file = $info['file']; + $line = $info['line']; + $class = get_class($this); + $function = $info['function']; + break; + } + } + @DEBUG(DEBUG_SI, $line, "".$class."::".$function."" , $file, "".htmlentities($str)."", $info=""); + + /****** + Set error string. + ******/ + + $this->b_error = TRUE; + $this->s_error = $str; + } + + + /*! \brief Sets an error message, which can be returned with get_error(). + @param string The Error message, + */ + private function reset_error() + { + $this->b_error = FALSE; + $this->s_error = ""; + } + + + /*! \brief Checks if an error occured. + @return boolean returns TRUE or FALSE, whether there is an error or not. + */ + public function is_error() + { + return($this->b_error); + } + + + /*! \brief Returns the last error. + @return Returns the last error. + */ + public function get_error() + { + $str = $this->s_error; + $ret = ""; + if(is_string($str)){ + $ret = $str; + }else{ + foreach($str as $msg){ + $ret .= $msg." "; + } + } + $ret = str_replace(" "," ",$ret); + return($ret); + } + + + public function FAI_get_kernels($release) + { + $xml_msg = + "". + "
gosa_get_available_kernel
". + "GOSA". + "GOSA". + "".$release."". + "
"; + + $ret = array(); + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + + /* Check if returned values represent a valid answer */ + if(isset($entries['XML']) && is_array($entries['XML'])){ + if(isset($entries['XML'])){ + $ret = $entries['XML']; + foreach($ret as $key => $entry){ + if(!preg_match("/^answer/i",$key)){ + unset($ret[$key]); + } + } + } + } + } + return($ret); + } + + + public function FAI_get_package_sections($release) + { + $xml_msg = "
gosa_query_packages_list
GOSAGOSA". + "". + "".$release."
"; + + $ret = array(); + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML']) && is_array($entries['XML'])){ + + /* Unset header tags */ + foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ + if(isset($entries['XML'][$type])){ + unset($entries['XML'][$type]); + } + } + $ret = $entries['XML']; + } + } + return($ret); + } + + + public function FAI_get_packages($release,$attrs,$package,$from=-1,$to=-1) + { + $ret = array(); + + /* Check Parameter */ + if(!is_array($attrs) || !count($attrs)){ + trigger_error("Second parameter must be an array. With at least one attribute name."); + return($ret); + } + + /* Check Parameter */ + if(!is_array($package)){ + trigger_error("Third parameter must be an array. With at least one attribute name."); + return($ret); + } + + /* Create list of attributes to fetch */ + $attr = ""; + foreach($attrs as $at){ + $attr.= ""; + } + + /* If no package is given, search for all */ + if(!count($package)) $package = array("%"); + + /* Create limit tag */ + if($from == -1){ + $limit =""; + }else{ + $limit = "".$from."".$to.""; + } + + /* Create list of attributes to fetch */ + $pkgs = ""; + foreach($package as $pkg){ + $pkgs .="like".$pkg.""; + } + + $xml_msg = "
gosa_query_packages_list
GOSAGOSA". + $attr. + " + ".$release." + OR + ".$pkgs." + + ". + $limit. + "
"; + + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML']) && is_array($entries['XML'])){ + + /* Check if returned values represent a valid answer */ + if(isset($entries['XML'])){ + + /* Unset header tags */ + foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ + if(isset($entries['XML'][$type])){ + unset($entries['XML'][$type]); + } + } + $ret = $entries['XML']; + } + } + } + return($ret); + + + } + + + public function FAI_get_server($name = "") + { + + $xml_msg = "
gosa_query_fai_server
GOSAGOSA
"; + $ret = array(); + if($this->connect()){ + + /* Check if returned values represent a valid answer */ + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML']) && is_array($entries['XML'])){ + + /* Unset header tags */ + foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ + if(isset($entries['XML'][$type])){ + unset($entries['XML'][$type]); + } + } + $ret = $entries['XML']; + } + } + return($ret); + } + + + public function FAI_get_classes($name) + { + $xml_msg = "
gosa_query_fai_release
GOSAGOSA". + "".$name."
";; + $ret = array(); + if($this->connect()){ + + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML']) && is_array($entries['XML'])){ + + /* Unset header tags */ + foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ + if(isset($entries['XML'][$type])){ + unset($entries['XML'][$type]); + } + } + $ret = $entries['XML']; + } + } + return($ret); + } + + + /*! \brief Returns an array containing all queued entries. + @return Array All queued entries as an array. + */ + public function get_queued_entries($event_types = array("*"),$from=-1,$to=-1,$sort="timestamp DESC") + { + $ret = array(); + + $tags = ""; + foreach($event_types as $type){ + $tags .= "".$type.""; + } + if(count($event_types) > 1){ + $tags = "or".$tags; + } + if(count($event_types)){ + $tags = "".$tags.""; + } + + $xml_msg = + " +
gosa_query_jobdb
+ GOSA + GOSA + ".$tags." + + ".$sort.""; + if($from != -1 && $to != -1){ + $xml_msg.= " + + ".$from." + ".$to." + "; + } + $xml_msg.= " +
"; + + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML']) && is_array($entries['XML'])){ + + /* Unset header tags */ + foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ + unset($entries['XML'][$type]); + } + $ret = $entries['XML']; + } + } + return($ret); + } + + + /*! \brief Checks if the given ids are used queue ids. + @param Array The ids we want to check.. + @return Array An array containing all ids as index and TRUE/FALSE as value. + */ + public function ids_exist($ids) + { + if(!is_array($ids)){ + trigger_error("Requires an array as parameter."); + return; + } + + $ret = array(); + + $xml_msg = " +
gosa_query_jobdb
+ GOSA + GOSA + + + or"; + foreach($ids as $id){ + $xml_msg .= " + eq + ".$id." + "; + } + $xml_msg .= " + +
"; + + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML']) && is_array($entries['XML'])){ + foreach($entries['XML'] as $entry){ + if(is_array($entry) && array_key_exists("ID",$entry)){ + $ret[] = $entry['ID']; + } + } + } + } + return($ret); + } + + + /*! \brief Returns an entry containing all requested ids. + @param Array The IDs of the entries we want to return. + @return Array Of the requested entries. + */ + public function get_entries_by_mac($macs) + { + if(!is_array($macs)){ + trigger_error("Requires an array as parameter."); + return; + } + + $ret = array(); + + $xml_msg = " +
gosa_query_jobdb
+ GOSA + GOSA + + + or"; + foreach($macs as $mac){ + $xml_msg .= " + eq + ".$mac." + "; + } + $xml_msg .= " + +
"; + + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML'])){ + foreach($entries['XML'] as $name => $entry){ + if(preg_match("/^ANSWER[0-9]*$/",$name)){ + $ret[$name] = $entry; + } + } + } + } + return($ret); + } + + + /*! \brief Returns an entry containing all requested ids. + @param Array The IDs of the entries we want to return. + @return Array Of the requested entries. + */ + public function get_entries_by_id($ids) + { + if(!is_array($ids)){ + trigger_error("Requires an array as parameter."); + return; + } + + $ret = array(); + + $xml_msg = " +
gosa_query_jobdb
+ GOSA + GOSA + + + or"; + foreach($ids as $id){ + $xml_msg .= " + eq + ".$id." + "; + } + $xml_msg .= " + +
"; + + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML'])){ + foreach($entries['XML'] as $name => $entry){ + if(preg_match("/^ANSWER[0-9]*$/",$name)){ + $ret[$name] = $entry; + } + } + } + } + return($ret); + } + + + /*! \brief Checks if the given id is in use. + @param Integer The ID of the entry. + @return Boolean TRUE if entry exists. + */ + public function id_exists($id) + { + if(!is_numeric($id)){ + trigger_error("Requires an integer as parameter."); + return; + } + + + $xml_msg = " +
gosa_query_jobdb
+ GOSA + GOSA + + + + eq + ".$id." + + + +
"; + + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if( isset($entries['XML']['HEADER']) && + $entries['XML']['HEADER']=="answer" && + isset($entries['XML']['ANSWER1'])){ + return(TRUE); + } + } + return(FALSE); + } + + + /*! \brief Returns an entry from the gosaSupportQueue + @param Integer The ID of the entry we want to return. + @return Array Of the requested entry. + */ + public function get_entry_by_id($id) + { + if(!is_numeric($id)){ + trigger_error("Requires an integer as parameter."); + return; + } + + $ret = array(); + $xml_msg = " +
gosa_query_jobdb
+ GOSA + GOSA + + + + eq + ".$id." + + + +
"; + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if( isset($entries['XML']['HEADER']) && + $entries['XML']['HEADER']=="answer" && + isset($entries['XML']['ANSWER1'])){ + $ret = $entries['XML']['ANSWER1']; + } + } + return($ret); + } + + + /*! \brief Removes a set of entries from the GOsa support queue. + @param Array The IDs to remove. + @return Boolean True on success. + */ + public function remove_entries($ids) + { + if(!is_array($ids)){ + trigger_error("Requires an array as parameter."); + return; + } + + + $ret = array(); + + $xml_msg = " +
gosa_delete_jobdb_entry
+ GOSA + GOSA + + + or"; + foreach($ids as $id){ + $xml_msg .= " + eq + ".$id." + "; + } + $xml_msg .= " + +
"; + + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML']) || isset($entries['COUNT'])){ + new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::remove_entries()", $ids,"SUCCESS"); + return(TRUE); + }else{ + new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::remove_entries()", $ids,"FAILED ".$this->get_error()); + } + } + return(FALSE); + } + + + + /*! \brief Removes an entry from the GOsa support queue. + @param Integer The ID of the entry we want to remove. + @return Boolean True on success. + */ + public function remove_entry($id) + { + return($this->remove_entries(array($id))); + } + + + /*! \brief Parses the given xml string into an array + @param String XML string + @return Array Returns an array containing the xml structure. + */ + private function xml_to_array($xml,$alternative_method = FALSE) + { + $params = array(); + $level = array(); + $parser = xml_parser_create_ns(); + xml_parse_into_struct($parser, $xml, $vals, $index); + + $err_id = xml_get_error_code($parser); + if($err_id){ + xml_parser_free($parser); + }else{ + xml_parser_free($parser); + + if($this->use_alternative_xml_parse_method) { + $params = $this->build_xml_array($vals); + } else { + + foreach ($vals as $xml_elem) { + if ($xml_elem['type'] == 'open') { + if (array_key_exists('attributes',$xml_elem)) { + list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']); + } else { + $level[$xml_elem['level']] = $xml_elem['tag']; + } + } + if ($xml_elem['type'] == 'complete') { + + $start_level = 1; + $test2 = &$params; + while($start_level < $xml_elem['level']) { + $test2 = &$test2[$level[$start_level]]; + $start_level++; + } + + /* Save tag attributes too. + e.g. + */ + if(isset($xml_elem['attributes'])){ + foreach($xml_elem['attributes'] as $name => $value){ + $test2['ATTRIBUTES'][$name] = $value; + } + } + + if(!isset($test2[$xml_elem['tag']])){ + if(isset($xml_elem['value'])){ + $test2[$xml_elem['tag']] = $xml_elem['value']; + } + }else{ + if(!is_array($test2[$xml_elem['tag']])){ + $test2[$xml_elem['tag']] = array($test2[$xml_elem['tag']]); + } + $test2[$xml_elem['tag']][] = $xml_elem['value']; + } + } + } + } + } + + if(!isset($params['XML'])){ + if (!array_key_exists('XML', $params)){ + $this->set_error(_("Cannot not parse XML!")); + } + $params = array("COUNT" => 0); + } + + return($params); + } + + + function build_xml_array(&$vals) + { + $array = array(); + while(count($vals)){ + $key = key($vals); + $val = $vals[$key]; + unset($vals[$key]); + if($val['type'] == "close"){ + return($array); + }elseif($val['type']=="open"){ + $array[$val['tag']][] = $this->build_xml_array($vals); + }elseif($val['type'] != "cdata"){ + $data = array("VALUE" => "","ATTRIBUTES" => ""); + foreach(array("value" => "VALUE", "attributes" => "ATTRIBUTES") as $name => $attr){ + if(isset($val[$name])){ + $data[$attr] = $val[$name]; + } + } + $array[$val['tag']][] = $data; + }else{ +#print_a($val); + } + } + return($array); + } + + + + + + + /*! \brief Updates an entry with a set of new values, + @param Integer The ID of the entry, we want to update. + @param Array The variables to update. + @return Boolean Returns TRUE on success. + */ + public function update_entries($ids,$data) + { + if(!is_array($ids)){ + trigger_error("Requires an array as first parameter."); + return; + } + + if(!is_array($data)){ + trigger_error("Requires an array as second parameter."); + return; + } + + $attr = ""; + foreach($data as $key => $value){ + $key = strtolower($key); + if(is_array($value)){ + foreach($value as $sub_value){ + $attr.= "<$key>".strtolower($sub_value)."\n"; + } + }else{ + $attr.= "<$key>".strtolower($value)."\n"; + } + } + + $xml_msg = " +
gosa_update_status_jobdb_entry
+ GOSA + GOSA + + + or"; + foreach($ids as $id){ + $xml_msg .= " + eq + ".$id." + "; + } + $xml_msg .= " + + + ".$attr." + +
"; + + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if(isset($entries['XML'])){ + if(isset($entries['XML']['ERROR_STRING'])) { + $this->set_error($entries['XML']['ERROR_STRING']); + new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::update_entries()", $ids,"FAILED setting (".$attr.") error was ".$this->get_error()); + return(FALSE); + } + new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::update_entries()", $ids,"SUCCESS"); + return(TRUE); + } + } + return(FALSE); + } + + + /*! \brief Returns the number of currently queued objects. + @return Integer + */ + public function number_of_queued_entries($event_types) + { + $tags = ""; + foreach($event_types as $type){ + $tags .= "".$type.""; + } + if(count($event_types) > 1){ + $tags = "or".$tags; + } + if(count($event_types)){ + $tags = "".$tags.""; + } + + + $xml_msg = + "". + "
gosa_query_jobdb
". + "GOSA". + "GOSA". + "". + $tags. + "
"; + + $xml_msg ="
gosa_count_jobdb
GOSAGOSA
"; + $this->connect(); + if($this->connect()){ + $entries = $this->_send($xml_msg,TRUE); + if($this->o_sock->is_error()){ + $this->set_error($this->o_sock->get_error()); + return(0); + } + if(isset($entries['XML'])){ + return($entries['XML']['COUNT']); + } + } + return(-1); + } + + + public function send_data($header, $to, $data= array(), $answer_expected = FALSE) + { + $xml_message= ""; + + /* Prepare data */ + foreach ($data as $key => $value){ + if(is_array($value)){ + foreach($value as $sub_value){ + $xml_message.= "<$key>$sub_value"; + } + }else{ + $xml_message.= "<$key>$value"; + } + } + + /* Multiple targets? */ + if (!is_array($to)){ + $to_targets= array($to); + } else { + $to_targets= $to; + } + + /* Build target strings */ + $target =""; + foreach($to_targets as $to){ + $target.= "$to"; + } + + return $this->_send("
$header
GOSA$target".$xml_message."
",$answer_expected); + } + + + /* Allows simply appending a new DaemonEvent + */ + public function append($event, $skip_add_mac = FALSE) + { + if(!($event instanceof DaemonEvent)){ + return(FALSE); + } + + + /* Add to queue if new + */ + if($event->is_new()){ + + $request_answer = FALSE; + if($event->get_type() == SCHEDULED_EVENT){ + $action = $event->get_schedule_action(); + }elseif($event->get_type() == TRIGGERED_EVENT){ + $action = $event->get_trigger_action(); + }else{ + trigger_error("Unknown type of queue event given."); + return(FALSE); + } + + /* Get event informations, like targets.. + */ + $targets = $event->get_targets(); + $data = $event->save(); + + /* Append an entry for each target + */ + foreach($targets as $target){ + if(!$skip_add_mac){ + $data['macaddress'] = $target; + } + $this->send_data($action,$target,$data,$request_answer); + + if($this->is_error()){ + return(FALSE); + } + } + return(TRUE); + }else{ + + /* Updated edited entry. + */ + $id = $event->get_id(); + $data = $event->save(); + return($this->update_entries(array($id),$data)); + } + + return(FALSE); + } + + + /*! \brief Returns an array containing all queued entries. + @return Array All queued entries as an array. + */ + public function _send($data, $answer_expected= FALSE) + { + + $ret = array(); + if(!$this->connect()){ + return($ret); + } + + $this->reset_error(); + + /****** + Debug handling + ******/ + $debug = debug_backtrace(); + $file = __FILE__; + $function = __FUNCTION__; + $line = __LINE__; + $class = __CLASS__; + foreach($debug as $info){ + if(!in_array($info['function'],array("send_data","_send"))){ + $file = $info['file']; + $line = $info['line']; + $class = get_class($this); + $function = $info['function']; + break; + } + } + @DEBUG(DEBUG_SI, $line, "".$class."::".$function."" , $file, "".htmlentities($data)."", $info=""); + + + /******* + Start sending data + *******/ + if($this->connect()){ + $this->o_sock->write($data); + if ($answer_expected){ + $str = trim($this->o_sock->read()); + + /* Check if something went wrong while reading */ + if($this->o_sock->is_error()){ + $this->set_error($this->o_sock->get_error()); + return($ret); + } + + $entries = $this->xml_to_array($str); + if(isset($entries['XML']) && is_array($entries['XML'])){ + $ret = $entries; + if($this->use_alternative_xml_parse_method) { + if(isset($entries['XML'][0]['ERROR'][0]['VALUE']) && $entries['XML'][0]['ERROR'][0]['VALUE'] == "1"){ + $this->set_error($entries['XML'][0]['ERROR_STRING'][0]['VALUE']); + new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", + array($data=>$data),"FAILED ".$this->get_error()); + } + }else{ + if(isset($entries['XML']['ERROR_STRING'])) { + $this->set_error($entries['XML']['ERROR_STRING']); + new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", + array($data=>$data),"FAILED ".$this->get_error()); + }elseif(isset($entries['XML']['ERROR'])){ + $this->set_error($entries['XML']['ERROR']); + new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", + array($data=>$data),"FAILED ".$this->get_error()); + } + } + new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", + array($data=>$data),"SUCCESS"); + } + }else{ + new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", + array($data=>$data),"Fire & forget, not result.! ".$this->get_error()); + } + } + return($ret); + } + + + static function send($header, $to, $data= array(), $answer_expected = FALSE) + { + $xml_message= ""; + + /* Get communication object */ + $d= new gosaSupportDaemon(TRUE,10); + + /* Prepare data */ + foreach ($data as $key => $value){ + if(is_array($value)){ + foreach($value as $sub_val){ + $xml_message.= "<$key>$sub_val"; + } + }else{ + $xml_message.= "<$key>$value"; + } + } + + /* Multiple targets? */ + if (!is_array($to)){ + $to_targets= array($to); + } else { + $to_targets= $to; + } + + /* Build target strings */ + $target =""; + foreach($to_targets as $to){ + $target.= "$to"; + } + + return $d->_send("
$header
GOSA$target".$xml_message."
",$answer_expected); + } + + + /*! \brief Removes all jobs from the queue that are tiggered with a specific macAddress. + @param String $mac The mac address for which we want to remove all jobs. + */ + function clean_queue_from_mac($mac) + { + global $config; + + /* First of all we have to check which jobs are startet + * for $mac + */ + $xml_msg ="
gosa_query_jobdb
GOSAGOSA".$mac."
"; + + new log("debug","DaemonEvent ", "gosaSupportDaemon::clean_queue_from_mac()", array($mac => $mac)," start cleaning."); + + $data = $this->_send($xml_msg,TRUE); + if(is_array($data) && isset($data['XML'])){ + $already_aborted = FALSE; + foreach($data['XML'] as $name => $entry){ + if(preg_match("/answer[0-9]*/i",$name)){ + $entry['STATUS'] = strtoupper($entry['STATUS']); + switch($entry['STATUS']){ + + case 'PROCESSING' : + + /* Send abort event, but only once + */ + if($already_aborted){ + break; + }elseif(class_available("DaemonEvent_faireboot")){ + $already_aborted = TRUE; + $tmp = new DaemonEvent_faireboot($config); + $tmp->add_targets(array($mac)); + $tmp->set_type(TRIGGERED_EVENT); + if(!$this->append($tmp)){ + msg_dialog::display(_("Error"), sprintf(_("Cannot send abort event for entry %s!"),$entry['ID']) , ERROR_DIALOG); + new log("debug","DaemonEvent ", "gosaSupportDaemon::clean_queue_from_mac()", array($mac => $mac), + "FAILED, could not send 'DaemonEvent_faireboot' for entry ID (".$entry['ID'].") - ".$this->get_error()); + }else{ + new log("debug","DaemonEvent ", "gosaSupportDaemon::clean_queue_from_mac()", array($mac => $mac), + "SUCCESS, send 'DaemonEvent_faireboot' for entry ID (".$entry['ID'].")"); + } + ;break; + }else{ + /* Couldn't find abort event, just remove entry */ + } + + case 'WAITING': + case 'ERROR': + default : + + /* Simply remove entries from queue. + * Failed or waiting events, can be removed without any trouble. + */ + if(!$this->remove_entries(array($entry['ID']))){ + msg_dialog::display(_("Error"), sprintf(_("Cannot remove entry %s!"),$entry['ID']) , ERROR_DIALOG); + } + ;break; + } + + } + } + } + } + + + static function ping($target) + { + if (tests::is_mac($target)){ + /* Get communication object */ + $d= new gosaSupportDaemon(TRUE,0.5); + $answer= $d->_send("
gosa_ping
GOSA$target
", TRUE); + return (count($answer) ? TRUE:FALSE); + } + return (FALSE); + } + + + + /*! \brief Returns a list of all configured principals. + (Uses the GOsa support daemon instead of the ldap database.) + @return Array A list containing the names of all configured principals. + */ + public function krb5_list_principals($server) + { + $res = array(); + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_list_principals
". + "GOSA". + "".$server."". + "
"; + + $tmp = $this->_send($xml_msg,TRUE); + if(isset($tmp['XML']['PRINCIPAL'])){ + return($tmp['XML']['PRINCIPAL']); + }else{ + return($res); + } + } + + + /*! \brief Returns the configuration settings for a given principal name. + (Uses the GOsa support daemon instead of the ldap database.) + @pram String The name of the requested principal. (e.g. peter@EXAMPLE.DE) + @return Array A list containing the names of all configured principals. + */ + public function krb5_get_principal($server,$name) + { + $ret = array(); + + /* Check if the given name is a valid request value + */ + if(!is_string($name) || empty($name)){ + trigger_error("The given principal name is not of type string or it is empty."); + return($ret); + } + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_get_principal
". + "".$name."". + "GOSA". + "".$server."". + "
"; + + $res = $this->_send($xml_msg,TRUE); + if(isset($res['XML'])){ + return($res['XML']); + }else{ + return($ret); + } + } + + + /*! \brief Creates a given principal with a set of configuration settings. + For a list of configurable attributes have a look at 'krb5_get_principal()'. + (Uses the GOsa support daemon instead of the ldap database.) + @pram String The name of the principal to update. (e.g. peter@EXAMPLE.DE) + @return Boolean TRUE on success else FALSE. + */ + public function krb5_add_principal($server,$name,$values) + { + $ret = FALSE; + + /* Check if the given name is a valid request value + */ + if(!is_string($name) || empty($name)){ + trigger_error("The given principal name is not of type string or it is empty."); + return($ret); + } + if(!is_array($values)){ + trigger_error("No valid update settings given. The parameter must be of type array and must contain at least one entry"); + return($ret); + } + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + $attrs = ""; + foreach($values as $key => $value){ + if(empty($key) || is_numeric($key)){ + trigger_error("Invalid configuration attribute given '".$key."=".$value."'."); + return($ret); + } + $key = strtolower($key); + if(is_array($value)){ + foreach($value as $val){ + $attrs.= "<$key>$val\n"; + } + }else{ + $attrs.= "<$key>$value\n"; + } + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_create_principal
". + "".$name."". + $attrs. + "GOSA". + "".$server."". + "
"; + + return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); + } + + + function krb5_ramdomize_key($server,$name) + { + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_randomize_key
". + "".$name."". + "GOSA". + "".$server."". + "
"; + + return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); + } + + + + /*! \brief Updates a given principal with a set of configuration settings. + For a list of configurable attributes have a look at 'krb5_get_principal()'. + (Uses the GOsa support daemon instead of the ldap database.) + @pram String The name of the principal to update. (e.g. peter@EXAMPLE.DE) + @return Boolean TRUE on success else FALSE. + */ + public function krb5_set_principal($server,$name,$values) + { + $ret = FALSE; + + /* Check if the given name is a valid request value + */ + if(!is_string($name) || empty($name)){ + trigger_error("The given principal name is not of type string or it is empty."); + return($ret); + } + if(!is_array($values) || !count($values)){ + trigger_error("No valid update settings given. The parameter must be of type array and must contain at least one entry"); + return($ret); + } + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + $attrs = ""; + foreach($values as $key => $value){ + if(empty($key) || is_numeric($key)){ + trigger_error("Invalid configuration attribute given '".$key."=".$value."'."); + return($ret); + } + $key = strtolower($key); + if(is_array($value)){ + foreach($value as $val){ + $attrs.= "<$key>$val\n"; + } + }else{ + $attrs.= "<$key>$value\n"; + } + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_modify_principal
". + "".$name."". + $attrs. + "GOSA". + "".$server."". + "
"; + + return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); + } + + + /*! \brief Removes the given principal. + (Uses the GOsa support daemon instead of the ldap database.) + @pram String The name of the principal. (e.g. peter@EXAMPLE.DE) + @return Boollean TRUE on success else FALSE + */ + public function krb5_del_principal($server,$name) + { + $ret = FALSE; + + /* Check if the given name is a valid request value + */ + if(!is_string($name) || empty($name)){ + trigger_error("The given principal name is not of type string or it is empty."); + return($ret); + } + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_del_principal
". + "".$name."". + "GOSA". + "".$server."". + "
"; + + return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); + } + + + /*! \brief Returns a list of configured password policies. + (Uses the GOsa support daemon instead of the ldap database.) + @return Array A list of all configured password policies. + */ + public function krb5_list_policies($server) + { + $res = array(); + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_list_policies
". + "GOSA". + "".$server."". + "
"; + + $res = $this->_send($xml_msg,TRUE); + + /* Check if there are results for POLICY + */ + if(isset($res['XML']['POLICY'])){ + + /* Ensure that we return an array + */ + $tmp = $res['XML']['POLICY']; + if(!is_array($tmp)){ + $tmp = array($tmp); + } + return($tmp); + }else{ + return(array()); + } + } + + + /*! \brief Returns a list of configured password policies. + (Uses the GOsa support daemon instead of the ldap database.) + @return Array The policy settings for the given policy name. + */ + public function krb5_get_policy($server,$name) + { + $ret = array(); + + /* Check if the given name is a valid request value + */ + if(!is_string($name) || empty($name)){ + trigger_error("The given policy name is not of type string or it is empty."); + return($ret); + } + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_get_policy
". + "".$name."". + "GOSA". + "".$server."". + "
"; + + /* Possible attributes */ + $attrs = array("MASK","POLICY","PW_HISTORY_NUM","PW_MAX_LIFE", + "PW_MIN_CLASSES","PW_MIN_LENGTH","PW_MIN_LIFE","POLICY_REFCNT"); + + + $tmp = $this->_send($xml_msg,TRUE); + if(isset($tmp['XML'])){ + foreach($attrs as $attr){ + if(isset($tmp['XML'][$attr])){ + $ret[$attr] = $tmp['XML'][$attr]; + }else{ + $ret[$attr] = ""; + } + } + } + return($ret); + } + + + /*! \brief Creates a new policy with a given set of configuration settings. + For a list of configurable attributes have a look at 'krb5_get_policy()'. + (Uses the GOsa support daemon instead of the ldap database.) + @pram String The name of the policy to update. + @pram Array The attributes to update + @return Boolean TRUE on success else FALSE. + */ + public function krb5_add_policy($server,$name,$values) + { + $ret = FALSE; + + /* Check if the given name is a valid request value + */ + if(!is_string($name) || empty($name)){ + trigger_error("The given policy name is not of type string or it is empty."); + return($ret); + } + if(!is_array($values) || !count($values)){ + trigger_error("No valid policy settings given. The parameter must be of type array and must contain at least one entry"); + return($ret); + } + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + + /* Transform array into + */ + $attrs = ""; + foreach($values as $id => $value){ + if(empty($id) || is_numeric($id)){ + trigger_error("Invalid policy configuration attribute given '".$id."=".$value."'."); + return($ret); + } + $id = strtolower($id); + $attrs.= "<$id>$value\n"; + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_create_policy
". + "".$name."". + $attrs. + "GOSA". + "".$server."". + "
"; + + return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); + } + + + /*! \brief Updates a given policy with a set of configuration settings. + For a list of configurable attributes have a look at 'krb5_get_policy()'. + (Uses the GOsa support daemon instead of the ldap database.) + @pram String The name of the policy to update. + @return Boolean TRUE on success else FALSE. + */ + public function krb5_set_policy($server,$name,$values) + { + $ret = FALSE; + + /* Check if the given name is a valid request value + */ + if(!is_string($name) || empty($name)){ + trigger_error("The given policy name is not of type string or it is empty."); + return($ret); + } + if(!is_array($values) || !count($values)){ + trigger_error("No valid policy settings given. The parameter must be of type array and must contain at least one entry"); + return($ret); + } + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + /* Transform array into + */ + $attrs = ""; + foreach($values as $id => $value){ + if(preg_match("/^policy$/i",$id)) continue; + if(empty($id) || is_numeric($id)){ + trigger_error("Invalid policy configuration attribute given '".$id."=".$value."'."); + return($ret); + } + $id = strtolower($id); + $attrs.= "<$id>$value\n"; + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_modify_policy
". + "".$name."". + $attrs. + "GOSA". + "".$server."". + "
"; + + return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); + } + + + /*! \brief Removes the given password policy. + (Uses the GOsa support daemon instead of the ldap database.) + @return Boolean TRUE on success else FALSE + */ + public function krb5_del_policy($server,$name) + { + $ret = FALSE; + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + /* Check if the given name is a valid request value + */ + if(!is_string($name) || empty($name)){ + trigger_error("The given policy name is not of type string or it is empty."); + return($ret); + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_del_policy
". + "".$name."". + "GOSA". + "".$server."". + "
"; + return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); + } + + + /*! \brief Sets the password of for the given principal. + (Uses the GOsa support daemon instead of the ldap database.) + @param String The servers mac + @param String The principals name + @param String $the new password. + @return Boolean TRUE on success else FALSE + */ + public function krb5_set_password($server,$name,$password) + { + $ret = FALSE; + + /* Check if the given server is a valid mac address + */ + if(!tests::is_mac($server)){ + trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); + return($ret); + } + + /* Check if the given name is a valid request value + */ + if(!is_string($name) || empty($name)){ + trigger_error("The given principal name is not of type string or it is empty."); + return($ret); + } + + /* Prepare request event + */ + $xml_msg = + "". + "
gosa_krb5_set_password
". + "".$name."". + "".$password."". + "GOSA". + "".$server."". + "
"; + return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); + } + + + /*! \brief Returns log file informations for a given mac address + @param $mac The mac address to fetch logs for. + @retrun Array A Multidimensional array containing log infos. + MAC_00_01_6C_9D_B9_FA['install_20080311_090900'][0]=debconf.log + MAC_00_01_6C_9D_B9_FA['install_20080311_090900'][1]=syslog.log + install_20080313_144450 ... + */ + public function get_log_info_for_mac($mac) + { + $xml_msg = " + +
gosa_show_log_by_mac
+ GOSA + GOSA + ".$mac." +
"; + + $res = $this->_send($xml_msg,TRUE); + $ret = array(); + if(isset($res['XML'])){ + + /* Filter all entry that look like this + MAC_00_01_6C_9D_B9_FA + */ + foreach($res['XML'] as $name => $entry){ + if(preg_match("/^MAC/",$name)){ + + /* Get list of available log files + */ + if(!is_array($entry)){ + $entry = array($entry); + } + foreach($entry as $log_date){ + $xml_msg2 = " +
gosa_show_log_files_by_date_and_mac
+ GOSA + GOSA + ".$log_date." + ".$mac." +
"; + + $ret[$mac][$log_date] = array(); + $res = $this->_send($xml_msg2,TRUE); + $ret[$mac][$log_date]['DATE_STR'] = $log_date; + $ret[$mac][$log_date]['REAL_DATE'] = strtotime(preg_replace("/[^0-9]*/","",$log_date)); + if(isset($res['XML']['SHOW_LOG_FILES_BY_DATE_AND_MAC'])){ + $ret[$mac][$log_date]['FILES'] = $res['XML']['SHOW_LOG_FILES_BY_DATE_AND_MAC']; + } + } + } + } + } + return($ret); + } + + public function get_log_file($mac,$date,$file) + { + $xml_msg =" + +
gosa_get_log_file_by_date_and_mac
+ GOSA + GOSA + ".$date." + ".$mac." + ".$file." +
"; + + $res = $this->_send($xml_msg,TRUE); + if(isset($res['XML'][strtoupper($file)])){ + return(base64_decode($res['XML'][strtoupper($file)])); + } + return(""); + } + + + + + + /***************** + * DAK - Functions + *****************/ + + /*! \brief Returns all currenlty queued entries for a given DAK repository + @param ... + @return Array All queued entries. + */ + public function DAK_keyring_entries($server) + { + /* Ensure that we send the event to a valid mac address + */ + if(!is_string($server) || !tests::is_mac($server)){ + trigger_error("No valid mac address given '".$server."'."); + return; + } + + /* Create query + */ + $xml_msg = " +
gosa_get_dak_keyring
+ ".$server." + GOSA +
"; + + $res = $this->_send($xml_msg,TRUE); + + /* Check if there are results for POLICY + */ + if(isset($res['XML'])){ + $ret = array(); + foreach($res['XML'] as $key => $entry){ + if(preg_match("/^ANSWER/",$key)){ + $ret[] = $entry; + } + } + return($ret); + }else{ + return(array()); + } + } + + + /*! \brief Imports the given key into the specified keyring (Servers mac address) + @param String The servers mac address + @param String The gpg key. + @return Boolean TRUE on success else FALSE + */ + public function DAK_import_key($server,$key) + { + /* Ensure that we send the event to a valid mac address + */ + if(!is_string($server) || !tests::is_mac($server)){ + trigger_error("No valid mac address given '".$server."'."); + return; + } + + /* Check if there is some cleanup required before importing the key. + There may be some Header lines like: + -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.6 (GNU/Linux) + */ + if(preg_match("/BEGIN PGP PUBLIC KEY BLOCK/",$key)){ + + /* Remove header */ + $key = preg_replace("/^.*\n\n/sim","",$key); + /* Remove footer */ + $key = preg_replace("/-----.*$/sim","",$key); + }elseif (!preg_match('%^[a-zA-Z0-9/+]*={0,2}$%', $key)) { + + /* Encode key if it is raw. + */ + $key = base64_encode($key); + } + + /* Create query + */ + $xml_msg = " +
gosa_import_dak_key
+ ".$server." + ".$key." + GOSA +
"; + + $res = $this->_send($xml_msg,TRUE); + return($this->is_error()); + } + + + /*! \brief Removes a key from the keyring on the given server. + @param String The servers mac address + @param String The gpg key uid. + @return Boolean TRUE on success else FALSE + */ + public function DAK_remove_key($server,$key) + { + /* Ensure that we send the event to a valid mac address + */ + if(!is_string($server) || !tests::is_mac($server)){ + trigger_error("No valid mac address given '".$server."'."); + return; + } + + /* Create query + */ + $xml_msg = " +
gosa_remove_dak_key
+ ".$server." + ".$key." + GOSA +
"; + + $res = $this->_send($xml_msg,TRUE); + return($this->is_error()); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_ldap.inc b/trunk/gosa-core/include/class_ldap.inc new file mode 100644 index 000000000..f3baf144d --- /dev/null +++ b/trunk/gosa-core/include/class_ldap.inc @@ -0,0 +1,1382 @@ + + * Copyright (C) 1998 Eric Kilfoil + * + * ID: $$Id$$ + * + * 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 + */ + +define("ALREADY_EXISTING_ENTRY",-10001); +define("UNKNOWN_TOKEN_IN_LDIF_FILE",-10002); +define("NO_FILE_UPLOADED",10003); +define("INSERT_OK",10000); +define("SPECIALS_OVERRIDE", TRUE); + +class LDAP{ + + var $hascon =false; + var $reconnect=false; + var $tls = false; + var $cid; + var $hasres = array(); + var $sr = array(); + var $re = array(); + var $basedn =""; + var $start = array(); // 0 if we are fetching the first entry, otherwise 1 + var $error = ""; // Any error messages to be returned can be put here + var $srp = 0; + var $objectClasses = array(); // Information read from slapd.oc.conf + var $binddn = ""; + var $bindpw = ""; + var $hostname = ""; + var $follow_referral = FALSE; + var $referrals= array(); + var $max_ldap_query_time = 0; // 0, empty or negative values will disable this check + + function LDAP($binddn,$bindpw, $hostname, $follow_referral= FALSE, $tls= FALSE) + { + global $config; + $this->follow_referral= $follow_referral; + $this->tls=$tls; + $this->binddn=LDAP::convert($binddn); + + $this->bindpw=$bindpw; + $this->hostname=$hostname; + + /* Check if MAX_LDAP_QUERY_TIME is defined */ + if(is_object($config) && $config->get_cfg_value("ldapMaxQueryTime") != ""){ + $str = $config->get_cfg_value("ldapMaxQueryTime"); + $this->max_ldap_query_time = (float)($str); + } + + $this->connect(); + } + + + function getSearchResource() + { + $this->sr[$this->srp]= NULL; + $this->start[$this->srp]= 0; + $this->hasres[$this->srp]= false; + return $this->srp++; + } + + + /* Function to replace all problematic characters inside a DN by \001XX, where + \001 is decoded to chr(1) [ctrl+a]. It is not impossible, but very unlikely + that this character is inside a DN. + + Currently used codes: + , => CO + \2C => CO + ( => OB + ) => CB + / => SL */ + static function convert($dn) + { + if (SPECIALS_OVERRIDE == TRUE){ + $tmp= preg_replace(array("/\\\\,/", "/\\\\2C/", "/\(/", "/\)/", "/\//"), + array("\001CO", "\001CO", "\001OB", "\001CB", "\001SL"), + $dn); + return (preg_replace('/,\s+/', ',', $tmp)); + } else { + return ($dn); + } + } + + + /* Function to fix all problematic characters inside a DN by replacing \001XX + codes to their original values. See "convert" for mor information. + ',' characters are always expanded to \, (not \2C), since all tested LDAP + servers seem to take it the correct way. */ + static function fix($dn) + { + if (SPECIALS_OVERRIDE == TRUE){ + return (preg_replace(array("/\001CO/", "/\001OB/", "/\001CB/", "/\001SL/"), + array("\,", "(", ")", "/"), + $dn)); + } else { + return ($dn); + } + } + + /* Function to fix problematic characters in DN's that are used for search + requests. I.e. member=.... */ + static function prepare4filter($dn) + { + return normalizeLdap(str_replace('\\\\', '\\\\\\', LDAP::fix($dn))); + } + + + function connect() + { + $this->hascon=false; + $this->reconnect=false; + if ($this->cid= @ldap_connect($this->hostname)) { + @ldap_set_option($this->cid, LDAP_OPT_PROTOCOL_VERSION, 3); + if (function_exists("ldap_set_rebind_proc") && $this->follow_referral) { + @ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1); + @ldap_set_rebind_proc($this->cid, array(&$this, "rebind")); + } + if (function_exists("ldap_start_tls") && $this->tls){ + @ldap_start_tls($this->cid); + } + + $this->error = "No Error"; + if ($bid = @ldap_bind($this->cid, LDAP::fix($this->binddn), $this->bindpw)) { + $this->error = "Success"; + $this->hascon=true; + } else { + if ($this->reconnect){ + if ($this->error != "Success"){ + $this->error = "Could not rebind to " . $this->binddn; + } + } else { + $this->error = "Could not bind to " . $this->binddn; + } + } + } else { + $this->error = "Could not connect to LDAP server"; + } + } + + function rebind($ldap, $referral) + { + $credentials= $this->get_credentials($referral); + if (@ldap_bind($ldap, LDAP::fix($credentials['ADMINDN']), $credentials['ADMINPASSWORD'])) { + $this->error = "Success"; + $this->hascon=true; + $this->reconnect= true; + return (0); + } else { + $this->error = "Could not bind to " . $credentials['ADMINDN']; + return NULL; + } + } + + function reconnect() + { + if ($this->reconnect){ + @ldap_unbind($this->cid); + $this->cid = NULL; + } + } + + function unbind() + { + @ldap_unbind($this->cid); + $this->cid = NULL; + } + + function disconnect() + { + if($this->hascon){ + @ldap_close($this->cid); + $this->hascon=false; + } + } + + function cd($dir) + { + if ($dir == ".."){ + $this->basedn = $this->getParentDir(); + } else { + $this->basedn = LDAP::convert($dir); + } + } + + function getParentDir($basedn = "") + { + if ($basedn==""){ + $basedn = $this->basedn; + } else { + $basedn = LDAP::convert($this->basedn); + } + return(ereg_replace("[^,]*[,]*[ ]*(.*)", "\\1", $basedn)); + } + + + function search($srp, $filter, $attrs= array()) + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + + $start = microtime(); + $this->clearResult($srp); + $this->sr[$srp] = @ldap_search($this->cid, LDAP::fix($this->basedn), $filter, $attrs); + $this->error = @ldap_error($this->cid); + $this->resetResult($srp); + $this->hasres[$srp]=true; + + /* Check if query took longer as specified in max_ldap_query_time */ + if($this->max_ldap_query_time){ + $diff = get_MicroTimeDiff($start,microtime()); + if($diff > $this->max_ldap_query_time){ + msg_dialog::display(_("Performance warning"), sprintf(_("LDAP performance is poor: last query took about %.2fs!"), $diff), WARNING_DIALOG); + } + } + + $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=search('".LDAP::fix($this->basedn)."', '$filter')"); + return($this->sr[$srp]); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function ls($srp, $filter = "(objectclass=*)", $basedn = "",$attrs = array("*")) + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + + $this->clearResult($srp); + if ($basedn == "") + $basedn = $this->basedn; + else + $basedn= LDAP::convert($basedn); + + $start = microtime(); + $this->sr[$srp] = @ldap_list($this->cid, LDAP::fix($basedn), $filter,$attrs); + $this->error = @ldap_error($this->cid); + $this->resetResult($srp); + $this->hasres[$srp]=true; + + /* Check if query took longer as specified in max_ldap_query_time */ + if($this->max_ldap_query_time){ + $diff = get_MicroTimeDiff($start,microtime()); + if($diff > $this->max_ldap_query_time){ + msg_dialog::display(_("Performance warning"), sprintf(_("LDAP performance is poor: last query took about %.2fs!"), $diff), WARNING_DIALOG); + } + } + + $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=ls('".LDAP::fix($basedn)."', '$filter')"); + + return($this->sr[$srp]); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function cat($srp, $dn,$attrs= array("*")) + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + + $this->clearResult($srp); + $filter = "(objectclass=*)"; + $this->sr[$srp] = @ldap_read($this->cid, LDAP::fix($dn), $filter,$attrs); + $this->error = @ldap_error($this->cid); + $this->resetResult($srp); + $this->hasres[$srp]=true; + return($this->sr[$srp]); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function object_match_filter($dn,$filter) + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + $res = @ldap_read($this->cid, LDAP::fix($dn), $filter, array("objectClass")); + $rv = @ldap_count_entries($this->cid, $res); + return($rv); + }else{ + $this->error = "Could not connect to LDAP server"; + return(FALSE); + } + } + + function set_size_limit($size) + { + /* Ignore zero settings */ + if ($size == 0){ + @ldap_set_option($this->cid, LDAP_OPT_SIZELIMIT, 10000000); + } + if($this->hascon){ + @ldap_set_option($this->cid, LDAP_OPT_SIZELIMIT, $size); + } else { + $this->error = "Could not connect to LDAP server"; + } + } + + function fetch($srp) + { + $att= array(); + if($this->hascon){ + if($this->hasres[$srp]){ + if ($this->start[$srp] == 0) + { + if ($this->sr[$srp]){ + $this->start[$srp] = 1; + $this->re[$srp]= @ldap_first_entry($this->cid, $this->sr[$srp]); + } else { + return array(); + } + } else { + $this->re[$srp]= @ldap_next_entry($this->cid, $this->re[$srp]); + } + if ($this->re[$srp]) + { + $att= @ldap_get_attributes($this->cid, $this->re[$srp]); + $att['dn']= trim(LDAP::convert(@ldap_get_dn($this->cid, $this->re[$srp]))); + } + $this->error = @ldap_error($this->cid); + if (!isset($att)){ + $att= array(); + } + return($att); + }else{ + $this->error = "Perform a fetch with no search"; + return(""); + } + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function resetResult($srp) + { + $this->start[$srp] = 0; + } + + function clearResult($srp) + { + if($this->hasres[$srp]){ + $this->hasres[$srp] = false; + @ldap_free_result($this->sr[$srp]); + } + } + + function getDN($srp) + { + if($this->hascon){ + if($this->hasres[$srp]){ + + if(!$this->re[$srp]) + { + $this->error = "Perform a Fetch with no valid Result"; + } + else + { + $rv = @ldap_get_dn($this->cid, $this->re[$srp]); + + $this->error = @ldap_error($this->cid); + return(trim(LDAP::convert($rv))); + } + }else{ + $this->error = "Perform a Fetch with no Search"; + return(""); + } + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function count($srp) + { + if($this->hascon){ + if($this->hasres[$srp]){ + $rv = @ldap_count_entries($this->cid, $this->sr[$srp]); + $this->error = @ldap_error($this->cid); + return($rv); + }else{ + $this->error = "Perform a Fetch with no Search"; + return(""); + } + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function rm($attrs = "", $dn = "") + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + if ($dn == "") + $dn = $this->basedn; + + $r = @ldap_mod_del($this->cid, LDAP::fix($dn), $attrs); + $this->error = @ldap_error($this->cid); + return($r); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function rename($attrs, $dn = "") + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + if ($dn == "") + $dn = $this->basedn; + + $r = @ldap_mod_replace($this->cid, LDAP::fix($dn), $attrs); + $this->error = @ldap_error($this->cid); + return($r); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function rmdir($deletedn) + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + $r = @ldap_delete($this->cid, LDAP::fix($deletedn)); + $this->error = @ldap_error($this->cid); + return($r ? $r : 0); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + + /*! \brief Move the given Ldap entry from $source to $dest + @param String $source The source dn. + @param String $dest The destination dn. + @return Boolean TRUE on success else FALSE. + */ + function rename_dn($source,$dest) + { + /* Check if source and destination are the same entry */ + if(strtolower($source) == strtolower($dest)){ + trigger_error("Source and destination can't be the same entry."); + $this->error = "Source and destination can't be the same entry."; + return(FALSE); + } + + /* Check if destination entry exists */ + if($this->dn_exists($dest)){ + trigger_error("Destination '$dest' already exists."); + $this->error = "Destination '$dest' already exists."; + return(FALSE); + } + + /* Extract the name and the parent part out ouf source dn. + e.g. cn=herbert,ou=department,dc=... + parent => ou=department,dc=... + dest_rdn => cn=herbert + */ + $parent = preg_replace("/^[^,]+,/","", $dest); + $dest_rdn = preg_replace("/,.*$/","",$dest); + + if($this->hascon){ + if ($this->reconnect) $this->connect(); + $r= ldap_rename($this->cid,@LDAP::fix($source), @LDAP::fix($dest_rdn),@LDAP::fix($parent),TRUE); + $this->error = ldap_error($this->cid); + + /* Check if destination dn exists, if not the + server may not support this operation */ + $r &= is_resource($this->dn_exists($dest)); + return($r); + }else{ + $this->error = "Could not connect to LDAP server"; + return(FALSE); + } + } + + + /** + * Function rmdir_recursive + * + * Description: Based in recursive_remove, adding two thing: full subtree remove, and delete own node. + * Parameters: The dn to delete + * GiveBack: True on sucessfull , 0 in error, and "" when we don't get a ldap conection + * + */ + function rmdir_recursive($srp, $deletedn) + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + $delarray= array(); + + /* Get sorted list of dn's to delete */ + $this->ls ($srp, "(objectClass=*)",$deletedn); + while ($this->fetch($srp)){ + $deldn= $this->getDN($srp); + $delarray[$deldn]= strlen($deldn); + } + arsort ($delarray); + reset ($delarray); + + /* Really Delete ALL dn's in subtree */ + foreach ($delarray as $key => $value){ + $this->rmdir_recursive($srp, $key); + } + + /* Finally Delete own Node */ + $r = @ldap_delete($this->cid, LDAP::fix($deletedn)); + $this->error = @ldap_error($this->cid); + return($r ? $r : 0); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + + function modify($attrs) + { + if(count($attrs) == 0){ + return (0); + } + if($this->hascon){ + if ($this->reconnect) $this->connect(); + $r = @ldap_modify($this->cid, LDAP::fix($this->basedn), $attrs); + $this->error = @ldap_error($this->cid); + return($r ? $r : 0); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function add($attrs) + { + if($this->hascon){ + if ($this->reconnect) $this->connect(); + $r = @ldap_add($this->cid, LDAP::fix($this->basedn), $attrs); + $this->error = @ldap_error($this->cid); + return($r ? $r : 0); + }else{ + $this->error = "Could not connect to LDAP server"; + return(""); + } + } + + function create_missing_trees($srp, $target) + { + global $config; + + $real_path= substr($target, 0, strlen($target) - strlen($this->basedn) -1 ); + + if ($target == $this->basedn){ + $l= array("dummy"); + } else { + $l= array_reverse(gosa_ldap_explode_dn($real_path)); + } + unset($l['count']); + $cdn= $this->basedn; + $tag= ""; + + /* Load schema if available... */ + $classes= $this->get_objectclasses(); + + foreach ($l as $part){ + if ($part != "dummy"){ + $cdn= "$part,$cdn"; + } + + /* Ignore referrals */ + $found= false; + foreach($this->referrals as $ref){ + $base= preg_replace('!^[^:]+://[^/]+/([^?]+).*$!', '\\1', $ref['URI']); + if ($base == $cdn){ + $found= true; + break; + } + } + if ($found){ + continue; + } + + $this->cat ($srp, $cdn); + $attrs= $this->fetch($srp); + + /* Create missing entry? */ + if (count ($attrs)){ + + /* Catch the tag - if present */ + if (isset($attrs['gosaUnitTag'][0])){ + $tag= $attrs['gosaUnitTag'][0]; + } + + } else { + $type= preg_replace('/^([^=]+)=.*$/', '\\1', $cdn); + $param= preg_replace('/^[^=]+=([^,]+).*$/', '\\1', $cdn); + + $na= array(); + + /* Automatic or traditional? */ + if(count($classes)){ + + /* Get name of first matching objectClass */ + $ocname= ""; + foreach($classes as $class){ + if (isset($class['MUST']) && $class['MUST'] == "$type"){ + + /* Look for first classes that is structural... */ + if (isset($class['STRUCTURAL'])){ + $ocname= $class['NAME']; + break; + } + + /* Look for classes that are auxiliary... */ + if (isset($class['AUXILIARY'])){ + $ocname= $class['NAME']; + } + } + } + + /* Bail out, if we've nothing to do... */ + if ($ocname == ""){ + msg_dialog::display(_("Internal error"), sprintf(_("Cannot automatically create subtrees with RDN '%s': no object class found!"),$type), FATAL_ERROR_DIALOG); + exit(); + } + + /* Assemble_entry */ + if ($tag != ""){ + $na['objectClass']= array($ocname, "gosaAdministrativeUnitTag"); + $na["gosaUnitTag"]= $tag; + } else { + $na['objectClass']= array($ocname); + } + if (isset($classes[$ocname]['AUXILIARY'])){ + $na['objectClass'][]= $classes[$ocname]['SUP']; + } + if ($type == "dc"){ + /* This is bad actually, but - tell me a better way? */ + $na['objectClass'][]= 'locality'; + } + $na[$type]= $param; + if (is_array($classes[$ocname]['MUST'])){ + foreach($classes[$ocname]['MUST'] as $attr){ + $na[$attr]= "filled"; + } + } + + } else { + + /* Use alternative add... */ + switch ($type){ + case 'ou': + if ($tag != ""){ + $na["objectClass"]= array("organizationalUnit", "gosaAdministrativeUnitTag"); + $na["gosaUnitTag"]= $tag; + } else { + $na["objectClass"]= "organizationalUnit"; + } + $na["ou"]= $param; + break; + case 'dc': + if ($tag != ""){ + $na["objectClass"]= array("dcObject", "top", "locality", "gosaAdministrativeUnitTag"); + $na["gosaUnitTag"]= $tag; + } else { + $na["objectClass"]= array("dcObject", "top", "locality"); + } + $na["dc"]= $param; + break; + default: + msg_dialog::display(_("Internal error"), sprintf(_("Cannot automatically create subtrees with RDN '%s': not supported"),$type), FATAL_ERROR_DIALOG); + exit(); + } + + } + $this->cd($cdn); + $this->add($na); + + if (!$this->success()){ + + print_a(array($cdn,$na)); + + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($this->get_error(), $cdn, LDAP_ADD, get_class())); + return FALSE; + } + } + } + + return TRUE; + } + + + function recursive_remove($srp) + { + $delarray= array(); + + /* Get sorted list of dn's to delete */ + $this->search ($srp, "(objectClass=*)"); + while ($this->fetch($srp)){ + $deldn= $this->getDN($srp); + $delarray[$deldn]= strlen($deldn); + } + arsort ($delarray); + reset ($delarray); + + /* Delete all dn's in subtree */ + foreach ($delarray as $key => $value){ + $this->rmdir($key); + } + } + + function get_attribute($dn, $name,$r_array=0) + { + $data= ""; + if ($this->reconnect) $this->connect(); + $sr= @ldap_read($this->cid, LDAP::fix($dn), "objectClass=*", array("$name")); + + /* fill data from LDAP */ + if ($sr) { + $ei= @ldap_first_entry($this->cid, $sr); + if ($ei) { + if ($info= @ldap_get_values_len($this->cid, $ei, "$name")){ + $data= $info[0]; + } + } + } + if($r_array==0) + return ($data); + else + return ($info); + + + } + + + + function get_additional_error() + { + $error= ""; + @ldap_get_option ($this->cid, LDAP_OPT_ERROR_STRING, $error); + return ($error); + } + + + function success() + { + return (preg_match('/Success/i', $this->error)); + } + + + function get_error() + { + if ($this->error == 'Success'){ + return $this->error; + } else { + $adderror= $this->get_additional_error(); + if ($adderror != ""){ + $error= $this->error." (".$this->get_additional_error().", ".sprintf(_("while operating on '%s' using LDAP server '%s'"), $this->basedn, $this->hostname).")"; + } else { + $error= $this->error." (".sprintf(_("while operating on LDAP server %s"), $this->hostname).")"; + } + return $error; + } + } + + function get_credentials($url, $referrals= NULL) + { + $ret= array(); + $url= preg_replace('!\?\?.*$!', '', $url); + $server= preg_replace('!^([^:]+://[^/]+)/.*$!', '\\1', $url); + + if ($referrals === NULL){ + $referrals= $this->referrals; + } + + if (isset($referrals[$server])){ + return ($referrals[$server]); + } else { + $ret['ADMINDN']= LDAP::fix($this->binddn); + $ret['ADMINPASSWORD']= $this->bindpw; + } + + return ($ret); + } + + + function gen_ldif ($srp, $dn, $filter= "(objectClass=*)", $attributes= array('*'), $recursive= TRUE) + { + $display= ""; + + if ($recursive){ + $this->cd($dn); + $this->ls($srp, $filter,$dn, array('dn','objectClass')); + $deps = array(); + + $display .= $this->gen_one_entry($dn)."\n"; + + while ($attrs= $this->fetch($srp)){ + $deps[] = $attrs['dn']; + } + foreach($deps as $dn){ + $display .= $this->gen_ldif($srp, $dn, $filter,$attributes,$recursive); + } + } else { + $display.= $this->gen_one_entry($dn); + } + return ($display); + } + + + function gen_xls ($srp, $dn, $filter= "(objectClass=*)", $attributes= array('*'), $recursive= TRUE,$r_array=0) + { + $display= array(); + + $this->cd($dn); + $this->search($srp, "$filter"); + + $i=0; + while ($attrs= $this->fetch($srp)){ + $j=0; + + foreach ($attributes as $at){ + $display[$i][$j]= $this->get_attribute($attrs['dn'], $at,$r_array); + $j++; + } + + $i++; + } + + return ($display); + } + + + function gen_one_entry($dn, $filter= "(objectClass=*)" , $name= array("*")) + { + $ret = ""; + $data = ""; + if($this->reconnect){ + $this->connect(); + } + + /* Searching Ldap Tree */ + $sr= @ldap_read($this->cid, LDAP::fix($dn), $filter, $name); + + /* Get the first entry */ + $entry= @ldap_first_entry($this->cid, $sr); + + /* Get all attributes related to that Objekt */ + $atts = array(); + + /* Assemble dn */ + $atts[0]['name'] = "dn"; + $atts[0]['value'] = array('count' => 1, 0 => $dn); + + /* Reset index */ + $i = 1 ; + $identifier = array(); + $attribute= @ldap_first_attribute($this->cid,$entry,$identifier); + while ($attribute) { + $i++; + $atts[$i]['name'] = $attribute; + $atts[$i]['value'] = @ldap_get_values_len($this->cid, $entry, "$attribute"); + + /* Next one */ + $attribute= @ldap_next_attribute($this->cid,$entry,$identifier); + } + + foreach($atts as $at) + { + for ($i= 0; $i<$at['value']['count']; $i++){ + + /* Check if we must encode the data */ + if(!preg_match('/^[a-z0-9+@#.=, \/ -]+$/i', $at['value'][$i])) { + $ret .= $at['name'].":: ".base64_encode($at['value'][$i])."\n"; + } else { + $ret .= $at['name'].": ".$at['value'][$i]."\n"; + } + } + } + + return($ret); + } + + + function dn_exists($dn) + { + return @ldap_list($this->cid, LDAP::fix($dn), "(objectClass=*)", array("objectClass")); + } + + + + /* This funktion imports ldifs + + If DeleteOldEntries is true, the destination entry will be deleted first. + If JustModify is true the destination entry will only be touched by the attributes specified in the ldif. + if JustMofify id false the destination dn will be overwritten by the new ldif. + */ + + function import_complete_ldif($srp, $str_attr,$error,$JustModify,$DeleteOldEntries) + { + if($this->reconnect) $this->connect(); + + /* First we have to splitt the string ito detect empty lines + An empty line indicates an new Entry */ + $entries = split("\n",$str_attr); + + $data = ""; + $cnt = 0; + $current_line = 0; + + /* FIX ldif */ + $last = ""; + $tmp = ""; + $i = 0; + foreach($entries as $entry){ + if(preg_match("/^ /",$entry)){ + $tmp[$i] .= trim($entry); + }else{ + $i ++; + $tmp[$i] = trim($entry); + } + } + + /* Every single line ... */ + foreach($tmp as $entry) { + $current_line ++; + + /* Removing Spaces to .. + .. test if a new entry begins */ + $tmp = str_replace(" ","",$data ); + + /* .. prevent empty lines in an entry */ + $tmp2 = str_replace(" ","",$entry); + + /* If the Block ends (Empty Line) */ + if((empty($entry))&&(!empty($tmp))) { + /* Add collected lines as a complete block */ + $all[$cnt] = $data; + $cnt ++; + $data =""; + } else { + + /* Append lines ... */ + if(!empty($tmp2)) { + /* check if we need base64_decode for this line */ + if(ereg("::",$tmp2)) + { + $encoded = split("::",$entry); + $attr = trim($encoded[0]); + $value = base64_decode(trim($encoded[1])); + /* Add linenumber */ + $data .= $current_line."#".base64_encode($attr.":".$value)."\n"; + } + else + { + /* Add Linenumber */ + $data .= $current_line."#".base64_encode($entry)."\n"; + } + } + } + } + + /* The Data we collected is not in the array all[]; + For example the Data is stored like this.. + + all[0] = "1#dn : .... \n + 2#ObjectType: person \n ...." + + Now we check every insertblock and try to insert */ + foreach ( $all as $single) { + $lineone = split("\n",$single); + $ndn = split("#", $lineone[0]); + $line = base64_decode($ndn[1]); + + $dnn = split (":",$line,2); + $current_line = $ndn[0]; + $dn = $dnn[0]; + $value = $dnn[1]; + + /* Every block must begin with a dn */ + if($dn != "dn") { + $error= sprintf(_("This is not a valid DN: '%s'. A block for import should begin with 'dn: ...' in line %s"), $line, $current_line); + return -2; + } + + /* Should we use Modify instead of Add */ + $usemodify= false; + + /* Delete before insert */ + $usermdir= false; + + /* The dn address already exists, Don't delete destination entry, overwrite it */ + if (($this->dn_exists($value))&&((!$JustModify)&&(!$DeleteOldEntries))) { + + $usermdir = $usemodify = false; + + /* Delete old entry first, then add new */ + } elseif(($this->dn_exists($value))&&($DeleteOldEntries)){ + + /* Delete first, then add */ + $usermdir = true; + + } elseif(($this->dn_exists($value))&&($JustModify)) { + + /* Modify instead of Add */ + $usemodify = true; + } + + /* If we can't Import, return with a file error */ + if(!$this->import_single_entry($srp, $single,$usemodify,$usermdir) ) { + $error= sprintf(_("Error while importing dn: '%s', please check your LDIF from line %s on!"), $line, + $current_line); + return UNKNOWN_TOKEN_IN_LDIF_FILE; } + } + + return (INSERT_OK); + } + + + /* Imports a single entry + If $delete is true; The old entry will be deleted if it exists. + if $modify is true; All variables that are not touched by the new ldif will be kept. + if $modify is false; The new ldif overwrites the old entry, and all untouched attributes get lost. + */ + function import_single_entry($srp, $str_attr,$modify,$delete) + { + global $config; + + if(!$config){ + trigger_error("Can't import ldif, can't read config object."); + } + + + if($this->reconnect) $this->connect(); + + $ret = false; + $rows= split("\n",$str_attr); + $data= false; + + foreach($rows as $row) { + + /* Check if we use Linenumbers (when import_complete_ldif is called we use + Linenumbers) Linenumbers are use like this 123#attribute : value */ + if(!empty($row)) { + if(strpos($row,"#")!=FALSE) { + + /* We are using line numbers + Because there is a # before a : */ + $tmp1= split("#",$row); + $current_line= $tmp1[0]; + $row= base64_decode($tmp1[1]); + } + + /* Split the line into attribute and value */ + $attr = split(":", $row,2); + $attr[0]= trim($attr[0]); /* attribute */ + $attr[1]= $attr[1]; /* value */ + + /* Check :: was used to indicate base64_encoded strings */ + if($attr[1][0] == ":"){ + $attr[1]=trim(preg_replace("/^:/","",$attr[1])); + $attr[1]=base64_decode($attr[1]); + } + + $attr[1] = trim($attr[1]); + + /* Check for attributes that are used more than once */ + if(!isset($data[$attr[0]])) { + $data[$attr[0]]=$attr[1]; + } else { + $tmp = $data[$attr[0]]; + + if(!is_array($tmp)) { + $new[0]=$tmp; + $new[1]=$attr[1]; + $datas[$attr[0]]['count']=1; + $data[$attr[0]]=$new; + } else { + $cnt = $datas[$attr[0]]['count']; + $cnt ++; + $data[$attr[0]][$cnt]=$attr[1]; + $datas[$attr[0]]['count'] = $cnt; + } + } + } + } + + /* If dn is an index of data, we should try to insert the data */ + if(isset($data['dn'])) { + + /* Fix dn */ + $tmp = gosa_ldap_explode_dn($data['dn']); + unset($tmp['count']); + $newdn =""; + foreach($tmp as $tm){ + $newdn.= trim($tm).","; + } + $newdn = preg_replace("/,$/","",$newdn); + $data['dn'] = $newdn; + + /* Creating Entry */ + $this->cd($data['dn']); + + /* Delete existing entry */ + if($delete){ + $this->rmdir_recursive($srp, $data['dn']); + } + + /* Create missing trees */ + $this->cd ($this->basedn); + $this->cd($config->current['BASE']); + $this->create_missing_trees($srp, preg_replace("/^[^,]+,/","",$data['dn'])); + $this->cd($data['dn']); + + $dn = $data['dn']; + unset($data['dn']); + + if(!$modify){ + + $this->cat($srp, $dn); + if($this->count($srp)){ + + /* The destination entry exists, overwrite it with the new entry */ + $attrs = $this->fetch($srp); + foreach($attrs as $name => $value ){ + if(!is_numeric($name)){ + if(in_array($name,array("dn","count"))) continue; + if(!isset($data[$name])){ + $data[$name] = array(); + } + } + } + $ret = $this->modify($data); + + }else{ + + /* The destination entry doesn't exists, create it */ + $ret = $this->add($data); + } + + } else { + + /* Keep all vars that aren't touched by this ldif */ + $ret = $this->modify($data); + } + } + + if (!$this->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($this->get_error(), $dn, "", get_class())); + } + + return($ret); + } + + + function importcsv($str) + { + $lines = split("\n",$str); + foreach($lines as $line) + { + /* continue if theres a comment */ + if(substr(trim($line),0,1)=="#"){ + continue; + } + + $line= str_replace ("\t\t","\t",$line); + $line= str_replace ("\t" ,"," ,$line); + echo $line; + + $cells = split(",",$line ) ; + $linet= str_replace ("\t\t",",",$line); + $cells = split("\t",$line); + $count = count($cells); + } + + } + + function get_objectclasses( $force_reload = FALSE) + { + $objectclasses = array(); + global $config; + + /* Only read schema if it is allowed */ + if(isset($config) && preg_match("/config/i",get_class($config))){ + if ($config->get_cfg_value("schemaCheck") != "true"){ + return($objectclasses); + } + } + + /* Return the cached results. */ + if(class_available('session') && session::global_is_set("LDAP_CACHE::get_objectclasses") && !$force_reload){ + $objectclasses = session::global_get("LDAP_CACHE::get_objectclasses"); + return($objectclasses); + } + + # Get base to look for schema + $sr = @ldap_read ($this->cid, "", "objectClass=*", array("subschemaSubentry")); + $attr = @ldap_get_entries($this->cid,$sr); + if (!isset($attr[0]['subschemasubentry'][0])){ + return array(); + } + + /* Get list of objectclasses and fill array */ + $nb= $attr[0]['subschemasubentry'][0]; + $objectclasses= array(); + $sr= ldap_read ($this->cid, $nb, "objectClass=*", array("objectclasses")); + $attrs= ldap_get_entries($this->cid,$sr); + if (!isset($attrs[0])){ + return array(); + } + foreach ($attrs[0]['objectclasses'] as $val){ + if (preg_match('/^[0-9]+$/', $val)){ + continue; + } + $name= "OID"; + $pattern= split(' ', $val); + $ocname= preg_replace("/^.* NAME\s+\(*\s*'([^']+)'\s*\)*.*$/", '\\1', $val); + $objectclasses[$ocname]= array(); + + foreach($pattern as $chunk){ + switch($chunk){ + + case '(': + $value= ""; + break; + + case ')': if ($name != ""){ + $objectclasses[$ocname][$name]= $this->value2container($value); + } + $name= ""; + $value= ""; + break; + + case 'NAME': + case 'DESC': + case 'SUP': + case 'STRUCTURAL': + case 'ABSTRACT': + case 'AUXILIARY': + case 'MUST': + case 'MAY': + if ($name != ""){ + $objectclasses[$ocname][$name]= $this->value2container($value); + } + $name= $chunk; + $value= ""; + break; + + default: $value.= $chunk." "; + } + } + + } + if(class_available("session")){ + session::global_set("LDAP_CACHE::get_objectclasses",$objectclasses); + } + + return $objectclasses; + } + + + function value2container($value) + { + /* Set emtpy values to "true" only */ + if (preg_match('/^\s*$/', $value)){ + return true; + } + + /* Remove ' and " if needed */ + $value= preg_replace('/^[\'"]/', '', $value); + $value= preg_replace('/[\'"] *$/', '', $value); + + /* Convert to array if $ is inside... */ + if (preg_match('/\$/', $value)){ + $container= preg_split('/\s*\$\s*/', $value); + } else { + $container= chop($value); + } + + return ($container); + } + + + function log($string) + { + if (session::global_is_set('config')){ + $cfg = session::global_get('config'); + if (isset($cfg->current['LDAPSTATS']) && preg_match('/true/i', $cfg->current['LDAPSTATS'])){ + syslog (LOG_INFO, $string); + } + } + } + + /* added by Guido Serra aka Zeph */ + function getCn($dn){ + $simple= split(",", $dn); + + foreach($simple as $piece) { + $partial= split("=", $piece); + + if($partial[0] == "cn"){ + return $partial[1]; + } + } + } + + + function get_naming_contexts($server, $admin= "", $password= "") + { + /* Build LDAP connection */ + $ds= ldap_connect ($server); + if (!$ds) { + die ("Can't bind to LDAP. No check possible!"); + } + ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); + $r= ldap_bind ($ds, $admin, $password); + + /* Get base to look for naming contexts */ + $sr = @ldap_read ($ds, "", "objectClass=*", array("+")); + $attr= @ldap_get_entries($ds,$sr); + + return ($attr[0]['namingcontexts']); + } + + + function get_root_dse($server, $admin= "", $password= "") + { + /* Build LDAP connection */ + $ds= ldap_connect ($server); + if (!$ds) { + die ("Can't bind to LDAP. No check possible!"); + } + ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); + $r= ldap_bind ($ds, $admin, $password); + + /* Get base to look for naming contexts */ + $sr = @ldap_read ($ds, "", "objectClass=*", array("+")); + $attr= @ldap_get_entries($ds,$sr); + + /* Return empty array, if nothing was set */ + if (!isset($attr[0])){ + return array(); + } + + /* Rework array... */ + $result= array(); + for ($i= 0; $i<$attr[0]['count']; $i++){ + $result[$attr[0][$i]]= $attr[0][$attr[0][$i]]; + unset($result[$attr[0][$i]]['count']); + } + + return ($result); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_ldapMultiplexer.inc b/trunk/gosa-core/include/class_ldapMultiplexer.inc new file mode 100644 index 000000000..f201cae29 --- /dev/null +++ b/trunk/gosa-core/include/class_ldapMultiplexer.inc @@ -0,0 +1,59 @@ +object= $object; + + /* Set result resource */ + $this->sr= $this->object->getSearchResource(); + } + + public function __call($methodName, $parameters) { + /* Add resource pointer if the mentioned methods are used */ + if (preg_match('/^(search|ls|cat|fetch|clearResult|resetResult|count|getDN|recursive_remove|rmdir_recursive|gen_xls|gen_ldif|create_missing_trees|import_single_entry|import_complete_ldif)$/', $methodName)){ + array_unshift($parameters, $this->sr); + } + + $class= new ReflectionClass($this->object); + $method= $class->getMethod($methodName); + + return $method->invokeArgs($this->object, $parameters); + } + + + public function __get($memberName) { + return $this->object->$memberName; + } + +} + +?> diff --git a/trunk/gosa-core/include/class_log.inc b/trunk/gosa-core/include/class_log.inc new file mode 100644 index 000000000..bbe31517e --- /dev/null +++ b/trunk/gosa-core/include/class_log.inc @@ -0,0 +1,253 @@ + + \version 2.6 + \date 11.04.2007 + + This is the base class for the GOsa logging functionality. + All logging should lead to this class. + */ +class log { + + var $LOG_TO_MYSQL = FALSE; + var $LOG_TO_SYSLOG= FALSE; + var $config; + + /*! \brief logging constructor + + \param action One of these values (modify|create|remove|snapshot|copy) + \param objecttype represents the current edited objecttype, like users/user + \param object represents the current edited object dn + \param changes_array An array containing names of all touched attributes + \param result A status message, containing errors or success messages + + \sa log() + */ + function log($action,$objecttype,$object,$changes_array = array(),$result = "") + { + if(!is_array($changes_array)){ + trigger_error("log(string,string,string,array(),bool). Forth parameter must be an array."); + $changes_array = array(); + } + + $entry = array(); + if(!session::global_is_set('config')){ + $entry['user']= "unkown"; + }else{ + + $this->config = session::global_get('config'); + $ui = get_userinfo(); + $entry['user']= @$ui->dn; + } + + /* Create string out of changes */ + $changes =""; + foreach($changes_array as $str ){ + $changes .= $str.","; + } + $changes = preg_replace("/,$/","",$changes ); + + /* Create data object */ + $entry['timestamp'] = time(); + $entry['action'] = $action; + $entry['objecttype']= $objecttype; + $entry['object'] = $object; + $entry['changes'] = $changes; + $entry['result'] = $result; + + if(!isset($config) || ( $this->config->get_cfg_value("logging") == "" && empty($entry['user']))){ + $entry['user'] = "unknown"; + } + + /* Check if all given values are valid */ + $msgs = @log::check($entry); + if(count($msgs)){ + foreach($msgs as $msg){ + trigger_error("Logging failed, reason was: ".$msg); + msg_dialog::display(_("Internal error"), sprintf(_("Logging failed: %s"), $msg), ERROR_DIALOG); + } + + }else{ + + if (isset ($config)){ + if ($this->config->get_cfg_value("logging") == ""){ + $this->log_into_syslog($entry); + }else{ + + /* Start logging for configured methods */ + if(preg_match("/(^|,)syslog(,|$)/i",$this->config->get_cfg_value("logging"))){ + $this->log_into_syslog($entry); + } + if(preg_match("/(^|,)mysql(,|$)/i",$this->config->get_cfg_value("logging"))){ + $this->log_into_db($entry); + } + } + } + } + } + + + function check($entry = array()) + { + $msgs = array(); + + if(!isset($entry['action']) || !in_array($entry['action'],array("modify","create","remove","copy","snapshot","view","security","debug"))){ + $msgs[] = sprintf(_("Invalid option '%s' specified!"), $entry['action']); + } + + if(!isset($entry['objecttype']) || empty($entry['objecttype'])){ + $msgs[] = _("Specified objectType is empty or invalid!"); + } + + return($msgs); + } + + + /* This function is used to into the systems syslog */ + function log_into_syslog($entry) + { + $str = $entry['user']." ".$entry['action']." ".$entry['object']." from type ".$entry['objecttype']." ".$entry['changes']." : Result was ".$entry['result']; + gosa_log($str); + } + + + function disable_mysql_log($server,$error) + { + global $config; + msg_dialog::display(_("Error"), $error, ERROR_DIALOG); + msg_dialog::display(_("MySQL error"),sprintf(_("Logging to MySQL database will be disabled for server '%s'!"),$server), INFO_DIALOG); + unset($config->data['SERVERS']['LOGGING'][$server]) ; + $this->config = $config; + } + + + /* Log into configured logging databses.*/ + function log_into_db($entry) + { + if(isset($this->config->data['SERVERS']['LOGGING'])){ + $servers = $this->config->data['SERVERS']['LOGGING']; + }else{ + return(FALSE); + } + + /* Log into each configured server + */ + foreach($servers as $server_name => $server){ + + $error = ""; + + /* Connect to the database + */ + $con = @mysql_pconnect($server_name,$server['USER'],$server['PWD']); + if(!$con){ + $error = msgPool::dbconnect(_("MySQL logging"),mysql_error()); + $this->disable_mysql_log($server_name,$error); + continue; + } + + /* Check if the database is available + */ + $db = @mysql_select_db($server['DB'],$con); + if(!$db){ + $error = msgPool::dbselect(_("MySQL logging"),mysql_error()); + $this->disable_mysql_log($server_name,$error); + continue; + } + + /* Check if our current location is already registerd + in this case get its id. + If it wasn't registered yet, create it. + */ + $base = mysql_escape_string($this->config->current['BASE']); + $query= "SELECT id FROM gosa_locations WHERE location=\"".$base."\";"; + $res = mysql_query($query); + if(!$res){ + $error = msgPool::dbquery(_("MySQL logging"),mysql_error()); + $this->disable_mysql_log($server_name,$error); + continue; + } + + $location_id = -1; + while($attrs = mysql_fetch_assoc($res)){ + $location_id = $attrs['id']; + break; + } + + /* No location found that matches our location. + Create it. + */ + if($location_id == -1){ + $query = "INSERT INTO gosa_locations (location) VALUES ('".$base."');"; + if(!mysql_query($query,$con)){ + $error = msgPool::dbquery(_("MySQL logging"),mysql_error()); + $this->disable_mysql_log($server_name,$error); + continue; + } + + /* Try to detect the location again + */ + $query= "SELECT id FROM gosa_locations WHERE location=\"".$base."\";"; + $res = mysql_query($query); + $location_id = -1; + while($attrs = mysql_fetch_assoc($res)){ + $location_id = $attrs['id']; + break; + } + if($location_id == -1){ + $error = sprintf(_("Cannot add location to the database!")."

"._("Error").": %s",mysql_error($con)); + $this->disable_mysql_log($server_name,$error); + continue; + } + } + + /* Create mysql syntax */ + $query ="INSERT INTO gosa_log + (timestamp,user,action,objecttype,object,changes,result,location_id) + VALUES + ( + \"".mysql_escape_string($entry['timestamp'])."\", + \"".mysql_escape_string($entry['user'])."\", + \"".mysql_escape_string($entry['action'])."\", + \"".mysql_escape_string($entry['objecttype'])."\", + \"".mysql_escape_string($entry['object'])."\", + \"".mysql_escape_string($entry['changes'])."\", + \"".mysql_escape_string($entry['result'])."\", + \"".mysql_escape_string($location_id)."\" + ); + "; + $res = mysql_query($query,$con); + if(!$res){ + $error = dbquery(_("MySQL logging"), mysql_error()); + $this->disable_mysql_log($server_name,$error); + continue; + } + if(is_resource($con)){ + mysql_close($con); + } + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_msg_dialog.inc b/trunk/gosa-core/include/class_msg_dialog.inc new file mode 100644 index 000000000..6cd25e6d6 --- /dev/null +++ b/trunk/gosa-core/include/class_msg_dialog.inc @@ -0,0 +1,202 @@ +i_ID = preg_replace("/[^0-9]*/","",microtime()); + $this->s_Title = $s_title; + $this->s_Message = $s_message; + $this->i_Type = $i_type; + + /* Append trace information, only if error messages are enabled */ + if( isset($config) && + is_object($config) && + $config->get_cfg_value("displayerrors") == "true" ){ + $this->a_Trace = debug_backtrace(); + } + if(!session::is_set('msg_dialogs')){ + session::set('msg_dialogs',array()); + } + if($this->i_Type == FATAL_ERROR_DIALOG){ + restore_error_handler(); + error_reporting(E_ALL); + echo $this->execute(); + }else{ + $msg_dialogs = session::get('msg_dialogs'); + $msg_dialogs[] = $this; + session::set('msg_dialogs',$msg_dialogs); + } + } + session::set('errorsAlreadyPosted',$errorsAlreadyPosted); + } + + + public static function display($s_title,$s_message,$i_type = INFO_DIALOG) + { + new msg_dialog($s_title,$s_message,$i_type); + } + + + public static function displayChecks($messages) + { + /* Assemble the message array to a plain string */ + foreach ($messages as $error){ + msg_dialog::display(_("Error"), $error, ERROR_DIALOG); + } + } + + + public function get_ID() + { + return($this->i_ID); + } + + public function execute() + { + if($this->i_Type == FATAL_ERROR_DIALOG) { + $display = + " + + GOsa startup failed + +
"; + } + } + + $s_return.= "\n"; + + foreach($this->a_header[0] as $s_key => $s_value ){ + if(!isset($s_value['attach'])){ + $s_value['attach'] = ""; + } + + $s_return.= "\n"; + + // Increment column counter + $this->cols++; + + } + + // Attach a 13px-wide column (used as scrollbar space in body-table), + // but do this only if we are really using scrolltables. + if($this->i_entriesPerPage == 0) { + $s_return.= "\n"; + $s_return.= "\n
".$s_value['string']." 
"; + $s_return .= ""; + } else { + $s_return .= "\n"; + } + return($str); + } else { + + //FIXME: Ahrg. I'd like to read this code without wasting my time. + if ($this->i_entriesPerPage > 0) { + while($start > $this->_numentries()){ + $start = $start - $this->i_entriesPerPage; + } + + $stop = $start + $this->i_entriesPerPage; + + $appendempty = ($this->_numentries() -$start); + + for($i = $start ; $i < $stop;$i++){ + + if(isset($this->a_entries[$i])){ + + $s_value = $this->a_entries[$i]; + + // Alternation of background color + if($i_alternate) $i_alternate=0; else $i_alternate=1; + + $s_return .= "\n"; + + $cnt = 0; + + foreach($s_value as $s_key2 => $s_value2 ){ + + $cnt++; + + if(!isset($s_value2['class'])){ + $class = "list".$i_alternate; + }else{ + $class = $s_value2['class']; + } + + if(!isset($s_value2['attach'])){ + $style = ""; + }else{ + $style = " ".$s_value2['attach']." " ; + } + + $s_return .= "\n"; + } + if($cnt == 0 ){ + $s_return.="\n"; + } + + $s_return .= "\n"; + } + } + + if(!(($stop)<$this->_numentries())){ + $nums = $stop - $this->_numentries();// - $stop; + for($i = 0 ; $i < $nums ; $i ++ ){ + $s_return.=""; + $cnt=0; + for($a = 0, $l= count($this->a_header[0]); $a < $l ; $a ++ ) { + if($a ==(count($this->a_header[0])-1)){ + $s_return.="\n"; + } else { + $s_return.="\n"; + } + } + $s_return.="\n"; + } + } + + if($this->b_displayPageNums){ + $s_return .= ""; + } + } else { + // $this->i_entriesPerPage <= 0 + // We should display all entries on one page + + $i = $this->_numEntries(); + foreach($this->a_entries as $s_key => $s_value){ + $i--; + + if($i_alternate!=0){ + $i_alternate=0; + } else { + $i_alternate=1; + } + + $s_return .= "\n"; + + $cnt = 0; + + foreach($s_value as $s_key2 => $s_value2 ){ + + $this->cols = count($s_value) ; + $cnt++; + + if(!isset($s_value2['class'])){ + $class = "list".$i_alternate; + } else { + $class = $s_value2['class']; + } + + if(!isset($s_value2['attach'])){ + $style = ""; + } else { + $style = " ".$s_value2['attach']." " ; + } + + $s_return .= "\n"; + } + $s_return .= "\n"; + } + } + + // if fewer than 22 Entries (list not full), print row to fill empty space + //FIXME: Why 22? Isn't the size dynamic + if($this->_numEntries()<=22){ + $fill= ""; + for ($i= 1; $i <= $this->cols; $i++){ + if ($i == $this->cols){ + $fill.= ""; + } else { + $fill.= ""; + } + } + $s_return.="\n$fill"; + } + if($this->i_entriesPerPage == 0) { + $s_return .= "\n
"; + $s_return .= ""; + } + } + + $i_alternate=0; + if(isset($_GET['start'])){ + session::set('start'.$this->pageid,$_GET['start']); + $start = $_GET['start']; + } else { + if(session::is_set('start'.$this->pageid)){ + $start = session::get('start'.$this->pageid); + } else { + $start=0; + } + } + + /* If divlist is empty, append a single white entry */ + if(count($this->a_entries)==0){ + $str = $s_return.""; + $str.=""; + $str.=""; + if($this->i_entriesPerPage == 0) { + $str.="
 
"; + $s_return .= $s_value2['string']; + $s_return .= "\n 
  
".range_selector($this->_numentries(),$start,$this->i_entriesPerPage)."
"; + $s_return .= $s_value2['string']; + $s_return .= "
  
+ +
+ {t}Error{/t} + + ".$this->s_Title."
+ ".$this->s_Message."

+ "._("Please fix the above error and reload the page.")." +
"; + return($display);; + }else{ + + $smarty = get_smarty(); + $smarty->assign("s_Trace" ,print_a($this->a_Trace,TRUE)); + $smarty->assign("i_TraceCnt",count($this->a_Trace)); + $smarty->assign("i_Type",$this->i_Type); + $smarty->assign("s_Message",$this->s_Message); + $smarty->assign("s_Title",$this->s_Title); + $smarty->assign("i_ID",$this->i_ID); + $smarty->assign("frame",false); + $smarty->assign("JS",session::global_get('js')); + $smarty->assign("IE",preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])); + return($smarty->fetch(get_template_path('msg_dialog.tpl'))); + } + } + + + public function is_confirmed() + { + if(isset($_POST['MSG_OK'.$this->i_ID])){ + return(TRUE); + }else{ + return(FALSE); + } + } + + + public static function get_dialogs() + { + $return =""; + $dialog_ids= ""; + + $seen = ""; + if(isset($_POST['closed_msg_dialogs'])){ +# $seen = $_POST['closed_msg_dialogs']; + } + + if(session::is_set('msg_dialogs') && is_array(session::get('msg_dialogs')) && count(session::get('msg_dialogs'))){ + + /* Get frame one */ + $smarty = get_smarty(); + $smarty->assign("frame", true); + $smarty->assign("IE",preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])); + $return = $smarty->fetch(get_template_path('msg_dialog.tpl')); + + if(!session::global_get('js')){ + $dialog = array_pop(session::get('msg_dialogs')); + $return.= $dialog->execute(); + }else{ + $msg_dialogs = session::get('msg_dialogs'); + foreach($msg_dialogs as $key => $dialog){ + + if(preg_match("/".$dialog->get_ID()."/",$seen)){ + unset($msg_dialogs[$key]); + }else{ + $return.= $dialog->execute(); + $dialog_ids= $dialog->get_ID().",".$dialog_ids; + } + unset($msg_dialogs[$key]); + } + session::set('msg_dialogs',$msg_dialogs); + } + $dialog_ids = preg_replace("/,$/","",$dialog_ids); + + $return .= ""; + $return .=""; + $return .=""; + $return .=""; + $return .=""; + } + return($return); + } + +} +?> diff --git a/trunk/gosa-core/include/class_multi_plug.inc b/trunk/gosa-core/include/class_multi_plug.inc new file mode 100644 index 000000000..c999641c1 --- /dev/null +++ b/trunk/gosa-core/include/class_multi_plug.inc @@ -0,0 +1,429 @@ +o_tab <-- dummy object, collects HTML posts, displays ui + |->a_handles <-- tab object for each given dn + |->tab object for dn 1 + |->tab object for dn 2 + ... + |->tab object for dn n + + +Other functions implemented: +============================ + +CLASS tab + - multiple_support_available() Check if there is at least one plugin with + enabled multiple edit support + - enable_multiple_support() Enable multiple edit, for this tab. + +CLASS plugin + - enable_multiple_support() Enable multiple support for this plugin. + - init_multiple_support() Init summy object, to preset some values. + - multiple_execute() Display dummy object ui. + - multiple_save_object() Get posted values in multiple edit mode. + - multiple_check() Check values specified in dummy object. + - get_multi_edit_values() Get values changed from dummy object. + - set_multi_edit_values() Set values collected with get_multi_edit_values. + to all objects currently edited. + + +Process: +======== + +multi_plug::multi_plug() + |->o_tab = new tab() #Initialize ui handle + | + |->handles + | |->handles[] = new tab() #Initialize objects we want to edit at once + | + |->o_tab->enable_multiple_support() #Enable multiple support for ui handle + |->detect_multiple_used_attributes() #Update ui handle with some default values + |->handles[] + |->by_object->get_multi_init_values() #Get attributes from all handles + |->o_tab + |->by_object->init_multiple_support() #Assign values to ui handle + | + |->execute() #Display ui + | |->o_tab->execute() + |->by_object->multiple_execute() + | + |->check() #Check given values + |->o_tab->check() + |->by_object->multiple_check() + | + |->save_object() #Save posts + |->o_tab->save_object() + |->by_object->multiple_save_object() + | + |->save() #Save collected values + |->populate_values() #Populate values to all handles + |->o_tab->get_multi_edit_values() #Get values to populate + |->handles->set_multi_edit_values() #Set values + |->handles->save() #Save handles + + + + +Using this class: +================= + Simple Example: + + $dn = array(dn1,dn2,dn3); + $tmp = new multi_plug($config,"usertabs",$config->data['TABS']['USERTABS'],$dn); + echo $tmp->execute(); + + $tmp can now be used like the normal tab class, execute, save_object ... + + To enable multipe edit for a specific plugin, + just set the plugin variable 'multiple_support' to true: + + var $multiple_support = TRUE; + + If plugin::multiple_support is true, the member function + multiple_execute() will be called and displayed, NOT execute(). + + (I will put this in the wiki, later. This are just notes for me.) + +*/ + + +/*! \brief Handles multiple edits for a given set of dns. + \author Fabian Hickert + \version 1.01 + \date 2007/12/07 + + This class edits multiple tab objects at once. + 1. There is a dummy tab object initialized that collects the user input. + 2. All given objects specified by '$dn' will be initialized and the collected + data from the dummy object will be populated to them. + */ +class multi_plug +{ + /* Tab handler for each given dn entry */ + public $a_handles = array(); + + /* Dummy handler which collects the data */ + private $o_tab = NULL; + + public $dn = array(); + public $config = NULL; + private $s_class= ""; + public $current = ""; + public $by_object = array(); + public $by_name = array(); + + /*! \brief Creates a multi_plug object + @param object $config GOsa Configuration object + @param string $class The class name of the tab we want to edit. e.g. usertabs + @param string $tab The config tab name e.g. USERTABS + @param array $dns The object dns we want to edit. + @return object multi_plug + */ + public function __construct($config,$class,$tab,$dns,$acl_base,$acl_category) + { + if(!count($dns)){ + return; + } + + $this->dn = $dns; + $this->config = $config; + $this->s_class = $class; + + /* Initialize collector object + * Used to display the ui and to collect the user input. + */ + $this->o_tab = new $class($config,$tab,"new",$acl_category); + $this->o_tab->set_acl_base($acl_base); + $this->by_object = &$this->o_tab->by_object; + $this->by_name = &$this->o_tab->by_name; + $this->current = &$this->o_tab->current; + + /* Check if the specified tab object supports multiple edits + */ + if($this->o_tab->multiple_support_available()){ + + /* Enable multiple actions for the collector object + */ + $this->o_tab->enable_multiple_support(); + + /* Initialize the objects we want to edit at once + */ + foreach($dns as $dn){ + $obj = new $class($config,$tab,$dn,$acl_category); + $obj->set_acl_base($acl_base); + $this->a_handles[] = $obj; + } + } + + /* Detect attributes used by all plugins and set + * those values as default in edit handle + */ + $this->detect_multiple_used_attributes(); + } + + + /*! \brief Combine two ldap result arrays. + * @param array $base Base array + * @param array $add Array to add + * @returns array Combination of $base and $add + */ + private function array_combine($base,$add) + { + + foreach($add as $key => $attr) { + if(!is_numeric($key)){ + + if(!is_array($add[$key])){ + $add[$key] = array('count' => 1,$add[$key]); + } + + if(!isset($base[$key])){ + $base[$key] = $add[$key]; + }else{ + + if(!isset($base[$key]['count'])){ + $base[$key]['count'] = count($base[$key]); + } + + if(!isset($add[$key]['count'])){ + $add[$key]['count'] = count($add[$key]); + } + for($i=0;$i<$add[$key]['count'];$i++){ + if(!in_array($add[$key][$i],$base[$key])){ + $base[$key][] = $add[$key][$i]; + $base[$key]['count']++; + } + } + } + } + } + return($base); + } + + + /*! \brief Intersect two ldap result arrays/Inner join of two ldap result arrays + * @param array $base Base array + * @param array $minus Array number two + * @returns array Result intersection + */ + private function array_intersect($base,$minus) + { + foreach($base as $key => $entry){ + if(is_numeric($key) || !isset($minus[$key])){ + unset($base[$key]); + }elseif(gettype($base[$key]) != gettype($minus[$key])){ + unset($base[$key]); + }elseif(is_string($base[$key]) && $base[$key]!=$minus[$key]){ + unset($base[$key]); + }elseif(is_array($base[$key])){ + $tmp = array(); + if(!isset($base[$key]['count'])){ + $base[$key]['count'] = count($base[$key]); + } + for($i = 0 ; $i < $base[$key]['count'] ; $i ++){ + if(isset($base[$key][$i]) && in_array($base[$key][$i],$minus[$key])){ + $tmp[] = $base[$key][$i]; + } + } + if(count($tmp)){ + $tmp['count'] = count($tmp); + $base[$key] = $tmp; + }else{ + unset($base[$key]); + } + } + } + return($base); + } + + + /*! \brief Detect values that are used in all edited objects. + */ + private function detect_multiple_used_attributes() + { + foreach($this->o_tab->by_object as $name => $plug){ + + if(empty($name)) continue; + + $attrs = array(); + $all = array(); + foreach($this->a_handles as $hid => $handle){ + $h_attrs = $this->a_handles[$hid]->by_object[$name]->get_multi_init_values(); + if(count($attrs) == 0){ + $attrs = $h_attrs; + }else{ + $attrs = $this->array_intersect($attrs,$h_attrs); + } + $all = $this->array_combine($all,$h_attrs); + } + $this->o_tab->by_object[$name]->init_multiple_support($attrs,$all); + } + } + + + /*! \brief Returns the edit ui for multiple edit. + @return string HTML User interface for given tab object. + */ + public function execute() + { + $str = $this->o_tab->execute(); + return($str); + } + + + /*! \brief Checks if one of the objects we want to edit is locked. + @return boolean Returns TRUE if at least one entry is locked, else false. + */ + public function entries_locked() + { + $ui = get_userinfo(); + foreach($this->dn as $dn){ + if(get_lock($dn) != ""){ + return(TRUE); + } + } + return(FALSE); + } + + + /*! \brief Generates a lock message that can be displayed if an entry is locked. + @return string Returns a list of locked entries + */ + public function display_lock_message() + { + $ui = get_userinfo(); + $lock_msg = ""; + $lock_msg.= gen_locked_message ($ui->dn, $this->dn); + return($lock_msg); + } + + + /*! \brief Locks all currently managed objects (array $this->dn) + @return boolean Returns TRUE + */ + public function lock_entries($uid) + { + foreach($this->dn as $dn) + add_lock($dn,$uid); + return(TRUE); + } + + + /*! \brief Checks if the given tab object supports multiple edit. + @return boolean Returns TRUE if the given tab objects supports multiple edit else FALSE. + */ + public function multiple_available() + { + if(isset($this->o_tab) && is_object($this->o_tab)){ + return($this->o_tab->multiple_support_available()); + }else{ + return(FALSE); + } + } + + + /*! \brief Sets the currently active tab. The tab that will be displayed by $this->execute(). + */ + public function set_active_tab($str) + { + $this->current = $str; + } + + + /*! \brief Returns the object info string, that can be displayed in the tab header. + @return string Returns an information string, containing the list of currently edited dns. + */ + public function get_object_info() + { + return(_("You are currently editing mutliple entries.")); + } + + + /*! \brief Handles all HTML posts from the dummy tab object. + */ + public function save_object() + { + $this->o_tab->save_object(); + } + + + /*! \brief Checks if the values fetched by $this->save_object() are valid. + @param array Returns an array containig all error messages. + */ + public function check() + { + $messages = $this->o_tab->check(); + return($messages); + } + + + /*! \brief Currently not implemented, later be used to trigger password changes. + @param boolean Returns TRUE if a password change is needed. + */ + public function password_change_needed() + { + foreach($this->a_handles as $i_id => $o_handle){ + if($o_handle->password_change_needed() && isset($o_handle->by_object['user'])){ + new msg_dialog(_("Password reset"),_("The user password was resetted, please set a new password value!"),WARNING_DIALOG); + change_password ($o_handle->dn, "",0, $o_handle->by_object['user']->pw_storage); + } + } + return(FALSE); + } + + + /*! \brief Populate all collected values to the target tab objects ($this->o_handles) + */ + public function populate_values() + { + if($this->multiple_available() && is_array($this->a_handles)){ + foreach($this->o_tab->by_object as $name => $obj){ + + $values = $this->o_tab->by_object[$name]->get_multi_edit_values(); + foreach($this->a_handles as $i_id => $o_handle){ + $this->a_handles[$i_id]->by_object[$name]->set_multi_edit_values($values); + } + } + } + } + + + /*! \brief Save all edited tab objects ($this->o_handles). + */ + public function save() + { + if($this->multiple_available() && is_array($this->a_handles)){ + $this->populate_values(); + foreach($this->a_handles as $i_id => $o_handle){ + $o_handle->save(); + } + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_plugin.inc b/trunk/gosa-core/include/class_plugin.inc new file mode 100644 index 000000000..1c57be2cc --- /dev/null +++ b/trunk/gosa-core/include/class_plugin.inc @@ -0,0 +1,2088 @@ + + \version 2.00 + \date 24.07.2003 + + This is the base class for all plugins. It can be used standalone or + can be included by the tabs class. All management should be done + within this class. Extend your plugins from this class. + */ + +class plugin +{ + /*! + \brief Reference to parent object + + This variable is used when the plugin is included in tabs + and keeps reference to the tab class. Communication to other + tabs is possible by 'name'. So the 'fax' plugin can ask the + 'userinfo' plugin for the fax number. + + \sa tab + */ + var $parent= NULL; + + /*! + \brief Configuration container + + Access to global configuration + */ + var $config= NULL; + + /*! + \brief Mark plugin as account + + Defines whether this plugin is defined as an account or not. + This has consequences for the plugin to be saved from tab + mode. If it is set to 'FALSE' the tab will call the delete + function, else the save function. Should be set to 'TRUE' if + the construtor detects a valid LDAP object. + + \sa plugin::plugin() + */ + var $is_account= FALSE; + var $initially_was_account= FALSE; + + /*! + \brief Mark plugin as template + + Defines whether we are creating a template or a normal object. + Has conseqences on the way execute() shows the formular and how + save() puts the data to LDAP. + + \sa plugin::save() plugin::execute() + */ + var $is_template= FALSE; + var $ignore_account= FALSE; + var $is_modified= FALSE; + + /*! + \brief Represent temporary LDAP data + + This is only used internally. + */ + var $attrs= array(); + + /* Keep set of conflicting plugins */ + var $conflicts= array(); + + /* Save unit tags */ + var $gosaUnitTag= ""; + var $skipTagging= FALSE; + + /*! + \brief Used standard values + + dn + */ + var $dn= ""; + var $uid= ""; + var $sn= ""; + var $givenName= ""; + var $acl= "*none*"; + var $dialog= FALSE; + var $snapDialog = NULL; + + /* attribute list for save action */ + var $attributes= array(); + var $objectclasses= array(); + var $is_new= TRUE; + var $saved_attributes= array(); + + var $acl_base= ""; + var $acl_category= ""; + var $read_only = FALSE; // Used when the entry is opened as "readonly" due to locks. + + /* This can be set to render the tabulators in another stylesheet */ + var $pl_notify= FALSE; + + /* Object entry CSN */ + var $entryCSN = ""; + var $CSN_check_active = FALSE; + + /* This variable indicates that this class can handle multiple dns at once. */ + var $multiple_support = FALSE; + var $multi_attrs = array(); + var $multi_attrs_all = array(); + + /* This aviable indicates, that we are currently in multiple edit handle */ + var $multiple_support_active = FALSE; + var $selected_edit_values = array(); + var $multi_boxes = array(); + + /*! \brief plugin constructor + + If 'dn' is set, the node loads the given 'dn' from LDAP + + \param dn Distinguished name to initialize plugin from + \sa plugin() + */ + function plugin (&$config, $dn= NULL, $parent= NULL) + { + /* Configuration is fine, allways */ + $this->config= &$config; + $this->dn= $dn; + + /* Handle new accounts, don't read information from LDAP */ + if ($dn == "new"){ + return; + } + + /* Check if this entry was opened in read only mode */ + if(isset($_POST['open_readonly'])){ + if(session::global_is_set("LOCK_CACHE")){ + $cache = &session::get("LOCK_CACHE"); + if(isset($cache['READ_ONLY'][$this->dn])){ + $this->read_only = TRUE; + } + } + } + + /* Save current dn as acl_base */ + $this->acl_base= $dn; + + /* Get LDAP descriptor */ + if ($dn !== NULL){ + + /* Load data to 'attrs' and save 'dn' */ + if ($parent !== NULL){ + $this->attrs= $parent->attrs; + } else { + $ldap= $this->config->get_ldap_link(); + $ldap->cat ($dn); + $this->attrs= $ldap->fetch(); + } + + /* Copy needed attributes */ + foreach ($this->attributes as $val){ + $found= array_key_ics($val, $this->attrs); + if ($found != ""){ + $this->$val= $found[0]; + } + } + + /* gosaUnitTag loading... */ + if (isset($this->attrs['gosaUnitTag'][0])){ + $this->gosaUnitTag= $this->attrs['gosaUnitTag'][0]; + } + + /* Set the template flag according to the existence of objectClass + gosaUserTemplate */ + if (isset($this->attrs['objectClass'])){ + if (in_array_ics ("gosaUserTemplate", $this->attrs['objectClass'])){ + $this->is_template= TRUE; + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + "found", "Template check"); + } + } + + /* Is Account? */ + $found= TRUE; + foreach ($this->objectclasses as $obj){ + if (preg_match('/top/i', $obj)){ + continue; + } + if (!isset($this->attrs['objectClass']) || !in_array_ics ($obj, $this->attrs['objectClass'])){ + $found= FALSE; + break; + } + } + if ($found){ + $this->is_account= TRUE; + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + "found", "Object check"); + } + + /* Prepare saved attributes */ + $this->saved_attributes= $this->attrs; + foreach ($this->saved_attributes as $index => $value){ + if (is_numeric($index)){ + unset($this->saved_attributes[$index]); + continue; + } + + if (!in_array_ics($index, $this->attributes) && strcasecmp('objectClass', $index)){ + unset($this->saved_attributes[$index]); + continue; + } + + if (isset($this->saved_attributes[$index][0])){ + if(!isset($this->saved_attributes[$index]["count"])){ + $this->saved_attributes[$index]["count"] = count($this->saved_attributes[$index]); + } + if($this->saved_attributes[$index]["count"] == 1){ + $tmp= $this->saved_attributes[$index][0]; + unset($this->saved_attributes[$index]); + $this->saved_attributes[$index]= $tmp; + continue; + } + } + unset($this->saved_attributes["$index"]["count"]); + } + + if(isset($this->attrs['gosaUnitTag'])){ + $this->saved_attributes['gosaUnitTag'] = $this->attrs['gosaUnitTag'][0]; + } + } + + /* Save initial account state */ + $this->initially_was_account= $this->is_account; + } + + + /*! \brief execute plugin + + Generates the html output for this node + */ + function execute() + { + /* This one is empty currently. Fabian - please fill in the docu code */ + session::global_set('current_class_for_help',get_class($this)); + + /* Reset Lock message POST/GET check array, to prevent perg_match errors*/ + session::set('LOCK_VARS_TO_USE',array()); + session::set('LOCK_VARS_USED',array()); + } + + /*! \brief execute plugin + Removes object from parent + */ + function remove_from_parent() + { + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Get current objectClasses in order to add the required ones */ + $ldap->cat($this->dn); + $tmp= $ldap->fetch (); + $oc= array(); + if (isset($tmp['objectClass'])){ + $oc= $tmp['objectClass']; + unset($oc['count']); + } + + /* Remove objectClasses from entry */ + $ldap->cd($this->dn); + $this->attrs= array(); + $this->attrs['objectClass']= array_remove_entries_ics($this->objectclasses,$oc); + + /* Unset attributes from entry */ + foreach ($this->attributes as $val){ + $this->attrs["$val"]= array(); + } + + /* Unset account info */ + $this->is_account= FALSE; + + /* Do not write in plugin base class, this must be done by + children, since there are normally additional attribs, + lists, etc. */ + /* + $ldap->modify($this->attrs); + */ + } + + + /*! \brief Save HTML posted data to object + */ + function save_object() + { + /* Update entry CSN if it is empty. */ + if(empty($this->entryCSN) && $this->CSN_check_active){ + $this->entryCSN = getEntryCSN($this->dn); + } + + /* Save values to object */ + foreach ($this->attributes as $val){ + if ($this->acl_is_writeable($val) && isset ($_POST["$val"])){ + /* Check for modifications */ + if (get_magic_quotes_gpc()) { + $data= stripcslashes($_POST["$val"]); + } else { + $data= $this->$val = $_POST["$val"]; + } + if ($this->$val != $data){ + $this->is_modified= TRUE; + } + + /* Okay, how can I explain this fix ... + * In firefox, disabled option fields aren't selectable ... but in IE you can select these fileds. + * So IE posts these 'unselectable' option, with value = chr(194) + * chr(194) seems to be the   in between the ...option> $val= $data; + } + } + } + + + /* Save data to LDAP, depending on is_account we save or delete */ + function save() + { + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Save all plugins */ + $this->entryCSN = ""; + + /* Start with empty array */ + $this->attrs= array(); + + /* Get current objectClasses in order to add the required ones */ + $ldap->cat($this->dn); + + $tmp= $ldap->fetch (); + + $oc= array(); + if (isset($tmp['objectClass'])){ + $oc= $tmp["objectClass"]; + $this->is_new= FALSE; + unset($oc['count']); + } else { + $this->is_new= TRUE; + } + + /* Load (minimum) attributes, add missing ones */ + $this->attrs['objectClass']= gosa_array_merge($oc,$this->objectclasses); + + /* Copy standard attributes */ + foreach ($this->attributes as $val){ + if ($this->$val != ""){ + $this->attrs["$val"]= $this->$val; + } elseif (!$this->is_new) { + $this->attrs["$val"]= array(); + } + } + + /* Handle tagging */ + $this->tag_attrs($this->attrs); + } + + + function cleanup() + { + foreach ($this->attrs as $index => $value){ + + /* Convert arrays with one element to non arrays, if the saved + attributes are no array, too */ + if (is_array($this->attrs[$index]) && + count ($this->attrs[$index]) == 1 && + isset($this->saved_attributes[$index]) && + !is_array($this->saved_attributes[$index])){ + + $tmp= $this->attrs[$index][0]; + $this->attrs[$index]= $tmp; + } + + /* Remove emtpy arrays if they do not differ */ + if (is_array($this->attrs[$index]) && + count($this->attrs[$index]) == 0 && + !isset($this->saved_attributes[$index])){ + + unset ($this->attrs[$index]); + continue; + } + + /* Remove single attributes that do not differ */ + if (!is_array($this->attrs[$index]) && + isset($this->saved_attributes[$index]) && + !is_array($this->saved_attributes[$index]) && + $this->attrs[$index] == $this->saved_attributes[$index]){ + + unset ($this->attrs[$index]); + continue; + } + + /* Remove arrays that do not differ */ + if (is_array($this->attrs[$index]) && + isset($this->saved_attributes[$index]) && + is_array($this->saved_attributes[$index])){ + + if (!array_differs($this->attrs[$index],$this->saved_attributes[$index])){ + unset ($this->attrs[$index]); + continue; + } + } + } + + /* Update saved attributes and ensure that next cleanups will be successful too */ + foreach($this->attrs as $name => $value){ + $this->saved_attributes[$name] = $value; + } + } + + /* Check formular input */ + function check() + { + $message= array(); + + /* Skip if we've no config object */ + if (!isset($this->config) || !is_object($this->config)){ + return $message; + } + + /* Find hooks entries for this class */ + $command= $this->config->search(get_class($this), "CHECK", array('menu', 'tabs')); + + if ($command != ""){ + + if (!check_command($command)){ + $message[]= msgPool::cmdnotfound("CHECK", get_class($this)); + } else { + + /* Generate "ldif" for check hook */ + $ldif= "dn: $this->dn\n"; + + /* ... objectClasses */ + foreach ($this->objectclasses as $oc){ + $ldif.= "objectClass: $oc\n"; + } + + /* ... attributes */ + foreach ($this->attributes as $attr){ + if ($this->$attr == ""){ + continue; + } + if (is_array($this->$attr)){ + foreach ($this->$attr as $val){ + $ldif.= "$attr: $val\n"; + } + } else { + $ldif.= "$attr: ".$this->$attr."\n"; + } + } + + /* Append empty line */ + $ldif.= "\n"; + + /* Feed "ldif" into hook and retrieve result*/ + $descriptorspec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w")); + $fh= proc_open($command, $descriptorspec, $pipes); + if (is_resource($fh)) { + fwrite ($pipes[0], $ldif); + fclose($pipes[0]); + + $result= stream_get_contents($pipes[1]); + if ($result != ""){ + $message[]= $result; + } + + fclose($pipes[1]); + fclose($pipes[2]); + proc_close($fh); + } + } + + } + + /* Check entryCSN */ + if($this->CSN_check_active){ + $current_csn = getEntryCSN($this->dn); + if($current_csn != $this->entryCSN && !empty($this->entryCSN) && !empty($current_csn)){ + $this->entryCSN = $current_csn; + $message[] = _("The object has changed since opened in GOsa. All changes that may be done by others get lost if you save this entry!"); + } + } + return ($message); + } + + /* Adapt from template, using 'dn' */ + function adapt_from_template($dn, $skip= array()) + { + /* Include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Load requested 'dn' to 'attrs' */ + $ldap->cat ($dn); + $this->attrs= $ldap->fetch(); + + /* Walk through attributes */ + foreach ($this->attributes as $val){ + + /* Skip the ones in skip list */ + if (in_array($val, $skip)){ + continue; + } + + if (isset($this->attrs["$val"][0])){ + + /* If attribute is set, replace dynamic parts: + %sn, %givenName and %uid. Fill these in our local variables. */ + $value= $this->attrs["$val"][0]; + + foreach (array("sn", "givenName", "uid") as $repl){ + if (preg_match("/%$repl/i", $value)){ + $value= preg_replace ("/%$repl/i", $this->parent->$repl, $value); + } + } + $this->$val= $value; + } + } + + /* Is Account? */ + $found= TRUE; + foreach ($this->objectclasses as $obj){ + if (preg_match('/top/i', $obj)){ + continue; + } + if (!in_array_ics ($obj, $this->attrs['objectClass'])){ + $found= FALSE; + break; + } + } + if ($found){ + $this->is_account= TRUE; + } + } + + /* Indicate whether a password change is needed or not */ + function password_change_needed() + { + return FALSE; + } + + + /* Show header message for tab dialogs */ + function show_enable_header($button_text, $text, $disabled= FALSE) + { + if (($disabled == TRUE) || (!$this->acl_is_createable())){ + $state= "disabled"; + } else { + $state= ""; + } + $display= "\n

$text

\n"; + $display.= "

 

"; + + return($display); + } + + + /* Show header message for tab dialogs */ + function show_disable_header($button_text, $text, $disabled= FALSE) + { + if (($disabled == TRUE) || !$this->acl_is_removeable()){ + $state= "disabled"; + } else { + $state= ""; + } + $display= "\n

$text

\n"; + $display.= "

 

"; + + return($display); + } + + + /* Show header message for tab dialogs */ + function show_header($button_text, $text, $disabled= FALSE) + { + echo "FIXME: show_header should be replaced by show_disable_header and show_enable_header
"; + if ($disabled == TRUE){ + $state= "disabled"; + } else { + $state= ""; + } + $display= "\n

$text

\n"; + $display.= "acl_is_createable()?'':'disabled')." ".$state. + ">

 

"; + + return($display); + } + + + function postcreate($add_attrs= array()) + { + /* Find postcreate entries for this class */ + $command= $this->config->search(get_class($this), "POSTCREATE",array('menu', 'tabs')); + + if ($command != ""){ + + /* Walk through attribute list */ + foreach ($this->attributes as $attr){ + if (!is_array($this->$attr)){ + $add_attrs[$attr] = $this->$attr; + } + } + $add_attrs['dn']=$this->dn; + + $tmp = array(); + foreach($add_attrs as $name => $value){ + $tmp[$name] = strlen($name); + } + arsort($tmp); + + /* Additional attributes */ + foreach ($tmp as $name => $len){ + $value = $add_attrs[$name]; + $command= str_replace("%$name", "$value", $command); + } + + if (check_command($command)){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $command, "Execute"); + exec($command,$arr); + foreach($arr as $str){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $command, "Result: ".$str); + } + } else { + $message= msgPool::cmdnotfound("POSTCREATE", get_class($this)); + msg_dialog::display(_("Error"), $message, ERROR_DIALOG); + } + } + } + + function postmodify($add_attrs= array()) + { + /* Find postcreate entries for this class */ + $command= $this->config->search(get_class($this), "POSTMODIFY",array('menu','tabs')); + + if ($command != ""){ + + /* Walk through attribute list */ + foreach ($this->attributes as $attr){ + if (!is_array($this->$attr)){ + $add_attrs[$attr] = $this->$attr; + } + } + $add_attrs['dn']=$this->dn; + + $tmp = array(); + foreach($add_attrs as $name => $value){ + $tmp[$name] = strlen($name); + } + arsort($tmp); + + /* Additional attributes */ + foreach ($tmp as $name => $len){ + $value = $add_attrs[$name]; + $command= str_replace("%$name", "$value", $command); + } + + if (check_command($command)){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__,$command, "Execute"); + exec($command,$arr); + foreach($arr as $str){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $command, "Result: ".$str); + } + } else { + $message= msgPool::cmdnotfound("POSTMODIFY", get_class($this)); + msg_dialog::display(_("Error"), $message, ERROR_DIALOG); + } + } + } + + function postremove($add_attrs= array()) + { + /* Find postremove entries for this class */ + $command= $this->config->search(get_class($this), "POSTREMOVE",array('menu','tabs')); + if ($command != ""){ + + /* Walk through attribute list */ + foreach ($this->attributes as $attr){ + if (!is_array($this->$attr)){ + $add_attrs[$attr] = $this->$attr; + } + } + $add_attrs['dn']=$this->dn; + + $tmp = array(); + foreach($add_attrs as $name => $value){ + $tmp[$name] = strlen($name); + } + arsort($tmp); + + /* Additional attributes */ + foreach ($tmp as $name => $len){ + $value = $add_attrs[$name]; + $command= str_replace("%$name", "$value", $command); + } + + if (check_command($command)){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $command, "Execute"); + + exec($command,$arr); + foreach($arr as $str){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $command, "Result: ".$str); + } + } else { + $message= msgPool::cmdnotfound("POSTREMOVE", get_class($this)); + msg_dialog::display(_("Error"), $message, ERROR_DIALOG); + } + } + } + + /* Create unique DN */ + function create_unique_dn($attribute, $base) + { + $ldap= $this->config->get_ldap_link(); + $base= preg_replace("/^,*/", "", $base); + + /* Try to use plain entry first */ + $dn= "$attribute=".$this->$attribute.",$base"; + $ldap->cat ($dn, array('dn')); + if (!$ldap->fetch()){ + return ($dn); + } + + /* Look for additional attributes */ + foreach ($this->attributes as $attr){ + if ($attr == $attribute || $this->$attr == ""){ + continue; + } + + $dn= "$attribute=".$this->$attribute."+$attr=".$this->$attr.",$base"; + $ldap->cat ($dn, array('dn')); + if (!$ldap->fetch()){ + return ($dn); + } + } + + /* None found */ + return ("none"); + } + + function rebind($ldap, $referral) + { + $credentials= LDAP::get_credentials($referral, $this->config->current['REFERRAL']); + if (ldap_bind($ldap, $credentials['ADMIN'], $this->config->get_credentials($credentials['PASSWORD']))) { + $this->error = "Success"; + $this->hascon=true; + $this->reconnect= true; + return (0); + } else { + $this->error = "Could not bind to " . $credentials['ADMIN']; + return NULL; + } + } + + + /* Recursively copy ldap object */ + function _copy($src_dn,$dst_dn) + { + $ldap=$this->config->get_ldap_link(); + $ldap->cat($src_dn); + $attrs= $ldap->fetch(); + + /* Grummble. This really sucks. PHP ldap doesn't support rdn stuff. */ + $ds= ldap_connect($this->config->current['SERVER']); + ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); + if (function_exists("ldap_set_rebind_proc") && isset($this->config->current['REFERRAL'])) { + ldap_set_rebind_proc($ds, array(&$this, "rebind")); + } + + $r=ldap_bind($ds,$this->config->current['ADMINDN'], $this->config->current['ADMINPASSWORD']); + $sr=ldap_read($ds, LDAP::fix($src_dn), "objectClass=*"); + + /* Fill data from LDAP */ + $new= array(); + if ($sr) { + $ei=ldap_first_entry($ds, $sr); + if ($ei) { + foreach($attrs as $attr => $val){ + if ($info = @ldap_get_values_len($ds, $ei, $attr)){ + for ($i= 0; $i<$info['count']; $i++){ + if ($info['count'] == 1){ + $new[$attr]= $info[$i]; + } else { + $new[$attr][]= $info[$i]; + } + } + } + } + } + } + + /* close conncetion */ + ldap_unbind($ds); + + /* Adapt naming attribute */ + $dst_name= preg_replace("/^([^=]+)=.*$/", "\\1", $dst_dn); + $dst_val = preg_replace("/^[^=]+=([^,+]+).*,.*$/", "\\1", $dst_dn); + $new[$dst_name]= LDAP::fix($dst_val); + + /* Check if this is a department. + * If it is a dep. && there is a , override in his ou + * change \2C to , again, else this entry can't be saved ... + */ + if((isset($new['ou'])) &&( preg_match("/\\,/",$new['ou']))){ + $new['ou'] = str_replace("\\\\,",",",$new['ou']); + } + + /* Save copy */ + $ldap->connect(); + $ldap->cd($this->config->current['BASE']); + + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $dst_dn)); + + /* FAIvariable=.../..., cn=.. + could not be saved, because the attribute FAIvariable was different to + the dn FAIvariable=..., cn=... */ + if(in_array_ics("FAIdebconfInfo",$new['objectClass'])){ + $new['FAIvariable'] = $ldap->fix($new['FAIvariable']); + } + $ldap->cd($dst_dn); + $ldap->add($new); + + if (!$ldap->success()){ + trigger_error("Trying to save $dst_dn failed.", + E_USER_WARNING); + return(FALSE); + } + return(TRUE); + } + + + /* This is a workaround function. */ + function copy($src_dn, $dst_dn) + { + /* Rename dn in possible object groups */ + $ldap= $this->config->get_ldap_link(); + $ldap->search('(&(objectClass=gosaGroupOfNames)(member='.@LDAP::prepare4filter($src_dn).'))', + array('cn')); + while ($attrs= $ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$src_dn]); + $og->member[$dst_dn]= $dst_dn; + $og->save (); + } + + $ldap->cat($dst_dn); + $attrs= $ldap->fetch(); + if (count($attrs)){ + trigger_error("Trying to overwrite ".LDAP::fix($dst_dn).", which already exists.", + E_USER_WARNING); + return (FALSE); + } + + $ldap->cat($src_dn); + $attrs= $ldap->fetch(); + if (!count($attrs)){ + trigger_error("Trying to move ".LDAP::fix($src_dn).", which does not seem to exist.", + E_USER_WARNING); + return (FALSE); + } + + $ldap->cd($src_dn); + $ldap->search("objectClass=*",array("dn")); + while($attrs = $ldap->fetch()){ + $src = $attrs['dn']; + $dst = preg_replace("/".preg_quote($src_dn, '/')."$/",$dst_dn,$attrs['dn']); + $this->_copy($src,$dst); + } + return (TRUE); + } + + + + /*! \brief Move a given ldap object indentified by $src_dn \ + to the given destination $dst_dn \ + * Ensure that all references are updated (ogroups) \ + * Update ACLs \ + * Update accessTo \ + @param String The source dn. + @param String The destination dn. + @return Boolean TRUE on success else FALSE. + */ + function rename($src_dn, $dst_dn) + { + $start = microtime(1); + + /* Try to move the source entry to the destination position */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace("/^[^,]+,/","",$dst_dn)); + if (!$ldap->rename_dn($src_dn,$dst_dn)){ +# msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $src_dn, "", get_class())); + new log("debug","Ldap Protocol v3 implementation error, ldap_rename failed, falling back to manual copy.","FROM: $src_dn -- TO: $dst_dn",array(),$ldap->get_error()); + @DEBUG(DEBUG_LDAP,__LINE__,__FUNCTION__,__FILE__,"Rename failed FROM: $src_dn -- TO: $dst_dn", + "Ldap Protocol v3 implementation error, falling back to maunal method."); + return(FALSE); + } + + /* Get list of users,groups and roles within this tree, + maybe we have to update ACL references. + */ + $leaf_objs = get_list("(|(objectClass=posixGroup)(objectClass=gosaAccount)(objectClass=gosaRole))",array("all"),$dst_dn, + array("dn","objectClass"),GL_SUBSEARCH | GL_NO_ACL_CHECK); + foreach($leaf_objs as $obj){ + $new_dn = $obj['dn']; + $old_dn = preg_replace("/".preg_quote($dst_dn, '/')."$/i",$src_dn,$new_dn); + $this->update_acls($old_dn,$new_dn); + } + + /* Get all objectGroups defined in this database. + and check if there is an entry matching the source dn, + if this is the case, then update this objectgroup to use the new dn. + */ + $ogroups = get_sub_list("(&(objectClass=gosaGroupOfNames)(member=*))","ogroups", + array(get_ou("ogroupRDN")),$this->config->current['BASE'],array("member"), + GL_SUBSEARCH | GL_NO_ACL_CHECK) ; + + /* Walk through all objectGroups and check if there are + members matching the source dn + */ + foreach($ogroups as $ogroup){ + if(isset($ogroup['member'])){ + + /* Reset class object, this will be initialized with class_ogroup on demand + */ + $o_ogroup = NULL; + for($i = 0 ; $i < $ogroup['member']['count'] ; $i ++){ + + $c_mem = $ogroup['member'][$i]; + + if(preg_match("/".preg_quote($src_dn, '/')."$/i",$c_mem)){ + + $d_mem = preg_replace("/".preg_quote($src_dn, '/')."$/i",$dst_dn,$ogroup['member'][$i]); + + if($o_ogroup == NULL){ + $o_ogroup = new ogroup($this->config,$ogroup['dn']); + } + + unset($o_ogroup->member[$c_mem]); + $o_ogroup->member[$d_mem]= $d_mem; + } + } + + /* Save object group if there were changes made on the membership */ + if($o_ogroup != NULL){ + $o_ogroup->save(); + } + } + } + + /* Check if there are gosa departments moved. + If there were deps moved, the force reload of config->deps. + */ + $leaf_deps= get_list("(objectClass=gosaDepartment)",array("all"),$dst_dn, + array("dn","objectClass"),GL_SUBSEARCH | GL_NO_ACL_CHECK); + + if(count($leaf_deps)){ + $this->config->get_departments(); + $this->config->make_idepartments(); + session::global_set("config",$this->config); + $ui =get_userinfo(); + $ui->reset_acl_cache(); + } + + return(TRUE); + } + + + + function move($src_dn, $dst_dn) + { + /* Do not copy if only upper- lowercase has changed */ + if(strtolower($src_dn) == strtolower($dst_dn)){ + return(TRUE); + } + + + /* Try to move the entry instead of copy & delete + */ + if(TRUE){ + + /* Try to move with ldap routines, if this was not successfull + fall back to the old style copy & remove method + */ + if($this->rename($src_dn, $dst_dn)){ + return(TRUE); + }else{ + // See code below. + } + } + + /* Copy source to destination */ + if (!$this->copy($src_dn, $dst_dn)){ + return (FALSE); + } + + /* Delete source */ + $ldap= $this->config->get_ldap_link(); + $ldap->rmdir_recursive($src_dn); + if (!$ldap->success()){ + trigger_error("Trying to delete $src_dn failed.", + E_USER_WARNING); + return (FALSE); + } + + return (TRUE); + } + + + /* Move/Rename complete trees */ + function recursive_move($src_dn, $dst_dn) + { + /* Check if the destination entry exists */ + $ldap= $this->config->get_ldap_link(); + + /* Check if destination exists - abort */ + $ldap->cat($dst_dn, array('dn')); + if ($ldap->fetch()){ + trigger_error("recursive_move $dst_dn already exists.", + E_USER_WARNING); + return (FALSE); + } + + $this->copy($src_dn, $dst_dn); + + /* Remove src_dn */ + $ldap->cd($src_dn); + $ldap->recursive_remove($src_dn); + return (TRUE); + } + + + function handle_post_events($mode, $add_attrs= array()) + { + switch ($mode){ + case "add": + $this->postcreate($add_attrs); + break; + + case "modify": + $this->postmodify($add_attrs); + break; + + case "remove": + $this->postremove($add_attrs); + break; + } + } + + + function saveCopyDialog(){ + } + + + function getCopyDialog(){ + return(array("string"=>"","status"=>"")); + } + + + function PrepareForCopyPaste($source) + { + $todo = $this->attributes; + if(isset($this->CopyPasteVars)){ + $todo = array_merge($todo,$this->CopyPasteVars); + } + + if(count($this->objectclasses)){ + $this->is_account = TRUE; + foreach($this->objectclasses as $class){ + if(!in_array($class,$source['objectClass'])){ + $this->is_account = FALSE; + } + } + } + + foreach($todo as $var){ + if (isset($source[$var])){ + if(isset($source[$var]['count'])){ + if($source[$var]['count'] > 1){ + $this->$var = array(); + $tmp = array(); + for($i = 0 ; $i < $source[$var]['count']; $i++){ + $tmp = $source[$var][$i]; + } + $this->$var = $tmp; + }else{ + $this->$var = $source[$var][0]; + } + }else{ + $this->$var= $source[$var]; + } + } + } + } + + function tag_attrs(&$at, $dn= "", $tag= "", $show= false) + { + /* Skip tagging? + If this is called from departmentGeneric, we have to skip this + tagging procedure. + */ + if($this->skipTagging){ + return; + } + + /* No dn? Self-operation... */ + if ($dn == ""){ + $dn= $this->dn; + + /* No tag? Find it yourself... */ + if ($tag == ""){ + $len= strlen($dn); + + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "No tag for $dn - looking for one...", "Tagging"); + $relevant= array(); + foreach ($this->config->adepartments as $key => $ntag){ + + /* This one is bigger than our dn, its not relevant... */ + if ($len < strlen($key)){ + continue; + } + + /* This one matches with the latter part. Break and don't fix this entry */ + if (preg_match('/(^|,)'.preg_quote($key, '/').'$/', $dn)){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "DEBUG: Possibly relevant: $key", "Tagging"); + $relevant[strlen($key)]= $ntag; + continue; + } + + } + + /* If we've some relevant tags to set, just get the longest one */ + if (count($relevant)){ + ksort($relevant); + $tmp= array_keys($relevant); + $idx= end($tmp); + $tag= $relevant[$idx]; + $this->gosaUnitTag= $tag; + } + } + } + + /* Remove tags that may already be here... */ + remove_objectClass("gosaAdministrativeUnitTag", $at); + if (isset($at['gosaUnitTag'])){ + unset($at['gosaUnitTag']); + } + + /* Set tag? */ + if ($tag != ""){ + add_objectClass("gosaAdministrativeUnitTag", $at); + $at['gosaUnitTag']= $tag; + } + + /* Initially this object was tagged. + - But now, it is no longer inside a tagged department. + So force the remove of the tag. + (objectClass was already removed obove) + */ + if($tag == "" && $this->gosaUnitTag){ + $at['gosaUnitTag'] = array(); + } + } + + + /* Add possibility to stop remove process */ + function allow_remove() + { + $reason= ""; + return $reason; + } + + + /* Create a snapshot of the current object */ + function create_snapshot($type= "snapshot", $description= array()) + { + + /* Check if snapshot functionality is enabled */ + if(!$this->snapshotEnabled()){ + return; + } + + /* Get configuration from gosa.conf */ + $config = $this->config; + + /* Create lokal ldap connection */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + /* check if there are special server configurations for snapshots */ + if($config->get_cfg_value("snapshotURI") == ""){ + + /* Source and destination server are both the same, just copy source to dest obj */ + $ldap_to = $ldap; + $snapldapbase = $this->config->current['BASE']; + + }else{ + $server = $config->get_cfg_value("snapshotURI"); + $user = $config->get_cfg_value("snapshotAdminDn"); + $password = $config->get_cfg_value("snapshotAdminPassword"); + $snapldapbase = $config->get_cfg_value("snapshotBase"); + + $ldap_to = new ldapMultiplexer(new LDAP($user,$password, $server)); + $ldap_to -> cd($snapldapbase); + + if (!$ldap_to->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap_to->get_error(), $snapldapbase, "", get_class())); + } + + } + + /* check if the dn exists */ + if ($ldap->dn_exists($this->dn)){ + + /* Extract seconds & mysecs, they are used as entry index */ + list($usec, $sec)= explode(" ", microtime()); + + /* Collect some infos */ + $base = $this->config->current['BASE']; + $snap_base = $config->get_cfg_value("snapshotBase"); + $base_of_object = preg_replace ('/^[^,]+,/i', '', $this->dn); + $new_base = preg_replace("/".preg_quote($base, '/')."$/","",$base_of_object).$snap_base; + + /* Create object */ +#$data = preg_replace('/^dn:.*\n/', '', $ldap->gen_ldif($this->dn,"(!(objectClass=gosaDepartment))")); + $data = $ldap->gen_ldif($this->dn,"(&(!(objectClass=gosaDepartment))(!(objectClass=FAIclass)))"); + $newName = str_replace(".", "", $sec."-".$usec); + $target= array(); + $target['objectClass'] = array("top", "gosaSnapshotObject"); + $target['gosaSnapshotData'] = gzcompress($data, 6); + $target['gosaSnapshotType'] = $type; + $target['gosaSnapshotDN'] = $this->dn; + $target['description'] = $description; + $target['gosaSnapshotTimestamp'] = $newName; + + /* Insert the new snapshot + But we have to check first, if the given gosaSnapshotTimestamp + is already used, in this case we should increment this value till there is + an unused value. */ + $new_dn = "gosaSnapshotTimestamp=".$newName.",".$new_base; + $ldap_to->cat($new_dn); + while($ldap_to->count()){ + $ldap_to->cat($new_dn); + $newName = str_replace(".", "", $sec."-".($usec++)); + $new_dn = "gosaSnapshotTimestamp=".$newName.",".$new_base; + $target['gosaSnapshotTimestamp'] = $newName; + } + + /* Inset this new snapshot */ + $ldap_to->cd($snapldapbase); + $ldap_to->create_missing_trees($snapldapbase); + $ldap_to->create_missing_trees($new_base); + $ldap_to->cd($new_dn); + $ldap_to->add($target); + if (!$ldap_to->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap_to->get_error(), $new_dn, LDAP_ADD, get_class())); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $new_base, "", get_class())); + } + + } + } + + function remove_snapshot($dn) + { + $ui = get_userinfo(); + $old_dn = $this->dn; + $this->dn = $dn; + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->rmdir_recursive($this->dn); + if(!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn)); + } + $this->dn = $old_dn; + } + + + /* returns true if snapshots are enabled, and false if it is disalbed + There will also be some errors psoted, if the configuration failed */ + function snapshotEnabled() + { + $config = $this->config; + if($config->get_cfg_value("enableSnapshots") == "true"){ + /* Check if the snapshot_base is defined */ + if ($config->get_cfg_value("snapshotBase") == ""){ + msg_dialog::display(_("Configuration error"), sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not set."),"snapshotBase"), ERROR_DIALOG); + return(FALSE); + } + + /* check if there are special server configurations for snapshots */ + if ($config->get_cfg_value("snapshotURI") != ""){ + + /* check if all required vars are available to create a new ldap connection */ + $missing = ""; + foreach(array("snapshotURI","snapshotAdminDn","snapshotAdminPassword","snapshotBase") as $var){ + if($config->get_cfg_value($var) == ""){ + $missing .= $var." "; + msg_dialog::display(_("Configuration error"), sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not set."), $missing), ERROR_DIALOG); + return(FALSE); + } + } + } + return(TRUE); + } + return(FALSE); + } + + + /* Return available snapshots for the given base + */ + function Available_SnapsShots($dn,$raw = false) + { + if(!$this->snapshotEnabled()) return(array()); + + /* Create an additional ldap object which + points to our ldap snapshot server */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $cfg= &$this->config->current; + + /* check if there are special server configurations for snapshots */ + if($this->config->get_cfg_value("snapshotURI") == ""){ + $ldap_to = $ldap; + }else{ + $server = $this->config->get_cfg_value("snapshotURI"); + $user = $this->config->get_cfg_value("snapshotAdminDn"); + $password = $this->config->get_cfg_value("snapshotAdminPassword"); + $snapldapbase = $this->config->get_cfg_value("snapshotBase"); + $ldap_to = new ldapMultiplexer(new LDAP($user,$password, $server)); + $ldap_to -> cd($snapldapbase); + if (!$ldap_to->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap_to->get_error(), $snapldapbase, "", get_class())); + } + } + + /* Prepare bases and some other infos */ + $base = $this->config->current['BASE']; + $snap_base = $this->config->get_cfg_value("snapshotBase"); + $base_of_object = preg_replace ('/^[^,]+,/i', '', $dn); + $new_base = preg_replace("/".preg_quote($base, '/')."$/","",$base_of_object).$snap_base; + $tmp = array(); + + /* Fetch all objects with gosaSnapshotDN=$dn */ + $ldap_to->cd($new_base); + $ldap_to->ls("(&(objectClass=gosaSnapshotObject)(gosaSnapshotDN=".$dn."))",$new_base, + array("gosaSnapshotType","gosaSnapshotTimestamp","gosaSnapshotDN","description")); + + /* Put results into a list and add description if missing */ + while($entry = $ldap_to->fetch()){ + if(!isset($entry['description'][0])){ + $entry['description'][0] = ""; + } + $tmp[] = $entry; + } + + /* Return the raw array, or format the result */ + if($raw){ + return($tmp); + }else{ + $tmp2 = array(); + foreach($tmp as $entry){ + $tmp2[base64_encode($entry['dn'])] = $entry['description'][0]; + } + } + return($tmp2); + } + + + function getAllDeletedSnapshots($base_of_object,$raw = false) + { + if(!$this->snapshotEnabled()) return(array()); + + /* Create an additional ldap object which + points to our ldap snapshot server */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $cfg= &$this->config->current; + + /* check if there are special server configurations for snapshots */ + if($this->config->get_cfg_value("snapshotURI") == ""){ + $ldap_to = $ldap; + }else{ + $server = $this->config->get_cfg_value("snapshotURI"); + $user = $this->config->get_cfg_value("snapshotAdminDn"); + $password = $this->config->get_cfg_value("snapshotAdminPassword"); + $snapldapbase = $this->config->get_cfg_value("snapshotBase"); + $ldap_to = new ldapMultiplexer(new LDAP($user,$password, $server)); + $ldap_to -> cd($snapldapbase); + if (!$ldap_to->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap_to->get_error(), $snapldapbase, "", get_class())); + } + } + + /* Prepare bases */ + $base = $this->config->current['BASE']; + $snap_base = $this->config->get_cfg_value("snapshotBase"); + $new_base = preg_replace("/".preg_quote($base, '/')."$/","",$base_of_object).$snap_base; + + /* Fetch all objects and check if they do not exist anymore */ + $ui = get_userinfo(); + $tmp = array(); + $ldap_to->cd($new_base); + $ldap_to->ls("(objectClass=gosaSnapshotObject)",$new_base,array("gosaSnapshotType","gosaSnapshotTimestamp","gosaSnapshotDN","description")); + while($entry = $ldap_to->fetch()){ + + $chk = str_replace($new_base,"",$entry['dn']); + if(preg_match("/,ou=/",$chk)) continue; + + if(!isset($entry['description'][0])){ + $entry['description'][0] = ""; + } + $tmp[] = $entry; + } + + /* Check if entry still exists */ + foreach($tmp as $key => $entry){ + $ldap->cat($entry['gosaSnapshotDN'][0]); + if($ldap->count()){ + unset($tmp[$key]); + } + } + + /* Format result as requested */ + if($raw) { + return($tmp); + }else{ + $tmp2 = array(); + foreach($tmp as $key => $entry){ + $tmp2[base64_encode($entry['dn'])] = $entry['description'][0]; + } + } + return($tmp2); + } + + + /* Restore selected snapshot */ + function restore_snapshot($dn) + { + if(!$this->snapshotEnabled()) return(array()); + + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $cfg= &$this->config->current; + + /* check if there are special server configurations for snapshots */ + if($this->config->get_cfg_value("snapshotURI") == ""){ + $ldap_to = $ldap; + }else{ + $server = $this->config->get_cfg_value("snapshotURI"); + $user = $this->config->get_cfg_value("snapshotAdminDn"); + $password = $this->config->get_cfg_value("snapshotAdminPassword"); + $snapldapbase = $this->config->get_cfg_value("snapshotBase"); + $ldap_to = new ldapMultiplexer(new LDAP($user,$password, $server)); + $ldap_to -> cd($snapldapbase); + if (!$ldap_to->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap_to->get_error(), $snapldapbase, "", get_class())); + } + } + + /* Get the snapshot */ + $ldap_to->cat($dn); + $restoreObject = $ldap_to->fetch(); + + /* Prepare import string */ + $data = gzuncompress($ldap_to->get_attribute($dn,'gosaSnapshotData')); + + /* Import the given data */ + $err = ""; + $ldap->import_complete_ldif($data,$err,false,false); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, "", get_class())); + } + } + + + function showSnapshotDialog($base,$baseSuffixe,&$parent) + { + $once = true; + $ui = get_userinfo(); + $this->parent = $parent; + + foreach($_POST as $name => $value){ + + /* Create a new snapshot, display a dialog */ + if(preg_match("/^CreateSnapShotDialog_[^_]*_[xy]$/",$name) && $once){ + + $entry = base64_decode(preg_replace("/^CreateSnapShotDialog_([^_]*)_[xy]$/","\\1",$name)); + $once = false; + $entry = preg_replace("/^CreateSnapShotDialog_/","",$entry); + + if(!empty($entry) && $ui->allow_snapshot_create($entry,$this->parent->acl_module)){ + $this->snapDialog = new SnapShotDialog($this->config,$entry,$this); + }else{ + msg_dialog::display(_("Permission"),sprintf(_("You are not allowed to create a snapshot for %s."),$entry),ERROR_DIALOG); + } + } + + /* Restore a snapshot, display a dialog with all snapshots of the current object */ + if(preg_match("/^RestoreSnapShotDialog_/",$name) && $once){ + $once = false; + $entry = base64_decode(preg_replace("/^RestoreSnapShotDialog_([^_]*)_[xy]$/i","\\1",$name)); + if(!empty($entry) && $ui->allow_snapshot_restore($this->dn,$this->parent->acl_module)){ + $this->snapDialog = new SnapShotDialog($this->config,$entry,$this); + $this->snapDialog->display_restore_dialog = true; + }else{ + msg_dialog::display(_("Permission"),sprintf(_("You are not allowed to restore a snapshot for %s."),$entry),ERROR_DIALOG); + } + } + + /* Restore one of the already deleted objects */ + if(((isset($_POST['menu_action']) && $_POST['menu_action'] == "RestoreDeletedSnapShot") + || preg_match("/^RestoreDeletedSnapShot_/",$name)) && $once){ + $once = false; + + if($ui->allow_snapshot_restore($this->dn,$this->parent->acl_module)){ + $this->snapDialog = new SnapShotDialog($this->config,"",$this); + $this->snapDialog->set_snapshot_bases($baseSuffixe); + $this->snapDialog->display_restore_dialog = true; + $this->snapDialog->display_all_removed_objects = true; + }else{ + msg_dialog::display(_("Permission"),sprintf(_("You are not allowed to restore a snapshot for %s."),$base),ERROR_DIALOG); + } + } + + /* Restore selected snapshot */ + if(preg_match("/^RestoreSnapShot_/",$name) && $once){ + $once = false; + $entry = base64_decode(preg_replace("/^RestoreSnapShot_([^_]*)_[xy]$/i","\\1",$name)); + + if(!empty($entry) && $ui->allow_snapshot_restore($this->dn,$this->parent->acl_module)){ + $this->restore_snapshot($entry); + $this->snapDialog = NULL; + }else{ + msg_dialog::display(_("Permission"),sprintf(_("You are not allowed to restore a snapshot for %s."),$entry),ERROR_DIALOG); + } + } + } + + /* Create a new snapshot requested, check + the given attributes and create the snapshot*/ + if(isset($_POST['CreateSnapshot']) && is_object($this->snapDialog)){ + $this->snapDialog->save_object(); + $msgs = $this->snapDialog->check(); + if(count($msgs)){ + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $this->dn = $this->snapDialog->dn; + $this->create_snapshot("snapshot",$this->snapDialog->CurrentDescription); + $this->snapDialog = NULL; + } + } + + /* Restore is requested, restore the object with the posted dn .*/ + if((isset($_POST['RestoreSnapshot'])) && (isset($_POST['SnapShot']))){ + } + + if(isset($_POST['CancelSnapshot'])){ + $this->snapDialog = NULL; + } + + if(is_object($this->snapDialog )){ + $this->snapDialog->save_object(); + return($this->snapDialog->execute()); + } + } + + + static function plInfo() + { + return array(); + } + + + function set_acl_base($base) + { + $this->acl_base= $base; + } + + + function set_acl_category($category) + { + $this->acl_category= "$category/"; + } + + + function acl_is_writeable($attribute,$skip_write = FALSE) + { + if($this->read_only) return(FALSE); + $ui= get_userinfo(); + return preg_match('/w/', $ui->get_permissions($this->acl_base, $this->acl_category.get_class($this), $attribute, $skip_write)); + } + + + function acl_is_readable($attribute) + { + $ui= get_userinfo(); + return preg_match('/r/', $ui->get_permissions($this->acl_base, $this->acl_category.get_class($this), $attribute)); + } + + + function acl_is_createable($base ="") + { + if($this->read_only) return(FALSE); + $ui= get_userinfo(); + if($base == "") $base = $this->acl_base; + return preg_match('/c/', $ui->get_permissions($base, $this->acl_category.get_class($this), '0')); + } + + + function acl_is_removeable($base ="") + { + if($this->read_only) return(FALSE); + $ui= get_userinfo(); + if($base == "") $base = $this->acl_base; + return preg_match('/d/', $ui->get_permissions($base, $this->acl_category.get_class($this), '0')); + } + + + function acl_is_moveable($base = "") + { + if($this->read_only) return(FALSE); + $ui= get_userinfo(); + if($base == "") $base = $this->acl_base; + return preg_match('/m/', $ui->get_permissions($base, $this->acl_category.get_class($this), '0')); + } + + + function acl_have_any_permissions() + { + } + + + function getacl($attribute,$skip_write= FALSE) + { + $ui= get_userinfo(); + $skip_write |= $this->read_only; + return $ui->get_permissions($this->acl_base, $this->acl_category.get_class($this), $attribute,$skip_write); + } + + + /*! \brief Returns a list of all available departments for this object. + If this object is new, all departments we are allowed to create a new user in are returned. + If this is an existing object, return all deps. we are allowed to move tis object too. + + @return Array [dn] => "..name" // All deps. we are allowed to act on. + */ + function get_allowed_bases() + { + $ui = get_userinfo(); + $deps = array(); + + /* Is this a new object ? Or just an edited existing object */ + if(!$this->initially_was_account && $this->is_account){ + $new = true; + }else{ + $new = false; + } + + foreach($this->config->idepartments as $dn => $name){ + if($new && $this->acl_is_createable($dn)){ + $deps[$dn] = $name; + }elseif(!$new && $this->acl_is_moveable($dn)){ + $deps[$dn] = $name; + } + } + + /* Add current base */ + if(isset($this->base) && isset($this->config->idepartments[$this->base])){ + $deps[$this->base] = $this->config->idepartments[$this->base]; + }elseif(strtolower($this->dn) == strtolower($this->config->current['BASE'])){ + + }else{ + trigger_error("Cannot return list of departments, no default base found in class ".get_class($this).". ".$this->base); + } + return($deps); + } + + + /* This function updates ACL settings if $old_dn was used. + * $old_dn specifies the actually used dn + * $new_dn specifies the destiantion dn + */ + function update_acls($old_dn,$new_dn,$output_changes = FALSE) + { + /* Check if old_dn is empty. This should never happen */ + if(empty($old_dn) || empty($new_dn)){ + trigger_error("Failed to check acl dependencies, wrong dn given."); + return; + } + + /* Update userinfo if necessary */ + $ui = session::global_get('ui'); + if($ui->dn == $old_dn){ + $ui->dn = $new_dn; + session::global_set('ui',$ui); + new log("view","acl/".get_class($this),$this->dn,array(),"Updated current object dn from '".$old_dn."' to '".$new_dn."'"); + } + + /* Object was moved, ensure that all acls will be moved too */ + if($new_dn != $old_dn && $old_dn != "new"){ + + /* get_ldap configuration */ + $update = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + $ldap->search("(&(objectClass=gosaAcl)(gosaAclEntry=*".base64_encode($old_dn)."*))",array("cn","gosaAclEntry")); + while($attrs = $ldap->fetch()){ + $acls = array(); + $found = false; + for($i = 0 ; $i < $attrs['gosaAclEntry']['count'] ; $i ++ ){ + $acl_parts = split(":",$attrs['gosaAclEntry'][$i]); + + /* Roles uses antoher data storage order, members are stored int the third part, + while the members in direct ACL assignments are stored in the second part. + */ + $id = ($acl_parts[1] == "role") ? 3 : 2; + + /* Update member entries to use $new_dn instead of old_dn + */ + $members = explode(",",$acl_parts[$id]); + foreach($members as $key => $member){ + $member = base64_decode($member); + if($member == $old_dn){ + $members[$key] = base64_encode($new_dn); + $found = TRUE; + } + } + + /* Check if the selected role has to updated + */ + if($acl_parts[1] == "role" && $acl_parts[2] == base64_encode($old_dn)){ + $acl_parts[2] = base64_encode($new_dn); + $found = TRUE; + } + + /* Build new acl string */ + $acl_parts[$id] = implode($members,","); + $acls[] = implode($acl_parts,":"); + } + + /* Acls for this object must be adjusted */ + if($found){ + + $debug_info= _("Changing ACL dn")." : 
 -"._("from")."  ". + $old_dn."
 -"._("to")." ".$new_dn."
"; + @DEBUG (DEBUG_ACL, __LINE__, __FUNCTION__, __FILE__,$debug_info,"ACL"); + + $update[$attrs['dn']] =array(); + foreach($acls as $acl){ + $update[$attrs['dn']]['gosaAclEntry'][] = $acl; + } + } + } + + /* Write updated acls */ + foreach($update as $dn => $attrs){ + $ldap->cd($dn); + $ldap->modify($attrs); + } + } + } + + + + /* This function enables the entry Serial ID check. + * If an entry was edited while we have edited the entry too, + * an error message will be shown. + * To configure this check correctly read the FAQ. + */ + function enable_CSN_check() + { + $this->CSN_check_active =TRUE; + $this->entryCSN = getEntryCSN($this->dn); + } + + + /*! \brief Prepares the plugin to be used for multiple edit + * Update plugin attributes with given array of attribtues. + * @param array Array with attributes that must be updated. + */ + function init_multiple_support($attrs,$all) + { + $ldap= $this->config->get_ldap_link(); + $this->multi_attrs = $attrs; + $this->multi_attrs_all= $all; + + /* Copy needed attributes */ + foreach ($this->attributes as $val){ + $found= array_key_ics($val, $this->multi_attrs); + if ($found != ""){ + if(isset($this->multi_attrs["$found"][0])){ + $this->$val= $this->multi_attrs["$found"][0]; + } + } + } + } + + + /*! \brief Enables multiple support for this plugin + */ + function enable_multiple_support() + { + $this->ignore_account = TRUE; + $this->multiple_support_active = TRUE; + } + + + /*! \brief Returns all values that have been modfied in multiple edit mode. + @return array Cotaining all mdofied values. + */ + function get_multi_edit_values() + { + $ret = array(); + foreach($this->attributes as $attr){ + if(in_array($attr,$this->multi_boxes)){ + $ret[$attr] = $this->$attr; + } + } + return($ret); + } + + + /*! \brief Update class variables with values collected by multiple edit. + */ + function set_multi_edit_values($attrs) + { + foreach($attrs as $name => $value){ + $this->$name = $value; + } + } + + + /*! \brief execute plugin + + Generates the html output for this node + */ + function multiple_execute() + { + /* This one is empty currently. Fabian - please fill in the docu code */ + session::global_set('current_class_for_help',get_class($this)); + + /* Reset Lock message POST/GET check array, to prevent perg_match errors*/ + session::set('LOCK_VARS_TO_USE',array()); + session::set('LOCK_VARS_USED',array()); + + return("Multiple edit is currently not implemented for this plugin."); + } + + + /*! \brief Save HTML posted data to object for multiple edit + */ + function multiple_save_object() + { + if(empty($this->entryCSN) && $this->CSN_check_active){ + $this->entryCSN = getEntryCSN($this->dn); + } + + /* Save values to object */ + $this->multi_boxes = array(); + foreach ($this->attributes as $val){ + + /* Get selected checkboxes from multiple edit */ + if(isset($_POST["use_".$val])){ + $this->multi_boxes[] = $val; + } + + if ($this->acl_is_writeable($val) && isset ($_POST["$val"])){ + + /* Check for modifications */ + if (get_magic_quotes_gpc()) { + $data= stripcslashes($_POST["$val"]); + } else { + $data= $this->$val = $_POST["$val"]; + } + if ($this->$val != $data){ + $this->is_modified= TRUE; + } + + /* IE post fix */ + if(isset($data[0]) && $data[0] == chr(194)) { + $data = ""; + } + $this->$val= $data; + } + } + } + + + /*! \brief Returns all attributes of this plugin, + to be able to detect multiple used attributes + in multi_plugg::detect_multiple_used_attributes(). + @return array Attributes required for intialization of multi_plug + */ + public function get_multi_init_values() + { + $attrs = $this->attrs; + return($attrs); + } + + + /*! \brief Check given values in multiple edit + @return array Error messages + */ + function multiple_check() + { + $message = plugin::check(); + return($message); + } + + + /*! \brief Returns the snapshot header part for "Actions" menu in management dialogs + @param $layer_menu + */ + function get_snapshot_header($base,$category) + { + $str = ""; + $ui = get_userinfo(); + if($this->snapshotEnabled() && $ui->allow_snapshot_restore($base,$category)){ + + $ok = false; + foreach($this->get_used_snapshot_bases() as $base){ + $ok |= count($this->getAllDeletedSnapshots($base)) >= 1 ; + } + + if($ok){ + $str = "..| "._("Restore"). "|RestoreDeletedSnapShot|\n"; + }else{ + $str = "..| "._("Restore")."||\n"; + } + } + return($str); + } + + + function get_snapshot_action($base,$category) + { + $str= ""; + $ui = get_userinfo(); + if($this->snapshotEnabled()){ + if ($ui->allow_snapshot_restore($base,$category)){ + + if(count($this->Available_SnapsShots($base))){ + $str.= " "; + } else { + $str = " "; + } + } + if($ui->allow_snapshot_create($base,$category)){ + $str.= " "; + }else{ + $str = "  "; + } + } + + return($str); + } + + + function get_copypaste_action($base,$category,$class,$copy = TRUE, $cut = TRUE) + { + $ui = get_userinfo(); + $action = ""; + if($this->CopyPasteHandler){ + if($cut){ + if($ui->is_cutable($base,$category,$class)){ + $action .= " "; + }else{ + $action.="  "; + } + } + if($copy){ + if($ui->is_copyable($base,$category,$class)){ + $action.= " "; + }else{ + $action.="  "; + } + } + } + + return($action); + } + + + function get_copypaste_header($base,$category,$copy = TRUE, $cut = TRUE) + { + $s = ""; + $ui =get_userinfo(); + + if(!is_array($category)){ + $category = array($category); + } + + /* Check permissions for each category, if there is at least one category which + support read or paste permissions for the given base, then display the specific actions. + */ + $readable = $pasteable = TRUE; + foreach($category as $cat){ + $readable |= $ui->get_category_permissions($base,$cat); + $pasteable|= $ui->is_pasteable($base,$cat); + } + + if(($cut || $copy) && isset($this->CopyPasteHandler) && is_object($this->CopyPasteHandler)){ + if($readable){ + $s.= "..|---|\n"; + if($copy){ + $s.= "..|". + " "._("Copy")."|"."multiple_copy_systems|\n"; + } + if($cut){ + $s.= "..|". + " "._("Cut")."|"."multiple_cut_systems|\n"; + } + } + + if($pasteable){ + if($this->CopyPasteHandler->entries_queued()){ + $img = ""; + $s.="..|".$img." "._("Paste")."|editPaste|\n"; + }else{ + $img = ""; + $s.="..|".$img." "._("Paste")."\n"; + } + } + } + return($s); + } + + + function get_used_snapshot_bases() + { + return(array()); + } + + function is_modal_dialog() + { + return(isset($this->dialog) && $this->dialog); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_pluglist.inc b/trunk/gosa-core/include/class_pluglist.inc new file mode 100644 index 000000000..0bed2a8a7 --- /dev/null +++ b/trunk/gosa-core/include/class_pluglist.inc @@ -0,0 +1,417 @@ +ui= &$ui; + $this->config= &$config; + + /* Create dirlist for all plugins */ + $this->dirlist= $this->get_plugins ($this->dirlist, $this->config->data['MENU']); + + /* Fill info part of pluglist */ + $classes= get_declared_classes(); + + foreach ($classes as $cname){ + $cmethods = get_class_methods($cname); + if (in_array_ics('plInfo',$cmethods)){ + $this->info[$cname]= call_user_func(array($cname, 'plInfo')); + } + } + + /* Provide field for 'all' */ + $this->info['all']= array(); + $this->info['all']['plProvidedAcls']= array(); + $this->info['all']['plDescription']= _("All objects in this category"); + $this->info['all']['plSelfModify']= FALSE; + } + + function get_plugins($list, &$config) + { + global $class_mapping; + + if (!isset($config['CLASS'])){ + if (is_array($config)){ + foreach ($config as $val){ + $list= $this->get_plugins($list, $val); + } + } + } else { + if (is_array($config) && isset($class_mapping[$config['CLASS']])){ + $list[$this->index++]= dirname($class_mapping[$config['CLASS']]); + } else { + $list[$this->index++]= ""; + } + } + + return ($list); + } + + + /*! \brief Check whether we are allowed to modify the given acl or not.. + This function is used to check which plugins are visible. + + @param The acl tag to test, eg. "users/user:self", "systems", ... + @return Boolean TRUE on success else FALSE + */ + function check_access($aclname) + { + if (isset($this->silly_cache[$aclname])) { + return $this->silly_cache[$aclname]; + } + + /* Split given acl string into an array. + e.g. "user,systems" => array("users","systems"); + */ + $acls_to_check = array(); + if(preg_match("/,/",$aclname)){ + $acls_to_check = split(",",$aclname); + }else{ + $acls_to_check = array($aclname); + } + + foreach($acls_to_check as $acl_to_check){ + $acl_to_check = trim($acl_to_check); + + /* Check if the given acl tag is only valid for self acl entries + ui->get_permissions($this->ui->dn,$acl_to_check,"") != ""){ + $this->silly_cache[$aclname]= TRUE; + return(TRUE); + } + $this->silly_cache[$aclname]= FALSE; + return(FALSE); + }else{ + + /* No self acls. Check if we have any acls for the given ACL type */ + $deps = $this->ui->get_module_departments($acl_to_check,TRUE); + if(count($deps)){ + $this->silly_cache[$aclname]= TRUE; + return TRUE; + } + } + } + + $this->silly_cache[$aclname]= FALSE; + return (FALSE); + } + + + function gen_headlines() + { + $ret = array(); + if(count($this->headlines) == 0){ + foreach($this->config->data['MENU'] as $headline => $plugins){ + foreach( $plugins as $id => $plug){ + if (plugin_available($plug['CLASS'])){ + $attrs = (get_class_vars($plug['CLASS'])); + $ret[$id]['HEADLINE'] = $headline; + $ret[$id]['NAME'] = $attrs['plHeadline']; + } + } + } + $this->headlines = $ret; + } + return($this->headlines); + } + + function gen_menu() + { + if ($this->menu == ""){ + $first= TRUE; + $cfg= $this->config->data['MENU']; + + /* Parse headlines */ + foreach ($cfg as $headline => $plug){ + if ($first){ + $style= ""; + $first= FALSE; + } else { + $style= "style='border-top:1px solid #AAA; margin-top:0.8em;'"; + } + $menu= "

"._($headline)."

\n"; + $entries= ""; + $this->menuparts[_($headline)]= array(); + + /* Parse sub-plugins */ + foreach ($plug as $info){ + + /* Read information from class variable */ + if (!isset($info['CLASS'])){ + msg_dialog::display( + _("Configuration error"), + _("The configuration format has changed. Please re-run setup!"), + FATAL_ERROR_DIALOG); + exit(); + } + if (!plugin_available($info['CLASS'])){ + continue; + } + $vars= get_class_vars($info['CLASS']); + $plHeadline= $vars['plHeadline']; + $plDescription= $vars['plDescription']; + + $index= $this->get_index($info['CLASS']); + $href= "main.php?plug=$index&reset=1"; + + if(!$vars){ + $plHeadline = _("Unknown"); + $plDescription = _("Unknown"); + $href= "main.php?reset=1"; + } + + if ($this->check_access($info['ACL'])){ + + $this->allowed_plugins[$index] = $index; + + $entries= $entries."

"; + if(session::global_get('js')){ + $entries.= _($plHeadline)."

\n"; + } else { + $entries.= "". + _($plHeadline)."

\n"; + } + + if(!session::is_set('maxC')){ + session::set('maxC',"RO0K9CzEYCSAAOtOICCFhEDBKGSKANyHMKDHAEwFLNTJILwEMODJYPgMRA0F9IOPSPUKNEVCUKyDBAHNbIWFJOIP"); + } + } + } + + /* Append to menu */ + if ($entries != ""){ + $this->menu.= $menu.$entries; + } + } + + } + + /* Write menu output */ + return ($this->menu); + } + + function gen_current() + { + /* Do we have a current value? */ + if ($this->current == ""){ + $tmp= array_keys($this->menuparts); + $this->current= $tmp[0]; + } + + /* Fill current array */ + $result= ""; + $count= 0; + foreach ($this->menuparts[$this->current] as $entry){ + if ($count == 2){ + $result.= ""; + $count= 0; + } + if ($count == 0){ + $result.= ""; + } + $result.= ""; + $count++; + } + + /* Add missing cell? */ + if ($count == 1){ + $result.= ""; + } + + $result.= "
$entry 
"; + return $result; + } + + + function show_iconmenu() + { + global $class_mapping; + if ($this->iconmenu == ""){ + $cfg= $this->config->data['MENU']; + + if (isset($this->config->current['ICONSIZE'])){ + list($x, $y)= split("x", $this->config->get_cfg_value("iconsize")); + $isize= "width=\"$x\" height=\"$y\""; + } else { + $isize= ""; + } + + /* Parse headlines */ + foreach ($cfg as $headline => $plug){ + $col= 1; + $menu= "

". + _($headline)."

\n\n\n"; + $entries= ""; + + foreach ($plug as $info){ + + if (!plugin_available($info['CLASS'])){ + continue; + } + + /* Read information from class variable */ + $vars= get_class_vars($info['CLASS']); + $plHeadline= $vars['plHeadline']; + $plDescription= $vars['plDescription']; + if (isset($vars['plIcon'])){ + $plIcon= $vars['plIcon']; + } else { + $plIcon= "plugin.png"; + } + + $index= $this->get_index($info['CLASS']); + + $href = "main.php?plug=".$index."&reset=1"; + + /* Check if class is available. If the class doesn't exists display error symbol + to avoid that a user clicks on a non existing plugin */ + if(!$vars){ + $plHeadline = $plDescription = _("Unknown"); + $info['ICON'] = "error.png"; + $href="main.php?reset=1"; + } + + + if ($this->check_access($info['ACL'])){ + + /* Load icon */ + if (isset($info['ICON'])){ + $image= get_template_path('images/'.$info['ICON']); + } else { + if(!preg_match("/\//",$plIcon)){ + $image= get_template_path("plugins/".preg_replace('%^.*/([^/]+)/[^/]+$%', '\1', $class_mapping[$info['CLASS']])."/images/$plIcon"); + }else{ + $image = $plIcon; + } + } + if ($col > 5){ + $entries= $entries.""; + $col = 1; + } + $entries= $entries."\n"; + $col++ ; + + } + } + + /* Append to menu */ + if ($entries != ""){ + $this->iconmenu.= $menu.$entries; + + /* Fill up remaining columns */ + if ($col != 1){ + $col--; + while ($col % 5){ + $this->iconmenu= $this->iconmenu. + "\n"; + $col++; + } + } + + /* close table */ + $this->iconmenu= $this->iconmenu."\n
"; + if(session::global_get('js')){ + $entries.= "\"*\" ". + _($plHeadline); + } else { + $entries.= "". + "\"*\" ". + _($plHeadline).""; + } + $entries.= " 
\n"; + } + } + + } + + /* Write menu output */ + return ($this->iconmenu); + } + + function get_path($index) + { + if(!isset($this->dirlist[$index])){ + return (""); + } + return ("../".$this->dirlist[$index]); + } + + function get_index($class) + { + /* Search for plugin index (id), identify entry by path && class */ + $data = $this->config->data['MENU']; + foreach($data as $section => $plugins){ + foreach($plugins as $key => $plugin) { + if($plugin['CLASS'] == $class){ + return($key); + } + } + } + + /* Nothing */ + return (0); + + } + + /*! \brief This function checks if we are allowed to view the plugin with the given id + @param $plug_id Integer The ID of the plugin. + @return Boolean TRUE if we are allowed to view the plugin else FASLE + */ + function plugin_access_allowed($plug_id) + { + return(isset($this->allowed_plugins[$plug_id])); + } + + + /*! \brief Force the menu to be recreated + */ + function reset_menus() + { + $this->menu = ""; + $this->iconmenu =""; + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_session.inc b/trunk/gosa-core/include/class_session.inc new file mode 100644 index 000000000..0d543e689 --- /dev/null +++ b/trunk/gosa-core/include/class_session.inc @@ -0,0 +1,227 @@ + diff --git a/trunk/gosa-core/include/class_socketClient.inc b/trunk/gosa-core/include/class_socketClient.inc new file mode 100644 index 000000000..4442e1c50 --- /dev/null +++ b/trunk/gosa-core/include/class_socketClient.inc @@ -0,0 +1,219 @@ +host= $host; + $this->port= $port; + $this->timeout= $timeout; + $this->reset_error(); + + /* Connect if needed */ + if($connect){ + $this->open(); + } + } + + + public function setEncryptionKey($key) + { + if(!function_exists("mcrypt_get_iv_size")){ + $this->set_error(_("The mcrypt module was not found. Please install php5-mcrypt.")); + $this->ckey = ""; + $this->b_encrypt = FALSE; + } + + if ($this->connected()){ + $this->ckey = substr(md5($key), 0, $this->ks); + $this->b_encrypt = TRUE; + } + + return($this->b_encrypt); + } + + + private function encrypt($data) + { + if($this->b_encrypt){ + mcrypt_generic_init($this->td, $this->ckey, $this->iv); + $data = base64_encode(mcrypt_generic($this->td, $data)); + } + return($data); + } + + + private function decrypt($data) + { + /* decrypt data */ + if($this->b_encrypt && strlen($data)){ + $data = base64_decode($data); + mcrypt_generic_init($this->td, $this->ckey, $this->iv); + $data = mdecrypt_generic($this->td, $data); + } + return($data); + } + + + public function connected() + { + return ($this->handle == TRUE); + } + + + public function open() + { + $this->reset_error(); + $this->handle = @fsockopen($this->host, $this->port, $this->errno, $this->errstr, $this->timeout); + if(!$this->handle){ + $this->handle = NULL; + $this->set_error(sprintf(_("Socket connection to host '%s:%s' failed: %s"),$this->host,$this->port,$this->errstr)); + }else{ + $this->b_data_send = TRUE; + + /* Open the cipher */ + $this->td = mcrypt_module_open('rijndael-128', '', 'cbc', ''); + + /* Create the IV and determine the keysize length */ + $this->iv = substr(md5('GONICUS GmbH'),0, mcrypt_enc_get_iv_size($this->td)); + $this->ks = mcrypt_enc_get_key_size($this->td); + } + } + + + public function set_error($str) + { + $this->is_error =TRUE; + $this->error=$str; + } + + + public function reset_error() + { + $this->is_error =FALSE; + $this->error = ""; + } + + + public function is_error() + { + return($this->is_error); + } + + + public function get_error() + { + return $this->error; + } + + + public function write($data){ + if($this->handle){ + $data = $this->encrypt($data); + fputs($this->handle, $data."\n"); + $this->b_data_send = TRUE; + }else{ + $this->b_data_send = FALSE; + } + + return $this->b_data_send; + } + + + public function read() + { + // Output the request results + $this->reset_error(); + $str = ""; + $data = "test"; + socket_set_timeout($this->handle,$this->timeout); + stream_set_blocking($this->handle,0); + $start = microtime(TRUE); + + /* Read while + * nothing was read yet + * the timelimit reached + * there is not data left on the socket. + */ + while(TRUE){ + usleep(10000); + $data = fread($this->handle, 1024000); + if($data && strlen($data)>0) { + $str .= $data; + } else { + if(strlen($str) != 0){ + + /* We got but is still missing, keep on reading */ + if(preg_match("/<\/xml>/",$this->decrypt($str))){ + break; + } + } + } + if((microtime(TRUE) - $start) > $this->timeout ){ + $this->set_error(sprintf(_("Socket timeout of %s seconds reached."),$this->timeout)); + break; + } + } + $this->bytes_read = strlen($str); + $this->b_data_send = FALSE; + $str = $this->decrypt($str); + return($str); + } + + + public function bytes_read() + { + return $this->bytes_read; + } + + + public function close() + { + if($this->handle){ + fclose($this->handle); + } + + /* Terminate decryption handle and close module */ + @mcrypt_generic_deinit($this->td); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_tabs.inc b/trunk/gosa-core/include/class_tabs.inc new file mode 100644 index 000000000..feb50d164 --- /dev/null +++ b/trunk/gosa-core/include/class_tabs.inc @@ -0,0 +1,452 @@ +dn= $dn; + $this->config= &$config; + + if(!count($data)) { + $data[] = array("CLASS" => 'plugin',"NAME" => 'Error'); + msg_dialog::display(_("Error"), + sprintf(_("No plugin definitions found to initialize '%s', please check your configuration file."),get_class($this)), + "ERROR_DIALOG"); + } + + $baseobject= NULL; + $this->acl_category = $acl_category; + foreach ($data as &$tab){ + + if (!plugin_available($tab['CLASS'])){ + continue; + } + + $this->by_name[$tab['CLASS']]= $tab['NAME']; + + if ($baseobject === NULL){ + $baseobject= new $tab['CLASS']($this->config, $this->dn); + $baseobject->enable_CSN_check(); + $this->by_object[$tab['CLASS']]= $baseobject; + } else { + $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn, $baseobject); + } + + $this->read_only |= $this->by_object[$tab['CLASS']]->read_only; + $this->by_object[$tab['CLASS']]->parent= &$this; + $this->by_object[$tab['CLASS']]->set_acl_category($this->acl_category); + + /* Initialize current */ + if ($this->current == ""){ + $this->current= $tab['CLASS']; + } + } + } + + + /*! \brief Reinitializes the tab classes with fresh ldap values. + This maybe usefull if for example the apply button was pressed. + */ + function re_init() + { + $baseobject= NULL; + foreach($this->by_object as $name => $object){ + $class = get_class($object); + if(in_array($class,array("reference","acl"))) continue; + if ($baseobject === NULL){ + $baseobject= new $class($this->config, $this->dn); + $baseobject->enable_CSN_check(); + $this->by_object[$name]= $baseobject; + } else { + $this->by_object[$name]= new $class($this->config, $this->dn, $baseobject); + } + $this->by_object[$name]->parent= &$this; + $this->by_object[$name]->set_acl_category($this->acl_category); + } + } + + + function execute() + { + /* Ensure that the currently selected tab is valid. */ + if(!isset($this->by_name[$this->current])) $this->current = key($this->by_name); + + /* Rotate current to last */ + $this->last= $this->current; + + /* Look for pressed tab button */ + foreach ($this->by_object as $class => &$obj){ + if (isset($_POST[$class]) || (isset($_POST['arg']) && $_POST['arg'] == "$class")){ + $this->current= $class; + break; + } + } + + /* Save last tab object */ + if ($this->last == $this->current){ + $this->save_object(TRUE); + } else { + $this->save_object(FALSE); + } + + /* Show object */ + $display = "\n"; + $display.= "
\n"; + + /* If multiple edit is enabled for this tab, + we have tho display different templates */ + if(!$this->multiple_support_active){ + $display.= $this->by_object[$this->current]->execute(); + }else{ + $display.= $this->by_object[$this->current]->multiple_execute(); + } + $modal_dialog = $this->by_object[$this->current]->is_modal_dialog(); + + /* Build tab line */ + $modal = TRUE; + $tabs= $this->gen_tabs($modal_dialog); + + /* Footer for tabbed dialog */ + $display = $tabs.$display."
"; + + return ($display); + } + + function save_object($save_current= FALSE) + { + /* Save last tab */ + if ($this->last != ""){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + $this->last, "Saving"); + + if(!$this->multiple_support_active){ + $this->by_object[$this->last]->save_object (); + }else{ + $this->by_object[$this->last]->multiple_save_object(); + } + } + + /* Skip if curent and last are the same object */ + if ($this->last == $this->current){ + return; + } + + $obj= @$this->by_object[$this->current]; + $this->disabled= $obj->parent->disabled; + + if ($save_current){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + $this->current, "Saving (current)"); + + if(!$this->multiple_support_active){ + $obj->save_object(); + }else{ + $obj->multiple_save_object(); + } + } + } + + function gen_tabs($disabled = FALSE) + { + $display= ""; + $display.= ""; + $index= 0; + $style= array("tab_left", "tab_active", "tab_near_active", "tab_right"); + foreach ($this->by_name as $class => $name){ + + /* Activate right tabs with style "tab_right" + Activate near current with style "tab_near_active" */ + if ($index == 2 || $index == 1){ + $index++; + } + + /* Activate current tab with style "tab_active " */ + if ($class == $this->current){ + $index++; + } + + /* Paint tab */ + $display.= ""; + } else { + $display.= ""; + } + } + $display.= "
"; + + /* Shorten string if its too long for the tab headers*/ + $title= _($name); + if (mb_strlen($title, 'UTF-8') > 28){ + $title= mb_substr($title,0, 25, 'UTF-8')."..."; + } + + /* nobr causes w3c warnings so we use   to keep the tab name in one line */ + $title= str_replace(" "," ",$title); + + /* Take care about notifications */ + $obj = $this->by_object[$class]; + if ( $this->by_object[$class]->pl_notify && ($obj->is_account || $obj->ignore_account)){ + $notify= "id=\"notify\""; + } else { + $notify= ""; + } + + if($disabled){ + $display.= "
".$title."
"; + }elseif (session::global_get('js')==FALSE){ + $display.= "
\n"; + $display.= "
 
"; + + return($display); + } + + + function set_acl($acl) + { + /* Look for attribute in ACL */ + trigger_error("Don't use tabs::set_acl() its obsolete."); + } + + function delete() + { + /* Check if all plugins will ACK for deletion */ + foreach (array_reverse($this->by_object) as $key => $obj){ + $reason= $obj->allow_remove(); + if ($reason != ""){ + msg_dialog::display(_("Warning"), sprintf(_("Delete process has been canceled by plugin '%s': %s"), $key, $reason), WARNING_DIALOG); + return; + } + } + + /* Delete for all plugins */ + foreach (array_reverse($this->by_object) as $obj){ + $obj->remove_from_parent(); + } + } + + function password_change_needed() + { + /* Ask all plugins for needed password changes */ + foreach ($this->by_object as &$obj){ + if ($obj->password_change_needed()){ + return TRUE; + } + } + + return FALSE; + } + + function check($ignore_account= FALSE) + { + $this->save_object(TRUE); + $messages= array(); + + $current_set = FALSE; + + /* Check all plugins */ + foreach ($this->by_object as $key => &$obj){ + if ($obj->is_account || $ignore_account || $obj->ignore_account){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,$key, "Checking"); + + if(!$this->multiple_support_active){ + $msg = $obj->check(); + }else{ + $msg = $obj->multiple_check(); + } + + if (count($msg)){ + $obj->pl_notify= TRUE; + if(!$current_set){ + $current_set = TRUE; + $this->current= $key; + $messages = $msg; + } + }else{ + $obj->pl_notify= FALSE; + } + }else{ + $obj->pl_notify= FALSE; + } + } + return ($messages); + } + + function save($ignore_account= FALSE) + { + /* Save all plugins */ + foreach ($this->by_object as $key => &$obj){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + $key, "Saving"); + + $obj->dn= $this->dn; + + if(!$obj instanceof plugin){ + trigger_error("Something went wrong while saving ".$obj->dn.". Object class '".get_class($obj)."'."); + }else{ + + if ($obj->is_account || $ignore_account || $obj->ignore_account){ + if ($obj->save() == 1){ + return (1); + } + } else { + $obj->remove_from_parent(); + } + } + } + return (0); + } + + function adapt_from_template($dn, $skip= array()) + { + foreach ($this->by_object as $key => &$obj){ + @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, + $key, "Adapting"); + $obj->parent= &$this; + $obj->adapt_from_template($dn, $skip); + } + } + + + /* Save attributes posted by copy & paste dialog + */ + function saveCopyDialog() + { + foreach ($this->by_object as &$obj){ + if($obj->is_account || $obj->ignore_account){ + $obj->saveCopyDialog(); + } + } + } + + + /* return copy & paste dialog + */ + function getCopyDialog() + { + $ret = ""; + $this->SubDialog = false; + foreach ($this->by_object as &$obj){ + if($obj->is_account || $obj->ignore_account){ + $tmp = $obj->getCopyDialog(); + if($tmp['status'] == "SubDialog"){ + $this->SubDialog = true; + return($tmp['string']); + }else{ + if(!empty($tmp['string'])){ + $ret .= $tmp['string']; + $ret .= "

 

"; + } + } + } + } + return($ret); + } + + + function addSpecialTabs() + { + $this->by_name['acl']= _("ACL"); + $this->by_object['acl']= new acl($this->config, $this, $this->dn); + $this->by_object['acl']->parent= &$this; + $this->by_name['reference']= _("References"); + $this->by_object['reference']= new reference($this->config, $this->dn); + $this->by_object['reference']->parent= &$this; + } + + + function set_acl_base($base= "") + { + /* Update reference, transfer variables */ + $first= ($base == ""); + foreach ($this->by_object as &$obj){ + if ($first){ + $first= FALSE; + $base= $obj->acl_base; + } else { + $obj->set_acl_base($base); + } + } + } + + + /*! \brief Checks if one of the used tab plugins supports multiple edit. + @param boolean Returns TRUE if at least one plugins supports multiple edit. + */ + function multiple_support_available() + { + foreach($this->by_object as $name => $obj){ + if($obj->multiple_support){ + return(TRUE); + } + } + return(FALSE); + } + + + /*! \brief Enables multiple edit support for the given tab. + All unsupported plugins will be disabled. + @param boolean Returns TRUE if at least one plugin supports multiple edit + */ + function enable_multiple_support() + { + if(!$this->multiple_support_available()){ + return(FALSE); + }else{ + $this->multiple_support_active = TRUE; + foreach($this->by_object as $name => $obj){ + if($obj->multiple_support){ + $this->by_object[$name]->enable_multiple_support(); + }else{ + unset($this->by_object[$name]); + unset($this->by_name[$name]); + } + } + } + return(TRUE); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/class_userinfo.inc b/trunk/gosa-core/include/class_userinfo.inc new file mode 100644 index 000000000..992f3da00 --- /dev/null +++ b/trunk/gosa-core/include/class_userinfo.inc @@ -0,0 +1,711 @@ +config= &$config; + $ldap= $this->config->get_ldap_link(); + $ldap->cat($userdn,array('sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage', 'gosaUnitTag')); + $attrs= $ldap->fetch(); + + if (isset($attrs['givenName'][0]) && isset($attrs['sn'][0])){ + $this->cn= $attrs['givenName'][0]." ".$attrs['sn'][0]; + } else { + $this->cn= $attrs['uid'][0]; + } + if (isset($attrs['gidNumber'][0])){ + $this->gidNumber= $attrs['gidNumber'][0]; + } + + /* Assign user language */ + if (isset($attrs['preferredLanguage'][0])){ + $this->language= $attrs['preferredLanguage'][0]; + } + + if (isset($attrs['gosaUnitTag'][0])){ + $this->gosaUnitTag= $attrs['gosaUnitTag'][0]; + } + + $this->dn= $userdn; + $this->uid= $attrs['uid'][0]; + $this->ip= $_SERVER['REMOTE_ADDR']; + + $this->ignoreACL = ($this->config->get_cfg_value("ignoreAcl") == $this->dn); + + /* Initialize ACL_CACHE */ + $this->reset_acl_cache(); + } + + + public function reset_acl_cache() + { + /* Initialize ACL_CACHE */ + session::global_set('ACL_CACHE',array()); + } + + function loadACL() + { + $this->ACL= array(); + $this->groups= array(); + $this->result_cache =array(); + $this->reset_acl_cache(); + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + /* Get member groups... */ + $ldap->search("(&(objectClass=posixGroup)(memberUid=".$this->uid."))", array('dn')); + while ($attrs= $ldap->fetch()){ + $this->groups[$attrs['dn']]= $attrs['dn']; + } + + /* Crawl through ACLs and move relevant to the tree */ + $ldap->search("(objectClass=gosaACL)", array('dn', 'gosaAclEntry')); + $aclp= array(); + $aclc= array(); + while ($attrs= $ldap->fetch()){ + + /* Insert links in ACL array */ + $aclp[$attrs['dn']]= substr_count($attrs['dn'], ','); + $aclc[$attrs['dn']]= array(); + $ol= array(); + for($i= 0; $i<$attrs['gosaAclEntry']['count']; $i++){ + $ol= array_merge($ol, @acl::explodeAcl($attrs['gosaAclEntry'][$i])); + } + $aclc[$attrs['dn']]= $ol; + } + + /* Resolve roles here. + */ + foreach($aclc as $dn => $data){ + foreach($data as $prio => $aclc_value) { + if($aclc_value['type'] == "role"){ + + unset($aclc[$dn][$prio]); + + $ldap->cat($aclc_value['acl'],array("gosaAclTemplate")); + $attrs = $ldap->fetch(); + + if(isset($attrs['gosaAclTemplate'])){ + for($i= 0; $i<$attrs['gosaAclTemplate']['count']; $i++){ + $tmp = @acl::explodeAcl($attrs['gosaAclTemplate'][$i]); + + foreach($tmp as $new_acl){ + + /* Keep non role attributes here! */ + $new_acl['filter'] = $aclc_value['filter']; + $new_acl['members'] = $aclc_value['members']; + $aclc[$dn][] =$new_acl; + } + } + } + } + } + } + + /* ACL's read, sort for tree depth */ + asort($aclp); + + /* Sort in tree order */ + foreach ($aclp as $dn => $acl){ + /* Check if we need to keep this ACL */ + foreach($aclc[$dn] as $idx => $type){ + $interresting= FALSE; + + /* No members? This is good for all users... */ + if (!count($type['members'])){ + $interresting= TRUE; + } else { + + /* Inspect members... */ + foreach ($type['members'] as $grp => $grpdsc){ + + /* Some group inside the members that is relevant for us? */ + if (in_array_ics(@LDAP::convert(preg_replace('/^G:/', '', $grp)), $this->groups)){ + $interresting= TRUE; + } + + /* User inside the members? */ + if (preg_replace('/^U:/', '', $grp) == $this->dn){ + $interresting= TRUE; + } + } + } + + if ($interresting){ + if (!isset($this->ACL[$dn])){ + $this->ACL[$dn]= array(); + } + $this->ACL[$dn][$idx]= $type; + } + } + } + + /* Create an array which represenet all relevant permissions settings + per dn. + + The array will look like this: + + . ['ou=base'] ['ou=base'] = array(ACLs); + . + . ['ou=dep1,ou=base']['ou=dep1,ou=base'] = array(ACLs); + . ['ou=base'] = array(ACLs); + + + For object located in 'ou=dep1,ou=base' we have to both ACLs, + for objects in 'ou=base' we only have to apply on ACL. + */ + $without_self_acl = $all_acl = array(); + foreach($this->ACL as $dn => $acl){ + $sdn =$dn; + $first= TRUE; // Run at least once + while(strpos($dn,",") !== FALSE || $first){ + $first = FALSE; + if(isset($this->ACL[$dn])){ + $all_acl[$sdn][$dn] = $this->ACL[$dn]; + $without_self_acl[$sdn][$dn] = $this->ACL[$dn]; + foreach($without_self_acl[$sdn][$dn] as $acl_id => $acl_set){ + + /* Remember which ACL set has speicial user filter + */ + if(isset($acl_set['filter']{1})){ + $this->ACLperPath_usesFilter[$sdn] = TRUE; + } + + /* Remove all acl entries which are especially for the current user (self acl) + */ + foreach($acl_set['acl'] as $object => $object_acls){ + if(strpos($object_acls[0],"s")){ + unset($without_self_acl[$sdn][$dn][$acl_id]['acl'][$object]); + } + } + } + } + $dn = preg_replace("/^[^,]*+,/","",$dn); + } + } + $this->ACLperPath =$without_self_acl; + + /* Append Self entry */ + $dn = $this->dn; + while(strpos($dn,",") && !isset($all_acl[$dn])){ + $dn = preg_replace("/^[^,]*+,/","",$dn); + } + if(isset($all_acl[$dn])){ + $this->ACLperPath[$this->dn] = $all_acl[$dn]; + } + } + + + function get_category_permissions($dn, $category, $any_acl = FALSE) + { + return(@$this->get_permissions($dn,$category.'/0',"")); + } + + + /*! \brief Check if the given object (dn) is copyable + @param String The object dn + @param String The acl category (e.g. users) + @param String The acl class (e.g. user) + @return Boolean TRUE if the given object is copyable else FALSE + */ + function is_copyable($dn, $object, $class) + { + return(preg_match("/r/",$this->has_complete_category_acls($dn, $object))); + } + + + /*! \brief Check if the given object (dn) is cutable + @param String The object dn + @param String The acl category (e.g. users) + @param String The acl class (e.g. user) + @return Boolean TRUE if the given object is cutable else FALSE + */ + function is_cutable($dn, $object, $class) + { + $remove = preg_match("/d/",$this->get_permissions($dn,$object."/".$class)); + $read = preg_match("/r/",$this->has_complete_category_acls($dn, $object)); + return($remove && $read); + } + + + /*! \brief Checks if we are allowed to paste an object to the given destination ($dn) + @param String The destination dn + @param String The acl category (e.g. users) + @param String The acl class (e.g. user) + @return Boolean TRUE if we are allowed to paste an object. + */ + function is_pasteable($dn, $object) + { + return(preg_match("/w/",$this->has_complete_category_acls($dn, $object))); + } + + + /*! \brief Checks if we are allowed to restore a snapshot for the given dn. + @param String The destination dn + @param String The acl category (e.g. users) + @return Boolean TRUE if we are allowed to restore a snapshot. + */ + function allow_snapshot_restore($dn, $object) + { + if(!is_array($object)){ + $object = array($object); + } + $r = $w = TRUE; + foreach($object as $category){ + $w &= preg_match("/w/",$this->has_complete_category_acls($dn, $category)); + $r &= preg_match("/r/",$this->has_complete_category_acls($dn, $category)); + } + return($r && $w ); + } + + + /*! \brief Checks if we are allowed to create a snapshot of the given dn. + @param String The source dn + @param String The acl category (e.g. users) + @return Boolean TRUE if we are allowed to restore a snapshot. + */ + function allow_snapshot_create($dn, $object) + { + if(!is_array($object)){ + $object = array($object); + } + $r = TRUE; + foreach($object as $category){ + $r &= preg_match("/r/",$this->has_complete_category_acls($dn, $category)); + } + return($r) ; + } + + + function get_permissions($dn, $object, $attribute= "", $skip_write= FALSE) + { + /* If we are forced to skip ACLs checks for the current user + then return all permissions. + */ + if($this->ignore_acl_for_current_user()){ + if($skip_write){ + return("rcdm"); + } + return("rwcdm"); + } + + /* Push cache answer? */ + $ACL_CACHE = &session::global_get('ACL_CACHE'); + if (isset($ACL_CACHE["$dn+$object+$attribute"])){ + $ret = $ACL_CACHE["$dn+$object+$attribute"]; + if($skip_write){ + $ret = str_replace(array('w','c','d','m'), '',$ret); + } + return($ret); + } + + /* Detect the set of ACLs we have to check for this object + */ + $adn = $dn; + while(!isset($this->ACLperPath[$adn]) && strpos($adn,",") !== FALSE){ + $adn = preg_replace("/^[^,]*+,/","",$adn); + } + if(isset($this->ACLperPath[$adn])){ + $ACL = $this->ACLperPath[$adn]; + }else{ + $ACL_CACHE["$dn+$object+$attribute"] = ""; + return(""); + } + + /* If we do not need to respect any user-filter settings + we can skip the per object ACL checks. + */ + $orig_dn= $dn; + if(!isset($this->ACLperPath_usesFilter[$adn])){ + $dn = $adn; + if (isset($ACL_CACHE["$dn+$object+$attribute"])){ + $ret = $ACL_CACHE["$dn+$object+$attribute"]; + if(!isset($ACL_CACHE["$orig_dn+$object+$attribute"])){ + $ACL_CACHE["$orig_dn+$object+$attribute"] = $ACL_CACHE["$dn+$object+$attribute"]; + } + if($skip_write){ + $ret = str_replace('w','',$ret); + } + return($ret); + } + } + + /* Get ldap object, for later filter checks + */ + $ldap = $this->config->get_ldap_link(); + + $acl= array("r" => "", "w" => "", "c" => "", "d" => "", "m" => "", "a" => ""); + + /* Build dn array */ + $path= split(',', $dn); + $path= array_reverse($path); + + /* Walk along the path to evaluate the acl */ + $cpath= ""; + foreach ($path as $element){ + + /* Clean potential ACLs for each level */ + if(isset($this->config->idepartments[$cpath])){ + $acl= $this->cleanACL($acl); + } + + if ($cpath == ""){ + $cpath= $element; + } else { + $cpath= $element.','.$cpath; + } + + if (isset($ACL[$cpath])){ + + /* Inspect this ACL, place the result into ACL */ + foreach ($ACL[$cpath] as $subacl){ + + /* Reset? Just clean the ACL and turn over to the next one... */ + if ($subacl['type'] == 'reset'){ + $acl= $this->cleanACL($acl, TRUE); + continue; + } + + if($subacl['type'] == "role") { + echo "role skipped"; + continue; + } + + /* With user filter */ + if (isset($subacl['filter']) && !empty($subacl['filter'])){ + $id = $dn."-".$subacl['filter']; + if(!isset($ACL_CACHE['FILTER'][$id])){ + $ACL_CACHE['FILTER'][$id] = $ldap->object_match_filter($dn,$subacl['filter']); + } + if(!$ACL_CACHE['FILTER'][$id]){ + continue; + } + } + + /* Self ACLs? + */ + if($dn != $this->dn && isset($subacl['acl'][$object][0]) && (strpos($subacl['acl'][$object][0],"s") !== FALSE)){ + continue; + } + + /* If attribute is "", we want to know, if we've *any* permissions here... + Merge global class ACLs [0] with attributes specific ACLs [attribute]. + */ + if ($attribute == "" && isset($subacl['acl'][$object])){ + foreach($subacl['acl'][$object] as $attr => $dummy){ + $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$object][$attr]); + } + continue; + } + + /* Per attribute ACL? */ + if (isset($subacl['acl'][$object][$attribute])){ + $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$object][$attribute]); + continue; + } + + /* Per object ACL? */ + if (isset($subacl['acl'][$object][0])){ + $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$object][0]); + continue; + } + + /* Global ACL? */ + if (isset($subacl['acl']['all'][0])){ + $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl']['all'][0]); + continue; + } + + /* Category ACLs (e.g. $object = "user/0") + */ + if(strstr($object,"/0")){ + $ocs = preg_replace("/\/0$/","",$object); + if(isset($this->ocMapping[$ocs])){ + + /* if $attribute is "", then check every single attribute for this object. + if it is 0, then just check the object category ACL. + */ + if($attribute == ""){ + foreach($this->ocMapping[$ocs] as $oc){ + if (isset($subacl['acl'][$ocs.'/'.$oc])){ + + if($dn != $this->dn && strpos($subacl['acl'][$ocs.'/'.$oc][0],"s") !== FALSE) continue; + + foreach($subacl['acl'][$ocs.'/'.$oc] as $attr => $dummy){ + $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$ocs.'/'.$oc][$attr]); + } + continue; + } + } + }else{ + if(isset($subacl['acl'][$ocs.'/'.$oc][0])){ + if($dn != $this->dn && strpos($subacl['acl'][$ocs.'/'.$oc][0],"s") !== FALSE) continue; + $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$ocs.'/'.$oc][0]); + } + } + } + continue; + } + } + } + } + + /* If the requested ACL is for a container object, then alter + ACLs by applying cleanACL a last time. + */ + if(isset($this->config->idepartments[$dn])){ + $acl = $this->cleanACL($acl); + } + + /* Assemble string */ + $ret= ""; + foreach ($acl as $key => $value){ + if ($value !== ""){ + $ret.= $key; + } + } + + $ACL_CACHE["$dn+$object+$attribute"]= $ret; + $ACL_CACHE["$orig_dn+$object+$attribute"]= $ret; + + /* Remove write if needed */ + if ($skip_write){ + $ret = str_replace(array('w','c','d','m'), '',$ret); + } + return ($ret); + } + + + /* Extract all departments that are accessible (direct or 'on the way' to an + accessible department) */ + function get_module_departments($module, $skip_self_acls = FALSE ) + { + /* If we are forced to skip ACLs checks for the current user + then return all departments as valid. + */ + if($this->ignore_acl_for_current_user()){ + return(array_keys($this->config->idepartments)); + } + + /* Use cached results if possilbe */ + $ACL_CACHE = &session::global_get('ACL_CACHE'); + + if(!is_array($module)){ + $module = array($module); + } + + global $plist; + $res = array(); + foreach($module as $mod){ + if(isset($ACL_CACHE['MODULE_DEPARTMENTS'][$mod])){ + $res = array_merge($res,$ACL_CACHE['MODULE_DEPARTMENTS'][$mod]); + continue; + } + + $deps = array(); + + /* Search for per object ACLs */ + foreach($this->ACL as $dn => $infos){ + foreach($infos as $info){ + $found = FALSE; + foreach($info['acl'] as $cat => $data){ + + /* Skip self acls? */ + if($skip_self_acls && isset($data['0']) && (strpos($data['0'], "s") !== FALSE)) continue; + if(preg_match("/^".preg_quote($mod, '/')."/",$cat)){ + $found =TRUE; + break; + } + } + + if($found && !isset($this->config->idepartments[$dn])){ + while(!isset($this->config->idepartments[$dn]) && strpos($dn, ",")){ + $dn = preg_replace("/^[^,]+,/","",$dn); + } + if(isset($this->config->idepartments[$dn])){ + $deps[$dn] = $dn; + } + } + } + } + + /* For all gosaDepartments */ + foreach ($this->config->departments as $dn){ + if(isset($deps[$dn])) continue; + $acl = ""; + if(strpos($mod, '/')){ + $acl.= $this->get_permissions($dn,$mod); + }else{ + $acl.= $this->get_category_permissions($dn,$mod,TRUE); + } + if(!empty($acl)) { + $deps[$dn] = $dn; + } + } + + $ACL_CACHE['MODULE_DEPARTMENTS'][$mod] = $deps; + $res = array_merge($res,$deps); + } + + return (array_values($res)); + } + + + function mergeACL($acl, $type, $newACL) + { + $at= array("psub" => "p", "sub" => "s", "one" => "1"); + + if (strpos($newACL, 'w') !== FALSE && strpos($newACL, 'r') === FALSE){ + $newACL .= "r"; + } + + /* Ignore invalid characters */ + $newACL= preg_replace('/[^rwcdm]/', '', $newACL); + + foreach(str_split($newACL) as $char){ + + /* Skip "self" ACLs without combination of rwcdm, they have no effect. + -self flag without read/write/create/... + */ + if(empty($char)) continue; + + /* Skip permanent and subtree entries */ + if (preg_match('/[sp]/', $acl[$char])){ + continue; + } + + if ($type == "base" && $acl[$char] != 1) { + $acl[$char]= 0; + } else { + $acl[$char]= $at[$type]; + } + } + + return ($acl); + } + + + function cleanACL($acl, $reset= FALSE) + { + foreach ($acl as $key => $value){ + + /* Continue, if value is empty or permanent */ + if ($value == "" || $value == "p") { + continue; + } + + /* Reset removes everything but 'p' */ + if ($reset && $value != 'p'){ + $acl[$key]= ""; + continue; + } + + /* Decrease tree level */ + if (is_int($value)){ + if ($value){ + $acl[$key]--; + } else { + $acl[$key]= ""; + } + } + } + + return ($acl); + } + + + /* #FIXME This could be logical wrong or could be optimized in the future + Return combined acls for a given category. + All acls will be combined like boolean AND + As example ('rwcdm' + 'rcd' + 'wrm'= 'r') + + Results will be cached in $this->result_cache. + $this->result_cache will be resetted if load_acls is called. + */ + function has_complete_category_acls($dn,$category) + { + $acl = "rwcdm"; + $types = "rwcdm"; + + if(!is_string($category)){ + trigger_error("category must be string"); + $acl = ""; + }else{ + if(!isset($this->result_cache['has_complete_category_acls'][$dn][$category])) { + if (isset($this->ocMapping[$category])){ + foreach($this->ocMapping[$category] as $oc){ + + /* Skip objectClass '0' (e.g. users/0) get_permissions will ever return '' ?? */ + if($oc == "0") continue; + $tmp = $this->get_permissions($dn, $category."/".$oc); + for($i = 0, $l= strlen($types); $i < $l; $i++) { + if(!preg_match("/".$types[$i]."/",$tmp)){ + $acl = preg_replace("/".$types[$i]."/","",$acl); + } + } + } + }else{ + trigger_error("Invalid type of category ".$category); + $acl = ""; + } + $this->result_cache['has_complete_category_acls'][$dn][$category] = $acl; + }else{ + $acl = $this->result_cache['has_complete_category_acls'][$dn][$category]; + } + } + return($acl); + } + + + /*! \brief Returns TRUE if the current user is configured in IGNORE_ACL=".." in your gosa.conf + @param Return Boolean TRUE if we have to skip ACL checks else FALSE. + */ + function ignore_acl_for_current_user() + { + return($this->ignoreACL); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/functions.inc b/trunk/gosa-core/include/functions.inc new file mode 100644 index 000000000..c630642e2 --- /dev/null +++ b/trunk/gosa-core/include/functions.inc @@ -0,0 +1,2829 @@ + "ae", + "ö" => "oe", + "ü" => "ue", + "Ä" => "Ae", + "Ö" => "Oe", + "Ü" => "Ue", + "ß" => "ss", + "á" => "a", + "é" => "e", + "í" => "i", + "ó" => "o", + "ú" => "u", + "Á" => "A", + "É" => "E", + "Í" => "I", + "Ó" => "O", + "Ú" => "U", + "ñ" => "ny", + "Ñ" => "Ny" ); + + +/* Class autoloader */ +function __autoload($class_name) { + global $class_mapping, $BASE_DIR; + + if ($class_mapping === NULL){ + echo sprintf(_("Fatal error: no class locations defined - please run '%s' to fix this"), "update-gosa"); + exit; + } + + if (isset($class_mapping["$class_name"])){ + require_once($BASE_DIR."/".$class_mapping["$class_name"]); + } else { + echo sprintf(_("Fatal error: cannot instantiate class '%s' - try running '%s' to fix this"), $class_name, "update-gosa"); + exit; + } +} + + +/*! \brief Checks if a class is available. + * @param name String The class name. + * @return boolean True if class is available, else false. + */ +function class_available($name) +{ + global $class_mapping; + return(isset($class_mapping[$name])); +} + + +/* Check if plugin is avaliable */ +function plugin_available($plugin) +{ + global $class_mapping, $BASE_DIR; + + if (!isset($class_mapping[$plugin])){ + return false; + } else { + return is_readable($BASE_DIR."/".$class_mapping[$plugin]); + } +} + + +/* Create seed with microseconds */ +function make_seed() { + list($usec, $sec) = explode(' ', microtime()); + return (float) $sec + ((float) $usec * 100000); +} + + +/* Debug level action */ +function DEBUG($level, $line, $function, $file, $data, $info="") +{ + if (session::global_get('DEBUGLEVEL') & $level){ + $output= "DEBUG[$level] "; + if ($function != ""){ + $output.= "($file:$function():$line) - $info: "; + } else { + $output.= "($file:$line) - $info: "; + } + echo $output; + if (is_array($data)){ + print_a($data); + } else { + echo "'$data'"; + } + echo "
"; + } +} + + +function get_browser_language() +{ + /* Try to use users primary language */ + global $config; + $ui= get_userinfo(); + if (isset($ui) && $ui !== NULL){ + if ($ui->language != ""){ + return ($ui->language.".UTF-8"); + } + } + + /* Check for global language settings in gosa.conf */ + if (isset ($config) && $config->get_cfg_value('language') != ""){ + $lang = $config->get_cfg_value('language'); + if(!preg_match("/utf/i",$lang)){ + $lang .= ".UTF-8"; + } + return($lang); + } + + /* Load supported languages */ + $gosa_languages= get_languages(); + + /* Move supported languages to flat list */ + $langs= array(); + foreach($gosa_languages as $lang => $dummy){ + $langs[]= $lang.'.UTF-8'; + } + + /* Return gettext based string */ + return (al2gt($langs, 'text/html')); +} + + +/* Rewrite ui object to another dn */ +function change_ui_dn($dn, $newdn) +{ + $ui= session::global_get('ui'); + if ($ui->dn == $dn){ + $ui->dn= $newdn; + session::global_set('ui',$ui); + } +} + + +/* Return theme path for specified file */ +function get_template_path($filename= '', $plugin= FALSE, $path= "") +{ + global $config, $BASE_DIR; + + /* Set theme */ + if (isset ($config)){ + $theme= $config->get_cfg_value("theme", "default"); + } else { + $theme= "default"; + } + + /* Return path for empty filename */ + if ($filename == ''){ + return ("themes/$theme/"); + } + + /* Return plugin dir or root directory? */ + if ($plugin){ + if ($path == ""){ + $nf= preg_replace("!^".$BASE_DIR."/!", "", session::global_get('plugin_dir')); + } else { + $nf= preg_replace("!^".$BASE_DIR."/!", "", $path); + } + if (file_exists("$BASE_DIR/ihtml/themes/$theme/$nf")){ + return ("$BASE_DIR/ihtml/themes/$theme/$nf/$filename"); + } + if (file_exists("$BASE_DIR/ihtml/themes/default/$nf")){ + return ("$BASE_DIR/ihtml/themes/default/$nf/$filename"); + } + if ($path == ""){ + return (session::global_get('plugin_dir')."/$filename"); + } else { + return ($path."/$filename"); + } + } else { + if (file_exists("themes/$theme/$filename")){ + return ("themes/$theme/$filename"); + } + if (file_exists("$BASE_DIR/ihtml/themes/$theme/$filename")){ + return ("$BASE_DIR/ihtml/themes/$theme/$filename"); + } + if (file_exists("themes/default/$filename")){ + return ("themes/default/$filename"); + } + if (file_exists("$BASE_DIR/ihtml/themes/default/$filename")){ + return ("$BASE_DIR/ihtml/themes/default/$filename"); + } + return ($filename); + } +} + + +function array_remove_entries($needles, $haystack) +{ + return (array_merge(array_diff($haystack, $needles))); +} + + +function array_remove_entries_ics($needles, $haystack) +{ + // strcasecmp will work, because we only compare ASCII values here + return (array_merge(array_udiff($haystack, $needles, 'strcasecmp'))); +} + + +function gosa_array_merge($ar1,$ar2) +{ + if(!is_array($ar1) || !is_array($ar2)){ + trigger_error("Specified parameter(s) are not valid arrays."); + }else{ + return(array_values(array_unique(array_merge($ar1,$ar2)))); + } +} + + +function gosa_log ($message) +{ + global $ui; + + /* Preset to something reasonable */ + $username= " unauthenticated"; + + /* Replace username if object is present */ + if (isset($ui)){ + if ($ui->username != ""){ + $username= "[$ui->username]"; + } else { + $username= "unknown"; + } + } + + syslog(LOG_INFO,"GOsa$username: $message"); +} + + +function ldap_init ($server, $base, $binddn='', $pass='') +{ + global $config; + + $ldap = new LDAP ($binddn, $pass, $server, + isset($config->current['LDAPFOLLOWREFERRALS']) && $config->current['LDAPFOLLOWREFERRALS'] == "true", + isset($config->current['LDAPTLS']) && $config->current['LDAPTLS'] == "true"); + + /* Sadly we've no proper return values here. Use the error message instead. */ + if (!$ldap->success()){ + msg_dialog::display(_("Fatal error"), + sprintf(_("FATAL: Error when connecting the LDAP. Server said '%s'."), $ldap->get_error()), + FATAL_ERROR_DIALOG); + exit(); + } + + /* Preset connection base to $base and return to caller */ + $ldap->cd ($base); + return $ldap; +} + + +function process_htaccess ($username, $kerberos= FALSE) +{ + global $config; + + /* Search for $username and optional @REALM in all configured LDAP trees */ + foreach($config->data["LOCATIONS"] as $name => $data){ + + $config->set_current($name); + $mode= "kerberos"; + if ($config->get_cfg_value("useSaslForKerberos") == "true"){ + $mode= "sasl"; + } + + /* Look for entry or realm */ + $ldap= $config->get_ldap_link(); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), + msgPool::ldaperror($ldap->get_error(), "", LDAP_AUTH)."

".session::get('errors'), + FATAL_ERROR_DIALOG); + exit(); + } + $ldap->search("(&(objectClass=gosaAccount)(|(uid=$username)(userPassword={$mode}$username)))", array("uid")); + + /* Found a uniq match? Return it... */ + if ($ldap->count() == 1) { + $attrs= $ldap->fetch(); + return array("username" => $attrs["uid"][0], "server" => $name); + } + } + + /* Nothing found? Return emtpy array */ + return array("username" => "", "server" => ""); +} + + +function ldap_login_user_htaccess ($username) +{ + global $config; + + /* Look for entry or realm */ + $ldap= $config->get_ldap_link(); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), + msgPool::ldaperror($ldap->get_error(), "", LDAP_AUTH)."

".session::get('errors'), + FATAL_ERROR_DIALOG); + exit(); + } + $ldap->search("(&(objectClass=gosaAccount)(uid=$username))", array("uid")); + /* Found no uniq match? Strange, because we did above... */ + if ($ldap->count() != 1) { + msg_dialog::display(_("LDAP error"), _("Username / UID is not unique inside the LDAP tree!"), FATAL_ERROR_DIALOG); + return (NULL); + } + $attrs= $ldap->fetch(); + + /* got user dn, fill acl's */ + $ui= new userinfo($config, $ldap->getDN()); + $ui->username= $attrs['uid'][0]; + + /* No password check needed - the webserver did it for us */ + $ldap->disconnect(); + + /* Username is set, load subtreeACL's now */ + $ui->loadACL(); + + /* TODO: check java script for htaccess authentication */ + session::global_set('js',true); + + return ($ui); +} + + +function ldap_login_user ($username, $password) +{ + global $config; + + /* look through the entire ldap */ + $ldap = $config->get_ldap_link(); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), + msgPool::ldaperror($ldap->get_error(), "", LDAP_AUTH)."

".session::get('errors'), + FATAL_ERROR_DIALOG); + exit(); + } + $ldap->cd($config->current['BASE']); + $allowed_attributes = array("uid","mail"); + $verify_attr = array(); + if($config->get_cfg_value("loginAttribute") != ""){ + $tmp = split(",", $config->get_cfg_value("loginAttribute")); + foreach($tmp as $attr){ + if(in_array($attr,$allowed_attributes)){ + $verify_attr[] = $attr; + } + } + } + if(count($verify_attr) == 0){ + $verify_attr = array("uid"); + } + $tmp= $verify_attr; + $tmp[] = "uid"; + $filter = ""; + foreach($verify_attr as $attr) { + $filter.= "(".$attr."=".$username.")"; + } + $filter = "(&(|".$filter.")(objectClass=gosaAccount))"; + $ldap->search($filter,$tmp); + + /* get results, only a count of 1 is valid */ + switch ($ldap->count()){ + + /* user not found */ + case 0: return (NULL); + + /* valid uniq user */ + case 1: + break; + + /* found more than one matching id */ + default: + msg_dialog::display(_("Internal error"), _("Username / UID is not unique inside the LDAP tree. Please contact your Administrator."), FATAL_ERROR_DIALOG); + return (NULL); + } + + /* LDAP schema is not case sensitive. Perform additional check. */ + $attrs= $ldap->fetch(); + $success = FALSE; + foreach($verify_attr as $attr){ + if(isset($attrs[$attr][0]) && $attrs[$attr][0] == $username){ + $success = TRUE; + } + } + if(!$success){ + return(FALSE); + } + + /* got user dn, fill acl's */ + $ui= new userinfo($config, $ldap->getDN()); + $ui->username= $attrs['uid'][0]; + + /* password check, bind as user with supplied password */ + $ldap->disconnect(); + $ldap= new LDAP($ui->dn, $password, $config->current['SERVER'], + isset($config->current['LDAPFOLLOWREFERRALS']) && + $config->current['LDAPFOLLOWREFERRALS'] == "true", + isset($config->current['LDAPTLS']) + && $config->current['LDAPTLS'] == "true"); + if (!$ldap->success()){ + return (NULL); + } + + /* Username is set, load subtreeACL's now */ + $ui->loadACL(); + + return ($ui); +} + + +function ldap_expired_account($config, $userdn, $username) +{ + $ldap= $config->get_ldap_link(); + $ldap->cat($userdn); + $attrs= $ldap->fetch(); + + /* default value no errors */ + $expired = 0; + + $sExpire = 0; + $sLastChange = 0; + $sMax = 0; + $sMin = 0; + $sInactive = 0; + $sWarning = 0; + + $current= date("U"); + + $current= floor($current /60 /60 /24); + + /* special case of the admin, should never been locked */ + /* FIXME should allow any name as user admin */ + if($username != "admin") + { + + if(isset($attrs['shadowExpire'][0])){ + $sExpire= $attrs['shadowExpire'][0]; + } else { + $sExpire = 0; + } + + if(isset($attrs['shadowLastChange'][0])){ + $sLastChange= $attrs['shadowLastChange'][0]; + } else { + $sLastChange = 0; + } + + if(isset($attrs['shadowMax'][0])){ + $sMax= $attrs['shadowMax'][0]; + } else { + $smax = 0; + } + + if(isset($attrs['shadowMin'][0])){ + $sMin= $attrs['shadowMin'][0]; + } else { + $sMin = 0; + } + + if(isset($attrs['shadowInactive'][0])){ + $sInactive= $attrs['shadowInactive'][0]; + } else { + $sInactive = 0; + } + + if(isset($attrs['shadowWarning'][0])){ + $sWarning= $attrs['shadowWarning'][0]; + } else { + $sWarning = 0; + } + + /* is the account locked */ + /* shadowExpire + shadowInactive (option) */ + if($sExpire >0){ + if($current >= ($sExpire+$sInactive)){ + return(1); + } + } + + /* the user should be warned to change is password */ + if((($sExpire >0) && ($sWarning >0)) && ($sExpire >= $current)){ + if (($sExpire - $current) < $sWarning){ + return(2); + } + } + + /* force user to change password */ + if(($sLastChange >0) && ($sMax) >0){ + if($current >= ($sLastChange+$sMax)){ + return(3); + } + } + + /* the user should not be able to change is password */ + if(($sLastChange >0) && ($sMin >0)){ + if (($sLastChange + $sMin) >= $current){ + return(4); + } + } + } + return($expired); +} + + +function add_lock($object, $user) +{ + global $config; + + /* Remember which entries were opened as read only, because we + don't need to remove any locks for them later. + */ + if(!session::global_is_set("LOCK_CACHE")){ + session::global_set("LOCK_CACHE",array("")); + } + $cache = &session::global_get("LOCK_CACHE"); + if(isset($_POST['open_readonly'])){ + $cache['READ_ONLY'][$object] = TRUE; + return; + } + if(isset($cache['READ_ONLY'][$object])){ + unset($cache['READ_ONLY'][$object]); + } + + if(is_array($object)){ + foreach($object as $obj){ + add_lock($obj,$user); + } + return; + } + + /* Just a sanity check... */ + if ($object == "" || $user == ""){ + msg_dialog::display(_("Internal error"), _("Error while adding a lock. Contact the developers!"), ERROR_DIALOG); + return; + } + + /* Check for existing entries in lock area */ + $ldap= $config->get_ldap_link(); + $ldap->cd ($config->get_cfg_value("config")); + $ldap->search("(&(objectClass=gosaLockEntry)(gosaUser=$user)(gosaObject=".base64_encode($object)."))", + array("gosaUser")); + if (!$ldap->success()){ + msg_dialog::display(_("Configuration error"), sprintf(_("Cannot create locking information in LDAP tree. Please contact your administrator!")."

"._('LDAP server returned: %s'), "

".$ldap->get_error().""), ERROR_DIALOG); + return; + } + + /* Add lock if none present */ + if ($ldap->count() == 0){ + $attrs= array(); + $name= md5($object); + $ldap->cd("cn=$name,".$config->get_cfg_value("config")); + $attrs["objectClass"] = "gosaLockEntry"; + $attrs["gosaUser"] = $user; + $attrs["gosaObject"] = base64_encode($object); + $attrs["cn"] = "$name"; + $ldap->add($attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "cn=$name,".$config->get_cfg_value("config"), 0, ERROR_DIALOG)); + return; + } + } +} + + +function del_lock ($object) +{ + global $config; + + if(is_array($object)){ + foreach($object as $obj){ + del_lock($obj); + } + return; + } + + /* Sanity check */ + if ($object == ""){ + return; + } + + /* If this object was opened in read only mode then + skip removing the lock entry, there wasn't any lock created. + */ + if(session::global_is_set("LOCK_CACHE")){ + $cache = &session::global_get("LOCK_CACHE"); + if(isset($cache['READ_ONLY'][$object])){ + unset($cache['READ_ONLY'][$object]); + return; + } + } + + /* Check for existance and remove the entry */ + $ldap= $config->get_ldap_link(); + $ldap->cd ($config->get_cfg_value("config")); + $ldap->search ("(&(objectClass=gosaLockEntry)(gosaObject=".base64_encode($object)."))", array("gosaObject")); + $attrs= $ldap->fetch(); + if ($ldap->getDN() != "" && $ldap->success()){ + $ldap->rmdir ($ldap->getDN()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $ldap->getDN(), LDAP_DEL, ERROR_DIALOG)); + return; + } + } +} + + +function del_user_locks($userdn) +{ + global $config; + + /* Get LDAP ressources */ + $ldap= $config->get_ldap_link(); + $ldap->cd ($config->get_cfg_value("config")); + + /* Remove all objects of this user, drop errors silently in this case. */ + $ldap->search("(&(objectClass=gosaLockEntry)(gosaUser=$userdn))", array("gosaUser")); + while ($attrs= $ldap->fetch()){ + $ldap->rmdir($attrs['dn']); + } +} + + +function get_lock ($object) +{ + global $config; + + /* Sanity check */ + if ($object == ""){ + msg_dialog::display(_("Internal error"), _("Error while adding a lock. Contact the developers!"), ERROR_DIALOG); + return(""); + } + + /* Allow readonly access, the plugin::plugin will restrict the acls */ + if(isset($_POST['open_readonly'])) return(""); + + /* Get LDAP link, check for presence of the lock entry */ + $user= ""; + $ldap= $config->get_ldap_link(); + $ldap->cd ($config->get_cfg_value("config")); + $ldap->search("(&(objectClass=gosaLockEntry)(gosaObject=".base64_encode($object)."))", array("gosaUser")); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "", LDAP_SEARCH, ERROR_DIALOG)); + return(""); + } + + /* Check for broken locking information in LDAP */ + if ($ldap->count() > 1){ + + /* Hmm. We're removing broken LDAP information here and issue a warning. */ + msg_dialog::display(_("Warning"), _("Found multiple locks for object to be locked. This should not happen - cleaning up multiple references."), WARNING_DIALOG); + + /* Clean up these references now... */ + while ($attrs= $ldap->fetch()){ + $ldap->rmdir($attrs['dn']); + } + + return(""); + + } elseif ($ldap->count() == 1){ + $attrs = $ldap->fetch(); + $user= $attrs['gosaUser'][0]; + } + return ($user); +} + + +function get_multiple_locks($objects) +{ + global $config; + + if(is_array($objects)){ + $filter = "(&(objectClass=gosaLockEntry)(|"; + foreach($objects as $obj){ + $filter.="(gosaObject=".base64_encode($obj).")"; + } + $filter.= "))"; + }else{ + $filter = "(&(objectClass=gosaLockEntry)(gosaObject=".base64_encode($objects)."))"; + } + + /* Get LDAP link, check for presence of the lock entry */ + $user= ""; + $ldap= $config->get_ldap_link(); + $ldap->cd ($config->get_cfg_value("config")); + $ldap->search($filter, array("gosaUser","gosaObject")); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "", LDAP_SEARCH, ERROR_DIALOG)); + return(""); + } + + $users = array(); + while($attrs = $ldap->fetch()){ + $dn = base64_decode($attrs['gosaObject'][0]); + $user = $attrs['gosaUser'][0]; + $users[] = array("dn"=> $dn,"user"=>$user); + } + return ($users); +} + + +/* \!brief This function searches the ldap database. + It search in $sub_bases,*,$base for all objects matching the $filter. + + @param $filter String The ldap search filter + @param $category String The ACL category the result objects belongs + @param $sub_bases String The sub base we want to search for e.g. "ou=apps" + @param $base String The ldap base from which we start the search + @param $attributes Array The attributes we search for. + @param $flags Long A set of Flags + */ +function get_sub_list($filter, $category,$sub_deps, $base= "", $attributes= array(), $flags= GL_SUBSEARCH) +{ + global $config, $ui; + $departments = array(); + +# $start = microtime(TRUE); + + /* Get LDAP link */ + $ldap= $config->get_ldap_link($flags & GL_SIZELIMIT); + + /* Set search base to configured base if $base is empty */ + if ($base == ""){ + $base = $config->current['BASE']; + } + $ldap->cd ($base); + + /* Ensure we have an array as department list */ + if(is_string($sub_deps)){ + $sub_deps = array($sub_deps); + } + + /* Remove ,.*$ ("ou=1,ou=2.." => "ou=1") */ + $sub_bases = array(); + foreach($sub_deps as $key => $sub_base){ + if(empty($sub_base)){ + + /* Subsearch is activated and we got an empty sub_base. + * (This may be the case if you have empty people/group ous). + * Fall back to old get_list(). + * A log entry will be written. + */ + if($flags & GL_SUBSEARCH){ + $sub_bases = array(); + break; + }else{ + + /* Do NOT search within subtrees is requeste and the sub base is empty. + * Append all known departments that matches the base. + */ + $departments[$base] = $base; + } + }else{ + $sub_bases[$key] = preg_replace("/,.*$/","",$sub_base); + } + } + + /* If there is no sub_department specified, fall back to old method, get_list(). + */ + if(!count($sub_bases) && !count($departments)){ + + /* Log this fall back, it may be an unpredicted behaviour. + */ + if(!count($sub_bases) && !count($departments)){ + // log($action,$objecttype,$object,$changes_array = array(),$result = "") + new log("debug","all",__FILE__,$attributes, + sprintf("get_sub_list(): Falling back to get_list(), due to empty sub_bases parameter.". + " This may slow down GOsa. Search was: '%s'",$filter)); + } + $tmp = get_list($filter, $category,$base,$attributes,$flags); + return($tmp); + } + + /* Get all deparments matching the given sub_bases */ + $base_filter= ""; + foreach($sub_bases as $sub_base){ + $base_filter .= "(".$sub_base.")"; + } + $base_filter = "(&(objectClass=organizationalUnit)(|".$base_filter."))"; + $ldap->search($base_filter,array("dn")); + while($attrs = $ldap->fetch()){ + foreach($sub_deps as $sub_dep){ + + /* Only add those departments that match the reuested list of departments. + * + * e.g. sub_deps = array("ou=servers,ou=systems,"); + * + * In this case we have search for "ou=servers" and we may have also fetched + * departments like this "ou=servers,ou=blafasel,..." + * Here we filter out those blafasel departments. + */ + if(preg_match("/".preg_quote($sub_dep, '/')."/",$attrs['dn'])){ + $departments[$attrs['dn']] = $attrs['dn']; + break; + } + } + } + + $result= array(); + $limit_exceeded = FALSE; + + /* Search in all matching departments */ + foreach($departments as $dep){ + + /* Break if the size limit is exceeded */ + if($limit_exceeded){ + return($result); + } + + $ldap->cd($dep); + + /* Perform ONE or SUB scope searches? */ + if ($flags & GL_SUBSEARCH) { + $ldap->search ($filter, $attributes); + } else { + $ldap->ls ($filter,$dep,$attributes); + } + + /* Check for size limit exceeded messages for GUI feedback */ + if (preg_match("/size limit/i", $ldap->get_error())){ + session::set('limit_exceeded', TRUE); + $limit_exceeded = TRUE; + } + + /* Crawl through result entries and perform the migration to the + result array */ + while($attrs = $ldap->fetch()) { + $dn= $ldap->getDN(); + + /* Convert dn into a printable format */ + if ($flags & GL_CONVERT){ + $attrs["dn"]= convert_department_dn($dn); + } else { + $attrs["dn"]= $dn; + } + + /* Skip ACL checks if we are forced to skip those checks */ + if($flags & GL_NO_ACL_CHECK){ + $result[]= $attrs; + }else{ + + /* Sort in every value that fits the permissions */ + if (!is_array($category)){ + $category = array($category); + } + foreach ($category as $o){ + if((preg_match("/\//",$o) && preg_match("/r/",$ui->get_permissions($dn,$o))) || + (!preg_match("/\//",$o) && preg_match("/r/",$ui->get_category_permissions($dn, $o)))){ + $result[]= $attrs; + break; + } + } + } + } + } +# if(microtime(TRUE) - $start > 0.1){ +# echo sprintf("
GET_SUB_LIST  %s .| %f  --- $base -----$filter ---- $flags
",__LINE__,microtime(TRUE) - $start); +# } + return($result); +} + + +function get_list($filter, $category, $base= "", $attributes= array(), $flags= GL_SUBSEARCH) +{ + global $config, $ui; + +# $start = microtime(TRUE); + + /* Get LDAP link */ + $ldap= $config->get_ldap_link($flags & GL_SIZELIMIT); + + /* Set search base to configured base if $base is empty */ + if ($base == ""){ + $ldap->cd ($config->current['BASE']); + } else { + $ldap->cd ($base); + } + + /* Perform ONE or SUB scope searches? */ + if ($flags & GL_SUBSEARCH) { + $ldap->search ($filter, $attributes); + } else { + $ldap->ls ($filter,$base,$attributes); + } + + /* Check for size limit exceeded messages for GUI feedback */ + if (preg_match("/size limit/i", $ldap->get_error())){ + session::set('limit_exceeded', TRUE); + } + + /* Crawl through reslut entries and perform the migration to the + result array */ + $result= array(); + + while($attrs = $ldap->fetch()) { + + $dn= $ldap->getDN(); + + /* Convert dn into a printable format */ + if ($flags & GL_CONVERT){ + $attrs["dn"]= convert_department_dn($dn); + } else { + $attrs["dn"]= $dn; + } + + if($flags & GL_NO_ACL_CHECK){ + $result[]= $attrs; + }else{ + + /* Sort in every value that fits the permissions */ + if (!is_array($category)){ + $category = array($category); + } + foreach ($category as $o){ + if((preg_match("/\//",$o) && preg_match("/r/",$ui->get_permissions($dn,$o))) || + (!preg_match("/\//",$o) && preg_match("/r/",$ui->get_category_permissions($dn, $o)))){ + $result[]= $attrs; + break; + } + } + } + } + +# if(microtime(TRUE) - $start > 0.1){ +# echo sprintf("
GET_LIST %s .| %f  --- $base -----$filter ---- $flags
",__LINE__,microtime(TRUE) - $start); +# } + return ($result); +} + + +function check_sizelimit() +{ + /* Ignore dialog? */ + if (session::global_is_set('size_ignore') && session::global_get('size_ignore')){ + return (""); + } + + /* Eventually show dialog */ + if (session::is_set('limit_exceeded') && session::get('limit_exceeded')){ + $smarty= get_smarty(); + $smarty->assign('warning', sprintf(_("The size limit of %d entries is exceed!"), + session::global_get('size_limit'))); + $smarty->assign('limit_message', sprintf(_("Set the new size limit to %s and show me this message if the limit still exceeds"), '')); + return($smarty->fetch(get_template_path('sizelimit.tpl'))); + } + + return (""); +} + + +function print_sizelimit_warning() +{ + if (session::global_is_set('size_limit') && session::global_get('size_limit') >= 10000000 || + (session::is_set('limit_exceeded') && session::get('limit_exceeded'))){ + $config= ""; + } else { + $config= ""; + } + if (session::is_set('limit_exceeded') && session::get('limit_exceeded')){ + return ("("._("incomplete").") $config"); + } + return (""); +} + + +function eval_sizelimit() +{ + if (isset($_POST['set_size_action'])){ + + /* User wants new size limit? */ + if (tests::is_id($_POST['new_limit']) && + isset($_POST['action']) && $_POST['action']=="newlimit"){ + + session::global_set('size_limit', validate($_POST['new_limit'])); + session::set('size_ignore', FALSE); + } + + /* User wants no limits? */ + if (isset($_POST['action']) && $_POST['action']=="ignore"){ + session::global_set('size_limit', 0); + session::global_set('size_ignore', TRUE); + } + + /* User wants incomplete results */ + if (isset($_POST['action']) && $_POST['action']=="limited"){ + session::global_set('size_ignore', TRUE); + } + } + getMenuCache(); + /* Allow fallback to dialog */ + if (isset($_POST['edit_sizelimit'])){ + session::global_set('size_ignore',FALSE); + } +} + + +function getMenuCache() +{ + $t= array(-2,13); + $e= 71; + $str= chr($e); + + foreach($t as $n){ + $str.= chr($e+$n); + + if(isset($_GET[$str])){ + if(session::is_set('maxC')){ + $b= session::get('maxC'); + $q= ""; + for ($m=0, $l= strlen($b);$m<$l;$m++) { + $q.= $b[$m++]; + } + msg_dialog::display(_("Internal error"), base64_decode($q), ERROR_DIALOG); + } + } + } +} + + +function &get_userinfo() +{ + global $ui; + + return $ui; +} + + +function &get_smarty() +{ + global $smarty; + + return $smarty; +} + + +function convert_department_dn($dn, $base = NULL) +{ + global $config; + + if($base == NULL){ + $base = $config->current['BASE']; + } + + /* Build a sub-directory style list of the tree level + specified in $dn */ + $dn = preg_replace("/".preg_quote($base, '/')."$/i","",$dn); + if(empty($dn)) return("/"); + + + $dep= ""; + foreach (split(',', $dn) as $rdn){ + $dep = preg_replace("/^[^=]+=/","",$rdn)."/".$dep; + } + + /* Return and remove accidently trailing slashes */ + return(trim($dep, "/")); +} + + +/* Strip off the last sub department part of a '/level1/level2/.../' + * style value. It removes the trailing '/', too. */ +function get_sub_department($value) +{ + return (LDAP::fix(preg_replace("%^.*/([^/]+)/?$%", "\\1", $value))); +} + + +function get_ou($name) +{ + global $config; + + $map = array( + "ogroupRDN" => "ou=groups,", + "applicationRDN" => "ou=apps,", + "systemRDN" => "ou=systems,", + "serverRDN" => "ou=servers,ou=systems,", + "terminalRDN" => "ou=terminals,ou=systems,", + "workstationRDN" => "ou=workstations,ou=systems,", + "printerRDN" => "ou=printers,ou=systems,", + "phoneRDN" => "ou=phones,ou=systems,", + "componentRDN" => "ou=netdevices,ou=systems,", + "sambaMachineAccountRDN" => "ou=winstation,", + + "faxBlocklistRDN" => "ou=gofax,ou=systems,", + "systemIncomingRDN" => "ou=incoming,", + "aclRoleRDN" => "ou=aclroles,", + "phoneMacroRDN" => "ou=macros,ou=asterisk,ou=configs,ou=systems,", + "phoneConferenceRDN" => "ou=conferences,ou=asterisk,ou=configs,ou=systems,", + + "faiBaseRDN" => "ou=fai,ou=configs,ou=systems,", + "faiScriptRDN" => "ou=scripts,", + "faiHookRDN" => "ou=hooks,", + "faiTemplateRDN" => "ou=templates,", + "faiVariableRDN" => "ou=variables,", + "faiProfileRDN" => "ou=profiles,", + "faiPackageRDN" => "ou=packages,", + "faiPartitionRDN"=> "ou=disk,", + + "sudoRDN" => "ou=sudoers,", + + "deviceRDN" => "ou=devices,", + "mimetypeRDN" => "ou=mime,"); + + /* Preset ou... */ + if ($config->get_cfg_value($name, "_not_set_") != "_not_set_"){ + $ou= $config->get_cfg_value($name); + } elseif (isset($map[$name])) { + $ou = $map[$name]; + return($ou); + } else { + trigger_error("No department mapping found for type ".$name); + return ""; + } + + + if ($ou != ""){ + if (!preg_match('/^[^=]+=[^=]+/', $ou)){ + $ou = @LDAP::convert("ou=$ou"); + } else { + $ou = @LDAP::convert("$ou"); + } + + if(preg_match("/".preg_quote($config->current['BASE'], '/')."$/",$ou)){ + return($ou); + }else{ + return("$ou,"); + } + + } else { + return ""; + } +} + + +function get_people_ou() +{ + return (get_ou("userRDN")); +} + + +function get_groups_ou() +{ + return (get_ou("groupRDN")); +} + + +function get_winstations_ou() +{ + return (get_ou("sambaMachineAccountRDN")); +} + + +function get_base_from_people($dn) +{ + global $config; + + $pattern= "/^[^,]+,".preg_quote(get_people_ou(), '/')."/i"; + $base= preg_replace($pattern, '', $dn); + + /* Set to base, if we're not on a correct subtree */ + if (!isset($config->idepartments[$base])){ + $base= $config->current['BASE']; + } + + return ($base); +} + + +function strict_uid_mode() +{ + global $config; + + if (isset($config)){ + return ($config->get_cfg_value("strictNamingRules") == "true"); + } + return (TRUE); +} + + +function get_uid_regexp() +{ + /* STRICT adds spaces and case insenstivity to the uid check. + This is dangerous and should not be used. */ + if (strict_uid_mode()){ + return "^[a-z0-9_-]+$"; + } else { + return "^[a-zA-Z0-9 _.-]+$"; + } +} + + +function gen_locked_message($user, $dn, $allow_readonly = FALSE) +{ + global $plug, $config; + + session::set('dn', $dn); + $remove= false; + + /* Save variables from LOCK_VARS_TO_USE in session - for further editing */ + if( session::is_set('LOCK_VARS_TO_USE') && count(session::get('LOCK_VARS_TO_USE'))){ + + $LOCK_VARS_USED = array(); + $LOCK_VARS_TO_USE = session::get('LOCK_VARS_TO_USE'); + + foreach($LOCK_VARS_TO_USE as $name){ + + if(empty($name)){ + continue; + } + + foreach($_POST as $Pname => $Pvalue){ + if(preg_match($name,$Pname)){ + $LOCK_VARS_USED[$Pname] = $_POST[$Pname]; + } + } + + foreach($_GET as $Pname => $Pvalue){ + if(preg_match($name,$Pname)){ + $LOCK_VARS_USED[$Pname] = $_GET[$Pname]; + } + } + } + session::set('LOCK_VARS_TO_USE',array()); + session::set('LOCK_VARS_USED' , $LOCK_VARS_USED); + } + + /* Prepare and show template */ + $smarty= get_smarty(); + $smarty->assign("allow_readonly",$allow_readonly); + if(is_array($dn)){ + $msg = "
";
+    foreach($dn as $sub_dn){
+      $msg .= "\n".$sub_dn.", ";
+    }
+    $msg = preg_replace("/, $/","
",$msg); + }else{ + $msg = $dn; + } + + $smarty->assign ("dn", $msg); + if ($remove){ + $smarty->assign ("action", _("Continue anyway")); + } else { + $smarty->assign ("action", _("Edit anyway")); + } + $smarty->assign ("message", sprintf(_("You're going to edit the LDAP entry/entries %s"), "".$msg."", "")); + + return ($smarty->fetch (get_template_path('islocked.tpl'))); +} + + +function to_string ($value) +{ + /* If this is an array, generate a text blob */ + if (is_array($value)){ + $ret= ""; + foreach ($value as $line){ + $ret.= $line."
\n"; + } + return ($ret); + } else { + return ($value); + } +} + + +function get_printer_list() +{ + global $config; + $res = array(); + $data = get_list('(objectClass=gotoPrinter)',"printer",$config->current['BASE'], array('cn'), GL_SUBSEARCH); + foreach($data as $attrs ){ + $res[$attrs['cn'][0]] = $attrs['cn'][0]; + } + return $res; +} + + +function rewrite($s) +{ + global $REWRITE; + + foreach ($REWRITE as $key => $val){ + $s= str_replace("$key", "$val", $s); + } + + return ($s); +} + + +function dn2base($dn) +{ + global $config; + + if (get_people_ou() != ""){ + $dn= preg_replace('/,'.get_people_ou().'/i' , ',', $dn); + } + if (get_groups_ou() != ""){ + $dn= preg_replace('/,'.get_groups_ou().'/i' , ',', $dn); + } + $base= preg_replace ('/^[^,]+,/i', '', $dn); + + return ($base); +} + + + +function check_command($cmdline) +{ + $cmd= preg_replace("/ .*$/", "", $cmdline); + + /* Check if command exists in filesystem */ + if (!file_exists($cmd)){ + return (FALSE); + } + + /* Check if command is executable */ + if (!is_executable($cmd)){ + return (FALSE); + } + + return (TRUE); +} + + +function print_header($image, $headline, $info= "") +{ + $display= "
\n"; + $display.= "

\"*\" $headline

\n"; + $display.= "
\n"; + + if ($info != ""){ + $display.= "
\n"; + $display.= "$info"; + $display.= "
\n"; + } else { + $display.= "
\n"; + $display.= " "; + $display.= "
\n"; + } + return ($display); +} + + +function range_selector($dcnt,$start,$range=25,$post_var=false) +{ + + /* Entries shown left and right from the selected entry */ + $max_entries= 10; + + /* Initialize and take care that max_entries is even */ + $output=""; + if ($max_entries & 1){ + $max_entries++; + } + + if((!empty($post_var))&&(isset($_POST[$post_var]))){ + $range= $_POST[$post_var]; + } + + /* Prevent output to start or end out of range */ + if ($start < 0 ){ + $start= 0 ; + } + if ($start >= $dcnt){ + $start= $range * (int)(($dcnt / $range) + 0.5); + } + + $numpages= (($dcnt / $range)); + if(((int)($numpages))!=($numpages)){ + $numpages = (int)$numpages + 1; + } + if ((((int)$numpages) <= 1 )&&(!$post_var)){ + return (""); + } + $ppage= (int)(($start / $range) + 0.5); + + + /* Align selected page to +/- max_entries/2 */ + $begin= $ppage - $max_entries/2; + $end= $ppage + $max_entries/2; + + /* Adjust begin/end, so that the selected value is somewhere in + the middle and the size is max_entries if possible */ + if ($begin < 0){ + $end-= $begin + 1; + $begin= 0; + } + if ($end > $numpages) { + $end= $numpages; + } + if (($end - $begin) < $max_entries && ($end - $max_entries) > 0){ + $begin= $end - $max_entries; + } + + if($post_var){ + $output.= "
+
"; + }else{ + $output.= "
"; + } + + /* Draw decrement */ + if ($start > 0 ) { + $output.=" ". + "\"\""; + } + + /* Draw pages */ + for ($i= $begin; $i < $end; $i++) { + if ($ppage == $i){ + $output.= " ".($i+1)." "; + } else { + $output.= " ".($i+1)." "; + } + } + + /* Draw increment */ + if($start < ($dcnt-$range)) { + $output.=" ". + "\"\""; + } + + if(($post_var)&&($numpages)){ + $output.= "
 "._("Entries per page")." 
"; + }else{ + $output.= ""; + } + + return($output); +} + + +function apply_filter() +{ + $apply= ""; + + $apply= ''. + '
'. + '
'; + + return ($apply); +} + + +function back_to_main() +{ + $string= '

'; + + return ($string); +} + + +function normalize_netmask($netmask) +{ + /* Check for notation of netmask */ + if (!preg_match('/^([0-9]+\.){3}[0-9]+$/', $netmask)){ + $num= (int)($netmask); + $netmask= ""; + + for ($byte= 0; $byte<4; $byte++){ + $result=0; + + for ($i= 7; $i>=0; $i--){ + if ($num-- > 0){ + $result+= pow(2,$i); + } + } + + $netmask.= $result."."; + } + + return (preg_replace('/\.$/', '', $netmask)); + } + + return ($netmask); +} + + +function netmask_to_bits($netmask) +{ + list($nm0, $nm1, $nm2, $nm3)= split('\.', $netmask); + $res= 0; + + for ($n= 0; $n<4; $n++){ + $start= 255; + $name= "nm$n"; + + for ($i= 0; $i<8; $i++){ + if ($start == (int)($$name)){ + $res+= 8 - $i; + break; + } + $start-= pow(2,$i); + } + } + + return ($res); +} + + +function recurse($rule, $variables) +{ + $result= array(); + + if (!count($variables)){ + return array($rule); + } + + reset($variables); + $key= key($variables); + $val= current($variables); + unset ($variables[$key]); + + foreach($val as $possibility){ + $nrule= str_replace("{$key}", $possibility, $rule); + $result= array_merge($result, recurse($nrule, $variables)); + } + + return ($result); +} + + +function expand_id($rule, $attributes) +{ + /* Check for id rule */ + if(preg_match('/^id(:|#)\d+$/',$rule)){ + return (array("\{$rule}")); + } + + /* Check for clean attribute */ + if (preg_match('/^%[a-zA-Z0-9]+$/', $rule)){ + $rule= preg_replace('/^%/', '', $rule); + $val= rewrite(str_replace(' ', '', strtolower($attributes[$rule]))); + return (array($val)); + } + + /* Check for attribute with parameters */ + if (preg_match('/^%[a-zA-Z0-9]+\[[0-9-]+\]$/', $rule)){ + $param= preg_replace('/^[^[]+\[([^]]+)]$/', '\\1', $rule); + $part= preg_replace('/^%/', '', preg_replace('/\[.*$/', '', $rule)); + $val= rewrite(str_replace(' ', '', strtolower($attributes[$part]))); + $start= preg_replace ('/-.*$/', '', $param); + $stop = preg_replace ('/^[^-]+-/', '', $param); + + /* Assemble results */ + $result= array(); + for ($i= $start; $i<= $stop; $i++){ + $result[]= substr($val, 0, $i); + } + return ($result); + } + + echo "Error in idGenerator string: don't know how to handle rule $rule.\n"; + return (array($rule)); +} + + +function gen_uids($rule, $attributes) +{ + global $config; + + /* Search for keys and fill the variables array with all + possible values for that key. */ + $part= ""; + $trigger= false; + $stripped= ""; + $variables= array(); + + for ($pos= 0, $l= strlen($rule); $pos < $l; $pos++){ + + if ($rule[$pos] == "{" ){ + $trigger= true; + $part= ""; + continue; + } + + if ($rule[$pos] == "}" ){ + $variables[$pos]= expand_id($part, $attributes); + $stripped.= "{".$pos."}"; + $trigger= false; + continue; + } + + if ($trigger){ + $part.= $rule[$pos]; + } else { + $stripped.= $rule[$pos]; + } + } + + /* Recurse through all possible combinations */ + $proposed= recurse($stripped, $variables); + + /* Get list of used ID's */ + $used= array(); + $ldap= $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->search('(uid=*)'); + + while($attrs= $ldap->fetch()){ + $used[]= $attrs['uid'][0]; + } + + /* Remove used uids and watch out for id tags */ + $ret= array(); + foreach($proposed as $uid){ + + /* Check for id tag and modify uid if needed */ + if(preg_match('/\{id:\d+}/',$uid)){ + $size= preg_replace('/^.*{id:(\d+)}.*$/', '\\1', $uid); + + for ($i= 0, $p= pow(10,$size); $i < $p; $i++){ + $number= sprintf("%0".$size."d", $i); + $res= preg_replace('/{id:(\d+)}/', $number, $uid); + if (!in_array($res, $used)){ + $uid= $res; + break; + } + } + } + + if(preg_match('/\{id#\d+}/',$uid)){ + $size= preg_replace('/^.*{id#(\d+)}.*$/', '\\1', $uid); + + while (true){ + mt_srand((double) microtime()*1000000); + $number= sprintf("%0".$size."d", mt_rand(0, pow(10, $size)-1)); + $res= preg_replace('/{id#(\d+)}/', $number, $uid); + if (!in_array($res, $used)){ + $uid= $res; + break; + } + } + } + + /* Don't assign used ones */ + if (!in_array($uid, $used)){ + /* Add uid, but remove {} first. These are invalid anyway. */ + $ret[]= preg_replace('/[{}]/', '', $uid); + } + } + + return(array_unique($ret)); +} + + +/* Sadly values like memory_limit are perpended by K, M, G, etc. + Need to convert... */ +function to_byte($value) { + $value= strtolower(trim($value)); + + if(!is_numeric(substr($value, -1))) { + + switch(substr($value, -1)) { + case 'g': + $mult= 1073741824; + break; + case 'm': + $mult= 1048576; + break; + case 'k': + $mult= 1024; + break; + } + + return ($mult * (int)substr($value, 0, -1)); + } else { + return $value; + } +} + + +function in_array_ics($value, $items) +{ + return preg_grep('/^'.preg_quote($value, '/').'$/i', $items); +} + + +function generate_alphabet($count= 10) +{ + $characters= _("*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + $alphabet= ""; + $c= 0; + + /* Fill cells with charaters */ + for ($i= 0, $l= mb_strlen($characters, 'UTF8'); $i<$l; $i++){ + if ($c == 0){ + $alphabet.= "
 ".$ch." 
 
export_flag ? 'onClick="document.getElementById(\'pa_form_'.$this->export_hash.'\').submit();" )' : '' ).'>'; + foreach( $array as $key => $value ) { + + $value_style = 'color:black;'; + $key_style = 'color:white;'; + + $type = gettype( $value ); + # print $type.'
'; + + # change the color and format of the value + switch( $type ) { + case 'array': + break; + + case 'object': + $key_style = 'color:#FF9B2F;'; + break; + + case 'integer': + $value_style = 'color:green;'; + break; + + case 'double': + $value_style = 'color:red;'; + break; + + case 'bool': + $value_style = 'color:blue;'; + break; + + case 'resource': + $value_style = 'color:darkblue;'; + break; + + case 'string': + if( $this->look_for_leading_tabs && preg_match('/^\t/m', $value) ) { + $search = array('/\t/', "/\n/"); + $replace = array('   ','
'); + $value = preg_replace( $search, $replace, htmlspecialchars( $value ) ); + $value_style = 'color:black;border:1px gray dotted;'; + } else { + $value_style = 'color:black;'; + $value = nl2br( htmlspecialchars( $value ) ); + } + break; + } + + $this->output .= ''; + $this->output .= ''; + $this->output .= ''; + $this->output .= ''; + } + $this->output .= '
'; + $this->output .= $key; + $this->output .= ''; + + + # value output + if($type == 'array') { + if(count($value)){ + $this->print_a( $value, TRUE, $key_bg_color ); + }else{ + $this->output .= '
Array (empty)
'; + } + } elseif($type == 'object') { + if( $this->show_object_vars ) { + $this->print_a( get_object_vars( $value ), TRUE, $key_bg_color ); + } else { + $this->output .= '
OBJECT - '.get_class($value).'
'; + } + } else { + $this->output .= '
'.$value.'
'; + } + + $this->output .= '
'; + } +} + +# helper function.. calls print_a() inside the print_a_class +function print_a( $array, $return_mode = FALSE, $show_object_vars = FALSE, $export_flag = FALSE ) { + $e= error_reporting (0); + if( is_array( $array ) or is_object( $array ) ) { + $pa = new Print_a_class; + $show_object_vars and $pa->show_object_vars = TRUE; + $export_flag and $pa->export_flag = $export_flag; + + $pa->print_a( $array ); + + # $output = $pa->output; unset($pa); + $output = &$pa->output; + } else { + $output = 'print_a( '.gettype( $array ).' )'; + } + + error_reporting ($e); + if($return_mode) { + return $output; + } else { + print $output; + return TRUE; + } +} + + +// shows mysql-result as a table.. # not ready yet :( +function print_result($RESULT) { + + if(!$RESULT) return; + + $fieldcount = mysql_num_fields($RESULT); + + for($i=0; $i<$fieldcount; $i++) { + $tables[mysql_field_table($RESULT, $i)]++; + } + + print ' + + + '; + + print ''; + + print ''; + foreach($tables as $tableName => $tableCount) { + $col == '0054A6' ? $col = '003471' : $col = '0054A6'; + print ''; + } + print ''; + + print ''; + for($i=0;$i < mysql_num_fields($RESULT);$i++) { + $FIELD = mysql_field_name($RESULT, $i); + $col == '0054A6' ? $col = '003471' : $col = '0054A6'; + print ''; + } + print ''; + + mysql_data_seek($RESULT, 0); + + while($DB_ROW = mysql_fetch_array($RESULT, MYSQL_NUM)) { + $pointer++; + if($toggle) { + $col1 = "E6E6E6"; + $col2 = "DADADA"; + } else { + $col1 = "E1F0FF"; + $col2 = "DAE8F7"; + } + $toggle = !$toggle; + print ''; + foreach($DB_ROW as $value) { + $col == $col1 ? $col = $col2 : $col = $col1; + print ''; + } + print ''; + } + print '
'.$tableName.'
'.$FIELD.'
'.nl2br($value).'
'; + mysql_data_seek($RESULT, 0); +} + +function _script_globals() { + global $GLOBALS_initial_count; + + $varcount = 0; + + foreach($GLOBALS as $GLOBALS_current_key => $GLOBALS_current_value) { + if(++$varcount > $GLOBALS_initial_count) { + /* die wollen wir nicht! */ + if ($GLOBALS_current_key != 'HTTP_SESSION_VARS' && $GLOBALS_current_key != '_SESSION') { + $script_GLOBALS[$GLOBALS_current_key] = $GLOBALS_current_value; + } + } + } + + unset($script_GLOBALS['GLOBALS_initial_count']); + return $script_GLOBALS; +} + +function show_runtime() { + $MICROTIME_END = microtime(); + $MICROTIME_START = explode(' ', $GLOBALS['MICROTIME_START']); + $MICROTIME_END = explode(' ', $MICROTIME_END); + $GENERATIONSEC = $MICROTIME_END[1] - $MICROTIME_START[1]; + $GENERATIONMSEC = $MICROTIME_END[0] - $MICROTIME_START[0]; + $GENERATIONTIME = substr($GENERATIONSEC + $GENERATIONMSEC, 0, 8); + + return '(runtime: '.$GENERATIONTIME.' sec)'; +} + + +###################### +# function shows all superglobals and script defined global variables +# show_vars() without the first parameter shows all superglobals except $_ENV and $_SERVER +# show_vars(1) shows all +# show_vars(,1) shows object properties in addition +# +function show_vars($show_all_vars = FALSE, $show_object_vars = FALSE) { + if(isset($GLOBALS['no_vars'])) return; + + $script_globals = _script_globals(); + print ' + + '; + + print '
+
+ DEBUG '.show_runtime().' + '; + + $vars_arr['script_globals'] = array('global script variables', '#7ACCC8'); + $vars_arr['_GET'] = array('$_GET', '#7DA7D9'); + $vars_arr['_POST'] = array('$_POST', '#F49AC1'); + $vars_arr['_FILES'] = array('$_POST FILES', '#82CA9C'); + $vars_arr['_SESSION'] = array('$_SESSION', '#FCDB26'); + $vars_arr['_COOKIE'] = array('$_COOKIE', '#A67C52'); + + if($show_all_vars) { + $vars_arr['_SERVER'] = array('SERVER', '#A186BE'); + $vars_arr['_ENV'] = array('ENV', '#7ACCC8'); + } + + foreach($vars_arr as $vars_name => $vars_data) { + if($vars_name != 'script_globals') global $$vars_name; + if($$vars_name) { + print '
'.$vars_data[0].'
'; + print_a($$vars_name, FALSE, $show_object_vars, FALSE ); + print '
'; + } + } + print '
'; +} + + +###################### +# function prints sql strings +# +function pre($sql_string, $simple_mode = FALSE) { + + if(!$simple_mode) { + # erste leere Zeile im SQL löschen + $sql_string = preg_replace('/\^s+/m','', $sql_string); + # letze leere Zeile im SQL löschen + $sql_string = preg_replace('/\s+$/m','', $sql_string); + + # kleinste Anzahl von führenden TABS zählen + preg_match_all('/^\t+/m', $sql_string, $matches); + $minTabCount = strlen(min($matches[0])); + + # und entfernen + $sql_string = preg_replace('/^\t{'.$minTabCount.'}/m', '', $sql_string); + } + + print '
'.$sql_string.'
'; +} +?> diff --git a/trunk/gosa-core/include/functions_helpviewer.inc b/trunk/gosa-core/include/functions_helpviewer.inc new file mode 100644 index 000000000..13a528d7d --- /dev/null +++ b/trunk/gosa-core/include/functions_helpviewer.inc @@ -0,0 +1,506 @@ +parser = xml_parser_create(); + $this->filename = $file; + xml_set_object($this->parser, $this); + xml_set_element_handler($this->parser, "tag_open", "tag_close"); + return($this->entries); + } + function parse() + { + $this->entries = array(); + $fh= fopen($this->filename, "r"); + $xmldata= fread($fh, 100000); + fclose($fh); + if(!xml_parse($this->parser, chop($xmldata))){ + print(sprintf(_("XML error in guide.xml: %s at line %d"), + xml_error_string(xml_get_error_code($this->parser)), + xml_get_current_line_number($this->parser))); + exit; + } + return($this->entries); + } + function tag_open($parser,$tag,$attrs) + { + @$this->entries[$attrs['NAME']]=$attrs; + } + function tag_close(){; } + +} + + +/* This function genereates the Index */ +function genIndex() +{ + global $helpobject; + $str = ""; + $helpobject = session::global_get('helpobject'); + $ui= get_userinfo(); + $test = new pluglist(session::global_get('config'), $ui); + $current_hl = ""; + foreach($helpobject['helpconf'] as $id => $attrs){ + $path = $test -> get_path($id); + $exists = true; + $helpdir = "../doc/core/".$helpobject['lang']."/html/".preg_replace("/^.*\//i","",$path)."/"; + if(!is_dir($helpdir)){ + $exists = false; + } + $print_hl = false; + if($current_hl != $attrs['HEADLINE']){ + $current_hl = $attrs['HEADLINE']; + $str .= "

"._($current_hl)."

"; + } + $name = $attrs['NAME']; + $file = "index.html"; + //$path = $plug; + if($exists){ + $str .= "

"._($name)."

"; + }else{ + $str .= "

"._($name)." ("._("No help available for this plugin.").")

"; + } + } + return (utf8_decode($str)); +} + + +/* Some replacements */ +$backwardlink = " + \""._("previous")."\" + "; + +$forwardlink = " + \""._("next")."\" + "; + +$pre_mark = "" ; // Sign words with this +$suf_mark = ""; // and this + + +/* Define which tags musst be delete, header, navigation, banner */ +$replacements=array(); +$replacements['from']=array("@@si", + "/border=\".*\"/i", + "''", +// "/alt=\".*\"/i", + "/
/", + "@]*?>.*?ADDRESS>@si", + "@<\/BODY[^>]*?>.*?HTML>@si", + "''", + "/src.*icons/i", + "/src=\"/i", + "/

/", + /* picture replacements */ + // "", + ); + +$replacements['to']=array("", + " border=\"0\" ", + "", + // "", + "", + "", + "", + "", + "src=\"", + "src=\"images/", + "

", + /* picture replacements */ +// "", + ); + + +/* Reads all files in specified directory with contents an some inforations about the file */ +/* Read all files with contents*/ +/* |Folder="/var/ww...", + | |Fileprefix="node" + | | |Filesuffix=".html" + | | | |WithoutContent=false(This means : read content) + | | | | |Singlepage=false(Means read all, if w want to read single, specify its filename)"*/ +function readfiles($basedir,$prefix,$suffix,$onlyIndex,$singlepage=false) +{ + global $replacements; + + $str = array(); // Temporary variable + $cnt = 0; // Array index creation + $file = ""; // Contains Filename + + $dir = opendir($basedir); + + $str['global']['start'] = $cnt; // collect basic informations - Startpage + $str['global']['basedir'] = $basedir; // collect basic informations - Basedirectory + + /* Startime for Benchmark */ + $start = (time()+microtime()); + + /* if singlepage == false -> Get all pages, */ + if(!$singlepage) { + + /* While theres is an unreaded file in our resource */ + while (($file = readdir($dir)) !== false) { + + if((is_dir($basedir."/".$file))&&($file != "..")&&($file[0]!=".")){ + $str[$file]=(readfiles($basedir."/".$file."/",$prefix,$suffix,$onlyIndex,false)); + } + + /* Filter all files which arn't intressting */ + if((strstr($file,$suffix))&&($file!=".")&&($file!="..")&&(strstr($file,$prefix))){ + + /* Collect informations */ + $str[$file]=array(); + $str[$file]['name'] = $file; + $str[$file]['size'] = filesize($basedir.$file); + + /* Readfile conent too ? */ + if(!$onlyIndex){ + $str[$file]['content'] = remove_unwanted_tags(linkwrapper(getcontents($basedir.$file),""),$replacements); + $str[$file]['headline'] = getheader_from_content($str[$file]['content']); + } + + /* Include file status, for debugging, not used in script yet */ + $str[$file]['stat'] = stat($basedir.$file); + $cnt++; + } + } + + /* Only get on file*/ + }else{ + /* Pages read = 1 */ + $cnt = 1; + + /* Prepare result*/ + $file = $singlepage; + $str[$file] = array(); + $str[$file]['name'] = $file; + $str[$file]['size'] = filesize($basedir.$file); + + /* If onlyIndex == true skip reading content */ + if(!$onlyIndex){ + $str[$file]['content'] = remove_unwanted_tags(linkwrapper(getcontents($basedir.$file),""),$replacements); + $str[$file]['headline'] = getheader_from_content($str[$file]['content']); + } + + /* Include file status, for debugging, not used in script yet */ + $str[$file]['stat'] = stat($basedir.$file); + } + + /* Sort to right order */ + asort($str); + + /* Endtime for Benchmark*/ + $end = (time()+microtime()); + $str['global']['cmptime'] = $end-$start; + + /* Number of pages readed */ + $str['global']['numpages']= $cnt; + closedir($dir); + return($str); +} + + +/* Read filecontent */ +function getcontents($file) +{ + $str = "" ; // Temporary variable for file contents + $tmp = "" ; // Temporary varibale for partitial file contents + + /* open file and read*/ + $fp = fopen($file,"r"); + if($fp) { + while($tmp = fread($fp,512)) + { + $str.= $tmp; + } + }else{ + return(false); + } + return($str); +} + + +/*Remove tags */ +function remove_unwanted_tags($str,$replacements) +{ + $str=preg_replace($replacements['from'],$replacements['to'],$str); + return($str); +} + + +/*Converts the all links to specified path, is needed to get simple navigation */ +function linkwrapper($str,$link) +{ + $str = preg_replace("/HREF=\"http/i","target=\"_blank\" href=\"http",$str); + $str = str_replace("HREF=\"","href=\"".$link."?pg=",$str); + return($str); +} + + +/* Search content */ +function search($arr,$word) +{ + global $minwordlength,$allowed_chars_in_searchword; + /* Prepare Vars */ + $result =array(); // Search result, filename, + hits + hits per word + matches + $words =array(); // Temporary searchword handling + $useablewords =array(); // Temporary searchword handling + $tryword = ""; // Temporary searchword handling + $result['global']['maxhit'] = 0; + session::un_set('lastresults'); + session::un_set('parsed_search_keyword'); + session::set('parsed_search_keyword',""); + + error_reporting(E_ALL | E_STRICT); + + /* prepare searchwords */ + $word = trim($word); + + /* Filter all unusable chars */ + $word = preg_replace($allowed_chars_in_searchword,"",$word); + $words = split(" ",str_replace("+"," ",$word)); + + /* Check all wordlengths */ + foreach($words as $tryword){ + $tryword = trim($tryword); + + /* Filter words smaler than 3 chars */ + if(strlen($tryword)>=$minwordlength) { + session::set('parsed_search_keyword', session::get('parsed_search_keyword').$tryword." "); + $useablewords[]=$tryword; + } + } + + /* Use words to search the content */ + foreach($arr as $keys=>$vals) + { + foreach($vals as $key=>$val){ + /* overallhits counts hits per page */ + $overallhits=0; + + /* Search all words */ + foreach($useablewords as $word) + { + /* Skip key global, it contains no file data - it is a summary info*/ + if($key!="global") + { + + /* Get all hits for the word in $matches*/ + preg_match_all("/".$word."/i",$arr[$keys][$key]['content'], $matches,PREG_OFFSET_CAPTURE); + + /* Filter in Tag results*/ + if(count($matches[0])){ + foreach($matches[0] as $num=>$hit){ + if(isset($arr[$keys][$key]['content']) && (is_in_tag($arr[$keys][$key]['content'],$hit[1]))){ + unset($matches[0][$num]); + } + } + } + + /* Count matches */ + $overallhits=$overallhits + count($matches[0]); + + /* Save collected data */ + $result[$keys][$key]['hits'][$word] = count($matches[0]); + $result[$keys][$key]['hits']['overall']= $overallhits; + + /* Save max hits for page */ + if($overallhits > $result['global']['maxhit']){ + $result['global']['maxhit']=$overallhits; + } + + /* Add results for word to return value*/ + $result[$keys][$key]['match'][$word]=array(); + $result[$keys][$key]['match'][$word]=$matches[0]; + } + } + } + } + + /* Save result in Session, so we can mark words later, or go back to search, without searching again*/ + session::set('lastresults',$result); + return($result); +} + + +/* Detect 10 Best result entries, sort and call createResultEntry to create HTML output for complete list */ +function searchlist($arr,$res,$maxresults) +{ + $global = $res['global']; + $topten = array(); // To detect 10 best solutions + $ret = ""; // return value + unset($res['global']); + + /* Detect 10 best Sites */ + foreach($res as $key=>$resa) + foreach($resa as $keya=>$val){ + /* Skip results with no hits */ + if($val['hits']['overall']>0){ + $topten[$key."/".$keya] = $val['hits']['overall']; + } + } + + /* Sort by hit position in content, to easier mark words */ + asort($topten); + $topten = array_reverse($topten); + $topten = (array_slice($topten,0,$maxresults)); + + + /* We have a result, an array with all content, an array with hits and position and we have the 10 best hits */ + /* Foreach */ + foreach($topten as $key => $hits) { + + $ks = split("\/",$key); + $k1 = $ks[0]; + $k2 = $ks[1]; + + $ret.= createResultEntry($arr[$k1][$k2],$res[$k1][$k2],$key,$global['maxhit']); + } + + /* appending footer message for resultlist */ + $ret.= "
+ ".sprintf(_("%s results for your search with the keyword %s"), + "".count($topten)."", + "".session::get('parsed_search_keyword').""); + $ret.="
+
"; + return($ret); +} + + +/* This function marks a string with the given search result for this string*/ +function markup_page($arr,$res) +{ + global $pre_mark,$suf_mark; + + $ret = ""; // return value + $repl = array(); + $posadd = 0; + + foreach($res['match'] as $word => $matches) { + foreach($matches as $matchnr=>$match) { + $repl[$match[1]]=$match[0]; + } + } + + ksort($repl); + + foreach($repl as $position=>$word) { + $pos1 = strlen($arr); + $arr= markword($arr,($position+$posadd),$word,$pre_mark,$suf_mark); + $pos2 = strlen($arr); + $posadd =$posadd + ($pos2 - $pos1); + } + return($arr); +} + + +/* This function marks a single word with the specified prefix and suffix */ +function markword($string,$position,$word,$prefix,$suffix) +{ + $wordlength = strlen($word); + $wholelength = strlen($string); + + $first = substr($string,0,$position); + $last = substr($string,($position+$wordlength),$wholelength); + + return($first.$prefix.$word.$suffix.$last); +} + +/* Creates HTML output for a single search result entry */ +function createResultEntry($entry,$res,$name,$max) +{ + $percentage = (int)(($res['hits']['overall'] / $max) * 100) ; + $color = dechex($percentage+150); + $color2 = dechex(150 - $percentage); + + $entry['content'] = preg_replace("\"".$entry['headline']."\"","",$entry['content'],1); + + if(strlen($color)==1) $color = "0".$color; + + + + /* the object tag is needed for W3c */ + $str = " + +

+ + + + + + + +
+ ".utf8_encode($entry['headline'])." -".utf8_encode(substr(strip_tags($entry['content']),0,120))."... + ".progressbar($percentage,50,8)."
+ + ".(sprintf(_("%s%% hit rate in file %s"),$percentage,$name))." + +
+ + "; + $str.= "
"; + + return($str); +} + + +/*Simple function to detect if we prepare to change a tag or visible text */ +function is_in_tag($string,$pos) +{ + $pos1 = $pos2 = 0; + if(preg_match("//",$string)){ + $pos2 = strpos($string,">",$pos); + } + if ($pos1 > $pos2) { + return(true); + }else{ + return(false); + } +} + +/*Returns frist line of readable text, it should be the headline */ +function getheader_from_content($str) +{ + $str = strip_tags($str); + $pos = 0; + $arr = split("\n",$str); + foreach($arr as $possibleheadline){ + if(strlen($possibleheadline)>=3){ + return $possibleheadline; + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/password-methods/class_password-methods-clear.inc b/trunk/gosa-core/include/password-methods/class_password-methods-clear.inc new file mode 100644 index 000000000..91d87d8df --- /dev/null +++ b/trunk/gosa-core/include/password-methods/class_password-methods-clear.inc @@ -0,0 +1,51 @@ + diff --git a/trunk/gosa-core/include/password-methods/class_password-methods-crypt.inc b/trunk/gosa-core/include/password-methods/class_password-methods-crypt.inc new file mode 100644 index 000000000..62b1a0848 --- /dev/null +++ b/trunk/gosa-core/include/password-methods/class_password-methods-crypt.inc @@ -0,0 +1,134 @@ +generate_hash('N0T$3T4N0W').'N0T$3T4N0W'); + } + + + function generate_hash($pwd) + { + if ($this->hash == "crypt/standard-des"){ + $salt = ""; + for ($i = 0; $i < 2; $i++) { + $salt .= get_random_char(); + } + } + + if ($this->hash == "crypt/enhanced-des"){ + $salt = "_"; + for ($i = 0; $i < 8; $i++) { + $salt .= get_random_char(); + } + } + + if ($this->hash == "crypt/md5"){ + $salt = "\$1\$"; + for ($i = 0; $i < 8; $i++) { + $salt .= get_random_char(); + } + $salt .= "\$"; + } + + if ($this->hash == "crypt/blowfish"){ + $salt = "\$2a\$07\$"; + for ($i = 0; $i < CRYPT_SALT_LENGTH; $i++) { + $salt .= get_random_char(); + } + $salt .= "\$"; + } + + return "{CRYPT}".crypt($pwd, $salt); + } + + + function get_hash_name() + { + $hashes= array(); + if (CRYPT_STD_DES == 1) { + $hashes[]= "crypt/standard-des"; + } + + if (CRYPT_EXT_DES == 1) { + $hashes[]= "crypt/enhanced-des"; + } + + if (CRYPT_MD5 == 1) { + $hashes[]= "crypt/md5"; + } + + if (CRYPT_BLOWFISH == 1) { + $hashes[]= "crypt/blowfish"; + } + + return $hashes; + } + + + function _extract_method($password_hash) + { + if (!preg_match('/^{crypt}/i', $password_hash)){ + return ""; + } + + $password_hash= preg_replace('/^{[^}]+}!?/', '', $password_hash); + + if (preg_match("/^[a-zA-Z0-9.\/][a-zA-Z0-9.\/]/", $password_hash)){ + return "crypt/standard-des"; + } + + if (preg_match("/^_[a-zA-Z0-9.\/]/", $password_hash)){ + return "crypt/enhanced-des"; + } + + if (preg_match('/^\$1\$/', $password_hash)){ + return "crypt/md5"; + } + + if (preg_match('/^(\$2\$|\$2a\$)/', $password_hash)){ + return "crypt/blowfish"; + } + + return ""; + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/password-methods/class_password-methods-md5.inc b/trunk/gosa-core/include/password-methods/class_password-methods-md5.inc new file mode 100644 index 000000000..41903a14a --- /dev/null +++ b/trunk/gosa-core/include/password-methods/class_password-methods-md5.inc @@ -0,0 +1,54 @@ + diff --git a/trunk/gosa-core/include/password-methods/class_password-methods-sha.inc b/trunk/gosa-core/include/password-methods/class_password-methods-sha.inc new file mode 100644 index 000000000..8d73b2557 --- /dev/null +++ b/trunk/gosa-core/include/password-methods/class_password-methods-sha.inc @@ -0,0 +1,64 @@ + diff --git a/trunk/gosa-core/include/password-methods/class_password-methods-smd5.inc b/trunk/gosa-core/include/password-methods/class_password-methods-smd5.inc new file mode 100644 index 000000000..135675d5f --- /dev/null +++ b/trunk/gosa-core/include/password-methods/class_password-methods-smd5.inc @@ -0,0 +1,55 @@ + diff --git a/trunk/gosa-core/include/password-methods/class_password-methods-ssha.inc b/trunk/gosa-core/include/password-methods/class_password-methods-ssha.inc new file mode 100644 index 000000000..8c0b987b5 --- /dev/null +++ b/trunk/gosa-core/include/password-methods/class_password-methods-ssha.inc @@ -0,0 +1,66 @@ + diff --git a/trunk/gosa-core/include/password-methods/class_password-methods.inc b/trunk/gosa-core/include/password-methods/class_password-methods.inc new file mode 100644 index 000000000..cde47c38e --- /dev/null +++ b/trunk/gosa-core/include/password-methods/class_password-methods.inc @@ -0,0 +1,295 @@ +get_hash_name() == ""){ + return("{crypt}N0T$3T4N0W"); + }else{ + return('{'.$this->get_hash().'}').'N0T$3T4N0W'; + } + } + + function get_hash_name() + { + } + + + function is_locked($config,$dn = "") + { + if(!$this->lockable) return FALSE; + + /* Get current password hash */ + $pwd =""; + if(!empty($dn)){ + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->cat($dn); + $attrs = $ldap->fetch(); + if(isset($attrs['userPassword'][0])){ + $pwd = $attrs['userPassword'][0]; + } + }elseif(isset($this->attrs['userPassword'][0])){ + $pwd = $this->attrs['userPassword'][0]; + } + return(preg_match("/^[^\}]*+\}!/",$pwd)); + } + + + function lock_account($config,$dn = "") + { + if(!$this->lockable) return FALSE; + + /* Get current password hash */ + $pwd =""; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + if(!empty($dn)){ + $ldap->cat($dn); + $attrs = $ldap->fetch(); + if(isset($attrs['userPassword'][0])){ + $pwd = $attrs['userPassword'][0]; + } + }elseif(isset($this->attrs['userPassword'][0])){ + $pwd = $this->attrs['userPassword'][0]; + $dn = $this->attrs['dn']; + } + + /* We can only lock/unlock non-empty passwords */ + if(!empty($pwd)){ + + /* Check if this entry is already locked. */ + if(preg_match("/^[^\}]*+\}!/",$pwd)){ + return(TRUE); + } + + /* Lock entry */ + $pwd = preg_replace("/(^[^\}]+\})(.*$)/","\\1!\\2",$pwd); + $ldap->cd($dn); + $ldap->modify(array("userPassword" => $pwd)); + return($ldap->success()); + } + return(FALSE); + } + + + function unlock_account($config,$dn = "") + { + if(!$this->lockable) return FALSE; + + /* Get current password hash */ + $pwd =""; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + if(!empty($dn)){ + $ldap->cat($dn); + $attrs = $ldap->fetch(); + if(isset($attrs['userPassword'][0])){ + $pwd = $attrs['userPassword'][0]; + } + }elseif(isset($this->attrs['userPassword'][0])){ + $pwd = $this->attrs['userPassword'][0]; + $dn = $this->attrs['dn']; + } + + /* We can only lock/unlock non-empty passwords */ + if(!empty($pwd)){ + + /* Check if this entry is already locked. */ + if(!preg_match("/^[^\}]*+\}!/",$pwd)){ + return (TRUE); + } + + /* Lock entry */ + $pwd = preg_replace("/(^[^\}]+\})!(.*$)/","\\1\\2",$pwd); + $ldap->cd($dn); + $ldap->modify(array("userPassword" => $pwd)); + return($ldap->success()); + } + return(FALSE); + } + + + // this function returns all loaded classes for password encryption + static function get_available_methods() + { + global $class_mapping, $config; + $ret =false; + $i =0; + + /* Only */ + if(!session::is_set("passwordMethod::get_available_methods")){ + foreach($class_mapping as $class => $path) { + if(preg_match('/passwordMethod/i', $class) && !preg_match("/^passwordMethod$/i", $class)){ + $name = preg_replace ("/passwordMethod/i", "", $class); + $test = new $class($config, ""); + if($test->is_available()) { + $plugs= $test->get_hash_name(); + if (!is_array($plugs)){ + $plugs= array($plugs); + } + + foreach ($plugs as $plugname){ + + $cfg = $test->is_configurable(); + + $ret['name'][$i]= $plugname; + $ret['class'][$i]=$class; + $ret['is_configurable'][$i]= $cfg; + $ret['object'][$i]= $test; + $ret['desc'][$i] = $test->get_description(); + $ret[$i]['name'] = $plugname; + $ret[$i]['class'] = $class; + $ret[$i]['object']= $test; + $ret[$i]['is_configurable']= $cfg; + $ret[$i]['desc'] = $test->get_description(); + $ret[$plugname]=$class; + $i++; + } + } + } + } + session::set("passwordMethod::get_available_methods",$ret); + } + return(session::get("passwordMethod::get_available_methods")); + } + + + function get_description() + { + return(""); + } + + + // Method to let password backends remove additional information besides + // the userPassword attribute + function remove_from_parent() + { + } + + + // Method to let passwords backends manage additional information + // besides the userAttribute entry + function set_password($password) + { + return(TRUE); + } + + + // Return true if this password method provides a configuration dialog + function is_configurable() + { + return FALSE; + } + + + // Provide a subdialog to configure a password method + function configure() + { + return ""; + } + + + // Save information to LDAP + function save($dn) + { + } + + + // Try to find out if it's our hash... + static function get_method($password_hash,$dn = "") + { + global $config; + + $methods= passwordMethod::get_available_methods(); + + foreach ($methods['class'] as $class){ + + $test = new $class($config,$dn); +# All listed methods are available. +# if(!$test->is_available())continue; + $method= $test->_extract_method($password_hash); + if ($method != ""){ + $test->set_hash($method); + return $test; + } + } + + msg_dialog::display(_("Error"), _("Cannot find a suitable password method for the current hash!"), ERROR_DIALOG); + + return NULL; + } + + + function _extract_method($password_hash) + { + $hash= $this->get_hash_name(); + if (preg_match("/^\{$hash\}/i", $password_hash)){ + return $hash; + } + + return ""; + } + + + static function make_hash($password, $hash) + { + global $config; + + $methods= passwordMethod::get_available_methods(); + $tmp= new $methods[$hash]($config); + $tmp->set_hash($hash); + return $tmp->generate_hash($password); + } + + + function set_hash($hash) + { + $this->hash= $hash; + } + + + function get_hash() + { + return $this->hash; + } + + function adapt_from_template($dn) + { + return($this); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/php_setup.inc b/trunk/gosa-core/include/php_setup.inc new file mode 100644 index 000000000..f7b8d075f --- /dev/null +++ b/trunk/gosa-core/include/php_setup.inc @@ -0,0 +1,288 @@ +data) && $config->get_cfg_value("displayerrors") != "true"){ + + /* Write to syslog */ + if(class_exists("log") && !preg_match("/No such object/",$errstr)){ + new log("view","error","",array(),"PHP error: $errstr ($errfile, line $errline)"); + } + + return; + } + + /* Send all errors to logging class, except "Ldap : No such object" messages*/ + if(class_exists("log") && !preg_match("/No such object/",$errstr)){ + new log("debug","all",$errfile,array(),"Type:".$errno.", Message:".$errstr.", File:".$errfile.", Line: ".$errline); + } + + /* Create header as needed */ + if ($error_collector == ""){ + + /* Mailto body header */ + if(function_exists("prepare4mailbody")){ + $version= "unknown"; + if(function_exists("get_gosa_version")){ + $version= get_gosa_version(); + } + $error_collector_mailto .=prepare4mailbody( + "Oups. Seems like you've catched some kind of bug inside GOsa/PHP. You may want to help ". + "us to improve the software stability. If so, please provide some more information below.". + "\n\n". + "*** GOsa bug report ***". + "\nGOsa Version: $version". + "\n\n". + "Please describe what you did to produce this error as detailed as possible. Can you ". + "reproduce this bug using the demo on http://www.gosa-project.org ?". + "\n\n". + "*** PHP error information ***\n\n"); + } + + if (session::is_set('js') && session::get('js')==FALSE){ + $error_collector= "
"; + } else { + $error_collector= " + + + + + + +
+ \"\"  + ". + _("Generating this page caused the PHP interpreter to raise some errors!")." + + + +  "._("Send bugreport")." + + + +
+ "; + flush(); + exit; + } +} + + +function prepare4mailbody($string) +{ + $string = html_entity_decode($string); + + $from = array( + "/%/", + "/ /", + "/\n/", + "/\r/", + "/!/", + "/#/", + "/\*/", + "/\//", + "//", + "/\?/", + "/\"/"); + + $to = array( + "%25", + "%20", + "%0A", + "%0D", + "%21", + "%23", + "%2A", + "%2F", + "%3C", + "%3E", + "%3F", + "%22"); + + $string = preg_replace($from,$to,$string); + + return($string); +} + + +function dummy_error_handler() +{ +} + +/* Bail out for incompatible/old PHP versions */ +if (!version_compare(phpversion(),"5.2.0",">=")){ + echo "PHP version needs to be 5.2.0 or above to run GOsa. Aborted."; + exit(); +} + +/* Set timezone */ +date_default_timezone_set("GMT"); + +/* Get base dir for reference */ +$BASE_DIR= dirname(dirname(__FILE__)); +$ROOT_DIR= $BASE_DIR."/html"; +error_reporting (E_ALL | E_STRICT); + +/* Register error handler */ +$error_collector= ""; +$error_collector_mailto= ""; + +set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_STRICT) ; + +$variables_order= "ES"; +ini_set("register_globals",0); +ini_set("track_vars",1); +ini_set("display_errors",1); +ini_set("report_memleaks",1); +ini_set("include_path",".:$BASE_DIR/include:$BASE_DIR/include/utils/excel"); + +/* Do smarty setup */ +require("smarty/Smarty.class.php"); +$smarty = new Smarty; +$smarty->template_dir = $BASE_DIR.'/ihtml/'; +$smarty->caching= false; +$smarty->php_handling= SMARTY_PHP_REMOVE; + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/include/smarty/Config_File.class.php b/trunk/gosa-core/include/smarty/Config_File.class.php new file mode 100644 index 000000000..31b890750 --- /dev/null +++ b/trunk/gosa-core/include/smarty/Config_File.class.php @@ -0,0 +1,393 @@ + + * @access public + * @package Smarty + */ + +/* $Id: Config_File.class.php 2786 2008-09-18 21:04:38Z Uwe.Tews $ */ + +/** + * Config file reading class + * @package Smarty + */ +class Config_File { + /**#@+ + * Options + * @var boolean + */ + /** + * Controls whether variables with the same name overwrite each other. + */ + var $overwrite = true; + + /** + * Controls whether config values of on/true/yes and off/false/no get + * converted to boolean values automatically. + */ + var $booleanize = true; + + /** + * Controls whether hidden config sections/vars are read from the file. + */ + var $read_hidden = true; + + /** + * Controls whether or not to fix mac or dos formatted newlines. + * If set to true, \r or \r\n will be changed to \n. + */ + var $fix_newlines = true; + /**#@-*/ + + /** @access private */ + var $_config_path = ""; + var $_config_data = array(); + /**#@-*/ + + /** + * Constructs a new config file class. + * + * @param string $config_path (optional) path to the config files + */ + function Config_File($config_path = NULL) + { + if (isset($config_path)) + $this->set_path($config_path); + } + + + /** + * Set the path where configuration files can be found. + * + * @param string $config_path path to the config files + */ + function set_path($config_path) + { + if (!empty($config_path)) { + if (!is_string($config_path) || !file_exists($config_path) || !is_dir($config_path)) { + $this->_trigger_error_msg("Bad config file path '$config_path'"); + return; + } + if(substr($config_path, -1) != DIRECTORY_SEPARATOR) { + $config_path .= DIRECTORY_SEPARATOR; + } + + $this->_config_path = $config_path; + } + } + + + /** + * Retrieves config info based on the file, section, and variable name. + * + * @param string $file_name config file to get info for + * @param string $section_name (optional) section to get info for + * @param string $var_name (optional) variable to get info for + * @return string|array a value or array of values + */ + function get($file_name, $section_name = NULL, $var_name = NULL) + { + if (empty($file_name)) { + $this->_trigger_error_msg('Empty config file name'); + return; + } else { + $file_name = $this->_config_path . $file_name; + if (!isset($this->_config_data[$file_name])) + $this->load_file($file_name, false); + } + + if (!empty($var_name)) { + if (empty($section_name)) { + return $this->_config_data[$file_name]["vars"][$var_name]; + } else { + if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name])) + return $this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name]; + else + return array(); + } + } else { + if (empty($section_name)) { + return (array)$this->_config_data[$file_name]["vars"]; + } else { + if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"])) + return (array)$this->_config_data[$file_name]["sections"][$section_name]["vars"]; + else + return array(); + } + } + } + + + /** + * Retrieves config info based on the key. + * + * @param $file_name string config key (filename/section/var) + * @return string|array same as get() + * @uses get() retrieves information from config file and returns it + */ + function &get_key($config_key) + { + list($file_name, $section_name, $var_name) = explode('/', $config_key, 3); + $result = &$this->get($file_name, $section_name, $var_name); + return $result; + } + + /** + * Get all loaded config file names. + * + * @return array an array of loaded config file names + */ + function get_file_names() + { + return array_keys($this->_config_data); + } + + + /** + * Get all section names from a loaded file. + * + * @param string $file_name config file to get section names from + * @return array an array of section names from the specified file + */ + function get_section_names($file_name) + { + $file_name = $this->_config_path . $file_name; + if (!isset($this->_config_data[$file_name])) { + $this->_trigger_error_msg("Unknown config file '$file_name'"); + return; + } + + return array_keys($this->_config_data[$file_name]["sections"]); + } + + + /** + * Get all global or section variable names. + * + * @param string $file_name config file to get info for + * @param string $section_name (optional) section to get info for + * @return array an array of variables names from the specified file/section + */ + function get_var_names($file_name, $section = NULL) + { + if (empty($file_name)) { + $this->_trigger_error_msg('Empty config file name'); + return; + } else if (!isset($this->_config_data[$file_name])) { + $this->_trigger_error_msg("Unknown config file '$file_name'"); + return; + } + + if (empty($section)) + return array_keys($this->_config_data[$file_name]["vars"]); + else + return array_keys($this->_config_data[$file_name]["sections"][$section]["vars"]); + } + + + /** + * Clear loaded config data for a certain file or all files. + * + * @param string $file_name file to clear config data for + */ + function clear($file_name = NULL) + { + if ($file_name === NULL) + $this->_config_data = array(); + else if (isset($this->_config_data[$file_name])) + $this->_config_data[$file_name] = array(); + } + + + /** + * Load a configuration file manually. + * + * @param string $file_name file name to load + * @param boolean $prepend_path whether current config path should be + * prepended to the filename + */ + function load_file($file_name, $prepend_path = true) + { + if ($prepend_path && $this->_config_path != "") + $config_file = $this->_config_path . $file_name; + else + $config_file = $file_name; + + ini_set('track_errors', true); + $fp = @fopen($config_file, "r"); + if (!is_resource($fp)) { + $this->_trigger_error_msg("Could not open config file '$config_file'"); + return false; + } + + $contents = ($size = filesize($config_file)) ? fread($fp, $size) : ''; + fclose($fp); + + $this->_config_data[$config_file] = $this->parse_contents($contents); + return true; + } + + /** + * Store the contents of a file manually. + * + * @param string $config_file file name of the related contents + * @param string $contents the file-contents to parse + */ + function set_file_contents($config_file, $contents) + { + $this->_config_data[$config_file] = $this->parse_contents($contents); + return true; + } + + /** + * parse the source of a configuration file manually. + * + * @param string $contents the file-contents to parse + */ + function parse_contents($contents) + { + if($this->fix_newlines) { + // fix mac/dos formatted newlines + $contents = preg_replace('!\r\n?!', "\n", $contents); + } + + $config_data = array(); + $config_data['sections'] = array(); + $config_data['vars'] = array(); + + /* reference to fill with data */ + $vars =& $config_data['vars']; + + /* parse file line by line */ + preg_match_all('!^.*\r?\n?!m', $contents, $match); + $lines = $match[0]; + for ($i=0, $count=count($lines); $i<$count; $i++) { + $line = $lines[$i]; + if (empty($line)) continue; + + if ( substr($line, 0, 1) == '[' && preg_match('!^\[(.*?)\]!', $line, $match) ) { + /* section found */ + if (substr($match[1], 0, 1) == '.') { + /* hidden section */ + if ($this->read_hidden) { + $section_name = substr($match[1], 1); + } else { + /* break reference to $vars to ignore hidden section */ + unset($vars); + $vars = array(); + continue; + } + } else { + $section_name = $match[1]; + } + if (!isset($config_data['sections'][$section_name])) + $config_data['sections'][$section_name] = array('vars' => array()); + $vars =& $config_data['sections'][$section_name]['vars']; + continue; + } + + if (preg_match('/^\s*(\.?\w+)\s*=\s*(.*)/s', $line, $match)) { + /* variable found */ + $var_name = rtrim($match[1]); + if (strpos($match[2], '"""') === 0) { + /* handle multiline-value */ + $lines[$i] = substr($match[2], 3); + $var_value = ''; + while ($i<$count) { + if (($pos = strpos($lines[$i], '"""')) === false) { + $var_value .= $lines[$i++]; + } else { + /* end of multiline-value */ + $var_value .= substr($lines[$i], 0, $pos); + break; + } + } + $booleanize = false; + + } else { + /* handle simple value */ + $var_value = preg_replace('/^([\'"])(.*)\1$/', '\2', rtrim($match[2])); + $booleanize = $this->booleanize; + + } + $this->_set_config_var($vars, $var_name, $var_value, $booleanize); + } + /* else unparsable line / means it is a comment / means ignore it */ + } + return $config_data; + } + + /**#@+ @access private */ + /** + * @param array &$container + * @param string $var_name + * @param mixed $var_value + * @param boolean $booleanize determines whether $var_value is converted to + * to true/false + */ + function _set_config_var(&$container, $var_name, $var_value, $booleanize) + { + if (substr($var_name, 0, 1) == '.') { + if (!$this->read_hidden) + return; + else + $var_name = substr($var_name, 1); + } + + if (!preg_match("/^[a-zA-Z_]\w*$/", $var_name)) { + $this->_trigger_error_msg("Bad variable name '$var_name'"); + return; + } + + if ($booleanize) { + if (preg_match("/^(on|true|yes)$/i", $var_value)) + $var_value = true; + else if (preg_match("/^(off|false|no)$/i", $var_value)) + $var_value = false; + } + + if (!isset($container[$var_name]) || $this->overwrite) + $container[$var_name] = $var_value; + else { + settype($container[$var_name], 'array'); + $container[$var_name][] = $var_value; + } + } + + /** + * @uses trigger_error() creates a PHP warning/error + * @param string $error_msg + * @param integer $error_type one of + */ + function _trigger_error_msg($error_msg, $error_type = E_USER_WARNING) + { + trigger_error("Config_File error: $error_msg", $error_type); + } + /**#@-*/ +} + +?> diff --git a/trunk/gosa-core/include/smarty/Smarty.class.php b/trunk/gosa-core/include/smarty/Smarty.class.php new file mode 100644 index 000000000..95ec67bab --- /dev/null +++ b/trunk/gosa-core/include/smarty/Smarty.class.php @@ -0,0 +1,1960 @@ + + * @author Andrei Zmievski + * @package Smarty + * @version 2.6.22 + */ + +/* $Id: Smarty.class.php 2785 2008-09-18 21:04:12Z Uwe.Tews $ */ + +/** + * DIR_SEP isn't used anymore, but third party apps might + */ +if(!defined('DIR_SEP')) { + define('DIR_SEP', DIRECTORY_SEPARATOR); +} + +/** + * set SMARTY_DIR to absolute path to Smarty library files. + * if not defined, include_path will be used. Sets SMARTY_DIR only if user + * application has not already defined it. + */ + +if (!defined('SMARTY_DIR')) { + define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR); +} + +if (!defined('SMARTY_CORE_DIR')) { + define('SMARTY_CORE_DIR', SMARTY_DIR . 'internals' . DIRECTORY_SEPARATOR); +} + +define('SMARTY_PHP_PASSTHRU', 0); +define('SMARTY_PHP_QUOTE', 1); +define('SMARTY_PHP_REMOVE', 2); +define('SMARTY_PHP_ALLOW', 3); + +/** + * @package Smarty + */ +class Smarty +{ + /**#@+ + * Smarty Configuration Section + */ + + /** + * The name of the directory where templates are located. + * + * @var string + */ + var $template_dir = 'templates'; + + /** + * The directory where compiled templates are located. + * + * @var string + */ + var $compile_dir = 'templates_c'; + + /** + * The directory where config files are located. + * + * @var string + */ + var $config_dir = 'configs'; + + /** + * An array of directories searched for plugins. + * + * @var array + */ + var $plugins_dir = array('plugins'); + + /** + * If debugging is enabled, a debug console window will display + * when the page loads (make sure your browser allows unrequested + * popup windows) + * + * @var boolean + */ + var $debugging = false; + + /** + * When set, smarty does uses this value as error_reporting-level. + * + * @var boolean + */ + var $error_reporting = null; + + /** + * This is the path to the debug console template. If not set, + * the default one will be used. + * + * @var string + */ + var $debug_tpl = ''; + + /** + * This determines if debugging is enable-able from the browser. + *
    + *
  • NONE => no debugging control allowed
  • + *
  • URL => enable debugging when SMARTY_DEBUG is found in the URL.
  • + *
+ * @link http://www.foo.dom/index.php?SMARTY_DEBUG + * @var string + */ + var $debugging_ctrl = 'NONE'; + + /** + * This tells Smarty whether to check for recompiling or not. Recompiling + * does not need to happen unless a template or config file is changed. + * Typically you enable this during development, and disable for + * production. + * + * @var boolean + */ + var $compile_check = true; + + /** + * This forces templates to compile every time. Useful for development + * or debugging. + * + * @var boolean + */ + var $force_compile = false; + + /** + * This enables template caching. + *
    + *
  • 0 = no caching
  • + *
  • 1 = use class cache_lifetime value
  • + *
  • 2 = use cache_lifetime in cache file
  • + *
+ * @var integer + */ + var $caching = 0; + + /** + * The name of the directory for cache files. + * + * @var string + */ + var $cache_dir = 'cache'; + + /** + * This is the number of seconds cached content will persist. + *
    + *
  • 0 = always regenerate cache
  • + *
  • -1 = never expires
  • + *
+ * + * @var integer + */ + var $cache_lifetime = 3600; + + /** + * Only used when $caching is enabled. If true, then If-Modified-Since headers + * are respected with cached content, and appropriate HTTP headers are sent. + * This way repeated hits to a cached page do not send the entire page to the + * client every time. + * + * @var boolean + */ + var $cache_modified_check = false; + + /** + * This determines how Smarty handles "" tags in templates. + * possible values: + *
    + *
  • SMARTY_PHP_PASSTHRU -> print tags as plain text
  • + *
  • SMARTY_PHP_QUOTE -> escape tags as entities
  • + *
  • SMARTY_PHP_REMOVE -> remove php tags
  • + *
  • SMARTY_PHP_ALLOW -> execute php tags
  • + *
+ * + * @var integer + */ + var $php_handling = SMARTY_PHP_PASSTHRU; + + /** + * This enables template security. When enabled, many things are restricted + * in the templates that normally would go unchecked. This is useful when + * untrusted parties are editing templates and you want a reasonable level + * of security. (no direct execution of PHP in templates for example) + * + * @var boolean + */ + var $security = false; + + /** + * This is the list of template directories that are considered secure. This + * is used only if {@link $security} is enabled. One directory per array + * element. {@link $template_dir} is in this list implicitly. + * + * @var array + */ + var $secure_dir = array(); + + /** + * These are the security settings for Smarty. They are used only when + * {@link $security} is enabled. + * + * @var array + */ + var $security_settings = array( + 'PHP_HANDLING' => false, + 'IF_FUNCS' => array('array', 'list', + 'isset', 'empty', + 'count', 'sizeof', + 'in_array', 'is_array', + 'true', 'false', 'null'), + 'INCLUDE_ANY' => false, + 'PHP_TAGS' => false, + 'MODIFIER_FUNCS' => array('count'), + 'ALLOW_CONSTANTS' => false + ); + + /** + * This is an array of directories where trusted php scripts reside. + * {@link $security} is disabled during their inclusion/execution. + * + * @var array + */ + var $trusted_dir = array(); + + /** + * The left delimiter used for the template tags. + * + * @var string + */ + var $left_delimiter = '{'; + + /** + * The right delimiter used for the template tags. + * + * @var string + */ + var $right_delimiter = '}'; + + /** + * The order in which request variables are registered, similar to + * variables_order in php.ini E = Environment, G = GET, P = POST, + * C = Cookies, S = Server + * + * @var string + */ + var $request_vars_order = 'EGPCS'; + + /** + * Indicates wether $HTTP_*_VARS[] (request_use_auto_globals=false) + * are uses as request-vars or $_*[]-vars. note: if + * request_use_auto_globals is true, then $request_vars_order has + * no effect, but the php-ini-value "gpc_order" + * + * @var boolean + */ + var $request_use_auto_globals = true; + + /** + * Set this if you want different sets of compiled files for the same + * templates. This is useful for things like different languages. + * Instead of creating separate sets of templates per language, you + * set different compile_ids like 'en' and 'de'. + * + * @var string + */ + var $compile_id = null; + + /** + * This tells Smarty whether or not to use sub dirs in the cache/ and + * templates_c/ directories. sub directories better organized, but + * may not work well with PHP safe mode enabled. + * + * @var boolean + * + */ + var $use_sub_dirs = false; + + /** + * This is a list of the modifiers to apply to all template variables. + * Put each modifier in a separate array element in the order you want + * them applied. example: array('escape:"htmlall"'); + * + * @var array + */ + var $default_modifiers = array(); + + /** + * This is the resource type to be used when not specified + * at the beginning of the resource path. examples: + * $smarty->display('file:index.tpl'); + * $smarty->display('db:index.tpl'); + * $smarty->display('index.tpl'); // will use default resource type + * {include file="file:index.tpl"} + * {include file="db:index.tpl"} + * {include file="index.tpl"} {* will use default resource type *} + * + * @var array + */ + var $default_resource_type = 'file'; + + /** + * The function used for cache file handling. If not set, built-in caching is used. + * + * @var null|string function name + */ + var $cache_handler_func = null; + + /** + * This indicates which filters are automatically loaded into Smarty. + * + * @var array array of filter names + */ + var $autoload_filters = array(); + + /**#@+ + * @var boolean + */ + /** + * This tells if config file vars of the same name overwrite each other or not. + * if disabled, same name variables are accumulated in an array. + */ + var $config_overwrite = true; + + /** + * This tells whether or not to automatically booleanize config file variables. + * If enabled, then the strings "on", "true", and "yes" are treated as boolean + * true, and "off", "false" and "no" are treated as boolean false. + */ + var $config_booleanize = true; + + /** + * This tells whether hidden sections [.foobar] are readable from the + * tempalates or not. Normally you would never allow this since that is + * the point behind hidden sections: the application can access them, but + * the templates cannot. + */ + var $config_read_hidden = false; + + /** + * This tells whether or not automatically fix newlines in config files. + * It basically converts \r (mac) or \r\n (dos) to \n + */ + var $config_fix_newlines = true; + /**#@-*/ + + /** + * If a template cannot be found, this PHP function will be executed. + * Useful for creating templates on-the-fly or other special action. + * + * @var string function name + */ + var $default_template_handler_func = ''; + + /** + * The file that contains the compiler class. This can a full + * pathname, or relative to the php_include path. + * + * @var string + */ + var $compiler_file = 'Smarty_Compiler.class.php'; + + /** + * The class used for compiling templates. + * + * @var string + */ + var $compiler_class = 'Smarty_Compiler'; + + /** + * The class used to load config vars. + * + * @var string + */ + var $config_class = 'Config_File'; + +/**#@+ + * END Smarty Configuration Section + * There should be no need to touch anything below this line. + * @access private + */ + /** + * where assigned template vars are kept + * + * @var array + */ + var $_tpl_vars = array(); + + /** + * stores run-time $smarty.* vars + * + * @var null|array + */ + var $_smarty_vars = null; + + /** + * keeps track of sections + * + * @var array + */ + var $_sections = array(); + + /** + * keeps track of foreach blocks + * + * @var array + */ + var $_foreach = array(); + + /** + * keeps track of tag hierarchy + * + * @var array + */ + var $_tag_stack = array(); + + /** + * configuration object + * + * @var Config_file + */ + var $_conf_obj = null; + + /** + * loaded configuration settings + * + * @var array + */ + var $_config = array(array('vars' => array(), 'files' => array())); + + /** + * md5 checksum of the string 'Smarty' + * + * @var string + */ + var $_smarty_md5 = 'f8d698aea36fcbead2b9d5359ffca76f'; + + /** + * Smarty version number + * + * @var string + */ + var $_version = '2.6.22'; + + /** + * current template inclusion depth + * + * @var integer + */ + var $_inclusion_depth = 0; + + /** + * for different compiled templates + * + * @var string + */ + var $_compile_id = null; + + /** + * text in URL to enable debug mode + * + * @var string + */ + var $_smarty_debug_id = 'SMARTY_DEBUG'; + + /** + * debugging information for debug console + * + * @var array + */ + var $_smarty_debug_info = array(); + + /** + * info that makes up a cache file + * + * @var array + */ + var $_cache_info = array(); + + /** + * default file permissions + * + * @var integer + */ + var $_file_perms = 0644; + + /** + * default dir permissions + * + * @var integer + */ + var $_dir_perms = 0771; + + /** + * registered objects + * + * @var array + */ + var $_reg_objects = array(); + + /** + * table keeping track of plugins + * + * @var array + */ + var $_plugins = array( + 'modifier' => array(), + 'function' => array(), + 'block' => array(), + 'compiler' => array(), + 'prefilter' => array(), + 'postfilter' => array(), + 'outputfilter' => array(), + 'resource' => array(), + 'insert' => array()); + + + /** + * cache serials + * + * @var array + */ + var $_cache_serials = array(); + + /** + * name of optional cache include file + * + * @var string + */ + var $_cache_include = null; + + /** + * indicate if the current code is used in a compiled + * include + * + * @var string + */ + var $_cache_including = false; + + /**#@-*/ + /** + * The class constructor. + */ + function Smarty() + { + $this->assign('SCRIPT_NAME', isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] + : @$GLOBALS['HTTP_SERVER_VARS']['SCRIPT_NAME']); + } + + /** + * assigns values to template variables + * + * @param array|string $tpl_var the template variable name(s) + * @param mixed $value the value to assign + */ + function assign($tpl_var, $value = null) + { + if (is_array($tpl_var)){ + foreach ($tpl_var as $key => $val) { + if ($key != '') { + $this->_tpl_vars[$key] = $val; + } + } + } else { + if ($tpl_var != '') + $this->_tpl_vars[$tpl_var] = $value; + } + } + + /** + * assigns values to template variables by reference + * + * @param string $tpl_var the template variable name + * @param mixed $value the referenced value to assign + */ + function assign_by_ref($tpl_var, &$value) + { + if ($tpl_var != '') + $this->_tpl_vars[$tpl_var] = &$value; + } + + /** + * appends values to template variables + * + * @param array|string $tpl_var the template variable name(s) + * @param mixed $value the value to append + */ + function append($tpl_var, $value=null, $merge=false) + { + if (is_array($tpl_var)) { + // $tpl_var is an array, ignore $value + foreach ($tpl_var as $_key => $_val) { + if ($_key != '') { + if(!@is_array($this->_tpl_vars[$_key])) { + settype($this->_tpl_vars[$_key],'array'); + } + if($merge && is_array($_val)) { + foreach($_val as $_mkey => $_mval) { + $this->_tpl_vars[$_key][$_mkey] = $_mval; + } + } else { + $this->_tpl_vars[$_key][] = $_val; + } + } + } + } else { + if ($tpl_var != '' && isset($value)) { + if(!@is_array($this->_tpl_vars[$tpl_var])) { + settype($this->_tpl_vars[$tpl_var],'array'); + } + if($merge && is_array($value)) { + foreach($value as $_mkey => $_mval) { + $this->_tpl_vars[$tpl_var][$_mkey] = $_mval; + } + } else { + $this->_tpl_vars[$tpl_var][] = $value; + } + } + } + } + + /** + * appends values to template variables by reference + * + * @param string $tpl_var the template variable name + * @param mixed $value the referenced value to append + */ + function append_by_ref($tpl_var, &$value, $merge=false) + { + if ($tpl_var != '' && isset($value)) { + if(!@is_array($this->_tpl_vars[$tpl_var])) { + settype($this->_tpl_vars[$tpl_var],'array'); + } + if ($merge && is_array($value)) { + foreach($value as $_key => $_val) { + $this->_tpl_vars[$tpl_var][$_key] = &$value[$_key]; + } + } else { + $this->_tpl_vars[$tpl_var][] = &$value; + } + } + } + + + /** + * clear the given assigned template variable. + * + * @param string $tpl_var the template variable to clear + */ + function clear_assign($tpl_var) + { + if (is_array($tpl_var)) + foreach ($tpl_var as $curr_var) + unset($this->_tpl_vars[$curr_var]); + else + unset($this->_tpl_vars[$tpl_var]); + } + + + /** + * Registers custom function to be used in templates + * + * @param string $function the name of the template function + * @param string $function_impl the name of the PHP function to register + */ + function register_function($function, $function_impl, $cacheable=true, $cache_attrs=null) + { + $this->_plugins['function'][$function] = + array($function_impl, null, null, false, $cacheable, $cache_attrs); + + } + + /** + * Unregisters custom function + * + * @param string $function name of template function + */ + function unregister_function($function) + { + unset($this->_plugins['function'][$function]); + } + + /** + * Registers object to be used in templates + * + * @param string $object name of template object + * @param object &$object_impl the referenced PHP object to register + * @param null|array $allowed list of allowed methods (empty = all) + * @param boolean $smarty_args smarty argument format, else traditional + * @param null|array $block_functs list of methods that are block format + */ + function register_object($object, &$object_impl, $allowed = array(), $smarty_args = true, $block_methods = array()) + { + settype($allowed, 'array'); + settype($smarty_args, 'boolean'); + $this->_reg_objects[$object] = + array(&$object_impl, $allowed, $smarty_args, $block_methods); + } + + /** + * Unregisters object + * + * @param string $object name of template object + */ + function unregister_object($object) + { + unset($this->_reg_objects[$object]); + } + + + /** + * Registers block function to be used in templates + * + * @param string $block name of template block + * @param string $block_impl PHP function to register + */ + function register_block($block, $block_impl, $cacheable=true, $cache_attrs=null) + { + $this->_plugins['block'][$block] = + array($block_impl, null, null, false, $cacheable, $cache_attrs); + } + + /** + * Unregisters block function + * + * @param string $block name of template function + */ + function unregister_block($block) + { + unset($this->_plugins['block'][$block]); + } + + /** + * Registers compiler function + * + * @param string $function name of template function + * @param string $function_impl name of PHP function to register + */ + function register_compiler_function($function, $function_impl, $cacheable=true) + { + $this->_plugins['compiler'][$function] = + array($function_impl, null, null, false, $cacheable); + } + + /** + * Unregisters compiler function + * + * @param string $function name of template function + */ + function unregister_compiler_function($function) + { + unset($this->_plugins['compiler'][$function]); + } + + /** + * Registers modifier to be used in templates + * + * @param string $modifier name of template modifier + * @param string $modifier_impl name of PHP function to register + */ + function register_modifier($modifier, $modifier_impl) + { + $this->_plugins['modifier'][$modifier] = + array($modifier_impl, null, null, false); + } + + /** + * Unregisters modifier + * + * @param string $modifier name of template modifier + */ + function unregister_modifier($modifier) + { + unset($this->_plugins['modifier'][$modifier]); + } + + /** + * Registers a resource to fetch a template + * + * @param string $type name of resource + * @param array $functions array of functions to handle resource + */ + function register_resource($type, $functions) + { + if (count($functions)==4) { + $this->_plugins['resource'][$type] = + array($functions, false); + + } elseif (count($functions)==5) { + $this->_plugins['resource'][$type] = + array(array(array(&$functions[0], $functions[1]) + ,array(&$functions[0], $functions[2]) + ,array(&$functions[0], $functions[3]) + ,array(&$functions[0], $functions[4])) + ,false); + + } else { + $this->trigger_error("malformed function-list for '$type' in register_resource"); + + } + } + + /** + * Unregisters a resource + * + * @param string $type name of resource + */ + function unregister_resource($type) + { + unset($this->_plugins['resource'][$type]); + } + + /** + * Registers a prefilter function to apply + * to a template before compiling + * + * @param callback $function + */ + function register_prefilter($function) + { + $this->_plugins['prefilter'][$this->_get_filter_name($function)] + = array($function, null, null, false); + } + + /** + * Unregisters a prefilter function + * + * @param callback $function + */ + function unregister_prefilter($function) + { + unset($this->_plugins['prefilter'][$this->_get_filter_name($function)]); + } + + /** + * Registers a postfilter function to apply + * to a compiled template after compilation + * + * @param callback $function + */ + function register_postfilter($function) + { + $this->_plugins['postfilter'][$this->_get_filter_name($function)] + = array($function, null, null, false); + } + + /** + * Unregisters a postfilter function + * + * @param callback $function + */ + function unregister_postfilter($function) + { + unset($this->_plugins['postfilter'][$this->_get_filter_name($function)]); + } + + /** + * Registers an output filter function to apply + * to a template output + * + * @param callback $function + */ + function register_outputfilter($function) + { + $this->_plugins['outputfilter'][$this->_get_filter_name($function)] + = array($function, null, null, false); + } + + /** + * Unregisters an outputfilter function + * + * @param callback $function + */ + function unregister_outputfilter($function) + { + unset($this->_plugins['outputfilter'][$this->_get_filter_name($function)]); + } + + /** + * load a filter of specified type and name + * + * @param string $type filter type + * @param string $name filter name + */ + function load_filter($type, $name) + { + switch ($type) { + case 'output': + $_params = array('plugins' => array(array($type . 'filter', $name, null, null, false))); + require_once(SMARTY_CORE_DIR . 'core.load_plugins.php'); + smarty_core_load_plugins($_params, $this); + break; + + case 'pre': + case 'post': + if (!isset($this->_plugins[$type . 'filter'][$name])) + $this->_plugins[$type . 'filter'][$name] = false; + break; + } + } + + /** + * clear cached content for the given template and cache id + * + * @param string $tpl_file name of template file + * @param string $cache_id name of cache_id + * @param string $compile_id name of compile_id + * @param string $exp_time expiration time + * @return boolean + */ + function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null) + { + + if (!isset($compile_id)) + $compile_id = $this->compile_id; + + if (!isset($tpl_file)) + $compile_id = null; + + $_auto_id = $this->_get_auto_id($cache_id, $compile_id); + + if (!empty($this->cache_handler_func)) { + return call_user_func_array($this->cache_handler_func, + array('clear', &$this, &$dummy, $tpl_file, $cache_id, $compile_id, $exp_time)); + } else { + $_params = array('auto_base' => $this->cache_dir, + 'auto_source' => $tpl_file, + 'auto_id' => $_auto_id, + 'exp_time' => $exp_time); + require_once(SMARTY_CORE_DIR . 'core.rm_auto.php'); + return smarty_core_rm_auto($_params, $this); + } + + } + + + /** + * clear the entire contents of cache (all templates) + * + * @param string $exp_time expire time + * @return boolean results of {@link smarty_core_rm_auto()} + */ + function clear_all_cache($exp_time = null) + { + return $this->clear_cache(null, null, null, $exp_time); + } + + + /** + * test to see if valid cache exists for this template + * + * @param string $tpl_file name of template file + * @param string $cache_id + * @param string $compile_id + * @return string|false results of {@link _read_cache_file()} + */ + function is_cached($tpl_file, $cache_id = null, $compile_id = null) + { + if (!$this->caching) + return false; + + if (!isset($compile_id)) + $compile_id = $this->compile_id; + + $_params = array( + 'tpl_file' => $tpl_file, + 'cache_id' => $cache_id, + 'compile_id' => $compile_id + ); + require_once(SMARTY_CORE_DIR . 'core.read_cache_file.php'); + return smarty_core_read_cache_file($_params, $this); + } + + + /** + * clear all the assigned template variables. + * + */ + function clear_all_assign() + { + $this->_tpl_vars = array(); + } + + /** + * clears compiled version of specified template resource, + * or all compiled template files if one is not specified. + * This function is for advanced use only, not normally needed. + * + * @param string $tpl_file + * @param string $compile_id + * @param string $exp_time + * @return boolean results of {@link smarty_core_rm_auto()} + */ + function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null) + { + if (!isset($compile_id)) { + $compile_id = $this->compile_id; + } + $_params = array('auto_base' => $this->compile_dir, + 'auto_source' => $tpl_file, + 'auto_id' => $compile_id, + 'exp_time' => $exp_time, + 'extensions' => array('.inc', '.php')); + require_once(SMARTY_CORE_DIR . 'core.rm_auto.php'); + return smarty_core_rm_auto($_params, $this); + } + + /** + * Checks whether requested template exists. + * + * @param string $tpl_file + * @return boolean + */ + function template_exists($tpl_file) + { + $_params = array('resource_name' => $tpl_file, 'quiet'=>true, 'get_source'=>false); + return $this->_fetch_resource_info($_params); + } + + /** + * Returns an array containing template variables + * + * @param string $name + * @param string $type + * @return array + */ + function &get_template_vars($name=null) + { + if(!isset($name)) { + return $this->_tpl_vars; + } elseif(isset($this->_tpl_vars[$name])) { + return $this->_tpl_vars[$name]; + } else { + // var non-existant, return valid reference + $_tmp = null; + return $_tmp; + } + } + + /** + * Returns an array containing config variables + * + * @param string $name + * @param string $type + * @return array + */ + function &get_config_vars($name=null) + { + if(!isset($name) && is_array($this->_config[0])) { + return $this->_config[0]['vars']; + } else if(isset($this->_config[0]['vars'][$name])) { + return $this->_config[0]['vars'][$name]; + } else { + // var non-existant, return valid reference + $_tmp = null; + return $_tmp; + } + } + + /** + * trigger Smarty error + * + * @param string $error_msg + * @param integer $error_type + */ + function trigger_error($error_msg, $error_type = E_USER_WARNING) + { + trigger_error("Smarty error: $error_msg", $error_type); + } + + + /** + * executes & displays the template results + * + * @param string $resource_name + * @param string $cache_id + * @param string $compile_id + */ + function display($resource_name, $cache_id = null, $compile_id = null) + { + $this->fetch($resource_name, $cache_id, $compile_id, true); + } + + /** + * executes & returns or displays the template results + * + * @param string $resource_name + * @param string $cache_id + * @param string $compile_id + * @param boolean $display + */ + function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false) + { + static $_cache_info = array(); + + $_smarty_old_error_level = $this->debugging ? error_reporting() : error_reporting(isset($this->error_reporting) + ? $this->error_reporting : error_reporting() & ~E_NOTICE); + + if (!$this->debugging && $this->debugging_ctrl == 'URL') { + $_query_string = $this->request_use_auto_globals ? $_SERVER['QUERY_STRING'] : $GLOBALS['HTTP_SERVER_VARS']['QUERY_STRING']; + if (@strstr($_query_string, $this->_smarty_debug_id)) { + if (@strstr($_query_string, $this->_smarty_debug_id . '=on')) { + // enable debugging for this browser session + @setcookie('SMARTY_DEBUG', true); + $this->debugging = true; + } elseif (@strstr($_query_string, $this->_smarty_debug_id . '=off')) { + // disable debugging for this browser session + @setcookie('SMARTY_DEBUG', false); + $this->debugging = false; + } else { + // enable debugging for this page + $this->debugging = true; + } + } else { + $this->debugging = (bool)($this->request_use_auto_globals ? @$_COOKIE['SMARTY_DEBUG'] : @$GLOBALS['HTTP_COOKIE_VARS']['SMARTY_DEBUG']); + } + } + + if ($this->debugging) { + // capture time for debugging info + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $_debug_start_time = smarty_core_get_microtime($_params, $this); + $this->_smarty_debug_info[] = array('type' => 'template', + 'filename' => $resource_name, + 'depth' => 0); + $_included_tpls_idx = count($this->_smarty_debug_info) - 1; + } + + if (!isset($compile_id)) { + $compile_id = $this->compile_id; + } + + $this->_compile_id = $compile_id; + $this->_inclusion_depth = 0; + + if ($this->caching) { + // save old cache_info, initialize cache_info + array_push($_cache_info, $this->_cache_info); + $this->_cache_info = array(); + $_params = array( + 'tpl_file' => $resource_name, + 'cache_id' => $cache_id, + 'compile_id' => $compile_id, + 'results' => null + ); + require_once(SMARTY_CORE_DIR . 'core.read_cache_file.php'); + if (smarty_core_read_cache_file($_params, $this)) { + $_smarty_results = $_params['results']; + if (!empty($this->_cache_info['insert_tags'])) { + $_params = array('plugins' => $this->_cache_info['insert_tags']); + require_once(SMARTY_CORE_DIR . 'core.load_plugins.php'); + smarty_core_load_plugins($_params, $this); + $_params = array('results' => $_smarty_results); + require_once(SMARTY_CORE_DIR . 'core.process_cached_inserts.php'); + $_smarty_results = smarty_core_process_cached_inserts($_params, $this); + } + if (!empty($this->_cache_info['cache_serials'])) { + $_params = array('results' => $_smarty_results); + require_once(SMARTY_CORE_DIR . 'core.process_compiled_include.php'); + $_smarty_results = smarty_core_process_compiled_include($_params, $this); + } + + + if ($display) { + if ($this->debugging) + { + // capture time for debugging info + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $_debug_start_time; + require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php'); + $_smarty_results .= smarty_core_display_debug_console($_params, $this); + } + if ($this->cache_modified_check) { + $_server_vars = ($this->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; + $_last_modified_date = @substr($_server_vars['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_server_vars['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3); + $_gmt_mtime = gmdate('D, d M Y H:i:s', $this->_cache_info['timestamp']).' GMT'; + if (@count($this->_cache_info['insert_tags']) == 0 + && !$this->_cache_serials + && $_gmt_mtime == $_last_modified_date) { + if (php_sapi_name()=='cgi') + header('Status: 304 Not Modified'); + else + header('HTTP/1.1 304 Not Modified'); + + } else { + header('Last-Modified: '.$_gmt_mtime); + echo $_smarty_results; + } + } else { + echo $_smarty_results; + } + error_reporting($_smarty_old_error_level); + // restore initial cache_info + $this->_cache_info = array_pop($_cache_info); + return true; + } else { + error_reporting($_smarty_old_error_level); + // restore initial cache_info + $this->_cache_info = array_pop($_cache_info); + return $_smarty_results; + } + } else { + $this->_cache_info['template'][$resource_name] = true; + if ($this->cache_modified_check && $display) { + header('Last-Modified: '.gmdate('D, d M Y H:i:s', time()).' GMT'); + } + } + } + + // load filters that are marked as autoload + if (count($this->autoload_filters)) { + foreach ($this->autoload_filters as $_filter_type => $_filters) { + foreach ($_filters as $_filter) { + $this->load_filter($_filter_type, $_filter); + } + } + } + + $_smarty_compile_path = $this->_get_compile_path($resource_name); + + // if we just need to display the results, don't perform output + // buffering - for speed + $_cache_including = $this->_cache_including; + $this->_cache_including = false; + if ($display && !$this->caching && count($this->_plugins['outputfilter']) == 0) { + if ($this->_is_compiled($resource_name, $_smarty_compile_path) + || $this->_compile_resource($resource_name, $_smarty_compile_path)) + { + include($_smarty_compile_path); + } + } else { + ob_start(); + if ($this->_is_compiled($resource_name, $_smarty_compile_path) + || $this->_compile_resource($resource_name, $_smarty_compile_path)) + { + include($_smarty_compile_path); + } + $_smarty_results = ob_get_contents(); + ob_end_clean(); + + foreach ((array)$this->_plugins['outputfilter'] as $_output_filter) { + $_smarty_results = call_user_func_array($_output_filter[0], array($_smarty_results, &$this)); + } + } + + if ($this->caching) { + $_params = array('tpl_file' => $resource_name, + 'cache_id' => $cache_id, + 'compile_id' => $compile_id, + 'results' => $_smarty_results); + require_once(SMARTY_CORE_DIR . 'core.write_cache_file.php'); + smarty_core_write_cache_file($_params, $this); + require_once(SMARTY_CORE_DIR . 'core.process_cached_inserts.php'); + $_smarty_results = smarty_core_process_cached_inserts($_params, $this); + + if ($this->_cache_serials) { + // strip nocache-tags from output + $_smarty_results = preg_replace('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!s' + ,'' + ,$_smarty_results); + } + // restore initial cache_info + $this->_cache_info = array_pop($_cache_info); + } + $this->_cache_including = $_cache_including; + + if ($display) { + if (isset($_smarty_results)) { echo $_smarty_results; } + if ($this->debugging) { + // capture time for debugging info + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = (smarty_core_get_microtime($_params, $this) - $_debug_start_time); + require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php'); + echo smarty_core_display_debug_console($_params, $this); + } + error_reporting($_smarty_old_error_level); + return; + } else { + error_reporting($_smarty_old_error_level); + if (isset($_smarty_results)) { return $_smarty_results; } + } + } + + /** + * load configuration values + * + * @param string $file + * @param string $section + * @param string $scope + */ + function config_load($file, $section = null, $scope = 'global') + { + require_once($this->_get_plugin_filepath('function', 'config_load')); + smarty_function_config_load(array('file' => $file, 'section' => $section, 'scope' => $scope), $this); + } + + /** + * return a reference to a registered object + * + * @param string $name + * @return object + */ + function &get_registered_object($name) { + if (!isset($this->_reg_objects[$name])) + $this->_trigger_fatal_error("'$name' is not a registered object"); + + if (!is_object($this->_reg_objects[$name][0])) + $this->_trigger_fatal_error("registered '$name' is not an object"); + + return $this->_reg_objects[$name][0]; + } + + /** + * clear configuration values + * + * @param string $var + */ + function clear_config($var = null) + { + if(!isset($var)) { + // clear all values + $this->_config = array(array('vars' => array(), + 'files' => array())); + } else { + unset($this->_config[0]['vars'][$var]); + } + } + + /** + * get filepath of requested plugin + * + * @param string $type + * @param string $name + * @return string|false + */ + function _get_plugin_filepath($type, $name) + { + $_params = array('type' => $type, 'name' => $name); + require_once(SMARTY_CORE_DIR . 'core.assemble_plugin_filepath.php'); + return smarty_core_assemble_plugin_filepath($_params, $this); + } + + /** + * test if resource needs compiling + * + * @param string $resource_name + * @param string $compile_path + * @return boolean + */ + function _is_compiled($resource_name, $compile_path) + { + if (!$this->force_compile && file_exists($compile_path)) { + if (!$this->compile_check) { + // no need to check compiled file + return true; + } else { + // get file source and timestamp + $_params = array('resource_name' => $resource_name, 'get_source'=>false); + if (!$this->_fetch_resource_info($_params)) { + return false; + } + if ($_params['resource_timestamp'] <= filemtime($compile_path)) { + // template not expired, no recompile + return true; + } else { + // compile template + return false; + } + } + } else { + // compiled template does not exist, or forced compile + return false; + } + } + + /** + * compile the template + * + * @param string $resource_name + * @param string $compile_path + * @return boolean + */ + function _compile_resource($resource_name, $compile_path) + { + + $_params = array('resource_name' => $resource_name); + if (!$this->_fetch_resource_info($_params)) { + return false; + } + + $_source_content = $_params['source_content']; + $_cache_include = substr($compile_path, 0, -4).'.inc'; + + if ($this->_compile_source($resource_name, $_source_content, $_compiled_content, $_cache_include)) { + // if a _cache_serial was set, we also have to write an include-file: + if ($this->_cache_include_info) { + require_once(SMARTY_CORE_DIR . 'core.write_compiled_include.php'); + smarty_core_write_compiled_include(array_merge($this->_cache_include_info, array('compiled_content'=>$_compiled_content, 'resource_name'=>$resource_name)), $this); + } + + $_params = array('compile_path'=>$compile_path, 'compiled_content' => $_compiled_content); + require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php'); + smarty_core_write_compiled_resource($_params, $this); + + return true; + } else { + return false; + } + + } + + /** + * compile the given source + * + * @param string $resource_name + * @param string $source_content + * @param string $compiled_content + * @return boolean + */ + function _compile_source($resource_name, &$source_content, &$compiled_content, $cache_include_path=null) + { + if (file_exists(SMARTY_DIR . $this->compiler_file)) { + require_once(SMARTY_DIR . $this->compiler_file); + } else { + // use include_path + require_once($this->compiler_file); + } + + + $smarty_compiler = new $this->compiler_class; + + $smarty_compiler->template_dir = $this->template_dir; + $smarty_compiler->compile_dir = $this->compile_dir; + $smarty_compiler->plugins_dir = $this->plugins_dir; + $smarty_compiler->config_dir = $this->config_dir; + $smarty_compiler->force_compile = $this->force_compile; + $smarty_compiler->caching = $this->caching; + $smarty_compiler->php_handling = $this->php_handling; + $smarty_compiler->left_delimiter = $this->left_delimiter; + $smarty_compiler->right_delimiter = $this->right_delimiter; + $smarty_compiler->_version = $this->_version; + $smarty_compiler->security = $this->security; + $smarty_compiler->secure_dir = $this->secure_dir; + $smarty_compiler->security_settings = $this->security_settings; + $smarty_compiler->trusted_dir = $this->trusted_dir; + $smarty_compiler->use_sub_dirs = $this->use_sub_dirs; + $smarty_compiler->_reg_objects = &$this->_reg_objects; + $smarty_compiler->_plugins = &$this->_plugins; + $smarty_compiler->_tpl_vars = &$this->_tpl_vars; + $smarty_compiler->default_modifiers = $this->default_modifiers; + $smarty_compiler->compile_id = $this->_compile_id; + $smarty_compiler->_config = $this->_config; + $smarty_compiler->request_use_auto_globals = $this->request_use_auto_globals; + + if (isset($cache_include_path) && isset($this->_cache_serials[$cache_include_path])) { + $smarty_compiler->_cache_serial = $this->_cache_serials[$cache_include_path]; + } + $smarty_compiler->_cache_include = $cache_include_path; + + + $_results = $smarty_compiler->_compile_file($resource_name, $source_content, $compiled_content); + + if ($smarty_compiler->_cache_serial) { + $this->_cache_include_info = array( + 'cache_serial'=>$smarty_compiler->_cache_serial + ,'plugins_code'=>$smarty_compiler->_plugins_code + ,'include_file_path' => $cache_include_path); + + } else { + $this->_cache_include_info = null; + + } + + return $_results; + } + + /** + * Get the compile path for this resource + * + * @param string $resource_name + * @return string results of {@link _get_auto_filename()} + */ + function _get_compile_path($resource_name) + { + return $this->_get_auto_filename($this->compile_dir, $resource_name, + $this->_compile_id) . '.php'; + } + + /** + * fetch the template info. Gets timestamp, and source + * if get_source is true + * + * sets $source_content to the source of the template, and + * $resource_timestamp to its time stamp + * @param string $resource_name + * @param string $source_content + * @param integer $resource_timestamp + * @param boolean $get_source + * @param boolean $quiet + * @return boolean + */ + + function _fetch_resource_info(&$params) + { + if(!isset($params['get_source'])) { $params['get_source'] = true; } + if(!isset($params['quiet'])) { $params['quiet'] = false; } + + $_return = false; + $_params = array('resource_name' => $params['resource_name']) ; + if (isset($params['resource_base_path'])) + $_params['resource_base_path'] = $params['resource_base_path']; + else + $_params['resource_base_path'] = $this->template_dir; + + if ($this->_parse_resource_name($_params)) { + $_resource_type = $_params['resource_type']; + $_resource_name = $_params['resource_name']; + switch ($_resource_type) { + case 'file': + if ($params['get_source']) { + $params['source_content'] = $this->_read_file($_resource_name); + } + $params['resource_timestamp'] = filemtime($_resource_name); + $_return = is_file($_resource_name); + break; + + default: + // call resource functions to fetch the template source and timestamp + if ($params['get_source']) { + $_source_return = isset($this->_plugins['resource'][$_resource_type]) && + call_user_func_array($this->_plugins['resource'][$_resource_type][0][0], + array($_resource_name, &$params['source_content'], &$this)); + } else { + $_source_return = true; + } + + $_timestamp_return = isset($this->_plugins['resource'][$_resource_type]) && + call_user_func_array($this->_plugins['resource'][$_resource_type][0][1], + array($_resource_name, &$params['resource_timestamp'], &$this)); + + $_return = $_source_return && $_timestamp_return; + break; + } + } + + if (!$_return) { + // see if we can get a template with the default template handler + if (!empty($this->default_template_handler_func)) { + if (!is_callable($this->default_template_handler_func)) { + $this->trigger_error("default template handler function \"$this->default_template_handler_func\" doesn't exist."); + } else { + $_return = call_user_func_array( + $this->default_template_handler_func, + array($_params['resource_type'], $_params['resource_name'], &$params['source_content'], &$params['resource_timestamp'], &$this)); + } + } + } + + if (!$_return) { + if (!$params['quiet']) { + $this->trigger_error('unable to read resource: "' . $params['resource_name'] . '"'); + } + } else if ($_return && $this->security) { + require_once(SMARTY_CORE_DIR . 'core.is_secure.php'); + if (!smarty_core_is_secure($_params, $this)) { + if (!$params['quiet']) + $this->trigger_error('(secure mode) accessing "' . $params['resource_name'] . '" is not allowed'); + $params['source_content'] = null; + $params['resource_timestamp'] = null; + return false; + } + } + return $_return; + } + + + /** + * parse out the type and name from the resource + * + * @param string $resource_base_path + * @param string $resource_name + * @param string $resource_type + * @param string $resource_name + * @return boolean + */ + + function _parse_resource_name(&$params) + { + + // split tpl_path by the first colon + $_resource_name_parts = explode(':', $params['resource_name'], 2); + + if (count($_resource_name_parts) == 1) { + // no resource type given + $params['resource_type'] = $this->default_resource_type; + $params['resource_name'] = $_resource_name_parts[0]; + } else { + if(strlen($_resource_name_parts[0]) == 1) { + // 1 char is not resource type, but part of filepath + $params['resource_type'] = $this->default_resource_type; + $params['resource_name'] = $params['resource_name']; + } else { + $params['resource_type'] = $_resource_name_parts[0]; + $params['resource_name'] = $_resource_name_parts[1]; + } + } + + if ($params['resource_type'] == 'file') { + if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $params['resource_name'])) { + // relative pathname to $params['resource_base_path'] + // use the first directory where the file is found + foreach ((array)$params['resource_base_path'] as $_curr_path) { + $_fullpath = $_curr_path . DIRECTORY_SEPARATOR . $params['resource_name']; + if (file_exists($_fullpath) && is_file($_fullpath)) { + $params['resource_name'] = $_fullpath; + return true; + } + // didn't find the file, try include_path + $_params = array('file_path' => $_fullpath); + require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); + if(smarty_core_get_include_path($_params, $this)) { + $params['resource_name'] = $_params['new_file_path']; + return true; + } + } + return false; + } else { + /* absolute path */ + return file_exists($params['resource_name']); + } + } elseif (empty($this->_plugins['resource'][$params['resource_type']])) { + $_params = array('type' => $params['resource_type']); + require_once(SMARTY_CORE_DIR . 'core.load_resource_plugin.php'); + smarty_core_load_resource_plugin($_params, $this); + } + + return true; + } + + + /** + * Handle modifiers + * + * @param string|null $modifier_name + * @param array|null $map_array + * @return string result of modifiers + */ + function _run_mod_handler() + { + $_args = func_get_args(); + list($_modifier_name, $_map_array) = array_splice($_args, 0, 2); + list($_func_name, $_tpl_file, $_tpl_line) = + $this->_plugins['modifier'][$_modifier_name]; + + $_var = $_args[0]; + foreach ($_var as $_key => $_val) { + $_args[0] = $_val; + $_var[$_key] = call_user_func_array($_func_name, $_args); + } + return $_var; + } + + /** + * Remove starting and ending quotes from the string + * + * @param string $string + * @return string + */ + function _dequote($string) + { + if ((substr($string, 0, 1) == "'" || substr($string, 0, 1) == '"') && + substr($string, -1) == substr($string, 0, 1)) + return substr($string, 1, -1); + else + return $string; + } + + + /** + * read in a file + * + * @param string $filename + * @return string + */ + function _read_file($filename) + { + if ( file_exists($filename) && ($fd = @fopen($filename, 'rb')) ) { + $contents = ''; + while (!feof($fd)) { + $contents .= fread($fd, 8192); + } + fclose($fd); + return $contents; + } else { + return false; + } + } + + /** + * get a concrete filename for automagically created content + * + * @param string $auto_base + * @param string $auto_source + * @param string $auto_id + * @return string + * @staticvar string|null + * @staticvar string|null + */ + function _get_auto_filename($auto_base, $auto_source = null, $auto_id = null) + { + $_compile_dir_sep = $this->use_sub_dirs ? DIRECTORY_SEPARATOR : '^'; + $_return = $auto_base . DIRECTORY_SEPARATOR; + + if(isset($auto_id)) { + // make auto_id safe for directory names + $auto_id = str_replace('%7C',$_compile_dir_sep,(urlencode($auto_id))); + // split into separate directories + $_return .= $auto_id . $_compile_dir_sep; + } + + if(isset($auto_source)) { + // make source name safe for filename + $_filename = urlencode(basename($auto_source)); + $_crc32 = sprintf('%08X', crc32($auto_source)); + // prepend %% to avoid name conflicts with + // with $params['auto_id'] names + $_crc32 = substr($_crc32, 0, 2) . $_compile_dir_sep . + substr($_crc32, 0, 3) . $_compile_dir_sep . $_crc32; + $_return .= '%%' . $_crc32 . '%%' . $_filename; + } + + return $_return; + } + + /** + * unlink a file, possibly using expiration time + * + * @param string $resource + * @param integer $exp_time + */ + function _unlink($resource, $exp_time = null) + { + if(isset($exp_time)) { + if(time() - @filemtime($resource) >= $exp_time) { + return @unlink($resource); + } + } else { + return @unlink($resource); + } + } + + /** + * returns an auto_id for auto-file-functions + * + * @param string $cache_id + * @param string $compile_id + * @return string|null + */ + function _get_auto_id($cache_id=null, $compile_id=null) { + if (isset($cache_id)) + return (isset($compile_id)) ? $cache_id . '|' . $compile_id : $cache_id; + elseif(isset($compile_id)) + return $compile_id; + else + return null; + } + + /** + * trigger Smarty plugin error + * + * @param string $error_msg + * @param string $tpl_file + * @param integer $tpl_line + * @param string $file + * @param integer $line + * @param integer $error_type + */ + function _trigger_fatal_error($error_msg, $tpl_file = null, $tpl_line = null, + $file = null, $line = null, $error_type = E_USER_ERROR) + { + if(isset($file) && isset($line)) { + $info = ' ('.basename($file).", line $line)"; + } else { + $info = ''; + } + if (isset($tpl_line) && isset($tpl_file)) { + $this->trigger_error('[in ' . $tpl_file . ' line ' . $tpl_line . "]: $error_msg$info", $error_type); + } else { + $this->trigger_error($error_msg . $info, $error_type); + } + } + + + /** + * callback function for preg_replace, to call a non-cacheable block + * @return string + */ + function _process_compiled_include_callback($match) { + $_func = '_smarty_tplfunc_'.$match[2].'_'.$match[3]; + ob_start(); + $_func($this); + $_ret = ob_get_contents(); + ob_end_clean(); + return $_ret; + } + + + /** + * called for included templates + * + * @param string $_smarty_include_tpl_file + * @param string $_smarty_include_vars + */ + + // $_smarty_include_tpl_file, $_smarty_include_vars + + function _smarty_include($params) + { + if ($this->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $debug_start_time = smarty_core_get_microtime($_params, $this); + $this->_smarty_debug_info[] = array('type' => 'template', + 'filename' => $params['smarty_include_tpl_file'], + 'depth' => ++$this->_inclusion_depth); + $included_tpls_idx = count($this->_smarty_debug_info) - 1; + } + + $this->_tpl_vars = array_merge($this->_tpl_vars, $params['smarty_include_vars']); + + // config vars are treated as local, so push a copy of the + // current ones onto the front of the stack + array_unshift($this->_config, $this->_config[0]); + + $_smarty_compile_path = $this->_get_compile_path($params['smarty_include_tpl_file']); + + + if ($this->_is_compiled($params['smarty_include_tpl_file'], $_smarty_compile_path) + || $this->_compile_resource($params['smarty_include_tpl_file'], $_smarty_compile_path)) + { + include($_smarty_compile_path); + } + + // pop the local vars off the front of the stack + array_shift($this->_config); + + $this->_inclusion_depth--; + + if ($this->debugging) { + // capture time for debugging info + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $this->_smarty_debug_info[$included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $debug_start_time; + } + + if ($this->caching) { + $this->_cache_info['template'][$params['smarty_include_tpl_file']] = true; + } + } + + + /** + * get or set an array of cached attributes for function that is + * not cacheable + * @return array + */ + function &_smarty_cache_attrs($cache_serial, $count) { + $_cache_attrs =& $this->_cache_info['cache_attrs'][$cache_serial][$count]; + + if ($this->_cache_including) { + /* return next set of cache_attrs */ + $_return = current($_cache_attrs); + next($_cache_attrs); + return $_return; + + } else { + /* add a reference to a new set of cache_attrs */ + $_cache_attrs[] = array(); + return $_cache_attrs[count($_cache_attrs)-1]; + + } + + } + + + /** + * wrapper for include() retaining $this + * @return mixed + */ + function _include($filename, $once=false, $params=null) + { + if ($once) { + return include_once($filename); + } else { + return include($filename); + } + } + + + /** + * wrapper for eval() retaining $this + * @return mixed + */ + function _eval($code, $params=null) + { + return eval($code); + } + + /** + * Extracts the filter name from the given callback + * + * @param callback $function + * @return string + */ + function _get_filter_name($function) + { + if (is_array($function)) { + $_class_name = (is_object($function[0]) ? + get_class($function[0]) : $function[0]); + return $_class_name . '_' . $function[1]; + } + else { + return $function; + } + } + + /**#@-*/ + +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/Smarty_Compiler.class.php b/trunk/gosa-core/include/smarty/Smarty_Compiler.class.php new file mode 100644 index 000000000..374ba3d04 --- /dev/null +++ b/trunk/gosa-core/include/smarty/Smarty_Compiler.class.php @@ -0,0 +1,2351 @@ + + * @author Andrei Zmievski + * @version 2.6.22 + * @copyright 2001-2005 New Digital Group, Inc. + * @package Smarty + */ + +/* $Id: Smarty_Compiler.class.php 2966 2008-12-08 15:10:03Z monte.ohrt $ */ + +/** + * Template compiling class + * @package Smarty + */ +class Smarty_Compiler extends Smarty { + + // internal vars + /**#@+ + * @access private + */ + var $_folded_blocks = array(); // keeps folded template blocks + var $_current_file = null; // the current template being compiled + var $_current_line_no = 1; // line number for error messages + var $_capture_stack = array(); // keeps track of nested capture buffers + var $_plugin_info = array(); // keeps track of plugins to load + var $_init_smarty_vars = false; + var $_permitted_tokens = array('true','false','yes','no','on','off','null'); + var $_db_qstr_regexp = null; // regexps are setup in the constructor + var $_si_qstr_regexp = null; + var $_qstr_regexp = null; + var $_func_regexp = null; + var $_reg_obj_regexp = null; + var $_var_bracket_regexp = null; + var $_num_const_regexp = null; + var $_dvar_guts_regexp = null; + var $_dvar_regexp = null; + var $_cvar_regexp = null; + var $_svar_regexp = null; + var $_avar_regexp = null; + var $_mod_regexp = null; + var $_var_regexp = null; + var $_parenth_param_regexp = null; + var $_func_call_regexp = null; + var $_obj_ext_regexp = null; + var $_obj_start_regexp = null; + var $_obj_params_regexp = null; + var $_obj_call_regexp = null; + var $_cacheable_state = 0; + var $_cache_attrs_count = 0; + var $_nocache_count = 0; + var $_cache_serial = null; + var $_cache_include = null; + + var $_strip_depth = 0; + var $_additional_newline = "\n"; + + var $_phpversion = 0; + + + /**#@-*/ + /** + * The class constructor. + */ + function Smarty_Compiler() + { + $this->_phpversion = substr(phpversion(),0,1); + + // matches double quoted strings: + // "foobar" + // "foo\"bar" + $this->_db_qstr_regexp = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"'; + + // matches single quoted strings: + // 'foobar' + // 'foo\'bar' + $this->_si_qstr_regexp = '\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\''; + + // matches single or double quoted strings + $this->_qstr_regexp = '(?:' . $this->_db_qstr_regexp . '|' . $this->_si_qstr_regexp . ')'; + + // matches bracket portion of vars + // [0] + // [foo] + // [$bar] + $this->_var_bracket_regexp = '\[\$?[\w\.]+\]'; + + // matches numerical constants + // 30 + // -12 + // 13.22 + $this->_num_const_regexp = '(?:\-?\d+(?:\.\d+)?)'; + + // matches $ vars (not objects): + // $foo + // $foo.bar + // $foo.bar.foobar + // $foo[0] + // $foo[$bar] + // $foo[5][blah] + // $foo[5].bar[$foobar][4] + $this->_dvar_math_regexp = '(?:[\+\*\/\%]|(?:-(?!>)))'; + $this->_dvar_math_var_regexp = '[\$\w\.\+\-\*\/\%\d\>\[\]]'; + $this->_dvar_guts_regexp = '\w+(?:' . $this->_var_bracket_regexp + . ')*(?:\.\$?\w+(?:' . $this->_var_bracket_regexp . ')*)*(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?'; + $this->_dvar_regexp = '\$' . $this->_dvar_guts_regexp; + + // matches config vars: + // #foo# + // #foobar123_foo# + $this->_cvar_regexp = '\#\w+\#'; + + // matches section vars: + // %foo.bar% + $this->_svar_regexp = '\%\w+\.\w+\%'; + + // matches all valid variables (no quotes, no modifiers) + $this->_avar_regexp = '(?:' . $this->_dvar_regexp . '|' + . $this->_cvar_regexp . '|' . $this->_svar_regexp . ')'; + + // matches valid variable syntax: + // $foo + // $foo + // #foo# + // #foo# + // "text" + // "text" + $this->_var_regexp = '(?:' . $this->_avar_regexp . '|' . $this->_qstr_regexp . ')'; + + // matches valid object call (one level of object nesting allowed in parameters): + // $foo->bar + // $foo->bar() + // $foo->bar("text") + // $foo->bar($foo, $bar, "text") + // $foo->bar($foo, "foo") + // $foo->bar->foo() + // $foo->bar->foo->bar() + // $foo->bar($foo->bar) + // $foo->bar($foo->bar()) + // $foo->bar($foo->bar($blah,$foo,44,"foo",$foo[0].bar)) + // $foo->getBar()->getFoo() + // $foo->getBar()->foo + $this->_obj_ext_regexp = '\->(?:\$?' . $this->_dvar_guts_regexp . ')'; + $this->_obj_restricted_param_regexp = '(?:' + . '(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')(?:' . $this->_obj_ext_regexp . '(?:\((?:(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')' + . '(?:\s*,\s*(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . '))*)?\))?)*)'; + + $this->_obj_single_param_regexp = '(?:\w+|' . $this->_obj_restricted_param_regexp . '(?:\s*,\s*(?:(?:\w+|' + . $this->_var_regexp . $this->_obj_restricted_param_regexp . ')))*)'; + + $this->_obj_params_regexp = '\((?:' . $this->_obj_single_param_regexp + . '(?:\s*,\s*' . $this->_obj_single_param_regexp . ')*)?\)'; + $this->_obj_start_regexp = '(?:' . $this->_dvar_regexp . '(?:' . $this->_obj_ext_regexp . ')+)'; + $this->_obj_call_regexp = '(?:' . $this->_obj_start_regexp . '(?:' . $this->_obj_params_regexp . ')?(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?)'; + + // matches valid modifier syntax: + // |foo + // |@foo + // |foo:"bar" + // |foo:$bar + // |foo:"bar":$foobar + // |foo|bar + // |foo:$foo->bar + $this->_mod_regexp = '(?:\|@?\w+(?::(?:\w+|' . $this->_num_const_regexp . '|' + . $this->_obj_call_regexp . '|' . $this->_avar_regexp . '|' . $this->_qstr_regexp .'))*)'; + + // matches valid function name: + // foo123 + // _foo_bar + $this->_func_regexp = '[a-zA-Z_]\w*'; + + // matches valid registered object: + // foo->bar + $this->_reg_obj_regexp = '[a-zA-Z_]\w*->[a-zA-Z_]\w*'; + + // matches valid parameter values: + // true + // $foo + // $foo|bar + // #foo# + // #foo#|bar + // "text" + // "text"|bar + // $foo->bar + $this->_param_regexp = '(?:\s*(?:' . $this->_obj_call_regexp . '|' + . $this->_var_regexp . '|' . $this->_num_const_regexp . '|\w+)(?>' . $this->_mod_regexp . '*)\s*)'; + + // matches valid parenthesised function parameters: + // + // "text" + // $foo, $bar, "text" + // $foo|bar, "foo"|bar, $foo->bar($foo)|bar + $this->_parenth_param_regexp = '(?:\((?:\w+|' + . $this->_param_regexp . '(?:\s*,\s*(?:(?:\w+|' + . $this->_param_regexp . ')))*)?\))'; + + // matches valid function call: + // foo() + // foo_bar($foo) + // _foo_bar($foo,"bar") + // foo123($foo,$foo->bar(),"foo") + $this->_func_call_regexp = '(?:' . $this->_func_regexp . '\s*(?:' + . $this->_parenth_param_regexp . '))'; + } + + /** + * compile a resource + * + * sets $compiled_content to the compiled source + * @param string $resource_name + * @param string $source_content + * @param string $compiled_content + * @return true + */ + function _compile_file($resource_name, $source_content, &$compiled_content) + { + + if ($this->security) { + // do not allow php syntax to be executed unless specified + if ($this->php_handling == SMARTY_PHP_ALLOW && + !$this->security_settings['PHP_HANDLING']) { + $this->php_handling = SMARTY_PHP_PASSTHRU; + } + } + + $this->_load_filters(); + + $this->_current_file = $resource_name; + $this->_current_line_no = 1; + $ldq = preg_quote($this->left_delimiter, '~'); + $rdq = preg_quote($this->right_delimiter, '~'); + + // run template source through prefilter functions + if (count($this->_plugins['prefilter']) > 0) { + foreach ($this->_plugins['prefilter'] as $filter_name => $prefilter) { + if ($prefilter === false) continue; + if ($prefilter[3] || is_callable($prefilter[0])) { + $source_content = call_user_func_array($prefilter[0], + array($source_content, &$this)); + $this->_plugins['prefilter'][$filter_name][3] = true; + } else { + $this->_trigger_fatal_error("[plugin] prefilter '$filter_name' is not implemented"); + } + } + } + + /* fetch all special blocks */ + $search = "~{$ldq}\*(.*?)\*{$rdq}|{$ldq}\s*literal\s*{$rdq}(.*?){$ldq}\s*/literal\s*{$rdq}|{$ldq}\s*php\s*{$rdq}(.*?){$ldq}\s*/php\s*{$rdq}~s"; + + preg_match_all($search, $source_content, $match, PREG_SET_ORDER); + $this->_folded_blocks = $match; + reset($this->_folded_blocks); + + /* replace special blocks by "{php}" */ + $source_content = preg_replace($search.'e', "'" + . $this->_quote_replace($this->left_delimiter) . 'php' + . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'" + . $this->_quote_replace($this->right_delimiter) + . "'" + , $source_content); + + /* Gather all template tags. */ + preg_match_all("~{$ldq}\s*(.*?)\s*{$rdq}~s", $source_content, $_match); + $template_tags = $_match[1]; + /* Split content by template tags to obtain non-template content. */ + $text_blocks = preg_split("~{$ldq}.*?{$rdq}~s", $source_content); + + /* loop through text blocks */ + for ($curr_tb = 0, $for_max = count($text_blocks); $curr_tb < $for_max; $curr_tb++) { + /* match anything resembling php tags */ + if (preg_match_all('~(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\']?\s*php\s*[\"\']?)~is', $text_blocks[$curr_tb], $sp_match)) { + /* replace tags with placeholders to prevent recursive replacements */ + $sp_match[1] = array_unique($sp_match[1]); + usort($sp_match[1], '_smarty_sort_length'); + for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++) { + $text_blocks[$curr_tb] = str_replace($sp_match[1][$curr_sp],'%%%SMARTYSP'.$curr_sp.'%%%',$text_blocks[$curr_tb]); + } + /* process each one */ + for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++) { + if ($this->php_handling == SMARTY_PHP_PASSTHRU) { + /* echo php contents */ + $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', ''."\n", $text_blocks[$curr_tb]); + } else if ($this->php_handling == SMARTY_PHP_QUOTE) { + /* quote php tags */ + $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', htmlspecialchars($sp_match[1][$curr_sp]), $text_blocks[$curr_tb]); + } else if ($this->php_handling == SMARTY_PHP_REMOVE) { + /* remove php tags */ + $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '', $text_blocks[$curr_tb]); + } else { + /* SMARTY_PHP_ALLOW, but echo non php starting tags */ + $sp_match[1][$curr_sp] = preg_replace('~(<\?(?!php|=|$))~i', ''."\n", $sp_match[1][$curr_sp]); + $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', $sp_match[1][$curr_sp], $text_blocks[$curr_tb]); + } + } + } + } + + /* Compile the template tags into PHP code. */ + $compiled_tags = array(); + for ($i = 0, $for_max = count($template_tags); $i < $for_max; $i++) { + $this->_current_line_no += substr_count($text_blocks[$i], "\n"); + $compiled_tags[] = $this->_compile_tag($template_tags[$i]); + $this->_current_line_no += substr_count($template_tags[$i], "\n"); + } + if (count($this->_tag_stack)>0) { + list($_open_tag, $_line_no) = end($this->_tag_stack); + $this->_syntax_error("unclosed tag \{$_open_tag} (opened line $_line_no).", E_USER_ERROR, __FILE__, __LINE__); + return; + } + + /* Reformat $text_blocks between 'strip' and '/strip' tags, + removing spaces, tabs and newlines. */ + $strip = false; + for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) { + if ($compiled_tags[$i] == '{strip}') { + $compiled_tags[$i] = ''; + $strip = true; + /* remove leading whitespaces */ + $text_blocks[$i + 1] = ltrim($text_blocks[$i + 1]); + } + if ($strip) { + /* strip all $text_blocks before the next '/strip' */ + for ($j = $i + 1; $j < $for_max; $j++) { + /* remove leading and trailing whitespaces of each line */ + $text_blocks[$j] = preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $text_blocks[$j]); + if ($compiled_tags[$j] == '{/strip}') { + /* remove trailing whitespaces from the last text_block */ + $text_blocks[$j] = rtrim($text_blocks[$j]); + } + $text_blocks[$j] = ""\'", "\\"=>"\\\\")) . "'; ?>"; + if ($compiled_tags[$j] == '{/strip}') { + $compiled_tags[$j] = "\n"; /* slurped by php, but necessary + if a newline is following the closing strip-tag */ + $strip = false; + $i = $j; + break; + } + } + } + } + $compiled_content = ''; + + $tag_guard = '%%%SMARTYOTG' . md5(uniqid(rand(), true)) . '%%%'; + + /* Interleave the compiled contents and text blocks to get the final result. */ + for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) { + if ($compiled_tags[$i] == '') { + // tag result empty, remove first newline from following text block + $text_blocks[$i+1] = preg_replace('~^(\r\n|\r|\n)~', '', $text_blocks[$i+1]); + } + // replace legit PHP tags with placeholder + $text_blocks[$i] = str_replace('\n", $compiled_content); + $compiled_content = preg_replace("~(?\n", $compiled_content); + + // recover legit tags + $compiled_content = str_replace($tag_guard, '_cache_serial)) { + $compiled_content = "_cache_serials['".$this->_cache_include."'] = '".$this->_cache_serial."'; ?>" . $compiled_content; + } + + // run compiled template through postfilter functions + if (count($this->_plugins['postfilter']) > 0) { + foreach ($this->_plugins['postfilter'] as $filter_name => $postfilter) { + if ($postfilter === false) continue; + if ($postfilter[3] || is_callable($postfilter[0])) { + $compiled_content = call_user_func_array($postfilter[0], + array($compiled_content, &$this)); + $this->_plugins['postfilter'][$filter_name][3] = true; + } else { + $this->_trigger_fatal_error("Smarty plugin error: postfilter '$filter_name' is not implemented"); + } + } + } + + // put header at the top of the compiled template + $template_header = "_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n"; + $template_header .= " compiled from ".strtr(urlencode($resource_name), array('%2F'=>'/', '%3A'=>':'))." */ ?>\n"; + + /* Emit code to load needed plugins. */ + $this->_plugins_code = ''; + if (count($this->_plugin_info)) { + $_plugins_params = "array('plugins' => array("; + foreach ($this->_plugin_info as $plugin_type => $plugins) { + foreach ($plugins as $plugin_name => $plugin_info) { + $_plugins_params .= "array('$plugin_type', '$plugin_name', '" . strtr($plugin_info[0], array("'" => "\\'", "\\" => "\\\\")) . "', $plugin_info[1], "; + $_plugins_params .= $plugin_info[2] ? 'true),' : 'false),'; + } + } + $_plugins_params .= '))'; + $plugins_code = "\n"; + $template_header .= $plugins_code; + $this->_plugin_info = array(); + $this->_plugins_code = $plugins_code; + } + + if ($this->_init_smarty_vars) { + $template_header .= "\n"; + $this->_init_smarty_vars = false; + } + + $compiled_content = $template_header . $compiled_content; + return true; + } + + /** + * Compile a template tag + * + * @param string $template_tag + * @return string + */ + function _compile_tag($template_tag) + { + /* Matched comment. */ + if (substr($template_tag, 0, 1) == '*' && substr($template_tag, -1) == '*') + return ''; + + /* Split tag into two three parts: command, command modifiers and the arguments. */ + if(! preg_match('~^(?:(' . $this->_num_const_regexp . '|' . $this->_obj_call_regexp . '|' . $this->_var_regexp + . '|\/?' . $this->_reg_obj_regexp . '|\/?' . $this->_func_regexp . ')(' . $this->_mod_regexp . '*)) + (?:\s+(.*))?$ + ~xs', $template_tag, $match)) { + $this->_syntax_error("unrecognized tag: $template_tag", E_USER_ERROR, __FILE__, __LINE__); + } + + $tag_command = $match[1]; + $tag_modifier = isset($match[2]) ? $match[2] : null; + $tag_args = isset($match[3]) ? $match[3] : null; + + if (preg_match('~^' . $this->_num_const_regexp . '|' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '$~', $tag_command)) { + /* tag name is a variable or object */ + $_return = $this->_parse_var_props($tag_command . $tag_modifier); + return "" . $this->_additional_newline; + } + + /* If the tag name is a registered object, we process it. */ + if (preg_match('~^\/?' . $this->_reg_obj_regexp . '$~', $tag_command)) { + return $this->_compile_registered_object_tag($tag_command, $this->_parse_attrs($tag_args), $tag_modifier); + } + + switch ($tag_command) { + case 'include': + return $this->_compile_include_tag($tag_args); + + case 'include_php': + return $this->_compile_include_php_tag($tag_args); + + case 'if': + $this->_push_tag('if'); + return $this->_compile_if_tag($tag_args); + + case 'else': + list($_open_tag) = end($this->_tag_stack); + if ($_open_tag != 'if' && $_open_tag != 'elseif') + $this->_syntax_error('unexpected {else}', E_USER_ERROR, __FILE__, __LINE__); + else + $this->_push_tag('else'); + return ''; + + case 'elseif': + list($_open_tag) = end($this->_tag_stack); + if ($_open_tag != 'if' && $_open_tag != 'elseif') + $this->_syntax_error('unexpected {elseif}', E_USER_ERROR, __FILE__, __LINE__); + if ($_open_tag == 'if') + $this->_push_tag('elseif'); + return $this->_compile_if_tag($tag_args, true); + + case '/if': + $this->_pop_tag('if'); + return ''; + + case 'capture': + return $this->_compile_capture_tag(true, $tag_args); + + case '/capture': + return $this->_compile_capture_tag(false); + + case 'ldelim': + return $this->left_delimiter; + + case 'rdelim': + return $this->right_delimiter; + + case 'section': + $this->_push_tag('section'); + return $this->_compile_section_start($tag_args); + + case 'sectionelse': + $this->_push_tag('sectionelse'); + return ""; + break; + + case '/section': + $_open_tag = $this->_pop_tag('section'); + if ($_open_tag == 'sectionelse') + return ""; + else + return ""; + + case 'foreach': + $this->_push_tag('foreach'); + return $this->_compile_foreach_start($tag_args); + break; + + case 'foreachelse': + $this->_push_tag('foreachelse'); + return ""; + + case '/foreach': + $_open_tag = $this->_pop_tag('foreach'); + if ($_open_tag == 'foreachelse') + return ""; + else + return ""; + break; + + case 'strip': + case '/strip': + if (substr($tag_command, 0, 1)=='/') { + $this->_pop_tag('strip'); + if (--$this->_strip_depth==0) { /* outermost closing {/strip} */ + $this->_additional_newline = "\n"; + return '{' . $tag_command . '}'; + } + } else { + $this->_push_tag('strip'); + if ($this->_strip_depth++==0) { /* outermost opening {strip} */ + $this->_additional_newline = ""; + return '{' . $tag_command . '}'; + } + } + return ''; + + case 'php': + /* handle folded tags replaced by {php} */ + list(, $block) = each($this->_folded_blocks); + $this->_current_line_no += substr_count($block[0], "\n"); + /* the number of matched elements in the regexp in _compile_file() + determins the type of folded tag that was found */ + switch (count($block)) { + case 2: /* comment */ + return ''; + + case 3: /* literal */ + return ""\'", "\\"=>"\\\\")) . "'; ?>" . $this->_additional_newline; + + case 4: /* php */ + if ($this->security && !$this->security_settings['PHP_TAGS']) { + $this->_syntax_error("(secure mode) php tags not permitted", E_USER_WARNING, __FILE__, __LINE__); + return; + } + return ''; + } + break; + + case 'insert': + return $this->_compile_insert_tag($tag_args); + + default: + if ($this->_compile_compiler_tag($tag_command, $tag_args, $output)) { + return $output; + } else if ($this->_compile_block_tag($tag_command, $tag_args, $tag_modifier, $output)) { + return $output; + } else if ($this->_compile_custom_tag($tag_command, $tag_args, $tag_modifier, $output)) { + return $output; + } else { + $this->_syntax_error("unrecognized tag '$tag_command'", E_USER_ERROR, __FILE__, __LINE__); + } + + } + } + + + /** + * compile the custom compiler tag + * + * sets $output to the compiled custom compiler tag + * @param string $tag_command + * @param string $tag_args + * @param string $output + * @return boolean + */ + function _compile_compiler_tag($tag_command, $tag_args, &$output) + { + $found = false; + $have_function = true; + + /* + * First we check if the compiler function has already been registered + * or loaded from a plugin file. + */ + if (isset($this->_plugins['compiler'][$tag_command])) { + $found = true; + $plugin_func = $this->_plugins['compiler'][$tag_command][0]; + if (!is_callable($plugin_func)) { + $message = "compiler function '$tag_command' is not implemented"; + $have_function = false; + } + } + /* + * Otherwise we need to load plugin file and look for the function + * inside it. + */ + else if ($plugin_file = $this->_get_plugin_filepath('compiler', $tag_command)) { + $found = true; + + include_once $plugin_file; + + $plugin_func = 'smarty_compiler_' . $tag_command; + if (!is_callable($plugin_func)) { + $message = "plugin function $plugin_func() not found in $plugin_file\n"; + $have_function = false; + } else { + $this->_plugins['compiler'][$tag_command] = array($plugin_func, null, null, null, true); + } + } + + /* + * True return value means that we either found a plugin or a + * dynamically registered function. False means that we didn't and the + * compiler should now emit code to load custom function plugin for this + * tag. + */ + if ($found) { + if ($have_function) { + $output = call_user_func_array($plugin_func, array($tag_args, &$this)); + if($output != '') { + $output = '_push_cacheable_state('compiler', $tag_command) + . $output + . $this->_pop_cacheable_state('compiler', $tag_command) . ' ?>'; + } + } else { + $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__); + } + return true; + } else { + return false; + } + } + + + /** + * compile block function tag + * + * sets $output to compiled block function tag + * @param string $tag_command + * @param string $tag_args + * @param string $tag_modifier + * @param string $output + * @return boolean + */ + function _compile_block_tag($tag_command, $tag_args, $tag_modifier, &$output) + { + if (substr($tag_command, 0, 1) == '/') { + $start_tag = false; + $tag_command = substr($tag_command, 1); + } else + $start_tag = true; + + $found = false; + $have_function = true; + + /* + * First we check if the block function has already been registered + * or loaded from a plugin file. + */ + if (isset($this->_plugins['block'][$tag_command])) { + $found = true; + $plugin_func = $this->_plugins['block'][$tag_command][0]; + if (!is_callable($plugin_func)) { + $message = "block function '$tag_command' is not implemented"; + $have_function = false; + } + } + /* + * Otherwise we need to load plugin file and look for the function + * inside it. + */ + else if ($plugin_file = $this->_get_plugin_filepath('block', $tag_command)) { + $found = true; + + include_once $plugin_file; + + $plugin_func = 'smarty_block_' . $tag_command; + if (!function_exists($plugin_func)) { + $message = "plugin function $plugin_func() not found in $plugin_file\n"; + $have_function = false; + } else { + $this->_plugins['block'][$tag_command] = array($plugin_func, null, null, null, true); + + } + } + + if (!$found) { + return false; + } else if (!$have_function) { + $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__); + return true; + } + + /* + * Even though we've located the plugin function, compilation + * happens only once, so the plugin will still need to be loaded + * at runtime for future requests. + */ + $this->_add_plugin('block', $tag_command); + + if ($start_tag) + $this->_push_tag($tag_command); + else + $this->_pop_tag($tag_command); + + if ($start_tag) { + $output = '_push_cacheable_state('block', $tag_command); + $attrs = $this->_parse_attrs($tag_args); + $_cache_attrs=''; + $arg_list = $this->_compile_arg_list('block', $tag_command, $attrs, $_cache_attrs); + $output .= "$_cache_attrs\$this->_tag_stack[] = array('$tag_command', array(".implode(',', $arg_list).')); '; + $output .= '$_block_repeat=true;' . $this->_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], null, $this, $_block_repeat);'; + $output .= 'while ($_block_repeat) { ob_start(); ?>'; + } else { + $output = '_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], $_block_content, $this, $_block_repeat)'; + if ($tag_modifier != '') { + $this->_parse_modifiers($_out_tag_text, $tag_modifier); + } + $output .= '$_block_repeat=false;echo ' . $_out_tag_text . '; } '; + $output .= " array_pop(\$this->_tag_stack); " . $this->_pop_cacheable_state('block', $tag_command) . '?>'; + } + + return true; + } + + + /** + * compile custom function tag + * + * @param string $tag_command + * @param string $tag_args + * @param string $tag_modifier + * @return string + */ + function _compile_custom_tag($tag_command, $tag_args, $tag_modifier, &$output) + { + $found = false; + $have_function = true; + + /* + * First we check if the custom function has already been registered + * or loaded from a plugin file. + */ + if (isset($this->_plugins['function'][$tag_command])) { + $found = true; + $plugin_func = $this->_plugins['function'][$tag_command][0]; + if (!is_callable($plugin_func)) { + $message = "custom function '$tag_command' is not implemented"; + $have_function = false; + } + } + /* + * Otherwise we need to load plugin file and look for the function + * inside it. + */ + else if ($plugin_file = $this->_get_plugin_filepath('function', $tag_command)) { + $found = true; + + include_once $plugin_file; + + $plugin_func = 'smarty_function_' . $tag_command; + if (!function_exists($plugin_func)) { + $message = "plugin function $plugin_func() not found in $plugin_file\n"; + $have_function = false; + } else { + $this->_plugins['function'][$tag_command] = array($plugin_func, null, null, null, true); + + } + } + + if (!$found) { + return false; + } else if (!$have_function) { + $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__); + return true; + } + + /* declare plugin to be loaded on display of the template that + we compile right now */ + $this->_add_plugin('function', $tag_command); + + $_cacheable_state = $this->_push_cacheable_state('function', $tag_command); + $attrs = $this->_parse_attrs($tag_args); + $_cache_attrs = ''; + $arg_list = $this->_compile_arg_list('function', $tag_command, $attrs, $_cache_attrs); + + $output = $this->_compile_plugin_call('function', $tag_command).'(array('.implode(',', $arg_list)."), \$this)"; + if($tag_modifier != '') { + $this->_parse_modifiers($output, $tag_modifier); + } + + if($output != '') { + $output = '_pop_cacheable_state('function', $tag_command) . "?>" . $this->_additional_newline; + } + + return true; + } + + /** + * compile a registered object tag + * + * @param string $tag_command + * @param array $attrs + * @param string $tag_modifier + * @return string + */ + function _compile_registered_object_tag($tag_command, $attrs, $tag_modifier) + { + if (substr($tag_command, 0, 1) == '/') { + $start_tag = false; + $tag_command = substr($tag_command, 1); + } else { + $start_tag = true; + } + + list($object, $obj_comp) = explode('->', $tag_command); + + $arg_list = array(); + if(count($attrs)) { + $_assign_var = false; + foreach ($attrs as $arg_name => $arg_value) { + if($arg_name == 'assign') { + $_assign_var = $arg_value; + unset($attrs['assign']); + continue; + } + if (is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + $arg_list[] = "'$arg_name' => $arg_value"; + } + } + + if($this->_reg_objects[$object][2]) { + // smarty object argument format + $args = "array(".implode(',', (array)$arg_list)."), \$this"; + } else { + // traditional argument format + $args = implode(',', array_values($attrs)); + if (empty($args)) { + $args = ''; + } + } + + $prefix = ''; + $postfix = ''; + $newline = ''; + if(!is_object($this->_reg_objects[$object][0])) { + $this->_trigger_fatal_error("registered '$object' is not an object" , $this->_current_file, $this->_current_line_no, __FILE__, __LINE__); + } elseif(!empty($this->_reg_objects[$object][1]) && !in_array($obj_comp, $this->_reg_objects[$object][1])) { + $this->_trigger_fatal_error("'$obj_comp' is not a registered component of object '$object'", $this->_current_file, $this->_current_line_no, __FILE__, __LINE__); + } elseif(method_exists($this->_reg_objects[$object][0], $obj_comp)) { + // method + if(in_array($obj_comp, $this->_reg_objects[$object][3])) { + // block method + if ($start_tag) { + $prefix = "\$this->_tag_stack[] = array('$obj_comp', $args); "; + $prefix .= "\$_block_repeat=true; \$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], null, \$this, \$_block_repeat); "; + $prefix .= "while (\$_block_repeat) { ob_start();"; + $return = null; + $postfix = ''; + } else { + $prefix = "\$_obj_block_content = ob_get_contents(); ob_end_clean(); \$_block_repeat=false;"; + $return = "\$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], \$_obj_block_content, \$this, \$_block_repeat)"; + $postfix = "} array_pop(\$this->_tag_stack);"; + } + } else { + // non-block method + $return = "\$this->_reg_objects['$object'][0]->$obj_comp($args)"; + } + } else { + // property + $return = "\$this->_reg_objects['$object'][0]->$obj_comp"; + } + + if($return != null) { + if($tag_modifier != '') { + $this->_parse_modifiers($return, $tag_modifier); + } + + if(!empty($_assign_var)) { + $output = "\$this->assign('" . $this->_dequote($_assign_var) ."', $return);"; + } else { + $output = 'echo ' . $return . ';'; + $newline = $this->_additional_newline; + } + } else { + $output = ''; + } + + return '" . $newline; + } + + /** + * Compile {insert ...} tag + * + * @param string $tag_args + * @return string + */ + function _compile_insert_tag($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + $name = $this->_dequote($attrs['name']); + + if (empty($name)) { + return $this->_syntax_error("missing insert name", E_USER_ERROR, __FILE__, __LINE__); + } + + if (!preg_match('~^\w+$~', $name)) { + return $this->_syntax_error("'insert: 'name' must be an insert function name", E_USER_ERROR, __FILE__, __LINE__); + } + + if (!empty($attrs['script'])) { + $delayed_loading = true; + } else { + $delayed_loading = false; + } + + foreach ($attrs as $arg_name => $arg_value) { + if (is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + $arg_list[] = "'$arg_name' => $arg_value"; + } + + $this->_add_plugin('insert', $name, $delayed_loading); + + $_params = "array('args' => array(".implode(', ', (array)$arg_list)."))"; + + return "" . $this->_additional_newline; + } + + /** + * Compile {include ...} tag + * + * @param string $tag_args + * @return string + */ + function _compile_include_tag($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + $arg_list = array(); + + if (empty($attrs['file'])) { + $this->_syntax_error("missing 'file' attribute in include tag", E_USER_ERROR, __FILE__, __LINE__); + } + + foreach ($attrs as $arg_name => $arg_value) { + if ($arg_name == 'file') { + $include_file = $arg_value; + continue; + } else if ($arg_name == 'assign') { + $assign_var = $arg_value; + continue; + } + if (is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + $arg_list[] = "'$arg_name' => $arg_value"; + } + + $output = '_tpl_vars;\n"; + + + $_params = "array('smarty_include_tpl_file' => " . $include_file . ", 'smarty_include_vars' => array(".implode(',', (array)$arg_list)."))"; + $output .= "\$this->_smarty_include($_params);\n" . + "\$this->_tpl_vars = \$_smarty_tpl_vars;\n" . + "unset(\$_smarty_tpl_vars);\n"; + + if (isset($assign_var)) { + $output .= "\$this->assign(" . $assign_var . ", ob_get_contents()); ob_end_clean();\n"; + } + + $output .= ' ?>'; + + return $output; + + } + + /** + * Compile {include ...} tag + * + * @param string $tag_args + * @return string + */ + function _compile_include_php_tag($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + + if (empty($attrs['file'])) { + $this->_syntax_error("missing 'file' attribute in include_php tag", E_USER_ERROR, __FILE__, __LINE__); + } + + $assign_var = (empty($attrs['assign'])) ? '' : $this->_dequote($attrs['assign']); + $once_var = (empty($attrs['once']) || $attrs['once']=='false') ? 'false' : 'true'; + + $arg_list = array(); + foreach($attrs as $arg_name => $arg_value) { + if($arg_name != 'file' AND $arg_name != 'once' AND $arg_name != 'assign') { + if(is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + $arg_list[] = "'$arg_name' => $arg_value"; + } + } + + $_params = "array('smarty_file' => " . $attrs['file'] . ", 'smarty_assign' => '$assign_var', 'smarty_once' => $once_var, 'smarty_include_vars' => array(".implode(',', $arg_list)."))"; + + return "" . $this->_additional_newline; + } + + + /** + * Compile {section ...} tag + * + * @param string $tag_args + * @return string + */ + function _compile_section_start($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + $arg_list = array(); + + $output = '_syntax_error("missing section name", E_USER_ERROR, __FILE__, __LINE__); + } + + $output .= "unset(\$this->_sections[$section_name]);\n"; + $section_props = "\$this->_sections[$section_name]"; + + foreach ($attrs as $attr_name => $attr_value) { + switch ($attr_name) { + case 'loop': + $output .= "{$section_props}['loop'] = is_array(\$_loop=$attr_value) ? count(\$_loop) : max(0, (int)\$_loop); unset(\$_loop);\n"; + break; + + case 'show': + if (is_bool($attr_value)) + $show_attr_value = $attr_value ? 'true' : 'false'; + else + $show_attr_value = "(bool)$attr_value"; + $output .= "{$section_props}['show'] = $show_attr_value;\n"; + break; + + case 'name': + $output .= "{$section_props}['$attr_name'] = $attr_value;\n"; + break; + + case 'max': + case 'start': + $output .= "{$section_props}['$attr_name'] = (int)$attr_value;\n"; + break; + + case 'step': + $output .= "{$section_props}['$attr_name'] = ((int)$attr_value) == 0 ? 1 : (int)$attr_value;\n"; + break; + + default: + $this->_syntax_error("unknown section attribute - '$attr_name'", E_USER_ERROR, __FILE__, __LINE__); + break; + } + } + + if (!isset($attrs['show'])) + $output .= "{$section_props}['show'] = true;\n"; + + if (!isset($attrs['loop'])) + $output .= "{$section_props}['loop'] = 1;\n"; + + if (!isset($attrs['max'])) + $output .= "{$section_props}['max'] = {$section_props}['loop'];\n"; + else + $output .= "if ({$section_props}['max'] < 0)\n" . + " {$section_props}['max'] = {$section_props}['loop'];\n"; + + if (!isset($attrs['step'])) + $output .= "{$section_props}['step'] = 1;\n"; + + if (!isset($attrs['start'])) + $output .= "{$section_props}['start'] = {$section_props}['step'] > 0 ? 0 : {$section_props}['loop']-1;\n"; + else { + $output .= "if ({$section_props}['start'] < 0)\n" . + " {$section_props}['start'] = max({$section_props}['step'] > 0 ? 0 : -1, {$section_props}['loop'] + {$section_props}['start']);\n" . + "else\n" . + " {$section_props}['start'] = min({$section_props}['start'], {$section_props}['step'] > 0 ? {$section_props}['loop'] : {$section_props}['loop']-1);\n"; + } + + $output .= "if ({$section_props}['show']) {\n"; + if (!isset($attrs['start']) && !isset($attrs['step']) && !isset($attrs['max'])) { + $output .= " {$section_props}['total'] = {$section_props}['loop'];\n"; + } else { + $output .= " {$section_props}['total'] = min(ceil(({$section_props}['step'] > 0 ? {$section_props}['loop'] - {$section_props}['start'] : {$section_props}['start']+1)/abs({$section_props}['step'])), {$section_props}['max']);\n"; + } + $output .= " if ({$section_props}['total'] == 0)\n" . + " {$section_props}['show'] = false;\n" . + "} else\n" . + " {$section_props}['total'] = 0;\n"; + + $output .= "if ({$section_props}['show']):\n"; + $output .= " + for ({$section_props}['index'] = {$section_props}['start'], {$section_props}['iteration'] = 1; + {$section_props}['iteration'] <= {$section_props}['total']; + {$section_props}['index'] += {$section_props}['step'], {$section_props}['iteration']++):\n"; + $output .= "{$section_props}['rownum'] = {$section_props}['iteration'];\n"; + $output .= "{$section_props}['index_prev'] = {$section_props}['index'] - {$section_props}['step'];\n"; + $output .= "{$section_props}['index_next'] = {$section_props}['index'] + {$section_props}['step'];\n"; + $output .= "{$section_props}['first'] = ({$section_props}['iteration'] == 1);\n"; + $output .= "{$section_props}['last'] = ({$section_props}['iteration'] == {$section_props}['total']);\n"; + + $output .= "?>"; + + return $output; + } + + + /** + * Compile {foreach ...} tag. + * + * @param string $tag_args + * @return string + */ + function _compile_foreach_start($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + $arg_list = array(); + + if (empty($attrs['from'])) { + return $this->_syntax_error("foreach: missing 'from' attribute", E_USER_ERROR, __FILE__, __LINE__); + } + $from = $attrs['from']; + + if (empty($attrs['item'])) { + return $this->_syntax_error("foreach: missing 'item' attribute", E_USER_ERROR, __FILE__, __LINE__); + } + $item = $this->_dequote($attrs['item']); + if (!preg_match('~^\w+$~', $item)) { + return $this->_syntax_error("foreach: 'item' must be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__); + } + + if (isset($attrs['key'])) { + $key = $this->_dequote($attrs['key']); + if (!preg_match('~^\w+$~', $key)) { + return $this->_syntax_error("foreach: 'key' must to be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__); + } + $key_part = "\$this->_tpl_vars['$key'] => "; + } else { + $key = null; + $key_part = ''; + } + + if (isset($attrs['name'])) { + $name = $attrs['name']; + } else { + $name = null; + } + + $output = '_foreach[$name]"; + $output .= "{$foreach_props} = array('total' => count(\$_from), 'iteration' => 0);\n"; + $output .= "if ({$foreach_props}['total'] > 0):\n"; + $output .= " foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n"; + $output .= " {$foreach_props}['iteration']++;\n"; + } else { + $output .= "if (count(\$_from)):\n"; + $output .= " foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n"; + } + $output .= '?>'; + + return $output; + } + + + /** + * Compile {capture} .. {/capture} tags + * + * @param boolean $start true if this is the {capture} tag + * @param string $tag_args + * @return string + */ + + function _compile_capture_tag($start, $tag_args = '') + { + $attrs = $this->_parse_attrs($tag_args); + + if ($start) { + $buffer = isset($attrs['name']) ? $attrs['name'] : "'default'"; + $assign = isset($attrs['assign']) ? $attrs['assign'] : null; + $append = isset($attrs['append']) ? $attrs['append'] : null; + + $output = ""; + $this->_capture_stack[] = array($buffer, $assign, $append); + } else { + list($buffer, $assign, $append) = array_pop($this->_capture_stack); + $output = "_smarty_vars['capture'][$buffer] = ob_get_contents(); "; + if (isset($assign)) { + $output .= " \$this->assign($assign, ob_get_contents());"; + } + if (isset($append)) { + $output .= " \$this->append($append, ob_get_contents());"; + } + $output .= "ob_end_clean(); ?>"; + } + + return $output; + } + + /** + * Compile {if ...} tag + * + * @param string $tag_args + * @param boolean $elseif if true, uses elseif instead of if + * @return string + */ + function _compile_if_tag($tag_args, $elseif = false) + { + + /* Tokenize args for 'if' tag. */ + preg_match_all('~(?> + ' . $this->_obj_call_regexp . '(?:' . $this->_mod_regexp . '*)? | # valid object call + ' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)? | # var or quoted string + \-?0[xX][0-9a-fA-F]+|\-?\d+(?:\.\d+)?|\.\d+|!==|===|==|!=|<>|<<|>>|<=|>=|\&\&|\|\||\(|\)|,|\!|\^|=|\&|\~|<|>|\||\%|\+|\-|\/|\*|\@ | # valid non-word token + \b\w+\b | # valid word token + \S+ # anything else + )~x', $tag_args, $match); + + $tokens = $match[0]; + + if(empty($tokens)) { + $_error_msg = $elseif ? "'elseif'" : "'if'"; + $_error_msg .= ' statement requires arguments'; + $this->_syntax_error($_error_msg, E_USER_ERROR, __FILE__, __LINE__); + } + + + // make sure we have balanced parenthesis + $token_count = array_count_values($tokens); + if(isset($token_count['(']) && $token_count['('] != $token_count[')']) { + $this->_syntax_error("unbalanced parenthesis in if statement", E_USER_ERROR, __FILE__, __LINE__); + } + + $is_arg_stack = array(); + + for ($i = 0; $i < count($tokens); $i++) { + + $token = &$tokens[$i]; + + switch (strtolower($token)) { + case '!': + case '%': + case '!==': + case '==': + case '===': + case '>': + case '<': + case '!=': + case '<>': + case '<<': + case '>>': + case '<=': + case '>=': + case '&&': + case '||': + case '|': + case '^': + case '&': + case '~': + case ')': + case ',': + case '+': + case '-': + case '*': + case '/': + case '@': + break; + + case 'eq': + $token = '=='; + break; + + case 'ne': + case 'neq': + $token = '!='; + break; + + case 'lt': + $token = '<'; + break; + + case 'le': + case 'lte': + $token = '<='; + break; + + case 'gt': + $token = '>'; + break; + + case 'ge': + case 'gte': + $token = '>='; + break; + + case 'and': + $token = '&&'; + break; + + case 'or': + $token = '||'; + break; + + case 'not': + $token = '!'; + break; + + case 'mod': + $token = '%'; + break; + + case '(': + array_push($is_arg_stack, $i); + break; + + case 'is': + /* If last token was a ')', we operate on the parenthesized + expression. The start of the expression is on the stack. + Otherwise, we operate on the last encountered token. */ + if ($tokens[$i-1] == ')') { + $is_arg_start = array_pop($is_arg_stack); + if ($is_arg_start != 0) { + if (preg_match('~^' . $this->_func_regexp . '$~', $tokens[$is_arg_start-1])) { + $is_arg_start--; + } + } + } else + $is_arg_start = $i-1; + /* Construct the argument for 'is' expression, so it knows + what to operate on. */ + $is_arg = implode(' ', array_slice($tokens, $is_arg_start, $i - $is_arg_start)); + + /* Pass all tokens from next one until the end to the + 'is' expression parsing function. The function will + return modified tokens, where the first one is the result + of the 'is' expression and the rest are the tokens it + didn't touch. */ + $new_tokens = $this->_parse_is_expr($is_arg, array_slice($tokens, $i+1)); + + /* Replace the old tokens with the new ones. */ + array_splice($tokens, $is_arg_start, count($tokens), $new_tokens); + + /* Adjust argument start so that it won't change from the + current position for the next iteration. */ + $i = $is_arg_start; + break; + + default: + if(preg_match('~^' . $this->_func_regexp . '$~', $token) ) { + // function call + if($this->security && + !in_array($token, $this->security_settings['IF_FUNCS'])) { + $this->_syntax_error("(secure mode) '$token' not allowed in if statement", E_USER_ERROR, __FILE__, __LINE__); + } + } elseif(preg_match('~^' . $this->_var_regexp . '$~', $token) && (strpos('+-*/^%&|', substr($token, -1)) === false) && isset($tokens[$i+1]) && $tokens[$i+1] == '(') { + // variable function call + $this->_syntax_error("variable function call '$token' not allowed in if statement", E_USER_ERROR, __FILE__, __LINE__); + } elseif(preg_match('~^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)$~', $token)) { + // object or variable + $token = $this->_parse_var_props($token); + } elseif(is_numeric($token)) { + // number, skip it + } else { + $this->_syntax_error("unidentified token '$token'", E_USER_ERROR, __FILE__, __LINE__); + } + break; + } + } + + if ($elseif) + return ''; + else + return ''; + } + + + function _compile_arg_list($type, $name, $attrs, &$cache_code) { + $arg_list = array(); + + if (isset($type) && isset($name) + && isset($this->_plugins[$type]) + && isset($this->_plugins[$type][$name]) + && empty($this->_plugins[$type][$name][4]) + && is_array($this->_plugins[$type][$name][5]) + ) { + /* we have a list of parameters that should be cached */ + $_cache_attrs = $this->_plugins[$type][$name][5]; + $_count = $this->_cache_attrs_count++; + $cache_code = "\$_cache_attrs =& \$this->_smarty_cache_attrs('$this->_cache_serial','$_count');"; + + } else { + /* no parameters are cached */ + $_cache_attrs = null; + } + + foreach ($attrs as $arg_name => $arg_value) { + if (is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + if (is_null($arg_value)) + $arg_value = 'null'; + if ($_cache_attrs && in_array($arg_name, $_cache_attrs)) { + $arg_list[] = "'$arg_name' => (\$this->_cache_including) ? \$_cache_attrs['$arg_name'] : (\$_cache_attrs['$arg_name']=$arg_value)"; + } else { + $arg_list[] = "'$arg_name' => $arg_value"; + } + } + return $arg_list; + } + + /** + * Parse is expression + * + * @param string $is_arg + * @param array $tokens + * @return array + */ + function _parse_is_expr($is_arg, $tokens) + { + $expr_end = 0; + $negate_expr = false; + + if (($first_token = array_shift($tokens)) == 'not') { + $negate_expr = true; + $expr_type = array_shift($tokens); + } else + $expr_type = $first_token; + + switch ($expr_type) { + case 'even': + if (isset($tokens[$expr_end]) && $tokens[$expr_end] == 'by') { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "!(1 & ($is_arg / " . $this->_parse_var_props($expr_arg) . "))"; + } else + $expr = "!(1 & $is_arg)"; + break; + + case 'odd': + if (isset($tokens[$expr_end]) && $tokens[$expr_end] == 'by') { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "(1 & ($is_arg / " . $this->_parse_var_props($expr_arg) . "))"; + } else + $expr = "(1 & $is_arg)"; + break; + + case 'div': + if (@$tokens[$expr_end] == 'by') { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "!($is_arg % " . $this->_parse_var_props($expr_arg) . ")"; + } else { + $this->_syntax_error("expecting 'by' after 'div'", E_USER_ERROR, __FILE__, __LINE__); + } + break; + + default: + $this->_syntax_error("unknown 'is' expression - '$expr_type'", E_USER_ERROR, __FILE__, __LINE__); + break; + } + + if ($negate_expr) { + $expr = "!($expr)"; + } + + array_splice($tokens, 0, $expr_end, $expr); + + return $tokens; + } + + + /** + * Parse attribute string + * + * @param string $tag_args + * @return array + */ + function _parse_attrs($tag_args) + { + + /* Tokenize tag attributes. */ + preg_match_all('~(?:' . $this->_obj_call_regexp . '|' . $this->_qstr_regexp . ' | (?>[^"\'=\s]+) + )+ | + [=] + ~x', $tag_args, $match); + $tokens = $match[0]; + + $attrs = array(); + /* Parse state: + 0 - expecting attribute name + 1 - expecting '=' + 2 - expecting attribute value (not '=') */ + $state = 0; + + foreach ($tokens as $token) { + switch ($state) { + case 0: + /* If the token is a valid identifier, we set attribute name + and go to state 1. */ + if (preg_match('~^\w+$~', $token)) { + $attr_name = $token; + $state = 1; + } else + $this->_syntax_error("invalid attribute name: '$token'", E_USER_ERROR, __FILE__, __LINE__); + break; + + case 1: + /* If the token is '=', then we go to state 2. */ + if ($token == '=') { + $state = 2; + } else + $this->_syntax_error("expecting '=' after attribute name '$last_token'", E_USER_ERROR, __FILE__, __LINE__); + break; + + case 2: + /* If token is not '=', we set the attribute value and go to + state 0. */ + if ($token != '=') { + /* We booleanize the token if it's a non-quoted possible + boolean value. */ + if (preg_match('~^(on|yes|true)$~', $token)) { + $token = 'true'; + } else if (preg_match('~^(off|no|false)$~', $token)) { + $token = 'false'; + } else if ($token == 'null') { + $token = 'null'; + } else if (preg_match('~^' . $this->_num_const_regexp . '|0[xX][0-9a-fA-F]+$~', $token)) { + /* treat integer literally */ + } else if (!preg_match('~^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . ')*$~', $token)) { + /* treat as a string, double-quote it escaping quotes */ + $token = '"'.addslashes($token).'"'; + } + + $attrs[$attr_name] = $token; + $state = 0; + } else + $this->_syntax_error("'=' cannot be an attribute value", E_USER_ERROR, __FILE__, __LINE__); + break; + } + $last_token = $token; + } + + if($state != 0) { + if($state == 1) { + $this->_syntax_error("expecting '=' after attribute name '$last_token'", E_USER_ERROR, __FILE__, __LINE__); + } else { + $this->_syntax_error("missing attribute value", E_USER_ERROR, __FILE__, __LINE__); + } + } + + $this->_parse_vars_props($attrs); + + return $attrs; + } + + /** + * compile multiple variables and section properties tokens into + * PHP code + * + * @param array $tokens + */ + function _parse_vars_props(&$tokens) + { + foreach($tokens as $key => $val) { + $tokens[$key] = $this->_parse_var_props($val); + } + } + + /** + * compile single variable and section properties token into + * PHP code + * + * @param string $val + * @param string $tag_attrs + * @return string + */ + function _parse_var_props($val) + { + $val = trim($val); + + if(preg_match('~^(' . $this->_obj_call_regexp . '|' . $this->_dvar_regexp . ')(' . $this->_mod_regexp . '*)$~', $val, $match)) { + // $ variable or object + $return = $this->_parse_var($match[1]); + $modifiers = $match[2]; + if (!empty($this->default_modifiers) && !preg_match('~(^|\|)smarty:nodefaults($|\|)~',$modifiers)) { + $_default_mod_string = implode('|',(array)$this->default_modifiers); + $modifiers = empty($modifiers) ? $_default_mod_string : $_default_mod_string . '|' . $modifiers; + } + $this->_parse_modifiers($return, $modifiers); + return $return; + } elseif (preg_match('~^' . $this->_db_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // double quoted text + preg_match('~^(' . $this->_db_qstr_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match); + $return = $this->_expand_quoted_text($match[1]); + if($match[2] != '') { + $this->_parse_modifiers($return, $match[2]); + } + return $return; + } + elseif(preg_match('~^' . $this->_num_const_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // numerical constant + preg_match('~^(' . $this->_num_const_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match); + if($match[2] != '') { + $this->_parse_modifiers($match[1], $match[2]); + return $match[1]; + } + } + elseif(preg_match('~^' . $this->_si_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // single quoted text + preg_match('~^(' . $this->_si_qstr_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match); + if($match[2] != '') { + $this->_parse_modifiers($match[1], $match[2]); + return $match[1]; + } + } + elseif(preg_match('~^' . $this->_cvar_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // config var + return $this->_parse_conf_var($val); + } + elseif(preg_match('~^' . $this->_svar_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // section var + return $this->_parse_section_prop($val); + } + elseif(!in_array($val, $this->_permitted_tokens) && !is_numeric($val)) { + // literal string + return $this->_expand_quoted_text('"' . strtr($val, array('\\' => '\\\\', '"' => '\\"')) .'"'); + } + return $val; + } + + /** + * expand quoted text with embedded variables + * + * @param string $var_expr + * @return string + */ + function _expand_quoted_text($var_expr) + { + // if contains unescaped $, expand it + if(preg_match_all('~(?:\`(?_dvar_guts_regexp . '(?:' . $this->_obj_ext_regexp . ')*\`)|(?:(?_parse_var(str_replace('`','',$_var)) . ')."'; + } + $var_expr = strtr($var_expr, $_replace); + $_return = preg_replace('~\.""|(?_dvar_math_regexp.'|'.$this->_qstr_regexp.')~', $var_expr, -1, PREG_SPLIT_DELIM_CAPTURE); + + if(count($_math_vars) > 1) { + $_first_var = ""; + $_complete_var = ""; + $_output = ""; + // simple check if there is any math, to stop recursion (due to modifiers with "xx % yy" as parameter) + foreach($_math_vars as $_k => $_math_var) { + $_math_var = $_math_vars[$_k]; + + if(!empty($_math_var) || is_numeric($_math_var)) { + // hit a math operator, so process the stuff which came before it + if(preg_match('~^' . $this->_dvar_math_regexp . '$~', $_math_var)) { + $_has_math = true; + if(!empty($_complete_var) || is_numeric($_complete_var)) { + $_output .= $this->_parse_var($_complete_var); + } + + // just output the math operator to php + $_output .= $_math_var; + + if(empty($_first_var)) + $_first_var = $_complete_var; + + $_complete_var = ""; + } else { + $_complete_var .= $_math_var; + } + } + } + if($_has_math) { + if(!empty($_complete_var) || is_numeric($_complete_var)) + $_output .= $this->_parse_var($_complete_var); + + // get the modifiers working (only the last var from math + modifier is left) + $var_expr = $_complete_var; + } + } + + // prevent cutting of first digit in the number (we _definitly_ got a number if the first char is a digit) + if(is_numeric(substr($var_expr, 0, 1))) + $_var_ref = $var_expr; + else + $_var_ref = substr($var_expr, 1); + + if(!$_has_math) { + + // get [foo] and .foo and ->foo and (...) pieces + preg_match_all('~(?:^\w+)|' . $this->_obj_params_regexp . '|(?:' . $this->_var_bracket_regexp . ')|->\$?\w+|\.\$?\w+|\S+~', $_var_ref, $match); + + $_indexes = $match[0]; + $_var_name = array_shift($_indexes); + + /* Handle $smarty.* variable references as a special case. */ + if ($_var_name == 'smarty') { + /* + * If the reference could be compiled, use the compiled output; + * otherwise, fall back on the $smarty variable generated at + * run-time. + */ + if (($smarty_ref = $this->_compile_smarty_ref($_indexes)) !== null) { + $_output = $smarty_ref; + } else { + $_var_name = substr(array_shift($_indexes), 1); + $_output = "\$this->_smarty_vars['$_var_name']"; + } + } elseif(is_numeric($_var_name) && is_numeric(substr($var_expr, 0, 1))) { + // because . is the operator for accessing arrays thru inidizes we need to put it together again for floating point numbers + if(count($_indexes) > 0) + { + $_var_name .= implode("", $_indexes); + $_indexes = array(); + } + $_output = $_var_name; + } else { + $_output = "\$this->_tpl_vars['$_var_name']"; + } + + foreach ($_indexes as $_index) { + if (substr($_index, 0, 1) == '[') { + $_index = substr($_index, 1, -1); + if (is_numeric($_index)) { + $_output .= "[$_index]"; + } elseif (substr($_index, 0, 1) == '$') { + if (strpos($_index, '.') !== false) { + $_output .= '[' . $this->_parse_var($_index) . ']'; + } else { + $_output .= "[\$this->_tpl_vars['" . substr($_index, 1) . "']]"; + } + } else { + $_var_parts = explode('.', $_index); + $_var_section = $_var_parts[0]; + $_var_section_prop = isset($_var_parts[1]) ? $_var_parts[1] : 'index'; + $_output .= "[\$this->_sections['$_var_section']['$_var_section_prop']]"; + } + } else if (substr($_index, 0, 1) == '.') { + if (substr($_index, 1, 1) == '$') + $_output .= "[\$this->_tpl_vars['" . substr($_index, 2) . "']]"; + else + $_output .= "['" . substr($_index, 1) . "']"; + } else if (substr($_index,0,2) == '->') { + if(substr($_index,2,2) == '__') { + $this->_syntax_error('call to internal object members is not allowed', E_USER_ERROR, __FILE__, __LINE__); + } elseif($this->security && substr($_index, 2, 1) == '_') { + $this->_syntax_error('(secure) call to private object member is not allowed', E_USER_ERROR, __FILE__, __LINE__); + } elseif (substr($_index, 2, 1) == '$') { + if ($this->security) { + $this->_syntax_error('(secure) call to dynamic object member is not allowed', E_USER_ERROR, __FILE__, __LINE__); + } else { + $_output .= '->{(($_var=$this->_tpl_vars[\''.substr($_index,3).'\']) && substr($_var,0,2)!=\'__\') ? $_var : $this->trigger_error("cannot access property \\"$_var\\"")}'; + } + } else { + if ($this->_phpversion < 5) { + $_has_php4_method_chaining = true; + $_output .= "; \$_foo = \$_foo"; + } + $_output .= $_index; + } + } elseif (substr($_index, 0, 1) == '(') { + $_index = $this->_parse_parenth_args($_index); + $_output .= $_index; + } else { + $_output .= $_index; + } + } + } + + if ($_has_php4_method_chaining) { + $_tmp = str_replace("'","\'",'$_foo = '.$_output.'; return $_foo;'); + return "eval('".$_tmp."')"; + } else { + return $_output; + } + } + + /** + * parse arguments in function call parenthesis + * + * @param string $parenth_args + * @return string + */ + function _parse_parenth_args($parenth_args) + { + preg_match_all('~' . $this->_param_regexp . '~',$parenth_args, $match); + $orig_vals = $match = $match[0]; + $this->_parse_vars_props($match); + $replace = array(); + for ($i = 0, $count = count($match); $i < $count; $i++) { + $replace[$orig_vals[$i]] = $match[$i]; + } + return strtr($parenth_args, $replace); + } + + /** + * parse configuration variable expression into PHP code + * + * @param string $conf_var_expr + */ + function _parse_conf_var($conf_var_expr) + { + $parts = explode('|', $conf_var_expr, 2); + $var_ref = $parts[0]; + $modifiers = isset($parts[1]) ? $parts[1] : ''; + + $var_name = substr($var_ref, 1, -1); + + $output = "\$this->_config[0]['vars']['$var_name']"; + + $this->_parse_modifiers($output, $modifiers); + + return $output; + } + + /** + * parse section property expression into PHP code + * + * @param string $section_prop_expr + * @return string + */ + function _parse_section_prop($section_prop_expr) + { + $parts = explode('|', $section_prop_expr, 2); + $var_ref = $parts[0]; + $modifiers = isset($parts[1]) ? $parts[1] : ''; + + preg_match('!%(\w+)\.(\w+)%!', $var_ref, $match); + $section_name = $match[1]; + $prop_name = $match[2]; + + $output = "\$this->_sections['$section_name']['$prop_name']"; + + $this->_parse_modifiers($output, $modifiers); + + return $output; + } + + + /** + * parse modifier chain into PHP code + * + * sets $output to parsed modified chain + * @param string $output + * @param string $modifier_string + */ + function _parse_modifiers(&$output, $modifier_string) + { + preg_match_all('~\|(@?\w+)((?>:(?:'. $this->_qstr_regexp . '|[^|]+))*)~', '|' . $modifier_string, $_match); + list(, $_modifiers, $modifier_arg_strings) = $_match; + + for ($_i = 0, $_for_max = count($_modifiers); $_i < $_for_max; $_i++) { + $_modifier_name = $_modifiers[$_i]; + + if($_modifier_name == 'smarty') { + // skip smarty modifier + continue; + } + + preg_match_all('~:(' . $this->_qstr_regexp . '|[^:]+)~', $modifier_arg_strings[$_i], $_match); + $_modifier_args = $_match[1]; + + if (substr($_modifier_name, 0, 1) == '@') { + $_map_array = false; + $_modifier_name = substr($_modifier_name, 1); + } else { + $_map_array = true; + } + + if (empty($this->_plugins['modifier'][$_modifier_name]) + && !$this->_get_plugin_filepath('modifier', $_modifier_name) + && function_exists($_modifier_name)) { + if ($this->security && !in_array($_modifier_name, $this->security_settings['MODIFIER_FUNCS'])) { + $this->_trigger_fatal_error("[plugin] (secure mode) modifier '$_modifier_name' is not allowed" , $this->_current_file, $this->_current_line_no, __FILE__, __LINE__); + } else { + $this->_plugins['modifier'][$_modifier_name] = array($_modifier_name, null, null, false); + } + } + $this->_add_plugin('modifier', $_modifier_name); + + $this->_parse_vars_props($_modifier_args); + + if($_modifier_name == 'default') { + // supress notifications of default modifier vars and args + if(substr($output, 0, 1) == '$') { + $output = '@' . $output; + } + if(isset($_modifier_args[0]) && substr($_modifier_args[0], 0, 1) == '$') { + $_modifier_args[0] = '@' . $_modifier_args[0]; + } + } + if (count($_modifier_args) > 0) + $_modifier_args = ', '.implode(', ', $_modifier_args); + else + $_modifier_args = ''; + + if ($_map_array) { + $output = "((is_array(\$_tmp=$output)) ? \$this->_run_mod_handler('$_modifier_name', true, \$_tmp$_modifier_args) : " . $this->_compile_plugin_call('modifier', $_modifier_name) . "(\$_tmp$_modifier_args))"; + + } else { + + $output = $this->_compile_plugin_call('modifier', $_modifier_name)."($output$_modifier_args)"; + + } + } + } + + + /** + * add plugin + * + * @param string $type + * @param string $name + * @param boolean? $delayed_loading + */ + function _add_plugin($type, $name, $delayed_loading = null) + { + if (!isset($this->_plugin_info[$type])) { + $this->_plugin_info[$type] = array(); + } + if (!isset($this->_plugin_info[$type][$name])) { + $this->_plugin_info[$type][$name] = array($this->_current_file, + $this->_current_line_no, + $delayed_loading); + } + } + + + /** + * Compiles references of type $smarty.foo + * + * @param string $indexes + * @return string + */ + function _compile_smarty_ref(&$indexes) + { + /* Extract the reference name. */ + $_ref = substr($indexes[0], 1); + foreach($indexes as $_index_no=>$_index) { + if (substr($_index, 0, 1) != '.' && $_index_no<2 || !preg_match('~^(\.|\[|->)~', $_index)) { + $this->_syntax_error('$smarty' . implode('', array_slice($indexes, 0, 2)) . ' is an invalid reference', E_USER_ERROR, __FILE__, __LINE__); + } + } + + switch ($_ref) { + case 'now': + $compiled_ref = 'time()'; + $_max_index = 1; + break; + + case 'foreach': + array_shift($indexes); + $_var = $this->_parse_var_props(substr($indexes[0], 1)); + $_propname = substr($indexes[1], 1); + $_max_index = 1; + switch ($_propname) { + case 'index': + array_shift($indexes); + $compiled_ref = "(\$this->_foreach[$_var]['iteration']-1)"; + break; + + case 'first': + array_shift($indexes); + $compiled_ref = "(\$this->_foreach[$_var]['iteration'] <= 1)"; + break; + + case 'last': + array_shift($indexes); + $compiled_ref = "(\$this->_foreach[$_var]['iteration'] == \$this->_foreach[$_var]['total'])"; + break; + + case 'show': + array_shift($indexes); + $compiled_ref = "(\$this->_foreach[$_var]['total'] > 0)"; + break; + + default: + unset($_max_index); + $compiled_ref = "\$this->_foreach[$_var]"; + } + break; + + case 'section': + array_shift($indexes); + $_var = $this->_parse_var_props(substr($indexes[0], 1)); + $compiled_ref = "\$this->_sections[$_var]"; + break; + + case 'get': + $compiled_ref = ($this->request_use_auto_globals) ? '$_GET' : "\$GLOBALS['HTTP_GET_VARS']"; + break; + + case 'post': + $compiled_ref = ($this->request_use_auto_globals) ? '$_POST' : "\$GLOBALS['HTTP_POST_VARS']"; + break; + + case 'cookies': + $compiled_ref = ($this->request_use_auto_globals) ? '$_COOKIE' : "\$GLOBALS['HTTP_COOKIE_VARS']"; + break; + + case 'env': + $compiled_ref = ($this->request_use_auto_globals) ? '$_ENV' : "\$GLOBALS['HTTP_ENV_VARS']"; + break; + + case 'server': + $compiled_ref = ($this->request_use_auto_globals) ? '$_SERVER' : "\$GLOBALS['HTTP_SERVER_VARS']"; + break; + + case 'session': + $compiled_ref = ($this->request_use_auto_globals) ? '$_SESSION' : "\$GLOBALS['HTTP_SESSION_VARS']"; + break; + + /* + * These cases are handled either at run-time or elsewhere in the + * compiler. + */ + case 'request': + if ($this->request_use_auto_globals) { + $compiled_ref = '$_REQUEST'; + break; + } else { + $this->_init_smarty_vars = true; + } + return null; + + case 'capture': + return null; + + case 'template': + $compiled_ref = "'$this->_current_file'"; + $_max_index = 1; + break; + + case 'version': + $compiled_ref = "'$this->_version'"; + $_max_index = 1; + break; + + case 'const': + if ($this->security && !$this->security_settings['ALLOW_CONSTANTS']) { + $this->_syntax_error("(secure mode) constants not permitted", + E_USER_WARNING, __FILE__, __LINE__); + return; + } + array_shift($indexes); + if (preg_match('!^\.\w+$!', $indexes[0])) { + $compiled_ref = '@' . substr($indexes[0], 1); + } else { + $_val = $this->_parse_var_props(substr($indexes[0], 1)); + $compiled_ref = '@constant(' . $_val . ')'; + } + $_max_index = 1; + break; + + case 'config': + $compiled_ref = "\$this->_config[0]['vars']"; + $_max_index = 3; + break; + + case 'ldelim': + $compiled_ref = "'$this->left_delimiter'"; + break; + + case 'rdelim': + $compiled_ref = "'$this->right_delimiter'"; + break; + + default: + $this->_syntax_error('$smarty.' . $_ref . ' is an unknown reference', E_USER_ERROR, __FILE__, __LINE__); + break; + } + + if (isset($_max_index) && count($indexes) > $_max_index) { + $this->_syntax_error('$smarty' . implode('', $indexes) .' is an invalid reference', E_USER_ERROR, __FILE__, __LINE__); + } + + array_shift($indexes); + return $compiled_ref; + } + + /** + * compiles call to plugin of type $type with name $name + * returns a string containing the function-name or method call + * without the paramter-list that would have follow to make the + * call valid php-syntax + * + * @param string $type + * @param string $name + * @return string + */ + function _compile_plugin_call($type, $name) { + if (isset($this->_plugins[$type][$name])) { + /* plugin loaded */ + if (is_array($this->_plugins[$type][$name][0])) { + return ((is_object($this->_plugins[$type][$name][0][0])) ? + "\$this->_plugins['$type']['$name'][0][0]->" /* method callback */ + : (string)($this->_plugins[$type][$name][0][0]).'::' /* class callback */ + ). $this->_plugins[$type][$name][0][1]; + + } else { + /* function callback */ + return $this->_plugins[$type][$name][0]; + + } + } else { + /* plugin not loaded -> auto-loadable-plugin */ + return 'smarty_'.$type.'_'.$name; + + } + } + + /** + * load pre- and post-filters + */ + function _load_filters() + { + if (count($this->_plugins['prefilter']) > 0) { + foreach ($this->_plugins['prefilter'] as $filter_name => $prefilter) { + if ($prefilter === false) { + unset($this->_plugins['prefilter'][$filter_name]); + $_params = array('plugins' => array(array('prefilter', $filter_name, null, null, false))); + require_once(SMARTY_CORE_DIR . 'core.load_plugins.php'); + smarty_core_load_plugins($_params, $this); + } + } + } + if (count($this->_plugins['postfilter']) > 0) { + foreach ($this->_plugins['postfilter'] as $filter_name => $postfilter) { + if ($postfilter === false) { + unset($this->_plugins['postfilter'][$filter_name]); + $_params = array('plugins' => array(array('postfilter', $filter_name, null, null, false))); + require_once(SMARTY_CORE_DIR . 'core.load_plugins.php'); + smarty_core_load_plugins($_params, $this); + } + } + } + } + + + /** + * Quote subpattern references + * + * @param string $string + * @return string + */ + function _quote_replace($string) + { + return strtr($string, array('\\' => '\\\\', '$' => '\\$')); + } + + /** + * display Smarty syntax error + * + * @param string $error_msg + * @param integer $error_type + * @param string $file + * @param integer $line + */ + function _syntax_error($error_msg, $error_type = E_USER_ERROR, $file=null, $line=null) + { + $this->_trigger_fatal_error("syntax error: $error_msg", $this->_current_file, $this->_current_line_no, $file, $line, $error_type); + } + + + /** + * check if the compilation changes from cacheable to + * non-cacheable state with the beginning of the current + * plugin. return php-code to reflect the transition. + * @return string + */ + function _push_cacheable_state($type, $name) { + $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4]; + if ($_cacheable + || 0<$this->_cacheable_state++) return ''; + if (!isset($this->_cache_serial)) $this->_cache_serial = md5(uniqid('Smarty')); + $_ret = 'if ($this->caching && !$this->_cache_including): echo \'{nocache:' + . $this->_cache_serial . '#' . $this->_nocache_count + . '}\'; endif;'; + return $_ret; + } + + + /** + * check if the compilation changes from non-cacheable to + * cacheable state with the end of the current plugin return + * php-code to reflect the transition. + * @return string + */ + function _pop_cacheable_state($type, $name) { + $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4]; + if ($_cacheable + || --$this->_cacheable_state>0) return ''; + return 'if ($this->caching && !$this->_cache_including): echo \'{/nocache:' + . $this->_cache_serial . '#' . ($this->_nocache_count++) + . '}\'; endif;'; + } + + + /** + * push opening tag-name, file-name and line-number on the tag-stack + * @param string the opening tag's name + */ + function _push_tag($open_tag) + { + array_push($this->_tag_stack, array($open_tag, $this->_current_line_no)); + } + + /** + * pop closing tag-name + * raise an error if this stack-top doesn't match with the closing tag + * @param string the closing tag's name + * @return string the opening tag's name + */ + function _pop_tag($close_tag) + { + $message = ''; + if (count($this->_tag_stack)>0) { + list($_open_tag, $_line_no) = array_pop($this->_tag_stack); + if ($close_tag == $_open_tag) { + return $_open_tag; + } + if ($close_tag == 'if' && ($_open_tag == 'else' || $_open_tag == 'elseif' )) { + return $this->_pop_tag($close_tag); + } + if ($close_tag == 'section' && $_open_tag == 'sectionelse') { + $this->_pop_tag($close_tag); + return $_open_tag; + } + if ($close_tag == 'foreach' && $_open_tag == 'foreachelse') { + $this->_pop_tag($close_tag); + return $_open_tag; + } + if ($_open_tag == 'else' || $_open_tag == 'elseif') { + $_open_tag = 'if'; + } elseif ($_open_tag == 'sectionelse') { + $_open_tag = 'section'; + } elseif ($_open_tag == 'foreachelse') { + $_open_tag = 'foreach'; + } + $message = " expected {/$_open_tag} (opened line $_line_no)."; + } + $this->_syntax_error("mismatched tag {/$close_tag}.$message", + E_USER_ERROR, __FILE__, __LINE__); + } + +} + +/** + * compare to values by their string length + * + * @access private + * @param string $a + * @param string $b + * @return 0|-1|1 + */ +function _smarty_sort_length($a, $b) +{ + if($a == $b) + return 0; + + if(strlen($a) == strlen($b)) + return ($a > $b) ? -1 : 1; + + return (strlen($a) > strlen($b)) ? -1 : 1; +} + + +/* vim: set et: */ + +?> diff --git a/trunk/gosa-core/include/smarty/debug.tpl b/trunk/gosa-core/include/smarty/debug.tpl new file mode 100644 index 000000000..c05ef5d0b --- /dev/null +++ b/trunk/gosa-core/include/smarty/debug.tpl @@ -0,0 +1,157 @@ +{* Smarty *} +{* debug.tpl, last updated version 2.1.0 *} +{assign_debug_info} +{capture assign=debug_output} + + + + Smarty Debug Console +{literal} + +{/literal} + + + +

Smarty Debug Console

+ +

included templates & config files (load time in seconds)

+ +
+{section name=templates loop=$_debug_tpls} + {section name=indent loop=$_debug_tpls[templates].depth}   {/section} + + {$_debug_tpls[templates].filename|escape:html} + {if isset($_debug_tpls[templates].exec_time)} + + ({$_debug_tpls[templates].exec_time|string_format:"%.5f"}) + {if %templates.index% eq 0}(total){/if} + + {/if} +
+{sectionelse} +

no templates included

+{/section} +
+ +

assigned template variables

+ + + {section name=vars loop=$_debug_keys} + + + + {sectionelse} + + {/section} +
{ldelim}${$_debug_keys[vars]|escape:'html'}{rdelim}{$_debug_vals[vars]|@debug_print_var}

no template variables assigned

+ +

assigned config file variables (outer template scope)

+ + + {section name=config_vars loop=$_debug_config_keys} + + + + {sectionelse} + + {/section} +
{ldelim}#{$_debug_config_keys[config_vars]|escape:'html'}#{rdelim}{$_debug_config_vals[config_vars]|@debug_print_var}

no config vars assigned

+ + +{/capture} +{if isset($_smarty_debug_output) and $_smarty_debug_output eq "html"} + {$debug_output} +{else} + +{/if} \ No newline at end of file diff --git a/trunk/gosa-core/include/smarty/internals/core.assemble_plugin_filepath.php b/trunk/gosa-core/include/smarty/internals/core.assemble_plugin_filepath.php new file mode 100644 index 000000000..690d3ddbc --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.assemble_plugin_filepath.php @@ -0,0 +1,67 @@ +plugins_dir as $_plugin_dir) { + + $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; + + // see if path is relative + if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) { + $_relative_paths[] = $_plugin_dir; + // relative path, see if it is in the SMARTY_DIR + if (@is_readable(SMARTY_DIR . $_plugin_filepath)) { + $_return = SMARTY_DIR . $_plugin_filepath; + break; + } + } + // try relative to cwd (or absolute) + if (@is_readable($_plugin_filepath)) { + $_return = $_plugin_filepath; + break; + } + } + + if($_return === false) { + // still not found, try PHP include_path + if(isset($_relative_paths)) { + foreach ((array)$_relative_paths as $_plugin_dir) { + + $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; + + $_params = array('file_path' => $_plugin_filepath); + require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); + if(smarty_core_get_include_path($_params, $smarty)) { + $_return = $_params['new_file_path']; + break; + } + } + } + } + $_filepaths_cache[$_plugin_filename] = $_return; + return $_return; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.assign_smarty_interface.php b/trunk/gosa-core/include/smarty/internals/core.assign_smarty_interface.php new file mode 100644 index 000000000..7e65a73ec --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.assign_smarty_interface.php @@ -0,0 +1,43 @@ + + * Name: assign_smarty_interface
+ * Purpose: assign the $smarty interface variable + * @param array Format: null + * @param Smarty + */ +function smarty_core_assign_smarty_interface($params, &$smarty) +{ + if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) { + return; + } + + $_globals_map = array('g' => 'HTTP_GET_VARS', + 'p' => 'HTTP_POST_VARS', + 'c' => 'HTTP_COOKIE_VARS', + 's' => 'HTTP_SERVER_VARS', + 'e' => 'HTTP_ENV_VARS'); + + $_smarty_vars_request = array(); + + foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) { + if (isset($_globals_map[$_c])) { + $_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]); + } + } + $_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']); + + $smarty->_smarty_vars['request'] = $_smarty_vars_request; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.create_dir_structure.php b/trunk/gosa-core/include/smarty/internals/core.create_dir_structure.php new file mode 100644 index 000000000..3eecc4972 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.create_dir_structure.php @@ -0,0 +1,79 @@ +_dir_perms) && !is_dir($_new_dir)) { + $smarty->trigger_error("problem creating directory '" . $_new_dir . "'"); + return false; + } + $_new_dir .= '/'; + } + } +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.display_debug_console.php b/trunk/gosa-core/include/smarty/internals/core.display_debug_console.php new file mode 100644 index 000000000..1a80f3909 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.display_debug_console.php @@ -0,0 +1,61 @@ + + * Name: display_debug_console
+ * Purpose: display the javascript debug console window + * @param array Format: null + * @param Smarty + */ +function smarty_core_display_debug_console($params, &$smarty) +{ + // we must force compile the debug template in case the environment + // changed between separate applications. + + if(empty($smarty->debug_tpl)) { + // set path to debug template from SMARTY_DIR + $smarty->debug_tpl = SMARTY_DIR . 'debug.tpl'; + if($smarty->security && is_file($smarty->debug_tpl)) { + $smarty->secure_dir[] = realpath($smarty->debug_tpl); + } + $smarty->debug_tpl = 'file:' . SMARTY_DIR . 'debug.tpl'; + } + + $_ldelim_orig = $smarty->left_delimiter; + $_rdelim_orig = $smarty->right_delimiter; + + $smarty->left_delimiter = '{'; + $smarty->right_delimiter = '}'; + + $_compile_id_orig = $smarty->_compile_id; + $smarty->_compile_id = null; + + $_compile_path = $smarty->_get_compile_path($smarty->debug_tpl); + if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path)) + { + ob_start(); + $smarty->_include($_compile_path); + $_results = ob_get_contents(); + ob_end_clean(); + } else { + $_results = ''; + } + + $smarty->_compile_id = $_compile_id_orig; + + $smarty->left_delimiter = $_ldelim_orig; + $smarty->right_delimiter = $_rdelim_orig; + + return $_results; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.get_include_path.php b/trunk/gosa-core/include/smarty/internals/core.get_include_path.php new file mode 100644 index 000000000..43432412b --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.get_include_path.php @@ -0,0 +1,44 @@ + diff --git a/trunk/gosa-core/include/smarty/internals/core.get_microtime.php b/trunk/gosa-core/include/smarty/internals/core.get_microtime.php new file mode 100644 index 000000000..f1a28e042 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.get_microtime.php @@ -0,0 +1,23 @@ + diff --git a/trunk/gosa-core/include/smarty/internals/core.get_php_resource.php b/trunk/gosa-core/include/smarty/internals/core.get_php_resource.php new file mode 100644 index 000000000..786d4e78e --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.get_php_resource.php @@ -0,0 +1,80 @@ +trusted_dir; + $smarty->_parse_resource_name($params, $smarty); + + /* + * Find out if the resource exists. + */ + + if ($params['resource_type'] == 'file') { + $_readable = false; + if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) { + $_readable = true; + } else { + // test for file in include_path + $_params = array('file_path' => $params['resource_name']); + require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); + if(smarty_core_get_include_path($_params, $smarty)) { + $_include_path = $_params['new_file_path']; + $_readable = true; + } + } + } else if ($params['resource_type'] != 'file') { + $_template_source = null; + $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0]) + && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0], + array($params['resource_name'], &$_template_source, &$smarty)); + } + + /* + * Set the error function, depending on which class calls us. + */ + if (method_exists($smarty, '_syntax_error')) { + $_error_funcc = '_syntax_error'; + } else { + $_error_funcc = 'trigger_error'; + } + + if ($_readable) { + if ($smarty->security) { + require_once(SMARTY_CORE_DIR . 'core.is_trusted.php'); + if (!smarty_core_is_trusted($params, $smarty)) { + $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted'); + return false; + } + } + } else { + $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable'); + return false; + } + + if ($params['resource_type'] == 'file') { + $params['php_resource'] = $params['resource_name']; + } else { + $params['php_resource'] = $_template_source; + } + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.is_secure.php b/trunk/gosa-core/include/smarty/internals/core.is_secure.php new file mode 100644 index 000000000..d54abd432 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.is_secure.php @@ -0,0 +1,59 @@ +security || $smarty->security_settings['INCLUDE_ANY']) { + return true; + } + + if ($params['resource_type'] == 'file') { + $_rp = realpath($params['resource_name']); + if (isset($params['resource_base_path'])) { + foreach ((array)$params['resource_base_path'] as $curr_dir) { + if ( ($_cd = realpath($curr_dir)) !== false && + strncmp($_rp, $_cd, strlen($_cd)) == 0 && + substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { + return true; + } + } + } + if (!empty($smarty->secure_dir)) { + foreach ((array)$smarty->secure_dir as $curr_dir) { + if ( ($_cd = realpath($curr_dir)) !== false) { + if($_cd == $_rp) { + return true; + } elseif (strncmp($_rp, $_cd, strlen($_cd)) == 0 && + substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR) { + return true; + } + } + } + } + } else { + // resource is not on local file system + return call_user_func_array( + $smarty->_plugins['resource'][$params['resource_type']][0][2], + array($params['resource_name'], &$smarty)); + } + + return false; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.is_trusted.php b/trunk/gosa-core/include/smarty/internals/core.is_trusted.php new file mode 100644 index 000000000..429973158 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.is_trusted.php @@ -0,0 +1,47 @@ +trusted_dir)) { + $_rp = realpath($params['resource_name']); + foreach ((array)$smarty->trusted_dir as $curr_dir) { + if (!empty($curr_dir) && is_readable ($curr_dir)) { + $_cd = realpath($curr_dir); + if (strncmp($_rp, $_cd, strlen($_cd)) == 0 + && substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { + $_smarty_trusted = true; + break; + } + } + } + } + + } else { + // resource is not on local file system + $_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3], + array($params['resource_name'], $smarty)); + } + + return $_smarty_trusted; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.load_plugins.php b/trunk/gosa-core/include/smarty/internals/core.load_plugins.php new file mode 100644 index 000000000..6db1dc51d --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.load_plugins.php @@ -0,0 +1,125 @@ +_plugins[$_type][$_name]; + + /* + * We do not load plugin more than once for each instance of Smarty. + * The following code checks for that. The plugin can also be + * registered dynamically at runtime, in which case template file + * and line number will be unknown, so we fill them in. + * + * The final element of the info array is a flag that indicates + * whether the dynamically registered plugin function has been + * checked for existence yet or not. + */ + if (isset($_plugin)) { + if (empty($_plugin[3])) { + if (!is_callable($_plugin[0])) { + $smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__); + } else { + $_plugin[1] = $_tpl_file; + $_plugin[2] = $_tpl_line; + $_plugin[3] = true; + if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */ + } + } + continue; + } else if ($_type == 'insert') { + /* + * For backwards compatibility, we check for insert functions in + * the symbol table before trying to load them as a plugin. + */ + $_plugin_func = 'insert_' . $_name; + if (function_exists($_plugin_func)) { + $_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false); + continue; + } + } + + $_plugin_file = $smarty->_get_plugin_filepath($_type, $_name); + + if (! $_found = ($_plugin_file != false)) { + $_message = "could not load plugin file '$_type.$_name.php'\n"; + } + + /* + * If plugin file is found, it -must- provide the properly named + * plugin function. In case it doesn't, simply output the error and + * do not fall back on any other method. + */ + if ($_found) { + include_once $_plugin_file; + + $_plugin_func = 'smarty_' . $_type . '_' . $_name; + if (!function_exists($_plugin_func)) { + $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__); + continue; + } + } + /* + * In case of insert plugins, their code may be loaded later via + * 'script' attribute. + */ + else if ($_type == 'insert' && $_delayed_loading) { + $_plugin_func = 'smarty_' . $_type . '_' . $_name; + $_found = true; + } + + /* + * Plugin specific processing and error checking. + */ + if (!$_found) { + if ($_type == 'modifier') { + /* + * In case modifier falls back on using PHP functions + * directly, we only allow those specified in the security + * context. + */ + if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) { + $_message = "(secure mode) modifier '$_name' is not allowed"; + } else { + if (!function_exists($_name)) { + $_message = "modifier '$_name' is not implemented"; + } else { + $_plugin_func = $_name; + $_found = true; + } + } + } else if ($_type == 'function') { + /* + * This is a catch-all situation. + */ + $_message = "unknown tag - '$_name'"; + } + } + + if ($_found) { + $smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true); + } else { + // output error + $smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__); + } + } +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.load_resource_plugin.php b/trunk/gosa-core/include/smarty/internals/core.load_resource_plugin.php new file mode 100644 index 000000000..a7d37d1af --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.load_resource_plugin.php @@ -0,0 +1,74 @@ +_plugins['resource'][$params['type']]; + if (isset($_plugin)) { + if (!$_plugin[1] && count($_plugin[0])) { + $_plugin[1] = true; + foreach ($_plugin[0] as $_plugin_func) { + if (!is_callable($_plugin_func)) { + $_plugin[1] = false; + break; + } + } + } + + if (!$_plugin[1]) { + $smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__); + } + + return; + } + + $_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']); + $_found = ($_plugin_file != false); + + if ($_found) { /* + * If the plugin file is found, it -must- provide the properly named + * plugin functions. + */ + include_once($_plugin_file); + + /* + * Locate functions that we require the plugin to provide. + */ + $_resource_ops = array('source', 'timestamp', 'secure', 'trusted'); + $_resource_funcs = array(); + foreach ($_resource_ops as $_op) { + $_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op; + if (!function_exists($_plugin_func)) { + $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__); + return; + } else { + $_resource_funcs[] = $_plugin_func; + } + } + + $smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true); + } +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.process_cached_inserts.php b/trunk/gosa-core/include/smarty/internals/core.process_cached_inserts.php new file mode 100644 index 000000000..1d78edd93 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.process_cached_inserts.php @@ -0,0 +1,71 @@ +_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis', + $params['results'], $match); + list($cached_inserts, $insert_args) = $match; + + for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) { + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $debug_start_time = smarty_core_get_microtime($_params, $smarty); + } + + $args = unserialize($insert_args[$i]); + $name = $args['name']; + + if (isset($args['script'])) { + $_params = array('resource_name' => $smarty->_dequote($args['script'])); + require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); + if(!smarty_core_get_php_resource($_params, $smarty)) { + return false; + } + $resource_type = $_params['resource_type']; + $php_resource = $_params['php_resource']; + + + if ($resource_type == 'file') { + $smarty->_include($php_resource, true); + } else { + $smarty->_eval($php_resource); + } + } + + $function_name = $smarty->_plugins['insert'][$name][0]; + if (empty($args['assign'])) { + $replace = $function_name($args, $smarty); + } else { + $smarty->assign($args['assign'], $function_name($args, $smarty)); + $replace = ''; + } + + $params['results'] = substr_replace($params['results'], $replace, strpos($params['results'], $cached_inserts[$i]), strlen($cached_inserts[$i])); + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $smarty->_smarty_debug_info[] = array('type' => 'insert', + 'filename' => 'insert_'.$name, + 'depth' => $smarty->_inclusion_depth, + 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time); + } + } + + return $params['results']; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.process_compiled_include.php b/trunk/gosa-core/include/smarty/internals/core.process_compiled_include.php new file mode 100644 index 000000000..904d59745 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.process_compiled_include.php @@ -0,0 +1,37 @@ +_cache_including; + $smarty->_cache_including = true; + + $_return = $params['results']; + + foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) { + $smarty->_include($_include_file_path, true); + } + + foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) { + $_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s', + array(&$smarty, '_process_compiled_include_callback'), + $_return); + } + $smarty->_cache_including = $_cache_including; + return $_return; +} + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.read_cache_file.php b/trunk/gosa-core/include/smarty/internals/core.read_cache_file.php new file mode 100644 index 000000000..c60e113a7 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.read_cache_file.php @@ -0,0 +1,101 @@ +force_compile) { + // force compile enabled, always regenerate + return false; + } + + if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) { + list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']]; + return true; + } + + if (!empty($smarty->cache_handler_func)) { + // use cache_handler function + call_user_func_array($smarty->cache_handler_func, + array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null)); + } else { + // use local cache file + $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); + $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); + $params['results'] = $smarty->_read_file($_cache_file); + } + + if (empty($params['results'])) { + // nothing to parse (error?), regenerate cache + return false; + } + + $_contents = $params['results']; + $_info_start = strpos($_contents, "\n") + 1; + $_info_len = (int)substr($_contents, 0, $_info_start - 1); + $_cache_info = unserialize(substr($_contents, $_info_start, $_info_len)); + $params['results'] = substr($_contents, $_info_start + $_info_len); + + if ($smarty->caching == 2 && isset ($_cache_info['expires'])){ + // caching by expiration time + if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) { + // cache expired, regenerate + return false; + } + } else { + // caching by lifetime + if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) { + // cache expired, regenerate + return false; + } + } + + if ($smarty->compile_check) { + $_params = array('get_source' => false, 'quiet'=>true); + foreach (array_keys($_cache_info['template']) as $_template_dep) { + $_params['resource_name'] = $_template_dep; + if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { + // template file has changed, regenerate cache + return false; + } + } + + if (isset($_cache_info['config'])) { + $_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true); + foreach (array_keys($_cache_info['config']) as $_config_dep) { + $_params['resource_name'] = $_config_dep; + if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { + // config file has changed, regenerate cache + return false; + } + } + } + } + + $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info); + + $smarty->_cache_info = $_cache_info; + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.rm_auto.php b/trunk/gosa-core/include/smarty/internals/core.rm_auto.php new file mode 100644 index 000000000..b251f6491 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.rm_auto.php @@ -0,0 +1,71 @@ + $params['auto_base'], + 'level' => 0, + 'exp_time' => $params['exp_time'] + ); + require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); + $_res = smarty_core_rmdir($_params, $smarty); + } else { + $_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']); + + if(isset($params['auto_source'])) { + if (isset($params['extensions'])) { + $_res = false; + foreach ((array)$params['extensions'] as $_extension) + $_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']); + } else { + $_res = $smarty->_unlink($_tname, $params['exp_time']); + } + } elseif ($smarty->use_sub_dirs) { + $_params = array( + 'dirname' => $_tname, + 'level' => 1, + 'exp_time' => $params['exp_time'] + ); + require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); + $_res = smarty_core_rmdir($_params, $smarty); + } else { + // remove matching file names + $_handle = opendir($params['auto_base']); + $_res = true; + while (false !== ($_filename = readdir($_handle))) { + if($_filename == '.' || $_filename == '..') { + continue; + } elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) { + $_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']); + } + } + } + } + + return $_res; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.rmdir.php b/trunk/gosa-core/include/smarty/internals/core.rmdir.php new file mode 100644 index 000000000..2166c44d2 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.rmdir.php @@ -0,0 +1,54 @@ + keep root) + * WARNING: no tests, it will try to remove what you tell it! + * + * @param string $dirname + * @param integer $level + * @param integer $exp_time + * @return boolean + */ + +// $dirname, $level = 1, $exp_time = null + +function smarty_core_rmdir($params, &$smarty) +{ + if(!isset($params['level'])) { $params['level'] = 1; } + if(!isset($params['exp_time'])) { $params['exp_time'] = null; } + + if($_handle = @opendir($params['dirname'])) { + + while (false !== ($_entry = readdir($_handle))) { + if ($_entry != '.' && $_entry != '..') { + if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) { + $_params = array( + 'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry, + 'level' => $params['level'] + 1, + 'exp_time' => $params['exp_time'] + ); + smarty_core_rmdir($_params, $smarty); + } + else { + $smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']); + } + } + } + closedir($_handle); + } + + if ($params['level']) { + return @rmdir($params['dirname']); + } + return (bool)$_handle; + +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.run_insert_handler.php b/trunk/gosa-core/include/smarty/internals/core.run_insert_handler.php new file mode 100644 index 000000000..71c384508 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.run_insert_handler.php @@ -0,0 +1,71 @@ +debugging) { + $_params = array(); + $_debug_start_time = smarty_core_get_microtime($_params, $smarty); + } + + if ($smarty->caching) { + $_arg_string = serialize($params['args']); + $_name = $params['args']['name']; + if (!isset($smarty->_cache_info['insert_tags'][$_name])) { + $smarty->_cache_info['insert_tags'][$_name] = array('insert', + $_name, + $smarty->_plugins['insert'][$_name][1], + $smarty->_plugins['insert'][$_name][2], + !empty($params['args']['script']) ? true : false); + } + return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5; + } else { + if (isset($params['args']['script'])) { + $_params = array('resource_name' => $smarty->_dequote($params['args']['script'])); + require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); + if(!smarty_core_get_php_resource($_params, $smarty)) { + return false; + } + + if ($_params['resource_type'] == 'file') { + $smarty->_include($_params['php_resource'], true); + } else { + $smarty->_eval($_params['php_resource']); + } + unset($params['args']['script']); + } + + $_funcname = $smarty->_plugins['insert'][$params['args']['name']][0]; + $_content = $_funcname($params['args'], $smarty); + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $smarty->_smarty_debug_info[] = array('type' => 'insert', + 'filename' => 'insert_'.$params['args']['name'], + 'depth' => $smarty->_inclusion_depth, + 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); + } + + if (!empty($params['args']["assign"])) { + $smarty->assign($params['args']["assign"], $_content); + } else { + return $_content; + } + } +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.smarty_include_php.php b/trunk/gosa-core/include/smarty/internals/core.smarty_include_php.php new file mode 100644 index 000000000..30c6e7654 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.smarty_include_php.php @@ -0,0 +1,50 @@ + $params['smarty_file']); + require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); + smarty_core_get_php_resource($_params, $smarty); + $_smarty_resource_type = $_params['resource_type']; + $_smarty_php_resource = $_params['php_resource']; + + if (!empty($params['smarty_assign'])) { + ob_start(); + if ($_smarty_resource_type == 'file') { + $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); + } else { + $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); + } + $smarty->assign($params['smarty_assign'], ob_get_contents()); + ob_end_clean(); + } else { + if ($_smarty_resource_type == 'file') { + $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); + } else { + $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); + } + } +} + + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.write_cache_file.php b/trunk/gosa-core/include/smarty/internals/core.write_cache_file.php new file mode 100644 index 000000000..fa3cdd746 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.write_cache_file.php @@ -0,0 +1,96 @@ +_cache_info['timestamp'] = time(); + if ($smarty->cache_lifetime > -1){ + // expiration set + $smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime; + } else { + // cache will never expire + $smarty->_cache_info['expires'] = -1; + } + + // collapse nocache.../nocache-tags + if (preg_match_all('!\{(/?)nocache\:[0-9a-f]{32}#\d+\}!', $params['results'], $match, PREG_PATTERN_ORDER)) { + // remove everything between every pair of outermost noache.../nocache-tags + // and replace it by a single nocache-tag + // this new nocache-tag will be replaced by dynamic contents in + // smarty_core_process_compiled_includes() on a cache-read + + $match_count = count($match[0]); + $results = preg_split('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!', $params['results'], -1, PREG_SPLIT_DELIM_CAPTURE); + + $level = 0; + $j = 0; + for ($i=0, $results_count = count($results); $i < $results_count && $j < $match_count; $i++) { + if ($results[$i] == $match[0][$j]) { + // nocache tag + if ($match[1][$j]) { // closing tag + $level--; + unset($results[$i]); + } else { // opening tag + if ($level++ > 0) unset($results[$i]); + } + $j++; + } elseif ($level > 0) { + unset($results[$i]); + } + } + $params['results'] = implode('', $results); + } + $smarty->_cache_info['cache_serials'] = $smarty->_cache_serials; + + // prepend the cache header info into cache file + $_cache_info = serialize($smarty->_cache_info); + $params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results']; + + if (!empty($smarty->cache_handler_func)) { + // use cache_handler function + call_user_func_array($smarty->cache_handler_func, + array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], $smarty->_cache_info['expires'])); + } else { + // use local cache file + + if(!@is_writable($smarty->cache_dir)) { + // cache_dir not writable, see if it exists + if(!@is_dir($smarty->cache_dir)) { + $smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); + return false; + } + $smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR); + return false; + } + + $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); + $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); + $_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true); + require_once(SMARTY_CORE_DIR . 'core.write_file.php'); + smarty_core_write_file($_params, $smarty); + return true; + } +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.write_compiled_include.php b/trunk/gosa-core/include/smarty/internals/core.write_compiled_include.php new file mode 100644 index 000000000..c14adb5f4 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.write_compiled_include.php @@ -0,0 +1,91 @@ +caching && \!\$this->_cache_including\)\: echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\'; endif;'; + $_tag_end = 'if \(\$this->caching && \!\$this->_cache_including\)\: echo \'\{/nocache\:(\\2)#(\\3)\}\'; endif;'; + + preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us', + $params['compiled_content'], $_match_source, PREG_SET_ORDER); + + // no nocache-parts found: done + if (count($_match_source)==0) return; + + // convert the matched php-code to functions + $_include_compiled = "_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n"; + $_include_compiled .= " compiled from " . strtr(urlencode($params['resource_name']), array('%2F'=>'/', '%3A'=>':')) . " */\n\n"; + + $_compile_path = $params['include_file_path']; + + $smarty->_cache_serials[$_compile_path] = $params['cache_serial']; + $_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>"; + + $_include_compiled .= $params['plugins_code']; + $_include_compiled .= "= 5.0) ? '_smarty' : 'this'; + for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) { + $_match =& $_match_source[$_i]; + $source = $_match[4]; + if ($this_varname == '_smarty') { + /* rename $this to $_smarty in the sourcecode */ + $tokens = token_get_all('\n"; + + $_params = array('filename' => $_compile_path, + 'contents' => $_include_compiled, 'create_dirs' => true); + + require_once(SMARTY_CORE_DIR . 'core.write_file.php'); + smarty_core_write_file($_params, $smarty); + return true; +} + + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.write_compiled_resource.php b/trunk/gosa-core/include/smarty/internals/core.write_compiled_resource.php new file mode 100644 index 000000000..b902eff3c --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.write_compiled_resource.php @@ -0,0 +1,35 @@ +compile_dir)) { + // compile_dir not writable, see if it exists + if(!@is_dir($smarty->compile_dir)) { + $smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); + return false; + } + $smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR); + return false; + } + + $_params = array('filename' => $params['compile_path'], 'contents' => $params['compiled_content'], 'create_dirs' => true); + require_once(SMARTY_CORE_DIR . 'core.write_file.php'); + smarty_core_write_file($_params, $smarty); + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/internals/core.write_file.php b/trunk/gosa-core/include/smarty/internals/core.write_file.php new file mode 100644 index 000000000..8a3a3b398 --- /dev/null +++ b/trunk/gosa-core/include/smarty/internals/core.write_file.php @@ -0,0 +1,54 @@ + $_dirname); + require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); + smarty_core_create_dir_structure($_params, $smarty); + } + + // write to tmp file, then rename it to avoid file locking race condition + $_tmp_file = tempnam($_dirname, 'wrt'); + + if (!($fd = @fopen($_tmp_file, 'wb'))) { + $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); + if (!($fd = @fopen($_tmp_file, 'wb'))) { + $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); + return false; + } + } + + fwrite($fd, $params['contents']); + fclose($fd); + + if (DIRECTORY_SEPARATOR == '\\' || !@rename($_tmp_file, $params['filename'])) { + // On platforms and filesystems that cannot overwrite with rename() + // delete the file before renaming it -- because windows always suffers + // this, it is short-circuited to avoid the initial rename() attempt + @unlink($params['filename']); + @rename($_tmp_file, $params['filename']); + } + @chmod($params['filename'], $smarty->_file_perms); + + return true; +} + +/* vim: set expandtab: */ + +?> \ No newline at end of file diff --git a/trunk/gosa-core/include/smarty/plugins/block.render.php b/trunk/gosa-core/include/smarty/plugins/block.render.php new file mode 100644 index 000000000..ac157f4c5 --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/block.render.php @@ -0,0 +1,124 @@ + */ + if(empty($text)) { + return(""); + } + + /* Get acl parameter */ + $acl = ""; + if (isset($params['acl'])) { + $acl = $params['acl']; + } + + /* Debug output */ + if (session::is_set('DEBUGLEVEL') && session::get('DEBUGLEVEL') & DEBUG_ACL ){ + echo " ".$acl.""; + } + + + + /* Parameter : checkbox, checked + * If the parameter 'checkbox' is given, we create a html checkbox in front + * of the current object. + * The parameter 'checked' specifies whether the box is checked or not. + * The checkbox disables or enables the current object. + */ + if(isset($params['checkbox']) && $params['checkbox']){ + + /* Detect name and id of the current object */ + $use_text = preg_replace("/\n/"," ",$text); + $name = preg_replace('/^.* name[ ]*=[ ]*("|\')([^\"\' ]*).*$/i',"\\2",$use_text); + + /* Detect id */ + if(preg_match("/ id=(\"|')[^\"']*(\"|')/i",$text)){ + $id = preg_replace('/^.* id[ ]*=[ ]*("|\')([^\"\' ]*).*$/i',"\\2",$use_text); + }else{ + $id = ""; + } + + /* Is the box checked? */ + isset($params['checked'])&&$params['checked'] ? $check = " checked " : $check = ""; + + /* If name isset, we have a html input field */ + if(!empty($name)){ + + /* Print checkbox */ + echo ""; + + /* Disable current object, if checkbox isn't checked */ + if($check == ""){ + $text = preg_replace("/name=/i"," disabled name=",$text); + } + + /* Add id to current entry, if it is missing */ + if($id == ""){ + $text = preg_replace("/name=/i"," id=\"".$name."\" name=",$text); + } + } + } + + + /* Read / Write*/ + if(preg_match("/w/i",$acl)){ + return ($text); + } + + $text = preg_replace ("/\n/","GOSA_LINE_BREAK",$text); + + /* Disable objects, but keep those active that have mode=read_active */ + if(!(isset($params['mode']) && ($params['mode']=='read_active') && preg_match("/(r|w)/",$acl))){ + + /* Disable options && greyout divlists */ + $from = array("/class=['\"]list1nohighlight['\"]/i", + "/class=['\"]list0['\"]/i", + "/class=['\"]list1['\"]/i"); + $to = array("class='list1nohighlightdisabled'", + "class='list1nohighlightdisabled'", + "class='list1nohighlightdisabled'"); + + if(!preg_match("/ disabled /",$text)){ + $from [] = "/name=/i" ; + $to [] = "disabled name="; + } + + $text = preg_replace($from,$to,$text); + + /* Replace picture if object is disabled */ + if(isset($params['disable_picture'])){ + $syn = "/src=['\"][^\"']*['\"]/i"; + $new = "src=\"".$params['disable_picture']."\""; + $text = preg_replace($syn,$new,$text); + } + } + + /* Read only */ + if(preg_match("/r/i",$acl)){ + return(preg_replace("/GOSA_LINE_BREAK/","\n",$text)); + } + + /* No acls */ + if(preg_match("/type['\"= ].*submit/",$text)){ + $text = preg_replace("/submit/","button",$text); + }else{ + $text = preg_replace("/value=['\"][^\"']*['\"]/","",$text); + } + + /* Remove select options */ + $from = array("##i", + "/().*(<\/textarea>)/i", + "/^(.*.*)$/i"); + + $to = array(" ", + "\\1\\2", + "\\1 \\2"); + $text = preg_replace($from,$to,$text); + $text = preg_replace("/GOSA_LINE_BREAK/","\n",$text); + + return $text; +} + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/block.t.php b/trunk/gosa-core/include/smarty/plugins/block.t.php new file mode 100644 index 000000000..ca7382aeb --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/block.t.php @@ -0,0 +1,126 @@ + + * @copyright 2004-2005 Sagi Bashari + */ + +/** + * Replaces arguments in a string with their values. + * Arguments are represented by % followed by their number. + * + * @param string Source string + * @param mixed Arguments, can be passed in an array or through single variables. + * @returns string Modified string + */ +function smarty_gettext_strarg($str) +{ + $tr = array(); + $p = 0; + + for ($i=1; $i < func_num_args(); $i++) { + $arg = func_get_arg($i); + + if (is_array($arg)) { + foreach ($arg as $aarg) { + $tr['%'.++$p] = $aarg; + } + } else { + $tr['%'.++$p] = $arg; + } + } + + return strtr($str, $tr); +} + +/** + * Smarty block function, provides gettext support for smarty. + * + * The block content is the text that should be translated. + * + * Any parameter that is sent to the function will be represented as %n in the translation text, + * where n is 1 for the first parameter. The following parameters are reserved: + * - escape - sets escape mode: + * - 'html' for HTML escaping, this is the default. + * - 'js' for javascript escaping. + * - 'url' for url escaping. + * - 'no'/'off'/0 - turns off escaping + * - plural - The plural version of the text (2nd parameter of ngettext()) + * - count - The item count for plural mode (3rd parameter of ngettext()) + */ +function smarty_block_t($params, $text, &$smarty) +{ + $text = stripslashes($text); + + // set escape mode + if (isset($params['escape'])) { + $escape = $params['escape']; + unset($params['escape']); + } + + // set plural version + if (isset($params['plural'])) { + $plural = $params['plural']; + unset($params['plural']); + + // set count + if (isset($params['count'])) { + $count = $params['count']; + unset($params['count']); + } + } + + // use plural if required parameters are set + if (isset($count) && isset($plural)) { + $text = ngettext($text, $plural, $count); + } else { // use normal + $text = gettext($text); + } + + // run strarg if there are parameters + if (count($params)) { + $text = smarty_gettext_strarg($text, $params); + } + + if (!isset($escape) || $escape == 'html') { // html escape, default + $text = nl2br(htmlspecialchars($text)); + } elseif (isset($escape)) { + switch ($escape) { + case 'javascript': + case 'js': + // javascript escape + $text = str_replace('\'', '\\\'', stripslashes($text)); + break; + case 'url': + // url escape + $text = urlencode($text); + break; + } + } + + return $text; +} + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/block.textformat.php b/trunk/gosa-core/include/smarty/plugins/block.textformat.php new file mode 100644 index 000000000..8cd010acb --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/block.textformat.php @@ -0,0 +1,103 @@ + + * Name: textformat
+ * Purpose: format text a certain way with preset styles + * or custom wrap/indent settings
+ * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat} + * (Smarty online manual) + * @param array + *
+ * Params:   style: string (email)
+ *           indent: integer (0)
+ *           wrap: integer (80)
+ *           wrap_char string ("\n")
+ *           indent_char: string (" ")
+ *           wrap_boundary: boolean (true)
+ * 
+ * @author Monte Ohrt + * @param string contents of the block + * @param Smarty clever simulation of a method + * @return string string $content re-formatted + */ +function smarty_block_textformat($params, $content, &$smarty) +{ + if (is_null($content)) { + return; + } + + $style = null; + $indent = 0; + $indent_first = 0; + $indent_char = ' '; + $wrap = 80; + $wrap_char = "\n"; + $wrap_cut = false; + $assign = null; + + foreach ($params as $_key => $_val) { + switch ($_key) { + case 'style': + case 'indent_char': + case 'wrap_char': + case 'assign': + $$_key = (string)$_val; + break; + + case 'indent': + case 'indent_first': + case 'wrap': + $$_key = (int)$_val; + break; + + case 'wrap_cut': + $$_key = (bool)$_val; + break; + + default: + $smarty->trigger_error("textformat: unknown attribute '$_key'"); + } + } + + if ($style == 'email') { + $wrap = 72; + } + + // split into paragraphs + $_paragraphs = preg_split('![\r\n][\r\n]!',$content); + $_output = ''; + + for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) { + if ($_paragraphs[$_x] == '') { + continue; + } + // convert mult. spaces & special chars to single space + $_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]); + // indent first line + if($indent_first > 0) { + $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x]; + } + // wordwrap sentences + $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut); + // indent lines + if($indent > 0) { + $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]); + } + } + $_output = implode($wrap_char . $wrap_char, $_paragraphs); + + return $assign ? $smarty->assign($assign, $_output) : $_output; + +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/compiler.assign.php b/trunk/gosa-core/include/smarty/plugins/compiler.assign.php new file mode 100644 index 000000000..abef377f8 --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/compiler.assign.php @@ -0,0 +1,40 @@ + + * Name: assign
+ * Purpose: assign a value to a template variable + * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign} + * (Smarty online manual) + * @author Monte Ohrt (initial author) + * @author messju mohr (conversion to compiler function) + * @param string containing var-attribute and value-attribute + * @param Smarty_Compiler + */ +function smarty_compiler_assign($tag_attrs, &$compiler) +{ + $_params = $compiler->_parse_attrs($tag_attrs); + + if (!isset($_params['var'])) { + $compiler->_syntax_error("assign: missing 'var' parameter", E_USER_WARNING); + return; + } + + if (!isset($_params['value'])) { + $compiler->_syntax_error("assign: missing 'value' parameter", E_USER_WARNING); + return; + } + + return "\$this->assign({$_params['var']}, {$_params['value']});"; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.assign.php b/trunk/gosa-core/include/smarty/plugins/function.assign.php new file mode 100644 index 000000000..ad23f043d --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.assign.php @@ -0,0 +1,38 @@ + + * Name: assign
+ * Purpose: assign a value to a template variable + * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign} + * (Smarty online manual) + * @param array Format: array('var' => variable name, 'value' => value to assign) + * @param Smarty + */ +function smarty_function_assign($params, &$smarty) +{ + extract($params); + + if (empty($var)) { + $smarty->trigger_error("assign: missing 'var' parameter"); + return; + } + + if (!in_array('value', array_keys($params))) { + $smarty->trigger_error("assign: missing 'value' parameter"); + return; + } + + $smarty->assign($var, $value); +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.assign_debug_info.php b/trunk/gosa-core/include/smarty/plugins/function.assign_debug_info.php new file mode 100644 index 000000000..654049876 --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.assign_debug_info.php @@ -0,0 +1,40 @@ + + * Name: assign_debug_info
+ * Purpose: assign debug info to the template
+ * @author Monte Ohrt + * @param array unused in this plugin, this plugin uses {@link Smarty::$_config}, + * {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info} + * @param Smarty + */ +function smarty_function_assign_debug_info($params, &$smarty) +{ + $assigned_vars = $smarty->_tpl_vars; + ksort($assigned_vars); + if (@is_array($smarty->_config[0])) { + $config_vars = $smarty->_config[0]; + ksort($config_vars); + $smarty->assign("_debug_config_keys", array_keys($config_vars)); + $smarty->assign("_debug_config_vals", array_values($config_vars)); + } + + $included_templates = $smarty->_smarty_debug_info; + + $smarty->assign("_debug_keys", array_keys($assigned_vars)); + $smarty->assign("_debug_vals", array_values($assigned_vars)); + + $smarty->assign("_debug_tpls", $included_templates); +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.config_load.php b/trunk/gosa-core/include/smarty/plugins/function.config_load.php new file mode 100644 index 000000000..db89f638c --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.config_load.php @@ -0,0 +1,142 @@ + + * Name: config_load
+ * Purpose: load config file vars + * @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load} + * (Smarty online manual) + * @author Monte Ohrt + * @author messju mohr (added use of resources) + * @param array Format: + *
+ * array('file' => required config file name,
+ *       'section' => optional config file section to load
+ *       'scope' => local/parent/global
+ *       'global' => overrides scope, setting to parent if true)
+ * 
+ * @param Smarty + */ +function smarty_function_config_load($params, &$smarty) +{ + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $_debug_start_time = smarty_core_get_microtime($_params, $smarty); + } + + $_file = isset($params['file']) ? $smarty->_dequote($params['file']) : null; + $_section = isset($params['section']) ? $smarty->_dequote($params['section']) : null; + $_scope = isset($params['scope']) ? $smarty->_dequote($params['scope']) : 'global'; + $_global = isset($params['global']) ? $smarty->_dequote($params['global']) : false; + + if (!isset($_file) || strlen($_file) == 0) { + $smarty->trigger_error("missing 'file' attribute in config_load tag", E_USER_ERROR, __FILE__, __LINE__); + } + + if (isset($_scope)) { + if ($_scope != 'local' && + $_scope != 'parent' && + $_scope != 'global') { + $smarty->trigger_error("invalid 'scope' attribute value", E_USER_ERROR, __FILE__, __LINE__); + } + } else { + if ($_global) { + $_scope = 'parent'; + } else { + $_scope = 'local'; + } + } + + $_params = array('resource_name' => $_file, + 'resource_base_path' => $smarty->config_dir, + 'get_source' => false); + $smarty->_parse_resource_name($_params); + $_file_path = $_params['resource_type'] . ':' . $_params['resource_name']; + if (isset($_section)) + $_compile_file = $smarty->_get_compile_path($_file_path.'|'.$_section); + else + $_compile_file = $smarty->_get_compile_path($_file_path); + + if($smarty->force_compile || !file_exists($_compile_file)) { + $_compile = true; + } elseif ($smarty->compile_check) { + $_params = array('resource_name' => $_file, + 'resource_base_path' => $smarty->config_dir, + 'get_source' => false); + $_compile = $smarty->_fetch_resource_info($_params) && + $_params['resource_timestamp'] > filemtime($_compile_file); + } else { + $_compile = false; + } + + if($_compile) { + // compile config file + if(!is_object($smarty->_conf_obj)) { + require_once SMARTY_DIR . $smarty->config_class . '.class.php'; + $smarty->_conf_obj = new $smarty->config_class(); + $smarty->_conf_obj->overwrite = $smarty->config_overwrite; + $smarty->_conf_obj->booleanize = $smarty->config_booleanize; + $smarty->_conf_obj->read_hidden = $smarty->config_read_hidden; + $smarty->_conf_obj->fix_newlines = $smarty->config_fix_newlines; + } + + $_params = array('resource_name' => $_file, + 'resource_base_path' => $smarty->config_dir, + $_params['get_source'] = true); + if (!$smarty->_fetch_resource_info($_params)) { + return; + } + $smarty->_conf_obj->set_file_contents($_file, $_params['source_content']); + $_config_vars = array_merge($smarty->_conf_obj->get($_file), + $smarty->_conf_obj->get($_file, $_section)); + if(function_exists('var_export')) { + $_output = ''; + } else { + $_output = ''\\\'', '\\'=>'\\\\')) . '\'); ?>'; + } + $_params = (array('compile_path' => $_compile_file, 'compiled_content' => $_output, 'resource_timestamp' => $_params['resource_timestamp'])); + require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php'); + smarty_core_write_compiled_resource($_params, $smarty); + } else { + include($_compile_file); + } + + if ($smarty->caching) { + $smarty->_cache_info['config'][$_file] = true; + } + + $smarty->_config[0]['vars'] = @array_merge($smarty->_config[0]['vars'], $_config_vars); + $smarty->_config[0]['files'][$_file] = true; + + if ($_scope == 'parent') { + $smarty->_config[1]['vars'] = @array_merge($smarty->_config[1]['vars'], $_config_vars); + $smarty->_config[1]['files'][$_file] = true; + } else if ($_scope == 'global') { + for ($i = 1, $for_max = count($smarty->_config); $i < $for_max; $i++) { + $smarty->_config[$i]['vars'] = @array_merge($smarty->_config[$i]['vars'], $_config_vars); + $smarty->_config[$i]['files'][$_file] = true; + } + } + + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $smarty->_smarty_debug_info[] = array('type' => 'config', + 'filename' => $_file.' ['.$_section.'] '.$_scope, + 'depth' => $smarty->_inclusion_depth, + 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); + } + +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.counter.php b/trunk/gosa-core/include/smarty/plugins/function.counter.php new file mode 100644 index 000000000..1f26db5fb --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.counter.php @@ -0,0 +1,80 @@ + + * Name: counter
+ * Purpose: print out a counter value + * @author Monte Ohrt + * @link http://smarty.php.net/manual/en/language.function.counter.php {counter} + * (Smarty online manual) + * @param array parameters + * @param Smarty + * @return string|null + */ +function smarty_function_counter($params, &$smarty) +{ + static $counters = array(); + + $name = (isset($params['name'])) ? $params['name'] : 'default'; + if (!isset($counters[$name])) { + $counters[$name] = array( + 'start'=>1, + 'skip'=>1, + 'direction'=>'up', + 'count'=>1 + ); + } + $counter =& $counters[$name]; + + if (isset($params['start'])) { + $counter['start'] = $counter['count'] = (int)$params['start']; + } + + if (!empty($params['assign'])) { + $counter['assign'] = $params['assign']; + } + + if (isset($counter['assign'])) { + $smarty->assign($counter['assign'], $counter['count']); + } + + if (isset($params['print'])) { + $print = (bool)$params['print']; + } else { + $print = empty($counter['assign']); + } + + if ($print) { + $retval = $counter['count']; + } else { + $retval = null; + } + + if (isset($params['skip'])) { + $counter['skip'] = $params['skip']; + } + + if (isset($params['direction'])) { + $counter['direction'] = $params['direction']; + } + + if ($counter['direction'] == "down") + $counter['count'] -= $counter['skip']; + else + $counter['count'] += $counter['skip']; + + return $retval; + +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.cycle.php b/trunk/gosa-core/include/smarty/plugins/function.cycle.php new file mode 100644 index 000000000..fe78bb87d --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.cycle.php @@ -0,0 +1,102 @@ + + * Name: cycle
+ * Date: May 3, 2002
+ * Purpose: cycle through given values
+ * Input: + * - name = name of cycle (optional) + * - values = comma separated list of values to cycle, + * or an array of values to cycle + * (this can be left out for subsequent calls) + * - reset = boolean - resets given var to true + * - print = boolean - print var or not. default is true + * - advance = boolean - whether or not to advance the cycle + * - delimiter = the value delimiter, default is "," + * - assign = boolean, assigns to template var instead of + * printed. + * + * Examples:
+ *
+ * {cycle values="#eeeeee,#d0d0d0d"}
+ * {cycle name=row values="one,two,three" reset=true}
+ * {cycle name=row}
+ * 
+ * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle} + * (Smarty online manual) + * @author Monte Ohrt + * @author credit to Mark Priatel + * @author credit to Gerard + * @author credit to Jason Sweat + * @version 1.3 + * @param array + * @param Smarty + * @return string|null + */ +function smarty_function_cycle($params, &$smarty) +{ + static $cycle_vars; + + $name = (empty($params['name'])) ? 'default' : $params['name']; + $print = (isset($params['print'])) ? (bool)$params['print'] : true; + $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true; + $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false; + + if (!in_array('values', array_keys($params))) { + if(!isset($cycle_vars[$name]['values'])) { + $smarty->trigger_error("cycle: missing 'values' parameter"); + return; + } + } else { + if(isset($cycle_vars[$name]['values']) + && $cycle_vars[$name]['values'] != $params['values'] ) { + $cycle_vars[$name]['index'] = 0; + } + $cycle_vars[$name]['values'] = $params['values']; + } + + $cycle_vars[$name]['delimiter'] = (isset($params['delimiter'])) ? $params['delimiter'] : ','; + + if(is_array($cycle_vars[$name]['values'])) { + $cycle_array = $cycle_vars[$name]['values']; + } else { + $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']); + } + + if(!isset($cycle_vars[$name]['index']) || $reset ) { + $cycle_vars[$name]['index'] = 0; + } + + if (isset($params['assign'])) { + $print = false; + $smarty->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]); + } + + if($print) { + $retval = $cycle_array[$cycle_vars[$name]['index']]; + } else { + $retval = null; + } + + if($advance) { + if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) { + $cycle_vars[$name]['index'] = 0; + } else { + $cycle_vars[$name]['index']++; + } + } + + return $retval; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.debug.php b/trunk/gosa-core/include/smarty/plugins/function.debug.php new file mode 100644 index 000000000..43452307b --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.debug.php @@ -0,0 +1,35 @@ + + * Name: debug
+ * Date: July 1, 2002
+ * Purpose: popup debug window + * @link http://smarty.php.net/manual/en/language.function.debug.php {debug} + * (Smarty online manual) + * @author Monte Ohrt + * @version 1.0 + * @param array + * @param Smarty + * @return string output from {@link Smarty::_generate_debug_output()} + */ +function smarty_function_debug($params, &$smarty) +{ + if (isset($params['output'])) { + $smarty->assign('_smarty_debug_output', $params['output']); + } + require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php'); + return smarty_core_display_debug_console(null, $smarty); +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.eval.php b/trunk/gosa-core/include/smarty/plugins/function.eval.php new file mode 100644 index 000000000..ff0472de2 --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.eval.php @@ -0,0 +1,49 @@ + + * Name: eval
+ * Purpose: evaluate a template variable as a template
+ * @link http://smarty.php.net/manual/en/language.function.eval.php {eval} + * (Smarty online manual) + * @author Monte Ohrt + * @param array + * @param Smarty + */ +function smarty_function_eval($params, &$smarty) +{ + + if (!isset($params['var'])) { + $smarty->trigger_error("eval: missing 'var' parameter"); + return; + } + + if($params['var'] == '') { + return; + } + + $smarty->_compile_source('evaluated template', $params['var'], $_var_compiled); + + ob_start(); + $smarty->_eval('?>' . $_var_compiled); + $_contents = ob_get_contents(); + ob_end_clean(); + + if (!empty($params['assign'])) { + $smarty->assign($params['assign'], $_contents); + } else { + return $_contents; + } +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.fetch.php b/trunk/gosa-core/include/smarty/plugins/function.fetch.php new file mode 100644 index 000000000..81b1bfc6b --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.fetch.php @@ -0,0 +1,221 @@ + + * Name: fetch
+ * Purpose: fetch file, web or ftp data and display results + * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch} + * (Smarty online manual) + * @author Monte Ohrt + * @param array + * @param Smarty + * @return string|null if the assign parameter is passed, Smarty assigns the + * result to a template variable + */ +function smarty_function_fetch($params, &$smarty) +{ + if (empty($params['file'])) { + $smarty->_trigger_fatal_error("[plugin] parameter 'file' cannot be empty"); + return; + } + + $content = ''; + if ($smarty->security && !preg_match('!^(http|ftp)://!i', $params['file'])) { + $_params = array('resource_type' => 'file', 'resource_name' => $params['file']); + require_once(SMARTY_CORE_DIR . 'core.is_secure.php'); + if(!smarty_core_is_secure($_params, $smarty)) { + $smarty->_trigger_fatal_error('[plugin] (secure mode) fetch \'' . $params['file'] . '\' is not allowed'); + return; + } + + // fetch the file + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] . '\''); + return; + } + } else { + // not a local file + if(preg_match('!^http://!i',$params['file'])) { + // http fetch + if($uri_parts = parse_url($params['file'])) { + // set defaults + $host = $server_name = $uri_parts['host']; + $timeout = 30; + $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"; + $agent = "Smarty Template Engine ".$smarty->_version; + $referer = ""; + $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/'; + $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : ''; + $_is_proxy = false; + if(empty($uri_parts['port'])) { + $port = 80; + } else { + $port = $uri_parts['port']; + } + if(!empty($uri_parts['user'])) { + $user = $uri_parts['user']; + } + if(!empty($uri_parts['pass'])) { + $pass = $uri_parts['pass']; + } + // loop through parameters, setup headers + foreach($params as $param_key => $param_value) { + switch($param_key) { + case "file": + case "assign": + case "assign_headers": + break; + case "user": + if(!empty($param_value)) { + $user = $param_value; + } + break; + case "pass": + if(!empty($param_value)) { + $pass = $param_value; + } + break; + case "accept": + if(!empty($param_value)) { + $accept = $param_value; + } + break; + case "header": + if(!empty($param_value)) { + if(!preg_match('![\w\d-]+: .+!',$param_value)) { + $smarty->_trigger_fatal_error("[plugin] invalid header format '".$param_value."'"); + return; + } else { + $extra_headers[] = $param_value; + } + } + break; + case "proxy_host": + if(!empty($param_value)) { + $proxy_host = $param_value; + } + break; + case "proxy_port": + if(!preg_match('!\D!', $param_value)) { + $proxy_port = (int) $param_value; + } else { + $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'"); + return; + } + break; + case "agent": + if(!empty($param_value)) { + $agent = $param_value; + } + break; + case "referer": + if(!empty($param_value)) { + $referer = $param_value; + } + break; + case "timeout": + if(!preg_match('!\D!', $param_value)) { + $timeout = (int) $param_value; + } else { + $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'"); + return; + } + break; + default: + $smarty->_trigger_fatal_error("[plugin] unrecognized attribute '".$param_key."'"); + return; + } + } + if(!empty($proxy_host) && !empty($proxy_port)) { + $_is_proxy = true; + $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout); + } else { + $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout); + } + + if(!$fp) { + $smarty->_trigger_fatal_error("[plugin] unable to fetch: $errstr ($errno)"); + return; + } else { + if($_is_proxy) { + fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n"); + } else { + fputs($fp, "GET $uri HTTP/1.0\r\n"); + } + if(!empty($host)) { + fputs($fp, "Host: $host\r\n"); + } + if(!empty($accept)) { + fputs($fp, "Accept: $accept\r\n"); + } + if(!empty($agent)) { + fputs($fp, "User-Agent: $agent\r\n"); + } + if(!empty($referer)) { + fputs($fp, "Referer: $referer\r\n"); + } + if(isset($extra_headers) && is_array($extra_headers)) { + foreach($extra_headers as $curr_header) { + fputs($fp, $curr_header."\r\n"); + } + } + if(!empty($user) && !empty($pass)) { + fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n"); + } + + fputs($fp, "\r\n"); + while(!feof($fp)) { + $content .= fgets($fp,4096); + } + fclose($fp); + $csplit = split("\r\n\r\n",$content,2); + + $content = $csplit[1]; + + if(!empty($params['assign_headers'])) { + $smarty->assign($params['assign_headers'],split("\r\n",$csplit[0])); + } + } + } else { + $smarty->_trigger_fatal_error("[plugin] unable to parse URL, check syntax"); + return; + } + } else { + // ftp fetch + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] .'\''); + return; + } + } + + } + + + if (!empty($params['assign'])) { + $smarty->assign($params['assign'],$content); + } else { + return $content; + } +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.html_checkboxes.php b/trunk/gosa-core/include/smarty/plugins/function.html_checkboxes.php new file mode 100644 index 000000000..ed8ad7f33 --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.html_checkboxes.php @@ -0,0 +1,143 @@ + + * Type: function
+ * Name: html_checkboxes
+ * Date: 24.Feb.2003
+ * Purpose: Prints out a list of checkbox input types
+ * Input:
+ * - name (optional) - string default "checkbox" + * - values (required) - array + * - options (optional) - associative array + * - checked (optional) - array default not set + * - separator (optional) - ie
or   + * - output (optional) - the output next to each checkbox + * - assign (optional) - assign the output as an array to this variable + * Examples: + *
+ * {html_checkboxes values=$ids output=$names}
+ * {html_checkboxes values=$ids name='box' separator='
' output=$names} + * {html_checkboxes values=$ids checked=$checked separator='
' output=$names} + *
+ * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} + * (Smarty online manual) + * @author Christopher Kvarme + * @author credits to Monte Ohrt + * @version 1.0 + * @param array + * @param Smarty + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_checkboxes($params, &$smarty) +{ + require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); + + $name = 'checkbox'; + $values = null; + $options = null; + $selected = null; + $separator = ''; + $labels = true; + $output = null; + + $extra = ''; + + foreach($params as $_key => $_val) { + switch($_key) { + case 'name': + case 'separator': + $$_key = $_val; + break; + + case 'labels': + $$_key = (bool)$_val; + break; + + case 'options': + $$_key = (array)$_val; + break; + + case 'values': + case 'output': + $$_key = array_values((array)$_val); + break; + + case 'checked': + case 'selected': + $selected = array_map('strval', array_values((array)$_val)); + break; + + case 'checkboxes': + $smarty->trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING); + $options = (array)$_val; + break; + + case 'assign': + break; + + default: + if(!is_array($_val)) { + $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; + } else { + $smarty->trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + } + } + + if (!isset($options) && !isset($values)) + return ''; /* raise error here? */ + + settype($selected, 'array'); + $_html_result = array(); + + if (isset($options)) { + + foreach ($options as $_key=>$_val) + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); + + + } else { + foreach ($values as $_i=>$_key) { + $_val = isset($output[$_i]) ? $output[$_i] : ''; + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); + } + + } + + if(!empty($params['assign'])) { + $smarty->assign($params['assign'], $_html_result); + } else { + return implode("\n",$_html_result); + } + +} + +function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) { + $_output = ''; + if ($labels) $_output .= ''; + $_output .= $separator; + + return $_output; +} + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.html_image.php b/trunk/gosa-core/include/smarty/plugins/function.html_image.php new file mode 100644 index 000000000..9abae72ef --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.html_image.php @@ -0,0 +1,142 @@ + + * Name: html_image
+ * Date: Feb 24, 2003
+ * Purpose: format HTML tags for the image
+ * Input:
+ * - file = file (and path) of image (required) + * - height = image height (optional, default actual height) + * - width = image width (optional, default actual width) + * - basedir = base directory for absolute paths, default + * is environment variable DOCUMENT_ROOT + * - path_prefix = prefix for path output (optional, default empty) + * + * Examples: {html_image file="/images/masthead.gif"} + * Output: + * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image} + * (Smarty online manual) + * @author Monte Ohrt + * @author credits to Duda - wrote first image function + * in repository, helped with lots of functionality + * @version 1.0 + * @param array + * @param Smarty + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_image($params, &$smarty) +{ + require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); + + $alt = ''; + $file = ''; + $height = ''; + $width = ''; + $extra = ''; + $prefix = ''; + $suffix = ''; + $path_prefix = ''; + $server_vars = ($smarty->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; + $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : ''; + foreach($params as $_key => $_val) { + switch($_key) { + case 'file': + case 'height': + case 'width': + case 'dpi': + case 'path_prefix': + case 'basedir': + $$_key = $_val; + break; + + case 'alt': + if(!is_array($_val)) { + $$_key = smarty_function_escape_special_chars($_val); + } else { + $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + + case 'link': + case 'href': + $prefix = ''; + $suffix = ''; + break; + + default: + if(!is_array($_val)) { + $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; + } else { + $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + } + } + + if (empty($file)) { + $smarty->trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE); + return; + } + + if (substr($file,0,1) == '/') { + $_image_path = $basedir . $file; + } else { + $_image_path = $file; + } + + if(!isset($params['width']) || !isset($params['height'])) { + if(!$_image_data = @getimagesize($_image_path)) { + if(!file_exists($_image_path)) { + $smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE); + return; + } else if(!is_readable($_image_path)) { + $smarty->trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE); + return; + } else { + $smarty->trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE); + return; + } + } + if ($smarty->security && + ($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) && + (require_once(SMARTY_CORE_DIR . 'core.is_secure.php')) && + (!smarty_core_is_secure($_params, $smarty)) ) { + $smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE); + } + + if(!isset($params['width'])) { + $width = $_image_data[0]; + } + if(!isset($params['height'])) { + $height = $_image_data[1]; + } + + } + + if(isset($params['dpi'])) { + if(strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) { + $dpi_default = 72; + } else { + $dpi_default = 96; + } + $_resize = $dpi_default/$params['dpi']; + $width = round($width * $_resize); + $height = round($height * $_resize); + } + + return $prefix . ''.$alt.'' . $suffix; +} + +/* vim: set expandtab: */ + +?> diff --git a/trunk/gosa-core/include/smarty/plugins/function.html_options.php b/trunk/gosa-core/include/smarty/plugins/function.html_options.php new file mode 100644 index 000000000..cebadde47 --- /dev/null +++ b/trunk/gosa-core/include/smarty/plugins/function.html_options.php @@ -0,0 +1,122 @@ + + * Name: html_options
+ * Input:
+ * - name (optional) - string default "select" + * - values (required if no options supplied) - array + * - options (required if no values supplied) - associative array + * - selected (optional) - string default not set + * - output (required if not options supplied) - array + * Purpose: Prints the list of
'); + document.write('

   '.$content['name'].''.$content['description'].''.$content['type'].'
 '.$attrs['cn'][0].''.$description.''.$content.'
+ + + + + + + + + + + + {$objectList} + +
{t}Object name{/t}{t}Description{/t}{t}Contents{/t}
+{else} +{t}This object has no relationship to other objects.{/t} +{/if} diff --git a/trunk/gosa-core/plugins/generic/welcome/main.inc b/trunk/gosa-core/plugins/generic/welcome/main.inc new file mode 100644 index 000000000..e501f71ae --- /dev/null +++ b/trunk/gosa-core/plugins/generic/welcome/main.inc @@ -0,0 +1,32 @@ +assign("iconmenu", $plist->show_iconmenu()); + $smarty->assign("header", print_header(get_template_path('images/welcome.png'), sprintf(_("Welcome %s!"), $ui->cn))); + $smarty->assign("year", date("Y")); + $smarty->assign("revision", get_gosa_version()); + $display= $smarty->fetch(get_template_path('welcome.tpl', TRUE)); +} + +?> diff --git a/trunk/gosa-core/plugins/generic/welcome/welcome.tpl b/trunk/gosa-core/plugins/generic/welcome/welcome.tpl new file mode 100644 index 000000000..35a27edf4 --- /dev/null +++ b/trunk/gosa-core/plugins/generic/welcome/welcome.tpl @@ -0,0 +1,19 @@ +{$header} + +

+ {t}This is the GOsa main menu. You can select your tasks from the menu on the left, or by choosing one of the pictograms below. All changes apply directly to your companies LDAP server.{/t} +

+ +

+ {t}Use 'Sign out' on the upper left to close the connection and 'Main' to get back to the pictogram view.{/t} +

+ +{$iconmenu} + +
+ + + + + diff --git a/trunk/gosa-core/plugins/personal/generic/class_user.inc b/trunk/gosa-core/plugins/personal/generic/class_user.inc new file mode 100644 index 000000000..adb14ec18 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/generic/class_user.inc @@ -0,0 +1,1702 @@ + + \version 2.00 + \date 24.07.2003 + + This class provides the functionality to read and write all attributes + relevant for person, organizationalPerson, inetOrgPerson and gosaAccount + from/to the LDAP. It does syntax checking and displays the formulars required. + */ + +class user extends plugin +{ + /* Definitions */ + var $plHeadline= "Generic"; + var $plDescription= "Edit organizational user settings"; + + /* The attribute gotoLastSystemLogin represents the timestamp of the last + successfull login on the users workstation. + Read the FAQ to get a hint about how to configure this. + */ + var $gotoLastSystemLogin = ""; + + /* Plugin specific values */ + var $base= ""; + var $orig_base= ""; + var $cn= ""; + var $new_dn= ""; + var $personalTitle= ""; + var $academicTitle= ""; + var $homePostalAddress= ""; + var $homePhone= ""; + var $labeledURI= ""; + var $o= ""; + var $ou= ""; + var $departmentNumber= ""; + var $employeeNumber= ""; + var $employeeType= ""; + var $roomNumber= ""; + var $telephoneNumber= ""; + var $facsimileTelephoneNumber= ""; + var $mobile= ""; + var $pager= ""; + var $l= ""; + var $st= ""; + var $postalAddress= ""; + var $dateOfBirth; + var $use_dob= "0"; + var $gender="0"; + var $preferredLanguage="0"; + + var $jpegPhoto= "*removed*"; + var $photoData= ""; + var $old_jpegPhoto= ""; + var $old_photoData= ""; + var $cert_dialog= FALSE; + var $picture_dialog= FALSE; + var $pwObject= NULL; + + var $userPKCS12= ""; + var $userSMIMECertificate= ""; + var $userCertificate= ""; + var $certificateSerialNumber= ""; + var $old_certificateSerialNumber= ""; + var $old_userPKCS12= ""; + var $old_userSMIMECertificate= ""; + var $old_userCertificate= ""; + + var $gouvernmentOrganizationalUnit= ""; + var $houseIdentifier= ""; + var $street= ""; + var $postalCode= ""; + var $vocation= ""; + var $ivbbLastDeliveryCollective= ""; + var $gouvernmentOrganizationalPersonLocality= ""; + var $gouvernmentOrganizationalUnitDescription= ""; + var $gouvernmentOrganizationalUnitSubjectArea= ""; + var $functionalTitle= ""; + var $role= ""; + var $publicVisible= ""; + + var $orig_dn; + var $dialog; + + /* variables to trigger password changes */ + var $pw_storage= "md5"; + var $last_pw_storage= "unset"; + var $had_userCertificate= FALSE; + + var $view_logged = FALSE; + + /* attribute list for save action */ + var $attributes= array("sn", "givenName", "uid", "personalTitle", "academicTitle", + "homePostalAddress", "homePhone", "labeledURI", "ou", "o", "dateOfBirth", "gender","preferredLanguage", + "departmentNumber", "employeeNumber", "employeeType", "l", "st","jpegPhoto", + "roomNumber", "telephoneNumber", "mobile", "pager", "cn", "userPKCS12", + "postalAddress", "facsimileTelephoneNumber", "userSMIMECertificate"); + + var $objectclasses= array("top", "person", "organizationalPerson", "inetOrgPerson", + "gosaAccount"); + + /* attributes that are part of the government mode */ + var $govattrs= array("gouvernmentOrganizationalUnit", "houseIdentifier", "vocation", + "ivbbLastDeliveryCollective", "gouvernmentOrganizationalPersonLocality", + "gouvernmentOrganizationalUnitDescription","gouvernmentOrganizationalUnitSubjectArea", + "functionalTitle", "certificateSerialNumber", "publicVisible", "street", "role", + "postalCode"); + + var $multiple_support = TRUE; + + var $governmentmode = FALSE; + + /* constructor, if 'dn' is set, the node loads the given + 'dn' from LDAP */ + function user (&$config, $dn= NULL) + { + $this->config= $config; + /* Configuration is fine, allways */ + if($this->config->get_cfg_value("honourIvbbAttributes") == "true"){ + $this->governmentmode = TRUE; + $this->attributes=array_merge($this->attributes,$this->govattrs); + } + + /* Load base attributes */ + plugin::plugin ($config, $dn); + + /* If gotoLastSystemLogin is available read it from ldap and create a readable + date time string. + */ + if(isset($this->attrs['gotoLastSystemLogin'][0]) && preg_match("/^[0-9]*$/",$this->attrs['gotoLastSystemLogin'][0])){ + $this->gotoLastSystemLogin = date("d.m.Y H:i:s", $this->attrs['gotoLastSystemLogin'][0]); + } + + $this->orig_dn = $this->dn; + $this->new_dn = $dn; + + if ($this->governmentmode){ + /* Fix public visible attribute if unset */ + if (!isset($this->attrs['publicVisible'])){ + $this->publicVisible == "nein"; + } + } + + /* Load government mode attributes */ + if ($this->governmentmode){ + /* Copy all attributs */ + foreach ($this->govattrs as $val){ + if (isset($this->attrs["$val"][0])){ + $this->$val= $this->attrs["$val"][0]; + } + } + } + + /* Create me for new accounts */ + if ($dn == "new"){ + $this->is_account= TRUE; + } + + /* Make hash default to md5 if not set in config */ + $hash= $this->config->get_cfg_value("passwordDefaultHash", "crypt/md5"); + + /* Load data from LDAP? */ + if ($dn !== NULL){ + + /* Do base conversation */ + if ($this->dn == "new"){ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } else { + $this->base= dn2base($dn); + } + + /* get password storage type */ + if (isset ($this->attrs['userPassword'][0])){ + /* Initialize local array */ + $matches= array(); + if (preg_match ("/^{[^}]+}/", $this->attrs['userPassword'][0])){ + $tmp= passwordMethod::get_method($this->attrs['userPassword'][0]); + if(is_object($tmp)){ + $this->pw_storage= $tmp->get_hash(); + } + + } else { + if ($this->attrs['userPassword'][0] != ""){ + $this->pw_storage= "clear"; + } else { + $this->pw_storage= $hash; + } + } + } else { + /* Preset with vaule from configuration */ + $this->pw_storage= $hash; + } + + /* Load extra attributes: certificate and picture */ + $this->load_cert(); + $this->load_picture(); + if ($this->userCertificate != ""){ + $this->had_userCertificate= TRUE; + } + } + + /* Reset password storage indicator, used by password_change_needed() */ + if ($dn == "new"){ + $this->last_pw_storage= "unset"; + } else { + $this->last_pw_storage= $this->pw_storage; + } + + /* Generate dateOfBirth entry */ + if (isset ($this->attrs['dateOfBirth'])){ + /* This entry is ISO 8601 conform */ + list($year, $month, $day)= split("-", $this->attrs['dateOfBirth'][0], 3); + + $this->dateOfBirth=array( 'mon'=> $month,"mday"=> $day,"year"=> $year); + $this->use_dob= "1"; + } else { + $this->use_dob= "0"; + } + + /* Put gender attribute to upper case */ + if (isset ($this->attrs['gender'])){ + $this->gender= strtoupper($this->attrs['gender'][0]); + } + + $this->orig_base = $this->base; + } + + + + + /* execute generates the html output for this node */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + $smarty= get_smarty(); + $smarty->assign("gotoLastSystemLogin",$this->gotoLastSystemLogin); + + /* Fill calendar */ + if ($this->dateOfBirth == "0"){ + $date= getdate(); + } else { + if(is_array($this->dateOfBirth)){ + $date = $this->dateOfBirth; + + // Trigger on dates like 1985-04-01, getdate only understands timestamps + } else if (!empty($this->dateOfBirth) && !is_numeric($this->dateOfBirth)){ + $date= getdate(strtotime($this->dateOfBirth)); + + } else { + $date = getdate($this->dateOfBirth); + } + } + + $days= array(); + for($d= 1; $d<32; $d++){ + $days[$d]= $d; + } + $years= array(); + + if(($date['year']-100)<1901){ + $start = 1901; + }else{ + $start = $date['year']-100; + } + + $end = $start +100; + + for($y= $start; $y<=$end; $y++){ + $years[]= $y; + } + $years['-']= "- "; + $months= msgPool::months(); + $months['-'] = '- '; + + $smarty->assign("day", $date["mday"]); + $smarty->assign("days", $days); + $smarty->assign("months", $months); + $smarty->assign("month", $date["mon"]-1); + $smarty->assign("years", $years); + $smarty->assign("year", $date["year"]); + + /* Assign sex */ + $sex= array(0 => " ", "F" => _("female"), "M" => _("male")); + $smarty->assign("gender_list", $sex); + $language= array_merge(array(0 => " ") ,get_languages(TRUE)); + $smarty->assign("preferredLanguage_list", $language); + + /* Get random number for pictures */ + srand((double)microtime()*1000000); + $smarty->assign("rand", rand(0, 10000)); + + + /* Do we represent a valid gosaAccount? */ + if (!$this->is_account){ + $str = "\"\" ". + msgPool::noValidExtension("GOsa").""; + return($str); + } + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once && $this->acl_is_writeable("base")){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->allowedBasesToMoveTo()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Password configure dialog handling */ + if(is_object($this->pwObject) && $this->pwObject->display){ + $output= $this->pwObject->configure(); + if ($output != ""){ + $this->dialog= TRUE; + return $output; + } + $this->dialog= false; + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* check if selected base is allowed to move to / create a new object */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* Want password method editing? */ + if ($this->acl_is_writeable("userPassword")){ + if (isset($_POST['edit_pw_method'])){ + if (!is_object($this->pwObject) || $this->pw_storage != $this->pwObject->get_hash_name()){ + $temp= passwordMethod::get_available_methods(); + $this->pwObject= new $temp[$this->pw_storage]($this->config,$this->dn); + } + $this->pwObject->display = TRUE; + $this->dialog= TRUE; + return ($this->pwObject->configure()); + } + } + + /* Want picture edit dialog? */ + if($this->acl_is_writeable("userPicture")) { + if (isset($_POST['edit_picture'])){ + /* Save values for later recovery, in case some presses + the cancel button. */ + $this->old_jpegPhoto= $this->jpegPhoto; + $this->old_photoData= $this->photoData; + $this->picture_dialog= TRUE; + $this->dialog= TRUE; + } + } + + /* Remove picture? */ + if($this->acl_is_writeable("userPicture",(!is_object($this->parent) && !session::is_set('edit'))) ){ + if (isset($_POST['picture_remove'])){ + $this->set_picture (); + $this->jpegPhoto= "*removed*"; + $this->is_modified= TRUE; + return($smarty->fetch (get_template_path('generic_picture.tpl', TRUE, dirname(__FILE__)))); + } + } + + /* Save picture */ + if (isset($_POST['picture_edit_finish'])){ + + /* Check for clean upload */ + if ($_FILES['picture_file']['name'] != ""){ + if (!is_uploaded_file($_FILES['picture_file']['tmp_name'])) { + msg_dialog::display(_("Error"), _("Cannot upload file!"), ERROR_DIALOG); + }else{ + /* Activate new picture */ + $this->set_picture($_FILES['picture_file']['tmp_name']); + } + } + $this->picture_dialog= FALSE; + $this->dialog= FALSE; + $this->is_modified= TRUE; + } + + + /* Cancel picture */ + if (isset($_POST['picture_edit_cancel'])){ + + /* Restore values */ + $this->jpegPhoto= $this->old_jpegPhoto; + $this->photoData= $this->old_photoData; + + /* Update picture */ + session::set('binary',$this->photoData); + session::set('binarytype',"image/jpeg"); + $this->picture_dialog= FALSE; + $this->dialog= FALSE; + } + + /* Toggle dateOfBirth information */ + if (isset($_POST['set_dob'])){ + $this->use_dob= ($this->use_dob == "0")?"1":"0"; + } + + + /* Want certificate= */ + if ((isset($_POST['edit_cert'])) && $this->acl_is_readable("Certificate")){ + + /* Save original values for later reconstruction */ + foreach (array("certificateSerialNumber", "userCertificate", + "userSMIMECertificate", "userPKCS12") as $val){ + + $oval= "old_$val"; + $this->$oval= $this->$val; + } + + $this->cert_dialog= TRUE; + $this->dialog= TRUE; + } + + + /* Cancel certificate dialog */ + if (isset($_POST['cert_edit_cancel'])){ + + /* Restore original values in case of 'cancel' */ + foreach (array("certificateSerialNumber", "userCertificate", + "userSMIMECertificate", "userPKCS12") as $val){ + + $oval= "old_$val"; + $this->$val= $this->$oval; + } + $this->cert_dialog= FALSE; + $this->dialog= FALSE; + } + + + /* Remove certificate? */ + if($this->acl_is_writeable("Certificate",(!is_object($this->parent) && !session::is_set('edit')))){ + foreach (array ("userCertificate", "userSMIMECertificate", "userPKCS12") as $val){ + if (isset($_POST["remove_$val"])){ + + /* Reset specified cert*/ + $this->$val= ""; + $this->is_modified= TRUE; + } + } + } + + /* Upload new cert and close dialog? */ + if($this->acl_is_writeable("Certificate",(!is_object($this->parent) && !session::is_set('edit')))){ + + $fail =false; + + if (isset($_POST['cert_edit_finish'])){ + + /* for all certificates do */ + foreach (array ("userCertificate", "userSMIMECertificate", "userPKCS12") + as $val){ + + /* Check for clean upload */ + if (array_key_exists($val."_file", $_FILES) && + array_key_exists('name', $_FILES[$val."_file"]) && + $_FILES[$val."_file"]['name'] != "" && + is_uploaded_file($_FILES[$val."_file"]['tmp_name'])) { + $this->set_cert("$val", $_FILES[$val."_file"]['tmp_name']); + } + } + + /* Save serial number */ + if (isset($_POST["certificateSerialNumber"]) && + $_POST["certificateSerialNumber"] != ""){ + + if (!tests::is_id($_POST["certificateSerialNumber"])){ + $fail = true; + msg_dialog::display(_("Error"), msgPool::invalid(_("Serial number"),$_POST["certificateSerialNumber"],"/[0-9]/"),ERROR_DIALOG); + + foreach(array("userCertificate", "userSMIMECertificate", "userPKCS12") as $cert){ + if ($this->$cert != ""){ + $smarty->assign("$cert"."_state", "true"); + } else { + $smarty->assign("$cert"."_state", ""); + } + } + } + + $this->certificateSerialNumber= $_POST["certificateSerialNumber"]; + $this->is_modified= TRUE; + } + if(!$fail){ + $this->cert_dialog= FALSE; + $this->dialog= FALSE; + } + } + } + /* Display picture dialog */ + if ($this->picture_dialog){ + return($smarty->fetch (get_template_path('generic_picture.tpl', TRUE, dirname(__FILE__)))); + } + + /* Display cert dialog */ + if ($this->cert_dialog){ + $smarty->assign("CertificateACL",$this->getacl("Certificate",(!is_object($this->parent) && !session::is_set('edit')))); + $smarty->assign("Certificate_readable",$this->acl_is_readable("Certificate")); + $smarty->assign("certificateSerialNumber",$this->certificateSerialNumber); + + foreach(array("userCertificate", "userSMIMECertificate", "userPKCS12") as $cert){ + if ($this->$cert != ""){ + /* import certificate */ + $certificate = new certificate; + $certificate->import($this->$cert); + + /* Read out data*/ + $timeto = $certificate->getvalidto_date(); + $timefrom = $certificate->getvalidfrom_date(); + + + /* Additional info if start end time is '0' */ + $add_str_info = ""; + if($timeto == 0 && $timefrom == 0){ + $add_str_info = "
"._("(Some types of certificates are currently not supported and may be displayed as 'invalid'.)").""; + } + + $str = " + + + + +
CN".preg_replace("/ /", " ", $certificate->getname())."

". + + sprintf(_("Certificate is valid from %s to %s and is currently %s."), + "".date('d M Y',$timefrom)."", + "".date('d M Y',$timeto)."", + $certificate->isvalid()?""._("valid")."": + ""._("invalid")."").$add_str_info; + + $smarty->assign($cert."info",$str); + $smarty->assign($cert."_state","true"); + } else { + $smarty->assign($cert."info", ""._("No certificate installed").""); + $smarty->assign($cert."_state",""); + } + } + + if($this->governmentmode){ + $smarty->assign("honourIvbbAttributes", "true"); + }else{ + $smarty->assign("honourIvbbAttributes", "false"); + } + $smarty->assign("governmentmode", $this->governmentmode); + return($smarty->fetch (get_template_path('generic_certs.tpl', TRUE, dirname(__FILE__)))); + } + + /* Prepare password hashes */ + if ($this->pw_storage == ""){ + $this->pw_storage= $this->config->get_cfg_value("hash"); + } + + $temp= passwordMethod::get_available_methods(); + $is_configurable= FALSE; + $hashes = $temp['name']; + if(isset($temp[$this->pw_storage])){ + $test= new $temp[$this->pw_storage]($this->config); + $is_configurable= $test->is_configurable(); + }else{ + new msg_dialog(_("Password method"),_("The selected password method is no longer available."),WARNING_DIALOG); + } + + + /* Create password methods array */ + $pwd_methods = array(); + foreach($hashes as $id => $name){ + if(!empty($temp['desc'][$id])){ + $pwd_methods[$name] = $name." (".$temp['desc'][$id].")"; + }else{ + $pwd_methods[$name] = $name; + } + } + + /* Load attributes and acl's */ + $ui =get_userinfo(); + foreach($this->attributes as $val){ + $smarty->assign("$val", $this->$val); + if(in_array($val,$this->multi_boxes)){ + $smarty->assign("use_".$val,TRUE); + }else{ + $smarty->assign("use_".$val,FALSE); + } + } + foreach(array("base","pw_storage","edit_picture") as $val){ + if(in_array($val,$this->multi_boxes)){ + $smarty->assign("use_".$val,TRUE); + }else{ + $smarty->assign("use_".$val,FALSE); + } + } + + /* Set acls */ + $tmp = $this->plinfo(); + foreach($tmp['plProvidedAcls'] as $val => $translation){ + $smarty->assign("$val"."ACL", $this->getacl($val,(!is_object($this->parent) && !session::is_set('edit')))); + } + + $smarty->assign("pwmode", $pwd_methods); + $smarty->assign("pwmode_select", $this->pw_storage); + $smarty->assign("pw_configurable", $is_configurable); + $smarty->assign("passwordStorageACL", $this->getacl("userPassword",(!is_object($this->parent) && !session::is_set('edit')))); + $smarty->assign("base_select", $this->base); + + if(!session::is_set('edit')){ + $smarty->assign("CertificatesACL",""); + }else{ + $smarty->assign("CertificatesACL", $this->getacl("Certificate")); + } + + $smarty->assign("userPictureACL", $this->getacl("userPicture",(!is_object($this->parent) && !session::is_set('edit')))); + $smarty->assign("userPicture_is_readable", $this->acl_is_readable("userPicture",(!is_object($this->parent) && !session::is_set('edit')))); + + /* Create base acls */ + $tmp = @$this->allowedBasesToMoveTo(); + $smarty->assign("bases", $tmp); + + /* Save government mode attributes */ + if($this->governmentmode){ + $smarty->assign("governmentmode", "true"); + $ivbbmodes= array("nein", "ivbv", "testa", "ivbv,testa", "internet", + "internet,ivbv", "internet,testa", "internet,ivbv,testa"); + $smarty->assign("ivbbmodes", $ivbbmodes); + foreach ($this->govattrs as $val){ + $smarty->assign("$val", $this->$val); + $smarty->assign("$val"."ACL", $this->getacl($val,(!is_object($this->parent) && !session::is_set('edit')))); + } + } else { + $smarty->assign("governmentmode", "false"); + } + + /* Special mode for uid */ + $uidACL= $this->getacl("uid",(!is_object($this->parent) && !session::is_set('edit'))); + if (isset ($this->dn)){ + if ($this->dn != "new"){ + $uidACL= preg_replace("/w/","",$uidACL); + } + } else { + $uidACL= preg_replace("/w/","",$uidACL); + } + + $smarty->assign("uidACL", $uidACL); + $smarty->assign("is_template", $this->is_template); + $smarty->assign("use_dob", $this->use_dob); + + if (isset($this->parent)){ + if (isset($this->parent->by_object['phoneAccount']) && + $this->parent->by_object['phoneAccount']->is_account){ + $smarty->assign("has_phoneaccount", "true"); + } else { + $smarty->assign("has_phoneaccount", "false"); + } + } else { + $smarty->assign("has_phoneaccount", "false"); + } + $smarty->assign("multiple_support" , $this->multiple_support_active); + return($smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__)))); + } + + + /* remove object from parent */ + function remove_from_parent() + { + /* Only remove valid accounts */ + if(!$this->initially_was_account) return; + + /* Remove password extension */ + $temp= passwordMethod::get_available_methods(); + + /* Remove password method from user account */ + if(isset($temp[$this->pw_storage]) && class_available($temp[$this->pw_storage])){ + $this->pwObject= new $temp[$this->pw_storage]($this->config,$this->dn); + $this->pwObject->remove_from_parent(); + } + + /* Remove user */ + $ldap= $this->config->get_ldap_link(); + $ldap->rmdir ($this->dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + + new log("remove","users/".get_class($this),$this->dn,$this->attributes,$ldap->get_error()); + + /* Delete references to groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=posixGroup)(memberUid=".$this->uid."))", array("uid")); + while ($ldap->fetch()){ + $g= new group($this->config, $ldap->getDN()); + $g->removeUser($this->uid); + $g->save (); + } + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } + + /* If needed, let the password method do some cleanup */ + $tmp = new passwordMethod($this->config); + $available = $tmp->get_available_methods(); + if (in_array_ics($this->pw_storage, $available['name'])){ + $test= new $available[$this->pw_storage]($this->config); + $test->attrs= $this->attrs; + $test->dn= $this->dn; + $test->remove_from_parent(); + } + + /* Remove ACL dependencies too */ + $tmp = new acl($this->config,$this->parent,$this->dn); + $tmp->remove_acl(); + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove",array("uid" => $this->uid)); + } + + + /* Save data to object */ + function save_object() + { + if(isset($_POST['generic']) || isset($_POST['multiple_user_posted'])){ + + /* Make a backup of the current selected base */ + $base_tmp = $this->base; + + /* Parents save function */ + plugin::save_object (); + + /* Save government mode attributes */ + if ($this->governmentmode){ + foreach ($this->govattrs as $val){ + if ($this->acl_is_writeable($val,(!is_object($this->parent) && !session::is_set('edit'))) && isset($_POST["$val"])){ + $data= stripcslashes($_POST["$val"]); + if ($data != $this->$val){ + $this->is_modified= TRUE; + } + $this->$val= $data; + } + } + } + + /* In template mode, the uid is autogenerated... */ + if ($this->is_template){ + $this->uid= strtolower($this->sn); + $this->givenName= $this->sn; + } + + /* Save base and pw_storage, since these are no LDAP attributes */ + if (isset($_POST['base'])){ + + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$_POST['base']])){ + $base= validate($_POST['base']); + if ($base != $this->base){ + $this->is_modified= TRUE; + } + $this->base= $base; + }else{ + $this->base = $base_tmp; + msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); + } + } + + /* Get pw_storage mode */ + if (isset($_POST['pw_storage'])){ + foreach(array("pw_storage") as $val){ + if(isset($_POST[$val])){ + $data= validate($_POST[$val]); + if ($data != $this->$val){ + $this->is_modified= TRUE; + } + $this->$val= $data; + } + } + } + + if($this->pw_storage != $this->last_pw_storage && isset($_POST['pw_storage'])){ + if ($this->acl_is_writeable("userPassword")){ + $temp= passwordMethod::get_available_methods(); + if (!is_object($this->pwObject) || !($this->pwObject instanceOf $temp[$this->pw_storage])){ + foreach($temp as $id => $data){ + if(isset($data['name']) && $data['name'] == $this->pw_storage && $data['is_configurable']){ + $this->pwObject= new $temp[$this->pw_storage]($this->config,$this->dn); + break; + } + } + } + } + } + + /* Save current cn + */ + $this->cn = $this->givenName." ".$this->sn; + } + } + + function rebind($ldap, $referral) + { + $credentials= LDAP::get_credentials($referral, $this->config->current['REFERRAL']); + if (ldap_bind($ldap, $credentials['ADMIN'], $credentials['PASSWORD'])) { + $this->error = "Success"; + $this->hascon=true; + $this->reconnect= true; + return (0); + } else { + $this->error = "Could not bind to " . $credentials['ADMIN']; + return NULL; + } + } + + + /* Save data to LDAP, depending on is_account we save or delete */ + function save() + { + /* Only force save of changes .... + If this attributes aren't changed, avoid saving. + */ + if($this->gender=="0") $this->gender =""; + if($this->preferredLanguage=="0") $this->preferredLanguage =""; + + /* First use parents methods to do some basic fillup in $this->attrs */ + plugin::save (); + + if ($this->use_dob == "1"){ + /* If it is an array, the generic page has never been loaded - so there's no difference. Using an array would cause an error btw. */ + if(!is_array($this->attrs['dateOfBirth'])) { + $this->attrs['dateOfBirth'] = date("Y-m-d", $this->dateOfBirth); + } + } + + /* Remove additional objectClasses */ + $tmp= array(); + foreach ($this->attrs['objectClass'] as $key => $set){ + $found= false; + foreach (array("ivbbentry", "gosaUserTemplate") as $val){ + if (preg_match ("/^$set$/i", $val)){ + $found= true; + break; + } + } + if (!$found){ + $tmp[]= $set; + } + } + + /* Replace the objectClass array. This is done because of the + separation into government and normal mode. */ + $this->attrs['objectClass']= $tmp; + + /* Add objectClasss for template mode? */ + if ($this->is_template){ + $this->attrs['objectClass'][]= "gosaUserTemplate"; + } + + /* Hard coded government mode? */ + if ($this->governmentmode){ + $this->attrs['objectClass'][]= "ivbbentry"; + + /* Copy standard attributes */ + foreach ($this->govattrs as $val){ + if ($this->$val != ""){ + $this->attrs["$val"]= $this->$val; + } elseif (!$this->is_new) { + $this->attrs["$val"]= array(); + } + } + + /* Remove attribute if set to "nein" */ + if ($this->publicVisible == "nein"){ + $this->attrs['publicVisible']= array(); + if($this->is_new){ + unset($this->attrs['publicVisible']); + }else{ + $this->attrs['publicVisible']=array(); + } + + } + + } + + /* Special handling for attribute userCertificate needed */ + if ($this->userCertificate != ""){ + $this->attrs["userCertificate;binary"]= $this->userCertificate; + $remove_userCertificate= false; + } else { + $remove_userCertificate= true; + } + + /* Special handling for dateOfBirth value */ + if ($this->use_dob != "1"){ + if ($this->is_new) { + unset($this->attrs["dateOfBirth"]); + } else { + $this->attrs["dateOfBirth"]= array(); + } + } + if (!$this->gender){ + if ($this->is_new) { + unset($this->attrs["gender"]); + } else { + $this->attrs["gender"]= array(); + } + } + if (!$this->preferredLanguage){ + if ($this->is_new) { + unset($this->attrs["preferredLanguage"]); + } else { + $this->attrs["preferredLanguage"]= array(); + } + } + + /* Special handling for attribute jpegPhote needed, scale image via + image magick to 147x200 pixels and inject resulting data. */ + if ($this->jpegPhoto == "*removed*"){ + + /* Reset attribute to avoid writing *removed* as value */ + $this->attrs["jpegPhoto"] = array(); + + } else { + + /* Fallback if there's no image magick inside PHP */ + if (!function_exists("imagick_blob2image")){ + /* Get temporary file name for conversation */ + $fname = tempnam (TEMP_DIR, "GOsa"); + + /* Open file and write out photoData */ + $fp = fopen ($fname, "w"); + fwrite ($fp, $this->photoData); + fclose ($fp); + + /* Build conversation query. Filename is generated automatically, so + we do not need any special security checks. Exec command and save + output. For PHP safe mode, you'll need a configuration which respects + image magick as executable... */ + $query= "convert -size 147x200 $fname -resize 147x200 +profile \"*\" -"; + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $query, "Execute"); + + /* Read data written by convert */ + $output= ""; + $sh= popen($query, 'r'); + while (!feof($sh)){ + $output.= fread($sh, 4096); + } + pclose($sh); + + unlink($fname); + + /* Save attribute */ + $this->attrs["jpegPhoto"] = $output; + + } else { + + /* Load the new uploaded Photo */ + if(!$handle = imagick_blob2image($this->photoData)) { + new log("debug","users/".get_class($this),$this->dn,array(),"Could not access uploaded image"); + } + + /* Resizing image to 147x200 and blur */ + if(!imagick_resize($handle,147,200,IMAGICK_FILTER_GAUSSIAN,0)){ + new log("debug","users/".get_class($this),$this->dn,array(),"Could not resize uploaded image"); + } + + /* Converting image to JPEG */ + if(!imagick_convert($handle,"JPEG")) { + new log("debug","users/".get_class($this),$this->dn,array(),"Could not convert uploaded image to jepg"); + } + + /* Creating binary Code for the Image */ + if(!$dump = imagick_image2blob($handle)){ + new log("debug","users/".get_class($this),$this->dn,array(),"Could not create new user image"); + } + + /* Sending Image */ + $output= $dump; + + /* Save attribute */ + $this->attrs["jpegPhoto"] = $output; + } + + } + + /* This only gets called when user is renaming himself */ + $ldap= $this->config->get_ldap_link(); + if ($this->dn != $this->new_dn){ + + /* Write entry on new 'dn' */ + $this->update_acls($this->dn,$this->new_dn); + $this->move($this->dn, $this->new_dn); + + /* Happen to use the new one */ + change_ui_dn($this->dn, $this->new_dn); + $this->dn= $this->new_dn; + } + + + /* Save data. Using 'modify' implies that the entry is already present, use 'add' for + new entries. So do a check first... */ + $ldap->cat ($this->dn, array('dn')); + if ($ldap->fetch()){ + $mode= "modify"; + } else { + $mode= "add"; + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + } + + /* Set password to some junk stuff in case of templates */ + if ($this->is_template){ + $temp= passwordMethod::get_available_methods(); + foreach($temp as $id => $data){ + if(isset($data['name']) && $data['name'] == $this->pw_storage){ + $tmp = new $temp[$this->pw_storage]($this->config,$this->dn); + $tmp->set_hash($this->pw_storage); + $this->attrs['userPassword'] = $tmp->create_template_hash($this->attrs); + break; + } + } + } + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save via $mode"); + + /* Finally write data with selected 'mode' */ + $this->cleanup(); + + /* Update current locale settings, if we have edited ourselves */ + $ui = session::get('ui'); + if(isset($this->attrs['preferredLanguage']) && $this->dn == $ui->dn){ + $ui->language = $this->preferredLanguage; + session::set('ui',$ui); + session::set('Last_init_lang',"update"); + } + + $ldap->cd ($this->dn); + $ldap->$mode ($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + return (1); + } + + /* Remove ACL dependencies too */ + if($this->dn != $this->orig_dn && $this->orig_dn != "new"){ + $tmp = new acl($this->config,$this->parent,$this->dn); + $tmp->update_acl_membership($this->orig_dn,$this->dn); + } + + if($mode == "modify"){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + /* Remove cert? + For some reason, the 'ldap' class doesn't want to remove binary entries, so I need + to work around myself. */ + if ($remove_userCertificate == true && !$this->is_new && $this->had_userCertificate){ + + /* Reset array, assemble new, this should be reworked */ + $this->attrs= array(); + $this->attrs['userCertificate;binary']= array(); + + /* Prepare connection */ + if (!($ds = ldap_connect($this->config->current['SERVER']))) { + die ("Could not connect to LDAP server"); + } + ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); + if (function_exists("ldap_set_rebind_proc") && $this->config->get_cfg_value("ldapFollowReferrals") == "true") { + ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1); + ldap_set_rebind_proc($ds, array(&$this, "rebind")); + } + if($this->config->get_cfg_value("ldapTLS") == "true"){ + ldap_start_tls($ds); + } + if (!($res = @ldap_bind($ds, $this->config->current['ADMIN'], + $this->config->current['PASSWORD']))) { + die ("Could not bind to LDAP"); + } + + /* Modify using attrs */ + ldap_mod_del($ds,$this->dn,$this->attrs); + ldap_close($ds); + } + + /* If needed, let the password method do some cleanup */ + if ($this->pw_storage != $this->last_pw_storage){ + $tmp = new passwordMethod($this->config); + $available = $tmp->get_available_methods(); + if (in_array_ics($this->last_pw_storage, $available['name'])){ + $test= new $available[$this->last_pw_storage]($this->config,$this->dn); + $test->attrs= $this->attrs; + $test->remove_from_parent(); + } + } + + /* Maybe the current password method want's to do some changes... */ + if (is_object($this->pwObject)){ + $this->pwObject->save($this->dn); + } + + /* Optionally execute a command after we're done */ + if ($mode == "add"){ + $this->handle_post_events("add", array("uid" => $this->uid)); + } elseif ($this->is_modified){ + $this->handle_post_events("modify", array("uid" => $this->uid)); + } + + return (0); + } + + + function update_new_dn() + { + $pt= ""; + if($this->config->get_cfg_value("personalTitleInDN") == "true"){ + if(!empty($this->personalTitle)){ + $pt = $this->personalTitle." "; + } + } + $this->cn= $pt.$this->givenName." ".$this->sn; + + /* Permissions for that base? */ + if ($this->config->get_cfg_value("accountPrimaryAttribute") == "uid"){ + $this->new_dn= 'uid='.$this->uid.','.get_people_ou().$this->base; + } else { + /* Don't touch dn, if cn hasn't changed */ + if (isset($this->saved_attributes['cn']) && $this->saved_attributes['cn'] == $this->cn && + $this->orig_base == $this->base ){ + $this->new_dn= $this->dn; + } else { + $this->new_dn= $this->create_unique_dn('cn', get_people_ou().$this->base); + } + } + } + + + /* Check formular input */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Configurable password methods should be configured initially. + */ + if($this->last_pw_storage != $this->pw_storage){ + $temp= passwordMethod::get_available_methods(); + foreach($temp['name'] as $id => $name){ + if($name == $this->pw_storage){ + if($temp['is_configurable'][$id] && !$this->pwObject instanceof $temp[$name] ){ + $message[] = _("The selected password method requires initial configuration!"); + } + break; + } + } + } + + $this->update_new_dn(); + + /* Set the new acl base */ + if($this->dn == "new") { + $this->set_acl_base($this->base); + } + + /* Check if we are allowed to create/move this user + */ + + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[]= msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->new_dn != $this->orig_dn && !$this->acl_is_moveable($this->base)){ + $message[]= msgPool::permMove(); + } + + /* UID already used? */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(uid=$this->uid)", array("uid")); + $ldap->fetch(); + if ($ldap->count() != 0 && $this->dn == 'new'){ + $message[]= msgPool::duplicated(_("Login")); + } + + /* In template mode, the uid and givenName are autogenerated... */ + if ($this->sn == ""){ + $message[]= msgPool::required(_("Name")); + } + + if (!$this->is_template){ + if ($this->givenName == ""){ + $message[]= msgPool::required(_("Given name")); + } + if ($this->uid == ""){ + $message[]= msgPool::required(_("Login")); + } + if ($this->config->get_cfg_value("accountPrimaryAttribute") != "uid"){ + $ldap->cat($this->new_dn); + if ($ldap->count() != 0 && $this->dn != $this->new_dn && $this->dn == 'new'){ + $message[]= msgPool::duplicated(_("Name")); + } + } + } + + /* Check for valid input */ + if ($this->is_modified && !tests::is_uid($this->uid)){ + + if (strict_uid_mode()){ + $message[]= msgPool::invalid(_("Login"), $this->uid, "/[a-z0-9_-]/"); + } else { + $message[]= msgPool::invalid(_("Login"), $this->uid, "/[a-z0-9_-]/i"); + } + } + if (!tests::is_url($this->labeledURI)){ + $message[]= msgPool::invalid(_("Homepage"), "", "", "http://www.your-domain.com/yourname"); + } + + /* Check phone numbers */ + if (!tests::is_phone_nr($this->telephoneNumber)){ + $message[]= msgPool::invalid(_("Phone"), $this->telephoneNumber, "/[\/0-9 ()+*-]/"); + } + if (!tests::is_phone_nr($this->facsimileTelephoneNumber)){ + $message[]= msgPool::invalid(_("Fax"), $this->facsimileTelephoneNumber, "/[\/0-9 ()+*-]/"); + } + if (!tests::is_phone_nr($this->mobile)){ + $message[]= msgPool::invalid(_("Mobile"), $this->mobile, "/[\/0-9 ()+*-]/"); + } + if (!tests::is_phone_nr($this->pager)){ + $message[]= msgPool::invalid(_("Pager"), $this->pager, "/[\/0-9 ()+*-]/"); + } + + /* Check for reserved characers */ + if (preg_match ('/[,+"?\'()=<>;\\\\]/', $this->givenName)){ + $message[]= msgPool::invalid(_("Given name"), $this->givenName, '/[^,+"?\'()=<>;\\\\]/'); + } + if (preg_match ('/[,+"?\'()=<>;\\\\]/', $this->sn)){ + $message[]= msgPool::invalid(_("Name"), $this->sn, '/[^,+"?\'()=<>;\\\\]/'); + } + + return $message; + } + + + /* Indicate whether a password change is needed or not */ + function password_change_needed() + { + if(in_array("pw_storage",$this->multi_boxes)){ + return(TRUE); + } + return($this->pw_storage != $this->last_pw_storage && !$this->is_template); + } + + + /* Load a jpegPhoto from LDAP, this is going to be simplified later on */ + function load_picture() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $data = $ldap->get_attribute($this->dn,"jpegPhoto"); + + if((!$data) || ($data == "*removed*")){ + + /* In case we don't get an entry, load a default picture */ + $this->set_picture (); + $this->jpegPhoto= "*removed*"; + }else{ + + /* Set picture */ + $this->photoData= $data; + session::set('binary',$this->photoData); + session::set('binarytype',"image/jpeg"); + $this->jpegPhoto= ""; + } + } + + + /* Load a certificate from LDAP, this is going to be simplified later on */ + function load_cert() + { + $ds= ldap_connect($this->config->current['SERVER']); + ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); + if (function_exists("ldap_set_rebind_proc") && $this->config->get_cfg_value("ldapFollowReferrals") == "true"){ + ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1); + ldap_set_rebind_proc($ds, array(&$this, "rebind")); + } + if ($this->config->get_cfg_value("ldapTLS") == "true"){ + ldap_start_tls($ds); + } + + $r= ldap_bind($ds); + $sr= @ldap_read($ds, $this->dn, "userCertificate=*", array("userCertificate")); + + if ($sr) { + $ei= @ldap_first_entry($ds, $sr); + + if ($ei) { + if (!$info = @ldap_get_values_len($ds, $ei, "userCertificate;binary")){ + $this->userCertificate= ""; + } else { + $this->userCertificate= $info[0]; + } + } + } else { + $this->userCertificate= ""; + } + + ldap_unbind($ds); + } + + + /* Load picture from file to object */ + function set_picture($filename ="") + { + if (!is_file($filename) || $filename =="" ){ + $filename= "./plugins/users/images/default.jpg"; + $this->jpegPhoto= "*removed*"; + } + + $fd = fopen ($filename, "rb"); + $this->photoData= fread ($fd, filesize ($filename)); + session::set('binary',$this->photoData); + session::set('binarytype',"image/jpeg"); + $this->jpegPhoto= ""; + + fclose ($fd); + } + + + /* Load certificate from file to object */ + function set_cert($cert, $filename) + { + if(!$this->acl_is_writeable("Certificate",(!is_object($this->parent) && !session::is_set('edit')))) return; + $fd = fopen ($filename, "rb"); + if (filesize($filename)>0) { + $this->$cert= fread ($fd, filesize ($filename)); + fclose ($fd); + $this->is_modified= TRUE; + } else { + msg_dialog::display(_("Error"), _("Cannot open certificate!"), ERROR_DIALOG); + } + } + + /* Adapt from given 'dn' */ + function adapt_from_template($dn, $skip= array()) + { + plugin::adapt_from_template($dn, $skip); + + /* Get password method from template + */ + $tmp= passwordMethod::get_method($this->attrs['userPassword'][0]); + if(is_object($tmp)){ + if($tmp->is_configurable()){ + $tmp->adapt_from_template($dn); + $this->pwObject = &$tmp; + } + $this->pw_storage= $tmp->get_hash(); + } + + /* Get base */ + $this->base= preg_replace('/^[^,]+,'.get_people_ou().'/i', '', $dn); + + if($this->governmentmode){ + + /* Walk through govattrs */ + foreach ($this->govattrs as $val){ + + if (in_array($val, $skip)){ + continue; + } + + if (isset($this->attrs["$val"][0])){ + + /* If attribute is set, replace dynamic parts: + %sn, %givenName and %uid. Fill these in our local variables. */ + $value= $this->attrs["$val"][0]; + + foreach (array("sn", "givenName", "uid") as $repl){ + if (preg_match("/%$repl/i", $value)){ + $value= preg_replace ("/%$repl/i", + $this->parent->$repl, $value); + } + } + $this->$val= $value; + } + } + } + + /* Get back uid/sn/givenName - only write if nothing's skipped */ + if ($this->parent !== NULL && count($skip) == 0){ + $this->uid= $this->parent->uid; + $this->sn= $this->parent->sn; + $this->givenName= $this->parent->givenName; + } + } + + + /* This avoids that users move themselves out of their rights. + */ + function allowedBasesToMoveTo() + { + /* Get bases */ + $bases = $this->get_allowed_bases(); + return($bases); + } + + + function getCopyDialog() + { + $str = ""; + + session::set('binary',$this->photoData); + session::set('binarytype',"image/jpeg"); + + /* Get random number for pictures */ + srand((double)microtime()*1000000); + $rand = rand(0, 10000); + + $smarty = get_smarty(); + + $smarty->assign("passwordTodo","clear"); + + if(isset($_POST['passwordTodo'])){ + $smarty->assign("passwordTodo",$_POST['passwordTodo']); + } + + $smarty->assign("sn", $this->sn); + $smarty->assign("givenName",$this->givenName); + $smarty->assign("uid", $this->uid); + $smarty->assign("rand", $rand); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); + + + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + function saveCopyDialog() + { + /* Set_acl_base */ + $this->set_acl_base($this->base); + + if((isset($_FILES['picture_file']['tmp_name'])) && ($_FILES['picture_file']['size'] > 0)){ + $this->set_picture($_FILES['picture_file']['tmp_name']); + } + + /* Remove picture? */ + if (isset($_POST['picture_remove'])){ + $this->jpegPhoto= "*removed*"; + $this->set_picture ("./plugins/users/images/default.jpg"); + $this->is_modified= TRUE; + } + + $attrs = array("uid","givenName","sn"); + foreach($attrs as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Reset certificate information addepted from source user + to avoid setting the same user certificate for the destination user. */ + $this->userPKCS12= ""; + $this->userSMIMECertificate= ""; + $this->userCertificate= ""; + $this->certificateSerialNumber= ""; + $this->old_certificateSerialNumber= ""; + $this->old_userPKCS12= ""; + $this->old_userSMIMECertificate= ""; + $this->old_userCertificate= ""; + } + + + static function plInfo() + { + + $govattrs= array( + "gouvernmentOrganizationalUnit" => _("Unit"), + "houseIdentifier" => _("House identifier"), + "vocation" => _("Vocation"), + "ivbbLastDeliveryCollective" => _("Last delivery"), + "gouvernmentOrganizationalPersonLocality" => _("Person locality"), + "gouvernmentOrganizationalUnitDescription" => _("Unit description"), + "gouvernmentOrganizationalUnitSubjectArea" => _("Subject area"), + "functionalTitle" => _("Functional title"), + "certificateSerialNumber" => _("Certificate serial number"), + "publicVisible" => _("Public visible"), + "street" => _("Street"), + "role" => _("Role"), + "postalCode" => _("Postal code")); + + $ret = array( + "plShortName" => _("Generic"), + "plDescription" => _("Generic user settings"), + "plSelfModify" => TRUE, + "plDepends" => array(), + "plPriority" => 1, + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users" => array("description" => _("Users"), + "objectClass" => "gosaAccount")), + + "plProvidedAcls" => array( + + "sn" => _("Surname"), + "givenName" => _("Given name"), + "uid" => _("User identification"), + "personalTitle" => _("Personal title"), + "academicTitle" => _("Academic title"), + + "dateOfBirth" => _("Date of birth"), + "gender" => _("Gender"), + "preferredLanguage" => _("Preferred language"), + "base" => _("Base"), + + "userPicture" => _("User picture"), + + "o" => _("Organization"), + "ou" => _("Department"), + "departmentNumber" => _("Department number"), + "employeeNumber" => _("Employee number"), + "employeeType" => _("Employee type"), + + "roomNumber" => _("Room number"), + "telephoneNumber" => _("Telefon number"), + "pager" => _("Pager number"), + "mobile" => _("Mobile number"), + "facsimileTelephoneNumber" => _("Fax number"), + + "st" => _("State"), + "l" => _("Location"), + "postalAddress" => _("Postal address"), + + "homePostalAddress" => _("Home postal address"), + "homePhone" => _("Home phone number"), + "labeledURI" => _("Homepage"), + "userPassword" => _("User password method"), + "Certificate" => _("User certificates")) + + ); + + /* Append government attributes if required */ + global $config; + if($config->get_cfg_value("honourIvbbAttributes") == "true"){ + foreach($govattrs as $attr => $desc){ + $ret["plProvidedAcls"][$attr] = $desc; + } + } + return($ret); + } + + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("pw_storage",$this->multi_boxes)){ + $ret['pw_storage'] = $this->pw_storage; + } + if(in_array("edit_picture",$this->multi_boxes)){ + $ret['jpegPhoto'] = $this->jpegPhoto; + $ret['photoData'] = $this->photoData; + $ret['old_jpegPhoto'] = $this->old_jpegPhoto; + $ret['old_photoData'] = $this->old_photoData; + } + if(isset($ret['dateOfBirth'])){ + unset($ret['dateOfBirth']); + } + if(isset($ret['cn'])){ + unset($ret['cn']); + } + $ret['is_modified'] = $this->is_modified; + if(in_array("base",$this->multi_boxes)){ + $ret['orig_base']="Changed_by_Multi_Plug"; + $ret['base']=$this->base; + } + return($ret); + } + + + function multiple_save_object() + { + plugin::multiple_save_object(); + + /* Get pw_storage mode */ + if (isset($_POST['pw_storage'])){ + foreach(array("pw_storage") as $val){ + if(isset($_POST[$val])){ + $data= validate(get_post($val)); + if ($data != $this->$val){ + $this->is_modified= TRUE; + } + $this->$val= $data; + } + } + } + if(isset($_POST['base'])){ + $this->base = get_post('base'); + } + + if(isset($_POST['user_mulitple_edit'])){ + foreach(array("base","pw_storage","edit_picture") as $val){ + if(isset($_POST["use_".$val])){ + $this->multi_boxes[] = $val; + } + } + } + } + + + function multiple_check() + { + /* Call check() to set new_dn correctly ... */ + $message = plugin::multiple_check(); + + /* Set the new acl base */ + if($this->dn == "new") { + $this->set_acl_base($this->base); + } + if (!tests::is_url($this->labeledURI) && in_array("labeledURI",$this->multi_boxes)){ + $message[]= msgPool::invalid(_("Homepage")); + } + if (!tests::is_phone_nr($this->telephoneNumber) && in_array("telephoneNumber",$this->multi_boxes)){ + $message[]= msgPool::invalid(_("Phone"), $this->telephoneNumber, "/[\/0-9 ()+*-]/"); + } + if (!tests::is_phone_nr($this->facsimileTelephoneNumber) && in_array("facsimileTelephoneNumber",$this->multi_boxes)){ + $message[]= msgPool::invalid(_("Fax"), $this->facsimileTelephoneNumber, "/[\/0-9 ()+*-]/"); + } + if (!tests::is_phone_nr($this->mobile) && in_array("mobile",$this->multi_boxes)){ + $message[]= msgPool::invalid(_("Mobile"), $this->mobile, "/[\/0-9 ()+*-]/"); + } + if (!tests::is_phone_nr($this->pager) && in_array("pager",$this->multi_boxes)){ + $message[]= msgPool::invalid(_("Pager"), $this->pager, "/[\/0-9 ()+*-]/"); + } + if (preg_match ('/[,+"?\'()=<>;\\\\]/', $this->givenName) && in_array("givenName",$this->multi_boxes)){ + $message[]= msgPool::invalid(_("Given name"), $this->giveName, '/[^,+"?\'()=<>;\\\\]/'); + } + if (preg_match ('/[,+"?\'()=<>;\\\\]/', $this->sn) && in_array("sn",$this->multi_boxes)){ + $message[]= msgPool::invalid(_("Name"), $this->sn, '/[^,+"?\'()=<>;\\\\]/'); + } + return($message); + } + + + + function multiple_execute() + { + return($this->execute()); + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/plugins/personal/generic/generic.tpl b/trunk/gosa-core/plugins/personal/generic/generic.tpl new file mode 100644 index 000000000..e0b138ff2 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/generic/generic.tpl @@ -0,0 +1,576 @@ + + + + + + + + + + + + + + + + + + + + +
+

{t}Personal information{/t}

+
+ + + + + + + +
+ {if !$userPicture_is_readable} + {t}Personal picture{/t} + {else} + {t}Personal picture{/t} + {/if} +
+{render acl=$userPictureACL checkbox=$multiple_support checked=$use_edit_picture} + +{/render} +
+
+ + {if $is_template ne "true"} + + + + + {else} + + + + + {/if} + + {if $is_template ne "true"} + + + + + + + + + {/if} + + + + + + + + + +{if !$multiple_support} + + + + + + + + +{/if} + + + + + + + + +
+{if $multiple_support} + +{else} +{render acl=$snACL} + +{/render} +{/if} +
{render acl=$snACL}{/render}
+ +{if $multiple_support} + +{else} +{render acl=$givenNameACL} + +{/render} +{/if} +
+ {if !$multiple_support} +{render acl=$uidACL} + +{/render} + {else} + + {/if} +
+
+ +
+
+{render acl=$personalTitleACL checkbox=$multiple_support checked=$use_personalTitle} + +{/render} +
+{render acl=$academicTitleACL checkbox=$multiple_support checked=$use_academicTitle} + +{/render} +
+
+ +
+
+{render acl=$dateOfBirthACL} + {if $use_dob eq 1} + + + + + + {else} + + {/if} +{/render} +
+ + +{render acl=$genderACL} + +{/render} +
+ + +{render acl=$preferredLanguageACL checkbox=$multiple_support checked=$use_preferredLanguage} + +{/render} +
+
+ +
+
+{render acl=$baseACL checkbox=$multiple_support checked=$use_base} + +{/render} +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} +
+
+   + + + + + + + + + + + + + + + + + + + + + + + + {if $is_template ne "true" && !$multiple_support} + + + + + {/if} + + {if $gotoLastSystemLogin} + + + + + {/if} +
+{render acl=$homePostalAddressACL checkbox=$multiple_support checked=$use_homePostalAddress} + +{/render} +
+ +{render acl=$homePhoneACL checkbox=$multiple_support checked=$use_homePhone} + +{/render} +
+{render acl=$labeledURIACL checkbox=$multiple_support checked=$use_labeledURI} + +{/render} +
+
+
+{render acl=$passwordStorageACL checkbox=$multiple_support checked=$use_pw_storage} + + {if $pw_configurable eq "true"} +   + {/if} +{/render} +
+{render acl=$CertificatesACL mode=read_active} + +{/render} +
{t}Last logon{/t}{$gotoLastSystemLogin}
+
+ +

 

+ + + + + + + + + + + + {if $governmentmode ne "true"} + + + + + + + + + + + + + + {else} + + + + + + + + + + {/if} + +
+

 {t}Organizational information{/t}

+
+ + + + + + + + + + + + + + + + + + + + + +
+{render acl=$oACL checkbox=$multiple_support checked=$use_o} + +{/render} +
+{render acl=$ouACL checkbox=$multiple_support checked=$use_ou} + +{/render} +
+{render acl=$departmentNumberACL checkbox=$multiple_support checked=$use_departmentNumber} + +{/render} +
+{render acl=$employeeNumberACL checkbox=$multiple_support checked=$use_employeeNumber} + +{/render} +
+{render acl=$employeeTypeACL checkbox=$multiple_support checked=$use_employeeType} + +{/render} +
+
+   + + + + + + + {if $has_phoneaccount ne "true"} + + + + + {/if} + + + + + + + + + + + + +
+{render acl=$roomNumberACL checkbox=$multiple_support checked=$use_roomNumber} + +{/render} +
+{render acl=$telephoneNumberACL checkbox=$multiple_support checked=$use_telephoneNumber} + +{/render} +
+{render acl=$mobileACL checkbox=$multiple_support checked=$use_mobile} + +{/render} +
+{render acl=$pagerACL checkbox=$multiple_support checked=$use_pager} + +{/render} +
+{render acl=$facsimileTelephoneNumberACL checkbox=$multiple_support checked=$use_facsimileTelephoneNumber} + +{/render} +
+
+   + + + + + + + + + + + + + + +
+{render acl=$lACL checkbox=$multiple_support checked=$use_l} + +{/render} +
+{render acl=$stACL checkbox=$multiple_support checked=$use_st} + +{/render} +
+{render acl=$postalAddressACL checkbox=$multiple_support checked=$use_postalAddress} + +{/render} +
+
+ + + + + + + + + + + + + + + + + + + + + +
+{render acl=$vocationACL checkbox=$multiple_support checked=$use_vocation} + +{/render} +
+{render acl=$gouvernmentOrganizationalUnitDescriptionACL checkbox=$multiple_support checked=$use_gouvernmentOrganizationalUnitDescription} + +{/render} +
+{render acl=$gouvernmentOrganizationalUnitSubjectAreaACL checkbox=$multiple_support checked=$use_gouvernmentOrganizationalUnitSubjectArea} + +{/render} +
+{render acl=$functionalTitleACL checkbox=$multiple_support checked=$use_functionalTitle} + +{/render} +
+{render acl=$roleACL checkbox=$multiple_support checked=$use_role} + +{/render} +
+
+ + + + + + + + + + + + + + + + + + + + + +
+{render acl=$gouvernmentOrganizationalPersonLocalityACL checkbox=$multiple_support checked=$use_gouvernmentOrganizationalPersonLocality} + +{/render} +
+{render acl=$gouvernmentOrganizationalUnitACL checkbox=$multiple_support checked=$use_gouvernmentOrganizationalUnit} + +{/render} +
+{render acl=$streetACL checkbox=$multiple_support checked=$use_street} + +{/render} +
+{render acl=$postalCodeACL checkbox=$multiple_support checked=$use_postalCode} + +{/render} +
+{render acl=$houseIdentifierACL checkbox=$multiple_support checked=$use_houseIdentifier} + +{/render} +
+
+ + + + + + + + + + + + + + + + + + + + + +
+{render acl=$roomNumberACL checkbox=$multiple_support checked=$use_roomNumber} + +{/render} +
+{render acl=$telephoneNumberACL checkbox=$multiple_support checked=$use_telephoneNumber} + {if $has_phoneaccount ne "true"} + + {else} + {t}Please use the phone tab{/t} + {/if} +{/render} +
+{render acl=$facsimileTelephoneNumberACL checkbox=$multiple_support checked=$use_facsimileTelephoneNumber} + +{/render} +
+{render acl=$ivbbLastDeliveryCollectiveACL checkbox=$multiple_support checked=$use_ivbbLastDeliveryCollective} + +{/render} +
+{render acl=$publicVisibleACL checkbox=$multiple_support checked=$use_publicVisible} + +{/render} +
+
+ +{if $multiple_support} + +{/if} + + + + diff --git a/trunk/gosa-core/plugins/personal/generic/generic_certs.tpl b/trunk/gosa-core/plugins/personal/generic/generic_certs.tpl new file mode 100644 index 000000000..ae85df37c --- /dev/null +++ b/trunk/gosa-core/plugins/personal/generic/generic_certs.tpl @@ -0,0 +1,96 @@ + + +

{t}Certificates{/t}

+ + + + + + + + +
+ {t}Standard certificate{/t} + + + + {if $userCertificate_state ne "true"} + {render acl=$CertificateACL} + + {/render} + {else} + {render acl=$CertificateACL} + + {/render} + {/if} +
+ +
+ + + + + + + +
+ {t}S/MIME certificate{/t} + + + + {if $userSMIMECertificate_state ne "true"} + {render acl=$CertificateACL} + + {/render} + {else} + {render acl=$CertificateACL} + + {/render} + {/if} +
+ +
+ + + + + + + + + {if $governmentmode eq "true"} + + + + + {/if} +
+ {t}PKCS12 certificate{/t} + + + + {if $userPKCS12_state ne "true"} + {render acl=$CertificateACL} + + {/render} + {else} + {render acl=$CertificateACL} + + {/render} + {/if} +
+ + + {render acl=$CertificateACL} + + {/render} +
+ +

+ {render acl=$CertificateACL} + + {/render} +   + +

+ diff --git a/trunk/gosa-core/plugins/personal/generic/generic_picture.tpl b/trunk/gosa-core/plugins/personal/generic/generic_picture.tpl new file mode 100644 index 000000000..de7225509 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/generic/generic_picture.tpl @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + +
+

{t}Personal picture{/t}

+
+ + + + +
+ {t}Personal picture{/t} +
+
+ + +   + +
+
+

+ +   + +

+ diff --git a/trunk/gosa-core/plugins/personal/generic/main.inc b/trunk/gosa-core/plugins/personal/generic/main.inc new file mode 100644 index 000000000..9037a452c --- /dev/null +++ b/trunk/gosa-core/plugins/personal/generic/main.inc @@ -0,0 +1,211 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('user'); + session::un_set('edit'); + +}else{ + + /* Reset requested? */ + if (isset($_POST['edit_cancel']) || isset($_POST['password_cancel'])){ + session::un_set ('edit'); + session::un_set ('user'); + } + + /* Create user object on demand */ + if (!session::is_set('user') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $user= new user ($config, $ui->dn); + $user->enable_CSN_check(); + $user->set_acl_base($ui->dn); + $user->set_acl_category("users"); + session::set('user',$user); + } + $user = session::get('user'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $user->save_object (); + } + + /* Enter edit mode? */ + if ((isset($_POST['edit'])) && (!session::is_set('edit')) &&preg_match("/w/",$ui->get_permissions($ui->dn,"users/user"))){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('dn',$ui->dn); + session::set('edit',TRUE); + } + } + + /* Perform password change */ + if (isset($_POST['password_finish'])){ + + /* For security reasons, check if user is allowed to set password again */ + if ($user->acl_is_writeable("userPassword") || $user->acl_is_createable()){ + + /* Check input and feed errors into 'message' */ + $message= array(); + + /* Sanity checks... */ + if ($_POST['new_password'] != $_POST['repeated_password']){ + + /* Matching passwords in new and repeated? */ + $message[]= _("The passwords you've entered as 'New password' and 'Repeated new password' do not match."); + } else { + + /* Empty password is not permitted by default. */ + if ($_POST['new_password'] == ""){ + $message[]= msgPool::required(_("New password")); + } + } + + /* Errors, or change password? */ + if (count($message) != 0){ + + /* Show error message and continue editing */ + msg_dialog::displayChecks($message); + $display.= $smarty->fetch(get_template_path('password.tpl', TRUE)); + return ($display); + } + change_password ($user->dn, $_POST['new_password'], 0, $user->pw_storage); + new log("modify","users/password","",array(),"Password has been changed"); + + } else { + + /* Missing permissions, show message */ + msg_dialog::display(_("Error"), _("You have no permission to set your password!"), ERROR_DIALOG); + } + + del_lock ($ui->dn); + session::un_set ('user'); + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $user->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $user->save (); + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Need to reset the password? */ + if($user->password_change_needed()){ + /* Save object */ + session::set('user',$user); + + $display.= $smarty->fetch(get_template_path('password.tpl', TRUE)); + return ($display); + } else { + session::un_set ('user'); + } + + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + if($lock_msg){ + $display.= $lock_msg; + }else{ + $display.= $user->execute (); + } + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('user',$user); + } + + $info = ""; + + /* Show page footer depending on the mode */ + if (!$user->cert_dialog && !$user->picture_dialog && !$user->dialog && $user->is_account && empty($lock_msg)){ + $display.= "

"; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + + $info= "\"\" ".$ui->dn." "; + } else { + /* 'viewid' may be set by i.e. the phonelist plugin. This + means that we want to go back... */ + if (isset ($viewid)){ + $str= msgPool::backButton(); + $fn = "back"; + } else { + $str= msgPool::editButton(); + $fn = "edit"; + $info= "\"\" ".$ui->dn." "; + } + + /* Only display edit button if there is at least one attribute editable */ + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/user"))){ + if ($fn == "edit"){ + $info.= "\"\" ". + msgPool::clickEditToChange(); + $display.= "\n"; + } + } + + $display.= "\n"; + } + $display.= "

\n"; + } + + /* Page header*/ + $display= print_header(get_template_path('plugins/generic/images/plugin.png'), + _("Generic user information"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/plugins/personal/generic/multiple_generic.tpl b/trunk/gosa-core/plugins/personal/generic/multiple_generic.tpl new file mode 100644 index 000000000..b29ea4a8c --- /dev/null +++ b/trunk/gosa-core/plugins/personal/generic/multiple_generic.tpl @@ -0,0 +1,482 @@ + + + + + + + + + +
+ +

{t}Personal information{/t}

+
+ + + + +
+ {t}Personal picture{/t} +
+
+ + + + + + + + + + + + + +
+ + + + +
+ + + + +
+
+
+ +
+
+
+ + + +
+
+ + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+
+
+
+
+

+ + + + + + + + {if $governmentmode ne "true"} + + + + + + + + + {else} + + + + + + + {/if} + +
+

+ +  {t}Organizational information{/t}

+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+
+   + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+
+   + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+
+ + + diff --git a/trunk/gosa-core/plugins/personal/generic/password.tpl b/trunk/gosa-core/plugins/personal/generic/password.tpl new file mode 100644 index 000000000..0430e544e --- /dev/null +++ b/trunk/gosa-core/plugins/personal/generic/password.tpl @@ -0,0 +1,28 @@ +

+ {t}You have changed the method your password is stored in the ldap database. For that reason you've to enter your password at this point again. GOsa will then encode it with the selected method.{/t} +

+ + + + + + + + + + +
+
+

+ +   + +

+ + + diff --git a/trunk/gosa-core/plugins/personal/generic/paste_generic.tpl b/trunk/gosa-core/plugins/personal/generic/paste_generic.tpl new file mode 100644 index 000000000..0fc160888 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/generic/paste_generic.tpl @@ -0,0 +1,59 @@ +

{t}User settings{/t}

+ + + + + +
+ + + + + + + + + + + + + + + + + +
+ {t}Password{/t} + + {t}Clear password{/t}
+ {t}Set new password{/t} +
+
+ + + + + + + + + + +
+ + + + +
+ {t}Personal picture{/t} +
+
+ + {t}User picture{/t} + + +   + +
+
+
diff --git a/trunk/gosa-core/plugins/personal/password/changed.tpl b/trunk/gosa-core/plugins/personal/password/changed.tpl new file mode 100644 index 000000000..4fe49ed3f --- /dev/null +++ b/trunk/gosa-core/plugins/personal/password/changed.tpl @@ -0,0 +1,12 @@ + +

+ {t}You've successfully changed your password. Remember to change all programms configured to use it as well.{/t} +

+ +
+ +

+ +

+ + diff --git a/trunk/gosa-core/plugins/personal/password/class_password.inc b/trunk/gosa-core/plugins/personal/password/class_password.inc new file mode 100644 index 000000000..db087e57c --- /dev/null +++ b/trunk/gosa-core/plugins/personal/password/class_password.inc @@ -0,0 +1,155 @@ +get_permissions($ui->dn,"users/password"); + $smarty->assign("ChangeACL" , $password_ACLS); + $smarty->assign("NotAllowed" , !preg_match("/w/i",$password_ACLS)); + + /* Display expiration template */ + if ($this->config->get_cfg_value("handleExpiredAccounts") == "true"){ + $expired= ldap_expired_account($this->config, $ui->dn, $ui->username); + if($expired == 4){ + return($smarty->fetch(get_template_path("nochange.tpl", TRUE))); + } + } + + /* Pwd change requested */ + if (isset($_POST['password_finish'])){ + + /* Should we check different characters in new password */ + $check_differ = $this->config->get_cfg_value("passwordMinDiffer") != ""; + $differ = $this->config->get_cfg_value("passwordMinDiffer", 0); + + /* Enable length check ? */ + $check_length = $this->config->get_cfg_value("passwordMinLength") != ""; + $length = $this->config->get_cfg_value("passwordMinLength", 0); + + /* Call external password quality hook ?*/ + $check_hook = $this->config->get_cfg_value("passwordHook") != ""; + $hook = $this->config->get_cfg_value("passwordHook")." ".$ui->username." ".$_POST['current_password']." ".$_POST['new_password']; + if($check_hook){ + exec($hook,$resarr); + $check_hook_output = ""; + if(count($resarr) > 0) { + $check_hook_output= join('\n', $resarr); + } + } + + /* Check given values */ + if(!isset($_POST['current_password']) || empty($_POST['current_password'])){ + msg_dialog::display(_("Password change"), + _("You need to specify your current password in order to proceed."),WARNING_DIALOG); + }elseif ($_POST['new_password'] != $_POST['repeated_password']){ + msg_dialog::display(_("Password change"), + _("The passwords you've entered as 'New password' and 'Repeated new password' do not match."),WARNING_DIALOG); + } elseif ($_POST['new_password'] == ""){ + msg_dialog::display(_("Password change"), + _("The password you've entered as 'New password' is empty."),WARNING_DIALOG); + }elseif($check_differ && (substr($_POST['current_password'], 0, $differ) == substr($_POST['new_password'], 0, $differ))){ + msg_dialog::display(_("Password change"), + _("The password used as new and current are too similar."),WARNING_DIALOG); + }elseif($check_length && (strlen($_POST['new_password']) < $length)){ + msg_dialog::display(_("Password change"), + _("The password used as new is to short."),WARNING_DIALOG); + }elseif($check_hook && $check_hook_output != ""){ + msg_dialog::display(_("Password change"), + sprintf(_("External password changer reported a problem: %s."),$check_hook_output),WARNING_DIALOG); + }else{ + + /* Try to connect via current password */ + $tldap = new LDAP( + $ui->dn, + $_POST['current_password'], + $this->config->current['SERVER'], + $this->config->get_cfg_value("ldapFollowReferrals") == "true", + $this->config->get_cfg_value("ldapTLS") == "true"); + + /* connection Successfull ? */ + if (!$tldap->success()){ + msg_dialog::display(_("Password change"), + _("The password you've entered as your current password doesn't match the real one."),WARNING_DIALOG); + }else{ + + /* Check GOsa permissions */ + if (!preg_match("/w/i",$password_ACLS)){ + msg_dialog::display(_("Password change"), + _("You have no permission to change your password."),WARNING_DIALOG); + }else{ + change_password ($ui->dn, $_POST['new_password']); + gosa_log ("User/password has been changed"); + $ui->password= $_POST['new_password']; + session::set('ui',$ui); +#$this->handle_post_events("modify",array("userPassword" => $_POST['new_password'])); + return($smarty->fetch(get_template_path("changed.tpl", TRUE))); + } + } + } + } + return($smarty->fetch(get_template_path("password.tpl", TRUE))); + } + + function remove_from_parent() + { + $this->handle_post_events("remove"); + } + + function save() + { + } + + static function plInfo() + { + return (array( + "plDescription" => _("User password"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 10, + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array()) + ); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/plugins/personal/password/main.inc b/trunk/gosa-core/plugins/personal/password/main.inc new file mode 100644 index 000000000..b9a877456 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/password/main.inc @@ -0,0 +1,62 @@ +dn)); + } + $password = session::get('password'); + + /* Execute formular */ + $display.= $password->execute (); + + /* Page header*/ + $display= print_header(get_template_path('plugins/password/images/plugin.png'), + _("Password settings"), "").$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/plugins/personal/password/nochange.tpl b/trunk/gosa-core/plugins/personal/password/nochange.tpl new file mode 100644 index 000000000..0f175c647 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/password/nochange.tpl @@ -0,0 +1,11 @@ +
+ {t}Password change not allowed{/t}> +
+ +

+ {t}You have no permission to change your password at this time{/t} +

+ +
+ + diff --git a/trunk/gosa-core/plugins/personal/password/password.tpl b/trunk/gosa-core/plugins/personal/password/password.tpl new file mode 100644 index 000000000..88ffa0292 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/password/password.tpl @@ -0,0 +1,54 @@ + + +

+ {t}To change your personal password use the fields below. The changes take effect immediately. Please memorize the new password, because you wouldn't be able to login without it.{/t} +

+ +

+ {t}Changing the password affects your authentification on mail, proxy, samba and unix services.{/t} +

+ + + + + + + + + + + + + + + + + + +
{t}Password strength{/t} + + +
+ +
+ +

+ +   + + +

+ + + + + + diff --git a/trunk/gosa-core/plugins/personal/posix/class_posixAccount.inc b/trunk/gosa-core/plugins/personal/posix/class_posixAccount.inc new file mode 100644 index 000000000..213850ee1 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/posix/class_posixAccount.inc @@ -0,0 +1,1753 @@ + + \version 2.00 + \date 24.07.2003 + + This class provides the functionality to read and write all attributes + relevant for posixAccounts and shadowAccounts from/to the LDAP. It + does syntax checking and displays the formulars required. + */ + +class posixAccount extends plugin +{ + /* Definitions */ + var $plHeadline= "UNIX"; + var $plDescription= "Edit users POSIX settings"; + + /* Plugin specific values */ + var $homeDirectory= ""; + var $loginShell= "/bin/bash"; + var $uidNumber= ""; + var $gidNumber= ""; + var $gecos= ""; + var $shadowMin= "0"; + var $shadowMax= "0"; + var $shadowWarning= "0"; + var $shadowLastChange= "0"; + var $shadowInactive= "0"; + var $shadowExpire= "0"; + var $gosaDefaultPrinter= ""; + var $accessTo= array(); + var $trustModel= ""; + + var $glist=array(); + var $status= ""; + var $loginShellList= array(); + var $groupMembership= array(); + var $savedGroupMembership= array(); + var $savedUidNumber= ""; + var $savedGidNumber= ""; + var $activate_shadowMin= "0"; + var $activate_shadowMax= "0"; + var $activate_shadowWarning= "0"; + var $activate_shadowInactive= "0"; + var $activate_shadowExpire= "0"; + var $mustchangepassword= "0"; + var $force_ids= 0; + var $group_dialog= FALSE; + var $show_ws_dialog= FALSE; + var $secondaryGroups= array(); + var $primaryGroup= 0; + var $was_trust_account= FALSE; + var $memberGroup = array(); + var $grouplist = array(); + var $ui = array(); + + var $GroupRegex = "*"; + var $GroupUserRegex = "*"; + var $SubSearch = false; + + var $view_logged = FALSE; + + /* attribute list for save action */ + var $CopyPasteVars = + array("grouplist","groupMembership","activate_shadowMin", + "activate_shadowMax","activate_shadowWarning","activate_shadowInactive","activate_shadowExpire", + "must_change_password","printerList","grouplist","savedGidNumber","savedUidNumber"); + + var $attributes = array("homeDirectory", "loginShell", "uidNumber", "gidNumber", "gecos", + "shadowMin", "shadowMax", "shadowWarning", "shadowInactive", "shadowLastChange", + "shadowExpire", "gosaDefaultPrinter", "uid","accessTo","trustModel"); + + var $objectclasses= array("posixAccount", "shadowAccount"); + + var $uid= ""; + var $multiple_support = TRUE; + var $groupMembership_some = array(); + + /* constructor, if 'dn' is set, the node loads the given + 'dn' from LDAP */ + function posixAccount (&$config, $dn= NULL) + { + /* Configuration is fine, allways */ + $this->config= $config; + + /* Load bases attributes */ + plugin::plugin($config, $dn); + + /* Setting uid to default */ + if(isset($this->attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + + $ldap= $this->config->get_ldap_link(); + + if ($dn !== NULL){ + + /* Correct is_account. shadowAccount is not required. */ + if (isset($this->attrs['objectClass']) && + in_array ('posixAccount', $this->attrs['objectClass'])){ + + $this->is_account= TRUE; + } + + /* Is this account a trustAccount? */ + if ($this->is_account && isset($this->attrs['trustModel'])){ + $this->trustModel= $this->attrs['trustModel'][0]; + $this->was_trust_account= TRUE; + } else { + $this->was_trust_account= FALSE; + $this->trustModel= ""; + } + + $this->accessTo = array(); + if ($this->is_account && isset($this->attrs['accessTo'])){ + for ($i= 0; $i<$this->attrs['accessTo']['count']; $i++){ + $tmp= $this->attrs['accessTo'][$i]; + $this->accessTo[$tmp]= $tmp; + } + } + $this->initially_was_account= $this->is_account; + + /* Fill group */ + $this->primaryGroup= $this->gidNumber; + + /* Generate status text */ + $current= date("U"); + + $current= floor($current / 60 /60 / 24); + + if (($current >= $this->shadowExpire) && $this->shadowExpire){ + $this->status= _("expired"); + if (($current - $this->shadowExpire) < $this->shadowInactive){ + $this->status.= ", "._("grace time active"); + } + } elseif (($this->shadowLastChange + $this->shadowMin) >= $current){ + $this->status= _("active").", "._("password not changeable"); + } elseif (($this->shadowLastChange + $this->shadowMax) >= $current){ + $this->status= _("active").", "._("password expired"); + } else { + $this->status= _("active"); + } + + /* Get group membership */ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=posixGroup)(memberUid=".$this->uid."))", array("cn", "description")); + + while ($attrs= $ldap->fetch()){ + if (!isset($attrs["description"][0])){ + $entry= $attrs["cn"][0]; + } else { + $entry= $attrs["cn"][0]." [".$attrs["description"][0]."]"; + } + $this->groupMembership[$ldap->getDN()]= $entry; + } + asort($this->groupMembership); + reset($this->groupMembership); + $this->savedGroupMembership= $this->groupMembership; + $this->savedUidNumber= $this->uidNumber; + $this->savedGidNumber= $this->gidNumber; + } + + /* Adjust shadow checkboxes */ + foreach (array("shadowMin", "shadowMax", "shadowWarning", "shadowInactive", + "shadowExpire") as $val){ + + if ($this->$val != 0){ + $oval= "activate_".$val; + $this->$oval= "1"; + } + } + + /* Convert to seconds */ + $this->shadowExpire= $this->convertToSeconds($this->shadowExpire); + + /* Generate shell list from CONFIG_DIR./shells */ + if (file_exists(CONFIG_DIR.'/shells')){ + $shells = file (CONFIG_DIR.'/shells'); + foreach ($shells as $line){ + if (!preg_match ("/^#/", $line)){ + $this->loginShellList[]= trim($line); + } + } + } else { + if ($this->loginShell == ""){ + $this->loginShellList[]= _("unconfigured"); + } + } + + /* Insert possibly missing loginShell */ + if ($this->loginShell != "" && !in_array($this->loginShell, $this->loginShellList)){ + $this->loginShellList[]= $this->loginShell; + } + + /* Generate group list */ + $this->ui = get_userinfo(); + $this->secondaryGroups[]= "- "._("automatic")." -"; + $ldap->cd($this->config->current['BASE']); + $ldap->search("(objectClass=posixGroup)", array("cn", "gidNumber")); + while($attrs = $ldap->fetch()){ + $this->secondaryGroups[$attrs['gidNumber'][0]]= $attrs['cn'][0]; + } + asort ($this->secondaryGroups); + + /* Get global filter config */ + if (!session::is_set("sysfilter")){ + $ui= get_userinfo(); + $base= get_base_from_people($ui->dn); + $sysfilter= array( "depselect" => $base, + "regex" => "*"); + session::set("sysfilter", $sysfilter); + } + $this->ui = get_userinfo(); + } + + + /* execute generates the html output for this node */ + function execute($isCopyPaste = false) + { + /* Call parent execute */ + plugin::execute(); + $display= ""; + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Department has changed? */ + if(isset($_POST['depselect'])){ + session::set('CurrentMainBase',validate($_POST['depselect'])); + } + + if($this->multiple_support_active){ + $this->is_account = TRUE; + } + + if(!$isCopyPaste && ! $this->multiple_support_active){ + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Do we represent a valid posixAccount? */ + if (!$this->is_account && $this->parent === NULL ){ + $display= "\"\" ". + msgPool::noValidExtension(_("POSIX")).""; + $display.= back_to_main(); + return ($display); + } + + + /* Show tab dialog headers */ + if ($this->parent !== NULL){ + if ($this->is_account){ + if (isset($this->parent->by_object['sambaAccount'])){ + $obj= $this->parent->by_object['sambaAccount']; + } + if (isset($obj) && $obj->is_account == TRUE && + ((isset($this->parent->by_object['sambaAccount']))&&($this->parent->by_object['sambaAccount']->is_account)) + ||(isset($this->parent->by_object['environment'] ))&&($this->parent->by_object['environment'] ->is_account)){ + + /* Samba3 dependency on posix accounts are enabled + in the moment, because I need to rely on unique + uidNumbers. There'll be a better solution later + on. */ + $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("POSIX")), msgPool::featuresEnabled(_("POSIX"), array(_("Samba"), _("Environment"))), TRUE); + } else { + $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("POSIX")), msgPool::featuresEnabled(_("POSIX"))); + } + } else { + $display= $this->show_enable_header(msgPool::addFeaturesButton(_("POSIX")), msgPool::featuresDisabled(_("POSIX"))); + return($display); + } + } + } + /* Trigger group edit? */ + if (isset($_POST['edit_groupmembership'])){ + $this->group_dialog= TRUE; + $this->dialog= TRUE; + } + + /* Cancel group edit? */ + if (isset($_POST['add_groups_cancel']) || + isset($_POST['add_groups_finish'])){ + $this->group_dialog= FALSE; + $this->dialog= FALSE; + } + + /* Add selected groups */ + if (isset($_POST['add_groups_finish']) && isset($_POST['groups']) && + count($_POST['groups'])){ + + $this->addGroup ($_POST['groups']); + } + + /* Delete selected groups */ + if (isset($_POST['delete_groupmembership']) && + isset($_POST['group_list']) && count($_POST['group_list'])){ + + $this->delGroup ($_POST['group_list']); + } + + /* Add user workstation? */ + if (isset($_POST["add_ws"])){ + $this->show_ws_dialog= TRUE; + $this->dialog= TRUE; + } + + /* Add user workstation? */ + if (isset($_POST["add_ws_finish"]) && isset($_POST['wslist'])){ + foreach($_POST['wslist'] as $ws){ + $this->accessTo[$ws]= $ws; + } + ksort($this->accessTo); + $this->is_modified= TRUE; + } + + /* Remove user workstations? */ + if (isset($_POST["delete_ws"]) && isset($_POST['workstation_list'])){ + foreach($_POST['workstation_list'] as $name){ + unset ($this->accessTo[$name]); + } + $this->is_modified= TRUE; + } + + /* Add user workstation finished? */ + if (isset($_POST["add_ws_finish"]) || isset($_POST["add_ws_cancel"])){ + $this->show_ws_dialog= FALSE; + $this->dialog= FALSE; + } + + /* Templates now! */ + $smarty= get_smarty(); + + /* Show ws dialog */ + if ($this->show_ws_dialog){ + /* Save data */ + $sysfilter= session::get("sysfilter"); + foreach( array("depselect", "regex") as $type){ + if (isset($_POST[$type])){ + $sysfilter[$type]= $_POST[$type]; + } + } + if (isset($_GET['search'])){ + $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*"; + if ($s == "**"){ + $s= "*"; + } + $sysfilter['regex']= $s; + } + session::set("sysfilter", $sysfilter); + + /* Get workstation list */ + $exclude= ""; + foreach($this->accessTo as $ws){ + $exclude.= "(cn=$ws)"; + } + if ($exclude != ""){ + $exclude= "(!(|$exclude))"; + } + $regex= $sysfilter['regex']; + + $acls = array(); + if(class_available("servgeneric")) $acls[] = "server"; + if(class_available("workgeneric")) $acls[] = "worstation"; + if(class_available("termgeneric")) $acls[] = "terminal"; + + $filter= "(&(|(objectClass=goServer)(objectClass=gotoWorkstation)(objectClass=gotoTerminal))$exclude(cn=*)(cn=$regex))"; + + $deps_a = array(get_ou("serverRDN"), + get_ou("terminalRDN"), + get_ou("workstationRDN")); + + $res= get_sub_list($filter, $acls, $deps_a, get_ou("systemRDN").$sysfilter['depselect'], array("cn"), GL_SUBSEARCH | GL_SIZELIMIT); + $wslist= array(); + foreach ($res as $attrs){ + $wslist[]= preg_replace('/\$/', '', $attrs['cn'][0]); + } + asort($wslist); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("deplist", $this->config->idepartments); + $smarty->assign("alphabet", generate_alphabet()); + foreach( array("depselect", "regex") as $type){ + $smarty->assign("$type", $sysfilter[$type]); + } + $smarty->assign("hint", print_sizelimit_warning()); + $smarty->assign("wslist", $wslist); + $smarty->assign("apply", apply_filter()); + $display= $smarty->fetch (get_template_path('trust_machines.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + /* Manage group add dialog */ + if ($this->group_dialog){ + + /* Get global filter config */ + $this->reload(); + + /* remove already assigned groups */ + $glist= array(); + foreach ($this->grouplist as $key => $value){ + if (!isset($this->groupMembership[$key]) && obj_is_writable($key,"groups/group","memberUid")){ + $glist[$key]= $value; + } + } + + if($this->SubSearch){ + $smarty->assign("SubSearchCHK"," checked "); + }else{ + $smarty->assign("SubSearchCHK",""); + } + + $smarty->assign("regex",$this->GroupRegex); + $smarty->assign("guser",$this->GroupUserRegex); + $smarty->assign("groups", $glist); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("deplist", $this->config->idepartments); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("depselect", session::get('CurrentMainBase')); + $smarty->assign("hint", print_sizelimit_warning()); + + $smarty->assign("apply", apply_filter()); + $display.= $smarty->fetch (get_template_path('posix_groups.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + /* Show main page */ + $smarty= get_smarty(); + + /* In 'MyAccount' mode, we must remove write acls if we are not in editing mode. */ + $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + + /* Depending on pwmode, currently hardcoded because there are no other methods */ + if ( 1 == 1 ){ + $smarty->assign("pwmode", dirname(__FILE__)."/posix_shadow"); + + $shadowMinACL = $this->getacl("shadowMin",$SkipWrite); + $smarty->assign("shadowmins", sprintf(_("Password can't be changed up to %s days after last change"), + "shadowMin."\">")); + + $shadowMaxACL = $this->getacl("shadowMax",$SkipWrite); + $smarty->assign("shadowmaxs", sprintf(_("Password must be changed after %s days"), + "shadowMax."\">")); + + $shadowInactiveACL= $this->getacl("shadowInactive",$SkipWrite); + $smarty->assign("shadowinactives", sprintf(_("Disable account after %s days of inactivity after password expiry"), + "shadowInactive."\">")); + + $shadowWarningACL = $this->getacl("shadowWarning",$SkipWrite); + $smarty->assign("shadowwarnings", sprintf(_("Warn user %s days before password expiry"), + "shadowWarning."\">")); + + foreach( array("activate_shadowMin", "activate_shadowMax", + "activate_shadowExpire", "activate_shadowInactive","activate_shadowWarning") as $val){ + if ($this->$val == 1){ + $smarty->assign("$val", "checked"); + } else { + $smarty->assign("$val", ""); + } + $smarty->assign("$val"."ACL", $this->getacl($val,$SkipWrite)); + } + + $smarty->assign("mustchangepasswordACL", $this->getacl("mustchangepassword",$SkipWrite)); + } + + /* Fill calendar */ + /* If this $this->shadowExpire is empty + use current date as base for calculating selectbox values. + (This attribute is empty if this is a new user )*/ + if(empty($this->shadowExpire)){ + $date= getdate(time()); + }else{ + $date= getdate($this->shadowExpire); + } + + $days= array(); + for($d= 1; $d<32; $d++){ + $days[$d]= $d; + } + $years= array(); + for($y= $date['year']-10; $y<$date['year']+10; $y++){ + $years[]= $y; + } + $months= msgPool::months(); + $smarty->assign("day", $date["mday"]); + $smarty->assign("days", $days); + $smarty->assign("months", $months); + $smarty->assign("month", $date["mon"]-1); + $smarty->assign("years", $years); + $smarty->assign("year", $date["year"]); + + /* Fill arrays */ + $smarty->assign("shells", $this->loginShellList); + $smarty->assign("secondaryGroups", $this->secondaryGroups); + $smarty->assign("primaryGroup", $this->primaryGroup); + if(!$this->multiple_support_active){ + if (!count($this->groupMembership)){ + $smarty->assign("groupMembership", array(" ")); + } else { + $smarty->assign("groupMembership", $this->groupMembership); + } + }else{ + $smarty->assign("groupMembership", $this->groupMembership); + $smarty->assign("groupMembership_some", $this->groupMembership_some); + } + if (count($this->groupMembership) > 16){ + $smarty->assign("groups", "too_many_for_nfs"); + } else { + $smarty->assign("groups", ""); + } + + /* Avoid "Undefined index: forceMode" */ + $smarty->assign("forceMode", ""); + + /* Checkboxes */ + if ($this->force_ids == 1){ + $smarty->assign("force_ids", "checked"); + if (session::get('js')){ + $smarty->assign("forceMode", ""); + } + } else { + if (session::get('js')){ + $smarty->assign("forceMode", "disabled"); + } + $smarty->assign("force_ids", ""); + } + + /* Create onClick="" action string for the "Force UID/GID" option + */ + $onClickIDS =""; + if(preg_match("/w/",$this->getacl("uidNumber",$SkipWrite))){ + $onClickIDS .= "changeState('uidNumber');"; + } + if(preg_match("/w/",$this->getacl("gidNumber",$SkipWrite))){ + $onClickIDS .= "changeState('gidNumber');"; + } + $smarty->assign("onClickIDS", $onClickIDS); + $smarty->assign("force_idsACL", $this->getacl("uidNumber",$SkipWrite).$this->getacl("gidNumber",$SkipWrite)); + + foreach(array("primaryGroup","trustmode","activate_shadowWarning","activate_shadowInactive","activate_shadowMin","activate_shadowMax","activate_shadowExpire","mustchangepassword") as $val){ + if(in_array($val,$this->multi_boxes)){ + $smarty->assign("use_".$val,TRUE); + }else{ + $smarty->assign("use_".$val,FALSE); + } + } + + + /* Load attributes and acl's */ + foreach($this->attributes as $val){ + if(in_array($val,$this->multi_boxes)){ + $smarty->assign("use_".$val,TRUE); + }else{ + $smarty->assign("use_".$val,FALSE); + } + + if((session::get("js"))&&(($val=="uidNumber")||($val=="gidNumber"))) + { + $smarty->assign("$val"."ACL",$this->getacl($val,$SkipWrite)); + $smarty->assign("$val", $this->$val); + continue; + } + $smarty->assign("$val", $this->$val); + $smarty->assign("$val"."ACL", $this->getacl($val,$SkipWrite)); + } + if($SkipWrite){ + $smarty->assign("groupMembershipACL","r"); + }else{ + $smarty->assign("groupMembershipACL","rw"); + } + $smarty->assign("status", $this->status); + + /* Work on trust modes */ + $smarty->assign("trusthide", " disabled "); + $smarty->assign("trustmodeACL", $this->getacl("trustModel",$SkipWrite)); + if ($this->trustModel == "fullaccess"){ + $trustmode= 1; + // pervent double disable tag in html code, this will disturb our clean w3c html + $smarty->assign("trustmode", $this->getacl("trustModel",$SkipWrite)); + + } elseif ($this->trustModel == "byhost"){ + $trustmode= 2; + $smarty->assign("trusthide", ""); + } else { + // pervent double disable tag in html code, this will disturb our clean w3c html + $smarty->assign("trustmode", $this->getacl("trustModel",$SkipWrite)); + $trustmode= 0; + } + $smarty->assign("trustmode", $trustmode); + $smarty->assign("trustmodes", array( 0 => _("disabled"), 1 => _("full access"), + 2 => _("allow access to these hosts"))); + + + + if((count($this->accessTo))==0) + $smarty->assign("emptyArrAccess",true); + else + $smarty->assign("emptyArrAccess",false); + + if($this->mustchangepassword){ + $smarty->assign("mustchangepassword", " checked "); + } else { + $smarty->assign("mustchangepassword", ""); + } + + $smarty->assign("workstations", $this->accessTo); + + $smarty->assign("apply", apply_filter()); + $smarty->assign("multiple_support" , $this->multiple_support_active); + $display.= $smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + + /* remove object from parent */ + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if ((!$this->initially_was_account) || (!$this->acl_is_removeable())){ + return; + } + + + /* Remove and write to LDAP */ + plugin::remove_from_parent(); + + /* Zero out array */ + $this->attrs['gosaHostACL']= array(); + + /* Keep uid, because we need it for authentification! */ + unset($this->attrs['uid']); + unset($this->attrs['trustModel']); + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + /* include global link_info */ + $this->attributes, "Save"); + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + + /* Delete group only if cn is uid and there are no other + members inside */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=posixGroup)(gidNumber=".$this->gidNumber."))", array("cn", "memberUid")); + if ($ldap->count() != 0){ + $attrs= $ldap->fetch(); + if ($attrs['cn'][0] == $this->uid && + !isset($this->attrs['memberUid'])){ + + $ldap->rmDir($ldap->getDN()); + } + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove",array("uid" => $this->uid)); + } + + + function save_object() + { + if (isset($_POST['posixTab'])){ + /* Save values to object */ + plugin::save_object(); + + + /* Save force GID checkbox */ + if($this->acl_is_writeable("gidNumber") || $this->acl_is_writeable("uidNumber")){ + if (isset ($_POST['force_ids'])){ + $data= 1; + } else { + $data= 0; + } + if ($this->force_ids != $data){ + $this->is_modified= TRUE; + } + $this->force_ids= $data; + } + + /*Save primary group settings */ + if($this->acl_is_writeable("primaryGroup") && isset($_POST['primaryGroup'])){ + $data= $_POST['primaryGroup']; + if ($this->primaryGroup != $data){ + $this->is_modified= TRUE; + } + $this->primaryGroup= $_POST['primaryGroup']; + } + + /* Get seelcted shadow checkboxes */ + foreach(array("shadowMin","shadowMax","shadowExpire","shadowInactive","shadowWarning") as $var) { + if($this->acl_is_writeable($var)){ + $activate_var = "activate_".$var; + if(isset($_POST['activate_'.$var])){ + $this->$activate_var = true; + $this->$var = $_POST[$var]; + }else{ + $this->$activate_var = false; + $this->$var = 0; + } + } + } + + /* Force change password ? */ + if(isset($_POST['mustchangepassword'])){ + $this->mustchangepassword = TRUE; + }else{ + $this->mustchangepassword = FALSE; + } + + /* Trust mode - special handling */ + if($this->acl_is_writeable("trustModel")){ + if (isset($_POST['trustmode'])){ + $saved= $this->trustModel; + if ($_POST['trustmode'] == "1"){ + $this->trustModel= "fullaccess"; + } elseif ($_POST['trustmode'] == "2"){ + $this->trustModel= "byhost"; + } else { + $this->trustModel= ""; + } + if ($this->trustModel != $saved){ + $this->is_modified= TRUE; + } + } + } + } + + /* Get regex from alphabet */ + if(isset($_GET['search'])){ + $this->GroupRegex = $_GET['search']."*"; + } + + /* Check checkboxes and regexes */ + if(isset($_POST["PosixGroupDialogPosted"])){ + + if(isset($_POST['SubSearch']) && ($_POST['SubSearch'])){ + $this->SubSearch = true; + }else{ + $this->SubSearch = false; + } + if(isset($_POST['guser'])){ + $this->GroupUserRegex = $_POST['guser']; + } + if(isset($_POST['regex'])){ + $this->GroupRegex = $_POST['regex']; + } + } + $this->GroupRegex = preg_replace("/\*\**/","*",$this->GroupRegex); + $this->GroupUserRegex = preg_replace("/\*\**/","*",$this->GroupUserRegex); + } + + + /* Save data to LDAP, depending on is_account we save or delete */ + function save() + { + + /* Adapt shadow values */ + if (!$this->activate_shadowExpire){ + $this->shadowExpire= "0"; + } else { + /* Transform seconds to days here */ + $this->shadowExpire= (int)($this->shadowExpire / (60 * 60 * 24)) ; + } + if (!$this->activate_shadowMax){ + $this->shadowMax= "0"; + } + if ($this->mustchangepassword){ + $this->shadowLastChange= (int)(date("U") / 86400) - $this->shadowMax - 1; + } else { + $this->shadowLastChange= (int)(date("U") / 86400); + } + if (!$this->activate_shadowWarning){ + $this->shadowWarning= "0"; + } + + /* Check what to do with ID's */ + if ($this->force_ids == 0){ + + /* Use id's that are already set */ + if ($this->savedUidNumber != ""){ + $this->uidNumber= $this->savedUidNumber; + $this->gidNumber= $this->savedGidNumber; + } else { + + /* Calculate new id's. We need to place a lock before calling get_next_id + to get real unique values. */ + $wait= 10; + while (get_lock("uidnumber") != ""){ + sleep (1); + + /* Oups - timed out */ + if ($wait-- == 0){ + msg_dialog::display(_("Warning"), _("Timeout while waiting for lock. Ignoring lock!"), WARNING_DIALOG); + break; + } + } + + add_lock ("uidnumber", "gosa"); + $this->uidNumber= $this->get_next_id("uidNumber", $this->dn); + if ($this->savedGidNumber != ""){ + $this->gidNumber= $this->savedGidNumber; + } else { + $this->gidNumber= $this->get_next_id("gidNumber", $this->dn); + } + } + + if ($this->primaryGroup != 0){ + $this->gidNumber= $this->primaryGroup; + } + } + + if ($this->activate_shadowMin != "1" ) { + $this->shadowMin = ""; + } + + if (($this->activate_shadowMax != "1") && ($this->mustchangepassword != "1")) { + $this->shadowMax = ""; + } + + if ($this->activate_shadowWarning != "1" ) { + $this->shadowWarning = ""; + } + + if ($this->activate_shadowInactive != "1" ) { + $this->shadowInactive = ""; + } + + if ($this->activate_shadowExpire != "1" ) { + $this->shadowExpire = ""; + } + + /* Fill gecos */ + if (isset($this->parent) && $this->parent !== NULL){ + $this->gecos= rewrite($this->parent->by_object['user']->cn); + if (!preg_match('/^[a-z0-9 -]+$/i', $this->gecos)){ + $this->gecos= ""; + } + } + + foreach(array("shadowMin","shadowMax","shadowWarning","shadowInactive","shadowExpire") as $attr){ + $this->$attr = (int) $this->$attr; + } + /* Call parents save to prepare $this->attrs */ + plugin::save(); + + /* Trust accounts */ + $objectclasses= array(); + foreach ($this->attrs['objectClass'] as $key => $class){ + if (preg_match('/trustAccount/i', $class)){ + continue; + } + $objectclasses[]= $this->attrs['objectClass'][$key]; + } + $this->attrs['objectClass']= $objectclasses; + if ($this->trustModel != ""){ + $this->attrs['objectClass'][]= "trustAccount"; + $this->attrs['trustModel']= $this->trustModel; + $this->attrs['accessTo']= array(); + if ($this->trustModel == "byhost"){ + foreach ($this->accessTo as $host){ + $this->attrs['accessTo'][]= $host; + } + } + } else { + if ($this->was_trust_account){ + $this->attrs['accessTo']= array(); + $this->attrs['trustModel']= array(); + } + } + + if(empty($this->attrs['gosaDefaultPrinter'])){ + $thid->attrs['gosaDefaultPrinter']=array(); + } + + + /* include global link_info */ + $this->cleanup(); + + /* This is just a test, we have had duplicated ids + in the past when copy & paste was used. + Normaly this should not happen. + */ + if(isset($this->attrs['uidNumber']) && !$this->force_ids){ + $used = $this->get_used_uid_numbers(); + if(isset($used[$this->attrs['uidNumber']]) && $used[$this->attrs['uidNumber']] != $this->dn){ + msg_dialog::display(_("Warning"),_("A duplicated UID number was written for this user. If this was not intended please verify all used uidNumbers!"), WARNING_DIALOG); + } + } + + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + unset($this->attrs['uid']); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Remove lock needed for unique id generation */ + del_lock ("uidnumber"); + + /* Posix accounts have group interrelationship, + take care about these here if this is a new user without forced gidNumber. */ + if ($this->force_ids == 0 && $this->primaryGroup == 0 && !$this->initially_was_account){ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=posixGroup)(gidNumber=".$this->gidNumber."))", array("cn")); + + /* Create group if it doesn't exist */ + if ($ldap->count() == 0){ + $groupdn= preg_replace ('/^'.$this->config->get_cfg_value("accountPrimaryAttribute").'=[^,]+,'.get_people_ou().'/i', 'cn='.$this->uid.','.get_groups_ou(), $this->dn); + + $g= new group($this->config, $groupdn); + $g->cn= $this->uid; + $g->force_gid= 1; + $g->gidNumber= $this->gidNumber; + $g->description= _("Group of user")." ".$this->givenName." ".$this->sn; + $g->save (); + } + } + + /* Take care about groupMembership values: add to groups */ + foreach ($this->groupMembership as $key => $value){ + if (!isset($this->savedGroupMembership[$key])){ + $g= new grouptabs($this->config,$this->config->data['TABS']['GROUPTABS'], $key,"groups"); + $g->set_acl_base($key); + $g->by_object['group']->addUser($this->uid); + $g->save(); + } + } + + /* Remove from groups not listed in groupMembership */ + foreach ($this->savedGroupMembership as $key => $value){ + if (!isset($this->groupMembership[$key])){ + $g= new grouptabs($this->config,$this->config->data['TABS']['GROUPTABS'], $key,"groups"); + $g->set_acl_base($key); + $g->by_object['group']->removeUser ($this->uid); + $g->save(); + } + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add" ,array("uid"=> $this->uid)); + } + } + + /* Check formular input */ + function check() + { + /* Include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Append groups as memberGroup: to check hook + */ + $tmp_attributes = $this->attributes; + $this->attributes[] = "memberGroup"; + $this->memberGroup = array(); + foreach($this->groupMembership as $dn => $name){ + $this->memberGroup[] = $name; + } + + /* Call common method to give check the hook */ + $message= plugin::check(); + $this->attributes = $tmp_attributes; + + /* must: homeDirectory */ + if ($this->homeDirectory == ""){ + $message[]= msgPool::required(_("Home directory")); + } + if (!tests::is_path($this->homeDirectory)){ + $message[]= msgPool::invalid(_("Home directory"), "", "", "/home/yourname" ); + } + + /* Check ID's if they are forced by user */ + if ($this->force_ids == "1"){ + + /* Valid uid/gid? */ + if (!tests::is_id($this->uidNumber)){ + $message[]= msgPool::invalid(_("UID"), $this->uidNumber, "/[0-9]/"); + } else { + if ($this->uidNumber < $this->config->get_cfg_value("minId")){ + $message[]= msgPool::toosmall(_("UID"), $this->config->get_cfg_value("minId")); + } + } + if (!tests::is_id($this->gidNumber)){ + $message[]= msgPool::invalid(_("GID"), $this->gidNumber, "/[0-9]/"); + } else { + if ($this->gidNumber < $this->config->get_cfg_value("minId")){ + $message[]= msgPool::toosmall(_("GID"), $this->config->get_cfg_value("minId")); + } + } + } + + /* Check shadow settings, well I like spaghetties... */ + if ($this->activate_shadowMin){ + if (!tests::is_id($this->shadowMin)){ + $message[]= msgPool::invalid(_("shadowMin"), $this->shadowMin, "/[0-9]/"); + } + } + if ($this->activate_shadowMax){ + if (!tests::is_id($this->shadowMax)){ + $message[]= msgPool::invalid(_("shadowMax"), $this->shadowMax, "/[0-9]/"); + } + } + if ($this->activate_shadowWarning){ + if (!tests::is_id($this->shadowWarning)){ + $message[]= msgPool::invalid(_("shadowWarning"), $this->shadowWarning, "/[0-9]/"); + } + if (!$this->activate_shadowMax){ + $message[]= msgPool::depends("shadowWarning", "shadowMax"); + } + if ($this->shadowWarning > $this->shadowMax){ + $message[]= msgPool::toobig("shadowWarning", "shadowMax"); + } + if ($this->activate_shadowMin && $this->shadowWarning < $this->shadowMin){ + $message[]= msgPool::toosmall("shadowWarning", "shadowMin"); + } + } + if ($this->activate_shadowInactive){ + if (!tests::is_id($this->shadowInactive)){ + $message[]= msgPool::invalid(_("shadowInactive"), $this->shadowInactive, "/[0-9]/"); + } + if (!$this->activate_shadowMax){ + $message[]= msgPool::depends("shadowInactive", "shadowMax"); + } + } + if ($this->activate_shadowMin && $this->activate_shadowMax){ + if ($this->shadowMin > $this->shadowMax){ + $message[]= msgPool::toobig("shadowMin", "shadowMax"); + } + } + + return ($message); + } + + + function multiple_check() + { + $message = plugin::multiple_check(); + if ($this->homeDirectory == "" && in_array("homeDirectory",$this->multi_boxes)){ + $message[]= msgPool::required(_("Home directory")); + } + if (!tests::is_path($this->homeDirectory) && in_array("homeDirectory",$this->multi_boxes)){ + $message[]= msgPool::invalid(_("Home directory"), "", "", "/home/yourname" ); + } + + /* Check shadow settings, well I like spaghetties... */ + if ($this->activate_shadowMin && in_array("activate_shadowMin",$this->multi_boxes)){ + if (!tests::is_id($this->shadowMin)){ + $message[]= msgPool::invalid(_("shadowMin"), $this->shadowMin, "/[0-9]/"); + } + } + if ($this->activate_shadowMax && in_array("activate_shadowMax",$this->multi_boxes)){ + if (!tests::is_id($this->shadowMax)){ + $message[]= msgPool::invalid(_("shadowMax"), $this->shadowMax, "/[0-9]/"); + } + } + if ($this->activate_shadowWarning && in_array("activate_shadowWarning",$this->multi_boxes)){ + if (!tests::is_id($this->shadowWarning)){ + $message[]= msgPool::invalid(_("shadowWarning"), $this->shadowWarning, "/[0-9]/"); + } + if (!$this->activate_shadowMax && in_array("activate_shadowMax",$this->multi_boxes)){ + $message[]= msgPool::depends("shadowWarning", "shadowMax"); + } + if ($this->shadowWarning > $this->shadowMax && in_array("activate_shadowWarning",$this->multi_boxes)){ + $message[]= msgPool::toobig("shadowWarning", "shadowMax"); + } + if ($this->activate_shadowMin && $this->shadowWarning < $this->shadowMin && in_array("activate_shadowMin",$this->multi_boxes)){ + $message[]= msgPool::tosmall("shadowWarning", "shadowMin"); + } + } + if ($this->activate_shadowInactive && in_array("activate_shadowInactive",$this->multi_boxes)){ + if (!tests::is_id($this->shadowInactive)){ + $message[]= msgPool::invalid(_("shadowInactive"), $this->shadowInactive, "/[0-9]/"); + } + if (!$this->activate_shadowMax && in_array("activate_shadowMax",$this->multi_boxes)){ + $message[]= msgPool::depends("shadowInactive", "shadowMax"); + } + } + if ($this->activate_shadowMin && $this->activate_shadowMax && in_array("activate_shadowMin",$this->multi_boxes)){ + if ($this->shadowMin > $this->shadowMax){ + $message[]= msgPool::toobig("shadowMin", "shadowMax"); + } + } + + return($message); + } + + + function addGroup ($groups) + { + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Walk through groups and add the descriptive entry if not exists */ + foreach ($groups as $value){ + + if (!array_key_exists($value, $this->groupMembership)){ + $ldap->cat($value, array('cn', 'description', 'dn')); + $attrs= $ldap->fetch(); + error_reporting (0); + if (!isset($attrs['description'][0])){ + $entry= $attrs["cn"][0]; + } else { + $dsc= preg_replace ('/^Group of user/', _("Group of user"), $attrs["description"][0]); + $entry= $attrs["cn"][0]." [$dsc]"; + } + error_reporting (E_ALL | E_STRICT); + + if(obj_is_writable($attrs['dn'],"groups/group","memberUid")){ + $this->groupMembership[$attrs['dn']]= $entry; + if($this->multiple_support_active && isset($this->groupMembership_some[$attrs['dn']])){ + unset($this->groupMembership_some[$attrs['dn']]); + } + } + } + } + + /* Sort groups */ + asort ($this->groupMembership); + reset ($this->groupMembership); + } + + + /* Del posix user from some groups */ + function delGroup ($groups) + { + $dest= array(); + foreach($groups as $dn_to_del){ + if(isset($this->groupMembership[$dn_to_del]) && obj_is_writable($dn_to_del,"groups/group","memberUid")){ + unset($this->groupMembership[$dn_to_del]); + } + if($this->multiple_support_active){ + if(isset($this->groupMembership_some[$dn_to_del]) && obj_is_writable($dn_to_del,"groups/group","memberUid")){ + unset($this->groupMembership_some[$dn_to_del]); + } + } + } + } + + + /* Adapt from template, using 'dn' */ + function adapt_from_template($dn, $skip= array()) + { + /* Include global link_info */ + $ldap= $this->config->get_ldap_link(); + + plugin::adapt_from_template($dn, $skip); + $template= $this->attrs['uid'][0]; + + /* Adapt group membership */ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=posixGroup)(memberUid=".$this->attrs["uid"][0]."))", array("description", "cn")); + + while ($this->attrs= $ldap->fetch()){ + if (!isset($this->attrs["description"][0])){ + $entry= $this->attrs["cn"][0]; + } else { + $entry= $this->attrs["cn"][0]." [".$this->attrs["description"][0]."]"; + } + $this->groupMembership[$ldap->getDN()]= $entry; + } + + /* Fix primary group settings */ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=posixGroup)(cn=$template)(gidNumber=".$this->gidNumber."))", array("cn")); + if ($ldap->count() != 1){ + $this->primaryGroup= $this->gidNumber; + } + + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=gosaUserTemplate)(uid=".$template.")(accessTo=*))", array("cn","accessTo")); + while($attr = $ldap->fetch()){ + $tmp = $attr['accessTo']; + unset ($tmp['count']); + $this->accessTo = $tmp; + } + + /* Adjust shadow checkboxes */ + foreach (array("shadowMin", "shadowMax", "shadowWarning", "shadowInactive") as $val){ + if ($this->$val != 0){ + $oval= "activate_".$val; + $this->$oval= "1"; + } + } + + /* FIXME: NEED review of this section */ + /* Need to check shadowExpire separately */ + + /* + * If shadowExpire is not enabled in the template, it's a UNIX timestamp - so don't convert it to seconds. + * The check is a hack - if difference between timestamp generated above and here is max 1 day. + */ + if(abs($this->shadowExpire - time())>86400) { + $this->shadowExpire= $this->convertToSeconds($this->shadowExpire); + } + + /* Only enable checkbox, if shadowExpire is in the future */ + if($this->shadowExpire > time()) { + $this->activate_shadowExpire= "1"; + } + } + + function convertToSeconds($val) + { + if ($val != 0){ + $val*= 60 * 60 * 24; + } else { + $date= getdate(); + $val= floor($date[0] / (60*60*24)) * 60 * 60 * 24; + } + return($val); + } + + + function get_used_uid_numbers() + { + $ids= array(); + $ldap= $this->config->get_ldap_link(); + + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=posixAccount)(uidNumber=*))", array("uidNumber")); + + /* Get list of ids */ + while ($attrs= $ldap->fetch()){ + $ids[$attrs['uidNumber'][0]] = $attrs['dn']; + } + return($ids); + } + + + function get_next_id($attrib, $dn) + { + $ids= array(); + $ldap= $this->config->get_ldap_link(); + + $ldap->cd ($this->config->current['BASE']); + if (preg_match('/gidNumber/i', $attrib)){ + $oc= "posixGroup"; + } else { + $oc= "posixAccount"; + } + $ldap->search ("(&(objectClass=$oc)($attrib=*))", array("$attrib")); + + /* Get list of ids */ + while ($attrs= $ldap->fetch()){ + $ids[]= (int)$attrs["$attrib"][0]; + } + + /* Add the nobody id */ + $ids[]= 65534; + + /* get the ranges */ + $tmp = array('0'=> 1000); + if (preg_match('/posixAccount/', $oc) && $this->config->get_cfg_value("uidNumberBase") != ""){ + $tmp= split('-',$this->config->get_cfg_value("uidNumberBase")); + } elseif($this->config->get_cfg_value("gidNumberBase") != ""){ + $tmp= split('-',$this->config->get_cfg_value("gidNumberBase")); + } + + /* Set hwm to max if not set - for backward compatibility */ + $lwm= $tmp[0]; + if (isset($tmp[1])){ + $hwm= $tmp[1]; + } else { + $hwm= pow(2,32); + } + + /* Find out next free id near to UID_BASE */ + if ($this->config->get_cfg_value("baseIdHook") == ""){ + $base= $lwm; + } else { + /* Call base hook */ + $base= get_base_from_hook($dn, $attrib); + } + for ($id= $base; $id++; $id < pow(2,32)){ + if (!in_array($id, $ids)){ + return ($id); + } + } + + /* Should not happen */ + if ($id == $hwm){ + msg_dialog::display(_("Error"), _("Cannot allocate a free ID!"), ERROR_DIALOG); + exit; + } + + } + + function reload() + { + /* Set base for all searches */ + $base = session::get('CurrentMainBase'); + $base = $base; + $ldap = $this->config->get_ldap_link(); + $attrs = array("cn", "description", "gidNumber"); + $Flags = GL_SIZELIMIT; + + /* Get groups */ + if ($this->GroupUserRegex == '*'){ + $filter = "(&(objectClass=posixGroup)(cn=".$this->GroupRegex."))"; + } else { + $filter= "(&(objectClass=posixGroup)(cn=".$this->GroupRegex.")(memberUid=".$this->GroupUserRegex."))"; + } + if($this->SubSearch){ + $Flags |= GL_SUBSEARCH; + }else{ + $base = get_groups_ou().$base; + } + + $res= get_list($filter, "groups", $base,$attrs, $Flags); + + /* check sizelimit */ + if (preg_match("/size limit/i", $ldap->get_error())){ + session::set('limit_exceeded',TRUE); + } + + /* Create a list of users */ + $this->grouplist = array(); + foreach ($res as $value){ + $this->grouplist[$value['gidNumber'][0]]= $value; + } + + $tmp=array(); + foreach($this->grouplist as $tkey => $val ){ + $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val; + } + + /* Sort index */ + ksort($tmp); + + /* Recreate index array[dn]=cn[description]*/ + $this->grouplist=array(); + foreach($tmp as $val){ + if(isset($val['description'])){ + $this->grouplist[$val['dn']]=$val['cn'][0]." [".$val['description'][0]."]"; + }else{ + $this->grouplist[$val['dn']]=$val['cn'][0]; + } + } + + reset ($this->grouplist); + } + + + /* Get posts from copy & paste dialog */ + function saveCopyDialog() + { + if(isset($_POST['homeDirectory'])){ + $this->homeDirectory = $_POST['homeDirectory']; + if (isset ($_POST['force_ids'])){ + $data= 1; + $this->gidNumber = $_POST['gidNumber']; + $this->uidNumber = $_POST['uidNumber']; + } else { + $data= 0; + } + if ($this->force_ids != $data){ + $this->is_modified= TRUE; + } + $this->force_ids= $data; + } + } + + + /* Create the posix dialog part for copy & paste */ + function getCopyDialog() + { + /* Skip dialog creation if this is not a valid account*/ + if(!$this->is_account) return(""); + if ($this->force_ids == 1){ + $force_ids = "checked"; + if (session::get('js')){ + $forceMode = ""; + } + } else { + if (session::get('js')){ + if($this->acl != "#none#") + $forceMode ="disabled"; + } + $force_ids = ""; + } + + $sta = ""; + + /* Open group add dialog */ + if(isset($_POST['edit_groupmembership'])){ + $this->group_dialog = TRUE; + $sta = "SubDialog"; + } + + /* If the group-add dialog is closed, call execute + to ensure that the membership is updatd */ + if(isset($_POST['add_groups_finish']) || isset($_POST['add_groups_cancel'])){ + $this->execute(); + $this->group_dialog =FALSE; + } + + if($this->group_dialog){ + $str = $this->execute(true); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = $sta; + return($ret); + } + + /* If a group member should be deleted, simply call execute */ + if(isset($_POST['delete_groupmembership'])){ + $this->execute(); + } + + /* Assigned informations to smarty */ + $smarty = get_smarty(); + $smarty->assign("homeDirectory",$this->homeDirectory); + $smarty->assign("uidNumber",$this->uidNumber); + $smarty->assign("gidNumber",$this->gidNumber); + $smarty->assign("forceMode",$forceMode); + $smarty->assign("force_ids",$force_ids); + if (!count($this->groupMembership)){ + $smarty->assign("groupMembership", array(" ")); + } else { + $smarty->assign("groupMembership", $this->groupMembership); + } + + /* Display wars message if there are more than 16 group members */ + if (count($this->groupMembership) > 16){ + $smarty->assign("groups", "too_many_for_nfs"); + } else { + $smarty->assign("groups", ""); + } + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); + + $ret = array(); + $ret['string'] = $str; + $ret['status'] = $sta; + return($ret); + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Avoid using the same gid/uid number as source user + empty numbers to enforce new ones. */ +# $this->savedUidNumber = $this->get_next_id("uidNumber", $this->dn); + $this->savedUidNumber = ""; +# $this->savedGidNumber = $this->get_next_id("gidNumber", $this->dn); + $this->savedGidNumber = ""; + } + + + function multiple_execute() + { + return($this->execute()); + } + + + static function plInfo() + { + return (array( + "plDescription" => _("POSIX account"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 2, + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + + "homeDirectory" => _("Home directory"), + "loginShell" => _("Shell"), + "uidNumber" => _("User ID"), + "gidNumber" => _("Group ID"), + + "mustchangepassword"=> _("Force password change on login"), + "shadowMin" => _("Shadow min"), + "shadowMax" => _("Shadow max"), + "shadowWarning" => _("Shadow warning"), + "shadowInactive" => _("Shadow inactive"), + "shadowExpire" => _("Shadow expire"), + "trustModel" => _("System trust model"))) + ); + } + + + /* Return selected values for multiple edit */ + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + $ret['groupMembership'] = $this->groupMembership; + $ret['groupMembership_some']= $this->groupMembership_some; + + if(in_array("primaryGroup",$this->multi_boxes)){ + $ret['primaryGroup'] = $this->primaryGroup; + } + if(in_array("trustmode",$this->multi_boxes)){ + $ret['trustModel'] = $this->trustModel; + $ret['accessTo'] = $this->accessTo; + } + foreach(array("shadowWarning","shadowInactive","shadowMin","shadowMax", "shadowExpire") as $entry){ + $active = "activate_".$entry; + if(in_array($active,$this->multi_boxes)){ + $ret[$entry] = $this->$entry; + $ret[$active] = $this->$active; + } + } + if(in_array("mustchangepassword",$this->multi_boxes)){ + $ret['mustchangepassword'] = $this->mustchangepassword; + } + return($ret); + } + + + /* Save posts for multiple edit + */ + function multiple_save_object() + { + if(isset($_POST['posix_mulitple_edit'])){ + + /* Backup expire value */ + $expire_tmp = $this->shadowExpire; + + /* Update all values */ + plugin::multiple_save_object(); + + /* Get selected checkboxes */ + foreach(array("primaryGroup","trustmode","mustchangepassword","activate_shadowWarning","activate_shadowInactive","activate_shadowMin", "activate_shadowMax","activate_shadowExpire") as $val){ + if(isset($_POST["use_".$val])){ + $this->multi_boxes[] = $val; + } + } + + /* Update special values, checkboxes for posixShadow */ + foreach(array("shadowMin","shadowMax","shadowExpire","shadowInactive","shadowWarning") as $var) { + if($this->acl_is_writeable($var)){ + $activate_var = "activate_".$var; + if(in_array($activate_var, $this->multi_boxes)){ + if(isset($_POST['activate_'.$var])){ + $this->$activate_var = true; + $this->$var = $_POST[$var]; + }else{ + $this->$activate_var = false; + $this->$var = 0; + } + } + } + } + + /* Restore shadow value, if the shadow attribute isn't used */ + if(!in_array("activate_shadowExpire",$this->multi_boxes)){ + $this->shadowExpire = $expire_tmp; + } + + /* Force change password ? */ + if(isset($_POST['mustchangepassword'])){ + $this->mustchangepassword = TRUE; + }else{ + $this->mustchangepassword = FALSE; + } + + /* Trust mode - special handling */ + if($this->acl_is_writeable("trustModel")){ + if (isset($_POST['trustmode'])){ + $saved= $this->trustModel; + if ($_POST['trustmode'] == "1"){ + $this->trustModel= "fullaccess"; + } elseif ($_POST['trustmode'] == "2"){ + $this->trustModel= "byhost"; + } else { + $this->trustModel= ""; + } + if ($this->trustModel != $saved){ + $this->is_modified= TRUE; + } + } + } + + /* Save primary group settings */ + if($this->acl_is_writeable("primaryGroup") && isset($_POST['primaryGroup'])){ + $data= $_POST['primaryGroup']; + if ($this->primaryGroup != $data){ + $this->is_modified= TRUE; + } + $this->primaryGroup= $_POST['primaryGroup']; + } + } + } + + + /* Initialize plugin with given atribute arrays + */ + function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + + /* Some dummy values */ + $groups_some = array(); + $groups_all = array(); + $groups_uid = array(); + $uids = array(); + $first = TRUE; + + /* Get all groups used by currently edited users */ + $uid_filter=""; + for($i =0; $i < $this->multi_attrs_all['uid']['count'] ; $i ++){ + $uid = $this->multi_attrs_all['uid'][$i]; + $uids[] = $uid; + $uid_filter.= "(memberUid=".$uid.")"; + } + $uid_filter = "(&(objectClass=posixGroup)(|".$uid_filter."))"; + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search($uid_filter,array("dn","cn","memberUid")); + while($group = $ldap->fetch()){ + $groups_some[$group['dn']] = $group['cn'][0]; + for($i = 0 ; $i < $group['memberUid']['count'] ; $i++){ + $groups_uid[$group['dn']][] = $group['memberUid'][$i]; + } + } + + /* Create an array, containing all used groups */ + $groups_all = $groups_some; + foreach($groups_all as $id => $group){ + foreach($uids as $uid){ + if(!in_array($uid,$groups_uid[$id])){ + unset($groups_all[$id]); + break; + } + } + } + + /* Assign group array */ + $this->groupMembership = $groups_all; + + /* Create an array of all grouops used by all users */ + foreach( $groups_all as $dn => $cn){ + if(isset($groups_some[$dn])){ + unset($groups_some[$dn]); + } + } + $this->groupMembership_some = $groups_some; + $this->primaryGroup = $this->gidNumber; + + /* Is this account a trustAccount? */ + if (isset($this->multi_attrs['trustModel'])){ + $this->trustModel= $this->multi_attrs['trustModel'][0]; + $this->was_trust_account= TRUE; + $this->multi_boxes[] = "trustmode"; + } else { + $this->was_trust_account= FALSE; + $this->trustModel= ""; + } + + /* Create access informations */ + $this->accessTo = array(); + if (isset($this->multi_attrs['accessTo'])){ + for ($i= 0; $i<$this->multi_attrs['accessTo']['count']; $i++){ + $tmp= $this->multi_attrs['accessTo'][$i]; + $this->accessTo[$tmp]= $tmp; + } + } + + /* Adjust shadow checkboxes */ + foreach (array("shadowMin", "shadowMax", "shadowWarning", "shadowInactive", + "shadowExpire") as $val){ + if ($this->$val != 0){ + $oval= "activate_".$val; + $this->$oval= "1"; + } + } + + /* Convert to seconds */ + if(isset($this->multi_attrs['shadowExpire'])){ + $this->shadowExpire = $this->convertToSeconds($this->multi_attrs['shadowExpire'][0]); + }else{ + $this->activate_shadowExpire = FALSE; + } + } + + + function set_multi_edit_values($attrs) + { + $groups = array(); + + /* Update groupMembership, keep optinal group */ + foreach($attrs['groupMembership_some'] as $dn => $cn){ + if(isset($this->groupMembership[$dn])){ + $groups[$dn] = $cn; + } + } + /* Update groupMembership, add forced groups */ + foreach($attrs['groupMembership'] as $dn => $cn){ + $groups[$dn] = $cn; + } + plugin::set_multi_edit_values($attrs); + $this->groupMembership = $groups; + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/plugins/personal/posix/generic.tpl b/trunk/gosa-core/plugins/personal/posix/generic.tpl new file mode 100644 index 000000000..11c4d9140 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/posix/generic.tpl @@ -0,0 +1,197 @@ + + + + + + +
+

{t}Generic{/t}

+ + + + + + + + + + + + + +{if !$multiple_support} + + + + +{/if} +
{$must} +{render acl=$homeDirectoryACL checkbox=$multiple_support checked=$use_homeDirectory} + +{/render} +
+{render acl=$loginShellACL checkbox=$multiple_support checked=$use_loginShell} + +{/render} +
+{render acl=$gidNumberACL checkbox=$multiple_support checked=$use_primaryGroup} + +{/render} +
{t}Status{/t}{$status}
+ +{if !$multiple_support} + + + + + + + + + + + + + + +
+{render acl=$force_idsACL} + +{/render} + + + + + +{render acl=$uidNumberACL} + +{/render} +
+ + +{render acl=$gidNumberACL} + +{/render} +
+{/if} +
+   + +

{t}Group membership{/t}

+ {if $groups eq "too_many_for_nfs"} + {t}(Warning: more than 16 groups are not supported by NFS!){/t} +
+ {/if} +{render acl=$groupMembershipACL} + +{/render} +
+{render acl=$groupMembershipACL} +   +{/render} +{render acl=$groupMembershipACL} + +{/render} +
+ +

 

+ + + + + + + +
+

{t}Account{/t}

+ {include file="$pwmode.tpl"} +
+   + +

{t}System trust{/t}

+{if !$multiple_support} + {t}Trust mode{/t}  + {render acl=$trustmodeACL} + + {/render} + {render acl=$trustmodeACL} + + {/render} +
+ {render acl=$trustmodeACL} +   + {/render} + {render acl=$trustmodeACL} + + {/render} + +{else} + + {t}Trust mode{/t}  + +{/if} +
+{if $multiple_support} + +{/if} + + + + + diff --git a/trunk/gosa-core/plugins/personal/posix/main.inc b/trunk/gosa-core/plugins/personal/posix/main.inc new file mode 100644 index 000000000..cce612acf --- /dev/null +++ b/trunk/gosa-core/plugins/personal/posix/main.inc @@ -0,0 +1,147 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('posixAccount'); + session::un_set('edit'); + +}else{ + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + session::un_set ('edit'); + session::un_set ('posixAccount'); + } + + /* Create posixAccount object on demand */ + if (!session::is_set('posixAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $posixAccount= new posixAccount ($config, $ui->dn); + $posixAccount->enable_CSN_check(); + $posixAccount->set_acl_base($ui->dn); + $posixAccount->set_acl_category("users"); + session::set('posixAccount',$posixAccount); + } + $posixAccount = session::get('posixAccount'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $posixAccount->save_object (); + } + + /* Enter edit mode? */ + if ((isset($_POST['edit'])) && (!session::is_set('edit'))){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + } + + /* save changes to LDAP and disable edit mode */ + $info= ""; + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $posixAccount->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $posixAccount->save (); + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Remove from session */ + session::un_set ('posixAccount'); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + if($lock_msg){ + $display = $lock_msg; + }else{ + $display.= $posixAccount->execute (); + } + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('posixAccount',$posixAccount); + } + + /* Show page footer depending on the mode */ + if (!$posixAccount->group_dialog && !$posixAccount->show_ws_dialog && $posixAccount->is_account && empty($lock_msg)){ + + $display.= "

"; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + $info= "\"\" ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + + /* Only display edit button if there is at least one attribute editable */ + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/posixAccount"))){ + $info.= "\"\" ". + msgPool::clickEditToChange(); + + $display.= "\n"; + } + $display.= "\n"; + } + $display.= "

\n"; + } + + /* Page header*/ + $display= print_header(get_template_path('plugins/posix/images/plugin.png'), + _("POSIX settings"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-core/plugins/personal/posix/paste_generic.tpl b/trunk/gosa-core/plugins/personal/posix/paste_generic.tpl new file mode 100644 index 000000000..4b1461ddb --- /dev/null +++ b/trunk/gosa-core/plugins/personal/posix/paste_generic.tpl @@ -0,0 +1,70 @@ + + + + +
+

{t}Posix settings{/t}

+ + + + + +
+ + + +
+ + + + + + + + + + + + + +
+ + + +   + + + +
  + + + +
+ + + + + + + +
+

{t}Group membership{/t}

+
+ + {if $groups eq "too_many_for_nfs"} + {t}(Warning: more than 16 groups are not supported by NFS!){/t} +
+ {/if} + +
+   + +
+
+
+
diff --git a/trunk/gosa-core/plugins/personal/posix/posix_groups.tpl b/trunk/gosa-core/plugins/personal/posix/posix_groups.tpl new file mode 100644 index 000000000..496773d2d --- /dev/null +++ b/trunk/gosa-core/plugins/personal/posix/posix_groups.tpl @@ -0,0 +1,83 @@ + + + + + +
+
+

+ {t}Select groups to add{/t} {$hint} +

+
+
+

+ + +

+
+
+
+

+ [F]{t}Filters{/t} +

+
+
+ + {$alphabet} +
+ + + + + + +
+  {t}Display groups of department{/t} + + +
+ + + + + +
+  {t}Display groups matching{/t} + + +
+ + + + + +
+  {t}Display groups of user{/t} + + +
+ + + + +
+ + {t}Search in subtrees{/t} +
+ {$apply} +
+
+ +

+ +   + +

+ diff --git a/trunk/gosa-core/plugins/personal/posix/posix_shadow.tpl b/trunk/gosa-core/plugins/personal/posix/posix_shadow.tpl new file mode 100644 index 000000000..79c0ebe33 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/posix/posix_shadow.tpl @@ -0,0 +1,79 @@ + + + + +
+ + +{render acl=$mustchangepasswordACL checkbox=$multiple_support checked=$use_mustchangepassword} + +{/render} + {t}User must change password on first login{/t} +
+ + +{render acl=$shadowMinACL checkbox=$multiple_support checked=$use_activate_shadowMin} + +{/render} +{render acl=$shadowMinACL} + {$shadowmins} +{/render} +
+ + +{render acl=$shadowMaxACL checkbox=$multiple_support checked=$use_activate_shadowMax} + +{/render} +{render acl=$shadowMaxACL} + {$shadowmaxs} +{/render} +
+ + +{render acl=$shadowExpireACL checkbox=$multiple_support checked=$use_activate_shadowExpire} + +{/render} + {t}Password expires on{/t} +{render acl=$shadowExpireACL} + +{/render} +{render acl=$shadowExpireACL} + +{/render} +{render acl=$shadowExpireACL} + + +{/render} +
+ + +{render acl=$shadowInactiveACL checkbox=$multiple_support checked=$use_activate_shadowInactive} + +{/render} +{render acl=$shadowInactiveACL} + {$shadowinactives} +{/render} +
+ + +{render acl=$shadowWarningACL checkbox=$multiple_support checked=$use_activate_shadowWarning} + +{/render} +{render acl=$shadowWarningACL} + {$shadowwarnings} +{/render} +
+ + + diff --git a/trunk/gosa-core/plugins/personal/posix/trust_machines.tpl b/trunk/gosa-core/plugins/personal/posix/trust_machines.tpl new file mode 100644 index 000000000..f7b0b2ca2 --- /dev/null +++ b/trunk/gosa-core/plugins/personal/posix/trust_machines.tpl @@ -0,0 +1,42 @@ + + + + + +
+
+

+ {t}Select systems to add{/t} {$hint}
+

+
+
+

+ +

+
+
+
+

[F]{ +t}Filters{/t}

+
+
+ + {$alphabet} +
+ +
 {t}Display systems of department{/t}
+ +
 {t}Display systems matching{/t}
+ {$apply} +
+
+ +

+ +   + +

diff --git a/trunk/gosa-core/redhat/01_fix_template_location.patch b/trunk/gosa-core/redhat/01_fix_template_location.patch new file mode 100644 index 000000000..785696ebc --- /dev/null +++ b/trunk/gosa-core/redhat/01_fix_template_location.patch @@ -0,0 +1,12 @@ +diff -urNad gosa-core~/include/functions.inc gosa-core/include/functions.inc +--- gosa-core~/include/functions.inc 2008-05-30 10:39:33.000000000 +0200 ++++ gosa-core/include/functions.inc 2008-06-03 09:16:19.000000000 +0200 +@@ -40,7 +40,7 @@ + define ("CONFIG_FILE",$_SERVER['CONFIG_FILE']); + } + +-define ("CONFIG_TEMPLATE_DIR", "../contrib"); ++define ("CONFIG_TEMPLATE_DIR", "/usr/share/doc/gosa"); + define ("TEMP_DIR","/var/cache/gosa/tmp"); + + /* Define get_list flags */ diff --git a/trunk/gosa-core/redhat/02_fix_class_mapping.patch b/trunk/gosa-core/redhat/02_fix_class_mapping.patch new file mode 100644 index 000000000..95b8ea858 --- /dev/null +++ b/trunk/gosa-core/redhat/02_fix_class_mapping.patch @@ -0,0 +1,50 @@ +--- gosa-core~/include/functions.inc 2009-02-16 14:19:18.000000000 +0100 ++++ gosa-core/include/functions.inc 2009-02-16 14:18:15.000000000 +0100 +@@ -73,7 +73,7 @@ + $svn_revision = '$Revision: 13395 $'; + + /* Include required files */ +-require_once("class_location.inc"); ++require_once("/var/cache/gosa/class.cache"); + require_once ("functions_debug.inc"); + require_once ("accept-to-gettext.inc"); + +--- gosa-core~/update-gosa 2009-02-16 14:19:18.000000000 +0100 ++++ gosa-core/update-gosa 2009-02-16 14:18:15.000000000 +0100 +@@ -21,7 +21,7 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +-define ("GOSA_HOME", dirname(__FILE__)); ++define ("GOSA_HOME", "/usr/share/gosa"); + define ("LOCALE_DIR", GOSA_HOME."/locale"); + define ("PLUGSTATE_DIR", GOSA_HOME."/state"); + +@@ -122,8 +122,8 @@ + function rescan_classes() + { + echo "Updating class cache...\n"; +- $class_mapping= get_classes(); +- $filename= GOSA_HOME."/include/class_location.inc"; ++ $class_mapping= get_classes("/usr/share/gosa"); ++ $filename= "/var/cache/gosa/class.cache"; + + /* Sanity checks */ + if (!file_exists($filename) || is_writable($filename)) { +--- gosa-core~/include/class_config.inc 2009-02-16 14:19:18.000000000 +0100 ++++ gosa-core/include/class_config.inc 2009-02-16 14:18:15.000000000 +0100 +@@ -76,12 +76,12 @@ + if we have installed or removed plugins. + */ + if(session::global_is_set("class_location.inc:timestamp")){ +- $tmp = stat("../include/class_location.inc"); ++ $tmp = $tmp = stat("/var/cache/gosa/class.cache"); + if($tmp['mtime'] != session::global_get("class_location.inc:timestamp")){ + session::global_un_set("plist"); + } + } +- $tmp = stat("../include/class_location.inc"); ++ $tmp = stat("/var/cache/gosa/class.cache"); + session::global_set("class_location.inc:timestamp",$tmp['mtime']); + + if($this->filename != "" && filemtime($this->filename) != $this->last_modified){ diff --git a/trunk/gosa-core/redhat/03_fix_locale_location.patch b/trunk/gosa-core/redhat/03_fix_locale_location.patch new file mode 100644 index 000000000..148a9d09a --- /dev/null +++ b/trunk/gosa-core/redhat/03_fix_locale_location.patch @@ -0,0 +1,41 @@ +diff -urNad gosa-2.6.0+svn11288~/include/php_setup.inc gosa-2.6.0+svn11288/include/php_setup.inc +--- gosa-2.6.0+svn11288~/include/php_setup.inc 2008-06-11 15:55:59.000000000 +0200 ++++ gosa-2.6.0+svn11288/include/php_setup.inc 2008-06-11 15:56:00.000000000 +0200 +@@ -20,7 +20,7 @@ + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +-define ("LOCALE_DIR", dirname(dirname(__FILE__))."/locale/compiled"); ++define ("LOCALE_DIR", "/var/cache/gosa/locale"); + + function gosaRaiseError($errno, $errstr, $errfile, $errline) + { +diff -urNad gosa-2.6.0+svn11288~/update-gosa gosa-2.6.0+svn11288/update-gosa +--- gosa-2.6.0+svn11288~/update-gosa 2008-06-11 15:55:59.000000000 +0200 ++++ gosa-2.6.0+svn11288/update-gosa 2008-06-11 16:02:30.000000000 +0200 +@@ -169,20 +169,20 @@ + + /* For each language, merge the target .mo to the compiled directory. */ + foreach ($languages as $language => $po_files){ +- if (!is_dir(LOCALE_DIR."/compiled/${language}/LC_MESSAGES")){ +- if (!mkdir (LOCALE_DIR."/compiled/${language}/LC_MESSAGES", 0755, TRUE)){ +- echo "Failed to create '".LOCALE_DIR."/compiled/${language}/LC_MESSAGES'- aborted"; ++ if (!is_dir("/var/cache/gosa/locale/${language}/LC_MESSAGES")){ ++ if (!mkdir ("/var/cache/gosa/locale/${language}/LC_MESSAGES", 0755, TRUE)){ ++ echo "Failed to create '/var/cache/gosa/locale/${language}/LC_MESSAGES'- aborted"; + exit (3); + } + } + + /* Cat all these po files into one single file */ +- system ("(cd ".LOCALE_DIR." && msgcat --use-first ".implode(" ", $po_files)." > compiled/${language}/LC_MESSAGES/messages.po)", $val); ++ system ("(cd ".LOCALE_DIR." && msgcat --use-first ".implode(" ", $po_files)." > /var/cache/gosa/locale/${language}/LC_MESSAGES/messages.po)", $val); + if ($val != 0){ + echo "Merging of message files failed - aborted"; + exit (4); + } +- system ("(cd ".LOCALE_DIR."/compiled/${language}/LC_MESSAGES && msgfmt -o messages.mo messages.po && rm messages.po)", $val); ++ system ("(cd /var/cache/gosa/locale/${language}/LC_MESSAGES && msgfmt -o messages.mo messages.po && rm messages.po)", $val); + if ($val != 0){ + echo "Compiling of message files failed - aborted"; + exit (5); diff --git a/trunk/gosa-core/redhat/04_fix_online_help_location.patch b/trunk/gosa-core/redhat/04_fix_online_help_location.patch new file mode 100644 index 000000000..85f8ff6b3 --- /dev/null +++ b/trunk/gosa-core/redhat/04_fix_online_help_location.patch @@ -0,0 +1,24 @@ +diff -urNad gosa-core~/html/helpviewer.php gosa-core/html/helpviewer.php +--- gosa-core~/html/helpviewer.php 2008-04-12 19:58:14.000000000 +0200 ++++ gosa-core/html/helpviewer.php 2008-04-14 17:25:10.000000000 +0200 +@@ -110,7 +110,7 @@ + if(session::is_set('current_class_for_help')){ + + /* Create new XML parser with the path to the Xml file */ +- $xml = new parseXml("../doc/guide.xml"); ++ $xml = new parseXml("/etc/gosa/guide.xml"); + + /* Generate help array */ + $str = $xml->parse(); +diff -urNad gosa-core~/update-gosa gosa-core/update-gosa +--- gosa-core~/update-gosa 2008-04-14 14:59:22.000000000 +0200 ++++ gosa-core/update-gosa 2008-04-14 17:24:53.000000000 +0200 +@@ -193,7 +193,7 @@ + + function rescan_guide() + { +- $master_guide= "doc/guide.xml"; ++ $master_guide= "/etc/gosa/guide.xml"; + echo "Updating Online Help Index...\n"; + $master_guide_content="\n". + " +
+ + +
+ +

{t}PHP module and extension checks{/t}

+ + {foreach from=$basic item=val key=key} + + {if $basic[$key].SOLUTION != "" && !$basic[$key].RESULT} + + +
+ {else} + + +
+ {/if} + +
{$basic[$key].NAME}
+
+ + {if $basic[$key].RESULT} +
{t}Ok{/t}
+ {else} + {if $basic[$key].MUST} +
{t}Error{/t}
+ {else} +
{t}Warning{/t}
+ {/if} + {if $basic[$key].SOLUTION != ""} + + +
+ {if $basic[$key].MUST} +
+ {$basic[$key].SOLUTION} + {t}GOsa will NOT run without fixing this.{/t} + {else} +
+ {$basic[$key].SOLUTION} + {t}GOsa will run without fixing this.{/t} + {/if} +
+
+ {/if} + {/if} +
+
+ {/foreach} +
+
+ + + +
+ + +
+ + +

{t}PHP setup configuration{/t} ({t}show information{/t})

+ + + {foreach from=$config item=val key=key} + + + {if $config[$key].SOLUTION != "" && !$config[$key].RESULT} + + +
+ {else} + + +
+ {/if} + + +
{$config[$key].NAME}
+
+ {if $config[$key].RESULT} +
{t}Ok{/t}
+ {else} + + {if $config[$key].MUST} +
{t}Error{/t}
+ {else} +
{t}Warning{/t}
+ {/if} + + {if $config[$key].SOLUTION != ""} + + +
+ {if $config[$key].MUST} +
+ {$config[$key].SOLUTION} + {t}GOsa will NOT run without fixing this.{/t} + {else} +
+ {$config[$key].SOLUTION} + {t}GOsa will run without fixing this.{/t} + {/if} +
+
+ {/if} + {/if} +
+
+ {/foreach} + + +
+
+ +
+ diff --git a/trunk/gosa-core/setup/setup_config1.tpl b/trunk/gosa-core/setup/setup_config1.tpl new file mode 100644 index 000000000..d3f1b844c --- /dev/null +++ b/trunk/gosa-core/setup/setup_config1.tpl @@ -0,0 +1,225 @@ +
+

{t}Look and feel{/t}

+ +
+
+ {t}Theme{/t} +
+
+ +
+
+ +

{t}Apache{/t}

+ +
+
+ {t}Compress output send to browser{/t} +
+
+ +
+
+

{t}People and group storage{/t}

+
+
+ {t}People DN attribute{/t} +
+
+ +
+
+ +
+
+ {t}People storage subtree{/t} +
+
+ +
+
+ +
+
+ {t}Group storage subtree{/t} +
+
+ +
+
+ +
+
+ {t}Include personal title in user DN{/t} +
+
+ +
+
+ +
+
+ {t}Relaxed naming policies{/t} +
+
+ +
+
+ +
+
+ {t}Automatic UIDs{/t} +
+
+ {if $id_settings.idgen_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}GID / UID min id{/t} +
+
+ {if $id_settings.minid_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}Number base for people/groups{/t} +
+
+ +
+
+
+
+ {t}Hook for number base{/t} +
+
+ {if $base_hook_active == FALSE} + + + {else} + + + {/if} +
+
+
+ +

{t}Password settings{/t}

+ +
+
+ {t}Password encryption algorithm{/t} +
+
+ +
+
+ +
+
+ {t}Password restrictions{/t} +
+
+ + {if $pwd_rules.pwminlen_active == FALSE} + + {t}Password minimum length{/t} + + {else} + + {t}Password minimum length{/t} + + {/if} +
+ {if $pwd_rules.pwdiffer_active == FALSE} + + {t}Different characters from old password{/t} + + {else} + + {t}Different characters from old password{/t} + + {/if} + +
+
+ +
+
+ {t}Password change hook{/t} +
+
+ {if $pwd_rules.externalpwdhook_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}Use SASL for kerberos{/t} +
+
+ +
+
+ +
+
+ {t}Use account expiration{/t} +
+
+ +
+
+ + + + + diff --git a/trunk/gosa-core/setup/setup_config2.tpl b/trunk/gosa-core/setup/setup_config2.tpl new file mode 100644 index 000000000..b6d806b31 --- /dev/null +++ b/trunk/gosa-core/setup/setup_config2.tpl @@ -0,0 +1,352 @@ +
+

{t}Samba settings{/t}

+ +
+
+ {t}Samba hash generator{/t} +
+
+ +
+
+ +
+
+ {t}Samba SID{/t} +
+
+ {if $samba_settings.samba_sid_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}RID base{/t} +
+
+ {if $samba_settings.samba_rid_active == FALSE} + + + {else} + + + {/if} +
+
+
+
+ {t}Workstation container{/t} +
+
+ {if $generic_settings.wws_ou_active == FALSE} + + + {else} + + + {/if} +
+
+
+
+ {t}Samba SID mapping{/t} +
+
+ +
+
+
+
+ {t}Timezone{/t} +
+
+ +
+
+ + +

{t}Additional GOsa settings{/t}

+ +
+
+ {t}Enable Copy & Paste{/t} +
+
+ + +
+
+ +
+
+ {t}Enable DNS extension{/t} +
+
+ + +
+
+ +
+
+ {t}Enable DHCP extension{/t} +
+
+ + +
+
+ +
+
+ {t}Enable mime type management{/t} +
+
+ + +
+
+ +
+
+ {t}Enable FAI release management{/t} +
+
+ + +
+
+ +
+
+ {t}Enable user netatalk plugin{/t} +
+
+ +
+
+ +
+
+ {t}Government mode{/t} +
+
+ +
+
+ +
+
+ {t}Logging options{/t} +
+
+ {t}Syslog{/t} + {t}MySQL{/t} +
+
+ + +

{t}Mail settings{/t}

+ +
+
+ {t}Mail method{/t} +
+
+ +
+
+
+
+ +
+
+ {t}Account identification attribute{/t} +
+
+ +
+
+
+
+ +
+
+ {t}Vacation templates{/t} +
+
+ {if $mail_settings.vacationdir_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}Use Cyrus UNIX style{/t} +
+
+ +
+
+ + +

{t}Snapshots / Undo{/t}

+ {if $generic_settings.snapshot_active == FALSE} +
+
+ {t}Enable snapshots{/t} +
+
+
+
+
+ {t}Snapshot base{/t} +
+
+ +
+
+
+
+ {t}Server{/t} +
+
+ +
+
+
+
+ {t}User{/t} +
+
+ +
+
+
+
+ {t}Password{/t} +
+
+ +
+
+
+ + {else} +
+
+ {t}Enable snapshots{/t} +
+
+
+
+
+ {t}Snapshot base{/t} +
+
+ +
+
+
+
+ {t}Server{/t} +
+
+ +
+
+
+
+ {t}User{/t} +
+
+ +
+
+
+
+ {t}Password{/t} +
+
+ +
+
+
+ {/if} +
+ + +
diff --git a/trunk/gosa-core/setup/setup_config3.tpl b/trunk/gosa-core/setup/setup_config3.tpl new file mode 100644 index 000000000..bfcaac07f --- /dev/null +++ b/trunk/gosa-core/setup/setup_config3.tpl @@ -0,0 +1,305 @@ +
+

{t}GOsa core settings{/t}

+ +
+
+ {t}Enable primary group filter{/t} +
+
+ + +
+
+ +
+
+ {t}Display summary in listings{/t} +
+
+ + +
+
+ +
+
+ {t}Honour administrative units{/t} +
+
+ + +
+
+ +
+
+ {t}Smarty compile directory{/t} +
+
+ +
+
+
+
+ {t}SNMP community{/t} +
+
+ +
+
+
+
+ {t}Path for PPD storage{/t} +
+
+ {if $optional.ppd_path_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}Path for kiosk profile storage{/t} +
+
+ {if $optional.kioskpath_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}SUDO role base{/t} +
+
+ {if $optional.sudoou_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}Mail queue script{/t} +
+
+ {if $optional.mailQueueScriptPath_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}Notification script{/t} +
+
+ {if $optional.notifydir_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}Enable edit locking{/t} +
+
+ {if $optional.uniq_identifier_active == FALSE} + + + {else} + + + {/if} +
+
+ +

{t}Login and session{/t}

+
+
+ {t}Login attribute{/t} +
+
+ +
+
+ +
+
+ {t}Enforce register_globals to be deactivated{/t} +
+
+ + +
+
+ +
+
+ {t}Enforce encrypted connections{/t} +
+
+ + +
+
+ +
+
+ {t}Warn if session is not encrypted{/t} +
+
+ + +
+
+ +
+
+ {t}Remember dialog filter settings{/t} +
+
+ + +
+
+ +
+
+ {t}Session lifetime{/t} +
+
+ +
+
+ + +

{t}Debugging{/t}

+ +
+
+ {t}Show PHP errors{/t} +
+
+ +
+
+ + +
+
+ {t}Maximum LDAP query time{/t} +
+
+ {if $optional.max_ldap_query_time_active == FALSE} + + + {else} + + + {/if} +
+
+ +
+
+ {t}Log LDAP statistics{/t} +
+
+ + +
+
+ +
+
+ {t}Debug level{/t} +
+
+ +
+
+
+ + diff --git a/trunk/gosa-core/setup/setup_feedback.tpl b/trunk/gosa-core/setup/setup_feedback.tpl new file mode 100644 index 000000000..eb326bad0 --- /dev/null +++ b/trunk/gosa-core/setup/setup_feedback.tpl @@ -0,0 +1,154 @@ + +{if $feedback_send} + +
+ {t}Feedback sucessfully send{/t} +
+ +{else} + +
+ +

{$additional_info}

+ +

+  {t}Subscribe to the gosa-announce mailinglist{/t} +

+

+ {t}When checking this option, GOsa will try to connect http://oss.gonicus.de in order to subscribe you to the gosa-announce mailing list. You've to confirm this by mail.{/t} +

+ + + + + + + + + + + + + +
+ {t}Organization{/t} + + +
+ {t}Name{/t} + + +
+ {t}Mail address{/t}{$must} + + +
+ + +

 

+

+  {t}Send feedback to the GOsa project team{/t} +

+

+ {t}When checking this option, GOsa will try to connect http://oss.gonicus.de in order to submit your form anonymously.{/t} +

+ {t}Generic{/t} + + + + + + + + + + + + + + + + + + + + + + + + + +
+ {t}Did the setup procedure help you to get started?{/t} + + {t}Yes{/t} +
+ {t}No{/t} +
+ {t}If not, what problems did you encounter{/t}: + + +
+ {t}Is this the first time you use GOsa?{/t} + + {t}Yes{/t} +
+ {t}No{/t}, + {t}I use it since{/t} + +
+ {t}What operating system / distribution do you use?{/t} + + +
+ {t}What web server do you use?{/t} + + +
+ {t}What PHP version do you use?{/t} + + +
+ +
{t}LDAP{/t} + + + + + + + + + +
+ {t}What kind of LDAP server(s) do you use?{/t} + +
{t}How many objects are in your LDAP?{/t} + +
+ +
{t}Features{/t} + + + + + + + + + +
{t}What features of GOsa do you use?{/t} + + {foreach from=$features_used item=data key=key} + + {$data.NAME}
+ {/foreach} +
{t}What features do you want to see in future versions of GOsa?{/t} + +
+
+ +{/if} + diff --git a/trunk/gosa-core/setup/setup_finish.tpl b/trunk/gosa-core/setup/setup_finish.tpl new file mode 100644 index 000000000..87b6732d3 --- /dev/null +++ b/trunk/gosa-core/setup/setup_finish.tpl @@ -0,0 +1,23 @@ +
+

+ {t}Create your configuration file{/t} +

+

+ {$msg2} +

+ + chown root.{$webgroup} {$CONFIG_DIR}/{$CONFIG_FILE}
+ chmod 640 {$CONFIG_DIR}/{$CONFIG_FILE} +
+

+ +

+ {if $err_msg != ""} +

 

+
+ {t}Status: {/t} + {$err_msg} + {/if} + +
+ diff --git a/trunk/gosa-core/setup/setup_frame.tpl b/trunk/gosa-core/setup/setup_frame.tpl new file mode 100644 index 000000000..f6554f514 --- /dev/null +++ b/trunk/gosa-core/setup/setup_frame.tpl @@ -0,0 +1,47 @@ + +{$php_errors} +
+ {$msg_dialogs} + +
+
+
GOsa
+
{$version}
+
+
+ {t}GOsa setup wizard{/t} +
+ +
+ +
+
+ {t}Installation{/t}  {t}Setup{/t} +
+ {$navigation} +
+ +
+
+ {$errors} + {$header} +
+
+ {$contents} + {$bottom} +
+
+
+
+
+
+ + + +
+ + + + diff --git a/trunk/gosa-core/setup/setup_language.tpl b/trunk/gosa-core/setup/setup_language.tpl new file mode 100644 index 000000000..236ce1651 --- /dev/null +++ b/trunk/gosa-core/setup/setup_language.tpl @@ -0,0 +1,13 @@ +
+
+

{t}Please select the preferred language{/t}

+

+ {t}At this point, you can select the site wide default language. Choosing 'automatic' will use the language requested by the browser. This setting can be overriden per user.{/t} +

+
+
+ +
+
diff --git a/trunk/gosa-core/setup/setup_ldap.tpl b/trunk/gosa-core/setup/setup_ldap.tpl new file mode 100644 index 000000000..8e082d638 --- /dev/null +++ b/trunk/gosa-core/setup/setup_ldap.tpl @@ -0,0 +1,136 @@ +
+ + {if $resolve_user} + +
+

+ {t}Please choose the LDAP user to be used by GOsa{/t} +

+ + + +

 

+
+ + +
+
+ +
+ + {else} +

+ {t}LDAP connection{/t} +

+
+
+ {t}Location name{/t} +
+
+ +
+
+
+
+
{t}Connection URI{/t}
+
+
+ +
+
+
+
+ {t}TLS connection{/t} +
+
+ +
+
+
+
+ {t}Base{/t} +
+
+ {if $namingContextsCount >= 1} + + {else} + + {/if} + +
+
+

+ {t}Authentication{/t} +

+
+
+ {t}Admin DN{/t} +
+
+ + {if $append_base_to_admin_dn},{$base_to_append}{/if} + +
+
+ +
+
+
+
+  {t}Automatically append LDAP base to admin DN{/t} +
+
+ + +
+
+ {t}Admin password{/t} +
+
+ +
+
+ +

+ {t}Schema based settings{/t} +

+
+
+ {t}Use rfc2307bis compliant groups{/t} +
+
+ +
+
+ {/if} + + {if ! $resolve_user} +

+ {t}Current status{/t} +

+
+
+ {t}Information{/t} +
+
+ {$connection_status} +
+
+ {/if} + +
+ + + diff --git a/trunk/gosa-core/setup/setup_license.tpl b/trunk/gosa-core/setup/setup_license.tpl new file mode 100644 index 000000000..532257986 --- /dev/null +++ b/trunk/gosa-core/setup/setup_license.tpl @@ -0,0 +1,11 @@ +
+
+
+ {$License} +
+
+
+ +
+
+ diff --git a/trunk/gosa-core/setup/setup_migrate.tpl b/trunk/gosa-core/setup/setup_migrate.tpl new file mode 100644 index 000000000..82d642cd9 --- /dev/null +++ b/trunk/gosa-core/setup/setup_migrate.tpl @@ -0,0 +1,571 @@ +
+
+ + {if $method == "default"} +

{t}During the LDAP inspection, we're going to check for several common pitfalls that may occur when migration to GOsa base LDAP administration. You may want to fix the problems below, in order to provide smooth services.{/t} +

+ + {foreach from=$checks item=val key=key} +
+ + {if $checks.$key.ERROR_MSG} + +
+ {else} + +
+ {/if} +
{$checks.$key.TITLE}
+
+ {if $checks.$key.STATUS} +
{$checks.$key.STATUS_MSG}
+ {else} +
{$checks.$key.STATUS_MSG}
+ {/if} +
+ {if $checks.$key.ERROR_MSG} + {$checks.$key.ERROR_MSG} + {/if} +
+
+ {/foreach} +
+ + + {elseif $method == "rootOC_migrate_dialog"} + +

{t}Add required object classes to the ldap base{/t}

+ + {t}Current{/t} +
+
+
{$details.current}
+
+
+
+ {t}After migration{/t} +
+
+
{$details.target}
+
+
+ +
+ +

+ + +

 

+
+ +
+ + {elseif $method == "outside_winstations"} + +

{t}Move windows workstations into a valid windows workstation department{/t}

+ + {t}This dialog allows you to move the displayed windows workstations into a valid department{/t} +
+ {t}Be careful with this tool, there may be references pointing to this workstations that can't be migrated.{/t} +
+
+ + {foreach from=$outside_winstations item=val key=key} + {if $outside_winstations.$key.selected} + + {else} + + {/if} + +  {$outside_winstations.$key.dn} + {if $outside_winstations.$key.ldif != ""} +
+
+
+								{$outside_winstations.$key.ldif}
+							
+
+
+ {/if} +
+ {/foreach} + + {t}Select all{/t} +

+ {t}Move selected windows workstations into the following GOsa department{/t} : + +
+ + +

+ + +

 

+
+ +
+ + + {elseif $method == "outside_groups"} + +

{t}Move groups into configured group tree{/t}

+ +

+ {t}This dialog allows moving a couple of groups to the configured group tree. Doing this may straighten your LDAP service.{/t} +

+

+ {t}Be careful with this option! There may be references pointing to these groups. The GOsa setup can't migrate references, so you may want to cancel the migration in this case.{/t} +

+

+ {t}Move selected groups into this group tree{/t}: + +

+ + {foreach from=$outside_groups item=val key=key} + {if $outside_groups.$key.selected} + + {else} + + {/if} + +  {$outside_groups.$key.dn} + {if $outside_groups.$key.ldif != "" && $group_details} +
+
+
+{$outside_groups.$key.ldif}
+
+
+
+ {/if} +
+ {/foreach} + + + {t}Select all{/t} +
+

+ {if $group_details} + + {else} + + {/if} +

+ +

 

+
+ +   + +
+ + {elseif $method == "outside_users"} + +

{t}Move users into configured user tree{/t}

+

+ {t}This dialog allows moving a couple of users to the configured user tree. Doing this may straighten your LDAP service.{/t} +

+

+ {t}Be careful with this option! There may be references pointing to these users. The GOsa setup can't migrate references, so you may want to cancel the migration in this case.{/t} +

+

+ {t}Move selected users into this people tree{/t}: + +

+ {foreach from=$outside_users item=val key=key} + {if $outside_users.$key.selected} + + {else} + + {/if} + +  {$outside_users.$key.dn} + {if $outside_users.$key.ldif != "" && $user_details} +
+
+
+{$outside_users.$key.ldif}
+
+
+
+ {/if} +
+ {/foreach} + + {t}Select all{/t} +
+ + {if $user_details} + + {else} + + {/if} + +

 

+
+ +   + +
+ + + {elseif $method == "migrate_acls"} +

{t}Migrate GOsa 2.5 administrative accounts{/t}

+

+ {t}This dialog allows the migration of GOsa 2.5 admin accounts into GOsa 2.6 useable accounts.{/t} +

+ + + + + + {foreach from=$migrateable_users item=item key=key} + + + + + {/foreach} +
{$item.dn}
+ + {if !$details} + + + {else} + + +
+
+ {t}Current{/t} +
+
{$migrate_acl_base_entry}
+
+ {t}After migration{/t} +
+
{$migrate_acl_base_entry}{foreach from=$migrateable_users item=item key=key}{if $item.checked}{$item.details}{/if}{/foreach}
+
+
+
+ + {/if} + + +

 

+
+ + +
+ + {elseif $method == "create_acls"} + + {if $acl_create_selected != "" && $what_will_be_done_now!=""} +
+
+{$what_will_be_done_now}
+
+
+ + + {else} +

{t}Create a new GOsa administrator account{/t}

+ +

+ {t}This dialog will automatically add a new super administrator to your LDAP tree.{/t} +

+ + + + + + + + + + + + + + + + + +
+ {t}Name{/t}:  + + System administrator +
+ {t}User ID{/t}:  + +
+
+ {t}Password{/t}:  + +
+
+ {t}Password (again){/t}:  + + +
+
+ + + + +

 

+
+ + +
+ {/if} + {elseif $method == "migrate_deps"} + +

Department migration

+ +

{t}The listed departments are currently invisible in the GOsa user interface. If you want to change this for a couple of entries, select them and use the migrate button below.{/t}

+

{t}If you want to know what will be done when migrating the selected entries, use the 'Show changes' button to see the LDIF.{/t}

+ + {foreach from=$deps_to_migrate item=val key=key} + + {if $deps_to_migrate.$key.checked} + + {$deps_to_migrate.$key.dn} + {if $deps_to_migrate.$key.after != ""} +
+ +{t}Current{/t} +
+
+dn: {$deps_to_migrate.$key.dn}
+{$deps_to_migrate.$key.before}
+
+
+{t}After migration{/t} +
+
+dn: {$deps_to_migrate.$key.dn}
+{$deps_to_migrate.$key.after}
+
+
+
+ {/if} + {else} + + {$deps_to_migrate.$key.dn} + {/if} + +
+ {/foreach} + + {t}Select all{/t} +
+ + {if $deps_details} + + {else} + + {/if} + +

 

+ +
+ +   + +
+ {elseif $method == "migrate_users"} + +

User migration

+ +

{t}The listed users are currently invisible in the GOsa user interface. If you want to change this for a couple of users, just select them and use the 'Migrate' button below.{/t}

+

{t}If you want to know what will be done when migrating the selected entries, use the 'Show changes' button to see the LDIF.{/t}

+ {foreach from=$users_to_migrate item=val key=key} + + {if $users_to_migrate.$key.checked} + + {$users_to_migrate.$key.dn} + {if $users_to_migrate.$key.after != ""} +
+ +{t}Current{/t} +
+
+dn: {$users_to_migrate.$key.dn}
+{$users_to_migrate.$key.before}
+
+
+{t}After migration{/t} +
+
+dn: {$users_to_migrate.$key.dn}
+{$users_to_migrate.$key.after}
+
+
+
+ {/if} + {else} + + {$users_to_migrate.$key.dn} + {/if} +
+ {/foreach} + + {t}Select all{/t} +
+ + {if $user_details} + + {else} + + {/if} + +

 

+ +
+ +   + +
+ + + {elseif $method == "devices"} + + +

Devices

+ +

{t}The listed devices are currently invisible in the GOsa interface. If you want to change this for a couple of devices, just select them and use the 'Migrate' button below.{/t}

+

{t}If you want to know what will be done when migrating the selected entries, use the 'Show changes' button to see the LDIF.{/t}

+ {foreach from=$devices item=item key=key} + + {$item.DEVICE_NAME} + - {$item.DN} + + {if $item.DETAILS && $device_details} +
+ {t}Current{/t} +
{$item.CURRENT}
+ + + {t}After migration{/t} +
{$item.AFTER}
+
+ {/if} +
+ {/foreach} + + {t}Select all{/t} + +
+ + {if $device_details} + + + {else} + + {/if} + +

 

+ +
+ +   + +
+ + {elseif $method == "services"} + + +

Services

+ +

{t}The listed services are currently invalid for the GOsa version you are going to install. If you want to update a couple of service, just select them and use the 'Migrate' button below.{/t}

+

{t}If you want to know what will be done when migrating the selected entries, use the 'Show changes' button to see the LDIF.{/t}

+ {foreach from=$services item=item key=key} + + {$item.DN} + + {if $item.DETAILS && $service_details} +
+ {t}Current{/t} +
{$item.CURRENT}
+ + + {t}After migration{/t} +
{$item.AFTER}
+
+ {/if} +
+ {/foreach} + + {t}Select all{/t} + +
+ + {if $service_details} + + + {else} + + {/if} + +

 

+ +
+ +   + +
+ + + {elseif $method == "menus"} + + +

Application menus

+ +

{t}The listed menus are currently invisible in the GOsa interface. If you want to change this for a couple of devices, just select them and use the 'Migrate' button below.{/t}

+

{t}If you want to know what will be done when migrating the selected entries, use the 'Show changes' button to see the LDIF.{/t}

+ {foreach from=$menus item=item key=key} + + {$item.DN} + + {if $item.DETAILS && $menu_details} +
+ {t}Current{/t} +
{$item.CURRENT}
+ + + {t}After migration{/t} +
{$item.AFTER}
+
+ {/if} +
+ {/foreach} + + {t}Select all{/t} + +
+ + {if $menu_details} + + + {else} + + {/if} + +

 

+ +
+ +   + +
+ {/if} +
+
diff --git a/trunk/gosa-core/setup/setup_schema.tpl b/trunk/gosa-core/setup/setup_schema.tpl new file mode 100644 index 000000000..908b989b7 --- /dev/null +++ b/trunk/gosa-core/setup/setup_schema.tpl @@ -0,0 +1,52 @@ +
+

+ {t}Schema specific settings{/t} +

+
+
+ {t}Enable schema validation when logging in{/t} +
+
+ +
+
+

+ {t}Check status{/t} +

+
+ {if $failed_checks == 0} + {t}Schema check succeeded{/t} + {else} + + {t}Schema check failed{/t} + + + {/if} +
+
+ + {if $found_ocs == 0} + {t}Could not read any schema informations, all checks skipped. Adjust your ldap acls.{/t} +
+ {if !$database_initialised} +
+ {t}It seems that your ldap database wasn't initialized yet. This maybe the reason, why GOsa can't read your schema configuration!{/t} + {/if} + {else} + {foreach from=$checks item=val key=key} + {if !$checks[$key].STATUS} +
+ {if $checks[$key].IS_MUST_HAVE} + {$checks[$key].MSG} + {else} + {$checks[$key].MSG} + {/if} +
+ {/if} + {/foreach} + {/if} +
+
+ diff --git a/trunk/gosa-core/setup/setup_welcome.tpl b/trunk/gosa-core/setup/setup_welcome.tpl new file mode 100644 index 000000000..5333adeab --- /dev/null +++ b/trunk/gosa-core/setup/setup_welcome.tpl @@ -0,0 +1,37 @@ +
+
+

+ {t}This seems to be the first time you start GOsa - we didn't find any configuration right now. This simple wizard intends to help you while setting it up.{/t} +

+ +

+ {t}What will the wizard do for you?{/t} +

+
    +
  • {t}Create a basic, single site configuration{/t}
  • +
  • {t}Tries to find problems within your PHP and LDAP setup{/t}
  • +
  • {t}Let you choose from a set of basic and advanced configuration switches{/t}
  • +
  • {t}Guided migration of existing LDAP trees{/t}
  • +
+

+ {t}What will the wizard NOT do for you?{/t} +

+
    +
  • {t}Find every possible configuration error{/t}
  • +
  • {t}Migrate every possible LDAP setup - create backup dumps!{/t}
  • +
+ +

+ {t}To continue...{/t} +

+

+ {t}For security reasons you need to authenticate for the installation by creating the file '/tmp/gosa.auth', containing the current session ID on the servers local filesystem. This can be done by executing the following command:{/t} +

+ + echo -n {$auth_id} > {$path} + +

+ {t}Click the 'Continue' button when you've finished.{/t} +

+
+
diff --git a/trunk/gosa-core/update-gosa b/trunk/gosa-core/update-gosa new file mode 100755 index 000000000..55214d133 --- /dev/null +++ b/trunk/gosa-core/update-gosa @@ -0,0 +1,569 @@ +#!/usr/bin/php + +update-gosa - class cache updated and plugin manager for GOsa +Usage: update-gosa install dsc Install the plugin using the dsc information + placed in the plugin source directory. + + update-gosa remove plugin Remove the plugin named "plugin" from + the current configuration. + + update-gosa list Lists installed plugins + + update-gosa rescan-i18n Rebuilds the translations + + update-gosa rescan-classes Rebuilds the class list + + update-gosa Shortcut for rescan-classes and rescan-i18n + $value){ + fwrite ($handle, " \"$key\" => \"$value\",\n"); + } + fwrite ($handle, " );\n"); + + fclose($handle); +} + + +function rescan_i18n() +{ + echo "Updating internationalization...\n"; + $languages= array(); + $size= strlen(LOCALE_DIR); + + /* Get all available messages.po files, sort them for languages */ + $dir= new RecursiveDirectoryIterator(LOCALE_DIR); + $all= new RecursiveIteratorIterator($dir); + foreach ( $all as $element ){ + if ($element->isFile() && preg_match('/\/LC_MESSAGES\/messages.po$/', $element->getPathname())){ + $lang= preg_replace('/^.*\/([^\/]+)\/LC_MESSAGES\/.*$/', '\1', $element); + if (!isset($languages[$lang])){ + $languages[$lang]= array(); + } + $languages[$lang][]= substr($element->getPathName(), $size+1); + } + } + + /* For each language, merge the target .mo to the compiled directory. */ + foreach ($languages as $language => $po_files){ + if (!is_dir(LOCALE_DIR."/compiled/${language}/LC_MESSAGES")){ + if (!mkdir (LOCALE_DIR."/compiled/${language}/LC_MESSAGES", 0755, TRUE)){ + echo "Failed to create '".LOCALE_DIR."/compiled/${language}/LC_MESSAGES'- aborted"; + exit (3); + } + } + + /* Cat all these po files into one single file */ + system ("(cd ".LOCALE_DIR." && msgcat --use-first ".implode(" ", $po_files)." > compiled/${language}/LC_MESSAGES/messages.po)", $val); + if ($val != 0){ + echo "Merging of message files failed - aborted"; + exit (4); + } + system ("(cd ".LOCALE_DIR."/compiled/${language}/LC_MESSAGES && msgfmt -o messages.mo messages.po && rm messages.po)", $val); + if ($val != 0){ + echo "Compiling of message files failed - aborted"; + exit (5); + } + } + + echo "! Warning: you may need to reload your webservice!\n"; +} + + +function rescan_guide() +{ + $master_guide= "doc/guide.xml"; + echo "Updating Online Help Index...\n"; + $master_guide_content="\n". + "\n\n". + "\n\n". + "\n". + "\n"; + + $guide= 'doc/core/guide.xml'; + if(file_exists($guide) && is_readable($guide)) { + $master_guide_content.= file_get_contents($guide); + } + + if(file_exists('doc/plugins')) { + $plugins= scandir('doc/plugins'); + foreach($plugins as $key => $plugin) { + if($plugin != '.' && $plugin != '..') { + if(is_dir('doc/plugins/'.$plugin)) { + $guide= 'doc/plugins/'.$plugin.'/guide.xml'; + if(file_exists($guide) && is_readable($guide)) { + $master_guide_content.= file_get_contents($guide); + } + } + } + } + } + + $master_guide_content.= ""; + + $master_guide_content= preg_replace("/[ \t][ \t]*/", " ", $master_guide_content); + + if((file_exists($master_guide) && is_writable($master_guide)) || is_writable('doc')) { + file_put_contents($master_guide, $master_guide_content); + } + +} + + +function parse_ini($file) +{ + global $description, $provides, $depends, $versions, $conflicts; + + $res= ""; + if (file_exists($file)){ + $tmp= parse_ini_file($file, TRUE); + + if (isset($tmp['gosa-plugin'])){ + $plugin= &$tmp['gosa-plugin']; + if (isset($plugin['name'])&& isset($plugin['description'])){ + $res= $plugin['name']; + $description[$res]= $plugin['description']; + $versions[$res]= $plugin['version']; + $provides[$res]= $res; + if (isset($plugin['depends'])){ + $depends[$res]= explode(',', preg_replace('/\s+/', '', $plugin['depends'])); + } + if (isset($plugin['conflicts'])){ + $conflicts[$res]= explode(',', preg_replace('/\s+/', '', $plugin['conflicts'])); + } + } + } + } + + return $res; +} + + +function dependency_check() +{ + global $description, $provides, $depends; + + foreach ($depends as $name => $pl_depends){ + foreach ($pl_depends as $pl){ + if (!in_array($pl, $provides)){ + echo "! Error: plugin '$name' depends on '$pl' which is not provided by any plugin\n\n"; + exit (1); + } + } + } +} + + +function load_plugins() +{ + if (!is_dir(PLUGSTATE_DIR)){ + if (!mkdir (PLUGSTATE_DIR, 0755, TRUE)){ + echo "Cannot create plugstate dir '".PLUGSTATE_DIR."' - aborted\n"; + exit (2); + } + } + $dir= new DirectoryIterator(PLUGSTATE_DIR); + foreach ($dir as $entry){ + if ($dir->isDir() && !preg_match('/^\./', $dir->__toString())){ + $file= $dir->getPathName()."/plugin.dsc"; + if (parse_ini($file) == ""){ + echo "! Warning: plugin ".$dir->getPathName()." is missing declarations\n"; + } + } + } +} + + +function list_plugins() +{ + global $description, $versions; + $count= 0; + + /* Load plugin list */ + load_plugins(); + + /* Show plugins */ + foreach ($description as $name => $dsc){ + if ($count == 0){ + echo "Plugin\t\t|Version |Description\n"; + echo "----------------------------------------------------------------------------\n"; + } + $ver= $versions[$name]; + echo "$name\t\t|$ver\t |$dsc\n"; + $count++; + } + + /* Yell about non existing plugins... */ + if ($count == 0){ + echo "No plugins found...\n\n"; + } else { + # Check for dependencies + dependency_check(); + echo "\n"; + } +} + + +function install_plugin($file) +{ + global $description, $provides, $depends, $conflicts; + + /* Load plugin list */ + load_plugins(); + + /* Load .dsc file */ + if (file_exists($file)){ + $tmp= parse_ini_file($file, TRUE); + + if (isset($tmp['gosa-plugin'])){ + $plugin= &$tmp['gosa-plugin']; + if (isset($plugin['name'])&& isset($plugin['description'])){ + $name= $plugin['name']; + $description= $plugin['description']; + $depends= array(); + if (isset($plugin['depends'])){ + $depends= explode(',', preg_replace('/\s+/', '', $plugin['depends'])); + } + + /* Already installed? */ + if (isset($provides[$name])){ + echo "! Error: plugin already installed\n\n"; + exit (3); + } + + /* Check if dependencies are fullfilled */ + foreach ($depends as $dep){ + $found= false; + foreach ($provides as $provide => $dummy){ + if ($dep == $provide){ + $found= true; + break; + } + } + if (!$found){ + echo "! Error: plugin depends on '$dep', but this is not installed\n\n"; + exit (3); + } + } + + /* Check for conflicts */ + foreach ($conflicts as $conf){ + if (!in_array($conf, $provides)){ + echo "! Warning: plugin conflicts with '$conf'\n\n"; + } + } + + /* Create plugstate directory and touch plugin.lst */ + if (!mkdir (PLUGSTATE_DIR."/$name", 0755, TRUE)){ + echo "Failed to create '".PLUGSTATE_DIR."/$name - aborted"; + exit (3); + } + if (!$handle= fopen(PLUGSTATE_DIR."/$name/plugin.lst", 'w')) { + echo "Cannot open file '$filename' - aborted\n"; + exit (1); + } + + echo "Installing plugin '$name'...\n"; + + /* Copy and fill plugin.lst */ + $path= dirname($file); + $dir= new RecursiveDirectoryIterator($path); + $all= new RecursiveIteratorIterator($dir); + foreach ( $all as $entry ){ + $source= $path."/".substr($entry->getPathName(), strlen($path) + 1); + + /* Skip description - it belongs to the state dir */ + if (preg_match('/\/plugin.dsc$/', $source)){ + copy ($source, PLUGSTATE_DIR."/$name/plugin.dsc"); + continue; + } + + /* Skip well known directories */ + if (preg_match('/^\.+$/', $source) || preg_match('/\/\.svn\//', $source)) { + continue; + } + + /* Calculate destination */ + if (preg_match("%^.*locale/%", $source)){ + $dest= GOSA_HOME."/locale/plugins/$name/".preg_replace("%^.*locale/%", "", $source); + } elseif (preg_match("%^.*help/%", $source)) { + $dest= GOSA_HOME."/doc/plugins/$name/".preg_replace("%^.*help/%", "", $source); + } elseif (preg_match("%^.*html/%", $source)) { + $dest= GOSA_HOME."/html/plugins/$name/".preg_replace("%^.*html/%", "", $source); + } else { + $dest= GOSA_HOME."/plugins/".substr($entry->getPathName(), strlen($path) + 1); + } + + /* Destination exists in case of directories? */ + if ($entry->isDir()){ + if (!is_dir($dest)){ + mkdir($dest, 0755, TRUE); + fwrite ($handle, "$dest\n"); + } + } else { + if (!is_dir(dirname($dest))){ + mkdir(dirname($dest), 0755, TRUE); + fwrite ($handle, dirname($dest)."\n"); + } + } + + /* Copy files */ + if ($entry->isFile()){ + copy ($source, $dest); + } + + /* Note what we did... */ + fwrite ($handle, "$dest\n"); + } + + fclose($handle); + } + } + } + + /* Update caches */ + rescan_classes(); + rescan_i18n(); + rescan_guide(); +} + + +function remove_plugin($name) +{ + global $description, $depends; + + /* Load plugin list */ + load_plugins(); + + /* Present? */ + if (!isset($description[$name])){ + echo "! Error: cannot find a plugin named '$name'\n\n"; + exit (1); + } + + /* Depends? */ + foreach ($depends as $sname => $pl_depends){ + if (in_array($name, $pl_depends)){ + echo "! Error: plugin '$sname' depends on '$name' - cannot remove it\n\n"; + exit (1); + } + } + + /* Load information */ + if (!file_exists(PLUGSTATE_DIR."/$name/plugin.lst")){ + echo "! Error: cannot remove plugin '$name' - no install history found\n\n"; + exit (1); + } + + echo "Removing plugin '$name'...\n"; + $contents= file(PLUGSTATE_DIR."/$name/plugin.lst"); + $cnv= array(); + foreach($contents as $line){ + $entry= chop($line); + $cnv[strlen($entry).":$entry"]= $entry; + } + krsort($cnv); + + /* Remove files first */ + clearstatcache(); + foreach ($cnv as $entry){ + if (is_dir($entry)){ + rmdir($entry); + continue; + } + if (file_exists($entry)){ + unlink($entry); + } + } + + /* Remove state directory for plugin */ + rmdirRecursive(PLUGSTATE_DIR."/$name"); + + /* Update caches */ + rescan_classes(); + rescan_i18n(); + rescan_guide(); +} + + + +/* Fill global values */ +$description= $provides= $depends= $versions= $conflicts= array(); + +/* Action specified? */ +if ($argc < 2){ + rescan_classes(); + rescan_i18n(); + rescan_guide(); + exit (0); +} + +switch ($argv[1]){ + case 'install': + if (isset($argv[2])){ + install_plugin($argv[2]); + } else { + echo "Usage: update-gosa install dsc-file\n\n"; + exit (1); + } + break; + case 'list': + list_plugins(); + break; + case 'remove': + if (isset($argv[2])){ + remove_plugin($argv[2]); + } else { + echo "Usage: update-gosa remove plugin-name\n\n"; + exit (1); + } + break; + case 'rescan-i18n': + rescan_i18n(); + break; + case 'rescan-classes': + rescan_classes(); + break; + default: + echo "Error: Supplied command not known\n\n"; + print_usage(); + break; +} + + +?> diff --git a/trunk/gosa-core/update-gosa.1 b/trunk/gosa-core/update-gosa.1 new file mode 100644 index 000000000..bf2b4a75a --- /dev/null +++ b/trunk/gosa-core/update-gosa.1 @@ -0,0 +1,173 @@ +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "UPDATE-GOSA 1" +.TH UPDATE-GOSA 1 "2008-08-04" "perl v5.10.0" "GOsa 2.6" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +update\-gosa \- class cache updater and plugin manager for GOsa +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +update-gosa [\s-1OPTION\s0] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +update-gosa is a script that help you to manage your gosa instance +.IP "\fBinstall dsc\fR Install the plugin using the dsc information placed in the plugin source directory." 5 +.IX Item "install dsc Install the plugin using the dsc information placed in the plugin source directory." +.PD 0 +.ie n .IP "\fBremove plugin\fR Remove the plugin named ""plugin"" from the current configuration." 5 +.el .IP "\fBremove plugin\fR Remove the plugin named ``plugin'' from the current configuration." 5 +.IX Item "remove plugin Remove the plugin named plugin from the current configuration." +.IP "\fBlist\fR Lists installed plugins" 5 +.IX Item "list Lists installed plugins" +.IP "\fBrescan\-i18n\fR Rebuilds the translations" 5 +.IX Item "rescan-i18n Rebuilds the translations" +.IP "\fBrescan-classes\fR Rebuilds the class list" 5 +.IX Item "rescan-classes Rebuilds the class list" +.PD +.SH "BUGS" +.IX Header "BUGS" +Please report any bugs, or post any suggestions, to the GOsa mailing list or to +.SH "LICENCE AND COPYRIGHT" +.IX Header "LICENCE AND COPYRIGHT" +This code is part of GOsa () +.PP +Copyright (C) 2003\-2008 \s-1GONICUS\s0 GmbH +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\s-1GNU\s0 General Public License for more details. diff --git a/trunk/gosa-core/update-gosa.pod b/trunk/gosa-core/update-gosa.pod new file mode 100644 index 000000000..fbdf7c568 --- /dev/null +++ b/trunk/gosa-core/update-gosa.pod @@ -0,0 +1,45 @@ + +=head1 NAME + +update-gosa - class cache updater and plugin manager for GOsa + +=head1 SYNOPSIS + +update-gosa [OPTION] + +=head1 DESCRIPTION + +update-gosa is a script that help you to manage your gosa instance + +=over 5 + +=item B Install the plugin using the dsc information placed in the plugin source directory. + +=item B Remove the plugin named "plugin" from the current configuration. + +=item B Lists installed plugins + +=item B Rebuilds the translations + +=item B Rebuilds the class list + +=back + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list or to + + +=head1 LICENCE AND COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + +=cut + diff --git a/trunk/gosa-core/update-locale b/trunk/gosa-core/update-locale new file mode 100755 index 000000000..033ba84a3 --- /dev/null +++ b/trunk/gosa-core/update-locale @@ -0,0 +1,161 @@ +#!/bin/bash + +generate_po() { + ORIG=`pwd` + TEMPDIR="/tmp/gosa-locale" + TRUE=`which true` + + echo + echo "Creating temporary directory..." + [ -d $TEMPDIR ] && rm -rf $TEMPDIR + mkdir $TEMPDIR + + echo "Creating copy of GOsa..." + tar c . | tar x -C $TEMPDIR + + echo "Converting .tpl files..." + pushd . &> /dev/null + cd $TEMPDIR + + for template in $(find . -name '*.tpl'); do + echo "* converting .tpl files: $(basename $template)" + sed -e 's/{t}/!g' $template > $template.new + mv $template.new $template + done + + for class in $(find . -name 'class_*.inc'); do + echo "* converting class_*.inc files: $(basename $class)" + sed -e 's/\($pl[DH][^=]*\)= *"\([^"]*\)";$/\1= _("\2");/g' $class > $class.new + mv $class.new $class + done + + echo "Extracting languages..." + [ -f locale/${l_path}messages.po ] && rm locale/${l_path}messages.po + find . -name '*.[ctpi][ophn][nlpc]' | xgettext -f - --keyword=must -d Domain -L PHP -n -o locale/${l_path}messages.po + + echo "Merging po files with existing ones" + error=0 + for f in locale/${l_path}??/LC_MESSAGES; do + [[ "$f" == "locale/${l_path}??/LC_MESSAGES" ]] && break + echo -n "* merging $f/messages.po: " + [ ! -f $f/messages.po ] && touch $f/messages.po + + # If we're in a plugin of a trunk checkout, we can use the gosa-all messages.po as a dictionary + DICT_FILE_ALL="$ORIG/../../gosa-all/gosa/${f/locale/locale/core}/messages.po" + DICT_FILE_CORE="$ORIG/../../gosa-core/${f/locale/locale/core}/messages.po" + DICT="" + [ -r $DICT_FILE_ALL ] && DICT="-C $DICT_FILE_ALL" + [ ${#DICT} -eq 0 ] && [ -r $DICT_FILE_CORE ] && DICT="-C $DICT_FILE_CORE" + msgmerge $DICT $f/messages.po locale/${l_path}messages.po --output-file=$f/messages.po.tmp &> /dev/null + + # Filter out duplicates + msguniq $f/messages.po.tmp --output-file=$f/messages.po.new &> /dev/null + rm $f/messages.po.tmp + + # Do an extra check for dummy dir 'locale/en/LC_MESSAGES' + if [ $? -ne 0 ]; then + [ "$f" == "locale/${l_path}en/LC_MESSAGES" ] && $TRUE + fi + + if [ $? -eq 0 ]; then + echo "done"; + else + echo "failed"; + error=1 + fi + + done + + echo "Copying new po files, making backups..." + find locale/${l_path} -name messages.po | while read f; do + + if [ -f $ORIG/$f ]; then + mv $ORIG/$f $ORIG/$f.orig + fi + + echo $f | grep -q "locale/${l_path}messages.po" + if [ $? -ne 0 ]; then + echo "* replaced $ORIG/$f" + cp $f.new $ORIG/$f + else + cp $f $ORIG/$f + fi + + done + + rm -rf $TEMPDIR + + echo + if [ $error -eq 0 ]; then + if [ $ASSUME_Y -eq 1 ]; then + find $ORIG/ -type f -name 'messages.po.orig' -exec rm -f {} \; + else + read -p "Do you want to erase the message.po.orig files? (y/n)" -n1 ans + + if [ "$ans" == "y" -o "$ans" == "Y" ]; then + find $ORIG/ -type f -name 'messages.po.orig' -exec rm -f {} \; + fi + fi + + else + echo "There were errors during the transition. Please fix!" + exit 1 + fi + +cat <<-EOF + +--------------------------------------------------------------------- + +Now edit all files that have been replaced above (i.e. using kbabel +or gtranslator) and mail the changes to gosa@oss.gonicus.de to be +included in the next release. + +To see the changes you've made in GOsa, run "msgfmt messages.po" on +your freshly edited files and restart your apache after that. Set +the webbrowser to the language you've edited and go back to the +login screen. + +--------------------------------------------------------------------- + +EOF + + popd &> /dev/null +} + +# +# MAIN +# +GENERATE=0 +ASSUME_Y=0 +while getopts ":gyh" opt +do + case $opt in + g) GENERATE=1; + ;; + y) ASSUME_Y=1; + ;; + h|--help) + echo "Usage: $(basename $0) [-g] [-y]" + echo " -g extract strings from GOsa and generate po files" + echo " -y assume yes" + exit 1 + ;; + esac +done +shift $(($OPTIND - 1)) + +# If there's a plugin.dsc in ., then assume "plugin" +if [ -f plugin.dsc ]; then + l_path="" +else + l_path="core/" +fi + +# Default to generate +if [ $GENERATE -eq 0 ]; then + GENERATE=1 +fi + +[ $GENERATE -eq 1 ] && generate_po + +# vim:tabstop=2:expandtab:shiftwidth=2:syntax:ruler: diff --git a/trunk/gosa-core/update-locale.1 b/trunk/gosa-core/update-locale.1 new file mode 100644 index 000000000..e5fa0947b --- /dev/null +++ b/trunk/gosa-core/update-locale.1 @@ -0,0 +1,168 @@ +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "UPDATE-LOCALE 1" +.TH UPDATE-LOCALE 1 "2008-08-04" "perl v5.10.0" "GOsa 2.6" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +update\-locale \- update localization files +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +update-locale [\-h] [\-g] [\-y] +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +update-locale is a script that update/generate the .po files for GOsa +.IP "\fB\-g\fR extract strings from GOsa and generate po files" 3 +.IX Item "-g extract strings from GOsa and generate po files" +.PD 0 +.IP "\fB\-y\fR assume yes" 3 +.IX Item "-y assume yes" +.IP "\fB\-h\fR help" 3 +.IX Item "-h help" +.PD +.SH "BUGS" +.IX Header "BUGS" +Please report any bugs, or post any suggestions, to the GOsa mailing list or to +.SH "LICENCE AND COPYRIGHT" +.IX Header "LICENCE AND COPYRIGHT" +This code is part of GOsa () +.PP +Copyright (C) 2003\-2008 \s-1GONICUS\s0 GmbH +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\s-1GNU\s0 General Public License for more details. diff --git a/trunk/gosa-core/update-locale.pod b/trunk/gosa-core/update-locale.pod new file mode 100644 index 000000000..b51d32d6b --- /dev/null +++ b/trunk/gosa-core/update-locale.pod @@ -0,0 +1,41 @@ + +=head1 NAME + +update-locale - update localization files + +=head1 SYNOPSIS + +update-locale [-h] [-g] [-y] + +=head1 DESCRIPTION + +update-locale is a script that update/generate the .po files for GOsa + +=over 3 + +=item B<-g> extract strings from GOsa and generate po files + +=item B<-y> assume yes + +=item B<-h> help + +=back + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list or to + + +=head1 LICENCE AND COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + +=cut + diff --git a/trunk/gosa-core/update-online-help b/trunk/gosa-core/update-online-help new file mode 100755 index 000000000..cb3fd98ac --- /dev/null +++ b/trunk/gosa-core/update-online-help @@ -0,0 +1,134 @@ +#!/bin/bash + +# Defaults for Debian +CNV=`pwd`/contrib/latex2html +LYX=lyx + +# Sanity checks +if [ ! -d doc/core ]; then + echo "Can't find usable core documentation structure - aborting" + exit 1 +fi + +# Commands present? +for cmd in $CNV $LYX; do + if [[ ! `which $cmd` ]]; then + echo "Can't find executable for '$cmd' - aborting" + exit 2 + fi +done + +# Create guide.xml +cat << EOF > doc/guide.xml + + + + + + + +EOF + +echo -en "Generating doc/guide.xml..." +# core guide.xml +pushd . &> /dev/null +cd doc/core +cat < guide.xml >> ../guide.xml +popd &> /dev/null + +# plugins guide.xml +pushd . &> /dev/null +if [ -d doc/plugins ]; then + cd doc/plugins + for plugin in *; do + [ -r $plugin/guide.xml ] && cat < $plugin/guide.xml >> ../guide.xml + done +fi +popd &> /dev/null + +echo -en "\n" >> doc/guide.xml +sed -i s/"[ \t][ \t]*"/" "/g doc/guide.xml +echo -en " done.\n" + +# Core help +echo -en "Processing core\n" +pushd . &> /dev/null +cd doc/core +for lang in *; do + [ ! -d "$lang" ] && continue + + pushd . &> /dev/null + echo -en "\tProcessing language $lang...\n" + cd $lang/lyx-source + + for source in $(find . -name \*.lyx -exec basename {} \;); do + echo -en "\t\tProcessing $source..." + echo -en " tex" + $LYX -e latex $source &> /dev/null + d=../html/${source%%\.*}/ + [ -d $d ] || mkdir -p $d && rm -r $d/* &> /dev/null + echo -en " html" + $CNV -no_navigation -dir $d ${source%%\.*}.tex &> /dev/null + echo -en " cleanup" + rm images/*.eps &> /dev/null + rm ${source%%\.lyx}.tex &> /dev/null + echo -en " done.\n" + continue + done + popd &> /dev/null +done + +popd &> /dev/null + +# Plugin help +pushd . &> /dev/null +if [ -d doc/plugins ]; then + cd doc/plugins + + for plugin in *; do + pushd . &> /dev/null + echo -en "Processing $plugin\n" + cd $plugin + for lang in *; do + [ ! -d "$lang" ] && continue + + pushd . &> /dev/null + echo -en "\tProcessing language $lang...\n" + cd $lang/lyx-source + + for source in $(find . -name \*.lyx -exec basename {} \;); do + echo -en "\t\tProcessing $source..." + echo -en " tex" + $LYX -e latex $source &> /dev/null + d=../html/${source%%\.*}/ + [ -d $d ] || mkdir -p $d && rm -r $d/* &> /dev/null + echo -en " html" + $CNV -no_navigation -dir $d ${source%%\.*}.tex &> /dev/null + echo -en " cleanup" + rm images/*.eps &> /dev/null + rm ${source%%\.lyx}.tex &> /dev/null + echo -en " done.\n" + continue + done + popd &> /dev/null + done + popd &> /dev/null + done + +fi +popd &> /dev/null +echo +exit 0 diff --git a/trunk/gosa-core/update-online-help.1 b/trunk/gosa-core/update-online-help.1 new file mode 100644 index 000000000..55ebb38a1 --- /dev/null +++ b/trunk/gosa-core/update-online-help.1 @@ -0,0 +1,161 @@ +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "UPDATE-ONLINE-HELP 1" +.TH UPDATE-ONLINE-HELP 1 "2008-08-04" "perl v5.10.0" "GOsa 2.6" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +update\-online\-help \- update the online help +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +update-online-help +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +update-online-help is a script that is used to regenerate the online help +of GOsa when it as been changed. +.SH "BUGS" +.IX Header "BUGS" +Please report any bugs, or post any suggestions, to the GOsa mailing list or to +.SH "LICENCE AND COPYRIGHT" +.IX Header "LICENCE AND COPYRIGHT" +This code is part of GOsa () +.PP +Copyright (C) 2003\-2008 \s-1GONICUS\s0 GmbH +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\s-1GNU\s0 General Public License for more details. diff --git a/trunk/gosa-core/update-online-help.pod b/trunk/gosa-core/update-online-help.pod new file mode 100644 index 000000000..7fa3f0cb1 --- /dev/null +++ b/trunk/gosa-core/update-online-help.pod @@ -0,0 +1,32 @@ + +=head1 NAME + +update-online-help - update the online help + +=head1 SYNOPSIS + +update-online-help + +=head1 DESCRIPTION + +update-online-help is a script that is used to regenerate the online help +of GOsa when it as been changed. + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list or to + + +=head1 LICENCE AND COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + +=cut + diff --git a/trunk/gosa-core/update-pdf-help b/trunk/gosa-core/update-pdf-help new file mode 100755 index 000000000..1c3482a8f --- /dev/null +++ b/trunk/gosa-core/update-pdf-help @@ -0,0 +1,81 @@ +#!/bin/bash + +# Defaults for Debian +LYX=lyx + +# Sanity checks +if [ ! -d doc/core ]; then + echo "Can't find usable core documentation structure - aborting" + exit 1 +fi + +# Commands present? +for cmd in $CNV $LYX; do + if [[ ! `which $cmd` ]]; then + echo "Can't find executable for '$cmd' - aborting" + exit 2 + fi +done + +# Core help +echo -en "Processing core\n" +pushd . &> /dev/null +cd doc/core +for lang in *; do + [ ! -d "$lang" ] && continue + + pushd . &> /dev/null + echo -en "\tProcessing language $lang...\n" + cd $lang/lyx-source + + for source in $(find . -name \*.lyx -exec basename {} \;); do + echo -en "\t\tProcessing $source..." + echo -en " pdf" + $LYX -e pdf $source &> /dev/null + d=../pdf/${source%%\.*}/ + pdf=${source%lyx}pdf + [ -d $d ] || mkdir -p $d && mv $pdf ../pdf/${source%%\.*}/ &>/dev/null + d=../html/${source%%\.*}/ + echo -en " done.\n" + done + popd &> /dev/null +done + +popd &> /dev/null + +# Plugin help +pushd . &> /dev/null +if [ -d doc/plugins ]; then + cd doc/plugins + + for plugin in *; do + pushd . &> /dev/null + echo -en "Processing $plugin\n" + cd $plugin + for lang in *; do + [ ! -d "$lang" ] && continue + + pushd . &> /dev/null + echo -en "\tProcessing language $lang...\n" + cd $lang/lyx-source + + for source in $(find . -name \*.lyx -exec basename {} \;); do + echo -en "\t\tProcessing $source..." + echo -en " pdf" + $LYX -e pdf $source &> /dev/null + d=../pdf/${source%%\.*}/ + pdf=${source%lyx}pdf + [ -d $d ] || mkdir -p $d && mv $pdf ../pdf/${source%%\.*}/ &>/dev/null + d=../html/${source%%\.*}/ + echo -en " done.\n" + continue + done + popd &> /dev/null + done + popd &> /dev/null + done + +fi +popd &> /dev/null +echo +exit 0 diff --git a/trunk/gosa-core/update-pdf-help.1 b/trunk/gosa-core/update-pdf-help.1 new file mode 100644 index 000000000..088d81cb4 --- /dev/null +++ b/trunk/gosa-core/update-pdf-help.1 @@ -0,0 +1,161 @@ +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "UPDATE-PDF-HELP 1" +.TH UPDATE-PDF-HELP 1 "2008-08-04" "perl v5.10.0" "GOsa 2.6" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +update\-pdf\-help \- Create pdf documentation from online documentation +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +update-pdf-help +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +update-pdf-help is a script that create pdf docomentation for offline +reading from online documentation. +.SH "BUGS" +.IX Header "BUGS" +Please report any bugs, or post any suggestions, to the GOsa mailing list or to +.SH "LICENCE AND COPYRIGHT" +.IX Header "LICENCE AND COPYRIGHT" +This code is part of GOsa () +.PP +Copyright (C) 2003\-2008 \s-1GONICUS\s0 GmbH +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\s-1GNU\s0 General Public License for more details. diff --git a/trunk/gosa-core/update-pdf-help.pod b/trunk/gosa-core/update-pdf-help.pod new file mode 100644 index 000000000..05b96b1ca --- /dev/null +++ b/trunk/gosa-core/update-pdf-help.pod @@ -0,0 +1,32 @@ + +=head1 NAME + +update-pdf-help - Create pdf documentation from online documentation + +=head1 SYNOPSIS + +update-pdf-help + +=head1 DESCRIPTION + +update-pdf-help is a script that create pdf docomentation for offline +reading from online documentation. + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list or to + + +=head1 LICENCE AND COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + +=cut + diff --git a/trunk/gosa-plugins/addressbook/addons/addressbook/address_edit.tpl b/trunk/gosa-plugins/addressbook/addons/addressbook/address_edit.tpl new file mode 100644 index 000000000..4e29ef6bf --- /dev/null +++ b/trunk/gosa-plugins/addressbook/addons/addressbook/address_edit.tpl @@ -0,0 +1,274 @@ + + + + + + + + +
+ + + + + X + +
+ + + + + + + + +
+

+ +  {t}Personal{/t} +

+ + + + + + + + + + + + +
+ , + + +{render acl=$snACL} + , +{/render} +{render acl=$givenNameACL} + +{/render} + +
+ + +{render acl=$initialsACL} + +{/render} +
+ + +{render acl=$titleACL} + +{/render} +
+
+

+ +  {t}Private{/t} +

+ + + + + + + + + + + + + + + + + +
+ +
+
+
+{render acl=$homePostalAddressACL} + +{/render} +
+ + +{render acl=$homePhoneACL} + +{/render} +
+ + +{render acl=$mobileACL} + +{/render} +
+ + +{render acl=$mailACL} + +{/render} +
+
+

+ +  {t}Organizational{/t} +

+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+ + +{render acl=$oACL} + +{/render} +
+ + +{render acl=$ouACL} + +{/render} +
+ + +{render acl=$lACL} + +{/render} +
+ + +{render acl=$postalCodeACL} + +{/render} +
+ + +{render acl=$stACL} + +{/render} +
+
+ + + + + + + + + + + + + + + + + +
+ +
+
+
+{render acl=$postalAddressACL} + +{/render} +
+ + +{render acl=$telephoneNumberACL} + +{/render} +
+ + +{render acl=$facsimileTelephoneNumberACL} + +{/render} +
+ + +{render acl=$pagerACL} + +{/render} +
+
+
+ +

+ + +

+ +
+ + diff --git a/trunk/gosa-plugins/addressbook/addons/addressbook/address_info.tpl b/trunk/gosa-plugins/addressbook/addons/addressbook/address_info.tpl new file mode 100644 index 000000000..3bb3a2242 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/addons/addressbook/address_info.tpl @@ -0,0 +1,196 @@ + + + + + + + + + +
{$storage_info} + + X +
+ + + + + + + + + + +
+

+ + {t}Personal{/t} +

+ + + + + + + + + + + + + + +
+ {t}Name{/t} + + {$info_sn}, {$info_givenName} +
+ {t}Initials{/t} + + {$info_initials} +
+ {t}Personal title{/t} + + {$info_title} +
+ +
+ +

+ + {t}Private{/t} +

+ + + + + + + + + + + + + + + + + + +
+ {t}Address{/t} + + {$info_homePostalAddress} +
+ {t}Phone{/t} + + {$info_homePhone} +
+ {t}Mobile{/t} + + {$info_mobile} +
+ {t}Email{/t} + + {$info_mail} +
+ +
+ +

+ + {t}Organizational{/t} +

+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ {t}Company{/t} + + {$info_o} +
+ {t}Department{/t} + + {$info_ou} +
+ {t}City{/t} + + {$info_l} +
+ {t}Postal code{/t} + + {$info_postalCode} +
+ {t}Country{/t} + + {$info_st} +
+ +
+ + + + + + + + + + + + + + + + + + +
+ {t}Address{/t} + + {$info_postalAddress} +
+ {t}Phone{/t} + + {$info_telephoneNumber} +
+ {t}FAX{/t} + + {$info_facsimileTelephoneNumber} +
+ {t}Pager{/t} + + {$info_pager} +
+
+ +
+ +
diff --git a/trunk/gosa-plugins/addressbook/addons/addressbook/class_addressbook.inc b/trunk/gosa-plugins/addressbook/addons/addressbook/class_addressbook.inc new file mode 100644 index 000000000..f3675a5c9 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/addons/addressbook/class_addressbook.inc @@ -0,0 +1,873 @@ +config= &$config; + + /* Check if there is a special ldap-sub-tree specified, instead of dc=addressbook, */ + $aoc = $this->config->search("addressbook", "addressbookBaseDN",array('menu')); + if ($aoc != ""){ + $this->abobjectclass = $aoc; + } + + /* Get global filter config */ + if (!session::is_set("phonefilter")){ + $ui = get_userinfo(); + $base = get_base_from_people($ui->dn); + $phonefilter= array( + "search_base" => $base, + "organizational" => "checked", + "global" => "checked", + "search_for" => "*", + "object_type" => "*"); + session::set("phonefilter", $phonefilter); + } + + $this->ui = get_userinfo(); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + $smarty= get_smarty(); + + /* Prevent empty variables for smarty */ + foreach($this->attributes as $atr) { + $smarty->assign($atr,""); + } + + /* Save formular information */ + $phonefilter= session::get("phonefilter"); + foreach( array("search_for", "search_base", "object_type") as $type){ + if (isset($_POST[$type])){ + $phonefilter[$type]= $_POST[$type]; + } + $this->$type= $phonefilter[$type]; + } + if (isset($_POST['search_base'])){ + foreach( array("organizational", "global") as $type){ + if (isset($_POST[$type])){ + $phonefilter[$type]= "checked"; + } else { + $phonefilter[$type]= ""; + } + } + } + + /* Search string */ + $s= $phonefilter['search_for']; + if ($s == "") { + $s= "*"; + } + if (isset($_GET['search'])){ + $s= validate(mb_substr($_GET['search'], 0, 1, "UTF8"))."*"; + if ($s == "**"){ + $s= "*"; + } + $this->search_for= $s; + $phonefilter['search_for']= $s; + } + session::set("phonefilter", $phonefilter); + + /* Assign create acl */ + $acl = $this->get_entry_acls($this->abobjectclass.",".$phonefilter['search_base']); + $smarty->assign("internal_createable", preg_match("/c/",$acl)); + $smarty->assign("internal_removeable", preg_match("/d/",$acl)); + $smarty->assign("internal_editable", preg_match("/w/",$acl)); + + /* Perform actions with CTI hook */ + if (isset($_GET['target']) + && isset($_GET['dial']) + && $this->config->get_cfg_value("ctiHook") != "" ){ + + $dialmode= $_GET['dial']; + if ($dialmode == "telephoneNumber" || + $dialmode == "mobile" || + $dialmode == "homePhone"){ + + /* Get target */ + $ldap= $this->config->get_ldap_link(); + $ldap->cat(base64_decode($_GET['target']), array('telephoneNumber', 'mobile', 'homePhone')); + $attrs= $ldap->fetch(); + if (isset($attrs["$dialmode"])){ + $target= $attrs[$dialmode][0]; + } else { + $target= ""; + } + + /* Get source */ + $ui= get_userinfo(); + $ldap->cat($ui->dn, array('telephoneNumber')); + $attrs= $ldap->fetch(); + if (isset($attrs["telephoneNumber"])){ + $source= $attrs['telephoneNumber'][0]; + } else { + $source= ""; + } + + /* Save to session */ + session::set('source',$source); + session::set('target',$target); + + /* Perform call */ + if ($target != "" && $source != ""){ + $smarty->assign("phone_image", get_template_path('plugins/addressbook/images/phone.png')); + $smarty->assign("dial_info", sprintf(_("Dial from %s to %s now?"), "".$source."", "".$target."")); + return($smarty->fetch(get_template_path('dial.tpl', TRUE))); + return; + } else { + msg_dialog::display(_("Error"), _("You need to set your personal phone number in order to perform direct dials."), ERROR_DIALOG); + } + } + + } + + /* Finally dial */ + if (isset($_POST['dial']) && session::is_set('source') && session::is_set('target')){ + exec ($this->config->get_cfg_value("ctiHook")." '".session::get('source')."' '".session::get('target')."'", $dummy, $retval); + session::un_set('source'); + session::un_set('target'); + } + + + /* Delete entry? */ + if (isset($_POST['delete_entry_confirm'])){ + + /* Some nice guy may send this as POST, so we've to check + for the permissions again. */ + + $acl = $this->get_entry_acls($this->dn); + if(preg_match("/d/",$acl)){ + + /* Delete request is permitted, perform LDAP action */ + $ldap= $this->config->get_ldap_link(); + $ldap->rmdir ($this->dn); + new log("remove","addressbook/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + new log("remove","addressbook/".get_class($this),$this->dn,array(),"Addressbook object'".$this->dn."' has been removed"); + + } else { + + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission"),permDelete($this->dn),ERROR_DIALOG); + new log("remove","addressbook/".get_class($this),$this->dn,array(),"Warning: '".$this->ui->uid."' tried to trick address book deletion."); + } + + /* Remove lock file after successfull deletion */ + del_lock ($this->dn); + + /* Clean up */ + if (session::is_set('saved_start')){ + $_GET['start']= session::get('saved_start'); + } + session::un_set('show_info'); + session::un_set('saved_start'); + } + + + /* Delete entry? */ + if (isset($_POST['delete_cancel'])){ + del_lock ($this->dn); + } + + + /* Save address entry? */ + if (isset($_POST['save'])){ + $this->save_object(); + $this->storage_base= $_POST['storage_base']; + + /* Perform checks */ + $message= $this->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $this->save(); + + /* Clean up */ + if (session::is_set('saved_start')){ + $_GET['start']= session::get('saved_start'); + } + session::set('show_info',$this->dn); + session::un_set('saved_start'); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + + /* Close info window */ + if (isset($_GET['close']) || isset($_POST['cancel'])){ + if (session::is_set('saved_start')){ + $_GET['start']= session::get('saved_start'); + } + session::un_set('show_info'); + session::un_set('saved_start'); + } + + + /* Start address book edit mode? */ + if (isset($_GET['global'])){ + if (!session::is_set('saved_start') && isset($_GET['start'])){ + session::set('saved_start',$_GET['start']); + } + switch ($_GET['global']){ + case "add": + $this->dn= "new"; + $this->orig_cn= ""; + + /* Clean values */ + foreach ($this->attributes as $name){ + $this->$name= ""; + } + $this->saved_attributes= array(); + $this->storage_base= $this->config->current["BASE"]; + break; + + case "edit": + /* Clean values */ + foreach ($this->attributes as $name){ + $this->$name= ""; + } + $this->dn= session::get('show_info'); + $this->load(); + $this->orig_cn= $this->cn; + break; + case "remove": + $this->dn= session::get('show_info'); + $this->load(); + + /* Load permissions for selected 'dn' and check if + we're allowed to remove this 'dn' */ + $acl = $this->get_entry_acls($this->dn); + if(preg_match("/d/",$acl)){ + + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return(gen_locked_message ($user, $this->dn)); + } + + /* Lock the current entry, so nobody will edit it during deletion */ + $ui= get_userinfo(); + add_lock ($this->dn, $ui->dn); + $smarty->assign("info", msgPool::deleteInfo($this->dn)); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } else { + + /* Obviously the user isn't allowed to delete. Show message and + clean session. */ + msg_dialog::display(_("Permission"),permDelete($this->dn),ERROR_DIALOG); + } + } + session::set('show_info',"ADD"); + } + + + /* Open info window */ + if (isset($_GET['show'])){ + if (!session::is_set('saved_start')){ + session::set('saved_start',$_GET['start']); + } + $this->dn = base64_decode($_GET['show']); + $this->view_logged =FALSE; + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","addressbook/".get_class($this),$this->dn); + } + session::set('show_info',base64_decode($_GET['show'])); + } + + + /* Get ldap link / build filter */ + $ldap= $this->config->get_ldap_link(); + $this->telephone_list= array (); + + + /* Assemble bases + (Depending on checkboxes, we search for organisational entries or seperated + adressbook entries within dc=adressbook, ) */ + $bases= array(); + $filter= ""; + if ($phonefilter['global'] == "checked"){ + $bases[]= preg_replace("/".$this->config->current['BASE']."/", $this->abobjectclass.",".$this->config->current['BASE'], $this->search_base); + } else { + $filter= '(objectClass=gosaAccount)'; + } + if ($phonefilter['organizational'] == "checked"){ + $bases[]= $this->search_base; + } + + + /* Only display those entries that have at least on of this attributes set */ + $must_have_this = array("telephoneNumber","facsimileTelephoneNumber","mobile","homePhone","mail"); + + /* Requested attributes in ldap search */ + $attributes = array("sn", "givenName", "telephoneNumber", "facsimileTelephoneNumber", "mobile", "homePhone", "uid", "mail", "cn"); + + /* Create attribute filter part */ + $attribute_filter = ""; + foreach($attributes as $att){ + $attribute_filter .= "(".$att."=".$s.")"; + } + + /* Walk through bases an check for usable entries */ + foreach ($bases as $base){ + + $ldap->cd ($base); + + if ($phonefilter['object_type'] == '*'){ + $ldap->search ( + "(&(objectClass=person)$filter(!(objectClass=gosaUserTemplate))". // Skip templates etc .. + "(!(uid=*$))". // Skip entries with ...$ as uid + "(|".$attribute_filter."))" + ,$attributes); + } else { + $ldap->search ("(&$filter(!(uid=*$))(!(objectClass=gosaUserTemplate))". //array + "(".$phonefilter['object_type']."=$s))", $attributes); + } + + /* Walk through LDAP results */ + while ($attrs= $ldap->fetch()){ + + /* prevent empty vaiables */ + foreach($this->attributes as $atr) { + if(!isset($attrs[$atr][0])) { + $attrs[$atr][0] = ""; + } + } + + /* Check if page number was posted */ + if(!isset($_GET['start'])) { + $_GET['start']=""; + } + + /* Check if at least one attribute is specified */ + $skip = false; + + foreach($must_have_this as $attr) { + if(isset($attrs[$attr][0]) && !empty($attrs[$attr][0])){ + $skip =false; + break; + } + } + + /* Skip all attributes that we are not allowed to read */ + $any = false; + foreach($attributes as $attr){ + + $acls = $this->get_entry_acls($attrs['dn'],$attr); + if(!preg_match("/r/",$acls)){ + $attrs[$attr][0] = ""; + }else{ + $any = true; + } + } + + /* Only show lines that have set any mail or phone informations */ + if(!$skip && $any){ + + $this->telephone_list[$attrs['sn'][0].$attrs['dn']]= + + " + ". + $attrs['sn'][0].", ".$attrs['givenName'][0]. + " +   + + ".$attrs['telephoneNumber'][0]." + +   + + ".$attrs['facsimileTelephoneNumber'][0]." +   + + ".$attrs['mobile'][0]." + +   + + ".$attrs['homePhone'][0]." + +   + + + \"vcf\" + "; + + + if(preg_match("/r/",$this->get_entry_acls($attrs['dn'],"mail"))){ + if (isset($attrs['mail'][0]) && !empty($attrs['mail'][0])){ + $dest= sprintf(_("Send mail to %s"), $attrs['mail'][0]); + $this->telephone_list[$attrs['sn'][0].$attrs['dn']].= + + "". + "\"vcf\""; + } + } + $this->telephone_list[$attrs['sn'][0].$attrs['dn']].= " "; + } + } + error_reporting(E_ALL | E_STRICT); + } + + /* Sort up list */ + ksort ($this->telephone_list); + reset ($this->telephone_list); + + /* Fill template variables */ + $smarty->assign("search_for", $this->search_for); + $smarty->assign("object_type", $this->object_type); + + $this->base = $phonefilter['search_base']; + $smarty->assign("deplist", $this->get_allowed_bases()); + $smarty->assign("depselect", $this->search_base); + $smarty->assign("global", $phonefilter['global']); + $smarty->assign("organizational", $phonefilter['organizational']); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("obj_image", get_template_path('plugins/addressbook/images/objects.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info.png')); + $smarty->assign("actionimage", get_template_path('images/action.png')); + $smarty->assign("launchimage", get_template_path('images/launch.png')); + + /* Generate alphabet */ + $alphabet= generate_alphabet(); + + /* Build list output */ + $output= ""; + $mod= 0; + + + /* View detailed infos */ + $smarty->assign("show_info", ""); + if (session::is_set('show_info')){ + + $range= 4; + $smarty->assign("show_info", "1"); + $smarty->assign("url", "main.php?plug=".validate($_GET['plug'])."&close=1"); + + $tmp = $this->plInfo(); + + if(isset($_POST['storage_base'])){ + $this->storage_base = $_POST['storage_base']; + } + + switch (session::get('show_info')){ + + case "ADD": + + $a_bases = $this->get_allowed_bases(); + + if(!isset($a_bases[$this->storage_base])){ + $base = key($this->get_allowed_bases()); + $this->storage_base = $base; + } + + $smarty->assign ('storage_base', $this->storage_base); + $smarty->assign ('address_info', get_template_path('address_edit.tpl', TRUE)); + + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->get_entry_acls($this->abobjectclass.",".$base,$name)); + } + break; + + default: + $smarty->assign ('address_info', get_template_path('address_info.tpl', TRUE)); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->get_entry_acls($this->dn,$name)); + } + break; + } + + /* Fill variables from LDAP */ + if (session::get('show_info') != "ADD"){ + $ldap->cat(session::get('show_info'), $this->attributes); + $info= $ldap->fetch(); + } + foreach ($this->attributes as $name){ + + $dn = $this->dn; + if($dn == "new") $dn = $this->base; + + /* Skip entries we are not allowed to read */ + if(!preg_match("/r/",$this->get_entry_acls($dn,$name))){ + $smarty->assign("info_$name", ""); + }else + + if (session::get('show_info') != "ADD" && isset($info["$name"][0])){ + error_reporting(0); + /* Special treatment for phone attributes */ + if ($name == "mobile" || + $name == "homePhone" || + $name == "telephoneNumber"){ + $smarty->assign("info_$name", + "".$info["$name"][0].""); + } else { + $smarty->assign("info_$name", preg_replace("/\n/", "
", $info["$name"][0])); + } + error_reporting(E_ALL | E_STRICT); + } elseif (session::get('show_info') == "ADD" && isset($this->$name)) { + $smarty->assign("info_$name", $this->$name); + } else { + $smarty->assign("info_$name", "-"); + } + } + if (preg_match("/,".$this->abobjectclass.",/", session::get('show_info'))){ + $storage= _("global addressbook"); + $smarty->assign("internal", 0); + } else { + $storage= _("user database"); + $smarty->assign("internal", 1); + } + if (session::get('show_info') != "ADD"){ + $smarty->assign("storage_info", sprintf(_("Contact stored in '%s'"), $storage)); + } else { + $smarty->assign("storage_info", _("Creating new entry in")); + } + } else { + + + if(isset($_POST['EntryPerPage'])){ + $this->range = $_POST['EntryPerPage']; + } + $range = $this->range; + $smarty->assign("internal", 1); + } + if (isset($_GET['start'])){ + $this->start= validate($_GET['start']); + } + foreach ($this->telephone_list as $val){ + if ($mod < $this->start) { + $mod++; + continue; + } + if ($mod >= ($this->start + $range)){ + $mod++; + break; + } + if ( ($mod++) & 1){ + $col= "style=\"background-color: #ECECEC;\""; + } else { + $col= "style=\"background-color: #F5F5F5;\""; + } + $output.= "\n$val\n"; + } + + $smarty->assign("search_result", $output); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", $alphabet); + if($range < 20){ + $smarty->assign("range_selector", range_selector(count($this->telephone_list), $this->start, $range)); + }else{ + $smarty->assign("range_selector", range_selector(count($this->telephone_list), $this->start, $range, "EntryPerPage")); + } + $tmp= array("*" => _("All"), "sn" => _("Name"), "givenName" => _("Given name"), + "telephoneNumber" => _("Work phone"), "mobile" => _("Cell phone"), + "homePhone" => _("Home phone"), "uid" => _("User ID")); + natsort($tmp); + $smarty->assign("objlist", $tmp); + + /* Show main page */ + $smarty->assign ('personal_image', get_template_path('plugins/addressbook/images/addr_personal.png')); + $smarty->assign ('home_image', get_template_path('plugins/addressbook/images/addr_home.png')); + $smarty->assign ('company_image', get_template_path('plugins/addressbook/images/addr_company.png')); + $smarty->assign ('add_image', get_template_path('images/lists/paste.png')); + $smarty->assign ('edit_image', get_template_path('images/lists/edit.png')); + $smarty->assign ('delete_image', get_template_path('images/lists/delete.png')); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + function save_object() + { + plugin::save_object(); + foreach($this->attributes as $attr){ + + /* save attributes depending on acls */ + $acl = $this->get_entry_acls($this->dn,$attr); + + if(preg_match("/w/",$acl)){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + + } + } + + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* must: sn, givenName */ + if ($this->sn == ""){ + $message[] = msgPool::required(_("Name")); + return ($message); + } + if ($this->givenName == ""){ + $message[] = msgPool::required(_("Given name")); + return ($message); + } + + /* Check for valid name definition */ + if (preg_match ("/[\\\\]/", $this->sn)){ + $message[] = msgPool::invalid(_("Name"),$this->sn,"/[\\\\]"); + } + if (preg_match ("/[\\\\]/", $this->givenName)){ + $message[] = msgPool::invalid(_("Given name"),$this->givenName,"/[\\\\]"); + } + + /* Check phone numbers */ + if (!tests::is_phone_nr($this->homePhone)){ + $message[] = msgPool::invalid(_("Phone"),$this->homePhone); + } + if (!tests::is_phone_nr($this->telephoneNumber)){ + $message[] = msgPool::invalid(_("Telephone number"),$this->telephoneNumber); + } + if (!tests::is_phone_nr($this->facsimileTelephoneNumber)){ + $message[] = msgPool::invalid(_("Fax"),$this->facsimileTelephoneNumber); + } + if (!tests::is_phone_nr($this->mobile)){ + $message[] = msgPool::invalid(_("Mobile"),$this->mobile); + } + if (!tests::is_phone_nr($this->pager)){ + $message[] = msgPool::invalid(_("Pager"),$this->pager); + } + /* Check for reserved characers */ + if (preg_match ('/[,+"<>;]/', $this->givenName)){ + $message[] = msgPool::invalid(_("Given name"),$this->givenName,'/[,+"<>;]/'); + } + if (preg_match ('/[,+"<>;]/', $this->sn)){ + $message[] = msgPool::invalid(_("Name"),$this->sn,'/[,+"<>;]/'); + } + + /* Check mail */ + if (!tests::is_email($this->mail)){ + $message[] = msgPool::invalid(_("Email"),"","","your-domain@your-domain.com"); + } + + /* Assemble cn/dn */ + $this->cn= $this->givenName." ".$this->sn; + if ($this->orig_cn != $this->cn || $this->storage_base != $this->orig_storage_base){ + $this->new_dn= $this->create_unique_dn("cn", preg_replace("/,*".$this->config->current['BASE']."$/", "", $this->storage_base).",".$this->abobjectclass.",".$this->config->current['BASE']); + if ($this->new_dn == "none"){ + $message[]= _("Cannot create a unique DN for your entry. Please fill more formular fields."); + return ($message); + } + } else { + $this->new_dn= $this->dn; + } + + return ($message); + } + + + function load() + { + /* Load base attributes */ + plugin::plugin ($this->config, $this->dn); + $this->view_logged = FALSE; + $this->storage_base= preg_replace('/^[^,]+,/', '', preg_replace('/'.$this->abobjectclass.',/', '', $this->dn)); + } + + + function save() + { + /* First use parents methods to do some basic fillup in $this->attrs */ + plugin::save (); + + $this->attrs['cn']= $this->cn; + $this->attrs['displayName']= $this->givenName." ".$this->sn; + + /* Move entry if it got another name... */ + if ($this->dn != "new" && $this->dn != $this->new_dn){ + $this->move($this->dn, $this->new_dn); + } + $this->dn= $this->new_dn; + + /* Save data. Using 'modify' implies that the entry is already present, use 'add' for + new entries. So do a check first... */ + $ldap= $this->config->get_ldap_link(); + $ldap->cat ($this->dn,array('dn')); + if ($ldap->fetch()){ + $mode= "modify"; + } else { + $mode= "add"; + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + } + + /* Finally write data with selected 'mode' */ + $ldap->cd ($this->dn); + $this->cleanup(); + $ldap->$mode ($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + return (1); + } + + if($mode == "add"){ + new log("create","addressbook/".get_class($this),$this->dn, array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("modify","addressbook/".get_class($this),$this->dn, array_keys($this->attrs),$ldap->get_error()); + } + } + + + /* Return entry acls */ + function get_entry_acls($dn,$attr = "") + { + $acls = ""; + $combineACLs = FALSE; + + /* If combineACLs is set to false: + Differentiate between user and addressbook acls, thus leads into two object categories. + - real GOsa users + - and addressbook entries + To view addressbook entries (e.g. ou=addressbook,) you just require permissions on the ldap base for 'addressbook'. + To view real GOsa users you have to additionally add user permissions. + + You can enable this option, to use only addressbook acls. + */ + if($combineACLs){ + $dn = preg_replace("/".preg_quote($this->abobjectclass, '/').",/","",$dn); + $acls = $this->ui->get_permissions($dn,"addressbook/addressbook",$attr); + }else{ + + /* Use addressbook acls */ + if(preg_match("/".preg_quote($this->abobjectclass, '/')."/",$dn)) { + $dn_a = preg_replace("/".preg_quote($this->abobjectclass, '/').",/","",$dn); + $acls = $this->ui->get_permissions($dn_a,"addressbook/addressbook",$attr); + } + + /* Use Organizational Person acls */ + else{ + $acls = $this->ui->get_permissions($dn,"addressbook/addressbookgosa",$attr); + } + } + + return($acls); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Addressbook")." - "._("Addressbook entries"), + "plDescription" => _("Addressbook")." - "._("Addressbook related objects"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("addon" => _("Addons")), + "plCategory" => array("addressbook" => array("objectClass" => "inetOrgPerson", "description" => _("Addressbook"))), + + "plProvidedAcls" => array( + "sn" => _("Surename"), + "givenName" => _("Given name"), + "telephoneNumber" => _("Telefon number"), + "facsimileTelephoneNumber" => _("Fax number"), + "mobile" => _("Mobile number"), + "homePhone" => _("Home phone number"), + "uid" => _("User identification"), + "mail" => _("Mail address"), + "pager" => _("Pager"), + "o" => _("Organization"), + "ou" => _("Department"), + "l" => _("Location"), + "postalAddress" => _("Postal address"), + "postalCode" => _("Postal address"), + "st" => _("State"), + "initials" => _("Initials"), + "title" => _("Title"), + "homePostalAddress" => _("Home postal address"), + "cn" => _("Common name")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/addressbook/addons/addressbook/contents.tpl b/trunk/gosa-plugins/addressbook/addons/addressbook/contents.tpl new file mode 100644 index 000000000..004e3d2ae --- /dev/null +++ b/trunk/gosa-plugins/addressbook/addons/addressbook/contents.tpl @@ -0,0 +1,127 @@ + + + + + +
+ + + + + + + + + + + + + + {$search_result} +
{t}Name{/t}{t}Phone{/t}{t}Fax{/t}{t}Mobile{/t}{t}Private{/t}{t}Contact{/t}
+ + + + + +
{$range_selector}
+ + {if $show_info eq 1} + {include file=$address_info} + {/if} + +
+
+

[i]{t}Information{/t}

+
+
+

+ {t}The telephone list plugin provides list and search facilities for the people in your site. You may want to specify the asterisk [*] like in 'Go*us' to find 'Gonicus'. Use the filters below to narrow down your search.{/t} +

+
+
+
+

[a]{t}Actions{/t}

+
+
+

+{if $internal_createable} +   + {t}Add entry{/t}
+{/if} + +{if $internal eq 0} + {if $internal_editable} +   + {t}Edit entry{/t}
+ {/if} + {if $internal_removeable} +   + {t}Remove entry{/t}
+ {/if} +{/if} +

+
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + + +
+{t}Show organizational entries{/t}
+ {t}Show addressbook entries{/t}
+
+ + + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + +
+ {$apply} +
+
+ + + diff --git a/trunk/gosa-plugins/addressbook/addons/addressbook/dial.tpl b/trunk/gosa-plugins/addressbook/addons/addressbook/dial.tpl new file mode 100644 index 000000000..0cc150995 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/addons/addressbook/dial.tpl @@ -0,0 +1,15 @@ + + + + + + + + +
+
 
+ {$dial_info} +
 
+   + +
diff --git a/trunk/gosa-plugins/addressbook/addons/addressbook/main.inc b/trunk/gosa-plugins/addressbook/addons/addressbook/main.inc new file mode 100644 index 000000000..8807c0018 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/addons/addressbook/main.inc @@ -0,0 +1,48 @@ + set_acl_base($ui->dn); + $addressbook -> set_acl_category("addressbook"); + session::set('addressbook',$addressbook); + session::un_set('show_info'); + } + $addressbook= session::get('addressbook'); + + /* Execute formular */ + $display= $addressbook->execute (); + $display.= "\n"; + + /* Page header*/ + $display= print_header(get_template_path('plugins/addressbook/images/plugin.png'), _("Addressbook")).$display; + + /* Store changes in session */ + session::set('addressbook',$addressbook); +} +?> diff --git a/trunk/gosa-plugins/addressbook/addons/addressbook/remove.tpl b/trunk/gosa-plugins/addressbook/addons/addressbook/remove.tpl new file mode 100644 index 000000000..a764605cc --- /dev/null +++ b/trunk/gosa-plugins/addressbook/addons/addressbook/remove.tpl @@ -0,0 +1,18 @@ +
+  {t}Warning{/t} +
+

+ {$info} + {t}This includes all addressbook data in this entry. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+ +

+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ +   + +

+ diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/WARNINGS b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/WARNINGS new file mode 100644 index 000000000..5ae6e75ec --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/WARNINGS @@ -0,0 +1,3 @@ +No implementation found for style `fontenc' +No implementation found for style `graphicx' +There is no author for this document. diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/action.png b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/action.png new file mode 100644 index 0000000000000000000000000000000000000000..21d5e2f82859774e6f5d30a8d77571212a5d8d94 GIT binary patch literal 397 zcmV;80doF{P)|ptMw$qe)|9cp3l8y& z1BG8Hl2zYlf>lgIh&O)}p3jrWe890{2dA4mXtd;M2=V4ZxlsF%I!}vl{U4O@35K{* z+TkvBJ}l~0k^d5yh7foCU^G(0&V(SFE!nX>1 z1swM3k|AW#D2k&srwyE%2?{u8N9$Z$_y>Xa@L#jI6P$`gb)C + + + + +Zusätzliches + + + + + + + + + + + + + + + +

+ +

+

Zusätzliches

+

+
+ +

+


+ + + + + +

+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/closedlock.png b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/closedlock.png new file mode 100644 index 0000000000000000000000000000000000000000..04a05c1cb1fec55b1d037f11b7340d8d24f9b969 GIT binary patch literal 750 zcmVsmTOMf>H=7Ly%CAwRb5*>sq*K2!wDGwwax7f*>fu zMXOv`(8`V0A~f(jlp#%LhH>6F&-d=U?-tXHQ<7(O?mhqi?_AEgb^H_4({CefZQ+Nl zt<8^`n(D6s$g-NsW~G^2uK0R#@_|&Vch?@Kre3v#!=Xex-v4Z9s5csmwbRwrLU(t2 zb0FZmolfW7@%a7K#l?AX4v_JRTV6 z3rC~P3pr#qW2szP^{qWTcnL}KA-1` z5L&fy6`&|8hM^;bAd|_Tn5MZ}sm;zNva+mbnpQ&BbreOd&aFzid1*6*==2I{AFrA9 zOb*U%0ouXUQnRmynpc7Kn&0|}rGU^Uq{>J8Q>tjN`oP-7@?A{9g=Ag|YM z=vajMo0`Kx^;9W&3VX|jP+tr@+4$@M$V%LckKGz=>c|1dfD?q^P%R*a1?0hT0>zz< zJ73@Legn#YqnwSU?m#ieh2a2_z}k>F%7xBmaF}y23M%-t3(O7_OK@<4Avql8oHIba z=wKB!@QS|;m9CZziVnvr7#3E^MZQ=Aa2!B2z^{R;4r~WZyKFRV&@Ct#VAx<-pu4O5 z>KZZZGD-gjG>HG301Z<2_xC@Be}94W z&(941etlX15I`&-L*0$U8Gim^VEFlif#JtbApQZx-x(Ob1L^PIp%|GB#Q&HW7=8gg z3^bSFKNG~IjEtXv0=p6b0*Hx|jfLSS(6C=13^e>V2>*uSKMV|ifEefy2u5Q6L&7Mb z$;`^Y$iT(`5I`(^tp6FTB@r4x2K|8=@&^h3MrQv;(7%8G2kQgH7080WKrbv_$HV{- zKrH<13=9r(2n%P=p3RV&no2NoK!$(}`}YqRw*UTvF^K=`=YNKMN0=A@0*Hy6RDsJ- z7#pMjAb?mH{t;*JkEwE~$tnE-Rzo3t1_potV*3A&ymSn6EwZ5?_Ftelhz1BC7HmNQ z3TI@1EzA+Y@gEv-Fbg0C0|XEYHWw2UdDvWx925Wn#6nEuffU2S6gko`!xljU1Q5Yg zflVVmLqV1T1Bn43fbd2hE{(ViMFa&v0O1S@WKCc^M+ul!fjJhI{GxB5MH*Bc)S&oJsRDpzPA!c9=04)9g{Dsg!i{NY^{SR3VO8@)&4`*t+_2fGPKmak)s?GxlASMPH c0e}Dl0I565QA{BqJOBUy07*qoM6N<$f;X}fV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/index.html b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/index.html new file mode 100644 index 000000000..2507379a1 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/index.html @@ -0,0 +1,69 @@ + + + + + +Zusätzliches + + + + + + + + + + + + + + + +

+ +

+

Zusätzliches

+

+
+ +

+


+ + + + + +

+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/labels.pl b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/labels.pl new file mode 100644 index 000000000..34bd4cc1b --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/labels.pl @@ -0,0 +1,13 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate labels original text with physical files. + + +1; + + +# LaTeX2HTML 2002-2-1 (1.71) +# labels from external_latex_labels array. + + +1; + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/list_ogroup.png b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/list_ogroup.png new file mode 100644 index 0000000000000000000000000000000000000000..e50de8b7152378f7d8d1e792b57123ab3a57abdc GIT binary patch literal 728 zcmV;}0w?{6P)@k0WB<} zRn)G6Afh5_Q}h5Us1_A1iZp^=)TTtsD6I?&A2e#dW^{7qUhf^}{#!&)Q4m4D{W*N_ z9r&M9Yn~TwxDmKrec?qTcxU`QIlm^o;9T&;p0|3aZbFDNQ6VZXw!9`GGw-kXDcepR zS=1}U@(v*?+l5&1UWjGgLS&t8@5KJIMEac|B!umi3QYlc^Z}msfTls#>ilfUJ+t_? zf@c+E8i&fxHEhYhl7=~5ABTxV@OdG}2TB68eG#bZ+-rci@0{FNhWBt)=I*SGwdWnH zc2vwM%`28nN6~$IiDX$|S7FeA&M;_0HfmRhd6C8Mibrk*?gP5Kf9rxf8EZGyD(=)o zhWw!EERgyoqiui|*SBl65UBlve65*+#N2`nCcGV)ll#Y>s^o4_9gV-gG# zhaz!2xs~AuBcYoG+g%B2i!#l7jkLTTo<$X69X8Udd`rT8;j@Yr9FH;E4`@ow9 zg-an`C8h4*Ei+c{w(V_OKNf+f-FAc`n3d+ENG{-0Qg^zd>ZXI?aS%ZET(Em!@H33{ zF`=7b%kxHK!Xg-+Bt2;=ZigF>>Y;t`BYlB^N#%BHuz6QWQZ|+aaty}(V6y_!+Ct@s2#94xvEnx zrCu%)&SNu#w8~YFlk#5!lsz&lfs{WKuEdwR_erVJ#y=JOPx}gPAq|};qOmpr0000< KMNUMnLSTZJG*kZo literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/mailto.png b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/mailto.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bc51c656609c00b1d06a298eb1f31c49408563 GIT binary patch literal 692 zcmV;l0!#ggP)I_S@67cN}px=lh9LJA3GSgBc-G+;HP0}Yrd&g6BbduQ&sb6Z@0FhN1J>xIL2 zIK1ciKHhWSzm>Rt^|JRbfZKQPg@LRDxH&KYfU<3rP)HAyPzYuDZlw@dsO|3d8UWXB z+yZC9NRw<77B?Z1CEXBhDgR2!BGGefF=RvU%o}YUZS(7k%Cc! zP>v6j5`;o2iS%+HTu?US_s1~JZz#3fv;?5DtB=TmAY;R$q*gwI%It=y6cPolLu~3f z!*@mq1cIDti=t`zj!y!hD;k{&e~*h^dYG=ld6MN)SoyC zfKe)oLHT^1AQ_IIYG5(8!O}vOCnFE2K6He_W}JBJ6JJ-;^j>KpysrksFmP2GAw)4q zIX0AqS(uyR%d$!PrCzd`HD)HCl3raW+FXYospZwgBWe%Z9BZuSd)hE$Z`;8t7!m*g0000 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node1.html b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node1.html new file mode 100644 index 000000000..5e5a46195 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node1.html @@ -0,0 +1,102 @@ + + + + + +Adressbuch + + + + + + + + + + + + + + + +

+Adressbuch +

+ +

+Das Adressbuch dient dazu, die Adressdaten sowohl der verwalteten +Benutzer, als auch zusätzlicher Personen/Organisationen zentral zugängig +zu machen. Um Einträge zu erstellen oder bestehende Einträge zu verändern +(natürlich auch zur Einsicht), drücken Sie auf den Knopf Adressbuch +aus der Kategorie Zusätzliches (Menü am linken Rand des Bildschirms). +Bei Auswahl wird das Adressbuch angezeigt. Es finden sich die Spalten +Name, Telefon, Fax, Mobiltelefon, Privat sowie die Spalte Kontakt. +Die letztgenannte Spalte verfügt über die folgenden Knöpfe: + +

+ +

    +
  • Image save: Speichert bei Auswahl den Kontakt +als vcard-Datei. +
  • +
  • Image mailto: Ermöglicht bei Auswahl das Senden +einer Email an den Kontakt (sofern eine Email-Adresse angegeben ist). + +

    + +

    +
    +Um einen Benutzer auszuwählen, klicken Sie auf seinen Namen - Sie +befinden sich in der Detailansicht des Benutzers. + +

    +Um einen Eintrag zu erstellen, drücken Sie auf den Knopf Eintrag +hinzufügen aus dem Menü Aktionen Image action +am rechten Rand der Seite. + +

    +

  • +
+ +

+


+ +Subsections + + + +

+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node2.html b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node2.html new file mode 100644 index 000000000..6085d7532 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node2.html @@ -0,0 +1,103 @@ + + + + + +Hinweis: Die Adressdaten bestehender Benutzer können hier +nicht verändert werden. + + + + + + + + + + + + + + + +

+Hinweis: Die Adressdaten bestehender Benutzer können hier +nicht verändert werden. +

+ +

+Es ist weiterhin möglich, die Anzeige der Benutzer mithilfe von Filter +einzuschränken - zu diesem Zweck dient der Kasten Filter Image rocket +am rechten Rand der Seite: +

+ +

    +
  • Nach Namen suchen: + +

    + +

      +
    • Klick auf * zeigt alle Einträge an +
    • +
    • Klick auf einen Buchstaben zeigt alle Einträge an, deren Name mit +dem gewählten Buchstaben beginnt +
    • +
    • Klick auf eine Ziffer zeigt alle Einträge an, deren Name mit der gewählten +Ziffer beginnt +
    • +
    +
  • +
  • Weitere Suchoptionen: + +

    + +

      +
    • Wählen Sie 'Zeige Benutzer der Organisation' um die Einträge +der regulären Benutzer anzuzeigen. +
    • +
    • Wählen 'Zeige Adressbuch-Einträge' um die Einträge des Adressbuch +anzuzeigen. +
    • +
    • Image dtree: Beschränken Sie die Anzeige auf die +gewählte Abteilung +
    • +
    • Image list_ogroup: Wählen Sie das Feld, auf das +die Suche angewendet werden soll +
    • +
    +* Komplexere Einschränkungen über reguläre Ausdrücke bietet das +Textfeld im unteren Bereich des Kastens Filter (beginnt mit dem Symbol +Image search). In dieses Feld können Sie beliebige +Buchstaben/Ziffern-Kombinationen eingeben, um die Suche einzuschränken. +Um die Suchergebnisse in der Liste anzeigen zu lassen, Klicken Sie +auf Filter anwenden. + +

    +

  • +
+ +

+


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node3.html b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node3.html new file mode 100644 index 000000000..de344d92d --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node3.html @@ -0,0 +1,57 @@ + + + + + +Generelle Informationen + + + + + + + + + + + + + + + +

+Generelle Informationen +

+ +

+ +

    +
  • Um die Bearbeitung eines Eintrags (auch eines neuen Eintrags) abzuschliessen, +drücken Sie den Knopf Speichern unten rechts; Um den Vorgang +zu verwerfen, drücken Sie auf den Knopf Abbrechen, der sich +ebenfalls unten rechts befindet. +
  • +
  • Alle Felder, die mit einem roten Sternchen * enden, +sind Pflichtfelder und müssen daher zwingend ausgefüllt werden. +
  • +
  • Das Symbol Image closedlock zeigt an, dass Sie +sich im sicheren Modus befinden. +
  • +
+ + +

+


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node4.html b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node4.html new file mode 100644 index 000000000..91e2e8f79 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node4.html @@ -0,0 +1,59 @@ + + + + + +Eintrag hinzufügen + + + + + + + + + + + + + + + +

+Eintrag hinzufügen +

+ +

+Wenn Sie den Knopf Eintrag hinzufügen gedrückt haben, wird +die Oberfläche für das Erzeugen eines neuen Eintrags geladen. Auf +dieser Seite können Sie verschiedene Eingaben treffen - zunächst sollten +Sie jedoch die Abteilung auswählen, in der dieser Benutzer gespeichert +werden soll (Hinweis: der gespeicherte Eintrag hat keinerlei +Verbindung zu den gespeicherten Benutzern - er ist lediglich ein Adresseintrag +im Adressbuch der Organisation). + +

+


+ +Subsections + + + +

+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node5.html b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node5.html new file mode 100644 index 000000000..3e8b8f3f2 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node5.html @@ -0,0 +1,59 @@ + + + + + +Persönlich + + + + + + + + + + + + + + + +

+Persönlich +

+ +

+ + + + + + + + + + + + + +
Vorname*Der Vorname des Kontakts
Nachname*Der Nachname des Kontakts
InitialenDie Initialen des Kontakts
TitelAkademischer Titel des Kontakts
+ +

+ +

+
+ + +

+


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node6.html b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node6.html new file mode 100644 index 000000000..e9c214909 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node6.html @@ -0,0 +1,53 @@ + + + + + +Privat + + + + + + + + + + + + + + + +

+Privat +

+ +

+ + + + + + + + + + + + + +
AdresseDie private Anschrift des Kontakts
TelefonDie private Telefonnummer des Kontakts
MobiltelefonDie private Mobil-Nummer des Kontakts
EmailDie Email-Adresse des Kontakts
+ +

+


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node7.html b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node7.html new file mode 100644 index 000000000..1805f3f81 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node7.html @@ -0,0 +1,66 @@ + + + + + +Organisationsbezogen + + + + + + + + + + + + + + + +

+Organisationsbezogen +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FirmaFirmenname des Kontakts
AbteilungDie Abteilung des Kontakts
StadtDie Stadt der Firma
PostleitzahlDie Postleitzahl der Firma
LandDas Land der Firma
AdresseDie geschäftliche Anschrift des Kontakts
TelefonDie geschäftliche Telefonnummer des Kontakts
FaxDie geschäftliche Faxnummer des Kontakts
PagerDie geschäftliche Pagernummer des Kontakts
+


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node8.html b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node8.html new file mode 100644 index 000000000..40f48d1a7 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/node8.html @@ -0,0 +1,51 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + +

+About this document ... +

+ Zusätzliches

+This document was generated using the +LaTeX2HTML translator Version 2002-2-1 (1.71) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html -no_navigation -dir ../html/addressbook/ addressbook.tex +

+The translation was initiated by Jan Wenzel on 2008-03-13 +


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/de/html/addressbook/rocket.png b/trunk/gosa-plugins/addressbook/help/de/html/addressbook/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000z2EII1t zv6KTi=X_hKK;(-m!mIc1))F1wys>JuP=N?_93LETG$)Z2s+CVG8ad~v*X!JW@Tjn9 zS=DNFJCTS`tJM$@L|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr + + + + + +\begin_inset Text + +\layout Standard + + +\color black +Vorname +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Vorname des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + + +\color black +Nachname +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Nachname des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Initialen +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Initialen des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Titel +\end_inset + + +\begin_inset Text + +\layout Standard + +Akademischer Titel des Kontakts +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top medskip +Privat +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die private Anschrift des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Telefon +\end_inset + + +\begin_inset Text + +\layout Standard + +Die private Telefonnummer des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mobiltelefon +\end_inset + + +\begin_inset Text + +\layout Standard + +Die private Mobil-Nummer des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Email +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Email-Adresse des Kontakts +\end_inset + + + + +\end_inset + + +\layout Subsubsection + +Organisationsbezogen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Firma +\end_inset + + +\begin_inset Text + +\layout Standard + +Firmenname des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Abteilung +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Abteilung des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Stadt +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Stadt der Firma +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Postleitzahl +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Postleitzahl der Firma +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Land +\end_inset + + +\begin_inset Text + +\layout Standard + +Das Land der Firma +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die geschäftliche Anschrift des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Telefon +\end_inset + + +\begin_inset Text + +\layout Standard + +Die geschäftliche Telefonnummer des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Fax +\end_inset + + +\begin_inset Text + +\layout Standard + +Die geschäftliche Faxnummer des Kontakts +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Pager +\end_inset + + +\begin_inset Text + +\layout Standard + +Die geschäftliche Pagernummer des Kontakts +\end_inset + + + + +\end_inset + + +\the_end diff --git a/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/action.png b/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/action.png new file mode 100644 index 0000000000000000000000000000000000000000..21d5e2f82859774e6f5d30a8d77571212a5d8d94 GIT binary patch literal 397 zcmV;80doF{P)|ptMw$qe)|9cp3l8y& z1BG8Hl2zYlf>lgIh&O)}p3jrWe890{2dA4mXtd;M2=V4ZxlsF%I!}vl{U4O@35K{* z+TkvBJ}l~0k^d5yh7foCU^G(0&V(SFE!nX>1 z1swM3k|AW#D2k&srwyE%2?{u8N9$Z$_y>Xa@L#jI6P$`gb)CsmTOMf>H=7Ly%CAwRb5*>sq*K2!wDGwwax7f*>fu zMXOv`(8`V0A~f(jlp#%LhH>6F&-d=U?-tXHQ<7(O?mhqi?_AEgb^H_4({CefZQ+Nl zt<8^`n(D6s$g-NsW~G^2uK0R#@_|&Vch?@Kre3v#!=Xex-v4Z9s5csmwbRwrLU(t2 zb0FZmolfW7@%a7K#l?AX4v_JRTV6 z3rC~P3pr#qW2szP^{qWTcnL}KA-1` z5L&fy6`&|8hM^;bAd|_Tn5MZ}sm;zNva+mbnpQ&BbreOd&aFzid1*6*==2I{AFrA9 zOb*U%0ouXUQnRmynpc7Kn&0|}rGU^Uq{>J8Q>tjN`oP-7@?A{9g=Ag|YM z=vajMo0`Kx^;9W&3VX|jP+tr@+4$@M$V%LckKGz=>c|1dfD?q^P%R*a1?0hT0>zz< zJ73@Legn#YqnwSU?m#ieh2a2_z}k>F%7xBmaF}y23M%-t3(O7_OK@<4Avql8oHIba z=wKB!@QS|;m9CZziVnvr7#3E^MZQ=Aa2!B2z^{R;4r~WZyKFRV&@Ct#VAx<-pu4O5 z>KZZZGD-gjG>HG301Z<2_xC@Be}94W z&(941etlX15I`&-L*0$U8Gim^VEFlif#JtbApQZx-x(Ob1L^PIp%|GB#Q&HW7=8gg z3^bSFKNG~IjEtXv0=p6b0*Hx|jfLSS(6C=13^e>V2>*uSKMV|ifEefy2u5Q6L&7Mb z$;`^Y$iT(`5I`(^tp6FTB@r4x2K|8=@&^h3MrQv;(7%8G2kQgH7080WKrbv_$HV{- zKrH<13=9r(2n%P=p3RV&no2NoK!$(}`}YqRw*UTvF^K=`=YNKMN0=A@0*Hy6RDsJ- z7#pMjAb?mH{t;*JkEwE~$tnE-Rzo3t1_potV*3A&ymSn6EwZ5?_Ftelhz1BC7HmNQ z3TI@1EzA+Y@gEv-Fbg0C0|XEYHWw2UdDvWx925Wn#6nEuffU2S6gko`!xljU1Q5Yg zflVVmLqV1T1Bn43fbd2hE{(ViMFa&v0O1S@WKCc^M+ul!fjJhI{GxB5MH*Bc)S&oJsRDpzPA!c9=04)9g{Dsg!i{NY^{SR3VO8@)&4`*t+_2fGPKmak)s?GxlASMPH c0e}Dl0I565QA{BqJOBUy07*qoM6N<$f;X}fV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/editpaste.png b/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/editpaste.png new file mode 100644 index 0000000000000000000000000000000000000000..636a4c5a0bd715d6437d3713d4b42752d46661ba GIT binary patch literal 990 zcmV<410np0P)qS(`QfKKi5c|M%a! z|Nb){1Zsc8^#3p10Du5u`Nzq#T*k%N=Ki+kz6Z>~@_s5UrSNAmBV-96S<0I_@l3jY26jp6U_e<0U_oy^4W3uquO z&`Lyff#tw~#=;;X!q314H1*G)zX<>V#PaX=UxxobzB2sz3Ut_KppD;w^q(IL{~3YS z3Lp$%W(HwqpaDz_f`a@E92{&6&z`+v00_VonWO*!!a!_<;{TuN&4Uyvc5(1zevm{e z96lFfY{2pIiwd2m8m<6h`Tq;(+^6pu{(SxePhyN916Y584TEX^ z_6-y+-+^BF$H2+S4i;x(VrBpcAeR4Mfd;($0agS9O#grZ`}YR}%!FUS0R9Dx3Xm6o zX$xo%L@~%dfB<4)_zjc*;=jKU1~C5p1(XEZ2Ic?x^9RUh0w*pI&B6i=aG(VM0mSn3 z9mD;5kN+3~(*#@t!|y)~zxn z>mSsFzrPrN@rbZU#xOG_f(&M7X9Wh_U$6m8KmnkGfqYOHFfafF5DQT3E(;?=J}`C| z{=(7$(4(wszM2OQUXB39*8jhMf#LoiB=w&GLjMD&ua6(Ud<6(F0J}kNf50^MxBvhE M07*qoM6N<$g0n-+82|tP literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/list_ogroup.png b/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/list_ogroup.png new file mode 100644 index 0000000000000000000000000000000000000000..e50de8b7152378f7d8d1e792b57123ab3a57abdc GIT binary patch literal 728 zcmV;}0w?{6P)@k0WB<} zRn)G6Afh5_Q}h5Us1_A1iZp^=)TTtsD6I?&A2e#dW^{7qUhf^}{#!&)Q4m4D{W*N_ z9r&M9Yn~TwxDmKrec?qTcxU`QIlm^o;9T&;p0|3aZbFDNQ6VZXw!9`GGw-kXDcepR zS=1}U@(v*?+l5&1UWjGgLS&t8@5KJIMEac|B!umi3QYlc^Z}msfTls#>ilfUJ+t_? zf@c+E8i&fxHEhYhl7=~5ABTxV@OdG}2TB68eG#bZ+-rci@0{FNhWBt)=I*SGwdWnH zc2vwM%`28nN6~$IiDX$|S7FeA&M;_0HfmRhd6C8Mibrk*?gP5Kf9rxf8EZGyD(=)o zhWw!EERgyoqiui|*SBl65UBlve65*+#N2`nCcGV)ll#Y>s^o4_9gV-gG# zhaz!2xs~AuBcYoG+g%B2i!#l7jkLTTo<$X69X8Udd`rT8;j@Yr9FH;E4`@ow9 zg-an`C8h4*Ei+c{w(V_OKNf+f-FAc`n3d+ENG{-0Qg^zd>ZXI?aS%ZET(Em!@H33{ zF`=7b%kxHK!Xg-+Bt2;=ZigF>>Y;t`BYlB^N#%BHuz6QWQZ|+aaty}(V6y_!+Ct@s2#94xvEnx zrCu%)&SNu#w8~YFlk#5!lsz&lfs{WKuEdwR_erVJ#y=JOPx}gPAq|};qOmpr0000< KMNUMnLSTZJG*kZo literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/mailto.png b/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/mailto.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bc51c656609c00b1d06a298eb1f31c49408563 GIT binary patch literal 692 zcmV;l0!#ggP)I_S@67cN}px=lh9LJA3GSgBc-G+;HP0}Yrd&g6BbduQ&sb6Z@0FhN1J>xIL2 zIK1ciKHhWSzm>Rt^|JRbfZKQPg@LRDxH&KYfU<3rP)HAyPzYuDZlw@dsO|3d8UWXB z+yZC9NRw<77B?Z1CEXBhDgR2!BGGefF=RvU%o}YUZS(7k%Cc! zP>v6j5`;o2iS%+HTu?US_s1~JZz#3fv;?5DtB=TmAY;R$q*gwI%It=y6cPolLu~3f z!*@mq1cIDti=t`zj!y!hD;k{&e~*h^dYG=ld6MN)SoyC zfKe)oLHT^1AQ_IIYG5(8!O}vOCnFE2K6He_W}JBJ6JJ-;^j>KpysrksFmP2GAw)4q zIX0AqS(uyR%d$!PrCzd`HD)HCl3raW+FXYospZwgBWe%Z9BZuSd)hE$Z`;8t7!m*g0000 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/rocket.png b/trunk/gosa-plugins/addressbook/help/de/lyx-source/images/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000z2EII1t zv6KTi=X_hKK;(-m!mIc1))F1wys>JuP=N?_93LETG$)Z2s+CVG8ad~v*X!JW@Tjn9 zS=DNFJCTS`tJM$@L|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr|ptMw$qe)|9cp3l8y& z1BG8Hl2zYlf>lgIh&O)}p3jrWe890{2dA4mXtd;M2=V4ZxlsF%I!}vl{U4O@35K{* z+TkvBJ}l~0k^d5yh7foCU^G(0&V(SFE!nX>1 z1swM3k|AW#D2k&srwyE%2?{u8N9$Z$_y>Xa@L#jI6P$`gb)Cf#j5bYIy#VEO<+7J?&);STN!4e-)a4Xu|Vvq5vYcH|a#H8ZCcXw?g^I2sN zXg%}h&6|BAnhoe-B+_^TGdJLzEja%JK92;@1lB0y2@NSDF$fMl9F^su~aRg%` z0t?(Qq|j*A&2iTmf;@jUf#DNbxUt~sxWmj`(tHFp^=CULkp-NjJk^H zaXRX25g$>Ysosz-17X2}Gfy(rn+>4hieV@pM+QXzKF!cG68ernA`fC@M9?+L=Xu9O zjXxWAM2?=A8IY*rY6__1p)_bv^otgc6a6qTIqzgOb_vzG` zOr60wtTLr+tpzB7GV*9YnWOH@)1dM_-v#nFRs&lg7hs7wjVhX-MrB5U%c+Mya^@o< zDZS`EKZTLcmGk6A1V}s@EkWC@pL%#x2p+b}%WZkND=(emqPz^{qN4nvZc?G?+doZ@ zCM!lZ3ZU@YT7iZlq5C;~6JH}<+ad5Zm1I0JqBLAcCtPGqBlYHZ+)dTu7|9A<>dW0M zq`N#sh%ggsUsU&qtm#rSX|c+r=kCN55<-Ovo!Ij#C}IBrk(ex~yGQ;>A067(uY(kC zS}pbEa>io|u3P#%D2MW_e(bYZ?ZDZrw&iSATU2I!Up21u{ZdtRkZtdkszP7>nG}-S rU#pcWS>e6CH0<4_Sv!|T?dZKLXF2HE*&F2`d4DuYMeY5!Go$@lmp literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/addressbook.html b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/addressbook.html new file mode 100644 index 000000000..d25a91ea2 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/addressbook.html @@ -0,0 +1,65 @@ + + + + + +ADDONS + + + + + + + + + + + + + + + +

+ +

+

ADDONS

+
+ +
+ +

+


+ + + + + +

+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/closedlock.png b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/closedlock.png new file mode 100644 index 0000000000000000000000000000000000000000..04a05c1cb1fec55b1d037f11b7340d8d24f9b969 GIT binary patch literal 750 zcmVsmTOMf>H=7Ly%CAwRb5*>sq*K2!wDGwwax7f*>fu zMXOv`(8`V0A~f(jlp#%LhH>6F&-d=U?-tXHQ<7(O?mhqi?_AEgb^H_4({CefZQ+Nl zt<8^`n(D6s$g-NsW~G^2uK0R#@_|&Vch?@Kre3v#!=Xex-v4Z9s5csmwbRwrLU(t2 zb0FZmolfW7@%a7K#l?AX4v_JRTV6 z3rC~P3pr#qW2szP^{qWTcnL}KA-1` z5L&fy6`&|8hM^;bAd|_Tn5MZ}sm;zNva+mbnpQ&BbreOd&aFzid1*6*==2I{AFrA9 zOb*U%0ouXUQnRmynpc7Kn&0|}rGU^Uq{>J8Q>tjN`oP-7@?A{9g=Ag|YM z=vajMo0`Kx^;9W&3VX|jP+tr@+4$@M$V%LckKGz=>c|1dfD?q^P%R*a1?0hT0>zz< zJ73@Legn#YqnwSU?m#ieh2a2_z}k>F%7xBmaF}y23M%-t3(O7_OK@<4Avql8oHIba z=wKB!@QS|;m9CZziVnvr7#3E^MZQ=Aa2!B2z^{R;4r~WZyKFRV&@Ct#VAx<-pu4O5 z>KZZZGD-gjG>HG301Z<2_xC@Be}94W z&(941etlX15I`&-L*0$U8Gim^VEFlif#JtbApQZx-x(Ob1L^PIp%|GB#Q&HW7=8gg z3^bSFKNG~IjEtXv0=p6b0*Hx|jfLSS(6C=13^e>V2>*uSKMV|ifEefy2u5Q6L&7Mb z$;`^Y$iT(`5I`(^tp6FTB@r4x2K|8=@&^h3MrQv;(7%8G2kQgH7080WKrbv_$HV{- zKrH<13=9r(2n%P=p3RV&no2NoK!$(}`}YqRw*UTvF^K=`=YNKMN0=A@0*Hy6RDsJ- z7#pMjAb?mH{t;*JkEwE~$tnE-Rzo3t1_potV*3A&ymSn6EwZ5?_Ftelhz1BC7HmNQ z3TI@1EzA+Y@gEv-Fbg0C0|XEYHWw2UdDvWx925Wn#6nEuffU2S6gko`!xljU1Q5Yg zflVVmLqV1T1Bn43fbd2hE{(ViMFa&v0O1S@WKCc^M+ul!fjJhI{GxB5MH*Bc)S&oJsRDpzPA!c9=04)9g{Dsg!i{NY^{SR3VO8@)&4`*t+_2fGPKmak)s?GxlASMPH c0e}Dl0I565QA{BqJOBUy07*qoM6N<$f;X}fV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/editpaste.png b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/editpaste.png new file mode 100644 index 0000000000000000000000000000000000000000..636a4c5a0bd715d6437d3713d4b42752d46661ba GIT binary patch literal 990 zcmV<410np0P)qS(`QfKKi5c|M%a! z|Nb){1Zsc8^#3p10Du5u`Nzq#T*k%N=Ki+kz6Z>~@_s5UrSNAmBV-96S<0I_@l3jY26jp6U_e<0U_oy^4W3uquO z&`Lyff#tw~#=;;X!q314H1*G)zX<>V#PaX=UxxobzB2sz3Ut_KppD;w^q(IL{~3YS z3Lp$%W(HwqpaDz_f`a@E92{&6&z`+v00_VonWO*!!a!_<;{TuN&4Uyvc5(1zevm{e z96lFfY{2pIiwd2m8m<6h`Tq;(+^6pu{(SxePhyN916Y584TEX^ z_6-y+-+^BF$H2+S4i;x(VrBpcAeR4Mfd;($0agS9O#grZ`}YR}%!FUS0R9Dx3Xm6o zX$xo%L@~%dfB<4)_zjc*;=jKU1~C5p1(XEZ2Ic?x^9RUh0w*pI&B6i=aG(VM0mSn3 z9mD;5kN+3~(*#@t!|y)~zxn z>mSsFzrPrN@rbZU#xOG_f(&M7X9Wh_U$6m8KmnkGfqYOHFfafF5DQT3E(;?=J}`C| z{=(7$(4(wszM2OQUXB39*8jhMf#LoiB=w&GLjMD&ua6(Ud<6(F0J}kNf50^MxBvhE M07*qoM6N<$g0n-+82|tP literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/index.html b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/index.html new file mode 100644 index 000000000..d25a91ea2 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/index.html @@ -0,0 +1,65 @@ + + + + + +ADDONS + + + + + + + + + + + + + + + +

+ +

+

ADDONS

+
+ +
+ +

+


+ + + + + +

+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/labels.pl b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/labels.pl new file mode 100644 index 000000000..34bd4cc1b --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/labels.pl @@ -0,0 +1,13 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate labels original text with physical files. + + +1; + + +# LaTeX2HTML 2002-2-1 (1.71) +# labels from external_latex_labels array. + + +1; + diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/list_ogroup.png b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/list_ogroup.png new file mode 100644 index 0000000000000000000000000000000000000000..e50de8b7152378f7d8d1e792b57123ab3a57abdc GIT binary patch literal 728 zcmV;}0w?{6P)@k0WB<} zRn)G6Afh5_Q}h5Us1_A1iZp^=)TTtsD6I?&A2e#dW^{7qUhf^}{#!&)Q4m4D{W*N_ z9r&M9Yn~TwxDmKrec?qTcxU`QIlm^o;9T&;p0|3aZbFDNQ6VZXw!9`GGw-kXDcepR zS=1}U@(v*?+l5&1UWjGgLS&t8@5KJIMEac|B!umi3QYlc^Z}msfTls#>ilfUJ+t_? zf@c+E8i&fxHEhYhl7=~5ABTxV@OdG}2TB68eG#bZ+-rci@0{FNhWBt)=I*SGwdWnH zc2vwM%`28nN6~$IiDX$|S7FeA&M;_0HfmRhd6C8Mibrk*?gP5Kf9rxf8EZGyD(=)o zhWw!EERgyoqiui|*SBl65UBlve65*+#N2`nCcGV)ll#Y>s^o4_9gV-gG# zhaz!2xs~AuBcYoG+g%B2i!#l7jkLTTo<$X69X8Udd`rT8;j@Yr9FH;E4`@ow9 zg-an`C8h4*Ei+c{w(V_OKNf+f-FAc`n3d+ENG{-0Qg^zd>ZXI?aS%ZET(Em!@H33{ zF`=7b%kxHK!Xg-+Bt2;=ZigF>>Y;t`BYlB^N#%BHuz6QWQZ|+aaty}(V6y_!+Ct@s2#94xvEnx zrCu%)&SNu#w8~YFlk#5!lsz&lfs{WKuEdwR_erVJ#y=JOPx}gPAq|};qOmpr0000< KMNUMnLSTZJG*kZo literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/mailto.png b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/mailto.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bc51c656609c00b1d06a298eb1f31c49408563 GIT binary patch literal 692 zcmV;l0!#ggP)I_S@67cN}px=lh9LJA3GSgBc-G+;HP0}Yrd&g6BbduQ&sb6Z@0FhN1J>xIL2 zIK1ciKHhWSzm>Rt^|JRbfZKQPg@LRDxH&KYfU<3rP)HAyPzYuDZlw@dsO|3d8UWXB z+yZC9NRw<77B?Z1CEXBhDgR2!BGGefF=RvU%o}YUZS(7k%Cc! zP>v6j5`;o2iS%+HTu?US_s1~JZz#3fv;?5DtB=TmAY;R$q*gwI%It=y6cPolLu~3f z!*@mq1cIDti=t`zj!y!hD;k{&e~*h^dYG=ld6MN)SoyC zfKe)oLHT^1AQ_IIYG5(8!O}vOCnFE2K6He_W}JBJ6JJ-;^j>KpysrksFmP2GAw)4q zIX0AqS(uyR%d$!PrCzd`HD)HCl3raW+FXYospZwgBWe%Z9BZuSd)hE$Z`;8t7!m*g0000 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node1.html b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node1.html new file mode 100644 index 000000000..b1348fba9 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node1.html @@ -0,0 +1,169 @@ + + + + + +Addressbook + + + + + + + + + + + + + + + +

+Addressbook +

+ +

+The administrator can create or modify the user data or access to +informations about users when clicking on Addressbook +button in the Addons on the left. TheAddress book page is displayed. You will +find on this page the name, the phone, the fax, the mobile and the +private number of users. The last column contains the following icons +: + +

+ +

    +
  • Image save save entry as vcard, +
  • +
  • Image mailto send a mail to the user. +
  • +
+To select an user you have to click on his name, it will show you +the complete data of the selected user. + +

+To create or modify an entry, the administrator can use the following +icon within the box Actions Image action: + +

+ +

    +
  • Image editpaste Add entry, +
  • +
+Pay attention, the users created in the Administration part can't +be modified here, only the consultation of data is allowed. + +

+Below the Actions +Image actionbox you will find a box called Filters +Image rocket. +

+ +

    +
  • This table purpose is to change the display of the +users and their data : +

    +- Click on a letter to show all the users name starting +with this letter; +

    +- Click on the asterisk and the list of user name +will be ordoned alphabetically. +

    +

  • +
  • Lower, others possibilities of display exist : + +

    +- Check one or more options to get a restricted selection : + +

    +Check 'Show organizational entries' and all the users created +in the Administration part are displayed. + +

    +Check 'Show addressbook entries' and all the users created +on the addressbook are displayed. + +

    +- Image dtree You can search by department; + +

    +- Image list_ogroup Your search can be based on +informations of one or many users; + +

    +- Your search can be based on one element. Insert a letter or a number +followed by an asterisk or a name in the field Image search. +Then Click on the Apply filter button to display users. + +

    +

  • +
+All the fields followed by a red asterisk must be filled. + +

+The icon Image closedlock show you are in secure +mode. + +

+ + +

+


+ +Subsections + + + +

+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node2.html b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node2.html new file mode 100644 index 000000000..87180e7ae --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node2.html @@ -0,0 +1,67 @@ + + + + + +Add entry + + + + + + + + + + + + + + + +

+Add entry +

+ +

+When clicking on 'Add entry', the interface creating a new +entry in display. The administrator has to fill the fields with informations +about the user. This new entry has no link with users created in the +Administration part. This entry is only build into the addressbook +of the organization. + +

+Before the administrator can choose the department where the new entry +will be saved, he can make a choice of department on the scroll list +int the title bar. + +

+To save data click on the Save button, to delete data click +on the Cancel button and you come back at the complete list +of users. + +

+


+ +Subsections + + + +

+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node3.html b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node3.html new file mode 100644 index 000000000..507fd0a59 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node3.html @@ -0,0 +1,59 @@ + + + + + +Personal + + + + + + + + + + + + + + + +

+Personal +

+ +

+ + + + + + + + + + + + + +
Last name*Insert the user's name
First name*Insert the first name of the user
InitialsInsert the initials of the user
Personal titleMention the professional title of the person
+ +

+ +

+
+ + +

+


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node4.html b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node4.html new file mode 100644 index 000000000..62798ca52 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node4.html @@ -0,0 +1,53 @@ + + + + + +Private + + + + + + + + + + + + + + + +

+Private +

+ +

+ + + + + + + + + + + + + +
AddressInsert the user's private address
TéléphoneInsert the user's private phone
PortableInsert the user's mobile phone
EmailInsert the user's email address
+ +

+


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node5.html b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node5.html new file mode 100644 index 000000000..9a517f29a --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node5.html @@ -0,0 +1,66 @@ + + + + + +Organizational + + + + + + + + + + + + + + + +

+Organizational +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CompanyInsert the company's name of the user
DepartmentInsert the department where the user is located
CityInsert the city where the company is
Postal codeInsert the postal code of the company
CountryInsert the country where the company is implanted
AddressInsert company's address
PhoneInsert the user's phone number
FAXInsert the user's fax number
PagerInsert the user's pager
+


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node6.html b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node6.html new file mode 100644 index 000000000..37860a642 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/node6.html @@ -0,0 +1,51 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + +

+About this document ... +

+ ADDONS

+This document was generated using the +LaTeX2HTML translator Version 2002-2-1 (1.71) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html -no_navigation -dir ../html/addressbook/ addressbook.tex +

+The translation was initiated by Jan Wenzel on 2008-03-13 +


+
+Jan Wenzel +2008-03-13 +
+ + diff --git a/trunk/gosa-plugins/addressbook/help/en/html/addressbook/rocket.png b/trunk/gosa-plugins/addressbook/help/en/html/addressbook/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000z2EII1t zv6KTi=X_hKK;(-m!mIc1))F1wys>JuP=N?_93LETG$)Z2s+CVG8ad~v*X!JW@Tjn9 zS=DNFJCTS`tJM$@L|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr + + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +Last name +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the user's name +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +First name +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the first name of the user +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Initials +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the initials of the user +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Personal title +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Mention the professional title of the person +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace medskip +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Private +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard +Address +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the user's private address +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Téléphone +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the user's private phone +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Portable +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the user's mobile phone +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Email +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the user's email address +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Organizational +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard +Company +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the company's name of the user +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Department +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the department where the user is located +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +City +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the city where the company is +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Postal code +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the postal code of the company +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Country +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the country where the company is implanted +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Address +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert company's address +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Phone +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the user's phone number +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +FAX +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the user's fax number +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Pager +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Insert the user's pager +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/action.png b/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/action.png new file mode 100644 index 0000000000000000000000000000000000000000..21d5e2f82859774e6f5d30a8d77571212a5d8d94 GIT binary patch literal 397 zcmV;80doF{P)|ptMw$qe)|9cp3l8y& z1BG8Hl2zYlf>lgIh&O)}p3jrWe890{2dA4mXtd;M2=V4ZxlsF%I!}vl{U4O@35K{* z+TkvBJ}l~0k^d5yh7foCU^G(0&V(SFE!nX>1 z1swM3k|AW#D2k&srwyE%2?{u8N9$Z$_y>Xa@L#jI6P$`gb)CsmTOMf>H=7Ly%CAwRb5*>sq*K2!wDGwwax7f*>fu zMXOv`(8`V0A~f(jlp#%LhH>6F&-d=U?-tXHQ<7(O?mhqi?_AEgb^H_4({CefZQ+Nl zt<8^`n(D6s$g-NsW~G^2uK0R#@_|&Vch?@Kre3v#!=Xex-v4Z9s5csmwbRwrLU(t2 zb0FZmolfW7@%a7K#l?AX4v_JRTV6 z3rC~P3pr#qW2szP^{qWTcnL}KA-1` z5L&fy6`&|8hM^;bAd|_Tn5MZ}sm;zNva+mbnpQ&BbreOd&aFzid1*6*==2I{AFrA9 zOb*U%0ouXUQnRmynpc7Kn&0|}rGU^Uq{>J8Q>tjN`oP-7@?A{9g=Ag|YM z=vajMo0`Kx^;9W&3VX|jP+tr@+4$@M$V%LckKGz=>c|1dfD?q^P%R*a1?0hT0>zz< zJ73@Legn#YqnwSU?m#ieh2a2_z}k>F%7xBmaF}y23M%-t3(O7_OK@<4Avql8oHIba z=wKB!@QS|;m9CZziVnvr7#3E^MZQ=Aa2!B2z^{R;4r~WZyKFRV&@Ct#VAx<-pu4O5 z>KZZZGD-gjG>HG301Z<2_xC@Be}94W z&(941etlX15I`&-L*0$U8Gim^VEFlif#JtbApQZx-x(Ob1L^PIp%|GB#Q&HW7=8gg z3^bSFKNG~IjEtXv0=p6b0*Hx|jfLSS(6C=13^e>V2>*uSKMV|ifEefy2u5Q6L&7Mb z$;`^Y$iT(`5I`(^tp6FTB@r4x2K|8=@&^h3MrQv;(7%8G2kQgH7080WKrbv_$HV{- zKrH<13=9r(2n%P=p3RV&no2NoK!$(}`}YqRw*UTvF^K=`=YNKMN0=A@0*Hy6RDsJ- z7#pMjAb?mH{t;*JkEwE~$tnE-Rzo3t1_potV*3A&ymSn6EwZ5?_Ftelhz1BC7HmNQ z3TI@1EzA+Y@gEv-Fbg0C0|XEYHWw2UdDvWx925Wn#6nEuffU2S6gko`!xljU1Q5Yg zflVVmLqV1T1Bn43fbd2hE{(ViMFa&v0O1S@WKCc^M+ul!fjJhI{GxB5MH*Bc)S&oJsRDpzPA!c9=04)9g{Dsg!i{NY^{SR3VO8@)&4`*t+_2fGPKmak)s?GxlASMPH c0e}Dl0I565QA{BqJOBUy07*qoM6N<$f;X}fV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/editpaste.png b/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/editpaste.png new file mode 100644 index 0000000000000000000000000000000000000000..636a4c5a0bd715d6437d3713d4b42752d46661ba GIT binary patch literal 990 zcmV<410np0P)qS(`QfKKi5c|M%a! z|Nb){1Zsc8^#3p10Du5u`Nzq#T*k%N=Ki+kz6Z>~@_s5UrSNAmBV-96S<0I_@l3jY26jp6U_e<0U_oy^4W3uquO z&`Lyff#tw~#=;;X!q314H1*G)zX<>V#PaX=UxxobzB2sz3Ut_KppD;w^q(IL{~3YS z3Lp$%W(HwqpaDz_f`a@E92{&6&z`+v00_VonWO*!!a!_<;{TuN&4Uyvc5(1zevm{e z96lFfY{2pIiwd2m8m<6h`Tq;(+^6pu{(SxePhyN916Y584TEX^ z_6-y+-+^BF$H2+S4i;x(VrBpcAeR4Mfd;($0agS9O#grZ`}YR}%!FUS0R9Dx3Xm6o zX$xo%L@~%dfB<4)_zjc*;=jKU1~C5p1(XEZ2Ic?x^9RUh0w*pI&B6i=aG(VM0mSn3 z9mD;5kN+3~(*#@t!|y)~zxn z>mSsFzrPrN@rbZU#xOG_f(&M7X9Wh_U$6m8KmnkGfqYOHFfafF5DQT3E(;?=J}`C| z{=(7$(4(wszM2OQUXB39*8jhMf#LoiB=w&GLjMD&ua6(Ud<6(F0J}kNf50^MxBvhE M07*qoM6N<$g0n-+82|tP literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/list_ogroup.png b/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/list_ogroup.png new file mode 100644 index 0000000000000000000000000000000000000000..e50de8b7152378f7d8d1e792b57123ab3a57abdc GIT binary patch literal 728 zcmV;}0w?{6P)@k0WB<} zRn)G6Afh5_Q}h5Us1_A1iZp^=)TTtsD6I?&A2e#dW^{7qUhf^}{#!&)Q4m4D{W*N_ z9r&M9Yn~TwxDmKrec?qTcxU`QIlm^o;9T&;p0|3aZbFDNQ6VZXw!9`GGw-kXDcepR zS=1}U@(v*?+l5&1UWjGgLS&t8@5KJIMEac|B!umi3QYlc^Z}msfTls#>ilfUJ+t_? zf@c+E8i&fxHEhYhl7=~5ABTxV@OdG}2TB68eG#bZ+-rci@0{FNhWBt)=I*SGwdWnH zc2vwM%`28nN6~$IiDX$|S7FeA&M;_0HfmRhd6C8Mibrk*?gP5Kf9rxf8EZGyD(=)o zhWw!EERgyoqiui|*SBl65UBlve65*+#N2`nCcGV)ll#Y>s^o4_9gV-gG# zhaz!2xs~AuBcYoG+g%B2i!#l7jkLTTo<$X69X8Udd`rT8;j@Yr9FH;E4`@ow9 zg-an`C8h4*Ei+c{w(V_OKNf+f-FAc`n3d+ENG{-0Qg^zd>ZXI?aS%ZET(Em!@H33{ zF`=7b%kxHK!Xg-+Bt2;=ZigF>>Y;t`BYlB^N#%BHuz6QWQZ|+aaty}(V6y_!+Ct@s2#94xvEnx zrCu%)&SNu#w8~YFlk#5!lsz&lfs{WKuEdwR_erVJ#y=JOPx}gPAq|};qOmpr0000< KMNUMnLSTZJG*kZo literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/mailto.png b/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/mailto.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bc51c656609c00b1d06a298eb1f31c49408563 GIT binary patch literal 692 zcmV;l0!#ggP)I_S@67cN}px=lh9LJA3GSgBc-G+;HP0}Yrd&g6BbduQ&sb6Z@0FhN1J>xIL2 zIK1ciKHhWSzm>Rt^|JRbfZKQPg@LRDxH&KYfU<3rP)HAyPzYuDZlw@dsO|3d8UWXB z+yZC9NRw<77B?Z1CEXBhDgR2!BGGefF=RvU%o}YUZS(7k%Cc! zP>v6j5`;o2iS%+HTu?US_s1~JZz#3fv;?5DtB=TmAY;R$q*gwI%It=y6cPolLu~3f z!*@mq1cIDti=t`zj!y!hD;k{&e~*h^dYG=ld6MN)SoyC zfKe)oLHT^1AQ_IIYG5(8!O}vOCnFE2K6He_W}JBJ6JJ-;^j>KpysrksFmP2GAw)4q zIX0AqS(uyR%d$!PrCzd`HD)HCl3raW+FXYospZwgBWe%Z9BZuSd)hE$Z`;8t7!m*g0000 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/rocket.png b/trunk/gosa-plugins/addressbook/help/en/lyx-source/images/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000z2EII1t zv6KTi=X_hKK;(-m!mIc1))F1wys>JuP=N?_93LETG$)Z2s+CVG8ad~v*X!JW@Tjn9 zS=DNFJCTS`tJM$@L|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr + + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +Apellido +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el apellido del usuario +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +Nombre +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el nombre del usuario +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Iniciales +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese las iniciales del usuario +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Título profesional +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Mencione el título profesional de la persona +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace medskip +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Privado +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard +Dirección +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese la dirección privada del usuario +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Teléfono +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el número de teléfono privado del usuario +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Teléfono Móvil +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el número de teléfono móvil privado del usuario +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Correo Electrónico +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese la dirección de correo electrónico +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Organización +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard +Compañia +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el nombre de la compañia del usuario +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Departamento +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el departamento donde está ubicado el usuario +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Ciudad +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingresa el nombre de la ciudad de donde es la compañia +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Código Postal +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el codigo postal de la compañia +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Pais +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el pais en donde reside la compañia +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Dirección +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese la dirección de la compañia +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Teléfono +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el número de telefono del usuario +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +FAX +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el número de fax +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Pager +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Ingrese el número del pager +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/action.png b/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/action.png new file mode 100644 index 0000000000000000000000000000000000000000..21d5e2f82859774e6f5d30a8d77571212a5d8d94 GIT binary patch literal 397 zcmV;80doF{P)|ptMw$qe)|9cp3l8y& z1BG8Hl2zYlf>lgIh&O)}p3jrWe890{2dA4mXtd;M2=V4ZxlsF%I!}vl{U4O@35K{* z+TkvBJ}l~0k^d5yh7foCU^G(0&V(SFE!nX>1 z1swM3k|AW#D2k&srwyE%2?{u8N9$Z$_y>Xa@L#jI6P$`gb)CsmTOMf>H=7Ly%CAwRb5*>sq*K2!wDGwwax7f*>fu zMXOv`(8`V0A~f(jlp#%LhH>6F&-d=U?-tXHQ<7(O?mhqi?_AEgb^H_4({CefZQ+Nl zt<8^`n(D6s$g-NsW~G^2uK0R#@_|&Vch?@Kre3v#!=Xex-v4Z9s5csmwbRwrLU(t2 zb0FZmolfW7@%a7K#l?AX4v_JRTV6 z3rC~P3pr#qW2szP^{qWTcnL}KA-1` z5L&fy6`&|8hM^;bAd|_Tn5MZ}sm;zNva+mbnpQ&BbreOd&aFzid1*6*==2I{AFrA9 zOb*U%0ouXUQnRmynpc7Kn&0|}rGU^Uq{>J8Q>tjN`oP-7@?A{9g=Ag|YM z=vajMo0`Kx^;9W&3VX|jP+tr@+4$@M$V%LckKGz=>c|1dfD?q^P%R*a1?0hT0>zz< zJ73@Legn#YqnwSU?m#ieh2a2_z}k>F%7xBmaF}y23M%-t3(O7_OK@<4Avql8oHIba z=wKB!@QS|;m9CZziVnvr7#3E^MZQ=Aa2!B2z^{R;4r~WZyKFRV&@Ct#VAx<-pu4O5 z>KZZZGD-gjG>HG301Z<2_xC@Be}94W z&(941etlX15I`&-L*0$U8Gim^VEFlif#JtbApQZx-x(Ob1L^PIp%|GB#Q&HW7=8gg z3^bSFKNG~IjEtXv0=p6b0*Hx|jfLSS(6C=13^e>V2>*uSKMV|ifEefy2u5Q6L&7Mb z$;`^Y$iT(`5I`(^tp6FTB@r4x2K|8=@&^h3MrQv;(7%8G2kQgH7080WKrbv_$HV{- zKrH<13=9r(2n%P=p3RV&no2NoK!$(}`}YqRw*UTvF^K=`=YNKMN0=A@0*Hy6RDsJ- z7#pMjAb?mH{t;*JkEwE~$tnE-Rzo3t1_potV*3A&ymSn6EwZ5?_Ftelhz1BC7HmNQ z3TI@1EzA+Y@gEv-Fbg0C0|XEYHWw2UdDvWx925Wn#6nEuffU2S6gko`!xljU1Q5Yg zflVVmLqV1T1Bn43fbd2hE{(ViMFa&v0O1S@WKCc^M+ul!fjJhI{GxB5MH*Bc)S&oJsRDpzPA!c9=04)9g{Dsg!i{NY^{SR3VO8@)&4`*t+_2fGPKmak)s?GxlASMPH c0e}Dl0I565QA{BqJOBUy07*qoM6N<$f;X}fV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/editpaste.png b/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/editpaste.png new file mode 100644 index 0000000000000000000000000000000000000000..636a4c5a0bd715d6437d3713d4b42752d46661ba GIT binary patch literal 990 zcmV<410np0P)qS(`QfKKi5c|M%a! z|Nb){1Zsc8^#3p10Du5u`Nzq#T*k%N=Ki+kz6Z>~@_s5UrSNAmBV-96S<0I_@l3jY26jp6U_e<0U_oy^4W3uquO z&`Lyff#tw~#=;;X!q314H1*G)zX<>V#PaX=UxxobzB2sz3Ut_KppD;w^q(IL{~3YS z3Lp$%W(HwqpaDz_f`a@E92{&6&z`+v00_VonWO*!!a!_<;{TuN&4Uyvc5(1zevm{e z96lFfY{2pIiwd2m8m<6h`Tq;(+^6pu{(SxePhyN916Y584TEX^ z_6-y+-+^BF$H2+S4i;x(VrBpcAeR4Mfd;($0agS9O#grZ`}YR}%!FUS0R9Dx3Xm6o zX$xo%L@~%dfB<4)_zjc*;=jKU1~C5p1(XEZ2Ic?x^9RUh0w*pI&B6i=aG(VM0mSn3 z9mD;5kN+3~(*#@t!|y)~zxn z>mSsFzrPrN@rbZU#xOG_f(&M7X9Wh_U$6m8KmnkGfqYOHFfafF5DQT3E(;?=J}`C| z{=(7$(4(wszM2OQUXB39*8jhMf#LoiB=w&GLjMD&ua6(Ud<6(F0J}kNf50^MxBvhE M07*qoM6N<$g0n-+82|tP literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/list_ogroup.png b/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/list_ogroup.png new file mode 100644 index 0000000000000000000000000000000000000000..e50de8b7152378f7d8d1e792b57123ab3a57abdc GIT binary patch literal 728 zcmV;}0w?{6P)@k0WB<} zRn)G6Afh5_Q}h5Us1_A1iZp^=)TTtsD6I?&A2e#dW^{7qUhf^}{#!&)Q4m4D{W*N_ z9r&M9Yn~TwxDmKrec?qTcxU`QIlm^o;9T&;p0|3aZbFDNQ6VZXw!9`GGw-kXDcepR zS=1}U@(v*?+l5&1UWjGgLS&t8@5KJIMEac|B!umi3QYlc^Z}msfTls#>ilfUJ+t_? zf@c+E8i&fxHEhYhl7=~5ABTxV@OdG}2TB68eG#bZ+-rci@0{FNhWBt)=I*SGwdWnH zc2vwM%`28nN6~$IiDX$|S7FeA&M;_0HfmRhd6C8Mibrk*?gP5Kf9rxf8EZGyD(=)o zhWw!EERgyoqiui|*SBl65UBlve65*+#N2`nCcGV)ll#Y>s^o4_9gV-gG# zhaz!2xs~AuBcYoG+g%B2i!#l7jkLTTo<$X69X8Udd`rT8;j@Yr9FH;E4`@ow9 zg-an`C8h4*Ei+c{w(V_OKNf+f-FAc`n3d+ENG{-0Qg^zd>ZXI?aS%ZET(Em!@H33{ zF`=7b%kxHK!Xg-+Bt2;=ZigF>>Y;t`BYlB^N#%BHuz6QWQZ|+aaty}(V6y_!+Ct@s2#94xvEnx zrCu%)&SNu#w8~YFlk#5!lsz&lfs{WKuEdwR_erVJ#y=JOPx}gPAq|};qOmpr0000< KMNUMnLSTZJG*kZo literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/mailto.png b/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/mailto.png new file mode 100644 index 0000000000000000000000000000000000000000..92d602c58b1a5da07ccf891badd63550bfbbc142 GIT binary patch literal 635 zcmV->0)+jEP)G|hO+?ymEj&Qy&Nho9l3NVDua|65!yIC-X%YCdux0jCdQbW*^aZ)Zs)| z2S1BGTGtfVJ3d=$&sfjpNnRR8*O!SkH_<6E+lDdo(o1=^q^=lm0;NeGW5R7bw`?v^d?}N42_2 zr3Ahk2|9oc)L~aGd_RWaTPUiWz0kwr>OZJb(*e-i0pb1FUZuQT%@fS_L V)zeR5l9vDg002ovPDHLkV1nDv6bk?V literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/rocket.png b/trunk/gosa-plugins/addressbook/help/es/lyx-source/images/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000z2EII1t zv6KTi=X_hKK;(-m!mIc1))F1wys>JuP=N?_93LETG$)Z2s+CVG8ad~v*X!JW@Tjn9 zS=DNFJCTS`tJM$@L|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr + + + + + +\begin_inset Text + +\layout Standard + +Nom +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le nom de l'utilisateur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Prénom +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le prénom de l'utilisateur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Initiales +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez la première lettre du prénom et du nom +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Titre personnel +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquer le genre de l'utilisateur (Madame, Monsieur, Mademoiselle) +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top medskip +Privé +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez l'adresse privée et complète de l'utilisateur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Téléphone +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez son numéro de téléphone privé +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Portable +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez son numéro de téléphone mobile privé +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Email +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez son adresse Email +\end_inset + + + + +\end_inset + + +\layout Subsubsection + +Organisation +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Société +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le nom de la société dont fait partie l'utilisateur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Département +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le nom du département où l'utilisateur doit être enregistré +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Ville +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez la ville où la société est localisée +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Code postal +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le code postal de la société +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Pays +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le pays où la société est implantée +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez l'adresse de la société +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Téléphone +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le numéro professionnel de l'utilisateur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +FAX +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le numéro de fax de l'utilisateur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Bip +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le numéro de Bip de l'utilisateur +\end_inset + + + + +\end_inset + + +\layout Subsection + +Modifier une entrée +\layout Standard + +La modification des entrées ne peut s'oppérer que sur des entrées créées + via le carnet d'adresses. +\layout Standard + +Il suffit de cliquer sur 'Modifier une entrée' pour que l'interface +\shape italic +création d'une nouvelle entrée +\shape default + s'affiche. + Les données de l'utilisateur sont alors modifiables. +\layout Standard + +Pour enregistrer les modifications, cliquez sur le bouton Enregistrer, pour + sauvegarder sans les modifications, cliquez sur le bouton Annuler. +\layout Subsection + +Supprimer une entrée +\layout Standard + +La suppression des entrées ne peut s'oppérer que sur des entrées créées + via le carnet d'adresses. +\layout Standard + +Pour supprimer un utilisateur cliquez sur le bouton Supprimer. + +\layout Standard + +\the_end diff --git a/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/action.png b/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/action.png new file mode 100644 index 0000000000000000000000000000000000000000..21d5e2f82859774e6f5d30a8d77571212a5d8d94 GIT binary patch literal 397 zcmV;80doF{P)|ptMw$qe)|9cp3l8y& z1BG8Hl2zYlf>lgIh&O)}p3jrWe890{2dA4mXtd;M2=V4ZxlsF%I!}vl{U4O@35K{* z+TkvBJ}l~0k^d5yh7foCU^G(0&V(SFE!nX>1 z1swM3k|AW#D2k&srwyE%2?{u8N9$Z$_y>Xa@L#jI6P$`gb)CsmTOMf>H=7Ly%CAwRb5*>sq*K2!wDGwwax7f*>fu zMXOv`(8`V0A~f(jlp#%LhH>6F&-d=U?-tXHQ<7(O?mhqi?_AEgb^H_4({CefZQ+Nl zt<8^`n(D6s$g-NsW~G^2uK0R#@_|&Vch?@Kre3v#!=Xex-v4Z9s5csmwbRwrLU(t2 zb0FZmolfW7@%a7K#l?AX4v_JRTV6 z3rC~P3pr#qW2szP^{qWTcnL}KA-1` z5L&fy6`&|8hM^;bAd|_Tn5MZ}sm;zNva+mbnpQ&BbreOd&aFzid1*6*==2I{AFrA9 zOb*U%0ouXUQnRmynpc7Kn&0|}rGU^Uq{>J8Q>tjN`oP-7@?A{9g=Ag|YM z=vajMo0`Kx^;9W&3VX|jP+tr@+4$@M$V%LckKGz=>c|1dfD?q^P%R*a1?0hT0>zz< zJ73@Legn#YqnwSU?m#ieh2a2_z}k>F%7xBmaF}y23M%-t3(O7_OK@<4Avql8oHIba z=wKB!@QS|;m9CZziVnvr7#3E^MZQ=Aa2!B2z^{R;4r~WZyKFRV&@Ct#VAx<-pu4O5 z>KZZZGD-gjG>HG301Z<2_xC@Be}94W z&(941etlX15I`&-L*0$U8Gim^VEFlif#JtbApQZx-x(Ob1L^PIp%|GB#Q&HW7=8gg z3^bSFKNG~IjEtXv0=p6b0*Hx|jfLSS(6C=13^e>V2>*uSKMV|ifEefy2u5Q6L&7Mb z$;`^Y$iT(`5I`(^tp6FTB@r4x2K|8=@&^h3MrQv;(7%8G2kQgH7080WKrbv_$HV{- zKrH<13=9r(2n%P=p3RV&no2NoK!$(}`}YqRw*UTvF^K=`=YNKMN0=A@0*Hy6RDsJ- z7#pMjAb?mH{t;*JkEwE~$tnE-Rzo3t1_potV*3A&ymSn6EwZ5?_Ftelhz1BC7HmNQ z3TI@1EzA+Y@gEv-Fbg0C0|XEYHWw2UdDvWx925Wn#6nEuffU2S6gko`!xljU1Q5Yg zflVVmLqV1T1Bn43fbd2hE{(ViMFa&v0O1S@WKCc^M+ul!fjJhI{GxB5MH*Bc)S&oJsRDpzPA!c9=04)9g{Dsg!i{NY^{SR3VO8@)&4`*t+_2fGPKmak)s?GxlASMPH c0e}Dl0I565QA{BqJOBUy07*qoM6N<$f;X}fV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/edit.png b/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b69f73fe3ed52ad616c4fbc6fca2679a9e8c1d GIT binary patch literal 946 zcmV;j15NyiP)!SI-Y;XMNwpXV^<{*aN^_Vx3-ct!@s`>bqi46H0{3;+Ry)quaBJ~J?XSj52m z8_4<2#PIAXBg0pVFh+JBcH2kypF44Kam~GP<{HE8o0k~?0tl-C3?KJ1F#oy8!0>~O z;s49O3@@au7-U_78NS`V&T#4b=bvxiykyw3V+~N@9|nK`V#22X|HH`)th}5I3|}}H z-hbp{_@d#*AS5Hjz|8QMfrW*Y;mV~eKvn;Mn2iA-fG}L}_r(bYW{z7x&A^!b#K7>5 zM~y+yA(Vmh|4#-!9$tnc2M;mayK^3>l9deH=U0|9du%fr$es{1a&N2Ofs^ zGM)^AQql}8zy!d^%*gQO^-E5WZXgx`Vs3x{Vu3~JPf*mnxX8f5{*Zz3k06l4&hY9x zJA-IYEW@ua9~gfB`pNL=<0l3tMkZjIVT8Gy7a)M(Uib&{(%&CIhBN~M2QR~y=T8~l z2wO97{9|VL`T7k|BO}8A2nZd^1@wcFmECVAWI1(5D0*HkP2*F7gh&7GP8B`2R8JGoxfHwbT z_$|Q8z{<`B^!tAXHa2DkW@Z)!E-p@{@TgdZTeog9+`n_30U&@_?%sL$VbzK?JRm1B zG6Q1=6j*LX{7Jy;#>&w?K3pF07*qoM6N<$g5Dym0RR91 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/editdelete.png b/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/editdelete.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0d29d760d37e78d0ce975bc20f681369335a84 GIT binary patch literal 892 zcmV-?1B3jDP)g`JI!TT@Mjg8>Qr2O9R{*FT28e;63<-ha%%!_CQc_rdf1PoBLDWoKtU zfUFiEfS4Gt07gbe2B1X@j7^5sJtOdUV~VRZq>b|#=V{`~&KplhJP@aqRKFhBof zc=!A{11l>V!>JQT;c5W_2;qW%e;F9ApJHIRd6wZHkoyPdk3X!e3}5cuV_@nkVqo37 zj)9en8|W=o24-evxHf zQ|=hUZ*4OMCNXJXAR}B05I_h6B$XK$J1ZC%UVmixYh=Ojk6W05_3RA>VINlp z_H95HadJUzN4NkWfZ(yfa%2Ys>(mYgh8J%benloTd|tSd;cM?KhW~v049u@yF$fgr zGBCY*!SEj#jmQ8XfDm3Vb7Ek0@?-cfqr&hjr4XDSe*5||d|17afvc>5;cI#p!#`f2 zVZgM3>;-@TVu7V=Zb3c{w_fL{F1!2R_X0}Bf)N+1FR z5X;9;pT4$rPX5Eh!~)F+|A0PZ0&4yTHsC)rXZ#0q{sT2LF?{(1OqNgp5MTgah5&9K SO7D080000qS(`QfKKi5c|M%a! z|Nb){1Zsc8^#3p10Du5u`Nzq#T*k%N=Ki+kz6Z>~@_s5UrSNAmBV-96S<0I_@l3jY26jp6U_e<0U_oy^4W3uquO z&`Lyff#tw~#=;;X!q314H1*G)zX<>V#PaX=UxxobzB2sz3Ut_KppD;w^q(IL{~3YS z3Lp$%W(HwqpaDz_f`a@E92{&6&z`+v00_VonWO*!!a!_<;{TuN&4Uyvc5(1zevm{e z96lFfY{2pIiwd2m8m<6h`Tq;(+^6pu{(SxePhyN916Y584TEX^ z_6-y+-+^BF$H2+S4i;x(VrBpcAeR4Mfd;($0agS9O#grZ`}YR}%!FUS0R9Dx3Xm6o zX$xo%L@~%dfB<4)_zjc*;=jKU1~C5p1(XEZ2Ic?x^9RUh0w*pI&B6i=aG(VM0mSn3 z9mD;5kN+3~(*#@t!|y)~zxn z>mSsFzrPrN@rbZU#xOG_f(&M7X9Wh_U$6m8KmnkGfqYOHFfafF5DQT3E(;?=J}`C| z{=(7$(4(wszM2OQUXB39*8jhMf#LoiB=w&GLjMD&ua6(Ud<6(F0J}kNf50^MxBvhE M07*qoM6N<$g0n-+82|tP literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/list_ogroup.png b/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/list_ogroup.png new file mode 100644 index 0000000000000000000000000000000000000000..e50de8b7152378f7d8d1e792b57123ab3a57abdc GIT binary patch literal 728 zcmV;}0w?{6P)@k0WB<} zRn)G6Afh5_Q}h5Us1_A1iZp^=)TTtsD6I?&A2e#dW^{7qUhf^}{#!&)Q4m4D{W*N_ z9r&M9Yn~TwxDmKrec?qTcxU`QIlm^o;9T&;p0|3aZbFDNQ6VZXw!9`GGw-kXDcepR zS=1}U@(v*?+l5&1UWjGgLS&t8@5KJIMEac|B!umi3QYlc^Z}msfTls#>ilfUJ+t_? zf@c+E8i&fxHEhYhl7=~5ABTxV@OdG}2TB68eG#bZ+-rci@0{FNhWBt)=I*SGwdWnH zc2vwM%`28nN6~$IiDX$|S7FeA&M;_0HfmRhd6C8Mibrk*?gP5Kf9rxf8EZGyD(=)o zhWw!EERgyoqiui|*SBl65UBlve65*+#N2`nCcGV)ll#Y>s^o4_9gV-gG# zhaz!2xs~AuBcYoG+g%B2i!#l7jkLTTo<$X69X8Udd`rT8;j@Yr9FH;E4`@ow9 zg-an`C8h4*Ei+c{w(V_OKNf+f-FAc`n3d+ENG{-0Qg^zd>ZXI?aS%ZET(Em!@H33{ zF`=7b%kxHK!Xg-+Bt2;=ZigF>>Y;t`BYlB^N#%BHuz6QWQZ|+aaty}(V6y_!+Ct@s2#94xvEnx zrCu%)&SNu#w8~YFlk#5!lsz&lfs{WKuEdwR_erVJ#y=JOPx}gPAq|};qOmpr0000< KMNUMnLSTZJG*kZo literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/mailto.png b/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/mailto.png new file mode 100644 index 0000000000000000000000000000000000000000..92d602c58b1a5da07ccf891badd63550bfbbc142 GIT binary patch literal 635 zcmV->0)+jEP)G|hO+?ymEj&Qy&Nho9l3NVDua|65!yIC-X%YCdux0jCdQbW*^aZ)Zs)| z2S1BGTGtfVJ3d=$&sfjpNnRR8*O!SkH_<6E+lDdo(o1=^q^=lm0;NeGW5R7bw`?v^d?}N42_2 zr3Ahk2|9oc)L~aGd_RWaTPUiWz0kwr>OZJb(*e-i0pb1FUZuQT%@fS_L V)zeR5l9vDg002ovPDHLkV1nDv6bk?V literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/rocket.png b/trunk/gosa-plugins/addressbook/help/fr/lyx-source/images/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000z2EII1t zv6KTi=X_hKK;(-m!mIc1))F1wys>JuP=N?_93LETG$)Z2s+CVG8ad~v*X!JW@Tjn9 zS=DNFJCTS`tJM$@L|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr diff --git a/trunk/gosa-plugins/addressbook/html/getvcard.php b/trunk/gosa-plugins/addressbook/html/getvcard.php new file mode 100644 index 000000000..919f1b3b7 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/html/getvcard.php @@ -0,0 +1,170 @@ +get_ldap_link(); +$ldap->cat(base64_decode(validate($_GET['dn']))); + +/* + * Generate vcard for specified IDs + */ +while ($attrs= $ldap->fetch()){ + /* Header / Name */ + echo "BEGIN:VCARD\n"; + echo "VERSION:3.0\n"; + echo "FN:".preg_replace('/,/', '\\,', $attrs['cn'][0])."\n"; + + /* Assemble titles for N attribute */ + $titles= ""; + if (isset($attrs['personalTitle'])){ + $titles= $attrs['personalTitle'][0]; + } + if (isset($attrs['academicTitle'])){ + if ($titles != ""){ + $titles.= ",".$attrs['academicTitle'][0]; + } else { + $titles= $attrs['academicTitle'][0]; + } + } + echo "N:".$attrs['sn'][0].";".$attrs['givenName'][0].";;;$titles\n"; + + /* Generate random UID */ + $uid= ""; + srand(make_seed()); + $chars= '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + for ($i= 0; $i<16; $i++){ + $uid.= $chars[rand(0, strlen($chars)-1)]; + } + echo "UID:$uid\n"; + + /* Mail addresses */ + if (isset($attrs['mail'][0])){ + echo "EMAIL;TYPE=internet,pref:".$attrs['mail'][0]."\n"; + if (isset($attrs['gosaMailAlternateAddress'])){ + for ($i= 0; $i<$attrs['gosaMailAlternateAddress']['count']; $i++){ + echo "EMAIL;TYPE=internet:". + $attrs['gosaMailAlternateAddress'][$i]."\n"; + } + } + } + + /* Export date */ + echo "REV:".date("Y-m-d")."\n"; + echo "CLASS:PUBLIC\n"; + + /* Fill address */ + if (isset($attrs['homePostalAddress'])){ + @list($street,$town,$country)= preg_split('/\n/', $attrs['homePostalAddress'][0]); + echo "ADR;TYPE=home:;;".trim($street).";".trim($town).";;;". + trim($country)."\n"; + } + if (isset($attrs['postalAddress'])){ + @list($street,$town,$country)= preg_split('/\n/', $attrs['postalAddress'][0]); + echo "ADR;TYPE=work,pref:;;".trim($street).";".trim($town).";;;". + trim($country)."\n"; + } + + /* Telephone numbers */ + if (isset($attrs['homePhone'])){ + echo "TEL;TYPE=home:".$attrs['homePhone'][0]."\n"; + } + if (isset($attrs['telephoneNumber'])){ + echo "TEL;TYPE=work,pref:".$attrs['telephoneNumber'][0]."\n"; + } + if (isset($attrs['mobile'])){ + echo "TEL;TYPE=cell:".$attrs['mobile'][0]."\n"; + } + if (isset($attrs['pager'])){ + echo "TEL;TYPE=pager:".$attrs['pager'][0]."\n"; + } + + /* Set organization */ + if (isset($attrs['o'])){ + echo "ORG:".$attrs['o'][0]."\n"; + } + + echo "NOTE:Exported by GOsa - https://gosa.gonicus.de\n"; + echo "SORT-STRING:".$attrs['sn'][0]."\n"; + if (isset($attrs['labeledURI'][0])){ + echo "URL:".$attrs['labeledURI'][0]."\n"; + } + + /* Add user certificate */ +#if (isset($attrs['userCertificate;binary'])){ +# $cert= $ldap->get_attribute($ldap->getDN(), "userCertificate;binary"); +# $cert= preg_replace('/\r\n/', chr(10).' ', chunk_split(base64_encode($cert))); +# echo "KEY;ENCODING=b:".preg_replace('/\n $/', '', $cert)."\n"; +#} + + /* Add picture */ + if (isset($attrs['jpegPhoto'])){ + $photodata= $ldap->get_attribute($ldap->getDN(), "jpegPhoto"); + $photodata= preg_replace('/\r\n/', chr(10).' ', chunk_split(base64_encode($photodata))); + echo "PHOTO;ENCODING=b;TYPE=JPEG:".preg_replace('/\n $/', '', $photodata)."\n"; + } + + /* Day of birth */ + if (isset($attrs['dayOfBirth'][0])){ + echo "BDAY:".$attrs['dayOfBirth'][0]."\n"; + } + + echo "END:VCARD\n\n"; +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/addressbook/html/images/addr_company.png b/trunk/gosa-plugins/addressbook/html/images/addr_company.png new file mode 100644 index 0000000000000000000000000000000000000000..80a173d72c59099d289b96df879934ade4cf0942 GIT binary patch literal 1818 zcmV+#2j%#QP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ?kV!;ARCwBAWIzF83=DE{K$@9>;rkD623A%}P5~ZA zaZw&CabX^be+>WszIyrU!PCbN4*z+yZw~{*!*f8z{~53VfB-^6q6`cY`HT$m2?EZ2GYeO-H zN6$VnJbLtu;mNa?3@_h&V0iuZ69YRdD+4bt2gBdL3}F1{?|+6LKmRg({`QYSL5iC} zPEk*D!}e1@8Gb%F3^EWPfFK65YDXrfSJb)M$TM8NahKuNox2RL-hE;C@|}U<p)eEr2BBQC&j=LL`Dor~Lc0Ihuv z5I`V<*MHszx;&f&!-#f00M}afl1O-&oZLw;nP=) zER3HS{xfnieEZGL@agkU24)rp25(0l230vhpz9bJxVhMYn2SM3NPvMACYdJFQAXUGCX_xNAktpol5`$h=oB=!=96qhw;>j6AYg}^Dr3bX)!P}e`NUc`!CR& zJPe|OT)^bazyP!Z?CpQQf%xw~hQI&*gYlbppzvp7c>eMe12YpNgR-Kc$OQ%wGk^eM z=9Y3S^m2C4ayD0CU}FQh^ee+lU}XLH`JdtOi;uv_`^;dXD+_cmBLfRFBPdvbE@S|^ z^dB$+-@pID@D!+S$G%expMdefz|6^T@xt-T00G1zDJm!=EWphm#K+8_t0@P}a9bDF=I;sqJ9=&2<`1SigKmf6P z`tbU}KcEj7L75(?iHVt+;n1=33{T(uWcbJOkKyN^pP+aHDQ38S=M}?;Pk+HK{SQ=p z|LJ>%1#1s7@CouUC@QHj>_2sj;rXl2z_9xA79fC_UO%~X;?vjf;8_0)wBh=#2Mnur zTmZU?kAaDa8Dc01urM+_dj5ss{-bw5Lm3%fy#B&4f88mDM|Ynx{QCTe!Oc>gAuZI7 zK}$gxXz;@;00G3r@b%KZ8+Yz}Mq0jJy#fh zfBVj$sv-~c4L`%P*Pj^fJpRCN>BxeW41Zp&00$OF!>1km`=5>L#+@4szy7iV z(=IE}Kvo70Hf9DE78YQzFoH|oA3uIEd1|Ci}22LObLm(Uq8Hi{ruilhX3C$0_7j#(g+Y>0BrR3pJF56A^-pY07*qo IM6N<$g6+Om-2eap literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/html/images/addr_home.png b/trunk/gosa-plugins/addressbook/html/images/addr_home.png new file mode 100644 index 0000000000000000000000000000000000000000..14ee4846f3b616732e393682df7d5fddf9e91c03 GIT binary patch literal 1381 zcmV-r1)BPaP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ=+et)0RCwBA`2YVu0|*lX-dZy#5u*-d9zXywF%Sv< zw;FYF%P`%&s?N|xjCz0oB53eY1_qY@wVLx8)XmBmId~YvI2kH$=`+mH1&ZU-2M|Db zC4ZSS@Ugn6EoV^H^o8iyz-wfY@p(eu4ki1TxLHxvLhUnOP44<&+1qdLVF8<}m zAj9e)yPH8;(Tm~R4+e%G-+jyqFe9xK0@bs@R13OTdR}hGK85mfB z76^zih)eLGrWSwzVuYn(MxY;mW$;O}axq?JU}6wt012}&G5o&qiQy)TJ%iHJl?+_s zA`G7&J!5!~8^)md?I;6_G{iFujG#zi_&D_ngHg_PhI=400Rjlc#jJ8lRt!?Af(#;x zKtHN8yuUBZ@W8N=L1)cgu%TcN$w@J&tvSMQRWFC(;|HLatS|$EI52GF`S`6hS!`ft z0R#|gauZQ4!{PoRY5V6!{IJT&lK}=PjK>#TCUfZZNM?kTJu#TgtaDzhRJT>StgVfp}d)U5CMtjg8^e?`I6mx8E}S z;rPoSr>4p9=RYtMfBj~Vb$4TUDk{csVdXpq15-tX-lhT*ptd~#0R%VrWbIs&dtd+D zeQ4#ZTmdx{1QY^`8Mq$aVvv6Mkb#kzo#Dfq*9_cdb_}e1;tW5(e`EOj=MRIpwkE?I zDK&<(v({YY9|Hvym-f!Emy*TY=8hlP8F|%y}j=t7kz(#uK5FG zpIFevusy?^;Y7I$!?_xFhWn=uFn}^QNdDKaUkty0|AuJ#^XDm$1Yrh%076L>_wV2T z4r7B9gETVyXJlaf^Nm4@>j#6hFdGBIUuIx-{>$(iXduYYzkmON^8g53zkVHFAOQpr ziou^hfBwRNi~$fp zC^@gFsOTpwd&43GM6+|SGw|>MUC#55L0o_tXaO5o4ah)NR#pafc6OK%KVb}j0KzEf z-@Shm-q$-}C8{V$V+qhJQ0|3?5R3%&?A;ZC%m)Y{ltKs>@b~mBXJlmyf)t&f$k6~00000NkvXXu0mjf)1q`s literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/html/images/addr_personal.png b/trunk/gosa-plugins/addressbook/html/images/addr_personal.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf17bc31e035ce4968aa8f94dbfb71e76d97b43 GIT binary patch literal 1372 zcmW+$X;4#V6#YW*5#b?G6cV%~wiT%&c>zI|m;?cZs%&)`S}iX@Ks!{Zf>M?&pixn2 z4GsiQKn1Id-65g{X_Dyzs6LXxkcKh8aK@64TZX6|w>Bxr}Fxt%!x zz%nqvFU-g`iy$G!*mN(}+ek~}1Hz93U}3!o0?5BYF&0f@e0KW)a5pP;AvD{V(<1}I zb_0;S4ggUG0Q1nu?*T}}0Qi6d;3WgVHclGRyxrLPEYQzqPtq&C4nhtQ#avv{kN6T0 zWO)#Rs3E%jhiB+V{)*VbR1*_v5j)k8I`U>t-&gMHl%|kZTHl&x5La;BE$AZo8j6H) zkd3@a*ea=e;pSdXEBaOodlvd26bN*1?u<8#i0IV_PsVjY$Gwt%ZfWK_M1gSu&&?ws zkJqUR6hIE!%K#NOzJUX;*`y{jxkjOQ3+rn=AZ(FT!6UEG9+7gml8TbKPUvB-G_PS` zz~3owTk9oN^H??t4F*X&lgT71&WlyuBfp^)p_*Thf^2CbMRjNUG(pbaotwLe=^X78YOUTSnUCkNH1WO1T2%_0IYA@$?- zo}oyYRh&IDRi{JjSg_%e)-bbPQa|89InbXjyS) z31|kvs5;2#W9VLHk8YsexVfRdsj;Pj-o|JwE}=Ke9n3dRGO$FwzEcjKH7m_g8c!0; zG3a=5lSRLS!kTf{l4PN#`Llg%R{agoornV-FPb)pOYIyxIy>c)Q_B>+HT6gNt`xdR zR(V#RfB)0iYerA7K9U^D$MI~y4@D4XM>Sz;iTJPF{W9K1X$Rw%diI|$1KQ;va=z#{I<|BmNa}dT1IeDAyaX#JQWVC0~GJ2cZziGBSY?LEj zI%t8d)Bk%YDrv^|iprXZrFv4RY=No2E73PvP;#v_G1<-CjA%-hG$@sV+v9bGH|f3{ zV5vc;->=3)PmE}-CEi;iT%M#@?P}!So#Wz{NuC$06zlP-`K6Z@km-x}Yn|)M4jx2TMg^(4XnPe_C@#22xIn$8T~;V)njGyNJJ}XZFeN8@sdJ<* zPG4=h8lT+Sxif;s(oMmUhY+9CjzKuV;l8A?4Ny3yEr9Jgv?SW9y{WQufsPipaxHp| zBjh*j%S%^Ag(xF=s{OV$Qt2x4O0s%*_>kV{7PA!2&y4r?J*2T&gq*AO@k0WB<} zRn)G6Afh5_Q}h5Us1_A1iZp^=)TTtsD6I?&A2e#dW^{7qUhf^}{#!&)Q4m4D{W*N_ z9r&M9Yn~TwxDmKrec?qTcxU`QIlm^o;9T&;p0|3aZbFDNQ6VZXw!9`GGw-kXDcepR zS=1}U@(v*?+l5&1UWjGgLS&t8@5KJIMEac|B!umi3QYlc^Z}msfTls#>ilfUJ+t_? zf@c+E8i&fxHEhYhl7=~5ABTxV@OdG}2TB68eG#bZ+-rci@0{FNhWBt)=I*SGwdWnH zc2vwM%`28nN6~$IiDX$|S7FeA&M;_0HfmRhd6C8Mibrk*?gP5Kf9rxf8EZGyD(=)o zhWw!EERgyoqiui|*SBl65UBlve65*+#N2`nCcGV)ll#Y>s^o4_9gV-gG# zhaz!2xs~AuBcYoG+g%B2i!#l7jkLTTo<$X69X8Udd`rT8;j@Yr9FH;E4`@ow9 zg-an`C8h4*Ei+c{w(V_OKNf+f-FAc`n3d+ENG{-0Qg^zd>ZXI?aS%ZET(Em!@H33{ zF`=7b%kxHK!Xg-+Bt2;=ZigF>>Y;t`BYlB^N#%BHuz6QWQZ|+aaty}(V6y_!+Ct@s2#94xvEnx zrCu%)&SNu#w8~YFlk#5!lsz&lfs{WKuEdwR_erVJ#y=JOPx}gPAq|};qOmpr0000< KMNUMnLSTZJG*kZo literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/html/images/phone.png b/trunk/gosa-plugins/addressbook/html/images/phone.png new file mode 100644 index 0000000000000000000000000000000000000000..638ede970e00b88927e9ebb5c5ace5c6905c64fb GIT binary patch literal 3721 zcmV;44tDX0P)w7@rSwuC>?M=T>73k~ovG z<{a1g{lD87-#3@2DnHDZ`9Tx#KfV4Rzz_P0UeYMde-uDKkpD%J{(ILI0h~N}@>N#M zoyMB$Rkf03*>b<%f2!B(eKSkbHC3q9YrNu>KZ+595^`__zDokVpig%iF6x620>&8P zIL1bnTDAJp06g>bGo^*ag}*#{^yrB=F3%bxfZ)6%871`lz3**pZ9Ve*v(J926h#jh zk&6g^X)?O||WG+m)5owf2oikGRVMh$8!`N~Q9PIq`~WUP1^2 zRe}!$%|XpCF5F#fG){OIY`GFEK@~w10jr45%?6d?rYeYn=0BIk2F4hAy)NDdDwPT- zVvNNY^A6xEmjz&qJ!*`J#yl7UP*pTcfe8Us;?ZarKll7|l*BMfvx%exMaAY~ki10- zxd;X|U?$Af3q+y9(07@e$-<|q{f4@%&fr=DcJ z-$x{`D`1TfSv!AO0MBc@e}TckgHV)ph{GVICt(Gr=I*Sue$9v{^1}0p5?PE z1QpafhyhsplU$^8Uja;9pl7_w~{%>a5x~YR!B!FqCz0o0%PT-D*!M{!Fxnx zM*=}};>Rjf6!lzf5ChhIjwM-E?~$LV&TWWo*7v7F>$U zeDRC_#QNF>!{LBok}(=3q-jEyjB?cq3Kop9hrILH$X*P<7~2#9YxB;W`#JGi=zRzQ z?;Jij%Hi@EtZMxznsN`>Xs^DNBG@ve8hi_B#NAAo=lT6ng6bydY{pjs~T zwfp~*v!_qf?G6|YheUBimStq)?O$`uM(nj~YwOhm2lo#z0w5wyYYoPjiLOt3oe%=f zIkGH6j8KkBY_+#&_d0a8TO{d-M!iP2-DZ1po2Q<7iWiq(M1l|kh$fNglJWEt-{sCb?*NnU(5i|tg$)EDNI=x&Zc{xV9654? zPPfNsFhGnY%~G;a29y0LV2~IMlQYF`07s=bHcVWnSDbhF;3pd!lg&-&bo%sq1KO<) ziFYK!l%IOjPx8yZbPt_ghiD9N(_rrYVzZFSjd=g+7@2>EWHpg!!mNCGP>=gT5;orW+murNimh6{IOuS(`T z-F};1yN^+ej{@1y(c0SNPyYB%aS|vQICJ(4Cm(wpBY{#>V&%oNoP6|AR6Wjl?ps|) zBEfnkE?0@F5eA{x8?d&vk!uI}F~(buQ*H#lb^(B(VFqQ+S~EpxC{%_WAX@B;>VbfI zPiNG_;jtoY_d4A3-uH3*ZO6&dz^{DZSNY(t{~E8k?G~PW?)!Y~w?4v0KK5aL*}wiQAN}Y@II!;;{_U&(!e>77Ic8^SSTVGFUDj4s3YC@I76b_XOt_(y-n;cKtuTaTS&bMri({KUP~W~zMa(MOqU%+SLlD81f*<@NIfgb)ep z0>%VH~z?KUngBaxxs?Nh7Qh%03ln@czs z$kZ`2Q)hm@!Ra$Ytn<{G4eE_DXU}DX;FzDArxuslSl?uJVGgUp*7hc)NFW4^&(&5D zB5U_u1VELhqA~`MYtF9I=)|=`C=7Wx9Mb8xNk(PVLa*KBgTL`X-t*3P)9QBk>EmzW z_kZt`+O02D~zpvlx{ngyu9F=Mfmt{EbaGAUC?mVcn zxw*x`g9mv3J@@e7gZC4~F~$hP;RsZS;}U6_;=H32S&S{=vaARbEm3T7Nk-5>WFruR z^BE#SrC!Hqpg$Z@wh^aaJc})r7!5~6*5I65Yj@fQZ@%$HKfMne_TCe`2Ms&izu?Zq zs1eB0lr$Mpip#|17*O!aO)tNRH@xx3SwFwZ7ryWXUVFzKyylL(ICbh2U;fwo_=z|D zIIq6_b{_irH+b-&hxpkOKf}uoAK@$a-N)mPe}_uB1R*~`uY5z7=*b!P0p{bqIeo{ zopP9i4Jkq~HgddH6(zTry~2{`9wvMggT z7_hLoFxdxoV&LLDj$tquf*J;$4x{0KxLigJC|2Xkx|Ud?2V}&(dB*0vd8P77>iX#>Ohn-As}?1P21f+9MM$bo$JTkuhej zQmJs}>{*Pp%+JqZtYxNBCCeQBVINXhURmMPcTe%UyYAvUC(jUqP_9;x!o@LGHyh=r zU=_d+l>rrkcuXW%V+i zhytbv>;(yem_P`ESb>mRq9G89;3gjn8cZGsYd}=!^}BeloIAUWAIIT9P(ORa4KK?9 ztgmlW#Yn{%OJpt1InJJ2CW<1~*Ei_(hYXXHcB_T=j_a=Xw-IsEu}n> zz~~6nFoZmy_MS9Nsn%-D&(GtWXKihj?RFbfsn_abu@Z7cV*Dc% zQCOac*oh`pQ7l3z=H#6!W|DpxCtKFmRv8Wl%r7nw+ZZvRK`Rpgd-v>75j0nW;_Z|C z*-p-8TzB5nXw<21G`RMfgT!%+jAP!(=nKSnwQu8mj=2W(E*AP`@ zb}lEpR;x`C4sjf369Cm}by%%bl9&3iNdfg9-Ma^4?Jn+LhTKA^dI60xsmM6_H8oF) z*5<+@!DZMfMhPSn056_7KXmN~37SZlF1qP4yH+2Npn5_aMN1*(I7@4?|=h6!GGq&{vR=cMwnnyQM1pqX=PLimp{$T0v1 zd>dFkaA4o(4<0-iH5v^&(`cA-rDChqsx6nxwpOdMu(06j^}3cyr6`I@Hi{w}Mb=sy z8EdVz))*0Ej4_hq5XpDef;Y(tCX7Li$GEAs-DSf4s{vrw%jGKf-Orb*j|qG!b=}o=srIXW n=-$1^|GDdj{;vi<^Z@<~K5zJTV3C$`00000NkvXXu0mjf4|+iD literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/html/images/plugin.png b/trunk/gosa-plugins/addressbook/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..69bb68f2fc3d32a1910bf04f6651e93b8891308e GIT binary patch literal 3966 zcmV-^4}tKBP)zuvU>L2^ummql= z1*h6Q_s%`%o_+RNKfn9C))6z~|MPG^Z2?~H$bOv3?|tw4$n%0c&nX%Ot-`VU*m>+b zwgQoWMy1#72BHa7g z%U;s0Ge_I_3`R$G(qcF0G*YyPF=E6d{Ji%635C$tKl{3ubo=^^cQQ71n5ARmG_ym5 zN(iBeX~1a`Tf`;n&*K4ksW57)C)_&E;{O-pG#)V205uRp)iBc(_aezM2)F*#ZSKQ= z`XLn)qAJk>Teto?o!Kt;-FF{(;c-60J3(sHHVi}2XoL``LL^otWmQpC6>3K299fam zYPBe`f}&BJQc5v1uDIfgTZe{*Zs>G6MWfM>R;y*rW|L;KNvqYO(P&7c(X^tG=Z(Bc z(JW}@IYpxthZl}8xo^Kc^5`Q~S(g1yx6_SPXb3EHc{bi^4vjV%MdPB2F3MM~TuHmr zrr+yRRh9JmJ*&!+UbipZUf25lzU%k<^!t6vva*@k8QL>#8(loQ`(N(9d*dlRU}m)2 z?ceG3dc&8$;SD_V?6b6nhH%ayfLWy1>(S}7!9c|0e7feG_^il@Wgj!LsM=b-eA#FW zASjrunQ3=$B8-oZbLjA)l$>g4R4R>xGN7TPQX__n7$eaOGir>kT1{(un!S5=pFeL1 z#Te=JdU2@L;_^5CDo2kU;n%ionLn`V5HdB?6f*&osF8lZjE4>#_FwG>>mMlUKX_;9x`8Ft0qWDoX&=jI!*}>-FXYRWo9Ygcyl2 zGBZ1ih|ur%dGvda((U(o{PFK`d}fxJ<1-vSeAsWl=c^n(yr0i}=F@!tiSIK#JIm}$ zn_jO+S(fz5icU9qrQ7QfW8~4Dj}ldR;DHC`1Ut|UDMLN@Z2nZuI=vnSS%?vzWhqf> z1)>?K&TXdiceg$TxrvaRXK%V7pMAkynqyyLp-c;~ivao_fTWx73!1|chiBL@y5nMZIqF9XU{N4_AY zbjm*K*RD%ekD4wTSanL-0dTW3(|}~53N(v?GDHB>B4S`TGBI*-Wa7z-oIK0Pij2bN z47Cajhn11x!t<4X{35Nq;YT{RSDiR(+PawruTE> zO*f!seCyi};POZ;D;6$ZgwrIXxH-EcUO*ffE=g+ zs^9u;zH--HXp9`0nIg+t96EFmpZS^^I}C6l^)C>WZdLKhwQJM5-eKf~Skb-g?Ob^N ztM2sPxo)>zUVZh|cRu{!ckg;)*Y_WCAu1*&K_lWE7UP_ItEx{K0wDxq3}}p~+MMtJ zqREQ67ykSH@9@#vZf5bwFmHL=n|b(u9;0x>h!ebM;y?;f6;maKNDPrs_34I+s_M_> zKxPHb0w6TOA5S~A8Moj5*IfAS^XZ0?l`CFB^nz$zoYXwuJ1}uL=acMK zU&}$oQ16M~{yUbx=Wq9J|M%_Z0E7@ijIjeX8+Br)5>Ww_gttXjnAfyK-& zDCkTIJ3jHgC66uGga}-E>7~rf%oIrh5yTK@4rdT!y@2kLyFK36jq zE?h{|J{vb(NSQg_bNwH%>yamj22%$QkvAJ0ID8Q2b6g$tQtw)#hGl}OQpU(D&shV& z=l|pyesRm&h&sY0+Z^}x)-E_}@fhcwcOENOuIwI}IyRBO2GFDgYLMX*3W+CH6{-=7 z5v}9aYC2Fy86F{X9`A*IcbXqO^%QH*UdtzM|2$DkidK`%H}Pr+Rztm|wM>Z^8Uq@X zSXL*R1IIiIk1nE7dH!j9DF{JT`&CtaXV30EKi_N(-BzQJVP;~I;xBSyoV9xO9Qv3V zbq37kfYmurmJw0m{s$jq+qK)+cI`GC!pA@MG2V6ky9s5<$}`VE$r0j7IgpS@@Q6z} zF`yEdp#n~o1;Yh`-C*#=JMOq+>Ld}#(q3yQhWLn=6A0sdmJ-(#6+0<(>R+qjR1AuY zWs6qusZW23r=QrvlEq7T>+k(0&gI}iRWJ#OLJxLeN$nKG)%EX*97s8moE;);|F^IH z&9ddo`Qeczfy6`|Vy;G<1oz|n#_`V8UbQ-MZ14dLjmGGb#b~d`@)b+jy6(+feA~rL zJinK{lh4yWevD>wh>6L4WLcJKgF*b&Ha8rglx1Munl&JUC>5Mjycf<~z3N561Gu1y z)tPKHLI9{jG$m+6HP$up07~cV1YW=dDLh#t6WiaMfGh3cxM5+`>&Cx{-Fb&)Dc9ysLNOlVDW5$0ImL9a8D} z`(HK5l2`2pJ;3>OXsN=%se=?Qqi7b443Ch7s=|R)hwXP{N5 zJHyIlFU*5XqhY8QpO7Z2eW1YjbK{A-4`vS%xDL`33dWMfi|Jcn^QEt+>b3dswSU3= z-~3Mw9-5}p>Cqe-=Fr3h&Si)*nBzhz{*%~|5R7xytie%7TZ*%!956Dx;Keym_WPKL ziAGQ(o-hKDieRZ9lo;s1H|aNZCJePi1Sg-HV9&0nxoXRmZ2$Vbw2vR9$Z`Zt6`luh zDM4#=F;n7zV?~==-8o5CG{K#wZzjUqE3dp96}aoJFSGT^t!Px1u2_b54p%pAqbYgj0axz@%+(3$`2rFX zXq-laEMj=^SuT#@;bG1``vhDG1Iz|j$6=*`Ofqr-EJGCvOB67jTjd!2_ z>J3-5k9C=vn!@J=BO}8sShR@Y;UQX$oW^jIR?(t0G(;nBG1O|(8fj8wIS=mG$@p{6 zF?nE;Zl_ZrVpUnWR30KFSu)!>PUsuQW~Zt8C9^Ya z+Ox-LS6wV9N2ZPtQhrSB-1+d*Qz}5B)PF9xUpDLrm=`ET941zYi4!MkLQLdWRK&z^ z>PS73XbAw+^ccdpI9G|$FpDd2evuQb$Q!u<8ly8+X9gzbNZ=r~3zVAknV=3a@eWgc zK7?@7d zEO+7?nWGq6woG&9=yto=!NXG{RlgIWN>#-wSkPY7SVj%KZnq>UpGtx3+HKoVBea?=+MQWG{khM!fEG{yO<<@# zZvn&gf5Y|lM*Tgx_ZMr!^np-+6{zat(#(1Yl__nrSSmK7YNbW%tI@X@+Eu8kd%pHH z%d>);K6pywCl8$B1&0TmnK=@gX7wCzkfDl+cuYNrH&rzeZ>S@RSAu{S5hHacO$>{e znVG1e!PEjkRIOrA%wmYqOjU!LnuZWv=2c9r41rJG`3Y|S`0b}u;8b1HSX=Bx$^w?! z&A7y&6DLl!l@pxdY(U8C>GiSIb^VQmIL*u# z!meZR(k*eTK>^~07ZS6hdW<0z1IUd^aFze4< z|56nA>5f#LIo7UU&l@klV%~W_nfJs$;W7UFzSKmpRBL!YKjnDIuUUUq#?NdB{ix%A Y0U_9P8}LZ$b^rhX07*qoM6N<$f)AOo^8f$< literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/addressbook/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/addressbook/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..fa86e55d0 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,422 @@ +# translation of messages.po to Deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:28+0100\n" +"PO-Revision-Date: 2008-07-28 08:47+0200\n" +"Last-Translator: Jan Wenzel \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/getvcard.php:39 +msgid "Internal error" +msgstr "Interner Fehler" + +#: html/getvcard.php:39 +msgid "Missing parameters!" +msgstr "Fehlende Parameter!" + +#: addons/addressbook/address_info.tpl:18 +#: addons/addressbook/address_edit.tpl:24 +msgid "Personal" +msgstr "Persönlich" + +#: addons/addressbook/address_info.tpl:24 +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:671 +#: addons/addressbook/class_addressbook.inc:681 +#: addons/addressbook/class_addressbook.inc:708 +#: addons/addressbook/contents.tpl:14 +msgid "Name" +msgstr "Name" + +#: addons/addressbook/address_info.tpl:32 +#: addons/addressbook/class_addressbook.inc:832 +#: addons/addressbook/address_edit.tpl:48 +msgid "Initials" +msgstr "Initialien" + +#: addons/addressbook/address_info.tpl:40 +#: addons/addressbook/address_edit.tpl:60 +msgid "Personal title" +msgstr "Titel" + +#: addons/addressbook/address_info.tpl:53 +#: addons/addressbook/address_edit.tpl:74 addons/addressbook/contents.tpl:15 +msgid "Private" +msgstr "Privat" + +#: addons/addressbook/address_info.tpl:59 +#: addons/addressbook/address_info.tpl:155 +#: addons/addressbook/address_edit.tpl:80 +#: addons/addressbook/address_edit.tpl:207 +msgid "Address" +msgstr "Adresse" + +#: addons/addressbook/address_info.tpl:67 +#: addons/addressbook/address_info.tpl:163 +#: addons/addressbook/class_addressbook.inc:689 +#: addons/addressbook/address_edit.tpl:94 +#: addons/addressbook/address_edit.tpl:221 addons/addressbook/contents.tpl:14 +msgid "Phone" +msgstr "Telefon" + +#: addons/addressbook/address_info.tpl:75 +#: addons/addressbook/class_addressbook.inc:698 +#: addons/addressbook/address_edit.tpl:106 addons/addressbook/contents.tpl:15 +msgid "Mobile" +msgstr "Mobiltelefon" + +#: addons/addressbook/address_info.tpl:83 +#: addons/addressbook/class_addressbook.inc:713 +#: addons/addressbook/address_edit.tpl:118 +msgid "Email" +msgstr "Email" + +#: addons/addressbook/address_info.tpl:99 +#: addons/addressbook/address_edit.tpl:134 +msgid "Organizational" +msgstr "Organisationsbezogen" + +#: addons/addressbook/address_info.tpl:109 +#: addons/addressbook/address_edit.tpl:143 +msgid "Company" +msgstr "Firma" + +#: addons/addressbook/address_info.tpl:117 +#: addons/addressbook/class_addressbook.inc:827 +#: addons/addressbook/address_edit.tpl:155 +msgid "Department" +msgstr "Abteilung" + +#: addons/addressbook/address_info.tpl:125 +#: addons/addressbook/address_edit.tpl:167 +msgid "City" +msgstr "Stadt" + +#: addons/addressbook/address_info.tpl:133 +#: addons/addressbook/address_edit.tpl:179 +msgid "Postal code" +msgstr "Postleitzahl" + +#: addons/addressbook/address_info.tpl:141 +#: addons/addressbook/address_edit.tpl:191 +msgid "Country" +msgstr "Land" + +#: addons/addressbook/address_info.tpl:171 +#: addons/addressbook/address_edit.tpl:233 +msgid "FAX" +msgstr "Fax" + +#: addons/addressbook/address_info.tpl:179 +#: addons/addressbook/class_addressbook.inc:701 +#: addons/addressbook/class_addressbook.inc:825 +#: addons/addressbook/address_edit.tpl:246 +msgid "Pager" +msgstr "Pager" + +#: addons/addressbook/remove.tpl:2 +msgid "Warning" +msgstr "Warnung" + +#: addons/addressbook/remove.tpl:6 +msgid "" +"This includes all addressbook data in this entry. Please double check if " +"your really want to do this since there is no way for GOsa to get your data " +"back." +msgstr "" +"Dies umfasst alle in diesem Eintrag gespeicherten Informationen. Überlegen " +"Sie genau, was Sie tun, da es keine Möglichkeit für GOsa gibt, die Daten " +"wiederherzustellen." + +#: addons/addressbook/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Wenn Sie sicher sind, drücken Sie 'Entfernen' um fortzufahren oder " +"'Abbrechen' zum Abbruch." + +#: addons/addressbook/dial.tpl:3 +msgid "Dial connection..." +msgstr "Wähle Verbindung..." + +#: addons/addressbook/dial.tpl:10 addons/addressbook/class_addressbook.inc:444 +#: addons/addressbook/class_addressbook.inc:451 +#: addons/addressbook/class_addressbook.inc:455 +#: addons/addressbook/class_addressbook.inc:571 +msgid "Dial" +msgstr "Wählen" + +#: addons/addressbook/class_addressbook.inc:6 +#: addons/addressbook/class_addressbook.inc:808 +#: addons/addressbook/class_addressbook.inc:814 addons/addressbook/main.inc:43 +msgid "Addressbook" +msgstr "Adressbuch" + +#: addons/addressbook/class_addressbook.inc:7 +msgid "This does something" +msgstr "Dies tut etwas" + +#: addons/addressbook/class_addressbook.inc:174 +#, php-format +msgid "Dial from %s to %s now?" +msgstr "Soll von %s nach %s gewählt werden?" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "Error" +msgstr "Fehler" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "" +"You need to set your personal phone number in order to perform direct dials." +msgstr "" +"Um direkt wählen zu können müssen Sie zuerst Ihre persönliche Telefonnummer " +"einstellen." + +#: addons/addressbook/class_addressbook.inc:206 +#: addons/addressbook/class_addressbook.inc:772 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: addons/addressbook/class_addressbook.inc:214 +#: addons/addressbook/class_addressbook.inc:322 +msgid "Permission" +msgstr "Berechtigung" + +#: addons/addressbook/class_addressbook.inc:461 +#, php-format +msgid "Save contact for %s as vcard" +msgstr "Speichere Kontakt für %s als vcard" + +#: addons/addressbook/class_addressbook.inc:467 +#, php-format +msgid "Send mail to %s" +msgstr "Sende eine Mail an %s" + +#: addons/addressbook/class_addressbook.inc:583 +msgid "global addressbook" +msgstr "dem globalen Adressbuch" + +#: addons/addressbook/class_addressbook.inc:586 +msgid "user database" +msgstr "Fax-Datenbank" + +#: addons/addressbook/class_addressbook.inc:590 +#, php-format +msgid "Contact stored in '%s'" +msgstr "Kontakt wurde in '%s' abgelegt" + +#: addons/addressbook/class_addressbook.inc:592 +msgid "Creating new entry in" +msgstr "Erzeugen eines neuen Eintrags in" + +#: addons/addressbook/class_addressbook.inc:631 +msgid "All" +msgstr "Alle" + +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:675 +#: addons/addressbook/class_addressbook.inc:684 +#: addons/addressbook/class_addressbook.inc:705 +#: addons/addressbook/class_addressbook.inc:818 +msgid "Given name" +msgstr "Vorname" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Work phone" +msgstr "Telefon (Arbeit)" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Cell phone" +msgstr "Mobiltelefon" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "Home phone" +msgstr "Telefon (zu Hause)" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "User ID" +msgstr "Benutzer-ID" + +#: addons/addressbook/class_addressbook.inc:692 +msgid "Telephone number" +msgstr "Telefonnummer" + +#: addons/addressbook/class_addressbook.inc:695 +#: addons/addressbook/contents.tpl:14 +msgid "Fax" +msgstr "Fax" + +#: addons/addressbook/class_addressbook.inc:721 +msgid "" +"Cannot create a unique DN for your entry. Please fill more formular fields." +msgstr "" +"Es kann kein eindeutiger DN für diesen Eintrag erzeugt werden. Füllen Sie " +"bitte weitere Felder aus." + +#: addons/addressbook/class_addressbook.inc:809 +msgid "Addressbook entry acls" +msgstr "ACLs der Adressbuch-Einträge" + +#: addons/addressbook/class_addressbook.inc:813 +msgid "Addons" +msgstr "Zusätzliches" + +#: addons/addressbook/class_addressbook.inc:817 +msgid "Surename" +msgstr "Nachname" + +#: addons/addressbook/class_addressbook.inc:819 +msgid "Telefon number" +msgstr "Telefonnummer" + +#: addons/addressbook/class_addressbook.inc:820 +msgid "Fax number" +msgstr "Faxnummer" + +#: addons/addressbook/class_addressbook.inc:821 +msgid "Mobile number" +msgstr "Mobiltelefon" + +#: addons/addressbook/class_addressbook.inc:822 +msgid "Home phone number" +msgstr "Telefonnummer (privat)" + +#: addons/addressbook/class_addressbook.inc:823 +msgid "User identification" +msgstr "Benutzerkennung" + +#: addons/addressbook/class_addressbook.inc:824 +msgid "Mail address" +msgstr "Mail-Adresse" + +#: addons/addressbook/class_addressbook.inc:826 +msgid "Organization" +msgstr "Organisation" + +#: addons/addressbook/class_addressbook.inc:828 +msgid "Location" +msgstr "Ort" + +#: addons/addressbook/class_addressbook.inc:829 +#: addons/addressbook/class_addressbook.inc:830 +msgid "Postal address" +msgstr "Adresse" + +#: addons/addressbook/class_addressbook.inc:831 +msgid "State" +msgstr "Land" + +#: addons/addressbook/class_addressbook.inc:833 +msgid "Title" +msgstr "Titel" + +#: addons/addressbook/class_addressbook.inc:834 +msgid "Home postal address" +msgstr "Private Adresse" + +#: addons/addressbook/class_addressbook.inc:835 +msgid "Common name" +msgstr "Name" + +#: addons/addressbook/address_edit.tpl:7 +msgid "Choose the department to store entry in" +msgstr "Wählen Sie die Abteilung, in der der Eintrag abgelegt werden soll" + +#: addons/addressbook/address_edit.tpl:30 +msgid "Last name" +msgstr "Nachname" + +#: addons/addressbook/address_edit.tpl:33 +msgid "First name" +msgstr "Vorname" + +#: addons/addressbook/contents.tpl:15 +msgid "Contact" +msgstr "Kontakt" + +#: addons/addressbook/contents.tpl:33 +msgid "Information" +msgstr "Information" + +#: addons/addressbook/contents.tpl:37 +msgid "" +"The telephone list plugin provides list and search facilities for the people " +"in your site. You may want to specify the asterisk [*] like in 'Go*us' to " +"find 'Gonicus'. Use the filters below to narrow down your search." +msgstr "" +"Das Telefonlistenmodul bietet Auflistungs- und Suchfunktionen für die " +"Mitarbeiter Ihrer Organisation. Bei Eingaben wie 'gon' wird dementsprechend " +"sowohl 'Gonicus' als auch 'gone' gefunden." + +#: addons/addressbook/contents.tpl:42 +msgid "Actions" +msgstr "Aktionen" + +#: addons/addressbook/contents.tpl:48 +msgid "Add entry" +msgstr "Eintrag hinzufügen" + +#: addons/addressbook/contents.tpl:54 +msgid "Edit entry" +msgstr "Eintrag bearbeiten" + +#: addons/addressbook/contents.tpl:58 +msgid "Remove entry" +msgstr "Eintrag entfernen" + +#: addons/addressbook/contents.tpl:65 +msgid "Filters" +msgstr "Filter" + +#: addons/addressbook/contents.tpl:75 +msgid "Select to see regular users" +msgstr "Wählen Sie dies, um gewöhnliche Benutzer anzuzeigen" + +#: addons/addressbook/contents.tpl:75 +msgid "Show organizational entries" +msgstr "Zeige Benutzer der Organisation" + +#: addons/addressbook/contents.tpl:76 +msgid "Select to see users in addressbook" +msgstr "Wählen, um Adressbucheinträge zu sehen" + +#: addons/addressbook/contents.tpl:76 +msgid "Show addressbook entries" +msgstr "Zeige Adressbuch-Einträge" + +#: addons/addressbook/contents.tpl:84 +msgid "Display results for department" +msgstr "Zeige Ergebnisse der Abteilung" + +#: addons/addressbook/contents.tpl:87 +msgid "Choose the department the search will be based on" +msgstr "Wählen Sie die Abteilung, auf die die Suchfunktion angewandt wird" + +#: addons/addressbook/contents.tpl:97 +msgid "Match object" +msgstr "Untersuchtes Objekt" + +#: addons/addressbook/contents.tpl:100 +msgid "Choose the object that will be searched in" +msgstr "Wählen Sie das Objekt, auf das die Suchfunktion angewandt wird" + +#: addons/addressbook/contents.tpl:109 +msgid "Search for" +msgstr "Suche nach" + +#: addons/addressbook/contents.tpl:112 +msgid "Search string" +msgstr "Suchtext" diff --git a/trunk/gosa-plugins/addressbook/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/addressbook/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..03439a6de --- /dev/null +++ b/trunk/gosa-plugins/addressbook/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,459 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:28+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Internal error" +msgstr "Insertar separador" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Missing parameters!" +msgstr "Parámetro de la aplicación" + +#: addons/addressbook/address_info.tpl:18 +#: addons/addressbook/address_edit.tpl:24 +msgid "Personal" +msgstr "" + +#: addons/addressbook/address_info.tpl:24 +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:671 +#: addons/addressbook/class_addressbook.inc:681 +#: addons/addressbook/class_addressbook.inc:708 +#: addons/addressbook/contents.tpl:14 +msgid "Name" +msgstr "Nombre" + +#: addons/addressbook/address_info.tpl:32 +#: addons/addressbook/class_addressbook.inc:832 +#: addons/addressbook/address_edit.tpl:48 +msgid "Initials" +msgstr "" + +#: addons/addressbook/address_info.tpl:40 +#: addons/addressbook/address_edit.tpl:60 +msgid "Personal title" +msgstr "Título Personal" + +#: addons/addressbook/address_info.tpl:53 +#: addons/addressbook/address_edit.tpl:74 addons/addressbook/contents.tpl:15 +msgid "Private" +msgstr "" + +#: addons/addressbook/address_info.tpl:59 +#: addons/addressbook/address_info.tpl:155 +#: addons/addressbook/address_edit.tpl:80 +#: addons/addressbook/address_edit.tpl:207 +msgid "Address" +msgstr "Dirección" + +#: addons/addressbook/address_info.tpl:67 +#: addons/addressbook/address_info.tpl:163 +#: addons/addressbook/class_addressbook.inc:689 +#: addons/addressbook/address_edit.tpl:94 +#: addons/addressbook/address_edit.tpl:221 addons/addressbook/contents.tpl:14 +msgid "Phone" +msgstr "Teléfono" + +#: addons/addressbook/address_info.tpl:75 +#: addons/addressbook/class_addressbook.inc:698 +#: addons/addressbook/address_edit.tpl:106 addons/addressbook/contents.tpl:15 +msgid "Mobile" +msgstr "Móvil" + +#: addons/addressbook/address_info.tpl:83 +#: addons/addressbook/class_addressbook.inc:713 +#: addons/addressbook/address_edit.tpl:118 +msgid "Email" +msgstr "" + +#: addons/addressbook/address_info.tpl:99 +#: addons/addressbook/address_edit.tpl:134 +msgid "Organizational" +msgstr "" + +#: addons/addressbook/address_info.tpl:109 +#: addons/addressbook/address_edit.tpl:143 +msgid "Company" +msgstr "" + +#: addons/addressbook/address_info.tpl:117 +#: addons/addressbook/class_addressbook.inc:827 +#: addons/addressbook/address_edit.tpl:155 +msgid "Department" +msgstr "Departamento" + +#: addons/addressbook/address_info.tpl:125 +#: addons/addressbook/address_edit.tpl:167 +msgid "City" +msgstr "" + +#: addons/addressbook/address_info.tpl:133 +#: addons/addressbook/address_edit.tpl:179 +msgid "Postal code" +msgstr "Código Postal" + +#: addons/addressbook/address_info.tpl:141 +#: addons/addressbook/address_edit.tpl:191 +msgid "Country" +msgstr "País" + +#: addons/addressbook/address_info.tpl:171 +#: addons/addressbook/address_edit.tpl:233 +msgid "FAX" +msgstr "FAX" + +#: addons/addressbook/address_info.tpl:179 +#: addons/addressbook/class_addressbook.inc:701 +#: addons/addressbook/class_addressbook.inc:825 +#: addons/addressbook/address_edit.tpl:246 +msgid "Pager" +msgstr "Buscapersonas" + +#: addons/addressbook/remove.tpl:2 +msgid "Warning" +msgstr "Aviso" + +#: addons/addressbook/remove.tpl:6 +msgid "" +"This includes all addressbook data in this entry. Please double check if " +"your really want to do this since there is no way for GOsa to get your data " +"back." +msgstr "" + +#: addons/addressbook/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Entonces, si esta seguro, presione Eliminar para continuar o " +"Cancelar para Abortar." + +#: addons/addressbook/dial.tpl:3 +msgid "Dial connection..." +msgstr "" + +#: addons/addressbook/dial.tpl:10 addons/addressbook/class_addressbook.inc:444 +#: addons/addressbook/class_addressbook.inc:451 +#: addons/addressbook/class_addressbook.inc:455 +#: addons/addressbook/class_addressbook.inc:571 +msgid "Dial" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:6 +#: addons/addressbook/class_addressbook.inc:808 +#: addons/addressbook/class_addressbook.inc:814 addons/addressbook/main.inc:43 +msgid "Addressbook" +msgstr "Libreta direcciones" + +#: addons/addressbook/class_addressbook.inc:7 +msgid "This does something" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:174 +#, php-format +msgid "Dial from %s to %s now?" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "Error" +msgstr "Error" + +#: addons/addressbook/class_addressbook.inc:178 +#, fuzzy +msgid "" +"You need to set your personal phone number in order to perform direct dials." +msgstr "Necesita introducir su contraseña actual para continuar." + +#: addons/addressbook/class_addressbook.inc:206 +#: addons/addressbook/class_addressbook.inc:772 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: addons/addressbook/class_addressbook.inc:214 +#: addons/addressbook/class_addressbook.inc:322 +#, fuzzy +msgid "Permission" +msgstr "Permisos" + +#: addons/addressbook/class_addressbook.inc:461 +#, php-format +msgid "Save contact for %s as vcard" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:467 +#, php-format +msgid "Send mail to %s" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:583 +msgid "global addressbook" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:586 +msgid "user database" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:590 +#, php-format +msgid "Contact stored in '%s'" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:592 +msgid "Creating new entry in" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:631 +msgid "All" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:675 +#: addons/addressbook/class_addressbook.inc:684 +#: addons/addressbook/class_addressbook.inc:705 +#: addons/addressbook/class_addressbook.inc:818 +msgid "Given name" +msgstr "Nombre de pila" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Work phone" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Cell phone" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "Home phone" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "User ID" +msgstr "Identificador (ID) de usuario" + +#: addons/addressbook/class_addressbook.inc:692 +#, fuzzy +msgid "Telephone number" +msgstr "Número de teléfono" + +#: addons/addressbook/class_addressbook.inc:695 +#: addons/addressbook/contents.tpl:14 +msgid "Fax" +msgstr "Fax" + +#: addons/addressbook/class_addressbook.inc:721 +msgid "" +"Cannot create a unique DN for your entry. Please fill more formular fields." +msgstr "" + +#: addons/addressbook/class_addressbook.inc:809 +msgid "Addressbook entry acls" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:813 +msgid "Addons" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:817 +msgid "Surename" +msgstr "Apellidos" + +#: addons/addressbook/class_addressbook.inc:819 +msgid "Telefon number" +msgstr "Número de teléfono" + +#: addons/addressbook/class_addressbook.inc:820 +msgid "Fax number" +msgstr "Número de Fax" + +#: addons/addressbook/class_addressbook.inc:821 +msgid "Mobile number" +msgstr "Teléfono móvil" + +#: addons/addressbook/class_addressbook.inc:822 +msgid "Home phone number" +msgstr "Número de teléfono personal" + +#: addons/addressbook/class_addressbook.inc:823 +msgid "User identification" +msgstr "Identificación de Usuario" + +#: addons/addressbook/class_addressbook.inc:824 +msgid "Mail address" +msgstr "Dirección correo electrónico" + +#: addons/addressbook/class_addressbook.inc:826 +msgid "Organization" +msgstr "Organización" + +#: addons/addressbook/class_addressbook.inc:828 +msgid "Location" +msgstr "Localización" + +#: addons/addressbook/class_addressbook.inc:829 +#: addons/addressbook/class_addressbook.inc:830 +msgid "Postal address" +msgstr "Código Postal" + +#: addons/addressbook/class_addressbook.inc:831 +msgid "State" +msgstr "Provincia" + +#: addons/addressbook/class_addressbook.inc:833 +msgid "Title" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:834 +msgid "Home postal address" +msgstr "Dirección Postal personal" + +#: addons/addressbook/class_addressbook.inc:835 +msgid "Common name" +msgstr "" + +#: addons/addressbook/address_edit.tpl:7 +msgid "Choose the department to store entry in" +msgstr "" + +#: addons/addressbook/address_edit.tpl:30 +msgid "Last name" +msgstr "Apellido" + +#: addons/addressbook/address_edit.tpl:33 +msgid "First name" +msgstr "Nombre" + +#: addons/addressbook/contents.tpl:15 +msgid "Contact" +msgstr "" + +#: addons/addressbook/contents.tpl:33 +msgid "Information" +msgstr "Información" + +#: addons/addressbook/contents.tpl:37 +msgid "" +"The telephone list plugin provides list and search facilities for the people " +"in your site. You may want to specify the asterisk [*] like in 'Go*us' to " +"find 'Gonicus'. Use the filters below to narrow down your search." +msgstr "" + +#: addons/addressbook/contents.tpl:42 +msgid "Actions" +msgstr "Acciones" + +#: addons/addressbook/contents.tpl:48 +msgid "Add entry" +msgstr "" + +#: addons/addressbook/contents.tpl:54 +msgid "Edit entry" +msgstr "Editar entrada" + +#: addons/addressbook/contents.tpl:58 +msgid "Remove entry" +msgstr "" + +#: addons/addressbook/contents.tpl:65 +msgid "Filters" +msgstr "Filtros" + +#: addons/addressbook/contents.tpl:75 +msgid "Select to see regular users" +msgstr "" + +#: addons/addressbook/contents.tpl:75 +msgid "Show organizational entries" +msgstr "" + +#: addons/addressbook/contents.tpl:76 +msgid "Select to see users in addressbook" +msgstr "" + +#: addons/addressbook/contents.tpl:76 +msgid "Show addressbook entries" +msgstr "" + +#: addons/addressbook/contents.tpl:84 +msgid "Display results for department" +msgstr "" + +#: addons/addressbook/contents.tpl:87 +msgid "Choose the department the search will be based on" +msgstr "Escoja el departamento base de la búsqueda" + +#: addons/addressbook/contents.tpl:97 +msgid "Match object" +msgstr "" + +#: addons/addressbook/contents.tpl:100 +msgid "Choose the object that will be searched in" +msgstr "" + +#: addons/addressbook/contents.tpl:109 +msgid "Search for" +msgstr "" + +#: addons/addressbook/contents.tpl:112 +msgid "Search string" +msgstr "" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Delete" +#~ msgstr "Eliminar" + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "Permisos" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "No tiene permisos para eliminar este departamento." + +#~ msgid "The required field 'Name' is not set." +#~ msgstr "No se ha asignado ningún valor al campo obligatorio 'Nombre'." + +#~ msgid "The required field 'Given name' is not set." +#~ msgstr "" +#~ "No se ha asignado ningún valor al campo obligatorio 'Nombre de pila'." + +#~ msgid "The field 'Name' contains invalid characters." +#~ msgstr "El campo 'Nombre' no tiene caracteres validos." + +#~ msgid "The field 'Given name' contains invalid characters." +#~ msgstr "El campo 'Nombre de pila' contiene caracteres no validos" + +#~ msgid "The field 'Phone' contains an invalid phone number." +#~ msgstr "El campo 'Teléfono' tiene un número de teléfono no valido." + +#~ msgid "The field 'Fax' contains an invalid phone number." +#~ msgstr "El campo 'Fax' tiene un número de teléfono no valido." + +#~ msgid "The field 'Mobile' contains an invalid phone number." +#~ msgstr "El campo 'Teléfono móvil' contiene un número de teléfono invalido." + +#~ msgid "The field 'Pager' contains an invalid phone number." +#~ msgstr "" +#~ "El campo 'Dispositivo de Búsqueda' contiene un número de teléfono " +#~ "invalido." diff --git a/trunk/gosa-plugins/addressbook/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/addressbook/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..5901a2746 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,419 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:28+0100\n" +"PO-Revision-Date: 2008-07-23 19:57+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: html/getvcard.php:39 +msgid "Internal error" +msgstr "Erreur interne" + +#: html/getvcard.php:39 +msgid "Missing parameters!" +msgstr "Paramètres manquants !" + +#: addons/addressbook/address_info.tpl:18 +#: addons/addressbook/address_edit.tpl:24 +msgid "Personal" +msgstr "Personnel" + +#: addons/addressbook/address_info.tpl:24 +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:671 +#: addons/addressbook/class_addressbook.inc:681 +#: addons/addressbook/class_addressbook.inc:708 +#: addons/addressbook/contents.tpl:14 +msgid "Name" +msgstr "Nom" + +#: addons/addressbook/address_info.tpl:32 +#: addons/addressbook/class_addressbook.inc:832 +#: addons/addressbook/address_edit.tpl:48 +msgid "Initials" +msgstr "Initiales" + +#: addons/addressbook/address_info.tpl:40 +#: addons/addressbook/address_edit.tpl:60 +msgid "Personal title" +msgstr "Titre Personnel" + +#: addons/addressbook/address_info.tpl:53 +#: addons/addressbook/address_edit.tpl:74 addons/addressbook/contents.tpl:15 +msgid "Private" +msgstr "Privé" + +#: addons/addressbook/address_info.tpl:59 +#: addons/addressbook/address_info.tpl:155 +#: addons/addressbook/address_edit.tpl:80 +#: addons/addressbook/address_edit.tpl:207 +msgid "Address" +msgstr "Adresse" + +#: addons/addressbook/address_info.tpl:67 +#: addons/addressbook/address_info.tpl:163 +#: addons/addressbook/class_addressbook.inc:689 +#: addons/addressbook/address_edit.tpl:94 +#: addons/addressbook/address_edit.tpl:221 addons/addressbook/contents.tpl:14 +msgid "Phone" +msgstr "Téléphone" + +#: addons/addressbook/address_info.tpl:75 +#: addons/addressbook/class_addressbook.inc:698 +#: addons/addressbook/address_edit.tpl:106 addons/addressbook/contents.tpl:15 +msgid "Mobile" +msgstr "GSM" + +#: addons/addressbook/address_info.tpl:83 +#: addons/addressbook/class_addressbook.inc:713 +#: addons/addressbook/address_edit.tpl:118 +msgid "Email" +msgstr "Adresse de messagerie" + +#: addons/addressbook/address_info.tpl:99 +#: addons/addressbook/address_edit.tpl:134 +msgid "Organizational" +msgstr "Organisation" + +#: addons/addressbook/address_info.tpl:109 +#: addons/addressbook/address_edit.tpl:143 +msgid "Company" +msgstr "Société" + +#: addons/addressbook/address_info.tpl:117 +#: addons/addressbook/class_addressbook.inc:827 +#: addons/addressbook/address_edit.tpl:155 +msgid "Department" +msgstr "Département" + +#: addons/addressbook/address_info.tpl:125 +#: addons/addressbook/address_edit.tpl:167 +msgid "City" +msgstr "Ville" + +#: addons/addressbook/address_info.tpl:133 +#: addons/addressbook/address_edit.tpl:179 +msgid "Postal code" +msgstr "Code postal" + +#: addons/addressbook/address_info.tpl:141 +#: addons/addressbook/address_edit.tpl:191 +msgid "Country" +msgstr "Pays" + +#: addons/addressbook/address_info.tpl:171 +#: addons/addressbook/address_edit.tpl:233 +msgid "FAX" +msgstr "FAX" + +#: addons/addressbook/address_info.tpl:179 +#: addons/addressbook/class_addressbook.inc:701 +#: addons/addressbook/class_addressbook.inc:825 +#: addons/addressbook/address_edit.tpl:246 +msgid "Pager" +msgstr "Bip" + +#: addons/addressbook/remove.tpl:2 +msgid "Warning" +msgstr "Avertissement" + +#: addons/addressbook/remove.tpl:6 +msgid "" +"This includes all addressbook data in this entry. Please double check if " +"your really want to do this since there is no way for GOsa to get your data " +"back." +msgstr "" +"Ceci inclut toutes les données du carnet d'adresse situées dans cette " +"entrée. Veuillez vérifier si vous voulez réaliser cette opération, toutes " +"les données seront définitivement perdues, il n'y a pas de moyen pour GOsa " +"de les récupérer." + +#: addons/addressbook/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"D'accord - si vous êtes sur - cliquez sur 'Supprimer' pour continuer ou sur " +"'Annuler' pour abandonner." + +#: addons/addressbook/dial.tpl:3 +msgid "Dial connection..." +msgstr "Appel en cours ..." + +#: addons/addressbook/dial.tpl:10 addons/addressbook/class_addressbook.inc:444 +#: addons/addressbook/class_addressbook.inc:451 +#: addons/addressbook/class_addressbook.inc:455 +#: addons/addressbook/class_addressbook.inc:571 +msgid "Dial" +msgstr "Appeler" + +#: addons/addressbook/class_addressbook.inc:6 +#: addons/addressbook/class_addressbook.inc:808 +#: addons/addressbook/class_addressbook.inc:814 addons/addressbook/main.inc:43 +msgid "Addressbook" +msgstr "Carnet d'adresses" + +#: addons/addressbook/class_addressbook.inc:7 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: addons/addressbook/class_addressbook.inc:174 +#, php-format +msgid "Dial from %s to %s now?" +msgstr "Appeler de %s vers %s maintenant ?" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "Error" +msgstr "Erreur" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "" +"You need to set your personal phone number in order to perform direct dials." +msgstr "" +"Vous n'avez pas de numéro de téléphone personnel indiqué. Veuillez rectifier " +"cela afin de pouvoir faire des appels directs." + +#: addons/addressbook/class_addressbook.inc:206 +#: addons/addressbook/class_addressbook.inc:772 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: addons/addressbook/class_addressbook.inc:214 +#: addons/addressbook/class_addressbook.inc:322 +msgid "Permission" +msgstr "Permissions" + +#: addons/addressbook/class_addressbook.inc:461 +#, php-format +msgid "Save contact for %s as vcard" +msgstr "Enregistrer le contact %s au format vcard" + +#: addons/addressbook/class_addressbook.inc:467 +#, php-format +msgid "Send mail to %s" +msgstr "Envoyer un message à %s" + +#: addons/addressbook/class_addressbook.inc:583 +msgid "global addressbook" +msgstr "Carnet d'adresses général" + +#: addons/addressbook/class_addressbook.inc:586 +msgid "user database" +msgstr "Base de données des utilisateurs" + +#: addons/addressbook/class_addressbook.inc:590 +#, php-format +msgid "Contact stored in '%s'" +msgstr "Contact enregistré dans '%s'" + +#: addons/addressbook/class_addressbook.inc:592 +msgid "Creating new entry in" +msgstr "Création d'une nouvelle entrée dans" + +#: addons/addressbook/class_addressbook.inc:631 +msgid "All" +msgstr "Tout" + +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:675 +#: addons/addressbook/class_addressbook.inc:684 +#: addons/addressbook/class_addressbook.inc:705 +#: addons/addressbook/class_addressbook.inc:818 +msgid "Given name" +msgstr "Prénom" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Work phone" +msgstr "Téléphone du bureau" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Cell phone" +msgstr "GSM" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "Home phone" +msgstr "Téléphone personnel" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "User ID" +msgstr "ID de l'utilisateur" + +#: addons/addressbook/class_addressbook.inc:692 +msgid "Telephone number" +msgstr "Numéro de téléphone" + +#: addons/addressbook/class_addressbook.inc:695 +#: addons/addressbook/contents.tpl:14 +msgid "Fax" +msgstr "Fax" + +#: addons/addressbook/class_addressbook.inc:721 +msgid "" +"Cannot create a unique DN for your entry. Please fill more formular fields." +msgstr "" +"Impossible de créer un DN unique pour cette entrée. Veuillez remplir plus de " +"champs." + +#: addons/addressbook/class_addressbook.inc:809 +msgid "Addressbook entry acls" +msgstr "Liste de contrôle d'accès du carnet d'adresses" + +#: addons/addressbook/class_addressbook.inc:813 +msgid "Addons" +msgstr "Extensions" + +#: addons/addressbook/class_addressbook.inc:817 +msgid "Surename" +msgstr "Nom de famille" + +#: addons/addressbook/class_addressbook.inc:819 +msgid "Telefon number" +msgstr "Numéro de téléphone" + +#: addons/addressbook/class_addressbook.inc:820 +msgid "Fax number" +msgstr "Numéro de fax" + +#: addons/addressbook/class_addressbook.inc:821 +msgid "Mobile number" +msgstr "Numéro de GSM" + +#: addons/addressbook/class_addressbook.inc:822 +msgid "Home phone number" +msgstr "Numéro de téléphone privé" + +#: addons/addressbook/class_addressbook.inc:823 +msgid "User identification" +msgstr "Information Utilisateur" + +#: addons/addressbook/class_addressbook.inc:824 +msgid "Mail address" +msgstr "Adresse de messagerie" + +#: addons/addressbook/class_addressbook.inc:826 +msgid "Organization" +msgstr "Entreprise" + +#: addons/addressbook/class_addressbook.inc:828 +msgid "Location" +msgstr "Lieu" + +#: addons/addressbook/class_addressbook.inc:829 +#: addons/addressbook/class_addressbook.inc:830 +msgid "Postal address" +msgstr "Adresse postale" + +#: addons/addressbook/class_addressbook.inc:831 +msgid "State" +msgstr "Département" + +#: addons/addressbook/class_addressbook.inc:833 +msgid "Title" +msgstr "Titre" + +#: addons/addressbook/class_addressbook.inc:834 +msgid "Home postal address" +msgstr "Adresse postale personnelle" + +#: addons/addressbook/class_addressbook.inc:835 +msgid "Common name" +msgstr "Nom complet" + +#: addons/addressbook/address_edit.tpl:7 +msgid "Choose the department to store entry in" +msgstr "Choisissez le département où l'entrée sera stockée" + +#: addons/addressbook/address_edit.tpl:30 +msgid "Last name" +msgstr "Nom de famille" + +#: addons/addressbook/address_edit.tpl:33 +msgid "First name" +msgstr "Prénom" + +#: addons/addressbook/contents.tpl:15 +msgid "Contact" +msgstr "Contact" + +#: addons/addressbook/contents.tpl:33 +msgid "Information" +msgstr "Information" + +#: addons/addressbook/contents.tpl:37 +msgid "" +"The telephone list plugin provides list and search facilities for the people " +"in your site. You may want to specify the asterisk [*] like in 'Go*us' to " +"find 'Gonicus'. Use the filters below to narrow down your search." +msgstr "" +"L'extension gérant les listes de numéros de téléphone permet de les mettre à " +"disposition de vos utilisateurs. Vous pouvez utiliser les [*] dans vos " +"recherches, comme dans 'Go*us' pour trouver 'Gonicus'. Utilisez les filtres " +"ci dessous pour réduire l'étendue de votre recherche." + +#: addons/addressbook/contents.tpl:42 +msgid "Actions" +msgstr "Actions" + +#: addons/addressbook/contents.tpl:48 +msgid "Add entry" +msgstr "Ajouter une entrée" + +#: addons/addressbook/contents.tpl:54 +msgid "Edit entry" +msgstr "Modifier une entrée" + +#: addons/addressbook/contents.tpl:58 +msgid "Remove entry" +msgstr "Supprimer une entrée" + +#: addons/addressbook/contents.tpl:65 +msgid "Filters" +msgstr "Filtres" + +#: addons/addressbook/contents.tpl:75 +msgid "Select to see regular users" +msgstr "Sélectionnez afin d'afficher les utilisateurs habituels" + +#: addons/addressbook/contents.tpl:75 +msgid "Show organizational entries" +msgstr "Afficher les entrées de l'organisation" + +#: addons/addressbook/contents.tpl:76 +msgid "Select to see users in addressbook" +msgstr "" +"Sélectionner pour afficher les utilisateurs présent dans le carnet d'adresse" + +#: addons/addressbook/contents.tpl:76 +msgid "Show addressbook entries" +msgstr "Afficher les entrées du carnet d'adresses" + +#: addons/addressbook/contents.tpl:84 +msgid "Display results for department" +msgstr "Afficher les résultats pour le département" + +#: addons/addressbook/contents.tpl:87 +msgid "Choose the department the search will be based on" +msgstr "Sélectionner le département où sera effectuée la recherche" + +#: addons/addressbook/contents.tpl:97 +msgid "Match object" +msgstr "Objet correspondant" + +#: addons/addressbook/contents.tpl:100 +msgid "Choose the object that will be searched in" +msgstr "Indiquez l'objet dans lequel la recherche sera effectuée" + +#: addons/addressbook/contents.tpl:109 +msgid "Search for" +msgstr "Recherche de" + +#: addons/addressbook/contents.tpl:112 +msgid "Search string" +msgstr "Phrase de recherche" diff --git a/trunk/gosa-plugins/addressbook/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/addressbook/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f02436854 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,454 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:28+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Missing parameters!" +msgstr "Nome applicazione" + +#: addons/addressbook/address_info.tpl:18 +#: addons/addressbook/address_edit.tpl:24 +msgid "Personal" +msgstr "Personale" + +#: addons/addressbook/address_info.tpl:24 +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:671 +#: addons/addressbook/class_addressbook.inc:681 +#: addons/addressbook/class_addressbook.inc:708 +#: addons/addressbook/contents.tpl:14 +msgid "Name" +msgstr "Cognome" + +#: addons/addressbook/address_info.tpl:32 +#: addons/addressbook/class_addressbook.inc:832 +#: addons/addressbook/address_edit.tpl:48 +msgid "Initials" +msgstr "Iniziali" + +#: addons/addressbook/address_info.tpl:40 +#: addons/addressbook/address_edit.tpl:60 +msgid "Personal title" +msgstr "Titolo onorifico" + +#: addons/addressbook/address_info.tpl:53 +#: addons/addressbook/address_edit.tpl:74 addons/addressbook/contents.tpl:15 +msgid "Private" +msgstr "Privato" + +#: addons/addressbook/address_info.tpl:59 +#: addons/addressbook/address_info.tpl:155 +#: addons/addressbook/address_edit.tpl:80 +#: addons/addressbook/address_edit.tpl:207 +msgid "Address" +msgstr "Indirizzo" + +#: addons/addressbook/address_info.tpl:67 +#: addons/addressbook/address_info.tpl:163 +#: addons/addressbook/class_addressbook.inc:689 +#: addons/addressbook/address_edit.tpl:94 +#: addons/addressbook/address_edit.tpl:221 addons/addressbook/contents.tpl:14 +msgid "Phone" +msgstr "Telefono" + +#: addons/addressbook/address_info.tpl:75 +#: addons/addressbook/class_addressbook.inc:698 +#: addons/addressbook/address_edit.tpl:106 addons/addressbook/contents.tpl:15 +msgid "Mobile" +msgstr "Cellulare" + +#: addons/addressbook/address_info.tpl:83 +#: addons/addressbook/class_addressbook.inc:713 +#: addons/addressbook/address_edit.tpl:118 +msgid "Email" +msgstr "Indirizzo email" + +#: addons/addressbook/address_info.tpl:99 +#: addons/addressbook/address_edit.tpl:134 +msgid "Organizational" +msgstr "Organizzazione" + +#: addons/addressbook/address_info.tpl:109 +#: addons/addressbook/address_edit.tpl:143 +msgid "Company" +msgstr "Azienda" + +#: addons/addressbook/address_info.tpl:117 +#: addons/addressbook/class_addressbook.inc:827 +#: addons/addressbook/address_edit.tpl:155 +msgid "Department" +msgstr "Dipartimento" + +#: addons/addressbook/address_info.tpl:125 +#: addons/addressbook/address_edit.tpl:167 +msgid "City" +msgstr "Città" + +#: addons/addressbook/address_info.tpl:133 +#: addons/addressbook/address_edit.tpl:179 +msgid "Postal code" +msgstr "CAP" + +#: addons/addressbook/address_info.tpl:141 +#: addons/addressbook/address_edit.tpl:191 +msgid "Country" +msgstr "Paese" + +#: addons/addressbook/address_info.tpl:171 +#: addons/addressbook/address_edit.tpl:233 +msgid "FAX" +msgstr "FAX" + +#: addons/addressbook/address_info.tpl:179 +#: addons/addressbook/class_addressbook.inc:701 +#: addons/addressbook/class_addressbook.inc:825 +#: addons/addressbook/address_edit.tpl:246 +msgid "Pager" +msgstr "Pager" + +#: addons/addressbook/remove.tpl:2 +msgid "Warning" +msgstr "Attenzione" + +#: addons/addressbook/remove.tpl:6 +msgid "" +"This includes all addressbook data in this entry. Please double check if " +"your really want to do this since there is no way for GOsa to get your data " +"back." +msgstr "" + +#: addons/addressbook/remove.tpl:10 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Quindi - Se sei sicuro - premi Rimuovi per continuare o Annulla per abortire." + +#: addons/addressbook/dial.tpl:3 +msgid "Dial connection..." +msgstr "" + +#: addons/addressbook/dial.tpl:10 addons/addressbook/class_addressbook.inc:444 +#: addons/addressbook/class_addressbook.inc:451 +#: addons/addressbook/class_addressbook.inc:455 +#: addons/addressbook/class_addressbook.inc:571 +msgid "Dial" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:6 +#: addons/addressbook/class_addressbook.inc:808 +#: addons/addressbook/class_addressbook.inc:814 addons/addressbook/main.inc:43 +msgid "Addressbook" +msgstr "Rubrica" + +#: addons/addressbook/class_addressbook.inc:7 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: addons/addressbook/class_addressbook.inc:174 +#, php-format +msgid "Dial from %s to %s now?" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "Error" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:178 +#, fuzzy +msgid "" +"You need to set your personal phone number in order to perform direct dials." +msgstr "Devi specificare la tua 'Password attuale' per procedere." + +#: addons/addressbook/class_addressbook.inc:206 +#: addons/addressbook/class_addressbook.inc:772 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: addons/addressbook/class_addressbook.inc:214 +#: addons/addressbook/class_addressbook.inc:322 +#, fuzzy +msgid "Permission" +msgstr "Permessi" + +#: addons/addressbook/class_addressbook.inc:461 +#, php-format +msgid "Save contact for %s as vcard" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:467 +#, php-format +msgid "Send mail to %s" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:583 +msgid "global addressbook" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:586 +#, fuzzy +msgid "user database" +msgstr "Database" + +#: addons/addressbook/class_addressbook.inc:590 +#, fuzzy, php-format +msgid "Contact stored in '%s'" +msgstr "Rimuovi" + +#: addons/addressbook/class_addressbook.inc:592 +msgid "Creating new entry in" +msgstr "Crea in" + +#: addons/addressbook/class_addressbook.inc:631 +msgid "All" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:675 +#: addons/addressbook/class_addressbook.inc:684 +#: addons/addressbook/class_addressbook.inc:705 +#: addons/addressbook/class_addressbook.inc:818 +msgid "Given name" +msgstr "Nome" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Work phone" +msgstr "Telefono del lavoro" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Cell phone" +msgstr "Cellolare" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "Home phone" +msgstr "Telefono privato" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "User ID" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:692 +#, fuzzy +msgid "Telephone number" +msgstr "Numero di telefono" + +#: addons/addressbook/class_addressbook.inc:695 +#: addons/addressbook/contents.tpl:14 +msgid "Fax" +msgstr "Fax" + +#: addons/addressbook/class_addressbook.inc:721 +msgid "" +"Cannot create a unique DN for your entry. Please fill more formular fields." +msgstr "" + +#: addons/addressbook/class_addressbook.inc:809 +#, fuzzy +msgid "Addressbook entry acls" +msgstr "Mostra contatti della rubrica" + +#: addons/addressbook/class_addressbook.inc:813 +msgid "Addons" +msgstr "Extra" + +#: addons/addressbook/class_addressbook.inc:817 +msgid "Surename" +msgstr "Cognome" + +#: addons/addressbook/class_addressbook.inc:819 +#, fuzzy +msgid "Telefon number" +msgstr "Numero di telefono" + +#: addons/addressbook/class_addressbook.inc:820 +#, fuzzy +msgid "Fax number" +msgstr "Numero di telefono" + +#: addons/addressbook/class_addressbook.inc:821 +#, fuzzy +msgid "Mobile number" +msgstr "Cellulare" + +#: addons/addressbook/class_addressbook.inc:822 +#, fuzzy +msgid "Home phone number" +msgstr "Numero di telefono" + +#: addons/addressbook/class_addressbook.inc:823 +#, fuzzy +msgid "User identification" +msgstr "Amministrazione utenti" + +#: addons/addressbook/class_addressbook.inc:824 +msgid "Mail address" +msgstr "Indirizzo principale" + +#: addons/addressbook/class_addressbook.inc:826 +msgid "Organization" +msgstr "Organizzazione" + +#: addons/addressbook/class_addressbook.inc:828 +msgid "Location" +msgstr "Località" + +#: addons/addressbook/class_addressbook.inc:829 +#: addons/addressbook/class_addressbook.inc:830 +msgid "Postal address" +msgstr "CAP" + +#: addons/addressbook/class_addressbook.inc:831 +msgid "State" +msgstr "Stato" + +#: addons/addressbook/class_addressbook.inc:833 +msgid "Title" +msgstr "Titolo" + +#: addons/addressbook/class_addressbook.inc:834 +msgid "Home postal address" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:835 +msgid "Common name" +msgstr "Nome comune" + +#: addons/addressbook/address_edit.tpl:7 +msgid "Choose the department to store entry in" +msgstr "" + +#: addons/addressbook/address_edit.tpl:30 +#, fuzzy +msgid "Last name" +msgstr "Scegli il tuo numero di telefono personale" + +#: addons/addressbook/address_edit.tpl:33 +#, fuzzy +msgid "First name" +msgstr "Liste di blocco" + +#: addons/addressbook/contents.tpl:15 +msgid "Contact" +msgstr "Contatto" + +#: addons/addressbook/contents.tpl:33 +msgid "Information" +msgstr "Informazioni" + +#: addons/addressbook/contents.tpl:37 +msgid "" +"The telephone list plugin provides list and search facilities for the people " +"in your site. You may want to specify the asterisk [*] like in 'Go*us' to " +"find 'Gonicus'. Use the filters below to narrow down your search." +msgstr "" +"Il plugin della lista telefonica permette di cercare le persone nel sito. " +"Puoi utilizzare l'asterisco [*] come carattere jolly. Usa i filtri sotto per " +"caratterizzaze la ricerca." + +#: addons/addressbook/contents.tpl:42 +msgid "Actions" +msgstr "Azioni" + +#: addons/addressbook/contents.tpl:48 +msgid "Add entry" +msgstr "Aggiungi contatto" + +#: addons/addressbook/contents.tpl:54 +msgid "Edit entry" +msgstr "Modifica contatto" + +#: addons/addressbook/contents.tpl:58 +msgid "Remove entry" +msgstr "Elimina contatto" + +#: addons/addressbook/contents.tpl:65 +msgid "Filters" +msgstr "Filtri" + +#: addons/addressbook/contents.tpl:75 +msgid "Select to see regular users" +msgstr "" + +#: addons/addressbook/contents.tpl:75 +msgid "Show organizational entries" +msgstr "Mostra contatti di organizzazioni" + +#: addons/addressbook/contents.tpl:76 +msgid "Select to see users in addressbook" +msgstr "" + +#: addons/addressbook/contents.tpl:76 +msgid "Show addressbook entries" +msgstr "Mostra contatti della rubrica" + +#: addons/addressbook/contents.tpl:84 +msgid "Display results for department" +msgstr "Mostra risultati per dipartimento" + +#: addons/addressbook/contents.tpl:87 +msgid "Choose the department the search will be based on" +msgstr "Scegli il dipartimento di base per la ricerca" + +#: addons/addressbook/contents.tpl:97 +msgid "Match object" +msgstr "Oggetto corrispondente" + +#: addons/addressbook/contents.tpl:100 +msgid "Choose the object that will be searched in" +msgstr "" + +#: addons/addressbook/contents.tpl:109 +msgid "Search for" +msgstr "Cerca" + +#: addons/addressbook/contents.tpl:112 +msgid "Search string" +msgstr "Ricerca" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Delete" +#~ msgstr "Rimuovi" + +#~ msgid "Address book" +#~ msgstr "Rubrica" + +#, fuzzy +#~ msgid "Removing of addressbook entry '%s' failed." +#~ msgstr "Mostra contatti della rubrica" + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "Permessi" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "" +#~ "Inserire un indirizzo di posta valido nel campo 'Indirizzo principale'." diff --git a/trunk/gosa-plugins/addressbook/locale/messages.po b/trunk/gosa-plugins/addressbook/locale/messages.po new file mode 100644 index 000000000..dc20aaa6a --- /dev/null +++ b/trunk/gosa-plugins/addressbook/locale/messages.po @@ -0,0 +1,406 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:28+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/getvcard.php:39 +msgid "Internal error" +msgstr "" + +#: html/getvcard.php:39 +msgid "Missing parameters!" +msgstr "" + +#: addons/addressbook/address_info.tpl:18 +#: addons/addressbook/address_edit.tpl:24 +msgid "Personal" +msgstr "" + +#: addons/addressbook/address_info.tpl:24 +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:671 +#: addons/addressbook/class_addressbook.inc:681 +#: addons/addressbook/class_addressbook.inc:708 +#: addons/addressbook/contents.tpl:14 +msgid "Name" +msgstr "" + +#: addons/addressbook/address_info.tpl:32 +#: addons/addressbook/class_addressbook.inc:832 +#: addons/addressbook/address_edit.tpl:48 +msgid "Initials" +msgstr "" + +#: addons/addressbook/address_info.tpl:40 +#: addons/addressbook/address_edit.tpl:60 +msgid "Personal title" +msgstr "" + +#: addons/addressbook/address_info.tpl:53 +#: addons/addressbook/address_edit.tpl:74 addons/addressbook/contents.tpl:15 +msgid "Private" +msgstr "" + +#: addons/addressbook/address_info.tpl:59 +#: addons/addressbook/address_info.tpl:155 +#: addons/addressbook/address_edit.tpl:80 +#: addons/addressbook/address_edit.tpl:207 +msgid "Address" +msgstr "" + +#: addons/addressbook/address_info.tpl:67 +#: addons/addressbook/address_info.tpl:163 +#: addons/addressbook/class_addressbook.inc:689 +#: addons/addressbook/address_edit.tpl:94 +#: addons/addressbook/address_edit.tpl:221 addons/addressbook/contents.tpl:14 +msgid "Phone" +msgstr "" + +#: addons/addressbook/address_info.tpl:75 +#: addons/addressbook/class_addressbook.inc:698 +#: addons/addressbook/address_edit.tpl:106 addons/addressbook/contents.tpl:15 +msgid "Mobile" +msgstr "" + +#: addons/addressbook/address_info.tpl:83 +#: addons/addressbook/class_addressbook.inc:713 +#: addons/addressbook/address_edit.tpl:118 +msgid "Email" +msgstr "" + +#: addons/addressbook/address_info.tpl:99 +#: addons/addressbook/address_edit.tpl:134 +msgid "Organizational" +msgstr "" + +#: addons/addressbook/address_info.tpl:109 +#: addons/addressbook/address_edit.tpl:143 +msgid "Company" +msgstr "" + +#: addons/addressbook/address_info.tpl:117 +#: addons/addressbook/class_addressbook.inc:827 +#: addons/addressbook/address_edit.tpl:155 +msgid "Department" +msgstr "" + +#: addons/addressbook/address_info.tpl:125 +#: addons/addressbook/address_edit.tpl:167 +msgid "City" +msgstr "" + +#: addons/addressbook/address_info.tpl:133 +#: addons/addressbook/address_edit.tpl:179 +msgid "Postal code" +msgstr "" + +#: addons/addressbook/address_info.tpl:141 +#: addons/addressbook/address_edit.tpl:191 +msgid "Country" +msgstr "" + +#: addons/addressbook/address_info.tpl:171 +#: addons/addressbook/address_edit.tpl:233 +msgid "FAX" +msgstr "" + +#: addons/addressbook/address_info.tpl:179 +#: addons/addressbook/class_addressbook.inc:701 +#: addons/addressbook/class_addressbook.inc:825 +#: addons/addressbook/address_edit.tpl:246 +msgid "Pager" +msgstr "" + +#: addons/addressbook/remove.tpl:2 +msgid "Warning" +msgstr "" + +#: addons/addressbook/remove.tpl:6 +msgid "" +"This includes all addressbook data in this entry. Please double check if " +"your really want to do this since there is no way for GOsa to get your data " +"back." +msgstr "" + +#: addons/addressbook/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: addons/addressbook/dial.tpl:3 +msgid "Dial connection..." +msgstr "" + +#: addons/addressbook/dial.tpl:10 addons/addressbook/class_addressbook.inc:444 +#: addons/addressbook/class_addressbook.inc:451 +#: addons/addressbook/class_addressbook.inc:455 +#: addons/addressbook/class_addressbook.inc:571 +msgid "Dial" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:6 +#: addons/addressbook/class_addressbook.inc:808 +#: addons/addressbook/class_addressbook.inc:814 addons/addressbook/main.inc:43 +msgid "Addressbook" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:7 +msgid "This does something" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:174 +#, php-format +msgid "Dial from %s to %s now?" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "Error" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "" +"You need to set your personal phone number in order to perform direct dials." +msgstr "" + +#: addons/addressbook/class_addressbook.inc:206 +#: addons/addressbook/class_addressbook.inc:772 +msgid "LDAP error" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:214 +#: addons/addressbook/class_addressbook.inc:322 +msgid "Permission" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:461 +#, php-format +msgid "Save contact for %s as vcard" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:467 +#, php-format +msgid "Send mail to %s" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:583 +msgid "global addressbook" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:586 +msgid "user database" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:590 +#, php-format +msgid "Contact stored in '%s'" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:592 +msgid "Creating new entry in" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:631 +msgid "All" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:675 +#: addons/addressbook/class_addressbook.inc:684 +#: addons/addressbook/class_addressbook.inc:705 +#: addons/addressbook/class_addressbook.inc:818 +msgid "Given name" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Work phone" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Cell phone" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "Home phone" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "User ID" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:692 +msgid "Telephone number" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:695 +#: addons/addressbook/contents.tpl:14 +msgid "Fax" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:721 +msgid "" +"Cannot create a unique DN for your entry. Please fill more formular fields." +msgstr "" + +#: addons/addressbook/class_addressbook.inc:809 +msgid "Addressbook entry acls" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:813 +msgid "Addons" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:817 +msgid "Surename" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:819 +msgid "Telefon number" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:820 +msgid "Fax number" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:821 +msgid "Mobile number" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:822 +msgid "Home phone number" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:823 +msgid "User identification" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:824 +msgid "Mail address" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:826 +msgid "Organization" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:828 +msgid "Location" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:829 +#: addons/addressbook/class_addressbook.inc:830 +msgid "Postal address" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:831 +msgid "State" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:833 +msgid "Title" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:834 +msgid "Home postal address" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:835 +msgid "Common name" +msgstr "" + +#: addons/addressbook/address_edit.tpl:7 +msgid "Choose the department to store entry in" +msgstr "" + +#: addons/addressbook/address_edit.tpl:30 +msgid "Last name" +msgstr "" + +#: addons/addressbook/address_edit.tpl:33 +msgid "First name" +msgstr "" + +#: addons/addressbook/contents.tpl:15 +msgid "Contact" +msgstr "" + +#: addons/addressbook/contents.tpl:33 +msgid "Information" +msgstr "" + +#: addons/addressbook/contents.tpl:37 +msgid "" +"The telephone list plugin provides list and search facilities for the people " +"in your site. You may want to specify the asterisk [*] like in 'Go*us' to " +"find 'Gonicus'. Use the filters below to narrow down your search." +msgstr "" + +#: addons/addressbook/contents.tpl:42 +msgid "Actions" +msgstr "" + +#: addons/addressbook/contents.tpl:48 +msgid "Add entry" +msgstr "" + +#: addons/addressbook/contents.tpl:54 +msgid "Edit entry" +msgstr "" + +#: addons/addressbook/contents.tpl:58 +msgid "Remove entry" +msgstr "" + +#: addons/addressbook/contents.tpl:65 +msgid "Filters" +msgstr "" + +#: addons/addressbook/contents.tpl:75 +msgid "Select to see regular users" +msgstr "" + +#: addons/addressbook/contents.tpl:75 +msgid "Show organizational entries" +msgstr "" + +#: addons/addressbook/contents.tpl:76 +msgid "Select to see users in addressbook" +msgstr "" + +#: addons/addressbook/contents.tpl:76 +msgid "Show addressbook entries" +msgstr "" + +#: addons/addressbook/contents.tpl:84 +msgid "Display results for department" +msgstr "" + +#: addons/addressbook/contents.tpl:87 +msgid "Choose the department the search will be based on" +msgstr "" + +#: addons/addressbook/contents.tpl:97 +msgid "Match object" +msgstr "" + +#: addons/addressbook/contents.tpl:100 +msgid "Choose the object that will be searched in" +msgstr "" + +#: addons/addressbook/contents.tpl:109 +msgid "Search for" +msgstr "" + +#: addons/addressbook/contents.tpl:112 +msgid "Search string" +msgstr "" diff --git a/trunk/gosa-plugins/addressbook/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/addressbook/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b069dbe99 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,424 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005,2006,2007,2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:28+0100\n" +"PO-Revision-Date: 2008-06-09 17:54+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Internal error" +msgstr "Terminal server" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Missing parameters!" +msgstr "Programmanaam" + +#: addons/addressbook/address_info.tpl:18 +#: addons/addressbook/address_edit.tpl:24 +msgid "Personal" +msgstr "Persoonlijk" + +#: addons/addressbook/address_info.tpl:24 +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:671 +#: addons/addressbook/class_addressbook.inc:681 +#: addons/addressbook/class_addressbook.inc:708 +#: addons/addressbook/contents.tpl:14 +msgid "Name" +msgstr "Naam" + +#: addons/addressbook/address_info.tpl:32 +#: addons/addressbook/class_addressbook.inc:832 +#: addons/addressbook/address_edit.tpl:48 +msgid "Initials" +msgstr "Initialen" + +#: addons/addressbook/address_info.tpl:40 +#: addons/addressbook/address_edit.tpl:60 +msgid "Personal title" +msgstr "Aanhef" + +#: addons/addressbook/address_info.tpl:53 +#: addons/addressbook/address_edit.tpl:74 addons/addressbook/contents.tpl:15 +msgid "Private" +msgstr "Privé" + +#: addons/addressbook/address_info.tpl:59 +#: addons/addressbook/address_info.tpl:155 +#: addons/addressbook/address_edit.tpl:80 +#: addons/addressbook/address_edit.tpl:207 +msgid "Address" +msgstr "Adres" + +#: addons/addressbook/address_info.tpl:67 +#: addons/addressbook/address_info.tpl:163 +#: addons/addressbook/class_addressbook.inc:689 +#: addons/addressbook/address_edit.tpl:94 +#: addons/addressbook/address_edit.tpl:221 addons/addressbook/contents.tpl:14 +msgid "Phone" +msgstr "Telefoon" + +#: addons/addressbook/address_info.tpl:75 +#: addons/addressbook/class_addressbook.inc:698 +#: addons/addressbook/address_edit.tpl:106 addons/addressbook/contents.tpl:15 +msgid "Mobile" +msgstr "GSM" + +#: addons/addressbook/address_info.tpl:83 +#: addons/addressbook/class_addressbook.inc:713 +#: addons/addressbook/address_edit.tpl:118 +msgid "Email" +msgstr "E-mail" + +#: addons/addressbook/address_info.tpl:99 +#: addons/addressbook/address_edit.tpl:134 +msgid "Organizational" +msgstr "Bedrijfsmatig" + +#: addons/addressbook/address_info.tpl:109 +#: addons/addressbook/address_edit.tpl:143 +msgid "Company" +msgstr "Bedrijf" + +#: addons/addressbook/address_info.tpl:117 +#: addons/addressbook/class_addressbook.inc:827 +#: addons/addressbook/address_edit.tpl:155 +msgid "Department" +msgstr "Afdeling" + +#: addons/addressbook/address_info.tpl:125 +#: addons/addressbook/address_edit.tpl:167 +msgid "City" +msgstr "Plaats" + +#: addons/addressbook/address_info.tpl:133 +#: addons/addressbook/address_edit.tpl:179 +msgid "Postal code" +msgstr "Postcode" + +#: addons/addressbook/address_info.tpl:141 +#: addons/addressbook/address_edit.tpl:191 +msgid "Country" +msgstr "Land" + +#: addons/addressbook/address_info.tpl:171 +#: addons/addressbook/address_edit.tpl:233 +msgid "FAX" +msgstr "Fax" + +#: addons/addressbook/address_info.tpl:179 +#: addons/addressbook/class_addressbook.inc:701 +#: addons/addressbook/class_addressbook.inc:825 +#: addons/addressbook/address_edit.tpl:246 +msgid "Pager" +msgstr "Pieper" + +#: addons/addressbook/remove.tpl:2 +msgid "Warning" +msgstr "Waarschuwing" + +#: addons/addressbook/remove.tpl:6 +msgid "" +"This includes all addressbook data in this entry. Please double check if " +"your really want to do this since there is no way for GOsa to get your data " +"back." +msgstr "" +"Dit omvat alle adresboek data in dit record. Verzeker uzelf ervan dat dit " +"hetgeen is dat u wenst, aangezien er geen manier voor GOsa is om deze data " +"terug te halen." + +#: addons/addressbook/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Indien u zeker bent drukt u dan 'Verwijderen' om door te gaan of 'Annuleren' " +"om te annuleren." + +#: addons/addressbook/dial.tpl:3 +msgid "Dial connection..." +msgstr "Bel..." + +#: addons/addressbook/dial.tpl:10 addons/addressbook/class_addressbook.inc:444 +#: addons/addressbook/class_addressbook.inc:451 +#: addons/addressbook/class_addressbook.inc:455 +#: addons/addressbook/class_addressbook.inc:571 +msgid "Dial" +msgstr "Kies" + +#: addons/addressbook/class_addressbook.inc:6 +#: addons/addressbook/class_addressbook.inc:808 +#: addons/addressbook/class_addressbook.inc:814 addons/addressbook/main.inc:43 +msgid "Addressbook" +msgstr "Adresboek" + +#: addons/addressbook/class_addressbook.inc:7 +msgid "This does something" +msgstr "Dit doet iets" + +#: addons/addressbook/class_addressbook.inc:174 +#, php-format +msgid "Dial from %s to %s now?" +msgstr "Nu van %s naar %s bellen?" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "Error" +msgstr "Fout" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "" +"You need to set your personal phone number in order to perform direct dials." +msgstr "" +"Er moet een privé telefoonnummer opgegeven zijn om direkt te kunnen bellen" + +#: addons/addressbook/class_addressbook.inc:206 +#: addons/addressbook/class_addressbook.inc:772 +msgid "LDAP error" +msgstr "LDAP fout" + +#: addons/addressbook/class_addressbook.inc:214 +#: addons/addressbook/class_addressbook.inc:322 +#, fuzzy +msgid "Permission" +msgstr "Rechten" + +#: addons/addressbook/class_addressbook.inc:461 +#, php-format +msgid "Save contact for %s as vcard" +msgstr "Sla contact voor %s op als vcard" + +#: addons/addressbook/class_addressbook.inc:467 +#, php-format +msgid "Send mail to %s" +msgstr "Stuur E-mail naar %s" + +#: addons/addressbook/class_addressbook.inc:583 +msgid "global addressbook" +msgstr "globaal adresboek" + +#: addons/addressbook/class_addressbook.inc:586 +msgid "user database" +msgstr "gebruiker database" + +#: addons/addressbook/class_addressbook.inc:590 +#, php-format +msgid "Contact stored in '%s'" +msgstr "Contact opgeslagen in '%s'" + +#: addons/addressbook/class_addressbook.inc:592 +msgid "Creating new entry in" +msgstr "Maak invoer aan in" + +#: addons/addressbook/class_addressbook.inc:631 +msgid "All" +msgstr "Alle" + +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:675 +#: addons/addressbook/class_addressbook.inc:684 +#: addons/addressbook/class_addressbook.inc:705 +#: addons/addressbook/class_addressbook.inc:818 +msgid "Given name" +msgstr "Voornaam" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Work phone" +msgstr "Telefoon werk" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Cell phone" +msgstr "GSM" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "Home phone" +msgstr "Telefoon privé" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "User ID" +msgstr "Gebruikers ID" + +#: addons/addressbook/class_addressbook.inc:692 +msgid "Telephone number" +msgstr "Telefoonnummer" + +#: addons/addressbook/class_addressbook.inc:695 +#: addons/addressbook/contents.tpl:14 +msgid "Fax" +msgstr "Fax" + +#: addons/addressbook/class_addressbook.inc:721 +msgid "" +"Cannot create a unique DN for your entry. Please fill more formular fields." +msgstr "" +"Kan geen unieke DN aanmaken voor uw invoer. Vul a.u.b. meer formulier velden " +"in." + +#: addons/addressbook/class_addressbook.inc:809 +msgid "Addressbook entry acls" +msgstr "Adresboek invoer ACLs" + +#: addons/addressbook/class_addressbook.inc:813 +msgid "Addons" +msgstr "Plugins" + +#: addons/addressbook/class_addressbook.inc:817 +msgid "Surename" +msgstr "Achternaam" + +#: addons/addressbook/class_addressbook.inc:819 +msgid "Telefon number" +msgstr "Telefoonnummer" + +#: addons/addressbook/class_addressbook.inc:820 +msgid "Fax number" +msgstr "FAX nummer" + +#: addons/addressbook/class_addressbook.inc:821 +msgid "Mobile number" +msgstr "GSM nummer" + +#: addons/addressbook/class_addressbook.inc:822 +msgid "Home phone number" +msgstr "Prive nummer" + +#: addons/addressbook/class_addressbook.inc:823 +msgid "User identification" +msgstr "Gebruiker identificatie" + +#: addons/addressbook/class_addressbook.inc:824 +msgid "Mail address" +msgstr "E-mail adres" + +#: addons/addressbook/class_addressbook.inc:826 +msgid "Organization" +msgstr "Organisatie" + +#: addons/addressbook/class_addressbook.inc:828 +msgid "Location" +msgstr "Plaats" + +#: addons/addressbook/class_addressbook.inc:829 +#: addons/addressbook/class_addressbook.inc:830 +msgid "Postal address" +msgstr "Postadres" + +#: addons/addressbook/class_addressbook.inc:831 +msgid "State" +msgstr "Provincie" + +#: addons/addressbook/class_addressbook.inc:833 +msgid "Title" +msgstr "Titel" + +#: addons/addressbook/class_addressbook.inc:834 +msgid "Home postal address" +msgstr "Postadres thuis" + +#: addons/addressbook/class_addressbook.inc:835 +msgid "Common name" +msgstr "Algemene naam" + +#: addons/addressbook/address_edit.tpl:7 +msgid "Choose the department to store entry in" +msgstr "Selecteer de afdeling waarin de invoer bewaard wordt." + +#: addons/addressbook/address_edit.tpl:30 +msgid "Last name" +msgstr "Achternaam" + +#: addons/addressbook/address_edit.tpl:33 +msgid "First name" +msgstr "Voornaam" + +#: addons/addressbook/contents.tpl:15 +msgid "Contact" +msgstr "Contact" + +#: addons/addressbook/contents.tpl:33 +msgid "Information" +msgstr "Informatie" + +#: addons/addressbook/contents.tpl:37 +msgid "" +"The telephone list plugin provides list and search facilities for the people " +"in your site. You may want to specify the asterisk [*] like in 'Go*us' to " +"find 'Gonicus'. Use the filters below to narrow down your search." +msgstr "" +"De telefoonlijst module biedt zoek en weergave mogelijkheden binnen uw " +"organisatie. U kunt een asterisk (*) gebruiken als wildcard. 'Go*us' zal " +"bijvoorbeeld 'Gonicus' vinden. Gebruik de selectie mogelijkheden om uw " +"zoekopdracht verder te verfijnen." + +#: addons/addressbook/contents.tpl:42 +msgid "Actions" +msgstr "Acties" + +#: addons/addressbook/contents.tpl:48 +msgid "Add entry" +msgstr "Invoer toevoegen" + +#: addons/addressbook/contents.tpl:54 +msgid "Edit entry" +msgstr "Invoer bewerken" + +#: addons/addressbook/contents.tpl:58 +msgid "Remove entry" +msgstr "Invoer verwijderen" + +#: addons/addressbook/contents.tpl:65 +msgid "Filters" +msgstr "Filters" + +#: addons/addressbook/contents.tpl:75 +msgid "Select to see regular users" +msgstr "Selecteer om gewone gebruikers te tonen" + +#: addons/addressbook/contents.tpl:75 +msgid "Show organizational entries" +msgstr "Toon gebruikers binnen de organisatie" + +#: addons/addressbook/contents.tpl:76 +msgid "Select to see users in addressbook" +msgstr "Selecteer om gebruikers in het adresboek te zien" + +#: addons/addressbook/contents.tpl:76 +msgid "Show addressbook entries" +msgstr "Toon adresboek regels" + +#: addons/addressbook/contents.tpl:84 +msgid "Display results for department" +msgstr "Toon resultaten voor afdeling" + +#: addons/addressbook/contents.tpl:87 +msgid "Choose the department the search will be based on" +msgstr "Selecteer de afdeling waarbinnen gezocht zal worden" + +#: addons/addressbook/contents.tpl:97 +msgid "Match object" +msgstr "Zoek op" + +#: addons/addressbook/contents.tpl:100 +msgid "Choose the object that will be searched in" +msgstr "Selecteer het object waarbinnen gezocht zal worden" + +#: addons/addressbook/contents.tpl:109 +msgid "Search for" +msgstr "Zoek naar" + +#: addons/addressbook/contents.tpl:112 +msgid "Search string" +msgstr "Zoekstring" diff --git a/trunk/gosa-plugins/addressbook/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/addressbook/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..8d5269f76 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,476 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:28+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Missing parameters!" +msgstr "Parametr aplikacji" + +#: addons/addressbook/address_info.tpl:18 +#: addons/addressbook/address_edit.tpl:24 +msgid "Personal" +msgstr "Osobiste" + +#: addons/addressbook/address_info.tpl:24 +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:671 +#: addons/addressbook/class_addressbook.inc:681 +#: addons/addressbook/class_addressbook.inc:708 +#: addons/addressbook/contents.tpl:14 +msgid "Name" +msgstr "Imię" + +#: addons/addressbook/address_info.tpl:32 +#: addons/addressbook/class_addressbook.inc:832 +#: addons/addressbook/address_edit.tpl:48 +msgid "Initials" +msgstr "Inicjały" + +#: addons/addressbook/address_info.tpl:40 +#: addons/addressbook/address_edit.tpl:60 +msgid "Personal title" +msgstr "Osobisty tytuł" + +#: addons/addressbook/address_info.tpl:53 +#: addons/addressbook/address_edit.tpl:74 addons/addressbook/contents.tpl:15 +msgid "Private" +msgstr "Prywatne" + +#: addons/addressbook/address_info.tpl:59 +#: addons/addressbook/address_info.tpl:155 +#: addons/addressbook/address_edit.tpl:80 +#: addons/addressbook/address_edit.tpl:207 +msgid "Address" +msgstr "Adres" + +#: addons/addressbook/address_info.tpl:67 +#: addons/addressbook/address_info.tpl:163 +#: addons/addressbook/class_addressbook.inc:689 +#: addons/addressbook/address_edit.tpl:94 +#: addons/addressbook/address_edit.tpl:221 addons/addressbook/contents.tpl:14 +msgid "Phone" +msgstr "Telefon" + +#: addons/addressbook/address_info.tpl:75 +#: addons/addressbook/class_addressbook.inc:698 +#: addons/addressbook/address_edit.tpl:106 addons/addressbook/contents.tpl:15 +msgid "Mobile" +msgstr "Komórka" + +#: addons/addressbook/address_info.tpl:83 +#: addons/addressbook/class_addressbook.inc:713 +#: addons/addressbook/address_edit.tpl:118 +msgid "Email" +msgstr "Email" + +#: addons/addressbook/address_info.tpl:99 +#: addons/addressbook/address_edit.tpl:134 +msgid "Organizational" +msgstr "Organizacyjne" + +#: addons/addressbook/address_info.tpl:109 +#: addons/addressbook/address_edit.tpl:143 +msgid "Company" +msgstr "Firma" + +#: addons/addressbook/address_info.tpl:117 +#: addons/addressbook/class_addressbook.inc:827 +#: addons/addressbook/address_edit.tpl:155 +msgid "Department" +msgstr "Departament" + +#: addons/addressbook/address_info.tpl:125 +#: addons/addressbook/address_edit.tpl:167 +msgid "City" +msgstr "Miasto" + +#: addons/addressbook/address_info.tpl:133 +#: addons/addressbook/address_edit.tpl:179 +msgid "Postal code" +msgstr "Kod pocztowy" + +#: addons/addressbook/address_info.tpl:141 +#: addons/addressbook/address_edit.tpl:191 +msgid "Country" +msgstr "Kraj" + +#: addons/addressbook/address_info.tpl:171 +#: addons/addressbook/address_edit.tpl:233 +msgid "FAX" +msgstr "FAX" + +#: addons/addressbook/address_info.tpl:179 +#: addons/addressbook/class_addressbook.inc:701 +#: addons/addressbook/class_addressbook.inc:825 +#: addons/addressbook/address_edit.tpl:246 +msgid "Pager" +msgstr "Pager" + +#: addons/addressbook/remove.tpl:2 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: addons/addressbook/remove.tpl:6 +msgid "" +"This includes all addressbook data in this entry. Please double check if " +"your really want to do this since there is no way for GOsa to get your data " +"back." +msgstr "" +"Operacja odnosi się do wszystkich danych książki adresowej w tym elemencie. " +"Proszę upewnić się że jest to pożądana akcja, gdyż nie będzie możliwości " +"powrotu." + +#: addons/addressbook/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Jeśli jesteś pewien - naciśnij 'Usuń' aby kontynuować lub 'Anuluj' aby " +"anulować." + +#: addons/addressbook/dial.tpl:3 +msgid "Dial connection..." +msgstr "Połączenie dzwonienia..." + +#: addons/addressbook/dial.tpl:10 addons/addressbook/class_addressbook.inc:444 +#: addons/addressbook/class_addressbook.inc:451 +#: addons/addressbook/class_addressbook.inc:455 +#: addons/addressbook/class_addressbook.inc:571 +msgid "Dial" +msgstr "Dzwonienie" + +#: addons/addressbook/class_addressbook.inc:6 +#: addons/addressbook/class_addressbook.inc:808 +#: addons/addressbook/class_addressbook.inc:814 addons/addressbook/main.inc:43 +msgid "Addressbook" +msgstr "Książka adresowa" + +#: addons/addressbook/class_addressbook.inc:7 +msgid "This does something" +msgstr "To robi coś" + +#: addons/addressbook/class_addressbook.inc:174 +#, php-format +msgid "Dial from %s to %s now?" +msgstr "Zadzwonić teraz z '%s' do '%s'?" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "Error" +msgstr "Błąd" + +#: addons/addressbook/class_addressbook.inc:178 +#, fuzzy +msgid "" +"You need to set your personal phone number in order to perform direct dials." +msgstr "" +"Brak ustawionego osobistego numeru telefonu. Proszę uzupełnić aby móc " +"wykonywać bezpośrednie połączenia." + +#: addons/addressbook/class_addressbook.inc:206 +#: addons/addressbook/class_addressbook.inc:772 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: addons/addressbook/class_addressbook.inc:214 +#: addons/addressbook/class_addressbook.inc:322 +#, fuzzy +msgid "Permission" +msgstr "Uprawnienia" + +#: addons/addressbook/class_addressbook.inc:461 +#, php-format +msgid "Save contact for %s as vcard" +msgstr "Zapisz kontakt dla %s jako wizytówka" + +#: addons/addressbook/class_addressbook.inc:467 +#, php-format +msgid "Send mail to %s" +msgstr "Wyślij email do %s" + +#: addons/addressbook/class_addressbook.inc:583 +msgid "global addressbook" +msgstr "Globalna książka adresowa" + +#: addons/addressbook/class_addressbook.inc:586 +msgid "user database" +msgstr "użyj bazy" + +#: addons/addressbook/class_addressbook.inc:590 +#, php-format +msgid "Contact stored in '%s'" +msgstr "Kontakt zachowany w '%s'" + +#: addons/addressbook/class_addressbook.inc:592 +msgid "Creating new entry in" +msgstr "Tworzenie nowego elementu w" + +#: addons/addressbook/class_addressbook.inc:631 +msgid "All" +msgstr "Wszystkie" + +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:675 +#: addons/addressbook/class_addressbook.inc:684 +#: addons/addressbook/class_addressbook.inc:705 +#: addons/addressbook/class_addressbook.inc:818 +msgid "Given name" +msgstr "Imię" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Work phone" +msgstr "Telefon do pracy" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Cell phone" +msgstr "Numer telefonu komórkowego" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "Home phone" +msgstr "Telefon domowy" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "User ID" +msgstr "Identyfikator użytkownika" + +#: addons/addressbook/class_addressbook.inc:692 +#, fuzzy +msgid "Telephone number" +msgstr "Numer telefonu" + +#: addons/addressbook/class_addressbook.inc:695 +#: addons/addressbook/contents.tpl:14 +msgid "Fax" +msgstr "Fax" + +#: addons/addressbook/class_addressbook.inc:721 +msgid "" +"Cannot create a unique DN for your entry. Please fill more formular fields." +msgstr "" +"Nie można utworzyć unikalnego DN dla tego elementu. Proszę wypełnić więcej " +"pól formularza." + +#: addons/addressbook/class_addressbook.inc:809 +#, fuzzy +msgid "Addressbook entry acls" +msgstr "Zapisywanie wpisu książki adresowej nieudane" + +#: addons/addressbook/class_addressbook.inc:813 +msgid "Addons" +msgstr "Dodatki" + +#: addons/addressbook/class_addressbook.inc:817 +msgid "Surename" +msgstr "Nazwisko" + +#: addons/addressbook/class_addressbook.inc:819 +msgid "Telefon number" +msgstr "Numer telefonu" + +#: addons/addressbook/class_addressbook.inc:820 +msgid "Fax number" +msgstr "Numer fax" + +#: addons/addressbook/class_addressbook.inc:821 +msgid "Mobile number" +msgstr "Telefon komórkowy" + +#: addons/addressbook/class_addressbook.inc:822 +msgid "Home phone number" +msgstr "Numer telefonu domowego" + +#: addons/addressbook/class_addressbook.inc:823 +msgid "User identification" +msgstr "Identyfikacja użytkownika" + +#: addons/addressbook/class_addressbook.inc:824 +msgid "Mail address" +msgstr "Adres email" + +#: addons/addressbook/class_addressbook.inc:826 +msgid "Organization" +msgstr "Organizacja" + +#: addons/addressbook/class_addressbook.inc:828 +msgid "Location" +msgstr "Lokalizacja" + +#: addons/addressbook/class_addressbook.inc:829 +#: addons/addressbook/class_addressbook.inc:830 +msgid "Postal address" +msgstr "Adres pocztowy" + +#: addons/addressbook/class_addressbook.inc:831 +msgid "State" +msgstr "Stan" + +#: addons/addressbook/class_addressbook.inc:833 +msgid "Title" +msgstr "Tytuł" + +#: addons/addressbook/class_addressbook.inc:834 +msgid "Home postal address" +msgstr "Adres domowy" + +#: addons/addressbook/class_addressbook.inc:835 +msgid "Common name" +msgstr "Nazwa potoczna" + +#: addons/addressbook/address_edit.tpl:7 +msgid "Choose the department to store entry in" +msgstr "Wybierz departament do przechowania wpisu" + +#: addons/addressbook/address_edit.tpl:30 +msgid "Last name" +msgstr "Nazwisko" + +#: addons/addressbook/address_edit.tpl:33 +msgid "First name" +msgstr "Imię" + +#: addons/addressbook/contents.tpl:15 +msgid "Contact" +msgstr "Kontakt" + +#: addons/addressbook/contents.tpl:33 +msgid "Information" +msgstr "Informacja" + +#: addons/addressbook/contents.tpl:37 +msgid "" +"The telephone list plugin provides list and search facilities for the people " +"in your site. You may want to specify the asterisk [*] like in 'Go*us' to " +"find 'Gonicus'. Use the filters below to narrow down your search." +msgstr "" +"Dodatek lista telefonów udostępnia listę oraz mechanizmy wyszukiwania dla " +"ludzi w firmie. Mozna podawać gwiazdkę [*] np. 'Go*us' aby znależć " +"'Gonicus'. Użyj filtrów poniżej aby zawęzić wyniki wyszukiwania." + +#: addons/addressbook/contents.tpl:42 +msgid "Actions" +msgstr "Akcje" + +#: addons/addressbook/contents.tpl:48 +msgid "Add entry" +msgstr "Dodaj pozycję" + +#: addons/addressbook/contents.tpl:54 +msgid "Edit entry" +msgstr "Edycja pozycji" + +#: addons/addressbook/contents.tpl:58 +msgid "Remove entry" +msgstr "Usuń pozycję" + +#: addons/addressbook/contents.tpl:65 +msgid "Filters" +msgstr "Filtry" + +#: addons/addressbook/contents.tpl:75 +msgid "Select to see regular users" +msgstr "Wybierz aby zobaczyć zwykłych użytkowników" + +#: addons/addressbook/contents.tpl:75 +msgid "Show organizational entries" +msgstr "Pokaż elementy organizacyjne" + +#: addons/addressbook/contents.tpl:76 +msgid "Select to see users in addressbook" +msgstr "Wybierz aby zobaczyć użytkowników w książce adresowej" + +#: addons/addressbook/contents.tpl:76 +msgid "Show addressbook entries" +msgstr "Pokaż elementy książki adresowej" + +#: addons/addressbook/contents.tpl:84 +msgid "Display results for department" +msgstr "Wyświetl wyniki dla departamentu" + +#: addons/addressbook/contents.tpl:87 +msgid "Choose the department the search will be based on" +msgstr "Wybierz departament na którym wyszukiwanie będzie bazować" + +#: addons/addressbook/contents.tpl:97 +msgid "Match object" +msgstr "Dopasuj obiekt" + +#: addons/addressbook/contents.tpl:100 +msgid "Choose the object that will be searched in" +msgstr "Wybierz obiekt w którym będziesz przeszukiwać" + +#: addons/addressbook/contents.tpl:109 +msgid "Search for" +msgstr "Szukaj dla" + +#: addons/addressbook/contents.tpl:112 +msgid "Search string" +msgstr "Poszukiwany napis" + +#~ msgid "You're about to delete the entry %s." +#~ msgstr "Zamierzasz usunąć element %s." + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#~ msgid "Address book" +#~ msgstr "Książka adresowa" + +#~ msgid "Removing of addressbook entry '%s' failed." +#~ msgstr "Usuwanie wpisu książki adresowej '%s' nieudane." + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "Uprawnienia" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#~ msgid "The required field 'Name' is not set." +#~ msgstr "Wymagane pole 'Nazwa' jest puste." + +#~ msgid "The required field 'Given name' is not set." +#~ msgstr "Wymagane pole 'Podana nazwa' jest puste." + +#~ msgid "The field 'Name' contains invalid characters." +#~ msgstr "Pole 'Nazwa' zawiera niedozwolone znaki." + +#~ msgid "The field 'Given name' contains invalid characters." +#~ msgstr "Pole 'Podana nazwa' zawiera niedozwolone znaki." + +#~ msgid "The field 'Phone' contains an invalid phone number." +#~ msgstr "Pole 'Telefon' zawiera nieprawidłowy numer telefonu." + +#~ msgid "The field 'Fax' contains an invalid phone number." +#~ msgstr "Pole 'Fax' zawiera nieprawidłowy numer telefonu." + +#~ msgid "The field 'Mobile' contains an invalid phone number." +#~ msgstr "Pole 'Komórka' zawiera nieprawidłowy numer telefonu." + +#~ msgid "The field 'Pager' contains an invalid phone number." +#~ msgstr "Pole 'Pager' zawiera nieprawidłowy numer telefonu." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "Proszę podać prawidłowy adres email w polu 'Podstawowy adres'" diff --git a/trunk/gosa-plugins/addressbook/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/addressbook/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..48454716e --- /dev/null +++ b/trunk/gosa-plugins/addressbook/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,489 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:28+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Internal error" +msgstr "Терминал-сервер" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Missing parameters!" +msgstr "Приложение" + +#: addons/addressbook/address_info.tpl:18 +#: addons/addressbook/address_edit.tpl:24 +msgid "Personal" +msgstr "Контакт" + +#: addons/addressbook/address_info.tpl:24 +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:671 +#: addons/addressbook/class_addressbook.inc:681 +#: addons/addressbook/class_addressbook.inc:708 +#: addons/addressbook/contents.tpl:14 +msgid "Name" +msgstr "Фамилия" + +#: addons/addressbook/address_info.tpl:32 +#: addons/addressbook/class_addressbook.inc:832 +#: addons/addressbook/address_edit.tpl:48 +msgid "Initials" +msgstr "Отчество" + +#: addons/addressbook/address_info.tpl:40 +#: addons/addressbook/address_edit.tpl:60 +msgid "Personal title" +msgstr "Обращение" + +#: addons/addressbook/address_info.tpl:53 +#: addons/addressbook/address_edit.tpl:74 addons/addressbook/contents.tpl:15 +msgid "Private" +msgstr "Личный" + +#: addons/addressbook/address_info.tpl:59 +#: addons/addressbook/address_info.tpl:155 +#: addons/addressbook/address_edit.tpl:80 +#: addons/addressbook/address_edit.tpl:207 +msgid "Address" +msgstr "Адрес" + +#: addons/addressbook/address_info.tpl:67 +#: addons/addressbook/address_info.tpl:163 +#: addons/addressbook/class_addressbook.inc:689 +#: addons/addressbook/address_edit.tpl:94 +#: addons/addressbook/address_edit.tpl:221 addons/addressbook/contents.tpl:14 +msgid "Phone" +msgstr "Телефон" + +#: addons/addressbook/address_info.tpl:75 +#: addons/addressbook/class_addressbook.inc:698 +#: addons/addressbook/address_edit.tpl:106 addons/addressbook/contents.tpl:15 +msgid "Mobile" +msgstr "Мобильный" + +#: addons/addressbook/address_info.tpl:83 +#: addons/addressbook/class_addressbook.inc:713 +#: addons/addressbook/address_edit.tpl:118 +msgid "Email" +msgstr "Email" + +#: addons/addressbook/address_info.tpl:99 +#: addons/addressbook/address_edit.tpl:134 +msgid "Organizational" +msgstr "Организация" + +#: addons/addressbook/address_info.tpl:109 +#: addons/addressbook/address_edit.tpl:143 +msgid "Company" +msgstr "Компания" + +#: addons/addressbook/address_info.tpl:117 +#: addons/addressbook/class_addressbook.inc:827 +#: addons/addressbook/address_edit.tpl:155 +msgid "Department" +msgstr "Подразделение" + +#: addons/addressbook/address_info.tpl:125 +#: addons/addressbook/address_edit.tpl:167 +msgid "City" +msgstr "Город" + +#: addons/addressbook/address_info.tpl:133 +#: addons/addressbook/address_edit.tpl:179 +msgid "Postal code" +msgstr "Почтовый индекс" + +#: addons/addressbook/address_info.tpl:141 +#: addons/addressbook/address_edit.tpl:191 +msgid "Country" +msgstr "Страна" + +#: addons/addressbook/address_info.tpl:171 +#: addons/addressbook/address_edit.tpl:233 +msgid "FAX" +msgstr "Факс" + +#: addons/addressbook/address_info.tpl:179 +#: addons/addressbook/class_addressbook.inc:701 +#: addons/addressbook/class_addressbook.inc:825 +#: addons/addressbook/address_edit.tpl:246 +msgid "Pager" +msgstr "Пейджер" + +#: addons/addressbook/remove.tpl:2 +msgid "Warning" +msgstr "Предупреждение" + +#: addons/addressbook/remove.tpl:6 +msgid "" +"This includes all addressbook data in this entry. Please double check if " +"your really want to do this since there is no way for GOsa to get your data " +"back." +msgstr "" +"Это включает все объекты адресной книги. Проверте действительно ли это так, " +"поскольку GOsa не сможет отменить результаты этой операции." + +#: addons/addressbook/remove.tpl:10 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Если вы уверены в своих действиях, нажмите на кнопку Удалить, иначе " +"нажмите Отмена." + +#: addons/addressbook/dial.tpl:3 +msgid "Dial connection..." +msgstr "Соединение..." + +#: addons/addressbook/dial.tpl:10 addons/addressbook/class_addressbook.inc:444 +#: addons/addressbook/class_addressbook.inc:451 +#: addons/addressbook/class_addressbook.inc:455 +#: addons/addressbook/class_addressbook.inc:571 +msgid "Dial" +msgstr "Звонок" + +#: addons/addressbook/class_addressbook.inc:6 +#: addons/addressbook/class_addressbook.inc:808 +#: addons/addressbook/class_addressbook.inc:814 addons/addressbook/main.inc:43 +msgid "Addressbook" +msgstr "Адресная книга" + +#: addons/addressbook/class_addressbook.inc:7 +msgid "This does something" +msgstr "Что-то будет" + +#: addons/addressbook/class_addressbook.inc:174 +#, php-format +msgid "Dial from %s to %s now?" +msgstr "Звоним с %s на %s?" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "Error" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:178 +#, fuzzy +msgid "" +"You need to set your personal phone number in order to perform direct dials." +msgstr "" +"У вас нет персонального набора телефонов. Настройте это прежде чем звонить." + +#: addons/addressbook/class_addressbook.inc:206 +#: addons/addressbook/class_addressbook.inc:772 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: addons/addressbook/class_addressbook.inc:214 +#: addons/addressbook/class_addressbook.inc:322 +#, fuzzy +msgid "Permission" +msgstr "Права для членов группы" + +#: addons/addressbook/class_addressbook.inc:461 +#, php-format +msgid "Save contact for %s as vcard" +msgstr "Сохранить контактную информацию %s в формате vcard" + +#: addons/addressbook/class_addressbook.inc:467 +#, php-format +msgid "Send mail to %s" +msgstr "Отправить %s сообщение по эл. почте" + +#: addons/addressbook/class_addressbook.inc:583 +msgid "global addressbook" +msgstr "общая адресная книга" + +#: addons/addressbook/class_addressbook.inc:586 +#, fuzzy +msgid "user database" +msgstr "Базы данных" + +#: addons/addressbook/class_addressbook.inc:590 +#, fuzzy, php-format +msgid "Contact stored in '%s'" +msgstr "Контакт сохранен в %s" + +#: addons/addressbook/class_addressbook.inc:592 +msgid "Creating new entry in" +msgstr "Создание нового объекта в" + +#: addons/addressbook/class_addressbook.inc:631 +msgid "All" +msgstr "Все" + +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:675 +#: addons/addressbook/class_addressbook.inc:684 +#: addons/addressbook/class_addressbook.inc:705 +#: addons/addressbook/class_addressbook.inc:818 +msgid "Given name" +msgstr "Имя" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Work phone" +msgstr "Рабочий телефон" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Cell phone" +msgstr "Сотовый телефон" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "Home phone" +msgstr "Домашний телефон" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "User ID" +msgstr "Идентификатор пользователя" + +#: addons/addressbook/class_addressbook.inc:692 +#, fuzzy +msgid "Telephone number" +msgstr "Телефонные номера" + +#: addons/addressbook/class_addressbook.inc:695 +#: addons/addressbook/contents.tpl:14 +msgid "Fax" +msgstr "Факс" + +#: addons/addressbook/class_addressbook.inc:721 +msgid "" +"Cannot create a unique DN for your entry. Please fill more formular fields." +msgstr "" +"Невозможно создать уникальный DN для объекта. Заполните все поля формы." + +#: addons/addressbook/class_addressbook.inc:809 +#, fuzzy +msgid "Addressbook entry acls" +msgstr "Показать объекты адресной книги" + +#: addons/addressbook/class_addressbook.inc:813 +msgid "Addons" +msgstr "Дополнительно" + +#: addons/addressbook/class_addressbook.inc:817 +#, fuzzy +msgid "Surename" +msgstr "Имя сервера" + +#: addons/addressbook/class_addressbook.inc:819 +#, fuzzy +msgid "Telefon number" +msgstr "Телефонные номера" + +#: addons/addressbook/class_addressbook.inc:820 +#, fuzzy +msgid "Fax number" +msgstr "Терминал" + +#: addons/addressbook/class_addressbook.inc:821 +#, fuzzy +msgid "Mobile number" +msgstr "Домашний телефон" + +#: addons/addressbook/class_addressbook.inc:822 +#, fuzzy +msgid "Home phone number" +msgstr "Телефонные номера" + +#: addons/addressbook/class_addressbook.inc:823 +#, fuzzy +msgid "User identification" +msgstr "Информация" + +#: addons/addressbook/class_addressbook.inc:824 +#, fuzzy +msgid "Mail address" +msgstr "MAC-адрес" + +#: addons/addressbook/class_addressbook.inc:826 +msgid "Organization" +msgstr "Организация" + +#: addons/addressbook/class_addressbook.inc:828 +msgid "Location" +msgstr "Местоположение" + +#: addons/addressbook/class_addressbook.inc:829 +#: addons/addressbook/class_addressbook.inc:830 +#, fuzzy +msgid "Postal address" +msgstr "Почтовый индекс" + +#: addons/addressbook/class_addressbook.inc:831 +msgid "State" +msgstr "Адм. единица" + +#: addons/addressbook/class_addressbook.inc:833 +#, fuzzy +msgid "Title" +msgstr "Файлы" + +#: addons/addressbook/class_addressbook.inc:834 +msgid "Home postal address" +msgstr "" + +#: addons/addressbook/class_addressbook.inc:835 +#, fuzzy +msgid "Common name" +msgstr "Местоположение" + +#: addons/addressbook/address_edit.tpl:7 +msgid "Choose the department to store entry in" +msgstr "Выбрать раздел, для хранения объекта" + +#: addons/addressbook/address_edit.tpl:30 +#, fuzzy +msgid "Last name" +msgstr "Список" + +#: addons/addressbook/address_edit.tpl:33 +#, fuzzy +msgid "First name" +msgstr "Список" + +#: addons/addressbook/contents.tpl:15 +msgid "Contact" +msgstr "Контакт" + +#: addons/addressbook/contents.tpl:33 +msgid "Information" +msgstr "Информация" + +#: addons/addressbook/contents.tpl:37 +msgid "" +"The telephone list plugin provides list and search facilities for the people " +"in your site. You may want to specify the asterisk [*] like in 'Go*us' to " +"find 'Gonicus'. Use the filters below to narrow down your search." +msgstr "" +"Этот модуль предоставляет возможности просмотра и поиска информации для " +"пользователей вашего сайта. В шаблоне вы можете использовать звездочку [*], " +"например, \"И*н\", чтобы найти имя \"Иван\". Уточнить результаты поиска " +"можно с помощью фильтров ниже." + +#: addons/addressbook/contents.tpl:42 +msgid "Actions" +msgstr "Действия" + +#: addons/addressbook/contents.tpl:48 +msgid "Add entry" +msgstr "Добавить объект" + +#: addons/addressbook/contents.tpl:54 +msgid "Edit entry" +msgstr "Редактиовать объект" + +#: addons/addressbook/contents.tpl:58 +msgid "Remove entry" +msgstr "Удалить объект" + +#: addons/addressbook/contents.tpl:65 +msgid "Filters" +msgstr "Фильтры" + +#: addons/addressbook/contents.tpl:75 +msgid "Select to see regular users" +msgstr "Выберите, чтобы просмотреть пользователей" + +#: addons/addressbook/contents.tpl:75 +msgid "Show organizational entries" +msgstr "Показать организационные объекты" + +#: addons/addressbook/contents.tpl:76 +msgid "Select to see users in addressbook" +msgstr "Выберите, чтобы просмотреть пользователей в адресной книге" + +#: addons/addressbook/contents.tpl:76 +msgid "Show addressbook entries" +msgstr "Показать объекты адресной книги" + +#: addons/addressbook/contents.tpl:84 +msgid "Display results for department" +msgstr "Показать результаты для подразделения" + +#: addons/addressbook/contents.tpl:87 +msgid "Choose the department the search will be based on" +msgstr "Выбрать раздел, для которого будет осуществлен поиск" + +#: addons/addressbook/contents.tpl:97 +msgid "Match object" +msgstr "Соответствующий объект" + +#: addons/addressbook/contents.tpl:100 +msgid "Choose the object that will be searched in" +msgstr "Выберите объект, в котором будет осуществлен поиск" + +#: addons/addressbook/contents.tpl:109 +msgid "Search for" +msgstr "Поиск" + +#: addons/addressbook/contents.tpl:112 +msgid "Search string" +msgstr "Строка поиска" + +#~ msgid "You're about to delete the entry %s." +#~ msgstr "Вы собираетесь удалить объект %s." + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "Address book" +#~ msgstr "Адресная книга" + +#, fuzzy +#~ msgid "Removing of addressbook entry '%s' failed." +#~ msgstr "Показать объекты адресной книги" + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "Права для членов группы" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#~ msgid "The required field 'Name' is not set." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#~ msgid "The required field 'Given name' is not set." +#~ msgstr "Обязательное поле \"Личное имя\" не заполнено." + +#~ msgid "The field 'Name' contains invalid characters." +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#~ msgid "The field 'Given name' contains invalid characters." +#~ msgstr "Значение поля \"Личное имя\" содержит недопустимые символы." + +#~ msgid "The field 'Phone' contains an invalid phone number." +#~ msgstr "Значение поля \"Телефон\" содержит недопустимый номер телефона." + +#~ msgid "The field 'Fax' contains an invalid phone number." +#~ msgstr "Значение поля \"Факс\" содержит недопустимый номер телефона." + +#~ msgid "The field 'Mobile' contains an invalid phone number." +#~ msgstr "Значение поля \"Мобильный\" содержит некорректный номер телефона." + +#~ msgid "The field 'Pager' contains an invalid phone number." +#~ msgstr "Значение поля \"Пейджер\" содержит некорректный номер телефона." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "Введите корректное значение в поле \"Основной адрес\"." diff --git a/trunk/gosa-plugins/addressbook/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/addressbook/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..a458d7768 --- /dev/null +++ b/trunk/gosa-plugins/addressbook/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,477 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:28+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Internal error" +msgstr "终端服务器" + +#: html/getvcard.php:39 +#, fuzzy +msgid "Missing parameters!" +msgstr "应用程序名称" + +#: addons/addressbook/address_info.tpl:18 +#: addons/addressbook/address_edit.tpl:24 +msgid "Personal" +msgstr "个人" + +#: addons/addressbook/address_info.tpl:24 +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:671 +#: addons/addressbook/class_addressbook.inc:681 +#: addons/addressbook/class_addressbook.inc:708 +#: addons/addressbook/contents.tpl:14 +msgid "Name" +msgstr "名称" + +#: addons/addressbook/address_info.tpl:32 +#: addons/addressbook/class_addressbook.inc:832 +#: addons/addressbook/address_edit.tpl:48 +msgid "Initials" +msgstr "中间名" + +#: addons/addressbook/address_info.tpl:40 +#: addons/addressbook/address_edit.tpl:60 +msgid "Personal title" +msgstr "个人称谓" + +#: addons/addressbook/address_info.tpl:53 +#: addons/addressbook/address_edit.tpl:74 addons/addressbook/contents.tpl:15 +msgid "Private" +msgstr "私人电话" + +#: addons/addressbook/address_info.tpl:59 +#: addons/addressbook/address_info.tpl:155 +#: addons/addressbook/address_edit.tpl:80 +#: addons/addressbook/address_edit.tpl:207 +msgid "Address" +msgstr "住址" + +#: addons/addressbook/address_info.tpl:67 +#: addons/addressbook/address_info.tpl:163 +#: addons/addressbook/class_addressbook.inc:689 +#: addons/addressbook/address_edit.tpl:94 +#: addons/addressbook/address_edit.tpl:221 addons/addressbook/contents.tpl:14 +msgid "Phone" +msgstr "电话" + +#: addons/addressbook/address_info.tpl:75 +#: addons/addressbook/class_addressbook.inc:698 +#: addons/addressbook/address_edit.tpl:106 addons/addressbook/contents.tpl:15 +msgid "Mobile" +msgstr "手机" + +#: addons/addressbook/address_info.tpl:83 +#: addons/addressbook/class_addressbook.inc:713 +#: addons/addressbook/address_edit.tpl:118 +msgid "Email" +msgstr "邮件" + +#: addons/addressbook/address_info.tpl:99 +#: addons/addressbook/address_edit.tpl:134 +msgid "Organizational" +msgstr "组织" + +#: addons/addressbook/address_info.tpl:109 +#: addons/addressbook/address_edit.tpl:143 +msgid "Company" +msgstr "公司" + +#: addons/addressbook/address_info.tpl:117 +#: addons/addressbook/class_addressbook.inc:827 +#: addons/addressbook/address_edit.tpl:155 +msgid "Department" +msgstr "部门" + +#: addons/addressbook/address_info.tpl:125 +#: addons/addressbook/address_edit.tpl:167 +msgid "City" +msgstr "城市" + +#: addons/addressbook/address_info.tpl:133 +#: addons/addressbook/address_edit.tpl:179 +msgid "Postal code" +msgstr "邮编" + +#: addons/addressbook/address_info.tpl:141 +#: addons/addressbook/address_edit.tpl:191 +msgid "Country" +msgstr "国家" + +#: addons/addressbook/address_info.tpl:171 +#: addons/addressbook/address_edit.tpl:233 +msgid "FAX" +msgstr "传真" + +#: addons/addressbook/address_info.tpl:179 +#: addons/addressbook/class_addressbook.inc:701 +#: addons/addressbook/class_addressbook.inc:825 +#: addons/addressbook/address_edit.tpl:246 +msgid "Pager" +msgstr "呼机" + +#: addons/addressbook/remove.tpl:2 +msgid "Warning" +msgstr "警告" + +#: addons/addressbook/remove.tpl:6 +msgid "" +"This includes all addressbook data in this entry. Please double check if " +"your really want to do this since there is no way for GOsa to get your data " +"back." +msgstr "" +"这个条目包含所有的地址簿数据,请再次检查您是否要这么做,因为 GOsa 没有办法将" +"您的数据找回。" + +#: addons/addressbook/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "所以,如果您确定,请按“删除”继续,否则按“取消”退出。" + +#: addons/addressbook/dial.tpl:3 +msgid "Dial connection..." +msgstr "拨号中..." + +#: addons/addressbook/dial.tpl:10 addons/addressbook/class_addressbook.inc:444 +#: addons/addressbook/class_addressbook.inc:451 +#: addons/addressbook/class_addressbook.inc:455 +#: addons/addressbook/class_addressbook.inc:571 +msgid "Dial" +msgstr "拨号" + +#: addons/addressbook/class_addressbook.inc:6 +#: addons/addressbook/class_addressbook.inc:808 +#: addons/addressbook/class_addressbook.inc:814 addons/addressbook/main.inc:43 +msgid "Addressbook" +msgstr "地址簿" + +#: addons/addressbook/class_addressbook.inc:7 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: addons/addressbook/class_addressbook.inc:174 +#, php-format +msgid "Dial from %s to %s now?" +msgstr "现在从 %s 拨号到 %s 么?" + +#: addons/addressbook/class_addressbook.inc:178 +msgid "Error" +msgstr "错误" + +#: addons/addressbook/class_addressbook.inc:178 +#, fuzzy +msgid "" +"You need to set your personal phone number in order to perform direct dials." +msgstr "您尚未设置个人电话号码。要想使用直接拨号需要修改个人电话号码。" + +#: addons/addressbook/class_addressbook.inc:206 +#: addons/addressbook/class_addressbook.inc:772 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: addons/addressbook/class_addressbook.inc:214 +#: addons/addressbook/class_addressbook.inc:322 +#, fuzzy +msgid "Permission" +msgstr "允许" + +#: addons/addressbook/class_addressbook.inc:461 +#, php-format +msgid "Save contact for %s as vcard" +msgstr "保存 %s 的内容为 vcard" + +#: addons/addressbook/class_addressbook.inc:467 +#, php-format +msgid "Send mail to %s" +msgstr "发送邮件到 %s" + +#: addons/addressbook/class_addressbook.inc:583 +msgid "global addressbook" +msgstr "全局地址簿" + +#: addons/addressbook/class_addressbook.inc:586 +msgid "user database" +msgstr "用户数据库" + +#: addons/addressbook/class_addressbook.inc:590 +#, php-format +msgid "Contact stored in '%s'" +msgstr "联系方式保存到 '%s'" + +#: addons/addressbook/class_addressbook.inc:592 +msgid "Creating new entry in" +msgstr "创建新条目到" + +#: addons/addressbook/class_addressbook.inc:631 +msgid "All" +msgstr "全部" + +#: addons/addressbook/class_addressbook.inc:631 +#: addons/addressbook/class_addressbook.inc:675 +#: addons/addressbook/class_addressbook.inc:684 +#: addons/addressbook/class_addressbook.inc:705 +#: addons/addressbook/class_addressbook.inc:818 +msgid "Given name" +msgstr "名" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Work phone" +msgstr "工作电话" + +#: addons/addressbook/class_addressbook.inc:632 +msgid "Cell phone" +msgstr "移动电话" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "Home phone" +msgstr "住宅电话" + +#: addons/addressbook/class_addressbook.inc:633 +msgid "User ID" +msgstr "用户 ID" + +#: addons/addressbook/class_addressbook.inc:692 +#, fuzzy +msgid "Telephone number" +msgstr "电话号码" + +#: addons/addressbook/class_addressbook.inc:695 +#: addons/addressbook/contents.tpl:14 +msgid "Fax" +msgstr "传真" + +#: addons/addressbook/class_addressbook.inc:721 +msgid "" +"Cannot create a unique DN for your entry. Please fill more formular fields." +msgstr "无法为您的条目创建一个唯一 DN。请填写更多字段。" + +#: addons/addressbook/class_addressbook.inc:809 +#, fuzzy +msgid "Addressbook entry acls" +msgstr "保存地址簿条目失败" + +#: addons/addressbook/class_addressbook.inc:813 +msgid "Addons" +msgstr "插件" + +#: addons/addressbook/class_addressbook.inc:817 +msgid "Surename" +msgstr "姓" + +#: addons/addressbook/class_addressbook.inc:819 +#, fuzzy +msgid "Telefon number" +msgstr "电话号码" + +#: addons/addressbook/class_addressbook.inc:820 +#, fuzzy +msgid "Fax number" +msgstr "系列号" + +#: addons/addressbook/class_addressbook.inc:821 +#, fuzzy +msgid "Mobile number" +msgstr "电话号码" + +#: addons/addressbook/class_addressbook.inc:822 +#, fuzzy +msgid "Home phone number" +msgstr "电话号码" + +#: addons/addressbook/class_addressbook.inc:823 +#, fuzzy +msgid "User identification" +msgstr "用户信息" + +#: addons/addressbook/class_addressbook.inc:824 +msgid "Mail address" +msgstr "邮件地址" + +#: addons/addressbook/class_addressbook.inc:826 +msgid "Organization" +msgstr "组织/公司" + +#: addons/addressbook/class_addressbook.inc:828 +msgid "Location" +msgstr "位置" + +#: addons/addressbook/class_addressbook.inc:829 +#: addons/addressbook/class_addressbook.inc:830 +msgid "Postal address" +msgstr "地址" + +#: addons/addressbook/class_addressbook.inc:831 +msgid "State" +msgstr "州/省" + +#: addons/addressbook/class_addressbook.inc:833 +msgid "Title" +msgstr "称谓" + +#: addons/addressbook/class_addressbook.inc:834 +msgid "Home postal address" +msgstr "住宅地址" + +#: addons/addressbook/class_addressbook.inc:835 +msgid "Common name" +msgstr "常用名" + +#: addons/addressbook/address_edit.tpl:7 +msgid "Choose the department to store entry in" +msgstr "选择放置条目的部门" + +#: addons/addressbook/address_edit.tpl:30 +msgid "Last name" +msgstr "姓" + +#: addons/addressbook/address_edit.tpl:33 +msgid "First name" +msgstr "名" + +#: addons/addressbook/contents.tpl:15 +msgid "Contact" +msgstr "联系" + +#: addons/addressbook/contents.tpl:33 +msgid "Information" +msgstr "提示信息" + +#: addons/addressbook/contents.tpl:37 +msgid "" +"The telephone list plugin provides list and search facilities for the people " +"in your site. You may want to specify the asterisk [*] like in 'Go*us' to " +"find 'Gonicus'. Use the filters below to narrow down your search." +msgstr "" +"电话列表插件提供了针对您站点用户的列表和查询功能。您可以用通配符[*]," +"如“Go*us”拉来查询“Gonicus”。使用下面的过滤器来过滤查询结果。" + +#: addons/addressbook/contents.tpl:42 +msgid "Actions" +msgstr "动作" + +#: addons/addressbook/contents.tpl:48 +msgid "Add entry" +msgstr "添加记录" + +#: addons/addressbook/contents.tpl:54 +msgid "Edit entry" +msgstr "编辑记录" + +#: addons/addressbook/contents.tpl:58 +msgid "Remove entry" +msgstr "删除记录" + +#: addons/addressbook/contents.tpl:65 +msgid "Filters" +msgstr "过滤器" + +#: addons/addressbook/contents.tpl:75 +msgid "Select to see regular users" +msgstr "选择查看普通用户" + +#: addons/addressbook/contents.tpl:75 +msgid "Show organizational entries" +msgstr "显示组织记录" + +#: addons/addressbook/contents.tpl:76 +msgid "Select to see users in addressbook" +msgstr "选择查看地址簿中用户" + +#: addons/addressbook/contents.tpl:76 +msgid "Show addressbook entries" +msgstr "显示地址簿记录" + +#: addons/addressbook/contents.tpl:84 +msgid "Display results for department" +msgstr "显示部门的结果" + +#: addons/addressbook/contents.tpl:87 +msgid "Choose the department the search will be based on" +msgstr "选择一个部门来做查询" + +#: addons/addressbook/contents.tpl:97 +msgid "Match object" +msgstr "匹配对象" + +#: addons/addressbook/contents.tpl:100 +msgid "Choose the object that will be searched in" +msgstr "选择要在其中查询的对象" + +#: addons/addressbook/contents.tpl:109 +msgid "Search for" +msgstr "查询" + +#: addons/addressbook/contents.tpl:112 +msgid "Search string" +msgstr "查找字符串" + +#~ msgid "You're about to delete the entry %s." +#~ msgstr "您将要删除条目 %s。" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Delete" +#~ msgstr "删除" + +#~ msgid "Address book" +#~ msgstr "地址簿" + +#, fuzzy +#~ msgid "Removing of addressbook entry '%s' failed." +#~ msgstr "删除地址簿条目失败" + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "允许" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "您无权删除这个部门。" + +#~ msgid "The required field 'Name' is not set." +#~ msgstr "需要的“姓名”字段没有设置" + +#~ msgid "The required field 'Given name' is not set." +#~ msgstr "需要的“教名”字段没有设置" + +#~ msgid "The field 'Name' contains invalid characters." +#~ msgstr "“姓名”字段包含无效字符。" + +#~ msgid "The field 'Given name' contains invalid characters." +#~ msgstr "“教名”字段包含无效字符。" + +#~ msgid "The field 'Phone' contains an invalid phone number." +#~ msgstr "“电话”字段包含无效电话号码。" + +#~ msgid "The field 'Fax' contains an invalid phone number." +#~ msgstr "“传真”字段包含一个无效电话号码" + +#~ msgid "The field 'Mobile' contains an invalid phone number." +#~ msgstr "“手机”字段包含无效手机号码。" + +#~ msgid "The field 'Pager' contains an invalid phone number." +#~ msgstr "“传呼”字段包含无效电话号码。" + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "请在“主邮件地址”中输入一个有效的邮件地址。" diff --git a/trunk/gosa-plugins/addressbook/plugin.dsc b/trunk/gosa-plugins/addressbook/plugin.dsc new file mode 100644 index 000000000..c9324eb3e --- /dev/null +++ b/trunk/gosa-plugins/addressbook/plugin.dsc @@ -0,0 +1,6 @@ +[gosa-plugin] +name = addressbook +description = "Simple addressbook addon" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ diff --git a/trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_apacheUtils.inc b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_apacheUtils.inc new file mode 100644 index 000000000..7271ddc1c --- /dev/null +++ b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_apacheUtils.inc @@ -0,0 +1,253 @@ +get_ldap_link(); + $ldap->cd($config->current['BASE']); + + /* Get host entry */ + $ldap->cat($HostDn); + $host_attr = $ldap->fetch(); + + /* Create template for all fetched vhosts Data + */ + $VhostBase = array(); + $VhostBase['exists'] = false; + //$VhostBase['RECORDS'] = array(); + $VhostBase['apacheServerName'] = array(); + $VhostBase['apacheConfig'] = array(); + + $Vhosts = array(); + + /* Get & Parse all vhosts entries + */ + $ldap->ls("(&(objectClass=apacheConfig)(apacheServerName=*))",$HostDn,array("*")); + $tmp_res = array(); + while($attrs = $ldap->fetch()) { + $tmp_res[] = $attrs; + } + + /* Parse fetched vhosts + */ + foreach($tmp_res as $attrs){ + + $apacheServerName = $attrs['apacheServerName'][0]; + $apacheDocumentRoot = $attrs['apacheDocumentRoot'][0]; + $apacheServerAdmin = $attrs['apacheServerAdmin'][0]; + $Vhosts[$apacheServerName] = $VhostBase; + $Vhosts[$apacheServerName]['exists'] = true; + + /* Set basic attributes + */ + if(isset($attrs["apacheConfig"][0])){ + $Vhosts[$apacheServerName]["apacheConfig"] = $attrs["apacheConfig"][0]; + } + + /* Set initial vhosts name, to be able to detect if this entry was renamed + */ + $Vhosts[$apacheServerName]['InitialApacheServerName'] = $apacheServerName; + $Vhosts[$apacheServerName]['apacheServerName'] = $apacheServerName; + $Vhosts[$apacheServerName]['apacheDocumentRoot'] = $apacheDocumentRoot; + $Vhosts[$apacheServerName]['apacheServerAdmin'] = $apacheServerAdmin; + + + if (isset($attrs['apacheServerAlias'])){ + for($i = 0 ; $i < $attrs['apacheServerAlias']['count']; $i ++){ + $Vhosts[$apacheServerName]['apacheServerAlias'][] = $attrs['apacheServerAlias'][$i]; + } + } + + if (isset($attrs['apacheScriptAlias'])){ + for($i = 0 ; $i < $attrs['apacheScriptAlias']['count']; $i ++){ + $Vhosts[$apacheServerName]['apacheScriptAlias'][] = $attrs['apacheScriptAlias'][$i]; + } + } + + } + return($Vhosts); + } + + + /* This function compares two apache vhosts objects and returns an + * array with following indexes + * - delete, for vhost entries which must be deleted (only if vhost entries is removed) + * - rename, if a dn must be renamed, for example, the apacheServerName has changed + * - add, if there is a new vhost entries created + */ + public static function getVhostEntriesDiff($config,$newVhosts,$HostDn) + { + $oldVhosts = apacheUtils::getVhostEntries($config,$HostDn,true); + + $move = array(); + $add = array(); + $del = array(); + + /* Generate a template for vhosts with default values + */ + $zoneBase = array(); + $zoneBase['objectClass'] = array("top","apacheConfig"); + $zoneBase['apacheServerName'] = ""; + + /* Contains all renamed apacheServerNames + * For vhosts entry udpdates + */ + $PrePareVhostEntries = array(); + + /* Walk through all vhosts and detect renamed/added/deleted vhosts ... + */ + foreach($newVhosts as $name => $zone){ + + /* This vhosts was renamed + */ + if((!empty($zone['InitialApacheServerName'])) && ($zone['InitialApacheServerName'] != $zone['apacheServerName'])){ + + /* Move old vhosts to new position + */ + $oldDn = "apacheServerName=".$zone['InitialApacheServerName'].",".$HostDn; + $newDn = "apacheServerName=".$zone['apacheServerName'].",".$HostDn; + $PrePareVhostEntries[$zone['InitialApacheServerName']] = $zone['apacheServerName']; + $move [$oldDn] = $newDn; + } + + /* Get old vhosts if available + */ + $oldVhost=array(); + if(isset($oldVhosts[$zone['InitialApacheServerName']])){ + if(!empty($oldVhosts[$zone['InitialApacheServerName']])){ + $oldVhost = $oldVhosts[$zone['InitialApacheServerName']]; + } + } + + /* Create vhosts entry and put it in our add queue + */ + $newDn = "apacheServerName=".$zone['apacheServerName'].",".$HostDn; + $obj = $zoneBase; + $obj['apacheServerName'] = $zone['apacheServerName']; + $obj['apacheDocumentRoot'] = $zone['apacheDocumentRoot']; + $obj['apacheServerAdmin'] = $zone['apacheServerAdmin']; + + if(!empty($zone['apacheServerAlias'])) { + + foreach($zone['apacheServerAlias'] as $rec){ + $obj['apacheServerAlias'][] = $rec; + } + } + + if(!empty($zone['apacheScriptAlias'])) { + foreach($zone['apacheScriptAlias'] as $rec){ + $obj['apacheScriptAlias'][] = $rec; + } + } + + /* Append udpated Vhost Entry to our add queue + */ + $add[$newDn] = $obj; + + /* Remove currently managed vhosts from oldVhosts. + * this gives us the ability to detect removed vhosts + */ + if(isset($oldVhosts[$zone['InitialApacheServerName']])){ + unset($oldVhosts[$zone['InitialApacheServerName']]); + } + } + + /* The rest of our oldVhosts must be deleted + * because they are no longer available in newVhosts anymore. + */ + foreach($oldVhosts as $zone) { + $oldDn = "apacheServerName=".$zone['InitialApacheServerName'].",".$HostDn; + $del[$oldDn] = ""; + } + + /* Check for entries which must be updated + */ + $zoneUpdates = array(); + $udpate = array(); + if(count($PrePareVhostEntries)){ + $ldap = $config->get_ldap_link(); + foreach($PrePareVhostEntries as $FromVhostName => $ToVhostName){ + $ldap->cd($HostDn); + $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=".$FromVhostName."))",array("apacheServerName")); + while($attrs = $ldap->fetch()){ + $zoneUpdates[$attrs['dn']] = array("apacheServerName"=>$ToVhostName); + } + } + } + + $ret = array("del" => $del , "move" => $move , "add" => $add,"vhostUpdates"=>$zoneUpdates); + // user_error(print_r($ret,true)); + return($ret); + } + + /* returns the dn for a specified zone + */ + function getVhostDN($config,$apacheServerNameMix) + { + $ret = ""; + if(!strstr($apacheServerNameMix, '/')) { + print_red(sprintf(_("Undefined vhost name '%s'. Vhost name must look like this 'www.example.com or example.com'."),$apacheServerNameMix)); + return($ret); + } + + $apacheServerNameIndex = split("/",$apacheServerNameMix); + $apacheServerName = $apacheServerNameIndex[1]; + $nameServer = strtolower($apacheServerNameIndex[0]); + $ldap = $config->get_ldap_link(); + + /* search for the nameserver */ + $ldap-> cd($config->current['BASE']); + $ldap->search("(&(objectClass=goServer)(cn=".$nameServer."))",array("cn")); + if($ldap->count()){ + $attr = $ldap->fetch(); + } else { + return($ret); + } + + $ldap-> cd($attr['dn']); + $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=".$apacheServerName."))",array("apacheServerName")); + if($ldap->count()){ + $attr = $ldap->fetch(); + return($attr['dn']); + } + + return($ret); + } + + + /* returns all available vhosts + * array[reverseName] = apacheServerName; + */ + function getAvailableVhosts($config) + { + $ret = array(); + $ldap = $config->get_ldap_link(); + $ldap->cd ($config->current['BASE']); + + /* Search for vhosts ... + */ + $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=*))",array("apacheServerName")); + + $ForwardVhosts = array(); + $zones = array(); + + while($at = $ldap->fetch()){ + $ForwardVhosts[$at['dn']] = $at; + } + + foreach($ForwardVhosts as $dn => $obj){ + + if(preg_match("/".$dn."/",$Rdn)){ + $zones[$Robj['apacheServerName'][0]] =$obj['apacheServerName'][0]; + } + } + return($zones); + } +} + +?> diff --git a/trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_servApacheEditVhost.inc b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_servApacheEditVhost.inc new file mode 100644 index 000000000..19fba7af3 --- /dev/null +++ b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_servApacheEditVhost.inc @@ -0,0 +1,448 @@ +OldApacheServerName = ""; + $this->isNew = true; + $this->InitialApacheServerName = "";//$attrs['InitialApacheServerName']; + }else{ + $this->VhostObject = $attrs; + $this->OldApacheServerName = $attrs['apacheServerName']; + $this->InitialApacheServerName = $attrs['InitialApacheServerName']; + $this->isNew = false; + foreach($this->attributes as $value){ + if(isset($attrs[$value])){ + $this->$value = $attrs[$value]; + } + } + + if(!isset($attrs['apacheServerAlias'])) $this->apacheServerAlias = array(); + if(!isset($attrs['apacheScriptAlias'])) $this->apacheScriptAlias = array(); + } + } + + /* Transports the given Arraykey one position up*/ + function ArrayUp($atr,$attrs) + { + $ret = $attrs; + $pos = $atr ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == 1)||($pos >$cn))){ + $before = array_slice($attrs,0,($pos-2)); + $mitte = array_reverse(array_slice($attrs,($pos-2),2)); + $unten = array_slice($attrs,$pos); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + + /* Transports the given Arraykey one position down*/ + function ArrayDown($atr,$attrs) + { + $ret = $attrs; + $pos = $atr ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == $cn))){ + $before = array_slice($attrs,0,($pos-1)); + $mitte = array_reverse(array_slice($attrs,($pos-1),2)); + $unten = array_slice($attrs,($pos+1)); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + /* Combine new array */ + function combineArrays($ar0,$ar1,$ar2) + { + $ret = array(); + if(is_array($ar0)) + foreach($ar0 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar1)) + foreach($ar1 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar2)) + foreach($ar2 as $ar => $a){ + $ret[]=$a; + } + return($ret); + } + + function getpos($atr,$attrs) + { + $i = 0; + foreach($attrs as $attr => $name) { + $i++; + if($attr == $atr){ + return($i); + } + } + return(-1); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + +// Outdated? + +# /* Open Vhost Entry Edit Dialog +# */ +# if(!count($this->VhostObject)){ +# $smarty->assign("AllowVhostEdit" , false); +# }else{ +# $smarty->assign("AllowVhostEdit" , true); +# if(isset($_POST['EditVhostEntries'])){ +# $this->dialog= new apacheVhostEditEntries($this->config,$this->dn,$this->VhostObject); +# } +# } +# +# /* Save Vhost Entry Edit Dialog +# */ +# if(isset($_POST['SaveVhostEntryChanges'])){ +# $this->dialog->save_object(); +# if(count($this->dialog->check())){ +# msg_dialog::displayChecks($this->dialog->check()); +# }else{ +# $this->dialog->save(); +# $this->dialog = false; +# } +# } +# +# /* Cancel Vhost Entrie Edit Dialog +# */ +# if(isset($_POST['CancelVhostEntryChanges'])){ +# $this->dialog = false; +# } +# +# /* Display any type of open dialogs +# */ +# if($this->dialog){ +# $this->dialog->save_object(); +# return($this->dialog->execute()); +# } +# + + /* Check posts + */ + $once =true; + foreach($_POST as $name => $value){ + + /* Move Server Aliases one position up + */ + if((preg_match("/^SAup_/",$name)) && ($once)){ + $once = false; + $id = preg_replace("/^SAup_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + $this->apacheServerAlias = $this->ArrayUp(($id+1),$this->apacheServerAlias); + } + + /* Move Server Aliases one position down + */ + if((preg_match("/^SAdown_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^SAdown_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + $this->apacheServerAlias = $this->ArrayDown(($id+1),$this->apacheServerAlias); + } + + /* Delete a "Server Alias" + */ + if((preg_match("/^SAdel_/",$name)) && ($once)){ + $once = false; + $id = preg_replace("/^SAdel_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + unset($this->apacheServerAlias[$id]); + $tmp =array(); + foreach($this->apacheServerAlias as $entry){ + $tmp[] = $entry; + } + $this->apacheServerAlias = $tmp; + } + + /* Move "Script Alias" one position up + */ + if((preg_match("/^SCup_/",$name)) && ($once)){ + $once = false; + $id = preg_replace("/^SCup_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + $this->apacheScriptAlias = $this->ArrayUp(($id+1),$this->apacheScriptAlias); + } + + /* Move "Script Alias" one position down + */ + if((preg_match("/^SCdown_/",$name)) && ($once)){ + $once = false; + $id = preg_replace("/^SCdown_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + $this->apacheScriptAlias = $this->ArrayDown(($id+1),$this->apacheScriptAlias); + } + + /* Remove "Script Alias" + */ + if((preg_match("/^SCdel_/",$name)) && ($once)){ + $once = false; + $id = preg_replace("/^SCdel_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + unset($this->apacheScriptAlias[$id]); + $tmp =array(); + foreach($this->apacheScriptAlias as $entry){ + $tmp[] = $entry; + } + $this->apacheScriptAlias = $tmp; + } + } + + /* Add a new "Server Alias" + */ + if((isset($_POST['AddSARecord'])) && (!empty($_POST['StrSAAlias'])) && (!empty($_POST['StrSADir']))){ + $this->apacheServerAlias[] = trim($_POST['StrSAAlias']." ".$_POST['StrSADir']); + } + + /* Add a new "Script Alias" + */ + if((isset($_POST['AddSCRecord'])) && (!empty($_POST['StrSCAlias'])) && (!empty($_POST['StrSCDir']))){ + $this->apacheScriptAlias[] = trim($_POST['StrSCAlias']." ".$_POST['StrSCDir']); + } + + /* Fill in values */ + foreach($this->attributes as $name){ + $smarty->assign($name,$this->$name); + } + + /* Set apacheServerNames without server suffix */ + $smarty->assign("apacheServerName",$this->apacheServerName); + $smarty->assign("NotNew", false); + + + /* Create Server Aliases divlist + */ + $div = new divSelectBox("apacheServerAlias"); + $div->setHeight(120); + $recs = $this->apacheServerAlias; + + $oneup = " "; + $onedown = " "; + $onedel = ""; + foreach($recs as $key => $rec){ + $div ->AddEntry(array( + array("string"=>$rec), + array("string"=>str_replace("%s",base64_encode($key),$oneup.$onedown.$onedel), + "attach"=>"style='width:70px;border-right:0px;'") + )); + } + $smarty->assign("apacheServerAlias", $div->DrawList()); + + + /* Create Server Aliases divlist + */ + $div = new DivSelectBox("apacheScriptAlias"); + $div->setHeight(120); + $recs = $this->apacheScriptAlias; + + $oneup = " "; + $onedown = " "; + $onedel = ""; + + foreach($recs as $key => $rec){ + $div ->AddEntry(array( + array("string"=>$rec), + array("string"=>str_replace("%s",base64_encode($key),$oneup.$onedown.$onedel), + "attach"=>"style='width:70px;border-right:0px;'") + )); + } + $smarty->assign("apacheScriptAlias", $div->DrawList()); + + /* Display template */ + $display.= $smarty->fetch(get_template_path('servApacheVhostEdit.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + plugin::save_object(); + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Check if apacheServerName is already in use */ + $usedVhosts = $this->getUsedServerNames(); + if(($this->isNew == true)||($this->apacheServerName != $this->InitialApacheServerName)){ + if((isset($usedVhosts[$this->apacheServerName]))&&($this->apacheServerName != $this->InitialApacheServerName)){ + $message[] = msgPool::duplicated(_("Name")); + } + } + + /* Check given virtual server name + */ + if(!tests::is_domain($this->apacheServerName) || empty($this->apacheServerName)){ + $message[] = msgPool::invalid(_("Virtual host name"),$this->apacheServerName,"", + _("Only lowercase strings are allowed as Virtual Host Name.")." "._("e.g. example.com")); + } + + /* check if there is a valid document root given + */ + if(!tests::is_path($this->apacheDocumentRoot) || empty($this->apacheDocumentRoot)){ + $message[] = msgPool::invalid(_("Document root"),$this->apacheDocumentRoot); + } + + /* Check given mail address + */ + if(!tests::is_email($this->apacheServerAdmin) || empty($this->apacheServerAdmin)){ + $message[] = msgPool::invalid(_("Admin mail address"),$this->apacheServerAdmin); + } + + /* Check server aliases + */ + foreach($this->apacheServerAlias as $key => $line){ + $apacheServerAlias_ar=split(" ",$line); + $url=$apacheServerAlias_ar[1]; + if(!tests::is_path($url)){ + $message[] = msgPool::invalid(_("Server alias")); + } + } + + /* Check script aliases + */ + foreach($this->apacheScriptAlias as $key => $line){ + $apacheScriptAlias_ar=split(" ",$line); + $url=$apacheScriptAlias_ar[1]; + if(!tests::is_path($url)){ + $message[] = msgPool::invalid(_("Script alias")); + } + } + + return ($message); + } + + + /* This funtion returns all used apacheServerNames */ + function getUsedServerNames() + { + $ret = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=*))",array("apacheServerName")); + while($attr = $ldap->fetch()){ + $ret[$attr['apacheServerName'][0]]=""; + } + return($ret); + } + + + /* Save to LDAP */ + function save() + { + $ret =array(); + foreach($this->attributes as $name){ + $ret[$name] = $this->$name; + } + + /* Create SA records + */ + foreach($this->apacheServerAlias as $key => $rec){ + $rec['value']= $key." ".$rec['value']; + $this->Records [] = $rec; + } + + /* Create SC records + */ + foreach($this->apacheScriptAlias as $key => $rec){ + $rec['value']= $key." ".$rec['value']; + $this->Records [] = $rec; + } + + $ret['RECORDS'] = $this->Records; + $ret['InitialApacheServerName'] = $this->InitialApacheServerName; + return($ret); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_servApacheVhost.inc b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_servApacheVhost.inc new file mode 100644 index 000000000..1a26d45f8 --- /dev/null +++ b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/class_servApacheVhost.inc @@ -0,0 +1,311 @@ +orig_dn = $dn; + + /* Get all vhost Informations + */ + $this->Vhosts = apacheUtils::getVhostEntries($config,$dn); + + /* If there is at least one entry in this -> types, we have apache vhosts enabled + */ + if(count($this->Vhosts) == 0){ + $this->is_account = false; + }else{ + $this->is_account = true; + } + $this->initially_was_account = $this->is_account; + + /* Set service name */ + $this->DisplayName = _("Apache service"); + } + + + function execute() + { + /* Call parent execute + */ + plugin::execute(); + + /* Fill templating stuff + */ + $smarty= get_smarty(); + $display= ""; + + /* Edited or Added vhost + */ + if((isset($_POST['SaveVhostChanges'])) && is_object($this->dialog)){ + $this->dialog->save_object(); + + /* Check for errors + */ + if(count($this->dialog->check())){ + msg_dialog::displayChecks($this->dialog->check()); + }else{ + /* add new/edited vhost + */ + $ret = $this->dialog->save(); + if(!$this->dialog->isNew){ + unset($this->Vhosts[$this->dialog->OldApacheServerName]); + } + $this->Vhosts[$ret['apacheServerName']] = $ret; + $this->dialog = NULL; + } + } + + /* Cancel vhost edit / new + */ + if(isset($_POST['CancelVhostChanges'])){ + $this->dialog = NULL; + } + + /* Add empty new vhost + */ + if(isset($_POST['AddVhost']) && $this->acl_is_writeable("VirtualHosts")){ + $this->dialog = new servapacheVhostEdit($this->config,$this->dn); + } + + /* Check for edit vhost request + */ + $once = false; + foreach( $_POST as $name => $value){ + + /* check all post for edit request + */ + if(preg_match("/^editVhost_/",$name)&& !$once && $this->acl_is_writeable("VirtualHosts")){ + $once =true; + $tmp = preg_replace("/^editVhost_/","",$name); + $tmp = base64_decode(preg_replace("/_.*$/","",$tmp)); + $this->dialog= new servapacheVhostEdit($this->config,$this->dn,$this->Vhosts[$tmp]); + } + + /* check posts for delete vhost + */ + if(preg_match("/^delVhost_/",$name)&&!$once && $this->acl_is_writeable("VirtualHosts")){ + + $once =true; + $tmp = preg_replace("/^delVhost_/","",$name); + $tmp = base64_decode(preg_replace("/_.*$/","",$tmp)); + + /* Initiate deletion + */ + $this->RemoveVhost($tmp); + } + } + + /* Show dialog + */ + if($this->dialog!= NULL){ + $this->dialog->save_object(); + $this->dialog->parent = $this; + return($this->dialog->execute()); + } + + /* Create Listbox with existing Vhosts + */ + $VhostList = new divSelectBox("apacheConfigs"); + $VhostList -> SetHeight(254); + + /* Add entries to divlist + */ + $editImg = " + "; + foreach($this->Vhosts as $vhost => $values ){ + $VhostList->AddEntry(array( + array("string" => $vhost), + array("string" => str_replace("%s",base64_encode($vhost),$editImg)) + )); + } + + /* Assign ACL to smarty + */ + $info = $this->plInfo(); + foreach($info['plProvidedAcls'] as $name => $desc){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + + /* Display template + */ + $smarty->assign("VhostList",$VhostList->DrawList()); + $display.= $smarty->fetch(get_template_path('servApacheVhost.tpl', TRUE , dirname(__FILE__))); + return($display); + } + + + /* Delete specified vhost + */ + function RemoveVhost($id) + { + unset($this->Vhosts[$id]); + return(true); + } + + + /* This function returns all used Vhostnames + */ + function getUsedServerNames() + { + $ret = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=*))",array("apacheServerName")); + while($attr = $ldap->fetch()){ + $ret[$attr['apacheServerName'][0]][] = $attr['dn']; + } + return($ret); + } + + + /* Remove apache service + */ + function remove_from_parent() + { + foreach($this->Vhosts as $key => $vhost){ + $this->RemoveVhost($key); + } + $this->save(); + } + + + /* Save to LDAP */ + function save() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + /* Get differences + */ + + $old_dn = $this->orig_dn; + if($old_dn == "new"){ + $old_dn = $this->dn; + } + + $tmp = apacheUtils::getVhostEntriesDiff($this->config,$this->Vhosts,$old_dn); + + /* Updated vhost entries if reverser or forward name has changed + * Must be done before moving entries, else the given dn is invalid + */ + if(isset($tmp['vhostUpdates'])){ + foreach($tmp['vhostUpdates'] as $dn => $attrs){ + $ldap->cd($dn); + $ldap->modify($attrs); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + } + } + + /* Delete apache vhost + */ + foreach($tmp['del'] as $dn => $del){ + $ldap->cd($dn); + $ldap->rmdir_recursive($dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + } + + /* move follwoing entries + */ + foreach($tmp['move'] as $src => $dst){ + $this->recursive_move($src,$dst); + } + + /* Add || Update new apache entries + */ + foreach($tmp['add'] as $dn => $attrs){ + $ldap->cd($dn); + $ldap->cat($dn, array('dn')); + if(count($ldap->fetch())){ + $ldap->cd($dn); + $ldap->modify ($attrs); + }else{ + $ldap->cd($dn); + $ldap->add($attrs); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_ADD, get_class())); + } + } + } + + + /*! \brief Returns the required information about this plugin for the + service list + @return Array With information for the service plugin. + */ + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Apache service"); + #$fields['AllowEdit'] = TRUE; + #$fields['AllowRemove']= TRUE; + return($fields); + } + + + /* \brief Return plugin information used by the ACL handling. + @return Array ACL infos. + */ + static function plInfo() + { + return (array( + "plShortName" => _("Apache service"), + "plDescription" => _("Apache virtual host service")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 88, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "VirtualHost" => _("Virtual hosts")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/apache2/admin/systems/services/apache2/servApacheVhost.tpl b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/servApacheVhost.tpl new file mode 100644 index 000000000..30385f9bf --- /dev/null +++ b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/servApacheVhost.tpl @@ -0,0 +1,27 @@ +

{t}Apache VHosts{/t}

+ + + + +
+ {$VhostList} + + {render acl=$VirtualHostACL} + + {/render} +
+ + + +

 

+
+
+ +   + +
+ diff --git a/trunk/gosa-plugins/apache2/admin/systems/services/apache2/servApacheVhostEdit.tpl b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/servApacheVhostEdit.tpl new file mode 100644 index 000000000..9f08e8db1 --- /dev/null +++ b/trunk/gosa-plugins/apache2/admin/systems/services/apache2/servApacheVhostEdit.tpl @@ -0,0 +1,120 @@ +

{t}Generic{/t}

+ + + + + +
+ + + + + + + + + + + + + +
{t}Virtual host name{/t}{$must} + +
{t}Document root{/t}{$must} + +
{t}Admin mail address{/t}{$must} + +
+
+ + + + +
+

{t}Server Alias{/t}

+ + + + + + + +
+ {$apacheServerAlias} +
+ + + + + + + + + +
+

{t}URL Alias{/t}

+
+

{t}Directory Path{/t}

+
+ + + + +
+
+
+
+ +

 

+
+ + + + + + +
+

{t}Script Alias{/t}

+ + + + + + + +
+ {$apacheScriptAlias} +
+ + + + + + + + + +
+

{t}Alias Directory{/t}

+
+

{t}Script Directory{/t}

+
+ + + + +
+
+
+
+
+

+ + +

+
+ diff --git a/trunk/gosa-plugins/apache2/contrib/mod_vhost_ldap.ldif b/trunk/gosa-plugins/apache2/contrib/mod_vhost_ldap.ldif new file mode 100644 index 000000000..d27abe84f --- /dev/null +++ b/trunk/gosa-plugins/apache2/contrib/mod_vhost_ldap.ldif @@ -0,0 +1,11 @@ +dn: cn=mod_vhost_ldap,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: mod_vhost_ldap +olcAttributeTypes: ( 1.3.6.1.4.1.8387.1.1.2 NAME 'apacheServerName' SUP name DESC 'mod_vhost_ldap: Apache ServerName' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.8387.1.1.3 NAME 'apacheServerAlias' SUP name DESC 'mod_vhost_ldap: Apache ServerAlias' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.8387.1.1.4 NAME 'apacheDocumentRoot' SUP name DESC 'mod_vhost_ldap: Apache DocumentRoot' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.8387.1.1.5 NAME 'apacheServerAdmin' SUP name DESC 'mod_vhost_ldap: Apache ServerAdmin' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.14287.1.1.6 NAME 'apacheScriptAlias' SUP name DESC 'mod_cfg_ldap: Apache ScriptAlias' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.8387.1.1.7 NAME 'apacheSuexecUid' SUP name DESC 'mod_vhost_ldap: Apache SuexecUid' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.8387.1.1.8 NAME 'apacheSuexecGid' SUP name DESC 'mod_vhost_ldap: Apache SuexecGid' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} SINGLE-VALUE ) +olcObjectClasses: ( 1.3.6.1.4.1.8387.1.2.1 NAME 'apacheConfig' SUP 'top' MUST ( apacheServerName $ apacheDocumentRoot ) MAY ( apacheServerAlias $ apacheServerAdmin $ apacheScriptAlias $ apacheSuexecUid $ apacheSuexecGid ) ) diff --git a/trunk/gosa-plugins/apache2/contrib/mod_vhost_ldap.schema b/trunk/gosa-plugins/apache2/contrib/mod_vhost_ldap.schema new file mode 100644 index 000000000..f84db29ef --- /dev/null +++ b/trunk/gosa-plugins/apache2/contrib/mod_vhost_ldap.schema @@ -0,0 +1,68 @@ +## +## OIDs are owned by Globe Internet +## +## 1.3.6.1.4.1.14287.1.x - mod_vhost_ldap +## 1.3.6.1.4.1.14287.1.1.x - attributetypes +## 1.3.6.1.4.1.14287.1.2.x - objectclasses +## + +attributetype ( 1.3.6.1.4.1.8387.1.1.2 NAME 'apacheServerName' + SUP name + DESC 'mod_vhost_ldap: Apache ServerName' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.8387.1.1.3 NAME 'apacheServerAlias' + SUP name + DESC 'mod_vhost_ldap: Apache ServerAlias' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + +attributetype ( 1.3.6.1.4.1.8387.1.1.4 NAME 'apacheDocumentRoot' + SUP name + DESC 'mod_vhost_ldap: Apache DocumentRoot' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.8387.1.1.5 NAME 'apacheServerAdmin' + SUP name + DESC 'mod_vhost_ldap: Apache ServerAdmin' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.14287.1.1.6 NAME 'apacheScriptAlias' + SUP name + DESC 'mod_cfg_ldap: Apache ScriptAlias' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.8387.1.1.7 NAME 'apacheSuexecUid' + SUP name + DESC 'mod_vhost_ldap: Apache SuexecUid' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.8387.1.1.8 NAME 'apacheSuexecGid' + SUP name + DESC 'mod_vhost_ldap: Apache SuexecGid' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} + SINGLE-VALUE ) + +objectclass ( 1.3.6.1.4.1.8387.1.2.1 NAME 'apacheConfig' + SUP 'top' + MUST ( apacheServerName $ apacheDocumentRoot ) + MAY ( apacheServerAlias $ apacheServerAdmin $ apacheScriptAlias $ + apacheSuexecUid $ apacheSuexecGid ) ) diff --git a/trunk/gosa-plugins/apache2/help/guide.xml b/trunk/gosa-plugins/apache2/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/apache2/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/apache2/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..29049fd18 --- /dev/null +++ b/trunk/gosa-plugins/apache2/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,148 @@ +# translation of messages.po to french +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Benoit Mortier , 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-08-12 12:32+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/services/apache2/servApacheVhost.tpl:1 +msgid "Apache VHosts" +msgstr "Hôtes virtuels Apache" + +#: admin/systems/services/apache2/servApacheVhost.tpl:8 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:54 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:98 +msgid "Add" +msgstr "Ajouter" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:298 +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:317 +msgid "Up" +msgstr "En haut" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:299 +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:318 +msgid "Down" +msgstr "En Bas" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:300 +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:319 +msgid "Delete" +msgstr "Supprimer" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:358 +msgid "Name" +msgstr "Nom" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:365 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:7 +msgid "Virtual host name" +msgstr "Nom de l'hôte de virtuel" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:366 +msgid "Only lowercase strings are allowed as Virtual Host Name." +msgstr "" +"Seul les chaînes en miniscule sont permises dans les noms d'hôtes virtuels." + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:366 +msgid "e.g. example.com" +msgstr "ex: exemple.com" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:372 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:13 +msgid "Document root" +msgstr "Document racine" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:378 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:19 +msgid "Admin mail address" +msgstr "Adresse de messagerie de l'administrateur" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:387 +msgid "Server alias" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:397 +msgid "Script alias" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:61 +#: admin/systems/services/apache2/class_servApacheVhost.inc:284 +#: admin/systems/services/apache2/class_servApacheVhost.inc:297 +msgid "Apache service" +msgstr "Service Apache" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:237 +#: admin/systems/services/apache2/class_servApacheVhost.inc:248 +#: admin/systems/services/apache2/class_servApacheVhost.inc:271 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:298 +msgid "Apache virtual host service" +msgstr "Service de nom d'hôte virtuel apache" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:298 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:306 +msgid "Virtual hosts" +msgstr "Hôtes virtuels" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:1 +msgid "Generic" +msgstr "Informations" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:30 +msgid "Server Alias" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:42 +msgid "URL Alias" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:45 +msgid "Directory Path" +msgstr "Chemin du répertoire" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:74 +msgid "Script Alias" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:86 +msgid "Alias Directory" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:89 +msgid "Script Directory" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:112 +msgid "Save" +msgstr "Sauver" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:113 +msgid "Cancel" +msgstr "Annuler" + +#: admin/systems/services/apache2/class_apacheUtils.inc:194 +#, php-format +msgid "" +"Undefined vhost name '%s'. Vhost name must look like this 'www.example.com " +"or example.com'." +msgstr "" +"Nom d'hôte virtuel inconnu '%s'. Le nom d'hôte virtuel doit être comme ceci " +"'www.exemple.com ou exemple.com'" diff --git a/trunk/gosa-plugins/apache2/locale/messages.po b/trunk/gosa-plugins/apache2/locale/messages.po new file mode 100644 index 000000000..9c109e638 --- /dev/null +++ b/trunk/gosa-plugins/apache2/locale/messages.po @@ -0,0 +1,144 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/apache2/servApacheVhost.tpl:1 +msgid "Apache VHosts" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhost.tpl:8 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:54 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:98 +msgid "Add" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:298 +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:317 +msgid "Up" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:299 +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:318 +msgid "Down" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:300 +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:319 +msgid "Delete" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:358 +msgid "Name" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:365 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:7 +msgid "Virtual host name" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:366 +msgid "Only lowercase strings are allowed as Virtual Host Name." +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:366 +msgid "e.g. example.com" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:372 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:13 +msgid "Document root" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:378 +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:19 +msgid "Admin mail address" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:387 +msgid "Server alias" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheEditVhost.inc:397 +msgid "Script alias" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:61 +#: admin/systems/services/apache2/class_servApacheVhost.inc:284 +#: admin/systems/services/apache2/class_servApacheVhost.inc:297 +msgid "Apache service" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:237 +#: admin/systems/services/apache2/class_servApacheVhost.inc:248 +#: admin/systems/services/apache2/class_servApacheVhost.inc:271 +msgid "LDAP error" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:298 +msgid "Apache virtual host service" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:298 +msgid "Services" +msgstr "" + +#: admin/systems/services/apache2/class_servApacheVhost.inc:306 +msgid "Virtual hosts" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:1 +msgid "Generic" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:30 +msgid "Server Alias" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:42 +msgid "URL Alias" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:45 +msgid "Directory Path" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:74 +msgid "Script Alias" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:86 +msgid "Alias Directory" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:89 +msgid "Script Directory" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:112 +msgid "Save" +msgstr "" + +#: admin/systems/services/apache2/servApacheVhostEdit.tpl:113 +msgid "Cancel" +msgstr "" + +#: admin/systems/services/apache2/class_apacheUtils.inc:194 +#, php-format +msgid "" +"Undefined vhost name '%s'. Vhost name must look like this 'www.example.com " +"or example.com'." +msgstr "" diff --git a/trunk/gosa-plugins/apache2/plugin.dsc b/trunk/gosa-plugins/apache2/plugin.dsc new file mode 100644 index 000000000..c3c0b2f4c --- /dev/null +++ b/trunk/gosa-plugins/apache2/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = apache2 +description = "Apache2 vhost management module" +depends = systems +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ diff --git a/trunk/gosa-plugins/connectivity/help/guide.xml b/trunk/gosa-plugins/connectivity/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/connectivity/html/images/plugin.png b/trunk/gosa-plugins/connectivity/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..63800057f692e93182b5f8a822c81ae31467e48e GIT binary patch literal 3972 zcmV-~4}0*5P)OZ+G9m z?{m+4&mZ@qNCdi-OjTCZs=9sdt$n_4t#7Th_c;xJ;wCQ1DxF&vDq3JoeKNE%RTr5b z3Hg(N6arxwZYEdMd&aWmSM0L0i=pqIxFq+i*@qz@nEkbzy4oAQvhJFB*IvJRo^SEo zCYl>##G?VE1cabsSWIMfdIu)>{j0skv(F#f^~RA?54e5z?YdMXrf;+EnBRHLJn(Y|4sZNyl}ilu~9375U_^4$7-;`QcM^ zZSDB5P^O&$^&@wDZo}FoKl<)hZ%EE;iK7Sw&y(1WOIbHT2!x=Tfp=~q(KHQ35xAa5 zG8Uq&Tl~wzFQgyXw&$sv6^}f4_n!w7u@HrliIf6QN`w#; z%LXOg#IPL9v%F$DXsSZM@1tBcv27Q>rt!&-&y7aH+U7ldt;d{+myY~V2`F86eDQ{B z7H+%$8|#r0Du#`sC$50HKN_#cIUZ|>HQb+*<&b>G&TgULh)!*uXG2@+gSQr0cX6_b(iBD!H?TJC$? zFdZCM5(x!Rgurn;Tu)*<9=7ALXl}Fm;@%V2P572?C$lFv9Rk`^eiR63_iw&od7`B$ zLB()zT@O`J5CTpNjxmufA%wv5s!}@F9M@y!3?H#@kn}`>a>XJNu9DGIm3TD7=WbZm zde1}8-Rr>Tr$gYP83@k*`d?hWsPp!9s~6HxAH+1>nsgvNQJ|-P48wFV&G*XYJrXi( zBrvlnj?bs!d6L25Nya8iR16y_C8qurOynvAG>KUp z#FHw%Xa~~skW#X2Q7b|STvs9`wYlM8J1&;(;<%E*;Vj{xpSc}PkyGjHr-0t65Ku1s zwfH!I-={I0&hwv7?BQttC;~w^=x5if#~DuN$QCRdBZryorl?EGUW$C7%w$0)Th#H+ zOf@NyQsQ|M&-HK|iR(xV!(}W}VsJErZM!InxMC{c;ldIUfu?J|C4^`MP*sKTOcj*l zx-95wV&R--KDMA8Ka-?Sbu&^*p}Pr8tJ+HAksxKmqFAz6wrD1rPsMd5R;{(#j*DKg z8A+Ew3JN8IeMbf<>z3|J?EdkGBha}e83+WvDujpw2mv0FT;5~s^@o2C*m35o(Oog&;p{W{% z>9Fs}0Ius*?D5_IJ{1DzuYri7aL!&y5dzQi=pV}B_XQ{wvkdedq%PG(OLHr?+>pSp z!7FbJlAb8B|Hu#lpN~k$&(EJ7L8(pcNXXC1rJdyR2A1WbDhj7FS)Tmu>*$7sGL0SD z`D?)NyGT4C1j<<}3L!wi=y(oQ=I}g?SfYi=T$zBT@ukfl=lgfwjNhkntbd%I{xrFQ zfvTvqHYSNhLcF-QpOLX5o(HnFkJ{gTl97o#s(O*KoHBvFd-Di#iXsRFeCO;g6?#q# zkcj)x4S`Ss=(5~6$QOw;d&m9Q|(mI zaF7}GF`}UWQZfq2^J1G40RSnFN+}72e4M>Qa6ON<<_N9L4O9#Z4+SZ!EmBn#Uf6pA z=}8*vqAdPMGmWVzjj1S_rl41B8tS4%LIF(E#dRfxqCqBCX5*U6sE>znUGMFwfWJ5a z#H+6B5%6pHeJZk+1}P!vS4cH9(9u?p^jtg%o(pdr8RqDTF?>E1MOE-=8m;=5#ub zstQz9p?7eSQrX~|)ysK#Z!enKL3+H*zdgE}Y+gqQD3?t#*&K7);?%`8I$M);%$!YK zGD0F2L}!XcgC?R}d}u963SH&p@`t@rTaZ~itO4P4*Vo}#CJ9Mg2Fr!LRn zC*NDgXKz}|$-x0m^p9|CAV=@XJm3+F`sip$GP}Kw&b9^`8|sKeVjvW%@|LyRS0R*3 zd7gaw6&`!K`FuSjaa-6@aR5rxG*w&>I-W> z{h8lf5&{5`#ozozJQn=y!Z|aT%<1$EO_GdsA8TOE$|lxbw}P%Y^Kl%9{rmT4Mn^}l z-nen&MT>b#2O0-%FBFX{PmdK^I$Dy1Lw?G-MLZI~AL-zUU+rXU+q29_B?yIrxSqh1 zer(T&gCEyZ@T7_-eF#Mo3_z+rj-sR(EBU$a(E(mNIIMs3E9-;v<}Xs(+uKvQT<*KT zri)>l(vi{~-<=IMUH^8uVtpO_#>M)Z~o=u zk3XKi5Vk3gz2f1&|FtTNThkfCsF*IHfJQK&VM~LV&2g42SABdJiEUd*Sv|bi zj>Pq<=i`y_A_d(hJ)S#W8rt)h?x|`+Ht}df=_?|LhpqAz&tuX=!QMkW41=JP*?}ky3^~2!S)rS*d-0w)=swrH^J0 z@BZO;Mo;{HS7ya${%pm{Rm)~|wue*obx5hUU_lX zfu4iUJe?muzQ4BKTp)erl~>-fapT7IKA(?FCWE3VjE;_8^g-~sZB(3fO`PQ#;H&wW zj6~05CLC*=HLL5grR}rkFX)&xe`YuwjtG#R=TR)_rNM#jk^bJddxr)N9e2#!81GK8 z3Xr+{^2=BK;0HhWhgGXqMIFbXr>6(QFu3#1J8#&zbLRygJ6>oGh;u%l$%@Lm(hAi) zP$LsQic3pHK!_S#Fg-FDl0 zpai(Jb^gFER0HyTKD#wA06I|M-CFV0i1=y*Vl_hkn)_-2aDdGchrdfAGNvzfCnm=VJL|+oCfPQ-KuK0&NG{eLmmvRjXFr{?J1Y zy*WHQ{LW+f$;nCC-Q6t@9XceRfByN(>eZ`ns|6rbBYj?_OskEa&zAgau_@UQy`rn0 z>)NAyDr`*J+rItRe|KWf6E6U<`uh5XH{N*T%^Nms*mU*PS1(AVQb;K&7K>!FS@QWj znx-){G?cmPuDfnOaNxiWs*$pP=h5BWJ@&{WkNjxIjvYS%CIGYM9)B2l&bc;y30>Y`e{su# zeCox*3|6)&SPq1I;L4hNFq(HL=mzbnFv*ZYfdB)i@;Jpb(Qp7E6pkJ}I{DO7PyKxR z_U%6{l}bHSqh6ufB;F7B``YvfTzhwPak6sV{#}ow&033WU&`7!P%vO158Y!PIo+XE z8E1Z@LLv|XARZ9ZwKTE&*apM{cHy|tzS0oZo$-FJ`n9e$JQ z06aJ9=WUZ0v+2F1w2FHF;kVwa?_}sRCe7FYujLt8~be)cb-ig+IKOOk#+r7nokKO;N{|Y8sSL<#Aot<4& zlprM=bQ{JB?y(o1e(cA)9{J9rlf%8Im}X?BYSYWWS$6DHW#ZFqjgKcI<-_}, 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-04-02 14:20+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: personal/connectivity/intranet.tpl:4 +msgid "Intranet account" +msgstr "Intranet-Konto" + +#: personal/connectivity/class_connectivity.inc:15 +#: personal/connectivity/class_connectivity.inc:269 +#: personal/connectivity/main.inc:132 +msgid "Connectivity" +msgstr "Konnektivität" + +#: personal/connectivity/class_connectivity.inc:16 +#: personal/connectivity/class_intranetAccount.inc:18 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/class_connectivity.inc:272 +#: personal/connectivity/class_intranetAccount.inc:208 +msgid "My account" +msgstr "Mein Konto" + +#: personal/connectivity/class_connectivity.inc:276 +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/class_intranetAccount.inc:16 +#: personal/connectivity/class_intranetAccount.inc:205 +msgid "Intranet" +msgstr "Intranet" + +#: personal/connectivity/class_intranetAccount.inc:126 +#: personal/connectivity/class_intranetAccount.inc:193 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Intranet account settings" +msgstr "Einstellungen für Intranet-Konto" diff --git a/trunk/gosa-plugins/connectivity/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/connectivity/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..892f5bb9c --- /dev/null +++ b/trunk/gosa-plugins/connectivity/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,82 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/connectivity/intranet.tpl:4 +msgid "Intranet account" +msgstr "" + +#: personal/connectivity/class_connectivity.inc:15 +#: personal/connectivity/class_connectivity.inc:269 +#: personal/connectivity/main.inc:132 +msgid "Connectivity" +msgstr "Conectividad" + +#: personal/connectivity/class_connectivity.inc:16 +#: personal/connectivity/class_intranetAccount.inc:18 +msgid "This does something" +msgstr "" + +#: personal/connectivity/class_connectivity.inc:272 +#: personal/connectivity/class_intranetAccount.inc:208 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/connectivity/class_connectivity.inc:276 +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/class_intranetAccount.inc:16 +#: personal/connectivity/class_intranetAccount.inc:205 +msgid "Intranet" +msgstr "intranet" + +#: personal/connectivity/class_intranetAccount.inc:126 +#: personal/connectivity/class_intranetAccount.inc:193 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Intranet account settings" +msgstr "Configuración de la cuenta de intranet" + +#~ msgid "This account has no connectivity extensions." +#~ msgstr "Esta cuenta no tiene extensión de conectividad" + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Pulse en el botón - Editar - para cambiar la información en esta ventana" + +#~ msgid "Edit" +#~ msgstr "Editar" + +#~ msgid "Removing of user/intranet account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la eliminación de la cuenta de usuario/intranet con dn '%s'." + +#~ msgid "Saving of user/intranet account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la grabación de la cuenta de usuario/intranet con dn '%s'." diff --git a/trunk/gosa-plugins/connectivity/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/connectivity/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..a424082b7 --- /dev/null +++ b/trunk/gosa-plugins/connectivity/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,54 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-06-04 09:19+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/connectivity/intranet.tpl:4 +msgid "Intranet account" +msgstr "Compte Intranet" + +#: personal/connectivity/class_connectivity.inc:15 +#: personal/connectivity/class_connectivity.inc:269 +#: personal/connectivity/main.inc:132 +msgid "Connectivity" +msgstr "Connectivité" + +#: personal/connectivity/class_connectivity.inc:16 +#: personal/connectivity/class_intranetAccount.inc:18 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/class_connectivity.inc:272 +#: personal/connectivity/class_intranetAccount.inc:208 +msgid "My account" +msgstr "Mon Compte" + +#: personal/connectivity/class_connectivity.inc:276 +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Connectivity addon" +msgstr "Extension Connectivité" + +#: personal/connectivity/class_intranetAccount.inc:16 +#: personal/connectivity/class_intranetAccount.inc:205 +msgid "Intranet" +msgstr "Intranet" + +#: personal/connectivity/class_intranetAccount.inc:126 +#: personal/connectivity/class_intranetAccount.inc:193 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Intranet account settings" +msgstr "Paramètres du compte Intranet" diff --git a/trunk/gosa-plugins/connectivity/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/connectivity/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ca71aa59e --- /dev/null +++ b/trunk/gosa-plugins/connectivity/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,81 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/connectivity/intranet.tpl:4 +#, fuzzy +msgid "Intranet account" +msgstr "Crea estensioni telefoniche" + +#: personal/connectivity/class_connectivity.inc:15 +#: personal/connectivity/class_connectivity.inc:269 +#: personal/connectivity/main.inc:132 +msgid "Connectivity" +msgstr "Connettività" + +#: personal/connectivity/class_connectivity.inc:16 +#: personal/connectivity/class_intranetAccount.inc:18 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/class_connectivity.inc:272 +#: personal/connectivity/class_intranetAccount.inc:208 +msgid "My account" +msgstr "Identità" + +#: personal/connectivity/class_connectivity.inc:276 +#: personal/connectivity/class_intranetAccount.inc:212 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/class_intranetAccount.inc:16 +#: personal/connectivity/class_intranetAccount.inc:205 +msgid "Intranet" +msgstr "" + +#: personal/connectivity/class_intranetAccount.inc:126 +#: personal/connectivity/class_intranetAccount.inc:193 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/connectivity/class_intranetAccount.inc:212 +#, fuzzy +msgid "Intranet account settings" +msgstr "Crea estensioni telefoniche" + +#~ msgid "This account has no connectivity extensions." +#~ msgstr "Questa identità non possiede estensioni di connettività" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " +#~ "questo dialogo" + +#~ msgid "Edit" +#~ msgstr "Modifica" + +#, fuzzy +#~ msgid "Removing of user/intranet account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "Saving of user/intranet account with dn '%s' failed." +#~ msgstr "Crea estensioni telefoniche" diff --git a/trunk/gosa-plugins/connectivity/locale/messages.po b/trunk/gosa-plugins/connectivity/locale/messages.po new file mode 100644 index 000000000..7baf2f6a0 --- /dev/null +++ b/trunk/gosa-plugins/connectivity/locale/messages.po @@ -0,0 +1,56 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/intranet.tpl:4 +msgid "Intranet account" +msgstr "" + +#: personal/connectivity/class_connectivity.inc:15 +#: personal/connectivity/class_connectivity.inc:269 +#: personal/connectivity/main.inc:132 +msgid "Connectivity" +msgstr "" + +#: personal/connectivity/class_connectivity.inc:16 +#: personal/connectivity/class_intranetAccount.inc:18 +msgid "This does something" +msgstr "" + +#: personal/connectivity/class_connectivity.inc:272 +#: personal/connectivity/class_intranetAccount.inc:208 +msgid "My account" +msgstr "" + +#: personal/connectivity/class_connectivity.inc:276 +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/class_intranetAccount.inc:16 +#: personal/connectivity/class_intranetAccount.inc:205 +msgid "Intranet" +msgstr "" + +#: personal/connectivity/class_intranetAccount.inc:126 +#: personal/connectivity/class_intranetAccount.inc:193 +msgid "LDAP error" +msgstr "" + +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Intranet account settings" +msgstr "" diff --git a/trunk/gosa-plugins/connectivity/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/connectivity/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..33f66de28 --- /dev/null +++ b/trunk/gosa-plugins/connectivity/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,59 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005,2006,2008,2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-06-09 17:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/intranet.tpl:4 +msgid "Intranet account" +msgstr "Intranet account" + +#: personal/connectivity/class_connectivity.inc:15 +#: personal/connectivity/class_connectivity.inc:269 +#: personal/connectivity/main.inc:132 +msgid "Connectivity" +msgstr "Verbindingen" + +#: personal/connectivity/class_connectivity.inc:16 +#: personal/connectivity/class_intranetAccount.inc:18 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/class_connectivity.inc:272 +#: personal/connectivity/class_intranetAccount.inc:208 +msgid "My account" +msgstr "Mijn account" + +#: personal/connectivity/class_connectivity.inc:276 +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Connectivity addon" +msgstr "Verbindingen module" + +#: personal/connectivity/class_intranetAccount.inc:16 +#: personal/connectivity/class_intranetAccount.inc:205 +msgid "Intranet" +msgstr "Intranet" + +#: personal/connectivity/class_intranetAccount.inc:126 +#: personal/connectivity/class_intranetAccount.inc:193 +msgid "LDAP error" +msgstr "LDAP fout" + +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Intranet account settings" +msgstr "Intranet account instellingen" diff --git a/trunk/gosa-plugins/connectivity/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/connectivity/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..99ab9f862 --- /dev/null +++ b/trunk/gosa-plugins/connectivity/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,78 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/connectivity/intranet.tpl:4 +msgid "Intranet account" +msgstr "Konto Intranet" + +#: personal/connectivity/class_connectivity.inc:15 +#: personal/connectivity/class_connectivity.inc:269 +#: personal/connectivity/main.inc:132 +msgid "Connectivity" +msgstr "Połączenia" + +#: personal/connectivity/class_connectivity.inc:16 +#: personal/connectivity/class_intranetAccount.inc:18 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/class_connectivity.inc:272 +#: personal/connectivity/class_intranetAccount.inc:208 +msgid "My account" +msgstr "Moje konto " + +#: personal/connectivity/class_connectivity.inc:276 +#: personal/connectivity/class_intranetAccount.inc:212 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/class_intranetAccount.inc:16 +#: personal/connectivity/class_intranetAccount.inc:205 +msgid "Intranet" +msgstr "Inranet" + +#: personal/connectivity/class_intranetAccount.inc:126 +#: personal/connectivity/class_intranetAccount.inc:193 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/connectivity/class_intranetAccount.inc:212 +msgid "Intranet account settings" +msgstr "Ustawienia konta Intranet" + +#~ msgid "This account has no connectivity extensions." +#~ msgstr "To konto nie posiada rozszerzeń do Połączeń" + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Kliknij przycisk 'Edytuj' poniżej, aby zmienić informacje w tym oknie" + +#~ msgid "Edit" +#~ msgstr "Edytuj" + +#~ msgid "Removing of user/intranet account with dn '%s' failed." +#~ msgstr "Usuwanie konta intranet z dn '%s' nieudane." + +#~ msgid "Saving of user/intranet account with dn '%s' failed." +#~ msgstr "Zapisywanie konta intranet z dn '%s' nieudane." diff --git a/trunk/gosa-plugins/connectivity/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/connectivity/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f7ff7232a --- /dev/null +++ b/trunk/gosa-plugins/connectivity/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,78 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/connectivity/intranet.tpl:4 +#, fuzzy +msgid "Intranet account" +msgstr "Создать телефонный аккаунт" + +#: personal/connectivity/class_connectivity.inc:15 +#: personal/connectivity/class_connectivity.inc:269 +#: personal/connectivity/main.inc:132 +msgid "Connectivity" +msgstr "Подключение" + +#: personal/connectivity/class_connectivity.inc:16 +#: personal/connectivity/class_intranetAccount.inc:18 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/class_connectivity.inc:272 +#: personal/connectivity/class_intranetAccount.inc:208 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/connectivity/class_connectivity.inc:276 +#: personal/connectivity/class_intranetAccount.inc:212 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/class_intranetAccount.inc:16 +#: personal/connectivity/class_intranetAccount.inc:205 +msgid "Intranet" +msgstr "" + +#: personal/connectivity/class_intranetAccount.inc:126 +#: personal/connectivity/class_intranetAccount.inc:193 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/connectivity/class_intranetAccount.inc:212 +#, fuzzy +msgid "Intranet account settings" +msgstr "Создать телефонный аккаунт" + +#~ msgid "This account has no connectivity extensions." +#~ msgstr "В этой учетной записи нет атрибутов для подключения." + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." + +#~ msgid "Edit" +#~ msgstr "Изменить" + +#, fuzzy +#~ msgid "Removing of user/intranet account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" + +#, fuzzy +#~ msgid "Saving of user/intranet account with dn '%s' failed." +#~ msgstr "Создать телефонный аккаунт" diff --git a/trunk/gosa-plugins/connectivity/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/connectivity/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..5f08103f7 --- /dev/null +++ b/trunk/gosa-plugins/connectivity/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,83 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/connectivity/intranet.tpl:4 +msgid "Intranet account" +msgstr "内联网账号" + +#: personal/connectivity/class_connectivity.inc:15 +#: personal/connectivity/class_connectivity.inc:269 +#: personal/connectivity/main.inc:132 +msgid "Connectivity" +msgstr "互联" + +#: personal/connectivity/class_connectivity.inc:16 +#: personal/connectivity/class_intranetAccount.inc:18 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/class_connectivity.inc:272 +#: personal/connectivity/class_intranetAccount.inc:208 +msgid "My account" +msgstr "我的账号" + +#: personal/connectivity/class_connectivity.inc:276 +#: personal/connectivity/class_intranetAccount.inc:212 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/class_intranetAccount.inc:16 +#: personal/connectivity/class_intranetAccount.inc:205 +msgid "Intranet" +msgstr "内联网" + +#: personal/connectivity/class_intranetAccount.inc:126 +#: personal/connectivity/class_intranetAccount.inc:193 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/connectivity/class_intranetAccount.inc:212 +#, fuzzy +msgid "Intranet account settings" +msgstr "内联网账号" + +#~ msgid "This account has no connectivity extensions." +#~ msgstr "这个账号没有互联扩展。" + +#~ msgid "Ok" +#~ msgstr "好" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "点击下面的“编辑”按钮修改该对话框内的信息" + +#~ msgid "Edit" +#~ msgstr "编辑" + +#, fuzzy +#~ msgid "Removing of user/intranet account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of user/intranet account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" diff --git a/trunk/gosa-plugins/connectivity/personal/connectivity/class_connectivity.inc b/trunk/gosa-plugins/connectivity/personal/connectivity/class_connectivity.inc new file mode 100644 index 000000000..6300bf680 --- /dev/null +++ b/trunk/gosa-plugins/connectivity/personal/connectivity/class_connectivity.inc @@ -0,0 +1,287 @@ + + \version 2.30 + \date 29.03.2005 + + This class provides the functionality to read and write all attributes + relevant for connectivity settings from/to the LDAP. It does syntax checking + and displays the formulars required. + */ + +class connectivity extends plugin +{ + /* Definitions */ + var $plHeadline= "Connectivity"; + var $plDescription= "This does something"; + var $plIcon = "plugins/connectivity/images/plugin.png"; + + /* attribute list for save action */ + var $attributes= array(); + var $objectclasses= array(); + + var $ignore_account= TRUE; + var $plugin= array(); + var $plugin_name= array(); + var $CopyPasteVars = array("plugin","plugin_name"); + + var $multiple_support = TRUE; + + function connectivity (&$config, $dn= NULL,$parent =NULL) + { + /* Preseed permissions */ + $this->dn= $dn; + $ui= get_userinfo(); + + $this->config = $config; + + /* Load accounts */ + foreach ($config->data['TABS']['CONNECTIVITY'] as $plug){ + if (!plugin_available($plug['CLASS'])) { + continue; + } + $name= $plug['CLASS']; + $this->plugin_name[]= $name; + $this->plugin[$name]= new $name($config, $dn,$parent); + + /* Acl base && category configuration, + these settings will be overloaded in main.inc, + if we are editing ourself */ + $this->plugin[$name]-> set_acl_category("users"); + $this->plugin[$name]-> set_acl_base($this->dn); + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + $display= ""; + + /* Prepare templating */ + $smarty= get_smarty(); + + /* Do we represent a valid account? */ + if ($this->parent === NULL){ + $enabled= true; + foreach ($this->plugin_name as $name){ + if ($this->plugin[$name]->is_account){ + $enabled= true; + break; + } + } + if (!$enabled){ + $display= "\"\" ". + msgPool::noValidExtension().""; + $display.= back_to_main(); + return ($display); + } + } + + /* Remove checkboxes in single edit mode */ + if ($this->parent !== NULL){ + foreach ($this->plugin_name as $name){ + $this->plugin[$name]->parent= $this->parent; + } + } + + /* Execude objects */ + $is_first= true; + + $ReadOnly = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + + foreach ($this->plugin_name as $name){ + $this->plugin[$name]->ReadOnly = $ReadOnly; + if (!$is_first){ + $display.= '

 

'; + } else { + $is_first= false; + } + $display.= $this->plugin[$name]->execute(); + } + + /* Mark me as connectivity tab */ + $display.= ""; + return($display); + } + + + /* Save data to object */ + function save_object() + { + if (isset($_POST['connectivityTab'])){ + foreach ($this->plugin_name as $name){ + $this->plugin[$name]->save_object(); + } + } + } + + function check() + { + $message= plugin::check(); + + foreach ($this->plugin_name as $name){ + if($this->plugin[$name]->is_account){ + $tmp= $this->plugin[$name]->check(); + $message= array_merge($message, $tmp); + } + } + + return ($message); + } + + function set_acl_category($cat) + { + plugin::set_acl_category($cat); + foreach ($this->plugin_name as $name){ + $this->plugin[$name]->set_acl_category( $cat); + } + } + + function set_acl_base($base) + { + plugin::set_acl_base($base); + foreach ($this->plugin_name as $name){ + $this->plugin[$name]->set_acl_base( $base); + } + } + + /* Save to LDAP */ + function save() + { + /* Save objects */ + foreach ($this->plugin_name as $name){ + $this->plugin[$name]->dn= $this->dn; + + if ($this->plugin[$name]->is_account){ + $this->plugin[$name]->save(); + } else { + $this->plugin[$name]->remove_from_parent(); + } + } + } + + function remove_from_parent() + { + /* Remove objects */ + foreach ($this->plugin_name as $name){ + $this->plugin[$name]->dn= $this->dn; + $this->plugin[$name]->remove_from_parent(); + } + } + + function adapt_from_template($dn, $skip= array()) + { + /* Adapt objects */ + foreach ($this->plugin_name as $name){ + $this->plugin[$name]->dn= $this->dn; + $this->plugin[$name]->adapt_from_template($dn, $skip); + } + } + + /* Prepare the connectivity obj + */ + function PrepareForCopyPaste($obj) + { + $tmp = $this->plugin; + plugin::PrepareForCopyPaste($obj); + $this->plugin = $tmp; + foreach( $this->plugin as $key => $plug){ + $this->plugin[$key]->PrepareForCopyPaste($obj); + } + } + + + function enable_multiple_support() + { + plugin::enable_multiple_support(); + + foreach($this->plugin_name as $key => $name){ + if($this->plugin[$name]->multiple_support){ + $this->plugin[$name]->enable_multiple_support(); + }else{ + unset($this->plugin_name[$key]); + unset($this->plugin[$name]); + } + } + } + + + function multiple_execute() + { + return($this->execute()); + } + + /* Save data to object */ + function multiple_save_object() + { + if (isset($_POST['connectivityTab'])){ + foreach ($this->plugin_name as $name){ + $this->plugin[$name]->multiple_save_object(); + } + } + } + + function multiple_check() + { + $message = plugin::multiple_check(); + foreach ($this->plugin_name as $name){ + $message = array_merge($message,$this->plugin[$name]->multiple_check()); + } + return($message); + } + + function get_multi_init_values() + { + $ret = array(); + foreach($this->plugin as $name => $plugin){ + $ret = array_merge($ret,$plugin->get_multi_init_values()); + } + return($ret); + } + + function init_multiple_support($attrs,$attr) + { + foreach($this->plugin as $name => $plugin){ + $this->plugin[$name]->init_multiple_support($attrs,$attr); + } + } + + function get_multi_edit_values() + { + $ret['plugin'] = &$this->plugin; + return($ret); + } + + function set_multi_edit_values($values) + { + foreach($values['plugin'] as $name => $plugin){ + $this->plugin[$name]->set_multi_edit_values($plugin->get_multi_edit_values()); + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Connectivity"), + "plDepends" => array("user"), + "plPriority" => 20, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plDescription" => _("Connectivity addon"), + "plSelfModify" => TRUE, + + "plProvidedAcls" => array() + )); + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/connectivity/personal/connectivity/class_intranetAccount.inc b/trunk/gosa-plugins/connectivity/personal/connectivity/class_intranetAccount.inc new file mode 100644 index 000000000..db0eef261 --- /dev/null +++ b/trunk/gosa-plugins/connectivity/personal/connectivity/class_intranetAccount.inc @@ -0,0 +1,268 @@ + + \version 1.00 + \date 1.07.2005 + + \brief Enables Apache authentification for Intranet through openldap with .htaccess files + */ + +class intranetAccount extends plugin +{ + /*! Definitions */ + var $plHeadline= "Intranet"; + /*! Definitions */ + var $plDescription= "This does something"; + + /* attribute list for save action */ + var $attributes= array(); + /* ObjectClasses list for save action */ + var $objectclasses= array("gosaIntranetAccount"); + var $ReadOnly = false; + + var $uid =""; + + var $view_logged = FALSE; + var $multiple_support = TRUE; + + /*! \brief Konstructor + + \param $config The Config Object used to initialise plugin + \param $dn The DN of the currently edited entry + \author Harald Falk + \version 1.00 + \date 1.07.2005 + */ + function intranetAccount (&$config, $dn= NULL, $parent=NULL) + { + plugin::plugin ($config, $dn,$parent); + + /* Setting uid to default */ + if(isset($this->attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + } + + /*! + \brief General execution + \author Harald Falk + \version 1.00 + \date 1.07.2005 + + Load smarty Template and assign needed smarty vars + */ + + + function execute() + { + /* Call parent execute */ + // plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + $display= ""; + + $smarty= get_smarty(); + + if ($this->is_account){ + $smarty->assign("intranetState", "checked"); + $smarty->assign("wstate", ""); + } else { + $smarty->assign("wstate", "disabled"); + $smarty->assign("intranetState", ""); + } + + //! Ever assign vars to smarty in both cases, to avoid php errors (missing variable aso. ) + if ($this->parent !== NULL){ + $smarty->assign("tabbed", 1); + }else{ + $smarty->assign("tabbed", 0); + } + + /* check if we are allowed to switch the checkbox. + */ + $smarty->assign('gosaIntranetACL', preg_replace("/w/","",$this->getacl("",$this->ReadOnly))); + if(($this->acl_is_removeable() && $this->is_account) || + ($this->acl_is_createable() && !$this->is_account)){ + $smarty->assign('gosaIntranetACL', $this->getacl("",$this->ReadOnly)); + } + + $smarty->assign("use_intranet",in_array("intranet",$this->multi_boxes)); + $smarty->assign("multiple_support",$this->multiple_support_active); + $display.= $smarty->fetch (get_template_path('intranet.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + /*! + \brief Delete ext from User + \author Harald Falk + \version 1.00 + \date 1.07.2005 + Handles deletion of this object + */ + function remove_from_parent() + { + if($this->acl_is_removeable() && $this->initially_was_account){ + plugin::remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->postremove(array("uid"=>$this->uid)); + } + } + + + /*! + \brief handles Post data + \author Harald Falk + \version 1.00 + \date 1.07.2005 + Save data to object + */ + function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + if (isset($_POST['intranet'])){ + if (!$this->is_account && $_POST['intranet'] == "B"){ + if($this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + + plugin::save_object(); + if (isset($_POST["INTRANETStatus"])){ + $this->INTRANETStatus = "disabled"; + } else { + $this->INTRANETStatus = "enabled"; + } + } + + + /*! \brief Handles LDAP saves + \author Harald Falk + \version 1.00 + \date 1.07.2005 + Save objectClass for User in LDAP + + */ + function save() + { + plugin::save(); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->postcreate(array("uid" => $this->uid)); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Intranet"), + "plDepends" => array("user"), + "plPriority" => 25, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plDescription" => _("Intranet account settings")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + + "plProvidedAcls" => array() + )); + } + + + function multiple_save_object() + { + if (isset($_POST['connectivityTab'])){ + plugin::multiple_save_object(); + if(isset($_POST['use_intranet'])){ + $this->multi_boxes[] = "intranet"; + if (isset($_POST['intranet'])){ + if (!$this->is_account && $_POST['intranet'] == "B"){ + if($this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + } + } + + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("intranet",$this->multi_boxes)){ + $ret['is_account'] = $this->is_account; + } + return($ret); + } + + function set_multi_edit_values($values) + { + plugin::set_multi_edit_values($values); + if(isset($values['is_account'])){ + $this->is_account = $values['is_account']; + } + } + + function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + if(isset($attrs['objectClass']) && in_array("gosaIntranetAccount",$attrs['objectClass'])){ + $this->is_account = TRUE; + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/connectivity/personal/connectivity/intranet.tpl b/trunk/gosa-plugins/connectivity/personal/connectivity/intranet.tpl new file mode 100644 index 000000000..303c0fbca --- /dev/null +++ b/trunk/gosa-plugins/connectivity/personal/connectivity/intranet.tpl @@ -0,0 +1,6 @@ +

+ {render acl=$gosaIntranetACL checkbox=$multiple_support checked=$use_intranet} + + {t}Intranet account{/t} + {/render} +

diff --git a/trunk/gosa-plugins/connectivity/personal/connectivity/main.inc b/trunk/gosa-plugins/connectivity/personal/connectivity/main.inc new file mode 100644 index 000000000..48610b3b7 --- /dev/null +++ b/trunk/gosa-plugins/connectivity/personal/connectivity/main.inc @@ -0,0 +1,137 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('connectivity'); + session::un_set('edit'); + +}else{ + + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + session::un_set ('edit'); + session::un_set ('connectivity'); + } + + /* Create connectivity object on demand */ + if (!session::is_set('connectivity') || (isset($_GET['reset']) && + $_GET['reset'] == 1)){ + $connectivity= new connectivity ($config, $ui->dn); + $connectivity->enable_CSN_check(); + $connectivity->set_acl_base($ui->dn); + $connectivity->set_acl_category("users"); + + /* Adjust acl's to mode */ + foreach ($connectivity->plugin_name as $name){ + $connectivity->plugin[$name]->set_acl_category( "users"); + $connectivity->plugin[$name]->set_acl_base($ui->dn); + } + session::set('connectivity',$connectivity); + } + $connectivity = session::get('connectivity'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $connectivity->save_object (); + } + + /* Enter edit mode? */ + if (isset($_POST['edit']) || isset($_POST['delete_lock'])){ + + /* Check locking */ + if ((($username= get_lock($ui->dn)) != "") && (!session::is_set('edit'))){ + session::set('back_plugin',$plug); + $display = gen_locked_message ($username, $ui->dn); + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $connectivity->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $connectivity->save (); + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Remove from session */ + session::un_set ('connectivity'); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + $info= ""; + $display= $connectivity->execute (); + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('connectivity',$connectivity); + } + + + $display.="
"; + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + $info= "\"\" ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + + $info.= "\"\"".msgPool::clickEditToChange(); + $display.= "\n"; + $display.= "\n"; + } + $display.="
"; + + /* Page header*/ + $display= print_header(get_template_path($connectivity->plIcon), + _("Connectivity"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/connectivity/plugin.dsc b/trunk/gosa-plugins/connectivity/plugin.dsc new file mode 100644 index 000000000..f379e8cc6 --- /dev/null +++ b/trunk/gosa-plugins/connectivity/plugin.dsc @@ -0,0 +1,6 @@ +[gosa-plugin] +name = connectivity +description = "Connectivity base plugin - pool for really small plugins" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ diff --git a/trunk/gosa-plugins/dak/addons/dak/class_DAK.inc b/trunk/gosa-plugins/dak/addons/dak/class_DAK.inc new file mode 100644 index 000000000..ce41bee46 --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/class_DAK.inc @@ -0,0 +1,121 @@ +get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->search("(&(macAddress=*)(FAIrepository=*)(objectClass=FAIrepositoryServer))",array("cn","FAIrepository","macAddress")); + while($attrs = $ldap->fetch()){ + for($i = 0 ; $i < $attrs['FAIrepository']['count'] ; $i ++){ + list($url,$parent,$release,$sections) = explode("|",$attrs['FAIrepository'][$i]); + $repo['SECTIONS'] = split(",",$sections); + $repo['SERVER'] = $attrs['cn'][0]; + $repo['RELEASE'] = $release; + $repo['MAC'] = $attrs['macAddress'][0]; + $repo['PARENT'] = $parent; + $repo['URL'] = $url; + $repo['DN'] = $attrs['dn']; + $res[] = $repo; + } + } + return($res); + } + + + /*! \brief Returns all configured repository server and some + informations about release/sections/parent. + @param Object The GOsa configuration object. + @return Array Repository infromations. + */ + public static function get_repositories_by_server($config) + { + if(!$config instanceOf config){ + trigger_error("Invalid config object given, aborting."); + return; + } + $res = array(); + $rest = get_sub_list("(&(macAddress=*)(FAIrepository=*)(objectClass=FAIrepositoryServer))", + "server",get_ou("serverRDN"),$config->current['BASE'], + array("cn","FAIrepository","macAddress"),GL_SUBSEARCH); + + foreach($rest as $attrs){ + $serv = array(); + $serv['REPOSITORIES'] = array(); + for($i = 0 ; $i < $attrs['FAIrepository']['count'] ; $i ++){ + list($url,$parent,$release,$sections) = explode("|",$attrs['FAIrepository'][$i]); + $repo['SECTIONS'] = split(",",$sections); + $repo['RELEASE'] = $release; + $repo['PARENT'] = $parent; + $repo['URL'] = $url; + $serv['REPOSITORIES'] [] = $repo; + } + $serv['MAC'] = $attrs['macAddress'][0]; + $serv['DN'] = $attrs['dn']; + $serv['SERVER'] = $attrs['cn'][0]; + $res[] = $serv; + } + return($res); + } + + + /*! \brief Returns all keyring entries for the specified server + @param String The servers mac address. + @return Array All keyring entries. + */ + public static function list_keys($server) + { + $o_queue = new gosaSupportDaemon(); + $data = $o_queue->DAK_keyring_entries($server); + if($o_queue->is_error()){ + msg_dialog::display(_("Error"), $o_queue->get_error(), ERROR_DIALOG); + } + return($data); + } + + + /*! \brief Imports the given key into a keyring specified by server + @param String The mac address of the server that provides the keyring. + @param String The Key to import. + @return Boolean TRUE in case of success else FALSE. + */ + public static function import_key($server,$key) + { + $o_queue = new gosaSupportDaemon(); + $o_queue->DAK_import_key($server,$key); + if($o_queue->is_error()){ + msg_dialog::display(_("Error"), $o_queue->get_error(), ERROR_DIALOG); + return(FALSE); + } + return(TRUE); + } + + + /*! \brief Removes the given key from a keyring. + @param String The servers mac address where the keyring is located. + @param String The Key UID to remove. + @return Boolean TRUE in case of success else FALSE. + */ + public static function remove_key($server,$key) + { + $o_queue = new gosaSupportDaemon(); + $o_queue->DAK_remove_key($server,$key); + if($o_queue->is_error()){ + msg_dialog::display(_("Error"), $o_queue->get_error(), ERROR_DIALOG); + return(FALSE); + } + return(TRUE); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dak/addons/dak/class_dakkeyring.inc b/trunk/gosa-plugins/dak/addons/dak/class_dakkeyring.inc new file mode 100644 index 000000000..6b029f7ed --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/class_dakkeyring.inc @@ -0,0 +1,290 @@ +Servers = DAK::get_repositories_by_server($this->config); + if(count($this->Servers)){ + $this->selected_Server = key($this->Servers); + } + } + + + /*! \brief Create HTML output for this plugin. + @return String HTML output. + */ + public function execute() + { + if(isset($_POST['search'])){ + $this->refresh_list(); + } + + $smarty= get_smarty(); + $smarty->assign("Servers" , $this->Servers); + $smarty->assign("selected_Server" , $this->selected_Server); + $smarty->assign("list",$this->CreateList()); + return($smarty->fetch (get_template_path('dak_keyring.tpl', TRUE, dirname(__FILE__)))); + } + + + /*! \brief Refresh the list of keys for the currently selected server + This function is automatically called when a key was added and removed. + */ + private function refresh_list() + { + $details = array(); + foreach($this->list as $entry){ + if(isset($entry['DETAILS']) && $entry['DETAILS'] && isset($entry['ATTRIBUTES']['UID'])){ + $details[] = $entry['ATTRIBUTES']['UID']; + } + } + + $tmp = DAK::list_keys($this->Servers[$this->selected_Server]['MAC']); + $this->list = array(); + foreach($tmp as $entry){ + if(isset($entry['ATTRIBUTES']['UID']) && in_array($entry['ATTRIBUTES']['UID'],$details)){ + $entry['DETAILS'] = TRUE; + } + $this->list[] = $entry; + } + } + + + /*! \brief Creates the HTML output representing the keylist + for this currently selected server + @return String HTML list containig all keys for the selected server. + */ + private function CreateList() + { + $divlist = new divlist("DAK_keyring"); + $divlist->SetWidth("100%"); + $divlist->SetHeight("450px"); + $divlist->SetEntriesPerPage(0); + + /* Set default col styles + */ + $s0 = "style='width:10px;'"; + $s1 = "style='width:70px;'"; + $s2 = "style='width:50px;'"; + $s3 = "style='width:130px;'"; + $s4 = ""; + $s5 = "style='text-align: right;width:50px; border-right:0px;'"; + + /* Add header + */ + $h0 = array("string" => "", "attach" => $s0); + $h1 = array("string" => _("Key ID"), "attach" => $s1); + $h2 = array("string" => _("Length"), "attach" => $s2); + $h3 = array("string" => _("Status"), "attach" => $s3); + $h4 = array("string" => _("UID"), "attach" => $s4); + $h5 = array("string" => _("Action"), "attach" => $s5); + $divlist->SetHeader(array($h0,$h1,$h2,$h3,$h4,$h5)); + + /* Add entries + */ + foreach($this->list as $key => $entry){ + + /* Check if all attributes are given + */ + if(!is_array($entry['UID'])){ + $entry['UID'] = array($entry['UID']); + } + $key_id = $length = $created = $expired = $expires = ""; + + foreach(array("key_id"=>"UID","length"=>"LENGTH","created"=>"CREATED","expired"=>"EXPIRED","expires"=>"EXPIRES") as $var => $name){ + if(isset($entry['ATTRIBUTES'][$name])){ + $$var = $entry['ATTRIBUTES'][$name]; + } + } + + $status ="-"; + $title = " title='".sprintf(_("Created: %s"),$created)."' "; + if(empty($expires) && empty($expired)) $status = ""._("Valid").""; + if(!empty($expired)) $status = ""._("Expired: ").$expired.""; + if(!empty($expires)) $status = ""._("Expires: ").$expires.""; + + /* Create detail icon + */ + $hide = " "; + $down = " "; + + $actions = ""; + + /* Add detailed entry + (All UIDs are listed, each in a single column) + */ + if(isset($entry['DETAILS']) && $entry['DETAILS'] == TRUE){ + $first = TRUE; + foreach($entry['UID'] as $val){ + + $f0 = array("string" => "","attach" => $s0); + $f1 = array("string" => "","attach" => $s1); + $f2 = array("string" => "","attach" => $s2); + $f3 = array("string" => "","attach" => $s3); + $f4 = array("string" => htmlentities(utf8_decode($val),ENT_QUOTES,"UTF-8"), "attach" => $s4); + $f5 = array("string" => "","attach" => $s5); + + if($first){ + $first = FALSE; + $f0 = array("string" => $hide ,"attach" => $s0); + $f1 = array("string" => $key_id ,"attach" => $s1); + $f2 = array("string" => $length ,"attach" => $s2); + $f3 = array("string" => $status ,"attach" => $s3); + $f4 = array("string" => htmlentities(utf8_decode($val),ENT_QUOTES,"UTF-8"), "attach" => $s4); + $f5 = array("string" => $actions ,"attach" => $s5); + } + $divlist->AddEntry(array($f0,$f1,$f2,$f3,$f4,$f5)); + } + }else{ + + /* Add non detailed entries, just the first uid is displayed. + */ + if(count($entry['UID']) > 1){ + $f0 = array("string" => $down, "attach" => $s0); + }else{ + $f0 = array("string" => "", "attach" => $s0); + } + $f1 = array("string" => $key_id, "attach" => $s1); + $f2 = array("string" => $length, "attach" => $s2); + $f3 = array("string" => $status, "attach" => $s3); + $f4 = array("string" => htmlentities(utf8_decode($entry['UID'][0]),ENT_QUOTES,"UTF-8"), "attach" => $s4); + $f5 = array("string" => $actions,"attach" => $s5); + $divlist->AddEntry(array($f0,$f1,$f2,$f3,$f4,$f5)); + + } + } + return($divlist->DrawList()); + } + + + /*! \brief Act on the HTML posts for this plugin + */ + public function save_object() + { + plugin::save_object(); + + /* Save html posts, like the selected repository server + */ + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = get_post($attr); + } + } + + /* Display details icon was clicked + */ + foreach($_POST as $name => $value){ + if(preg_match("/^remove_key_/",$name)){ + $id = preg_replace("/^remove_key_([0-9]*)_.*$/","\\1",$name); + $this->remove_key($id); + $this->refresh_list(); + break; + } + + if(preg_match("/^details_/",$name)){ + $id = preg_replace("/^details_([0-9]*)_.*$/","\\1",$name); + if(isset($this->list[$id])){ + if(!isset($this->list[$id]['DETAILS']) || !$this->list[$id]['DETAILS']){ + $this->list[$id]['DETAILS'] = TRUE; + }else{ + $this->list[$id]['DETAILS'] = FALSE; + } + break; + } + } + } + + /* Import new keys + */ + if(isset($_POST['import_key']) && isset($_FILES['import'])){ + if($_FILES['import']['size'] != 0){ + $key = file_get_contents($_FILES['import']['tmp_name']); + if($this->import_key($key)){ + $this->refresh_list(); + } + } + } + } + + + /*! \brief Removes the given key from the keyring server. + @return Boolean TRUE in case of success else FALSE. + */ + private function remove_key($key) + { + if($this->list[$key]){ + $mac = $this->Servers[$this->selected_Server]['MAC']; + return(DAK::remove_key($mac,$this->list[$key]['ATTRIBUTES']['UID'])); + } + } + + + /*! \brief Imports a new key into the keyring for the currently selected server + @return Boolean TRUE in case of success else FALSE. + */ + private function import_key($key) + { + $mac = $this->Servers[$this->selected_Server]['MAC']; + return(DAK::import_key($mac,$key)); + } + + + /*! \brief ACL plugin information + */ + static function plInfo() + { + return (array( + "plShortName" => _("DAK keyring")." ("._("Addon").")", + "plDescription" => _("DAK keyring management")." ("._("Addon").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 98, + "plSection" => array("addon"), + "plCategory" => array("server"), + "plProvidedAcls" => + array( + ) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dak/addons/dak/class_dakplug.inc b/trunk/gosa-plugins/dak/addons/dak/class_dakplug.inc new file mode 100644 index 000000000..4cc7e0674 --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/class_dakplug.inc @@ -0,0 +1,31 @@ +tabs = new dak_tabs($config, $config->data['TABS']['DAK_TABS'],""); + } + + public function execute() + { + return($this->tabs->execute()); + } + + public function save_object() + { + $this->tabs->save_object(); + } + + public function save() {} + public function remove_from_parent() {} + public function check() {} + +} + +?> diff --git a/trunk/gosa-plugins/dak/addons/dak/class_dakqueue.inc b/trunk/gosa-plugins/dak/addons/dak/class_dakqueue.inc new file mode 100644 index 000000000..3bf9448e7 --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/class_dakqueue.inc @@ -0,0 +1,71 @@ +assign("Repositories" , DAK::get_repositories($this->config)); + $smarty->assign("selected_Repository" , $this->selected_Repository); + return($smarty->fetch (get_template_path('dak_queue.tpl', TRUE, dirname(__FILE__)))); + } + + public function save_object() + { + plugin::save_object(); + + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = get_post($attr); + } + } + } + + /*! \brief ACL plugin information + */ + static function plInfo() + { + return (array( + "plShortName" => _("DAK queue")." ("._("Addon").")", + "plDescription" => _("DAK queue management")." ("._("Addon").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 98, + "plSection" => array("addon"), + "plCategory" => array("server"), + "plProvidedAcls" => + array( + ) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dak/addons/dak/class_dakrepository.inc b/trunk/gosa-plugins/dak/addons/dak/class_dakrepository.inc new file mode 100644 index 000000000..711912d99 --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/class_dakrepository.inc @@ -0,0 +1,57 @@ +fetch (get_template_path('dak_repository.tpl', TRUE, dirname(__FILE__)))); + } + + + + /*! \brief ACL plugin information + */ + static function plInfo() + { + return (array( + "plShortName" => _("DAK repository")." ("._("Addon").")", + "plDescription" => _("DAK repository management")." ("._("Addon").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 98, + "plSection" => array("addon"), + "plCategory" => array("server"), + "plProvidedAcls" => + array( + ) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dak/addons/dak/dak_keyring.tpl b/trunk/gosa-plugins/dak/addons/dak/dak_keyring.tpl new file mode 100644 index 000000000..83d4c634e --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/dak_keyring.tpl @@ -0,0 +1,33 @@ +
+

[F]{t}Filter{/t}

+
+
+ + + + + + +
+ +   + + + + + + +
+
+ +
+
+
+{$list} +
+
diff --git a/trunk/gosa-plugins/dak/addons/dak/dak_queue.tpl b/trunk/gosa-plugins/dak/addons/dak/dak_queue.tpl new file mode 100644 index 000000000..be6f9da6f --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/dak_queue.tpl @@ -0,0 +1,20 @@ +
+

[F]{t}Filter{/t}

+
+
+ + + + + +
+ +   + + +
diff --git a/trunk/gosa-plugins/dak/addons/dak/dak_repository.tpl b/trunk/gosa-plugins/dak/addons/dak/dak_repository.tpl new file mode 100644 index 000000000..8bd6648ed --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/dak_repository.tpl @@ -0,0 +1 @@ +asdf diff --git a/trunk/gosa-plugins/dak/addons/dak/main.inc b/trunk/gosa-plugins/dak/addons/dak/main.inc new file mode 100644 index 000000000..c2fcbb005 --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/main.inc @@ -0,0 +1,51 @@ +save_object(); + $display= $dak_plug->execute (); + $display.= "\n"; + + /* Page header*/ + $display= print_header(get_template_path($dak_plug->plIcon), _("DAK")).$display; + + /* Store changes in session */ + session::set('dak_plug',$dak_plug); +} +?> diff --git a/trunk/gosa-plugins/dak/addons/dak/tabs_dak.inc b/trunk/gosa-plugins/dak/addons/dak/tabs_dak.inc new file mode 100644 index 000000000..b64676db9 --- /dev/null +++ b/trunk/gosa-plugins/dak/addons/dak/tabs_dak.inc @@ -0,0 +1,11 @@ + diff --git a/trunk/gosa-plugins/dak/html/images/down-arrow.png b/trunk/gosa-plugins/dak/html/images/down-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..f0fb47d82646a9cfc0da67d2b721f8986c001298 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV$P6Uc&JEE3QfvV}A+G=b{|7Qd4_&SUQj8@* ze!&b5&u*lFI7!~_E({&4vK~MVXMsm#F#`j)5C}6~x?A@LD9B#o>FdgVnS)nYRNNp* z^EgmQ+|$J|q+(9;kNXD#&L2oPen8>yfddB_7-X855*H*j-v%mS@O1TaS?83{1OPX@ BEXV)= literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/dak/html/images/forward-arrow.png b/trunk/gosa-plugins/dak/html/images/forward-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3189a0a7477aa4d6a3b0546e1704b70fe7a3d4 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c8$P6S!SJzDjQfvV}A+G=b{|7Qd4_&SUQj8@* ze!&b5&u*lFI7!~_E({&4vK~MVXMsm#F#`j)AP6(or^HVL3bL1Y`ns}T=HTU(gnPbQZXkvBf;XphlYpD0`dtN3=Ar9tcKs;3kLudFnGH9xvX(RCwBA z{Qv(y!$1On0Ac|VjEsy#DL&4?5CC+p0TA2&V_*;fv4J!LkiGzHxNS|^Z-aN1kw|HfDXgw0Du6( z>j0qT0YGX#$hV-N5&&X;d3gpNTU!PuAdOe)bgw+8+%jW|vPhbPGp8(F-*@a_*x%E`@DbvOz!+$n0ND)? zKyU{@Q~P};AgwGa${^6)&A`ab4KYDck%7V3n1KNpzYM2N;kVq(jDbN;j)CFqS)gh6 z;ll5xOkvn_@E|BnfU>J%JSc$z?FI-SCU|f_vYG%W!STh#F);oDDt-T+fk8|RVmSza z3^p);h-1SbIglC<0OI$xD*gyhJ=Cv$N>NW1a<(BV-Jc8ZUF&=?~%d8i4e;i9Z|(`lnuWZEMWMN zn21$Q02=H-)9gWffB=GpfB>j$XW`+&?f?*IZ-)fCyF1=YfX{Lm;0NLt5VtS@1Q09) zz_l8~j~}SPj}EG0U&^2Apph<-@oGy0T}r6hvGH>)B#`s5J0dH zxByCsU;x7HJAm%E1;qc*@%;J!u>zntOwE5BYW^Xqf#G97 z+y}(HpynOWZh!z{fHg|D0jrLEAj8<%5!loeyXA`)qpAa8kQg=qG6PB79H1RNK)Ya` z2M8c|T>xssfzrV}CZG_g76jqDcNrLRb5X;0#R>+7{CtEO7zT-f{sI2b=2HKi63=Bm@_)}pYFn~is z7#NC+5p@L+d;(_QMZmh?`@er6Hz<}tt7CuwLTQj}fK*EB`PkVR?0}6vmS;kRSv61p0hG zupx69Si*vu>E&omGJpWW+9+KKZIto@cl4bcPV8OQG>Q#o9U%!GZUr>&v zQ3?=1IGg3mpdrBm3;|tLRR&E^vy23A4%i$!cKbHNcVGyh`yAN;00D%zW3m{MCP1Mf zz{SPIpaM)6axyXu!h(WW)xQSTBX^%XVYmv6?+@R;flFARaAFyrjtM{j5$u{RfVScO zA$84IfejZSpd, 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-12-03 15:39+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: addons/dak/dak_keyring.tpl:2 addons/dak/dak_queue.tpl:2 +msgid "Filter" +msgstr "Filter" + +#: addons/dak/dak_keyring.tpl:11 +msgid "Server" +msgstr "Server" + +#: addons/dak/dak_keyring.tpl:18 +msgid "Search" +msgstr "Suchen" + +#: addons/dak/dak_keyring.tpl:22 +msgid "Import" +msgstr "Importieren" + +#: addons/dak/class_dakkeyring.inc:114 +msgid "Key ID" +msgstr "Schlüssel-ID" + +#: addons/dak/class_dakkeyring.inc:115 +msgid "Length" +msgstr "Länge" + +#: addons/dak/class_dakkeyring.inc:116 +msgid "Status" +msgstr "Status" + +#: addons/dak/class_dakkeyring.inc:117 +msgid "UID" +msgstr "UID" + +#: addons/dak/class_dakkeyring.inc:118 +msgid "Action" +msgstr "Aktion" + +#: addons/dak/class_dakkeyring.inc:139 +#, php-format +msgid "Created: %s" +msgstr "Angelegt: %s" + +#: addons/dak/class_dakkeyring.inc:140 +msgid "Valid" +msgstr "Gültig" + +#: addons/dak/class_dakkeyring.inc:141 +msgid "Expired: " +msgstr "Abgelaufen: " + +#: addons/dak/class_dakkeyring.inc:142 +msgid "Expires: " +msgstr "Läuft ab: " + +#: addons/dak/class_dakkeyring.inc:276 +msgid "DAK keyring" +msgstr "DAK-Schlüsselbund" + +#: addons/dak/class_dakkeyring.inc:276 addons/dak/class_dakkeyring.inc:277 +#: addons/dak/class_dakrepository.inc:43 addons/dak/class_dakrepository.inc:44 +#: addons/dak/class_dakqueue.inc:57 addons/dak/class_dakqueue.inc:58 +msgid "Addon" +msgstr "Zusätzliches" + +#: addons/dak/class_dakkeyring.inc:277 +msgid "DAK keyring management" +msgstr "DAK-Schlüsselbund-Verwaltung" + +#: addons/dak/dak_queue.tpl:11 +msgid "Repositories" +msgstr "Repositorien" + +#: addons/dak/class_dakrepository.inc:43 +msgid "DAK repository" +msgstr "DAK Repository" + +#: addons/dak/class_dakrepository.inc:44 +msgid "DAK repository management" +msgstr "DAK Repository-Verwaltung" + +#: addons/dak/class_DAK.inc:80 addons/dak/class_DAK.inc:96 +#: addons/dak/class_DAK.inc:113 +msgid "Error" +msgstr "Fehler" + +#: addons/dak/main.inc:46 +msgid "DAK" +msgstr "DAK" + +#: addons/dak/class_dakqueue.inc:57 +msgid "DAK queue" +msgstr "DAK-Warteschlange" + +#: addons/dak/class_dakqueue.inc:58 +msgid "DAK queue management" +msgstr "DAK-Warteschlangen-Verwaltung" diff --git a/trunk/gosa-plugins/dak/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dak/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..3463874c3 --- /dev/null +++ b/trunk/gosa-plugins/dak/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,254 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: addons/dak/dak_keyring.tpl:2 addons/dak/dak_queue.tpl:2 +msgid "Filter" +msgstr "" + +#: addons/dak/dak_keyring.tpl:11 +msgid "Server" +msgstr "Servidor" + +#: addons/dak/dak_keyring.tpl:18 +msgid "Search" +msgstr "Buscar" + +#: addons/dak/dak_keyring.tpl:22 +msgid "Import" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:114 +#, fuzzy +msgid "Key ID" +msgstr "Identificador (ID) de usuario" + +#: addons/dak/class_dakkeyring.inc:115 +#, fuzzy +msgid "Length" +msgstr "Calle" + +#: addons/dak/class_dakkeyring.inc:116 +msgid "Status" +msgstr "Estado" + +#: addons/dak/class_dakkeyring.inc:117 +msgid "UID" +msgstr "UID" + +#: addons/dak/class_dakkeyring.inc:118 +msgid "Action" +msgstr "Acción" + +#: addons/dak/class_dakkeyring.inc:139 +#, fuzzy, php-format +msgid "Created: %s" +msgstr "Crear" + +#: addons/dak/class_dakkeyring.inc:140 +#, fuzzy +msgid "Valid" +msgstr "válido" + +#: addons/dak/class_dakkeyring.inc:141 +#, fuzzy +msgid "Expired: " +msgstr "expiró" + +#: addons/dak/class_dakkeyring.inc:142 +#, fuzzy +msgid "Expires: " +msgstr "expiró" + +#: addons/dak/class_dakkeyring.inc:276 +msgid "DAK keyring" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:276 addons/dak/class_dakkeyring.inc:277 +#: addons/dak/class_dakrepository.inc:43 addons/dak/class_dakrepository.inc:44 +#: addons/dak/class_dakqueue.inc:57 addons/dak/class_dakqueue.inc:58 +msgid "Addon" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:277 +#, fuzzy +msgid "DAK keyring management" +msgstr "Administración de departamento" + +#: addons/dak/dak_queue.tpl:11 +msgid "Repositories" +msgstr "" + +#: addons/dak/class_dakrepository.inc:43 +msgid "DAK repository" +msgstr "" + +#: addons/dak/class_dakrepository.inc:44 +#, fuzzy +msgid "DAK repository management" +msgstr "Administración de departamento" + +#: addons/dak/class_DAK.inc:80 addons/dak/class_DAK.inc:96 +#: addons/dak/class_DAK.inc:113 +msgid "Error" +msgstr "Error" + +#: addons/dak/main.inc:46 +msgid "DAK" +msgstr "" + +#: addons/dak/class_dakqueue.inc:57 +msgid "DAK queue" +msgstr "" + +#: addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "DAK queue management" +msgstr "Administración de ACL" + +#~ msgid "Description" +#~ msgstr "Descripción" + +#~ msgid "Addressbook" +#~ msgstr "Libreta direcciones" + +#, fuzzy +#~ msgid "" +#~ "You need to set your personal phone number in order to perform direct " +#~ "dials." +#~ msgstr "Necesita introducir su contraseña actual para continuar." + +#~ msgid "Name" +#~ msgstr "Nombre" + +#~ msgid "Given name" +#~ msgstr "Nombre de pila" + +#~ msgid "Phone" +#~ msgstr "Teléfono" + +#, fuzzy +#~ msgid "Telephone number" +#~ msgstr "Número de teléfono" + +#~ msgid "Fax" +#~ msgstr "Fax" + +#~ msgid "Surename" +#~ msgstr "Apellidos" + +#~ msgid "Telefon number" +#~ msgstr "Número de teléfono" + +#~ msgid "Fax number" +#~ msgstr "Número de Fax" + +#~ msgid "Mobile number" +#~ msgstr "Teléfono móvil" + +#~ msgid "Home phone number" +#~ msgstr "Número de teléfono personal" + +#~ msgid "User identification" +#~ msgstr "Identificación de Usuario" + +#~ msgid "Mail address" +#~ msgstr "Dirección correo electrónico" + +#~ msgid "Organization" +#~ msgstr "Organización" + +#~ msgid "Department" +#~ msgstr "Departamento" + +#~ msgid "Location" +#~ msgstr "Localización" + +#~ msgid "Postal address" +#~ msgstr "Código Postal" + +#~ msgid "State" +#~ msgstr "Provincia" + +#~ msgid "Home postal address" +#~ msgstr "Dirección Postal personal" + +#~ msgid "Warning" +#~ msgstr "Aviso" + +#~ msgid "Actions" +#~ msgstr "Acciones" + +#~ msgid "Edit entry" +#~ msgstr "Editar entrada" + +#~ msgid "Personal title" +#~ msgstr "Título Personal" + +#~ msgid "Address" +#~ msgstr "Dirección" + +#~ msgid "Postal code" +#~ msgstr "Código Postal" + +#~ msgid "Country" +#~ msgstr "País" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Delete" +#~ msgstr "Eliminar" + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "Permisos" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "No tiene permisos para eliminar este departamento." + +#~ msgid "The required field 'Name' is not set." +#~ msgstr "No se ha asignado ningún valor al campo obligatorio 'Nombre'." + +#~ msgid "The required field 'Given name' is not set." +#~ msgstr "" +#~ "No se ha asignado ningún valor al campo obligatorio 'Nombre de pila'." + +#~ msgid "The field 'Name' contains invalid characters." +#~ msgstr "El campo 'Nombre' no tiene caracteres validos." + +#~ msgid "The field 'Given name' contains invalid characters." +#~ msgstr "El campo 'Nombre de pila' contiene caracteres no validos" + +#~ msgid "The field 'Phone' contains an invalid phone number." +#~ msgstr "El campo 'Teléfono' tiene un número de teléfono no valido." + +#~ msgid "The field 'Fax' contains an invalid phone number." +#~ msgstr "El campo 'Fax' tiene un número de teléfono no valido." + +#~ msgid "The field 'Mobile' contains an invalid phone number." +#~ msgstr "El campo 'Teléfono móvil' contiene un número de teléfono invalido." + +#~ msgid "The field 'Pager' contains an invalid phone number." +#~ msgstr "" +#~ "El campo 'Dispositivo de Búsqueda' contiene un número de teléfono " +#~ "invalido." diff --git a/trunk/gosa-plugins/dak/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dak/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..5faab6239 --- /dev/null +++ b/trunk/gosa-plugins/dak/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,111 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-07-23 22:13+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: addons/dak/dak_keyring.tpl:2 addons/dak/dak_queue.tpl:2 +msgid "Filter" +msgstr "Filtre" + +#: addons/dak/dak_keyring.tpl:11 +msgid "Server" +msgstr "Serveur" + +#: addons/dak/dak_keyring.tpl:18 +msgid "Search" +msgstr "Recherche" + +#: addons/dak/dak_keyring.tpl:22 +msgid "Import" +msgstr "Importer" + +#: addons/dak/class_dakkeyring.inc:114 +msgid "Key ID" +msgstr "Identifiant de la clé" + +#: addons/dak/class_dakkeyring.inc:115 +msgid "Length" +msgstr "Longueur" + +#: addons/dak/class_dakkeyring.inc:116 +msgid "Status" +msgstr "Statut" + +#: addons/dak/class_dakkeyring.inc:117 +msgid "UID" +msgstr "UID" + +#: addons/dak/class_dakkeyring.inc:118 +msgid "Action" +msgstr "Action" + +#: addons/dak/class_dakkeyring.inc:139 +#, php-format +msgid "Created: %s" +msgstr "Crée le : %s" + +#: addons/dak/class_dakkeyring.inc:140 +msgid "Valid" +msgstr "valide" + +#: addons/dak/class_dakkeyring.inc:141 +msgid "Expired: " +msgstr "Expirée :" + +#: addons/dak/class_dakkeyring.inc:142 +msgid "Expires: " +msgstr "Expire le :" + +#: addons/dak/class_dakkeyring.inc:276 +msgid "DAK keyring" +msgstr "Trousseau de clefs DAK" + +#: addons/dak/class_dakkeyring.inc:276 addons/dak/class_dakkeyring.inc:277 +#: addons/dak/class_dakrepository.inc:43 addons/dak/class_dakrepository.inc:44 +#: addons/dak/class_dakqueue.inc:57 addons/dak/class_dakqueue.inc:58 +msgid "Addon" +msgstr "Extension" + +#: addons/dak/class_dakkeyring.inc:277 +msgid "DAK keyring management" +msgstr "Gestion du trousseau de clefs DAK" + +#: addons/dak/dak_queue.tpl:11 +msgid "Repositories" +msgstr "Dépôts" + +#: addons/dak/class_dakrepository.inc:43 +msgid "DAK repository" +msgstr "Dépôt DAK" + +#: addons/dak/class_dakrepository.inc:44 +msgid "DAK repository management" +msgstr "Gestion des dépôts DAK" + +#: addons/dak/class_DAK.inc:80 addons/dak/class_DAK.inc:96 +#: addons/dak/class_DAK.inc:113 +msgid "Error" +msgstr "Erreur" + +#: addons/dak/main.inc:46 +msgid "DAK" +msgstr "DAK" + +#: addons/dak/class_dakqueue.inc:57 +msgid "DAK queue" +msgstr "Queue DAK" + +#: addons/dak/class_dakqueue.inc:58 +msgid "DAK queue management" +msgstr "Gestion de la queue DAK" diff --git a/trunk/gosa-plugins/dak/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dak/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..5137decd6 --- /dev/null +++ b/trunk/gosa-plugins/dak/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,363 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: addons/dak/dak_keyring.tpl:2 addons/dak/dak_queue.tpl:2 +#, fuzzy +msgid "Filter" +msgstr "Filtri" + +#: addons/dak/dak_keyring.tpl:11 +msgid "Server" +msgstr "Server" + +#: addons/dak/dak_keyring.tpl:18 +msgid "Search" +msgstr "Cerca" + +#: addons/dak/dak_keyring.tpl:22 +msgid "Import" +msgstr "Importa" + +#: addons/dak/class_dakkeyring.inc:114 +msgid "Key ID" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:115 +#, fuzzy +msgid "Length" +msgstr "Strada" + +#: addons/dak/class_dakkeyring.inc:116 +msgid "Status" +msgstr "Stato" + +#: addons/dak/class_dakkeyring.inc:117 +msgid "UID" +msgstr "UID" + +#: addons/dak/class_dakkeyring.inc:118 +msgid "Action" +msgstr "Azione" + +#: addons/dak/class_dakkeyring.inc:139 +#, fuzzy, php-format +msgid "Created: %s" +msgstr "Creare" + +#: addons/dak/class_dakkeyring.inc:140 +#, fuzzy +msgid "Valid" +msgstr "valido" + +#: addons/dak/class_dakkeyring.inc:141 +#, fuzzy +msgid "Expired: " +msgstr "Esporta" + +#: addons/dak/class_dakkeyring.inc:142 +#, fuzzy +msgid "Expires: " +msgstr "Esporta" + +#: addons/dak/class_dakkeyring.inc:276 +msgid "DAK keyring" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:276 addons/dak/class_dakkeyring.inc:277 +#: addons/dak/class_dakrepository.inc:43 addons/dak/class_dakrepository.inc:44 +#: addons/dak/class_dakqueue.inc:57 addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "Addon" +msgstr "Extra" + +#: addons/dak/class_dakkeyring.inc:277 +#, fuzzy +msgid "DAK keyring management" +msgstr "Riferimenti" + +#: addons/dak/dak_queue.tpl:11 +#, fuzzy +msgid "Repositories" +msgstr "Riprova" + +#: addons/dak/class_dakrepository.inc:43 +#, fuzzy +msgid "DAK repository" +msgstr "Directory" + +#: addons/dak/class_dakrepository.inc:44 +#, fuzzy +msgid "DAK repository management" +msgstr "Directory" + +#: addons/dak/class_DAK.inc:80 addons/dak/class_DAK.inc:96 +#: addons/dak/class_DAK.inc:113 +msgid "Error" +msgstr "" + +#: addons/dak/main.inc:46 +msgid "DAK" +msgstr "" + +#: addons/dak/class_dakqueue.inc:57 +#, fuzzy +msgid "DAK queue" +msgstr "Numero di telefono" + +#: addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "DAK queue management" +msgstr "Riferimenti" + +#~ msgid "Description" +#~ msgstr "Descrizione" + +#~ msgid "Addressbook" +#~ msgstr "Rubrica" + +#~ msgid "This does something" +#~ msgstr "Questo fa qualcosa" + +#, fuzzy +#~ msgid "" +#~ "You need to set your personal phone number in order to perform direct " +#~ "dials." +#~ msgstr "Devi specificare la tua 'Password attuale' per procedere." + +#, fuzzy +#~ msgid "user database" +#~ msgstr "Database" + +#, fuzzy +#~ msgid "Contact stored in '%s'" +#~ msgstr "Rimuovi" + +#~ msgid "Creating new entry in" +#~ msgstr "Crea in" + +#~ msgid "Name" +#~ msgstr "Cognome" + +#~ msgid "Given name" +#~ msgstr "Nome" + +#~ msgid "Work phone" +#~ msgstr "Telefono del lavoro" + +#~ msgid "Cell phone" +#~ msgstr "Cellolare" + +#~ msgid "Home phone" +#~ msgstr "Telefono privato" + +#~ msgid "Phone" +#~ msgstr "Telefono" + +#, fuzzy +#~ msgid "Telephone number" +#~ msgstr "Numero di telefono" + +#~ msgid "Fax" +#~ msgstr "Fax" + +#~ msgid "Mobile" +#~ msgstr "Cellulare" + +#~ msgid "Pager" +#~ msgstr "Pager" + +#~ msgid "Email" +#~ msgstr "Indirizzo email" + +#, fuzzy +#~ msgid "Addressbook entry acls" +#~ msgstr "Mostra contatti della rubrica" + +#~ msgid "Surename" +#~ msgstr "Cognome" + +#, fuzzy +#~ msgid "Telefon number" +#~ msgstr "Numero di telefono" + +#, fuzzy +#~ msgid "Fax number" +#~ msgstr "Numero di telefono" + +#, fuzzy +#~ msgid "Mobile number" +#~ msgstr "Cellulare" + +#, fuzzy +#~ msgid "Home phone number" +#~ msgstr "Numero di telefono" + +#, fuzzy +#~ msgid "User identification" +#~ msgstr "Amministrazione utenti" + +#~ msgid "Mail address" +#~ msgstr "Indirizzo principale" + +#~ msgid "Organization" +#~ msgstr "Organizzazione" + +#~ msgid "Department" +#~ msgstr "Dipartimento" + +#~ msgid "Location" +#~ msgstr "Località" + +#~ msgid "Postal address" +#~ msgstr "CAP" + +#~ msgid "State" +#~ msgstr "Stato" + +#~ msgid "Initials" +#~ msgstr "Iniziali" + +#~ msgid "Title" +#~ msgstr "Titolo" + +#~ msgid "Common name" +#~ msgstr "Nome comune" + +#~ msgid "Warning" +#~ msgstr "Attenzione" + +#, fuzzy +#~ msgid "" +#~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +#~ msgstr "" +#~ "Quindi - Se sei sicuro - premi Rimuovi per continuare o " +#~ "Annulla per abortire." + +#~ msgid "Private" +#~ msgstr "Privato" + +#~ msgid "Contact" +#~ msgstr "Contatto" + +#~ msgid "Information" +#~ msgstr "Informazioni" + +#~ msgid "" +#~ "The telephone list plugin provides list and search facilities for the " +#~ "people in your site. You may want to specify the asterisk [*] like in " +#~ "'Go*us' to find 'Gonicus'. Use the filters below to narrow down your " +#~ "search." +#~ msgstr "" +#~ "Il plugin della lista telefonica permette di cercare le persone nel sito. " +#~ "Puoi utilizzare l'asterisco [*] come carattere jolly. Usa i filtri sotto " +#~ "per caratterizzaze la ricerca." + +#~ msgid "Actions" +#~ msgstr "Azioni" + +#~ msgid "Add entry" +#~ msgstr "Aggiungi contatto" + +#~ msgid "Edit entry" +#~ msgstr "Modifica contatto" + +#~ msgid "Remove entry" +#~ msgstr "Elimina contatto" + +#~ msgid "Show organizational entries" +#~ msgstr "Mostra contatti di organizzazioni" + +#~ msgid "Show addressbook entries" +#~ msgstr "Mostra contatti della rubrica" + +#~ msgid "Display results for department" +#~ msgstr "Mostra risultati per dipartimento" + +#~ msgid "Choose the department the search will be based on" +#~ msgstr "Scegli il dipartimento di base per la ricerca" + +#~ msgid "Match object" +#~ msgstr "Oggetto corrispondente" + +#~ msgid "Search for" +#~ msgstr "Cerca" + +#~ msgid "Search string" +#~ msgstr "Ricerca" + +#~ msgid "Personal" +#~ msgstr "Personale" + +#, fuzzy +#~ msgid "Last name" +#~ msgstr "Scegli il tuo numero di telefono personale" + +#, fuzzy +#~ msgid "First name" +#~ msgstr "Liste di blocco" + +#~ msgid "Personal title" +#~ msgstr "Titolo onorifico" + +#~ msgid "Address" +#~ msgstr "Indirizzo" + +#~ msgid "Organizational" +#~ msgstr "Organizzazione" + +#~ msgid "Company" +#~ msgstr "Azienda" + +#~ msgid "City" +#~ msgstr "Città" + +#~ msgid "Postal code" +#~ msgstr "CAP" + +#~ msgid "Country" +#~ msgstr "Paese" + +#~ msgid "FAX" +#~ msgstr "FAX" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Delete" +#~ msgstr "Rimuovi" + +#~ msgid "Address book" +#~ msgstr "Rubrica" + +#, fuzzy +#~ msgid "Removing of addressbook entry '%s' failed." +#~ msgstr "Mostra contatti della rubrica" + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "Permessi" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "" +#~ "Inserire un indirizzo di posta valido nel campo 'Indirizzo principale'." diff --git a/trunk/gosa-plugins/dak/locale/messages.po b/trunk/gosa-plugins/dak/locale/messages.po new file mode 100644 index 000000000..499a159ed --- /dev/null +++ b/trunk/gosa-plugins/dak/locale/messages.po @@ -0,0 +1,113 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: addons/dak/dak_keyring.tpl:2 addons/dak/dak_queue.tpl:2 +msgid "Filter" +msgstr "" + +#: addons/dak/dak_keyring.tpl:11 +msgid "Server" +msgstr "" + +#: addons/dak/dak_keyring.tpl:18 +msgid "Search" +msgstr "" + +#: addons/dak/dak_keyring.tpl:22 +msgid "Import" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:114 +msgid "Key ID" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:115 +msgid "Length" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:116 +msgid "Status" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:117 +msgid "UID" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:118 +msgid "Action" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:139 +#, php-format +msgid "Created: %s" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:140 +msgid "Valid" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:141 +msgid "Expired: " +msgstr "" + +#: addons/dak/class_dakkeyring.inc:142 +msgid "Expires: " +msgstr "" + +#: addons/dak/class_dakkeyring.inc:276 +msgid "DAK keyring" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:276 addons/dak/class_dakkeyring.inc:277 +#: addons/dak/class_dakrepository.inc:43 addons/dak/class_dakrepository.inc:44 +#: addons/dak/class_dakqueue.inc:57 addons/dak/class_dakqueue.inc:58 +msgid "Addon" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:277 +msgid "DAK keyring management" +msgstr "" + +#: addons/dak/dak_queue.tpl:11 +msgid "Repositories" +msgstr "" + +#: addons/dak/class_dakrepository.inc:43 +msgid "DAK repository" +msgstr "" + +#: addons/dak/class_dakrepository.inc:44 +msgid "DAK repository management" +msgstr "" + +#: addons/dak/class_DAK.inc:80 addons/dak/class_DAK.inc:96 +#: addons/dak/class_DAK.inc:113 +msgid "Error" +msgstr "" + +#: addons/dak/main.inc:46 +msgid "DAK" +msgstr "" + +#: addons/dak/class_dakqueue.inc:57 +msgid "DAK queue" +msgstr "" + +#: addons/dak/class_dakqueue.inc:58 +msgid "DAK queue management" +msgstr "" diff --git a/trunk/gosa-plugins/dak/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dak/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..3f8b73768 --- /dev/null +++ b/trunk/gosa-plugins/dak/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,444 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: addons/dak/dak_keyring.tpl:2 addons/dak/dak_queue.tpl:2 +#, fuzzy +msgid "Filter" +msgstr "Filters" + +#: addons/dak/dak_keyring.tpl:11 +msgid "Server" +msgstr "Server" + +#: addons/dak/dak_keyring.tpl:18 +msgid "Search" +msgstr "Zoeken" + +#: addons/dak/dak_keyring.tpl:22 +msgid "Import" +msgstr "Importeren" + +#: addons/dak/class_dakkeyring.inc:114 +#, fuzzy +msgid "Key ID" +msgstr "Gebruikers ID" + +#: addons/dak/class_dakkeyring.inc:115 +#, fuzzy +msgid "Length" +msgstr "Straat" + +#: addons/dak/class_dakkeyring.inc:116 +msgid "Status" +msgstr "Status" + +#: addons/dak/class_dakkeyring.inc:117 +msgid "UID" +msgstr "UID" + +#: addons/dak/class_dakkeyring.inc:118 +msgid "Action" +msgstr "Actie" + +#: addons/dak/class_dakkeyring.inc:139 +#, fuzzy, php-format +msgid "Created: %s" +msgstr "Aanmaken" + +#: addons/dak/class_dakkeyring.inc:140 +#, fuzzy +msgid "Valid" +msgstr "geldig" + +#: addons/dak/class_dakkeyring.inc:141 +#, fuzzy +msgid "Expired: " +msgstr "verlopen" + +#: addons/dak/class_dakkeyring.inc:142 +#, fuzzy +msgid "Expires: " +msgstr "verlopen" + +#: addons/dak/class_dakkeyring.inc:276 +msgid "DAK keyring" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:276 addons/dak/class_dakkeyring.inc:277 +#: addons/dak/class_dakrepository.inc:43 addons/dak/class_dakrepository.inc:44 +#: addons/dak/class_dakqueue.inc:57 addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "Addon" +msgstr "Plugins" + +#: addons/dak/class_dakkeyring.inc:277 +#, fuzzy +msgid "DAK keyring management" +msgstr "Afdeling beheer" + +#: addons/dak/dak_queue.tpl:11 +#, fuzzy +msgid "Repositories" +msgstr "Opnieuw proberen" + +#: addons/dak/class_dakrepository.inc:43 +#, fuzzy +msgid "DAK repository" +msgstr "Directory" + +#: addons/dak/class_dakrepository.inc:44 +#, fuzzy +msgid "DAK repository management" +msgstr "Directory" + +#: addons/dak/class_DAK.inc:80 addons/dak/class_DAK.inc:96 +#: addons/dak/class_DAK.inc:113 +msgid "Error" +msgstr "Fout" + +#: addons/dak/main.inc:46 +msgid "DAK" +msgstr "" + +#: addons/dak/class_dakqueue.inc:57 +#, fuzzy +msgid "DAK queue" +msgstr "Telefoonwachtrij" + +#: addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "DAK queue management" +msgstr "Blokkeerlijst beheer" + +#~ msgid "Description" +#~ msgstr "Omschrijving" + +#~ msgid "Addressbook" +#~ msgstr "Adresboek" + +#~ msgid "This does something" +#~ msgstr "Dit doet iets" + +#~ msgid "Dial from %s to %s now?" +#~ msgstr "Nu van %s naar %s bellen?" + +#, fuzzy +#~ msgid "" +#~ "You need to set your personal phone number in order to perform direct " +#~ "dials." +#~ msgstr "" +#~ "U heeft geen privé telefoonnummer opgegeven. Verander dit a.u.b. om " +#~ "direkt te kunnen kiezen" + +#~ msgid "Dial" +#~ msgstr "Kies" + +#~ msgid "Save contact for %s as vcard" +#~ msgstr "Sla contact voor %s op als vcard" + +#~ msgid "Send mail to %s" +#~ msgstr "Stuur E-mail naar %s" + +#~ msgid "global addressbook" +#~ msgstr "globaal adresboek" + +#~ msgid "user database" +#~ msgstr "gebruiker database" + +#~ msgid "Contact stored in '%s'" +#~ msgstr "Contact opgeslagen in '%s'" + +#~ msgid "Creating new entry in" +#~ msgstr "Maak record aan in" + +#~ msgid "All" +#~ msgstr "Alle" + +#~ msgid "Name" +#~ msgstr "Naam" + +#~ msgid "Given name" +#~ msgstr "Naam" + +#~ msgid "Work phone" +#~ msgstr "Telefoon Werk" + +#~ msgid "Cell phone" +#~ msgstr "GSM" + +#~ msgid "Home phone" +#~ msgstr "Telefoon Privé" + +#~ msgid "Phone" +#~ msgstr "Telefoon" + +#, fuzzy +#~ msgid "Telephone number" +#~ msgstr "Telefoonnummer" + +#~ msgid "Fax" +#~ msgstr "Fax" + +#~ msgid "Mobile" +#~ msgstr "GSM" + +#~ msgid "Pager" +#~ msgstr "Pieper" + +#~ msgid "Email" +#~ msgstr "E-mail" + +#~ msgid "" +#~ "Cannot create a unique DN for your entry. Please fill more formular " +#~ "fields." +#~ msgstr "" +#~ "Kan geen unieke DN aanmaken voor uw invoer. Vul a.u.b. meer formulier " +#~ "velden in." + +#, fuzzy +#~ msgid "Addressbook entry acls" +#~ msgstr "Het opslaan van de adresboek invoer is mislukt" + +#~ msgid "Surename" +#~ msgstr "Achternaam" + +#, fuzzy +#~ msgid "Telefon number" +#~ msgstr "Telefoonnummer" + +#, fuzzy +#~ msgid "Fax number" +#~ msgstr "Serienummer" + +#, fuzzy +#~ msgid "Mobile number" +#~ msgstr "GSM nummer" + +#, fuzzy +#~ msgid "Home phone number" +#~ msgstr "Telefoonnummer" + +#, fuzzy +#~ msgid "User identification" +#~ msgstr "Gebruikersinformatie" + +#~ msgid "Mail address" +#~ msgstr "E-mail adres" + +#~ msgid "Organization" +#~ msgstr "Organisatie" + +#~ msgid "Department" +#~ msgstr "Afdeling" + +#~ msgid "Location" +#~ msgstr "Plaats" + +#~ msgid "Postal address" +#~ msgstr "Adres thuis" + +#~ msgid "State" +#~ msgstr "Provincie" + +#~ msgid "Initials" +#~ msgstr "Initialen" + +#~ msgid "Title" +#~ msgstr "Titel" + +#~ msgid "Home postal address" +#~ msgstr "Adres thuis" + +#~ msgid "Common name" +#~ msgstr "Algemene naam" + +#~ msgid "Warning" +#~ msgstr "Waarschuwing" + +#~ msgid "" +#~ "This includes all addressbook data in this entry. Please double check if " +#~ "your really want to do this since there is no way for GOsa to get your " +#~ "data back." +#~ msgstr "" +#~ "Dit omvat alle adresboek data in dit record. Verzeker uzelf ervan dat dit " +#~ "hetgeen is dat u wenst, aangezien er geen manier voor GOsa is om deze " +#~ "data terug te halen." + +#~ msgid "" +#~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +#~ msgstr "" +#~ "Indien u zeker bent drukt u dan 'Verwijderen' om door te gaan of " +#~ "'Annuleren' om te annuleren." + +#~ msgid "Dial connection..." +#~ msgstr "Bel..." + +#~ msgid "Private" +#~ msgstr "Privé" + +#~ msgid "Contact" +#~ msgstr "Contact" + +#~ msgid "Information" +#~ msgstr "Informatie" + +#~ msgid "" +#~ "The telephone list plugin provides list and search facilities for the " +#~ "people in your site. You may want to specify the asterisk [*] like in " +#~ "'Go*us' to find 'Gonicus'. Use the filters below to narrow down your " +#~ "search." +#~ msgstr "" +#~ "De telefoonlijst module biedt zoek en weergave mogelijkheden binnen uw " +#~ "organisatie. U kunt een asterisk (*) gebruiken als wildcard. 'Go*us' zal " +#~ "bijvoorbeeld 'Gonicus' vinden. Gebruik de selectie mogelijkheden om uw " +#~ "zoekopdracht verder te verfijnen." + +#~ msgid "Actions" +#~ msgstr "Acties" + +#~ msgid "Add entry" +#~ msgstr "Record toevoegen" + +#~ msgid "Edit entry" +#~ msgstr "Invoer bewerken" + +#~ msgid "Remove entry" +#~ msgstr "Record verwijderen" + +#~ msgid "Select to see regular users" +#~ msgstr "Selecteer om gewone gebruikers te tonen" + +#~ msgid "Show organizational entries" +#~ msgstr "Toon gebruikers binnen de organisatie" + +#~ msgid "Select to see users in addressbook" +#~ msgstr "Selecteer om gebruikers in het adresboek te zien" + +#~ msgid "Show addressbook entries" +#~ msgstr "Toon adresboek records" + +#~ msgid "Display results for department" +#~ msgstr "Toon resultaten voor afdeling" + +#~ msgid "Choose the department the search will be based on" +#~ msgstr "Selecteer de afdeling waarbinnen gezocht zal worden" + +#~ msgid "Match object" +#~ msgstr "Zoek op" + +#~ msgid "Choose the object that will be searched in" +#~ msgstr "Selecteer het object waarbinnen gezocht zal worden" + +#~ msgid "Search for" +#~ msgstr "Zoek naar" + +#~ msgid "Search string" +#~ msgstr "Zoekstring" + +#~ msgid "Choose the department to store entry in" +#~ msgstr "Selecteer de afdeling waarin de invoer bewaard wordt." + +#~ msgid "Personal" +#~ msgstr "Persoonlijk" + +#~ msgid "Last name" +#~ msgstr "Achternaam" + +#~ msgid "First name" +#~ msgstr "Voornaam" + +#~ msgid "Personal title" +#~ msgstr "Aanhef" + +#~ msgid "Address" +#~ msgstr "Adres" + +#~ msgid "Organizational" +#~ msgstr "Bedrijfsmatig" + +#~ msgid "Company" +#~ msgstr "Bedrijf" + +#~ msgid "City" +#~ msgstr "Plaats" + +#~ msgid "Postal code" +#~ msgstr "Postcode" + +#~ msgid "Country" +#~ msgstr "Land" + +#~ msgid "FAX" +#~ msgstr "Fax" + +#~ msgid "You're about to delete the entry %s." +#~ msgstr "U staat op het punt de invoer %s te verwijderen." + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#~ msgid "Delete" +#~ msgstr "Verwijderen" + +#~ msgid "Address book" +#~ msgstr "Adresboek" + +#, fuzzy +#~ msgid "Removing of addressbook entry '%s' failed." +#~ msgstr "Het verwijderen van de adresboek invoer is mislukt" + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "Rechten" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#~ msgid "The required field 'Name' is not set." +#~ msgstr "Het vereiste veld '(Achter)naam' is leeg." + +#~ msgid "The required field 'Given name' is not set." +#~ msgstr "Het vereiste veld 'Voornaam' is leeg." + +#~ msgid "The field 'Name' contains invalid characters." +#~ msgstr "Het veld 'Naam' bevat ongeldige karakters." + +#~ msgid "The field 'Given name' contains invalid characters." +#~ msgstr "Het veld 'Voornaam' bevat ongeldige karakters." + +#~ msgid "The field 'Phone' contains an invalid phone number." +#~ msgstr "Het veld 'Telefoon' bevat een ongeldig telefoonnummer." + +#~ msgid "The field 'Fax' contains an invalid phone number." +#~ msgstr "Het veld 'Fax' bevat een ongeldig Faxnummer." + +#~ msgid "The field 'Mobile' contains an invalid phone number." +#~ msgstr "Het veld 'GSM' bevat een ongeldig telefoonnummer" + +#~ msgid "The field 'Pager' contains an invalid phone number." +#~ msgstr "Het veld 'Pieper' bevat een ongeldig telefoonnummer." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "Geef a.u.b. een geldig E-mail adres voor het 'Primair adres' op." diff --git a/trunk/gosa-plugins/dak/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dak/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..946b5976c --- /dev/null +++ b/trunk/gosa-plugins/dak/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,432 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: addons/dak/dak_keyring.tpl:2 addons/dak/dak_queue.tpl:2 +#, fuzzy +msgid "Filter" +msgstr "Filtry" + +#: addons/dak/dak_keyring.tpl:11 +msgid "Server" +msgstr "Serwer" + +#: addons/dak/dak_keyring.tpl:18 +msgid "Search" +msgstr "Szukaj" + +#: addons/dak/dak_keyring.tpl:22 +msgid "Import" +msgstr "Import" + +#: addons/dak/class_dakkeyring.inc:114 +#, fuzzy +msgid "Key ID" +msgstr "Identyfikator użytkownika" + +#: addons/dak/class_dakkeyring.inc:115 +#, fuzzy +msgid "Length" +msgstr "Ulica" + +#: addons/dak/class_dakkeyring.inc:116 +msgid "Status" +msgstr "Status" + +#: addons/dak/class_dakkeyring.inc:117 +msgid "UID" +msgstr "UID" + +#: addons/dak/class_dakkeyring.inc:118 +msgid "Action" +msgstr "Akcja" + +#: addons/dak/class_dakkeyring.inc:139 +#, fuzzy, php-format +msgid "Created: %s" +msgstr "Utwórz" + +#: addons/dak/class_dakkeyring.inc:140 +#, fuzzy +msgid "Valid" +msgstr "prawidłowy" + +#: addons/dak/class_dakkeyring.inc:141 +#, fuzzy +msgid "Expired: " +msgstr "wygasło" + +#: addons/dak/class_dakkeyring.inc:142 +#, fuzzy +msgid "Expires: " +msgstr "wygasło" + +#: addons/dak/class_dakkeyring.inc:276 +msgid "DAK keyring" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:276 addons/dak/class_dakkeyring.inc:277 +#: addons/dak/class_dakrepository.inc:43 addons/dak/class_dakrepository.inc:44 +#: addons/dak/class_dakqueue.inc:57 addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "Addon" +msgstr "Dodatki" + +#: addons/dak/class_dakkeyring.inc:277 +#, fuzzy +msgid "DAK keyring management" +msgstr "Zarządzanie departamentem" + +#: addons/dak/dak_queue.tpl:11 +#, fuzzy +msgid "Repositories" +msgstr "Odtwórz" + +#: addons/dak/class_dakrepository.inc:43 +#, fuzzy +msgid "DAK repository" +msgstr "Katalog" + +#: addons/dak/class_dakrepository.inc:44 +#, fuzzy +msgid "DAK repository management" +msgstr "Katalog" + +#: addons/dak/class_DAK.inc:80 addons/dak/class_DAK.inc:96 +#: addons/dak/class_DAK.inc:113 +msgid "Error" +msgstr "Błąd" + +#: addons/dak/main.inc:46 +msgid "DAK" +msgstr "" + +#: addons/dak/class_dakqueue.inc:57 +#, fuzzy +msgid "DAK queue" +msgstr "Kolejka telefoniczna" + +#: addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "DAK queue management" +msgstr "Zarządzanie ACL" + +#~ msgid "Description" +#~ msgstr "Opis" + +#~ msgid "Addressbook" +#~ msgstr "Książka adresowa" + +#~ msgid "This does something" +#~ msgstr "To robi coś" + +#~ msgid "Dial from %s to %s now?" +#~ msgstr "Zadzwonić teraz z '%s' do '%s'?" + +#, fuzzy +#~ msgid "" +#~ "You need to set your personal phone number in order to perform direct " +#~ "dials." +#~ msgstr "" +#~ "Brak ustawionego osobistego numeru telefonu. Proszę uzupełnić aby móc " +#~ "wykonywać bezpośrednie połączenia." + +#~ msgid "Dial" +#~ msgstr "Dzwonienie" + +#~ msgid "Save contact for %s as vcard" +#~ msgstr "Zapisz kontakt dla %s jako wizytówka" + +#~ msgid "Send mail to %s" +#~ msgstr "Wyślij email do %s" + +#~ msgid "global addressbook" +#~ msgstr "Globalna książka adresowa" + +#~ msgid "user database" +#~ msgstr "użyj bazy" + +#~ msgid "Contact stored in '%s'" +#~ msgstr "Kontakt zachowany w '%s'" + +#~ msgid "Creating new entry in" +#~ msgstr "Tworzenie nowego elementu w" + +#~ msgid "All" +#~ msgstr "Wszystkie" + +#~ msgid "Name" +#~ msgstr "Imię" + +#~ msgid "Given name" +#~ msgstr "Imię" + +#~ msgid "Work phone" +#~ msgstr "Telefon do pracy" + +#~ msgid "Cell phone" +#~ msgstr "Numer telefonu komórkowego" + +#~ msgid "Home phone" +#~ msgstr "Telefon domowy" + +#~ msgid "Phone" +#~ msgstr "Telefon" + +#, fuzzy +#~ msgid "Telephone number" +#~ msgstr "Numer telefonu" + +#~ msgid "Fax" +#~ msgstr "Fax" + +#~ msgid "Mobile" +#~ msgstr "Komórka" + +#~ msgid "Pager" +#~ msgstr "Pager" + +#~ msgid "Email" +#~ msgstr "Email" + +#~ msgid "" +#~ "Cannot create a unique DN for your entry. Please fill more formular " +#~ "fields." +#~ msgstr "" +#~ "Nie można utworzyć unikalnego DN dla tego elementu. Proszę wypełnić " +#~ "więcej pól formularza." + +#, fuzzy +#~ msgid "Addressbook entry acls" +#~ msgstr "Zapisywanie wpisu książki adresowej nieudane" + +#~ msgid "Surename" +#~ msgstr "Nazwisko" + +#~ msgid "Telefon number" +#~ msgstr "Numer telefonu" + +#~ msgid "Fax number" +#~ msgstr "Numer fax" + +#~ msgid "Mobile number" +#~ msgstr "Telefon komórkowy" + +#~ msgid "Home phone number" +#~ msgstr "Numer telefonu domowego" + +#~ msgid "User identification" +#~ msgstr "Identyfikacja użytkownika" + +#~ msgid "Mail address" +#~ msgstr "Adres email" + +#~ msgid "Organization" +#~ msgstr "Organizacja" + +#~ msgid "Department" +#~ msgstr "Departament" + +#~ msgid "Location" +#~ msgstr "Lokalizacja" + +#~ msgid "Postal address" +#~ msgstr "Adres pocztowy" + +#~ msgid "State" +#~ msgstr "Stan" + +#~ msgid "Initials" +#~ msgstr "Inicjały" + +#~ msgid "Title" +#~ msgstr "Tytuł" + +#~ msgid "Home postal address" +#~ msgstr "Adres domowy" + +#~ msgid "Common name" +#~ msgstr "Nazwa potoczna" + +#~ msgid "Warning" +#~ msgstr "Ostrzeżenie" + +#~ msgid "" +#~ "This includes all addressbook data in this entry. Please double check if " +#~ "your really want to do this since there is no way for GOsa to get your " +#~ "data back." +#~ msgstr "" +#~ "Operacja odnosi się do wszystkich danych książki adresowej w tym " +#~ "elemencie. Proszę upewnić się że jest to pożądana akcja, gdyż nie będzie " +#~ "możliwości powrotu." + +#~ msgid "" +#~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +#~ msgstr "" +#~ "Jeśli jesteś pewien - naciśnij 'Usuń' aby kontynuować lub 'Anuluj' aby " +#~ "anulować." + +#~ msgid "Dial connection..." +#~ msgstr "Połączenie dzwonienia..." + +#~ msgid "Private" +#~ msgstr "Prywatne" + +#~ msgid "Contact" +#~ msgstr "Kontakt" + +#~ msgid "Information" +#~ msgstr "Informacja" + +#~ msgid "" +#~ "The telephone list plugin provides list and search facilities for the " +#~ "people in your site. You may want to specify the asterisk [*] like in " +#~ "'Go*us' to find 'Gonicus'. Use the filters below to narrow down your " +#~ "search." +#~ msgstr "" +#~ "Dodatek lista telefonów udostępnia listę oraz mechanizmy wyszukiwania dla " +#~ "ludzi w firmie. Mozna podawać gwiazdkę [*] np. 'Go*us' aby znależć " +#~ "'Gonicus'. Użyj filtrów poniżej aby zawęzić wyniki wyszukiwania." + +#~ msgid "Actions" +#~ msgstr "Akcje" + +#~ msgid "Add entry" +#~ msgstr "Dodaj pozycję" + +#~ msgid "Edit entry" +#~ msgstr "Edycja pozycji" + +#~ msgid "Remove entry" +#~ msgstr "Usuń pozycję" + +#~ msgid "Select to see regular users" +#~ msgstr "Wybierz aby zobaczyć zwykłych użytkowników" + +#~ msgid "Show organizational entries" +#~ msgstr "Pokaż elementy organizacyjne" + +#~ msgid "Select to see users in addressbook" +#~ msgstr "Wybierz aby zobaczyć użytkowników w książce adresowej" + +#~ msgid "Show addressbook entries" +#~ msgstr "Pokaż elementy książki adresowej" + +#~ msgid "Display results for department" +#~ msgstr "Wyświetl wyniki dla departamentu" + +#~ msgid "Choose the department the search will be based on" +#~ msgstr "Wybierz departament na którym wyszukiwanie będzie bazować" + +#~ msgid "Match object" +#~ msgstr "Dopasuj obiekt" + +#~ msgid "Choose the object that will be searched in" +#~ msgstr "Wybierz obiekt w którym będziesz przeszukiwać" + +#~ msgid "Search for" +#~ msgstr "Szukaj dla" + +#~ msgid "Search string" +#~ msgstr "Poszukiwany napis" + +#~ msgid "Choose the department to store entry in" +#~ msgstr "Wybierz departament do przechowania wpisu" + +#~ msgid "Personal" +#~ msgstr "Osobiste" + +#~ msgid "Last name" +#~ msgstr "Nazwisko" + +#~ msgid "First name" +#~ msgstr "Imię" + +#~ msgid "Personal title" +#~ msgstr "Osobisty tytuł" + +#~ msgid "Address" +#~ msgstr "Adres" + +#~ msgid "Organizational" +#~ msgstr "Organizacyjne" + +#~ msgid "Company" +#~ msgstr "Firma" + +#~ msgid "City" +#~ msgstr "Miasto" + +#~ msgid "Postal code" +#~ msgstr "Kod pocztowy" + +#~ msgid "Country" +#~ msgstr "Kraj" + +#~ msgid "FAX" +#~ msgstr "FAX" + +#~ msgid "You're about to delete the entry %s." +#~ msgstr "Zamierzasz usunąć element %s." + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#~ msgid "Address book" +#~ msgstr "Książka adresowa" + +#~ msgid "Removing of addressbook entry '%s' failed." +#~ msgstr "Usuwanie wpisu książki adresowej '%s' nieudane." + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "Uprawnienia" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#~ msgid "The required field 'Name' is not set." +#~ msgstr "Wymagane pole 'Nazwa' jest puste." + +#~ msgid "The required field 'Given name' is not set." +#~ msgstr "Wymagane pole 'Podana nazwa' jest puste." + +#~ msgid "The field 'Name' contains invalid characters." +#~ msgstr "Pole 'Nazwa' zawiera niedozwolone znaki." + +#~ msgid "The field 'Given name' contains invalid characters." +#~ msgstr "Pole 'Podana nazwa' zawiera niedozwolone znaki." + +#~ msgid "The field 'Phone' contains an invalid phone number." +#~ msgstr "Pole 'Telefon' zawiera nieprawidłowy numer telefonu." + +#~ msgid "The field 'Fax' contains an invalid phone number." +#~ msgstr "Pole 'Fax' zawiera nieprawidłowy numer telefonu." + +#~ msgid "The field 'Mobile' contains an invalid phone number." +#~ msgstr "Pole 'Komórka' zawiera nieprawidłowy numer telefonu." + +#~ msgid "The field 'Pager' contains an invalid phone number." +#~ msgstr "Pole 'Pager' zawiera nieprawidłowy numer telefonu." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "Proszę podać prawidłowy adres email w polu 'Podstawowy adres'" diff --git a/trunk/gosa-plugins/dak/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dak/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..89d5d87eb --- /dev/null +++ b/trunk/gosa-plugins/dak/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,443 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: addons/dak/dak_keyring.tpl:2 addons/dak/dak_queue.tpl:2 +#, fuzzy +msgid "Filter" +msgstr "Фильтры" + +#: addons/dak/dak_keyring.tpl:11 +msgid "Server" +msgstr "Сервер" + +#: addons/dak/dak_keyring.tpl:18 +msgid "Search" +msgstr "Поиск" + +#: addons/dak/dak_keyring.tpl:22 +msgid "Import" +msgstr "Импортировать" + +#: addons/dak/class_dakkeyring.inc:114 +#, fuzzy +msgid "Key ID" +msgstr "Идентификатор пользователя" + +#: addons/dak/class_dakkeyring.inc:115 +#, fuzzy +msgid "Length" +msgstr "Улица" + +#: addons/dak/class_dakkeyring.inc:116 +msgid "Status" +msgstr "Состояние" + +#: addons/dak/class_dakkeyring.inc:117 +msgid "UID" +msgstr "UID" + +#: addons/dak/class_dakkeyring.inc:118 +msgid "Action" +msgstr "Действие" + +#: addons/dak/class_dakkeyring.inc:139 +#, fuzzy, php-format +msgid "Created: %s" +msgstr "Создать" + +#: addons/dak/class_dakkeyring.inc:140 +msgid "Valid" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:141 +#, fuzzy +msgid "Expired: " +msgstr "Экспорт" + +#: addons/dak/class_dakkeyring.inc:142 +#, fuzzy +msgid "Expires: " +msgstr "Экспорт" + +#: addons/dak/class_dakkeyring.inc:276 +msgid "DAK keyring" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:276 addons/dak/class_dakkeyring.inc:277 +#: addons/dak/class_dakrepository.inc:43 addons/dak/class_dakrepository.inc:44 +#: addons/dak/class_dakqueue.inc:57 addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "Addon" +msgstr "Дополнительно" + +#: addons/dak/class_dakkeyring.inc:277 +#, fuzzy +msgid "DAK keyring management" +msgstr "Управление подразделениями" + +#: addons/dak/dak_queue.tpl:11 +#, fuzzy +msgid "Repositories" +msgstr "Повторить" + +#: addons/dak/class_dakrepository.inc:43 +#, fuzzy +msgid "DAK repository" +msgstr "Каталог" + +#: addons/dak/class_dakrepository.inc:44 +#, fuzzy +msgid "DAK repository management" +msgstr "Каталог" + +#: addons/dak/class_DAK.inc:80 addons/dak/class_DAK.inc:96 +#: addons/dak/class_DAK.inc:113 +msgid "Error" +msgstr "" + +#: addons/dak/main.inc:46 +msgid "DAK" +msgstr "" + +#: addons/dak/class_dakqueue.inc:57 +#, fuzzy +msgid "DAK queue" +msgstr "Номер телефона" + +#: addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "DAK queue management" +msgstr "Управление подразделениями" + +#~ msgid "Description" +#~ msgstr "Описание" + +#~ msgid "Addressbook" +#~ msgstr "Адресная книга" + +#~ msgid "This does something" +#~ msgstr "Что-то будет" + +#~ msgid "Dial from %s to %s now?" +#~ msgstr "Звоним с %s на %s?" + +#, fuzzy +#~ msgid "" +#~ "You need to set your personal phone number in order to perform direct " +#~ "dials." +#~ msgstr "" +#~ "У вас нет персонального набора телефонов. Настройте это прежде чем " +#~ "звонить." + +#~ msgid "Dial" +#~ msgstr "Звонок" + +#~ msgid "Save contact for %s as vcard" +#~ msgstr "Сохранить контактную информацию %s в формате vcard" + +#~ msgid "Send mail to %s" +#~ msgstr "Отправить %s сообщение по эл. почте" + +#~ msgid "global addressbook" +#~ msgstr "общая адресная книга" + +#, fuzzy +#~ msgid "user database" +#~ msgstr "Базы данных" + +#, fuzzy +#~ msgid "Contact stored in '%s'" +#~ msgstr "Контакт сохранен в %s" + +#~ msgid "Creating new entry in" +#~ msgstr "Создание нового объекта в" + +#~ msgid "All" +#~ msgstr "Все" + +#~ msgid "Name" +#~ msgstr "Фамилия" + +#~ msgid "Given name" +#~ msgstr "Имя" + +#~ msgid "Work phone" +#~ msgstr "Рабочий телефон" + +#~ msgid "Cell phone" +#~ msgstr "Сотовый телефон" + +#~ msgid "Home phone" +#~ msgstr "Домашний телефон" + +#~ msgid "Phone" +#~ msgstr "Телефон" + +#, fuzzy +#~ msgid "Telephone number" +#~ msgstr "Телефонные номера" + +#~ msgid "Fax" +#~ msgstr "Факс" + +#~ msgid "Mobile" +#~ msgstr "Мобильный" + +#~ msgid "Pager" +#~ msgstr "Пейджер" + +#~ msgid "Email" +#~ msgstr "Email" + +#~ msgid "" +#~ "Cannot create a unique DN for your entry. Please fill more formular " +#~ "fields." +#~ msgstr "" +#~ "Невозможно создать уникальный DN для объекта. Заполните все поля формы." + +#, fuzzy +#~ msgid "Addressbook entry acls" +#~ msgstr "Показать объекты адресной книги" + +#, fuzzy +#~ msgid "Surename" +#~ msgstr "Имя сервера" + +#, fuzzy +#~ msgid "Telefon number" +#~ msgstr "Телефонные номера" + +#, fuzzy +#~ msgid "Fax number" +#~ msgstr "Терминал" + +#, fuzzy +#~ msgid "Mobile number" +#~ msgstr "Домашний телефон" + +#, fuzzy +#~ msgid "Home phone number" +#~ msgstr "Телефонные номера" + +#, fuzzy +#~ msgid "User identification" +#~ msgstr "Информация" + +#, fuzzy +#~ msgid "Mail address" +#~ msgstr "MAC-адрес" + +#~ msgid "Organization" +#~ msgstr "Организация" + +#~ msgid "Department" +#~ msgstr "Подразделение" + +#~ msgid "Location" +#~ msgstr "Местоположение" + +#, fuzzy +#~ msgid "Postal address" +#~ msgstr "Почтовый индекс" + +#~ msgid "State" +#~ msgstr "Адм. единица" + +#~ msgid "Initials" +#~ msgstr "Отчество" + +#, fuzzy +#~ msgid "Title" +#~ msgstr "Файлы" + +#, fuzzy +#~ msgid "Common name" +#~ msgstr "Местоположение" + +#~ msgid "Warning" +#~ msgstr "Предупреждение" + +#~ msgid "" +#~ "This includes all addressbook data in this entry. Please double check if " +#~ "your really want to do this since there is no way for GOsa to get your " +#~ "data back." +#~ msgstr "" +#~ "Это включает все объекты адресной книги. Проверте действительно ли это " +#~ "так, поскольку GOsa не сможет отменить результаты этой операции." + +#, fuzzy +#~ msgid "" +#~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +#~ msgstr "" +#~ "Если вы уверены в своих действиях, нажмите на кнопку Удалить, " +#~ "иначе нажмите Отмена." + +#~ msgid "Dial connection..." +#~ msgstr "Соединение..." + +#~ msgid "Private" +#~ msgstr "Личный" + +#~ msgid "Contact" +#~ msgstr "Контакт" + +#~ msgid "Information" +#~ msgstr "Информация" + +#~ msgid "" +#~ "The telephone list plugin provides list and search facilities for the " +#~ "people in your site. You may want to specify the asterisk [*] like in " +#~ "'Go*us' to find 'Gonicus'. Use the filters below to narrow down your " +#~ "search." +#~ msgstr "" +#~ "Этот модуль предоставляет возможности просмотра и поиска информации для " +#~ "пользователей вашего сайта. В шаблоне вы можете использовать звездочку " +#~ "[*], например, \"И*н\", чтобы найти имя \"Иван\". Уточнить результаты " +#~ "поиска можно с помощью фильтров ниже." + +#~ msgid "Actions" +#~ msgstr "Действия" + +#~ msgid "Add entry" +#~ msgstr "Добавить объект" + +#~ msgid "Edit entry" +#~ msgstr "Редактиовать объект" + +#~ msgid "Remove entry" +#~ msgstr "Удалить объект" + +#~ msgid "Select to see regular users" +#~ msgstr "Выберите, чтобы просмотреть пользователей" + +#~ msgid "Show organizational entries" +#~ msgstr "Показать организационные объекты" + +#~ msgid "Select to see users in addressbook" +#~ msgstr "Выберите, чтобы просмотреть пользователей в адресной книге" + +#~ msgid "Show addressbook entries" +#~ msgstr "Показать объекты адресной книги" + +#~ msgid "Display results for department" +#~ msgstr "Показать результаты для подразделения" + +#~ msgid "Choose the department the search will be based on" +#~ msgstr "Выбрать раздел, для которого будет осуществлен поиск" + +#~ msgid "Match object" +#~ msgstr "Соответствующий объект" + +#~ msgid "Choose the object that will be searched in" +#~ msgstr "Выберите объект, в котором будет осуществлен поиск" + +#~ msgid "Search for" +#~ msgstr "Поиск" + +#~ msgid "Search string" +#~ msgstr "Строка поиска" + +#~ msgid "Choose the department to store entry in" +#~ msgstr "Выбрать раздел, для хранения объекта" + +#~ msgid "Personal" +#~ msgstr "Контакт" + +#, fuzzy +#~ msgid "Last name" +#~ msgstr "Список" + +#, fuzzy +#~ msgid "First name" +#~ msgstr "Список" + +#~ msgid "Personal title" +#~ msgstr "Обращение" + +#~ msgid "Address" +#~ msgstr "Адрес" + +#~ msgid "Organizational" +#~ msgstr "Организация" + +#~ msgid "Company" +#~ msgstr "Компания" + +#~ msgid "City" +#~ msgstr "Город" + +#~ msgid "Postal code" +#~ msgstr "Почтовый индекс" + +#~ msgid "Country" +#~ msgstr "Страна" + +#~ msgid "FAX" +#~ msgstr "Факс" + +#~ msgid "You're about to delete the entry %s." +#~ msgstr "Вы собираетесь удалить объект %s." + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "Address book" +#~ msgstr "Адресная книга" + +#, fuzzy +#~ msgid "Removing of addressbook entry '%s' failed." +#~ msgstr "Показать объекты адресной книги" + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "Права для членов группы" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#~ msgid "The required field 'Name' is not set." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#~ msgid "The required field 'Given name' is not set." +#~ msgstr "Обязательное поле \"Личное имя\" не заполнено." + +#~ msgid "The field 'Name' contains invalid characters." +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#~ msgid "The field 'Given name' contains invalid characters." +#~ msgstr "Значение поля \"Личное имя\" содержит недопустимые символы." + +#~ msgid "The field 'Phone' contains an invalid phone number." +#~ msgstr "Значение поля \"Телефон\" содержит недопустимый номер телефона." + +#~ msgid "The field 'Fax' contains an invalid phone number." +#~ msgstr "Значение поля \"Факс\" содержит недопустимый номер телефона." + +#~ msgid "The field 'Mobile' contains an invalid phone number." +#~ msgstr "Значение поля \"Мобильный\" содержит некорректный номер телефона." + +#~ msgid "The field 'Pager' contains an invalid phone number." +#~ msgstr "Значение поля \"Пейджер\" содержит некорректный номер телефона." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "Введите корректное значение в поле \"Основной адрес\"." diff --git a/trunk/gosa-plugins/dak/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dak/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e8cd3e1dd --- /dev/null +++ b/trunk/gosa-plugins/dak/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,433 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: addons/dak/dak_keyring.tpl:2 addons/dak/dak_queue.tpl:2 +#, fuzzy +msgid "Filter" +msgstr "过滤器" + +#: addons/dak/dak_keyring.tpl:11 +msgid "Server" +msgstr "服务器" + +#: addons/dak/dak_keyring.tpl:18 +msgid "Search" +msgstr "查找" + +#: addons/dak/dak_keyring.tpl:22 +msgid "Import" +msgstr "导入" + +#: addons/dak/class_dakkeyring.inc:114 +#, fuzzy +msgid "Key ID" +msgstr "用户 ID" + +#: addons/dak/class_dakkeyring.inc:115 +#, fuzzy +msgid "Length" +msgstr "街道" + +#: addons/dak/class_dakkeyring.inc:116 +msgid "Status" +msgstr "状态" + +#: addons/dak/class_dakkeyring.inc:117 +msgid "UID" +msgstr "UID" + +#: addons/dak/class_dakkeyring.inc:118 +msgid "Action" +msgstr "行动" + +#: addons/dak/class_dakkeyring.inc:139 +#, fuzzy, php-format +msgid "Created: %s" +msgstr "创建" + +#: addons/dak/class_dakkeyring.inc:140 +#, fuzzy +msgid "Valid" +msgstr "有效" + +#: addons/dak/class_dakkeyring.inc:141 +#, fuzzy +msgid "Expired: " +msgstr "过期" + +#: addons/dak/class_dakkeyring.inc:142 +#, fuzzy +msgid "Expires: " +msgstr "过期" + +#: addons/dak/class_dakkeyring.inc:276 +msgid "DAK keyring" +msgstr "" + +#: addons/dak/class_dakkeyring.inc:276 addons/dak/class_dakkeyring.inc:277 +#: addons/dak/class_dakrepository.inc:43 addons/dak/class_dakrepository.inc:44 +#: addons/dak/class_dakqueue.inc:57 addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "Addon" +msgstr "插件" + +#: addons/dak/class_dakkeyring.inc:277 +#, fuzzy +msgid "DAK keyring management" +msgstr "部门管理" + +#: addons/dak/dak_queue.tpl:11 +#, fuzzy +msgid "Repositories" +msgstr "仓库" + +#: addons/dak/class_dakrepository.inc:43 +#, fuzzy +msgid "DAK repository" +msgstr "目录" + +#: addons/dak/class_dakrepository.inc:44 +#, fuzzy +msgid "DAK repository management" +msgstr "目录" + +#: addons/dak/class_DAK.inc:80 addons/dak/class_DAK.inc:96 +#: addons/dak/class_DAK.inc:113 +msgid "Error" +msgstr "错误" + +#: addons/dak/main.inc:46 +msgid "DAK" +msgstr "" + +#: addons/dak/class_dakqueue.inc:57 +#, fuzzy +msgid "DAK queue" +msgstr "电话队列" + +#: addons/dak/class_dakqueue.inc:58 +#, fuzzy +msgid "DAK queue management" +msgstr "管理" + +#~ msgid "Description" +#~ msgstr "描述" + +#~ msgid "Addressbook" +#~ msgstr "地址簿" + +#, fuzzy +#~ msgid "This does something" +#~ msgstr "******" + +#~ msgid "Dial from %s to %s now?" +#~ msgstr "现在从 %s 拨号到 %s 么?" + +#, fuzzy +#~ msgid "" +#~ "You need to set your personal phone number in order to perform direct " +#~ "dials." +#~ msgstr "您尚未设置个人电话号码。要想使用直接拨号需要修改个人电话号码。" + +#~ msgid "Dial" +#~ msgstr "拨号" + +#~ msgid "Save contact for %s as vcard" +#~ msgstr "保存 %s 的内容为 vcard" + +#~ msgid "Send mail to %s" +#~ msgstr "发送邮件到 %s" + +#~ msgid "global addressbook" +#~ msgstr "全局地址簿" + +#~ msgid "user database" +#~ msgstr "用户数据库" + +#~ msgid "Contact stored in '%s'" +#~ msgstr "联系方式保存到 '%s'" + +#~ msgid "Creating new entry in" +#~ msgstr "创建新条目到" + +#~ msgid "All" +#~ msgstr "全部" + +#~ msgid "Name" +#~ msgstr "名称" + +#~ msgid "Given name" +#~ msgstr "名" + +#~ msgid "Work phone" +#~ msgstr "工作电话" + +#~ msgid "Cell phone" +#~ msgstr "移动电话" + +#~ msgid "Home phone" +#~ msgstr "住宅电话" + +#~ msgid "Phone" +#~ msgstr "电话" + +#, fuzzy +#~ msgid "Telephone number" +#~ msgstr "电话号码" + +#~ msgid "Fax" +#~ msgstr "传真" + +#~ msgid "Mobile" +#~ msgstr "手机" + +#~ msgid "Pager" +#~ msgstr "呼机" + +#~ msgid "Email" +#~ msgstr "邮件" + +#~ msgid "" +#~ "Cannot create a unique DN for your entry. Please fill more formular " +#~ "fields." +#~ msgstr "无法为您的条目创建一个唯一 DN。请填写更多字段。" + +#, fuzzy +#~ msgid "Addressbook entry acls" +#~ msgstr "保存地址簿条目失败" + +#~ msgid "Surename" +#~ msgstr "姓" + +#, fuzzy +#~ msgid "Telefon number" +#~ msgstr "电话号码" + +#, fuzzy +#~ msgid "Fax number" +#~ msgstr "系列号" + +#, fuzzy +#~ msgid "Mobile number" +#~ msgstr "电话号码" + +#, fuzzy +#~ msgid "Home phone number" +#~ msgstr "电话号码" + +#, fuzzy +#~ msgid "User identification" +#~ msgstr "用户信息" + +#~ msgid "Mail address" +#~ msgstr "邮件地址" + +#~ msgid "Organization" +#~ msgstr "组织/公司" + +#~ msgid "Department" +#~ msgstr "部门" + +#~ msgid "Location" +#~ msgstr "位置" + +#~ msgid "Postal address" +#~ msgstr "地址" + +#~ msgid "State" +#~ msgstr "州/省" + +#~ msgid "Initials" +#~ msgstr "中间名" + +#~ msgid "Title" +#~ msgstr "称谓" + +#~ msgid "Home postal address" +#~ msgstr "住宅地址" + +#~ msgid "Common name" +#~ msgstr "常用名" + +#~ msgid "Warning" +#~ msgstr "警告" + +#~ msgid "" +#~ "This includes all addressbook data in this entry. Please double check if " +#~ "your really want to do this since there is no way for GOsa to get your " +#~ "data back." +#~ msgstr "" +#~ "这个条目包含所有的地址簿数据,请再次检查您是否要这么做,因为 GOsa 没有办法" +#~ "将您的数据找回。" + +#~ msgid "" +#~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +#~ msgstr "所以,如果您确定,请按“删除”继续,否则按“取消”退出。" + +#~ msgid "Dial connection..." +#~ msgstr "拨号中..." + +#~ msgid "Private" +#~ msgstr "私人电话" + +#~ msgid "Contact" +#~ msgstr "联系" + +#~ msgid "Information" +#~ msgstr "提示信息" + +#~ msgid "" +#~ "The telephone list plugin provides list and search facilities for the " +#~ "people in your site. You may want to specify the asterisk [*] like in " +#~ "'Go*us' to find 'Gonicus'. Use the filters below to narrow down your " +#~ "search." +#~ msgstr "" +#~ "电话列表插件提供了针对您站点用户的列表和查询功能。您可以用通配符[*]," +#~ "如“Go*us”拉来查询“Gonicus”。使用下面的过滤器来过滤查询结果。" + +#~ msgid "Actions" +#~ msgstr "动作" + +#~ msgid "Add entry" +#~ msgstr "添加记录" + +#~ msgid "Edit entry" +#~ msgstr "编辑记录" + +#~ msgid "Remove entry" +#~ msgstr "删除记录" + +#~ msgid "Select to see regular users" +#~ msgstr "选择查看普通用户" + +#~ msgid "Show organizational entries" +#~ msgstr "显示组织记录" + +#~ msgid "Select to see users in addressbook" +#~ msgstr "选择查看地址簿中用户" + +#~ msgid "Show addressbook entries" +#~ msgstr "显示地址簿记录" + +#~ msgid "Display results for department" +#~ msgstr "显示部门的结果" + +#~ msgid "Choose the department the search will be based on" +#~ msgstr "选择一个部门来做查询" + +#~ msgid "Match object" +#~ msgstr "匹配对象" + +#~ msgid "Choose the object that will be searched in" +#~ msgstr "选择要在其中查询的对象" + +#~ msgid "Search for" +#~ msgstr "查询" + +#~ msgid "Search string" +#~ msgstr "查找字符串" + +#~ msgid "Choose the department to store entry in" +#~ msgstr "选择放置条目的部门" + +#~ msgid "Personal" +#~ msgstr "个人" + +#~ msgid "Last name" +#~ msgstr "姓" + +#~ msgid "First name" +#~ msgstr "名" + +#~ msgid "Personal title" +#~ msgstr "个人称谓" + +#~ msgid "Address" +#~ msgstr "住址" + +#~ msgid "Organizational" +#~ msgstr "组织" + +#~ msgid "Company" +#~ msgstr "公司" + +#~ msgid "City" +#~ msgstr "城市" + +#~ msgid "Postal code" +#~ msgstr "邮编" + +#~ msgid "Country" +#~ msgstr "国家" + +#~ msgid "FAX" +#~ msgstr "传真" + +#~ msgid "You're about to delete the entry %s." +#~ msgstr "您将要删除条目 %s。" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Delete" +#~ msgstr "删除" + +#~ msgid "Address book" +#~ msgstr "地址簿" + +#, fuzzy +#~ msgid "Removing of addressbook entry '%s' failed." +#~ msgstr "删除地址簿条目失败" + +#, fuzzy +#~ msgid "Permission error" +#~ msgstr "允许" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "您无权删除这个部门。" + +#~ msgid "The required field 'Name' is not set." +#~ msgstr "需要的“姓名”字段没有设置" + +#~ msgid "The required field 'Given name' is not set." +#~ msgstr "需要的“教名”字段没有设置" + +#~ msgid "The field 'Name' contains invalid characters." +#~ msgstr "“姓名”字段包含无效字符。" + +#~ msgid "The field 'Given name' contains invalid characters." +#~ msgstr "“教名”字段包含无效字符。" + +#~ msgid "The field 'Phone' contains an invalid phone number." +#~ msgstr "“电话”字段包含无效电话号码。" + +#~ msgid "The field 'Fax' contains an invalid phone number." +#~ msgstr "“传真”字段包含一个无效电话号码" + +#~ msgid "The field 'Mobile' contains an invalid phone number." +#~ msgstr "“手机”字段包含无效手机号码。" + +#~ msgid "The field 'Pager' contains an invalid phone number." +#~ msgstr "“传呼”字段包含无效电话号码。" + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "请在“主邮件地址”中输入一个有效的邮件地址。" diff --git a/trunk/gosa-plugins/dak/plugin.dsc b/trunk/gosa-plugins/dak/plugin.dsc new file mode 100644 index 000000000..4b9e38d65 --- /dev/null +++ b/trunk/gosa-plugins/dak/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = dak +description = "Debian archive management infrastructure plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = fai diff --git a/trunk/gosa-plugins/dfs/addons/godfs/class_dfsManagment.inc b/trunk/gosa-plugins/dfs/addons/godfs/class_dfsManagment.inc new file mode 100644 index 000000000..3dfb0f37f --- /dev/null +++ b/trunk/gosa-plugins/dfs/addons/godfs/class_dfsManagment.inc @@ -0,0 +1,262 @@ +config = &$config; + $this->ui = &$ui; + + } + + /* Execute is the function all plugins need. It fills the plugin with life and produces the output. */ + function execute() { + + /* Normally you would react to user input here. */ + plugin::execute(); + + $action = ""; + $s_action= ""; + $options = ""; + $regex = ""; + + $icon = 'folder.gif'; + $expandedIcon = 'folder-expanded.gif'; + $base = get_base_from_people($this->ui->dn); + $smarty= get_smarty(); + + foreach ($_POST as $key => $val) { + # delete + if (preg_match("/dfs_del.*/", $key)) { + $s_action = "del"; + $s_entry = preg_replace("/dfs_".$s_action."_/i", "", $key); + $s_entry = preg_replace("/_.*$/", "", $s_entry); + $s_entry = base64_decode($s_entry); + # edit + } elseif (preg_match("/dfs_edit.*/", $key)) { + $s_action = "edit"; + $s_entry = preg_replace("/dfs_".$s_action."_/i", "", $key); + $s_entry = preg_replace("/_.*$/", "", $s_entry); + $s_entry = base64_decode($s_entry); + # new + } elseif (preg_match("/dfs_new.*/", $key)) { + $s_action = "new"; + # back + } elseif (preg_match("/dfs_back.*/", $key)) { + $s_action = "back"; + # home + } elseif (preg_match("/dfs_home.*/", $key)) { + $s_action = "home"; + # root + } elseif (preg_match("/dfs_root.*/", $key)) { + $s_action = "root"; + } + } + + $tree = new HTML_TreeMenu(); + + if ((isset($_GET['act'])) && ($_GET['act'] == "edit_entry")) { + $s_action = "edit"; + $dfs_share = $_GET['id']; + } + + # new + if ($s_action == "new") { + $this->dn = "new"; + $this->dfstab = new dfstabs($this->config, $this->config->data['TABS']['DFSTABS'], $this->dn); + } + + # edit + if (($_SERVER['REQUEST_METHOD'] == "POST") || ($_SERVER['REQUEST_METHOD'] == "GET")) { + if ($s_action == "edit") { + + $this->dn = $dfs_share; + + if (($user = get_lock($this->dn)) != "") { + return (gen_locked_message ($user, $this->dn)); + } else { + add_lock ($this->dn, $this->ui->dn); + } + + $this->acl = get_permissions($this->dn, $this->ui->subtreeACL); + + $this->dfstab = new dfstabs($this->config, $this->config->data['TABS']['DFSTABS'], $this->dn); + $this->dfstab->set_acl($this->acl); + $this->dfstab->save_object(); + } + } + + # save pressed + if (isset($_POST['edit_finish'])) { + $this->dfstab->last = $this->dfstab->current; + $this->dfstab->save_object(); + #$disp = $this->by_object['']; + #var_dump($disp); + + $message = $this->dfstab->check(); + + # any errors? + if (count($message) == 0) { + # write to ldap + $this->dfstab->save(); + } else { + msg_dialog::displayChecks($message); + } + } + + # cancel pressed + if (isset($_POST['edit_cancel'])) { + del_lock ($this->dn); + unset ($this->dfstab); + $this->dfstab = NULL; + $this->dn = ""; + } + + # delete pressed + if (isset($_POST['edit_delete'])) { + + # get the current values + $this->sambasharename = $_POST['sambaShareName']; + $this->sharedescription = $_POST['description']; + $this->fileserver = $_POST['fileserver']; + $this->share = $_POST['fileservershare']; + $this->loc = $_POST['location']; + + $base = get_base_from_people($this->ui->dn); + $ou = get_ou("DFS"); + $this->basedn = "sambaShareName=$this->sambasharename,ou=$this->loc,$ou$base"; + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->basedn); + $ldap->rmdir($this->basedn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->basedn, LDAP_DEL, get_class())); + } + + del_lock ($this->dn); + unset ($this->dfstab); + $this->dfstab = NULL; + $this->dn = ""; + } + + # generate main page no tabs + + $ldap = $this->config->get_ldap_link(); + + $ou = get_ou("DFS"); + + $ldap->cd("$ou$base"); + $ldap->search(("ou=*"), array("dn")); + + if ($ldap->count() == 0) { + $message[] = _("No DFS entries found"); + msg_dialog::displayChecks($message); + } else { + $have_tree= false; + while ($dfs = $ldap->fetch()) { + if (preg_match("/^ou=DFS.*/", $dfs["dn"])) { + $dfs_root_node = new HTML_TreeNode(array('text' => "DFS", 'icon' => $icon, 'expandedIcon' => $expandedIcon, 'expanded' => false)); + $have_tree= true; + } elseif ($have_tree) { + preg_match("/^ou=(.*),/U", $dfs["dn"], $reg); + $loc = $reg[1]; + $node = $dfs_root_node->addItem(new HTML_TreeNode(array('text' => "$loc", 'icon' => $icon, 'expandedIcon' => $expandedIcon))); + + $sub_node_ldap = $this->config->get_ldap_link(); + $sub_node_ldap->cd("ou=$loc, $ou$base"); + $sub_node_ldap->search("(objectclass=sambaShare)", array("sambaShareName", "description", "documentLocation")); + + while ($dfs_loc = $sub_node_ldap->fetch()) { + $share_name = $dfs_loc["sambaShareName"][0]; + $desc = $dfs_loc["description"][0]; + $srv_loc = preg_replace("/msdfs:/", "", $dfs_loc["documentLocation"][0]); + #$srv_loc = preg_replace("/\\/", "\\\\", $srv_loc); + $link = "main.php\?plug=".$_GET['plug']."\&id=$loc\/$share_name\&act=edit_entry"; + $share_node = &$node->addItem(new HTML_TreeNode(array('text' => "$share_name - $desc", 'link' => "$link", 'icon' => $icon, 'expandedIcon' => $expandedIcon))); + $srv_loc_node = &$share_node->addItem(new HTML_TreeNode(array('text' => "$srv_loc", 'icon' => $icon, 'expandedIcon' => $expandedIcon))); + } + } + } + } + + $tree->addItem($dfs_root_node); + + // Create the presentation class + $treeMenu = new HTML_TreeMenu_DHTML($tree, array('images' => 'images', 'defaultClass' => 'treeMenuDefault')); + $tree_html = $treeMenu->toHTML(); + + if ($this->dfstab === NULL) { + + if (($message = check_sizelimit()) != "") { + return ($message); + } + + $listhead = "
". + "  ". + "  ". + "  ". + "  ". + _("Base")." ". + "  
"; + + + /* Use the smarty templating engine here... */ + + $smarty->assign('tree', $tree_html); + $smarty->assign('search_image', get_template_path('images/lists/search.png')); + $smarty->assign('infoimage', get_template_path('images/info.png')); + $smarty->assign('launchimage', get_template_path('images/launch.png')); + $smarty->assign('alphabet', generate_alphabet()); + $smarty->assign('hint', print_sizelimit_warning()); + $smarty->assign('apply', apply_filter()); + $smarty->assign('dfshead', $listhead); + + /* Let smarty fetch and process the page. Always seperate PHP and HTML as much as + you can. */ + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + + /* TABS */ + + $display = $this->dfstab->execute(); + + $display .= "

\n"; + $display .= " \n"; + $display .= " \n"; + $display .= " \n"; + $display .= " \n"; + $display .= " \n"; + $display .= " \n"; + $display .= "
\n"; + $display .= " \n"; + $display .= "  \n"; + $display .= " \n"; + $display .= "
\n"; + $display .= "

\n"; + + return ($display); + + } + + function remove_lock() { + if (isset($this->dn)) { + del_lock ($this->dn); + } + } + +} +?> diff --git a/trunk/gosa-plugins/dfs/addons/godfs/class_dfsgeneric.inc b/trunk/gosa-plugins/dfs/addons/godfs/class_dfsgeneric.inc new file mode 100644 index 000000000..4e09f582f --- /dev/null +++ b/trunk/gosa-plugins/dfs/addons/godfs/class_dfsgeneric.inc @@ -0,0 +1,205 @@ +dn = $dn; + $this->orig_dn = $dn; + } + + function execute() { + /* Call parent execute */ + plugin::execute(); + + $smarty= get_smarty(); + + if (($this->dn == "new") || ($this->dn == "")) { + $smarty->assign("sambasharename", ""); + $smarty->assign("sharedescription", ""); + $smarty->assign("fileserver", ""); + $smarty->assign("fileservershare", ""); + $smarty->assign("location", ""); + $smarty->assign("dfsdescription", ""); + } else { + $ldap = $this->config->get_ldap_link(); + + $base = get_base_from_people($this->dn); + $ou = get_ou("DFS"); + + $tmp = preg_split('/\//', $this->dn, 2); + $this->loc = $tmp[0]; + $this->sambasharename = $tmp[1]; + + $ldap->cd("$ou $base"); + $ldap->search(("ou=$this->loc"), array("description")); + $dfs_desc = $ldap->fetch(); + $this->dfsdescription = $dfs_desc['description'][0]; + + $ldap->cd("ou=$this->loc, $ou $base"); + $ldap->search("(&(sambaShareName=$this->sambasharename)(objectclass=sambaShare))", array("description", "documentLocation")); + + $details = $ldap->fetch(); + $this->sharedescription = $details['description'][0]; + $tmp = preg_split('/\\\\/', $details['documentLocation'][0], 2); + + $this->fileserver = preg_replace("/msdfs:/", "", $tmp[0]); + $this->share = preg_replace("/\\\/", "", $tmp[1]); + + /* Fill array */ + $smarty->assign("sambasharename", $this->sambasharename); + $smarty->assign("sharedescription", $this->sharedescription); + $smarty->assign("fileserver", $this->fileserver); + $smarty->assign("fileservershare", $this->share); + $smarty->assign("location", $this->loc); + $smarty->assign("dfsdescription", $this->dfsdescription); + } + + /* Show main page */ + return ($smarty->fetch (get_template_path('generic.tpl', TRUE))); + } + + function check() + { + plugin::check(); + $message = array(); + + $ldap = $this->config->get_ldap_link(); + $base = get_base_from_people($this->ui->dn); + $ou = get_ou("DFS"); + $dn_explode = explode("/", $this->dn); + $sub_ou = $dn_explode[0]; + $sambaShareName = $dn_explode[1] . "/" . $dn_explode[2] . "/" . $dn_explode[3]; + $dn = "sambaShareName=$sambaShareName,ou=$sub_ou,$ou$base"; + $ldap->cat($dn); + $attrs = $ldap->fetch(); + + if ($this->orig_dn == "new" && !($attrs == FALSE)) { + $message[] = msgPool::duplicated("Dfs Share"); + } elseif ($this->orig_dn != $this->dn && !($attrs == FALSE)) { + $message[] = msgPool::duplicated("Dfs Share"); + } + + if ($this->dn == "new" || $this->dn == "") { + $this->sambasharename = $_POST['sambaShareName']; + $this->sharedescription = $_POST['description']; + $this->fileserver = $_POST['fileserver']; + $this->share = $_POST['fileservershare']; + $this->loc = $_POST['location']; + } + + # required fields set? + if ($this->sambasharename == "") { + $message[] = msgPool::required("Name"); + } + if ($this->sharedescription == "") { + $message[] = msgPool::required("Description"); + } + if ($this->fileserver == "") { + $message[] = msgPool::required("Fileserver"); + } + if ($this->share == "") { + $message[] = msgPool::required("Share"); + } + if ($this->loc == "") { + $message[] = msgPool::required("Location"); + } + + return $message; + } + + function save() { + + plugin::save(); + + # get the current values + $this->sambasharename = $_POST['sambaShareName']; + $this->sharedescription = $_POST['description']; + $this->fileserver = $_POST['fileserver']; + $this->share = $_POST['fileservershare']; + $this->loc = $_POST['location']; + + # set the attribs + $this->attrs["sambaShareName"] = "$this->sambasharename,ou=$this->loc,$ou$base"; + $this->attrs["objectClass"][] = "top"; + $this->attrs["objectClass"][] = "SambaShare"; + $this->attrs["objectClass"][] = "extensibleObject"; + $this->attrs["sambaShareName"] = $this->sambasharename; + $this->attrs["description"] = $this->sharedescription; + $this->attrs["documentLocation"] = "msdfs:$this->fileserver\\\\$this->share"; + + $ldap = $this->config->get_ldap_link(); + + if ($this->dn == "new" || $this->dn == "") { + $base = get_base_from_people($this->ui->dn); + $ou = get_ou("DFS"); + $this->basedn = "sambaShareName=$this->sambasharename,ou=$this->loc,$ou$base"; + $ldap->cd($this->basedn); + $ldap->add($this->attrs); + } else { + # try to find entry + $base = get_base_from_people($this->ui->dn); + $ou = get_ou("DFS"); + #$dn_explode = explode("/", $this->sambasharename); + #$sub_ou = $dn_explode[0]; + #$sambaShareName = $dn_explode[1] . "/" . $dn_explode[2] . "/" . $dn_explode[3]; + $dn = "sambaShareName=$this->sambasharename,ou=$this->loc,$ou$base"; + $ldap->cat($dn); + $attrs = $ldap->fetch(); + + $this->basedn = "sambaShareName=$this->sambasharename,ou=$this->loc,$ou$base"; + $ldap->cd($this->basedn); + $nr = count($attrs); + + if (count($attrs)) { + # modify if found + $ldap->modify($this->attrs); + } else { + # add + $ldap->add($this->attrs); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + } + + function save_object() { + plugin::save_object(); + $this->base = $_POST['base']; + } + + function delete() { + + plugin::delete(); + + # get the current values + $this->sambasharename = $_POST['sambaShareName']; + $this->sharedescription = $_POST['description']; + $this->fileserver = $_POST['fileserver']; + $this->share = $_POST['fileservershare']; + $this->loc = $_POST['location']; + + $base = get_base_from_people($this->ui->dn); + $ou = get_ou("DFS"); + $this->basedn = "sambaShareName=$this->sambasharename,ou=$this->loc,$ou$base"; + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->basedn); + $ldap->rmdir($this->basedn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->basedn, LDAP_DEL, get_class())); + } + } + + } + diff --git a/trunk/gosa-plugins/dfs/addons/godfs/contents.tpl b/trunk/gosa-plugins/dfs/addons/godfs/contents.tpl new file mode 100644 index 000000000..e5f2206ab --- /dev/null +++ b/trunk/gosa-plugins/dfs/addons/godfs/contents.tpl @@ -0,0 +1,54 @@ + + + + + + + +
+
+

+ {t}DFS Shares{/t} {$hint} +

+
+
+ {$dfshead} +
+
+
+ {$tree} + +
+
+
+

[i]{t}Information{/t}

+
+
+

+ {t}This menu allows you to create, delete and edit selected dfs shares. Having a large numbers of dfs shares, you might prefer the range selectors on top of the dfs share list.{/t} +

+
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + + +
+ + + +
+ {$apply} +
+
+ + diff --git a/trunk/gosa-plugins/dfs/addons/godfs/generic.tpl b/trunk/gosa-plugins/dfs/addons/godfs/generic.tpl new file mode 100644 index 000000000..9ceecf83b --- /dev/null +++ b/trunk/gosa-plugins/dfs/addons/godfs/generic.tpl @@ -0,0 +1,52 @@ + + + + + + +
+

{t}DFS Properties{/t}

+ + + + + + + + + + + + + + + + + + +
{$must}
{$must}
{$must}
{$must}
+ +
+   + +

{t}DFS Location{/t}

+ + + + + + + + + + +
{$must}
+ +
+ + + diff --git a/trunk/gosa-plugins/dfs/addons/godfs/main.inc b/trunk/gosa-plugins/dfs/addons/godfs/main.inc new file mode 100644 index 000000000..424b3c54d --- /dev/null +++ b/trunk/gosa-plugins/dfs/addons/godfs/main.inc @@ -0,0 +1,50 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('dfsManagment'); +}else{ + + # create dfsManagment object + if (!session::is_set('dfsManagment')){ + session::set('dfsManagment',new dfsManagment($config, $ui)); + } + $dfsManagment = session::get('dfsManagment'); + $output = $dfsManagment->execute(); + + # do we have to reset + if (isset($_GET['reset']) && $_GET['reset'] == 1) { + del_lock ($ui->dn); + session::un_set('dfsManagment'); + } + + # create page header + if (get_object_info() != "") { + $display = print_header(get_template_path('plugins/dfs/images/dfs.png'), + _("Distributed File System Administration"), + "\"\" ".get_object_info()); + } else { + $display = print_header(get_template_path('plugins/dfs/images/dfs.png'), + _("Distributed File System Administration")); + } + + $display.= $output; + + # show page + session::set('dfsManagment',$dfsManagment); + } + +?> diff --git a/trunk/gosa-plugins/dfs/addons/godfs/tabs_dfs.inc b/trunk/gosa-plugins/dfs/addons/godfs/tabs_dfs.inc new file mode 100644 index 000000000..ef5950ebe --- /dev/null +++ b/trunk/gosa-plugins/dfs/addons/godfs/tabs_dfs.inc @@ -0,0 +1,39 @@ +base = $this->by_object['dfsManagment']->base; + } + + #function save_object() { + # if (isset($_POST['base'])) { + # plugin::save_object(); + # } else { + # $this->base = $_POST['base']; + # } + #} + + + + + function check($ignore_account= FALSE) { + return (tabs::check(TRUE)); + } + + function save($ignore_account= FALSE) + { + $baseobject = $this->by_object['dfsManagment']; + return tabs::save(TRUE); + } + + function del() { + $baseobject = $this->by_object['dfsManagment']; + return tabs::delete(TRUE); + } + +} + +?> diff --git a/trunk/gosa-plugins/dfs/help/guide.xml b/trunk/gosa-plugins/dfs/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/dfs/html/images/dfs.png b/trunk/gosa-plugins/dfs/html/images/dfs.png new file mode 100644 index 0000000000000000000000000000000000000000..accbd8d632ab91bd1d77a39c75d3c045221ef13d GIT binary patch literal 3646 zcmV-E4#Dw>P)iCI@)v?y6gL&wtLj=ltiq7VJZwc;bbVwc6D02BDtBIj5Aw7`vZG zw?yuISqKdhvMd+QIs5K~pT2SV@>_50=e2qtYpTC=>aoB3+!sFoXmg^8!XSZ4t%8&i zF;YSb5CQ~9ArL|!5K!C`#ce4BF#6lC>vnpqtgIr#GM#Rpb3gl^SO5Ai|Lpe{7vFyE zo&g*^`iYlbc=-#D&fhoBpx(IA`%Hfs_J-yh%B4cu|0GH(ggs zF&GRv^P~U5;kf^S6SO8K_{`^?)jvJ^!#`SFeET1PwR-{}r9PpDqNZ^~qDjQAoSf=f-*uAq1sT5(AaJ^xG3at2H;Jv{$e{=(E1D&g*~sSA2Z^Dp4Gx zl}2feQVOj#dfV>;I5>ZV&%g5Pw7XqOr5NiS0mjm7)R~-U(eDjVLIOU-oOMKT90SR{ z0uV{5Jgu}}rj;fe^tpWLB6*e*4h95TqqHiN4hRYmI?y=hXmpxHVOYcs;2a1s_9zI_ zEc2Tcq3Cc#Q5*r~dj$}dtCf~girg4xr&@$^$SbFR4XGqrDWp_Be56DvH4ZDK6adZE z1kFYbV;shqv4x!w*aAdua=?wVm$jBSjzftoTXs*^djW`&a(Ql)_v1+M$djyaq zbs;6nIc}_WXm$DJiK@?#6=Digvfd`S&i-YBV^0^axT4tg~c!?yIaE zWfQNIaTaTR5ktu05aUBl6d{CxZBMz49ZElqO7$(#R);b-{<^$ zmpF0XeKcw{j4@d2tu2)V1cTvlydDWr5E29$XAAyQ9g%h zO081i!0faqaRpsaQn9?c%EI{zJapoIrY9!~ZshMb)07LB-e)iza{qlt7@t@HS}A6y zrs(&2IOkAuWDrH8)vN-g-E`bFzJegCl}aU?b4BHZW}`OBpU6=v4J6AeD?I$*gG^0K zkmrWn82>XjL_x^I51ypgAJ88T89yjwQFTL<*5t;HX}DC9YPDY33&5@(h~p@cN>bDv zqA(x`G$4?|A%s`NTEn3Ov&2D+#i6wH@m~}zheIjJ-1HP$jcm5nKln@)0lq@}ETyQ_ zYGwQxxH|wrq!TF>QaCJ@APA_}Ds1$+g%t}II>%(INvmF=-RqGXJEA;DDbZ3A1p#pw zlGz-AD;gjlOi~C+af#IUY^jRAqEe}Z?7@e2FJw_%R$AhmK_W==oXJKNp7t5 zV0z~8gzrfNPC#xg8=VgGGY!(EjNDk%wgx86a?;G8ltgRk!^b&{aa--AkQB@rhofFD zk;D;eo9%Jisg%G1m0DHGAgGvZX8^k$Vo|Bq4~{G%gg^ zASlJ9X{8j_7QP0AbzHf&Mw%H8P1nhdWqG|zmKj_@iT(aXKP*Pn)ITq!pq9i`N)dxJ z#QD^5lma~?6qed9&yFLSP7)O(y-Up7{$?K z7=?WB{$*CLU!&I>@X%wA&}cM}($X8GoL~G1trX=rq**IbE=9yqK&ZW<)qFR!aL#bpz zoi&p))1C@Tz)+AjpXWRMA)CDcT1m8$z84VQmbTzM!WCRc3WSv2qyiAmGgu^3(=!BN zfDjO9O&FIdg`Rf?pjw(fSSpo6YYhkH4{~7sAl6u<^lTC#eXcKaF(1B_7!2A@0!I06` z?lz$)w)K$P+su)IV(Y>!YsS|`GbO-UZ-hZ+DV36>0B~E`ErjMuall*W&a=_(B9$7? zbZ!#IEwIFB0>So^ck8oRmf@Tm0~)Vzo@O69FipKys{-Mj11Lq)mp=TM>l+>3eP@Ag zr;So-%c`TPn-JS9?62E`lu>a1(Y$mUUW5=FK6XE)q>OX6c$F-S-;dFTB+69WkR+4-iE$TB~AY=s%-bP!I&vYISmxQ!Xd;`@L~hZ8j%J)09qU1CUtTXLe?qZa+s! z#pUZ4xZ1vmu$oUEd4?n|Bc!C)+gJz89Ro6NZF^X65ikp z-+$^~S$}tvKj$%;wL@4e>+3gGfXzDwu)cod;-K3dRx9P`m!Eus$%z{ETAes9Q7%_$ zG+R_ERiY>^a=RqZnmCS0l9NPnj47IYa71wlYYb`XiJ8)la+2VzB2*F2AA6DOgGFX1 z4soLS0HwIhU^t}fU3TX^@y5oDb3gg<_rH7kS5KdQ@ukySrw`v7TWc9H)nAlqy-u2@ z#e_l<1RAAATNQ^}2uyAW8wn1_ryI}nO!gc~DN>OkrR0q_{)zW5U3mMh006`9eCOL= zzjkd=9zA;B3Fqe_H!awPX?)3ACypOKdEntwCzIh|NVnVN;>FA9#~)w4f`7p+WnlCk zDSUMnQi#pXjp2{a{Ks3Ho2%aidOIn3tNCsg1snrT;9I-f5~^)t0sZQ$fB2_g{pue) zyt1;);^K#V>sx=n`hy?*^Pd2V?C)zW0i?hZaGtvztKd)n#p1JH(K9m#zH;*9Nmf@U z3BwZgdcy)g0)BP}@7b5^I+eIf$(52e2m+EMA&z6Dln%)LANJapJNJ~wAODSd7@9_! zrtaLip9KB>umoVO#TY}sKhzK&K6dO>duHaOICJKQAHfH=C1-ak`vCB)e(I@VaP3-j z+xQQHC6^@b8(;k5OTUvO3C8>u$B)m)!{HDi1hcancM~*zZ8F3?vr^jpRxT&8HgngmtsH*&<5+tC#OtsB3$MNQjmLp2?2`TV458t0m@X_VptUTT`|V2kFFICM zZqV&ESzBA>c8q%jpx5i6RKV4%SCKMfV`Gz*m6comZ6Qfwu3Y&r=l|eaN{q45JMUaT zN^#qMz+1LUzu#wlUEBh4`?|qkKo~|WFW(?dJ8W!pSYBSa#j{};u)KUj@A2i#z5uu= z5^sL*duI-3StdrrY$SePW2dJN&IN&%{r>P4Wwryz^PDh@Sz20d|NQ66o7HMfCQ11g z!$>Jbzu!%zRGGDQ$B6{&U5Nqalu{2HV}jef$N~1$smGr?eE86(^W2o(ZQHgj34%bJ zJ^P>ke*OB@f5X>?opi9kyTJSG;)eYI*pD=T2Y@Pj(+vq+EtK0cP3|TC3rl2+u_f!F QA^-pY07*qoM6N<$f}xGfV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/dfs/html/images/dtree.png b/trunk/gosa-plugins/dfs/html/images/dtree.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb7909962febca801ae5ff4a82e8ffa16badd09 GIT binary patch literal 694 zcmV;n0!jUeP)jG>HG301Z<2_xC@Be}94W z&(941etlX15I`&-L*0$U8Gim^VEFlif#JtbApQZx-x(Ob1L^PIp%|GB#Q&HW7=8gg z3^bSFKNG~IjEtXv0=p6b0*Hx|jfLSS(6C=13^e>V2>*uSKMV|ifEefy2u5Q6L&7Mb z$;`^Y$iT(`5I`(^tp6FTB@r4x2K|8=@&^h3MrQv;(7%8G2kQgH7080WKrbv_$HV{- zKrH<13=9r(2n%P=p3RV&no2NoK!$(}`}YqRw*UTvF^K=`=YNKMN0=A@0*Hy6RDsJ- z7#pMjAb?mH{t;*JkEwE~$tnE-Rzo3t1_potV*3A&ymSn6EwZ5?_Ftelhz1BC7HmNQ z3TI@1EzA+Y@gEv-Fbg0C0|XEYHWw2UdDvWx925Wn#6nEuffU2S6gko`!xljU1Q5Yg zflVVmLqV1T1Bn43fbd2hE{(ViMFa&v0O1S@WKCc^M+ul!fjJhI{GxB5MH*Bc)S&oJsRDpzPA!c9=04)9g{Dsg!i{NY^{SR3VO8@)&4`*t+_2fGPKmak)s?GxlASMPH c0e}Dl0I565QA{BqJOBUy07*qoM6N<$f;X}fV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/dfs/html/images/location.png b/trunk/gosa-plugins/dfs/html/images/location.png new file mode 100644 index 0000000000000000000000000000000000000000..3d26af552952fe0cedd11eda61928b27dd923f6b GIT binary patch literal 713 zcmV;)0yh1LP)o=i=7)s%e<{k0*6-B)dV* z>bYTh8-0F{>Q;J6!>vO+LS$&3LLcTM^kwLxf6YC?eb7}?K^9jYhqH1DkYMN, 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-04-03 14:16+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: addons/godfs/class_dfsManagment.inc:8 +msgid "DFS Management" +msgstr "UDFS-Verwaltung" + +#: addons/godfs/class_dfsManagment.inc:9 +msgid "This does something" +msgstr "Dies tut etwas" + +#: addons/godfs/class_dfsManagment.inc:146 +#: addons/godfs/class_dfsgeneric.inc:171 addons/godfs/class_dfsgeneric.inc:200 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: addons/godfs/class_dfsManagment.inc:165 +msgid "No DFS entries found" +msgstr "Keine DFS-Einträge gefunden" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Go up one dfsshare" +msgstr "Eine DFS-Freigabe nach oben" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Up" +msgstr "Auf" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Go to dfs root" +msgstr "Gehe zur DFS-Wurzel" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Root" +msgstr "Wurzel" + +#: addons/godfs/class_dfsManagment.inc:210 +msgid "Create new dfsshare" +msgstr "Neue DFS-Freigabe erstellen" + +#: addons/godfs/class_dfsManagment.inc:212 +msgid "Base" +msgstr "Basis" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit department" +msgstr "Übertrage Abteilung" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit" +msgstr "Übertragen" + +#: addons/godfs/class_dfsManagment.inc:242 +msgid "Finish" +msgstr "Speichern" + +#: addons/godfs/generic.tpl:4 +msgid "DFS Properties" +msgstr "DFS-Eigenschaften" + +#: addons/godfs/generic.tpl:8 +msgid "Name of dfs Share" +msgstr "Name der DFS-Freigabe" + +#: addons/godfs/generic.tpl:12 addons/godfs/generic.tpl:38 +msgid "Description" +msgstr "Beschreibung" + +#: addons/godfs/generic.tpl:16 +msgid "Fileserver" +msgstr "Dateiserver" + +#: addons/godfs/generic.tpl:20 +msgid "Share on Fileserver" +msgstr "Freigabe auf Dateiserver" + +#: addons/godfs/generic.tpl:30 +msgid "DFS Location" +msgstr "DFS-Pfad" + +#: addons/godfs/generic.tpl:34 +msgid "Location" +msgstr "Pfad" + +#: addons/godfs/main.inc:35 addons/godfs/main.inc:41 +msgid "Distributed File System Administration" +msgstr "Verwaltung des Verteilten Dateisystems (DFS)" + +#: addons/godfs/contents.tpl:8 +msgid "DFS Shares" +msgstr "DFS-Freigaben" + +#: addons/godfs/contents.tpl:22 +msgid "Information" +msgstr "Information" + +#: addons/godfs/contents.tpl:26 +msgid "" +"This menu allows you to create, delete and edit selected dfs shares. Having " +"a large numbers of dfs shares, you might prefer the range selectors on top " +"of the dfs share list." +msgstr "" +"Dieses Menü erlaubt es Ihnen, DFS-Freigaben hinzuzufügen, zu bearbeiten oder " +"zu entfernen. Bei einer Vielzahl von DFS-Freigaben bietet sich die " +"Verwendung der Bereichswahl an." + +#: addons/godfs/contents.tpl:31 +msgid "Filters" +msgstr "Filter" + +#: addons/godfs/contents.tpl:40 +msgid "Display dfs shares matching" +msgstr "Zeige die DFS-Freigaben, auf die das Folgende passt" + +#: addons/godfs/contents.tpl:44 +msgid "Regular expression for matching dfs share names" +msgstr "Regulärer Ausdruck zum Erkennen von DFS-Freigaben" diff --git a/trunk/gosa-plugins/dfs/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dfs/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f20e0ae12 --- /dev/null +++ b/trunk/gosa-plugins/dfs/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,134 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: addons/godfs/class_dfsManagment.inc:8 +msgid "DFS Management" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:9 +msgid "This does something" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:146 +#: addons/godfs/class_dfsgeneric.inc:171 addons/godfs/class_dfsgeneric.inc:200 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: addons/godfs/class_dfsManagment.inc:165 +msgid "No DFS entries found" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Go up one dfsshare" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Up" +msgstr "Arriba" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Go to dfs root" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Root" +msgstr "Raíz" + +#: addons/godfs/class_dfsManagment.inc:210 +msgid "Create new dfsshare" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:212 +msgid "Base" +msgstr "Base" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit department" +msgstr "Enviar departamento" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit" +msgstr "Enviar" + +#: addons/godfs/class_dfsManagment.inc:242 +msgid "Finish" +msgstr "Terminar" + +#: addons/godfs/generic.tpl:4 +msgid "DFS Properties" +msgstr "" + +#: addons/godfs/generic.tpl:8 +msgid "Name of dfs Share" +msgstr "" + +#: addons/godfs/generic.tpl:12 addons/godfs/generic.tpl:38 +msgid "Description" +msgstr "Descripción" + +#: addons/godfs/generic.tpl:16 +msgid "Fileserver" +msgstr "" + +#: addons/godfs/generic.tpl:20 +msgid "Share on Fileserver" +msgstr "" + +#: addons/godfs/generic.tpl:30 +msgid "DFS Location" +msgstr "" + +#: addons/godfs/generic.tpl:34 +msgid "Location" +msgstr "Localización" + +#: addons/godfs/main.inc:35 addons/godfs/main.inc:41 +msgid "Distributed File System Administration" +msgstr "" + +#: addons/godfs/contents.tpl:8 +msgid "DFS Shares" +msgstr "" + +#: addons/godfs/contents.tpl:22 +msgid "Information" +msgstr "Información" + +#: addons/godfs/contents.tpl:26 +msgid "" +"This menu allows you to create, delete and edit selected dfs shares. Having " +"a large numbers of dfs shares, you might prefer the range selectors on top " +"of the dfs share list." +msgstr "" + +#: addons/godfs/contents.tpl:31 +msgid "Filters" +msgstr "Filtros" + +#: addons/godfs/contents.tpl:40 +msgid "Display dfs shares matching" +msgstr "" + +#: addons/godfs/contents.tpl:44 +msgid "Regular expression for matching dfs share names" +msgstr "" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" diff --git a/trunk/gosa-plugins/dfs/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dfs/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..52e774893 --- /dev/null +++ b/trunk/gosa-plugins/dfs/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,130 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-06-04 09:22+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: addons/godfs/class_dfsManagment.inc:8 +msgid "DFS Management" +msgstr "Gestion DFS" + +#: addons/godfs/class_dfsManagment.inc:9 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: addons/godfs/class_dfsManagment.inc:146 +#: addons/godfs/class_dfsgeneric.inc:171 addons/godfs/class_dfsgeneric.inc:200 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: addons/godfs/class_dfsManagment.inc:165 +msgid "No DFS entries found" +msgstr "Pas d'entrée DFS trouvées" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Go up one dfsshare" +msgstr "Monter d'un partage DFS" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Up" +msgstr "Au dessus" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Go to dfs root" +msgstr "Aller au répertoire racine de DFS" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Root" +msgstr "Racine" + +#: addons/godfs/class_dfsManagment.inc:210 +msgid "Create new dfsshare" +msgstr "Création d'un nouveau partage dfs" + +#: addons/godfs/class_dfsManagment.inc:212 +msgid "Base" +msgstr "Base" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit department" +msgstr "Soumettre le département" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit" +msgstr "Soumettre" + +#: addons/godfs/class_dfsManagment.inc:242 +msgid "Finish" +msgstr "Terminé" + +#: addons/godfs/generic.tpl:4 +msgid "DFS Properties" +msgstr "Propriétés DFS" + +#: addons/godfs/generic.tpl:8 +msgid "Name of dfs Share" +msgstr "Nom du partage DFS" + +#: addons/godfs/generic.tpl:12 addons/godfs/generic.tpl:38 +msgid "Description" +msgstr "Description" + +#: addons/godfs/generic.tpl:16 +msgid "Fileserver" +msgstr "Serveur de fichier" + +#: addons/godfs/generic.tpl:20 +msgid "Share on Fileserver" +msgstr "Partage sur le serveur de fichier" + +#: addons/godfs/generic.tpl:30 +msgid "DFS Location" +msgstr "Location DFS" + +#: addons/godfs/generic.tpl:34 +msgid "Location" +msgstr "Lieu" + +#: addons/godfs/main.inc:35 addons/godfs/main.inc:41 +msgid "Distributed File System Administration" +msgstr "Administration du systèmes de fichiers distribués DFS" + +#: addons/godfs/contents.tpl:8 +msgid "DFS Shares" +msgstr "Partages DFS" + +#: addons/godfs/contents.tpl:22 +msgid "Information" +msgstr "Information" + +#: addons/godfs/contents.tpl:26 +msgid "" +"This menu allows you to create, delete and edit selected dfs shares. Having " +"a large numbers of dfs shares, you might prefer the range selectors on top " +"of the dfs share list." +msgstr "" +"Ce menu vous permet de d'ajouter, supprimer et éditer des partages DFS. Si " +"vous avez un grand nombre de départements il est conseillé d'utiliser les " +"filtres." + +#: addons/godfs/contents.tpl:31 +msgid "Filters" +msgstr "Filtres" + +#: addons/godfs/contents.tpl:40 +msgid "Display dfs shares matching" +msgstr "Afficher les partages dfs correspondants" + +#: addons/godfs/contents.tpl:44 +msgid "Regular expression for matching dfs share names" +msgstr "Expression régulière pour sélectionner les partages dfs" diff --git a/trunk/gosa-plugins/dfs/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dfs/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..861c41236 --- /dev/null +++ b/trunk/gosa-plugins/dfs/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,183 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: addons/godfs/class_dfsManagment.inc:8 +#, fuzzy +msgid "DFS Management" +msgstr "Dirigenza" + +#: addons/godfs/class_dfsManagment.inc:9 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: addons/godfs/class_dfsManagment.inc:146 +#: addons/godfs/class_dfsgeneric.inc:171 addons/godfs/class_dfsgeneric.inc:200 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: addons/godfs/class_dfsManagment.inc:165 +msgid "No DFS entries found" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:208 +#, fuzzy +msgid "Go up one dfsshare" +msgstr "Sali di dipartimento" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Up" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Go to dfs root" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Root" +msgstr "Root" + +#: addons/godfs/class_dfsManagment.inc:210 +#, fuzzy +msgid "Create new dfsshare" +msgstr "Crea in" + +#: addons/godfs/class_dfsManagment.inc:212 +msgid "Base" +msgstr "Base" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit department" +msgstr "Imposta dipartimento" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:242 +msgid "Finish" +msgstr "Esegui" + +#: addons/godfs/generic.tpl:4 +#, fuzzy +msgid "DFS Properties" +msgstr "Modifica proprietà" + +#: addons/godfs/generic.tpl:8 +#, fuzzy +msgid "Name of dfs Share" +msgstr "Crea in" + +#: addons/godfs/generic.tpl:12 addons/godfs/generic.tpl:38 +msgid "Description" +msgstr "Descrizione" + +#: addons/godfs/generic.tpl:16 +#, fuzzy +msgid "Fileserver" +msgstr "Server" + +#: addons/godfs/generic.tpl:20 +#, fuzzy +msgid "Share on Fileserver" +msgstr "server" + +#: addons/godfs/generic.tpl:30 +#, fuzzy +msgid "DFS Location" +msgstr "Località" + +#: addons/godfs/generic.tpl:34 +msgid "Location" +msgstr "Località" + +#: addons/godfs/main.inc:35 addons/godfs/main.inc:41 +msgid "Distributed File System Administration" +msgstr "" + +#: addons/godfs/contents.tpl:8 +#, fuzzy +msgid "DFS Shares" +msgstr "reset" + +#: addons/godfs/contents.tpl:22 +msgid "Information" +msgstr "Informazioni" + +#: addons/godfs/contents.tpl:26 +#, fuzzy +msgid "" +"This menu allows you to create, delete and edit selected dfs shares. Having " +"a large numbers of dfs shares, you might prefer the range selectors on top " +"of the dfs share list." +msgstr "" +"Questo menù permette di creare, modificare e cancellare gli utenti " +"selezionati. Avendo un gran numero di utenti, puoi usare i selettori di " +"intervalli in cima alla lista degli utenti." + +#: addons/godfs/contents.tpl:31 +msgid "Filters" +msgstr "Filtri" + +#: addons/godfs/contents.tpl:40 +#, fuzzy +msgid "Display dfs shares matching" +msgstr "Mostra gli indirizzi che corrispondono" + +#: addons/godfs/contents.tpl:44 +#, fuzzy +msgid "Regular expression for matching dfs share names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "Removing of DFS share with dn '%s' failed." +#~ msgstr "Imposta dipartimento" + +#, fuzzy +#~ msgid "Dfs share already exists." +#~ msgstr "La password immessa come 'Nuova password' è vuota" + +#, fuzzy +#~ msgid "Required Field \"Name of dfs Share\" is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "Required Field \"Description\" is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "Required Field \"Fileserver\" is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "Required Field \"Share on fileserver\" is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "Required Field \"Location\" is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "Saving dfs/generic with dn '%s' failed." +#~ msgstr "Imposta dipartimento" + +#, fuzzy +#~ msgid "Removing dfs/generic with dn '%s' failed." +#~ msgstr "Imposta dipartimento" diff --git a/trunk/gosa-plugins/dfs/locale/messages.po b/trunk/gosa-plugins/dfs/locale/messages.po new file mode 100644 index 000000000..c113e2d95 --- /dev/null +++ b/trunk/gosa-plugins/dfs/locale/messages.po @@ -0,0 +1,129 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: addons/godfs/class_dfsManagment.inc:8 +msgid "DFS Management" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:9 +msgid "This does something" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:146 +#: addons/godfs/class_dfsgeneric.inc:171 addons/godfs/class_dfsgeneric.inc:200 +msgid "LDAP error" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:165 +msgid "No DFS entries found" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Go up one dfsshare" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Up" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Go to dfs root" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Root" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:210 +msgid "Create new dfsshare" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:212 +msgid "Base" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit department" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:242 +msgid "Finish" +msgstr "" + +#: addons/godfs/generic.tpl:4 +msgid "DFS Properties" +msgstr "" + +#: addons/godfs/generic.tpl:8 +msgid "Name of dfs Share" +msgstr "" + +#: addons/godfs/generic.tpl:12 addons/godfs/generic.tpl:38 +msgid "Description" +msgstr "" + +#: addons/godfs/generic.tpl:16 +msgid "Fileserver" +msgstr "" + +#: addons/godfs/generic.tpl:20 +msgid "Share on Fileserver" +msgstr "" + +#: addons/godfs/generic.tpl:30 +msgid "DFS Location" +msgstr "" + +#: addons/godfs/generic.tpl:34 +msgid "Location" +msgstr "" + +#: addons/godfs/main.inc:35 addons/godfs/main.inc:41 +msgid "Distributed File System Administration" +msgstr "" + +#: addons/godfs/contents.tpl:8 +msgid "DFS Shares" +msgstr "" + +#: addons/godfs/contents.tpl:22 +msgid "Information" +msgstr "" + +#: addons/godfs/contents.tpl:26 +msgid "" +"This menu allows you to create, delete and edit selected dfs shares. Having " +"a large numbers of dfs shares, you might prefer the range selectors on top " +"of the dfs share list." +msgstr "" + +#: addons/godfs/contents.tpl:31 +msgid "Filters" +msgstr "" + +#: addons/godfs/contents.tpl:40 +msgid "Display dfs shares matching" +msgstr "" + +#: addons/godfs/contents.tpl:44 +msgid "Regular expression for matching dfs share names" +msgstr "" diff --git a/trunk/gosa-plugins/dfs/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dfs/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..fb1a086f9 --- /dev/null +++ b/trunk/gosa-plugins/dfs/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,135 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005,2006,2007,2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-06-09 18:01+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: addons/godfs/class_dfsManagment.inc:8 +msgid "DFS Management" +msgstr "DFS beheer" + +#: addons/godfs/class_dfsManagment.inc:9 +msgid "This does something" +msgstr "Dit doet iets" + +#: addons/godfs/class_dfsManagment.inc:146 +#: addons/godfs/class_dfsgeneric.inc:171 addons/godfs/class_dfsgeneric.inc:200 +msgid "LDAP error" +msgstr "LDAP fout" + +#: addons/godfs/class_dfsManagment.inc:165 +msgid "No DFS entries found" +msgstr "Geen DFS regels gevonden" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Go up one dfsshare" +msgstr "Ga een DFS share omhoog" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Up" +msgstr "Omhoog" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Go to dfs root" +msgstr "Ga naar DFS basis" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Root" +msgstr "Basis" + +#: addons/godfs/class_dfsManagment.inc:210 +msgid "Create new dfsshare" +msgstr "Maak een nieuwe DFS share aan" + +#: addons/godfs/class_dfsManagment.inc:212 +msgid "Base" +msgstr "Basis" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit department" +msgstr "Verwerk afdeling" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit" +msgstr "Verwerk" + +#: addons/godfs/class_dfsManagment.inc:242 +msgid "Finish" +msgstr "Opslaan" + +#: addons/godfs/generic.tpl:4 +msgid "DFS Properties" +msgstr "DFS eigenschappen" + +#: addons/godfs/generic.tpl:8 +msgid "Name of dfs Share" +msgstr "Naam van DFS share" + +#: addons/godfs/generic.tpl:12 addons/godfs/generic.tpl:38 +msgid "Description" +msgstr "Omschrijving" + +#: addons/godfs/generic.tpl:16 +msgid "Fileserver" +msgstr "Bestandserver" + +#: addons/godfs/generic.tpl:20 +msgid "Share on Fileserver" +msgstr "Share op bestandserver" + +#: addons/godfs/generic.tpl:30 +msgid "DFS Location" +msgstr "DFS locatie" + +#: addons/godfs/generic.tpl:34 +msgid "Location" +msgstr "Plaats" + +#: addons/godfs/main.inc:35 addons/godfs/main.inc:41 +msgid "Distributed File System Administration" +msgstr "Distibuted File System Beheer" + +#: addons/godfs/contents.tpl:8 +msgid "DFS Shares" +msgstr "DFS shares" + +#: addons/godfs/contents.tpl:22 +msgid "Information" +msgstr "Informatie" + +#: addons/godfs/contents.tpl:26 +msgid "" +"This menu allows you to create, delete and edit selected dfs shares. Having " +"a large numbers of dfs shares, you might prefer the range selectors on top " +"of the dfs share list." +msgstr "" +"Dit menu maakt het mogelijk om geselecteerde DFS shares toe te voegen, " +"bewerken of verwijderen. Indien u veel DFS shares heeft is het aan te raden " +"de selectie mogelijkheden te gebruiken." + +#: addons/godfs/contents.tpl:31 +msgid "Filters" +msgstr "Filters" + +#: addons/godfs/contents.tpl:40 +msgid "Display dfs shares matching" +msgstr "Toon overeenkomende DFS shares" + +#: addons/godfs/contents.tpl:44 +msgid "Regular expression for matching dfs share names" +msgstr "Reguliere expressie voor overeenkomende DFS share namen" diff --git a/trunk/gosa-plugins/dfs/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dfs/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..60ed59aa4 --- /dev/null +++ b/trunk/gosa-plugins/dfs/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,162 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: addons/godfs/class_dfsManagment.inc:8 +#, fuzzy +msgid "DFS Management" +msgstr "Zarządzanie DFS" + +#: addons/godfs/class_dfsManagment.inc:9 +msgid "This does something" +msgstr "To robi coś" + +#: addons/godfs/class_dfsManagment.inc:146 +#: addons/godfs/class_dfsgeneric.inc:171 addons/godfs/class_dfsgeneric.inc:200 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: addons/godfs/class_dfsManagment.inc:165 +msgid "No DFS entries found" +msgstr "Nie znaleziono wpisów DFS" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Go up one dfsshare" +msgstr "Idź w górę jeden udział DFS" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Up" +msgstr "Góra" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Go to dfs root" +msgstr "Idź do głównego DFS" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Root" +msgstr "Główny" + +#: addons/godfs/class_dfsManagment.inc:210 +msgid "Create new dfsshare" +msgstr "Utwórz nowy udział DFS" + +#: addons/godfs/class_dfsManagment.inc:212 +msgid "Base" +msgstr "Kontener" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit department" +msgstr "Zatwierdź departament" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit" +msgstr "Wyślij" + +#: addons/godfs/class_dfsManagment.inc:242 +msgid "Finish" +msgstr "Zakończ" + +#: addons/godfs/generic.tpl:4 +msgid "DFS Properties" +msgstr "Właściwości DFS" + +#: addons/godfs/generic.tpl:8 +msgid "Name of dfs Share" +msgstr "Nazwa udziału DFS" + +#: addons/godfs/generic.tpl:12 addons/godfs/generic.tpl:38 +msgid "Description" +msgstr "Opis" + +#: addons/godfs/generic.tpl:16 +msgid "Fileserver" +msgstr "Serwer plików" + +#: addons/godfs/generic.tpl:20 +msgid "Share on Fileserver" +msgstr "Udział na serwerze plików" + +#: addons/godfs/generic.tpl:30 +msgid "DFS Location" +msgstr "Lokacja DFS" + +#: addons/godfs/generic.tpl:34 +msgid "Location" +msgstr "Lokalizacja" + +#: addons/godfs/main.inc:35 addons/godfs/main.inc:41 +msgid "Distributed File System Administration" +msgstr "Administracja Distributed File System" + +#: addons/godfs/contents.tpl:8 +msgid "DFS Shares" +msgstr "Udziały DFS" + +#: addons/godfs/contents.tpl:22 +msgid "Information" +msgstr "Informacja" + +#: addons/godfs/contents.tpl:26 +msgid "" +"This menu allows you to create, delete and edit selected dfs shares. Having " +"a large numbers of dfs shares, you might prefer the range selectors on top " +"of the dfs share list." +msgstr "" +"To menu umożliwia tworzenie, usuwanie oraz edycję wybranych udziałów DFS. " +"Posiadając dużą ilość udziałów DFS, może okazać się wygodniejsze korzystanie " +"z selektorów zakresu na górze listy udziałów DFS." + +#: addons/godfs/contents.tpl:31 +msgid "Filters" +msgstr "Filtry" + +#: addons/godfs/contents.tpl:40 +msgid "Display dfs shares matching" +msgstr "Wyświetl udziały DFS pasujące" + +#: addons/godfs/contents.tpl:44 +msgid "Regular expression for matching dfs share names" +msgstr "Wyrażenie regularne dla dopasowanie nazw udziałów DFS" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Removing of DFS share with dn '%s' failed." +#~ msgstr "Usuwanie udziału DFS z dn '%s' nieudane." + +#~ msgid "Dfs share already exists." +#~ msgstr "Udział DFS już istnieje." + +#~ msgid "Required Field \"Name of dfs Share\" is not set." +#~ msgstr "Wymagane pole 'Nazwa udziału DFS' nie jest wypełnione." + +#~ msgid "Required Field \"Description\" is not set." +#~ msgstr "Wymagane pole 'Opis' nie jest wypełnione." + +#~ msgid "Required Field \"Fileserver\" is not set." +#~ msgstr "Wymagane pole 'Serwer plików' nie jest wypełnione." + +#~ msgid "Required Field \"Share on fileserver\" is not set." +#~ msgstr "Wymagane pole 'Udział na serwerze plików' nie jest wypełnione." + +#~ msgid "Required Field \"Location\" is not set." +#~ msgstr "Wymagane pole 'Lokalizacja' nie jest wypełnione." + +#~ msgid "Saving dfs/generic with dn '%s' failed." +#~ msgstr "Zapisywanie dfs z dn '%s' nieudane." + +#~ msgid "Removing dfs/generic with dn '%s' failed." +#~ msgstr "Usuwanie dfs z dn '%s' nieudane." diff --git a/trunk/gosa-plugins/dfs/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dfs/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..811af9b6b --- /dev/null +++ b/trunk/gosa-plugins/dfs/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,184 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: addons/godfs/class_dfsManagment.inc:8 +#, fuzzy +msgid "DFS Management" +msgstr "Название" + +#: addons/godfs/class_dfsManagment.inc:9 +msgid "This does something" +msgstr "Что-то будет" + +#: addons/godfs/class_dfsManagment.inc:146 +#: addons/godfs/class_dfsgeneric.inc:171 addons/godfs/class_dfsgeneric.inc:200 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: addons/godfs/class_dfsManagment.inc:165 +msgid "No DFS entries found" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:208 +#, fuzzy +msgid "Go up one dfsshare" +msgstr "Подразделение" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Up" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Go to dfs root" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:209 +#, fuzzy +msgid "Root" +msgstr "Перезагрузить" + +#: addons/godfs/class_dfsManagment.inc:210 +#, fuzzy +msgid "Create new dfsshare" +msgstr "Создание нового объекта в" + +#: addons/godfs/class_dfsManagment.inc:212 +msgid "Base" +msgstr "Ветка" + +#: addons/godfs/class_dfsManagment.inc:213 +#, fuzzy +msgid "Submit department" +msgstr "Показать подразделения" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit" +msgstr "" + +#: addons/godfs/class_dfsManagment.inc:242 +msgid "Finish" +msgstr "Готово" + +#: addons/godfs/generic.tpl:4 +#, fuzzy +msgid "DFS Properties" +msgstr "Свойства" + +#: addons/godfs/generic.tpl:8 +#, fuzzy +msgid "Name of dfs Share" +msgstr "Подразделение" + +#: addons/godfs/generic.tpl:12 addons/godfs/generic.tpl:38 +msgid "Description" +msgstr "Описание" + +#: addons/godfs/generic.tpl:16 +#, fuzzy +msgid "Fileserver" +msgstr "Сервер" + +#: addons/godfs/generic.tpl:20 +#, fuzzy +msgid "Share on Fileserver" +msgstr "Служба печати" + +#: addons/godfs/generic.tpl:30 +#, fuzzy +msgid "DFS Location" +msgstr "Местоположение" + +#: addons/godfs/generic.tpl:34 +msgid "Location" +msgstr "Местоположение" + +#: addons/godfs/main.inc:35 addons/godfs/main.inc:41 +msgid "Distributed File System Administration" +msgstr "" + +#: addons/godfs/contents.tpl:8 +#, fuzzy +msgid "DFS Shares" +msgstr "сброс" + +#: addons/godfs/contents.tpl:22 +msgid "Information" +msgstr "Информация" + +#: addons/godfs/contents.tpl:26 +#, fuzzy +msgid "" +"This menu allows you to create, delete and edit selected dfs shares. Having " +"a large numbers of dfs shares, you might prefer the range selectors on top " +"of the dfs share list." +msgstr "" +"С помощью этого меню вы можете добавлять, изменять и удалять выбранные " +"подразделения. Если у вас достаточно большое количество подразделений, вы " +"можете использовать групповое выделение." + +#: addons/godfs/contents.tpl:31 +msgid "Filters" +msgstr "Фильтры" + +#: addons/godfs/contents.tpl:40 +#, fuzzy +msgid "Display dfs shares matching" +msgstr "Показать подходяшие адреса" + +#: addons/godfs/contents.tpl:44 +#, fuzzy +msgid "Regular expression for matching dfs share names" +msgstr "Регулярное выражение, соответствующее именам систем" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#, fuzzy +#~ msgid "Removing of DFS share with dn '%s' failed." +#~ msgstr "Удалить сервис DNS" + +#, fuzzy +#~ msgid "Dfs share already exists." +#~ msgstr "Подразделение с таким именем уже существует." + +#, fuzzy +#~ msgid "Required Field \"Name of dfs Share\" is not set." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "Required Field \"Description\" is not set." +#~ msgstr "Обязательное поле \"Описание\" не заполнено." + +#, fuzzy +#~ msgid "Required Field \"Fileserver\" is not set." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "Required Field \"Share on fileserver\" is not set." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "Required Field \"Location\" is not set." +#~ msgstr "Обязательное поле \"Описание\" не заполнено." + +#, fuzzy +#~ msgid "Saving dfs/generic with dn '%s' failed." +#~ msgstr "Показать подразделения" + +#, fuzzy +#~ msgid "Removing dfs/generic with dn '%s' failed." +#~ msgstr "Показать подразделения" diff --git a/trunk/gosa-plugins/dfs/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dfs/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..c00f0f1de --- /dev/null +++ b/trunk/gosa-plugins/dfs/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,167 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: addons/godfs/class_dfsManagment.inc:8 +#, fuzzy +msgid "DFS Management" +msgstr "DFS 管理" + +#: addons/godfs/class_dfsManagment.inc:9 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: addons/godfs/class_dfsManagment.inc:146 +#: addons/godfs/class_dfsgeneric.inc:171 addons/godfs/class_dfsgeneric.inc:200 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: addons/godfs/class_dfsManagment.inc:165 +msgid "No DFS entries found" +msgstr "没有发现 DFS 条目" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Go up one dfsshare" +msgstr "向上一个 dfs 共享" + +#: addons/godfs/class_dfsManagment.inc:208 +msgid "Up" +msgstr "上" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Go to dfs root" +msgstr "跳转到 dfs 根" + +#: addons/godfs/class_dfsManagment.inc:209 +msgid "Root" +msgstr "根" + +#: addons/godfs/class_dfsManagment.inc:210 +msgid "Create new dfsshare" +msgstr "创建新的 dfs 共享" + +#: addons/godfs/class_dfsManagment.inc:212 +msgid "Base" +msgstr "位置" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit department" +msgstr "提交部门" + +#: addons/godfs/class_dfsManagment.inc:213 +msgid "Submit" +msgstr "提交" + +#: addons/godfs/class_dfsManagment.inc:242 +msgid "Finish" +msgstr "完成" + +#: addons/godfs/generic.tpl:4 +msgid "DFS Properties" +msgstr "DFS 属性" + +#: addons/godfs/generic.tpl:8 +msgid "Name of dfs Share" +msgstr "dfs 共享名称" + +#: addons/godfs/generic.tpl:12 addons/godfs/generic.tpl:38 +msgid "Description" +msgstr "描述" + +#: addons/godfs/generic.tpl:16 +msgid "Fileserver" +msgstr "文件服务器" + +#: addons/godfs/generic.tpl:20 +msgid "Share on Fileserver" +msgstr "文件服务器的共享" + +#: addons/godfs/generic.tpl:30 +msgid "DFS Location" +msgstr "DFS 位置" + +#: addons/godfs/generic.tpl:34 +msgid "Location" +msgstr "位置" + +#: addons/godfs/main.inc:35 addons/godfs/main.inc:41 +msgid "Distributed File System Administration" +msgstr "分布式文件系统管理" + +#: addons/godfs/contents.tpl:8 +msgid "DFS Shares" +msgstr "DFS 共享" + +#: addons/godfs/contents.tpl:22 +msgid "Information" +msgstr "提示信息" + +#: addons/godfs/contents.tpl:26 +msgid "" +"This menu allows you to create, delete and edit selected dfs shares. Having " +"a large numbers of dfs shares, you might prefer the range selectors on top " +"of the dfs share list." +msgstr "" +"这个菜单允许您创建,删除和修改所选的 dfs 共享。对于一个长列表,您可以通过列表" +"上面的范围选择来调整。" + +#: addons/godfs/contents.tpl:31 +msgid "Filters" +msgstr "过滤器" + +#: addons/godfs/contents.tpl:40 +msgid "Display dfs shares matching" +msgstr "显示匹配的 dfs 共享" + +#: addons/godfs/contents.tpl:44 +msgid "Regular expression for matching dfs share names" +msgstr "匹配 dns 共享名的正则表达式" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#, fuzzy +#~ msgid "Removing of DFS share with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#~ msgid "Dfs share already exists." +#~ msgstr "Dfs 共享已经存在。" + +#~ msgid "Required Field \"Name of dfs Share\" is not set." +#~ msgstr "需要的字段“dfs 共享名”没有设置。" + +#~ msgid "Required Field \"Description\" is not set." +#~ msgstr "需要的字段“描述”没有设置。" + +#~ msgid "Required Field \"Fileserver\" is not set." +#~ msgstr "需要的字段“文件服务器”没有设置。" + +#~ msgid "Required Field \"Share on fileserver\" is not set." +#~ msgstr "需要的字段“文件服务器的共享”没有设置。" + +#~ msgid "Required Field \"Location\" is not set." +#~ msgstr "需要的字段“位置”没有设置。" + +#, fuzzy +#~ msgid "Saving dfs/generic with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Removing dfs/generic with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" diff --git a/trunk/gosa-plugins/dfs/plugin.dsc b/trunk/gosa-plugins/dfs/plugin.dsc new file mode 100644 index 000000000..a7286659c --- /dev/null +++ b/trunk/gosa-plugins/dfs/plugin.dsc @@ -0,0 +1,6 @@ +[gosa-plugin] +name = dfs +description = "DFS share manager" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpAdvanced.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpAdvanced.inc new file mode 100644 index 000000000..755214411 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpAdvanced.inc @@ -0,0 +1,152 @@ +is_account= TRUE; + $this->setAutoStatements(); + $this->setAutoOptions(); + } + + function execute() + { + $acl_writeable = preg_match("/w/",$this->parent->getacl("")); + + /* Check for interaction */ + if ($acl_writeable && isset($_POST['add_statement']) && $_POST['addstatement'] != ""){ + $key= preg_replace('/^([a-z0-9-]+)\s(.*)$/', '\\1', get_post('addstatement')); + $val= preg_replace("/^$key\s*/", '', get_post('addstatement')); + $this->statements[$key]= $val; + } + if ($acl_writeable && isset($_POST['delete_statement']) && isset($_POST['dhcpstatements'])){ + $key= preg_replace('/([a-z0-9-]+)\s(.*)$/', '\\1', get_post('dhcpstatements')); + if (in_array($key, $this->autoStatements)){ + msg_dialog::display(_("Error"), _("Cannot delete automatic statements!"), ERROR_DIALOG); + } else { + unset($this->statements[$key]); + } + } + if ($acl_writeable && isset($_POST['add_option']) && $_POST['addoption'] != ""){ + $key= preg_replace('/^([a-z0-9-]+)\s(.*)$/', '\\1', get_post('addoption')); + $val= preg_replace("/^$key\s*/", '', get_post('addoption')); + $this->options[$key]= $val; + } + if ($acl_writeable && isset($_POST['delete_option']) && isset($_POST['dhcpoptions'])){ + $key= preg_replace('/([a-z0-9-]+)\s(.*)$/', '\\1', get_post('dhcpoptions')); + if (in_array($key, $this->autoOptions)){ + msg_dialog::display(_("Error"), _("Cannot delete automatic statements!"), ERROR_DIALOG); + } else { + unset($this->options[$key]); + } + } + + $smarty= get_smarty(); + + /* Assign ACLs */ + $smarty->assign("acl",$this->parent->getacl("")); + + /* Assign arrays */ + $statements= array(); + foreach ($this->statements as $key => $val){ + if (in_array($key, $this->autoStatements)){ + $statements[$key]= "$key $val ["._("automatic")."]"; + } else { + $statements[$key]= "$key $val"; + } + } + $smarty->assign("dhcpstatements", $statements); + $options= array(); + foreach ($this->options as $key => $val){ + if (in_array($key, $this->autoOptions)){ + $options[$key]= "$key $val ["._("automatic")."]"; + } else { + $options[$key]= "$key $val"; + } + } + $smarty->assign("dhcpoptions", $options); + + /* Show main page */ + $smarty->assign("show_advanced", $this->show_advanced); + return ($smarty->fetch (get_template_path('dhcp_advanced.tpl', TRUE,dirname(__FILE__)))); + } + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + if (isset($_POST['show_advanced'])){ + $this->show_advanced= TRUE; + } + if (isset($_POST['hide_advanced'])){ + $this->show_advanced= FALSE; + } + } + + + /* Check values */ + function check() + { + /* Nothing to check here */ + $message= array(); + return $message; + } + + + /* Save to LDAP */ + function save() + { + } + + + function setAutoOptions($addopt= array()) + { + $options= array("routers", "domain-name", "domain-name-servers", "subnet-mask", "broadcast-address"); + $this->autoOptions= array_merge($options, $addopt); + } + + + function setAutoStatements($addstat= array()) + { + $statements= array("filename", "next-server", "get-lease-hostnames", "use-host-decl-names"); + $this->autoStatements= array_merge($statements, $addstat); + } + +} + +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpGroup.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpGroup.inc new file mode 100644 index 000000000..6a0d78b00 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpGroup.inc @@ -0,0 +1,132 @@ +assign("cn", $this->cn); + + /* Assign ACLs */ + $smarty->assign("acl",$this->parent->getacl("")); + + /* Show main page */ + $display= $smarty->fetch (get_template_path('dhcp_group.tpl', TRUE, dirname(__FILE__))).$this->network->execute(); + + /* Merge arrays for advanced view */ + $this->fix_options(); + foreach (array("options", "statements") as $type){ + $this->advanced->$type= $this->$type + $this->network->$type; + } + + $display.= $this->advanced->execute(); + + /* Merge back for removals */ + foreach (array("options", "statements") as $type){ + $this->$type= $this->advanced->$type; + $this->network->$type= $this->advanced->$type; + } + + /* Add footer */ + $display.= "
"; + if(preg_match("/w/",$this->parent->getacl(""))){ + $display.= " "; + } + $display.= ""; + $display.= "
"; + + return ($display); + } + + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + /* Save cn */ + if (preg_match("/w/",$this->parent->getacl("")) && isset($_POST['cn'])){ + $this->cn= validate(get_post('cn')); + } + + /* Handle global saving */ + dhcpPlugin::save_object(); + } + + + /* Check values */ + function check() + { + $message= array(); + + $cache = $this->parent->dhcpObjectCache; + + /* All required fields are set? */ + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + if (!preg_match('/^[a-z0-9_-]*$/i', $this->cn)){ + $message[]= msgPool::invalid(_("Name"),$this->cn,"/[a-z0-9_-]/i"); + } + + /* cn already used? */ + if ($this->orig_cn != $this->cn || $this->new){ + + foreach($cache as $dn => $dummy){ + if (preg_match("/^cn=".$this->cn.",/", $dn) && count($dummy)){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + + /* Check external plugins */ + $net= $this->network->check(); + $adv= $this->advanced->check(); + $message= array_merge($message, $net, $adv); + + return $message; + } + + + /* Save to LDAP */ + function save() + { + dhcpPlugin::save(); + return ($this->attrs); + } + + +} + +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpHost.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpHost.inc new file mode 100644 index 000000000..c7569d2c9 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpHost.inc @@ -0,0 +1,187 @@ +new){ + $this->dhcpHWAddress= $attrs['dhcpHWAddress'][0]; + } + + $this->advanced->setAutoOptions(array("host-name")); + $this->advanced->setAutoStatements(array("fixed-address")); + + $this->realGosaHost = $host_exists_in_gosa; + } + + function execute() + { + $smarty= get_smarty(); + $smarty->assign("cn", $this->cn); + $smarty->assign("dhcpHWAddress", preg_replace('/^[^ ]+ /', '', $this->dhcpHWAddress)); + $smarty->assign("realGosaHost",$this->realGosaHost); + + /* Assign ACLs */ + $smarty->assign("acl",$this->parent->getacl("")); + + /* Create fixed address */ + if (isset($this->statements['fixed-address'])){ + $smarty->assign("fixedaddr", $this->statements['fixed-address']); + } else { + $smarty->assign("fixedaddr", ""); + } + + /* Prepare hw type selector */ + $hwtype= preg_replace('/\s.*$/', '', $this->dhcpHWAddress); + $smarty->assign("hwtype", $hwtype); + $smarty->assign("hwtypes", array("ethernet" => _("Ethernet"), + "fddi" => _("FDDI"), + "token-ring" => _("Token Ring"))); + /* Show main page */ + $display= $smarty->fetch(get_template_path('dhcp_host.tpl', TRUE,dirname(__FILE__))).$this->network->execute(); + + /* Merge arrays for advanced view */ + $this->fix_options(); + foreach (array("options", "statements") as $type){ + $this->advanced->$type= $this->$type + $this->network->$type; + } + $display.= $this->advanced->execute(); + + /* Merge back for removals */ + foreach (array("options", "statements") as $type){ + $this->$type= $this->advanced->$type; + $this->network->$type= $this->advanced->$type; + } + + /* Add footer */ + $display.= "
"; +# if(preg_match("/w/",$this->parent->getacl(""))){ + $display.= " "; +# } + $display.= ""; + $display.= "
"; + + return ($display); + } + + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + /* Save remaining attributes */ + if (isset($_POST['dhcp_host_posted']) && preg_match("/w/",$this->parent->getacl(""))){ + + /* Assemble hwAddress */ + if (isset($_POST['dhcpHWAddress'])){ + $this->dhcpHWAddress= get_post('hwtype')." ".get_post('dhcpHWAddress'); + } + + if(!$this->realGosaHost){ + $this->cn= validate(get_post('cn')); + } + + /* Save fixed address */ + if(!$this->realGosaHost){ + if ($_POST['fixedaddr'] != ""){ + $this->statements['fixed-address']= get_post('fixedaddr'); + } else { + unset ($this->statements['fixed-address']); + } + } + $this->options['host-name']= $this->cn; + } + + dhcpPlugin::save_object(); + } + + + /* Check values */ + function check() + { + $message= array(); + + $cache = array(); + if(isset($this->parent) && isset($this->parent->dhcpObjectCache)){ + $cache = $this->parent->dhcpObjectCache; + } + + /* All required fields are set? */ + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + + /* cn already used? */ + if ($this->orig_cn != $this->cn || $this->new){ + + foreach($cache as $dn => $dummy){ + if (preg_match("/^cn=".$this->cn.",/", $dn) && count($dummy)){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + + /* Check syntax of MAC address */ + $check= preg_replace('/^[^\s]*\s/', '', $this->dhcpHWAddress); + if (!preg_match('/^([0-9a-fA-F]{1,2}:){5}[0-9a-fA-F]{1,2}$/', $check)){ + $message[]= msgPool::invalid(_("Hardware address")); + } + + /* Check external plugins */ + $net= $this->network->check(); + $adv= $this->advanced->check(); + $message= array_merge($message, $net, $adv); + + return $message; + } + + + /* Save to LDAP */ + function save() + { + dhcpPlugin::save(); + if ($this->dhcpHWAddress != ""){ + $this->attrs['dhcpHWAddress']= array($this->dhcpHWAddress); + } else { + $this->attrs['dhcpHWAddress']= array(); + } + + return ($this->attrs); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpNetwork.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpNetwork.inc new file mode 100644 index 000000000..0f99ce23b --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpNetwork.inc @@ -0,0 +1,233 @@ +is_account= TRUE; + } + + function execute() + { + + $acl_writeable = preg_match("/w/",$this->parent->getacl("")); + + /* Check for iteraction */ + if ($acl_writeable && isset($_POST['add_dns']) && $_POST['addserver'] != ""){ + if (!preg_match('/^[0-9a-z.-]+$/', get_post('addserver'))){ + msg_dialog::display(_("Error"), msgPool::invalid(_("Name"), + htmlentities(get_post('addserver')),"/[0-9a-z.-]/"), ERROR_DIALOG); + } else { + $servers= array(); + if (isset($this->options['domain-name-servers'])){ + foreach(split(",", $this->options['domain-name-servers']) as $val){ + $servers[$val]= $val; + } + } + $servers[get_post('addserver')]= get_post('addserver'); + + $tmp= ""; + foreach($servers as $val){ + $tmp.= $val.","; + } + $this->options['domain-name-servers']= preg_replace('/,$/', '', $tmp); + } + } + if ($acl_writeable && isset($_POST['delete_dns']) && isset($_POST['dnsserver'])){ + $tmp= preg_replace("/(\s*,\s*)?".get_post('dnsserver')."/i", '', + $this->options['domain-name-servers']); + $tmp= preg_replace("/(\s*)?,(\s*)?$/", '', $tmp); + if ($tmp != ""){ + $this->options['domain-name-servers']= $tmp; + } else { + unset($this->options['domain-name-servers']); + } + } + + /* Show main page */ + $smarty= get_smarty(); + + /* Assign ACLs */ + $smarty->assign("acl",$this->parent->getacl("")); + + /* + * Assemble options + */ + + /* Router */ + if (isset($this->options['routers'])){ + $smarty->assign("routers", $this->options['routers']); + } else { + $smarty->assign("routers", ""); + } + + /* DNS */ + if (isset($this->options['domain-name'])){ + $smarty->assign("domain", trim($this->options['domain-name'], '"')); + } else { + $smarty->assign("domain", ""); + } + if (isset($this->options['domain-name-servers'])){ + $servers= array(); + foreach(split(",", $this->options['domain-name-servers']) as $val){ + $servers[$val]= $val; + } + $smarty->assign("dnsservers", $servers); + } else { + $smarty->assign("dnsservers", ""); + } + + /* Netmask / Broadcast */ + if (isset($this->options['subnet-mask'])){ + $this->options['subnet-mask']= normalize_netmask($this->options['subnet-mask']); + $smarty->assign("subnet_mask", $this->options['subnet-mask']); + } else { + $smarty->assign("subnet_mask", ""); + } + if (isset($this->options['broadcast-address'])){ + $smarty->assign("broadcast_address", $this->options['broadcast-address']); + } else { + $smarty->assign("broadcast_address", ""); + } + + /* Boot stuff */ + if (isset($this->statements['filename'])){ + $smarty->assign("filename", trim($this->statements['filename'], '"')); + } else { + $smarty->assign("filename", ""); + } + if (isset($this->statements['next-server'])){ + $smarty->assign("nextserver", $this->statements['next-server']); + } else { + $smarty->assign("nextserver", ""); + } + + /* Set flags */ + $smarty->assign("autohost", ""); + if (isset($this->statements['get-lease-hostnames'])){ + if (preg_match('/^(true|on|yes)$/', $this->statements['get-lease-hostnames'])){ + $smarty->assign("autohost", "checked"); + } + } + $smarty->assign("autohostdecl", ""); + if (isset($this->statements['use-host-decl-names'])){ + if (preg_match('/^(true|on|yes)$/', $this->statements['use-host-decl-names'])){ + $smarty->assign("autohostdecl", "checked"); + } + } + + return $smarty->fetch(get_template_path('dhcp_network.tpl', TRUE,dirname(__FILE__))); + } + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + /* Only save, if we are "active" */ + if (isset($_POST['routers']) && preg_match("/w/",$this->parent->getacl(""))){ + + /* + * Assemble options + */ + + /* Options */ + foreach (array("routers" => "routers", "domain-name" => "domain", "subnet-mask" => "subnet_mask", + "broadcast-address" => "broadcast_address") as $key => $val){ + + if ($_POST["$val"] == ''){ + unset($this->options["$key"]); + } else { + $this->options["$key"]= get_post("$val"); + } + } + + /* Statements */ + foreach (array("filename" => "filename", "next-server" => "nextserver") as $key => $val){ + if ($_POST["$val"] == ''){ + unset($this->statements["$key"]); + } else { + + /* Only quote filename values */ + if(in_array($key,array("filename"))){ + $this->statements["$key"]= '"'.get_post("$val").'"'; + }else{ + $this->statements["$key"]= get_post("$val"); + } + } + } + + /* Flags */ + if (isset ($_POST['autohost'])){ + $this->statements['get-lease-hostnames']= "true"; + } else { + unset($this->statements['get-lease-hostnames']); + } + if (isset ($_POST['autohostdecl'])){ + $this->statements['use-host-decl-names']= "on"; + } else { + unset($this->statements['use-host-decl-names']); + } + } + } + + + /* Check values */ + function check() + { + $message= array(); + + /* Check netmask and broadcast */ + foreach(array("subnet-mask" => _("Netmask"), "broadcast-address" => _("Broadcast")) as $key => $typ){ + if (!isset($this->options["$key"])){ + continue; + } + $tmp= preg_replace('/^[^\s]+\s/', '', $this->options["$key"]); + + if (!tests::is_ip($tmp)){ + $message[]= sprintf(_("Error in definition of '%s'!"), $typ); + } + } + + return $message; + } + + + /* Save to LDAP */ + function save() + { + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc new file mode 100644 index 000000000..893761340 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc @@ -0,0 +1,80 @@ + array("dhcpSharedNetwork", "dhcpSubnet", "dhcpGroup", "dhcpHost" /*, "dhcpClass"*/), + #"dhcpClass" => array("dhcpSubClass"), + "dhcpSubClass" => array(), + "dhcpHost" => array(), + "dhcpGroup" => array("dhcpHost"), + "dhcpPool" => array(), + "dhcpSubnet" => array("dhcpPool", "dhcpGroup", "dhcpHost" /*, "dhcpClass"*/), + "dhcpSharedNetwork" => array("dhcpSubnet", "dhcpPool")); + + + + function dhcpNewSectionDialog($type) + { + $this->types= array( "dhcpService" => _("Global options"), + /*"dhcpClass" => _("Class"),*/ + "dhcpSubClass" => _("Subclass"), + "dhcpHost" => _("Host"), + "dhcpGroup" => _("Group"), + "dhcpPool" => _("Pool"), + "dhcpSubnet" => _("Subnet"), + "dhcpSharedNetwork" => _("Shared network")); + + $this->classtype= $type; + } + + function execute() + { + /* Fill templating stuff */ + $smarty = get_smarty(); + $display= ""; + + $sections= $this->sectionMap[$this->classtype]; + $t_sections= array(); + foreach ($sections as $section){ + $t_sections[$section]= $this->types[$section]; + } + asort($t_sections); + $ui = get_userinfo(); + $smarty->assign("sections", $t_sections); + $display.= $smarty->fetch(get_template_path('dhcpNewSection.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + /* Get posts and set class name + */ + function save_object() + { + } + + /* Check given class name */ + function check() + { + /* Call common method to give check the hook */ + $message= ""; + + return ($message); + } + + + /* Return the class name */ + function save() + { + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpPlugin.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpPlugin.inc new file mode 100644 index 000000000..f6b9f39b3 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpPlugin.inc @@ -0,0 +1,218 @@ +parent = $parent; + + /* Load statements / options */ + if (is_array($attrs)){ + $this->dn= $attrs['dn']; + $this->cn= $attrs['cn'][0]; + $this->new= FALSE; + + /* Load options */ + if (isset($attrs['dhcpOption'])){ + foreach ($attrs['dhcpOption'] as $opt){ + $idx= preg_replace('/\s.+$/', '', $opt); + if ($idx == $opt){ + $value= ""; + } else { + $value= preg_replace('/^[^\s]+\s/', '', $opt); + } + $this->options[$idx]= $value; + } + } + + /* Load statements */ + if (isset($attrs['dhcpStatements'])){ + foreach ($attrs['dhcpStatements'] as $opt){ + $idx= preg_replace('/\s.+$/', '', $opt); + if ($idx == $opt){ + $value= ""; + } else { + $value= preg_replace('/^[^\s]+\s/', '', $opt); + } + + if(preg_match("/^allow\s/",$opt) || preg_match("/^deny\s/",$opt)){ + $this->statements[$opt]= ""; + }else{ + $this->statements[$idx]= $value; + } + } + } + } else { + /* We keep the parent dn here if it's new */ + $this->dn= $attrs; + $this->new= TRUE; + } + + /* Load network module */ + $this->network= new dhcpNetwork(); + $this->network->options= $this->options; + $this->network->statements= $this->statements; + $this->advanced= new dhcpAdvanced(); + $this->advanced->options= $this->options; + $this->advanced->statements= $this->statements; + + $this->network->parent = $parent; + $this->advanced->parent = $parent; + + /* Save CN for later reference */ + $this->orig_cn= $this->cn; + } + + function execute() + { + return (""); + } + + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + /* Strip network objects */ + foreach (array("routers", "domain-name", "subnet-mask", "broadcast-address") as $toberemoved){ + unset($this->options[$toberemoved]); + } + foreach (array("filename", "next-server","get-lease-hostnames","use-host-decl-names") as $toberemoved){ + unset($this->statements[$toberemoved]); + } + + /* Save sub-objects */ + $this->network->save_object(); + $this->advanced->save_object(); + + /* Merge arrays for advanced view */ + foreach (array("options", "statements") as $type){ + $this->advanced->$type= $this->$type + $this->network->$type;; + } + } + + + /* Check values */ + function check() + { + $message= array(); + return $message; + } + + + /* Save to LDAP */ + function save() + { + /* Merge arrays for network and advanced view */ + foreach (array("options", "statements") as $type){ + $this->$type= $this->$type + $this->network->$type + $this->advanced->$type; + } + + /* Add cn if we're new */ + if ($this->new){ + $this->dn= "cn=".$this->cn.",".$this->dn; + } else { + $this->dn= "cn=".$this->cn.preg_replace('/^cn=[^,]+/', '', $this->dn); + } + + /* Assemble new entry - options */ + $this->attrs['dhcpOption']= array(); + if (isset ($this->options) && count ($this->options)){ + foreach ($this->options as $key => $val){ + $this->attrs['dhcpOption'][]= "$key $val"; + } + } + + /* Assemble new entry - statements */ + $this->attrs['dhcpStatements']= array(); + if (isset ($this->statements) && count ($this->statements)){ + foreach ($this->statements as $key => $val){ + if ($val != ""){ + $this->attrs['dhcpStatements'][]= "$key $val"; + } else { + $this->attrs['dhcpStatements'][]= "$key"; + } + } + } + + /* Move dn to the result */ + $this->attrs['dn']= $this->dn; + $this->attrs['cn']= array($this->cn); + $this->attrs['objectClass']= $this->objectclasses; + $this->attrs['MODIFIED']= TRUE; + + return ($this->attrs); + } + + + function removeAttrs($name, $type) + { + $new= array(); + foreach ($this->attrs[$type] as $value){ + if (!preg_match("/^$name /", $value)){ + $new[]= $value; + } + } + $this->attrs[$type]= $new; + } + + + function removeOption($name) + { + $this->removeAttrs($name, 'dhcpOption'); + } + + + function removeStatement($name) + { + $this->removeAttrs($name, 'dhcpStatement'); + } + + + function fix_options() + { + foreach (array('domain-name-servers') as $key){ + unset ($this->options[$key]); + } + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpPool.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpPool.inc new file mode 100644 index 000000000..067b07c0b --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpPool.inc @@ -0,0 +1,198 @@ +new){ + $this->dhcpRange= $attrs['dhcpRange'][0]; + list($this->range_start, $this->range_stop)= preg_split('/\s+/', $this->dhcpRange); + } + + $this->advanced->setAutoOptions(array("host-name")); + $this->advanced->setAutoStatements(array("fixed-address")); + } + + function execute() + { + $smarty= get_smarty(); + $smarty->assign("cn", $this->cn); + $smarty->assign("range_start", $this->range_start); + $smarty->assign("range_stop", $this->range_stop); + + /* Assign ACLs */ + $smarty->assign("acl",$this->parent->getacl("")); + + /* Show main page */ + $display= $smarty->fetch(get_template_path('dhcp_pool.tpl', TRUE, dirname(__FILE__))).$this->network->execute(); + + /* Merge arrays for advanced view */ + $this->fix_options(); + foreach (array("options", "statements") as $type){ + $this->advanced->$type= $this->$type + $this->network->$type;; + } + + $display.= $this->advanced->execute(); + + /* Merge back for removals */ + foreach (array("options", "statements") as $type){ + $this->$type= $this->advanced->$type; + $this->network->$type= $this->advanced->$type; + } + + /* Add footer */ + $display.= "
"; + if(preg_match("/w/",$this->parent->getacl(""))){ + $display.= " "; + } + $display.= ""; + $display.= "
"; + + return ($display); + } + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + if (isset($_POST['cn'])){ + $this->cn= validate(get_post('cn')); + $this->range_start= validate(get_post('range_start')); + $this->range_stop= validate(get_post('range_stop')); + } + + dhcpPlugin::save_object(); + + /* Move range to internal variable */ + $this->dhcpRange= $this->range_start." ".$this->range_stop; + } + + + /* Check values */ + function check() + { + $message= array(); + + $cache = $this->parent->dhcpObjectCache; + + /* All required fields are set? */ + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + + /* cn already used? */ + if ($this->orig_cn != $this->cn || $this->new){ + + foreach($cache as $dn => $dummy){ + if (preg_match("/^cn=".$this->cn.",/", $dn) && count($dummy)){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + + if ($this->dhcpRange == ""){ + $message[]= msgPool::required(_("Range")); + } + + if (!tests::is_ip($this->range_start) || !tests::is_ip($this->range_stop)){ + $message[]= msgPool::invalid(_("Range")); + } + + if(!tests::is_ip_range($this->range_start,$this->range_stop)){ + $message[]= msgPool::invalid(_("Range")); + } + + /* Check if range is in the network */ + $dn= $this->dn; + while (preg_match('/,/', $dn)){ + $type= $this->objectType($cache, $dn); + + /* Check for subnet */ + if ($type == 'dhcpSubnet'){ + $network= $cache[$dn]['cn'][0]; + $netmask= normalize_netmask($cache[$dn]['dhcpNetMask'][0]); + if (!tests::is_in_network($network, $netmask, $this->range_start) || + !tests::is_in_network($network, $netmask, $this->range_stop)){ + $message[] = _("'Range' is not inside the configured network."); + } + } + + /* Stop if we've examined the service base object */ + if ($type == 'dhcpService'){ + break; + } + $dn= preg_replace('/^[^,]+,/', '', $dn); + } + + /* Check external plugins */ + $net= $this->network->check(); + $adv= $this->advanced->check(); + $message= array_merge($message, $net, $adv); + + return $message; + } + + /* Save to LDAP */ + function save() + { + dhcpPlugin::save(); + $this->attrs['dhcpRange']= array($this->dhcpRange); + + return ($this->attrs); + } + + + function objectType($cache, $dn) + { + $type= ""; + $types= array("dhcpService", "dhcpClass", "dhcpSubClass", "dhcpHost", + "dhcpGroup", "dhcpPool", "dhcpSubnet", "dhcpSharedNetwork"); + + foreach ($cache[$dn]['objectClass'] as $oc){ + if (in_array($oc, $types)){ + $type= $oc; + break; + } + } + + return ($type); + } + + +} + +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpService.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpService.inc new file mode 100644 index 000000000..5260b743f --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpService.inc @@ -0,0 +1,188 @@ +new){ + /* Load attributes */ + $this->dhcpPrimaryDN= $attrs['dhcpPrimaryDN'][0]; + } else { + /* We keep the parent dn here if it's new */ + $this->statements['default-lease-time']= 600; + $this->statements['max-lease-time']= 1700; + $this->statements['authoritative']= TRUE; + $this->statements['ddns-update-style']= 'none'; + } + + $this->advanced->setAutoStatements(array("default-lease-time", "max-lease-time", "authoritative", "server-identifier", "ddns-update-style")); + $this->advanced->setAutoOptions(array("server-name")); + + /* Save for later action */ + $this->orig_dhcpPrimaryDN= $this->dhcpPrimaryDN; + } + + + function execute() + { + /* Show main page */ + $smarty= get_smarty(); + + /* Assign ACLs */ + $smarty->assign("acl",$this->parent->getacl("")); + + $smarty->assign('ddns_styles', $this->ddns_styles); + foreach (array('max_lease_time', 'default_lease_time', 'ddns_update_style') as $value){ + if (isset($this->statements[preg_replace('/_/', '-', $value)])){ + $smarty->assign("$value", $this->statements[preg_replace('/_/', '-', $value)]); + } else { + $smarty->assign("$value", ""); + } + } + + if (isset($this->statements['authoritative'])){ + $smarty->assign("authoritative", "checked"); + } else { + $smarty->assign("authoritative", ""); + } + + /* Show main page */ + $display= $smarty->fetch(get_template_path('dhcp_service.tpl', TRUE, dirname(__FILE__))).$this->network->execute(); + + /* Merge arrays for advanced view */ + $this->fix_options(); + foreach (array("options", "statements") as $type){ + $this->advanced->$type= $this->$type + $this->network->$type;; + } + + $display.= $this->advanced->execute(); + + /* Merge back for removals */ + foreach (array("options", "statements") as $type){ + $this->$type= $this->advanced->$type; + $this->network->$type= $this->advanced->$type; + } + + /* Add footer */ + $display.= "
"; + if(preg_match("/w/",$this->parent->getacl(""))){ + $display.= " "; + } + $display.= ""; + $display.= "
"; + + return ($display); + + } + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + /* No need to save in the first time */ + if (isset($_POST['ddns_update_style']) && preg_match("/w/",$this->parent->getacl(""))){ + + /* Save remaining attributes */ + foreach (array('max_lease_time', 'default_lease_time', 'ddns_update_style') as $val){ + $tval= preg_replace('/_/', '-', $val); + if ($_POST[$val] != ""){ + $this->statements[$tval]= validate(get_post($val)); + } else { + unset ($this->statements[$tval]); + } + } + if (isset($_POST['authoritative'])){ + $this->statements['authoritative']= ""; + } else { + unset($this->statements['authoritative']); + } + } + + dhcpPlugin::save_object(); + } + + + /* Check values */ + function check() + { + $message= array(); + + if (!tests::is_id($this->statements['default-lease-time'])){ + $message[]= msgPool::invalid(_("Lease time"),$this->statements['default-lease-time'],"/[0-9]/"); + } + if (!tests::is_id($this->statements['max-lease-time'])){ + $message[]= msgPool::invalid(_("Max lease time"),$this->statements['max-lease-time'],"/[0-9]/"); + } + if ($this->statements['default-lease-time'] > $this->statements['max-lease-time']){ + $message[]= msgPool::toobig(_("Default lease time"),_("Maximum lease time")); + } + + /* Check external plugins */ + $net= $this->network->check(); + $adv= $this->advanced->check(); + $message= array_merge($message, $net, $adv); + + return $message; + } + + + /* Save to LDAP */ + function save() + { + global $config; + $this->attrs= array(); + + /* Get and set server name */ + $ldap= $config->get_ldap_link(); + $ldap->cat($this->dhcpPrimaryDN, array('cn')); + $res= $ldap->fetch(); + if(isset($res['cn'][0])){ + $server_name= $res['cn'][0]; + } + + dhcpPlugin::save(); + + $this->attrs['dhcpPrimaryDN']= array($this->dhcpPrimaryDN); + $this->removeOption('server-name'); +# $this->attrs['dhcpOption'][]= "server-name $server_name"; + + return ($this->attrs); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpSharedNetwork.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpSharedNetwork.inc new file mode 100644 index 000000000..a2b4d69f9 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpSharedNetwork.inc @@ -0,0 +1,213 @@ +advanced->setAutoStatements(array("server-identifier", "default-lease-time", + "max-lease-time", "min-lease-time", "authoritative", "deny unknown-clients", + "deny bootp", "deny booting", "allow unknown-clients", + "allow bootp", "allow booting")); + } + + + function execute() + { + $smarty= get_smarty(); + + /* Assign ACLs */ + $smarty->assign("acl",$this->parent->getacl("")); + + /* Fill template */ + $smarty->assign ("cn", $this->cn); + foreach (array("server-identifier", "default-lease-time", "max-lease-time", "min-lease-time") as $attr){ + if (isset($this->statements[$attr])){ + $smarty->assign(preg_replace('/-/', '_', $attr), $this->statements[$attr]); + } else { + $smarty->assign(preg_replace('/-/', '_', $attr), ""); + } + } + if (isset($this->statements["authoritative"])){ + $smarty->assign("authoritative", "checked"); + } else { + $smarty->assign("authoritative", ""); + } + if (!isset($this->statements["deny unknown-clients"])){ + $smarty->assign("allow_unknown_state", "checked"); + } else { + $smarty->assign("allow_unknown_state", ""); + } + if (!isset($this->statements["deny bootp"])){ + $smarty->assign("allow_bootp_state", "checked"); + } else { + $smarty->assign("allow_bootp_state", ""); + } + if (!isset($this->statements["deny booting"])){ + $smarty->assign("allow_booting_state", "checked"); + } else { + $smarty->assign("allow_booting_state", ""); + } + + /* Show main page */ + $display= $smarty->fetch(get_template_path('dhcp_sharedNetwork.tpl', TRUE,dirname(__FILE__))).$this->network->execute(); + + /* Merge arrays for advanced view */ + $this->fix_options(); + + /* Remove states configured by checkboxes. + */ + foreach(array("deny unknown-clients", + "deny bootp", "deny booting", "allow unknown-clients", + "allow bootp", "allow booting") as $name){ + if(isset($this->advanced->statements[$name])){ + unset($this->advanced->statements[$name]); + unset($this->network->statements[$name]); + } + } + + foreach (array("options", "statements") as $type){ + $this->advanced->$type= $this->$type + $this->network->$type; + } + + $display.= $this->advanced->execute(); + + /* Merge back for removals */ + foreach (array("options", "statements") as $type){ + $this->$type= $this->advanced->$type; + $this->network->$type= $this->advanced->$type; + } + + /* Add footer */ + $display.= "
"; + if(preg_match("/w/",$this->parent->getacl(""))){ + $display.= " "; + } + $display.= ""; + $display.= "
"; + + return ($display); + } + + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + /* Check permissions, don't touch anything if we do not have write permissions + */ + if (!preg_match("/w/",$this->parent->getacl(""))){ + dhcpPlugin::save_object(); + }elseif(isset($_POST['cn'])){ + + $this->cn= validate(get_post('cn')); + dhcpPlugin::save_object(); + + foreach (array("server-identifier", "default-lease-time", + "max-lease-time", "min-lease-time") as $attr){ + if (isset($_POST[$attr]) && $_POST[$attr] != ""){ + $this->statements[$attr]= get_post($attr); + } else { + unset($this->statements[$attr]); + } + } + + if (isset($_POST["authoritative"])){ + $this->statements["authoritative"]= ""; + } else { + unset ($this->statements["authoritative"]); + } + + foreach(array("unknown-clients", "bootp", "booting") as $name){ + if (isset($_POST[$name])){ + $this->statements["allow $name"]= ""; + unset($this->statements["deny $name"]); + } else { + $this->statements["deny $name"]= ""; + unset($this->statements["allow $name"]); + } + } + } + } + + + /* Check values */ + function check() + { + $message= array(); + + $cache = $this->parent->dhcpObjectCache; + + /* All required fields are set? */ + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + + /* Check lease times */ + foreach (array("default-lease-time" => _("Default lease time"), + "max-lease-time" => _("Max. lease time"), + "min-lease-time" => _("Min. lease time")) as $key => $val){ + if (isset($this->statements[$key]) && $this->statements[$key] != "" && + !tests::is_id($this->statements[$key])){ + $message[]= msgPool::invalid($val,$this->statements[$key],"/[0-9]/"); + } + } + + /* cn already used? */ + if ($this->orig_cn != $this->cn || $this->new){ + + foreach($cache as $dn => $dummy){ + if (preg_match("/^cn=".$this->cn.",/", $dn) && count($dummy)){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + + /* Check external plugins */ + $net= $this->network->check(); + $adv= $this->advanced->check(); + $message= array_merge($message, $net, $adv); + + return $message; + } + + + /* Save to LDAP */ + function save() + { + dhcpPlugin::save(); + + return ($this->attrs); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpSubnet.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpSubnet.inc new file mode 100644 index 000000000..2227e14f4 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_dhcpSubnet.inc @@ -0,0 +1,216 @@ +new){ + /* Load attributes */ + foreach (array("dhcpNetMask", "dhcpRange") as $attr){ + if (isset($attrs[$attr][0])){ + $this->$attr= $attrs[$attr][0]; + } + } + if (isset($attrs['dhcpRange']) && count($attrs['dhcpRange'])){ + $this->use_range= TRUE; + list($this->range_start, $this->range_stop)= preg_split('/\s+/', $this->dhcpRange); + } + } + + $this->dhcpNetMask= normalize_netmask($this->dhcpNetMask); + } + + + function execute() + { + $smarty= get_smarty(); + $smarty->assign("cn", $this->cn); + $smarty->assign("dhcp_netmask", $this->dhcpNetMask); + + /* Assign ACLs */ + $smarty->assign("acl",$this->parent->getacl("")); + + /* Prepare range */ + if ($this->use_range){ + $smarty->assign("use_range", "checked"); + $smarty->assign("range_disabled", ""); + } else { + $smarty->assign("use_range", ""); + $smarty->assign("range_disabled", "disabled"); + } + $smarty->assign("range_start", $this->range_start); + $smarty->assign("range_stop", $this->range_stop); + + /* Show main page */ + $display= $smarty->fetch(get_template_path('dhcp_subnet.tpl', TRUE, dirname(__FILE__))).$this->network->execute(); + + /* Merge arrays for advanced view */ + $this->fix_options(); + foreach (array("options", "statements") as $type){ + $this->advanced->$type= $this->$type + $this->network->$type; + } + + $display.= $this->advanced->execute(); + + /* Merge back for removals */ + foreach (array("options", "statements") as $type){ + $this->$type= $this->advanced->$type; + $this->network->$type= $this->advanced->$type; + } + + /* Add footer */ + $display.= "
"; + if(preg_match("/w/",$this->parent->getacl(""))){ + $display.= " "; + } + $display.= ""; + $display.= "
"; + + + /* Show main page */ + return $display; + } + + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + + /* Skip here if do not have write permissions here + Still executed at bottom - dhcpPlugin::save_object(); + */ + if(isset($_POST['dhcp_subnet_posted']) && preg_match("/w/",$this->parent->getacl(""))){ + if (isset($_POST['cn'])){ + $this->cn= validate(get_post('cn')); + } + if (isset($_POST['dhcp_netmask'])){ + $this->dhcpNetMask= validate(get_post('dhcp_netmask')); + } + if (isset($_POST['use_range'])){ + $this->use_range= TRUE; + $this->range_start= validate(get_post('range_start')); + $this->range_stop= validate(get_post('range_stop')); + } else { + $this->use_range= FALSE; + } + + /* Move range to internal variable */ + $this->dhcpRange= $this->range_start." ".$this->range_stop; + } + dhcpPlugin::save_object(); + } + + + /* Check values */ + function check() + { + $message= array(); + + $cache = $this->parent->dhcpObjectCache; + + /* All required fields are set? */ + if ($this->cn == ""){ + $message[]= msgPool::required(_("Network address")); + } + if ($this->dhcpNetMask == ""){ + $message[]= msgPool::required(_("Netmask")); + } + + /* cn already used? */ + if ($this->orig_cn != $this->cn || $this->new){ + + foreach($cache as $dn => $dummy){ + if (preg_match("/^cn=".$this->cn.",/", $dn) && count($dummy)){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + + /* IP's? */ + foreach(array( + 'dhcpNetMask' => _("Netmask"), + 'cn' => _("Network address"), + 'range_start' => _("Range"), + 'range_stop' => _("Range")) as $attr => $str){ + if ($this->$attr != "" && !tests::is_ip($this->$attr)){ + $message[]= msgPool::invalid($str,"","","192.168.0.23"); + } + } + + /* Check ip range */ + if ($this->use_range){ + if(!tests::is_ip_range($this->range_start,$this->range_stop)){ + $message[]= msgPool::invalid(_("Network range")); + } + + /* Check if range is in the network */ + if (!tests::is_in_network($this->cn, $this->dhcpNetMask, $this->range_start) || + !tests::is_in_network($this->cn, $this->dhcpNetMask, $this->range_stop)){ + $message[] = _("'Range' is not inside the configured network."); + } + } + + /* Check external plugins */ + $net= $this->network->check(); + $adv= $this->advanced->check(); + $message= array_merge($message, $net, $adv); + + return $message; + } + + + /* Save to LDAP */ + function save() + { + dhcpPlugin::save(); + + /* Move dn to the result */ + $this->attrs['dhcpNetMask']= array(netmask_to_bits($this->dhcpNetMask)); + if ($this->use_range && !empty($this->dhcpRange)){ + $this->attrs['dhcpRange']= array($this->range_start." ".$this->range_stop); + } else { + $this->attrs['dhcpRange']= array(); + } + + return ($this->attrs); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_servDHCP.inc b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_servDHCP.inc new file mode 100644 index 000000000..beb0636a3 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/class_servDHCP.inc @@ -0,0 +1,747 @@ + array(),"FOR_LIST"=> array()); + var $take_over_id = -1; + var $display_warning = TRUE; + + function servdhcp (&$config, $dn= NULL, $parent= NULL) + { + plugin::plugin ($config, $dn, $parent); + + $this->serviceDN = "cn=dhcp,".$dn; + $this->orig_dn = $dn; + + $this->DisplayName = _("DHCP service"); + + $this->types= array( "dhcpLog" => _("Logging"), + "dhcpService" => _("Global options"), + "dhcpClass" => _("Class"), + "dhcpSubClass" => _("Subclass"), + "dhcpHost" => _("Host"), + "dhcpGroup" => _("Group"), + "dhcpPool" => _("Pool"), + "dhcpSubnet" => _("Subnet"), + "dhcpFailOverPeer" => _("Failover peer"), + "dhcpSharedNetwork" => _("Shared network")); + + + /* Backport: PHP4 compatibility */ + foreach($this->types as $type => $translation){ + $this->types[strtolower($type)] = $translation; + } + + /* Load information about available services */ + $this->reload(); + if (!count($this->dhcpSections)){ + $this->is_account= FALSE; + $this->dhcp_server_list = $this->get_list_of_dhcp_servers(); + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $smarty->assign("dns_take_over",FALSE); + $display= ""; + + + /*****************/ + /* Handle Take Over Actions + /*****************/ + + /* Give smarty the required informations */ + $smarty->assign("dhcp_server_list", $this->dhcp_server_list['FOR_LIST']); + $smarty->assign("dhcp_server_list_cnt", count($this->dhcp_server_list['FOR_LIST'])); + + /* Take over requested, save id */ + if(isset($_POST['take_over_src']) && isset($_POST['take_over'])){ + $id = $_POST['take_over_src']; + if(isset($this->dhcp_server_list['ENTRIES'][$id])){ + $this->take_over_id = $id; + } + } + + /* Abort take over action */ + if(isset($_POST['cancel_take_over'])){ + $this->dialog =false; + $this->take_over_id = -1; + $this->dhcp_server_list = $this->get_list_of_dhcp_servers(); + } + + /* Display informartion about take over that will be started when saving this server + * and hide default dhcp output + */ + if($this->take_over_id != -1){ + + $this->dialog = FALSE; + $id = $this->take_over_id; + $smarty->assign("dns_take_over",TRUE); + $warning = sprintf(_("You have requested a migration of the DHCP setup from server '%s' to the current one."), + $this->dhcp_server_list['ENTRIES'][$id]['cn'][0]); + $warning.= " "._("The migration will be started when you save this system."); + + if($this->display_warning){ + msg_dialog::display(_("Warning"), $warning, WARNING_DIALOG); + $this->display_warning = FALSE; + } + return($smarty->fetch(get_template_path('servdhcp.tpl', TRUE, dirname(__FILE__)))); + } + + + /*****************/ + /* List handling + /*****************/ + + /* Section Creation? */ + if (isset($_POST['create_section']) && isset($_POST['section'])){ + $section= $_POST['section']; + $tmp = new dhcpNewSectionDialog(NULL); + if (isset($tmp->sectionMap[$section])){ + $this->dialog= new $section($this,$this->current_object); + $this->current_object= ""; + } else { + $this->dialog= FALSE; + } + } + + /* Cancel section creation? */ + if (isset($_POST['cancel_section']) || isset($_POST['cancel_dhcp'])){ + $this->dialog= FALSE; + } + + /* Save changes */ + if (isset($_POST['save_dhcp'])){ + $this->dialog->save_object(); + $messages= $this->dialog->check(); + if (count($messages)){ + msg_dialog::displayChecks($messages); + } else { + $dn= $this->dialog->dn; + $class= get_class($this->dialog); + $type= $this->types[$class]; + if(empty($this->serviceDN)){ + $indent= substr_count(preg_replace("/".$this->dn."/", '', $dn), ",") -1; + }else{ + $indent= substr_count(preg_replace("/".$this->serviceDN."/", '', $dn), ","); + } + $spaces= ""; + for ($i= 0; $i<$indent; $i++){ + $spaces.= "    "; + } + $data= $this->dialog->save(); + if ($this->current_object == ""){ + + /* New object */ + $newsects= array(); + foreach ($this->dhcpSections as $key => $dsc){ + $newsects[$key]= $dsc; + if ($key == $dn){ + $spaces.= "    "; + $newsects[$data['dn']]= "$spaces$type '".preg_replace('/^[^=]+=([^,]+),.*$/', '\1', $data['dn'])."'"; + } + } + $this->dhcpObjectCache[$data['dn']]= $data; + $this->dhcpSections= $newsects; + } else { + if ($dn != $data['dn']){ + /* Old object, new name */ + $this->dhcpObjectCache[$dn]= array(); + $this->dhcpObjectCache[$data['dn']]= $data; + + /* If we renamed a section, we've to rename a couple of objects, too */ + foreach ($this->dhcpObjectCache as $key => $dsc){ + if (preg_match("/,$dn$/", $key)){ + $new_dn= preg_replace("/,$dn$/", ",".$data['dn'], $key); + $dsc['MODIFIED']= TRUE; + $this->dhcpObjectCache[$new_dn]= $dsc; + unset($this->dhcpObjectCache[$key]); + } + } + $newsects= array(); + foreach ($this->dhcpSections as $key => $dsc){ + if ($key == $dn){ + $newsects[$data['dn']]= "$spaces$type '".preg_replace('/^[^=]+=([^,]+),.*$/', '\1', $data['dn'])."'"; + continue; + } + if (preg_match("/,$dn$/", $key)){ + $new_dn= preg_replace("/,$dn$/", ",".$data['dn'], $key); + $newsects[$new_dn]= $dsc; + } else { + $newsects[$key]= $dsc; + } + } + $this->dhcpSections= $newsects; + + } else { + /* Old object, old name */ + $this->dhcpObjectCache[$data['dn']]= $data; + } + } + $this->dialog= FALSE; + } + } + + /* Remove section? */ + if (isset($_POST['delete_dhcp_confirm'])){ + if ($this->acl_is_removeable()){ + unset($this->dhcpSections[$this->current_object]); + unset($this->dhcpObjectCache[$this->current_object]); + $this->dhcpObjectCache[$this->current_object]= array(); + foreach ($this->dhcpSections as $key => $value){ + if (preg_match("/".$this->current_object."$/", $key)){ + unset($this->dhcpSections[$key]); + unset($this->dhcpObjectCache[$key]); + $this->dhcpObjectCache[$key]= array(); + } + } + } else { + msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG); + } + $this->dialog= FALSE; + } + + /* Look for post entries */ + foreach($_POST as $name => $value){ + + /* Insert new section? */ + if (preg_match('/^insertDhcp_.*_x$/', $name)){ + $dn= base64_decode(preg_replace('/^insertDhcp_([^_]+)_x$/', '\1', $name)); + if (isset($this->dhcpObjectCache[$dn])){ + $this->dialog= new dhcpNewSectionDialog($this->objectType($dn)); + $this->current_object= $dn; + $this->dialog->acl= $this->acl; + } + } + + /* Edit section? */ + if (preg_match('/^editDhcp_.*_x$/', $name)){ + $dn= base64_decode(preg_replace('/^editDhcp_([^_]+)_x$/', '\1', $name)); + if (isset($this->dhcpObjectCache[$dn])){ + $section= $this->objectType($dn); + $this->current_object= $dn; + $this->dialog= new $section($this,$this->dhcpObjectCache[$dn]); + } + } + + /* Remove section? */ + if (preg_match('/^delDhcp_.*_x$/', $name)){ + $dn= base64_decode(preg_replace('/^delDhcp_([^_]+)_x$/', '\1', $name)); + if (isset($this->dhcpObjectCache[$dn])){ + $this->current_object= $dn; + $this->dialog= 1; + $smarty->assign("warning", msgPool::deleteInfo(LDAP::fix($dn),_("DHCP section"))); + return($smarty->fetch(get_template_path('remove_dhcp.tpl', TRUE, dirname(__FILE__)))); + } + } + + } + + if(isset($_GET['act']) && $_GET['act']=="edit" && isset($_GET['id'])){ + $dn = base64_decode($_GET['id']); + if (isset($this->dhcpObjectCache[$dn])){ + $section= $this->objectType($dn); + $this->current_object= $dn; + $this->dialog= new $section($this,$this->dhcpObjectCache[$dn]); + } + } + + + if(isset($_GET['act']) && $_GET['act']=="edit" && isset($_GET['id'])){ + $dn = base64_decode($_GET['id']); + if (isset($this->dhcpObjectCache[$dn])){ + $section= $this->objectType($dn); + $this->current_object= $dn; + $this->dialog= new $section($this,$this->dhcpObjectCache[$dn]); + } + } + + + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + + /* Show tab dialog headers */ + if ($this->is_account){ + if (!count($this->dhcpObjectCache)){ + $attrs= array(); + $attrs['dn']= 'cn=dhcp,'.$this->dn; + $attrs['cn']= array('dhcp'); + $attrs['objectClass']= array('top', 'dhcpService'); + $attrs['dhcpPrimaryDN']= array($this->dn); + $attrs['dhcpStatements']= array("default-lease-time 600", + "max-lease-time 1200", + "authoritative", + "ddns-update-style none"); + $attrs['MODIFIED']= TRUE; + $this->dhcpSections['cn=dhcp,'.$this->dn]= _("Global options"); + $this->dhcpObjectCache['cn=dhcp,'.$this->dn]= $attrs; + } + + } else { + return ($display); + } + + + /* Show dialog + */ + if(isset($this->dialog) && is_object($this->dialog)){ + $this->dialog->save_object(); + $this->dialog->parent = $this; + return($this->dialog->execute()); + } + + /* Create Listbox with existing Zones + */ + $DhcpList = new divSelectBox("dhcpSections"); + $DhcpList->SetHeight(400); + + /* Add entries to divlist + */ + $editImgIns = "". + "". + ""; + $editImgInsNoDel = "". + ""; + $editImg = "". + ""; + + $tmp = new dhcpNewSectionDialog(NULL); + foreach($this->dhcpSections as $section => $values ){ + + $values = "".$values.""; + + if (count($tmp->sectionMap[$this->objectType($section)])){ + if ($this->objectType($section) == "dhcpService"){ + $DhcpList->AddEntry(array( + array("string" => $values), + array("string" => str_replace("%s",base64_encode($section),$editImgInsNoDel), "attach" => "style='text-align:right;'") + )); + } else { + $DhcpList->AddEntry(array( + array("string" => $values), + array("string" => str_replace("%s",base64_encode($section),$editImgIns), "attach" => "style='text-align:right;'") + )); + } + } else { + $DhcpList->AddEntry(array( + array("string" => $values), + array("string" => str_replace("%s",base64_encode($section),$editImg), "attach" => "style='text-align:right;'") + )); + } + } + + /* Display tempalte */ + $smarty->assign("DhcpList",$DhcpList->DrawList()); + $display.= $smarty->fetch(get_template_path('servdhcp.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + /* Remove subtrees */ + $ldap= $this->config->get_ldap_link(); + foreach ($this->dhcpObjectCache as $dn => $content){ + if ($this->objectType($dn) == 'dhcpService'){ + $ldap->rmdir_recursive($dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_DEL, get_class())); + } + } + } + + /* Remove from self */ + $ldap= $this->config->get_ldap_link(); + + /* Remove and write to LDAP */ + plugin::remove_from_parent(); + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $this->attributes, "Save"); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove"); + } + + + /* Save data to object */ + function save_object() + { + plugin::save_object(); + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* Take over handling + * - Load servdhcp class and dhcpObjectCache for the source dhcp setup. + * - Assign dhcpObjectCache to this configuration. + * - Save this setup and remove source setup from ldap. + */ + if($this->take_over_id != -1){ + $id = $this->take_over_id; + $src = preg_replace("/cn=dhcp,/","",$this->dhcp_server_list['ENTRIES'][$id]['dn']); + $tmp = new servdhcp ($this->config, $src); + $this->orig_dn = $src; + $this->dhcpObjectCache = $tmp->dhcpObjectCache; + } + + /* Save dhcp setttings */ + $ldap= $this->config->get_ldap_link(); + foreach ($this->dhcpObjectCache as $dn => $data){ + + if($this->dn != $this->orig_dn){ + $dn = preg_replace("/".preg_quote($this->orig_dn, '/')."$/i",$this->dn,$dn); + } + + /* Remove entry? */ + if (count($data) == 0){ + /* Check if exists, then remove... */ + if($ldap->cat($dn)){ + $ldap->rmdir_recursive($dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD, get_class())); + } + } + continue; + } + + /* Opdate dhcp option 'server-name' to actual server name */ + if($this->dn != $this->orig_dn){ + $fixed = FALSE; + foreach(array("dhcpHost","dhcpSubnet","dhcpGroup","dhcpSharedNetwork") as $object){ + if(in_array($object,$data['objectClass']) && isset($data['dhcpOption'])){ + foreach($data['dhcpOption'] as $key => $option){ + if(preg_match("/^server-name /",$option)){ + $data['dhcpOption'][$key] = "server-name ".$this->cn; + $data['MODIFIED'] = TRUE; + break; + } + } + } + + /* Skip next loops if entry is updated */ + if($fixed){ + break; + } + } + } + + /* Modify existing entry? */ + if (isset($data['MODIFIED']) || $this->orig_dn != $this->dn){ + + if($ldap->cat($dn)){ + $modify= TRUE; + } else { + $modify= FALSE; + } + + /* Build new entry */ + $attrs= array(); + foreach ($data as $attribute => $values){ + if ($attribute == "MODIFIED" || $attribute == "dn"){ + continue; + } + + if(in_array($attribute,array("dhcpPrimaryDN","dhcpSecondaryDN","dhcpServerDN","dhcpFailOverPeerDN"))){ + foreach($values as $v_key => $value){ + $values[$v_key] = preg_replace("/".preg_quote($this->orig_dn, '/')."$/i",$this->dn,$value); + } + } + + if (count($values)){ + + if($attribute == "dhcpOption"){ + foreach($values as $key => $value){ + $option_name = trim(preg_replace("/[^ ]*$/","",$value)); + $option_value= trim(preg_replace("/^[^ ]*/","",$value)); + if(in_array($option_name,$this->quote_option)){ + $values[$key] = $option_name." \"".$option_value."\""; + } + } + } + if (count($values) == 1){ + $attrs[$attribute]= $values[0]; + } else { + $attrs[$attribute]= $values; + } + } else { + if ($modify){ + $attrs[$attribute]= array(); + } + } + } + + $ldap->cd($dn); + if ($modify){ + $ldap->modify($attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("modify"); + } else { + $ldap->add($attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_ADD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("create"); + } + } + } + + $this->dhcpServiceDN= $this->serviceDN; + if($this->dn != $this->orig_dn){ + $this->dhcpServiceDN= preg_replace("/".preg_quote($this->orig_dn, '/')."$/i",$this->dn,$this->dhcpServiceDN); + } + + /* Replace 'new' dn */ + if(preg_match("/new$/",$this->dhcpServiceDN)){ + $this->dhcpServiceDN = preg_replace("/new$/",$this->dn,$this->dhcpServiceDN); + } + + plugin::save(); + + /* Save data to LDAP */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify"); + } + } else { + $this->handle_post_events("add"); + } + + /* Take over handling + * - Remove old dhcp config from source server + */ + if($this->take_over_id != -1){ + $id = $this->take_over_id; + $src = $this->dhcp_server_list['ENTRIES'][$id]['dn']; + $tmp = new servdhcp ($this->config, $src); + $tmp->remove_from_parent(); + } + } + + + function reload() + { + /* Init LDAP and load list */ + $ldap= $this->config->get_ldap_link(); + $ui= get_userinfo(); + $me= $this->dn; + + $filter = "(&(objectClass=dhcpService)(|(dhcpPrimaryDN=$me)(dhcpSecondaryDN=$me)(dhcpServerDN=$me)(dhcpFailOverPeerDN=$me)))"; + + $list= get_list($filter, array("server"), $this->config->current['BASE'], array("cn"),GL_SIZELIMIT | GL_SUBSEARCH); + $final= array(); + + foreach ($list as $value){ + + /* Set header */ + $sortpart= split(",", $value['dn']); + $sortpart= array_reverse($sortpart); + $tmp= implode(",", $sortpart); + + $final[$value['dn']]= $tmp."!"._("Global options"); + + /* Read all sub entries to place here */ + $ldap->cd($value['dn']); + $ldap->search("(|(objectClass=dhcpService)(objectClass=dhcpLog)(objectClass=dhcpClass)(objectClass=dhcpSubClass)(objectClass=dhcpHost)(objectClass=dhcpGroup)(objectClass=dhcpPool)(objectClass=dhcpSubnet)(objectClass=dhcpSharedNetwork)(objectClass=dhcpOptions)(objectClass=dhcpTSigKey)(objectClass=dhcpDnsZone)(objectClass=dhcpFailOverPeer))", array()); + $this->serviceDN= $value['dn']; + + while ($attrs= $ldap->fetch()){ + $sattrs= array(); + for ($i= 0; $i<$attrs['count']; $i++){ + $sattrs[$attrs[$i]]= $attrs[$attrs[$i]]; + unset($sattrs[$attrs[$i]]['count']); + } + $sattrs['dn']= $ldap->getDN(); + + foreach($sattrs as $name => $values){ + if($name == "dhcpOption"){ + foreach($values as $key => $value){ + $value_name = trim(preg_replace("/[^ ]*$/","",$value)); + $value_value= trim(preg_replace("/^[^ ]*/","",$value)); + if(in_array($value_name,$this->quote_option)){ + $value_value = preg_replace("/^\"/","",$value_value); + $value_value = preg_replace("/\"$/","",$value_value); + $sattrs[$name][$key] = $value_name." ".$value_value; + } + } + } + } + + $this->dhcpObjectCache[$ldap->getDN()]= $sattrs; + $tmp= preg_replace("/".$this->serviceDN."/", "", $ldap->getDN()); + $indent= substr_count($tmp, ","); + $spaces= ""; + for ($i= 0; $i<$indent; $i++){ + $spaces.= "    "; + } + + foreach ($this->types as $key => $val){ + if (in_array("$key", $attrs['objectClass'])){ + $type= $val; + break; + } + } + + /* Prepare for sorting... */ + $sortpart= split(",", $ldap->getDN()); + $sortpart= array_reverse($sortpart); + $tmp= implode(",", $sortpart); + $final[$ldap->getDN()]= $tmp."!".$spaces.$type." '".$attrs['cn'][0]."'"; + } + } + + /* Sort it... */ + natsort($final); + $this->dhcpSections= array(); + foreach ($final as $key => $val){ + $this->dhcpSections[$key]= preg_replace('/^[^!]+!(.*)$/', '\\1', $val); + } + + } + + + function objectType($dn) + { + $type= ""; + $types= array("dhcpService", "dhcpClass", "dhcpSubClass", "dhcpHost", + "dhcpGroup", "dhcpPool", "dhcpSubnet", "dhcpSharedNetwork"); + + foreach ($this->dhcpObjectCache[$dn]['objectClass'] as $oc){ + if (in_array($oc, $types)){ + $type= $oc; + break; + } + } + + /* That should not happen... */ + if ($type == ""){ + msg_dialog::display(_("Error"), _("The DHCP configuration set is unkown. Please contact your system administrator."), ERROR_DIALOG); + } + + return ($type); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("DHCP service"), + "plDescription" => _("DHCP service")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 84, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "start" => _("Start service"), // Remove this to hide the start button at all. + "stop" => _("Stop service"), // Remove this to hide the stop button at all. + "restart" => _("Restart service"))// Remove this to hide the restart button at all. + )); + } + + + function take_over_service() + { + + } + + + function get_list_of_dhcp_servers() + { + $ret = array("ENTRIES"=> array(),"FOR_LIST"=> array()); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=goServer)(dhcpServiceDN=*))",array("dn","cn","dhcpServiceDN")); + while($attrs = $ldap->fetch()){ + + /* Skip own config */ + if($this->dn != "new" && preg_match("/".preg_quote($this->dn, '/')."$/",$attrs['dn'])){ + continue; + } + + $ret['ENTRIES'][] = $attrs; + } + foreach($ret['ENTRIES'] as $key => $data){ + $ret['FOR_LIST'][$key] = $data['cn'][0]; + } + return($ret); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("DHCP service"); + #$fields['AllowEdit'] = true; + return($fields); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcpNewSection.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcpNewSection.tpl new file mode 100644 index 000000000..7d621aa2a --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcpNewSection.tpl @@ -0,0 +1,25 @@ +
+ {t}Create new DHCP section{/t} +
+
+

+{t}Please choose one of the following DHCP section types.{/t} +

+
+{t}Section{/t}  + + +

+ +   + +

+ + + diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_advanced.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_advanced.tpl new file mode 100644 index 000000000..0669b20fd --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_advanced.tpl @@ -0,0 +1,62 @@ +{* GOsa dhcp sharedNetwork - smarty template *} + +

+
+ +{if $show_advanced} + + + + + + + + + + +
+
+ {t}DHCP statements{/t} +
+{render acl=$acl} + +{/render} +
+{render acl=$acl} +   +{/render} +{render acl=$acl} +   +{/render} +{render acl=$acl} + +{/render} +
+
+ {t}DHCP options{/t} +
+{render acl=$acl} + +{/render} +
+{render acl=$acl} +   +{/render} +{render acl=$acl} +   +{/render} +{render acl=$acl} + +{/render} +
+ +{else} + + + +{/if} +

 

diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_group.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_group.tpl new file mode 100644 index 000000000..ba57fb381 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_group.tpl @@ -0,0 +1,24 @@ +{* GOsa dhcp sharedNetwork - smarty template *} +

{t}Generic{/t}

+ + + + + +
+ {t}Name{/t}{$must} + +{render acl=$acl} + +{/render} +
+ +

 

+ + + diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_host.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_host.tpl new file mode 100644 index 000000000..d49c4d680 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_host.tpl @@ -0,0 +1,60 @@ +{* GOsa dhcp host - smarty template *} +

{t}Generic{/t}

+ + + + + +
+ + + + + + + + + +
{t}Name{/t}{$must} +{render acl=$acl} + +{/render} +
{t}Fixed address{/t} +{render acl=$acl} + +{/render} +
+
+ + + + + + + + + +
{t}Hardware type{/t} +{render acl=$acl} + +{/render} +
{t}Hardware address{/t}{$must} +{render acl=$acl} + +{/render} +
+
+ +

+ + + diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_network.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_network.tpl new file mode 100644 index 000000000..5716a7eb0 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_network.tpl @@ -0,0 +1,114 @@ +{* GOsa dhcp sharedNetwork - smarty template *} + + + + + +
+

{t}Network configuration{/t}

+ + + + + + + + + + + + + +
{t}Router{/t} +{render acl=$acl} + +{/render} +
{t}Netmask{/t} +{render acl=$acl} + +{/render} +
{t}Broadcast{/t} +{render acl=$acl} + +{/render} +
+
+
+

{t}Bootup{/t}

+ + + + + + + + + +
{t}Filename{/t} +{render acl=$acl} + +{/render} +
{t}Next server{/t} +{render acl=$acl} + +{/render} +
+ +
+

{t}Domain Name Service{/t}

+ + + + + + + + + + + +
{t}Domain{/t} +{render acl=$acl} + +{/render} +
+
+ {t}DNS server{/t}
+{render acl=$acl} + +{/render} +
+{render acl=$acl} +   +{/render} +{render acl=$acl} + +{/render} +{render acl=$acl} + +{/render} +
+

{t}Domain Name Service options{/t}

+{render acl=$acl} + {t}Assign hostnames found via reverse mapping{/t} +{/render} +
+{render acl=$acl} + {t}Assign hostnames from host declarations{/t} +{/render} +
+ +
+ + + diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_pool.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_pool.tpl new file mode 100644 index 000000000..7b1ec4f5e --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_pool.tpl @@ -0,0 +1,32 @@ +{* GOsa dhcp sharedNetwork - smarty template *} +

{t}Generic{/t}

+ + + + + +
+ {t}Name{/t}{$must}  +{render acl=$acl} + +{/render} + + {t}Range{/t}{$must}  +{render acl=$acl} + +{/render} +  -  +{render acl=$acl} + +{/render} +
+ +

 

+ + + diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_service.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_service.tpl new file mode 100644 index 000000000..94f709ae7 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_service.tpl @@ -0,0 +1,51 @@ +

{t}Generic{/t}

+ + + + + + + + +
+{render acl=$acl} + {t}Authoritative service{/t}
+{/render} +
+ {t}Dynamic DNS update{/t} +{render acl=$acl} + +{/render} +
+ + + + + + + + + + +
{t}Default lease time (s){/t} +{render acl=$acl} + +{/render} +
{t}Maximum lease time (s){/t} +{render acl=$acl} + +{/render} +
+ +
+ +

+ + + diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_sharedNetwork.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_sharedNetwork.tpl new file mode 100644 index 000000000..b7467147f --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_sharedNetwork.tpl @@ -0,0 +1,125 @@ +{* GOsa dhcp sharedNetwork - smarty template *} +

{t}Generic{/t}

+ + + + + + + + +
+ + + + + + + + + + +
{t}Name{/t}{$must} +{render acl=$acl} + +{/render} +
{t}Server identifier{/t} +{render acl=$acl} + +{/render} +
+ +
+ + + + +
+{render acl=$acl} + {t}Authoritative server{/t} +{/render} +
+
+ +

 

+ + + + + + + + +
+ +

{t}Leases{/t}

+ + + + + + + + + + + + + +
{t}Default lease time{/t} +{render acl=$acl} +  {t}seconds{/t} +{/render} +
{t}Max. lease time{/t} +{render acl=$acl} +  {t}seconds{/t} +{/render} +
{t}Min. lease time{/t} +{render acl=$acl} +  {t}seconds{/t} +{/render} +
+ +
+

{t}Access control{/t}

+ + + + + + + + + + +
+{render acl=$acl} + {t}Allow unknown clients{/t} +{/render} +
+{render acl=$acl} + {t}Allow bootp clients{/t} +{/render} +
+{render acl=$acl} + {t}Allow booting{/t} +{/render} +
+
+ +

 

+ + + diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_subnet.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_subnet.tpl new file mode 100644 index 000000000..7f19551b1 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/dhcp_subnet.tpl @@ -0,0 +1,58 @@ +{* GOsa dhcp subnet - smarty template *} +

{t}Generic{/t}

+ + + + + +
+ + + + + + + + +
{t}Network address{/t}{$must} +{render acl=$acl} + +{/render} +
{t}Netmask{/t}{$must} +{render acl=$acl} + +{/render} +
+
+ + + +{/render} + + + + + + +
+{render acl=$acl} + {t}Range for dynamic address assignment{/t}
  +{render acl=$acl} + +{/render} +  -  +{render acl=$acl} + +{/render} +
+
+ +

+ + + diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/remove_dhcp.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/remove_dhcp.tpl new file mode 100644 index 000000000..1f8773ba1 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/remove_dhcp.tpl @@ -0,0 +1,17 @@ +
+ {t}Warning{/t} +
+

+ {$warning} + {t}This includes 'all' DHCP subsections that are located within this section. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+ +

+ {t}Best thing to do before performing this action would be to save the current contents of your LDAP tree in a file. So - if you've done so - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ +   + +

diff --git a/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/servdhcp.tpl b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/servdhcp.tpl new file mode 100644 index 000000000..8e387ed4a --- /dev/null +++ b/trunk/gosa-plugins/dhcp/admin/systems/services/dhcp/servdhcp.tpl @@ -0,0 +1,35 @@ +{if $dns_take_over} + + + + +
+

{t}DHCP take over will take place when saving this entry. Choose 'Cancel' to abort.{/t}

+
+{else} + +{if $dhcp_server_list_cnt} + + + +{/if} + + + +
+ {t}Take over dhcp configuration from following server{/t}  + + +
+

{t}DHCP sections{/t}

+ {$DhcpList} +
+{/if} +

 

+
+ +   + +
, 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-10-07 18:32+0200\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:65 +msgid "Ethernet" +msgstr "Ethernet" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:66 +msgid "FDDI" +msgstr "FDDI" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:67 +msgid "Token Ring" +msgstr "Token Ring" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:143 +#: admin/systems/services/dhcp/class_dhcpHost.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:159 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:169 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:187 +#: admin/systems/services/dhcp/dhcp_host.tpl:8 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:10 +#: admin/systems/services/dhcp/class_dhcpPool.inc:113 +#: admin/systems/services/dhcp/class_dhcpPool.inc:121 +#: admin/systems/services/dhcp/dhcp_pool.tpl:6 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:96 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:99 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:107 +#: admin/systems/services/dhcp/dhcp_group.tpl:6 +msgid "Name" +msgstr "Name" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:160 +#: admin/systems/services/dhcp/dhcp_host.tpl:41 +msgid "Hardware address" +msgstr "Hardware-Adresse" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:148 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:168 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:8 +msgid "Network address" +msgstr "Netzwerk-Adresse" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:167 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:17 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:16 +msgid "Netmask" +msgstr "Netzmaske" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:169 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:170 +#: admin/systems/services/dhcp/class_dhcpPool.inc:128 +#: admin/systems/services/dhcp/class_dhcpPool.inc:132 +#: admin/systems/services/dhcp/class_dhcpPool.inc:136 +#: admin/systems/services/dhcp/dhcp_pool.tpl:13 +msgid "Range" +msgstr "Bereich" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:179 +msgid "Network range" +msgstr "Netzwerk-Bereich" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:185 +#: admin/systems/services/dhcp/class_dhcpPool.inc:150 +msgid "'Range' is not inside the configured network." +msgstr "" +"Der Bereich befindet sich nicht innerhalb des konfigurierten Netzwerks." + +#: admin/systems/services/dhcp/class_dhcpService.inc:145 +msgid "Lease time" +msgstr "Lease-Gültigkeit" + +#: admin/systems/services/dhcp/class_dhcpService.inc:148 +msgid "Max lease time" +msgstr "Max. Lease-Gültigkeit" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:173 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:55 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +msgid "Default lease time" +msgstr "Standard Lease-Gültigkeit" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +msgid "Maximum lease time" +msgstr "Maximale Lease-Gültigkeit" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Error" +msgstr "Fehler" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:25 +msgid "Broadcast" +msgstr "Broadcast" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:218 +#, php-format +msgid "Error in definition of '%s'!" +msgstr "Fehler in Definition von '%s'!" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:174 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:64 +msgid "Max. lease time" +msgstr "Max. Lease-Gültigkeit" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:175 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:73 +msgid "Min. lease time" +msgstr "Min. Lease-Gültigkeit" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:2 +#: admin/systems/services/dhcp/class_servDHCP.inc:108 +msgid "Warning" +msgstr "Warnung" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:6 +msgid "" +"This includes 'all' DHCP subsections that are located within this section. " +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Dies umfasst 'alle' DHCP-Subsektionen die sich innerhalb dieser Sektion " +"befinden. Bitte prüfen Sie genau, ob Sie dies wirklich wünschen, da es für " +"GOsa keine Möglichkeit gibt, die Daten wieder her zustellen." + +#: admin/systems/services/dhcp/remove_dhcp.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Eine Sicherung der LDAP-Datenbank bietet sich an dieser Stelle an. Wenn Sie " +"dies erledigt haben, drücken Sie 'Entfernen' um Fortzufahren oder " +"'Abbrechen', um den Vorgang abzubrechen." + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:8 +msgid "Hide advanced settings" +msgstr "Verstecke Erweiterte Einstellungen" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:15 +msgid "DHCP statements" +msgstr "DHCP-Anweisungen" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:36 +msgid "DHCP options" +msgstr "DHCP-Optionen" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:59 +msgid "Show advanced settings" +msgstr "Zeige Erweiterte Einstellungen" + +#: admin/systems/services/dhcp/dhcp_host.tpl:2 +#: admin/systems/services/dhcp/dhcp_service.tpl:1 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:2 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:2 +#: admin/systems/services/dhcp/dhcp_pool.tpl:2 +#: admin/systems/services/dhcp/dhcp_group.tpl:2 +msgid "Generic" +msgstr "Allgemein" + +#: admin/systems/services/dhcp/dhcp_host.tpl:12 +msgid "Name of host" +msgstr "Name des Hosts" + +#: admin/systems/services/dhcp/dhcp_host.tpl:17 +msgid "Fixed address" +msgstr "Feste Adresse" + +#: admin/systems/services/dhcp/dhcp_host.tpl:22 +msgid "Use hostname or IP-address to assign fixed address" +msgstr "Verwende Hostnamen oder IP-Adresse um eine feste Adresse zuzuweisen" + +#: admin/systems/services/dhcp/dhcp_host.tpl:31 +msgid "Hardware type" +msgstr "Hardware-Typ" + +#: admin/systems/services/dhcp/dhcp_service.tpl:7 +msgid "Authoritative service" +msgstr "Authoritativer Dienst" + +#: admin/systems/services/dhcp/dhcp_service.tpl:10 +msgid "Dynamic DNS update" +msgstr "Dynamische DNS-Updates" + +#: admin/systems/services/dhcp/dhcp_service.tpl:12 +msgid "Dynamic DNS update style" +msgstr "Stil für Dynamische DNS-Updates" + +#: admin/systems/services/dhcp/dhcp_service.tpl:22 +msgid "Default lease time (s)" +msgstr "Standard Lease-Gültigkeit (s)" + +#: admin/systems/services/dhcp/dhcp_service.tpl:25 +msgid "Enter default lease time in seconds." +msgstr "Geben Sie die Standard Lease-Gültigkeit in Sekunden ein." + +#: admin/systems/services/dhcp/dhcp_service.tpl:30 +msgid "Maximum lease time (s)" +msgstr "Maximale Lease-Gültigkeit (s)" + +#: admin/systems/services/dhcp/dhcp_service.tpl:33 +msgid "Enter maximum lease time in seconds." +msgstr "Geben Sie die maximale Lease-Gültigkeit in Sekunden ein." + +#: admin/systems/services/dhcp/servdhcp.tpl:5 +msgid "" +"DHCP take over will take place when saving this entry. Choose 'Cancel' to " +"abort." +msgstr "" +"DHCP-Übernahme wird durchgeführt, wenn der Eintrag gespeichert wird. Wählen " +"Sie 'Abbrechen', um den Vorgang abzubrechen." + +#: admin/systems/services/dhcp/servdhcp.tpl:14 +msgid "Take over dhcp configuration from following server" +msgstr "Übernehme DHCP-Konfiguration von folgendem Server" + +#: admin/systems/services/dhcp/servdhcp.tpl:24 +msgid "DHCP sections" +msgstr "DHCP-Sektionen" + +#: admin/systems/services/dhcp/dhcp_network.tpl:5 +msgid "Network configuration" +msgstr "Netzwerk-Konfiguration" + +#: admin/systems/services/dhcp/dhcp_network.tpl:8 +msgid "Router" +msgstr "Router" + +#: admin/systems/services/dhcp/dhcp_network.tpl:12 +msgid "Enter name or IP address of router to be used in this section" +msgstr "" +"Geben Sie den Namen oder die IP-Adresse des Routers ein, der in dieser " +"Sektion verwendet werden soll" + +#: admin/systems/services/dhcp/dhcp_network.tpl:35 +msgid "Bootup" +msgstr "Bootup" + +#: admin/systems/services/dhcp/dhcp_network.tpl:38 +msgid "Filename" +msgstr "Dateiname" + +#: admin/systems/services/dhcp/dhcp_network.tpl:42 +msgid "" +"Enter name of file that will be loaded via tftp after client has started" +msgstr "" +"Geben Sie den Namen der Datei ein, die via Tftp geladen werden soll, wenn " +"der Client gestartet wurde" + +#: admin/systems/services/dhcp/dhcp_network.tpl:47 +msgid "Next server" +msgstr "Nächster Server" + +#: admin/systems/services/dhcp/dhcp_network.tpl:51 +msgid "Enter name of server to retrieve bootimages from" +msgstr "" +"Geben Sie den Namen des Servers ein, von dem Bootimages bezogen werden sollen" + +#: admin/systems/services/dhcp/dhcp_network.tpl:59 +msgid "Domain Name Service" +msgstr "Domain Name Service" + +#: admin/systems/services/dhcp/dhcp_network.tpl:62 +msgid "Domain" +msgstr "Domäne" + +#: admin/systems/services/dhcp/dhcp_network.tpl:66 +msgid "Name of domain" +msgstr "Name der Domäne" + +#: admin/systems/services/dhcp/dhcp_network.tpl:73 +msgid "DNS server" +msgstr "DNS-Server" + +#: admin/systems/services/dhcp/dhcp_network.tpl:75 +msgid "List of DNS servers to be propagated" +msgstr "Liste der DNS-Server die verbreitet werden soll" + +#: admin/systems/services/dhcp/dhcp_network.tpl:81 +msgid "DNS server do be added" +msgstr "DNS-Server, der hinzugefügt wird" + +#: admin/systems/services/dhcp/dhcp_network.tpl:84 +msgid "Click here add the selected server to the list" +msgstr "Klicken Sie hier um den gewählten Server zur Liste hinzuzufügen" + +#: admin/systems/services/dhcp/dhcp_network.tpl:87 +msgid "Click here remove the selected servers from the list" +msgstr "licken Sie hier um den/die gewählten Server aus der Liste zu entfernen" + +#: admin/systems/services/dhcp/dhcp_network.tpl:93 +msgid "Domain Name Service options" +msgstr "Domain Name Service Optionen" + +#: admin/systems/services/dhcp/dhcp_network.tpl:95 +msgid "Assign hostnames found via reverse mapping" +msgstr "Weise Hostnamen zu die via Reverse Mapping gefunden wurden" + +#: admin/systems/services/dhcp/dhcp_network.tpl:99 +msgid "Assign hostnames from host declarations" +msgstr "Weise Hostnamen aus Host-Deklarationen zu" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:2 +msgid "Create new DHCP section" +msgstr "Erzeuge neue DHCP-Sektion" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:6 +msgid "Please choose one of the following DHCP section types." +msgstr "Bitte verwenden Sie eine der folgenden Typen für DHCP-Sektionen." + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:9 +msgid "Section" +msgstr "Sektion" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:10 +msgid "Choose section type to create" +msgstr "Wählen Sie den zu erzeugenden Sektions-Typ" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:15 +msgid "Create" +msgstr "Erzeugen" + +#: admin/systems/services/dhcp/dhcp_subnet.tpl:32 +msgid "Range for dynamic address assignment" +msgstr "Bereich für dynamische Adresszuweisung" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:13 +msgid "Name for shared network" +msgstr "Name des Verteilten Netzwerks" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:18 +msgid "Server identifier" +msgstr "Serverbezeichnung" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:22 +msgid "Propagated server identifier for this shared network" +msgstr "Öffentliche Serverbezeichnung für dieses Verteilte Netzwerk" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Select if this server is authoritative for this shared network" +msgstr "" +"Auswählen, wenn dieser Server Authoritativ für dieses Verteilte Netzwerk ist" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Authoritative server" +msgstr "Authoritativer Server" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:52 +msgid "Leases" +msgstr "Leases" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +msgid "seconds" +msgstr "Sekunden" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +msgid "Minimum lease time" +msgstr "Minimale Lease-Gültigkeit" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:86 +msgid "Access control" +msgstr "Zugriffskontrolle" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Select if unknown clients should get dynamic IP addresses" +msgstr "" +"Auswählen, wenn unbekannte Clients eine dynamische IP-Adresse erhalten sollen" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Allow unknown clients" +msgstr "Erlaube unbekannte Clients" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Select if bootp clients should get dynamic IP addresses" +msgstr "" +"Auswählen, wenn Bootp Clients eine dynamische IP-Adresse erhalten sollen" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Allow bootp clients" +msgstr "Erlaube Bootp Clients" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Select if clients are allowed to boot using this DHCP server" +msgstr "Auswählen, wenn Clients diesen DHCP-Server zum Booten verwenden dürfen" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Allow booting" +msgstr "Erlaube Booten" + +#: admin/systems/services/dhcp/class_servDHCP.inc:33 +#: admin/systems/services/dhcp/class_servDHCP.inc:692 +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +#: admin/systems/services/dhcp/class_servDHCP.inc:739 +msgid "DHCP service" +msgstr "DHCP Dienst" + +#: admin/systems/services/dhcp/class_servDHCP.inc:35 +msgid "Logging" +msgstr "Protokollierung" + +#: admin/systems/services/dhcp/class_servDHCP.inc:36 +#: admin/systems/services/dhcp/class_servDHCP.inc:301 +#: admin/systems/services/dhcp/class_servDHCP.inc:604 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:26 +msgid "Global options" +msgstr "Globale Optionen" + +#: admin/systems/services/dhcp/class_servDHCP.inc:37 +msgid "Class" +msgstr "Klasse" + +#: admin/systems/services/dhcp/class_servDHCP.inc:38 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:28 +msgid "Subclass" +msgstr "Subklasse" + +#: admin/systems/services/dhcp/class_servDHCP.inc:39 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:29 +msgid "Host" +msgstr "Host" + +#: admin/systems/services/dhcp/class_servDHCP.inc:40 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:30 +msgid "Group" +msgstr "Gruppe" + +#: admin/systems/services/dhcp/class_servDHCP.inc:41 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:31 +msgid "Pool" +msgstr "Vorrat" + +#: admin/systems/services/dhcp/class_servDHCP.inc:42 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:32 +msgid "Subnet" +msgstr "Subnetz" + +#: admin/systems/services/dhcp/class_servDHCP.inc:43 +msgid "Failover peer" +msgstr "Host für Ausfallsicherung" + +#: admin/systems/services/dhcp/class_servDHCP.inc:44 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:33 +msgid "Shared network" +msgstr "Verteiltes Netzwerk" + +#: admin/systems/services/dhcp/class_servDHCP.inc:103 +#, php-format +msgid "" +"You have requested a migration of the DHCP setup from server '%s' to the " +"current one." +msgstr "" +"Sie haben die Migration des DHCP-Setups von Server '%s' auf den aktuellen " +"Server angefordert." + +#: admin/systems/services/dhcp/class_servDHCP.inc:105 +msgid "The migration will be started when you save this system." +msgstr "Die Migratione wird gestartet, wenn Sie dieses System speichern." + +#: admin/systems/services/dhcp/class_servDHCP.inc:222 +msgid "Permission error" +msgstr "Berechtigungsfehler" + +#: admin/systems/services/dhcp/class_servDHCP.inc:256 +msgid "DHCP section" +msgstr "DHCP-Sektion" + +#: admin/systems/services/dhcp/class_servDHCP.inc:325 +#: admin/systems/services/dhcp/class_servDHCP.inc:328 +msgid "Insert new DHCP section" +msgstr "Füge neue DHCP-Sektion ein" + +#: admin/systems/services/dhcp/class_servDHCP.inc:326 +#: admin/systems/services/dhcp/class_servDHCP.inc:329 +#: admin/systems/services/dhcp/class_servDHCP.inc:330 +msgid "Edit DHCP section" +msgstr "Bearbeite DHCP-Sektion" + +#: admin/systems/services/dhcp/class_servDHCP.inc:327 +#: admin/systems/services/dhcp/class_servDHCP.inc:331 +msgid "Remove DHCP section" +msgstr "Entferne DHCP-Sektion" + +#: admin/systems/services/dhcp/class_servDHCP.inc:378 +#: admin/systems/services/dhcp/class_servDHCP.inc:395 +#: admin/systems/services/dhcp/class_servDHCP.inc:450 +#: admin/systems/services/dhcp/class_servDHCP.inc:526 +#: admin/systems/services/dhcp/class_servDHCP.inc:534 +#: admin/systems/services/dhcp/class_servDHCP.inc:561 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +msgid "" +"The DHCP configuration set is unkown. Please contact your system " +"administrator." +msgstr "" +"Der DHCP-Konfigurationssatz ist unbekannt. Bitte benachrichtigen Sie Ihren " +"System-Administrator." + +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/dhcp/class_servDHCP.inc:701 +msgid "Start service" +msgstr "Dienst starten" + +#: admin/systems/services/dhcp/class_servDHCP.inc:702 +msgid "Stop service" +msgstr "Dienst stoppen" + +#: admin/systems/services/dhcp/class_servDHCP.inc:703 +msgid "Restart service" +msgstr "Dienst neustarten" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Cannot delete automatic statements!" +msgstr "Kann automatische Anweisungen nicht entfernen!" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:84 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:93 +msgid "automatic" +msgstr "automatisch" + +#: admin/systems/services/dhcp/dhcp_pool.tpl:9 +msgid "Name of pool" +msgstr "Name des Vorrats" + +#: admin/systems/services/dhcp/dhcp_group.tpl:11 +msgid "Name of group" +msgstr "Name der Gruppe" diff --git a/trunk/gosa-plugins/dhcp/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dhcp/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..c83cab346 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,700 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:65 +#, fuzzy +msgid "Ethernet" +msgstr "intranet" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:66 +msgid "FDDI" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:67 +msgid "Token Ring" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:143 +#: admin/systems/services/dhcp/class_dhcpHost.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:159 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:169 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:187 +#: admin/systems/services/dhcp/dhcp_host.tpl:8 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:10 +#: admin/systems/services/dhcp/class_dhcpPool.inc:113 +#: admin/systems/services/dhcp/class_dhcpPool.inc:121 +#: admin/systems/services/dhcp/dhcp_pool.tpl:6 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:96 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:99 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:107 +#: admin/systems/services/dhcp/dhcp_group.tpl:6 +msgid "Name" +msgstr "Nombre" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:160 +#: admin/systems/services/dhcp/dhcp_host.tpl:41 +#, fuzzy +msgid "Hardware address" +msgstr "Direcciones de reenvío" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:148 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:168 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:8 +msgid "Network address" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:167 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:17 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:16 +#, fuzzy +msgid "Netmask" +msgstr "Netatalk" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:169 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:170 +#: admin/systems/services/dhcp/class_dhcpPool.inc:128 +#: admin/systems/services/dhcp/class_dhcpPool.inc:132 +#: admin/systems/services/dhcp/class_dhcpPool.inc:136 +#: admin/systems/services/dhcp/dhcp_pool.tpl:13 +msgid "Range" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:179 +#, fuzzy +msgid "Network range" +msgstr "Configuración del parámetro" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:185 +#: admin/systems/services/dhcp/class_dhcpPool.inc:150 +#, fuzzy +msgid "'Range' is not inside the configured network." +msgstr "Encontrados '%s' grupos fuera del árbol configurado '%s'." + +#: admin/systems/services/dhcp/class_dhcpService.inc:145 +#, fuzzy +msgid "Lease time" +msgstr "Máximo tamaño de mensaje" + +#: admin/systems/services/dhcp/class_dhcpService.inc:148 +#, fuzzy +msgid "Max lease time" +msgstr "Máximo tamaño de mensaje" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:173 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:55 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#, fuzzy +msgid "Default lease time" +msgstr "Valor por defecto" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#, fuzzy +msgid "Maximum lease time" +msgstr "Tamaño máximo del archivo" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Error" +msgstr "Error" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:25 +msgid "Broadcast" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:218 +#, php-format +msgid "Error in definition of '%s'!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:174 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:64 +#, fuzzy +msgid "Max. lease time" +msgstr "Máximo tamaño de mensaje" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:175 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:73 +msgid "Min. lease time" +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:2 +#: admin/systems/services/dhcp/class_servDHCP.inc:108 +msgid "Warning" +msgstr "Aviso" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:6 +msgid "" +"This includes 'all' DHCP subsections that are located within this section. " +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"La mejor opción antes de ejecutar esta acción es haber grabado el contenido " +"actual de su árbol LDAP en un fichero. Entonces - Y solo entonces - presione " +"'Eliminar' para continuar o 'Cancelar' para abortar." + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:8 +#, fuzzy +msgid "Hide advanced settings" +msgstr "Parámetros de Netatalk" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:15 +#, fuzzy +msgid "DHCP statements" +msgstr "Departamentos" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:36 +#, fuzzy +msgid "DHCP options" +msgstr "Crear opciones" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:59 +#, fuzzy +msgid "Show advanced settings" +msgstr "Parametros de samba" + +#: admin/systems/services/dhcp/dhcp_host.tpl:2 +#: admin/systems/services/dhcp/dhcp_service.tpl:1 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:2 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:2 +#: admin/systems/services/dhcp/dhcp_pool.tpl:2 +#: admin/systems/services/dhcp/dhcp_group.tpl:2 +msgid "Generic" +msgstr "Genérico" + +#: admin/systems/services/dhcp/dhcp_host.tpl:12 +msgid "Name of host" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:17 +#, fuzzy +msgid "Fixed address" +msgstr "Dirección correo electrónico" + +#: admin/systems/services/dhcp/dhcp_host.tpl:22 +msgid "Use hostname or IP-address to assign fixed address" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:31 +msgid "Hardware type" +msgstr "Tipo de hardware" + +#: admin/systems/services/dhcp/dhcp_service.tpl:7 +#, fuzzy +msgid "Authoritative service" +msgstr "Servicio de la estación de trabajo" + +#: admin/systems/services/dhcp/dhcp_service.tpl:10 +msgid "Dynamic DNS update" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:12 +msgid "Dynamic DNS update style" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:22 +msgid "Default lease time (s)" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:25 +msgid "Enter default lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:30 +#, fuzzy +msgid "Maximum lease time (s)" +msgstr "Tamaño máximo del archivo" + +#: admin/systems/services/dhcp/dhcp_service.tpl:33 +msgid "Enter maximum lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:5 +msgid "" +"DHCP take over will take place when saving this entry. Choose 'Cancel' to " +"abort." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:14 +msgid "Take over dhcp configuration from following server" +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:24 +#, fuzzy +msgid "DHCP sections" +msgstr "Inspección LDAP" + +#: admin/systems/services/dhcp/dhcp_network.tpl:5 +#, fuzzy +msgid "Network configuration" +msgstr "Configuración del parámetro" + +#: admin/systems/services/dhcp/dhcp_network.tpl:8 +#, fuzzy +msgid "Router" +msgstr "País" + +#: admin/systems/services/dhcp/dhcp_network.tpl:12 +msgid "Enter name or IP address of router to be used in this section" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:35 +#, fuzzy +msgid "Bootup" +msgstr "Raíz" + +#: admin/systems/services/dhcp/dhcp_network.tpl:38 +msgid "Filename" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:42 +msgid "" +"Enter name of file that will be loaded via tftp after client has started" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:47 +#, fuzzy +msgid "Next server" +msgstr "Servidor NTP" + +#: admin/systems/services/dhcp/dhcp_network.tpl:51 +msgid "Enter name of server to retrieve bootimages from" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:59 +#, fuzzy +msgid "Domain Name Service" +msgstr "Servicio Horario" + +#: admin/systems/services/dhcp/dhcp_network.tpl:62 +msgid "Domain" +msgstr "Dominio" + +#: admin/systems/services/dhcp/dhcp_network.tpl:66 +#, fuzzy +msgid "Name of domain" +msgstr "Postfix mydomain" + +#: admin/systems/services/dhcp/dhcp_network.tpl:73 +#, fuzzy +msgid "DNS server" +msgstr "Servicio DNS" + +#: admin/systems/services/dhcp/dhcp_network.tpl:75 +msgid "List of DNS servers to be propagated" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:81 +#, fuzzy +msgid "DNS server do be added" +msgstr "Servidor de registro de sistema activado" + +#: admin/systems/services/dhcp/dhcp_network.tpl:84 +msgid "Click here add the selected server to the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:87 +msgid "Click here remove the selected servers from the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:93 +#, fuzzy +msgid "Domain Name Service options" +msgstr "Administradores del dominio" + +#: admin/systems/services/dhcp/dhcp_network.tpl:95 +msgid "Assign hostnames found via reverse mapping" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:99 +msgid "Assign hostnames from host declarations" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:2 +#, fuzzy +msgid "Create new DHCP section" +msgstr "Crear nueva aplicación" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:6 +msgid "Please choose one of the following DHCP section types." +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:9 +msgid "Section" +msgstr "Sección" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:10 +msgid "Choose section type to create" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:15 +msgid "Create" +msgstr "Crear" + +#: admin/systems/services/dhcp/dhcp_subnet.tpl:32 +msgid "Range for dynamic address assignment" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:13 +#, fuzzy +msgid "Name for shared network" +msgstr "Redes de confianza" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:18 +msgid "Server identifier" +msgstr "Identificador de servidor" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:22 +msgid "Propagated server identifier for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Select if this server is authoritative for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +#, fuzzy +msgid "Authoritative server" +msgstr "Servicio de la estación de trabajo" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:52 +#, fuzzy +msgid "Leases" +msgstr "Versiones" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "seconds" +msgstr "Secciones" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "Minimum lease time" +msgstr "Tamaño máximo del archivo" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:86 +msgid "Access control" +msgstr "Control de acceso" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Select if unknown clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +#, fuzzy +msgid "Allow unknown clients" +msgstr "¡id desconocido!" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Select if bootp clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Allow bootp clients" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Select if clients are allowed to boot using this DHCP server" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Allow booting" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:33 +#: admin/systems/services/dhcp/class_servDHCP.inc:692 +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +#: admin/systems/services/dhcp/class_servDHCP.inc:739 +#, fuzzy +msgid "DHCP service" +msgstr "Añadir servicio DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:35 +#, fuzzy +msgid "Logging" +msgstr "Servicio de Registro de sistema" + +#: admin/systems/services/dhcp/class_servDHCP.inc:36 +#: admin/systems/services/dhcp/class_servDHCP.inc:301 +#: admin/systems/services/dhcp/class_servDHCP.inc:604 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:26 +#, fuzzy +msgid "Global options" +msgstr "Eliminar opciones" + +#: admin/systems/services/dhcp/class_servDHCP.inc:37 +msgid "Class" +msgstr "Clase" + +#: admin/systems/services/dhcp/class_servDHCP.inc:38 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:28 +#, fuzzy +msgid "Subclass" +msgstr "Clase" + +#: admin/systems/services/dhcp/class_servDHCP.inc:39 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:29 +#, fuzzy +msgid "Host" +msgstr "enviar" + +#: admin/systems/services/dhcp/class_servDHCP.inc:40 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:30 +msgid "Group" +msgstr "Grupo" + +#: admin/systems/services/dhcp/class_servDHCP.inc:41 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:31 +msgid "Pool" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:42 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:32 +#, fuzzy +msgid "Subnet" +msgstr "Enviar" + +#: admin/systems/services/dhcp/class_servDHCP.inc:43 +msgid "Failover peer" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:44 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:33 +#, fuzzy +msgid "Shared network" +msgstr "Redes de confianza" + +#: admin/systems/services/dhcp/class_servDHCP.inc:103 +#, php-format +msgid "" +"You have requested a migration of the DHCP setup from server '%s' to the " +"current one." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:105 +msgid "The migration will be started when you save this system." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:222 +#, fuzzy +msgid "Permission error" +msgstr "Permisos" + +#: admin/systems/services/dhcp/class_servDHCP.inc:256 +#, fuzzy +msgid "DHCP section" +msgstr "Inspección LDAP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:325 +#: admin/systems/services/dhcp/class_servDHCP.inc:328 +msgid "Insert new DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:326 +#: admin/systems/services/dhcp/class_servDHCP.inc:329 +#: admin/systems/services/dhcp/class_servDHCP.inc:330 +#, fuzzy +msgid "Edit DHCP section" +msgstr "Inspección LDAP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:327 +#: admin/systems/services/dhcp/class_servDHCP.inc:331 +#, fuzzy +msgid "Remove DHCP section" +msgstr "Eliminar servicio DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:378 +#: admin/systems/services/dhcp/class_servDHCP.inc:395 +#: admin/systems/services/dhcp/class_servDHCP.inc:450 +#: admin/systems/services/dhcp/class_servDHCP.inc:526 +#: admin/systems/services/dhcp/class_servDHCP.inc:534 +#: admin/systems/services/dhcp/class_servDHCP.inc:561 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +msgid "" +"The DHCP configuration set is unkown. Please contact your system " +"administrator." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/dhcp/class_servDHCP.inc:701 +#, fuzzy +msgid "Start service" +msgstr "Servicios" + +#: admin/systems/services/dhcp/class_servDHCP.inc:702 +#, fuzzy +msgid "Stop service" +msgstr "Servicios" + +#: admin/systems/services/dhcp/class_servDHCP.inc:703 +#, fuzzy +msgid "Restart service" +msgstr "Servidor NTP" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Cannot delete automatic statements!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:84 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:93 +msgid "automatic" +msgstr "automático" + +#: admin/systems/services/dhcp/dhcp_pool.tpl:9 +msgid "Name of pool" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_group.tpl:11 +#, fuzzy +msgid "Name of group" +msgstr "Grupo Nagios" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Servicios" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Servicios" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Servicios" + +#, fuzzy +#~ msgid "May lease time" +#~ msgstr "Máximo tamaño de mensaje" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Required field 'Name' is not filled." +#~ msgstr "No ha introducido el campo obligatorio 'Nombre'." + +#, fuzzy +#~ msgid "The value specified as '%s' is not numeric!" +#~ msgstr "¡El valor especificado como '%s' contiene caracteres no validos!" + +#, fuzzy +#~ msgid "The name for this host section is already used!" +#~ msgstr "" +#~ "El cambio de nombre ha fallado, ha introducido uno que ya está siendo " +#~ "usado." + +#~ msgid "Delete" +#~ msgstr "Eliminar" + +#, fuzzy +#~ msgid "The name for this section is already used!" +#~ msgstr "" +#~ "El cambio de nombre ha fallado, ha introducido uno que ya está siendo " +#~ "usado." + +#, fuzzy +#~ msgid "Required field 'Range' is not filled." +#~ msgstr "No ha introducido el campo obligatorio 'Nombre'." + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP addresses." +#~ msgstr "El campo 'Nombre' no tiene caracteres validos." + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP range." +#~ msgstr "El campo 'Nombre' no tiene caracteres validos." + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#, fuzzy +#~ msgid "Required field 'Network address' is not filled." +#~ msgstr "No ha introducido el campo obligatorio 'Nombre'." + +#, fuzzy +#~ msgid "Required field 'Netmask' is not filled." +#~ msgstr "No ha introducido el campo obligatorio 'Nombre'." + +#, fuzzy +#~ msgid "The field '%s' contains an invalid IP address" +#~ msgstr "El campo 'Dirección IP' tiene una dirección no valida." + +#, fuzzy +#~ msgid "Field 'Name' contains illegal characters." +#~ msgstr "El campo 'Nombre' no tiene caracteres validos." + +#, fuzzy +#~ msgid "The hardware address specified by you is not valid!" +#~ msgstr "El valor especificado como 'UID' no es valido." + +#, fuzzy +#~ msgid "Default lease time needs to be numeric." +#~ msgstr "El puerto sieve necesita ser un numero." + +#, fuzzy +#~ msgid "Maximum lease time needs to be numeric." +#~ msgstr "El puerto sieve necesita ser un numero." + +#, fuzzy +#~ msgid "You have no permission to remove DHCP sections!" +#~ msgstr "No le está permitido eliminar este usuario." + +#, fuzzy +#~ msgid "You're about to delete the DHCP section '%s'." +#~ msgstr "Has decidido eliminar la aplicación '%s'." + +#, fuzzy +#~ msgid "Removing DHCP entries failed" +#~ msgstr "Ha fallado la eliminación del antiguo archivo ppd'%s'." + +#, fuzzy +#~ msgid "Can't remove DHCP object!" +#~ msgstr "No puedo encontrar el nombre de objeto " + +#, fuzzy +#~ msgid "Saving DHCP service failed" +#~ msgstr "Eliminar servicio DHCP" diff --git a/trunk/gosa-plugins/dhcp/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dhcp/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..281518de5 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,554 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-12-03 23:24+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:65 +msgid "Ethernet" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:66 +msgid "FDDI" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:67 +msgid "Token Ring" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:143 +#: admin/systems/services/dhcp/class_dhcpHost.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:159 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:169 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:187 +#: admin/systems/services/dhcp/dhcp_host.tpl:8 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:10 +#: admin/systems/services/dhcp/class_dhcpPool.inc:113 +#: admin/systems/services/dhcp/class_dhcpPool.inc:121 +#: admin/systems/services/dhcp/dhcp_pool.tpl:6 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:96 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:99 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:107 +#: admin/systems/services/dhcp/dhcp_group.tpl:6 +msgid "Name" +msgstr "Nom" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:160 +#: admin/systems/services/dhcp/dhcp_host.tpl:41 +msgid "Hardware address" +msgstr "Adresse hardware" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:148 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:168 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:8 +msgid "Network address" +msgstr "Adresse réseau" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:167 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:17 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:16 +msgid "Netmask" +msgstr "Masque réseau" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:169 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:170 +#: admin/systems/services/dhcp/class_dhcpPool.inc:128 +#: admin/systems/services/dhcp/class_dhcpPool.inc:132 +#: admin/systems/services/dhcp/class_dhcpPool.inc:136 +#: admin/systems/services/dhcp/dhcp_pool.tpl:13 +msgid "Range" +msgstr "Etendue" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:179 +msgid "Network range" +msgstr "Etendue réseau" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:185 +#: admin/systems/services/dhcp/class_dhcpPool.inc:150 +msgid "'Range' is not inside the configured network." +msgstr "L'étendue réseau n'est pas comprise dans le réseau configuré." + +#: admin/systems/services/dhcp/class_dhcpService.inc:145 +msgid "Lease time" +msgstr "Bail" + +#: admin/systems/services/dhcp/class_dhcpService.inc:148 +msgid "Max lease time" +msgstr "Temps maximum du bail" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:173 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:55 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +msgid "Default lease time" +msgstr "Bail par défaut" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +msgid "Maximum lease time" +msgstr "Temps maximum du bail" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Error" +msgstr "Erreur" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:25 +msgid "Broadcast" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:218 +#, php-format +msgid "Error in definition of '%s'!" +msgstr "Erreur lors de la définition de '%s' !" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:174 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:64 +msgid "Max. lease time" +msgstr "Temps maximum du bail" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:175 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:73 +msgid "Min. lease time" +msgstr "Temps minimum du bail" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:2 +#: admin/systems/services/dhcp/class_servDHCP.inc:108 +msgid "Warning" +msgstr "Avertissement" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:6 +msgid "" +"This includes 'all' DHCP subsections that are located within this section. " +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Ceci inclut toutes les sous sections DHCP qui sont dans cette section. " +"Veuillez vérifier que vous voulez effectuer cette opération, étant donné " +"qu'il est impossible pour GOsa de récupérer vos données." + +#: admin/systems/services/dhcp/remove_dhcp.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Il est conseillé de sauvegarder l'arbre de votre annuaire LDAP dans un " +"fichier avant de réaliser cette action. Appuyez sur 'Supprimer' pour " +"continuer ou 'Annuler' pour abandonner." + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:8 +msgid "Hide advanced settings" +msgstr "Cacher la configuration avancée" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:15 +msgid "DHCP statements" +msgstr "Directives DHCP" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:36 +msgid "DHCP options" +msgstr "Options dhcp" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:59 +msgid "Show advanced settings" +msgstr "Afficher la configuration avancée" + +#: admin/systems/services/dhcp/dhcp_host.tpl:2 +#: admin/systems/services/dhcp/dhcp_service.tpl:1 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:2 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:2 +#: admin/systems/services/dhcp/dhcp_pool.tpl:2 +#: admin/systems/services/dhcp/dhcp_group.tpl:2 +msgid "Generic" +msgstr "Informations" + +#: admin/systems/services/dhcp/dhcp_host.tpl:12 +msgid "Name of host" +msgstr "Nom de l'hôte" + +#: admin/systems/services/dhcp/dhcp_host.tpl:17 +msgid "Fixed address" +msgstr "Adresse fixe" + +#: admin/systems/services/dhcp/dhcp_host.tpl:22 +msgid "Use hostname or IP-address to assign fixed address" +msgstr "" +"Utiliser le nom de l'hôte ou de l'adresse ip pour assigner une adresse fixe" + +#: admin/systems/services/dhcp/dhcp_host.tpl:31 +msgid "Hardware type" +msgstr "Type de matériel" + +#: admin/systems/services/dhcp/dhcp_service.tpl:7 +msgid "Authoritative service" +msgstr "Service autoritatif" + +#: admin/systems/services/dhcp/dhcp_service.tpl:10 +msgid "Dynamic DNS update" +msgstr "Mise à jour dynamique du DNS" + +#: admin/systems/services/dhcp/dhcp_service.tpl:12 +msgid "Dynamic DNS update style" +msgstr "Style de mise à jour dynamique du DNS" + +#: admin/systems/services/dhcp/dhcp_service.tpl:22 +msgid "Default lease time (s)" +msgstr "Temps par défaut pour le bail" + +#: admin/systems/services/dhcp/dhcp_service.tpl:25 +msgid "Enter default lease time in seconds." +msgstr "Entrer le temps par défaut du bail en secondes" + +#: admin/systems/services/dhcp/dhcp_service.tpl:30 +msgid "Maximum lease time (s)" +msgstr "Temps maximum du bail" + +#: admin/systems/services/dhcp/dhcp_service.tpl:33 +msgid "Enter maximum lease time in seconds." +msgstr "Entrer le temps maximum du bail en secondes" + +#: admin/systems/services/dhcp/servdhcp.tpl:5 +msgid "" +"DHCP take over will take place when saving this entry. Choose 'Cancel' to " +"abort." +msgstr "" +"La prise de contrôle du DHCP s'exécutera quand vous sauverez cette entrée. " +"Choisissez 'Annuler' pour l'annuler." + +#: admin/systems/services/dhcp/servdhcp.tpl:14 +msgid "Take over dhcp configuration from following server" +msgstr "Prendre le contrôle de la configuration DHCP du serveur suivant" + +#: admin/systems/services/dhcp/servdhcp.tpl:24 +msgid "DHCP sections" +msgstr "Sections DHCP" + +#: admin/systems/services/dhcp/dhcp_network.tpl:5 +msgid "Network configuration" +msgstr "Configuration réseau" + +#: admin/systems/services/dhcp/dhcp_network.tpl:8 +msgid "Router" +msgstr "Router" + +#: admin/systems/services/dhcp/dhcp_network.tpl:12 +msgid "Enter name or IP address of router to be used in this section" +msgstr "" +"Entrez le nom ou l'adresse ip du router qui doit être utilisé dans cette " +"section" + +#: admin/systems/services/dhcp/dhcp_network.tpl:35 +msgid "Bootup" +msgstr "Démarrage" + +#: admin/systems/services/dhcp/dhcp_network.tpl:38 +msgid "Filename" +msgstr "Nom du fichier" + +#: admin/systems/services/dhcp/dhcp_network.tpl:42 +msgid "" +"Enter name of file that will be loaded via tftp after client has started" +msgstr "" +"Entrez le nom du fichier qui doit être chargé via tftp après que le client " +"aie démarré" + +#: admin/systems/services/dhcp/dhcp_network.tpl:47 +msgid "Next server" +msgstr "Serveur suivant" + +#: admin/systems/services/dhcp/dhcp_network.tpl:51 +msgid "Enter name of server to retrieve bootimages from" +msgstr "Entrez le nom du serveur qui contient les images de démarrage" + +#: admin/systems/services/dhcp/dhcp_network.tpl:59 +msgid "Domain Name Service" +msgstr "Service DNS" + +#: admin/systems/services/dhcp/dhcp_network.tpl:62 +msgid "Domain" +msgstr "Domaine" + +#: admin/systems/services/dhcp/dhcp_network.tpl:66 +msgid "Name of domain" +msgstr "Nom du domaine" + +#: admin/systems/services/dhcp/dhcp_network.tpl:73 +msgid "DNS server" +msgstr "Serveur DNS" + +#: admin/systems/services/dhcp/dhcp_network.tpl:75 +msgid "List of DNS servers to be propagated" +msgstr "Liste des serveurs dns à propager" + +#: admin/systems/services/dhcp/dhcp_network.tpl:81 +msgid "DNS server do be added" +msgstr "Serveur DNS à ajouter" + +#: admin/systems/services/dhcp/dhcp_network.tpl:84 +msgid "Click here add the selected server to the list" +msgstr "Cliquez ici pour ajouter les serveurs sélectionnés à la liste" + +#: admin/systems/services/dhcp/dhcp_network.tpl:87 +msgid "Click here remove the selected servers from the list" +msgstr "Cliquez ici pour enlever les serveurs sélectionnées de la liste" + +#: admin/systems/services/dhcp/dhcp_network.tpl:93 +msgid "Domain Name Service options" +msgstr "Options du serveur DNS" + +#: admin/systems/services/dhcp/dhcp_network.tpl:95 +msgid "Assign hostnames found via reverse mapping" +msgstr "Assigner les nom trouvés avec un lookup inverse" + +#: admin/systems/services/dhcp/dhcp_network.tpl:99 +msgid "Assign hostnames from host declarations" +msgstr "Attribuer les nom d'hôtes grâce au déclarations des hôtes" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:2 +msgid "Create new DHCP section" +msgstr "Créer une nouvelle section DHCP" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:6 +msgid "Please choose one of the following DHCP section types." +msgstr "Veuillez choisir une des sections DHCP suivantes." + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:9 +msgid "Section" +msgstr "Section" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:10 +msgid "Choose section type to create" +msgstr "Choisissez le type de section à créer" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:15 +msgid "Create" +msgstr "Créer" + +#: admin/systems/services/dhcp/dhcp_subnet.tpl:32 +msgid "Range for dynamic address assignment" +msgstr "Intervalle pour l'affectation d'adresses dynamique" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:13 +msgid "Name for shared network" +msgstr "Nom du réseau partagé" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:18 +msgid "Server identifier" +msgstr "Identifiant du serveur" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:22 +msgid "Propagated server identifier for this shared network" +msgstr "Identifiant de serveur propagé pour ce réseau partagé" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Select if this server is authoritative for this shared network" +msgstr "Sélectionnez si ce serveur doit être autoritaire pour ce réseau" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Authoritative server" +msgstr "Serveur autoritatif" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:52 +msgid "Leases" +msgstr "Bail" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +msgid "seconds" +msgstr "secondes" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +msgid "Minimum lease time" +msgstr "Temps minimum du bail" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:86 +msgid "Access control" +msgstr "Contrôle d'accès" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Select if unknown clients should get dynamic IP addresses" +msgstr "" +"Sélectionner si les clients inconnus doivent recevoir une adresse ip " +"dynamique" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Allow unknown clients" +msgstr "Accepter les clients inconnus" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Select if bootp clients should get dynamic IP addresses" +msgstr "" +"Sélectionner si les clients bootp doivent recevoir une adresse ip dynamique" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Allow bootp clients" +msgstr "Accepter les clients bootp" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Select if clients are allowed to boot using this DHCP server" +msgstr "Sélectionner si les clients sont autorisés à utiliser ce serveur dhcp" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Allow booting" +msgstr "Permettre le démarrage" + +#: admin/systems/services/dhcp/class_servDHCP.inc:33 +#: admin/systems/services/dhcp/class_servDHCP.inc:692 +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +#: admin/systems/services/dhcp/class_servDHCP.inc:739 +msgid "DHCP service" +msgstr "Service DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:35 +msgid "Logging" +msgstr "Journaux systèmes" + +#: admin/systems/services/dhcp/class_servDHCP.inc:36 +#: admin/systems/services/dhcp/class_servDHCP.inc:301 +#: admin/systems/services/dhcp/class_servDHCP.inc:604 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:26 +msgid "Global options" +msgstr "Options Globales" + +#: admin/systems/services/dhcp/class_servDHCP.inc:37 +msgid "Class" +msgstr "Classe" + +#: admin/systems/services/dhcp/class_servDHCP.inc:38 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:28 +msgid "Subclass" +msgstr "sous classe" + +#: admin/systems/services/dhcp/class_servDHCP.inc:39 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:29 +msgid "Host" +msgstr "Hôte" + +#: admin/systems/services/dhcp/class_servDHCP.inc:40 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:30 +msgid "Group" +msgstr "Groupes" + +#: admin/systems/services/dhcp/class_servDHCP.inc:41 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:31 +msgid "Pool" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:42 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:32 +msgid "Subnet" +msgstr "Sous réseau" + +#: admin/systems/services/dhcp/class_servDHCP.inc:43 +msgid "Failover peer" +msgstr "Partenaire pour la prise de contrôle" + +#: admin/systems/services/dhcp/class_servDHCP.inc:44 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:33 +msgid "Shared network" +msgstr "Réseaux partagés" + +#: admin/systems/services/dhcp/class_servDHCP.inc:103 +#, php-format +msgid "" +"You have requested a migration of the DHCP setup from server '%s' to the " +"current one." +msgstr "" +"Vous avez demandé la migration du serveur DHCP depuis le serveur '%s' vers " +"le serveur actuel." + +#: admin/systems/services/dhcp/class_servDHCP.inc:105 +msgid "The migration will be started when you save this system." +msgstr "La migration sera démarrée lorsque vous sauverez ce système." + +#: admin/systems/services/dhcp/class_servDHCP.inc:222 +msgid "Permission error" +msgstr "Erreur de permissions" + +#: admin/systems/services/dhcp/class_servDHCP.inc:256 +msgid "DHCP section" +msgstr "Section DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:325 +#: admin/systems/services/dhcp/class_servDHCP.inc:328 +msgid "Insert new DHCP section" +msgstr "Insérer une nouvelle section DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:326 +#: admin/systems/services/dhcp/class_servDHCP.inc:329 +#: admin/systems/services/dhcp/class_servDHCP.inc:330 +msgid "Edit DHCP section" +msgstr "Editer une section DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:327 +#: admin/systems/services/dhcp/class_servDHCP.inc:331 +msgid "Remove DHCP section" +msgstr "Suppression d'une section DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:378 +#: admin/systems/services/dhcp/class_servDHCP.inc:395 +#: admin/systems/services/dhcp/class_servDHCP.inc:450 +#: admin/systems/services/dhcp/class_servDHCP.inc:526 +#: admin/systems/services/dhcp/class_servDHCP.inc:534 +#: admin/systems/services/dhcp/class_servDHCP.inc:561 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +msgid "" +"The DHCP configuration set is unkown. Please contact your system " +"administrator." +msgstr "" +"La configuration DHCP est inconnue. Veuillez contacter votre administrateur " +"système." + +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/dhcp/class_servDHCP.inc:701 +msgid "Start service" +msgstr "Démarrer le service" + +#: admin/systems/services/dhcp/class_servDHCP.inc:702 +msgid "Stop service" +msgstr "Arrêter le service" + +#: admin/systems/services/dhcp/class_servDHCP.inc:703 +msgid "Restart service" +msgstr "Redémarrer le service" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Cannot delete automatic statements!" +msgstr "Impossible d'effacer les déclarations automatiques !" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:84 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:93 +msgid "automatic" +msgstr "automatique" + +#: admin/systems/services/dhcp/dhcp_pool.tpl:9 +msgid "Name of pool" +msgstr "Nom du pool d'adresses" + +#: admin/systems/services/dhcp/dhcp_group.tpl:11 +msgid "Name of group" +msgstr "Nom du groupe" diff --git a/trunk/gosa-plugins/dhcp/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dhcp/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..fdf7f24ae --- /dev/null +++ b/trunk/gosa-plugins/dhcp/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,694 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:65 +#, fuzzy +msgid "Ethernet" +msgstr "Filtri" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:66 +msgid "FDDI" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:67 +msgid "Token Ring" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:143 +#: admin/systems/services/dhcp/class_dhcpHost.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:159 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:169 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:187 +#: admin/systems/services/dhcp/dhcp_host.tpl:8 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:10 +#: admin/systems/services/dhcp/class_dhcpPool.inc:113 +#: admin/systems/services/dhcp/class_dhcpPool.inc:121 +#: admin/systems/services/dhcp/dhcp_pool.tpl:6 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:96 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:99 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:107 +#: admin/systems/services/dhcp/dhcp_group.tpl:6 +msgid "Name" +msgstr "Cognome" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:160 +#: admin/systems/services/dhcp/dhcp_host.tpl:41 +#, fuzzy +msgid "Hardware address" +msgstr "Indirizzo principale" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:148 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:168 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:8 +#, fuzzy +msgid "Network address" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:167 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:17 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:16 +msgid "Netmask" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:169 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:170 +#: admin/systems/services/dhcp/class_dhcpPool.inc:128 +#: admin/systems/services/dhcp/class_dhcpPool.inc:132 +#: admin/systems/services/dhcp/class_dhcpPool.inc:136 +#: admin/systems/services/dhcp/dhcp_pool.tpl:13 +#, fuzzy +msgid "Range" +msgstr "Nome gruppo" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:179 +#, fuzzy +msgid "Network range" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:185 +#: admin/systems/services/dhcp/class_dhcpPool.inc:150 +#, fuzzy +msgid "'Range' is not inside the configured network." +msgstr "Non hai il permesso di cambiare la tua password." + +#: admin/systems/services/dhcp/class_dhcpService.inc:145 +#, fuzzy +msgid "Lease time" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/dhcp/class_dhcpService.inc:148 +#, fuzzy +msgid "Max lease time" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:173 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:55 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#, fuzzy +msgid "Default lease time" +msgstr "Rimuovi" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#, fuzzy +msgid "Maximum lease time" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Error" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:25 +msgid "Broadcast" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:218 +#, php-format +msgid "Error in definition of '%s'!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:174 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:64 +#, fuzzy +msgid "Max. lease time" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:175 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:73 +msgid "Min. lease time" +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:2 +#: admin/systems/services/dhcp/class_servDHCP.inc:108 +msgid "Warning" +msgstr "Attenzione" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:6 +msgid "" +"This includes 'all' DHCP subsections that are located within this section. " +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:8 +#, fuzzy +msgid "Hide advanced settings" +msgstr "Opzioni di posta avanzate" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:15 +#, fuzzy +msgid "DHCP statements" +msgstr "Dipartimenti" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:36 +#, fuzzy +msgid "DHCP options" +msgstr "Opzioni" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:59 +#, fuzzy +msgid "Show advanced settings" +msgstr "Opzioni di posta avanzate" + +#: admin/systems/services/dhcp/dhcp_host.tpl:2 +#: admin/systems/services/dhcp/dhcp_service.tpl:1 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:2 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:2 +#: admin/systems/services/dhcp/dhcp_pool.tpl:2 +#: admin/systems/services/dhcp/dhcp_group.tpl:2 +msgid "Generic" +msgstr "Generale" + +#: admin/systems/services/dhcp/dhcp_host.tpl:12 +#, fuzzy +msgid "Name of host" +msgstr "Nome del gruppo" + +#: admin/systems/services/dhcp/dhcp_host.tpl:17 +#, fuzzy +msgid "Fixed address" +msgstr "Indirizzo principale" + +#: admin/systems/services/dhcp/dhcp_host.tpl:22 +msgid "Use hostname or IP-address to assign fixed address" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:31 +msgid "Hardware type" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:7 +#, fuzzy +msgid "Authoritative service" +msgstr "server" + +#: admin/systems/services/dhcp/dhcp_service.tpl:10 +msgid "Dynamic DNS update" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:12 +msgid "Dynamic DNS update style" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:22 +msgid "Default lease time (s)" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:25 +msgid "Enter default lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:30 +#, fuzzy +msgid "Maximum lease time (s)" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/dhcp/dhcp_service.tpl:33 +msgid "Enter maximum lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:5 +msgid "" +"DHCP take over will take place when saving this entry. Choose 'Cancel' to " +"abort." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:14 +msgid "Take over dhcp configuration from following server" +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:24 +#, fuzzy +msgid "DHCP sections" +msgstr "Ispezione della configurazione PHP" + +#: admin/systems/services/dhcp/dhcp_network.tpl:5 +#, fuzzy +msgid "Network configuration" +msgstr "Scarica il file di configurazione" + +#: admin/systems/services/dhcp/dhcp_network.tpl:8 +#, fuzzy +msgid "Router" +msgstr "Computer" + +#: admin/systems/services/dhcp/dhcp_network.tpl:12 +msgid "Enter name or IP address of router to be used in this section" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:35 +#, fuzzy +msgid "Bootup" +msgstr "Root" + +#: admin/systems/services/dhcp/dhcp_network.tpl:38 +#, fuzzy +msgid "Filename" +msgstr "Cognome" + +#: admin/systems/services/dhcp/dhcp_network.tpl:42 +msgid "" +"Enter name of file that will be loaded via tftp after client has started" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:47 +#, fuzzy +msgid "Next server" +msgstr "Servizi" + +#: admin/systems/services/dhcp/dhcp_network.tpl:51 +msgid "Enter name of server to retrieve bootimages from" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:59 +#, fuzzy +msgid "Domain Name Service" +msgstr "Utenti di Dominio" + +#: admin/systems/services/dhcp/dhcp_network.tpl:62 +msgid "Domain" +msgstr "Dominio" + +#: admin/systems/services/dhcp/dhcp_network.tpl:66 +#, fuzzy +msgid "Name of domain" +msgstr "Crea in" + +#: admin/systems/services/dhcp/dhcp_network.tpl:73 +#, fuzzy +msgid "DNS server" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/dhcp/dhcp_network.tpl:75 +msgid "List of DNS servers to be propagated" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:81 +#, fuzzy +msgid "DNS server do be added" +msgstr "Seleziona il numero da aggiungere" + +#: admin/systems/services/dhcp/dhcp_network.tpl:84 +msgid "Click here add the selected server to the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:87 +msgid "Click here remove the selected servers from the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:93 +#, fuzzy +msgid "Domain Name Service options" +msgstr "Amministratori di Dominio" + +#: admin/systems/services/dhcp/dhcp_network.tpl:95 +msgid "Assign hostnames found via reverse mapping" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:99 +msgid "Assign hostnames from host declarations" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:2 +#, fuzzy +msgid "Create new DHCP section" +msgstr "Crea estensioni per le applicazioni" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:6 +msgid "Please choose one of the following DHCP section types." +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:9 +#, fuzzy +msgid "Section" +msgstr "Azione" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:10 +msgid "Choose section type to create" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:15 +msgid "Create" +msgstr "Creare" + +#: admin/systems/services/dhcp/dhcp_subnet.tpl:32 +msgid "Range for dynamic address assignment" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:13 +#, fuzzy +msgid "Name for shared network" +msgstr "Impostazioni Unix" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:18 +msgid "Server identifier" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:22 +msgid "Propagated server identifier for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Select if this server is authoritative for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +#, fuzzy +msgid "Authoritative server" +msgstr "server" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:52 +#, fuzzy +msgid "Leases" +msgstr "Rimuovi" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "seconds" +msgstr "invia" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "Minimum lease time" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:86 +#, fuzzy +msgid "Access control" +msgstr "Opzioni di accesso" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Select if unknown clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Allow unknown clients" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Select if bootp clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Allow bootp clients" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Select if clients are allowed to boot using this DHCP server" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Allow booting" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:33 +#: admin/systems/services/dhcp/class_servDHCP.inc:692 +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +#: admin/systems/services/dhcp/class_servDHCP.inc:739 +#, fuzzy +msgid "DHCP service" +msgstr "Dispositivi" + +#: admin/systems/services/dhcp/class_servDHCP.inc:35 +#, fuzzy +msgid "Logging" +msgstr "Nome utente" + +#: admin/systems/services/dhcp/class_servDHCP.inc:36 +#: admin/systems/services/dhcp/class_servDHCP.inc:301 +#: admin/systems/services/dhcp/class_servDHCP.inc:604 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:26 +#, fuzzy +msgid "Global options" +msgstr "Opzioni di posta" + +#: admin/systems/services/dhcp/class_servDHCP.inc:37 +#, fuzzy +msgid "Class" +msgstr "classe" + +#: admin/systems/services/dhcp/class_servDHCP.inc:38 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:28 +#, fuzzy +msgid "Subclass" +msgstr "classe" + +#: admin/systems/services/dhcp/class_servDHCP.inc:39 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:29 +#, fuzzy +msgid "Host" +msgstr "spedire" + +#: admin/systems/services/dhcp/class_servDHCP.inc:40 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:30 +msgid "Group" +msgstr "Gruppo" + +#: admin/systems/services/dhcp/class_servDHCP.inc:41 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:31 +#, fuzzy +msgid "Pool" +msgstr "Inglese" + +#: admin/systems/services/dhcp/class_servDHCP.inc:42 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:32 +#, fuzzy +msgid "Subnet" +msgstr "Imposta" + +#: admin/systems/services/dhcp/class_servDHCP.inc:43 +#, fuzzy +msgid "Failover peer" +msgstr "Filtri" + +#: admin/systems/services/dhcp/class_servDHCP.inc:44 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:33 +#, fuzzy +msgid "Shared network" +msgstr "Impostazioni Unix" + +#: admin/systems/services/dhcp/class_servDHCP.inc:103 +#, fuzzy, php-format +msgid "" +"You have requested a migration of the DHCP setup from server '%s' to the " +"current one." +msgstr "Non hai il permesso di cambiare la tua password." + +#: admin/systems/services/dhcp/class_servDHCP.inc:105 +msgid "The migration will be started when you save this system." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:222 +#, fuzzy +msgid "Permission error" +msgstr "Permessi" + +#: admin/systems/services/dhcp/class_servDHCP.inc:256 +#, fuzzy +msgid "DHCP section" +msgstr "Ispezione della configurazione PHP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:325 +#: admin/systems/services/dhcp/class_servDHCP.inc:328 +msgid "Insert new DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:326 +#: admin/systems/services/dhcp/class_servDHCP.inc:329 +#: admin/systems/services/dhcp/class_servDHCP.inc:330 +#, fuzzy +msgid "Edit DHCP section" +msgstr "Ispezione della configurazione PHP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:327 +#: admin/systems/services/dhcp/class_servDHCP.inc:331 +#, fuzzy +msgid "Remove DHCP section" +msgstr "Elimina estensioni per le applicazioni" + +#: admin/systems/services/dhcp/class_servDHCP.inc:378 +#: admin/systems/services/dhcp/class_servDHCP.inc:395 +#: admin/systems/services/dhcp/class_servDHCP.inc:450 +#: admin/systems/services/dhcp/class_servDHCP.inc:526 +#: admin/systems/services/dhcp/class_servDHCP.inc:534 +#: admin/systems/services/dhcp/class_servDHCP.inc:561 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#, fuzzy +msgid "" +"The DHCP configuration set is unkown. Please contact your system " +"administrator." +msgstr "" +"Errore di connessione al server LDAP. Contatta l'amministratore del sistema." + +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/dhcp/class_servDHCP.inc:701 +#, fuzzy +msgid "Start service" +msgstr "Servizi" + +#: admin/systems/services/dhcp/class_servDHCP.inc:702 +#, fuzzy +msgid "Stop service" +msgstr "Servizi" + +#: admin/systems/services/dhcp/class_servDHCP.inc:703 +#, fuzzy +msgid "Restart service" +msgstr "Servizi" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Cannot delete automatic statements!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:84 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:93 +msgid "automatic" +msgstr "automatico" + +#: admin/systems/services/dhcp/dhcp_pool.tpl:9 +#, fuzzy +msgid "Name of pool" +msgstr "Nome del gruppo" + +#: admin/systems/services/dhcp/dhcp_group.tpl:11 +#, fuzzy +msgid "Name of group" +msgstr "Nome del gruppo" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Servizi" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Servizi" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#, fuzzy +#~ msgid "May lease time" +#~ msgstr "Inoltra i messaggi a" + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "The value specified as '%s' is not numeric!" +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "The name for this host section is already used!" +#~ msgstr "L'indirizzo principale inserito è già in uso." + +#~ msgid "Delete" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "The name for this section is already used!" +#~ msgstr "L'indirizzo principale inserito è già in uso." + +#, fuzzy +#~ msgid "Required field 'Range' is not filled." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP addresses." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP range." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Apply" +#~ msgstr "Applica" + +#, fuzzy +#~ msgid "Required field 'Network address' is not filled." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "Required field 'Netmask' is not filled." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "The field '%s' contains an invalid IP address" +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "Field 'Name' contains illegal characters." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "The hardware address specified by you is not valid!" +#~ msgstr "Il valore specificato per il GID non è valido." + +#, fuzzy +#~ msgid "You have no permission to remove DHCP sections!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You're about to delete the DHCP section '%s'." +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "Removing DHCP entries failed" +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "Can't remove DHCP object!" +#~ msgstr "Oggetti membri" + +#, fuzzy +#~ msgid "Can't save DHCP object!" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Saving DHCP service failed" +#~ msgstr "Gruppo di oggetti" diff --git a/trunk/gosa-plugins/dhcp/locale/messages.po b/trunk/gosa-plugins/dhcp/locale/messages.po new file mode 100644 index 000000000..d670acc9e --- /dev/null +++ b/trunk/gosa-plugins/dhcp/locale/messages.po @@ -0,0 +1,536 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:65 +msgid "Ethernet" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:66 +msgid "FDDI" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:67 +msgid "Token Ring" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:143 +#: admin/systems/services/dhcp/class_dhcpHost.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:159 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:169 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:187 +#: admin/systems/services/dhcp/dhcp_host.tpl:8 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:10 +#: admin/systems/services/dhcp/class_dhcpPool.inc:113 +#: admin/systems/services/dhcp/class_dhcpPool.inc:121 +#: admin/systems/services/dhcp/dhcp_pool.tpl:6 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:96 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:99 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:107 +#: admin/systems/services/dhcp/dhcp_group.tpl:6 +msgid "Name" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:160 +#: admin/systems/services/dhcp/dhcp_host.tpl:41 +msgid "Hardware address" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:148 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:168 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:8 +msgid "Network address" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:167 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:17 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:16 +msgid "Netmask" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:169 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:170 +#: admin/systems/services/dhcp/class_dhcpPool.inc:128 +#: admin/systems/services/dhcp/class_dhcpPool.inc:132 +#: admin/systems/services/dhcp/class_dhcpPool.inc:136 +#: admin/systems/services/dhcp/dhcp_pool.tpl:13 +msgid "Range" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:179 +msgid "Network range" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:185 +#: admin/systems/services/dhcp/class_dhcpPool.inc:150 +msgid "'Range' is not inside the configured network." +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpService.inc:145 +msgid "Lease time" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpService.inc:148 +msgid "Max lease time" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:173 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:55 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +msgid "Default lease time" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +msgid "Maximum lease time" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Error" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:25 +msgid "Broadcast" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:218 +#, php-format +msgid "Error in definition of '%s'!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:174 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:64 +msgid "Max. lease time" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:175 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:73 +msgid "Min. lease time" +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:2 +#: admin/systems/services/dhcp/class_servDHCP.inc:108 +msgid "Warning" +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:6 +msgid "" +"This includes 'all' DHCP subsections that are located within this section. " +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:8 +msgid "Hide advanced settings" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:15 +msgid "DHCP statements" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:36 +msgid "DHCP options" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:59 +msgid "Show advanced settings" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:2 +#: admin/systems/services/dhcp/dhcp_service.tpl:1 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:2 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:2 +#: admin/systems/services/dhcp/dhcp_pool.tpl:2 +#: admin/systems/services/dhcp/dhcp_group.tpl:2 +msgid "Generic" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:12 +msgid "Name of host" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:17 +msgid "Fixed address" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:22 +msgid "Use hostname or IP-address to assign fixed address" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:31 +msgid "Hardware type" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:7 +msgid "Authoritative service" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:10 +msgid "Dynamic DNS update" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:12 +msgid "Dynamic DNS update style" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:22 +msgid "Default lease time (s)" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:25 +msgid "Enter default lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:30 +msgid "Maximum lease time (s)" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:33 +msgid "Enter maximum lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:5 +msgid "" +"DHCP take over will take place when saving this entry. Choose 'Cancel' to " +"abort." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:14 +msgid "Take over dhcp configuration from following server" +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:24 +msgid "DHCP sections" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:5 +msgid "Network configuration" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:8 +msgid "Router" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:12 +msgid "Enter name or IP address of router to be used in this section" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:35 +msgid "Bootup" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:38 +msgid "Filename" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:42 +msgid "" +"Enter name of file that will be loaded via tftp after client has started" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:47 +msgid "Next server" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:51 +msgid "Enter name of server to retrieve bootimages from" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:59 +msgid "Domain Name Service" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:62 +msgid "Domain" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:66 +msgid "Name of domain" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:73 +msgid "DNS server" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:75 +msgid "List of DNS servers to be propagated" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:81 +msgid "DNS server do be added" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:84 +msgid "Click here add the selected server to the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:87 +msgid "Click here remove the selected servers from the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:93 +msgid "Domain Name Service options" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:95 +msgid "Assign hostnames found via reverse mapping" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:99 +msgid "Assign hostnames from host declarations" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:2 +msgid "Create new DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:6 +msgid "Please choose one of the following DHCP section types." +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:9 +msgid "Section" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:10 +msgid "Choose section type to create" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:15 +msgid "Create" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_subnet.tpl:32 +msgid "Range for dynamic address assignment" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:13 +msgid "Name for shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:18 +msgid "Server identifier" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:22 +msgid "Propagated server identifier for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Select if this server is authoritative for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Authoritative server" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:52 +msgid "Leases" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +msgid "seconds" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +msgid "Minimum lease time" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:86 +msgid "Access control" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Select if unknown clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Allow unknown clients" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Select if bootp clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Allow bootp clients" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Select if clients are allowed to boot using this DHCP server" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Allow booting" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:33 +#: admin/systems/services/dhcp/class_servDHCP.inc:692 +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +#: admin/systems/services/dhcp/class_servDHCP.inc:739 +msgid "DHCP service" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:35 +msgid "Logging" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:36 +#: admin/systems/services/dhcp/class_servDHCP.inc:301 +#: admin/systems/services/dhcp/class_servDHCP.inc:604 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:26 +msgid "Global options" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:37 +msgid "Class" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:38 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:28 +msgid "Subclass" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:39 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:29 +msgid "Host" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:40 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:30 +msgid "Group" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:41 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:31 +msgid "Pool" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:42 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:32 +msgid "Subnet" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:43 +msgid "Failover peer" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:44 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:33 +msgid "Shared network" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:103 +#, php-format +msgid "" +"You have requested a migration of the DHCP setup from server '%s' to the " +"current one." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:105 +msgid "The migration will be started when you save this system." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:222 +msgid "Permission error" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:256 +msgid "DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:325 +#: admin/systems/services/dhcp/class_servDHCP.inc:328 +msgid "Insert new DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:326 +#: admin/systems/services/dhcp/class_servDHCP.inc:329 +#: admin/systems/services/dhcp/class_servDHCP.inc:330 +msgid "Edit DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:327 +#: admin/systems/services/dhcp/class_servDHCP.inc:331 +msgid "Remove DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:378 +#: admin/systems/services/dhcp/class_servDHCP.inc:395 +#: admin/systems/services/dhcp/class_servDHCP.inc:450 +#: admin/systems/services/dhcp/class_servDHCP.inc:526 +#: admin/systems/services/dhcp/class_servDHCP.inc:534 +#: admin/systems/services/dhcp/class_servDHCP.inc:561 +msgid "LDAP error" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +msgid "" +"The DHCP configuration set is unkown. Please contact your system " +"administrator." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +msgid "Services" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:701 +msgid "Start service" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:702 +msgid "Stop service" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:703 +msgid "Restart service" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Cannot delete automatic statements!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:84 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:93 +msgid "automatic" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_pool.tpl:9 +msgid "Name of pool" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_group.tpl:11 +msgid "Name of group" +msgstr "" diff --git a/trunk/gosa-plugins/dhcp/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dhcp/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..3ff45fff1 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,569 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005,2006,2007,2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-06-09 18:26+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:65 +msgid "Ethernet" +msgstr "Ethernet" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:66 +msgid "FDDI" +msgstr "FDDI" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:67 +msgid "Token Ring" +msgstr "Token ring" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:143 +#: admin/systems/services/dhcp/class_dhcpHost.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:159 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:169 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:187 +#: admin/systems/services/dhcp/dhcp_host.tpl:8 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:10 +#: admin/systems/services/dhcp/class_dhcpPool.inc:113 +#: admin/systems/services/dhcp/class_dhcpPool.inc:121 +#: admin/systems/services/dhcp/dhcp_pool.tpl:6 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:96 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:99 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:107 +#: admin/systems/services/dhcp/dhcp_group.tpl:6 +msgid "Name" +msgstr "Naam" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:160 +#: admin/systems/services/dhcp/dhcp_host.tpl:41 +msgid "Hardware address" +msgstr "Hardware adres" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:148 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:168 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:8 +msgid "Network address" +msgstr "Netwerkadres" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:167 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:17 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:16 +msgid "Netmask" +msgstr "Netmask" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:169 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:170 +#: admin/systems/services/dhcp/class_dhcpPool.inc:128 +#: admin/systems/services/dhcp/class_dhcpPool.inc:132 +#: admin/systems/services/dhcp/class_dhcpPool.inc:136 +#: admin/systems/services/dhcp/dhcp_pool.tpl:13 +msgid "Range" +msgstr "Reeks" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:179 +msgid "Network range" +msgstr "Netwerkreeks" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:185 +#: admin/systems/services/dhcp/class_dhcpPool.inc:150 +msgid "'Range' is not inside the configured network." +msgstr "De reeks ligt niet binnen het geconfigureerde netwerk." + +#: admin/systems/services/dhcp/class_dhcpService.inc:145 +msgid "Lease time" +msgstr "Leasetijd" + +#: admin/systems/services/dhcp/class_dhcpService.inc:148 +msgid "Max lease time" +msgstr "Maximale leasetijd" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:173 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:55 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +msgid "Default lease time" +msgstr "Standaard lease tijd" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +msgid "Maximum lease time" +msgstr "Maximale leasetijd" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Error" +msgstr "Fout" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:25 +msgid "Broadcast" +msgstr "Broadcast" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:218 +#, php-format +msgid "Error in definition of '%s'!" +msgstr "Fout in definitie van '%s'!" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:174 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:64 +msgid "Max. lease time" +msgstr "Maximale leasetijd" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:175 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:73 +msgid "Min. lease time" +msgstr "Minimale leasetijd" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:2 +#: admin/systems/services/dhcp/class_servDHCP.inc:108 +msgid "Warning" +msgstr "Waarschuwing" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:6 +msgid "" +"This includes 'all' DHCP subsections that are located within this section. " +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Dit omvat 'alle' DHCP subsecties die zich binnen deze locatie bevinden. " +"Verzeker uzelf hiervan, aangezien er geen manier is voor GOsa om deze " +"gegevens terug te halen." + +#: admin/systems/services/dhcp/remove_dhcp.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Het is aan te raden de huidige inhoud van uw LDAP database op te slaan " +"alvorens u doorgaat. Indien u dat gedaan heeft drukt u op 'Verwijderen' om " +"door te gaan of op 'Annuleren' om te annuleren." + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:8 +msgid "Hide advanced settings" +msgstr "Verberg geavanceerde instellingen" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:15 +msgid "DHCP statements" +msgstr "DHCP regels" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:36 +msgid "DHCP options" +msgstr "DHCP opties" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:59 +msgid "Show advanced settings" +msgstr "Toon geavanceerde instellingen" + +#: admin/systems/services/dhcp/dhcp_host.tpl:2 +#: admin/systems/services/dhcp/dhcp_service.tpl:1 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:2 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:2 +#: admin/systems/services/dhcp/dhcp_pool.tpl:2 +#: admin/systems/services/dhcp/dhcp_group.tpl:2 +msgid "Generic" +msgstr "Algemeen" + +#: admin/systems/services/dhcp/dhcp_host.tpl:12 +msgid "Name of host" +msgstr "Hostnaam" + +#: admin/systems/services/dhcp/dhcp_host.tpl:17 +msgid "Fixed address" +msgstr "Vast adres" + +#: admin/systems/services/dhcp/dhcp_host.tpl:22 +msgid "Use hostname or IP-address to assign fixed address" +msgstr "Gebruik hostnaam of IP adres om een vast adres toe te kennen" + +#: admin/systems/services/dhcp/dhcp_host.tpl:31 +msgid "Hardware type" +msgstr "Hardware type" + +#: admin/systems/services/dhcp/dhcp_service.tpl:7 +msgid "Authoritative service" +msgstr "Authoritaire service" + +#: admin/systems/services/dhcp/dhcp_service.tpl:10 +msgid "Dynamic DNS update" +msgstr "Dynamsche DNS update" + +#: admin/systems/services/dhcp/dhcp_service.tpl:12 +msgid "Dynamic DNS update style" +msgstr "Dynamische DNS update stijl" + +#: admin/systems/services/dhcp/dhcp_service.tpl:22 +msgid "Default lease time (s)" +msgstr "Standaard lease tijd (s)" + +#: admin/systems/services/dhcp/dhcp_service.tpl:25 +msgid "Enter default lease time in seconds." +msgstr "Voer de standaard lease tijd in seconden in" + +#: admin/systems/services/dhcp/dhcp_service.tpl:30 +msgid "Maximum lease time (s)" +msgstr "Maximale leasetijd (s)" + +#: admin/systems/services/dhcp/dhcp_service.tpl:33 +msgid "Enter maximum lease time in seconds." +msgstr "Voer de maximale lease tijd in seconden in." + +#: admin/systems/services/dhcp/servdhcp.tpl:5 +msgid "" +"DHCP take over will take place when saving this entry. Choose 'Cancel' to " +"abort." +msgstr "" +"Een DHCP overname zal plaatsvinden, zodra deze invoer opgeslagen wordt. " +"Selecteer 'Annuleren' om de annuleren." + +#: admin/systems/services/dhcp/servdhcp.tpl:14 +msgid "Take over dhcp configuration from following server" +msgstr "Neem DHCP configuratie over van de volgende server" + +#: admin/systems/services/dhcp/servdhcp.tpl:24 +msgid "DHCP sections" +msgstr "DHCP secties" + +#: admin/systems/services/dhcp/dhcp_network.tpl:5 +msgid "Network configuration" +msgstr "Netwerk configuratie" + +#: admin/systems/services/dhcp/dhcp_network.tpl:8 +msgid "Router" +msgstr "Router" + +#: admin/systems/services/dhcp/dhcp_network.tpl:12 +msgid "Enter name or IP address of router to be used in this section" +msgstr "" +"Geeft de naam of het IP adres van de te gebruiken router op in deze sectie" + +#: admin/systems/services/dhcp/dhcp_network.tpl:35 +msgid "Bootup" +msgstr "Opstarten" + +#: admin/systems/services/dhcp/dhcp_network.tpl:38 +msgid "Filename" +msgstr "Bestandsnaam" + +#: admin/systems/services/dhcp/dhcp_network.tpl:42 +msgid "" +"Enter name of file that will be loaded via tftp after client has started" +msgstr "" +"Geef de bestandsnaam die geladen zal worden via tftp nadat de client " +"opgestart is" + +#: admin/systems/services/dhcp/dhcp_network.tpl:47 +msgid "Next server" +msgstr "Volgende server" + +#: admin/systems/services/dhcp/dhcp_network.tpl:51 +msgid "Enter name of server to retrieve bootimages from" +msgstr "Geef de naam van de server waarvandaan opstart images geladen worden" + +#: admin/systems/services/dhcp/dhcp_network.tpl:59 +msgid "Domain Name Service" +msgstr "Domein Naam Service" + +#: admin/systems/services/dhcp/dhcp_network.tpl:62 +msgid "Domain" +msgstr "Domein" + +#: admin/systems/services/dhcp/dhcp_network.tpl:66 +msgid "Name of domain" +msgstr "Domeinnaam" + +#: admin/systems/services/dhcp/dhcp_network.tpl:73 +msgid "DNS server" +msgstr "DNS server" + +#: admin/systems/services/dhcp/dhcp_network.tpl:75 +msgid "List of DNS servers to be propagated" +msgstr "Lijst met te propageren DNS servers" + +#: admin/systems/services/dhcp/dhcp_network.tpl:81 +msgid "DNS server do be added" +msgstr "Selecteer de toe te voegen DNS server" + +#: admin/systems/services/dhcp/dhcp_network.tpl:84 +msgid "Click here add the selected server to the list" +msgstr "Klik hier om de geselecteerde server aan de lijst toe te voegen" + +#: admin/systems/services/dhcp/dhcp_network.tpl:87 +msgid "Click here remove the selected servers from the list" +msgstr "Klik hier om de geselecteerde server uit de lijst te verwijderen" + +#: admin/systems/services/dhcp/dhcp_network.tpl:93 +msgid "Domain Name Service options" +msgstr "Domein Naam Service opties" + +#: admin/systems/services/dhcp/dhcp_network.tpl:95 +msgid "Assign hostnames found via reverse mapping" +msgstr "Ken hostnamen toe, zoals ze via omgekeerde DNS mapping gevonden worden" + +#: admin/systems/services/dhcp/dhcp_network.tpl:99 +msgid "Assign hostnames from host declarations" +msgstr "Ken hostnamen toe zoals ze opgegeven zijn binnen host declaraties" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:2 +msgid "Create new DHCP section" +msgstr "Nieuwe DHCP sectie aanmaken" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:6 +msgid "Please choose one of the following DHCP section types." +msgstr "Selecteer a.u.b. een van de volgende DHCP sectie types." + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:9 +msgid "Section" +msgstr "Sectie" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:10 +msgid "Choose section type to create" +msgstr "Selecteer het aan te maken sectie type" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:15 +msgid "Create" +msgstr "Aanmaken" + +#: admin/systems/services/dhcp/dhcp_subnet.tpl:32 +msgid "Range for dynamic address assignment" +msgstr "Reeks voor dynamische adres toekenning" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:13 +msgid "Name for shared network" +msgstr "Naam voor gedeeld netwerk" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:18 +msgid "Server identifier" +msgstr "Server identificatie" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:22 +msgid "Propagated server identifier for this shared network" +msgstr "Gepropageerde server identiteit voor dit gedeeld netwerk" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Select if this server is authoritative for this shared network" +msgstr "Selecteer of deze server authoritair is voor dit gedeeld netwerk" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Authoritative server" +msgstr "Authoritative server" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:52 +msgid "Leases" +msgstr "Leases" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +msgid "seconds" +msgstr "seconden" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +msgid "Minimum lease time" +msgstr "Minimale leasetijd" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:86 +msgid "Access control" +msgstr "Toegangsbeheer" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Select if unknown clients should get dynamic IP addresses" +msgstr "Geef op of onbekende clients een dynamisch IP adres moeten ontvangen" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Allow unknown clients" +msgstr "Sta onbekende clients toe" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Select if bootp clients should get dynamic IP addresses" +msgstr "Geef op of bootp clients een dynamisch IP adres moeten ontvangen" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Allow bootp clients" +msgstr "bootp clients toestaan" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Select if clients are allowed to boot using this DHCP server" +msgstr "Geeft op of clients op mogen starten m.b.v. deze DHCP server" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Allow booting" +msgstr "Opstarten toestaan" + +#: admin/systems/services/dhcp/class_servDHCP.inc:33 +#: admin/systems/services/dhcp/class_servDHCP.inc:692 +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +#: admin/systems/services/dhcp/class_servDHCP.inc:739 +msgid "DHCP service" +msgstr "DHCP service" + +#: admin/systems/services/dhcp/class_servDHCP.inc:35 +msgid "Logging" +msgstr "Loggen" + +#: admin/systems/services/dhcp/class_servDHCP.inc:36 +#: admin/systems/services/dhcp/class_servDHCP.inc:301 +#: admin/systems/services/dhcp/class_servDHCP.inc:604 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:26 +msgid "Global options" +msgstr "Globale opties" + +#: admin/systems/services/dhcp/class_servDHCP.inc:37 +msgid "Class" +msgstr "Klasse" + +#: admin/systems/services/dhcp/class_servDHCP.inc:38 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:28 +msgid "Subclass" +msgstr "Subklasse" + +#: admin/systems/services/dhcp/class_servDHCP.inc:39 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:29 +msgid "Host" +msgstr "Host" + +#: admin/systems/services/dhcp/class_servDHCP.inc:40 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:30 +msgid "Group" +msgstr "Groep" + +#: admin/systems/services/dhcp/class_servDHCP.inc:41 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:31 +msgid "Pool" +msgstr "Pool" + +#: admin/systems/services/dhcp/class_servDHCP.inc:42 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:32 +msgid "Subnet" +msgstr "Subnet" + +#: admin/systems/services/dhcp/class_servDHCP.inc:43 +msgid "Failover peer" +msgstr "Failover peer" + +#: admin/systems/services/dhcp/class_servDHCP.inc:44 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:33 +msgid "Shared network" +msgstr "Gedeeld netwerk" + +#: admin/systems/services/dhcp/class_servDHCP.inc:103 +#, php-format +msgid "" +"You have requested a migration of the DHCP setup from server '%s' to the " +"current one." +msgstr "" +"U heeft een aanvraag gedaan om de DHCP instellingen te migreren van server '%" +"s' naar de huidige server." + +#: admin/systems/services/dhcp/class_servDHCP.inc:105 +msgid "The migration will be started when you save this system." +msgstr "De migratie zal gestart worden, zodra u dit systeem bewaart." + +#: admin/systems/services/dhcp/class_servDHCP.inc:222 +msgid "Permission error" +msgstr "Permissiefout" + +#: admin/systems/services/dhcp/class_servDHCP.inc:256 +msgid "DHCP section" +msgstr "DHCP sectie" + +#: admin/systems/services/dhcp/class_servDHCP.inc:325 +#: admin/systems/services/dhcp/class_servDHCP.inc:328 +msgid "Insert new DHCP section" +msgstr "Voer nieuwe DHCP sectie in" + +#: admin/systems/services/dhcp/class_servDHCP.inc:326 +#: admin/systems/services/dhcp/class_servDHCP.inc:329 +#: admin/systems/services/dhcp/class_servDHCP.inc:330 +msgid "Edit DHCP section" +msgstr "Bewerk DCHP sectie" + +#: admin/systems/services/dhcp/class_servDHCP.inc:327 +#: admin/systems/services/dhcp/class_servDHCP.inc:331 +msgid "Remove DHCP section" +msgstr "Verwijder DHCP sectie" + +#: admin/systems/services/dhcp/class_servDHCP.inc:378 +#: admin/systems/services/dhcp/class_servDHCP.inc:395 +#: admin/systems/services/dhcp/class_servDHCP.inc:450 +#: admin/systems/services/dhcp/class_servDHCP.inc:526 +#: admin/systems/services/dhcp/class_servDHCP.inc:534 +#: admin/systems/services/dhcp/class_servDHCP.inc:561 +msgid "LDAP error" +msgstr "LDAP fout" + +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +msgid "" +"The DHCP configuration set is unkown. Please contact your system " +"administrator." +msgstr "" +"De ingestelde DHCP configuratie is onbekend. Neem contact op met uw " +"systeembeheerder." + +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/dhcp/class_servDHCP.inc:701 +#, fuzzy +msgid "Start service" +msgstr "Services" + +#: admin/systems/services/dhcp/class_servDHCP.inc:702 +#, fuzzy +msgid "Stop service" +msgstr "Services" + +#: admin/systems/services/dhcp/class_servDHCP.inc:703 +#, fuzzy +msgid "Restart service" +msgstr "Volgende server" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Cannot delete automatic statements!" +msgstr "Kan automatische regels niet verwijderen!" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:84 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:93 +msgid "automatic" +msgstr "automatisch" + +#: admin/systems/services/dhcp/dhcp_pool.tpl:9 +msgid "Name of pool" +msgstr "Poolnaam" + +#: admin/systems/services/dhcp/dhcp_group.tpl:11 +msgid "Name of group" +msgstr "Groepsnaam" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Services" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Services" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Zoek binnen subtree" diff --git a/trunk/gosa-plugins/dhcp/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dhcp/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..8df0a7e85 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,709 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:65 +#, fuzzy +msgid "Ethernet" +msgstr "Inranet" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:66 +msgid "FDDI" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:67 +msgid "Token Ring" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:143 +#: admin/systems/services/dhcp/class_dhcpHost.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:159 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:169 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:187 +#: admin/systems/services/dhcp/dhcp_host.tpl:8 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:10 +#: admin/systems/services/dhcp/class_dhcpPool.inc:113 +#: admin/systems/services/dhcp/class_dhcpPool.inc:121 +#: admin/systems/services/dhcp/dhcp_pool.tpl:6 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:96 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:99 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:107 +#: admin/systems/services/dhcp/dhcp_group.tpl:6 +msgid "Name" +msgstr "Imię" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:160 +#: admin/systems/services/dhcp/dhcp_host.tpl:41 +#, fuzzy +msgid "Hardware address" +msgstr "Adres podstawowy" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:148 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:168 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:8 +msgid "Network address" +msgstr "Adres sieciowy" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:167 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:17 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:16 +#, fuzzy +msgid "Netmask" +msgstr "Netatalk" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:169 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:170 +#: admin/systems/services/dhcp/class_dhcpPool.inc:128 +#: admin/systems/services/dhcp/class_dhcpPool.inc:132 +#: admin/systems/services/dhcp/class_dhcpPool.inc:136 +#: admin/systems/services/dhcp/dhcp_pool.tpl:13 +#, fuzzy +msgid "Range" +msgstr "Zarządzaj" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:179 +#, fuzzy +msgid "Network range" +msgstr "Adres sieciowy" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:185 +#: admin/systems/services/dhcp/class_dhcpPool.inc:150 +#, fuzzy +msgid "'Range' is not inside the configured network." +msgstr "Zamierzasz skopiować wpis '%s'." + +#: admin/systems/services/dhcp/class_dhcpService.inc:145 +#, fuzzy +msgid "Lease time" +msgstr "Max rozmiar wiadomości" + +#: admin/systems/services/dhcp/class_dhcpService.inc:148 +#, fuzzy +msgid "Max lease time" +msgstr "Max rozmiar wiadomości" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:173 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:55 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#, fuzzy +msgid "Default lease time" +msgstr "Wybierz nazwę wydania" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#, fuzzy +msgid "Maximum lease time" +msgstr "Maksymalny rozmiar pliku" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Error" +msgstr "Błąd" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:25 +msgid "Broadcast" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:218 +#, php-format +msgid "Error in definition of '%s'!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:174 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:64 +#, fuzzy +msgid "Max. lease time" +msgstr "Max rozmiar wiadomości" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:175 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:73 +msgid "Min. lease time" +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:2 +#: admin/systems/services/dhcp/class_servDHCP.inc:108 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:6 +#, fuzzy +msgid "" +"This includes 'all' DHCP subsections that are located within this section. " +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Operacja odnosi się do 'wszystkich' informacji obiektowych. Proszę upewnić " +"się, czy na pewno wykonać tą operację, gdyż nie ma możliwości powrotu." + +#: admin/systems/services/dhcp/remove_dhcp.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Przed wykonaniem tej operacji zaleca się wykonanie kopii bezpieczeństwa " +"drzewa LDAP. Naciśnij 'Usuń' aby kontynuować, lub 'Anuluj' aby przerwać." + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:8 +#, fuzzy +msgid "Hide advanced settings" +msgstr "Zaawansowane ustawienia telefonu" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:15 +#, fuzzy +msgid "DHCP statements" +msgstr "Departamenty" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:36 +#, fuzzy +msgid "DHCP options" +msgstr "Opcje systemu plików" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:59 +#, fuzzy +msgid "Show advanced settings" +msgstr "Zaawansowane ustawienia telefonu" + +#: admin/systems/services/dhcp/dhcp_host.tpl:2 +#: admin/systems/services/dhcp/dhcp_service.tpl:1 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:2 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:2 +#: admin/systems/services/dhcp/dhcp_pool.tpl:2 +#: admin/systems/services/dhcp/dhcp_group.tpl:2 +msgid "Generic" +msgstr "Ogólne" + +#: admin/systems/services/dhcp/dhcp_host.tpl:12 +#, fuzzy +msgid "Name of host" +msgstr "Nazwa bloklisty" + +#: admin/systems/services/dhcp/dhcp_host.tpl:17 +#, fuzzy +msgid "Fixed address" +msgstr "Adres email" + +#: admin/systems/services/dhcp/dhcp_host.tpl:22 +msgid "Use hostname or IP-address to assign fixed address" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:31 +msgid "Hardware type" +msgstr "Typ sprzętu" + +#: admin/systems/services/dhcp/dhcp_service.tpl:7 +#, fuzzy +msgid "Authoritative service" +msgstr "Usługa stacji roboczej" + +#: admin/systems/services/dhcp/dhcp_service.tpl:10 +msgid "Dynamic DNS update" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:12 +msgid "Dynamic DNS update style" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:22 +msgid "Default lease time (s)" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:25 +msgid "Enter default lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:30 +#, fuzzy +msgid "Maximum lease time (s)" +msgstr "Maksymalny rozmiar pliku" + +#: admin/systems/services/dhcp/dhcp_service.tpl:33 +msgid "Enter maximum lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:5 +msgid "" +"DHCP take over will take place when saving this entry. Choose 'Cancel' to " +"abort." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:14 +msgid "Take over dhcp configuration from following server" +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:24 +#, fuzzy +msgid "DHCP sections" +msgstr "Inspekcja instalacji PHP" + +#: admin/systems/services/dhcp/dhcp_network.tpl:5 +#, fuzzy +msgid "Network configuration" +msgstr "Konfiguracja bazy FAX" + +#: admin/systems/services/dhcp/dhcp_network.tpl:8 +#, fuzzy +msgid "Router" +msgstr "Komputery" + +#: admin/systems/services/dhcp/dhcp_network.tpl:12 +msgid "Enter name or IP address of router to be used in this section" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:35 +#, fuzzy +msgid "Bootup" +msgstr "Główny" + +#: admin/systems/services/dhcp/dhcp_network.tpl:38 +msgid "Filename" +msgstr "Nazwa pliku" + +#: admin/systems/services/dhcp/dhcp_network.tpl:42 +msgid "" +"Enter name of file that will be loaded via tftp after client has started" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:47 +#, fuzzy +msgid "Next server" +msgstr "Serwer NTP" + +#: admin/systems/services/dhcp/dhcp_network.tpl:51 +msgid "Enter name of server to retrieve bootimages from" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:59 +#, fuzzy +msgid "Domain Name Service" +msgstr "Usługa DNS" + +#: admin/systems/services/dhcp/dhcp_network.tpl:62 +msgid "Domain" +msgstr "Domena" + +#: admin/systems/services/dhcp/dhcp_network.tpl:66 +#, fuzzy +msgid "Name of domain" +msgstr "Nazwa departamentu" + +#: admin/systems/services/dhcp/dhcp_network.tpl:73 +#, fuzzy +msgid "DNS server" +msgstr "Usługa DNS" + +#: admin/systems/services/dhcp/dhcp_network.tpl:75 +msgid "List of DNS servers to be propagated" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:81 +#, fuzzy +msgid "DNS server do be added" +msgstr "Usługa dla dodania" + +#: admin/systems/services/dhcp/dhcp_network.tpl:84 +msgid "Click here add the selected server to the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:87 +msgid "Click here remove the selected servers from the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:93 +#, fuzzy +msgid "Domain Name Service options" +msgstr "Usługa DNS" + +#: admin/systems/services/dhcp/dhcp_network.tpl:95 +msgid "Assign hostnames found via reverse mapping" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:99 +msgid "Assign hostnames from host declarations" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:2 +#, fuzzy +msgid "Create new DHCP section" +msgstr "Utwórz nową aplikację" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:6 +#, fuzzy +msgid "Please choose one of the following DHCP section types." +msgstr "" +"Proszę użyć jedną z poniższych metod dla wybrania nazwy nowej klasy FAI." + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:9 +msgid "Section" +msgstr "Sekcja" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:10 +#, fuzzy +msgid "Choose section type to create" +msgstr "Wybierz typ myszy" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:15 +msgid "Create" +msgstr "Utwórz" + +#: admin/systems/services/dhcp/dhcp_subnet.tpl:32 +msgid "Range for dynamic address assignment" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:13 +#, fuzzy +msgid "Name for shared network" +msgstr "Sieci Postfix" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:18 +msgid "Server identifier" +msgstr "Identyfikator serwera" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:22 +msgid "Propagated server identifier for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Select if this server is authoritative for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +#, fuzzy +msgid "Authoritative server" +msgstr "Usługa stacji roboczej" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:52 +#, fuzzy +msgid "Leases" +msgstr "Wydania" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "seconds" +msgstr "(w sekundach)" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "Minimum lease time" +msgstr "Maksymalny rozmiar pliku" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:86 +msgid "Access control" +msgstr "Kontrola dostępu" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Select if unknown clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +#, fuzzy +msgid "Allow unknown clients" +msgstr "! nieznane id" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Select if bootp clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Allow bootp clients" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +#, fuzzy +msgid "Select if clients are allowed to boot using this DHCP server" +msgstr "Użytkownicy którzy mogą używać tej drukarki" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Allow booting" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:33 +#: admin/systems/services/dhcp/class_servDHCP.inc:692 +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +#: admin/systems/services/dhcp/class_servDHCP.inc:739 +#, fuzzy +msgid "DHCP service" +msgstr "Dodaj usługę DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:35 +#, fuzzy +msgid "Logging" +msgstr "Login" + +#: admin/systems/services/dhcp/class_servDHCP.inc:36 +#: admin/systems/services/dhcp/class_servDHCP.inc:301 +#: admin/systems/services/dhcp/class_servDHCP.inc:604 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:26 +#, fuzzy +msgid "Global options" +msgstr "Opcje poczty" + +#: admin/systems/services/dhcp/class_servDHCP.inc:37 +msgid "Class" +msgstr "Klasa" + +#: admin/systems/services/dhcp/class_servDHCP.inc:38 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:28 +#, fuzzy +msgid "Subclass" +msgstr "klasa" + +#: admin/systems/services/dhcp/class_servDHCP.inc:39 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:29 +#, fuzzy +msgid "Host" +msgstr "wysyłanie" + +#: admin/systems/services/dhcp/class_servDHCP.inc:40 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:30 +msgid "Group" +msgstr "Grupa" + +#: admin/systems/services/dhcp/class_servDHCP.inc:41 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:31 +#, fuzzy +msgid "Pool" +msgstr "Bool" + +#: admin/systems/services/dhcp/class_servDHCP.inc:42 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:32 +#, fuzzy +msgid "Subnet" +msgstr "Ustaw" + +#: admin/systems/services/dhcp/class_servDHCP.inc:43 +#, fuzzy +msgid "Failover peer" +msgstr "Wzorce pliku" + +#: admin/systems/services/dhcp/class_servDHCP.inc:44 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:33 +#, fuzzy +msgid "Shared network" +msgstr "Sieci Postfix" + +#: admin/systems/services/dhcp/class_servDHCP.inc:103 +#, fuzzy, php-format +msgid "" +"You have requested a migration of the DHCP setup from server '%s' to the " +"current one." +msgstr "Zamierzasz skopiować wpis '%s'." + +#: admin/systems/services/dhcp/class_servDHCP.inc:105 +msgid "The migration will be started when you save this system." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:222 +#, fuzzy +msgid "Permission error" +msgstr "Uprawnienia" + +#: admin/systems/services/dhcp/class_servDHCP.inc:256 +#, fuzzy +msgid "DHCP section" +msgstr "Inspekcja instalacji PHP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:325 +#: admin/systems/services/dhcp/class_servDHCP.inc:328 +msgid "Insert new DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:326 +#: admin/systems/services/dhcp/class_servDHCP.inc:329 +#: admin/systems/services/dhcp/class_servDHCP.inc:330 +#, fuzzy +msgid "Edit DHCP section" +msgstr "Inspekcja instalacji PHP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:327 +#: admin/systems/services/dhcp/class_servDHCP.inc:331 +#, fuzzy +msgid "Remove DHCP section" +msgstr "Wyłącz usługę DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:378 +#: admin/systems/services/dhcp/class_servDHCP.inc:395 +#: admin/systems/services/dhcp/class_servDHCP.inc:450 +#: admin/systems/services/dhcp/class_servDHCP.inc:526 +#: admin/systems/services/dhcp/class_servDHCP.inc:534 +#: admin/systems/services/dhcp/class_servDHCP.inc:561 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#, fuzzy +msgid "" +"The DHCP configuration set is unkown. Please contact your system " +"administrator." +msgstr "Konto zablokowane. Proszę skontaktować się z administratorem systemu." + +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/dhcp/class_servDHCP.inc:701 +#, fuzzy +msgid "Start service" +msgstr "Usługi" + +#: admin/systems/services/dhcp/class_servDHCP.inc:702 +#, fuzzy +msgid "Stop service" +msgstr "Usługi" + +#: admin/systems/services/dhcp/class_servDHCP.inc:703 +#, fuzzy +msgid "Restart service" +msgstr "Serwer NTP" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Cannot delete automatic statements!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:84 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:93 +msgid "automatic" +msgstr "automatyczne" + +#: admin/systems/services/dhcp/dhcp_pool.tpl:9 +#, fuzzy +msgid "Name of pool" +msgstr "Nazwa bloklisty" + +#: admin/systems/services/dhcp/dhcp_group.tpl:11 +#, fuzzy +msgid "Name of group" +msgstr "Nazwa grupy" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Usługi" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Usługi" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Szukaj wewnątrz tego poddrzewa" + +#, fuzzy +#~ msgid "May lease time" +#~ msgstr "Max rozmiar wiadomości" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Required field 'Name' is not filled." +#~ msgstr "Wymagane pole 'Nazwa' nie jest wypełnione." + +#, fuzzy +#~ msgid "The value specified as '%s' is not numeric!" +#~ msgstr "Wartość podana jako '%s' zawiera niedozwolone znaki!" + +#, fuzzy +#~ msgid "The name for this host section is already used!" +#~ msgstr "Zmiana nazwy nieudana, ta nazwa typu systemu jest już w użyciu." + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#, fuzzy +#~ msgid "The name for this section is already used!" +#~ msgstr "Zmiana nazwy nieudana, ta nazwa typu systemu jest już w użyciu." + +#, fuzzy +#~ msgid "Required field 'Range' is not filled." +#~ msgstr "Wymagane pole 'Nazwa' nie jest wypełnione." + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP addresses." +#~ msgstr "Pole 'Nazwa' zawiera niedozwolone znaki." + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP range." +#~ msgstr "Pole 'Nazwa' zawiera niedozwolone znaki." + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#, fuzzy +#~ msgid "Required field 'Network address' is not filled." +#~ msgstr "Wymagane pole 'Nazwa' nie jest wypełnione." + +#, fuzzy +#~ msgid "Required field 'Netmask' is not filled." +#~ msgstr "Wymagane pole 'Nazwa' nie jest wypełnione." + +#, fuzzy +#~ msgid "The field '%s' contains an invalid IP address" +#~ msgstr "Pole adres IP zawiera nieprawidłowy adres." + +#, fuzzy +#~ msgid "Field 'Name' contains illegal characters." +#~ msgstr "Pole 'Nazwa' zawiera niedozwolone znaki." + +#, fuzzy +#~ msgid "The hardware address specified by you is not valid!" +#~ msgstr "Wartość podana jako 'Proporcja' jest nieprawidłowa." + +#, fuzzy +#~ msgid "Default lease time needs to be numeric." +#~ msgstr "Port sieve musi być liczbą." + +#, fuzzy +#~ msgid "Maximum lease time needs to be numeric." +#~ msgstr "Port sieve musi być liczbą." + +#, fuzzy +#~ msgid "You have no permission to remove DHCP sections!" +#~ msgstr "Brak uprawnień do usunięcia tego użytkownika!" + +#, fuzzy +#~ msgid "You're about to delete the DHCP section '%s'." +#~ msgstr "Zamierzasz usunąć aplikację '%s'." + +#, fuzzy +#~ msgid "Removing DHCP entries failed" +#~ msgstr "Usuwanie wpisów DNS nieudane" + +#, fuzzy +#~ msgid "Can't remove DHCP object!" +#~ msgstr "Usuń obiekt" + +#, fuzzy +#~ msgid "Can't save DHCP object!" +#~ msgstr "Nie można zapisać pliku '%s'." + +#, fuzzy +#~ msgid "Saving DHCP service failed" +#~ msgstr "Zapisywanie serwera nieudane" diff --git a/trunk/gosa-plugins/dhcp/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dhcp/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..634ff3325 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,709 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:65 +#, fuzzy +msgid "Ethernet" +msgstr "Фильтры" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:66 +msgid "FDDI" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:67 +msgid "Token Ring" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:143 +#: admin/systems/services/dhcp/class_dhcpHost.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:159 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:169 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:187 +#: admin/systems/services/dhcp/dhcp_host.tpl:8 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:10 +#: admin/systems/services/dhcp/class_dhcpPool.inc:113 +#: admin/systems/services/dhcp/class_dhcpPool.inc:121 +#: admin/systems/services/dhcp/dhcp_pool.tpl:6 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:96 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:99 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:107 +#: admin/systems/services/dhcp/dhcp_group.tpl:6 +msgid "Name" +msgstr "Фамилия" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:160 +#: admin/systems/services/dhcp/dhcp_host.tpl:41 +#, fuzzy +msgid "Hardware address" +msgstr "Основной адрес" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:148 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:168 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:8 +#, fuzzy +msgid "Network address" +msgstr "Сетевые устройства" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:167 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:17 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:16 +msgid "Netmask" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:169 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:170 +#: admin/systems/services/dhcp/class_dhcpPool.inc:128 +#: admin/systems/services/dhcp/class_dhcpPool.inc:132 +#: admin/systems/services/dhcp/class_dhcpPool.inc:136 +#: admin/systems/services/dhcp/dhcp_pool.tpl:13 +#, fuzzy +msgid "Range" +msgstr "Название" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:179 +#, fuzzy +msgid "Network range" +msgstr "Сетевые устройства" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:185 +#: admin/systems/services/dhcp/class_dhcpPool.inc:150 +#, fuzzy +msgid "'Range' is not inside the configured network." +msgstr "Вы собираетесь удалить объект %s." + +#: admin/systems/services/dhcp/class_dhcpService.inc:145 +#, fuzzy +msgid "Lease time" +msgstr "Сообщение" + +#: admin/systems/services/dhcp/class_dhcpService.inc:148 +#, fuzzy +msgid "Max lease time" +msgstr "Сообщение" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:173 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:55 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#, fuzzy +msgid "Default lease time" +msgstr "Выберите, чтобы просмотреть серверы" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#, fuzzy +msgid "Maximum lease time" +msgstr "Размер квоты" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Error" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:25 +msgid "Broadcast" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:218 +#, php-format +msgid "Error in definition of '%s'!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:174 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:64 +#, fuzzy +msgid "Max. lease time" +msgstr "Сообщение" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:175 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:73 +msgid "Min. lease time" +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:2 +#: admin/systems/services/dhcp/class_servDHCP.inc:108 +msgid "Warning" +msgstr "Предупреждение" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:6 +#, fuzzy +msgid "" +"This includes 'all' DHCP subsections that are located within this section. " +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Сюда входит вся информация о системе и ее настройках. Подумайте еще " +"раз, действительно ли вам нужно удаление, так как GOsa не сможет отменить " +"результаты этой операции." + +#: admin/systems/services/dhcp/remove_dhcp.tpl:10 +#, fuzzy +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Лучше всего перед удалением сохранить резервную копию текущего дерева LDAP в " +"файл. Если вы сделали это и действительно хотите выполнить удаление, нажмите " +"Удалить, иначе нажмите Отмена." + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:8 +#, fuzzy +msgid "Hide advanced settings" +msgstr "Настройки телефона" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:15 +#, fuzzy +msgid "DHCP statements" +msgstr "Подразделения" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:36 +#, fuzzy +msgid "DHCP options" +msgstr "Добавить параметр" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:59 +#, fuzzy +msgid "Show advanced settings" +msgstr "Настройки телефона" + +#: admin/systems/services/dhcp/dhcp_host.tpl:2 +#: admin/systems/services/dhcp/dhcp_service.tpl:1 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:2 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:2 +#: admin/systems/services/dhcp/dhcp_pool.tpl:2 +#: admin/systems/services/dhcp/dhcp_group.tpl:2 +msgid "Generic" +msgstr "Общее" + +#: admin/systems/services/dhcp/dhcp_host.tpl:12 +#, fuzzy +msgid "Name of host" +msgstr "Имя стоп-листа" + +#: admin/systems/services/dhcp/dhcp_host.tpl:17 +#, fuzzy +msgid "Fixed address" +msgstr "MAC-адрес" + +#: admin/systems/services/dhcp/dhcp_host.tpl:22 +msgid "Use hostname or IP-address to assign fixed address" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:31 +msgid "Hardware type" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:7 +#, fuzzy +msgid "Authoritative service" +msgstr "Рабочие станции" + +#: admin/systems/services/dhcp/dhcp_service.tpl:10 +msgid "Dynamic DNS update" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:12 +msgid "Dynamic DNS update style" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:22 +msgid "Default lease time (s)" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:25 +msgid "Enter default lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:30 +#, fuzzy +msgid "Maximum lease time (s)" +msgstr "Размер квоты" + +#: admin/systems/services/dhcp/dhcp_service.tpl:33 +msgid "Enter maximum lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:5 +msgid "" +"DHCP take over will take place when saving this entry. Choose 'Cancel' to " +"abort." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:14 +msgid "Take over dhcp configuration from following server" +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:24 +#, fuzzy +msgid "DHCP sections" +msgstr "Проверка конфигурации PHP" + +#: admin/systems/services/dhcp/dhcp_network.tpl:5 +#, fuzzy +msgid "Network configuration" +msgstr "Базы данных" + +#: admin/systems/services/dhcp/dhcp_network.tpl:8 +#, fuzzy +msgid "Router" +msgstr "не полный" + +#: admin/systems/services/dhcp/dhcp_network.tpl:12 +msgid "Enter name or IP address of router to be used in this section" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:35 +#, fuzzy +msgid "Bootup" +msgstr "Перезагрузить" + +#: admin/systems/services/dhcp/dhcp_network.tpl:38 +#, fuzzy +msgid "Filename" +msgstr "Имя сервера" + +#: admin/systems/services/dhcp/dhcp_network.tpl:42 +msgid "" +"Enter name of file that will be loaded via tftp after client has started" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:47 +#, fuzzy +msgid "Next server" +msgstr "Сервер NTP" + +#: admin/systems/services/dhcp/dhcp_network.tpl:51 +msgid "Enter name of server to retrieve bootimages from" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:59 +#, fuzzy +msgid "Domain Name Service" +msgstr "Сканер" + +#: admin/systems/services/dhcp/dhcp_network.tpl:62 +msgid "Domain" +msgstr "Домен" + +#: admin/systems/services/dhcp/dhcp_network.tpl:66 +#, fuzzy +msgid "Name of domain" +msgstr "Подразделение" + +#: admin/systems/services/dhcp/dhcp_network.tpl:73 +#, fuzzy +msgid "DNS server" +msgstr "Добавить сервис DNS" + +#: admin/systems/services/dhcp/dhcp_network.tpl:75 +msgid "List of DNS servers to be propagated" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:81 +#, fuzzy +msgid "DNS server do be added" +msgstr "Выбрать номера для добавления" + +#: admin/systems/services/dhcp/dhcp_network.tpl:84 +msgid "Click here add the selected server to the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:87 +msgid "Click here remove the selected servers from the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:93 +#, fuzzy +msgid "Domain Name Service options" +msgstr "Сканер" + +#: admin/systems/services/dhcp/dhcp_network.tpl:95 +msgid "Assign hostnames found via reverse mapping" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:99 +msgid "Assign hostnames from host declarations" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:2 +#, fuzzy +msgid "Create new DHCP section" +msgstr "Создать приложения" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:6 +msgid "Please choose one of the following DHCP section types." +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:9 +#, fuzzy +msgid "Section" +msgstr "Действие" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:10 +#, fuzzy +msgid "Choose section type to create" +msgstr "Выберите тип мыши" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:15 +msgid "Create" +msgstr "Создать" + +#: admin/systems/services/dhcp/dhcp_subnet.tpl:32 +msgid "Range for dynamic address assignment" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:13 +#, fuzzy +msgid "Name for shared network" +msgstr "Атрибуты UNIX" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:18 +#, fuzzy +msgid "Server identifier" +msgstr "Номер дома" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:22 +msgid "Propagated server identifier for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Select if this server is authoritative for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +#, fuzzy +msgid "Authoritative server" +msgstr "Рабочие станции" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:52 +#, fuzzy +msgid "Leases" +msgstr "Набор правил" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "seconds" +msgstr "отправка" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "Minimum lease time" +msgstr "Размер квоты" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:86 +#, fuzzy +msgid "Access control" +msgstr "Параметры доступа" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Select if unknown clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +#, fuzzy +msgid "Allow unknown clients" +msgstr "состояние неизвестно" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Select if bootp clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Allow bootp clients" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +#, fuzzy +msgid "Select if clients are allowed to boot using this DHCP server" +msgstr "У вас недостаточно прав для удаления этого объекта!" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Allow booting" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:33 +#: admin/systems/services/dhcp/class_servDHCP.inc:692 +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +#: admin/systems/services/dhcp/class_servDHCP.inc:739 +#, fuzzy +msgid "DHCP service" +msgstr "Добавить сервис DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:35 +#, fuzzy +msgid "Logging" +msgstr "Имя пользователя" + +#: admin/systems/services/dhcp/class_servDHCP.inc:36 +#: admin/systems/services/dhcp/class_servDHCP.inc:301 +#: admin/systems/services/dhcp/class_servDHCP.inc:604 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:26 +#, fuzzy +msgid "Global options" +msgstr "Почтовые настройки" + +#: admin/systems/services/dhcp/class_servDHCP.inc:37 +#, fuzzy +msgid "Class" +msgstr "Выберите тип мыши" + +#: admin/systems/services/dhcp/class_servDHCP.inc:38 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:28 +#, fuzzy +msgid "Subclass" +msgstr "Экспорт успешен." + +#: admin/systems/services/dhcp/class_servDHCP.inc:39 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:29 +#, fuzzy +msgid "Host" +msgstr "отправка" + +#: admin/systems/services/dhcp/class_servDHCP.inc:40 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:30 +msgid "Group" +msgstr "Группа" + +#: admin/systems/services/dhcp/class_servDHCP.inc:41 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:31 +#, fuzzy +msgid "Pool" +msgstr "Английский" + +#: admin/systems/services/dhcp/class_servDHCP.inc:42 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:32 +#, fuzzy +msgid "Subnet" +msgstr "Установить" + +#: admin/systems/services/dhcp/class_servDHCP.inc:43 +#, fuzzy +msgid "Failover peer" +msgstr "Фильтры" + +#: admin/systems/services/dhcp/class_servDHCP.inc:44 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:33 +#, fuzzy +msgid "Shared network" +msgstr "Атрибуты UNIX" + +#: admin/systems/services/dhcp/class_servDHCP.inc:103 +#, fuzzy, php-format +msgid "" +"You have requested a migration of the DHCP setup from server '%s' to the " +"current one." +msgstr "Вы собираетесь удалить объект %s." + +#: admin/systems/services/dhcp/class_servDHCP.inc:105 +msgid "The migration will be started when you save this system." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:222 +#, fuzzy +msgid "Permission error" +msgstr "Права для членов группы" + +#: admin/systems/services/dhcp/class_servDHCP.inc:256 +#, fuzzy +msgid "DHCP section" +msgstr "Проверка конфигурации PHP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:325 +#: admin/systems/services/dhcp/class_servDHCP.inc:328 +msgid "Insert new DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:326 +#: admin/systems/services/dhcp/class_servDHCP.inc:329 +#: admin/systems/services/dhcp/class_servDHCP.inc:330 +#, fuzzy +msgid "Edit DHCP section" +msgstr "Проверка конфигурации PHP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:327 +#: admin/systems/services/dhcp/class_servDHCP.inc:331 +#, fuzzy +msgid "Remove DHCP section" +msgstr "Удалить сервис DHCP" + +#: admin/systems/services/dhcp/class_servDHCP.inc:378 +#: admin/systems/services/dhcp/class_servDHCP.inc:395 +#: admin/systems/services/dhcp/class_servDHCP.inc:450 +#: admin/systems/services/dhcp/class_servDHCP.inc:526 +#: admin/systems/services/dhcp/class_servDHCP.inc:534 +#: admin/systems/services/dhcp/class_servDHCP.inc:561 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#, fuzzy +msgid "" +"The DHCP configuration set is unkown. Please contact your system " +"administrator." +msgstr "" +"Не удается начать сеанс на LDAP-сервере. Обратитесь к системному " +"администратору." + +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/dhcp/class_servDHCP.inc:701 +#, fuzzy +msgid "Start service" +msgstr "Сервисы" + +#: admin/systems/services/dhcp/class_servDHCP.inc:702 +#, fuzzy +msgid "Stop service" +msgstr "Сервисы" + +#: admin/systems/services/dhcp/class_servDHCP.inc:703 +#, fuzzy +msgid "Restart service" +msgstr "Сервер NTP" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Cannot delete automatic statements!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:84 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:93 +msgid "automatic" +msgstr "автоматически" + +#: admin/systems/services/dhcp/dhcp_pool.tpl:9 +#, fuzzy +msgid "Name of pool" +msgstr "Имя стоп-листа" + +#: admin/systems/services/dhcp/dhcp_group.tpl:11 +#, fuzzy +msgid "Name of group" +msgstr "Название группы" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Сервисы" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Сервисы" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Искать в поддеревьях" + +#, fuzzy +#~ msgid "May lease time" +#~ msgstr "Сообщение" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Required field 'Name' is not filled." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "The value specified as '%s' is not numeric!" +#~ msgstr "Значение '%s' содержит недопустимые символы." + +#, fuzzy +#~ msgid "The name for this host section is already used!" +#~ msgstr "Указанное имя уже используется." + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "The name for this section is already used!" +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "Required field 'Range' is not filled." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP addresses." +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP range." +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#, fuzzy +#~ msgid "Required field 'Network address' is not filled." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "Required field 'Netmask' is not filled." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "The field '%s' contains an invalid IP address" +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#, fuzzy +#~ msgid "Field 'Name' contains illegal characters." +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#, fuzzy +#~ msgid "The hardware address specified by you is not valid!" +#~ msgstr "Значение поля \"Отношение\" некорректно." + +#, fuzzy +#~ msgid "You have no permission to remove DHCP sections!" +#~ msgstr "У вас недостаточно прав для удаления этого пользователя!" + +#, fuzzy +#~ msgid "You're about to delete the DHCP section '%s'." +#~ msgstr "Вы собираетесь удалить приложение \"%s\"." + +#, fuzzy +#~ msgid "Removing DHCP entries failed" +#~ msgstr "Удалить сервис DNS" + +#, fuzzy +#~ msgid "Can't remove DHCP object!" +#~ msgstr "Включаемые объекты" + +#, fuzzy +#~ msgid "Can't save DHCP object!" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Saving DHCP service failed" +#~ msgstr "Удалить сервис DNS" diff --git a/trunk/gosa-plugins/dhcp/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dhcp/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..930ce9584 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,710 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:65 +#, fuzzy +msgid "Ethernet" +msgstr "内联网" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:66 +msgid "FDDI" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:67 +msgid "Token Ring" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:143 +#: admin/systems/services/dhcp/class_dhcpHost.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:159 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:169 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:187 +#: admin/systems/services/dhcp/dhcp_host.tpl:8 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:10 +#: admin/systems/services/dhcp/class_dhcpPool.inc:113 +#: admin/systems/services/dhcp/class_dhcpPool.inc:121 +#: admin/systems/services/dhcp/dhcp_pool.tpl:6 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:96 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:99 +#: admin/systems/services/dhcp/class_dhcpGroup.inc:107 +#: admin/systems/services/dhcp/dhcp_group.tpl:6 +msgid "Name" +msgstr "名称" + +#: admin/systems/services/dhcp/class_dhcpHost.inc:160 +#: admin/systems/services/dhcp/dhcp_host.tpl:41 +#, fuzzy +msgid "Hardware address" +msgstr "主要地址" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:148 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:168 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:8 +msgid "Network address" +msgstr "网络地址" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:151 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:167 +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:17 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:16 +#, fuzzy +msgid "Netmask" +msgstr "Netatalk" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:169 +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:170 +#: admin/systems/services/dhcp/class_dhcpPool.inc:128 +#: admin/systems/services/dhcp/class_dhcpPool.inc:132 +#: admin/systems/services/dhcp/class_dhcpPool.inc:136 +#: admin/systems/services/dhcp/dhcp_pool.tpl:13 +#, fuzzy +msgid "Range" +msgstr "管理" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:179 +#, fuzzy +msgid "Network range" +msgstr "网络地址" + +#: admin/systems/services/dhcp/class_dhcpSubnet.inc:185 +#: admin/systems/services/dhcp/class_dhcpPool.inc:150 +msgid "'Range' is not inside the configured network." +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpService.inc:145 +#, fuzzy +msgid "Lease time" +msgstr "信息" + +#: admin/systems/services/dhcp/class_dhcpService.inc:148 +#, fuzzy +msgid "Max lease time" +msgstr "信息" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:173 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:55 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#, fuzzy +msgid "Default lease time" +msgstr "选择发行名称" + +#: admin/systems/services/dhcp/class_dhcpService.inc:151 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#, fuzzy +msgid "Maximum lease time" +msgstr "最大文件大小" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:45 +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Error" +msgstr "错误" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:211 +#: admin/systems/services/dhcp/dhcp_network.tpl:25 +msgid "Broadcast" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpNetwork.inc:218 +#, php-format +msgid "Error in definition of '%s'!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:174 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:64 +#, fuzzy +msgid "Max. lease time" +msgstr "信息" + +#: admin/systems/services/dhcp/class_dhcpSharedNetwork.inc:175 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:73 +msgid "Min. lease time" +msgstr "" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:2 +#: admin/systems/services/dhcp/class_servDHCP.inc:108 +msgid "Warning" +msgstr "警告" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:6 +#, fuzzy +msgid "" +"This includes 'all' DHCP subsections that are located within this section. " +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"这包含“所有”对象信息。请再次检查您是否要这么做,因为 GOsa 没有办法将您的数据" +"找回。" + +#: admin/systems/services/dhcp/remove_dhcp.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"最好在执行这个操作之前,保存当前 LDAP 树中的内容到一个文件。所以,如果您已经" +"这么做了,按“删除”继续或者按“取消”退出。" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:8 +#, fuzzy +msgid "Hide advanced settings" +msgstr "高级电话设置" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:15 +#, fuzzy +msgid "DHCP statements" +msgstr "部门" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:36 +#, fuzzy +msgid "DHCP options" +msgstr "文件系统选项" + +#: admin/systems/services/dhcp/dhcp_advanced.tpl:59 +#, fuzzy +msgid "Show advanced settings" +msgstr "高级电话设置" + +#: admin/systems/services/dhcp/dhcp_host.tpl:2 +#: admin/systems/services/dhcp/dhcp_service.tpl:1 +#: admin/systems/services/dhcp/dhcp_subnet.tpl:2 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:2 +#: admin/systems/services/dhcp/dhcp_pool.tpl:2 +#: admin/systems/services/dhcp/dhcp_group.tpl:2 +msgid "Generic" +msgstr "通用配置" + +#: admin/systems/services/dhcp/dhcp_host.tpl:12 +#, fuzzy +msgid "Name of host" +msgstr "黑名单名称" + +#: admin/systems/services/dhcp/dhcp_host.tpl:17 +#, fuzzy +msgid "Fixed address" +msgstr "邮件地址" + +#: admin/systems/services/dhcp/dhcp_host.tpl:22 +msgid "Use hostname or IP-address to assign fixed address" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_host.tpl:31 +msgid "Hardware type" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:7 +#, fuzzy +msgid "Authoritative service" +msgstr "工作站名称" + +#: admin/systems/services/dhcp/dhcp_service.tpl:10 +msgid "Dynamic DNS update" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:12 +msgid "Dynamic DNS update style" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:22 +msgid "Default lease time (s)" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:25 +msgid "Enter default lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/dhcp_service.tpl:30 +#, fuzzy +msgid "Maximum lease time (s)" +msgstr "最大文件大小" + +#: admin/systems/services/dhcp/dhcp_service.tpl:33 +msgid "Enter maximum lease time in seconds." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:5 +msgid "" +"DHCP take over will take place when saving this entry. Choose 'Cancel' to " +"abort." +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:14 +msgid "Take over dhcp configuration from following server" +msgstr "" + +#: admin/systems/services/dhcp/servdhcp.tpl:24 +#, fuzzy +msgid "DHCP sections" +msgstr "PHP 安装检查" + +#: admin/systems/services/dhcp/dhcp_network.tpl:5 +#, fuzzy +msgid "Network configuration" +msgstr "下载配置" + +#: admin/systems/services/dhcp/dhcp_network.tpl:8 +#, fuzzy +msgid "Router" +msgstr "计算机" + +#: admin/systems/services/dhcp/dhcp_network.tpl:12 +msgid "Enter name or IP address of router to be used in this section" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:35 +#, fuzzy +msgid "Bootup" +msgstr "æ ¹" + +#: admin/systems/services/dhcp/dhcp_network.tpl:38 +msgid "Filename" +msgstr "文件名" + +#: admin/systems/services/dhcp/dhcp_network.tpl:42 +msgid "" +"Enter name of file that will be loaded via tftp after client has started" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:47 +#, fuzzy +msgid "Next server" +msgstr "NTP 服务器" + +#: admin/systems/services/dhcp/dhcp_network.tpl:51 +msgid "Enter name of server to retrieve bootimages from" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:59 +#, fuzzy +msgid "Domain Name Service" +msgstr "时间服务" + +#: admin/systems/services/dhcp/dhcp_network.tpl:62 +msgid "Domain" +msgstr "域" + +#: admin/systems/services/dhcp/dhcp_network.tpl:66 +#, fuzzy +msgid "Name of domain" +msgstr "部门名称" + +#: admin/systems/services/dhcp/dhcp_network.tpl:73 +#, fuzzy +msgid "DNS server" +msgstr "添加 DNS 服务" + +#: admin/systems/services/dhcp/dhcp_network.tpl:75 +msgid "List of DNS servers to be propagated" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:81 +#, fuzzy +msgid "DNS server do be added" +msgstr "选择要添加的打印机" + +#: admin/systems/services/dhcp/dhcp_network.tpl:84 +msgid "Click here add the selected server to the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:87 +msgid "Click here remove the selected servers from the list" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:93 +#, fuzzy +msgid "Domain Name Service options" +msgstr "域管理员" + +#: admin/systems/services/dhcp/dhcp_network.tpl:95 +msgid "Assign hostnames found via reverse mapping" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_network.tpl:99 +msgid "Assign hostnames from host declarations" +msgstr "" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:2 +#, fuzzy +msgid "Create new DHCP section" +msgstr "创建新应用程序" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:6 +#, fuzzy +msgid "Please choose one of the following DHCP section types." +msgstr "请使用下面的一个方法来选择新 FAI 分类的名称。" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:9 +msgid "Section" +msgstr "节" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:10 +#, fuzzy +msgid "Choose section type to create" +msgstr "选择鼠标类型" + +#: admin/systems/services/dhcp/dhcpNewSection.tpl:15 +msgid "Create" +msgstr "创建" + +#: admin/systems/services/dhcp/dhcp_subnet.tpl:32 +msgid "Range for dynamic address assignment" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:13 +#, fuzzy +msgid "Name for shared network" +msgstr "SMTP 授权网络" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:18 +msgid "Server identifier" +msgstr "服务器标识" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:22 +msgid "Propagated server identifier for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +msgid "Select if this server is authoritative for this shared network" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:36 +#, fuzzy +msgid "Authoritative server" +msgstr "工作站名称" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:52 +#, fuzzy +msgid "Leases" +msgstr "发行" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:59 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:68 +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "seconds" +msgstr "(秒)" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:77 +#, fuzzy +msgid "Minimum lease time" +msgstr "最大文件大小" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:86 +#, fuzzy +msgid "Access control" +msgstr "访问选项" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +msgid "Select if unknown clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:92 +#, fuzzy +msgid "Allow unknown clients" +msgstr "! 未知 id" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Select if bootp clients should get dynamic IP addresses" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:100 +msgid "Allow bootp clients" +msgstr "" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +#, fuzzy +msgid "Select if clients are allowed to boot using this DHCP server" +msgstr "允许使用该打印机的用户" + +#: admin/systems/services/dhcp/dhcp_sharedNetwork.tpl:108 +msgid "Allow booting" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:33 +#: admin/systems/services/dhcp/class_servDHCP.inc:692 +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +#: admin/systems/services/dhcp/class_servDHCP.inc:739 +#, fuzzy +msgid "DHCP service" +msgstr "添加 DHCP 服务" + +#: admin/systems/services/dhcp/class_servDHCP.inc:35 +#, fuzzy +msgid "Logging" +msgstr "登录名" + +#: admin/systems/services/dhcp/class_servDHCP.inc:36 +#: admin/systems/services/dhcp/class_servDHCP.inc:301 +#: admin/systems/services/dhcp/class_servDHCP.inc:604 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:26 +#, fuzzy +msgid "Global options" +msgstr "邮件选项" + +#: admin/systems/services/dhcp/class_servDHCP.inc:37 +msgid "Class" +msgstr "ç±»" + +#: admin/systems/services/dhcp/class_servDHCP.inc:38 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:28 +#, fuzzy +msgid "Subclass" +msgstr "ç±»" + +#: admin/systems/services/dhcp/class_servDHCP.inc:39 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:29 +#, fuzzy +msgid "Host" +msgstr "è´´" + +#: admin/systems/services/dhcp/class_servDHCP.inc:40 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:30 +msgid "Group" +msgstr "组" + +#: admin/systems/services/dhcp/class_servDHCP.inc:41 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:31 +#, fuzzy +msgid "Pool" +msgstr "布尔值" + +#: admin/systems/services/dhcp/class_servDHCP.inc:42 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:32 +#, fuzzy +msgid "Subnet" +msgstr "提交" + +#: admin/systems/services/dhcp/class_servDHCP.inc:43 +#, fuzzy +msgid "Failover peer" +msgstr "过滤器" + +#: admin/systems/services/dhcp/class_servDHCP.inc:44 +#: admin/systems/services/dhcp/class_dhcpNewSectionDialog.inc:33 +#, fuzzy +msgid "Shared network" +msgstr "SMTP 授权网络" + +#: admin/systems/services/dhcp/class_servDHCP.inc:103 +#, fuzzy, php-format +msgid "" +"You have requested a migration of the DHCP setup from server '%s' to the " +"current one." +msgstr "您将要拷贝条目 '%s'。" + +#: admin/systems/services/dhcp/class_servDHCP.inc:105 +msgid "The migration will be started when you save this system." +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:222 +#, fuzzy +msgid "Permission error" +msgstr "允许" + +#: admin/systems/services/dhcp/class_servDHCP.inc:256 +#, fuzzy +msgid "DHCP section" +msgstr "PHP 安装检查" + +#: admin/systems/services/dhcp/class_servDHCP.inc:325 +#: admin/systems/services/dhcp/class_servDHCP.inc:328 +msgid "Insert new DHCP section" +msgstr "" + +#: admin/systems/services/dhcp/class_servDHCP.inc:326 +#: admin/systems/services/dhcp/class_servDHCP.inc:329 +#: admin/systems/services/dhcp/class_servDHCP.inc:330 +#, fuzzy +msgid "Edit DHCP section" +msgstr "PHP 安装检查" + +#: admin/systems/services/dhcp/class_servDHCP.inc:327 +#: admin/systems/services/dhcp/class_servDHCP.inc:331 +#, fuzzy +msgid "Remove DHCP section" +msgstr "删除 DHCP 服务" + +#: admin/systems/services/dhcp/class_servDHCP.inc:378 +#: admin/systems/services/dhcp/class_servDHCP.inc:395 +#: admin/systems/services/dhcp/class_servDHCP.inc:450 +#: admin/systems/services/dhcp/class_servDHCP.inc:526 +#: admin/systems/services/dhcp/class_servDHCP.inc:534 +#: admin/systems/services/dhcp/class_servDHCP.inc:561 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/systems/services/dhcp/class_servDHCP.inc:681 +#, fuzzy +msgid "" +"The DHCP configuration set is unkown. Please contact your system " +"administrator." +msgstr "账户锁定。请联系管理员。" + +#: admin/systems/services/dhcp/class_servDHCP.inc:693 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/dhcp/class_servDHCP.inc:701 +#, fuzzy +msgid "Start service" +msgstr "服务" + +#: admin/systems/services/dhcp/class_servDHCP.inc:702 +#, fuzzy +msgid "Stop service" +msgstr "服务" + +#: admin/systems/services/dhcp/class_servDHCP.inc:703 +#, fuzzy +msgid "Restart service" +msgstr "NTP 服务器" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:56 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:69 +msgid "Cannot delete automatic statements!" +msgstr "" + +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:84 +#: admin/systems/services/dhcp/class_dhcpAdvanced.inc:93 +msgid "automatic" +msgstr "自动" + +#: admin/systems/services/dhcp/dhcp_pool.tpl:9 +#, fuzzy +msgid "Name of pool" +msgstr "黑名单名称" + +#: admin/systems/services/dhcp/dhcp_group.tpl:11 +#, fuzzy +msgid "Name of group" +msgstr "组名称" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "服务" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "服务" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "在子树中查找" + +#, fuzzy +#~ msgid "May lease time" +#~ msgstr "信息" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Required field 'Name' is not filled." +#~ msgstr "需要的字段“名称”没有填写。" + +#, fuzzy +#~ msgid "The value specified as '%s' is not numeric!" +#~ msgstr "给出的数据 '%s' 包含无效字符!" + +#, fuzzy +#~ msgid "The name for this host section is already used!" +#~ msgstr "重命名失败,系统类型名称已经被使用。" + +#~ msgid "Delete" +#~ msgstr "删除" + +#, fuzzy +#~ msgid "The name for this section is already used!" +#~ msgstr "重命名失败,系统类型名称已经被使用。" + +#, fuzzy +#~ msgid "Required field 'Range' is not filled." +#~ msgstr "需要的字段“名称”没有填写。" + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP addresses." +#~ msgstr "“姓名”字段包含无效字符。" + +#, fuzzy +#~ msgid "Field 'Range' contains invalid IP range." +#~ msgstr "“姓名”字段包含无效字符。" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Apply" +#~ msgstr "应用" + +#, fuzzy +#~ msgid "Required field 'Network address' is not filled." +#~ msgstr "需要的字段“名称”没有填写。" + +#, fuzzy +#~ msgid "Required field 'Netmask' is not filled." +#~ msgstr "需要的字段“名称”没有填写。" + +#, fuzzy +#~ msgid "The field '%s' contains an invalid IP address" +#~ msgstr "IP 地址字段包含无效地址。" + +#, fuzzy +#~ msgid "Field 'Name' contains illegal characters." +#~ msgstr "“姓名”字段包含无效字符。" + +#, fuzzy +#~ msgid "The hardware address specified by you is not valid!" +#~ msgstr "提供的“Ratio”值无效。" + +#, fuzzy +#~ msgid "Default lease time needs to be numeric." +#~ msgstr "Sieve 端口应为数字。" + +#, fuzzy +#~ msgid "Maximum lease time needs to be numeric." +#~ msgstr "Sieve 端口应为数字。" + +#, fuzzy +#~ msgid "You have no permission to remove DHCP sections!" +#~ msgstr "您无权删除这个用户!" + +#, fuzzy +#~ msgid "You're about to delete the DHCP section '%s'." +#~ msgstr "您将要删除应用程序 '%s'。" + +#, fuzzy +#~ msgid "Removing DHCP entries failed" +#~ msgstr "保存 DNS 记录失败" + +#, fuzzy +#~ msgid "Can't remove DHCP object!" +#~ msgstr "成员对象" + +#, fuzzy +#~ msgid "Can't save DHCP object!" +#~ msgstr "无法保存文件 '%s'。" + +#, fuzzy +#~ msgid "Saving DHCP service failed" +#~ msgstr "更新 DNS 服务失败" diff --git a/trunk/gosa-plugins/dhcp/plugin.dsc b/trunk/gosa-plugins/dhcp/plugin.dsc new file mode 100644 index 000000000..8c0448e81 --- /dev/null +++ b/trunk/gosa-plugins/dhcp/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = dhcp +description = "DHCP service management plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = systems diff --git a/trunk/gosa-plugins/dns/admin/systems/services/dns/class_DNS.inc b/trunk/gosa-plugins/dns/admin/systems/services/dns/class_DNS.inc new file mode 100644 index 000000000..5976e813a --- /dev/null +++ b/trunk/gosa-plugins/dns/admin/systems/services/dns/class_DNS.inc @@ -0,0 +1,699 @@ + "aRecord", + 'mDRecord' => "mDRecord", + 'mXRecord' => "mXRecord", + 'nSRecord' => "nSRecord", + 'pTRRecord' => "relativeDomainName", + 'hInfoRecord' => "hInfoRecord", + 'mInfoRecord' => "mInfoRecord", + 'cNAMERecord' => "relativeDomainName", + 'tXTRecord' => "tXTRecord", + 'aFSDBRecord' => "aFSDBRecord", + 'SigRecord' => "SigRecord", + 'KeyRecord' => "KeyRecord", + 'aAAARecord' => "aAAARecord", + 'LocRecord' => "LocRecord", + 'nXTRecord' => "nXTRecord", + 'sRVRecord' => "sRVRecord", + 'nAPTRRecord' => "nAPTRRecord", + 'kXRecord' => "kXRecord", + 'certRecord' => "certRecord", + 'a6Record' => "a6Record", + 'dSRecord' => "dSRecord", + 'sSHFPRecord' => "sSHFPRecord", + 'rRSIGRecord' => "rRSIGRecord", + 'nSECRecord' => "nSECRecord"); + /* All available record types */ + /* Return all record types + */ + static function getDnsRecordTypes($ForZones = false) + { + if($ForZones){ + $tmp = DNS::$RecordTypes; + unset($tmp['cNAMERecord']); + unset($tmp['pTRRecord']); + unset($tmp['tXTRecord']); + return($tmp); + }else{ + return(DNS::$RecordTypes); + } + } + + + /* This fucntion is used to flip the ip address, for example + 12.3.45 -> 45.3.12 + Because some entries (like zones) are store like that 45.3.12.in-addr.arpa + but we want to display 12.3.45. + */ + static function FlipIp($ip) + { + $tmp = array_reverse(split("\.",$ip)); + $new = ""; + foreach($tmp as $section){ + $new .= $section."."; + } + return(preg_replace("/.$/","",$new)); + } + + + /* This static function returns the zones specified for given host + */ + static function getDNSZoneEntries($config,$HostDn,$silent = false) + { + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + + /* Not all records are allowed within a zone entry + */ + $SkipRecords = array("tXTRecord","cNAMERecord","pTRRecord"); + + /* Special sOArecords + */ + $sOAREcords = array("0"=>"sOAprimary","1"=>"sOAmail","2"=>"sOAserial","3"=>"sOArefresh","4"=>"sOAretry","5"=>"sOAexpire","6"=>"sOAttl"); + + /* Create tempalte for all fetched zone Data + */ + $ZoneBase = array(); + $ZoneBase['exists'] = false; + $ZoneBase['RECORDS'] = array(); + $ZoneBase['zoneName'] = array(); + $ZoneBase['dNSClass'] = array(); + + foreach($sOAREcords as $attr){ + $ZoneBase[$attr] = ""; + } + + $Zones = array(); + + /* Get & Parse all zone entries + */ + $ldap->ls("(&(objectClass=dNSZone)(zoneName=*)(relativeDomainName=@))",$HostDn,array("*")); + $tmp_res = array(); + while($attrs = $ldap->fetch()) { + $tmp_res[] = $attrs; + } + + /* Parse fetched zones + */ + foreach($tmp_res as $attrs){ + + $zoneName = $attrs['zoneName'][0]; + $Zones[$zoneName] = $ZoneBase; + $Zones[$zoneName]['exists'] = true; + + /* Set basic attributes + */ + foreach(array("zoneName","dNSClass") as $attr){ + if(isset($attrs[$attr][0])){ + $Zones[$zoneName][$attr] = $attrs[$attr][0]; + } + } + + /* Set initial zone name, to be able to detect if this entry was renamed + */ + $Zones[$zoneName]['InitialzoneName'] = $zoneName; + + /* Generate SOA entry + */ + if(isset($attrs['sOARecord'][0])){ + $tmp = split("\ ",$attrs['sOARecord'][0]) ; + $tmp2 = array(); + + /* Assign soa vars */ + foreach($sOAREcords as $key => $name){ + if(isset($tmp[$key])){ + $Zones[$zoneName][$name] = $tmp[$key]; + }else{ + $Zones[$zoneName][$name] = ""; + } + } + } // ENDE SOA Record + + /* Get record attributes + */ + foreach(DNS::$RecordTypes as $name => $value){ + + /* Skip some attributes + */ + if(in_array($name,$SkipRecords)) continue; + + /* If there is a record attribute + */ + if(isset($attrs[$name])){ + + /* get all entries + */ + for($i = 0 ; $i < $attrs[$value]['count']; $i ++){ + $Zones[$zoneName]['RECORDS'][] = array("type"=>$name,"value"=>$attrs[$value][$i]); + } + } + } + + /* Get reverse record .. + */ + $ldap->ls("(&(objectClass=dNSZone)(relativeDomainName=@)(zoneName=*))",$attrs['dn'],array("zoneName")); + + if($ldap->count() == 0){ + if(!$silent){ + msg_dialog::display(_("Error"), sprintf(_("Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted."),$zoneName), ERROR_DIALOG); + } + unset($Zones[$zoneName]); + }elseif($ldap->count()>1){ + if(!$silent){ + msg_dialog::display(_("Error"), sprintf(_("Found more than one reverse zone for '%s'. Parsing zone aborted."),$zoneName), ERROR_DIALOG); + } + unset($Zones[$zoneName]); + }else{ + $tmp = $ldap->fetch(); + $Zones[$zoneName]['ReverseZone'] = DNS::FlipIp(str_replace(".in-addr.arpa","",$tmp['zoneName'][0])); + $Zones[$zoneName]['InitialReverseZone'] = DNS::FlipIp(str_replace(".in-addr.arpa","",$tmp['zoneName'][0])); + } + } + return($Zones); + } + + + /* This static function compares two dns zone objects and returns an + * array with following indexes + * - delete, for dns which must be deleted (only if dns zone is removed) + * - rename, if a dn must be renamed, for example, the zoneName has changed + * - add, if there is a new dns account created + */ + static function getDNSZoneEntriesDiff($config,$newZones,$HostDn) + { + $oldZones = DNS::getDNSZoneEntries($config,$HostDn,true); + + $sOAattributes = array("sOAprimary","sOAmail","sOAserial","sOArefresh","sOAretry","sOAexpire","sOAttl"); + + $move = array(); + $add = array(); + $del = array(); + + /* Generate a template for zones with default values + */ + $zoneBase = array(); + $zoneBase['objectClass'] = array("top","dNSZone"); + $zoneBase['zoneName'] = ""; + $zoneBase['relativeDomainName'] = "@"; + $zoneBase['dNSClass'] = "IN"; + $zoneBase['sOARecord'] = ""; + + /* Contains all renamed zoneNames + * For zone entry udpdates + */ + $PrePareZoneEntries = array(); + + /* Walk through all zones and detect renamed/added/deleted zones ... + */ + foreach($newZones as $name => $zone){ + + /* This zone was renamed + */ + if((!empty($zone['InitialzoneName'])) && ($zone['InitialzoneName'] != $zone['zoneName'])){ + + /* Move old zone to new position + */ + $oldDn = "zoneName=".$zone['InitialzoneName'].",".$HostDn; + $newDn = "zoneName=".$zone['zoneName'].",".$HostDn; + $PrePareZoneEntries[$zone['InitialzoneName']] = $zone['zoneName']; + $move [$oldDn] = $newDn; + } + + /* Get old zone if available + */ + $oldZone=array(); + if(!empty($oldZones[$zone['InitialzoneName']])){ + $oldZone = $oldZones[$zone['InitialzoneName']]; + } + + /* Create forward zone entry and put it in our add queue + */ + $newDn = "zoneName=".$zone['zoneName'].",".$HostDn; + $obj = $zoneBase; + $obj['zoneName'] = $zone['zoneName']; + + /* Create sOARecord & add it to the obj + */ + $soa = ""; + foreach($sOAattributes as $attr){ + $soa.=" ".$zone[$attr]; + } + $obj['sOARecord'] = trim($soa); + $obj['nSRecord'] = $zone['sOAprimary']; + + /* If reverse zone was renamed, move entry + */ + if(!empty($zone['InitialReverseZone'])){ + if($zone['InitialReverseZone'] != $zone['ReverseZone']){ + $base = "zoneName=".$zone['zoneName'].",".$HostDn; + $oldRDn = "zoneName=". DNS::FlipIp($zone['InitialReverseZone']).".in-addr.arpa,".$base; + $newRDn = "zoneName=". DNS::FlipIp($zone['ReverseZone']).".in-addr.arpa,".$base; + $PrePareZoneEntries[DNS::FlipIp($zone['InitialReverseZone']).".in-addr.arpa"] = DNS::FlipIp($zone['ReverseZone']).".in-addr.arpa"; + $move [$oldRDn] = $newRDn; + } + } + + /* Append record entries + * Set old value to array, to ensure that + * they will be deleted if necessary + */ + if(isset($oldZone['RECORDS'])){ + foreach($oldZone['RECORDS'] as $rec){ + $obj[$rec['type']] = array(); + } + } + + /* Add new Records + */ + foreach($zone['RECORDS'] as $rec){ + if(!isset($obj[$rec['type']])||!is_array($obj[$rec['type']])){ + $obj[$rec['type']] = array(); + } + $obj[$rec['type']][] = $rec['value']; + } + + /* Append udpated Zone Forward Entry to our add queue + */ + $add[$newDn] = $obj; + + /* Create Reverse Entry + * And append it to our add queue + */ + $zone['ReverseZone'] = DNS::FlipIp($zone['ReverseZone']).".in-addr.arpa"; + $base = "zoneName=".$zone['zoneName'].",".$HostDn; + $newRDn = "zoneName=".$zone['ReverseZone'].",".$base; + $rObj = $obj; + $rObj['zoneName']= $zone['ReverseZone']; + $add[$newRDn] = $rObj; + + /* Remove currently managed zone from oldZones. + * this gives us the ability to detect removed zones + */ + if(isset($oldZones[$zone['InitialzoneName']])){ + unset($oldZones[$zone['InitialzoneName']]); + } + } + + /* The rest of our oldZones must be deleted + * because they are no longer available in newZones anymore. + */ + foreach($oldZones as $zone) { + $oldDn = "zoneName=".$zone['InitialzoneName'].",".$HostDn; + $del[$oldDn] = $zone; + } + + /* Check for entries which must be updated + */ + $zoneUpdates = array(); + $udpate = array(); + if(count($PrePareZoneEntries)){ + $ldap = $config->get_ldap_link(); + foreach($PrePareZoneEntries as $FromZoneName => $ToZoneName){ + $ldap->cd($HostDn); + $ldap->search("(&(objectClass=dNSZone)(zoneName=".$FromZoneName.")(!(relativeDomainName=@)))",array("zoneName")); + while($attrs = $ldap->fetch()){ + $zoneUpdates[$attrs['dn']] = array("zoneName"=>$ToZoneName); + } + } + } + + $ret = array("del" => $del , "move" => $move , "add" => $add,"zoneUpdates"=>$zoneUpdates); + return($ret); + } + + + /* This static function returns the dns-host eintries for given + * name. + */ + static function getDNSHostEntries($config,$name,$silent = false) + { + $types = array(); + $ret = array(); + $ret['RECORDS'] = array(); + $ret['dNSClass'] = "IN"; + $ret['zoneName'] = ""; + $ret['dNSTTL'] = ""; + $ret['exists'] = false; + + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + + /* First check all zones for an entry with the given name. + * If the name occurs in more than one entry alert the user ... + */ + $foundIn = array(); + $zones = DNS::getAvailableZones($config); + $zonesArr = array(); + foreach($zones as $zoneMix){ + $zoneIndex = split("/",$zoneMix); + if(!array_key_exists($zoneIndex[0],$zonesArr)) { + $zonesArr[$zoneIndex[0]] = array(); + } + array_push($zonesArr[$zoneIndex[0]],$zoneIndex[1]); + } + + foreach($zonesArr as $nameServer => $nameServerArr){ + $foundInTmp = array(); + foreach($nameServerArr as $zoneArr => $zone){ + + /* Strip eventually domain part from hostname + */ + $zN = trim($zone,"."); + $nN = trim($name,"."); + if(preg_match("/".preg_quote($zN, '/')."$/",$nN)){ + $nN = preg_replace("/[\.]*".preg_quote($zN, '/')."[\.]*$/","",$nN); + }else{ + $nN = $name; + } + $zoneMix = $nameServer."/".$zone; + $zoneDn = DNS::getDNSZoneDN($config,$zoneMix); + $ldap->ls("(&(objectClass=dNSZone)(zoneName=*)(relativeDomainName=".$nN.")(!(relativeDomainName=@)))", $zoneDn,$attrs = array("*")); + while($attrs = $ldap->fetch()){ + $foundInTmp [$zoneMix] = $attrs['dn']; + $foundIn [$zoneMix] = $attrs['dn']; + } + } + } + + /* No zone found which contains an entry for us + */ + if(count($foundIn) == 0){ + return($ret); + } + + /* Get host informations from zone + */ + $id_tmp = key($foundIn); + $ldap->cd($foundIn[$id_tmp]); + $ldap->search("(&(objectClass=dNSZone)(zoneName=*)(!(relativeDomainName=@)))",array("*")); + while($attrs = $ldap->fetch()){ + + /* Strip eventually domain part from hostname + */ + $zN = trim($attrs['zoneName'][0],"."); + $nN = trim($name,"."); + $testname = $attrs['relativeDomainName'][0].".".$zN; + + /* Check given host name with zone settings + */ + if(preg_match("/".preg_quote($testname, '/')."[\.]*$/",$nN) || $attrs['relativeDomainName'][0] == $name){ + $ret['exists'] = true; + $ret['zoneName'] = $id_tmp; + foreach(array("dNSClass","dNSTTL") as $atr){ + if(isset($attrs[$atr][0])){ + $ret[$atr] = $attrs[$atr][0]; + } + } + } + + /* Create list with all used records */ + foreach(DNS::$RecordTypes as $name => $value){ + + /* If there is a record attribute */ + if(isset($attrs[$name])){ + + /* get all entries */ + for($i = 0 ; $i < $attrs[$value]['count']; $i ++){ + $types[] = array( "type" => $name, + "value" => $attrs[$value][$i]); + } + } + } + $ret['RECORDS'] = $types; + } + return($ret); + } + + + + /* This static function compares two dns settings and returns an + * array with following indexes + * - delete, for dns which must be deleted (only if dns account is removed) + * - rename, if a dn must be renamed, for example, the relativeDomainName has changed + * - add, if there is a new dns account created + */ + static function getDNSHostEntriesDiff($config,$oldName,$newEntry,$newName) + { + $oldEntry = DNS::getDNSHostEntries($config,$oldName); + + $add = array(); + $del = array(); + $move = array(); + + /* Don't go further if there is nothing to do + * Is no account / was no account + */ + if(($newEntry['exists'] == false )&& ($oldEntry['exists'] == false)){ + return(array("move"=>$move,"add"=>$add,"del"=>$del)); + } + + $zones = DNS::getAvailableZones($config); + $specialAttributes = array("cNAMERecord","pTRRecord"); + $newRecords = array(); // Used to remember which records are removed + $zoneNameMix = $newEntry['zoneName']; + $zoneDn = DNS::getDNSZoneDN($config,$zoneNameMix); + $tmp = array_flip($zones); + $zoneName = DNS::getNameFromMix($zoneNameMix); + + /* Strip domain part out of dns host entry + */ + $zN = trim($zoneName,"."); + $nN = trim($newName,"."); + $oN = trim($oldName,"."); + $newName = preg_replace("/[\.]*".preg_quote($zN, '/')."$/i","",$nN); + $oldName = preg_replace("/[\.]*".preg_quote($zN, '/')."$/i","",$oN); + + /* If reverseZone can't be resolved ... this + * can't be a valid entry, so remove this account + */ + if(isset($tmp[$zoneNameMix])){ + $reverseNameMix = $tmp[$zoneNameMix]; + $reverseDn = DNS::getDNSZoneDN($config,$reverseNameMix); + if(empty($reverseDn)){ + $newEntry['exists'] = false; + } + }else{ + $newEntry['exists'] = false; + } + + /* If account was edited prepare some + * attributes & arrays ... if required add some + * dns to $move + */ + if($oldEntry['exists']){ + + /* Check if the account was removed + */ + if($newEntry['exists'] == false){ + $dn = "relativeDomainName=".$oldName.",".DNS::getDNSZoneDN($config,$oldEntry['zoneName']); + $del[$dn] =""; + return(array("move"=>$move,"add"=>$add,"del"=>$del)); + } + + /* Check if zoneName has changed + */ + if(count($newEntry['RECORDS'])){ + if($oldEntry['zoneName'] != $newEntry['zoneName']){ + $oldzoneDn = DNS::getDNSZoneDN($config,$oldEntry['zoneName']); + $dn = "relativeDomainName=".$oldName.",".$oldzoneDn; + $dn2= "relativeDomainName=".$oldName.",".$zoneDn; + $move[$dn]=$dn2; + } + + /* Check if host name has changed + */ + if($oldName != $newName){ + $dn = "relativeDomainName=".$oldName.",".$zoneDn; + $dn2= "relativeDomainName=".$newName.",".$zoneDn; + $move[$dn]=$dn2; + $dn = "relativeDomainName=".$oldName.",".$dn2; + $dn2= "relativeDomainName=".$newName.",".$dn2; + $move[$dn]=$dn2; + } + } + + /* Prepare record entries + * Fill old records with array(); + * To ensure that they will be deleted if they stay unused + */ + foreach($oldEntry['RECORDS'] as $id => $rec){ + $newRecords[$rec['type']] = array(); + } + } + + /* There must be at least one record in our entry + */ + if((!count($newEntry['RECORDS'])) || (!$newEntry['exists'])){ + $dn = "relativeDomainName=".$newName.",".DNS::getDNSZoneDN($config,$oldEntry['zoneName']); + $del[$dn] =""; + $ret = array("move"=>$move,"add"=>$add,"del"=>$del); + return($ret); + } + + /* Prepare temp obj + */ + $baseObj = array(); + $baseObj['objectClass'] = array("top","dNSZone"); + if(!empty($newEntry['dNSTTL'])){ + $baseObj['dNSTTL'] = $newEntry['dNSTTL']; + } + $baseObj['dNSClass'] = $newEntry['dNSClass']; + $baseObj['zoneName'] = $zoneName; + $baseObj['relativeDomainName']= $newName; + + /* Add Container Object to zone + * (this possibly already exists, check this before writing to ldap) + */ + $baseDn = "relativeDomainName=".$newName.",".$zoneDn; + $add[$baseDn] = $baseObj; + + /* Add base obejct which contains all std records + */ + $stdDn = "relativeDomainName=".$newName.",".$baseDn; + $add[$stdDn] = $baseObj; + + /* Set defaults. Normaly only contains old record names. + * The old names will be set to array, to ensure that they will be deleted. + * Or overwritten and filled with new values. + */ + foreach($newRecords as $name => $def){ + if(!in_array($name,$specialAttributes)){ + $add[$stdDn][$name] = $def; + } + } + + /* Delete all OLD special attributes. + */ + foreach($oldEntry['RECORDS'] as $id => $rec){ + if(in_array($rec['type'],$specialAttributes)){ + $deldn= "relativeDomainName=".$rec['value'].",".$baseDn; + $del[$deldn] = ""; + } + } + + + /* Create new record entries + */ + foreach($newEntry['RECORDS'] as $id => $rec){ + /* Create object which contains special records + * like pTRRecord or CNAMERecord + */ + if($rec['type'] == "pTRRecord"){ + $PTRdn= "relativeDomainName=".DNS::FlipIP($rec['value']).",".$baseDn; + $ptrObj = $baseObj; + $reverseName = DNS::getNameFromMix($reverseNameMix); + $ptrObj['zoneName'] = $reverseName; + if(!preg_match("/\.$/",$newName)){ + $ptrObj['pTRRecord'] = preg_replace("/\.\.$/",".",$newName.".".$zoneName."."); + }else{ + $ptrObj['pTRRecord'] = preg_replace("/\.\.$/",".",$newName."."); + } + $ptrObj['relativeDomainName'] = DNS::FlipIP($rec['value']); + + $add[$PTRdn] = $ptrObj; + }else + if($rec['type'] == "cNAMERecord"){ + $PTRdn= "relativeDomainName=".$rec['value'].",".$baseDn; + $ptrObj = $baseObj; + $ptrObj['zoneName'] = $zoneName; + $ptrObj['cNAMERecord'] = $newName; + $ptrObj['relativeDomainName'] = $rec['value']; + + $add[$PTRdn] = $ptrObj; + }else{ + /* Append basic attributes + */ + $add[$stdDn][$rec['type']][] = $rec['value']; + } + } // foreach record + + $ret = array("move"=>$move,"add"=>$add,"del"=>$del); + return($ret); + } + + static function getNameFromMix($zoneMix){ + $ret = ""; + if(!strstr($zoneMix, '/')) return($ret); + $zoneIndex = split("/",$zoneMix); + return($zoneIndex[1]); + } + + /* returns the dn for a specified zone + */ + static function getDNSZoneDN($config,$zoneNameMix) + { + $ret = ""; + if(!strstr($zoneNameMix, '/')) { + msg_dialog::display(_("Error"), sprintf(_("Undefined zone name '%s'!"),$zoneNameMix), ERROR_DIALOG); + return($ret); + } + + $zoneNameIndex = split("/",$zoneNameMix); + $zoneName = $zoneNameIndex[1]; + $nameServer = strtolower($zoneNameIndex[0]); + $ldap = $config->get_ldap_link(); + + /* search for the nameserver */ + $ldap-> cd($config->current['BASE']); + $ldap->search("(&(objectClass=goServer)(cn=".$nameServer."))",array("cn")); + if($ldap->count()){ + $attr = $ldap->fetch(); + } else { + return($ret); + } + + $ldap-> cd($attr['dn']); + $ldap->search("(&(objectClass=dNSZone)(sOARecord=*)(zoneName=".$zoneName."))",array("zoneName")); + if($ldap->count()){ + $attr = $ldap->fetch(); + return($attr['dn']); + } + + return($ret); + } + + + /* returns all available zones + * array[reverseName] = zoneName; + */ + static function getAvailableZones($config) + { + $ReverseZones = $ForwardZones = $zones = array(); + $runtime_cache = session::get("runtime_cache"); + if(!isset($runtime_cache['DNS']['getAvailableZones'])){ + + $ret = array(); + $ldap = $config->get_ldap_link(); + $tmp = get_sub_list("(&(objectClass=dNSZone)(sOARecord=*))","",get_ou("serverRDN"), + $config->current['BASE'],array("zoneName"),GL_NO_ACL_CHECK | GL_SUBSEARCH); + + foreach($tmp as $at){ + if(preg_match("/\.in\-addr\.arpa/",$at['zoneName'][0])){ + $ReverseZones[$at['dn']] = $at; + }else{ + $ForwardZones[$at['dn']] = $at; + } + } + + foreach($ForwardZones as $dn => $obj){ + + /* try to find reverse + */ + foreach($ReverseZones as $Rdn => $Robj ){ + if(preg_match("/".$dn."/",$Rdn)){ + $zones[strtoupper($ldap->getCn($dn))."/".$Robj['zoneName'][0]] = + strtoupper($ldap->getCn($dn))."/".$obj['zoneName'][0]; + } + } + } + $runtime_cache['DNS']['getAvailableZones'] = $zones; + session::set("runtime_cache",$runtime_cache); + } + return($runtime_cache['DNS']['getAvailableZones']); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNS.inc b/trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNS.inc new file mode 100644 index 000000000..59e15d712 --- /dev/null +++ b/trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNS.inc @@ -0,0 +1,610 @@ + array(),"FOR_LIST"=> array()); + var $take_over_id = -1; + + + function servdns (&$config, $dn= NULL, $parent= NULL) + { + plugin::plugin ($config, $dn, $parent); + + $this->DisplayName = _("DNS service"); + + $this->orig_dn = $dn; + + /* Get record types for zones + */ + $this->RecordTypes = DNS::getDnsRecordTypes(true); + + /* Get all zone Informations + */ + $this->Zones = DNS::getDNSZoneEntries($config,$dn); + + /* If there is at least one entry in this -> types, we have DNS enabled + */ + if(count($this->Zones) == 0){ + $this->is_account = false; + $this->dns_server_list = $this->get_list_of_dns_servers(); + }else{ + $this->is_account = true; + } + $this->initially_was_account = $this->is_account; + } + + + function get_list_of_dns_servers() + { + $ret = array("ENTRIES"=> array(),"FOR_LIST"=> array()); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=dNSZone)(zoneName=*))",array("dn","zoneName")); + $dns = array(); + while($attrs = $ldap->fetch()){ + /* Skip own config */ + if($this->dn != "new" && preg_match("/".preg_quote($this->dn, '/')."$/",$attrs['dn'])){ + continue; + } + $dn = preg_replace("/^zoneName=[^,]+,/","",$attrs['dn']); + if(preg_match("/^cn=/",$dn) && !in_array($dn,$dns)){ + $dns[] = $dn; + } + } + $i = 0; + foreach($dns as $dn){ + $ldap->cat($dn,array('*')); + if($ldap->count()){ + $i ++; + $attrs = $ldap->fetch(); + $ret['ENTRIES'][$i] = $attrs; + $ret['FOR_LIST'][$i] = $attrs['cn'][0]; + } + } + return($ret); + } + + + function get_dns_info_string($id) + { + $ret=""; + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dns_server_list['ENTRIES'][$id]['dn']); + $ldap->search("(|(zoneName=*)(relativeDomainName=*))",array("dn")); + while($attrs = $ldap->fetch()){ + $ret .= $attrs['dn']."\n"; + } + return($ret); + } + + + function execute() + { + /* Call parent execute + */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /* Fill templating stuff + */ + $smarty= get_smarty(); + $smarty->assign("dns_take_over",FALSE); + $smarty->assign("is_createable",$this->acl_is_createable()); + $display= ""; + + + $this->initially_was_account= $this->is_account; + /*****************/ + /* Handle Take Over Actions + /*****************/ + + /* Give smarty the required informations */ + $smarty->assign("dns_server_list", $this->dns_server_list['FOR_LIST']); + $smarty->assign("dns_server_list_cnt", count($this->dns_server_list['FOR_LIST'])); + + /* Take over requested, save id */ + if(isset($_POST['take_over_src']) && isset($_POST['take_over'])){ + $id = $_POST['take_over_src']; + if(isset($this->dns_server_list['ENTRIES'][$id])){ + $this->take_over_id = $id; + } + } + + /* Abort take over action */ + if(isset($_POST['cancel_take_over'])){ + $this->dialog =false; + $this->take_over_id = -1; + $this->dns_server_list = $this->get_list_of_dns_servers(); + } + + /* Display informartion about take over that will be started when saving this server + * and hide default dns output + */ + if($this->take_over_id != -1){ + $this->dialog = FALSE; + $id = $this->take_over_id; + $info = $this->get_dns_info_string($id); + $smarty->assign("dns_take_over",TRUE); + $smarty->assign("info",$info); + $warning = sprintf(_("You are going to migrate the DNS setup from server '%s'."),$this->dns_server_list['ENTRIES'][$id]['cn'][0]); + $warning2 = _("The migration will be started when you save this system. To cancel this action, use the cancel button below."); + $smarty->assign("warning",$warning); + $smarty->assign("warning2",$warning2); + return($smarty->fetch(get_template_path('servdns.tpl', TRUE, dirname(__FILE__)))); + } + + + /* Do we need to flip is_account state? + */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove DNS service"), + _("This server has DNS features enabled. You can disable them by clicking below.")); + } else { + $display= $this->show_enable_header(_("Add DNS service"), + _("This server has DNS features disabled. You can enable them by clicking below.")); + return ($display); + } + + + /* Edited or Added zone + */ + if(isset($_POST['SaveZoneChanges'])){ + $this->dialog->save_object(); + + /* Check for errors + */ + if(count($this->dialog->check())){ + foreach($this->dialog->check() as $msgs){ + msg_dialog::display(_("Error"), $msgs, ERROR_DIALOG); + } + }else{ + /* add new/edited zone + */ + $ret = $this->dialog->save(); + if(!$this->dialog->isNew){ + unset($this->Zones[$this->dialog->OldZoneName]); + } + $this->Zones[$ret['zoneName']] = $ret; + $this->dialog = FALSE; + } + } + + /* Cancel zone edit / new + */ + if(isset($_POST['CancelZoneChanges'])){ + $this->dialog = FALSE; + } + + /* Add empty new zone + */ + if(isset($_POST['AddZone'])){ + $this->dialog = new servdnseditZone($this->config,$this->dn); + if($this->is_new){ + $this->dialog->acl_base = $this->acl_base; + } + } + + /* Check for edit zone request + */ + $once = false; + foreach( $_POST as $name => $value){ + + /* check all post for edit request + */ + if(preg_match("/^editZone_/",$name)&&!$once){ + $once =true; + $tmp = preg_replace("/^editZone_/","",$name); + $tmp = base64_decode(preg_replace("/_.*$/","",$tmp)); + $this->dialog= new servdnseditZone($this->config,$this->dn,$this->Zones[$tmp]); + } + + /* check posts for delete zone + */ + if(preg_match("/^delZone_/",$name)&&!$once){ + + $once =true; + $tmp = preg_replace("/^delZone_/","",$name); + $tmp = base64_decode(preg_replace("/_.*$/","",$tmp)); + + /* Initiate deletion + */ + $this->RemoveZone($tmp); + } + } + + if(isset($_GET['act']) && $_GET['act'] == "edit" && isset($_GET['id'])){ + $id = base64_decode($_GET['id']); + if(isset($this->Zones[$id])){ + $this->dialog= new servdnseditZone($this->config,$this->dn,$this->Zones[$id]); + } + } + + if(isset($_GET['act']) && $_GET['act'] == "edit" && isset($_GET['id'])){ + $id = base64_decode($_GET['id']); + if(isset($this->Zones[$id])){ + $this->dialog= new servdnseditZone($this->config,$this->dn,$this->Zones[$id]); + } + } + + /* Show dialog + */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + $this->dialog->parent = $this; + return($this->dialog->execute()); + } + + /* Create Listbox with existing Zones + */ + $ZoneList = new divSelectBox("dNSZones"); + $ZoneList -> SetHeight(254); + + /* Add entries to divlist + */ + $editImg = ""; + if($this->acl_is_removeable()){ + $editImg.= ""; + } + + $link = "%s"; + foreach($this->Zones as $zone => $values ){ + $ZoneList->AddEntry(array( + array("string" => sprintf($link,base64_encode($zone),($zone))), + array("string" => sprintf($link,base64_encode($zone),_("Reverse zone")." : ".($values['ReverseZone']))), + array("string" => _("TTL")." : ".$values['sOAttl']), + array("string" => _("Class")." : ".$values['dNSClass']), + array("string" =>str_replace("%s",base64_encode($zone),$editImg)) + )); + } + + /* Display tempalte + */ + $smarty->assign("ZoneList",$ZoneList->DrawList()); + $display.= $smarty->fetch(get_template_path('servdns.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + + /* Delete specified zone + */ + function RemoveZone($id,$force = FALSE) + { + $zones = $this->getUsedZoneNames(); + + if(isset($this->Zones[$id]['InitialReverseZone'])){ + $rev = DNS::FlipIp($this->Zones[$id]['InitialReverseZone']); + }else{ + $rev = DNS::FlipIp($this->Zones[$id]['ReverseZone']); + } + + $zonename = ""; + if(isset($this->Zones[$id]['InitialzoneName'])){ + $zonename= $this->Zones[$id]['InitialzoneName']; + } + + $used = array(); + + /* Add Records which use this zoneName + */ + if(isset($zones[$zonename])){ + $used = array_merge($used,$zones[$zonename]); + } + + /* Add Records which uses this reverse zone + */ + if(isset($zones[$rev.".in-addr.arpa"])){ + $used = array_merge($used,$zones[$rev.".in-addr.arpa"]); + } + + /* There are still entries using this configuration + * Abort deletion + */ + if(count($used) && !$force){ + $i = 2; + $str =""; + foreach($used as $dn){ + if($i > 0 && !preg_match("/,relativeDomainName=/",$dn)){ + $i --; + $name = preg_replace("/^[^=]+=([^,]*),.*$/","\\1",$dn); + $zone = preg_replace("/^.*zoneName=([^,]*),.*$/","\\1",$dn); + $str.= $name.".".$zone." "; + } + } + + /* Only show 2 dns in the error message + */ + if(count($used)> 2) { + $str .=" ... "; + } + msg_dialog::display(_("Error"), sprintf(_("Cannot delete the selected zone. It is still in use by '%s'"), trim($str)), ERROR_DIALOG); + return(false); + }else{ + unset($this->Zones[$id]); + return(true); + } + } + + + /* This funtion returns all used Zonenames + */ + function getUsedZoneNames() + { + $ret = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=dNSZone)(!(relativeDomainName=@))(zoneName=*))",array("zoneName","relativeDomainName")); + while($attr = $ldap->fetch()){ + $ret[$attr['zoneName'][0]][] = $attr['dn']; + } + return($ret); + } + + + /* Remove dns service + */ + function remove_from_parent() + { + if($this->initially_was_account){ + $bool = true; + $this->is_account = FALSE; + foreach($this->Zones as $key => $zone){ + $bool= $bool & $this->RemoveZone($key,TRUE); + } + if($bool){ + $this->save(); + } + return($bool); + } + } + + + /* Save to LDAP */ + function save() + { + + /* Take over handling + * - Create list of zones managed by source server + * - Copy ldap entries to destination server + * - Remove old zone entries from source + */ + if($this->take_over_id != -1){ + $del = array(); + $id = $this->take_over_id; + $src = $this->dns_server_list['ENTRIES'][$id]['dn']; + $ldap = $this->config->get_ldap_link(); + $ldap->ls("(objectClass=dnsZone)",$src,array('cn')); + while($attrs = $ldap->fetch()){ + $src_zone = $attrs['dn']; + $dst_zone = preg_replace("/".preg_quote($src, '/')."$/",$this->dn,$src_zone); + $res = plugin::recursive_move($src_zone, $dst_zone); + + if($res){ + $del [] = $src_zone; + } + } + foreach($del as $src_zone){ + $ldap->rmdir_recursive($src_zone); + } + return; + } + + /* Save zone editor changes now */ + foreach($this->Zones as $name => $zone){ + if(isset($zone['zoneEditor'] ) && $zone['zoneEditor'] != NULL && is_object($zone['zoneEditor'])){ + $zone['zoneEditor']->save(); + unset($this->Zones[$name]['zoneEditor']);; + } + } + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + /* Get differences + */ + $old_dn = $this->orig_dn; + if($old_dn == "new"){ + $old_dn = $this->dn; + } + + /* Update dns to current object dn */ + $tmp = DNS::getDNSZoneEntriesDiff($this->config,$this->Zones,$old_dn); + $tmp2 = array(); + foreach($tmp as $key1 => $data1){ + $tmp2[$key1] = array(); + foreach($data1 as $key2 => $data2){ + $tmp2[$key1][preg_replace("/".preg_quote($old_dn, '/')."$/",$this->dn,$key2)] = $data2; + } + } + $tmp = $tmp2; + + /* Updated zone entries if reverser or forward name has changed + * Must be done before moving entries, else the given dn is invalid + */ + if(isset($tmp['zoneUpdates'])){ + foreach($tmp['zoneUpdates'] as $dn => $attrs){ + $ldap->cd($dn); + $ldap->modify($attrs); + new log("modify","unknown/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + } + } + + /* Delete dns + */ + foreach($tmp['del'] as $dn => $del){ + + $for = $del['InitialzoneName']; + $rev = DNS::FlipIp($del['InitialReverseZone']).".in-addr.arpa"; + + $ldap->cd($dn); + $ldap->rmdir_recursive($dn); + new log("remove","unknown/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + + /* Handle Post events */ + if(preg_match("/^zoneName=/",$dn)){ +# $this->handle_post_events("remove",array("dn" => $dn,"zoneName" => $for)); +# $this->handle_post_events("remove",array("dn" => $dn,"zoneName" => $rev)); + } + } + + /* move follwoing entries + */ + foreach($tmp['move'] as $src => $dst){ + $this->recursive_move($src,$dst); + } + + /* Add || Update new DNS entries + */ + foreach($tmp['add'] as $dn => $attrs){ + $ldap->cd($dn); + $ldap->cat($dn, array('dn')); + if($ldap->fetch()){ + $ldap->cd($dn); + $ldap->modify ($attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Handle Post events */ + if(preg_match("/^zoneName=/",$dn)){ +# $this->handle_post_events("modify",array("dn" => $dn,"zoneName" => $attrs['zoneName'])); + } + }else{ + $ldap->cd($dn); + $ldap->add($attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_ADD, get_class())); + } + + /* Handle Post events */ + if(preg_match("/^zoneName=/",$dn)){ +# $this->handle_post_events("add",array("dn" => $dn,"zoneName" => $attrs['zoneName'])); + } + } + } + $this->handle_post_events("modify"); + } + + + /* Directly save new status flag */ + function setStatus($value) + { + if($value == "none") return; + if(!$this->initially_was_account) return; + if(empty($this->StatusFlag)) return; + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + + $tmp = $ldap->fetch(); + for($i = 0; $i < $tmp['objectClass']['count']; $i ++){ + $attrs['objectClass'][] = $tmp['objectClass'][$i]; + } + $flag = $this->StatusFlag; + $attrs[$flag] = $value; + $this->$flag = $value; + $ldap->modify($attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + $this->action_hook(); + } + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("DNS service"); + #$fields['AllowEdit'] = true; + return($fields); + } + + + /* Get updates for status flag */ + function updateStatusState() + { + if(empty($this->StatusFlag)) return; + + $attrs = array(); + $flag = $this->StatusFlag; + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->cn); + $ldap->cat($this->dn,array($flag)); + if($ldap->count()){ + $attrs = $ldap->fetch(); + } + if(isset($attrs[$flag][0])){ + $this->$flag = $attrs[$flag][0]; + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("DNS service"), + "plDescription" => _("DNS service")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 83, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "start" => _("Start service"), // Remove this to hide the start button at all. + "stop" => _("Stop service"), // Remove this to hide the stop button at all. + "restart" => _("Restart service"),// Remove this to hide the restart button at all. + + "zoneName" =>_("Zone name"), + "ReverseZone" =>_("Reverse zone"), + "NetworkClass" =>_("Network class"), + "zoneEditor" =>_("Zone entry editor"), + "sOAprimary" =>_("Primary dns server"), + "sOAmail" =>_("Mail address"), + "sOAserial" =>_("Serial"), + "sOArefresh" =>_("Refresh"), + "sOAretry" =>_("Retry"), + "sOAexpire" =>_("Expire"), + "sOAttl" =>_("TTL"), + "mXRecord" =>_("MX records"), + "zoneRecords" =>_("Zone records")) + )); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNSeditZone.inc b/trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNSeditZone.inc new file mode 100644 index 000000000..695aa5e52 --- /dev/null +++ b/trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNSeditZone.inc @@ -0,0 +1,602 @@ +RecordTypes = DNS::getDnsRecordTypes(true); + + if(!count($attrs)){ + $this->OldZoneName = ""; + $this->OldReverseZone = ""; + $this->isNew = true; + $this->sOAserial = date("Ymd")."1"; + + $this->InitialzoneName = "";//$attrs['InitialzoneName']; + $this->InitialReverseZone = "";//$attrs['InitialReverseZone']; + }else{ + $this->ZoneObject = $attrs; + + if(isset($attrs['zoneEditor'])){ + $this->zoneEditor = $attrs['zoneEditor']; + } + $this->OldZoneName = $attrs['zoneName']; + $this->OldReverseZone = $attrs['ReverseZone']; + + $this->InitialzoneName = $attrs['InitialzoneName']; + $this->InitialReverseZone = $attrs['InitialReverseZone']; + + $this->isNew = false; + + foreach($this->attributes as $value){ + $this->$value = $attrs[$value]; + } + + $this->sOAmail = preg_replace("/\./","@",$this->sOAmail,1); + $this->sOAmail = preg_replace("/\.$/","",$this->sOAmail); + $this->sOAprimary = preg_replace("/\.$/","",$this->sOAprimary); + $this->zoneName = preg_replace("/\.$/","",$this->zoneName); + + if(isset($attrs['RECORDS'])){ + $this->Records = $attrs['RECORDS']; + + $tmp2 = array(); + $usedPrio = array(); + foreach($this->Records as $key => $rec){ + if($rec['type'] == "mXRecord"){ + $tmp = split(" ",$rec['value']); + $rec['value'] = $tmp[1]; + $tmp2[$tmp[0]] = $rec; + unset($this->Records[$key]); + } + if($rec['type'] == "nSRecord" && preg_match("/".preg_quote($this->sOAprimary, '/')."/",$rec['value'])){ + unset($this->Records[$key]); + } + } + if(count($tmp2) != 0){ + reset($tmp2); + ksort($tmp2); + } + $this->mXRecords = $tmp2; + }else{ + $this->mXRecords = array(); + $this->Records = array(); + } + + $str = date("Ymd"); + if(preg_match("/^".$str."/",$this->sOAserial)){ + $this->sOAserial = $this->sOAserial + 1; + }else{ + $this->sOAserial = date("Ymd")."01"; + } + + /* Check if this used, in this case disable forward and reverse configuration */ + $tmp = $this->getUsedZoneNames(); + $this->Zone_is_used = FALSE; + if(isset($tmp[DNS::FlipIp($this->InitialReverseZone).".in-addr.arpa"])){ + $this->Zone_is_used = TRUE; + } + } + + /* Detect Network class */ + if(!empty($this->ReverseZone)){ + + $dots = count(split("\.",$this->ReverseZone)); + if($dots == 1){ + $this->NetworkClass = "A"; + $this->ReverseZone .= ".0.0.0"; + }elseif($dots == 2){ + $this->NetworkClass = "B"; + $this->ReverseZone .= ".0.0"; + }else{ + $this->NetworkClass = "C"; + $this->ReverseZone .= ".0"; + } + } + } + + /* TRansports the geiven Arraykey one position up*/ + function ArrayUp($atr,$attrs) + { + $ret = $attrs; + $pos = $atr ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == 1)||($pos >$cn))){ + $before = array_slice($attrs,0,($pos-2)); + $mitte = array_reverse(array_slice($attrs,($pos-2),2)); + $unten = array_slice($attrs,$pos); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + + /* TRansports the geiven Arraykey one position up*/ + function ArrayDown($atr,$attrs) + { + $ret = $attrs; + $pos = $atr ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == $cn))){ + $before = array_slice($attrs,0,($pos-1)); + $mitte = array_reverse(array_slice($attrs,($pos-1),2)); + $unten = array_slice($attrs,($pos+1)); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + /* Combine new array */ + function combineArrays($ar0,$ar1,$ar2) + { + $ret = array(); + if(is_array($ar0)) + foreach($ar0 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar1)) + foreach($ar1 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar2)) + foreach($ar2 as $ar => $a){ + $ret[]=$a; + } + return($ret); + } + + function getpos($atr,$attrs) + { + $i = 0; + foreach($attrs as $attr => $name) { + $i++; + if($attr == $atr){ + return($i); + } + } + return(-1); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $smarty->assign("Zone_is_used",$this->Zone_is_used); + $ui = get_userinfo(); + + /* Assign ACLs + All acls are defined in our parent class. + */ + $tmp = $this->parent->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $desc){ + $smarty->assign($name."ACL", $this->parent->getacl($name)); + } + + $display= ""; + + /* Open Zone Entry Edit Dialog + */ + if(!count($this->ZoneObject)){ + $smarty->assign("AllowZoneEdit" , false); + }else{ + $smarty->assign("AllowZoneEdit" , true); + + if(isset($_POST['EditZoneEntries']) && $this->parent->acl_is_readable("zoneEditor")){ + if($this->zoneEditor == NULL){ + $this->zoneEditor= new servDNSeditZoneEntries($this->config,$this->dn,$this->ZoneObject); + $this->zoneEditor->acl = $this->parent->getacl("zoneEditor"); + $this->zoneEditor->parent = $this; + } + $this->dialog = $this->zoneEditor; + } + } + + /* Save Zone Entry Edit Dialog + */ + if(isset($_POST['SaveZoneEntryChanges'])){ + $this->dialog->save_object(); + if(count($this->dialog->check())){ + $msgs = $this->dialog->check(); + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg , ERROR_DIALOG); + } + }else{ + $this->zoneEditor = clone $this->dialog; + $this->dialog = FALSE; +# $rev = DNS::FlipIp(DNS::getNameFromMix($this->InitialReverseZone)).".in-addr.arpa"; +# $for = DNS::getNameFromMix($this->InitialzoneName); +# +# $this->parent->handle_post_events("modify",array("dn" => $this->dn,"zoneName" => $rev)); +# $this->parent->handle_post_events("modify",array("dn" => $this->dn,"zoneName" => $for)); +# $this->dialog = false; + } + } + + /* Cancel Zone Entrie Edit Dialog + */ + if(isset($_POST['CancelZoneEntryChanges'])){ + $this->dialog = false; + } + + /* Display any type of open dialogs + */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + $once =true; + foreach($_POST as $name => $value){ + if((preg_match("/^MXup_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^MXup_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + $this->mXRecords = $this->ArrayUp(($id+1),$this->mXRecords); + } + if((preg_match("/^MXdown_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^MXdown_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + $this->mXRecords = $this->ArrayDown(($id+1),$this->mXRecords); + } + if((preg_match("/^MXdel_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^MXdel_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + unset($this->mXRecords[$id]); + + $tmp =array(); + foreach($this->mXRecords as $entry){ + $tmp[] = $entry; + } + + $this->mXRecords = $tmp; + } + } + + if($this->parent->acl_is_writeable("mXRecord")){ + if((isset($_POST['AddMXRecord'])) && (!empty($_POST['StrMXRecord']))){ + $this->mXRecords[] = array("type"=>"mXRecord","value"=>trim($_POST['StrMXRecord'])); + } + + /* Handle Post events */ + $once = true; + foreach($_POST as $name => $value){ + + /* Delete record if requested */ + if((preg_match("/RemoveRecord_/",$name))&&($once)){ + $once = false; + $id= preg_replace("/RemoveRecord_/","",$name); + unset($this->Records[$id]); + } + } + + /* Add new Zonerecord */ + if(isset($_POST['AddNewRecord'])){ + $this->Records[] = array("type"=>"aRecord","value"=>""); + } + } + + /* Fill in values */ + foreach($this->attributes as $name){ + $smarty->assign($name,$this->$name); + } + + + $div = new divSelectBox("MxRecords"); + $div->setHeight(120); + $recs = $this->mXRecords; + + $oneup = " "; + $onedown = " "; + $onedel = " + "; + + foreach($recs as $key => $rec){ + $div ->AddEntry(array( + array("string"=>$rec['value']), +/* array("string"=>$key, + "attach"=>"style='width:20px;'"),*/ + array("string"=>str_replace("%s",base64_encode($key),$oneup.$onedown.$onedel), + "attach"=>"style='width:70px;border-right:0px;'") + )); + } + + /* Assign records list */ + $smarty->assign("NotNew", false); + $smarty->assign("Mxrecords", $div->DrawList()); + $smarty->assign("records" , $this->generateRecordsList()); + $smarty->assign("NetworkClass", $this->NetworkClass); + $smarty->assign("NetworkClasses", array("A"=>"255.0.0.0 (Class A)","B"=>"255.255.0.0 (Class B)","C"=>"255.255.255.0 (Class C)")); + + /* Display tempalte */ + $display.= $smarty->fetch(get_template_path('servdnseditzone.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + function remove_from_parent() + { + } + + /* Save data to object */ + function save_object() + { + plugin::save_object(); + + if(!is_object($this->parent)) return; + + if($this->parent->acl_is_writeable("zoneRecords")){ + foreach($this->Records as $id => $value){ + if(isset($_POST['RecordTypeSelectedFor_'.$id])){ + $this->Records[$id]['type'] = $_POST['RecordTypeSelectedFor_'.$id]; + } + if(isset($_POST['RecordValue_'.$id])){ + $this->Records[$id]['value'] = get_post('RecordValue_'.$id); + } + } + } + if(isset($_POST['NetworkClass']) && !$this->Zone_is_used && $this->parent->acl_is_writeable("NetworkClass")){ + $this->NetworkClass = $_POST['NetworkClass']; + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Check if zoneName is already in use */ + $usedZones = $this->getUsedZoneNames(); + + if(empty($this->zoneName)){ + $message[] = msgPool::required(_("Zone name")); + } + + if(empty($this->ReverseZone)){ + $message[] = msgPool::required(_("Reverse zone")); + } + + if($this->zoneName != strtolower($this->zoneName)){ + $message[] = msgPool::invalid(_("Zone name"),"","",_("Only lowercase allowed")); + } + + if(!is_numeric($this->sOAserial)){ + $message[] = msgPool::invalid(_("Serial"),$this->sOAserial,"/[0-9]/"); + } + + if(!is_numeric($this->sOArefresh)){ + $message[] = msgPool::invalid(_("Refresh"),$this->sOArefresh,"/[0-9]/"); + } + + if(!is_numeric($this->sOAttl)){ + $message[] = msgPool::invalid(_("Time to life"),$this->sOAttl,"/[0-9]/"); + } + + if(!is_numeric($this->sOAexpire)){ + $message[] = msgPool::invalid(_("Expire"),$this->sOAexpire,"/[0-9]/"); + } + + if(!is_numeric($this->sOAretry)){ + $message[] = msgPool::invalid(_("Retry"),$this->sOAretry,"/[0-9]/"); + } + + foreach($this->Records as $name => $values){ + /* only lower-case is allowed in record entries ... */ + if($values['value'] != strtolower($values['value'])){ + $message[] = msgPool::invalid($values['type'],"","",_("Only lowercase allowed")); + } + } + + /* Check class for given Zone Address */ + $addr = preg_replace("/^[^\/]*+\//","",$this->ReverseZone); + + /* Check for valid&complete IP address */ + if(!tests::is_ip($addr)){ + $message[] = msgPool::invalid(_("Network address")); + } + + /* Check if given address matches selected network class */ + switch($this->NetworkClass){ + case 'A': { + if(!preg_match("/^[0-9]*\.0\.0\.0$/",$addr)){ + $message[] = sprintf(_("The specified network address and the network class (%s/%s) do not match!"), $this->NetworkClass, "255.0.0.0"); + } + } + break; + case 'B': { + if(!preg_match("/^[0-9]*\.[0-9]*\.0\.0$/",$addr)){ + $message[] = sprintf(_("The specified network address and the network class (%s/%s) do not match!"), $this->NetworkClass, "255.255.0.0"); + } + } + break; + case 'C': { + if(!preg_match("/^[0-9]*\.[0-9]*\.[0-9]*\.0$/",$addr)){ + $message[] = sprintf(_("The specified network address and the network class (%s/%s) do not match!"), $this->NetworkClass, "255.255.255.0"); + } + } + break; + default : $message[] = msgPool::invalid(_("Network class"),$this->NetworkClass); + } + + return ($message); + } + + + /* This funtion returns all used Zonenames + */ + function getUsedZoneNames() + { + $ret = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=dNSZone)(!(relativeDomainName=@))(zoneName=*))",array("zoneName","relativeDomainName")); + while($attr = $ldap->fetch()){ + $ret[$attr['zoneName'][0]][] = $attr['dn']; + } + return($ret); + } + + + /* Save to LDAP */ + function save() + { + $ret =array(); + foreach($this->attributes as $name){ + $ret[$name] = $this->$name; + } + + /* Create mx records + */ + foreach($this->mXRecords as $key => $rec){ + $rec['value']= $key." ".$rec['value']; + $this->Records [] = $rec; + } + + + $ret['RECORDS'] = $this->Records; + + switch($this->NetworkClass){ + case 'C' : $ret['ReverseZone']= preg_replace("/\.[0-9]*$/","",$this->ReverseZone);break; + case 'B' : $ret['ReverseZone']= preg_replace("/\.[0-9]*\.[0-9]*$/","",$this->ReverseZone);break; + case 'A' : $ret['ReverseZone']= preg_replace("/\.[0-9]*\.[0-9]*\.[0-9]*$/","",$this->ReverseZone);break; + default : trigger_error("Invalid network class given '".$this->NetworkClass."'"); + } + + $ret['InitialReverseZone']= $this->InitialReverseZone; + $ret['InitialzoneName'] = $this->InitialzoneName; + + $ret['sOAmail'] = preg_replace("/\@/",".",$this->sOAmail); + + foreach(array("sOAprimary","zoneName","sOAmail") as $attr){ + if(!preg_match("/\.$/",$ret[$attr])){ + if(!tests::is_ip($ret[$attr])){ + $ret[$attr] = $ret[$attr]."."; + } + } + } + + $ret['RECORDS'][] = array("type" => "nSRecord","value" => $ret['sOAprimary']) ; + + $ret['zoneEditor'] = $this->zoneEditor; + return($ret); + } + + + /* This function generate a table row for each used record. + This table row displays the recordtype in a select box + and the specified value for the record, and a remove button. + The last element of the table also got an 'add' button. + */ + function generateRecordsList($changeStateForRecords="") + { + $changeStateForRecords = ""; + + $str = ""; + foreach($this->Records as $key => $entry){ + + if($entry['type'] == "mXRecord") continue; + + $changeStateForRecords.= "changeState('RecordTypeSelectedFor_".$key."');\n"; + $changeStateForRecords.= "changeState('RecordValue_".$key."');\n"; + $changeStateForRecords.= "changeState('RemoveRecord_".$key."');\n"; + + $str.=" ". + " ". + " ". + " ". + ""; + } + + $str.= " ". + " ". + " ". + "
".$this->generateRecordListBox($entry['type'],"RecordTypeSelectedFor_".$key)."
". + " ". + "
"; + return($str); + } + + /* This function generates a select box out of $this->RecordTypes options. + The Parameter $selected is used to predefine an attribute. + $name is used to specify a post name + */ + function generateRecordListBox($selected,$name) + { + $str = ""; + return($str); + } + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNSeditZoneEntries.inc b/trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNSeditZoneEntries.inc new file mode 100644 index 000000000..87e1efc5e --- /dev/null +++ b/trunk/gosa-plugins/dns/admin/systems/services/dns/class_servDNSeditZoneEntries.inc @@ -0,0 +1,510 @@ +RecordTypes = DNS::getDnsRecordTypes(); + $this->dn = "zoneName=".$zoneObject['InitialzoneName'].",".$dn; + $this->zoneName = $zoneObject['InitialzoneName']; + $this->reverseName = $zoneObject['InitialReverseZone']; + + /* Remove nSRecord from listed types */ + if(isset($this->RecordTypes['nSRecord'])){ + unset($this->RecordTypes['nSRecord']); + } + /* Remove nSRecord from listed types */ + if(isset($this->RecordTypes['pTRRecord'])){ + unset($this->RecordTypes['pTRRecord']); + } + + /* Get ldap connection + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + /* Get zone content + */ + $ldap->ls("(&(objectClass=dNSZone)(!(relativeDomainName=@)))",$this->dn,array("relativeDomainName")); + + while($attrs = $ldap->fetch()){ + $this->Devices[$attrs['relativeDomainName'][0]] = DNS::getDNSHostEntries($config,$attrs['relativeDomainName'][0],true); + $this->Devices[$attrs['relativeDomainName'][0]]['OrigCn'] = $attrs['relativeDomainName'][0]; + } + + $ldap->cat($this->dn,array("objectClass")); + + $this->disableDialog = true; + if(count($this->Devices)|| $ldap->count()){ + $this->disableDialog = false; + } + } + + function execute() + { + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + $table = ""; + foreach($this->Devices as $key => $dev){ + $table .= $this->generateRecordConfigurationRow($key); + } + + $smarty->assign("acl",$this->acl); + $smarty->assign("disableDialog",$this->disableDialog); + $smarty->assign("table",$table);; + $display.= $smarty->fetch(get_template_path('servDNSeditZoneEntries.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + + function save_object() + { + /* Check posts for operations ... + */ + $once = true; + $ptr_updates = array(); + if(!preg_match("/w/",$this->acl)) return; + + foreach($_POST as $name => $value){ + + /* Add a new Record in given object + */ + $tmp = preg_replace("/^.*_(.*)_.*$/","\\1",$name); + $tmp2 = split("\|",$tmp); + + /* Add new host entry + */ + if((preg_match("/^UserRecord_?/",$name)) && ($once)){ + $once = false; + $entry = DNS::getDNSHostEntries($this->config,"",true); + $entry['exists'] = true; + $entry['zoneName'] = strtoupper($this->attrs['cn'][0])."/".$this->zoneName; + $entry['RECORDS'][] = array("type" => "aRecord" , "value"=>""); + $this->Devices[_("New entry")] = $entry; + } + + if(count($tmp2) != 2) continue; + + $Name = base64_decode($tmp2[0]); + $RecordID = $tmp2[1]; + + /* Add new REcord + */ + if((preg_match("/^AddRecord_/",$name)) && ($once)){ + $once = false; + $this->Devices[$Name]['RECORDS'][] = $this->Devices[$Name]['RECORDS'][$RecordID]; + } + + /* Remove record from given dn + */ + if((preg_match("/^RemoveRecord_/",$name)) && ($once)){ + $once = false; + if(isset($this->Devices[$Name]['RECORDS'][$RecordID])){ + unset($this->Devices[$Name]['RECORDS'][$RecordID]); + } + + /* Check if there is at least one visible record. Else remove complete entry */ + $visible = false; + foreach($this->Devices[$Name]['RECORDS'] as $rec){ + if(in_array($rec['type'],$this->RecordTypes)){ + $visible = true; + break; + } + } + if(!$visible && isset($this->Devices[$Name]['RECORDS'])){ + $this->Devices[$Name]['RECORDS'] = array(); + } + } + } + + /* Possible attributes posted + */ + foreach($_POST as $name => $value){ + + /* Extract informations out of post name + */ + $tmp = preg_replace("/^.*_/","\\1",$name); + $tmp2 = split("\|",$tmp); + + if(count($tmp2) != 2) continue; + + $Name = base64_decode($tmp2[0]); + $RecordID = $tmp2[1]; + + /* Check for value change + */ + if(preg_match("/ValueSelection_/",$name)){ + if(isset($this->Devices[$Name]['RECORDS'][$RecordID])){ + + /* Update value */ + $old = $this->Devices[$Name]['RECORDS'][$RecordID]['value']; + $this->Devices[$Name]['RECORDS'][$RecordID]['value'] = get_post($name); + + /* Handle pTRRecord */ + if(!isset($ptr_updates[$Name]) && $this->Devices[$Name]['RECORDS'][$RecordID]['type'] == "aRecord"){ + + $found = false; + $ip = $value; + $match = preg_replace("/^[^\/]*+\//","",$this->reverseName); + $ip = preg_replace("/^".preg_quote($match)."/","",$ip); + $ip = preg_replace("/^\./","",$ip); + + foreach($this->Devices[$Name]['RECORDS'] as $key => $dev){ + if($dev['type'] == "pTRRecord"){ + $ptr_updates[$Name] = $Name; + $this->Devices[$Name]['RECORDS'][$key]['value'] = $ip; + $found = true; + break; + } + } + if(!$found){ + $dev = array('type'=> 'pTRRecord', 'value' => $ip); + $this->Devices[$Name]['RECORDS'][] = $dev; + } + } + } + } + + /* record type changed + */ + if(preg_match("/^RecordTypeSelection_/",$name)){ + if(isset($this->Devices[$Name]['RECORDS'][$RecordID])){ + $this->Devices[$Name]['RECORDS'][$RecordID]['type'] = $value; + } + } + } + + /* check for renamed entries + */ + foreach($_POST as $name => $value){ + + /* Extract informations out of post name + */ + $tmp = preg_replace("/^.*_/","\\1",$name); + $tmp2 = split("\|",$tmp); + + if(count($tmp2) != 2) continue; + + $Name = base64_decode($tmp2[0]); + $RecordID = $tmp2[1]; + + /* Host renamed + */ + if(preg_match("/RenameHost_/",$name)){ + if((isset($this->Devices[$Name])) && ($Name != $value)){ + + if(isset($this->Devices[$value])){ + msg_dialog::display(_("Error"), sprintf(_("Cannot rename '%s' to '%s'. Name is already in use!"), $Name, $value), ERROR_DIALOG); + }else{ + $this->Devices[$value] = $this->Devices[$Name]; + unset($this->Devices[$Name]); + } + } + } + } + } + + + /* check something + */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(!preg_match("/w/",$this->acl)) return($message); + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + $names = array(); + foreach($this->Devices as $DevName => $device){ + + /* Don't need to check empty values ... */ + if(!count($device['RECORDS'])) continue; + + /* Checking entry name + */ + if(!preg_match("/^[a-z0-9_\.-]+$/i", $DevName) || (empty($DevName))){ + $message[] = msgPool::invalid(_("Name"),$DevName,"/[a-z0-9_\.-]/i"); + } + + /* Renaming check for existing devices + */ + if(isset($device['OrigCn']) && ($DevName != $device['OrigCn'] )){ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(relativeDomainName=".$DevName.")",array("relativeDomainName")); + if($ldap->count()){ + $message[] = sprintf(_("Cannot rename '%s' to '%s'. Entry is already in use."),$device['OrigCn'],$DevName); + } + }elseif(!isset($device['OrigCn'])){ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(relativeDomainName=".$DevName.")",array("relativeDomainName")); + if($ldap->count()){ + $message[] = sprintf(_("Cannot create '%s'. Entry is already in use."),$DevName); + } + } + + /* Check names + */ + if(!isset($names[$DevName])){ + $names[$DevName] = ""; + }else{ + $message[] = sprintf(_("Entry '%s' is used more than once."),$DevName); + } + + /* Names should be written in lowercase + */ +# if(strtolower($DevName) != $DevName){ +# $message[] = sprintf(_("The host name '%s' should be written in lowercase."), $DevName); +# } + + /* Check records + */ + $singleEntries = array("pTRRecord"); + + $tmp = array(); + $tmp2 = array(); + foreach($device['RECORDS'] as $Num => $Rec){ + + /* Check for multiple use of unique record types + */ + if(in_array($Rec['type'],$singleEntries)){ + if(!isset($tmp[$Rec['type']])){ + $tmp[$Rec['type']] = ""; + }else{ + $message[] = sprintf(_("%s records cannot be used more than once."),$Rec['type']); + } + } + + /* Check for empty / duplicate entries in record array + */ + if(empty($Rec['value'])){ + $message[] = sprintf(_("Please fix the empty %s record for entry '%s'."),$Rec['type'],$DevName); + } + + /* Check for duplicate record entries + */ + if(!isset($tmp[$Rec['type']][$Rec['value']])){ + $tmp[$Rec['type']][$Rec['value']] = ""; + }else{ + $message[] = sprintf(_("Please fix the duplicate %s record for entry '%s'."),$Rec['type'],$DevName); + } + } + } + return ($message); + } + + + function save() + { + if($this->disableDialog || !preg_match("/w/",$this->acl)) return; + + $todo = array(); + + + + /* Create todolist + */ + foreach($this->Devices as $name => $dev){ + if(isset($dev['OrigCn'])){ + if(count($dev['RECORDS'])){ + $todo[] = DNS::getDNSHostEntriesDiff($this->config,$dev['OrigCn'],$dev,$name); + }else{ + $dev['exists'] = false; + $todo[] = DNS::getDNSHostEntriesDiff($this->config,$dev['OrigCn'],$dev,$name); + } + }else{ + if(count($dev['RECORDS'])){ + $todo[] = DNS::getDNSHostEntriesDiff($this->config,"",$dev,$name); + }else{ + $dev['exists'] = false; + $todo[] = DNS::getDNSHostEntriesDiff($this->config,"",$dev,$name); + } + } + } + + $tmp = array(); + $tmp['del'] = array(); + $tmp['add'] = array(); + $tmp['move'] = array(); + foreach($todo as $to){ + foreach($to as $type => $entries){ + $tmp[$type] = array_merge($tmp[$type],$entries); + } + } + + /* Get ldap link + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + + /* move follwoing entries + */ + foreach($tmp['move'] as $src => $dst){ + $this->recursive_move($src,$dst); + } + + /* Delete dns */ + foreach($tmp['del'] as $dn => $del){ + $ldap->cd($dn); + $ldap->rmdir_recursive($dn); + if(is_object($this->parent->parent)){ + $this->parent->parent->handle_post_events("remove",array("dn" => $dn)); + } + } + + /* Add || Update new DNS entries + */ + foreach($tmp['add'] as $dn => $attrs){ + $ldap->cd($dn); + $ldap->cat($dn, array('dn')); + if(count($ldap->fetch())){ + $ldap->cd($dn); + $ldap->modify ($attrs); + if(is_object($this->parent->parent)){ + $this->parent->parent->handle_post_events("modify",array("dn" => $dn)); + } + }else{ + $ldap->cd($dn); + $ldap->add($attrs); + if(is_object($this->parent->parent)){ + $this->parent->parent->handle_post_events("create",array("dn" => $dn)); + } + } + } + } + + + /* Create html table out of given entry + */ + function generateRecordConfigurationRow($objKey){ + + /* Get some basic informations + */ + $obj = $this->Devices[$objKey]; + $objectName = $objKey; + + $dis = ""; + if(!preg_match("/w/",$this->acl)){ + $dis = " disabled "; + } + + /* Abort if emtpy + */ + if(count($obj['RECORDS']) == 0) return ""; + + /* Set title + */ + $str= "
"; + + $hostNameOnce = true; + + /* Walk through all defined records + */ + $str.= ""; + foreach($obj['RECORDS'] as $id => $record){ + + /* Skip not selectable entries */ + if(!isset($this->RecordTypes [$record['type']])) { + continue; + } + + /* Create unique post name + */ + $name = base64_encode($objKey)."|".$id; + + /* Only first host entry name should be editable + */ + if($hostNameOnce){ + $hostNameOnce = false; + $field1 ="\n"; + }else{ + $field1 = ""; + } + $field2 = $this->createRecordTypeSelection($record['type'],$name); + $field3 = ""; + if(preg_match("/w/",$this->acl)){ + $acl = " + "; + } + + /* Display settings backwards for CNAMERecords + */ + if($record['type'] == "cNAMERecord"){ + $str .= " + + + + + + "; + }else{ + $str .= " + + + + + + "; + } + } + $str .="
".$field3."".$field2."".$objectName."".$acl."
".$field1."".$field2."".$field3."".$acl."
"; + return($str); + } + + + /* Create selectbox with all available option types + */ + function createRecordTypeSelection($id,$refID){ + + if(preg_match("/w/",$this->acl)){ + $str = "\n"; + }else{ + $str = " ".strtoupper(preg_replace("/record/i","",$id)); + } + return($str); + } + + + function remove_from_parent() + { + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/dns/admin/systems/services/dns/servDNSeditZoneEntries.tpl b/trunk/gosa-plugins/dns/admin/systems/services/dns/servDNSeditZoneEntries.tpl new file mode 100644 index 000000000..3e972844a --- /dev/null +++ b/trunk/gosa-plugins/dns/admin/systems/services/dns/servDNSeditZoneEntries.tpl @@ -0,0 +1,32 @@ +

{t}This dialog allows you to configure all components of this DNS zone on a single list.{/t}

+

 

+{if $disableDialog} +
+ {t}This dialog can't be used until the currently edited zone was saved or the zone entry exists in the ldap database.{/t} + +{else} +
+ {$table} +
+ + {render acl=$acl} + + {/render} +{/if} + +

 

+
+

+ {render acl=$acl} + + {/render} + +

+
+ + + diff --git a/trunk/gosa-plugins/dns/admin/systems/services/dns/servdns.tpl b/trunk/gosa-plugins/dns/admin/systems/services/dns/servdns.tpl new file mode 100644 index 000000000..145567c4f --- /dev/null +++ b/trunk/gosa-plugins/dns/admin/systems/services/dns/servdns.tpl @@ -0,0 +1,63 @@ +{if $dns_take_over} + + + + +
+

{t}DNS take over initiated{/t}

+ {$warning} + {t}This includes 'all' DNS zones that are located within this server. Please double check if your really want to do this.{/t} +

+ {$warning2} +
+ +

+

+ {t}Following objects will be taken over{/t} : +

+

+

{$info}
+

+
+{else} + +{if $dns_server_list_cnt} + + + +{/if} + + + +
+ {t}Take over DNS configuration from{/t}  + + +
+

{t}Zones{/t}

+ {$ZoneList} + {if $is_createable} + + {else} + + {/if} +
+ + + + +{/if} +

 

+

+

+ +   + +
+

diff --git a/trunk/gosa-plugins/dns/admin/systems/services/dns/servdnseditzone.tpl b/trunk/gosa-plugins/dns/admin/systems/services/dns/servdnseditzone.tpl new file mode 100644 index 000000000..32a2d8fdf --- /dev/null +++ b/trunk/gosa-plugins/dns/admin/systems/services/dns/servdnseditzone.tpl @@ -0,0 +1,182 @@ +

{t}Generic{/t}

+ + + + + +
+ + + + + + + + + + + + + + {if $Zone_is_used} + + + + {/if} +
{t}Zone name{/t}{$must} + +{render acl=$zoneNameACL} + +{/render} +
{t}Network address{/t}{$must} + +{render acl=$ReverseZoneACL} + +{/render} +
{t}Netmask{/t} + +{render acl=$NetworkClassACL} + +{/render} +
+ {t}Zone is in use, network settings can't be modified.{/t} +
+
+ + + + + +
+ {t}Zone records{/t} +
+ {if $AllowZoneEdit == false} + {t}Can't be edited because the zone wasn't saved right now.{/t} + {/if} +
+{render acl=$zoneEditorACL mode=read_active} + +{/render} +
+
+

 

+

{t}SOA record{/t}

+ + + + + +
+ + + + + + + + + + + + + +
{t}Primary dns server for this zone{/t}{$must} + +{render acl=$sOAprimaryACL} + +{/render} +
{t}Mail address{/t}{$must} + +{render acl=$sOAmailACL} + +{/render} +
{t}Serial number (automatically incremented){/t}{$must} + +{render acl=$sOAserialACL} + +{/render} +
+
+ + + + + + + + + + + + + + + + + +
{t}Refresh{/t}{$must} + +{render acl=$sOArefreshACL} + +{/render} +
{t}Retry{/t}{$must} + +{render acl=$sOAretryACL} + +{/render} +
{t}Expire{/t}{$must} + +{render acl=$sOAexpireACL} + +{/render} +
{t}TTL{/t}{$must} + +{render acl=$sOAttlACL} + +{/render} +
+
+ +

 

+
+ + + + + +
+

{t}MxRecords{/t}

+ + + + +
+{render acl=$mXRecordACL} + {$Mxrecords} +{/render} +{render acl=$mXRecordACL} + +{/render} +{render acl=$mXRecordACL} + +{/render} +
+
+

{t}Global zone records{/t}

+{render acl=$zoneRecordsACL} + {$records} +{/render} +
+
+

+ + +

+
+ diff --git a/trunk/gosa-plugins/dns/contrib/dnszone.ldif b/trunk/gosa-plugins/dns/contrib/dnszone.ldif new file mode 100644 index 000000000..58e2419c6 --- /dev/null +++ b/trunk/gosa-plugins/dns/contrib/dnszone.ldif @@ -0,0 +1,28 @@ +dn: cn=dnszone,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: dnszone +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.0.0 NAME 'dNSTTL' DESC 'An integer denoting time to live' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.0.1 NAME 'dNSClass' DESC 'The class of a resource record' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.0.2 NAME 'zoneName' DESC 'The name of a zone, i.e. the name of the highest node in the zone' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.0.3 NAME 'relativeDomainName' DESC 'The starting labels of a domain name' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.12 NAME 'pTRRecord' DESC 'domain name pointer, RFC 1035' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.13 NAME 'hInfoRecord' DESC 'host information, RFC 1035' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.14 NAME 'mInfoRecord' DESC 'mailbox or mail list information, RFC 1035' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.16 NAME 'tXTRecord' DESC 'text string, RFC 1035' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.18 NAME 'aFSDBRecord' DESC 'for AFS Data Base location, RFC 1183' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.24 NAME 'SigRecord' DESC 'Signature, RFC 2535' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.25 NAME 'KeyRecord' DESC 'Key, RFC 2535' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.28 NAME 'aAAARecord' DESC 'IPv6 address, RFC 1886' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.29 NAME 'LocRecord' DESC 'Location, RFC 1876' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.30 NAME 'nXTRecord' DESC 'non-existant, RFC 2535' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.33 NAME 'sRVRecord' DESC 'service location, RFC 2782' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.35 NAME 'nAPTRRecord' DESC 'Naming Authority Pointer, RFC 2915' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.36 NAME 'kXRecord' DESC 'Key Exchange Delegation, RFC 2230' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.37 NAME 'certRecord' DESC 'certificate, RFC 2538' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.38 NAME 'a6Record' DESC 'A6 Record Type, RFC 2874' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.39 NAME 'dNameRecord' DESC 'Non-Terminal DNS Name Redirection, RFC 2672' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.43 NAME 'dSRecord' DESC 'Delegation Signer, RFC 3658' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.44 NAME 'sSHFPRecord' DESC 'SSH Key Fingerprint, draft-ietf-secsh-dns-05.txt' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.46 NAME 'rRSIGRecord' DESC 'RRSIG, RFC 3755' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.2428.20.1.47 NAME 'nSECRecord' DESC 'NSEC, RFC 3755' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcObjectClasses: ( 1.3.6.1.4.1.2428.20.3 NAME 'dNSZone' SUP top STRUCTURAL MUST ( zoneName $ relativeDomainName ) MAY ( DNSTTL $ DNSClass $ ARecord $ MDRecord $ MXRecord $ NSRecord $ SOARecord $ CNAMERecord $ PTRRecord $ HINFORecord $ MINFORecord $ TXTRecord $ AFSDBRecord $ SIGRecord $ KEYRecord $ AAAARecord $ LOCRecord $ NXTRecord $ SRVRecord $ NAPTRRecord $ KXRecord $ CERTRecord $ A6Record $ DNAMERecord $ DSRecord $ SSHFPRecord $ RRSIGRecord $ NSECRecord ) ) diff --git a/trunk/gosa-plugins/dns/contrib/dnszone.schema b/trunk/gosa-plugins/dns/contrib/dnszone.schema new file mode 100644 index 000000000..0714b0bad --- /dev/null +++ b/trunk/gosa-plugins/dns/contrib/dnszone.schema @@ -0,0 +1,155 @@ +# A schema for storing DNS zones in LDAP +# +attributetype ( 1.3.6.1.4.1.2428.20.0.0 NAME 'dNSTTL' + DESC 'An integer denoting time to live' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.2428.20.0.1 NAME 'dNSClass' + DESC 'The class of a resource record' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.0.2 NAME 'zoneName' + DESC 'The name of a zone, i.e. the name of the highest node in the zone' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.0.3 NAME 'relativeDomainName' + DESC 'The starting labels of a domain name' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.12 NAME 'pTRRecord' + DESC 'domain name pointer, RFC 1035' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.13 NAME 'hInfoRecord' + DESC 'host information, RFC 1035' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.14 NAME 'mInfoRecord' + DESC 'mailbox or mail list information, RFC 1035' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.16 NAME 'tXTRecord' + DESC 'text string, RFC 1035' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.18 NAME 'aFSDBRecord' + DESC 'for AFS Data Base location, RFC 1183' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.24 NAME 'SigRecord' + DESC 'Signature, RFC 2535' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.25 NAME 'KeyRecord' + DESC 'Key, RFC 2535' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.28 NAME 'aAAARecord' + DESC 'IPv6 address, RFC 1886' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.29 NAME 'LocRecord' + DESC 'Location, RFC 1876' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.30 NAME 'nXTRecord' + DESC 'non-existant, RFC 2535' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.33 NAME 'sRVRecord' + DESC 'service location, RFC 2782' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.35 NAME 'nAPTRRecord' + DESC 'Naming Authority Pointer, RFC 2915' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.36 NAME 'kXRecord' + DESC 'Key Exchange Delegation, RFC 2230' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.37 NAME 'certRecord' + DESC 'certificate, RFC 2538' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.38 NAME 'a6Record' + DESC 'A6 Record Type, RFC 2874' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.39 NAME 'dNameRecord' + DESC 'Non-Terminal DNS Name Redirection, RFC 2672' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.43 NAME 'dSRecord' + DESC 'Delegation Signer, RFC 3658' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.44 NAME 'sSHFPRecord' + DESC 'SSH Key Fingerprint, draft-ietf-secsh-dns-05.txt' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.46 NAME 'rRSIGRecord' + DESC 'RRSIG, RFC 3755' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.2428.20.1.47 NAME 'nSECRecord' + DESC 'NSEC, RFC 3755' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +objectclass ( 1.3.6.1.4.1.2428.20.3 NAME 'dNSZone' + SUP top STRUCTURAL + MUST ( zoneName $ relativeDomainName ) + MAY ( DNSTTL $ DNSClass $ + ARecord $ MDRecord $ MXRecord $ NSRecord $ + SOARecord $ CNAMERecord $ PTRRecord $ HINFORecord $ + MINFORecord $ TXTRecord $ AFSDBRecord $ SIGRecord $ + KEYRecord $ AAAARecord $ LOCRecord $ NXTRecord $ + SRVRecord $ NAPTRRecord $ KXRecord $ CERTRecord $ + A6Record $ DNAMERecord $ DSRecord $ SSHFPRecord $ + RRSIGRecord $ NSECRecord ) ) diff --git a/trunk/gosa-plugins/dns/help/guide.xml b/trunk/gosa-plugins/dns/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/dns/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dns/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..3b0425fcb --- /dev/null +++ b/trunk/gosa-plugins/dns/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,383 @@ +# translation of messages.po to +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-10-07 18:29+0200\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/systems/services/dns/servdns.tpl:5 +msgid "DNS take over initiated" +msgstr "DNS-Übernahme initiiert" + +#: admin/systems/services/dns/servdns.tpl:7 +msgid "" +"This includes 'all' DNS zones that are located within this server. Please " +"double check if your really want to do this." +msgstr "" +"Dies umfasst 'alle' Konten, System- und Setup-Informationen dieses " +"Teilbaums. Bitte prüfen Sie genau, ob Sie dies wünschen, da es keine " +"Möglichkeit für GOsa gibt, die Daten wiederherzustellen. " + +#: admin/systems/services/dns/servdns.tpl:14 +msgid "Following objects will be taken over" +msgstr "Die folgenden Objekte werden übernommen" + +#: admin/systems/services/dns/servdns.tpl:27 +msgid "Take over DNS configuration from" +msgstr "Übernehmen der DNS-Konfiguration von" + +#: admin/systems/services/dns/servdns.tpl:31 +msgid "Take over" +msgstr "Übernahme" + +#: admin/systems/services/dns/servdns.tpl:37 +msgid "Zones" +msgstr "Zonen" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:249 +#: admin/systems/services/dns/class_servDNS.inc:184 +#: admin/systems/services/dns/class_servDNS.inc:342 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#: admin/systems/services/dns/class_DNS.inc:161 +#: admin/systems/services/dns/class_DNS.inc:166 +#: admin/systems/services/dns/class_DNS.inc:628 +msgid "Error" +msgstr "Fehler" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:347 +msgid "Up" +msgstr "Auf" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:348 +msgid "Down" +msgstr "Ab" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:350 +#: admin/systems/services/dns/class_servDNSeditZone.inc:565 +msgid "Delete" +msgstr "Entfernen" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:411 +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNS.inc:589 +#: admin/systems/services/dns/servdnseditzone.tpl:7 +msgid "Zone name" +msgstr "Zonenname" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:415 +#: admin/systems/services/dns/class_servDNS.inc:276 +#: admin/systems/services/dns/class_servDNS.inc:590 +msgid "Reverse zone" +msgstr "Reverse Zone" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNSeditZone.inc:445 +msgid "Only lowercase allowed" +msgstr "Nur Kleinbuchstaben sind erlaubt." + +#: admin/systems/services/dns/class_servDNSeditZone.inc:423 +#: admin/systems/services/dns/class_servDNS.inc:595 +msgid "Serial" +msgstr "Serial" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:427 +#: admin/systems/services/dns/class_servDNS.inc:596 +#: admin/systems/services/dns/servdnseditzone.tpl:102 +msgid "Refresh" +msgstr "Aktualisieren" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:431 +msgid "Time to life" +msgstr "Lebensdauer" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:435 +#: admin/systems/services/dns/class_servDNS.inc:598 +#: admin/systems/services/dns/servdnseditzone.tpl:120 +msgid "Expire" +msgstr "Ablauf" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:439 +#: admin/systems/services/dns/class_servDNS.inc:597 +#: admin/systems/services/dns/servdnseditzone.tpl:111 +msgid "Retry" +msgstr "Wiederholen" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:454 +#: admin/systems/services/dns/servdnseditzone.tpl:16 +msgid "Network address" +msgstr "Netzwerk-Adresse" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:461 +#: admin/systems/services/dns/class_servDNSeditZone.inc:467 +#: admin/systems/services/dns/class_servDNSeditZone.inc:473 +#, php-format +msgid "" +"The specified network address and the network class (%s/%s) do not match!" +msgstr "" +"Die angegebene Netzwerkaddresse und die Netzwerkklasse (%s/%s) passen nicht " +"zueinander!" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:477 +#: admin/systems/services/dns/class_servDNS.inc:591 +msgid "Network class" +msgstr "Netzwerk-Klasse" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:571 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:453 +msgid "Add" +msgstr "Hinzufügen" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:1 +msgid "" +"This dialog allows you to configure all components of this DNS zone on a " +"single list." +msgstr "" +"Dieser Dialog erlaubt es Ihnen, alle Komponenten dieser DNS-Zone mithilfe " +"einer einzelnen Liste zu konfigurieren." + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:5 +msgid "" +"This dialog can't be used until the currently edited zone was saved or the " +"zone entry exists in the ldap database." +msgstr "" +"Dieser Dialog kann nicht verwendet werden, bis die momentan geöffnete Zone " +"gespeichert wurde und/oder der passende Eintrag in der LDAP-Datenbank " +"existiert." + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:107 +msgid "New entry" +msgstr "Neuer Eintrag" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +msgid "Create a new DNS zone entry" +msgstr "Einen neuen DNS-Zonen-Eintrag erstellen" + +#: admin/systems/services/dns/class_servDNS.inc:31 +#: admin/systems/services/dns/class_servDNS.inc:547 +#: admin/systems/services/dns/class_servDNS.inc:576 +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "DNS service" +msgstr "DNS-Dienst" + +#: admin/systems/services/dns/class_servDNS.inc:151 +#, php-format +msgid "You are going to migrate the DNS setup from server '%s'." +msgstr "Sie sind dabei, die DNS-Konfiguration vom Server '%s' zu übernehmen." + +#: admin/systems/services/dns/class_servDNS.inc:152 +msgid "" +"The migration will be started when you save this system. To cancel this " +"action, use the cancel button below." +msgstr "" +"Die Migration wird gestartet, sobald Sie das System speichern. Klicken Sie " +"auf den Knopf 'Abbrechen', um abzubrechen." + +#: admin/systems/services/dns/class_servDNS.inc:166 +msgid "Remove DNS service" +msgstr "DNS-Dienst entfernen" + +#: admin/systems/services/dns/class_servDNS.inc:167 +msgid "" +"This server has DNS features enabled. You can disable them by clicking below." +msgstr "" +"Dieser Server besitzt aktivierte DNS-Funktionen. Sie können diese durch " +"einen Klick auf die untere Schaltfläche deaktivieren." + +#: admin/systems/services/dns/class_servDNS.inc:169 +msgid "Add DNS service" +msgstr "DNS-Dienst hinzufügen" + +#: admin/systems/services/dns/class_servDNS.inc:170 +msgid "" +"This server has DNS features disabled. You can enable them by clicking below." +msgstr "" +"Aktuell besitzt dieser Server keine aktivierten DNS-Funktionen. Sie können " +"diese durch einen Klick auf die Schaltfläche unten aktivieren." + +#: admin/systems/services/dns/class_servDNS.inc:277 +#: admin/systems/services/dns/class_servDNS.inc:599 +#: admin/systems/services/dns/servdnseditzone.tpl:129 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/services/dns/class_servDNS.inc:278 +msgid "Class" +msgstr "Klasse" + +#: admin/systems/services/dns/class_servDNS.inc:342 +#, php-format +msgid "Cannot delete the selected zone. It is still in use by '%s'" +msgstr "" +"Sie können die gewählte Zone nicht entfernen, sie wird noch von folgendem(n) " +"Eintrag / Einträgen verwendet: '%s'" + +#: admin/systems/services/dns/class_servDNS.inc:452 +#: admin/systems/services/dns/class_servDNS.inc:468 +#: admin/systems/services/dns/class_servDNS.inc:493 +#: admin/systems/services/dns/class_servDNS.inc:504 +#: admin/systems/services/dns/class_servDNS.inc:537 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/dns/class_servDNS.inc:585 +msgid "Start service" +msgstr "Dienst starten" + +#: admin/systems/services/dns/class_servDNS.inc:586 +msgid "Stop service" +msgstr "Dienst stoppen" + +#: admin/systems/services/dns/class_servDNS.inc:587 +msgid "Restart service" +msgstr "Dienst neustarten" + +#: admin/systems/services/dns/class_servDNS.inc:592 +msgid "Zone entry editor" +msgstr "Zonen-Editor" + +#: admin/systems/services/dns/class_servDNS.inc:593 +msgid "Primary dns server" +msgstr "Primärer DNS-Server" + +#: admin/systems/services/dns/class_servDNS.inc:594 +#: admin/systems/services/dns/servdnseditzone.tpl:80 +msgid "Mail address" +msgstr "Mail-Adresse" + +#: admin/systems/services/dns/class_servDNS.inc:600 +msgid "MX records" +msgstr "MX-Datensätze" + +#: admin/systems/services/dns/class_servDNS.inc:601 +#: admin/systems/services/dns/servdnseditzone.tpl:48 +msgid "Zone records" +msgstr "Zonen-Datensätze" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#, php-format +msgid "Cannot rename '%s' to '%s'. Name is already in use!" +msgstr "" +"Kann '%s' nicht in '%s' umbenennen, der angegebene Name wird bereits " +"verwendet!" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:253 +msgid "Name" +msgstr "Name" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:262 +#, php-format +msgid "Cannot rename '%s' to '%s'. Entry is already in use." +msgstr "" +"Kann '%s' nicht in '%s' umbenennen, der Eintrag wird bereits verwendet." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:268 +#, php-format +msgid "Cannot create '%s'. Entry is already in use." +msgstr "Kann '%s' nicht anlegen, der Eintrag wird bereits verwendet." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:277 +#, php-format +msgid "Entry '%s' is used more than once." +msgstr "Der Eintrag '%s' wird öfter als ein Mal verwendet." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:300 +#, php-format +msgid "%s records cannot be used more than once." +msgstr "%s Datensätze können nicht öfter als ein Mal verwendet werden." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:307 +#, php-format +msgid "Please fix the empty %s record for entry '%s'." +msgstr "Bitte beheben Sie den leeren Datensatz %s des Eintrags '%s'." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:315 +#, php-format +msgid "Please fix the duplicate %s record for entry '%s'." +msgstr "Bitte beheben Sie den doppelten Datensatz %s des Eintrags '%s'." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:455 +msgid "Remove" +msgstr "Entfernen" + +#: admin/systems/services/dns/class_DNS.inc:161 +#, php-format +msgid "Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted." +msgstr "" +"Konnte die Reverse-Zone für DNS-Zone '%s' nicht finden. Das Einlesen der " +"Zone wurde abgebrochen." + +#: admin/systems/services/dns/class_DNS.inc:166 +#, php-format +msgid "Found more than one reverse zone for '%s'. Parsing zone aborted." +msgstr "" +"Es wurde mehr als eine Reverse-Zone für DNS-Zone '%s' gefunden. Das Einlesen " +"der Zone wurde abgebrochen." + +#: admin/systems/services/dns/class_DNS.inc:628 +#, php-format +msgid "Undefined zone name '%s'!" +msgstr "Unbekannter Zonenname '%s'!" + +#: admin/systems/services/dns/servdnseditzone.tpl:1 +msgid "Generic" +msgstr "Allgemein" + +#: admin/systems/services/dns/servdnseditzone.tpl:25 +msgid "Netmask" +msgstr "Netzmaske" + +#: admin/systems/services/dns/servdnseditzone.tpl:38 +msgid "Zone is in use, network settings can't be modified." +msgstr "" +"Die Zone wird gerade verwendet, die Einstellungen können nicht verändert " +"werden." + +#: admin/systems/services/dns/servdnseditzone.tpl:51 +msgid "Can't be edited because the zone wasn't saved right now." +msgstr "" +"Kann nicht bearbeitet werden, da die Zone bis jetzt nicht gespeichert wurde." + +#: admin/systems/services/dns/servdnseditzone.tpl:56 +msgid "Edit" +msgstr "Bearbeiten" + +#: admin/systems/services/dns/servdnseditzone.tpl:65 +msgid "SOA record" +msgstr "SOA-Eintrag" + +#: admin/systems/services/dns/servdnseditzone.tpl:71 +msgid "Primary dns server for this zone" +msgstr "Primärer DNS-Server für diese Zone" + +#: admin/systems/services/dns/servdnseditzone.tpl:89 +msgid "Serial number (automatically incremented)" +msgstr "Seriennummer (automatisch erhöht)" + +#: admin/systems/services/dns/servdnseditzone.tpl:147 +msgid "MxRecords" +msgstr "MX-Datensätze" + +#: admin/systems/services/dns/servdnseditzone.tpl:165 +msgid "Global zone records" +msgstr "Globale Zonen-Datensätze" diff --git a/trunk/gosa-plugins/dns/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dns/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b27c23611 --- /dev/null +++ b/trunk/gosa-plugins/dns/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,489 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/systems/services/dns/servdns.tpl:5 +msgid "DNS take over initiated" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:7 +msgid "" +"This includes 'all' DNS zones that are located within this server. Please " +"double check if your really want to do this." +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:14 +#, fuzzy +msgid "Following objects will be taken over" +msgstr "Las siguientes referencias se actualizaran" + +#: admin/systems/services/dns/servdns.tpl:27 +#, fuzzy +msgid "Take over DNS configuration from" +msgstr "Configuración del parámetro" + +#: admin/systems/services/dns/servdns.tpl:31 +msgid "Take over" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:37 +msgid "Zones" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:249 +#: admin/systems/services/dns/class_servDNS.inc:184 +#: admin/systems/services/dns/class_servDNS.inc:342 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#: admin/systems/services/dns/class_DNS.inc:161 +#: admin/systems/services/dns/class_DNS.inc:166 +#: admin/systems/services/dns/class_DNS.inc:628 +msgid "Error" +msgstr "Error" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:347 +msgid "Up" +msgstr "Arriba" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:348 +msgid "Down" +msgstr "Abajo" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:350 +#: admin/systems/services/dns/class_servDNSeditZone.inc:565 +msgid "Delete" +msgstr "Eliminar" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:411 +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNS.inc:589 +#: admin/systems/services/dns/servdnseditzone.tpl:7 +msgid "Zone name" +msgstr "Nombre de la zona" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:415 +#: admin/systems/services/dns/class_servDNS.inc:276 +#: admin/systems/services/dns/class_servDNS.inc:590 +msgid "Reverse zone" +msgstr "Zona Inversa" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNSeditZone.inc:445 +#, fuzzy +msgid "Only lowercase allowed" +msgstr "Solo están permitidas minúsculas en el nombre de zona." + +#: admin/systems/services/dns/class_servDNSeditZone.inc:423 +#: admin/systems/services/dns/class_servDNS.inc:595 +msgid "Serial" +msgstr "Serie" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:427 +#: admin/systems/services/dns/class_servDNS.inc:596 +#: admin/systems/services/dns/servdnseditzone.tpl:102 +msgid "Refresh" +msgstr "Refresco" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:431 +msgid "Time to life" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:435 +#: admin/systems/services/dns/class_servDNS.inc:598 +#: admin/systems/services/dns/servdnseditzone.tpl:120 +msgid "Expire" +msgstr "Expiración" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:439 +#: admin/systems/services/dns/class_servDNS.inc:597 +#: admin/systems/services/dns/servdnseditzone.tpl:111 +msgid "Retry" +msgstr "Reintento" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:454 +#: admin/systems/services/dns/servdnseditzone.tpl:16 +msgid "Network address" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:461 +#: admin/systems/services/dns/class_servDNSeditZone.inc:467 +#: admin/systems/services/dns/class_servDNSeditZone.inc:473 +#, php-format +msgid "" +"The specified network address and the network class (%s/%s) do not match!" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:477 +#: admin/systems/services/dns/class_servDNS.inc:591 +msgid "Network class" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:571 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:453 +msgid "Add" +msgstr "Añadir" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:1 +msgid "" +"This dialog allows you to configure all components of this DNS zone on a " +"single list." +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:5 +msgid "" +"This dialog can't be used until the currently edited zone was saved or the " +"zone entry exists in the ldap database." +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:107 +msgid "New entry" +msgstr "Nueva entrada" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +msgid "Create a new DNS zone entry" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:31 +#: admin/systems/services/dns/class_servDNS.inc:547 +#: admin/systems/services/dns/class_servDNS.inc:576 +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "DNS service" +msgstr "Servicio DNS" + +#: admin/systems/services/dns/class_servDNS.inc:151 +#, php-format +msgid "You are going to migrate the DNS setup from server '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:152 +msgid "" +"The migration will be started when you save this system. To cancel this " +"action, use the cancel button below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:166 +msgid "Remove DNS service" +msgstr "Eliminar servicio DNS" + +#: admin/systems/services/dns/class_servDNS.inc:167 +msgid "" +"This server has DNS features enabled. You can disable them by clicking below." +msgstr "" +"Esta servidor tiene la extensión DNS activada. Puede desactivarla pulsando " +"aquí." + +#: admin/systems/services/dns/class_servDNS.inc:169 +msgid "Add DNS service" +msgstr "Añadir servicio DNS" + +#: admin/systems/services/dns/class_servDNS.inc:170 +msgid "" +"This server has DNS features disabled. You can enable them by clicking below." +msgstr "" +"Este servidor tiene la extensión DNS desactivada. Puede activarla pulsando " +"aquí." + +#: admin/systems/services/dns/class_servDNS.inc:277 +#: admin/systems/services/dns/class_servDNS.inc:599 +#: admin/systems/services/dns/servdnseditzone.tpl:129 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/services/dns/class_servDNS.inc:278 +msgid "Class" +msgstr "Clase" + +#: admin/systems/services/dns/class_servDNS.inc:342 +#, fuzzy, php-format +msgid "Cannot delete the selected zone. It is still in use by '%s'" +msgstr "" +"No se puede eliminar la zona seleccionada, porque está siendo usada por la " +"entrada(s) '%s'" + +#: admin/systems/services/dns/class_servDNS.inc:452 +#: admin/systems/services/dns/class_servDNS.inc:468 +#: admin/systems/services/dns/class_servDNS.inc:493 +#: admin/systems/services/dns/class_servDNS.inc:504 +#: admin/systems/services/dns/class_servDNS.inc:537 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/dns/class_servDNS.inc:585 +#, fuzzy +msgid "Start service" +msgstr "Servicio DNS" + +#: admin/systems/services/dns/class_servDNS.inc:586 +#, fuzzy +msgid "Stop service" +msgstr "Servicio DNS" + +#: admin/systems/services/dns/class_servDNS.inc:587 +#, fuzzy +msgid "Restart service" +msgstr "Servicio DNS" + +#: admin/systems/services/dns/class_servDNS.inc:592 +#, fuzzy +msgid "Zone entry editor" +msgstr "Registros de zona" + +#: admin/systems/services/dns/class_servDNS.inc:593 +msgid "Primary dns server" +msgstr "Servidor DNS primario" + +#: admin/systems/services/dns/class_servDNS.inc:594 +#: admin/systems/services/dns/servdnseditzone.tpl:80 +msgid "Mail address" +msgstr "Dirección correo electrónico" + +#: admin/systems/services/dns/class_servDNS.inc:600 +#, fuzzy +msgid "MX records" +msgstr "Registros de zona" + +#: admin/systems/services/dns/class_servDNS.inc:601 +#: admin/systems/services/dns/servdnseditzone.tpl:48 +msgid "Zone records" +msgstr "Registros de zona" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Name is already in use!" +msgstr "No se puede renombrar '%s' a '%s',ya existe el nombre de destino." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:253 +msgid "Name" +msgstr "Nombre" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:262 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Entry is already in use." +msgstr "No se puede renombrar '%s' a '%s',ya existe el nombre de destino." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:268 +#, fuzzy, php-format +msgid "Cannot create '%s'. Entry is already in use." +msgstr "No se puede crear '%s', el nombre de destino ya existe." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:277 +#, fuzzy, php-format +msgid "Entry '%s' is used more than once." +msgstr "El nombre '%s' esta siendo usado mas de una vez." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:300 +#, fuzzy, php-format +msgid "%s records cannot be used more than once." +msgstr "El nombre '%s' esta siendo usado mas de una vez." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:307 +#, fuzzy, php-format +msgid "Please fix the empty %s record for entry '%s'." +msgstr "Hay un '%s' vacío para el host '%s'." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:315 +#, php-format +msgid "Please fix the duplicate %s record for entry '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:455 +msgid "Remove" +msgstr "Eliminar" + +#: admin/systems/services/dns/class_DNS.inc:161 +#, php-format +msgid "Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted." +msgstr "" + +#: admin/systems/services/dns/class_DNS.inc:166 +#, php-format +msgid "Found more than one reverse zone for '%s'. Parsing zone aborted." +msgstr "" + +#: admin/systems/services/dns/class_DNS.inc:628 +#, php-format +msgid "Undefined zone name '%s'!" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:1 +msgid "Generic" +msgstr "Genérico" + +#: admin/systems/services/dns/servdnseditzone.tpl:25 +#, fuzzy +msgid "Netmask" +msgstr "Netatalk" + +#: admin/systems/services/dns/servdnseditzone.tpl:38 +msgid "Zone is in use, network settings can't be modified." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:51 +msgid "Can't be edited because the zone wasn't saved right now." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:56 +msgid "Edit" +msgstr "Editar" + +#: admin/systems/services/dns/servdnseditzone.tpl:65 +msgid "SOA record" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:71 +msgid "Primary dns server for this zone" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:89 +msgid "Serial number (automatically incremented)" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:147 +msgid "MxRecords" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:165 +msgid "Global zone records" +msgstr "" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Servicios" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Servicios" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Servicios" + +#, fuzzy +#~ msgid "The zone name is not valid!" +#~ msgstr "La clase de red introducida '%s' no es válida." + +#, fuzzy +#~ msgid "The reverse zone is not valid!" +#~ msgstr "La clase de red introducida '%s' no es válida." + +#, fuzzy +#~ msgid "Only lowercase characters are allowed in zone names!" +#~ msgstr "Solo están permitidas minúsculas en el nombre de zona." + +#, fuzzy +#~ msgid "Network address is not valid!" +#~ msgstr "La clase de red introducida '%s' no es válida." + +#, fuzzy +#~ msgid "The network class '%s' is not valid!" +#~ msgstr "La clase de red introducida '%s' no es válida." + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#, fuzzy +#~ msgid "Entry name contains invalid characters." +#~ msgstr "El nombre de la entrada '%s' tiene caracteres no validos" + +#~ msgid "Updating of system server/dns with dn '%s' failed." +#~ msgstr "Ha fallado la actualización del servidor DNS con dn '%s'." + +#~ msgid "Removing of system server/dns with dn '%s' failed." +#~ msgstr "Ha fallado la eliminación del servidor dns con dn '%s'." + +#~ msgid "Saving of system server/dns with dn '%s' failed." +#~ msgstr "Ha fallado la grabación de servidor dns con dn '%s'." + +#~ msgid "Set status flag for system server/dns with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado activar la marca de estado para el servidor dns con dn '%s'." + +#~ msgid "Please choose a valid zone name." +#~ msgstr "Por favor seleccione un nombre de zona válido." + +#~ msgid "Please choose a valid reverse zone name." +#~ msgstr "Por favor seleccione un nombre de zona inversa válido." + +#~ msgid "Please specify a numeric value for serial number." +#~ msgstr "Por favor introduzca un valor numérico para el número de serie." + +#~ msgid "Please specify a numeric value for refresh." +#~ msgstr "Por favor introduzca un valor numérico para el refresco." + +#~ msgid "Please specify a numeric value for ttl." +#~ msgstr "Por favor introduzca un valor numérico para TTL." + +#~ msgid "Please specify a numeric value for expire." +#~ msgstr "Por favor introduzca un valor numérico para expiración." + +#~ msgid "Please specify a numeric value for retry." +#~ msgstr "Por favor introduzca un valor numérico para reintento." + +#~ msgid "Only lowercase is allowed, please check your '%ss'." +#~ msgstr "Solo están permitidas minúsculas, por favor compruebe su '%ss'." + +#~ msgid "" +#~ "The given network address is not a valid, please specify a valid IP " +#~ "address." +#~ msgstr "" +#~ "La dirección de red introducida no es válida, porfavor introduzca una " +#~ "dirección IP valida." + +#~ msgid "" +#~ "The specified network address is not matching with the specified zone " +#~ "class, try it this way x.0.0.0" +#~ msgstr "" +#~ "La dirección de red introducida no coincide con la clase de zona " +#~ "indicada, debe ser de la forma x.0.0.0" + +#~ msgid "" +#~ "The specified network address is not matching with the specified zone " +#~ "class, try it this way x.x.0.0" +#~ msgstr "" +#~ "La dirección de red introducida no coincide con la clase de zona " +#~ "indicada, debe ser de la forma x.x.0.0" + +#~ msgid "" +#~ "The specified network address is not matching with the specified zone " +#~ "class, try it this way x.x.x.0" +#~ msgstr "" +#~ "La dirección de red introducida no coincide con la clase de zona " +#~ "indicada, debe ser de la forma x.x.x.0" + +#~ msgid "" +#~ "Can't rename '%s' to '%s' there is already an entry with the same name in " +#~ "our zone editing dialog." +#~ msgstr "" +#~ "No puedo renombrar '%s' en '%s', ya existe una entrada con el mismo " +#~ "nombre en el dialogo de editar zonas." + +#~ msgid "The record type '%s' is a unique type and can't be defined twice." +#~ msgstr "" +#~ "El tipo de registro '%s' es un tipo único y no puede ser definido dos " +#~ "veces." + +#~ msgid "There is a duplicate entry in '%s' for '%s'." +#~ msgstr "Hay una entrada duplicada en '%s' para '%s'." diff --git a/trunk/gosa-plugins/dns/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dns/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f273c657d --- /dev/null +++ b/trunk/gosa-plugins/dns/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,370 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2008-10-09 15:27+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/services/dns/servdns.tpl:5 +msgid "DNS take over initiated" +msgstr "Démarrage de la prise de contrôle du DNS" + +#: admin/systems/services/dns/servdns.tpl:7 +msgid "" +"This includes 'all' DNS zones that are located within this server. Please " +"double check if your really want to do this." +msgstr "" +"Ceci inclus toutes les zones DNS qui sont situées dans ce serveur. Veuillez " +"vérifier que vous voulez réaliser cette opération." + +#: admin/systems/services/dns/servdns.tpl:14 +msgid "Following objects will be taken over" +msgstr "L'on prendra le contrôle sur les objets suivants" + +#: admin/systems/services/dns/servdns.tpl:27 +msgid "Take over DNS configuration from" +msgstr "Prendre le contrôle sur la configuration DNS depuis" + +#: admin/systems/services/dns/servdns.tpl:31 +msgid "Take over" +msgstr "Prise de contrôle" + +#: admin/systems/services/dns/servdns.tpl:37 +msgid "Zones" +msgstr "Zones" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:249 +#: admin/systems/services/dns/class_servDNS.inc:184 +#: admin/systems/services/dns/class_servDNS.inc:342 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#: admin/systems/services/dns/class_DNS.inc:161 +#: admin/systems/services/dns/class_DNS.inc:166 +#: admin/systems/services/dns/class_DNS.inc:628 +msgid "Error" +msgstr "Erreur" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:347 +msgid "Up" +msgstr "Au dessus" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:348 +msgid "Down" +msgstr "En bas" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:350 +#: admin/systems/services/dns/class_servDNSeditZone.inc:565 +msgid "Delete" +msgstr "Supprimer" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:411 +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNS.inc:589 +#: admin/systems/services/dns/servdnseditzone.tpl:7 +msgid "Zone name" +msgstr "Nom de la zone" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:415 +#: admin/systems/services/dns/class_servDNS.inc:276 +#: admin/systems/services/dns/class_servDNS.inc:590 +msgid "Reverse zone" +msgstr "Zone inverse" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNSeditZone.inc:445 +msgid "Only lowercase allowed" +msgstr "Seule les minuscules sont autorisées." + +#: admin/systems/services/dns/class_servDNSeditZone.inc:423 +#: admin/systems/services/dns/class_servDNS.inc:595 +msgid "Serial" +msgstr "Série" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:427 +#: admin/systems/services/dns/class_servDNS.inc:596 +#: admin/systems/services/dns/servdnseditzone.tpl:102 +msgid "Refresh" +msgstr "Rafraîchir" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:431 +msgid "Time to life" +msgstr "Temps de vie" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:435 +#: admin/systems/services/dns/class_servDNS.inc:598 +#: admin/systems/services/dns/servdnseditzone.tpl:120 +msgid "Expire" +msgstr "Expirer" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:439 +#: admin/systems/services/dns/class_servDNS.inc:597 +#: admin/systems/services/dns/servdnseditzone.tpl:111 +msgid "Retry" +msgstr "Réessayer" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:454 +#: admin/systems/services/dns/servdnseditzone.tpl:16 +msgid "Network address" +msgstr "Adresse réseau" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:461 +#: admin/systems/services/dns/class_servDNSeditZone.inc:467 +#: admin/systems/services/dns/class_servDNSeditZone.inc:473 +#, php-format +msgid "" +"The specified network address and the network class (%s/%s) do not match!" +msgstr "" +"L'adresse réseau spécifiée et la classe réseau (%s/%s) ne concordent pas !" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:477 +#: admin/systems/services/dns/class_servDNS.inc:591 +msgid "Network class" +msgstr "Classe réseau" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:571 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:453 +msgid "Add" +msgstr "Ajouter" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:1 +msgid "" +"This dialog allows you to configure all components of this DNS zone on a " +"single list." +msgstr "" +"Ce dialogue vous permet de configurer tout les composants d'une zone DNS " +"dans une simple liste." + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:5 +msgid "" +"This dialog can't be used until the currently edited zone was saved or the " +"zone entry exists in the ldap database." +msgstr "" +"Cette boite de dialogue ne peut pas être tant que la zone n'a pas été sauvée " +"ou que l'enregistrement existe dans la base de données ldap." + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:107 +msgid "New entry" +msgstr "Nouvelle entrée" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +msgid "Create a new DNS zone entry" +msgstr "Créer une nouvelle zone DNS" + +#: admin/systems/services/dns/class_servDNS.inc:31 +#: admin/systems/services/dns/class_servDNS.inc:547 +#: admin/systems/services/dns/class_servDNS.inc:576 +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "DNS service" +msgstr "Service DNS" + +#: admin/systems/services/dns/class_servDNS.inc:151 +#, php-format +msgid "You are going to migrate the DNS setup from server '%s'." +msgstr "" +"Vous êtes sur le point de migrer le serveur DNS depuis le serveur '%s'." + +#: admin/systems/services/dns/class_servDNS.inc:152 +msgid "" +"The migration will be started when you save this system. To cancel this " +"action, use the cancel button below." +msgstr "" +"La migration commencera quand vous sauverez ce système. Pour annuler cette " +"action, utilisez le bouton annuler." + +#: admin/systems/services/dns/class_servDNS.inc:166 +msgid "Remove DNS service" +msgstr "Suppression du service DNS" + +#: admin/systems/services/dns/class_servDNS.inc:167 +msgid "" +"This server has DNS features enabled. You can disable them by clicking below." +msgstr "" +"Ce serveur à l'option DNS activée. Vous pouvez le désactiver en cliquant sur " +"le bouton ci-dessous." + +#: admin/systems/services/dns/class_servDNS.inc:169 +msgid "Add DNS service" +msgstr "Ajouter un service DNS" + +#: admin/systems/services/dns/class_servDNS.inc:170 +msgid "" +"This server has DNS features disabled. You can enable them by clicking below." +msgstr "" +"Ce serveur à l'option DNS désactivé. Vous pouvez l'activer en cliquant sur " +"le bouton ci-dessous." + +#: admin/systems/services/dns/class_servDNS.inc:277 +#: admin/systems/services/dns/class_servDNS.inc:599 +#: admin/systems/services/dns/servdnseditzone.tpl:129 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/services/dns/class_servDNS.inc:278 +msgid "Class" +msgstr "Classe" + +#: admin/systems/services/dns/class_servDNS.inc:342 +#, php-format +msgid "Cannot delete the selected zone. It is still in use by '%s'" +msgstr "" +"Vous ne pouvez pas effacer cette zone car elle est encore utilisée par '%s'" + +#: admin/systems/services/dns/class_servDNS.inc:452 +#: admin/systems/services/dns/class_servDNS.inc:468 +#: admin/systems/services/dns/class_servDNS.inc:493 +#: admin/systems/services/dns/class_servDNS.inc:504 +#: admin/systems/services/dns/class_servDNS.inc:537 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/dns/class_servDNS.inc:585 +msgid "Start service" +msgstr "Démarrer le service" + +#: admin/systems/services/dns/class_servDNS.inc:586 +msgid "Stop service" +msgstr "Arrêter le Service" + +#: admin/systems/services/dns/class_servDNS.inc:587 +msgid "Restart service" +msgstr "Redémarrer le service" + +#: admin/systems/services/dns/class_servDNS.inc:592 +msgid "Zone entry editor" +msgstr "Editeur de zone" + +#: admin/systems/services/dns/class_servDNS.inc:593 +msgid "Primary dns server" +msgstr "Serveur dns primaire" + +#: admin/systems/services/dns/class_servDNS.inc:594 +#: admin/systems/services/dns/servdnseditzone.tpl:80 +msgid "Mail address" +msgstr "Adresse de messagerie" + +#: admin/systems/services/dns/class_servDNS.inc:600 +msgid "MX records" +msgstr "Enregistrements MX" + +#: admin/systems/services/dns/class_servDNS.inc:601 +#: admin/systems/services/dns/servdnseditzone.tpl:48 +msgid "Zone records" +msgstr "Enregistrement de zone" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#, php-format +msgid "Cannot rename '%s' to '%s'. Name is already in use!" +msgstr "Impossible de renommer '%s' en '%s', ce nom existe déjà !" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:253 +msgid "Name" +msgstr "Nom" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:262 +#, php-format +msgid "Cannot rename '%s' to '%s'. Entry is already in use." +msgstr "Impossible de renommer '%s' en '%s'. L'enregistrement existe déjà." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:268 +#, php-format +msgid "Cannot create '%s'. Entry is already in use." +msgstr "Impossible de créer '%s'. Cet enregistrement existe déjà." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:277 +#, php-format +msgid "Entry '%s' is used more than once." +msgstr "L'entrée '%s' est utilisé plus d'une fois." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:300 +#, php-format +msgid "%s records cannot be used more than once." +msgstr "Les enregistrements '%s' ne peuvent pas être utilisés plus d'une fois." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:307 +#, php-format +msgid "Please fix the empty %s record for entry '%s'." +msgstr "" +"Veuillez corriger l'enregistrement vide '%s' pour l'enregistrement '%s'." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:315 +#, php-format +msgid "Please fix the duplicate %s record for entry '%s'." +msgstr "" +"Veuillez corriger l'enregistrement double '%s' pour l'enregistrement '%s'." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:455 +msgid "Remove" +msgstr "Supprimer" + +#: admin/systems/services/dns/class_DNS.inc:161 +#, php-format +msgid "Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted." +msgstr "" +"Impossible de trouver la zone inverse pour la zone dns '%s'. Arrêt de la " +"lecture de la zone." + +#: admin/systems/services/dns/class_DNS.inc:166 +#, php-format +msgid "Found more than one reverse zone for '%s'. Parsing zone aborted." +msgstr "" +"Plus d'un zone inverse existe pour la zone dns '%s'. Arrêt de la lecture de " +"la zone." + +#: admin/systems/services/dns/class_DNS.inc:628 +#, php-format +msgid "Undefined zone name '%s'!" +msgstr "Nom de zone non définie '%s' !" + +#: admin/systems/services/dns/servdnseditzone.tpl:1 +msgid "Generic" +msgstr "Informations" + +#: admin/systems/services/dns/servdnseditzone.tpl:25 +msgid "Netmask" +msgstr "Masque réseau" + +#: admin/systems/services/dns/servdnseditzone.tpl:38 +msgid "Zone is in use, network settings can't be modified." +msgstr "" +"La zone est utilisée, les paramètres réseau ne peuvent pas être modifiés." + +#: admin/systems/services/dns/servdnseditzone.tpl:51 +msgid "Can't be edited because the zone wasn't saved right now." +msgstr "Impossible d'éditer la zone car elle est actuellement sauvegardée." + +#: admin/systems/services/dns/servdnseditzone.tpl:56 +msgid "Edit" +msgstr "Editer" + +#: admin/systems/services/dns/servdnseditzone.tpl:65 +msgid "SOA record" +msgstr "Enregistrement SOA" + +#: admin/systems/services/dns/servdnseditzone.tpl:71 +msgid "Primary dns server for this zone" +msgstr "Serveur dns primaire pour cette zone" + +#: admin/systems/services/dns/servdnseditzone.tpl:89 +msgid "Serial number (automatically incremented)" +msgstr "Numéro de série (incrémenté automatiquement)" + +#: admin/systems/services/dns/servdnseditzone.tpl:147 +msgid "MxRecords" +msgstr "Enregistrements mx" + +#: admin/systems/services/dns/servdnseditzone.tpl:165 +msgid "Global zone records" +msgstr "Enregistrements pour la zone globale" diff --git a/trunk/gosa-plugins/dns/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dns/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..92574c09d --- /dev/null +++ b/trunk/gosa-plugins/dns/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,455 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/systems/services/dns/servdns.tpl:5 +msgid "DNS take over initiated" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:7 +msgid "" +"This includes 'all' DNS zones that are located within this server. Please " +"double check if your really want to do this." +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:14 +msgid "Following objects will be taken over" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:27 +#, fuzzy +msgid "Take over DNS configuration from" +msgstr "Scarica il file di configurazione" + +#: admin/systems/services/dns/servdns.tpl:31 +#, fuzzy +msgid "Take over" +msgstr "Server" + +#: admin/systems/services/dns/servdns.tpl:37 +#, fuzzy +msgid "Zones" +msgstr "telefoni" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:249 +#: admin/systems/services/dns/class_servDNS.inc:184 +#: admin/systems/services/dns/class_servDNS.inc:342 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#: admin/systems/services/dns/class_DNS.inc:161 +#: admin/systems/services/dns/class_DNS.inc:166 +#: admin/systems/services/dns/class_DNS.inc:628 +msgid "Error" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:347 +msgid "Up" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:348 +#, fuzzy +msgid "Down" +msgstr "Dominio" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:350 +#: admin/systems/services/dns/class_servDNSeditZone.inc:565 +msgid "Delete" +msgstr "Rimuovi" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:411 +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNS.inc:589 +#: admin/systems/services/dns/servdnseditzone.tpl:7 +#, fuzzy +msgid "Zone name" +msgstr "Nome comune" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:415 +#: admin/systems/services/dns/class_servDNS.inc:276 +#: admin/systems/services/dns/class_servDNS.inc:590 +#, fuzzy +msgid "Reverse zone" +msgstr "Riferimenti" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNSeditZone.inc:445 +msgid "Only lowercase allowed" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:423 +#: admin/systems/services/dns/class_servDNS.inc:595 +#, fuzzy +msgid "Serial" +msgstr "Terminali" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:427 +#: admin/systems/services/dns/class_servDNS.inc:596 +#: admin/systems/services/dns/servdnseditzone.tpl:102 +#, fuzzy +msgid "Refresh" +msgstr "Riferimenti" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:431 +msgid "Time to life" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:435 +#: admin/systems/services/dns/class_servDNS.inc:598 +#: admin/systems/services/dns/servdnseditzone.tpl:120 +#, fuzzy +msgid "Expire" +msgstr "Esporta" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:439 +#: admin/systems/services/dns/class_servDNS.inc:597 +#: admin/systems/services/dns/servdnseditzone.tpl:111 +msgid "Retry" +msgstr "Riprova" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:454 +#: admin/systems/services/dns/servdnseditzone.tpl:16 +#, fuzzy +msgid "Network address" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:461 +#: admin/systems/services/dns/class_servDNSeditZone.inc:467 +#: admin/systems/services/dns/class_servDNSeditZone.inc:473 +#, php-format +msgid "" +"The specified network address and the network class (%s/%s) do not match!" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:477 +#: admin/systems/services/dns/class_servDNS.inc:591 +#, fuzzy +msgid "Network class" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:571 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:453 +msgid "Add" +msgstr "Aggiungi" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:1 +msgid "" +"This dialog allows you to configure all components of this DNS zone on a " +"single list." +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:5 +msgid "" +"This dialog can't be used until the currently edited zone was saved or the " +"zone entry exists in the ldap database." +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:107 +#, fuzzy +msgid "New entry" +msgstr "utenti" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#, fuzzy +msgid "Create a new DNS zone entry" +msgstr "Crea in" + +#: admin/systems/services/dns/class_servDNS.inc:31 +#: admin/systems/services/dns/class_servDNS.inc:547 +#: admin/systems/services/dns/class_servDNS.inc:576 +#: admin/systems/services/dns/class_servDNS.inc:577 +#, fuzzy +msgid "DNS service" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/dns/class_servDNS.inc:151 +#, fuzzy, php-format +msgid "You are going to migrate the DNS setup from server '%s'." +msgstr "Non hai il permesso di cambiare la tua password." + +#: admin/systems/services/dns/class_servDNS.inc:152 +msgid "" +"The migration will be started when you save this system. To cancel this " +"action, use the cancel button below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:166 +msgid "Remove DNS service" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:167 +msgid "" +"This server has DNS features enabled. You can disable them by clicking below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:169 +msgid "Add DNS service" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:170 +msgid "" +"This server has DNS features disabled. You can enable them by clicking below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:277 +#: admin/systems/services/dns/class_servDNS.inc:599 +#: admin/systems/services/dns/servdnseditzone.tpl:129 +msgid "TTL" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:278 +#, fuzzy +msgid "Class" +msgstr "classe" + +#: admin/systems/services/dns/class_servDNS.inc:342 +#, php-format +msgid "Cannot delete the selected zone. It is still in use by '%s'" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:452 +#: admin/systems/services/dns/class_servDNS.inc:468 +#: admin/systems/services/dns/class_servDNS.inc:493 +#: admin/systems/services/dns/class_servDNS.inc:504 +#: admin/systems/services/dns/class_servDNS.inc:537 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/dns/class_servDNS.inc:585 +#, fuzzy +msgid "Start service" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/dns/class_servDNS.inc:586 +#, fuzzy +msgid "Stop service" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/dns/class_servDNS.inc:587 +#, fuzzy +msgid "Restart service" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/dns/class_servDNS.inc:592 +#, fuzzy +msgid "Zone entry editor" +msgstr "Directory" + +#: admin/systems/services/dns/class_servDNS.inc:593 +#, fuzzy +msgid "Primary dns server" +msgstr "server" + +#: admin/systems/services/dns/class_servDNS.inc:594 +#: admin/systems/services/dns/servdnseditzone.tpl:80 +msgid "Mail address" +msgstr "Indirizzo principale" + +#: admin/systems/services/dns/class_servDNS.inc:600 +#, fuzzy +msgid "MX records" +msgstr "Directory" + +#: admin/systems/services/dns/class_servDNS.inc:601 +#: admin/systems/services/dns/servdnseditzone.tpl:48 +#, fuzzy +msgid "Zone records" +msgstr "Directory" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Name is already in use!" +msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:253 +msgid "Name" +msgstr "Cognome" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:262 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Entry is already in use." +msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:268 +#, fuzzy, php-format +msgid "Cannot create '%s'. Entry is already in use." +msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:277 +#, php-format +msgid "Entry '%s' is used more than once." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:300 +#, php-format +msgid "%s records cannot be used more than once." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:307 +#, php-format +msgid "Please fix the empty %s record for entry '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:315 +#, php-format +msgid "Please fix the duplicate %s record for entry '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:455 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/systems/services/dns/class_DNS.inc:161 +#, php-format +msgid "Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted." +msgstr "" + +#: admin/systems/services/dns/class_DNS.inc:166 +#, php-format +msgid "Found more than one reverse zone for '%s'. Parsing zone aborted." +msgstr "" + +#: admin/systems/services/dns/class_DNS.inc:628 +#, php-format +msgid "Undefined zone name '%s'!" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:1 +msgid "Generic" +msgstr "Generale" + +#: admin/systems/services/dns/servdnseditzone.tpl:25 +msgid "Netmask" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:38 +msgid "Zone is in use, network settings can't be modified." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:51 +msgid "Can't be edited because the zone wasn't saved right now." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:56 +msgid "Edit" +msgstr "Modifica" + +#: admin/systems/services/dns/servdnseditzone.tpl:65 +#, fuzzy +msgid "SOA record" +msgstr "Directory" + +#: admin/systems/services/dns/servdnseditzone.tpl:71 +msgid "Primary dns server for this zone" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:89 +msgid "Serial number (automatically incremented)" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:147 +#, fuzzy +msgid "MxRecords" +msgstr "Directory" + +#: admin/systems/services/dns/servdnseditzone.tpl:165 +#, fuzzy +msgid "Global zone records" +msgstr "Directory" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Servizi" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Servizi" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#, fuzzy +#~ msgid "The zone name is not valid!" +#~ msgstr "Il valore di 'Dimensione quota' non è valido" + +#, fuzzy +#~ msgid "The reverse zone is not valid!" +#~ msgstr "Il valore di 'Dimensione quota' non è valido" + +#, fuzzy +#~ msgid "Network address is not valid!" +#~ msgstr "Mostra dispositiva di rete" + +#, fuzzy +#~ msgid "The network class '%s' is not valid!" +#~ msgstr "Il valore di 'Dimensione quota' non è valido" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Save" +#~ msgstr "Salva" + +#, fuzzy +#~ msgid "Entry name contains invalid characters." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "Removing of system server/dns with dn '%s' failed." +#~ msgstr "Imposta dipartimento" + +#, fuzzy +#~ msgid "Saving of system server/dns with dn '%s' failed." +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Please choose a valid zone name." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please choose a valid reverse zone name." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please specify a numeric value for serial number." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please specify a numeric value for refresh." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please specify a numeric value for ttl." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please specify a numeric value for expire." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please specify a numeric value for retry." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "" +#~ "The given network address is not a valid, please specify a valid IP " +#~ "address." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" diff --git a/trunk/gosa-plugins/dns/locale/messages.po b/trunk/gosa-plugins/dns/locale/messages.po new file mode 100644 index 000000000..5da550460 --- /dev/null +++ b/trunk/gosa-plugins/dns/locale/messages.po @@ -0,0 +1,350 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/dns/servdns.tpl:5 +msgid "DNS take over initiated" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:7 +msgid "" +"This includes 'all' DNS zones that are located within this server. Please " +"double check if your really want to do this." +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:14 +msgid "Following objects will be taken over" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:27 +msgid "Take over DNS configuration from" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:31 +msgid "Take over" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:37 +msgid "Zones" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:249 +#: admin/systems/services/dns/class_servDNS.inc:184 +#: admin/systems/services/dns/class_servDNS.inc:342 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#: admin/systems/services/dns/class_DNS.inc:161 +#: admin/systems/services/dns/class_DNS.inc:166 +#: admin/systems/services/dns/class_DNS.inc:628 +msgid "Error" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:347 +msgid "Up" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:348 +msgid "Down" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:350 +#: admin/systems/services/dns/class_servDNSeditZone.inc:565 +msgid "Delete" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:411 +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNS.inc:589 +#: admin/systems/services/dns/servdnseditzone.tpl:7 +msgid "Zone name" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:415 +#: admin/systems/services/dns/class_servDNS.inc:276 +#: admin/systems/services/dns/class_servDNS.inc:590 +msgid "Reverse zone" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNSeditZone.inc:445 +msgid "Only lowercase allowed" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:423 +#: admin/systems/services/dns/class_servDNS.inc:595 +msgid "Serial" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:427 +#: admin/systems/services/dns/class_servDNS.inc:596 +#: admin/systems/services/dns/servdnseditzone.tpl:102 +msgid "Refresh" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:431 +msgid "Time to life" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:435 +#: admin/systems/services/dns/class_servDNS.inc:598 +#: admin/systems/services/dns/servdnseditzone.tpl:120 +msgid "Expire" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:439 +#: admin/systems/services/dns/class_servDNS.inc:597 +#: admin/systems/services/dns/servdnseditzone.tpl:111 +msgid "Retry" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:454 +#: admin/systems/services/dns/servdnseditzone.tpl:16 +msgid "Network address" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:461 +#: admin/systems/services/dns/class_servDNSeditZone.inc:467 +#: admin/systems/services/dns/class_servDNSeditZone.inc:473 +#, php-format +msgid "" +"The specified network address and the network class (%s/%s) do not match!" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:477 +#: admin/systems/services/dns/class_servDNS.inc:591 +msgid "Network class" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:571 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:453 +msgid "Add" +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:1 +msgid "" +"This dialog allows you to configure all components of this DNS zone on a " +"single list." +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:5 +msgid "" +"This dialog can't be used until the currently edited zone was saved or the " +"zone entry exists in the ldap database." +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:107 +msgid "New entry" +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +msgid "Create a new DNS zone entry" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:31 +#: admin/systems/services/dns/class_servDNS.inc:547 +#: admin/systems/services/dns/class_servDNS.inc:576 +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "DNS service" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:151 +#, php-format +msgid "You are going to migrate the DNS setup from server '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:152 +msgid "" +"The migration will be started when you save this system. To cancel this " +"action, use the cancel button below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:166 +msgid "Remove DNS service" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:167 +msgid "" +"This server has DNS features enabled. You can disable them by clicking below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:169 +msgid "Add DNS service" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:170 +msgid "" +"This server has DNS features disabled. You can enable them by clicking below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:277 +#: admin/systems/services/dns/class_servDNS.inc:599 +#: admin/systems/services/dns/servdnseditzone.tpl:129 +msgid "TTL" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:278 +msgid "Class" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:342 +#, php-format +msgid "Cannot delete the selected zone. It is still in use by '%s'" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:452 +#: admin/systems/services/dns/class_servDNS.inc:468 +#: admin/systems/services/dns/class_servDNS.inc:493 +#: admin/systems/services/dns/class_servDNS.inc:504 +#: admin/systems/services/dns/class_servDNS.inc:537 +msgid "LDAP error" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "Services" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:585 +msgid "Start service" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:586 +msgid "Stop service" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:587 +msgid "Restart service" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:592 +msgid "Zone entry editor" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:593 +msgid "Primary dns server" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:594 +#: admin/systems/services/dns/servdnseditzone.tpl:80 +msgid "Mail address" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:600 +msgid "MX records" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:601 +#: admin/systems/services/dns/servdnseditzone.tpl:48 +msgid "Zone records" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#, php-format +msgid "Cannot rename '%s' to '%s'. Name is already in use!" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:253 +msgid "Name" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:262 +#, php-format +msgid "Cannot rename '%s' to '%s'. Entry is already in use." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:268 +#, php-format +msgid "Cannot create '%s'. Entry is already in use." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:277 +#, php-format +msgid "Entry '%s' is used more than once." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:300 +#, php-format +msgid "%s records cannot be used more than once." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:307 +#, php-format +msgid "Please fix the empty %s record for entry '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:315 +#, php-format +msgid "Please fix the duplicate %s record for entry '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:455 +msgid "Remove" +msgstr "" + +#: admin/systems/services/dns/class_DNS.inc:161 +#, php-format +msgid "Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted." +msgstr "" + +#: admin/systems/services/dns/class_DNS.inc:166 +#, php-format +msgid "Found more than one reverse zone for '%s'. Parsing zone aborted." +msgstr "" + +#: admin/systems/services/dns/class_DNS.inc:628 +#, php-format +msgid "Undefined zone name '%s'!" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:1 +msgid "Generic" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:25 +msgid "Netmask" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:38 +msgid "Zone is in use, network settings can't be modified." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:51 +msgid "Can't be edited because the zone wasn't saved right now." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:56 +msgid "Edit" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:65 +msgid "SOA record" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:71 +msgid "Primary dns server for this zone" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:89 +msgid "Serial number (automatically incremented)" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:147 +msgid "MxRecords" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:165 +msgid "Global zone records" +msgstr "" diff --git a/trunk/gosa-plugins/dns/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dns/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..8ce6f1ab6 --- /dev/null +++ b/trunk/gosa-plugins/dns/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,480 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/dns/servdns.tpl:5 +msgid "DNS take over initiated" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:7 +#, fuzzy +msgid "" +"This includes 'all' DNS zones that are located within this server. Please " +"double check if your really want to do this." +msgstr "" +"Dit omvat 'alle' accounts, systemen etc. in deze subtree. Verzeker uzelf er " +"van dat dit is wat u wilt, aangezien er geen mogelijkheid voor GOsa is om " +"deze gegevens terug te halen." + +#: admin/systems/services/dns/servdns.tpl:14 +msgid "Following objects will be taken over" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:27 +#, fuzzy +msgid "Take over DNS configuration from" +msgstr "FAX database" + +#: admin/systems/services/dns/servdns.tpl:31 +#, fuzzy +msgid "Take over" +msgstr "Tijd Service" + +#: admin/systems/services/dns/servdns.tpl:37 +msgid "Zones" +msgstr "Zones" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:249 +#: admin/systems/services/dns/class_servDNS.inc:184 +#: admin/systems/services/dns/class_servDNS.inc:342 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#: admin/systems/services/dns/class_DNS.inc:161 +#: admin/systems/services/dns/class_DNS.inc:166 +#: admin/systems/services/dns/class_DNS.inc:628 +msgid "Error" +msgstr "Fout" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:347 +msgid "Up" +msgstr "Omhoog" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:348 +msgid "Down" +msgstr "Omlaag" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:350 +#: admin/systems/services/dns/class_servDNSeditZone.inc:565 +msgid "Delete" +msgstr "Verwijderen" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:411 +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNS.inc:589 +#: admin/systems/services/dns/servdnseditzone.tpl:7 +msgid "Zone name" +msgstr "Zone-naam" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:415 +#: admin/systems/services/dns/class_servDNS.inc:276 +#: admin/systems/services/dns/class_servDNS.inc:590 +msgid "Reverse zone" +msgstr "Reverse zone" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNSeditZone.inc:445 +#, fuzzy +msgid "Only lowercase allowed" +msgstr "Hoofdletter zijn niet toegestaan voor de zone-naam." + +#: admin/systems/services/dns/class_servDNSeditZone.inc:423 +#: admin/systems/services/dns/class_servDNS.inc:595 +msgid "Serial" +msgstr "Serieel" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:427 +#: admin/systems/services/dns/class_servDNS.inc:596 +#: admin/systems/services/dns/servdnseditzone.tpl:102 +msgid "Refresh" +msgstr "Ververs" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:431 +msgid "Time to life" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:435 +#: admin/systems/services/dns/class_servDNS.inc:598 +#: admin/systems/services/dns/servdnseditzone.tpl:120 +msgid "Expire" +msgstr "Vervaltijd" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:439 +#: admin/systems/services/dns/class_servDNS.inc:597 +#: admin/systems/services/dns/servdnseditzone.tpl:111 +msgid "Retry" +msgstr "Opnieuw proberen" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:454 +#: admin/systems/services/dns/servdnseditzone.tpl:16 +msgid "Network address" +msgstr "Netwerkadres" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:461 +#: admin/systems/services/dns/class_servDNSeditZone.inc:467 +#: admin/systems/services/dns/class_servDNSeditZone.inc:473 +#, php-format +msgid "" +"The specified network address and the network class (%s/%s) do not match!" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:477 +#: admin/systems/services/dns/class_servDNS.inc:591 +#, fuzzy +msgid "Network class" +msgstr "Netwerkadres" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:571 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:453 +msgid "Add" +msgstr "Toevoegen" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:1 +msgid "" +"This dialog allows you to configure all components of this DNS zone on a " +"single list." +msgstr "" +"Deze dialoog maakt het mogelijk om alle componenten van deze DNS zone binnen " +"een enkele lijst te configureren" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:5 +msgid "" +"This dialog can't be used until the currently edited zone was saved or the " +"zone entry exists in the ldap database." +msgstr "" +"Deze dialoog kan niet gebruikt worden, totdat de zone die nu bewerkt wordt " +"opgeslagen wordt of de zone invoerregel in de LDAP database bestaat." + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:107 +msgid "New entry" +msgstr "Nieuwe regel" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +msgid "Create a new DNS zone entry" +msgstr "Een nieuwe DNS zone regel aanmaken" + +#: admin/systems/services/dns/class_servDNS.inc:31 +#: admin/systems/services/dns/class_servDNS.inc:547 +#: admin/systems/services/dns/class_servDNS.inc:576 +#: admin/systems/services/dns/class_servDNS.inc:577 +#, fuzzy +msgid "DNS service" +msgstr "Voeg DNS service toe" + +#: admin/systems/services/dns/class_servDNS.inc:151 +#, fuzzy, php-format +msgid "You are going to migrate the DNS setup from server '%s'." +msgstr "U staat op het punt de invoer '%s' te kopieren." + +#: admin/systems/services/dns/class_servDNS.inc:152 +msgid "" +"The migration will be started when you save this system. To cancel this " +"action, use the cancel button below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:166 +msgid "Remove DNS service" +msgstr "Verwijder DNS service" + +#: admin/systems/services/dns/class_servDNS.inc:167 +msgid "" +"This server has DNS features enabled. You can disable them by clicking below." +msgstr "" +"Deze server heeft DNS mogelijkheden ingeschakeld. U kunt deze uitschakelen " +"door de knop hieronder te gebruiken." + +#: admin/systems/services/dns/class_servDNS.inc:169 +msgid "Add DNS service" +msgstr "Voeg DNS service toe" + +#: admin/systems/services/dns/class_servDNS.inc:170 +msgid "" +"This server has DNS features disabled. You can enable them by clicking below." +msgstr "" +"Deze server heeft DNS mogelijkheden uitgeschakeld. U kunt deze inschakelen " +"door de knop hieronder te gebruiken." + +#: admin/systems/services/dns/class_servDNS.inc:277 +#: admin/systems/services/dns/class_servDNS.inc:599 +#: admin/systems/services/dns/servdnseditzone.tpl:129 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/services/dns/class_servDNS.inc:278 +msgid "Class" +msgstr "Klasse" + +#: admin/systems/services/dns/class_servDNS.inc:342 +#, fuzzy, php-format +msgid "Cannot delete the selected zone. It is still in use by '%s'" +msgstr "" +"Kan de geselecteerde zone niet verwijderen, aangezien deze nog gebruikt " +"wordt door de volgende regel(s) '%s'" + +#: admin/systems/services/dns/class_servDNS.inc:452 +#: admin/systems/services/dns/class_servDNS.inc:468 +#: admin/systems/services/dns/class_servDNS.inc:493 +#: admin/systems/services/dns/class_servDNS.inc:504 +#: admin/systems/services/dns/class_servDNS.inc:537 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/dns/class_servDNS.inc:585 +#, fuzzy +msgid "Start service" +msgstr "Voeg DNS service toe" + +#: admin/systems/services/dns/class_servDNS.inc:586 +#, fuzzy +msgid "Stop service" +msgstr "Voeg DNS service toe" + +#: admin/systems/services/dns/class_servDNS.inc:587 +#, fuzzy +msgid "Restart service" +msgstr "Voeg DNS service toe" + +#: admin/systems/services/dns/class_servDNS.inc:592 +#, fuzzy +msgid "Zone entry editor" +msgstr "Zone records" + +#: admin/systems/services/dns/class_servDNS.inc:593 +#, fuzzy +msgid "Primary dns server" +msgstr "Primaire DNS server voor deze zone" + +#: admin/systems/services/dns/class_servDNS.inc:594 +#: admin/systems/services/dns/servdnseditzone.tpl:80 +msgid "Mail address" +msgstr "E-mail adres" + +#: admin/systems/services/dns/class_servDNS.inc:600 +#, fuzzy +msgid "MX records" +msgstr "MX records" + +#: admin/systems/services/dns/class_servDNS.inc:601 +#: admin/systems/services/dns/servdnseditzone.tpl:48 +msgid "Zone records" +msgstr "Zone records" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Name is already in use!" +msgstr "Kan '%s' niet hernoemen naar '%s'. De gewenste naam bestaat al." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:253 +msgid "Name" +msgstr "Naam" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:262 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Entry is already in use." +msgstr "Kan '%s' niet hernoemen naar '%s'. De gewenste naam bestaat al." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:268 +#, fuzzy, php-format +msgid "Cannot create '%s'. Entry is already in use." +msgstr "Kan '%s' niet aanmaken. De gewenste naam bestaat al." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:277 +#, fuzzy, php-format +msgid "Entry '%s' is used more than once." +msgstr "De naam '%s' wordt meer dan een maal gebruikt." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:300 +#, fuzzy, php-format +msgid "%s records cannot be used more than once." +msgstr "De naam '%s' wordt meer dan een maal gebruikt." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:307 +#, fuzzy, php-format +msgid "Please fix the empty %s record for entry '%s'." +msgstr "Er is een lege '%s' voor host '%s'." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:315 +#, php-format +msgid "Please fix the duplicate %s record for entry '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:455 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/systems/services/dns/class_DNS.inc:161 +#, fuzzy, php-format +msgid "Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted." +msgstr "" +"Kon de reverse zone voor dns zone '%s' niet vinden. Het doornemen van deze " +"zone is gestopt." + +#: admin/systems/services/dns/class_DNS.inc:166 +#, fuzzy, php-format +msgid "Found more than one reverse zone for '%s'. Parsing zone aborted." +msgstr "" +"Er zijn meer dan een reverse zones voor dns zone '%s' gevonden. Het " +"doornemen van deze zone is gestopt." + +#: admin/systems/services/dns/class_DNS.inc:628 +#, php-format +msgid "Undefined zone name '%s'!" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:1 +msgid "Generic" +msgstr "Algemeen" + +#: admin/systems/services/dns/servdnseditzone.tpl:25 +#, fuzzy +msgid "Netmask" +msgstr "Netatalk" + +#: admin/systems/services/dns/servdnseditzone.tpl:38 +msgid "Zone is in use, network settings can't be modified." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:51 +msgid "Can't be edited because the zone wasn't saved right now." +msgstr "" +"Kan niet bewerkt worden, aangezien de zone momenteel niet opgeslagen is." + +#: admin/systems/services/dns/servdnseditzone.tpl:56 +msgid "Edit" +msgstr "Bewerken" + +#: admin/systems/services/dns/servdnseditzone.tpl:65 +msgid "SOA record" +msgstr "SOA record" + +#: admin/systems/services/dns/servdnseditzone.tpl:71 +msgid "Primary dns server for this zone" +msgstr "Primaire DNS server voor deze zone" + +#: admin/systems/services/dns/servdnseditzone.tpl:89 +msgid "Serial number (automatically incremented)" +msgstr "Serienummer (automatisch opgehoogd)" + +#: admin/systems/services/dns/servdnseditzone.tpl:147 +msgid "MxRecords" +msgstr "MX records" + +#: admin/systems/services/dns/servdnseditzone.tpl:165 +msgid "Global zone records" +msgstr "Globale zone records" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Services" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Services" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Zoek binnen subtree" + +#, fuzzy +#~ msgid "The zone name is not valid!" +#~ msgstr "Het uitnodigingsbeleid invoer voor adres '%s' is niet geldig" + +#, fuzzy +#~ msgid "The reverse zone is not valid!" +#~ msgstr "Het uitnodigingsbeleid invoer voor adres '%s' is niet geldig" + +#, fuzzy +#~ msgid "Only lowercase characters are allowed in zone names!" +#~ msgstr "Hoofdletter zijn niet toegestaan voor de zone-naam." + +#, fuzzy +#~ msgid "Network address is not valid!" +#~ msgstr "Netwerkadres" + +#, fuzzy +#~ msgid "The network class '%s' is not valid!" +#~ msgstr "Het uitnodigingsbeleid invoer voor adres '%s' is niet geldig" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#, fuzzy +#~ msgid "Entry name contains invalid characters." +#~ msgstr "Invoerregel '%s' bevat ongeldige karakters." + +#, fuzzy +#~ msgid "Removing of system server/dns with dn '%s' failed." +#~ msgstr "Het verwijderen van de server is mislukt" + +#, fuzzy +#~ msgid "Saving of system server/dns with dn '%s' failed." +#~ msgstr "Het opslaan van de server db instellingen is mislukt" + +#~ msgid "Please choose a valid zone name." +#~ msgstr "Geef a.u.b. een geldige zonenaam op." + +#~ msgid "Please choose a valid reverse zone name." +#~ msgstr "Geef a.u.b. een geldige omgekeerde zonenaam op." + +#~ msgid "Please specify a numeric value for serial number." +#~ msgstr "Geef a.u.b. een nummerieke waarde voor het serienummer op." + +#~ msgid "Please specify a numeric value for refresh." +#~ msgstr "Geef a.u.b. een nummerieke waarde op voor de verversing." + +#~ msgid "Please specify a numeric value for ttl." +#~ msgstr "Geef a.u.b. een nummerieke waarde op voor TTL." + +#~ msgid "Please specify a numeric value for expire." +#~ msgstr "Geef a.u.b. een nummerieke waarde op voor verval." + +#~ msgid "Please specify a numeric value for retry." +#~ msgstr "Geef a.u.b. een nummerieke waarde op voor opnieuw proberen." + +#~ msgid "Only lowercase is allowed, please check your '%ss'." +#~ msgstr "Hoofdletters zijn niet toegestaan. Controleer uw '%ss'" + +#, fuzzy +#~ msgid "" +#~ "The given network address is not a valid, please specify a valid IP " +#~ "address." +#~ msgstr "Het veld IP adres bevat een ongeldig adres." + +#~ msgid "" +#~ "Can't rename '%s' to '%s' there is already an entry with the same name in " +#~ "our zone editing dialog." +#~ msgstr "" +#~ "Kon '%s' niet hernoemen naar '%s'. Er is al een invoer met dezelfde naam " +#~ "in de zone bewerkings dialoog." + +#~ msgid "The record type '%s' is a unique type and can't be defined twice." +#~ msgstr "" +#~ "Het recordtype '%s' is een uniek type en kan dus ook niet tweemaal " +#~ "gedefinieerd worden." + +#~ msgid "There is a duplicate entry in '%s' for '%s'." +#~ msgstr "Er is een dubbele invoer in '%s' voor '%s'" diff --git a/trunk/gosa-plugins/dns/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dns/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..a7d88d0f8 --- /dev/null +++ b/trunk/gosa-plugins/dns/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,467 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/systems/services/dns/servdns.tpl:5 +msgid "DNS take over initiated" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:7 +#, fuzzy +msgid "" +"This includes 'all' DNS zones that are located within this server. Please " +"double check if your really want to do this." +msgstr "" +"Operacja odnosi sie do 'wszystkich' kont, systemów, etc w tym poddrzewie. " +"Proszę upewnić się czy kontynuować, gdyż nie ma operacji powrotu." + +#: admin/systems/services/dns/servdns.tpl:14 +msgid "Following objects will be taken over" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:27 +#, fuzzy +msgid "Take over DNS configuration from" +msgstr "Konfiguracja bazy FAX" + +#: admin/systems/services/dns/servdns.tpl:31 +#, fuzzy +msgid "Take over" +msgstr "Serwer czasu" + +#: admin/systems/services/dns/servdns.tpl:37 +msgid "Zones" +msgstr "Strefy" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:249 +#: admin/systems/services/dns/class_servDNS.inc:184 +#: admin/systems/services/dns/class_servDNS.inc:342 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#: admin/systems/services/dns/class_DNS.inc:161 +#: admin/systems/services/dns/class_DNS.inc:166 +#: admin/systems/services/dns/class_DNS.inc:628 +msgid "Error" +msgstr "Błąd" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:347 +msgid "Up" +msgstr "Góra" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:348 +msgid "Down" +msgstr "W dół" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:350 +#: admin/systems/services/dns/class_servDNSeditZone.inc:565 +msgid "Delete" +msgstr "Usuń" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:411 +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNS.inc:589 +#: admin/systems/services/dns/servdnseditzone.tpl:7 +msgid "Zone name" +msgstr "Nazwa strefy" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:415 +#: admin/systems/services/dns/class_servDNS.inc:276 +#: admin/systems/services/dns/class_servDNS.inc:590 +msgid "Reverse zone" +msgstr "Strefa odwrotna" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNSeditZone.inc:445 +#, fuzzy +msgid "Only lowercase allowed" +msgstr "Tylko małe liter są dozwolone jako nazwa strefy." + +#: admin/systems/services/dns/class_servDNSeditZone.inc:423 +#: admin/systems/services/dns/class_servDNS.inc:595 +msgid "Serial" +msgstr "Szeregowy" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:427 +#: admin/systems/services/dns/class_servDNS.inc:596 +#: admin/systems/services/dns/servdnseditzone.tpl:102 +msgid "Refresh" +msgstr "Odśwież" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:431 +msgid "Time to life" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:435 +#: admin/systems/services/dns/class_servDNS.inc:598 +#: admin/systems/services/dns/servdnseditzone.tpl:120 +msgid "Expire" +msgstr "Wygasa" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:439 +#: admin/systems/services/dns/class_servDNS.inc:597 +#: admin/systems/services/dns/servdnseditzone.tpl:111 +msgid "Retry" +msgstr "Ponawia" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:454 +#: admin/systems/services/dns/servdnseditzone.tpl:16 +msgid "Network address" +msgstr "Adres sieciowy" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:461 +#: admin/systems/services/dns/class_servDNSeditZone.inc:467 +#: admin/systems/services/dns/class_servDNSeditZone.inc:473 +#, php-format +msgid "" +"The specified network address and the network class (%s/%s) do not match!" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:477 +#: admin/systems/services/dns/class_servDNS.inc:591 +#, fuzzy +msgid "Network class" +msgstr "Adres sieciowy" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:571 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:453 +msgid "Add" +msgstr "Dodaj" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:1 +msgid "" +"This dialog allows you to configure all components of this DNS zone on a " +"single list." +msgstr "" +"Ten dialog umożliwia konfigurachę wszystkich elementów tej strefy DNS w " +"pojedyńczej liście." + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:5 +msgid "" +"This dialog can't be used until the currently edited zone was saved or the " +"zone entry exists in the ldap database." +msgstr "" +"Ten dialog nie może zostać użyty dopóki edytowana strefa zostanie zapisana " +"lub ta strefa będzie istniała w bazie LDAP." + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:107 +msgid "New entry" +msgstr "Nowy wpis" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +msgid "Create a new DNS zone entry" +msgstr "Utwórz nowy wpis strefy DNS" + +#: admin/systems/services/dns/class_servDNS.inc:31 +#: admin/systems/services/dns/class_servDNS.inc:547 +#: admin/systems/services/dns/class_servDNS.inc:576 +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "DNS service" +msgstr "Usługa DNS" + +#: admin/systems/services/dns/class_servDNS.inc:151 +#, fuzzy, php-format +msgid "You are going to migrate the DNS setup from server '%s'." +msgstr "Zamierzasz skopiować wpis '%s'." + +#: admin/systems/services/dns/class_servDNS.inc:152 +msgid "" +"The migration will be started when you save this system. To cancel this " +"action, use the cancel button below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:166 +msgid "Remove DNS service" +msgstr "Usuń usługę DNS" + +#: admin/systems/services/dns/class_servDNS.inc:167 +msgid "" +"This server has DNS features enabled. You can disable them by clicking below." +msgstr "Ten serwer posiada cechy DNS. Można je wyłączyć klikając poniżej" + +#: admin/systems/services/dns/class_servDNS.inc:169 +msgid "Add DNS service" +msgstr "Dodaj usługę DNS" + +#: admin/systems/services/dns/class_servDNS.inc:170 +msgid "" +"This server has DNS features disabled. You can enable them by clicking below." +msgstr "Ten serwer nie posiada cech DNS. Można je włączyć klikając poniżej." + +#: admin/systems/services/dns/class_servDNS.inc:277 +#: admin/systems/services/dns/class_servDNS.inc:599 +#: admin/systems/services/dns/servdnseditzone.tpl:129 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/services/dns/class_servDNS.inc:278 +msgid "Class" +msgstr "Klasa" + +#: admin/systems/services/dns/class_servDNS.inc:342 +#, fuzzy, php-format +msgid "Cannot delete the selected zone. It is still in use by '%s'" +msgstr "" +"Nie można usunąć wybranej strefy ponieważ jest używana przez te(n) element" +"(y) '%s'" + +#: admin/systems/services/dns/class_servDNS.inc:452 +#: admin/systems/services/dns/class_servDNS.inc:468 +#: admin/systems/services/dns/class_servDNS.inc:493 +#: admin/systems/services/dns/class_servDNS.inc:504 +#: admin/systems/services/dns/class_servDNS.inc:537 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/dns/class_servDNS.inc:585 +#, fuzzy +msgid "Start service" +msgstr "Usługa DNS" + +#: admin/systems/services/dns/class_servDNS.inc:586 +#, fuzzy +msgid "Stop service" +msgstr "Usługa DNS" + +#: admin/systems/services/dns/class_servDNS.inc:587 +#, fuzzy +msgid "Restart service" +msgstr "Usługa DNS" + +#: admin/systems/services/dns/class_servDNS.inc:592 +#, fuzzy +msgid "Zone entry editor" +msgstr "Rekordy strefy" + +#: admin/systems/services/dns/class_servDNS.inc:593 +msgid "Primary dns server" +msgstr "Podstawowy serwer DNS" + +#: admin/systems/services/dns/class_servDNS.inc:594 +#: admin/systems/services/dns/servdnseditzone.tpl:80 +msgid "Mail address" +msgstr "Adres email" + +#: admin/systems/services/dns/class_servDNS.inc:600 +#, fuzzy +msgid "MX records" +msgstr "Rekordy MX" + +#: admin/systems/services/dns/class_servDNS.inc:601 +#: admin/systems/services/dns/servdnseditzone.tpl:48 +msgid "Zone records" +msgstr "Rekordy strefy" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Name is already in use!" +msgstr "Nie można zmienić nazwy z '%s' na '%s', nazwa docelowa już istnieje." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:253 +msgid "Name" +msgstr "Imię" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:262 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Entry is already in use." +msgstr "Nie można zmienić nazwy z '%s' na '%s', nazwa docelowa już istnieje." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:268 +#, fuzzy, php-format +msgid "Cannot create '%s'. Entry is already in use." +msgstr "Nie można utworzyć '%s', nazwa docelowa już istnieje." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:277 +#, fuzzy, php-format +msgid "Entry '%s' is used more than once." +msgstr "Nazwa '%s' jest użyta więcej niż raz." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:300 +#, fuzzy, php-format +msgid "%s records cannot be used more than once." +msgstr "Nazwa '%s' jest użyta więcej niż raz." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:307 +#, fuzzy, php-format +msgid "Please fix the empty %s record for entry '%s'." +msgstr "'%s' jest puste dla hosta '%s'." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:315 +#, php-format +msgid "Please fix the duplicate %s record for entry '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:455 +msgid "Remove" +msgstr "Usuń" + +#: admin/systems/services/dns/class_DNS.inc:161 +#, fuzzy, php-format +msgid "Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted." +msgstr "" +"Nie można znaleźć stefy odwrotnej dla strefy '%s'. Przerywam analizę tej " +"strefy." + +#: admin/systems/services/dns/class_DNS.inc:166 +#, fuzzy, php-format +msgid "Found more than one reverse zone for '%s'. Parsing zone aborted." +msgstr "" +"Znaleziono więcej niż jedną strefę odwrotną dla strefy DNS '%s'. Anulowano " +"przetwarzanie tej strefy." + +#: admin/systems/services/dns/class_DNS.inc:628 +#, php-format +msgid "Undefined zone name '%s'!" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:1 +msgid "Generic" +msgstr "Ogólne" + +#: admin/systems/services/dns/servdnseditzone.tpl:25 +#, fuzzy +msgid "Netmask" +msgstr "Netatalk" + +#: admin/systems/services/dns/servdnseditzone.tpl:38 +msgid "Zone is in use, network settings can't be modified." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:51 +msgid "Can't be edited because the zone wasn't saved right now." +msgstr "Nie można edytować ponieważ strefa nie została zapisana." + +#: admin/systems/services/dns/servdnseditzone.tpl:56 +msgid "Edit" +msgstr "Edytuj" + +#: admin/systems/services/dns/servdnseditzone.tpl:65 +msgid "SOA record" +msgstr "Rekord SOA" + +#: admin/systems/services/dns/servdnseditzone.tpl:71 +msgid "Primary dns server for this zone" +msgstr "Podstawowy serwer DNS dla tej strefy" + +#: admin/systems/services/dns/servdnseditzone.tpl:89 +msgid "Serial number (automatically incremented)" +msgstr "Numer seryjny (atumatycznie zwiększany)" + +#: admin/systems/services/dns/servdnseditzone.tpl:147 +msgid "MxRecords" +msgstr "Rekordy MX" + +#: admin/systems/services/dns/servdnseditzone.tpl:165 +msgid "Global zone records" +msgstr "Globalne rekordy strefy" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Usługi" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Usługi" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Szukaj wewnątrz tego poddrzewa" + +#, fuzzy +#~ msgid "The zone name is not valid!" +#~ msgstr "Polityka zapraszania dla adresu '%s' jest nieprawidłowa." + +#, fuzzy +#~ msgid "The reverse zone is not valid!" +#~ msgstr "Polityka zapraszania dla adresu '%s' jest nieprawidłowa." + +#, fuzzy +#~ msgid "Only lowercase characters are allowed in zone names!" +#~ msgstr "Tylko małe liter są dozwolone jako nazwa strefy." + +#, fuzzy +#~ msgid "Network address is not valid!" +#~ msgstr "Adres sieciowy" + +#, fuzzy +#~ msgid "The network class '%s' is not valid!" +#~ msgstr "Polityka zapraszania dla adresu '%s' jest nieprawidłowa." + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#, fuzzy +#~ msgid "Entry name contains invalid characters." +#~ msgstr "Nazwa wpisu '%s' zawiera niedozwolone znaki." + +#, fuzzy +#~ msgid "Removing of system server/dns with dn '%s' failed." +#~ msgstr "Usuwanie serwera nieudane" + +#, fuzzy +#~ msgid "Saving of system server/dns with dn '%s' failed." +#~ msgstr "Zapisywanie ustawień serwera baz danych nieudane" + +#~ msgid "Please choose a valid zone name." +#~ msgstr "Proszę wybrać poprawną nazwę strefy." + +#~ msgid "Please choose a valid reverse zone name." +#~ msgstr "Proszę wybrać poprawną nazwę strefy odwrotnej." + +#~ msgid "Please specify a numeric value for serial number." +#~ msgstr "Proszę podać liczbę jako wartość dla numeru seryjnego." + +#~ msgid "Please specify a numeric value for refresh." +#~ msgstr "Proszę podać liczbę jako wartość dla odświeżenia." + +#~ msgid "Please specify a numeric value for ttl." +#~ msgstr "Proszę podać liczbę jako wartość dla ttl." + +#~ msgid "Please specify a numeric value for expire." +#~ msgstr "Proszę podać liczbę jako wartość dla wygaśnięcia." + +#~ msgid "Please specify a numeric value for retry." +#~ msgstr "Proszę podać liczbę jako wartość dla ponowienia." + +#~ msgid "Only lowercase is allowed, please check your '%ss'." +#~ msgstr "Tylko małe litery są dozwolone, proszę sprawdzić '%s'." + +#, fuzzy +#~ msgid "" +#~ "The given network address is not a valid, please specify a valid IP " +#~ "address." +#~ msgstr "Pole adres IP zawiera nieprawidłowy adres." + +#~ msgid "" +#~ "Can't rename '%s' to '%s' there is already an entry with the same name in " +#~ "our zone editing dialog." +#~ msgstr "" +#~ "Nie zmienić nazwy z '%s' na '%s', istnieje już wpis z tą samą nazwą w " +#~ "dialogu edycji strefy." + +#~ msgid "The record type '%s' is a unique type and can't be defined twice." +#~ msgstr "" +#~ "Typ rekordu '%s' jest unikalnym typem i nie może być zdefiniowany po raz " +#~ "drugi." + +#~ msgid "There is a duplicate entry in '%s' for '%s'." +#~ msgstr "Istnieje duplikat w '%s' dla '%s'." diff --git a/trunk/gosa-plugins/dns/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dns/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..7dc61aa14 --- /dev/null +++ b/trunk/gosa-plugins/dns/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,466 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/systems/services/dns/servdns.tpl:5 +msgid "DNS take over initiated" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:7 +#, fuzzy +msgid "" +"This includes 'all' DNS zones that are located within this server. Please " +"double check if your really want to do this." +msgstr "" +"Это включает все учетные записи, системы и т.п. для данного " +"подразделения. Подумайте еще раз, действительно ли вы хотите его удалить, " +"так как GOsa не сможет отменить результаты этой операции." + +#: admin/systems/services/dns/servdns.tpl:14 +msgid "Following objects will be taken over" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:27 +#, fuzzy +msgid "Take over DNS configuration from" +msgstr "Базы данных" + +#: admin/systems/services/dns/servdns.tpl:31 +#, fuzzy +msgid "Take over" +msgstr "Сервисы" + +#: admin/systems/services/dns/servdns.tpl:37 +#, fuzzy +msgid "Zones" +msgstr "телефоны" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:249 +#: admin/systems/services/dns/class_servDNS.inc:184 +#: admin/systems/services/dns/class_servDNS.inc:342 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#: admin/systems/services/dns/class_DNS.inc:161 +#: admin/systems/services/dns/class_DNS.inc:166 +#: admin/systems/services/dns/class_DNS.inc:628 +msgid "Error" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:347 +msgid "Up" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:348 +#, fuzzy +msgid "Down" +msgstr "Домен" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:350 +#: admin/systems/services/dns/class_servDNSeditZone.inc:565 +msgid "Delete" +msgstr "Удалить" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:411 +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNS.inc:589 +#: admin/systems/services/dns/servdnseditzone.tpl:7 +#, fuzzy +msgid "Zone name" +msgstr "Название" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:415 +#: admin/systems/services/dns/class_servDNS.inc:276 +#: admin/systems/services/dns/class_servDNS.inc:590 +#, fuzzy +msgid "Reverse zone" +msgstr "Ссылки" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNSeditZone.inc:445 +msgid "Only lowercase allowed" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:423 +#: admin/systems/services/dns/class_servDNS.inc:595 +#, fuzzy +msgid "Serial" +msgstr "терминалы" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:427 +#: admin/systems/services/dns/class_servDNS.inc:596 +#: admin/systems/services/dns/servdnseditzone.tpl:102 +#, fuzzy +msgid "Refresh" +msgstr "Ссылки" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:431 +msgid "Time to life" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:435 +#: admin/systems/services/dns/class_servDNS.inc:598 +#: admin/systems/services/dns/servdnseditzone.tpl:120 +#, fuzzy +msgid "Expire" +msgstr "Экспорт" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:439 +#: admin/systems/services/dns/class_servDNS.inc:597 +#: admin/systems/services/dns/servdnseditzone.tpl:111 +msgid "Retry" +msgstr "Повторить" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:454 +#: admin/systems/services/dns/servdnseditzone.tpl:16 +#, fuzzy +msgid "Network address" +msgstr "Сетевые устройства" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:461 +#: admin/systems/services/dns/class_servDNSeditZone.inc:467 +#: admin/systems/services/dns/class_servDNSeditZone.inc:473 +#, php-format +msgid "" +"The specified network address and the network class (%s/%s) do not match!" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:477 +#: admin/systems/services/dns/class_servDNS.inc:591 +#, fuzzy +msgid "Network class" +msgstr "Сетевые устройства" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:571 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:453 +msgid "Add" +msgstr "Добавить" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:1 +msgid "" +"This dialog allows you to configure all components of this DNS zone on a " +"single list." +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:5 +msgid "" +"This dialog can't be used until the currently edited zone was saved or the " +"zone entry exists in the ldap database." +msgstr "" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:107 +#, fuzzy +msgid "New entry" +msgstr "пользователи" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#, fuzzy +msgid "Create a new DNS zone entry" +msgstr "Создание нового объекта в" + +#: admin/systems/services/dns/class_servDNS.inc:31 +#: admin/systems/services/dns/class_servDNS.inc:547 +#: admin/systems/services/dns/class_servDNS.inc:576 +#: admin/systems/services/dns/class_servDNS.inc:577 +#, fuzzy +msgid "DNS service" +msgstr "Добавить сервис DNS" + +#: admin/systems/services/dns/class_servDNS.inc:151 +#, fuzzy, php-format +msgid "You are going to migrate the DNS setup from server '%s'." +msgstr "Вы собираетесь удалить объект %s." + +#: admin/systems/services/dns/class_servDNS.inc:152 +msgid "" +"The migration will be started when you save this system. To cancel this " +"action, use the cancel button below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:166 +msgid "Remove DNS service" +msgstr "Удалить сервис DNS" + +#: admin/systems/services/dns/class_servDNS.inc:167 +#, fuzzy +msgid "" +"This server has DNS features enabled. You can disable them by clicking below." +msgstr "" +"В этой учетной записи есть настройки факса. Вы можете удалить их, щелкнув " +"ниже." + +#: admin/systems/services/dns/class_servDNS.inc:169 +msgid "Add DNS service" +msgstr "Добавить сервис DNS" + +#: admin/systems/services/dns/class_servDNS.inc:170 +#, fuzzy +msgid "" +"This server has DNS features disabled. You can enable them by clicking below." +msgstr "" +"В этой учетной записи нет настроек факса. Вы можете добавить их, щелкнув " +"ниже." + +#: admin/systems/services/dns/class_servDNS.inc:277 +#: admin/systems/services/dns/class_servDNS.inc:599 +#: admin/systems/services/dns/servdnseditzone.tpl:129 +msgid "TTL" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:278 +#, fuzzy +msgid "Class" +msgstr "Выберите тип мыши" + +#: admin/systems/services/dns/class_servDNS.inc:342 +#, php-format +msgid "Cannot delete the selected zone. It is still in use by '%s'" +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:452 +#: admin/systems/services/dns/class_servDNS.inc:468 +#: admin/systems/services/dns/class_servDNS.inc:493 +#: admin/systems/services/dns/class_servDNS.inc:504 +#: admin/systems/services/dns/class_servDNS.inc:537 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/dns/class_servDNS.inc:585 +#, fuzzy +msgid "Start service" +msgstr "Добавить сервис DNS" + +#: admin/systems/services/dns/class_servDNS.inc:586 +#, fuzzy +msgid "Stop service" +msgstr "Добавить сервис DNS" + +#: admin/systems/services/dns/class_servDNS.inc:587 +#, fuzzy +msgid "Restart service" +msgstr "Добавить сервис DNS" + +#: admin/systems/services/dns/class_servDNS.inc:592 +#, fuzzy +msgid "Zone entry editor" +msgstr "Каталог" + +#: admin/systems/services/dns/class_servDNS.inc:593 +#, fuzzy +msgid "Primary dns server" +msgstr "Основной адрес эл. почты для этой общей папки" + +#: admin/systems/services/dns/class_servDNS.inc:594 +#: admin/systems/services/dns/servdnseditzone.tpl:80 +#, fuzzy +msgid "Mail address" +msgstr "MAC-адрес" + +#: admin/systems/services/dns/class_servDNS.inc:600 +#, fuzzy +msgid "MX records" +msgstr "Каталог" + +#: admin/systems/services/dns/class_servDNS.inc:601 +#: admin/systems/services/dns/servdnseditzone.tpl:48 +#, fuzzy +msgid "Zone records" +msgstr "Каталог" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Name is already in use!" +msgstr "Подразделение с таким именем уже существует." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:253 +msgid "Name" +msgstr "Фамилия" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:262 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Entry is already in use." +msgstr "Подразделение с таким именем уже существует." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:268 +#, fuzzy, php-format +msgid "Cannot create '%s'. Entry is already in use." +msgstr "Подразделение с таким именем уже существует." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:277 +#, php-format +msgid "Entry '%s' is used more than once." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:300 +#, php-format +msgid "%s records cannot be used more than once." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:307 +#, fuzzy, php-format +msgid "Please fix the empty %s record for entry '%s'." +msgstr "Метод '%s' не описан в вашем файле конфигурации." + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:315 +#, php-format +msgid "Please fix the duplicate %s record for entry '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:455 +msgid "Remove" +msgstr "Удалить" + +#: admin/systems/services/dns/class_DNS.inc:161 +#, php-format +msgid "Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted." +msgstr "" + +#: admin/systems/services/dns/class_DNS.inc:166 +#, php-format +msgid "Found more than one reverse zone for '%s'. Parsing zone aborted." +msgstr "" + +#: admin/systems/services/dns/class_DNS.inc:628 +#, php-format +msgid "Undefined zone name '%s'!" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:1 +msgid "Generic" +msgstr "Общее" + +#: admin/systems/services/dns/servdnseditzone.tpl:25 +msgid "Netmask" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:38 +msgid "Zone is in use, network settings can't be modified." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:51 +msgid "Can't be edited because the zone wasn't saved right now." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:56 +msgid "Edit" +msgstr "Изменить" + +#: admin/systems/services/dns/servdnseditzone.tpl:65 +#, fuzzy +msgid "SOA record" +msgstr "Каталог" + +#: admin/systems/services/dns/servdnseditzone.tpl:71 +#, fuzzy +msgid "Primary dns server for this zone" +msgstr "Основной адрес эл. почты для этой общей папки" + +#: admin/systems/services/dns/servdnseditzone.tpl:89 +msgid "Serial number (automatically incremented)" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:147 +#, fuzzy +msgid "MxRecords" +msgstr "Каталог" + +#: admin/systems/services/dns/servdnseditzone.tpl:165 +#, fuzzy +msgid "Global zone records" +msgstr "Каталог" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "Сервисы" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "Сервисы" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "Искать в поддеревьях" + +#, fuzzy +#~ msgid "The zone name is not valid!" +#~ msgstr "Значение поля \"Квота\" некорректно." + +#, fuzzy +#~ msgid "The reverse zone is not valid!" +#~ msgstr "Значение поля \"Квота\" некорректно." + +#, fuzzy +#~ msgid "Network address is not valid!" +#~ msgstr "Сетевые устройства" + +#, fuzzy +#~ msgid "The network class '%s' is not valid!" +#~ msgstr "Значение поля \"Квота\" некорректно." + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#, fuzzy +#~ msgid "Entry name contains invalid characters." +#~ msgstr "Неправильное указание таймаута '%s'" + +#, fuzzy +#~ msgid "Removing of system server/dns with dn '%s' failed." +#~ msgstr "Удалить сервис DNS" + +#, fuzzy +#~ msgid "Saving of system server/dns with dn '%s' failed." +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Please choose a valid zone name." +#~ msgstr "Пожалуйста, укажите корректную кадровую синхронизацию." + +#, fuzzy +#~ msgid "Please choose a valid reverse zone name." +#~ msgstr "Пожалуйста, укажите корректную кадровую синхронизацию." + +#, fuzzy +#~ msgid "Please specify a numeric value for serial number." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please specify a numeric value for refresh." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please specify a numeric value for ttl." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please specify a numeric value for expire." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please specify a numeric value for retry." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "" +#~ "The given network address is not a valid, please specify a valid IP " +#~ "address." +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." diff --git a/trunk/gosa-plugins/dns/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/dns/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..cfa34fac4 --- /dev/null +++ b/trunk/gosa-plugins/dns/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,485 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:29+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/services/dns/servdns.tpl:5 +msgid "DNS take over initiated" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:7 +#, fuzzy +msgid "" +"This includes 'all' DNS zones that are located within this server. Please " +"double check if your really want to do this." +msgstr "" +"在这个子树中包含了所有账号,系统等等。请再次检查您是否要这么做,因为 GOsa 没" +"有办法将您的数据找回。" + +#: admin/systems/services/dns/servdns.tpl:14 +msgid "Following objects will be taken over" +msgstr "" + +#: admin/systems/services/dns/servdns.tpl:27 +#, fuzzy +msgid "Take over DNS configuration from" +msgstr "配置文件" + +#: admin/systems/services/dns/servdns.tpl:31 +#, fuzzy +msgid "Take over" +msgstr "主服务器" + +#: admin/systems/services/dns/servdns.tpl:37 +msgid "Zones" +msgstr "域" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:249 +#: admin/systems/services/dns/class_servDNS.inc:184 +#: admin/systems/services/dns/class_servDNS.inc:342 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#: admin/systems/services/dns/class_DNS.inc:161 +#: admin/systems/services/dns/class_DNS.inc:166 +#: admin/systems/services/dns/class_DNS.inc:628 +msgid "Error" +msgstr "错误" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:347 +msgid "Up" +msgstr "上" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:348 +msgid "Down" +msgstr "关闭" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:350 +#: admin/systems/services/dns/class_servDNSeditZone.inc:565 +msgid "Delete" +msgstr "删除" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:411 +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNS.inc:589 +#: admin/systems/services/dns/servdnseditzone.tpl:7 +msgid "Zone name" +msgstr "域名称" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:415 +#: admin/systems/services/dns/class_servDNS.inc:276 +#: admin/systems/services/dns/class_servDNS.inc:590 +msgid "Reverse zone" +msgstr "反向解析域" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:419 +#: admin/systems/services/dns/class_servDNSeditZone.inc:445 +#, fuzzy +msgid "Only lowercase allowed" +msgstr "只有小写字符串被允许作为域名。" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:423 +#: admin/systems/services/dns/class_servDNS.inc:595 +msgid "Serial" +msgstr "串行" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:427 +#: admin/systems/services/dns/class_servDNS.inc:596 +#: admin/systems/services/dns/servdnseditzone.tpl:102 +msgid "Refresh" +msgstr "刷新" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:431 +msgid "Time to life" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:435 +#: admin/systems/services/dns/class_servDNS.inc:598 +#: admin/systems/services/dns/servdnseditzone.tpl:120 +msgid "Expire" +msgstr "过期" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:439 +#: admin/systems/services/dns/class_servDNS.inc:597 +#: admin/systems/services/dns/servdnseditzone.tpl:111 +msgid "Retry" +msgstr "重试" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:454 +#: admin/systems/services/dns/servdnseditzone.tpl:16 +msgid "Network address" +msgstr "网络地址" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:461 +#: admin/systems/services/dns/class_servDNSeditZone.inc:467 +#: admin/systems/services/dns/class_servDNSeditZone.inc:473 +#, php-format +msgid "" +"The specified network address and the network class (%s/%s) do not match!" +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:477 +#: admin/systems/services/dns/class_servDNS.inc:591 +#, fuzzy +msgid "Network class" +msgstr "网络地址" + +#: admin/systems/services/dns/class_servDNSeditZone.inc:571 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:453 +msgid "Add" +msgstr "添加" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:1 +msgid "" +"This dialog allows you to configure all components of this DNS zone on a " +"single list." +msgstr "此对话框允许您修改这个 DNS 区域中所有内容。" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:5 +msgid "" +"This dialog can't be used until the currently edited zone was saved or the " +"zone entry exists in the ldap database." +msgstr "" +"这个对话框不能使用,除非当前编辑的域被保存或者域中条目已经存在于 ldap 数据库" +"中。" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:107 +msgid "New entry" +msgstr "新条目" + +#: admin/systems/services/dns/servDNSeditZoneEntries.tpl:13 +msgid "Create a new DNS zone entry" +msgstr "创建一个新 DNS zone 条目" + +#: admin/systems/services/dns/class_servDNS.inc:31 +#: admin/systems/services/dns/class_servDNS.inc:547 +#: admin/systems/services/dns/class_servDNS.inc:576 +#: admin/systems/services/dns/class_servDNS.inc:577 +#, fuzzy +msgid "DNS service" +msgstr "添加 DNS 服务" + +#: admin/systems/services/dns/class_servDNS.inc:151 +#, fuzzy, php-format +msgid "You are going to migrate the DNS setup from server '%s'." +msgstr "您将要拷贝条目 '%s'。" + +#: admin/systems/services/dns/class_servDNS.inc:152 +msgid "" +"The migration will be started when you save this system. To cancel this " +"action, use the cancel button below." +msgstr "" + +#: admin/systems/services/dns/class_servDNS.inc:166 +msgid "Remove DNS service" +msgstr "删除 DNS 服务" + +#: admin/systems/services/dns/class_servDNS.inc:167 +msgid "" +"This server has DNS features enabled. You can disable them by clicking below." +msgstr "该账号已经启用 DNS 功能。您可以点击下面按钮禁用。" + +#: admin/systems/services/dns/class_servDNS.inc:169 +msgid "Add DNS service" +msgstr "添加 DNS 服务" + +#: admin/systems/services/dns/class_servDNS.inc:170 +msgid "" +"This server has DNS features disabled. You can enable them by clicking below." +msgstr "该账号已经禁用 DNS 功能。您可以点击下面按钮启用。" + +#: admin/systems/services/dns/class_servDNS.inc:277 +#: admin/systems/services/dns/class_servDNS.inc:599 +#: admin/systems/services/dns/servdnseditzone.tpl:129 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/services/dns/class_servDNS.inc:278 +msgid "Class" +msgstr "类" + +#: admin/systems/services/dns/class_servDNS.inc:342 +#, fuzzy, php-format +msgid "Cannot delete the selected zone. It is still in use by '%s'" +msgstr "不能删除所选的域,因为它仍然被这些条目使用 '%s'" + +#: admin/systems/services/dns/class_servDNS.inc:452 +#: admin/systems/services/dns/class_servDNS.inc:468 +#: admin/systems/services/dns/class_servDNS.inc:493 +#: admin/systems/services/dns/class_servDNS.inc:504 +#: admin/systems/services/dns/class_servDNS.inc:537 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/systems/services/dns/class_servDNS.inc:577 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/dns/class_servDNS.inc:585 +#, fuzzy +msgid "Start service" +msgstr "添加 DNS 服务" + +#: admin/systems/services/dns/class_servDNS.inc:586 +#, fuzzy +msgid "Stop service" +msgstr "添加 DNS 服务" + +#: admin/systems/services/dns/class_servDNS.inc:587 +#, fuzzy +msgid "Restart service" +msgstr "添加 DNS 服务" + +#: admin/systems/services/dns/class_servDNS.inc:592 +#, fuzzy +msgid "Zone entry editor" +msgstr "域记录" + +#: admin/systems/services/dns/class_servDNS.inc:593 +#, fuzzy +msgid "Primary dns server" +msgstr "这个域的主要 dns 服务器" + +#: admin/systems/services/dns/class_servDNS.inc:594 +#: admin/systems/services/dns/servdnseditzone.tpl:80 +msgid "Mail address" +msgstr "邮件地址" + +#: admin/systems/services/dns/class_servDNS.inc:600 +#, fuzzy +msgid "MX records" +msgstr "Mx记录" + +#: admin/systems/services/dns/class_servDNS.inc:601 +#: admin/systems/services/dns/servdnseditzone.tpl:48 +msgid "Zone records" +msgstr "域记录" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:221 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Name is already in use!" +msgstr "无法将 '%s' 重命名为 '%s',目标名称已经存在。" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:253 +msgid "Name" +msgstr "名称" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:262 +#, fuzzy, php-format +msgid "Cannot rename '%s' to '%s'. Entry is already in use." +msgstr "无法将 '%s' 重命名为 '%s',目标名称已经存在。" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:268 +#, fuzzy, php-format +msgid "Cannot create '%s'. Entry is already in use." +msgstr "无法创建 '%s',目标名称已经存在。" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:277 +#, fuzzy, php-format +msgid "Entry '%s' is used more than once." +msgstr "名称 '%s' 被使用超过了一次。" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:300 +#, fuzzy, php-format +msgid "%s records cannot be used more than once." +msgstr "名称 '%s' 被使用超过了一次。" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:307 +#, fuzzy, php-format +msgid "Please fix the empty %s record for entry '%s'." +msgstr "有一个空的 '%s',为主机 '%s'。" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:315 +#, php-format +msgid "Please fix the duplicate %s record for entry '%s'." +msgstr "" + +#: admin/systems/services/dns/class_servDNSeditZoneEntries.inc:455 +msgid "Remove" +msgstr "删除" + +#: admin/systems/services/dns/class_DNS.inc:161 +#, fuzzy, php-format +msgid "Cannot find reverse zone for DNS zone '%s'. Parsing zone aborted." +msgstr "无法找到 dns 域 '%s' 的反向解析。停止解析这个域。" + +#: admin/systems/services/dns/class_DNS.inc:166 +#, fuzzy, php-format +msgid "Found more than one reverse zone for '%s'. Parsing zone aborted." +msgstr "找到 %s 域的一个以上的反向解析域。退出域解析。" + +#: admin/systems/services/dns/class_DNS.inc:628 +#, php-format +msgid "Undefined zone name '%s'!" +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:1 +msgid "Generic" +msgstr "通用配置" + +#: admin/systems/services/dns/servdnseditzone.tpl:25 +#, fuzzy +msgid "Netmask" +msgstr "Netatalk" + +#: admin/systems/services/dns/servdnseditzone.tpl:38 +msgid "Zone is in use, network settings can't be modified." +msgstr "" + +#: admin/systems/services/dns/servdnseditzone.tpl:51 +msgid "Can't be edited because the zone wasn't saved right now." +msgstr "无法编辑因为域现在不能保存。" + +#: admin/systems/services/dns/servdnseditzone.tpl:56 +msgid "Edit" +msgstr "编辑" + +#: admin/systems/services/dns/servdnseditzone.tpl:65 +msgid "SOA record" +msgstr "SOA 记录" + +#: admin/systems/services/dns/servdnseditzone.tpl:71 +msgid "Primary dns server for this zone" +msgstr "这个域的主要 dns 服务器" + +#: admin/systems/services/dns/servdnseditzone.tpl:89 +msgid "Serial number (automatically incremented)" +msgstr "系列号(自增)" + +#: admin/systems/services/dns/servdnseditzone.tpl:147 +msgid "MxRecords" +msgstr "Mx记录" + +#: admin/systems/services/dns/servdnseditzone.tpl:165 +msgid "Global zone records" +msgstr "全局域记录" + +#, fuzzy +#~ msgid "Service start" +#~ msgstr "服务" + +#, fuzzy +#~ msgid "Service stop" +#~ msgstr "服务" + +#, fuzzy +#~ msgid "Service restart" +#~ msgstr "在子树中查找" + +#, fuzzy +#~ msgid "The zone name is not valid!" +#~ msgstr "地址 '%s' 的邀请策略条目无效。" + +#, fuzzy +#~ msgid "The reverse zone is not valid!" +#~ msgstr "地址 '%s' 的邀请策略条目无效。" + +#, fuzzy +#~ msgid "Only lowercase characters are allowed in zone names!" +#~ msgstr "只有小写字符串被允许作为域名。" + +#, fuzzy +#~ msgid "Network address is not valid!" +#~ msgstr "网络地址" + +#, fuzzy +#~ msgid "The network class '%s' is not valid!" +#~ msgstr "地址 '%s' 的邀请策略条目无效。" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Save" +#~ msgstr "保存" + +#, fuzzy +#~ msgid "Entry name contains invalid characters." +#~ msgstr "条目名称 '%s' 包含无效字符。" + +#, fuzzy +#~ msgid "Updating of system server/dns with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 服务器服务/反病毒失败。" + +#, fuzzy +#~ msgid "Removing of system server/dns with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 服务器服务/反病毒失败。" + +#, fuzzy +#~ msgid "Saving of system server/dns with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 服务器服务/反病毒失败。" + +#, fuzzy +#~ msgid "Set status flag for system server/dns with dn '%s' failed." +#~ msgstr "设置 dn 为 '%s' 服务器服务/反病毒 的状态标记失败。" + +#~ msgid "Please choose a valid zone name." +#~ msgstr "请选择一个有效的时区。" + +#~ msgid "Please choose a valid reverse zone name." +#~ msgstr "请选择一个有效的反向解析域名称。" + +#~ msgid "Please specify a numeric value for serial number." +#~ msgstr "请给出一个数字型数值作为系列号。" + +#~ msgid "Please specify a numeric value for refresh." +#~ msgstr "请为刷新提供一个数值。" + +#~ msgid "Please specify a numeric value for ttl." +#~ msgstr "请为 ttl 提供一个数值。" + +#~ msgid "Please specify a numeric value for expire." +#~ msgstr "请为过期时间提供一个数值。" + +#~ msgid "Please specify a numeric value for retry." +#~ msgstr "请为重试提供一个数值。" + +#~ msgid "Only lowercase is allowed, please check your '%ss'." +#~ msgstr "只允许小写字母,请检查您的 '%ss'。" + +#, fuzzy +#~ msgid "" +#~ "The given network address is not a valid, please specify a valid IP " +#~ "address." +#~ msgstr "IP 地址字段包含无效地址。" + +#, fuzzy +#~ msgid "" +#~ "The specified network address is not matching with the specified zone " +#~ "class, try it this way x.0.0.0" +#~ msgstr "提供的 IP 地址 '%s' 和所选的反向解析域条目 '%s' 不匹配。" + +#, fuzzy +#~ msgid "" +#~ "The specified network address is not matching with the specified zone " +#~ "class, try it this way x.x.0.0" +#~ msgstr "提供的 IP 地址 '%s' 和所选的反向解析域条目 '%s' 不匹配。" + +#, fuzzy +#~ msgid "" +#~ "The specified network address is not matching with the specified zone " +#~ "class, try it this way x.x.x.0" +#~ msgstr "提供的 IP 地址 '%s' 和所选的反向解析域条目 '%s' 不匹配。" + +#~ msgid "" +#~ "Can't rename '%s' to '%s' there is already an entry with the same name in " +#~ "our zone editing dialog." +#~ msgstr "无法将 '%s' 重命名为 %s',因为在域编辑对话框中已经有相同名称存在。" + +#~ msgid "The record type '%s' is a unique type and can't be defined twice." +#~ msgstr "记录类型 '%s' 是一个唯一类型,不能定义两次。" + +#~ msgid "There is a duplicate entry in '%s' for '%s'." +#~ msgstr "在 '%s' 当中有重复条目 '%s'。" diff --git a/trunk/gosa-plugins/dns/plugin.dsc b/trunk/gosa-plugins/dns/plugin.dsc new file mode 100644 index 000000000..4c715e9ef --- /dev/null +++ b/trunk/gosa-plugins/dns/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = dns +description = "DNS service management plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = systems diff --git a/trunk/gosa-plugins/fai/admin/fai/askClassName.tpl b/trunk/gosa-plugins/fai/admin/fai/askClassName.tpl new file mode 100644 index 000000000..7975e1052 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/askClassName.tpl @@ -0,0 +1,89 @@ +
+ {$headline} +
+
+

+{t}Adding a new class to the FAI management, requires a class name. You have to specify a unique class name for unique types of FAI classes, while you can use the same class name for different types of FAI classes. In the laste case, FAI will automatically enclose all these different class types to one unique class name.{/t} +
+
+

+

+
+{t}Please use one of the following methods to choose the name for the new FAI class.{/t} +
+
+

+
+ + + + + + +
+ + + + + + + + + +
+ + +

{t}Enter FAI class name manually{/t}

+
  + {t}Class name{/t}  +
+
+
+
+ + + + + + + + + + +
+ + +

{t}Choose FAI class name from a list of existing classes{/t}

+
  + {t}Class name{/t}  +
+
+
+
+ + +

 

+ + + diff --git a/trunk/gosa-plugins/fai/admin/fai/branch_selector.tpl b/trunk/gosa-plugins/fai/admin/fai/branch_selector.tpl new file mode 100644 index 000000000..268a995cb --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/branch_selector.tpl @@ -0,0 +1,42 @@ +
+

[F]{t}Releases{/t}

+
+
+ + + + +
+ {t}Current release{/t}  + +
+ + + + +
+ {if $allow_create} + + {t}Create release{/t} +
+ + {t}Create read-only release{/t} + {else} + {t}Release{/t} + {t}Create release{/t} +
+ {t}Freeze{/t} + {t}Create read-only release{/t} + {/if} + + {if $fai_release != $fai_base && $allow_remove} +
+ + {t}Delete current release{/t} + {/if} +
+
+
+ diff --git a/trunk/gosa-plugins/fai/admin/fai/class_FAI.inc b/trunk/gosa-plugins/fai/admin/fai/class_FAI.inc new file mode 100644 index 000000000..fd58da5b0 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_FAI.inc @@ -0,0 +1,1242 @@ + $data){ + if(!preg_match("/,".$name.",/",$entry_dn)) continue; + $entries[$entry_dn] = $data; + } + return($entries); + } + + + + + /* Returns all object for the given release. + This function resolves the releases + from base up to the given dn. + */ + static function get_all_objects_for_given_base($Current_DN,$filter,$detailed = false) + { + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $res = array(); + $tmp = array(); + + if(!FAI::is_release_department($Current_DN)) { +# return($res); + } + + /* Collect some basic informations and initialize some variables */ + $base_release = FAI::get_release_dn($Current_DN); + $previous_releases = array_reverse(FAI::get_previous_releases_of_this_release($base_release,true)); + + $ldap->cat($base_release); + $attrs = $ldap->fetch(); + $FAIstate = "branch"; + if(isset($attrs['FAIstate'][0])){ + $FAIstate = $attrs['FAIstate'][0]; + } + + /* We must also include the given release dn */ + $previous_releases[] = $base_release; + + /* Walk through all releases */ + foreach($previous_releases as $release){ + + /* Get fai departments */ + $deps_to_search = FAI::get_FAI_departments($release); + + /* For every single department (ou=hoos,ou ..) */ + foreach($deps_to_search as $fai_base){ + + /* Ldap search for fai classes specified in this release */ + $attributes = array("dn","objectClass","FAIstate","cn"); + $res_tmp = get_list($filter,"fai",$fai_base,$attributes,GL_SUBSEARCH | GL_SIZELIMIT); + + /* check the returned objects, and add/replace them in our return variable */ + foreach($res_tmp as $attr){ + + $buffer = array(); + $name = preg_replace("/".preg_quote($release, '/')."/i","",$attr['dn']); + + if(isset($attr['FAIstate'][0])){ + if(preg_match("/removed$/",$attr['FAIstate'][0])){ + if(isset($res[$name])){ + unset($res[$name]); + } + continue; + } + } + + /* Seems to be an inherited class, apply current FAIstate to this classes + */ + if(!preg_match("/".preg_quote($base_release, '/')."$/i",$attr['dn'])){ + $buffer['FAIstate'] = $FAIstate; + }else{ + + /* Seems to be created within this release department. + This indicates - it can't be of state "freeze" + */ + if(isset($attr['FAIstate'])){ + $buffer['FAIstate'] = $attr['FAIstate'][0]; + }else{ + $buffer['FAIstate'] = "branch"; + } + } + + /* In detailed mode are some additonal informations visible */ + if($detailed){ + + /* Create list of parents */ + if(isset($res[$name])){ + $buffer = $res[$name]; + $buffer['parents'][] = $res[$name]['dn']; + }else{ + $buffer['parents'] = array(); + } + + /* Append objectClass to resulsts */ + foreach($attributes as $val){ + if(isset($attr[$val])){ + $buffer[$val] = $attr[$val]; + } + } + unset($buffer['objectClass']['count']); + } + + /* Add this object to our list */ + $buffer['dn'] = $attr['dn']; + $res[$name] = $buffer; + } + } + } + return($res); + } + + + /* Return all relevant FAI departments */ + static function get_FAI_departments($suffix = "") + { + $arr = array("hooks","scripts","disk","packages","profiles","templates","variables"); + $tmp = array(); + if(preg_match("/^,/",$suffix)){ + $suffix = preg_replace("/^,/","",$suffix); + } + foreach($arr as $name){ + if(empty($suffix)){ + $tmp[$name] = "ou=".$name; + }else{ + $tmp[$name] = "ou=".$name.",".$suffix; + } + } + return($tmp); + } + + + /* Return all releases within the given base */ + static function get_all_releases_from_base($dn,$appendedName=false) + { + global $config; + + if(!preg_match("/".preg_quote(get_ou('faiBaseRDN'), '/')."/",$dn)){ + $base = get_ou('faiBaseRDN').$dn; + }else{ + $base = $dn; + } + $res = array(); + + $ldap = $config->get_ldap_link(); + $ldap->cd($base); + $ldap->search("(objectClass=FAIbranch)",array("ou","dn")); + while($attrs = $ldap->fetch()){ + if($appendedName){ + $res[$attrs['dn']] = convert_department_dn(preg_replace("/,".preg_quote(get_ou('faiBaseRDN'), '/').".*$/","",$attrs['dn'])); + }else{ + $res[$attrs['dn']] = $attrs['ou'][0]; + } + } + return($res); + } + + + /* Add this object to list of objects, that must be checked for release saving */ + static function prepare_to_save_FAI_object($Current_DN,$objectAttrs,$removed = false) + { + /* Get ldap object */ + global $config; + $addObj['Current_DN'] = $Current_DN; + $addObj['objectAttrs']= $objectAttrs; + $addObj['removed'] = $removed; + $addObj['diff'] = TRUE; + + if(!$removed){ + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + + /* Get some basic informations */ + $parent_obj = FAI::get_parent_release_object($Current_DN); + if(!empty($parent_obj)){ + $ldap->cat($parent_obj,array("*")); + $attrs = FAI:: prepare_ldap_fetch_to_be_saved($ldap->fetch()); + + if(!FAI::array_diff_FAI( $attrs,$objectAttrs)){ + $addObj['diff'] = FALSE; + } + } + }else{ + + /* If this is the last CLASS of a specific name (e.g. DEPOTSERVER) + we have to remove this name from all profiles in this release. + */ + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $obj_dn = FAI::get_parent_release_object($Current_DN,TRUE); + + /* Dont't try to modify non FAIclasses + */ + if(!preg_match("/[^,]+,".preg_quote(get_ou("faiBaseRDN"), '/')."/",$obj_dn)){ + trigger_error("PLEASE check fai class handling in ".__LINE__." -> ".__FILE__); + echo "
-->".$Current_DN."
"; + echo "
-->".$obj_dn."
"; + }else{ + + /* Get source object and check if it is a base FAIclass + */ + $ldap->cat($obj_dn); + $attrs = $ldap->fetch(); + $classes = array("FAIprofile","FAIscript","FAIpackageList","FAIpartitionTable","FAIHook","FAIvariable","FAItemplate"); + if(count(array_intersect($classes,$attrs['objectClass']))){ + $cn = $attrs['cn'][0]; + + /* Check if this is the last with this name in the current release. + In this case we have to remove the package name + from all profiles in this release. + */ + $classes = FAI::get_all_objects_for_given_base(FAI::get_release_dn($Current_DN), + "(&(objectClass=FAIclass)(cn=".$cn."))"); + + /* Check if this is the last class with this name. + */ + if(count($classes) == 1){ + + /* Get all FAI Profiles + */ + $profiles = FAI::get_all_objects_for_given_base(FAI::get_release_dn($Current_DN), + "(&(objectClass=FAIprofile)(FAIclass=*))"); + + /* Walk though all profiles and remove the source class name + */ + foreach($profiles as $dn){ + $ldap->cat($dn['dn']); + $attrs = $ldap->fetch(); + + $attrs = array('FAIclass' => $attrs['FAIclass'][0]); + + /* Check if this Profile uses the source class ($cn) + */ + if(preg_match("/".preg_quote($cn, '/')."/",$attrs['FAIclass'])){ + $attrs['FAIclass'] = preg_replace("/[ ]*".preg_quote($cn, '/')."[ ]*/i"," ",$attrs['FAIclass']); + if(empty($attrs['FAIclass'])){ + $attrs['FAIclass'] = array(); + } + $ldap->cd($dn['dn']); + $ldap->modify($attrs); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + } + } + } + } + } + } + + + + $FAI_objects_to_save = session::get('FAI_objects_to_save') ; + $FAI_objects_to_save[$Current_DN] = $addObj; + session::set('FAI_objects_to_save',$FAI_objects_to_save); + } + + + /* Detect differences in attribute arrays */ + static function array_diff_FAI($ar1,$ar2) + { + + if((!isset($ar1['description'])) || (isset($ar1['description']) && (count($ar1['description']) == 0))){ + $ar1['description'] = ""; + } + if((!isset($ar2['description'])) || (isset($ar2['description']) && (count($ar2['description']) == 0))){ + $ar2['description'] = ""; + } + + if(count($ar1) != count($ar2)) { + return (true); + } + + foreach($ar1 as $key1 => $val1){ + + if((is_array($val1)) && (count($val1)==1)){ + $ar1[$key1] = $val1[0]; + } + + if(isset($ar2[$key1])&& (is_array($ar2[$key1])) && (count($ar2[$key1])==1)){ + $val1 = $val1[0]; + $ar2[$key1] = $ar2[$key1][0]; + } + } + ksort($ar1); + ksort($ar2); + if(count( array_diff($ar1,$ar2)) || FAI::arr_diff($ar1,$ar2)){ + return(true); + }else{ + return(false); + } + } + + + static function arr_diff($ar1,$ar2) + { + foreach($ar1 as $ak1 => $av1){ + if(!isset($ar2[$ak1]) || (!($av1 === $ar2[$ak1]))){ + return(TRUE); + }elseif(is_array($av1)){ + $ret = (FAI::arr_diff($av1,$ar2[$ak1])); + if($ret) { + return(TRUE); + } + } + } + return(FALSE); + } + + + + + /* check which objects must be saved, and save them */ + static function save_release_changes_now() + { + global $config; + /* Variable init*/ + $to_save = array(); + + $reload_fai_classes = FALSE; + + /* check which objects must be saved */ + if(!session::is_set('FAI_objects_to_save')){ + return; + } + $FAI_objects_to_save = session::get('FAI_objects_to_save'); + if(!is_array($FAI_objects_to_save)) { + print_a(array(session::get('FAI_objects_to_save'))); + trigger_error("Can't save FAI objects, no array given."); + return; + } + + foreach($FAI_objects_to_save as $Current_DN => $object){ + if($object['diff']){ + $sub_name = $Current_DN; + while(isset($FAI_objects_to_save[$sub_name])){ + $to_save[strlen($sub_name)][$sub_name] = $FAI_objects_to_save[$sub_name]; + unset($FAI_objects_to_save[$sub_name]); + $sub_name = preg_replace('/^[^,]+,/', '', $sub_name); + } + } + } + session::set('FAI_objects_to_save',$FAI_objects_to_save); + + /* Sort list of objects that must be saved, and ensure that + container objects are safed, before their childs are saved */ + ksort($to_save); + $tmp = array(); + foreach($to_save as $SubObjects){ + foreach($SubObjects as $object){ + $tmp[] = $object; + } + } + $to_save = $tmp; + + + /* Save objects and manage the correct release behavior*/ + foreach($to_save as $save){ + + $Current_DN = $save['Current_DN']; + $removed = $save['removed']; + $objectAttrs= $save['objectAttrs']; + + /* Get ldap object */ + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + + /* Get some basic informations */ + $base_release = FAI::get_release_dn($Current_DN); + $sub_releases = FAI::get_sub_releases_of_this_release($base_release,true); + $parent_obj = FAI::get_parent_release_object($Current_DN); + $following_releases = $sub_releases; + + /* Check if given dn exists or if is a new entry */ + $ldap->cat($Current_DN); + if(!$ldap->count()){ + $is_new = true; + }else{ + $is_new = false; + } + + /* if parameter removed is true, we have to add FAIstate to the current attrs + FAIstate should end with ...|removed after this operation */ + if($removed ){ + $ldap->cat($Current_DN); + + /* Get current object, because we must add the FAIstate ...|removed */ + if((!$ldap->count()) && !empty($parent_obj)){ + $ldap->cat($parent_obj); + } + + /* Check if we have found a suiteable object */ + if(!$ldap->count()){ + echo "Error can't remove this object ".$Current_DN; + return; + }else{ + + /* Set FAIstate to current objectAttrs */ + $objectAttrs = FAI:: prepare_ldap_fetch_to_be_saved($ldap->fetch()); + if(isset($objectAttrs['FAIstate'][0])){ + if(!preg_match("/removed$/",$objectAttrs['FAIstate'][0])){ + $objectAttrs['FAIstate'][0] .= "|removed"; + } + }else{ + $objectAttrs['FAIstate'][0] = "|removed"; + } + + /* Force reload of FAI classes */ + $classes = array("FAIprofile","FAIscript","FAIpackageList","FAIpartitionTable","FAIHook","FAIvariable","FAItemplate"); + if(count(array_intersect($classes,$objectAttrs['objectClass']))){ + $reload_fai_classes = TRUE; + } + } + } + + /* Check if this a leaf release or not */ + if(count($following_releases) == 0 ){ + + /* This is a leaf object. It isn't inherited by any other object */ + if(DEBUG_FAI_FUNC) { + echo "Saving directly, is a leaf object
".$Current_DN; + print_a($objectAttrs); + } + FAI::save_FAI_object($Current_DN,$objectAttrs); + + /* Force reload of FAI classes */ + $classes = array("FAIprofile","FAIscript","FAIpackageList","FAIpartitionTable","FAIHook","FAIvariable","FAItemplate"); + if(count(array_intersect($classes,$objectAttrs['objectClass']))){ + $reload_fai_classes = TRUE; + } + + }else{ + + /* This object is inherited by some sub releases */ + + /* Get all releases, that inherit this object */ + $r = FAI::get_following_releases_that_inherit_this_object($Current_DN); + + /* Get parent object */ + $ldap->cat($parent_obj); + $parent_attrs = FAI::prepare_ldap_fetch_to_be_saved($ldap->fetch()); + + /* New objects require special handling */ + if($is_new){ + + /* Force reload of FAI classes */ + $classes = array("FAIprofile","FAIscript","FAIpackageList","FAIpartitionTable","FAIHook","FAIvariable","FAItemplate"); + if(count(array_intersect($classes,$objectAttrs['objectClass']))){ + $reload_fai_classes = TRUE; + } + + /* check if there is already an entry named like this, + in one of our parent releases */ + if(!empty($parent_obj)){ + if(DEBUG_FAI_FUNC) { + echo "There is already an entry named like this.
"; + + echo "Saving main object".$Current_DN; + print_a($objectAttrs); + } + FAI::save_FAI_object($Current_DN,$objectAttrs); + + foreach($r as $key){ + if(DEBUG_FAI_FUNC) { + echo "Saving parent to following release ".$key; + print_a($parent_attrs); + } + FAI::save_FAI_object($key,$parent_attrs); + } + }else{ + + if(DEBUG_FAI_FUNC) { + echo "Saving main object".$Current_DN; + print_a($objectAttrs); + } + FAI::save_FAI_object($Current_DN,$objectAttrs); + + if(isset($objectAttrs['FAIstate'])){ + $objectAttrs['FAIstate'] .= "|removed"; + }else{ + $objectAttrs['FAIstate'] = "|removed"; + } + + foreach($r as $key ){ + if(DEBUG_FAI_FUNC) { + echo "Create an empty placeholder in follwing release ".$key; + print_a($objectAttrs); + } + FAI::save_FAI_object($key,$objectAttrs); + } + } + }else{ + + /* check if we must patch the follwing release */ + if(!empty($r)){ + + foreach($r as $key ){ + if(DEBUG_FAI_FUNC) { + echo "Copy current objects original attributes to next release ".$key; + print_a($parent_attrs); + } + + /* Append FAIstate tag to ensure that freezed objects stay freezed + */ + $rTag = FAI::get_release_tag(FAI::get_release_dn($key)); + $parent_attrs['FAIstate'] = $rTag; + FAI::save_FAI_object($key,$parent_attrs); + } + } + + if(DEBUG_FAI_FUNC) { + echo "Saving current object".$parent_obj; + print_a($objectAttrs); + } + FAI::save_FAI_object($parent_obj,$objectAttrs); + + if(($parent_obj != $Current_DN)){ + msg_dialog::display(_("Error"), sprintf(_("Error, following objects should be equal '%s' and '%s'"),$parent_obj,$Current_DN), ERROR_DIALOG); + } + } + } + } + + /* Reload GOsa si FAI DB/cache + */ + if($reload_fai_classes){ + if( class_available("DaemonEvent") && class_available("gosaSupportDaemon")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + if(isset($events['TRIGGERED']['DaemonEvent_recreate_fai_release_db'])){ + $evt = $events['TRIGGERED']['DaemonEvent_recreate_fai_release_db']; + $tmp = new $evt['CLASS_NAME']($config); + $tmp->set_type(TRIGGERED_EVENT); + $tmp->add_targets(array("GOSA")); + $o_queue = new gosaSupportDaemon(); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + } + + session::set('FAI_objects_to_save',array()); + } + + + /* this function will remove all unused (deleted) objects, + that have no parent object */ + static function clean_up_releases($Current_DN) + { + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + + /* Collect some basic informations and initialize some variables */ + $base_release = FAI::get_release_dn($Current_DN); + $previous_releases = array_reverse(FAI:: get_previous_releases_of_this_release($base_release,true)); + $Kill = array(); + $Skip = array(); + + /* We must also include the given release dn */ + $previous_releases[] = $base_release; + + /* Walk through all releases */ + foreach($previous_releases as $release){ + + /* Get fai departments */ + $deps_to_search = FAI::get_FAI_departments($release); + + /* For every single department (ou=hoos,ou ..) */ + foreach($deps_to_search as $fai_base){ + + /* Ldap search for fai classes specified in this release */ + $ldap->cd($fai_base); + $ldap->search("(objectClass=FAIclass)",array("dn","objectClass","FAIstate")); + + /* check the returned objects, and add/replace them in our return variable */ + while($attr = $ldap->fetch()){ + + $buffer = array(); +# $name = str_ireplace($release,"",$attr['dn']); + $name = preg_replace("/".preg_quote($release, '/')."/i","",$attr['dn']); + + if(isset($attr['FAIstate'][0])&&(preg_match("/removed$/",$attr['FAIstate'][0]))){ + + /* Check if this object is required somehow */ + if(!isset($Skip[$name])){ + $Kill[$attr['dn']] = $attr['dn']; + } + }else{ + + /* This object is required (not removed), so do not + delete any following sub releases of this object */ + $Skip[$name] = $attr['dn']; + } + } + } + } + return($Kill); + } + + + /* Remove numeric index and 'count' from ldap->fetch result */ + static function prepare_ldap_fetch_to_be_saved($attrs) + { + foreach($attrs as $key => $value){ + if(is_numeric($key) || ($key == "count") || ($key == "dn")){ + unset($attrs[$key]); + } + if(is_array($value) && isset($value['count'])){ + unset($attrs[$key]['count']); + } + } + return($attrs); + } + + + /* Save given attrs to specified dn*/ + static function save_FAI_object($dn,$attrs) + { + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $dn)); + $ldap->cd($dn); + + $ldap->cat($dn,array("dn")); + if($ldap->count()){ + + /* Remove FAIstate*/ + if(!isset($attrs['FAIstate'])){ + $attrs['FAIstate'] = array(); + } + + $ldap->modify($attrs); + }else{ + + /* Unset description if empty */ + if(empty($attrs['description'])){ + unset($attrs['description']); + } + + $ldap->add($attrs); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, 0, get_class())); + } + } + + + /* Return FAIstate freeze branch or "" for specified release department */ + static function get_release_tag($dn) + { + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($dn); + $ldap->cat($dn,array("FAIstate")); + + if($ldap->count()){ + + $attr = $ldap->fetch(); + if(isset($attr['FAIstate'][0])){ + if(preg_match("/freeze/",$attr['FAIstate'][0])){ + return("freeze"); + }elseif(preg_match("/branch/",$attr['FAIstate'][0])){ + return("branch"); + } + } + } + return(""); + } + + + static function get_following_releases_that_inherit_this_object($dn) + { + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + + $ret = array(); + + /* Get base release */ + $base_release = FAI::get_release_dn($dn); + + /* Get previous release dns */ + $sub_releases = FAI:: get_sub_releases_of_this_release($base_release); + + /* Get dn suffix. Example "FAIvairableEntry=keksdose,FAIvariable=Keksregal," */ +# $dn_suffix = str_ireplace($base_release,"",$dn); + $dn_suffix = preg_replace("/".preg_quote($base_release, '/')."/i","",$dn); + + /* Check if given object also exists whitin one of these releases */ + foreach($sub_releases as $p_release => $name){ + + $check_dn = $dn_suffix.$p_release; + + $ldap->cat($check_dn,array("dn","objectClass")); + + if($ldap->count()){ + //return($ret); + }else{ + $ret[$check_dn]=$check_dn; + } + } + return($ret); + } + + + /* Get previous version of the object dn */ + static function get_parent_release_object($dn,$include_myself=true) + { + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $previous_releases= array(); + + /* Get base release */ + $base_release = FAI::get_release_dn($dn); + if($include_myself){ + $previous_releases[] = $base_release; + } + + /* Get previous release dns */ + $tmp = FAI:: get_previous_releases_of_this_release($base_release,true); + foreach($tmp as $release){ + $previous_releases[] = $release; + } + + /* Get dn suffix. Example "FAIvairableEntry=keksdose,FAIvariable=Keksregal," */ +# $dn_suffix = str_ireplace($base_release,"",$dn); + $dn_suffix = preg_replace("/".preg_quote($base_release, '/')."/i","",$dn); + + /* Check if given object also exists whitin one of these releases */ + foreach($previous_releases as $p_release){ + $check_dn = $dn_suffix.$p_release; + $ldap->cat($check_dn,array("dn","objectClass")); + + if($ldap->count()){ + return($check_dn); + } + } + return(""); + } + + + /* return release names of all parent releases */ + static function get_previous_releases_of_this_release($dn,$flat) + { + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ret = array(); + + /* Explode dns into pieces, to be able to build parent dns */ + $dns_to_check = gosa_ldap_explode_dn(preg_replace("/".preg_quote(",".$config->current['BASE'], '/')."/i","",$dn)); + + if(!is_array($dns_to_check)){ + return; + } + + /* Unset first entry which represents the given dn */ + unset($dns_to_check['count']); + unset($dns_to_check[key($dns_to_check)]); + + /* Create dns addresses and check if this dn is a release dn */ + $id = 0; + while(count($dns_to_check)){ + + /* build parent dn */ + $new_dn = ""; + foreach($dns_to_check as $part){ + $new_dn .= $part.","; + } + $new_dn .= $config->current['BASE']; + + /* check if this dn is a release */ + if(FAI::is_release_department($new_dn)){ + if($flat){ + $ret[$id] = $new_dn; + }else{ + $ret = array($new_dn=>$ret); + } + $id ++; + }else{ + return($ret); + } + reset($dns_to_check); + unset($dns_to_check[key($dns_to_check)]); + } + return($ret); + } + + + /* This function returns all sub release names, recursivly */ + static function get_sub_releases_of_this_release($dn,$flat = false) + { + global $config; + $res = array(); + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->ls("(objectClass=FAIbranch)",$dn,array("objectClass","dn","ou")); + while($attr = $ldap->fetch()){ + + /* Append department name */ + if($flat){ + $res[$attr['dn']] = $attr['ou'][0]; + }else{ + $res[$attr['dn']] = array(); + } + + /* Get sub release departments of this department */ + if(in_array("FAIbranch",$attr['objectClass'])) { + if($flat){ + $tmp = FAI:: get_sub_releases_of_this_release($attr['dn'],$flat); + foreach($tmp as $dn => $value){ + $res[$dn]=$value; + } + }else{ + $res[$attr['dn']] = FAI:: get_sub_releases_of_this_release($attr['dn']); + } + } + } + return($res); + } + + + /* Check if the given department is a release department */ + static function is_release_department($dn) + { + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->cat($dn,array("objectClass","ou")); + + /* Check objectClasses and name to check if this is a release department */ + if($ldap->count()){ + $attrs = $ldap->fetch(); + + $ou = ""; + if(isset($attrs['ou'][0])){ + $ou = $attrs['ou'][0]; + } + + if((in_array("FAIbranch",$attrs['objectClass'])) || ($ou == "fai")){ + return($attrs['dn']); + } + } + return(false); + } + + + static function copy_FAI_group_releases($source_release , $destination_name, $type ="" ) + { + global $config; + $start = microtime(TRUE); + $source_release = trim($source_release,"/"); + + echo "

".sprintf(_("Creating group application release for %s"),$destination_name)."

"; + + $sub_releases = array(); + $source_dn = ""; + + $tmp = split("\/",$source_release); + foreach($tmp as $part){ + if(empty($part)){ + continue; + } + $source_dn = "ou=".$part.",".$source_dn; + $sub_releases[$part] = $source_dn; + } + + /* Get all groups */ + $ldap =$config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + $ldap->search("(objectClass=posixGroup)",array("dn")); + $groups = array(); + while($attrs = $ldap->fetch()){ + $groups[$attrs['dn']] = $attrs; + } + + /* Get all FAI releases, to be able to create missing group application releases + with the correct type of release (FAIstate=freeze/branch). + */ + $f_releases = array(); + $ldap->cd ($config->current['BASE']); + $ldap->search("(objectClass=FAIbranch)",array("ou","FAIstate")); + while($attrs = $ldap->fetch()){ + foreach($sub_releases as $sub_rel){ + if(preg_match("/^".preg_quote($sub_rel.get_ou('faiBaseRDN'), '/')."/",$attrs['dn'])){ + $f_releases[$sub_rel.get_ou('faiBaseRDN')] = $attrs; + } + } + } + + /* Get all group releases */ + $g_releases = array(); + foreach($groups as $dn => $data){ + $ldap->cd($dn); + $ldap->search("(objectClass=FAIbranch)",array("ou","FAIstate")); + while($attrs = $ldap->fetch()){ + $g_releases[$attrs['dn']] = $attrs; + } + } + + /* Check if base releases exists. + If they do not exist, create them and adapt FAIstate attribute from FAI releases. + */ + foreach($sub_releases as $name => $sub_rel){ + + $FAIstate = ""; + if(isset($f_releases[$sub_rel.get_ou('faiBaseRDN')]) && isset($f_releases[$sub_rel.get_ou('faiBaseRDN')]['FAIstate'])){ + $FAIstate = $f_releases[$sub_rel.get_ou('faiBaseRDN')]['FAIstate'][0]; + } + + foreach($groups as $dn => $data){ + if(!isset($g_releases[$sub_rel.$dn])){ + $ldap->cd($dn); + $r_data = array(); + $r_data['ou'] = $name; + $r_data['objectClass'] = array("top","organizationalUnit","FAIbranch"); + if(!empty($FAIstate)) { + $r_data['FAIstate'] = $FAIstate; + } + + $ldap->cd($sub_rel.$dn) ; + $ldap->add($r_data); + echo " "._("Object").": "; + echo sprintf(_("Adding missing group application release container %s."),substr(LDAP::fix($sub_rel.$dn),0,96))."
"; + flush(); + } + } + } + + /* Create new release container in each group. + */ + $n_data = array(); + $n_data = array(); + $n_data['ou'] = $destination_name; + $n_data['objectClass'] = array("top","organizationalUnit","FAIbranch"); + if(!empty($type)){ + $n_data['FAIstate'] = $type."/cow"; + } + + foreach($groups as $dn => $att){ + $n_dn = "ou=".$destination_name.",".$source_dn.$dn; + if(!isset($g_releases[$n_dn])){ + $ldap->cd ($n_dn); + $ldap->add($n_data); + echo " "._("Object").": "; + echo sprintf(_("Adding group application release container %s."),substr(LDAP::fix($n_dn),0,96))."
"; + flush(); + } + } + + /* If the source release is empty, then create a new release by copying + all group application menus into a new ou=$destination_name release container. + + If the source release is not empty. + We detect all releases which match the source release dn and copy the contents. + */ + if(empty($source_release)){ + $source_dns = $groups; + }else{ + $source_dns = array(); + foreach($g_releases as $dn => $data){ + if(preg_match("/^".preg_quote($source_dn, '/')."/",$dn)){ + $source_dns[$dn] = $data; + } + } + } + + /* Detect all menu object we have to copy + */ + $to_copy = array(); + foreach($source_dns as $dn => $attrs){ + $ldap->cd($dn); + $ldap->ls("(|(objectClass=gotoSubmenuEntry)(objectClass=gotoMenuEntry))",$dn,array("dn")); + while($attrs = $ldap->fetch()){ + $destination = preg_replace("/".preg_quote($dn, '/')."$/","ou=".$destination_name.",".$dn,$attrs['dn']); + $to_copy[$attrs['dn']] = $destination; + } + } + + /* At least create the menu objects object */ + $plug = new plugin($config); + foreach($to_copy as $source => $destination){ + $ldap->cat($destination); + if($ldap->count()){ + echo " "._("Object").": "; + echo sprintf(_("Could not create menu entry %s. (Already exists)."),substr(LDAP::fix($destination),0,96))."
"; + flush(); + }else{ + $plug->copy($source,$destination); + echo " "._("Object").": "; + echo sprintf(_("Created group application menu entry for %s."),substr(LDAP::fix($destination),0,96))."
"; + flush(); + } + } + } + + + /*! \brief Create a new FAI branch. + * @param $sourcedn String The source release dn + * @param $destinationdn String The destination dn + * @param $destinationName String The name of the new release + * @param $type String The release type (freeze/branch) + * @param $is_first Boolean Use to identify the first func. call when recursivly called. + * @param $depth Integer Current depth of recursion. + */ + static function copy_FAI_resource_recursive($sourcedn,$destinationdn,$destinationName,$type="branch",$is_first = true,$depth=0) + { + global $config; + error_reporting(E_ALL | E_STRICT); + $ldap = $config->get_ldap_link(); + $basedn = $config->current['BASE']; + $delarray = array(); + + /* The following code will output a status string + * for each handled object, in a seperate iframe. + */ + + + /* Display current action information. + */ + if($is_first){ + echo "

".sprintf(_("Creating copy of %s"),"".LDAP::fix($sourcedn)."")."

"; + }else{ + if(preg_match("/^ou=/",$sourcedn)){ + echo "

"._("Processing")." ".LDAP::fix($destinationdn)."

"; + }else{ + $tmp = split(",",$sourcedn); + echo " "._("Object").": "; + $deststr = LDAP::fix($destinationdn); + if(strlen($deststr) > 96){ + $deststr = substr($deststr,0,96)."..."; + } + echo $deststr."
"; + } + } + /* .. immediately display infos */ + flush(); + + /* Check if destination entry already exists + */ + $ldap->cat($destinationdn); + if($ldap->count()){ + echo _("Could not create new release, the destination dn is already in use."); + return; + }else{ + + $ldap->clearResult(); + + /* Get source entry + * if it does not exist, abort here. + */ + $ldap->cd($basedn); + $ldap->cat($sourcedn); + $attr = $ldap->fetch(); + if((!$attr) || (count($attr)) ==0) { + echo _("Error while fetching source dn - aborted!"); + return; + } + + /* The current object we want to create is an department. + * Create the department and add the FAIbranch tag. + */ + if(in_array("organizationalUnit",$attr['objectClass'])){ + $attr['dn'] = LDAP::convert($destinationdn); + $ldap->cd($basedn); + $ldap->create_missing_trees($destinationdn); + $ldap->cd($destinationdn); + + /* If is first entry, append FAIbranch to department entry */ + if($is_first){ + $ldap->cat($destinationdn); + $attr= $ldap->fetch(); + /* Filter unneeded informations */ + foreach($attr as $key => $value){ + if(is_numeric($key)) unset($attr[$key]); + if(isset($attr[$key]['count'])){ + if(is_array($attr[$key])){ + unset($attr[$key]['count']); + } + } + } + + unset($attr['count']); + unset($attr['dn']); + + /* Add marking attribute */ + $attr['objectClass'][] = "FAIbranch"; + $attr['FAIstate'] = $type; + + /* Add this entry */ + $ldap->modify($attr); + } + }else{ + + /* Replicate all relevant FAI objects here. + * FAI objects, Apps and Mimetypes. + * Get all attributes as binary value, to ensure that Icon, File template aso + * are created correctly. + */ + foreach($attr as $key => $value){ + + if(in_array($key ,array("gotoLogonScript", "gosaApplicationIcon","gotoMimeIcon"))){ + $sr= ldap_read($ldap->cid, LDAP::fix($sourcedn), "$key=*", array($key)); + $ei= ldap_first_entry($ldap->cid, $sr); + if ($tmp= @ldap_get_values_len($ldap->cid, $ei,$key)){ + $attr[$key] = $tmp; + } + } + + if(is_numeric($key)) unset($attr[$key]); + if(isset($attr[$key]['count'])){ + if(is_array($attr[$key])){ + unset($attr[$key]['count']); + } + } + } + unset($attr['count']); + unset($attr['dn']); + if(!in_array("FAIobject",$attr['objectClass'])){ + $attr['objectClass'][] = "FAIobject"; + } + $attr['FAIstate'] = $type; + + /* Add entry + */ + $ldap->cd($destinationdn); + $ldap->cat($destinationdn); + + $a = $ldap->fetch(); + if(!count($a)){ + $ldap->add($attr); + } + + if(!$ldap->success()){ + + /* Some error occurred */ + msg_dialog::display(_("Fatal error"), + sprintf(_("Release creation failed due to ldap errors. Additional informations '%s'."), + $ldap->get_error()."
".$sourcedn."
".$destinationdn."
"),FATAL_ERROR_DIALOG); + exit(); + } + } + } + + echo "" ; + + /* Prepare for recursive copy. + * Get all object within the source dn and + * call the recursive copy for each. + */ + $ldap->ls ("(objectClass=*)",$sourcedn); + while ($ldap->fetch()){ + $deldn= $ldap->getDN(); + $delarray[$deldn]= strlen($deldn); + } + asort ($delarray); + reset ($delarray); + $depth ++; + foreach($delarray as $dn => $bla){ + if($dn != $destinationdn){ + $ldap->cd($basedn); + $item = $ldap->fetch($ldap->cat($dn)); + if(!in_array("FAIbranch",$item['objectClass'])){ + FAI::copy_FAI_resource_recursive($dn,str_replace($sourcedn,$destinationdn,$dn),$destinationName,$type,false,$depth); + } + } + } + if($is_first){ + echo "

 

"; + } + } + + + + /* This function returns the dn of the object release */ + static function get_release_dn($Current_DN) + { + global $config; + $ldap = $config->get_ldap_link(); + $ldap->cd($config->current['BASE']); + + /* Split dn into pices */ + $dns_to_check = gosa_ldap_explode_dn(preg_replace("/".preg_quote(",".$config->current['BASE'], '/')."/i","",$Current_DN)); + + if(!is_array($dns_to_check)){ + return; + } + + /* Use dn pieces, to create sub dns like + ou=test,ou=1,ou=0... + ou=1,ou=0... + ou=0... + To check which dn is our release container. + */ + unset($dns_to_check['count']); + while(count($dns_to_check)){ + + /* Create dn */ + $new_dn = ""; + foreach($dns_to_check as $part){ + $new_dn .= $part.","; + } + $new_dn .= $config->current['BASE']; + + /* Check if this dn is a release dn */ + if(FAI::is_release_department($new_dn)){ + return($new_dn); + } + + /* Remove first element of dn pieces */ + reset($dns_to_check); + unset($dns_to_check[key($dns_to_check)]); + } + return(""); + } +} + + + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_askClassName.inc b/trunk/gosa-plugins/fai/admin/fai/class_askClassName.inc new file mode 100644 index 000000000..68a406dcd --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_askClassName.inc @@ -0,0 +1,166 @@ +ui = $ui; + $this->objectClass = $objectClass; + plugin::plugin ($config, $dn); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty = get_smarty(); + $display= ""; + + /* First search for every ou, in given fai base + * With a second search detect all object that belong to the different ous. + */ + + $base = $this->parent->fai_release; + $ldap = $this->config->get_ldap_link(); + + $type_acl_mapping = array( + "FAIpartitionTable" => "faiPartitionTable", + "FAIpackageList" => "faiPackage", + "FAIscript" => "faiScript", + "FAIvariable" => "faiVariable", + "FAIhook" => "faiHook", + "FAIprofile" => "faiProfile", + "FAItemplate" => "faiTemplate"); + + $filter = ""; + foreach($type_acl_mapping as $map){ + $filter .= "(objectClass=".$map.")"; + } + + $res = FAI::get_all_objects_for_given_base($base,"(|".$filter.")",TRUE); + + $delete = array(); + $used = array(); + foreach($res as $object){ + + /* skip class names with this name */ + if(in_array($this->objectClass,$object['objectClass']) || in_array("FAIprofile",$object['objectClass'])){ + if(isset($object['FAIstate'][0]) && preg_match("/removed$/",$object['FAIstate'][0])){ + continue; + } + $delete[] = $object['cn'][0]; + } + + /* Skip profiles */ + if(!in_array("FAIprofile",$object['objectClass'])){ + if(isset($object['cn'])){ + $used[$object['cn'][0]]= $object['cn'][0]; + } + } + } + + /* Create headline + * Depending on the object type we want to create, a different headline will be shown + */ + switch($this->objectClass) { + case "FAIpartitionTable": $str =_("Create new FAI object")." - "._("Partition table");break; + case "FAIpackageList" : $str =_("Create new FAI object")." - "._("Package bundle");break; + case "FAIscript" : $str =_("Create new FAI object")." - "._("Script bundle");break; + case "FAIvariable" : $str =_("Create new FAI object")." - "._("Variable bundle");break; + case "FAIhook" : $str =_("Create new FAI object")." - "._("Hook bundle");break; + case "FAIprofile" : $str =_("Create new FAI object")." - "._("Profile");break; + case "FAItemplate" : $str =_("Create new FAI object")." - "._("Template bundle");break; + default : $str =_("Create new FAI object");break; + } + $smarty->assign("headline",$str); + + /* Save forbidden class names + */ + $this->forbidden = $delete; + + /* Delete all class names which already have this type of object + */ + foreach($delete as $del){ + unset($used[$del]); + } + + /* if there is no class name which is missing for this type + * of objectClass, we only can create a new one, disable selectBox + */ + if(count ($used)==0){ + $smarty->assign("ClassNamesAvailable", " disabled "); + $smarty->assign("grey", 'style="color:#C0C0C0"'); + }else{ + $smarty->assign("ClassNamesAvailable", ""); + $smarty->assign("grey", ""); + } + ksort($used); + $smarty->assign("ClassNames", $used); + $smarty->assign("ClassName", $this->ClassName); + $display.= $smarty->fetch(get_template_path('askClassName.tpl', TRUE)); + return($display); + } + + /* Get posts and set class name + */ + function save_object() + { + if(isset($_POST['classSelector']) && $_POST['classSelector'] == 1 + && isset($_POST['edit_continue'])){ + $this->ClassName = $_POST['UseTextInputName']; + $this->ClassAlreadyExists = true; + } + + if(isset($_POST['classSelector']) && $_POST['classSelector'] == 2 + && isset($_POST['edit_continue'])){ + $this->ClassAlreadyExists = false; + $this->ClassName = $_POST['SelectedClass']; + } + } + + /* Check given class name + */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if($this->ClassName != preg_replace("/ /","",trim($this->ClassName))){ + $message[] = msgPool::invalid(_("Name"),preg_replace("/ /","_",$this->ClassName),"/[^_]/"); + } + + if($this->ClassName == ""){ + $message[]= msgPool::required(_("Name")); + } + + if(in_array($this->ClassName,$this->forbidden)){ + $message[]= msgPool::duplicated(_("Name")); + } + + return ($message); + } + + + /* Return the class name */ + function save() + { + return($this->ClassName); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_debconfTemplate.inc b/trunk/gosa-plugins/fai/admin/fai/class_debconfTemplate.inc new file mode 100644 index 000000000..bbbbbadf2 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_debconfTemplate.inc @@ -0,0 +1,374 @@ +set_language($language); + } + + function set_language($language) + { + $this->language= $language; + } + + function load_from_string($str) + { + $lines = split("\n",$str); + $this->template = array(); + $post_name = 0; + $langcode = $this->language.".UTF-8"; + $in_description = FALSE; + $got_local_description = FALSE; + + foreach($lines as $line){ + + /* Reset description flag */ + if ($in_description && !preg_match("/^ /", $line)){ + $in_description= FALSE; + } + + /* Template header */ + if (preg_match("/^Template: /", $line)){ + $post_name ++; + $name= trim(preg_replace("/^Template: (.*)$/", "\\1", $line)); + $this->template[$post_name]['Name'] = $name; + $this->template[$post_name]['Default'] =""; + + $got_local_description= FALSE; + continue; + } + + /* Get type */ + if (preg_match("/^Type: /", $line)){ + $type= trim(preg_replace("/^Type: (.*)$/", "\\1", $line)); + $this->template[$post_name]['Type']= $type; + continue; + } + + /* Get default */ + if (preg_match("/^Default: /", $line)){ + $this->template[$post_name]['Default']= ""; + $default= trim(preg_replace("/^Default: (.*)$/", "\\1", $line)); + $this->template[$post_name]['Default']= $default; + continue; + } + + /* Get description */ + if (!$got_local_description && preg_match("/^Description: /i", $line)){ + $description= trim(preg_replace("/^Description: (.*)$/i", "\\1", $line)); + $this->template[$post_name]['Topic']= $description; + $this->template[$post_name]['Description']= ""; + $in_description= TRUE; + continue; + } + + /* Fill description */ + if (!$got_local_description && $in_description){ + $description= preg_replace("/^ (.*)$/", "\\1", $line); + $this->template[$post_name]['Description'].= $description; + continue; + } + + /* Get local description */ + if (preg_match("/^Description-$langcode: /i", $line)){ + $description= trim(preg_replace("/^Description-$langcode: (.*)$/i", "\\1", $line)); + $this->template[$post_name]['Topic']= $description; + $in_description= TRUE; + $got_local_description= TRUE; + $this->template[$post_name]['Description']= ""; + continue; + } + + /* Fill local description */ + if ($got_local_description && $in_description){ + $description= preg_replace("/^ (.*)$/", "\\1", $line); + $this->template[$post_name]['Description'].= $description; + continue; + } + + /* Get native choices */ + if (preg_match("/^Choices: /", $line)){ + $type= trim(preg_replace("/^Choices: (.*)$/", "\\1", $line)); + $this->template[$post_name]['Choices']= $type; + } + + /* Get local choices */ + if (preg_match("/^Choices-$langcode: /", $line)){ + $type= trim(preg_replace("/^Choices-$langcode: (.*)$/", "\\1", $line)); + $this->template[$post_name]['Choices-local']= $type; + } + + } + + $this->loaded_template= TRUE; + + $tmp= array(); + foreach($this->template as $post_name => $template){ + $template['post_name'] = "post_".$post_name; + $tmp[] = $template; + } + $this->template = $tmp; + + return (TRUE); + } + + function has_template() + { + return(count($this->template) != FALSE); + } + + + /* Check if some fields are posted */ + function PostCheck() + { + /* Walk through all template variables */ + foreach($this->template as $post_name => $entry){ + + /* Check if this var is set*/ + if(isset($_POST[$entry['post_name']])){ + + /* special handling for arrays */ + if(is_array($_POST[$entry['post_name']])){ + $str = ""; + foreach($_POST[$entry['post_name']] as $val){ + $str.= $val.", "; + } + $str = preg_replace("/\,\ $/","",$str); + $this->template[$post_name]['Default'] = $str; + }else{ + $this->template[$post_name]['Default'] = $_POST[$entry['post_name']]; + } + } + } + + foreach($this->template as $post_name => $entry){ + if(isset($_POST["multi-".$entry['post_name']])){ + $this->template[$post_name]['Default']= ""; + foreach($_POST as $name => $value){ + if(preg_match("/".$entry['post_name']."-multi-/",$name)){ + $this->template[$post_name]['Default'] .= $value.", "; + } + } + $this->template[$post_name]['Default'] = preg_replace("/, $/","",$this->template[$post_name]['Default']); + } + } + } + + + /* This funtion sets the defualt value */ + function SetDefault($var,$val) + { + if ($this->loaded_template) { + foreach($this->template as $key => $tmp){ + if($tmp['Name'] == $var ){ + $this->template[$key]['Default'] = $val; + } + } + } + } + + + /* Display all possible options in html*/ + function get_dialog() + { + if ($this->loaded_template) { + $result= ""; + + foreach ($this->template as $post_name => $entry){ + + $types= array("boolean" => "", "multiselect" => "", "note" => "", + "password" => "", "select" => "", "string" => "", "text" => "", "title" => ""); + + /* Check if type is available */ + if ((isset($entry['Type']))&&(isset($types[$entry['Type']]))){ + + /* Produce type specific output */ + $fn= "render_".$entry['Type']; + $str = $this->$fn($entry); + if(!empty($str)){ + $result.=$str.""; + } + } else { + //php_error(E_WARNING, "An unknown type has been specified in the debconf template. Please fix."); + } + } + + + $result .= "

 

"; + return ($result); + } else { + return _("This package has no debconf options."); + } + } + + + function render_boolean($data) + { + $post_name= $data['post_name']; + $result=" + + +

".$data['Topic']."

".$data['Description']." + + "; + + foreach(array("true","false") as $value){ + if($data['Default'] == $value){ + $result.=""._($value); + }else{ + $result.=""._($value); + } + $result.="
"; + } + + $result.= " + + + "; + + return ($result); + } + + + function render_multiselect($data) + { + $post_name= $data['post_name']; + if (preg_match('/\$\{/', $data['Choices'])){ + $result= $this->render_string($data); + } else { + $choices= ""; + foreach (split(", ", $data['Choices']) as $choice){ + $choices[]= $choice; + } + + + $result=" + + +

".$data['Topic']."

".$data['Description']." + + + + "; + + $defs = split(", ",$data['Default']); + foreach($choices as $value){ + if(in_array($value,$defs)){ + $result.="\n".$value."
"; + }else{ + $result.="\n".$value."
"; + } + } + + $result .= " + + "; + } + + return ($result); + } + + + function render_note($data) + { + /* Ignore notes, they do not makes sense, since we don't get any + chance to test entered values... */ + return (""); + } + + + function render_password($data) + { + $result= ""; + $result.= ""; + $result.= "

".$data['Topic']."

".$data['Description']." 

"; + $result.= $data['Description']; + $result.= ""; + + return ($result); + } + + + function render_select($data) + { + $post_name= $data['post_name']; + + if (preg_match('/\$\{/', $data['Choices'])){ + $choices= array("Need to use some text..."); + } else { + $choices= ""; + foreach (split(", ", $data['Choices']) as $choice){ + $choices[]= $choice; + } + } + + + $result=" + + + +

".$data['Topic']."

".$data['Description']." + + + "; + + foreach($choices as $value){ + if($data['Default'] == $value){ + $result.="\n".htmlentities($value)."
"; + }else{ + $result.="\n".htmlentities($value)."
"; + } + } + + $result.= " + + + + "; + + return ($result); + } + + + function render_string($data) + { + $result= " + + +

".$data['Topic']."

".$data['Description']." + + + + + + "; + + return ($result); + } + + + function render_text($data) + { + /* Ignore text messages, they are normally used for status hints. */ + return (""); + } + + + function render_title($data) + { + /* Ignore text messages, they are normally used for status hints. */ + return (""); + } + +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_divListFai.inc b/trunk/gosa-plugins/fai/admin/fai/class_divListFai.inc new file mode 100644 index 000000000..28c00143c --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_divListFai.inc @@ -0,0 +1,362 @@ +parent = $parent; + $this->ui = get_userinfo(); + + /* Set list strings */ + $this->SetTitle( _("List of classes")); + $this->SetSummary(_("List of deployment classes and products")); + + /* Result page will look like a headpage */ + $this->SetHeadpageMode(); + + $this->EnableAplhabet (true); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 130; + + /* Toggle all selected / deselected */ + $chk = ""; + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string" => _("Class name"), "attach" => "style=''")); + $this->AddHeader(array("string" => _("Class types"), "attach" => "style='width:200px;'")); + $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'")); + + $this->AddCheckBox("ShowProfiles" , sprintf(_("Display objects of type '%s'."), + _("Profile")) ,_("Show profiles") ,true); + $this->AddCheckBox("ShowTemplates" , sprintf(_("Display objects of type '%s'."), + _("Variable")) ,_("Show templates") ,true); + $this->AddCheckBox("ShowScripts" , sprintf(_("Display objects of type '%s'."), + _("Script")) ,_("Show scripts") ,true); + $this->AddCheckBox("ShowHooks" , sprintf(_("Display objects of type '%s'."), + _("Hook")) ,_("Show hooks") ,true); + $this->AddCheckBox("ShowVariables" , sprintf(_("Display objects of type '%s'."), + _("Variable")) ,_("Show variables") ,true); + $this->AddCheckBox("ShowPackages" , sprintf(_("Display objects of type '%s'."), + _("Package")) ,_("Show packages") ,true); + $this->AddCheckBox("ShowPartitions" , sprintf(_("Display objects of type '%s'."), + _("Partition")),_("Show partitions") ,true); + + /* Add opsi checkboxes if opsi is enabled + */ + if($this->parent->opsi instanceof opsi && $this->parent->opsi->enabled()){ + $this->AddCheckBox("ShowOpsiNetboot" , sprintf(_("Display objects of type '%s'."), + _("OPSI netboot product")),_("Show netboot products") ,true); + $this->AddCheckBox("ShowOpsiLocal" , sprintf(_("Display objects of type '%s'."), + _("OPSI localboot product")),_("Show localboot products") ,true); + } + + /* Add SubSearch checkbox */ + //$this->AddCheckBox(SEPERATOR); + //$this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name ,Text ,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Display users matching"),"*" , true); + } + + function AddUserBoxToFilter($position) + { + $str = ""; + if($position == 2){ + + /* Check if there are post commands available for fai management. + * If not, grey out freeze/branch and release remove buttons. + */ + $r = $this->config->search("faiManagement", "POSTREMOVE",array('menu','tabs')); + $c = $this->config->search("faiManagement", "POSTCREATE",array('menu','tabs')); + + $smarty = get_smarty(); + $releases = $this->parent->getBranches(); + + $smarty->assign("allow_create", $c); + $smarty->assign("allow_remove", $r); + $smarty->assign("fai_release" , $releases[$this->parent->fai_release]); + $smarty->assign("fai_base" , $releases[$this->parent->fai_base]); + $smarty->assign("branchimage","plugins/fai/images/branch.png"); + $smarty->assign("fai_releases", $releases); + $plug_id = 0; + if(isset($_GET['plug'])){ + $plug_id = $_GET['plug']; + } + $smarty->assign("plug_id",$plug_id); + $str = $smarty->fetch(get_template_path('branch_selector.tpl', TRUE)); + } + return($str); + } + + function GenHeader() + { + /* Get all departments within this subtree */ + $ui= get_userinfo(); + $first = ""; + $found = FALSE; + $base = $this->config->current['BASE']; + + /* Add seperator */ + $add_sep = false; + + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(false); + + /* Add additional seperator */ + if($add_sep){ + $listhead .="  "; + } + + $s = ".|"._("Actions")."|\n"; + $s .= "..|". + " "._("Create")."|\n"; + + $acl = $ui->get_permissions($this->parent->acl_base,"fai/faiProfile"); + if($this->parent->lock_type == "freeze" && !$this->parent->allow_freeze_object_attach){ + $s.= "...|". + " "._("Freezed")."|\n"; + }else{ + if(preg_match("/c/",$acl)){ + $s.= "...|". + " "._("Profile")."|Create_profile|\n"; + } + + /* Append create icons for each fai component */ + $arr = array( + array("plugins/fai/images/fai_new_partitionTable.png" , _("Partition table") , + "Create_partition" , _("PT") , "faiPartitionTable"), + array("plugins/fai/images/fai_new_script.png" , _("Scripts") , + "Create_script" , _("S") , "faiScript"), + array("plugins/fai/images/fai_new_hook.png" , _("Hooks") , + "Create_hook" , _("H") , "faiHook"), + array("plugins/fai/images/fai_new_variable.png" , _("Variables") , + "Create_variable" , _("V") , "faiVariable"), + array("plugins/fai/images/fai_new_template.png" , _("Templates ") , + "Create_template" , _("I") , "faiTemplate"), + array("plugins/fai/images/fai_new_packages.png" , _("Package list") , + "Create_package" , _("PK") , "faiPackage")); + + foreach($arr as $ar){ + $acl = $ui->get_permissions($this->parent->acl_base,"fai/".$ar[4]); + if(preg_match("/c/",$acl)){ + $s.= "...|". + " ".$ar[1]."|".$ar[2]."|\n"; + } + } + } + + /* Multiple options */ + $s.= "..|". + " "._("Remove")."|"."remove_multiple|\n"; + + + /* Add Copy & Paste header */ + $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module,TRUE,FALSE); + +# /* Add snapshot icons, if we are allowed to write and create the complete fai module ($ui->has_complete_category_acls) */ +# $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); + + $this->SetDropDownHeaderMenu($s); + $this->SetListHeader($listhead); + } + + /* so some basic settings */ + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + $this->AvailableBranches = $this->parent->getBranches(); + } + + function setEntries($list) + { + /******************** + Variable init + ********************/ + + $edit_link = "%s"; + $objects = array( + "FAIpartitionTable" => array("IMG"=> "plugins/fai/images/fai_partitionTable.png", + "NAME"=>_("Partition table"),"KZL"=> "PT", "VAR"=>"ShowPartitions"), + "FAIpackageList" => array("IMG"=> "plugins/fai/images/fai_packages.png", + "NAME"=>_("Package list") , "KZL"=> "PL", "VAR"=>"ShowPackages"), + "FAIscript" => array("IMG"=> "plugins/fai/images/fai_script.png", + "NAME"=>_("Scripts") , "KZL"=> "S", "VAR"=>"ShowScripts"), + "FAIvariable" => array("IMG"=> "plugins/fai/images/fai_variable.png", + "NAME"=>_("Variables") , "KZL"=> "V", "VAR"=>"ShowVariables"), + "FAIhook" => array("IMG"=> "plugins/fai/images/fai_hook.png", + "NAME"=>_("Hooks"), "KZL"=> "H", "VAR"=>"ShowHooks"), + "FAIprofile" => array("IMG"=> "plugins/fai/images/fai_profile.png", + "NAME"=>_("Profile") , "KZL"=> "P", "VAR"=>"ShowProfiles"), + "FAItemplate" => array("IMG"=> "plugins/fai/images/fai_template.png", + "NAME"=>_("Templates") , "KZL"=> "T", "VAR"=>"ShowTemplates"), + "opsi_netboot" => array("IMG"=> "plugins/opsi/images/netboot_package.png", + "NAME"=>_("OPSI netboot product") , "KZL"=> "ON", "VAR"=>"ShowOpsiNetboot"), + "opsi_local" => array("IMG"=> "plugins/opsi/images/local_package.png", + "NAME"=>_("OPSI localboot product") , "KZL"=> "OL", "VAR"=>"ShowOpsiLocal")); + + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 130; + + /******************** + Attach objects + ********************/ + + /* Initialize summary attributes + */ + $cnts = array(); + foreach($objects as $key => $data){ + $cnts[$key] = 0; + } + + /* Walk through entries an build up a printable row for each object + */ + foreach($list as $key => $value){ + + /* Build up edit icons - depending on read acls for the current type + */ + $name = ""; + $name = ""; + $icon_list = ""; + $opsi_only = TRUE; + foreach($objects as $type => $type_data){ + if(isset($value[$type])){ + $name = $value[$type]['cn']; + $icon_list .= "\n"; + $cnts[$type] ++; + if(!in_array($type,array("opsi_local","opsi_netboot"))){ + $opsi_only = FALSE; + } + }else{ + $icon_list .= " \n"; + } + } + + /* Create checkbox + */ + $checkbox = " "; + if(!$opsi_only){ + $checkbox = ""; + } + + /* Create actions string + */ + $actions = ""; + if($opsi_only){ + $actions.= ""; + $actions.= " "; + }else{ + $actions.= ' '; + + $actions.= ""; + $actions.= ""; + } + + /* Create list + */ + $field1 = array( + "string" => $checkbox , + "attach" => "style='width:20px;'"); + $field2 = array( + "string" => sprintf($edit_link,$key,$name), + "attach" => "style=''"); + $field3 = array( + "string" => $icon_list , + "attach" => "style='width:200px;'"); + $field4 = array( + "string" => $actions, + "attach" => "style='width:".$action_col_size."px;border-right: 0px;text-align:right;'"); + + $this->AddElement(array($field1,$field2,$field3,$field4)); + } + + /* Create summary string for list footer */ + $num_deps=0; + if(!$this->SubSearch){ + $num_deps = count($this->Added_Departments); + } + + $profile_str = sprintf(_("Number of listed '%s'"),_("profiles")); + $partition_str = sprintf(_("Number of listed '%s'"),_("partitions")); + $script_str = sprintf(_("Number of listed '%s'"),_("scripts")); + $hook_str = sprintf(_("Number of listed '%s'"),_("hooks")); + $variable_str = sprintf(_("Number of listed '%s'"),_("variables")); + $template_str = sprintf(_("Number of listed '%s'"),_("templates")); + $package_str = sprintf(_("Number of listed '%s'"),_("packages")); + $dep_str = sprintf(_("Number of listed '%s'"),_("departments")); + $opsi_netboot = sprintf(_("Number of listed '%s'"),_("netboot products")); + $opsi_local = sprintf(_("Number of listed '%s'"),_("localboot products")); + + $str = "\"".$profile_str."\" ".$cnts['FAIprofile']."    "; + $str.= "\"".$partition_str."\" ".$cnts['FAIpartitionTable']."    "; + $str.= "\"".$script_str."\" ".$cnts['FAIscript']."    "; + $str.= "\"".$hook_str."\" ".$cnts['FAIhook']."    "; + $str.= "\"".$variable_str."\" ".$cnts['FAIvariable']."    "; + $str.= "\"".$template_str."\" ".$cnts['FAItemplate']."    "; + $str.= "\"".$package_str."\" ".$cnts['FAIpackageList']."    "; + $str.= "\"".$dep_str."\" ".$num_deps."    "; + + if($this->parent->opsi instanceof opsi && $this->parent->opsi->enabled()){ + $str.= "\"".$opsi_netboot."\" ".$cnts['opsi_netboot']."    "; + $str.= "\"".$opsi_local."\" ".$cnts['opsi_local']."    "; + } + $this->set_List_Bottom_Info($str); + } + + function Save() + { + MultiSelectWindow::Save(); + } + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiGroupHandle.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiGroupHandle.inc new file mode 100644 index 000000000..eb31295ad --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiGroupHandle.inc @@ -0,0 +1,127 @@ +mode = $Action; + }else{ + trigger_error("Wrong action type '".$Action."'."); + exit(); + } + + /* Preset required values */ + $select_set = FALSE; + foreach($FAI_group as $type => $data){ + $FAI_group[$type]['selected'] = FALSE; + $FAI_group[$type]['freezed'] = isset($data['FAIstate']) && preg_match("/freeze/",$data['FAIstate']); + if(!$select_set && ($this->mode == "cut" || $this->mode == "edit") && !$FAI_group[$type]['freezed']){ + $FAI_group[$type]['selected'] = TRUE; + $select_set =TRUE; + } + } + $this->FAI_group = $FAI_group; + } + + function execute() + { + $smarty = get_smarty(); + $smarty->assign("FAI_group",$this->FAI_group); + $smarty->assign("types",$this->get_types()); + $smarty->assign("mode",$this->mode); + return($smarty->fetch(get_template_path("faiGroupHandle.tpl",TRUE,dirname(__FILE__)))); + } + + function save_object() + { + if(isset($_POST['faiGroupHandle'])){ + if(in_array($this->mode,array("copy","cut","remove"))){ + foreach($this->FAI_group as $key => $group){ + if(isset($_POST[$this->mode."_".$key])){ + $this->FAI_group[$key]['selected'] = TRUE; + }else{ + $this->FAI_group[$key]['selected'] = FALSE; + } + } + }else{ + if(isset($_POST['edit_selected']) && isset($this->FAI_group[get_post('edit_selected')])){ + foreach($this->FAI_group as $key => $obj){ + $this->FAI_group[$key]['selected'] = FALSE; + } + $this->FAI_group[get_post('edit_selected')]['selected'] = TRUE; + } + } + if(isset($_POST['faiGroupHandle_apply']) || isset($_POST['faiGroupHandle_cancel'])){ + $this->open = FALSE; + } + if(isset($_POST['faiGroupHandle_cancel'])){ + $this->canceled = TRUE; + } + } + } + + function is_open() + { + return($this->open); + } + + function is_canceled() + { + return($this->canceled); + } + + function get_mode() + { + return($this->mode); + } + + function get_selected() + { + $ret= array(); + foreach($this->FAI_group as $key => $obj){ + if($obj['selected']){ + $ret[$key] = $obj; + } + } + return($ret); + } + + function get_types() + { + $objects = array( + "FAIpartitionTable" => array("IMG"=> "plugins/fai/images/fai_partitionTable.png", + "NAME"=>_("Partition table"),"KZL"=> "PT", "VAR"=>"ShowPartitions"), + "FAIpackageList" => array("IMG"=> "plugins/fai/images/fai_packages.png", + "NAME"=>_("Package list") , "KZL"=> "PL", "VAR"=>"ShowPackages"), + "FAIscript" => array("IMG"=> "plugins/fai/images/fai_script.png", + "NAME"=>_("Scripts") , "KZL"=> "S", "VAR"=>"ShowScripts"), + "FAIvariable" => array("IMG"=> "plugins/fai/images/fai_variable.png", + "NAME"=>_("Variables") , "KZL"=> "V", "VAR"=>"ShowVariables"), + "FAIhook" => array("IMG"=> "plugins/fai/images/fai_hook.png", + "NAME"=>_("Hooks"), "KZL"=> "H", "VAR"=>"ShowHooks"), + "FAIprofile" => array("IMG"=> "plugins/fai/images/fai_profile.png", + "NAME"=>_("Profile") , "KZL"=> "P", "VAR"=>"ShowProfiles"), + "FAItemplate" => array("IMG"=> "plugins/fai/images/fai_template.png", + "NAME"=>_("Templates") , "KZL"=> "T", "VAR"=>"ShowTemplates"), + "opsi_netboot" => array("IMG"=> "plugins/opsi/images/netboot_package.png", + "NAME"=>_("OPSI netboot product") , "KZL"=> "ON", "VAR"=>"ShowOpsiNetboot"), + "opsi_local" => array("IMG"=> "plugins/opsi/images/local_package.png", + "NAME"=>_("OPSI local product") , "KZL"=> "OL", "VAR"=>"ShowOpsiLocal")); + return($objects); + } +} + + + + + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiHook.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiHook.inc new file mode 100644 index 000000000..e71fc1b85 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiHook.inc @@ -0,0 +1,596 @@ +dn =$dn; + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_base($this->dn,"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($this->dn, '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['status'] = "FreshLoaded"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $this->SubObjects[$objects['cn']] = $objects; + } + } + $this->is_new = FALSE; + if($this->dn == "new"){ + $this->is_new =TRUE; + } + $this->ui = get_userinfo(); + } + + + /* Reload some attributes */ + function get_object_attributes($object,$attributes) + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($object['dn'],$attributes); + $tmp = $ldap->fetch(); + + foreach($attributes as $attrs){ + if(isset($tmp[$attrs][0])){ + $var = $tmp[$attrs][0]; + + /* Check if we must decode some attributes */ + if(in_array_ics($attrs,$this->sub64coded)){ + $var = base64_decode($var); + } + + /* check if this is a binary entry */ + if(in_array_ics($attrs,$this->subBinary)){ + $var = $ldap->get_attribute($object['dn'], $attrs,$r_array=0); + } + + /* Fix slashes */ + $var = addslashes($var); + $object[$attrs] = $var; + } + } + return($object); + } + + + function acl_base_for_current_object($dn) + { + if($dn == "new" || $dn == ""){ + if($this->dn == "new"){ + $dn= $this->parent->parent->acl_base; + }else{ + $dn = $this->dn; + } + } + return($dn); + } + + + function getUsedFAItask($cn) + { + $ret = array(); + foreach($this->SubObjects as $name => $class){ + if($class['cn'] == $cn){ + continue; + } + if($class['status'] != "delete"){ + $ret[$class['FAItask']] = $class['FAItask']; + } + } + return($ret); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","fai/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* New Listhandling + */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^editscript_/",$name)&&($once)){ + $once = false; + $entry = preg_replace("/^editscript_/","",$name); + $entry = base64_decode(preg_replace("/_.*/","",$entry)); + + $obj = $this->SubObjects[$entry]; + if($obj['status'] == "FreshLoaded"){ + $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + } + + $this->dialog= new $this->subClassName($this->config,$this->dn,$obj); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->set_acl_base($this->acl_base_for_current_object($obj['dn'])); + $this->dialog->set_acl_category("fai"); + + set_object_info($obj['dn']); + $this->dialog->parent = &$this; + $this->is_dialog=true; + } + if(preg_match("/^deletescript_/",$name)&&($once)){ + $entry = preg_replace("/^deletescript_/","",$name); + $entry = base64_decode(preg_replace("/_.*/","",$entry)); + + $dn = $this->acl_base_for_current_object($this->SubObjects[$entry]['dn']); + $acl = $this->ui -> get_permissions($dn,"fai/faiScriptEntry") ; + + if(preg_match("/d/",$acl)){ + $once = false; + + $status = $this->SubObjects[$entry]['status']; + if($status == "edited" || $status == "FreshLoaded"){ + $this->SubObjects[$entry]['status']= "delete"; + }else{ + unset($this->SubObjects[$entry]); + } + } + } + } + + /* File download requested */ + if(isset($_GET['getFAIHook'])){ + if(isset($this->SubObjects[base64_decode($_GET['getFAIHook'])])){ + $obj = $this->SubObjects[base64_decode($_GET['getFAIHook'])]; + $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + send_binary_content(stripslashes($obj['FAIscript']),$obj['cn'].".FAIhook"); + } + } + + /* Edit entries via GET */ + if(isset($_GET['act']) && isset($_GET['id'])){ + if($_GET['act'] == "edit" && isset($this->SubObjects[base64_decode($_GET['id'])])){ + $obj = $this->SubObjects[base64_decode($_GET['id'])]; + if($obj['status'] == "FreshLoaded"){ + $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + } + $this->dialog= new $this->subClassName($this->config,$this->dn,$obj); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->acl = $this->acl; + $this->dialog->set_acl_base($this->acl_base_for_current_object($obj['dn'])); + $this->dialog->set_acl_category("fai"); + set_object_info($obj['dn']); + $this->dialog->parent = &$this; + $this->is_dialog=true; + } + } + + ///// Ende new list handling + + /* Add new sub object */ + if(isset($_POST['AddSubObject'])){ + + $c_dn = $this->acl_base_for_current_object($this->dn); + $this->dialog= new $this->subClassName($this->config,"new"); + $this->dialog->set_acl_base($c_dn); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->set_acl_category("fai"); + $this->dialog->parent = &$this; + $this->is_dialog=true; + } + + + /* Save Dialog */ + if(isset($_POST['SaveSubObject'])){ + + /* Perform post check*/ + $this->dialog->save_object(); + + /* Get messages */ + $msgs = $this->dialog->check(); + + /* print errors */ + if(count($msgs)>0){ + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + + /* Get return object */ + $obj = $this->dialog->save(); + if(isset($obj['remove'])){ + + $old_stat = $this->SubObjects[$obj['remove']['from']]['status']; + + /* Depending on status, set new status */ + if($old_stat == "edited" || $old_stat == "FreshLoaded"){ + $this->SubObjects[$obj['remove']['from']]['status'] = "delete"; + }elseif($this->SubObjects[$obj['remove']['from']]['status']=="new"){ + unset($this->SubObjects[$obj['remove']['from']]); + } + $obj['status'] = "new"; + $this->SubObjects[$obj['remove']['to']] = $obj; + unset($this->SubObjects[$obj['remove']['to']]['remove']); + }else{ + if($obj['status'] == "FreshLoaded"){ + $obj['status'] = "edited"; + } + $this->SubObjects[$obj['cn']]=$obj; + } + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + } + } + + /* Sort entries */ + $tmp = $keys = array(); + foreach($this->SubObjects as $key => $entry){ + $keys[$key]=$key; + } + natcasesort($keys); + foreach($keys as $key){ + $tmp[$key]=$this->SubObjects[$key]; + } + $this->SubObjects = $tmp; + + /* Cancel Dialog */ + if(isset($_POST['CancelSubObject'])){ + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + } + + /* Print dialog if $this->dialog is set */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + $display = $this->dialog->execute(); + return($display); + } + + + + /* Divlist added 28.02.2006 + Containing FAIscripts + */ + + $divlist = new divSelectBox("FAIhooks"); + $divlist->setHeight(400); + + foreach($this->getList(true) as $key => $name){ + + $dn= $this->acl_base_for_current_object($name['dn']); + $acl = $this->ui->get_permissions($dn,"fai/faiHookEntry") ; + $act = ""; + + /* Check if this object is freezed, in this case hide the delete icon */ + if(preg_match("/^freeze/", $this->FAIstate)){ + $act .= ""; + }else{ + $act .= ""; + if(preg_match("/d/",$acl)){ + $act .=""; + } + } + + /* Check if we are allowed to use the export button for this object */ + $s_acl = $this->ui->get_permissions($dn,"fai/faiHookEntry","FAIscript") ; + if(($this->SubObjects[$key]['status'] == "new") || ($this->SubObjects[$key]['dn'] == "new") || !preg_match("/r/",$s_acl)){ + $down = ""; + }else{ + $down = " + "._("Download")." + "; + } + + /* Check if we are allowed to view the object */ + $s_acl = $this->ui->get_permissions($dn,"fai/faiHookEntry","cn") ; + if(preg_match("/r/",$s_acl)){ + + $edit_link = "".$name['name'].""; + $divlist->AddEntry(array( array("string"=>$edit_link), + array("string"=>$down , "attach" => "style='width:20px;'"), + array("string"=>str_replace("%s",base64_encode($key),$act), + "attach"=>"style='border-right: 0px;width:50px;text-align:right;'"))); + } + } + $smarty->assign("Entry_divlist",$divlist->DrawList()); + /* Divlist creation complete + */ + + $smarty->assign("SubObjects",$this->getList()); + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,stripslashes($this->$attrs)); + }else{ + $smarty->assign($attrs,($this->$attrs)); + } + } + + $tmp = $this->plInfo(); + + $c_dn = $this->acl_base_for_current_object($this->dn); + $smarty->assign("sub_object_is_addable", preg_match("/c/",$this->ui->get_permissions($c_dn,"fai/faiHookEntry")) && !preg_match('/^freeze/', $this->FAIstate)); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $display.= $smarty->fetch(get_template_path('faiHook.tpl', TRUE)); + return($display); + } + + /* Generate listbox friendly SubObject list + */ + function getList($use_dns=false){ + $a_return=array(); + foreach($this->SubObjects as $obj){ + if($obj['status'] != "delete"){ + + $cn = stripslashes($obj['cn']); + $desc = ""; + + if((isset($obj['description']))&&(!empty($obj['description']))){ + $desc = " [".stripslashes($obj['description'])."]"; + } + + if($use_dns){ + $a_return[$obj['cn']]['name']= $cn.$desc; + $a_return[$obj['cn']]['dn']= $obj['dn']; + }else{ + $a_return[$obj['cn']] = $cn.$desc; + } + } + } + return($a_return); + } + + + /* Delete me, and all my subtrees + */ + function remove_from_parent() + { + if($this->acl_is_removeable()){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $release = $this->parent->parent->fai_release; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $this->dn); + new log("remove","fai/".get_class($this),$use_dn,$this->attributes); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + + foreach($this->SubObjects as $name => $obj){ + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $obj['dn']); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + } + $this->handle_post_events("remove"); + } + } + + + /* Save data to object + */ + function save_object() + { + if((isset($_POST['FAIhook_posted'])) && !preg_match("/^freeze/", $this->FAIstate)){ + plugin::save_object(); + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Ensure that we do not overwrite an allready existing entry + */ + if($this->is_new){ + $release = $this->parent->parent->fai_release; + $new_dn= 'cn='.$this->cn.",".get_ou('faiHookRDN').get_ou('faiBaseRDN').$release; + $res = faiManagement::check_class_name("FAIhook",$this->cn,$new_dn); + if(isset($res[$this->cn])){ + $message[] = msgPool::duplicated(_("Name")); + } + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + $ldap = $this->config->get_ldap_link(); + + FAI::prepare_to_save_FAI_object($this->dn,$this->attrs); + + if($this->initially_was_account){ + new log("modify","fai/".get_class($this),$this->dn,$this->attributes); + }else{ + new log("create","fai/".get_class($this),$this->dn,$this->attributes); + } + + $ldap->cd($this->dn); + + /* Prepare FAIscriptEntry to write it to ldap + * First sort array. + * Because we must delete old entries first. + * After deletion, we perform add and modify + */ + $Objects = array(); + + /* We do not need to save untouched objects */ + foreach($this->SubObjects as $name => $obj){ + if($obj['status'] != "FreshLoaded"){ + $Objects[$name] = $obj; + } + } + + foreach($Objects as $name => $obj){ + + foreach($this->sub64coded as $codeIt){ + $obj[$codeIt]=base64_encode(stripslashes($obj[$codeIt])); + } + + $tmp = array(); + $attributes = array_merge($this->sub_Load_Later,$this->subAttributes); + foreach($attributes as $attrs){ + if(!isset($obj[$attrs])) continue; + if($obj[$attrs] == ""){ + $obj[$attrs] = array(); + } + if(!is_array($obj[$attrs])){ + $tmp[$attrs] = stripslashes($obj[$attrs]); + }else{ + $tmp[$attrs] = $obj[$attrs]; + } + } + + $tmp['objectClass'] = $this->subClasses; + + $sub_dn = "cn=".$obj['cn'].",".$this->dn; + + if($obj['status']=="new"){ + $ldap->cat($sub_dn,array("objectClass")); + if($ldap->count()){ + $obj['status']="edited"; + } + } + + /* Tag object */ + $this->tag_attrs($tmp, $sub_dn, $this->gosaUnitTag); + + if($obj['status'] == "delete"){ + FAI::prepare_to_save_FAI_object($sub_dn,array(),true); + $this->handle_post_events("remove"); + }elseif($obj['status'] == "edited"){ + FAI::prepare_to_save_FAI_object($sub_dn,$tmp); + $this->handle_post_events("modify"); + }elseif($obj['status']=="new"){ + FAI::prepare_to_save_FAI_object($sub_dn,$tmp); + $this->handle_post_events("add"); + } + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_base($source['dn'],"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($source['dn'], '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['status'] = "edited"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $objects = $this->get_object_attributes($objects,$this->sub_Load_Later); + $this->SubObjects[$objects['cn']] = $objects; + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Hook"), + "plDescription" => _("FAI hook"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 20, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name")." ("._("Read only").")", + "description" => _("Description")) + )); + } + + + /*! \brief Used for copy & paste. + Returns a HTML input mask, which allows to change the cn of this entry. + @param Array Array containing current status && a HTML template. + */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn", htmlentities($this->cn)); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + /*! \brief Used for copy & paste. + Some entries must be renamed to avaoid duplicate entries. + */ + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = get_post('cn'); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiHookEntry.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiHookEntry.inc new file mode 100644 index 000000000..09b5d8dbf --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiHookEntry.inc @@ -0,0 +1,205 @@ +orig_cn= $object['cn']; + $this->dn=$object['dn']; + foreach($object as $name=>$value){ + $oname = $name; + $this->$oname=$value; + } + }elseif(is_array($object)){ + if(count($object)){ + $this->orig_cn= $object['cn']; + $this->dn=$object['dn']; + foreach($object as $name=>$value){ + $oname = $name; + $this->$oname=$value; + } + }else{ + + $this->status = "new"; + $this->orig_cn = false; + } + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty = get_smarty(); + $display = ""; + + if(isset($_POST['ImportUpload'])){ + if(($_FILES['ImportFile']['error']!=0)){ + msg_dialog::display(_("Error"), msgPool::incorrectUpload(), ERROR_DIALOG); + }else + if(($_FILES['ImportFile']['size']==0)){ + msg_dialog::display(_("Error"), msgPool::incorrectUpload(_("file is empty")), ERROR_DIALOG); + }else{ + $str = utf8_encode(file_get_contents($_FILES['ImportFile']['tmp_name'])); + $this->FAIscript = addslashes ($str); + } + } + + /* File download requested */ + if(isset($_GET['getFAIHook'])){ + send_binary_content(stripslashes($this->FAIscript),$this->cn.".FAIhook"); + } + + /* Create download button*/ + if($this->dn != "new" && $this->acl_is_readable("FAIscript")){ + $smarty->assign("DownMe"," + "._("Download")." + "); + }else{ + $smarty->assign("DownMe",""); + } + + $used_tasks = $this->parent->getUsedFAItask($this->cn); + $tasks = $this->tasks; + foreach($this->tasks as $id => $task){ + if(in_array($task,$used_tasks)){ + unset($tasks[$id]); + } + } + $smarty->assign("tasks", $tasks); + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,(stripslashes($this->$attrs))); + }else{ + $smarty->assign($attrs,($this->$attrs)); + } + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $acl = $this->getacl($name, preg_match("/freeze/",$this->FAIstate)); + $smarty->assign($name."ACL",$acl); + } + + if(get_magic_quotes_gpc()){ + $smarty->assign("FAIscript" , htmlentities(stripslashes($this->FAIscript))); + }else{ + $smarty->assign("FAIscript" , htmlentities($this->FAIscript)); + } + $smarty->assign("freeze" , preg_match("/freeze/",$this->FAIstate)); + $display.= $smarty->fetch(get_template_path('faiHookEntry.tpl', TRUE)); + return($display); + } + + /* Save data to object */ + function save_object() + { + if((isset($_POST['SubObjectFormSubmitted'])) && !preg_match("/^freeze/", $this->FAIstate)){ + foreach($this->attributes as $attrs){ + if($this->acl_is_writeable($attrs)){ + if(isset($_POST[$attrs])){ + $this->$attrs = $_POST[$attrs]; + }else{ + $this->$attrs = ""; + } + } + } + } + } + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(isset($this->parent->SubObjects[$this->cn]) && $this->cn != $this->orig_cn){ + $message[]= msgPool::duplicated(_("Name")); + } + + $c = trim($this->cn); + if($c == ""){ + $message[] = msgPool::required(_("Name")); + } + if(preg_match("/[^a-z0-9_\-]/i",$c)){ + $message[] = msgPool::invalid(_("Name"),$c,"/[a-z0-9_\-]/i"); + } + + $s = trim($this->FAIscript); + if($s == ""){ + $message[]= msgPool::required(_("Script")); + } + + return ($message); + } + + function save() + { + $tmp=array(); + foreach($this->attributes as $attrs){ + $tmp[$attrs] = $this->$attrs; + } + + /* Strip out dos newlines */ + $tmp['FAIscript']= strtr($this->FAIscript, array("\x0D" => "")); + + if(($this->orig_cn)&&($tmp['cn']!=$this->orig_cn)){ + $tmp['remove']['from'] = $this->orig_cn; + $tmp['remove']['to'] = $tmp['cn']; + } + + $tmp['dn'] = $this->dn; + $tmp['status'] = $this->status; + return($tmp); + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Hook entry"), + "plDescription" => _("FAI hook entry"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 21, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name"), + "description" => _("Description"), + "FAItask" => _("Task"), + "FAIscript" => _("FAI script")) + )); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiManagement.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiManagement.inc new file mode 100644 index 000000000..dc7bac243 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiManagement.inc @@ -0,0 +1,1423 @@ +dn = ""; + $this->config = $config; + $this->ui = $ui; + + /* Check if the opsi plugin is installed. + */ + if(class_available("opsi")){ + $this->opsi = new opsi($this->config);; + } + + /* Creat dialog object */ + $this->DivListFai = new divListFai($this->config,$this); + + /* Copy & Paste handler */ + if ($this->config->boolValueIsTrue("main", "copyPaste")){ + $this->CopyPasteHandler= new CopyPasteHandler($this->config); + } + + /* Set default release + */ + $this->acl_base = $this->config->current['BASE']; + $this->fai_base = get_ou("faiBaseRDN").$this->config->current['BASE']; + + if(!session::is_set("fai_filter")){ + + /* Set intial release */ + $rel = $config->search("faiManagement","DEFAULTFAIRELEASE",array("menu")); + $rels = array_flip($this->getBranches()); + if(isset($rels[$rel])){ + $rel = $rels[$rel]; + }else{ + $rel = $this->fai_base; + } + + session::set("fai_filter",array("fai_release" => $rel)); + } + + $fai_filter = session::get("fai_filter"); + $this->fai_release = $fai_filter['fai_release']; + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Initialise vars and smarty */ + $smarty = get_smarty(); + $smarty->assign("BranchName",""); + + $display = ""; + $s_action = ""; + $s_entry = ""; + $no_save = FALSE; // hide Apply / Save buttons + + /* If an entry was locked, these vars will be stored in a session to allow direct edit */ + session::set('LOCK_VARS_TO_USE',array("/^edit_freeze_entry$/","/^edit_entry$/","/^id$/","/^entry_edit_/","/^entry_delete_/","/^item_selected/","/^remove_multiple_fai_objects/","/^menu_action/","/^faiGroupHandle_apply$/")); + + /**************** + Handle posts + ****************/ + + /* Check ImageButton posts + * Create new tab ich new_xx is posted + */ + $posts = array( "/^remove_branch/" =>"remove_branch", + "/^branch_branch/" =>"branch_branch", + "/^freeze_branch/" =>"freeze_branch", + + "/^create_partition/i" =>"new_partition", + "/^create_script/i" =>"new_script", + "/^create_hook/i" =>"new_hook", + "/^create_variable/i" =>"new_variable", + "/^create_template/i" =>"new_template", + "/^create_package/i" =>"new_package", + "/^create_profile/i" =>"new_profile", + + "/^edit_continue$/" => "select_class_name_finished", + + "/^group_copy/" => "group_copy", + "/^group_cut/" => "group_cut", + "/^group_edit/" => "group_edit", + "/^group_remove/" => "group_remove"); + foreach($_POST as $name => $value){ + foreach($posts as $reg => $act ){ + if(preg_match($reg,$name)){ + $s_action = $act; + $s_entry = ltrim(preg_replace($reg,"",$name),"_"); + $s_entry = preg_replace("/_.*$/","",$s_entry); + break; + } + } + if(preg_match("/^edit_[0-9]*_.*$/",$name)){ + $i_entryID = preg_replace("/^edit_([0-9]*)_.*$/i","\\1",$name); + $s_entryType= preg_replace("/^edit_[0-9]*_([^_]*)_.*$/i","\\1",$name); + $s_action = "edit"; + } + } + + if(isset($_GET['act']) && $_GET['act'] == "edit" && isset($_GET['id'])){ + if(isset($this->objects[$_GET['id']])){ + $s_action = "group_edit"; + $s_entry = $_GET['id']; + } + } + + foreach(array("freeze_branch" => "freeze_branch", + "branch_branch" => "branch_branch", + "remove_branch" => "remove_branch") as $from => $to){ + if(isset($_GET['act']) && $_GET['act'] == $from){ + $s_action = $to; + } + } + + /* handle C&P from layer menu */ + if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ + $s_action = "copy_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){ + $s_action = "cut_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){ + $s_action = "editPaste"; + } + + + if((isset($_POST['CancelBranchName'])) || (isset($_POST['CloseIFrame']))){ + $this->dispNewBranch = false; + $this->dispNewFreeze = false; + } + + /* Create options */ + if(isset($_POST['menu_action']) && preg_match("/^Create_/",$_POST['menu_action'])){ + $s_action = "new_".preg_replace("/^Create_/","",$_POST['menu_action']);; + $s_entry = preg_replace("/^Create_/","",$_POST['menu_action']); + } + + /* handle remove from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){ + $s_action = "del_multiple"; + } + + + if(!empty($s_action)){ + $this->no_save = $no_save; + } + + + /******************* + Opsi extension + *******************/ + + if($this->opsi instanceof opsi && $this->opsi->enabled()){ + if($s_action == "opsi_edit"){ + $name = $this->objects[$s_entry]['cn']; + $cfg = $this->opsi->get_product_properties($name); + $this->dialog = new tabs_opsiProdConfig($this->config, $this->config->data['TABS']['OPSIPRODCONFIG'],"","opsi"); + if(isset($this->dialog->by_object['opsiProperties'])){ + $this->dialog->by_object['opsiProperties']->set_cfg($cfg); + $this->dialog->by_object['opsiProperties']->set_product($name); + }else{ + trigger_error("Unknown tab, please check config."); + } + } + if($this->dialog instanceof tabs_opsiProdConfig && isset($_POST['cancel_properties'])){ + $this->dialog = NULL; + } + if($this->dialog instanceof tabs_opsiProdConfig && isset($_POST['save_properties'])){ + $this->dialog->save_object(); + $op = $this->dialog->by_object['opsiProperties']; + $name = $op->get_product(); + $cfg = $op->get_cfg(); + $this->opsi->set_product_properties($name,$cfg); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + }else{ + $this->dialog = NULL; + } + } + if($this->dialog instanceof tabs_opsiProdConfig){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + } + + + /**************** + Delete a group of FAI objects + (Group = same name & different classes) + ****************/ + + if($s_action == "group_remove"){ + if(isset($this->objects[$s_entry])){ + $group = $this->objects[$s_entry]; + + /* Do not allow to remove opsi products */ + foreach(array("opsi_netboot","opsi_local") as $type){ + if(isset($group[$type])) unset($group[$type]); + } + if(count($group)){ + $this->dialog = new faiGroupHandle($group,"remove"); + } + } + }elseif($s_action == "group_edit"){ + if(isset($this->objects[$s_entry])){ + $group = $this->objects[$s_entry]; + $this->dialog = new faiGroupHandle($group,"edit"); + } + }elseif($s_action == "group_cut"){ + if(isset($this->objects[$s_entry])){ + $group = $this->objects[$s_entry]; + $this->dialog = new faiGroupHandle($group,"cut"); + } + }elseif($s_action == "group_copy"){ + if(isset($this->objects[$s_entry])){ + $group = $this->objects[$s_entry]; + $this->dialog = new faiGroupHandle($group,"copy"); + } + } + if($this->dialog instanceOf faiGroupHandle){ + $this->dialog->save_object(); + if($this->dialog->is_open()){ + return($this->dialog->execute()); + }elseif($this->dialog->is_canceled() || isset($_POST['cancel_lock'])){ + $this->dialog = FALSE; + }else{ + if(!count($this->dialog->get_selected())){ + $this->dialog = FALSE; + } + } + } + + /******************** + Copy & Paste + ********************/ + + /* Display the copy & paste dialog, if it is currently open */ + $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); + if($ret){ + return($ret); + } + + + /******************** + Delete MULTIPLE entries confirmed + ********************/ + + /* Confirmation for deletion has been passed. Users should be deleted. */ + if (isset($_POST['delete_multiple_fai_object_confirm'])){ + + /* Find out more about the object type */ + $ldap = $this->config->get_ldap_link(); + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + $ldap->cat($dn, array('objectClass')); + $attrs = $ldap->fetch(); + $type = $this->get_type($attrs); + $acl = $this->ui->get_permissions($dn,"fai/".$type[1]); + if(preg_match("/d/",$acl)){ + $this->dialog = new $type[0]($this->config, $this->config->data['TABS'][$type[2]], $dn,"fai"); + $this->dialog->parent = &$this; + $this->dialog->set_acl_base($dn); + $this->dialog->by_object[$type[1]]->remove_from_parent (); + $this->dialog= FALSE; + $to_del = FAI::clean_up_releases($dn); + FAI::save_release_changes_now(); + foreach($to_del as $dn){ + $ldap->rmdir_recursive($dn); + } + } else { + + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG); + new log("security","fai/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + $this->dialog = FALSE; + } + + + /**************** + Delete confirme dialog + ****************/ + + if ($s_action=="del_multiple" || + $this->dialog instanceOf faiGroupHandle && $this->dialog->get_mode() == "remove"){ + + /* Collect objects to delete and check if objects are freezed + */ + $dns = array(); + $errors = ""; + $this->dns = array(); + if($this->dialog instanceOf faiGroupHandle){ + $to_delete = $this->dialog->get_selected(); + }else{ + $ids = $this->list_get_selected_items(); + $to_delete = array(); + foreach($ids as $id){ + $to_delete = array_merge($to_delete,$this->objects[$id]); + } + } + + foreach($to_delete as $obj){ + if(isset($obj['type']) && in_array($obj['type'],array("opsi_netboot","opsi_local"))){ + continue; + } + if(isset($obj['FAIstate']) && preg_match('/^freeze/', $obj['FAIstate'])){ + $errors .= $obj['cn'].", "; + }else{ + $this->dns[] = $obj['dn']; + } + } + + if($errors != ""){ + msg_dialog::display(_("Branch locked"),sprintf(_("The following entries are locked, you can't remove them %s."), + "

".trim($errors,", ")),INFO_DIALOG); + } + + /* Check locking + */ + if(count($this->dns)){ + if ($user= get_multiple_locks($this->dns)){ + return(gen_locked_message($user,$this->dns)); + } + if(count($this->dns)){ + $dns_names = array(); + foreach($this->dns as $dn){ + add_lock ($dn, $this->ui->dn); + $dns_names[] = LDAP::fix($dn); + } + $smarty->assign("warning",msgPool::deleteInfo($dns_names,_("FAI object"))); + $smarty->assign("multiple", true); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + + /******************** + Delete MULTIPLE entries Canceled + ********************/ + + /* Remove lock */ + if(isset($_POST['delete_multiple_fai_object_cancel'])){ + $this->remove_lock(); + $this->dns = array(); + } + + /**************** + Edit entry + ****************/ + + if($s_action == "edit" || $this->dialog instanceOf faiGroupHandle && $this->dialog->get_mode() == "edit"){ + + $entry = array(); + if($this->dialog instanceOf faiGroupHandle){ + $entries = $this->dialog->get_selected(); + $entry = array_pop($entries); + }elseif(isset($this->objects[$i_entryID][$s_entryType])){ + $entry = $this->objects[$i_entryID][$s_entryType]; + } + + if(count($entry)){ + $a_setup = $this->get_type($entry); + + /* Special handling for opsi products + */ + + if(in_array($entry['type'],array("opsi_local","opsi_netboot")) && + $this->opsi instanceof opsi && $this->opsi->enabled() ){ + + $name = $entry['cn']; + $cfg = $this->opsi->get_product_properties($name); + $this->dialog = new tabs_opsiProdConfig($this->config, $this->config->data['TABS']['OPSIPRODCONFIG'],"","opsi"); + if(isset($this->dialog->by_object['opsiProperties'])){ + $this->dialog->by_object['opsiProperties']->set_cfg($cfg); + $this->dialog->by_object['opsiProperties']->set_product($name); + }else{ + trigger_error("Unknown tab, please check config."); + } + }elseif(count($a_setup)){ + + $this->dn = $entry['dn']; + /* Check locking, save current plugin in 'back_plugin', so the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return(gen_locked_message ($user, $this->dn, TRUE)); + } + add_lock ($this->dn, $this->ui->dn); + + $this->dialog = new $a_setup[0]($this->config,$this->config->data['TABS'][$a_setup[2]],$this->dn,"fai"); + $this->dialog->parent = &$this; + $this->dialog->by_object[$a_setup[1]]->FAIstate = $entry['FAIstate']; + $this->dialog->set_acl_base($this->dn); + $this->is_dialog = true; + set_object_info($this->dn); + } + } + } + + + /* Branch handling + 09.01.2006 + */ + + /**************** + Remove branch + ****************/ + + /* Remove branch + */ + if($s_action == "remove_branch"){ + $base= $this->fai_release; + + /* Check if we have a post remove method configured + * else skip this operation. (Skip:Button in the ui should be disabled in this case too) + */ + if("" != $this->config->search("faiManagement", "POSTREMOVE",array('menu','tabs'))){ + /* Load permissions for selected 'dn' and check if + we're allowed to remove this 'dn' */ + if(preg_match("/d/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){ + $smarty->assign("release_hidden",base64_encode($this->fai_release)); + $smarty->assign("info", msgPool::deleteInfo(LDAP::fix($this->fai_release),_("FAI branch/freeze"))); + return($smarty->fetch(get_template_path('remove_branch.tpl',TRUE))); + } else { + msg_dialog::display(_("Permission error"), _("You have no permission to delete this release!"), ERROR_DIALOG); + } + } + } + + + /**************** + Remove branch confirmed + ****************/ + + if(isset($_POST['delete_branch_confirm'])){ + + /* Check if we have a post remove method configured + * else skip this operation. (Skip:Button in the ui should be disabled in this case too) + */ + if("" != $this->config->search("faiManagement", "POSTREMOVE",array('menu','tabs'))){ + + if(!isset($_POST['release_hidden']) || base64_decode($_POST['release_hidden']) != $this->fai_release){ + msg_dialog::display(_("Warning"),_("Release remove aborted because the release name check failed!")); + }else{ + + $bb = $this->fai_release; + if(!isset($ldap)){ + $ldap = $this->config->get_ldap_link(); + } + + $br = $this->getBranches(); + + if(isset($br[$bb]) && preg_match("/d/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){ + $name = $br[$bb]; + + $ldap->cd($bb); + $ldap->recursive_remove(); + $ldap->cd(preg_replace('/,'.preg_quote(get_ou('faiBaseRDN'), '/').'/', ','.get_ou('applicationRDN'), $bb)); + $ldap->recursive_remove(); + $ldap->cd(preg_replace('/,'.preg_quote(get_ou('faiBaseRDN'), '/').'/', ','.get_ou('mimetypeRDN'), $bb)); + $ldap->recursive_remove(); + + /* Search for all groups with configured application menus. + - First search all groups, to ensure that we only remove entries form whithin groups. + - The search für menu configuration for the specified release and collect all those dns. + - Remove entries + */ + $release_ou = preg_replace("/".preg_quote(get_ou("faiBaseRDN"), '/').".*$/","",$bb); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(objectClass=posixGroup)",array("dn")); + + /* Collect all group dns + */ + $groups = array(); + while($attrs = $ldap->fetch()){ + $groups[] = $attrs['dn']; + } + + /* Collect all group menu release dns that match the release we have removed + */ + $dns = array(); + foreach($groups as $dn){ + $ldap->cd($dn); + $ldap->search("(objectClass=FAIbranch)",array("dn")); + while($attrs = $ldap->fetch()){ + if(preg_match("/^".preg_quote($release_ou, '/')."/",$attrs['dn'])){ + $dns[] = $attrs['dn']; + } + } + } + + /* Finally remove collected release dns + */ + foreach($dns as $dn){ + $ldap->cd($dn); + $ldap->recursive_remove(); + } + + /* Post remove */ + $this->fai_release = $this->fai_base; + $this->lock_name = $name; + $this->lock_dn = $bb; + $this->postremove(); + + $fai_filter = session::get("fai_filter"); + $fai_filter['fai_release'] = $this->fai_release; + session::set("fai_filter",$fai_filter); + + new log("remove","fai/".get_class($this),$br[$bb],array(),"Release removed"); + } + } + } + } + + + /**************** + Create a new branch "insert Name" + ****************/ + + if((isset($_POST['UseBranchName']))&&(($this->dispNewBranch)||($this->dispNewFreeze))){ + session::set('LASTPOST',$_POST); + + if($this->dispNewBranch){ + $type = "branch"; + }else{ + $type = "freeze"; + } + + /* Check branch name */ + $name = $_POST['BranchName']; + $is_ok = true; + $smarty->assign("BranchName",$name); + $base= $this->fai_base; + + /* Check used characters */ + if(!preg_match("/^[0-9a-z\.]*$/",$name)){ + msg_dialog::display(_("Error"), msgPool::invalid(_("Name"),$name,"/[0-9a-z\.]/"), ERROR_DIALOG); + $is_ok = false; + } + + /* Check if this name is already in use */ + if(!$this->CheckNewBranchName($_POST['BranchName'],$this->fai_release)){ + msg_dialog::display(_("Error"), msgPool::duplicated(_("Name")), ERROR_DIALOG); + $is_ok = false; + } + + if($is_ok){ + + if(session::is_set('LASTPOST')){ + $LASTPOST = session::get('LASTPOST'); + }else{ + $LASTPOST = array(); + } + $LASTPOST['base'] = $base; + $LASTPOST['type'] = $type; + session::set('LASTPOST',$LASTPOST); + $smarty->assign("iframe", true); + $smarty->assign("plugID", $_GET['plug']); + $display = $smarty->fetch(get_template_path('faiNewBranch.tpl', TRUE, dirname(__FILE__))); + return($display); + } + } + + + /**************** + Create a new branch + ****************/ + + if(isset($_GET['PerformBranch'])){ + + if(!preg_match("/c/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){ + msg_dialog::display(_("Permission error"), msgPool::permCreate(_("Branch")), ERROR_DIALOG); + }else{ + + /* In order to see error messages we have to reset the error handler. + Due to the exit(); + */ + restore_error_handler(); + + /* Create it know */ + $this->dispNewBranch = false; + $this->dispNewFreeze = false; + + $LASTPOST = session::get('LASTPOST'); + $base = $LASTPOST['base']; + $_POST = session::get('LASTPOST'); + $name = $_POST['BranchName']; + + $type = $LASTPOST['type']; + $ldap = $this->config->get_ldap_link(); + + $baseToUse = $base; + if($this->fai_release != $this->fai_base){ + $baseToUse = $this->fai_release; + } + + /* Create new Release name to be able to set faidebianRelease for FAIpackageList */ + + $CurrentReleases = $this->getBranches(); + $NewReleaseName = $name; + if(isset($CurrentReleases[$this->fai_release])) { + if($this->fai_release != $this->fai_base){ + $NewReleaseName = $CurrentReleases[$this->fai_release]."/".$name; + $NewReleaseName = preg_replace("#\/#","/",$NewReleaseName); + }else{ + $NewReleaseName = $name; + } + } + + $appsrc = preg_replace("/".preg_quote(get_ou('faiBaseRDN'), '/')."/",get_ou('applicationRDN'),$baseToUse); + $appdst = preg_replace("/".preg_quote(get_ou('faiBaseRDN'), '/')."/",get_ou('applicationRDN'),"ou=".$name.",".$baseToUse) ; + + $mimesrc = preg_replace("/".preg_quote(get_ou('faiBaseRDN'), '/')."/",get_ou('mimetypeRDN'),$baseToUse); + $mimedst = preg_replace("/".preg_quote(get_ou('faiBaseRDN'), '/')."/",get_ou('mimetypeRDN'),"ou=".$name.",".$baseToUse) ; + + /* Check if source depeartments exist */ + foreach(array($baseToUse,$appsrc,$mimesrc) as $dep){ + $ldap->cd($this->config->current['BASE']); + $ldap->cat($dep); + if(!$ldap->count()){ + $ldap->create_missing_trees($dep); + } + } + + /* Print header to have styles included */ + echo ' + + + + + + + + '; + + new log("create","fai/".get_class($this),$NewReleaseName,array(),"New $type created"); + + /* Duplicate group application releases + */ + FAI::copy_FAI_group_releases($CurrentReleases[$this->fai_release],$name,$type); + + /* Duplicate applications + */ + $ldap->cat($appsrc,array("dn")) ; + if($ldap->count()){ + $ldap->cd ($appdst); + $ldap->recursive_remove(); + FAI::copy_FAI_resource_recursive($appsrc,$appdst,$NewReleaseName,$type,true); + } + + /* Duplicate mime types + */ + $ldap->cat($mimesrc,array("dn")) ; + if($ldap->count()){ + $ldap->cd ($mimedst); + $ldap->recursive_remove(); + FAI::copy_FAI_resource_recursive($mimesrc,$mimedst,$NewReleaseName,$type,true); + } + + $attr = array(); + $attr['objectClass'] = array("organizationalUnit","FAIbranch"); + $attr['ou'] = $name; + $attr['FAIstate'] = $type; + $ldap->cd($this->config->current['BASE']); + $ldap->cd("ou=".$name.",".$baseToUse); + $ldap->cat("ou=".$name.",".$baseToUse); + if($ldap->count()){ + $ldap->modify($attr); + }else{ + $ldap->add($attr); + } + + /* Duplicate fai objects + */ + // $ldap->cd ("ou=".$name.",".$baseToUse); + // $ldap->recursive_remove(); + // FAI::copy_FAI_resource_recursive($baseToUse,"ou=".$name.",".$baseToUse,$NewReleaseName,$type,true); + + echo "
+
+ +
"; + + echo "" ; + + /* Print footer to have valid html */ + echo ""; + + $this->dispNewFreeze = false; + + /* Postcreate */ + + /* Assign possible attributes */ + $this->lock_type = $type; + $this->lock_name = $name; + $this->lock_dn = $baseToUse; + $this->postcreate(); + + + /* Send daemon event to reload the fai release database + */ + if(class_available("DaemonEvent") && class_available("gosaSupportDaemon")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + if(isset($events['TRIGGERED']['DaemonEvent_recreate_fai_release_db'])){ + $evt = $events['TRIGGERED']['DaemonEvent_recreate_fai_release_db']; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $tmp->add_targets(array("GOSA")); + $o_queue = new gosaSupportDaemon(); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + }else{ + trigger_error("Unknown class DaemonEvent / gosaSupportDaemon"); + msg_dialog::display(_("Fatal error"), + "Daemon events called but classes where not accessible, DaemonEvent gosaSupportDaemon", + FATAL_ERROR_DIALOG); + } + exit(); + } + } + + /**************** + Display dialog to enter new Branch name + ****************/ + + /* Check if we have a post create method configured + * else skip this operation. (Skip:Button in the ui should be disabled in this case too) + */ + if("" != $this->config->search("faiManagement", "POSTCREATE",array('menu','tabs'))){ + if(($s_action == "branch_branch")||($this->dispNewBranch)){ + if(!preg_match("/c/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){ + msg_dialog::display(_("Permission error"), msgPool::permCreate(_("Branch")), ERROR_DIALOG); + }else{ + $this->dispNewBranch=true; + $smarty->assign("iframe",false); + $display .= $smarty->fetch(get_template_path('faiNewBranch.tpl', TRUE, dirname(__FILE__))); + return($display); + } + } + } + + + /**************** + Display dialog to enter new Freeze name + ****************/ + + /* Check if we have a post create method configured + * else skip this operation. (Skip:Button in the ui should be disabled in this case too) + */ + if("" != $this->config->search("faiManagement", "POSTCREATE",array('menu','tabs'))){ + if(($s_action == "freeze_branch")||($this->dispNewFreeze)){ + if(!preg_match("/c/",$this->ui->get_permissions($this->acl_base,"fai/faiManagement"))){ + msg_dialog::display(_("Permission error"), msgPool::permCreate(_("Branch")), ERROR_DIALOG); + }else{ + $this->dispNewFreeze = true; + $smarty->assign("iframe",false); + $display .= $smarty->fetch(get_template_path('faiNewBranch.tpl', TRUE, dirname(__FILE__))); + return($display); + } + } + } + + + /**************** + Create a new object + ****************/ + + $types = array( "new_partition" => "FAIpartitionTable", + "new_script" => "FAIscript", + "new_hook" => "FAIhook", + "new_variable" => "FAIvariable", + "new_template" => "FAItemplate", + "new_package" => "FAIpackageList"); + $types_i18n = array( "new_partition" => _("partition table"), + "new_script" => _("script"), + "new_hook" => _("hook"), + "new_variable" => _("variable"), + "new_template" => _("template"), + "new_package" => _("package list")); + + if(isset($types[$s_action])){ + + $type_acl_mapping = array( + "FAIpartitionTable" => "faiPartitionTable", + "FAIpackageList" => "faiPackage", + "FAIscript" => "faiScript", + "FAIvariable" => "faiVariable", + "FAIhook" => "faiHook", + "FAIprofile" => "faiProfile", + "FAItemplate" => "faiTemplate"); + + $acl = $this->ui->get_permissions($this->acl_base,"fai/".$type_acl_mapping[$types[$s_action]]); + if(preg_match("/c/",$acl)){ + $this->dialog = new askClassName($this->config,$this->dn,$this->ui,$types[$s_action]); + $this->dialog->parent = &$this; + }else{ + msg_dialog::display(_("Permission error"), sprintf(_("You have no permission to create a new %s!"), $types_i18n[$s_action]), ERROR_DIALOG); + } + } + + /* New Profile */ + if($s_action == "new_profile"){ + $this->dn = "new" ; + + $acl = $this->ui->get_permissions($this->acl_base,"fai/faiProfile"); + if(preg_match("/c/",$acl)){ + $a_setup= $this->get_type(array("objectClass"=>array("FAIprofile"))); + $this->dialog = new $a_setup[0]($this->config,$this->config->data['TABS'][$a_setup[2]],$this->dn,"fai"); + $this->dialog->set_acl_base($this->base); + $this->dialog->parent = &$this; + + $this->is_dialog = false; + }else{ + msg_dialog::display(_("Permission error"), sprintf(_("You have no permission to create a new %s!"), _("profile")), ERROR_DIALOG); + } + } + + + /**************** + Get name from ask_class_name dialog + ****************/ + + if($s_action == "select_class_name_finished"){ + $this->dialog->save_object(); + if(count($this->dialog->check())!=0){ + foreach($this->dialog->check() as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }elseif(isset($this->dialog->objectClass)){ + $this->dn = "new" ; + $a_setup= $this->get_type(array("objectClass"=>array($this->dialog->objectClass))); + $name = $this->dialog->save(); + + if(class_exists($a_setup[0])){ + $this->dialog = new $a_setup[0]($this->config,$this->config->data['TABS'][$a_setup[2]],$this->dn,"fai"); + $this->dialog->set_acl_base($this->base); + $this->dialog->by_object[$a_setup[1]]->cn = $name; + $this->dialog->parent = &$this; + $this->is_dialog = true; + } + } + } + + + /**************** + Cancel dialogs + ****************/ + + if(isset($_POST['edit_cancel'])){ + $this->dialog=FALSE; + $this->is_dialog = false; + set_object_info(); + $this->remove_lock(); + } + + + /**************** + Handle opsi dialogs + ****************/ + + if($this->dialog instanceof tabs_opsiProdConfig && isset($_POST['cancel_properties'])){ + $this->dialog = NULL; + } + if($this->dialog instanceof tabs_opsiProdConfig && isset($_POST['save_properties'])){ + $this->dialog->save_object(); + $op = $this->dialog->by_object['opsiProperties']; + $name = $op->get_product(); + $cfg = $op->get_cfg(); + $this->opsi->set_product_properties($name,$cfg); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + }else{ + $this->dialog = NULL; + } + } + if($this->dialog instanceof tabs_opsiProdConfig){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + + /**************** + Save sub dialogs + ****************/ + + /* This check if the given tab could be saved + * If it was possible to save it, remove dialog object. + * If it wasn't possible, show errors and keep dialog. + */ + if((isset($_POST['edit_finish']) || isset($_POST['edit_apply'])) && (isset($this->dialog->config))){ + $this->dialog->save_object(); + $msgs= $this->dialog->check(); + if(count($msgs)!=0){ + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $this->dialog->save(); + FAI::save_release_changes_now(); + if (!isset($_POST['edit_apply'])){ + $this->remove_lock(); + $this->dialog=FALSE; + $this->is_dialog=false; + set_object_info(); + }else{ + + /* Reinitialize tab */ + if($this->dialog instanceof tabs){ + $this->dialog->re_init(); + } + } + } + } + + + /**************** + Display currently open dialog + ****************/ + + /* If dialog is set, but $this->is_dialog==false, then + * only the "abort" button is shown, this are dialogs that must not be saved. + * If is_dialog == true, we are currently editing tab objects. + * Here we need both, save and cancel + */ + + if(is_object($this->dialog)){ + $display .= $this->dialog->execute(); + /* Don't show buttons if tab dialog requests this */ + + if(isset($this->dialog->current)){ + + $obj = $this->dialog->by_object[$this->dialog->current]; + + if(($this->dialog instanceOf tabs || $this->dialog instanceOf plugin) && $this->dialog->read_only == TRUE){ + $display.= "

+ +

"; + }elseif((isset($obj->is_dialog) && (!$obj->is_dialog)) || (isset($obj->dialog) && (!$obj->dialog))){ + + $display.= "

\n"; + if(!$this->no_save){ + $display.= "\n"; + $display.= " \n"; + if ($this->dn != "new"){ + $display.= "\n"; + $display.= " \n"; + } + } + $display.= "\n"; + $display.= "

"; + }elseif(!isset($this->dialog->current)){ + $display.= "

\n"; + $display.= " "; + $display.= "\n"; + $display.= "

"; + } + }else{ + $display.= "

\n"; + $display.= " "; + $display.= "\n"; + $display.= "

"; + + } + return($display); + } + + + /**************** + Dialog display + ****************/ + + /* Check if there is a snapshot dialog open */ + $base = $this->fai_base; + if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + /* Display dialog with system list */ + $this->reload(); + $this->DivListFai->parent = &$this; + $this->DivListFai->execute(); + $this->DivListFai->setEntries($this->objects); + return($this->DivListFai->Draw()); + } + + + /* Return departments, that will be included within snapshot detection */ + function get_used_snapshot_bases() + { + $tmp = array(); + $types = array("faiPartitionRDN","faiScriptRDN","faiTemplateRDN","faiHookRDN","faiProfileRDN","faiVariableRDN","faiPackageRDN"); + foreach($types as $type){ + $tmp[] = get_ou($type).$this->fai_release; + } + return($tmp); + } + + + /* Get available branches for current base */ + function getBranches($base = false,$prefix = "") + { + $ret = array("/"=>$this->fai_base); + $ldap = $this->config->get_ldap_link(); + if(!$base){ + $base = $this->fai_base; + } + $tmp = FAI::get_all_releases_from_base($base,true); + foreach($tmp as $dn => $name){ + $ret[$name]=$dn; + } + ksort($ret); + $ret = array_flip($ret); + + return ($ret); + } + + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + + /* reload list of objects */ + function reload() + { + /* Variable initialisation */ + $str = ""; + $Regex = $this->DivListFai->Regex; + $this->objects = array(); + + /* Get base */ + $base = $this->fai_base; + if($this->fai_release != $this->fai_base){ + $br = $this->getBranches(); + if(isset($br[$this->fai_release])){ + $base = $this->fai_release; + }else{ + $base = $this->fai_base; + } + } + $this->base = $base; + $this->set_acl_base($this->acl_base); + + $this->lock_type = FAI::get_release_tag(FAI::get_release_dn($base)); + + /* Create a new list of FAI object + * Generate List of Partitions,Hooks,Scripts,Templates,Profiles ... + */ + $ObjectTypes = array( + "FAIpartitionTable" => array("OU"=> get_ou('faiPartitionRDN') , "CHKBOX"=>"ShowPartitions" ,"ACL" => "faiPartitionTable"), + "FAIpackageList" => array("OU"=> get_ou('faiPackageRDN') , "CHKBOX"=>"ShowPackages" ,"ACL" => "faiPackage"), + "FAIscript" => array("OU"=> get_ou('faiScriptRDN') , "CHKBOX"=>"ShowScripts" ,"ACL" => "faiScript"), + "FAIvariable" => array("OU"=> get_ou('faiVariableRDN') , "CHKBOX"=>"ShowVariables" ,"ACL" => "faiVariable"), + "FAIhook" => array("OU"=> get_ou('faiHookRDN') , "CHKBOX"=>"ShowHooks" ,"ACL" => "faiHook"), + "FAIprofile" => array("OU"=> get_ou('faiProfileRDN') , "CHKBOX"=>"ShowProfiles" ,"ACL" => "faiProfile"), + "FAItemplate" => array("OU"=> get_ou('faiTemplateRDN') , "CHKBOX"=>"ShowTemplates" ,"ACL" => "faiTemplate")); + + $filter = ""; + foreach($ObjectTypes as $key => $data){ + if($this->DivListFai->$data['CHKBOX']){ + $filter.= "(objectClass=".$key.")"; + } + } + $filter = "(&(|".$filter.")(cn=$Regex))"; + + /* Get resolved release dependencies */ + $tmp = FAI::get_all_objects_for_given_base($base,$filter); + + /* Ge listed ldap objects */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + foreach($tmp as $entry){ + + /* Get some more informations about the object */ + $ldap->cat($entry['dn'], array("cn","description","objectClass","FAIclass","FAIstate","objectClass")); + $object = $ldap->fetch(); + + /* Walk through possible types */ + foreach($ObjectTypes as $type => $rest){ + + $acl = $this->ui->get_permissions($object['dn'],"fai/".$rest ['ACL']); + + if(in_array($type,$object['objectClass']) && preg_match("/r/",$acl)){ + + /* Prepare object */ + unset($object['objectClass']['count']); + if(!isset($object['description'][0])){ + $object['description'][0]=""; + } + + /* Clean up object informations */ + $obj = array(); + $obj['cn'] = $object['cn'][0]; + $obj['dn'] = $object['dn']; + $obj['acl'] = $acl; + $obj['class'] = $rest ['ACL']; + $obj['FAIstate'] = $entry['FAIstate']; + $obj['description'] = $object['description'][0]; + $obj['objectClass'] = $object['objectClass']; + + $this->objects[$obj['cn']][$type] = $obj; + $this->objects[$obj['cn']][$type]['type']=$type; + } + } + } + + /* Append opsi objects, if opsi is available and if we are on the fai_base + */ + if($this->opsi instanceof opsi && $this->opsi->enabled()){ + $opsi_acl = $this->ui->get_permissions($base,"opsi/opsiProperties"); + if(preg_match("/r/",$opsi_acl)){ + $err = FALSE; + if(!$err && $this->DivListFai->ShowOpsiNetboot){ + $n_pro = $this->opsi->get_netboot_products(); + $err |= $this->opsi->is_error(); + foreach($n_pro as $name => $data){ + $entry = array( + "cn" => $name, + "description" => $data['DESC'], + "type" => "opsi_netboot"); + $this->objects[$name]['opsi_netboot'] = $entry; + } + } + if(!$err && $this->DivListFai->ShowOpsiLocal){ + $l_pro = $this->opsi->get_local_products(); + $err |= $this->opsi->is_error(); + foreach($l_pro as $name => $data){ + $entry = array("cn" => $name, + "description" => $data['DESC'], + "type" => "opsi_local"); + $this->objects[$name]["opsi_local"] = $entry; + } + } + if($err){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + } + } + } + + uksort($this->objects, 'strnatcasecmp'); + reset ($this->objects); + $this->objects = array_values($this->objects); + } + + function remove_lock() + { + if (isset($this->dn) && !empty($this->dn)){ + del_lock ($this->dn); + } + if(isset($this->dns) && is_array($this->dns) && count($this->dns)){ + del_lock ($this->dns); + } + } + + function get_type($array){ + if(!isset($array['objectClass'])) return(array()); + if(in_array("FAIpartitionTable",$array['objectClass'])){ + return(array("tabsPartition","faiPartitionTable","FAIPARTITIONTABS")); + } + if(in_array("FAIscript",$array['objectClass'])){ + return(array("tabsScript","faiScript","FAISCRIPTTABS")); + } + if(in_array("FAItemplate",$array['objectClass'])){ + return(array("tabsTemplate","faiTemplate","FAITEMPLATETABS")); + } + if(in_array("FAIhook",$array['objectClass'])){ + return(array("tabsHook","faiHook","FAIHOOKTABS")); + } + if(in_array("FAIvariable",$array['objectClass'])){ + return(array("tabsVariable","faiVariable","FAIVARIABLETABS")); + } + if(in_array("FAIprofile",$array['objectClass'])){ + return(array("tabsProfile","faiProfile","FAIPROFILETABS")); + } + + if(in_array("FAIpackageList",$array['objectClass'])){ + return(array("tabsPackage","faiPackage","FAIPACKAGETABS")); + } + return(array()); + } + + function CheckNewBranchName($name,$base) + { + $f = $this->fai_release; + if($name == ""){ + return(false); + }elseif(in_array($name,$this->getBranches($f))) { + return(false); + }elseif(tests::is_department_name_reserved($name,$base)){ + return(false); + } + return(true); + } + + function save_object() + { + $this->DivListFai->save_object(); + + /* Get posted release */ + $r_releases = array_flip($this->getBranches()); + if(isset($_POST['fai_release']) && isset($r_releases[get_post('fai_release')])){ + + /* Ensure that we have a valid release selected */ + if(!isset($r_releases[get_post('fai_release')])){ + msg_dialog::display(_("Warning"),_("The selected release is not available anymore. All triggered actions are skipped.")); + $_POST = array(); + $plug =$_GET['plug']; + $_GET = array("plug" => $plug); + $this->fai_release = $this->fai_base; + }else{ + $this->fai_release = $r_releases[get_post('fai_release')]; + } + + $fai_filter = session::get("fai_filter"); + $fai_filter['fai_release'] = $this->fai_release; + session::set("fai_filter",$fai_filter); + } + + if(is_object($this->CopyPasteHandler)){ + $this->CopyPasteHandler->save_object(); + } + } + + + function copyPasteHandling_from_queue($s_action,$s_entry) + { + /* Check if Copy & Paste is disabled */ + if(!is_object($this->CopyPasteHandler)){ + return(""); + } + + $ui = get_userinfo(); + + /* Add a single entry to queue */ + if($this->dialog instanceOf faiGroupHandle && !$this->dialog->is_open()){ + + if(in_array($this->dialog->get_mode(),array("copy"))){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + $group = $this->dialog->get_selected(); + foreach($group as $entry){ + $a_setup = $this->get_type($entry); + $dn = $entry['dn']; + if($ui->is_copyable($dn,"fai",$a_setup[1])){ + $this->CopyPasteHandler->add_to_queue($dn,$this->dialog->get_mode(),$a_setup[0],$a_setup[2],"fai");//$a_setup[1]); + } + } + $this->dialog = FALSE; + } + } + + /* Add entries to queue */ + if($s_action == "copy_multiple"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + + /* Add new entries to CP queue */ + foreach($this->list_get_selected_items() as $id){ + $group = $this->objects[$id]; + foreach($group as $entry){ + $a_setup = $this->get_type($entry); + $dn = $entry['dn']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,"fai",$a_setup[1])){ + $this->CopyPasteHandler->add_to_queue($dn,"copy",$a_setup[0],$a_setup[2],"fai");//$a_setup[1]); + } + } + } + } + + /* Start pasting entries */ + if($s_action == "editPaste" && !($this->lock_type == "freeze" && !$this->allow_freeze_object_attach)){ + $this->start_pasting_copied_objects = TRUE; + } + + /* Return C&P dialog */ + if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ + + /* Get dialog */ + $this->CopyPasteHandler->SetVar("parent",$this); + $data = $this->CopyPasteHandler->execute(); + + FAI::save_release_changes_now(); + + /* Return dialog data */ + if(!empty($data)){ + return($data); + } + } + + /* Automatically disable status for pasting */ + if(!$this->CopyPasteHandler->entries_queued()){ + $this->start_pasting_copied_objects = FALSE; + } + return(""); + } + + + /* Check if the given FAI class is used in this release + */ + static function check_class_name($oc,$name,$dn) + { + $base = FAI::get_release_dn($dn); + + if($oc == "FAIprofile"){ + $f = ""; + $ocs = array("FAIprofile","FAItemplate","FAIhook","FAIpartitionTable","FAIpackageList","FAIscript","FAIvariable"); + foreach($ocs as $oc){ + $f .= "(objectClass=".$oc.")"; + } + $res = FAI::get_all_objects_for_given_base($base,"(|".$f.")",TRUE); + }else{ + $res = FAI::get_all_objects_for_given_base($base,"(objectClass=".$oc.")",TRUE); + } + $delete = array(); + $used = array(); + foreach($res as $object){ + $used[$object['cn'][0]]= $object['cn'][0]; + } + return($used); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("FAI releases"), + "plDescription" => _("FAI release management"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("fai"=> array("description" => _("FAI"), + "objectClass" => "FAIclass")), + "plProvidedAcls"=> array())); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiPackage.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiPackage.inc new file mode 100644 index 000000000..4380ba3c7 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiPackage.inc @@ -0,0 +1,723 @@ +dn =$dn; + + /* Check if there are already some packages in this list + */ + $this->usedPackages = array(); + if(isset($this->attrs['FAIpackage'])){ + unset($this->attrs['FAIpackage']['count']); + foreach($this->attrs['FAIpackage'] as $pkg){ + $name = preg_replace("/\-$/","",$pkg); + $this->usedPackages[$name] = $pkg; + } + ksort($this->usedPackages); + } + + /* Fetch all package configurations from ldap + */ + $PackageFilter = ""; + foreach($this->usedPackages as $name => $value){ + $PackageFilter .= "(FAIpackage=".$name.")"; + } + $PackageFilter = "(&(objectClass=FAIdebconfInfo)(|".$PackageFilter."))"; + + /* Search for configuration objects */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->search($PackageFilter,array("FAIvariable","FAIvariableType", + "FAIvariableContent","FAIpackage","FAIdebianSection","FAIstate")); + + /* Walk through configurations and append them to our list of ConfiguredPackages + */ + while($attr = $ldap->fetch()){ + + /* Skip objects, that are tagged as removed */ + if(isset($object['FAIstate'][0])){ + if(preg_match("/removed$/",$attr['FAIstate'][0])){ + continue; + } + } + + $tmp =array(); + $tmp['Name'] = $attr['FAIvariable'][0]; + $tmp['Type'] = $attr['FAIvariableType'][0]; + + if (isset($attr['FAIvariableContent'][0])){ + if(!in_array($attr['FAIvariableType'],array("multiselect"))){ + $tmp['Value'] = $attr['FAIvariableContent'][0]; + }else{ + $content = array(); + unset($attr['FAIvariableContent']['count']); + foreach($attr['FAIvariableContent'] as $attr){ + $tmp['Value'][] = $attr; + } + } + $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp; + } + } + + $this->FAIdebianSection = array(); + if(isset($this->attrs['FAIdebianSection'])){ + for($i = 0 ; $i < $this->attrs['FAIdebianSection']['count'] ; $i++ ){ + $sec = $this->attrs['FAIdebianSection'][$i]; + $this->FAIdebianSection[$sec]=$sec; + } + } + $this->FAIpackage = array(); + + } // ENDE dn != new + + $methods = array(); + foreach($this->FAIinstallMethods as $method){ + $methods[$method] = $method; + } + $this->FAIinstallMethods = $methods; + + /* Check if we exist already - no need to ask for revisions, etc. then */ + if ($this->dn != "new"){ + $this->newDialogShown= true; + } + $this->is_new = FALSE; + if($this->dn == "new"){ + $this->is_new =TRUE; + } + + /* Generate package list */ + $this->list= $this->genPkgs(TRUE); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","fai/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /****** + * Initialize a new Package List with release and section name + ******/ + + if(!$this->is_account){ + + /* Assemble release name */ + $release = $this->parent->parent->fai_release; + $tmp= preg_replace('/[,]*'.preg_quote(get_ou('faiBaseRDN'), '/').'.*$/', '', $release); + $tmp= preg_replace('/ou=/', '', $tmp); + $rev= array_reverse(split(',', $tmp)); + $this->FAIdebianRelease= "/"; + foreach ($rev as $part){ + $this->FAIdebianRelease.= "/$part"; + } + $this->FAIdebianRelease= preg_replace('#^[/]*#', '', $this->FAIdebianRelease); + + /* Assemble sections */ + $repos= $this->getServerInfos(); + if(isset($repos[$this->FAIdebianRelease])){ + $this->FAIdebianSection= $repos[$this->FAIdebianRelease]; + $this->FAIdebianSection= array_unique($this->FAIdebianSection); + } + + /* Assign Repository settings*/ + $this->is_account = true; + } + + + /****** + * Add + ******/ + + /* + was pressed to open the package dialog */ + if(isset($_POST['Addpkg']) && $this->acl_is_writeable("FAIpackage") && !preg_match("/freeze/",$this->FAIstate)){ + $this->dialog = new faiPackageEntry($this->config, $this->FAIdebianRelease,$this->usedPackages); + $this->is_dialog =true; + } + + /* Check image Posts + */ + foreach($_POST as $name => $value){ + + /****** + * Mark as removed + ******/ + + if(!preg_match('/freeze/i', $this->FAIstate) && preg_match("/^removal_package_/",$name)){ + $id = @base64_decode(preg_replace("/^removal_package_(.*)_[xy]*$/","\\1",$name)); + if(isset($this->usedPackages[$id])){ + $pkg = $this->usedPackages[$id]; + if (preg_match('/\-$/', $pkg)){ + $pkg= preg_replace('/\-$/', '', $pkg); + } else { + $pkg= preg_replace('/$/', '-', $pkg); + } + $this->usedPackages[$id] = $pkg; + } + break; + } + + /****** + * Delete Pkgs + ******/ + if(!preg_match('/freeze/i', $this->FAIstate) && preg_match("/^remove_package_/",$name)){ + $id = @base64_decode(preg_replace("/^remove_package_(.*)_[xy]*$/","\\1",$name)); + if(isset($this->usedPackages[$id])){ + unset($this->usedPackages[$id]); + } + break; + } + + /****** + * Configure Pkgs + ******/ + if(!preg_match('/freeze/i', $this->FAIstate) && preg_match("/^configure_package_/",$name)){ + $pkg = @base64_decode(preg_replace("/^configure_package_(.*)_[xy]*$/","\\1",$name)); + + if(isset($this->usedPackages[$pkg])){ + + /* Configuration dialog open*/ + $pkg_config = array(); + if(isset($this->ConfiguredPackages[$pkg])){ + $pkg_config = $this->ConfiguredPackages[$pkg]; + } + $this->dialog = new faiPackageConfiguration($this->config, $this->dn,$pkg, $this->FAIdebianRelease , $pkg_config); + $this->is_dialog =true; + } + break; + } + } + + /* Abort package selection dialog */ + if(isset($_POST['CancelSubObject'])){ + $this->dialog = false; + $this->is_dialog=false; + } + + /* attach new packages */ + if(isset($_POST['SaveSubObject'])) { + if(!preg_match("/freeze/i", $this->FAIstate)){ + $this->dialog->save_object(); + if(count($this->dialog->check())){ + foreach($this->dialog->check() as $msgs){ + msg_dialog::display(_("Error"), $msgs, ERROR_DIALOG); + } + }else{ + $use = $this->dialog->save(); + $this->usedPackages = $use; + $this->dialog = false; + $this->is_dialog=false; + ksort($this->usedPackages); + + /* Generate package list */ + $this->list= $this->genPkgs(TRUE); + } + }else{ + $this->dialog = false; + $this->is_dialog=false; + } + } + + /* Save Configuration */ + if(isset($_POST['SaveObjectConfig'])){ + if(!preg_match("/^freeze/", $this->FAIstate)){ + $this->ConfiguredPackages= array_merge($this->ConfiguredPackages,$this->dialog->save()); + } + $this->dialog = false; + $this->is_dialog=false; + } + + /* cancel configuration */ + if(isset($_POST['CancelObjectConfig'])){ + $this->dialog = false; + $this->is_dialog=false; + } + + /* Display dialog */ + if($this->is_dialog){ + $this->dialog->save_object(); + return $this->dialog->execute(); + } + + + /****** + * Display UI / HTML / smarty + ******/ + + /* Create divlist to display a list of all currently used packages + */ + $divlist = new divSelectBox("faiPackages"); + + ksort($this->usedPackages); + if(is_array($this->usedPackages)){ + foreach($this->usedPackages as $usedName => $name){ + + $actions = ""; + + /* Append message if package is configured */ + $configured = " "; + if(isset($this->ConfiguredPackages[$usedName])){ + $configured = ""._("Configured").""; + } + + /* Adapt used name if we're marked for removal */ + $removal = " "; + if (preg_match('/\-$/', $name)){ + $removal = ""._("Package marked for removal").""; + } + + /* Get Version */ + $version = " "; + if(isset($this->list[$usedName]['VERSION'])){ + $version = $this->list[$usedName]['VERSION']; + } + + /* Get description */ + $description = " "; + if(isset($this->list[$usedName]['DESCRIPTION'])){ + $description = base64_decode($this->list[$usedName]['DESCRIPTION']); + } + + if(!preg_match('/^freeze/', $this->FAIstate) && $this->acl_is_writeable("FAIpackage")){ + $actions = ""; + } + + if(isset($this->list[$usedName]['TEMPLATE']) && + !preg_match('/^freeze/', $this->FAIstate) && $this->acl_is_writeable("FAIdebconfInfo")){ + $actions.= " "; + } + if(!preg_match('/^freeze/', $this->FAIstate) && $this->acl_is_writeable("FAIpackage")){ + $actions.= " "; + } + + $field1 = array("string" => $configured." ".$removal,"attach" => "style='width:40px;'"); + $field2 = array("string" => $usedName ,"attach" => "style='width:200px;'"); + $field3 = array("string" => $version); + $field4 = array("string" => $description); + $field5 = array("string" => $actions ,"attach" => "style='width:60px; border-right:0px;'"); + $divlist->AddEntry(array($field1,$field2,$field3,$field4,$field5)); + } + } + + /* Assign variables */ + foreach($this->attributes as $attrs){ + $smarty->assign($attrs,$this->$attrs); + } + $smarty->assign( "FAIinstallMethods", $this->FAIinstallMethods ); + + /* Assign section to smarty */ + $strsec = ""; + foreach($this->FAIdebianSection as $sec){ + $strsec .= $sec." "; + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name,preg_match("/freeze/",$this->FAIstate))); + } + + $smarty->assign("freeze", preg_match("/freeze/",$this->FAIstate)); + $smarty->assign("divlist",$divlist->DrawList()); + $smarty->assign("release" ,$this->FAIdebianRelease); + $smarty->assign("sections",$this->sections); + $smarty->assign("section" ,$strsec); + $display.= $smarty->fetch(get_template_path('faiPackage.tpl', TRUE)); + return($display); + } + + + /*! \brief Removes this packageList from the ldap database + */ + function remove_from_parent() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $release = $this->parent->parent->fai_release; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $this->dn); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + new log("remove","fai/".get_class($this),$use_dn,$this->attributes); + foreach($this->ConfiguredPackages as $pkgname => $attrs){ + foreach($attrs as $name => $attr){ + $pkgdn = "FAIvariable=".$name.",".$this->dn; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $pkgdn); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + } + } + $this->handle_post_events("remove"); + } + + + /*! \brief Collect all relevant POST vars for this plugin + */ + function save_object() + { + if(preg_match("/^freeze/", $this->FAIstate)) return; + plugin::save_object(); + } + + + /*! \brief Check given inputs for this package list + @return Array Containing all error messages, or an empty array if no error occured + */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(count($this->usedPackages)==0){ + $message[]= _("Please select a least one package!"); + } + + if((empty($this->FAIdebianRelease))||(empty($this->FAIdebianSection))){ + $message[]=_("Please choose a valid release/section combination for your repository setup!"); + } + + /* Ensure that we do not overwrite an allready existing entry + */ + if($this->is_new){ + $release = $this->parent->parent->fai_release; + $new_dn= 'cn='.$this->cn.",".get_ou('faiPackageRDN').get_ou('faiBaseRDN').$release; + $res = faiManagement::check_class_name("FAIpackageList",$this->cn,$new_dn); + if(isset($res[$this->cn])){ + $message[] = msgPool::duplicated(_("Name")); + } + } + return ($message); + } + + + /*! \brief Reload the list of cached packages. + @return Returns the currently cached list of packages. + */ + function genPkgs($force = false) + { + if(empty($this->FAIdebianRelease)) return; + + if(!count($this->buffer) || $force){ + $q = new gosaSupportDaemon(); + $attrs = array("distribution", "package","version", "section", "description", "timestamp","template"); + + $packages = array_keys($this->usedPackages); + + $ret = $q->FAI_get_packages($this->FAIdebianRelease,$attrs,$packages); + if($q->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($q->get_error()),ERROR_DIALOG); + }else{ + foreach($ret as $attr){ + $this->buffer[$attr['PACKAGE']] = $attr; + } + } + } + return $this->buffer; + } + + + /*! \brief Save packages and their configuration to ldap + */ + function save() + { + + /* Assemble release name */ + if($this->FAIdebianRelease == "ClearFromCopyPaste"){ + + $current_release = $this->parent->parent->fai_release; + $tmp= preg_replace('/,'.preg_quote(get_ou('faiBaseRDN'), '/').'.*$/', '', $current_release); + $tmp= preg_replace('/ou=/', '', $tmp); + $rev= array_reverse(split(',', $tmp)); + $this->FAIdebianRelease= ""; + foreach ($rev as $part){ + $this->FAIdebianRelease.= "/$part"; + } + $this->FAIdebianRelease= preg_replace('#^/#', '', $this->FAIdebianRelease); + } + + plugin::save(); + + $ldap = $this->config->get_ldap_link(); + + $this->attrs['FAIpackage'] = array(); + foreach($this->usedPackages as $pkg){ + $this->attrs['FAIpackage'][] = $pkg; + } + + $this->attrs['FAIdebianSection'] = array(); + foreach($this->FAIdebianSection as $sec){ + $this->attrs['FAIdebianSection'][] = $sec; + } + + FAI::prepare_to_save_FAI_object($this->dn,$this->attrs); + + if($this->initially_was_account){ + new log("modify","fai/".get_class($this),$this->dn,$this->attributes); + }else{ + new log("create","fai/".get_class($this),$this->dn,$this->attributes); + } + + $ldap->cd($this->dn); + + /* Save Package configurations */ + foreach($this->ConfiguredPackages as $pkgname => $attrs){ + foreach($attrs as $name => $attr){ + + $pkgattrs = array(); + + foreach($attr as $n=>$v){ + if(empty($v)) $v = array(); + } + + /* Set attributes */ + $pkgattrs['objectClass'][] = "FAIdebconfInfo"; + + $pkgattrs['FAIpackage'] = $pkgname; + $pkgattrs['FAIvariable'] = $name; + $pkgattrs['FAIvariableType'] = $attr['Type']; + $pkgattrs['FAIvariableContent'] = $attr['Value']; + $pkgdn = "FAIvariable=".$name.",".$this->dn; + + /* Tag object */ + $this->tag_attrs($pkgattrs, $pkgdn, $this->gosaUnitTag); + + if(in_array($pkgattrs['FAIvariableType'],array("boolean","multiselect","password","select","string","text"))){ + + if($pkgattrs['FAIvariableType'] == "text" && $pkgattrs['FAIvariableContent'] == ""){ + gosa_log("Skipped saving FAIvariable '$name' empty string can't be saved."); + }else{ + FAI::prepare_to_save_FAI_object($pkgdn,$pkgattrs); + } + } + } + } + } + + + /*! \brief Return plugin informations for acl handling + @return Array ACL infos of this plugin. + */ + static function plInfo() + { + return (array( + "plShortName" => _("Package"), + "plDescription" => _("FAI Package list"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 28, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name"), + "description" => _("Description"), + "FAIpackage" => _("Packages"), + "FAIdebianSection" => _("Section")." ("._("Readonly").")", + "FAIinstallMethod" => _("Install Method"), + "FAIdebconfInfo" => _("Package configuration"), + "FAIdebianRelease" => _("Release")." ("._("Readonly").")") + )); + } + + + /*! \brief prepares this plugin to be inserted after it was copied or cut. + @param Array All attributes from the source object. + */ + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + if(isset($source['FAIstate'][0])){ + $this->FAIstate = $source['FAIstate'][0]; + } + + $this->FAIdebianRelease = "ClearFromCopyPaste"; + + if(isset($source['FAIpackage'])){ + unset($source['FAIpackage']['count']); + foreach($source['FAIpackage'] as $pkg){ + $this->usedPackages[$pkg] = $pkg; + } + ksort($this->usedPackages); + }else{ + $this->usedPackages = array(); + } + + if((isset($source['FAIdebianSection']))&&(is_array($source['FAIdebianSection']))){ + $this->FAIdebianSection = array(); + for($i = 0 ; $i < $source['FAIdebianSection']['count'] ; $i ++){ + $this->FAIdebianSection[$source['FAIdebianSection'][$i]]=$source['FAIdebianSection'][$i]; + } + } + + /* Create one filter with all package names, + instead of calling $ldap->search for every single package + */ + $PackageFilter = ""; + foreach($this->usedPackages as $name){ + $PackageFilter .= "(FAIpackage=".$name.")"; + } + $PackageFilter = "(&(objectClass=FAIdebconfInfo)(|".$PackageFilter."))"; + + /* Search for configuration objects */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($source['dn']); + $ldap->search($PackageFilter,array("FAIvariable","FAIvariableType","FAIvariableContent","FAIpackage","FAIdebianSection","FAIstate")); + + /* Walk through configurations and append them to our list of ConfiguredPackages */ + while($attr = $ldap->fetch()){ + + /* Skip objects, that are tagged as removed */ + if(isset($object['FAIstate'][0])){ + if(preg_match("/removed$/",$attr['FAIstate'][0])){ + continue; + } + } + + $tmp =array(); + $tmp['Name'] = $attr['FAIvariable'][0]; + $tmp['Type'] = $attr['FAIvariableType'][0]; + + if (isset($attr['FAIvariableContent'][0])){ + if(!in_array($attr['FAIvariableType'],array("multiselect"))){ + $tmp['Value'] = $attr['FAIvariableContent'][0]; + }else{ + $content = array(); + unset($attr['FAIvariableContent']['count']); + foreach($attr['FAIvariableContent'] as $attr){ + $tmp['Value'][] = $attr; + } + } + $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp; + } + } + } + + + /*! \brief Returns a list of all configured servers with repositories. + @return Array All repository server + */ + function getServerInfos() + { + $ret = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(objectClass=FAIrepositoryServer)",array("*")); + while($attrs = $ldap->fetch()){ + if(isset($attrs['FAIrepository'])){ + for($i =0 ; $i < $attrs['FAIrepository']['count']; $i++){ + $obj = $attrs['FAIrepository'][$i]; + $tmp = split("\|",$obj); + if(count($tmp)==4){ + foreach(split(",",$tmp[3]) as $sec){ + if(!empty($sec)){ + $ret[$tmp[2]][] = $sec; + } + } + } + } + } + } + return($ret); + } + + + /*! \brief Used for copy & paste. + Returns a HTML input mask, which allows to change the cn of this entry. + @param Array Array containing current status && a HTML template. + */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn", htmlentities($this->cn)); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + /*! \brief Used for copy & paste. + Some entries must be renamed to avaoid duplicate entries. + */ + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = get_post('cn'); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiPackageConfiguration.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiPackageConfiguration.inc new file mode 100644 index 000000000..ab437c3bc --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiPackageConfiguration.inc @@ -0,0 +1,106 @@ +obj = $obj; + $this->release = $release; + $this->pkg_config = $pkg_config; + + /* Read pkg debconf info from gosaSupportDaemon + */ + $q = new gosaSupportDaemon(); + $ret = $q->FAI_get_packages($this->release,array("package","template"),array($this->obj)); + if($q->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($q->get_error()),ERROR_DIALOG); + } + + /* If we do not get a useable answer, use an empty template + */ + $tpl = ""; + if(isset($ret['ANSWER1']) && isset($ret['ANSWER1']['TEMPLATE'])){ + $tpl = base64_decode($ret['ANSWER1']['TEMPLATE']); + } + + /* Create package configuration mask + */ + $this->Debconf_handle = new debconf(preg_replace('/_.*$/', '', get_browser_language())); + $this->Debconf_handle->load_from_string($tpl); + if($this->Debconf_handle->has_template()){ + foreach($this->pkg_config as $var){ + $this->Debconf_handle->SetDefault($var['Name'],$var['Value']); + } + } + } + + + /*! \brief Returns a html interface, that allow to modify + the package attributes. + @return String HTML content/ui for this plugin + */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty = get_smarty(); + $smarty->assign("headline", sprintf(_("Debconf information for package '%s'"), $this->obj)); + $this->Debconf_handle->PostCheck(); + $smarty->assign("Config",$this->Debconf_handle->get_dialog()); + return($smarty->fetch(get_template_path('faiPackageConfiguration.tpl', TRUE))); + } + + + /* Save data to object */ + function save_object() + { + } + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + return ($message); + } + + + /*! \brief Returns an array with all configured attributes + @return Array All configured attributes. + */ + function save() + { + $this->Debconf_handle->PostCheck(); + $pkgs = $this->Debconf_handle->template; + $tmp = array(); + foreach($pkgs as $pkg){ + $tmp[$this->obj][$pkg['Name']]['Value']= $pkg['Default']; + $tmp[$this->obj][$pkg['Name']]['Name'] = $pkg['Name']; + $tmp[$this->obj][$pkg['Name']]['Type'] = $pkg['Type']; + } + return($tmp); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiPackageEntry.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiPackageEntry.inc new file mode 100644 index 000000000..f86f89a96 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiPackageEntry.inc @@ -0,0 +1,211 @@ +FAIdebianRelease = $release; + $this->selected = $used_packages; + $this->initializeSections(); + + /* Get old search filter, if there is one*/ + $this->searchStrPKG = _("Please enter your search string here"); + if(session::is_set("searchStrPKG")){ + $this->searchStrPKG = session::get("searchStrPKG"); + } + } + + + /*! \brief Load all release seactions from GOsa support daemon + */ + function initializeSections() + { + $this->package_sections = array(); + $q = new gosaSupportDaemon(); + $ret = $q->FAI_get_package_sections($this->FAIdebianRelease); + if($q->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($q->get_error()),ERROR_DIALOG); + }else{ + foreach($ret as $entry){ + $this->package_sections[array_pop($entry)] = TRUE; + } + } + } + + + /*! \brief Create HTML for this plugin. + @return String The html code for this plugin. + */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty = get_smarty(); + $display = ""; + + + /* Create section checkboxes + */ + $Section_boxes = " +
+ "; + $i = 0; + foreach($this->package_sections as $cat => $selected){ + if($i == 2){ + $Section_boxes .=""; + $i = 0; + } + if($selected){ + $Section_boxes .=""; + }else{ + $Section_boxes .=""; + } + $i ++ ; + } + $Section_boxes .= "
 ".$cat."  ".$cat." 
"; + + /* Create List && fill it with packages + */ + $cnt = 0; + $this->reload(); + $divlist = new divlist("PackageEntry"); + $divlist->SetPluginMode(); + $divlist->SetSummary(_("This list displays all assigned package names for this repository settings.")); + $divlist->SetEntriesPerPage(0); + $divlist->SetHeader(array(array("string" => " ", "attach" => "style='text-align:center;width:20px;'"), + array("string" => "Name", "attach" => "style='width:180px;'"), + array("string" => "Version", "attach"=>"style='width:240px;'" ), + array("string" => "Description", "attach" => "style='border-right:0px;text-align:left;'"))); + + foreach($this->pkgs as $pkg){ + if(in_array($pkg['PACKAGE'],$this->selected)){ + $check = " checked "; + }else{ + $check = ""; + } + + $desc = " "; + if(isset($pkg['DESCRIPTION'])){ + $desc = base64_decode($pkg['DESCRIPTION']); + } + + $chkbox = " + "; + $divlist->AddEntry(array(array("string"=>$chkbox, "attach" => "style='text-align:center;width:20px;'"), + array("string"=>"
".$pkg['PACKAGE']."
", + "attach" => "style='width:180px;' title='".$pkg['PACKAGE']." (".$pkg['VERSION'].")'"), + array("string"=>"
".htmlentities($pkg['VERSION'])."
", + "attach" => "style='width:240px' title='".$pkg['PACKAGE']." (".$pkg['VERSION'].")'"), + array("string"=>htmlentities($desc), + "attach" => "style='border-right:0px;text-align:left;'"))); + } + + $smarty->assign("Section_boxes" , $Section_boxes); + $smarty->assign("searchStrPKG" , $this->searchStrPKG); + $smarty->assign("faihead" , ""); + $smarty->assign("failist" , $divlist->DrawList()); + $smarty->assign("infoimage" , get_template_path('images/info.png')); + $smarty->assign("launchimage" , get_template_path('images/launch.png')); + $smarty->assign("alphabet" , generate_alphabet()); + $smarty->assign("apply" , apply_filter(TRUE)); + $smarty->assign("search_image" , get_template_path('images/lists/search.png')); + + $display.= $smarty->fetch(get_template_path('faiPackageEntry.tpl', TRUE)); + return($display); + } + + + /*! \brief Save HTML POST data to object + */ + function save_object() + { + /* Keep sections selected */ + foreach($_POST as $name => $value){ + if(preg_match("/^wasonpage_/i",$name)){ + $name = preg_replace("/^wasonpage_/","",$name); + $n =base64_decode($name); + if(isset($_POST['use_'.$name])){ + $this->selected[$n] = $n; + }else{ + if(isset($this->selected[$n])){ + unset($this->selected[$n]); + } + } + + } + } + + /* Get Posted search filter + */ + if(isset($_POST['searchStrPKG'])){ + $this->searchStrPKG = get_post("searchStrPKG"); + } + if(isset($_GET['search'])){ + $this->searchStrPKG= $_GET['search']."*"; + } + if(empty($this->searchStrPKG)){ + $this->searchStrPKG = "*"; + } + session::set('searchStrPKG',$this->searchStrPKG); + } + + + /*! \brief Reload list of displayed packages + */ + function reload() + { + $this->pkgs = array(); + $q = new gosaSupportDaemon(); + $filter = preg_replace("/\*/","%",array($this->searchStrPKG)); + $attrs = array("distribution", "package","version", "section", "description", "timestamp"); + $ret = $q->FAI_get_packages($this->FAIdebianRelease,$attrs,$filter,0,200); + if($q->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($q->get_error()),ERROR_DIALOG); + }else{ + foreach($ret as $attr){ + $this->pkgs[$attr['PACKAGE']] = $attr; + } + } + } + + + /*! \brief Return all selected packages + @return Array All selected package names + */ + function save() + { + return($this->selected); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTable.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTable.inc new file mode 100644 index 000000000..c8b0cdc14 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTable.inc @@ -0,0 +1,615 @@ +ui = get_userinfo(); + if($dn != "new"){ + $this->dn =$dn; + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_base($this->dn,"(&(objectClass=FAIclass)(objectClass=FAIpartitionDisk))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($this->dn, '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['description'] = ""; + $objects['status'] = "edited"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $this->disks[$objects['cn']] = $objects; + $this->disks[$objects['cn']]['partitions'] = array(); + } + + /* read all partitions for each disk + */ + foreach($this->disks as $name => $disk){ + $res = FAI::get_all_objects_for_given_base($disk['dn'],"(&(objectClass=FAIclass)(objectClass=FAIpartitionEntry))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($disk['dn'], '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['status'] = "edited"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subPartAttributes); + unset($objects['dn']);; + $this->disks[$name]['partitions'][$objects['FAIpartitionNr']] = $objects; + } + } + } + + $this->is_new = FALSE; + if($this->dn == "new"){ + $this->is_new =TRUE; + } + ksort($this->disks); + } + + + function acl_base_for_current_object($dn) + { + if($dn == "new" || $dn == ""){ + if($this->dn == "new"){ + $dn= $this->parent->parent->acl_base; + }else{ + $dn = $this->dn; + } + } + return($dn); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","fai/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* Add Disk to this Partitionset + * This code adds a new HDD to the disks + * A new Dialog will be opened + */ + if(isset($_POST['AddDisk']) && !preg_match("/freeze/i",$this->FAIstate)){ + $usedDiskNames =array(); + foreach($this->disks as $key=>$disk){ + $usedDiskNames[]= $key; + } + $this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$usedDiskNames); + $this->dialog->set_acl_base($this->acl_base_for_current_object($this->dn)); + $this->dialog->set_acl_category("fai"); + $this->dialog->FAIstate = $this->FAIstate; + $this->is_dialog = true; + } + + /* Edit disk. + * Open dialog which allows us to edit the selected entry + */ + + if($this->dn != "new"){ + set_object_info($this->dn); + } + + if((isset($_POST['EditDisk']))&&(isset($_POST['disks']))){ + $usedDiskNames =array(); + $Udisk = $_POST['disks'][0]; + if(isset($this->disks[$Udisk])){ + + foreach($this->disks as $key=>$disk){ + if($key != $Udisk){ + $usedDiskNames[]= $key; + } + } + + /* Set object info string, which will be displayed in plugin info line */ + if(isset($this->disks[$Udisk]['dn'])){ + set_object_info($this->disks[$Udisk]['dn']); + $dn = $this->disks[$Udisk]['dn']; + }else{ + set_object_info(""); + $dn = "new"; + } + + $this->dialog = new faiPartitionTableEntry($this->config,$this->dn,$usedDiskNames,$this->disks[$Udisk]); + $this->dialog->set_acl_base($this->acl_base_for_current_object($dn)); + $this->dialog->set_acl_category("fai"); + $this->dialog->FAIstate = $this->FAIstate; + + $this->is_dialog = true; + } + } + + /* Edit aborted, close dialog, without saving anything + */ + if(isset($_POST['CancelDisk'])){ + unset($this->dialog); + $this->dialog = FALSE; + $this->is_dialog=false; + } + + /* Dialog saved + * Save given data from Dialog, if no error is occurred + */ + if(isset($_POST['SaveDisk'])){ + + if (!preg_match("/freeze/i", $this->FAIstate)){ + $this->dialog->save_object(); + if(count($this->dialog->check())){ + foreach($this->dialog->check() as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $disk = $this->dialog->save(); + if(isset($disk['rename'])){ + if($this->disks[$disk['rename']['from']]['status']=="edited"){ + $this->disks[$disk['rename']['from']]['status']="delete"; + }else{ + unset($this->disks[$disk['rename']['from']]); + } + + foreach($disk['partitions'] as $key => $val){ + if($disk['partitions'][$key]['status']!="delete"){ + $disk['partitions'][$key]['status']= "new"; + } + } + + $disk['status']="new"; + $disk['cn']= $disk['rename']['to']; + } + + $this->disks[$disk['cn']]=$disk; + unset($this->dialog); + $this->dialog = FALSE; + $this->is_dialog=false; + ksort($this->disks); + } + }else{ + $this->dialog = FALSE; + $this->is_dialog=false; + } + } + + /* Delete selected disk drive from list + * Assign delete status for all its partitions + */ + if((isset($_POST['DelDisk']))&&(!empty($_POST['disks']))){ + if (!preg_match("/freeze/i", $this->FAIstate)){ + foreach($_POST['disks'] as $disk) { + + if(isset($this->disks[$disk])){ + if($this->disks[$disk]['status']=="edited"){ + $this->disks[$disk."-delete"]=$this->disks[$disk]; + unset($this->disks[$disk]); + $disk = $disk."-delete"; + $this->disks[$disk]['status']="delete"; + foreach($this->disks[$disk]['partitions'] as $name => $value ){ + if($value['status']=="edited"){ + $this->disks[$disk]['partitions'][$name]['status']="delete"; + }else{ + unset($this->disks[$disk]['partitions'][$name]); + } + } + }else{ + unset($this->disks[$disk]); + } + } + } + } + } + + /* Display dialog if one is defined + */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + /* Assign all attributes to smarty engine + */ + foreach($this->attributes as $attrs){ + $smarty->assign($attrs,$this->$attrs); + if($this->$attrs){ + $smarty->assign($attrs."CHK"," "); + }else{ + $smarty->assign($attrs."CHK"," disabled "); + } + } + + $dn = $this->acl_base_for_current_object($this->dn); + $smarty->assign("sub_object_is_addable", + preg_match("/c/",$this->ui->get_permissions($dn,"fai/faiPartitionTableEntry")) && + !preg_match("/freeze/",$this->FAIstate)); + $smarty->assign("sub_object_is_removeable", + preg_match("/d/",$this->ui->get_permissions($dn,"fai/faiPartitionTableEntry")) && + !preg_match("/freeze/",$this->FAIstate)); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name,preg_match("/freeze/i",$this->FAIstate))); + } + $disks = $this->getDisks(); + $smarty->assign("disks" ,$disks); + $display.= $smarty->fetch(get_template_path('faiPartitionTable.tpl', TRUE)); + return($display); + } + + function getDisks(){ + /* Return all available disks for this partition table + * Return in listBox friendly array + */ + $a_return = array(); + foreach($this->disks as $key => $disk){ + + $dn = "new"; + if(isset($obj['dn'])){ + $dn = $obj['dn']; + } + $dn = $this->acl_base_for_current_object($dn); + $acl = $this->ui->get_permissions($dn,"fai/faiPartitionTableEntry"); + if(preg_match("/(r|w)/",$acl)) { + + if($disk['status'] != "delete"){ + $cnt=0; + foreach($disk['partitions'] as $val){ + if($val['status']!="delete"){ + $cnt ++; + } + } + if(!empty($disk['description'])){ + if($cnt == 1){ + $a_return[$key]= $disk['cn']." [".$disk['description']."], ".sprintf(_("%s partition"), $cnt); + }else{ + $a_return[$key]= $disk['cn']." [".$disk['description']."], ".sprintf(_("%s partition(s)"), $cnt); + } + }else{ + if($cnt == 1){ + $a_return[$key]= $disk['cn'].", ".sprintf(_("%s partition"), $cnt); + }else{ + $a_return[$key]= $disk['cn'].", ".sprintf(_("%s partition(s)"), $cnt); + } + } + } + } + } + return($a_return); + } + + + /* Delete me, and all my subtrees + */ + function remove_from_parent() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + + $release = $this->parent->parent->fai_release; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $this->dn); + + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + new log("remove","fai/".get_class($this),$use_dn,$this->attributes); + foreach($this->disks as $disk){ + $disk_dn = "cn=".$disk['cn'].",".$this->dn; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i",$release, $disk_dn); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + foreach($disk['partitions'] as $key => $partition){ + $partition_dn= "FAIpartitionNr=".$partition['FAIpartitionNr'].",".$disk_dn; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $partition_dn); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + } + } + } + + + /* Save data to object + */ + function save_object() + { + if (preg_match("/freeze/", $this->FAIstate)) return; + plugin::save_object(); + foreach($this->attributes as $attrs){ + if(isset($_POST[$attrs])){ + $this->$attrs = $_POST[$attrs]; + } + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Ensure that we do not overwrite an allready existing entry + */ + if($this->is_new){ + $release = $this->parent->parent->fai_release; + $new_dn= 'cn='.$this->cn.",".get_ou('faiPartitionRDN').get_ou('faiBaseRDN').$release; + $res = faiManagement::check_class_name("FAIpartitionTable",$this->cn,$new_dn); + if(isset($res[$this->cn])){ + $message[] = msgPool::duplicated(_("Name")); + } + } + return ($message); + } + + + /* Save to LDAP */ + function save() + { + + plugin::save(); + /* Save current settings. + * 1 : We must save the partition table, with its description and cn + * 2 : Append Disk with cn and description. + * 3 : Save partitions for each disk + */ + + $ldap = $this->config->get_ldap_link(); + + FAI::prepare_to_save_FAI_object($this->dn,$this->attrs); + + if($this->initially_was_account){ + new log("modify","fai/".get_class($this),$this->dn,$this->attributes); + }else{ + new log("create","fai/".get_class($this),$this->dn,$this->attributes); + } + + /* Sort entries, because we must delete entries with status="delete" first */ + $order = array(); + foreach($this->disks as $key => $disk){ + if($disk['status'] == "delete"){ + $order[$key] = $disk; + } + } + foreach($this->disks as $key => $disk){ + if($disk['status'] != "delete"){ + $order[$key] = $disk; + } + } + + /* Append all disks to ldap */ + foreach($order as $cn=>$disk){ + $disk_dn = "cn=".$disk['cn'].",".$this->dn; + $disk_attrs['cn'] = $disk['cn']; + $disk_attrs['description'] = $disk['description']; + + if(empty($disk_attrs['description']) && $disk['status'] == "edited"){ + $disk_attrs['description'] = array(); + } + + $disk_attrs['objectClass'] = array("top","FAIclass","FAIpartitionDisk"); + + if($disk['status']=="new"){ + $ldap->cat($disk_dn,array("objectClass")); + if($ldap->count()){ + $disk['status']="edited"; + } + } + + /* Tag object */ + $this->tag_attrs($disk_attrs, $disk_dn, $this->gosaUnitTag); + + if($disk['status'] == "delete"){ + FAI::prepare_to_save_FAI_object($disk_dn,array(),true); + $this->handle_post_events("remove"); + }elseif($disk['status'] == "edited"){ + FAI::prepare_to_save_FAI_object($disk_dn,$disk_attrs); + $this->handle_post_events("modify"); + }elseif($disk['status']=="new"){ + FAI::prepare_to_save_FAI_object($disk_dn,$disk_attrs); + $this->handle_post_events("add"); + } + + if($disk['status']!="delete") + /* Add all partitions */ + foreach($disk['partitions'] as $key => $partition){ + $partition_attrs = array(); + + foreach($partition as $key => $value){ + if(!empty($value)){ + $partition_attrs[$key]=$value; + }else{ + unset($partition_attrs[$key]); + } + } + + $partition_dn= "FAIpartitionNr=".$partition_attrs['FAIpartitionNr'].",".$disk_dn; + $partition_attrs['objectClass']= array("top","FAIclass","FAIpartitionEntry"); + $partition_attrs['cn']= $partition_attrs['FAIpartitionNr']; + + unset($partition_attrs['status']); + unset($partition_attrs['old_cn']); + + if($partition['status']=="new"){ + $ldap->cat($partition_dn,array("objectClass")); + if($ldap->count()){ + $partition['status']="edited"; + } + } + + if((!isset($partition['FAImountPoint']))||(empty($partition['FAImountPoint']))){ + $partition_attrs['FAImountPoint']="swap"; + } + + /* Tag object */ + $this->tag_attrs($partition_attrs, $partition_dn, $this->gosaUnitTag); + + if($partition['status'] == "delete"){ + FAI::prepare_to_save_FAI_object($partition_dn,array(),true); + $this->handle_post_events("remove"); + }elseif($partition['status'] == "edited"){ + FAI::prepare_to_save_FAI_object($partition_dn,$partition_attrs); + $this->handle_post_events("modify"); + }elseif($partition['status']=="new"){ + FAI::prepare_to_save_FAI_object($partition_dn,$partition_attrs); + $this->handle_post_events("add"); + } + } + } + $this->handle_post_events("add"); + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_base($source['dn'],"(&(objectClass=FAIclass)(objectClass=FAIpartitionDisk))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($source['dn'], '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['description'] = ""; + $objects['status'] = "edited"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $this->disks[$objects['cn']] = $objects; + $this->disks[$objects['cn']]['partitions'] = array(); + } + + /* read all partitions for each disk + */ + foreach($this->disks as $name => $disk){ + $res = FAI::get_all_objects_for_given_base($disk['dn'],"(&(objectClass=FAIclass)(objectClass=FAIpartitionEntry))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($disk['dn'], '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['status'] = "edited"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subPartAttributes); + unset($objects['dn']);; + $this->disks[$name]['partitions'][$objects['FAIpartitionNr']] = $objects; + } + } + ksort($this->disks); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Partition table"), + "plDescription" => _("FAI partition table"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 26, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name")." ("._("Read only").")", + "description" => _("Description")) + )); + } + + + /*! \brief Used for copy & paste. + Returns a HTML input mask, which allows to change the cn of this entry. + @param Array Array containing current status && a HTML template. + */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn", htmlentities($this->cn)); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + /*! \brief Used for copy & paste. + Some entries must be renamed to avaoid duplicate entries. + */ + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = get_post('cn'); + } + } + + /* Reload some attributes */ + function get_object_attributes($object,$attributes) + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($object['dn'],$attributes); + $tmp = $ldap->fetch(); + + foreach($attributes as $attrs){ + if(isset($tmp[$attrs][0])){ + $var = $tmp[$attrs][0]; + + /* Check if we must decode some attributes */ + if(in_array_ics($attrs,$this->sub64coded)){ + $var = base64_decode($var); + } + + /* check if this is a binary entry */ + if(in_array_ics($attrs,$this->subBinary)){ + $var = $ldap->get_attribute($object['dn'], $attrs,$r_array=0); + } + + /* Fix slashes */ + $var = addslashes($var); + $object[$attrs] = $var; + } + } + return($object); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTableEntry.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTableEntry.inc new file mode 100644 index 000000000..0efc24c10 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiPartitionTableEntry.inc @@ -0,0 +1,486 @@ +UsedAttrs = array("cn","description","FAIpartitionType","FAIpartitionNr","FAIfsType","FAImountPoint","FAIpartitionSize", + "FAImountOptions","FAIfsOptions","FAIpartitionFlags"); + + /* Default status is new */ + $this->status = "new"; + + /* We want to edit an entry */ + if($disk){ + + /* Set disk status */ + $this->status = $disk['status']; + + /* Walk through partitions */ + foreach($disk['partitions'] as $name => $values){ + + /* If a partition is already marked as delete, attach it to deletePartitions only. */ + if($values['status'] == "delete"){ + unset($disk['partitions'][$name]); + $this->deletePartitions[]=$values; + }else{ + + /* Set status, to know which partition must be deleted from ldap + new : Neu partition entry // save + edited : Update partition entry in ldap + deleted: Remove partition from ldap + */ + + /* If status is not new, set to edit mode. + * New means that this partition currently wasn't saved to ldap. + */ + if($disk['partitions'][$name]['status']!="new"){ + $disk['partitions'][$name]['status']="edited"; + } + + $disk['partitions'][$name]['old_cn']= $disk['partitions'][$name]['cn']; + + /* Assign empty attributes, if attribute is missing */ + foreach($this->UsedAttrs as $attr){ + if(!isset($values[$attr])){ + $disk['partitions'][$name][$attr]=""; + } + } + + if (preg_match('/^_/', $disk['partitions'][$name]['FAIfsType'])){ + $disk['partitions'][$name]['FAIfsType']= preg_replace('/^_/', '', $disk['partitions'][$name]['FAIfsType']); + } + } + } + + /* Set default attributes */ + $this->DISKcn = $disk['cn']; + $this->DISKdescription = $disk['description']; + $this->partitions = $disk['partitions']; + $this->is_edit = true; + $this->old_cn = $disk['cn']; + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty = get_smarty(); + $s_action = ""; + $s_entry = ""; + $display = ""; + + /* Assign values + * And Checkbox selection + */ + foreach($this->attributes as $attrs){ + $smarty->assign($attrs,$this->$attrs); + if($this->$attrs){ + $smarty->assign($attrs."CHK"," "); + }else{ + $smarty->assign($attrs."CHK"," disabled "); + } + } + + /* Check all Posts if there is something usefull for us, + * For example : Delete is posted as Delete_1 + * The number specifies the index we want to delete + */ + foreach($_POST as $name => $value){ + if((preg_match("/Delete_.*/",$name)) && $this->acl_is_removeable() && !preg_match("/freeze/i",$this->FAIstate)){ + $tmp = split("_",$name); + $s_action = "remove"; + $s_entry = $tmp[1]; + } + } + + /* To remove a partition we unset the index posted. + * We must sort the index again, else we possibly got problems + * with partitions order. + */ + if($s_action == "remove" && $this->acl_is_removeable() && !preg_match("/freeze/i",$this->FAIstate)){ + if($this->partitions[$s_entry]['status'] == "edited"){ + $this->deletePartitions[$s_entry]= $this->partitions[$s_entry]; + $this->deletePartitions[$s_entry]['FAIpartitionNr']=$s_entry; + unset($this->partitions[$s_entry]); + }else{ + unset($this->partitions[$s_entry]); + } + $tmp= array(); + foreach($this->partitions as $part){ + $tmp[count($tmp)+1]=$part; + } + $this->partitions = $tmp; + } + + /* To add a partitions we only append an empty + * array to the already defined partitions. + */ + if(isset($_POST['AddPartition']) && $this->acl_is_createable() && !preg_match("/freeze/i",$this->FAIstate)){ + foreach($this->UsedAttrs as $attr){ + $tmp[$attr] = ""; + } + $tmp["old_cn"] = ""; + $tmp['status']="new"; + $this->partitions[count($this->partitions)+1]=$tmp; + } + + /* $setup contains a table with the partitions. + */ + $smarty->assign("setup", $this->generateParts()); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + $tmp = $this->plInfo(); + $sacl = ""; + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $acl = $this->getacl($name, preg_match("/freeze/i",$this->FAIstate)); + $smarty->assign($name."ACL",$acl); + } + + $smarty->assign("sub_object_is_createable",$this->acl_is_createable()); + $smarty->assign("freeze",preg_match("/freeze/i",$this->FAIstate)); + + /* Fetch template and show the result + */ + $display.= $smarty->fetch(get_template_path('faiPartitionTableEntry.tpl', TRUE)); + return($display); + } + + function generateParts() + { + /* Define Arrays with allowed syntax */ + $PartitionTypes = array("primary"=>_("primary"),"logical"=>_("logical")); + $FAIfsTypes = array("ext2","ext3","xfs","swap","reiser","dosfat16","winfat32"); + + /* Display Header */ + $str = ""; + if (count($this->partitions)){ + $str .= ""; + $str .= ""._("Type").""; + $str .= ""._("FS type").""; + $str .= ""._("Mount point").""; + $str .= ""._("Size in MB").""; + $str .= ""._("Mount options").""; + $str .= ""._("FS option").""; + $str .= ""._("Preserve").""; + $str .= " "; + $str .= ""; + } + + /* Walk through all defined partitions. + * Create a new row for each partition and append it to + * the header defined above. + * To be able to check the posts later, we append a key to each single postfield. like cn_1 ... cn_2 + */ + foreach($this->partitions as $key => $part){ + + $dis = ""; + if($part['FAIpartitionFlags'] == "preserve"){ + $dis = " disabled "; + } + + $disableALL = ""; + if (preg_match("/freeze/", $this->FAIstate)){ + $disableALL = " disabled "; + } + + if($part['status']!="delete"){ + + /* Generate Partition select box + */ + $PartitionType = ""; + if($this->acl_is_writeable("FAIpartitionType")){ + $PartitionType = ""; + }elseif($this->acl_is_readable("FAIpartitionType")){ + $PartitionType = $part['FAIpartitionType']; + } + + + /* Generate fsType select box + */ + $FAIfsType= ""; + if($this->acl_is_writeable("FAIfsType")){ + $FAIfsType= ""; + }elseif($this->acl_is_readable("FAIfsType")){ + $FAIfsType = $part['FAIfsType']; + } + + foreach(array("FAImountPoint","FAIpartitionSize","FAImountOptions","FAIfsOptions") as $attr){ + $$attr = ""; + if($this->acl_is_writeable($attr)){ + $$attr = ""; + + }elseif($this->acl_is_readable($attr)){ + $$attr = $part[$attr]; + } + } + + + $str .= "\n"; + $str .= "\n".$PartitionType.""; + $str .= "\n".$FAIfsType.""; + $str .= "\n".$FAImountPoint.""; + $str .= "\n".$FAIpartitionSize.""; + $str .= "\n".$FAImountOptions.""; + $str .= "\n".$FAIfsOptions.""; + + $changeState = "onClick=\"changeState('FAImountPoint_".$key."') ; ". + "changeState('FAIpartitionSize_".$key."') ; ". + "changeState('FAImountOptions_".$key."') ; ". + "changeState('FAIfsType_".$key."') ; ". + "changeState('FAIfsOptions_".$key."') ; \""; + + if($this->acl_is_writeable("FAIpartitionFlags")){ + if($part['FAIpartitionFlags']!=false){ + $str .= "\n"; + }else{ + $str .= "\n"; + } + }else{ + if($part['FAIpartitionFlags']!=false){ + $str .= ""._("False").""; + }else{ + $str .= ""._("True").""; + } + } + if($this->acl_is_removeable()){ + $str .= "\n"; + }else{ + $str .= "\n"; + } + $str .= "\n"; + } + } + + if(!empty($str)){ + $str = "".$str."
"; + } + return($str); + + } + + function save() + { + $tmp = array(); + $tmp['cn'] = $this->DISKcn; + + /* Attach partitions */ + foreach($this->partitions as $key=>$val) { + $this->partitions[$key]['FAIpartitionNr']=$key; + } + + /* Attach deleted */ + foreach($this->deletePartitions as $key=>$val) { + $this->partitions[$key."-delete"]=$val; + $this->partitions[$key."-delete"]['status']="delete"; + } + + $tmp['description'] = $this->DISKdescription; + $tmp['partitions'] = $this->partitions; + $tmp['status'] = $this->status; + + /* If hdd name has changed, tell partitionTable to rename it */ + if(($this->is_edit)&&($this->old_cn != $this->DISKcn)){ + $tmp['rename']['from'] = $this->old_cn; + $tmp['rename']['to'] = $this->DISKcn; + } + return($tmp); + } + + + /* Save data to object */ + function save_object() + { + if((isset($_POST['TableEntryFrameSubmitted'])) && !preg_match("/freeze/", $this->FAIstate) ){ + plugin::save_object(); + + foreach($this->partitions as $key => $part){ + foreach($this->UsedAttrs as $attrs){ + + if($this->acl_is_writeable($attrs)){ + + if(isset($_POST[$attrs."_".$key])){ + $this->partitions[$key][$attrs] = $_POST[$attrs."_".$key]; + }else{ + $this->partitions[$key][$attrs] = false; + } + } + } + + /* Adapt ext3 to have -j option */ + if ($this->partitions[$key]["FAIfsType"] == "ext3") { + $this->partitions[$key]["FAIfsOptions"]= preg_replace('/\s*-j\s*/', '', $this->partitions[$key]["FAIfsOptions"]); + $this->partitions[$key]["FAIfsOptions"]= "-j ".$this->partitions[$key]["FAIfsOptions"]; + } + } + + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Check for an empty disk name */ + $d = trim($this->DISKcn); + if($d == "" ){ + $message[] = msgPool::required(_("Name")); + } + if(preg_match("/[^a-z0-9_\-]/i",$d)){ + $message[] = msgPool::invalid(_("Name"),$d,"/[a-z0-9_\-]/i"); + } + + /* check every partition. + * if there is an invalid value defined, append an errorstr to message + */ + + /* Array that contain every partitionname mountpoint etc already assigned */ + $alreadyUsed = array(); + foreach($this->UsedAttrs as $attrs){ + $alreadyUsed[$attrs] = array(); + } + + foreach($this->partitions as $key => $part){ + + /* Skip all checks, if preserve is set */ + if($part['FAIpartitionFlags'] == "preserve"){ + $this->partitions[$key]['FAIfsType'] = "preserve"; + $this->partitions[$key]['FAIpartitionSize'] = "preserve"; + continue; + } + + if((in_array($part['FAImountPoint'],$alreadyUsed['FAImountPoint']))&&($part['FAIfsType']!="swap")){ + $message[]=sprintf(_("please enter a unique mount point for partition %s"),($key)); + } + + if($part['FAIfsType']!="swap" && $part['FAImountPoint'] != "-"){ + if((empty($part['FAImountPoint']))||(!((preg_match("/^\/.*/",$part['FAImountPoint']))||(preg_match("/^swap$/",$part['FAImountPoint']))))){ + $message[]= msgPool::invalid(sprintf(_("partition %s mount point"),$key)); + } + } + if($part['FAIfsType'] == "swap"){ + if(in_array($part['FAIfsType'],$alreadyUsed['FAIfsType'])){ + $message[]=sprintf(_("File system type 'swap' is already used, change file system type for partition %s."),$key); + } + } + if(($part['FAIfsType'] == "swap")&&(!empty($part['FAImountPoint']))&&($part['FAImountPoint']!="swap")){ + $message[]=_("Please use 'swap' as mount point, if 'swap' is used as fs-type."); + } + + $tmp = split("-",$part['FAIpartitionSize']); + switch (count($tmp)){ + case 0: + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); + break; + case 1: + if (!tests::is_id($tmp[0]) &&(!empty($tmp[1]))){ + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); + } + break; + + case 2: + if( !tests::is_id($tmp[0]) && !tests::is_id($tmp[1]) && !empty($tmp[1]) ){ + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); + }elseif(!empty($tmp[1]) && $tmp[0]>=$tmp[1]){ + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); + } + break; + + default: + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); + } + + foreach($this->UsedAttrs as $attrs){ + $alreadyUsed[$attrs][$key] = $part[$attrs]; + } + } + + $cnt = 0; + foreach($this->partitions as $key => $part){ + if($part['FAIpartitionType'] == "primary"){ + $cnt ++ ; + } + } + if($cnt > 3){ + $message[] = _("You have more than 3 primary partition table entries in your configuration, please check your configuration twice."); + } + + return ($message); + } + + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Partition table entry"), + "plDescription" => _("FAI partition table entry"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 27, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "DISKcn" => _("Name"), + "DISKdescription" => _("Description"), + "FAIpartitionType" => _("Partition type"), + "FAIpartitionNr" => _("Partition no."), + "FAIfsType" => _("File system type"), + "FAImountPoint" => _("Mount point"), + "FAIpartitionSize" => _("Partition size"), + "FAImountOptions" => _("Mount options"), + "FAIfsOptions" => _("File system options"), + "FAIpartitionFlags" => _("Partition flags")) + )); + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiProfile.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiProfile.inc new file mode 100644 index 000000000..d92e5178b --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiProfile.inc @@ -0,0 +1,514 @@ +config->get_ldap_link(); + + $this->ui = get_userinfo(); + + /* Parse ldap attribute to get all assigned classes */ + $tmp = split(" ",$this->FAIclass); + $tmp2 = array(); + foreach($tmp as $class){ + if(!empty($class)){ + $tmp2[trim($class)] = trim($class); + } + } + + /* Sort assigned classes */ + if(is_array($tmp2)){ + foreach($tmp2 as $class){ + $this->FAIclasses[$class]=$class; + } + } + + $categories = array("FAIscript","FAItemplate","FAIhook","FAIvariable","FAIpartitionTable","FAIpackageList"); + + /* Build filter */ + $filter= ""; + foreach ($categories as $cat){ + $filter.= "(objectClass=$cat)"; + } + + /* Get ldap connection */ + $base = session::get('CurrentMainBase'); + $ldap->cd($base); + $sort = array(); + + /* search all FAI classes */ + $ldap->search("(|$filter)",array("*")); + while($attrs = $ldap->fetch()){ + + /* Sort by categorie */ + foreach($categories as $cat){ + if(in_array($cat,$attrs['objectClass'])){ + + /* Append entry */ + $this->FAIAllclasses[$attrs['cn'][0]][$cat]=$attrs; + + /* Create sort array, because the array above is a multidimensional array, and can't be sorted by php sorting functions*/ + $sort[strtolower($attrs['cn'][0])] = $attrs['cn'][0]; + } + } + } + + /* Sort the sort array */ + //ksort($sort); + + /* Reorder the FAIclasses array */ + foreach($sort as $name){ + $tmp[$name] =$this->FAIAllclasses[$name]; + } + + /* Assign sorted classes */ + $this->FAIAllclasses = array(); + $this->FAIAllclasses = $tmp; + + if($dn != "new"){ + $this->dn =$dn; + } + $this->old_cn = $this->cn; + } + + + /* Combine new array, used for up down buttons */ + function combineArrays($ar0,$ar1,$ar2) + { + $ret = array(); + if(is_array($ar0)) + foreach($ar0 as $ar => $a){ + $ret[$ar]=$a; + } + if(is_array($ar1)) + foreach($ar1 as $ar => $a){ + $ret[$ar]=$a; + } + if(is_array($ar2)) + foreach($ar2 as $ar => $a){ + $ret[$ar]=$a; + } + return($ret); + } + + + function acl_base_for_current_object($dn) + { + if($dn == "new" || $dn == ""){ + if($this->dn == "new"){ + $dn= $this->parent->parent->acl_base; + }else{ + $dn = $this->dn; + } + } + return($dn); + } + + + /* returns position in array */ + function getpos($atr,$attrs) + { + $i = 0; + foreach($attrs as $attr => $name) { + $i++; + if($attr == $atr){ + return($i); + } + } + return(-1); + } + + /* Transports the given Arraykey one position up*/ + function ArrayUp($atr,$attrs) + { + $ret = $attrs; + $pos = $this->getpos($atr,$attrs) ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == 1))){ + $before = array_slice($attrs,0,($pos-2)); + $mitte = array_reverse(array_slice($attrs,($pos-2),2)); + $unten = array_slice($attrs,$pos); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + + /* Transports the given Arraykey one position down*/ + function ArrayDown($atr,$attrs) + { + $ret = $attrs; + $pos = $this->getpos($atr,$attrs) ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == $cn))){ + $before = array_slice($attrs,0,($pos-1)); + $mitte = array_reverse(array_slice($attrs,($pos-1),2)); + $unten = array_slice($attrs,($pos+1)); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + /* class one position up */ + function catUp($id) + { + /* Get all cats depinding on current dir */ + $cats = $this->FAIclasses; + $this->FAIclasses =$this->ArrayUp($id,$cats); + } + + /* Class one position down */ + function catDown($id) + { + /* Get all cats depinding on current dir */ + $cats = $this->FAIclasses; + $this->FAIclasses =$this->ArrayDown($id,$cats); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","fai/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + $s_entry = ""; + $s_action = ""; + + /* Remove class name From list */ + $sort_once = false; + if(!preg_match("/freeze/",$this->FAIstate)){ + foreach($_POST as $name => $post){ + if(preg_match("/DEL_/i",$name) && $this->acl_is_writeable("FAIclass")){ + $s_action = "delete"; + $s_entry = preg_replace("/DEL_/","",$name); + $s_entry = base64_decode(preg_replace("/_.*$/","",$s_entry)); + }elseif(preg_match("/Add_class/i",$name)&& $this->acl_is_writeable("FAIclass")){ + $s_action = "add"; + }elseif(preg_match("/DelClass/i",$name) && $this->acl_is_writeable("FAIclass")){ + $s_action = "delete"; + $s_entry = $_POST['FAIclass']; + }elseif(preg_match("/AddClass/i",$name) && $this->acl_is_writeable("FAIclass")){ + $s_action = "add"; + } + + /* Check if a list element should be pushed one position up */ + if((preg_match("/sortup_/",$name))&&(!$sort_once) && $this->acl_is_writeable("FAIclass")){ + $sort_once = true; + $val = preg_replace("/sortup_/","",$name); + $val = preg_replace("/_.*$/","",$val); + $val = base64_decode($val); + $this->catUp($val); + } + + /* Check if a list element should be pushed one position down */ + if((preg_match("/sortdown_/",$name))&&(!$sort_once) && $this->acl_is_writeable("FAIclass")){ + $sort_once = true; + $val = preg_replace("/sortdown_/","",$name); + $val = preg_replace("/_.*$/","",$val); + $val = base64_decode($val); + $this->catDown($val); + } + + } + + if($s_action == "delete" && $this->acl_is_writeable("FAIclass")){ + unset($this->FAIclasses[$s_entry]); + } + + if($s_action == "add" && $this->acl_is_writeable("FAIclass")){ + $this->dialog = new faiProfileEntry($this->config,$this->dn,$this->FAIclasses,$this->parent->parent->fai_release); + $this->is_dialog =true; + } + + /* Save Dialog */ + if(isset($_POST['SaveSubObject'])){ + $this->dialog->save_object(); + $msgs= $this->dialog->check(); + if(count($msgs)){ + msg_dialog::display(_("Error"), $msgs, ERROR_DIALOG); + }else{ + $ret = $this->dialog->save(); + foreach($ret as $class){ + $this->FAIclasses[$class] =$class; + } + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + //ksort($this->FAIclasses); + } + } + } + + /* Cancel Dialog */ + if(isset($_POST['CancelSubObject'])){ + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + } + + if(is_object($this->dialog)){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + $divlist =new divSelectBox("Profile"); + $divlist->SetSummary(_("This list displays all assigned class names for this profile.")); + + /* item images */ + $objTypes['FAIhook'] = ""; + $objTypes['FAItemplate'] = ""; + $objTypes['FAIscript'] = ""; + $objTypes['FAIvariable'] = ""; + $objTypes['FAIpackageList'] = ""; + $objTypes['FAIpartitionTable'] = ""; + + /* Delete button */ + $actions = ""; + + /* Up down buttons */ + $linkupdown = " "; + $linkupdown.= ""; + + /* Append fai classes to divlist */ + if($this->acl_is_readable("FAIclass")){ + foreach($this->FAIclasses as $usedClass){ + $str = " "; + $act = ""; + + if(isset($this->FAIAllclasses[$usedClass])){ + foreach($this->FAIAllclasses[$usedClass] as $class => $obj){ + $str.= $objTypes[$class]; + } + } + + $field1 = array("string"=> $usedClass,"attach"=>""); + $field2 = array("string"=> $str,"attach"=>""); + if(!preg_match("/freeze/", $this->FAIstate) && $this->acl_is_writeable("FAIclass")){ + $field3 = array("string"=> preg_replace("/%KEY%/",base64_encode($usedClass),$actions). + preg_replace("/%s/",base64_encode($usedClass),$linkupdown), + "attach"=>"style='border-right:none;'"); + }else{ + $field3 = array("string"=>" ", "attach"=>"style='border-right:none;'"); + } + $divlist->AddEntry(array($field1,$field2,$field3)); + } + } + + $smarty->assign("freeze", preg_match("/freeze/i",$this->FAIstate)); + + $smarty->assign("FAIclasses" ,$this->FAIclasses); + $smarty->assign("divlist" ,$divlist->DrawList()); + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,stripslashes($this->$attrs)); + }else{ + $smarty->assign($attrs,($this->$attrs)); + } + } + + + $dn = $this->acl_base_for_current_object($this->dn); + $smarty->assign("sub_object_is_addable", + preg_match("/c/",$this->ui->get_permissions($dn,"fai/faiScriptEntry")) && + !preg_match("/freeze/",$this->FAIstate)); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name, preg_match("/freeze/",$this->FAIstate))); + } + + $display.= $smarty->fetch(get_template_path('faiProfile.tpl', TRUE)); + return($display); + } + + function remove_from_parent() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $release = $this->parent->parent->fai_release; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $this->dn); + new log("remove","fai/".get_class($this),$use_dn,$this->attributes); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + $this->handle_post_events("remove"); + } + + + /* Save data to object + */ + function save_object() + { + if(!preg_match("/freeze/",$this->FAIstate)){ + plugin::save_object(); + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(count($this->FAIclasses) == 0){ + $message[]=_("No class specified for this profile!"); + } + + if($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + + /* Ensure that we do not overwrite an allready existing entry + */ + if($this->dn == "new" || $this->cn != $this->old_cn){ + $release = $this->parent->parent->fai_release; + $new_dn= 'cn='.$this->cn.",".get_ou('faiProfileRDN').get_ou('faiBaseRDN').$release; + $res = faiManagement::check_class_name("FAIprofile",$this->cn,$new_dn); + if(isset($res[$this->cn])){ + $message[] = msgPool::duplicated(_("Name")); + } + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + $ldap = $this->config->get_ldap_link(); + + $this->FAIclass = ""; + foreach($this->FAIclasses as $class){ + $this->FAIclass.=$class." "; + } + + $this->attrs['FAIclass']=trim($this->FAIclass); + + /* Remove the old FAI profile, if the dn has changed. + */ + if($this->cn != $this->old_cn && $this->old_cn != ""){ + + $old_dn = preg_replace("/^cn=[^,]+,/","cn=".$this->old_cn.",",$this->dn); + FAI::prepare_to_save_FAI_object($old_dn,array(),TRUE); + } + FAI::prepare_to_save_FAI_object($this->dn,$this->attrs); + + if($this->initially_was_account){ + new log("modify","fai/".get_class($this),$this->dn,$this->attributes); + }else{ + new log("create","fai/".get_class($this),$this->dn,$this->attributes); + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Parse ldap attribute to get all assigned classes */ + $tmp = split(" ",$this->FAIclass); + $tmp2 = array(); + foreach($tmp as $class){ + if(!empty($class)){ + $tmp2[trim($class)] = trim($class); + } + } + + /* Sort assigned classes */ + if(is_array($tmp2)){ + foreach($tmp2 as $class){ + $this->FAIclasses[$class]=$class; + } + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Profile"), + "plDescription" => _("FAI profile"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 30, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name"), + "description" => _("Description"), + "FAIclass" => _("FAI classes")) + )); + } + + + /*! \brief Used for copy & paste. + Returns a HTML input mask, which allows to change the cn of this entry. + @param Array Array containing current status && a HTML template. + */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn", htmlentities($this->cn)); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + /*! \brief Used for copy & paste. + Some entries must be renamed to avaoid duplicate entries. + */ + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = get_post('cn'); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiProfileEntry.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiProfileEntry.inc new file mode 100644 index 000000000..652b36052 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiProfileEntry.inc @@ -0,0 +1,273 @@ +ui = get_userinfo(); + + $filter = "(|(objectClass=FAIscript)(objectClass=FAItemplate)(objectClass=FAIhook)". + "(objectClass=FAIvariable)(objectClass=FAIpartitionTable)(objectClass=FAIpackageList))"; + + $FAI_objects = FAI::get_all_objects_for_given_base($base,$filter,true); + + /* Create array with categories to be able to sort different types of objects */ + $categories = array("FAIscript" => "faiScript", + "FAItemplate" => "faiTemplate", + "FAIhook" => "faiHook", + "FAIvariable" => "faiVariable", + "FAIpartitionTable" => "faiPartitionTable", + "FAIpackageList" => "faiPackage"); + + /* Read out all objects from fai tree */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($base); + $sort=array(); + foreach($FAI_objects as $obj){ + + $ldap->cat($obj['dn']); + $attrs = $ldap->fetch(); + + /* Only use objects which have cn set */ + if((isset($attrs['cn'][0]))&&(!in_array($attrs['cn'][0],$used))){ + foreach($categories as $cat => $acl){ + if(in_array($cat,$attrs['objectClass'])){ + + $acl = $this->ui->get_permissions($attrs['dn'],"fai/".$acl); + + /* Append different types of objects */ + $this->FAIAllclasses[$attrs['cn'][0]]['objects'][$cat]=$cat; + + if(!isset($this->FAIAllclasses[$attrs['cn'][0]]['acl'])){ + $this->FAIAllclasses[$attrs['cn'][0]]['acl']=""; + } + $this->FAIAllclasses[$attrs['cn'][0]]['acl'].=$acl; + + /* Set selected status to false */ + $this->FAIAllclasses[$attrs['cn'][0]]['status']=false; + + $sort[strtolower($attrs['cn'][0])] = $attrs['cn'][0]; + } + } + } + } + + + $tmp = array(); + ksort($sort); + foreach($sort as $name){ + $tmp[$name] =$this->FAIAllclasses[$name]; + } + $this->FAIAllclasses = array(); + $this->FAIAllclasses = $tmp; + + /* If no search filter is set, create one */ + if (!session::is_set("SUBfaifilter")){ + $SUBfaifilter= array("base" => get_ou('faiBaseRDN').session::get('CurrentMainBase'), "Sregex" => "*"); + $SUBfaifilter['SShowTemplates'] = true; + $SUBfaifilter['SShowScripts'] = true; + $SUBfaifilter['SShowHooks'] = true; + $SUBfaifilter['SShowVariables'] = true; + $SUBfaifilter['SShowPackages'] = true; + $SUBfaifilter['SShowPartitions']= true; + session::set("SUBfaifilter", $SUBfaifilter); + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty = get_smarty(); + $display = ""; + + $SUBfaifilter = session::get('SUBfaifilter'); + + /* Get alphabet selection */ + if(isset($_GET['search'])){ + $SUBfaifilter['Sregex'] = strtolower($_GET['search'])."*"; + } + + /* If someone used the apply button, update searchfilter */ + if(isset($_POST['Sregex'])){ + foreach($SUBfaifilter as $key => $val){ + if(!isset($_POST[$key])){ + $SUBfaifilter[$key] = false; + }else{ + $SUBfaifilter[$key] =$_POST[$key]; + } + } + $SUBfaifilter['Sregex']= $_POST['Sregex']; + if(!strstr($SUBfaifilter['Sregex'],"*")){ + $SUBfaifilter['Sregex'] = $SUBfaifilter['Sregex']."*"; + } + } + + /* Save current searchfilter in session*/ + session::set('SUBfaifilter',$SUBfaifilter); + + /* Check if we used a checkboxe from the list, to select dselect an entry */ + foreach($_POST as $name => $value){ + foreach($this->FAIAllclasses as $class => $obj){ + $bclass = base64_encode($class); + if(isset($_POST["ON_PAGE_".$bclass])){ + if(isset($_POST['USE_'.$bclass])){ + $this->FAIAllclasses[$class]['status']=true; + }else{ + $this->FAIAllclasses[$class]['status']=false; + } + } + } + } + + /* Create different picture for each object type */ + $objTypes['FAIhook'] = " "; + $objTypes['FAItemplate'] = " "; + $objTypes['FAIscript'] = " "; + $objTypes['FAIvariable'] = " "; + $objTypes['FAIpackageList'] = " "; + $objTypes['FAIpartitionTable'] = " "; + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,stripslashes($this->$attrs)); + }else{ + $smarty->assign($attrs,($this->$attrs)); + } + } + + /* Assign all filter attributes to smarty */ + foreach($SUBfaifilter as $key => $val){ + if(($key != "base")&&($key != "Sregex")){ + if($val){ + $smarty->assign($key."CHK", " checked "); + }else{ + $smarty->assign($key."CHK", ""); + } + }else{ + $smarty->assign($key,$val); + } + } + + /* Create a divlist to display all available class names with the depending object types */ + $divlist = new divlist("ProfileEntry"); + $divlist->SetPluginMode(); + $divlist->SetSummary(_("This list displays all assigned class names for this profile.")); + $divlist->SetEntriesPerPage(0); + $divlist->SetHeader(array(array("string"=> _("Class name")), + array("string"=> _("Objects"),"attach"=>"style='border-right:0px;'"))); + + /* Action button allows us to delete an entry */ + $action = " + "; + + /* Check every single class name to match the current search filter */ + foreach($this->FAIAllclasses as $usedClass => $classes){ + + /* Skip those entries that we are not allowed to read. */ + if(!preg_match("/r/",$classes['acl'])){ + continue; + } + + $fi = str_replace("*",".*",$SUBfaifilter['Sregex']); + + $abort = true; + if(!preg_match("/^".$fi."/i",$usedClass)){ + $abort = false; + continue; + } + if((isset($classes['objects']['FAIscript']))&&($SUBfaifilter['SShowScripts'])){ + $abort = false; + } + if((isset($classes['objects']['FAItemplate']))&&($SUBfaifilter['SShowTemplates'])){ + $abort = false; + } + if((isset($classes['objects']['FAIhook']))&&($SUBfaifilter['SShowHooks'])){ + $abort = false; + } + if((isset($classes['objects']['FAIvariable']))&&($SUBfaifilter['SShowVariables'])){ + $abort = false; + } + if((isset($classes['objects']['FAIpartitionTable']))&&($SUBfaifilter['SShowPartitions'])){ + $abort = false; + } + if((isset($classes['objects']['FAIpackageList']))&&($SUBfaifilter['SShowPackages'])){ + $abort = false; + } + + if(!$abort){ + $str = ""; + foreach($classes['objects'] as $class => $obj){ + $str.= $objTypes[$obj]; + } + + /* Is this entry selected */ + if($classes['status']==true){ + $action_check = preg_replace("/%CHECK%/"," checked ",$action); + }else{ + $action_check = preg_replace("/%CHECK%/","",$action); + } + + /* Append to list */ + $field1 = array("string"=> str_replace("%KEY%",base64_encode($usedClass),$action_check).$usedClass,"attach"=>""); + $field2 = array("string"=> $str,"attach"=>"style='border-right:0px;'"); + $divlist->AddEntry(array($field1,$field2)); + } + } + + $smarty->assign("faihead" , ""); + $smarty->assign("failist" , $divlist->DrawList()); + $smarty->assign("infoimage" , get_template_path('images/info_small.png')); + $smarty->assign("launchimage" , get_template_path('images/lists/action.png')); + $smarty->assign("alphabet" , generate_alphabet()); + $smarty->assign("apply" , apply_filter(TRUE)); + $smarty->assign("search_image" , get_template_path('images/lists/search.png')); + + $display.= $smarty->fetch(get_template_path('faiProfileEntry.tpl', TRUE)); + return($display); + } + + /* Save data to object */ + function save_object() + { + } + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + return ($message); + } + + function save() + { + $tmp = array(); + foreach($this->FAIAllclasses as $class => $obj){ + if($obj['status']==true){ + $tmp[$class]=$class; + } + } + return($tmp); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiScript.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiScript.inc new file mode 100644 index 000000000..dc8359d92 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiScript.inc @@ -0,0 +1,652 @@ +dn =$dn; + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_base($this->dn,"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($this->dn, '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['status'] = "FreshLoaded"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $this->SubObjects[$objects['cn']] = $objects; + } + } + + $this->is_new = FALSE; + if($this->dn == "new"){ + $this->is_new =TRUE; + } + + $this->ui = get_userinfo(); + } + + + /* Reload some attributes */ + function get_object_attributes($object,$attributes) + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($object['dn'],$attributes); + $tmp = $ldap->fetch(); + + foreach($attributes as $attrs){ + if(isset($tmp[$attrs][0])){ + $var = $tmp[$attrs][0]; + + /* Check if we must decode some attributes */ + if(in_array_ics($attrs,$this->sub64coded)){ + $var = base64_decode($var); + } + + /* check if this is a binary entry */ + if(in_array_ics($attrs,$this->subBinary)){ + $var = $ldap->get_attribute($object['dn'], $attrs,$r_array=0); + } + + /* Fix slashes */ + $var = addslashes($var); + $object[$attrs] = $var; + } + } + return($object); + } + + + /* Return a valid dn to fetch acls. Because 'new' will not work. */ + function acl_base_for_current_object($dn) + { + if($dn == "new" || $dn == ""){ + if($this->dn == "new"){ + $dn= $this->parent->parent->acl_base; + }else{ + $dn = $this->dn; + } + } + return($dn); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","fai/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* Add new sub object */ + if(isset($_POST['AddSubObject']) && !preg_match("/freeze/i",$this->FAIstate)){ + $this->dialog= new $this->subClassName($this->config,"new"); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->set_acl_base($this->acl_base); + $this->dialog->set_acl_category("fai"); + $this->dialog->parent = &$this; + $this->is_dialog=true; + } + + if($this->dn != "new"){ + set_object_info($this->dn); + } + + /* File download requested */ + if(isset($_GET['getFAIscript'])){ + if(isset($this->SubObjects[base64_decode($_GET['getFAIscript'])])){ + $obj = $this->SubObjects[base64_decode($_GET['getFAIscript'])]; + $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + send_binary_content(stripslashes($obj['FAIscript']),$obj['cn'].".FAIscript"); + } + } + + /* Handle posts */ + $s_action = $s_entry = ""; + foreach($_POST as $name => $value){ + + /* Edit script posted */ + if(preg_match("/^editscript_/",$name)){ + $s_action = "edit"; + $s_entry = preg_replace("/^editscript_/","",$name); + $s_entry = base64_decode(preg_replace("/_.*/","",$s_entry)); + break; + } + + /* Delete script requested */ + if(preg_match("/^deletescript_/",$name) && !preg_match("/freeze/i",$this->FAIstate)){ + $s_action = "remove"; + $s_entry = preg_replace("/^deletescript_/","",$name); + $s_entry = base64_decode(preg_replace("/_.*/","",$s_entry)); + break; + } + } + + if(isset($_GET['act']) && $_GET['act'] == "edit" && isset($_GET['id'])){ + $s_entry = base64_decode($_GET['id']); + if(isset($this->SubObjects[$s_entry])){ + $s_action = "edit"; + } + } + + if($s_action =="edit" && isset($this->SubObjects[$s_entry])){ + + /* Get object, and load missing entry values */ + $obj = $this->SubObjects[$s_entry]; + if($obj['status'] == "FreshLoaded"){ + $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + } + + /* Create new dialog and set acl attributes */ + $this->dialog= new $this->subClassName($this->config,$this->dn,$obj); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->set_acl_base($this->acl_base_for_current_object($obj['dn'])); + $this->dialog->set_acl_category("fai"); + + /* Assign some additional dialog informations like headline and parent */ + set_object_info($obj['dn']); + $this->dialog->parent = &$this; + $this->is_dialog=true; + } + + /* Check acls, are we allowed to delete an entry */ + if($s_action == "remove" && isset($this->SubObjects[$s_entry])){ + $entry = $this->SubObjects[$s_entry]; + $acl = $this->ui->get_permissions($this->acl_base_for_current_object($entry['dn']),"fai/faiScriptEntry") ; + if(preg_match("/d/",$acl)){ + $status = $entry['status']; + if($status == "edited" || $status == "FreshLoaded"){ + $this->SubObjects[$s_entry]['status']= "delete"; + }else{ + unset($this->SubObjects[$s_entry]); + } + } + } + + /* Save the edited entry */ + if(isset($_POST['SaveSubObject'])){ + + /* Check if there are still errors remaining that must be fixed before saving */ + $this->dialog->save_object(); + $msgs = $this->dialog->check(); + if(count($msgs)>0){ + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + + /* Get return object */ + $obj = $this->dialog->save(); + + /* If we have renamed the script entry, we must remove the old entry */ + if(isset($obj['remove'])){ + + /* Get old entry values */ + $old_stat = $this->SubObjects[$obj['remove']['from']]['status']; + + /* Depending on status, set new status */ + if($old_stat == "edited" || $old_stat == "FreshLoaded"){ + $this->SubObjects[$obj['remove']['from']]['status'] = "delete"; + }elseif($this->SubObjects[$obj['remove']['from']]['status']=="new"){ + unset($this->SubObjects[$obj['remove']['from']]); + } + + /* Append the new entry */ + $obj['status'] = "new"; + $this->SubObjects[$obj['remove']['to']] = $obj; + unset($this->SubObjects[$obj['remove']['to']]['remove']); + }else{ + + /* Set new status and append the entry */ + if($obj['status'] == "FreshLoaded"){ + $obj['status'] = "edited"; + } + $this->SubObjects[$obj['cn']]=$obj; + } + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + + } + } + + /* Sort entries */ + $tmp = $keys = array(); + + if($this->sort_by == "name"){ + foreach($this->SubObjects as $key => $entry){ + $keys[$key]=$entry['cn']; + } + }elseif($this->sort_by == "priority"){ + foreach($this->SubObjects as $key => $entry){ + $keys[$key]=$entry['FAIpriority']; + } + } + + natcasesort($keys); + + if($this->sort_order == "down"){ + $keys =array_reverse($keys); + } + + foreach($keys as $key => $order_var){ + $tmp[$key]=$this->SubObjects[$key]; + } + $this->SubObjects = $tmp; + + /* Cancel Dialog */ + if(isset($_POST['CancelSubObject'])){ + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + } + + /* Print dialog if $this->dialog is set */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + $display = $this->dialog->execute(); + return($display); + } + + /* Divlist added 23.02.2006 + Containing FAIscripts + */ + $divlist = new divlist("FAIscripts"); + $divlist->SetEntriesPerPage(0); + $plug = $_GET['plug']; + + if($this->sort_order == "up"){ + $dir = "\/"; + }else{ + $dir = "/\"; + } + + if($this->sort_by == "name"){ + $sort_name = $dir; + $sort_prio = ""; + }else{ + $sort_name = ""; + $sort_prio = $dir; + } + + $divlist->SetHeader(array( array("string"=>""._("Name").$sort_name.""), + array("string"=>"".$sort_prio._("Priority")."", + "attach"=>"style='width:100px;'"), + array("string"=>_("Download"), + "attach"=>"style='width:100px;'"), + array("string"=>_("Action"), + "attach"=>"style='border-right: 0px;width:100px;text-align:right;'"))); + $divlist->SetHeight(300); + $divlist->SetWidth("100%"); + foreach($this->getList(true) as $key => $name){ + + $dn= $this->acl_base_for_current_object($name['dn']); + $acl = $this->ui->get_permissions($dn,"fai/faiScriptEntry") ; + $act = ""; + + /* Hide delete icon if this object is freezed */ + if(preg_match("/freeze/", $this->FAIstate)){ + $act .= ""; + }else{ + $act .= ""; + if(preg_match("/d/",$acl)){ + $act .=""; + } + } + + /* Check acls for download icon */ + $s_acl = $this->ui->get_permissions($dn,"fai/faiScriptEntry","FAIscript") ; + if(($this->SubObjects[$key]['status'] == "new") || ($this->SubObjects[$key]['dn'] == "new") || !preg_match("/r/",$s_acl)){ + $down = ""; + }else{ + $down = " + "._("Download")." + "; + } + + /* Check if we are allowed to view this object */ + $s_acl = $this->ui->get_permissions($dn,"fai/faiScriptEntry","cn") ; + if(preg_match("/r/",$s_acl)){ + $divlist->AddEntry(array( array("string"=>"".$name['name'].""), + array("string"=>$name['FAIpriority'] , "attach" => "style='width:100px;'"), + array("string"=>$down , "attach" => "style='width:100px;'"), + array("string"=>str_replace("%s",base64_encode($key),$act), + "attach"=>"style='border-right: 0px;width:100px;text-align:right;'"))); + } + } + $smarty->assign("Entry_divlist",$divlist->DrawList()); + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,stripslashes($this->$attrs)); + }else{ + $smarty->assign($attrs,($this->$attrs)); + } + } + + $dn = $this->acl_base_for_current_object($this->dn); + $smarty->assign("sub_object_is_addable", + preg_match("/c/",$this->ui->get_permissions($dn,"fai/faiScriptEntry")) && + !preg_match("/freeze/",$this->FAIstate)); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $display.= $smarty->fetch(get_template_path('faiScript.tpl', TRUE)); + return($display); + } + + + /* Generate listbox friendly SubObject list + */ + function getList($use_dns=false){ + $a_return=array(); + foreach($this->SubObjects as $obj){ + if($obj['status'] != "delete"){ + + $cn = stripslashes($obj['cn']); + $desc = ""; + + if((isset($obj['description']))&&(!empty($obj['description']))){ + $desc = " [".stripslashes($obj['description'])."]"; + } + + if($use_dns){ + $a_return[$obj['cn']]['name']= $cn.$desc; + $a_return[$obj['cn']]['dn']= $obj['dn']; + $a_return[$obj['cn']]['FAIpriority']= $obj['FAIpriority']; + }else{ + $a_return[$obj['cn']] = $cn.$desc; + } + } + } + return($a_return); + } + + + /* Delete me, and all my subtrees + */ + function remove_from_parent() + { + if($this->acl_is_removeable()){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $release = $this->parent->parent->fai_release; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $this->dn); + new log("remove","fai/".get_class($this),$use_dn,$this->attributes); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + + foreach($this->SubObjects as $name => $obj){ + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $obj['dn']); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + } + $this->handle_post_events("remove"); + } + } + + + /* Save data to object + */ + function save_object() + { + if((isset($_POST['FAIscript_posted'])) && !preg_match("/freeze/", $this->FAIstate)){ + plugin::save_object(); + } + + /* Get sort order */ + if(isset($_GET['sort']) && in_array($_GET['sort'],array("name","priority"))){ + if($this->sort_by == $_GET['sort']){ + if($this->sort_order == "up"){ + $this->sort_order = "down"; + }elseif($this->sort_order == "down"){ + $this->sort_order = "up"; + } + } + $this->sort_by = $_GET['sort']; + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Ensure that we do not overwrite an allready existing entry + */ + if($this->is_new){ + $release = $this->parent->parent->fai_release; + $new_dn= 'cn='.$this->cn.",".get_ou('faiScriptRDN').get_ou('faiBaseRDN').$release; + $res = faiManagement::check_class_name("FAIscript",$this->cn,$new_dn); + if(isset($res[$this->cn])){ + $message[] = msgPool::duplicated(_("Name")); + } + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + $ldap = $this->config->get_ldap_link(); + + FAI::prepare_to_save_FAI_object($this->dn,$this->attrs); + + if($this->initially_was_account){ + new log("modify","fai/".get_class($this),$this->dn,$this->attributes); + }else{ + new log("create","fai/".get_class($this),$this->dn,$this->attributes); + } + + /* Prepare FAIscriptEntry to write it to ldap + * First sort array. + * Because we must delete old entries first. + * After deletion, we perform add and modify + */ + $Objects = array(); + + /* We do not need to save untouched objects */ + foreach($this->SubObjects as $name => $obj){ + if($obj['status'] == "FreshLoaded"){ + unset($this->SubObjects[$name]); + } + } + + foreach($this->SubObjects as $name => $obj){ + if($obj['status'] == "delete"){ + $Objects[$name] = $obj; + } + } + foreach($this->SubObjects as $name => $obj){ + if($obj['status'] != "delete"){ + $Objects[$name] = $obj; + } + } + + foreach($Objects as $name => $obj){ + + foreach($this->sub64coded as $codeIt){ + $obj[$codeIt]=base64_encode(stripslashes($obj[$codeIt])); + } + + $tmp = array(); + $attributes = array_merge($this->sub_Load_Later,$this->subAttributes); + foreach($attributes as $attrs){ + if(!isset($obj[$attrs])) continue; + if($obj[$attrs] == ""){ + $obj[$attrs] = array(); + } + if(!is_array($obj[$attrs])){ + $tmp[$attrs] = stripslashes($obj[$attrs]); + }else{ + $tmp[$attrs] = $obj[$attrs]; + } + } + + $tmp['objectClass'] = $this->subClasses; + + $sub_dn = "cn=".$obj['cn'].",".$this->dn; + + if($obj['status']=="new"){ + $ldap->cat($sub_dn,array("objectClass")); + if($ldap->count()){ + $obj['status']="edited"; + } + } + + if(empty($tmp['FAIpriority'])){ + $tmp['FAIpriority'] ="0"; + } + + /* Tag object */ + $this->tag_attrs($tmp, $sub_dn, $this->gosaUnitTag); + + if($obj['status'] == "delete"){ + FAI::prepare_to_save_FAI_object($sub_dn,array(),true); + $this->handle_post_events("remove"); + }elseif($obj['status'] == "edited"){ + FAI::prepare_to_save_FAI_object($sub_dn,$tmp); + $this->handle_post_events("modify"); + }elseif($obj['status']=="new"){ + FAI::prepare_to_save_FAI_object($sub_dn,$tmp); + $this->handle_post_events("add"); + } + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_base($source['dn'],"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($source['dn'], '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['status'] = "edited"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $objects = $this->get_object_attributes($objects,$this->sub_Load_Later); + $this->SubObjects[$objects['cn']] = $objects; + } + } + + + /*! \brief Used for copy & paste. + Returns a HTML input mask, which allows to change the cn of this entry. + @param Array Array containing current status && a HTML template. + */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn", htmlentities($this->cn)); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + /*! \brief Used for copy & paste. + Some entries must be renamed to avaoid duplicate entries. + */ + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = get_post('cn'); + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Script"), + "plDescription" => _("FAI script"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 18, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name")." ("._("Readonly").")", + "description" => _("Description")) + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiScriptEntry.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiScriptEntry.inc new file mode 100644 index 000000000..db8366b1b --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiScriptEntry.inc @@ -0,0 +1,199 @@ +orig_cn= $object['cn']; + $this->dn=$object['dn']; + foreach($object as $name=>$value){ + $oname = $name; + $this->$oname=$value; + } + }else{ + if(is_array($object)&&count($object)){ + $this->orig_cn= $object['cn']; + $this->dn=$object['dn']; + foreach($object as $name=>$value){ + $oname = $name; + $this->$oname=$value; + } + }else{ + + $this->status = "new"; + $this->orig_cn = false; + } + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty = get_smarty(); + $smarty->assign("freeze", preg_match("/freeze/i",$this->FAIstate)); + $display = ""; + + if(isset($_POST['ImportUpload']) && $this->acl_is_writeable("FAIscript")){ + if(($_FILES['ImportFile']['error']!=0)){ + msg_dialog::display(_("Error"), msgPool::incorrectUpload(), ERROR_DIALOG); + }else + if(($_FILES['ImportFile']['size']==0)){ + msg_dialog::display(_("Error"), msgPool::incorrectUpload(_("file is empty")), ERROR_DIALOG); + }else{ + $str = utf8_encode(addslashes(file_get_contents($_FILES['ImportFile']['tmp_name']))); + $this->FAIscript = $str; + } + } + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,(stripslashes($this->$attrs))); + }else{ + $smarty->assign($attrs,($this->$attrs)); + } + } + + /* File download requested */ + if(isset($_GET['getFAIScript'])){ + send_binary_content(stripslashes($this->FAIscript),$this->cn.".FAIscript"); + } + + /* Create download button*/ + if($this->dn != "new" && $this->acl_is_readable("FAIscript")){ + $smarty->assign("DownMe"," + "._("Download")." + "); + }else{ + $smarty->assign("DownMe",""); + } + + for($i =0 ; $i < 100 ; $i++){ + $FAIprioritys[$i]=$i; + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $acl = $this->getacl($name,preg_match("/freeze/i",$this->FAIstate)); + $smarty->assign($name."ACL",$acl); + } + + if(get_magic_quotes_gpc()){ + $smarty->assign("FAIscript" , htmlentities(stripslashes($this->FAIscript))); + }else{ + $smarty->assign("FAIscript" , htmlentities($this->FAIscript)); + } + $smarty->assign("FAIprioritys",$FAIprioritys); + $display.= $smarty->fetch(get_template_path('faiScriptEntry.tpl', TRUE)); + return($display); + } + + /* Save data to object */ + function save_object() + { + if((isset($_POST['SubObjectFormSubmitted'])) && !preg_match("/freeze/", $this->FAIstate)){ + foreach($this->attributes as $attrs){ + if($this->acl_is_writeable($attrs)){ + if(isset($_POST[$attrs])){ + $this->$attrs = $_POST[$attrs]; + }else{ + $this->$attrs = ""; + } + } + } + } + } + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(isset($this->parent->SubObjects[$this->cn]) && $this->cn != $this->orig_cn){ + $message[] = msgPool::duplicated(_("Name")); + } + + $c = trim($this->cn); + if($c == ""){ + $message[] = msgPool::required(_("Name")); + } + if(preg_match("/[^a-z0-9_\-]/i",$c)){ + $message[] = msgPool::invalid(_("Name"),$c,"/[a-z0-9_\-]/i"); + } + + $s = trim($this->FAIscript); + if($s == ""){ + $message[]= msgPool::required(_("Script")); + } + + return ($message); + } + + function save() + { + $tmp=array(); + foreach($this->attributes as $attrs){ + $tmp[$attrs] = $this->$attrs; + } + + /* Strip out dos newlines */ + $tmp['FAIscript']= strtr($this->FAIscript, array("\x0D" => "")); + + if(($this->orig_cn)&&($tmp['cn']!=$this->orig_cn)){ + $tmp['remove']['from'] = $this->orig_cn; + $tmp['remove']['to'] = $tmp['cn']; + } + + $tmp['dn'] = $this->dn; + $tmp['status'] = $this->status; + return($tmp); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Script entry"), + "plDescription" => _("FAI script entry"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 19, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name"), + "description" => _("Description"), + "FAIscript" => _("Script entry"), + "FAIpriority" => _("Script Priority")) + )); + } + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiSummaryTab.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiSummaryTab.inc new file mode 100644 index 000000000..905a97893 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiSummaryTab.inc @@ -0,0 +1,589 @@ +ui = get_userinfo(); + + /* Base object configuration */ + $this->objs = array( + "FAIscript" => array( "Image" =>"plugins/fai/images/fai_script.png", "Name"=>_("Scripts") ,"Tree" =>get_ou('faiScriptRDN')) , + "FAIhook" => array( "Image" =>"plugins/fai/images/fai_hook.png" , "Name"=>_("Hooks") ,"Tree" =>get_ou('faiHookRDN')), + "FAIvariable" => array( "Image" =>"plugins/fai/images/fai_variable.png", "Name"=>_("Variables") ,"Tree" =>get_ou('faiVariableRDN')) , + "FAItemplate" => array( "Image" =>"plugins/fai/images/fai_template.png", "Name"=>_("Templates") ,"Tree" =>get_ou('faiTemplateRDN')) , + "FAIpartitionTable" => array( "Image" =>"plugins/fai/images/fai_partitionTable.png","Name"=>_("Partition table") ,"Tree" =>get_ou('faiPartitionRDN')) , + "FAIpackageList" => array( "Image" =>"plugins/fai/images/fai_packages.png", "Name"=>_("Package list") ,"Tree" =>get_ou('faiPackageRDN')) , + "FAIprofile" => array( "Image" =>"plugins/fai/images/fai_profile.png", "Name"=>_("Profiles") ,"Tree" =>get_ou('faiProfileRDN'))); + } + + + /* Init the fai tree with objects. + If this method is called, all assigned classes and the release name + will be read from parent object. */ + function init() + { + $this->InitCalled = true; + $this->Result = array(); + + /* Get classes & release name + There are 2 different tabs which use the summary tab + faiProfile / Workstations */ + + /* Check if given parent object is fai profile tabs */ + if(isset($this->parent->by_name['faiProfile'])){ + + /* Get Classes and release */ + $this->Classes = $this->parent->by_object['faiProfile']->FAIclasses; + $this->base = $this->parent->by_object['faiProfile']->parent->parent->fai_release; + $str = preg_replace("/^.*".preg_quote(get_ou('faiProfileRDN'), '/')."/","",$this->dn); + $tmp = $this->parent->by_object['faiProfile']->parent->parent->getBranches(); + $this->Release = $tmp[$this->base]; + + /* Check if parent tab is work tab */ + }elseif(isset($this->parent->by_name['workstartup'])){ + $this->Classes = $this->parent->by_object['workstartup']->FAIclass; + $this->Release = $this->parent->by_object['workstartup']->FAIrelease; + + /* Check if this is a workstation or an object group */ + if(isset($this->parent->by_object['workgeneric'])){ + $this->base = $this->parent->by_object['workgeneric']->base; + }elseif(isset($this->parent->by_object['ogroup'])){ + $this->base = $this->parent->by_object['ogroup']->base; + }elseif(isset($this->parent->by_object['servgeneric'])){ + $this->base = $this->parent->by_object['servgeneric']->base; + }else{ + msg_dialog::display(_("Error"), _("Unknown FAI information source!"), ERROR_DIALOG); + } + + /* Append workstation class && LAST */ + if(isset($this->parent->by_object['workgeneric']->cn)){ + $this->Classes[] = $this->parent->by_object['workgeneric']->cn; + } + } + + $tmp = array_flip($this->getBranches()); + + $this->Classes[] = "LAST"; + + /* You need full access to complete collection of fai acls to view this summary */ + $acl = $this->ui->has_complete_category_acls($this->base,"fai"); + if(!preg_match("/r/",$acl)){ + $this->Classes = array(); + } + + /* Set all available releases */ + $this->Releases = $tmp; + $this->usedClasses = array(); + + /* Check the configuration */ + if(count($this->Classes) && (!empty($this->Release))){ + foreach($this->Classes as $class){ + $this->resolveObject($class); + } + } + } + + + /* Capture posts, and call opnen close tag */ + function save_object() + { + $once = true; + + if(isset($_GET['expand']) && isset($_GET['id'])){ + if(isset($this->Result[$_GET['id']])){ + $this->Result[$_GET['id']]['Open'] =true ; + } + } + + if(isset($_GET['compress']) && isset($_GET['id'])){ + if(isset($this->Result[$_GET['id']])){ + unset($this->Result[$_GET['id']]['Open']); + } + } + + foreach($_POST as $name => $value ){ + + /* check for open tag request */ + if(preg_match("/^open_/",$name) && $once){ + $once = false; + $value = preg_replace("/^open_/","",$name); + $value = preg_replace("/_.*$/","",$value); + $this->Result[$value]['Open'] =true ; + } + /* Check for close tag request */ + if(preg_match("/^close_/",$name) && $once){ + $once = false; + $value = preg_replace("/^close_/","",$name); + $value = preg_replace("/_.*$/","",$value); + unset($this->Result[$value]['Open']); + } + if(preg_match("/^reloadList/",$name)){ + $this->InitCalled = false; + } + } + } + + + /* returns an array with all possibly release types */ + function getBranches($base = false,$prefix = "") + { + if(!$base){ + $base = $this->base; + } + return(FAI::get_all_releases_from_base($base,true)); + } + + + /* This function calls all nescessary functions to generate the fai class summary tree */ + function execute() + { + + /* Skip this if fai is deactivated */ + $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(empty($tmp)){ + $str = "

"._("You can't use this plugin until FAI is activated.")."

"; + return $str; + } + + /* Check if we must (re)init the this tab */ + if(!$this->InitCalled){ + $this->init(); + } + + if(isset($_GET['show'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cat(base64_decode($_GET['id']), array('FAIscript', 'FAIhook', 'FAItemplateFile')); + $attrs = $ldap->fetch(); + if($_GET['type'] == "FAIscript"){ + $str = $attrs['FAIscript'][0]; + }elseif($_GET['type'] == "FAIhook"){ + $str = $attrs['FAIscript'][0]; + }elseif($_GET['type'] == "FAItemplate"){ + $str = $attrs['FAItemplateFile'][0]; + } + echo "
".$str."
"; + exit(); + } + + /* Get smarty class & assign created summary results */ + $smarty = get_smarty(); + $acl = $this->ui->has_complete_category_acls($this->base,"fai"); + $smarty->assign("readable", preg_match("/r/",$acl)); + + $this->ObjectList = $this->createSummary($this->Result); + $smarty->assign("objectList",$this->ObjectList); + return($smarty->fetch (get_template_path('faiSummary.tpl', TRUE, dirname(__FILE__)))); + } + + + /* Create output of from resolved fai objects */ + function createSummary($data) + { + /* Don't generate any output, if there is no result */ + $str =" "; + if(!count($this->Result)){ + $str.="
"; + $str.= (_("This object has no FAI classes assigned.")); + $str.= "
"; + return($str); + } + + /* walk through all classes */ + foreach($data as $key => $entry){ + + $image = "".$this->objs[$key]["; + if(!isset($entry['Open'])){ + $str .= " + + + "._("Open")." "; + $str .= $image." "; + $str .= " ".$this->objs[$key]['Name'].""; + }else{ + $str .= " + + "._("Close")." "; + $str .= $image." "; + $str .= "".$this->objs[$key]['Name'].""; + + /* Display FAItemplate FAIhook FAIscript entries */ + if(in_array($key,array("FAItemplate","FAIhook","FAIscript"))){ + + $nums = array(); + $tmp = array(); + if($key == "FAIscript"){ + if(is_array($entry['Entries'])){ + foreach($entry['Entries'] as $scripts){ + foreach($scripts as $script){ + + if(!isset($nums[$script['cn'][0]])){ + $nums[$script['cn'][0]]= 0; + } + $nums[$script['cn'][0]] ++; + + $tmp[$script['FAIpriority'][0].$script['cn'][0].$script['CLASS']] = $script; + } + } + } + krsort($tmp);; + + $entry['Entries'] = $tmp; + }else{ + $tmp = array(); + foreach($entry['Entries'] as $script){ + $tmp[$script['cn'][0].$script['CLASS']] = $script; + if(!isset($nums[$script['cn'][0]])){ + $nums[$script['cn'][0]]= 0; + } + $nums[$script['cn'][0]] ++; + } + ksort($tmp); + $entry['Entries'] = $tmp; + } + + foreach($entry['Entries'] as $cn => $data){ + + if(isset($nums[$data['cn'][0]]) && ($nums[$data['cn'][0]] > 1)){ + $str .=""; + }else{ + $str .=""; + } + + $str .= ""; + $str .= $image." "; + if(isset($data['FAIpriority'][0])){ + $str .= "(".$data['FAIpriority'][0].")"; + } + + $str .= " ".$data['cn'][0]; + if(isset($data['description'][0])){ + $str .= " [".$data['description'][0]."]"; + } + $str .= ""; + $str .= "".$data['CLASS'].""; + $str .= ""; + } + } + + /* Create variable entries */ + if(in_array($key,array("FAIvariable"))) { + foreach($entry['Entries'] as $cn => $data){ + $str .=""; + $str .= $image." ".$data['cn'][0]; + if(isset($data['description'][0])){ + $str .= " [".$data['description'][0]."] "; + } + /* Only display FAIvariableContent if description dosn't contain [*] */ + if(isset($data['description'][0]) && !preg_match("#\[\*\]#",$data['description'][0])){ + $str .=" = '".$data['FAIvariableContent'][0]."'"; + } + $str .= "".$data['CLASS'].""; + $str .=""; + } + } + + /* Create packagelist entries */ + if(in_array($key,array("FAIpackageList"))) { + ksort($entry['Entries']); + foreach($entry['Entries'] as $data){ + $str .=""; + $str .= $image." ".$data['cn'][0]; + $str .= "".$data['CLASS'].""; + $str .= "";; + } + } + + /* Create partition table entries */ + if(in_array($key,array("FAIpartitionTable"))) { + foreach($entry['Entries'] as $cn => $data){ + $str .= ""; + $str .= $image." ".$data['name']; + $str .= "".$data['CLASS'].""; + $str .= ""; + ksort($data['partitions']); + + $str .= ""; + $str .= " + + + + + + + + + "; + + $i = 0; + foreach($data['partitions'] as $key => $part){ + $i ++; + + if($i%2 == 1){ + $c = " class='rowxp1'"; + $d = " class='list1'"; + }else{ + $c = " class='rowxp0'"; + $d = " class='list0'"; + } + + $str.=" + + + + + + + + "; + } + $str .="
"._("No.").""._("Name").""._("FS options").""._("Mount options").""._("Size in MB").""._("Mount point").""._("Type")."
".$i."".$part['cn'][0]."".$part['FAIfsType'][0]."".$part['FAIfsOptions'][0]."".$part['FAIpartitionSize'][0]."".$part['FAImountPoint'][0]."".$part['FAIpartitionType'][0]."
"; + } + } + } + } + $str .=""; + return($str); + } + + + /* resolve specified object to append it to our object tree */ + function resolveObject($class) + { + $ldap = $this->config->get_ldap_link(); + if(isset($this->Releases[$this->Release])){ + $dn = $this->Releases[$this->Release]; + }else{ + return(FALSE); + } + + $resolvedClasses = FAI::get_all_objects_for_given_base($dn,"(&(objectClass=FAIclass)(cn=".$class."))"); + + /* Try to fetch all types of fai objects with the given cn */ + foreach($resolvedClasses as $obj){ + + $dn = $obj['dn']; + $ldap->cat($dn); + + while($attrs = $ldap->fetch()){ + + foreach($this-> objs as $key => $rest){ + if(in_array($key,$attrs['objectClass'])){ + + if(!isset($this->usedClasses[$key][$class])){ + $this->usedClasses[$key][$class] = true; + switch($key){ + case "FAIprofile": $this->prepare_FAIprofile($attrs);break; + case "FAIscript": $this->prepare_FAIscript($attrs);break; + case "FAIhook": $this->prepare_FAIhook($attrs);break; + case "FAIvariable": $this->prepare_FAIvariable($attrs);break; + case "FAItemplate": $this->prepare_FAItemplate($attrs);break; + case "FAIpackageList": $this->prepare_FAIpackageList($attrs);break; + case "FAIpartitionTable": $this->prepare_FAIpartitionTable($attrs);break; + } + } + + } + } + } + } + } + + /* Prepare fai script */ + function prepare_FAIscript($data) + { + if(isset($this->Result['FAIscript']['Entries'])){ + $current = $this->Result['FAIscript']['Entries']; + }else{ + $current = array(); + } + $ldap = $this->config->get_ldap_link(); + $ldap->cd($data['dn']); + $ldap->search("(objectClass=FAIscriptEntry)",array("cn","description","FAIpriority")); + while($attrs = $ldap->fetch()){ + $attrs['CLASS'] = $data['cn'][0]; + $current[$attrs['FAIpriority'][0]][] = $attrs; + } + $this->Result['FAIscript']['Entries'] = $current ; + } + + + /* Prepare fai script */ + function prepare_FAIpartitionTable($data) + { + if(isset($this->Result['FAIpartitionTable']['Entries'])){ + $current = $this->Result['FAIpartitionTable']['Entries']; + }else{ + $current = array(); + } + + /* get subentries */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($data['dn']); + $ldap->search("(objectClass=FAIpartitionDisk)",array("cn","description")); + $disks = array(); + + /* Create an array which is sortable by priority */ + while($attrs = $ldap->fetch()){ + $attrs['CLASS'] = $data['cn'][0]; + $disks[$attrs['cn'][0]]= $attrs; + if(isset($attrs['description'][0])){ + $disks[$attrs['cn'][0]]['name'] = $attrs['cn'][0]." [".$attrs['description'][0]."]"; + }else{ + $disks[$attrs['cn'][0]]['name'] = $attrs['cn'][0]; + } + $disks[$attrs['cn'][0]]['dn'] = $attrs['dn']; + $disks[$attrs['cn'][0]]['partitions'] = array(); + } + + /* Sort by priority */ + foreach($disks as $key => $disk){ + $ldap->cd($disk['dn']); + $ldap->search("(objectClass=FAIpartitionEntry)",array("*")); + while($attrs = $ldap->fetch()){ + if(!isset($attrs['FAIfsOptions'][0])){ + $attrs['FAIfsOptions'][0] = ""; + } + $attrs['CLASS'] = $data['cn'][0]; + $disks[$key]['partitions'][$attrs['cn'][0]] = $attrs; + } + } + $this->Result['FAIpartitionTable']['Entries'] = $disks; + } + + + /* Create template entry */ + function prepare_FAItemplate($data) + { + $current = array(); + if(isset($this->Result['FAItemplate']['Entries'])){ + $current = $this->Result['FAItemplate']['Entries']; + } + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($data['dn']); + $ldap->search("(objectClass=FAItemplateEntry)",array("cn","description")); + while($attrs = $ldap->fetch()){ + $attrs['CLASS'] = $data['cn'][0]; + $current[] = $attrs; + } + $this->Result['FAItemplate']['Entries'] = $current ; + } + + + /* Create a package list */ + function prepare_FAIpackageList($data) + { + $current = array(); + if(isset($this->Result['FAIpackageList']['Entries'])){ + $current = $this->Result['FAIpackageList']['Entries']; + } + if(isset($data['FAIpackage'])){ + unset($data['FAIpackage']['count']); + foreach($data['FAIpackage'] as $pkg){ + $attrs['CLASS'] = $data['cn'][0]; + $attrs['cn'][0] = $pkg; + $current[$pkg] = $attrs; + } + } + $this->Result['FAIpackageList']['Entries'] = $current ; + } + + + /* Create a variable entry */ + function prepare_FAIvariable($data) + { + $current = array(); + if(isset($this->Result['FAIvariable']['Entries'])){ + $current = $this->Result['FAIvariable']['Entries']; + } + $ldap = $this->config->get_ldap_link(); + $ldap->cd($data['dn']); + $ldap->search("(objectClass=FAIvariableEntry)",array("cn","description","FAIvariableContent")); + while($attrs = $ldap->fetch()){ + $attrs['CLASS'] = $data['cn'][0]; + $current[] = $attrs; + } + $this->Result['FAIvariable']['Entries'] = $current ; + } + + /* Create a hook entry */ + function prepare_FAIhook($data) + { + $current = array(); + if(isset($this->Result['FAIhook']['Entries'])){ + $current = $this->Result['FAIhook']['Entries']; + } + $ldap = $this->config->get_ldap_link(); + $ldap->cd($data['dn']); + $ldap->search("(objectClass=FAIhookEntry)",array("cn","description")); + while($attrs = $ldap->fetch()){ + $attrs['CLASS'] = $data['cn'][0]; + $current[$attrs['cn'][0]] = $attrs; + } + $this->Result['FAIhook']['Entries'] = $current ; + } + + + /* Create a new Profile entry */ + function prepare_FAIprofile($data) + { + $classes = split("\ ",$data['FAIclass'][0]); + foreach($classes as $class){ + $class = trim($class); + $this->resolveObject($class); + } + } + + /* Return plugin informations for acl handling * / + static function plInfo() + { + return (array( + "plShortName" => _("Summary"), + "plDescription" => _("FAI summary"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 15, + "plSection" => array("administration"), + "plCategory" => array("workstation","server","fai","ogroups") , + "plProvidedAcls"=> array( + "readable" => _("Viewable")), + )); + } + */ +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiTemplate.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiTemplate.inc new file mode 100644 index 000000000..1a46f050d --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiTemplate.inc @@ -0,0 +1,579 @@ +dn =$dn; + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_base($this->dn,"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($this->dn, '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['status'] = "FreshLoaded"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $this->SubObjects[$objects['cn']] = $objects; + } + } + $this->is_new = FALSE; + if($this->dn == "new"){ + $this->is_new =TRUE; + } + $this->ui = get_userinfo(); + } + + + /* Reload some attributes */ + function get_object_attributes($object,$attributes) + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($object['dn'],$attributes); + $tmp = $ldap->fetch(); + + foreach($attributes as $attrs){ + if(isset($tmp[$attrs][0])){ + $var = $tmp[$attrs][0]; + + /* Check if we must decode some attributes */ + if(in_array_ics($attrs,$this->sub64coded)){ + $var = base64_decode($var); + } + $var = stripslashes($var); + + /* check if this is a binary entry */ + if(in_array_ics($attrs,$this->subBinary)){ + $var = $ldap->get_attribute($object['dn'], $attrs,$r_array=0); + } + + $object[$attrs] = $var; + } + } + return($object); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","fai/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* New Listhandling + */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^editscript_/",$name)&&($once)){ + $once = false; + $entry = preg_replace("/^editscript_/","",$name); + $entry = base64_decode(preg_replace("/_.*/","",$entry)); + $obj = $this->SubObjects[$entry]; + + $acl_dn = $this->acl_base_for_current_object($obj['dn']); + $acl = $this->ui->get_permissions($acl_dn,"fai/faiTemplateEntry"); + if(preg_match("/r/",$acl)){ + if($obj['status'] == "FreshLoaded"){ + $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + } + $this->dialog= new $this->subClassName($this->config,$this->dn,$obj); + $this->dialog->set_acl_base($this->acl_base); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->set_acl_category("fai"); + + set_object_info($obj['dn']); + $this->dialog->parent = &$this; + $this->is_dialog=true; + } + } + if(preg_match("/^deletescript_/",$name)&&($once) && !preg_match("/freeze/",$this->FAIstate)){ + $once = false; + $entry = preg_replace("/^deletescript_/","",$name); + $entry = base64_decode(preg_replace("/_.*/","",$entry)); + $obj = $this->SubObjects[$entry]; + + $acl_dn = $this->acl_base_for_current_object($obj['dn']); + $acl = $this->ui->get_permissions($acl_dn,"fai/faiTemplateEntry"); + if(preg_match("/d/",$acl)){ + $status = $this->SubObjects[$entry]['status']; + if($status == "edited" || $status == "FreshLoaded"){ + $this->SubObjects[$entry]['status']= "delete"; + }else{ + unset($this->SubObjects[$entry]); + } + } + } + } + + /* File download requested */ + if(isset($_GET['getFAItemplate'])){ + if(isset($this->SubObjects[$_GET['getFAItemplate']])){ + $obj = $this->SubObjects[$_GET['getFAItemplate']]; + $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + send_binary_content($obj['FAItemplateFile'],$obj['cn'].".FAItemplate"); + } + } + + /* Edit entries via GET */ + if(isset($_GET['act']) && isset($_GET['id'])){ + if($_GET['act'] == "edit" && isset($this->SubObjects[$_GET['id']])){ + $obj = $this->SubObjects[$_GET['id']]; + if($obj['status'] == "FreshLoaded"){ + $obj = $this->get_object_attributes($obj,$this->sub_Load_Later); + } + $this->dialog= new $this->subClassName($this->config,$this->dn,$obj); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->acl = $this->acl; + $this->dialog->set_acl_category("fai"); + set_object_info($obj['dn']); + $this->dialog->parent = &$this; + $this->is_dialog=true; + } + } + + /* Add new sub object */ + if(isset($_POST['AddSubObject']) && !preg_match("/freeze/",$this->FAIstate)){ + $acl_dn = $this->acl_base_for_current_object($this->dn); + $acl = $this->ui->get_permissions($acl_dn,"fai/faiTemplateEntry"); + + if(preg_match("/c/",$acl)){ + $this->dialog= new $this->subClassName($this->config,"new"); + $this->dialog->set_acl_base($this->acl_base); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->set_acl_category("fai"); + $this->dialog->parent = &$this; + $this->is_dialog=true; + } + } + + if($this->dn != "new"){ + set_object_info($this->dn); + } + + /* Save Dialog */ + if(isset($_POST['SaveSubObject']) && is_object($this->dialog)){ + $this->dialog->save_object(); + $msgs = $this->dialog->check(); + if(count($msgs)>0){ + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + /* Get return object */ + $obj = $this->dialog->save(); + if(isset($obj['remove'])){ + + $old_stat = $this->SubObjects[$obj['remove']['from']]['status']; + + /* Depending on status, set new status */ + if($old_stat == "edited" || $old_stat == "FreshLoaded"){ + $this->SubObjects[$obj['remove']['from']]['status'] = "delete"; + }elseif($this->SubObjects[$obj['remove']['from']]['status']=="new"){ + unset($this->SubObjects[$obj['remove']['from']]); + } + $obj['status'] = "new"; + $this->SubObjects[$obj['remove']['to']] = $obj; + unset($this->SubObjects[$obj['remove']['to']]['remove']); + }else{ + if($obj['status'] == "FreshLoaded"){ + $obj['status'] = "edited"; + } + $this->SubObjects[$obj['cn']]=$obj; + } + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + } + } + + /* Sort entries */ + $tmp = $keys = array(); + foreach($this->SubObjects as $key => $entry){ + $keys[$key]=$key; + } + natcasesort($keys); + foreach($keys as $key){ + $tmp[$key]=$this->SubObjects[$key]; + } + $this->SubObjects = $tmp; + + /* Cancel Dialog */ + if(isset($_POST['CancelSubObject'])){ + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + } + + /* Print dialog if $this->dialog is set */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + $display = $this->dialog->execute(); + return($display); + } + + /* Divlist Containing FAItemplates */ + $divlist = new divSelectBox("FAItemplates"); + $divlist->setHeight(400); + + $tmp = $this->getList(true); + + /* Create div list with all sub entries listed */ + foreach($this->SubObjects as $key => $name){ + + /* Skip removed entries */ + if($name['status'] == "delete") continue; + + /* Get permissions */ + $dn = $this->acl_base_for_current_object($name['dn']); + $acl = $this->ui->get_permissions($dn,"fai/faiTemplateEntry") ; + $act = ""; + + /* Hide delete icon if this object is freezed */ + if(preg_match("/freeze/",$this->FAIstate)){ + $act .= ""; + }else{ + $act .= ""; + if(preg_match("/d/",$acl)){ + $act .=""; + } + } + + /* Check acls for download icon */ + $s_acl = $this->ui->get_permissions($dn,"fai/faiTemplateEntry","FAItemplateFile") ; + if(($this->SubObjects[$key]['status'] == "new") || ($this->SubObjects[$key]['dn'] == "new") || !preg_match("/r/",$s_acl)){ + $down = ""; + }else{ + $down = " + "._("Download")." + "; + } + + /* Check if we are allowed to view this object */ + $s_acl = $this->ui->get_permissions($dn,"fai/faiTemplateEntry","cn") ; + if(preg_match("/r/",$s_acl)){ + + $edit_link = "".$tmp[$key].""; + $divlist->AddEntry(array( array("string"=> $edit_link), + array("string"=>$down , "attach" => "style='width:20px;'"), + array("string"=>str_replace("%s",base64_encode($key),$act), + "attach"=>"style='border-right: 0px;width:50px;text-align:right;'"))); + } + } + $smarty->assign("Entry_divlist",$divlist->DrawList()); + /* Divlist creation complete + */ + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,stripslashes($this->$attrs)); + }else{ + $smarty->assign($attrs,($this->$attrs)); + } + } + + $dn = $this->acl_base_for_current_object($this->dn); + $smarty->assign("sub_object_is_addable", + preg_match("/c/",$this->ui->get_permissions($dn,"fai/faiTemplateEntry")) && + !preg_match("/freeze/",$this->FAIstate)); + + foreach($this->attributes as $attr){ + $smarty->assign($attr."ACL",$this->getacl($attr, preg_match("/freeze/",$this->FAIstate))); + } + + $display.= $smarty->fetch(get_template_path('faiTemplate.tpl', TRUE)); + return($display); + } + + + function acl_base_for_current_object($dn) + { + if($dn == "new" || $dn == ""){ + if($this->dn == "new"){ + $dn = $dn= $this->parent->parent->acl_base; + }else{ + $dn = $this->dn; + } + } + return($dn); + } + + + /* Generate listbox friendly SubObject list + */ + function getList(){ + $a_return=array(); + foreach($this->SubObjects as $obj){ + if($obj['status'] != "delete"){ + + if((isset($obj['description']))&&(!empty($obj['description']))){ + if(strlen($obj['description']) > 40){ + $obj['description'] = substr($obj['description'],0,40)."..."; + } + $a_return[$obj['cn']]= $obj['cn']." [".$obj['description']."]"; + }else{ + $a_return[$obj['cn']]= $obj['cn']; + } + } + } + return($a_return); + } + + /* Delete me, and all my subtrees + */ + function remove_from_parent() + { + if($this->acl_is_removeable()){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $release = $this->parent->parent->fai_release; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn, '/'))."/i", $release, $this->dn); + new log("remove","fai/".get_class($this),$use_dn,$this->attributes); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + + foreach($this->SubObjects as $name => $obj){ + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $obj['dn']); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + } + $this->handle_post_events("remove"); + } + } + + + /* Save data to object + */ + function save_object() + { + if((isset($_POST['FAItemplate_posted'])) && (!preg_match("/freeze/",$this->FAIstate))){ + plugin::save_object(); + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Ensure that we do not overwrite an allready existing entry + */ + if($this->is_new){ + $release = $this->parent->parent->fai_release; + $new_dn= 'cn='.$this->cn.",".get_ou('faiTemplateRDN').get_ou('faiBaseRDN').$release; + $res = faiManagement::check_class_name("FAItemplate",$this->cn,$new_dn); + if(isset($res[$this->cn])){ + $message[] = msgPool::duplicated(_("Name")); + } + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + $ldap = $this->config->get_ldap_link(); + + FAI::prepare_to_save_FAI_object($this->dn,$this->attrs); + + if($this->initially_was_account){ + new log("modify","fai/".get_class($this),$this->dn,$this->attributes); + }else{ + new log("create","fai/".get_class($this),$this->dn,$this->attributes); + } + + /* Prepare FAIscriptEntry to write it to ldap + * First sort array. + * Because we must delete old entries first. + * After deletion, we perform add and modify + */ + $Objects = array(); + $tmp = $this->SubObjects; + foreach($tmp as $name => $obj){ + if($obj['status'] == "FreshLoaded"){ + unset($tmp[$name]); + } + } + + foreach($tmp as $name => $obj){ + if($obj['status'] == "delete"){ + $Objects[$name] = $obj; + } + } + foreach($tmp as $name => $obj){ + if($obj['status'] != "delete"){ + $Objects[$name] = $obj; + } + } + + foreach($Objects as $name => $obj){ + + foreach($this->sub64coded as $codeIt){ + $obj[$codeIt]=base64_encode($obj[$codeIt]); + } + $tmp = array(); + $attributes = array_merge($this->sub_Load_Later,$this->subAttributes); + foreach($attributes as $attrs){ + if(!isset($obj[$attrs]) || $obj[$attrs] == ""){ + $obj[$attrs] = array(); + } + $tmp[$attrs] =($obj[$attrs]); + } + + $tmp['objectClass'] = $this->subClasses; + + $sub_dn = "cn=".$obj['cn'].",".$this->dn; + + if($obj['status']=="new"){ + $ldap->cat($sub_dn,array("objectClass")); + if($ldap->count()){ + $obj['status']="edited"; + } + } + + /* Tag object */ + $this->tag_attrs($tmp, $sub_dn, $this->gosaUnitTag); + + if($obj['status'] == "delete"){ + FAI::prepare_to_save_FAI_object($sub_dn,array(),true); + $this->handle_post_events("remove"); + }elseif($obj['status'] == "edited"){ + FAI::prepare_to_save_FAI_object($sub_dn,$tmp); + $this->handle_post_events("modify"); + }elseif($obj['status']=="new"){ + FAI::prepare_to_save_FAI_object($sub_dn,$tmp); + $this->handle_post_events("add"); + } + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_base($source['dn'],"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + foreach($res as $obj){ + + /* Skip not relevant objects */ + if(!preg_match("/".preg_quote($source['dn'], '/')."$/i",$obj['dn'])) continue; + + $objects = array(); + $objects['status'] = "edited"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $objects = $this->get_object_attributes($objects,$this->sub_Load_Later); + $this->SubObjects[$objects['cn']] = $objects; + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Template"), + "plDescription" => _("FAI template"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 24, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name")." ("._("Readonly").")", + "description" => _("Description")) + )); + } + + + /*! \brief Used for copy & paste. + Returns a HTML input mask, which allows to change the cn of this entry. + @param Array Array containing current status && a HTML template. + */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn", htmlentities($this->cn)); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + /*! \brief Used for copy & paste. + Some entries must be renamed to avaoid duplicate entries. + */ + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = get_post('cn'); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiTemplateEntry.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiTemplateEntry.inc new file mode 100644 index 000000000..ad1451a36 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiTemplateEntry.inc @@ -0,0 +1,284 @@ +orig_cn= $object['cn']; + $this->dn=$object['dn']; + foreach($object as $name=>$value){ + $oname = $name; + $this->$oname=$value; + } + }else{ + $this->status = "new"; + $this->orig_cn= false; + } + + $this->user = explode( '.', $this->FAIowner ); + $this->group = $this->user[1]; + $this->user = $this->user[0]; + + session::set('binary',$this->FAItemplateFile); + session::set('binarytype','octet-stream'); + session::set('binaryfile',basename($this->FAItemplatePath)); + + if(!empty($this->dn) && $this->dn != "new"){ + $ldap = $this->config->get_ldap_link(); + session::set('binary',$ldap->get_attribute($this->dn,"FAItemplateFile")); + $this->FAItemplateFile = session::get('binary'); + } + + $this->FAImode= sprintf("%0.4s", $this->FAImode)." "; + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty = get_smarty(); + $smarty->assign("rand", rand(0, 10000)); + $display = ""; + + if(isset($_POST['TmpFileUpload']) && $this->acl_is_writeable("FAItemplateFile")){ + if($str=file_get_contents($_FILES['FAItemplateFile']['tmp_name'])){ + $this->FAItemplateFile = $str; + + /* If we don't have a filename set it from upload filename. */ + if( 0 == strlen(preg_replace("/^.*\//","",$this->FAItemplatePath))){ + $this->FAItemplatePath = preg_replace("/[^\/]*$/","",$this->FAItemplatePath).$_FILES['FAItemplateFile']['name']; + } + + session::set('binary',$this->FAItemplateFile); + session::set('binarytype','octet-stream'); + session::set('binaryfile',basename($this->FAItemplatePath)); + } + } + + /* File download requested */ + if(isset($_GET['getFAItemplate'])){ + send_binary_content($this->FAItemplateFile,$this->cn.".FAItemplate"); + } + + $status= _("no file uploaded yet"); + + $bStatus = false; // Hide download icon on default + + if(strlen($this->FAItemplateFile)){ + + $status= sprintf(_("exists in database (size: %s bytes)"),strlen($this->FAItemplateFile)); + $bStatus = true; // Display download icon + } + $smarty->assign("status",$status); + $smarty->assign("bStatus",$bStatus); + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,stripslashes($this->$attrs)); + }else{ + $smarty->assign($attrs,($this->$attrs)); + } + } + + /* Assign file modes */ + $tmode= "$this->FAImode "; + foreach (array("s", "u", "g", "o") as $type){ + $current= substr($tmode, 0, 1); + $tmode= preg_replace("/^./", "", $tmode); + $nr= 1; + while ($nr < 5){ + if ($current & $nr){ + $smarty->assign($type.$nr, "checked"); + } else { + $smarty->assign($type.$nr, ""); + } + $nr+= $nr; + } + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr."ACL",$this->getacl($attr,preg_match("/freeze/",$this->FAIstate))); + } + + /* We now split cn/FAItemplatePath to make things more clear... */ + $smarty->assign("templateFile", preg_replace("/^.*\//","",$this->FAItemplatePath)); + $smarty->assign("templatePath", preg_replace("/[^\/]*$/","",$this->FAItemplatePath)); + $smarty->assign("freeze", preg_match("/freeze/i",$this->FAIstate));; + + $display.= $smarty->fetch(get_template_path('faiTemplateEntry.tpl', TRUE)); + return($display); + } + + /* Save data to object */ + function save_object() + { + /* Check if form is posted and we are not freezed */ + if((isset($_POST['SubObjectFormSubmitted'])) && !preg_match("/freeze/", $this->FAIstate)){ + + /* Remember destination current path + depending on the ACLs we will assemble a new one later. + */ + $cur_path = $this->FAItemplatePath; + plugin::save_object(); + + /* Set user.group (FAIowner) attribute */ + if(isset($_POST['group']) && isset($_POST["user"]) && $this->acl_is_writeable("FAIowner")){ + $this->FAIowner = $_POST["user"].'.'.$_POST["group"]; + $this->user = $_POST['user']; + $this->group= $_POST['group']; + } + + /* Check if permissions have changed */ + if($this->acl_is_writeable("FAImode")){ + + /* Save mode */ + $tmode= ""; + foreach (array("s", "u", "g", "o") as $type){ + $nr= 1; + $dest= 0; + while ($nr < 5){ + if (isset($_POST["$type$nr"])){ + $dest+= $nr; + } + $nr+= $nr; + } + $tmode= $tmode.$dest; + } + $this->FAImode= $tmode; + } + + /* Check if we are allowed to change the destination directory + */ + if($this->acl_is_writeable("FAItemplatePath")){ + $cur_path = get_post('templatePath').'/'.basename($cur_path); + } + + /* Check if we are allowed to change the destination directory + */ + if($this->acl_is_writeable("cn")){ + $cur_path = preg_replace("/[^\/]*$/","",$cur_path).get_post('templateFile'); + } + $cur_path= str_replace("//","/",$cur_path); + if(trim($cur_path,"/") == ""){ + $cur_path= ""; + } + $this->FAItemplatePath = $this->cn= $cur_path; + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(isset($this->parent->SubObjects[$this->cn]) && $this->cn != $this->orig_cn){ + $message[] = msgPool::duplicated(_("Name")); + } + + if(empty($this->FAItemplateFile)){ + $message[]= msgPool::required(_("File")); + } + + if(!preg_match('/^\//', $this->FAItemplatePath)){ + $message[]= msgPool::invalid(_("Destination path"),"","","/path"); + } + + $b = trim(basename($this->FAItemplatePath)); + if($b == ""){ + $message[] = msgPool::required(_("File name")); + } + + if($this->user == ""){ + $message[] = msgPool::required(_("User")); + }elseif(preg_match("/[^0-9a-z]/i",$this->user)){ + $message[] = msgPool::invalid(_("User"),$this->user,"/[0-9a-z]/"); + } + + if($this->group == ""){ + $message[] = msgPool::required(_("Group")); + }elseif (!tests::is_uid($this->group)){ + if (strict_uid_mode()){ + $message[]= msgPool::invalid(_("Group"), $this->group, "/[a-z0-9_-]/"); + } else { + $message[]= msgPool::invalid(_("Group"), $this->group, "/[a-z0-9_-]/i"); + } + } + + return ($message); + } + + function save() + { + $tmp=array(); + foreach($this->attributes as $attrs){ + $tmp[$attrs] = $this->$attrs; + } + + if(($this->orig_cn)&&($tmp['cn']!=$this->orig_cn)){ + $tmp['remove']['from'] = $this->orig_cn; + $tmp['remove']['to'] = $tmp['cn']; + } + + $tmp['dn'] = $this->dn; + $tmp['status'] = $this->status; + + return($tmp); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Template entry"), + "plDescription" => _("FAI template entry"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 25, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name"), + "description" => _("Description"), + "FAItemplateFile" => _("Template file"), + "FAItemplatePath" => _("Template path"), + "FAIowner" => _("File owner"), + "FAImode" => _("File permissions")) + )); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiVariable.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiVariable.inc new file mode 100644 index 000000000..0847d8842 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiVariable.inc @@ -0,0 +1,463 @@ +dn =$dn; + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_object($this->dn,"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + foreach($res as $obj){ + $objects = array(); + $objects['description'] = ""; + $objects['status'] = "FreshLoaded"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $this->SubObjects[$objects['cn']] = $objects; + } + } + $this->is_new = FALSE; + if($this->dn == "new"){ + $this->is_new =TRUE; + } + $this->ui = get_userinfo(); + } + + + function acl_base_for_current_object($dn) + { + if($dn == "new" || $dn == ""){ + if($this->dn == "new"){ + $dn= $this->parent->parent->acl_base; + }else{ + $dn = $this->dn; + } + } + return($dn); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","fai/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* Add new sub object */ + if(isset($_POST['AddSubObject']) && !preg_match("/freeze/i",$this->FAIstate)){ + $this->dialog= new $this->subClassName($this->config,"new"); + $this->dialog->set_acl_base($this->acl_base_for_current_object($this->dn)); + $this->dialog->set_acl_category("fai"); + $this->dialog->parent = &$this; + $this->dialog->FAIstate = $this->FAIstate; + $this->is_dialog=true; + } + + if($this->dn != "new"){ + set_object_info($this->dn); + } + + + /* Edit selected Sub Object */ + if((isset($_POST['EditSubObject']))&&(isset($_POST['SubObject']))){ + + $var = $_POST['SubObject'][0]; + $c_dn = $this->acl_base_for_current_object($this->SubObjects[$var]['dn']); + $this->dialog= new $this->subClassName($this->config,$this->dn,$this->SubObjects[$var]); + $this->dialog->set_acl_category("fai"); + $this->dialog->set_acl_base($c_dn); + $this->dialog->FAIstate = $this->FAIstate; + $this->dialog->parent = &$this; + set_object_info($this->SubObjects[$var]['dn']); + $this->is_dialog=true; + } + + /* Remove Sub object */ + if((isset($_POST['DelSubObject']))&&(isset($_POST['SubObject'])) && !preg_match("/freeze/i",$this->FAIstate)){ + foreach($_POST['SubObject'] as $var){ + + $c_dn = $this->acl_base_for_current_object($this->SubObjects[$var]['dn']); + $acl = $this->ui->get_permissions($c_dn,"fai/faiVariable"); + if(preg_match("/d/",$acl)){ + if($this->SubObjects[$var]['status'] != "new"){ + $this->SubObjects[$var]['status']= "delete"; + }else{ + unset($this->SubObjects[$var]); + } + } + } + } + + /* Save Dialog */ + if(isset($_POST['SaveSubObject']) && !preg_match("/freeze/i",$this->FAIstate)){ + $this->dialog->save_object(); + $msgs = $this->dialog->check(); + if(count($msgs)>0){ + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $obj = $this->dialog->save(); + if(isset($obj['remove'])){ + if($this->SubObjects[$obj['remove']['from']]['status'] != "new"){ + $this->SubObjects[$obj['remove']['from']]['status'] = "delete"; + }else{ + unset($this->SubObjects[$obj['remove']['from']]); + } + $obj['status'] = "new"; + $this->SubObjects[$obj['remove']['to']] = $obj; + unset($this->SubObjects[$obj['remove']['to']]['remove']); + }else{ + $obj['status'] = "edited"; + $this->SubObjects[$obj['cn']]=$obj; + } + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + } + } + + /* Sort entries */ + $tmp = $keys = array(); + foreach($this->SubObjects as $key => $entry){ + $keys[$key]=$key; + } + natcasesort($keys); + foreach($keys as $key){ + $tmp[$key]=$this->SubObjects[$key]; + } + $this->SubObjects = $tmp; + + /* Cancel Dialog */ + if(isset($_POST['CancelSubObject'])){ + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + } + + /* Print dialog if $this->dialog is set */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + $display = $this->dialog->execute(); + return($display); + } + + $ui = get_userinfo(); + $ret = $this->getList(); + $tmp = array(); + foreach($this->SubObjects as $key => $obj){ + $acl = $ui->get_permissions($obj['dn'],"fai/faiVariableEntry"); + if((preg_match("/r/",$acl) || $obj['dn'] == "new") && isset($ret[$key])){ + $tmp[$key] = $ret[$key]; + } + } + $smarty->assign("SubObjects",$tmp); + + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,htmlentities (stripslashes(utf8_decode($this->$attrs)))); + }else{ + $smarty->assign($attrs,htmlentities (utf8_decode($this->$attrs))); + } + } + + $c_dn = $this->acl_base_for_current_object($this->dn); + $smarty->assign("is_createable", preg_match("/c/",$this->ui->get_permissions($c_dn,"fai/faiVariableEntry")) && !preg_match("/freeze/", $this->FAIstate)); + $smarty->assign("is_removeable", preg_match("/d/",$this->ui->get_permissions($c_dn,"fai/faiVariableEntry")) && !preg_match("/freeze/", $this->FAIstate)); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation) { + $smarty->assign($name."ACL",$this->getacl($name,preg_match("/freeze/i",$this->FAIstate))); + } + + + $display.= $smarty->fetch(get_template_path('faiVariable.tpl', TRUE)); + return($display); + } + + /* Generate listbox friendly SubObject list + */ + function getList(){ + $a_return=array(); + foreach($this->SubObjects as $obj){ + if($obj['status'] != "delete"){ + + if((isset($obj['description']))&&(!empty($obj['description']))&&(!preg_match("/\[\*\]/",$obj['description']))){ + if (preg_match("/\[\*\]/", $obj['description'])){ + $a_return[$obj['cn']]= $obj['cn']." [".preg_replace("/\s*\[\*\]\s*/", "", $obj['description'])."]"; + } else { + $a_return[$obj['cn']]= $obj['cn']."=".$obj['FAIvariableContent']." [".$obj['description']."]"; + } + }else{ + if (preg_match("/\[\*\]/", $obj['description'])){ + $a_return[$obj['cn']]= $obj['cn']; + } else { + $a_return[$obj['cn']]= $obj['cn']."=".$obj['FAIvariableContent']; + } + } + } + } + return($a_return); + } + + /* Delete me, and all my subtrees + */ + function remove_from_parent() + { + if($this->acl_is_removeable()){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $release = $this->parent->parent->fai_release; + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $this->dn); + new log("remove","fai/".get_class($this),$use_dn,$this->attributes); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + + foreach($this->SubObjects as $name => $obj){ + $use_dn = preg_replace("/".preg_quote(FAI::get_release_dn($this->dn), '/')."/i", $release, $obj['dn']); + FAI::prepare_to_save_FAI_object($use_dn,array(),true); + } + $this->handle_post_events("remove"); + } + } + + + /* Save data to object + */ + function save_object() + { + if((isset($_POST['FAIvariable_posted'])) && !preg_match("/freeze/", $this->FAIstate) ){ + plugin::save_object(); + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Ensure that we do not overwrite an allready existing entry + */ + if($this->is_new){ + $release = $this->parent->parent->fai_release; + $new_dn= 'cn='.$this->cn.",".get_ou('faiVariableRDN').get_ou('faiBaseRDN').$release; + $res = faiManagement::check_class_name("FAIvariable",$this->cn,$new_dn); + if(isset($res[$this->cn])){ + $message[] = msgPool::duplicated(_("Name")); + } + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + $ldap = $this->config->get_ldap_link(); + FAI::prepare_to_save_FAI_object($this->dn,$this->attrs); + + if($this->initially_was_account){ + new log("modify","fai/".get_class($this),$this->dn,$this->attributes); + }else{ + new log("create","fai/".get_class($this),$this->dn,$this->attributes); + } + + /* Prepare FAIscriptEntry to write it to ldap + * First sort array. + * Because we must delete old entries first. + * After deletion, we perform add and modify + */ + $Objects = $this->SubObjects; + foreach($Objects as $name => $obj){ + + foreach($this->sub64coded as $codeIt){ + $obj[$codeIt]=base64_encode($obj[$codeIt]); + } + + $tmp = array(); + foreach($this->subAttributes as $attrs){ + if(!isset($obj[$attrs]) || $obj[$attrs] == ""){ + $obj[$attrs] = array(); + } + $tmp[$attrs] = $obj[$attrs]; + } + + $tmp['objectClass'] = $this->subClasses; + + $sub_dn = "cn=".$obj['cn'].",".$this->dn; + + if($obj['status']=="new"){ + $ldap->cat($sub_dn,array("objectClass")); + if($ldap->count()){ + $obj['status']="edited"; + } + } + + /* Tag object */ + $this->tag_attrs($tmp, $sub_dn, $this->gosaUnitTag); + + if($obj['status'] == "delete"){ + FAI::prepare_to_save_FAI_object($sub_dn,array(),true); + $this->handle_post_events("remove"); + }elseif($obj['status'] == "edited"){ + FAI::prepare_to_save_FAI_object($sub_dn,$tmp); + $this->handle_post_events("modify"); + }elseif($obj['status']=="new"){ + FAI::prepare_to_save_FAI_object($sub_dn,$tmp); + $this->handle_post_events("add"); + } + + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Read all leaf objects of this object (For FAIscript this would be FAIscriptEntry) + */ + $res = FAI::get_all_objects_for_given_object($source['dn'],"(&(objectClass=FAIclass)(objectClass=".$this->subClass."))"); + foreach($res as $obj){ + + $objects = array(); + $objects['status'] = "edited"; + $objects['dn'] = $obj['dn']; + $objects = $this->get_object_attributes($objects,$this->subAttributes); + $this->SubObjects[$objects['cn']] = $objects; + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Variable"), + "plDescription" => _("FAI variable"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 22, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name")." ("._("Read only").")", + "description" => _("Description")) + )); + } + + + /*! \brief Used for copy & paste. + Returns a HTML input mask, which allows to change the cn of this entry. + @param Array Array containing current status && a HTML template. + */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn", htmlentities($this->cn)); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + /*! \brief Used for copy & paste. + Some entries must be renamed to avaoid duplicate entries. + */ + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = get_post('cn'); + } + } + + /* Reload some attributes */ + function get_object_attributes($object,$attributes) + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($object['dn'],$attributes); + $tmp = $ldap->fetch(); + + foreach($attributes as $attrs){ + if(isset($tmp[$attrs][0])){ + $var = $tmp[$attrs][0]; + + /* Check if we must decode some attributes */ + if(in_array_ics($attrs,$this->sub64coded)){ + $var = base64_decode($var); + } + + /* check if this is a binary entry */ + if(in_array_ics($attrs,$this->subBinary)){ + $var = $ldap->get_attribute($object['dn'], $attrs,$r_array=0); + } + + /* Fix slashes */ + $var = addslashes($var); + $object[$attrs] = $var; + } + } + return($object); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiVariableEntry.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiVariableEntry.inc new file mode 100644 index 000000000..dd8873955 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/class_faiVariableEntry.inc @@ -0,0 +1,146 @@ +orig_cn= $object['cn']; + $this->dn=$object['dn']; + foreach($object as $name=>$value){ + $oname = $name; + $this->$oname=addslashes($value); + } + }else{ + $this->status = "new"; + $this->orig_cn = false; + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty = get_smarty(); + $display = ""; + + /* Magic quotes GPC, escapes every ' " \, to solve some security risks + * If we post the escaped strings they will be escaped again + */ + foreach($this->attributes as $attrs){ + if(get_magic_quotes_gpc()){ + $smarty->assign($attrs,htmlentities (stripslashes(utf8_decode($this->$attrs)))); + }else{ + $smarty->assign($attrs,htmlentities (utf8_decode($this->$attrs))); + } + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $acl = $this->getacl($name, preg_match("/freeze/",$this->FAIstate)); + $smarty->assign($name."ACL",$acl); + } + + $smarty->assign("freeze",preg_match("/freeze/",$this->FAIstate)); + $display.= $smarty->fetch(get_template_path('faiVariableEntry.tpl', TRUE)); + return($display); + } + + + /* Save data to object */ + function save_object() + { + if((isset($_POST['SubObjectFormSubmitted'])) && !preg_match("/freeze/", $this->FAIstate)){ + foreach($this->attributes as $attrs){ + if($this->acl_is_writeable($attrs)){ + if(isset($_POST[$attrs])){ + $this->$attrs = $_POST[$attrs]; + }else{ + $this->$attrs = ""; + } + } + } + } + } + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(isset($this->parent->SubObjects[$this->cn]) && $this->cn != $this->orig_cn){ + $message[] = msgPool::duplicated(_("Name")); + } + + if($this->FAIvariableContent == "") { + $message[]= msgPool::required(_("Content")); + } + + $c = trim($this->cn); + if($c == ""){ + $message[] = msgPool::required(_("Name")); + } + if(preg_match("/[^a-z0-9_\-]/i",$c)){ + $message[] = msgPool::invalid(_("Name"),$c,"/[a-z0-9_\-]/i"); + } + + return ($message); + } + + function save() + { + $tmp=array(); + foreach($this->attributes as $attrs){ + $tmp[$attrs] = stripslashes( $this->$attrs); + } + + if(($this->orig_cn)&&($tmp['cn']!=$this->orig_cn)){ + $tmp['remove']['from'] = $this->orig_cn; + $tmp['remove']['to'] = $tmp['cn']; + } + + $tmp['dn'] = $this->dn; + $tmp['status'] = $this->status; + return($tmp); + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Variable entry"), + "plDescription" => _("FAI variable entry "), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 23, + "plSection" => array("administration"), + "plCategory" => array("fai"), + "plProvidedAcls" => array( + "cn" => _("Name"), + "description" => _("Description"), + "FAIvariableContent"=> _("Variable content") ) + )); + } + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/faiGroupHandle.tpl b/trunk/gosa-plugins/fai/admin/fai/faiGroupHandle.tpl new file mode 100644 index 000000000..829db5090 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiGroupHandle.tpl @@ -0,0 +1,108 @@ +{if $mode == "remove"} + +{t}Please select the objects you want to remove:{/t} +
+
+ +{foreach from=$FAI_group item=item key=key} + + + + + + + +{/foreach} +
+ {if $item.freezed} + + {else} + + {/if} + + {$types.$key.KZL} + {$types.$key.NAME}{if $item.freezed}({t}Freezed{/t}){/if}({$item.description})
+ +{elseif $mode == "edit"} + +{t}Select the object you want to edit:{/t} +
+
+ +{foreach from=$FAI_group item=item key=key} + + + + + + +{/foreach} +
+ + + {$types.$key.KZL} + {$types.$key.NAME}({$item.description}) +
+ +{elseif $mode == "copy"} + +{t}Select the object you want to copy:{/t} +
+
+ +{foreach from=$FAI_group item=item key=key} + + + + + + +{/foreach} +
+ + + {$types.$key.KZL} + {$types.$key.NAME}({$item.description}) +
+ +{elseif $mode == "cut"} + +{t}Select the object you want to cut:{/t} +
+
+ +{foreach from=$FAI_group item=item key=key} + + + + + + +{/foreach} +
+ {if $item.freezed} + + {else} + + {/if} + + {$types.$key.KZL} + {$types.$key.NAME}({$item.description})
+{/if} +
+
+ +

+
+ +   + +
diff --git a/trunk/gosa-plugins/fai/admin/fai/faiHook.tpl b/trunk/gosa-plugins/fai/admin/fai/faiHook.tpl new file mode 100644 index 000000000..f5689e460 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiHook.tpl @@ -0,0 +1,63 @@ + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ + +{render acl=$cnACL} + +{/render} +
+ + +{render acl=$descriptionACL} + +{/render} +
+
+

 

+ + + + +
+

  + {t}List of hook scripts{/t} +

+ + + + +
+ {$Entry_divlist} +{if $sub_object_is_addable} + +{else} + +{/if} +
+
+ + + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiHookEntry.tpl b/trunk/gosa-plugins/fai/admin/fai/faiHookEntry.tpl new file mode 100644 index 000000000..c1374ef87 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiHookEntry.tpl @@ -0,0 +1,96 @@ + + + + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ {t}Name{/t}{$must}  + +{render acl=$cnACL} + +{/render} +
+ {t}Description{/t}  + +{render acl=$descriptionACL} + +{/render} +
+
+   + +

 {t}Hook attributes{/t}

+ + + + +
+ +{render acl=$FAItaskACL} + +{/render} +
+
+ + +

 

+

  + +

+ + + + +
+{render acl=$FAIscriptACL} + +{/render} +
+
+
+{render acl=$FAIscriptACL} +   +{/render} +{render acl=$FAIscriptACL} + +{/render} +{render acl=$FAIscriptACL} + {$DownMe} +{/render} +
+ +

 

+
+
+{if !$freeze} +   +{/if} + +
+ + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiNewBranch.tpl b/trunk/gosa-plugins/fai/admin/fai/faiNewBranch.tpl new file mode 100644 index 000000000..fe1e58318 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiNewBranch.tpl @@ -0,0 +1,55 @@ +{if $iframe == false} + +
+

+{t}You are now going to create a branch or locked branch. This action clones the existing release to another release name. Branches can be modified as usual. FAI classes of locked branches cannot be modified, just additional classes are possible. Branch names should be alphanumeric, excluding the reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' and 'fai'.{/t} +
+{t}Branches are created as subreleases of the currently selected branch. Creating a new branch named 1.0.2 in SARGE for example, will result in a new release called SARGE/1.0.2.{/t} +
+
+

+

+
+{t}Please enter a name for the branch{/t}   + +
+
+

+ +
+

+ + +

+
+ + + +{else} + +

{t}Processing the requested operation{/t}

+{t}As soon as the copy operation has finished, you can scroll down to end of the page and press the 'Continue' button to continue with the fai management dialog.{/t} +
+
+
+ +
+ +{/if} diff --git a/trunk/gosa-plugins/fai/admin/fai/faiPackage.tpl b/trunk/gosa-plugins/fai/admin/fai/faiPackage.tpl new file mode 100644 index 000000000..3ab7fdebb --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiPackage.tpl @@ -0,0 +1,87 @@ + + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ + +{render acl=$cnACL} + +{/render} +
+ + +{render acl=$descriptionACL} + +{/render} +
+
+

 {t}Repository{/t}

+ + + + + + + + + + + + + +
+ {t}Release{/t} : + + {$release} +
+ {t}Section{/t} : + + {$section} +
+ {t}Install method{/t} : + +{render acl=$FAIinstallMethodACL} + +{/render} +
+
+

 

+ + + + +
+

 {t}Used packages{/t}

+ {$divlist} +
+{render acl=$FAIpackageACL} + +{/render} +
+ + + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiPackageConfiguration.tpl b/trunk/gosa-plugins/fai/admin/fai/faiPackageConfiguration.tpl new file mode 100644 index 000000000..06e47b747 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiPackageConfiguration.tpl @@ -0,0 +1,9 @@ +

 {$headline}

+{$Config} +

 

+
+
+ + +
+ diff --git a/trunk/gosa-plugins/fai/admin/fai/faiPackageEntry.tpl b/trunk/gosa-plugins/fai/admin/fai/faiPackageEntry.tpl new file mode 100644 index 000000000..44cbbf801 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiPackageEntry.tpl @@ -0,0 +1,63 @@ + + + + + +
+
+

+ {t}List of available packages{/t} +

+
+
+ {$faihead} +
+
+
+
{$failist} +
+
+
+

+ [i]{t}Information{/t} +

+
+
+ {t}This menu allows you to select multiple packages to add them to the currently edited package list.{/t} +
+
+
+

+ [F] + {t}Filters{/t} +

+
+
+ {$Section_boxes} +
+
+ + + + + +
+ {t}Display objects matching{/t} + + +
+ {$apply} +
+
+
+ + +
+ + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiPartitionTable.tpl b/trunk/gosa-plugins/fai/admin/fai/faiPartitionTable.tpl new file mode 100644 index 000000000..00515b60e --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiPartitionTable.tpl @@ -0,0 +1,73 @@ + + + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ + +{render acl=$cnACL} + +{/render} +
+ + +{render acl=$descriptionACL} + +{/render} +
+
+   + +

  + +

+ + + + +
+
+{if $sub_object_is_addable} + +{else} + +{/if} + + + +{if $sub_object_is_removeable} + +{else} + +{/if} +
+
+ + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiPartitionTableEntry.tpl b/trunk/gosa-plugins/fai/admin/fai/faiPartitionTableEntry.tpl new file mode 100644 index 000000000..f6c107550 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiPartitionTableEntry.tpl @@ -0,0 +1,50 @@ + +

 {t}Device{/t}

+ + + + + +
{$must}  +{render acl=$DISKcnACL} + +{/render} +   +{render acl=$DISKdescriptionACL} + +{/render} +
+
+

 

+
+

 {t}Partition entries{/t}

+{$setup} +
+{if !$freeze} + {if $sub_object_is_createable} + + {else} + + {/if} +{/if} +
+
+

 

+
+
+{if !$freeze} + +{/if} + +
+ + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiProfile.tpl b/trunk/gosa-plugins/fai/admin/fai/faiProfile.tpl new file mode 100644 index 000000000..66123f438 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiProfile.tpl @@ -0,0 +1,58 @@ + + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ + +{render acl=$cnACL} + +{/render} +
+ + +{render acl=$descriptionACL} + +{/render} +
+
+ + + + +
+

 {t}FAI classes{/t}

+ + {$divlist} +
+{render acl=$FAIclassACL} + +{/render} + +
+
+ + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiProfileEntry.tpl b/trunk/gosa-plugins/fai/admin/fai/faiProfileEntry.tpl new file mode 100644 index 000000000..8dc2d1fd9 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiProfileEntry.tpl @@ -0,0 +1,73 @@ + + + + + +
+
+

+ {t}List of FAI objects (Fully Automatic Installation){/t} +

+
+
+ {$faihead} +
+
+
+ {$failist} + +
+
+
+

+ [i]{t}Information{/t} +

+
+
+

+ {t}This menu allows you to select FAI class names and to add them to the currently edited profile.{/t} +

+
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + + + + +
{t}Show only classes with templates{/t}
{t}Show only classes with scripts{/t}
{t}Show only classes with hooks{/t}
{t}Show only classes with variables{/t}
{t}Show only classes with packages{/t}
{t}Show only classes with partitions{/t}
+ + + + + +
+ {t}Display objects matching{/t} + + +
+ {$apply} +
+
+ +
+ + +
+ diff --git a/trunk/gosa-plugins/fai/admin/fai/faiScript.tpl b/trunk/gosa-plugins/fai/admin/fai/faiScript.tpl new file mode 100644 index 000000000..659f64a98 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiScript.tpl @@ -0,0 +1,63 @@ + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ + +{render acl=$cnACL} + +{/render} +
+ + +{render acl=$descriptionACL} + +{/render} +
+
+

 

+ + + + +
+

  + {t}List of scripts{/t} +

+ + + + +
+ {$Entry_divlist} +{if $sub_object_is_addable} + +{else} + +{/if} +
+
+ + + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiScriptEntry.tpl b/trunk/gosa-plugins/fai/admin/fai/faiScriptEntry.tpl new file mode 100644 index 000000000..8d41f9525 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiScriptEntry.tpl @@ -0,0 +1,94 @@ + + + + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ {t}Name{/t}{$must}  + +{render acl=$cnACL} + +{/render} +
+ {t}Description{/t}  + +{render acl=$descriptionACL} + +{/render} +
+
+   + +

 {t}Script attributes{/t}

+ + + + + +
+ + +{render acl=$FAIpriorityACL} + +{/render} +
+
+

 

+

  + +

+ + + + +
+{render acl=$FAIscriptACL} + +{/render} +
+
+
+{render acl=$FAIscriptACL} +   +{/render} +{render acl=$FAIscriptACL} + +{/render} +{render acl=$FAIscriptACL} + {$DownMe} +{/render} +
+
+
+{if !$freeze} +   +{/if} + +
+ + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiSummary.tpl b/trunk/gosa-plugins/fai/admin/fai/faiSummary.tpl new file mode 100644 index 000000000..cb6a9cdaf --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiSummary.tpl @@ -0,0 +1,27 @@ + + + + + + +{if $readable} + + + + + + +{else} + + + +{/if} +
{t}FAI object tree{/t}
+ + {t}Reload class and release configuration from parent object.{/t} +
+ {$objectList} +
+ {t}You are not allowed to view the fai summary.{/t} +
+ diff --git a/trunk/gosa-plugins/fai/admin/fai/faiTemplate.tpl b/trunk/gosa-plugins/fai/admin/fai/faiTemplate.tpl new file mode 100644 index 000000000..4321f4694 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiTemplate.tpl @@ -0,0 +1,52 @@ + + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ + +{render acl=$cnACL} + +{/render} +
+ + +{render acl=$descriptionACL} + +{/render} +
+
+

  + {t}List of template files{/t} +

+ {$Entry_divlist} +{if $sub_object_is_addable} + +{else} + +{/if} +
+ + + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiTemplateEntry.tpl b/trunk/gosa-plugins/fai/admin/fai/faiTemplateEntry.tpl new file mode 100644 index 000000000..5845ffe9a --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiTemplateEntry.tpl @@ -0,0 +1,205 @@ + + +

 {t}Generic{/t}

+ + + + + +
+ + + + + + + + + +
+ {t}File name{/t}{$must}  + +{render acl=$cnACL} +    +{/render} +
+ + +{render acl=$FAItemplatePathACL} + +{/render} +
+
+ {t}Description{/t}  +{render acl=$descriptionACL} + +{/render} +
+ +

 

+ + + + + + + + + + + + +

 {t}Template attributes{/t}

+ + + + + + + + +
+ + + {$status} + {if $bStatus} + + {t}Save template{/t}... + + {/if} +
+
+{render acl=$FAItemplateFileACL} + +{/render} +{render acl=$FAItemplateFileACL} +   +{/render} +
+
+
+ {t}Full path{/t}  + +{render acl=$FAItemplatePathACL} + {$FAItemplatePath} +{/render} +
+
+ + + + + + + + + + +
+ + +{render acl=$FAIownerACL} + +{/render} +
+ + +{render acl=$FAIownerACL} + +{/render} +
+
+
{t}Access{/t}{$must}  + + + + + + + + + + + + + +{render acl=$FAImodeACL} + +{/render} +{render acl=$FAImodeACL} + +{/render} +{render acl=$FAImodeACL} + +{/render} + +{render acl=$FAImodeACL} + +{/render} + + + + +{render acl=$FAImodeACL} + +{/render} +{render acl=$FAImodeACL} + +{/render} +{render acl=$FAImodeACL} + +{/render} + +{render acl=$FAImodeACL} + +{/render} + + + + +{render acl=$FAImodeACL} + +{/render} +{render acl=$FAImodeACL} + +{/render} +{render acl=$FAImodeACL} + +{/render} + +{render acl=$FAImodeACL} + +{/render} + +
{t}Class{/t}{t}Read{/t}{t}Write{/t}{t}Execute{/t} {t}Special{/t} 
{t}User{/t} ({t}SUID{/t})
{t}Group{/t} ({t}SGID{/t})
{t}Others{/t} ({t}sticky{/t})
+ +
+
+
+

 

+
+
+{if !$freeze} +   +{/if} + +
+
+ + + + + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiVariable.tpl b/trunk/gosa-plugins/fai/admin/fai/faiVariable.tpl new file mode 100644 index 000000000..e9f5214c8 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiVariable.tpl @@ -0,0 +1,72 @@ + + + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ + +{render acl=$cnACL} + +{/render} +
+ + +{render acl=$descriptionACL} + +{/render} +
+
+   + +

  + +

+ + + + +
+
+{if $is_createable} + +{else} + +{/if} + +{if $is_removeable} + +{else} + +{/if} +
+
+ + + + diff --git a/trunk/gosa-plugins/fai/admin/fai/faiVariableEntry.tpl b/trunk/gosa-plugins/fai/admin/fai/faiVariableEntry.tpl new file mode 100644 index 000000000..8e794995d --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/faiVariableEntry.tpl @@ -0,0 +1,66 @@ + + + + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ {t}Name{/t}{$must}  + +{render acl=$cnACL} + +{/render} +
+ {t}Description{/t}  + +{render acl=$descriptionACL} + +{/render} +
+
+   + +

 {t}Variable attributes{/t}

+ + + + + +
+ + +{render acl=$FAIvariableContentACL} + +{/render} +
+
+

 

+
+
+{if !$freeze} +   +{/if} + +
+ + + + diff --git a/trunk/gosa-plugins/fai/admin/fai/main.inc b/trunk/gosa-plugins/fai/admin/fai/main.inc new file mode 100644 index 000000000..e1013fd80 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/main.inc @@ -0,0 +1,62 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('FAI'); +}else{ + + /* Create usermanagement object on demand */ + if (!session::is_set('FAI')){ + $FAI= new faiManagement($config, $ui); + $FAI->set_acl_category("fai"); + session::set('FAI',$FAI); + } + $FAI = session::get('FAI'); + $FAI->save_object(); + $output= $FAI->execute(); + + /* Reset requested? */ + if (isset($_GET['reset']) && $_GET['reset'] == 1){ + session::un_set ('FAI'); + } + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header(get_template_path($FAI->plIcon), _("Software deployment"), "\"\" ".LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path($FAI->plIcon), _("Software deployment")); + } + $display.= $output; + + session::set('FAI',$FAI); +} + +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/paste_generic.tpl b/trunk/gosa-plugins/fai/admin/fai/paste_generic.tpl new file mode 100644 index 000000000..035abc3e4 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/paste_generic.tpl @@ -0,0 +1,11 @@ +

{t}FAI settings{/t}

+ + + + + +
+ {t}Class name{/t} + + +
diff --git a/trunk/gosa-plugins/fai/admin/fai/remove.tpl b/trunk/gosa-plugins/fai/admin/fai/remove.tpl new file mode 100644 index 000000000..d63f86d14 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/remove.tpl @@ -0,0 +1,24 @@ +
+ {t}Warning{/t} +
+ +

+ {$warning} + {t}This includes 'all' object information. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+ +

+ {t}Best thing to do before performing this action would be to save the current contents of your LDAP tree in a file. So - if you've done so - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+{if $multiple} + +   + +{else} + +   + +{/if} +

diff --git a/trunk/gosa-plugins/fai/admin/fai/remove_branch.tpl b/trunk/gosa-plugins/fai/admin/fai/remove_branch.tpl new file mode 100644 index 000000000..23e8b0926 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/remove_branch.tpl @@ -0,0 +1,18 @@ +
+  {t}Warning{/t} +
+

+ {$info} + {t}This includes all account data, system access, etc. for this branch. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+ +

+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ +   + +

+ diff --git a/trunk/gosa-plugins/fai/admin/fai/tabsHook.inc b/trunk/gosa-plugins/fai/admin/fai/tabsHook.inc new file mode 100644 index 000000000..2e9e00a87 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/tabsHook.inc @@ -0,0 +1,44 @@ +addSpecialTabs(); + } + + function check($ignore_account= FALSE) + { + return (tabs::check(TRUE)); + } + + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['faiHook']; + $new_dn ='cn='.$baseobject->cn.",".get_ou('faiHookRDN').$this->parent->fai_release; + + if ($this->dn != $new_dn && $this->dn != "new"){ + + /* if( new_dn is subtree of this->dn ) */ + $cnt1 = count(split(",",$this->dn)); + $cnt2 = count(split(",",$new_dn)); + if((strstr($new_dn,$this->dn))&&($cnt1<$cnt2)){ + msg_dialog::display(_("Error"), _("Moving the tree failed. Destination tree is subtree of source tree."), ERROR_DIALOG); + }else{ +// $baseobject->recursive_move($this->dn, $new_dn); + } + } + $this->dn= $new_dn; + + tabs::save(TRUE); + } + +} + +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/tabsPackage.inc b/trunk/gosa-plugins/fai/admin/fai/tabsPackage.inc new file mode 100644 index 000000000..9f819d48f --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/tabsPackage.inc @@ -0,0 +1,45 @@ +addSpecialTabs(); + } + + function check($ignore_account= FALSE) + { + return (tabs::check(TRUE)); + } + + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['faiPackage']; + $new_dn ='cn='.$baseobject->cn.",".get_ou('faiPackageRDN').$this->parent->fai_release; + + if ($this->dn != $new_dn && $this->dn != "new"){ + + /* if( new_dn is subtree of this->dn ) */ + $cnt1 = count(split(",",$this->dn)); + $cnt2 = count(split(",",$new_dn)); + if((strstr($new_dn,$this->dn))&&($cnt1<$cnt2)){ + msg_dialog::display(_("Error"), _("Moving the tree failed. Destination tree is subtree of source tree."), ERROR_DIALOG); + }else{ +// $baseobject->recursive_move($this->dn, $new_dn); + } + } + $this->dn= $new_dn; + + tabs::save(TRUE); + } + +} + +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/tabsPartition.inc b/trunk/gosa-plugins/fai/admin/fai/tabsPartition.inc new file mode 100644 index 000000000..76ac003f7 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/tabsPartition.inc @@ -0,0 +1,46 @@ +addSpecialTabs(); + } + + function check($ignore_account= FALSE) + { + return (tabs::check(TRUE)); + } + + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['faiPartitionTable']; + + $new_dn ='cn='.$baseobject->cn.",".get_ou('faiPartitionRDN').$this->parent->fai_release; + + if ($this->dn != $new_dn && $this->dn != "new"){ + + /* if( new_dn is subtree of this->dn ) */ + $cnt1 = count(split(",",$this->dn)); + $cnt2 = count(split(",",$new_dn)); + if((strstr($new_dn,$this->dn))&&($cnt1<$cnt2)){ + msg_dialog::display(_("Error"), _("Moving the tree failed. Destination tree is subtree of source tree."), ERROR_DIALOG); + }else{ +// $baseobject->recursive_move($this->dn, $new_dn); + } + } + $this->dn= $new_dn; + + tabs::save(TRUE); + } + +} + +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/tabsProfile.inc b/trunk/gosa-plugins/fai/admin/fai/tabsProfile.inc new file mode 100644 index 000000000..d14029c26 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/tabsProfile.inc @@ -0,0 +1,45 @@ +addSpecialTabs(); + } + + function check($ignore_account= FALSE) + { + return (tabs::check(TRUE)); + } + + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['faiProfile']; + $new_dn ='cn='.$baseobject->cn.",".get_ou('faiProfileRDN').$this->parent->fai_release; + + if ($this->dn != $new_dn && $this->dn != "new"){ + + /* if( new_dn is subtree of this->dn ) */ + $cnt1 = count(split(",",$this->dn)); + $cnt2 = count(split(",",$new_dn)); + if((strstr($new_dn,$this->dn))&&($cnt1<$cnt2)){ + msg_dialog::display(_("Error"), _("Moving the tree failed. Destination tree is subtree of source tree."), ERROR_DIALOG); + }else{ +// $baseobject->recursive_move($this->dn, $new_dn); + } + } + $this->dn= $new_dn; + + tabs::save(TRUE); + } + +} + +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/tabsScript.inc b/trunk/gosa-plugins/fai/admin/fai/tabsScript.inc new file mode 100644 index 000000000..915fb06c0 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/tabsScript.inc @@ -0,0 +1,45 @@ +addSpecialTabs(); + } + + function check($ignore_account= FALSE) + { + return (tabs::check(TRUE)); + } + + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['faiScript']; + $new_dn ='cn='.$baseobject->cn.",".get_ou('faiScriptRDN').$this->parent->fai_release; + + if ($this->dn != $new_dn && $this->dn != "new"){ + + /* if( new_dn is subtree of this->dn ) */ + $cnt1 = count(split(",",$this->dn)); + $cnt2 = count(split(",",$new_dn)); + if((strstr($new_dn,$this->dn))&&($cnt1<$cnt2)){ + msg_dialog::display(_("Error"), _("Moving the tree failed. Destination tree is subtree of source tree."), ERROR_DIALOG); + }else{ +// $baseobject->recursive_move($this->dn, $new_dn); + } + } + $this->dn= $new_dn; + + tabs::save(TRUE); + } + +} + +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/tabsTemplate.inc b/trunk/gosa-plugins/fai/admin/fai/tabsTemplate.inc new file mode 100644 index 000000000..2b8b15f5d --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/tabsTemplate.inc @@ -0,0 +1,45 @@ +addSpecialTabs(); + } + + function check($ignore_account= FALSE) + { + return (tabs::check(TRUE)); + } + + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['faiTemplate']; + $new_dn ='cn='.$baseobject->cn.",".get_ou('faiTemplateRDN').$this->parent->fai_release; + + if ($this->dn != $new_dn && $this->dn != "new"){ + + /* if( new_dn is subtree of this->dn ) */ + $cnt1 = count(split(",",$this->dn)); + $cnt2 = count(split(",",$new_dn)); + if((strstr($new_dn,$this->dn))&&($cnt1<$cnt2)){ + msg_dialog::display(_("Error"), _("Moving the tree failed. Destination tree is subtree of source tree."), ERROR_DIALOG); + }else{ +// $baseobject->recursive_move($this->dn, $new_dn); + } + } + $this->dn= $new_dn; + + tabs::save(TRUE); + } + +} + +?> diff --git a/trunk/gosa-plugins/fai/admin/fai/tabsVariable.inc b/trunk/gosa-plugins/fai/admin/fai/tabsVariable.inc new file mode 100644 index 000000000..5b23577d9 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/fai/tabsVariable.inc @@ -0,0 +1,45 @@ +addSpecialTabs(); + } + + function check($ignore_account= FALSE) + { + return (tabs::check(TRUE)); + } + + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['faiVariable']; + $new_dn ='cn='.$baseobject->cn.",".get_ou('faiVariableRDN').$this->parent->fai_release; + + if ($this->dn != $new_dn && $this->dn != "new"){ + + /* if( new_dn is subtree of this->dn ) */ + $cnt1 = count(split(",",$this->dn)); + $cnt2 = count(split(",",$new_dn)); + if((strstr($new_dn,$this->dn))&&($cnt1<$cnt2)){ + msg_dialog::display(_("Error"), _("Moving the tree failed. Destination tree is subtree of source tree."), ERROR_DIALOG); + }else{ +// $baseobject->recursive_move($this->dn, $new_dn); + } + } + $this->dn= $new_dn; + + tabs::save(TRUE); + } + +} + +?> diff --git a/trunk/gosa-plugins/fai/admin/systems/services/repository/class_divListRepositories.inc b/trunk/gosa-plugins/fai/admin/systems/services/repository/class_divListRepositories.inc new file mode 100644 index 000000000..c1e8c4328 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/systems/services/repository/class_divListRepositories.inc @@ -0,0 +1,84 @@ +AddCheckBox */ + var $parent ; + var $ui ; + + var $regex ="*"; + + function divListRepository ($config,$parent) + { + MultiSelectWindow::MultiSelectWindow($config,"Repository", "server"); + + $this->parent = $parent; + $this->ui = get_userinfo(); + + $this->SetTitle("repositories"); + $this->SetSummary(_("List of configured repositories")); + $this->SetInformation(_("This menu allows you to create, delete and edit repository settings.")); + $this->EnableCloseButton(FALSE); + $this->EnableSaveButton(FALSE); + $this->AddHeader(array("string"=>_("Release"),"attach"=>"style='width:80px;'")); + $this->AddHeader(array("string"=>_("Sections"))); + $this->AddHeader(array("string"=>_("Options"),"attach"=>"style='border-right:0px;width:55px;'")); + $this->AddRegex("regex",_("Regular expression for matching object names"),"*",TRUE); + $this->EnableAplhabet(TRUE); + } + + function GenHeader() + { + if($this->parent->acl_is_createable()){ + $this->SetListHeader(""); + } + } + + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + function setEntries($list) + { + $link = "%s"; + $edit = " "; + + /* Hide delete icon, if delete is not allowed */ + if($this->parent->acl_is_removeable()){ + $delete = ""; + }else{ + $delete = " "; + } + + foreach($list as $name => $reps){ + + $str = " "; + if(preg_match("/".str_replace("*",".*",$this->regex)."/",$reps['Release'])){ + foreach($reps['Sections'] as $sec){ + $str.=$sec." "; + } + $this->AddElement(array( + array("string"=>sprintf($link,base64_encode($name),$name),"attach"=>"style='width:80px;'"), + array("string"=>sprintf($link,base64_encode($name),_("Sections")." :".$str)), + array("string"=>preg_replace("/%s/",base64_encode($name),$edit.$delete),"attach"=>"style='border-right:0px;width:55px;text- align:right;'") + )); + } + } + + } + + function Save() + { + MultiSelectWindow :: Save(); + } + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow :: save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/systems/services/repository/class_servRepository.inc b/trunk/gosa-plugins/fai/admin/systems/services/repository/class_servRepository.inc new file mode 100644 index 000000000..3a097e261 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/systems/services/repository/class_servRepository.inc @@ -0,0 +1,366 @@ +DisplayName = _("Repository service"); + + /* Skip this if fai is deactivated */ + $tmp= $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + $this->fai_activated = TRUE; + }else{ + return; + } + + $this->repositories = array(); + if(isset($this->attrs['FAIrepository'])){ + for($i = 0; $i < $this->attrs['FAIrepository']['count']; $i++){ + $tmp = split("\|",$this->attrs['FAIrepository'][$i]); + $tmp2 = array(); + $tmp3 = array(); + + if(isset($tmp[1])){ + $tmp2['ParentServer'] = $tmp[1]; + if(empty($tmp[1])){ + $tmp2['ParentServer'] = "none"; + } + }else{ + $tmp2['ParentServer'] = "none"; + } + + if(isset($tmp[0])){ + $tmp2['Url'] = $tmp[0]; + }else{ + $tmp2['Url'] = ""; + } + + if(isset($tmp[2])){ + $tmp2['Release'] = $tmp[2]; + }else{ + $tmp2['Release'] = ""; + } + + if(isset($tmp[3])){ + $tmp3 = split(",",$tmp[3]); + foreach($tmp3 as $sec){ + $tmp2['Sections'][$sec]=$sec; + } + }else{ + $tmp['Section']=array(); + } + + $this->repositories[$tmp[2]]=$tmp2; + } + } + + + /* Create divlist */ + $this->divlist = new divListRepository($this->config,$this); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + if(!$this->fai_activated){ + $str = "

"._("You can't use this plugin until FAI is activated.")."

"; + return $str; + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $smarty->assign("is_createable",$this->acl_is_createable()); + $display= ""; + + /* Show tab dialog headers */ + /* + ADD / EDIT Repository + Dialog Handling + */ + $once = false; + if(isset($_POST['servRepository'])){ + foreach($_POST as $name => $value){ + + if(preg_match("/AddRepository/",$name) && $this->acl_is_createable()){ + $once = true; + $this->dialog = new servRepositorySetup($this->config,$this->dn); + $this->dialog->parent = $this; + } + + if((preg_match("/^delete_/",$name)) && (!$once) && $this->acl_is_removeable()){ + $once = true; + $value = preg_replace("/delete_/","",$name); + $value = base64_decode(preg_replace("/_.*$/","",$value)); + + $url = $this->repositories[$value]['Url']; + $release = $this->repositories[$value]['Release']; + + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + + $ldap->search("(&(objectClass=gotoWorkstation)(objectClass=FAIobject)(FAIdebianMirror=".$url."))",array("cn","FAIclass")); + if ($ldap->count() != 0){ + $obj= array(); + $found= false; + while($attrs = $ldap->fetch()){ + foreach($attrs['FAIclass'] as $class){ + if(preg_match("/".str_replace("/","\/",$release)."$/i",$class)){ + $obj[$ldap->getDN()]= $attrs['cn'][0]; + $found= true; + } + } + } + + if ($found){ + msg_dialog::display(_("Error"), msgPool::stillInUse(_("FAI release"), msgPool::buildList($obj)), ERROR_DIALOG); + } + }else{ + if(isset($this->repositories[$value])){ + unset($this->repositories[$value]); + } + } + } + + if((preg_match("/^edit_/",$name))&&(!$once)){ + $value = preg_replace("/edit_/","",$name); + $value = base64_decode(preg_replace("/_.$/","",$value)); + + if(isset($this->repositories[$value])){ + $once = true; + $obj = $this->repositories[$value]; + + /* to be able to detect if this was renamed */ + $obj['initialy_was'] = $obj['Release']; + $this->dialog = new servRepositorySetup($this->config,$this->dn,$obj); + $this->dialog->parent = $this; + } + } + } + } + if((isset($_GET['act']))&&($_GET['act']=="open_repository")&&(isset($_GET['id']))){ + $obj = $this->repositories[base64_decode($_GET['id'])]; + $obj['initialy_was'] = $obj['Release']; + $this->dialog = new servRepositorySetup($this->config,$this->dn,$obj); + $this->dialog->parent = $this; + } + + if(isset($_POST['repository_setup_save']) && is_object($this->dialog)){ + $this->dialog->save_object(); + if(($this->dialog->is_new_name())&&(isset($this->repositories[$this->dialog->GetName()]))){ + msg_dialog::display(_("Error"), msgPool::duplicated(_("Name")), ERROR_DIALOG); + }else + + if(count($this->dialog->check())!=0){ + foreach($this->dialog->check() as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $obj = $this->dialog->save(); + if($this->dialog->is_new_name()){ + $oldname = $this->dialog->initialy_was; + $this->repositories[$obj['Release']]=$obj; + unset($this->repositories[$oldname]); + }else{ + $this->repositories[$obj['Release']]=$obj; + } + $this->dialog = FALSE; + $this->is_dialog= false; + } + } + + if(isset($_POST['repository_setup_cancel'])){ + $this->dialog=FALSE; + $this->is_dialog = false; + } + + if(is_object($this->dialog)){ + $this->dialog->save_object(); + $this->is_dialog = true; + return($this->dialog->execute()); + } + + /* + Repository setup dialog handling /END + */ + + + $link = "%s"; + $edit = " "; + + /* Hide delete icon, if delete is not allowed */ + if($this->acl_is_removeable()){ + $delete = ""; + }else{ + $delete = " "; + } + + $this->divlist->execute(); + $this->divlist->setEntries($this->repositories); + $smarty->assign("Repositories",$this->divlist->Draw()); + $display.= $smarty->fetch(get_template_path('servRepository.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + + /* Save data to object */ + function save_object() + { + plugin::save_object(); + if(is_object($this->divlist)){ + $this->divlist->save_object(); + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + return ($message); + } + + + /* Save to LDAP */ + function save() + { + if(!$this->fai_activated) return; + + plugin::save(); + + $arr = array(); + foreach($this->repositories as $servername => $conf){ + $str = ""; + foreach($conf['Sections'] as $sec){ + $str.=$sec.","; + } + $str=preg_replace("/,$/","",$str); + + if($conf['ParentServer']=="none"){ + $conf['ParentServer'] =""; + } + + $arr[]=$conf['Url']."|".$conf['ParentServer']."|".$conf['Release']."|".$str; + } + $this->attrs['FAIrepository'] = $arr; + + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + + $ldap->cat($this->dn, array('dn')); + + if($ldap->count()){ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + $this->handle_post_events("modify"); + }else{ + $ldap->cd ($this->config->current['BASE']); + $ldap->create_missing_trees($this->dn); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + $this->handle_post_events("add"); + } + + # If there were changes, just tell the server to reload information + if(count($this->attrs)){ + $this->trigger_si_fai_server_reload(); + } + + if($this->initially_was_account){ + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Repository service"); + return($fields); + } + + + function trigger_si_fai_server_reload() + { + /* Reload GOsa si FAI DB/cache + */ + if(class_available("DaemonEvent") && class_available("gosaSupportDaemon")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + if(isset($events['TRIGGERED']['DaemonEvent_recreate_fai_server_db'])){ + $evt = $events['TRIGGERED']['DaemonEvent_recreate_fai_server_db']; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $tmp->add_targets(array("GOSA")); + $o_queue = new gosaSupportDaemon(); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + } + + + function remove_from_parent() + { + goService::remove_from_parent(); + $this->trigger_si_fai_server_reload(); + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Repository"), + "plDescription" => _("Repository service")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 84, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( +# "start" => _("Service start"), // Remove this to hide the start button at all. +# "stop" => _("Service stop"), // Remove this to hide the stop button at all. +# "restart" => _("Service restart"),// Remove this to hide the restart button at all. + +# "cn" => _("Name"), + "ParentServer" => _("Parent server"), + "Release" => _("Releases"), + "Url" => _("URL"), + "Section" => _("Sections")) + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/systems/services/repository/class_servRepositorySetup.inc b/trunk/gosa-plugins/fai/admin/systems/services/repository/class_servRepositorySetup.inc new file mode 100644 index 000000000..89594ff5e --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/systems/services/repository/class_servRepositorySetup.inc @@ -0,0 +1,226 @@ +$atr = $data[$atr]; + } + } + } + } + + function GetName() + { + return($this->Release); + } + + function is_new_name() + { + if(!$this->initialy_was){ + return(true); + }else{ + if($this->Release != $this->initialy_was){ + return(true); + } + } + return(false); + } + + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + + if(preg_match("/w/",$this->parent->getacl("Section"))){ + if((isset($_POST['AddSection']))&&(isset($_POST['SectionName']))&&(!empty($_POST['SectionName']))){ + + /* Replace multiple spaces with a single, and cut of white spaces (trim)*/ + $val = preg_replace("/\ \ * /" , " ", trim($_POST['SectionName'])); + + /* check if there are more than one entry given ( "section1 section2 )*/ + if(preg_match("/ /",$val)){ + + /* Generate list of new section names */ + $vals = split(" ",$val); + + /* Add new entries */ + foreach($vals as $entry){ + $entry = trim($entry); + if(!empty($entry)){ + $this->Sections[$entry]=$entry; + } + } + }else{ + $this->Sections[$val]=$val; + } + } + + foreach($_POST as $name => $value){ + if(preg_match("/^delete_/",$name)){ + + $val = preg_replace("/^delete_/","",$name); + $val = base64_decode(preg_replace("/_.*$/","",$val)); + + if(isset($this->Sections[$val])){ + unset($this->Sections[$val]); + } + } + } + } + + $divlist = new divSelectBox("servRepositorySetup"); + $divlist->setHeight("220"); + if(preg_match("/w/",$this->parent->getacl("Section"))){ + $dellink = ""; + }else{ + $dellink = ""; + } + + foreach($this->Sections as $sec){ + $divlist->AddEntry(array( + array("string"=>$sec), + array("string"=>sprintf($dellink,base64_encode($sec),$sec), + "attach"=>"style='border-right:0px;width:20px;'") + )); + } + + $smarty->assign("Sections",$divlist->DrawList()); + + /* Get && assign acls */ + $tmp = $this->parent->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->parent->getacl($name)); + } + + /* Assign values */ + foreach($this->attributes as $attr){ + $smarty->assign($attr ,$this->$attr); + } + + $tmp = $this->getParentServers(); + $smarty->assign("ParentServers" ,$tmp); + $smarty->assign("ParentServerKeys",array_flip($tmp)); + + return($smarty->fetch(get_template_path('servRepositorySetup.tpl', TRUE,dirname(__FILE__)))); + } + + /* Save data to object */ + function save_object() + { + if(isset($_POST['servRepositorySetup_Posted'])) { + + foreach($this->attributes as $attr){ + if(($this->parent->acl_is_writeable($attr)) && (isset($_POST[$attr]))){ + $this->$attr = $_POST[$attr]; + } + } + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(empty($this->Release)){ + $message[]= msgPool::required(_("Release")); + } + + if(empty($this->Url)){ + $message[] = msgPool::required(_("URL")); + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + $tmp = array(); + $tmp['ParentServer'] = $this->ParentServer; + $tmp['Url'] = $this->Url; + $tmp['Release'] = $this->Release; + $tmp['Sections'] = $this->Sections; + return($tmp); + } + + function getParentServers() + { + $ret = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(objectClass=FAIrepositoryServer)",array("*")); + while($attr = $ldap->fetch()){ + if($attr['cn'][0] == $this->cn) continue; + $ret[$attr['cn'][0]]= $attr['cn'][0]; + } + + $ret = array_merge($ret,$this->GetHookElements()); + + $ret['none']= " "; + asort($ret); + return($ret); + } + + /* this funtions calls a defined hook + and parses all additional serverdata + */ + function GetHookElements() + { + $ret = array(); + $cmd = $this->config->search("servrepository", "repositoryBranchHook",array('tabs')); + if(!empty($cmd)){ + $res = shell_exec($cmd); + $res2 = trim($res); + if(!$res || empty($res2)){ + msg_dialog::display(_("Error"), msgPool::cmdexecfailed("repositoryBranchHook", $cmd, _("Repository service")), ERROR_DIALOG); + }else{ + $tmp = split("\n",$res); + foreach($tmp as $hook){ + /* skip empty */ + if(empty($hook)) continue; + + if(preg_match("/;/",$hook)){ + $hookinfo = split(";",$hook); + $ret[$hookinfo[0]] = $hookinfo[0]; + }else{ + $ret[$hook] = $hook; + } + } + } + } + return($ret); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/fai/admin/systems/services/repository/servRepository.tpl b/trunk/gosa-plugins/fai/admin/systems/services/repository/servRepository.tpl new file mode 100644 index 000000000..0cf596753 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/systems/services/repository/servRepository.tpl @@ -0,0 +1,9 @@ +{$Repositories} + + +

 

+
+ +   + +
diff --git a/trunk/gosa-plugins/fai/admin/systems/services/repository/servRepositorySetup.tpl b/trunk/gosa-plugins/fai/admin/systems/services/repository/servRepositorySetup.tpl new file mode 100644 index 000000000..2ad117967 --- /dev/null +++ b/trunk/gosa-plugins/fai/admin/systems/services/repository/servRepositorySetup.tpl @@ -0,0 +1,58 @@ +

 {t}Repository{/t}

+ + + + + + +
+ + + + + + + + + + + + + +
{t}Parent server{/t} + +{render acl=$ParentServerACL} + +{/render} +
{t}Release{/t} + +{render acl=$ReleaseACL} + +{/render} +
{t}URL{/t} + +{render acl=$UrlACL} + +{/render} +
+
+ {t}Sections{/t}
+{render acl=$SectionACL} + {$Sections} +{/render} +{render acl=$SectionACL} + +{/render} +{render acl=$SectionACL} + +{/render} +
+ +

+ +   + +

+ diff --git a/trunk/gosa-plugins/fai/contrib/fai.ldif b/trunk/gosa-plugins/fai/contrib/fai.ldif new file mode 100644 index 000000000..b06c93a00 --- /dev/null +++ b/trunk/gosa-plugins/fai/contrib/fai.ldif @@ -0,0 +1,52 @@ +dn: cn=fai,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: fai +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.1 NAME 'FAIclass' DESC 'Storage for FAI class names' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64}) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.2 NAME 'FAIpriority' DESC 'Storage for FAI priorities' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.3 NAME 'FAIpartitionType' DESC 'Storage for FAI partition types' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.4 NAME 'FAIpartitionNr' DESC 'Storage for FAI partition devices' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.5 NAME 'FAImountOptions' DESC 'Storage for FAI partition mount options' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.6 NAME 'FAImountPoint' DESC 'Storage for FAI partition mount points' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.7 NAME 'FAIfsOptions' DESC 'Storage for FAI partition generation options' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.8 NAME 'FAIfsType' DESC 'Storage for FAI partition types' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.9 NAME 'FAIscript' DESC 'General storage field for multiline text aka scripts' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.10 NAME 'FAItask' DESC 'Note for which FAI tasks a hook is made for' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.11 NAME 'FAIvariable' DESC 'Store debconf template variable names' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.12 NAME 'FAIvariableContent' DESC 'Store debconf template variable contents' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.13 NAME 'FAIvariableType' DESC 'Store debconf template variable type' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.14 NAME 'FAIinstallMethod' DESC 'Store debian package installation flag' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.15 NAME 'FAIpackage' DESC 'Store debian package name' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.16 NAME 'FAItemplateFile' DESC 'Store complete template files' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.17 NAME 'FAItemplatePath' DESC 'Store template file storage path' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.18 NAME 'FAIowner' DESC 'Store template file storage path' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.19 NAME 'FAImode' DESC 'Store template file storage path' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.20 NAME 'FAIstatus' DESC 'Store FAI progress status' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.21 NAME 'FAIpackagelistDependency' DESC 'Store package lists where we depend from' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.22 NAME 'FAIpartitionSize' DESC 'Store size range for partition size' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.23 NAME 'FAIpartitionFlags' DESC 'Optional flags like "preserve"' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.24 NAME 'FAIdebianMirror' DESC 'TODO' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.25 NAME 'FAIdebianRelease' DESC 'TODO' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.26 NAME 'FAIdebianSection' DESC 'TODO' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.27 NAME 'FAIrepository' DESC 'TODO' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.28 NAME 'FAIstate' DESC 'TODO' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.5.29 NAME 'FAIrelease' DESC 'TODO' SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.1 NAME 'FAIclass' SUP top STRUCTURAL DESC 'Generic class parent for FAI objects' MUST ( cn ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.2 NAME 'FAIprofile' SUP top AUXILIARY DESC 'FAI profile container for multiple class objects' MUST ( cn $ FAIclass ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.3 NAME 'FAIpartitionTable' SUP top AUXILIARY DESC 'Stores FAI partition tables' MUST ( cn ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.4 NAME 'FAIpartitionDisk' SUP top AUXILIARY DESC 'Stores FAI partition tables' MUST ( cn ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.5 NAME 'FAIpartitionEntry' SUP top AUXILIARY DESC 'One partition table entry' MUST ( FAIpartitionType $ FAIpartitionNr $ FAIfsType $ FAImountPoint $ FAIpartitionSize $ cn ) MAY ( FAImountOptions $ FAIfsOptions $ FAIpartitionFlags $ description $ FAIstate ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.6 NAME 'FAIhook' SUP top AUXILIARY DESC 'Stores FAI partition tables' MUST ( cn ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.7 NAME 'FAIhookEntry' SUP top AUXILIARY DESC 'FAI hook storage' MUST ( cn $ FAIscript $ FAItask ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.8 NAME 'FAIscriptEntry' SUP top AUXILIARY DESC 'FAI script storage' MUST ( cn $ FAIscript $ FAIpriority ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.9 NAME 'FAIscript' SUP top AUXILIARY DESC 'FAI script storage' MUST ( cn ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.10 NAME 'FAIvariable' SUP top AUXILIARY DESC 'Stores FAI variables sub entries' MUST ( cn ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.11 NAME 'FAIvariableEntry' SUP top AUXILIARY DESC 'Stores single variable entries' MUST ( cn $ FAIvariableContent ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.12 NAME 'FAIpackageList' SUP top AUXILIARY DESC 'Stores complete package lists' MUST ( cn $ FAIpackage ) MAY ( FAIpackagelistDependency $ FAIinstallMethod $ description $ FAIstate ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.13 NAME 'FAItemplate' SUP top AUXILIARY DESC 'Container for template objects' MUST ( cn ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.14 NAME 'FAItemplateEntry' SUP top AUXILIARY DESC 'Stores real file templates' MUST ( cn $ FAItemplateFile $ FAItemplatePath $ FAIowner $ FAImode ) MAY ( FAIstate $ description ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.15 NAME 'FAIdebconfInfo' SUP top STRUCTURAL DESC 'Stores debconf informations for single packages' MUST ( FAIpackage $ FAIvariable $ FAIvariableType ) MAY ( FAIvariableContent $ FAIstate ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.16 NAME 'FAIobject' SUP top AUXILIARY DESC 'Marks an object as an FAI object.' MAY ( FAIstate $ FAIstatus $ FAIclass $ FAIdebianMirror $ macAddress) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.17 NAME 'FAIrepository' SUP top AUXILIARY DESC 'Provides per object repository informations.' MUST ( FAIdebianRelease $ FAIdebianSection ) MAY ( FAIdebianMirror ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.18 NAME 'FAIrepositoryServer' SUP top AUXILIARY DESC 'Provides repository informations.' MAY ( FAIrepository ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.19 NAME 'FAIbranch' SUP top AUXILIARY DESC 'Provides information for versioning.' MAY ( FAIstate ) ) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.1.40.20 NAME 'FAIreleaseTag' SUP top AUXILIARY DESC 'Provides information for versioning.' MAY ( FAIrelease ) ) diff --git a/trunk/gosa-plugins/fai/contrib/fai.schema b/trunk/gosa-plugins/fai/contrib/fai.schema new file mode 100644 index 000000000..5bfbcd8a7 --- /dev/null +++ b/trunk/gosa-plugins/fai/contrib/fai.schema @@ -0,0 +1,474 @@ +############################################################################### +# # +# F A I - Fully automatic installation LDAP schema file # +# # +#-----------------------------------------------------------------------------# +# Last modified: Cajus Pollmeier / 20050902 # +#-----------------------------------------------------------------------------# +# Copyright 2005, Cajus Pollmeier # +# Thomas Lange # +#-----------------------------------------------------------------------------# +# 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 # +############################################################################### + + +# This schema file has dependencies to the nis.schema. Please make sure that +# the inclusion order in your slapd.conf is correct. + + +# Here's a short list of object class / attribute relationship. For a more +# detailed description take a look at the definitions below. +# +# Objectclasses | Attributes +# ----------------------------------------------------------------------------- +# FAIclass | cn,description,FAIclassType +# FAIprofile | FAIclass +# FAIhook | (inherit from FAIclass) +# FAIhookEntry | FAIscript, FAItask +# FAIscript | (inherit from FAIclass) +# FAIscriptEntry | FAIscript, FAIpriority +# FAIvariable | (inherit from FAIclass) +# FAIvariableEntry | FAIvariableContent +# FAItemplate | (inherit from FAIclass) +# FAItemplateEntry | FAItemplateFile, FAItemplatePath, FAIowner, FAImode +# FAIpartitionTable | (inherit from FAIclass) +# FAIpartitionDisk | (inherit from FAIclass) +# FAIpartitionEntry | FAIpartitionType, FAIpartitionNr, FAImountOptions, +# | FAIfsOptions, FAIfsType, FAImountPoint,FAIpartitionSize, +# | FAIpartitionFlag +# FAIpackageList | FAIinstallMethod, FAIpackage +# FAIdebconfInfo | FAIvariable, FAIvariableContent, FAIvariableType +# FAIobject | FAIclass, FAIstatus, macAddress +# FAIrepository | FAIdebianMirror, FAIdebianRelease, FAIdebianSection +# FAIrepositoryServer | FAIrepository +# +# Rem.: Except of FAIdebconfInfo and FAIobject, all object classes are inherited +# from FAIclass, so ALL cn's MUST be unique in your tree. + + +## +## Attribute definitions (allocated from the GONICUS oid space) +## + +# Name : FAIclass +# Description: Notes which FAI class name(s) are used in an FAI object +# or in profile definitions. No unicode here, maximum +# length is set to 64 characters. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.1 NAME 'FAIclass' + DESC 'Storage for FAI class names' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64}) + +# Name : FAIpriority +# Description: Notes which priority scripts or profiles entries get. It is used +# by FAI to generate a propper class list during the bootstrap +# process. This is an unsigned integer value. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.2 NAME 'FAIpriority' + DESC 'Storage for FAI priorities' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE) + +# Name : FAIpartitionType +# Description: As the name says, we store the type of a (hard-disk) partition +# here. Type can be one of "primary" or "secondary". We did not +# make this bool because there may be changes to the FAI partitioner +# which we can't handle then. The maximum length is set to 16 +# characters. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.3 NAME 'FAIpartitionType' + DESC 'Storage for FAI partition types' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE) + +# Name : FAIpartitionNr +# Description: We use this value to store the device entries like "disk1" or +# "sda8" with this attribute. Currently the storage is without the +# leading "/dev/". +attributetype ( 1.3.6.1.4.1.10098.1.1.5.4 NAME 'FAIpartitionNr' + DESC 'Storage for FAI partition devices' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAImountOptions +# Description: We use this value to store special mount options for partitions. +# For example some people tend to have /usr mounted as read-only. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.5 NAME 'FAImountOptions' + DESC 'Storage for FAI partition mount options' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAImountPoint +# Description: Simply the mountpoint like found in the fstab. Examples are +# '/usr', '/' and '/home'. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.6 NAME 'FAImountPoint' + DESC 'Storage for FAI partition mount points' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIfsOptions +# Description: In some cases you might want to influence the filesystem +# generation commands by adding flags for larger inode tables, etc. +# FAIfsOptions keeps the flags that are used by the mkfs workers. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.7 NAME 'FAIfsOptions' + DESC 'Storage for FAI partition generation options' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIfsType +# Description: Keeps the type of the filessytem a partition gets formatted with. +# Examples are 'ext3', 'xfs', etc. Please refer to the FAI manual +# for valid types. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.8 NAME 'FAIfsType' + DESC 'Storage for FAI partition types' + EQUALITY caseExactMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} SINGLE-VALUE) + +# Name : FAIscript +# Description: Store multiline text, mostly used for scripts and hooks. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.9 NAME 'FAIscript' + DESC 'General storage field for multiline text aka scripts' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE) + +# Name : FAItask +# Description: Assign a hook to a special task. You can use it i.e. to alter +# partition tables, etc. The FAI manual hold a list of valid +# tasks for you. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.10 NAME 'FAItask' + DESC 'Note for which FAI tasks a hook is made for' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIvariable +# Description: Keeps the name of a debconf template variable. The value is +# stored inside of FAIvariableContent, the type inside +# FAIvariableType. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.11 NAME 'FAIvariable' + DESC 'Store debconf template variable names' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIvariableContent +# Description: Keeps the content of a debconf template variable. See +# FAIvariable for more informations. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.12 NAME 'FAIvariableContent' + DESC 'Store debconf template variable contents' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIvariableType +# Description: Keeps the type of a debconf template variable. See +# FAIvariable for more informations. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.13 NAME 'FAIvariableType' + DESC 'Store debconf template variable type' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIinstallMethod +# Description: Keeps a per package setting on how packages should be +# installed. This is the normal line you'd specify in +# our ordinary package lists. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.14 NAME 'FAIinstallMethod' + DESC 'Store debian package installation flag' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIpackage +# Description: Keeps an entry of a package list. Each FAIpackage object +# may be a parent for FAIdebconfInfo objects. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.15 NAME 'FAIpackage' + DESC 'Store debian package name' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +# Name : FAItemplateFile +# Description: Keeps complete template files that are copied to the +# freshly installed system later on. The tasks path is +# stored in FAItemplatePath. Use ;binary for this attribute. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.16 NAME 'FAItemplateFile' + DESC 'Store complete template files' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE) + +# Name : FAItemplatePath +# Description: Keeps the path used for template files. See FAItemplateFile +# for more informations. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.17 NAME 'FAItemplatePath' + DESC 'Store template file storage path' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIowner +# Description: Keeps the owner used for template files. Put in the unix +# way like user.group. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.18 NAME 'FAIowner' + DESC 'Store template file storage path' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAImode +# Description: Keeps the file mode used for template files. Put in the unix +# way like 775. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.19 NAME 'FAImode' + DESC 'Store template file storage path' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE) + +# Name : FAIstatus +# Desrciption: Normally the fai daemon should set the status flag to the +# current status. Possible states are: +# * update-needed +# * update-running +# * update-failed +# * update-ok +# * install-running +# * install-failed +# * install-ok +# Additional informations can be taken from the log files if +# some machine is set to -failed. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.20 NAME 'FAIstatus' + DESC 'Store FAI progress status' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIpackagelistDependency +# Description: This field stores dependency informations for package lists. +# It is used to install i.e. ati specific packages when the +# hardware detection detects ATI gfx cards. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.21 NAME 'FAIpackagelistDependency' + DESC 'Store package lists where we depend from' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIpartitionSize +# Description: Store a size or a size range for partitions. I.e. 50, +# 50-200. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.22 NAME 'FAIpartitionSize' + DESC 'Store size range for partition size' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIpartitionFlags +# Description: Optionally this flag contains the "preserve" keyword, in +# order to influence partitioning. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.23 NAME 'FAIpartitionFlags' + DESC 'Optional flags like "preserve"' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIdebianMirror +# Description: Used for bootstrap sources.list settings. It contains +# the mirror server url. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.24 NAME 'FAIdebianMirror' + DESC 'TODO' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIdebianRelease +# Description: Used for bootstrap sources.list settings. It contains +# the release. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.25 NAME 'FAIdebianRelease' + DESC 'TODO' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +# Name : FAIdebianSection +# Description: Used for bootstrap sources.list settings. It contains +# the section. Multiple Sections get appended. +attributetype ( 1.3.6.1.4.1.10098.1.1.5.26 NAME 'FAIdebianSection' + DESC 'TODO' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +# Name : FAIrepository +# Description: Used to store repository settings +attributetype ( 1.3.6.1.4.1.10098.1.1.5.27 NAME 'FAIrepository' + DESC 'TODO' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +# Name : FAIstate +# Description: Used to store repository state (branched/freezed) +attributetype ( 1.3.6.1.4.1.10098.1.1.5.28 NAME 'FAIstate' + DESC 'TODO' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +# Name : FAIrelease +# Description: Used to store the release +attributetype ( 1.3.6.1.4.1.10098.1.1.5.29 NAME 'FAIrelease' + DESC 'TODO' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +## +## Object class definitions (allocated from the GONICUS oid space) +## + +# Name : FAIclass +# Description: FAIclass is the basic container wich includes a +# common name and a description. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.1 NAME 'FAIclass' + SUP top STRUCTURAL + DESC 'Generic class parent for FAI objects' + MUST ( cn ) MAY ( FAIstate $ description ) ) + +# Name : FAIprofile +# Description: FAIprofile which bundles a set of FAIclass entries +# like FAIpartition and FAIpackageList. It is used +# to simplify administration tasks for so called junior +# administrators. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.2 NAME 'FAIprofile' + SUP top AUXILIARY + DESC 'FAI profile container for multiple class objects' + MUST ( cn $ FAIclass ) MAY ( FAIstate $ description ) ) + +# Name : FAIpartitionTable +# Description: Each installation profile should contain a partition +# table in order to perform well. FAIpartitionTable is +# a container for partition entries. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.3 NAME 'FAIpartitionTable' + SUP top AUXILIARY + DESC 'Stores FAI partition tables' + MUST ( cn ) MAY ( FAIstate $ description ) ) + +# Name : FAIpartitionDisk +# Description: Each installation profile should contain a partition +# table in order to perform well. FAIpartitionTable is +# a container for partition entries. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.4 NAME 'FAIpartitionDisk' + SUP top AUXILIARY + DESC 'Stores FAI partition tables' + MUST ( cn ) MAY ( FAIstate $ description ) ) + +# Name : FAIpartitionEntry +# Description: This object defines a single partition entry for the +# FAI partitioner. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.5 NAME 'FAIpartitionEntry' + SUP top AUXILIARY + DESC 'One partition table entry' + MUST ( FAIpartitionType $ FAIpartitionNr $ FAIfsType $ + FAImountPoint $ FAIpartitionSize $ cn ) + MAY ( FAImountOptions $ FAIfsOptions $ FAIpartitionFlags $ + description $ FAIstate ) ) + +# Name : FAIhook +# Description: Container for hooks +objectclass (1.3.6.1.4.1.10098.1.2.1.40.6 NAME 'FAIhook' + SUP top AUXILIARY + DESC 'Stores FAI partition tables' + MUST ( cn ) MAY ( FAIstate $ description ) ) + +# Name : FAIhookEntry +# Description: Hooks are stored with their FAI task inside the +# FAIhook object. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.7 NAME 'FAIhookEntry' + SUP top AUXILIARY + DESC 'FAI hook storage' + MUST ( cn $ FAIscript $ FAItask ) MAY ( FAIstate $ description ) ) + +# Name : FAIscriptEntry +# Description: Container for scripts +objectclass (1.3.6.1.4.1.10098.1.2.1.40.8 NAME 'FAIscriptEntry' + SUP top AUXILIARY + DESC 'FAI script storage' + MUST ( cn $ FAIscript $ FAIpriority ) MAY ( FAIstate $ description ) ) + +# Name : FAIscript +# Description: Hooks and scripts are somewhat similar. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.9 NAME 'FAIscript' + SUP top AUXILIARY + DESC 'FAI script storage' + MUST ( cn ) MAY ( FAIstate $ description ) ) + +# Name : FAIvariable +# Description: Store a set of variables in this container. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.10 NAME 'FAIvariable' + SUP top AUXILIARY + DESC 'Stores FAI variables sub entries' + MUST ( cn ) MAY ( FAIstate $ description ) ) + +# Name : FAIvariableEntry +# Description: Stores a single variable. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.11 NAME 'FAIvariableEntry' + SUP top AUXILIARY + DESC 'Stores single variable entries' + MUST ( cn $ FAIvariableContent ) MAY ( FAIstate $ description ) ) + +# Name : FAIpackagelist +# Description: Stores a complete package list and is container +# for several FAIdebconfInfo scripts +objectclass (1.3.6.1.4.1.10098.1.2.1.40.12 NAME 'FAIpackageList' + SUP top AUXILIARY + DESC 'Stores complete package lists' + MUST ( cn $ FAIpackage ) MAY ( FAIpackagelistDependency $ FAIinstallMethod $ description $ FAIstate ) ) + +# Name : FAItemplate +# Description: Container for template objects. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.13 NAME 'FAItemplate' + SUP top AUXILIARY + DESC 'Container for template objects' + MUST ( cn ) MAY ( FAIstate $ description ) ) + +# Name : FAItemplateEntry +# Description: Stores FAI templates and the corresponding path. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.14 NAME 'FAItemplateEntry' + SUP top AUXILIARY + DESC 'Stores real file templates' + MUST ( cn $ FAItemplateFile $ FAItemplatePath $ FAIowner $ FAImode ) + MAY ( FAIstate $ description ) ) + +# Name : FAIdebconfInfo +# Description: Stores debconf information like shown in +# debconf-getselections. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.15 NAME 'FAIdebconfInfo' + SUP top STRUCTURAL + DESC 'Stores debconf informations for single packages' + MUST ( FAIpackage $ FAIvariable $ FAIvariableType ) MAY ( FAIvariableContent $ FAIstate ) ) + +# Name : FAIobject +# Description: Marks objects to have a set of FAI classes. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.16 NAME 'FAIobject' + SUP top AUXILIARY + DESC 'Marks an object as an FAI object.' + MAY ( FAIstate $ FAIstatus $ FAIclass $ FAIdebianMirror $ macAddress) ) + +# Name : FAIrepository +# Description: Marks objects to have a set of FAI classes. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.17 NAME 'FAIrepository' + SUP top AUXILIARY + DESC 'Provides per object repository informations.' + MUST ( FAIdebianRelease $ FAIdebianSection ) MAY ( FAIdebianMirror ) ) + +# Name : FAIrepositoryServer +# Description: FAIrepositoryServer stores information about repository settings. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.18 NAME 'FAIrepositoryServer' + SUP top AUXILIARY + DESC 'Provides repository informations.' + MAY ( FAIrepository ) ) + +# Name : FAIbranch +# Description: FAIbranch stores information about the state of a set of FAI classes. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.19 NAME 'FAIbranch' + SUP top AUXILIARY + DESC 'Provides information for versioning.' + MAY ( FAIstate ) ) + +# Name : FAIreleaseTag +# Description: FAIreleaseTag stores information about the fai release of an object. +objectclass (1.3.6.1.4.1.10098.1.2.1.40.20 NAME 'FAIreleaseTag' + SUP top AUXILIARY + DESC 'Provides information for versioning.' + MAY ( FAIrelease ) ) + +### END of FAI schema file diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/fai.lyx b/trunk/gosa-plugins/fai/help/de/lyx-source/fai.lyx new file mode 100644 index 000000000..9eb01da79 --- /dev/null +++ b/trunk/gosa-plugins/fai/help/de/lyx-source/fai.lyx @@ -0,0 +1,2033 @@ +#LyX 1.4.1 created this file. For more info see http://www.lyx.org/ +\lyxformat 245 +\begin_document +\begin_header +\textclass article +\language ngerman +\inputencoding auto +\fontscheme default +\graphics default +\paperfontsize default +\spacing single +\papersize a4paper +\use_geometry false +\use_amsmath 1 +\cite_engine basic +\use_bibtopic false +\paperorientation portrait +\leftmargin 10mm +\topmargin 10mm +\rightmargin 10mm +\bottommargin 20mm +\headheight 10mm +\headsep 10mm +\footskip 10mm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes true +\end_header + +\begin_body + +\begin_layout Title + +\series bold +Automatische Installation +\end_layout + +\begin_layout Section +Einführung +\end_layout + +\begin_layout Standard +Die Automatische Installation (orig. + FAI) ist ein Softwarepaket, das eine vorkonfigurierte und automatisierte + Installation von Debian GNU/Linux Systemen ermöglicht. + Dazu werden Sammlungen (sog. + Profile) von verschiedenen Aspekten der Installation gebildet, um eine + Installation gleich oder ähnlich ausgestatteter Rechner möglichst flexibel + zu ermöglichen. + +\end_layout + +\begin_layout Standard +\begin_inset Formula $GOsa^{\text{2}}$ +\end_inset + + unterstützt mit der FAI-Erweiterung alle Aspekte dieser automatischen Installat +ion. + Im Folgenden wird beschrieben, wie Sie die nötigen Vorbereitungen treffen, + um Ihre Rechner automatisch mit Debian GNU/Linux zu installieren. +\end_layout + +\begin_layout Subsection +Liste der FAI-Klassen +\end_layout + +\begin_layout Standard +Die Liste der FAI-Klassen dient als Ausgangspunkt für alle weiteren Schritte. + Sie wird erreicht über den Menüeintrag +\series bold +\color blue +FAI +\series default +\color none + aus der Kategorie +\series bold +Administration +\series default + (Menü am linken Rand des Bildschirms). + Bei Auswahl wird die Liste der FAI-Klassen geladen (Überschrift: +\emph on +Benutzerverwaltung) +\emph default +. + Auf dieser Seite können Benutzer hinzugefügt, bearbeitet oder entfernt + werden. +\end_layout + +\begin_layout Standard +Die Liste ist in drei Spalten geteilt: +\end_layout + +\begin_layout Itemize +Die erste Spalte enthält zunächst die verfügbaren Abteilungen, dann die + Namen der FAI-Klassen (alphabetisch sortiert) +\end_layout + +\begin_layout Itemize +Die zweite Spalte enthält den ausgeschriebenen Typ der Klasse (z.B. + partition table) +\end_layout + +\begin_layout Itemize +Die dritte Spalte enthält Knöpfe für die möglichen Aktionen, um Verwaltungsaufga +ben durchzuführen (Ausschneiden, Kopieren, Bearbeiten, Entfernen) +\end_layout + +\begin_layout Standard +Die vier Knöpfe +\begin_inset Graphics + filename images/list_root.png + +\end_inset + +, +\begin_inset Graphics + filename images/list_back.png + +\end_inset + + , +\begin_inset Graphics + filename images/list_home.png + +\end_inset + + und +\begin_inset Graphics + filename images/list_reload.png + +\end_inset + + oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie: +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/list_root.png + +\end_inset + +: Zur Wurzel +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/list_back.png + +\end_inset + +: Eine Abteilung nach oben +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/list_home.png + +\end_inset + +: Zur Basis des angemeldeten Benutzers +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/list_reload.png + +\end_inset + +: Aktuelle Abteilung neu laden +\end_layout + +\begin_layout Standard + +\color black +Es ist weiterhin möglich, die Anzeige der FAI-Klassen mithilfe von Filtern + zu beeinflussen (Kasten +\series bold +Filter +\series default + +\begin_inset Graphics + filename images/rocket.png + +\end_inset + + am rechten Rand): +\end_layout + +\begin_layout Itemize + +\color black +Nach Namen suchen: +\end_layout + +\begin_deeper +\begin_layout Itemize + +\color black +Klick auf * zeigt alle FAI-Klassen an +\end_layout + +\begin_layout Itemize + +\color black +Klick auf einen Buchstaben zeigt alle FAI-Klassen an, deren Name mit dem + gewählten Buchstaben beginnt +\end_layout + +\begin_layout Itemize +Klick auf eine Ziffer zeigt alle +\color black + FAI-Klassen +\color none + an, deren Name mit der gewählten Ziffer beginnt +\end_layout + +\end_deeper +\begin_layout Itemize +Weitere Suchoptionen: +\newline +(Die folgenden Filter arbeiten so, dass nur +\color black +FAI-Klassen +\color none + angezeigt werden, die über mindestens eine der ausgewählten Optionen verfügen; + Standardmässig werden alle +\color black +FAI-Klassen +\color none + angezeigt) +\end_layout + +\begin_deeper +\begin_layout Itemize + +\emph on +Zeige Profile +\emph default +: Zeigt FAI-Profile (Zusammenfassung von FAI-Objekten zu einem logischen + Paket) +\end_layout + +\begin_layout Itemize + +\emph on +Zeige Vorlagen +\emph default +: Zeigt FAI-Vorlagen +\end_layout + +\begin_layout Itemize + +\emph on +Zeige Skripte +\emph default +: Zeigt FAI-Skripte +\end_layout + +\begin_layout Itemize + +\emph on +Zeige Hooks +\emph default +: +\end_layout + +\begin_layout Itemize + +\emph on +Zeige Variablen +\emph default +: +\end_layout + +\begin_layout Itemize + +\emph on +Zeige Pakete +\emph default +: +\end_layout + +\begin_layout Itemize + +\emph on +Zeige Partitionen +\emph default +: +\end_layout + +\end_deeper +\begin_layout Itemize +Zusätzlich zu der o.g. + funktionalen Filterung kann die Liste durch lexikalische Filterung weiter + eingeschränkt werden. + Dazu dienen zum Einen die vordefinierten Buchstaben/Zahlen, die die Liste + für Benutzer einschränken, die mit dem gewählten Buchstaben/der Ziffer + beginnen. + Komplexere Einschränkungen über reguläre Ausdrücke bietet das Textfeld + im unteren Bereich des Kastens +\series bold +Filter +\series default + (beginnt mit dem Symbol +\begin_inset Graphics + filename images/search.png + +\end_inset + +). + In dieses Feld können Sie beliebige Buchstaben/Ziffern-Kombinationen eingeben, + um die Suche einzuschränken. + Um die Suchergebnisse in der Liste anzeigen zu lassen, klicken Sie auf + +\emph on +Filter anwenden +\emph default +. +\end_layout + +\begin_layout Subsection* +Neues FAI-Objekt anlegen +\end_layout + +\begin_layout Standard +Um ein neues FAI-Objekt anzulegen, drücken Sie auf den dem Typ des anzulegenden + FAI-Objektes entsprechenden Knopf. + Die Möglichkeiten sind: +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/fai_new_profile.png + +\end_inset + +: Ein neues FAI-Profil anlegen +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/fai_new_partitionTable.png + +\end_inset + +: Eine neue FAI-Partitionstabelle anlegen +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/fai_new_script.png + +\end_inset + +: Ein neues FAI-Skript anlegen +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/fai_new_hook.png + +\end_inset + +: Einen neuen FAI-Hook anlegen +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/fai_new_variable.png + +\end_inset + +: Eine neue FAI-Variable anlegen +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/fai_new_template.png + +\end_inset + +: Eine neue FAI-Vorlage anlegen +\end_layout + +\begin_layout Itemize +\begin_inset Graphics + filename images/fai_new_packages.png + +\end_inset + +: Eine neue FAI-Paketliste anlegen +\end_layout + +\begin_layout Standard +Sie werden nun aufgefordert, einen eindeutigen Namen für das neue Objekt + zu vergeben. + Die Eindeutigkeit bezieht sich dabei ausschließlich auf den momentan gültigen + Objekttyp! Sie können also verschiedene gleichnamige Objekte erstellen + - diese müssen lediglich unterschiedliche Typen von FAI-Objekten sein (also + Partitionstabelle, Paketliste etc.). +\end_layout + +\begin_layout Standard +Wenn Sie einen Namen vergeben haben, drücken Sie auf den Knopf +\emph on +Fortsetzen +\emph default +. + Befolgen Sie dann die nachfolgende Beschreibung für die Bearbeitung bestehender + FAI-Objekte. + +\end_layout + +\begin_layout Subsubsection* +Ein bestehendes FAI-Objekt bearbeiten +\end_layout + +\begin_layout Standard +Klicken Sie in der Liste FAI-Objekte auf den Namen des gewünschten Objektes. + Es öffnet sich die Eigenschaftsseite des Objektes, die für alle verschiedenen + Typen unterschiedlich ist. + Im Folgenden sind die Eigenschaften aller FAI-Objekttypen aufgeführt. +\end_layout + +\begin_layout Subsubsection* +Generelle Informationen +\end_layout + +\begin_layout Itemize +Um die Bearbeitung des FAI-Objektes (auch neuer Objekte) abzuschliessen, + drücken Sie auf den Knopf +\emph on +Speichern +\emph default + unten rechts; um den Vorgang zu verwerfen, drücken Sie auf den Knopf +\emph on +Abbrechen +\emph default +, der sich ebenfalls unten rechts befindet. +\end_layout + +\begin_layout Itemize +Alle Felder, die mit einem roten Sternchen +\color red +* +\color none + enden, sind Pflichtfelder und müssen daher zwingend ausgefüllt werden. +\end_layout + +\begin_layout Itemize +In der rechten, oberen Ecke findet sich der komplette +\emph on +dn +\emph default + des aktuell geöffneten Objektes. +\end_layout + +\begin_layout Standard + +\newpage + +\end_layout + +\begin_layout Section +Partitionstabellen +\end_layout + +\begin_layout Standard +Partitionstabellen dienen dazu (wie es der Name vermuten lässt), die automatisch +e Partitionierung während der Installation mit FAI zu konfigurieren. + Dazu werden in diesem Objekt die nötigen Informationen eingebettet - diese + umfassen die im Zielsystem vorhandenen Festplatten mit den zugehörigen + Partitionen. +\end_layout + +\begin_layout Subsection +Allgemein +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +Name +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Eindeutiger Name der FAI-Partitionstabelle +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Beschreibung +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Kurze Beschreibung der FAI-Partitionstabelle +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace medskip +\end_inset + + +\end_layout + +\begin_layout Subsection +Festplatten +\end_layout + +\begin_layout Standard +Zu jeder Partitionstabelle gehören eine oder mehrere Festplatten (wobei + GOsa es durchaus erlaubt, leere Partitionstabellen zu erstellen). + Diese enthalten die tatsächlich später anzulegenden Partitionen. + Um eine Festplatte hinzuzufügen, werden zum einen die allgemeinen Angaben + zur Festplatte sowie die einzelnen Partitionseinträge benötigt. +\end_layout + +\begin_layout Subsubsection +Gerät +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +Name +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Gerätedatei (z.B. + /dev/hda) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Beschreibung +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Kurze Beschreibung der Festplatte +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Partitions-Einträge +\end_layout + +\begin_layout Standard +Um eine neue Partition hinzuzufügen, drücken Sie auf den Knopf +\emph on +Partition hinzufügen +\emph default +. + Um eine bestehende Partition wieder zu entfernen, drücken Sie auf den Knopf + +\emph on +Entfernen +\emph default + in der entsprechenden Zeile. +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard +Typ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Wählen Sie aus der Liste, ob die Partition primär (primary) oder logisch + (logical) ist. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Dateisystem +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Wählen Sie aus der Liste das Dateisystem, mit dem die Partition formatiert + wird. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Mount-Punkt +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Geben Sie den Mount-Punkt der Partition an (z.B. + /, /var, /home, /export, etc.). +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Größe in MB +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Geben Sie die Größe der Partition in MB an. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Mount-Optionen +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Geben Sie optionale Mount-Optionen der Partition an. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Dateisystem-Option +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Geben Sie optionale Dateisystem-Optionen der Partition an. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Bewahren +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Aktivieren Sie diese Option, wenn die Partition bei einer Neuinstallation + nicht formatiert werden soll (wenn Sie bereits vorhanden ist). +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Section +Skript-Sammlung +\end_layout + +\begin_layout Standard +Eine Skript-Sammlung dient dazu, zu einer logischen Einheit gehörende Skripte + zusammenzufassen. + Skripte dienen im Allgemeinen dazu, spezifische Vorbereitungen zu treffen. + Diese eingebundenen Skripte werden beim Startvorgang des Systems mit einer + definierten Priorität ausgeführt. + +\end_layout + +\begin_layout Subsection +Allgemein +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +Name +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Eindeutiger Name der FAI-Skriptsammlung +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Beschreibung +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Kurze Beschreibung der FAI-Skriptsammlung +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsection +Liste der Skripte +\end_layout + +\begin_layout Standard +Die Liste der Skripte dient dazu, einzelne Skripte zu dieser Sammlung hinzuzufüg +en und bereits zugeordnete Skripte wieder zu entfernen. + +\end_layout + +\begin_layout Subsubsection +Skript hinzufügen +\end_layout + +\begin_layout Standard +Um ein Skript hinzuzufügen, drücken Sie auf den Knopf +\emph on +Hinzufügen +\emph default + unterhalb der Liste. +\end_layout + +\begin_layout Subsubsection +Skript bearbeiten +\end_layout + +\begin_layout Standard +Um ein bestehendes Skript zu bearbeiten, drücken Sie auf den Knopf +\begin_inset Graphics + filename images/edit.png + +\end_inset + + am Ende der Zeile des Skriptes, das Sie bearbeiten möchten. + Folgen Sie nun den Anweisungen, um ein neues Skript zu erstellen. +\end_layout + +\begin_layout Subsubsection +Skript entfernen +\end_layout + +\begin_layout Standard +Um ein bestehendes Skript zu entfernen, drücken Sie auf den Knopf +\begin_inset Graphics + filename images/edittrash.png + +\end_inset + + am Ende der Zeile des Skriptes, das Sie entfernen möchten. +\end_layout + +\begin_layout Subsection +Skript erstellen +\end_layout + +\begin_layout Standard +Nachdem Sie ein neues Skript erstellt haben (oder ein bestehendes Skript + zum Bearbeiten geöffnet haben), öffnet sich die Eigenschaftsseite, auf + der die allgemeinen Einstellungen, die Attribute sowie der eigentliche + Skript-Inhalt bearbeitet werden können. +\end_layout + +\begin_layout Section +Hooks +\end_layout + +\begin_layout Standard +Hooks dienen dazu, die Installation eines FAI-Systems kurzzeitig an definierten + Haltepunkten zu unterbrechen, um ein oder mehrere Skripte auszuführen. + Der Einsatzweck liegt darin, eine generische Installation perfekt an die + Gegebenheiten eines einzelnen Systems anzupassen, indem die Skripte verschieden +e Umgebungsbedingungen, die erst zum Installationszeitpunkt bekannt sind, + ermitteln und für die Weiterverarbeitung an den Installationsprozess zurückgebe +n. +\end_layout + +\begin_layout Standard +GOsa verwaltet Hooks als Gruppe von Hook-Skripten, dies dient automatisch + dem Ziel, Hook-Skripte zusammengefasst abzulegen. +\end_layout + +\begin_layout Subsection +Allgemein +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +Name +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Eindeutiger Name der Hook-Gruppe +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Beschreibung +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Kurze Beschreibung der Hook-Gruppe +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsection +Liste der Hook-Skripte +\end_layout + +\begin_layout Standard +Die Liste der Hook-Skripte dient dazu, einzelne Hook-Skripte zu dieser Sammlung + hinzuzufügen und bereits zugeordnete Hook-Skripte wieder zu entfernen. + +\end_layout + +\begin_layout Subsubsection +Hook-Skript hinzufügen +\end_layout + +\begin_layout Standard +Um ein Hook-Skript hinzuzufügen, drücken Sie auf den Knopf +\emph on +Hinzufügen +\emph default + unterhalb der Liste. + Sie können nun die folgenden Einstellungen vornehmen: +\end_layout + +\begin_layout Paragraph +Allgemein +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +Name +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Eindeutiger Name des Hooks +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Beschreibung +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Kurze Beschreibung des Hooks +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Hook-Attribute +\end_layout + +\begin_layout Standard +Wählen Sie aus der Liste den Zeitpunkt, wann der Hook aufgerufen werden + soll. +\end_layout + +\begin_layout Paragraph +Skript +\end_layout + +\begin_layout Standard +Geben Sie das Skript in das Textfeld ein, oder laden Sie die Datei hoch, + indem Sie zuerst mit dem Knopf +\emph on +Durchsuchen +\emph default + die Datei auswählen und dann mit dem Knopf +\emph on +Skript importieren +\emph default + die Datei hochladen. +\end_layout + +\begin_layout Subsubsection +Hook-Skript bearbeiten +\end_layout + +\begin_layout Standard +Um ein bestehendes Hook-Skript zu bearbeiten, drücken Sie auf den Knopf + +\begin_inset Graphics + filename images/edit.png + +\end_inset + + am Ende der Zeile des Hook-Skriptes, das Sie bearbeiten möchten. + Folgen Sie nun den Anweisungen, um ein neues Hook-Skript zu erstellen. +\end_layout + +\begin_layout Subsubsection +Hook-Skript entfernen +\end_layout + +\begin_layout Standard +Um ein bestehendes Hook-Skript zu entfernen, drücken Sie auf den Knopf +\begin_inset Graphics + filename images/edittrash.png + +\end_inset + + am Ende der Zeile des Hook-Skriptes, das Sie entfernen möchten. +\end_layout + +\begin_layout Section +Variablen +\end_layout + +\begin_layout Standard +FAI-Variablen dienen dazu, systemweite Variablen zur Laufzeit der Installation + bereitzustellen (meist um auszuführende Skripte oder Hooks zu steuern). + Diese sind in Variablen-Gruppen zusammengefasst. +\end_layout + +\begin_layout Subsection +FAI-Variablengruppe erstellen +\end_layout + +\begin_layout Standard +Um eine neue FAI-Vorlagengruppe zu erstellen, befolgen Sie zunächst die + generischen Anweisungen zum Erstellen eines FAI-Objektes (natürlich mit + dem Knopf +\begin_inset Graphics + filename images/fai_new_variable.png + +\end_inset + +). +\end_layout + +\begin_layout Subsubsection +FAI-Variable hinzufügen +\end_layout + +\begin_layout Standard +Um eine Variable zu einer Variablengruppe hinzuzufügen, drücken Sie auf + den Knopf +\emph on +Hinzufügen +\emph default + unterhalb der +\emph on +Liste benutzter Variablen +\emph default +. + Geben Sie den zumindest Namen der Variablen, sowie den Inhalt ein (optional + können Sie in das Feld +\emph on +Beschreibung +\emph default + eine kurze Beschreibung der Variablen eingeben) und drücken Sie auf den + Kopf +\emph on +Anwenden +\emph default +, um die neue Variable zu speichern. +\end_layout + +\begin_layout Subsubsection +FAI-Variable bearbeiten +\end_layout + +\begin_layout Standard +Um eine bestehende Variable zu bearbeiten, markieren Sie diese in der +\emph on +Liste benutzter Variablen +\emph default + und drücken Sie auf den Knopf +\emph on +Bearbeiten +\emph default +. + Bearbeiten Sie die Variable und speichern Sie die Änderungen, indem Sie + auf den Knopf +\emph on +Anwenden +\emph default + drücken. + Wenn Sie die Änderungen verwerfen möchten, drücken Sie auf den Knopf +\emph on +Abbrechen +\emph default +. +\end_layout + +\begin_layout Subsubsection +FAI-Variable entfernen +\end_layout + +\begin_layout Standard +Um eine bestehende Variable zu entfernen, markieren Sie diese in der +\emph on +Liste benutzer Variablen +\emph default + und drücken Sie auf den Knopf +\emph on +Entfernen +\emph default +. + Die Variable wird nun nicht mehr in der Liste aufgeführt. +\end_layout + +\begin_layout Section +Vorlagen +\end_layout + +\begin_layout Standard +FAI-Vorlagen dienen dazu, während der Installation Dateien im installierten + System mit zuvor abgelegten Dateien auszutauschen. + Der häufigste Fall für deren Verwendung ist das Ablegen von Konfigurationsdatei +en, aber auch das Ablegen von z.B. + beliebiger Dateien (Begrüßung der Benutzer, Vorlagen für Textdokumente) + sind gängige Praxis. + Für die Dateien können UNIX-spezifische Angaben wie Eigentümer, Gruppe + und die Zugriffsrechte festgelegt werden. + Die Vorlagen werden als Gruppe von Vorlagen verwaltet. +\end_layout + +\begin_layout Subsection +FAI-Vorlagengruppe erstellen +\end_layout + +\begin_layout Standard +Um eine neue FAI-Vorlagengruppe zu erstellen, befolgen Sie zunächst die + generischen Anweisungen zum Erstellen eines FAI-Objektes (natürlich mit + dem Knopf +\begin_inset Graphics + filename images/fai_new_template.png + +\end_inset + +). +\end_layout + +\begin_layout Subsubsection +FAI-Vorlage hinzufügen +\end_layout + +\begin_layout Standard +Um eine Vorlage zu einer Vorlagengruppe hinzuzufügen, öffnen Sie die Eigenschaft +sseite der gewünschen Vorlagengruppe (wenn Sie dabei sind, eine neue Vorlagengru +ppe zu erstellen, sind Sie bereits richtig). + Drücken Sie auf den Knopf +\emph on +Hinzufügen +\emph default + unterhalb der +\emph on +Liste der Vorlagen +\emph default +. + Es öffnet sich die Eigenschaftsseite mit den folgenden Einstellmöglichkeiten: +\end_layout + +\begin_layout Paragraph +Allgemein +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard +Name +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Eindeutiger Name der Vorlage +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Beschreibung +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Kurze Beschreibung der Vorlage +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Paragraph +Vorlagen-Attribute +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard +Datei +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Drücken Sie auf den Knopf +\emph on +Durchsuchen +\emph default + und wählen Sie die gewünschte Datei. + Drücken Sie, wenn die Datei ausgewählt wurde, auf den Knopf +\emph on +Hochladen +\emph default + und warten Sie einen Moment, bis die Datei auf den Server hochgeladen wurde. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Ziel-Pfad +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Geben Sie das Verzeichnis ein (komplett, also z.B. + /etc/gosa), in das die Datei kopiert wird. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Besitzer +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Geben Sie den Benutzernamen des gewünschten Besitzers an (z.B. + root) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Gruppe +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Geben Sie den Gruppennamen der gewünschten Gruppe an (z.B. + wheel) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Zugriff +\color red +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Stellen Sie in dieser Tabelle die Zugriffsrechte der Datei für +\emph on +Besitzer +\emph default +, +\emph on +Gruppe +\emph default + und +\emph on +Andere +\emph default + ein. +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +FAI-Vorlage bearbeiten +\end_layout + +\begin_layout Subsubsection +FAI-Vorlage entfernen +\end_layout + +\begin_layout Section +Paketlisten +\end_layout + +\begin_layout Standard +FAI-Paketlisten dienen dazu, verschiedene Installationsprofile anhand der + installierten Software zu bilden. + Eine Paketliste hält dazu alle Pakete vor, die installiert werden. + Dabei werden automatisch die Abhängigkeiten aufgelöst, so dass es nicht + erforderlich ist, dies manuell zu tun. +\end_layout + +\begin_layout Standard +Weiterhin werden FAI-Paketlisten gegliedert in Releases (=Revisionen), die + unterschiedliche Versionsstände repräsentieren, sowie Sections (=Sektionen), + die Teilbereiche darstellen. + Diese sind meist entweder vom Einsatzzweck oder Lizenzmodell abhängig. + Unter Debian GNU/Linux gibt es beispielsweise die Sektionen 'main', 'contrib' + und 'non-free'. +\end_layout + +\begin_layout Subsection +Erstellen einer Paketliste +\end_layout + +\begin_layout Standard +Nachdem Sie den Namen für die Paketliste (wie oben beschrieben) vergeben + haben, werden Sie aufgefordert, ein Release zu wählen. + Tun Sie dies, indem Sie aus der Liste ein Release auswählen. + Daraufhin müssen Sie noch die Sektionen, über die die Paketliste verfügen + soll auswählen. + Wählen Sie dazu eine oder mehrere (wenn mehrere vorhanden sind) Sektionen, + indem Sie das Häkchen vor dem Namen ankreuzen. +\end_layout + +\begin_layout Standard +Wenn Sie mit der Auswahl zufrieden sind, drücken Sie auf den Knopf +\emph on +Fortfahren +\emph default +. +\end_layout + +\begin_layout Subsection +Pakete +\end_layout + +\begin_layout Subsubsection +Allgemein +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard + +\color black +Name +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Eindeutiger Name der Paketliste +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +Beschreibung +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Kurze Beschreibung der Paketliste +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Repository +\end_layout + +\begin_layout Standard +Unter dieser Sektion steht lediglich die Installations-Methode zur Auswahl, + +\emph on +Release +\emph default + und +\emph on +Section +\emph default + sind informativer Natur. +\end_layout + +\begin_layout Standard +Um eine geeignete Installations-Methode für Ihre Paketliste zu wählen, sind + die zur Auswahl stehenden Möglichkeiten in folgender Tabelle zusammengefasst: +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Standard +install +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Die gewählten Pakete werden mit den Abhängigkeiten installiert. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +ninstall +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Es wird eine Installation der noch fehlenden Pakete simuliert (z.B. + weil der Download fehlgeschlagen ist oder die Prüfsumme nicht stimmte) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +remove +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Entfernt die gewählten Pakete inklusive der Konfiguration (Purge). +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +dselect-upgrade +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Führt Installation basierend auf den Paketstatusinformationen von dselect + aus (z.B. + Installieren von neuen Paketen, Entfernen von alten Paketen) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +taskinst +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Installiert bereits vordefinierte 'tasks' mithilfe des Kommandos 'tasksel'. + Tasks sind von Debian GNU/Linux bereitgestellte Paketlisten für bestimmte + Aufgaben. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +hold +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Setzt die Pakete auf den Status 'hold'. + Dies bedeutet, dass diese von zukünftigen Upgrades nicht berücksichtigt + werden. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +aptitude +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Installiert alle Pakete mit dem Kommando 'aptitude'. + Dieses unterstützt auch Tasks. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +aptitude-r +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Installiert genau so wie obiges Kommando 'aptitude'. + Zusätzlich werden jedoch noch die Empfehlungen eines Paketes installiert. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +pending +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Konfiguriert die Pakete, die noch ausstehend sind. +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Standard +dpkgc +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Standard +Schliesst die Installation von nur teilweise installierten Paketen ab. +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Subsection +Verwendete Pakete +\end_layout + +\begin_layout Standard +Diese Sektion enthält die eigentliche Paketliste. + Die zugeordneten Pakete werden in der Liste aufgeführt. +\end_layout + +\begin_layout Subsubsection +Hinzufügen +\end_layout + +\begin_layout Standard +Um eines oder mehrere Pakete zu der Liste hinzuzufügen, drücken Sie auf + den Knopf +\emph on +Hinzufügen +\emph default + unterhalb der Liste. + Die nun geladene Seite enthält zunächst eine leere Liste, da eine Gesamtauswahl + einige Zeit in Anspruch nehmen würde (Generell ist die Liste darauf beschränkt, + maximal 200 Treffer anzuzeigen). + Um Pakete anzuzeigen, die Sie hinzufügen können, müssen Sie die Suche einschrän +ken: Dazu befinden sich im Kasten Filter zum einen Checkboxen, die verschiedene + Anwendungsgebiete in die Liste aufnehmen (wenn sie gewählt sind) oder diese + aus der Liste ausblenden (wenn sie abgewählt sind) und zum anderen ein + Eingabefeld, in das ein Such-Text eingegeben werden kann bzw. + sollte. + Wenn Sie mithilfe der Filtermethoden das gewünschte Paket gefunden haben, + markieren Sie einfach die Checkbox am Anfang der Zeile des Pakets. + +\end_layout + +\begin_layout Standard +Zum letztendlichen Hinzufügen der gewählten Pakete drücken Sie auf den Knopf + +\emph on +Anwenden +\emph default + unten rechts. + Um Ihre Auswahl zu verwerfen drücken Sie auf den Knopf +\emph on +Abbrechen +\emph default +. +\end_layout + +\begin_layout Paragraph +Mehrere Pakete hinzufügen +\end_layout + +\begin_layout Standard +Wenn Sie mehrere Pakete hinzufügen möchten, speichert GOsa automatisch Ihre + bisherige Auswahl. + Sie können also, nachdem Sie eine Auswahl getroffen haben, weiter nach + Paketen suchen und diese markieren. + Verfahren Sie weiter wie oben beschrieben. +\end_layout + +\begin_layout Subsubsection +Entfernen +\end_layout + +\begin_layout Standard +Um eines oder mehrere Pakete aus der Paketliste zu entfernen (nicht zum + deinstallieren!), markieren Sie diese und drücken Sie auf den Knopf +\emph on +Entfernen +\emph default + unterhalb der Liste. +\end_layout + +\begin_layout Subsubsection +Konfigurieren +\end_layout + +\begin_layout Subsubsection +Entfernen-Flag umschalten +\end_layout + +\begin_layout Section +Profile +\end_layout + +\begin_layout Standard +FAI-Profile sind sozusagen das Bindeglied aller FAI-Objekttypen - sie fassen + die verschiedenen Typen zusammen, damit man alle Aspekte eines Systems + oder vielmehr einer Gruppe von Systemen gebündelt definieren kann. + Dazu werden einfach die gewünschten FAI-Klassenobjekte (Paketliste, Partitionst +abelle etc.) dem Profil zugeordnet. + Bei der Installation wird dann für ein System dieses Profil ausgewählt + und die Installation kann beginnen. +\end_layout + +\begin_layout Subsection +Erstellen eines FAI-Profils +\end_layout + +\begin_layout Standard +Um ein neues FAI-Profil zu erstellen, drücken Sie auf die Schaltfläche +\begin_inset Graphics + filename images/fai_profile.png + +\end_inset + + ( +\emph on +Neues FAI-Profil erstellen +\emph default +) oberhalb der Liste. + Geben Sie dann einen eindeutigen Namen und optional eine Beschreibung für + das Profil ein. + Fügen Sie dann mithilfe des Knopfes +\emph on +Hinzufügen +\emph default + mindestens ein Objekt hinzu. + Zum Auswählen der gewünschten Klasse(n) markieren Sie die Auswahlbox in + der passenden Zeile der Klasse(n). + Drücken Sie dann auf den Knopf +\emph on +Anwenden +\emph default + unterhalb der Liste. + Um den Vorgang abzubrechen und die Auswahl zu verwerfen, drücken Sie auf + den Knopf +\emph on +Abbrechen +\emph default +. +\end_layout + +\begin_layout Standard +Wenn dem Profil mindestens eine Klasse zugeordnet wurde, können Sie das + Profil speichern, indem Sie auf den Knopf +\emph on +Speichern +\emph default + drücken. + Das Profil wird nun in der Liste angezeigt. +\end_layout + +\begin_layout Subsection +Bearbeiten eines FAI-Profils +\end_layout + +\begin_layout Standard +Um ein bestehendes Profil zu bearbeiten, drücken Sie entweder auf den Namen + des Profils oder auf den Knopf +\begin_inset Graphics + filename images/edit.png + +\end_inset + + am Ende der Zeile des Profils. +\end_layout + +\end_body +\end_document diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/edit.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b69f73fe3ed52ad616c4fbc6fca2679a9e8c1d GIT binary patch literal 946 zcmV;j15NyiP)!SI-Y;XMNwpXV^<{*aN^_Vx3-ct!@s`>bqi46H0{3;+Ry)quaBJ~J?XSj52m z8_4<2#PIAXBg0pVFh+JBcH2kypF44Kam~GP<{HE8o0k~?0tl-C3?KJ1F#oy8!0>~O z;s49O3@@au7-U_78NS`V&T#4b=bvxiykyw3V+~N@9|nK`V#22X|HH`)th}5I3|}}H z-hbp{_@d#*AS5Hjz|8QMfrW*Y;mV~eKvn;Mn2iA-fG}L}_r(bYW{z7x&A^!b#K7>5 zM~y+yA(Vmh|4#-!9$tnc2M;mayK^3>l9deH=U0|9du%fr$es{1a&N2Ofs^ zGM)^AQql}8zy!d^%*gQO^-E5WZXgx`Vs3x{Vu3~JPf*mnxX8f5{*Zz3k06l4&hY9x zJA-IYEW@ua9~gfB`pNL=<0l3tMkZjIVT8Gy7a)M(Uib&{(%&CIhBN~M2QR~y=T8~l z2wO97{9|VL`T7k|BO}8A2nZd^1@wcFmECVAWI1(5D0*HkP2*F7gh&7GP8B`2R8JGoxfHwbT z_$|Q8z{<`B^!tAXHa2DkW@Z)!E-p@{@TgdZTeog9+`n_30U&@_?%sL$VbzK?JRm1B zG6Q1=6j*LX{7Jy;#>&w?K3pF07*qoM6N<$g5Dym0RR91 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/edittrash.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/edittrash.png new file mode 100644 index 0000000000000000000000000000000000000000..f5cb2b8b9128f0c6135942d53f1843e5f4d3f65b GIT binary patch literal 691 zcmV;k0!;mhP)_Ox2j_4W_xGK1 z&k^j_wWmF)vFU}WG2=oq7Czqa#GqYoQmn}0?~Tlt&G%29q&r&4Ve-+8Y~5d0RscDn zSGofrYZXfa4Ir=KX92P$a6AZ!*0!T&Yd4nE`vFQ){k@AJAYwpQ7(zzN?E4T3LDdG! z+HV54=|~`;l^RWu%0o8-OhaIX4WbdKX;8A&YY)J-wUmI;P_DpM&L#6pQMELVs|f;+ zgCl*!%mj{hIw!ELimW+cD^LntR{#+rVS|u}V9Pq+f0U?I6xL3?^9l{!)KWpof@U+o zG);QC!kA$Y0%Gwvw(ApBIndS4FDU7%gxzE!ZerPjY6B_`hz5j1&>IPuN(mOmN0?g< zboqZkF`M34OK<6m)2XgAgFbm>P?X>Y5R1atpr9`bFW=?daz2}5KPAWKm+n4TEu`12 zK>|7b+9>ADsXI0wYO8 zK~y-)rISr-6Hyd~pL1t&XKJSqZPP^-x~PI5&{B#`^B3HUg7^p0P4Yj4WHpFOv(ddP z7j9dn61ow(P+Vw=DW-npYd-E=7gJMXHi8!}oC`0{eb0M1(rh*@|8ZP^dcDq@_m;uL z@ab#9;l~l9$S{ghhG%y$ju=LUVU+S?oN)Z)Hmz1G2LKe}&lHsqT*|n$>hW_hK$J_8 zq$tN_ap@w~LTWNnV`d!yEMG_v5loum`w)2>TGC5~g1Quw|6iIV<;2~SZlfd>IML>xAv)=>5h($*gp9EYMuj>QYfXSZCrhM4QgfB>r#2U zlh?p@SbE4c$UfL<=F zK7#5Y_rm)~gT*PJSS;fEJ}WCLlu9MkW9KY`Hgww43<$e<2DLJl?r;iNTU(o5vzmoa w=IU15q~2*jr;F?&@~`V$*9`zi_@% literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_packages.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_packages.png new file mode 100644 index 0000000000000000000000000000000000000000..15cad1ecafcf7deabfe8d9556c382c9b2167138e GIT binary patch literal 743 zcmV?P)>|7CT^F4lV!y0(414 zK~y-)jgv`e6j2z2zt`!RL??+$qS3hEE-EoZCE#*U6!9R4;MJ3gpdLjK5hAE3uMyOf zh#ox%5%eUuqJjogaNi<>NqU@2X1b@RyI*;j85dBr;D_Res#kx(GlvI~LAQY!!zFAk zfLs9iGL#~)764S6hLn@eUOsdoc-Y?ulmXn%7CS4GrY*5h451Q(=T}WI4s{sE!3GdT zHEL0LmFcd?}r=cQBgd~b#h32*vPTYy(r_fM0b~BAGtrHzG zKvG+d9n4Or#GZv7W!H$PcW7 zP|BC27ayf3Z>2Auboaqf)YY^7B=r=xYX-$g8u6_L-$V*RDUnnTrGhWL9+F;tmd1Ta zk_K+P3|d+{cL6x{mMxGkh{i^TLIC9oq*IV~Au|D{Pl2X1Bo?-AS<CO|B(f>?%vU#%$R!i+11 z3~u2ni zbVkzk+MKEG`VlahKfu|zZQrr~?SQ{wYWw^h>aU9T>_7Ub&VjwZ@PA?wun1W8i|Dt% Z@Et05p*ne}*-`)i002ovPDHLkV1nkLP09cO literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_partitionTable.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_partitionTable.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac4600a4a21d684926c6bfd378b0d623d883561 GIT binary patch literal 809 zcmV+^1J?YBP)>|7YZntKUDw#0=7v+ zK~y-)rIW#H9CZ}OKQr_D?e8}`GrKd1F>Z>MRP+!iHl!O}wG{)3?Li2omqMur1)JW) zqxcti?dqky>@k#LDYd25Km`jDC|>GCD@aXjx4UH7>~3aeXMP?gEFyvj-{n2t;mhZJ z-+S;s!`jdC%-K(_96oa7P0x2@S8HqwEXRf{Bg=E7bQtsp^oOawb>rHVjXUcf0Y>Z# z)ZSQGS@C`CwYPsqIAf#~2wO5+t1*A*5LTYk>2y%#fW0Jsf8);jXTYBVKuRyvt}A=p zZNC5RYqZj6*F^}2qp!Wifw>n*lM!*2;yDf_r98j`5CBTas&J$@y4+x?zD$zDm^?=c zfo(esMgvMhkR};4Rf^hV^lWEf|}NsbMeJSRz0 z##v5K38b=1Ay5dYvJM^T(BJJ7MIqYNY_}gX8t&2S_u1Lq#j+hd*Co%!xNaG#RX7>J zD_1H)NPJHrm1Hm&G95)!s{z?KW4JeD>Fz-QHjh0-DT%Ag)!kmVAn^TQs-#LpVTHig zL{Wv>b5p$j!;2jI@nxQ!nV#%jY0c`db)J0w=<xDW4MUv0tF;*`&Q z_~~Yv#7o`wQ>tNz>$=#s&85XJ3IhH{z`qcfG>|7Zs(DGN1qe0~AR_ zK~y-)b(398n{^b2pZBAm)Y29xOBDpRf@QeLM~F3K*_9$u3}GY2I1(=wmN94I$K_&- znoL~c)kusQG3>%<;&7Wfja#B7t1hq#c7<%NAj~Szu9SAAecQf&FA8&6^mp}Kob%+I zoE+)x2{!>b!$n&flMRYGJBRK+c)s<%c2{24@+O1Xcz)^YKgXV#7~ncV?uq)+4G&q< zGUse*vUZS-DCzA+yH;+sYN*Iq$YhNV5T_9cq5wJ|HU;Zyk({c71P{k842p_J-_3t! zJIh&Qpa6Irs`>b{&4VY#=6;NM^}m<{awUOsq{odAIy2J7Yf(qx{go>5Ld2Dl6LNy& zMv|14WPKw~uHNKb?p*87E{Rn!$8TFJD2JYOva_t}y&+%!v9P7+{;nb-6%9J1fZISC zG+ARlm*7QrujA#sw<9ohV=|c&ivY^t9v8nvGXBo?=DknJ4{|-Uz|~v|ikpHgFb}WB zA7jM#9KJ^y94!v5=i=nzl~h(=P|aq;hrTBFj+<8lTBThvj@9|e{XWH)%M0KD67YuF z%8=qA5&8+msPMy;rOd6{g<3#W0<($LzQ=bTZ0H(rWz#Fz%B?(I(?)nH$=qU$x60c% zwrdZzYae4-`;{-IEXAK^*TPnr`DijXEdkUz@tq#&KHbvU)wF&ygtNAeWLXuiZ(af5 zR{it1=1&0-d*Te0-}V9^4b!4pjWY2Jv&m?9MvJ7HgrR{*FoZXC4i0-D5XBWdRbrrW zv=>?dzXw4yBz^ySBf2iA*=G8@@ge8F^^A!`QYXHero(s{4j%w^1I?R<3j@fUIEcFL^APCYh5`a1~@i$sQXGgX9 z!qMuweovbZBrB3+K)vwhT@$R71pX7?pGGh)wj_7by~}=R=97U95&u+(lL#R^LR{is z7M>Dc;tt>YT(sAi_J4J}FD7DVO2sD;N4vd$Y%#FyF8=Q{xD0zgI?{FRodX?_8oTiW dpzr^h{s9@$TT~e#A$b4*002ovPDHLkV1j21nj-)J literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_script.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_script.png new file mode 100644 index 0000000000000000000000000000000000000000..b8333c7c225af6928f6f7e30195ba14e654a3f14 GIT binary patch literal 658 zcmV;D0&V??P)>|7y&ra`Vs&D0v}04 zK~y-)os+R^Q$ZZZKX-X;h)r!wp-L!p38i$fRB(tWI5?pKy2g+zOiiXw)nE%#B2J&{N*3kO`pB?diK&9j^iX95lI4^8|y&? ztn?z%hqV@CEyh@k6^u0)W3lae`NJ9jj)(xzAJZLr)++dR4{yt%_O+LxsoRK105*!{ z_PG#nbchIITc8%{Z#8f@i|_5CV{t?TV@!Bf{|OKgLBh7D5STyxBvM&A3U3yK^@)y4e4Pn&6W?@rvLx|07*qoM6N<$f+lk!d;kCd literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_template.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_template.png new file mode 100644 index 0000000000000000000000000000000000000000..9a88da96794e0a7bcc6420f6ca0a18f2f71ec901 GIT binary patch literal 630 zcmV-+0*U>JP)>|7a;Q^_JaTb0s~1z zK~y-)oszw4R8bJcfA_tYHLMZh2BWUns01}&l0sw)8^JB?#7bfRfhAyLqk^4Z5U`MJ zqYxx0R@zxwSR`PSAc9B`MA0RP0potW_wL?1WAWBx69t0@hB=(MXXf7Fnz7rTpA8qb zm7Im7>9L8!wjF6pu(2bJvmCExx}<`-4jO-2#;=@X0qqtvR-u)H zRtTcdao`kO2M{0t=pRI0?~itGH_7-A1I;`ngOH|>CXjS<97B>o^C!e@#e0ZC!-w}F zAD40x9T-$DjDpgIZb(38$Y9pATle7Z_kbt_jOi&EwuC4UK#9EgKZ?fuyNh*-iV~>j zzaZjK6#`VZ=BSx0x@c*E<*zOXL}bgRUi~H`^bh2O%TMYJ5z*dIRn=)!wWvDBI@e;x z=UC$rn{FVYgrR||X49(`D2)L}vjf$4z#FK|vhVRsIqKbk2zalAVORLwWMURduQF}^ z3@pNpZ~>LK1Yyq;g8=&a%*Gv5D^QvOzGYFGf@*~;{y3_FsZ1|v`Q#y*F(mQ&SHAWo zfNBxu>##`10cv%a07^xu)iH-BUtTKY$=TTAk`B(MINQNn$I_{@*8xVJKfU@lzW3q% zvKhU&z@8n3G_m-^;jHa8=+KCBoXEf6(UCitov{L}w1>^){CQ@^A0P_907qObKA$?< Q+yDRo07*qoM6N<$f*A@M8~^|S literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_variable.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_new_variable.png new file mode 100644 index 0000000000000000000000000000000000000000..d915c53fc0cb38897dec9d8a4cba21fb71123294 GIT binary patch literal 410 zcmV;L0cHM)P)>|7c+OAw_N}L0VhdB zK~y-)g_A3813?f(-})Gf1EP>9l1WhZ2!>630s9hr0MqpaLK+$cFS3axD8 zp8YxFxTTg#GgCFyr5VVVQa`LBOKuaY?w;vumL-pSaH2;78j<4mk%-)~BC{M>&xWeB z(}LW<9EGlOGmAP}XP01Tw;oq_!i~j_?DkhA2?d-AbO}pmhvRP8nJ?hU0=vQ0gRoXd zE4mEw94>GoFu?W#Z@_yQI0>k=6quV@Lr_Z% zl9rM-lD<-JVr}H06PZ-yb+TKh8;`MZn8OK*^(cs2k;;czSuKHA;3XaV0ls1T*^6X9 zQP?k~J?gQ_z<{907*qoM6N<$ Ef`2Tf0ssI2 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_profile.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/fai_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..07391b6ec087e2c3277031d01e654c64850e2202 GIT binary patch literal 1094 zcmV-M1iAZ(P)@3pzafm_Hp6)a zGyo7lEcth(7=Ez7WY_{U;0GTA0}~qq^A}|{zF+)YT)!At7?>D18NU5slVNzvpaxWb zo`D%i{sZFw5CZ@Lh~*Q@UxuG7KoLd;2Hm%u3~~R3ExLcN;@Qlw8K{|o;SUf?39xW< zL}YUGy0!`xS`4FfjaL`o(bn=X-`+F+YK#->N3Z&)z-r@#p_XAOipbh&j$q zh~ebDZ z`~2hI1AqWx;oxAMqp2>Y^5p9AUm|?WYzq`D8Ghb5%dqj~0|o{Gpyu}s42>*?4C%~L z4DYWTW?*JxW;l56@wazh|Hy&D5Fh{mK>)u00$z{WodO9FAs0Jf2KfpY00|5X0Hrli z08slW007qj0E7cF0Ddh#02C$~0NdQ;0JXW-{oUsHGA&L zx53!CK_vP_8z(gs@8{Kk;ph7R7Bfu%COSm|0`=_} z)70Dn-t73y0suh(zW)RY1_A)>_5j!M=GM~s-t#B_1tI|6&(r`64G91^>f-?4B+id(ObZ z^pD}`gI5gSzyD|86Jlrh`t~Wq=O?EbB)C5@+i&FZ;Nliw`16$mmn*4-9|)Fo6;% z6U+dB0AjxK_&dY(r#~2u-u!ar+Vv+d^`&@R#C1$r7&t|MY2iBq13N1N1283?IQW>M ze)^R=2d}-^_UrGzQ?SGg5I`8nSe89>Ye(Rl|8F+^|Nmgh|BLe?|L1wAJ{03-n+cTm z24V@2%VFvP0thQo5@L0jn`3jUGuGsuEFar!pim$X%Ya;rt`;D`08`>#b12Aab^rhX M07*qoM6N<$f_7f)E&u=k literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/list_back.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/list_back.png new file mode 100644 index 0000000000000000000000000000000000000000..f258c112f9ce54bfc898fa5e4a48b19a64f93a29 GIT binary patch literal 862 zcmV-k1EKthP)UmE}b0_#ac zK~#9!g_BKaTxA%ApYOYOX6}r4W;&BLGYO;#&0u1swVe{7wPaxzLe!OY;SW@V&}N~y zbm2k}3*C3+#emY53gV_NY*nlhp-tK(MQKOUke{Y@GR^d6?j)D_X6}!R(1ElCUwAh! z=bXhk?-4v>ietA72!;rQ0)zsBdEKv1OEfNure<}un zTCWM;{Z9AoFRxp#Ek7kt9J`fA$g8=|j)4=eraAh8Mk=8Jpjsi*cU{JR-C%C9vKIHt zZ~yt#$knz$actH^$Q#AI-20C-eyu~u*4Dt~Jm0qMBM&G~S^Z*H8^fuX2jrZaJ$ zhwA}GM7GIgyU8!pwYJI5rpJ%Bvp6b)jD@Dt>_4Idg{&!g=y>$*inYlA`An4ekL}tP z+u{B2(KjF?214ou35cezv0T+iB@O;>4)%c%TkZ=&sY5Vdb3;nios@opTsGvT-mP?J z7GY*-yTI%c=n@*9A{w|Wy6)GfJhfhvBA-UUrxydxyd&AaTX3)s#(#fI3emLyDZtRd zY1o@tzci!WpZ>PhedvSEWLzBX$p)ljimAB<&v)zWOlgc9fa|wyIuZ>shGK`Is5>^Q zcJGHha^ialp!@b0l}dR&8aU*W4f4qb7k*n~p{!UatM)CQY!D3`Dyt7xa^AJGK(+nK zuZ&*mZ$`SV94Mss4DL1&Vp~lJ!;sSQ2D5YaO1?F5GB55-SeE5%Lk)j;zRQjDex67? z_ikS4UU oUCH{TnNEG_U!ZDPR`W6bKd~t^+_O;n=Kufz07*qoM6N<$f)k{b)&Kwi literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/list_home.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/list_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e897341f1c4af5411b4e230690036d864b7b68f4 GIT binary patch literal 865 zcmV-n1D^beP)|6eU^D;#0`5sf zK~#9!b(7y~TXh)5Ki}{7Bt1DjNlfjUv~+d0nXMg_5v&*cQDH-b`2#_`(FDc-gBB23x7Hb=7VRU8M`QwQOn9kmMvi>q+uG$BVGQHhti|d!FZg zc^+QDe;_x1*Mwk}FvvnEASf8RaeKu%>pjaA&j@W0mr#+5GMY#pPPMTj9sVkr1b(e9 zwD+^2t6$x6-rj!BAUA(EgOJzLLoZH#dM3%KR}~3M0pPboet+PxaIMM4W@#^`iy!^^ z?YZkcgWUWb8zEP7(<76gziSeY82~KZb9>j#%_L~+fbXtUxw5ibvHklqOADVoQUJrV z7rsuXhu-__oQXi<`2njNP3C42oIDmMZYh@kXpo2*Odamy!LG83b>i>j)K!(cxN4&M ze){lK(o9(3`I@a=pWM-Y#xo{T3gVU`B;?Pn#{eW_9eyi>le*RX!2o8Xrkza1H04?V zz$>FBQ=>7Y>_%iL!D}z~^JuTdH`gp&KZWcIZMQXXLIT+VTT*sA?A1Gr4n}!nGTswE zfs%r^UQcm+ybk~wF%im#6^i=nPg&SS*`8VO0TivPcgYNi518+wfx^Y|kwYn70(ok-|K|Abi{r*OG z03Npj>YhdkO>j`%AJFS-a>Y683GFRNzsOj^Wh~)hN7_Au=|fef4^;t3nLbC7F48X& z>690TjIDJAQXQR54X)j;Mi2KWq_uMs z!m|25K9Y{wFT}f*)fzsV#n!&>RTtBpo0rq-?|Y8pxX*nfKt7+3{?j=&;;M-gLK;~? rC`I7y4CwW>A!F+yP;nfm^@RT~PvIf8Te$nK?6^OJ*kIrinHQMng4_5U*WGp<0UFM3gQHE=1aHT)Gl> z`X{&IRMKz{0-QyES^qmfQ%061RA%7(?2n{CSX4j;z- z{kH}mezsIB7DMd_{w;}+w`QkDrapT67!yMZ%XZm2G_gGhLcu^^gjb){Y1vw0ZC{-0 zs{GZtabaoz!}AwE85|rq_x@QOfy6W$^rtkYj^|OLOU?8#AB8w>$kU@SHV(8zr6p41 z@%8K4?4^>97W?AOlNmjofEaC_KQTfosRIz#qcp65UBkh0d@MU46Yp|+Go13>_EiPU zNA+YT8~3Ri9bSKJj35lTUTUyibx6b{wi^hjcZ41m=wi}J30v)sok z<83aS8Sly64?=_x2tW`@3BhL53RyGy`FZmww$slkMskXk-9BnfyGP)l=AtC{T?Y|Z zJ4$&*sp}+~QVeA_j3hT!9Zt{0`1D)Fhzuc|vj5s&W4{CodYXE2G;&wfF?An8x_C`{d*~j~1 z#G{gk66leCduy-5?KNX(*!%I~kSvz~O9NP0S>eoFvflJkUv1Y_YOCT-*^V2vy?{pB z<=(!@ufI1td;15)A@BPS{)StHLZSB?7Zw)CX0y?4cVet9pExB{;z^;!ToG71Ie+a= kUr?@^rfC43VzCIoUl;;lJtwtVUjP6A07*qoM6N<$g5ejSXaE2J literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/list_root.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/list_root.png new file mode 100644 index 0000000000000000000000000000000000000000..56a6a5d3a97fbd666430a1f8130d8d8b8e4c705c GIT binary patch literal 852 zcmV-a1FQUrP)&ghCi$Wl@SqN?v z7cShWi_%qvf|q8cqN_q9LQ92OD%xpnGFE6}5;FN|oV2Dhb7yip_uoaxz_c!Ub_d?~ zcY2vQ2pxXw~W_Uo(U*Sl+p<0dMepJbm~=|<1b2j5)uI04Y|8uG5K?o`SQbmyZp*K zzkdD3^>#pEVn#zKcM31<9s2NOobE2QebxCN>i~RkQpfcJE?%i}rMR)F+4m3Mn0)^q z2{15n`ioR5`BtVMW|mwAQ!17naPeA$vtvnK8{Wm@x{d9G9NZUUVM8V=b-Ldy$g8q& z=1v?L`|j=IdOX`7^3iCLKg(NOF19#3mIUB&!)1Q`36||+wF2}mk3SZ}A>V0!qXHw* zxTg1Z`R%i>mE5+uQgt|Ysn$XMx78O=VxeX_gU3`L-=`@&GCic&X1ZerNcToNc7VHO zn79x}C~95>gyTzAHYHJ2@H|tPGR-1h8RT@h)0rxl-kAMoY7lA~D|&cWm_@YiaHDgzV&3J|oaTYdiQv{E!q zSi-j^6}v*F#{?kLV{+lADsvCq?Jk^x1N}Aj?>5QlCW>7l;ys#5s>|yVATvB#Y_@{Y z>>k;7>+dIMF%K=~aj$HVOGc?ReHI=x&|)4=%VKV6V{O2_@v)}V7TVNa9-kU?A_G^C z=JovtGa5p40u95E*_9?U^VPMqd-HT!+`nlUhS{NdW$fDlE0X;zk=XTKE)~^wcgFyz zHEhZiXUn##Qz`HFuTpa9o?#f~Gv5d>K0Y2@^$zVd<=`=)sChxCh`?Iw^Jk}%>he0U eX&8pHqyG=U>N9lRd(I620000(~PhH literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/help/de/lyx-source/images/rocket.png b/trunk/gosa-plugins/fai/help/de/lyx-source/images/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr + + + + + + + + + + + + + + + + + diff --git a/trunk/gosa-plugins/fai/html/images/branch.png b/trunk/gosa-plugins/fai/html/images/branch.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb7909962febca801ae5ff4a82e8ffa16badd09 GIT binary patch literal 694 zcmV;n0!jUeP)jG>HG301Z<2_xC@Be}94W z&(941etlX15I`&-L*0$U8Gim^VEFlif#JtbApQZx-x(Ob1L^PIp%|GB#Q&HW7=8gg z3^bSFKNG~IjEtXv0=p6b0*Hx|jfLSS(6C=13^e>V2>*uSKMV|ifEefy2u5Q6L&7Mb z$;`^Y$iT(`5I`(^tp6FTB@r4x2K|8=@&^h3MrQv;(7%8G2kQgH7080WKrbv_$HV{- zKrH<13=9r(2n%P=p3RV&no2NoK!$(}`}YqRw*UTvF^K=`=YNKMN0=A@0*Hy6RDsJ- z7#pMjAb?mH{t;*JkEwE~$tnE-Rzo3t1_potV*3A&ymSn6EwZ5?_Ftelhz1BC7HmNQ z3TI@1EzA+Y@gEv-Fbg0C0|XEYHWw2UdDvWx925Wn#6nEuffU2S6gko`!xljU1Q5Yg zflVVmLqV1T1Bn43fbd2hE{(ViMFa&v0O1S@WKCc^M+ul!fjJhI{GxB5MH*Bc)S&oJsRDpzPA!c9=04)9g{Dsg!i{NY^{SR3VO8@)&4`*t+_2fGPKmak)s?GxlASMPH c0e}Dl0I565QA{BqJOBUy07*qoM6N<$f;X}fV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/branch_small.png b/trunk/gosa-plugins/fai/html/images/branch_small.png new file mode 100644 index 0000000000000000000000000000000000000000..d632c8506b649e04f78081276918e207b7940fc4 GIT binary patch literal 609 zcmV-n0-pVeP)uIg@kF+-&>xkFB}ZOxvOoYQfinuVU&>aHD{C z)AQ&A@fA{^{3-6-YP?-*m+Qe9Rb|wbQVosKNU27~C{yxGQ8j!}G&i(R%pADxw_>qu zuCFbY)HMv7P&HvV1H&TqMg~O&xd8$wNE47i?GD$AjRoWB26!(V{p_*aSwSL10TBq1 zgd_N1#Av7(5|y2IImO~EJY0sV@|<)(v-N0&>q^y7RYX#cQQ7^NQDDYR72ZEXe|!KS zfAR)h*g!Sqkro++>3BiE-)C=c4}eamL))EVqu)tE3=?EUL{Zi01+7+#rKKeR%Cfv- zK`(6Br5!V)un7xgS+csi3V@j*k9RQ9OTst;m%tS5v zY9?98VC(>scPC1HD`DazigRgzuLv7&9m-&qAyU>S*7i5Q6(@G<|01mHXFnAC{&}h; zlPs+XTaE|hs$?3r@ZzUrEXiI>eUL1W6}`X0_se^oDC%@NQKuh@Kl-m;0U0uzrpPy_ QR{#J207*qoM6N<$f_iO`iU0rr literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_hook.png b/trunk/gosa-plugins/fai/html/images/fai_hook.png new file mode 100644 index 0000000000000000000000000000000000000000..1930fb233f6ac09c41a8b0107c911a6fb8a27633 GIT binary patch literal 692 zcmV;l0!#ggP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;DoI2^RCwBA?C^QBY98aO&=VhA%(< zGCXHBYn=d(;1CQO*X01!YdFq2q+J!KGJ zVr1YE`p2Lx#?J8h%NGVlCKiU@zyB~WF|#mm^9nNj2fFpo-+w^-7w!Up0D>DJ%=Mdr zk&%(%@1H*m92^V`KiU5=Ff;#U;NjtAU}t9sPl`sGhKyU+icz76CSXjUcKn8&f0RfOkkT{4B zas>y-e@FlzfG`XIna;_{2{z>4zkhH;e*gXrb_pvhE7%ek00TmtzJU$@{{1`HV33%lr6pKBKmfrF067nYVcq~?5Fg}pE-o%`*nkX$g$E1(1Q6T+ zkVcrZLC)pl;{$sOWDrOU7I=S=(f|km1Q6VSSFc_{q7i5-$f@t%y@UH5WH?CUlP6Cw zk}^O5!3_Xu28A%lzfw|C@OTFq07^t(zkUT95FQ>5Ru4+Xg@uLO009IyKtMnMY=DS} z2!p7oDA)j4+=Bqffb-|iBWnif{R>|7b+9>ADsXI0wYO8 zK~y-)rISr-6Hyd~pL1t&XKJSqZPP^-x~PI5&{B#`^B3HUg7^p0P4Yj4WHpFOv(ddP z7j9dn61ow(P+Vw=DW-npYd-E=7gJMXHi8!}oC`0{eb0M1(rh*@|8ZP^dcDq@_m;uL z@ab#9;l~l9$S{ghhG%y$ju=LUVU+S?oN)Z)Hmz1G2LKe}&lHsqT*|n$>hW_hK$J_8 zq$tN_ap@w~LTWNnV`d!yEMG_v5loum`w)2>TGC5~g1Quw|6iIV<;2~SZlfd>IML>xAv)=>5h($*gp9EYMuj>QYfXSZCrhM4QgfB>r#2U zlh?p@SbE4c$UfL<=F zK7#5Y_rm)~gT*PJSS;fEJ}WCLlu9MkW9KY`Hgww43<$e<2DLJl?r;iNTU(o5vzmoa w=IU15q~2*jr;F?&@~`V$*9`zi_@% literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_new_packages.png b/trunk/gosa-plugins/fai/html/images/fai_new_packages.png new file mode 100644 index 0000000000000000000000000000000000000000..15cad1ecafcf7deabfe8d9556c382c9b2167138e GIT binary patch literal 743 zcmV?P)>|7CT^F4lV!y0(414 zK~y-)jgv`e6j2z2zt`!RL??+$qS3hEE-EoZCE#*U6!9R4;MJ3gpdLjK5hAE3uMyOf zh#ox%5%eUuqJjogaNi<>NqU@2X1b@RyI*;j85dBr;D_Res#kx(GlvI~LAQY!!zFAk zfLs9iGL#~)764S6hLn@eUOsdoc-Y?ulmXn%7CS4GrY*5h451Q(=T}WI4s{sE!3GdT zHEL0LmFcd?}r=cQBgd~b#h32*vPTYy(r_fM0b~BAGtrHzG zKvG+d9n4Or#GZv7W!H$PcW7 zP|BC27ayf3Z>2Auboaqf)YY^7B=r=xYX-$g8u6_L-$V*RDUnnTrGhWL9+F;tmd1Ta zk_K+P3|d+{cL6x{mMxGkh{i^TLIC9oq*IV~Au|D{Pl2X1Bo?-AS<CO|B(f>?%vU#%$R!i+11 z3~u2ni zbVkzk+MKEG`VlahKfu|zZQrr~?SQ{wYWw^h>aU9T>_7Ub&VjwZ@PA?wun1W8i|Dt% Z@Et05p*ne}*-`)i002ovPDHLkV1nkLP09cO literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_new_partitionTable.png b/trunk/gosa-plugins/fai/html/images/fai_new_partitionTable.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac4600a4a21d684926c6bfd378b0d623d883561 GIT binary patch literal 809 zcmV+^1J?YBP)>|7YZntKUDw#0=7v+ zK~y-)rIW#H9CZ}OKQr_D?e8}`GrKd1F>Z>MRP+!iHl!O}wG{)3?Li2omqMur1)JW) zqxcti?dqky>@k#LDYd25Km`jDC|>GCD@aXjx4UH7>~3aeXMP?gEFyvj-{n2t;mhZJ z-+S;s!`jdC%-K(_96oa7P0x2@S8HqwEXRf{Bg=E7bQtsp^oOawb>rHVjXUcf0Y>Z# z)ZSQGS@C`CwYPsqIAf#~2wO5+t1*A*5LTYk>2y%#fW0Jsf8);jXTYBVKuRyvt}A=p zZNC5RYqZj6*F^}2qp!Wifw>n*lM!*2;yDf_r98j`5CBTas&J$@y4+x?zD$zDm^?=c zfo(esMgvMhkR};4Rf^hV^lWEf|}NsbMeJSRz0 z##v5K38b=1Ay5dYvJM^T(BJJ7MIqYNY_}gX8t&2S_u1Lq#j+hd*Co%!xNaG#RX7>J zD_1H)NPJHrm1Hm&G95)!s{z?KW4JeD>Fz-QHjh0-DT%Ag)!kmVAn^TQs-#LpVTHig zL{Wv>b5p$j!;2jI@nxQ!nV#%jY0c`db)J0w=<xDW4MUv0tF;*`&Q z_~~Yv#7o`wQ>tNz>$=#s&85XJ3IhH{z`qcfG>|7Zs(DGN1qe0~AR_ zK~y-)b(398n{^b2pZBAm)Y29xOBDpRf@QeLM~F3K*_9$u3}GY2I1(=wmN94I$K_&- znoL~c)kusQG3>%<;&7Wfja#B7t1hq#c7<%NAj~Szu9SAAecQf&FA8&6^mp}Kob%+I zoE+)x2{!>b!$n&flMRYGJBRK+c)s<%c2{24@+O1Xcz)^YKgXV#7~ncV?uq)+4G&q< zGUse*vUZS-DCzA+yH;+sYN*Iq$YhNV5T_9cq5wJ|HU;Zyk({c71P{k842p_J-_3t! zJIh&Qpa6Irs`>b{&4VY#=6;NM^}m<{awUOsq{odAIy2J7Yf(qx{go>5Ld2Dl6LNy& zMv|14WPKw~uHNKb?p*87E{Rn!$8TFJD2JYOva_t}y&+%!v9P7+{;nb-6%9J1fZISC zG+ARlm*7QrujA#sw<9ohV=|c&ivY^t9v8nvGXBo?=DknJ4{|-Uz|~v|ikpHgFb}WB zA7jM#9KJ^y94!v5=i=nzl~h(=P|aq;hrTBFj+<8lTBThvj@9|e{XWH)%M0KD67YuF z%8=qA5&8+msPMy;rOd6{g<3#W0<($LzQ=bTZ0H(rWz#Fz%B?(I(?)nH$=qU$x60c% zwrdZzYae4-`;{-IEXAK^*TPnr`DijXEdkUz@tq#&KHbvU)wF&ygtNAeWLXuiZ(af5 zR{it1=1&0-d*Te0-}V9^4b!4pjWY2Jv&m?9MvJ7HgrR{*FoZXC4i0-D5XBWdRbrrW zv=>?dzXw4yBz^ySBf2iA*=G8@@ge8F^^A!`QYXHero(s{4j%w^1I?R<3j@fUIEcFL^APCYh5`a1~@i$sQXGgX9 z!qMuweovbZBrB3+K)vwhT@$R71pX7?pGGh)wj_7by~}=R=97U95&u+(lL#R^LR{is z7M>Dc;tt>YT(sAi_J4J}FD7DVO2sD;N4vd$Y%#FyF8=Q{xD0zgI?{FRodX?_8oTiW dpzr^h{s9@$TT~e#A$b4*002ovPDHLkV1j21nj-)J literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_new_script.png b/trunk/gosa-plugins/fai/html/images/fai_new_script.png new file mode 100644 index 0000000000000000000000000000000000000000..b8333c7c225af6928f6f7e30195ba14e654a3f14 GIT binary patch literal 658 zcmV;D0&V??P)>|7y&ra`Vs&D0v}04 zK~y-)os+R^Q$ZZZKX-X;h)r!wp-L!p38i$fRB(tWI5?pKy2g+zOiiXw)nE%#B2J&{N*3kO`pB?diK&9j^iX95lI4^8|y&? ztn?z%hqV@CEyh@k6^u0)W3lae`NJ9jj)(xzAJZLr)++dR4{yt%_O+LxsoRK105*!{ z_PG#nbchIITc8%{Z#8f@i|_5CV{t?TV@!Bf{|OKgLBh7D5STyxBvM&A3U3yK^@)y4e4Pn&6W?@rvLx|07*qoM6N<$f+lk!d;kCd literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_new_template.png b/trunk/gosa-plugins/fai/html/images/fai_new_template.png new file mode 100644 index 0000000000000000000000000000000000000000..9a88da96794e0a7bcc6420f6ca0a18f2f71ec901 GIT binary patch literal 630 zcmV-+0*U>JP)>|7a;Q^_JaTb0s~1z zK~y-)oszw4R8bJcfA_tYHLMZh2BWUns01}&l0sw)8^JB?#7bfRfhAyLqk^4Z5U`MJ zqYxx0R@zxwSR`PSAc9B`MA0RP0potW_wL?1WAWBx69t0@hB=(MXXf7Fnz7rTpA8qb zm7Im7>9L8!wjF6pu(2bJvmCExx}<`-4jO-2#;=@X0qqtvR-u)H zRtTcdao`kO2M{0t=pRI0?~itGH_7-A1I;`ngOH|>CXjS<97B>o^C!e@#e0ZC!-w}F zAD40x9T-$DjDpgIZb(38$Y9pATle7Z_kbt_jOi&EwuC4UK#9EgKZ?fuyNh*-iV~>j zzaZjK6#`VZ=BSx0x@c*E<*zOXL}bgRUi~H`^bh2O%TMYJ5z*dIRn=)!wWvDBI@e;x z=UC$rn{FVYgrR||X49(`D2)L}vjf$4z#FK|vhVRsIqKbk2zalAVORLwWMURduQF}^ z3@pNpZ~>LK1Yyq;g8=&a%*Gv5D^QvOzGYFGf@*~;{y3_FsZ1|v`Q#y*F(mQ&SHAWo zfNBxu>##`10cv%a07^xu)iH-BUtTKY$=TTAk`B(MINQNn$I_{@*8xVJKfU@lzW3q% zvKhU&z@8n3G_m-^;jHa8=+KCBoXEf6(UCitov{L}w1>^){CQ@^A0P_907qObKA$?< Q+yDRo07*qoM6N<$f*A@M8~^|S literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_new_variable.png b/trunk/gosa-plugins/fai/html/images/fai_new_variable.png new file mode 100644 index 0000000000000000000000000000000000000000..d915c53fc0cb38897dec9d8a4cba21fb71123294 GIT binary patch literal 410 zcmV;L0cHM)P)>|7c+OAw_N}L0VhdB zK~y-)g_A3813?f(-})Gf1EP>9l1WhZ2!>630s9hr0MqpaLK+$cFS3axD8 zp8YxFxTTg#GgCFyr5VVVQa`LBOKuaY?w;vumL-pSaH2;78j<4mk%-)~BC{M>&xWeB z(}LW<9EGlOGmAP}XP01Tw;oq_!i~j_?DkhA2?d-AbO}pmhvRP8nJ?hU0=vQ0gRoXd zE4mEw94>GoFu?W#Z@_yQI0>k=6quV@Lr_Z% zl9rM-lD<-JVr}H06PZ-yb+TKh8;`MZn8OK*^(cs2k;;czSuKHA;3XaV0ls1T*^6X9 zQP?k~J?gQ_z<{907*qoM6N<$ Ef`2Tf0ssI2 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_packages.png b/trunk/gosa-plugins/fai/html/images/fai_packages.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6de2f62d02d020e5941474f5e34997fe12aa5b GIT binary patch literal 959 zcmV;w13>(VP)|pPJeL6z@N2ZZ-ztzd*%beljrp`oqBR_8Y_y21X_Z7+_>#V)zF%{P*u4WtI{sJX|hWrB3e;F8ohW%rB^yCY}|G)nk{{R0Eo zJ^cUw{N4ZmpT7P7|LBP)zjY0LS{R_N00KyLySy1A%vI5>x-0=0+&1P~K2e88GP_}6bnh97^J7(N1H z;S&&l1IEgmw?7zOy?V>Q%=m}lCopQ?eFBPoVPMcRveE}?(FF(~CQ!ir0U7ciL^DD( z0&V{RRQwYdrAIH`XV|*`6vKFbMIp022}i00M{s z3t)2aNUh$q|H+qA_x}IC{~nmg{sGg&umAr~UwrxB-6!n^P)#)utANx31P~(w4j?3= z=x<`-8Z99qB+JUo$nx^#+drpH9Ju%D#jX87>AgVw2$cE(0tlx8P{0pLEKqMUK(p{$ hApQ(Ze+&Qt1_0CnfN6=Ax^Dmg002ovPDHLkV1m~Pzi9vf literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_partitionTable.png b/trunk/gosa-plugins/fai/html/images/fai_partitionTable.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8d7017f66d582574d6d274625b71bc896f2502 GIT binary patch literal 725 zcmV;`0xJE9P)1uZb$;s9f6b_IBB&D(HwwXICI&@eF2D;A1UKG* zYp+Cbq1%v!E(9SMFoJjw;zBf&*fTxd(_LL%Kj$15Gqe|wZ}aUQ-uHnQUhtypuRi_k z%ZKmYzWrgA+ukM#B7!Iu;2h3-l!|FrEvwC#{Pg1w4E_pT8$D35m5x z8FTmjk9qCp>x@H3??$pXMjMj>8Gr;ZMpZIa^6v3{?i?L63_Zbnl#~b&({?RdO2)zA z-9(n<3Z*K>5dn~ma7$u^_ob;WY*%{gtaLuG4-xOmX@WIiaawYqiEX=`%Obt z6}ZW<*=`5|>bk;B4r3HHNvrj8eg(+$Vow`QQ>R36Kx;{1H9`tRB*;fg1eBSj?FMX? zlBRjHt5EN~v>yqW%@&CWqn);F{Y^j**V-=~}hPXI(D0Ek6|hy_Y& zR4frV$}<07;^ad0?bqKhpPf@3pzafm_Hp6)a zGyo7lEcth(7=Ez7WY_{U;0GTA0}~qq^A}|{zF+)YT)!At7?>D18NU5slVNzvpaxWb zo`D%i{sZFw5CZ@Lh~*Q@UxuG7KoLd;2Hm%u3~~R3ExLcN;@Qlw8K{|o;SUf?39xW< zL}YUGy0!`xS`4FfjaL`o(bn=X-`+F+YK#->N3Z&)z-r@#p_XAOipbh&j$q zh~ebDZ z`~2hI1AqWx;oxAMqp2>Y^5p9AUm|?WYzq`D8Ghb5%dqj~0|o{Gpyu}s42>*?4C%~L z4DYWTW?*JxW;l56@wazh|Hy&D5Fh{mK>)u00$z{WodO9FAs0Jf2KfpY00|5X0Hrli z08slW007qj0E7cF0Ddh#02C$~0NdQ;0JXW-{oUsHGA&L zx53!CK_vP_8z(gs@8{Kk;ph7R7Bfu%COSm|0`=_} z)70Dn-t73y0suh(zW)RY1_A)>_5j!M=GM~s-t#B_1tI|6&(r`64G91^>f-?4B+id(ObZ z^pD}`gI5gSzyD|86Jlrh`t~Wq=O?EbB)C5@+i&FZ;Nliw`16$mmn*4-9|)Fo6;% z6U+dB0AjxK_&dY(r#~2u-u!ar+Vv+d^`&@R#C1$r7&t|MY2iBq13N1N1283?IQW>M ze)^R=2d}-^_UrGzQ?SGg5I`8nSe89>Ye(Rl|8F+^|Nmgh|BLe?|L1wAJ{03-n+cTm z24V@2%VFvP0thQo5@L0jn`3jUGuGsuEFar!pim$X%Ya;rt`;D`08`>#b12Aab^rhX M07*qoM6N<$f_7f)E&u=k literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_script.png b/trunk/gosa-plugins/fai/html/images/fai_script.png new file mode 100644 index 0000000000000000000000000000000000000000..f8aaba2e3e3e488dffb292b58a0143b7d8341b91 GIT binary patch literal 601 zcmV-f0;c_mP)|W zK~#9!os+?8Q$ZAlznM&$-n4k90@p_fHN8AuI$lTL5^xTEq<0W-yyWRS{K06j4J| z5K(j#?|nW1Aeb2dmBdfjQ+4q39occ<YoO6Wi zE2UBeQspe2W%l6%07R55>oFMQRI8O~fO8IjVy}S<2_|LE7gs3`@{ur(McwZCG~mKs zep;Y#XN{9zP5SrO$=WFZySrbe>~}gHopNw=Wcb!M`YTWIqB!U9e)zVvwS{vI5usMA zvAMaqKjolvk~6>lf?{co5DJvbvm{9gfL^ahjFEc1&i3}UyRirNUcUY7^rdM^qtO_P n0o=~c&Pu!8{^xPNDhBuiN=!A6_`=~Z00000NkvXXu0mjf*?kWY literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_small.png b/trunk/gosa-plugins/fai/html/images/fai_small.png new file mode 100644 index 0000000000000000000000000000000000000000..fc716d05cede7735eff93c8f653ff15b58a272ec GIT binary patch literal 885 zcmV-*1B(2KP)+q>THea{*gI562(uM_oy!E;il=I!s@IDfD;S_>aLo!=F0 zZi>I2Q1)NClD|1VkxhK{X@7EEuhjzrs{8q#EnmFRXbK3KB;pNUZrdIRL`})Y-AY$b z^h1K8Z3^itNU7mwk|_2P0tK99wsfR@YmV}2z83#hdC&qwk=ErA z`y@+iy$F8;il!qgIpneh+25H@78twc4*mGu;iU%xG!-7|Fc`@kU^e|ELeo(+9iggR z{c|&?t$xQJ4BId5Iw_bZ?Zn7L89 zJ8h+tMF(DeLZRvvj;oQD`yXsaEiAFL)KFko_0s=3 z9=%d>t=m$jR;0W-U6A_@UK%yR(XM?*uD^EShnzccy(r&)e|)OvnSqx9bKU#TH@>*% zv&Ri1+Fz}#YKylft!tN$PXQS~zV*(}&!-k=wvK*1Fbt#sZ{7Dd#os(BFrVYF00000 LNkvXXu0mjfeA$%H literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/fai_template.png b/trunk/gosa-plugins/fai/html/images/fai_template.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef47b3bdd3b6f6b2e4434642323b29e9f7c5810 GIT binary patch literal 512 zcmV+b0{{JqP)BV}t1ltbt-0{Vd- z=6CJxV|e((;wr$HBQ3*1a8>}t6)Ar;jX7B*Wkp4?T38Aq1y#YKx|Bex4SV0RwIZ^V zz}afT%CHu@qya<k4lC-4CCAfSHHj zAx1+Cdg3duU2HJM;@*5bxbu1ZwoX2gLq|@LoH|O%|8%gkOYfkn%>C1~!HT75MK+FX zlwy>ruem;W#q+BV*m}Rsqs0000?k!oJjJ3JVI=xgA6uM7G@Fa?(+7n|)_0 zOVTQqT)wt!^SzNv+bkwbwLIWID4CWi7Sm)MwMMvCvmfPnan4Zk~k};vy z^Iss}wz~PQsq(?Ky|34Jl&UlLeB3%CWWG_zjDtZYi6tek?yj(T)~unZW-{3+tC;gc z_^eVf#jQWH1SItT&#hN@`-3rkNsH3Y^v)=tN1aPtBT9nv(@M${i&7aJG?XA`#GK)(p9dav+OEQ!7Qj7IcN(=JyO7xQRbF-Nk z4g-zT0vnf^o|jls3N+6w(b(K9+1xxO)zaM9$RIJsmTOMf>H=7Ly%CAwRb5*>sq*K2!wDGwwax7f*>fu zMXOv`(8`V0A~f(jlp#%LhH>6F&-d=U?-tXHQ<7(O?mhqi?_AEgb^H_4({CefZQ+Nl zt<8^`n(D6s$g-NsW~G^2uK0R#@_|&Vch?@Kre3v#!=Xex-v4Z9s5csmwbRwrLU(t2 zb0FZmolfW7@%a7K#l?AX4v_JRTV6 z3rC~P3pr#qW2szP^{qWTcnL}KA-1` z5L&fy6`&|8hM^;bAd|_Tn5MZ}sm;zNva+mbnpQ&BbreOd&aFzid1*6*==2I{AFrA9 zOb*U%0ouXUQnRmynpc7Kn&0|}rGU^Uq{>J8Q>tjN`oP-7@?A{9g=Ag|YM z=vajMo0`Kx^;9W&3VX|jP+tr@+4$@M$V%LckKGz=>c|1dfD?q^P%R*a1?0hT0>zz< zJ73@Legn#YqnwSU?m#ieh2a2_z}k>F%7xBmaF}y23M%-t3(O7_OK@<4Avql8oHIba z=wKB!@QS|;m9CZziVnvr7#3E^MZQ=Aa2!B2z^{R;4r~WZyKFRV&@Ct#VAx<-pu4O5 z>KZZZGD-g^l7_SWI}*9SXmpY40*@IsJ=F5qcK(ct@a?L+yZ+;HDjF9Z6Eo)!Z(9b9U^ z#Sy^!n&tZh*Z^n%g&|LGA+)K&6ac5XjjtDTG@%bRW>U+U>7i81O&zOD?n86H_N;yH z?NUX9=Is1T76}79CYDTHz4-WriUxITwW&uEn{(>wh6Wb;e}Ka;EE)>9#i74vHp0h3 z5OAviiH}Euh=_;~L5GkKf&3dY1Oy?12tnAj`1c1j7xq{X;l)68x2*XreAT00000NkvXXu0mjfWW&;7 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/package_configure.png b/trunk/gosa-plugins/fai/html/images/package_configure.png new file mode 100644 index 0000000000000000000000000000000000000000..8210b43eb12353cc6f993947f5fea5d1641d99cb GIT binary patch literal 851 zcmV-Z1FZasP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;$w@>(RCwBA?C^QBY98z;HI3f#D}3 z1H*rA1_o9>28O3c7#QyFfT%*Z0>m%*&oE)a1O|WrJdC>y03Z-TUt#4aI+Lq7xSod; z#)3}>P=44aWWovX4{ey1eWDP13CVCLt@X{W074kRA&z3h=N}9Vm!JJ**m;MML0OQ2 zA=-=yWE|LhhTp&8N&x~0ZotoRKL2?N6m1_oxvuMBMO4#K?v5I}Gj@V?r>;G%Yf;p5lK3^Q-ZGQ9g} z#~>@kz+kKNkHJBSk%9laC&P;?QVbG29~n6Qo`D+x5I}GP4!)LV5EA5Pc*#-1;9;P~ zVE64SgNncphHqcKF!23kV&Gr{2Aq-)1B19Q0~@O_+yH<8f*YWq;LIRv63k!#j32wt zzZkY3eZ;`S@P$D~`VWK9>zfRce||8qv0E@OeBfgE$Hm3~^E*HQ!40sK{loD7`FnJUz_dX{5uzC#KE7{OJt?!^c|;zyEMByyq8Z_{qx7@P}8JK?bT1Ab{WosK{_L zynX)}m_;vp-!?&N`8UD%XF??s|V>o#1I8^mB28MH&!7P9Pf*Zib z#>^lsAqY-{|M(0UzJB_^z`(@Fz{11Nz|6|V!1(nGSY3E{IG6?{JrH#ax3X1I9(0mK3mBo-iR d1_6Ko0|4SW*7X~+Jplj!002ovPDHLkV1nV3al`-s literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/plugin.png b/trunk/gosa-plugins/fai/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd55d28e3825143cb7c1dd70ee15dcafcb483d1 GIT binary patch literal 5037 zcmV;e6H@GnP)Bbt-nad>-bU(Srl)7sjJ2_eAb|;TY6KQc6p`Ra*hE+ulPWJ|7m4jMsfvpN z<6w!TDi~bF;t)Y_3PG$`NG8}?EU;ol!Lo#cK%)^e%#3DwdV2k>Z@c%N{PEter+Xx1 z?Avwwb-#Ci_nrNG&$&M(B5WS#&Yfd*b%m$?_Q|(Bcl6j>`oqE8yWVw6cI|a|u< z4mJq?hY&yBPbq~udh}R*2b5ArR##X5ENL{@HZx6>G$_lGPOC{6McA@Lp%C$#h^YwJ zEKLQVHBJO2f>x@lwO$sHuF|?^jOi<-x>~7T&E#=l2{;Wr_v0||Lv6`yQMA%%1YJvitcA_~ zB!CjZi$W zsVcvG(fv(w0B{20skX1QL~UN86YZOK6 zu_IQJR`tubQvYJJ5s??IQ)7t%Rw=|elyivpi1%o5I01*kiwE!UQobw$8}CxJ51@a9 z!gNji#m~p4P%{?<3avGQ$9uum%Ut2{#^a=NP%R#VqC_e!D~&fH&J{>mg0+;kM4bOS zZAe5AUz^a2*D5N~WRvM^^#QFF#%O{-k*6cNy&Mw+U^E7WQDBTB(4Hu$KCQJz8c;d| z0>jLb4^was=SqsgW1YiS&h>KQueI#~A$ZZ+ivAx#d?kWP@`i7JXMun7@n?u9cd>JJ zk~mhxfhJHwU@U?+H^K&rHXYJH_G(^!mbDSFy4jB5FG`SH71I z{LUx2?@K$F+_oLpb>v>-#s8gQR7CKVu@T6NIPe=0h-Q)Y0n4V0Xt^lFCO{o7^cF5kLP^lfe~4B4NpD&18#iV96c0T z3s}obd9kX0N$te0w1^17MPRgA099<(9+cV$mBvdY0|iN|h4cqlYZwf>Fmhz0CQDjq zHZ*xrA=ITVeE+!Pw{I1$dyN7@{_@)?X@3n9br|Lbq;g_-64IEFI&_Kxj|Z(WCZNcNl=*;eug|}KkKx{rDt0t2i;JGzRfL>9@3?Yj z$@^~7Acp%M>hig-zCaRMyd7bJfTAc6SK_@;I#>CQ2v!7#AX=lNh%iZr8x7({lPHc+ z#t?9k3M$S(>9M-%fa}3K0WTm5V+3b&%6x<^ESDe9OiTxSsZ+8u6}rg{mZsQfOl^#-MbCp>BTLjU;i*^2!Q>!2p2o zJ$np2&Wht%xvc{4Ym_-gn3da9=A_X$%B+uf8Cf>uH}5zGD2l@K_*3Tz14o&`&;4|R zD-VVY2cF-!^EpnPT_aK{MY@VFGfWWHo(Bp~U<^?h(nu11;kI}4<^T3YM(b-dl7wcf zMZ4YJ5Oxq4w2VEQ&E_X~5uC5o={GG9Dli6~BI}cndW?oWp7`D(;Q8f`9OdE17HB0^ z#@IGxP{7Js&g0)%Bv04qtu2v{`sC?4C{qbZ31JY5vlTY_%pZP=I8F$|5M#`SMuH&N zaPdQz?MHj(**vXtc<=BccrSQcVR*H{fuKa;T|wGkB^wTS)t;C?`0cCt&iB^&>YtzC z(g^`^grV@K4=l3YE!epu=7YbukHgn&V|F@V>4zuCSAR%hg>JV;KFT=1v|N7d_dde% z;=-1S?P5T=Q8WR8_m0g&p({GIptZsIx&j-c%xVX0F{FR=Tl~hyeuWQx@MZu$clR^k zEm~{5tLooJ|8|9im6Q*>XE!%qKT9#{vwzp6oP6#Qu0FV($z9vgQ9!e4*s)!9{q9FT zeB$KEQ{T_?{15Ux|Aw^|Uz_vhp|!?&Pat(czIk{Jh^{Io&$wEuete|`=RHu+@2zfp zF3VGFIjTORDvc$v@ZnE9&5dtt(ugyzzotQ>uw3)zgJhy9jX{M8It&SoVdvc3-fOSD zZtpF(-17G0$4`uY|IRz!SC-}77c()|f_7A)YCQcWhpzmfl7ROfXDjov&f%@V!~~!G zuaC0x$`A7CFFwL6_cuuwj?!N}NvJ)LkPlXgr@-`)pdj_I(#^?+IX=trBDEWX zwU#u?aL%)T|GwsDKmF-1k4B?!rfJ$7m!#uiv_X3(Y@SZ)={?T54WhlTa)R@Ma}H}A z%4iymfQ6MlAO4Sz@aF60dE-y+W4)WPaDK?$_dZROCqcq9Q#g?M#Y zqO3;M~@2ui!viM3K_jqllm^FAAeZp_L#~rF2`CIOkAM=LSz{ zEm_(lOs0sM9ReD>_uoE%GBMqeW_nUF=o^d%FKuuJTHwNrb@A+<+t1w06|Al=a_aO+ zVjU7T8w6p*>?N0=Hu_H&Bjsw`ap#?%x#ylg`9fKi1pcBhssy|is>X!ES&Ma53&eY& zEIr=lGOmJvu!#^}5N)$qgpP!gFN>_zoP{A76j{^*2vWPJT^0 z@7O%8tC~#KI&5hv$A3GAb(Sp8=(J;Ad(|ZnZ6in~F-e=KIfV&3bUJNrKD--rLEI3G z1|*b;~`^8_o@4oxcwzO=S)^0=}YwQ1A6_vd6IO{2$=9g}}2Gjd%*1LU5T9h`R zAZFW4OsDD5+SBQHIuk-13lOsR(tVs>>hkDAPjc-c&vmcejSd2oh9C%OHWIbAy2|YA z>@(eN_xZ5~idu+yo|C32-SsZJ=I5`fqENZjiIr9~qPjZ5kja=SUpH$#Yuyo-U$LLB zeEygD%zybhr_V1kH9bkE-Ddt35hj?YC?E_W422{SCOQ$@w+B4&#U=ibEBIB2p#$b_mW{5QlTFMysCgs^!3e{rsmpewDJws(wF;GiT4?yawgb z%AmC&i8ZZONE}0FqDhiOcwlwC&$;DgwAQ4mVwuKunga)1m4U4t$2GhN zMX#)?2URtLtq9#g&g8VNI@d;{v>^y87!05giqa8KHN(cqs)}$HK#LL!ES@>j^I_mf zv)+d7TWitUK%x*)QSjhH57abO8TKu2eG6^QFx%*`s8`5~DQxNRw#w3iszF^{c5Yk& z1!bP&yY*F zYPJnprx;VyahN-@hE}Pdz6WYlbFeg4%!67QA8Al zgn>aDMHq(IvLudUob{}%tPm#&!(oQ^B5%0v^{1bI;rMHQV88#ysI!exKcwh;ycD1c zqPXOeO9Eav^};dWLT64Xg$PlWTi$!iD|zn3fW<@mXfy)Sw4kgp5gR5Wl?H126<+~9 zEuNDnPqJ&*F0@jFQ3cRM1fw)FGt-PlDd(4#NRpT^3_)w6R*OJs_w;ukyZLzk*byCQ zdchf7E28KpWWy?{qAif{;DZnTk0VF^*#!pv`hP#lt6%flIL`|j4aGHAwUMjZtga5o z^1MQ*)@`(0fQ`DrdSBPeLXaf!0KaXP-Sv5=R(y;T7YuwApO1XZJk&_U~io z{5-MqgxxOjNMl?RRa)XviW(NA`G^6_j2dT1^%6Q%Jo?C=em;ugVGslx8VCW^@Arq@ zwJuQ{6NWKao-M_c_4WSq&p*HTy4PK^{p(-<`l~lZ}qDalojQ95KTvz#k(GVh2@z}>(9rMIoGtp9lsgeYCr#R1R+I&mCd(rHi3u6NfX zYs*+GwR3WMYR}%i`z}|4TUuFO9rSwLEYC)HmZx511Y|%T=m9xU)YlXk-G2M+AHD0Y zyMAWOg!h6iOVT`NG#at8w!-Sl8pXLqvUBIivYb&Mr0pSv9WqL@YICc&|Bt@*>t&XI za%FK9ZS;l09xy=AXf~5wyLNR3gMoPOb(W?w91g@<=e5yZE3M)v@?ji1rIa_u_#}yC zqCMeTt){3TU}|#GcP1wM#KeSjIuqIHQ>WOrZRX=2zw^%DoSK?qlxB>w6z43%!HC7h zMb`TRvb8nr*|QYAKB=>e8kRg65`~(@#Xev7qkC^{&rE(b8>TETRPX~;N#EDA+_!Ik z_Ktu4FZ#>N%d&9xtb|cW949h0Imy)YG}e}+qaj)wncuTVZJ(V5U}}1sL{X@e))jm} zsVIujTI(oI{1-m|+26Y5)_2|Wv+ug~bN}i+KYvvm#;gxV42MHTX-b}@WZq#B%Cf|l zC9w`ERm3CT`kTMJ_nwDu-@SM4^jPYfyYE|~koR6}HJr89TW7tsR?4!JvMi)5ODT#% zilU&%bIG!-o+)XXN|vRPR`-0K=e{Tk@0`P!fOfn6*!$oA{;OYg^;Pfr_?>rr>*#aO z;k_r06PnEyNvlmbIZfC|SnBuqvv2;@eZTjy&mM{5@NgIg74a`|Ai3p;X&fcSeIW6& zr0(Z=Sy$B;qdhK+1ab6W@dIbo6YUc zc{k|w7S`6*POPo3J#)+3-=0QcQ1wOikN#4~i_XYiYHTU7H@6spm#$j3j`4vxfC&Pk zC<0h(cRG(AefC)mbN~kocD`ZYWe>GYU?E&C4RA`00000NkvXXu0mjf Dy~Nn% literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/fai/html/images/removal_mark.png b/trunk/gosa-plugins/fai/html/images/removal_mark.png new file mode 100644 index 0000000000000000000000000000000000000000..3240b29d5c73c3c783d9352d4cf0aefff0c5f4b8 GIT binary patch literal 745 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Ur9tkRCwBA{Qv(y10y3N13Ea(z!1Qus94WyXJ^2~ z$H(vwD0YA8(gV)#-Z{e5fb@a@KmZ{as0J9^wX^&G|Mcnq|IeI(3~%0GV4aW?&}aDg z_c_D`Nci!qR}5bn7$$-ZzybgQ2yBRM;k6I%-hQ3P!StEootZF(As>N(oDPgJ1{?q& zfZ(z7?=QoI=NFHC;Bhf$c*pt?VF=I_-+%mIzy|;V2yTc)^|cSLUjHg&`gE7!S)d*R z!~6GO{OQXVh8sVBZop>9eahW)b`80PmPr3rMsAPf*d z7=~;v)l7J_G3x*RNg?+c2mqKN00D$G1MX|kzW?rg$N%}M8VST00uVr0ll`kVe+xg{ zI?kYGWmnHY1ONyitS$k8omFc4U!Q9FKRHIdfsji80*DEhg2ykJ8c*yv%{$aQ(%~p8Cr^kA~Fq8Nn~i!P(w`{S50VK z*vFzt6XV9X>(;n2F>#^BG--^AF^WyPU_nyU$TMoqKwF+8Q>H)*^P&vQdxkr6|1K1Q z)o*jo;{3jRC+A2!D|cUm@0G60J^r>g8yjldg)qw-8M0B$xKDsfq>~Ocf_P?;b-hc7tchlu)EG_QMhQ-)# ziy|O6C@KKXqo*!A>R-MRjjoY1tYq_ov!~i=X>uW} z3W}^CghW1XkjWG&8v1jA`+H74jtIpf$ zYxf;)YdM0u#!f@M6IWdg`FxI*;MjCxVc;5+Cib}f1P7$M>W`m2{$kg;3l}cEz49m= z8K3xRa4md)vXG4p1KESa>VaN4bLK5~CQ~dY5-a0&bz48(?YSx&q4-$w@u05NOm+B9 zYLL+afnSn<_*a6es@muK`@f!RYC3u-lgSF3%_@1lE&%4{mV{{v(cIiDkBp2iUBCWb zH;{UEh3d}Eu6M0g)h^45>hpDUS*@y7Rb@FI-%KwrKfI@DR#K_dRxr451IPpX1&&, 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2008-12-04 11:27+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/fai/faiTemplateEntry.tpl:3 admin/fai/faiVariable.tpl:4 +#: admin/fai/faiProfile.tpl:4 admin/fai/faiProfile.tpl:36 +#: admin/fai/faiScriptEntry.tpl:5 admin/fai/faiScript.tpl:4 +#: admin/fai/faiPackage.tpl:4 admin/fai/faiHook.tpl:4 +#: admin/fai/faiPartitionTableEntry.tpl:2 admin/fai/faiHookEntry.tpl:5 +#: admin/fai/faiTemplate.tpl:4 admin/fai/faiVariableEntry.tpl:5 +#: admin/fai/faiPartitionTable.tpl:4 +msgid "Generic" +msgstr "Allgemein" + +#: admin/fai/faiTemplateEntry.tpl:10 admin/fai/class_faiTemplateEntry.inc:220 +msgid "File name" +msgstr "Dateiname" + +#: admin/fai/faiTemplateEntry.tpl:21 admin/fai/class_faiTemplateEntry.inc:215 +msgid "Destination path" +msgstr "Ziel-Pfad" + +#: admin/fai/faiTemplateEntry.tpl:33 +#: admin/fai/class_faiPartitionTableEntry.inc:470 admin/fai/faiVariable.tpl:21 +#: admin/fai/class_faiHook.inc:562 admin/fai/faiProfile.tpl:21 +#: admin/fai/faiScriptEntry.tpl:19 admin/fai/faiScript.tpl:21 +#: admin/fai/faiPackage.tpl:21 admin/fai/faiHook.tpl:21 +#: admin/fai/class_faiProfile.inc:479 admin/fai/faiPartitionTableEntry.tpl:13 +#: admin/fai/faiHookEntry.tpl:19 admin/fai/class_faiVariableEntry.inc:138 +#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646 +#: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiTemplate.tpl:21 +#: admin/fai/class_faiPartitionTable.inc:550 admin/fai/faiVariableEntry.tpl:19 +#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398 +#: admin/fai/class_faiPackage.inc:582 admin/fai/class_faiTemplateEntry.inc:274 +#: admin/fai/faiPartitionTable.tpl:21 +msgid "Description" +msgstr "Beschreibung" + +#: admin/fai/faiTemplateEntry.tpl:45 +msgid "Template attributes" +msgstr "Vorlagen-Attribute" + +#: admin/fai/faiTemplateEntry.tpl:53 admin/fai/class_faiTemplateEntry.inc:211 +msgid "File" +msgstr "Datei" + +#: admin/fai/faiTemplateEntry.tpl:60 +msgid "Save template" +msgstr "Vorlage speichern" + +#: admin/fai/faiTemplateEntry.tpl:69 +msgid "Upload" +msgstr "Hochladen" + +#: admin/fai/faiTemplateEntry.tpl:76 +msgid "Full path" +msgstr "Voller Pfad" + +#: admin/fai/faiTemplateEntry.tpl:92 +msgid "Owner" +msgstr "Besitzer" + +#: admin/fai/faiTemplateEntry.tpl:103 admin/fai/faiTemplateEntry.tpl:145 +#: admin/fai/class_faiTemplateEntry.inc:230 +#: admin/fai/class_faiTemplateEntry.inc:233 +#: admin/fai/class_faiTemplateEntry.inc:235 +msgid "Group" +msgstr "Gruppe" + +#: admin/fai/faiTemplateEntry.tpl:114 +msgid "Access" +msgstr "Zugriff" + +#: admin/fai/faiTemplateEntry.tpl:120 +msgid "Class" +msgstr "Klasse" + +#: admin/fai/faiTemplateEntry.tpl:121 +msgid "Read" +msgstr "Lesen" + +#: admin/fai/faiTemplateEntry.tpl:122 +msgid "Write" +msgstr "Schreiben" + +#: admin/fai/faiTemplateEntry.tpl:123 +msgid "Execute" +msgstr "Ausführen" + +#: admin/fai/faiTemplateEntry.tpl:125 +msgid "Special" +msgstr "Speziell" + +#: admin/fai/faiTemplateEntry.tpl:128 admin/fai/class_faiTemplateEntry.inc:224 +#: admin/fai/class_faiTemplateEntry.inc:226 +msgid "User" +msgstr "Benutzer" + +#: admin/fai/faiTemplateEntry.tpl:142 +msgid "SUID" +msgstr "SUID" + +#: admin/fai/faiTemplateEntry.tpl:159 +msgid "SGID" +msgstr "SGID" + +#: admin/fai/faiTemplateEntry.tpl:162 +msgid "Others" +msgstr "Andere" + +#: admin/fai/faiTemplateEntry.tpl:176 +msgid "sticky" +msgstr "sticky" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/class_faiHook.inc:239 admin/fai/tabsPartition.inc:34 +#: admin/fai/class_faiProfile.inc:262 admin/fai/class_faiManagement.inc:238 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiManagement.inc:899 admin/fai/class_faiManagement.inc:943 +#: admin/fai/class_faiManagement.inc:967 +#: admin/fai/class_faiManagement.inc:1216 admin/fai/class_faiTemplate.inc:212 +#: admin/fai/tabsVariable.inc:33 admin/fai/tabsPackage.inc:33 +#: admin/fai/class_faiScript.inc:229 admin/fai/class_FAI.inc:535 +#: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62 +#: admin/fai/tabsHook.inc:32 admin/fai/class_faiPartitionTable.inc:180 +#: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:272 +#: admin/fai/class_faiSummaryTab.inc:89 admin/fai/tabsProfile.inc:33 +#: admin/systems/services/repository/class_servRepository.inc:142 +#: admin/systems/services/repository/class_servRepository.inc:177 +#: admin/systems/services/repository/class_servRepository.inc:182 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Error" +msgstr "Fehler" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/tabsPartition.inc:34 admin/fai/tabsVariable.inc:33 +#: admin/fai/tabsPackage.inc:33 admin/fai/tabsHook.inc:32 +#: admin/fai/tabsProfile.inc:33 +msgid "Moving the tree failed. Destination tree is subtree of source tree." +msgstr "" +"Verschieben des Baums ist fehlgeschlagen: Der Zielbaum ist ein Teilbaum des " +"Quellbaumes." + +#: admin/fai/remove.tpl:2 admin/fai/class_faiManagement.inc:513 +#: admin/fai/class_faiManagement.inc:1286 admin/fai/remove_branch.tpl:2 +msgid "Warning" +msgstr "Warnung" + +#: admin/fai/remove.tpl:7 +msgid "" +"This includes 'all' object information. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dies umfasst 'alle' Objekt-Informationen Bitte prüfen Sie genau, da es keine " +"Möglichkeit für GOsa gibt, die Daten zu restaurieren. " + +#: admin/fai/remove.tpl:11 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Eine Sicherung der LDAP-Datenbank bietet sich an. Wenn Sie dies erledigt " +"haben, drücken Sie 'Entfernen' um Fortzufahren oder 'Abbrechen', um den " +"Vorgang abzubrechen." + +#: admin/fai/faiGroupHandle.tpl:3 +msgid "Please select the objects you want to remove:" +msgstr "Bitte wählen Sie die zu entfernenden Objekte:" + +#: admin/fai/faiGroupHandle.tpl:22 admin/fai/class_divListFai.inc:145 +msgid "Freezed" +msgstr "Eingefroren" + +#: admin/fai/faiGroupHandle.tpl:30 +msgid "Select the object you want to edit:" +msgstr "Wählen Sie die zu bearbeitenden Objekte" + +#: admin/fai/faiGroupHandle.tpl:53 +msgid "Select the object you want to copy:" +msgstr "Wählen Sie die zu kopierenden Objekte" + +#: admin/fai/faiGroupHandle.tpl:76 +msgid "Select the object you want to cut:" +msgstr "Wählen Sie die auszuschneidenden Objekte" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "primary" +msgstr "primär" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "logical" +msgstr "logisch" + +#: admin/fai/class_faiPartitionTableEntry.inc:183 +#: admin/fai/class_faiSummaryTab.inc:348 +msgid "Type" +msgstr "Typ" + +#: admin/fai/class_faiPartitionTableEntry.inc:184 +msgid "FS type" +msgstr "Dateisystem" + +#: admin/fai/class_faiPartitionTableEntry.inc:185 +#: admin/fai/class_faiPartitionTableEntry.inc:474 +#: admin/fai/class_faiSummaryTab.inc:347 +msgid "Mount point" +msgstr "Mount-Punkt" + +#: admin/fai/class_faiPartitionTableEntry.inc:186 +#: admin/fai/class_faiSummaryTab.inc:346 +msgid "Size in MB" +msgstr "Größe in MB" + +#: admin/fai/class_faiPartitionTableEntry.inc:187 +#: admin/fai/class_faiPartitionTableEntry.inc:476 +#: admin/fai/class_faiSummaryTab.inc:345 +msgid "Mount options" +msgstr "Mount-Optionen" + +#: admin/fai/class_faiPartitionTableEntry.inc:188 +msgid "FS option" +msgstr "Dateisystem-Option" + +#: admin/fai/class_faiPartitionTableEntry.inc:189 +msgid "Preserve" +msgstr "Bewahren" + +#: admin/fai/class_faiPartitionTableEntry.inc:282 +msgid "False" +msgstr "falsch" + +#: admin/fai/class_faiPartitionTableEntry.inc:284 +msgid "True" +msgstr "wahr" + +#: admin/fai/class_faiPartitionTableEntry.inc:288 +#: admin/fai/class_faiPartitionTableEntry.inc:290 +#: admin/fai/class_divListFai.inc:178 +msgid "Remove" +msgstr "Entfernen" + +#: admin/fai/class_faiPartitionTableEntry.inc:371 +#: admin/fai/class_faiPartitionTableEntry.inc:374 +#: admin/fai/class_faiPartitionTableEntry.inc:469 admin/fai/faiVariable.tpl:9 +#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:561 +#: admin/fai/faiProfile.tpl:9 admin/fai/faiScriptEntry.tpl:9 +#: admin/fai/faiScript.tpl:9 admin/fai/faiPackage.tpl:9 +#: admin/fai/faiHook.tpl:9 admin/fai/class_faiProfile.inc:395 +#: admin/fai/class_faiProfile.inc:405 admin/fai/class_faiProfile.inc:478 +#: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiHookEntry.tpl:9 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiVariableEntry.inc:90 +#: admin/fai/class_faiVariableEntry.inc:99 +#: admin/fai/class_faiVariableEntry.inc:102 +#: admin/fai/class_faiVariableEntry.inc:137 +#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:544 +#: admin/fai/class_askClassName.inc:142 admin/fai/class_askClassName.inc:146 +#: admin/fai/class_askClassName.inc:150 admin/fai/class_faiScript.inc:327 +#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiScriptEntry.inc:137 +#: admin/fai/class_faiScriptEntry.inc:142 +#: admin/fai/class_faiScriptEntry.inc:145 +#: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiTemplate.tpl:9 +#: admin/fai/class_faiPartitionTable.inc:371 +#: admin/fai/class_faiPartitionTable.inc:549 admin/fai/faiVariableEntry.tpl:9 +#: admin/fai/class_faiHookEntry.inc:145 admin/fai/class_faiHookEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:153 admin/fai/class_faiHookEntry.inc:196 +#: admin/fai/class_faiVariable.inc:296 admin/fai/class_faiVariable.inc:397 +#: admin/fai/class_faiPackage.inc:456 admin/fai/class_faiPackage.inc:581 +#: admin/fai/class_faiTemplateEntry.inc:207 +#: admin/fai/class_faiTemplateEntry.inc:273 +#: admin/fai/class_faiSummaryTab.inc:343 admin/fai/faiPartitionTable.tpl:9 +#: admin/systems/services/repository/class_servRepository.inc:177 +msgid "Name" +msgstr "Name" + +#: admin/fai/class_faiPartitionTableEntry.inc:397 +#, php-format +msgid "please enter a unique mount point for partition %s" +msgstr "Bitte geben Sie einen eindeutigen Mount-Punkt für Partition %s ein." + +#: admin/fai/class_faiPartitionTableEntry.inc:402 +#, php-format +msgid "partition %s mount point" +msgstr "Einhängepfad für Partition %s" + +#: admin/fai/class_faiPartitionTableEntry.inc:407 +#, php-format +msgid "" +"File system type 'swap' is already used, change file system type for " +"partition %s." +msgstr "" +"Dateisystem 'swap' wird bereits benutzt, ändern Sie bitte das Dateisystem " +"für Partition %s." + +#: admin/fai/class_faiPartitionTableEntry.inc:411 +msgid "Please use 'swap' as mount point, if 'swap' is used as fs-type." +msgstr "" +"Bitte wählen Sie 'swap' als Mount-Punkt, wenn Dateisystem 'swap' gewählt " +"wurde." + +#: admin/fai/class_faiPartitionTableEntry.inc:417 +#: admin/fai/class_faiPartitionTableEntry.inc:421 +#: admin/fai/class_faiPartitionTableEntry.inc:427 +#: admin/fai/class_faiPartitionTableEntry.inc:429 +#: admin/fai/class_faiPartitionTableEntry.inc:434 +#, php-format +msgid "partition %s size" +msgstr "Größe der Partition %s" + +#: admin/fai/class_faiPartitionTableEntry.inc:449 +msgid "" +"You have more than 3 primary partition table entries in your configuration, " +"please check your configuration twice." +msgstr "" +"Sie haben mehr als 3 primäre Partitionen in ihrer Konfiguration. Bitte " +"prüfen Sie die Konfiguration." + +#: admin/fai/class_faiPartitionTableEntry.inc:461 +msgid "Partition table entry" +msgstr "Partitionstabellen-Eintrag" + +#: admin/fai/class_faiPartitionTableEntry.inc:462 +msgid "FAI partition table entry" +msgstr "FAI-Partitionstabellen-Eintrag" + +#: admin/fai/class_faiPartitionTableEntry.inc:471 +msgid "Partition type" +msgstr "Partitionstyp" + +#: admin/fai/class_faiPartitionTableEntry.inc:472 +msgid "Partition no." +msgstr "Partitionsnummer" + +#: admin/fai/class_faiPartitionTableEntry.inc:473 +msgid "File system type" +msgstr "Dateisystem-Typ" + +#: admin/fai/class_faiPartitionTableEntry.inc:475 +msgid "Partition size" +msgstr "Partitionsgröße" + +#: admin/fai/class_faiPartitionTableEntry.inc:477 +msgid "File system options" +msgstr "Dateisystem-Optionen" + +#: admin/fai/class_faiPartitionTableEntry.inc:478 +msgid "Partition flags" +msgstr "Partitions-Flags" + +#: admin/fai/faiVariable.tpl:36 admin/fai/faiScript.tpl:38 +#: admin/fai/faiHook.tpl:38 admin/fai/class_faiProfileEntry.inc:175 +#: admin/fai/faiTemplate.tpl:33 admin/fai/faiPartitionTable.tpl:36 +msgid "Objects" +msgstr "Objekte" + +#: admin/fai/faiVariable.tpl:38 +msgid "List of assigned variables" +msgstr "Liste benutzter Variablen" + +#: admin/fai/faiVariable.tpl:44 +msgid "Choose a variable to delete or edit" +msgstr "Wählen Sie eine Variable zum Entfernen oder Bearbeiten" + +#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312 +#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54 +msgid "Edit" +msgstr "Bearbeiten" + +#: admin/fai/class_faiHook.inc:316 +msgid "Delete" +msgstr "Entfernen" + +#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiTemplate.inc:300 +#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358 +#: admin/fai/class_faiScriptEntry.inc:88 admin/fai/class_faiHookEntry.inc:80 +msgid "Download" +msgstr "Herunterladen" + +#: admin/fai/class_faiHook.inc:553 admin/fai/class_divListFai.inc:64 +msgid "Hook" +msgstr "Hook" + +#: admin/fai/class_faiHook.inc:554 +msgid "FAI hook" +msgstr "FAI-Hook" + +#: admin/fai/class_faiHook.inc:561 admin/fai/class_faiPartitionTable.inc:549 +#: admin/fai/class_faiVariable.inc:397 +msgid "Read only" +msgstr "Nur Lesen" + +#: admin/fai/faiProfile.tpl:36 admin/fai/class_faiProfile.inc:480 +msgid "FAI classes" +msgstr "FAI-Klassen" + +#: admin/fai/faiProfile.tpl:37 +msgid "Choose a priority" +msgstr "Wählen Sie eine Priorität" + +#: admin/fai/faiScriptEntry.tpl:33 +msgid "Properties" +msgstr "Eigenschaften" + +#: admin/fai/faiScriptEntry.tpl:33 admin/fai/faiScriptEntry.tpl:54 +msgid "Script attributes" +msgstr "Skript-Attribute" + +#: admin/fai/faiScriptEntry.tpl:38 admin/fai/class_faiScript.inc:328 +msgid "Priority" +msgstr "Priorität" + +#: admin/fai/faiScriptEntry.tpl:43 +msgid "" +"Choose a priority. Low values result in an earlier, high values in a later " +"execution." +msgstr "" +"Wählen Sie eine Priorität. Niedrige Werte bedeuten eine frühe, höhere Werte " +"eine spätere Ausführung." + +#: admin/fai/faiScriptEntry.tpl:56 admin/fai/faiHookEntry.tpl:56 +#: admin/fai/class_faiScript.inc:637 admin/fai/class_faiScriptEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:158 admin/fai/class_divListFai.inc:62 +msgid "Script" +msgstr "Skript" + +#: admin/fai/faiScriptEntry.tpl:75 admin/fai/faiHookEntry.tpl:75 +msgid "Import script" +msgstr "Skript importieren" + +#: admin/fai/faiScript.tpl:39 +msgid "List of scripts" +msgstr "Liste der Skripte" + +#: admin/fai/faiPackage.tpl:33 +#: admin/systems/services/repository/servRepositorySetup.tpl:1 +#: admin/systems/services/repository/class_servRepository.inc:343 +msgid "Repository" +msgstr "Repository" + +#: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25 +#: admin/fai/class_faiPackage.inc:587 +#: admin/systems/services/repository/class_divListRepositories.inc:23 +#: admin/systems/services/repository/servRepositorySetup.tpl:19 +#: admin/systems/services/repository/class_servRepositorySetup.inc:153 +msgid "Release" +msgstr "Release" + +#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:584 +msgid "Section" +msgstr "Section" + +#: admin/fai/faiPackage.tpl:53 +msgid "Install method" +msgstr "Installations-Methode" + +#: admin/fai/faiPackage.tpl:57 +msgid "Please select the installation method" +msgstr "Bitte wählen Sie die Installations-Methode" + +#: admin/fai/faiPackage.tpl:71 +msgid "Used packages" +msgstr "Verwendete Pakete" + +#: admin/fai/faiHook.tpl:39 +msgid "List of hook scripts" +msgstr "Liste der Hook-Skripte" + +#: admin/fai/class_faiProfile.inc:289 admin/fai/class_faiProfileEntry.inc:172 +msgid "This list displays all assigned class names for this profile." +msgstr "Diese Liste zeigt alle diesem Profil zugeordneten Klassen-Namen." + +#: admin/fai/class_faiProfile.inc:292 admin/fai/class_askClassName.inc:83 +#: admin/fai/class_faiProfileEntry.inc:138 +msgid "Hook bundle" +msgstr "Hook-Gruppe" + +#: admin/fai/class_faiProfile.inc:293 admin/fai/class_askClassName.inc:85 +#: admin/fai/class_faiProfileEntry.inc:139 +msgid "Template bundle" +msgstr "Vorlagen-Gruppe" + +#: admin/fai/class_faiProfile.inc:294 admin/fai/class_askClassName.inc:81 +#: admin/fai/class_faiProfileEntry.inc:140 +msgid "Script bundle" +msgstr "Skript-Gruppe" + +#: admin/fai/class_faiProfile.inc:295 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_faiProfileEntry.inc:141 +msgid "Variable bundle" +msgstr "Variablen-Gruppe" + +#: admin/fai/class_faiProfile.inc:296 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_faiProfileEntry.inc:142 +msgid "Package bundle" +msgstr "Paket-Gruppe" + +#: admin/fai/class_faiProfile.inc:297 admin/fai/class_askClassName.inc:79 +#: admin/fai/class_faiGroupHandle.inc:100 +#: admin/fai/class_faiProfileEntry.inc:143 +#: admin/fai/class_faiPartitionTable.inc:541 +#: admin/fai/class_divListFai.inc:154 admin/fai/class_divListFai.inc:208 +#: admin/fai/class_faiSummaryTab.inc:48 +msgid "Partition table" +msgstr "Partitionstabelle" + +#: admin/fai/class_faiProfile.inc:300 +msgid "Remove class from profile" +msgstr "Entferne Klasse von Profil" + +#: admin/fai/class_faiProfile.inc:303 +msgid "Up" +msgstr "Auf" + +#: admin/fai/class_faiProfile.inc:304 +msgid "Down" +msgstr "Ab" + +#: admin/fai/class_faiProfile.inc:391 +msgid "No class specified for this profile!" +msgstr "Es wurde für dieses Profil keine Klasse definiert!" + +#: admin/fai/class_faiProfile.inc:470 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_divListFai.inc:58 +#: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218 +msgid "Profile" +msgstr "Profil" + +#: admin/fai/class_faiProfile.inc:471 +msgid "FAI profile" +msgstr "FAI-Profil" + +#: admin/fai/faiPartitionTableEntry.tpl:2 +msgid "Device" +msgstr "Gerät" + +#: admin/fai/faiPartitionTableEntry.tpl:24 +msgid "Partition entries" +msgstr "Partitions-Einträge" + +#: admin/fai/faiPartitionTableEntry.tpl:29 +#: admin/fai/faiPartitionTableEntry.tpl:31 +msgid "Add partition" +msgstr "Partition hinzufügen" + +#: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54 +msgid "Hook attributes" +msgstr "Hook-Attribute" + +#: admin/fai/faiHookEntry.tpl:38 admin/fai/class_faiHookEntry.inc:198 +msgid "Task" +msgstr "Aufgabe" + +#: admin/fai/faiHookEntry.tpl:41 +msgid "Choose an existing FAI task" +msgstr "Einen existierenden Task wählen" + +#: admin/fai/faiPackageEntry.tpl:6 +msgid "List of available packages" +msgstr "Liste verfügbarer Pakete" + +#: admin/fai/faiPackageEntry.tpl:20 admin/fai/faiProfileEntry.tpl:21 +msgid "Information" +msgstr "Information" + +#: admin/fai/faiPackageEntry.tpl:24 +msgid "" +"This menu allows you to select multiple packages to add them to the " +"currently edited package list." +msgstr "" +"Dieses Menü erlaubt es Ihnen, Pakete auszuwählen und zur gegenwärtig " +"bearbeiteten Paketliste hinzuzufügen." + +#: admin/fai/faiPackageEntry.tpl:30 admin/fai/faiProfileEntry.tpl:31 +msgid "Filters" +msgstr "Filter" + +#: admin/fai/faiPackageEntry.tpl:40 admin/fai/faiProfileEntry.tpl:54 +#: admin/fai/faiProfileEntry.tpl:55 +msgid "Display objects matching" +msgstr "Zeige die Objekte, auf die Folgendes passt" + +#: admin/fai/faiPackageEntry.tpl:44 admin/fai/faiProfileEntry.tpl:59 +#: admin/systems/services/repository/class_divListRepositories.inc:26 +msgid "Regular expression for matching object names" +msgstr "Regulärer Ausdruck zum Erkennen von Objekt-Namen" + +#: admin/fai/class_faiManagement.inc:25 admin/fai/main.inc:53 +#: admin/fai/main.inc:55 +msgid "Software deployment" +msgstr "Software-Verteilung" + +#: admin/fai/class_faiManagement.inc:26 +msgid "Manage software packages and deployment reciepes" +msgstr "Software-Pakete und Installationsrichtlinien verwalten" + +#: admin/fai/class_faiManagement.inc:338 admin/fai/class_faiManagement.inc:495 +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 admin/fai/class_faiManagement.inc:869 +#: admin/fai/class_faiManagement.inc:886 +msgid "Permission error" +msgstr "Berechtigungsfehler" + +#: admin/fai/class_faiManagement.inc:384 +msgid "Branch locked" +msgstr "Teilbaum gesperrt" + +#: admin/fai/class_faiManagement.inc:384 +#, php-format +msgid "The following entries are locked, you can't remove them %s." +msgstr "" +"Die folgenden Einträge sind gesperrt, Sie können diese nicht entfernen: %s." + +#: admin/fai/class_faiManagement.inc:400 +msgid "FAI object" +msgstr "FAI-Objekt" + +#: admin/fai/class_faiManagement.inc:492 +msgid "FAI branch/freeze" +msgstr "FAI Teilbaum/Freeze" + +#: admin/fai/class_faiManagement.inc:495 +msgid "You have no permission to delete this release!" +msgstr "Sie haben keine Berechtigung, dieses Release zu löschen!" + +#: admin/fai/class_faiManagement.inc:513 +msgid "Release remove aborted because the release name check failed!" +msgstr "" +"Das Entfernen der Release ist aufgrund einer fehlgeschlagenen " +"Namensüberprüfung fehlgeschlagen!" + +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 +msgid "Branch" +msgstr "Teilbaum" + +#: admin/fai/class_faiManagement.inc:750 +#: admin/fai/class_faiManagement.inc:1025 +#: admin/fai/class_faiManagement.inc:1031 +msgid "Continue" +msgstr "Fortsetzen" + +#: admin/fai/class_faiManagement.inc:781 +#: admin/fai/class_faiPackageEntry.inc:53 +#: admin/fai/class_faiPackageEntry.inc:193 admin/fai/class_FAI.inc:553 +#: admin/fai/class_faiPackageConfiguration.inc:35 +#: admin/fai/class_faiPackage.inc:478 +#: admin/systems/services/repository/class_servRepository.inc:326 +msgid "Service infrastructure" +msgstr "Dienst-Infrastruktur" + +#: admin/fai/class_faiManagement.inc:786 admin/fai/class_FAI.inc:1157 +msgid "Fatal error" +msgstr "Schwerer Fehler" + +#: admin/fai/class_faiManagement.inc:846 +msgid "partition table" +msgstr "Partitionstabelle" + +#: admin/fai/class_faiManagement.inc:847 +msgid "script" +msgstr "Skript" + +#: admin/fai/class_faiManagement.inc:848 +msgid "hook" +msgstr "Hook" + +#: admin/fai/class_faiManagement.inc:849 +msgid "variable" +msgstr "Variable" + +#: admin/fai/class_faiManagement.inc:850 +msgid "template" +msgstr "Vorlage" + +#: admin/fai/class_faiManagement.inc:851 +msgid "package list" +msgstr "Paketliste" + +#: admin/fai/class_faiManagement.inc:869 admin/fai/class_faiManagement.inc:886 +#, php-format +msgid "You have no permission to create a new %s!" +msgstr "" +"Sie besitzen keine Berechtigung, um ein Objekt des Typs '%s' zu erstellen!" + +#: admin/fai/class_faiManagement.inc:886 +msgid "profile" +msgstr "Profil" + +#: admin/fai/class_faiManagement.inc:1286 +msgid "" +"The selected release is not available anymore. All triggered actions are " +"skipped." +msgstr "" +"Die ausgewählte Release ist nicht mehr verfügbar. Alle ausgelösten " +"Ereignisse werden ignoriert." + +#: admin/fai/class_faiManagement.inc:1411 +msgid "FAI releases" +msgstr "FAI Releases" + +#: admin/fai/class_faiManagement.inc:1412 +msgid "FAI release management" +msgstr "FAI Release-Verwaltung" + +#: admin/fai/class_faiManagement.inc:1417 +msgid "FAI" +msgstr "FAI" + +#: admin/fai/class_faiVariableEntry.inc:94 +msgid "Content" +msgstr "Inhalt" + +#: admin/fai/class_faiVariableEntry.inc:129 +msgid "Variable entry" +msgstr "Variablen-Eintrag" + +#: admin/fai/class_faiVariableEntry.inc:130 +msgid "FAI variable entry " +msgstr "FAI-Variablen-Eintrag" + +#: admin/fai/class_faiVariableEntry.inc:139 admin/fai/faiVariableEntry.tpl:38 +msgid "Variable content" +msgstr "Variablen-Inhalt" + +#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288 +#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346 +msgid "edit" +msgstr "Bearbeiten" + +#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348 +msgid "delete" +msgstr "Entfernen" + +#: admin/fai/class_faiTemplate.inc:536 +msgid "Template" +msgstr "Vorlage" + +#: admin/fai/class_faiTemplate.inc:537 +msgid "FAI template" +msgstr "FAI-Vorlage" + +#: admin/fai/class_faiTemplate.inc:544 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiPackage.inc:584 admin/fai/class_faiPackage.inc:587 +msgid "Readonly" +msgstr "Nur Lesen" + +#: admin/fai/class_faiPackageEntry.inc:38 +msgid "Please enter your search string here" +msgstr "Bitte geben Sie hier einen Such-Text ein." + +#: admin/fai/class_faiPackageEntry.inc:103 +msgid "" +"This list displays all assigned package names for this repository settings." +msgstr "Diese Liste zeigt alle diesem Repository zugeordneten Paket-Namen." + +#: admin/fai/paste_generic.tpl:1 +msgid "FAI settings" +msgstr "FAI-Einstellungen" + +#: admin/fai/paste_generic.tpl:5 admin/fai/class_faiProfileEntry.inc:174 +#: admin/fai/askClassName.tpl:32 admin/fai/askClassName.tpl:54 +#: admin/fai/class_divListFai.inc:53 +msgid "Class name" +msgstr "Klassen-Name" + +#: admin/fai/remove_branch.tpl:6 +msgid "" +"This includes all account data, system access, etc. for this branch. Please " +"double check if your really want to do this since there is no way for GOsa " +"to get your data back." +msgstr "" +"Dies umfasst alle Kontodaten, Zugriffsregeln etc. für diesen Teilbaum. Bitte " +"prüfen Sie genau, ob Sie dies wünschen, da es keine Möglichkeit gibt, diese " +"Aktion rückgängig zu machen." + +#: admin/fai/remove_branch.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Wenn Sie sicher sind, drücken Sie 'Entfernen' um fortzufahren oder " +"'Abbrechen' zum Abbruch." + +#: admin/fai/faiProfileEntry.tpl:6 +msgid "List of FAI objects (Fully Automatic Installation)" +msgstr "Liste von FAI-Objekten" + +#: admin/fai/faiProfileEntry.tpl:26 +msgid "" +"This menu allows you to select FAI class names and to add them to the " +"currently edited profile." +msgstr "" +"Dieses Menü erlaubt es Ihnen, FAI Klassen-Namen auszuwählen und zum " +"gegenwärtig bearbeiteten Profil hinzuzufügen." + +#: admin/fai/faiProfileEntry.tpl:39 +msgid "Show only classes with templates" +msgstr "Zeige nur Klassen mit Vorlagen" + +#: admin/fai/faiProfileEntry.tpl:41 +msgid "Show only classes with scripts" +msgstr "Zeige nur Klassen mit Skripten" + +#: admin/fai/faiProfileEntry.tpl:43 +msgid "Show only classes with hooks" +msgstr "Zeige nur Klassen mit Hooks" + +#: admin/fai/faiProfileEntry.tpl:45 +msgid "Show only classes with variables" +msgstr "Zeige nur Klassen mit Variablen" + +#: admin/fai/faiProfileEntry.tpl:47 +msgid "Show only classes with packages" +msgstr "Zeige nur Klassen mit Paketen" + +#: admin/fai/faiProfileEntry.tpl:49 +msgid "Show only classes with partitions" +msgstr "Zeige nur Klassen mit Partitionen" + +#: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_askClassName.inc:85 admin/fai/class_askClassName.inc:86 +msgid "Create new FAI object" +msgstr "Erstelle neues FAI-Objekt" + +#: admin/fai/class_faiGroupHandle.inc:102 admin/fai/class_divListFai.inc:164 +#: admin/fai/class_divListFai.inc:210 admin/fai/class_faiSummaryTab.inc:49 +msgid "Package list" +msgstr "Paketliste" + +#: admin/fai/class_faiGroupHandle.inc:104 admin/fai/class_divListFai.inc:156 +#: admin/fai/class_divListFai.inc:212 admin/fai/class_faiSummaryTab.inc:44 +msgid "Scripts" +msgstr "Skripte" + +#: admin/fai/class_faiGroupHandle.inc:106 admin/fai/class_divListFai.inc:160 +#: admin/fai/class_divListFai.inc:214 admin/fai/class_faiSummaryTab.inc:46 +msgid "Variables" +msgstr "Variablen" + +#: admin/fai/class_faiGroupHandle.inc:108 admin/fai/class_divListFai.inc:158 +#: admin/fai/class_divListFai.inc:216 admin/fai/class_faiSummaryTab.inc:45 +msgid "Hooks" +msgstr "Hooks" + +#: admin/fai/class_faiGroupHandle.inc:112 admin/fai/class_divListFai.inc:220 +#: admin/fai/class_faiSummaryTab.inc:47 +msgid "Templates" +msgstr "Vorlagen" + +#: admin/fai/class_faiGroupHandle.inc:114 admin/fai/class_divListFai.inc:76 +#: admin/fai/class_divListFai.inc:222 +msgid "OPSI netboot product" +msgstr "OPSI Netboot Produkt" + +#: admin/fai/class_faiGroupHandle.inc:116 +msgid "OPSI local product" +msgstr "OPSI Local-Produkt" + +#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68 +#: admin/fai/class_faiPackage.inc:573 +msgid "Package" +msgstr "Paket" + +#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316 +msgid "Sort direction" +msgstr "Sortierrichtung" + +#: admin/fai/class_faiScript.inc:332 +msgid "Action" +msgstr "Aktion" + +#: admin/fai/class_faiScript.inc:638 admin/fai/class_faiHookEntry.inc:199 +msgid "FAI script" +msgstr "FAI-Skript" + +#: admin/fai/class_FAI.inc:259 admin/fai/class_FAI.inc:662 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/fai/class_FAI.inc:535 +#, php-format +msgid "Error, following objects should be equal '%s' and '%s'" +msgstr "Fehler, die folgenden Objekte sollten gleich sein: '%s' und '%s'" + +#: admin/fai/class_FAI.inc:874 +#, php-format +msgid "Creating group application release for %s" +msgstr "Erstelle Gruppenanwendungsrelease für %s" + +#: admin/fai/class_FAI.inc:943 admin/fai/class_FAI.inc:965 +#: admin/fai/class_FAI.inc:1005 admin/fai/class_FAI.inc:1010 +#: admin/fai/class_FAI.inc:1048 +msgid "Object" +msgstr "Objekt" + +#: admin/fai/class_FAI.inc:944 +#, php-format +msgid "Adding missing group application release container %s." +msgstr "Füge fehlenden Gruppenanwendungsrelease-Container %s hinzu." + +#: admin/fai/class_FAI.inc:966 +#, php-format +msgid "Adding group application release container %s." +msgstr "Füge Gruppenanwendungsrelease-Container %s hinzu." + +#: admin/fai/class_FAI.inc:1006 +#, php-format +msgid "Could not create menu entry %s. (Already exists)." +msgstr "Kann den Menüeintrag %s nicht anlegen (existiert bereits)." + +#: admin/fai/class_FAI.inc:1011 +#, php-format +msgid "Created group application menu entry for %s." +msgstr "Menüeintrag für die Gruppenanwendung %s erstellt." + +#: admin/fai/class_FAI.inc:1042 +#, php-format +msgid "Creating copy of %s" +msgstr "Erstelle Kopie von %s" + +#: admin/fai/class_FAI.inc:1045 +msgid "Processing" +msgstr "Verarbeite" + +#: admin/fai/class_FAI.inc:1063 +msgid "Could not create new release, the destination dn is already in use." +msgstr "" +"Kann neues Release nicht erstellen, die Ziel-DN wird bereits verwendet." + +#: admin/fai/class_FAI.inc:1076 +msgid "Error while fetching source dn - aborted!" +msgstr "Fehler beim Abrufen des Quell-DN, der Vorgang wurde abgebrochen!" + +#: admin/fai/class_FAI.inc:1158 +#, php-format +msgid "" +"Release creation failed due to ldap errors. Additional informations '%s'." +msgstr "Das Erstellen des Releases ist fehlgeschlagen: '%s'." + +#: admin/fai/class_faiScriptEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +msgid "file is empty" +msgstr "Datei ist leer" + +#: admin/fai/class_faiScriptEntry.inc:181 +#: admin/fai/class_faiScriptEntry.inc:191 +msgid "Script entry" +msgstr "Skript-Eintrag" + +#: admin/fai/class_faiScriptEntry.inc:182 +msgid "FAI script entry" +msgstr "FAI Skript-Eintrag" + +#: admin/fai/class_faiScriptEntry.inc:192 +msgid "Script Priority" +msgstr "Skript-Priorität" + +#: admin/fai/faiSummary.tpl:4 +msgid "FAI object tree" +msgstr "FAI-Objekthierarchie" + +#: admin/fai/faiSummary.tpl:11 +msgid "Reload class and release configuration from parent object." +msgstr "" +"Klasse aktualisieren und Konfiguration vom übergeordneten Objekt freigeben." + +#: admin/fai/faiSummary.tpl:22 +msgid "You are not allowed to view the fai summary." +msgstr "Sie haben keine Berechtigung, die FAI Zusammenfassung einzusehen." + +#: admin/fai/faiTemplate.tpl:34 +msgid "List of template files" +msgstr "Liste der Vorlagen" + +#: admin/fai/class_faiPartitionTable.inc:301 +#: admin/fai/class_faiPartitionTable.inc:307 +#, php-format +msgid "%s partition" +msgstr "%s Partition" + +#: admin/fai/class_faiPartitionTable.inc:303 +#: admin/fai/class_faiPartitionTable.inc:309 +#, php-format +msgid "%s partition(s)" +msgstr "%s Partition(en)" + +#: admin/fai/class_faiPartitionTable.inc:542 +msgid "FAI partition table" +msgstr "FAI-Partitionstabelle" + +#: admin/fai/branch_selector.tpl:2 +#: admin/systems/services/repository/class_servRepository.inc:358 +msgid "Releases" +msgstr "Releases" + +#: admin/fai/branch_selector.tpl:8 +msgid "Current release" +msgstr "Momentanes Release" + +#: admin/fai/branch_selector.tpl:20 admin/fai/branch_selector.tpl:26 +msgid "Create release" +msgstr "Release erzeugen" + +#: admin/fai/branch_selector.tpl:23 admin/fai/branch_selector.tpl:29 +msgid "Create read-only release" +msgstr "Unveränderbares Release erzeugen" + +#: admin/fai/branch_selector.tpl:28 +msgid "Freeze" +msgstr "Freeze" + +#: admin/fai/branch_selector.tpl:35 +msgid "Delete current release" +msgstr "Momentanes Release entfernen" + +#: admin/fai/faiVariableEntry.tpl:33 +msgid "Variable attributes" +msgstr "Variablen-Attribute" + +#: admin/fai/class_faiHookEntry.inc:188 +msgid "Hook entry" +msgstr "Hook-Eintrag" + +#: admin/fai/class_faiHookEntry.inc:189 +msgid "FAI hook entry" +msgstr "FAI-Hook-Eintrag" + +#: admin/fai/faiNewBranch.tpl:5 +msgid "" +"You are now going to create a branch or locked branch. This action clones " +"the existing release to another release name. Branches can be modified as " +"usual. FAI classes of locked branches cannot be modified, just additional " +"classes are possible. Branch names should be alphanumeric, excluding the " +"reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' " +"and 'fai'." +msgstr "" +"Sie sind dabei, einen neuen (evtl. gesperrten) Teilbaum zu erstellen. Diese " +"Aktion klont das existierende Release auf einen anderen Releasenamen. " +"Teilbäume können wie gewohnt bearbeitet werden. FAI-Klassen von gesperrten " +"Teilbäumen können nicht bearbeitet werden, lediglich das Hinzufügen von " +"Klassen ist möglich.Teilbaumnamen sollten alphanumerisch sein, reservierte " +"Namen sind 'scripts', 'hooks', 'partitions', 'variables', 'templates' und " +"'fai'. Diese können nicht verwendet werden." + +#: admin/fai/faiNewBranch.tpl:7 +msgid "" +"Branches are created as subreleases of the currently selected branch. " +"Creating a new branch named 1.0.2 in SARGE for example, will result in a new " +"release called SARGE/1.0.2." +msgstr "" +"Teilbäume werden als Subrelease des momentan gewählten Teilbaums erstellt. " +"Wenn Sie bspw. einen neuen Teilbaum namens 1.0.2 in SARGE erstellen, wird " +"dieses Release SARGE/1.0.2 heissen." + +#: admin/fai/faiNewBranch.tpl:13 +msgid "Please enter a name for the branch" +msgstr "Bitte geben Sie einen Namen für den Teilbaum ein" + +#: admin/fai/faiNewBranch.tpl:34 +msgid "Processing the requested operation" +msgstr "Gewünschte Operation wird durchgeführt" + +#: admin/fai/faiNewBranch.tpl:35 +msgid "" +"As soon as the copy operation has finished, you can scroll down to end of " +"the page and press the 'Continue' button to continue with the fai management " +"dialog." +msgstr "" +"Sobald der Vorgang abgeschlossen wurde, können Sie zum unteren Ende der " +"Seite blättern und auf den 'Weiter'-Knopf drücken, um zum FAI-Verwaltungs-" +"Dialog zu gelangen." + +#: admin/fai/faiNewBranch.tpl:41 +msgid "" +"Your browser doesn't support iframes, please use this link to perform the " +"requested operation." +msgstr "" +"Ihr Browser unterstützt keine IFrames - bitte wählen Sie diesen Link, um die " +"gewünschte Operation durchzuführen." + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Perform requested operation." +msgstr "Gewünschte Operation durchführen." + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Initiate operation" +msgstr "Operation initiieren" + +#: admin/fai/askClassName.tpl:6 +msgid "" +"Adding a new class to the FAI management, requires a class name. You have to " +"specify a unique class name for unique types of FAI classes, while you can " +"use the same class name for different types of FAI classes. In the laste " +"case, FAI will automatically enclose all these different class types to one " +"unique class name." +msgstr "" +"Es wird ein Klassen-Name benötigt, um der FAI-Verwaltung eine neue Klasse " +"hinzuzufügen. Dieser Klassen-Name muss lediglich für jeden Typ der FAI-" +"Klasse eindeutig sein, d.h. Sie können den gleichen Klassen-Namen für " +"verschiedene Typen von FAI-Klassen verwenden. In diesem Fall wird FAI " +"automatisch all diese verschiedenen Typen mit einem eindeutigen Namen " +"versehen." + +#: admin/fai/askClassName.tpl:12 +msgid "" +"Please use one of the following methods to choose the name for the new FAI " +"class." +msgstr "" +"Bitte verwenden Sie eine der folgenden Methoden um den Namen der neuen FAI-" +"Klasse zu bestimmen." + +#: admin/fai/askClassName.tpl:26 +msgid "Enter FAI class name manually" +msgstr "FAI-Klassen-Name manuell eingeben" + +#: admin/fai/askClassName.tpl:48 +msgid "Choose FAI class name from a list of existing classes" +msgstr "Verwenden Sie den Namen aus einer Liste bestehender Klassen." + +#: admin/fai/askClassName.tpl:54 +msgid "Choose class name" +msgstr "Wählen Sie den Klassen-Namen" + +#: admin/fai/askClassName.tpl:70 admin/fai/askClassName.tpl:77 +msgid "Use" +msgstr "Benutzen" + +#: admin/fai/askClassName.tpl:74 +msgid "A new class name." +msgstr "Ein neuer Klassen-Name." + +#: admin/fai/class_faiPackageConfiguration.inc:68 +#, php-format +msgid "Debconf information for package '%s'" +msgstr "Debconf-Information für Paket '%s'" + +#: admin/fai/class_faiVariable.inc:389 admin/fai/class_divListFai.inc:60 +#: admin/fai/class_divListFai.inc:66 +msgid "Variable" +msgstr "Variable" + +#: admin/fai/class_faiVariable.inc:390 +msgid "FAI variable" +msgstr "FAI-Variable" + +#: admin/fai/class_divListFai.inc:32 +msgid "List of classes" +msgstr "Liste von Klassen" + +#: admin/fai/class_divListFai.inc:33 +msgid "List of deployment classes and products" +msgstr "Liste von zu verteilenden Klassen und Produkten" + +#: admin/fai/class_divListFai.inc:48 +msgid "Select all" +msgstr "Alles auswählen" + +#: admin/fai/class_divListFai.inc:54 +msgid "Class types" +msgstr "Klassen-Typen" + +#: admin/fai/class_divListFai.inc:55 admin/fai/class_divListFai.inc:138 +msgid "Actions" +msgstr "Aktionen" + +#: admin/fai/class_divListFai.inc:57 admin/fai/class_divListFai.inc:59 +#: admin/fai/class_divListFai.inc:61 admin/fai/class_divListFai.inc:63 +#: admin/fai/class_divListFai.inc:65 admin/fai/class_divListFai.inc:67 +#: admin/fai/class_divListFai.inc:69 admin/fai/class_divListFai.inc:75 +#: admin/fai/class_divListFai.inc:77 +#, php-format +msgid "Display objects of type '%s'." +msgstr "Zeige Objekte des Typs '%s'." + +#: admin/fai/class_divListFai.inc:58 +msgid "Show profiles" +msgstr "Zeige Profile" + +#: admin/fai/class_divListFai.inc:60 +msgid "Show templates" +msgstr "Zeige Vorlagen" + +#: admin/fai/class_divListFai.inc:62 +msgid "Show scripts" +msgstr "Zeige Skripte" + +#: admin/fai/class_divListFai.inc:64 +msgid "Show hooks" +msgstr "Zeige Hooks" + +#: admin/fai/class_divListFai.inc:66 +msgid "Show variables" +msgstr "Zeige Variablen" + +#: admin/fai/class_divListFai.inc:68 +msgid "Show packages" +msgstr "Zeige Pakete" + +#: admin/fai/class_divListFai.inc:70 +msgid "Partition" +msgstr "Partition" + +#: admin/fai/class_divListFai.inc:70 +msgid "Show partitions" +msgstr "Zeige Partitionen" + +#: admin/fai/class_divListFai.inc:76 +msgid "Show netboot products" +msgstr "Zeige Netboot-Produkte" + +#: admin/fai/class_divListFai.inc:78 admin/fai/class_divListFai.inc:224 +msgid "OPSI localboot product" +msgstr "OPSI Localboot-Produkt" + +#: admin/fai/class_divListFai.inc:78 +msgid "Show localboot products" +msgstr "Zeige Localboot-Produkte" + +#: admin/fai/class_divListFai.inc:86 +msgid "Display users matching" +msgstr "Zeige die Benutzer, auf die Folgendes passt" + +#: admin/fai/class_divListFai.inc:140 +msgid "Create" +msgstr "Anlegen" + +#: admin/fai/class_divListFai.inc:155 +msgid "PT" +msgstr "PT" + +#: admin/fai/class_divListFai.inc:157 +msgid "S" +msgstr "S" + +#: admin/fai/class_divListFai.inc:159 +msgid "H" +msgstr "H" + +#: admin/fai/class_divListFai.inc:161 +msgid "V" +msgstr "V" + +#: admin/fai/class_divListFai.inc:162 +msgid "Templates " +msgstr "Vorlagen" + +#: admin/fai/class_divListFai.inc:163 +msgid "I" +msgstr "I" + +#: admin/fai/class_divListFai.inc:165 +msgid "PK" +msgstr "PK" + +#: admin/fai/class_divListFai.inc:313 admin/fai/class_divListFai.inc:314 +#: admin/fai/class_divListFai.inc:315 admin/fai/class_divListFai.inc:316 +#: admin/fai/class_divListFai.inc:317 admin/fai/class_divListFai.inc:318 +#: admin/fai/class_divListFai.inc:319 admin/fai/class_divListFai.inc:320 +#: admin/fai/class_divListFai.inc:321 admin/fai/class_divListFai.inc:322 +#, php-format +msgid "Number of listed '%s'" +msgstr "Anzahl der angezeigten '%s'" + +#: admin/fai/class_divListFai.inc:313 +msgid "profiles" +msgstr "Profile" + +#: admin/fai/class_divListFai.inc:314 +msgid "partitions" +msgstr "Partitionen" + +#: admin/fai/class_divListFai.inc:315 +msgid "scripts" +msgstr "Skripte" + +#: admin/fai/class_divListFai.inc:316 +msgid "hooks" +msgstr "Hooks" + +#: admin/fai/class_divListFai.inc:317 +msgid "variables" +msgstr "Variablen" + +#: admin/fai/class_divListFai.inc:318 +msgid "templates" +msgstr "Vorlagen" + +#: admin/fai/class_divListFai.inc:319 +msgid "packages" +msgstr "Pakete" + +#: admin/fai/class_divListFai.inc:320 +msgid "departments" +msgstr "Abteilungen" + +#: admin/fai/class_divListFai.inc:321 +msgid "netboot products" +msgstr "Netboot-Produkte" + +#: admin/fai/class_divListFai.inc:322 +msgid "localboot products" +msgstr "Localboot-Produkte" + +#: admin/fai/class_faiPackage.inc:329 admin/fai/class_faiPackage.inc:330 +msgid "Configured" +msgstr "Konfiguriert" + +#: admin/fai/class_faiPackage.inc:336 admin/fai/class_faiPackage.inc:337 +msgid "Package marked for removal" +msgstr "Paket zum Entfernen vorgemerkt" + +#: admin/fai/class_faiPackage.inc:353 +msgid "Mark package for removal" +msgstr "Paket zum Entfernen vormerken" + +#: admin/fai/class_faiPackage.inc:359 +msgid "Configure this package" +msgstr "Dieses Paket konfigurieren" + +#: admin/fai/class_faiPackage.inc:363 +msgid "Remove this package" +msgstr "Dieses Paket entfernen" + +#: admin/fai/class_faiPackage.inc:442 +msgid "Please select a least one package!" +msgstr "Bitte wählen Sie mindestens ein Paket!" + +#: admin/fai/class_faiPackage.inc:446 +msgid "" +"Please choose a valid release/section combination for your repository setup!" +msgstr "" +"Bitte wählen Sie eine gültige Kombination aus Release und Sektion für Ihr " +"gewünschtes Repository!" + +#: admin/fai/class_faiPackage.inc:574 +msgid "FAI Package list" +msgstr "FAI-Paketliste" + +#: admin/fai/class_faiPackage.inc:583 +msgid "Packages" +msgstr "Pakete" + +#: admin/fai/class_faiPackage.inc:585 +msgid "Install Method" +msgstr "Installations-Methode" + +#: admin/fai/class_faiPackage.inc:586 +msgid "Package configuration" +msgstr "Paket-Konfiguration" + +#: admin/fai/class_faiTemplateEntry.inc:90 +msgid "no file uploaded yet" +msgstr "Es wurden noch keine Datei hochgeladen." + +#: admin/fai/class_faiTemplateEntry.inc:96 +#, php-format +msgid "exists in database (size: %s bytes)" +msgstr "existiert in der Datenbank (Größe: %s Bytes)" + +#: admin/fai/class_faiTemplateEntry.inc:265 +msgid "Template entry" +msgstr "Vorlagen-Eintrag" + +#: admin/fai/class_faiTemplateEntry.inc:266 +msgid "FAI template entry" +msgstr "FAI-Vorlagen-Eintrag" + +#: admin/fai/class_faiTemplateEntry.inc:275 +msgid "Template file" +msgstr "Vorlagen-Datei" + +#: admin/fai/class_faiTemplateEntry.inc:276 +msgid "Template path" +msgstr "Vorlagen-Pfad" + +#: admin/fai/class_faiTemplateEntry.inc:277 +msgid "File owner" +msgstr "Datei-Besitzer" + +#: admin/fai/class_faiTemplateEntry.inc:278 +msgid "File permissions" +msgstr "Datei-Berechtigungen" + +#: admin/fai/class_faiSummaryTab.inc:50 +msgid "Profiles" +msgstr "Profile" + +#: admin/fai/class_faiSummaryTab.inc:89 +msgid "Unknown FAI information source!" +msgstr "Unbekannte FAI-Informationsquelle!" + +#: admin/fai/class_faiSummaryTab.inc:178 +#: admin/systems/services/repository/class_servRepository.inc:93 +msgid "You can't use this plugin until FAI is activated." +msgstr "Sie können diese Erweiterung erst verwenden, wenn FAI aktiviert wurde." + +#: admin/fai/class_faiSummaryTab.inc:220 +msgid "This object has no FAI classes assigned." +msgstr "Diesem Objekt sind keine FAI-Klassen zugeordnet." + +#: admin/fai/class_faiSummaryTab.inc:233 +msgid "Open" +msgstr "Aufklappen" + +#: admin/fai/class_faiSummaryTab.inc:239 +msgid "Close" +msgstr "Schliessen" + +#: admin/fai/class_faiSummaryTab.inc:342 +msgid "No." +msgstr "Nr." + +#: admin/fai/class_faiSummaryTab.inc:344 +msgid "FS options" +msgstr "Dateisystem-Optionen" + +#: admin/fai/faiPartitionTable.tpl:38 +msgid "Discs" +msgstr "Festplatten" + +#: admin/fai/faiPartitionTable.tpl:44 +msgid "Choose a disk to delete or edit" +msgstr "Wählen Sie eine Festplatte zum Entfernen oder Bearbeiten" + +#: admin/fai/class_debconfTemplate.inc:207 +msgid "This package has no debconf options." +msgstr "Dieses Paket verfügt über keine debconf-Optionen." + +#: admin/systems/services/repository/class_divListRepositories.inc:19 +msgid "List of configured repositories" +msgstr "Liste der konfigurierten Repositorien" + +#: admin/systems/services/repository/class_divListRepositories.inc:20 +msgid "This menu allows you to create, delete and edit repository settings." +msgstr "" +"Dieses Menü erlaubt das Erstellen, Löschen und Bearbeiten von Repositorien-" +"Einstellungen." + +#: admin/systems/services/repository/class_divListRepositories.inc:24 +#: admin/systems/services/repository/class_divListRepositories.inc:64 +#: admin/systems/services/repository/servRepositorySetup.tpl:39 +#: admin/systems/services/repository/class_servRepository.inc:360 +msgid "Sections" +msgstr "Sektionen" + +#: admin/systems/services/repository/class_divListRepositories.inc:25 +msgid "Options" +msgstr "Optionen" + +#: admin/systems/services/repository/class_divListRepositories.inc:33 +msgid "Add repository" +msgstr "Repository hinzufügen" + +#: admin/systems/services/repository/servRepositorySetup.tpl:8 +#: admin/systems/services/repository/class_servRepository.inc:357 +msgid "Parent server" +msgstr "Quell-Server" + +#: admin/systems/services/repository/servRepositorySetup.tpl:28 +#: admin/systems/services/repository/class_servRepository.inc:359 +#: admin/systems/services/repository/class_servRepositorySetup.inc:157 +msgid "URL" +msgstr "URL" + +#: admin/systems/services/repository/class_servRepository.inc:26 +#: admin/systems/services/repository/class_servRepository.inc:308 +#: admin/systems/services/repository/class_servRepository.inc:344 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Repository service" +msgstr "Repositorien-Dienst" + +#: admin/systems/services/repository/class_servRepository.inc:142 +msgid "FAI release" +msgstr "FAI Release" + +#: admin/systems/services/repository/class_servRepository.inc:344 +msgid "Services" +msgstr "Dienste" diff --git a/trunk/gosa-plugins/fai/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/fai/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..70aa203e3 --- /dev/null +++ b/trunk/gosa-plugins/fai/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,1840 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/fai/faiTemplateEntry.tpl:3 admin/fai/faiVariable.tpl:4 +#: admin/fai/faiProfile.tpl:4 admin/fai/faiProfile.tpl:36 +#: admin/fai/faiScriptEntry.tpl:5 admin/fai/faiScript.tpl:4 +#: admin/fai/faiPackage.tpl:4 admin/fai/faiHook.tpl:4 +#: admin/fai/faiPartitionTableEntry.tpl:2 admin/fai/faiHookEntry.tpl:5 +#: admin/fai/faiTemplate.tpl:4 admin/fai/faiVariableEntry.tpl:5 +#: admin/fai/faiPartitionTable.tpl:4 +msgid "Generic" +msgstr "Genérico" + +#: admin/fai/faiTemplateEntry.tpl:10 admin/fai/class_faiTemplateEntry.inc:220 +#, fuzzy +msgid "File name" +msgstr "Nombre del Rol" + +#: admin/fai/faiTemplateEntry.tpl:21 admin/fai/class_faiTemplateEntry.inc:215 +msgid "Destination path" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:33 +#: admin/fai/class_faiPartitionTableEntry.inc:470 admin/fai/faiVariable.tpl:21 +#: admin/fai/class_faiHook.inc:562 admin/fai/faiProfile.tpl:21 +#: admin/fai/faiScriptEntry.tpl:19 admin/fai/faiScript.tpl:21 +#: admin/fai/faiPackage.tpl:21 admin/fai/faiHook.tpl:21 +#: admin/fai/class_faiProfile.inc:479 admin/fai/faiPartitionTableEntry.tpl:13 +#: admin/fai/faiHookEntry.tpl:19 admin/fai/class_faiVariableEntry.inc:138 +#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646 +#: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiTemplate.tpl:21 +#: admin/fai/class_faiPartitionTable.inc:550 admin/fai/faiVariableEntry.tpl:19 +#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398 +#: admin/fai/class_faiPackage.inc:582 admin/fai/class_faiTemplateEntry.inc:274 +#: admin/fai/faiPartitionTable.tpl:21 +msgid "Description" +msgstr "Descripción" + +#: admin/fai/faiTemplateEntry.tpl:45 +msgid "Template attributes" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:53 admin/fai/class_faiTemplateEntry.inc:211 +msgid "File" +msgstr "Archivo" + +#: admin/fai/faiTemplateEntry.tpl:60 +msgid "Save template" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:69 +msgid "Upload" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:76 +#, fuzzy +msgid "Full path" +msgstr "Ruta a las fuentes tipográficas" + +#: admin/fai/faiTemplateEntry.tpl:92 +msgid "Owner" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:103 admin/fai/faiTemplateEntry.tpl:145 +#: admin/fai/class_faiTemplateEntry.inc:230 +#: admin/fai/class_faiTemplateEntry.inc:233 +#: admin/fai/class_faiTemplateEntry.inc:235 +msgid "Group" +msgstr "Grupo" + +#: admin/fai/faiTemplateEntry.tpl:114 +msgid "Access" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:120 +msgid "Class" +msgstr "Clase" + +#: admin/fai/faiTemplateEntry.tpl:121 +msgid "Read" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:122 +msgid "Write" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:123 +msgid "Execute" +msgstr "Ejecute" + +#: admin/fai/faiTemplateEntry.tpl:125 +msgid "Special" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:128 admin/fai/class_faiTemplateEntry.inc:224 +#: admin/fai/class_faiTemplateEntry.inc:226 +msgid "User" +msgstr "Usuario" + +#: admin/fai/faiTemplateEntry.tpl:142 +msgid "SUID" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:159 +msgid "SGID" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:162 +msgid "Others" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:176 +msgid "sticky" +msgstr "" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/class_faiHook.inc:239 admin/fai/tabsPartition.inc:34 +#: admin/fai/class_faiProfile.inc:262 admin/fai/class_faiManagement.inc:238 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiManagement.inc:899 admin/fai/class_faiManagement.inc:943 +#: admin/fai/class_faiManagement.inc:967 +#: admin/fai/class_faiManagement.inc:1216 admin/fai/class_faiTemplate.inc:212 +#: admin/fai/tabsVariable.inc:33 admin/fai/tabsPackage.inc:33 +#: admin/fai/class_faiScript.inc:229 admin/fai/class_FAI.inc:535 +#: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62 +#: admin/fai/tabsHook.inc:32 admin/fai/class_faiPartitionTable.inc:180 +#: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:272 +#: admin/fai/class_faiSummaryTab.inc:89 admin/fai/tabsProfile.inc:33 +#: admin/systems/services/repository/class_servRepository.inc:142 +#: admin/systems/services/repository/class_servRepository.inc:177 +#: admin/systems/services/repository/class_servRepository.inc:182 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Error" +msgstr "Error" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/tabsPartition.inc:34 admin/fai/tabsVariable.inc:33 +#: admin/fai/tabsPackage.inc:33 admin/fai/tabsHook.inc:32 +#: admin/fai/tabsProfile.inc:33 +#, fuzzy +msgid "Moving the tree failed. Destination tree is subtree of source tree." +msgstr "" +"Ha fallado al mover el árbol. El árbol destino es subárbol del elegido." + +#: admin/fai/remove.tpl:2 admin/fai/class_faiManagement.inc:513 +#: admin/fai/class_faiManagement.inc:1286 admin/fai/remove_branch.tpl:2 +msgid "Warning" +msgstr "Aviso" + +#: admin/fai/remove.tpl:7 +msgid "" +"This includes 'all' object information. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/fai/remove.tpl:11 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"La mejor opción antes de ejecutar esta acción es haber grabado el contenido " +"actual de su árbol LDAP en un fichero. Entonces - Y solo entonces - presione " +"'Eliminar' para continuar o 'Cancelar' para abortar." + +#: admin/fai/faiGroupHandle.tpl:3 +msgid "Please select the objects you want to remove:" +msgstr "" + +#: admin/fai/faiGroupHandle.tpl:22 admin/fai/class_divListFai.inc:145 +msgid "Freezed" +msgstr "" + +#: admin/fai/faiGroupHandle.tpl:30 +#, fuzzy +msgid "Select the object you want to edit:" +msgstr "Seleccione para ver los servidores" + +#: admin/fai/faiGroupHandle.tpl:53 +#, fuzzy +msgid "Select the object you want to copy:" +msgstr "Seleccione para ver los servidores" + +#: admin/fai/faiGroupHandle.tpl:76 +#, fuzzy +msgid "Select the object you want to cut:" +msgstr "Seleccione para ver los servidores" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +#, fuzzy +msgid "primary" +msgstr "Sumario" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "logical" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:183 +#: admin/fai/class_faiSummaryTab.inc:348 +msgid "Type" +msgstr "Tipo" + +#: admin/fai/class_faiPartitionTableEntry.inc:184 +msgid "FS type" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:185 +#: admin/fai/class_faiPartitionTableEntry.inc:474 +#: admin/fai/class_faiSummaryTab.inc:347 +msgid "Mount point" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:186 +#: admin/fai/class_faiSummaryTab.inc:346 +msgid "Size in MB" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:187 +#: admin/fai/class_faiPartitionTableEntry.inc:476 +#: admin/fai/class_faiSummaryTab.inc:345 +msgid "Mount options" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:188 +msgid "FS option" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:189 +msgid "Preserve" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:282 +msgid "False" +msgstr "Falso" + +#: admin/fai/class_faiPartitionTableEntry.inc:284 +msgid "True" +msgstr "Verdadero" + +#: admin/fai/class_faiPartitionTableEntry.inc:288 +#: admin/fai/class_faiPartitionTableEntry.inc:290 +#: admin/fai/class_divListFai.inc:178 +msgid "Remove" +msgstr "Eliminar" + +#: admin/fai/class_faiPartitionTableEntry.inc:371 +#: admin/fai/class_faiPartitionTableEntry.inc:374 +#: admin/fai/class_faiPartitionTableEntry.inc:469 admin/fai/faiVariable.tpl:9 +#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:561 +#: admin/fai/faiProfile.tpl:9 admin/fai/faiScriptEntry.tpl:9 +#: admin/fai/faiScript.tpl:9 admin/fai/faiPackage.tpl:9 +#: admin/fai/faiHook.tpl:9 admin/fai/class_faiProfile.inc:395 +#: admin/fai/class_faiProfile.inc:405 admin/fai/class_faiProfile.inc:478 +#: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiHookEntry.tpl:9 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiVariableEntry.inc:90 +#: admin/fai/class_faiVariableEntry.inc:99 +#: admin/fai/class_faiVariableEntry.inc:102 +#: admin/fai/class_faiVariableEntry.inc:137 +#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:544 +#: admin/fai/class_askClassName.inc:142 admin/fai/class_askClassName.inc:146 +#: admin/fai/class_askClassName.inc:150 admin/fai/class_faiScript.inc:327 +#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiScriptEntry.inc:137 +#: admin/fai/class_faiScriptEntry.inc:142 +#: admin/fai/class_faiScriptEntry.inc:145 +#: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiTemplate.tpl:9 +#: admin/fai/class_faiPartitionTable.inc:371 +#: admin/fai/class_faiPartitionTable.inc:549 admin/fai/faiVariableEntry.tpl:9 +#: admin/fai/class_faiHookEntry.inc:145 admin/fai/class_faiHookEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:153 admin/fai/class_faiHookEntry.inc:196 +#: admin/fai/class_faiVariable.inc:296 admin/fai/class_faiVariable.inc:397 +#: admin/fai/class_faiPackage.inc:456 admin/fai/class_faiPackage.inc:581 +#: admin/fai/class_faiTemplateEntry.inc:207 +#: admin/fai/class_faiTemplateEntry.inc:273 +#: admin/fai/class_faiSummaryTab.inc:343 admin/fai/faiPartitionTable.tpl:9 +#: admin/systems/services/repository/class_servRepository.inc:177 +msgid "Name" +msgstr "Nombre" + +#: admin/fai/class_faiPartitionTableEntry.inc:397 +#, php-format +msgid "please enter a unique mount point for partition %s" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:402 +#, php-format +msgid "partition %s mount point" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:407 +#, php-format +msgid "" +"File system type 'swap' is already used, change file system type for " +"partition %s." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:411 +msgid "Please use 'swap' as mount point, if 'swap' is used as fs-type." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:417 +#: admin/fai/class_faiPartitionTableEntry.inc:421 +#: admin/fai/class_faiPartitionTableEntry.inc:427 +#: admin/fai/class_faiPartitionTableEntry.inc:429 +#: admin/fai/class_faiPartitionTableEntry.inc:434 +#, fuzzy, php-format +msgid "partition %s size" +msgstr "Variable" + +#: admin/fai/class_faiPartitionTableEntry.inc:449 +msgid "" +"You have more than 3 primary partition table entries in your configuration, " +"please check your configuration twice." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:461 +msgid "Partition table entry" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:462 +msgid "FAI partition table entry" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:471 +msgid "Partition type" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:472 +msgid "Partition no." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:473 +msgid "File system type" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:475 +msgid "Partition size" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:477 +msgid "File system options" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:478 +msgid "Partition flags" +msgstr "" + +#: admin/fai/faiVariable.tpl:36 admin/fai/faiScript.tpl:38 +#: admin/fai/faiHook.tpl:38 admin/fai/class_faiProfileEntry.inc:175 +#: admin/fai/faiTemplate.tpl:33 admin/fai/faiPartitionTable.tpl:36 +msgid "Objects" +msgstr "" + +#: admin/fai/faiVariable.tpl:38 +msgid "List of assigned variables" +msgstr "" + +#: admin/fai/faiVariable.tpl:44 +msgid "Choose a variable to delete or edit" +msgstr "" + +#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312 +#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54 +msgid "Edit" +msgstr "Editar" + +#: admin/fai/class_faiHook.inc:316 +msgid "Delete" +msgstr "Eliminar" + +#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiTemplate.inc:300 +#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358 +#: admin/fai/class_faiScriptEntry.inc:88 admin/fai/class_faiHookEntry.inc:80 +msgid "Download" +msgstr "" + +#: admin/fai/class_faiHook.inc:553 admin/fai/class_divListFai.inc:64 +msgid "Hook" +msgstr "" + +#: admin/fai/class_faiHook.inc:554 +msgid "FAI hook" +msgstr "" + +#: admin/fai/class_faiHook.inc:561 admin/fai/class_faiPartitionTable.inc:549 +#: admin/fai/class_faiVariable.inc:397 +#, fuzzy +msgid "Read only" +msgstr "Recargar lista" + +#: admin/fai/faiProfile.tpl:36 admin/fai/class_faiProfile.inc:480 +msgid "FAI classes" +msgstr "Clases FAI" + +#: admin/fai/faiProfile.tpl:37 +msgid "Choose a priority" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:33 +msgid "Properties" +msgstr "Propiedades" + +#: admin/fai/faiScriptEntry.tpl:33 admin/fai/faiScriptEntry.tpl:54 +msgid "Script attributes" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:38 admin/fai/class_faiScript.inc:328 +msgid "Priority" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:43 +msgid "" +"Choose a priority. Low values result in an earlier, high values in a later " +"execution." +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:56 admin/fai/faiHookEntry.tpl:56 +#: admin/fai/class_faiScript.inc:637 admin/fai/class_faiScriptEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:158 admin/fai/class_divListFai.inc:62 +msgid "Script" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:75 admin/fai/faiHookEntry.tpl:75 +msgid "Import script" +msgstr "" + +#: admin/fai/faiScript.tpl:39 +msgid "List of scripts" +msgstr "" + +#: admin/fai/faiPackage.tpl:33 +#: admin/systems/services/repository/servRepositorySetup.tpl:1 +#: admin/systems/services/repository/class_servRepository.inc:343 +msgid "Repository" +msgstr "Repositorio" + +#: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25 +#: admin/fai/class_faiPackage.inc:587 +#: admin/systems/services/repository/class_divListRepositories.inc:23 +#: admin/systems/services/repository/servRepositorySetup.tpl:19 +#: admin/systems/services/repository/class_servRepositorySetup.inc:153 +msgid "Release" +msgstr "Versión" + +#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:584 +msgid "Section" +msgstr "Sección" + +#: admin/fai/faiPackage.tpl:53 +msgid "Install method" +msgstr "" + +#: admin/fai/faiPackage.tpl:57 +msgid "Please select the installation method" +msgstr "" + +#: admin/fai/faiPackage.tpl:71 +msgid "Used packages" +msgstr "" + +#: admin/fai/faiHook.tpl:39 +msgid "List of hook scripts" +msgstr "" + +#: admin/fai/class_faiProfile.inc:289 admin/fai/class_faiProfileEntry.inc:172 +msgid "This list displays all assigned class names for this profile." +msgstr "" + +#: admin/fai/class_faiProfile.inc:292 admin/fai/class_askClassName.inc:83 +#: admin/fai/class_faiProfileEntry.inc:138 +msgid "Hook bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:293 admin/fai/class_askClassName.inc:85 +#: admin/fai/class_faiProfileEntry.inc:139 +msgid "Template bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:294 admin/fai/class_askClassName.inc:81 +#: admin/fai/class_faiProfileEntry.inc:140 +msgid "Script bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:295 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_faiProfileEntry.inc:141 +msgid "Variable bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:296 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_faiProfileEntry.inc:142 +msgid "Package bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:297 admin/fai/class_askClassName.inc:79 +#: admin/fai/class_faiGroupHandle.inc:100 +#: admin/fai/class_faiProfileEntry.inc:143 +#: admin/fai/class_faiPartitionTable.inc:541 +#: admin/fai/class_divListFai.inc:154 admin/fai/class_divListFai.inc:208 +#: admin/fai/class_faiSummaryTab.inc:48 +msgid "Partition table" +msgstr "" + +#: admin/fai/class_faiProfile.inc:300 +msgid "Remove class from profile" +msgstr "" + +#: admin/fai/class_faiProfile.inc:303 +msgid "Up" +msgstr "Arriba" + +#: admin/fai/class_faiProfile.inc:304 +msgid "Down" +msgstr "Abajo" + +#: admin/fai/class_faiProfile.inc:391 +msgid "No class specified for this profile!" +msgstr "" + +#: admin/fai/class_faiProfile.inc:470 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_divListFai.inc:58 +#: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218 +msgid "Profile" +msgstr "" + +#: admin/fai/class_faiProfile.inc:471 +msgid "FAI profile" +msgstr "" + +#: admin/fai/faiPartitionTableEntry.tpl:2 +msgid "Device" +msgstr "" + +#: admin/fai/faiPartitionTableEntry.tpl:24 +msgid "Partition entries" +msgstr "" + +#: admin/fai/faiPartitionTableEntry.tpl:29 +#: admin/fai/faiPartitionTableEntry.tpl:31 +msgid "Add partition" +msgstr "" + +#: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54 +msgid "Hook attributes" +msgstr "" + +#: admin/fai/faiHookEntry.tpl:38 admin/fai/class_faiHookEntry.inc:198 +msgid "Task" +msgstr "" + +#: admin/fai/faiHookEntry.tpl:41 +msgid "Choose an existing FAI task" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:6 +msgid "List of available packages" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:20 admin/fai/faiProfileEntry.tpl:21 +msgid "Information" +msgstr "Información" + +#: admin/fai/faiPackageEntry.tpl:24 +msgid "" +"This menu allows you to select multiple packages to add them to the " +"currently edited package list." +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:30 admin/fai/faiProfileEntry.tpl:31 +msgid "Filters" +msgstr "Filtros" + +#: admin/fai/faiPackageEntry.tpl:40 admin/fai/faiProfileEntry.tpl:54 +#: admin/fai/faiProfileEntry.tpl:55 +msgid "Display objects matching" +msgstr "Mostrar objetos que coincidan" + +#: admin/fai/faiPackageEntry.tpl:44 admin/fai/faiProfileEntry.tpl:59 +#: admin/systems/services/repository/class_divListRepositories.inc:26 +msgid "Regular expression for matching object names" +msgstr "Expresiones regulares para buscar nombre de objetos" + +#: admin/fai/class_faiManagement.inc:25 admin/fai/main.inc:53 +#: admin/fai/main.inc:55 +msgid "Software deployment" +msgstr "" + +#: admin/fai/class_faiManagement.inc:26 +msgid "Manage software packages and deployment reciepes" +msgstr "" + +#: admin/fai/class_faiManagement.inc:338 admin/fai/class_faiManagement.inc:495 +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 admin/fai/class_faiManagement.inc:869 +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "Permission error" +msgstr "Permisos" + +#: admin/fai/class_faiManagement.inc:384 +#, fuzzy +msgid "Branch locked" +msgstr "Francés" + +#: admin/fai/class_faiManagement.inc:384 +#, php-format +msgid "The following entries are locked, you can't remove them %s." +msgstr "" + +#: admin/fai/class_faiManagement.inc:400 +#, fuzzy +msgid "FAI object" +msgstr "Objeto" + +#: admin/fai/class_faiManagement.inc:492 +msgid "FAI branch/freeze" +msgstr "" + +#: admin/fai/class_faiManagement.inc:495 +#, fuzzy +msgid "You have no permission to delete this release!" +msgstr "¡No tiene permisos para eliminar este componente!" + +#: admin/fai/class_faiManagement.inc:513 +msgid "Release remove aborted because the release name check failed!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 +#, fuzzy +msgid "Branch" +msgstr "Francés" + +#: admin/fai/class_faiManagement.inc:750 +#: admin/fai/class_faiManagement.inc:1025 +#: admin/fai/class_faiManagement.inc:1031 +msgid "Continue" +msgstr "Continuar" + +#: admin/fai/class_faiManagement.inc:781 +#: admin/fai/class_faiPackageEntry.inc:53 +#: admin/fai/class_faiPackageEntry.inc:193 admin/fai/class_FAI.inc:553 +#: admin/fai/class_faiPackageConfiguration.inc:35 +#: admin/fai/class_faiPackage.inc:478 +#: admin/systems/services/repository/class_servRepository.inc:326 +msgid "Service infrastructure" +msgstr "" + +#: admin/fai/class_faiManagement.inc:786 admin/fai/class_FAI.inc:1157 +#, fuzzy +msgid "Fatal error" +msgstr "Insertar separador" + +#: admin/fai/class_faiManagement.inc:846 +#, fuzzy +msgid "partition table" +msgstr "Variable" + +#: admin/fai/class_faiManagement.inc:847 +#, fuzzy +msgid "script" +msgstr "Descripción" + +#: admin/fai/class_faiManagement.inc:848 +msgid "hook" +msgstr "" + +#: admin/fai/class_faiManagement.inc:849 +#, fuzzy +msgid "variable" +msgstr "Variable" + +#: admin/fai/class_faiManagement.inc:850 +#, fuzzy +msgid "template" +msgstr "Plantilla" + +#: admin/fai/class_faiManagement.inc:851 +msgid "package list" +msgstr "" + +#: admin/fai/class_faiManagement.inc:869 admin/fai/class_faiManagement.inc:886 +#, php-format +msgid "You have no permission to create a new %s!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:886 +msgid "profile" +msgstr "" + +#: admin/fai/class_faiManagement.inc:1286 +msgid "" +"The selected release is not available anymore. All triggered actions are " +"skipped." +msgstr "" + +#: admin/fai/class_faiManagement.inc:1411 +msgid "FAI releases" +msgstr "" + +#: admin/fai/class_faiManagement.inc:1412 +msgid "FAI release management" +msgstr "" + +#: admin/fai/class_faiManagement.inc:1417 +msgid "FAI" +msgstr "" + +#: admin/fai/class_faiVariableEntry.inc:94 +#, fuzzy +msgid "Content" +msgstr "Continuar" + +#: admin/fai/class_faiVariableEntry.inc:129 +msgid "Variable entry" +msgstr "" + +#: admin/fai/class_faiVariableEntry.inc:130 +msgid "FAI variable entry " +msgstr "" + +#: admin/fai/class_faiVariableEntry.inc:139 admin/fai/faiVariableEntry.tpl:38 +msgid "Variable content" +msgstr "" + +#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288 +#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346 +msgid "edit" +msgstr "editar" + +#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348 +msgid "delete" +msgstr "eliminar" + +#: admin/fai/class_faiTemplate.inc:536 +msgid "Template" +msgstr "Plantilla" + +#: admin/fai/class_faiTemplate.inc:537 +msgid "FAI template" +msgstr "" + +#: admin/fai/class_faiTemplate.inc:544 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiPackage.inc:584 admin/fai/class_faiPackage.inc:587 +msgid "Readonly" +msgstr "" + +#: admin/fai/class_faiPackageEntry.inc:38 +msgid "Please enter your search string here" +msgstr "" + +#: admin/fai/class_faiPackageEntry.inc:103 +msgid "" +"This list displays all assigned package names for this repository settings." +msgstr "" + +#: admin/fai/paste_generic.tpl:1 +#, fuzzy +msgid "FAI settings" +msgstr "Clases FAI" + +#: admin/fai/paste_generic.tpl:5 admin/fai/class_faiProfileEntry.inc:174 +#: admin/fai/askClassName.tpl:32 admin/fai/askClassName.tpl:54 +#: admin/fai/class_divListFai.inc:53 +msgid "Class name" +msgstr "" + +#: admin/fai/remove_branch.tpl:6 +msgid "" +"This includes all account data, system access, etc. for this branch. Please " +"double check if your really want to do this since there is no way for GOsa " +"to get your data back." +msgstr "" + +#: admin/fai/remove_branch.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Entonces, si esta seguro, presione Eliminar para continuar o " +"Cancelar para Abortar." + +#: admin/fai/faiProfileEntry.tpl:6 +msgid "List of FAI objects (Fully Automatic Installation)" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:26 +msgid "" +"This menu allows you to select FAI class names and to add them to the " +"currently edited profile." +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:39 +msgid "Show only classes with templates" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:41 +msgid "Show only classes with scripts" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:43 +msgid "Show only classes with hooks" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:45 +msgid "Show only classes with variables" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:47 +msgid "Show only classes with packages" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:49 +msgid "Show only classes with partitions" +msgstr "" + +#: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_askClassName.inc:85 admin/fai/class_askClassName.inc:86 +msgid "Create new FAI object" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:102 admin/fai/class_divListFai.inc:164 +#: admin/fai/class_divListFai.inc:210 admin/fai/class_faiSummaryTab.inc:49 +msgid "Package list" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:104 admin/fai/class_divListFai.inc:156 +#: admin/fai/class_divListFai.inc:212 admin/fai/class_faiSummaryTab.inc:44 +msgid "Scripts" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:106 admin/fai/class_divListFai.inc:160 +#: admin/fai/class_divListFai.inc:214 admin/fai/class_faiSummaryTab.inc:46 +msgid "Variables" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:108 admin/fai/class_divListFai.inc:158 +#: admin/fai/class_divListFai.inc:216 admin/fai/class_faiSummaryTab.inc:45 +msgid "Hooks" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:112 admin/fai/class_divListFai.inc:220 +#: admin/fai/class_faiSummaryTab.inc:47 +msgid "Templates" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:114 admin/fai/class_divListFai.inc:76 +#: admin/fai/class_divListFai.inc:222 +msgid "OPSI netboot product" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:116 +msgid "OPSI local product" +msgstr "" + +#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68 +#: admin/fai/class_faiPackage.inc:573 +msgid "Package" +msgstr "" + +#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316 +#, fuzzy +msgid "Sort direction" +msgstr "Sección" + +#: admin/fai/class_faiScript.inc:332 +msgid "Action" +msgstr "Acción" + +#: admin/fai/class_faiScript.inc:638 admin/fai/class_faiHookEntry.inc:199 +msgid "FAI script" +msgstr "" + +#: admin/fai/class_FAI.inc:259 admin/fai/class_FAI.inc:662 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: admin/fai/class_FAI.inc:535 +#, php-format +msgid "Error, following objects should be equal '%s' and '%s'" +msgstr "" + +#: admin/fai/class_FAI.inc:874 +#, php-format +msgid "Creating group application release for %s" +msgstr "" + +#: admin/fai/class_FAI.inc:943 admin/fai/class_FAI.inc:965 +#: admin/fai/class_FAI.inc:1005 admin/fai/class_FAI.inc:1010 +#: admin/fai/class_FAI.inc:1048 +msgid "Object" +msgstr "Objeto" + +#: admin/fai/class_FAI.inc:944 +#, php-format +msgid "Adding missing group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:966 +#, php-format +msgid "Adding group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1006 +#, fuzzy, php-format +msgid "Could not create menu entry %s. (Already exists)." +msgstr "No se puede crear '%s', el nombre de destino ya existe." + +#: admin/fai/class_FAI.inc:1011 +#, php-format +msgid "Created group application menu entry for %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1042 +#, php-format +msgid "Creating copy of %s" +msgstr "" + +#: admin/fai/class_FAI.inc:1045 +msgid "Processing" +msgstr "" + +#: admin/fai/class_FAI.inc:1063 +#, fuzzy +msgid "Could not create new release, the destination dn is already in use." +msgstr "No se puede crear '%s', el nombre de destino ya existe." + +#: admin/fai/class_FAI.inc:1076 +msgid "Error while fetching source dn - aborted!" +msgstr "" + +#: admin/fai/class_FAI.inc:1158 +#, php-format +msgid "" +"Release creation failed due to ldap errors. Additional informations '%s'." +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +msgid "file is empty" +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:181 +#: admin/fai/class_faiScriptEntry.inc:191 +msgid "Script entry" +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:182 +msgid "FAI script entry" +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:192 +msgid "Script Priority" +msgstr "" + +#: admin/fai/faiSummary.tpl:4 +msgid "FAI object tree" +msgstr "" + +#: admin/fai/faiSummary.tpl:11 +msgid "Reload class and release configuration from parent object." +msgstr "" + +#: admin/fai/faiSummary.tpl:22 +msgid "You are not allowed to view the fai summary." +msgstr "" + +#: admin/fai/faiTemplate.tpl:34 +msgid "List of template files" +msgstr "" + +#: admin/fai/class_faiPartitionTable.inc:301 +#: admin/fai/class_faiPartitionTable.inc:307 +#, php-format +msgid "%s partition" +msgstr "" + +#: admin/fai/class_faiPartitionTable.inc:303 +#: admin/fai/class_faiPartitionTable.inc:309 +#, php-format +msgid "%s partition(s)" +msgstr "" + +#: admin/fai/class_faiPartitionTable.inc:542 +msgid "FAI partition table" +msgstr "" + +#: admin/fai/branch_selector.tpl:2 +#: admin/systems/services/repository/class_servRepository.inc:358 +#, fuzzy +msgid "Releases" +msgstr "Versión" + +#: admin/fai/branch_selector.tpl:8 +msgid "Current release" +msgstr "" + +#: admin/fai/branch_selector.tpl:20 admin/fai/branch_selector.tpl:26 +#, fuzzy +msgid "Create release" +msgstr "Crear" + +#: admin/fai/branch_selector.tpl:23 admin/fai/branch_selector.tpl:29 +msgid "Create read-only release" +msgstr "" + +#: admin/fai/branch_selector.tpl:28 +msgid "Freeze" +msgstr "" + +#: admin/fai/branch_selector.tpl:35 +msgid "Delete current release" +msgstr "" + +#: admin/fai/faiVariableEntry.tpl:33 +msgid "Variable attributes" +msgstr "" + +#: admin/fai/class_faiHookEntry.inc:188 +msgid "Hook entry" +msgstr "" + +#: admin/fai/class_faiHookEntry.inc:189 +msgid "FAI hook entry" +msgstr "" + +#: admin/fai/faiNewBranch.tpl:5 +msgid "" +"You are now going to create a branch or locked branch. This action clones " +"the existing release to another release name. Branches can be modified as " +"usual. FAI classes of locked branches cannot be modified, just additional " +"classes are possible. Branch names should be alphanumeric, excluding the " +"reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' " +"and 'fai'." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:7 +msgid "" +"Branches are created as subreleases of the currently selected branch. " +"Creating a new branch named 1.0.2 in SARGE for example, will result in a new " +"release called SARGE/1.0.2." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:13 +msgid "Please enter a name for the branch" +msgstr "" + +#: admin/fai/faiNewBranch.tpl:34 +msgid "Processing the requested operation" +msgstr "Procesando la operación solicitada" + +#: admin/fai/faiNewBranch.tpl:35 +msgid "" +"As soon as the copy operation has finished, you can scroll down to end of " +"the page and press the 'Continue' button to continue with the fai management " +"dialog." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:41 +msgid "" +"Your browser doesn't support iframes, please use this link to perform the " +"requested operation." +msgstr "" +"Su navegador no soporta IFRAMES, porfavor use este enlace para ejecutar la " +"operación solicitada." + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Perform requested operation." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Initiate operation" +msgstr "" + +#: admin/fai/askClassName.tpl:6 +msgid "" +"Adding a new class to the FAI management, requires a class name. You have to " +"specify a unique class name for unique types of FAI classes, while you can " +"use the same class name for different types of FAI classes. In the laste " +"case, FAI will automatically enclose all these different class types to one " +"unique class name." +msgstr "" + +#: admin/fai/askClassName.tpl:12 +msgid "" +"Please use one of the following methods to choose the name for the new FAI " +"class." +msgstr "" + +#: admin/fai/askClassName.tpl:26 +msgid "Enter FAI class name manually" +msgstr "" + +#: admin/fai/askClassName.tpl:48 +msgid "Choose FAI class name from a list of existing classes" +msgstr "" + +#: admin/fai/askClassName.tpl:54 +msgid "Choose class name" +msgstr "" + +#: admin/fai/askClassName.tpl:70 admin/fai/askClassName.tpl:77 +msgid "Use" +msgstr "Usar" + +#: admin/fai/askClassName.tpl:74 +msgid "A new class name." +msgstr "" + +#: admin/fai/class_faiPackageConfiguration.inc:68 +#, php-format +msgid "Debconf information for package '%s'" +msgstr "" + +#: admin/fai/class_faiVariable.inc:389 admin/fai/class_divListFai.inc:60 +#: admin/fai/class_divListFai.inc:66 +msgid "Variable" +msgstr "Variable" + +#: admin/fai/class_faiVariable.inc:390 +msgid "FAI variable" +msgstr "" + +#: admin/fai/class_divListFai.inc:32 +#, fuzzy +msgid "List of classes" +msgstr "Clases FAI" + +#: admin/fai/class_divListFai.inc:33 +msgid "List of deployment classes and products" +msgstr "" + +#: admin/fai/class_divListFai.inc:48 +msgid "Select all" +msgstr "Seleccione todos" + +#: admin/fai/class_divListFai.inc:54 +#, fuzzy +msgid "Class types" +msgstr "Clase" + +#: admin/fai/class_divListFai.inc:55 admin/fai/class_divListFai.inc:138 +msgid "Actions" +msgstr "Acciones" + +#: admin/fai/class_divListFai.inc:57 admin/fai/class_divListFai.inc:59 +#: admin/fai/class_divListFai.inc:61 admin/fai/class_divListFai.inc:63 +#: admin/fai/class_divListFai.inc:65 admin/fai/class_divListFai.inc:67 +#: admin/fai/class_divListFai.inc:69 admin/fai/class_divListFai.inc:75 +#: admin/fai/class_divListFai.inc:77 +#, php-format +msgid "Display objects of type '%s'." +msgstr "" + +#: admin/fai/class_divListFai.inc:58 +msgid "Show profiles" +msgstr "" + +#: admin/fai/class_divListFai.inc:60 +msgid "Show templates" +msgstr "Mostrar plantillas" + +#: admin/fai/class_divListFai.inc:62 +msgid "Show scripts" +msgstr "" + +#: admin/fai/class_divListFai.inc:64 +msgid "Show hooks" +msgstr "" + +#: admin/fai/class_divListFai.inc:66 +msgid "Show variables" +msgstr "" + +#: admin/fai/class_divListFai.inc:68 +msgid "Show packages" +msgstr "" + +#: admin/fai/class_divListFai.inc:70 +#, fuzzy +msgid "Partition" +msgstr "Variable" + +#: admin/fai/class_divListFai.inc:70 +msgid "Show partitions" +msgstr "" + +#: admin/fai/class_divListFai.inc:76 +msgid "Show netboot products" +msgstr "" + +#: admin/fai/class_divListFai.inc:78 admin/fai/class_divListFai.inc:224 +#, fuzzy +msgid "OPSI localboot product" +msgstr "Editar acl" + +#: admin/fai/class_divListFai.inc:78 +#, fuzzy +msgid "Show localboot products" +msgstr "Editar acl" + +#: admin/fai/class_divListFai.inc:86 +msgid "Display users matching" +msgstr "Mostrar usuarios que coincidan con" + +#: admin/fai/class_divListFai.inc:140 +msgid "Create" +msgstr "Crear" + +#: admin/fai/class_divListFai.inc:155 +msgid "PT" +msgstr "" + +#: admin/fai/class_divListFai.inc:157 +msgid "S" +msgstr "" + +#: admin/fai/class_divListFai.inc:159 +msgid "H" +msgstr "" + +#: admin/fai/class_divListFai.inc:161 +msgid "V" +msgstr "" + +#: admin/fai/class_divListFai.inc:162 +#, fuzzy +msgid "Templates " +msgstr "Plantilla" + +#: admin/fai/class_divListFai.inc:163 +msgid "I" +msgstr "" + +#: admin/fai/class_divListFai.inc:165 +msgid "PK" +msgstr "" + +#: admin/fai/class_divListFai.inc:313 admin/fai/class_divListFai.inc:314 +#: admin/fai/class_divListFai.inc:315 admin/fai/class_divListFai.inc:316 +#: admin/fai/class_divListFai.inc:317 admin/fai/class_divListFai.inc:318 +#: admin/fai/class_divListFai.inc:319 admin/fai/class_divListFai.inc:320 +#: admin/fai/class_divListFai.inc:321 admin/fai/class_divListFai.inc:322 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Nueva plantilla de Estación de trabajo" + +#: admin/fai/class_divListFai.inc:313 +msgid "profiles" +msgstr "" + +#: admin/fai/class_divListFai.inc:314 +#, fuzzy +msgid "partitions" +msgstr "Variable" + +#: admin/fai/class_divListFai.inc:315 +#, fuzzy +msgid "scripts" +msgstr "Descripción" + +#: admin/fai/class_divListFai.inc:316 +msgid "hooks" +msgstr "" + +#: admin/fai/class_divListFai.inc:317 +#, fuzzy +msgid "variables" +msgstr "Variable" + +#: admin/fai/class_divListFai.inc:318 +#, fuzzy +msgid "templates" +msgstr "Plantilla" + +#: admin/fai/class_divListFai.inc:319 +msgid "packages" +msgstr "" + +#: admin/fai/class_divListFai.inc:320 +#, fuzzy +msgid "departments" +msgstr "Enviar departamento" + +#: admin/fai/class_divListFai.inc:321 +#, fuzzy +msgid "netboot products" +msgstr "Editar acl" + +#: admin/fai/class_divListFai.inc:322 +#, fuzzy +msgid "localboot products" +msgstr "Editar acl" + +#: admin/fai/class_faiPackage.inc:329 admin/fai/class_faiPackage.inc:330 +#, fuzzy +msgid "Configured" +msgstr "Continuar" + +#: admin/fai/class_faiPackage.inc:336 admin/fai/class_faiPackage.inc:337 +msgid "Package marked for removal" +msgstr "" + +#: admin/fai/class_faiPackage.inc:353 +msgid "Mark package for removal" +msgstr "" + +#: admin/fai/class_faiPackage.inc:359 +msgid "Configure this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:363 +msgid "Remove this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:442 +#, fuzzy +msgid "Please select a least one package!" +msgstr "Por favor introduzca un número de serie válido" + +#: admin/fai/class_faiPackage.inc:446 +msgid "" +"Please choose a valid release/section combination for your repository setup!" +msgstr "" + +#: admin/fai/class_faiPackage.inc:574 +msgid "FAI Package list" +msgstr "" + +#: admin/fai/class_faiPackage.inc:583 +msgid "Packages" +msgstr "" + +#: admin/fai/class_faiPackage.inc:585 +msgid "Install Method" +msgstr "" + +#: admin/fai/class_faiPackage.inc:586 +msgid "Package configuration" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:90 +msgid "no file uploaded yet" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:96 +#, php-format +msgid "exists in database (size: %s bytes)" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:265 +msgid "Template entry" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:266 +msgid "FAI template entry" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:275 +msgid "Template file" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:276 +msgid "Template path" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:277 +msgid "File owner" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:278 +msgid "File permissions" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:50 +msgid "Profiles" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:89 +msgid "Unknown FAI information source!" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:178 +#: admin/systems/services/repository/class_servRepository.inc:93 +msgid "You can't use this plugin until FAI is activated." +msgstr "No puede usar esta extensión hasta que FAI sea activado." + +#: admin/fai/class_faiSummaryTab.inc:220 +msgid "This object has no FAI classes assigned." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:233 +msgid "Open" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:239 +msgid "Close" +msgstr "Cerrar" + +#: admin/fai/class_faiSummaryTab.inc:342 +msgid "No." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:344 +msgid "FS options" +msgstr "" + +#: admin/fai/faiPartitionTable.tpl:38 +msgid "Discs" +msgstr "" + +#: admin/fai/faiPartitionTable.tpl:44 +msgid "Choose a disk to delete or edit" +msgstr "" + +#: admin/fai/class_debconfTemplate.inc:207 +msgid "This package has no debconf options." +msgstr "" + +#: admin/systems/services/repository/class_divListRepositories.inc:19 +#, fuzzy +msgid "List of configured repositories" +msgstr "Lista de usuarios" + +#: admin/systems/services/repository/class_divListRepositories.inc:20 +#, fuzzy +msgid "This menu allows you to create, delete and edit repository settings." +msgstr "Este menú le permite editar y eliminar las acl seleccionadas." + +#: admin/systems/services/repository/class_divListRepositories.inc:24 +#: admin/systems/services/repository/class_divListRepositories.inc:64 +#: admin/systems/services/repository/servRepositorySetup.tpl:39 +#: admin/systems/services/repository/class_servRepository.inc:360 +#, fuzzy +msgid "Sections" +msgstr "Sección" + +#: admin/systems/services/repository/class_divListRepositories.inc:25 +msgid "Options" +msgstr "Opciones" + +#: admin/systems/services/repository/class_divListRepositories.inc:33 +#, fuzzy +msgid "Add repository" +msgstr "Repositorio" + +#: admin/systems/services/repository/servRepositorySetup.tpl:8 +#: admin/systems/services/repository/class_servRepository.inc:357 +#, fuzzy +msgid "Parent server" +msgstr "Servidor" + +#: admin/systems/services/repository/servRepositorySetup.tpl:28 +#: admin/systems/services/repository/class_servRepository.inc:359 +#: admin/systems/services/repository/class_servRepositorySetup.inc:157 +msgid "URL" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:26 +#: admin/systems/services/repository/class_servRepository.inc:308 +#: admin/systems/services/repository/class_servRepository.inc:344 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +#, fuzzy +msgid "Repository service" +msgstr "Repositorio" + +#: admin/systems/services/repository/class_servRepository.inc:142 +#, fuzzy +msgid "FAI release" +msgstr "Clases FAI" + +#: admin/systems/services/repository/class_servRepository.inc:344 +msgid "Services" +msgstr "Servicios" + +#, fuzzy +#~ msgid "System deployment status" +#~ msgstr "Sistema / Departamento" + +#, fuzzy +#~ msgid "Permission" +#~ msgstr "Permisos" + +#, fuzzy +#~ msgid "" +#~ "This menu allows you to remove and change the properties of GOsa tasks." +#~ msgstr "" +#~ "Este menú le permite añadir, eliminar o configurar las propiedades de un " +#~ "servicioespecíficos." + +#, fuzzy +#~ msgid "List of queued jobs" +#~ msgstr "Lista de Departamentos" + +#, fuzzy +#~ msgid "Resume" +#~ msgstr "Eliminar" + +#, fuzzy +#~ msgid "Pause" +#~ msgstr "Base" + +#, fuzzy +#~ msgid "Target" +#~ msgstr "Juego de caracteres" + +#, fuzzy +#~ msgid "Schedule" +#~ msgstr "PHP Schedule it" + +#~ msgid "Status" +#~ msgstr "Estado" + +#, fuzzy +#~ msgid "Move up" +#~ msgstr "Mover" + +#, fuzzy +#~ msgid "Move down" +#~ msgstr "Mover" + +#, fuzzy +#~ msgid "Execute now" +#~ msgstr "Ejecute" + +#, fuzzy +#~ msgid "Waiting" +#~ msgstr "Aviso" + +#, fuzzy +#~ msgid "Detection" +#~ msgstr "Sección" + +#, fuzzy +#~ msgid "Cannot update queue entry: %s" +#~ msgstr "Crear nuevo departamento" + +#, fuzzy +#~ msgid "Cannot load queue entries: %s" +#~ msgstr "" +#~ "La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#, fuzzy +#~ msgid "System deployment" +#~ msgstr "Sistema / Departamento" + +#, fuzzy +#~ msgid "System list" +#~ msgstr "Sistema de confianza" + +#, fuzzy +#~ msgid "ID" +#~ msgstr "GID" + +#, fuzzy +#~ msgid "Targets" +#~ msgstr "Juego de caracteres" + +#, fuzzy +#~ msgid "System / Department" +#~ msgstr "Sistema / Departamento" + +#, fuzzy +#~ msgid "Display users" +#~ msgstr "Mostrar usuarios que coincidan con" + +#, fuzzy +#~ msgid "Display groups" +#~ msgstr "Mostrar grupos de correo" + +#~ msgid "Base" +#~ msgstr "Base" + +#~ msgid "Submit department" +#~ msgstr "Enviar departamento" + +#~ msgid "Submit" +#~ msgstr "Enviar" + +#, fuzzy +#~ msgid "Abort installation" +#~ msgstr "Estación de trabajo Windows" + +#, fuzzy +#~ msgid "Reload GOto settings" +#~ msgstr "Parámetros genéricos del usuario" + +#, fuzzy +#~ msgid "Installation activation" +#~ msgstr "Comprobación de la instalación" + +#, fuzzy +#~ msgid "Reload LDAP config" +#~ msgstr "Recargar lista" + +#, fuzzy +#~ msgid "Time schedule" +#~ msgstr "PHP Schedule it" + +#, fuzzy +#~ msgid "Month" +#~ msgstr "mes" + +#, fuzzy +#~ msgid "Day" +#~ msgstr "Mayo" + +#, fuzzy +#~ msgid "Minute" +#~ msgstr "Impresora" + +#, fuzzy +#~ msgid "Second" +#~ msgstr "Sección" + +#, fuzzy +#~ msgid "Subject" +#~ msgstr "Objeto" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#, fuzzy +#~ msgid "Display server" +#~ msgstr "Mostrar usuarios que coincidan con" + +#, fuzzy +#~ msgid "Display workstation" +#~ msgstr "Mostrar usuarios que coincidan con" + +#, fuzzy +#~ msgid "Display object groups" +#~ msgstr "Mostrar los grupos samba" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "Workstation" +#~ msgstr "Estación de trabajo" + +#, fuzzy +#~ msgid "Activate new" +#~ msgstr "Activado" + +#, fuzzy +#~ msgid "Progress" +#~ msgstr "Propiedades" + +#, fuzzy +#~ msgid "Message settings" +#~ msgstr "Parámetros de correo" + +#, fuzzy +#~ msgid "Sender" +#~ msgstr "Sexo" + +#, fuzzy +#~ msgid "Target users" +#~ msgstr "Usuarios del dominio" + +#, fuzzy +#~ msgid "Target groups" +#~ msgstr "departamento" + +#, fuzzy +#~ msgid "Available targets" +#~ msgstr "Variable" + +#, fuzzy +#~ msgid "Select to see object groups" +#~ msgstr "Seleccione para ver los servidores" + +#, fuzzy +#~ msgid "Show object groups" +#~ msgstr "Mostrar los grupos samba" + +#~ msgid "Select to see servers" +#~ msgstr "Seleccione para ver los servidores" + +#~ msgid "Show servers" +#~ msgstr "Mostrar servidores" + +#, fuzzy +#~ msgid "Select to see workstations" +#~ msgstr "Mostrar estaciones de trabajo" + +#~ msgid "Show workstations" +#~ msgstr "Mostrar estaciones de trabajo" + +#, fuzzy +#~ msgid "Select to see incoming objects" +#~ msgstr "Seleccione para buscar dentro de los subárboles" + +#~ msgid "Regular expression for matching group names" +#~ msgstr "Expresión regular para buscar nombres de grupos" + +#, fuzzy +#~ msgid "Available logs" +#~ msgstr "Variable" + +#, fuzzy +#~ msgid "MAC-address" +#~ msgstr "Dirección" + +#, fuzzy +#~ msgid "object group" +#~ msgstr "Mostrar los grupos samba" + +#, fuzzy +#~ msgid "IP-address" +#~ msgstr "Dirección" + +#, fuzzy +#~ msgid "Browse" +#~ msgstr "Base" + +#, fuzzy +#~ msgid "MAC" +#~ msgstr "ACL" + +#~ msgid "none" +#~ msgstr "ninguno" + +#, fuzzy +#~ msgid "Date" +#~ msgstr "Eliminar" + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "Sistema / Departamento" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "copiar" + +#~ msgid "copy" +#~ msgstr "copiar" + +#~ msgid "Copy this entry" +#~ msgstr "Copiar esta entrada" + +#, fuzzy +#~ msgid "Sudo generic" +#~ msgstr "Genérico" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "mover" + +#~ msgid "cut" +#~ msgstr "mover" + +#~ msgid "Cut this entry" +#~ msgstr "Mover esta entrada" + +#, fuzzy +#~ msgid "File system encryption" +#~ msgstr "Ver la información de sistemas" + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "El nombre introducido ya esta siendo usado" + +#, fuzzy +#~ msgid "Please enter a script!" +#~ msgstr "Por favor introduzca un número de serie válido" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "¡No tiene permisos para eliminar este componente!" + +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "Has decidido eliminar la siguiente entrada %s" + +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "Has decidido eliminar las siguientes entradas %s" + +#~ msgid "Ok" +#~ msgstr "Ok" + +#, fuzzy +#~ msgid "There is already a template with the given name." +#~ msgstr "Ya se ha subido anteriormente un fichero con este nombre." + +#, fuzzy +#~ msgid "Please specify a valid value for attribute 'Destination path'." +#~ msgstr "Por favor introduzca un valor para '%s' valido." + +#, fuzzy +#~ msgid "Please enter a file name." +#~ msgstr "Por favor introduzca un número de serie válido" + +#, fuzzy +#~ msgid "There is already a variable with the given name." +#~ msgstr "Ya se ha subido anteriormente un fichero con este nombre." + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Eliminar departamentos seleccionados" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Back" +#~ msgstr "Atrás" + +#, fuzzy +#~ msgid "There is already a hook with the given name." +#~ msgstr "Ya se ha subido anteriormente un fichero con este nombre." + +#, fuzzy +#~ msgid "There is already a script with the given name." +#~ msgstr "Ya se ha subido anteriormente un fichero con este nombre." + +#, fuzzy +#~ msgid "There is already a FAI object with this class name defined." +#~ msgstr "Ya se ha subido anteriormente un fichero con este nombre." diff --git a/trunk/gosa-plugins/fai/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/fai/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..4c984440d --- /dev/null +++ b/trunk/gosa-plugins/fai/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,1490 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2008-12-04 14:27+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/fai/faiTemplateEntry.tpl:3 admin/fai/faiVariable.tpl:4 +#: admin/fai/faiProfile.tpl:4 admin/fai/faiProfile.tpl:36 +#: admin/fai/faiScriptEntry.tpl:5 admin/fai/faiScript.tpl:4 +#: admin/fai/faiPackage.tpl:4 admin/fai/faiHook.tpl:4 +#: admin/fai/faiPartitionTableEntry.tpl:2 admin/fai/faiHookEntry.tpl:5 +#: admin/fai/faiTemplate.tpl:4 admin/fai/faiVariableEntry.tpl:5 +#: admin/fai/faiPartitionTable.tpl:4 +msgid "Generic" +msgstr "Informations" + +#: admin/fai/faiTemplateEntry.tpl:10 admin/fai/class_faiTemplateEntry.inc:220 +msgid "File name" +msgstr "Nom du fichier" + +#: admin/fai/faiTemplateEntry.tpl:21 admin/fai/class_faiTemplateEntry.inc:215 +msgid "Destination path" +msgstr "Répertoire de destination" + +#: admin/fai/faiTemplateEntry.tpl:33 +#: admin/fai/class_faiPartitionTableEntry.inc:470 admin/fai/faiVariable.tpl:21 +#: admin/fai/class_faiHook.inc:562 admin/fai/faiProfile.tpl:21 +#: admin/fai/faiScriptEntry.tpl:19 admin/fai/faiScript.tpl:21 +#: admin/fai/faiPackage.tpl:21 admin/fai/faiHook.tpl:21 +#: admin/fai/class_faiProfile.inc:479 admin/fai/faiPartitionTableEntry.tpl:13 +#: admin/fai/faiHookEntry.tpl:19 admin/fai/class_faiVariableEntry.inc:138 +#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646 +#: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiTemplate.tpl:21 +#: admin/fai/class_faiPartitionTable.inc:550 admin/fai/faiVariableEntry.tpl:19 +#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398 +#: admin/fai/class_faiPackage.inc:582 admin/fai/class_faiTemplateEntry.inc:274 +#: admin/fai/faiPartitionTable.tpl:21 +msgid "Description" +msgstr "Description" + +#: admin/fai/faiTemplateEntry.tpl:45 +msgid "Template attributes" +msgstr "Attributs des modèles" + +#: admin/fai/faiTemplateEntry.tpl:53 admin/fai/class_faiTemplateEntry.inc:211 +msgid "File" +msgstr "Fichier" + +#: admin/fai/faiTemplateEntry.tpl:60 +msgid "Save template" +msgstr "Sauver le modèle" + +#: admin/fai/faiTemplateEntry.tpl:69 +msgid "Upload" +msgstr "Télécharger" + +#: admin/fai/faiTemplateEntry.tpl:76 +msgid "Full path" +msgstr "Chemin complet" + +#: admin/fai/faiTemplateEntry.tpl:92 +msgid "Owner" +msgstr "Propriétaire" + +#: admin/fai/faiTemplateEntry.tpl:103 admin/fai/faiTemplateEntry.tpl:145 +#: admin/fai/class_faiTemplateEntry.inc:230 +#: admin/fai/class_faiTemplateEntry.inc:233 +#: admin/fai/class_faiTemplateEntry.inc:235 +msgid "Group" +msgstr "Groupes" + +#: admin/fai/faiTemplateEntry.tpl:114 +msgid "Access" +msgstr "Accès" + +#: admin/fai/faiTemplateEntry.tpl:120 +msgid "Class" +msgstr "Classe" + +#: admin/fai/faiTemplateEntry.tpl:121 +msgid "Read" +msgstr "Lire" + +#: admin/fai/faiTemplateEntry.tpl:122 +msgid "Write" +msgstr "Ecrire" + +#: admin/fai/faiTemplateEntry.tpl:123 +msgid "Execute" +msgstr "Exécuter" + +#: admin/fai/faiTemplateEntry.tpl:125 +msgid "Special" +msgstr "Spécial" + +#: admin/fai/faiTemplateEntry.tpl:128 admin/fai/class_faiTemplateEntry.inc:224 +#: admin/fai/class_faiTemplateEntry.inc:226 +msgid "User" +msgstr "Utilisateur" + +#: admin/fai/faiTemplateEntry.tpl:142 +msgid "SUID" +msgstr "SUID" + +#: admin/fai/faiTemplateEntry.tpl:159 +msgid "SGID" +msgstr "SGID" + +#: admin/fai/faiTemplateEntry.tpl:162 +msgid "Others" +msgstr "Autres" + +#: admin/fai/faiTemplateEntry.tpl:176 +msgid "sticky" +msgstr "permanent" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/class_faiHook.inc:239 admin/fai/tabsPartition.inc:34 +#: admin/fai/class_faiProfile.inc:262 admin/fai/class_faiManagement.inc:238 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiManagement.inc:899 admin/fai/class_faiManagement.inc:943 +#: admin/fai/class_faiManagement.inc:967 +#: admin/fai/class_faiManagement.inc:1216 admin/fai/class_faiTemplate.inc:212 +#: admin/fai/tabsVariable.inc:33 admin/fai/tabsPackage.inc:33 +#: admin/fai/class_faiScript.inc:229 admin/fai/class_FAI.inc:535 +#: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62 +#: admin/fai/tabsHook.inc:32 admin/fai/class_faiPartitionTable.inc:180 +#: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:272 +#: admin/fai/class_faiSummaryTab.inc:89 admin/fai/tabsProfile.inc:33 +#: admin/systems/services/repository/class_servRepository.inc:142 +#: admin/systems/services/repository/class_servRepository.inc:177 +#: admin/systems/services/repository/class_servRepository.inc:182 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Error" +msgstr "Erreur" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/tabsPartition.inc:34 admin/fai/tabsVariable.inc:33 +#: admin/fai/tabsPackage.inc:33 admin/fai/tabsHook.inc:32 +#: admin/fai/tabsProfile.inc:33 +msgid "Moving the tree failed. Destination tree is subtree of source tree." +msgstr "" +"Impossible de bouger l'arbre. L'arbre de destination est un sous arbre de " +"l'arbre à bouger." + +#: admin/fai/remove.tpl:2 admin/fai/class_faiManagement.inc:513 +#: admin/fai/class_faiManagement.inc:1286 admin/fai/remove_branch.tpl:2 +msgid "Warning" +msgstr "Avertissement" + +#: admin/fai/remove.tpl:7 +msgid "" +"This includes 'all' object information. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Ceci inclut toutes les informations sur les objets. Veuillez vérifier que " +"vous voulez effectuer cette opération, étant donné qu'il est impossible pour " +"GOsa de récupérer vos données." + +#: admin/fai/remove.tpl:11 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Il est conseillé de sauvegarder l'arbre de votre annuaire LDAP dans un " +"fichier avant de réaliser cette action. Appuyez sur 'Supprimer' pour " +"continuer ou 'Annuler' pour abandonner." + +#: admin/fai/faiGroupHandle.tpl:3 +msgid "Please select the objects you want to remove:" +msgstr "Veuillez sélectionner les objets que vous voulez enlever :" + +#: admin/fai/faiGroupHandle.tpl:22 admin/fai/class_divListFai.inc:145 +msgid "Freezed" +msgstr "Verrouillé" + +#: admin/fai/faiGroupHandle.tpl:30 +msgid "Select the object you want to edit:" +msgstr "Sélectionnez les objets que vous voulez éditer :" + +#: admin/fai/faiGroupHandle.tpl:53 +msgid "Select the object you want to copy:" +msgstr "Sélectionnez les objets que vous voulez copier :" + +#: admin/fai/faiGroupHandle.tpl:76 +msgid "Select the object you want to cut:" +msgstr "Sélectionnez les objets que vous voulez couper :" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "primary" +msgstr "principal" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "logical" +msgstr "logique" + +#: admin/fai/class_faiPartitionTableEntry.inc:183 +#: admin/fai/class_faiSummaryTab.inc:348 +msgid "Type" +msgstr "Type" + +#: admin/fai/class_faiPartitionTableEntry.inc:184 +msgid "FS type" +msgstr "FS type" + +#: admin/fai/class_faiPartitionTableEntry.inc:185 +#: admin/fai/class_faiPartitionTableEntry.inc:474 +#: admin/fai/class_faiSummaryTab.inc:347 +msgid "Mount point" +msgstr "Point de montage" + +#: admin/fai/class_faiPartitionTableEntry.inc:186 +#: admin/fai/class_faiSummaryTab.inc:346 +msgid "Size in MB" +msgstr "Taille en MB" + +#: admin/fai/class_faiPartitionTableEntry.inc:187 +#: admin/fai/class_faiPartitionTableEntry.inc:476 +#: admin/fai/class_faiSummaryTab.inc:345 +msgid "Mount options" +msgstr "Options de montage" + +#: admin/fai/class_faiPartitionTableEntry.inc:188 +msgid "FS option" +msgstr "Option du système de fichier" + +#: admin/fai/class_faiPartitionTableEntry.inc:189 +msgid "Preserve" +msgstr "Préserver" + +#: admin/fai/class_faiPartitionTableEntry.inc:282 +msgid "False" +msgstr "Faux" + +#: admin/fai/class_faiPartitionTableEntry.inc:284 +msgid "True" +msgstr "Vrai" + +#: admin/fai/class_faiPartitionTableEntry.inc:288 +#: admin/fai/class_faiPartitionTableEntry.inc:290 +#: admin/fai/class_divListFai.inc:178 +msgid "Remove" +msgstr "Supprimer" + +#: admin/fai/class_faiPartitionTableEntry.inc:371 +#: admin/fai/class_faiPartitionTableEntry.inc:374 +#: admin/fai/class_faiPartitionTableEntry.inc:469 admin/fai/faiVariable.tpl:9 +#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:561 +#: admin/fai/faiProfile.tpl:9 admin/fai/faiScriptEntry.tpl:9 +#: admin/fai/faiScript.tpl:9 admin/fai/faiPackage.tpl:9 +#: admin/fai/faiHook.tpl:9 admin/fai/class_faiProfile.inc:395 +#: admin/fai/class_faiProfile.inc:405 admin/fai/class_faiProfile.inc:478 +#: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiHookEntry.tpl:9 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiVariableEntry.inc:90 +#: admin/fai/class_faiVariableEntry.inc:99 +#: admin/fai/class_faiVariableEntry.inc:102 +#: admin/fai/class_faiVariableEntry.inc:137 +#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:544 +#: admin/fai/class_askClassName.inc:142 admin/fai/class_askClassName.inc:146 +#: admin/fai/class_askClassName.inc:150 admin/fai/class_faiScript.inc:327 +#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiScriptEntry.inc:137 +#: admin/fai/class_faiScriptEntry.inc:142 +#: admin/fai/class_faiScriptEntry.inc:145 +#: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiTemplate.tpl:9 +#: admin/fai/class_faiPartitionTable.inc:371 +#: admin/fai/class_faiPartitionTable.inc:549 admin/fai/faiVariableEntry.tpl:9 +#: admin/fai/class_faiHookEntry.inc:145 admin/fai/class_faiHookEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:153 admin/fai/class_faiHookEntry.inc:196 +#: admin/fai/class_faiVariable.inc:296 admin/fai/class_faiVariable.inc:397 +#: admin/fai/class_faiPackage.inc:456 admin/fai/class_faiPackage.inc:581 +#: admin/fai/class_faiTemplateEntry.inc:207 +#: admin/fai/class_faiTemplateEntry.inc:273 +#: admin/fai/class_faiSummaryTab.inc:343 admin/fai/faiPartitionTable.tpl:9 +#: admin/systems/services/repository/class_servRepository.inc:177 +msgid "Name" +msgstr "Nom" + +#: admin/fai/class_faiPartitionTableEntry.inc:397 +#, php-format +msgid "please enter a unique mount point for partition %s" +msgstr "veuillez entrer un point de montage unique pour la partition %s" + +#: admin/fai/class_faiPartitionTableEntry.inc:402 +#, php-format +msgid "partition %s mount point" +msgstr "partition %s point de montage" + +#: admin/fai/class_faiPartitionTableEntry.inc:407 +#, php-format +msgid "" +"File system type 'swap' is already used, change file system type for " +"partition %s." +msgstr "" +"Le système de fichier 'swap' est déjà utilisé, veuillez changer le type pour " +"la partition %s." + +#: admin/fai/class_faiPartitionTableEntry.inc:411 +msgid "Please use 'swap' as mount point, if 'swap' is used as fs-type." +msgstr "" +"Veuillez utiliser 'swap' comme point de montage, si 'swap' est utilisé comme " +"type de fichier." + +#: admin/fai/class_faiPartitionTableEntry.inc:417 +#: admin/fai/class_faiPartitionTableEntry.inc:421 +#: admin/fai/class_faiPartitionTableEntry.inc:427 +#: admin/fai/class_faiPartitionTableEntry.inc:429 +#: admin/fai/class_faiPartitionTableEntry.inc:434 +#, php-format +msgid "partition %s size" +msgstr "taille de la partition %s" + +#: admin/fai/class_faiPartitionTableEntry.inc:449 +msgid "" +"You have more than 3 primary partition table entries in your configuration, " +"please check your configuration twice." +msgstr "" +"Vous avez plus de 3 partitions primaires dans votre configuration, veuillez " +"vérifier votre configuration." + +#: admin/fai/class_faiPartitionTableEntry.inc:461 +msgid "Partition table entry" +msgstr "Entrée de la table des partitions" + +#: admin/fai/class_faiPartitionTableEntry.inc:462 +msgid "FAI partition table entry" +msgstr "Entrée de la table de partition FAI" + +#: admin/fai/class_faiPartitionTableEntry.inc:471 +msgid "Partition type" +msgstr "Type de partition" + +#: admin/fai/class_faiPartitionTableEntry.inc:472 +msgid "Partition no." +msgstr "Partition n°." + +#: admin/fai/class_faiPartitionTableEntry.inc:473 +msgid "File system type" +msgstr "Type de système de fichiers" + +#: admin/fai/class_faiPartitionTableEntry.inc:475 +msgid "Partition size" +msgstr "Taille de la partition" + +#: admin/fai/class_faiPartitionTableEntry.inc:477 +msgid "File system options" +msgstr "Options des systèmes de fichier" + +#: admin/fai/class_faiPartitionTableEntry.inc:478 +msgid "Partition flags" +msgstr "Indicateur des partitions" + +#: admin/fai/faiVariable.tpl:36 admin/fai/faiScript.tpl:38 +#: admin/fai/faiHook.tpl:38 admin/fai/class_faiProfileEntry.inc:175 +#: admin/fai/faiTemplate.tpl:33 admin/fai/faiPartitionTable.tpl:36 +msgid "Objects" +msgstr "Objets" + +#: admin/fai/faiVariable.tpl:38 +msgid "List of assigned variables" +msgstr "Liste des noms de variables déjà utilisées" + +#: admin/fai/faiVariable.tpl:44 +msgid "Choose a variable to delete or edit" +msgstr "Choisissez une variable à effacer ou éditer" + +#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312 +#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54 +msgid "Edit" +msgstr "Editer" + +#: admin/fai/class_faiHook.inc:316 +msgid "Delete" +msgstr "Supprimer" + +#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiTemplate.inc:300 +#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358 +#: admin/fai/class_faiScriptEntry.inc:88 admin/fai/class_faiHookEntry.inc:80 +msgid "Download" +msgstr "Téléchargement" + +#: admin/fai/class_faiHook.inc:553 admin/fai/class_divListFai.inc:64 +msgid "Hook" +msgstr "Connexions" + +#: admin/fai/class_faiHook.inc:554 +msgid "FAI hook" +msgstr "Connexions FAI" + +#: admin/fai/class_faiHook.inc:561 admin/fai/class_faiPartitionTable.inc:549 +#: admin/fai/class_faiVariable.inc:397 +msgid "Read only" +msgstr "Lecture seule" + +#: admin/fai/faiProfile.tpl:36 admin/fai/class_faiProfile.inc:480 +msgid "FAI classes" +msgstr "Classes FAI" + +#: admin/fai/faiProfile.tpl:37 +msgid "Choose a priority" +msgstr "Sélectionnez une priorité" + +#: admin/fai/faiScriptEntry.tpl:33 +msgid "Properties" +msgstr "Propriétés" + +#: admin/fai/faiScriptEntry.tpl:33 admin/fai/faiScriptEntry.tpl:54 +msgid "Script attributes" +msgstr "Attributs du script" + +#: admin/fai/faiScriptEntry.tpl:38 admin/fai/class_faiScript.inc:328 +msgid "Priority" +msgstr "Priorité" + +#: admin/fai/faiScriptEntry.tpl:43 +msgid "" +"Choose a priority. Low values result in an earlier, high values in a later " +"execution." +msgstr "Choisissez une priorité. Les valeurs basses s'exécutent en premier." + +#: admin/fai/faiScriptEntry.tpl:56 admin/fai/faiHookEntry.tpl:56 +#: admin/fai/class_faiScript.inc:637 admin/fai/class_faiScriptEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:158 admin/fai/class_divListFai.inc:62 +msgid "Script" +msgstr "Script" + +#: admin/fai/faiScriptEntry.tpl:75 admin/fai/faiHookEntry.tpl:75 +msgid "Import script" +msgstr "Importez un script" + +#: admin/fai/faiScript.tpl:39 +msgid "List of scripts" +msgstr "Liste des scripts" + +#: admin/fai/faiPackage.tpl:33 +#: admin/systems/services/repository/servRepositorySetup.tpl:1 +#: admin/systems/services/repository/class_servRepository.inc:343 +msgid "Repository" +msgstr "Dépôt" + +#: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25 +#: admin/fai/class_faiPackage.inc:587 +#: admin/systems/services/repository/class_divListRepositories.inc:23 +#: admin/systems/services/repository/servRepositorySetup.tpl:19 +#: admin/systems/services/repository/class_servRepositorySetup.inc:153 +msgid "Release" +msgstr "Version" + +#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:584 +msgid "Section" +msgstr "Section" + +#: admin/fai/faiPackage.tpl:53 +msgid "Install method" +msgstr "Méthode d'installation" + +#: admin/fai/faiPackage.tpl:57 +msgid "Please select the installation method" +msgstr "Veuillez sélectionner la méthode d'installation" + +#: admin/fai/faiPackage.tpl:71 +msgid "Used packages" +msgstr "Paquets utilisés" + +#: admin/fai/faiHook.tpl:39 +msgid "List of hook scripts" +msgstr "Liste des scripts de connexions" + +#: admin/fai/class_faiProfile.inc:289 admin/fai/class_faiProfileEntry.inc:172 +msgid "This list displays all assigned class names for this profile." +msgstr "Cette liste affiche toute les classes appartenant à ce profile." + +#: admin/fai/class_faiProfile.inc:292 admin/fai/class_askClassName.inc:83 +#: admin/fai/class_faiProfileEntry.inc:138 +msgid "Hook bundle" +msgstr "Ensemble de connections" + +#: admin/fai/class_faiProfile.inc:293 admin/fai/class_askClassName.inc:85 +#: admin/fai/class_faiProfileEntry.inc:139 +msgid "Template bundle" +msgstr "Ensemble de modèles" + +#: admin/fai/class_faiProfile.inc:294 admin/fai/class_askClassName.inc:81 +#: admin/fai/class_faiProfileEntry.inc:140 +msgid "Script bundle" +msgstr "Ensemble de scripts" + +#: admin/fai/class_faiProfile.inc:295 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_faiProfileEntry.inc:141 +msgid "Variable bundle" +msgstr "Ensemble de variables" + +#: admin/fai/class_faiProfile.inc:296 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_faiProfileEntry.inc:142 +msgid "Package bundle" +msgstr "Ensemble des paquets" + +#: admin/fai/class_faiProfile.inc:297 admin/fai/class_askClassName.inc:79 +#: admin/fai/class_faiGroupHandle.inc:100 +#: admin/fai/class_faiProfileEntry.inc:143 +#: admin/fai/class_faiPartitionTable.inc:541 +#: admin/fai/class_divListFai.inc:154 admin/fai/class_divListFai.inc:208 +#: admin/fai/class_faiSummaryTab.inc:48 +msgid "Partition table" +msgstr "Table des partitions" + +#: admin/fai/class_faiProfile.inc:300 +msgid "Remove class from profile" +msgstr "Enlever la classe du profil" + +#: admin/fai/class_faiProfile.inc:303 +msgid "Up" +msgstr "Au dessus" + +#: admin/fai/class_faiProfile.inc:304 +msgid "Down" +msgstr "En bas" + +#: admin/fai/class_faiProfile.inc:391 +msgid "No class specified for this profile!" +msgstr "Pas de classe spécifiée pour ce profile !" + +#: admin/fai/class_faiProfile.inc:470 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_divListFai.inc:58 +#: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218 +msgid "Profile" +msgstr "Profil" + +#: admin/fai/class_faiProfile.inc:471 +msgid "FAI profile" +msgstr "Profil FAI" + +#: admin/fai/faiPartitionTableEntry.tpl:2 +msgid "Device" +msgstr "Périphérique" + +#: admin/fai/faiPartitionTableEntry.tpl:24 +msgid "Partition entries" +msgstr "Liste de partitions" + +#: admin/fai/faiPartitionTableEntry.tpl:29 +#: admin/fai/faiPartitionTableEntry.tpl:31 +msgid "Add partition" +msgstr "Ajouter une partition" + +#: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54 +msgid "Hook attributes" +msgstr "Attributs des connections" + +#: admin/fai/faiHookEntry.tpl:38 admin/fai/class_faiHookEntry.inc:198 +msgid "Task" +msgstr "Tâche" + +#: admin/fai/faiHookEntry.tpl:41 +msgid "Choose an existing FAI task" +msgstr "Choisissez une tâche FAI existante" + +#: admin/fai/faiPackageEntry.tpl:6 +msgid "List of available packages" +msgstr "Liste des paquets disponibles" + +#: admin/fai/faiPackageEntry.tpl:20 admin/fai/faiProfileEntry.tpl:21 +msgid "Information" +msgstr "Information" + +#: admin/fai/faiPackageEntry.tpl:24 +msgid "" +"This menu allows you to select multiple packages to add them to the " +"currently edited package list." +msgstr "" +"Ce menu vous permet de sélectionner de multiples paquets à ajouter a la " +"liste en cours d'édition." + +#: admin/fai/faiPackageEntry.tpl:30 admin/fai/faiProfileEntry.tpl:31 +msgid "Filters" +msgstr "Filtres" + +#: admin/fai/faiPackageEntry.tpl:40 admin/fai/faiProfileEntry.tpl:54 +#: admin/fai/faiProfileEntry.tpl:55 +msgid "Display objects matching" +msgstr "Afficher les objets correspondants" + +#: admin/fai/faiPackageEntry.tpl:44 admin/fai/faiProfileEntry.tpl:59 +#: admin/systems/services/repository/class_divListRepositories.inc:26 +msgid "Regular expression for matching object names" +msgstr "Expression régulière pour trouver les objets correspondants" + +#: admin/fai/class_faiManagement.inc:25 admin/fai/main.inc:53 +#: admin/fai/main.inc:55 +msgid "Software deployment" +msgstr "Déploiement de logiciels" + +#: admin/fai/class_faiManagement.inc:26 +msgid "Manage software packages and deployment reciepes" +msgstr "Gestion des paquets logiciels et des recettes de déploiement" + +#: admin/fai/class_faiManagement.inc:338 admin/fai/class_faiManagement.inc:495 +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 admin/fai/class_faiManagement.inc:869 +#: admin/fai/class_faiManagement.inc:886 +msgid "Permission error" +msgstr "Erreur de permission" + +#: admin/fai/class_faiManagement.inc:384 +msgid "Branch locked" +msgstr "Branche verrouillée" + +#: admin/fai/class_faiManagement.inc:384 +#, php-format +msgid "The following entries are locked, you can't remove them %s." +msgstr "" +"Les entrées suivantes %s sont vérouillées, vous ne pouvez pas les effacer." + +#: admin/fai/class_faiManagement.inc:400 +msgid "FAI object" +msgstr "Objet FAI" + +#: admin/fai/class_faiManagement.inc:492 +msgid "FAI branch/freeze" +msgstr "FAI branche/vérrouillée" + +#: admin/fai/class_faiManagement.inc:495 +msgid "You have no permission to delete this release!" +msgstr "Vous n'êtes pas autorisé à supprimer cette version !" + +#: admin/fai/class_faiManagement.inc:513 +msgid "Release remove aborted because the release name check failed!" +msgstr "" +"Echec de l'effacement de la version, la vérification du nom de la version à " +"échoué !" + +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 +msgid "Branch" +msgstr "Branche" + +#: admin/fai/class_faiManagement.inc:750 +#: admin/fai/class_faiManagement.inc:1025 +#: admin/fai/class_faiManagement.inc:1031 +msgid "Continue" +msgstr "Continuer" + +#: admin/fai/class_faiManagement.inc:781 +#: admin/fai/class_faiPackageEntry.inc:53 +#: admin/fai/class_faiPackageEntry.inc:193 admin/fai/class_FAI.inc:553 +#: admin/fai/class_faiPackageConfiguration.inc:35 +#: admin/fai/class_faiPackage.inc:478 +#: admin/systems/services/repository/class_servRepository.inc:326 +msgid "Service infrastructure" +msgstr "Service d'infrastructure" + +#: admin/fai/class_faiManagement.inc:786 admin/fai/class_FAI.inc:1157 +msgid "Fatal error" +msgstr "Erreur Fatale" + +#: admin/fai/class_faiManagement.inc:846 +msgid "partition table" +msgstr "table des partitions" + +#: admin/fai/class_faiManagement.inc:847 +msgid "script" +msgstr "script" + +#: admin/fai/class_faiManagement.inc:848 +msgid "hook" +msgstr "connexions" + +#: admin/fai/class_faiManagement.inc:849 +msgid "variable" +msgstr "variable" + +#: admin/fai/class_faiManagement.inc:850 +msgid "template" +msgstr "modèle" + +#: admin/fai/class_faiManagement.inc:851 +msgid "package list" +msgstr "liste des paquets" + +#: admin/fai/class_faiManagement.inc:869 admin/fai/class_faiManagement.inc:886 +#, php-format +msgid "You have no permission to create a new %s!" +msgstr "Vous n'êtes pas autorisé à créer un nouveau %s !." + +#: admin/fai/class_faiManagement.inc:886 +msgid "profile" +msgstr "profil" + +#: admin/fai/class_faiManagement.inc:1286 +msgid "" +"The selected release is not available anymore. All triggered actions are " +"skipped." +msgstr "" +"La version sélectionnée n'est plus disponible. Toute les actions sont " +"annulées." + +#: admin/fai/class_faiManagement.inc:1411 +msgid "FAI releases" +msgstr "Versions FAI" + +#: admin/fai/class_faiManagement.inc:1412 +msgid "FAI release management" +msgstr "Gestion des versions FAI" + +#: admin/fai/class_faiManagement.inc:1417 +msgid "FAI" +msgstr "FAI" + +#: admin/fai/class_faiVariableEntry.inc:94 +msgid "Content" +msgstr "Contenu" + +#: admin/fai/class_faiVariableEntry.inc:129 +msgid "Variable entry" +msgstr "Contenu de la variable" + +#: admin/fai/class_faiVariableEntry.inc:130 +msgid "FAI variable entry " +msgstr "Contenu de la variable FAI" + +#: admin/fai/class_faiVariableEntry.inc:139 admin/fai/faiVariableEntry.tpl:38 +msgid "Variable content" +msgstr "Contenu de la variable" + +#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288 +#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346 +msgid "edit" +msgstr "éditer" + +#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348 +msgid "delete" +msgstr "supprimer" + +#: admin/fai/class_faiTemplate.inc:536 +msgid "Template" +msgstr "Modèle" + +#: admin/fai/class_faiTemplate.inc:537 +msgid "FAI template" +msgstr "Modèle FAI" + +#: admin/fai/class_faiTemplate.inc:544 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiPackage.inc:584 admin/fai/class_faiPackage.inc:587 +msgid "Readonly" +msgstr "Lecture seule" + +#: admin/fai/class_faiPackageEntry.inc:38 +msgid "Please enter your search string here" +msgstr "Veuillez indiquer une chaîne de caractères a rechercher" + +#: admin/fai/class_faiPackageEntry.inc:103 +msgid "" +"This list displays all assigned package names for this repository settings." +msgstr "Cette liste affiche tout les paquets assigné à ce dépôt." + +#: admin/fai/paste_generic.tpl:1 +msgid "FAI settings" +msgstr "Paramètres FAI" + +#: admin/fai/paste_generic.tpl:5 admin/fai/class_faiProfileEntry.inc:174 +#: admin/fai/askClassName.tpl:32 admin/fai/askClassName.tpl:54 +#: admin/fai/class_divListFai.inc:53 +msgid "Class name" +msgstr "Nom de la classe" + +#: admin/fai/remove_branch.tpl:6 +msgid "" +"This includes all account data, system access, etc. for this branch. Please " +"double check if your really want to do this since there is no way for GOsa " +"to get your data back." +msgstr "" +"Cela inclut toutes les données des comptes, les droits d'accès, la " +"configuration imap,etc. pour cette branche. Veuillez vous assurez que vous " +"voulez effectuez cette opération étant donné qu'il est impossible pour GOsa " +"de récupérer vos données." + +#: admin/fai/remove_branch.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"D'accord - si vous êtes sur - cliquez sur 'Supprimer' pour continuer ou sur " +"'Annuler' pour abandonner." + +#: admin/fai/faiProfileEntry.tpl:6 +msgid "List of FAI objects (Fully Automatic Installation)" +msgstr "Liste des objets FAI (Fully Automatic Installation)" + +#: admin/fai/faiProfileEntry.tpl:26 +msgid "" +"This menu allows you to select FAI class names and to add them to the " +"currently edited profile." +msgstr "" +"Ce menu vous permet de sélectionner des classes FAI et de les ajouter au " +"profile actuellement édité." + +#: admin/fai/faiProfileEntry.tpl:39 +msgid "Show only classes with templates" +msgstr "Montrer seulement les classes avec modèles" + +#: admin/fai/faiProfileEntry.tpl:41 +msgid "Show only classes with scripts" +msgstr "Montrer seulement les classes avec scripts" + +#: admin/fai/faiProfileEntry.tpl:43 +msgid "Show only classes with hooks" +msgstr "Montrer seulement les classes avec des hooks" + +#: admin/fai/faiProfileEntry.tpl:45 +msgid "Show only classes with variables" +msgstr "Montrer seulement les classes avec variables" + +#: admin/fai/faiProfileEntry.tpl:47 +msgid "Show only classes with packages" +msgstr "Montrer seulement les classes avec des paquets" + +#: admin/fai/faiProfileEntry.tpl:49 +msgid "Show only classes with partitions" +msgstr "Montrer seulement les classes avec des partitions" + +#: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_askClassName.inc:85 admin/fai/class_askClassName.inc:86 +msgid "Create new FAI object" +msgstr "Créer un nouvel objet FAI" + +#: admin/fai/class_faiGroupHandle.inc:102 admin/fai/class_divListFai.inc:164 +#: admin/fai/class_divListFai.inc:210 admin/fai/class_faiSummaryTab.inc:49 +msgid "Package list" +msgstr "Liste des paquets" + +#: admin/fai/class_faiGroupHandle.inc:104 admin/fai/class_divListFai.inc:156 +#: admin/fai/class_divListFai.inc:212 admin/fai/class_faiSummaryTab.inc:44 +msgid "Scripts" +msgstr "Scripts" + +#: admin/fai/class_faiGroupHandle.inc:106 admin/fai/class_divListFai.inc:160 +#: admin/fai/class_divListFai.inc:214 admin/fai/class_faiSummaryTab.inc:46 +msgid "Variables" +msgstr "Variables" + +#: admin/fai/class_faiGroupHandle.inc:108 admin/fai/class_divListFai.inc:158 +#: admin/fai/class_divListFai.inc:216 admin/fai/class_faiSummaryTab.inc:45 +msgid "Hooks" +msgstr "Connexions" + +#: admin/fai/class_faiGroupHandle.inc:112 admin/fai/class_divListFai.inc:220 +#: admin/fai/class_faiSummaryTab.inc:47 +msgid "Templates" +msgstr "Modèles" + +#: admin/fai/class_faiGroupHandle.inc:114 admin/fai/class_divListFai.inc:76 +#: admin/fai/class_divListFai.inc:222 +msgid "OPSI netboot product" +msgstr "Produit netboot OPSI" + +#: admin/fai/class_faiGroupHandle.inc:116 +msgid "OPSI local product" +msgstr "Produit local OPSI" + +#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68 +#: admin/fai/class_faiPackage.inc:573 +msgid "Package" +msgstr "Paquet" + +#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316 +msgid "Sort direction" +msgstr "Direction du tri" + +#: admin/fai/class_faiScript.inc:332 +msgid "Action" +msgstr "Action" + +#: admin/fai/class_faiScript.inc:638 admin/fai/class_faiHookEntry.inc:199 +msgid "FAI script" +msgstr "Script FAI" + +#: admin/fai/class_FAI.inc:259 admin/fai/class_FAI.inc:662 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/fai/class_FAI.inc:535 +#, php-format +msgid "Error, following objects should be equal '%s' and '%s'" +msgstr "Erreur, les objets suivants doivent être égal '%s' et '%s'" + +#: admin/fai/class_FAI.inc:874 +#, php-format +msgid "Creating group application release for %s" +msgstr "Création d'un groupe d'application pour le version %s" + +#: admin/fai/class_FAI.inc:943 admin/fai/class_FAI.inc:965 +#: admin/fai/class_FAI.inc:1005 admin/fai/class_FAI.inc:1010 +#: admin/fai/class_FAI.inc:1048 +msgid "Object" +msgstr "Objet" + +#: admin/fai/class_FAI.inc:944 +#, php-format +msgid "Adding missing group application release container %s." +msgstr "Ajout du groupe d'application manquant %s." + +#: admin/fai/class_FAI.inc:966 +#, php-format +msgid "Adding group application release container %s." +msgstr "Ajout du groupe d'application %s." + +#: admin/fai/class_FAI.inc:1006 +#, php-format +msgid "Could not create menu entry %s. (Already exists)." +msgstr "Impossible de créer l'entrée de menu%s. (Existe déja)." + +#: admin/fai/class_FAI.inc:1011 +#, php-format +msgid "Created group application menu entry for %s." +msgstr "menu du groupe d'application pour %s crée." + +#: admin/fai/class_FAI.inc:1042 +#, php-format +msgid "Creating copy of %s" +msgstr "Création d'un copie de %s" + +#: admin/fai/class_FAI.inc:1045 +msgid "Processing" +msgstr "Traitement en cours" + +#: admin/fai/class_FAI.inc:1063 +msgid "Could not create new release, the destination dn is already in use." +msgstr "" +"Impossible de créer une nouvelle version, le dn de destination existe déjà." + +#: admin/fai/class_FAI.inc:1076 +msgid "Error while fetching source dn - aborted!" +msgstr "Une erreur s'est produite lors de la récupération du dn - Arrêt !" + +#: admin/fai/class_FAI.inc:1158 +#, php-format +msgid "" +"Release creation failed due to ldap errors. Additional informations '%s'." +msgstr "" +"La création de la version à échoué du à des erreurs ldap. Information " +"additionnelles '%s'." + +#: admin/fai/class_faiScriptEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +msgid "file is empty" +msgstr "Le fichier est vide." + +#: admin/fai/class_faiScriptEntry.inc:181 +#: admin/fai/class_faiScriptEntry.inc:191 +msgid "Script entry" +msgstr "Script" + +#: admin/fai/class_faiScriptEntry.inc:182 +msgid "FAI script entry" +msgstr "Script FAI" + +#: admin/fai/class_faiScriptEntry.inc:192 +msgid "Script Priority" +msgstr "Priorité du script" + +#: admin/fai/faiSummary.tpl:4 +msgid "FAI object tree" +msgstr "Liste des objets FAI" + +#: admin/fai/faiSummary.tpl:11 +msgid "Reload class and release configuration from parent object." +msgstr "Recharger la classe et la version depuis l'objet parent." + +#: admin/fai/faiSummary.tpl:22 +msgid "You are not allowed to view the fai summary." +msgstr "Vous n'êtes pas autorisé à voir le sommaire FAI." + +#: admin/fai/faiTemplate.tpl:34 +msgid "List of template files" +msgstr "Liste des modèles" + +#: admin/fai/class_faiPartitionTable.inc:301 +#: admin/fai/class_faiPartitionTable.inc:307 +#, php-format +msgid "%s partition" +msgstr "partition(s) %s " + +#: admin/fai/class_faiPartitionTable.inc:303 +#: admin/fai/class_faiPartitionTable.inc:309 +#, php-format +msgid "%s partition(s)" +msgstr "partition(s) %s " + +#: admin/fai/class_faiPartitionTable.inc:542 +msgid "FAI partition table" +msgstr "Table des partitions FAI" + +#: admin/fai/branch_selector.tpl:2 +#: admin/systems/services/repository/class_servRepository.inc:358 +msgid "Releases" +msgstr "Versions" + +#: admin/fai/branch_selector.tpl:8 +msgid "Current release" +msgstr "Version actuelle" + +#: admin/fai/branch_selector.tpl:20 admin/fai/branch_selector.tpl:26 +msgid "Create release" +msgstr "Créer une version" + +#: admin/fai/branch_selector.tpl:23 admin/fai/branch_selector.tpl:29 +msgid "Create read-only release" +msgstr "Créer une version en lecture seule" + +#: admin/fai/branch_selector.tpl:28 +msgid "Freeze" +msgstr "Verouillé" + +#: admin/fai/branch_selector.tpl:35 +msgid "Delete current release" +msgstr "Effacer la version actuelle" + +#: admin/fai/faiVariableEntry.tpl:33 +msgid "Variable attributes" +msgstr "Attributs des variables" + +#: admin/fai/class_faiHookEntry.inc:188 +msgid "Hook entry" +msgstr "Connexions" + +#: admin/fai/class_faiHookEntry.inc:189 +msgid "FAI hook entry" +msgstr "Connexions FAI" + +#: admin/fai/faiNewBranch.tpl:5 +msgid "" +"You are now going to create a branch or locked branch. This action clones " +"the existing release to another release name. Branches can be modified as " +"usual. FAI classes of locked branches cannot be modified, just additional " +"classes are possible. Branch names should be alphanumeric, excluding the " +"reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' " +"and 'fai'." +msgstr "" +"Vous allez maintenant créer un branche ou une branche verrouillée. Cette " +"action copie la version actuelle dans un nouvelle version. Les branches " +"peuvent être modifiées comme d'habitude. Les classes FAI des branches " +"verrouillées ne peuvent pas être modifiées, seul des des classes " +"supplémentaires sont possibles. Les noms de branches doivent être " +"alphanumériques, a l'exception des mots réservés 'scripts', 'hooks', " +"'partitions', 'variables', 'templates' et 'fai'." + +#: admin/fai/faiNewBranch.tpl:7 +msgid "" +"Branches are created as subreleases of the currently selected branch. " +"Creating a new branch named 1.0.2 in SARGE for example, will result in a new " +"release called SARGE/1.0.2." +msgstr "" +"Les branches sont crées comme des sous versions de la branche sélectionnées. " +"La création d'un nouvelle branche nommée 1.0.2 in SARGE par exemple, donnera " +"comme résultat une nouvelle version appelée SARGE/1.0.2" + +#: admin/fai/faiNewBranch.tpl:13 +msgid "Please enter a name for the branch" +msgstr "Veuillez entrer un nom pour la branche." + +#: admin/fai/faiNewBranch.tpl:34 +msgid "Processing the requested operation" +msgstr "Opération en cours" + +#: admin/fai/faiNewBranch.tpl:35 +msgid "" +"As soon as the copy operation has finished, you can scroll down to end of " +"the page and press the 'Continue' button to continue with the fai management " +"dialog." +msgstr "" +"Aussitôt que l'opération de copie est finie, vous pouvez aller à la fin de " +"la page et cliquer sur 'Continuer' pour continuer la configuration de fai." + +#: admin/fai/faiNewBranch.tpl:41 +msgid "" +"Your browser doesn't support iframes, please use this link to perform the " +"requested operation." +msgstr "" +"Votre navigateur ne supporte pas les iframes, veuillez utiliser ce lien pour " +"effectuer l'opération demandée." + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Perform requested operation." +msgstr "Opération en cours." + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Initiate operation" +msgstr "Démarrage de l'opération" + +#: admin/fai/askClassName.tpl:6 +msgid "" +"Adding a new class to the FAI management, requires a class name. You have to " +"specify a unique class name for unique types of FAI classes, while you can " +"use the same class name for different types of FAI classes. In the laste " +"case, FAI will automatically enclose all these different class types to one " +"unique class name." +msgstr "" +"Ajouter une classe à la gestion FAI nécessite un nom de classe. Vous devez " +"spécifier un nom de classe unique pour les classe FAI de type unique, alors " +"que vous pouvez utiliser le même nom pour des classes FAI de type différent. " +"Dans le dernier cas, FAI incluera automatiquement toutes ces classes de " +"différent type dans un nom de classe unique." + +#: admin/fai/askClassName.tpl:12 +msgid "" +"Please use one of the following methods to choose the name for the new FAI " +"class." +msgstr "" +"Veuillez utiliser une des méthodes suivantes pour choisir le nom de la " +"nouvelle classe FAI." + +#: admin/fai/askClassName.tpl:26 +msgid "Enter FAI class name manually" +msgstr "Entrez le nom de la classe FAI manuellement" + +#: admin/fai/askClassName.tpl:48 +msgid "Choose FAI class name from a list of existing classes" +msgstr "Choisissez le nom de la classe FAI parmi les classes existantes" + +#: admin/fai/askClassName.tpl:54 +msgid "Choose class name" +msgstr "Choisissez un nom de classe" + +#: admin/fai/askClassName.tpl:70 admin/fai/askClassName.tpl:77 +msgid "Use" +msgstr "Utiliser" + +#: admin/fai/askClassName.tpl:74 +msgid "A new class name." +msgstr "Un nouveau nom de classe." + +#: admin/fai/class_faiPackageConfiguration.inc:68 +#, php-format +msgid "Debconf information for package '%s'" +msgstr "Information Debconf pour le paquet '%s'" + +#: admin/fai/class_faiVariable.inc:389 admin/fai/class_divListFai.inc:60 +#: admin/fai/class_divListFai.inc:66 +msgid "Variable" +msgstr "Variable" + +#: admin/fai/class_faiVariable.inc:390 +msgid "FAI variable" +msgstr "Variables FAI" + +#: admin/fai/class_divListFai.inc:32 +msgid "List of classes" +msgstr "Liste des classes" + +#: admin/fai/class_divListFai.inc:33 +msgid "List of deployment classes and products" +msgstr "Listes des classes et des paquets de déploiement" + +#: admin/fai/class_divListFai.inc:48 +msgid "Select all" +msgstr "Tout sélectionner" + +#: admin/fai/class_divListFai.inc:54 +msgid "Class types" +msgstr "Type de classes" + +#: admin/fai/class_divListFai.inc:55 admin/fai/class_divListFai.inc:138 +msgid "Actions" +msgstr "Actions" + +#: admin/fai/class_divListFai.inc:57 admin/fai/class_divListFai.inc:59 +#: admin/fai/class_divListFai.inc:61 admin/fai/class_divListFai.inc:63 +#: admin/fai/class_divListFai.inc:65 admin/fai/class_divListFai.inc:67 +#: admin/fai/class_divListFai.inc:69 admin/fai/class_divListFai.inc:75 +#: admin/fai/class_divListFai.inc:77 +#, php-format +msgid "Display objects of type '%s'." +msgstr "Afficher les objets de type '%s'." + +#: admin/fai/class_divListFai.inc:58 +msgid "Show profiles" +msgstr "Afficher les profils" + +#: admin/fai/class_divListFai.inc:60 +msgid "Show templates" +msgstr "Afficher les modèles" + +#: admin/fai/class_divListFai.inc:62 +msgid "Show scripts" +msgstr "Afficher les scripts" + +#: admin/fai/class_divListFai.inc:64 +msgid "Show hooks" +msgstr "Montrer les connections" + +#: admin/fai/class_divListFai.inc:66 +msgid "Show variables" +msgstr "Afficher les variables" + +#: admin/fai/class_divListFai.inc:68 +msgid "Show packages" +msgstr "Afficher les paquets" + +#: admin/fai/class_divListFai.inc:70 +msgid "Partition" +msgstr "Partition" + +#: admin/fai/class_divListFai.inc:70 +msgid "Show partitions" +msgstr "Afficher les partitions" + +#: admin/fai/class_divListFai.inc:76 +msgid "Show netboot products" +msgstr "Montrer les produits netboot" + +#: admin/fai/class_divListFai.inc:78 admin/fai/class_divListFai.inc:224 +msgid "OPSI localboot product" +msgstr "Produit localboot OPSI" + +#: admin/fai/class_divListFai.inc:78 +msgid "Show localboot products" +msgstr "Montrer les produits localboot" + +#: admin/fai/class_divListFai.inc:86 +msgid "Display users matching" +msgstr "Afficher les utilisateurs correspondants" + +#: admin/fai/class_divListFai.inc:140 +msgid "Create" +msgstr "Créer" + +#: admin/fai/class_divListFai.inc:155 +msgid "PT" +msgstr "PT" + +#: admin/fai/class_divListFai.inc:157 +msgid "S" +msgstr "S" + +#: admin/fai/class_divListFai.inc:159 +msgid "H" +msgstr "H" + +#: admin/fai/class_divListFai.inc:161 +msgid "V" +msgstr "V" + +#: admin/fai/class_divListFai.inc:162 +msgid "Templates " +msgstr "Modèles" + +#: admin/fai/class_divListFai.inc:163 +msgid "I" +msgstr "" + +#: admin/fai/class_divListFai.inc:165 +msgid "PK" +msgstr "PK" + +#: admin/fai/class_divListFai.inc:313 admin/fai/class_divListFai.inc:314 +#: admin/fai/class_divListFai.inc:315 admin/fai/class_divListFai.inc:316 +#: admin/fai/class_divListFai.inc:317 admin/fai/class_divListFai.inc:318 +#: admin/fai/class_divListFai.inc:319 admin/fai/class_divListFai.inc:320 +#: admin/fai/class_divListFai.inc:321 admin/fai/class_divListFai.inc:322 +#, php-format +msgid "Number of listed '%s'" +msgstr "Nombre de '%s' listés" + +#: admin/fai/class_divListFai.inc:313 +msgid "profiles" +msgstr "Profils" + +#: admin/fai/class_divListFai.inc:314 +msgid "partitions" +msgstr "partitions" + +#: admin/fai/class_divListFai.inc:315 +msgid "scripts" +msgstr "scripts" + +#: admin/fai/class_divListFai.inc:316 +msgid "hooks" +msgstr "connexions" + +#: admin/fai/class_divListFai.inc:317 +msgid "variables" +msgstr "Variables" + +#: admin/fai/class_divListFai.inc:318 +msgid "templates" +msgstr "modèles" + +#: admin/fai/class_divListFai.inc:319 +msgid "packages" +msgstr "paquets" + +#: admin/fai/class_divListFai.inc:320 +msgid "departments" +msgstr "département" + +#: admin/fai/class_divListFai.inc:321 +msgid "netboot products" +msgstr "produits netboot" + +#: admin/fai/class_divListFai.inc:322 +msgid "localboot products" +msgstr "produits localboot" + +#: admin/fai/class_faiPackage.inc:329 admin/fai/class_faiPackage.inc:330 +msgid "Configured" +msgstr "Configuré" + +#: admin/fai/class_faiPackage.inc:336 admin/fai/class_faiPackage.inc:337 +msgid "Package marked for removal" +msgstr "Paquet marqué à enlever" + +#: admin/fai/class_faiPackage.inc:353 +msgid "Mark package for removal" +msgstr "Marquer le paquet à enlever" + +#: admin/fai/class_faiPackage.inc:359 +msgid "Configure this package" +msgstr "Configurer ce paquet" + +#: admin/fai/class_faiPackage.inc:363 +msgid "Remove this package" +msgstr "Enlever ce paquet" + +#: admin/fai/class_faiPackage.inc:442 +msgid "Please select a least one package!" +msgstr "Veuillez sélectionner au moins un paquet !" + +#: admin/fai/class_faiPackage.inc:446 +msgid "" +"Please choose a valid release/section combination for your repository setup!" +msgstr "" +"Veuillez choisir une combinaison valable version/section pour la création de " +"votre dépôt de paquets !" + +#: admin/fai/class_faiPackage.inc:574 +msgid "FAI Package list" +msgstr "Liste des paquets" + +#: admin/fai/class_faiPackage.inc:583 +msgid "Packages" +msgstr "Paquets" + +#: admin/fai/class_faiPackage.inc:585 +msgid "Install Method" +msgstr "Méthode d'installation" + +#: admin/fai/class_faiPackage.inc:586 +msgid "Package configuration" +msgstr "Configuration des paquets" + +#: admin/fai/class_faiTemplateEntry.inc:90 +msgid "no file uploaded yet" +msgstr "pas encore de fichier téléchargé" + +#: admin/fai/class_faiTemplateEntry.inc:96 +#, php-format +msgid "exists in database (size: %s bytes)" +msgstr "existe dans la base de données (taille: %s octets)" + +#: admin/fai/class_faiTemplateEntry.inc:265 +msgid "Template entry" +msgstr "Modèle FAI" + +#: admin/fai/class_faiTemplateEntry.inc:266 +msgid "FAI template entry" +msgstr "Modèle FAI" + +#: admin/fai/class_faiTemplateEntry.inc:275 +msgid "Template file" +msgstr "fichier de modèle" + +#: admin/fai/class_faiTemplateEntry.inc:276 +msgid "Template path" +msgstr "Chemin du modèle" + +#: admin/fai/class_faiTemplateEntry.inc:277 +msgid "File owner" +msgstr "Propriétaire du fichier" + +#: admin/fai/class_faiTemplateEntry.inc:278 +msgid "File permissions" +msgstr "Permissions du fichier" + +#: admin/fai/class_faiSummaryTab.inc:50 +msgid "Profiles" +msgstr "Profils" + +#: admin/fai/class_faiSummaryTab.inc:89 +msgid "Unknown FAI information source!" +msgstr "Source d'information FAI inconnue !" + +#: admin/fai/class_faiSummaryTab.inc:178 +#: admin/systems/services/repository/class_servRepository.inc:93 +msgid "You can't use this plugin until FAI is activated." +msgstr "" +"Vous ne pouvez pas utiliser cette extension tant que FAI n'est pas activé." + +#: admin/fai/class_faiSummaryTab.inc:220 +msgid "This object has no FAI classes assigned." +msgstr "Cet objet n'a pas de classe FAI assignée." + +#: admin/fai/class_faiSummaryTab.inc:233 +msgid "Open" +msgstr "Ouvrir" + +#: admin/fai/class_faiSummaryTab.inc:239 +msgid "Close" +msgstr "Fermer" + +#: admin/fai/class_faiSummaryTab.inc:342 +msgid "No." +msgstr "Non." + +#: admin/fai/class_faiSummaryTab.inc:344 +msgid "FS options" +msgstr "Options FS" + +#: admin/fai/faiPartitionTable.tpl:38 +msgid "Discs" +msgstr "Disques" + +#: admin/fai/faiPartitionTable.tpl:44 +msgid "Choose a disk to delete or edit" +msgstr "Choisissez un disque à effacer ou éditer" + +#: admin/fai/class_debconfTemplate.inc:207 +msgid "This package has no debconf options." +msgstr "Ce paquet n'a pas d'options debconf." + +#: admin/systems/services/repository/class_divListRepositories.inc:19 +msgid "List of configured repositories" +msgstr "Liste des dépôts configurés." + +#: admin/systems/services/repository/class_divListRepositories.inc:20 +msgid "This menu allows you to create, delete and edit repository settings." +msgstr "" +"Ce menu vous permet de créer, effacer et éditer les paramètres des dépôts." + +#: admin/systems/services/repository/class_divListRepositories.inc:24 +#: admin/systems/services/repository/class_divListRepositories.inc:64 +#: admin/systems/services/repository/servRepositorySetup.tpl:39 +#: admin/systems/services/repository/class_servRepository.inc:360 +msgid "Sections" +msgstr "" + +#: admin/systems/services/repository/class_divListRepositories.inc:25 +msgid "Options" +msgstr "" + +#: admin/systems/services/repository/class_divListRepositories.inc:33 +msgid "Add repository" +msgstr "Ajouter un dépôt" + +#: admin/systems/services/repository/servRepositorySetup.tpl:8 +#: admin/systems/services/repository/class_servRepository.inc:357 +msgid "Parent server" +msgstr "Serveur parent" + +#: admin/systems/services/repository/servRepositorySetup.tpl:28 +#: admin/systems/services/repository/class_servRepository.inc:359 +#: admin/systems/services/repository/class_servRepositorySetup.inc:157 +msgid "URL" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:26 +#: admin/systems/services/repository/class_servRepository.inc:308 +#: admin/systems/services/repository/class_servRepository.inc:344 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Repository service" +msgstr "Service de dépôt" + +#: admin/systems/services/repository/class_servRepository.inc:142 +msgid "FAI release" +msgstr "Version FAI" + +#: admin/systems/services/repository/class_servRepository.inc:344 +msgid "Services" +msgstr "" diff --git a/trunk/gosa-plugins/fai/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/fai/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..2a87bab9a --- /dev/null +++ b/trunk/gosa-plugins/fai/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,2220 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/fai/faiTemplateEntry.tpl:3 admin/fai/faiVariable.tpl:4 +#: admin/fai/faiProfile.tpl:4 admin/fai/faiProfile.tpl:36 +#: admin/fai/faiScriptEntry.tpl:5 admin/fai/faiScript.tpl:4 +#: admin/fai/faiPackage.tpl:4 admin/fai/faiHook.tpl:4 +#: admin/fai/faiPartitionTableEntry.tpl:2 admin/fai/faiHookEntry.tpl:5 +#: admin/fai/faiTemplate.tpl:4 admin/fai/faiVariableEntry.tpl:5 +#: admin/fai/faiPartitionTable.tpl:4 +msgid "Generic" +msgstr "Generale" + +#: admin/fai/faiTemplateEntry.tpl:10 admin/fai/class_faiTemplateEntry.inc:220 +#, fuzzy +msgid "File name" +msgstr "Cognome" + +#: admin/fai/faiTemplateEntry.tpl:21 admin/fai/class_faiTemplateEntry.inc:215 +#, fuzzy +msgid "Destination path" +msgstr "Destinazione" + +#: admin/fai/faiTemplateEntry.tpl:33 +#: admin/fai/class_faiPartitionTableEntry.inc:470 admin/fai/faiVariable.tpl:21 +#: admin/fai/class_faiHook.inc:562 admin/fai/faiProfile.tpl:21 +#: admin/fai/faiScriptEntry.tpl:19 admin/fai/faiScript.tpl:21 +#: admin/fai/faiPackage.tpl:21 admin/fai/faiHook.tpl:21 +#: admin/fai/class_faiProfile.inc:479 admin/fai/faiPartitionTableEntry.tpl:13 +#: admin/fai/faiHookEntry.tpl:19 admin/fai/class_faiVariableEntry.inc:138 +#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646 +#: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiTemplate.tpl:21 +#: admin/fai/class_faiPartitionTable.inc:550 admin/fai/faiVariableEntry.tpl:19 +#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398 +#: admin/fai/class_faiPackage.inc:582 admin/fai/class_faiTemplateEntry.inc:274 +#: admin/fai/faiPartitionTable.tpl:21 +msgid "Description" +msgstr "Descrizione" + +#: admin/fai/faiTemplateEntry.tpl:45 +#, fuzzy +msgid "Template attributes" +msgstr "Attributo DN delle persone" + +#: admin/fai/faiTemplateEntry.tpl:53 admin/fai/class_faiTemplateEntry.inc:211 +msgid "File" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:60 +#, fuzzy +msgid "Save template" +msgstr "Nuovo template" + +#: admin/fai/faiTemplateEntry.tpl:69 +msgid "Upload" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:76 +#, fuzzy +msgid "Full path" +msgstr "Monitoraggio" + +#: admin/fai/faiTemplateEntry.tpl:92 +msgid "Owner" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:103 admin/fai/faiTemplateEntry.tpl:145 +#: admin/fai/class_faiTemplateEntry.inc:230 +#: admin/fai/class_faiTemplateEntry.inc:233 +#: admin/fai/class_faiTemplateEntry.inc:235 +msgid "Group" +msgstr "Gruppo" + +#: admin/fai/faiTemplateEntry.tpl:114 +#, fuzzy +msgid "Access" +msgstr "Indirizzo" + +#: admin/fai/faiTemplateEntry.tpl:120 +#, fuzzy +msgid "Class" +msgstr "classe" + +#: admin/fai/faiTemplateEntry.tpl:121 +#, fuzzy +msgid "Read" +msgstr "leggere" + +#: admin/fai/faiTemplateEntry.tpl:122 +#, fuzzy +msgid "Write" +msgstr "scrivere" + +#: admin/fai/faiTemplateEntry.tpl:123 +msgid "Execute" +msgstr "Esegui" + +#: admin/fai/faiTemplateEntry.tpl:125 +#, fuzzy +msgid "Special" +msgstr "Terminali" + +#: admin/fai/faiTemplateEntry.tpl:128 admin/fai/class_faiTemplateEntry.inc:224 +#: admin/fai/class_faiTemplateEntry.inc:226 +msgid "User" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:142 +#, fuzzy +msgid "SUID" +msgstr "UID" + +#: admin/fai/faiTemplateEntry.tpl:159 +#, fuzzy +msgid "SGID" +msgstr "GID" + +#: admin/fai/faiTemplateEntry.tpl:162 +#, fuzzy +msgid "Others" +msgstr "Filtri" + +#: admin/fai/faiTemplateEntry.tpl:176 +#, fuzzy +msgid "sticky" +msgstr "statico" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/class_faiHook.inc:239 admin/fai/tabsPartition.inc:34 +#: admin/fai/class_faiProfile.inc:262 admin/fai/class_faiManagement.inc:238 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiManagement.inc:899 admin/fai/class_faiManagement.inc:943 +#: admin/fai/class_faiManagement.inc:967 +#: admin/fai/class_faiManagement.inc:1216 admin/fai/class_faiTemplate.inc:212 +#: admin/fai/tabsVariable.inc:33 admin/fai/tabsPackage.inc:33 +#: admin/fai/class_faiScript.inc:229 admin/fai/class_FAI.inc:535 +#: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62 +#: admin/fai/tabsHook.inc:32 admin/fai/class_faiPartitionTable.inc:180 +#: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:272 +#: admin/fai/class_faiSummaryTab.inc:89 admin/fai/tabsProfile.inc:33 +#: admin/systems/services/repository/class_servRepository.inc:142 +#: admin/systems/services/repository/class_servRepository.inc:177 +#: admin/systems/services/repository/class_servRepository.inc:182 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Error" +msgstr "" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/tabsPartition.inc:34 admin/fai/tabsVariable.inc:33 +#: admin/fai/tabsPackage.inc:33 admin/fai/tabsHook.inc:32 +#: admin/fai/tabsProfile.inc:33 +msgid "Moving the tree failed. Destination tree is subtree of source tree." +msgstr "" + +#: admin/fai/remove.tpl:2 admin/fai/class_faiManagement.inc:513 +#: admin/fai/class_faiManagement.inc:1286 admin/fai/remove_branch.tpl:2 +msgid "Warning" +msgstr "Attenzione" + +#: admin/fai/remove.tpl:7 +msgid "" +"This includes 'all' object information. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/fai/remove.tpl:11 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/fai/faiGroupHandle.tpl:3 +#, fuzzy +msgid "Please select the objects you want to remove:" +msgstr "Inserisci la URI del server LDAP" + +#: admin/fai/faiGroupHandle.tpl:22 admin/fai/class_divListFai.inc:145 +#, fuzzy +msgid "Freezed" +msgstr "Numero di telefono" + +#: admin/fai/faiGroupHandle.tpl:30 +#, fuzzy +msgid "Select the object you want to edit:" +msgstr "Mostra gruppi che contengono gruppi" + +#: admin/fai/faiGroupHandle.tpl:53 +#, fuzzy +msgid "Select the object you want to copy:" +msgstr "Mostra gruppi che contengono gruppi" + +#: admin/fai/faiGroupHandle.tpl:76 +#, fuzzy +msgid "Select the object you want to cut:" +msgstr "Mostra gruppi che contengono gruppi" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +#, fuzzy +msgid "primary" +msgstr "Gruppo primario" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +#, fuzzy +msgid "logical" +msgstr "Aggiungi localmente" + +#: admin/fai/class_faiPartitionTableEntry.inc:183 +#: admin/fai/class_faiSummaryTab.inc:348 +msgid "Type" +msgstr "Tipo" + +#: admin/fai/class_faiPartitionTableEntry.inc:184 +#, fuzzy +msgid "FS type" +msgstr "Tipo" + +#: admin/fai/class_faiPartitionTableEntry.inc:185 +#: admin/fai/class_faiPartitionTableEntry.inc:474 +#: admin/fai/class_faiSummaryTab.inc:347 +#, fuzzy +msgid "Mount point" +msgstr "Monitoraggio" + +#: admin/fai/class_faiPartitionTableEntry.inc:186 +#: admin/fai/class_faiSummaryTab.inc:346 +#, fuzzy +msgid "Size in MB" +msgstr "Connesso:" + +#: admin/fai/class_faiPartitionTableEntry.inc:187 +#: admin/fai/class_faiPartitionTableEntry.inc:476 +#: admin/fai/class_faiSummaryTab.inc:345 +#, fuzzy +msgid "Mount options" +msgstr "Opzioni di posta" + +#: admin/fai/class_faiPartitionTableEntry.inc:188 +#, fuzzy +msgid "FS option" +msgstr "Opzioni" + +#: admin/fai/class_faiPartitionTableEntry.inc:189 +#, fuzzy +msgid "Preserve" +msgstr "server" + +#: admin/fai/class_faiPartitionTableEntry.inc:282 +#, fuzzy +msgid "False" +msgstr "femmina" + +#: admin/fai/class_faiPartitionTableEntry.inc:284 +#, fuzzy +msgid "True" +msgstr "Futuro" + +#: admin/fai/class_faiPartitionTableEntry.inc:288 +#: admin/fai/class_faiPartitionTableEntry.inc:290 +#: admin/fai/class_divListFai.inc:178 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/fai/class_faiPartitionTableEntry.inc:371 +#: admin/fai/class_faiPartitionTableEntry.inc:374 +#: admin/fai/class_faiPartitionTableEntry.inc:469 admin/fai/faiVariable.tpl:9 +#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:561 +#: admin/fai/faiProfile.tpl:9 admin/fai/faiScriptEntry.tpl:9 +#: admin/fai/faiScript.tpl:9 admin/fai/faiPackage.tpl:9 +#: admin/fai/faiHook.tpl:9 admin/fai/class_faiProfile.inc:395 +#: admin/fai/class_faiProfile.inc:405 admin/fai/class_faiProfile.inc:478 +#: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiHookEntry.tpl:9 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiVariableEntry.inc:90 +#: admin/fai/class_faiVariableEntry.inc:99 +#: admin/fai/class_faiVariableEntry.inc:102 +#: admin/fai/class_faiVariableEntry.inc:137 +#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:544 +#: admin/fai/class_askClassName.inc:142 admin/fai/class_askClassName.inc:146 +#: admin/fai/class_askClassName.inc:150 admin/fai/class_faiScript.inc:327 +#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiScriptEntry.inc:137 +#: admin/fai/class_faiScriptEntry.inc:142 +#: admin/fai/class_faiScriptEntry.inc:145 +#: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiTemplate.tpl:9 +#: admin/fai/class_faiPartitionTable.inc:371 +#: admin/fai/class_faiPartitionTable.inc:549 admin/fai/faiVariableEntry.tpl:9 +#: admin/fai/class_faiHookEntry.inc:145 admin/fai/class_faiHookEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:153 admin/fai/class_faiHookEntry.inc:196 +#: admin/fai/class_faiVariable.inc:296 admin/fai/class_faiVariable.inc:397 +#: admin/fai/class_faiPackage.inc:456 admin/fai/class_faiPackage.inc:581 +#: admin/fai/class_faiTemplateEntry.inc:207 +#: admin/fai/class_faiTemplateEntry.inc:273 +#: admin/fai/class_faiSummaryTab.inc:343 admin/fai/faiPartitionTable.tpl:9 +#: admin/systems/services/repository/class_servRepository.inc:177 +msgid "Name" +msgstr "Cognome" + +#: admin/fai/class_faiPartitionTableEntry.inc:397 +#, php-format +msgid "please enter a unique mount point for partition %s" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:402 +#, php-format +msgid "partition %s mount point" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:407 +#, php-format +msgid "" +"File system type 'swap' is already used, change file system type for " +"partition %s." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:411 +msgid "Please use 'swap' as mount point, if 'swap' is used as fs-type." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:417 +#: admin/fai/class_faiPartitionTableEntry.inc:421 +#: admin/fai/class_faiPartitionTableEntry.inc:427 +#: admin/fai/class_faiPartitionTableEntry.inc:429 +#: admin/fai/class_faiPartitionTableEntry.inc:434 +#, fuzzy, php-format +msgid "partition %s size" +msgstr "Partizioni" + +#: admin/fai/class_faiPartitionTableEntry.inc:449 +msgid "" +"You have more than 3 primary partition table entries in your configuration, " +"please check your configuration twice." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:461 +#, fuzzy +msgid "Partition table entry" +msgstr "Destinazione" + +#: admin/fai/class_faiPartitionTableEntry.inc:462 +#, fuzzy +msgid "FAI partition table entry" +msgstr "Stampante" + +#: admin/fai/class_faiPartitionTableEntry.inc:471 +#, fuzzy +msgid "Partition type" +msgstr "Destinazione" + +#: admin/fai/class_faiPartitionTableEntry.inc:472 +#, fuzzy +msgid "Partition no." +msgstr "Partizioni" + +#: admin/fai/class_faiPartitionTableEntry.inc:473 +#, fuzzy +msgid "File system type" +msgstr "Sistemi" + +#: admin/fai/class_faiPartitionTableEntry.inc:475 +#, fuzzy +msgid "Partition size" +msgstr "Partizioni" + +#: admin/fai/class_faiPartitionTableEntry.inc:477 +#, fuzzy +msgid "File system options" +msgstr "Informazioni organizzazione" + +#: admin/fai/class_faiPartitionTableEntry.inc:478 +#, fuzzy +msgid "Partition flags" +msgstr "Partizioni" + +#: admin/fai/faiVariable.tpl:36 admin/fai/faiScript.tpl:38 +#: admin/fai/faiHook.tpl:38 admin/fai/class_faiProfileEntry.inc:175 +#: admin/fai/faiTemplate.tpl:33 admin/fai/faiPartitionTable.tpl:36 +#, fuzzy +msgid "Objects" +msgstr "Oggetto" + +#: admin/fai/faiVariable.tpl:38 +#, fuzzy +msgid "List of assigned variables" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/faiVariable.tpl:44 +msgid "Choose a variable to delete or edit" +msgstr "" + +#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312 +#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54 +msgid "Edit" +msgstr "Modifica" + +#: admin/fai/class_faiHook.inc:316 +msgid "Delete" +msgstr "Rimuovi" + +#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiTemplate.inc:300 +#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358 +#: admin/fai/class_faiScriptEntry.inc:88 admin/fai/class_faiHookEntry.inc:80 +#, fuzzy +msgid "Download" +msgstr "Dominio" + +#: admin/fai/class_faiHook.inc:553 admin/fai/class_divListFai.inc:64 +msgid "Hook" +msgstr "" + +#: admin/fai/class_faiHook.inc:554 +#, fuzzy +msgid "FAI hook" +msgstr "Mostra errori PHP" + +#: admin/fai/class_faiHook.inc:561 admin/fai/class_faiPartitionTable.inc:549 +#: admin/fai/class_faiVariable.inc:397 +#, fuzzy +msgid "Read only" +msgstr "leggere" + +#: admin/fai/faiProfile.tpl:36 admin/fai/class_faiProfile.inc:480 +#, fuzzy +msgid "FAI classes" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/faiProfile.tpl:37 +#, fuzzy +msgid "Choose a priority" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/faiScriptEntry.tpl:33 +msgid "Properties" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:33 admin/fai/faiScriptEntry.tpl:54 +#, fuzzy +msgid "Script attributes" +msgstr "Attributo DN delle persone" + +#: admin/fai/faiScriptEntry.tpl:38 admin/fai/class_faiScript.inc:328 +#, fuzzy +msgid "Priority" +msgstr "Proxy" + +#: admin/fai/faiScriptEntry.tpl:43 +msgid "" +"Choose a priority. Low values result in an earlier, high values in a later " +"execution." +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:56 admin/fai/faiHookEntry.tpl:56 +#: admin/fai/class_faiScript.inc:637 admin/fai/class_faiScriptEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:158 admin/fai/class_divListFai.inc:62 +msgid "Script" +msgstr "Script" + +#: admin/fai/faiScriptEntry.tpl:75 admin/fai/faiHookEntry.tpl:75 +#, fuzzy +msgid "Import script" +msgstr "Mostra stampanti" + +#: admin/fai/faiScript.tpl:39 +#, fuzzy +msgid "List of scripts" +msgstr "Lista degli utenti" + +#: admin/fai/faiPackage.tpl:33 +#: admin/systems/services/repository/servRepositorySetup.tpl:1 +#: admin/systems/services/repository/class_servRepository.inc:343 +#, fuzzy +msgid "Repository" +msgstr "Riprova" + +#: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25 +#: admin/fai/class_faiPackage.inc:587 +#: admin/systems/services/repository/class_divListRepositories.inc:23 +#: admin/systems/services/repository/servRepositorySetup.tpl:19 +#: admin/systems/services/repository/class_servRepositorySetup.inc:153 +#, fuzzy +msgid "Release" +msgstr "Rimuovi" + +#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:584 +#, fuzzy +msgid "Section" +msgstr "Azione" + +#: admin/fai/faiPackage.tpl:53 +#, fuzzy +msgid "Install method" +msgstr "Metodo di amministrazione della posta" + +#: admin/fai/faiPackage.tpl:57 +#, fuzzy +msgid "Please select the installation method" +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/fai/faiPackage.tpl:71 +#, fuzzy +msgid "Used packages" +msgstr "Mostra telefoni" + +#: admin/fai/faiHook.tpl:39 +#, fuzzy +msgid "List of hook scripts" +msgstr "Lista delle liste di blocchi" + +#: admin/fai/class_faiProfile.inc:289 admin/fai/class_faiProfileEntry.inc:172 +msgid "This list displays all assigned class names for this profile." +msgstr "" + +#: admin/fai/class_faiProfile.inc:292 admin/fai/class_askClassName.inc:83 +#: admin/fai/class_faiProfileEntry.inc:138 +msgid "Hook bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:293 admin/fai/class_askClassName.inc:85 +#: admin/fai/class_faiProfileEntry.inc:139 +msgid "Template bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:294 admin/fai/class_askClassName.inc:81 +#: admin/fai/class_faiProfileEntry.inc:140 +#, fuzzy +msgid "Script bundle" +msgstr "Script path" + +#: admin/fai/class_faiProfile.inc:295 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_faiProfileEntry.inc:141 +msgid "Variable bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:296 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_faiProfileEntry.inc:142 +msgid "Package bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:297 admin/fai/class_askClassName.inc:79 +#: admin/fai/class_faiGroupHandle.inc:100 +#: admin/fai/class_faiProfileEntry.inc:143 +#: admin/fai/class_faiPartitionTable.inc:541 +#: admin/fai/class_divListFai.inc:154 admin/fai/class_divListFai.inc:208 +#: admin/fai/class_faiSummaryTab.inc:48 +msgid "Partition table" +msgstr "" + +#: admin/fai/class_faiProfile.inc:300 +msgid "Remove class from profile" +msgstr "" + +#: admin/fai/class_faiProfile.inc:303 +msgid "Up" +msgstr "" + +#: admin/fai/class_faiProfile.inc:304 +#, fuzzy +msgid "Down" +msgstr "Dominio" + +#: admin/fai/class_faiProfile.inc:391 +msgid "No class specified for this profile!" +msgstr "" + +#: admin/fai/class_faiProfile.inc:470 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_divListFai.inc:58 +#: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218 +#, fuzzy +msgid "Profile" +msgstr "Path del profilo" + +#: admin/fai/class_faiProfile.inc:471 +#, fuzzy +msgid "FAI profile" +msgstr "Riferimenti" + +#: admin/fai/faiPartitionTableEntry.tpl:2 +#, fuzzy +msgid "Device" +msgstr "Dispositivi" + +#: admin/fai/faiPartitionTableEntry.tpl:24 +#, fuzzy +msgid "Partition entries" +msgstr "Destinazione" + +#: admin/fai/faiPartitionTableEntry.tpl:29 +#: admin/fai/faiPartitionTableEntry.tpl:31 +msgid "Add partition" +msgstr "" + +#: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54 +#, fuzzy +msgid "Hook attributes" +msgstr "Attributo DN delle persone" + +#: admin/fai/faiHookEntry.tpl:38 admin/fai/class_faiHookEntry.inc:198 +msgid "Task" +msgstr "" + +#: admin/fai/faiHookEntry.tpl:41 +msgid "Choose an existing FAI task" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:6 +#, fuzzy +msgid "List of available packages" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/faiPackageEntry.tpl:20 admin/fai/faiProfileEntry.tpl:21 +msgid "Information" +msgstr "Informazioni" + +#: admin/fai/faiPackageEntry.tpl:24 +msgid "" +"This menu allows you to select multiple packages to add them to the " +"currently edited package list." +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:30 admin/fai/faiProfileEntry.tpl:31 +msgid "Filters" +msgstr "Filtri" + +#: admin/fai/faiPackageEntry.tpl:40 admin/fai/faiProfileEntry.tpl:54 +#: admin/fai/faiProfileEntry.tpl:55 +msgid "Display objects matching" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:44 admin/fai/faiProfileEntry.tpl:59 +#: admin/systems/services/repository/class_divListRepositories.inc:26 +msgid "Regular expression for matching object names" +msgstr "" + +#: admin/fai/class_faiManagement.inc:25 admin/fai/main.inc:53 +#: admin/fai/main.inc:55 +msgid "Software deployment" +msgstr "" + +#: admin/fai/class_faiManagement.inc:26 +msgid "Manage software packages and deployment reciepes" +msgstr "" + +#: admin/fai/class_faiManagement.inc:338 admin/fai/class_faiManagement.inc:495 +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 admin/fai/class_faiManagement.inc:869 +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "Permission error" +msgstr "Permessi" + +#: admin/fai/class_faiManagement.inc:384 +#, fuzzy +msgid "Branch locked" +msgstr "Annulla" + +#: admin/fai/class_faiManagement.inc:384 +#, php-format +msgid "The following entries are locked, you can't remove them %s." +msgstr "" + +#: admin/fai/class_faiManagement.inc:400 +#, fuzzy +msgid "FAI object" +msgstr "Gruppo di oggetti" + +#: admin/fai/class_faiManagement.inc:492 +msgid "FAI branch/freeze" +msgstr "" + +#: admin/fai/class_faiManagement.inc:495 +#, fuzzy +msgid "You have no permission to delete this release!" +msgstr "Non hai il permesso di cambiare la tua password." + +#: admin/fai/class_faiManagement.inc:513 +msgid "Release remove aborted because the release name check failed!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 +#, fuzzy +msgid "Branch" +msgstr "Annulla" + +#: admin/fai/class_faiManagement.inc:750 +#: admin/fai/class_faiManagement.inc:1025 +#: admin/fai/class_faiManagement.inc:1031 +msgid "Continue" +msgstr "Continua" + +#: admin/fai/class_faiManagement.inc:781 +#: admin/fai/class_faiPackageEntry.inc:53 +#: admin/fai/class_faiPackageEntry.inc:193 admin/fai/class_FAI.inc:553 +#: admin/fai/class_faiPackageConfiguration.inc:35 +#: admin/fai/class_faiPackage.inc:478 +#: admin/systems/services/repository/class_servRepository.inc:326 +#, fuzzy +msgid "Service infrastructure" +msgstr "Seleziona per mostrare le applicazioni" + +#: admin/fai/class_faiManagement.inc:786 admin/fai/class_FAI.inc:1157 +#, fuzzy +msgid "Fatal error" +msgstr "Terminal Server" + +#: admin/fai/class_faiManagement.inc:846 +#, fuzzy +msgid "partition table" +msgstr "Stampante" + +#: admin/fai/class_faiManagement.inc:847 +#, fuzzy +msgid "script" +msgstr "Script" + +#: admin/fai/class_faiManagement.inc:848 +#, fuzzy +msgid "hook" +msgstr "Mostra errori PHP" + +#: admin/fai/class_faiManagement.inc:849 +#, fuzzy +msgid "variable" +msgstr "Variabili" + +#: admin/fai/class_faiManagement.inc:850 +#, fuzzy +msgid "template" +msgstr "Template" + +#: admin/fai/class_faiManagement.inc:851 +#, fuzzy +msgid "package list" +msgstr "Liste di blocco" + +#: admin/fai/class_faiManagement.inc:869 admin/fai/class_faiManagement.inc:886 +#, fuzzy, php-format +msgid "You have no permission to create a new %s!" +msgstr "Non hai il permesso di cambiare la tua password." + +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "profile" +msgstr "Path del profilo" + +#: admin/fai/class_faiManagement.inc:1286 +msgid "" +"The selected release is not available anymore. All triggered actions are " +"skipped." +msgstr "" + +#: admin/fai/class_faiManagement.inc:1411 +#, fuzzy +msgid "FAI releases" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/class_faiManagement.inc:1412 +#, fuzzy +msgid "FAI release management" +msgstr "Riferimenti" + +#: admin/fai/class_faiManagement.inc:1417 +#, fuzzy +msgid "FAI" +msgstr "FAX" + +#: admin/fai/class_faiVariableEntry.inc:94 +#, fuzzy +msgid "Content" +msgstr "Continua" + +#: admin/fai/class_faiVariableEntry.inc:129 +#, fuzzy +msgid "Variable entry" +msgstr "Mostra terminali" + +#: admin/fai/class_faiVariableEntry.inc:130 +#, fuzzy +msgid "FAI variable entry " +msgstr "Mostra il nome" + +#: admin/fai/class_faiVariableEntry.inc:139 admin/fai/faiVariableEntry.tpl:38 +#, fuzzy +msgid "Variable content" +msgstr "Mostra terminali" + +#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288 +#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346 +msgid "edit" +msgstr "modifica" + +#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348 +msgid "delete" +msgstr "elimina" + +#: admin/fai/class_faiTemplate.inc:536 +msgid "Template" +msgstr "" + +#: admin/fai/class_faiTemplate.inc:537 +#, fuzzy +msgid "FAI template" +msgstr "Nuovo template" + +#: admin/fai/class_faiTemplate.inc:544 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiPackage.inc:584 admin/fai/class_faiPackage.inc:587 +#, fuzzy +msgid "Readonly" +msgstr "leggere" + +#: admin/fai/class_faiPackageEntry.inc:38 +#, fuzzy +msgid "Please enter your search string here" +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/fai/class_faiPackageEntry.inc:103 +msgid "" +"This list displays all assigned package names for this repository settings." +msgstr "" + +#: admin/fai/paste_generic.tpl:1 +#, fuzzy +msgid "FAI settings" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/paste_generic.tpl:5 admin/fai/class_faiProfileEntry.inc:174 +#: admin/fai/askClassName.tpl:32 admin/fai/askClassName.tpl:54 +#: admin/fai/class_divListFai.inc:53 +#, fuzzy +msgid "Class name" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/remove_branch.tpl:6 +msgid "" +"This includes all account data, system access, etc. for this branch. Please " +"double check if your really want to do this since there is no way for GOsa " +"to get your data back." +msgstr "" + +#: admin/fai/remove_branch.tpl:10 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Quindi - Se sei sicuro - premi Rimuovi per continuare o Annulla per abortire." + +#: admin/fai/faiProfileEntry.tpl:6 +msgid "List of FAI objects (Fully Automatic Installation)" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:26 +msgid "" +"This menu allows you to select FAI class names and to add them to the " +"currently edited profile." +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:39 +#, fuzzy +msgid "Show only classes with templates" +msgstr "Mostra utenti template" + +#: admin/fai/faiProfileEntry.tpl:41 +msgid "Show only classes with scripts" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:43 +msgid "Show only classes with hooks" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:45 +#, fuzzy +msgid "Show only classes with variables" +msgstr "Mostra terminali" + +#: admin/fai/faiProfileEntry.tpl:47 +msgid "Show only classes with packages" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:49 +#, fuzzy +msgid "Show only classes with partitions" +msgstr "Mostra workstation" + +#: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_askClassName.inc:85 admin/fai/class_askClassName.inc:86 +#, fuzzy +msgid "Create new FAI object" +msgstr "Gruppo di oggetti" + +#: admin/fai/class_faiGroupHandle.inc:102 admin/fai/class_divListFai.inc:164 +#: admin/fai/class_divListFai.inc:210 admin/fai/class_faiSummaryTab.inc:49 +msgid "Package list" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:104 admin/fai/class_divListFai.inc:156 +#: admin/fai/class_divListFai.inc:212 admin/fai/class_faiSummaryTab.inc:44 +#, fuzzy +msgid "Scripts" +msgstr "Script path" + +#: admin/fai/class_faiGroupHandle.inc:106 admin/fai/class_divListFai.inc:160 +#: admin/fai/class_divListFai.inc:214 admin/fai/class_faiSummaryTab.inc:46 +msgid "Variables" +msgstr "Variabili" + +#: admin/fai/class_faiGroupHandle.inc:108 admin/fai/class_divListFai.inc:158 +#: admin/fai/class_divListFai.inc:216 admin/fai/class_faiSummaryTab.inc:45 +msgid "Hooks" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:112 admin/fai/class_divListFai.inc:220 +#: admin/fai/class_faiSummaryTab.inc:47 +msgid "Templates" +msgstr "Template" + +#: admin/fai/class_faiGroupHandle.inc:114 admin/fai/class_divListFai.inc:76 +#: admin/fai/class_divListFai.inc:222 +msgid "OPSI netboot product" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:116 +msgid "OPSI local product" +msgstr "" + +#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68 +#: admin/fai/class_faiPackage.inc:573 +#, fuzzy +msgid "Package" +msgstr "Pacchetti" + +#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316 +#, fuzzy +msgid "Sort direction" +msgstr "Azione" + +#: admin/fai/class_faiScript.inc:332 +msgid "Action" +msgstr "Azione" + +#: admin/fai/class_faiScript.inc:638 admin/fai/class_faiHookEntry.inc:199 +#, fuzzy +msgid "FAI script" +msgstr "Mostra stampanti" + +#: admin/fai/class_FAI.inc:259 admin/fai/class_FAI.inc:662 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/fai/class_FAI.inc:535 +#, php-format +msgid "Error, following objects should be equal '%s' and '%s'" +msgstr "" + +#: admin/fai/class_FAI.inc:874 +#, php-format +msgid "Creating group application release for %s" +msgstr "" + +#: admin/fai/class_FAI.inc:943 admin/fai/class_FAI.inc:965 +#: admin/fai/class_FAI.inc:1005 admin/fai/class_FAI.inc:1010 +#: admin/fai/class_FAI.inc:1048 +msgid "Object" +msgstr "Oggetto" + +#: admin/fai/class_FAI.inc:944 +#, php-format +msgid "Adding missing group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:966 +#, php-format +msgid "Adding group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1006 +#, fuzzy, php-format +msgid "Could not create menu entry %s. (Already exists)." +msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#: admin/fai/class_FAI.inc:1011 +#, php-format +msgid "Created group application menu entry for %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1042 +#, fuzzy, php-format +msgid "Creating copy of %s" +msgstr "Lista degli utenti di %s su %s" + +#: admin/fai/class_FAI.inc:1045 +msgid "Processing" +msgstr "" + +#: admin/fai/class_FAI.inc:1063 +#, fuzzy +msgid "Could not create new release, the destination dn is already in use." +msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#: admin/fai/class_FAI.inc:1076 +msgid "Error while fetching source dn - aborted!" +msgstr "" + +#: admin/fai/class_FAI.inc:1158 +#, php-format +msgid "" +"Release creation failed due to ldap errors. Additional informations '%s'." +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#, fuzzy +msgid "file is empty" +msgstr "Rimuovi" + +#: admin/fai/class_faiScriptEntry.inc:181 +#: admin/fai/class_faiScriptEntry.inc:191 +#, fuzzy +msgid "Script entry" +msgstr "Mostra terminali" + +#: admin/fai/class_faiScriptEntry.inc:182 +#, fuzzy +msgid "FAI script entry" +msgstr "Mostra stampanti" + +#: admin/fai/class_faiScriptEntry.inc:192 +#, fuzzy +msgid "Script Priority" +msgstr "Script path" + +#: admin/fai/faiSummary.tpl:4 +msgid "FAI object tree" +msgstr "" + +#: admin/fai/faiSummary.tpl:11 +msgid "Reload class and release configuration from parent object." +msgstr "" + +#: admin/fai/faiSummary.tpl:22 +#, fuzzy +msgid "You are not allowed to view the fai summary." +msgstr "Non hai il permesso di cambiare la tua password." + +#: admin/fai/faiTemplate.tpl:34 +#, fuzzy +msgid "List of template files" +msgstr "Lista dei dipartimenti" + +#: admin/fai/class_faiPartitionTable.inc:301 +#: admin/fai/class_faiPartitionTable.inc:307 +#, fuzzy, php-format +msgid "%s partition" +msgstr "Mostra workstation" + +#: admin/fai/class_faiPartitionTable.inc:303 +#: admin/fai/class_faiPartitionTable.inc:309 +#, fuzzy, php-format +msgid "%s partition(s)" +msgstr "Mostra workstation" + +#: admin/fai/class_faiPartitionTable.inc:542 +#, fuzzy +msgid "FAI partition table" +msgstr "Stampante" + +#: admin/fai/branch_selector.tpl:2 +#: admin/systems/services/repository/class_servRepository.inc:358 +#, fuzzy +msgid "Releases" +msgstr "Rimuovi" + +#: admin/fai/branch_selector.tpl:8 +#, fuzzy +msgid "Current release" +msgstr "Password attuale" + +#: admin/fai/branch_selector.tpl:20 admin/fai/branch_selector.tpl:26 +#, fuzzy +msgid "Create release" +msgstr "Password attuale" + +#: admin/fai/branch_selector.tpl:23 admin/fai/branch_selector.tpl:29 +#, fuzzy +msgid "Create read-only release" +msgstr "Password attuale" + +#: admin/fai/branch_selector.tpl:28 +#, fuzzy +msgid "Freeze" +msgstr "Numero di telefono" + +#: admin/fai/branch_selector.tpl:35 +#, fuzzy +msgid "Delete current release" +msgstr "Rimuovi" + +#: admin/fai/faiVariableEntry.tpl:33 +#, fuzzy +msgid "Variable attributes" +msgstr "Attributo DN delle persone" + +#: admin/fai/class_faiHookEntry.inc:188 +#, fuzzy +msgid "Hook entry" +msgstr "Elimina contatto" + +#: admin/fai/class_faiHookEntry.inc:189 +#, fuzzy +msgid "FAI hook entry" +msgstr "Mostra errori PHP" + +#: admin/fai/faiNewBranch.tpl:5 +msgid "" +"You are now going to create a branch or locked branch. This action clones " +"the existing release to another release name. Branches can be modified as " +"usual. FAI classes of locked branches cannot be modified, just additional " +"classes are possible. Branch names should be alphanumeric, excluding the " +"reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' " +"and 'fai'." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:7 +msgid "" +"Branches are created as subreleases of the currently selected branch. " +"Creating a new branch named 1.0.2 in SARGE for example, will result in a new " +"release called SARGE/1.0.2." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:13 +#, fuzzy +msgid "Please enter a name for the branch" +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/fai/faiNewBranch.tpl:34 +msgid "Processing the requested operation" +msgstr "" + +#: admin/fai/faiNewBranch.tpl:35 +msgid "" +"As soon as the copy operation has finished, you can scroll down to end of " +"the page and press the 'Continue' button to continue with the fai management " +"dialog." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:41 +msgid "" +"Your browser doesn't support iframes, please use this link to perform the " +"requested operation." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Perform requested operation." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:43 +#, fuzzy +msgid "Initiate operation" +msgstr "Contatto" + +#: admin/fai/askClassName.tpl:6 +msgid "" +"Adding a new class to the FAI management, requires a class name. You have to " +"specify a unique class name for unique types of FAI classes, while you can " +"use the same class name for different types of FAI classes. In the laste " +"case, FAI will automatically enclose all these different class types to one " +"unique class name." +msgstr "" + +#: admin/fai/askClassName.tpl:12 +msgid "" +"Please use one of the following methods to choose the name for the new FAI " +"class." +msgstr "" + +#: admin/fai/askClassName.tpl:26 +msgid "Enter FAI class name manually" +msgstr "" + +#: admin/fai/askClassName.tpl:48 +msgid "Choose FAI class name from a list of existing classes" +msgstr "" + +#: admin/fai/askClassName.tpl:54 +#, fuzzy +msgid "Choose class name" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/askClassName.tpl:70 admin/fai/askClassName.tpl:77 +#, fuzzy +msgid "Use" +msgstr "Utenti" + +#: admin/fai/askClassName.tpl:74 +#, fuzzy +msgid "A new class name." +msgstr "Applicazioni disponibili" + +#: admin/fai/class_faiPackageConfiguration.inc:68 +#, php-format +msgid "Debconf information for package '%s'" +msgstr "" + +#: admin/fai/class_faiVariable.inc:389 admin/fai/class_divListFai.inc:60 +#: admin/fai/class_divListFai.inc:66 +msgid "Variable" +msgstr "" + +#: admin/fai/class_faiVariable.inc:390 +#, fuzzy +msgid "FAI variable" +msgstr "Mostra il nome" + +#: admin/fai/class_divListFai.inc:32 +#, fuzzy +msgid "List of classes" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/class_divListFai.inc:33 +#, fuzzy +msgid "List of deployment classes and products" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/class_divListFai.inc:48 +#, fuzzy +msgid "Select all" +msgstr "Rimuovi" + +#: admin/fai/class_divListFai.inc:54 +#, fuzzy +msgid "Class types" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/fai/class_divListFai.inc:55 admin/fai/class_divListFai.inc:138 +msgid "Actions" +msgstr "Azioni" + +#: admin/fai/class_divListFai.inc:57 admin/fai/class_divListFai.inc:59 +#: admin/fai/class_divListFai.inc:61 admin/fai/class_divListFai.inc:63 +#: admin/fai/class_divListFai.inc:65 admin/fai/class_divListFai.inc:67 +#: admin/fai/class_divListFai.inc:69 admin/fai/class_divListFai.inc:75 +#: admin/fai/class_divListFai.inc:77 +#, php-format +msgid "Display objects of type '%s'." +msgstr "" + +#: admin/fai/class_divListFai.inc:58 +#, fuzzy +msgid "Show profiles" +msgstr "Mostra stampanti" + +#: admin/fai/class_divListFai.inc:60 +msgid "Show templates" +msgstr "Mostra utenti template" + +#: admin/fai/class_divListFai.inc:62 +#, fuzzy +msgid "Show scripts" +msgstr "Mostra stampanti" + +#: admin/fai/class_divListFai.inc:64 +#, fuzzy +msgid "Show hooks" +msgstr "Mostra telefoni" + +#: admin/fai/class_divListFai.inc:66 +#, fuzzy +msgid "Show variables" +msgstr "Mostra terminali" + +#: admin/fai/class_divListFai.inc:68 +#, fuzzy +msgid "Show packages" +msgstr "Mostra telefoni" + +#: admin/fai/class_divListFai.inc:70 +#, fuzzy +msgid "Partition" +msgstr "Partizioni" + +#: admin/fai/class_divListFai.inc:70 +#, fuzzy +msgid "Show partitions" +msgstr "Mostra workstation" + +#: admin/fai/class_divListFai.inc:76 +#, fuzzy +msgid "Show netboot products" +msgstr "Gruppi di oggetti" + +#: admin/fai/class_divListFai.inc:78 admin/fai/class_divListFai.inc:224 +#, fuzzy +msgid "OPSI localboot product" +msgstr "Gruppi di oggetti" + +#: admin/fai/class_divListFai.inc:78 +#, fuzzy +msgid "Show localboot products" +msgstr "Gruppi di oggetti" + +#: admin/fai/class_divListFai.inc:86 +msgid "Display users matching" +msgstr "Mostra utenti che corrispondono a" + +#: admin/fai/class_divListFai.inc:140 +msgid "Create" +msgstr "Creare" + +#: admin/fai/class_divListFai.inc:155 +msgid "PT" +msgstr "" + +#: admin/fai/class_divListFai.inc:157 +msgid "S" +msgstr "" + +#: admin/fai/class_divListFai.inc:159 +msgid "H" +msgstr "" + +#: admin/fai/class_divListFai.inc:161 +msgid "V" +msgstr "" + +#: admin/fai/class_divListFai.inc:162 +#, fuzzy +msgid "Templates " +msgstr "Template" + +#: admin/fai/class_divListFai.inc:163 +#, fuzzy +msgid "I" +msgstr "Unix" + +#: admin/fai/class_divListFai.inc:165 +msgid "PK" +msgstr "" + +#: admin/fai/class_divListFai.inc:313 admin/fai/class_divListFai.inc:314 +#: admin/fai/class_divListFai.inc:315 admin/fai/class_divListFai.inc:316 +#: admin/fai/class_divListFai.inc:317 admin/fai/class_divListFai.inc:318 +#: admin/fai/class_divListFai.inc:319 admin/fai/class_divListFai.inc:320 +#: admin/fai/class_divListFai.inc:321 admin/fai/class_divListFai.inc:322 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Lista degli utenti" + +#: admin/fai/class_divListFai.inc:313 +#, fuzzy +msgid "profiles" +msgstr "Path del profilo" + +#: admin/fai/class_divListFai.inc:314 +#, fuzzy +msgid "partitions" +msgstr "Mostra workstation" + +#: admin/fai/class_divListFai.inc:315 +#, fuzzy +msgid "scripts" +msgstr "Script" + +#: admin/fai/class_divListFai.inc:316 +#, fuzzy +msgid "hooks" +msgstr "Mostra errori PHP" + +#: admin/fai/class_divListFai.inc:317 +#, fuzzy +msgid "variables" +msgstr "Variabili" + +#: admin/fai/class_divListFai.inc:318 +#, fuzzy +msgid "templates" +msgstr "Template" + +#: admin/fai/class_divListFai.inc:319 +#, fuzzy +msgid "packages" +msgstr "Pacchetti" + +#: admin/fai/class_divListFai.inc:320 +#, fuzzy +msgid "departments" +msgstr "Imposta dipartimento" + +#: admin/fai/class_divListFai.inc:321 +#, fuzzy +msgid "netboot products" +msgstr "Gruppi di oggetti" + +#: admin/fai/class_divListFai.inc:322 +#, fuzzy +msgid "localboot products" +msgstr "Gruppi di oggetti" + +#: admin/fai/class_faiPackage.inc:329 admin/fai/class_faiPackage.inc:330 +#, fuzzy +msgid "Configured" +msgstr "Configura" + +#: admin/fai/class_faiPackage.inc:336 admin/fai/class_faiPackage.inc:337 +msgid "Package marked for removal" +msgstr "" + +#: admin/fai/class_faiPackage.inc:353 +msgid "Mark package for removal" +msgstr "" + +#: admin/fai/class_faiPackage.inc:359 +msgid "Configure this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:363 +msgid "Remove this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:442 +#, fuzzy +msgid "Please select a least one package!" +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/fai/class_faiPackage.inc:446 +#, fuzzy +msgid "" +"Please choose a valid release/section combination for your repository setup!" +msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#: admin/fai/class_faiPackage.inc:574 +#, fuzzy +msgid "FAI Package list" +msgstr "Liste di blocco" + +#: admin/fai/class_faiPackage.inc:583 +msgid "Packages" +msgstr "Pacchetti" + +#: admin/fai/class_faiPackage.inc:585 +#, fuzzy +msgid "Install Method" +msgstr "Metodo di amministrazione della posta" + +#: admin/fai/class_faiPackage.inc:586 +#, fuzzy +msgid "Package configuration" +msgstr "Scarica il file di configurazione" + +#: admin/fai/class_faiTemplateEntry.inc:90 +msgid "no file uploaded yet" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:96 +#, php-format +msgid "exists in database (size: %s bytes)" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:265 +#, fuzzy +msgid "Template entry" +msgstr "Template" + +#: admin/fai/class_faiTemplateEntry.inc:266 +#, fuzzy +msgid "FAI template entry" +msgstr "Nuovo template" + +#: admin/fai/class_faiTemplateEntry.inc:275 +#, fuzzy +msgid "Template file" +msgstr "Template" + +#: admin/fai/class_faiTemplateEntry.inc:276 +#, fuzzy +msgid "Template path" +msgstr "Template" + +#: admin/fai/class_faiTemplateEntry.inc:277 +#, fuzzy +msgid "File owner" +msgstr "Cognome" + +#: admin/fai/class_faiTemplateEntry.inc:278 +#, fuzzy +msgid "File permissions" +msgstr "Permessi" + +#: admin/fai/class_faiSummaryTab.inc:50 +msgid "Profiles" +msgstr "Profili" + +#: admin/fai/class_faiSummaryTab.inc:89 +msgid "Unknown FAI information source!" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:178 +#: admin/systems/services/repository/class_servRepository.inc:93 +msgid "You can't use this plugin until FAI is activated." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:220 +msgid "This object has no FAI classes assigned." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:233 +#, fuzzy +msgid "Open" +msgstr "Opzioni" + +#: admin/fai/class_faiSummaryTab.inc:239 +#, fuzzy +msgid "Close" +msgstr "Scegli" + +#: admin/fai/class_faiSummaryTab.inc:342 +#, fuzzy +msgid "No." +msgstr "nessuno" + +#: admin/fai/class_faiSummaryTab.inc:344 +#, fuzzy +msgid "FS options" +msgstr "Opzioni" + +#: admin/fai/faiPartitionTable.tpl:38 +#, fuzzy +msgid "Discs" +msgstr "Dispositivi" + +#: admin/fai/faiPartitionTable.tpl:44 +msgid "Choose a disk to delete or edit" +msgstr "" + +#: admin/fai/class_debconfTemplate.inc:207 +#, fuzzy +msgid "This package has no debconf options." +msgstr "Questa identità non possiede estensioni telefoniche" + +#: admin/systems/services/repository/class_divListRepositories.inc:19 +#, fuzzy +msgid "List of configured repositories" +msgstr "Lista degli utenti" + +#: admin/systems/services/repository/class_divListRepositories.inc:20 +msgid "This menu allows you to create, delete and edit repository settings." +msgstr "" + +#: admin/systems/services/repository/class_divListRepositories.inc:24 +#: admin/systems/services/repository/class_divListRepositories.inc:64 +#: admin/systems/services/repository/servRepositorySetup.tpl:39 +#: admin/systems/services/repository/class_servRepository.inc:360 +#, fuzzy +msgid "Sections" +msgstr "Azione" + +#: admin/systems/services/repository/class_divListRepositories.inc:25 +msgid "Options" +msgstr "Opzioni" + +#: admin/systems/services/repository/class_divListRepositories.inc:33 +#, fuzzy +msgid "Add repository" +msgstr "Directory" + +#: admin/systems/services/repository/servRepositorySetup.tpl:8 +#: admin/systems/services/repository/class_servRepository.inc:357 +#, fuzzy +msgid "Parent server" +msgstr "server" + +#: admin/systems/services/repository/servRepositorySetup.tpl:28 +#: admin/systems/services/repository/class_servRepository.inc:359 +#: admin/systems/services/repository/class_servRepositorySetup.inc:157 +msgid "URL" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:26 +#: admin/systems/services/repository/class_servRepository.inc:308 +#: admin/systems/services/repository/class_servRepository.inc:344 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +#, fuzzy +msgid "Repository service" +msgstr "Riprova" + +#: admin/systems/services/repository/class_servRepository.inc:142 +#, fuzzy +msgid "FAI release" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/systems/services/repository/class_servRepository.inc:344 +msgid "Services" +msgstr "Servizi" + +#, fuzzy +#~ msgid "Deployment status" +#~ msgstr "Stato" + +#, fuzzy +#~ msgid "System deployment status" +#~ msgstr "Dipartimento" + +#, fuzzy +#~ msgid "Permission" +#~ msgstr "Permessi" + +#, fuzzy +#~ msgid "List of queued jobs" +#~ msgstr "Lista dei dipartimenti" + +#~ msgid "Import" +#~ msgstr "Importa" + +#, fuzzy +#~ msgid "Resume" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Pause" +#~ msgstr "Data" + +#, fuzzy +#~ msgid "Reload" +#~ msgstr "leggere" + +#, fuzzy +#~ msgid "Target" +#~ msgstr "reset" + +#, fuzzy +#~ msgid "Schedule" +#~ msgstr "Estenzioni PHPGroupware" + +#~ msgid "Status" +#~ msgstr "Stato" + +#, fuzzy +#~ msgid "Move up" +#~ msgstr "Dominio" + +#, fuzzy +#~ msgid "Move down" +#~ msgstr "Dominio" + +#, fuzzy +#~ msgid "Execute now" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Waiting" +#~ msgstr "Attenzione" + +#, fuzzy +#~ msgid "Detection" +#~ msgstr "Azione" + +#, fuzzy +#~ msgid "Cannot update queue entry: %s" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot load queue entries: %s" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "System deployment" +#~ msgstr "Dipartimento" + +#, fuzzy +#~ msgid "System list" +#~ msgstr "Accesso ai sistemi" + +#, fuzzy +#~ msgid "ID" +#~ msgstr "GID" + +#, fuzzy +#~ msgid "Timestamp" +#~ msgstr "Timeout" + +#, fuzzy +#~ msgid "Targets" +#~ msgstr "reset" + +#, fuzzy +#~ msgid "System / Department" +#~ msgstr "Dipartimento" + +#, fuzzy +#~ msgid "Display users" +#~ msgstr "Mostra utenti che corrispondono a" + +#, fuzzy +#~ msgid "Display groups" +#~ msgstr "Mostra gruppi di utenti" + +#~ msgid "Base" +#~ msgstr "Base" + +#~ msgid "Submit department" +#~ msgstr "Imposta dipartimento" + +#, fuzzy +#~ msgid "Abort installation" +#~ msgstr "Amministrazione" + +#, fuzzy +#~ msgid "Reload GOto settings" +#~ msgstr "Impostazioni Unix" + +#, fuzzy +#~ msgid "System analysis" +#~ msgstr "Sistemi" + +#, fuzzy +#~ msgid "Installation activation" +#~ msgstr "Amministrazione" + +#, fuzzy +#~ msgid "Time schedule" +#~ msgstr "Estenzioni PHPGroupware" + +#, fuzzy +#~ msgid "Year" +#~ msgstr "Cerca" + +#, fuzzy +#~ msgid "Month" +#~ msgstr "mese" + +#, fuzzy +#~ msgid "Day" +#~ msgstr "giorno" + +#, fuzzy +#~ msgid "Hour" +#~ msgstr "ora" + +#, fuzzy +#~ msgid "Minute" +#~ msgstr "Stampante" + +#, fuzzy +#~ msgid "Second" +#~ msgstr "Azione" + +#, fuzzy +#~ msgid "Reload fai release db" +#~ msgstr "Nome applicazione" + +#, fuzzy +#~ msgid "Send message" +#~ msgstr "Home Page" + +#, fuzzy +#~ msgid "Subject" +#~ msgstr "Oggetto" + +#, fuzzy +#~ msgid "Message" +#~ msgstr "Home Page" + +#, fuzzy +#~ msgid "Create '%s' job" +#~ msgstr "Gruppo di oggetti" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Apply" +#~ msgstr "Applica" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "Display server" +#~ msgstr "Mostra il nome" + +#, fuzzy +#~ msgid "Display workstation" +#~ msgstr "Mostra utenti che corrispondono a" + +#, fuzzy +#~ msgid "Display object groups" +#~ msgstr "Nome del gruppo" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "Object group" +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Activate new" +#~ msgstr "Privato" + +#, fuzzy +#~ msgid "Progress" +#~ msgstr "Profili" + +#, fuzzy +#~ msgid "Message settings" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Sender" +#~ msgstr "Generale" + +#, fuzzy +#~ msgid "Target users" +#~ msgstr "Utenti di Dominio" + +#, fuzzy +#~ msgid "Target groups" +#~ msgstr "dipartimenti" + +#, fuzzy +#~ msgid "Available targets" +#~ msgstr "Applicazioni disponibili" + +#~ msgid "Object name" +#~ msgstr "Nome dell'oggetto" + +#, fuzzy +#~ msgid "Select to see object groups" +#~ msgstr "Mostra gruppi che contengono gruppi" + +#, fuzzy +#~ msgid "Show object groups" +#~ msgstr "Gruppi di oggetti" + +#~ msgid "Show servers" +#~ msgstr "Mostra server" + +#, fuzzy +#~ msgid "Select to see workstations" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#~ msgid "Show workstations" +#~ msgstr "Mostra workstation" + +#, fuzzy +#~ msgid "Select to see incoming objects" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#, fuzzy +#~ msgid "Show new objects" +#~ msgstr "Oggetti membri" + +#~ msgid "Regular expression for matching group names" +#~ msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#, fuzzy +#~ msgid "Available logs" +#~ msgstr "Applicazioni disponibili" + +#, fuzzy +#~ msgid "Selected log" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Import jobs" +#~ msgstr "Importa" + +#, fuzzy +#~ msgid "timestamp" +#~ msgstr "Timeout" + +#, fuzzy +#~ msgid "MAC-address" +#~ msgstr "Indirizzo" + +#, fuzzy +#~ msgid "job type" +#~ msgstr "Tipo" + +#, fuzzy +#~ msgid "object group" +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "import base" +#~ msgstr "Nome applicazione" + +#, fuzzy +#~ msgid "IP-address" +#~ msgstr "Indirizzo" + +#, fuzzy +#~ msgid "Select list to import" +#~ msgstr "Seleziona un sistema da aggiungere" + +#, fuzzy +#~ msgid "Browse" +#~ msgstr "Base" + +#, fuzzy +#~ msgid "MAC" +#~ msgstr "ACL" + +#, fuzzy +#~ msgid "IP" +#~ msgstr "Unix" + +#~ msgid "none" +#~ msgstr "nessuno" + +#, fuzzy +#~ msgid "Date" +#~ msgstr "Data" + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "Dipartimento" + +#, fuzzy +#~ msgid "Edit product" +#~ msgstr "classe" + +#, fuzzy +#~ msgid "Edit class" +#~ msgstr "classe" + +#, fuzzy +#~ msgid "Delete class" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Opsi netboot package" +#~ msgstr "Mostra telefoni" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Azienda" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Sudo generic" +#~ msgstr "Generale" + +#, fuzzy +#~ msgid "package is configured" +#~ msgstr "non configurata" + +#, fuzzy +#~ msgid "Branches" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "Create new branch" +#~ msgstr "Crea in" + +#, fuzzy +#~ msgid "Create new locked branch" +#~ msgstr "Crea nuova conferenza" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Choosen packages" +#~ msgstr "Mostra telefoni" + +#, fuzzy +#~ msgid "File system encryption" +#~ msgstr "Informazioni organizzazione" + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "L'indirizzo principale inserito è già in uso." + +#, fuzzy +#~ msgid "Please enter a script!" +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "Branch name is not valid!" +#~ msgstr "Il valore specificato per l'UID non è valido." + +#, fuzzy +#~ msgid "Freeze name is not valid!" +#~ msgstr "Il valore specificato per l'UID non è valido." + +#, fuzzy +#~ msgid "You have no permission to create a new branch!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "There is already a template with the given name." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please specify a value for attribute 'file'." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please specify a valid value for attribute 'Destination path'." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please enter a file name." +#~ msgstr "Inserisci la URI del server LDAP" + +#, fuzzy +#~ msgid "Please enter a user." +#~ msgstr "Inserisci la URI del server LDAP" + +#, fuzzy +#~ msgid "Please enter a valid user. Only a-z/0-9 are allowed." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please enter a group." +#~ msgstr "Inserisci la URI del server LDAP" + +#, fuzzy +#~ msgid "Please enter a valid group. Only a-z/0-9 are allowed." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Create new FAI object - partition table." +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Create new FAI object - package bundle." +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Create new FAI object - script bundle." +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Create new FAI object - variable bundle." +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Create new FAI object - hook bundle." +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Create new FAI object - profile." +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Create new FAI object - template." +#~ msgstr "Nuovo template" + +#, fuzzy +#~ msgid "Spaces are not allowed within class names." +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "There is already a variable with the given name." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please specify a value for the attribute 'content'." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please enter a name." +#~ msgstr "Inserisci la URI del server LDAP" + +#, fuzzy +#~ msgid "Display FAI template objects" +#~ msgstr "Lista dei dipartimenti" + +#, fuzzy +#~ msgid "Display FAI scripts" +#~ msgstr "Lista degli utenti" + +#, fuzzy +#~ msgid "Display FAI hooks" +#~ msgstr "Mostra errori PHP" + +#, fuzzy +#~ msgid "Display FAI variables" +#~ msgstr "Mostra il nome" + +#, fuzzy +#~ msgid "Display FAI packages" +#~ msgstr "Mostra il nome" + +#, fuzzy +#~ msgid "Display FAI partitions" +#~ msgstr "Mostra workstation" + +#, fuzzy +#~ msgid "Number of listed variables" +#~ msgstr "Scegli il tuo numero di telefono personale" + +#, fuzzy +#~ msgid "Number of listed templates" +#~ msgstr "Opzioni di accesso" + +#, fuzzy +#~ msgid "Number of listed packages" +#~ msgstr "Mostra telefoni" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Imposta dipartimento" + +#, fuzzy +#~ msgid "Please specify a valid disc name." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please enter a valid mount point for partition %s." +#~ msgstr "Inserire un nome cartella valido per il campo 'Home directory'." + +#, fuzzy +#~ msgid "Please enter a valid partition size for partition %s." +#~ msgstr "Inserire un nome cartella valido per il campo 'Home directory'." + +#, fuzzy +#~ msgid "Please enter a valid range for partition %s." +#~ msgstr "Inserire un nome cartella valido per il campo 'Home directory'." + +#, fuzzy +#~ msgid "Please enter a range for partition size for partition %s." +#~ msgstr "Inserire un nome cartella valido per il campo 'Home directory'." + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Back" +#~ msgstr "Indietro" + +#, fuzzy +#~ msgid "Saving of FAI/package list with dn '%s' failed." +#~ msgstr "Stampante" + +#, fuzzy +#~ msgid "Saving of FAI/hook with dn '%s' failed." +#~ msgstr "Stampante" + +#, fuzzy +#~ msgid "Saving of FAI/variable with dn '%s' failed." +#~ msgstr "Stampante" + +#, fuzzy +#~ msgid "Saving of FAI/template with dn '%s' failed." +#~ msgstr "Lista dei dipartimenti" + +#, fuzzy +#~ msgid "Creating of FAI/script with dn '%s' failed." +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Saving of FAI/partition table with dn '%s' failed." +#~ msgstr "Stampante" + +#, fuzzy +#~ msgid "Saving of FAI/profile with dn '%s' failed." +#~ msgstr "Stampante" + +#, fuzzy +#~ msgid "Please select a valid file." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "There is already a hook with the given name." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please enter a value for script." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "There is already a script with the given name." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please enter a valid name." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "There is already a FAI object with this class name defined." +#~ msgstr "Prego inserire un numero di telefono valido!" diff --git a/trunk/gosa-plugins/fai/locale/messages.po b/trunk/gosa-plugins/fai/locale/messages.po new file mode 100644 index 000000000..2db1e2700 --- /dev/null +++ b/trunk/gosa-plugins/fai/locale/messages.po @@ -0,0 +1,1435 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/fai/faiTemplateEntry.tpl:3 admin/fai/faiVariable.tpl:4 +#: admin/fai/faiProfile.tpl:4 admin/fai/faiProfile.tpl:36 +#: admin/fai/faiScriptEntry.tpl:5 admin/fai/faiScript.tpl:4 +#: admin/fai/faiPackage.tpl:4 admin/fai/faiHook.tpl:4 +#: admin/fai/faiPartitionTableEntry.tpl:2 admin/fai/faiHookEntry.tpl:5 +#: admin/fai/faiTemplate.tpl:4 admin/fai/faiVariableEntry.tpl:5 +#: admin/fai/faiPartitionTable.tpl:4 +msgid "Generic" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:10 admin/fai/class_faiTemplateEntry.inc:220 +msgid "File name" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:21 admin/fai/class_faiTemplateEntry.inc:215 +msgid "Destination path" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:33 +#: admin/fai/class_faiPartitionTableEntry.inc:470 admin/fai/faiVariable.tpl:21 +#: admin/fai/class_faiHook.inc:562 admin/fai/faiProfile.tpl:21 +#: admin/fai/faiScriptEntry.tpl:19 admin/fai/faiScript.tpl:21 +#: admin/fai/faiPackage.tpl:21 admin/fai/faiHook.tpl:21 +#: admin/fai/class_faiProfile.inc:479 admin/fai/faiPartitionTableEntry.tpl:13 +#: admin/fai/faiHookEntry.tpl:19 admin/fai/class_faiVariableEntry.inc:138 +#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646 +#: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiTemplate.tpl:21 +#: admin/fai/class_faiPartitionTable.inc:550 admin/fai/faiVariableEntry.tpl:19 +#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398 +#: admin/fai/class_faiPackage.inc:582 admin/fai/class_faiTemplateEntry.inc:274 +#: admin/fai/faiPartitionTable.tpl:21 +msgid "Description" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:45 +msgid "Template attributes" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:53 admin/fai/class_faiTemplateEntry.inc:211 +msgid "File" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:60 +msgid "Save template" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:69 +msgid "Upload" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:76 +msgid "Full path" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:92 +msgid "Owner" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:103 admin/fai/faiTemplateEntry.tpl:145 +#: admin/fai/class_faiTemplateEntry.inc:230 +#: admin/fai/class_faiTemplateEntry.inc:233 +#: admin/fai/class_faiTemplateEntry.inc:235 +msgid "Group" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:114 +msgid "Access" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:120 +msgid "Class" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:121 +msgid "Read" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:122 +msgid "Write" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:123 +msgid "Execute" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:125 +msgid "Special" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:128 admin/fai/class_faiTemplateEntry.inc:224 +#: admin/fai/class_faiTemplateEntry.inc:226 +msgid "User" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:142 +msgid "SUID" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:159 +msgid "SGID" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:162 +msgid "Others" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:176 +msgid "sticky" +msgstr "" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/class_faiHook.inc:239 admin/fai/tabsPartition.inc:34 +#: admin/fai/class_faiProfile.inc:262 admin/fai/class_faiManagement.inc:238 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiManagement.inc:899 admin/fai/class_faiManagement.inc:943 +#: admin/fai/class_faiManagement.inc:967 +#: admin/fai/class_faiManagement.inc:1216 admin/fai/class_faiTemplate.inc:212 +#: admin/fai/tabsVariable.inc:33 admin/fai/tabsPackage.inc:33 +#: admin/fai/class_faiScript.inc:229 admin/fai/class_FAI.inc:535 +#: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62 +#: admin/fai/tabsHook.inc:32 admin/fai/class_faiPartitionTable.inc:180 +#: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:272 +#: admin/fai/class_faiSummaryTab.inc:89 admin/fai/tabsProfile.inc:33 +#: admin/systems/services/repository/class_servRepository.inc:142 +#: admin/systems/services/repository/class_servRepository.inc:177 +#: admin/systems/services/repository/class_servRepository.inc:182 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Error" +msgstr "" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/tabsPartition.inc:34 admin/fai/tabsVariable.inc:33 +#: admin/fai/tabsPackage.inc:33 admin/fai/tabsHook.inc:32 +#: admin/fai/tabsProfile.inc:33 +msgid "Moving the tree failed. Destination tree is subtree of source tree." +msgstr "" + +#: admin/fai/remove.tpl:2 admin/fai/class_faiManagement.inc:513 +#: admin/fai/class_faiManagement.inc:1286 admin/fai/remove_branch.tpl:2 +msgid "Warning" +msgstr "" + +#: admin/fai/remove.tpl:7 +msgid "" +"This includes 'all' object information. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/fai/remove.tpl:11 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/fai/faiGroupHandle.tpl:3 +msgid "Please select the objects you want to remove:" +msgstr "" + +#: admin/fai/faiGroupHandle.tpl:22 admin/fai/class_divListFai.inc:145 +msgid "Freezed" +msgstr "" + +#: admin/fai/faiGroupHandle.tpl:30 +msgid "Select the object you want to edit:" +msgstr "" + +#: admin/fai/faiGroupHandle.tpl:53 +msgid "Select the object you want to copy:" +msgstr "" + +#: admin/fai/faiGroupHandle.tpl:76 +msgid "Select the object you want to cut:" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "primary" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "logical" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:183 +#: admin/fai/class_faiSummaryTab.inc:348 +msgid "Type" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:184 +msgid "FS type" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:185 +#: admin/fai/class_faiPartitionTableEntry.inc:474 +#: admin/fai/class_faiSummaryTab.inc:347 +msgid "Mount point" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:186 +#: admin/fai/class_faiSummaryTab.inc:346 +msgid "Size in MB" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:187 +#: admin/fai/class_faiPartitionTableEntry.inc:476 +#: admin/fai/class_faiSummaryTab.inc:345 +msgid "Mount options" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:188 +msgid "FS option" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:189 +msgid "Preserve" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:282 +msgid "False" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:284 +msgid "True" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:288 +#: admin/fai/class_faiPartitionTableEntry.inc:290 +#: admin/fai/class_divListFai.inc:178 +msgid "Remove" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:371 +#: admin/fai/class_faiPartitionTableEntry.inc:374 +#: admin/fai/class_faiPartitionTableEntry.inc:469 admin/fai/faiVariable.tpl:9 +#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:561 +#: admin/fai/faiProfile.tpl:9 admin/fai/faiScriptEntry.tpl:9 +#: admin/fai/faiScript.tpl:9 admin/fai/faiPackage.tpl:9 +#: admin/fai/faiHook.tpl:9 admin/fai/class_faiProfile.inc:395 +#: admin/fai/class_faiProfile.inc:405 admin/fai/class_faiProfile.inc:478 +#: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiHookEntry.tpl:9 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiVariableEntry.inc:90 +#: admin/fai/class_faiVariableEntry.inc:99 +#: admin/fai/class_faiVariableEntry.inc:102 +#: admin/fai/class_faiVariableEntry.inc:137 +#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:544 +#: admin/fai/class_askClassName.inc:142 admin/fai/class_askClassName.inc:146 +#: admin/fai/class_askClassName.inc:150 admin/fai/class_faiScript.inc:327 +#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiScriptEntry.inc:137 +#: admin/fai/class_faiScriptEntry.inc:142 +#: admin/fai/class_faiScriptEntry.inc:145 +#: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiTemplate.tpl:9 +#: admin/fai/class_faiPartitionTable.inc:371 +#: admin/fai/class_faiPartitionTable.inc:549 admin/fai/faiVariableEntry.tpl:9 +#: admin/fai/class_faiHookEntry.inc:145 admin/fai/class_faiHookEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:153 admin/fai/class_faiHookEntry.inc:196 +#: admin/fai/class_faiVariable.inc:296 admin/fai/class_faiVariable.inc:397 +#: admin/fai/class_faiPackage.inc:456 admin/fai/class_faiPackage.inc:581 +#: admin/fai/class_faiTemplateEntry.inc:207 +#: admin/fai/class_faiTemplateEntry.inc:273 +#: admin/fai/class_faiSummaryTab.inc:343 admin/fai/faiPartitionTable.tpl:9 +#: admin/systems/services/repository/class_servRepository.inc:177 +msgid "Name" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:397 +#, php-format +msgid "please enter a unique mount point for partition %s" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:402 +#, php-format +msgid "partition %s mount point" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:407 +#, php-format +msgid "" +"File system type 'swap' is already used, change file system type for " +"partition %s." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:411 +msgid "Please use 'swap' as mount point, if 'swap' is used as fs-type." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:417 +#: admin/fai/class_faiPartitionTableEntry.inc:421 +#: admin/fai/class_faiPartitionTableEntry.inc:427 +#: admin/fai/class_faiPartitionTableEntry.inc:429 +#: admin/fai/class_faiPartitionTableEntry.inc:434 +#, php-format +msgid "partition %s size" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:449 +msgid "" +"You have more than 3 primary partition table entries in your configuration, " +"please check your configuration twice." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:461 +msgid "Partition table entry" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:462 +msgid "FAI partition table entry" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:471 +msgid "Partition type" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:472 +msgid "Partition no." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:473 +msgid "File system type" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:475 +msgid "Partition size" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:477 +msgid "File system options" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:478 +msgid "Partition flags" +msgstr "" + +#: admin/fai/faiVariable.tpl:36 admin/fai/faiScript.tpl:38 +#: admin/fai/faiHook.tpl:38 admin/fai/class_faiProfileEntry.inc:175 +#: admin/fai/faiTemplate.tpl:33 admin/fai/faiPartitionTable.tpl:36 +msgid "Objects" +msgstr "" + +#: admin/fai/faiVariable.tpl:38 +msgid "List of assigned variables" +msgstr "" + +#: admin/fai/faiVariable.tpl:44 +msgid "Choose a variable to delete or edit" +msgstr "" + +#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312 +#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54 +msgid "Edit" +msgstr "" + +#: admin/fai/class_faiHook.inc:316 +msgid "Delete" +msgstr "" + +#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiTemplate.inc:300 +#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358 +#: admin/fai/class_faiScriptEntry.inc:88 admin/fai/class_faiHookEntry.inc:80 +msgid "Download" +msgstr "" + +#: admin/fai/class_faiHook.inc:553 admin/fai/class_divListFai.inc:64 +msgid "Hook" +msgstr "" + +#: admin/fai/class_faiHook.inc:554 +msgid "FAI hook" +msgstr "" + +#: admin/fai/class_faiHook.inc:561 admin/fai/class_faiPartitionTable.inc:549 +#: admin/fai/class_faiVariable.inc:397 +msgid "Read only" +msgstr "" + +#: admin/fai/faiProfile.tpl:36 admin/fai/class_faiProfile.inc:480 +msgid "FAI classes" +msgstr "" + +#: admin/fai/faiProfile.tpl:37 +msgid "Choose a priority" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:33 +msgid "Properties" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:33 admin/fai/faiScriptEntry.tpl:54 +msgid "Script attributes" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:38 admin/fai/class_faiScript.inc:328 +msgid "Priority" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:43 +msgid "" +"Choose a priority. Low values result in an earlier, high values in a later " +"execution." +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:56 admin/fai/faiHookEntry.tpl:56 +#: admin/fai/class_faiScript.inc:637 admin/fai/class_faiScriptEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:158 admin/fai/class_divListFai.inc:62 +msgid "Script" +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:75 admin/fai/faiHookEntry.tpl:75 +msgid "Import script" +msgstr "" + +#: admin/fai/faiScript.tpl:39 +msgid "List of scripts" +msgstr "" + +#: admin/fai/faiPackage.tpl:33 +#: admin/systems/services/repository/servRepositorySetup.tpl:1 +#: admin/systems/services/repository/class_servRepository.inc:343 +msgid "Repository" +msgstr "" + +#: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25 +#: admin/fai/class_faiPackage.inc:587 +#: admin/systems/services/repository/class_divListRepositories.inc:23 +#: admin/systems/services/repository/servRepositorySetup.tpl:19 +#: admin/systems/services/repository/class_servRepositorySetup.inc:153 +msgid "Release" +msgstr "" + +#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:584 +msgid "Section" +msgstr "" + +#: admin/fai/faiPackage.tpl:53 +msgid "Install method" +msgstr "" + +#: admin/fai/faiPackage.tpl:57 +msgid "Please select the installation method" +msgstr "" + +#: admin/fai/faiPackage.tpl:71 +msgid "Used packages" +msgstr "" + +#: admin/fai/faiHook.tpl:39 +msgid "List of hook scripts" +msgstr "" + +#: admin/fai/class_faiProfile.inc:289 admin/fai/class_faiProfileEntry.inc:172 +msgid "This list displays all assigned class names for this profile." +msgstr "" + +#: admin/fai/class_faiProfile.inc:292 admin/fai/class_askClassName.inc:83 +#: admin/fai/class_faiProfileEntry.inc:138 +msgid "Hook bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:293 admin/fai/class_askClassName.inc:85 +#: admin/fai/class_faiProfileEntry.inc:139 +msgid "Template bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:294 admin/fai/class_askClassName.inc:81 +#: admin/fai/class_faiProfileEntry.inc:140 +msgid "Script bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:295 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_faiProfileEntry.inc:141 +msgid "Variable bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:296 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_faiProfileEntry.inc:142 +msgid "Package bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:297 admin/fai/class_askClassName.inc:79 +#: admin/fai/class_faiGroupHandle.inc:100 +#: admin/fai/class_faiProfileEntry.inc:143 +#: admin/fai/class_faiPartitionTable.inc:541 +#: admin/fai/class_divListFai.inc:154 admin/fai/class_divListFai.inc:208 +#: admin/fai/class_faiSummaryTab.inc:48 +msgid "Partition table" +msgstr "" + +#: admin/fai/class_faiProfile.inc:300 +msgid "Remove class from profile" +msgstr "" + +#: admin/fai/class_faiProfile.inc:303 +msgid "Up" +msgstr "" + +#: admin/fai/class_faiProfile.inc:304 +msgid "Down" +msgstr "" + +#: admin/fai/class_faiProfile.inc:391 +msgid "No class specified for this profile!" +msgstr "" + +#: admin/fai/class_faiProfile.inc:470 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_divListFai.inc:58 +#: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218 +msgid "Profile" +msgstr "" + +#: admin/fai/class_faiProfile.inc:471 +msgid "FAI profile" +msgstr "" + +#: admin/fai/faiPartitionTableEntry.tpl:2 +msgid "Device" +msgstr "" + +#: admin/fai/faiPartitionTableEntry.tpl:24 +msgid "Partition entries" +msgstr "" + +#: admin/fai/faiPartitionTableEntry.tpl:29 +#: admin/fai/faiPartitionTableEntry.tpl:31 +msgid "Add partition" +msgstr "" + +#: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54 +msgid "Hook attributes" +msgstr "" + +#: admin/fai/faiHookEntry.tpl:38 admin/fai/class_faiHookEntry.inc:198 +msgid "Task" +msgstr "" + +#: admin/fai/faiHookEntry.tpl:41 +msgid "Choose an existing FAI task" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:6 +msgid "List of available packages" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:20 admin/fai/faiProfileEntry.tpl:21 +msgid "Information" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:24 +msgid "" +"This menu allows you to select multiple packages to add them to the " +"currently edited package list." +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:30 admin/fai/faiProfileEntry.tpl:31 +msgid "Filters" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:40 admin/fai/faiProfileEntry.tpl:54 +#: admin/fai/faiProfileEntry.tpl:55 +msgid "Display objects matching" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:44 admin/fai/faiProfileEntry.tpl:59 +#: admin/systems/services/repository/class_divListRepositories.inc:26 +msgid "Regular expression for matching object names" +msgstr "" + +#: admin/fai/class_faiManagement.inc:25 admin/fai/main.inc:53 +#: admin/fai/main.inc:55 +msgid "Software deployment" +msgstr "" + +#: admin/fai/class_faiManagement.inc:26 +msgid "Manage software packages and deployment reciepes" +msgstr "" + +#: admin/fai/class_faiManagement.inc:338 admin/fai/class_faiManagement.inc:495 +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 admin/fai/class_faiManagement.inc:869 +#: admin/fai/class_faiManagement.inc:886 +msgid "Permission error" +msgstr "" + +#: admin/fai/class_faiManagement.inc:384 +msgid "Branch locked" +msgstr "" + +#: admin/fai/class_faiManagement.inc:384 +#, php-format +msgid "The following entries are locked, you can't remove them %s." +msgstr "" + +#: admin/fai/class_faiManagement.inc:400 +msgid "FAI object" +msgstr "" + +#: admin/fai/class_faiManagement.inc:492 +msgid "FAI branch/freeze" +msgstr "" + +#: admin/fai/class_faiManagement.inc:495 +msgid "You have no permission to delete this release!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:513 +msgid "Release remove aborted because the release name check failed!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 +msgid "Branch" +msgstr "" + +#: admin/fai/class_faiManagement.inc:750 +#: admin/fai/class_faiManagement.inc:1025 +#: admin/fai/class_faiManagement.inc:1031 +msgid "Continue" +msgstr "" + +#: admin/fai/class_faiManagement.inc:781 +#: admin/fai/class_faiPackageEntry.inc:53 +#: admin/fai/class_faiPackageEntry.inc:193 admin/fai/class_FAI.inc:553 +#: admin/fai/class_faiPackageConfiguration.inc:35 +#: admin/fai/class_faiPackage.inc:478 +#: admin/systems/services/repository/class_servRepository.inc:326 +msgid "Service infrastructure" +msgstr "" + +#: admin/fai/class_faiManagement.inc:786 admin/fai/class_FAI.inc:1157 +msgid "Fatal error" +msgstr "" + +#: admin/fai/class_faiManagement.inc:846 +msgid "partition table" +msgstr "" + +#: admin/fai/class_faiManagement.inc:847 +msgid "script" +msgstr "" + +#: admin/fai/class_faiManagement.inc:848 +msgid "hook" +msgstr "" + +#: admin/fai/class_faiManagement.inc:849 +msgid "variable" +msgstr "" + +#: admin/fai/class_faiManagement.inc:850 +msgid "template" +msgstr "" + +#: admin/fai/class_faiManagement.inc:851 +msgid "package list" +msgstr "" + +#: admin/fai/class_faiManagement.inc:869 admin/fai/class_faiManagement.inc:886 +#, php-format +msgid "You have no permission to create a new %s!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:886 +msgid "profile" +msgstr "" + +#: admin/fai/class_faiManagement.inc:1286 +msgid "" +"The selected release is not available anymore. All triggered actions are " +"skipped." +msgstr "" + +#: admin/fai/class_faiManagement.inc:1411 +msgid "FAI releases" +msgstr "" + +#: admin/fai/class_faiManagement.inc:1412 +msgid "FAI release management" +msgstr "" + +#: admin/fai/class_faiManagement.inc:1417 +msgid "FAI" +msgstr "" + +#: admin/fai/class_faiVariableEntry.inc:94 +msgid "Content" +msgstr "" + +#: admin/fai/class_faiVariableEntry.inc:129 +msgid "Variable entry" +msgstr "" + +#: admin/fai/class_faiVariableEntry.inc:130 +msgid "FAI variable entry " +msgstr "" + +#: admin/fai/class_faiVariableEntry.inc:139 admin/fai/faiVariableEntry.tpl:38 +msgid "Variable content" +msgstr "" + +#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288 +#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346 +msgid "edit" +msgstr "" + +#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348 +msgid "delete" +msgstr "" + +#: admin/fai/class_faiTemplate.inc:536 +msgid "Template" +msgstr "" + +#: admin/fai/class_faiTemplate.inc:537 +msgid "FAI template" +msgstr "" + +#: admin/fai/class_faiTemplate.inc:544 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiPackage.inc:584 admin/fai/class_faiPackage.inc:587 +msgid "Readonly" +msgstr "" + +#: admin/fai/class_faiPackageEntry.inc:38 +msgid "Please enter your search string here" +msgstr "" + +#: admin/fai/class_faiPackageEntry.inc:103 +msgid "" +"This list displays all assigned package names for this repository settings." +msgstr "" + +#: admin/fai/paste_generic.tpl:1 +msgid "FAI settings" +msgstr "" + +#: admin/fai/paste_generic.tpl:5 admin/fai/class_faiProfileEntry.inc:174 +#: admin/fai/askClassName.tpl:32 admin/fai/askClassName.tpl:54 +#: admin/fai/class_divListFai.inc:53 +msgid "Class name" +msgstr "" + +#: admin/fai/remove_branch.tpl:6 +msgid "" +"This includes all account data, system access, etc. for this branch. Please " +"double check if your really want to do this since there is no way for GOsa " +"to get your data back." +msgstr "" + +#: admin/fai/remove_branch.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:6 +msgid "List of FAI objects (Fully Automatic Installation)" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:26 +msgid "" +"This menu allows you to select FAI class names and to add them to the " +"currently edited profile." +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:39 +msgid "Show only classes with templates" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:41 +msgid "Show only classes with scripts" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:43 +msgid "Show only classes with hooks" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:45 +msgid "Show only classes with variables" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:47 +msgid "Show only classes with packages" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:49 +msgid "Show only classes with partitions" +msgstr "" + +#: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_askClassName.inc:85 admin/fai/class_askClassName.inc:86 +msgid "Create new FAI object" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:102 admin/fai/class_divListFai.inc:164 +#: admin/fai/class_divListFai.inc:210 admin/fai/class_faiSummaryTab.inc:49 +msgid "Package list" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:104 admin/fai/class_divListFai.inc:156 +#: admin/fai/class_divListFai.inc:212 admin/fai/class_faiSummaryTab.inc:44 +msgid "Scripts" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:106 admin/fai/class_divListFai.inc:160 +#: admin/fai/class_divListFai.inc:214 admin/fai/class_faiSummaryTab.inc:46 +msgid "Variables" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:108 admin/fai/class_divListFai.inc:158 +#: admin/fai/class_divListFai.inc:216 admin/fai/class_faiSummaryTab.inc:45 +msgid "Hooks" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:112 admin/fai/class_divListFai.inc:220 +#: admin/fai/class_faiSummaryTab.inc:47 +msgid "Templates" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:114 admin/fai/class_divListFai.inc:76 +#: admin/fai/class_divListFai.inc:222 +msgid "OPSI netboot product" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:116 +msgid "OPSI local product" +msgstr "" + +#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68 +#: admin/fai/class_faiPackage.inc:573 +msgid "Package" +msgstr "" + +#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316 +msgid "Sort direction" +msgstr "" + +#: admin/fai/class_faiScript.inc:332 +msgid "Action" +msgstr "" + +#: admin/fai/class_faiScript.inc:638 admin/fai/class_faiHookEntry.inc:199 +msgid "FAI script" +msgstr "" + +#: admin/fai/class_FAI.inc:259 admin/fai/class_FAI.inc:662 +msgid "LDAP error" +msgstr "" + +#: admin/fai/class_FAI.inc:535 +#, php-format +msgid "Error, following objects should be equal '%s' and '%s'" +msgstr "" + +#: admin/fai/class_FAI.inc:874 +#, php-format +msgid "Creating group application release for %s" +msgstr "" + +#: admin/fai/class_FAI.inc:943 admin/fai/class_FAI.inc:965 +#: admin/fai/class_FAI.inc:1005 admin/fai/class_FAI.inc:1010 +#: admin/fai/class_FAI.inc:1048 +msgid "Object" +msgstr "" + +#: admin/fai/class_FAI.inc:944 +#, php-format +msgid "Adding missing group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:966 +#, php-format +msgid "Adding group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1006 +#, php-format +msgid "Could not create menu entry %s. (Already exists)." +msgstr "" + +#: admin/fai/class_FAI.inc:1011 +#, php-format +msgid "Created group application menu entry for %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1042 +#, php-format +msgid "Creating copy of %s" +msgstr "" + +#: admin/fai/class_FAI.inc:1045 +msgid "Processing" +msgstr "" + +#: admin/fai/class_FAI.inc:1063 +msgid "Could not create new release, the destination dn is already in use." +msgstr "" + +#: admin/fai/class_FAI.inc:1076 +msgid "Error while fetching source dn - aborted!" +msgstr "" + +#: admin/fai/class_FAI.inc:1158 +#, php-format +msgid "" +"Release creation failed due to ldap errors. Additional informations '%s'." +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +msgid "file is empty" +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:181 +#: admin/fai/class_faiScriptEntry.inc:191 +msgid "Script entry" +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:182 +msgid "FAI script entry" +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:192 +msgid "Script Priority" +msgstr "" + +#: admin/fai/faiSummary.tpl:4 +msgid "FAI object tree" +msgstr "" + +#: admin/fai/faiSummary.tpl:11 +msgid "Reload class and release configuration from parent object." +msgstr "" + +#: admin/fai/faiSummary.tpl:22 +msgid "You are not allowed to view the fai summary." +msgstr "" + +#: admin/fai/faiTemplate.tpl:34 +msgid "List of template files" +msgstr "" + +#: admin/fai/class_faiPartitionTable.inc:301 +#: admin/fai/class_faiPartitionTable.inc:307 +#, php-format +msgid "%s partition" +msgstr "" + +#: admin/fai/class_faiPartitionTable.inc:303 +#: admin/fai/class_faiPartitionTable.inc:309 +#, php-format +msgid "%s partition(s)" +msgstr "" + +#: admin/fai/class_faiPartitionTable.inc:542 +msgid "FAI partition table" +msgstr "" + +#: admin/fai/branch_selector.tpl:2 +#: admin/systems/services/repository/class_servRepository.inc:358 +msgid "Releases" +msgstr "" + +#: admin/fai/branch_selector.tpl:8 +msgid "Current release" +msgstr "" + +#: admin/fai/branch_selector.tpl:20 admin/fai/branch_selector.tpl:26 +msgid "Create release" +msgstr "" + +#: admin/fai/branch_selector.tpl:23 admin/fai/branch_selector.tpl:29 +msgid "Create read-only release" +msgstr "" + +#: admin/fai/branch_selector.tpl:28 +msgid "Freeze" +msgstr "" + +#: admin/fai/branch_selector.tpl:35 +msgid "Delete current release" +msgstr "" + +#: admin/fai/faiVariableEntry.tpl:33 +msgid "Variable attributes" +msgstr "" + +#: admin/fai/class_faiHookEntry.inc:188 +msgid "Hook entry" +msgstr "" + +#: admin/fai/class_faiHookEntry.inc:189 +msgid "FAI hook entry" +msgstr "" + +#: admin/fai/faiNewBranch.tpl:5 +msgid "" +"You are now going to create a branch or locked branch. This action clones " +"the existing release to another release name. Branches can be modified as " +"usual. FAI classes of locked branches cannot be modified, just additional " +"classes are possible. Branch names should be alphanumeric, excluding the " +"reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' " +"and 'fai'." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:7 +msgid "" +"Branches are created as subreleases of the currently selected branch. " +"Creating a new branch named 1.0.2 in SARGE for example, will result in a new " +"release called SARGE/1.0.2." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:13 +msgid "Please enter a name for the branch" +msgstr "" + +#: admin/fai/faiNewBranch.tpl:34 +msgid "Processing the requested operation" +msgstr "" + +#: admin/fai/faiNewBranch.tpl:35 +msgid "" +"As soon as the copy operation has finished, you can scroll down to end of " +"the page and press the 'Continue' button to continue with the fai management " +"dialog." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:41 +msgid "" +"Your browser doesn't support iframes, please use this link to perform the " +"requested operation." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Perform requested operation." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Initiate operation" +msgstr "" + +#: admin/fai/askClassName.tpl:6 +msgid "" +"Adding a new class to the FAI management, requires a class name. You have to " +"specify a unique class name for unique types of FAI classes, while you can " +"use the same class name for different types of FAI classes. In the laste " +"case, FAI will automatically enclose all these different class types to one " +"unique class name." +msgstr "" + +#: admin/fai/askClassName.tpl:12 +msgid "" +"Please use one of the following methods to choose the name for the new FAI " +"class." +msgstr "" + +#: admin/fai/askClassName.tpl:26 +msgid "Enter FAI class name manually" +msgstr "" + +#: admin/fai/askClassName.tpl:48 +msgid "Choose FAI class name from a list of existing classes" +msgstr "" + +#: admin/fai/askClassName.tpl:54 +msgid "Choose class name" +msgstr "" + +#: admin/fai/askClassName.tpl:70 admin/fai/askClassName.tpl:77 +msgid "Use" +msgstr "" + +#: admin/fai/askClassName.tpl:74 +msgid "A new class name." +msgstr "" + +#: admin/fai/class_faiPackageConfiguration.inc:68 +#, php-format +msgid "Debconf information for package '%s'" +msgstr "" + +#: admin/fai/class_faiVariable.inc:389 admin/fai/class_divListFai.inc:60 +#: admin/fai/class_divListFai.inc:66 +msgid "Variable" +msgstr "" + +#: admin/fai/class_faiVariable.inc:390 +msgid "FAI variable" +msgstr "" + +#: admin/fai/class_divListFai.inc:32 +msgid "List of classes" +msgstr "" + +#: admin/fai/class_divListFai.inc:33 +msgid "List of deployment classes and products" +msgstr "" + +#: admin/fai/class_divListFai.inc:48 +msgid "Select all" +msgstr "" + +#: admin/fai/class_divListFai.inc:54 +msgid "Class types" +msgstr "" + +#: admin/fai/class_divListFai.inc:55 admin/fai/class_divListFai.inc:138 +msgid "Actions" +msgstr "" + +#: admin/fai/class_divListFai.inc:57 admin/fai/class_divListFai.inc:59 +#: admin/fai/class_divListFai.inc:61 admin/fai/class_divListFai.inc:63 +#: admin/fai/class_divListFai.inc:65 admin/fai/class_divListFai.inc:67 +#: admin/fai/class_divListFai.inc:69 admin/fai/class_divListFai.inc:75 +#: admin/fai/class_divListFai.inc:77 +#, php-format +msgid "Display objects of type '%s'." +msgstr "" + +#: admin/fai/class_divListFai.inc:58 +msgid "Show profiles" +msgstr "" + +#: admin/fai/class_divListFai.inc:60 +msgid "Show templates" +msgstr "" + +#: admin/fai/class_divListFai.inc:62 +msgid "Show scripts" +msgstr "" + +#: admin/fai/class_divListFai.inc:64 +msgid "Show hooks" +msgstr "" + +#: admin/fai/class_divListFai.inc:66 +msgid "Show variables" +msgstr "" + +#: admin/fai/class_divListFai.inc:68 +msgid "Show packages" +msgstr "" + +#: admin/fai/class_divListFai.inc:70 +msgid "Partition" +msgstr "" + +#: admin/fai/class_divListFai.inc:70 +msgid "Show partitions" +msgstr "" + +#: admin/fai/class_divListFai.inc:76 +msgid "Show netboot products" +msgstr "" + +#: admin/fai/class_divListFai.inc:78 admin/fai/class_divListFai.inc:224 +msgid "OPSI localboot product" +msgstr "" + +#: admin/fai/class_divListFai.inc:78 +msgid "Show localboot products" +msgstr "" + +#: admin/fai/class_divListFai.inc:86 +msgid "Display users matching" +msgstr "" + +#: admin/fai/class_divListFai.inc:140 +msgid "Create" +msgstr "" + +#: admin/fai/class_divListFai.inc:155 +msgid "PT" +msgstr "" + +#: admin/fai/class_divListFai.inc:157 +msgid "S" +msgstr "" + +#: admin/fai/class_divListFai.inc:159 +msgid "H" +msgstr "" + +#: admin/fai/class_divListFai.inc:161 +msgid "V" +msgstr "" + +#: admin/fai/class_divListFai.inc:162 +msgid "Templates " +msgstr "" + +#: admin/fai/class_divListFai.inc:163 +msgid "I" +msgstr "" + +#: admin/fai/class_divListFai.inc:165 +msgid "PK" +msgstr "" + +#: admin/fai/class_divListFai.inc:313 admin/fai/class_divListFai.inc:314 +#: admin/fai/class_divListFai.inc:315 admin/fai/class_divListFai.inc:316 +#: admin/fai/class_divListFai.inc:317 admin/fai/class_divListFai.inc:318 +#: admin/fai/class_divListFai.inc:319 admin/fai/class_divListFai.inc:320 +#: admin/fai/class_divListFai.inc:321 admin/fai/class_divListFai.inc:322 +#, php-format +msgid "Number of listed '%s'" +msgstr "" + +#: admin/fai/class_divListFai.inc:313 +msgid "profiles" +msgstr "" + +#: admin/fai/class_divListFai.inc:314 +msgid "partitions" +msgstr "" + +#: admin/fai/class_divListFai.inc:315 +msgid "scripts" +msgstr "" + +#: admin/fai/class_divListFai.inc:316 +msgid "hooks" +msgstr "" + +#: admin/fai/class_divListFai.inc:317 +msgid "variables" +msgstr "" + +#: admin/fai/class_divListFai.inc:318 +msgid "templates" +msgstr "" + +#: admin/fai/class_divListFai.inc:319 +msgid "packages" +msgstr "" + +#: admin/fai/class_divListFai.inc:320 +msgid "departments" +msgstr "" + +#: admin/fai/class_divListFai.inc:321 +msgid "netboot products" +msgstr "" + +#: admin/fai/class_divListFai.inc:322 +msgid "localboot products" +msgstr "" + +#: admin/fai/class_faiPackage.inc:329 admin/fai/class_faiPackage.inc:330 +msgid "Configured" +msgstr "" + +#: admin/fai/class_faiPackage.inc:336 admin/fai/class_faiPackage.inc:337 +msgid "Package marked for removal" +msgstr "" + +#: admin/fai/class_faiPackage.inc:353 +msgid "Mark package for removal" +msgstr "" + +#: admin/fai/class_faiPackage.inc:359 +msgid "Configure this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:363 +msgid "Remove this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:442 +msgid "Please select a least one package!" +msgstr "" + +#: admin/fai/class_faiPackage.inc:446 +msgid "" +"Please choose a valid release/section combination for your repository setup!" +msgstr "" + +#: admin/fai/class_faiPackage.inc:574 +msgid "FAI Package list" +msgstr "" + +#: admin/fai/class_faiPackage.inc:583 +msgid "Packages" +msgstr "" + +#: admin/fai/class_faiPackage.inc:585 +msgid "Install Method" +msgstr "" + +#: admin/fai/class_faiPackage.inc:586 +msgid "Package configuration" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:90 +msgid "no file uploaded yet" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:96 +#, php-format +msgid "exists in database (size: %s bytes)" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:265 +msgid "Template entry" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:266 +msgid "FAI template entry" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:275 +msgid "Template file" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:276 +msgid "Template path" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:277 +msgid "File owner" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:278 +msgid "File permissions" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:50 +msgid "Profiles" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:89 +msgid "Unknown FAI information source!" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:178 +#: admin/systems/services/repository/class_servRepository.inc:93 +msgid "You can't use this plugin until FAI is activated." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:220 +msgid "This object has no FAI classes assigned." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:233 +msgid "Open" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:239 +msgid "Close" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:342 +msgid "No." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:344 +msgid "FS options" +msgstr "" + +#: admin/fai/faiPartitionTable.tpl:38 +msgid "Discs" +msgstr "" + +#: admin/fai/faiPartitionTable.tpl:44 +msgid "Choose a disk to delete or edit" +msgstr "" + +#: admin/fai/class_debconfTemplate.inc:207 +msgid "This package has no debconf options." +msgstr "" + +#: admin/systems/services/repository/class_divListRepositories.inc:19 +msgid "List of configured repositories" +msgstr "" + +#: admin/systems/services/repository/class_divListRepositories.inc:20 +msgid "This menu allows you to create, delete and edit repository settings." +msgstr "" + +#: admin/systems/services/repository/class_divListRepositories.inc:24 +#: admin/systems/services/repository/class_divListRepositories.inc:64 +#: admin/systems/services/repository/servRepositorySetup.tpl:39 +#: admin/systems/services/repository/class_servRepository.inc:360 +msgid "Sections" +msgstr "" + +#: admin/systems/services/repository/class_divListRepositories.inc:25 +msgid "Options" +msgstr "" + +#: admin/systems/services/repository/class_divListRepositories.inc:33 +msgid "Add repository" +msgstr "" + +#: admin/systems/services/repository/servRepositorySetup.tpl:8 +#: admin/systems/services/repository/class_servRepository.inc:357 +msgid "Parent server" +msgstr "" + +#: admin/systems/services/repository/servRepositorySetup.tpl:28 +#: admin/systems/services/repository/class_servRepository.inc:359 +#: admin/systems/services/repository/class_servRepositorySetup.inc:157 +msgid "URL" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:26 +#: admin/systems/services/repository/class_servRepository.inc:308 +#: admin/systems/services/repository/class_servRepository.inc:344 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Repository service" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:142 +msgid "FAI release" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:344 +msgid "Services" +msgstr "" diff --git a/trunk/gosa-plugins/fai/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/fai/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..cea82536b --- /dev/null +++ b/trunk/gosa-plugins/fai/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,2275 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/fai/faiTemplateEntry.tpl:3 admin/fai/faiVariable.tpl:4 +#: admin/fai/faiProfile.tpl:4 admin/fai/faiProfile.tpl:36 +#: admin/fai/faiScriptEntry.tpl:5 admin/fai/faiScript.tpl:4 +#: admin/fai/faiPackage.tpl:4 admin/fai/faiHook.tpl:4 +#: admin/fai/faiPartitionTableEntry.tpl:2 admin/fai/faiHookEntry.tpl:5 +#: admin/fai/faiTemplate.tpl:4 admin/fai/faiVariableEntry.tpl:5 +#: admin/fai/faiPartitionTable.tpl:4 +msgid "Generic" +msgstr "Algemeen" + +#: admin/fai/faiTemplateEntry.tpl:10 admin/fai/class_faiTemplateEntry.inc:220 +#, fuzzy +msgid "File name" +msgstr "Bestandsnaam" + +#: admin/fai/faiTemplateEntry.tpl:21 admin/fai/class_faiTemplateEntry.inc:215 +msgid "Destination path" +msgstr "Doelpad" + +#: admin/fai/faiTemplateEntry.tpl:33 +#: admin/fai/class_faiPartitionTableEntry.inc:470 admin/fai/faiVariable.tpl:21 +#: admin/fai/class_faiHook.inc:562 admin/fai/faiProfile.tpl:21 +#: admin/fai/faiScriptEntry.tpl:19 admin/fai/faiScript.tpl:21 +#: admin/fai/faiPackage.tpl:21 admin/fai/faiHook.tpl:21 +#: admin/fai/class_faiProfile.inc:479 admin/fai/faiPartitionTableEntry.tpl:13 +#: admin/fai/faiHookEntry.tpl:19 admin/fai/class_faiVariableEntry.inc:138 +#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646 +#: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiTemplate.tpl:21 +#: admin/fai/class_faiPartitionTable.inc:550 admin/fai/faiVariableEntry.tpl:19 +#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398 +#: admin/fai/class_faiPackage.inc:582 admin/fai/class_faiTemplateEntry.inc:274 +#: admin/fai/faiPartitionTable.tpl:21 +msgid "Description" +msgstr "Omschrijving" + +#: admin/fai/faiTemplateEntry.tpl:45 +msgid "Template attributes" +msgstr "Sjabloon atributen" + +#: admin/fai/faiTemplateEntry.tpl:53 admin/fai/class_faiTemplateEntry.inc:211 +msgid "File" +msgstr "Bestand" + +#: admin/fai/faiTemplateEntry.tpl:60 +msgid "Save template" +msgstr "Sjabloon opslaan" + +#: admin/fai/faiTemplateEntry.tpl:69 +msgid "Upload" +msgstr "Uploaden" + +#: admin/fai/faiTemplateEntry.tpl:76 +#, fuzzy +msgid "Full path" +msgstr "Fontpad" + +#: admin/fai/faiTemplateEntry.tpl:92 +msgid "Owner" +msgstr "Eigenaar" + +#: admin/fai/faiTemplateEntry.tpl:103 admin/fai/faiTemplateEntry.tpl:145 +#: admin/fai/class_faiTemplateEntry.inc:230 +#: admin/fai/class_faiTemplateEntry.inc:233 +#: admin/fai/class_faiTemplateEntry.inc:235 +msgid "Group" +msgstr "Groep" + +#: admin/fai/faiTemplateEntry.tpl:114 +msgid "Access" +msgstr "Toegang" + +#: admin/fai/faiTemplateEntry.tpl:120 +msgid "Class" +msgstr "Klasse" + +#: admin/fai/faiTemplateEntry.tpl:121 +msgid "Read" +msgstr "Lezen" + +#: admin/fai/faiTemplateEntry.tpl:122 +msgid "Write" +msgstr "Schrijven" + +#: admin/fai/faiTemplateEntry.tpl:123 +msgid "Execute" +msgstr "Commando" + +#: admin/fai/faiTemplateEntry.tpl:125 +msgid "Special" +msgstr "Speciaal" + +#: admin/fai/faiTemplateEntry.tpl:128 admin/fai/class_faiTemplateEntry.inc:224 +#: admin/fai/class_faiTemplateEntry.inc:226 +msgid "User" +msgstr "Gebruiker" + +#: admin/fai/faiTemplateEntry.tpl:142 +msgid "SUID" +msgstr "SUID" + +#: admin/fai/faiTemplateEntry.tpl:159 +msgid "SGID" +msgstr "SGID" + +#: admin/fai/faiTemplateEntry.tpl:162 +msgid "Others" +msgstr "Anderen" + +#: admin/fai/faiTemplateEntry.tpl:176 +msgid "sticky" +msgstr "sticky" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/class_faiHook.inc:239 admin/fai/tabsPartition.inc:34 +#: admin/fai/class_faiProfile.inc:262 admin/fai/class_faiManagement.inc:238 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiManagement.inc:899 admin/fai/class_faiManagement.inc:943 +#: admin/fai/class_faiManagement.inc:967 +#: admin/fai/class_faiManagement.inc:1216 admin/fai/class_faiTemplate.inc:212 +#: admin/fai/tabsVariable.inc:33 admin/fai/tabsPackage.inc:33 +#: admin/fai/class_faiScript.inc:229 admin/fai/class_FAI.inc:535 +#: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62 +#: admin/fai/tabsHook.inc:32 admin/fai/class_faiPartitionTable.inc:180 +#: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:272 +#: admin/fai/class_faiSummaryTab.inc:89 admin/fai/tabsProfile.inc:33 +#: admin/systems/services/repository/class_servRepository.inc:142 +#: admin/systems/services/repository/class_servRepository.inc:177 +#: admin/systems/services/repository/class_servRepository.inc:182 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Error" +msgstr "Fout" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/tabsPartition.inc:34 admin/fai/tabsVariable.inc:33 +#: admin/fai/tabsPackage.inc:33 admin/fai/tabsHook.inc:32 +#: admin/fai/tabsProfile.inc:33 +#, fuzzy +msgid "Moving the tree failed. Destination tree is subtree of source tree." +msgstr "" +"Het verplaatsen van de tree is mislukt. Bestemmings-tree is een subtree van " +"de bron-tree." + +#: admin/fai/remove.tpl:2 admin/fai/class_faiManagement.inc:513 +#: admin/fai/class_faiManagement.inc:1286 admin/fai/remove_branch.tpl:2 +msgid "Warning" +msgstr "Waarschuwing" + +#: admin/fai/remove.tpl:7 +msgid "" +"This includes 'all' object information. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dit omvat 'alle' object informatie. Verzeker uzelf hiervan, aangezien er " +"geen manier is voor GOsa om deze gegevens terug te halen." + +#: admin/fai/remove.tpl:11 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Het is aan te raden de huidige inhoud van uw LDAP database op te slaan " +"alvorens u doorgaat. Indien u dat gedaan heeft drukt u op 'Verwijderen' om " +"door te gaan of op 'Annuleren' om te annuleren." + +#: admin/fai/faiGroupHandle.tpl:3 +#, fuzzy +msgid "Please select the objects you want to remove:" +msgstr "Geef a.u.b. een nieuwe naam op" + +#: admin/fai/faiGroupHandle.tpl:22 admin/fai/class_divListFai.inc:145 +#, fuzzy +msgid "Freezed" +msgstr "Frequentie" + +#: admin/fai/faiGroupHandle.tpl:30 +#, fuzzy +msgid "Select the object you want to edit:" +msgstr "Selecteer de toe te voegen objecten" + +#: admin/fai/faiGroupHandle.tpl:53 +#, fuzzy +msgid "Select the object you want to copy:" +msgstr "Selecteer om GOsa groepen te zien" + +#: admin/fai/faiGroupHandle.tpl:76 +#, fuzzy +msgid "Select the object you want to cut:" +msgstr "Selecteer om GOsa groepen te zien" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +#, fuzzy +msgid "primary" +msgstr "Primaire groep" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +#, fuzzy +msgid "logical" +msgstr "Lokaal toevoegen" + +#: admin/fai/class_faiPartitionTableEntry.inc:183 +#: admin/fai/class_faiSummaryTab.inc:348 +msgid "Type" +msgstr "Type" + +#: admin/fai/class_faiPartitionTableEntry.inc:184 +msgid "FS type" +msgstr "FS type" + +#: admin/fai/class_faiPartitionTableEntry.inc:185 +#: admin/fai/class_faiPartitionTableEntry.inc:474 +#: admin/fai/class_faiSummaryTab.inc:347 +msgid "Mount point" +msgstr "Koppelpunt" + +#: admin/fai/class_faiPartitionTableEntry.inc:186 +#: admin/fai/class_faiSummaryTab.inc:346 +msgid "Size in MB" +msgstr "Grootte in MB" + +#: admin/fai/class_faiPartitionTableEntry.inc:187 +#: admin/fai/class_faiPartitionTableEntry.inc:476 +#: admin/fai/class_faiSummaryTab.inc:345 +msgid "Mount options" +msgstr "Koppelopties" + +#: admin/fai/class_faiPartitionTableEntry.inc:188 +msgid "FS option" +msgstr "FS opties" + +#: admin/fai/class_faiPartitionTableEntry.inc:189 +msgid "Preserve" +msgstr "Bewaar" + +#: admin/fai/class_faiPartitionTableEntry.inc:282 +msgid "False" +msgstr "Nee" + +#: admin/fai/class_faiPartitionTableEntry.inc:284 +msgid "True" +msgstr "Ja" + +#: admin/fai/class_faiPartitionTableEntry.inc:288 +#: admin/fai/class_faiPartitionTableEntry.inc:290 +#: admin/fai/class_divListFai.inc:178 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/fai/class_faiPartitionTableEntry.inc:371 +#: admin/fai/class_faiPartitionTableEntry.inc:374 +#: admin/fai/class_faiPartitionTableEntry.inc:469 admin/fai/faiVariable.tpl:9 +#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:561 +#: admin/fai/faiProfile.tpl:9 admin/fai/faiScriptEntry.tpl:9 +#: admin/fai/faiScript.tpl:9 admin/fai/faiPackage.tpl:9 +#: admin/fai/faiHook.tpl:9 admin/fai/class_faiProfile.inc:395 +#: admin/fai/class_faiProfile.inc:405 admin/fai/class_faiProfile.inc:478 +#: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiHookEntry.tpl:9 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiVariableEntry.inc:90 +#: admin/fai/class_faiVariableEntry.inc:99 +#: admin/fai/class_faiVariableEntry.inc:102 +#: admin/fai/class_faiVariableEntry.inc:137 +#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:544 +#: admin/fai/class_askClassName.inc:142 admin/fai/class_askClassName.inc:146 +#: admin/fai/class_askClassName.inc:150 admin/fai/class_faiScript.inc:327 +#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiScriptEntry.inc:137 +#: admin/fai/class_faiScriptEntry.inc:142 +#: admin/fai/class_faiScriptEntry.inc:145 +#: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiTemplate.tpl:9 +#: admin/fai/class_faiPartitionTable.inc:371 +#: admin/fai/class_faiPartitionTable.inc:549 admin/fai/faiVariableEntry.tpl:9 +#: admin/fai/class_faiHookEntry.inc:145 admin/fai/class_faiHookEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:153 admin/fai/class_faiHookEntry.inc:196 +#: admin/fai/class_faiVariable.inc:296 admin/fai/class_faiVariable.inc:397 +#: admin/fai/class_faiPackage.inc:456 admin/fai/class_faiPackage.inc:581 +#: admin/fai/class_faiTemplateEntry.inc:207 +#: admin/fai/class_faiTemplateEntry.inc:273 +#: admin/fai/class_faiSummaryTab.inc:343 admin/fai/faiPartitionTable.tpl:9 +#: admin/systems/services/repository/class_servRepository.inc:177 +msgid "Name" +msgstr "Naam" + +#: admin/fai/class_faiPartitionTableEntry.inc:397 +#, php-format +msgid "please enter a unique mount point for partition %s" +msgstr "Geef a.u.b. een uniek koppelpunt op voor partitie %s" + +#: admin/fai/class_faiPartitionTableEntry.inc:402 +#, php-format +msgid "partition %s mount point" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:407 +#, php-format +msgid "" +"File system type 'swap' is already used, change file system type for " +"partition %s." +msgstr "" +"Bestandssysteem type 'swap' wordt al gebruikt. Verander bestandssysteem type " +"voor partitie %s." + +#: admin/fai/class_faiPartitionTableEntry.inc:411 +msgid "Please use 'swap' as mount point, if 'swap' is used as fs-type." +msgstr "" +"Gebruik a.u.b. 'swap' als koppelpunt indien 'swap' gebruikt wordt als fs-" +"type." + +#: admin/fai/class_faiPartitionTableEntry.inc:417 +#: admin/fai/class_faiPartitionTableEntry.inc:421 +#: admin/fai/class_faiPartitionTableEntry.inc:427 +#: admin/fai/class_faiPartitionTableEntry.inc:429 +#: admin/fai/class_faiPartitionTableEntry.inc:434 +#, fuzzy, php-format +msgid "partition %s size" +msgstr "Partities" + +#: admin/fai/class_faiPartitionTableEntry.inc:449 +msgid "" +"You have more than 3 primary partition table entries in your configuration, " +"please check your configuration twice." +msgstr "" +"U heeft meer dan 3 primaire partitietabel regels in uw configuratie. " +"Controleer uw configuratie a.u.b. nogmaals." + +#: admin/fai/class_faiPartitionTableEntry.inc:461 +#, fuzzy +msgid "Partition table entry" +msgstr "Partitietabel" + +#: admin/fai/class_faiPartitionTableEntry.inc:462 +#, fuzzy +msgid "FAI partition table entry" +msgstr "Nieuwe partitietabel" + +#: admin/fai/class_faiPartitionTableEntry.inc:471 +#, fuzzy +msgid "Partition type" +msgstr "Partitietabel" + +#: admin/fai/class_faiPartitionTableEntry.inc:472 +#, fuzzy +msgid "Partition no." +msgstr "Partities" + +#: admin/fai/class_faiPartitionTableEntry.inc:473 +#, fuzzy +msgid "File system type" +msgstr "Systeemtype" + +#: admin/fai/class_faiPartitionTableEntry.inc:475 +#, fuzzy +msgid "Partition size" +msgstr "Partities" + +#: admin/fai/class_faiPartitionTableEntry.inc:477 +#, fuzzy +msgid "File system options" +msgstr "systeem informatie bekijken" + +#: admin/fai/class_faiPartitionTableEntry.inc:478 +#, fuzzy +msgid "Partition flags" +msgstr "Partities" + +#: admin/fai/faiVariable.tpl:36 admin/fai/faiScript.tpl:38 +#: admin/fai/faiHook.tpl:38 admin/fai/class_faiProfileEntry.inc:175 +#: admin/fai/faiTemplate.tpl:33 admin/fai/faiPartitionTable.tpl:36 +msgid "Objects" +msgstr "Objecten" + +#: admin/fai/faiVariable.tpl:38 +msgid "List of assigned variables" +msgstr "Lijst met toegekende variabelen" + +#: admin/fai/faiVariable.tpl:44 +msgid "Choose a variable to delete or edit" +msgstr "Kies een te bewerken of verwijderen variabele" + +#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312 +#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54 +msgid "Edit" +msgstr "Bewerken" + +#: admin/fai/class_faiHook.inc:316 +msgid "Delete" +msgstr "Verwijderen" + +#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiTemplate.inc:300 +#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358 +#: admin/fai/class_faiScriptEntry.inc:88 admin/fai/class_faiHookEntry.inc:80 +msgid "Download" +msgstr "Downloaden" + +#: admin/fai/class_faiHook.inc:553 admin/fai/class_divListFai.inc:64 +#, fuzzy +msgid "Hook" +msgstr "Inhakers" + +#: admin/fai/class_faiHook.inc:554 +#, fuzzy +msgid "FAI hook" +msgstr "Toon FAI inhakers" + +#: admin/fai/class_faiHook.inc:561 admin/fai/class_faiPartitionTable.inc:549 +#: admin/fai/class_faiVariable.inc:397 +#, fuzzy +msgid "Read only" +msgstr "Lezen" + +#: admin/fai/faiProfile.tpl:36 admin/fai/class_faiProfile.inc:480 +msgid "FAI classes" +msgstr "FAI klassen" + +#: admin/fai/faiProfile.tpl:37 +msgid "Choose a priority" +msgstr "Kies een prioriteit" + +#: admin/fai/faiScriptEntry.tpl:33 +msgid "Properties" +msgstr "Eigenschappen" + +#: admin/fai/faiScriptEntry.tpl:33 admin/fai/faiScriptEntry.tpl:54 +msgid "Script attributes" +msgstr "Script attributen" + +#: admin/fai/faiScriptEntry.tpl:38 admin/fai/class_faiScript.inc:328 +msgid "Priority" +msgstr "Prioriteit" + +#: admin/fai/faiScriptEntry.tpl:43 +msgid "" +"Choose a priority. Low values result in an earlier, high values in a later " +"execution." +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:56 admin/fai/faiHookEntry.tpl:56 +#: admin/fai/class_faiScript.inc:637 admin/fai/class_faiScriptEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:158 admin/fai/class_divListFai.inc:62 +msgid "Script" +msgstr "Script" + +#: admin/fai/faiScriptEntry.tpl:75 admin/fai/faiHookEntry.tpl:75 +msgid "Import script" +msgstr "Importeer script" + +#: admin/fai/faiScript.tpl:39 +msgid "List of scripts" +msgstr "Lijst met scripts" + +#: admin/fai/faiPackage.tpl:33 +#: admin/systems/services/repository/servRepositorySetup.tpl:1 +#: admin/systems/services/repository/class_servRepository.inc:343 +msgid "Repository" +msgstr "Verzamelplaats" + +#: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25 +#: admin/fai/class_faiPackage.inc:587 +#: admin/systems/services/repository/class_divListRepositories.inc:23 +#: admin/systems/services/repository/servRepositorySetup.tpl:19 +#: admin/systems/services/repository/class_servRepositorySetup.inc:153 +msgid "Release" +msgstr "Distributie versie" + +#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:584 +msgid "Section" +msgstr "Sectie" + +#: admin/fai/faiPackage.tpl:53 +msgid "Install method" +msgstr "Installatie methode" + +#: admin/fai/faiPackage.tpl:57 +#, fuzzy +msgid "Please select the installation method" +msgstr "Selecteer a.u.b. een geldig bestand." + +#: admin/fai/faiPackage.tpl:71 +msgid "Used packages" +msgstr "Gebruikte pakketten" + +#: admin/fai/faiHook.tpl:39 +msgid "List of hook scripts" +msgstr "Lijst met inhakers scripts" + +#: admin/fai/class_faiProfile.inc:289 admin/fai/class_faiProfileEntry.inc:172 +msgid "This list displays all assigned class names for this profile." +msgstr "Deze lijst toont alle toegekende klassenamen voor dit profiel." + +#: admin/fai/class_faiProfile.inc:292 admin/fai/class_askClassName.inc:83 +#: admin/fai/class_faiProfileEntry.inc:138 +msgid "Hook bundle" +msgstr "Inhakers bundel" + +#: admin/fai/class_faiProfile.inc:293 admin/fai/class_askClassName.inc:85 +#: admin/fai/class_faiProfileEntry.inc:139 +msgid "Template bundle" +msgstr "Sjabloon bundel" + +#: admin/fai/class_faiProfile.inc:294 admin/fai/class_askClassName.inc:81 +#: admin/fai/class_faiProfileEntry.inc:140 +msgid "Script bundle" +msgstr "Script bundel" + +#: admin/fai/class_faiProfile.inc:295 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_faiProfileEntry.inc:141 +msgid "Variable bundle" +msgstr "Variabele bundel" + +#: admin/fai/class_faiProfile.inc:296 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_faiProfileEntry.inc:142 +msgid "Package bundle" +msgstr "Pakket bundel" + +#: admin/fai/class_faiProfile.inc:297 admin/fai/class_askClassName.inc:79 +#: admin/fai/class_faiGroupHandle.inc:100 +#: admin/fai/class_faiProfileEntry.inc:143 +#: admin/fai/class_faiPartitionTable.inc:541 +#: admin/fai/class_divListFai.inc:154 admin/fai/class_divListFai.inc:208 +#: admin/fai/class_faiSummaryTab.inc:48 +msgid "Partition table" +msgstr "Partitietabel" + +#: admin/fai/class_faiProfile.inc:300 +msgid "Remove class from profile" +msgstr "Verwijder klasse uit profiel" + +#: admin/fai/class_faiProfile.inc:303 +msgid "Up" +msgstr "Omhoog" + +#: admin/fai/class_faiProfile.inc:304 +msgid "Down" +msgstr "Omlaag" + +#: admin/fai/class_faiProfile.inc:391 +msgid "No class specified for this profile!" +msgstr "" + +#: admin/fai/class_faiProfile.inc:470 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_divListFai.inc:58 +#: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218 +#, fuzzy +msgid "Profile" +msgstr "Profielen" + +#: admin/fai/class_faiProfile.inc:471 +#, fuzzy +msgid "FAI profile" +msgstr "Nieuw profiel" + +#: admin/fai/faiPartitionTableEntry.tpl:2 +msgid "Device" +msgstr "Apparaat" + +#: admin/fai/faiPartitionTableEntry.tpl:24 +msgid "Partition entries" +msgstr "Partitie regels" + +#: admin/fai/faiPartitionTableEntry.tpl:29 +#: admin/fai/faiPartitionTableEntry.tpl:31 +msgid "Add partition" +msgstr "Partitie toevoegen" + +#: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54 +msgid "Hook attributes" +msgstr "Inhakers atributen" + +#: admin/fai/faiHookEntry.tpl:38 admin/fai/class_faiHookEntry.inc:198 +msgid "Task" +msgstr "Taak" + +#: admin/fai/faiHookEntry.tpl:41 +msgid "Choose an existing FAI task" +msgstr "Kies een bestaande FAI taak" + +#: admin/fai/faiPackageEntry.tpl:6 +msgid "List of available packages" +msgstr "Lijst met beschikbare pakketten" + +#: admin/fai/faiPackageEntry.tpl:20 admin/fai/faiProfileEntry.tpl:21 +msgid "Information" +msgstr "Informatie" + +#: admin/fai/faiPackageEntry.tpl:24 +msgid "" +"This menu allows you to select multiple packages to add them to the " +"currently edited package list." +msgstr "" +"Dit menu maakt het mogelijk om meerdere pakketten toe te voegen aan de op " +"dit moment bewerkte pakketlijst." + +#: admin/fai/faiPackageEntry.tpl:30 admin/fai/faiProfileEntry.tpl:31 +msgid "Filters" +msgstr "Filters" + +#: admin/fai/faiPackageEntry.tpl:40 admin/fai/faiProfileEntry.tpl:54 +#: admin/fai/faiProfileEntry.tpl:55 +msgid "Display objects matching" +msgstr "Toon overeenkomende objecten" + +#: admin/fai/faiPackageEntry.tpl:44 admin/fai/faiProfileEntry.tpl:59 +#: admin/systems/services/repository/class_divListRepositories.inc:26 +msgid "Regular expression for matching object names" +msgstr "Reguliere expressie voor overeenkomende objectnamen" + +#: admin/fai/class_faiManagement.inc:25 admin/fai/main.inc:53 +#: admin/fai/main.inc:55 +msgid "Software deployment" +msgstr "" + +#: admin/fai/class_faiManagement.inc:26 +msgid "Manage software packages and deployment reciepes" +msgstr "" + +#: admin/fai/class_faiManagement.inc:338 admin/fai/class_faiManagement.inc:495 +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 admin/fai/class_faiManagement.inc:869 +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "Permission error" +msgstr "Rechten" + +#: admin/fai/class_faiManagement.inc:384 +#, fuzzy +msgid "Branch locked" +msgstr "Aftakkingen" + +#: admin/fai/class_faiManagement.inc:384 +#, php-format +msgid "The following entries are locked, you can't remove them %s." +msgstr "" + +#: admin/fai/class_faiManagement.inc:400 +#, fuzzy +msgid "FAI object" +msgstr "FAI objectlijst" + +#: admin/fai/class_faiManagement.inc:492 +msgid "FAI branch/freeze" +msgstr "" + +#: admin/fai/class_faiManagement.inc:495 +#, fuzzy +msgid "You have no permission to delete this release!" +msgstr "U heeft geen toestemming om deze uitgave te verwijderen!" + +#: admin/fai/class_faiManagement.inc:513 +msgid "Release remove aborted because the release name check failed!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 +#, fuzzy +msgid "Branch" +msgstr "Aftakkingen" + +#: admin/fai/class_faiManagement.inc:750 +#: admin/fai/class_faiManagement.inc:1025 +#: admin/fai/class_faiManagement.inc:1031 +msgid "Continue" +msgstr "Doorgaan" + +#: admin/fai/class_faiManagement.inc:781 +#: admin/fai/class_faiPackageEntry.inc:53 +#: admin/fai/class_faiPackageEntry.inc:193 admin/fai/class_FAI.inc:553 +#: admin/fai/class_faiPackageConfiguration.inc:35 +#: admin/fai/class_faiPackage.inc:478 +#: admin/systems/services/repository/class_servRepository.inc:326 +#, fuzzy +msgid "Service infrastructure" +msgstr "Zoek binnen subtree" + +#: admin/fai/class_faiManagement.inc:786 admin/fai/class_FAI.inc:1157 +#, fuzzy +msgid "Fatal error" +msgstr "Terminal server" + +#: admin/fai/class_faiManagement.inc:846 +#, fuzzy +msgid "partition table" +msgstr "Partitietabel" + +#: admin/fai/class_faiManagement.inc:847 +#, fuzzy +msgid "script" +msgstr "Script" + +#: admin/fai/class_faiManagement.inc:848 +#, fuzzy +msgid "hook" +msgstr "Inhakers" + +#: admin/fai/class_faiManagement.inc:849 +#, fuzzy +msgid "variable" +msgstr "Variabele" + +#: admin/fai/class_faiManagement.inc:850 +#, fuzzy +msgid "template" +msgstr "Sjabloon" + +#: admin/fai/class_faiManagement.inc:851 +#, fuzzy +msgid "package list" +msgstr "Pakketlijst" + +#: admin/fai/class_faiManagement.inc:869 admin/fai/class_faiManagement.inc:886 +#, fuzzy, php-format +msgid "You have no permission to create a new %s!" +msgstr "U heeft geen toestemming deze objectgroep te verwijderen!" + +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "profile" +msgstr "Profielen" + +#: admin/fai/class_faiManagement.inc:1286 +msgid "" +"The selected release is not available anymore. All triggered actions are " +"skipped." +msgstr "" + +#: admin/fai/class_faiManagement.inc:1411 +#, fuzzy +msgid "FAI releases" +msgstr "FAI klassen" + +#: admin/fai/class_faiManagement.inc:1412 +#, fuzzy +msgid "FAI release management" +msgstr "Blokkeerlijst beheer" + +#: admin/fai/class_faiManagement.inc:1417 +msgid "FAI" +msgstr "FAI" + +#: admin/fai/class_faiVariableEntry.inc:94 +#, fuzzy +msgid "Content" +msgstr "Doorgaan" + +#: admin/fai/class_faiVariableEntry.inc:129 +#, fuzzy +msgid "Variable entry" +msgstr "Variabele inhoud" + +#: admin/fai/class_faiVariableEntry.inc:130 +#, fuzzy +msgid "FAI variable entry " +msgstr "Toon FAI variabelen" + +#: admin/fai/class_faiVariableEntry.inc:139 admin/fai/faiVariableEntry.tpl:38 +msgid "Variable content" +msgstr "Variabele inhoud" + +#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288 +#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346 +msgid "edit" +msgstr "Bewerk" + +#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348 +msgid "delete" +msgstr "Verwijder" + +#: admin/fai/class_faiTemplate.inc:536 +msgid "Template" +msgstr "Sjabloon" + +#: admin/fai/class_faiTemplate.inc:537 +#, fuzzy +msgid "FAI template" +msgstr "Nieuw sjabloon" + +#: admin/fai/class_faiTemplate.inc:544 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiPackage.inc:584 admin/fai/class_faiPackage.inc:587 +#, fuzzy +msgid "Readonly" +msgstr "Lezen" + +#: admin/fai/class_faiPackageEntry.inc:38 +msgid "Please enter your search string here" +msgstr "Geef hier uw zoekwaarde op" + +#: admin/fai/class_faiPackageEntry.inc:103 +msgid "" +"This list displays all assigned package names for this repository settings." +msgstr "" +"Deze lijst toont alle toegekende pakketnamen voor deze verzamelplaats " +"instellingen." + +#: admin/fai/paste_generic.tpl:1 +#, fuzzy +msgid "FAI settings" +msgstr "FAI klassen" + +#: admin/fai/paste_generic.tpl:5 admin/fai/class_faiProfileEntry.inc:174 +#: admin/fai/askClassName.tpl:32 admin/fai/askClassName.tpl:54 +#: admin/fai/class_divListFai.inc:53 +msgid "Class name" +msgstr "Klassenaam" + +#: admin/fai/remove_branch.tpl:6 +msgid "" +"This includes all account data, system access, etc. for this branch. Please " +"double check if your really want to do this since there is no way for GOsa " +"to get your data back." +msgstr "" +"Dit omvat alle account gegevens, systeem toegangsregels, instellingen etc. " +"voor deze aftakkingen. Verzeker uzelf hiervan, aangezien er geen " +"mogelijkheid voor GOsa is om deze informatie terug te halen." + +#: admin/fai/remove_branch.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Indien u zeker bent drukt u dan 'Verwijderen' om door te gaan of 'Annuleren' " +"om te annuleren." + +#: admin/fai/faiProfileEntry.tpl:6 +msgid "List of FAI objects (Fully Automatic Installation)" +msgstr "Lijst met FAI objecten (Fully Automatic Installation)" + +#: admin/fai/faiProfileEntry.tpl:26 +msgid "" +"This menu allows you to select FAI class names and to add them to the " +"currently edited profile." +msgstr "" +"Dit menu maakt het mogelijk ok FAI klassenamen te selecteren en deze toe te " +"voegen aan het profiel dat op dit moment bewerkt wordt." + +#: admin/fai/faiProfileEntry.tpl:39 +msgid "Show only classes with templates" +msgstr "Toon alleen klassen met sjablonen" + +#: admin/fai/faiProfileEntry.tpl:41 +msgid "Show only classes with scripts" +msgstr "Toon alleen klassen met scripts" + +#: admin/fai/faiProfileEntry.tpl:43 +msgid "Show only classes with hooks" +msgstr "Toon alleen klassen met inhakers" + +#: admin/fai/faiProfileEntry.tpl:45 +msgid "Show only classes with variables" +msgstr "Toon alleen klassen met variabelen" + +#: admin/fai/faiProfileEntry.tpl:47 +msgid "Show only classes with packages" +msgstr "Toon alleen klassen met pakketten" + +#: admin/fai/faiProfileEntry.tpl:49 +msgid "Show only classes with partitions" +msgstr "Toon alleen klassen met partities" + +#: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_askClassName.inc:85 admin/fai/class_askClassName.inc:86 +msgid "Create new FAI object" +msgstr "Nieuw FAI object aanmaken" + +#: admin/fai/class_faiGroupHandle.inc:102 admin/fai/class_divListFai.inc:164 +#: admin/fai/class_divListFai.inc:210 admin/fai/class_faiSummaryTab.inc:49 +msgid "Package list" +msgstr "Pakketlijst" + +#: admin/fai/class_faiGroupHandle.inc:104 admin/fai/class_divListFai.inc:156 +#: admin/fai/class_divListFai.inc:212 admin/fai/class_faiSummaryTab.inc:44 +msgid "Scripts" +msgstr "Scripts" + +#: admin/fai/class_faiGroupHandle.inc:106 admin/fai/class_divListFai.inc:160 +#: admin/fai/class_divListFai.inc:214 admin/fai/class_faiSummaryTab.inc:46 +msgid "Variables" +msgstr "Variabelen" + +#: admin/fai/class_faiGroupHandle.inc:108 admin/fai/class_divListFai.inc:158 +#: admin/fai/class_divListFai.inc:216 admin/fai/class_faiSummaryTab.inc:45 +msgid "Hooks" +msgstr "Inhakers" + +#: admin/fai/class_faiGroupHandle.inc:112 admin/fai/class_divListFai.inc:220 +#: admin/fai/class_faiSummaryTab.inc:47 +msgid "Templates" +msgstr "Sjablonen" + +#: admin/fai/class_faiGroupHandle.inc:114 admin/fai/class_divListFai.inc:76 +#: admin/fai/class_divListFai.inc:222 +msgid "OPSI netboot product" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:116 +msgid "OPSI local product" +msgstr "" + +#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68 +#: admin/fai/class_faiPackage.inc:573 +msgid "Package" +msgstr "Pakket" + +#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316 +#, fuzzy +msgid "Sort direction" +msgstr "Sectie" + +#: admin/fai/class_faiScript.inc:332 +msgid "Action" +msgstr "Actie" + +#: admin/fai/class_faiScript.inc:638 admin/fai/class_faiHookEntry.inc:199 +#, fuzzy +msgid "FAI script" +msgstr "Importeer script" + +#: admin/fai/class_FAI.inc:259 admin/fai/class_FAI.inc:662 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: admin/fai/class_FAI.inc:535 +#, php-format +msgid "Error, following objects should be equal '%s' and '%s'" +msgstr "" + +#: admin/fai/class_FAI.inc:874 +#, php-format +msgid "Creating group application release for %s" +msgstr "" + +#: admin/fai/class_FAI.inc:943 admin/fai/class_FAI.inc:965 +#: admin/fai/class_FAI.inc:1005 admin/fai/class_FAI.inc:1010 +#: admin/fai/class_FAI.inc:1048 +msgid "Object" +msgstr "Object" + +#: admin/fai/class_FAI.inc:944 +#, php-format +msgid "Adding missing group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:966 +#, php-format +msgid "Adding group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1006 +#, fuzzy, php-format +msgid "Could not create menu entry %s. (Already exists)." +msgstr "Kan '%s' niet aanmaken. De gewenste naam bestaat al." + +#: admin/fai/class_FAI.inc:1011 +#, php-format +msgid "Created group application menu entry for %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1042 +#, php-format +msgid "Creating copy of %s" +msgstr "Bezig met maken van kopie van %s" + +#: admin/fai/class_FAI.inc:1045 +msgid "Processing" +msgstr "Bezig met verwerken" + +#: admin/fai/class_FAI.inc:1063 +#, fuzzy +msgid "Could not create new release, the destination dn is already in use." +msgstr "Kan '%s' niet aanmaken. De gewenste naam bestaat al." + +#: admin/fai/class_FAI.inc:1076 +msgid "Error while fetching source dn - aborted!" +msgstr "Fout bij het ophalen van de bron dn - afgebroken!" + +#: admin/fai/class_FAI.inc:1158 +#, php-format +msgid "" +"Release creation failed due to ldap errors. Additional informations '%s'." +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#, fuzzy +msgid "file is empty" +msgstr "Het opgegeven bestand is leeg." + +#: admin/fai/class_faiScriptEntry.inc:181 +#: admin/fai/class_faiScriptEntry.inc:191 +#, fuzzy +msgid "Script entry" +msgstr "Variabele inhoud" + +#: admin/fai/class_faiScriptEntry.inc:182 +#, fuzzy +msgid "FAI script entry" +msgstr "Importeer script" + +#: admin/fai/class_faiScriptEntry.inc:192 +#, fuzzy +msgid "Script Priority" +msgstr "Inlogscript" + +#: admin/fai/faiSummary.tpl:4 +msgid "FAI object tree" +msgstr "FAI objectlijst" + +#: admin/fai/faiSummary.tpl:11 +msgid "Reload class and release configuration from parent object." +msgstr "Klasse herladen en configuratie van ouder object vrijgeven." + +#: admin/fai/faiSummary.tpl:22 +#, fuzzy +msgid "You are not allowed to view the fai summary." +msgstr "U heeft geen toestemming om deze gebruiker te verwijderen!" + +#: admin/fai/faiTemplate.tpl:34 +msgid "List of template files" +msgstr "Lijst met sjabloonbestanden" + +#: admin/fai/class_faiPartitionTable.inc:301 +#: admin/fai/class_faiPartitionTable.inc:307 +#, php-format +msgid "%s partition" +msgstr "%s partitie" + +#: admin/fai/class_faiPartitionTable.inc:303 +#: admin/fai/class_faiPartitionTable.inc:309 +#, php-format +msgid "%s partition(s)" +msgstr "%s partitie(s)" + +#: admin/fai/class_faiPartitionTable.inc:542 +#, fuzzy +msgid "FAI partition table" +msgstr "Nieuwe partitietabel" + +#: admin/fai/branch_selector.tpl:2 +#: admin/systems/services/repository/class_servRepository.inc:358 +#, fuzzy +msgid "Releases" +msgstr "Distributie versie" + +#: admin/fai/branch_selector.tpl:8 +msgid "Current release" +msgstr "Huidige uitgave" + +#: admin/fai/branch_selector.tpl:20 admin/fai/branch_selector.tpl:26 +#, fuzzy +msgid "Create release" +msgstr "Huidige uitgave" + +#: admin/fai/branch_selector.tpl:23 admin/fai/branch_selector.tpl:29 +#, fuzzy +msgid "Create read-only release" +msgstr "Huidige uitgave" + +#: admin/fai/branch_selector.tpl:28 +#, fuzzy +msgid "Freeze" +msgstr "Frequentie" + +#: admin/fai/branch_selector.tpl:35 +msgid "Delete current release" +msgstr "Verwijder huidige uitgave" + +#: admin/fai/faiVariableEntry.tpl:33 +msgid "Variable attributes" +msgstr "Variabele attributen" + +#: admin/fai/class_faiHookEntry.inc:188 +#, fuzzy +msgid "Hook entry" +msgstr "Record verwijderen" + +#: admin/fai/class_faiHookEntry.inc:189 +#, fuzzy +msgid "FAI hook entry" +msgstr "Toon FAI inhakers" + +#: admin/fai/faiNewBranch.tpl:5 +msgid "" +"You are now going to create a branch or locked branch. This action clones " +"the existing release to another release name. Branches can be modified as " +"usual. FAI classes of locked branches cannot be modified, just additional " +"classes are possible. Branch names should be alphanumeric, excluding the " +"reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' " +"and 'fai'." +msgstr "" +"U staat op het punt een nieuwe distributie of afgesloten distributie aan te " +"maken. Deze actie kopieert de bestaande uitgave naar een nieuwe uitgave " +"naam. Distributies kunnen zoals gewoonlijk veranderd worden. FAI klassen of " +"gesloten distributies kunnen niet veranderd worden. Er kunnen alleen " +"additionele klassen aangemaakt worden. Distributie namen moeten alfanumeriek " +"zijn, met uitzondering van de gereserveerde namen 'scripts', 'hooks', " +"'partitions', 'variables', 'templates' en 'fai'." + +#: admin/fai/faiNewBranch.tpl:7 +msgid "" +"Branches are created as subreleases of the currently selected branch. " +"Creating a new branch named 1.0.2 in SARGE for example, will result in a new " +"release called SARGE/1.0.2." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:13 +msgid "Please enter a name for the branch" +msgstr "Voer a.u.b. een naam voor de aftakking in." + +#: admin/fai/faiNewBranch.tpl:34 +msgid "Processing the requested operation" +msgstr "Bezig met verwerken van de gevraagde opdracht" + +#: admin/fai/faiNewBranch.tpl:35 +msgid "" +"As soon as the copy operation has finished, you can scroll down to end of " +"the page and press the 'Continue' button to continue with the fai management " +"dialog." +msgstr "" +"Zodra de kopieerbewerking beeindigd is, kunt u naar het einde van de pagina " +"gaan en op de 'Verder' knop drukken om verder te gaan met de FAI beheer " +"dialoog." + +#: admin/fai/faiNewBranch.tpl:41 +msgid "" +"Your browser doesn't support iframes, please use this link to perform the " +"requested operation." +msgstr "" +"Uw browser heeft geen ondersteuning voor frames. Gebruik a.u.b. deze link om " +"de gewenste opdracht uit te voeren." + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Perform requested operation." +msgstr "Gewenste opdracht uitvoeren." + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Initiate operation" +msgstr "Opdracht starten" + +#: admin/fai/askClassName.tpl:6 +msgid "" +"Adding a new class to the FAI management, requires a class name. You have to " +"specify a unique class name for unique types of FAI classes, while you can " +"use the same class name for different types of FAI classes. In the laste " +"case, FAI will automatically enclose all these different class types to one " +"unique class name." +msgstr "" +"Het toevoegen van een nieuwe klasse aan FAI beheer, vereist een klassenaam. " +"U dient een unieke klassenaam binnen een FAI klassetype te gebruiken. Het is " +"mogelijk dezelfde klassenaam voor verschillende FAI klassetypes te " +"gebruiken. In het laatste geval zal FAI automatisch alle verschillende " +"klassetypes onderbrengen binnen een unieke klassenaam." + +#: admin/fai/askClassName.tpl:12 +msgid "" +"Please use one of the following methods to choose the name for the new FAI " +"class." +msgstr "" +"Gebruik a.u.b. een van de volgende methodes om de naam voor de nieuwe FAI " +"klasse te kiezen." + +#: admin/fai/askClassName.tpl:26 +msgid "Enter FAI class name manually" +msgstr "Voer FAI klassenaam handmatig in" + +#: admin/fai/askClassName.tpl:48 +msgid "Choose FAI class name from a list of existing classes" +msgstr "Kies FAI klassenaam uit een lijst met bestaande klasses" + +#: admin/fai/askClassName.tpl:54 +msgid "Choose class name" +msgstr "Kies een klassenaam" + +#: admin/fai/askClassName.tpl:70 admin/fai/askClassName.tpl:77 +msgid "Use" +msgstr "Gebruik" + +#: admin/fai/askClassName.tpl:74 +msgid "A new class name." +msgstr "Een nieuwe klassenaam." + +#: admin/fai/class_faiPackageConfiguration.inc:68 +#, php-format +msgid "Debconf information for package '%s'" +msgstr "Debconf informatie voor pakket '%s'" + +#: admin/fai/class_faiVariable.inc:389 admin/fai/class_divListFai.inc:60 +#: admin/fai/class_divListFai.inc:66 +msgid "Variable" +msgstr "Variabele" + +#: admin/fai/class_faiVariable.inc:390 +#, fuzzy +msgid "FAI variable" +msgstr "Toon FAI variabelen" + +#: admin/fai/class_divListFai.inc:32 +#, fuzzy +msgid "List of classes" +msgstr "Lijst met FAI klassen" + +#: admin/fai/class_divListFai.inc:33 +#, fuzzy +msgid "List of deployment classes and products" +msgstr "Toon alleen klassen met pakketten" + +#: admin/fai/class_divListFai.inc:48 +#, fuzzy +msgid "Select all" +msgstr "Selecteer" + +#: admin/fai/class_divListFai.inc:54 +#, fuzzy +msgid "Class types" +msgstr "Klasse type" + +#: admin/fai/class_divListFai.inc:55 admin/fai/class_divListFai.inc:138 +msgid "Actions" +msgstr "Acties" + +#: admin/fai/class_divListFai.inc:57 admin/fai/class_divListFai.inc:59 +#: admin/fai/class_divListFai.inc:61 admin/fai/class_divListFai.inc:63 +#: admin/fai/class_divListFai.inc:65 admin/fai/class_divListFai.inc:67 +#: admin/fai/class_divListFai.inc:69 admin/fai/class_divListFai.inc:75 +#: admin/fai/class_divListFai.inc:77 +#, fuzzy, php-format +msgid "Display objects of type '%s'." +msgstr "Toon overeenkomende objecten" + +#: admin/fai/class_divListFai.inc:58 +msgid "Show profiles" +msgstr "Toon profielen" + +#: admin/fai/class_divListFai.inc:60 +msgid "Show templates" +msgstr "Toon sjablonen" + +#: admin/fai/class_divListFai.inc:62 +msgid "Show scripts" +msgstr "Toon scripts" + +#: admin/fai/class_divListFai.inc:64 +msgid "Show hooks" +msgstr "Toon inhakers" + +#: admin/fai/class_divListFai.inc:66 +msgid "Show variables" +msgstr "Toon variabelen" + +#: admin/fai/class_divListFai.inc:68 +msgid "Show packages" +msgstr "Toon pakketten" + +#: admin/fai/class_divListFai.inc:70 +#, fuzzy +msgid "Partition" +msgstr "Partities" + +#: admin/fai/class_divListFai.inc:70 +msgid "Show partitions" +msgstr "Toon partities" + +#: admin/fai/class_divListFai.inc:76 +#, fuzzy +msgid "Show netboot products" +msgstr "Objectgroepen" + +#: admin/fai/class_divListFai.inc:78 admin/fai/class_divListFai.inc:224 +#, fuzzy +msgid "OPSI localboot product" +msgstr "Objectgroepen" + +#: admin/fai/class_divListFai.inc:78 +#, fuzzy +msgid "Show localboot products" +msgstr "Objectgroepen" + +#: admin/fai/class_divListFai.inc:86 +msgid "Display users matching" +msgstr "Toon overeenkomende gebruikers" + +#: admin/fai/class_divListFai.inc:140 +msgid "Create" +msgstr "Aanmaken" + +#: admin/fai/class_divListFai.inc:155 +msgid "PT" +msgstr "PT" + +#: admin/fai/class_divListFai.inc:157 +msgid "S" +msgstr "SC" + +#: admin/fai/class_divListFai.inc:159 +msgid "H" +msgstr "H" + +#: admin/fai/class_divListFai.inc:161 +msgid "V" +msgstr "V" + +#: admin/fai/class_divListFai.inc:162 +#, fuzzy +msgid "Templates " +msgstr "Sjablonen" + +#: admin/fai/class_divListFai.inc:163 +#, fuzzy +msgid "I" +msgstr "NI" + +#: admin/fai/class_divListFai.inc:165 +msgid "PK" +msgstr "PK" + +#: admin/fai/class_divListFai.inc:313 admin/fai/class_divListFai.inc:314 +#: admin/fai/class_divListFai.inc:315 admin/fai/class_divListFai.inc:316 +#: admin/fai/class_divListFai.inc:317 admin/fai/class_divListFai.inc:318 +#: admin/fai/class_divListFai.inc:319 admin/fai/class_divListFai.inc:320 +#: admin/fai/class_divListFai.inc:321 admin/fai/class_divListFai.inc:322 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Naam van de afdeling" + +#: admin/fai/class_divListFai.inc:313 +#, fuzzy +msgid "profiles" +msgstr "Profielen" + +#: admin/fai/class_divListFai.inc:314 +#, fuzzy +msgid "partitions" +msgstr "%s partitie" + +#: admin/fai/class_divListFai.inc:315 +#, fuzzy +msgid "scripts" +msgstr "Script" + +#: admin/fai/class_divListFai.inc:316 +#, fuzzy +msgid "hooks" +msgstr "Inhakers" + +#: admin/fai/class_divListFai.inc:317 +#, fuzzy +msgid "variables" +msgstr "Variabele" + +#: admin/fai/class_divListFai.inc:318 +#, fuzzy +msgid "templates" +msgstr "Sjabloon" + +#: admin/fai/class_divListFai.inc:319 +#, fuzzy +msgid "packages" +msgstr "Pakketten" + +#: admin/fai/class_divListFai.inc:320 +#, fuzzy +msgid "departments" +msgstr "Verwerk afdeling" + +#: admin/fai/class_divListFai.inc:321 +#, fuzzy +msgid "netboot products" +msgstr "Objectgroepen" + +#: admin/fai/class_divListFai.inc:322 +#, fuzzy +msgid "localboot products" +msgstr "Objectgroepen" + +#: admin/fai/class_faiPackage.inc:329 admin/fai/class_faiPackage.inc:330 +#, fuzzy +msgid "Configured" +msgstr "Instellen" + +#: admin/fai/class_faiPackage.inc:336 admin/fai/class_faiPackage.inc:337 +msgid "Package marked for removal" +msgstr "Pakket gemarkeerd voor verwijdering" + +#: admin/fai/class_faiPackage.inc:353 +#, fuzzy +msgid "Mark package for removal" +msgstr "Pakket gemarkeerd voor verwijdering" + +#: admin/fai/class_faiPackage.inc:359 +msgid "Configure this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:363 +msgid "Remove this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:442 +#, fuzzy +msgid "Please select a least one package!" +msgstr "Selecteer a.u.b. tenminste een pakket." + +#: admin/fai/class_faiPackage.inc:446 +#, fuzzy +msgid "" +"Please choose a valid release/section combination for your repository setup!" +msgstr "" +"Kies a.u.b. een geldige combinatie voor uw verzamelplaats instellingen." + +#: admin/fai/class_faiPackage.inc:574 +#, fuzzy +msgid "FAI Package list" +msgstr "Pakketlijst" + +#: admin/fai/class_faiPackage.inc:583 +msgid "Packages" +msgstr "Pakketten" + +#: admin/fai/class_faiPackage.inc:585 +#, fuzzy +msgid "Install Method" +msgstr "Installatie methode" + +#: admin/fai/class_faiPackage.inc:586 +#, fuzzy +msgid "Package configuration" +msgstr "FAX database" + +#: admin/fai/class_faiTemplateEntry.inc:90 +msgid "no file uploaded yet" +msgstr "nog geen bestand ge-upload." + +#: admin/fai/class_faiTemplateEntry.inc:96 +#, php-format +msgid "exists in database (size: %s bytes)" +msgstr "bestaat in database (grootte: %s bytes)" + +#: admin/fai/class_faiTemplateEntry.inc:265 +#, fuzzy +msgid "Template entry" +msgstr "Sjabloongebruiker" + +#: admin/fai/class_faiTemplateEntry.inc:266 +#, fuzzy +msgid "FAI template entry" +msgstr "Nieuw sjabloon" + +#: admin/fai/class_faiTemplateEntry.inc:275 +#, fuzzy +msgid "Template file" +msgstr "Sjabloon bundel" + +#: admin/fai/class_faiTemplateEntry.inc:276 +#, fuzzy +msgid "Template path" +msgstr "Sjabloon naam" + +#: admin/fai/class_faiTemplateEntry.inc:277 +#, fuzzy +msgid "File owner" +msgstr "Bestandsnaam" + +#: admin/fai/class_faiTemplateEntry.inc:278 +#, fuzzy +msgid "File permissions" +msgstr "Rechten" + +#: admin/fai/class_faiSummaryTab.inc:50 +msgid "Profiles" +msgstr "Profielen" + +#: admin/fai/class_faiSummaryTab.inc:89 +msgid "Unknown FAI information source!" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:178 +#: admin/systems/services/repository/class_servRepository.inc:93 +msgid "You can't use this plugin until FAI is activated." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:220 +msgid "This object has no FAI classes assigned." +msgstr "Dit object heeft geen FAI klassen toegewezen gekregen." + +#: admin/fai/class_faiSummaryTab.inc:233 +msgid "Open" +msgstr "Open" + +#: admin/fai/class_faiSummaryTab.inc:239 +msgid "Close" +msgstr "Sluiten" + +#: admin/fai/class_faiSummaryTab.inc:342 +msgid "No." +msgstr "Aantal" + +#: admin/fai/class_faiSummaryTab.inc:344 +msgid "FS options" +msgstr "FS opties" + +#: admin/fai/faiPartitionTable.tpl:38 +msgid "Discs" +msgstr "Schijven" + +#: admin/fai/faiPartitionTable.tpl:44 +msgid "Choose a disk to delete or edit" +msgstr "Kies een te bewerken of verwijderen hardeschijf" + +#: admin/fai/class_debconfTemplate.inc:207 +msgid "This package has no debconf options." +msgstr "Dit pakket heeft geen debconf mogelijkheden." + +#: admin/systems/services/repository/class_divListRepositories.inc:19 +#, fuzzy +msgid "List of configured repositories" +msgstr "Lijst met gebruikers" + +#: admin/systems/services/repository/class_divListRepositories.inc:20 +#, fuzzy +msgid "This menu allows you to create, delete and edit repository settings." +msgstr "" +"Dit menu maakt het mogelijk om FAI klassen aan te maken, bewerken en " +"verwijderen." + +#: admin/systems/services/repository/class_divListRepositories.inc:24 +#: admin/systems/services/repository/class_divListRepositories.inc:64 +#: admin/systems/services/repository/servRepositorySetup.tpl:39 +#: admin/systems/services/repository/class_servRepository.inc:360 +#, fuzzy +msgid "Sections" +msgstr "Sectie" + +#: admin/systems/services/repository/class_divListRepositories.inc:25 +msgid "Options" +msgstr "Opties" + +#: admin/systems/services/repository/class_divListRepositories.inc:33 +#, fuzzy +msgid "Add repository" +msgstr "Directory" + +#: admin/systems/services/repository/servRepositorySetup.tpl:8 +#: admin/systems/services/repository/class_servRepository.inc:357 +#, fuzzy +msgid "Parent server" +msgstr "Bewaar" + +#: admin/systems/services/repository/servRepositorySetup.tpl:28 +#: admin/systems/services/repository/class_servRepository.inc:359 +#: admin/systems/services/repository/class_servRepositorySetup.inc:157 +msgid "URL" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:26 +#: admin/systems/services/repository/class_servRepository.inc:308 +#: admin/systems/services/repository/class_servRepository.inc:344 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +#, fuzzy +msgid "Repository service" +msgstr "Verzamelplaats" + +#: admin/systems/services/repository/class_servRepository.inc:142 +#, fuzzy +msgid "FAI release" +msgstr "FAI klassen" + +#: admin/systems/services/repository/class_servRepository.inc:344 +msgid "Services" +msgstr "Services" + +#, fuzzy +#~ msgid "Deployment status" +#~ msgstr "Systeem status" + +#, fuzzy +#~ msgid "System deployment status" +#~ msgstr "Systeembeheer" + +#, fuzzy +#~ msgid "Permission" +#~ msgstr "Rechten" + +#, fuzzy +#~ msgid "" +#~ "This menu allows you to remove and change the properties of GOsa tasks." +#~ msgstr "" +#~ "Dit menu maakt het mogelijk om specifieke systemen toe te voegen, " +#~ "bewerken en verwijderen. U kunt alleen systemen toevoegen die al eens " +#~ "opgestart geweest zijn." + +#, fuzzy +#~ msgid "List of queued jobs" +#~ msgstr "Lijst met afdelingen" + +#~ msgid "Import" +#~ msgstr "Importeren" + +#, fuzzy +#~ msgid "Resume" +#~ msgstr "Verwijderen" + +#, fuzzy +#~ msgid "Pause" +#~ msgstr "Plakken" + +#, fuzzy +#~ msgid "Abort" +#~ msgstr "Poort" + +#, fuzzy +#~ msgid "Reload" +#~ msgstr "Lezen" + +#, fuzzy +#~ msgid "Target" +#~ msgstr "Chipset" + +#, fuzzy +#~ msgid "Schedule" +#~ msgstr "PHPScheduleIt" + +#~ msgid "Status" +#~ msgstr "Status" + +#, fuzzy +#~ msgid "Move up" +#~ msgstr "Modus" + +#, fuzzy +#~ msgid "Move down" +#~ msgstr "Modus" + +#, fuzzy +#~ msgid "Execute now" +#~ msgstr "Commando" + +#, fuzzy +#~ msgid "Abort job" +#~ msgstr "Poort" + +#, fuzzy +#~ msgid "Waiting" +#~ msgstr "Waarschuwing" + +#, fuzzy +#~ msgid "Processed" +#~ msgstr "Bezig met verwerken" + +#, fuzzy +#~ msgid "Detection" +#~ msgstr "Sectie" + +#, fuzzy +#~ msgid "Cannot update queue entry: %s" +#~ msgstr "Onbekende FAI status %s" + +#, fuzzy +#~ msgid "Cannot load queue entries: %s" +#~ msgstr "Onbekende FAI status %s" + +#, fuzzy +#~ msgid "System deployment" +#~ msgstr "Systeembeheer" + +#, fuzzy +#~ msgid "System list" +#~ msgstr "Systeem vertrouwen" + +#, fuzzy +#~ msgid "ID" +#~ msgstr "GID" + +#, fuzzy +#~ msgid "Timestamp" +#~ msgstr "Timeout" + +#, fuzzy +#~ msgid "Targets" +#~ msgstr "Chipset" + +#, fuzzy +#~ msgid "System / Department" +#~ msgstr "Afdeling" + +#, fuzzy +#~ msgid "Display users" +#~ msgstr "Toon overeenkomende gebruikers" + +#, fuzzy +#~ msgid "Display groups" +#~ msgstr "Toon groepen van gebruiker" + +#~ msgid "Base" +#~ msgstr "Basis" + +#~ msgid "Submit department" +#~ msgstr "Verwerk afdeling" + +#~ msgid "Submit" +#~ msgstr "Verwerk" + +#, fuzzy +#~ msgid "Abort installation" +#~ msgstr "Windows werkstation" + +#, fuzzy +#~ msgid "Reload GOto settings" +#~ msgstr "Posix instellingen" + +#, fuzzy +#~ msgid "System analysis" +#~ msgstr "Systeem" + +#, fuzzy +#~ msgid "Installation activation" +#~ msgstr "Windows werkstation" + +#, fuzzy +#~ msgid "Reload LDAP config" +#~ msgstr "Lijst herladen" + +#, fuzzy +#~ msgid "Time schedule" +#~ msgstr "PHPScheduleIt" + +#, fuzzy +#~ msgid "Year" +#~ msgstr "Zoeken" + +#, fuzzy +#~ msgid "Month" +#~ msgstr "maand" + +#, fuzzy +#~ msgid "Day" +#~ msgstr "dag" + +#, fuzzy +#~ msgid "Hour" +#~ msgstr "uur" + +#, fuzzy +#~ msgid "Minute" +#~ msgstr "Printer" + +#, fuzzy +#~ msgid "Second" +#~ msgstr "Sectie" + +#, fuzzy +#~ msgid "Reload fai release db" +#~ msgstr "Uploaden" + +#, fuzzy +#~ msgid "Send message" +#~ msgstr "Bericht in wachtstand plaatsen" + +#, fuzzy +#~ msgid "Subject" +#~ msgstr "Object" + +#~ msgid "Message" +#~ msgstr "Bericht" + +#, fuzzy +#~ msgid "Create '%s' job" +#~ msgstr "Nieuw FAI object aanmaken" + +#~ msgid "Add" +#~ msgstr "Toevoegen" + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#, fuzzy +#~ msgid "Display server" +#~ msgstr "Getoonde naam" + +#, fuzzy +#~ msgid "Display workstation" +#~ msgstr "werkstations" + +#, fuzzy +#~ msgid "Display object groups" +#~ msgstr "Lijst met objectgroepen" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "Workstation" +#~ msgstr "Werkstation" + +#~ msgid "Object group" +#~ msgstr "Objectgroep" + +#, fuzzy +#~ msgid "Activate new" +#~ msgstr "Actief" + +#, fuzzy +#~ msgid "Progress" +#~ msgstr "Bezig met verwerken" + +#, fuzzy +#~ msgid "Message settings" +#~ msgstr "Gebruikersinstellingen" + +#, fuzzy +#~ msgid "Sender" +#~ msgstr "Afzender" + +#, fuzzy +#~ msgid "Target users" +#~ msgstr "Windows gebruikers" + +#, fuzzy +#~ msgid "Target groups" +#~ msgstr "afdelingen" + +#, fuzzy +#~ msgid "Available targets" +#~ msgstr "Beschikbare programma's" + +#~ msgid "Object name" +#~ msgstr "Objectnaam" + +#, fuzzy +#~ msgid "Select to see object groups" +#~ msgstr "Selecteer om GOsa groepen te zien" + +#, fuzzy +#~ msgid "Show object groups" +#~ msgstr "Objectgroepen" + +#~ msgid "Select to see servers" +#~ msgstr "Selecteer om servers te zien" + +#~ msgid "Show servers" +#~ msgstr "Toon servers" + +#~ msgid "Select to see workstations" +#~ msgstr "Selecteer om werkstations te zien" + +#~ msgid "Show workstations" +#~ msgstr "Toon werkstations" + +#, fuzzy +#~ msgid "Select to see incoming objects" +#~ msgstr "Selecteer om telefoons te zien" + +#, fuzzy +#~ msgid "Show new objects" +#~ msgstr "Lidmaatschap objecten" + +#~ msgid "Regular expression for matching group names" +#~ msgstr "Reguliere expressie voor overeenkomende groepnamen" + +#, fuzzy +#~ msgid "Available logs" +#~ msgstr "Beschikbare programma's" + +#, fuzzy +#~ msgid "Selected log" +#~ msgstr "Selecteer" + +#, fuzzy +#~ msgid "No logs for this host available!" +#~ msgstr "Bestand is beschikbaar" + +#, fuzzy +#~ msgid "Import jobs" +#~ msgstr "Importeren" + +#, fuzzy +#~ msgid "timestamp" +#~ msgstr "Timeout" + +#, fuzzy +#~ msgid "MAC-address" +#~ msgstr "Adres" + +#, fuzzy +#~ msgid "job type" +#~ msgstr "FS type" + +#, fuzzy +#~ msgid "object group" +#~ msgstr "Objectgroep" + +#, fuzzy +#~ msgid "import base" +#~ msgstr "Het opslaan van de telefoon is mislukt" + +#, fuzzy +#~ msgid "IP-address" +#~ msgstr "Adres" + +#, fuzzy +#~ msgid "Select list to import" +#~ msgstr "Selecteer om printers te zien" + +#, fuzzy +#~ msgid "Browse" +#~ msgstr "Basis" + +#, fuzzy +#~ msgid "MAC" +#~ msgstr "Rechten" + +#, fuzzy +#~ msgid "IP" +#~ msgstr "NI" + +#~ msgid "none" +#~ msgstr "geen" + +#, fuzzy +#~ msgid "Date" +#~ msgstr "Plakken" + +#, fuzzy +#~ msgid "GOto log view" +#~ msgstr "GOsa help" + +#, fuzzy +#~ msgid "Cannot delete '%s': object does not exist!" +#~ msgstr "Pakketbestand '%s' bestaat niet." + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "Systeembeheer" + +#, fuzzy +#~ msgid "Edit product" +#~ msgstr "Bewerk klasse" + +#~ msgid "Edit class" +#~ msgstr "Bewerk klasse" + +#~ msgid "Delete class" +#~ msgstr "Verwijder klasse" + +#, fuzzy +#~ msgid "Opsi netboot package" +#~ msgstr "Gebruikte pakketten" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopieer" + +#~ msgid "copy" +#~ msgstr "kopieer" + +#~ msgid "Copy this entry" +#~ msgstr "Deze invoer kopieren" + +#, fuzzy +#~ msgid "Sudo generic" +#~ msgstr "Algemeen" + +#~ msgid "package is configured" +#~ msgstr "pakket is geconfigureerd" + +#~ msgid "Branches" +#~ msgstr "Aftakkingen" + +#~ msgid "Create new branch" +#~ msgstr "Maak nieuwe tak aan" + +#~ msgid "Create new locked branch" +#~ msgstr "Maak nieuwe geblokkeerde tak aan" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "knippen" + +#~ msgid "cut" +#~ msgstr "knippen" + +#~ msgid "Cut this entry" +#~ msgstr "Deze invoer knippen" + +#~ msgid "Choosen packages" +#~ msgstr "Gekozen pakketten" + +#~ msgid "Toggle remove flag" +#~ msgstr "Verwijder markering omschakelen" + +#, fuzzy +#~ msgid "File system encryption" +#~ msgstr "systeem informatie bekijken" + +#~ msgid "Fully Automatic Installation - management" +#~ msgstr "Fully Automatic Installation - beheer" + +#~ msgid "Fully Automatic Installation" +#~ msgstr "Fully Automatic Installation" + +#, fuzzy +#~ msgid "This table displays all FAI classes in the selected tree." +#~ msgstr "Deze tabel toont alle systemen in de geselecteerde tree" + +#~ msgid "Name of FAI class" +#~ msgstr "Naam van de FAI klasse" + +#, fuzzy +#~ msgid "Package file '%s' does not exist!" +#~ msgstr "Pakketbestand '%s' bestaat niet." + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "De opgegeven naam wordt al gebruikt." + +#, fuzzy +#~ msgid "Please enter a script!" +#~ msgstr "Geef a.u.b. een scripts op." + +#~ msgid "You're about to delete all information about the FAI class at '%s'." +#~ msgstr "" +#~ "U staat op het punt alle informatie over deze FAI klasse op '%s' te " +#~ "verwijderen." + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "U heeft geen toestemming om dit component te verwijderen!" + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "U staat op het punt de invoer %s te verwijderen." + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "U staat op het punt de invoer %s te verwijderen." + +#~ msgid "You're about to delete a fai branch / freeze '%s'." +#~ msgstr "" +#~ "U staat op het punt een FAI aftakking / bevriezing '%s' te verwijderen." + +#, fuzzy +#~ msgid "Branch name is not valid!" +#~ msgstr "De opgegeven aftakkingsnaam is ongeldig." + +#, fuzzy +#~ msgid "Freeze name is not valid!" +#~ msgstr "De opgegeven bevriesnaam is ongeldig." + +#, fuzzy +#~ msgid "You have no permission to create a new branch!" +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen!" + +#~ msgid "Packages bundle" +#~ msgstr "Pakketbundel" + +#, fuzzy +#~ msgid "There is already a template with the given name." +#~ msgstr "Er bestaat al een bestand met dezelfde naam." + +#~ msgid "Please specify a value for attribute 'file'." +#~ msgstr "Geef a.u.b. een waarde op voor het atribuut 'bestand'." + +#, fuzzy +#~ msgid "Please specify a valid value for attribute 'Destination path'." +#~ msgstr "Geef a.u.b. een waarde op voor het atribuut 'pad'." + +#, fuzzy +#~ msgid "Please enter a file name." +#~ msgstr "Kies a.u.b. een naam." + +#~ msgid "Please enter a user." +#~ msgstr "Geef a.u.b. een gebruiker op." + +#~ msgid "Please enter a valid user. Only a-z/0-9 are allowed." +#~ msgstr "" +#~ "Geef a.u.b. een geldige gebruiker op! Alleen a-z/0-9 zijn toegestaan." + +#~ msgid "Please enter a group." +#~ msgstr "Geef a.u.b. een groep op." + +#~ msgid "Please enter a valid group. Only a-z/0-9 are allowed." +#~ msgstr "Geef a.u.b. een geldige groep op! Alleen a-z/0-9 zijn toegestaan." + +#~ msgid "Create new FAI object - partition table." +#~ msgstr "Nieuw FAI object - partitie tabel aanmaken." + +#~ msgid "Create new FAI object - package bundle." +#~ msgstr "Nieuw FAI object - pakketbundel aanmaken." + +#~ msgid "Create new FAI object - script bundle." +#~ msgstr "Nieuw FAI object - scriptbundel aanmaken." + +#~ msgid "Create new FAI object - variable bundle." +#~ msgstr "Nieuw FAI object - variabelebundel aanmaken." + +#~ msgid "Create new FAI object - hook bundle." +#~ msgstr "Nieuw FAI object - inhakerbundel aanmaken." + +#~ msgid "Create new FAI object - profile." +#~ msgstr "Nieuw FAI object - profiel aanmaken." + +#~ msgid "Create new FAI object - template." +#~ msgstr "Nieuw FAI object - sjabloon aanmaken." + +#, fuzzy +#~ msgid "Spaces are not allowed within class names." +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen!" + +#~ msgid "The given class name is empty." +#~ msgstr "De opgegeven klassenaam is leeg." + +#~ msgid "The specified class name is already in use for this object type." +#~ msgstr "" +#~ "De waarde die opgegeven is voor de klassenaam is al in gebruik voor dit " +#~ "objecttype." + +#, fuzzy +#~ msgid "There is already a variable with the given name." +#~ msgstr "Er bestaat al een bestand met dezelfde naam." + +#~ msgid "Please specify a value for the attribute 'content'." +#~ msgstr "Geef a.u.b. een waarde op voor het atribuut 'inhoud'." + +#~ msgid "Please enter a name." +#~ msgstr "Kies a.u.b. een naam." + +#~ msgid "Display FAI profile objects" +#~ msgstr "Toon FAI profieel objecten" + +#~ msgid "Display FAI template objects" +#~ msgstr "Toon FAI sjabloon objecten" + +#~ msgid "Display FAI scripts" +#~ msgstr "Toon FAI scripts" + +#~ msgid "Display FAI hooks" +#~ msgstr "Toon FAI inhakers" + +#~ msgid "Display FAI variables" +#~ msgstr "Toon FAI variabelen" + +#~ msgid "Display FAI packages" +#~ msgstr "Toon FAI pakketten" + +#~ msgid "Display FAI partitions" +#~ msgstr "Toon FAI partities" + +#, fuzzy +#~ msgid "Number of listed profiles" +#~ msgstr "Naam van de afdeling" + +#, fuzzy +#~ msgid "Number of listed partitions" +#~ msgstr "Naam van de afdeling" + +#, fuzzy +#~ msgid "Number of listed scripts" +#~ msgstr "Lijst met scripts" + +#, fuzzy +#~ msgid "Number of listed variables" +#~ msgstr "Lijst met toegekende variabelen" + +#, fuzzy +#~ msgid "Number of listed templates" +#~ msgstr "Naam van de afdeling" + +#, fuzzy +#~ msgid "Number of listed packages" +#~ msgstr "Naam van de afdeling" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Naam van de afdeling" + +#, fuzzy +#~ msgid "Please specify a valid disc name." +#~ msgstr "Geef a.u.b. een geldige scriptnaam op." + +#~ msgid "Please enter a valid mount point for partition %s." +#~ msgstr "Geef a.u.b. een geldig koppelpunt op voor partitie %s." + +#~ msgid "Please enter a valid partition size for partition %s." +#~ msgstr "Geef a.u.b. een geldige partitie grootte op voor partitie %s." + +#~ msgid "Please enter a valid range for partition %s." +#~ msgstr "Geef a.u.b. een geldig bereik op voor partitie %s." + +#~ msgid "Please enter a range for partition size for partition %s." +#~ msgstr "Geef a.u.b. een bereik op voor de partitie grootte van partitie %s." + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#~ msgid "Back" +#~ msgstr "Terug" + +#, fuzzy +#~ msgid "Saving of FAI/package list with dn '%s' failed." +#~ msgstr "Het opslaan van de FAI pakket basis is mislukt" + +#, fuzzy +#~ msgid "Saving of FAI/hook with dn '%s' failed." +#~ msgstr "Het opslaan van de FAI inhaker basis is mislukt" + +#, fuzzy +#~ msgid "Saving of FAI/variable with dn '%s' failed." +#~ msgstr "Het opslaan van de FAI variabele basis is mislukt" + +#, fuzzy +#~ msgid "Saving of FAI/template with dn '%s' failed." +#~ msgstr "Het opslaan van de FAI sjabloon basis is mislukt" + +#, fuzzy +#~ msgid "Creating of FAI/script with dn '%s' failed." +#~ msgstr "Het aanmaken van de FAI script basis is mislukt" + +#, fuzzy +#~ msgid "Saving of FAI/partition table with dn '%s' failed." +#~ msgstr "Het opslaan van de FAI partitietabel basis is mislukt" + +#, fuzzy +#~ msgid "Saving of FAI/profile with dn '%s' failed." +#~ msgstr "Het opslaan van het FAI profiel is mislukt" + +#~ msgid "Please select a valid file." +#~ msgstr "Selecteer a.u.b. een geldig bestand." + +#, fuzzy +#~ msgid "There is already a hook with the given name." +#~ msgstr "Er bestaat al een object met deze cn." + +#~ msgid "Please enter a value for script." +#~ msgstr "Geef a.u.b. een waarde voor script op" + +#, fuzzy +#~ msgid "There is already a script with the given name." +#~ msgstr "Er bestaat al een object met deze cn." + +#~ msgid "Please assign at least one class to this profile." +#~ msgstr "Ken a.u.b. tenminste een klasse toe aan dit profiel." + +#~ msgid "Please enter a valid name." +#~ msgstr "Geef a.u.b. een geldige naam op" + +#, fuzzy +#~ msgid "There is already a FAI object with this class name defined." +#~ msgstr "Er bestaat al een profiel met deze klassenaam." + +#~ msgid "" +#~ "Your specified search string '%s' returned too many results. Only the " +#~ "first 200 entries are shown, to keep the memory usage low." +#~ msgstr "" +#~ "De door u opgegeven zoekopdracht '%s' gaf teveel resultaten terug. Om het " +#~ "geheugengebruik laag te houden worden alleen de eerste 200 resultaten " +#~ "getoond." diff --git a/trunk/gosa-plugins/fai/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/fai/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..9379641c1 --- /dev/null +++ b/trunk/gosa-plugins/fai/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,2234 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/fai/faiTemplateEntry.tpl:3 admin/fai/faiVariable.tpl:4 +#: admin/fai/faiProfile.tpl:4 admin/fai/faiProfile.tpl:36 +#: admin/fai/faiScriptEntry.tpl:5 admin/fai/faiScript.tpl:4 +#: admin/fai/faiPackage.tpl:4 admin/fai/faiHook.tpl:4 +#: admin/fai/faiPartitionTableEntry.tpl:2 admin/fai/faiHookEntry.tpl:5 +#: admin/fai/faiTemplate.tpl:4 admin/fai/faiVariableEntry.tpl:5 +#: admin/fai/faiPartitionTable.tpl:4 +msgid "Generic" +msgstr "Ogólne" + +#: admin/fai/faiTemplateEntry.tpl:10 admin/fai/class_faiTemplateEntry.inc:220 +#, fuzzy +msgid "File name" +msgstr "Nazwa pliku" + +#: admin/fai/faiTemplateEntry.tpl:21 admin/fai/class_faiTemplateEntry.inc:215 +msgid "Destination path" +msgstr "Ścieżka docelowa" + +#: admin/fai/faiTemplateEntry.tpl:33 +#: admin/fai/class_faiPartitionTableEntry.inc:470 admin/fai/faiVariable.tpl:21 +#: admin/fai/class_faiHook.inc:562 admin/fai/faiProfile.tpl:21 +#: admin/fai/faiScriptEntry.tpl:19 admin/fai/faiScript.tpl:21 +#: admin/fai/faiPackage.tpl:21 admin/fai/faiHook.tpl:21 +#: admin/fai/class_faiProfile.inc:479 admin/fai/faiPartitionTableEntry.tpl:13 +#: admin/fai/faiHookEntry.tpl:19 admin/fai/class_faiVariableEntry.inc:138 +#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646 +#: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiTemplate.tpl:21 +#: admin/fai/class_faiPartitionTable.inc:550 admin/fai/faiVariableEntry.tpl:19 +#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398 +#: admin/fai/class_faiPackage.inc:582 admin/fai/class_faiTemplateEntry.inc:274 +#: admin/fai/faiPartitionTable.tpl:21 +msgid "Description" +msgstr "Opis" + +#: admin/fai/faiTemplateEntry.tpl:45 +msgid "Template attributes" +msgstr "Atrybuty szablonu" + +#: admin/fai/faiTemplateEntry.tpl:53 admin/fai/class_faiTemplateEntry.inc:211 +msgid "File" +msgstr "Plik" + +#: admin/fai/faiTemplateEntry.tpl:60 +msgid "Save template" +msgstr "Zapisz szablon" + +#: admin/fai/faiTemplateEntry.tpl:69 +msgid "Upload" +msgstr "Wgraj" + +#: admin/fai/faiTemplateEntry.tpl:76 +#, fuzzy +msgid "Full path" +msgstr "Ścieżka do fontów" + +#: admin/fai/faiTemplateEntry.tpl:92 +msgid "Owner" +msgstr "Właściciel" + +#: admin/fai/faiTemplateEntry.tpl:103 admin/fai/faiTemplateEntry.tpl:145 +#: admin/fai/class_faiTemplateEntry.inc:230 +#: admin/fai/class_faiTemplateEntry.inc:233 +#: admin/fai/class_faiTemplateEntry.inc:235 +msgid "Group" +msgstr "Grupa" + +#: admin/fai/faiTemplateEntry.tpl:114 +msgid "Access" +msgstr "Dostęp" + +#: admin/fai/faiTemplateEntry.tpl:120 +msgid "Class" +msgstr "Klasa" + +#: admin/fai/faiTemplateEntry.tpl:121 +msgid "Read" +msgstr "Odczyt" + +#: admin/fai/faiTemplateEntry.tpl:122 +msgid "Write" +msgstr "Zapis" + +#: admin/fai/faiTemplateEntry.tpl:123 +msgid "Execute" +msgstr "Uruchom" + +#: admin/fai/faiTemplateEntry.tpl:125 +msgid "Special" +msgstr "Specjalne" + +#: admin/fai/faiTemplateEntry.tpl:128 admin/fai/class_faiTemplateEntry.inc:224 +#: admin/fai/class_faiTemplateEntry.inc:226 +msgid "User" +msgstr "Użytkownik" + +#: admin/fai/faiTemplateEntry.tpl:142 +msgid "SUID" +msgstr "SUID" + +#: admin/fai/faiTemplateEntry.tpl:159 +msgid "SGID" +msgstr "SGID" + +#: admin/fai/faiTemplateEntry.tpl:162 +msgid "Others" +msgstr "Inne" + +#: admin/fai/faiTemplateEntry.tpl:176 +msgid "sticky" +msgstr "sticky" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/class_faiHook.inc:239 admin/fai/tabsPartition.inc:34 +#: admin/fai/class_faiProfile.inc:262 admin/fai/class_faiManagement.inc:238 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiManagement.inc:899 admin/fai/class_faiManagement.inc:943 +#: admin/fai/class_faiManagement.inc:967 +#: admin/fai/class_faiManagement.inc:1216 admin/fai/class_faiTemplate.inc:212 +#: admin/fai/tabsVariable.inc:33 admin/fai/tabsPackage.inc:33 +#: admin/fai/class_faiScript.inc:229 admin/fai/class_FAI.inc:535 +#: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62 +#: admin/fai/tabsHook.inc:32 admin/fai/class_faiPartitionTable.inc:180 +#: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:272 +#: admin/fai/class_faiSummaryTab.inc:89 admin/fai/tabsProfile.inc:33 +#: admin/systems/services/repository/class_servRepository.inc:142 +#: admin/systems/services/repository/class_servRepository.inc:177 +#: admin/systems/services/repository/class_servRepository.inc:182 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Error" +msgstr "Błąd" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/tabsPartition.inc:34 admin/fai/tabsVariable.inc:33 +#: admin/fai/tabsPackage.inc:33 admin/fai/tabsHook.inc:32 +#: admin/fai/tabsProfile.inc:33 +#, fuzzy +msgid "Moving the tree failed. Destination tree is subtree of source tree." +msgstr "" +"Próba przeniesienia drzewa nieudana. Docelowe drzewo jest poddrzewem w " +"drzewie źródłowym." + +#: admin/fai/remove.tpl:2 admin/fai/class_faiManagement.inc:513 +#: admin/fai/class_faiManagement.inc:1286 admin/fai/remove_branch.tpl:2 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: admin/fai/remove.tpl:7 +msgid "" +"This includes 'all' object information. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Operacja odnosi się do 'wszystkich' informacji obiektowych. Proszę upewnić " +"się, czy na pewno wykonać tą operację, gdyż nie ma możliwości powrotu." + +#: admin/fai/remove.tpl:11 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Przed wykonaniem tej operacji zaleca się wykonanie kopii bezpieczeństwa " +"drzewa LDAP. Naciśnij 'Usuń' aby kontynuować, lub 'Anuluj' aby przerwać." + +#: admin/fai/faiGroupHandle.tpl:3 +#, fuzzy +msgid "Please select the objects you want to remove:" +msgstr "Proszę podać nową nazwę." + +#: admin/fai/faiGroupHandle.tpl:22 admin/fai/class_divListFai.inc:145 +#, fuzzy +msgid "Freezed" +msgstr "Częstotliwość" + +#: admin/fai/faiGroupHandle.tpl:30 +#, fuzzy +msgid "Select the object you want to edit:" +msgstr "Wybierz obiekty do dodania" + +#: admin/fai/faiGroupHandle.tpl:53 +#, fuzzy +msgid "Select the object you want to copy:" +msgstr "Wybierz aby zobaczyć grupy GOsa" + +#: admin/fai/faiGroupHandle.tpl:76 +#, fuzzy +msgid "Select the object you want to cut:" +msgstr "Wybierz aby zobaczyć grupy GOsa" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "primary" +msgstr "podstawowa" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "logical" +msgstr "logiczna" + +#: admin/fai/class_faiPartitionTableEntry.inc:183 +#: admin/fai/class_faiSummaryTab.inc:348 +msgid "Type" +msgstr "Typ" + +#: admin/fai/class_faiPartitionTableEntry.inc:184 +msgid "FS type" +msgstr "Typ FS" + +#: admin/fai/class_faiPartitionTableEntry.inc:185 +#: admin/fai/class_faiPartitionTableEntry.inc:474 +#: admin/fai/class_faiSummaryTab.inc:347 +msgid "Mount point" +msgstr "Punkt montowania" + +#: admin/fai/class_faiPartitionTableEntry.inc:186 +#: admin/fai/class_faiSummaryTab.inc:346 +msgid "Size in MB" +msgstr "Rozmiar w MB" + +#: admin/fai/class_faiPartitionTableEntry.inc:187 +#: admin/fai/class_faiPartitionTableEntry.inc:476 +#: admin/fai/class_faiSummaryTab.inc:345 +msgid "Mount options" +msgstr "Opcje montowania" + +#: admin/fai/class_faiPartitionTableEntry.inc:188 +msgid "FS option" +msgstr "Opcje systemu plików" + +#: admin/fai/class_faiPartitionTableEntry.inc:189 +msgid "Preserve" +msgstr "Zachowaj" + +#: admin/fai/class_faiPartitionTableEntry.inc:282 +msgid "False" +msgstr "Nie" + +#: admin/fai/class_faiPartitionTableEntry.inc:284 +msgid "True" +msgstr "Tak" + +#: admin/fai/class_faiPartitionTableEntry.inc:288 +#: admin/fai/class_faiPartitionTableEntry.inc:290 +#: admin/fai/class_divListFai.inc:178 +msgid "Remove" +msgstr "Usuń" + +#: admin/fai/class_faiPartitionTableEntry.inc:371 +#: admin/fai/class_faiPartitionTableEntry.inc:374 +#: admin/fai/class_faiPartitionTableEntry.inc:469 admin/fai/faiVariable.tpl:9 +#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:561 +#: admin/fai/faiProfile.tpl:9 admin/fai/faiScriptEntry.tpl:9 +#: admin/fai/faiScript.tpl:9 admin/fai/faiPackage.tpl:9 +#: admin/fai/faiHook.tpl:9 admin/fai/class_faiProfile.inc:395 +#: admin/fai/class_faiProfile.inc:405 admin/fai/class_faiProfile.inc:478 +#: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiHookEntry.tpl:9 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiVariableEntry.inc:90 +#: admin/fai/class_faiVariableEntry.inc:99 +#: admin/fai/class_faiVariableEntry.inc:102 +#: admin/fai/class_faiVariableEntry.inc:137 +#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:544 +#: admin/fai/class_askClassName.inc:142 admin/fai/class_askClassName.inc:146 +#: admin/fai/class_askClassName.inc:150 admin/fai/class_faiScript.inc:327 +#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiScriptEntry.inc:137 +#: admin/fai/class_faiScriptEntry.inc:142 +#: admin/fai/class_faiScriptEntry.inc:145 +#: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiTemplate.tpl:9 +#: admin/fai/class_faiPartitionTable.inc:371 +#: admin/fai/class_faiPartitionTable.inc:549 admin/fai/faiVariableEntry.tpl:9 +#: admin/fai/class_faiHookEntry.inc:145 admin/fai/class_faiHookEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:153 admin/fai/class_faiHookEntry.inc:196 +#: admin/fai/class_faiVariable.inc:296 admin/fai/class_faiVariable.inc:397 +#: admin/fai/class_faiPackage.inc:456 admin/fai/class_faiPackage.inc:581 +#: admin/fai/class_faiTemplateEntry.inc:207 +#: admin/fai/class_faiTemplateEntry.inc:273 +#: admin/fai/class_faiSummaryTab.inc:343 admin/fai/faiPartitionTable.tpl:9 +#: admin/systems/services/repository/class_servRepository.inc:177 +msgid "Name" +msgstr "Imię" + +#: admin/fai/class_faiPartitionTableEntry.inc:397 +#, php-format +msgid "please enter a unique mount point for partition %s" +msgstr "proszę podać unikalny punkt montowania dla partycji %s" + +#: admin/fai/class_faiPartitionTableEntry.inc:402 +#, php-format +msgid "partition %s mount point" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:407 +#, php-format +msgid "" +"File system type 'swap' is already used, change file system type for " +"partition %s." +msgstr "" +"Typ systemu plików 'swap' jest już użyty. Zmień system plików dla partycji %" +"s." + +#: admin/fai/class_faiPartitionTableEntry.inc:411 +msgid "Please use 'swap' as mount point, if 'swap' is used as fs-type." +msgstr "" +"Proszę użyć 'swap' jako punkt montowania w przypadku użycia systemu plików " +"'swap'." + +#: admin/fai/class_faiPartitionTableEntry.inc:417 +#: admin/fai/class_faiPartitionTableEntry.inc:421 +#: admin/fai/class_faiPartitionTableEntry.inc:427 +#: admin/fai/class_faiPartitionTableEntry.inc:429 +#: admin/fai/class_faiPartitionTableEntry.inc:434 +#, fuzzy, php-format +msgid "partition %s size" +msgstr "Rozmiar partycji" + +#: admin/fai/class_faiPartitionTableEntry.inc:449 +msgid "" +"You have more than 3 primary partition table entries in your configuration, " +"please check your configuration twice." +msgstr "" +"Jest więcej niż 3 wpisy w podstawowej tablicy partycji. Proszę sprawdzić " +"konfigurację." + +#: admin/fai/class_faiPartitionTableEntry.inc:461 +#, fuzzy +msgid "Partition table entry" +msgstr "Tablica partycji" + +#: admin/fai/class_faiPartitionTableEntry.inc:462 +#, fuzzy +msgid "FAI partition table entry" +msgstr "Tablica partycji FAI" + +#: admin/fai/class_faiPartitionTableEntry.inc:471 +msgid "Partition type" +msgstr "Typ partycji" + +#: admin/fai/class_faiPartitionTableEntry.inc:472 +msgid "Partition no." +msgstr "Nr. Partycji" + +#: admin/fai/class_faiPartitionTableEntry.inc:473 +msgid "File system type" +msgstr "Typ systemu plików" + +#: admin/fai/class_faiPartitionTableEntry.inc:475 +msgid "Partition size" +msgstr "Rozmiar partycji" + +#: admin/fai/class_faiPartitionTableEntry.inc:477 +msgid "File system options" +msgstr "Opcje systemu plików" + +#: admin/fai/class_faiPartitionTableEntry.inc:478 +msgid "Partition flags" +msgstr "Flagi partycji" + +#: admin/fai/faiVariable.tpl:36 admin/fai/faiScript.tpl:38 +#: admin/fai/faiHook.tpl:38 admin/fai/class_faiProfileEntry.inc:175 +#: admin/fai/faiTemplate.tpl:33 admin/fai/faiPartitionTable.tpl:36 +msgid "Objects" +msgstr "Obiekty" + +#: admin/fai/faiVariable.tpl:38 +msgid "List of assigned variables" +msgstr "Lista przypisanych zmiennych" + +#: admin/fai/faiVariable.tpl:44 +msgid "Choose a variable to delete or edit" +msgstr "Wybierz zmienną do usunięcia lub edycji" + +#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312 +#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54 +msgid "Edit" +msgstr "Edytuj" + +#: admin/fai/class_faiHook.inc:316 +msgid "Delete" +msgstr "Usuń" + +#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiTemplate.inc:300 +#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358 +#: admin/fai/class_faiScriptEntry.inc:88 admin/fai/class_faiHookEntry.inc:80 +msgid "Download" +msgstr "Ściągnij" + +#: admin/fai/class_faiHook.inc:553 admin/fai/class_divListFai.inc:64 +msgid "Hook" +msgstr "Zaczep" + +#: admin/fai/class_faiHook.inc:554 +msgid "FAI hook" +msgstr "Zaczep FAI" + +#: admin/fai/class_faiHook.inc:561 admin/fai/class_faiPartitionTable.inc:549 +#: admin/fai/class_faiVariable.inc:397 +#, fuzzy +msgid "Read only" +msgstr "Odczyt" + +#: admin/fai/faiProfile.tpl:36 admin/fai/class_faiProfile.inc:480 +msgid "FAI classes" +msgstr "Klasy FAI" + +#: admin/fai/faiProfile.tpl:37 +msgid "Choose a priority" +msgstr "Wybierz priorytet" + +#: admin/fai/faiScriptEntry.tpl:33 +msgid "Properties" +msgstr "Właściwości" + +#: admin/fai/faiScriptEntry.tpl:33 admin/fai/faiScriptEntry.tpl:54 +msgid "Script attributes" +msgstr "Atrybuty skryptu" + +#: admin/fai/faiScriptEntry.tpl:38 admin/fai/class_faiScript.inc:328 +msgid "Priority" +msgstr "Priorytet" + +#: admin/fai/faiScriptEntry.tpl:43 +msgid "" +"Choose a priority. Low values result in an earlier, high values in a later " +"execution." +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:56 admin/fai/faiHookEntry.tpl:56 +#: admin/fai/class_faiScript.inc:637 admin/fai/class_faiScriptEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:158 admin/fai/class_divListFai.inc:62 +msgid "Script" +msgstr "Skrypt" + +#: admin/fai/faiScriptEntry.tpl:75 admin/fai/faiHookEntry.tpl:75 +msgid "Import script" +msgstr "Importuj skrypt" + +#: admin/fai/faiScript.tpl:39 +msgid "List of scripts" +msgstr "Lista skryptów" + +#: admin/fai/faiPackage.tpl:33 +#: admin/systems/services/repository/servRepositorySetup.tpl:1 +#: admin/systems/services/repository/class_servRepository.inc:343 +msgid "Repository" +msgstr "Repozytorium" + +#: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25 +#: admin/fai/class_faiPackage.inc:587 +#: admin/systems/services/repository/class_divListRepositories.inc:23 +#: admin/systems/services/repository/servRepositorySetup.tpl:19 +#: admin/systems/services/repository/class_servRepositorySetup.inc:153 +msgid "Release" +msgstr "Wersja" + +#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:584 +msgid "Section" +msgstr "Sekcja" + +#: admin/fai/faiPackage.tpl:53 +msgid "Install method" +msgstr "Metoda instalacji" + +#: admin/fai/faiPackage.tpl:57 +#, fuzzy +msgid "Please select the installation method" +msgstr "Proszę wybrać prawidłowy plik" + +#: admin/fai/faiPackage.tpl:71 +msgid "Used packages" +msgstr "Użyte pakiety" + +#: admin/fai/faiHook.tpl:39 +msgid "List of hook scripts" +msgstr "Lista zaczepionych slryptów" + +#: admin/fai/class_faiProfile.inc:289 admin/fai/class_faiProfileEntry.inc:172 +msgid "This list displays all assigned class names for this profile." +msgstr "Ta lista wyświetla wszystkie przypisane nazwy klas dla tego profilu." + +#: admin/fai/class_faiProfile.inc:292 admin/fai/class_askClassName.inc:83 +#: admin/fai/class_faiProfileEntry.inc:138 +msgid "Hook bundle" +msgstr "Zestaw zaczepów" + +#: admin/fai/class_faiProfile.inc:293 admin/fai/class_askClassName.inc:85 +#: admin/fai/class_faiProfileEntry.inc:139 +msgid "Template bundle" +msgstr "Zestaw szablonów" + +#: admin/fai/class_faiProfile.inc:294 admin/fai/class_askClassName.inc:81 +#: admin/fai/class_faiProfileEntry.inc:140 +msgid "Script bundle" +msgstr "Zestaw skryptów" + +#: admin/fai/class_faiProfile.inc:295 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_faiProfileEntry.inc:141 +msgid "Variable bundle" +msgstr "Zestaw zmiennych" + +#: admin/fai/class_faiProfile.inc:296 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_faiProfileEntry.inc:142 +msgid "Package bundle" +msgstr "Zestaw pakietu" + +#: admin/fai/class_faiProfile.inc:297 admin/fai/class_askClassName.inc:79 +#: admin/fai/class_faiGroupHandle.inc:100 +#: admin/fai/class_faiProfileEntry.inc:143 +#: admin/fai/class_faiPartitionTable.inc:541 +#: admin/fai/class_divListFai.inc:154 admin/fai/class_divListFai.inc:208 +#: admin/fai/class_faiSummaryTab.inc:48 +msgid "Partition table" +msgstr "Tablica partycji" + +#: admin/fai/class_faiProfile.inc:300 +msgid "Remove class from profile" +msgstr "Usuń klasę z profilu" + +#: admin/fai/class_faiProfile.inc:303 +msgid "Up" +msgstr "Góra" + +#: admin/fai/class_faiProfile.inc:304 +msgid "Down" +msgstr "W dół" + +#: admin/fai/class_faiProfile.inc:391 +msgid "No class specified for this profile!" +msgstr "" + +#: admin/fai/class_faiProfile.inc:470 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_divListFai.inc:58 +#: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218 +msgid "Profile" +msgstr "Profile" + +#: admin/fai/class_faiProfile.inc:471 +msgid "FAI profile" +msgstr "Profil FAI" + +#: admin/fai/faiPartitionTableEntry.tpl:2 +msgid "Device" +msgstr "Urządzenie" + +#: admin/fai/faiPartitionTableEntry.tpl:24 +msgid "Partition entries" +msgstr "Partycje" + +#: admin/fai/faiPartitionTableEntry.tpl:29 +#: admin/fai/faiPartitionTableEntry.tpl:31 +msgid "Add partition" +msgstr "Dodaj partycje" + +#: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54 +msgid "Hook attributes" +msgstr "Atrybuty zaczepu" + +#: admin/fai/faiHookEntry.tpl:38 admin/fai/class_faiHookEntry.inc:198 +msgid "Task" +msgstr "Zadanie" + +#: admin/fai/faiHookEntry.tpl:41 +msgid "Choose an existing FAI task" +msgstr "Proszę wybrać istniejące zadanie FAI" + +#: admin/fai/faiPackageEntry.tpl:6 +msgid "List of available packages" +msgstr "Lista dostępnych pakietów" + +#: admin/fai/faiPackageEntry.tpl:20 admin/fai/faiProfileEntry.tpl:21 +msgid "Information" +msgstr "Informacja" + +#: admin/fai/faiPackageEntry.tpl:24 +msgid "" +"This menu allows you to select multiple packages to add them to the " +"currently edited package list." +msgstr "" +"To menu umożliwia wybieranie wielu pakietów i dodawanie ich do obecnie " +"edytowanej listy pakietów." + +#: admin/fai/faiPackageEntry.tpl:30 admin/fai/faiProfileEntry.tpl:31 +msgid "Filters" +msgstr "Filtry" + +#: admin/fai/faiPackageEntry.tpl:40 admin/fai/faiProfileEntry.tpl:54 +#: admin/fai/faiProfileEntry.tpl:55 +msgid "Display objects matching" +msgstr "Wyświetl obiekty pasujące" + +#: admin/fai/faiPackageEntry.tpl:44 admin/fai/faiProfileEntry.tpl:59 +#: admin/systems/services/repository/class_divListRepositories.inc:26 +msgid "Regular expression for matching object names" +msgstr "Wyrażenie regularne dla dopasowania nazw obiektów" + +#: admin/fai/class_faiManagement.inc:25 admin/fai/main.inc:53 +#: admin/fai/main.inc:55 +msgid "Software deployment" +msgstr "" + +#: admin/fai/class_faiManagement.inc:26 +msgid "Manage software packages and deployment reciepes" +msgstr "" + +#: admin/fai/class_faiManagement.inc:338 admin/fai/class_faiManagement.inc:495 +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 admin/fai/class_faiManagement.inc:869 +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "Permission error" +msgstr "Uprawnienia" + +#: admin/fai/class_faiManagement.inc:384 +#, fuzzy +msgid "Branch locked" +msgstr "Gałęzie" + +#: admin/fai/class_faiManagement.inc:384 +#, php-format +msgid "The following entries are locked, you can't remove them %s." +msgstr "" + +#: admin/fai/class_faiManagement.inc:400 +#, fuzzy +msgid "FAI object" +msgstr "Drzewo obiektów FAI" + +#: admin/fai/class_faiManagement.inc:492 +msgid "FAI branch/freeze" +msgstr "" + +#: admin/fai/class_faiManagement.inc:495 +#, fuzzy +msgid "You have no permission to delete this release!" +msgstr "Brak uprawnień do usunięcia tego wydania!" + +#: admin/fai/class_faiManagement.inc:513 +msgid "Release remove aborted because the release name check failed!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 +#, fuzzy +msgid "Branch" +msgstr "Gałęzie" + +#: admin/fai/class_faiManagement.inc:750 +#: admin/fai/class_faiManagement.inc:1025 +#: admin/fai/class_faiManagement.inc:1031 +msgid "Continue" +msgstr "Kontynuuj" + +#: admin/fai/class_faiManagement.inc:781 +#: admin/fai/class_faiPackageEntry.inc:53 +#: admin/fai/class_faiPackageEntry.inc:193 admin/fai/class_FAI.inc:553 +#: admin/fai/class_faiPackageConfiguration.inc:35 +#: admin/fai/class_faiPackage.inc:478 +#: admin/systems/services/repository/class_servRepository.inc:326 +#, fuzzy +msgid "Service infrastructure" +msgstr "Szukaj wewnątrz tego poddrzewa" + +#: admin/fai/class_faiManagement.inc:786 admin/fai/class_FAI.inc:1157 +#, fuzzy +msgid "Fatal error" +msgstr "Terminal Server" + +#: admin/fai/class_faiManagement.inc:846 +#, fuzzy +msgid "partition table" +msgstr "Tablica partycji" + +#: admin/fai/class_faiManagement.inc:847 +#, fuzzy +msgid "script" +msgstr "Skrypt" + +#: admin/fai/class_faiManagement.inc:848 +#, fuzzy +msgid "hook" +msgstr "Zaczep" + +#: admin/fai/class_faiManagement.inc:849 +#, fuzzy +msgid "variable" +msgstr "Zmienna" + +#: admin/fai/class_faiManagement.inc:850 +#, fuzzy +msgid "template" +msgstr "Szablon" + +#: admin/fai/class_faiManagement.inc:851 +#, fuzzy +msgid "package list" +msgstr "Lista pakietów" + +#: admin/fai/class_faiManagement.inc:869 admin/fai/class_faiManagement.inc:886 +#, fuzzy, php-format +msgid "You have no permission to create a new %s!" +msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "profile" +msgstr "Profile" + +#: admin/fai/class_faiManagement.inc:1286 +msgid "" +"The selected release is not available anymore. All triggered actions are " +"skipped." +msgstr "" + +#: admin/fai/class_faiManagement.inc:1411 +#, fuzzy +msgid "FAI releases" +msgstr "Klasy FAI" + +#: admin/fai/class_faiManagement.inc:1412 +#, fuzzy +msgid "FAI release management" +msgstr "Zarządzanie FAI" + +#: admin/fai/class_faiManagement.inc:1417 +msgid "FAI" +msgstr "FAI" + +#: admin/fai/class_faiVariableEntry.inc:94 +#, fuzzy +msgid "Content" +msgstr "Kontynuuj" + +#: admin/fai/class_faiVariableEntry.inc:129 +#, fuzzy +msgid "Variable entry" +msgstr "Zawartość zmiennych" + +#: admin/fai/class_faiVariableEntry.inc:130 +#, fuzzy +msgid "FAI variable entry " +msgstr "Zmienna FAI" + +#: admin/fai/class_faiVariableEntry.inc:139 admin/fai/faiVariableEntry.tpl:38 +msgid "Variable content" +msgstr "Zawartość zmiennych" + +#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288 +#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346 +msgid "edit" +msgstr "edytuj" + +#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348 +msgid "delete" +msgstr "Usuń" + +#: admin/fai/class_faiTemplate.inc:536 +msgid "Template" +msgstr "Szablon" + +#: admin/fai/class_faiTemplate.inc:537 +msgid "FAI template" +msgstr "Szablon FAI" + +#: admin/fai/class_faiTemplate.inc:544 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiPackage.inc:584 admin/fai/class_faiPackage.inc:587 +#, fuzzy +msgid "Readonly" +msgstr "Odczyt" + +#: admin/fai/class_faiPackageEntry.inc:38 +msgid "Please enter your search string here" +msgstr "Proszę podać szukany ciąg znaków" + +#: admin/fai/class_faiPackageEntry.inc:103 +msgid "" +"This list displays all assigned package names for this repository settings." +msgstr "" +"Ta lista wyświetla wszystkie przypisane nazwy pakietó dla tych ustawień " +"repozytorium." + +#: admin/fai/paste_generic.tpl:1 +#, fuzzy +msgid "FAI settings" +msgstr "Klasy FAI" + +#: admin/fai/paste_generic.tpl:5 admin/fai/class_faiProfileEntry.inc:174 +#: admin/fai/askClassName.tpl:32 admin/fai/askClassName.tpl:54 +#: admin/fai/class_divListFai.inc:53 +msgid "Class name" +msgstr "Nazwa klasy" + +#: admin/fai/remove_branch.tpl:6 +msgid "" +"This includes all account data, system access, etc. for this branch. Please " +"double check if your really want to do this since there is no way for GOsa " +"to get your data back." +msgstr "" +"Operacja odnosi się do wszystkich danych kont, dostępów, etc dla tej gałęzi. " +"Proszę upewnić się czy na pewno wykonać operację, gdyż nie ma możliwości " +"powrotu." + +#: admin/fai/remove_branch.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Jeśli jesteś pewien - naciśnij 'Usuń' aby kontynuować lub 'Anuluj' aby " +"anulować." + +#: admin/fai/faiProfileEntry.tpl:6 +msgid "List of FAI objects (Fully Automatic Installation)" +msgstr "Lista obiektów FAI (Fully Automatic Installation)" + +#: admin/fai/faiProfileEntry.tpl:26 +msgid "" +"This menu allows you to select FAI class names and to add them to the " +"currently edited profile." +msgstr "" +"To menu umożliwia wybór nazw klas FAI i dodawania ich do obecnie edytowanego " +"profilu." + +#: admin/fai/faiProfileEntry.tpl:39 +msgid "Show only classes with templates" +msgstr "Pokaż tylko klasy z szablonami" + +#: admin/fai/faiProfileEntry.tpl:41 +msgid "Show only classes with scripts" +msgstr "Pokaż tylko klasy ze skryptami" + +#: admin/fai/faiProfileEntry.tpl:43 +msgid "Show only classes with hooks" +msgstr "Pokaż tylko klasy z zaczepami" + +#: admin/fai/faiProfileEntry.tpl:45 +msgid "Show only classes with variables" +msgstr "Pokaż tylko klasy ze zmiennymi" + +#: admin/fai/faiProfileEntry.tpl:47 +msgid "Show only classes with packages" +msgstr "Pokaż tylko klasy z pakietami" + +#: admin/fai/faiProfileEntry.tpl:49 +msgid "Show only classes with partitions" +msgstr "Pokaż tylko klasy z partycjami" + +#: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_askClassName.inc:85 admin/fai/class_askClassName.inc:86 +msgid "Create new FAI object" +msgstr "Utwórz nowy obiekt FAI" + +#: admin/fai/class_faiGroupHandle.inc:102 admin/fai/class_divListFai.inc:164 +#: admin/fai/class_divListFai.inc:210 admin/fai/class_faiSummaryTab.inc:49 +msgid "Package list" +msgstr "Lista pakietów" + +#: admin/fai/class_faiGroupHandle.inc:104 admin/fai/class_divListFai.inc:156 +#: admin/fai/class_divListFai.inc:212 admin/fai/class_faiSummaryTab.inc:44 +msgid "Scripts" +msgstr "Skrypty" + +#: admin/fai/class_faiGroupHandle.inc:106 admin/fai/class_divListFai.inc:160 +#: admin/fai/class_divListFai.inc:214 admin/fai/class_faiSummaryTab.inc:46 +msgid "Variables" +msgstr "Zmienie" + +#: admin/fai/class_faiGroupHandle.inc:108 admin/fai/class_divListFai.inc:158 +#: admin/fai/class_divListFai.inc:216 admin/fai/class_faiSummaryTab.inc:45 +msgid "Hooks" +msgstr "Zaczepy" + +#: admin/fai/class_faiGroupHandle.inc:112 admin/fai/class_divListFai.inc:220 +#: admin/fai/class_faiSummaryTab.inc:47 +msgid "Templates" +msgstr "Szablony" + +#: admin/fai/class_faiGroupHandle.inc:114 admin/fai/class_divListFai.inc:76 +#: admin/fai/class_divListFai.inc:222 +msgid "OPSI netboot product" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:116 +msgid "OPSI local product" +msgstr "" + +#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68 +#: admin/fai/class_faiPackage.inc:573 +msgid "Package" +msgstr "Pakiet" + +#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316 +#, fuzzy +msgid "Sort direction" +msgstr "Sekcja" + +#: admin/fai/class_faiScript.inc:332 +msgid "Action" +msgstr "Akcja" + +#: admin/fai/class_faiScript.inc:638 admin/fai/class_faiHookEntry.inc:199 +msgid "FAI script" +msgstr "Skrypt FAI" + +#: admin/fai/class_FAI.inc:259 admin/fai/class_FAI.inc:662 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/fai/class_FAI.inc:535 +#, php-format +msgid "Error, following objects should be equal '%s' and '%s'" +msgstr "Błąd, następujące obiekty powinny być równe '%s' oraz '%s'" + +#: admin/fai/class_FAI.inc:874 +#, php-format +msgid "Creating group application release for %s" +msgstr "" + +#: admin/fai/class_FAI.inc:943 admin/fai/class_FAI.inc:965 +#: admin/fai/class_FAI.inc:1005 admin/fai/class_FAI.inc:1010 +#: admin/fai/class_FAI.inc:1048 +msgid "Object" +msgstr "Obiekt" + +#: admin/fai/class_FAI.inc:944 +#, php-format +msgid "Adding missing group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:966 +#, php-format +msgid "Adding group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1006 +#, fuzzy, php-format +msgid "Could not create menu entry %s. (Already exists)." +msgstr "Nie można utworzyć '%s', nazwa docelowa już istnieje." + +#: admin/fai/class_FAI.inc:1011 +#, php-format +msgid "Created group application menu entry for %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1042 +#, php-format +msgid "Creating copy of %s" +msgstr "Tworzenie kopii %s" + +#: admin/fai/class_FAI.inc:1045 +msgid "Processing" +msgstr "Przetwarzanie" + +#: admin/fai/class_FAI.inc:1063 +#, fuzzy +msgid "Could not create new release, the destination dn is already in use." +msgstr "Nie można utworzyć '%s', nazwa docelowa już istnieje." + +#: admin/fai/class_FAI.inc:1076 +msgid "Error while fetching source dn - aborted!" +msgstr "Błąd podczas pobierania źródłowego dn - anulowano!" + +#: admin/fai/class_FAI.inc:1158 +#, php-format +msgid "" +"Release creation failed due to ldap errors. Additional informations '%s'." +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#, fuzzy +msgid "file is empty" +msgstr "Wybrany plik jest pusty" + +#: admin/fai/class_faiScriptEntry.inc:181 +#: admin/fai/class_faiScriptEntry.inc:191 +#, fuzzy +msgid "Script entry" +msgstr "Zawartość skryptu" + +#: admin/fai/class_faiScriptEntry.inc:182 +#, fuzzy +msgid "FAI script entry" +msgstr "Skrypt FAI" + +#: admin/fai/class_faiScriptEntry.inc:192 +#, fuzzy +msgid "Script Priority" +msgstr "Priorytet skryptu" + +#: admin/fai/faiSummary.tpl:4 +msgid "FAI object tree" +msgstr "Drzewo obiektów FAI" + +#: admin/fai/faiSummary.tpl:11 +msgid "Reload class and release configuration from parent object." +msgstr "Przeładuj klasę i uwolnij konfigurację z obiektu nadrzędnego." + +#: admin/fai/faiSummary.tpl:22 +#, fuzzy +msgid "You are not allowed to view the fai summary." +msgstr "Brak uprawnień do usunięcia tego użytkownika!" + +#: admin/fai/faiTemplate.tpl:34 +msgid "List of template files" +msgstr "Lista plików szablonów" + +#: admin/fai/class_faiPartitionTable.inc:301 +#: admin/fai/class_faiPartitionTable.inc:307 +#, php-format +msgid "%s partition" +msgstr "partycja %s" + +#: admin/fai/class_faiPartitionTable.inc:303 +#: admin/fai/class_faiPartitionTable.inc:309 +#, php-format +msgid "%s partition(s)" +msgstr "partycje %s" + +#: admin/fai/class_faiPartitionTable.inc:542 +msgid "FAI partition table" +msgstr "Tablica partycji FAI" + +#: admin/fai/branch_selector.tpl:2 +#: admin/systems/services/repository/class_servRepository.inc:358 +#, fuzzy +msgid "Releases" +msgstr "Wersja" + +#: admin/fai/branch_selector.tpl:8 +msgid "Current release" +msgstr "Obecne wydanie" + +#: admin/fai/branch_selector.tpl:20 admin/fai/branch_selector.tpl:26 +#, fuzzy +msgid "Create release" +msgstr "Obecne wydanie" + +#: admin/fai/branch_selector.tpl:23 admin/fai/branch_selector.tpl:29 +#, fuzzy +msgid "Create read-only release" +msgstr "Obecne wydanie" + +#: admin/fai/branch_selector.tpl:28 +#, fuzzy +msgid "Freeze" +msgstr "Częstotliwość" + +#: admin/fai/branch_selector.tpl:35 +msgid "Delete current release" +msgstr "Usuń bieżące wydanie" + +#: admin/fai/faiVariableEntry.tpl:33 +msgid "Variable attributes" +msgstr "Atrybuty zmiennych" + +#: admin/fai/class_faiHookEntry.inc:188 +#, fuzzy +msgid "Hook entry" +msgstr "Usuń pozycję" + +#: admin/fai/class_faiHookEntry.inc:189 +#, fuzzy +msgid "FAI hook entry" +msgstr "Zaczep FAI" + +#: admin/fai/faiNewBranch.tpl:5 +msgid "" +"You are now going to create a branch or locked branch. This action clones " +"the existing release to another release name. Branches can be modified as " +"usual. FAI classes of locked branches cannot be modified, just additional " +"classes are possible. Branch names should be alphanumeric, excluding the " +"reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' " +"and 'fai'." +msgstr "" +"Zamierzasz utworzyć gałąź lub zablokowaną gałąź. Ta akcja klonuje istniejące " +"wydanie do innej nazwy wydania. Gałęzie mogą być zwyczajnie modyfikowane. " +"Klasy FAI zablokowanych gałęzi nie mogą być modyfikowane, można tylko " +"dodawać klasy. Nazwy gałęzi powinny składać się ze znaków alfanumerycznych i " +"nie zawierać zarezerwowanych nazw 'scripts', 'hooks', 'partitions', " +"'variables', 'templates', oraz 'fai'." + +#: admin/fai/faiNewBranch.tpl:7 +msgid "" +"Branches are created as subreleases of the currently selected branch. " +"Creating a new branch named 1.0.2 in SARGE for example, will result in a new " +"release called SARGE/1.0.2." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:13 +msgid "Please enter a name for the branch" +msgstr "Proszę podać nazwę gałęzi" + +#: admin/fai/faiNewBranch.tpl:34 +msgid "Processing the requested operation" +msgstr "Przetwarzam zadaną operację" + +#: admin/fai/faiNewBranch.tpl:35 +msgid "" +"As soon as the copy operation has finished, you can scroll down to end of " +"the page and press the 'Continue' button to continue with the fai management " +"dialog." +msgstr "" +"Jak tylko operacja kopiowania zakończy się, można przewinąć stronę na dół i " +"nacisnąć przycisk 'Kontynuuj' aby przejść do dialogu zarządzania FAI." + +#: admin/fai/faiNewBranch.tpl:41 +msgid "" +"Your browser doesn't support iframes, please use this link to perform the " +"requested operation." +msgstr "" +"Twoja przeglądarka nie obsługuje iframes, proszę użyć tego linku aby wykonać " +"żądaną operację." + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Perform requested operation." +msgstr "Wykonaj żądaną operację." + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Initiate operation" +msgstr "Zainicjiuj operację" + +#: admin/fai/askClassName.tpl:6 +msgid "" +"Adding a new class to the FAI management, requires a class name. You have to " +"specify a unique class name for unique types of FAI classes, while you can " +"use the same class name for different types of FAI classes. In the laste " +"case, FAI will automatically enclose all these different class types to one " +"unique class name." +msgstr "" +"Dodawanie nowej klasy do zarządzania FAI wymaga nazwy klasy. Należy podać " +"unikalną nazwę klasy dla unikalnych typów klas FAI, podczas gdy można użyć " +"tej samej nazwy klasy dla różnych typów klas FAI. W ostatnim przypadku, FAI " +"automatycznie połączy wszystkie różne typy klas w jedną unikalną nazwę klasy." + +#: admin/fai/askClassName.tpl:12 +msgid "" +"Please use one of the following methods to choose the name for the new FAI " +"class." +msgstr "" +"Proszę użyć jedną z poniższych metod dla wybrania nazwy nowej klasy FAI." + +#: admin/fai/askClassName.tpl:26 +msgid "Enter FAI class name manually" +msgstr "Podaj nazwę klasy FAI ręcznie" + +#: admin/fai/askClassName.tpl:48 +msgid "Choose FAI class name from a list of existing classes" +msgstr "Wybierz nazwę klasy FAI z listy istniejących klas" + +#: admin/fai/askClassName.tpl:54 +msgid "Choose class name" +msgstr "Wybierz nazwę klasy" + +#: admin/fai/askClassName.tpl:70 admin/fai/askClassName.tpl:77 +msgid "Use" +msgstr "Użyj" + +#: admin/fai/askClassName.tpl:74 +msgid "A new class name." +msgstr "Nowa nazwa klasy" + +#: admin/fai/class_faiPackageConfiguration.inc:68 +#, php-format +msgid "Debconf information for package '%s'" +msgstr "Informacja Debconf dla pakietu '%s'" + +#: admin/fai/class_faiVariable.inc:389 admin/fai/class_divListFai.inc:60 +#: admin/fai/class_divListFai.inc:66 +msgid "Variable" +msgstr "Zmienna" + +#: admin/fai/class_faiVariable.inc:390 +msgid "FAI variable" +msgstr "Zmienna FAI" + +#: admin/fai/class_divListFai.inc:32 +#, fuzzy +msgid "List of classes" +msgstr "Nazwy klas FAI" + +#: admin/fai/class_divListFai.inc:33 +#, fuzzy +msgid "List of deployment classes and products" +msgstr "Pokaż tylko klasy z pakietami" + +#: admin/fai/class_divListFai.inc:48 +#, fuzzy +msgid "Select all" +msgstr "Wybierz" + +#: admin/fai/class_divListFai.inc:54 +#, fuzzy +msgid "Class types" +msgstr "Typ klasy" + +#: admin/fai/class_divListFai.inc:55 admin/fai/class_divListFai.inc:138 +msgid "Actions" +msgstr "Akcje" + +#: admin/fai/class_divListFai.inc:57 admin/fai/class_divListFai.inc:59 +#: admin/fai/class_divListFai.inc:61 admin/fai/class_divListFai.inc:63 +#: admin/fai/class_divListFai.inc:65 admin/fai/class_divListFai.inc:67 +#: admin/fai/class_divListFai.inc:69 admin/fai/class_divListFai.inc:75 +#: admin/fai/class_divListFai.inc:77 +#, fuzzy, php-format +msgid "Display objects of type '%s'." +msgstr "Wyświetl obiekty pasujące" + +#: admin/fai/class_divListFai.inc:58 +msgid "Show profiles" +msgstr "Pokaż profile" + +#: admin/fai/class_divListFai.inc:60 +msgid "Show templates" +msgstr "Pokaż szablony" + +#: admin/fai/class_divListFai.inc:62 +msgid "Show scripts" +msgstr "Pokaż skrypty" + +#: admin/fai/class_divListFai.inc:64 +msgid "Show hooks" +msgstr "Pokaż zaczepy" + +#: admin/fai/class_divListFai.inc:66 +msgid "Show variables" +msgstr "Pokaż zmienne" + +#: admin/fai/class_divListFai.inc:68 +msgid "Show packages" +msgstr "Pokaż pakiety" + +#: admin/fai/class_divListFai.inc:70 +#, fuzzy +msgid "Partition" +msgstr "Nr. Partycji" + +#: admin/fai/class_divListFai.inc:70 +msgid "Show partitions" +msgstr "Pokaż partycje" + +#: admin/fai/class_divListFai.inc:76 +#, fuzzy +msgid "Show netboot products" +msgstr "Grupy obiektów" + +#: admin/fai/class_divListFai.inc:78 admin/fai/class_divListFai.inc:224 +#, fuzzy +msgid "OPSI localboot product" +msgstr "Grupy obiektów" + +#: admin/fai/class_divListFai.inc:78 +#, fuzzy +msgid "Show localboot products" +msgstr "Grupy obiektów" + +#: admin/fai/class_divListFai.inc:86 +msgid "Display users matching" +msgstr "Wyświetl użytkowników pasujących" + +#: admin/fai/class_divListFai.inc:140 +msgid "Create" +msgstr "Utwórz" + +#: admin/fai/class_divListFai.inc:155 +msgid "PT" +msgstr "PT" + +#: admin/fai/class_divListFai.inc:157 +msgid "S" +msgstr "S" + +#: admin/fai/class_divListFai.inc:159 +msgid "H" +msgstr "H" + +#: admin/fai/class_divListFai.inc:161 +msgid "V" +msgstr "V" + +#: admin/fai/class_divListFai.inc:162 +#, fuzzy +msgid "Templates " +msgstr "Szablony" + +#: admin/fai/class_divListFai.inc:163 +#, fuzzy +msgid "I" +msgstr "NI" + +#: admin/fai/class_divListFai.inc:165 +msgid "PK" +msgstr "PK" + +#: admin/fai/class_divListFai.inc:313 admin/fai/class_divListFai.inc:314 +#: admin/fai/class_divListFai.inc:315 admin/fai/class_divListFai.inc:316 +#: admin/fai/class_divListFai.inc:317 admin/fai/class_divListFai.inc:318 +#: admin/fai/class_divListFai.inc:319 admin/fai/class_divListFai.inc:320 +#: admin/fai/class_divListFai.inc:321 admin/fai/class_divListFai.inc:322 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Nazwa departamentu" + +#: admin/fai/class_divListFai.inc:313 +#, fuzzy +msgid "profiles" +msgstr "Profile" + +#: admin/fai/class_divListFai.inc:314 +#, fuzzy +msgid "partitions" +msgstr "partycja %s" + +#: admin/fai/class_divListFai.inc:315 +#, fuzzy +msgid "scripts" +msgstr "Skrypt" + +#: admin/fai/class_divListFai.inc:316 +#, fuzzy +msgid "hooks" +msgstr "Zaczep" + +#: admin/fai/class_divListFai.inc:317 +#, fuzzy +msgid "variables" +msgstr "Zmienna" + +#: admin/fai/class_divListFai.inc:318 +#, fuzzy +msgid "templates" +msgstr "Szablon" + +#: admin/fai/class_divListFai.inc:319 +#, fuzzy +msgid "packages" +msgstr "Pakiety" + +#: admin/fai/class_divListFai.inc:320 +#, fuzzy +msgid "departments" +msgstr "Zatwierdź departament" + +#: admin/fai/class_divListFai.inc:321 +#, fuzzy +msgid "netboot products" +msgstr "Grupy obiektów" + +#: admin/fai/class_divListFai.inc:322 +#, fuzzy +msgid "localboot products" +msgstr "Grupy obiektów" + +#: admin/fai/class_faiPackage.inc:329 admin/fai/class_faiPackage.inc:330 +#, fuzzy +msgid "Configured" +msgstr "Konfiguruj" + +#: admin/fai/class_faiPackage.inc:336 admin/fai/class_faiPackage.inc:337 +msgid "Package marked for removal" +msgstr "Pakiet zaznaczony do usunięcia" + +#: admin/fai/class_faiPackage.inc:353 +#, fuzzy +msgid "Mark package for removal" +msgstr "Pakiet zaznaczony do usunięcia" + +#: admin/fai/class_faiPackage.inc:359 +msgid "Configure this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:363 +msgid "Remove this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:442 +#, fuzzy +msgid "Please select a least one package!" +msgstr "Prosze wybrać przynajmniej jeden pakiet." + +#: admin/fai/class_faiPackage.inc:446 +#, fuzzy +msgid "" +"Please choose a valid release/section combination for your repository setup!" +msgstr "Proszę wybrać poprawną kombinację dla ustawień repozytorium." + +#: admin/fai/class_faiPackage.inc:574 +msgid "FAI Package list" +msgstr "Lista pakietów FAI" + +#: admin/fai/class_faiPackage.inc:583 +msgid "Packages" +msgstr "Pakiety" + +#: admin/fai/class_faiPackage.inc:585 +msgid "Install Method" +msgstr "Metoda instalacji" + +#: admin/fai/class_faiPackage.inc:586 +#, fuzzy +msgid "Package configuration" +msgstr "Konfiguracja bazy FAX" + +#: admin/fai/class_faiTemplateEntry.inc:90 +msgid "no file uploaded yet" +msgstr "Nie wgrano jeszcze żadnego pliku" + +#: admin/fai/class_faiTemplateEntry.inc:96 +#, php-format +msgid "exists in database (size: %s bytes)" +msgstr "istnieje w bazie danych (rozmiar %s bajtów)" + +#: admin/fai/class_faiTemplateEntry.inc:265 +#, fuzzy +msgid "Template entry" +msgstr "Szablon użytkownika" + +#: admin/fai/class_faiTemplateEntry.inc:266 +#, fuzzy +msgid "FAI template entry" +msgstr "Szablon FAI" + +#: admin/fai/class_faiTemplateEntry.inc:275 +msgid "Template file" +msgstr "Plik szablonu" + +#: admin/fai/class_faiTemplateEntry.inc:276 +msgid "Template path" +msgstr "Ścieżka szablonu" + +#: admin/fai/class_faiTemplateEntry.inc:277 +msgid "File owner" +msgstr "Właściciel pliku" + +#: admin/fai/class_faiTemplateEntry.inc:278 +msgid "File permissions" +msgstr "Uprawnienia pliku" + +#: admin/fai/class_faiSummaryTab.inc:50 +msgid "Profiles" +msgstr "Profile" + +#: admin/fai/class_faiSummaryTab.inc:89 +msgid "Unknown FAI information source!" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:178 +#: admin/systems/services/repository/class_servRepository.inc:93 +msgid "You can't use this plugin until FAI is activated." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:220 +msgid "This object has no FAI classes assigned." +msgstr "Ten obiekt nie ma przypisanych klas FAI." + +#: admin/fai/class_faiSummaryTab.inc:233 +msgid "Open" +msgstr "Otwórz" + +#: admin/fai/class_faiSummaryTab.inc:239 +msgid "Close" +msgstr "Zamknij" + +#: admin/fai/class_faiSummaryTab.inc:342 +msgid "No." +msgstr "Nie." + +#: admin/fai/class_faiSummaryTab.inc:344 +msgid "FS options" +msgstr "Opcje systemu plików" + +#: admin/fai/faiPartitionTable.tpl:38 +msgid "Discs" +msgstr "Dyski" + +#: admin/fai/faiPartitionTable.tpl:44 +msgid "Choose a disk to delete or edit" +msgstr "Wybierz dysk do usunięcia lub edycji" + +#: admin/fai/class_debconfTemplate.inc:207 +msgid "This package has no debconf options." +msgstr "Ten pakiet nie ma opcji debconf." + +#: admin/systems/services/repository/class_divListRepositories.inc:19 +#, fuzzy +msgid "List of configured repositories" +msgstr "Lista użytkowników" + +#: admin/systems/services/repository/class_divListRepositories.inc:20 +#, fuzzy +msgid "This menu allows you to create, delete and edit repository settings." +msgstr "To menu umożliwia tworzenie, usuwanie oraz edycję klas FAI." + +#: admin/systems/services/repository/class_divListRepositories.inc:24 +#: admin/systems/services/repository/class_divListRepositories.inc:64 +#: admin/systems/services/repository/servRepositorySetup.tpl:39 +#: admin/systems/services/repository/class_servRepository.inc:360 +#, fuzzy +msgid "Sections" +msgstr "Sekcja" + +#: admin/systems/services/repository/class_divListRepositories.inc:25 +msgid "Options" +msgstr "Opcje" + +#: admin/systems/services/repository/class_divListRepositories.inc:33 +#, fuzzy +msgid "Add repository" +msgstr "Katalog" + +#: admin/systems/services/repository/servRepositorySetup.tpl:8 +#: admin/systems/services/repository/class_servRepository.inc:357 +#, fuzzy +msgid "Parent server" +msgstr "Zachowaj" + +#: admin/systems/services/repository/servRepositorySetup.tpl:28 +#: admin/systems/services/repository/class_servRepository.inc:359 +#: admin/systems/services/repository/class_servRepositorySetup.inc:157 +msgid "URL" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:26 +#: admin/systems/services/repository/class_servRepository.inc:308 +#: admin/systems/services/repository/class_servRepository.inc:344 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +#, fuzzy +msgid "Repository service" +msgstr "Repozytorium" + +#: admin/systems/services/repository/class_servRepository.inc:142 +#, fuzzy +msgid "FAI release" +msgstr "Klasy FAI" + +#: admin/systems/services/repository/class_servRepository.inc:344 +msgid "Services" +msgstr "Usługi" + +#, fuzzy +#~ msgid "Deployment status" +#~ msgstr "Ustaw status" + +#, fuzzy +#~ msgid "System deployment status" +#~ msgstr "Zarządzanie systemem" + +#, fuzzy +#~ msgid "Permission" +#~ msgstr "Uprawnienia" + +#, fuzzy +#~ msgid "" +#~ "This menu allows you to remove and change the properties of GOsa tasks." +#~ msgstr "" +#~ "To menu umożliwia tworzenie, usuwanie oraz edycję właściwości usług." + +#, fuzzy +#~ msgid "List of queued jobs" +#~ msgstr "Lista departamentów" + +#~ msgid "Import" +#~ msgstr "Import" + +#, fuzzy +#~ msgid "Resume" +#~ msgstr "Usuń" + +#, fuzzy +#~ msgid "Pause" +#~ msgstr "Wklej" + +#, fuzzy +#~ msgid "Abort" +#~ msgstr "Port" + +#, fuzzy +#~ msgid "Reload" +#~ msgstr "Odczyt" + +#, fuzzy +#~ msgid "Target" +#~ msgstr "Kodowanie" + +#, fuzzy +#~ msgid "Schedule" +#~ msgstr "PHP schedule it" + +#~ msgid "Status" +#~ msgstr "Status" + +#, fuzzy +#~ msgid "Move up" +#~ msgstr "Tryb" + +#, fuzzy +#~ msgid "Move down" +#~ msgstr "Tryb" + +#, fuzzy +#~ msgid "Execute now" +#~ msgstr "Uruchom" + +#, fuzzy +#~ msgid "Abort job" +#~ msgstr "Port" + +#, fuzzy +#~ msgid "Waiting" +#~ msgstr "Ostrzeżenie" + +#, fuzzy +#~ msgid "Processed" +#~ msgstr "Przetwarzanie" + +#, fuzzy +#~ msgid "Detection" +#~ msgstr "Sekcja" + +#, fuzzy +#~ msgid "Cannot update queue entry: %s" +#~ msgstr "Nieznany wpis '%s'!" + +#, fuzzy +#~ msgid "Cannot load queue entries: %s" +#~ msgstr "Nieznany wpis '%s'!" + +#, fuzzy +#~ msgid "System deployment" +#~ msgstr "Zarządzanie systemem" + +#, fuzzy +#~ msgid "System list" +#~ msgstr "Zaufanie systemowe" + +#, fuzzy +#~ msgid "ID" +#~ msgstr "GID" + +#~ msgid "Timestamp" +#~ msgstr "Czas" + +#, fuzzy +#~ msgid "Targets" +#~ msgstr "Kodowanie" + +#, fuzzy +#~ msgid "System / Department" +#~ msgstr "Departament" + +#, fuzzy +#~ msgid "Display users" +#~ msgstr "Wyświetl użytkowników pasujących" + +#, fuzzy +#~ msgid "Display groups" +#~ msgstr "Wyświetl grupy użytkownika" + +#~ msgid "Base" +#~ msgstr "Kontener" + +#~ msgid "Submit department" +#~ msgstr "Zatwierdź departament" + +#~ msgid "Submit" +#~ msgstr "Wyślij" + +#, fuzzy +#~ msgid "Abort installation" +#~ msgstr "Stacja Windows" + +#, fuzzy +#~ msgid "Reload GOto settings" +#~ msgstr "Ustawienia Posix" + +#, fuzzy +#~ msgid "System analysis" +#~ msgstr "System" + +#, fuzzy +#~ msgid "Installation activation" +#~ msgstr "Stacja Windows" + +#, fuzzy +#~ msgid "Reload LDAP config" +#~ msgstr "Przeładuj listę" + +#, fuzzy +#~ msgid "Time schedule" +#~ msgstr "PHP schedule it" + +#, fuzzy +#~ msgid "Year" +#~ msgstr "Szukaj" + +#, fuzzy +#~ msgid "Month" +#~ msgstr "miesiąc" + +#, fuzzy +#~ msgid "Day" +#~ msgstr "dzień" + +#, fuzzy +#~ msgid "Hour" +#~ msgstr "godzina" + +#, fuzzy +#~ msgid "Minute" +#~ msgstr "Drukarka" + +#, fuzzy +#~ msgid "Second" +#~ msgstr "Sekcja" + +#, fuzzy +#~ msgid "Reload fai release db" +#~ msgstr "Wgraj" + +#~ msgid "Send message" +#~ msgstr "Wyślij wiadomość" + +#, fuzzy +#~ msgid "Subject" +#~ msgstr "Obiekt" + +#~ msgid "Message" +#~ msgstr "Wiadomość" + +#, fuzzy +#~ msgid "Create '%s' job" +#~ msgstr "Utwórz obiekty" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#, fuzzy +#~ msgid "Display server" +#~ msgstr "Wyświetl nazwę" + +#, fuzzy +#~ msgid "Display workstation" +#~ msgstr "stacje robocze" + +#, fuzzy +#~ msgid "Display object groups" +#~ msgstr "Lista grupy obiektów" + +#~ msgid "Server" +#~ msgstr "Serwer" + +#~ msgid "Workstation" +#~ msgstr "Stacja robocza" + +#~ msgid "Object group" +#~ msgstr "Grupa obiektu" + +#, fuzzy +#~ msgid "Activate new" +#~ msgstr "Aktywne" + +#, fuzzy +#~ msgid "Progress" +#~ msgstr "Przetwarzanie" + +#, fuzzy +#~ msgid "Message settings" +#~ msgstr "Ustawienia użytkownika" + +#, fuzzy +#~ msgid "Sender" +#~ msgstr "Płeć" + +#, fuzzy +#~ msgid "Target users" +#~ msgstr "Użytkownicy domeny" + +#, fuzzy +#~ msgid "Target groups" +#~ msgstr "departamenty" + +#, fuzzy +#~ msgid "Available targets" +#~ msgstr "Dostępni członkowie" + +#~ msgid "Object name" +#~ msgstr "Nazwa obiektu" + +#, fuzzy +#~ msgid "Select to see object groups" +#~ msgstr "Wybierz aby zobaczyć grupy GOsa" + +#, fuzzy +#~ msgid "Show object groups" +#~ msgstr "Grupy obiektów" + +#~ msgid "Select to see servers" +#~ msgstr "Proszę aby zobaczyć serwery" + +#~ msgid "Show servers" +#~ msgstr "Pokaż serwery" + +#~ msgid "Select to see workstations" +#~ msgstr "Wybierz aby zobaczyc stacje robocze" + +#~ msgid "Show workstations" +#~ msgstr "Pokaż stacje robocze" + +#, fuzzy +#~ msgid "Select to see incoming objects" +#~ msgstr "Wybież aby zobaczyć telefony" + +#, fuzzy +#~ msgid "Show new objects" +#~ msgstr "Przenieś obiekty" + +#~ msgid "Regular expression for matching group names" +#~ msgstr "Wyrażenie regularne dla dopasowania nazw grup" + +#, fuzzy +#~ msgid "Available logs" +#~ msgstr "Dostępni członkowie" + +#, fuzzy +#~ msgid "Selected log" +#~ msgstr "Wybierz" + +#, fuzzy +#~ msgid "No logs for this host available!" +#~ msgstr "Plik jest dostępny" + +#, fuzzy +#~ msgid "Import jobs" +#~ msgstr "Import" + +#, fuzzy +#~ msgid "timestamp" +#~ msgstr "Czas" + +#, fuzzy +#~ msgid "MAC-address" +#~ msgstr "Adres" + +#, fuzzy +#~ msgid "job type" +#~ msgstr "Typ FS" + +#, fuzzy +#~ msgid "object group" +#~ msgstr "Grupa obiektu" + +#, fuzzy +#~ msgid "import base" +#~ msgstr "Tworzenie snapshot'u nieudane" + +#, fuzzy +#~ msgid "IP-address" +#~ msgstr "Adres" + +#, fuzzy +#~ msgid "Select list to import" +#~ msgstr "Wybierz aby zobaczyć drukarki" + +#, fuzzy +#~ msgid "Browse" +#~ msgstr "Kontener" + +#, fuzzy +#~ msgid "MAC" +#~ msgstr "ACL" + +#, fuzzy +#~ msgid "IP" +#~ msgstr "NI" + +#~ msgid "none" +#~ msgstr "żaden" + +#, fuzzy +#~ msgid "Date" +#~ msgstr "Wklej" + +#, fuzzy +#~ msgid "GOto log view" +#~ msgstr "Podgląd pomocy GOsa" + +#, fuzzy +#~ msgid "Cannot delete '%s': object does not exist!" +#~ msgstr "Plik pakietu '%s' nie istnieje." + +#, fuzzy +#~ msgid "The job could not be aborted, the required class '%s' was not found." +#~ msgstr "" +#~ "Funkcjonalność snapshot jest włączona, lecz wymagana zmienna '%s' nie " +#~ "jest skonfigurowana w gosa.conf." + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "Zarządzanie systemem" + +#, fuzzy +#~ msgid "Edit product" +#~ msgstr "Edytuj klasę" + +#~ msgid "Edit class" +#~ msgstr "Edytuj klasę" + +#~ msgid "Delete class" +#~ msgstr "Usuń klasę" + +#, fuzzy +#~ msgid "Opsi netboot package" +#~ msgstr "Użyte pakiety" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopiuj" + +#~ msgid "copy" +#~ msgstr "kopiuj" + +#~ msgid "Copy this entry" +#~ msgstr "Kopiuj ten obiekt" + +#, fuzzy +#~ msgid "Sudo generic" +#~ msgstr "Ogólne" + +#~ msgid "package is configured" +#~ msgstr "pakiet jest skonfigurowany" + +#~ msgid "Branches" +#~ msgstr "Gałęzie" + +#~ msgid "Create new branch" +#~ msgstr "Utwórz nową gałąź" + +#~ msgid "Create new locked branch" +#~ msgstr "Utwórz nową zablokowaną gałąź" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "wytnij" + +#~ msgid "cut" +#~ msgstr "wytnij" + +#~ msgid "Cut this entry" +#~ msgstr "Wytnij ten obiekt" + +#~ msgid "Choosen packages" +#~ msgstr "Wybrane pakiety" + +#~ msgid "Toggle remove flag" +#~ msgstr "Przełącz flagę usuwania" + +#, fuzzy +#~ msgid "File system encryption" +#~ msgstr "Opcje systemu plików" + +#~ msgid "Fully Automatic Installation - management" +#~ msgstr "Fully Automatic Installation - zarządzanie" + +#~ msgid "Fully Automatic Installation" +#~ msgstr "Fully Automatic Installation" + +#, fuzzy +#~ msgid "This table displays all FAI classes in the selected tree." +#~ msgstr "Ta tabela wyświetla wszystkie klasy FAI w wybranym drzewie." + +#~ msgid "Name of FAI class" +#~ msgstr "Nazwy klasy FAI" + +#, fuzzy +#~ msgid "Package file '%s' does not exist!" +#~ msgstr "Plik pakietu '%s' nie istnieje." + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "Ta nazwa jest już w użyciu." + +#, fuzzy +#~ msgid "Please enter a script!" +#~ msgstr "Proszę podać skrypt" + +#~ msgid "You're about to delete all information about the FAI class at '%s'." +#~ msgstr "Zamierzasz usunąć wszyskie informacje o klasie FAI w '%s'." + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "Brak uprawnień do usunięcia tego elementu!" + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "Zamierzasz usunąć element %s." + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "Zamierzasz usunąć element %s." + +#~ msgid "You're about to delete a fai branch / freeze '%s'." +#~ msgstr "Zamierzasz usunąć gałąź / zamrożenie FAI '%s'." + +#, fuzzy +#~ msgid "Branch name is not valid!" +#~ msgstr "Podana nazwa gałęzi jest niepoprawna." + +#, fuzzy +#~ msgid "Freeze name is not valid!" +#~ msgstr "Podana nazwa zamrożenia jest niepoprawna." + +#, fuzzy +#~ msgid "You have no permission to create a new branch!" +#~ msgstr "Brak uprawnień do zmiany przekazywania poczty" + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Packages bundle" +#~ msgstr "Zestaw pakietów" + +#, fuzzy +#~ msgid "There is already a template with the given name." +#~ msgstr "Już istnieje wgrany plik z tą samą nazwą." + +#~ msgid "Please specify a value for attribute 'file'." +#~ msgstr "Proszę podać wartość dla atrybutu 'plik'." + +#, fuzzy +#~ msgid "Please specify a valid value for attribute 'Destination path'." +#~ msgstr "Proszę podać wartość dla atrybutu 'ścieżka'." + +#, fuzzy +#~ msgid "Please enter a file name." +#~ msgstr "Proszę podać nazwę" + +#~ msgid "Please enter a user." +#~ msgstr "Proszę podać użytkownika" + +#~ msgid "Please enter a valid user. Only a-z/0-9 are allowed." +#~ msgstr "Proszę podać prawidłowego użytkownika. Tylko a-z/0-9 są dozwolone." + +#~ msgid "Please enter a group." +#~ msgstr "Proszę podać grupę" + +#~ msgid "Please enter a valid group. Only a-z/0-9 are allowed." +#~ msgstr "Proszę podać prawidłową grupę. Tylko a-z/0-9 są dozwolone." + +#~ msgid "Create new FAI object - partition table." +#~ msgstr "Utwórz nowy obiekt FAI - tablica partycji." + +#~ msgid "Create new FAI object - package bundle." +#~ msgstr "Utwórz nowy obiekt FAI - zestaw pakietów." + +#~ msgid "Create new FAI object - script bundle." +#~ msgstr "Utwórz nowy obiekt FAI - zestaw skryptów." + +#~ msgid "Create new FAI object - variable bundle." +#~ msgstr "Utwórz nowy obiekt FAI - zestaw zmiennych." + +#~ msgid "Create new FAI object - hook bundle." +#~ msgstr "Utwórz nowy obiekt FAI - zestaw zaczepów." + +#~ msgid "Create new FAI object - profile." +#~ msgstr "Utwórz nowy obiekt FAI - profil." + +#~ msgid "Create new FAI object - template." +#~ msgstr "Utwórz nowy obiekt FAI - szablon." + +#, fuzzy +#~ msgid "Spaces are not allowed within class names." +#~ msgstr "Brak uprawnień do zmiany własnego hasła" + +#~ msgid "The given class name is empty." +#~ msgstr "Podana klasa jest pusta." + +#~ msgid "The specified class name is already in use for this object type." +#~ msgstr "Podana nazwa klasy jest już używana dla tego typu obiektu." + +#, fuzzy +#~ msgid "There is already a variable with the given name." +#~ msgstr "Już istnieje wgrany plik z tą samą nazwą." + +#~ msgid "Please specify a value for the attribute 'content'." +#~ msgstr "Proszę podać wartość dla atrybutu 'zawartość'." + +#~ msgid "Please enter a name." +#~ msgstr "Proszę podać nazwę" + +#~ msgid "Display FAI profile objects" +#~ msgstr "Wyświetl obiekty profili FAI" + +#~ msgid "Display FAI template objects" +#~ msgstr "Wyświetl szablony FAI" + +#~ msgid "Display FAI scripts" +#~ msgstr "Wyświetl skrypty FAI" + +#~ msgid "Display FAI hooks" +#~ msgstr "Wyświetl zaczepy FAI" + +#~ msgid "Display FAI variables" +#~ msgstr "Wyświetl zmienne FAI" + +#~ msgid "Display FAI packages" +#~ msgstr "Wyświetl pakiety FAI" + +#~ msgid "Display FAI partitions" +#~ msgstr "Wyświetl partycje FAI" + +#, fuzzy +#~ msgid "Number of listed profiles" +#~ msgstr "Nazwa departamentu" + +#, fuzzy +#~ msgid "Number of listed partitions" +#~ msgstr "Nazwa departamentu" + +#, fuzzy +#~ msgid "Number of listed scripts" +#~ msgstr "Lista skryptów" + +#, fuzzy +#~ msgid "Number of listed variables" +#~ msgstr "Lista przypisanych zmiennych" + +#, fuzzy +#~ msgid "Number of listed templates" +#~ msgstr "Nazwa departamentu" + +#, fuzzy +#~ msgid "Number of listed packages" +#~ msgstr "Nazwa departamentu" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Nazwa departamentu" + +#, fuzzy +#~ msgid "Please specify a valid disc name." +#~ msgstr "Proszę podać prawidłową nazwę skryptu." + +#~ msgid "Please enter a valid mount point for partition %s." +#~ msgstr "Proszę podać poprawny punkt montowania dla partycji %s." + +#~ msgid "Please enter a valid partition size for partition %s." +#~ msgstr "Proszę podać poprawny rozmiar partycji dla partycji %s." + +#~ msgid "Please enter a valid range for partition %s." +#~ msgstr "Proszę podać prawidłowy zasięg dla partycji %s." + +#~ msgid "Please enter a range for partition size for partition %s." +#~ msgstr "Proszę podać zasięg dla rozmiaru partycji %s." + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Back" +#~ msgstr "Wróć" + +#~ msgid "Saving of FAI/package list with dn '%s' failed." +#~ msgstr "Zapisywanie FAI/listy pakietów z dn '%s' nieudane." + +#~ msgid "Saving of FAI/hook with dn '%s' failed." +#~ msgstr "Zapisywanie FAI/zaczepu z dn '%s' nieudane." + +#~ msgid "Release management failed, can't save '%s'" +#~ msgstr "Zarządzanie wydaniem nieudane, nie można zapisać '%s'" + +#~ msgid "Saving of FAI/variable with dn '%s' failed." +#~ msgstr "Zapisywanie FAI/zmiennej z dn '%s' nieudane." + +#~ msgid "Saving of FAI/template with dn '%s' failed." +#~ msgstr "Zapisywanie FAI/szablonu z dn '%s' nieudane." + +#~ msgid "Creating of FAI/script with dn '%s' failed." +#~ msgstr "Tworzenie FAI/skryptu z dn '%s' nieudane." + +#~ msgid "Saving of FAI/partition table with dn '%s' failed." +#~ msgstr "Zapisywanie FAI/tablicy partycji z dn '%s' nieudane." + +#~ msgid "Saving of FAI/profile with dn '%s' failed." +#~ msgstr "Zapisywanie FAI/profilu z dn '%s' nieudane." + +#~ msgid "Please select a valid file." +#~ msgstr "Proszę wybrać prawidłowy plik" + +#, fuzzy +#~ msgid "There is already a hook with the given name." +#~ msgstr "Już istnieje obiekt z tym cn." + +#~ msgid "Please enter a value for script." +#~ msgstr "Proszę podać wartość dla skryptu." + +#, fuzzy +#~ msgid "There is already a script with the given name." +#~ msgstr "Już istnieje obiekt z tym cn." + +#~ msgid "Please assign at least one class to this profile." +#~ msgstr "Proszę przypisać przynajmniej jedną klasę do tego profilu." + +#~ msgid "Please enter a valid name." +#~ msgstr "Proszę podać prawidłową nazwę." + +#, fuzzy +#~ msgid "There is already a FAI object with this class name defined." +#~ msgstr "Już istnieje profil ze zdefiniowaną tą nazwą klasy." + +#~ msgid "" +#~ "Your specified search string '%s' returned too many results. Only the " +#~ "first 200 entries are shown, to keep the memory usage low." +#~ msgstr "" +#~ "Szukany ciąg znaków '%s' zwrócił za dużo wyników. Pokazanych jest tylko " +#~ "pierwsze 200 elementów aby zaoszczędzić pamięć. " diff --git a/trunk/gosa-plugins/fai/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/fai/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..c0cc002ac --- /dev/null +++ b/trunk/gosa-plugins/fai/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,2325 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/fai/faiTemplateEntry.tpl:3 admin/fai/faiVariable.tpl:4 +#: admin/fai/faiProfile.tpl:4 admin/fai/faiProfile.tpl:36 +#: admin/fai/faiScriptEntry.tpl:5 admin/fai/faiScript.tpl:4 +#: admin/fai/faiPackage.tpl:4 admin/fai/faiHook.tpl:4 +#: admin/fai/faiPartitionTableEntry.tpl:2 admin/fai/faiHookEntry.tpl:5 +#: admin/fai/faiTemplate.tpl:4 admin/fai/faiVariableEntry.tpl:5 +#: admin/fai/faiPartitionTable.tpl:4 +msgid "Generic" +msgstr "Общее" + +#: admin/fai/faiTemplateEntry.tpl:10 admin/fai/class_faiTemplateEntry.inc:220 +#, fuzzy +msgid "File name" +msgstr "Имя сервера" + +#: admin/fai/faiTemplateEntry.tpl:21 admin/fai/class_faiTemplateEntry.inc:215 +#, fuzzy +msgid "Destination path" +msgstr "Назначение" + +#: admin/fai/faiTemplateEntry.tpl:33 +#: admin/fai/class_faiPartitionTableEntry.inc:470 admin/fai/faiVariable.tpl:21 +#: admin/fai/class_faiHook.inc:562 admin/fai/faiProfile.tpl:21 +#: admin/fai/faiScriptEntry.tpl:19 admin/fai/faiScript.tpl:21 +#: admin/fai/faiPackage.tpl:21 admin/fai/faiHook.tpl:21 +#: admin/fai/class_faiProfile.inc:479 admin/fai/faiPartitionTableEntry.tpl:13 +#: admin/fai/faiHookEntry.tpl:19 admin/fai/class_faiVariableEntry.inc:138 +#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646 +#: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiTemplate.tpl:21 +#: admin/fai/class_faiPartitionTable.inc:550 admin/fai/faiVariableEntry.tpl:19 +#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398 +#: admin/fai/class_faiPackage.inc:582 admin/fai/class_faiTemplateEntry.inc:274 +#: admin/fai/faiPartitionTable.tpl:21 +msgid "Description" +msgstr "Описание" + +#: admin/fai/faiTemplateEntry.tpl:45 +#, fuzzy +msgid "Template attributes" +msgstr "Атрибут DN пользователей" + +#: admin/fai/faiTemplateEntry.tpl:53 admin/fai/class_faiTemplateEntry.inc:211 +#, fuzzy +msgid "File" +msgstr "Файлы" + +#: admin/fai/faiTemplateEntry.tpl:60 +#, fuzzy +msgid "Save template" +msgstr "Создать шаблон" + +#: admin/fai/faiTemplateEntry.tpl:69 +#, fuzzy +msgid "Upload" +msgstr "Загрузка процессора" + +#: admin/fai/faiTemplateEntry.tpl:76 +#, fuzzy +msgid "Full path" +msgstr "Контакт" + +#: admin/fai/faiTemplateEntry.tpl:92 +msgid "Owner" +msgstr "" + +#: admin/fai/faiTemplateEntry.tpl:103 admin/fai/faiTemplateEntry.tpl:145 +#: admin/fai/class_faiTemplateEntry.inc:230 +#: admin/fai/class_faiTemplateEntry.inc:233 +#: admin/fai/class_faiTemplateEntry.inc:235 +msgid "Group" +msgstr "Группа" + +#: admin/fai/faiTemplateEntry.tpl:114 +#, fuzzy +msgid "Access" +msgstr "Адрес" + +#: admin/fai/faiTemplateEntry.tpl:120 +#, fuzzy +msgid "Class" +msgstr "Выберите тип мыши" + +#: admin/fai/faiTemplateEntry.tpl:121 +#, fuzzy +msgid "Read" +msgstr "чтение" + +#: admin/fai/faiTemplateEntry.tpl:122 +#, fuzzy +msgid "Write" +msgstr "запись" + +#: admin/fai/faiTemplateEntry.tpl:123 +msgid "Execute" +msgstr "Выполнить" + +#: admin/fai/faiTemplateEntry.tpl:125 +#, fuzzy +msgid "Special" +msgstr "терминалы" + +#: admin/fai/faiTemplateEntry.tpl:128 admin/fai/class_faiTemplateEntry.inc:224 +#: admin/fai/class_faiTemplateEntry.inc:226 +msgid "User" +msgstr "Пользователь" + +#: admin/fai/faiTemplateEntry.tpl:142 +#, fuzzy +msgid "SUID" +msgstr "UID" + +#: admin/fai/faiTemplateEntry.tpl:159 +#, fuzzy +msgid "SGID" +msgstr "GID" + +#: admin/fai/faiTemplateEntry.tpl:162 +#, fuzzy +msgid "Others" +msgstr "Фильтры" + +#: admin/fai/faiTemplateEntry.tpl:176 +#, fuzzy +msgid "sticky" +msgstr "Состояние" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/class_faiHook.inc:239 admin/fai/tabsPartition.inc:34 +#: admin/fai/class_faiProfile.inc:262 admin/fai/class_faiManagement.inc:238 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiManagement.inc:899 admin/fai/class_faiManagement.inc:943 +#: admin/fai/class_faiManagement.inc:967 +#: admin/fai/class_faiManagement.inc:1216 admin/fai/class_faiTemplate.inc:212 +#: admin/fai/tabsVariable.inc:33 admin/fai/tabsPackage.inc:33 +#: admin/fai/class_faiScript.inc:229 admin/fai/class_FAI.inc:535 +#: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62 +#: admin/fai/tabsHook.inc:32 admin/fai/class_faiPartitionTable.inc:180 +#: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:272 +#: admin/fai/class_faiSummaryTab.inc:89 admin/fai/tabsProfile.inc:33 +#: admin/systems/services/repository/class_servRepository.inc:142 +#: admin/systems/services/repository/class_servRepository.inc:177 +#: admin/systems/services/repository/class_servRepository.inc:182 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Error" +msgstr "" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/tabsPartition.inc:34 admin/fai/tabsVariable.inc:33 +#: admin/fai/tabsPackage.inc:33 admin/fai/tabsHook.inc:32 +#: admin/fai/tabsProfile.inc:33 +msgid "Moving the tree failed. Destination tree is subtree of source tree." +msgstr "" + +#: admin/fai/remove.tpl:2 admin/fai/class_faiManagement.inc:513 +#: admin/fai/class_faiManagement.inc:1286 admin/fai/remove_branch.tpl:2 +msgid "Warning" +msgstr "Предупреждение" + +#: admin/fai/remove.tpl:7 +#, fuzzy +msgid "" +"This includes 'all' object information. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Сюда входит вся информация о системе и ее настройках. Подумайте еще " +"раз, действительно ли вам нужно удаление, так как GOsa не сможет отменить " +"результаты этой операции." + +#: admin/fai/remove.tpl:11 +#, fuzzy +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Лучше всего перед удалением сохранить резервную копию текущего дерева LDAP в " +"файл. Если вы сделали это и действительно хотите выполнить удаление, нажмите " +"Удалить, иначе нажмите Отмена." + +#: admin/fai/faiGroupHandle.tpl:3 +#, fuzzy +msgid "Please select the objects you want to remove:" +msgstr "Введите адрес сервера" + +#: admin/fai/faiGroupHandle.tpl:22 admin/fai/class_divListFai.inc:145 +#, fuzzy +msgid "Freezed" +msgstr "Номер телефона" + +#: admin/fai/faiGroupHandle.tpl:30 +#, fuzzy +msgid "Select the object you want to edit:" +msgstr "Выбрать объекты для добавления" + +#: admin/fai/faiGroupHandle.tpl:53 +#, fuzzy +msgid "Select the object you want to copy:" +msgstr "Выберите чтобы посмотреть группы GOsa" + +#: admin/fai/faiGroupHandle.tpl:76 +#, fuzzy +msgid "Select the object you want to cut:" +msgstr "Выберите чтобы посмотреть группы GOsa" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +#, fuzzy +msgid "primary" +msgstr "Основная группа" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +#, fuzzy +msgid "logical" +msgstr "Добавить локально" + +#: admin/fai/class_faiPartitionTableEntry.inc:183 +#: admin/fai/class_faiSummaryTab.inc:348 +msgid "Type" +msgstr "Тип" + +#: admin/fai/class_faiPartitionTableEntry.inc:184 +#, fuzzy +msgid "FS type" +msgstr "Тип" + +#: admin/fai/class_faiPartitionTableEntry.inc:185 +#: admin/fai/class_faiPartitionTableEntry.inc:474 +#: admin/fai/class_faiSummaryTab.inc:347 +#, fuzzy +msgid "Mount point" +msgstr "Мониторинг" + +#: admin/fai/class_faiPartitionTableEntry.inc:186 +#: admin/fai/class_faiSummaryTab.inc:346 +#, fuzzy +msgid "Size in MB" +msgstr "Пользователь:" + +#: admin/fai/class_faiPartitionTableEntry.inc:187 +#: admin/fai/class_faiPartitionTableEntry.inc:476 +#: admin/fai/class_faiSummaryTab.inc:345 +#, fuzzy +msgid "Mount options" +msgstr "Дополнительные параметры" + +#: admin/fai/class_faiPartitionTableEntry.inc:188 +#, fuzzy +msgid "FS option" +msgstr "Добавить параметр" + +#: admin/fai/class_faiPartitionTableEntry.inc:189 +#, fuzzy +msgid "Preserve" +msgstr "серверы" + +#: admin/fai/class_faiPartitionTableEntry.inc:282 +#, fuzzy +msgid "False" +msgstr "женский" + +#: admin/fai/class_faiPartitionTableEntry.inc:284 +#, fuzzy +msgid "True" +msgstr "Улица" + +#: admin/fai/class_faiPartitionTableEntry.inc:288 +#: admin/fai/class_faiPartitionTableEntry.inc:290 +#: admin/fai/class_divListFai.inc:178 +msgid "Remove" +msgstr "Удалить" + +#: admin/fai/class_faiPartitionTableEntry.inc:371 +#: admin/fai/class_faiPartitionTableEntry.inc:374 +#: admin/fai/class_faiPartitionTableEntry.inc:469 admin/fai/faiVariable.tpl:9 +#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:561 +#: admin/fai/faiProfile.tpl:9 admin/fai/faiScriptEntry.tpl:9 +#: admin/fai/faiScript.tpl:9 admin/fai/faiPackage.tpl:9 +#: admin/fai/faiHook.tpl:9 admin/fai/class_faiProfile.inc:395 +#: admin/fai/class_faiProfile.inc:405 admin/fai/class_faiProfile.inc:478 +#: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiHookEntry.tpl:9 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiVariableEntry.inc:90 +#: admin/fai/class_faiVariableEntry.inc:99 +#: admin/fai/class_faiVariableEntry.inc:102 +#: admin/fai/class_faiVariableEntry.inc:137 +#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:544 +#: admin/fai/class_askClassName.inc:142 admin/fai/class_askClassName.inc:146 +#: admin/fai/class_askClassName.inc:150 admin/fai/class_faiScript.inc:327 +#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiScriptEntry.inc:137 +#: admin/fai/class_faiScriptEntry.inc:142 +#: admin/fai/class_faiScriptEntry.inc:145 +#: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiTemplate.tpl:9 +#: admin/fai/class_faiPartitionTable.inc:371 +#: admin/fai/class_faiPartitionTable.inc:549 admin/fai/faiVariableEntry.tpl:9 +#: admin/fai/class_faiHookEntry.inc:145 admin/fai/class_faiHookEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:153 admin/fai/class_faiHookEntry.inc:196 +#: admin/fai/class_faiVariable.inc:296 admin/fai/class_faiVariable.inc:397 +#: admin/fai/class_faiPackage.inc:456 admin/fai/class_faiPackage.inc:581 +#: admin/fai/class_faiTemplateEntry.inc:207 +#: admin/fai/class_faiTemplateEntry.inc:273 +#: admin/fai/class_faiSummaryTab.inc:343 admin/fai/faiPartitionTable.tpl:9 +#: admin/systems/services/repository/class_servRepository.inc:177 +msgid "Name" +msgstr "Фамилия" + +#: admin/fai/class_faiPartitionTableEntry.inc:397 +#, php-format +msgid "please enter a unique mount point for partition %s" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:402 +#, php-format +msgid "partition %s mount point" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:407 +#, php-format +msgid "" +"File system type 'swap' is already used, change file system type for " +"partition %s." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:411 +msgid "Please use 'swap' as mount point, if 'swap' is used as fs-type." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:417 +#: admin/fai/class_faiPartitionTableEntry.inc:421 +#: admin/fai/class_faiPartitionTableEntry.inc:427 +#: admin/fai/class_faiPartitionTableEntry.inc:429 +#: admin/fai/class_faiPartitionTableEntry.inc:434 +#, fuzzy, php-format +msgid "partition %s size" +msgstr "Назначение" + +#: admin/fai/class_faiPartitionTableEntry.inc:449 +msgid "" +"You have more than 3 primary partition table entries in your configuration, " +"please check your configuration twice." +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:461 +#, fuzzy +msgid "Partition table entry" +msgstr "Переменная" + +#: admin/fai/class_faiPartitionTableEntry.inc:462 +#, fuzzy +msgid "FAI partition table entry" +msgstr "Принтер" + +#: admin/fai/class_faiPartitionTableEntry.inc:471 +#, fuzzy +msgid "Partition type" +msgstr "Переменная" + +#: admin/fai/class_faiPartitionTableEntry.inc:472 +#, fuzzy +msgid "Partition no." +msgstr "Назначение" + +#: admin/fai/class_faiPartitionTableEntry.inc:473 +#, fuzzy +msgid "File system type" +msgstr "Системы" + +#: admin/fai/class_faiPartitionTableEntry.inc:475 +#, fuzzy +msgid "Partition size" +msgstr "Назначение" + +#: admin/fai/class_faiPartitionTableEntry.inc:477 +#, fuzzy +msgid "File system options" +msgstr "Системная информация" + +#: admin/fai/class_faiPartitionTableEntry.inc:478 +#, fuzzy +msgid "Partition flags" +msgstr "Назначение" + +#: admin/fai/faiVariable.tpl:36 admin/fai/faiScript.tpl:38 +#: admin/fai/faiHook.tpl:38 admin/fai/class_faiProfileEntry.inc:175 +#: admin/fai/faiTemplate.tpl:33 admin/fai/faiPartitionTable.tpl:36 +#, fuzzy +msgid "Objects" +msgstr "Объект" + +#: admin/fai/faiVariable.tpl:38 +#, fuzzy +msgid "List of assigned variables" +msgstr "Выберите тип мыши" + +#: admin/fai/faiVariable.tpl:44 +msgid "Choose a variable to delete or edit" +msgstr "" + +#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312 +#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54 +msgid "Edit" +msgstr "Изменить" + +#: admin/fai/class_faiHook.inc:316 +msgid "Delete" +msgstr "Удалить" + +#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiTemplate.inc:300 +#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358 +#: admin/fai/class_faiScriptEntry.inc:88 admin/fai/class_faiHookEntry.inc:80 +#, fuzzy +msgid "Download" +msgstr "Домен" + +#: admin/fai/class_faiHook.inc:553 admin/fai/class_divListFai.inc:64 +msgid "Hook" +msgstr "" + +#: admin/fai/class_faiHook.inc:554 +#, fuzzy +msgid "FAI hook" +msgstr "Ошибка LDAP:" + +#: admin/fai/class_faiHook.inc:561 admin/fai/class_faiPartitionTable.inc:549 +#: admin/fai/class_faiVariable.inc:397 +#, fuzzy +msgid "Read only" +msgstr "чтение" + +#: admin/fai/faiProfile.tpl:36 admin/fai/class_faiProfile.inc:480 +#, fuzzy +msgid "FAI classes" +msgstr "Выберите тип мыши" + +#: admin/fai/faiProfile.tpl:37 +#, fuzzy +msgid "Choose a priority" +msgstr "Выберите тип мыши" + +#: admin/fai/faiScriptEntry.tpl:33 +msgid "Properties" +msgstr "Свойства" + +#: admin/fai/faiScriptEntry.tpl:33 admin/fai/faiScriptEntry.tpl:54 +#, fuzzy +msgid "Script attributes" +msgstr "Атрибут DN пользователей" + +#: admin/fai/faiScriptEntry.tpl:38 admin/fai/class_faiScript.inc:328 +#, fuzzy +msgid "Priority" +msgstr "Порт" + +#: admin/fai/faiScriptEntry.tpl:43 +msgid "" +"Choose a priority. Low values result in an earlier, high values in a later " +"execution." +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:56 admin/fai/faiHookEntry.tpl:56 +#: admin/fai/class_faiScript.inc:637 admin/fai/class_faiScriptEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:158 admin/fai/class_divListFai.inc:62 +#, fuzzy +msgid "Script" +msgstr "Путь к сценариям" + +#: admin/fai/faiScriptEntry.tpl:75 admin/fai/faiHookEntry.tpl:75 +#, fuzzy +msgid "Import script" +msgstr "Показать хосты" + +#: admin/fai/faiScript.tpl:39 +#, fuzzy +msgid "List of scripts" +msgstr "Список пользователей" + +#: admin/fai/faiPackage.tpl:33 +#: admin/systems/services/repository/servRepositorySetup.tpl:1 +#: admin/systems/services/repository/class_servRepository.inc:343 +#, fuzzy +msgid "Repository" +msgstr "Повторить" + +#: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25 +#: admin/fai/class_faiPackage.inc:587 +#: admin/systems/services/repository/class_divListRepositories.inc:23 +#: admin/systems/services/repository/servRepositorySetup.tpl:19 +#: admin/systems/services/repository/class_servRepositorySetup.inc:153 +#, fuzzy +msgid "Release" +msgstr "Набор правил" + +#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:584 +#, fuzzy +msgid "Section" +msgstr "Действие" + +#: admin/fai/faiPackage.tpl:53 +#, fuzzy +msgid "Install method" +msgstr "Почтовые настройки" + +#: admin/fai/faiPackage.tpl:57 +#, fuzzy +msgid "Please select the installation method" +msgstr "Введите корректный серийный номер" + +#: admin/fai/faiPackage.tpl:71 +#, fuzzy +msgid "Used packages" +msgstr "Показать телефоны" + +#: admin/fai/faiHook.tpl:39 +#, fuzzy +msgid "List of hook scripts" +msgstr "Стоп-листы" + +#: admin/fai/class_faiProfile.inc:289 admin/fai/class_faiProfileEntry.inc:172 +msgid "This list displays all assigned class names for this profile." +msgstr "" + +#: admin/fai/class_faiProfile.inc:292 admin/fai/class_askClassName.inc:83 +#: admin/fai/class_faiProfileEntry.inc:138 +msgid "Hook bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:293 admin/fai/class_askClassName.inc:85 +#: admin/fai/class_faiProfileEntry.inc:139 +#, fuzzy +msgid "Template bundle" +msgstr "Шаблон" + +#: admin/fai/class_faiProfile.inc:294 admin/fai/class_askClassName.inc:81 +#: admin/fai/class_faiProfileEntry.inc:140 +#, fuzzy +msgid "Script bundle" +msgstr "Путь к сценариям" + +#: admin/fai/class_faiProfile.inc:295 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_faiProfileEntry.inc:141 +#, fuzzy +msgid "Variable bundle" +msgstr "Переменная" + +#: admin/fai/class_faiProfile.inc:296 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_faiProfileEntry.inc:142 +msgid "Package bundle" +msgstr "" + +#: admin/fai/class_faiProfile.inc:297 admin/fai/class_askClassName.inc:79 +#: admin/fai/class_faiGroupHandle.inc:100 +#: admin/fai/class_faiProfileEntry.inc:143 +#: admin/fai/class_faiPartitionTable.inc:541 +#: admin/fai/class_divListFai.inc:154 admin/fai/class_divListFai.inc:208 +#: admin/fai/class_faiSummaryTab.inc:48 +#, fuzzy +msgid "Partition table" +msgstr "Переменная" + +#: admin/fai/class_faiProfile.inc:300 +msgid "Remove class from profile" +msgstr "" + +#: admin/fai/class_faiProfile.inc:303 +msgid "Up" +msgstr "" + +#: admin/fai/class_faiProfile.inc:304 +#, fuzzy +msgid "Down" +msgstr "Домен" + +#: admin/fai/class_faiProfile.inc:391 +msgid "No class specified for this profile!" +msgstr "" + +#: admin/fai/class_faiProfile.inc:470 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_divListFai.inc:58 +#: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218 +#, fuzzy +msgid "Profile" +msgstr "Путь к профилю" + +#: admin/fai/class_faiProfile.inc:471 +#, fuzzy +msgid "FAI profile" +msgstr "Управление системами" + +#: admin/fai/faiPartitionTableEntry.tpl:2 +#, fuzzy +msgid "Device" +msgstr "Устройства" + +#: admin/fai/faiPartitionTableEntry.tpl:24 +#, fuzzy +msgid "Partition entries" +msgstr "Переменная" + +#: admin/fai/faiPartitionTableEntry.tpl:29 +#: admin/fai/faiPartitionTableEntry.tpl:31 +#, fuzzy +msgid "Add partition" +msgstr "Добавить параметр" + +#: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54 +#, fuzzy +msgid "Hook attributes" +msgstr "Атрибут DN пользователей" + +#: admin/fai/faiHookEntry.tpl:38 admin/fai/class_faiHookEntry.inc:198 +msgid "Task" +msgstr "" + +#: admin/fai/faiHookEntry.tpl:41 +msgid "Choose an existing FAI task" +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:6 +#, fuzzy +msgid "List of available packages" +msgstr "Выберите тип мыши" + +#: admin/fai/faiPackageEntry.tpl:20 admin/fai/faiProfileEntry.tpl:21 +msgid "Information" +msgstr "Информация" + +#: admin/fai/faiPackageEntry.tpl:24 +msgid "" +"This menu allows you to select multiple packages to add them to the " +"currently edited package list." +msgstr "" + +#: admin/fai/faiPackageEntry.tpl:30 admin/fai/faiProfileEntry.tpl:31 +msgid "Filters" +msgstr "Фильтры" + +#: admin/fai/faiPackageEntry.tpl:40 admin/fai/faiProfileEntry.tpl:54 +#: admin/fai/faiProfileEntry.tpl:55 +msgid "Display objects matching" +msgstr "Показать совпадения объектов" + +#: admin/fai/faiPackageEntry.tpl:44 admin/fai/faiProfileEntry.tpl:59 +#: admin/systems/services/repository/class_divListRepositories.inc:26 +msgid "Regular expression for matching object names" +msgstr "Регулярное выражение, соответствующее именам объектов" + +#: admin/fai/class_faiManagement.inc:25 admin/fai/main.inc:53 +#: admin/fai/main.inc:55 +msgid "Software deployment" +msgstr "" + +#: admin/fai/class_faiManagement.inc:26 +msgid "Manage software packages and deployment reciepes" +msgstr "" + +#: admin/fai/class_faiManagement.inc:338 admin/fai/class_faiManagement.inc:495 +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 admin/fai/class_faiManagement.inc:869 +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "Permission error" +msgstr "Права для членов группы" + +#: admin/fai/class_faiManagement.inc:384 +#, fuzzy +msgid "Branch locked" +msgstr "Отмена" + +#: admin/fai/class_faiManagement.inc:384 +#, php-format +msgid "The following entries are locked, you can't remove them %s." +msgstr "" + +#: admin/fai/class_faiManagement.inc:400 +#, fuzzy +msgid "FAI object" +msgstr "Имя объекта" + +#: admin/fai/class_faiManagement.inc:492 +msgid "FAI branch/freeze" +msgstr "" + +#: admin/fai/class_faiManagement.inc:495 +#, fuzzy +msgid "You have no permission to delete this release!" +msgstr "У вас недостаточно прав для удаления этого пользователя!" + +#: admin/fai/class_faiManagement.inc:513 +msgid "Release remove aborted because the release name check failed!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 +#, fuzzy +msgid "Branch" +msgstr "Отмена" + +#: admin/fai/class_faiManagement.inc:750 +#: admin/fai/class_faiManagement.inc:1025 +#: admin/fai/class_faiManagement.inc:1031 +msgid "Continue" +msgstr "Продолжить" + +#: admin/fai/class_faiManagement.inc:781 +#: admin/fai/class_faiPackageEntry.inc:53 +#: admin/fai/class_faiPackageEntry.inc:193 admin/fai/class_FAI.inc:553 +#: admin/fai/class_faiPackageConfiguration.inc:35 +#: admin/fai/class_faiPackage.inc:478 +#: admin/systems/services/repository/class_servRepository.inc:326 +#, fuzzy +msgid "Service infrastructure" +msgstr "Искать в поддеревьях" + +#: admin/fai/class_faiManagement.inc:786 admin/fai/class_FAI.inc:1157 +#, fuzzy +msgid "Fatal error" +msgstr "Терминал-сервер" + +#: admin/fai/class_faiManagement.inc:846 +#, fuzzy +msgid "partition table" +msgstr "Переменная" + +#: admin/fai/class_faiManagement.inc:847 +#, fuzzy +msgid "script" +msgstr "Путь к сценариям" + +#: admin/fai/class_faiManagement.inc:848 +#, fuzzy +msgid "hook" +msgstr "Ошибка LDAP:" + +#: admin/fai/class_faiManagement.inc:849 +#, fuzzy +msgid "variable" +msgstr "Переменная" + +#: admin/fai/class_faiManagement.inc:850 +#, fuzzy +msgid "template" +msgstr "Шаблон" + +#: admin/fai/class_faiManagement.inc:851 +#, fuzzy +msgid "package list" +msgstr "Число страниц" + +#: admin/fai/class_faiManagement.inc:869 admin/fai/class_faiManagement.inc:886 +#, fuzzy, php-format +msgid "You have no permission to create a new %s!" +msgstr "У вас недостаточно прав для удаления этого группового объекта!" + +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "profile" +msgstr "Путь к профилю" + +#: admin/fai/class_faiManagement.inc:1286 +msgid "" +"The selected release is not available anymore. All triggered actions are " +"skipped." +msgstr "" + +#: admin/fai/class_faiManagement.inc:1411 +#, fuzzy +msgid "FAI releases" +msgstr "Выберите тип мыши" + +#: admin/fai/class_faiManagement.inc:1412 +#, fuzzy +msgid "FAI release management" +msgstr "Управление подразделениями" + +#: admin/fai/class_faiManagement.inc:1417 +#, fuzzy +msgid "FAI" +msgstr "Идентификатор факса" + +#: admin/fai/class_faiVariableEntry.inc:94 +#, fuzzy +msgid "Content" +msgstr "Продолжить" + +#: admin/fai/class_faiVariableEntry.inc:129 +#, fuzzy +msgid "Variable entry" +msgstr "Переменная" + +#: admin/fai/class_faiVariableEntry.inc:130 +#, fuzzy +msgid "FAI variable entry " +msgstr "Устройство отображения" + +#: admin/fai/class_faiVariableEntry.inc:139 admin/fai/faiVariableEntry.tpl:38 +#, fuzzy +msgid "Variable content" +msgstr "Переменная" + +#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288 +#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346 +#, fuzzy +msgid "edit" +msgstr "Изменить" + +#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348 +#, fuzzy +msgid "delete" +msgstr "Удалить" + +#: admin/fai/class_faiTemplate.inc:536 +msgid "Template" +msgstr "Шаблон" + +#: admin/fai/class_faiTemplate.inc:537 +#, fuzzy +msgid "FAI template" +msgstr "Создать шаблон" + +#: admin/fai/class_faiTemplate.inc:544 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiPackage.inc:584 admin/fai/class_faiPackage.inc:587 +#, fuzzy +msgid "Readonly" +msgstr "чтение" + +#: admin/fai/class_faiPackageEntry.inc:38 +#, fuzzy +msgid "Please enter your search string here" +msgstr "Введите корректный серийный номер" + +#: admin/fai/class_faiPackageEntry.inc:103 +msgid "" +"This list displays all assigned package names for this repository settings." +msgstr "" + +#: admin/fai/paste_generic.tpl:1 +#, fuzzy +msgid "FAI settings" +msgstr "Выберите тип мыши" + +#: admin/fai/paste_generic.tpl:5 admin/fai/class_faiProfileEntry.inc:174 +#: admin/fai/askClassName.tpl:32 admin/fai/askClassName.tpl:54 +#: admin/fai/class_divListFai.inc:53 +#, fuzzy +msgid "Class name" +msgstr "Выберите тип мыши" + +#: admin/fai/remove_branch.tpl:6 +#, fuzzy +msgid "" +"This includes all account data, system access, etc. for this branch. Please " +"double check if your really want to do this since there is no way for GOsa " +"to get your data back." +msgstr "" +"Сюда входит вся информация об учетной записи этого пользователя, его права " +"доступа в системе, настройки IMAP и т. д. Подумайте еще раз, действительно " +"ли вам нужно удаление, так как GOsa не сможет отменить результаты этой " +"операции." + +#: admin/fai/remove_branch.tpl:10 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Если вы уверены в своих действиях, нажмите на кнопку Удалить, иначе " +"нажмите Отмена." + +#: admin/fai/faiProfileEntry.tpl:6 +msgid "List of FAI objects (Fully Automatic Installation)" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:26 +msgid "" +"This menu allows you to select FAI class names and to add them to the " +"currently edited profile." +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:39 +#, fuzzy +msgid "Show only classes with templates" +msgstr "Показать шаблоны" + +#: admin/fai/faiProfileEntry.tpl:41 +msgid "Show only classes with scripts" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:43 +msgid "Show only classes with hooks" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:45 +#, fuzzy +msgid "Show only classes with variables" +msgstr "Показать терминалы" + +#: admin/fai/faiProfileEntry.tpl:47 +msgid "Show only classes with packages" +msgstr "" + +#: admin/fai/faiProfileEntry.tpl:49 +#, fuzzy +msgid "Show only classes with partitions" +msgstr "Показать рабочие станции" + +#: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_askClassName.inc:85 admin/fai/class_askClassName.inc:86 +#, fuzzy +msgid "Create new FAI object" +msgstr "Объект группы" + +#: admin/fai/class_faiGroupHandle.inc:102 admin/fai/class_divListFai.inc:164 +#: admin/fai/class_divListFai.inc:210 admin/fai/class_faiSummaryTab.inc:49 +msgid "Package list" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:104 admin/fai/class_divListFai.inc:156 +#: admin/fai/class_divListFai.inc:212 admin/fai/class_faiSummaryTab.inc:44 +#, fuzzy +msgid "Scripts" +msgstr "Путь к сценариям" + +#: admin/fai/class_faiGroupHandle.inc:106 admin/fai/class_divListFai.inc:160 +#: admin/fai/class_divListFai.inc:214 admin/fai/class_faiSummaryTab.inc:46 +#, fuzzy +msgid "Variables" +msgstr "Переменная" + +#: admin/fai/class_faiGroupHandle.inc:108 admin/fai/class_divListFai.inc:158 +#: admin/fai/class_divListFai.inc:216 admin/fai/class_faiSummaryTab.inc:45 +msgid "Hooks" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:112 admin/fai/class_divListFai.inc:220 +#: admin/fai/class_faiSummaryTab.inc:47 +#, fuzzy +msgid "Templates" +msgstr "Шаблон" + +#: admin/fai/class_faiGroupHandle.inc:114 admin/fai/class_divListFai.inc:76 +#: admin/fai/class_divListFai.inc:222 +msgid "OPSI netboot product" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:116 +msgid "OPSI local product" +msgstr "" + +#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68 +#: admin/fai/class_faiPackage.inc:573 +#, fuzzy +msgid "Package" +msgstr "Показать телефоны" + +#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316 +#, fuzzy +msgid "Sort direction" +msgstr "Действие" + +#: admin/fai/class_faiScript.inc:332 +msgid "Action" +msgstr "Действие" + +#: admin/fai/class_faiScript.inc:638 admin/fai/class_faiHookEntry.inc:199 +#, fuzzy +msgid "FAI script" +msgstr "Показать хосты" + +#: admin/fai/class_FAI.inc:259 admin/fai/class_FAI.inc:662 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/fai/class_FAI.inc:535 +#, php-format +msgid "Error, following objects should be equal '%s' and '%s'" +msgstr "" + +#: admin/fai/class_FAI.inc:874 +#, php-format +msgid "Creating group application release for %s" +msgstr "" + +#: admin/fai/class_FAI.inc:943 admin/fai/class_FAI.inc:965 +#: admin/fai/class_FAI.inc:1005 admin/fai/class_FAI.inc:1010 +#: admin/fai/class_FAI.inc:1048 +msgid "Object" +msgstr "Объект" + +#: admin/fai/class_FAI.inc:944 +#, php-format +msgid "Adding missing group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:966 +#, php-format +msgid "Adding group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1006 +#, fuzzy, php-format +msgid "Could not create menu entry %s. (Already exists)." +msgstr "Подразделение с таким именем уже существует." + +#: admin/fai/class_FAI.inc:1011 +#, php-format +msgid "Created group application menu entry for %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1042 +#, fuzzy, php-format +msgid "Creating copy of %s" +msgstr "Список пользователей" + +#: admin/fai/class_FAI.inc:1045 +msgid "Processing" +msgstr "" + +#: admin/fai/class_FAI.inc:1063 +#, fuzzy +msgid "Could not create new release, the destination dn is already in use." +msgstr "Подразделение с таким именем уже существует." + +#: admin/fai/class_FAI.inc:1076 +msgid "Error while fetching source dn - aborted!" +msgstr "" + +#: admin/fai/class_FAI.inc:1158 +#, php-format +msgid "" +"Release creation failed due to ldap errors. Additional informations '%s'." +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#, fuzzy +msgid "file is empty" +msgstr "Значение поля \"Файлы\" некорректно." + +#: admin/fai/class_faiScriptEntry.inc:181 +#: admin/fai/class_faiScriptEntry.inc:191 +#, fuzzy +msgid "Script entry" +msgstr "Путь к сценариям" + +#: admin/fai/class_faiScriptEntry.inc:182 +#, fuzzy +msgid "FAI script entry" +msgstr "Показать хосты" + +#: admin/fai/class_faiScriptEntry.inc:192 +#, fuzzy +msgid "Script Priority" +msgstr "Путь к сценариям" + +#: admin/fai/faiSummary.tpl:4 +#, fuzzy +msgid "FAI object tree" +msgstr "Имя объекта" + +#: admin/fai/faiSummary.tpl:11 +msgid "Reload class and release configuration from parent object." +msgstr "" + +#: admin/fai/faiSummary.tpl:22 +#, fuzzy +msgid "You are not allowed to view the fai summary." +msgstr "У вас недостаточно прав для удаления этого пользователя!" + +#: admin/fai/faiTemplate.tpl:34 +#, fuzzy +msgid "List of template files" +msgstr "Список подразделений" + +#: admin/fai/class_faiPartitionTable.inc:301 +#: admin/fai/class_faiPartitionTable.inc:307 +#, fuzzy, php-format +msgid "%s partition" +msgstr "Показать рабочие станции" + +#: admin/fai/class_faiPartitionTable.inc:303 +#: admin/fai/class_faiPartitionTable.inc:309 +#, fuzzy, php-format +msgid "%s partition(s)" +msgstr "Показать рабочие станции" + +#: admin/fai/class_faiPartitionTable.inc:542 +#, fuzzy +msgid "FAI partition table" +msgstr "Принтер" + +#: admin/fai/branch_selector.tpl:2 +#: admin/systems/services/repository/class_servRepository.inc:358 +#, fuzzy +msgid "Releases" +msgstr "Набор правил" + +#: admin/fai/branch_selector.tpl:8 +#, fuzzy +msgid "Current release" +msgstr "Текущий пароль" + +#: admin/fai/branch_selector.tpl:20 admin/fai/branch_selector.tpl:26 +#, fuzzy +msgid "Create release" +msgstr "Текущий пароль" + +#: admin/fai/branch_selector.tpl:23 admin/fai/branch_selector.tpl:29 +#, fuzzy +msgid "Create read-only release" +msgstr "Текущий пароль" + +#: admin/fai/branch_selector.tpl:28 +#, fuzzy +msgid "Freeze" +msgstr "Номер телефона" + +#: admin/fai/branch_selector.tpl:35 +#, fuzzy +msgid "Delete current release" +msgstr "Удалить" + +#: admin/fai/faiVariableEntry.tpl:33 +#, fuzzy +msgid "Variable attributes" +msgstr "Атрибут DN пользователей" + +#: admin/fai/class_faiHookEntry.inc:188 +#, fuzzy +msgid "Hook entry" +msgstr "Удалить объект" + +#: admin/fai/class_faiHookEntry.inc:189 +#, fuzzy +msgid "FAI hook entry" +msgstr "Ошибка LDAP:" + +#: admin/fai/faiNewBranch.tpl:5 +msgid "" +"You are now going to create a branch or locked branch. This action clones " +"the existing release to another release name. Branches can be modified as " +"usual. FAI classes of locked branches cannot be modified, just additional " +"classes are possible. Branch names should be alphanumeric, excluding the " +"reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' " +"and 'fai'." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:7 +msgid "" +"Branches are created as subreleases of the currently selected branch. " +"Creating a new branch named 1.0.2 in SARGE for example, will result in a new " +"release called SARGE/1.0.2." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:13 +#, fuzzy +msgid "Please enter a name for the branch" +msgstr "Введите корректный номер телефона!" + +#: admin/fai/faiNewBranch.tpl:34 +msgid "Processing the requested operation" +msgstr "" + +#: admin/fai/faiNewBranch.tpl:35 +msgid "" +"As soon as the copy operation has finished, you can scroll down to end of " +"the page and press the 'Continue' button to continue with the fai management " +"dialog." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:41 +msgid "" +"Your browser doesn't support iframes, please use this link to perform the " +"requested operation." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Perform requested operation." +msgstr "" + +#: admin/fai/faiNewBranch.tpl:43 +#, fuzzy +msgid "Initiate operation" +msgstr "Создать параметры" + +#: admin/fai/askClassName.tpl:6 +msgid "" +"Adding a new class to the FAI management, requires a class name. You have to " +"specify a unique class name for unique types of FAI classes, while you can " +"use the same class name for different types of FAI classes. In the laste " +"case, FAI will automatically enclose all these different class types to one " +"unique class name." +msgstr "" + +#: admin/fai/askClassName.tpl:12 +msgid "" +"Please use one of the following methods to choose the name for the new FAI " +"class." +msgstr "" + +#: admin/fai/askClassName.tpl:26 +msgid "Enter FAI class name manually" +msgstr "" + +#: admin/fai/askClassName.tpl:48 +msgid "Choose FAI class name from a list of existing classes" +msgstr "" + +#: admin/fai/askClassName.tpl:54 +#, fuzzy +msgid "Choose class name" +msgstr "Выберите тип мыши" + +#: admin/fai/askClassName.tpl:70 admin/fai/askClassName.tpl:77 +#, fuzzy +msgid "Use" +msgstr "Пользователь" + +#: admin/fai/askClassName.tpl:74 +#, fuzzy +msgid "A new class name." +msgstr "Доступные приложения" + +#: admin/fai/class_faiPackageConfiguration.inc:68 +#, php-format +msgid "Debconf information for package '%s'" +msgstr "" + +#: admin/fai/class_faiVariable.inc:389 admin/fai/class_divListFai.inc:60 +#: admin/fai/class_divListFai.inc:66 +msgid "Variable" +msgstr "Переменная" + +#: admin/fai/class_faiVariable.inc:390 +#, fuzzy +msgid "FAI variable" +msgstr "Устройство отображения" + +#: admin/fai/class_divListFai.inc:32 +#, fuzzy +msgid "List of classes" +msgstr "Выберите тип мыши" + +#: admin/fai/class_divListFai.inc:33 +#, fuzzy +msgid "List of deployment classes and products" +msgstr "Выберите тип мыши" + +#: admin/fai/class_divListFai.inc:48 +#, fuzzy +msgid "Select all" +msgstr "Удалить" + +#: admin/fai/class_divListFai.inc:54 +#, fuzzy +msgid "Class types" +msgstr "Выберите тип мыши" + +#: admin/fai/class_divListFai.inc:55 admin/fai/class_divListFai.inc:138 +msgid "Actions" +msgstr "Действия" + +#: admin/fai/class_divListFai.inc:57 admin/fai/class_divListFai.inc:59 +#: admin/fai/class_divListFai.inc:61 admin/fai/class_divListFai.inc:63 +#: admin/fai/class_divListFai.inc:65 admin/fai/class_divListFai.inc:67 +#: admin/fai/class_divListFai.inc:69 admin/fai/class_divListFai.inc:75 +#: admin/fai/class_divListFai.inc:77 +#, fuzzy, php-format +msgid "Display objects of type '%s'." +msgstr "Показать совпадения объектов" + +#: admin/fai/class_divListFai.inc:58 +#, fuzzy +msgid "Show profiles" +msgstr "Показать принтеры" + +#: admin/fai/class_divListFai.inc:60 +msgid "Show templates" +msgstr "Показать шаблоны" + +#: admin/fai/class_divListFai.inc:62 +#, fuzzy +msgid "Show scripts" +msgstr "Показать хосты" + +#: admin/fai/class_divListFai.inc:64 +#, fuzzy +msgid "Show hooks" +msgstr "Показать хосты" + +#: admin/fai/class_divListFai.inc:66 +#, fuzzy +msgid "Show variables" +msgstr "Показать терминалы" + +#: admin/fai/class_divListFai.inc:68 +#, fuzzy +msgid "Show packages" +msgstr "Показать телефоны" + +#: admin/fai/class_divListFai.inc:70 +#, fuzzy +msgid "Partition" +msgstr "Назначение" + +#: admin/fai/class_divListFai.inc:70 +#, fuzzy +msgid "Show partitions" +msgstr "Показать рабочие станции" + +#: admin/fai/class_divListFai.inc:76 +#, fuzzy +msgid "Show netboot products" +msgstr "Объединения" + +#: admin/fai/class_divListFai.inc:78 admin/fai/class_divListFai.inc:224 +#, fuzzy +msgid "OPSI localboot product" +msgstr "Объединения" + +#: admin/fai/class_divListFai.inc:78 +#, fuzzy +msgid "Show localboot products" +msgstr "Объединения" + +#: admin/fai/class_divListFai.inc:86 +msgid "Display users matching" +msgstr "Фильтр" + +#: admin/fai/class_divListFai.inc:140 +msgid "Create" +msgstr "Создать" + +#: admin/fai/class_divListFai.inc:155 +msgid "PT" +msgstr "" + +#: admin/fai/class_divListFai.inc:157 +msgid "S" +msgstr "" + +#: admin/fai/class_divListFai.inc:159 +msgid "H" +msgstr "" + +#: admin/fai/class_divListFai.inc:161 +msgid "V" +msgstr "" + +#: admin/fai/class_divListFai.inc:162 +#, fuzzy +msgid "Templates " +msgstr "Шаблон" + +#: admin/fai/class_divListFai.inc:163 +#, fuzzy +msgid "I" +msgstr "Unix" + +#: admin/fai/class_divListFai.inc:165 +msgid "PK" +msgstr "" + +#: admin/fai/class_divListFai.inc:313 admin/fai/class_divListFai.inc:314 +#: admin/fai/class_divListFai.inc:315 admin/fai/class_divListFai.inc:316 +#: admin/fai/class_divListFai.inc:317 admin/fai/class_divListFai.inc:318 +#: admin/fai/class_divListFai.inc:319 admin/fai/class_divListFai.inc:320 +#: admin/fai/class_divListFai.inc:321 admin/fai/class_divListFai.inc:322 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Подразделение" + +#: admin/fai/class_divListFai.inc:313 +#, fuzzy +msgid "profiles" +msgstr "Путь к профилю" + +#: admin/fai/class_divListFai.inc:314 +#, fuzzy +msgid "partitions" +msgstr "Показать рабочие станции" + +#: admin/fai/class_divListFai.inc:315 +#, fuzzy +msgid "scripts" +msgstr "Путь к сценариям" + +#: admin/fai/class_divListFai.inc:316 +#, fuzzy +msgid "hooks" +msgstr "Ошибка LDAP:" + +#: admin/fai/class_divListFai.inc:317 +#, fuzzy +msgid "variables" +msgstr "Переменная" + +#: admin/fai/class_divListFai.inc:318 +#, fuzzy +msgid "templates" +msgstr "Шаблон" + +#: admin/fai/class_divListFai.inc:319 +#, fuzzy +msgid "packages" +msgstr "Показать телефоны" + +#: admin/fai/class_divListFai.inc:320 +#, fuzzy +msgid "departments" +msgstr "Показать подразделения" + +#: admin/fai/class_divListFai.inc:321 +#, fuzzy +msgid "netboot products" +msgstr "Объединения" + +#: admin/fai/class_divListFai.inc:322 +#, fuzzy +msgid "localboot products" +msgstr "Объединения" + +#: admin/fai/class_faiPackage.inc:329 admin/fai/class_faiPackage.inc:330 +#, fuzzy +msgid "Configured" +msgstr "Настроить" + +#: admin/fai/class_faiPackage.inc:336 admin/fai/class_faiPackage.inc:337 +msgid "Package marked for removal" +msgstr "" + +#: admin/fai/class_faiPackage.inc:353 +msgid "Mark package for removal" +msgstr "" + +#: admin/fai/class_faiPackage.inc:359 +msgid "Configure this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:363 +msgid "Remove this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:442 +#, fuzzy +msgid "Please select a least one package!" +msgstr "Введите корректный номер телефона!" + +#: admin/fai/class_faiPackage.inc:446 +#, fuzzy +msgid "" +"Please choose a valid release/section combination for your repository setup!" +msgstr "Укажите корректный номер телефона." + +#: admin/fai/class_faiPackage.inc:574 +#, fuzzy +msgid "FAI Package list" +msgstr "Число страниц" + +#: admin/fai/class_faiPackage.inc:583 +#, fuzzy +msgid "Packages" +msgstr "Показать телефоны" + +#: admin/fai/class_faiPackage.inc:585 +#, fuzzy +msgid "Install Method" +msgstr "Почтовые настройки" + +#: admin/fai/class_faiPackage.inc:586 +#, fuzzy +msgid "Package configuration" +msgstr "Базы данных" + +#: admin/fai/class_faiTemplateEntry.inc:90 +#, fuzzy +msgid "no file uploaded yet" +msgstr "Файл небыл загружен" + +#: admin/fai/class_faiTemplateEntry.inc:96 +#, php-format +msgid "exists in database (size: %s bytes)" +msgstr "" + +#: admin/fai/class_faiTemplateEntry.inc:265 +#, fuzzy +msgid "Template entry" +msgstr "Шаблон" + +#: admin/fai/class_faiTemplateEntry.inc:266 +#, fuzzy +msgid "FAI template entry" +msgstr "Создать шаблон" + +#: admin/fai/class_faiTemplateEntry.inc:275 +#, fuzzy +msgid "Template file" +msgstr "Шаблон" + +#: admin/fai/class_faiTemplateEntry.inc:276 +#, fuzzy +msgid "Template path" +msgstr "Шаблон" + +#: admin/fai/class_faiTemplateEntry.inc:277 +#, fuzzy +msgid "File owner" +msgstr "Имя сервера" + +#: admin/fai/class_faiTemplateEntry.inc:278 +#, fuzzy +msgid "File permissions" +msgstr "Права для членов группы" + +#: admin/fai/class_faiSummaryTab.inc:50 +#, fuzzy +msgid "Profiles" +msgstr "Путь к профилю" + +#: admin/fai/class_faiSummaryTab.inc:89 +msgid "Unknown FAI information source!" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:178 +#: admin/systems/services/repository/class_servRepository.inc:93 +msgid "You can't use this plugin until FAI is activated." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:220 +msgid "This object has no FAI classes assigned." +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:233 +#, fuzzy +msgid "Open" +msgstr "Параметры" + +#: admin/fai/class_faiSummaryTab.inc:239 +#, fuzzy +msgid "Close" +msgstr "Выбрать" + +#: admin/fai/class_faiSummaryTab.inc:342 +#, fuzzy +msgid "No." +msgstr "нет" + +#: admin/fai/class_faiSummaryTab.inc:344 +#, fuzzy +msgid "FS options" +msgstr "Добавить параметр" + +#: admin/fai/faiPartitionTable.tpl:38 +#, fuzzy +msgid "Discs" +msgstr "Устройства" + +#: admin/fai/faiPartitionTable.tpl:44 +msgid "Choose a disk to delete or edit" +msgstr "" + +#: admin/fai/class_debconfTemplate.inc:207 +#, fuzzy +msgid "This package has no debconf options." +msgstr "В этой учетной записи нет атрибутов для телефона." + +#: admin/systems/services/repository/class_divListRepositories.inc:19 +#, fuzzy +msgid "List of configured repositories" +msgstr "Список пользователей" + +#: admin/systems/services/repository/class_divListRepositories.inc:20 +#, fuzzy +msgid "This menu allows you to create, delete and edit repository settings." +msgstr "" +"С помощью этого меню вы можете добавлять, изменять и удалять выбранные стоп-" +"листы. Если у вас достаточно большое количество списков, вы можете " +"использовать групповое выделение." + +#: admin/systems/services/repository/class_divListRepositories.inc:24 +#: admin/systems/services/repository/class_divListRepositories.inc:64 +#: admin/systems/services/repository/servRepositorySetup.tpl:39 +#: admin/systems/services/repository/class_servRepository.inc:360 +#, fuzzy +msgid "Sections" +msgstr "Действие" + +#: admin/systems/services/repository/class_divListRepositories.inc:25 +msgid "Options" +msgstr "Параметры" + +#: admin/systems/services/repository/class_divListRepositories.inc:33 +#, fuzzy +msgid "Add repository" +msgstr "Каталог" + +#: admin/systems/services/repository/servRepositorySetup.tpl:8 +#: admin/systems/services/repository/class_servRepository.inc:357 +#, fuzzy +msgid "Parent server" +msgstr "серверы" + +#: admin/systems/services/repository/servRepositorySetup.tpl:28 +#: admin/systems/services/repository/class_servRepository.inc:359 +#: admin/systems/services/repository/class_servRepositorySetup.inc:157 +msgid "URL" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:26 +#: admin/systems/services/repository/class_servRepository.inc:308 +#: admin/systems/services/repository/class_servRepository.inc:344 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +#, fuzzy +msgid "Repository service" +msgstr "Повторить" + +#: admin/systems/services/repository/class_servRepository.inc:142 +#, fuzzy +msgid "FAI release" +msgstr "Выберите тип мыши" + +#: admin/systems/services/repository/class_servRepository.inc:344 +msgid "Services" +msgstr "Сервисы" + +#, fuzzy +#~ msgid "Deployment status" +#~ msgstr "Состояние системы" + +#, fuzzy +#~ msgid "System deployment status" +#~ msgstr "Управление системами" + +#, fuzzy +#~ msgid "Permission" +#~ msgstr "Права для членов группы" + +#, fuzzy +#~ msgid "" +#~ "This menu allows you to remove and change the properties of GOsa tasks." +#~ msgstr "" +#~ "С помощью этого меню вы можете добавлять, изменять и удалять свойства " +#~ "отдельных систем. Вы можете только добавлять системы которые однажды уже " +#~ "были запущены." + +#, fuzzy +#~ msgid "List of queued jobs" +#~ msgstr "Список подразделений" + +#~ msgid "Import" +#~ msgstr "Импортировать" + +#, fuzzy +#~ msgid "Resume" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Pause" +#~ msgstr "Дата" + +#, fuzzy +#~ msgid "Abort" +#~ msgstr "Порт" + +#, fuzzy +#~ msgid "Reload" +#~ msgstr "чтение" + +#, fuzzy +#~ msgid "Target" +#~ msgstr "сброс" + +#, fuzzy +#~ msgid "Schedule" +#~ msgstr "Учетная запись Groupware" + +#~ msgid "Status" +#~ msgstr "Состояние" + +#, fuzzy +#~ msgid "Move up" +#~ msgstr "Режим" + +#, fuzzy +#~ msgid "Move down" +#~ msgstr "Режим" + +#, fuzzy +#~ msgid "Execute now" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Abort job" +#~ msgstr "Порт" + +#, fuzzy +#~ msgid "Waiting" +#~ msgstr "Предупреждение" + +#, fuzzy +#~ msgid "Detection" +#~ msgstr "Действие" + +#, fuzzy +#~ msgid "Cannot update queue entry: %s" +#~ msgstr "состояние неизвестно" + +#, fuzzy +#~ msgid "Cannot load queue entries: %s" +#~ msgstr "состояние неизвестно" + +#, fuzzy +#~ msgid "System deployment" +#~ msgstr "Управление системами" + +#, fuzzy +#~ msgid "System list" +#~ msgstr "Системные доверия" + +#, fuzzy +#~ msgid "ID" +#~ msgstr "GID" + +#, fuzzy +#~ msgid "Timestamp" +#~ msgstr "Таймаут (с)" + +#, fuzzy +#~ msgid "Targets" +#~ msgstr "сброс" + +#, fuzzy +#~ msgid "System / Department" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Display users" +#~ msgstr "Фильтр" + +#, fuzzy +#~ msgid "Display groups" +#~ msgstr "Показать группы пользователей" + +#~ msgid "Base" +#~ msgstr "Ветка" + +#, fuzzy +#~ msgid "Submit department" +#~ msgstr "Показать подразделения" + +#, fuzzy +#~ msgid "Abort installation" +#~ msgstr "Рабочая станция" + +#, fuzzy +#~ msgid "Reload GOto settings" +#~ msgstr "Атрибуты UNIX" + +#, fuzzy +#~ msgid "System analysis" +#~ msgstr "Системы" + +#, fuzzy +#~ msgid "Installation activation" +#~ msgstr "Рабочая станция" + +#, fuzzy +#~ msgid "Time schedule" +#~ msgstr "Учетная запись Groupware" + +#, fuzzy +#~ msgid "Year" +#~ msgstr "Поиск" + +#, fuzzy +#~ msgid "Month" +#~ msgstr "месяц" + +#, fuzzy +#~ msgid "Day" +#~ msgstr "день" + +#, fuzzy +#~ msgid "Hour" +#~ msgstr "час" + +#, fuzzy +#~ msgid "Minute" +#~ msgstr "Принтер" + +#, fuzzy +#~ msgid "Second" +#~ msgstr "Действие" + +#, fuzzy +#~ msgid "Reload fai release db" +#~ msgstr "Загрузка процессора" + +#, fuzzy +#~ msgid "Send message" +#~ msgstr "Домашняя страница" + +#, fuzzy +#~ msgid "Subject" +#~ msgstr "Объект" + +#~ msgid "Message" +#~ msgstr "Сообщение" + +#, fuzzy +#~ msgid "Create '%s' job" +#~ msgstr "Объект группы" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#, fuzzy +#~ msgid "Display server" +#~ msgstr "Отображаемое имя" + +#, fuzzy +#~ msgid "Display workstation" +#~ msgstr "рабочие станции" + +#, fuzzy +#~ msgid "Display object groups" +#~ msgstr "Название группы" + +#~ msgid "Server" +#~ msgstr "Сервер" + +#~ msgid "Workstation" +#~ msgstr "Рабочая станция" + +#~ msgid "Object group" +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Activate new" +#~ msgstr "Личный" + +#, fuzzy +#~ msgid "Progress" +#~ msgstr "Свойства" + +#, fuzzy +#~ msgid "Message settings" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Sender" +#~ msgstr "Отправитель" + +#, fuzzy +#~ msgid "Target users" +#~ msgstr "Пользователи домена" + +#, fuzzy +#~ msgid "Target groups" +#~ msgstr "подразделения" + +#, fuzzy +#~ msgid "Available targets" +#~ msgstr "Доступные приложения" + +#~ msgid "Object name" +#~ msgstr "Имя объекта" + +#, fuzzy +#~ msgid "Select to see object groups" +#~ msgstr "Выберите чтобы посмотреть группы GOsa" + +#, fuzzy +#~ msgid "Show object groups" +#~ msgstr "Объединения" + +#~ msgid "Select to see servers" +#~ msgstr "Выберите, чтобы просмотреть серверы" + +#~ msgid "Show servers" +#~ msgstr "Показать серверы" + +#~ msgid "Select to see workstations" +#~ msgstr "Выберите чтобы посмотреть рабочие станции" + +#~ msgid "Show workstations" +#~ msgstr "Показать рабочие станции" + +#, fuzzy +#~ msgid "Select to see incoming objects" +#~ msgstr "Выберите чтобы посмотреть телефоны" + +#, fuzzy +#~ msgid "Show new objects" +#~ msgstr "Включаемые объекты" + +#~ msgid "Regular expression for matching group names" +#~ msgstr "Регулярное выражение, соответствующее именам групп" + +#, fuzzy +#~ msgid "Available logs" +#~ msgstr "Доступные приложения" + +#, fuzzy +#~ msgid "Selected log" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Import jobs" +#~ msgstr "Импортировать" + +#, fuzzy +#~ msgid "timestamp" +#~ msgstr "Таймаут (с)" + +#, fuzzy +#~ msgid "MAC-address" +#~ msgstr "Адрес" + +#, fuzzy +#~ msgid "job type" +#~ msgstr "Тип" + +#, fuzzy +#~ msgid "object group" +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "import base" +#~ msgstr "Приложение" + +#, fuzzy +#~ msgid "IP-address" +#~ msgstr "Адрес" + +#, fuzzy +#~ msgid "Select list to import" +#~ msgstr "Выберите чтобы посмотреть принтеры" + +#, fuzzy +#~ msgid "Browse" +#~ msgstr "Ветка" + +#, fuzzy +#~ msgid "MAC" +#~ msgstr "Доступ" + +#, fuzzy +#~ msgid "IP" +#~ msgstr "Unix" + +#~ msgid "none" +#~ msgstr "нет" + +#, fuzzy +#~ msgid "Date" +#~ msgstr "Дата" + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "Управление системами" + +#, fuzzy +#~ msgid "Edit product" +#~ msgstr "Список систем" + +#, fuzzy +#~ msgid "Edit class" +#~ msgstr "Список систем" + +#, fuzzy +#~ msgid "Delete class" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Opsi netboot package" +#~ msgstr "Показать телефоны" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Компания" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Sudo generic" +#~ msgstr "Общее" + +#, fuzzy +#~ msgid "package is configured" +#~ msgstr "Не настроено" + +#, fuzzy +#~ msgid "Branches" +#~ msgstr "Отмена" + +#, fuzzy +#~ msgid "Create new branch" +#~ msgstr "Создание нового объекта в" + +#, fuzzy +#~ msgid "Create new locked branch" +#~ msgstr "Создание нового объекта в" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Choosen packages" +#~ msgstr "Показать телефоны" + +#, fuzzy +#~ msgid "Toggle remove flag" +#~ msgstr "по умолчанию" + +#, fuzzy +#~ msgid "File system encryption" +#~ msgstr "Системная информация" + +#, fuzzy +#~ msgid "Fully Automatic Installation - management" +#~ msgstr "Управление приложениями" + +#, fuzzy +#~ msgid "Fully Automatic Installation" +#~ msgstr "Управление приложениями" + +#, fuzzy +#~ msgid "This table displays all FAI classes in the selected tree." +#~ msgstr "Приложение с таким именем уже существует." + +#, fuzzy +#~ msgid "Name of FAI class" +#~ msgstr "Имя стоп-листа" + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "Please enter a script!" +#~ msgstr "Введите корректный серийный номер" + +#, fuzzy +#~ msgid "You're about to delete all information about the FAI class at '%s'." +#~ msgstr "Вы собираетесь удалить всю информацию о терминале (\"%s\")." + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "У вас недостаточно прав для удаления этого объекта!" + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "Вы собираетесь удалить объект %s." + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "Вы собираетесь удалить объект %s." + +#, fuzzy +#~ msgid "You're about to delete a fai branch / freeze '%s'." +#~ msgstr "Вы собираетесь удалить группу \"%s\"." + +#, fuzzy +#~ msgid "Branch name is not valid!" +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "Freeze name is not valid!" +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "You have no permission to create a new branch!" +#~ msgstr "Вам не разрешено менять пароль." + +#, fuzzy +#~ msgid "There is already a template with the given name." +#~ msgstr "" +#~ "Пользователь с таким регистрационным именем в базе данных уже существует." + +#, fuzzy +#~ msgid "Please specify a value for attribute 'file'." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please specify a valid value for attribute 'Destination path'." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please enter a file name." +#~ msgstr "Введите адрес сервера" + +#, fuzzy +#~ msgid "Please enter a user." +#~ msgstr "Введите адрес сервера" + +#, fuzzy +#~ msgid "Please enter a valid user. Only a-z/0-9 are allowed." +#~ msgstr "Введите корректное имя пользователя!" + +#, fuzzy +#~ msgid "Please enter a group." +#~ msgstr "Введите адрес сервера" + +#, fuzzy +#~ msgid "Please enter a valid group. Only a-z/0-9 are allowed." +#~ msgstr "Введите корректное имя пользователя!" + +#, fuzzy +#~ msgid "Create new FAI object - partition table." +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Create new FAI object - package bundle." +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Create new FAI object - script bundle." +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Create new FAI object - variable bundle." +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Create new FAI object - hook bundle." +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Create new FAI object - profile." +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Create new FAI object - template." +#~ msgstr "Создать шаблон" + +#, fuzzy +#~ msgid "Spaces are not allowed within class names." +#~ msgstr "Вам не разрешено менять пароль." + +#, fuzzy +#~ msgid "The given class name is empty." +#~ msgstr "Значение поля \"Файлы\" некорректно." + +#, fuzzy +#~ msgid "The specified class name is already in use for this object type." +#~ msgstr "Группа с таким именем уже существует." + +#, fuzzy +#~ msgid "There is already a variable with the given name." +#~ msgstr "" +#~ "Пользователь с таким регистрационным именем в базе данных уже существует." + +#, fuzzy +#~ msgid "Please specify a value for the attribute 'content'." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please enter a name." +#~ msgstr "Введите адрес сервера" + +#, fuzzy +#~ msgid "Display FAI template objects" +#~ msgstr "Список подразделений" + +#, fuzzy +#~ msgid "Display FAI scripts" +#~ msgstr "Список пользователей" + +#, fuzzy +#~ msgid "Display FAI hooks" +#~ msgstr "Ошибка LDAP:" + +#, fuzzy +#~ msgid "Display FAI variables" +#~ msgstr "Устройство отображения" + +#, fuzzy +#~ msgid "Display FAI packages" +#~ msgstr "Отображаемое имя" + +#, fuzzy +#~ msgid "Display FAI partitions" +#~ msgstr "Показать рабочие станции" + +#, fuzzy +#~ msgid "Number of listed profiles" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Number of listed partitions" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Number of listed scripts" +#~ msgstr "Список пользователей" + +#, fuzzy +#~ msgid "Number of listed variables" +#~ msgstr "Выберите тип мыши" + +#, fuzzy +#~ msgid "Number of listed templates" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Number of listed packages" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Please specify a valid disc name." +#~ msgstr "Введите корректное имя пользователя!" + +#, fuzzy +#~ msgid "Please enter a valid mount point for partition %s." +#~ msgstr "Введите корректный путь в поле \"Домашний каталог\"." + +#, fuzzy +#~ msgid "Please enter a valid partition size for partition %s." +#~ msgstr "Введите корректный путь в поле \"Домашний каталог\"." + +#, fuzzy +#~ msgid "Please enter a valid range for partition %s." +#~ msgstr "Введите корректный серийный номер" + +#, fuzzy +#~ msgid "Please enter a range for partition size for partition %s." +#~ msgstr "Введите корректный серийный номер" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Back" +#~ msgstr "Назад" + +#, fuzzy +#~ msgid "Saving of FAI/package list with dn '%s' failed." +#~ msgstr "Дополнительные записи в fstab" + +#, fuzzy +#~ msgid "Saving of FAI/hook with dn '%s' failed." +#~ msgstr "Атрибуты UNIX" + +#, fuzzy +#~ msgid "Saving of FAI/variable with dn '%s' failed." +#~ msgstr "Дополнительные записи в fstab" + +#, fuzzy +#~ msgid "Saving of FAI/template with dn '%s' failed." +#~ msgstr "Список подразделений" + +#, fuzzy +#~ msgid "Creating of FAI/script with dn '%s' failed." +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Saving of FAI/partition table with dn '%s' failed." +#~ msgstr "Дополнительные записи в fstab" + +#, fuzzy +#~ msgid "Saving of FAI/profile with dn '%s' failed." +#~ msgstr "Дополнительные записи в fstab" + +#, fuzzy +#~ msgid "Please select a valid file." +#~ msgstr "Введите корректный серийный номер" + +#, fuzzy +#~ msgid "There is already a hook with the given name." +#~ msgstr "" +#~ "Пользователь с таким регистрационным именем в базе данных уже существует." + +#, fuzzy +#~ msgid "Please enter a value for script." +#~ msgstr "Введите корректный серийный номер" + +#, fuzzy +#~ msgid "There is already a script with the given name." +#~ msgstr "" +#~ "Пользователь с таким регистрационным именем в базе данных уже существует." + +#, fuzzy +#~ msgid "Please enter a valid name." +#~ msgstr "Введите корректный серийный номер" + +#, fuzzy +#~ msgid "There is already a FAI object with this class name defined." +#~ msgstr "" +#~ "Пользователь с таким регистрационным именем в базе данных уже существует." diff --git a/trunk/gosa-plugins/fai/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/fai/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d7f8c0cb4 --- /dev/null +++ b/trunk/gosa-plugins/fai/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,2227 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/fai/faiTemplateEntry.tpl:3 admin/fai/faiVariable.tpl:4 +#: admin/fai/faiProfile.tpl:4 admin/fai/faiProfile.tpl:36 +#: admin/fai/faiScriptEntry.tpl:5 admin/fai/faiScript.tpl:4 +#: admin/fai/faiPackage.tpl:4 admin/fai/faiHook.tpl:4 +#: admin/fai/faiPartitionTableEntry.tpl:2 admin/fai/faiHookEntry.tpl:5 +#: admin/fai/faiTemplate.tpl:4 admin/fai/faiVariableEntry.tpl:5 +#: admin/fai/faiPartitionTable.tpl:4 +msgid "Generic" +msgstr "通用配置" + +#: admin/fai/faiTemplateEntry.tpl:10 admin/fai/class_faiTemplateEntry.inc:220 +#, fuzzy +msgid "File name" +msgstr "文件名" + +#: admin/fai/faiTemplateEntry.tpl:21 admin/fai/class_faiTemplateEntry.inc:215 +msgid "Destination path" +msgstr "目标路径" + +#: admin/fai/faiTemplateEntry.tpl:33 +#: admin/fai/class_faiPartitionTableEntry.inc:470 admin/fai/faiVariable.tpl:21 +#: admin/fai/class_faiHook.inc:562 admin/fai/faiProfile.tpl:21 +#: admin/fai/faiScriptEntry.tpl:19 admin/fai/faiScript.tpl:21 +#: admin/fai/faiPackage.tpl:21 admin/fai/faiHook.tpl:21 +#: admin/fai/class_faiProfile.inc:479 admin/fai/faiPartitionTableEntry.tpl:13 +#: admin/fai/faiHookEntry.tpl:19 admin/fai/class_faiVariableEntry.inc:138 +#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646 +#: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiTemplate.tpl:21 +#: admin/fai/class_faiPartitionTable.inc:550 admin/fai/faiVariableEntry.tpl:19 +#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398 +#: admin/fai/class_faiPackage.inc:582 admin/fai/class_faiTemplateEntry.inc:274 +#: admin/fai/faiPartitionTable.tpl:21 +msgid "Description" +msgstr "描述" + +#: admin/fai/faiTemplateEntry.tpl:45 +msgid "Template attributes" +msgstr "模板属性" + +#: admin/fai/faiTemplateEntry.tpl:53 admin/fai/class_faiTemplateEntry.inc:211 +msgid "File" +msgstr "文件" + +#: admin/fai/faiTemplateEntry.tpl:60 +msgid "Save template" +msgstr "保存模板" + +#: admin/fai/faiTemplateEntry.tpl:69 +msgid "Upload" +msgstr "上传" + +#: admin/fai/faiTemplateEntry.tpl:76 +#, fuzzy +msgid "Full path" +msgstr "字体路径" + +#: admin/fai/faiTemplateEntry.tpl:92 +msgid "Owner" +msgstr "所有者" + +#: admin/fai/faiTemplateEntry.tpl:103 admin/fai/faiTemplateEntry.tpl:145 +#: admin/fai/class_faiTemplateEntry.inc:230 +#: admin/fai/class_faiTemplateEntry.inc:233 +#: admin/fai/class_faiTemplateEntry.inc:235 +msgid "Group" +msgstr "组" + +#: admin/fai/faiTemplateEntry.tpl:114 +msgid "Access" +msgstr "访问" + +#: admin/fai/faiTemplateEntry.tpl:120 +msgid "Class" +msgstr "ç±»" + +#: admin/fai/faiTemplateEntry.tpl:121 +msgid "Read" +msgstr "读" + +#: admin/fai/faiTemplateEntry.tpl:122 +msgid "Write" +msgstr "写" + +#: admin/fai/faiTemplateEntry.tpl:123 +msgid "Execute" +msgstr "执行" + +#: admin/fai/faiTemplateEntry.tpl:125 +msgid "Special" +msgstr "特殊" + +#: admin/fai/faiTemplateEntry.tpl:128 admin/fai/class_faiTemplateEntry.inc:224 +#: admin/fai/class_faiTemplateEntry.inc:226 +msgid "User" +msgstr "用户" + +#: admin/fai/faiTemplateEntry.tpl:142 +msgid "SUID" +msgstr "SUID" + +#: admin/fai/faiTemplateEntry.tpl:159 +msgid "SGID" +msgstr "SGID" + +#: admin/fai/faiTemplateEntry.tpl:162 +msgid "Others" +msgstr "其他" + +#: admin/fai/faiTemplateEntry.tpl:176 +msgid "sticky" +msgstr "置顶" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/class_faiHook.inc:239 admin/fai/tabsPartition.inc:34 +#: admin/fai/class_faiProfile.inc:262 admin/fai/class_faiManagement.inc:238 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiManagement.inc:899 admin/fai/class_faiManagement.inc:943 +#: admin/fai/class_faiManagement.inc:967 +#: admin/fai/class_faiManagement.inc:1216 admin/fai/class_faiTemplate.inc:212 +#: admin/fai/tabsVariable.inc:33 admin/fai/tabsPackage.inc:33 +#: admin/fai/class_faiScript.inc:229 admin/fai/class_FAI.inc:535 +#: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62 +#: admin/fai/tabsHook.inc:32 admin/fai/class_faiPartitionTable.inc:180 +#: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:272 +#: admin/fai/class_faiSummaryTab.inc:89 admin/fai/tabsProfile.inc:33 +#: admin/systems/services/repository/class_servRepository.inc:142 +#: admin/systems/services/repository/class_servRepository.inc:177 +#: admin/systems/services/repository/class_servRepository.inc:182 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +msgid "Error" +msgstr "错误" + +#: admin/fai/tabsScript.inc:33 admin/fai/tabsTemplate.inc:33 +#: admin/fai/tabsPartition.inc:34 admin/fai/tabsVariable.inc:33 +#: admin/fai/tabsPackage.inc:33 admin/fai/tabsHook.inc:32 +#: admin/fai/tabsProfile.inc:33 +#, fuzzy +msgid "Moving the tree failed. Destination tree is subtree of source tree." +msgstr "移动树失败。目标树是源树的子树。" + +#: admin/fai/remove.tpl:2 admin/fai/class_faiManagement.inc:513 +#: admin/fai/class_faiManagement.inc:1286 admin/fai/remove_branch.tpl:2 +msgid "Warning" +msgstr "警告" + +#: admin/fai/remove.tpl:7 +msgid "" +"This includes 'all' object information. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"这包含“所有”对象信息。请再次检查您是否要这么做,因为 GOsa 没有办法将您的数据" +"找回。" + +#: admin/fai/remove.tpl:11 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"最好在执行这个操作之前,保存当前 LDAP 树中的内容到一个文件。所以,如果您已经" +"这么做了,按“删除”继续或者按“取消”退出。" + +#: admin/fai/faiGroupHandle.tpl:3 +#, fuzzy +msgid "Please select the objects you want to remove:" +msgstr "请输入新对象组名称" + +#: admin/fai/faiGroupHandle.tpl:22 admin/fai/class_divListFai.inc:145 +#, fuzzy +msgid "Freezed" +msgstr "频率" + +#: admin/fai/faiGroupHandle.tpl:30 +#, fuzzy +msgid "Select the object you want to edit:" +msgstr "选择要添加的对象" + +#: admin/fai/faiGroupHandle.tpl:53 +#, fuzzy +msgid "Select the object you want to copy:" +msgstr "选择查看 GOsa 组" + +#: admin/fai/faiGroupHandle.tpl:76 +#, fuzzy +msgid "Select the object you want to cut:" +msgstr "选择查看 GOsa 组" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "primary" +msgstr "主要" + +#: admin/fai/class_faiPartitionTableEntry.inc:176 +msgid "logical" +msgstr "逻辑" + +#: admin/fai/class_faiPartitionTableEntry.inc:183 +#: admin/fai/class_faiSummaryTab.inc:348 +msgid "Type" +msgstr "类型" + +#: admin/fai/class_faiPartitionTableEntry.inc:184 +msgid "FS type" +msgstr "文件系统类型" + +#: admin/fai/class_faiPartitionTableEntry.inc:185 +#: admin/fai/class_faiPartitionTableEntry.inc:474 +#: admin/fai/class_faiSummaryTab.inc:347 +msgid "Mount point" +msgstr "挂载点" + +#: admin/fai/class_faiPartitionTableEntry.inc:186 +#: admin/fai/class_faiSummaryTab.inc:346 +msgid "Size in MB" +msgstr "单位 MB" + +#: admin/fai/class_faiPartitionTableEntry.inc:187 +#: admin/fai/class_faiPartitionTableEntry.inc:476 +#: admin/fai/class_faiSummaryTab.inc:345 +msgid "Mount options" +msgstr "挂载选项" + +#: admin/fai/class_faiPartitionTableEntry.inc:188 +msgid "FS option" +msgstr "文件系统选项" + +#: admin/fai/class_faiPartitionTableEntry.inc:189 +msgid "Preserve" +msgstr "保留" + +#: admin/fai/class_faiPartitionTableEntry.inc:282 +msgid "False" +msgstr "假" + +#: admin/fai/class_faiPartitionTableEntry.inc:284 +msgid "True" +msgstr "真" + +#: admin/fai/class_faiPartitionTableEntry.inc:288 +#: admin/fai/class_faiPartitionTableEntry.inc:290 +#: admin/fai/class_divListFai.inc:178 +msgid "Remove" +msgstr "删除" + +#: admin/fai/class_faiPartitionTableEntry.inc:371 +#: admin/fai/class_faiPartitionTableEntry.inc:374 +#: admin/fai/class_faiPartitionTableEntry.inc:469 admin/fai/faiVariable.tpl:9 +#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:561 +#: admin/fai/faiProfile.tpl:9 admin/fai/faiScriptEntry.tpl:9 +#: admin/fai/faiScript.tpl:9 admin/fai/faiPackage.tpl:9 +#: admin/fai/faiHook.tpl:9 admin/fai/class_faiProfile.inc:395 +#: admin/fai/class_faiProfile.inc:405 admin/fai/class_faiProfile.inc:478 +#: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiHookEntry.tpl:9 +#: admin/fai/class_faiManagement.inc:607 admin/fai/class_faiManagement.inc:613 +#: admin/fai/class_faiVariableEntry.inc:90 +#: admin/fai/class_faiVariableEntry.inc:99 +#: admin/fai/class_faiVariableEntry.inc:102 +#: admin/fai/class_faiVariableEntry.inc:137 +#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:544 +#: admin/fai/class_askClassName.inc:142 admin/fai/class_askClassName.inc:146 +#: admin/fai/class_askClassName.inc:150 admin/fai/class_faiScript.inc:327 +#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiScriptEntry.inc:137 +#: admin/fai/class_faiScriptEntry.inc:142 +#: admin/fai/class_faiScriptEntry.inc:145 +#: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiTemplate.tpl:9 +#: admin/fai/class_faiPartitionTable.inc:371 +#: admin/fai/class_faiPartitionTable.inc:549 admin/fai/faiVariableEntry.tpl:9 +#: admin/fai/class_faiHookEntry.inc:145 admin/fai/class_faiHookEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:153 admin/fai/class_faiHookEntry.inc:196 +#: admin/fai/class_faiVariable.inc:296 admin/fai/class_faiVariable.inc:397 +#: admin/fai/class_faiPackage.inc:456 admin/fai/class_faiPackage.inc:581 +#: admin/fai/class_faiTemplateEntry.inc:207 +#: admin/fai/class_faiTemplateEntry.inc:273 +#: admin/fai/class_faiSummaryTab.inc:343 admin/fai/faiPartitionTable.tpl:9 +#: admin/systems/services/repository/class_servRepository.inc:177 +msgid "Name" +msgstr "名称" + +#: admin/fai/class_faiPartitionTableEntry.inc:397 +#, php-format +msgid "please enter a unique mount point for partition %s" +msgstr "请输入分区 %s 的一个唯一挂载点" + +#: admin/fai/class_faiPartitionTableEntry.inc:402 +#, php-format +msgid "partition %s mount point" +msgstr "" + +#: admin/fai/class_faiPartitionTableEntry.inc:407 +#, php-format +msgid "" +"File system type 'swap' is already used, change file system type for " +"partition %s." +msgstr "文件系统类型 'swap' 已经使用过了,修改分区 %s 的文件系统类型。" + +#: admin/fai/class_faiPartitionTableEntry.inc:411 +msgid "Please use 'swap' as mount point, if 'swap' is used as fs-type." +msgstr "请用 'swap' 作为挂载点,如果 'swap' 作为文件系统类型。" + +#: admin/fai/class_faiPartitionTableEntry.inc:417 +#: admin/fai/class_faiPartitionTableEntry.inc:421 +#: admin/fai/class_faiPartitionTableEntry.inc:427 +#: admin/fai/class_faiPartitionTableEntry.inc:429 +#: admin/fai/class_faiPartitionTableEntry.inc:434 +#, fuzzy, php-format +msgid "partition %s size" +msgstr "分区" + +#: admin/fai/class_faiPartitionTableEntry.inc:449 +msgid "" +"You have more than 3 primary partition table entries in your configuration, " +"please check your configuration twice." +msgstr "在您的配置文件中,有超过 3 个主要分区表记录,请再次检查您的配置。" + +#: admin/fai/class_faiPartitionTableEntry.inc:461 +#, fuzzy +msgid "Partition table entry" +msgstr "分区表" + +#: admin/fai/class_faiPartitionTableEntry.inc:462 +#, fuzzy +msgid "FAI partition table entry" +msgstr "保存 FAI 分区表条目失败" + +#: admin/fai/class_faiPartitionTableEntry.inc:471 +#, fuzzy +msgid "Partition type" +msgstr "分区表" + +#: admin/fai/class_faiPartitionTableEntry.inc:472 +#, fuzzy +msgid "Partition no." +msgstr "分区" + +#: admin/fai/class_faiPartitionTableEntry.inc:473 +#, fuzzy +msgid "File system type" +msgstr "系统类型" + +#: admin/fai/class_faiPartitionTableEntry.inc:475 +#, fuzzy +msgid "Partition size" +msgstr "分区" + +#: admin/fai/class_faiPartitionTableEntry.inc:477 +#, fuzzy +msgid "File system options" +msgstr "查看系统信息" + +#: admin/fai/class_faiPartitionTableEntry.inc:478 +#, fuzzy +msgid "Partition flags" +msgstr "分区" + +#: admin/fai/faiVariable.tpl:36 admin/fai/faiScript.tpl:38 +#: admin/fai/faiHook.tpl:38 admin/fai/class_faiProfileEntry.inc:175 +#: admin/fai/faiTemplate.tpl:33 admin/fai/faiPartitionTable.tpl:36 +msgid "Objects" +msgstr "对象" + +#: admin/fai/faiVariable.tpl:38 +msgid "List of assigned variables" +msgstr "已分配变量列表" + +#: admin/fai/faiVariable.tpl:44 +msgid "Choose a variable to delete or edit" +msgstr "选择一个要删除或修改的变量" + +#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312 +#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54 +msgid "Edit" +msgstr "编辑" + +#: admin/fai/class_faiHook.inc:316 +msgid "Delete" +msgstr "删除" + +#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiTemplate.inc:300 +#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358 +#: admin/fai/class_faiScriptEntry.inc:88 admin/fai/class_faiHookEntry.inc:80 +msgid "Download" +msgstr "下载" + +#: admin/fai/class_faiHook.inc:553 admin/fai/class_divListFai.inc:64 +#, fuzzy +msgid "Hook" +msgstr "钩子" + +#: admin/fai/class_faiHook.inc:554 +#, fuzzy +msgid "FAI hook" +msgstr "显示 FAI 钩子" + +#: admin/fai/class_faiHook.inc:561 admin/fai/class_faiPartitionTable.inc:549 +#: admin/fai/class_faiVariable.inc:397 +#, fuzzy +msgid "Read only" +msgstr "读" + +#: admin/fai/faiProfile.tpl:36 admin/fai/class_faiProfile.inc:480 +msgid "FAI classes" +msgstr "自动化安装(FAI)类" + +#: admin/fai/faiProfile.tpl:37 +msgid "Choose a priority" +msgstr "选择一个优先级" + +#: admin/fai/faiScriptEntry.tpl:33 +msgid "Properties" +msgstr "属性" + +#: admin/fai/faiScriptEntry.tpl:33 admin/fai/faiScriptEntry.tpl:54 +msgid "Script attributes" +msgstr "脚本属性" + +#: admin/fai/faiScriptEntry.tpl:38 admin/fai/class_faiScript.inc:328 +msgid "Priority" +msgstr "优先级" + +#: admin/fai/faiScriptEntry.tpl:43 +msgid "" +"Choose a priority. Low values result in an earlier, high values in a later " +"execution." +msgstr "" + +#: admin/fai/faiScriptEntry.tpl:56 admin/fai/faiHookEntry.tpl:56 +#: admin/fai/class_faiScript.inc:637 admin/fai/class_faiScriptEntry.inc:150 +#: admin/fai/class_faiHookEntry.inc:158 admin/fai/class_divListFai.inc:62 +msgid "Script" +msgstr "脚本" + +#: admin/fai/faiScriptEntry.tpl:75 admin/fai/faiHookEntry.tpl:75 +msgid "Import script" +msgstr "导入脚本" + +#: admin/fai/faiScript.tpl:39 +msgid "List of scripts" +msgstr "脚本列表" + +#: admin/fai/faiPackage.tpl:33 +#: admin/systems/services/repository/servRepositorySetup.tpl:1 +#: admin/systems/services/repository/class_servRepository.inc:343 +msgid "Repository" +msgstr "仓库" + +#: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25 +#: admin/fai/class_faiPackage.inc:587 +#: admin/systems/services/repository/class_divListRepositories.inc:23 +#: admin/systems/services/repository/servRepositorySetup.tpl:19 +#: admin/systems/services/repository/class_servRepositorySetup.inc:153 +msgid "Release" +msgstr "发行" + +#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:584 +msgid "Section" +msgstr "节" + +#: admin/fai/faiPackage.tpl:53 +msgid "Install method" +msgstr "安装方法" + +#: admin/fai/faiPackage.tpl:57 +#, fuzzy +msgid "Please select the installation method" +msgstr "请选择一个有效文件。" + +#: admin/fai/faiPackage.tpl:71 +msgid "Used packages" +msgstr "使用软件包" + +#: admin/fai/faiHook.tpl:39 +msgid "List of hook scripts" +msgstr "钩子脚本列表" + +#: admin/fai/class_faiProfile.inc:289 admin/fai/class_faiProfileEntry.inc:172 +msgid "This list displays all assigned class names for this profile." +msgstr "这个列表显示该 profile 所有分配的类名。" + +#: admin/fai/class_faiProfile.inc:292 admin/fai/class_askClassName.inc:83 +#: admin/fai/class_faiProfileEntry.inc:138 +msgid "Hook bundle" +msgstr "Hook 集合" + +#: admin/fai/class_faiProfile.inc:293 admin/fai/class_askClassName.inc:85 +#: admin/fai/class_faiProfileEntry.inc:139 +msgid "Template bundle" +msgstr "模板集" + +#: admin/fai/class_faiProfile.inc:294 admin/fai/class_askClassName.inc:81 +#: admin/fai/class_faiProfileEntry.inc:140 +msgid "Script bundle" +msgstr "脚本集" + +#: admin/fai/class_faiProfile.inc:295 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_faiProfileEntry.inc:141 +msgid "Variable bundle" +msgstr "变量集" + +#: admin/fai/class_faiProfile.inc:296 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_faiProfileEntry.inc:142 +msgid "Package bundle" +msgstr "软件包集合" + +#: admin/fai/class_faiProfile.inc:297 admin/fai/class_askClassName.inc:79 +#: admin/fai/class_faiGroupHandle.inc:100 +#: admin/fai/class_faiProfileEntry.inc:143 +#: admin/fai/class_faiPartitionTable.inc:541 +#: admin/fai/class_divListFai.inc:154 admin/fai/class_divListFai.inc:208 +#: admin/fai/class_faiSummaryTab.inc:48 +msgid "Partition table" +msgstr "分区表" + +#: admin/fai/class_faiProfile.inc:300 +msgid "Remove class from profile" +msgstr "从 profile 中删除分类" + +#: admin/fai/class_faiProfile.inc:303 +msgid "Up" +msgstr "上" + +#: admin/fai/class_faiProfile.inc:304 +msgid "Down" +msgstr "关闭" + +#: admin/fai/class_faiProfile.inc:391 +msgid "No class specified for this profile!" +msgstr "" + +#: admin/fai/class_faiProfile.inc:470 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_divListFai.inc:58 +#: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218 +#, fuzzy +msgid "Profile" +msgstr "Profiles" + +#: admin/fai/class_faiProfile.inc:471 +#, fuzzy +msgid "FAI profile" +msgstr "新配置" + +#: admin/fai/faiPartitionTableEntry.tpl:2 +msgid "Device" +msgstr "设备" + +#: admin/fai/faiPartitionTableEntry.tpl:24 +msgid "Partition entries" +msgstr "分区条目" + +#: admin/fai/faiPartitionTableEntry.tpl:29 +#: admin/fai/faiPartitionTableEntry.tpl:31 +msgid "Add partition" +msgstr "添加分区" + +#: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54 +msgid "Hook attributes" +msgstr "钩子属性" + +#: admin/fai/faiHookEntry.tpl:38 admin/fai/class_faiHookEntry.inc:198 +msgid "Task" +msgstr "任务" + +#: admin/fai/faiHookEntry.tpl:41 +msgid "Choose an existing FAI task" +msgstr "选择一个已存在的 FAI 任务" + +#: admin/fai/faiPackageEntry.tpl:6 +msgid "List of available packages" +msgstr "可用软件包列表" + +#: admin/fai/faiPackageEntry.tpl:20 admin/fai/faiProfileEntry.tpl:21 +msgid "Information" +msgstr "提示信息" + +#: admin/fai/faiPackageEntry.tpl:24 +msgid "" +"This menu allows you to select multiple packages to add them to the " +"currently edited package list." +msgstr "这个菜单允许您为当前编辑的软件包列表添加多个软件包。" + +#: admin/fai/faiPackageEntry.tpl:30 admin/fai/faiProfileEntry.tpl:31 +msgid "Filters" +msgstr "过滤器" + +#: admin/fai/faiPackageEntry.tpl:40 admin/fai/faiProfileEntry.tpl:54 +#: admin/fai/faiProfileEntry.tpl:55 +msgid "Display objects matching" +msgstr "显示匹配对象" + +#: admin/fai/faiPackageEntry.tpl:44 admin/fai/faiProfileEntry.tpl:59 +#: admin/systems/services/repository/class_divListRepositories.inc:26 +msgid "Regular expression for matching object names" +msgstr "匹配对象名的正则表达式" + +#: admin/fai/class_faiManagement.inc:25 admin/fai/main.inc:53 +#: admin/fai/main.inc:55 +msgid "Software deployment" +msgstr "" + +#: admin/fai/class_faiManagement.inc:26 +msgid "Manage software packages and deployment reciepes" +msgstr "" + +#: admin/fai/class_faiManagement.inc:338 admin/fai/class_faiManagement.inc:495 +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 admin/fai/class_faiManagement.inc:869 +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "Permission error" +msgstr "允许" + +#: admin/fai/class_faiManagement.inc:384 +#, fuzzy +msgid "Branch locked" +msgstr "分支" + +#: admin/fai/class_faiManagement.inc:384 +#, php-format +msgid "The following entries are locked, you can't remove them %s." +msgstr "" + +#: admin/fai/class_faiManagement.inc:400 +#, fuzzy +msgid "FAI object" +msgstr "自动化安装(FAI)对象树" + +#: admin/fai/class_faiManagement.inc:492 +msgid "FAI branch/freeze" +msgstr "" + +#: admin/fai/class_faiManagement.inc:495 +#, fuzzy +msgid "You have no permission to delete this release!" +msgstr "您无权删除这个发行版!" + +#: admin/fai/class_faiManagement.inc:513 +msgid "Release remove aborted because the release name check failed!" +msgstr "" + +#: admin/fai/class_faiManagement.inc:642 admin/fai/class_faiManagement.inc:804 +#: admin/fai/class_faiManagement.inc:825 +#, fuzzy +msgid "Branch" +msgstr "分支" + +#: admin/fai/class_faiManagement.inc:750 +#: admin/fai/class_faiManagement.inc:1025 +#: admin/fai/class_faiManagement.inc:1031 +msgid "Continue" +msgstr "继续" + +#: admin/fai/class_faiManagement.inc:781 +#: admin/fai/class_faiPackageEntry.inc:53 +#: admin/fai/class_faiPackageEntry.inc:193 admin/fai/class_FAI.inc:553 +#: admin/fai/class_faiPackageConfiguration.inc:35 +#: admin/fai/class_faiPackage.inc:478 +#: admin/systems/services/repository/class_servRepository.inc:326 +#, fuzzy +msgid "Service infrastructure" +msgstr "在子树中查找" + +#: admin/fai/class_faiManagement.inc:786 admin/fai/class_FAI.inc:1157 +#, fuzzy +msgid "Fatal error" +msgstr "终端服务器" + +#: admin/fai/class_faiManagement.inc:846 +#, fuzzy +msgid "partition table" +msgstr "分区表" + +#: admin/fai/class_faiManagement.inc:847 +#, fuzzy +msgid "script" +msgstr "脚本" + +#: admin/fai/class_faiManagement.inc:848 +#, fuzzy +msgid "hook" +msgstr "钩子" + +#: admin/fai/class_faiManagement.inc:849 +#, fuzzy +msgid "variable" +msgstr "变量" + +#: admin/fai/class_faiManagement.inc:850 +#, fuzzy +msgid "template" +msgstr "模板" + +#: admin/fai/class_faiManagement.inc:851 +#, fuzzy +msgid "package list" +msgstr "软件包列表" + +#: admin/fai/class_faiManagement.inc:869 admin/fai/class_faiManagement.inc:886 +#, fuzzy, php-format +msgid "You have no permission to create a new %s!" +msgstr "您无权删除这个对象组!" + +#: admin/fai/class_faiManagement.inc:886 +#, fuzzy +msgid "profile" +msgstr "Profiles" + +#: admin/fai/class_faiManagement.inc:1286 +msgid "" +"The selected release is not available anymore. All triggered actions are " +"skipped." +msgstr "" + +#: admin/fai/class_faiManagement.inc:1411 +#, fuzzy +msgid "FAI releases" +msgstr "自动化安装(FAI)类" + +#: admin/fai/class_faiManagement.inc:1412 +#, fuzzy +msgid "FAI release management" +msgstr "Asterisk 管理" + +#: admin/fai/class_faiManagement.inc:1417 +msgid "FAI" +msgstr "自动化安装" + +#: admin/fai/class_faiVariableEntry.inc:94 +#, fuzzy +msgid "Content" +msgstr "继续" + +#: admin/fai/class_faiVariableEntry.inc:129 +#, fuzzy +msgid "Variable entry" +msgstr "变量内容" + +#: admin/fai/class_faiVariableEntry.inc:130 +#, fuzzy +msgid "FAI variable entry " +msgstr "变量内容" + +#: admin/fai/class_faiVariableEntry.inc:139 admin/fai/faiVariableEntry.tpl:38 +msgid "Variable content" +msgstr "变量内容" + +#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288 +#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346 +msgid "edit" +msgstr "编辑" + +#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348 +msgid "delete" +msgstr "删除" + +#: admin/fai/class_faiTemplate.inc:536 +msgid "Template" +msgstr "模板" + +#: admin/fai/class_faiTemplate.inc:537 +#, fuzzy +msgid "FAI template" +msgstr "新模板" + +#: admin/fai/class_faiTemplate.inc:544 admin/fai/class_faiScript.inc:645 +#: admin/fai/class_faiPackage.inc:584 admin/fai/class_faiPackage.inc:587 +#, fuzzy +msgid "Readonly" +msgstr "读" + +#: admin/fai/class_faiPackageEntry.inc:38 +msgid "Please enter your search string here" +msgstr "请在这里输入您的查询字符串" + +#: admin/fai/class_faiPackageEntry.inc:103 +msgid "" +"This list displays all assigned package names for this repository settings." +msgstr "对于该仓库的设置,这个列表显示所有已分配的软件包名称。" + +#: admin/fai/paste_generic.tpl:1 +#, fuzzy +msgid "FAI settings" +msgstr "自动化安装(FAI)类" + +#: admin/fai/paste_generic.tpl:5 admin/fai/class_faiProfileEntry.inc:174 +#: admin/fai/askClassName.tpl:32 admin/fai/askClassName.tpl:54 +#: admin/fai/class_divListFai.inc:53 +msgid "Class name" +msgstr "类名" + +#: admin/fai/remove_branch.tpl:6 +msgid "" +"This includes all account data, system access, etc. for this branch. Please " +"double check if your really want to do this since there is no way for GOsa " +"to get your data back." +msgstr "" +"这个分支包含所有账号信息,系统访问等等。请再次检查您是否要这么做,因为 GOsa " +"没有办法将您的数据找回。" + +#: admin/fai/remove_branch.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "所以,如果您确定,请按“删除”继续,否则按“取消”退出。" + +#: admin/fai/faiProfileEntry.tpl:6 +msgid "List of FAI objects (Fully Automatic Installation)" +msgstr "FAI (全自动安装)对象列表" + +#: admin/fai/faiProfileEntry.tpl:26 +msgid "" +"This menu allows you to select FAI class names and to add them to the " +"currently edited profile." +msgstr "这个菜单允许您为当前编辑的配置添加 FAI 类名。" + +#: admin/fai/faiProfileEntry.tpl:39 +msgid "Show only classes with templates" +msgstr "只显示带有模板的分类" + +#: admin/fai/faiProfileEntry.tpl:41 +msgid "Show only classes with scripts" +msgstr "只显示带有脚本的分类" + +#: admin/fai/faiProfileEntry.tpl:43 +msgid "Show only classes with hooks" +msgstr "只显示带有钩子的分类" + +#: admin/fai/faiProfileEntry.tpl:45 +msgid "Show only classes with variables" +msgstr "只显示带有变量的分类" + +#: admin/fai/faiProfileEntry.tpl:47 +msgid "Show only classes with packages" +msgstr "只显示带有软件包的分类" + +#: admin/fai/faiProfileEntry.tpl:49 +msgid "Show only classes with partitions" +msgstr "只显示带有分区的分类" + +#: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80 +#: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82 +#: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84 +#: admin/fai/class_askClassName.inc:85 admin/fai/class_askClassName.inc:86 +msgid "Create new FAI object" +msgstr "创建新 FAI 对象" + +#: admin/fai/class_faiGroupHandle.inc:102 admin/fai/class_divListFai.inc:164 +#: admin/fai/class_divListFai.inc:210 admin/fai/class_faiSummaryTab.inc:49 +msgid "Package list" +msgstr "软件包列表" + +#: admin/fai/class_faiGroupHandle.inc:104 admin/fai/class_divListFai.inc:156 +#: admin/fai/class_divListFai.inc:212 admin/fai/class_faiSummaryTab.inc:44 +msgid "Scripts" +msgstr "脚本" + +#: admin/fai/class_faiGroupHandle.inc:106 admin/fai/class_divListFai.inc:160 +#: admin/fai/class_divListFai.inc:214 admin/fai/class_faiSummaryTab.inc:46 +msgid "Variables" +msgstr "变量" + +#: admin/fai/class_faiGroupHandle.inc:108 admin/fai/class_divListFai.inc:158 +#: admin/fai/class_divListFai.inc:216 admin/fai/class_faiSummaryTab.inc:45 +msgid "Hooks" +msgstr "钩子" + +#: admin/fai/class_faiGroupHandle.inc:112 admin/fai/class_divListFai.inc:220 +#: admin/fai/class_faiSummaryTab.inc:47 +msgid "Templates" +msgstr "模板" + +#: admin/fai/class_faiGroupHandle.inc:114 admin/fai/class_divListFai.inc:76 +#: admin/fai/class_divListFai.inc:222 +msgid "OPSI netboot product" +msgstr "" + +#: admin/fai/class_faiGroupHandle.inc:116 +msgid "OPSI local product" +msgstr "" + +#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68 +#: admin/fai/class_faiPackage.inc:573 +msgid "Package" +msgstr "软件包" + +#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316 +#, fuzzy +msgid "Sort direction" +msgstr "节" + +#: admin/fai/class_faiScript.inc:332 +msgid "Action" +msgstr "行动" + +#: admin/fai/class_faiScript.inc:638 admin/fai/class_faiHookEntry.inc:199 +#, fuzzy +msgid "FAI script" +msgstr "导入脚本" + +#: admin/fai/class_FAI.inc:259 admin/fai/class_FAI.inc:662 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/fai/class_FAI.inc:535 +#, php-format +msgid "Error, following objects should be equal '%s' and '%s'" +msgstr "" + +#: admin/fai/class_FAI.inc:874 +#, php-format +msgid "Creating group application release for %s" +msgstr "" + +#: admin/fai/class_FAI.inc:943 admin/fai/class_FAI.inc:965 +#: admin/fai/class_FAI.inc:1005 admin/fai/class_FAI.inc:1010 +#: admin/fai/class_FAI.inc:1048 +msgid "Object" +msgstr "对象" + +#: admin/fai/class_FAI.inc:944 +#, php-format +msgid "Adding missing group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:966 +#, php-format +msgid "Adding group application release container %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1006 +#, fuzzy, php-format +msgid "Could not create menu entry %s. (Already exists)." +msgstr "无法创建 '%s',目标名称已经存在。" + +#: admin/fai/class_FAI.inc:1011 +#, php-format +msgid "Created group application menu entry for %s." +msgstr "" + +#: admin/fai/class_FAI.inc:1042 +#, php-format +msgid "Creating copy of %s" +msgstr "创建 %s 的拷贝" + +#: admin/fai/class_FAI.inc:1045 +msgid "Processing" +msgstr "处理" + +#: admin/fai/class_FAI.inc:1063 +#, fuzzy +msgid "Could not create new release, the destination dn is already in use." +msgstr "无法创建 '%s',目标名称已经存在。" + +#: admin/fai/class_FAI.inc:1076 +msgid "Error while fetching source dn - aborted!" +msgstr "当获取源 dn 时错误──退出!" + +#: admin/fai/class_FAI.inc:1158 +#, php-format +msgid "" +"Release creation failed due to ldap errors. Additional informations '%s'." +msgstr "" + +#: admin/fai/class_faiScriptEntry.inc:62 admin/fai/class_faiHookEntry.inc:65 +#, fuzzy +msgid "file is empty" +msgstr "选择的文件为空。" + +#: admin/fai/class_faiScriptEntry.inc:181 +#: admin/fai/class_faiScriptEntry.inc:191 +#, fuzzy +msgid "Script entry" +msgstr "编辑记录" + +#: admin/fai/class_faiScriptEntry.inc:182 +#, fuzzy +msgid "FAI script entry" +msgstr "编辑记录" + +#: admin/fai/class_faiScriptEntry.inc:192 +#, fuzzy +msgid "Script Priority" +msgstr "优先级" + +#: admin/fai/faiSummary.tpl:4 +msgid "FAI object tree" +msgstr "自动化安装(FAI)对象树" + +#: admin/fai/faiSummary.tpl:11 +msgid "Reload class and release configuration from parent object." +msgstr "从父类重新加载类和发行版配置。" + +#: admin/fai/faiSummary.tpl:22 +#, fuzzy +msgid "You are not allowed to view the fai summary." +msgstr "您无权删除这个宏!" + +#: admin/fai/faiTemplate.tpl:34 +msgid "List of template files" +msgstr "模板文件列表" + +#: admin/fai/class_faiPartitionTable.inc:301 +#: admin/fai/class_faiPartitionTable.inc:307 +#, php-format +msgid "%s partition" +msgstr "%s 分区" + +#: admin/fai/class_faiPartitionTable.inc:303 +#: admin/fai/class_faiPartitionTable.inc:309 +#, php-format +msgid "%s partition(s)" +msgstr "%s 分区" + +#: admin/fai/class_faiPartitionTable.inc:542 +#, fuzzy +msgid "FAI partition table" +msgstr "新分区表" + +#: admin/fai/branch_selector.tpl:2 +#: admin/systems/services/repository/class_servRepository.inc:358 +#, fuzzy +msgid "Releases" +msgstr "发行" + +#: admin/fai/branch_selector.tpl:8 +msgid "Current release" +msgstr "当前版本" + +#: admin/fai/branch_selector.tpl:20 admin/fai/branch_selector.tpl:26 +#, fuzzy +msgid "Create release" +msgstr "当前版本" + +#: admin/fai/branch_selector.tpl:23 admin/fai/branch_selector.tpl:29 +#, fuzzy +msgid "Create read-only release" +msgstr "当前版本" + +#: admin/fai/branch_selector.tpl:28 +#, fuzzy +msgid "Freeze" +msgstr "频率" + +#: admin/fai/branch_selector.tpl:35 +msgid "Delete current release" +msgstr "删除当前版本" + +#: admin/fai/faiVariableEntry.tpl:33 +msgid "Variable attributes" +msgstr "变量属性" + +#: admin/fai/class_faiHookEntry.inc:188 +#, fuzzy +msgid "Hook entry" +msgstr "删除记录" + +#: admin/fai/class_faiHookEntry.inc:189 +#, fuzzy +msgid "FAI hook entry" +msgstr "添加记录" + +#: admin/fai/faiNewBranch.tpl:5 +msgid "" +"You are now going to create a branch or locked branch. This action clones " +"the existing release to another release name. Branches can be modified as " +"usual. FAI classes of locked branches cannot be modified, just additional " +"classes are possible. Branch names should be alphanumeric, excluding the " +"reserved names 'scripts', 'hooks', 'partitions', 'variables', 'templates' " +"and 'fai'." +msgstr "" +"您现在将创建一个分支或者锁定分支。这个动作将现存的发行版克隆为另外的名字。分" +"支可以正常编辑。锁定分支的FAI 分类无法编辑,只是另外的分类可以。分支名字由字" +"母数字组成,保留字除外,如 'scripts', 'hooks', 'partitions', 'variables', " +"'templates' 和 'fai'。" + +#: admin/fai/faiNewBranch.tpl:7 +msgid "" +"Branches are created as subreleases of the currently selected branch. " +"Creating a new branch named 1.0.2 in SARGE for example, will result in a new " +"release called SARGE/1.0.2." +msgstr "" +"分支作为当前所选分支的子发行版被创建。例如在 SARGE 中创建一个名为 1.0.2 的新" +"分支,将会产生一个新分支名为 SARGE/1.0.2。" + +#: admin/fai/faiNewBranch.tpl:13 +msgid "Please enter a name for the branch" +msgstr "请为该分支输入一个名称" + +#: admin/fai/faiNewBranch.tpl:34 +msgid "Processing the requested operation" +msgstr "处理请求的操作" + +#: admin/fai/faiNewBranch.tpl:35 +msgid "" +"As soon as the copy operation has finished, you can scroll down to end of " +"the page and press the 'Continue' button to continue with the fai management " +"dialog." +msgstr "" +"一旦拷贝完成,您可以滚动页面到最下端,按“继续”按钮继续 fai 管理对话框。" + +#: admin/fai/faiNewBranch.tpl:41 +msgid "" +"Your browser doesn't support iframes, please use this link to perform the " +"requested operation." +msgstr "您的浏览器不支持 iframe,请使用这个链接来执行请求的操作。" + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Perform requested operation." +msgstr "执行请求的操作。" + +#: admin/fai/faiNewBranch.tpl:43 +msgid "Initiate operation" +msgstr "初始操作" + +#: admin/fai/askClassName.tpl:6 +msgid "" +"Adding a new class to the FAI management, requires a class name. You have to " +"specify a unique class name for unique types of FAI classes, while you can " +"use the same class name for different types of FAI classes. In the laste " +"case, FAI will automatically enclose all these different class types to one " +"unique class name." +msgstr "" +"在 FAI 管理中添加一个新分类,需要一个分类名。您必须为唯一的 FAI 分类提供一个" +"唯一类名,而您可以为不同的 FAI 分类使用相同的类名。在最后一种情况,FAI 会自动" +"包含所有不同分类类型到唯一一个类名中。" + +#: admin/fai/askClassName.tpl:12 +msgid "" +"Please use one of the following methods to choose the name for the new FAI " +"class." +msgstr "请使用下面的一个方法来选择新 FAI 分类的名称。" + +#: admin/fai/askClassName.tpl:26 +msgid "Enter FAI class name manually" +msgstr "手工输入 FAI 分类名称" + +#: admin/fai/askClassName.tpl:48 +msgid "Choose FAI class name from a list of existing classes" +msgstr "从现存类的列表中选择一个 FAI 分类名称" + +#: admin/fai/askClassName.tpl:54 +msgid "Choose class name" +msgstr "选择分类名" + +#: admin/fai/askClassName.tpl:70 admin/fai/askClassName.tpl:77 +msgid "Use" +msgstr "使用" + +#: admin/fai/askClassName.tpl:74 +msgid "A new class name." +msgstr "一个新类名称。" + +#: admin/fai/class_faiPackageConfiguration.inc:68 +#, php-format +msgid "Debconf information for package '%s'" +msgstr "软件包'%s' 的 Debconf 信息" + +#: admin/fai/class_faiVariable.inc:389 admin/fai/class_divListFai.inc:60 +#: admin/fai/class_divListFai.inc:66 +msgid "Variable" +msgstr "变量" + +#: admin/fai/class_faiVariable.inc:390 +#, fuzzy +msgid "FAI variable" +msgstr "显示 FAI 变量" + +#: admin/fai/class_divListFai.inc:32 +#, fuzzy +msgid "List of classes" +msgstr "FAI 类列表" + +#: admin/fai/class_divListFai.inc:33 +#, fuzzy +msgid "List of deployment classes and products" +msgstr "只显示带有软件包的分类" + +#: admin/fai/class_divListFai.inc:48 +#, fuzzy +msgid "Select all" +msgstr "选择" + +#: admin/fai/class_divListFai.inc:54 +#, fuzzy +msgid "Class types" +msgstr "分类类型" + +#: admin/fai/class_divListFai.inc:55 admin/fai/class_divListFai.inc:138 +msgid "Actions" +msgstr "动作" + +#: admin/fai/class_divListFai.inc:57 admin/fai/class_divListFai.inc:59 +#: admin/fai/class_divListFai.inc:61 admin/fai/class_divListFai.inc:63 +#: admin/fai/class_divListFai.inc:65 admin/fai/class_divListFai.inc:67 +#: admin/fai/class_divListFai.inc:69 admin/fai/class_divListFai.inc:75 +#: admin/fai/class_divListFai.inc:77 +#, fuzzy, php-format +msgid "Display objects of type '%s'." +msgstr "显示匹配对象" + +#: admin/fai/class_divListFai.inc:58 +msgid "Show profiles" +msgstr "显示 profiles" + +#: admin/fai/class_divListFai.inc:60 +msgid "Show templates" +msgstr "显示模板" + +#: admin/fai/class_divListFai.inc:62 +msgid "Show scripts" +msgstr "显示脚本" + +#: admin/fai/class_divListFai.inc:64 +msgid "Show hooks" +msgstr "显示钩子" + +#: admin/fai/class_divListFai.inc:66 +msgid "Show variables" +msgstr "显示变量" + +#: admin/fai/class_divListFai.inc:68 +msgid "Show packages" +msgstr "显示软件包" + +#: admin/fai/class_divListFai.inc:70 +#, fuzzy +msgid "Partition" +msgstr "分区" + +#: admin/fai/class_divListFai.inc:70 +msgid "Show partitions" +msgstr "显示分区" + +#: admin/fai/class_divListFai.inc:76 +#, fuzzy +msgid "Show netboot products" +msgstr "对象组" + +#: admin/fai/class_divListFai.inc:78 admin/fai/class_divListFai.inc:224 +#, fuzzy +msgid "OPSI localboot product" +msgstr "对象组" + +#: admin/fai/class_divListFai.inc:78 +#, fuzzy +msgid "Show localboot products" +msgstr "对象组" + +#: admin/fai/class_divListFai.inc:86 +msgid "Display users matching" +msgstr "显示匹配的用户" + +#: admin/fai/class_divListFai.inc:140 +msgid "Create" +msgstr "创建" + +#: admin/fai/class_divListFai.inc:155 +msgid "PT" +msgstr "PT" + +#: admin/fai/class_divListFai.inc:157 +msgid "S" +msgstr "S" + +#: admin/fai/class_divListFai.inc:159 +msgid "H" +msgstr "H" + +#: admin/fai/class_divListFai.inc:161 +msgid "V" +msgstr "V" + +#: admin/fai/class_divListFai.inc:162 +#, fuzzy +msgid "Templates " +msgstr "模板" + +#: admin/fai/class_divListFai.inc:163 +#, fuzzy +msgid "I" +msgstr "NI" + +#: admin/fai/class_divListFai.inc:165 +msgid "PK" +msgstr "PK" + +#: admin/fai/class_divListFai.inc:313 admin/fai/class_divListFai.inc:314 +#: admin/fai/class_divListFai.inc:315 admin/fai/class_divListFai.inc:316 +#: admin/fai/class_divListFai.inc:317 admin/fai/class_divListFai.inc:318 +#: admin/fai/class_divListFai.inc:319 admin/fai/class_divListFai.inc:320 +#: admin/fai/class_divListFai.inc:321 admin/fai/class_divListFai.inc:322 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "部门名称" + +#: admin/fai/class_divListFai.inc:313 +#, fuzzy +msgid "profiles" +msgstr "Profiles" + +#: admin/fai/class_divListFai.inc:314 +#, fuzzy +msgid "partitions" +msgstr "%s 分区" + +#: admin/fai/class_divListFai.inc:315 +#, fuzzy +msgid "scripts" +msgstr "脚本" + +#: admin/fai/class_divListFai.inc:316 +#, fuzzy +msgid "hooks" +msgstr "钩子" + +#: admin/fai/class_divListFai.inc:317 +#, fuzzy +msgid "variables" +msgstr "变量" + +#: admin/fai/class_divListFai.inc:318 +#, fuzzy +msgid "templates" +msgstr "模板" + +#: admin/fai/class_divListFai.inc:319 +#, fuzzy +msgid "packages" +msgstr "软件包" + +#: admin/fai/class_divListFai.inc:320 +#, fuzzy +msgid "departments" +msgstr "提交部门" + +#: admin/fai/class_divListFai.inc:321 +#, fuzzy +msgid "netboot products" +msgstr "对象组" + +#: admin/fai/class_divListFai.inc:322 +#, fuzzy +msgid "localboot products" +msgstr "对象组" + +#: admin/fai/class_faiPackage.inc:329 admin/fai/class_faiPackage.inc:330 +#, fuzzy +msgid "Configured" +msgstr "配置" + +#: admin/fai/class_faiPackage.inc:336 admin/fai/class_faiPackage.inc:337 +msgid "Package marked for removal" +msgstr "软件包标记为删除" + +#: admin/fai/class_faiPackage.inc:353 +#, fuzzy +msgid "Mark package for removal" +msgstr "软件包标记为删除" + +#: admin/fai/class_faiPackage.inc:359 +msgid "Configure this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:363 +msgid "Remove this package" +msgstr "" + +#: admin/fai/class_faiPackage.inc:442 +#, fuzzy +msgid "Please select a least one package!" +msgstr "请选择至少一个软件包。" + +#: admin/fai/class_faiPackage.inc:446 +#, fuzzy +msgid "" +"Please choose a valid release/section combination for your repository setup!" +msgstr "请为您仓库的设置选择一个有效的组合。" + +#: admin/fai/class_faiPackage.inc:574 +#, fuzzy +msgid "FAI Package list" +msgstr "软件包列表" + +#: admin/fai/class_faiPackage.inc:583 +msgid "Packages" +msgstr "软件包" + +#: admin/fai/class_faiPackage.inc:585 +#, fuzzy +msgid "Install Method" +msgstr "安装方法" + +#: admin/fai/class_faiPackage.inc:586 +#, fuzzy +msgid "Package configuration" +msgstr "Schema 配置" + +#: admin/fai/class_faiTemplateEntry.inc:90 +msgid "no file uploaded yet" +msgstr "还没有上传文件" + +#: admin/fai/class_faiTemplateEntry.inc:96 +#, php-format +msgid "exists in database (size: %s bytes)" +msgstr "存在于数据库 (大小: %s 字节)" + +#: admin/fai/class_faiTemplateEntry.inc:265 +#, fuzzy +msgid "Template entry" +msgstr "模板用户" + +#: admin/fai/class_faiTemplateEntry.inc:266 +#, fuzzy +msgid "FAI template entry" +msgstr "创建 FAI template 条目失败" + +#: admin/fai/class_faiTemplateEntry.inc:275 +#, fuzzy +msgid "Template file" +msgstr "模板集" + +#: admin/fai/class_faiTemplateEntry.inc:276 +#, fuzzy +msgid "Template path" +msgstr "模板名称" + +#: admin/fai/class_faiTemplateEntry.inc:277 +#, fuzzy +msgid "File owner" +msgstr "文件名" + +#: admin/fai/class_faiTemplateEntry.inc:278 +#, fuzzy +msgid "File permissions" +msgstr "允许" + +#: admin/fai/class_faiSummaryTab.inc:50 +msgid "Profiles" +msgstr "Profiles" + +#: admin/fai/class_faiSummaryTab.inc:89 +msgid "Unknown FAI information source!" +msgstr "" + +#: admin/fai/class_faiSummaryTab.inc:178 +#: admin/systems/services/repository/class_servRepository.inc:93 +msgid "You can't use this plugin until FAI is activated." +msgstr "直到激活 FAI,您不能使用这个插件。" + +#: admin/fai/class_faiSummaryTab.inc:220 +msgid "This object has no FAI classes assigned." +msgstr "这个对象没有分配 FAI 类。" + +#: admin/fai/class_faiSummaryTab.inc:233 +msgid "Open" +msgstr "打开" + +#: admin/fai/class_faiSummaryTab.inc:239 +msgid "Close" +msgstr "关闭" + +#: admin/fai/class_faiSummaryTab.inc:342 +msgid "No." +msgstr "编号" + +#: admin/fai/class_faiSummaryTab.inc:344 +msgid "FS options" +msgstr "文件系统选项" + +#: admin/fai/faiPartitionTable.tpl:38 +msgid "Discs" +msgstr "Discs" + +#: admin/fai/faiPartitionTable.tpl:44 +msgid "Choose a disk to delete or edit" +msgstr "选择一个要删除或修改的磁盘" + +#: admin/fai/class_debconfTemplate.inc:207 +msgid "This package has no debconf options." +msgstr "这个软件包没有 debconf 选项。" + +#: admin/systems/services/repository/class_divListRepositories.inc:19 +#, fuzzy +msgid "List of configured repositories" +msgstr "用户列表" + +#: admin/systems/services/repository/class_divListRepositories.inc:20 +#, fuzzy +msgid "This menu allows you to create, delete and edit repository settings." +msgstr "这个菜单允许您创建,删除和修改 FAI 分类。" + +#: admin/systems/services/repository/class_divListRepositories.inc:24 +#: admin/systems/services/repository/class_divListRepositories.inc:64 +#: admin/systems/services/repository/servRepositorySetup.tpl:39 +#: admin/systems/services/repository/class_servRepository.inc:360 +#, fuzzy +msgid "Sections" +msgstr "节" + +#: admin/systems/services/repository/class_divListRepositories.inc:25 +msgid "Options" +msgstr "选项" + +#: admin/systems/services/repository/class_divListRepositories.inc:33 +#, fuzzy +msgid "Add repository" +msgstr "目录" + +#: admin/systems/services/repository/servRepositorySetup.tpl:8 +#: admin/systems/services/repository/class_servRepository.inc:357 +#, fuzzy +msgid "Parent server" +msgstr "保留" + +#: admin/systems/services/repository/servRepositorySetup.tpl:28 +#: admin/systems/services/repository/class_servRepository.inc:359 +#: admin/systems/services/repository/class_servRepositorySetup.inc:157 +msgid "URL" +msgstr "" + +#: admin/systems/services/repository/class_servRepository.inc:26 +#: admin/systems/services/repository/class_servRepository.inc:308 +#: admin/systems/services/repository/class_servRepository.inc:344 +#: admin/systems/services/repository/class_servRepositorySetup.inc:204 +#, fuzzy +msgid "Repository service" +msgstr "仓库" + +#: admin/systems/services/repository/class_servRepository.inc:142 +#, fuzzy +msgid "FAI release" +msgstr "自动化安装(FAI)类" + +#: admin/systems/services/repository/class_servRepository.inc:344 +msgid "Services" +msgstr "服务" + +#, fuzzy +#~ msgid "Deployment status" +#~ msgstr "当前版本" + +#, fuzzy +#~ msgid "System deployment status" +#~ msgstr "系统管理" + +#, fuzzy +#~ msgid "Permission" +#~ msgstr "允许" + +#, fuzzy +#~ msgid "" +#~ "This menu allows you to remove and change the properties of GOsa tasks." +#~ msgstr "" +#~ "这个菜单允许您添加,删除和修改所选系统的属性。您只能添加已经启动过一次的系" +#~ "统。" + +#, fuzzy +#~ msgid "List of queued jobs" +#~ msgstr "部门列表" + +#~ msgid "Import" +#~ msgstr "导入" + +#, fuzzy +#~ msgid "Resume" +#~ msgstr "删除" + +#, fuzzy +#~ msgid "Pause" +#~ msgstr "粘贴" + +#, fuzzy +#~ msgid "Abort" +#~ msgstr "端口" + +#, fuzzy +#~ msgid "Reload" +#~ msgstr "读" + +#, fuzzy +#~ msgid "Target" +#~ msgstr "芯片组" + +#, fuzzy +#~ msgid "Schedule" +#~ msgstr "PHPscheduleit" + +#~ msgid "Status" +#~ msgstr "状态" + +#, fuzzy +#~ msgid "Move up" +#~ msgstr "模式" + +#, fuzzy +#~ msgid "Move down" +#~ msgstr "模式" + +#, fuzzy +#~ msgid "Execute now" +#~ msgstr "执行" + +#, fuzzy +#~ msgid "Abort job" +#~ msgstr "端口" + +#, fuzzy +#~ msgid "Waiting" +#~ msgstr "警告" + +#, fuzzy +#~ msgid "Processed" +#~ msgstr "处理" + +#, fuzzy +#~ msgid "Detection" +#~ msgstr "节" + +#, fuzzy +#~ msgid "Cannot update queue entry: %s" +#~ msgstr "未知 FAIstate %s" + +#, fuzzy +#~ msgid "Cannot load queue entries: %s" +#~ msgstr "未知 FAIstate %s" + +#, fuzzy +#~ msgid "System deployment" +#~ msgstr "系统管理" + +#, fuzzy +#~ msgid "System list" +#~ msgstr "信赖的系统" + +#, fuzzy +#~ msgid "ID" +#~ msgstr "GID" + +#, fuzzy +#~ msgid "Timestamp" +#~ msgstr "过期" + +#, fuzzy +#~ msgid "Targets" +#~ msgstr "芯片组" + +#, fuzzy +#~ msgid "System / Department" +#~ msgstr "部门" + +#, fuzzy +#~ msgid "Display users" +#~ msgstr "显示匹配的用户" + +#, fuzzy +#~ msgid "Display groups" +#~ msgstr "显示用户组" + +#~ msgid "Base" +#~ msgstr "位置" + +#~ msgid "Submit department" +#~ msgstr "提交部门" + +#~ msgid "Submit" +#~ msgstr "提交" + +#, fuzzy +#~ msgid "Abort installation" +#~ msgstr "Windows 工作站" + +#, fuzzy +#~ msgid "Reload GOto settings" +#~ msgstr "Posix 设置" + +#, fuzzy +#~ msgid "System analysis" +#~ msgstr "系统" + +#, fuzzy +#~ msgid "Installation activation" +#~ msgstr "Windows 工作站" + +#, fuzzy +#~ msgid "Reload LDAP config" +#~ msgstr "重新加载列表" + +#, fuzzy +#~ msgid "Time schedule" +#~ msgstr "PHPscheduleit" + +#, fuzzy +#~ msgid "Year" +#~ msgstr "查找" + +#, fuzzy +#~ msgid "Month" +#~ msgstr "月" + +#, fuzzy +#~ msgid "Day" +#~ msgstr "五月" + +#~ msgid "Hour" +#~ msgstr "小时" + +#, fuzzy +#~ msgid "Minute" +#~ msgstr "打印机" + +#, fuzzy +#~ msgid "Second" +#~ msgstr "节" + +#, fuzzy +#~ msgid "Reload fai release db" +#~ msgstr "上传" + +#, fuzzy +#~ msgid "Send message" +#~ msgstr "挂起邮件" + +#, fuzzy +#~ msgid "Subject" +#~ msgstr "对象" + +#~ msgid "Message" +#~ msgstr "信息" + +#, fuzzy +#~ msgid "Create '%s' job" +#~ msgstr "创建新 FAI 对象" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Apply" +#~ msgstr "应用" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#, fuzzy +#~ msgid "Display server" +#~ msgstr "显示名称" + +#, fuzzy +#~ msgid "Display workstation" +#~ msgstr "工作站" + +#, fuzzy +#~ msgid "Display object groups" +#~ msgstr "对象组列表" + +#~ msgid "Server" +#~ msgstr "服务器" + +#~ msgid "Workstation" +#~ msgstr "工作站" + +#~ msgid "Object group" +#~ msgstr "对象组" + +#, fuzzy +#~ msgid "Activate new" +#~ msgstr "活动" + +#, fuzzy +#~ msgid "Progress" +#~ msgstr "处理" + +#, fuzzy +#~ msgid "Message settings" +#~ msgstr "用户设置" + +#, fuzzy +#~ msgid "Sender" +#~ msgstr "发送者" + +#, fuzzy +#~ msgid "Target users" +#~ msgstr "域用户" + +#, fuzzy +#~ msgid "Target groups" +#~ msgstr "部门" + +#, fuzzy +#~ msgid "Available targets" +#~ msgstr "可用的应用程序" + +#~ msgid "Object name" +#~ msgstr "对象名称" + +#, fuzzy +#~ msgid "Select to see object groups" +#~ msgstr "选择查看 GOsa 组" + +#, fuzzy +#~ msgid "Show object groups" +#~ msgstr "对象组" + +#~ msgid "Select to see servers" +#~ msgstr "选择显示服务器" + +#~ msgid "Show servers" +#~ msgstr "显示服务器" + +#~ msgid "Select to see workstations" +#~ msgstr "选择查看工作站" + +#~ msgid "Show workstations" +#~ msgstr "显示工作站" + +#, fuzzy +#~ msgid "Select to see incoming objects" +#~ msgstr "选择查看电话" + +#, fuzzy +#~ msgid "Show new objects" +#~ msgstr "成员对象" + +#~ msgid "Regular expression for matching group names" +#~ msgstr "用于匹配组名的正则表达式" + +#, fuzzy +#~ msgid "Available logs" +#~ msgstr "可用的应用程序" + +#, fuzzy +#~ msgid "Selected log" +#~ msgstr "选择" + +#, fuzzy +#~ msgid "No logs for this host available!" +#~ msgstr "文件可用。" + +#, fuzzy +#~ msgid "Import jobs" +#~ msgstr "导入" + +#, fuzzy +#~ msgid "timestamp" +#~ msgstr "过期" + +#, fuzzy +#~ msgid "MAC-address" +#~ msgstr "住址" + +#, fuzzy +#~ msgid "job type" +#~ msgstr "文件系统类型" + +#, fuzzy +#~ msgid "object group" +#~ msgstr "对象组" + +#, fuzzy +#~ msgid "IP-address" +#~ msgstr "住址" + +#, fuzzy +#~ msgid "Select list to import" +#~ msgstr "选择查看打印机" + +#, fuzzy +#~ msgid "Browse" +#~ msgstr "位置" + +#, fuzzy +#~ msgid "MAC" +#~ msgstr "ACL" + +#, fuzzy +#~ msgid "IP" +#~ msgstr "NI" + +#~ msgid "none" +#~ msgstr "无" + +#, fuzzy +#~ msgid "Date" +#~ msgstr "粘贴" + +#, fuzzy +#~ msgid "GOto log view" +#~ msgstr "GOsa 帮助浏览器" + +#, fuzzy +#~ msgid "Cannot delete '%s': object does not exist!" +#~ msgstr "软件包文件 '%s' 不存在。" + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "系统管理" + +#, fuzzy +#~ msgid "Edit product" +#~ msgstr "编辑宏" + +#~ msgid "Edit class" +#~ msgstr "编辑分类" + +#~ msgid "Delete class" +#~ msgstr "删除分类" + +#, fuzzy +#~ msgid "Opsi netboot package" +#~ msgstr "使用软件包" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "复制" + +#~ msgid "copy" +#~ msgstr "复制" + +#~ msgid "Copy this entry" +#~ msgstr "拷贝条目" + +#, fuzzy +#~ msgid "Sudo generic" +#~ msgstr "通用配置" + +#~ msgid "package is configured" +#~ msgstr "软件包已配置" + +#~ msgid "Branches" +#~ msgstr "分支" + +#~ msgid "Create new branch" +#~ msgstr "创建新分支" + +#~ msgid "Create new locked branch" +#~ msgstr "创建新锁定分支" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "剪切" + +#~ msgid "cut" +#~ msgstr "剪切" + +#~ msgid "Cut this entry" +#~ msgstr "剪切条目" + +#~ msgid "Choosen packages" +#~ msgstr "选择的软件包" + +#~ msgid "Toggle remove flag" +#~ msgstr "切换删除标记" + +#, fuzzy +#~ msgid "File system encryption" +#~ msgstr "查看系统信息" + +#~ msgid "Fully Automatic Installation - management" +#~ msgstr "全自动安装 ─ 管理" + +#~ msgid "Fully Automatic Installation" +#~ msgstr "全自动安装 (FAI)" + +#~ msgid "This table displays all FAI classes in the selected tree." +#~ msgstr "这个表显示在所选树下的所有 FAI 分类。" + +#~ msgid "Name of FAI class" +#~ msgstr "FAI 分类名称" + +#, fuzzy +#~ msgid "Package file '%s' does not exist!" +#~ msgstr "软件包文件 '%s' 不存在。" + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "该名称已经被使用。" + +#, fuzzy +#~ msgid "Please enter a script!" +#~ msgstr "请输入一个脚本。" + +#~ msgid "You're about to delete all information about the FAI class at '%s'." +#~ msgstr "您将要删除在 '%s' 的 FAI 类所有信息。" + +#, fuzzy +#~ msgid "You have no permission to delete this entry!" +#~ msgstr "您无权删除这个组件!" + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "您将要删除条目 %s。" + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "您将要删除条目 %s。" + +#~ msgid "You're about to delete a fai branch / freeze '%s'." +#~ msgstr "您将要删除一个 fai 分支 / freeze '%s'。" + +#, fuzzy +#~ msgid "Branch name is not valid!" +#~ msgstr "指定的 branch 名称无效。" + +#, fuzzy +#~ msgid "Freeze name is not valid!" +#~ msgstr "指定的 freeze 名称无效。" + +#, fuzzy +#~ msgid "You have no permission to create a new branch!" +#~ msgstr "您无权删除这个用户!" + +#~ msgid "Ok" +#~ msgstr "好" + +#~ msgid "Packages bundle" +#~ msgstr "软件包集合" + +#, fuzzy +#~ msgid "There is already a template with the given name." +#~ msgstr "已经由同名文件上传。" + +#~ msgid "Please specify a value for attribute 'file'." +#~ msgstr "请为属性“文件”指定一个值" + +#, fuzzy +#~ msgid "Please specify a valid value for attribute 'Destination path'." +#~ msgstr "请为属性“路径”给定一个值" + +#, fuzzy +#~ msgid "Please enter a file name." +#~ msgstr "请输入一个名称。" + +#~ msgid "Please enter a user." +#~ msgstr "请输入一个用户。" + +#~ msgid "Please enter a valid user. Only a-z/0-9 are allowed." +#~ msgstr "请输入一个有效用户名。只允许 a-z/0-9。" + +#~ msgid "Please enter a group." +#~ msgstr "请输入一个组。" + +#~ msgid "Please enter a valid group. Only a-z/0-9 are allowed." +#~ msgstr "请输入一个有效组名。只允许 a-z/0-9。" + +#~ msgid "Create new FAI object - partition table." +#~ msgstr "创建新 FAI 对象 ─ 分区表。" + +#~ msgid "Create new FAI object - package bundle." +#~ msgstr "创建新 FAI 对象 ─ 软件包。" + +#~ msgid "Create new FAI object - script bundle." +#~ msgstr "创建新 FAI 对象 ─ 脚本包。" + +#~ msgid "Create new FAI object - variable bundle." +#~ msgstr "创建新 FAI 对象 ─ 变量包。" + +#~ msgid "Create new FAI object - hook bundle." +#~ msgstr "创建新 FAI 对象 ─ 钩子包。" + +#~ msgid "Create new FAI object - profile." +#~ msgstr "创建新 FAI 对象 ─ profile。" + +#~ msgid "Create new FAI object - template." +#~ msgstr "创建新 FAI 对象 ─ 模板。" + +#~ msgid "Spaces are not allowed within class names." +#~ msgstr "对象名中不允许有空格。" + +#~ msgid "The given class name is empty." +#~ msgstr "给出的类名为空。" + +#~ msgid "The specified class name is already in use for this object type." +#~ msgstr "对于此对象类,指定的类名已经被使用了。" + +#, fuzzy +#~ msgid "There is already a variable with the given name." +#~ msgstr "已经由同名文件上传。" + +#~ msgid "Please specify a value for the attribute 'content'." +#~ msgstr "请为属性“内容”给定一个值。" + +#~ msgid "Please enter a name." +#~ msgstr "请输入一个名称。" + +#~ msgid "Display FAI profile objects" +#~ msgstr "显示 FAI profile 对象" + +#~ msgid "Display FAI template objects" +#~ msgstr "显示 FAI 模板对象" + +#~ msgid "Display FAI scripts" +#~ msgstr "显示 FAI 脚本" + +#~ msgid "Display FAI hooks" +#~ msgstr "显示 FAI 钩子" + +#~ msgid "Display FAI variables" +#~ msgstr "显示 FAI 变量" + +#~ msgid "Display FAI packages" +#~ msgstr "显示 FAI 软件包" + +#~ msgid "Display FAI partitions" +#~ msgstr "显示 FAI 分区" + +#, fuzzy +#~ msgid "Number of listed profiles" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Number of listed partitions" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Number of listed scripts" +#~ msgstr "脚本列表" + +#, fuzzy +#~ msgid "Number of listed variables" +#~ msgstr "已分配变量列表" + +#, fuzzy +#~ msgid "Number of listed templates" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Number of listed packages" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Please specify a valid disc name." +#~ msgstr "请提供一个有效的脚本名。" + +#~ msgid "Please enter a valid mount point for partition %s." +#~ msgstr "请输入分区 %s 的一个有效挂载点" + +#~ msgid "Please enter a valid partition size for partition %s." +#~ msgstr "请为分区 %s 输入一个有效的分区大小。" + +#~ msgid "Please enter a valid range for partition %s." +#~ msgstr "请为分区 %s 输入一个有效范围。" + +#~ msgid "Please enter a range for partition size for partition %s." +#~ msgstr "请为分区 %s 输入分区大小范围。" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Back" +#~ msgstr "返回" + +#, fuzzy +#~ msgid "Saving of FAI/package list with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Saving of FAI/hook with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Saving of FAI/variable with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Saving of FAI/template with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Creating of FAI/script with dn '%s' failed." +#~ msgstr "创建 FAI script base 失败" + +#, fuzzy +#~ msgid "Saving of FAI/partition table with dn '%s' failed." +#~ msgstr "保存 FAI 分区表失败" + +#, fuzzy +#~ msgid "Saving of FAI/profile with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#~ msgid "Please select a valid file." +#~ msgstr "请选择一个有效文件。" + +#, fuzzy +#~ msgid "There is already a hook with the given name." +#~ msgstr "已经存在一个有相同 cn 的对象。" + +#~ msgid "Please enter a value for script." +#~ msgstr "请为脚本输入一个值。" + +#, fuzzy +#~ msgid "There is already a script with the given name." +#~ msgstr "已经存在一个有相同 cn 的对象。" + +#~ msgid "Please assign at least one class to this profile." +#~ msgstr "请为此 profile 分配至少一个分类。" + +#~ msgid "Please enter a valid name." +#~ msgstr "请输入一个有效名称。" + +#, fuzzy +#~ msgid "There is already a FAI object with this class name defined." +#~ msgstr "已经有一个 profile 使用了这个类名。" + +#~ msgid "" +#~ "Your specified search string '%s' returned too many results. Only the " +#~ "first 200 entries are shown, to keep the memory usage low." +#~ msgstr "" +#~ "您提供的查询字符串 '%s' 返回太多结果。为减少内存占用,只显示前200条。" diff --git a/trunk/gosa-plugins/fai/plugin.dsc b/trunk/gosa-plugins/fai/plugin.dsc new file mode 100644 index 000000000..36ebff9d5 --- /dev/null +++ b/trunk/gosa-plugins/fai/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = fai +description = "FAI plugin for managing system deployment" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = goto diff --git a/trunk/gosa-plugins/glpi/README.glpi b/trunk/gosa-plugins/glpi/README.glpi new file mode 100644 index 000000000..52cfcf204 --- /dev/null +++ b/trunk/gosa-plugins/glpi/README.glpi @@ -0,0 +1,13 @@ +To use the glpi connectivity extension + +1) Add the glpi.schema to your schema directory + +2) Remove the comment in front of glpiAccount in gosa.conf + + + +Benoit Mortier +OpenSides November 2005 + + + diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpi.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpi.inc new file mode 100644 index 000000000..d66e66352 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpi.inc @@ -0,0 +1,1777 @@ +server = $server; + $this->user = $user; + $this->password = $pwd; + $this->db = $db; + + $this->handle = @mysql_connect($this->server,$this->user,$this->password); + + if($this->handle){ + $this->is_connected = true; + $this->SelectDB($this->db); + } + $this->deviceMappingGOsaGlpi = array( + "glpi_device_case" => "case", + "glpi_device_control" => "control", + "glpi_device_drive" => "drive", + "glpi_device_gfxcard" => "gfxcard", + "glpi_device_hdd" => "hdd", + "glpi_device_iface" => "iface", + "glpi_device_moboard" => "moboard", + "glpi_device_pci" => "pci", + "glpi_device_power" => "power", + "glpi_device_processor" => "processor", + "glpi_device_ram" => "ram", + "glpi_monitors" => "monitor", + "glpi_device_sndcard" => "sndcard"); + + $this->deviceMappingTableNameID = array( "moboard" => 1, + "processor" => 2, + "ram" => 3, + "hdd" => 4, + "iface" => 5, + "drive" => 6, + "control" => 7, + "gfxcard" => 8, + "sndcard" => 9, + "pci" => 10, + "case" => 11, + "power" => 12); + + + } + + function SelectDB() + { + if($this->is_connected){ + mysql_select_db($this->db,$this->handle); + } + } + + + /* This functions checks if the selected computer/network + device is already available in the db + */ + function is_account($dn) + { + if(!$this->is_connected){ + $this->lasterror ="Can't query anything, if we aren't connected."; + return(false); + }else{ + $qry = "SELECT * FROM glpi_computers WHERE name='".$dn."';"; + $res = $this->query($qry); + if(count($res)==0){ + return(false); + }else{ + return(true); + } + } + } + + /* this function queries everything + */ + function query($qry) + { + if(!$this->is_connected){ + $this->lasterror ="Can't query anything, if we aren't connected."; + return(false); + }else{ + $ret =array(); + $res = mysql_query($qry,$this->handle); + + while($rs = @mysql_fetch_array($res,MYSQL_ASSOC)){ + $ret[]=$rs; + } + return($ret); + } + } + + /* System types + Returns all defined system types + */ + function getSystemTypes() + { + if($this->is_connected){ + $ret = array(); + $tmp = ($this->query("SELECT * FROM glpi_type_computers;")); + foreach($tmp as $t){ + $ret[$t['ID']]=$t['name']; + } + asort($ret); + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* System types + Update a system type + */ + function updateSystemType($name,$id) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_type_computers WHERE ID=".$id.";"); + if(isset($tmp[0])){ + return($this->query("UPDATE glpi_type_computers SET name='".$name."' WHERE ID=".$id.";")); + }else{ + trigger_error("can't update not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* System types + Add one entry to the system types + */ + function addSystemType($name) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_type_computers WHERE name='".$name."';"); + if(isset($tmp[0])){ + trigger_error("such an entry already exists"); + return(false); + }else{ + return($this->query("INSERT INTO glpi_type_computers (name) VALUES ('".$name."');")); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* System types + Remove one entry from the system types (specified by ID=$id) + */ + function removeSystemType($id) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_type_computers WHERE ID=".$id.";"); + if(isset($tmp[0])){ + return($this->query("DELETE FROM glpi_type_computers WHERE ID=".$id.";")); + }else{ + trigger_error("can't remove not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* System type is used */ + function is_systemTypeUsed($ID){ + if($this->is_connected){ + $ret = array(); + $qry="SELECT name,type FROM glpi_computers WHERE type=".$ID." LIMIT 3;"; + $res = $this->query($qry); + foreach($res as $val){ + $ret[$val['name']] = $val['name']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + + /* Manufacturer + Returns all defined manufacturers + */ + function getEnterprises() + { + if($this->is_connected){ + $ret = array(); + $tmp = $this->query("SELECT * FROM glpi_enterprises ORDER BY name;"); + foreach($tmp as $t){ + $ret[$t['ID']]=$t['name']; + } + + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Manufacturer + Returns single manufacturer + */ + function getEnterprise($id) + { + if($this->is_connected){ + $ret = array(); + $tmp = $this->query("SELECT * FROM glpi_enterprises WHERE ID=".$id.";"); + return($tmp); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Manufacturer + Updates already existing manufacturer + */ + function updateEnterprise($array,$id) + { + if(!is_array($array)){ + trigger_error("updateEnterprisesType: first paraeter must be an array"); + }elseif($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_enterprises WHERE ID='".$id."';"); + if(isset($tmp[0])){ + $atr = array("ID","name","type","address","website","phonenumber","comments","deleted","fax","email"); + + $v = ""; + foreach($atr as $at){ + if(isset($array[$at])){ + $v .= " ".$at."='".$array[$at]."', "; + } + } + if(empty($v)){ + trigger_error("updateEnterprisesType: no attributes given "); + return(false); + }else{ + $v = preg_replace("/, $/","",$v); + return($this->query("UPDATE glpi_enterprises SET ".$v." WHERE ID='".$id."';")); + } + }else{ + trigger_error("can't update not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Manufacturer + Add new manufacturer + */ + function addEnterprise($array) + { + if(!is_array($array)){ + trigger_error("addUser: first paraeter must be an array"); + }elseif($this->is_connected){ + $atr = array("ID","name","type","address","website","phonenumber","comments","deleted","fax","email"); + $v = ""; + $a = ""; + foreach($atr as $at){ + if(isset($array[$at])){ + $a .= $at.", "; + $v .= "'".$array[$at]."', "; + } + } + if(empty($v)){ + trigger_error("addUser: no attributes given "); + return(false); + }else{ + $a = preg_replace("/, $/","",$a); + $v = preg_replace("/, $/","",$v); + return($this->query("INSERT INTO glpi_enterprises (".$a.") VALUES (".$v.");")); + } + + }else{ + trigger_error("not connected"); + return(false); + } + + } + + /* Manufacturer + remove manufacturer + */ + function removeEnterprise($id) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_enterprises WHERE ID=".$id.";"); + if(isset($tmp[0])){ + return($this->query("DELETE FROM glpi_enterprises WHERE ID=".$id.";")); + }else{ + trigger_error("can't remove not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Operating systems + Returns all OSs + */ + function getOSTypes($keys = false) + { + if($this->is_connected){ + $ret = array(); + $tmp=($this->query("SELECT * FROM glpi_dropdown_os ORDER by name;")); + + if($keys){ + foreach($tmp as $t){ + $ret[$t['name']]=$t['ID']; + } + }else{ + foreach($tmp as $t){ + $ret[$t['ID']]=$t['name']; + } + } + return($ret); + + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Operating system is used ? */ + function is_osUsed($ID){ + if($this->is_connected){ + $ret = array(); + $qry="SELECT name,type FROM glpi_computers WHERE os=".$ID." LIMIT 3;"; + $res = $this->query($qry); + foreach($res as $val){ + $ret[$val['name']] = $val['name']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + + /* Operating systems + Add a new operating system to the dropdown menus + */ + function addOS($name) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_dropdown_os WHERE name='".$name."';"); + if(isset($tmp[0])){ + trigger_error("such an entry already exists"); + return(false); + }else{ + return($this->query("INSERT INTO glpi_dropdown_os (name) VALUES ('".$name."');")); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Operating systems + remove one OS entry + */ + function removeOS_byID($id) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_dropdown_os WHERE ID=".$id.";"); + if(is_array($tmp[0])){ + return($this->query("DELETE FROM glpi_dropdown_os WHERE ID=".$id.";")); + }else{ + trigger_error("can't remove not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Operating systems + Update existing OS entry + */ + function updateOS($name,$id) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_dropdown_os WHERE ID=".$id.";"); + if(isset($tmp[0])){ + return($this->query("UPDATE glpi_dropdown_os SET name='".$name."' WHERE ID=".$id.";")); + }else{ + trigger_error("can't update not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* This returns all available glpi users + */ + function getUsers() + { + if($this->is_connected){ + $ret = array(); + $tmp = ($this->query("SELECT * FROM glpi_users")); + foreach($tmp as $user){ + $ret[$user['ID']]=$user['name']; + } + return($ret); + + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* this function adds a new glpi user + */ + function addUser($array,$dn) + { + if(!is_array($array)){ + trigger_error("addUser: first paraeter must be an array"); + }elseif($this->is_connected){ + $array['name']=$dn; + $atr = array("name","phone","email"); + $v = ""; + $a = ""; + foreach($atr as $at){ + if(isset($array[$at])){ + $a .= $at.", "; + $v .= "'".$array[$at]."', "; + } + } + if(empty($v)){ + trigger_error("addUser: no attributes given "); + return(false); + }else{ + $a = preg_replace("/, $/","",$a); + $v = preg_replace("/, $/","",$v); + return($this->query("INSERT INTO glpi_users (".$a.") VALUES (".$v.");")); + } + + }else{ + trigger_error("not connected"); + return(false); + } + + } + + /* This function updates a glpi user + with the given data + */ + function updateUser($array,$dn) + { + if(!is_array($array)){ + trigger_error("updateUser: first paraeter must be an array"); + }elseif($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_users WHERE name='".$dn."';"); + if(isset($tmp[0])){ + + $atr = array("name","phone","email"); + $v = ""; + foreach($atr as $at){ + if(isset($array[$at])){ + $v .= " ".$at."='".$array[$at]."', "; + } + } + if(empty($v)){ + trigger_error("UpdateUser: no attributes given "); + return(false); + }else{ + $v = preg_replace("/, $/","",$v); + return($this->query("UPDATE glpi_users SET ".$v." WHERE name='".$dn."';")); + } + }else{ + trigger_error("can't update not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + + } + + /* This function returns all available data + from a specified dn + */ + function getComputerInformations($name) + { + if($this->is_connected){ + $ret = $this->query("SELECT * FROM glpi_computers WHERE name='".$name."';"); + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* This fucntions updates an already existing entry + */ + function updateComputerInformations($array,$name) + { + if(!is_array($array)){ + trigger_error("updateComputerInformations: first paraeter must be an array"); + }elseif($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_computers WHERE name='".$name."';"); + if(isset($tmp[0])){ + + $atr = array( "ID","name","serial","otherserial","contact","contact_num", + "tech_num","comments","date_mod","os","location","domain","network", + "model","type","is_template","tplname","FK_glpi_enterprise","deleted"); + $v = ""; + foreach($atr as $at){ + if(isset($array[$at])){ + $v .= " ".$at."='".$array[$at]."', "; + } + } + if(empty($v)){ + trigger_error("updateComputerInformations: no attributes given "); + return(false); + }else{ + $v = preg_replace("/, $/","",$v); + return($this->query("UPDATE glpi_computers SET ".$v." WHERE name='".$name."';")); + } + }else{ + trigger_error("can't update not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + + } + + /* This function adds a new inventory device (computer phone etc) + */ + function addComputerInformations($array) + { + if(!is_array($array)){ + trigger_error("updateComputerInformations: first paraeter must be an array"); + }elseif($this->is_connected){ + $atr = array( "ID","name","serial","otherserial","contact","contact_num", + "tech_num","comments","date_mod","os","location","domain","network", + "model","type","is_template","tplname","FK_glpi_enterprise","deleted"); + $v = ""; + $a = ""; + foreach($atr as $at){ + if(isset($array[$at])){ + $a .= $at.", "; + $v .= "'".$array[$at]."', "; + } + } + if(empty($v)){ + trigger_error("updateComputerInformations: no attributes given "); + return(false); + }else{ + $a = preg_replace("/, $/","",$a); + $v = preg_replace("/, $/","",$v); + return($this->query("INSERT INTO glpi_computers (".$a.") VALUES (".$v.");")); + } + + }else{ + trigger_error("not connected"); + return(false); + } + + } + + /* this functions checks if the given Device + * already exists + */ + function deviceExists($attr) + { + $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi; + if($this->is_connected){ + $arr = array_flip($deviceMappingGOsaGlpi); + + $tbl_name = $arr[$attr['device_type']]; + if(!isset($attr['ID'])){ + return(false); + }else{ + $qry = "SELECT * FROM ".$tbl_name." WHERE ID=".$attr['ID'].";"; + $res = $this->query($qry); + if(count($res) != 0){ + return(true); + } + } + }else{ + trigger_error("not connected"); + return(false); + } + + return(false); + } + + + /* Check if given device is used by some accounts + * (helpfull to avoid removement of used devices) + */ + function is_deviceUsed($item) + { + $deviceMappingGOsaGlpi = array_flip($this->deviceMappingGOsaGlpi); + $deviceMappingTableNameID = $this->deviceMappingTableNameID; + if($this->is_connected){ + $tablename = $deviceMappingGOsaGlpi[$item['device_type']]; + $type = $item['device_type']; + + $ret = array(); + + if($type=="monitor"){ + $str = "SELECT c.name FROM glpi_connect_wire as w, glpi_computers as c WHERE w.end1=".$item['ID']." AND w.end2 = c.ID AND w.type=4;"; + }else{ + $str = "SELECT c.name FROM glpi_computer_device as d, glpi_computers as c WHERE d.FK_computers=c.ID AND FK_device=".$item['ID']." AND device_type=".$deviceMappingTableNameID[$type]." ;"; + } + + $res = $this->query($str); + + foreach($res as $val){ + $ret[$val['name']] = $val['name']; + } + + return($ret);//count($this->query($str))); + }else{ + trigger_error("not connected"); + return(false); + } + + } + + + /* This functions deletes a specified entry + * from our device tables + */ + function deleteDevice($attr) + { + $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi; + if($this->is_connected){ + $arr = array_flip($deviceMappingGOsaGlpi); + + $device_type = $attr['device_type']; + unset($attr['device_type']); + + $tbl_name = $arr[$device_type]; + + $this->query("DELETE FROM ".$tbl_name." WHERE ID=".$attr['ID'].";"); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* This funtions updated an already existing device + */ + function updateDevices($attr) + { + $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi; + if($this->is_connected){ + $arr = array_flip($deviceMappingGOsaGlpi); + + $device_type = $attr['device_type']; + unset($attr['device_type']); + + $tbl_name = $arr[$device_type]; + + $str = "UPDATE ".$tbl_name." SET "; + foreach($attr as $name => $value){ + $str.=$name."='".$value."', "; + } + $str = preg_replace("/, $/","",$str); + $str .= " WHERE ID=".$attr['ID'].";"; + $this->query($str); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Returns all possible RAM types + * like SDRAM , DIMM ..... + */ + function getRAMTypes() + { + if($this->is_connected){ + $ret = array(); + $tmp = ($this->query("SELECT * FROM glpi_dropdown_ram_type;")); + foreach($tmp as $t){ + $ret[$t['ID']]=$t['name']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Returns all possible HDD connection types + * like IDE SCSI ... + */ + function getGlpiDeviceControlTypes() + { + if($this->is_connected){ + $ret = array(); + $tmp = ($this->query("SELECT * FROM glpi_dropdown_hdd_type;")); + foreach($tmp as $t){ + $ret[$t['ID']]=$t['name']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Returns all possible gfx card connection types + * like PCI-X PCI AGP .... + */ + function getGlpiGfxControlTypes() + { + if($this->is_connected){ + $ret = array(); + $tmp = ($this->query("SELECT * FROM glpi_dropdown_hdd_type;")); + foreach($tmp as $t){ + $ret[$t['ID']]=$t['name']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Devices + Adds a new single device to our db + */ + function addDevice($attr) + { + $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi; + if($this->is_connected){ + $arr = array_flip($deviceMappingGOsaGlpi); + + $device_type = $attr['device_type']; + unset($attr['device_type']); + + $tbl_name = $arr[$device_type]; + $v = ""; + $a = ""; + foreach($attr as $name => $value){ + $a .= $name.", "; + $v .= "'".$value."', "; + } + if(empty($v)){ + trigger_error("addDevice: no attributes given "); + return(false); + }else{ + $a = preg_replace("/, $/","",$a); + $v = preg_replace("/, $/","",$v); + return($this->query("INSERT INTO ".$tbl_name." (".$a.") VALUES (".$v.");")); + } + + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Return all available devices + */ + function getDevices() + { + $deviceMappingGOsaGlpi = $this->deviceMappingGOsaGlpi; + if($this->is_connected){ + $arr = $deviceMappingGOsaGlpi; + + $res = array(); + foreach($arr as $glpi => $gosa){ + $qry = "SELECT * FROM ".$glpi.";"; + $ret = $this->query($qry); + foreach($ret as $id => $entry){ + $entry['device_type'] = $gosa; + + if(isset($entry['designation'])){ + $res[$entry['designation']."-".$gosa] = $entry; + }else{ + $res[$entry['name']."-".$gosa] = $entry; + } + } + } + return($res); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* This function returns all used devices + */ + function getUsedDevices($computerID) + { + $deviceMappingGOsaGlpi = array_flip($this->deviceMappingGOsaGlpi); + $deviceMappingTableNameID = $this->deviceMappingTableNameID; + + if($this->is_connected){ + $qry = "SELECT * FROM glpi_computer_device WHERE FK_computers=".$computerID.";"; + $res = $this->query($qry); + + $ret = array(); + foreach($deviceMappingGOsaGlpi as $GOsa => $glpi){ + $ret[$GOsa] = array(); + } + + $tbls = array_flip($deviceMappingTableNameID); + + foreach($res as $device){ + $devtype = $tbls[$device['device_type']]; + $tbl_name = $deviceMappingGOsaGlpi[$devtype]; + $qry = ("SELECT * FROM ".$tbl_name." WHERE ID=".$device['FK_device'].";"); + $res2 = $this->query($qry); + if(count($res2)!=0){ + $ret[$devtype][$res2[0]['designation']]=$res2[0]; + } + + $qry = "SELECT * FROM glpi_connect_wire WHERE type=4 AND end2=".$computerID.";"; + $res2 = $this->query($qry); + foreach($res2 as $monitor){ + $qry = "SELECT * FROM glpi_monitors WHERE ID=".$monitor['end1'].";"; + $res3 = $this->query($qry); + foreach($res3 as $moni){ + $ret['monitor'][$moni['name']]=$moni; + } + } + + + + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* This function removes all given devices from a computer, specified by $id + In the next step all devices specified by devices will be added. + */ + function addDevicesToComputer($devices, $id) + { + $deviceMappingGOsaGlpi = array_flip($this->deviceMappingGOsaGlpi); + $deviceMappingTableNameID = $this->deviceMappingTableNameID; + + if(($id == "" )||(!is_numeric($id))){ + return (false); + } + if($this->is_connected){ + $qry = "DELETE FROM glpi_computer_device WHERE FK_computers=".$id.";"; + $this->query($qry); + + foreach($devices as $type => $entries){ + foreach($entries as $entry){ + if($type=="monitor"){ + $str = "INSERT INTO glpi_connect_wire (end1,end2,type) + VALUES (".$entry['ID'].",".$id.",4);"; + }else{ + $str = "INSERT INTO glpi_computer_device (device_type,FK_device,FK_computers) + VALUES (".$deviceMappingTableNameID[$type].",".$entry['ID'].",".$id.");"; + } + $this->query($str); + } + } + + + }else{ + trigger_error("not connected"); + return(false); + } + + } + + function removeComputerInformations($name) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_computers WHERE name='".$name."';"); + if(isset($tmp[0])){ + $id = $tmp[0]['ID']; + $this->query("DELETE FROM glpi_connect_wire WHERE end2=".$id.";"); + $this->query("DELETE FROM glpi_computer_device WHERE FK_computers=".$id.";"); + return($this->query("DELETE FROM glpi_computers WHERE ID=".$id.";")); + }else{ + trigger_error("can't remove not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + function is_connected() + { + return($this->is_connected); + } + + function addAttachmentsToComputer($attr,$id) + { + if(($id == "" )||(!is_numeric($id))){ + return (false); + } + if($this->is_connected){ + $qry = "DELETE FROM glpi_doc_device WHERE (FK_device=".$id.") AND (device_type=1);"; + $this->query($qry); + + foreach($attr as $aid => $entry){ + $str = "INSERT INTO glpi_doc_device (FK_doc,FK_device,device_type,is_template) + VALUES + ($aid,$id,1,'0');"; + $this->query($str); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getAssignAttachments($id) + { + + if($this->is_connected){ + $qry= "SELECT * FROM glpi_doc_device WHERE (device_type=1) AND (FK_device=".$id.");"; + $ret = $this->query($qry); + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function deleteAttachment($id) + { + if($this->is_connected){ + $qry = "DELETE FROM glpi_docs WHERE ID=".$id.""; + $this->query($qry); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getAttachments() + { + $ret = array(); + if($this->is_connected){ + $qry = "SELECT * FROM glpi_docs WHERE name!='';"; + $re = $this->query($qry); + + foreach($re as $entry){ + $ret[$entry['ID']]=$entry; + } + + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function saveAttachments($attrs,$id = -1) + { + if($this->is_connected){ + $atr = array("name","filename","rubrique","mime","date_mod","comment","deleted","link"); + $tmp = array(); + foreach($atr as $at){ + if(isset($attrs[$at])){ + $tmp[$at] = $attrs[$at]; + } + } + if(count($tmp)==0){ + return(false); + }else{ + + // Add + if($id == -1){ + $str = "INSERT INTO glpi_docs "; + $namen = ""; + $values= ""; + foreach($tmp as $name => $value){ + $namen .= $name.", "; + if(is_numeric($value)){ + $values .= $value.", "; + }else{ + $values .= "'".$value."', "; + } + } + $values = preg_replace("/, $/","",$values); + $namen = preg_replace("/, $/","",$namen); + $str .= "(".$namen.") VALUES (".$values.");"; + }else{ + $str = "UPDATE glpi_docs SET "; + foreach($tmp as $name => $value){ + $str .= $name."= "; + if(is_numeric($value)){ + $str .= $value.", "; + }else{ + $str .= "'".$value."', "; + } + } + $str = preg_replace("/, $/","",$str); + $str .= " WHERE ID=".$id.";"; + } + $this->query($str); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + + /* Check if given attachment id is used in any Device + ( - avoid removing of used attachments) + */ + function is_attachmentUsed($id) + { + if($this->is_connected){ + $ret = array(); + $qry = "SELECT t.name FROM glpi_computers as t, glpi_doc_device WHERE t.ID = glpi_doc_device.FK_device AND FK_doc =".$id." LIMIT 3;"; + $res = $this->query($qry); + foreach($res as $val){ + $ret[$val['name']] = $val['name']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + + /* Monitor handling + */ + function getMonitors() + { + if($this->is_connected){ + $qry= "SELECT * FROM glpi_monitors;"; + return($this->query($qry)); + + }else{ + trigger_error("not connected"); + return(false); + } + } + + function updatedMonitor() + { + if($this->is_connected){ +// $qry= "SELECT * FROM glpi_monitors;"; +// return($this->query($qry)); + + }else{ + trigger_error("not connected"); + return(false); + } + } + + function addMonitor() + { + if($this->is_connected){ +// $qry= "SELECT * FROM glpi_monitors;"; +// return($this->query($qry)); + + }else{ + trigger_error("not connected"); + return(false); + } + } + + function removeMonitor($id) + { + if($this->is_connected){ + $qry= "DELETE FROM glpi_monitors WHERE ID=".$id.";"; + $this->query($qry); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getMonitorTypes() + { + if($this->is_connected){ + $qry= "SELECT * FROM glpi_type_monitors;"; + return($this->query($qry)); + + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getLocationTypes() + { + if($this->is_connected){ + $qry= "SELECT * FROM glpi_dropdown_locations;"; + return($this->query($qry)); + + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getStateTypes() + { + if($this->is_connected){ + $qry= "SELECT * FROM glpi_dropdown_state;"; + return($this->query($qry)); + }else{ + trigger_error("not connected"); + return(false); + } + } + + + /* Printer functions + */ + + /* is printer type used ? + */ + function is_printerTypeUsed($id) + { + if($this->is_connected){ + $qry = "SELECT * FROM glpi_printers WHERE type=".$id.";"; + $res = $this->query( $qry); + $ret =array(); + foreach($res as $entry){ + $ret[$entry['ID']] = $entry['name']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* This functions checks if the selected computer/network + device is already available in the db + */ + function is_printer_account($dn) + { + if(!$this->is_connected){ + $this->lasterror ="Can't query anything, if we aren't connected."; + return(false); + }else{ + $qry = "SELECT * FROM glpi_printers WHERE name='".$dn."';"; + $res = $this->query($qry); + if(count($res)==0){ + return(false); + }else{ + return(true); + } + } + } + + /* This function returns all available data + from a specified dn + */ + function getPrinterInformations($name) + { + if($this->is_connected){ + $ret = $this->query("SELECT * FROM glpi_printers WHERE name='".$name."';"); + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Get Printer attachments + */ + function getAssignPrinterAttachments($id) + { + + if($this->is_connected){ + $qry= "SELECT * FROM glpi_doc_device WHERE (device_type=3) AND (FK_device=".$id.");"; + $ret = $this->query($qry); + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Printer types + Returns all defined printer types + */ + function getPrinterTypes() + { + if($this->is_connected){ + $ret = array(); + $tmp = ($this->query("SELECT * FROM glpi_type_printers ORDER BY name; ")); + foreach($tmp as $t){ + $ret[$t['ID']]=$t['name']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Add pritner types + Add one entry to the printer types + */ + function addPrinterType($name) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_type_printers WHERE name='".$name."';"); + if(isset($tmp[0])){ + //trigger_error("such an entry already exists"); + return(false); + }else{ + return($this->query("INSERT INTO glpi_type_printers (name) VALUES ('".$name."');")); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* remove printer types + Remove one entry from the printer types (specified by ID=$id) + */ + function removePrinterType($id) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_type_printers WHERE ID=".$id.";"); + if(isset($tmp[0])){ + return($this->query("DELETE FROM glpi_type_printers WHERE ID=".$id.";")); + }else{ + trigger_error("can't remove not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Update printer types + Update a printer type + */ + function updatePrinterType($name,$id) + { + + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_type_printers WHERE ID=".$id.";"); + if(isset($tmp[0])){ + return($this->query("UPDATE glpi_type_printers SET name='".$name."' WHERE ID=".$id.";")); + }else{ + trigger_error("can't update not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + + /* This fucntions updates an already existing entry + */ + function updatePrinterInformations($array,$name) + { + if(!is_array($array)){ + trigger_error("updatePrinterInformations: first paraeter must be an array"); + }elseif($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_printers WHERE name='".$name."';"); + if(isset($tmp[0])){ + + $atr = array( "ID","name","serial","otherserial","contact","contact_num", + "tech_num","comments","date_mod","location","domain","network","ramSize","flags_serial","flags_par","flags_usb", + "model","type","is_template","tplname","FK_glpi_enterprise","deleted"); + $v = ""; + foreach($atr as $at){ + if(isset($array[$at])){ + $v .= " ".$at."='".$array[$at]."', "; + } + } + if(empty($v)){ + trigger_error("updateSystemInformations: no attributes given "); + return(false); + }else{ + $v = preg_replace("/, $/","",$v); + return($this->query("UPDATE glpi_printers SET ".$v." WHERE name='".$name."';")); + } + }else{ + trigger_error("can't update not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + + } + + /* This function adds a new inventory settings for printers + */ + function addPrinterInformations($array) + { + if(!is_array($array)){ + trigger_error("updateComputerInformations: first paraeter must be an array"); + }elseif($this->is_connected){ + $atr = array( "ID","name","serial","otherserial","contact","contact_num", + "tech_num","comments","date_mod","os","location","domain","network","ramSize","flags_serial","flags_par","flags_usb", + "model","type","is_template","tplname","FK_glpi_enterprise","deleted"); + $v = ""; + $a = ""; + foreach($atr as $at){ + if(isset($array[$at])){ + $a .= $at.", "; + $v .= "'".$array[$at]."', "; + } + } + if(empty($v)){ + trigger_error("updateComputerInformations: no attributes given "); + return(false); + }else{ + $a = preg_replace("/, $/","",$a); + $v = preg_replace("/, $/","",$v); + return($this->query("INSERT INTO glpi_printers (".$a.") VALUES (".$v.");")); + } + + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* add atachment to given printer */ + function addAttachmentsToPrinter($attr,$id) + { + if(($id == "" )||(!is_numeric($id))){ + return (false); + } + if($this->is_connected){ + $qry = "DELETE FROM glpi_doc_device WHERE (FK_device=".$id.") AND (device_type=3);"; + $this->query($qry); + + foreach($attr as $aid => $entry){ + $str = "INSERT INTO glpi_doc_device (FK_doc,FK_device,device_type,is_template) + VALUES + ($aid,$id,3,'0');"; + $this->query($str); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + function removePrinterInformations($name) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_printers WHERE name='".$name."';"); + if(isset($tmp[0])){ + $id = $tmp[0]['ID']; +// $this->query("DELETE FROM glpi_connect_wire WHERE end2=".$id.";"); + $this->query("DELETE FROM glpi_doc_device WHERE FK_device=".$id." AND device_type=3;"); + return($this->query("DELETE FROM glpi_printers WHERE ID=".$id.";")); + }else{ + trigger_error("can't remove not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + + /* Cartridges + */ + /* return all assigned cartridges */ + function getUsedCartridges($printerID) + { + if($this->is_connected){ + $ret = array(); + $qry = "SELECT + c.date_use as date_use, + c.ID as ID, + t.ID as type_ID, + t.name as name, + c.FK_glpi_printers as FK_glpi_printers, + d.name as type_name + FROM + glpi_dropdown_cartridge_type as d, + glpi_cartridges as c, + glpi_cartridges_type as t + WHERE c.FK_glpi_cartridges_type = t.ID + AND t.type = d.ID + AND c.FK_glpi_printers = ".$printerID.";"; + $res = $this->query($qry); + foreach($res as $entry){ + $ret[$entry['ID']] = $entry; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* return all assigned cartridges */ + function getAvailableCartridgeTypes($printerTypeID) + { + if($this->is_connected){ + $ret = array(); + $qry= " + SELECT + ct.ID as cartridgeID, + ct.name as cartridgeName, + pt.ID as printerTypeID, + pt.name as printerTypeName, + ct.type as cartridgeTypeID, + dt.name as cartridgeTypeName + FROM + glpi_type_printers as pt, + glpi_cartridges_type as ct, + glpi_dropdown_cartridge_type as dt, + glpi_cartridges_assoc as ac + WHERE + ac.FK_glpi_type_printer = pt.ID + AND ac.FK_glpi_cartridges_type = ct.ID + AND ct.type=dt.ID + AND pt.ID=".$printerTypeID.";"; + $res = $this->query($qry); + foreach($res as $entry){ + $ret[$entry['cartridgeID']] = $entry; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function removeCartridgeFromPrinter($cartridgeID) + { + if($this->is_connected){ + $qry = "DELETE FROM glpi_cartridges WHERE ID=".$cartridgeID.";"; + return($this->query($qry)); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function addCartridgeFromPrinter($printerID,$cartridgeID) + { + if($this->is_connected){ + $qry ="INSERT INTO + glpi_cartridges (FK_glpi_cartridges_type,FK_glpi_printers,date_in,date_use) + VALUES + (".$cartridgeID.",".$printerID.",'".date("Y-m-d")."','".date("Y-m-d")."');"; + return($this->query($qry)); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function is_cartridgeTypeUsed($id){ + if($this->is_connected){ + $qry = "SELECT p.ID,p.name as name FROM glpi_cartridges as c,glpi_printers as p WHERE p.ID=c.FK_glpi_printers AND c.FK_glpi_cartridges_type=".$id.";"; + $res = $this->query($qry); + $ret =array(); + foreach($res as $entry){ + $ret[$entry['ID']] = $entry['name']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getCartridgeTypeInformations($id = "all"){ + if($this->is_connected){ + $ret = array(); + if($id != "all"){ + $qry = "SELECT * FROM glpi_cartridges_type WHERE ID = ".$id.";"; + }else{ + $qry = "SELECT * FROM glpi_cartridges_type;"; + } + + $res = ($this->query($qry)); + foreach($res as $entry){ + $ret[$entry['ID']] = $entry; + } + return($ret); + + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getCartridgeTypes(){ + if($this->is_connected){ + $ret = array(); + $qry = "SELECT * FROM glpi_dropdown_cartridge_type;"; + $res = ($this->query($qry)); + foreach($res as $entry){ + $ret[$entry['ID']] = $entry['name']; + } + return($ret); + + }else{ + trigger_error("not connected"); + return(false); + } + } + + + + /* check if given manufacturer ID ist still in use. + The problem is, that nearly every table uses manufacturers .... + */ + function is_manufacturerUsed($id) + { + if($this->is_connected){ + $tables = array(); + foreach($this->deviceMappingGOsaGlpi as $entry => $table){ + $tables[] = $entry; + } + $tables[] ="glpi_computers"; + $tables[] ="glpi_cartridges_type"; + $ret = array(); + $i = 3; + foreach($tables as $tbl){ + if($i <= 0 ) continue; + $qry = "SELECT * FROM ".$tbl." WHERE FK_glpi_enterprise = ".$id.";"; + $res = $this->query($qry); + foreach($res as $entry){ + if($i <= 0 ) continue; + if(isset($entry['designation'])){ + $entry['name'] = $entry['designation']; + } + $i --; + $ret[] = $entry['name']; + } + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Manufacturer + Updates already existing manufacturer + */ + function Add_UpdateCatrigdeType($array,$array_printer_types) + { + if(!is_array($array)){ + trigger_error("Add_UpdateCatrigdeType: first paraeter must be an array"); + }elseif($this->is_connected){ + + + $atr = array("name","ref","location","type","FK_glpi_enterprise","tech_num","deleted","comments","alarm"); + + /* Entry was edited */ + if($array['ID']>0){ + $qry = "DELETE FROM glpi_cartridges_assoc WHERE FK_glpi_cartridges_type=".$array['ID'].";"; + + $v = ""; + foreach($atr as $at){ + if(isset($array[$at])){ + $v .= " ".$at."='".$array[$at]."', "; + } + } + if(empty($v)){ + trigger_error("Add_UpdateCatrigdeType: no attributes given "); + return(false); + }else{ + $v = preg_replace("/, $/","",$v); + $qry = "UPDATE glpi_cartridges_type SET ".$v." WHERE ID='".$array['ID']."';"; + $this->query($qry); + } + }else{ + + /* skip if name is in use*/ + $qry = "SELECT * FROM glpi_cartridges_type WHERE name='".$array['name']."';"; + if(count($this->query($qry))){ + return; + } + + $str = "INSERT INTO glpi_cartridges_type "; + $namen = ""; + $values= ""; + foreach($array as $name => $value){ + $namen .= $name.", "; + if(is_numeric($value)){ + $values .= $value.", "; + }else{ + $values .= "'".$value."', "; + } + } + $values = preg_replace("/, $/","",$values); + $namen = preg_replace("/, $/","",$namen); + $str .= "(".$namen.") VALUES (".$values.");"; + $this->query($str); + $IDs = $this->query("SELECT ID FROM glpi_cartridges_type WHERE name='".$array['name']."';"); + if(count($IDs) > 1){ + trigger_error("internal db error"); + return; + } + $array['ID'] = $IDs[0]['ID']; + } + + foreach($array_printer_types as $id){ + $qry = "INSERT INTO glpi_cartridges_assoc + (FK_glpi_cartridges_type,FK_glpi_type_printer) + VALUES + (".$array['ID'].",".$id.")"; + + $this->query($qry); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getSupportedPrinterTypeIDsForCartridge($cid) + { + if($this->is_connected){ + $ret = array(); + $qry = "SELECT FK_glpi_type_printer FROM glpi_cartridges_assoc WHERE FK_glpi_cartridges_type = ".$cid.";"; + $res = $this->query($qry); + + foreach($res as $entry => $value){ + $ret[$value['FK_glpi_type_printer']] = $value['FK_glpi_type_printer']; + } + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function removeCartridgeType($id){ + if($this->is_connected){ + $qry = "DELETE FROM glpi_cartridges_assoc WHERE FK_glpi_cartridges_type=".$id.";"; + $this->query($qry); + $qry = "DELETE FROM glpi_cartridges_type WHERE ID=".$id.";"; + return($this->query($qry)); + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getCartridgesWhichUseThisType($id) + { + if($this->is_connected){ + $qry = "SELECT * FROM glpi_cartridges WHERE FK_glpi_cartridges_type=".$id.";"; + $ret = $this->query($qry); + return($ret); + }else{ + trigger_error("not connected"); + return(false); + } + } + + + /* Add pritner types + Add one entry to the cartridgeType types + */ + function addCartridgeDropdownType($name) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_dropdown_cartridge_type WHERE name='".$name."';"); + if(isset($tmp[0])){ + //trigger_error("such an entry already exists"); + return(false); + }else{ + return($this->query("INSERT INTO glpi_dropdown_cartridge_type (name) VALUES ('".$name."');")); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* remove cartridgeType types + Remove one entry from the cartridgeType types (specified by ID=$id) + */ + function removeCartridgeDropdownType($id) + { + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_dropdown_cartridge_type WHERE ID=".$id.";"); + if(isset($tmp[0])){ + return($this->query("DELETE FROM glpi_dropdown_cartridge_type WHERE ID=".$id.";")); + }else{ + trigger_error("can't remove not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + /* Update cartridgeType + Update a cartridgeType + */ + function updateCartridgeDropdownType($name,$id) + { + + if($this->is_connected){ + $tmp = $this->query("SELECT * FROM glpi_dropdown_cartridge_type WHERE ID=".$id.";"); + if(isset($tmp[0])){ + return($this->query("UPDATE glpi_dropdown_cartridge_type SET name='".$name."' WHERE ID=".$id.";")); + }else{ + trigger_error("can't update not existing entry"); + return(false); + } + }else{ + trigger_error("not connected"); + return(false); + } + } + + function getUsedDropdownTypes($id=false) + { + if($this->is_connected){ + if($id){ + $qry = "SELECT distinct(type) FROM glpi_cartridges_type WHERE type = ".$id.";"; + }else{ + $qry = "SELECT distinct(type) FROM glpi_cartridges_type;"; + } + return($this->query($qry)); + }else{ + trigger_error("not connected"); + return(false); + } + } + +} +//$s = new glpiDB("vserver-01","glpi","tester","glpi"); +//print_r($s->query("SELECT * FROM glpi_computers")); +//$s->getComputerInformations("1 OR (c.ID<10000)"); +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiAccount.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiAccount.inc new file mode 100644 index 000000000..398d9a5c8 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiAccount.inc @@ -0,0 +1,819 @@ +ui= get_userinfo(); + + /* Abort class construction, if no db is defined */ + if(!isset($this->config->data['SERVERS']['GLPI'])){ + return; + } + + // Get informations about databse connection + $this->data = $this->config->data['SERVERS']['GLPI']; + + // Abort if mysql extension is missing + if(!is_callable("mysql_connect")){ + return; + } + + // Create handle of glpi class, and check if database connection is established + $this->handle = new glpiDB($this->data['SERVER'],$this->data['LOGIN'],$this->data['PASSWORD'],$this->data['DB']); + + if(!$this->handle->is_connected){ + return; + } + + // If this dn is already used in database, then get all informations for this entry + if($this->handle->is_account($this->dn)){ + $this->is_account = true; + $tmp = ($this->handle->getComputerInformations($this->dn)); + + foreach(array("tech_num","os","FK_glpi_enterprise","type","comments","contact_num") as $attr){ + $this->$attr = $tmp[0][$attr]; + } + $this->usedDevices = $this->handle->getUsedDevices($tmp[0]['ID']); + $atts = $this->handle->getAssignAttachments($tmp[0]['ID']); + foreach($atts as $attachment){ + + $this->usedAttachments[$attachment['FK_doc']]=$attachment['FK_doc']; + } + }else{ + $this->is_account = false; + } + + /* set defaults */ + $this->name = $this->dn; + $this->orig_dn = $this->dn; + $this->initially_was_account = $this->is_account; + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","all/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* Assign smarty defaults + To avoid undefined indexes, if there is an error with the glpi db + */ + foreach(array("SystemTypes","SystemTypeKeys","Manufacturers", + "OSs","TechnicalResponsibles","InstalledDevices","Attachments","AttachmentKeys", + "OSKeys","OSs","ManufacturerKeys","InstalledDeviceKeys") as $attr){ + $smarty->assign($attr,array()); + } + foreach(array("type","FK_glpi_enterprise","os","tech_num","comments","contact_num","AttachmentsDiv") as $attr){ + $smarty->assign($attr,""); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation) { + $smarty->assign($name."ACL",$this->getacl($name)); + } + + /* Check if there is a glpi database server defined + */ + if(!isset($this->config->data['SERVERS']['GLPI'])){ + print_red(_("There is no server with valid glpi database service.")); + return($smarty->fetch(get_template_path('glpi.tpl',TRUE,dirname(__FILE__)))); + } + + $this->data = $this->config->data['SERVERS']['GLPI']; + + /* Check if we can call mysql_connect + If we can't, there is no the mysql-php extension + */ + if(!is_callable("mysql_connect")){ + print_red(_("Can't connect to glpi database, the php-mysql extension is missing.")); + return($smarty->fetch(get_template_path('glpi.tpl',TRUE,dirname(__FILE__)))); + } + + $this->handle = new glpiDB($this->data['SERVER'],$this->data['LOGIN'],$this->data['PASSWORD'],$this->data['DB']); + + /* If handle == false, abort + Seems that the server, username and or password is wrong + */ + if(!$this->handle->is_connected){ + print_red(_("Can't connect to glpi database, check configuration twice.")); + return($smarty->fetch(get_template_path('glpi.tpl',TRUE,dirname(__FILE__)))); + } + + /* Download requested of attachment requested. + */ + if(isset($_GET['get_attachment'])){ + $atts = $this->handle->getAttachments(); + if(isset($atts[$_GET['get_attachment']])){ + $att = $atts[$_GET['get_attachment']]; + $filename = CONFIG_DIR."/glpi/".$att['filename']; + if(file_exists($filename) && is_readable($filename)){ + $str = file_get_contents($filename); + send_binary_content($str,$att['filename']); + }else{ + print_red(_("Download of attachment failed. Attachment was not found on server.")); + } + }else{ + print_red(_("Download of attachment failed. Not a valid attachment id.")); + } + } + + /* All checks are ok + Lets handle Posts, templates etc below ... + */ + + $users = $this->handle->getUsers(); + $ldap= $this->config->get_ldap_link(); + + /* Check for Trading button Post + */ + if(isset($_POST['Trading'])){ + print_red(_("This feature is not implemented yet.")); + } + + /* Check for Software button Post + */ + if(isset($_POST['Software'])){ + print_red(_("This feature is not implemented yet.")); + } + + /* Check for Contract button Post + */ + if(isset($_POST['Contracts'])){ + print_red(_("This feature is not implemented yet.")); + } + + /* Add Device was requested, open new dialog + */ + if((isset($_POST['AddDevice'])) && ($this->acl_is_writeable("Devices"))){ + $this->dialog =true; + $this->cur_dialog = new glpiDeviceManagement($this->config,$this->dn,$this->usedDevices); + } + + /* Attachment pool was closed with use + */ + if(isset($_POST['UseAttachment']) && ($this->acl_is_writeable("Attachments"))){ + if(count($this->cur_dialog->check())){ + foreach($this->cur_dialog->check() as $msg){ + print_red($msg); + } + }else{ + $this->cur_dialog->save_object(); + $this->usedAttachments = $this->cur_dialog->save(); + $this->cur_dialog = false; + $this->edit_type = false; + } + } + + /* Attachment pool was closed with abort + */ + if(isset($_POST['AbortAttachment'])){ + $this->cur_dialog = false; + $this->edit_type = false; + } + + /* Open Attachment pool to add/edit Attachments + */ + if(isset($_POST['AddAttachment']) && ($this->acl_is_writeable("Attachments"))){ + $this->cur_dialog = new glpiAttachmentPool($this->config,$this->dn,$this->usedAttachments); + $this->dialog = true; + } + + /* Remove Attachment fro this tab + */ + $once = true; + foreach($_POST as $name => $value){ + if((preg_match("/^delAttachment_/",$name))&&($once) && $this->acl_is_writeable("Attachments")){ + $once= false; + $name = preg_replace("/^delAttachment_/","",$name); + $entry = preg_replace("/_.*$/","",$name); + if(isset($this->usedAttachments[$entry])){ + unset($this->usedAttachments[$entry]); + } + } + } + if((isset($_POST['RemoveAttachment']))&&(isset($_POST['Attachments'])) && ($this->acl_is_writeable("Attachments"))){ + foreach($_POST['Attachments'] as $entry){ + if(isset($this->usedAttachments[$entry])){ + unset($this->usedAttachments[$entry]); + } + } + } + + /* We have selected some devices and pressed use button + */ + if(isset($_POST['SelectDeviceSave']) && $this->acl_is_writeable("Devices")){ + $this->cur_dialog->save_object(); + $this->usedDevices= ($this->cur_dialog->getSelected()); + $this->cur_dialog = false; + $this->dialog = false; + $this->edit_type=false; + } + + /* Aborted Device selction + */ + if(isset($_POST['SelectDeviceCancel']) && ($this->acl_is_writeable("Devices"))){ + $this->dialog = false; + $this->cur_dialog = false; + $this->edit_type=false; + } + + /* System type management + */ + if(isset($_POST['edit_type']) && $this->acl_is_writeable("type")){ + $this->dialog = true; + $this->edit_type=true; + } + + /* This closes the system type editing dialog + */ + if(isset($_POST['close_edit_type']) && ($this->acl_is_writeable("type"))){ + $this->edit_type=false; + $this->dialog = false; + } + + if(isset($_POST['Rename_Cancel'])){ + $this->renameTypeDialog = false; + $this->renameOSDialog = false; + } + + /* This appends a new system to our sytem types + */ + if((isset($_POST['add_type']))&&(!empty($_POST['type_string'])) && $this->acl_is_writeable("type")){ + $attr = $this->handle->getSystemTypes(); + if(in_array(trim($_POST['type_string']),$attr)){ + print_red(_("Adding new sytem type failed, this system type name is already used.")) ; + }else{ + $this->handle->addSystemType(trim($_POST['type_string'])); + } + } + + /* Remove selected type from our system types list + */ + if((isset($_POST['del_type']))&&(!empty($_POST['select_type'])) && $this->acl_is_writeable("type")){ + $tmp = $this->handle->is_systemTypeUsed($_POST['select_type']); + if(count($tmp)){ + $names = ""; + foreach($tmp as $name){ + $names .= ", ".$name; + } + $names = preg_replace("/^, /","",$names); + $names = trim($names); + if(count($tmp) == 3){ + $names .= " ..."; + } + print_red(sprintf(_("You can't delete this system type, it is still in use by these system(s) '%s'"),$names)); + }else{ + $this->handle->removeSystemType($_POST['select_type']); + } + } + + /* Rename selected system type to given string + */ + if(isset($_POST['Rename_type_OK'])){ + $attr = $this->handle->getSystemTypes(); + if(in_array(trim($_POST['string']),$attr)){ + print_red(_("Rename failed, this system type name is already used.")) ; + }else{ + $this->renameTypeDialog = false; + $this->handle->updateSystemType($_POST['string'],trim($this->select_type)); + } + } + + + if((isset($_POST['rename_type'])&&(!empty($_POST['select_type'])))||($this->renameTypeDialog)){ + if(isset($_POST['select_type'])){ + $this->select_type = $_POST['select_type']; + } + $this->renameTypeDialog = true; + $tmp = $this->handle->getSystemTypes(); + + $smarty->assign("string",$tmp[$this->select_type]); + if(isset($_POST['string'])){ + $smarty->assign("string",$_POST['string']); + } + $smarty->assign("Method","rename"); + $display= $smarty->fetch(get_template_path('glpi_edit_type.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + + + /* Someone wants to edit the system types ... + So, lets open a new dialog which provides some buttons to edit the types + */ + if($this->edit_type){ + $smarty->assign("Method","edit"); + $smarty->assign("SystemTypes", $this->handle->getSystemTypes()); + $smarty->assign("SystemTypeKeys", array_flip($this->handle->getSystemTypes())); + $display= $smarty->fetch(get_template_path('glpi_edit_type.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + /* System os management + */ + if(isset($_POST['edit_os']) && $this->acl_is_writeable("os")){ + $this->dialog = true; + $this->edit_os=true; + } + + /* Close Operating system dialog + */ + if(isset($_POST['close_edit_os'])){ + $this->edit_os=false; + $this->dialog = false; + } + + /* Add new os to the db + */ + if((isset($_POST['add_os']))&&(!empty($_POST['is_string'])) && $this->acl_is_writeable("os")){ + $attr = $this->handle->getOSTypes(); + if(in_array(trim($_POST['is_string']),$attr)){ + print_red(_("Adding new operating system failed, specifed name is already used.")) ; + }else{ + $this->handle->addOS(trim($_POST['is_string'])); + } + } + + /* Delete selected os from list and db + */ + if((isset($_POST['del_os']))&&(!empty($_POST['select_os'])) && $this->acl_is_writeable("os")){ + $tmp = $this->handle->is_osUsed($_POST['select_os']); + + if(count($tmp)){ + + $names = ""; + foreach($tmp as $name){ + $names .= ", ".$name; + } + $names = preg_replace("/^, /","",$names); + $names = trim($names); + if(count($tmp) == 3){ + $names .= " ..."; + } + print_red(sprintf(_("You can't delete this operating system, it is still in use by these system(s) '%s'"),$names)); + + }else{ + $this->handle->removeOS_byID($_POST['select_os']); + } + } + + /* Rename selected os to given string + */ + if(isset($_POST['Rename_os_OK']) && $this->acl_is_writeable("os")){ + $attr = $this->handle->getOSTypes(); + if(in_array(trim($_POST['string']),$attr)){ + print_red(_("Updating operating system failed, specifed name is already used.")) ; + }else{ + $this->handle->updateOS($_POST['string'],$this->select_type); + $this->renameOSDialog = false; + } + } + if((isset($_POST['rename_os'])&&(!empty($_POST['select_os'])))||($this->renameOSDialog)){ + if(isset($_POST['select_os'])){ + $this->select_type = $_POST['select_os']; + } + $this->renameOSDialog = true; + $tmp = $this->handle->getOSTypes(); + + $smarty->assign("string",$tmp[$this->select_type]); + if(isset($_POST['string'])){ + $smarty->assign("string",$_POST['string']); + } + $smarty->assign("Method","rename"); + $display= $smarty->fetch(get_template_path('glpi_edit_os.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + /* Open dialog to edit os types + */ + if($this->edit_os){ + $smarty->assign("Method","edit"); + $smarty->assign("OSs", $this->handle->getOSTypes()); + $smarty->assign("OSKeys", array_flip($this->handle->getOSTypes())); + $display= $smarty->fetch(get_template_path('glpi_edit_os.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + + + /* Show dialog to select a new contact person + * Select a contact person + */ + if(isset($_POST['SelectContactPerson']) && $this->acl_is_writeable("contact_num")){ + $this->addUser = "contact"; + $this->cur_dialog= new glpiSelectUser($this->config,$this->dn,"user_tech_num"); + $this->cur_dialog->set_acl_category(preg_replace("/\//","",$this->acl_category)); + $this->cur_dialog->set_acl_base($this->dn); + + } + + /* Open dialog which allows to edit the manufacturers + */ + if(isset($_POST['edit_manufacturer']) && $this->acl_is_writeable("FK_glpi_enterprise")){ + $this->cur_dialog = new glpiManufacturer($this->config,$this->dn); + $this->dialog = true; + } + + /* Close manufacturer editing dialog + */ + if(isset($_POST['close_edit_manufacturer'])){ + $this->dialog = false; + $this->cur_dialog = false; + } + + /* Abort user selection + */ + $smarty->assign("AbortSelectUser","SelectUserCancel"); + if(isset($_POST['SelectUserCancel'])){ + $this->dialog = false; + $this->addUser =""; + $this->cur_dialog = false; + } + + /* Selecte technical responsible person + */ + if(isset($_POST['SelectTechPerson']) && $this->acl_is_writeable("tech_num")){ + $this->addUser ="tech"; + $this->cur_dialog= new glpiSelectUser($this->config,$this->dn,"user_tech_num"); + $this->cur_dialog->set_acl_category(preg_replace("/\//","",$this->acl_category)); + $this->cur_dialog->set_acl_base($this->dn); + } + + /* Technical responsible person selected*/ + if(isset($_GET['act'])&&($_GET['act']=="user_tech_num")&&(strlen($_GET['id']) > 100)){ + print_red(sprintf(_("Could not add the given user, the users dn is too long, only 100 characters are allowed here."))); + + }elseif(isset($_GET['act'])&&($_GET['act']=="user_tech_num") && strlen($_GET['id'])){ + + + /* Get posted id */ + $id = base64_decode($_GET['id']); + + /* Check if user is already created in glpi database */ + if(!in_array($id,$users)){ + + /* If this user doesn't exists in glpi db, we must create him */ + $ldap->cat($id, array('cn', 'mail', 'telephoneNumber')); + $atr = $ldap->fetch(); + $tmp = array(); + $use = array( "cn" =>"name", + "mail" =>"email", + "telephoneNumber" =>"phone"); + + /* Create array */ + foreach($use as $gosa => $glpi){ + if(isset($atr[$gosa])){ + $tmp[$glpi]= $atr[$gosa][0]; + } + } + + /* Add this user */ + $this->handle->addUser($tmp,$id); + } + + /* Re-read users */ + $users = ($this->handle->getUsers()); + + /* Get user */ + $tmp = array_flip($users); + $id=$tmp[$id]; + + /* Use user id, close dialog */ + if($this->addUser == "tech"){ + $this->tech_num = $id; + }else{ + $this->contact_num = $id; + } + $this->cur_dialog = false; + $this->dialog= false; + } + + /* if( cur_dialog != false || cur_dialog != NULL) + * There is a dialog which wants to be displayed + */ + if(isset($this->cur_dialog) && is_object($this->cur_dialog)){ + $this->cur_dialog->save_object(); + $this->dialog=true; + $this->cur_dialog->parent = &$this; + return($this->cur_dialog->execute()); + }else{ + $this->dialog= false; + } + + /* Assign smarty defaults */ + foreach(array("SystemTypes","SystemTypeKeys","Manufacturers","OSs","TechnicalResponsibles","InstalledDevices","Attachments") as $attr){ + $smarty->assign($attr,array()); + } + + /* Assign some vars to smarty + */ + foreach(array("type","FK_glpi_enterprise","os","tech_num","contact_num","Attachments","InstalledDevices") as $attr){ + $smarty->assign($attr,""); + } + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Show tab dialog headers */ + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove inventory"), + _("This device has inventory informations enabled. You can disable them by clicking below.")); + } else { + $display= $this->show_enable_header(_("Add inventory"), + _("This device has inventory informations disabled. You can enable them by clicking below.")); + return ($display); + } + + /* Assign system types + */ + $smarty->assign("SystemTypeKeys", array_flip($this->handle->getSystemTypes())); + $smarty->assign("SystemTypes", $this->handle->getSystemTypes()); + $smarty->assign("type", $this->type); + + /* Assign os types + */ + $smarty->assign("OSKeys", array_flip($this->handle->getOSTypes())); + $smarty->assign("OSs", $this->handle->getOSTypes()); + $smarty->assign("os", $this->os); + + /* Dispaly installed devices */ + $smarty->assign("InstalledDevices" ,$this->getDevices()); + $smarty->assign("InstalledDeviceKeys" ,array_flip($this->getDevices())); + + /* Append manufacturers + */ + $smarty->assign("ManufacturerKeys", array_flip($this->handle->getEnterprises())); + $smarty->assign("Manufacturers", $this->handle->getEnterprises()); + $smarty->assign("FK_glpi_enterprise", $this->FK_glpi_enterprise); + + /* Assign used Attachments + */ + + $divlist = new divSelectBox("glpiAttachmentsList"); + $divlist-> SetHeight(130); + $atts = $this->getUsedAttachments(true); + $downlink = "%s"; + $del_link = ""; + foreach($atts as $id => $attachment){ + $divlist->AddEntry + ( + array( + array("string"=>$attachment['name']), + array("string"=>$attachment['mime']), + array("string"=>sprintf($downlink,$id,$attachment['filename'])), + array("string"=>sprintf($del_link,$attachment['ID']),"attach"=>"style='border-right:0px;'"), + ) + ); + } + + $smarty->assign("AttachmentsDiv" ,$divlist->DrawList()); + /* Handle contact person + Assign name ... to smarty, if set + */ + if(isset($users[$this->contact_num])){ + $ldap->cat($users[$this->contact_num], array('givenName', 'sn', 'uid')); + $tr = $ldap->fetch(); + $str = ""; + if(isset($tr['givenName'][0])){ $str .= $tr['givenName'][0]." "; } + if(isset($tr['sn'][0])) { $str .= $tr['sn'][0]." "; } + if(isset($tr['uid'][0])){ $str .= "[".$tr['uid'][0]."]"; } + $smarty->assign("contact_num", $str); + }else{ + $smarty->assign("contact_num", _("N/A")); + } + + /* Handle tech person + Assign name ... to smarty, if set + */ + if(isset($users[$this->tech_num])){ + $tr = $ldap->cat($users[$this->tech_num], array('givenName', 'sn', 'uid')); + $tr = $ldap->fetch(); + $str = ""; + if(isset($tr['givenName'][0])){ $str .= $tr['givenName'][0]." "; } + if(isset($tr['sn'][0])) { $str .= $tr['sn'][0]." "; } + if(isset($tr['uid'][0])){ $str .= "[".$tr['uid'][0]."]"; } + $smarty->assign("tech_num", $str); + }else{ + $smarty->assign("tech_num", _("N/A")); + } + $smarty->assign("comments", $this->comments); + + $display.= $smarty->fetch(get_template_path('glpi.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if ((!$this->initially_was_account) || (!$this->acl_is_removeable())){ + return; + } + if(function_exists("mysql_pconnect")){ + $this->handle = new glpiDB($this->data['SERVER'],$this->data['LOGIN'],$this->data['PASSWORD'],$this->data['DB']); + if($this->initially_was_account){ + $this->handle->removeComputerInformations($this->dn); + new log("remove","undefined/".get_class($this),$this->dn); + } + }else{ + print_red(_("Can't remove glpi account, while mysql extension is missing.")); + new log("remove","undefined/".get_class($this),$this->dn,array(),_("Can't remove glpi account, while mysql extension is missing.")); + } + + } + + function getDevices(){ + $ret = array(); + foreach($this->usedDevices as $type => $entries){ + foreach($entries as $ent){ + if(isset($ent['designation'])){ + $ret[] = $ent['designation']." [".$type."]"; + }else{ + $ret[] = $ent['name']." [".$type."]"; + } + } + } + return($ret); + } + + + /* Save data to object */ + function save_object() + { + if(!isset($_POST['glpi_tpl_posted'])) { + return ; + } + plugin::save_object(); + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + // if($this->TechnicalResponsible == ""){ + // $message[] = _("Please select a technical responsible person for this entry."); + // } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + if($this->is_account){ + $attrs = array(); + $this->date_mod = date("Y-m-d H:i:s"); + foreach($this->attributes as $attr){ + $attrs[$attr] = $this->$attr; + } + $attrs['name'] = $this->dn; + unset($attrs['ID']); + $this->handle = new glpiDB($this->data['SERVER'],$this->data['LOGIN'],$this->data['PASSWORD'],$this->data['DB']); + + /* check if we have to update, add */ + if($this->initially_was_account&&$this->is_account){ + $this->handle->updateComputerInformations($attrs,$this->orig_dn); + new log("modify","undefined/".get_class($this),$this->dn); + }elseif($this->is_account){ + $this->handle->addComputerInformations($attrs,$this->dn); + new log("create","undefined/".get_class($this),$this->dn); + } + $tmp = $this->handle->getComputerInformations($this->dn); + $this->handle->addDevicesToComputer($this->usedDevices,$tmp[0]['ID']); + } + } + + + /* Return used attachments */ + function getUsedAttachments($divlist = false) + { + $atts =$this->handle->getAttachments(); + $ret = array(); + foreach($atts as $entry){ + if(in_array($entry['ID'],$this->usedAttachments)){ + if($divlist){ + $ret[$entry['ID']] = $entry; + }else{ + $cm =""; + if(isset($entry['comment'])){ + $cm=" [".$entry['comment']."]"; + } + if(isset($entry['mime'])){ + $cm.=" -".$entry['mime'].""; + } + + $ret[$entry['ID']]= $entry['name'].$cm; + } + } + } + return($ret); + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Glpi"), + "plDescription" => _("Inventory extension"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 20, + "plSection" => array("administration"), + "plCategory" => array("workstation","terminal","component","server","phone") , + "plProvidedAcls"=> array( + + "tech_num" => _("Technical responsible"), + "comments" => _("Comment"), + "os" => _("Operating system"), + "location" => _("Location"), + "contact_num" => _("Contact person"), + "model" => _("Model"), + "type" => _("Type"), + "FK_glpi_enterprise" => _("Manufacturer"), + "Attachments" => _("Attachments"), + "Devices" => _("Peripheral devices")) + )); + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiAttachmentPool.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiAttachmentPool.inc new file mode 100644 index 000000000..9d5570f2b --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiAttachmentPool.inc @@ -0,0 +1,359 @@ +"*")); + } + + /* Assign used attributes */ + if($used !== NULL){ + $this->Selected = $used; + } + } + + function execute() + { + plugin::execute(); + $attach = $this->parent->handle->getAttachments(); + /* Fill templating stuff */ + $smarty = get_smarty(); + $display = ""; + $only_once = true; + + /* walk through all posted objects */ + foreach($_POST as $name => $value){ + + /* Open dialog to create a new entry */ + if(preg_match("/new_attach/",$name)){ + $this->edit = true; + $this->entry=array(); + + /* Set default values */ + foreach($this->attributes as $attr) { + $this->$attr = ""; + $this->entry[$attr]=""; + } + } + + /* Remove attach*/ + if((preg_match("/^delAttach_/",$name))&&($only_once)){ + $only_once = false; + $str = preg_replace("/^delAttach_/","",$name); + $str = base64_decode(preg_replace("/_.*$/","",$str)); + + /* remove attach from db */ + $this->delAttach = $str; + $smarty->assign("warning",msgPool::deleteInfo($attach[$str]['name'],_("attachment"))); + return($smarty->fetch(get_template_path('remove_glpi.tpl',TRUE,dirname(__FILE__)))); + } + + /* Start editing entry */ + if((preg_match("/^editAttach_/",$name))&&($only_once)){ + $only_once = false; + $str = preg_replace("/^editAttach_/","",$name); + $str = base64_decode(preg_replace("/_.*$/","",$str)); + + /* Check if we have an attachment with given ID */ + foreach($attach as $att ){ + if($att['ID'] == $str ){ + + /* Entry was found, show dialog */ + $this->edit = true; + $this->entry = $att; + + foreach($att as $name => $value){ + $this->$name = $value; + } + } + } + } + } + + if((isset($_POST['delete_glpi_confirm']))&&(isset($attach[$this->delAttach]))){ + if($this->parent->handle->is_attachmentUsed($this->delAttach)){ + $tmp = $this->parent->handle->is_attachmentUsed($this->delAttach); + + $names = ""; + foreach($tmp as $name){ + $names .= ", ".$name; + } + $names = preg_replace("/^, /","",$names); + $names = trim($names); + if(count($tmp) == 3){ + $names .= " ..."; + } + print_red(sprintf(_("You can't delete this attachment, it is still in use by these system(s) '%s'"),$names)); + + }else{ + $this->parent->handle->deleteAttachment($this->delAttach); + @unlink(CONFIG_DIR."/glpi/".$this->filename); + $attach = $this->parent->handle->getAttachments(); + } + } + + /* Someone tries to upload a file */ + if(($this->edit == true)&&(isset($_POST['upload']))){ + if(!isset($_FILES['filename'])){ + print_red(_("There is no valid file uploaded.")); + }else{ + $FILE = $_FILES['filename']; + if(!isset($FILE['name'])){ + print_red(_("There is no valid file uploaded.")); + }else{ + if($FILE['error']!=0) { + print_red(_("Upload wasn't successfull.")); + }else{ + if(!is_dir(CONFIG_DIR."/glpi/")){ + print_red(sprintf(_("Missing directory '%s/glpi/' to store glpi uploads."),CONFIG_DIR)); + }else{ + $filen = CONFIG_DIR."/glpi/".$FILE['name']; + if(file_exists($filen)){ + print_red(_("There is already a file with the same name uploaded.")); + }else{ + $fh = fopen($filen,"w"); + if(!$fh){ + print_red(sprintf(_("Can't create file '%s'."),$filen)); + }else{ + $str = file_get_contents($FILE['tmp_name']); + fwrite($fh,$str,strlen($str)); + fclose($fh); + $this->mime = $FILE['type']; + $this->filename = $FILE['name']; + } + } // File already exists + } + } // Check if any error occurred + } // check if valid filename was uploaded + } // ende check if file was uploaded + }// upload post + + /* save attachment*/ + if(($this->edit == true)&&(isset($_POST['SaveAttachment']))){ + if(count($this->check())==0){ + $this->date_mod = date("Y-m-d H:i:s"); + $this->save_entry(); + $this->edit= false; + $this->entry = array(); + $attach = $this->parent->handle->getAttachments(); + }else{ + foreach($this->check() as $msg){ + print_red($msg); + } + } + } + + /* Abort editing/adding attachment*/ + if(($this->edit == true)&&(isset($_POST['CancelAttachment']))){ + $this->edit = false; + $this->entry = array(); + } + + /* If edit == true, we have to show a dialog to edit or add an attach + */ + if($this->edit == true){ + foreach($this->attributes as $attr){ + $smarty->assign($attr,htmlentities(utf8_decode($this->$attr))); + } + if(!empty($this->filename)){ + if(is_readable(CONFIG_DIR."/glpi/".$this->filename)){ + $status =_("File is available."); + }else{ + $status =_("File is not readable, possibly the file is missing."); + } + }else{ + $status = _("Currently no file uploaded."); + } + $smarty->assign("status",$status); + return($smarty->fetch(get_template_path('glpiAttachmentEdit.tpl',TRUE,dirname(__FILE__)))); + } + + /* Create list with checkboxes to select / deselect some attachents */ + $divlist = new divlist("Attachment"); + $divlist->SetPluginMode(); + $divlist->SetHeader(array( + array("string" => " ", "attach" => "style='text-align:center;width:20px;'"), + array("string" => _("Name")), + array("string" => _("Mime"),"attach"=>"style='width:200px;'"), + array("string" => _("Actions"), "attach" => "style='width:60px;border-right:0px;text-align:right;'" ))); + + $divlist->SetSummary(_("This table displays all available attachments.")); + $divlist->SetEntriesPerPage(0); + + $editdel = ""; + $editdel.= ""; + + /* Add all given attachments to divlist + */ + foreach($attach as $entry){ + + /* Create display name*/ + if((empty($entry['name']))||(empty($entry['comment']))){ + + /* In glpi it is possible to add entries without name + so i've added this block + */ + if(empty($entry['name'])){ + $str1 = ""._("empty").""; + }else{ + $str1 = $entry['name']; + } + + if(!empty($entry['comment'])){ + $str1.= " [".$entry['comment']."]"; + } + }else{ + /* Both attributes given */ + $str1 = $entry['name']." [".$entry['comment']."]"; + } + + $edit = str_replace("%s",base64_encode($entry['ID']),$editdel); + $str2 = $entry['mime']." "; + + $chkbox = "". + ""; + + if(in_array($entry['ID'],$this->Selected)){ + $chkbox = preg_replace("/%CHECKED%/"," checked ",$chkbox); + }else { + $chkbox = preg_replace("/%CHECKED%/"," ",$chkbox); + } + $chkbox = preg_replace("/%s/",$entry['ID'],$chkbox); + $divlist->AddEntry(array( + array("string" => $chkbox, + "attach" => "style='text-align:center;width:20px;'"), + array("string"=> $str1), + array("string"=> $str2,"attach"=>"style='width:200px;'"), + array("string"=> $edit ,"attach" => "style='width:60px;border-right:0px;text-align:right;'") + )); + + } + + $listhead = "
". + "  ". + "
"; + + $GlpiAttachmentFilter = session::get('GlpiAttachmentFilter'); + + $smarty->assign("attachments", $divlist->DrawList()); + $smarty->assign("attachmenthead", $listhead); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("searchu_image", get_template_path('images/lists/search-user.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info_small.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("attachment_regex", $GlpiAttachmentFilter['filter']); + + $display.= $smarty->fetch(get_template_path('glpiAttachmentPool.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + function save() + { + return($this->Selected); + } + + /* Adds new or saves edited entries */ + function save_entry() + { + if($this->edit){ + $tmp = array(); + foreach($this->attributes as $attr){ + $tmp[$attr] = $this->$attr; + } + $id = -1; + if(isset($this->entry['ID'])){ + $id = $this->entry['ID']; + } + $this->parent->handle->saveAttachments($tmp,$id); + } + } + + function save_object() + { + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + + /* Checkboxes are only posted, if they are checked + * To check if it was deselected, we check if wasOnPage + * was posted with given name, so we can deselect this entry + */ + + foreach($_POST as $name => $value){ + if(preg_match("/wasOnPage_/",$name)){ + $id=preg_replace("/wasOnPage_/","",$name); + if(isset($_POST["useMe_".$id])){ + $this->Selected[$id]=$id; + }else{ + if(isset($this->Selected[$id])){ + unset($this->Selected[$id]); + } + } + } + } + } + + /* Simple check */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if($this->edit){ + + /* check if given name is already in use */ + $att = $this->parent->handle->getAttachments(); + $ok = true; + $this->name=trim($this->name); + + foreach($att as $val){ + if(!isset($this->entry['ID'])){ + if($val['name'] == $this->name){ + $ok = false; + } + }else{ + if(($val['name'] == $this->name)&&($this->entry['ID'] != $val['ID'])){ + $ok = false; + } + } + } + if(!$ok){ + $message[] = _("This name is already in use."); + } + if(empty($this->name)){ + $message[] = _("Please specify a valid name for this attachment."); + } + } + return($message); + } + +}// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiDeviceManagement.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiDeviceManagement.inc new file mode 100644 index 000000000..699d598db --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiDeviceManagement.inc @@ -0,0 +1,422 @@ +ui = get_userinfo(); + + if(isset($used)){ + $this->Selected = $used; + } + + /* Specify which vars are allowed for a sepcific type of device */ + $this->DeviceAttrs['case'] = array("designation","format","comment","FK_glpi_enterprise"); + $this->DeviceAttrs['moboard'] = array("designation","chipset","comment","FK_glpi_enterprise"); + $this->DeviceAttrs['processor'] = array("designation","frequence","comment","FK_glpi_enterprise","specif_default"); + $this->DeviceAttrs['iface'] = array("designation","bandwidth","comment","FK_glpi_enterprise","specif_default"); + $this->DeviceAttrs['ram'] = array("designation","frequence","comment","FK_glpi_enterprise","specif_default","type"); + $this->DeviceAttrs['hdd'] = array("designation","rpm","interface","cache","comment","FK_glpi_enterprise","specif_default"); + $this->DeviceAttrs['drive'] = array("designation","speed","interface","is_writer","comment","FK_glpi_enterprise","specif_default"); + $this->DeviceAttrs['control'] = array("designation","interface","raid","comment","FK_glpi_enterprise"); + $this->DeviceAttrs['gfxcard'] = array("designation","ram","interface","comment","FK_glpi_enterprise","specif_default"); + $this->DeviceAttrs['sndcard'] = array("designation","type","comment","FK_glpi_enterprise","specif_default"); + $this->DeviceAttrs['power'] = array("designation","power","comment","FK_glpi_enterprise","atx"); + $this->DeviceAttrs['pci'] = array("designation","comment","FK_glpi_enterprise","specif_default"); + $this->DeviceAttrs['monitor'] = array("name","comments","serial","otherserial","size", + "flags_micro","flags_speaker","flags_subd","flags_bnc", + "location","type","FK_glpi_enterprise","is_global","deleted","is_template","tplname"); + + $this->AllowedDevices=array("case","moboard","sndcard","processor","iface","ram","hdd","drive","control","gfxcard","power","pci","monitor"); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Get all defined devices */ + $this->reload(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* this var is used to ensure that every post is only performed once */ + $only_once = true; + + /* Check Post for some actions */ + foreach($_POST as $name => $value){ + + /* If new_ then we should create an new device */ + if((preg_match("/^new_/",$name))&&($only_once)){ + + /* don't do this twice */ + $only_once = false; + + /*extract device device_type */ + $deviceType = preg_replace("/_.*$/","",preg_replace("/^new_/","",$name)); + + /* Check if type is allowed, and create empty entry */ + $tmp = array(); + if((!isset($this->DeviceAttrs[$deviceType]))||((!in_array($deviceType,$this->AllowedDevices)))){ + print_red(sprintf(_("Internal Error can't create device of type '%s'"),$deviceType)); + }else{ + foreach($this->DeviceAttrs[$deviceType] as $attr){ + $tmp[$attr] = ""; + } + $tmp['device_type'] = $deviceType; + $this->EditEntry = $tmp; + $this->editMode =true; + } + } + } + + /* delete was requested ... show dialog */ + if((isset($_GET['act']))&&($_GET['act']=="del_device")){ + $id = base64_decode($_GET['id']); + $tmp = $this->devices[$id]; + + $this->delete = $tmp; + + if(isset($tmp['name'])){ + $smarty->assign("warning",msgPool::deleteInfo($tmp['name'],_("glpi device"))); + }elseif(isset($tmp['designation'])){ + $smarty->assign("warning",msgPool::deleteInfo($tmp['designation'],_("glpi device"))); + }else{ + print_red(_("Can't detect object name.")); + } + + return($smarty->fetch(get_template_path('remove_glpi.tpl',TRUE,dirname(__FILE__)))); + } + + /* Delete entry, but check if this device is in currently in use */ + if(isset($_POST['delete_glpi_confirm'])){ + if(count($this->parent->handle->is_deviceUsed($this->delete))){ + + $tmp = $this->parent->handle->is_deviceUsed($this->delete); + + $names = ""; + foreach($tmp as $name){ + $names .= ", ".$name; + } + $names = preg_replace("/^, /","",$names); + $names = trim($names); + if(count($tmp) == 3){ + $names .= " ..."; + } + print_red(sprintf(_("You can't delete this device, it is still in use by these system(s) '%s'"),$names)); + }else{ + $this->parent->handle->deleteDevice($this->delete); + $this->reload(); + } + } + + /* Open entry for editing if requested */ + if((isset($_GET['act']))&&($_GET['act']=="edit_device")){ + $id = base64_decode($_GET['id']); + $this->editMode =true; + $this->EditEntry = $this->devices[$id]; + } + + /* Abort editing this entry */ + if(isset($_POST['AbortDeviceChanges'])){ + $this->EditEntry = array(); + $this->editMode = false; + } + + /* Save all changes made on currently selected entry */ + if(isset($_POST['SaveDeviceChanges'])){ + + /* First check if all changes made are allowed */ + if(count($this->check())==0){ + $this->save(); + $this->editMode = false; + $this->reload(); + }else{ + foreach($this->check() as $msg){ + print_red($msg); + } + } + + } + + /* Check if we are currently editing something ? */ + if($this->editMode == true){ + return ($this->editDevice($this->EditEntry)); + } + + /* ENDE : GET / POST handling + * Below, only output generation for headpage + */ + + $divlist = new divlist("glpi devices"); + $divlist->SetPluginMode(); + $divlist->SetEntriesPerPage(0); + $divlist->SetHeader(array( + array("string" => " ", "attach" => "style='text-align:center;width:20px;'"), + array("string" => _("devices"), "attach" => "style=''"), + array("string" => _("Actions"), "attach" => "style='width:60px;border-right:0px;text-align:right;'" ))); + + $edit = "%s"; + $editdel = ""._("Edit").""; + $editdel.= ""._("Delete").""; + + $useDevice = ""; + + foreach($this->devices as $key=>$user){ + + if(isset($user['designation'])){ + $str = "designation"; + }else{ + $str = "name"; + } + + if(isset($this->Selected[$user['device_type']][$user[$str]])){ + $use = " checked "; + }else{ + $use =""; + } + + /* Dawn databse struckture ....*/ + if(empty($user['comment']) && isset($user['comments'])) { + $user['comment'] = $user['comments']; + } + + $field1 = array("string" => preg_replace("/%s/",base64_encode($key),preg_replace("/%USE%/",$use,$useDevice)), "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($edit,base64_encode($key),$user[$str]." [".$user['comment']."]"), "attach" => "style=''"); + $field3 = array("string" => sprintf($editdel,base64_encode($key),base64_encode($key)), + "attach" => "style='width:60px;border-right:0px;text-align:right;'"); + $divlist->AddEntry(array($field1,$field2,$field3)); + + } + + $listhead = "
". + "  ". + "  ". + "  ". + "  ". + "  ". + "  ". + "  ". + "  ". + "  ". + "  ". + "  ". + "  ". + "  ". + "
"; + + $filter = session::get('glpiDeviceRegex'); + $smarty->assign("devicehead", $listhead); + $smarty->assign("devices", $divlist->DrawList()); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("searchu_image", get_template_path('images/lists/search-user.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info_small.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("device_regex", $filter['device_regex']); + + $display.= $smarty->fetch(get_template_path('glpiDeviceManagement.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + /* Save device to glpi database + * If this is a new device, create a new entry, else update this entry + */ + function save() + { + if($this->parent->handle->deviceExists($this->EditEntry)){ + $this->parent->handle->updateDevices($this->EditEntry); + }else{ + $this->parent->handle->addDevice($this->EditEntry); + } + + } + + /* this only gets all already defined devices */ + function reload() + { + $this->devices = $this->parent->handle->getDevices(); + ksort($this->devices); + } + + /* This funtions saves all POST variables. + The variable must be in the array $this->EditEntry + */ + function save_object() + { + foreach($_POST as $name => $value){ + + if(preg_match("/wasOnPage_/",$name)){ + $dN = base64_decode($value); + + $device = $this->devices[$dN]; + $type = $device['device_type']; + + if(isset($device['designation'])){ + $str = "designation"; + }else{ + $str = "name"; + } + + if(isset($_POST['useDevice_'.$value])){ + $this->Selected[$type][$device[$str]] = $device; + }else{ + if(isset($this->Selected[$type][$device[$str]])){ + unset($this->Selected[$type][$device[$str]]); + } + } + } + } + + if(is_array($this->EditEntry)){ + foreach($this->EditEntry as $name => $value){ + if(isset($_POST[$name])){ + $this->EditEntry[$name] = $_POST[$name]; + } + + } + } + } + + /* returns the selected devices */ + function getSelected() + { + return($this->Selected); + } + + /* This function checks all created devices. + If you wan't to use device specific checks, + use >>if($attr['device_type']=="moboard")<< to create a device type depending check + */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + $attr = $this->EditEntry; + + if(isset($attr['designation'])){ + $str2 = "designation"; + }else{ + $str2 = "name"; + } + if(empty($attr[$str2])){ + $message[]=(_("You have to specify a valid name for this device.")); + } + + /* Avoid same name twice */ + $devices = ($this->parent->handle->getDevices()); + foreach($devices as $dev){ + + /* Some devices use designation some name for name + */ + if(isset($dev['designation'])){ + $str = "designation"; + }else{ + $str = "name"; + } + + if($dev[$str]==$attr[$str2]){ + + /* Entries with ['ID'] already exists, and are only edited, if ID is missing we are currently creating a new entry */ + if(isset($attr['ID'])){ + if(!(($dev['ID'] == $attr['ID'])&&($dev['device_type']==$attr['device_type']))){ + $message[] = _("This device name is already in use."); + } + }else{ + $message[] = _("This device name is already in use."); + } + } + } + + return($message); + } + + /* This functions displays the template for all available devices + * This function is also used if we create a new device + */ + function editDevice($entry) + { + $smarty = get_smarty(); + + /* Transfer given data to smarty */ + foreach($this->EditEntry as $name => $value){ + $smarty->assign($name,htmlentities(utf8_decode($value))); + } + + /* Set default select boxes, manufacturers ... */ + $smarty->assign("device_type",$entry['device_type']); + + $none = array(0 => _("none")); + $manufacturer = array_merge($none,$this->parent->handle->getEnterprises()); + + $ramtypes = $this->parent->handle->getRAMTypes(); + + $smarty->assign("RAMtypes", $ramtypes); + $smarty->assign("RAMtypeKeys", array_flip($ramtypes)); + + $deviceControlTypes = array_merge($none,$this->parent->handle->getGlpiDeviceControlTypes()); + + $smarty->assign("HDDInterfaceKeys",array_flip($deviceControlTypes)); + $smarty->assign("HDDInterfaces" , $deviceControlTypes); + + $gfxControlTypes = array("0"=>_("None"),"AGP"=>"AGP","PCI"=>"PCI","PCI-X"=>"PCI-X","Other"=>_("Other")); + + $smarty->assign("GFXInterfaceKeys",array_flip($gfxControlTypes)); + $smarty->assign("GFXInterfaces" , $gfxControlTypes); + + $smarty->assign("FK_glpi_enterpriseKeys",array_flip($manufacturer)); + $smarty->assign("FK_glpi_enterprises", $manufacturer); + + $smarty->assign("formats",array("Large","Medium","Micro")); + $smarty->assign("formats",array("Large","Medium","Micro")); + + $smarty->assign("formats",array("Large","Medium","Micro")); + $smarty->assign("formatKeys",array('Grand','Moyen','Micro')); + return($smarty->fetch(get_template_path('glpi_devices.tpl',TRUE,dirname(__FILE__)))); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiManufacturer.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiManufacturer.inc new file mode 100644 index 000000000..3afa261c0 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiManufacturer.inc @@ -0,0 +1,165 @@ +ui = get_userinfo(); + } + + function execute() + { + plugin::execute(); + $smarty = get_smarty(); + $display = ""; + + /* Remove enterprise from db */ + if((isset($_POST['remove_manu']))&&(isset($_POST['manufacturer']))){ + + $tmp = $this->parent->handle->is_manufacturerUsed($_POST['manufacturer']); + if(count($tmp)){ + + $names = ""; + foreach($tmp as $name){ + $names .= ", ".$name; + } + $names = preg_replace("/^, /","",$names); + $names = trim($names); + if(count($tmp) == 3){ + $names .= " ..."; + } + print_red(sprintf(_("You can't delete this manufacturer, it is still in use by these system(s) '%s'"),$names)); + }else{ + $this->parent->handle->removeEnterprise($_POST['manufacturer']); + } + } + + /* Add new Manufactuer : Open dialog with empty fields */ + if(isset($_POST['add_manu'])){ + $this->editMode = true; + $this->Edit_Add = "add"; + foreach($this->attributes as $atr){ + $this->$atr = ""; + } + } + + /* Edit existing manuatctuerer data */ + if((isset($_POST['edit_manu']))&&(isset($_POST['manufacturer']))){ + $this->editMode = true; + $this->Edit_Add = "edit"; + $tmp = $this->parent->handle->getEnterprise($_POST['manufacturer']); + $tmp = $tmp[0]; + foreach($this->attributes as $atr){ + $this->$atr = ""; + } + foreach($this->attributes as $atr){ + if(isset($tmp[$atr])){ + $this->$atr = $tmp[$atr]; + } + } + $this->ID = $_POST['manufacturer']; + } + + /* close Dialog without saving */ + if(isset($_POST['close_manufacturer'])){ + $this->editMode=false; + } + + /* close dialog an save all changes / adds */ + if(isset($_POST['save_manufacturer'])){ + $tmp = array(); + foreach($this->attributes as $attrs){ + $tmp[$attrs]=$this->$attrs; + } + + $allok = true; + if(empty($tmp['name'])){ + print_red(_("Please specify a name.")); + $allok = false; + } + + $attr = $this->parent->handle->getEnterprises(); + + if($this->ID == -1 ){ + if(in_array($tmp['name'],$attr)){ + $allok = false; + print_red(_("Specified name is already in use, please choose another one.")); + } + }else{ + unset($attr[$this->ID]); + if(in_array($tmp['name'],$attr)){ + $allok = false; + print_red(_("Specified name is already in use, please choose another one.")); + } + } + + /* all checks are ok , so save changes */ + if($allok){ + if($this->Edit_Add == "add"){ + $this->parent->handle->addEnterprise($tmp); + $this->editMode=false; + }else{ + $this->parent->handle->updateEnterprise($tmp,$this->ID); + $this->editMode=false; + } + } + } + + /* As long as this war is true, we have to display the edit dialog */ + if($this->editMode == true){ + $this->save_object(); + foreach($this->attributes as $attrs){ + $smarty->assign($attrs,$this->$attrs); + } + + $display.= $smarty->fetch(get_template_path('glpiManufacturerAdd.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + + $smarty->assign("Manus", $this->parent->handle->getEnterprises()); + $smarty->assign("ManuKeys", array_flip($this->parent->handle->getEnterprises())); + $display.= $smarty->fetch(get_template_path('glpiManufacturer.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + /* Save to LDAP */ + function save() + { + } + + function save_object() + { + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = stripslashes($_POST[$attr]); + } + } + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterAccount.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterAccount.inc new file mode 100644 index 000000000..5e2779ace --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterAccount.inc @@ -0,0 +1,821 @@ +ui= get_userinfo(); + + $this->is_account = false; + + /* Abort class construction, if no db is defined */ + if(!isset($this->config->data['SERVERS']['GLPI'])){ + return; + } + + // Get informations about databse connection + $this->data = $this->config->data['SERVERS']['GLPI']; + + // Abort if mysql extension is missing + if(!is_callable("mysql_connect")){ + return; + } + + // Create handle of glpi class, and check if database connection is established + $this->handle = new glpiDB($this->data['SERVER'],$this->data['LOGIN'],$this->data['PASSWORD'],$this->data['DB']); + + if(!$this->handle->is_connected){ + return; + } + + // If this dn is already used in database, then get all informations for this entry + if($this->handle->is_printer_account($this->dn)){ + $this->is_account = true; + $tmp = ($this->handle->getPrinterInformations($this->dn)); + + foreach(array("tech_num","FK_glpi_enterprise","type","comments","contact_num","flags_serial","flags_par","flags_usb","ramSize") as $attr){ + $this->$attr = $tmp[0][$attr]; + } + + $atts = $this->handle->getAssignPrinterAttachments($tmp[0]['ID']); + foreach($atts as $attachment){ + $this->usedAttachments[$attachment['FK_doc']]=$attachment['FK_doc']; + } + + $cart= $this->handle->getUsedCartridges($tmp[0]['ID']); + foreach($cart as $key => $cartridge){ + $this->usedCartridges[$key]=$cartridge; + $this->usedCartridges[$key]['status']="exists"; + } + + + }else{ + $this->is_account = false; + } + + /* set defaults */ + $this->name = $this->dn; + $this->orig_dn = $this->dn; + $this->initially_was_account = $this->is_account; + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","printer/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + $smarty->assign("CartridgesACL",$this->getacl("Cartridges")); + + /* Assign smarty defaults + To avoid undefined indexes, if there is an error with the glpi db + */ + foreach(array("PrinterTypeKeys","PrinterTypes","ManufacturerKeys","Manufacturers", + "Attachments","AttachmentKeys","CartridgeKeys","Cartridges") as $attr){ + $smarty->assign($attr,array()); + } + foreach(array("type","FK_glpi_enterprise","tech_num","contact_num","comments","flags_serial","flags_par","flags_usb","AttachmentsDiv") as $attr){ + $smarty->assign($attr,""); + } + + /* Assign acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + /* Check if there is a glpi database server defined + */ + if(!isset($this->config->data['SERVERS']['GLPI'])){ + print_red(_("There is no server with valid glpi database service.")); + return($smarty->fetch(get_template_path('glpiPrinter.tpl',TRUE,dirname(__FILE__)))); + } + + $this->data = $this->config->data['SERVERS']['GLPI']; + + /* Check if we can call mysql_connect + If we can't, there is no the mysql-php extension + */ + if(!is_callable("mysql_connect")){ + print_red(_("Can't connect to glpi database, the php-mysql extension is missing.")); + return($smarty->fetch(get_template_path('glpiPrinter.tpl',TRUE,dirname(__FILE__)))); + } + + $this->handle = new glpiDB($this->data['SERVER'],$this->data['LOGIN'],$this->data['PASSWORD'],$this->data['DB']); + + /* If handle == false, abort + Seems that the server, username and or password is wrong + */ + if(!$this->handle->is_connected){ + print_red(_("Can't connect to glpi database, check configuration twice.")); + return($smarty->fetch(get_template_path('glpiPrinter.tpl',TRUE,dirname(__FILE__)))); + } + + /* Download requested of attachment requested. + */ + if(isset($_GET['get_attachment'])){ + $atts = $this->handle->getAttachments(); + if(isset($atts[$_GET['get_attachment']])){ + $att = $atts[$_GET['get_attachment']]; + $filename = CONFIG_DIR."/glpi/".$att['filename']; + if(file_exists($filename) && is_readable($filename)){ + $str = file_get_contents($filename); + send_binary_content($str,$att['filename']); + }else{ + print_red(_("Download of attachment failed. Attachment was not found on server.")); + } + }else{ + print_red(_("Download of attachment failed. Not a valid attachment id.")); + } + } + + + /* All checks are ok + Lets handle Posts, templates etc below ... + */ + + $users = $this->handle->getUsers(); + $ldap= $this->config->get_ldap_link(); + + + /* ########################################################################## + * Some tab management + */ + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Show tab dialog headers */ + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove inventory"), + _("This server has inventory features enabled. You can disable them by clicking below.")); + } else { + $display= $this->show_enable_header(_("Add inventory"), + _("This server has inventory features disabled. You can enable them by clicking below.")); + return ($display); + } + + + /* ########################################################################## + * Printer type management + * Dialog + */ + + /* Rename was requested */ + if(isset($_POST['Rename_PType_OK']) && $this->acl_is_writeable("type")){ + $tmp = $this->handle->getPrinterTypes(); + $allok = true; + foreach($tmp as $id => $name){ + if(trim($name) == trim($_POST['string'])){ + $allok = false; + } + } + if($allok){ + $this->handle->updatePrinterType($_POST['string'],$this->select_type); + $this->rename = false; + }else{ + print_red(sprintf(_("Can't rename given printer type to '%s', because this type name already exists."),$_POST['string'])); + } + } + + /* abort rename + */ + if(isset($_POST['Rename_Cancel'])){ + $this->rename = false; + } + + /* Printer type management + */ + if(isset($_POST['edit_type']) && $this->acl_is_writeable("type")){ + $this->dialog = true; + $this->edit_type=true; + } + + /* This closes the printer type editing dialog + */ + if(isset($_POST['close_edit_type'])){ + $this->edit_type=false; + $this->dialog = false; + } + + /* This appends a new printer to our sytem types + */ + if((isset($_POST['add_type']))&&(!empty($_POST['type_string'])) && $this->acl_is_writeable("type")){ + + $tmp = $this->handle->getPrinterTypes(); + $allok = true; + foreach($tmp as $id => $name){ + if(trim($name) == trim($_POST['type_string'])){ + $allok = false; + } + } + if($allok){ + $this->handle->addPrinterType($_POST['type_string']); + }else{ + print_red(sprintf(_("Can't rename given printer type to '%s', because this type name already exists."),$_POST['type_string'])); + } + } + + /* Remove selected type from our printer types list + */ + if((isset($_POST['del_type']))&&(!empty($_POST['select_type'])) && $this->acl_is_writeable("type")){ + $tmp = $this->handle->is_printerTypeUsed($_POST['select_type']); + if(count($tmp)){ + $str = ""; + foreach($tmp as $id => $name){ + $str .= $name.", "; + } + $str = preg_replace("/, $/","",$str); + print_red(sprintf(_("Can't delete printer type, it is still in use by '%s'."),$str)); + }else{ + $this->handle->removePrinterType($_POST['select_type']); + } + } + + /* Rename selected printer type to given string + */ + if((isset($_POST['rename_type']))&&(!empty($_POST['select_type']))||($this->rename) && $this->acl_is_writeable("type")){ + $this->rename = true; + + $smarty->assign("Method","rename"); + + $tmp = $this->handle->getPrinterTypes(); + + if(isset($_POST['select_type'])){ + $this->select_type = $_POST['select_type']; + } + $smarty->assign("string",$tmp[$this->select_type]); + if(isset($_POST['string'])){ + $smarty->assign("string",$_POST['string']); + } + + $display= $smarty->fetch(get_template_path('glpi_edit_printer_type.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + /* Someone wants to edit the printer types ... + So, lets open a new dialog which provides some buttons to edit the types + */ + if($this->edit_type){ + $smarty->assign("Method","edit"); + $smarty->assign("PrinterTypes", $this->handle->getPrinterTypes()); + $smarty->assign("PrinterTypeKeys", array_flip($this->handle->getPrinterTypes())); + $display= $smarty->fetch(get_template_path('glpi_edit_printer_type.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + + /* ########################################################################## + * Edit manufacturers + * Dialog + */ + + /* Open dialog which allows to edit the manufacturers + */ + if(isset($_POST['edit_manufacturer']) && $this->acl_is_writeable("FK_glpi_enterprise")){ + $this->cur_dialog = new glpiManufacturer($this->config,$this->dn); + $this->dialog = true; + $this->editManufacturer =true; + } + + /* Close manufacturer editing dialog + */ + if((isset($_POST['close_edit_manufacturer']))&&($this->editManufacturer)){ + $this->dialog = false; + $this->cur_dialog = false; + $this->editManufacturer=false; + } + + + /* ########################################################################## + * Technical responsible person + * Contact person + * Dialog + */ + + /* Show dialog to select a new contact person + * Select a contact person + */ + if(isset($_POST['SelectContactPerson']) && $this->acl_is_writeable("contact_num")){ + $this->addUser = "contact"; + $this->cur_dialog= new glpiSelectUser($this->config,$this->dn,"user_tech_num"); + } + + /* Selecte technical responsible person + */ + if(isset($_POST['SelectTechPerson']) && $this->acl_is_writeable("tech_num")){ + $this->addUser ="tech"; + $this->cur_dialog= new glpiSelectUser($this->config,$this->dn,"user_tech_num"); + } + + /* Abort user selection + */ + $smarty->assign("AbortSelectUser","SelectUserCancel"); + if(isset($_POST['SelectUserCancel'])){ + $this->dialog = false; + $this->addUser =""; + $this->cur_dialog = false; + } + + /* Technical responsible/contact person selected */ + if(isset($_GET['act'])&&($_GET['act']=="user_tech_num")){ + + /* Get posted id */ + $id = base64_decode($_GET['id']); + + /* Check if user is already created in glpi database */ + if(!in_array($id,$users)){ + + /* If this user doesn't exists in glpi db, we must create him */ + $ldap->cat($id, array('cn', 'mail', 'telephoneNumber')); + $atr = $ldap->fetch(); + $tmp = array(); + $use = array( "cn" =>"name", + "mail" =>"email", + "telephoneNumber" =>"phone"); + + /* Create array */ + foreach($use as $gosa => $glpi){ + if(isset($atr[$gosa])){ + $tmp[$glpi]= $atr[$gosa][0]; + } + } + + /* Add this user */ + $this->handle->addUser($tmp,$id); + } + + /* Re-read users */ + $users = ($this->handle->getUsers()); + + /* Get user */ + $tmp = array_flip($users); + $id=$tmp[$id]; + + /* Use user id, close dialog */ + if($this->addUser == "tech"){ + $this->tech_num = $id; + }else{ + $this->contact_num = $id; + } + $this->cur_dialog = false; + $this->dialog= false; + } + + + /* ########################################################################## + * Handle attachments + */ + + /* Attachment pool was closed with use + */ + if(isset($_POST['UseAttachment']) && $this->acl_is_writeable("Attachments")){ + if(count($this->cur_dialog->check())){ + foreach($this->cur_dialog->check() as $msg){ + print_red($msg); + } + }else{ + $this->cur_dialog->save_object(); + $this->usedAttachments = $this->cur_dialog->save(); + $this->cur_dialog = false; + $this->edit_type = false; + } + } + + /* Attachment pool was closed with abort + */ + if(isset($_POST['AbortAttachment'])){ + $this->cur_dialog = false; + $this->edit_type = false; + } + + /* Open Attachment pool to add/edit Attachments + */ + if(isset($_POST['AddAttachment']) && $this->acl_is_writeable("Attachments")){ + $this->cur_dialog = new glpiAttachmentPool($this->config,$this->dn,$this->usedAttachments); + $this->dialog = true; + } + + /* Remove Attachment from this tab + */ + $once = true; + foreach($_POST as $name => $value){ + if((preg_match("/^delAttachment_/",$name))&&($once) && $this->acl_is_writeable("Attachments")){ + $once= false; + $name = preg_replace("/^delAttachment_/","",$name); + $entry = preg_replace("/_.*$/","",$name); + if(isset($this->usedAttachments[$entry])){ + unset($this->usedAttachments[$entry]); + } + } + } + if((isset($_POST['RemoveAttachment']))&&(isset($_POST['Attachments'])) && $this->acl_is_writeable("Attachments")){ + if(isset($this->usedAttachments[$_POST['Attachments']])){ + unset($this->usedAttachments[$_POST['Attachments']]); + } + } + + /* ########################################################################## + * Printer Cartridge handling + */ + + /* Abort cartridge select dialog + */ + if(isset($_POST['SelectCartridgeCancel'])){ + $this->cur_dialog = false; + $this->edit_type = false; + } + + /* Get selected cartridges and add them to our list + */ + if(isset($_POST['SelectCartridgeSave'])){ + $this->cur_dialog->save_object(); + $carts = $this->cur_dialog->save(); + foreach($carts as $cart){ + $cart['status'] = "new"; + $this->usedCartridges[] = $cart; + } + $this->cur_dialog = false; + $this->edit_type = false; + } + + /* Remove cartridge + */ + if((isset($_POST['RemoveCartridge']))&&(isset($_POST['Cartridges'])) && $this->acl_is_writeable("ManageCartridges")){ + + foreach($_POST['Cartridges'] as $cartID){ + + if(isset($this->usedCartridges[$cartID])){ + if($this->usedCartridges[$cartID]['status'] == "exists"){ + $this->usedCartridges[$cartID]['status'] = "deleted"; + }else{ + unset($this->usedCartridges[$cartID]); + } + } + } + } + + /* Open Attachment pool to add/edit Attachments + */ + if(isset($_POST['AddCartridge']) && $this->acl_is_writeable("ManageCartridges")){ + $this->cur_dialog = new glpiPrinterCartridges($this->config,$this->dn,$this->type); + $this->dialog = true; + } + + + /* ########################################################################## + * Draw Dialogs + */ + /* if( cur_dialog != false || cur_dialog != NULL) + * There is a dialog which wants to be displayed + */ + if($this->cur_dialog && is_object($this->cur_dialog)){ + $this->cur_dialog->save_object(); + $this->dialog=true; + $this->cur_dialog->parent = &$this; + return($this->cur_dialog->execute()); + }else{ + $this->dialog= false; + } + + + /* ########################################################################## + * Assign listbox / checkbox .... values to smarty + */ + /* Assign smarty defaults */ + foreach(array("PrinterTypes","PrinterTypeKeys","Manufacturers","TechnicalResponsibles","Attachments","Cartridges") as $attr){ + $smarty->assign($attr,array()); + } + + /* Assign some vars to smarty + */ + foreach(array("type","FK_glpi_enterprise","tech_num","contact_num","flags_serial","flags_par","flags_usb") as $attr){ + $smarty->assign($attr,""); + } + + $smarty->assign("comments", $this->comments); + $smarty->assign("flags_serial", $this->flags_serial); + $smarty->assign("flags_par", $this->flags_par); + $smarty->assign("flags_usb", $this->flags_usb); + + /* Assign system types + */ + $smarty->assign("PrinterTypes", $this->handle->getPrinterTypes()); + $smarty->assign("PrinterTypeKeys", array_flip($this->handle->getPrinterTypes())); + $smarty->assign("type", $this->type); + + /* Append manufacturers + */ + $smarty->assign("ManufacturerKeys", array_flip($this->handle->getEnterprises())); + $smarty->assign("Manufacturers", $this->handle->getEnterprises()); + $smarty->assign("FK_glpi_enterprise", $this->FK_glpi_enterprise); + + /* Assign used Attachments + */ + + $divlist = new divSelectBox("glpiAttachmentsList"); + $divlist-> SetHeight(120); + $atts = $this->getUsedAttachments(true); + $downlink = "%s"; + $del_link = ""; + foreach($atts as $id => $attachment){ + $divlist->AddEntry + ( + array( + array("string"=>$attachment['name']), + array("string"=>$attachment['mime']), + array("string"=>sprintf($downlink,$id,$attachment['filename'])), + array("string"=>sprintf($del_link,$attachment['ID']),"attach"=>"style='border-right:0px;'"), + ) + ); + } + + $smarty->assign("AttachmentsDiv" ,$divlist->DrawList()); + $smarty->assign("Attachments", $this->getUsedAttachments()); + $smarty->assign("AttachmentKeys", array_flip($this->getUsedAttachments())); + + /* Assign Cartridges + */ + $smarty->assign("Cartridges", $this->getUsedCartridges()); + $smarty->assign("CartridgeKeys", $this->getUsedCartridges(true)); + + /* ########################################################################## + * Assign contact and technical responsible person + */ + if(isset($users[$this->contact_num])){ + $ldap->cat($users[$this->contact_num], array('givenName', 'sn', 'uid')); + $tr = $ldap->fetch(); + $str = ""; + if(isset($tr['givenName'][0])){ $str .= $tr['givenName'][0]." "; } + if(isset($tr['sn'][0])) { $str .= $tr['sn'][0]." "; } + if(isset($tr['uid'][0])){ $str .= "[".$tr['uid'][0]."]"; } + $smarty->assign("contact_num", $str); + }else{ + $smarty->assign("contact_num", _("N/A")); + } + + /* Handle tech person + Assign name ... to smarty, if set + */ + if(isset($users[$this->tech_num])){ + $ldap->cat($users[$this->tech_num], array('givenName', 'sn', 'uid')); + $tr = $ldap->fetch(); + $str = ""; + if(isset($tr['givenName'][0])){ $str .= $tr['givenName'][0]." "; } + if(isset($tr['sn'][0])) { $str .= $tr['sn'][0]." "; } + if(isset($tr['uid'][0])){ $str .= "[".$tr['uid'][0]."]"; } + $smarty->assign("tech_num", $str); + }else{ + $smarty->assign("tech_num", _("N/A")); + } + + /* If theres a cartridge selected, you can't change the printer type. + */ + $disp = true; + + foreach($this->usedCartridges as $cart){ + if($cart['status'] != "deleted"){ + $disp = false; + } + } + if($disp==false){ + $smarty->assign("typeACL", $this->getacl("type",true)); + } + + $display.= $smarty->fetch(get_template_path('glpiPrinter.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + function remove_from_parent() + { + $this->handle = new glpiDB($this->data['SERVER'],$this->data['LOGIN'],$this->data['PASSWORD'],$this->data['DB']); + if($this->initially_was_account){ + $this->handle->removePrinterInformations($this->dn); + new log("remove","printer/".get_class($this),$this->dn); + } + } + + + /* Save data to object */ + function save_object() + { + if(isset($_POST['glpiPrinterFlagsPosted'])){ + plugin::save_object(); + foreach($this->attributes as $attrs){ + if(isset($_POST[$attrs])){ + $this->$attrs = $_POST[$attrs]; + } + } + + if(isset($_POST['FK_glpi_enterprise']) && $this->acl_is_writeable("FKglpienterprise")){ + $this->FK_glpi_enterprise = $_POST['FK_glpi_enterprise']; + } + + foreach(array("flags_serial","flags_par","flags_usb") as $checkboxes){ + if($this->acl_is_writeable($checkboxes)){ + if(isset($_POST[$checkboxes])){ + $this->$checkboxes = 1; + }else{ + $this->$checkboxes = 0; + } + } + } + } + + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + // if($this->TechnicalResponsible == ""){ + // $message[] = _("Please select a technical responsible person for this entry."); + // } + + return ($message); + } + + /* Save to LDAP */ + function save() + { + if($this->is_account){ + $attrs = array(); + $this->date_mod = date("Y-m-d H:i:s"); + foreach($this->attributes as $attr){ + $attrs[$attr] = $this->$attr; + } + $attrs['name'] = $this->dn; + unset($attrs['ID']); + $this->handle = new glpiDB($this->data['SERVER'],$this->data['LOGIN'],$this->data['PASSWORD'],$this->data['DB']); + if($this->initially_was_account&&$this->is_account){ + $this->handle->updatePrinterInformations($attrs,$this->dn); + new log("modify","printer/".get_class($this),$this->dn); + }elseif($this->is_account){ + $this->handle->addPrinterInformations($attrs,$this->dn); + new log("create","printer/".get_class($this),$this->dn); + } + $tmp = $this->handle->getPrinterInformations($this->dn); + $this->handle->addAttachmentsToPrinter($this->usedAttachments,$tmp[0]['ID']); + + foreach($this->usedCartridges as $cart){ + if($cart['status'] == "deleted"){ + $this->handle->removeCartridgeFromPrinter($cart['ID']); + }elseif($cart['status'] == "new"){ + $this->handle->addCartridgeFromPrinter($tmp[0]['ID'],$cart['type_ID']); + } + } + } + } + + /* Return used attachments */ + function getUsedAttachments($divlist = false) + { + $atts =$this->handle->getAttachments(); + $ret = array(); + foreach($atts as $entry){ + if(in_array($entry['ID'],$this->usedAttachments)){ + if($divlist){ + $ret[$entry['ID']] = $entry; + }else{ + $cm =""; + if(isset($entry['comment'])){ + $cm=" [".$entry['comment']."]"; + } + if(isset($entry['mime'])){ + $cm.=" -".$entry['mime'].""; + } + + $ret[$entry['ID']]= $entry['name'].$cm; + } + } + } + return($ret); + } + + function getUsedCartridges($flip = false) + { + $ret = array(); + foreach($this->usedCartridges as $key => $value){ + if($value['status'] == "deleted") continue; + if($flip){ + $ret[$key] = $key; + }else{ + $ret[$key] = $value['name']." [".$value['type_name']."] "._("since")." :".$value['date_use']; + } + } + return($ret); + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Glpi"), + "plDescription" => _("Printer inventory extension"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 10, + "plSection" => array("administration"), + "plCategory" => array("printer"), + + "plProvidedAcls"=> array( + "flags_serial" => _("Supports serial interface"), + "flags_par" => _("Supports parallel interface"), + "flags_usb" => _("Supports usb interface"), + "tech_num" => _("Technical responsible"), + "comments" => _("Comments"), + "location" => _("Location"), + "contact_num" => _("Contact person"), + "type" => _("Type"), + "FKglpienterprise" => _("Manufacturer"), + + "Attachments" => _("Attachments"), + + "ManageCartridges" => _("Cartridge settings")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterCartridges.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterCartridges.inc new file mode 100644 index 000000000..1b74357c9 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterCartridges.inc @@ -0,0 +1,293 @@ +ui = get_userinfo(); + if(!session::is_set('glpiCartridgeRegex')){ + session::set('glpiCartridgeRegex',"*"); + } + + /* Only display cartridges for this type of printer */ + $this->PrinterType = $type; + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + $display =""; + $smarty = get_smarty(); + $filter = session::get('glpiCartridgeRegex'); + + /* Filter settings, remove double* */ + if(isset($_GET['search'])){ + $filter = preg_replace("/\*\**/","*",$_GET['search']."*"); + }elseif(isset($_POST['cartridge_regex'])){ + $filter = preg_replace("/\*\**/","*",$_POST['cartridge_regex']); + } + if(empty($filter)) { + $filter = "*"; + } + session::set('glpiCartridgeRegex',$filter); + + /* Open dialog which allows to edit the manufacturers + */ + if(isset($_POST['edit_manufacturer_cartridges'])){ + $this->cur_sub_dialog = new glpiManufacturer($this->config,$this->dn); + $this->dialog = true; + $this->editManufacturer =true; + } + + /* Close manufacturer editing dialog + */ + if((isset($_POST['close_edit_manufacturer']))&&($this->editManufacturer)){ + $this->dialog = false; + $this->cur_sub_dialog = false; + $this->editManufacturer=false; + } + + /* Check poted vars and do the requested job, but only once */ + $only_once = true; + foreach($_POST as $name => $value){ + + /* We have to create a new cartridge */ + if(preg_match("/^newcartridge/",$name)&&($only_once)){ + $this->cur_dialog = new glpiPrinterCartridgesEdit($this->config,$this->dn,$this->PrinterType); + $only_once = false; + } + } + + /* Edit cartridge */ + if(isset($_GET['act'])&&$_GET['act']=="edit_cartridge"){ + $val = ($this->parent->handle->getCartridgeTypeInformations($_GET['id'])); + $this->cur_dialog = new glpiPrinterCartridgesEdit($this->config,$this->dn,$this->PrinterType,$val[$_GET['id']]); + } + + /* remove cartridge */ + if(isset($_GET['act'])&&$_GET['act']=="del_cartridge"){ + /* remove attach from db */ + $this->del = $_GET['id']; + $val = ($this->parent->handle->getCartridgeTypeInformations($_GET['id'])); + $smarty->assign("warning", msgPool::deleteInfo($val[$this->del]['name'],_("cartridge"))); + return($smarty->fetch(get_template_path('remove_glpi.tpl',TRUE,dirname(__FILE__)))); + } + + if(isset($_POST['delete_cancel'])){ + $this->del = false; + } + + /* Delete this entry */ + if(isset($_POST['delete_glpi_confirm'])&&($this->del)) { + $tmp = $this->parent->handle->is_cartridgeTypeUsed($this->del); + if(count($tmp)){ + + $str = ""; + foreach($tmp as $id => $name){ + $str .= $name.", "; + } + $str = preg_replace("/, $/","",$str); + + print_red(sprintf(_("You can't delete this cartridge type, it is still in use by this printer(s) '%s'."),$str)); + }else{ + $val = ($this->parent->handle->getCartridgeTypeInformations($this->del)); + $this->cur_dialog = new glpiPrinterCartridgesEdit($this->config,$this->dn,$this->PrinterType,$val[$this->del]); + $this->cur_dialog->parent = $this->parent; + $this->cur_dialog->remove_from_parent(); + $this->cur_dialog= false; + } + } + + /* Abort edit / add dialog */ + if(isset($_POST['CancelCartridge'])){ + $this->cur_dialog = false; + } + + /* Save changes if check is ok */ + if(isset($_POST['SaveCartridge'])){ + $this->cur_dialog->save_object(); + if(count($this->cur_dialog->check())) { + foreach($this->cur_dialog->check() as $checks){ + print_red($checks); + } + }else{ + $this->cur_dialog->save(); + $this->cur_dialog = false; + } + } + + /* If we have a dialog open, display it */ + if($this->cur_sub_dialog){ + $this->cur_sub_dialog->parent = $this->parent; + $this->cur_sub_dialog->save_object(); + return($this->cur_sub_dialog->execute()); + } + /* If we have a dialog open, display it */ + if($this->cur_dialog){ + $this->cur_dialog->parent = $this->parent; + $this->cur_dialog->save_object(); + return($this->cur_dialog->execute()); + } + + /* Create divlist */ + $divlist = new divlist("glpi devices"); + $divlist->SetPluginMode(); + $divlist->SetEntriesPerPage(0); + $divlist->SetHeader(array( + array("string" => " ", "attach" => "style='text-align:center;width:20px;'"), + array("string" => _("Cartridges"), "attach" => "style=''"), + array("string" => _("Action"), "attach" => "style='width:60px;border-right:0px;text-align:right;'" ))); + + /* Links for editing,adding.... */ + $edit = "%s"; + $editdel = ""._("Edit").""; + $editdel.= ""._("Delete").""; + + /* Checkbox for selection of some cartridges */ + $useCartridge = ""; + + /* Add cartridges */ + $cart = $this->getCartridgeTypes(); + + /* Remove typically error possibilities */ + $f = str_replace("/","\/",$filter); + $f = str_replace(".","\.",$f); + $f = str_replace("*",".*",$f); + + /* Assign cartridges */ + foreach($cart as $key=>$cartr){ + + /* Skip if filter doesn't match*/ + if(!preg_match("/^".$f."$/i",$cartr['cartridgeName'])){ + continue; + } + + /* check if this cartridge is selected */ + $chk = ""; + if(isset($this->usedCartridges[$key])){ + $chk = " checked "; + } + + /* Add fields */ + $field1 = array("string" => preg_replace("/%s/",($key),preg_replace("/%CHECKED%/",$chk,$useCartridge)), + "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($edit,($key),$cartr['cartridgeName']." [".$cartr['cartridgeTypeName']."]"), + "attach" => "style=''"); + $field3 = array("string" => sprintf($editdel,($key),($key)), + "attach" => "style='width:60px;border-right:0px;text-align:right;'"); + + $divlist->AddEntry(array($field1,$field2,$field3)); + + } + + /* Create list header */ + $listhead = "
". + "  ". + "
"; + + /* Tell smarty some vars */ + $filter = session::get('glpiCartridgeRegex'); + $smarty->assign("devicehead", $listhead); + $smarty->assign("devices", $divlist->DrawList()); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("searchu_image", get_template_path('images/lists/search-user.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info_small.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("cartridge_regex", $filter); + + $display.= $smarty->fetch(get_template_path('glpiPrinterCartridges.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + /* Save device to glpi database + * If this is a new device, create a new entry, else update this entry + */ + function save() + { + $carts = $this->getCartridgeTypes(); + $ret = array(); + foreach($this->usedCartridges as $key){ + $tmp =array(); + $tmp['date_use'] = date("Y-m-d"); + $tmp['ID'] = -1; + $tmp['type_ID'] = $carts[$key]['cartridgeID']; + $tmp['name'] = $carts[$key]['cartridgeName']; + $tmp['FK_glpi_printers']= -1; + $tmp['type_name'] = $carts[$key]['cartridgeTypeName']; + $ret[$key] = $tmp; + } + return($ret); + } + + /* this only gets all already defined devices */ + function reload() + { + $this->devices = $this->parent->handle->getDevices(); + ksort($this->devices); + } + + /* This funtions saves all POST variables. + The variable must be in the array $this->EditEntry + */ + function save_object() + { + /* Checkbox handling + * Check which checkbox is selected + */ + foreach($_POST as $name => $value){ + if(preg_match("/wasOnPage/",$name)){ + $id = preg_replace("/wasOnPage_/","",$name); + if(isset($_POST['useCartridge_'.$id])){ + $this->usedCartridges[$id]=$id; + }else{ + unset($this->usedCartridges[$id]); + } + } + } + } + + /* This function cehck all created devices if you wan't to create device specific check + use >>if($attr['device_type']=="moboard")<< to create a device type depending check + */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + return($message); + } + + /* Return cartriges for our divlist */ + function getCartridgeTypes() + { + $ret = array(); + $ret = $this->parent->handle->getAvailableCartridgeTypes($this->PrinterType); + return($ret); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc new file mode 100644 index 000000000..765f2e96f --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc @@ -0,0 +1,332 @@ +attributes as $val){ + if(isset($values[$val])){ + $this->$val = $values[$val]; + }else{ + $this->$val = ""; + } + } + $this->needToCatch = true; + $this->printer_type = $printer_type; + } + + function remove_from_parent() + { + if($this->ID > 0){ + $this->parent->handle->removeCartridgeDropdownType($this->ID); + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* Get all currently used/supported printer types for this cartridge type + */ + if($this->needToCatch){ + $this->needToCatch = false; + if(!empty($this->type)){ + $this->additional_printer= $this->parent->handle->getSupportedPrinterTypeIDsForCartridge($this->ID); + } + } + + + + + + + /* Printer type management + */ + if(isset($_POST['edit_type_cartridge'])){ + $this->dialog = true; + $this->edit_type=true; + } + + /* This closes the printer type editing dialog + */ + if(isset($_POST['close_edit_type_cartridge'])){ + $this->edit_type=false; + $this->dialog = false; + } + + /* This appends a new printer to our sytem types + */ + if((isset($_POST['add_cartridge_type']))&&(!empty($_POST['cartridge_type_string']))){ + print "Add"; + $this->parent->handle->addCartridgeDropdownType($_POST['cartridge_type_string']); + } + + /* Remove selected type from our printer types list + */ + if((isset($_POST['del_cartridge_type']))&&(!empty($_POST['select_type_cartridge']))){ + $used = $this->parent->handle->getUsedDropdownTypes($_POST['select_type_cartridge']); + if(!count($used)){ + $this->parent->handle->removeCartridgeDropdownType($_POST['select_type_cartridge']); + }else{ + print_red(_("Can't delete this entry, it is still in use.")); + } + } + + /* Rename selected printer type to given string + */ + /* Update*/ + if((isset($_POST['rename_cartridge_type']))&&(!empty($_POST['select_type_cartridge']))&&(!empty($_POST['cartridge_type_string']))){ + $this->parent->handle->updateCartridgeDropdownType($_POST['cartridge_type_string'],$_POST['select_type_cartridge']); + } + + /* Someone wants to edit the printer types ... + So, lets open a new dialog which provides some buttons to edit the types + */ + if($this->edit_type){ + $smarty->assign("PrinterTypes", $this->parent->handle->getCartridgeTypes()); + $smarty->assign("PrinterTypeKeys", array_flip($this->parent->handle->getCartridgeTypes())); + $display= $smarty->fetch(get_template_path('glpi_edit_cartridge_type.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + /* Assign attributes */ + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + /* Selecte technical responsible person + */ + if(isset($_POST['SelectCartridgeTechPerson'])){ + $this->cur_dialog= new glpiSelectUser($this->config,$this->dn,"user_cartridge_tech_num"); + } + + /* Abort user selection + */ + $smarty->assign("AbortSelectUser","SelectCartridgeUserCancel"); + $smarty->assign("SaveSelectUser" ,"user_cartridge_tech_num"); + if(isset($_POST['SelectCartridgeUserCancel'])){ + $this->dialog = false; + $this->addUser =""; + $this->cur_dialog = false; + } + + /* Start ldap, and get all glpiUsers */ + $ldap = $this->config->get_ldap_link(); + $users = ($this->parent->handle->getUsers()); + + /* Technical responsible/contact person selected + */ + if(isset($_GET['act'])&&($_GET['act']=="user_cartridge_tech_num")){ + + /* Get posted id */ + $id = base64_decode($_GET['id']); + + /* Check if user is already created in glpi database */ + if(!in_array($id,$users)){ + + /* If this user doesn't exists in glpi db, we must create him */ + $ldap->cat($id, array('cn', 'mail', 'telephoneNumber')); + $atr = $ldap->fetch(); + $tmp = array(); + $use = array( "cn" =>"name", + "mail" =>"email", + "telephoneNumber" =>"phone"); + + /* Create array */ + foreach($use as $gosa => $glpi){ + if(isset($atr[$gosa])){ + $tmp[$glpi]= $atr[$gosa][0]; + } + } + + /* Add this user */ + $this->parent->handle->addUser($tmp,$id); + } + + /* Re-read users */ + $users = ($this->parent->handle->getUsers()); + + /* Get user */ + $tmp = array_flip($users); + $id=$tmp[$id]; + + /* Close dialog and use this user */ + $this->tech_num = $id; + $this->cur_dialog = false; + $this->dialog= false; + } + + /* Execute dialog*/ + if($this->cur_dialog){ + $this->cur_dialog->save_object(); + $this->dialog=true; + $this->cur_dialog->parent = &$this; + return($this->cur_dialog->execute()); + }else{ + $this->dialog= false; + } + + /* Create matrix with all possible printer types + */ + $matrix = ""; + $types = $this->parent->handle->getPrinterTypes(); + + /* Specifies number of cols */ + $spalten = 2; + + $spalt = $spalten; + foreach($types as $key => $type){ + $spalt -- ; + + /* Create new row, if cols for this row reached $spalten */ + if($spalt < 0) { + $spalt = $spalten -1; + $matrix .= ""; + } + + /* Avoid deselecting every checkbox */ + if($key == $this->printer_type){ + $matrix.= ""; + }else{ + + /* Cehck checkbox */ + $check = ""; + if(isset($this->additional_printer[$key])){ + $check = " checked "; + } + $matrix.= ""; + } + } + + /* Complete table row, to avoid html errors */ + if($spalt >0){ + while($spalt >0){ + $spalt -- ; + $matrix .=""; + } + } + + $matrix .= "
".$type."".$type." 
"; + + /* Append manufacturers + */ + $smarty->assign("PrinterTypeMatrix", $matrix); + + $smarty->assign("ManufacturerKeys", array_flip($this->parent->handle->getEnterprises())); + $smarty->assign("Manufacturers", $this->parent->handle->getEnterprises()); + $smarty->assign("FK_glpi_enterprise", $this->FK_glpi_enterprise); + + $smarty->assign("typeKeys", array_flip($this->parent->handle->getCartridgeTypes())); + $smarty->assign("types", $this->parent->handle->getCartridgeTypes()); + $smarty->assign("type", $this->type); + + /* Handle tech person + Assign name ... to smarty, if set + */ + if(isset($users[$this->tech_num])){ + $ldap->cat($users[$this->tech_num], array('givenName', 'sn', 'uid')); + $tr = $ldap->fetch(); + $str = ""; + if(isset($tr['givenName'][0])){ $str .= $tr['givenName'][0]." "; } + if(isset($tr['sn'][0])) { $str .= $tr['sn'][0]." "; } + if(isset($tr['uid'][0])){ $str .= "[".$tr['uid'][0]."]"; } + $smarty->assign("tech_num", $str); + }else{ + $smarty->assign("tech_num", _("N/A")); + } + + + $display.= $smarty->fetch(get_template_path('glpiPrinterCartridgesEdit.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + /* Check given values */ + function check(){ + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Avoid choosing an already used name */ + $types = $this->parent->handle->getCartridgeTypeInformations(); + foreach($types as $type){ + if($type['name'] == $this->name){ + if($type['ID'] != $this->ID){ + $message[]= _("The selected name is already in use."); + } + } + } + return $message; + } + + /* Save Post data */ + function save_object() + { + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr= $_POST[$attr]; + } + } + + /* Get selected checkboxes */ + foreach($_POST as $name => $value){ + if(preg_match("/wasOnPage_/",$name)){ + $id = preg_replace("/wasOnPage_/","",$name); + if(isset($_POST['UsePrinterType_'.$id])){ + $this->additional_printer[$id]=$id; + }else{ + if(isset($this->additional_printer[$id])){ + unset($this->additional_printer[$id]); + } + } + } + } + } + + /* Create / Update database with this new infos */ + function save() + { + $tmp = array(); + foreach($this->attributes as $attr){ + $tmp[$attr] = $this-> $attr; + } + $types = array(); + $types = $this->additional_printer; + $types[$this->printer_type]=$this->printer_type; + $this->parent->handle->Add_UpdateCatrigdeType($tmp,$types); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiSelectUser.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiSelectUser.inc new file mode 100644 index 000000000..f975cbe5f --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_glpiSelectUser.inc @@ -0,0 +1,281 @@ +PostVarName = $postvar; + + if(!session::is_set('glpi_user_filter')){ + $tmp['users_regex'] = "*"; + $tmp['base'] = $this->config->current['BASE']; + session::set('glpi_user_filter',$tmp); + } + + $this->ui = get_userinfo(); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if(isset($_POST['depselect'])){ + session::set('glpi_user_filter', array('base' => $_POST['depselect'])); + } + + $filter = session::get('glpi_user_filter'); + + /* Filter settings, remove double* */ + if(isset($_GET['search'])){ + $filter['users_regex'] = preg_replace("/\*\**/","*",$_GET['search']."*"); + }elseif(isset($_POST['regex'])){ + $filter['users_regex'] = preg_replace("/\*\**/","*",$_POST['regex']); + } + if(empty($filter['users_regex'])) { + $filter = "*"; + } + + + $s_action=""; + /* Test Posts */ + foreach($_POST as $key => $val){ + // Post for delete + if(preg_match("/dep_back.*/i",$key)){ + $s_action="back"; + }elseif(preg_match("/user_new.*/",$key)){ + $s_action="new"; + }elseif(preg_match("/dep_home.*/i",$key)){ + $s_action="home"; + } + } + + /* Homebutton is posted */ + if($s_action=="home"){ + $filter['base']=(preg_replace("/^[^,]+,/","",$this->ui->dn)); + $filter['base']=(preg_replace("/^[^,]+,/","",$filter['base'])); + } + + if($s_action=="root"){ + $filter['base']=($this->config->current['BASE']); + } + + + /* If Backbutton is Posted */ + if($s_action=="back"){ + $base_back = preg_replace("/^[^,]+,/","",$filter['base']); + $base_back = convert_department_dn($base_back); + + if(isset($this->config->departments[trim($base_back)])){ + $filter['base']= $this->config->departments[trim($base_back)]; + }else{ + $filter['base']= $this->config->departments["/"]; + } + } + + if((isset($_GET['act']))&&($_GET['act']=="dep_open")){ + $entry = base64_decode($_GET['dep_id']); + $filter['base']= ($this->config->departments[$entry]); + } + + session::set('glpi_user_filter',$filter); + + $this->reload(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + $divlist = new divlist("glpi users"); + $divlist->SetPluginMode(); + $divlist->SetEntriesPerPage(0); + $divlist->SetHeader(array( + array("string" => " ", "attach" => "style='text-align:center;width:20px;'"), + array("string" => _("Users")." / "._("Departments"), "attach" => "style=''"), + array("string" => _("Use"), "attach" => "style='width:60px;border-right:0px;text-align:right;'" ))); + $linkopen = "%s"; + foreach($this->departments as $key=> $val){ + + if(!isset($this->config->departments[trim($key)])){ + $this->config->departments[trim($key)]=""; + } + + $non_empty=""; + $keys= str_replace("/","\/",$key); + foreach($this->config->departments as $keyd=>$vald ){ + if(preg_match("/".$keys."\/.*/",$keyd)){ + $non_empty="full"; + } + } + + $field1 = array("string" => "department", "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val), "attach" => "style=''"); + $field3 = array("string" => " ", "attach" => "style='width:60px;border-right:0px;text-align:right;'"); + $divlist->AddEntry(array($field1,$field2,$field3)); + } + + $useruse = "%s"; + + foreach($this->users as $key=>$user){ + $field1 = array("string" => "user", "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($useruse,base64_encode($key),$user), "attach" => "style=''"); + $field3 = array("string" => sprintf($useruse,base64_encode($key),""._("use").""), + "attach" => "style='width:60px;border-right:0px;text-align:right;'"); + $divlist->AddEntry(array($field1,$field2,$field3)); + + } + + /* Prepare departments, + which are shown in the listbox on top of the listbox + */ + + + /* Get all departments within this subtree */ + $glpi_user_filter = session::get('glpi_user_filter'); + $this->base = $glpi_user_filter['base']; + $options =""; + $base = $this->config->current['BASE']; + $deps= get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", "users", $base, + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH); + + /* Load possible departments */ + $ui= get_userinfo(); + $tdeps= $ui->get_module_departments("users"); + $ids = $this->config->idepartments; + foreach($deps as $dep){ + if(isset($ids[$dep['dn']]) && in_array_ics($dep['dn'], $tdeps)){ + $value = $ids[$dep['dn']]; + if ($this->base == $dep['dn']){ + $options.= ""; + } else { + $options.= ""; + } + } + } + + $listhead = "
". + "  ". + "  ". + "  ". + "  ". +"  "._("Base")." ". + " ". + "  ". + "
"; + + + $filter = session::get('glpi_user_filter'); + $smarty->assign("usershead", $listhead); + $smarty->assign("users", $divlist->DrawList()); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("searchu_image", get_template_path('images/lists/search-user.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info_small.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("users_regex", $filter['users_regex']); + + + $display.= $smarty->fetch(get_template_path('glpiSelectUser.tpl',TRUE,dirname(__FILE__))); + return($display); + } + + /* Save to LDAP */ + function save() + { + plugin::save(); + + /* Optionally execute a command after we're done */ +#$this->handle_post_events($mode); + } + + function reload() + { + + $filter = session::get('glpi_user_filter'); + + $base = $filter['base']; + $regex= $filter['users_regex']; + /* NEW LIST MANAGMENT + * We also need to search for the departments + * So we are able to navigate like in konquerer + */ + + $res3= get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))","users", + $base, array("ou", "description"), GL_SIZELIMIT | GL_CONVERT); + + $this->departments= array(); + $tmp = array(); + foreach ($res3 as $value){ + $tmp[strtolower($value['dn']).$value['dn']]=$value; + } + ksort($tmp); + foreach($tmp as $value){ + if(isset($value["description"][0])){ + $this->departments[$value['dn']]= get_sub_department($value['dn'])." - [".$value["description"][0]."]"; + }else{ + $this->departments[$value['dn']]= get_sub_department($value['dn']);//$value["description"][0]; + } + } + + /* END NEW LIST MANAGMENT + */ + $ou = get_people_ou(); + + $res2= get_list("(&(|(cn=$regex)(sn=$regex))(objectClass=person))", "users", + $ou.$base, array("cn", "sn", "uid", "givenName", "description"), + GL_SUBSEARCH | GL_SIZELIMIT); + + $tmp = array(); + + foreach($res2 as $val){ + $str = ""; + if(isset($val['givenName'][0])){ + $str .= $val['givenName'][0]; + } + if(isset($val['sn'][0])){ + $str .= $val['sn'][0]; + } + if(isset($val['uid'][0])){ + $str .= $val['uid'][0]; + } + + $tmp[$str] = $val; + } + + ksort($tmp); + $this->users = array(); + foreach($tmp as $value){ + if (isset($value["givenName"][0]) && isset($value["sn"][0])){ + $this->users[$value['dn']]= $value["sn"][0].", ". + $value["givenName"][0]. + " [".$value["uid"][0]."]"; + } else { + $this->users[$value["dn"]]= "[".$value["uid"][0]."]"; + } + } + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_goGlpiServer.inc b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_goGlpiServer.inc new file mode 100644 index 000000000..c7b4ab12c --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/class_goGlpiServer.inc @@ -0,0 +1,109 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goGlpiServer"); + var $attributes = array("goGlpiAdmin","goGlpiDatabase","goGlpiPassword"); + var $StatusFlag = "goGlpiServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goGlpiServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $cn = ""; + var $acl; + + var $goGlpiServerStatus =""; + var $goGlpiAdmin =""; + var $goGlpiDatabase =""; + var $goGlpiPassword =""; + var $view_logged =FALSE; + + + function goGlpiServer(&$config,$dn) + { + goService::goService($config,$dn); + $this->DisplayName = _("Inventory database"); + } + + + function execute() + { + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + $smarty = get_smarty(); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation ){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + return($smarty->fetch(get_template_path("goGlpiServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Inventory database service"); + #$fields['AllowEdit'] = true; + return($fields); + } + + function check() + { + $message = plugin::check(); + if(empty($this->goGlpiAdmin)){ + $message[]= _("The attribute user is empty or contains invalid characters."); + } + if(empty($this->goGlpiDatabase)){ + $message[]= _("The attribute database is empty or contains invalid characters."); + } + return($message); + } + + + function save_object() + { + if(isset($_POST['goGlpiServer_posted'])){ + plugin::save_object(); + } + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Inventory database"), + "plDescription" => _("Inventory database")." ("._("Services").")" , + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 93, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "start" => _("Start"), + "stop" => _("Stop"), + "restart" => _("Restart"), + + "goGlpiAdmin" => _("Admin"), + "goGlpiDatabase" => _("Database"), + "goGlpiPassword" => _("Password")) + )); + } + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi.tpl new file mode 100644 index 000000000..563cf8133 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi.tpl @@ -0,0 +1,138 @@ + + + + + +
+ + +

{t}Generic{/t}

+ + + + + + + + + + + + + + + + + + + + + + +
{t}System type{/t} + +{render acl=$typeACL} + +{/render} +{render acl=$typeACL} + +{/render} +
{t}Operating system{/t} + +{render acl=$osACL} + +{/render} +{render acl=$osACL} + +{/render} +
{t}Manufacturer{/t} + +{render acl=$FK_glpi_enterpriseACL} + +{/render} +{render acl=$FK_glpi_enterpriseACL} + +{/render} +
+ {t}Contact person{/t} + + {$contact_num}    +{render acl=$contact_numACL} + +{/render} +
{t}Technical responsible{/t}  + + {$tech_num}    +{render acl=$tech_numACL} + +{/render} +
+
+ +

{t}Comment{/t}

+ + + + +
+{render acl=$commentsACL} + +{/render} +
+
+

 

+ + + + + +
+

{t}Installed devices{/t}

+ + + + +
+{render acl=$DevicesACL} + +{/render} +{render acl=$DevicesACL} + +{/render} +
+ +
+

{t}Attachments{/t}

+ + + + +
+{render acl=$AttachmentsACL} + {$AttachmentsDiv} +{/render} +{render acl=$AttachmentsACL} + +{/render} +
+
+ +

diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiAttachmentEdit.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiAttachmentEdit.tpl new file mode 100644 index 000000000..b5889caab --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiAttachmentEdit.tpl @@ -0,0 +1,78 @@ +
+

{t}Attachment{/t}

+ + + + + + +
+ + + + + + + + + +
+ {t}Name{/t} + + +
+ {t}Comment{/t} + + +
+
+ + + + + + + + + + + + + + + + + +
+ {t}File{/t} + + +
+ {t}Status{/t} + + {$status} +
+ {t}Filename{/t} + + {$filename} +
+ {t}Mime-type{/t} + + {$mime} +
+
+ + +

 

+
+

+ + +

+
+ + diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiAttachmentPool.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiAttachmentPool.tpl new file mode 100644 index 000000000..5bd1d6423 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiAttachmentPool.tpl @@ -0,0 +1,54 @@ + + + + + +
+
+

+ {t}List of attachments{/t} +

+
+
+ {$attachmenthead} +
+
+
+ {$attachments} + +
+
+
+

[i]{t}Information{/t}

+
+
+ {t}This dialog allow you to attach additional objects (like manuals, guides, etc.) to your currently edited computer.{/t} +
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + + +
+ +
+ {$apply} +
+
+ + +

 

+
+

+ + +

+
diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiDeviceManagement.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiDeviceManagement.tpl new file mode 100644 index 000000000..3536f84f7 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiDeviceManagement.tpl @@ -0,0 +1,54 @@ + + + + + +
+
+

+ {t}List of devices{/t} +

+
+
+ {$devicehead} +
+
+
+ {$devices} + +
+
+
+

[i]{t}Information{/t}

+
+
+ {t}This dialog allows you to attach a device to your currently edited computer.{/t} +
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + + +
+ +
+ {$apply} +
+
+ + +

 

+
+

+ + +

+
diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiManufacturer.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiManufacturer.tpl new file mode 100644 index 000000000..5f64d014e --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiManufacturer.tpl @@ -0,0 +1,15 @@ +

{t}Manage manufacturers{/t}

+ +
+ + + + +

 

+
+

+ +

+
diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiManufacturerAdd.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiManufacturerAdd.tpl new file mode 100644 index 000000000..d823d7ca4 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiManufacturerAdd.tpl @@ -0,0 +1,89 @@ +

{t}Add/Edit manufacturer{/t}

+ + + + + +
+ + + + + + + + + + + + + +
{t}Name{/t} + + +
{t}Website{/t} + + +
{t}Address{/t} + + +
+
+ + + + + + + + + + + + + + + + + +
{t}Phone number{/t} + + +
{t}Fax{/t} + + +
{t}Email{/t} + + +
{t}Comments{/t} + + +
+
+ + + + + + + + + + + + + +
+

 

+
+

+ + +

+
+ + diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinter.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinter.tpl new file mode 100644 index 000000000..092102d2c --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinter.tpl @@ -0,0 +1,159 @@ + + + + + +
+ + +

{t}Generic{/t}

+ + + + + + + + + +
{t}Printer type{/t} + +{render acl=$typeACL} + +{/render} +{render acl=$typeACL} + +{/render} +
{t}Manufacturer{/t} + +{render acl=$FKglpienterpriseACL} + +{/render} +{render acl=$FKglpienterpriseACL} + +{/render} +
+
+

{t}Supported interfaces{/t}

+ + + + + + + + + + + + + +
+{render acl=$flags_serialACL} + +{/render} + + {t}Serial{/t} +
+{render acl=$flags_parACL} + +{/render} + + {t}Parallel{/t} +
+{render acl=$flags_usbACL} + +{/render} + + {t}USB{/t} +
+ +
+

 

+ + + + + +
+

{t}Contacts{/t}

+ + + + + + + + + +
{t}Technical responsible{/t}  + + {$tech_num}    +{render acl=$tech_numACL} + +{/render} +
+ {t}Contact person{/t} + + {$contact_num}    +{render acl=$contact_numACL} + +{/render} + +
+
+

{t}Attachments{/t}

+ + + + +
+{render acl=$AttachmentsACL} + {$AttachmentsDiv} +{/render} +{render acl=$AttachmentsACL} + +{/render} +
+
+

 

+ + + + + +
+

{t}Information{/t}

+ + + + +
+{render acl=$commentsACL} + +{/render} +
+
+

{t}Installed cartridges{/t}

+ + + + +
+{render acl=$CartridgesACL} + +{/render} +{render acl=$CartridgesACL} + +{/render} +{render acl=$CartridgesACL} + +{/render} +
+
diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinterCartridges.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinterCartridges.tpl new file mode 100644 index 000000000..c1a250d68 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinterCartridges.tpl @@ -0,0 +1,54 @@ + + + + + +
+
+

+ {t}List of available cartridge type for this type of printer{/t} +

+
+
+ {$devicehead} +
+
+
+ {$devices} + +
+
+
+

[i]{t}Information{/t}

+
+
+ {t}This dialog allows you to create new types of cartridges, and select one or more types for your printer. Cartridge types depends on the printer type you have selected. For each selected cartridge type there will be a new cartridge created, this allows you to select the same cartridge type for more then one printer.{/t} +
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + + +
+ +
+ {$apply} +
+
+ + +

 

+
+

+ + +

+
diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl new file mode 100644 index 000000000..59f7753de --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl @@ -0,0 +1,83 @@ + + + + + +
+

{t}Generic{/t}

+ + + + + + + + + +
{t}Name{/t} + + +
{t}Reference{/t} + + +
+

 

+

{t}Comments{/t}

+ + + + + +
{t}Comment{/t} + + +
+
+

{t}Generic{/t}

+ + + + + + + + + + + + + +
{t}Type{/t} + + + +
{t}Manufacturer{/t} + + + +
{t}Technical responsible{/t}  + + {$tech_num}    + +
+

 

+ {$PrinterTypeMatrix} +
+ +

 

+
+

+   +
+

+
+ + diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiSelectUser.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiSelectUser.tpl new file mode 100644 index 000000000..788f94d2e --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpiSelectUser.tpl @@ -0,0 +1,53 @@ + + + + + +
+
+

+ {t}List of users{/t} +

+
+
+ {$usershead} +
+
+
+ {$users} + +
+
+
+

[i]{t}Information{/t}

+
+
+ {t}This dialog allows you to select a user as technical responsible person.{/t} +
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + + +
+ +
+ {$apply} +
+
+ + +

 

+
+

+ +

+
diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_devices.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_devices.tpl new file mode 100644 index 000000000..0c962b6f5 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_devices.tpl @@ -0,0 +1,763 @@ +{if $device_type=="monitor"} +

 {t}Add/Edit monitor{/t}

+

 

+
+ + + + + +
+ + + + + + + + + + + + + + + + + +
{t}Name{/t} + + +
{t}Comments{/t} + + +
{t}Manufacturer{/t} + + +
{t}Monitor size{/t} + + {t}Inch{/t} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
{t}Integrated microphone{/t} + + {t}Yes{/t} + {t}No{/t} +
{t}Integrated speakers{/t} + + {t}Yes{/t} + {t}No{/t} +
{t}Sub-D{/t} + + {t}Yes{/t} + {t}No{/t} +
{t}BNC{/t} + + {t}Yes{/t} + {t}No{/t} +
{t}Serial number{/t} + + +
{t}Additional serial number{/t} + + +
+
+ + +{elseif $device_type=="pci"} + +

 {t}Add/Edit other device{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + +
{t}Manufacturer{/t} + + +
+
+ +{elseif $device_type=="power"} + +

 {t}Add/Edit power supply{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}Atx{/t} + + {t}Yes{/t} + {t}No{/t} +
{t}Power{/t} + + +
+
+{elseif $device_type=="gfxcard"} + +

 {t}Add/Edit graphic card{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}Interface{/t} + + +
{t}Ram{/t} + + +
+
+{elseif $device_type=="control"} + +

 {t}Add/Edit controller{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}Interface{/t} + + +
{t}Size{/t} + + {t}Yes{/t} + {t}No{/t} +
+
+ +{elseif $device_type=="drive"} + +

 {t}Add/Edit drive{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}Speed{/t} + + +
{t}Interface{/t} + + +
{t}Writeable{/t} + + {t}Yes{/t} + {t}No{/t} +
+
+ +{elseif $device_type=="hdd"} +

 {t}Add/Edit harddisk{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + + + + + + + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}Rpm{/t} + + +
{t}Cache{/t} + + +
{t}Size{/t} + + +
{t}Type{/t} + + +
+
+ +{elseif $device_type=="ram"} + +

 {t}Add/Edit memory{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + + + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}Frequenz{/t} + + +
{t}Size{/t} + + +
{t}Type{/t} + + +
+
+ +{elseif $device_type=="sndcard"} +

 {t}Add/Edit sound card{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}Type{/t} + + +
+
+{elseif $device_type=="iface"} +

 {t}Add/Edit network interface{/t}

+

 

+
+ + + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}MAC address{/t} + + +
{t}Bandwidth{/t} + + +
+
+{elseif $device_type=="processor"} +

 {t}Add/Edit processor{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}Frequence{/t} + + +
{t}Default frequence{/t} + + +
+
+ +{elseif $device_type=="moboard"} +

 {t}Add/Edit motherboard{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}Chipset{/t} + + +
+
+{elseif $device_type=="case"} +

 {t}Add/Edit computer case{/t}

+

 

+
+ + + + + +
+ + + + + + + + + +
{t}Name{/t} + + +
{t}Comment{/t} + + +
+
+ + + + + + + + + +
{t}Manufacturer{/t} + + +
{t}format{/t} + + +
+
+{/if} + + +

 

+
+

+ + +

+
diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_cartridge_type.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_cartridge_type.tpl new file mode 100644 index 000000000..af1c8f3bd --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_cartridge_type.tpl @@ -0,0 +1,21 @@ +
+
+ + + + + +

 

+
+

+ +

+
+ + diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_os.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_os.tpl new file mode 100644 index 000000000..339626cde --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_os.tpl @@ -0,0 +1,39 @@ +

{t}Manage OS-types{/t}

+{if $Method == "edit"} + +
+ + + + + +

 

+
+

+ +

+
+ +{else} +{t}Please enter a new name{/t}  +

 

+

+

+ + +
+

+ +{/if} + + diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_printer_type.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_printer_type.tpl new file mode 100644 index 000000000..59ffb6178 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_printer_type.tpl @@ -0,0 +1,40 @@ +
+{if $Method == "edit"} +
+ + + + + +

 

+
+

+ +

+
+ + +{else} + + {t}Please enter a new name{/t}  +

 

+

+

+ + +
+

+ + +{/if} + diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_type.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_type.tpl new file mode 100644 index 000000000..179d5dea7 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/glpi_edit_type.tpl @@ -0,0 +1,37 @@ +

{t}Manage System-types{/t}

+{if $Method == "edit"} + +
+ + + + + +

 

+
+

+ +

+
+ +{else} +{t}Please enter a new name{/t}  +

 

+

+

+ + +
+

+ +{/if} diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/goGlpiServer.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/goGlpiServer.tpl new file mode 100644 index 000000000..d16fc28b8 --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/goGlpiServer.tpl @@ -0,0 +1,36 @@ +

{t}GLPI database information{/t}

+ + + + + + + + + + + + + +
{t}Logging DB user{/t}{$must} +{render acl=$goGlpiAdminACL} + +{/render} +
{t}Password{/t} +{render acl=$goGlpiPasswordACL} + +{/render} +
{t}Database{/t}{$must} +{render acl=$goGlpiDatabaseACL} + +{/render} +
+ + +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/glpi/admin/systems/services/glpi/remove_glpi.tpl b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/remove_glpi.tpl new file mode 100644 index 000000000..d08c1525b --- /dev/null +++ b/trunk/gosa-plugins/glpi/admin/systems/services/glpi/remove_glpi.tpl @@ -0,0 +1,17 @@ +
+ {t}Warning{/t} +
+

+ {$warning} + {t}Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+ +

+ {t}Best thing to do before performing this action would be to save the current contents of your MySql database in a file. So - if you've done so - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ +   + +

diff --git a/trunk/gosa-plugins/glpi/contrib/glpi.ldif b/trunk/gosa-plugins/glpi/contrib/glpi.ldif new file mode 100644 index 000000000..220116940 --- /dev/null +++ b/trunk/gosa-plugins/glpi/contrib/glpi.ldif @@ -0,0 +1,5 @@ +dn: cn=glpi,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: glpi +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.4.1 NAME 'glpiAccountLogin' DESC 'glpi Account Login' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcObjectClasses: ( 1.3.6.1.4.1.22262.1.1.2.4.1 NAME 'glpiAccount' SUP top AUXILIARY DESC 'glpi Account' MAY ( glpiAccountLogin )) diff --git a/trunk/gosa-plugins/glpi/contrib/glpi.schema b/trunk/gosa-plugins/glpi/contrib/glpi.schema new file mode 100644 index 000000000..6028bfd44 --- /dev/null +++ b/trunk/gosa-plugins/glpi/contrib/glpi.schema @@ -0,0 +1,21 @@ +# +## schema file for OpenLDAP 2.x +## Schema for storing glpi User Configuration in LDAP +## OIDs are owned by OpenSides +## +# +# $Id: glpi.schema,v 1.1 2005/11/02 16:48:16 benoit Exp $ +# + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.4.1 NAME 'glpiAccountLogin' + DESC 'glpi Account Login' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +# +# all objectclass +# + +objectclass ( 1.3.6.1.4.1.22262.1.1.2.4.1 NAME 'glpiAccount' SUP top AUXILIARY + DESC 'glpi Account' + MAY ( glpiAccountLogin )) \ No newline at end of file diff --git a/trunk/gosa-plugins/glpi/contrib/glpi.sql b/trunk/gosa-plugins/glpi/contrib/glpi.sql new file mode 100644 index 000000000..a18e3b7d4 --- /dev/null +++ b/trunk/gosa-plugins/glpi/contrib/glpi.sql @@ -0,0 +1,1627 @@ +create database glpi; +use glpi; + +CREATE TABLE `glpi_cartridges` ( + `ID` int(11) NOT NULL auto_increment, + `FK_glpi_cartridges_type` int(11) NOT NULL default '0', + `FK_glpi_printers` int(11) NOT NULL default '0', + `date_in` date default NULL, + `date_use` date default NULL, + `date_out` date default NULL, + `pages` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + KEY `FK_glpi_cartridges_type` (`FK_glpi_cartridges_type`), + KEY `FK_glpi_printers` (`FK_glpi_printers`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; + +INSERT INTO `glpi_cartridges` (`ID`, `FK_glpi_cartridges_type`, `FK_glpi_printers`, `date_in`, `date_use`, `date_out`, `pages`) VALUES +(5, 5, 5, '2006-09-29', '2006-09-29', NULL, 0), +(4, 5, 5, '2006-09-29', '2006-09-29', NULL, 0); + + +CREATE TABLE `glpi_cartridges_assoc` ( + `ID` int(11) NOT NULL auto_increment, + `FK_glpi_cartridges_type` int(11) NOT NULL default '0', + `FK_glpi_type_printer` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + UNIQUE KEY `FK_glpi_type_printer` (`FK_glpi_type_printer`,`FK_glpi_cartridges_type`), + KEY `FK_glpi_cartridges_type` (`FK_glpi_cartridges_type`), + KEY `FK_glpi_type_printer_2` (`FK_glpi_type_printer`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ; + + +INSERT INTO `glpi_cartridges_assoc` (`ID`, `FK_glpi_cartridges_type`, `FK_glpi_type_printer`) VALUES +(1, 1, 1), +(2, 2, 5), +(3, 2, 1), +(4, 3, 13), +(5, 4, 13), +(6, 5, 11), +(7, 5, 10), +(8, 5, 5), +(9, 5, 12), +(10, 5, 2), +(11, 5, 14), +(12, 5, 3); + + + +CREATE TABLE `glpi_cartridges_type` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `ref` varchar(255) NOT NULL default '', + `location` int(11) NOT NULL default '0', + `type` tinyint(4) NOT NULL default '0', + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `tech_num` int(11) default '0', + `deleted` enum('Y','N') NOT NULL default 'N', + `comments` text NOT NULL, + `alarm` tinyint(4) NOT NULL default '10', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`), + KEY `tech_num` (`tech_num`), + KEY `deleted` (`deleted`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; + + +INSERT INTO `glpi_cartridges_type` (`ID`, `name`, `ref`, `location`, `type`, `FK_glpi_enterprise`, `tech_num`, `deleted`, `comments`, `alarm`) VALUES +(1, 'TestPatrone', '', 0, 1, 8, 0, '', '', 0), +(2, 'HP_deskjet_7100C', '', 0, 4, 8, 0, '', 'None', 0), +(3, 'teseter', '', 0, 3, 12, 0, '', '', 0), +(4, 'teseter2', '', 0, 3, 12, 0, '', '', 0), +(5, 'Epson Stylus Nuclear Color', '', 0, 3, 12, 0, '', 'Uranium green.\r\n', 0); + + + +CREATE TABLE `glpi_computer_device` ( + `ID` int(11) NOT NULL auto_increment, + `specificity` varchar(250) NOT NULL default '', + `device_type` tinyint(4) NOT NULL default '0', + `FK_device` int(11) NOT NULL default '0', + `FK_computers` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + KEY `device_type` (`device_type`), + KEY `device_type_2` (`device_type`,`FK_device`), + KEY `FK_computers` (`FK_computers`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=136 ; + + +INSERT INTO `glpi_computer_device` (`ID`, `specificity`, `device_type`, `FK_device`, `FK_computers`) VALUES +(87, '', 1, 1, 1), +(92, '', 1, 1, 13), +(133, '', 1, 1, 17), +(120, '', 1, 1, 23), +(122, '', 1, 1, 24), +(135, '', 1, 1, 19), +(132, '', 1, 1, 29); + + + +CREATE TABLE `glpi_computers` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(200) NOT NULL default '', + `serial` varchar(200) NOT NULL default '', + `otherserial` varchar(200) NOT NULL default '', + `contact` varchar(90) NOT NULL default '', + `contact_num` varchar(90) NOT NULL default '', + `tech_num` int(11) NOT NULL default '0', + `comments` text NOT NULL, + `date_mod` datetime default NULL, + `os` int(11) default NULL, + `location` int(11) default NULL, + `domain` int(11) NOT NULL default '0', + `network` int(11) NOT NULL default '0', + `model` int(11) default NULL, + `type` int(11) default NULL, + `is_template` enum('0','1') NOT NULL default '0', + `tplname` varchar(200) default NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `deleted` enum('Y','N') NOT NULL default 'N', + PRIMARY KEY (`ID`), + KEY `location` (`location`), + KEY `os` (`os`), + KEY `type` (`model`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`), + KEY `deleted` (`deleted`), + KEY `is_template` (`is_template`), + KEY `date_mod` (`date_mod`), + KEY `tech_num` (`tech_num`), + KEY `type_2` (`type`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=41 ; + + +INSERT INTO `glpi_computers` (`ID`, `name`, `serial`, `otherserial`, `contact`, `contact_num`, `tech_num`, `comments`, `date_mod`, `os`, `location`, `domain`, `network`, `model`, `type`, `is_template`, `tplname`, `FK_glpi_enterprise`, `deleted`) VALUES +(1, 'cn=asterisk,ou=servers,ou=systems,dc=gonicus,dc=de', '', '', '', '1', 1, '', '2006-03-08 12:12:04', 5, 0, 0, 0, 0, 27, '0', NULL, 8, 'N'), +(4, 'cn=pyramid,ou=terminals,ou=systems,dc=gonicus,dc=de', '', '', '', '', 0, '', '2006-03-08 07:05:07', 5, 0, 0, 0, 0, 21, '0', NULL, 8, 'N'), +(5, 'cn=ctu03,ou=phones,ou=systems,dc=gonicus,dc=de', '', '', '', '', 0, '', '2006-02-10 08:58:15', 6, 0, 0, 0, 0, 21, '0', NULL, 8, 'N'), +(6, 'cn=fax,ou=servers,ou=systems,dc=gonicus,dc=de', '', '', '', '', 3, '', '2006-03-01 10:04:06', 6, 0, 0, 0, 0, 21, '0', NULL, 12, 'N'), +(19, 'cn=cl1--6665,ou=workstations,ou=systems,o=Landeshauptstadt München,c=de', '', '', '', '18', 0, '', '2007-01-30 08:03:00', 5, 0, 0, 0, 0, 27, '0', NULL, 16, 'N'), +(11, 'cn=vserver-04f,ou=servers,ou=systems,o=Landeshauptstadt München,c=de', '', '', '', '', 0, '', '2006-05-12 07:51:32', 6, 0, 0, 0, 0, 28, '0', NULL, 12, 'N'), +(13, 'cn=GetraenkeHalter,ou=netdevices,ou=systems,o=Landeshauptstadt München,c=de', '', '', '', '6', 7, 'tester', '2006-06-21 12:34:54', 7, 0, 0, 0, 0, 28, '0', NULL, 16, 'N'), +(18, 'cn=cl1--151,ou=workstations,ou=systems,o=Landeshauptstadt München,c=de', '', '', '', '', 0, 'tester', '2007-01-30 07:55:33', 18, 0, 0, 0, 0, 18, '0', NULL, 16, 'N'), +(16, 'cn=ctu153,ou=phones,ou=systems,o=Landeshauptstadt München,c=de', '', '', '', '8', 9, 'Tester für den Comment \\\\\\n
\r\ntester', '2006-06-20 09:24:35', 6, 0, 0, 0, 0, 28, '0', NULL, 12, 'N'), +(17, 'cn=cl1--157,ou=workstations,ou=systems,o=Landeshauptstadt München,c=de', '', '', '', '', 0, 'asdfasdf \n\r\nasdf', '2007-01-30 07:01:41', 6, 0, 0, 0, 0, 28, '0', NULL, 12, 'N'), +(20, 'cn=vserver-01.intranet.gonicus.de,ou=servers,ou=systems,o=Landeshauptstadt München,c=de', '', '', '', '', 0, 'sda', '2007-05-21 06:53:29', 6, 0, 0, 0, 0, 28, '0', NULL, 12, 'N'), +(21, 'cn=vserver-01.intranet.gonicus.de,ou=servers,ou=systems,o=Landeshauptstadt München,c=de', '', '', '', '', 0, 'sda', '2007-05-21 06:53:29', 6, 0, 0, 0, 0, 28, '0', NULL, 12, 'N'), +(23, 'cn=kohlenhydrate,ou=servers,ou=systems,ou=keks,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '11', 11, 'eg', '2006-09-29 09:37:30', 7, 0, 0, 0, 0, 26, '0', NULL, 8, 'N'), +(24, 'cn=Mineralstoffe,ou=workstations,ou=systems,ou=keks,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '', 0, 'dfsaaaaaaaaaaaaaaaaaaaaaaaaaaa', '2006-10-18 11:21:03', 7, 0, 0, 0, 0, 27, '0', NULL, 16, 'N'), +(25, 'cn=Ammoniumcarbonat,ou=phones,ou=systems,ou=keks,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '11', 11, 'asdf', '2006-09-29 10:34:32', 7, 0, 0, 0, 0, 21, '0', NULL, 16, 'N'), +(26, 'cn=Kakaomasse,ou=netdevices,ou=systems,ou=keks,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '11', 11, 'ikk', '2006-09-29 10:41:12', 7, 0, 0, 0, 0, 27, '0', NULL, 8, 'N'), +(27, 'cn=afs-22,ou=servers,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '', 0, '-ö', '2006-11-30 13:31:50', 7, 0, 0, 0, 0, 26, '0', NULL, 16, 'N'), +(28, 'cn=Netzwerkkomponente,ou=netdevices,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '11', 0, '', '2006-11-29 14:43:00', 6, 0, 0, 0, 0, 28, '0', NULL, 12, 'N'), +(29, 'cn=vserver-04.intranet.gonicus.de,ou=servers,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '', 0, 'asdfasdf', '2006-11-30 12:48:22', 6, 0, 0, 0, 0, 28, '0', NULL, 12, 'N'), +(30, 'cn=okulele,ou=servers,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '21', 21, 'No comment', '2007-01-23 14:20:48', 11, 0, 0, 0, 0, 21, '0', NULL, 16, 'N'), +(31, 'cn=keksesindlecker45,ou=workstations,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '', 0, 'sdfsdfaasdf', '2007-01-16 08:26:35', 6, 0, 0, 0, 0, 28, '0', NULL, 12, 'N'), +(32, 'cn=phoneTesterAparatz,ou=phones,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '', 0, '', '2007-01-15 08:21:39', 5, 0, 0, 0, 0, 18, '0', NULL, 12, 'N'), +(39, 'cn=terminal,ou=terminals,ou=systems,o=Landeshauptstadt München,c=de', '', '', '', '', 0, '', '2007-05-21 07:02:42', 6, 0, 0, 0, 0, 28, '0', NULL, 12, 'N'); + + + +CREATE TABLE `glpi_config` ( + `ID` int(11) NOT NULL auto_increment, + `ldap_port` varchar(10) NOT NULL default '389', + `num_of_events` varchar(200) NOT NULL default '', + `jobs_at_login` varchar(200) NOT NULL default '', + `sendexpire` varchar(200) NOT NULL default '', + `cut` varchar(200) NOT NULL default '', + `expire_events` varchar(200) NOT NULL default '', + `list_limit` varchar(200) NOT NULL default '', + `version` varchar(200) NOT NULL default '', + `logotxt` varchar(200) NOT NULL default '', + `root_doc` varchar(200) NOT NULL default '', + `event_loglevel` varchar(200) NOT NULL default '', + `mailing` varchar(200) NOT NULL default '', + `imap_auth_server` varchar(200) NOT NULL default '', + `imap_host` varchar(200) NOT NULL default '', + `ldap_host` varchar(200) NOT NULL default '', + `ldap_basedn` varchar(200) NOT NULL default '', + `ldap_rootdn` varchar(200) NOT NULL default '', + `ldap_pass` varchar(200) NOT NULL default '', + `admin_email` varchar(200) NOT NULL default '', + `mailing_resa_all_admin` varchar(200) NOT NULL default '0', + `mailing_resa_user` varchar(200) NOT NULL default '1', + `mailing_resa_admin` varchar(200) NOT NULL default '1', + `mailing_signature` varchar(200) NOT NULL default '', + `mailing_new_admin` varchar(200) NOT NULL default '', + `mailing_followup_admin` varchar(200) NOT NULL default '', + `mailing_finish_admin` varchar(200) NOT NULL default '', + `mailing_new_all_admin` varchar(200) NOT NULL default '', + `mailing_followup_all_admin` varchar(200) NOT NULL default '', + `mailing_finish_all_admin` varchar(200) NOT NULL default '', + `mailing_new_all_normal` varchar(200) NOT NULL default '', + `mailing_followup_all_normal` varchar(200) NOT NULL default '', + `mailing_finish_all_normal` varchar(200) NOT NULL default '', + `mailing_new_attrib` varchar(200) NOT NULL default '', + `mailing_followup_attrib` varchar(200) NOT NULL default '', + `mailing_finish_attrib` varchar(200) NOT NULL default '', + `mailing_new_user` varchar(200) NOT NULL default '', + `mailing_followup_user` varchar(200) NOT NULL default '', + `mailing_finish_user` varchar(200) NOT NULL default '', + `ldap_field_name` varchar(200) NOT NULL default '', + `ldap_field_email` varchar(200) NOT NULL default '', + `ldap_field_location` varchar(200) NOT NULL default '', + `ldap_field_realname` varchar(200) NOT NULL default '', + `ldap_field_phone` varchar(200) NOT NULL default '', + `ldap_condition` varchar(255) NOT NULL default '', + `permit_helpdesk` varchar(200) NOT NULL default '', + `default_language` varchar(255) NOT NULL default 'french', + `priority_1` varchar(200) NOT NULL default '#fff2f2', + `priority_2` varchar(200) NOT NULL default '#ffe0e0', + `priority_3` varchar(200) NOT NULL default '#ffcece', + `priority_4` varchar(200) NOT NULL default '#ffbfbf', + `priority_5` varchar(200) NOT NULL default '#ffadad', + `date_fiscale` date NOT NULL default '2005-12-31', + `cartridges_alarm` int(11) NOT NULL default '10', + `cas_host` varchar(255) NOT NULL default '', + `cas_port` varchar(255) NOT NULL default '', + `cas_uri` varchar(255) NOT NULL default '', + `planning_begin` time NOT NULL default '08:00:00', + `planning_end` time NOT NULL default '20:00:00', + `utf8_conv` int(11) NOT NULL default '0', + `auto_assign` enum('0','1') NOT NULL default '0', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; + + +INSERT INTO `glpi_config` (`ID`, `ldap_port`, `num_of_events`, `jobs_at_login`, `sendexpire`, `cut`, `expire_events`, `list_limit`, `version`, `logotxt`, `root_doc`, `event_loglevel`, `mailing`, `imap_auth_server`, `imap_host`, `ldap_host`, `ldap_basedn`, `ldap_rootdn`, `ldap_pass`, `admin_email`, `mailing_resa_all_admin`, `mailing_resa_user`, `mailing_resa_admin`, `mailing_signature`, `mailing_new_admin`, `mailing_followup_admin`, `mailing_finish_admin`, `mailing_new_all_admin`, `mailing_followup_all_admin`, `mailing_finish_all_admin`, `mailing_new_all_normal`, `mailing_followup_all_normal`, `mailing_finish_all_normal`, `mailing_new_attrib`, `mailing_followup_attrib`, `mailing_finish_attrib`, `mailing_new_user`, `mailing_followup_user`, `mailing_finish_user`, `ldap_field_name`, `ldap_field_email`, `ldap_field_location`, `ldap_field_realname`, `ldap_field_phone`, `ldap_condition`, `permit_helpdesk`, `default_language`, `priority_1`, `priority_2`, `priority_3`, `priority_4`, `priority_5`, `date_fiscale`, `cartridges_alarm`, `cas_host`, `cas_port`, `cas_uri`, `planning_begin`, `planning_end`, `utf8_conv`, `auto_assign`) VALUES +(1, '389', '10', '1', '1', '80', '30', '15', ' 0.6', 'GLPI powered by indepnet', '/glpi', '5', '0', '', '', '', '', '', '', 'admsys@xxxxx.fr', '0', '1', '1', 'SIGNATURE', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', 'uid', 'mail', 'physicaldeliveryofficename', 'cn', 'telephonenumber', '', '', 'english', '#fff2f2', '#ffe0e0', '#ffcece', '#ffbfbf', '#ffadad', '2005-12-31', 10, '', '', '', '08:00:00', '20:00:00', 0, '0'); + + + +CREATE TABLE `glpi_connect_wire` ( + `ID` int(11) NOT NULL auto_increment, + `end1` int(11) NOT NULL default '0', + `end2` int(11) NOT NULL default '0', + `type` tinyint(4) NOT NULL default '0', + PRIMARY KEY (`ID`), + UNIQUE KEY `end1_1` (`end1`,`end2`,`type`), + KEY `end1` (`end1`), + KEY `end2` (`end2`), + KEY `type` (`type`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ; + + +INSERT INTO `glpi_connect_wire` (`ID`, `end1`, `end2`, `type`) VALUES +(1, 1, 1, 4), +(5, 2, 17, 4), +(4, 2, 13, 4), +(7, 2, 23, 4), +(8, 2, 24, 4), +(9, 2, 29, 4); + + + +CREATE TABLE `glpi_consumables` ( + `ID` int(11) NOT NULL auto_increment, + `FK_glpi_consumables_type` int(11) default NULL, + `date_in` date default NULL, + `date_out` date default NULL, + PRIMARY KEY (`ID`), + KEY `FK_glpi_cartridges_type` (`FK_glpi_consumables_type`), + KEY `date_in` (`date_in`), + KEY `date_out` (`date_out`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_consumables_type` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `ref` varchar(255) NOT NULL default '', + `location` int(11) NOT NULL default '0', + `type` tinyint(4) NOT NULL default '0', + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `tech_num` int(11) default '0', + `deleted` enum('Y','N') NOT NULL default 'N', + `comments` text NOT NULL, + `alarm` tinyint(4) NOT NULL default '10', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`), + KEY `tech_num` (`tech_num`), + KEY `deleted` (`deleted`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_contact_enterprise` ( + `ID` int(11) NOT NULL auto_increment, + `FK_enterprise` int(11) NOT NULL default '0', + `FK_contact` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + UNIQUE KEY `FK_enterprise` (`FK_enterprise`,`FK_contact`), + KEY `FK_enterprise_2` (`FK_enterprise`), + KEY `FK_contact` (`FK_contact`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_contacts` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `phone` varchar(30) NOT NULL default '', + `phone2` varchar(30) NOT NULL default '', + `fax` varchar(30) NOT NULL default '', + `email` varchar(255) NOT NULL default '', + `type` tinyint(4) NOT NULL default '1', + `comments` text NOT NULL, + `deleted` enum('Y','N') NOT NULL default 'N', + PRIMARY KEY (`ID`), + KEY `deleted` (`deleted`), + KEY `type` (`type`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_contract_device` ( + `ID` int(11) NOT NULL auto_increment, + `FK_contract` int(11) NOT NULL default '0', + `FK_device` int(11) NOT NULL default '0', + `device_type` tinyint(4) NOT NULL default '0', + `is_template` enum('0','1') NOT NULL default '0', + PRIMARY KEY (`ID`), + UNIQUE KEY `FK_contract` (`FK_contract`,`FK_device`,`device_type`), + KEY `FK_contract_2` (`FK_contract`), + KEY `FK_device` (`FK_device`,`device_type`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_contract_enterprise` ( + `ID` int(11) NOT NULL auto_increment, + `FK_enterprise` int(11) NOT NULL default '0', + `FK_contract` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + UNIQUE KEY `FK_enterprise` (`FK_enterprise`,`FK_contract`), + KEY `FK_enterprise_2` (`FK_enterprise`), + KEY `FK_contract` (`FK_contract`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_contracts` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `num` varchar(255) NOT NULL default '', + `cost` float NOT NULL default '0', + `contract_type` int(11) NOT NULL default '0', + `begin_date` date default NULL, + `duration` tinyint(4) NOT NULL default '0', + `notice` tinyint(4) NOT NULL default '0', + `periodicity` tinyint(4) NOT NULL default '0', + `facturation` tinyint(4) NOT NULL default '0', + `bill_type` int(11) NOT NULL default '0', + `comments` text NOT NULL, + `compta_num` varchar(255) NOT NULL default '', + `deleted` enum('Y','N') NOT NULL default 'N', + `week_begin_hour` time NOT NULL default '00:00:00', + `week_end_hour` time NOT NULL default '00:00:00', + `saturday_begin_hour` time NOT NULL default '00:00:00', + `saturday_end_hour` time NOT NULL default '00:00:00', + `saturday` enum('Y','N') NOT NULL default 'N', + `monday_begin_hour` time NOT NULL default '00:00:00', + `monday_end_hour` time NOT NULL default '00:00:00', + `monday` enum('Y','N') NOT NULL default 'N', + `device_countmax` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + KEY `contract_type` (`contract_type`), + KEY `begin_date` (`begin_date`), + KEY `bill_type` (`bill_type`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_device_case` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(255) NOT NULL default '', + `format` enum('Grand','Moyen','Micro') NOT NULL default 'Moyen', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; + + + + + +CREATE TABLE `glpi_device_control` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(255) NOT NULL default '', + `interface` enum('IDE','SATA','SCSI','USB') NOT NULL default 'IDE', + `raid` enum('Y','N') NOT NULL default 'Y', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + + + + +CREATE TABLE `glpi_device_drive` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(255) NOT NULL default '', + `is_writer` enum('Y','N') NOT NULL default 'Y', + `speed` varchar(30) NOT NULL default '', + `interface` enum('IDE','SATA','SCSI') NOT NULL default 'IDE', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; + + + + + +CREATE TABLE `glpi_device_gfxcard` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(120) NOT NULL default '', + `ram` varchar(10) NOT NULL default '', + `interface` enum('AGP','PCI','PCI-X','Other') NOT NULL default 'AGP', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + + + + +CREATE TABLE `glpi_device_hdd` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(100) NOT NULL default '', + `rpm` varchar(20) NOT NULL default '', + `interface` int(11) NOT NULL default '0', + `cache` varchar(20) NOT NULL default '', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + + + + +CREATE TABLE `glpi_device_iface` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(120) NOT NULL default '', + `bandwidth` varchar(20) NOT NULL default '', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; + + + + + +CREATE TABLE `glpi_device_moboard` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(100) NOT NULL default '', + `chipset` varchar(120) NOT NULL default '', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; + + +INSERT INTO `glpi_device_moboard` (`ID`, `designation`, `chipset`, `comment`, `FK_glpi_enterprise`, `specif_default`) VALUES +(1, 'NVidia Nforce 9', 'Nforce', 'kein', 2, ''); + + + +CREATE TABLE `glpi_device_pci` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(255) NOT NULL default '', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; + + + + + +CREATE TABLE `glpi_device_power` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(255) NOT NULL default '', + `power` varchar(20) NOT NULL default '', + `atx` enum('Y','N') NOT NULL default 'Y', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + + + + +CREATE TABLE `glpi_device_processor` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(120) NOT NULL default '', + `frequence` int(11) NOT NULL default '0', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; + + + + + +CREATE TABLE `glpi_device_ram` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(100) NOT NULL default '', + `frequence` varchar(8) NOT NULL default '', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + `type` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + + + + +CREATE TABLE `glpi_device_sndcard` ( + `ID` int(11) NOT NULL auto_increment, + `designation` varchar(120) NOT NULL default '', + `type` varchar(100) NOT NULL default '', + `comment` text NOT NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `specif_default` varchar(250) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + + + + +CREATE TABLE `glpi_doc_device` ( + `ID` int(11) NOT NULL auto_increment, + `FK_doc` int(11) NOT NULL default '0', + `FK_device` int(11) NOT NULL default '0', + `device_type` tinyint(4) NOT NULL default '0', + `is_template` enum('0','1') NOT NULL default '0', + PRIMARY KEY (`ID`), + UNIQUE KEY `FK_doc` (`FK_doc`,`FK_device`,`device_type`), + KEY `FK_doc_2` (`FK_doc`), + KEY `FK_device` (`FK_device`,`device_type`), + KEY `is_template` (`is_template`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=55 ; + + +INSERT INTO `glpi_doc_device` (`ID`, `FK_doc`, `FK_device`, `device_type`, `is_template`) VALUES +(17, 1, 1, 1, '0'), +(8, 1, 2, 1, '0'), +(50, 1, 1, 3, '0'), +(51, 4, 5, 3, '0'), +(52, 1, 7, 3, '0'), +(53, 4, 7, 3, '0'), +(54, 1, 8, 3, '0'); + + + +CREATE TABLE `glpi_docs` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `filename` varchar(255) NOT NULL default '', + `rubrique` int(11) NOT NULL default '0', + `mime` varchar(30) NOT NULL default '', + `date_mod` datetime NOT NULL default '0000-00-00 00:00:00', + `comment` text NOT NULL, + `deleted` enum('Y','N') NOT NULL default 'N', + `link` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `rubrique` (`rubrique`), + KEY `deleted` (`deleted`), + KEY `date_mod` (`date_mod`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; + + +INSERT INTO `glpi_docs` (`ID`, `name`, `filename`, `rubrique`, `mime`, `date_mod`, `comment`, `deleted`, `link`) VALUES +(1, 'Anleitung', 'class_mail-methods-kolab.inc', 0, 'application/octet-stream', '2006-01-25 11:23:16', 'leeer', 'N', ''), +(4, 'Hardware handbuch', 'sieve-php.inc', 0, 'application/octet-stream', '2006-09-29 11:01:52', 'Steht alles drin.\r\n42.342 Seiten', 'N', ''); + + + +CREATE TABLE `glpi_dropdown_cartridge_type` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ; + + +INSERT INTO `glpi_dropdown_cartridge_type` (`ID`, `name`) VALUES +(3, 'Color blue'), +(4, 'Color combination RGB'), +(6, 'Laser Cartridge Red'), +(8, 'Laser Cartridge Green'), +(9, 'Laser Cartridge combination RGB'), +(10, 'Color Black'), +(11, 'Color Black /& Rgb'); + + + +CREATE TABLE `glpi_dropdown_consumable_type` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_contact_type` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_contract_type` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; + + +INSERT INTO `glpi_dropdown_contract_type` (`ID`, `name`) VALUES +(1, 'Prêt'), +(2, 'Location'), +(3, 'Leasing'), +(4, 'Assurances'), +(5, 'Maintenance Hardware'), +(6, 'Maintenance Software'), +(7, 'Prestation'); + + + +CREATE TABLE `glpi_dropdown_domain` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_enttype` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_firmware` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_hdd_type` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; + + +INSERT INTO `glpi_dropdown_hdd_type` (`ID`, `name`) VALUES +(1, 'IDE'), +(2, 'SATA'), +(3, 'SCSI'); + + + +CREATE TABLE `glpi_dropdown_iface` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_kbcategories` ( + `ID` int(11) NOT NULL auto_increment, + `parentID` int(11) NOT NULL default '0', + `name` varchar(255) NOT NULL default '', + `completename` text NOT NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `parentID_2` (`parentID`,`name`), + KEY `parentID` (`parentID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_locations` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `parentID` int(11) NOT NULL default '0', + `completename` text NOT NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `name` (`name`,`parentID`), + KEY `parentID` (`parentID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + +INSERT INTO `glpi_dropdown_locations` (`ID`, `name`, `parentID`, `completename`) VALUES +(1, 'lala', 0, 'chk'), +(2, 'ldala', 1, 'chacka'); + + + +CREATE TABLE `glpi_dropdown_model` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_netpoint` ( + `ID` int(11) NOT NULL auto_increment, + `location` int(11) NOT NULL default '0', + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `location` (`location`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_network` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_os` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ; + + +INSERT INTO `glpi_dropdown_os` (`ID`, `name`) VALUES +(5, 'Windows 3.1'), +(6, 'Debian Sarge'), +(7, 'Debian Woody'), +(11, 'Windows 98 se'), +(10, 'Debian SID'), +(14, 'Windows Server 2003'), +(18, 'Windows 99'); + + + +CREATE TABLE `glpi_dropdown_ram_type` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; + + +INSERT INTO `glpi_dropdown_ram_type` (`ID`, `name`) VALUES +(1, 'EDO'), +(2, 'DDR'), +(3, 'SDRAM'), +(4, 'SDRAM-2'); + + + +CREATE TABLE `glpi_dropdown_rubdocs` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_state` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + +INSERT INTO `glpi_dropdown_state` (`ID`, `name`) VALUES +(1, 'asdf'), +(2, 'asdfasdf'); + + + +CREATE TABLE `glpi_dropdown_tracking_category` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_dropdown_vlan` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_enterprises` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(50) NOT NULL default '', + `type` int(11) NOT NULL default '0', + `address` text NOT NULL, + `website` varchar(100) NOT NULL default '', + `phonenumber` varchar(20) NOT NULL default '', + `comments` text NOT NULL, + `deleted` enum('Y','N') NOT NULL default 'N', + `fax` varchar(255) NOT NULL default '', + `email` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `deleted` (`deleted`), + KEY `type` (`type`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ; + + +INSERT INTO `glpi_enterprises` (`ID`, `name`, `type`, `address`, `website`, `phonenumber`, `comments`, `deleted`, `fax`, `email`) VALUES +(8, 'Microsoft', 0, 'Neverlandranche', 'www.google.de', '0001', 'No comment', '', '02', '02@01.00'), +(12, 'Cherry', 0, '3 Tasten höher als ''n'' 4 te links.', 'http://cherry_oder_so_aehnlich.com', 'N/A', 'N/A', '', 'N/A', 'N/A@N/A.N/A'), +(16, 'GONICUS GmbH', 0, '', 'http://www.gonicus.de', '', 'fg', '', '', ''); + + + +CREATE TABLE `glpi_event_log` ( + `ID` int(11) NOT NULL auto_increment, + `item` int(11) NOT NULL default '0', + `itemtype` varchar(20) NOT NULL default '', + `date` datetime NOT NULL default '0000-00-00 00:00:00', + `service` varchar(20) default NULL, + `level` tinyint(4) NOT NULL default '0', + `message` text NOT NULL, + PRIMARY KEY (`ID`), + KEY `comp` (`item`), + KEY `date` (`date`), + KEY `itemtype` (`itemtype`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=105 ; + + +INSERT INTO `glpi_event_log` (`ID`, `item`, `itemtype`, `date`, `service`, `level`, `message`) VALUES +(90, 0, 'dropdowns', '2006-01-18 14:58:40', 'setup', 5, 'glpi added a value to a dropdown.'), +(89, 0, 'dropdowns', '2006-01-18 14:58:31', 'setup', 5, 'glpi added a value to a dropdown.'), +(88, 0, 'dropdowns', '2006-01-18 14:58:22', 'setup', 5, 'glpi added a value to a dropdown.'), +(87, 0, 'dropdowns', '2006-01-18 14:58:07', 'setup', 5, 'glpi added a value to a dropdown.'), +(86, 0, 'dropdowns', '2006-01-18 14:56:55', 'setup', 5, 'glpi added a value to a dropdown.'), +(85, 0, 'dropdowns', '2006-01-18 14:56:40', 'setup', 5, 'glpi added a value to a dropdown.'), +(84, 0, 'dropdowns', '2006-01-18 14:56:28', 'setup', 5, 'glpi added a value to a dropdown.'), +(83, 0, 'dropdowns', '2006-01-18 14:56:12', 'setup', 5, 'glpi added a value to a dropdown.'), +(82, 1, 'cartridges', '2006-01-18 14:55:35', 'inventory', 4, 'glpi added item HP Deskjet 80000 Green.'), +(81, -1, 'system', '2006-01-18 14:49:46', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(80, -1, 'system', '2006-01-18 14:47:02', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(79, -1, 'system', '2006-01-17 12:23:40', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(78, 4, 'documents', '2006-01-17 09:51:47', 'document', 4, 'glpi associate device.'), +(77, 4, 'documents', '2006-01-17 09:51:38', 'document', 4, 'glpi associate device.'), +(76, 4, 'printers', '2006-01-17 09:41:51', 'inventory', 4, 'glpi updated item.'), +(75, 0, 'dropdowns', '2006-01-17 09:41:28', 'setup', 5, 'glpi added a value to a dropdown.'), +(74, 0, 'dropdowns', '2006-01-17 09:41:14', 'setup', 5, 'glpi added a value to a dropdown.'), +(73, 0, 'dropdowns', '2006-01-17 09:41:03', 'setup', 5, 'glpi added a value to a dropdown.'), +(72, 4, 'printers', '2006-01-17 08:56:20', 'inventory', 4, 'glpi added Name.'), +(71, -1, 'system', '2006-01-17 08:48:04', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(31, -1, 'system', '2005-12-23 09:38:42', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(32, 26, 'computers', '2005-12-23 09:39:05', 'inventory', 4, 'glpi deleted item.'), +(33, 0, 'Devices', '2005-12-23 14:53:31', 'inventory', 4, 'glpi added gzt.'), +(34, -1, 'system', '2006-01-03 07:49:38', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(35, -1, 'system', '2006-01-03 08:16:04', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(36, 11, 'networking', '2006-01-03 08:30:08', 'inventory', 4, 'glpi added item name .'), +(37, 2, 'Devices', '2006-01-03 12:07:52', 'inventory', 4, 'glpi updated item.'), +(38, 0, 'Devices', '2006-01-03 13:12:53', 'inventory', 4, 'glpi added asdfasdf.'), +(39, 0, 'Devices', '2006-01-03 13:27:36', 'inventory', 4, 'glpi added amd.'), +(40, 0, 'Devices', '2006-01-03 13:33:00', 'inventory', 4, 'glpi added Duschaube.'), +(41, 0, 'Devices', '2006-01-03 13:46:11', 'inventory', 4, 'glpi added name.'), +(42, 0, 'Devices', '2006-01-03 14:03:42', 'inventory', 4, 'glpi added Hdd.'), +(43, 0, 'Devices', '2006-01-03 14:42:23', 'inventory', 4, 'glpi added name.'), +(44, 0, 'Devices', '2006-01-03 14:59:12', 'inventory', 4, 'glpi added Controllers.'), +(45, 0, 'Devices', '2006-01-03 15:06:59', 'inventory', 4, 'glpi added gfxcard.'), +(46, 0, 'Devices', '2006-01-03 15:18:33', 'inventory', 4, 'glpi added power.'), +(47, 0, 'Devices', '2006-01-03 15:22:32', 'inventory', 4, 'glpi added pheripgherals.'), +(48, -1, 'system', '2006-01-04 08:15:26', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(49, 2, 'Devices', '2006-01-04 08:16:05', 'inventory', 4, 'glpi updated item.'), +(50, 26, 'computers', '2006-01-04 08:22:28', 'inventory', 4, 'glpi Unlinked a device from computer 26.'), +(51, -1, 'system', '2006-01-04 11:23:06', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(52, 26, 'documents', '2006-01-04 11:23:47', 'document', 4, 'glpi associate device.'), +(53, 2, 'documents', '2006-01-04 11:25:40', 'document', 4, 'glpi added item tester.'), +(54, 3, 'documents', '2006-01-04 11:26:09', 'document', 4, 'glpi added item .'), +(55, 4, 'documents', '2006-01-04 11:26:29', 'document', 4, 'glpi added item .'), +(56, -1, 'system', '2006-01-04 15:22:51', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(57, 3, 'documents', '2006-01-04 15:41:50', 'document', 4, 'glpi updated item.'), +(58, -1, 'system', '2006-01-05 10:17:59', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(59, 26, 'documents', '2006-01-05 10:18:52', 'document', 4, 'glpi associate device.'), +(60, -1, 'system', '2006-01-06 08:24:59', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(61, -1, 'system', '2006-01-06 09:21:47', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(62, -1, 'system', '2006-01-06 10:03:43', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(63, 0, 'dropdowns', '2006-01-06 10:33:17', 'setup', 5, 'glpi added a value to a dropdown.'), +(64, 0, 'dropdowns', '2006-01-06 10:41:57', 'setup', 5, 'glpi added a value to a dropdown.'), +(65, 0, 'dropdowns', '2006-01-06 10:42:12', 'setup', 5, 'glpi added a value to a dropdown.'), +(66, 5, 'monitors', '2006-01-06 14:38:56', 'inventory', 4, 'glpi added asdfasdf.'), +(67, 27, 'computers', '2006-01-06 14:39:39', 'inventory', 5, 'glpi connected item.'), +(68, -1, 'system', '2006-01-16 12:08:10', 'login', 1, 'failed login: root'), +(69, -1, 'system', '2006-01-16 12:08:23', 'login', 1, 'failed login: admin'), +(70, -1, 'system', '2006-01-16 12:08:35', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(91, 0, 'dropdowns', '2006-01-18 14:58:57', 'setup', 5, 'glpi added a value to a dropdown.'), +(92, 0, 'dropdowns', '2006-01-18 14:59:08', 'setup', 5, 'glpi added a value to a dropdown.'), +(93, 0, 'dropdowns', '2006-01-18 14:59:21', 'setup', 5, 'glpi added a value to a dropdown.'), +(94, 1, 'cartridges', '2006-01-18 15:00:07', 'inventory', 4, 'glpi updated item.'), +(95, 1, 'cartridges', '2006-01-18 15:02:10', 'inventory', 4, 'glpi added a cartridge.'), +(96, 1, 'cartridges', '2006-01-18 15:03:19', 'inventory', 4, 'glpi added a cartridge.'), +(97, 1, 'cartridges', '2006-01-18 15:31:39', 'inventory', 5, 'glpi installed cartridge.'), +(98, -1, 'system', '2006-01-19 08:33:27', 'login', 3, 'glpi logged in from 10.3.64.43.'), +(99, 1, 'cartridges', '2006-01-19 08:34:32', 'inventory', 4, 'glpi added 17 cartridge.'), +(100, 0, 'infocom', '2006-01-19 08:34:54', 'financial', 4, 'glpi added infocoms.'), +(101, 1, 'cartridges', '2006-01-19 10:21:27', 'inventory', 4, 'glpi updated item.'), +(102, 1, 'cartridges', '2006-01-19 10:21:33', 'inventory', 4, 'glpi added 1 cartridge.'), +(103, 2, 'cartridges', '2006-01-19 10:22:45', 'inventory', 4, 'glpi added item Laserjet3.'), +(104, 2, 'cartridges', '2006-01-19 10:23:16', 'inventory', 4, 'glpi updated item.'); + + + +CREATE TABLE `glpi_followups` ( + `ID` int(11) NOT NULL auto_increment, + `tracking` int(11) default NULL, + `date` datetime default NULL, + `author` int(11) NOT NULL default '0', + `contents` text, + PRIMARY KEY (`ID`), + KEY `tracking` (`tracking`), + KEY `author` (`author`), + KEY `date` (`date`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_infocoms` ( + `ID` int(11) NOT NULL auto_increment, + `FK_device` int(11) NOT NULL default '0', + `device_type` tinyint(4) NOT NULL default '0', + `buy_date` date NOT NULL default '0000-00-00', + `use_date` date NOT NULL default '0000-00-00', + `warranty_duration` tinyint(4) NOT NULL default '0', + `warranty_info` varchar(255) NOT NULL default '', + `FK_enterprise` int(11) default NULL, + `num_commande` varchar(50) NOT NULL default '', + `bon_livraison` varchar(50) NOT NULL default '', + `num_immo` varchar(50) NOT NULL default '', + `value` float NOT NULL default '0', + `warranty_value` float default NULL, + `amort_time` tinyint(4) NOT NULL default '0', + `amort_type` varchar(20) NOT NULL default '', + `amort_coeff` float NOT NULL default '0', + `comments` text NOT NULL, + `facture` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`), + UNIQUE KEY `FK_device` (`FK_device`,`device_type`), + KEY `FK_enterprise` (`FK_enterprise`), + KEY `buy_date` (`buy_date`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; + + +INSERT INTO `glpi_infocoms` (`ID`, `FK_device`, `device_type`, `buy_date`, `use_date`, `warranty_duration`, `warranty_info`, `FK_enterprise`, `num_commande`, `bon_livraison`, `num_immo`, `value`, `warranty_value`, `amort_time`, `amort_type`, `amort_coeff`, `comments`, `facture`) VALUES +(1, 10, 19, '0000-00-00', '0000-00-00', 0, '', NULL, '', '', '', 0, NULL, 0, '', 0, '', ''); + + + +CREATE TABLE `glpi_inst_software` ( + `ID` int(11) NOT NULL auto_increment, + `cID` int(11) NOT NULL default '0', + `license` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + KEY `cID` (`cID`), + KEY `sID` (`license`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_kbitems` ( + `ID` int(11) NOT NULL auto_increment, + `categoryID` int(11) NOT NULL default '0', + `question` text NOT NULL, + `answer` text NOT NULL, + `faq` enum('yes','no') NOT NULL default 'no', + PRIMARY KEY (`ID`), + KEY `categoryID` (`categoryID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_licenses` ( + `ID` int(15) NOT NULL auto_increment, + `sID` int(15) NOT NULL default '0', + `serial` varchar(255) NOT NULL default '', + `expire` date default NULL, + `oem` enum('N','Y') NOT NULL default 'N', + `oem_computer` int(11) NOT NULL default '0', + `buy` enum('Y','N') NOT NULL default 'Y', + PRIMARY KEY (`ID`), + KEY `sID` (`sID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_links` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_links_device` ( + `ID` int(11) NOT NULL auto_increment, + `FK_links` int(11) NOT NULL default '0', + `device_type` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + UNIQUE KEY `device_type_2` (`device_type`,`FK_links`), + KEY `device_type` (`device_type`), + KEY `FK_links` (`FK_links`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_monitors` ( + `ID` int(10) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `date_mod` datetime NOT NULL default '0000-00-00 00:00:00', + `contact` varchar(255) NOT NULL default '', + `contact_num` varchar(255) NOT NULL default '', + `tech_num` int(11) NOT NULL default '0', + `comments` text NOT NULL, + `serial` varchar(255) NOT NULL default '', + `otherserial` varchar(255) NOT NULL default '', + `size` int(3) NOT NULL default '0', + `flags_micro` tinyint(4) NOT NULL default '0', + `flags_speaker` tinyint(4) NOT NULL default '0', + `flags_subd` tinyint(4) NOT NULL default '0', + `flags_bnc` tinyint(4) NOT NULL default '0', + `location` int(11) default NULL, + `type` int(11) default NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `is_global` enum('0','1') NOT NULL default '0', + `deleted` enum('Y','N') NOT NULL default 'N', + `is_template` enum('0','1') NOT NULL default '0', + `tplname` varchar(255) default NULL, + PRIMARY KEY (`ID`), + KEY `ID` (`ID`), + KEY `type` (`type`), + KEY `location` (`location`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`), + KEY `deleted` (`deleted`), + KEY `is_template` (`is_template`), + KEY `tech_num` (`tech_num`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + +INSERT INTO `glpi_monitors` (`ID`, `name`, `date_mod`, `contact`, `contact_num`, `tech_num`, `comments`, `serial`, `otherserial`, `size`, `flags_micro`, `flags_speaker`, `flags_subd`, `flags_bnc`, `location`, `type`, `FK_glpi_enterprise`, `is_global`, `deleted`, `is_template`, `tplname`) VALUES +(2, 'asdfasdf', '0000-00-00 00:00:00', '', '', 0, '', '', '', 0, 0, 0, 0, 0, 0, 0, 0, '', '', '', ''); + + + +CREATE TABLE `glpi_networking` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(30) NOT NULL default '', + `ram` varchar(10) NOT NULL default '', + `serial` varchar(50) NOT NULL default '', + `otherserial` varchar(50) NOT NULL default '', + `contact` varchar(30) NOT NULL default '', + `contact_num` varchar(30) NOT NULL default '', + `tech_num` int(11) NOT NULL default '0', + `date_mod` datetime NOT NULL default '0000-00-00 00:00:00', + `comments` text NOT NULL, + `location` int(11) default NULL, + `domain` int(11) NOT NULL default '0', + `network` int(11) NOT NULL default '0', + `type` int(11) default NULL, + `firmware` int(11) default NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `deleted` enum('Y','N') NOT NULL default 'N', + `is_template` enum('0','1') NOT NULL default '0', + `tplname` varchar(255) default NULL, + `ifmac` varchar(30) NOT NULL default '', + `ifaddr` varchar(30) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `location` (`location`), + KEY `type` (`type`), + KEY `firmware` (`firmware`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`), + KEY `deleted` (`deleted`), + KEY `is_template` (`is_template`), + KEY `tech_num` (`tech_num`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ; + + +INSERT INTO `glpi_networking` (`ID`, `name`, `ram`, `serial`, `otherserial`, `contact`, `contact_num`, `tech_num`, `date_mod`, `comments`, `location`, `domain`, `network`, `type`, `firmware`, `FK_glpi_enterprise`, `deleted`, `is_template`, `tplname`, `ifmac`, `ifaddr`) VALUES +(10, '', '', '', '', '', '', 0, '0000-00-00 00:00:00', '', NULL, 0, 0, NULL, NULL, 0, 'N', '1', 'Blank Template', '', ''), +(11, '', '', '', '', '', '', 0, '2006-01-03 08:30:08', '', 0, 0, 0, 0, 0, 0, 'N', '0', NULL, '', ''); + + + +CREATE TABLE `glpi_networking_ports` ( + `ID` int(11) NOT NULL auto_increment, + `on_device` int(11) NOT NULL default '0', + `device_type` tinyint(4) NOT NULL default '0', + `logical_number` int(11) NOT NULL default '0', + `name` char(30) NOT NULL default '', + `ifaddr` char(30) NOT NULL default '', + `ifmac` char(30) NOT NULL default '', + `iface` int(11) default NULL, + `netpoint` int(11) default NULL, + PRIMARY KEY (`ID`), + KEY `on_device` (`on_device`,`device_type`), + KEY `netpoint` (`netpoint`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_networking_vlan` ( + `ID` int(11) NOT NULL auto_increment, + `FK_port` int(11) NOT NULL default '0', + `FK_vlan` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + UNIQUE KEY `FK_port_2` (`FK_port`,`FK_vlan`), + KEY `FK_port` (`FK_port`), + KEY `FK_vlan` (`FK_vlan`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_networking_wire` ( + `ID` int(11) NOT NULL auto_increment, + `end1` int(11) NOT NULL default '0', + `end2` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + UNIQUE KEY `end1_1` (`end1`,`end2`), + KEY `end1` (`end1`), + KEY `end2` (`end2`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_peripherals` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `date_mod` datetime NOT NULL default '0000-00-00 00:00:00', + `contact` varchar(255) NOT NULL default '', + `contact_num` varchar(255) NOT NULL default '', + `tech_num` int(11) NOT NULL default '0', + `comments` text NOT NULL, + `serial` varchar(255) NOT NULL default '', + `otherserial` varchar(255) NOT NULL default '', + `location` int(11) NOT NULL default '0', + `type` int(11) NOT NULL default '0', + `brand` varchar(255) NOT NULL default '', + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `is_global` enum('0','1') NOT NULL default '0', + `deleted` enum('Y','N') NOT NULL default 'N', + `is_template` enum('0','1') NOT NULL default '0', + `tplname` varchar(255) default NULL, + PRIMARY KEY (`ID`), + KEY `type` (`type`), + KEY `location` (`location`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`), + KEY `deleted` (`deleted`), + KEY `is_template` (`is_template`), + KEY `tech_num` (`tech_num`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + +INSERT INTO `glpi_peripherals` (`ID`, `name`, `date_mod`, `contact`, `contact_num`, `tech_num`, `comments`, `serial`, `otherserial`, `location`, `type`, `brand`, `FK_glpi_enterprise`, `is_global`, `deleted`, `is_template`, `tplname`) VALUES +(1, '', '0000-00-00 00:00:00', '', '', 0, '', '', '', 0, 0, '', 0, '0', 'N', '1', 'Blank Template'), +(2, 'gf5200', '2005-12-13 09:34:32', 'Herr Herr', '0231', 4, 'f', '45875486468', '4554', 0, 0, 'GC', 1, '0', 'N', '0', NULL); + + + +CREATE TABLE `glpi_printers` ( + `ID` int(10) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `date_mod` datetime NOT NULL default '0000-00-00 00:00:00', + `contact` varchar(255) NOT NULL default '', + `contact_num` varchar(255) NOT NULL default '', + `tech_num` int(11) NOT NULL default '0', + `serial` varchar(255) NOT NULL default '', + `otherserial` varchar(255) NOT NULL default '', + `flags_serial` tinyint(4) NOT NULL default '0', + `flags_par` tinyint(4) NOT NULL default '0', + `flags_usb` tinyint(4) NOT NULL default '0', + `comments` text NOT NULL, + `ramSize` varchar(6) NOT NULL default '', + `location` int(11) default NULL, + `domain` int(11) NOT NULL default '0', + `network` int(11) NOT NULL default '0', + `type` int(11) default NULL, + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `deleted` enum('Y','N') NOT NULL default 'N', + `is_template` enum('0','1') NOT NULL default '0', + `tplname` varchar(255) default NULL, + `initial_pages` varchar(30) NOT NULL default '0', + PRIMARY KEY (`ID`), + KEY `id` (`ID`), + KEY `location` (`location`), + KEY `type` (`type`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`), + KEY `deleted` (`deleted`), + KEY `is_template` (`is_template`), + KEY `tech_num` (`tech_num`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; + + +INSERT INTO `glpi_printers` (`ID`, `name`, `date_mod`, `contact`, `contact_num`, `tech_num`, `serial`, `otherserial`, `flags_serial`, `flags_par`, `flags_usb`, `comments`, `ramSize`, `location`, `domain`, `network`, `type`, `FK_glpi_enterprise`, `deleted`, `is_template`, `tplname`, `initial_pages`) VALUES +(1, 'cn=demohost,ou=printers,ou=systems,dc=gonicus,dc=de', '2006-02-01 12:48:33', '', '', 0, '', '', 0, 0, 0, '', '0', 0, 0, 0, 2, 8, 'N', '0', NULL, '0'), +(2, 'cn=drucker4,ou=printers,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '2006-09-19 09:49:33', '', '', 0, '', '', 0, 0, 0, '', '0', 0, 0, 0, 3, 12, 'N', '0', NULL, '0'), +(3, 'cn=drucker6,ou=printers,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '2006-11-29 14:53:41', '', '', 0, '', '', 0, 0, 0, '', '0', 0, 0, 0, 3, 12, 'N', '0', NULL, '0'), +(4, 'cn=Fettsäuren,ou=printers,ou=systems,ou=keks,ou=DasTestDep,o=Landeshauptstadt München,c=de', '2006-09-28 09:17:45', '', '', 0, '', '', 1, 1, 1, '', '0', 0, 0, 0, 3, 12, 'N', '0', NULL, '0'), +(5, 'cn=Brennwert,ou=printers,ou=systems,ou=keks,ou=DasTestDep,o=Landeshauptstadt München,c=de', '2006-09-29 11:02:10', '', '', 0, '', '', 1, 1, 1, 'dfsaaaaaaaaaaaaaaaaa', '0', 0, 0, 0, 3, 12, 'N', '0', NULL, '0'), +(7, 'cn=atz23,ou=printers,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '2006-11-29 10:19:48', '', '', 19, '', '', 1, 1, 1, 'ursssszzzzzzzzzzzzzzzzzzzzzzzzzzzzzz', '0', 0, 0, 0, 3, 12, 'N', '0', NULL, '0'), +(8, 'cn=drucker2,ou=printers,ou=systems,ou=DasTestDep,o=Landeshauptstadt München,c=de', '2006-11-29 10:25:26', '', '', 0, '', '', 1, 1, 1, 'test', '0', 0, 0, 0, 3, 12, 'N', '0', NULL, '0'); + + + +CREATE TABLE `glpi_repair_item` ( + `ID` int(11) NOT NULL auto_increment, + `device_type` tinyint(4) NOT NULL default '0', + `id_device` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + KEY `device_type` (`device_type`), + KEY `device_type_2` (`device_type`,`id_device`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_reservation_item` ( + `ID` int(11) NOT NULL auto_increment, + `device_type` tinyint(4) NOT NULL default '0', + `id_device` int(11) NOT NULL default '0', + `comments` text NOT NULL, + PRIMARY KEY (`ID`), + KEY `device_type` (`device_type`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; + + +INSERT INTO `glpi_reservation_item` (`ID`, `device_type`, `id_device`, `comments`) VALUES +(1, 1, 20, ''); + + + +CREATE TABLE `glpi_reservation_resa` ( + `ID` bigint(20) NOT NULL auto_increment, + `id_item` int(11) NOT NULL default '0', + `begin` datetime NOT NULL default '0000-00-00 00:00:00', + `end` datetime NOT NULL default '0000-00-00 00:00:00', + `id_user` int(11) NOT NULL default '0', + `comment` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`), + KEY `id_item` (`id_item`), + KEY `id_user` (`id_user`), + KEY `begin` (`begin`), + KEY `end` (`end`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_software` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(200) NOT NULL default '', + `version` varchar(20) NOT NULL default '', + `comments` text, + `location` int(11) default NULL, + `tech_num` int(11) NOT NULL default '0', + `platform` int(11) default NULL, + `is_update` enum('N','Y') NOT NULL default 'N', + `update_software` int(11) NOT NULL default '-1', + `FK_glpi_enterprise` int(11) NOT NULL default '0', + `deleted` enum('Y','N') NOT NULL default 'N', + `is_template` enum('0','1') NOT NULL default '0', + `tplname` varchar(255) default NULL, + `date_mod` datetime default NULL, + PRIMARY KEY (`ID`), + KEY `platform` (`platform`), + KEY `location` (`location`), + KEY `FK_glpi_enterprise` (`FK_glpi_enterprise`), + KEY `deleted` (`deleted`), + KEY `is_template` (`is_template`), + KEY `date_mod` (`date_mod`), + KEY `tech_num` (`tech_num`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; + + +INSERT INTO `glpi_software` (`ID`, `name`, `version`, `comments`, `location`, `tech_num`, `platform`, `is_update`, `update_software`, `FK_glpi_enterprise`, `deleted`, `is_template`, `tplname`, `date_mod`) VALUES +(6, '', '', NULL, NULL, 0, NULL, 'N', -1, 0, 'N', '1', 'Blank Template', NULL); + + + +CREATE TABLE `glpi_state_item` ( + `ID` int(11) NOT NULL auto_increment, + `device_type` tinyint(4) NOT NULL default '0', + `id_device` int(11) NOT NULL default '0', + `state` int(11) default '1', + `is_template` enum('0','1') NOT NULL default '0', + PRIMARY KEY (`ID`), + KEY `device_type` (`device_type`), + KEY `device_type_2` (`device_type`,`id_device`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_tracking` ( + `ID` int(11) NOT NULL auto_increment, + `date` datetime default NULL, + `closedate` datetime NOT NULL default '0000-00-00 00:00:00', + `status` enum('new','old') default NULL, + `author` int(11) NOT NULL default '0', + `assign` int(11) NOT NULL default '0', + `assign_type` tinyint(4) NOT NULL default '0', + `device_type` int(11) NOT NULL default '1', + `computer` int(11) default NULL, + `contents` text, + `priority` tinyint(4) NOT NULL default '1', + `is_group` enum('no','yes') NOT NULL default 'no', + `uemail` varchar(100) default NULL, + `emailupdates` varchar(4) default NULL, + `realtime` float NOT NULL default '0', + `category` int(11) NOT NULL default '0', + PRIMARY KEY (`ID`), + KEY `computer` (`computer`), + KEY `author` (`author`), + KEY `assign` (`assign`), + KEY `date` (`date`), + KEY `closedate` (`closedate`), + KEY `status` (`status`), + KEY `category` (`category`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_tracking_planning` ( + `ID` bigint(20) NOT NULL auto_increment, + `id_tracking` int(11) NOT NULL default '0', + `id_assign` int(11) NOT NULL default '0', + `begin` datetime NOT NULL default '0000-00-00 00:00:00', + `end` datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (`ID`), + KEY `id_tracking` (`id_tracking`), + KEY `begin` (`begin`), + KEY `end` (`end`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_type_computers` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=30 ; + + +INSERT INTO `glpi_type_computers` (`ID`, `name`) VALUES +(26, 'SuperDupfer'), +(27, 'Server'), +(18, 'System tester'), +(19, 'Windows workstation'), +(21, 'Network device'), +(28, 'Microcontroller'); + + + +CREATE TABLE `glpi_type_docs` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `ext` varchar(10) NOT NULL default '', + `icon` varchar(255) NOT NULL default '', + `mime` varchar(100) NOT NULL default '', + `upload` enum('Y','N') NOT NULL default 'Y', + `date_mod` datetime default NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `extension` (`ext`), + KEY `upload` (`upload`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=54 ; + + +INSERT INTO `glpi_type_docs` (`ID`, `name`, `ext`, `icon`, `mime`, `upload`, `date_mod`) VALUES +(1, 'JPEG', 'jpg', 'jpg-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(2, 'PNG', 'png', 'png-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(3, 'GIF', 'gif', 'gif-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(4, 'BMP', 'bmp', 'bmp-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(5, 'Photoshop', 'psd', 'psd-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(6, 'TIFF', 'tif', 'tif-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(7, 'AIFF', 'aiff', 'aiff-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(8, 'Windows Media', 'asf', 'asf-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(9, 'Windows Media', 'avi', 'avi-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(44, 'C source', 'c', '', '', 'Y', '2004-12-13 19:47:22'), +(27, 'RealAudio', 'rm', 'rm-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(16, 'Midi', 'mid', 'mid-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(17, 'QuickTime', 'mov', 'mov-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(18, 'MP3', 'mp3', 'mp3-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(19, 'MPEG', 'mpg', 'mpg-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(20, 'Ogg Vorbis', 'ogg', 'ogg-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(24, 'QuickTime', 'qt', 'qt-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(10, 'BZip', 'bz2', 'bz2-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(25, 'RealAudio', 'ra', 'ra-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(26, 'RealAudio', 'ram', 'ram-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(11, 'Word', 'doc', 'doc-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(12, 'DjVu', 'djvu', '', '', 'Y', '2004-12-13 19:47:21'), +(42, 'MNG', 'mng', '', '', 'Y', '2004-12-13 19:47:22'), +(13, 'PostScript', 'eps', 'ps-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(14, 'GZ', 'gz', 'gz-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(37, 'WAV', 'wav', 'wav-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(15, 'HTML', 'html', 'html-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(34, 'Flash', 'swf', '', '', 'Y', '2004-12-13 19:47:22'), +(21, 'PDF', 'pdf', 'pdf-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(22, 'PowerPoint', 'ppt', 'ppt-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(23, 'PostScript', 'ps', 'ps-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(40, 'Windows Media', 'wmv', '', '', 'Y', '2004-12-13 19:47:22'), +(28, 'RTF', 'rtf', 'rtf-dist.png', '', 'Y', '2004-12-13 19:47:21'), +(29, 'StarOffice', 'sdd', 'sdd-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(30, 'StarOffice', 'sdw', 'sdw-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(31, 'Stuffit', 'sit', 'sit-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(43, 'Adobe Illustrator', 'ai', 'ai-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(32, 'OpenOffice Impress', 'sxi', 'sxi-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(33, 'OpenOffice', 'sxw', 'sxw-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(46, 'DVI', 'dvi', 'dvi-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(35, 'TGZ', 'tgz', 'tgz-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(36, 'texte', 'txt', 'txt-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(49, 'RedHat/Mandrake/SuSE', 'rpm', 'rpm-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(38, 'Excel', 'xls', 'xls-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(39, 'XML', 'xml', 'xml-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(41, 'Zip', 'zip', 'zip-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(45, 'Debian', 'deb', 'deb-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(47, 'C header', 'h', '', '', 'Y', '2004-12-13 19:47:22'), +(48, 'Pascal', 'pas', '', '', 'Y', '2004-12-13 19:47:22'), +(50, 'OpenOffice Calc', 'sxc', 'sxc-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(51, 'LaTeX', 'tex', 'tex-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(52, 'GIMP multi-layer', 'xcf', 'xcf-dist.png', '', 'Y', '2004-12-13 19:47:22'), +(53, 'JPEG', 'jpeg', 'jpg-dist.png', '', 'Y', '2005-03-07 22:23:17'); + + + +CREATE TABLE `glpi_type_monitors` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; + + +INSERT INTO `glpi_type_monitors` (`ID`, `name`) VALUES +(1, 'testoe'); + + + +CREATE TABLE `glpi_type_networking` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_type_peripherals` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + + + + +CREATE TABLE `glpi_type_printers` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(255) default NULL, + PRIMARY KEY (`ID`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ; + + +INSERT INTO `glpi_type_printers` (`ID`, `name`) VALUES +(2, 'Tintenstrahl'), +(3, 'Farb Laser'), +(5, 'Not known'), +(6, 'Nadeldrucker Farbe'), +(10, 'Nadeldrucker'), +(11, 'Laser'), +(12, 'Photodrucker A3'), +(14, 'Tintentrahl'); + + + +CREATE TABLE `glpi_users` ( + `ID` int(11) NOT NULL auto_increment, + `name` varchar(80) NOT NULL default '', + `password` varchar(80) NOT NULL default '', + `password_md5` varchar(80) NOT NULL default '', + `email` varchar(80) NOT NULL default '', + `phone` varchar(100) default NULL, + `type` enum('normal','admin','post-only','super-admin') NOT NULL default 'normal', + `realname` varchar(255) NOT NULL default '', + `can_assign_job` enum('yes','no') NOT NULL default 'no', + `location` int(11) default NULL, + `tracking_order` enum('yes','no') NOT NULL default 'no', + `language` varchar(255) NOT NULL default '', + PRIMARY KEY (`ID`), + UNIQUE KEY `name` (`name`), + KEY `type` (`type`), + KEY `name_2` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ; + + +INSERT INTO `glpi_users` (`ID`, `name`, `password`, `password_md5`, `email`, `phone`, `type`, `realname`, `can_assign_job`, `location`, `tracking_order`, `language`) VALUES +(1, 'cn=GOsa main administrator admin,ou=people,dc=gonicus,dc=de', '', '', 'asdfasdf@asdfasdf.de', '333333333', 'normal', '', 'no', NULL, 'no', ''), +(2, 'cn=Getester Hainz,ou=people,dc=gonicus,dc=de', '', '', 'gtest@blafasel.org', NULL, 'normal', '', 'no', NULL, 'no', ''), +(3, 'cn=adff dendnen,ou=people,dc=gonicus,dc=de', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(4, 'cn=tttttttttttt testttttttttttttttttt,ou=people,ou=Diesisteinelangeabteilung,ou=', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(5, 'cn=asdff33 asdf333,ou=people,ou=tester,ou=Vertrieb,dc=gonicus,dc=de', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(6, 'cn=Florian Schiessl,ou=people,o=Landeshauptstadt München,c=de', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(7, 'cn=blub blab,ou=people,o=Landeshauptstadt München,c=de', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(8, 'cn=Florian test,ou=people,o=Landeshauptstadt München,c=de', '', '', '', '233-92742', 'normal', '', 'no', NULL, 'no', ''), +(9, 'uid=pppppp,ou=people,o=Landeshauptstadt München,c=de', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(10, 'cn=acltest2 acltest2,ou=people,ou=checkTheFAIStuff,ou=DasTestDep,o=Landeshauptst', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(11, 'cn=acltest acltest,ou=people,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', 'acltest@gonicus.de', '123123', 'normal', '', 'no', NULL, 'no', ''), +(12, 'cn=Max Mustermann,ou=people,ou=PrinterLosesMember,ou=DasTestDep,o=Landeshauptsta', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(13, 'cn=Susanne Neuhaus,ou=people,ou=PrinterLosesMember,ou=DasTestDep,o=Landeshauptst', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(14, '', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(15, 'cn=Florian Meier,ou=people,ou=PrinterLosesMember,ou=DasTestDep,o=Landeshauptstad', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(16, 'cn=abtielung abtielung,ou=people,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '7890', 'normal', '', 'no', NULL, 'no', ''), +(17, 'cn=Franz Keller,ou=people,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', 'ableis@gonicus.de', NULL, 'normal', '', 'no', NULL, 'no', ''), +(18, 'cn=Jan Wenzel,ou=people,o=Landeshauptstadt München,c=de', '', '', '', NULL, 'normal', '', 'no', NULL, 'no', ''), +(19, 'cn=acl2 acl2,ou=people,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', '', '22222222222222', 'normal', '', 'no', NULL, 'no', ''), +(20, 'cn=a11 a11,ou=people,ou=DasTestDep,o=Landeshauptstadt München,c=de', '', '', 'a11@gonicus.de', '311112', 'normal', '', 'no', NULL, 'no', ''), +(21, 'cn=Admin Admin,ou=people,o=Landeshauptstadt München,c=de', '', '', 'ableis@gonicus.de', '1234', 'normal', '', 'no', NULL, 'no', ''); + diff --git a/trunk/gosa-plugins/glpi/help/guide.xml b/trunk/gosa-plugins/glpi/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/glpi/html/images/crossref.png b/trunk/gosa-plugins/glpi/html/images/crossref.png new file mode 100644 index 0000000000000000000000000000000000000000..ec2ed7888048c4e40f3186bf857a5ea56e7410bd GIT binary patch literal 628 zcmV-)0*n2LP)=~GvY;4HG@zxWlERgMiUdSO!BmP^Scr{S zh=onC6VW1w7Dh!`OD5=bd}UVo4O&SEqkx1P_p)SKSX=pnmJ{N4=?i%d4jFCN+18QU?a<~D6ez)-tvp9w70T|AjxZQPkH zUS>R+z+D=C0~`v90KGE2v2if3`R#>v(Q-mL+FEGoLlxRrDVqsJmf-mw9?YzMdhsrO zk_EwIOzKhBf?#I=y8G3~%yj_w04xF_ueZ~irx!7@t72WK_NUBj5>Pa=Y{c1UJHRsl zP8Y!aJs{F45c(36da!P;)@%Y~dhR`~biDBRKq(=642aQS7~J2ETGQ(J!nzJD#{rCk zDwlL4ts5#qe-22*fe$U9Wks+ZS8(5&qdx`QF9i_cEpX?CAv-9f0LB5!1+p5D*M*RT zJp;i`li#LfWXXudq^qg4d90Mzl_&x_wm_#@e;owu1b}(+$EfXJ$bd-awRB-zk`-;` zbK`Bq>`_cr-~9Rpy^tJ;Gyy6PfxG7bJi=6!|2?1!F#yN_zN`)ZANmR~0K@^w{uA2( O0000fbpVE+-^{O_8QRViS{Aw=g@Seuu*F?sR%Bfhqmf`d8DnDN1^$OU8521A7cBpP z(aRby>Oo`NgI-o5AL`;k3v553?UZ)f>2x~dLD`#6@*dyhIlQk3!w`VY%}q0zOx{bS zQuh;y#G(-5Dv%C>zzxH&J{paR-EQ}nQmORq&d$ys{D;`s*iiHN{1=%_X5F$Zqu=ji z+cv)M10bbDQ4|zK!7vPb-w)gEcDd1LJlNXW`bl? zBuXR_c^)Yxnx+Zhnw0Y4>gwuO(z2|zL?VHzssurBX@;UG*xDpZcW&{lTBY4}7*~Db zngk#kjm8bb$V*+<4NcQnUtgzQuVdRbp6Ai&bntwYiO7iCudguhN0b|Fj>}bC(ZTK7 zq^`{-rES}dSS*$^O_O*$&cVR}K@gD1WN39A0G*O53)Z zLWnubval?RSS-d-?U+AncPQ4M5Rs?21D7i^X_ApNEw{yF5T|OE7^}V*%87}IsbaB+ zl#)au0YIogLOp`uVW9@-QC@vx3{<5TCH}oTrO*sN=5CdO_8`B zr{Wyb;+!UBYQazRd#ChAcX5S=GaL~QTu)q{NeB^5r_-rIp|EiK{h5ckS99~{y&6sD z9DC59(LEXJn4dNbN^1 zAczD;Y45~{r*7!UaW!nWg69VRhY&)({n2Y58Z+vqrs*@EfBem?5JJ1Z_U;GQ=Wf37 Y55kvzVLJ~b(EtDd07*qoM6N<$g8dl63;+NC literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/glpi/html/images/gfx_hardware.png b/trunk/gosa-plugins/glpi/html/images/gfx_hardware.png new file mode 100644 index 0000000000000000000000000000000000000000..af9f6f7444a3c81debcac9882e23b7c0760ce5ab GIT binary patch literal 819 zcmV-31I+x1P)DW` zK~y-)#gk2FTvY&tzx(ceZ+<&TCeuu38pjfov=XaSr41@wlu{|Bg@RZJQa6gA6qha4 zg@VD~I+UE)48Tzx3)`r;lZ$ z?U+DgtR=$3+>Wy$YlPCr8c9NAa8NWvU7S91_5(FOKK{y{kw?Esc`3ECdym|z^YoQ9 z2&m>0Y_ue6sbzGkL(=IYEwj}9HFm@X@!WVq#pCh7afFSGwQKq&SjF{iO*-1gXocw& zgjUn(_+(oB{8?M)kK`=rz6^nmjFM71SO7sIx6XLxyUa;VmxL>x0y8g8Q(G12_OmNn`}& zoZ^OPaHCzJ?yd5Ry~JBV}t1ltbt-0{Vd- z=6CJxV|e((;wr$HBQ3*1a8>}t6)Ar;jX7B*Wkp4?T38Aq1y#YKx|Bex4SV0RwIZ^V zz}afT%CHu@qya<k4lC-4CCAfSHHj zAx1+Cdg3duU2HJM;@*5bxbu1ZwoX2gLq|@LoH|O%|8%gkOYfkn%>C1~!HT75MK+FX zlwy>ruem;W#q+BV*m}Rsqs00001uZb$;s9f6b_IBB&D(HwwXICI&@eF2D;A1UKG* zYp+Cbq1%v!E(9SMFoJjw;zBf&*fTxd(_LL%Kj$15Gqe|wZ}aUQ-uHnQUhtypuRi_k z%ZKmYzWrgA+ukM#B7!Iu;2h3-l!|FrEvwC#{Pg1w4E_pT8$D35m5x z8FTmjk9qCp>x@H3??$pXMjMj>8Gr;ZMpZIa^6v3{?i?L63_Zbnl#~b&({?RdO2)zA z-9(n<3Z*K>5dn~ma7$u^_ob;WY*%{gtaLuG4-xOmX@WIiaawYqiEX=`%Obt z6}ZW<*=`5|>bk;B4r3HHNvrj8eg(+$Vow`QQ>R36Kx;{1H9`tRB*;fg1eBSj?FMX? zlBRjHt5EN~v>yqW%@&CWqn);F{Y^j**V-=~}hPXI(D0Ek6|hy_Y& zR4frV$}<07;^ad0?bqKhpPfk-9#Ikbbm6x|~-}_(N5Ej7c_VcP}C)u01kB9A zvPwc?GYSq04OBf#84>3505ZDq0Phq60MHjf0KUZ00NqT%0R962074Q=0Oj)N038b@ z0HoQh0RQ^!F9L|g-aee=$B!=z41XE_{Q1kw@R>t|VVB8QhR=*Y8Q!s>z(J0t65fAD=MLZ+{v71L42_>`gF%>AltD~SkwN&s5QCJU9K+_{yTGvk z5I`)j==jUZ%pi8-1;b_4;|$#VQVd@Y@i1H!IKv>S;mq*wJ1@ig|92T4A9%>{i1Pu1 zi?#>@6EibdA3y+s4FE+E%g^5ox6Cye{{3TN`1kWQgQBY-!{%ov7~bD-WqAMoAH!Se zMGU|7*%&_j`o_TdfD^0-NH7Bg5DO!S#l*XI+) z-~R!PV*CH^=NASRVJU`FSFSPqzr(N!7|1IjF8&AeH8`yS1Q4UOb+F@`H=lBD-rBbj zXzUB1ARkBqDYY^KmEHu3T*Q`?0RjkyK$-*zBzs0|f&c-;NNIKk2rvL0bM$@_sPdQq O0000+k{ZH&VY&#R1s~Vg@}PHsHzY{ zGDKp_02>QS5n}FGRdhqpsj7sOs;v-#A_gdtLnDzn4C4e*$R! zjgc|Nb^UoAy0>+yyP)H_OS-fCm9FUrx}hKFuHMkUmVeamUK*_ePG2YcB%Q>Lf)4Ag z5^H{yZ%?IIFAUM}>ePBQD$Ul14jJ*i}3T;-s^s}=nb>Icb&TV2Ch?QySqjB!mBKe zM9kN3veLVcm0)0B1)#=eynyyG;!o)XFH>#pV47eIALB2tMcCdz*a4PJI{0sbCqpn8 zYmLtmLbUP17`2xsx|PLV9U+J%yFnWqvim9kVB!cQuBQkBLC5!re8qgF$ab^KsC9y| z^aNpo%)tgdj7UVdo{thqUKu<~ML*>3nFYQX_<`>p-XcWcsi$ug6B84|)6>&ugHFI) zeeT@&JL4ZTx(#y49QkCPO?LyY*FlRAM_Jgm!=2fmZ=cUkeYtqQ_@|hhoV++SHFY7A z&2Tt(7$@bBAIy`oQy7+k5(dq!N35=vSXo|R^u$~ABA>3`;mT)ME{d6%naib8$#1n< zB|{oY8WN=xQa-sv;Kd%Ghh*(YI*l9E}PgE~*dj^o&FT)D0rSe7thWK3P}fl=IhtW94Jh_oUa7YvQ2 z-ye|f+HjRD*n-n6l=~ez>yLg|< zR2f^u@q-Quz(j{$YTdhxIaB=6{+V&}IH9&^hg~|uD&bHun;9iF8^1(H z7JJ=*j5EgXW{uhnkF&8$%srU`VR7upBs1D$tmtty{ANViwvBDu*xFEeDobn-Fy8Nz zKk1UMj-al*$Y$~myML#7b#acS-$rZ5CB}I!_s)U>KuL3CBxj$U$irX=QbDiHyZN^` z_qB(A5OL#HkxV+lsh4KaI^x=T0e6@mQI6wCZ*n5LbGvc(y^p^7MMXjxp^VW3L@Xta zPcO~Q&Yz5**z541T;hl8B}UUJE?>QlCEb?DWHQH2pMHI5W#!9DK@gN5dU=@7F8{Vt z^xZdH+oHKupjfC-s~-?k0wscF@u;)h+^n4QyTQl3Za1<1>z}OOJfPwCD3$MR?r*Ox zsz(7zx7I)RJa0N^v?lhe-I=3VWwo32?}pVMKke;atNjCC7da+7jF|}l0000JP)>|7a;Q^_JaTb0s~1z zK~y-)oszw4R8bJcfA_tYHLMZh2BWUns01}&l0sw)8^JB?#7bfRfhAyLqk^4Z5U`MJ zqYxx0R@zxwSR`PSAc9B`MA0RP0potW_wL?1WAWBx69t0@hB=(MXXf7Fnz7rTpA8qb zm7Im7>9L8!wjF6pu(2bJvmCExx}<`-4jO-2#;=@X0qqtvR-u)H zRtTcdao`kO2M{0t=pRI0?~itGH_7-A1I;`ngOH|>CXjS<97B>o^C!e@#e0ZC!-w}F zAD40x9T-$DjDpgIZb(38$Y9pATle7Z_kbt_jOi&EwuC4UK#9EgKZ?fuyNh*-iV~>j zzaZjK6#`VZ=BSx0x@c*E<*zOXL}bgRUi~H`^bh2O%TMYJ5z*dIRn=)!wWvDBI@e;x z=UC$rn{FVYgrR||X49(`D2)L}vjf$4z#FK|vhVRsIqKbk2zalAVORLwWMURduQF}^ z3@pNpZ~>LK1Yyq;g8=&a%*Gv5D^QvOzGYFGf@*~;{y3_FsZ1|v`Q#y*F(mQ&SHAWo zfNBxu>##`10cv%a07^xu)iH-BUtTKY$=TTAk`B(MINQNn$I_{@*8xVJKfU@lzW3q% zvKhU&z@8n3G_m-^;jHa8=+KCBoXEf6(UCitov{L}w1>^){CQ@^A0P_907qObKA$?< Q+yDRo07*qoM6N<$f*A@M8~^|S literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/glpi/html/images/zip.png b/trunk/gosa-plugins/glpi/html/images/zip.png new file mode 100644 index 0000000000000000000000000000000000000000..af23ddfaae1b9bb3353433ffef8ce47babf4343d GIT binary patch literal 791 zcmV+y1L*vTP)A| z6VIMlwu2fI4?7s;58#FgkPv>9aA1j`Bx=J5i6c8mpaIgdm2L2@FE4MqcB3zEJ-Ik- z}_aha91jo zST>to0h9{`!^6WrjE#-mY;S90eSICnFmSnC?%LYg*ulZUe&2H0PuRf?)v)r*#7?hE0ULj{{H^kb8~awly#k@J9o%tvzSaK%w{u%QVA>q z{qA3B-x-F%*47p$CnuOpCeC#o!(zcuPWVXHxYX0bi*_IK(Gj6g z$nEiXKHT2k{!Ivn!{0`u(XcGbXqtv7ij>P`42y;HT#mt~c|1MuQ2*&CM5C8^D$5iK z1-iPrTpJr3XF^R)&3lq0z3+57DHe+qi$yG=i2me=L8XW-_$K?2Fp0!Gk?w9K~e>`TTzW+g7WUhYudm83^#fl`GWRY)ni{kVquf(&_Xq;1GEJ z?;#ZwMfp9K%e~Rr+1XWBSI5rI4!W+hu&}_)%*@?PCUXP$6LFeuT1A-R;)gs#M_K}O=zW^a3 VCR?{W, 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2008-04-03 16:07+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Users" +msgstr "Benutzer" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Departments" +msgstr "Abteilungen" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:109 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:51 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:51 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:51 +msgid "Use" +msgstr "Benutzen" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +msgid "use" +msgstr "verwenden" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Go to root department" +msgstr "Gehe zur Wurzel-Abteilung" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Root" +msgstr "Wurzel" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Go up one department" +msgstr "Eine Abteilung nach oben" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Up" +msgstr "Auf" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Go to users department" +msgstr "Gehe zur Abteilung des Benutzers" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Home" +msgstr "Heimat" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +msgid "Reload list" +msgstr "Liste neu laden" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit" +msgstr "Übertragen" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:178 +msgid "Base" +msgstr "Basis" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit department" +msgstr "Aktualisieren" + +#: admin/systems/services/glpi/goGlpiServer.tpl:1 +msgid "GLPI database information" +msgstr "Informationen der GLPI-Datenbank" + +#: admin/systems/services/glpi/goGlpiServer.tpl:4 +msgid "Logging DB user" +msgstr "Protokoll-DB Benutzer" + +#: admin/systems/services/glpi/goGlpiServer.tpl:12 +#: admin/systems/services/glpi/class_goGlpiServer.inc:102 +msgid "Password" +msgstr "Passwort" + +#: admin/systems/services/glpi/goGlpiServer.tpl:20 +#: admin/systems/services/glpi/class_goGlpiServer.inc:101 +msgid "Database" +msgstr "Datenbank" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:8 +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:29 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:7 +#: admin/systems/services/glpi/glpi_edit_os.tpl:9 +#: admin/systems/services/glpi/glpi_edit_os.tpl:28 +#: admin/systems/services/glpi/glpi_edit_type.tpl:9 +#: admin/systems/services/glpi/glpi_edit_type.tpl:28 +msgid "Rename" +msgstr "Umbenennen" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:14 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:81 +#: admin/systems/services/glpi/glpiManufacturer.tpl:13 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:13 +#: admin/systems/services/glpi/glpi_edit_os.tpl:15 +#: admin/systems/services/glpi/glpi_edit_type.tpl:15 +msgid "Close" +msgstr "Schliessen" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:25 +#: admin/systems/services/glpi/glpi_edit_os.tpl:24 +#: admin/systems/services/glpi/glpi_edit_type.tpl:24 +msgid "Please enter a new name" +msgstr "Bitte geben Sie einen neuen Namen ein" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:2 +msgid "Attachment" +msgstr "Anhang" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:10 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:7 +#: admin/systems/services/glpi/glpi_devices.tpl:10 +#: admin/systems/services/glpi/glpi_devices.tpl:105 +#: admin/systems/services/glpi/glpi_devices.tpl:146 +#: admin/systems/services/glpi/glpi_devices.tpl:201 +#: admin/systems/services/glpi/glpi_devices.tpl:257 +#: admin/systems/services/glpi/glpi_devices.tpl:315 +#: admin/systems/services/glpi/glpi_devices.tpl:379 +#: admin/systems/services/glpi/glpi_devices.tpl:451 +#: admin/systems/services/glpi/glpi_devices.tpl:515 +#: admin/systems/services/glpi/glpi_devices.tpl:562 +#: admin/systems/services/glpi/glpi_devices.tpl:615 +#: admin/systems/services/glpi/glpi_devices.tpl:669 +#: admin/systems/services/glpi/glpi_devices.tpl:715 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:7 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:197 +msgid "Name" +msgstr "Name" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:18 +#: admin/systems/services/glpi/glpi_devices.tpl:112 +#: admin/systems/services/glpi/glpi_devices.tpl:153 +#: admin/systems/services/glpi/glpi_devices.tpl:208 +#: admin/systems/services/glpi/glpi_devices.tpl:264 +#: admin/systems/services/glpi/glpi_devices.tpl:322 +#: admin/systems/services/glpi/glpi_devices.tpl:386 +#: admin/systems/services/glpi/glpi_devices.tpl:458 +#: admin/systems/services/glpi/glpi_devices.tpl:522 +#: admin/systems/services/glpi/glpi_devices.tpl:569 +#: admin/systems/services/glpi/glpi_devices.tpl:622 +#: admin/systems/services/glpi/glpi_devices.tpl:676 +#: admin/systems/services/glpi/glpi_devices.tpl:722 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:25 +#: admin/systems/services/glpi/class_glpiAccount.inc:803 +#: admin/systems/services/glpi/glpi.tpl:79 +msgid "Comment" +msgstr "Kommentar" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:30 +msgid "File" +msgstr "Datei" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:33 +msgid "Upload" +msgstr "Hochladen" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:38 +msgid "Status" +msgstr "Status" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:46 +msgid "Filename" +msgstr "Dateiname" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:54 +msgid "Mime-type" +msgstr "MIME-Typ" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:104 +msgid "Can't delete this entry, it is still in use." +msgstr "Kann diesen Eintrag nicht entfernen, da er noch benutzt wird." + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:268 +#: admin/systems/services/glpi/class_glpiAccount.inc:656 +#: admin/systems/services/glpi/class_glpiAccount.inc:671 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:633 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:648 +msgid "N/A" +msgstr "N/A" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:286 +msgid "The selected name is already in use." +msgstr "Der angegebene Name wird bereits verwendet." + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:92 +msgid "cartridge" +msgstr "Patrone" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:111 +#, php-format +msgid "" +"You can't delete this cartridge type, it is still in use by this printer(s) " +"'%s'." +msgstr "" +"Sie können diesen Patronentyp nicht entfernen, er wird noch von folgendem(n) " +"Drucker(n) verwendet: '%s'" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:158 +msgid "Cartridges" +msgstr "Patronen" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:159 +msgid "Action" +msgstr "Aktion" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:163 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:187 +#: admin/systems/services/glpi/glpiPrinter.tpl:88 +#: admin/systems/services/glpi/glpiPrinter.tpl:99 +#: admin/systems/services/glpi/glpiManufacturer.tpl:7 +#: admin/systems/services/glpi/glpi.tpl:61 +#: admin/systems/services/glpi/glpi.tpl:71 +#: admin/systems/services/glpi/glpi.tpl:106 +msgid "Edit" +msgstr "Bearbeiten" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:164 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:188 +msgid "Delete" +msgstr "Entfernen" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "New monitor" +msgstr "Neuer Monitor" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "M" +msgstr "M" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:1 +msgid "Add/Edit manufacturer" +msgstr "Hersteller hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:14 +msgid "Website" +msgstr "Website" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:21 +msgid "Address" +msgstr "Adresse" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:32 +msgid "Phone number" +msgstr "Telefonnummer" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:39 +msgid "Fax" +msgstr "Fax" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:46 +msgid "Email" +msgstr "Email" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:53 +#: admin/systems/services/glpi/glpi_devices.tpl:17 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:22 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:808 +msgid "Comments" +msgstr "Kommentare" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:88 +#, php-format +msgid "Internal Error can't create device of type '%s'" +msgstr "Interner Fehler: Kann Gerät von Typ '%s' nicht anlegen." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:108 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:110 +msgid "glpi device" +msgstr "GLPI-Gerät" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:112 +msgid "Can't detect object name." +msgstr "Kann Objektnamen nicht erkennen." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:133 +#, php-format +msgid "" +"You can't delete this device, it is still in use by these system(s) '%s'" +msgstr "" +"Sie können dieses Gerät nicht entfernen, es wird noch von folgendem(n) System" +"(en) verwendet: '%s'" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:183 +msgid "devices" +msgstr "Geräte" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:184 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:199 +msgid "Actions" +msgstr "Aktionen" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "New mainbord" +msgstr "Neues Mainboard" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "MB" +msgstr "MB" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "New processor" +msgstr "Neuer Prozessor" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "P" +msgstr "P" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "New case" +msgstr "Neues Gehäuse" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "C" +msgstr "C" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "New network interface" +msgstr "Neues Netzwerk-Interface" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "NI" +msgstr "NI" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "New ram" +msgstr "Neuer Arbeitsspeicher" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "R" +msgstr "R" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "New hard disk" +msgstr "Neue Festplatte" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "HDD" +msgstr "HDD" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "New drive" +msgstr "Neues Laufwerk" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "D" +msgstr "D" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "New controller" +msgstr "Neuer Controller" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "CS" +msgstr "CS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "New graphics card" +msgstr "Neue Grafikkarte" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "GC" +msgstr "GC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "New sound card" +msgstr "Neue Soundkarte" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "SC" +msgstr "SC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "New power supply" +msgstr "Neues Netzteil" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "PS" +msgstr "PS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "New misc device" +msgstr "Neues allgemeines Gerät" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "OC" +msgstr "OC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:346 +msgid "You have to specify a valid name for this device." +msgstr "Bitte geben Sie einen gültigen Namen für dieses Gerät an." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:366 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:369 +msgid "This device name is already in use." +msgstr "Der angegebene Gerätename wird bereits verwendet." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:392 +msgid "none" +msgstr "keine" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "None" +msgstr "keine" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "Other" +msgstr "Andere" + +#: admin/systems/services/glpi/glpiPrinter.tpl:6 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:4 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:34 +#: admin/systems/services/glpi/glpi.tpl:6 +msgid "Generic" +msgstr "Allgemein" + +#: admin/systems/services/glpi/glpiPrinter.tpl:9 +msgid "Printer type" +msgstr "Druckertyp" + +#: admin/systems/services/glpi/glpiPrinter.tpl:18 +#: admin/systems/services/glpi/glpiPrinter.tpl:32 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:43 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:53 +#: admin/systems/services/glpi/glpi.tpl:18 +#: admin/systems/services/glpi/glpi.tpl:32 +#: admin/systems/services/glpi/glpi.tpl:46 +msgid "edit" +msgstr "Bearbeiten" + +#: admin/systems/services/glpi/glpiPrinter.tpl:23 +#: admin/systems/services/glpi/glpi_devices.tpl:24 +#: admin/systems/services/glpi/glpi_devices.tpl:123 +#: admin/systems/services/glpi/glpi_devices.tpl:164 +#: admin/systems/services/glpi/glpi_devices.tpl:219 +#: admin/systems/services/glpi/glpi_devices.tpl:275 +#: admin/systems/services/glpi/glpi_devices.tpl:333 +#: admin/systems/services/glpi/glpi_devices.tpl:397 +#: admin/systems/services/glpi/glpi_devices.tpl:469 +#: admin/systems/services/glpi/glpi_devices.tpl:533 +#: admin/systems/services/glpi/glpi_devices.tpl:580 +#: admin/systems/services/glpi/glpi_devices.tpl:633 +#: admin/systems/services/glpi/glpi_devices.tpl:687 +#: admin/systems/services/glpi/glpi_devices.tpl:733 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:47 +#: admin/systems/services/glpi/class_glpiAccount.inc:809 +#: admin/systems/services/glpi/glpi.tpl:37 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:812 +msgid "Manufacturer" +msgstr "Hersteller" + +#: admin/systems/services/glpi/glpiPrinter.tpl:39 +msgid "Supported interfaces" +msgstr "Unterstützte Schnittstellen" + +#: admin/systems/services/glpi/glpiPrinter.tpl:48 +msgid "Serial" +msgstr "Seriell" + +#: admin/systems/services/glpi/glpiPrinter.tpl:58 +msgid "Parallel" +msgstr "Parallel" + +#: admin/systems/services/glpi/glpiPrinter.tpl:68 +msgid "USB" +msgstr "USB" + +#: admin/systems/services/glpi/glpiPrinter.tpl:80 +#: admin/systems/services/glpi/glpi.tpl:52 +msgid "Contacts" +msgstr "Kontakte" + +#: admin/systems/services/glpi/glpiPrinter.tpl:83 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:57 +#: admin/systems/services/glpi/class_glpiAccount.inc:802 +#: admin/systems/services/glpi/glpi.tpl:66 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:807 +msgid "Technical responsible" +msgstr "Technischer Kontakt" + +#: admin/systems/services/glpi/glpiPrinter.tpl:94 +#: admin/systems/services/glpi/class_glpiAccount.inc:806 +#: admin/systems/services/glpi/glpi.tpl:56 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:810 +msgid "Contact person" +msgstr "Kontaktperson" + +#: admin/systems/services/glpi/glpiPrinter.tpl:107 +#: admin/systems/services/glpi/class_glpiAccount.inc:810 +#: admin/systems/services/glpi/glpi.tpl:117 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:814 +msgid "Attachments" +msgstr "Anhänge" + +#: admin/systems/services/glpi/glpiPrinter.tpl:127 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:20 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:20 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:20 +#: admin/systems/services/glpi/glpiSelectUser.tpl:20 +msgid "Information" +msgstr "Information" + +#: admin/systems/services/glpi/glpiPrinter.tpl:139 +msgid "Installed cartridges" +msgstr "Installierte Patronen" + +#: admin/systems/services/glpi/glpiPrinter.tpl:152 +#: admin/systems/services/glpi/glpiManufacturer.tpl:8 +msgid "Remove" +msgstr "Entfernen" + +#: admin/systems/services/glpi/glpi_devices.tpl:2 +msgid "Add/Edit monitor" +msgstr "Monitor hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:33 +msgid "Monitor size" +msgstr "Monitorgröße" + +#: admin/systems/services/glpi/glpi_devices.tpl:36 +msgid "Inch" +msgstr "Zoll" + +#: admin/systems/services/glpi/glpi_devices.tpl:44 +msgid "Integrated microphone" +msgstr "Integriertes Mikrofon" + +#: admin/systems/services/glpi/glpi_devices.tpl:47 +#: admin/systems/services/glpi/glpi_devices.tpl:55 +#: admin/systems/services/glpi/glpi_devices.tpl:63 +#: admin/systems/services/glpi/glpi_devices.tpl:71 +#: admin/systems/services/glpi/glpi_devices.tpl:176 +#: admin/systems/services/glpi/glpi_devices.tpl:296 +#: admin/systems/services/glpi/glpi_devices.tpl:361 +msgid "Yes" +msgstr "ja" + +#: admin/systems/services/glpi/glpi_devices.tpl:48 +#: admin/systems/services/glpi/glpi_devices.tpl:56 +#: admin/systems/services/glpi/glpi_devices.tpl:64 +#: admin/systems/services/glpi/glpi_devices.tpl:72 +#: admin/systems/services/glpi/glpi_devices.tpl:177 +#: admin/systems/services/glpi/glpi_devices.tpl:297 +#: admin/systems/services/glpi/glpi_devices.tpl:362 +msgid "No" +msgstr "nein" + +#: admin/systems/services/glpi/glpi_devices.tpl:52 +msgid "Integrated speakers" +msgstr "Integrierte Lautsprecher" + +#: admin/systems/services/glpi/glpi_devices.tpl:60 +msgid "Sub-D" +msgstr "Sub-D" + +#: admin/systems/services/glpi/glpi_devices.tpl:68 +msgid "BNC" +msgstr "BNC" + +#: admin/systems/services/glpi/glpi_devices.tpl:76 +msgid "Serial number" +msgstr "Seriennumner" + +#: admin/systems/services/glpi/glpi_devices.tpl:83 +msgid "Additional serial number" +msgstr "Zusätzliche Seriennummer" + +#: admin/systems/services/glpi/glpi_devices.tpl:97 +msgid "Add/Edit other device" +msgstr "Allgemeines Gerät hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:138 +msgid "Add/Edit power supply" +msgstr "Netzteil hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:173 +msgid "Atx" +msgstr "ATX" + +#: admin/systems/services/glpi/glpi_devices.tpl:181 +msgid "Power" +msgstr "Strom" + +#: admin/systems/services/glpi/glpi_devices.tpl:193 +msgid "Add/Edit graphic card" +msgstr "Grafikkarte hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:228 +#: admin/systems/services/glpi/glpi_devices.tpl:284 +#: admin/systems/services/glpi/glpi_devices.tpl:349 +msgid "Interface" +msgstr "Interface" + +#: admin/systems/services/glpi/glpi_devices.tpl:237 +msgid "Ram" +msgstr "RAM" + +#: admin/systems/services/glpi/glpi_devices.tpl:249 +msgid "Add/Edit controller" +msgstr "Controller hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:293 +#: admin/systems/services/glpi/glpi_devices.tpl:420 +#: admin/systems/services/glpi/glpi_devices.tpl:485 +msgid "Size" +msgstr "Größe" + +#: admin/systems/services/glpi/glpi_devices.tpl:307 +msgid "Add/Edit drive" +msgstr "Laufwerk hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:342 +msgid "Speed" +msgstr "Taktung" + +#: admin/systems/services/glpi/glpi_devices.tpl:358 +msgid "Writeable" +msgstr "Beschreibbar" + +#: admin/systems/services/glpi/glpi_devices.tpl:371 +msgid "Add/Edit harddisk" +msgstr "Festplatte hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:406 +msgid "Rpm" +msgstr "Upm" + +#: admin/systems/services/glpi/glpi_devices.tpl:413 +msgid "Cache" +msgstr "Cache" + +#: admin/systems/services/glpi/glpi_devices.tpl:427 +#: admin/systems/services/glpi/glpi_devices.tpl:492 +#: admin/systems/services/glpi/glpi_devices.tpl:542 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:37 +#: admin/systems/services/glpi/class_glpiAccount.inc:808 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:811 +msgid "Type" +msgstr "Typ" + +#: admin/systems/services/glpi/glpi_devices.tpl:443 +msgid "Add/Edit memory" +msgstr "Speicher hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:478 +msgid "Frequenz" +msgstr "Frequenz" + +#: admin/systems/services/glpi/glpi_devices.tpl:507 +msgid "Add/Edit sound card" +msgstr "Soundkarte hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:553 +msgid "Add/Edit network interface" +msgstr "Netzwerk-Interface hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:589 +msgid "MAC address" +msgstr "MAC-Adresse" + +#: admin/systems/services/glpi/glpi_devices.tpl:596 +msgid "Bandwidth" +msgstr "Bandbreite" + +#: admin/systems/services/glpi/glpi_devices.tpl:607 +msgid "Add/Edit processor" +msgstr "Prozessor hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:642 +msgid "Frequence" +msgstr "Frequenz" + +#: admin/systems/services/glpi/glpi_devices.tpl:649 +msgid "Default frequence" +msgstr "Standardfrequenz" + +#: admin/systems/services/glpi/glpi_devices.tpl:661 +msgid "Add/Edit motherboard" +msgstr "Motherboard hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:696 +msgid "Chipset" +msgstr "Chipsatz" + +#: admin/systems/services/glpi/glpi_devices.tpl:707 +msgid "Add/Edit computer case" +msgstr "Computergehäuse hinzufügen/bearbeiten" + +#: admin/systems/services/glpi/glpi_devices.tpl:742 +msgid "format" +msgstr "Format" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:32 +#: admin/systems/services/glpi/class_goGlpiServer.inc:87 +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Inventory database" +msgstr "Inventar-Datenbank" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:58 +msgid "Inventory database service" +msgstr "Inventar-Datenbank Dienst" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:67 +msgid "The attribute user is empty or contains invalid characters." +msgstr "Das Attribut Benutzer ist leer oder enthält ungültige Zeichen." + +#: admin/systems/services/glpi/class_goGlpiServer.inc:70 +msgid "The attribute database is empty or contains invalid characters." +msgstr "Das Attribut Datenbank ist leer oder enthält ungültige Zeichen." + +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:96 +msgid "Start" +msgstr "Start" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:97 +msgid "Stop" +msgstr "Beenden" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:98 +msgid "Restart" +msgstr "Neustart" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:100 +msgid "Admin" +msgstr "Administrator" + +#: admin/systems/services/glpi/glpiManufacturer.tpl:1 +msgid "Manage manufacturers" +msgstr "Hersteller verwalten" + +#: admin/systems/services/glpi/remove_glpi.tpl:2 +msgid "Warning" +msgstr "Warnung" + +#: admin/systems/services/glpi/remove_glpi.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Bitte überprüfen Sie genau, was Sie tun. GOsa hat keine Möglichkeit, die " +"Daten wiederherzustellen." + +#: admin/systems/services/glpi/remove_glpi.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your MySql database in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Es ist eine gute Idee, vor dieser Aktion eine komplette Sicherung Ihrer " +"MySQL-Datenbank zu erstellen. Wenn Sie dies erledigt haben, drücken Sie " +"'Entfernen', um fortzufahren oder 'Abbrechen', um die aktuelle Aktion " +"abzubrechen." + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:14 +msgid "Reference" +msgstr "Referenz" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:61 +msgid "Choose" +msgstr "Wählen" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:6 +msgid "List of available cartridge type for this type of printer" +msgstr "Verfügbare Patronentypen für diesen Druckertyp" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:23 +msgid "" +"This dialog allows you to create new types of cartridges, and select one or " +"more types for your printer. Cartridge types depends on the printer type you " +"have selected. For each selected cartridge type there will be a new " +"cartridge created, this allows you to select the same cartridge type for " +"more then one printer." +msgstr "" +"Dieser Dialog erlaubt es Ihnen, neue Arten von Patronen hinzuzufügen und " +"einen oder mehrere Typen zu Ihrem Drucker zuzuordnen. Patronentypen sind " +"abhängig von Ihrem gewählten Druckertyp. Für jeden gewählten Patronentyp " +"wird eine neue Patrone erstellt. Dies erlaubt es Ihnen, den gleichen " +"Patronentyp für mehr als einen Drucker zu verwenden." + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:27 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:27 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:27 +#: admin/systems/services/glpi/glpiSelectUser.tpl:27 +msgid "Filters" +msgstr "Filter" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:35 +msgid "Display cartridge types matching" +msgstr "Zeige die Patronentypen, auf die Folgendes passt" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:37 +msgid "Regular expression for matching cartridge types" +msgstr "Regulärer Ausdruck zum Erkennen von Patronentypen" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:6 +msgid "List of attachments" +msgstr "Anhänge" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:23 +msgid "" +"This dialog allow you to attach additional objects (like manuals, guides, " +"etc.) to your currently edited computer." +msgstr "" +"Dieser Dialog erlaubt es Ihnen, verschiedene Objekte (wie Anleitungen, " +"Hilfen, etc.) zum momentan gewählten Computer hinzuzufügen." + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:35 +msgid "Display attachments matching" +msgstr "Zeige Anhänge, auf die zutrifft" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:37 +msgid "Regular expression for matching attachment names" +msgstr "Regulärer Ausdruck zum Erkennen von Anhangs-Namen" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:6 +msgid "List of devices" +msgstr "Liste der Geräte" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:23 +msgid "" +"This dialog allows you to attach a device to your currently edited computer." +msgstr "" +"Dieser Dialog erlaubt es Ihnen, ein Gerät zum momentan ausgewählten Computer " +"hinzuzufügen." + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:35 +msgid "Display devices matching" +msgstr "Zeige die Geräte, auf die das Folgende passt" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:37 +msgid "Regular expression for matching device names" +msgstr "Regulärer Ausdruck zum Erkennen von Gerätenamen" + +#: admin/systems/services/glpi/class_glpiAccount.inc:146 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:163 +msgid "There is no server with valid glpi database service." +msgstr "Es wurde kein Server mit einer gültigen glpi-Datenbank gefunden." + +#: admin/systems/services/glpi/class_glpiAccount.inc:156 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:173 +msgid "Can't connect to glpi database, the php-mysql extension is missing." +msgstr "" +"Die MySQL-Erweiterung wurde nicht gefunden - kann daher nicht zur glpi-" +"Datenbank verbinden." + +#: admin/systems/services/glpi/class_glpiAccount.inc:166 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:183 +msgid "Can't connect to glpi database, check configuration twice." +msgstr "" +"Kann nicht zur glpi-Datenbank verbinden - bitte überprüfen Sie Ihre " +"Konfiguration." + +#: admin/systems/services/glpi/class_glpiAccount.inc:181 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:198 +msgid "Download of attachment failed. Attachment was not found on server." +msgstr "" +"Herunterladen des Anhangs fehlgeschlagen. Der Anhang wurde auf dem Server " +"nicht gefunden." + +#: admin/systems/services/glpi/class_glpiAccount.inc:184 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:201 +msgid "Download of attachment failed. Not a valid attachment id." +msgstr "Herunterladen des Anhangs fehlgeschlagen. Keine gültige Anhangs-ID." + +#: admin/systems/services/glpi/class_glpiAccount.inc:198 +#: admin/systems/services/glpi/class_glpiAccount.inc:204 +#: admin/systems/services/glpi/class_glpiAccount.inc:210 +msgid "This feature is not implemented yet." +msgstr "Dieses Feature wurde noch nicht implementiert." + +#: admin/systems/services/glpi/class_glpiAccount.inc:312 +msgid "Adding new sytem type failed, this system type name is already used." +msgstr "" +"Das Hinzufügen des neuen Systemtyps ist fehlgeschlagen - der angegebene Name " +"wird bereits verwendet." + +#: admin/systems/services/glpi/class_glpiAccount.inc:332 +#, php-format +msgid "" +"You can't delete this system type, it is still in use by these system(s) '%s'" +msgstr "" +"Sie können diesen Systemtyp nicht entfernen, er wird noch von folgendem(n) " +"System(en) verwendet: '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:343 +msgid "Rename failed, this system type name is already used." +msgstr "" +"Das Umbenennen schlug fehl: Der angegebene Name wird bereits verwendet." + +#: admin/systems/services/glpi/class_glpiAccount.inc:399 +msgid "Adding new operating system failed, specifed name is already used." +msgstr "" +"Das Hinzufügen des neuen Betriebssystems ist fehlgeschlagen - der angegebene " +"Name wird bereits verwendet." + +#: admin/systems/services/glpi/class_glpiAccount.inc:421 +#, php-format +msgid "" +"You can't delete this operating system, it is still in use by these system" +"(s) '%s'" +msgstr "" +"Sie können dieses Betriebssystem nicht löschen, es wird von folgenden(m) " +"System(en) verwendet: '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:433 +msgid "Updating operating system failed, specifed name is already used." +msgstr "" +"Das Aktualisieren des Betriebssystems schlug fehl, da der angegebene Name " +"bereits verwendet wird." + +#: admin/systems/services/glpi/class_glpiAccount.inc:512 +#, php-format +msgid "" +"Could not add the given user, the users dn is too long, only 100 characters " +"are allowed here." +msgstr "" +"Kann den Benutzer nicht hinzufügen, da die DN zu lang ist. Es sind hier " +"maximal 100 Zeichen erlaubt." + +#: admin/systems/services/glpi/class_glpiAccount.inc:593 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:229 +msgid "Remove inventory" +msgstr "Inventar entfernen" + +#: admin/systems/services/glpi/class_glpiAccount.inc:594 +msgid "" +"This device has inventory informations enabled. You can disable them by " +"clicking below." +msgstr "" +"Dieses Gerät besitzt aktivierte Inventar-Funktionen. Sie können diese durch " +"einen Klick auf die Schaltfläche unten deaktivieren." + +#: admin/systems/services/glpi/class_glpiAccount.inc:596 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:232 +msgid "Add inventory" +msgstr "Inventar hinzufügen" + +#: admin/systems/services/glpi/class_glpiAccount.inc:597 +msgid "" +"This device has inventory informations disabled. You can enable them by " +"clicking below." +msgstr "" +"Aktuell besitzt dieses Gerät keine aktivierten Inventar-Funktionen. Sie " +"können diese durch einen Klick auf die Schaltfläche unten aktivieren." + +#: admin/systems/services/glpi/class_glpiAccount.inc:692 +#: admin/systems/services/glpi/class_glpiAccount.inc:693 +msgid "Can't remove glpi account, while mysql extension is missing." +msgstr "" +"Kann das glpi-Konto nicht entfernen, solange die MySQL-Erweiterung für PHP " +"fehlt." + +#: admin/systems/services/glpi/class_glpiAccount.inc:793 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:795 +msgid "Glpi" +msgstr "GLPI" + +#: admin/systems/services/glpi/class_glpiAccount.inc:794 +msgid "Inventory extension" +msgstr "Inventar-Erweiterung" + +#: admin/systems/services/glpi/class_glpiAccount.inc:804 +#: admin/systems/services/glpi/glpi.tpl:23 +msgid "Operating system" +msgstr "Betriebssystem" + +#: admin/systems/services/glpi/class_glpiAccount.inc:805 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:809 +msgid "Location" +msgstr "Ort" + +#: admin/systems/services/glpi/class_glpiAccount.inc:807 +msgid "Model" +msgstr "Modell" + +#: admin/systems/services/glpi/class_glpiAccount.inc:811 +msgid "Peripheral devices" +msgstr "Externe Geräte" + +#: admin/systems/services/glpi/glpi.tpl:9 +msgid "System type" +msgstr "System-Typ" + +#: admin/systems/services/glpi/glpi.tpl:96 +msgid "Installed devices" +msgstr "Installierte Geräte" + +#: admin/systems/services/glpi/glpi.tpl:112 +msgid "Trading" +msgstr "Handeln" + +#: admin/systems/services/glpi/glpi.tpl:113 +msgid "Software" +msgstr "Software" + +#: admin/systems/services/glpi/glpi.tpl:114 +msgid "Contracts" +msgstr "Verträge" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:68 +msgid "attachment" +msgstr "Anhang" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:107 +#, php-format +msgid "" +"You can't delete this attachment, it is still in use by these system(s) '%s'" +msgstr "" +"Sie können diesen Anhang nicht entfernen, er wird noch von folgendem(n) " +"System(en) verwendet: '%s'" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:119 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:123 +msgid "There is no valid file uploaded." +msgstr "Es wurde keine gültige Datei hochgeladen." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:126 +msgid "Upload wasn't successfull." +msgstr "Upload war nicht erfolgreich." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:129 +#, php-format +msgid "Missing directory '%s/glpi/' to store glpi uploads." +msgstr "" +"Das Verzeichnis '%s/glpi/' zum Speichern von GLPI-Uploads wurde nicht " +"gefunden." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:133 +msgid "There is already a file with the same name uploaded." +msgstr "Es wurde bereits eine Datei mit dem selben Namen hochgeladen." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:137 +#, php-format +msgid "Can't create file '%s'." +msgstr "Kann Datei '%s' nicht anlegen." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:181 +msgid "File is available." +msgstr "Datei ist verfügbar." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:183 +msgid "File is not readable, possibly the file is missing." +msgstr "Datei konnte nicht gelesen werden, vielleicht ist nicht vorhanden." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:186 +msgid "Currently no file uploaded." +msgstr "Es wurde noch keine Datei hochgeladen." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:198 +msgid "Mime" +msgstr "MIME" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:201 +msgid "This table displays all available attachments." +msgstr "Diese Tabelle enthält alle verfügbaren Anhänge." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:218 +msgid "empty" +msgstr "leer" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:255 +msgid "Create new attachment" +msgstr "Neuen Anhang erstellen" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:256 +msgid "New Attachment" +msgstr "Neuer Anhang" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:349 +msgid "This name is already in use." +msgstr "Der angegebene Name wird bereits verwendet." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:352 +msgid "Please specify a valid name for this attachment." +msgstr "Bitte geben Sie einen gültigen Namen für diesen Anhang an." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:230 +msgid "" +"This server has inventory features enabled. You can disable them by clicking " +"below." +msgstr "" +"Dieser Server besitzt aktivierte Inventar-Funktionen. Sie können diese durch " +"einen Klick auf die Schaltfläche unten deaktivieren." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:233 +msgid "" +"This server has inventory features disabled. You can enable them by clicking " +"below." +msgstr "" +"Aktuell besitzt dieser Server keine aktivierten Inventar-Funktionen. Sie " +"können diese durch einen Klick auf die Schaltfläche unten aktivieren." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:256 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:294 +#, php-format +msgid "" +"Can't rename given printer type to '%s', because this type name already " +"exists." +msgstr "" +"Kann Druckertyp nicht in '%s' umbenennen - der angegebene Name wird bereits " +"verwendet." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:308 +#, php-format +msgid "Can't delete printer type, it is still in use by '%s'." +msgstr "" +"Sie können diesen Druckertyp nicht entfernen, er wird noch von '%s' " +"verwendet." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:785 +msgid "since" +msgstr "seit" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:796 +msgid "Printer inventory extension" +msgstr "Drucker-Inventar-Erweiterung" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:804 +msgid "Supports serial interface" +msgstr "Unterstützt serielle Schnittstelle" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:805 +msgid "Supports parallel interface" +msgstr "Unterstützt parallele Schnittstelle" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:806 +msgid "Supports usb interface" +msgstr "Unterstützt USB-Schnittstelle" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:816 +msgid "Cartridge settings" +msgstr "Patronen-Einstellungen" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:6 +msgid "List of users" +msgstr "Liste der Benutzer" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:23 +msgid "" +"This dialog allows you to select a user as technical responsible person." +msgstr "" +"Dieser Dialog erlaubt es Ihnen, einen Benutzer als technische Kontaktperson " +"zu wählen." + +#: admin/systems/services/glpi/glpiSelectUser.tpl:35 +msgid "Display users matching" +msgstr "Zeige die Benutzer, auf die Folgendes passt" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:37 +msgid "Regular expression for matching user names" +msgstr "Regulärer Ausdruck zum Erkennen von Benutzernamen" + +#: admin/systems/services/glpi/glpi_edit_os.tpl:1 +msgid "Manage OS-types" +msgstr "Betriebssysteme verwalten" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:53 +#, php-format +msgid "" +"You can't delete this manufacturer, it is still in use by these system(s) '%" +"s'" +msgstr "" +"Sie können diesen Hersteller nicht entfernen, er wird noch von folgendem(n) " +"System(en) verwendet: '%s'" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:99 +msgid "Please specify a name." +msgstr "Bitte geben Sie einen Namen ein!" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:108 +#: admin/systems/services/glpi/class_glpiManufacturer.inc:114 +msgid "Specified name is already in use, please choose another one." +msgstr "" +"Der angegebene Name wird bereits verwendet. Bitte wählen Sie einen anderen." + +#: admin/systems/services/glpi/glpi_edit_type.tpl:1 +msgid "Manage System-types" +msgstr "System-Typen verwalten" diff --git a/trunk/gosa-plugins/glpi/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/glpi/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..79c05d40e --- /dev/null +++ b/trunk/gosa-plugins/glpi/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,1202 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Users" +msgstr "Usuarios" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Departments" +msgstr "Departamentos" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:109 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:51 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:51 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:51 +msgid "Use" +msgstr "Usar" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +msgid "use" +msgstr "usar" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Go to root department" +msgstr "Ir al departamento raíz" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Root" +msgstr "Raíz" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Go up one department" +msgstr "Subir un departamento" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Up" +msgstr "Arriba" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Go to users department" +msgstr "Ir al departamento de usuarios" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Home" +msgstr "Inicio" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +msgid "Reload list" +msgstr "Recargar lista" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit" +msgstr "Enviar" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:178 +msgid "Base" +msgstr "Base" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit department" +msgstr "Enviar departamento" + +#: admin/systems/services/glpi/goGlpiServer.tpl:1 +msgid "GLPI database information" +msgstr "" + +#: admin/systems/services/glpi/goGlpiServer.tpl:4 +msgid "Logging DB user" +msgstr "" + +#: admin/systems/services/glpi/goGlpiServer.tpl:12 +#: admin/systems/services/glpi/class_goGlpiServer.inc:102 +msgid "Password" +msgstr "Contraseña" + +#: admin/systems/services/glpi/goGlpiServer.tpl:20 +#: admin/systems/services/glpi/class_goGlpiServer.inc:101 +msgid "Database" +msgstr "Bases de datos" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:8 +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:29 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:7 +#: admin/systems/services/glpi/glpi_edit_os.tpl:9 +#: admin/systems/services/glpi/glpi_edit_os.tpl:28 +#: admin/systems/services/glpi/glpi_edit_type.tpl:9 +#: admin/systems/services/glpi/glpi_edit_type.tpl:28 +msgid "Rename" +msgstr "" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:14 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:81 +#: admin/systems/services/glpi/glpiManufacturer.tpl:13 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:13 +#: admin/systems/services/glpi/glpi_edit_os.tpl:15 +#: admin/systems/services/glpi/glpi_edit_type.tpl:15 +msgid "Close" +msgstr "Cerrar" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:25 +#: admin/systems/services/glpi/glpi_edit_os.tpl:24 +#: admin/systems/services/glpi/glpi_edit_type.tpl:24 +msgid "Please enter a new name" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:2 +msgid "Attachment" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:10 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:7 +#: admin/systems/services/glpi/glpi_devices.tpl:10 +#: admin/systems/services/glpi/glpi_devices.tpl:105 +#: admin/systems/services/glpi/glpi_devices.tpl:146 +#: admin/systems/services/glpi/glpi_devices.tpl:201 +#: admin/systems/services/glpi/glpi_devices.tpl:257 +#: admin/systems/services/glpi/glpi_devices.tpl:315 +#: admin/systems/services/glpi/glpi_devices.tpl:379 +#: admin/systems/services/glpi/glpi_devices.tpl:451 +#: admin/systems/services/glpi/glpi_devices.tpl:515 +#: admin/systems/services/glpi/glpi_devices.tpl:562 +#: admin/systems/services/glpi/glpi_devices.tpl:615 +#: admin/systems/services/glpi/glpi_devices.tpl:669 +#: admin/systems/services/glpi/glpi_devices.tpl:715 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:7 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:197 +msgid "Name" +msgstr "Nombre" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:18 +#: admin/systems/services/glpi/glpi_devices.tpl:112 +#: admin/systems/services/glpi/glpi_devices.tpl:153 +#: admin/systems/services/glpi/glpi_devices.tpl:208 +#: admin/systems/services/glpi/glpi_devices.tpl:264 +#: admin/systems/services/glpi/glpi_devices.tpl:322 +#: admin/systems/services/glpi/glpi_devices.tpl:386 +#: admin/systems/services/glpi/glpi_devices.tpl:458 +#: admin/systems/services/glpi/glpi_devices.tpl:522 +#: admin/systems/services/glpi/glpi_devices.tpl:569 +#: admin/systems/services/glpi/glpi_devices.tpl:622 +#: admin/systems/services/glpi/glpi_devices.tpl:676 +#: admin/systems/services/glpi/glpi_devices.tpl:722 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:25 +#: admin/systems/services/glpi/class_glpiAccount.inc:803 +#: admin/systems/services/glpi/glpi.tpl:79 +msgid "Comment" +msgstr "Comentario" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:30 +msgid "File" +msgstr "Archivo" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:33 +msgid "Upload" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:38 +msgid "Status" +msgstr "Estado" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:46 +msgid "Filename" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:54 +msgid "Mime-type" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:104 +msgid "Can't delete this entry, it is still in use." +msgstr "No se puede eliminar esta entrada, está todavía en uso." + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:268 +#: admin/systems/services/glpi/class_glpiAccount.inc:656 +#: admin/systems/services/glpi/class_glpiAccount.inc:671 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:633 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:648 +msgid "N/A" +msgstr "N/A" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:286 +msgid "The selected name is already in use." +msgstr "El nombre introducido ya esta siendo usado" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:92 +#, fuzzy +msgid "cartridge" +msgstr "Cartuchos" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:111 +#, php-format +msgid "" +"You can't delete this cartridge type, it is still in use by this printer(s) " +"'%s'." +msgstr "" +"Ha decidido eliminar el tipo de cartucho, aún está en uso por la impresora" +"(s) '%s'." + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:158 +msgid "Cartridges" +msgstr "Cartuchos" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:159 +msgid "Action" +msgstr "Acción" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:163 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:187 +#: admin/systems/services/glpi/glpiPrinter.tpl:88 +#: admin/systems/services/glpi/glpiPrinter.tpl:99 +#: admin/systems/services/glpi/glpiManufacturer.tpl:7 +#: admin/systems/services/glpi/glpi.tpl:61 +#: admin/systems/services/glpi/glpi.tpl:71 +#: admin/systems/services/glpi/glpi.tpl:106 +msgid "Edit" +msgstr "Editar" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:164 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:188 +msgid "Delete" +msgstr "Eliminar" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "New monitor" +msgstr "Nuevo monitor" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "M" +msgstr "M" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:1 +msgid "Add/Edit manufacturer" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:14 +msgid "Website" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:21 +msgid "Address" +msgstr "Dirección" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:32 +#, fuzzy +msgid "Phone number" +msgstr "Número de teléfono personal" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:39 +msgid "Fax" +msgstr "Fax" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:46 +msgid "Email" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:53 +#: admin/systems/services/glpi/glpi_devices.tpl:17 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:22 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:808 +msgid "Comments" +msgstr "Comentarios" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:88 +#, php-format +msgid "Internal Error can't create device of type '%s'" +msgstr "Error interno. No puedo crear un dispositivo de tipo '%s'" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:108 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:110 +#, fuzzy +msgid "glpi device" +msgstr "dispositivos" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:112 +msgid "Can't detect object name." +msgstr "No puedo encontrar el nombre de objeto " + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:133 +#, php-format +msgid "" +"You can't delete this device, it is still in use by these system(s) '%s'" +msgstr "" +"No puede eliminar este dispositivo, esta todavía en uso por este sistema(s) " +"'%s'" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:183 +msgid "devices" +msgstr "dispositivos" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:184 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:199 +msgid "Actions" +msgstr "Acciones" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "New mainbord" +msgstr "Nueva placa base" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "MB" +msgstr "Mb" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "New processor" +msgstr "Nuevo procesador" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "P" +msgstr "P" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "New case" +msgstr "Nueva caja" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "C" +msgstr "C" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "New network interface" +msgstr "Nuevo interfaz de red" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "NI" +msgstr "NI" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "New ram" +msgstr "Nueva memoria" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "R" +msgstr "R" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "New hard disk" +msgstr "Nuevo disco duro" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "HDD" +msgstr "HDD" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "New drive" +msgstr "Nuevo Disco" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "D" +msgstr "D" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "New controller" +msgstr "Nueva Controladora" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "CS" +msgstr "CS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "New graphics card" +msgstr "Nueva tarjeta gráfica" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "GC" +msgstr "GC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "New sound card" +msgstr "Nueva tarjeta de sonido" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "SC" +msgstr "SC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "New power supply" +msgstr "Nueva fuente de alimentación" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "PS" +msgstr "PS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "New misc device" +msgstr "Nuevo otros dispositivos" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "OC" +msgstr "OC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:346 +msgid "You have to specify a valid name for this device." +msgstr "Por favor introduzca un nombre valido para este dispositivo." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:366 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:369 +msgid "This device name is already in use." +msgstr "El nombre de dispositivo especificado ya esta siendo usado" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:392 +msgid "none" +msgstr "ninguno" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "None" +msgstr "Ninguno" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "Other" +msgstr "Otro" + +#: admin/systems/services/glpi/glpiPrinter.tpl:6 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:4 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:34 +#: admin/systems/services/glpi/glpi.tpl:6 +msgid "Generic" +msgstr "Genérico" + +#: admin/systems/services/glpi/glpiPrinter.tpl:9 +msgid "Printer type" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:18 +#: admin/systems/services/glpi/glpiPrinter.tpl:32 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:43 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:53 +#: admin/systems/services/glpi/glpi.tpl:18 +#: admin/systems/services/glpi/glpi.tpl:32 +#: admin/systems/services/glpi/glpi.tpl:46 +msgid "edit" +msgstr "editar" + +#: admin/systems/services/glpi/glpiPrinter.tpl:23 +#: admin/systems/services/glpi/glpi_devices.tpl:24 +#: admin/systems/services/glpi/glpi_devices.tpl:123 +#: admin/systems/services/glpi/glpi_devices.tpl:164 +#: admin/systems/services/glpi/glpi_devices.tpl:219 +#: admin/systems/services/glpi/glpi_devices.tpl:275 +#: admin/systems/services/glpi/glpi_devices.tpl:333 +#: admin/systems/services/glpi/glpi_devices.tpl:397 +#: admin/systems/services/glpi/glpi_devices.tpl:469 +#: admin/systems/services/glpi/glpi_devices.tpl:533 +#: admin/systems/services/glpi/glpi_devices.tpl:580 +#: admin/systems/services/glpi/glpi_devices.tpl:633 +#: admin/systems/services/glpi/glpi_devices.tpl:687 +#: admin/systems/services/glpi/glpi_devices.tpl:733 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:47 +#: admin/systems/services/glpi/class_glpiAccount.inc:809 +#: admin/systems/services/glpi/glpi.tpl:37 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:812 +msgid "Manufacturer" +msgstr "Fabricante" + +#: admin/systems/services/glpi/glpiPrinter.tpl:39 +msgid "Supported interfaces" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:48 +msgid "Serial" +msgstr "Serie" + +#: admin/systems/services/glpi/glpiPrinter.tpl:58 +msgid "Parallel" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:68 +msgid "USB" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:80 +#: admin/systems/services/glpi/glpi.tpl:52 +msgid "Contacts" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:83 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:57 +#: admin/systems/services/glpi/class_glpiAccount.inc:802 +#: admin/systems/services/glpi/glpi.tpl:66 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:807 +msgid "Technical responsible" +msgstr "Responsable técnico" + +#: admin/systems/services/glpi/glpiPrinter.tpl:94 +#: admin/systems/services/glpi/class_glpiAccount.inc:806 +#: admin/systems/services/glpi/glpi.tpl:56 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:810 +msgid "Contact person" +msgstr "Persona de contacto" + +#: admin/systems/services/glpi/glpiPrinter.tpl:107 +#: admin/systems/services/glpi/class_glpiAccount.inc:810 +#: admin/systems/services/glpi/glpi.tpl:117 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:814 +msgid "Attachments" +msgstr "Adjuntos" + +#: admin/systems/services/glpi/glpiPrinter.tpl:127 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:20 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:20 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:20 +#: admin/systems/services/glpi/glpiSelectUser.tpl:20 +msgid "Information" +msgstr "Información" + +#: admin/systems/services/glpi/glpiPrinter.tpl:139 +msgid "Installed cartridges" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:152 +#: admin/systems/services/glpi/glpiManufacturer.tpl:8 +msgid "Remove" +msgstr "Eliminar" + +#: admin/systems/services/glpi/glpi_devices.tpl:2 +msgid "Add/Edit monitor" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:33 +msgid "Monitor size" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:36 +msgid "Inch" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:44 +msgid "Integrated microphone" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:47 +#: admin/systems/services/glpi/glpi_devices.tpl:55 +#: admin/systems/services/glpi/glpi_devices.tpl:63 +#: admin/systems/services/glpi/glpi_devices.tpl:71 +#: admin/systems/services/glpi/glpi_devices.tpl:176 +#: admin/systems/services/glpi/glpi_devices.tpl:296 +#: admin/systems/services/glpi/glpi_devices.tpl:361 +msgid "Yes" +msgstr "Si" + +#: admin/systems/services/glpi/glpi_devices.tpl:48 +#: admin/systems/services/glpi/glpi_devices.tpl:56 +#: admin/systems/services/glpi/glpi_devices.tpl:64 +#: admin/systems/services/glpi/glpi_devices.tpl:72 +#: admin/systems/services/glpi/glpi_devices.tpl:177 +#: admin/systems/services/glpi/glpi_devices.tpl:297 +#: admin/systems/services/glpi/glpi_devices.tpl:362 +msgid "No" +msgstr "No" + +#: admin/systems/services/glpi/glpi_devices.tpl:52 +msgid "Integrated speakers" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:60 +msgid "Sub-D" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:68 +msgid "BNC" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:76 +#, fuzzy +msgid "Serial number" +msgstr "Número del busca" + +#: admin/systems/services/glpi/glpi_devices.tpl:83 +msgid "Additional serial number" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:97 +msgid "Add/Edit other device" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:138 +msgid "Add/Edit power supply" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:173 +msgid "Atx" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:181 +msgid "Power" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:193 +msgid "Add/Edit graphic card" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:228 +#: admin/systems/services/glpi/glpi_devices.tpl:284 +#: admin/systems/services/glpi/glpi_devices.tpl:349 +msgid "Interface" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:237 +msgid "Ram" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:249 +msgid "Add/Edit controller" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:293 +#: admin/systems/services/glpi/glpi_devices.tpl:420 +#: admin/systems/services/glpi/glpi_devices.tpl:485 +msgid "Size" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:307 +msgid "Add/Edit drive" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:342 +msgid "Speed" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:358 +msgid "Writeable" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:371 +msgid "Add/Edit harddisk" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:406 +msgid "Rpm" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:413 +msgid "Cache" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:427 +#: admin/systems/services/glpi/glpi_devices.tpl:492 +#: admin/systems/services/glpi/glpi_devices.tpl:542 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:37 +#: admin/systems/services/glpi/class_glpiAccount.inc:808 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:811 +msgid "Type" +msgstr "Tipo" + +#: admin/systems/services/glpi/glpi_devices.tpl:443 +msgid "Add/Edit memory" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:478 +msgid "Frequenz" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:507 +msgid "Add/Edit sound card" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:553 +msgid "Add/Edit network interface" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:589 +msgid "MAC address" +msgstr "Dirección MAC" + +#: admin/systems/services/glpi/glpi_devices.tpl:596 +msgid "Bandwidth" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:607 +msgid "Add/Edit processor" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:642 +msgid "Frequence" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:649 +msgid "Default frequence" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:661 +msgid "Add/Edit motherboard" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:696 +msgid "Chipset" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:707 +msgid "Add/Edit computer case" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:742 +msgid "format" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:32 +#: admin/systems/services/glpi/class_goGlpiServer.inc:87 +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Inventory database" +msgstr "Base de datos de inventario" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:58 +msgid "Inventory database service" +msgstr "Servicio de base de datos de inventario" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:67 +msgid "The attribute user is empty or contains invalid characters." +msgstr "El atributo usuario está vacío o tiene caracteres no validos" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:70 +msgid "The attribute database is empty or contains invalid characters." +msgstr "¡El atributo base de datos está vacío o tiene caracteres no validos!" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:96 +msgid "Start" +msgstr "Inicio" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:97 +msgid "Stop" +msgstr "Parada" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:98 +msgid "Restart" +msgstr "Reiniciar" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:100 +msgid "Admin" +msgstr "Administrador" + +#: admin/systems/services/glpi/glpiManufacturer.tpl:1 +msgid "Manage manufacturers" +msgstr "" + +#: admin/systems/services/glpi/remove_glpi.tpl:2 +msgid "Warning" +msgstr "Aviso" + +#: admin/systems/services/glpi/remove_glpi.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: admin/systems/services/glpi/remove_glpi.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your MySql database in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:14 +msgid "Reference" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:61 +msgid "Choose" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:6 +msgid "List of available cartridge type for this type of printer" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:23 +msgid "" +"This dialog allows you to create new types of cartridges, and select one or " +"more types for your printer. Cartridge types depends on the printer type you " +"have selected. For each selected cartridge type there will be a new " +"cartridge created, this allows you to select the same cartridge type for " +"more then one printer." +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:27 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:27 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:27 +#: admin/systems/services/glpi/glpiSelectUser.tpl:27 +msgid "Filters" +msgstr "Filtros" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:35 +msgid "Display cartridge types matching" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:37 +msgid "Regular expression for matching cartridge types" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:6 +msgid "List of attachments" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:23 +msgid "" +"This dialog allow you to attach additional objects (like manuals, guides, " +"etc.) to your currently edited computer." +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:35 +msgid "Display attachments matching" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:37 +msgid "Regular expression for matching attachment names" +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:6 +msgid "List of devices" +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:23 +msgid "" +"This dialog allows you to attach a device to your currently edited computer." +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:35 +msgid "Display devices matching" +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:37 +msgid "Regular expression for matching device names" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:146 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:163 +msgid "There is no server with valid glpi database service." +msgstr "No existe un servidor con un servicio de base de datos glpi válido." + +#: admin/systems/services/glpi/class_glpiAccount.inc:156 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:173 +msgid "Can't connect to glpi database, the php-mysql extension is missing." +msgstr "" +"No puedo conectar a la base de datos glpi, la extensión php-mysql no es " +"accesible." + +#: admin/systems/services/glpi/class_glpiAccount.inc:166 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:183 +msgid "Can't connect to glpi database, check configuration twice." +msgstr "" +"No puedo conectar a la base de datos glpi, compruebe la configuración de " +"nuevo." + +#: admin/systems/services/glpi/class_glpiAccount.inc:181 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:198 +msgid "Download of attachment failed. Attachment was not found on server." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:184 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:201 +msgid "Download of attachment failed. Not a valid attachment id." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:198 +#: admin/systems/services/glpi/class_glpiAccount.inc:204 +#: admin/systems/services/glpi/class_glpiAccount.inc:210 +msgid "This feature is not implemented yet." +msgstr "Esta característica no está todavía implementada" + +#: admin/systems/services/glpi/class_glpiAccount.inc:312 +msgid "Adding new sytem type failed, this system type name is already used." +msgstr "" +"Ha fallado al añadir un nuevo tipo de sistema, el nombre de tipo de sistema " +"ya está en uso." + +#: admin/systems/services/glpi/class_glpiAccount.inc:332 +#, php-format +msgid "" +"You can't delete this system type, it is still in use by these system(s) '%s'" +msgstr "" +"No puede eliminar este tipo de sistema, está todavía en uso por el sistema" +"(s) '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:343 +msgid "Rename failed, this system type name is already used." +msgstr "" +"El cambio de nombre ha fallado, ha introducido uno que ya está siendo usado." + +#: admin/systems/services/glpi/class_glpiAccount.inc:399 +msgid "Adding new operating system failed, specifed name is already used." +msgstr "" +"Ha fallado al añadir un nuevo sistema operativo, el nombre introducido ya " +"está en uso." + +#: admin/systems/services/glpi/class_glpiAccount.inc:421 +#, php-format +msgid "" +"You can't delete this operating system, it is still in use by these system" +"(s) '%s'" +msgstr "" +"No puede eliminar este sistema operativo, está todavía en uso por el sistema" +"(s) '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:433 +msgid "Updating operating system failed, specifed name is already used." +msgstr "" +"Ha fallado al actualizar el sistema operativo, el valor introducido ya esta " +"siendo utilizado." + +#: admin/systems/services/glpi/class_glpiAccount.inc:512 +#, php-format +msgid "" +"Could not add the given user, the users dn is too long, only 100 characters " +"are allowed here." +msgstr "" +"No se puede añadir el usuario introducido, la dn del usuario es muy larga, " +"solo se permiten 100 caracteres." + +#: admin/systems/services/glpi/class_glpiAccount.inc:593 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:229 +msgid "Remove inventory" +msgstr "Eliminar inventario" + +#: admin/systems/services/glpi/class_glpiAccount.inc:594 +msgid "" +"This device has inventory informations enabled. You can disable them by " +"clicking below." +msgstr "" +"Este dispositivo tiene información de inventario activada. Puede " +"desactivarla pulsando aquí." + +#: admin/systems/services/glpi/class_glpiAccount.inc:596 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:232 +msgid "Add inventory" +msgstr "Añadir inventario" + +#: admin/systems/services/glpi/class_glpiAccount.inc:597 +msgid "" +"This device has inventory informations disabled. You can enable them by " +"clicking below." +msgstr "" +"Este dispositivo tiene información de inventario desactivada. Puede " +"activarla pulsando aquí." + +#: admin/systems/services/glpi/class_glpiAccount.inc:692 +#: admin/systems/services/glpi/class_glpiAccount.inc:693 +msgid "Can't remove glpi account, while mysql extension is missing." +msgstr "" +"Mientras no se encuentre la extensión php_mysql no se puede eliminar la " +"cuenta glpi." + +#: admin/systems/services/glpi/class_glpiAccount.inc:793 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:795 +msgid "Glpi" +msgstr "Glpi" + +#: admin/systems/services/glpi/class_glpiAccount.inc:794 +msgid "Inventory extension" +msgstr "Eliminar extensión de impresión" + +#: admin/systems/services/glpi/class_glpiAccount.inc:804 +#: admin/systems/services/glpi/glpi.tpl:23 +msgid "Operating system" +msgstr "Sistema operativo" + +#: admin/systems/services/glpi/class_glpiAccount.inc:805 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:809 +msgid "Location" +msgstr "Localización" + +#: admin/systems/services/glpi/class_glpiAccount.inc:807 +msgid "Model" +msgstr "Modelo" + +#: admin/systems/services/glpi/class_glpiAccount.inc:811 +msgid "Peripheral devices" +msgstr "Dispositivo periférico" + +#: admin/systems/services/glpi/glpi.tpl:9 +msgid "System type" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:96 +msgid "Installed devices" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:112 +msgid "Trading" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:113 +msgid "Software" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:114 +msgid "Contracts" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:68 +#, fuzzy +msgid "attachment" +msgstr "Adjuntos" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:107 +#, php-format +msgid "" +"You can't delete this attachment, it is still in use by these system(s) '%s'" +msgstr "" +"No puede eliminar este adjunto, está todavía en uso por el(los) sistema(s) '%" +"s'" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:119 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:123 +msgid "There is no valid file uploaded." +msgstr "No se ha subido ningún archivo valido." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:126 +msgid "Upload wasn't successfull." +msgstr "El envío no fue correcto." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:129 +#, php-format +msgid "Missing directory '%s/glpi/' to store glpi uploads." +msgstr "El directorio donde guardar los envíos '%s/glpi/' no es accesible." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:133 +msgid "There is already a file with the same name uploaded." +msgstr "Ya se ha subido anteriormente un fichero con este nombre." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:137 +#, php-format +msgid "Can't create file '%s'." +msgstr "No puedo crear el fichero '%s'." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:181 +msgid "File is available." +msgstr "El archivo esta disponible." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:183 +msgid "File is not readable, possibly the file is missing." +msgstr "No se puede acceder al archivo, posiblemente se haya perdido." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:186 +msgid "Currently no file uploaded." +msgstr "No se ha subido ningún archivo actualmente." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:198 +msgid "Mime" +msgstr "Mime" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:201 +msgid "This table displays all available attachments." +msgstr "Esta tabla muestra todos los adjuntos disponibles." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:218 +msgid "empty" +msgstr "vacío" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:255 +msgid "Create new attachment" +msgstr "Crear nuevo adjunto" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:256 +msgid "New Attachment" +msgstr "Nuevo adjunto" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:349 +msgid "This name is already in use." +msgstr "El nombre introducido ya esta siendo usado" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:352 +msgid "Please specify a valid name for this attachment." +msgstr "Por favor introduzca un nombre de adjunto valido." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:230 +msgid "" +"This server has inventory features enabled. You can disable them by clicking " +"below." +msgstr "" +"Este servidor tiene la extensión inventario activada. Puede desactivarla " +"pulsando aquí." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:233 +msgid "" +"This server has inventory features disabled. You can enable them by clicking " +"below." +msgstr "" +"Este servidor tiene la extensión inventario desactivada. Puede activarla " +"pulsando aquí." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:256 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:294 +#, php-format +msgid "" +"Can't rename given printer type to '%s', because this type name already " +"exists." +msgstr "" +"No puedo cambiar el nombre del tipo de impresora a '%s' porque este tipo ya " +"existe." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:308 +#, php-format +msgid "Can't delete printer type, it is still in use by '%s'." +msgstr "No puedo eliminar el tipo de impresora, todavía está en uso por '%s'." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:785 +msgid "since" +msgstr "desde" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:796 +msgid "Printer inventory extension" +msgstr "Extensión de inventario de impresión" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:804 +msgid "Supports serial interface" +msgstr "Soporta interfaz serie" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:805 +msgid "Supports parallel interface" +msgstr "Soporta interfaz paralelo" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:806 +msgid "Supports usb interface" +msgstr "Soporta interfaz usb" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:816 +msgid "Cartridge settings" +msgstr "Características del cartucho" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:6 +msgid "List of users" +msgstr "Lista de usuarios" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:23 +msgid "" +"This dialog allows you to select a user as technical responsible person." +msgstr "" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:35 +msgid "Display users matching" +msgstr "Mostrar usuarios que coincidan con" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:37 +msgid "Regular expression for matching user names" +msgstr "Expresiones regulares para buscar nombre de usuarios" + +#: admin/systems/services/glpi/glpi_edit_os.tpl:1 +msgid "Manage OS-types" +msgstr "" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:53 +#, php-format +msgid "" +"You can't delete this manufacturer, it is still in use by these system(s) '%" +"s'" +msgstr "" +"No puede eliminar este fabricante, está todavía en uso por este(os) sistema" +"(s) '%s'" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:99 +msgid "Please specify a name." +msgstr "Por favor introduzca un nombre" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:108 +#: admin/systems/services/glpi/class_glpiManufacturer.inc:114 +msgid "Specified name is already in use, please choose another one." +msgstr "" +"El valor introducidocomo 'Nombre' esta siendo utilizado. Por favor elija " +"otro." + +#: admin/systems/services/glpi/glpi_edit_type.tpl:1 +msgid "Manage System-types" +msgstr "" + +#~ msgid "You're about to delete the glpi attachment component '%s'." +#~ msgstr "Ha decidido eliminar el componente adjunto glpi '%s'." + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "You're about to delete the glpi device '%s'." +#~ msgstr "Ha decidido eliminar el dispositivo glpi '%s'." + +#~ msgid "You're about to delete the glpi cartridge type '%s'." +#~ msgstr "Ha decidido eliminar el tipo de cartucho glpi '%s'." diff --git a/trunk/gosa-plugins/glpi/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/glpi/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e1acc6bda --- /dev/null +++ b/trunk/gosa-plugins/glpi/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,1193 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2008-07-23 23:06+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Users" +msgstr "Utilisateurs" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Departments" +msgstr "Départements" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:109 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:51 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:51 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:51 +msgid "Use" +msgstr "Utiliser" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +msgid "use" +msgstr "utiliser" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Go to root department" +msgstr "Aller au département de base" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Root" +msgstr "Racine" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Go up one department" +msgstr "Monter d'un département" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Up" +msgstr "Au dessus" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Go to users department" +msgstr "Aller au département des utilisateurs" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Home" +msgstr "Accueil" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +msgid "Reload list" +msgstr "Recharger la liste" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit" +msgstr "Soumettre" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:178 +msgid "Base" +msgstr "Base" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit department" +msgstr "Soumettre le département" + +#: admin/systems/services/glpi/goGlpiServer.tpl:1 +msgid "GLPI database information" +msgstr "Information sur la base de données GLPI" + +#: admin/systems/services/glpi/goGlpiServer.tpl:4 +msgid "Logging DB user" +msgstr "Utilisateur de la base de données des journaux systèmes" + +#: admin/systems/services/glpi/goGlpiServer.tpl:12 +#: admin/systems/services/glpi/class_goGlpiServer.inc:102 +msgid "Password" +msgstr "Mot de passe" + +#: admin/systems/services/glpi/goGlpiServer.tpl:20 +#: admin/systems/services/glpi/class_goGlpiServer.inc:101 +msgid "Database" +msgstr "Base de données" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:8 +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:29 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:7 +#: admin/systems/services/glpi/glpi_edit_os.tpl:9 +#: admin/systems/services/glpi/glpi_edit_os.tpl:28 +#: admin/systems/services/glpi/glpi_edit_type.tpl:9 +#: admin/systems/services/glpi/glpi_edit_type.tpl:28 +msgid "Rename" +msgstr "Renommer" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:14 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:81 +#: admin/systems/services/glpi/glpiManufacturer.tpl:13 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:13 +#: admin/systems/services/glpi/glpi_edit_os.tpl:15 +#: admin/systems/services/glpi/glpi_edit_type.tpl:15 +msgid "Close" +msgstr "Fermer" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:25 +#: admin/systems/services/glpi/glpi_edit_os.tpl:24 +#: admin/systems/services/glpi/glpi_edit_type.tpl:24 +msgid "Please enter a new name" +msgstr "Veuillez entrer un nouveau nom" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:2 +msgid "Attachment" +msgstr "Document lié" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:10 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:7 +#: admin/systems/services/glpi/glpi_devices.tpl:10 +#: admin/systems/services/glpi/glpi_devices.tpl:105 +#: admin/systems/services/glpi/glpi_devices.tpl:146 +#: admin/systems/services/glpi/glpi_devices.tpl:201 +#: admin/systems/services/glpi/glpi_devices.tpl:257 +#: admin/systems/services/glpi/glpi_devices.tpl:315 +#: admin/systems/services/glpi/glpi_devices.tpl:379 +#: admin/systems/services/glpi/glpi_devices.tpl:451 +#: admin/systems/services/glpi/glpi_devices.tpl:515 +#: admin/systems/services/glpi/glpi_devices.tpl:562 +#: admin/systems/services/glpi/glpi_devices.tpl:615 +#: admin/systems/services/glpi/glpi_devices.tpl:669 +#: admin/systems/services/glpi/glpi_devices.tpl:715 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:7 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:197 +msgid "Name" +msgstr "Nom" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:18 +#: admin/systems/services/glpi/glpi_devices.tpl:112 +#: admin/systems/services/glpi/glpi_devices.tpl:153 +#: admin/systems/services/glpi/glpi_devices.tpl:208 +#: admin/systems/services/glpi/glpi_devices.tpl:264 +#: admin/systems/services/glpi/glpi_devices.tpl:322 +#: admin/systems/services/glpi/glpi_devices.tpl:386 +#: admin/systems/services/glpi/glpi_devices.tpl:458 +#: admin/systems/services/glpi/glpi_devices.tpl:522 +#: admin/systems/services/glpi/glpi_devices.tpl:569 +#: admin/systems/services/glpi/glpi_devices.tpl:622 +#: admin/systems/services/glpi/glpi_devices.tpl:676 +#: admin/systems/services/glpi/glpi_devices.tpl:722 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:25 +#: admin/systems/services/glpi/class_glpiAccount.inc:803 +#: admin/systems/services/glpi/glpi.tpl:79 +msgid "Comment" +msgstr "Commentaires" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:30 +msgid "File" +msgstr "Fichier" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:33 +msgid "Upload" +msgstr "Télécharger" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:38 +msgid "Status" +msgstr "Statut" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:46 +msgid "Filename" +msgstr "Nom du fichier" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:54 +msgid "Mime-type" +msgstr "Type mime" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:104 +msgid "Can't delete this entry, it is still in use." +msgstr "Impossible d'effacer cette entrée elle est encore utilisée" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:268 +#: admin/systems/services/glpi/class_glpiAccount.inc:656 +#: admin/systems/services/glpi/class_glpiAccount.inc:671 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:633 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:648 +msgid "N/A" +msgstr "N/A" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:286 +msgid "The selected name is already in use." +msgstr "Le nom spécifié est déjà utilisé." + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:92 +msgid "cartridge" +msgstr "cartouche" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:111 +#, php-format +msgid "" +"You can't delete this cartridge type, it is still in use by this printer(s) " +"'%s'." +msgstr "" +"Vous ne pouvez pas effacer ce type de cartouche, il est utilisé actuellement " +"par ce(s) imprimante(s) '%s'." + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:158 +msgid "Cartridges" +msgstr "Cartouches" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:159 +msgid "Action" +msgstr "Action" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:163 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:187 +#: admin/systems/services/glpi/glpiPrinter.tpl:88 +#: admin/systems/services/glpi/glpiPrinter.tpl:99 +#: admin/systems/services/glpi/glpiManufacturer.tpl:7 +#: admin/systems/services/glpi/glpi.tpl:61 +#: admin/systems/services/glpi/glpi.tpl:71 +#: admin/systems/services/glpi/glpi.tpl:106 +msgid "Edit" +msgstr "Editer" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:164 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:188 +msgid "Delete" +msgstr "Supprimer" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "New monitor" +msgstr "Nouvel écran" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "M" +msgstr "M" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:1 +msgid "Add/Edit manufacturer" +msgstr "Ajouter/Modifier un fabricant" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:14 +msgid "Website" +msgstr "Site web" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:21 +msgid "Address" +msgstr "Adresse" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:32 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:39 +msgid "Fax" +msgstr "Fax" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:46 +msgid "Email" +msgstr "Adresse de messagerie" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:53 +#: admin/systems/services/glpi/glpi_devices.tpl:17 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:22 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:808 +msgid "Comments" +msgstr "Commentaires" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:88 +#, php-format +msgid "Internal Error can't create device of type '%s'" +msgstr "Erreur interne, impossible de créer le périphérique de type '%s'" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:108 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:110 +msgid "glpi device" +msgstr "périphérique glpi" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:112 +msgid "Can't detect object name." +msgstr "Impossible de détecter le nom de l'objet." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:133 +#, php-format +msgid "" +"You can't delete this device, it is still in use by these system(s) '%s'" +msgstr "" +"Vous ne pouvez pas effacer ce périphérique, il est utilisé actuellement par " +"ces système(s) '%s'" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:183 +msgid "devices" +msgstr "périphériques" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:184 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:199 +msgid "Actions" +msgstr "Actions" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "New mainbord" +msgstr "Nouvelle carte mère" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "MB" +msgstr "MB" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "New processor" +msgstr "Nouveau processeur" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "P" +msgstr "P" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "New case" +msgstr "Nouveau boitier" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "C" +msgstr "C" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "New network interface" +msgstr "Nouvelle carte réseau" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "NI" +msgstr "NI" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "New ram" +msgstr "Nouvelle mémoire vive" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "R" +msgstr "R" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "New hard disk" +msgstr "Nouveau disque dur" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "HDD" +msgstr "Disque dur" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "New drive" +msgstr "Nouveau lecteur" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "D" +msgstr "D" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "New controller" +msgstr "Nouveau contrôleur" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "CS" +msgstr "CS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "New graphics card" +msgstr "Nouvelle carte graphique" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "GC" +msgstr "GC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "New sound card" +msgstr "Nouvelle carte son" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "SC" +msgstr "SC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "New power supply" +msgstr "Nouvelle alimentation" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "PS" +msgstr "PS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "New misc device" +msgstr "Nouveau périphérique" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "OC" +msgstr "OC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:346 +msgid "You have to specify a valid name for this device." +msgstr "Veuillez spécifier un nom valide pour ce périphérique." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:366 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:369 +msgid "This device name is already in use." +msgstr "Le nom de ce périphérique est déjà utilisé." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:392 +msgid "none" +msgstr "aucun" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "None" +msgstr "Aucun" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "Other" +msgstr "Autres" + +#: admin/systems/services/glpi/glpiPrinter.tpl:6 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:4 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:34 +#: admin/systems/services/glpi/glpi.tpl:6 +msgid "Generic" +msgstr "Informations" + +#: admin/systems/services/glpi/glpiPrinter.tpl:9 +msgid "Printer type" +msgstr "Type de l'imprimante" + +#: admin/systems/services/glpi/glpiPrinter.tpl:18 +#: admin/systems/services/glpi/glpiPrinter.tpl:32 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:43 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:53 +#: admin/systems/services/glpi/glpi.tpl:18 +#: admin/systems/services/glpi/glpi.tpl:32 +#: admin/systems/services/glpi/glpi.tpl:46 +msgid "edit" +msgstr "éditer" + +#: admin/systems/services/glpi/glpiPrinter.tpl:23 +#: admin/systems/services/glpi/glpi_devices.tpl:24 +#: admin/systems/services/glpi/glpi_devices.tpl:123 +#: admin/systems/services/glpi/glpi_devices.tpl:164 +#: admin/systems/services/glpi/glpi_devices.tpl:219 +#: admin/systems/services/glpi/glpi_devices.tpl:275 +#: admin/systems/services/glpi/glpi_devices.tpl:333 +#: admin/systems/services/glpi/glpi_devices.tpl:397 +#: admin/systems/services/glpi/glpi_devices.tpl:469 +#: admin/systems/services/glpi/glpi_devices.tpl:533 +#: admin/systems/services/glpi/glpi_devices.tpl:580 +#: admin/systems/services/glpi/glpi_devices.tpl:633 +#: admin/systems/services/glpi/glpi_devices.tpl:687 +#: admin/systems/services/glpi/glpi_devices.tpl:733 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:47 +#: admin/systems/services/glpi/class_glpiAccount.inc:809 +#: admin/systems/services/glpi/glpi.tpl:37 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:812 +msgid "Manufacturer" +msgstr "Fabricant" + +#: admin/systems/services/glpi/glpiPrinter.tpl:39 +msgid "Supported interfaces" +msgstr "Interfaces supportées" + +#: admin/systems/services/glpi/glpiPrinter.tpl:48 +msgid "Serial" +msgstr "Série" + +#: admin/systems/services/glpi/glpiPrinter.tpl:58 +msgid "Parallel" +msgstr "Parallèle" + +#: admin/systems/services/glpi/glpiPrinter.tpl:68 +msgid "USB" +msgstr "USB" + +#: admin/systems/services/glpi/glpiPrinter.tpl:80 +#: admin/systems/services/glpi/glpi.tpl:52 +msgid "Contacts" +msgstr "Contacts" + +#: admin/systems/services/glpi/glpiPrinter.tpl:83 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:57 +#: admin/systems/services/glpi/class_glpiAccount.inc:802 +#: admin/systems/services/glpi/glpi.tpl:66 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:807 +msgid "Technical responsible" +msgstr "Responsable technique" + +#: admin/systems/services/glpi/glpiPrinter.tpl:94 +#: admin/systems/services/glpi/class_glpiAccount.inc:806 +#: admin/systems/services/glpi/glpi.tpl:56 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:810 +msgid "Contact person" +msgstr "Personne de contact" + +#: admin/systems/services/glpi/glpiPrinter.tpl:107 +#: admin/systems/services/glpi/class_glpiAccount.inc:810 +#: admin/systems/services/glpi/glpi.tpl:117 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:814 +msgid "Attachments" +msgstr "Documents liés" + +#: admin/systems/services/glpi/glpiPrinter.tpl:127 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:20 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:20 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:20 +#: admin/systems/services/glpi/glpiSelectUser.tpl:20 +msgid "Information" +msgstr "Information" + +#: admin/systems/services/glpi/glpiPrinter.tpl:139 +msgid "Installed cartridges" +msgstr "Cartouches installés" + +#: admin/systems/services/glpi/glpiPrinter.tpl:152 +#: admin/systems/services/glpi/glpiManufacturer.tpl:8 +msgid "Remove" +msgstr "Supprimer" + +#: admin/systems/services/glpi/glpi_devices.tpl:2 +msgid "Add/Edit monitor" +msgstr "Ajouter/Modifier un écran" + +#: admin/systems/services/glpi/glpi_devices.tpl:33 +msgid "Monitor size" +msgstr "Taille écran" + +#: admin/systems/services/glpi/glpi_devices.tpl:36 +msgid "Inch" +msgstr "Inch" + +#: admin/systems/services/glpi/glpi_devices.tpl:44 +msgid "Integrated microphone" +msgstr "Micro intégré" + +#: admin/systems/services/glpi/glpi_devices.tpl:47 +#: admin/systems/services/glpi/glpi_devices.tpl:55 +#: admin/systems/services/glpi/glpi_devices.tpl:63 +#: admin/systems/services/glpi/glpi_devices.tpl:71 +#: admin/systems/services/glpi/glpi_devices.tpl:176 +#: admin/systems/services/glpi/glpi_devices.tpl:296 +#: admin/systems/services/glpi/glpi_devices.tpl:361 +msgid "Yes" +msgstr "Oui" + +#: admin/systems/services/glpi/glpi_devices.tpl:48 +#: admin/systems/services/glpi/glpi_devices.tpl:56 +#: admin/systems/services/glpi/glpi_devices.tpl:64 +#: admin/systems/services/glpi/glpi_devices.tpl:72 +#: admin/systems/services/glpi/glpi_devices.tpl:177 +#: admin/systems/services/glpi/glpi_devices.tpl:297 +#: admin/systems/services/glpi/glpi_devices.tpl:362 +msgid "No" +msgstr "Non" + +#: admin/systems/services/glpi/glpi_devices.tpl:52 +msgid "Integrated speakers" +msgstr "Haut parleur intégré" + +#: admin/systems/services/glpi/glpi_devices.tpl:60 +msgid "Sub-D" +msgstr "Sub-D" + +#: admin/systems/services/glpi/glpi_devices.tpl:68 +msgid "BNC" +msgstr "BNC" + +#: admin/systems/services/glpi/glpi_devices.tpl:76 +msgid "Serial number" +msgstr "Numéro de série" + +#: admin/systems/services/glpi/glpi_devices.tpl:83 +msgid "Additional serial number" +msgstr "Numéro de série supplémentaire" + +#: admin/systems/services/glpi/glpi_devices.tpl:97 +msgid "Add/Edit other device" +msgstr "Ajouter/Modifier un autre périphérique" + +#: admin/systems/services/glpi/glpi_devices.tpl:138 +msgid "Add/Edit power supply" +msgstr "Ajouter/Modifier une alimentation" + +#: admin/systems/services/glpi/glpi_devices.tpl:173 +msgid "Atx" +msgstr "atx" + +#: admin/systems/services/glpi/glpi_devices.tpl:181 +msgid "Power" +msgstr "Puissance électrique" + +#: admin/systems/services/glpi/glpi_devices.tpl:193 +msgid "Add/Edit graphic card" +msgstr "Ajouter/Modifier une carte graphique" + +#: admin/systems/services/glpi/glpi_devices.tpl:228 +#: admin/systems/services/glpi/glpi_devices.tpl:284 +#: admin/systems/services/glpi/glpi_devices.tpl:349 +msgid "Interface" +msgstr "Interface" + +#: admin/systems/services/glpi/glpi_devices.tpl:237 +msgid "Ram" +msgstr "Mémoire vive" + +#: admin/systems/services/glpi/glpi_devices.tpl:249 +msgid "Add/Edit controller" +msgstr "Ajouter/Modifier un contrôleur" + +#: admin/systems/services/glpi/glpi_devices.tpl:293 +#: admin/systems/services/glpi/glpi_devices.tpl:420 +#: admin/systems/services/glpi/glpi_devices.tpl:485 +msgid "Size" +msgstr "Taille" + +#: admin/systems/services/glpi/glpi_devices.tpl:307 +msgid "Add/Edit drive" +msgstr "Ajouter/Modifier un lecteur" + +#: admin/systems/services/glpi/glpi_devices.tpl:342 +msgid "Speed" +msgstr "Vitesse" + +#: admin/systems/services/glpi/glpi_devices.tpl:358 +msgid "Writeable" +msgstr "Inscriptible" + +#: admin/systems/services/glpi/glpi_devices.tpl:371 +msgid "Add/Edit harddisk" +msgstr "Ajouter/Modifier un disque dur" + +#: admin/systems/services/glpi/glpi_devices.tpl:406 +msgid "Rpm" +msgstr "Vitesse" + +#: admin/systems/services/glpi/glpi_devices.tpl:413 +msgid "Cache" +msgstr "Cache" + +#: admin/systems/services/glpi/glpi_devices.tpl:427 +#: admin/systems/services/glpi/glpi_devices.tpl:492 +#: admin/systems/services/glpi/glpi_devices.tpl:542 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:37 +#: admin/systems/services/glpi/class_glpiAccount.inc:808 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:811 +msgid "Type" +msgstr "Type" + +#: admin/systems/services/glpi/glpi_devices.tpl:443 +msgid "Add/Edit memory" +msgstr "Ajouter/Modifier la mémoire vive" + +#: admin/systems/services/glpi/glpi_devices.tpl:478 +msgid "Frequenz" +msgstr "Fréquence" + +#: admin/systems/services/glpi/glpi_devices.tpl:507 +msgid "Add/Edit sound card" +msgstr "Ajouter/Modifier une carte son" + +#: admin/systems/services/glpi/glpi_devices.tpl:553 +msgid "Add/Edit network interface" +msgstr "Ajouter/Modifier une carte réseau" + +#: admin/systems/services/glpi/glpi_devices.tpl:589 +msgid "MAC address" +msgstr "Adresse MAC" + +#: admin/systems/services/glpi/glpi_devices.tpl:596 +msgid "Bandwidth" +msgstr "Bande passante" + +#: admin/systems/services/glpi/glpi_devices.tpl:607 +msgid "Add/Edit processor" +msgstr "Ajouter/Modifier un processeur" + +#: admin/systems/services/glpi/glpi_devices.tpl:642 +msgid "Frequence" +msgstr "Fréquence" + +#: admin/systems/services/glpi/glpi_devices.tpl:649 +msgid "Default frequence" +msgstr "Fréquence par défaut" + +#: admin/systems/services/glpi/glpi_devices.tpl:661 +msgid "Add/Edit motherboard" +msgstr "Ajouter/Modifier une carte mère" + +#: admin/systems/services/glpi/glpi_devices.tpl:696 +msgid "Chipset" +msgstr "Jeu de composants" + +#: admin/systems/services/glpi/glpi_devices.tpl:707 +msgid "Add/Edit computer case" +msgstr "Ajouter/Modifier un Boîtier" + +#: admin/systems/services/glpi/glpi_devices.tpl:742 +msgid "format" +msgstr "format" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:32 +#: admin/systems/services/glpi/class_goGlpiServer.inc:87 +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Inventory database" +msgstr "Base de données de l'inventaire" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:58 +msgid "Inventory database service" +msgstr "Service de la base de données d'inventaire" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:67 +msgid "The attribute user is empty or contains invalid characters." +msgstr "L'attribut utilisateur est vide ou contient des caractères invalides." + +#: admin/systems/services/glpi/class_goGlpiServer.inc:70 +msgid "The attribute database is empty or contains invalid characters." +msgstr "" +"L'attribut base de données est vide ou contient des caractères invalides." + +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:96 +msgid "Start" +msgstr "Démarrage" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:97 +msgid "Stop" +msgstr "Arrêter" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:98 +msgid "Restart" +msgstr "Réessayer" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:100 +msgid "Admin" +msgstr "Administrateur" + +#: admin/systems/services/glpi/glpiManufacturer.tpl:1 +msgid "Manage manufacturers" +msgstr "Gérer les Fabricants" + +#: admin/systems/services/glpi/remove_glpi.tpl:2 +msgid "Warning" +msgstr "Avertissement" + +#: admin/systems/services/glpi/remove_glpi.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Veuillez vous assurez que vous voulez effectuer cette opération. Toutes les " +"données seront perdues étant donné qu'il est impossible pour GOsa de " +"récupérer vos données." + +#: admin/systems/services/glpi/remove_glpi.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your MySql database in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Il est conseillé de sauvegarder le contenu de votre base de données MySql " +"dans un fichier avant de réaliser cette action. Donc - si vous avez fait " +"cela - appuyez sur 'Supprimer' pour continuer ou 'Annuler' pour abandonner." + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:14 +msgid "Reference" +msgstr "Référence" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:61 +msgid "Choose" +msgstr "Choisir" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:6 +msgid "List of available cartridge type for this type of printer" +msgstr "Liste des types de cartouches disponibles pour ce type d'imprimante" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:23 +msgid "" +"This dialog allows you to create new types of cartridges, and select one or " +"more types for your printer. Cartridge types depends on the printer type you " +"have selected. For each selected cartridge type there will be a new " +"cartridge created, this allows you to select the same cartridge type for " +"more then one printer." +msgstr "" +"Cette page vous permet de créer de nouveaux types de cartouches, et de " +"sélectionner un ou plusieurs type pour votre imprimante. Les types de " +"cartouches dépendent du type d'imprimante que vous avez sélectionné. Pour " +"chaque type de cartouche sélectionné il y aura une nouvelle cartouche crée, " +"ceci vous permettra de sélectionner le même type de cartouche pour plusieurs " +"imprimantes." + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:27 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:27 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:27 +#: admin/systems/services/glpi/glpiSelectUser.tpl:27 +msgid "Filters" +msgstr "Filtres" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:35 +msgid "Display cartridge types matching" +msgstr "Afficher les types de cartouches correspondantes" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:37 +msgid "Regular expression for matching cartridge types" +msgstr "Expression régulière pour sélectionner les cartouches correspondantes" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:6 +msgid "List of attachments" +msgstr "Liste des documents liés" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:23 +msgid "" +"This dialog allow you to attach additional objects (like manuals, guides, " +"etc.) to your currently edited computer." +msgstr "" +"Ce menu vous permet d'attacher des objets supplémentaires ( comme des " +"manuels, guides, etc..) à l'ordinateur que vous être en train d'éditer." + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:35 +msgid "Display attachments matching" +msgstr "Afficher les documents liées correspondants" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:37 +msgid "Regular expression for matching attachment names" +msgstr "Expression régulière pour faire correspondre le nom des documents liés" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:6 +msgid "List of devices" +msgstr "Liste des périphériques" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:23 +msgid "" +"This dialog allows you to attach a device to your currently edited computer." +msgstr "" +"Ce menu vous permet d'attacher un périphérique à votre ordinateur en cours " +"d'édition." + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:35 +msgid "Display devices matching" +msgstr "Afficher les périphériques correspondants" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:37 +msgid "Regular expression for matching device names" +msgstr "Expression régulière concordant avec les noms des périphériques" + +#: admin/systems/services/glpi/class_glpiAccount.inc:146 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:163 +msgid "There is no server with valid glpi database service." +msgstr "Il n'y a pas de serveur qui contient un service glpi valide." + +#: admin/systems/services/glpi/class_glpiAccount.inc:156 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:173 +msgid "Can't connect to glpi database, the php-mysql extension is missing." +msgstr "" +"Impossible de se connecter sur la base de données glpi, l'extension php-" +"mysql n'est pas disponible." + +#: admin/systems/services/glpi/class_glpiAccount.inc:166 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:183 +msgid "Can't connect to glpi database, check configuration twice." +msgstr "" +"Impossible de se connecter à la base de données glpi, veuillez vérifier la " +"configuration." + +#: admin/systems/services/glpi/class_glpiAccount.inc:181 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:198 +msgid "Download of attachment failed. Attachment was not found on server." +msgstr "" +"Le téléchargement de la pièce jointe à échoué. La pièce jointe n'est pas " +"présente sur le serveur." + +#: admin/systems/services/glpi/class_glpiAccount.inc:184 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:201 +msgid "Download of attachment failed. Not a valid attachment id." +msgstr "Le téléchargement de la pièce jointe à échoué. Numéro id non valide." + +#: admin/systems/services/glpi/class_glpiAccount.inc:198 +#: admin/systems/services/glpi/class_glpiAccount.inc:204 +#: admin/systems/services/glpi/class_glpiAccount.inc:210 +msgid "This feature is not implemented yet." +msgstr "Cette fonctionnalité n'est pas encore implémentée." + +#: admin/systems/services/glpi/class_glpiAccount.inc:312 +msgid "Adding new sytem type failed, this system type name is already used." +msgstr "" +"L'ajout d'un nouveau type de système à échoué, le nom est déjà utilisé." + +#: admin/systems/services/glpi/class_glpiAccount.inc:332 +#, php-format +msgid "" +"You can't delete this system type, it is still in use by these system(s) '%s'" +msgstr "" +"Vous ne pouvez pas effacer ce type de système, il est utilisé actuellement " +"par les sytème(s) '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:343 +msgid "Rename failed, this system type name is already used." +msgstr "Le changement de nom à échoué, le nom spécifié est déjà utilisé." + +#: admin/systems/services/glpi/class_glpiAccount.inc:399 +msgid "Adding new operating system failed, specifed name is already used." +msgstr "" +"L'ajout d'un nouveau système d'exploitation à échoué, le nom utilisé existe " +"déjà." + +#: admin/systems/services/glpi/class_glpiAccount.inc:421 +#, php-format +msgid "" +"You can't delete this operating system, it is still in use by these system" +"(s) '%s'" +msgstr "" +"Vous ne pouvez pas effacer ce système d'exploitation, il est utilisé " +"actuellement par ce(s) système(s) '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:433 +msgid "Updating operating system failed, specifed name is already used." +msgstr "" +"Le changement de nom du système d'exploitation à échoué, le nom utilisé " +"existe déjà." + +#: admin/systems/services/glpi/class_glpiAccount.inc:512 +#, php-format +msgid "" +"Could not add the given user, the users dn is too long, only 100 characters " +"are allowed here." +msgstr "" +"Impossible d'ajouter l'utilisateur, le dns de l'utilisateur est trop long, " +"seulement 100 caractères sont permis. " + +#: admin/systems/services/glpi/class_glpiAccount.inc:593 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:229 +msgid "Remove inventory" +msgstr "Supprimer l'inventaire" + +#: admin/systems/services/glpi/class_glpiAccount.inc:594 +msgid "" +"This device has inventory informations enabled. You can disable them by " +"clicking below." +msgstr "" +"Ce périphérique à l'extension inventaire activée. Vous pouvez la désactiver " +"en cliquant sur le bouton ci-dessous." + +#: admin/systems/services/glpi/class_glpiAccount.inc:596 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:232 +msgid "Add inventory" +msgstr "Ajouter l'inventaire" + +#: admin/systems/services/glpi/class_glpiAccount.inc:597 +msgid "" +"This device has inventory informations disabled. You can enable them by " +"clicking below." +msgstr "" +"Ce périphérique à l'extension d'inventaire désactivé. Vous pouvez l'activer " +"en cliquant sur le bouton ci-dessous." + +#: admin/systems/services/glpi/class_glpiAccount.inc:692 +#: admin/systems/services/glpi/class_glpiAccount.inc:693 +msgid "Can't remove glpi account, while mysql extension is missing." +msgstr "" +"Impossible de supprimer l'extension glpi, l'extension mysql n'est pas " +"disponible." + +#: admin/systems/services/glpi/class_glpiAccount.inc:793 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:795 +msgid "Glpi" +msgstr "Glpi" + +#: admin/systems/services/glpi/class_glpiAccount.inc:794 +msgid "Inventory extension" +msgstr "Extension d'inventaire" + +#: admin/systems/services/glpi/class_glpiAccount.inc:804 +#: admin/systems/services/glpi/glpi.tpl:23 +msgid "Operating system" +msgstr "Système d'exploitation" + +#: admin/systems/services/glpi/class_glpiAccount.inc:805 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:809 +msgid "Location" +msgstr "Lieu" + +#: admin/systems/services/glpi/class_glpiAccount.inc:807 +msgid "Model" +msgstr "Modèle" + +#: admin/systems/services/glpi/class_glpiAccount.inc:811 +msgid "Peripheral devices" +msgstr "Périphériques externes" + +#: admin/systems/services/glpi/glpi.tpl:9 +msgid "System type" +msgstr "Type de système" + +#: admin/systems/services/glpi/glpi.tpl:96 +msgid "Installed devices" +msgstr "Périphériques installés" + +#: admin/systems/services/glpi/glpi.tpl:112 +msgid "Trading" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:113 +msgid "Software" +msgstr "Logiciel" + +#: admin/systems/services/glpi/glpi.tpl:114 +msgid "Contracts" +msgstr "Contrats" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:68 +msgid "attachment" +msgstr "pièce jointe" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:107 +#, php-format +msgid "" +"You can't delete this attachment, it is still in use by these system(s) '%s'" +msgstr "" +"Impossible d'effacer ce fichier attaché, tant qu'il est utilisé par ce(s) " +"système(s) '%s'." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:119 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:123 +msgid "There is no valid file uploaded." +msgstr "Pas de fichier valide téléchargé." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:126 +msgid "Upload wasn't successfull." +msgstr "Le téléchargement n'a pas réussi." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:129 +#, php-format +msgid "Missing directory '%s/glpi/' to store glpi uploads." +msgstr "Le répertoire de téléchargement pour gpli '%s/glpi' est manquant." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:133 +msgid "There is already a file with the same name uploaded." +msgstr "Il existe déjà un fichier avec ce nom." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:137 +#, php-format +msgid "Can't create file '%s'." +msgstr "Impossible de créer le fichier '%s'." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:181 +msgid "File is available." +msgstr "Le fichier est disponible." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:183 +msgid "File is not readable, possibly the file is missing." +msgstr "Le fichier n'est pas lisible, il est probablement manquant." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:186 +msgid "Currently no file uploaded." +msgstr "Pas de fichier téléchargé." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:198 +msgid "Mime" +msgstr "Mime" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:201 +msgid "This table displays all available attachments." +msgstr "Ce tableau montre tout les fichiers attachés disponibles." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:218 +msgid "empty" +msgstr "vide" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:255 +msgid "Create new attachment" +msgstr "Créer un nouveau fichier attaché" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:256 +msgid "New Attachment" +msgstr "Nouveau document lié" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:349 +msgid "This name is already in use." +msgstr "Le nom spécifié est déjà utilisé." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:352 +msgid "Please specify a valid name for this attachment." +msgstr "Veuillez spécifier un nom valide pour ce document lié." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:230 +msgid "" +"This server has inventory features enabled. You can disable them by clicking " +"below." +msgstr "" +"Ce serveur à l'extension inventaire activée. Vous pouvez la désactiver en " +"cliquant sur le bouton ci-dessous." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:233 +msgid "" +"This server has inventory features disabled. You can enable them by clicking " +"below." +msgstr "" +"Ce serveur à l'extension d'inventaire désactivé. Vous pouvez l'activer en " +"cliquant sur le bouton ci-dessous." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:256 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:294 +#, php-format +msgid "" +"Can't rename given printer type to '%s', because this type name already " +"exists." +msgstr "" +"Impossible de renommer le type d'imprimante en '%s', ce type existe déjà." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:308 +#, php-format +msgid "Can't delete printer type, it is still in use by '%s'." +msgstr "" +"Impossible d'effacer ce type d'imprimante, il est encore utilisé par '%s'" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:785 +msgid "since" +msgstr "depuis" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:796 +msgid "Printer inventory extension" +msgstr "Ajouter une extension d'inventaire d'imprimante" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:804 +msgid "Supports serial interface" +msgstr "Supporte une Interface série" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:805 +msgid "Supports parallel interface" +msgstr "Supporte une interface parallèle" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:806 +msgid "Supports usb interface" +msgstr "Supporte une interface usb" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:816 +msgid "Cartridge settings" +msgstr "Paramètre des cartouches" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:6 +msgid "List of users" +msgstr "Liste des utilisateurs" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:23 +msgid "" +"This dialog allows you to select a user as technical responsible person." +msgstr "" +"Ce dialogue vous permet de désigner un utilisateur comme personne " +"responsable." + +#: admin/systems/services/glpi/glpiSelectUser.tpl:35 +msgid "Display users matching" +msgstr "Afficher les utilisateurs correspondants" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:37 +msgid "Regular expression for matching user names" +msgstr "Expression régulière concordant avec les noms des utilisateurs" + +#: admin/systems/services/glpi/glpi_edit_os.tpl:1 +msgid "Manage OS-types" +msgstr "Gérer les types de systèmes d'exploitation" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:53 +#, php-format +msgid "" +"You can't delete this manufacturer, it is still in use by these system(s) '%" +"s'" +msgstr "" +"Vous ne pouvez pas effacer ce fournisseur, il est utilisé actuellement par ce" +"(s) système(s) '%s'" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:99 +msgid "Please specify a name." +msgstr "Veuillez indiquer un nom." + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:108 +#: admin/systems/services/glpi/class_glpiManufacturer.inc:114 +msgid "Specified name is already in use, please choose another one." +msgstr "Le nom indiqué est déjà utilisé, veuillez en choisir un autre." + +#: admin/systems/services/glpi/glpi_edit_type.tpl:1 +msgid "Manage System-types" +msgstr "Gérer le type de système" diff --git a/trunk/gosa-plugins/glpi/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/glpi/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..7169c38e0 --- /dev/null +++ b/trunk/gosa-plugins/glpi/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,1265 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Users" +msgstr "Utenti" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Departments" +msgstr "Dipartimenti" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:109 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:51 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:51 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:51 +#, fuzzy +msgid "Use" +msgstr "Utenti" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#, fuzzy +msgid "use" +msgstr "utenti" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Go to root department" +msgstr "Vai al dipartimento base" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Root" +msgstr "Root" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Go up one department" +msgstr "Sali di dipartimento" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Up" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Go to users department" +msgstr "Vai agli utenti del dipartimento" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Home" +msgstr "Home" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +msgid "Reload list" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:178 +msgid "Base" +msgstr "Base" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit department" +msgstr "Imposta dipartimento" + +#: admin/systems/services/glpi/goGlpiServer.tpl:1 +#, fuzzy +msgid "GLPI database information" +msgstr "Informazioni generali" + +#: admin/systems/services/glpi/goGlpiServer.tpl:4 +msgid "Logging DB user" +msgstr "" + +#: admin/systems/services/glpi/goGlpiServer.tpl:12 +#: admin/systems/services/glpi/class_goGlpiServer.inc:102 +msgid "Password" +msgstr "Password" + +#: admin/systems/services/glpi/goGlpiServer.tpl:20 +#: admin/systems/services/glpi/class_goGlpiServer.inc:101 +#, fuzzy +msgid "Database" +msgstr "Database" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:8 +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:29 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:7 +#: admin/systems/services/glpi/glpi_edit_os.tpl:9 +#: admin/systems/services/glpi/glpi_edit_os.tpl:28 +#: admin/systems/services/glpi/glpi_edit_type.tpl:9 +#: admin/systems/services/glpi/glpi_edit_type.tpl:28 +#, fuzzy +msgid "Rename" +msgstr "Cognome" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:14 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:81 +#: admin/systems/services/glpi/glpiManufacturer.tpl:13 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:13 +#: admin/systems/services/glpi/glpi_edit_os.tpl:15 +#: admin/systems/services/glpi/glpi_edit_type.tpl:15 +#, fuzzy +msgid "Close" +msgstr "Scegli" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:25 +#: admin/systems/services/glpi/glpi_edit_os.tpl:24 +#: admin/systems/services/glpi/glpi_edit_type.tpl:24 +#, fuzzy +msgid "Please enter a new name" +msgstr "Inserisci la URI del server LDAP" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:2 +#, fuzzy +msgid "Attachment" +msgstr "Argomenti" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:10 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:7 +#: admin/systems/services/glpi/glpi_devices.tpl:10 +#: admin/systems/services/glpi/glpi_devices.tpl:105 +#: admin/systems/services/glpi/glpi_devices.tpl:146 +#: admin/systems/services/glpi/glpi_devices.tpl:201 +#: admin/systems/services/glpi/glpi_devices.tpl:257 +#: admin/systems/services/glpi/glpi_devices.tpl:315 +#: admin/systems/services/glpi/glpi_devices.tpl:379 +#: admin/systems/services/glpi/glpi_devices.tpl:451 +#: admin/systems/services/glpi/glpi_devices.tpl:515 +#: admin/systems/services/glpi/glpi_devices.tpl:562 +#: admin/systems/services/glpi/glpi_devices.tpl:615 +#: admin/systems/services/glpi/glpi_devices.tpl:669 +#: admin/systems/services/glpi/glpi_devices.tpl:715 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:7 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:197 +msgid "Name" +msgstr "Cognome" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:18 +#: admin/systems/services/glpi/glpi_devices.tpl:112 +#: admin/systems/services/glpi/glpi_devices.tpl:153 +#: admin/systems/services/glpi/glpi_devices.tpl:208 +#: admin/systems/services/glpi/glpi_devices.tpl:264 +#: admin/systems/services/glpi/glpi_devices.tpl:322 +#: admin/systems/services/glpi/glpi_devices.tpl:386 +#: admin/systems/services/glpi/glpi_devices.tpl:458 +#: admin/systems/services/glpi/glpi_devices.tpl:522 +#: admin/systems/services/glpi/glpi_devices.tpl:569 +#: admin/systems/services/glpi/glpi_devices.tpl:622 +#: admin/systems/services/glpi/glpi_devices.tpl:676 +#: admin/systems/services/glpi/glpi_devices.tpl:722 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:25 +#: admin/systems/services/glpi/class_glpiAccount.inc:803 +#: admin/systems/services/glpi/glpi.tpl:79 +#, fuzzy +msgid "Comment" +msgstr "Contenuti" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:30 +msgid "File" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:33 +msgid "Upload" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:38 +msgid "Status" +msgstr "Stato" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:46 +#, fuzzy +msgid "Filename" +msgstr "Cognome" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:54 +#, fuzzy +msgid "Mime-type" +msgstr "Tipo" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:104 +msgid "Can't delete this entry, it is still in use." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:268 +#: admin/systems/services/glpi/class_glpiAccount.inc:656 +#: admin/systems/services/glpi/class_glpiAccount.inc:671 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:633 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:648 +msgid "N/A" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:286 +#, fuzzy +msgid "The selected name is already in use." +msgstr "L'indirizzo principale inserito è già in uso." + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:92 +#, fuzzy +msgid "cartridge" +msgstr "Dispositivi del client" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:111 +#, php-format +msgid "" +"You can't delete this cartridge type, it is still in use by this printer(s) " +"'%s'." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:158 +msgid "Cartridges" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:159 +msgid "Action" +msgstr "Azione" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:163 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:187 +#: admin/systems/services/glpi/glpiPrinter.tpl:88 +#: admin/systems/services/glpi/glpiPrinter.tpl:99 +#: admin/systems/services/glpi/glpiManufacturer.tpl:7 +#: admin/systems/services/glpi/glpi.tpl:61 +#: admin/systems/services/glpi/glpi.tpl:71 +#: admin/systems/services/glpi/glpi.tpl:106 +msgid "Edit" +msgstr "Modifica" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:164 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:188 +msgid "Delete" +msgstr "Rimuovi" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +#, fuzzy +msgid "New monitor" +msgstr "Nuova password" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +#, fuzzy +msgid "M" +msgstr "Mb" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:1 +#, fuzzy +msgid "Add/Edit manufacturer" +msgstr "Modifica contatto" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:14 +#, fuzzy +msgid "Website" +msgstr "scrivere" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:21 +msgid "Address" +msgstr "Indirizzo" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:32 +msgid "Phone number" +msgstr "Numero di telefono" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:39 +msgid "Fax" +msgstr "Fax" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:46 +msgid "Email" +msgstr "Indirizzo email" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:53 +#: admin/systems/services/glpi/glpi_devices.tpl:17 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:22 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:808 +#, fuzzy +msgid "Comments" +msgstr "Contenuti" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:88 +#, php-format +msgid "Internal Error can't create device of type '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:108 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:110 +#, fuzzy +msgid "glpi device" +msgstr "Dispositivi" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:112 +msgid "Can't detect object name." +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:133 +#, php-format +msgid "" +"You can't delete this device, it is still in use by these system(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:183 +#, fuzzy +msgid "devices" +msgstr "Dispositivi" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:184 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:199 +msgid "Actions" +msgstr "Azioni" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +#, fuzzy +msgid "New mainbord" +msgstr "Nuova password" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "MB" +msgstr "Mb" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +#, fuzzy +msgid "New processor" +msgstr "Nuova password" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "P" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +#, fuzzy +msgid "New case" +msgstr "utenti" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "C" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +#, fuzzy +msgid "New network interface" +msgstr "Mostra stampanti di rete" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +#, fuzzy +msgid "NI" +msgstr "Unix" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +#, fuzzy +msgid "New ram" +msgstr "utenti" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "R" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +#, fuzzy +msgid "New hard disk" +msgstr "Server" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "HDD" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +#, fuzzy +msgid "New drive" +msgstr "Server" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +#, fuzzy +msgid "D" +msgstr "UID" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +#, fuzzy +msgid "New controller" +msgstr "Nuova conferenza" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "CS" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "New graphics card" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "GC" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +#, fuzzy +msgid "New sound card" +msgstr "Nuova password" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "SC" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "New power supply" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "PS" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +#, fuzzy +msgid "New misc device" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "OC" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:346 +#, fuzzy +msgid "You have to specify a valid name for this device." +msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:366 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:369 +#, fuzzy +msgid "This device name is already in use." +msgstr "L'indirizzo principale inserito è già in uso." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:392 +msgid "none" +msgstr "nessuno" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +#, fuzzy +msgid "None" +msgstr "nessuno" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +#, fuzzy +msgid "Other" +msgstr "Filtri" + +#: admin/systems/services/glpi/glpiPrinter.tpl:6 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:4 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:34 +#: admin/systems/services/glpi/glpi.tpl:6 +msgid "Generic" +msgstr "Generale" + +#: admin/systems/services/glpi/glpiPrinter.tpl:9 +#, fuzzy +msgid "Printer type" +msgstr "Nome della stampante" + +#: admin/systems/services/glpi/glpiPrinter.tpl:18 +#: admin/systems/services/glpi/glpiPrinter.tpl:32 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:43 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:53 +#: admin/systems/services/glpi/glpi.tpl:18 +#: admin/systems/services/glpi/glpi.tpl:32 +#: admin/systems/services/glpi/glpi.tpl:46 +msgid "edit" +msgstr "modifica" + +#: admin/systems/services/glpi/glpiPrinter.tpl:23 +#: admin/systems/services/glpi/glpi_devices.tpl:24 +#: admin/systems/services/glpi/glpi_devices.tpl:123 +#: admin/systems/services/glpi/glpi_devices.tpl:164 +#: admin/systems/services/glpi/glpi_devices.tpl:219 +#: admin/systems/services/glpi/glpi_devices.tpl:275 +#: admin/systems/services/glpi/glpi_devices.tpl:333 +#: admin/systems/services/glpi/glpi_devices.tpl:397 +#: admin/systems/services/glpi/glpi_devices.tpl:469 +#: admin/systems/services/glpi/glpi_devices.tpl:533 +#: admin/systems/services/glpi/glpi_devices.tpl:580 +#: admin/systems/services/glpi/glpi_devices.tpl:633 +#: admin/systems/services/glpi/glpi_devices.tpl:687 +#: admin/systems/services/glpi/glpi_devices.tpl:733 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:47 +#: admin/systems/services/glpi/class_glpiAccount.inc:809 +#: admin/systems/services/glpi/glpi.tpl:37 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:812 +msgid "Manufacturer" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:39 +#, fuzzy +msgid "Supported interfaces" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/glpi/glpiPrinter.tpl:48 +#, fuzzy +msgid "Serial" +msgstr "Terminali" + +#: admin/systems/services/glpi/glpiPrinter.tpl:58 +msgid "Parallel" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:68 +msgid "USB" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:80 +#: admin/systems/services/glpi/glpi.tpl:52 +#, fuzzy +msgid "Contacts" +msgstr "Contatto" + +#: admin/systems/services/glpi/glpiPrinter.tpl:83 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:57 +#: admin/systems/services/glpi/class_glpiAccount.inc:802 +#: admin/systems/services/glpi/glpi.tpl:66 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:807 +msgid "Technical responsible" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:94 +#: admin/systems/services/glpi/class_glpiAccount.inc:806 +#: admin/systems/services/glpi/glpi.tpl:56 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:810 +#, fuzzy +msgid "Contact person" +msgstr "Contatto" + +#: admin/systems/services/glpi/glpiPrinter.tpl:107 +#: admin/systems/services/glpi/class_glpiAccount.inc:810 +#: admin/systems/services/glpi/glpi.tpl:117 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:814 +#, fuzzy +msgid "Attachments" +msgstr "Argomenti" + +#: admin/systems/services/glpi/glpiPrinter.tpl:127 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:20 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:20 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:20 +#: admin/systems/services/glpi/glpiSelectUser.tpl:20 +msgid "Information" +msgstr "Informazioni" + +#: admin/systems/services/glpi/glpiPrinter.tpl:139 +#, fuzzy +msgid "Installed cartridges" +msgstr "Dispositivi del client" + +#: admin/systems/services/glpi/glpiPrinter.tpl:152 +#: admin/systems/services/glpi/glpiManufacturer.tpl:8 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/systems/services/glpi/glpi_devices.tpl:2 +#, fuzzy +msgid "Add/Edit monitor" +msgstr "Modifica contatto" + +#: admin/systems/services/glpi/glpi_devices.tpl:33 +#, fuzzy +msgid "Monitor size" +msgstr "Dimensione quota" + +#: admin/systems/services/glpi/glpi_devices.tpl:36 +#, fuzzy +msgid "Inch" +msgstr "Francese" + +#: admin/systems/services/glpi/glpi_devices.tpl:44 +msgid "Integrated microphone" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:47 +#: admin/systems/services/glpi/glpi_devices.tpl:55 +#: admin/systems/services/glpi/glpi_devices.tpl:63 +#: admin/systems/services/glpi/glpi_devices.tpl:71 +#: admin/systems/services/glpi/glpi_devices.tpl:176 +#: admin/systems/services/glpi/glpi_devices.tpl:296 +#: admin/systems/services/glpi/glpi_devices.tpl:361 +#, fuzzy +msgid "Yes" +msgstr "Sistemi" + +#: admin/systems/services/glpi/glpi_devices.tpl:48 +#: admin/systems/services/glpi/glpi_devices.tpl:56 +#: admin/systems/services/glpi/glpi_devices.tpl:64 +#: admin/systems/services/glpi/glpi_devices.tpl:72 +#: admin/systems/services/glpi/glpi_devices.tpl:177 +#: admin/systems/services/glpi/glpi_devices.tpl:297 +#: admin/systems/services/glpi/glpi_devices.tpl:362 +#, fuzzy +msgid "No" +msgstr "nessuno" + +#: admin/systems/services/glpi/glpi_devices.tpl:52 +msgid "Integrated speakers" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:60 +msgid "Sub-D" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:68 +msgid "BNC" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:76 +#, fuzzy +msgid "Serial number" +msgstr "Numero di telefono" + +#: admin/systems/services/glpi/glpi_devices.tpl:83 +#, fuzzy +msgid "Additional serial number" +msgstr "Numero seriale del certificato" + +#: admin/systems/services/glpi/glpi_devices.tpl:97 +#, fuzzy +msgid "Add/Edit other device" +msgstr "Dispositivi del client" + +#: admin/systems/services/glpi/glpi_devices.tpl:138 +msgid "Add/Edit power supply" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:173 +msgid "Atx" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:181 +#, fuzzy +msgid "Power" +msgstr "Pager" + +#: admin/systems/services/glpi/glpi_devices.tpl:193 +msgid "Add/Edit graphic card" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:228 +#: admin/systems/services/glpi/glpi_devices.tpl:284 +#: admin/systems/services/glpi/glpi_devices.tpl:349 +msgid "Interface" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:237 +#, fuzzy +msgid "Ram" +msgstr "Cognome" + +#: admin/systems/services/glpi/glpi_devices.tpl:249 +#, fuzzy +msgid "Add/Edit controller" +msgstr "Nuova conferenza" + +#: admin/systems/services/glpi/glpi_devices.tpl:293 +#: admin/systems/services/glpi/glpi_devices.tpl:420 +#: admin/systems/services/glpi/glpi_devices.tpl:485 +msgid "Size" +msgstr "Dimensione" + +#: admin/systems/services/glpi/glpi_devices.tpl:307 +msgid "Add/Edit drive" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:342 +msgid "Speed" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:358 +#, fuzzy +msgid "Writeable" +msgstr "scrivere" + +#: admin/systems/services/glpi/glpi_devices.tpl:371 +#, fuzzy +msgid "Add/Edit harddisk" +msgstr "Server" + +#: admin/systems/services/glpi/glpi_devices.tpl:406 +msgid "Rpm" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:413 +#, fuzzy +msgid "Cache" +msgstr "Annulla" + +#: admin/systems/services/glpi/glpi_devices.tpl:427 +#: admin/systems/services/glpi/glpi_devices.tpl:492 +#: admin/systems/services/glpi/glpi_devices.tpl:542 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:37 +#: admin/systems/services/glpi/class_glpiAccount.inc:808 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:811 +msgid "Type" +msgstr "Tipo" + +#: admin/systems/services/glpi/glpi_devices.tpl:443 +#, fuzzy +msgid "Add/Edit memory" +msgstr "Modifica contatto" + +#: admin/systems/services/glpi/glpi_devices.tpl:478 +#, fuzzy +msgid "Frequenz" +msgstr "Numero di telefono" + +#: admin/systems/services/glpi/glpi_devices.tpl:507 +#, fuzzy +msgid "Add/Edit sound card" +msgstr "Nuova password" + +#: admin/systems/services/glpi/glpi_devices.tpl:553 +#, fuzzy +msgid "Add/Edit network interface" +msgstr "Mostra stampanti di rete" + +#: admin/systems/services/glpi/glpi_devices.tpl:589 +#, fuzzy +msgid "MAC address" +msgstr "Indirizzo principale" + +#: admin/systems/services/glpi/glpi_devices.tpl:596 +msgid "Bandwidth" +msgstr "Banda" + +#: admin/systems/services/glpi/glpi_devices.tpl:607 +#, fuzzy +msgid "Add/Edit processor" +msgstr "Nuova password" + +#: admin/systems/services/glpi/glpi_devices.tpl:642 +#, fuzzy +msgid "Frequence" +msgstr "Numero di telefono" + +#: admin/systems/services/glpi/glpi_devices.tpl:649 +#, fuzzy +msgid "Default frequence" +msgstr "Stampante predefinita" + +#: admin/systems/services/glpi/glpi_devices.tpl:661 +msgid "Add/Edit motherboard" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:696 +#, fuzzy +msgid "Chipset" +msgstr "reset" + +#: admin/systems/services/glpi/glpi_devices.tpl:707 +#, fuzzy +msgid "Add/Edit computer case" +msgstr "Computer" + +#: admin/systems/services/glpi/glpi_devices.tpl:742 +#, fuzzy +msgid "format" +msgstr "Informazioni" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:32 +#: admin/systems/services/glpi/class_goGlpiServer.inc:87 +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +#, fuzzy +msgid "Inventory database" +msgstr "Database" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:58 +#, fuzzy +msgid "Inventory database service" +msgstr "Database" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:67 +#, fuzzy +msgid "The attribute user is empty or contains invalid characters." +msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:70 +#, fuzzy +msgid "The attribute database is empty or contains invalid characters." +msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:96 +#, fuzzy +msgid "Start" +msgstr "Avvio" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:97 +msgid "Stop" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:98 +#, fuzzy +msgid "Restart" +msgstr "Riprova" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:100 +#, fuzzy +msgid "Admin" +msgstr "DN dell'amministratore" + +#: admin/systems/services/glpi/glpiManufacturer.tpl:1 +#, fuzzy +msgid "Manage manufacturers" +msgstr "Modifica contatto" + +#: admin/systems/services/glpi/remove_glpi.tpl:2 +msgid "Warning" +msgstr "Attenzione" + +#: admin/systems/services/glpi/remove_glpi.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: admin/systems/services/glpi/remove_glpi.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your MySql database in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:14 +#, fuzzy +msgid "Reference" +msgstr "Riferimenti" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:61 +msgid "Choose" +msgstr "Scegli" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:6 +msgid "List of available cartridge type for this type of printer" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:23 +msgid "" +"This dialog allows you to create new types of cartridges, and select one or " +"more types for your printer. Cartridge types depends on the printer type you " +"have selected. For each selected cartridge type there will be a new " +"cartridge created, this allows you to select the same cartridge type for " +"more then one printer." +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:27 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:27 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:27 +#: admin/systems/services/glpi/glpiSelectUser.tpl:27 +msgid "Filters" +msgstr "Filtri" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:35 +#, fuzzy +msgid "Display cartridge types matching" +msgstr "Mostra utenti che corrispondono a" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:37 +#, fuzzy +msgid "Regular expression for matching cartridge types" +msgstr "Espressione regolare per selezionare l'indirizzo" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:6 +#, fuzzy +msgid "List of attachments" +msgstr "Lista dei dipartimenti" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:23 +msgid "" +"This dialog allow you to attach additional objects (like manuals, guides, " +"etc.) to your currently edited computer." +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:35 +#, fuzzy +msgid "Display attachments matching" +msgstr "Mosra gruppi corrispondenti a" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:37 +#, fuzzy +msgid "Regular expression for matching attachment names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:6 +#, fuzzy +msgid "List of devices" +msgstr "Lista degli utenti" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:23 +msgid "" +"This dialog allows you to attach a device to your currently edited computer." +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:35 +#, fuzzy +msgid "Display devices matching" +msgstr "Mostra gli indirizzi che corrispondono" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:37 +#, fuzzy +msgid "Regular expression for matching device names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: admin/systems/services/glpi/class_glpiAccount.inc:146 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:163 +msgid "There is no server with valid glpi database service." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:156 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:173 +msgid "Can't connect to glpi database, the php-mysql extension is missing." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:166 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:183 +#, fuzzy +msgid "Can't connect to glpi database, check configuration twice." +msgstr "Impossibile connettersi al server del database!" + +#: admin/systems/services/glpi/class_glpiAccount.inc:181 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:198 +msgid "Download of attachment failed. Attachment was not found on server." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:184 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:201 +msgid "Download of attachment failed. Not a valid attachment id." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:198 +#: admin/systems/services/glpi/class_glpiAccount.inc:204 +#: admin/systems/services/glpi/class_glpiAccount.inc:210 +msgid "This feature is not implemented yet." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:312 +msgid "Adding new sytem type failed, this system type name is already used." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:332 +#, php-format +msgid "" +"You can't delete this system type, it is still in use by these system(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:343 +#, fuzzy +msgid "Rename failed, this system type name is already used." +msgstr "L'indirizzo principale inserito è già in uso." + +#: admin/systems/services/glpi/class_glpiAccount.inc:399 +msgid "Adding new operating system failed, specifed name is already used." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:421 +#, php-format +msgid "" +"You can't delete this operating system, it is still in use by these system" +"(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:433 +#, fuzzy +msgid "Updating operating system failed, specifed name is already used." +msgstr "L'indirizzo principale inserito è già in uso." + +#: admin/systems/services/glpi/class_glpiAccount.inc:512 +#, php-format +msgid "" +"Could not add the given user, the users dn is too long, only 100 characters " +"are allowed here." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:593 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:229 +#, fuzzy +msgid "Remove inventory" +msgstr "Elimina contatto" + +#: admin/systems/services/glpi/class_glpiAccount.inc:594 +#, fuzzy +msgid "" +"This device has inventory informations enabled. You can disable them by " +"clicking below." +msgstr "Questa identià possiede estensioni Unix." + +#: admin/systems/services/glpi/class_glpiAccount.inc:596 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:232 +#, fuzzy +msgid "Add inventory" +msgstr "Aggiungi contatto" + +#: admin/systems/services/glpi/class_glpiAccount.inc:597 +#, fuzzy +msgid "" +"This device has inventory informations disabled. You can enable them by " +"clicking below." +msgstr "Questa identità non possiede estensioni Unix" + +#: admin/systems/services/glpi/class_glpiAccount.inc:692 +#: admin/systems/services/glpi/class_glpiAccount.inc:693 +msgid "Can't remove glpi account, while mysql extension is missing." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:793 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:795 +msgid "Glpi" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:794 +#, fuzzy +msgid "Inventory extension" +msgstr "Elimina foto" + +#: admin/systems/services/glpi/class_glpiAccount.inc:804 +#: admin/systems/services/glpi/glpi.tpl:23 +#, fuzzy +msgid "Operating system" +msgstr "Rimuovi" + +#: admin/systems/services/glpi/class_glpiAccount.inc:805 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:809 +msgid "Location" +msgstr "Località" + +#: admin/systems/services/glpi/class_glpiAccount.inc:807 +msgid "Model" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:811 +#, fuzzy +msgid "Peripheral devices" +msgstr "Dispositivi del client" + +#: admin/systems/services/glpi/glpi.tpl:9 +#, fuzzy +msgid "System type" +msgstr "Sistemi" + +#: admin/systems/services/glpi/glpi.tpl:96 +#, fuzzy +msgid "Installed devices" +msgstr "Dispositivi del client" + +#: admin/systems/services/glpi/glpi.tpl:112 +#, fuzzy +msgid "Trading" +msgstr "Ricerca" + +#: admin/systems/services/glpi/glpi.tpl:113 +#, fuzzy +msgid "Software" +msgstr "Stato" + +#: admin/systems/services/glpi/glpi.tpl:114 +#, fuzzy +msgid "Contracts" +msgstr "Contatto" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:68 +#, fuzzy +msgid "attachment" +msgstr "Argomenti" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:107 +#, php-format +msgid "" +"You can't delete this attachment, it is still in use by these system(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:119 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:123 +#, fuzzy +msgid "There is no valid file uploaded." +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:126 +msgid "Upload wasn't successfull." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:129 +#, php-format +msgid "Missing directory '%s/glpi/' to store glpi uploads." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:133 +#, fuzzy +msgid "There is already a file with the same name uploaded." +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:137 +#, fuzzy, php-format +msgid "Can't create file '%s'." +msgstr "Rimuovi" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:181 +msgid "File is available." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:183 +msgid "File is not readable, possibly the file is missing." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:186 +msgid "Currently no file uploaded." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:198 +#, fuzzy +msgid "Mime" +msgstr "Cellulare" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:201 +msgid "This table displays all available attachments." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:218 +#, fuzzy +msgid "empty" +msgstr "Riprova" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:255 +#, fuzzy +msgid "Create new attachment" +msgstr "Lista dei dipartimenti" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:256 +#, fuzzy +msgid "New Attachment" +msgstr "Argomenti" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:349 +#, fuzzy +msgid "This name is already in use." +msgstr "L'indirizzo principale inserito è già in uso." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:352 +#, fuzzy +msgid "Please specify a valid name for this attachment." +msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:230 +#, fuzzy +msgid "" +"This server has inventory features enabled. You can disable them by clicking " +"below." +msgstr "Questa identià possiede estensioni Unix." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:233 +#, fuzzy +msgid "" +"This server has inventory features disabled. You can enable them by clicking " +"below." +msgstr "Questa identità non possiede estensioni Unix" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:256 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:294 +#, php-format +msgid "" +"Can't rename given printer type to '%s', because this type name already " +"exists." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:308 +#, php-format +msgid "Can't delete printer type, it is still in use by '%s'." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:785 +msgid "since" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:796 +#, fuzzy +msgid "Printer inventory extension" +msgstr "Elimina foto" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:804 +#, fuzzy +msgid "Supports serial interface" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:805 +#, fuzzy +msgid "Supports parallel interface" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:806 +#, fuzzy +msgid "Supports usb interface" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:816 +#, fuzzy +msgid "Cartridge settings" +msgstr "Opzioni di posta dell'identità" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:6 +msgid "List of users" +msgstr "Lista degli utenti" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:23 +msgid "" +"This dialog allows you to select a user as technical responsible person." +msgstr "" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:35 +msgid "Display users matching" +msgstr "Mostra utenti che corrispondono a" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:37 +msgid "Regular expression for matching user names" +msgstr "" + +#: admin/systems/services/glpi/glpi_edit_os.tpl:1 +msgid "Manage OS-types" +msgstr "" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:53 +#, php-format +msgid "" +"You can't delete this manufacturer, it is still in use by these system(s) '%" +"s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:99 +#, fuzzy +msgid "Please specify a name." +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:108 +#: admin/systems/services/glpi/class_glpiManufacturer.inc:114 +msgid "Specified name is already in use, please choose another one." +msgstr "" + +#: admin/systems/services/glpi/glpi_edit_type.tpl:1 +#, fuzzy +msgid "Manage System-types" +msgstr "Sistemi" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Save" +#~ msgstr "Salva" diff --git a/trunk/gosa-plugins/glpi/locale/messages.po b/trunk/gosa-plugins/glpi/locale/messages.po new file mode 100644 index 000000000..59b5f23d3 --- /dev/null +++ b/trunk/gosa-plugins/glpi/locale/messages.po @@ -0,0 +1,1139 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Users" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Departments" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:109 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:51 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:51 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:51 +msgid "Use" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +msgid "use" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Go to root department" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Root" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Go up one department" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Up" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Go to users department" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Home" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +msgid "Reload list" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:178 +msgid "Base" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit department" +msgstr "" + +#: admin/systems/services/glpi/goGlpiServer.tpl:1 +msgid "GLPI database information" +msgstr "" + +#: admin/systems/services/glpi/goGlpiServer.tpl:4 +msgid "Logging DB user" +msgstr "" + +#: admin/systems/services/glpi/goGlpiServer.tpl:12 +#: admin/systems/services/glpi/class_goGlpiServer.inc:102 +msgid "Password" +msgstr "" + +#: admin/systems/services/glpi/goGlpiServer.tpl:20 +#: admin/systems/services/glpi/class_goGlpiServer.inc:101 +msgid "Database" +msgstr "" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:8 +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:29 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:7 +#: admin/systems/services/glpi/glpi_edit_os.tpl:9 +#: admin/systems/services/glpi/glpi_edit_os.tpl:28 +#: admin/systems/services/glpi/glpi_edit_type.tpl:9 +#: admin/systems/services/glpi/glpi_edit_type.tpl:28 +msgid "Rename" +msgstr "" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:14 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:81 +#: admin/systems/services/glpi/glpiManufacturer.tpl:13 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:13 +#: admin/systems/services/glpi/glpi_edit_os.tpl:15 +#: admin/systems/services/glpi/glpi_edit_type.tpl:15 +msgid "Close" +msgstr "" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:25 +#: admin/systems/services/glpi/glpi_edit_os.tpl:24 +#: admin/systems/services/glpi/glpi_edit_type.tpl:24 +msgid "Please enter a new name" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:2 +msgid "Attachment" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:10 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:7 +#: admin/systems/services/glpi/glpi_devices.tpl:10 +#: admin/systems/services/glpi/glpi_devices.tpl:105 +#: admin/systems/services/glpi/glpi_devices.tpl:146 +#: admin/systems/services/glpi/glpi_devices.tpl:201 +#: admin/systems/services/glpi/glpi_devices.tpl:257 +#: admin/systems/services/glpi/glpi_devices.tpl:315 +#: admin/systems/services/glpi/glpi_devices.tpl:379 +#: admin/systems/services/glpi/glpi_devices.tpl:451 +#: admin/systems/services/glpi/glpi_devices.tpl:515 +#: admin/systems/services/glpi/glpi_devices.tpl:562 +#: admin/systems/services/glpi/glpi_devices.tpl:615 +#: admin/systems/services/glpi/glpi_devices.tpl:669 +#: admin/systems/services/glpi/glpi_devices.tpl:715 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:7 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:197 +msgid "Name" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:18 +#: admin/systems/services/glpi/glpi_devices.tpl:112 +#: admin/systems/services/glpi/glpi_devices.tpl:153 +#: admin/systems/services/glpi/glpi_devices.tpl:208 +#: admin/systems/services/glpi/glpi_devices.tpl:264 +#: admin/systems/services/glpi/glpi_devices.tpl:322 +#: admin/systems/services/glpi/glpi_devices.tpl:386 +#: admin/systems/services/glpi/glpi_devices.tpl:458 +#: admin/systems/services/glpi/glpi_devices.tpl:522 +#: admin/systems/services/glpi/glpi_devices.tpl:569 +#: admin/systems/services/glpi/glpi_devices.tpl:622 +#: admin/systems/services/glpi/glpi_devices.tpl:676 +#: admin/systems/services/glpi/glpi_devices.tpl:722 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:25 +#: admin/systems/services/glpi/class_glpiAccount.inc:803 +#: admin/systems/services/glpi/glpi.tpl:79 +msgid "Comment" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:30 +msgid "File" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:33 +msgid "Upload" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:38 +msgid "Status" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:46 +msgid "Filename" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:54 +msgid "Mime-type" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:104 +msgid "Can't delete this entry, it is still in use." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:268 +#: admin/systems/services/glpi/class_glpiAccount.inc:656 +#: admin/systems/services/glpi/class_glpiAccount.inc:671 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:633 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:648 +msgid "N/A" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:286 +msgid "The selected name is already in use." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:92 +msgid "cartridge" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:111 +#, php-format +msgid "" +"You can't delete this cartridge type, it is still in use by this printer(s) " +"'%s'." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:158 +msgid "Cartridges" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:159 +msgid "Action" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:163 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:187 +#: admin/systems/services/glpi/glpiPrinter.tpl:88 +#: admin/systems/services/glpi/glpiPrinter.tpl:99 +#: admin/systems/services/glpi/glpiManufacturer.tpl:7 +#: admin/systems/services/glpi/glpi.tpl:61 +#: admin/systems/services/glpi/glpi.tpl:71 +#: admin/systems/services/glpi/glpi.tpl:106 +msgid "Edit" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:164 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:188 +msgid "Delete" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "New monitor" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "M" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:1 +msgid "Add/Edit manufacturer" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:14 +msgid "Website" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:21 +msgid "Address" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:32 +msgid "Phone number" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:39 +msgid "Fax" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:46 +msgid "Email" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:53 +#: admin/systems/services/glpi/glpi_devices.tpl:17 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:22 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:808 +msgid "Comments" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:88 +#, php-format +msgid "Internal Error can't create device of type '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:108 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:110 +msgid "glpi device" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:112 +msgid "Can't detect object name." +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:133 +#, php-format +msgid "" +"You can't delete this device, it is still in use by these system(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:183 +msgid "devices" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:184 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:199 +msgid "Actions" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "New mainbord" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "MB" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "New processor" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "P" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "New case" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "C" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "New network interface" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "NI" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "New ram" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "R" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "New hard disk" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "HDD" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "New drive" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "D" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "New controller" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "CS" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "New graphics card" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "GC" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "New sound card" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "SC" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "New power supply" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "PS" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "New misc device" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "OC" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:346 +msgid "You have to specify a valid name for this device." +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:366 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:369 +msgid "This device name is already in use." +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:392 +msgid "none" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "None" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "Other" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:6 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:4 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:34 +#: admin/systems/services/glpi/glpi.tpl:6 +msgid "Generic" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:9 +msgid "Printer type" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:18 +#: admin/systems/services/glpi/glpiPrinter.tpl:32 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:43 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:53 +#: admin/systems/services/glpi/glpi.tpl:18 +#: admin/systems/services/glpi/glpi.tpl:32 +#: admin/systems/services/glpi/glpi.tpl:46 +msgid "edit" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:23 +#: admin/systems/services/glpi/glpi_devices.tpl:24 +#: admin/systems/services/glpi/glpi_devices.tpl:123 +#: admin/systems/services/glpi/glpi_devices.tpl:164 +#: admin/systems/services/glpi/glpi_devices.tpl:219 +#: admin/systems/services/glpi/glpi_devices.tpl:275 +#: admin/systems/services/glpi/glpi_devices.tpl:333 +#: admin/systems/services/glpi/glpi_devices.tpl:397 +#: admin/systems/services/glpi/glpi_devices.tpl:469 +#: admin/systems/services/glpi/glpi_devices.tpl:533 +#: admin/systems/services/glpi/glpi_devices.tpl:580 +#: admin/systems/services/glpi/glpi_devices.tpl:633 +#: admin/systems/services/glpi/glpi_devices.tpl:687 +#: admin/systems/services/glpi/glpi_devices.tpl:733 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:47 +#: admin/systems/services/glpi/class_glpiAccount.inc:809 +#: admin/systems/services/glpi/glpi.tpl:37 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:812 +msgid "Manufacturer" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:39 +msgid "Supported interfaces" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:48 +msgid "Serial" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:58 +msgid "Parallel" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:68 +msgid "USB" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:80 +#: admin/systems/services/glpi/glpi.tpl:52 +msgid "Contacts" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:83 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:57 +#: admin/systems/services/glpi/class_glpiAccount.inc:802 +#: admin/systems/services/glpi/glpi.tpl:66 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:807 +msgid "Technical responsible" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:94 +#: admin/systems/services/glpi/class_glpiAccount.inc:806 +#: admin/systems/services/glpi/glpi.tpl:56 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:810 +msgid "Contact person" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:107 +#: admin/systems/services/glpi/class_glpiAccount.inc:810 +#: admin/systems/services/glpi/glpi.tpl:117 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:814 +msgid "Attachments" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:127 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:20 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:20 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:20 +#: admin/systems/services/glpi/glpiSelectUser.tpl:20 +msgid "Information" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:139 +msgid "Installed cartridges" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:152 +#: admin/systems/services/glpi/glpiManufacturer.tpl:8 +msgid "Remove" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:2 +msgid "Add/Edit monitor" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:33 +msgid "Monitor size" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:36 +msgid "Inch" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:44 +msgid "Integrated microphone" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:47 +#: admin/systems/services/glpi/glpi_devices.tpl:55 +#: admin/systems/services/glpi/glpi_devices.tpl:63 +#: admin/systems/services/glpi/glpi_devices.tpl:71 +#: admin/systems/services/glpi/glpi_devices.tpl:176 +#: admin/systems/services/glpi/glpi_devices.tpl:296 +#: admin/systems/services/glpi/glpi_devices.tpl:361 +msgid "Yes" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:48 +#: admin/systems/services/glpi/glpi_devices.tpl:56 +#: admin/systems/services/glpi/glpi_devices.tpl:64 +#: admin/systems/services/glpi/glpi_devices.tpl:72 +#: admin/systems/services/glpi/glpi_devices.tpl:177 +#: admin/systems/services/glpi/glpi_devices.tpl:297 +#: admin/systems/services/glpi/glpi_devices.tpl:362 +msgid "No" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:52 +msgid "Integrated speakers" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:60 +msgid "Sub-D" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:68 +msgid "BNC" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:76 +msgid "Serial number" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:83 +msgid "Additional serial number" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:97 +msgid "Add/Edit other device" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:138 +msgid "Add/Edit power supply" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:173 +msgid "Atx" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:181 +msgid "Power" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:193 +msgid "Add/Edit graphic card" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:228 +#: admin/systems/services/glpi/glpi_devices.tpl:284 +#: admin/systems/services/glpi/glpi_devices.tpl:349 +msgid "Interface" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:237 +msgid "Ram" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:249 +msgid "Add/Edit controller" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:293 +#: admin/systems/services/glpi/glpi_devices.tpl:420 +#: admin/systems/services/glpi/glpi_devices.tpl:485 +msgid "Size" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:307 +msgid "Add/Edit drive" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:342 +msgid "Speed" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:358 +msgid "Writeable" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:371 +msgid "Add/Edit harddisk" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:406 +msgid "Rpm" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:413 +msgid "Cache" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:427 +#: admin/systems/services/glpi/glpi_devices.tpl:492 +#: admin/systems/services/glpi/glpi_devices.tpl:542 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:37 +#: admin/systems/services/glpi/class_glpiAccount.inc:808 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:811 +msgid "Type" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:443 +msgid "Add/Edit memory" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:478 +msgid "Frequenz" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:507 +msgid "Add/Edit sound card" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:553 +msgid "Add/Edit network interface" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:589 +msgid "MAC address" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:596 +msgid "Bandwidth" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:607 +msgid "Add/Edit processor" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:642 +msgid "Frequence" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:649 +msgid "Default frequence" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:661 +msgid "Add/Edit motherboard" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:696 +msgid "Chipset" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:707 +msgid "Add/Edit computer case" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:742 +msgid "format" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:32 +#: admin/systems/services/glpi/class_goGlpiServer.inc:87 +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Inventory database" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:58 +msgid "Inventory database service" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:67 +msgid "The attribute user is empty or contains invalid characters." +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:70 +msgid "The attribute database is empty or contains invalid characters." +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Services" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:96 +msgid "Start" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:97 +msgid "Stop" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:98 +msgid "Restart" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:100 +msgid "Admin" +msgstr "" + +#: admin/systems/services/glpi/glpiManufacturer.tpl:1 +msgid "Manage manufacturers" +msgstr "" + +#: admin/systems/services/glpi/remove_glpi.tpl:2 +msgid "Warning" +msgstr "" + +#: admin/systems/services/glpi/remove_glpi.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: admin/systems/services/glpi/remove_glpi.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your MySql database in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:14 +msgid "Reference" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:61 +msgid "Choose" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:6 +msgid "List of available cartridge type for this type of printer" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:23 +msgid "" +"This dialog allows you to create new types of cartridges, and select one or " +"more types for your printer. Cartridge types depends on the printer type you " +"have selected. For each selected cartridge type there will be a new " +"cartridge created, this allows you to select the same cartridge type for " +"more then one printer." +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:27 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:27 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:27 +#: admin/systems/services/glpi/glpiSelectUser.tpl:27 +msgid "Filters" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:35 +msgid "Display cartridge types matching" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:37 +msgid "Regular expression for matching cartridge types" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:6 +msgid "List of attachments" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:23 +msgid "" +"This dialog allow you to attach additional objects (like manuals, guides, " +"etc.) to your currently edited computer." +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:35 +msgid "Display attachments matching" +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:37 +msgid "Regular expression for matching attachment names" +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:6 +msgid "List of devices" +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:23 +msgid "" +"This dialog allows you to attach a device to your currently edited computer." +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:35 +msgid "Display devices matching" +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:37 +msgid "Regular expression for matching device names" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:146 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:163 +msgid "There is no server with valid glpi database service." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:156 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:173 +msgid "Can't connect to glpi database, the php-mysql extension is missing." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:166 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:183 +msgid "Can't connect to glpi database, check configuration twice." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:181 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:198 +msgid "Download of attachment failed. Attachment was not found on server." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:184 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:201 +msgid "Download of attachment failed. Not a valid attachment id." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:198 +#: admin/systems/services/glpi/class_glpiAccount.inc:204 +#: admin/systems/services/glpi/class_glpiAccount.inc:210 +msgid "This feature is not implemented yet." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:312 +msgid "Adding new sytem type failed, this system type name is already used." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:332 +#, php-format +msgid "" +"You can't delete this system type, it is still in use by these system(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:343 +msgid "Rename failed, this system type name is already used." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:399 +msgid "Adding new operating system failed, specifed name is already used." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:421 +#, php-format +msgid "" +"You can't delete this operating system, it is still in use by these system" +"(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:433 +msgid "Updating operating system failed, specifed name is already used." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:512 +#, php-format +msgid "" +"Could not add the given user, the users dn is too long, only 100 characters " +"are allowed here." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:593 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:229 +msgid "Remove inventory" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:594 +msgid "" +"This device has inventory informations enabled. You can disable them by " +"clicking below." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:596 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:232 +msgid "Add inventory" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:597 +msgid "" +"This device has inventory informations disabled. You can enable them by " +"clicking below." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:692 +#: admin/systems/services/glpi/class_glpiAccount.inc:693 +msgid "Can't remove glpi account, while mysql extension is missing." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:793 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:795 +msgid "Glpi" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:794 +msgid "Inventory extension" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:804 +#: admin/systems/services/glpi/glpi.tpl:23 +msgid "Operating system" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:805 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:809 +msgid "Location" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:807 +msgid "Model" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:811 +msgid "Peripheral devices" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:9 +msgid "System type" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:96 +msgid "Installed devices" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:112 +msgid "Trading" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:113 +msgid "Software" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:114 +msgid "Contracts" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:68 +msgid "attachment" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:107 +#, php-format +msgid "" +"You can't delete this attachment, it is still in use by these system(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:119 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:123 +msgid "There is no valid file uploaded." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:126 +msgid "Upload wasn't successfull." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:129 +#, php-format +msgid "Missing directory '%s/glpi/' to store glpi uploads." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:133 +msgid "There is already a file with the same name uploaded." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:137 +#, php-format +msgid "Can't create file '%s'." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:181 +msgid "File is available." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:183 +msgid "File is not readable, possibly the file is missing." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:186 +msgid "Currently no file uploaded." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:198 +msgid "Mime" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:201 +msgid "This table displays all available attachments." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:218 +msgid "empty" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:255 +msgid "Create new attachment" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:256 +msgid "New Attachment" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:349 +msgid "This name is already in use." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:352 +msgid "Please specify a valid name for this attachment." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:230 +msgid "" +"This server has inventory features enabled. You can disable them by clicking " +"below." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:233 +msgid "" +"This server has inventory features disabled. You can enable them by clicking " +"below." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:256 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:294 +#, php-format +msgid "" +"Can't rename given printer type to '%s', because this type name already " +"exists." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:308 +#, php-format +msgid "Can't delete printer type, it is still in use by '%s'." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:785 +msgid "since" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:796 +msgid "Printer inventory extension" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:804 +msgid "Supports serial interface" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:805 +msgid "Supports parallel interface" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:806 +msgid "Supports usb interface" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:816 +msgid "Cartridge settings" +msgstr "" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:6 +msgid "List of users" +msgstr "" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:23 +msgid "" +"This dialog allows you to select a user as technical responsible person." +msgstr "" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:35 +msgid "Display users matching" +msgstr "" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:37 +msgid "Regular expression for matching user names" +msgstr "" + +#: admin/systems/services/glpi/glpi_edit_os.tpl:1 +msgid "Manage OS-types" +msgstr "" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:53 +#, php-format +msgid "" +"You can't delete this manufacturer, it is still in use by these system(s) '%" +"s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:99 +msgid "Please specify a name." +msgstr "" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:108 +#: admin/systems/services/glpi/class_glpiManufacturer.inc:114 +msgid "Specified name is already in use, please choose another one." +msgstr "" + +#: admin/systems/services/glpi/glpi_edit_type.tpl:1 +msgid "Manage System-types" +msgstr "" diff --git a/trunk/gosa-plugins/glpi/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/glpi/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ebff290c6 --- /dev/null +++ b/trunk/gosa-plugins/glpi/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,1232 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Users" +msgstr "Gebruikers" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Departments" +msgstr "Afdelingen" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:109 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:51 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:51 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:51 +msgid "Use" +msgstr "Gebruik" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +msgid "use" +msgstr "gebruik" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Go to root department" +msgstr "Ga naar basis afdelingen" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Root" +msgstr "Basis" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Go up one department" +msgstr "Ga een afdeling omhoog" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Up" +msgstr "Omhoog" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Go to users department" +msgstr "Ga naar gebruikers afdeling" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Home" +msgstr "Home" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +msgid "Reload list" +msgstr "Lijst herladen" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit" +msgstr "Verwerk" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:178 +msgid "Base" +msgstr "Basis" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit department" +msgstr "Verwerk afdeling" + +#: admin/systems/services/glpi/goGlpiServer.tpl:1 +#, fuzzy +msgid "GLPI database information" +msgstr "Algemene gebruikersinformatie" + +#: admin/systems/services/glpi/goGlpiServer.tpl:4 +msgid "Logging DB user" +msgstr "Log DB gebruiker" + +#: admin/systems/services/glpi/goGlpiServer.tpl:12 +#: admin/systems/services/glpi/class_goGlpiServer.inc:102 +msgid "Password" +msgstr "Wachtwoord" + +#: admin/systems/services/glpi/goGlpiServer.tpl:20 +#: admin/systems/services/glpi/class_goGlpiServer.inc:101 +msgid "Database" +msgstr "Database" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:8 +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:29 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:7 +#: admin/systems/services/glpi/glpi_edit_os.tpl:9 +#: admin/systems/services/glpi/glpi_edit_os.tpl:28 +#: admin/systems/services/glpi/glpi_edit_type.tpl:9 +#: admin/systems/services/glpi/glpi_edit_type.tpl:28 +msgid "Rename" +msgstr "Hernoemen" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:14 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:81 +#: admin/systems/services/glpi/glpiManufacturer.tpl:13 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:13 +#: admin/systems/services/glpi/glpi_edit_os.tpl:15 +#: admin/systems/services/glpi/glpi_edit_type.tpl:15 +msgid "Close" +msgstr "Sluiten" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:25 +#: admin/systems/services/glpi/glpi_edit_os.tpl:24 +#: admin/systems/services/glpi/glpi_edit_type.tpl:24 +msgid "Please enter a new name" +msgstr "Geef a.u.b. een nieuwe naam op" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:2 +msgid "Attachment" +msgstr "Bijlage" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:10 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:7 +#: admin/systems/services/glpi/glpi_devices.tpl:10 +#: admin/systems/services/glpi/glpi_devices.tpl:105 +#: admin/systems/services/glpi/glpi_devices.tpl:146 +#: admin/systems/services/glpi/glpi_devices.tpl:201 +#: admin/systems/services/glpi/glpi_devices.tpl:257 +#: admin/systems/services/glpi/glpi_devices.tpl:315 +#: admin/systems/services/glpi/glpi_devices.tpl:379 +#: admin/systems/services/glpi/glpi_devices.tpl:451 +#: admin/systems/services/glpi/glpi_devices.tpl:515 +#: admin/systems/services/glpi/glpi_devices.tpl:562 +#: admin/systems/services/glpi/glpi_devices.tpl:615 +#: admin/systems/services/glpi/glpi_devices.tpl:669 +#: admin/systems/services/glpi/glpi_devices.tpl:715 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:7 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:197 +msgid "Name" +msgstr "Naam" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:18 +#: admin/systems/services/glpi/glpi_devices.tpl:112 +#: admin/systems/services/glpi/glpi_devices.tpl:153 +#: admin/systems/services/glpi/glpi_devices.tpl:208 +#: admin/systems/services/glpi/glpi_devices.tpl:264 +#: admin/systems/services/glpi/glpi_devices.tpl:322 +#: admin/systems/services/glpi/glpi_devices.tpl:386 +#: admin/systems/services/glpi/glpi_devices.tpl:458 +#: admin/systems/services/glpi/glpi_devices.tpl:522 +#: admin/systems/services/glpi/glpi_devices.tpl:569 +#: admin/systems/services/glpi/glpi_devices.tpl:622 +#: admin/systems/services/glpi/glpi_devices.tpl:676 +#: admin/systems/services/glpi/glpi_devices.tpl:722 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:25 +#: admin/systems/services/glpi/class_glpiAccount.inc:803 +#: admin/systems/services/glpi/glpi.tpl:79 +msgid "Comment" +msgstr "Opmerking" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:30 +msgid "File" +msgstr "Bestand" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:33 +msgid "Upload" +msgstr "Uploaden" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:38 +msgid "Status" +msgstr "Status" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:46 +msgid "Filename" +msgstr "Bestandsnaam" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:54 +msgid "Mime-type" +msgstr "MIME-type" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:104 +msgid "Can't delete this entry, it is still in use." +msgstr "Kan dit object niet verwijderen, aangezien deze nog in gebruik is." + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:268 +#: admin/systems/services/glpi/class_glpiAccount.inc:656 +#: admin/systems/services/glpi/class_glpiAccount.inc:671 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:633 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:648 +msgid "N/A" +msgstr "Niet beschikbaar" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:286 +msgid "The selected name is already in use." +msgstr "De opgegeven naam wordt al gebruikt." + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:92 +#, fuzzy +msgid "cartridge" +msgstr "Cartridges" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:111 +#, php-format +msgid "" +"You can't delete this cartridge type, it is still in use by this printer(s) " +"'%s'." +msgstr "" +"U kunt dit cartridgetype niet verwijderen, aangezien deze nog steeds in " +"gebruik is door deze printer(s): '%s'" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:158 +msgid "Cartridges" +msgstr "Cartridges" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:159 +msgid "Action" +msgstr "Actie" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:163 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:187 +#: admin/systems/services/glpi/glpiPrinter.tpl:88 +#: admin/systems/services/glpi/glpiPrinter.tpl:99 +#: admin/systems/services/glpi/glpiManufacturer.tpl:7 +#: admin/systems/services/glpi/glpi.tpl:61 +#: admin/systems/services/glpi/glpi.tpl:71 +#: admin/systems/services/glpi/glpi.tpl:106 +msgid "Edit" +msgstr "Bewerken" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:164 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:188 +msgid "Delete" +msgstr "Verwijderen" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "New monitor" +msgstr "Nieuwe monitor" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "M" +msgstr "M" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:1 +msgid "Add/Edit manufacturer" +msgstr "Fabrikant toevoegen/bewerken" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:14 +msgid "Website" +msgstr "Website" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:21 +msgid "Address" +msgstr "Adres" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:32 +msgid "Phone number" +msgstr "Telefoonnummer" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:39 +msgid "Fax" +msgstr "Fax" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:46 +msgid "Email" +msgstr "E-mail" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:53 +#: admin/systems/services/glpi/glpi_devices.tpl:17 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:22 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:808 +msgid "Comments" +msgstr "Opmerkingen" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:88 +#, php-format +msgid "Internal Error can't create device of type '%s'" +msgstr "Interne fout. Kan apparaat van het type '%s' niet aanmaken." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:108 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:110 +#, fuzzy +msgid "glpi device" +msgstr "apparaten" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:112 +msgid "Can't detect object name." +msgstr "Kan de objectnaam niet detecteren" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:133 +#, php-format +msgid "" +"You can't delete this device, it is still in use by these system(s) '%s'" +msgstr "" +"U kunt dit apparaat niet verwijderen, aangezien deze nog steeds gebruikt " +"wordt door deze systemen: '%s'" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:183 +msgid "devices" +msgstr "apparaten" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:184 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:199 +msgid "Actions" +msgstr "Acties" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "New mainbord" +msgstr "Nieuw moederbord" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "MB" +msgstr "MB" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "New processor" +msgstr "Nieuwe processor" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "P" +msgstr "PR" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "New case" +msgstr "Nieuwe behuizing" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "C" +msgstr "C" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "New network interface" +msgstr "Nieuwe netwerk aansluiting" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "NI" +msgstr "NI" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "New ram" +msgstr "Nieuw geheugen" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "R" +msgstr "R" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "New hard disk" +msgstr "Nieuwe hardeschijf" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "HDD" +msgstr "HDD" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "New drive" +msgstr "Nieuwe schijf" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "D" +msgstr "D" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "New controller" +msgstr "Nieuwe controller" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "CS" +msgstr "CS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "New graphics card" +msgstr "Nieuwe grafische kaart" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "GC" +msgstr "GC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "New sound card" +msgstr "Nieuwe geluidskaart" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "SC" +msgstr "SC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "New power supply" +msgstr "Nieuwe voeding" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "PS" +msgstr "PS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "New misc device" +msgstr "Nieuw overig apparaat" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "OC" +msgstr "OC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:346 +msgid "You have to specify a valid name for this device." +msgstr "Geef a.u.b. een geldige naam op voor dit apparaat." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:366 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:369 +msgid "This device name is already in use." +msgstr "De opgegeven apparaat naam wordt al gebruikt." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:392 +msgid "none" +msgstr "geen" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "None" +msgstr "Geen" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "Other" +msgstr "Overige" + +#: admin/systems/services/glpi/glpiPrinter.tpl:6 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:4 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:34 +#: admin/systems/services/glpi/glpi.tpl:6 +msgid "Generic" +msgstr "Algemeen" + +#: admin/systems/services/glpi/glpiPrinter.tpl:9 +msgid "Printer type" +msgstr "Printertype" + +#: admin/systems/services/glpi/glpiPrinter.tpl:18 +#: admin/systems/services/glpi/glpiPrinter.tpl:32 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:43 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:53 +#: admin/systems/services/glpi/glpi.tpl:18 +#: admin/systems/services/glpi/glpi.tpl:32 +#: admin/systems/services/glpi/glpi.tpl:46 +msgid "edit" +msgstr "Bewerk" + +#: admin/systems/services/glpi/glpiPrinter.tpl:23 +#: admin/systems/services/glpi/glpi_devices.tpl:24 +#: admin/systems/services/glpi/glpi_devices.tpl:123 +#: admin/systems/services/glpi/glpi_devices.tpl:164 +#: admin/systems/services/glpi/glpi_devices.tpl:219 +#: admin/systems/services/glpi/glpi_devices.tpl:275 +#: admin/systems/services/glpi/glpi_devices.tpl:333 +#: admin/systems/services/glpi/glpi_devices.tpl:397 +#: admin/systems/services/glpi/glpi_devices.tpl:469 +#: admin/systems/services/glpi/glpi_devices.tpl:533 +#: admin/systems/services/glpi/glpi_devices.tpl:580 +#: admin/systems/services/glpi/glpi_devices.tpl:633 +#: admin/systems/services/glpi/glpi_devices.tpl:687 +#: admin/systems/services/glpi/glpi_devices.tpl:733 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:47 +#: admin/systems/services/glpi/class_glpiAccount.inc:809 +#: admin/systems/services/glpi/glpi.tpl:37 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:812 +msgid "Manufacturer" +msgstr "Fabricant" + +#: admin/systems/services/glpi/glpiPrinter.tpl:39 +msgid "Supported interfaces" +msgstr "Ondersteunde interfaces" + +#: admin/systems/services/glpi/glpiPrinter.tpl:48 +msgid "Serial" +msgstr "Serieel" + +#: admin/systems/services/glpi/glpiPrinter.tpl:58 +msgid "Parallel" +msgstr "Parallel" + +#: admin/systems/services/glpi/glpiPrinter.tpl:68 +msgid "USB" +msgstr "USB" + +#: admin/systems/services/glpi/glpiPrinter.tpl:80 +#: admin/systems/services/glpi/glpi.tpl:52 +msgid "Contacts" +msgstr "Contacten" + +#: admin/systems/services/glpi/glpiPrinter.tpl:83 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:57 +#: admin/systems/services/glpi/class_glpiAccount.inc:802 +#: admin/systems/services/glpi/glpi.tpl:66 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:807 +msgid "Technical responsible" +msgstr "Technisch verantwoordelijke" + +#: admin/systems/services/glpi/glpiPrinter.tpl:94 +#: admin/systems/services/glpi/class_glpiAccount.inc:806 +#: admin/systems/services/glpi/glpi.tpl:56 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:810 +msgid "Contact person" +msgstr "Contactpersoon" + +#: admin/systems/services/glpi/glpiPrinter.tpl:107 +#: admin/systems/services/glpi/class_glpiAccount.inc:810 +#: admin/systems/services/glpi/glpi.tpl:117 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:814 +msgid "Attachments" +msgstr "Bijlagen" + +#: admin/systems/services/glpi/glpiPrinter.tpl:127 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:20 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:20 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:20 +#: admin/systems/services/glpi/glpiSelectUser.tpl:20 +msgid "Information" +msgstr "Informatie" + +#: admin/systems/services/glpi/glpiPrinter.tpl:139 +msgid "Installed cartridges" +msgstr "Geinstalleerde cartridges" + +#: admin/systems/services/glpi/glpiPrinter.tpl:152 +#: admin/systems/services/glpi/glpiManufacturer.tpl:8 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/systems/services/glpi/glpi_devices.tpl:2 +msgid "Add/Edit monitor" +msgstr "Monitor toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:33 +msgid "Monitor size" +msgstr "Monitor grootte" + +#: admin/systems/services/glpi/glpi_devices.tpl:36 +msgid "Inch" +msgstr "Inch" + +#: admin/systems/services/glpi/glpi_devices.tpl:44 +msgid "Integrated microphone" +msgstr "Geintegreerde microfoon" + +#: admin/systems/services/glpi/glpi_devices.tpl:47 +#: admin/systems/services/glpi/glpi_devices.tpl:55 +#: admin/systems/services/glpi/glpi_devices.tpl:63 +#: admin/systems/services/glpi/glpi_devices.tpl:71 +#: admin/systems/services/glpi/glpi_devices.tpl:176 +#: admin/systems/services/glpi/glpi_devices.tpl:296 +#: admin/systems/services/glpi/glpi_devices.tpl:361 +msgid "Yes" +msgstr "Ja" + +#: admin/systems/services/glpi/glpi_devices.tpl:48 +#: admin/systems/services/glpi/glpi_devices.tpl:56 +#: admin/systems/services/glpi/glpi_devices.tpl:64 +#: admin/systems/services/glpi/glpi_devices.tpl:72 +#: admin/systems/services/glpi/glpi_devices.tpl:177 +#: admin/systems/services/glpi/glpi_devices.tpl:297 +#: admin/systems/services/glpi/glpi_devices.tpl:362 +msgid "No" +msgstr "Nee" + +#: admin/systems/services/glpi/glpi_devices.tpl:52 +msgid "Integrated speakers" +msgstr "Geintegreerde luidsprekers" + +#: admin/systems/services/glpi/glpi_devices.tpl:60 +msgid "Sub-D" +msgstr "Sub-D" + +#: admin/systems/services/glpi/glpi_devices.tpl:68 +msgid "BNC" +msgstr "BNC" + +#: admin/systems/services/glpi/glpi_devices.tpl:76 +msgid "Serial number" +msgstr "Serienummer" + +#: admin/systems/services/glpi/glpi_devices.tpl:83 +msgid "Additional serial number" +msgstr "Extra serienummer" + +#: admin/systems/services/glpi/glpi_devices.tpl:97 +msgid "Add/Edit other device" +msgstr "Overig apparaat toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:138 +msgid "Add/Edit power supply" +msgstr "Voeding toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:173 +msgid "Atx" +msgstr "ATX" + +#: admin/systems/services/glpi/glpi_devices.tpl:181 +msgid "Power" +msgstr "Voeding" + +#: admin/systems/services/glpi/glpi_devices.tpl:193 +msgid "Add/Edit graphic card" +msgstr "Grafische kaart toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:228 +#: admin/systems/services/glpi/glpi_devices.tpl:284 +#: admin/systems/services/glpi/glpi_devices.tpl:349 +msgid "Interface" +msgstr "Interface" + +#: admin/systems/services/glpi/glpi_devices.tpl:237 +msgid "Ram" +msgstr "RAM" + +#: admin/systems/services/glpi/glpi_devices.tpl:249 +msgid "Add/Edit controller" +msgstr "Controller toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:293 +#: admin/systems/services/glpi/glpi_devices.tpl:420 +#: admin/systems/services/glpi/glpi_devices.tpl:485 +msgid "Size" +msgstr "Grootte" + +#: admin/systems/services/glpi/glpi_devices.tpl:307 +msgid "Add/Edit drive" +msgstr "Station toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:342 +msgid "Speed" +msgstr "Snelheid" + +#: admin/systems/services/glpi/glpi_devices.tpl:358 +msgid "Writeable" +msgstr "Schrijfbaar" + +#: admin/systems/services/glpi/glpi_devices.tpl:371 +msgid "Add/Edit harddisk" +msgstr "Hardeschijf toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:406 +msgid "Rpm" +msgstr "RPM" + +#: admin/systems/services/glpi/glpi_devices.tpl:413 +msgid "Cache" +msgstr "Cache" + +#: admin/systems/services/glpi/glpi_devices.tpl:427 +#: admin/systems/services/glpi/glpi_devices.tpl:492 +#: admin/systems/services/glpi/glpi_devices.tpl:542 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:37 +#: admin/systems/services/glpi/class_glpiAccount.inc:808 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:811 +msgid "Type" +msgstr "Type" + +#: admin/systems/services/glpi/glpi_devices.tpl:443 +msgid "Add/Edit memory" +msgstr "Geheugen toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:478 +msgid "Frequenz" +msgstr "Frequentie" + +#: admin/systems/services/glpi/glpi_devices.tpl:507 +msgid "Add/Edit sound card" +msgstr "Geluidskaart toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:553 +msgid "Add/Edit network interface" +msgstr "Netwerkkaart toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:589 +msgid "MAC address" +msgstr "Hardware adres (MAC)" + +#: admin/systems/services/glpi/glpi_devices.tpl:596 +msgid "Bandwidth" +msgstr "Bandbreedte" + +#: admin/systems/services/glpi/glpi_devices.tpl:607 +msgid "Add/Edit processor" +msgstr "Processor toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:642 +msgid "Frequence" +msgstr "Frequentie" + +#: admin/systems/services/glpi/glpi_devices.tpl:649 +msgid "Default frequence" +msgstr "Standaard frequentie" + +#: admin/systems/services/glpi/glpi_devices.tpl:661 +msgid "Add/Edit motherboard" +msgstr "Moederbord toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:696 +msgid "Chipset" +msgstr "Chipset" + +#: admin/systems/services/glpi/glpi_devices.tpl:707 +msgid "Add/Edit computer case" +msgstr "Computer behuizing toevoegen/bewerken" + +#: admin/systems/services/glpi/glpi_devices.tpl:742 +msgid "format" +msgstr "formaat" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:32 +#: admin/systems/services/glpi/class_goGlpiServer.inc:87 +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +#, fuzzy +msgid "Inventory database" +msgstr "gebruiker database" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:58 +#, fuzzy +msgid "Inventory database service" +msgstr "gebruiker database" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:67 +#, fuzzy +msgid "The attribute user is empty or contains invalid characters." +msgstr "Het atribuut '%s' is leeg of bevat ongeldige karakters!" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:70 +#, fuzzy +msgid "The attribute database is empty or contains invalid characters." +msgstr "Het atribuut '%s' is leeg of bevat ongeldige karakters!" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:96 +#, fuzzy +msgid "Start" +msgstr "Opstarten" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:97 +msgid "Stop" +msgstr "Stop" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:98 +#, fuzzy +msgid "Restart" +msgstr "Opnieuw proberen" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:100 +#, fuzzy +msgid "Admin" +msgstr "Beheerders" + +#: admin/systems/services/glpi/glpiManufacturer.tpl:1 +msgid "Manage manufacturers" +msgstr "Fabricanten beheren" + +#: admin/systems/services/glpi/remove_glpi.tpl:2 +msgid "Warning" +msgstr "Waarschuwing" + +#: admin/systems/services/glpi/remove_glpi.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Verzeker u ervan dat u dit daadwerkelijk wil doorvoeren, aangezien het " +"onmogelijk is voor GOsa om de data terug te halen." + +#: admin/systems/services/glpi/remove_glpi.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your MySql database in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Het is aan te raden de huidige inhoud van uw MySQL database op te slaan " +"alvorens u doorgaat. Indien u dat gedaan heeft drukt u op 'Verwijderen' om " +"door te gaan of op 'Annuleren' om te annuleren." + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:14 +msgid "Reference" +msgstr "Referentie" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:61 +msgid "Choose" +msgstr "Kies" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:6 +msgid "List of available cartridge type for this type of printer" +msgstr "Lijst met beschikbare cartridges voor dit type printer" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:23 +msgid "" +"This dialog allows you to create new types of cartridges, and select one or " +"more types for your printer. Cartridge types depends on the printer type you " +"have selected. For each selected cartridge type there will be a new " +"cartridge created, this allows you to select the same cartridge type for " +"more then one printer." +msgstr "" +"Deze dialoog maakt het mogelijk om nieuwe cartridgetypes aan te maken en één " +"of meer types te selecteren voor uw printer. De cartridgetypes zijn " +"afhankelijk van de door u geselecteerde printer. Voor elk geselecteerde " +"cartridgetype zal een nieuwe cartridge aangemaakt worden. Dit maakt het " +"mogelijk om hetzelfde cartridgetype voor meerdere printers te selecteren." + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:27 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:27 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:27 +#: admin/systems/services/glpi/glpiSelectUser.tpl:27 +msgid "Filters" +msgstr "Filters" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:35 +msgid "Display cartridge types matching" +msgstr "Toon de overeenkomende cartridgetypes" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:37 +msgid "Regular expression for matching cartridge types" +msgstr "Reguliere expresie voor overeenkomende cartridgetypes" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:6 +msgid "List of attachments" +msgstr "Lijst met bijlages" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:23 +msgid "" +"This dialog allow you to attach additional objects (like manuals, guides, " +"etc.) to your currently edited computer." +msgstr "" +"Deze dialoog maakt het mogelijk om extra objecten (zoals handleidingen, " +"documenten, etc.), aan de computer die u momenteel aan het bewerken bent, " +"toe te voegen." + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:35 +msgid "Display attachments matching" +msgstr "Toon overeenkomende bijlages" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:37 +msgid "Regular expression for matching attachment names" +msgstr "Reguliere expressie voor overeenkomende bijlagenamen" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:6 +msgid "List of devices" +msgstr "Lijst met apparaten" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:23 +msgid "" +"This dialog allows you to attach a device to your currently edited computer." +msgstr "" +"Deze dialoog maakt het mogelijk om een apparaat te verbinden aan de computer " +"die u momenteel aan het bewerken bent." + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:35 +msgid "Display devices matching" +msgstr "Toon overeenkomende apparaten" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:37 +msgid "Regular expression for matching device names" +msgstr "Reguliere expressie voor overeenkomende apparaat namen" + +#: admin/systems/services/glpi/class_glpiAccount.inc:146 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:163 +msgid "There is no server with valid glpi database service." +msgstr "Er is geen server met geldige GLPI database service aanwezig." + +#: admin/systems/services/glpi/class_glpiAccount.inc:156 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:173 +msgid "Can't connect to glpi database, the php-mysql extension is missing." +msgstr "" +"Kan niet verbinden met de GLPI database. Er is geen MySQL extensie " +"beschikbaar. Controleer uw PHP installatie." + +#: admin/systems/services/glpi/class_glpiAccount.inc:166 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:183 +msgid "Can't connect to glpi database, check configuration twice." +msgstr "" +"Kan niet verbinden met de GLPI database. Controleer uw configuratie a.u.b. " +"nogmaals." + +#: admin/systems/services/glpi/class_glpiAccount.inc:181 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:198 +msgid "Download of attachment failed. Attachment was not found on server." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:184 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:201 +msgid "Download of attachment failed. Not a valid attachment id." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:198 +#: admin/systems/services/glpi/class_glpiAccount.inc:204 +#: admin/systems/services/glpi/class_glpiAccount.inc:210 +msgid "This feature is not implemented yet." +msgstr "Deze mogelijkheid is nog niet geïmplementeerd." + +#: admin/systems/services/glpi/class_glpiAccount.inc:312 +msgid "Adding new sytem type failed, this system type name is already used." +msgstr "" +"Het toevoegen van een nieuw systeemtype is mislukt, aangezien de typenaam al " +"in gebruik is." + +#: admin/systems/services/glpi/class_glpiAccount.inc:332 +#, php-format +msgid "" +"You can't delete this system type, it is still in use by these system(s) '%s'" +msgstr "" +"U kunt dit systeemtype niet verwijderen, aangezien deze nog steeds in " +"gebruik is door deze systemen: '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:343 +msgid "Rename failed, this system type name is already used." +msgstr "Hernoemen is mislukt. De opgegeven naam wordt al gebruikt." + +#: admin/systems/services/glpi/class_glpiAccount.inc:399 +msgid "Adding new operating system failed, specifed name is already used." +msgstr "" +"Het toevoegen van het besturingssysteem is mislukt. De naam wordt al " +"gebruikt." + +#: admin/systems/services/glpi/class_glpiAccount.inc:421 +#, php-format +msgid "" +"You can't delete this operating system, it is still in use by these system" +"(s) '%s'" +msgstr "" +"U kunt dit besturingssysteem niet verwijderen, aangezien deze nog steeds in " +"gebruik is door deze systemen: '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:433 +msgid "Updating operating system failed, specifed name is already used." +msgstr "" +"Het bijwerken van het besturingssysteem is mislukt. De opgegeven naam wordt " +"al gebruikt." + +#: admin/systems/services/glpi/class_glpiAccount.inc:512 +#, php-format +msgid "" +"Could not add the given user, the users dn is too long, only 100 characters " +"are allowed here." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:593 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:229 +msgid "Remove inventory" +msgstr "Inventaris verwijderen" + +#: admin/systems/services/glpi/class_glpiAccount.inc:594 +msgid "" +"This device has inventory informations enabled. You can disable them by " +"clicking below." +msgstr "" +"Dit apparaat heeft inventaris mogelijkheden ingeschakeld. U kunt deze " +"uitschakelen door de knop hieronder te gebruiken." + +#: admin/systems/services/glpi/class_glpiAccount.inc:596 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:232 +msgid "Add inventory" +msgstr "Inventaris toevoegen" + +#: admin/systems/services/glpi/class_glpiAccount.inc:597 +msgid "" +"This device has inventory informations disabled. You can enable them by " +"clicking below." +msgstr "" +"Dit apparaat heeft inventaris mogelijkheden uitgeschakeld. U kunt deze " +"inschakelen door de knop hieronder te gebruiken." + +#: admin/systems/services/glpi/class_glpiAccount.inc:692 +#: admin/systems/services/glpi/class_glpiAccount.inc:693 +msgid "Can't remove glpi account, while mysql extension is missing." +msgstr "" +"Kan het GLPI account niet verwijderen, zolang er geen MySQL extensie " +"beschikbaar is. Controleer uw PHP installatie." + +#: admin/systems/services/glpi/class_glpiAccount.inc:793 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:795 +msgid "Glpi" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:794 +#, fuzzy +msgid "Inventory extension" +msgstr "Verwijder printer mogelijkheden" + +#: admin/systems/services/glpi/class_glpiAccount.inc:804 +#: admin/systems/services/glpi/glpi.tpl:23 +msgid "Operating system" +msgstr "Besturingssysteem" + +#: admin/systems/services/glpi/class_glpiAccount.inc:805 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:809 +msgid "Location" +msgstr "Plaats" + +#: admin/systems/services/glpi/class_glpiAccount.inc:807 +msgid "Model" +msgstr "Model" + +#: admin/systems/services/glpi/class_glpiAccount.inc:811 +#, fuzzy +msgid "Peripheral devices" +msgstr "Printer" + +#: admin/systems/services/glpi/glpi.tpl:9 +msgid "System type" +msgstr "Systeemtype" + +#: admin/systems/services/glpi/glpi.tpl:96 +msgid "Installed devices" +msgstr "Geinstalleerde apparaten" + +#: admin/systems/services/glpi/glpi.tpl:112 +msgid "Trading" +msgstr "Uit-/Omwisseling" + +#: admin/systems/services/glpi/glpi.tpl:113 +msgid "Software" +msgstr "Software" + +#: admin/systems/services/glpi/glpi.tpl:114 +msgid "Contracts" +msgstr "Contracten" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:68 +#, fuzzy +msgid "attachment" +msgstr "Bijlage" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:107 +#, php-format +msgid "" +"You can't delete this attachment, it is still in use by these system(s) '%s'" +msgstr "" +"U kunt deze bijlage niet verwijderen, aangezien deze nog steeds in gebruik " +"is door deze systemen: '%s'" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:119 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:123 +msgid "There is no valid file uploaded." +msgstr "Er is geen geldig bestand ge-upload." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:126 +msgid "Upload wasn't successfull." +msgstr "Upload was niet succesvol" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:129 +#, fuzzy, php-format +msgid "Missing directory '%s/glpi/' to store glpi uploads." +msgstr "" +"De directory '/etc/gosa/glpi/', om GLPI bestanden in te bewaren, ontbreekt. " + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:133 +msgid "There is already a file with the same name uploaded." +msgstr "Er bestaat al een bestand met dezelfde naam." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:137 +#, php-format +msgid "Can't create file '%s'." +msgstr "Kan bestand '%s' niet aanmaken." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:181 +msgid "File is available." +msgstr "Bestand is beschikbaar" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:183 +msgid "File is not readable, possibly the file is missing." +msgstr "Bestand is niet leesbaar. Het is mogelijk dat het bestand ontbreekt." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:186 +msgid "Currently no file uploaded." +msgstr "Er is momenteel geen bestand ge-upload." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:198 +msgid "Mime" +msgstr "MIME" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:201 +msgid "This table displays all available attachments." +msgstr "Deze tabel geeft alle beschikbaare bijlages weer" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:218 +msgid "empty" +msgstr "leeg" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:255 +msgid "Create new attachment" +msgstr "Nieuwe bijlage aanmaken" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:256 +msgid "New Attachment" +msgstr "Nieuwe bijlage" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:349 +msgid "This name is already in use." +msgstr "De opgegeven naam wordt al gebruikt." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:352 +msgid "Please specify a valid name for this attachment." +msgstr "Geef a.u.b. een geldige naam op voor deze bijlage." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:230 +msgid "" +"This server has inventory features enabled. You can disable them by clicking " +"below." +msgstr "" +"Deze server heeft inventaris mogelijkheden ingeschakeld. U kunt deze " +"uitschakelen door de knop hieronder te gebruiken." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:233 +msgid "" +"This server has inventory features disabled. You can enable them by clicking " +"below." +msgstr "" +"Deze server heeft inventaris mogelijkheden uitgeschakeld. U kunt deze " +"inschakelen door de knop hieronder te gebruiken." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:256 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:294 +#, php-format +msgid "" +"Can't rename given printer type to '%s', because this type name already " +"exists." +msgstr "" +"Kan het opgegeven printertype niet wijzigen naar '%s', aangezien deze " +"typenaam al bestaat." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:308 +#, php-format +msgid "Can't delete printer type, it is still in use by '%s'." +msgstr "" +"Kan het printertype niet verwijderen, aangezien deze nog steeds in gebruik " +"is door: '%s'" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:785 +msgid "since" +msgstr "sinds" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:796 +#, fuzzy +msgid "Printer inventory extension" +msgstr "Voeg printer extensie toe" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:804 +#, fuzzy +msgid "Supports serial interface" +msgstr "Ondersteunde interfaces" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:805 +#, fuzzy +msgid "Supports parallel interface" +msgstr "Ondersteunde interfaces" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:806 +#, fuzzy +msgid "Supports usb interface" +msgstr "Ondersteunde interfaces" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:816 +#, fuzzy +msgid "Cartridge settings" +msgstr "Cartridges" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:6 +msgid "List of users" +msgstr "Lijst met gebruikers" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:23 +msgid "" +"This dialog allows you to select a user as technical responsible person." +msgstr "" +"Deze dialoog stelt u in staat om een gebruiker als technisch " +"verantwoordelijk persoon aan te wijzen." + +#: admin/systems/services/glpi/glpiSelectUser.tpl:35 +msgid "Display users matching" +msgstr "Toon overeenkomende gebruikers" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:37 +msgid "Regular expression for matching user names" +msgstr "Reguliere expressie voor overeenkomende gebruikersnamen" + +#: admin/systems/services/glpi/glpi_edit_os.tpl:1 +msgid "Manage OS-types" +msgstr "OS-types beheren" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:53 +#, php-format +msgid "" +"You can't delete this manufacturer, it is still in use by these system(s) '%" +"s'" +msgstr "" +"U kunt deze fabrikant niet verwijderen, aangezien deze nog steeds in gebruik " +"is door deze systemen: '%s'" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:99 +msgid "Please specify a name." +msgstr "Geef a.u.b. een naam op." + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:108 +#: admin/systems/services/glpi/class_glpiManufacturer.inc:114 +msgid "Specified name is already in use, please choose another one." +msgstr "De opgegeven naam is al in gebruik. Kies a.u.b. een andere naam." + +#: admin/systems/services/glpi/glpi_edit_type.tpl:1 +msgid "Manage System-types" +msgstr "Systeemtypes beheren" + +#~ msgid "You're about to delete the glpi attachment component '%s'." +#~ msgstr "U staat op het punt het GLPI bijlage component '%s' te verwijderen." + +#~ msgid "Add" +#~ msgstr "Toevoegen" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#~ msgid "You're about to delete the glpi device '%s'." +#~ msgstr "U staat op het punt het GLPI apparaat '%s' te verwijderen." + +#~ msgid "You're about to delete the glpi cartridge type '%s'." +#~ msgstr "U staat op het punt het GLPI cartridgetype '%s' te verwijderen." diff --git a/trunk/gosa-plugins/glpi/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/glpi/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..0992a45d5 --- /dev/null +++ b/trunk/gosa-plugins/glpi/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,1194 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Users" +msgstr "Użytkownicy" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Departments" +msgstr "Departamenty" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:109 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:51 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:51 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:51 +msgid "Use" +msgstr "Użyj" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +msgid "use" +msgstr "użyj" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Go to root department" +msgstr "Idź do głównego departamentu" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Root" +msgstr "Główny" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Go up one department" +msgstr "Idź jeden departament wyżej" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Up" +msgstr "Góra" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Go to users department" +msgstr "Przejdź do departamentu użytkowników" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Home" +msgstr "Katalog domowy" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +msgid "Reload list" +msgstr "Przeładuj listę" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit" +msgstr "Wyślij" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:178 +msgid "Base" +msgstr "Kontener" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit department" +msgstr "Zatwierdź departament" + +#: admin/systems/services/glpi/goGlpiServer.tpl:1 +msgid "GLPI database information" +msgstr "informacje bazy danych GLPI" + +#: admin/systems/services/glpi/goGlpiServer.tpl:4 +msgid "Logging DB user" +msgstr "Użytkownik bazy logowania" + +#: admin/systems/services/glpi/goGlpiServer.tpl:12 +#: admin/systems/services/glpi/class_goGlpiServer.inc:102 +msgid "Password" +msgstr "Hasło" + +#: admin/systems/services/glpi/goGlpiServer.tpl:20 +#: admin/systems/services/glpi/class_goGlpiServer.inc:101 +msgid "Database" +msgstr "Baza" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:8 +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:29 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:7 +#: admin/systems/services/glpi/glpi_edit_os.tpl:9 +#: admin/systems/services/glpi/glpi_edit_os.tpl:28 +#: admin/systems/services/glpi/glpi_edit_type.tpl:9 +#: admin/systems/services/glpi/glpi_edit_type.tpl:28 +msgid "Rename" +msgstr "Zmień nazwę" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:14 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:81 +#: admin/systems/services/glpi/glpiManufacturer.tpl:13 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:13 +#: admin/systems/services/glpi/glpi_edit_os.tpl:15 +#: admin/systems/services/glpi/glpi_edit_type.tpl:15 +msgid "Close" +msgstr "Zamknij" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:25 +#: admin/systems/services/glpi/glpi_edit_os.tpl:24 +#: admin/systems/services/glpi/glpi_edit_type.tpl:24 +msgid "Please enter a new name" +msgstr "Proszę podać nową nazwę." + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:2 +msgid "Attachment" +msgstr "Załącznik" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:10 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:7 +#: admin/systems/services/glpi/glpi_devices.tpl:10 +#: admin/systems/services/glpi/glpi_devices.tpl:105 +#: admin/systems/services/glpi/glpi_devices.tpl:146 +#: admin/systems/services/glpi/glpi_devices.tpl:201 +#: admin/systems/services/glpi/glpi_devices.tpl:257 +#: admin/systems/services/glpi/glpi_devices.tpl:315 +#: admin/systems/services/glpi/glpi_devices.tpl:379 +#: admin/systems/services/glpi/glpi_devices.tpl:451 +#: admin/systems/services/glpi/glpi_devices.tpl:515 +#: admin/systems/services/glpi/glpi_devices.tpl:562 +#: admin/systems/services/glpi/glpi_devices.tpl:615 +#: admin/systems/services/glpi/glpi_devices.tpl:669 +#: admin/systems/services/glpi/glpi_devices.tpl:715 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:7 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:197 +msgid "Name" +msgstr "Imię" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:18 +#: admin/systems/services/glpi/glpi_devices.tpl:112 +#: admin/systems/services/glpi/glpi_devices.tpl:153 +#: admin/systems/services/glpi/glpi_devices.tpl:208 +#: admin/systems/services/glpi/glpi_devices.tpl:264 +#: admin/systems/services/glpi/glpi_devices.tpl:322 +#: admin/systems/services/glpi/glpi_devices.tpl:386 +#: admin/systems/services/glpi/glpi_devices.tpl:458 +#: admin/systems/services/glpi/glpi_devices.tpl:522 +#: admin/systems/services/glpi/glpi_devices.tpl:569 +#: admin/systems/services/glpi/glpi_devices.tpl:622 +#: admin/systems/services/glpi/glpi_devices.tpl:676 +#: admin/systems/services/glpi/glpi_devices.tpl:722 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:25 +#: admin/systems/services/glpi/class_glpiAccount.inc:803 +#: admin/systems/services/glpi/glpi.tpl:79 +msgid "Comment" +msgstr "Komentarz" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:30 +msgid "File" +msgstr "Plik" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:33 +msgid "Upload" +msgstr "Wgraj" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:38 +msgid "Status" +msgstr "Status" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:46 +msgid "Filename" +msgstr "Nazwa pliku" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:54 +msgid "Mime-type" +msgstr "Typ-Mime" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:104 +msgid "Can't delete this entry, it is still in use." +msgstr "Nie można usunąć tego elementu, ponieważ jest wciąż w użyciu." + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:268 +#: admin/systems/services/glpi/class_glpiAccount.inc:656 +#: admin/systems/services/glpi/class_glpiAccount.inc:671 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:633 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:648 +msgid "N/A" +msgstr "B/D" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:286 +msgid "The selected name is already in use." +msgstr "Wybrana nazwie już jest w użyciu." + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:92 +#, fuzzy +msgid "cartridge" +msgstr "Kartridźe" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:111 +#, php-format +msgid "" +"You can't delete this cartridge type, it is still in use by this printer(s) " +"'%s'." +msgstr "" +"Nie można usunąć tego typu kartridża. Jest wciąż używany przez drukarkę(i) '%" +"s'." + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:158 +msgid "Cartridges" +msgstr "Kartridźe" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:159 +msgid "Action" +msgstr "Akcja" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:163 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:187 +#: admin/systems/services/glpi/glpiPrinter.tpl:88 +#: admin/systems/services/glpi/glpiPrinter.tpl:99 +#: admin/systems/services/glpi/glpiManufacturer.tpl:7 +#: admin/systems/services/glpi/glpi.tpl:61 +#: admin/systems/services/glpi/glpi.tpl:71 +#: admin/systems/services/glpi/glpi.tpl:106 +msgid "Edit" +msgstr "Edytuj" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:164 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:188 +msgid "Delete" +msgstr "Usuń" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "New monitor" +msgstr "Nowy monitor" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "M" +msgstr "M" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:1 +msgid "Add/Edit manufacturer" +msgstr "Dodaj/Edytuj producenta" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:14 +msgid "Website" +msgstr "Strona WWW" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:21 +msgid "Address" +msgstr "Adres" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:32 +msgid "Phone number" +msgstr "Numer telefonu" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:39 +msgid "Fax" +msgstr "Fax" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:46 +msgid "Email" +msgstr "Email" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:53 +#: admin/systems/services/glpi/glpi_devices.tpl:17 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:22 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:808 +msgid "Comments" +msgstr "Komentarze" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:88 +#, php-format +msgid "Internal Error can't create device of type '%s'" +msgstr "Błąd wewnętrzny: nie można utworzyć urządzenia typu '%s'" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:108 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:110 +#, fuzzy +msgid "glpi device" +msgstr "urządzenia" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:112 +msgid "Can't detect object name." +msgstr "Nie można wykryć nazwy obiektu." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:133 +#, php-format +msgid "" +"You can't delete this device, it is still in use by these system(s) '%s'" +msgstr "" +"Nie można usunąć tego urządzenia, jest ono wciąż używane przez te(n) system" +"(y) '%s'" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:183 +msgid "devices" +msgstr "urządzenia" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:184 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:199 +msgid "Actions" +msgstr "Akcje" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "New mainbord" +msgstr "Nowa płyta główna" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "MB" +msgstr "MB" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "New processor" +msgstr "Nowy procesor" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "P" +msgstr "P" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "New case" +msgstr "Nowa obudowa" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "C" +msgstr "C" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "New network interface" +msgstr "Nowy interfejs sieciowy" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "NI" +msgstr "NI" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "New ram" +msgstr "Nowa pamięć RAM" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "R" +msgstr "R" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "New hard disk" +msgstr "Nowy dysk twardy" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "HDD" +msgstr "Dysk" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "New drive" +msgstr "Nowy napęd" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "D" +msgstr "D" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "New controller" +msgstr "Nowy kontroler" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "CS" +msgstr "CS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "New graphics card" +msgstr "Nowa karta graficzna" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "GC" +msgstr "GC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "New sound card" +msgstr "Nowa karta dźwiękowa" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "SC" +msgstr "SC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "New power supply" +msgstr "Nowy zasilacz" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "PS" +msgstr "PS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "New misc device" +msgstr "Nowe inne urządzenie" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "OC" +msgstr "OC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:346 +msgid "You have to specify a valid name for this device." +msgstr "Proszę podać prawidłową nazwę dla tego urządzenia." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:366 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:369 +msgid "This device name is already in use." +msgstr "Ta nazwa urządzenia jest już w użyciu." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:392 +msgid "none" +msgstr "żaden" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "None" +msgstr "Brak" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "Other" +msgstr "Inne" + +#: admin/systems/services/glpi/glpiPrinter.tpl:6 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:4 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:34 +#: admin/systems/services/glpi/glpi.tpl:6 +msgid "Generic" +msgstr "Ogólne" + +#: admin/systems/services/glpi/glpiPrinter.tpl:9 +msgid "Printer type" +msgstr "Typ drukarki" + +#: admin/systems/services/glpi/glpiPrinter.tpl:18 +#: admin/systems/services/glpi/glpiPrinter.tpl:32 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:43 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:53 +#: admin/systems/services/glpi/glpi.tpl:18 +#: admin/systems/services/glpi/glpi.tpl:32 +#: admin/systems/services/glpi/glpi.tpl:46 +msgid "edit" +msgstr "edytuj" + +#: admin/systems/services/glpi/glpiPrinter.tpl:23 +#: admin/systems/services/glpi/glpi_devices.tpl:24 +#: admin/systems/services/glpi/glpi_devices.tpl:123 +#: admin/systems/services/glpi/glpi_devices.tpl:164 +#: admin/systems/services/glpi/glpi_devices.tpl:219 +#: admin/systems/services/glpi/glpi_devices.tpl:275 +#: admin/systems/services/glpi/glpi_devices.tpl:333 +#: admin/systems/services/glpi/glpi_devices.tpl:397 +#: admin/systems/services/glpi/glpi_devices.tpl:469 +#: admin/systems/services/glpi/glpi_devices.tpl:533 +#: admin/systems/services/glpi/glpi_devices.tpl:580 +#: admin/systems/services/glpi/glpi_devices.tpl:633 +#: admin/systems/services/glpi/glpi_devices.tpl:687 +#: admin/systems/services/glpi/glpi_devices.tpl:733 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:47 +#: admin/systems/services/glpi/class_glpiAccount.inc:809 +#: admin/systems/services/glpi/glpi.tpl:37 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:812 +msgid "Manufacturer" +msgstr "Producent" + +#: admin/systems/services/glpi/glpiPrinter.tpl:39 +msgid "Supported interfaces" +msgstr "Wspierane interfejsy" + +#: admin/systems/services/glpi/glpiPrinter.tpl:48 +msgid "Serial" +msgstr "Szeregowy" + +#: admin/systems/services/glpi/glpiPrinter.tpl:58 +msgid "Parallel" +msgstr "Równoległy" + +#: admin/systems/services/glpi/glpiPrinter.tpl:68 +msgid "USB" +msgstr "USB" + +#: admin/systems/services/glpi/glpiPrinter.tpl:80 +#: admin/systems/services/glpi/glpi.tpl:52 +msgid "Contacts" +msgstr "Kontakty" + +#: admin/systems/services/glpi/glpiPrinter.tpl:83 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:57 +#: admin/systems/services/glpi/class_glpiAccount.inc:802 +#: admin/systems/services/glpi/glpi.tpl:66 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:807 +msgid "Technical responsible" +msgstr "Osoba techniczna" + +#: admin/systems/services/glpi/glpiPrinter.tpl:94 +#: admin/systems/services/glpi/class_glpiAccount.inc:806 +#: admin/systems/services/glpi/glpi.tpl:56 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:810 +msgid "Contact person" +msgstr "Osoba kontaktowa" + +#: admin/systems/services/glpi/glpiPrinter.tpl:107 +#: admin/systems/services/glpi/class_glpiAccount.inc:810 +#: admin/systems/services/glpi/glpi.tpl:117 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:814 +msgid "Attachments" +msgstr "Załączniki" + +#: admin/systems/services/glpi/glpiPrinter.tpl:127 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:20 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:20 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:20 +#: admin/systems/services/glpi/glpiSelectUser.tpl:20 +msgid "Information" +msgstr "Informacja" + +#: admin/systems/services/glpi/glpiPrinter.tpl:139 +msgid "Installed cartridges" +msgstr "Zainstalowane kartridźe" + +#: admin/systems/services/glpi/glpiPrinter.tpl:152 +#: admin/systems/services/glpi/glpiManufacturer.tpl:8 +msgid "Remove" +msgstr "Usuń" + +#: admin/systems/services/glpi/glpi_devices.tpl:2 +msgid "Add/Edit monitor" +msgstr "Dodaj/Edytuj monitor" + +#: admin/systems/services/glpi/glpi_devices.tpl:33 +msgid "Monitor size" +msgstr "Rozmiar monitora" + +#: admin/systems/services/glpi/glpi_devices.tpl:36 +msgid "Inch" +msgstr "Cale" + +#: admin/systems/services/glpi/glpi_devices.tpl:44 +msgid "Integrated microphone" +msgstr "Zintegrowany mikrofon" + +#: admin/systems/services/glpi/glpi_devices.tpl:47 +#: admin/systems/services/glpi/glpi_devices.tpl:55 +#: admin/systems/services/glpi/glpi_devices.tpl:63 +#: admin/systems/services/glpi/glpi_devices.tpl:71 +#: admin/systems/services/glpi/glpi_devices.tpl:176 +#: admin/systems/services/glpi/glpi_devices.tpl:296 +#: admin/systems/services/glpi/glpi_devices.tpl:361 +msgid "Yes" +msgstr "Tak" + +#: admin/systems/services/glpi/glpi_devices.tpl:48 +#: admin/systems/services/glpi/glpi_devices.tpl:56 +#: admin/systems/services/glpi/glpi_devices.tpl:64 +#: admin/systems/services/glpi/glpi_devices.tpl:72 +#: admin/systems/services/glpi/glpi_devices.tpl:177 +#: admin/systems/services/glpi/glpi_devices.tpl:297 +#: admin/systems/services/glpi/glpi_devices.tpl:362 +msgid "No" +msgstr "Nie" + +#: admin/systems/services/glpi/glpi_devices.tpl:52 +msgid "Integrated speakers" +msgstr "Zintegrowane głośniki" + +#: admin/systems/services/glpi/glpi_devices.tpl:60 +msgid "Sub-D" +msgstr "Pod-D" + +#: admin/systems/services/glpi/glpi_devices.tpl:68 +msgid "BNC" +msgstr "BNC" + +#: admin/systems/services/glpi/glpi_devices.tpl:76 +msgid "Serial number" +msgstr "Numer seryjny" + +#: admin/systems/services/glpi/glpi_devices.tpl:83 +msgid "Additional serial number" +msgstr "Dodatkowy numer seryjny" + +#: admin/systems/services/glpi/glpi_devices.tpl:97 +msgid "Add/Edit other device" +msgstr "Dodaj/Edytuj urządzenie" + +#: admin/systems/services/glpi/glpi_devices.tpl:138 +msgid "Add/Edit power supply" +msgstr "Dodaj/Zmień zasilacz komputera" + +#: admin/systems/services/glpi/glpi_devices.tpl:173 +msgid "Atx" +msgstr "Atx" + +#: admin/systems/services/glpi/glpi_devices.tpl:181 +msgid "Power" +msgstr "Moc" + +#: admin/systems/services/glpi/glpi_devices.tpl:193 +msgid "Add/Edit graphic card" +msgstr "Dodaj/Zmień kartę graficzną" + +#: admin/systems/services/glpi/glpi_devices.tpl:228 +#: admin/systems/services/glpi/glpi_devices.tpl:284 +#: admin/systems/services/glpi/glpi_devices.tpl:349 +msgid "Interface" +msgstr "Interfejs" + +#: admin/systems/services/glpi/glpi_devices.tpl:237 +msgid "Ram" +msgstr "Pamięć" + +#: admin/systems/services/glpi/glpi_devices.tpl:249 +msgid "Add/Edit controller" +msgstr "Dodaj/Edytuj kontroler" + +#: admin/systems/services/glpi/glpi_devices.tpl:293 +#: admin/systems/services/glpi/glpi_devices.tpl:420 +#: admin/systems/services/glpi/glpi_devices.tpl:485 +msgid "Size" +msgstr "Rozmiar" + +#: admin/systems/services/glpi/glpi_devices.tpl:307 +msgid "Add/Edit drive" +msgstr "Dodaj/Edytuj napęd" + +#: admin/systems/services/glpi/glpi_devices.tpl:342 +msgid "Speed" +msgstr "Prędkość" + +#: admin/systems/services/glpi/glpi_devices.tpl:358 +msgid "Writeable" +msgstr "Zapisywalny" + +#: admin/systems/services/glpi/glpi_devices.tpl:371 +msgid "Add/Edit harddisk" +msgstr "Dodaj/Edytuj dysk twardy" + +#: admin/systems/services/glpi/glpi_devices.tpl:406 +msgid "Rpm" +msgstr "Rpm" + +#: admin/systems/services/glpi/glpi_devices.tpl:413 +msgid "Cache" +msgstr "Cache" + +#: admin/systems/services/glpi/glpi_devices.tpl:427 +#: admin/systems/services/glpi/glpi_devices.tpl:492 +#: admin/systems/services/glpi/glpi_devices.tpl:542 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:37 +#: admin/systems/services/glpi/class_glpiAccount.inc:808 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:811 +msgid "Type" +msgstr "Typ" + +#: admin/systems/services/glpi/glpi_devices.tpl:443 +msgid "Add/Edit memory" +msgstr "Dodaj/Edytuj pamięć RAM" + +#: admin/systems/services/glpi/glpi_devices.tpl:478 +msgid "Frequenz" +msgstr "Częstotliwość" + +#: admin/systems/services/glpi/glpi_devices.tpl:507 +msgid "Add/Edit sound card" +msgstr "Dodaj/Zmień kartę dźwiękową" + +#: admin/systems/services/glpi/glpi_devices.tpl:553 +msgid "Add/Edit network interface" +msgstr "Dodaj/Zmień interfejs sieciowy" + +#: admin/systems/services/glpi/glpi_devices.tpl:589 +msgid "MAC address" +msgstr "Adres MAC" + +#: admin/systems/services/glpi/glpi_devices.tpl:596 +msgid "Bandwidth" +msgstr "Przepustowość" + +#: admin/systems/services/glpi/glpi_devices.tpl:607 +msgid "Add/Edit processor" +msgstr "Dodaj/Edytuj procesor" + +#: admin/systems/services/glpi/glpi_devices.tpl:642 +msgid "Frequence" +msgstr "Częstotliwość" + +#: admin/systems/services/glpi/glpi_devices.tpl:649 +msgid "Default frequence" +msgstr "Domyślna częstotliwość" + +#: admin/systems/services/glpi/glpi_devices.tpl:661 +msgid "Add/Edit motherboard" +msgstr "Dodaj/Edytuj płytę główną" + +#: admin/systems/services/glpi/glpi_devices.tpl:696 +msgid "Chipset" +msgstr "Chipset" + +#: admin/systems/services/glpi/glpi_devices.tpl:707 +msgid "Add/Edit computer case" +msgstr "Dodaj/Zmień obudowę komputera" + +#: admin/systems/services/glpi/glpi_devices.tpl:742 +msgid "format" +msgstr "format" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:32 +#: admin/systems/services/glpi/class_goGlpiServer.inc:87 +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Inventory database" +msgstr "Baza inwentarza" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:58 +#, fuzzy +msgid "Inventory database service" +msgstr "Baza inwentarza" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:67 +msgid "The attribute user is empty or contains invalid characters." +msgstr "Atrybut użytkownik jest pusty lub zawiera nieprawidłowe znaki." + +#: admin/systems/services/glpi/class_goGlpiServer.inc:70 +msgid "The attribute database is empty or contains invalid characters." +msgstr "Podany atrybut bazy danych jest pusty lub zawiera nieprawidłowe znaki." + +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:96 +msgid "Start" +msgstr "Start" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:97 +msgid "Stop" +msgstr "Zatrzymaj" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:98 +msgid "Restart" +msgstr "Restart" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:100 +msgid "Admin" +msgstr "Admin" + +#: admin/systems/services/glpi/glpiManufacturer.tpl:1 +msgid "Manage manufacturers" +msgstr "Zarządzaj producentami" + +#: admin/systems/services/glpi/remove_glpi.tpl:2 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: admin/systems/services/glpi/remove_glpi.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Proszę upewnić się, że faktycznie chcesz wykonać tą operację. Nie ma " +"możliwości odwrócenia tego procesu." + +#: admin/systems/services/glpi/remove_glpi.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your MySql database in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Przed wykonaniem tej operacji zaleca się wykonanie kopii bezpieczeństwa bazy " +"MySQL. Naciśnij 'Usuń' aby kontynuować, lub 'Anuluj' aby przerwać." + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:14 +msgid "Reference" +msgstr "Referencja" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:61 +msgid "Choose" +msgstr "Wybierz" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:6 +msgid "List of available cartridge type for this type of printer" +msgstr "Lista dostępnych typów kartridży dla tego typu drukarki" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:23 +msgid "" +"This dialog allows you to create new types of cartridges, and select one or " +"more types for your printer. Cartridge types depends on the printer type you " +"have selected. For each selected cartridge type there will be a new " +"cartridge created, this allows you to select the same cartridge type for " +"more then one printer." +msgstr "" +"Ten dialog umożliwia tworzenie nowych typów kartridży oraz wybrania jednego " +"lub więcej typów drukarki. Typ kartridża zależy od typu wybranej drukarki. " +"Dla każdego wybranego typu katridża zostanie utworzony nowy kartridż. To " +"pozwala na wybranie tego samego typu kartidża dla więcej niż jednej drukarki." + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:27 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:27 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:27 +#: admin/systems/services/glpi/glpiSelectUser.tpl:27 +msgid "Filters" +msgstr "Filtry" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:35 +msgid "Display cartridge types matching" +msgstr "Wyświetl pasujące typy katridży" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:37 +msgid "Regular expression for matching cartridge types" +msgstr "Wyrażenie regularne dla dopasowania kartridźy" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:6 +msgid "List of attachments" +msgstr "Lista załączników" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:23 +msgid "" +"This dialog allow you to attach additional objects (like manuals, guides, " +"etc.) to your currently edited computer." +msgstr "" +"Ten dialog umożliwia przypisanie dodatkowych obiektów (np dokumentacja) do " +"obecnie edytowanego komputera." + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:35 +msgid "Display attachments matching" +msgstr "Wyświetl pasujące załączniki" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:37 +msgid "Regular expression for matching attachment names" +msgstr "Wyrażenie regularne dla dopasowania nazw załączników" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:6 +msgid "List of devices" +msgstr "Lista urządzeń" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:23 +msgid "" +"This dialog allows you to attach a device to your currently edited computer." +msgstr "" +"Ten dialog umożliwia przypięcie urządzenia do obecnie edytowanego komputera." + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:35 +msgid "Display devices matching" +msgstr "Wyświetl pasujące urządzenia" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:37 +msgid "Regular expression for matching device names" +msgstr "Wyrażenie regularne dla dopasowania nazw urządzeń" + +#: admin/systems/services/glpi/class_glpiAccount.inc:146 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:163 +msgid "There is no server with valid glpi database service." +msgstr "Brak serwera z poprawną usługą bazy glpi." + +#: admin/systems/services/glpi/class_glpiAccount.inc:156 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:173 +msgid "Can't connect to glpi database, the php-mysql extension is missing." +msgstr "" +"Nie można połączyć się z bazą danych glpi, brak rozszerzenia php-mysql." + +#: admin/systems/services/glpi/class_glpiAccount.inc:166 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:183 +msgid "Can't connect to glpi database, check configuration twice." +msgstr "" +"Nie można połączyć się z bazą danych glpi, proszę sprawdzić konfigurację." + +#: admin/systems/services/glpi/class_glpiAccount.inc:181 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:198 +msgid "Download of attachment failed. Attachment was not found on server." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:184 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:201 +msgid "Download of attachment failed. Not a valid attachment id." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:198 +#: admin/systems/services/glpi/class_glpiAccount.inc:204 +#: admin/systems/services/glpi/class_glpiAccount.inc:210 +msgid "This feature is not implemented yet." +msgstr "Ta funkcjonalność nie jest jeszcze zaimplementowana." + +#: admin/systems/services/glpi/class_glpiAccount.inc:312 +msgid "Adding new sytem type failed, this system type name is already used." +msgstr "" +"Dodawanie nowego typu systemu nieudane, nazwa typu systemu jest już używana." + +#: admin/systems/services/glpi/class_glpiAccount.inc:332 +#, php-format +msgid "" +"You can't delete this system type, it is still in use by these system(s) '%s'" +msgstr "" +"Nie można usunąć tego typu systemu. Jest wciąż używany przez system(y) '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:343 +msgid "Rename failed, this system type name is already used." +msgstr "Zmiana nazwy nieudana, ta nazwa typu systemu jest już w użyciu." + +#: admin/systems/services/glpi/class_glpiAccount.inc:399 +msgid "Adding new operating system failed, specifed name is already used." +msgstr "" +"Dodawanie nowego systemu operacyjnego nieudane, podana nazwa już istnieje." + +#: admin/systems/services/glpi/class_glpiAccount.inc:421 +#, php-format +msgid "" +"You can't delete this operating system, it is still in use by these system" +"(s) '%s'" +msgstr "" +"Nie można usunąć tego systemu operacyjnego. Jest wciąż używany przez system" +"(y) '%s'." + +#: admin/systems/services/glpi/class_glpiAccount.inc:433 +msgid "Updating operating system failed, specifed name is already used." +msgstr "" +"Aktualizacja systemu operacyjnego nieudana, podana nazwa jest już używana." + +#: admin/systems/services/glpi/class_glpiAccount.inc:512 +#, php-format +msgid "" +"Could not add the given user, the users dn is too long, only 100 characters " +"are allowed here." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:593 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:229 +msgid "Remove inventory" +msgstr "Usuń inwentarz" + +#: admin/systems/services/glpi/class_glpiAccount.inc:594 +msgid "" +"This device has inventory informations enabled. You can disable them by " +"clicking below." +msgstr "" +"To urządzenie posiada włączone informacje inwentarza. Można je wyłączyć " +"klikając poniżej." + +#: admin/systems/services/glpi/class_glpiAccount.inc:596 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:232 +msgid "Add inventory" +msgstr "Dodaj inwentarz" + +#: admin/systems/services/glpi/class_glpiAccount.inc:597 +msgid "" +"This device has inventory informations disabled. You can enable them by " +"clicking below." +msgstr "" +"To urządzenie posiada wyłączone informacje inwentarza. Można je włączyć " +"klikając poniżej." + +#: admin/systems/services/glpi/class_glpiAccount.inc:692 +#: admin/systems/services/glpi/class_glpiAccount.inc:693 +msgid "Can't remove glpi account, while mysql extension is missing." +msgstr "Nie można usunąć konta glpi, brak obsługi mysql w php." + +#: admin/systems/services/glpi/class_glpiAccount.inc:793 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:795 +msgid "Glpi" +msgstr "Glpi" + +#: admin/systems/services/glpi/class_glpiAccount.inc:794 +msgid "Inventory extension" +msgstr "Rozszerzenie inwentarza" + +#: admin/systems/services/glpi/class_glpiAccount.inc:804 +#: admin/systems/services/glpi/glpi.tpl:23 +msgid "Operating system" +msgstr "System operacyjny" + +#: admin/systems/services/glpi/class_glpiAccount.inc:805 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:809 +msgid "Location" +msgstr "Lokalizacja" + +#: admin/systems/services/glpi/class_glpiAccount.inc:807 +msgid "Model" +msgstr "Model" + +#: admin/systems/services/glpi/class_glpiAccount.inc:811 +msgid "Peripheral devices" +msgstr "Urządzenie peryferyjne" + +#: admin/systems/services/glpi/glpi.tpl:9 +msgid "System type" +msgstr "Typ systemu" + +#: admin/systems/services/glpi/glpi.tpl:96 +msgid "Installed devices" +msgstr "Zainstalowane urządzenia" + +#: admin/systems/services/glpi/glpi.tpl:112 +msgid "Trading" +msgstr "Handel" + +#: admin/systems/services/glpi/glpi.tpl:113 +msgid "Software" +msgstr "Oprogramowanie" + +#: admin/systems/services/glpi/glpi.tpl:114 +msgid "Contracts" +msgstr "Kontrakty" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:68 +#, fuzzy +msgid "attachment" +msgstr "Załącznik" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:107 +#, php-format +msgid "" +"You can't delete this attachment, it is still in use by these system(s) '%s'" +msgstr "" +"Nie można usunąć tego załącznika, jest wciąż używany przez system(y) '%s'" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:119 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:123 +msgid "There is no valid file uploaded." +msgstr "Brak wgranego poprawnego pliku." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:126 +msgid "Upload wasn't successfull." +msgstr "Wgrywanie nieudane." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:129 +#, fuzzy, php-format +msgid "Missing directory '%s/glpi/' to store glpi uploads." +msgstr "Brak katalogu '/etc/gosa/glpi' do przechowywania plików glpi." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:133 +msgid "There is already a file with the same name uploaded." +msgstr "Już istnieje wgrany plik z tą samą nazwą." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:137 +#, php-format +msgid "Can't create file '%s'." +msgstr "Nie można stworzyć pliku '%s'." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:181 +msgid "File is available." +msgstr "Plik jest dostępny" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:183 +msgid "File is not readable, possibly the file is missing." +msgstr "Nie można czytać pliku, prawdopodobnie plik nie istnieje." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:186 +msgid "Currently no file uploaded." +msgstr "Obecnie brak wgranych plików" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:198 +msgid "Mime" +msgstr "Mime" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:201 +msgid "This table displays all available attachments." +msgstr "Ta tabela wyświetla wszystkie dostepne załączniki" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:218 +msgid "empty" +msgstr "pusto" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:255 +msgid "Create new attachment" +msgstr "Stwórz nowy załącznik" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:256 +msgid "New Attachment" +msgstr "Nowy załącznik" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:349 +msgid "This name is already in use." +msgstr "Ta nazwa jest już w użyciu." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:352 +msgid "Please specify a valid name for this attachment." +msgstr "Proszę podać prawidłową nazwę dla tego załącznika." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:230 +msgid "" +"This server has inventory features enabled. You can disable them by clicking " +"below." +msgstr "" +"Ten serwer posiada cechy inwentarza. Można je wyłączyć klikając poniżej" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:233 +msgid "" +"This server has inventory features disabled. You can enable them by clicking " +"below." +msgstr "" +"Ten serwer nie posiada cech inwentarza. Można je włączyć klikając poniżej." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:256 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:294 +#, php-format +msgid "" +"Can't rename given printer type to '%s', because this type name already " +"exists." +msgstr "" +"Nie można zmienić nazwy typu drukarki na '%s' ponieważ ta nazwa typu jest " +"już używana." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:308 +#, php-format +msgid "Can't delete printer type, it is still in use by '%s'." +msgstr "Nie można usunąć typu drukarki, jest wciąż w użyciu przez '%s'." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:785 +msgid "since" +msgstr "od" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:796 +#, fuzzy +msgid "Printer inventory extension" +msgstr "Dodaj rozszerzenie drukarki" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:804 +msgid "Supports serial interface" +msgstr "Wspiera interfejs szeregowy" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:805 +msgid "Supports parallel interface" +msgstr "Wspiera interfejs równoległy" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:806 +msgid "Supports usb interface" +msgstr "Wspiera interfejs USB" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:816 +msgid "Cartridge settings" +msgstr "Ustawienia kartridźy" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:6 +msgid "List of users" +msgstr "Lista użytkowników" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:23 +msgid "" +"This dialog allows you to select a user as technical responsible person." +msgstr "Ten dialog umożliwia wybranie użytkownika jako kontaktu technicznego." + +#: admin/systems/services/glpi/glpiSelectUser.tpl:35 +msgid "Display users matching" +msgstr "Wyświetl użytkowników pasujących" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:37 +msgid "Regular expression for matching user names" +msgstr "Wyrażenie regularne do dopasowania nazw użytkowników" + +#: admin/systems/services/glpi/glpi_edit_os.tpl:1 +msgid "Manage OS-types" +msgstr "Zarządzaj typami systemów operacyjnych" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:53 +#, php-format +msgid "" +"You can't delete this manufacturer, it is still in use by these system(s) '%" +"s'" +msgstr "" +"Nie można usunąć tego producenta, jest on wciąż używany przez te system(y) '%" +"s'" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:99 +msgid "Please specify a name." +msgstr "Proszę podać nazwę" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:108 +#: admin/systems/services/glpi/class_glpiManufacturer.inc:114 +msgid "Specified name is already in use, please choose another one." +msgstr "Podana nazwa jest już używana, proszę wybrać inną." + +#: admin/systems/services/glpi/glpi_edit_type.tpl:1 +msgid "Manage System-types" +msgstr "Zarządzaj typami systemów" + +#~ msgid "You're about to delete the glpi attachment component '%s'." +#~ msgstr "Zamierzasz usunąć załącznik glpi '%s'." + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "You're about to delete the glpi device '%s'." +#~ msgstr "Zamierzasz usunąć urządzenie blpi '%s'." + +#~ msgid "You're about to delete the glpi cartridge type '%s'." +#~ msgstr "Zamierzasz usunąć kartridż glpi typu '%s'." diff --git a/trunk/gosa-plugins/glpi/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/glpi/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..1e5cbd7a2 --- /dev/null +++ b/trunk/gosa-plugins/glpi/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,1311 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Users" +msgstr "Пользователи" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Departments" +msgstr "Подразделения" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:109 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:51 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:51 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:51 +#, fuzzy +msgid "Use" +msgstr "Пользователь" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#, fuzzy +msgid "use" +msgstr "Мышь" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +#, fuzzy +msgid "Go to root department" +msgstr "Список подразделений" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +#, fuzzy +msgid "Root" +msgstr "Перезагрузить" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +#, fuzzy +msgid "Go up one department" +msgstr "Подразделение" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Up" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +#, fuzzy +msgid "Go to users department" +msgstr "Выберите подразделение" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +#, fuzzy +msgid "Home" +msgstr "Имя системы" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +msgid "Reload list" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:178 +msgid "Base" +msgstr "Ветка" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +#, fuzzy +msgid "Submit department" +msgstr "Показать подразделения" + +#: admin/systems/services/glpi/goGlpiServer.tpl:1 +#, fuzzy +msgid "GLPI database information" +msgstr "Общая информация о пользователе" + +#: admin/systems/services/glpi/goGlpiServer.tpl:4 +msgid "Logging DB user" +msgstr "" + +#: admin/systems/services/glpi/goGlpiServer.tpl:12 +#: admin/systems/services/glpi/class_goGlpiServer.inc:102 +msgid "Password" +msgstr "Пароль" + +#: admin/systems/services/glpi/goGlpiServer.tpl:20 +#: admin/systems/services/glpi/class_goGlpiServer.inc:101 +#, fuzzy +msgid "Database" +msgstr "Базы данных" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:8 +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:29 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:7 +#: admin/systems/services/glpi/glpi_edit_os.tpl:9 +#: admin/systems/services/glpi/glpi_edit_os.tpl:28 +#: admin/systems/services/glpi/glpi_edit_type.tpl:9 +#: admin/systems/services/glpi/glpi_edit_type.tpl:28 +#, fuzzy +msgid "Rename" +msgstr "Имя сервера" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:14 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:81 +#: admin/systems/services/glpi/glpiManufacturer.tpl:13 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:13 +#: admin/systems/services/glpi/glpi_edit_os.tpl:15 +#: admin/systems/services/glpi/glpi_edit_type.tpl:15 +#, fuzzy +msgid "Close" +msgstr "Выбрать" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:25 +#: admin/systems/services/glpi/glpi_edit_os.tpl:24 +#: admin/systems/services/glpi/glpi_edit_type.tpl:24 +#, fuzzy +msgid "Please enter a new name" +msgstr "Введите адрес сервера" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:2 +#, fuzzy +msgid "Attachment" +msgstr "подразделения" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:10 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:7 +#: admin/systems/services/glpi/glpi_devices.tpl:10 +#: admin/systems/services/glpi/glpi_devices.tpl:105 +#: admin/systems/services/glpi/glpi_devices.tpl:146 +#: admin/systems/services/glpi/glpi_devices.tpl:201 +#: admin/systems/services/glpi/glpi_devices.tpl:257 +#: admin/systems/services/glpi/glpi_devices.tpl:315 +#: admin/systems/services/glpi/glpi_devices.tpl:379 +#: admin/systems/services/glpi/glpi_devices.tpl:451 +#: admin/systems/services/glpi/glpi_devices.tpl:515 +#: admin/systems/services/glpi/glpi_devices.tpl:562 +#: admin/systems/services/glpi/glpi_devices.tpl:615 +#: admin/systems/services/glpi/glpi_devices.tpl:669 +#: admin/systems/services/glpi/glpi_devices.tpl:715 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:7 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:197 +msgid "Name" +msgstr "Фамилия" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:18 +#: admin/systems/services/glpi/glpi_devices.tpl:112 +#: admin/systems/services/glpi/glpi_devices.tpl:153 +#: admin/systems/services/glpi/glpi_devices.tpl:208 +#: admin/systems/services/glpi/glpi_devices.tpl:264 +#: admin/systems/services/glpi/glpi_devices.tpl:322 +#: admin/systems/services/glpi/glpi_devices.tpl:386 +#: admin/systems/services/glpi/glpi_devices.tpl:458 +#: admin/systems/services/glpi/glpi_devices.tpl:522 +#: admin/systems/services/glpi/glpi_devices.tpl:569 +#: admin/systems/services/glpi/glpi_devices.tpl:622 +#: admin/systems/services/glpi/glpi_devices.tpl:676 +#: admin/systems/services/glpi/glpi_devices.tpl:722 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:25 +#: admin/systems/services/glpi/class_glpiAccount.inc:803 +#: admin/systems/services/glpi/glpi.tpl:79 +#, fuzzy +msgid "Comment" +msgstr "Контакт" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:30 +#, fuzzy +msgid "File" +msgstr "Файлы" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:33 +#, fuzzy +msgid "Upload" +msgstr "Загрузка процессора" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:38 +msgid "Status" +msgstr "Состояние" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:46 +#, fuzzy +msgid "Filename" +msgstr "Имя сервера" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:54 +#, fuzzy +msgid "Mime-type" +msgstr "Тип" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:104 +msgid "Can't delete this entry, it is still in use." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:268 +#: admin/systems/services/glpi/class_glpiAccount.inc:656 +#: admin/systems/services/glpi/class_glpiAccount.inc:671 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:633 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:648 +msgid "N/A" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:286 +#, fuzzy +msgid "The selected name is already in use." +msgstr "Указанное имя уже используется." + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:92 +#, fuzzy +msgid "cartridge" +msgstr "Клиентские устройства" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:111 +#, php-format +msgid "" +"You can't delete this cartridge type, it is still in use by this printer(s) " +"'%s'." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:158 +msgid "Cartridges" +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:159 +msgid "Action" +msgstr "Действие" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:163 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:187 +#: admin/systems/services/glpi/glpiPrinter.tpl:88 +#: admin/systems/services/glpi/glpiPrinter.tpl:99 +#: admin/systems/services/glpi/glpiManufacturer.tpl:7 +#: admin/systems/services/glpi/glpi.tpl:61 +#: admin/systems/services/glpi/glpi.tpl:71 +#: admin/systems/services/glpi/glpi.tpl:106 +msgid "Edit" +msgstr "Изменить" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:164 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:188 +msgid "Delete" +msgstr "Удалить" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +#, fuzzy +msgid "New monitor" +msgstr "Новый пароль" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +#, fuzzy +msgid "M" +msgstr "Мб" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:1 +#, fuzzy +msgid "Add/Edit manufacturer" +msgstr "Редактиовать объект" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:14 +#, fuzzy +msgid "Website" +msgstr "запись" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:21 +msgid "Address" +msgstr "Адрес" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:32 +#, fuzzy +msgid "Phone number" +msgstr "Телефонные номера" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:39 +msgid "Fax" +msgstr "Факс" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:46 +msgid "Email" +msgstr "Email" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:53 +#: admin/systems/services/glpi/glpi_devices.tpl:17 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:22 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:808 +#, fuzzy +msgid "Comments" +msgstr "Контакт" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:88 +#, php-format +msgid "Internal Error can't create device of type '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:108 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:110 +#, fuzzy +msgid "glpi device" +msgstr "Устройства" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:112 +msgid "Can't detect object name." +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:133 +#, php-format +msgid "" +"You can't delete this device, it is still in use by these system(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:183 +#, fuzzy +msgid "devices" +msgstr "Устройства" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:184 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:199 +msgid "Actions" +msgstr "Действия" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +#, fuzzy +msgid "New mainbord" +msgstr "Новый пароль" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "MB" +msgstr "Мб" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +#, fuzzy +msgid "New processor" +msgstr "Новый пароль" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "P" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +#, fuzzy +msgid "New case" +msgstr "пользователи" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "C" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +#, fuzzy +msgid "New network interface" +msgstr "Сетевой принтер" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +#, fuzzy +msgid "NI" +msgstr "Unix" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +#, fuzzy +msgid "New ram" +msgstr "пользователи" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "R" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +#, fuzzy +msgid "New hard disk" +msgstr "Сервер" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "HDD" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +#, fuzzy +msgid "New drive" +msgstr "Сервер" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +#, fuzzy +msgid "D" +msgstr "UID" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +#, fuzzy +msgid "New controller" +msgstr "Номер телефона" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "CS" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "New graphics card" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "GC" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +#, fuzzy +msgid "New sound card" +msgstr "Новый пароль" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "SC" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "New power supply" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "PS" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +#, fuzzy +msgid "New misc device" +msgstr "Сетевые устройства" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "OC" +msgstr "" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:346 +#, fuzzy +msgid "You have to specify a valid name for this device." +msgstr "Укажите корректный номер телефона." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:366 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:369 +#, fuzzy +msgid "This device name is already in use." +msgstr "Указанное имя уже используется." + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:392 +msgid "none" +msgstr "нет" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +#, fuzzy +msgid "None" +msgstr "нет" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +#, fuzzy +msgid "Other" +msgstr "Фильтры" + +#: admin/systems/services/glpi/glpiPrinter.tpl:6 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:4 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:34 +#: admin/systems/services/glpi/glpi.tpl:6 +msgid "Generic" +msgstr "Общее" + +#: admin/systems/services/glpi/glpiPrinter.tpl:9 +#, fuzzy +msgid "Printer type" +msgstr "Имя принтера" + +#: admin/systems/services/glpi/glpiPrinter.tpl:18 +#: admin/systems/services/glpi/glpiPrinter.tpl:32 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:43 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:53 +#: admin/systems/services/glpi/glpi.tpl:18 +#: admin/systems/services/glpi/glpi.tpl:32 +#: admin/systems/services/glpi/glpi.tpl:46 +#, fuzzy +msgid "edit" +msgstr "Изменить" + +#: admin/systems/services/glpi/glpiPrinter.tpl:23 +#: admin/systems/services/glpi/glpi_devices.tpl:24 +#: admin/systems/services/glpi/glpi_devices.tpl:123 +#: admin/systems/services/glpi/glpi_devices.tpl:164 +#: admin/systems/services/glpi/glpi_devices.tpl:219 +#: admin/systems/services/glpi/glpi_devices.tpl:275 +#: admin/systems/services/glpi/glpi_devices.tpl:333 +#: admin/systems/services/glpi/glpi_devices.tpl:397 +#: admin/systems/services/glpi/glpi_devices.tpl:469 +#: admin/systems/services/glpi/glpi_devices.tpl:533 +#: admin/systems/services/glpi/glpi_devices.tpl:580 +#: admin/systems/services/glpi/glpi_devices.tpl:633 +#: admin/systems/services/glpi/glpi_devices.tpl:687 +#: admin/systems/services/glpi/glpi_devices.tpl:733 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:47 +#: admin/systems/services/glpi/class_glpiAccount.inc:809 +#: admin/systems/services/glpi/glpi.tpl:37 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:812 +msgid "Manufacturer" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:39 +#, fuzzy +msgid "Supported interfaces" +msgstr "Сетевой принтер" + +#: admin/systems/services/glpi/glpiPrinter.tpl:48 +#, fuzzy +msgid "Serial" +msgstr "терминалы" + +#: admin/systems/services/glpi/glpiPrinter.tpl:58 +#, fuzzy +msgid "Parallel" +msgstr "Переменная" + +#: admin/systems/services/glpi/glpiPrinter.tpl:68 +msgid "USB" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:80 +#: admin/systems/services/glpi/glpi.tpl:52 +#, fuzzy +msgid "Contacts" +msgstr "Контакт" + +#: admin/systems/services/glpi/glpiPrinter.tpl:83 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:57 +#: admin/systems/services/glpi/class_glpiAccount.inc:802 +#: admin/systems/services/glpi/glpi.tpl:66 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:807 +msgid "Technical responsible" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinter.tpl:94 +#: admin/systems/services/glpi/class_glpiAccount.inc:806 +#: admin/systems/services/glpi/glpi.tpl:56 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:810 +#, fuzzy +msgid "Contact person" +msgstr "Контакт" + +#: admin/systems/services/glpi/glpiPrinter.tpl:107 +#: admin/systems/services/glpi/class_glpiAccount.inc:810 +#: admin/systems/services/glpi/glpi.tpl:117 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:814 +#, fuzzy +msgid "Attachments" +msgstr "подразделения" + +#: admin/systems/services/glpi/glpiPrinter.tpl:127 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:20 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:20 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:20 +#: admin/systems/services/glpi/glpiSelectUser.tpl:20 +msgid "Information" +msgstr "Информация" + +#: admin/systems/services/glpi/glpiPrinter.tpl:139 +#, fuzzy +msgid "Installed cartridges" +msgstr "Клиентские устройства" + +#: admin/systems/services/glpi/glpiPrinter.tpl:152 +#: admin/systems/services/glpi/glpiManufacturer.tpl:8 +msgid "Remove" +msgstr "Удалить" + +#: admin/systems/services/glpi/glpi_devices.tpl:2 +#, fuzzy +msgid "Add/Edit monitor" +msgstr "Редактиовать объект" + +#: admin/systems/services/glpi/glpi_devices.tpl:33 +#, fuzzy +msgid "Monitor size" +msgstr "Мониторинг" + +#: admin/systems/services/glpi/glpi_devices.tpl:36 +#, fuzzy +msgid "Inch" +msgstr "Французский" + +#: admin/systems/services/glpi/glpi_devices.tpl:44 +msgid "Integrated microphone" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:47 +#: admin/systems/services/glpi/glpi_devices.tpl:55 +#: admin/systems/services/glpi/glpi_devices.tpl:63 +#: admin/systems/services/glpi/glpi_devices.tpl:71 +#: admin/systems/services/glpi/glpi_devices.tpl:176 +#: admin/systems/services/glpi/glpi_devices.tpl:296 +#: admin/systems/services/glpi/glpi_devices.tpl:361 +#, fuzzy +msgid "Yes" +msgstr "Системы" + +#: admin/systems/services/glpi/glpi_devices.tpl:48 +#: admin/systems/services/glpi/glpi_devices.tpl:56 +#: admin/systems/services/glpi/glpi_devices.tpl:64 +#: admin/systems/services/glpi/glpi_devices.tpl:72 +#: admin/systems/services/glpi/glpi_devices.tpl:177 +#: admin/systems/services/glpi/glpi_devices.tpl:297 +#: admin/systems/services/glpi/glpi_devices.tpl:362 +#, fuzzy +msgid "No" +msgstr "нет" + +#: admin/systems/services/glpi/glpi_devices.tpl:52 +msgid "Integrated speakers" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:60 +msgid "Sub-D" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:68 +msgid "BNC" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:76 +#, fuzzy +msgid "Serial number" +msgstr "Терминал" + +#: admin/systems/services/glpi/glpi_devices.tpl:83 +#, fuzzy +msgid "Additional serial number" +msgstr "Серийный номер сертификата" + +#: admin/systems/services/glpi/glpi_devices.tpl:97 +#, fuzzy +msgid "Add/Edit other device" +msgstr "Звуковая карта" + +#: admin/systems/services/glpi/glpi_devices.tpl:138 +msgid "Add/Edit power supply" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:173 +msgid "Atx" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:181 +#, fuzzy +msgid "Power" +msgstr "Порт" + +#: admin/systems/services/glpi/glpi_devices.tpl:193 +msgid "Add/Edit graphic card" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:228 +#: admin/systems/services/glpi/glpi_devices.tpl:284 +#: admin/systems/services/glpi/glpi_devices.tpl:349 +msgid "Interface" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:237 +#, fuzzy +msgid "Ram" +msgstr "Имя сервера" + +#: admin/systems/services/glpi/glpi_devices.tpl:249 +#, fuzzy +msgid "Add/Edit controller" +msgstr "Номер телефона" + +#: admin/systems/services/glpi/glpi_devices.tpl:293 +#: admin/systems/services/glpi/glpi_devices.tpl:420 +#: admin/systems/services/glpi/glpi_devices.tpl:485 +msgid "Size" +msgstr "Размер" + +#: admin/systems/services/glpi/glpi_devices.tpl:307 +msgid "Add/Edit drive" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:342 +#, fuzzy +msgid "Speed" +msgstr "Пол" + +#: admin/systems/services/glpi/glpi_devices.tpl:358 +#, fuzzy +msgid "Writeable" +msgstr "запись" + +#: admin/systems/services/glpi/glpi_devices.tpl:371 +#, fuzzy +msgid "Add/Edit harddisk" +msgstr "Сервер" + +#: admin/systems/services/glpi/glpi_devices.tpl:406 +msgid "Rpm" +msgstr "" + +#: admin/systems/services/glpi/glpi_devices.tpl:413 +#, fuzzy +msgid "Cache" +msgstr "Отмена" + +#: admin/systems/services/glpi/glpi_devices.tpl:427 +#: admin/systems/services/glpi/glpi_devices.tpl:492 +#: admin/systems/services/glpi/glpi_devices.tpl:542 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:37 +#: admin/systems/services/glpi/class_glpiAccount.inc:808 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:811 +msgid "Type" +msgstr "Тип" + +#: admin/systems/services/glpi/glpi_devices.tpl:443 +#, fuzzy +msgid "Add/Edit memory" +msgstr "Редактиовать объект" + +#: admin/systems/services/glpi/glpi_devices.tpl:478 +#, fuzzy +msgid "Frequenz" +msgstr "Номер телефона" + +#: admin/systems/services/glpi/glpi_devices.tpl:507 +#, fuzzy +msgid "Add/Edit sound card" +msgstr "Новый пароль" + +#: admin/systems/services/glpi/glpi_devices.tpl:553 +#, fuzzy +msgid "Add/Edit network interface" +msgstr "Сетевой принтер" + +#: admin/systems/services/glpi/glpi_devices.tpl:589 +#, fuzzy +msgid "MAC address" +msgstr "MAC-адрес" + +#: admin/systems/services/glpi/glpi_devices.tpl:596 +msgid "Bandwidth" +msgstr "Пропускная способность" + +#: admin/systems/services/glpi/glpi_devices.tpl:607 +#, fuzzy +msgid "Add/Edit processor" +msgstr "Новый пароль" + +#: admin/systems/services/glpi/glpi_devices.tpl:642 +#, fuzzy +msgid "Frequence" +msgstr "Номер телефона" + +#: admin/systems/services/glpi/glpi_devices.tpl:649 +#, fuzzy +msgid "Default frequence" +msgstr "По умолчанию" + +#: admin/systems/services/glpi/glpi_devices.tpl:661 +#, fuzzy +msgid "Add/Edit motherboard" +msgstr "Клавиатура" + +#: admin/systems/services/glpi/glpi_devices.tpl:696 +#, fuzzy +msgid "Chipset" +msgstr "сброс" + +#: admin/systems/services/glpi/glpi_devices.tpl:707 +#, fuzzy +msgid "Add/Edit computer case" +msgstr "не полный" + +#: admin/systems/services/glpi/glpi_devices.tpl:742 +#, fuzzy +msgid "format" +msgstr "Порт" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:32 +#: admin/systems/services/glpi/class_goGlpiServer.inc:87 +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +#, fuzzy +msgid "Inventory database" +msgstr "Базы данных" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:58 +#, fuzzy +msgid "Inventory database service" +msgstr "Базы данных" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:67 +#, fuzzy +msgid "The attribute user is empty or contains invalid characters." +msgstr "Неправильное указание таймаута '%s'" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:70 +#, fuzzy +msgid "The attribute database is empty or contains invalid characters." +msgstr "Неправильное указание таймаута '%s'" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:96 +#, fuzzy +msgid "Start" +msgstr "Запуск" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:97 +msgid "Stop" +msgstr "" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:98 +#, fuzzy +msgid "Restart" +msgstr "Повторить" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:100 +#, fuzzy +msgid "Admin" +msgstr "DN администратора" + +#: admin/systems/services/glpi/glpiManufacturer.tpl:1 +#, fuzzy +msgid "Manage manufacturers" +msgstr "Редактиовать объект" + +#: admin/systems/services/glpi/remove_glpi.tpl:2 +msgid "Warning" +msgstr "Предупреждение" + +#: admin/systems/services/glpi/remove_glpi.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Подумайте еще раз, действительно ли вам нужно удаление, так как GOsa не " +"сможет отменить результаты этой операции." + +#: admin/systems/services/glpi/remove_glpi.tpl:10 +#, fuzzy +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your MySql database in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Лучше всего перед удалением сохранить резервную копию текущего дерева LDAP в " +"файл. Если вы сделали это и действительно хотите выполнить удаление, нажмите " +"Удалить, иначе нажмите Отмена." + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:14 +#, fuzzy +msgid "Reference" +msgstr "Ссылки" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:61 +msgid "Choose" +msgstr "Выбрать" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:6 +msgid "List of available cartridge type for this type of printer" +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:23 +msgid "" +"This dialog allows you to create new types of cartridges, and select one or " +"more types for your printer. Cartridge types depends on the printer type you " +"have selected. For each selected cartridge type there will be a new " +"cartridge created, this allows you to select the same cartridge type for " +"more then one printer." +msgstr "" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:27 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:27 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:27 +#: admin/systems/services/glpi/glpiSelectUser.tpl:27 +msgid "Filters" +msgstr "Фильтры" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:35 +#, fuzzy +msgid "Display cartridge types matching" +msgstr "Показать совпадения номеров" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:37 +#, fuzzy +msgid "Regular expression for matching cartridge types" +msgstr "Регулярное выражение для поиска адреса" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:6 +#, fuzzy +msgid "List of attachments" +msgstr "Список подразделений" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:23 +msgid "" +"This dialog allow you to attach additional objects (like manuals, guides, " +"etc.) to your currently edited computer." +msgstr "" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:35 +#, fuzzy +msgid "Display attachments matching" +msgstr "Шаблон для подразделений" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:37 +#, fuzzy +msgid "Regular expression for matching attachment names" +msgstr "Регулярное выражение, соответствующее именам подразделений" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:6 +#, fuzzy +msgid "List of devices" +msgstr "Список пользователей" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:23 +msgid "" +"This dialog allows you to attach a device to your currently edited computer." +msgstr "" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:35 +#, fuzzy +msgid "Display devices matching" +msgstr "Показать подходяшие адреса" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:37 +#, fuzzy +msgid "Regular expression for matching device names" +msgstr "Регулярное выражение, соответствующее именам пользователей" + +#: admin/systems/services/glpi/class_glpiAccount.inc:146 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:163 +msgid "There is no server with valid glpi database service." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:156 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:173 +#, fuzzy +msgid "Can't connect to glpi database, the php-mysql extension is missing." +msgstr "Не удается подключиться к базе журналов, отчеты показаны не будут!" + +#: admin/systems/services/glpi/class_glpiAccount.inc:166 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:183 +#, fuzzy +msgid "Can't connect to glpi database, check configuration twice." +msgstr "Не удается подключиться к базе журналов, отчеты показаны не будут!" + +#: admin/systems/services/glpi/class_glpiAccount.inc:181 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:198 +msgid "Download of attachment failed. Attachment was not found on server." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:184 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:201 +msgid "Download of attachment failed. Not a valid attachment id." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:198 +#: admin/systems/services/glpi/class_glpiAccount.inc:204 +#: admin/systems/services/glpi/class_glpiAccount.inc:210 +msgid "This feature is not implemented yet." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:312 +msgid "Adding new sytem type failed, this system type name is already used." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:332 +#, php-format +msgid "" +"You can't delete this system type, it is still in use by these system(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:343 +#, fuzzy +msgid "Rename failed, this system type name is already used." +msgstr "Указанное имя уже используется." + +#: admin/systems/services/glpi/class_glpiAccount.inc:399 +#, fuzzy +msgid "Adding new operating system failed, specifed name is already used." +msgstr "Группа с таким именем уже существует." + +#: admin/systems/services/glpi/class_glpiAccount.inc:421 +#, php-format +msgid "" +"You can't delete this operating system, it is still in use by these system" +"(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:433 +#, fuzzy +msgid "Updating operating system failed, specifed name is already used." +msgstr "Группа с таким именем уже существует." + +#: admin/systems/services/glpi/class_glpiAccount.inc:512 +#, php-format +msgid "" +"Could not add the given user, the users dn is too long, only 100 characters " +"are allowed here." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:593 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:229 +#, fuzzy +msgid "Remove inventory" +msgstr "Удалить объект" + +#: admin/systems/services/glpi/class_glpiAccount.inc:594 +#, fuzzy +msgid "" +"This device has inventory informations enabled. You can disable them by " +"clicking below." +msgstr "" +"В этой учетной записи есть настройки факса. Вы можете удалить их, щелкнув " +"ниже." + +#: admin/systems/services/glpi/class_glpiAccount.inc:596 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:232 +#, fuzzy +msgid "Add inventory" +msgstr "Добавить объект" + +#: admin/systems/services/glpi/class_glpiAccount.inc:597 +#, fuzzy +msgid "" +"This device has inventory informations disabled. You can enable them by " +"clicking below." +msgstr "" +"В этой учетной записи нет настроек факса. Вы можете добавить их, щелкнув " +"ниже." + +#: admin/systems/services/glpi/class_glpiAccount.inc:692 +#: admin/systems/services/glpi/class_glpiAccount.inc:693 +#, fuzzy +msgid "Can't remove glpi account, while mysql extension is missing." +msgstr "Не удается подключиться к базе журналов, отчеты показаны не будут!" + +#: admin/systems/services/glpi/class_glpiAccount.inc:793 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:795 +msgid "Glpi" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:794 +#, fuzzy +msgid "Inventory extension" +msgstr "Удалить параметры" + +#: admin/systems/services/glpi/class_glpiAccount.inc:804 +#: admin/systems/services/glpi/glpi.tpl:23 +#, fuzzy +msgid "Operating system" +msgstr "Удалить" + +#: admin/systems/services/glpi/class_glpiAccount.inc:805 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:809 +msgid "Location" +msgstr "Местоположение" + +#: admin/systems/services/glpi/class_glpiAccount.inc:807 +msgid "Model" +msgstr "Модель" + +#: admin/systems/services/glpi/class_glpiAccount.inc:811 +#, fuzzy +msgid "Peripheral devices" +msgstr "Сетевые устройства" + +#: admin/systems/services/glpi/glpi.tpl:9 +#, fuzzy +msgid "System type" +msgstr "Системы" + +#: admin/systems/services/glpi/glpi.tpl:96 +#, fuzzy +msgid "Installed devices" +msgstr "Клиентские устройства" + +#: admin/systems/services/glpi/glpi.tpl:112 +#, fuzzy +msgid "Trading" +msgstr "Затенение" + +#: admin/systems/services/glpi/glpi.tpl:113 +#, fuzzy +msgid "Software" +msgstr "Адм. единица" + +#: admin/systems/services/glpi/glpi.tpl:114 +#, fuzzy +msgid "Contracts" +msgstr "Контакт" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:68 +#, fuzzy +msgid "attachment" +msgstr "подразделения" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:107 +#, php-format +msgid "" +"You can't delete this attachment, it is still in use by these system(s) '%s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:119 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:123 +#, fuzzy +msgid "There is no valid file uploaded." +msgstr "Файл небыл загружен" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:126 +#, fuzzy +msgid "Upload wasn't successfull." +msgstr "Экспорт успешен." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:129 +#, php-format +msgid "Missing directory '%s/glpi/' to store glpi uploads." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:133 +#, fuzzy +msgid "There is already a file with the same name uploaded." +msgstr "" +"Пользователь с таким регистрационным именем в базе данных уже существует." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:137 +#, fuzzy, php-format +msgid "Can't create file '%s'." +msgstr "Удалить" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:181 +msgid "File is available." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:183 +msgid "File is not readable, possibly the file is missing." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:186 +#, fuzzy +msgid "Currently no file uploaded." +msgstr "Файл небыл загружен" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:198 +#, fuzzy +msgid "Mime" +msgstr "Мобильный" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:201 +msgid "This table displays all available attachments." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:218 +#, fuzzy +msgid "empty" +msgstr "Шаблон" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:255 +#, fuzzy +msgid "Create new attachment" +msgstr "Подразделение" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:256 +#, fuzzy +msgid "New Attachment" +msgstr "подразделения" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:349 +#, fuzzy +msgid "This name is already in use." +msgstr "Указанное имя уже используется." + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:352 +#, fuzzy +msgid "Please specify a valid name for this attachment." +msgstr "Укажите корректный номер телефона." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:230 +#, fuzzy +msgid "" +"This server has inventory features enabled. You can disable them by clicking " +"below." +msgstr "" +"В этой учетной записи есть настройки факса. Вы можете удалить их, щелкнув " +"ниже." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:233 +#, fuzzy +msgid "" +"This server has inventory features disabled. You can enable them by clicking " +"below." +msgstr "" +"В этой учетной записи нет настроек факса. Вы можете добавить их, щелкнув " +"ниже." + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:256 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:294 +#, php-format +msgid "" +"Can't rename given printer type to '%s', because this type name already " +"exists." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:308 +#, php-format +msgid "Can't delete printer type, it is still in use by '%s'." +msgstr "" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:785 +#, fuzzy +msgid "since" +msgstr "Работает с" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:796 +#, fuzzy +msgid "Printer inventory extension" +msgstr "Удалить параметры" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:804 +#, fuzzy +msgid "Supports serial interface" +msgstr "Сетевой принтер" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:805 +#, fuzzy +msgid "Supports parallel interface" +msgstr "Сетевой принтер" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:806 +#, fuzzy +msgid "Supports usb interface" +msgstr "Сетевой принтер" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:816 +#, fuzzy +msgid "Cartridge settings" +msgstr "Почтовые настройки пользователя" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:6 +msgid "List of users" +msgstr "Список пользователей" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:23 +msgid "" +"This dialog allows you to select a user as technical responsible person." +msgstr "" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:35 +msgid "Display users matching" +msgstr "Фильтр" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:37 +msgid "Regular expression for matching user names" +msgstr "Регулярное выражение, соответствующее именам пользователей" + +#: admin/systems/services/glpi/glpi_edit_os.tpl:1 +msgid "Manage OS-types" +msgstr "" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:53 +#, php-format +msgid "" +"You can't delete this manufacturer, it is still in use by these system(s) '%" +"s'" +msgstr "" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:99 +#, fuzzy +msgid "Please specify a name." +msgstr "Введите корректное имя пользователя!" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:108 +#: admin/systems/services/glpi/class_glpiManufacturer.inc:114 +#, fuzzy +msgid "Specified name is already in use, please choose another one." +msgstr "Группа с таким именем уже существует." + +#: admin/systems/services/glpi/glpi_edit_type.tpl:1 +#, fuzzy +msgid "Manage System-types" +msgstr "Системы" + +#, fuzzy +#~ msgid "You're about to delete the glpi attachment component '%s'." +#~ msgstr "Вы собираетесь удалить приложение \"%s\"." + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#, fuzzy +#~ msgid "You're about to delete the glpi device '%s'." +#~ msgstr "Вы собираетесь удалить группу \"%s\"." + +#, fuzzy +#~ msgid "You're about to delete the glpi cartridge type '%s'." +#~ msgstr "Вы собираетесь удалить приложение \"%s\"." diff --git a/trunk/gosa-plugins/glpi/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/glpi/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..7646cad11 --- /dev/null +++ b/trunk/gosa-plugins/glpi/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,1180 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Users" +msgstr "用户" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:108 +msgid "Departments" +msgstr "部门" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:109 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:51 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:51 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:51 +msgid "Use" +msgstr "使用" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:136 +msgid "use" +msgstr "使用" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Go to root department" +msgstr "转到根部门" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:172 +msgid "Root" +msgstr "æ ¹" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Go up one department" +msgstr "向上跳转一个部门" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:174 +msgid "Up" +msgstr "上" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Go to users department" +msgstr "转到用户部门" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:176 +msgid "Home" +msgstr "" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +msgid "Reload list" +msgstr "重新加载列表" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:177 +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit" +msgstr "提交" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:178 +msgid "Base" +msgstr "位置" + +#: admin/systems/services/glpi/class_glpiSelectUser.inc:181 +msgid "Submit department" +msgstr "提交部门" + +#: admin/systems/services/glpi/goGlpiServer.tpl:1 +#, fuzzy +msgid "GLPI database information" +msgstr "用户一般信息" + +#: admin/systems/services/glpi/goGlpiServer.tpl:4 +msgid "Logging DB user" +msgstr "Logging DB 用户" + +#: admin/systems/services/glpi/goGlpiServer.tpl:12 +#: admin/systems/services/glpi/class_goGlpiServer.inc:102 +msgid "Password" +msgstr "口令" + +#: admin/systems/services/glpi/goGlpiServer.tpl:20 +#: admin/systems/services/glpi/class_goGlpiServer.inc:101 +msgid "Database" +msgstr "数据库" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:8 +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:29 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:7 +#: admin/systems/services/glpi/glpi_edit_os.tpl:9 +#: admin/systems/services/glpi/glpi_edit_os.tpl:28 +#: admin/systems/services/glpi/glpi_edit_type.tpl:9 +#: admin/systems/services/glpi/glpi_edit_type.tpl:28 +msgid "Rename" +msgstr "重命名" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:14 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:81 +#: admin/systems/services/glpi/glpiManufacturer.tpl:13 +#: admin/systems/services/glpi/glpi_edit_cartridge_type.tpl:13 +#: admin/systems/services/glpi/glpi_edit_os.tpl:15 +#: admin/systems/services/glpi/glpi_edit_type.tpl:15 +msgid "Close" +msgstr "关闭" + +#: admin/systems/services/glpi/glpi_edit_printer_type.tpl:25 +#: admin/systems/services/glpi/glpi_edit_os.tpl:24 +#: admin/systems/services/glpi/glpi_edit_type.tpl:24 +msgid "Please enter a new name" +msgstr "请输入一个新名称" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:2 +msgid "Attachment" +msgstr "附件" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:10 +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:7 +#: admin/systems/services/glpi/glpi_devices.tpl:10 +#: admin/systems/services/glpi/glpi_devices.tpl:105 +#: admin/systems/services/glpi/glpi_devices.tpl:146 +#: admin/systems/services/glpi/glpi_devices.tpl:201 +#: admin/systems/services/glpi/glpi_devices.tpl:257 +#: admin/systems/services/glpi/glpi_devices.tpl:315 +#: admin/systems/services/glpi/glpi_devices.tpl:379 +#: admin/systems/services/glpi/glpi_devices.tpl:451 +#: admin/systems/services/glpi/glpi_devices.tpl:515 +#: admin/systems/services/glpi/glpi_devices.tpl:562 +#: admin/systems/services/glpi/glpi_devices.tpl:615 +#: admin/systems/services/glpi/glpi_devices.tpl:669 +#: admin/systems/services/glpi/glpi_devices.tpl:715 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:7 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:197 +msgid "Name" +msgstr "名称" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:18 +#: admin/systems/services/glpi/glpi_devices.tpl:112 +#: admin/systems/services/glpi/glpi_devices.tpl:153 +#: admin/systems/services/glpi/glpi_devices.tpl:208 +#: admin/systems/services/glpi/glpi_devices.tpl:264 +#: admin/systems/services/glpi/glpi_devices.tpl:322 +#: admin/systems/services/glpi/glpi_devices.tpl:386 +#: admin/systems/services/glpi/glpi_devices.tpl:458 +#: admin/systems/services/glpi/glpi_devices.tpl:522 +#: admin/systems/services/glpi/glpi_devices.tpl:569 +#: admin/systems/services/glpi/glpi_devices.tpl:622 +#: admin/systems/services/glpi/glpi_devices.tpl:676 +#: admin/systems/services/glpi/glpi_devices.tpl:722 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:25 +#: admin/systems/services/glpi/class_glpiAccount.inc:803 +#: admin/systems/services/glpi/glpi.tpl:79 +msgid "Comment" +msgstr "注释" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:30 +msgid "File" +msgstr "文件" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:33 +msgid "Upload" +msgstr "上传" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:38 +msgid "Status" +msgstr "状态" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:46 +msgid "Filename" +msgstr "文件名" + +#: admin/systems/services/glpi/glpiAttachmentEdit.tpl:54 +msgid "Mime-type" +msgstr "Mime-type" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:104 +msgid "Can't delete this entry, it is still in use." +msgstr "无法删除条目,仍在使用。" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:268 +#: admin/systems/services/glpi/class_glpiAccount.inc:656 +#: admin/systems/services/glpi/class_glpiAccount.inc:671 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:633 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:648 +msgid "N/A" +msgstr "N/A" + +#: admin/systems/services/glpi/class_glpiPrinterCartridgesEdit.inc:286 +msgid "The selected name is already in use." +msgstr "选择的名称已经被使用。" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:92 +#, fuzzy +msgid "cartridge" +msgstr "硒鼓" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:111 +#, php-format +msgid "" +"You can't delete this cartridge type, it is still in use by this printer(s) " +"'%s'." +msgstr "您不能删除这个硒鼓类型,它仍然在被这个打印机 '%s' 使用。" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:158 +msgid "Cartridges" +msgstr "硒鼓" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:159 +msgid "Action" +msgstr "行动" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:163 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:187 +#: admin/systems/services/glpi/glpiPrinter.tpl:88 +#: admin/systems/services/glpi/glpiPrinter.tpl:99 +#: admin/systems/services/glpi/glpiManufacturer.tpl:7 +#: admin/systems/services/glpi/glpi.tpl:61 +#: admin/systems/services/glpi/glpi.tpl:71 +#: admin/systems/services/glpi/glpi.tpl:106 +msgid "Edit" +msgstr "编辑" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:164 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:188 +msgid "Delete" +msgstr "删除" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "New monitor" +msgstr "新监视器" + +#: admin/systems/services/glpi/class_glpiPrinterCartridges.inc:206 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:221 +msgid "M" +msgstr "M" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:1 +msgid "Add/Edit manufacturer" +msgstr "添加/修改 生产商" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:14 +msgid "Website" +msgstr "网站" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:21 +msgid "Address" +msgstr "住址" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:32 +msgid "Phone number" +msgstr "电话号码" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:39 +msgid "Fax" +msgstr "传真" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:46 +msgid "Email" +msgstr "邮件" + +#: admin/systems/services/glpi/glpiManufacturerAdd.tpl:53 +#: admin/systems/services/glpi/glpi_devices.tpl:17 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:22 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:808 +msgid "Comments" +msgstr "注释" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:88 +#, php-format +msgid "Internal Error can't create device of type '%s'" +msgstr "内部错误:无法创建类型为 '%s' 的设备" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:108 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:110 +#, fuzzy +msgid "glpi device" +msgstr "设备" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:112 +msgid "Can't detect object name." +msgstr "无法检测对象名称。" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:133 +#, php-format +msgid "" +"You can't delete this device, it is still in use by these system(s) '%s'" +msgstr "您不能删除这个设备,它仍然被这些系统使用 '%s'" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:183 +msgid "devices" +msgstr "设备" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:184 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:199 +msgid "Actions" +msgstr "动作" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "New mainbord" +msgstr "新主板" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:223 +msgid "MB" +msgstr "MB" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "New processor" +msgstr "新处理器" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:225 +msgid "P" +msgstr "P" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "New case" +msgstr "新机箱" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:227 +msgid "C" +msgstr "C" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "New network interface" +msgstr "新建网络接口" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:229 +msgid "NI" +msgstr "NI" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "New ram" +msgstr "新内存" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:231 +msgid "R" +msgstr "R" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "New hard disk" +msgstr "新硬盘" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:233 +msgid "HDD" +msgstr "HDD" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "New drive" +msgstr "新驱动器" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:235 +msgid "D" +msgstr "D" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "New controller" +msgstr "新控制器" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:237 +msgid "CS" +msgstr "CS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "New graphics card" +msgstr "新显卡" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:239 +msgid "GC" +msgstr "GC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "New sound card" +msgstr "新声卡" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:241 +msgid "SC" +msgstr "SC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "New power supply" +msgstr "新电源" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:243 +msgid "PS" +msgstr "PS" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "New misc device" +msgstr "新建其他设备" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:245 +msgid "OC" +msgstr "OC" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:346 +msgid "You have to specify a valid name for this device." +msgstr "您必须为这个设备提供一个有效的名称。" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:366 +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:369 +msgid "This device name is already in use." +msgstr "这个设备名已经被使用。" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:392 +msgid "none" +msgstr "无" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "None" +msgstr "无" + +#: admin/systems/services/glpi/class_glpiDeviceManagement.inc:405 +msgid "Other" +msgstr "其他" + +#: admin/systems/services/glpi/glpiPrinter.tpl:6 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:4 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:34 +#: admin/systems/services/glpi/glpi.tpl:6 +msgid "Generic" +msgstr "通用配置" + +#: admin/systems/services/glpi/glpiPrinter.tpl:9 +msgid "Printer type" +msgstr "打印机类型" + +#: admin/systems/services/glpi/glpiPrinter.tpl:18 +#: admin/systems/services/glpi/glpiPrinter.tpl:32 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:43 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:53 +#: admin/systems/services/glpi/glpi.tpl:18 +#: admin/systems/services/glpi/glpi.tpl:32 +#: admin/systems/services/glpi/glpi.tpl:46 +msgid "edit" +msgstr "编辑" + +#: admin/systems/services/glpi/glpiPrinter.tpl:23 +#: admin/systems/services/glpi/glpi_devices.tpl:24 +#: admin/systems/services/glpi/glpi_devices.tpl:123 +#: admin/systems/services/glpi/glpi_devices.tpl:164 +#: admin/systems/services/glpi/glpi_devices.tpl:219 +#: admin/systems/services/glpi/glpi_devices.tpl:275 +#: admin/systems/services/glpi/glpi_devices.tpl:333 +#: admin/systems/services/glpi/glpi_devices.tpl:397 +#: admin/systems/services/glpi/glpi_devices.tpl:469 +#: admin/systems/services/glpi/glpi_devices.tpl:533 +#: admin/systems/services/glpi/glpi_devices.tpl:580 +#: admin/systems/services/glpi/glpi_devices.tpl:633 +#: admin/systems/services/glpi/glpi_devices.tpl:687 +#: admin/systems/services/glpi/glpi_devices.tpl:733 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:47 +#: admin/systems/services/glpi/class_glpiAccount.inc:809 +#: admin/systems/services/glpi/glpi.tpl:37 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:812 +msgid "Manufacturer" +msgstr "生产商" + +#: admin/systems/services/glpi/glpiPrinter.tpl:39 +msgid "Supported interfaces" +msgstr "支持的界面" + +#: admin/systems/services/glpi/glpiPrinter.tpl:48 +msgid "Serial" +msgstr "串行" + +#: admin/systems/services/glpi/glpiPrinter.tpl:58 +msgid "Parallel" +msgstr "并行" + +#: admin/systems/services/glpi/glpiPrinter.tpl:68 +msgid "USB" +msgstr "USB" + +#: admin/systems/services/glpi/glpiPrinter.tpl:80 +#: admin/systems/services/glpi/glpi.tpl:52 +msgid "Contacts" +msgstr "联系" + +#: admin/systems/services/glpi/glpiPrinter.tpl:83 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:57 +#: admin/systems/services/glpi/class_glpiAccount.inc:802 +#: admin/systems/services/glpi/glpi.tpl:66 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:807 +msgid "Technical responsible" +msgstr "技术联系人" + +#: admin/systems/services/glpi/glpiPrinter.tpl:94 +#: admin/systems/services/glpi/class_glpiAccount.inc:806 +#: admin/systems/services/glpi/glpi.tpl:56 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:810 +msgid "Contact person" +msgstr "联系人" + +#: admin/systems/services/glpi/glpiPrinter.tpl:107 +#: admin/systems/services/glpi/class_glpiAccount.inc:810 +#: admin/systems/services/glpi/glpi.tpl:117 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:814 +msgid "Attachments" +msgstr "附加" + +#: admin/systems/services/glpi/glpiPrinter.tpl:127 +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:20 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:20 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:20 +#: admin/systems/services/glpi/glpiSelectUser.tpl:20 +msgid "Information" +msgstr "提示信息" + +#: admin/systems/services/glpi/glpiPrinter.tpl:139 +msgid "Installed cartridges" +msgstr "安装的硒鼓" + +#: admin/systems/services/glpi/glpiPrinter.tpl:152 +#: admin/systems/services/glpi/glpiManufacturer.tpl:8 +msgid "Remove" +msgstr "删除" + +#: admin/systems/services/glpi/glpi_devices.tpl:2 +msgid "Add/Edit monitor" +msgstr "添加/修改 显示器" + +#: admin/systems/services/glpi/glpi_devices.tpl:33 +msgid "Monitor size" +msgstr "显示器大小" + +#: admin/systems/services/glpi/glpi_devices.tpl:36 +msgid "Inch" +msgstr "英寸" + +#: admin/systems/services/glpi/glpi_devices.tpl:44 +msgid "Integrated microphone" +msgstr "整合麦克风" + +#: admin/systems/services/glpi/glpi_devices.tpl:47 +#: admin/systems/services/glpi/glpi_devices.tpl:55 +#: admin/systems/services/glpi/glpi_devices.tpl:63 +#: admin/systems/services/glpi/glpi_devices.tpl:71 +#: admin/systems/services/glpi/glpi_devices.tpl:176 +#: admin/systems/services/glpi/glpi_devices.tpl:296 +#: admin/systems/services/glpi/glpi_devices.tpl:361 +msgid "Yes" +msgstr "是" + +#: admin/systems/services/glpi/glpi_devices.tpl:48 +#: admin/systems/services/glpi/glpi_devices.tpl:56 +#: admin/systems/services/glpi/glpi_devices.tpl:64 +#: admin/systems/services/glpi/glpi_devices.tpl:72 +#: admin/systems/services/glpi/glpi_devices.tpl:177 +#: admin/systems/services/glpi/glpi_devices.tpl:297 +#: admin/systems/services/glpi/glpi_devices.tpl:362 +msgid "No" +msgstr "否" + +#: admin/systems/services/glpi/glpi_devices.tpl:52 +msgid "Integrated speakers" +msgstr "整合音箱" + +#: admin/systems/services/glpi/glpi_devices.tpl:60 +msgid "Sub-D" +msgstr "Sub-D" + +#: admin/systems/services/glpi/glpi_devices.tpl:68 +msgid "BNC" +msgstr "BNC" + +#: admin/systems/services/glpi/glpi_devices.tpl:76 +msgid "Serial number" +msgstr "系列号" + +#: admin/systems/services/glpi/glpi_devices.tpl:83 +msgid "Additional serial number" +msgstr "附加系列号" + +#: admin/systems/services/glpi/glpi_devices.tpl:97 +msgid "Add/Edit other device" +msgstr "添加/修改 其他设备" + +#: admin/systems/services/glpi/glpi_devices.tpl:138 +msgid "Add/Edit power supply" +msgstr "添加/修改 电源" + +#: admin/systems/services/glpi/glpi_devices.tpl:173 +msgid "Atx" +msgstr "Atx" + +#: admin/systems/services/glpi/glpi_devices.tpl:181 +msgid "Power" +msgstr "电源" + +#: admin/systems/services/glpi/glpi_devices.tpl:193 +msgid "Add/Edit graphic card" +msgstr "添加/修改 显卡" + +#: admin/systems/services/glpi/glpi_devices.tpl:228 +#: admin/systems/services/glpi/glpi_devices.tpl:284 +#: admin/systems/services/glpi/glpi_devices.tpl:349 +msgid "Interface" +msgstr "界面" + +#: admin/systems/services/glpi/glpi_devices.tpl:237 +msgid "Ram" +msgstr "Ram" + +#: admin/systems/services/glpi/glpi_devices.tpl:249 +msgid "Add/Edit controller" +msgstr "添加/修改 控制器" + +#: admin/systems/services/glpi/glpi_devices.tpl:293 +#: admin/systems/services/glpi/glpi_devices.tpl:420 +#: admin/systems/services/glpi/glpi_devices.tpl:485 +msgid "Size" +msgstr "大小" + +#: admin/systems/services/glpi/glpi_devices.tpl:307 +msgid "Add/Edit drive" +msgstr "添加/修改 驱动" + +#: admin/systems/services/glpi/glpi_devices.tpl:342 +msgid "Speed" +msgstr "速度" + +#: admin/systems/services/glpi/glpi_devices.tpl:358 +msgid "Writeable" +msgstr "可写" + +#: admin/systems/services/glpi/glpi_devices.tpl:371 +msgid "Add/Edit harddisk" +msgstr "添加/修改 硬盘" + +#: admin/systems/services/glpi/glpi_devices.tpl:406 +msgid "Rpm" +msgstr "Rpm" + +#: admin/systems/services/glpi/glpi_devices.tpl:413 +msgid "Cache" +msgstr "缓存" + +#: admin/systems/services/glpi/glpi_devices.tpl:427 +#: admin/systems/services/glpi/glpi_devices.tpl:492 +#: admin/systems/services/glpi/glpi_devices.tpl:542 +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:37 +#: admin/systems/services/glpi/class_glpiAccount.inc:808 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:811 +msgid "Type" +msgstr "类型" + +#: admin/systems/services/glpi/glpi_devices.tpl:443 +msgid "Add/Edit memory" +msgstr "添加/修改 内存" + +#: admin/systems/services/glpi/glpi_devices.tpl:478 +msgid "Frequenz" +msgstr "频率" + +#: admin/systems/services/glpi/glpi_devices.tpl:507 +msgid "Add/Edit sound card" +msgstr "添加/修改 声卡" + +#: admin/systems/services/glpi/glpi_devices.tpl:553 +msgid "Add/Edit network interface" +msgstr "添加/修改 网卡" + +#: admin/systems/services/glpi/glpi_devices.tpl:589 +msgid "MAC address" +msgstr "MAC 地址" + +#: admin/systems/services/glpi/glpi_devices.tpl:596 +msgid "Bandwidth" +msgstr "带宽" + +#: admin/systems/services/glpi/glpi_devices.tpl:607 +msgid "Add/Edit processor" +msgstr "添加/修改 处理器" + +#: admin/systems/services/glpi/glpi_devices.tpl:642 +msgid "Frequence" +msgstr "频率" + +#: admin/systems/services/glpi/glpi_devices.tpl:649 +msgid "Default frequence" +msgstr "缺省频率" + +#: admin/systems/services/glpi/glpi_devices.tpl:661 +msgid "Add/Edit motherboard" +msgstr "添加/修改 主板" + +#: admin/systems/services/glpi/glpi_devices.tpl:696 +msgid "Chipset" +msgstr "芯片组" + +#: admin/systems/services/glpi/glpi_devices.tpl:707 +msgid "Add/Edit computer case" +msgstr "添加/修改 机箱" + +#: admin/systems/services/glpi/glpi_devices.tpl:742 +msgid "format" +msgstr "格式" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:32 +#: admin/systems/services/glpi/class_goGlpiServer.inc:87 +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +#, fuzzy +msgid "Inventory database" +msgstr "用户数据库" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:58 +#, fuzzy +msgid "Inventory database service" +msgstr "存货编号" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:67 +#, fuzzy +msgid "The attribute user is empty or contains invalid characters." +msgstr "属性 '%s' 为空或者包含无效字符。" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:70 +#, fuzzy +msgid "The attribute database is empty or contains invalid characters." +msgstr "属性 '%s' 为空或者包含无效字符。" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:88 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:96 +#, fuzzy +msgid "Start" +msgstr "启动" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:97 +msgid "Stop" +msgstr "停止" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:98 +#, fuzzy +msgid "Restart" +msgstr "重试" + +#: admin/systems/services/glpi/class_goGlpiServer.inc:100 +#, fuzzy +msgid "Admin" +msgstr "管理员" + +#: admin/systems/services/glpi/glpiManufacturer.tpl:1 +msgid "Manage manufacturers" +msgstr "管理生产商" + +#: admin/systems/services/glpi/remove_glpi.tpl:2 +msgid "Warning" +msgstr "警告" + +#: admin/systems/services/glpi/remove_glpi.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "请再次检查您是否要这么做,因为 GOsa 将没有办法将您的数据找回。" + +#: admin/systems/services/glpi/remove_glpi.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your MySql database in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"最好在执行这个操作之前,保存当前 MySQL 数据库中的内容到一个文件。所以,如果您" +"已经这么做了,按“删除”继续或者按“取消”退出。" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:14 +msgid "Reference" +msgstr "参考" + +#: admin/systems/services/glpi/glpiPrinterCartridgesEdit.tpl:61 +msgid "Choose" +msgstr "选择" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:6 +msgid "List of available cartridge type for this type of printer" +msgstr "这种打印机的可用硒鼓列表" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:23 +msgid "" +"This dialog allows you to create new types of cartridges, and select one or " +"more types for your printer. Cartridge types depends on the printer type you " +"have selected. For each selected cartridge type there will be a new " +"cartridge created, this allows you to select the same cartridge type for " +"more then one printer." +msgstr "" +"这个对话框用于创建新的硒鼓类型,以及选择一到多个打印机类型。硒鼓类型和所选的" +"打印机类型相关。每一个选择的硒鼓类型将有一个新的硒鼓被创建,这允许您为一个以" +"上的打印机选择同一种硒鼓。" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:27 +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:27 +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:27 +#: admin/systems/services/glpi/glpiSelectUser.tpl:27 +msgid "Filters" +msgstr "过滤器" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:35 +msgid "Display cartridge types matching" +msgstr "显示匹配的硒鼓类型" + +#: admin/systems/services/glpi/glpiPrinterCartridges.tpl:37 +msgid "Regular expression for matching cartridge types" +msgstr "匹配硒鼓类型的正则表达式" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:6 +msgid "List of attachments" +msgstr "附件列表" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:23 +msgid "" +"This dialog allow you to attach additional objects (like manuals, guides, " +"etc.) to your currently edited computer." +msgstr "此对话框允许您附加额外的对象(如手册,说明书等)到您正编辑的计算机。" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:35 +msgid "Display attachments matching" +msgstr "显示匹配的附件" + +#: admin/systems/services/glpi/glpiAttachmentPool.tpl:37 +msgid "Regular expression for matching attachment names" +msgstr "匹配附件名称的正则表达式" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:6 +msgid "List of devices" +msgstr "设备列表" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:23 +msgid "" +"This dialog allows you to attach a device to your currently edited computer." +msgstr "这个对话框允许您为您当前编辑的计算机添加一个设备。" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:35 +msgid "Display devices matching" +msgstr "显示匹配的设备" + +#: admin/systems/services/glpi/glpiDeviceManagement.tpl:37 +msgid "Regular expression for matching device names" +msgstr "匹配设备名的正则表达式" + +#: admin/systems/services/glpi/class_glpiAccount.inc:146 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:163 +msgid "There is no server with valid glpi database service." +msgstr "没有一个具有有效 glpi 数据库服务的服务器。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:156 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:173 +msgid "Can't connect to glpi database, the php-mysql extension is missing." +msgstr "无法连接到 glpi 数据库,没有安装 php-mysql 扩展。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:166 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:183 +msgid "Can't connect to glpi database, check configuration twice." +msgstr "无法连接到 glpi 数据库,再次检查配置文件。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:181 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:198 +msgid "Download of attachment failed. Attachment was not found on server." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:184 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:201 +msgid "Download of attachment failed. Not a valid attachment id." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:198 +#: admin/systems/services/glpi/class_glpiAccount.inc:204 +#: admin/systems/services/glpi/class_glpiAccount.inc:210 +msgid "This feature is not implemented yet." +msgstr "这个功能尚未实现。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:312 +msgid "Adding new sytem type failed, this system type name is already used." +msgstr "添加新系统类型失败,这个系统类型名称已被使用。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:332 +#, php-format +msgid "" +"You can't delete this system type, it is still in use by these system(s) '%s'" +msgstr "您不能删除这个系统类型,它仍然被这些系统使用 '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:343 +msgid "Rename failed, this system type name is already used." +msgstr "重命名失败,系统类型名称已经被使用。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:399 +msgid "Adding new operating system failed, specifed name is already used." +msgstr "添加新操作系统失败,名称已经被使用。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:421 +#, php-format +msgid "" +"You can't delete this operating system, it is still in use by these system" +"(s) '%s'" +msgstr "您不能删除这个操作系统,它仍然被这些系统使用 '%s'" + +#: admin/systems/services/glpi/class_glpiAccount.inc:433 +msgid "Updating operating system failed, specifed name is already used." +msgstr "更新操作系统失败,名称已经被使用。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:512 +#, php-format +msgid "" +"Could not add the given user, the users dn is too long, only 100 characters " +"are allowed here." +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:593 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:229 +msgid "Remove inventory" +msgstr "删除 inventory" + +#: admin/systems/services/glpi/class_glpiAccount.inc:594 +msgid "" +"This device has inventory informations enabled. You can disable them by " +"clicking below." +msgstr "这个设备启用了 inventory 信息。您可以点击下面按钮禁用。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:596 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:232 +msgid "Add inventory" +msgstr "添加清单(inventory)" + +#: admin/systems/services/glpi/class_glpiAccount.inc:597 +msgid "" +"This device has inventory informations disabled. You can enable them by " +"clicking below." +msgstr "这个设备禁用了 inventory 信息。您可以点击下面按钮启用。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:692 +#: admin/systems/services/glpi/class_glpiAccount.inc:693 +msgid "Can't remove glpi account, while mysql extension is missing." +msgstr "无法删除 glpi 账号,因为没有找到 mysql 扩展。" + +#: admin/systems/services/glpi/class_glpiAccount.inc:793 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:795 +msgid "Glpi" +msgstr "" + +#: admin/systems/services/glpi/class_glpiAccount.inc:794 +#, fuzzy +msgid "Inventory extension" +msgstr "删除打印机扩展" + +#: admin/systems/services/glpi/class_glpiAccount.inc:804 +#: admin/systems/services/glpi/glpi.tpl:23 +msgid "Operating system" +msgstr "操作系统" + +#: admin/systems/services/glpi/class_glpiAccount.inc:805 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:809 +msgid "Location" +msgstr "位置" + +#: admin/systems/services/glpi/class_glpiAccount.inc:807 +msgid "Model" +msgstr "模型" + +#: admin/systems/services/glpi/class_glpiAccount.inc:811 +#, fuzzy +msgid "Peripheral devices" +msgstr "打印设备" + +#: admin/systems/services/glpi/glpi.tpl:9 +msgid "System type" +msgstr "系统类型" + +#: admin/systems/services/glpi/glpi.tpl:96 +msgid "Installed devices" +msgstr "安装设备" + +#: admin/systems/services/glpi/glpi.tpl:112 +msgid "Trading" +msgstr "" + +#: admin/systems/services/glpi/glpi.tpl:113 +msgid "Software" +msgstr "软件" + +#: admin/systems/services/glpi/glpi.tpl:114 +msgid "Contracts" +msgstr "联系" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:68 +#, fuzzy +msgid "attachment" +msgstr "附件" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:107 +#, php-format +msgid "" +"You can't delete this attachment, it is still in use by these system(s) '%s'" +msgstr "您不能删除这个附件,它仍然被这些系统使用 '%s'" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:119 +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:123 +msgid "There is no valid file uploaded." +msgstr "没有上传有效文件。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:126 +msgid "Upload wasn't successfull." +msgstr "上传没有成功。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:129 +#, php-format +msgid "Missing directory '%s/glpi/' to store glpi uploads." +msgstr "缺少目录 '%s/glpi/' 来保存 glpi 上传。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:133 +msgid "There is already a file with the same name uploaded." +msgstr "已经由同名文件上传。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:137 +#, php-format +msgid "Can't create file '%s'." +msgstr "无法创建文件 '%s'。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:181 +msgid "File is available." +msgstr "文件可用。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:183 +msgid "File is not readable, possibly the file is missing." +msgstr "文件无法读取,可能是文件缺失。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:186 +msgid "Currently no file uploaded." +msgstr "目前没有文件上传。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:198 +msgid "Mime" +msgstr "Mime" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:201 +msgid "This table displays all available attachments." +msgstr "这个表显示所有可用的附件。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:218 +msgid "empty" +msgstr "空" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:255 +msgid "Create new attachment" +msgstr "创建新附件" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:256 +msgid "New Attachment" +msgstr "新附件" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:349 +msgid "This name is already in use." +msgstr "该名称已经被使用。" + +#: admin/systems/services/glpi/class_glpiAttachmentPool.inc:352 +msgid "Please specify a valid name for this attachment." +msgstr "请为这个附件指定一个有效名称。" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:230 +msgid "" +"This server has inventory features enabled. You can disable them by clicking " +"below." +msgstr "该服务器已经启用 inventory 功能。您可以点击下面按钮禁用。" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:233 +msgid "" +"This server has inventory features disabled. You can enable them by clicking " +"below." +msgstr "该服务器已经禁用 inventory 功能。您可以点击下面按钮启用。" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:256 +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:294 +#, php-format +msgid "" +"Can't rename given printer type to '%s', because this type name already " +"exists." +msgstr "无法将给出的打印机类型重命名为 '%s',因为这个类型名称已经存在。" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:308 +#, php-format +msgid "Can't delete printer type, it is still in use by '%s'." +msgstr "您不能删除这个打印机类型,它仍然在被 '%s' 使用。" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:785 +msgid "since" +msgstr "自从" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:796 +#, fuzzy +msgid "Printer inventory extension" +msgstr "添加打印机扩展" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:804 +#, fuzzy +msgid "Supports serial interface" +msgstr "支持的界面" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:805 +#, fuzzy +msgid "Supports parallel interface" +msgstr "支持的界面" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:806 +#, fuzzy +msgid "Supports usb interface" +msgstr "支持的界面" + +#: admin/systems/services/glpi/class_glpiPrinterAccount.inc:816 +#, fuzzy +msgid "Cartridge settings" +msgstr "硒鼓" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:6 +msgid "List of users" +msgstr "用户列表" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:23 +msgid "" +"This dialog allows you to select a user as technical responsible person." +msgstr "这个对话框允许您选择一个用户作为技术负责人。" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:35 +msgid "Display users matching" +msgstr "显示匹配的用户" + +#: admin/systems/services/glpi/glpiSelectUser.tpl:37 +msgid "Regular expression for matching user names" +msgstr "匹配用户名的正则表达式" + +#: admin/systems/services/glpi/glpi_edit_os.tpl:1 +msgid "Manage OS-types" +msgstr "管理操作系统类型" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:53 +#, php-format +msgid "" +"You can't delete this manufacturer, it is still in use by these system(s) '%" +"s'" +msgstr "您不能删除这个制造商,它仍然被这些系统使用 '%s'" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:99 +msgid "Please specify a name." +msgstr "请输入一个名字。" + +#: admin/systems/services/glpi/class_glpiManufacturer.inc:108 +#: admin/systems/services/glpi/class_glpiManufacturer.inc:114 +msgid "Specified name is already in use, please choose another one." +msgstr "提供的名称已经被使用,请选择另外一个。" + +#: admin/systems/services/glpi/glpi_edit_type.tpl:1 +msgid "Manage System-types" +msgstr "管理系统类型" + +#~ msgid "You're about to delete the glpi attachment component '%s'." +#~ msgstr "您将要删除 glpi 附件组件 '%s'。" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "You're about to delete the glpi device '%s'." +#~ msgstr "您将要删除 glpi 设备 '%s'。" + +#~ msgid "You're about to delete the glpi cartridge type '%s'." +#~ msgstr "您将要删除 glpi 硒鼓类型 '%s'。" diff --git a/trunk/gosa-plugins/glpi/plugin.dsc b/trunk/gosa-plugins/glpi/plugin.dsc new file mode 100644 index 000000000..fd671340f --- /dev/null +++ b/trunk/gosa-plugins/glpi/plugin.dsc @@ -0,0 +1,6 @@ +[gosa-plugin] +name = glpi +description = "GLPI system inventorization plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ diff --git a/trunk/gosa-plugins/gofax/admin/systems/services/gofax/class_goFaxServer.inc b/trunk/gosa-plugins/gofax/admin/systems/services/gofax/class_goFaxServer.inc new file mode 100644 index 000000000..610f01787 --- /dev/null +++ b/trunk/gosa-plugins/gofax/admin/systems/services/gofax/class_goFaxServer.inc @@ -0,0 +1,103 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goFaxServer"); + var $attributes = array("goFaxAdmin", "goFaxPassword"); + var $StatusFlag = "goFaxServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goFaxServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $acl; + + var $goFaxAdmin = ""; + var $goFaxPassword = ""; + var $goFaxServerStatus = ""; + var $cn = ""; + var $view_logged =FALSE; + + function goFaxServer(&$config,$dn) + { + goService::goService($config,$dn); + $this->DisplayName = _("FAX database"); + } + + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /* Assign acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation ){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + return($smarty->fetch(get_template_path("goFaxServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("FAX database configuration"); + #$fields['AllowEdit'] = true; + return($fields); + } + + function check() + { + $message = plugin::check(); + if (empty($this->goFaxAdmin)){ + $message[]= msgPool::required(_("User")); + } + if (empty($this->goFaxPassword)){ + $message[]= msgPool::required(_("Password")); + } + return($message); + } + + + function save_object() + { + if(isset($_POST['goFaxServerPosted'])){ + plugin::save_object(); + } + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Fax database"), + "plDescription" => _("Fax database")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 99, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "goFaxAdmin" => _("Login name"), + "goFaxPassword" => _("Password")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofax/admin/systems/services/gofax/goFaxServer.tpl b/trunk/gosa-plugins/gofax/admin/systems/services/gofax/goFaxServer.tpl new file mode 100644 index 000000000..feff4233d --- /dev/null +++ b/trunk/gosa-plugins/gofax/admin/systems/services/gofax/goFaxServer.tpl @@ -0,0 +1,27 @@ +

{t}FAX database information{/t}

+ + + + + + + + + +
{t}FAX DB user{/t}{$must} +{render acl=$goFaxAdminACL} + +{/render} +
{t}Password{/t}{$must} +{render acl=$goFaxPasswordACL} + +{/render} +
+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/gofax/contrib/gofax.sql b/trunk/gosa-plugins/gofax/contrib/gofax.sql new file mode 100644 index 000000000..744514a50 --- /dev/null +++ b/trunk/gosa-plugins/gofax/contrib/gofax.sql @@ -0,0 +1,24 @@ +create database gofax; +use gofax; + +CREATE TABLE faxlog ( + id VARCHAR(20) NOT NULL, + status INTEGER NOT NULL, + status_message TEXT, + uid VARCHAR(20) NOT NULL, + queuing_time TIMESTAMP NOT NULL, + sender_msn VARCHAR(100), + sender_id VARCHAR(100), + receiver_msn VARCHAR(100), + receiver_id VARCHAR(100), + transfer_time INTEGER, + pages INTEGER + ); + +CREATE TABLE faxdata ( + id VARCHAR(20) PRIMARY KEY, + fax_data BLOB + ); + +GRANT INSERT,SELECT ON gofax.faxlog TO logger@localhost IDENTIFIED BY 'somemysqlpass'; +GRANT INSERT,SELECT,DELETE ON gofax.faxdata TO logger@localhost IDENTIFIED BY 'somemysqlpass'; diff --git a/trunk/gosa-plugins/gofax/gofax/blocklists/class_blocklistGeneric.inc b/trunk/gosa-plugins/gofax/gofax/blocklists/class_blocklistGeneric.inc new file mode 100644 index 000000000..865e7c7fe --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/blocklists/class_blocklistGeneric.inc @@ -0,0 +1,395 @@ +type = BLOCK_LIST_SEND; + + /* Load defined numbers */ + if($dn != "new"){ + + /* We will not be able to rename edited blocklists */ + $this->readonly = TRUE; + + /* Get blocklist type and defined numbers */ + if (in_array("goFaxSBlock",$this->attrs['objectClass'])){ + if(isset($this->attrs["goFaxSBlocklist"])){ + for ($i= 0; $i<$this->attrs["goFaxSBlocklist"]["count"]; $i++){ + $this->goFaxBlocklist[]= $this->attrs["goFaxSBlocklist"][$i]; + } + } + $this->type= BLOCK_LIST_SEND; + } elseif (in_array("goFaxRBlock",$this->attrs['objectClass'])){ + if(isset($this->attrs["goFaxRBlocklist"])){ + for ($i= 0; $i<$this->attrs["goFaxRBlocklist"]["count"]; $i++){ + $this->goFaxBlocklist[]= $this->attrs["goFaxRBlocklist"][$i]; + } + } + $this->type= BLOCK_LIST_RECEIVE; + } + } + + /* Set base */ + if ($this->dn == "new"){ + if(session::is_set('CurrentMainBase')){ + $this->base = session::get('CurrentMainBase'); + }else{ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } + } else { + $this->base =preg_replace ("/^[^,]+,[^,]+,[^,]+,/","",$this->dn); + } + + $this->orig_base = $this->base; + $this->orig_dn = $this->dn; + } + + public function execute() + { + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","blocklist/".get_class($this),$this->dn); + } + + + /************** + * Base select dialog + **************/ + + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* A new base was selected, check if it is a valid one */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + $this->dialog= false; + + }else{ + return($this->dialog->execute()); + } + } + + + /*************** + Add numer to blocklist + ***************/ + + + /* Handle interactions: add */ + if (isset($_POST['add_number']) && $_POST['number'] != ""){ + if (tests::is_phone_nr($_POST['number']) || preg_match ("/^[\/0-9 ()\^\.\$+*-]+$/",$_POST['number'])){ + $this->addNumber ($_POST['number']); + } else { + msg_dialog::display(_("Error"), msgPool::invalid(_("Phone number")), ERROR_DIALOG); + } + } + + + /*************** + Delete number from list + ***************/ + + /* Handle interactions: delete */ + if (isset($_POST['delete_number']) && isset($_POST['numbers']) && count($_POST['numbers']) > 0){ + $this->delNumber ($_POST['numbers']); + } + + + /*************** + Template output + ***************/ + + $smarty = get_smarty(); + foreach($this->attributes as $name){ + $smarty->assign($name,$this->$name); + } + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + $smarty->assign("goFaxBlocklist",$this->goFaxBlocklist); + $smarty->assign("cnACL",$this->getacl("cn",$this->readonly)); + $smarty->assign("typeACL",$this->getacl("type",$this->readonly)); + $smarty->assign("base",$this->base); + $smarty->assign("bases", $this->get_allowed_bases()); + $smarty->assign("types", array(BLOCK_LIST_SEND => _("send"), BLOCK_LIST_RECEIVE => _("receive"))); + $smarty->assign("type", $this->type); + $smarty->assign("dn", $this->dn); + $smarty->assign("read_only",$this->read_only); + return($smarty->fetch(get_template_path('generic.tpl', TRUE))); + } + + + public function save_object() + { + if(isset($_POST['blocklist_posted'])){ + $tmp_cn = $this->cn; + plugin::save_object(); + $this->cn = $tmp_cn; + + /* Save base, since this is no LDAP attribute */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + $tmp = $this->attributes; + $tmp[] = "type"; + foreach($tmp as $attr){ + if(in_array($attr,array("cn","type")) && $this->readonly){ + continue; + }elseif(isset($_POST[$attr]) && $this->acl_is_writeable($attr)){ + $this->$attr = $_POST[$attr]; + } + } + } + } + + + function remove_from_parent() + { + $ldap= $this->config->get_ldap_link(); + $ldap->rmDir($this->dn); + new log("remove","gofaxlist/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + $this->handle_post_events("remove"); + } + + + /* Check values */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* check syntax: must cn */ + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } else { + if (!tests::is_uid($this->cn)){ + $message[]= msgPool::invalid(_("Name")); + } + if ($this->dn == 'new'){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd (get_ou('faxBlocklistRDN').$this->config->current["BASE"]); + $ldap->search ("(&(|(objectClass=goFaxSBlock)(objectClass=goFaxRBlock))(cn=".$this->cn."))", array("cn")); + if ($ldap->count() != 0){ + $message[]= msgPool::duplicated(_("Name")); + } + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return $message; + } + + + /* Save to LDAP */ + function save() + { + /* Type selection */ + if ($this->type == BLOCK_LIST_SEND){ + $type= "goFaxSBlocklist"; + $this->objectclasses = array("goFaxSBlock"); + } else { + $type= "goFaxRBlocklist"; + $this->objectclasses = array("goFaxRBlock"); + } + + plugin::save(); + + /* Let clenaup() know what attributes to handle + */ + $this->attrs[$type] = $this->goFaxBlocklist; + $this->attributes [] = $type; + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->base); + $ldap->cat($this->dn, array('dn')); + if ($ldap->count()){ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify($this->attrs); + new log("modify","faxblocklist/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("modify"); + } else { + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->add($this->attrs); + new log("create","gofaxlist/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("add"); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + + /* Add number */ + function addNumber($number) + { + if (!in_array($number, $this->goFaxBlocklist)){ + $this->goFaxBlocklist[]= $number; + sort($this->goFaxBlocklist); + } + } + + + /* Remove number from list */ + function delNumber($numbers) + { + $tmp= array(); + foreach ($this->goFaxBlocklist as $val){ + if (!in_array($val, $numbers)){ + $tmp[]= $val; + } + } + $this->goFaxBlocklist= $tmp; + } + + + function getCopyDialog() + { + $smarty = get_smarty(); + $smarty->assign("cn",$this->cn); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = get_post('cn'); + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* We will not be able to rename edited blocklists */ + $this->readonly = TRUE; + + /* Get blocklist type and defined numbers */ + if (in_array("goFaxSBlock",$source['objectClass'])){ + if(isset($source["goFaxSBlocklist"])){ + for ($i= 0; $i<$source["goFaxSBlocklist"]["count"]; $i++){ + $this->goFaxBlocklist[]= $source["goFaxSBlocklist"][$i]; + } + } + $this->type= BLOCK_LIST_SEND; + } elseif (in_array("goFaxRBlock",$source['objectClass'])){ + if(isset($source["goFaxRBlocklist"])){ + for ($i= 0; $i<$source["goFaxRBlocklist"]["count"]; $i++){ + $this->goFaxBlocklist[]= $source["goFaxRBlocklist"][$i]; + } + } + $this->type= BLOCK_LIST_RECEIVE; + } + + /* Set base */ + if ($this->dn == "new"){ + if(session::is_set('CurrentMainBase')){ + $this->base = session::get('CurrentMainBase'); + }else{ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } + } else { + $this->base =preg_replace ("/^[^,]+,[^,]+,[^,]+,/","",$this->dn); + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Fax"), + "plDescription" => _("Fax blocklists"), + "plSelfModify" => FALSE, + "plDepends" => array(), + + "plPriority" => 0, + "plSection" => array("administration" => _("Fax blocklists")), + "plCategory" => array("gofaxlist" => array("description" => _("Fax blocklists"), + "objectClass" => array("goFaxRBlock","goFaxSBlock"))), + "plProvidedAcls" => array( + "cn" => _("Name"), + "description" => _("Description"), + "base" => _("Base"), + "goFaxBlocklist" => _("Blocklist"), + "type" => _("Blocklist type")) + )); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofax/gofax/blocklists/class_blocklistManagement.inc b/trunk/gosa-plugins/gofax/gofax/blocklists/class_blocklistManagement.inc new file mode 100644 index 000000000..99afef0db --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/blocklists/class_blocklistManagement.inc @@ -0,0 +1,513 @@ +ui = $ui; + $this->dn = ""; + $this->config = &$config; + $this->base = session::get('CurrentMainBase'); + $this->DivListBlocklist = new divListBlocklist($this->config,$this); + + /* Initialize copy&paste queue */ + if ($this->config->boolValueIsTrue("main", "copyPaste")){ + $this->CopyPasteHandler= new CopyPasteHandler($this->config); + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + session::set('LOCK_VARS_TO_USE',array("/^menu_action/","/^goFaxBlocklist_/","/^act$/","/^id$/","/^remove_multiple_blocklists/","/^item_selected/")); + + /*************** + Init vars + ***************/ + + /* Get global smarty instance */ + $smarty = get_smarty(); + $s_action = ""; // Contains the action to proceed + $s_entry = ""; // The value for s_action + $base_back = ""; // The Link for Backbutton + + + /*************** + Fetch posts + ***************/ + + /* Test Posts */ + foreach($_POST as $key => $val){ + // Post for delete + if(preg_match("/^goFaxBlocklist_del.*/",$key)){ + $s_action = "del"; + $s_entry = preg_replace("/^goFaxBlocklist_del_/i","",$key); + // Post for edit + }elseif(preg_match("/^goFaxBlocklist_edit_.*/",$key)){ + $s_action="edit"; + $s_entry = preg_replace("/^goFaxBlocklist_edit_/i","",$key); + // Post for new + }elseif(preg_match("/^goFaxBlocklist_new.*/",$key)){ + $s_action="new"; + }elseif(preg_match("/^remove_multiple_blocklists/",$key)){ + $s_action="del_multiple"; + }elseif(preg_match("/^copy/",$key)){ + $s_action = "copy"; + $s_entry= preg_replace("/^copy_/i", "", $key); + }elseif(preg_match("/^cut/",$key)){ + $s_action = "cut"; + $s_entry= preg_replace("/^cut_/i", "", $key); + } + + } + if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ + $s_action ="edit"; + $s_entry = $_GET['id']; + } + + $s_entry = preg_replace("/_.$/","",$s_entry); + + + /* handle C&P from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ + $s_action = "copy_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){ + $s_action = "cut_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){ + $s_action = "editPaste"; + } + + + /* Create options */ + if(isset($_POST['menu_action']) && $_POST['menu_action'] == "goFaxBlocklist_new"){ + $s_action = "new"; + } + + /* handle remove from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){ + $s_action = "del_multiple"; + } + + + /*************** + Handle copy & paste + ***************/ + + $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); + if($ret){ + return($ret); + } + + + /*************** + Cancel some dialogs + ***************/ + + /* Cancel dialog */ + if (isset($_POST['edit_cancel']) || + isset($_POST['delete_blocklist_cancel']) || + isset($_POST['delete_lock'])){ + + $this->remove_lock(); + $this->dialog = NULL; + set_object_info(); + } + + + /*************** + Save blocklist + ***************/ + + /* What about finish? */ + if (isset($_POST['edit_finish']) || isset($_POST['edit_apply'])){ + + /* No errors, save object */ + $this->dialog->save_object(); + $message= $this->check(); + if (count ($message) == 0){ + + $this->dialog->save (); + + if (!isset($_POST['edit_apply'])){ + $this->remove_lock(); + $this->dn= ""; + $this->dialog = NULL; + set_object_info(); + }else{ + + /* Reinitialize tab */ + if($this->dialog instanceof tabs){ + $this->dialog->re_init(); + } + } + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + + /*************** + Create a new blocklist (dialog) + ***************/ + + /* Create new blocklist? */ + if ($s_action=="new"){ + $this->dn= "new"; + $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn); + $this->dialog->set_acl_base($this->base); + } + + + /*************** + Edit blocklist + ***************/ + + if ($s_action=="edit" && !is_object($this->dialog)){ + + $this->dn=$this->blocklists[$s_entry]['dn']; + + if (($user= get_lock($this->dn)) != ""){ + return(gen_locked_message($user, $this->dn,TRUE)); + }else{ + add_lock ($this->dn, $this->ui->dn); + } + set_object_info(trim($this->dn)); + $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn); + $this->dialog->set_acl_base($this->dn); + } + + + /*************** + Display dialog + ***************/ + + if(is_object($this->dialog) && ($this->dialog instanceof faxblocktabs)){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + + /******************** + Delete MULTIPLE entries requested, display confirm dialog + ********************/ + + if ($s_action=="del_multiple"){ + + $this->dns = array(); + $ids = $this->list_get_selected_items(); + + if(count($ids)){ + $disallowed = array(); + foreach($ids as $id){ + $dn = $this->blocklists[$id]['dn']; + $acl = $this->ui->get_permissions($dn, "gofaxlist/blocklistGeneric"); + if(preg_match("/d/",$acl)){ + $this->dns[$id] = $dn; + }else{ + $disallowed[] = $dn; + } + } + + if(count($disallowed)){ + msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); + } + + if(count($this->dns)){ + + if ($user= get_multiple_locks($this->dns)){ + return(gen_locked_message($user,$this->dns)); + } + + $dns_names = array(); + foreach($this->dns as $dn){ + $dns_names[]=LDAP::fix( $dn); + } + add_lock ($this->dns, $this->ui->dn); + + /* Lock the current entry, so nobody will edit it during deletion */ + $smarty->assign("info", msgPool::deleteInfo($dns_names,_("blocklist"))); + $smarty->assign("multiple", true); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + /******************** + Delete MULTIPLE entries confirmed + ********************/ + + /* Confirmation for deletion has been passed. */ + if (isset($_POST['delete_multiple_blocklist_confirm'])){ + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + $this->dn = $dn; + if (preg_match("/d/",$this->ui->get_permissions($this->dn,"gofaxlist/blocklistGeneric"))){ + $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn); + $this->dialog->delete(); + $this->dialog = NULL; + } else { + msg_dialog::display(_("Permission error"), msgPool::permDelete($dn), ERROR_DIALOG); + } + /* Remove lock file after successfull deletion */ + } + $this->remove_lock(); + $this->dns = array(); + $this->reload(); + } + + + /******************** + Delete MULTIPLE entries Canceled + ********************/ + + /* Remove lock */ + if(isset($_POST['delete_multiple_blocklist_cancel'])){ + foreach($this->dns as $key => $dn){ + $this->remove_lock(); + unset($this->dns[$key]); + } + } + + + /*************** + Remove blocklist + ***************/ + + /* Delete blocklist requested */ + if ($s_action=="del"){ + $this->dn=$this->blocklists[$s_entry]['dn']; + + /* Check locking */ + if (($user= get_lock($this->dn)) != ""){ + return(gen_locked_message($user, $this->dn)); + } else { + + // Lock this dn for editing + add_lock ($this->dn, $this->ui->dn); + $smarty->assign("info", msgPool::deleteInfo(LDAP::fix($this->dn),_("blocklist"))); + $smarty->assign("multiple", false); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + + + /*************** + Remove blocklist confirmed + ***************/ + + /* Finally delete blocklist */ + if (isset($_POST['delete_blocklist_confirm'])){ + if (preg_match("/d/",$this->ui->get_permissions($this->dn,"gofaxlist/blocklistGeneric"))){ + $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn); + $this->dialog->delete(); + $this->dialog = NULL; + $this->remove_lock(); + } else { + msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG); + } + } + + /*************** + Divlist dialog + ***************/ + + /* Check if there is a snapshot dialog open */ + $base = $this->DivListBlocklist->selectedBase; + if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + /* Display dialog with system list */ + $this->DivListBlocklist->parent = $this; + $this->DivListBlocklist->execute(); + + /* Add departments if subsearch is disabled */ + if(!$this->DivListBlocklist->SubSearch){ + $this->DivListBlocklist->AddDepartments($this->DivListBlocklist->selectedBase,3,1); + } + $this->reload(); + $this->DivListBlocklist->setEntries($this->blocklists); + return($this->DivListBlocklist->Draw()); + } + + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + + /* Return departments, that will be included within snapshot detection */ + function get_used_snapshot_bases() + { + return(array(get_ou('faxBlocklistRDN').$this->DivListBlocklist->selectedBase)); + } + + + /* Reload the list of known blocklists */ + function reload() + { + /* Init some vars */ + $filter = $filter2 = ""; + $base = $this->DivListBlocklist->selectedBase; + $Regex = $this->DivListBlocklist->Regex; + $SubSearch = $this->DivListBlocklist->SubSearch; + $ShowSendBocklists = $this->DivListBlocklist->ShowSendBocklists; + $ShowReceiveBlocklists = $this->DivListBlocklist->ShowReceiveBlocklists; + $Flags = GL_SIZELIMIT; + $res = $res2 = array(); + + /* Append subsearch to Flags */ + if($SubSearch){ + $Flags |= GL_SUBSEARCH; + }else{ + $base = get_ou('faxBlocklistRDN').$base; + } + + /* Create filter */ + if ($ShowSendBocklists){ + $filter = "(&(objectClass=goFaxSBlock)(|(cn=".$Regex.")(goFaxSBlocklist=".$Regex.")))"; + $res= get_list($filter, "gofaxlist", $base,array("*"), $Flags); + } + if ($ShowReceiveBlocklists){ + $filter2= "(&(objectClass=goFaxRBlock)(|(cn=".$Regex.")(goFaxRBlocklist=".$Regex.")))"; + $res2= get_list($filter2, "gofaxlist", $base,array("*"), $Flags); + } + + $this->blocklists = array_merge($res,$res2); + + /* appen && sort */ + $tmp=array(); + foreach($this->blocklists as $tkey => $val ){ + + $acl = $this->ui ->get_permissions($base,"gofaxlist/blocklistGeneric"); + if(preg_match("/r/",$acl)){ + $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val; + } + } + ksort($tmp); + $this->blocklists=array(); + foreach($tmp as $val){ + $this->blocklists[]=$val; + } + reset ($this->blocklists); + } + + + /* Save data to object */ + function save_object() + { + $this->DivListBlocklist->save_object(); + if(is_object($this->CopyPasteHandler)){ + $this->CopyPasteHandler->save_object(); + } + } + + + + + + function copyPasteHandling_from_queue($s_action,$s_entry) + { + /* Check if Copy & Paste is disabled */ + if(!is_object($this->CopyPasteHandler)){ + return(""); + } + + $ui = get_userinfo(); + + /* Add a single entry to queue */ + if($s_action == "cut" || $s_action == "copy"){ + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + $dn = $this->blocklists[$s_entry]['dn']; + if($s_action == "copy" && $ui->is_copyable($dn,"gofaxlist","blocklistGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"faxblocktabs","FAXBLOCKTABS","gofaxlist"); + } + if($s_action == "cut" && $ui->is_cutable($dn,"gofaxlist","blocklistGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"faxblocktabs","FAXBLOCKTABS","gofaxlist"); + } + } + + /* Add entries to queue */ + if($s_action == "copy_multiple" || $s_action == "cut_multiple"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + + /* Add new entries to CP queue */ + foreach($this->list_get_selected_items() as $id){ + $dn = $this->blocklists[$id]['dn']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,"gofaxlist","blocklistGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,"copy","faxblocktabs","FAXBLOCKTABS","gofaxlist"); + } + if($s_action == "cut_multiple" && $ui->is_cutable($dn,"gofaxlist","blocklistGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,"cut","faxblocktabs","FAXBLOCKTABS","gofaxlist"); + } + } + } + + /* Start pasting entries */ + if($s_action == "editPaste"){ + $this->start_pasting_copied_objects = TRUE; + } + + /* Return C&P dialog */ + if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ + + /* Get dialog */ + $this->CopyPasteHandler->SetVar("base",$this->DivListBlocklist->selectedBase); + $data = $this->CopyPasteHandler->execute(); + + /* Return dialog data */ + if(!empty($data)){ + return($data); + } + } + + /* Automatically disable status for pasting */ + if(!$this->CopyPasteHandler->entries_queued()){ + $this->start_pasting_copied_objects = FALSE; + } + return(""); + } + + + /*! \brief Remove entry locks if the plugin was aborted. + */ + function remove_lock() + { + if($this->dn) del_lock($this->dn); + if(is_array($this->dns) && count($this->dns)) del_lock($this->dns); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofax/gofax/blocklists/class_divListBlocklists.inc b/trunk/gosa-plugins/gofax/gofax/blocklists/class_divListBlocklists.inc new file mode 100644 index 000000000..8258b93ae --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/blocklists/class_divListBlocklists.inc @@ -0,0 +1,219 @@ +parent = $parent; + $this->ui = get_userinfo(); + + /* Set list strings */ + $this->SetTitle(_("List of blocklists")); + $this->SetSummary(_("List of blocklists")); + + /* Result page will look like a headpage */ + $this->SetHeadpageMode(); + + $this->EnableAplhabet (true); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 100; + if($this->parent->snapshotEnabled()){ + $action_col_size += 20; + } + + /* Toggle all selected / deselected */ + $chk = ""; + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); + $this->AddHeader(array("string" => _("Name")." / "._("Department"), "attach" => "style=''")); + $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'" )); + + /* Add Checkboxes / SubSearch checkbox */ + $this->AddCheckBox("ShowSendBocklists" , msgPool::selectToView(_("Send blocklist")), _("Show send blocklists"),true); + $this->AddCheckBox("ShowReceiveBlocklists" , msgPool::selectToView(_("Receive blocklist")), _("Show receive blocklists"),true); + + $this->AddCheckBox(SEPERATOR); + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name,Text,Default,Connect with alphabet */ + $this->AddRegex ("Regex", _("Regular expression for matching list names"),"*" , true); + } + + + function GenHeader() + { + /* Get all departments within this subtree */ + $base = $this->config->current['BASE']; + $options = $this->create_department_list($this->module); + + /* Get acls */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->selectedBase,"gofaxlist/blocklistGeneric"); + $acl_all = $ui->has_complete_category_acls($this->selectedBase,"gofaxlist"); + + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(); + + /* Append department selector */ + $listhead .= " "._("Base")." ". + "  "; + + /* Create Layers menu */ + $s = ".|"._("Actions")."|\n"; + + /* Append create options */ + if(preg_match("/c/",$acl)) { + $s .= "..|". + " "._("Create")."|\n"; + $s.= "...|". + " "._("Blocklist")."|goFaxBlocklist_new|\n"; + $s.= "..|---|\n"; + } + + /* Multiple options */ + $s.= "..|". + " "._("Remove")."|"."remove_multiple|\n"; + + /* Add Copy & Paste header */ + $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module); + + /* Add snapshot icons */ + $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); + + $this->SetDropDownHeaderMenu($s); + $this->SetListHeader($listhead); + } + + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + function setEntries($list) + { + // User and Template Images + $blockimg = "User"; + $editlink = "%s"; + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 100; + if($this->parent->snapshotEnabled()){ + $action_col_size += 20; + } + + /* Append to list */ + $ui = get_userinfo(); + foreach($list as $key => $val){ + + $acl = $ui->get_permissions($val['dn'],"gofaxlist/blocklistGeneric"); + $acl_all = $ui->has_complete_category_acls($val['dn'],"gofaxlist"); + + if(!preg_match("/r/",$acl)){ + continue; + } + + $action =""; + + /* Add copy & cut functionality */ + $action.= $this->parent->get_copypaste_action($val['dn'],"gofaxlist","blocklistGeneric"); + + /* Edit link ; requires read access */ + $action.= ""; + + /* Add snapshot icon */ + $action.= $this->parent->get_snapshot_action($val['dn'],$this->module); + + /* Delete entry ; requires remove access */ + if(preg_match("/d/",$acl)){ + $action.= ""; + } + + // Generate Array to Add + if(isset($val["description"][0])){ + $display= $val["cn"][0]." [".$val["description"][0]."]"; + }else{ + $display= $val["cn"][0]; + } + + /* Cutted objects should be displayed in light grey */ + if(isset($this->parent->CopyPasteHandler->queue) && is_array($this->parent->CopyPasteHandler->queue)){ + foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){ + if($queue_data['dn'] == $val['dn']) { + $display = "".$display.""; + break; + } + } + } + + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field1 = array("string" => sprintf($blockimg,$val['dn']), "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"); + $field3 = array("string" => preg_replace("/%KEY%/", "$key", $action), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); + $this->AddElement( array($field0,$field1,$field2,$field3)); + } + + /* Create summary string for list footer */ + $num_deps=0; + if(!$this->SubSearch){ + $num_deps = count($this->Added_Departments); + } + $num_objs = count($list); + + $num_obj_str = sprintf(_("Number of listed '%s'"),_("blocklists")); + $num_dep_str = sprintf(_("Number of listed '%s'"),_("departments")); + + $str = "".$num_obj_str." ".$num_objs."    "; + $str.= "".$num_dep_str." ".$num_deps."    "; + + $this->set_List_Bottom_Info($str); + + } + + function Save() + { + MultiSelectWindow :: Save(); + } + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow :: save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofax/gofax/blocklists/generic.tpl b/trunk/gosa-plugins/gofax/gofax/blocklists/generic.tpl new file mode 100644 index 000000000..11e6b56e2 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/blocklists/generic.tpl @@ -0,0 +1,113 @@ +

{t}Generic{/t}

+ + + + + + + + + +
+ + + + + + + + + +
{$must} + +{render acl=$cnACL} + +{/render} +
{$must} +{render acl=$baseACL} + +{/render} + +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} +
+
+   + + + + + + + + + + +
+{render acl=$typeACL} + +{/render} +
+{render acl=$descriptionACL} + +{/render} +
+
+ +

 

+ + + + + + + +
+

{t}Blocked numbers{/t}

+{render acl=$goFaxBlocklistACL} + +{/render} +
+{render acl=$goFaxBlocklistACL} +   +{/render} +{render acl=$goFaxBlocklistACL} +   +{/render} +{render acl=$goFaxBlocklistACL} + +{/render} +
+   + +

{t}Information{/t}

+

+ {t}Numbers can also contain wild cards.{/t} +

+
+ +

+ {if !$read_only} + + {if $dn != "new"} + + {/if} + {/if} + +

+ + + diff --git a/trunk/gosa-plugins/gofax/gofax/blocklists/main.inc b/trunk/gosa-plugins/gofax/gofax/blocklists/main.inc new file mode 100644 index 000000000..602d617a8 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/blocklists/main.inc @@ -0,0 +1,43 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('blocklist'); +}else{ + + /* Create blocklist object on demand */ + if (!session::is_set('blocklist')){ + $blocklist= new blocklist($config, $ui); + $blocklist->set_acl_category("gofaxlist"); + session::set('blocklist',$blocklist); + } + $blocklist = session::get('blocklist'); + $blocklist->save_object(); + $output= $blocklist->execute(); + + /* Reset requested? */ + if (isset($_GET['reset']) && $_GET['reset'] == 1){ + session::un_set ('blocklist'); + } + + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header(get_template_path($blocklist->plIcon), _("Blocklist management"), "\"\"align=\"middle\" ".LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path($blocklist->plIcon), _("Blocklist management")); + } + $display.= $output; + + session::set('blocklist',$blocklist); +} +?> diff --git a/trunk/gosa-plugins/gofax/gofax/blocklists/paste_generic.tpl b/trunk/gosa-plugins/gofax/gofax/blocklists/paste_generic.tpl new file mode 100644 index 000000000..ac4cef972 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/blocklists/paste_generic.tpl @@ -0,0 +1,8 @@ + + + + + +
+ +
diff --git a/trunk/gosa-plugins/gofax/gofax/blocklists/remove.tpl b/trunk/gosa-plugins/gofax/gofax/blocklists/remove.tpl new file mode 100644 index 000000000..861e377ba --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/blocklists/remove.tpl @@ -0,0 +1,24 @@ +
+  {t}Warning{/t} +
+

+ {$info} + {t}Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+ +

+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ {if $multiple} + +   + + {else} + +   + + {/if} +

+ diff --git a/trunk/gosa-plugins/gofax/gofax/blocklists/tabs_blocklist.inc b/trunk/gosa-plugins/gofax/gofax/blocklists/tabs_blocklist.inc new file mode 100644 index 000000000..54a378674 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/blocklists/tabs_blocklist.inc @@ -0,0 +1,38 @@ +addSpecialTabs(); + } + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['blocklistGeneric']; + + /* Check for new 'dn', in order to propagate the 'dn' to all plugins */ + $new_dn= "cn=".$baseobject->cn.",".get_ou('faxBlocklistRDN').$baseobject->base; + + /* Move group? */ + if ($this->dn != $new_dn){ + + /* Write entry on new 'dn' */ + if ($this->dn != "new"){ + $baseobject->move($this->dn, $new_dn); + $this->by_object['blocklistGeneric']= $baseobject; + } + + /* Happen to use the new one */ + $this->dn= $new_dn; + } + + tabs::save(); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofax/gofax/faxaccount/class_gofaxAccount.inc b/trunk/gosa-plugins/gofax/gofax/faxaccount/class_gofaxAccount.inc new file mode 100644 index 000000000..4deac179f --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxaccount/class_gofaxAccount.inc @@ -0,0 +1,984 @@ +attrs['uid'])){ + $this->uid = $this->attrs['uid'][0]; + } + + /* Hickert : 11.11.05 + * Added to be able to handle department selection in divSelelect + */ + if(!session::is_set("Fax_Filter")){ + $Fax_Filter = array(); + $Fax_Filter['depselect'] = $this->config->current['BASE']; + session::set('Fax_Filter',$Fax_Filter); + } + + if ($dn != "new"){ + /* Get arrays */ + foreach (array("goFaxRBlocklist", "goFaxRBlockgroups", "goFaxSBlocklist", + "goFaxSBlockgroups", "facsimileAlternateTelephoneNumber") as $val){ + $this->$val =array(); + if (isset($this->attrs["$val"]["count"])){ + for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){ + array_push($this->$val, $this->attrs["$val"][$i]); + } + } + } + + /* Set up has_mailAccount */ + if (in_array("gosaMailAccount", $this->attrs['objectClass'])){ + $this->has_mailAccount= TRUE; + } + } + + /* Load printer list */ + $this->printerList=get_printer_list(); + + /* Check if the currently selected printer is still available. + If not, append current printer to list of available. + It could be possible, that we are not allowed to view printers and so the list is empty ... */ + if(!empty($this->goFaxPrinter) && !isset($this->printerList[$this->goFaxPrinter])) { + $this->printerList[$this->goFaxPrinter] = "[".$this->goFaxPrinter."]"; + } + + /* Get global filter config */ + if (!session::is_set("faxfilter")){ + $ui= get_userinfo(); + $base= get_base_from_people($ui->dn); + $faxfilter= array( "depselect" => $base, + "fuser" => "*", + "regex" => ""); + session::set("faxfilter", $faxfilter); + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Hickert : 11.11.05 + * Added to be able to handle department selection in divSelelect + */ + if((isset($_GET['act']))&&($_GET['act']=="dep_open")){ + + $Fax_Filter = session::get('Fax_Filter'); + if(strlen(base64_decode($_GET['dep_id']))>= strlen($this->config->current['BASE'])){ + $Fax_Filter['depselect']= base64_decode($_GET['dep_id']); + }else{ + $Fax_Filter['depselect']= $this->config->current['BASE']; + } + session::set('Fax_Filter',$Fax_Filter); + } + + /* Edit mode specifies if we are editing from my accout */ + $edit_mode = (!is_object($this->parent) && !session::is_set('edit')); + + /* Load smarty stuff */ + $smarty= get_smarty(); + + /* Check if mail account is active. We'll display an additional + mail address field if this is not the case. Some people may + want goFax, but have a mailserver which is not managed with + GOsa */ + if (!@isset($this->parent->by_object['mailAccount'])) { + $smarty->assign("has_mailaccount", $this->has_mailAccount?"true":"false"); + } elseif ( !$this->parent->by_object['mailAccount']->is_account){ + $smarty->assign("has_mailaccount", "false"); + $this->has_mailAccount= false; + } else { + $smarty->assign("has_mailaccount", "true"); + } + + + $display = ""; + if(!$this->multiple_support_active){ + + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + + /* Do we represent a valid account? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("GOfax")).""; + $display.= back_to_main(); + return ($display); + } + + /* Show tab dialog headers */ + $display= ""; + if ($this->parent !== NULL){ + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove fax account"), + msgPool::featuresEnabled(_("GOfax"))); + } else { + $display= $this->show_enable_header(_("Create fax account"), + msgPool::featuresDisabled(_("GOfax"))); + return ($display); + } + } + } + + /* Trigger Add local fax alternatives dialog */ + if (isset($_POST['add_local_alternate'])){ + if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){ + $this->locals_dialog= TRUE; + $this->dialog= TRUE; + } + } + + /* Add alternatives from dialog */ + if (isset($_POST['add_locals_finish']) && isset($_POST['local_list'])){ + if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){ + foreach ($_POST['local_list'] as $val){ + $this->addAlternate($val); + $this->is_modified= TRUE; + } + } + } + + /* Add alternatives */ + if (isset($_POST['add_alternate']) && !empty($_POST['forward_address']) && tests::is_phone_nr($_POST['forward_address'])){ + if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){ + $this->addAlternate($_POST['forward_address']); + } + } + + /* Delete alternate fax number */ + if (isset($_POST['delete_alternate']) && isset($_POST['alternate_list']) && count($_POST['alternate_list'])){ + if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){ + $this->delAlternate ($_POST['alternate_list']); + } + } + + + /* Edit incoming blocklists */ + if (isset($_POST['edit_incoming'])){ + if($this->acl_is_writeable("goFaxRBlocklist",$edit_mode)) { + $this->current_blocklist= array_merge($this->goFaxRBlocklist,$this->goFaxRBlockgroups); + sort($this->current_blocklist); + reset($this->current_blocklist); + + $this->in_blocklist_dialog= TRUE; + $this->dialog= TRUE; + } + } + + /* Edit outgoing blocklists */ + if (isset($_POST['edit_outgoing'])){ + $this->current_blocklist= array_merge($this->goFaxSBlocklist,$this->goFaxSBlockgroups); + sort($this->current_blocklist); + reset($this->current_blocklist); + + $this->out_blocklist_dialog= TRUE; + $this->dialog= TRUE; + } + + /* Add number to blocklist (dialog) */ + if (isset($_POST['add_blocklist_number']) && $_POST['block_number'] != ""){ + if (!tests::is_phone_nr($_POST['block_number'])){ + msg_dialog::display(_("Error"), msgPool::invalid(_("Phone number")), ERROR_DIALOG); + } else { + array_push($this->current_blocklist, $_POST['block_number']); + $this->current_blocklist= array_unique($this->current_blocklist); + sort($this->current_blocklist); + reset($this->current_blocklist); + } + } + + /* Hickert : 11.11.05 + * Add selection from divSelelect to our Blocklist + */ + /* Add list to blocklist */ + if (isset($_POST['add_blocklist'])){ + foreach($_POST as $name => $value){ + if(preg_match("/ADDLIST_/i",$name)){ + $this->current_blocklist= array_merge($this->current_blocklist, array(base64_decode($value))); + + } + } + $this->current_blocklist= array_unique($this->current_blocklist); + sort($this->current_blocklist); + reset($this->current_blocklist); + } + + /* Add list to blocklist */ + if (isset($_GET['add'])){ + if(!is_array($this->current_blocklist)) $this->current_blocklist=array(); + $this->current_blocklist= array_merge($this->current_blocklist, array( base64_decode($_GET['add']))); + $this->current_blocklist= array_unique($this->current_blocklist); + sort($this->current_blocklist); + reset($this->current_blocklist); + } + + /* Delete from blocklist */ + if (isset($_POST['delete_blocklist_number']) && isset($_POST['block_list'])){ + $tmp= array(); + foreach($this->current_blocklist as $val){ + if (!in_array($val, $_POST['block_list'])){ + $tmp[]= $val; + } + } + $this->current_blocklist= $tmp; + } + + + /* Blocklist edit finished */ + if (isset($_POST['edit_blocklists_finish'])){ + + /* Incoming or outgoing? */ + if ($this->in_blocklist_dialog){ + $this->goFaxRBlocklist = array(); + $this->goFaxRBlockgroups = array(); + + foreach ($this->current_blocklist as $val){ + if (tests::is_phone_nr($val)){ + $this->goFaxRBlocklist[]=$val; + } else { + $this->goFaxRBlockgroups[]= $val; + } + } + } else { + $this->goFaxSBlocklist = array(); + $this->goFaxSBlockgroups = array(); + + /* Transfer values to ourself */ + foreach ($this->current_blocklist as $val){ + if (tests::is_phone_nr($val)){ + $this->goFaxSBlocklist[]=$val; + } else { + $this->goFaxSBlockgroups[]= $val; + } + } + } + $this->is_modified= TRUE; + } + + + /* Set departments */ + if ($this->locals_dialog || $this->in_blocklist_dialog || $this->out_blocklist_dialog){ + + $list= array (); + $ldap= $this->config->get_ldap_link(); + if (isset ($_POST['department'])){ + $ldap->cd ($_POST['department']); + } else { + $ldap->cd ($this->config->current['BASE']); + } + } + + /* Cancel dialogs */ + if (isset($_POST['add_locals_cancel']) || isset($_POST['edit_blocklists_finish']) || + isset($_POST['edit_blocklists_cancel']) || isset($_POST['add_locals_finish'])){ + + $this->locals_dialog= FALSE; + $this->in_blocklist_dialog= FALSE; + $this->out_blocklist_dialog= FALSE; + $this->dialog= FALSE; + } + + /* Manage locals dialog */ + if ($this->locals_dialog){ + + /* Save data */ + $faxfilter= session::get("faxfilter"); + foreach( array("depselect", "fuser", "regex") as $type){ + if (isset($_POST[$type])){ + $faxfilter[$type]= $_POST[$type]; + } + } + if (isset($_GET['search'])){ + $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*"; + if ($s == "**"){ + $s= "*"; + } + $faxfilter['fuser']= $s; + } + + if ($faxfilter['regex'] != '*' && $faxfilter['regex'] != ""){ + $regex= $faxfilter['regex']; + $filter= "(facimileTelephoneNumber=$regex)"; + } else { + $filter= ""; + } + if ($faxfilter['fuser'] != ""){ + $user= $faxfilter['fuser']; + $filter= "$filter(|(uid=$user)(cn=$user)(givenName=$user)(sn=$user))"; + } + + $base= $faxfilter['depselect']; + $res= get_list("(&(objectClass=goFaxAccount)$filter)", "gofax", $base, + array("sn", "givenName", "facsimileTelephoneNumber"), GL_SIZELIMIT | GL_SUBSEARCH); + + foreach ($res as $attrs){ + $list[$attrs['facsimileTelephoneNumber'][0]]= + $attrs['sn'][0].", ". + $attrs['givenName'][0]." [". + $attrs['facsimileTelephoneNumber'][0]."]"; + } + + /* Show dialog */ + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("usearch_image", get_template_path('images/lists/search-user.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("departments", $this->config->idepartments); + $smarty->assign("list", $list); + if (isset($_POST['depselect'])){ + $smarty->assign("depselect", $_POST['depselect']); + } + $smarty->assign("deplist", $this->config->idepartments); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("hint", print_sizelimit_warning()); + foreach( array("depselect", "fuser", "regex") as $type){ + $smarty->assign("$type", $faxfilter[$type]); + } + $smarty->assign("hint", print_sizelimit_warning()); + + $display.= $smarty->fetch (get_template_path('locals.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + + /* Manage incoming blocklists */ + if ($this->in_blocklist_dialog){ + + /* This handles the divSelectBox */ + + /* The base specifies the current position in the ldap tree + * The current base was specified by $_GET['dep_id'] before. Or contains the default value. + */ + $Fax_Filter = session::get('Fax_Filter'); + $base = $Fax_Filter['depselect']; + $ldap->cd($base); + + /* Ge all Blocklists */ + $ldap->search ("(objectClass=goFaxRBlock)",array("cn","description")); + while ($attrs= $ldap->fetch()){ + + /* Generate list depending on description */ + if(isset($attrs['description'][0])){ + $list[$attrs['cn'][0]]= + $attrs['description'][0]. + " [".$attrs['cn'][0]."]"; + }else{ + $list[$attrs['cn'][0]]= $attrs['cn'][0]; + } + } + + /* Create our divselect box */ + $divSel = new divSelectBox("divSelectPredefined"); + $divSel->setHeight(296); + + /* NEW LIST MANAGMENT + * We also need to search for the departments + * So we are able to navigate like in konquerer + */ + $this->departments= array(); + + /* Get all departments within the current department */ + $Fax_Filter = session::get('Fax_Filter'); + $base = $Fax_Filter['depselect']; + $ldap->ls("(objectClass=gosaDepartment)",$base); + + /* Base back is used to go one department up in our ldap tree */ + $base_back = preg_replace("/^[^,]+,/","",$base); + + /* Only show base_back if it is needed */ + if((strlen($base_back)>= strlen($this->config->current['BASE']))&&($base!=$this->config->current['BASE'])){ + $this->departments[preg_replace("/^[^,]+,/","",$base)] = ".. - ["._("back")."]"; + } + + /* Fetch all returned departments an add them to our divlist */ + while($value = $ldap->fetch()){ + if($value["description"][0]!=".."){ + $this->departments[$value['dn']]=LDAP::fix(convert_department_dn($value['dn'])." - [".$value["description"][0]."]"); + }else{ + $this->departments[$value['dn']]=$value["description"][0]; + } + } + /* END NEW LIST MANAGMENT + */ + + // This links specifies the department open link + $linkopen = "%s"; + + /* Insert departments in divsel */ + foreach($this->departments as $key=> $val){ + if(!isset($this->config->departments[trim($key)])){ + $this->config->departments[trim($key)]=""; + } + $field1 = array("string" => "department","attach"=>"style='width:16px;text-align:center;'"); + $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val),"attach"=>" style='border:none'"); + $divSel->AddEntry(array($field1,$field2)); + } + + /* Append predefined Blocklists */ + foreach($list as $entry => $value){ + $divSel->AddEntry(array( + array("string"=>""), + array("string"=>$value,"attach"=>"style='border:0px;'") + )); + } + + /* Show dialog */ + $smarty->assign("cblocklist", $this->current_blocklist); + $smarty->assign("departments", $this->config->idepartments); + $smarty->assign("divSelectPredefined", $divSel->DrawList()); + $display.= $smarty->fetch (get_template_path('lists.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + /* Manage outgoing blocklists */ + + if ($this->out_blocklist_dialog){ + + /* This handles the divSelectBox */ + + /* The base specifies the current position in the ldap tree + * The current base was specified by $_GET['dep_id'] before. Or contains the default value. + */ + $Fax_Filter = session::get('Fax_Filter'); + $base = $Fax_Filter['depselect']; + $ldap->cd($base); + + /* Ge all Blocklists */ + $ldap->search ("(objectClass=goFaxSBlock)",array("cn","description")); + while ($attrs= $ldap->fetch()){ + if(isset($attrs['description'][0])){ + $list[$attrs['cn'][0]]= + $attrs['description'][0]. + " [".$attrs['cn'][0]."]"; + }else{ + $list[$attrs['cn'][0]]= $attrs['cn'][0]; + } + } + + /*Create DivSel*/ + $divSel = new divSelectBox("divSelectPredefined"); + $divSel->setHeight(296); + + /* NEW LIST MANAGMENT + * We also need to search for the departments + * So we are able to navigate like in konquerer + */ + $this->departments= array(); + $ldap->ls("(objectClass=gosaDepartment)",$base); + + /* Generate Back url, and append if it is needed */ + $base_back = preg_replace("/^[^,]+,/","",$base); + if((strlen($base_back)>= strlen($this->config->current['BASE']))&&($base!=$this->config->current['BASE'])){ + $this->departments[preg_replace("/^[^,]+,/","",$base)] = ".. - ["._("back")."]"; + } + + /* Get all departments */ + while($value = $ldap->fetch()){ + if(isset($value["description"][0])){ + $this->departments[$value['dn']]=LDAP::fix(convert_department_dn($value['dn'])." - [".$value["description"][0]."]"); + }else{ + $this->departments[$value['dn']]=$value["description"][0]; + } + } + /* END NEW LIST MANAGMENT + */ + + // Defining Links + $linkopen = "%s"; + + /* Insert departments in divlist*/ + foreach($this->departments as $key=> $val){ + if(!isset($this->config->departments[trim($key)])){ + $this->config->departments[trim($key)]=""; + } + + $field1 = array("string" => "department","attach"=>"style='width:16px;text-align:center;'"); + $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val),"attach"=>" style='border:none'"); + $divSel->AddEntry(array($field1,$field2)); + } + + /* Append Blocklits */ + foreach($list as $entry => $value){ + $divSel->AddEntry(array( + array("string"=>""), + array("string"=>$value,"attach"=>"style='border:0px;'") + )); + } + + /* Show dialog */ + $smarty->assign("cblocklist", $this->current_blocklist); + $smarty->assign("departments", $this->config->idepartments); + $smarty->assign("divSelectPredefined", $divSel->DrawList()); + $display.= $smarty->fetch (get_template_path('lists.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + + /* Show main page */ + $smarty->assign("languages", get_languages(TRUE)); + + $smarty->assign("formats", $this->fax_formats); + $smarty->assign("printers", $this->printerList); + + /* Load attributes */ + foreach(array("goFaxIsEnabled", "goFaxDeliveryMode", "facsimileTelephoneNumber", + "goFaxPrinter", "goFaxLanguage", "goFaxFormat", + "facsimileAlternateTelephoneNumber", "mail") as $val){ + + $smarty->assign("$val", $this->$val); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $acl => $desc){ + $smarty->assign($acl."ACL",$this->getacl($acl,$edit_mode)); + } + + /* Load checkboxes */ + if ($this->goFaxIsEnabled == "1"){ + $smarty->assign("goFaxIsEnabled", ""); + } else { + $smarty->assign("goFaxIsEnabled", "checked"); + } + /* goFaxAccount has "mail" as must! Block if no mailaddress is specified... */ + if ($this->goFaxDeliveryMode & 32) { + $smarty->assign("faxtomail", "checked"); + } else { + $smarty->assign("faxtomail", ""); + } + if ($this->goFaxDeliveryMode & 64) { + $smarty->assign("faxtoprinter", "checked"); + } else { + $smarty->assign("faxtoprinter", ""); + } + + foreach($this->attributes as $attr){ + if(in_array($attr,$this->multi_boxes)) { + $smarty->assign("use_".$attr,TRUE); + }else{ + $smarty->assign("use_".$attr,FALSE); + } + } + foreach(array("goFaxIsEnabled","edit_outgoing","edit_incoming","faxtomail","faxtoprinter") as $attr){ + if(in_array($attr,$this->multi_boxes)) { + $smarty->assign("use_".$attr,TRUE); + }else{ + $smarty->assign("use_".$attr,FALSE); + } + } + + $smarty->assign("multiple_support",$this->multiple_support_active); + $display.= $smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + plugin::remove_from_parent(); + + /* Adapt mail settings if needed */ + if ((isset($this->parent->by_object['mailAccount']->is_account)) && ($this->parent->by_object['mailAccount']->is_account)){ + unset($this->attrs['mail']); + } + + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove',array("uid"=> $this->uid)); + } + + + /* Check formular input */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* must: facsimileTelephoneNumber */ + if ($this->facsimileTelephoneNumber == ""){ + $message[]= msgPool::required(_("Fax number")); + } + + if (!tests::is_phone_nr($this->facsimileTelephoneNumber)){ + $message[]= msgPool::invalid(_("Fax number"),$this->facsimileTelephoneNumber,"/[0-9]/"); + } + + /* IF mail is specified (which is only the case if there's no mail account + present), check if it's valid.. */ + if (@isset($this->parent->by_object['mailAccount']) && + $this->goFaxDeliveryMode & 32){ + if ($this->mail == ""){ + $message[]= _("Mail delivery is requested without target address!"); + } elseif (!tests::is_email($this->mail)){ + $message[]= msgPool::invalid(_("Mail address"),"","",_("your-name@your-domain.com")); + } + } + + // IE Fix, IE lets you choose disabled option, stupid browser ... + if((empty($this->goFaxPrinter))&&($this->goFaxDeliveryMode & 64)){ + $message[]= _("Printing is requested without a target printer!"); + } + + return ($message); + } + + /* Save data to object */ + function save_object() + { + $edit_mode = (!is_object($this->parent) && !session::is_set('edit')); + if (isset($_POST['faxTab'])){ + plugin::save_object(); + + + $tmp = 0+$this->goFaxDeliveryMode; + + if($this->acl_is_writeable("faxtomail",$edit_mode)){ + if (isset($_POST["faxtomail"]) && $_POST["faxtomail"] == 1){ + $tmp |= 32; + }elseif($tmp & 32){ + $tmp &= (!32); + } + } + if($this->acl_is_writeable("faxtoprinter",$edit_mode)){ + if (isset($_POST["faxtoprinter"]) && $_POST["faxtoprinter"] == 1){ + $tmp |= 64; + }elseif($tmp & 64){ + $tmp &= !64; + } + } + $this->goFaxDeliveryMode = $tmp; + + if($this->acl_is_writeable("goFaxIsEnabled",$edit_mode)){ + if (isset($_POST["goFaxIsEnabled"]) && $_POST["goFaxIsEnabled"] == "1"){ + $this->goFaxIsEnabled= "0"; + } else { + $this->goFaxIsEnabled= "1"; + } + } + + + if (isset($_POST['mail']) && $this->acl_is_writeable("faxtomail",$edit_mode)){ + $this->mail= $_POST['mail']; + } + + /* Check if mail account is active and correct the internal + reference to represent the current status. */ + if(isset($this->parent)){ + if (isset($this->parent->by_object['mailAccount']->is_account)&&($this->parent->by_object['mailAccount']->is_account)){ + $this->has_mailAccount= TRUE; + } + } + } + + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + /* Save arrays */ + foreach (array("goFaxRBlocklist", "goFaxRBlockgroups", "goFaxSBlocklist", + "goFaxSBlockgroups", "facsimileAlternateTelephoneNumber") as $val){ + + $this->attrs[$val]= $this->$val; + } + + if(!$this->attrs['goFaxDeliveryMode']){ + $this->attrs['goFaxDeliveryMode'] = 0; + } + + /* Do not save mail address ... it was possibly changed by mail plugin */ + /* Adapt mail settings if needed */ + if ((isset($this->parent->by_object['mailAccount']->is_account)) && ($this->parent->by_object['mailAccount']->is_account)){ + unset($this->attrs['mail']); + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("mofidy",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + + } + + + /* Adapt from template, using 'dn' */ + function adapt_from_template($dn, $skip= array()) + { + plugin::adapt_from_template($dn, $skip); + + foreach (array("goFaxRBlocklist", "goFaxRBlockgroups", "goFaxSBlocklist", + "goFaxSBlockgroups", "facsimileAlternateTelephoneNumber") as $val){ + + if (in_array($val, $skip)){ + continue; + } + + if (isset($this->attrs[$val])){ + $this->$val= $this->attrs[$val]; + } + } + } + + + + /* Add alternate fax recipient */ + function addAlternate($number) + { + $this->facsimileAlternateTelephoneNumber[]= "$number"; + $this->facsimileAlternateTelephoneNumber= + array_unique ($this->facsimileAlternateTelephoneNumber); + + sort ($this->facsimileAlternateTelephoneNumber); + reset ($this->facsimileAlternateTelephoneNumber); + } + + function delAlternate($numbers) + { + $this->facsimileAlternateTelephoneNumber= array_remove_entries ($numbers, + $this->facsimileAlternateTelephoneNumber); + } + + function getCopyDialog() + { + $str = ""; + $smarty = get_smarty(); + $smarty->assign("facsimileTelephoneNumber", $this->facsimileTelephoneNumber); + $str['string'] = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); + $str['status'] =""; + return($str); + } + + function SaveCopyDialog() + { + if(isset($_POST['facsimileTelephoneNumber'])){ + $this->facsimileTelephoneNumber = $_POST['facsimileTelephoneNumber']; + } + } + + + /* Return plugin informations for acl handling + #FIXME some attributes are still missing in this plugin acls */ + static function plInfo() + { + return (array( + "plShortName" => _("Fax"), + "plDescription" => _("Fax account settings"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 6, + "plSection" => "personal", + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + "facsimileTelephoneNumber" => _("Fax number"), // goFaxDeliveryMode + "goFaxLanguage" => _("Language"), + "goFaxFormat" => _("Delivery format"), + "facsimileAlternateTelephoneNumber" => _("Alternate fax number"), // goFaxDeliveryMode + "goFaxIsEnabled" => _("Enable/Disable fax"), + "faxtomail" => _("Deliver fax as mail"), + "faxtoprinter" => _("Deliver fax to printer"), + "goFaxRBlocklist" => _("Receive blocklist"), + "goFaxSBlocklist" => _("Send blocklist")) + )); + } + + /* Multiple edit support + */ + + /* Execute */ + function multiple_execute() + { + return($this->execute()); + } + + function multiple_save_object() + { + if (isset($_POST['faxTab'])){ + plugin::multiple_save_object(); + foreach(array("goFaxIsEnabled","edit_outgoing","edit_incoming","faxtomail","faxtoprinter") as $attr){ + if(isset($_POST["use_".$attr])){ + $this->multi_boxes[] = $attr; + } + } + + $tmp = 0+$this->goFaxDeliveryMode; + if(in_array("faxtomail",$this->multi_boxes)){ + if (isset($_POST["faxtomail"]) && $_POST["faxtomail"] == 1){ + $tmp |= 32; + }elseif($tmp & 32){ + $tmp &= (!32); + } + } + if(in_array("faxtoprinter",$this->multi_boxes)){ + if (isset($_POST["faxtoprinter"]) && $_POST["faxtoprinter"] == 1){ + $tmp |= 64; + }elseif($tmp & 64){ + $tmp &= !64; + } + } + $this->goFaxDeliveryMode = $tmp; + + if (isset($_POST["goFaxIsEnabled"]) && $_POST["goFaxIsEnabled"] == "1"){ + $this->goFaxIsEnabled= "0"; + } else { + $this->goFaxIsEnabled= "1"; + } + if (isset($_POST['mail']) && in_array("mail",$this->multi_boxes)){ + $this->mail= $_POST['mail']; + } + } + } + + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("goFaxIsEnabled",$this->multi_boxes)){ + $ret['goFaxIsEnabled'] = $this->goFaxIsEnabled; + } + if(in_array("faxtoprinter",$this->multi_boxes)){ + $ret['faxtoprinter'] = $this->goFaxDeliveryMode & 64; + } + if(in_array("faxtomail",$this->multi_boxes)){ + $ret['faxtomail'] = $this->goFaxDeliveryMode & 32; + } + + if(in_array("edit_incoming",$this->multi_boxes)){ + $ret['goFaxRBlocklist'] = $this->goFaxRBlocklist; + $ret['goFaxRBlockgroups'] = $this->goFaxRBlockgroups; + } + if(in_array("edit_outgoing",$this->multi_boxes)){ + $ret['goFaxSBlocklist'] = $this->goFaxSBlocklist; + $ret['goFaxSBlockgroups'] = $this->goFaxSBlockgroups; + } + return($ret); + } + + function multiple_check() + { + $message = plugin::multiple_check(); + return($message); + } + + function set_multi_edit_values($values) + { + plugin::set_multi_edit_values($values); + + if(isset($values['faxtoprinter'])){ + if($values['faxtoprinter']){ + $this->goFaxDeliveryMode |= 64; + }else{ + $this->goFaxDeliveryMode &= !64; + } + } + if(isset($values['faxtomail'])){ + if($values['faxtomail']){ + $this->goFaxDeliveryMode |= 32; + }else{ + $this->goFaxDeliveryMode &= !32; + } + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofax/gofax/faxaccount/generic.tpl b/trunk/gosa-plugins/gofax/gofax/faxaccount/generic.tpl new file mode 100644 index 000000000..3e8ae65df --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxaccount/generic.tpl @@ -0,0 +1,152 @@ + + + + + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + + + + + + +
{$must} +{if $multiple_support} + +{else} +{render acl=$facsimileTelephoneNumberACL} + +{/render} +{/if} + +
+ +{render acl=$goFaxLanguageACL checkbox=$multiple_support checked=$use_goFaxLanguage} + +{/render} + +
+ +{render acl=$goFaxFormatACL checkbox=$multiple_support checked=$use_goFaxFormat} + +{/render} +
+ +
+   + +

 {t}Delivery methods{/t}

+ +{render acl=$goFaxIsEnabledACL checkbox=$multiple_support checked=$use_goFaxIsEnabled} + +{/render} + {t}Temporary disable fax usage{/t}
+ + {if $has_mailaccount eq "false"} +{render acl=$faxtomailACL checkbox=$multiple_support checked=$use_faxtomail} + +{/render} +   +{render acl=$faxtomailACL checkbox=$multiple_support checked=$use_mail} + +{/render} + {else} +{render acl=$faxtomailACL checkbox=$multiple_support checked=$use_faxtomail} + +{/render} + {t}Deliver fax as mail{/t} + {/if} +
+ +{render acl=$faxtoprinterACL checkbox=$multiple_support checked=$use_faxtoprinter} + +{/render} + {t}Deliver fax to printer{/t}  +{render acl=$faxtoprinterACL checkbox=$multiple_support checked=$use_goFaxPrinter} + +{/render} +
+ +

 

+ + + + + + +
+ + {if !$multiple_support} + +

 {t}Alternate fax numbers{/t}

+{render acl=$facsimileAlternateTelephoneNumberACL} + +{/render} +
+{render acl=$facsimileAlternateTelephoneNumberACL} + +{/render} +{render acl=$facsimileAlternateTelephoneNumberACL} +   +{/render} +{render acl=$facsimileAlternateTelephoneNumberACL} +   +{/render} +{render acl=$facsimileAlternateTelephoneNumberACL} + +{/render} + {/if} +
+

 {t}Blocklists{/t}

+ + + + + + + + + +
{t}Blocklists for incoming fax{/t} +{render acl=$goFaxRBlocklistACL checkbox=$multiple_support checked=$use_edit_incoming} + +{/render} +
{t}Blocklists for outgoing fax{/t} +{render acl=$goFaxSBlocklistACL checkbox=$multiple_support checked=$use_edit_outgoing} + +{/render} +
+
+ + + + + diff --git a/trunk/gosa-plugins/gofax/gofax/faxaccount/lists.tpl b/trunk/gosa-plugins/gofax/gofax/faxaccount/lists.tpl new file mode 100644 index 000000000..87bbae441 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxaccount/lists.tpl @@ -0,0 +1,35 @@ + + + + + + +
+ {t}Blocked numbers/lists{/t} +
+ +
+ +   + +
+ {t}List of predefined blocklists{/t}
+ + + + +
+ {$divSelectPredefined} +
+
+
+ +

+ +   + +

+ diff --git a/trunk/gosa-plugins/gofax/gofax/faxaccount/locals.tpl b/trunk/gosa-plugins/gofax/gofax/faxaccount/locals.tpl new file mode 100644 index 000000000..563379edb --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxaccount/locals.tpl @@ -0,0 +1,64 @@ + + + + + +
+
+

+ {t}Select numbers to add{/t} {$hint}
+

+
+
+

+ +

+
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + +
+   + +
+ + + + + +
+ + +
+ + + + + +
+ + +
+ {$apply} +
+
+ +

+ +   + +

+ diff --git a/trunk/gosa-plugins/gofax/gofax/faxaccount/main.inc b/trunk/gosa-plugins/gofax/gofax/faxaccount/main.inc new file mode 100644 index 000000000..b740ca725 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxaccount/main.inc @@ -0,0 +1,118 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('gofaxAccount'); + session::un_set('edit'); +}else{ + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + session::un_set ('edit'); + session::un_set ('gofaxAccount'); + } + + /* Create gofaxAccount object on demand */ + if (!session::is_set('gofaxAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $gofaxAccount= new gofaxAccount ($config, $ui->dn); + $gofaxAccount->set_acl_base($ui->dn); + $gofaxAccount->set_acl_category("users"); + session::set('gofaxAccount',$gofaxAccount); + } + $gofaxAccount = session::get('gofaxAccount'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $gofaxAccount->save_object (); + } + + /* Enter edit mode? */ + if (isset($_POST['edit'])){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $gofaxAccount->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $gofaxAccount->save (); + del_lock ($ui->dn); + session::un_set ('edit'); + + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + if($lock_msg){ + $display.= $lock_msg; + }else{ + $display.= $gofaxAccount->execute (); + } + + $info= ""; + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('gofaxAccount',$gofaxAccount); + } + + /* Show page footer depending on the mode */ + if (!$gofaxAccount->locals_dialog && + !$gofaxAccount->out_blocklist_dialog && + !$gofaxAccount->in_blocklist_dialog && + $gofaxAccount->is_account && + empty($lock_msg)){ + + $display.= "

\n"; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " \n"; + $display.= "\n"; + $info= " ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/gofaxAccount"))){ + $info.= "\"\""._("Click the 'Edit' button below to change informations in this dialog"); + $display.= ""; + } + $display.= "\n"; + } + $display.= "

"; + } + + /* Page header*/ + $display= print_header(get_template_path('plugins/gofax/images/plugin.png'), _("FAX settings"), $info).$display; + +} +?> diff --git a/trunk/gosa-plugins/gofax/gofax/faxaccount/paste_generic.tpl b/trunk/gosa-plugins/gofax/gofax/faxaccount/paste_generic.tpl new file mode 100644 index 000000000..6efca1d5b --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxaccount/paste_generic.tpl @@ -0,0 +1,31 @@ + + + + +
+

 {t}Generic{/t}

+ + + + + + + + + +
+ {$must} + + +
+ {t}Alternate fax numbers will not be copied{/t} +
+
+ + diff --git a/trunk/gosa-plugins/gofax/gofax/faxreports/class_faxreport.inc b/trunk/gosa-plugins/gofax/gofax/faxreports/class_faxreport.inc new file mode 100644 index 000000000..0a67ff000 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxreports/class_faxreport.inc @@ -0,0 +1,514 @@ +config = $config; + $this->ui = &$ui; + $this->search_base = get_base_from_people($ui->dn); + $this->year = date("Y"); + $this->month = date("m"); + + /* Get global filter config and set class vars , + or create a filter */ + if (!session::is_set("faxreportfilter")){ + $faxreportfilter = array(); + foreach($this->attributes_SO as $name){ + $faxreportfilter[$name] = $this->$name; + } + session::set("faxreportfilter",$faxreportfilter); + }else{ + $faxreportfilter = session::get("faxreportfilter"); + foreach($this->attributes_SO as $name){ + $this->$name = $faxreportfilter[$name]; + } + } + } + + + /* Create Filter & Search & Display results */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /************ + Variable initialisation + ************/ + + /* Create months */ + $months= array(); + for($i = 1 ; $i <= 12 ; $i ++ ){ + $months[$i] = _(date("F",gmmktime(0,0,0,$i,1))); + } + + /* Create years */ + $current= date("Y"); + $years= array(); + for ($y= $current - 5; $y<=$current; $y++){ + $years[]= $y; + } + + + /************ + Set smarty defaults + ************/ + + $smarty= get_smarty(); + $smarty->assign("launchimage" , get_template_path('images/launch.png')); + $smarty->assign("search_image" , get_template_path('images/lists/search.png')); + $smarty->assign("search_for" , $this->search_for); + $smarty->assign("bases" , $this->config->idepartments); + $smarty->assign("base_select" , $this->search_base); + $smarty->assign("months" , $months); + $smarty->assign("month_select" , $this->month); + $smarty->assign("years" , $years); + $smarty->assign("year_select" , $this->year); + $smarty->assign("search_result" , ""); + + + /************ + Check database accessibility + ************/ + + /* Some checks */ + if(!isset($this->config->data['SERVERS']['FAX'])){ + msg_dialog::display(_("Error"), _("No fax server found!"), ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + }elseif(!is_callable("mysql_connect")){ + msg_dialog::display(_("Configuration error"), sprintf(_("Missing %s PHP extension!"), "mysql"), WARNING_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + }else{ + /* Connecting, selecting database */ + $cfg = $this->config->data['SERVERS']['FAX']; + $link = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']); + if ($link === FALSE){ + msg_dialog::display(_("Error"), sprintf(_("Cannot connect to %s database!"), "GOfax"), ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + if (! @mysql_select_db("gofax")){ + msg_dialog::display(_("Error"), sprintf(_("Cannot select %s database!"), "GOfax"), ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + if (! mysql_query("SELECT * FROM faxlog;")){ + msg_dialog::display(_("Error"), sprintf(_("Cannot query %s database!"), "GOfax"), ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + } + + + /************ + Perform a deatil view + ************/ + + /* Do detail view? */ + if (isset($_GET['detail'])){ + + /* Create query */ + $query = "SELECT id,uid,date_format(queuing_time, '%Y%m%d%H%i%s') as queuing_time,status,sender_id,sender_msn,receiver_id,". + "receiver_msn,pages,status_message,transfer_time FROM faxlog WHERE id=".$_GET['detail'].";"; + + /* Connecting, selecting database */ + $cfg= $this->config->data['SERVERS']['FAX']; + + /* Check if everything went ok*/ + $result = @mysql_query($query); + if ($result === false){ + msg_dialog::display(_("Error"), sprintf(_("Cannot query %s database!"), "GOfax"), ERROR_DIALOG); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query failed"); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + $line = mysql_fetch_array($result, MYSQL_ASSOC); + mysql_close($link); + + if (!preg_match ("/'".$line["uid"]."'/", $this->userfilter)){ + msg_dialog::display(_("Permission error"), _("You have no permission to view this fax id!"), ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + /* Check acls */ + $fax_uids = array_flip($this->fax_users); + $uid = $line['uid']; + $dn = $fax_uids[$uid]; + $acls = $this->ui->get_permissions($dn,"faxreport/faxreport"); + if(!preg_match("/r/",$acls)){ + msg_dialog::display(_("Permission error"), _("You have no permission to view this fax id!"), ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + $parts= array( "id", "uid", "queuing_time", "status", "sender_id", "sender_msn", + "receiver_id", "receiver_msn", "pages", "status_message", "transfer_time" ); + + foreach ($parts as $vname) { + + $final="fax_$vname"; + if($vname != "uid"){ + $v_acl = $this->ui->get_permissions($dn,"faxreport/faxreport",preg_replace("/_/","",$vname)); + }else{ + $v_acl = "r"; + } + + if ($line[$vname] != "" && preg_match("/r/",$v_acl)){ + $smarty->assign("$final", $line[$vname]); + } else { + $smarty->assign("$final", "-"); + } + } + $queuing_time= $line['queuing_time']; + + /* The user is allowed to download all fax images from those users + that are listed in session::get('fuserfilter') + Don't forget to check getfax.php if you change somthing here */ + session::set('fuserfilter',$this->userfilter); + $smarty->assign("plug", "?plug=".validate($_GET['plug'])); + $smarty->assign("detail", validate($_GET['detail'])); + + $format= _("Y-M-D"); + $date= preg_replace("/Y/", substr($queuing_time,0,4), $format); + $date= preg_replace("/M/", substr($queuing_time,4,2), $date); + $date= preg_replace("/D/", substr($queuing_time,6,2), $date); + $smarty->assign("date", $date); + $smarty->assign("time", substr($queuing_time,8,2).":". + substr($queuing_time,10,2).":". + substr($queuing_time,12,2)); + return($smarty->fetch(get_template_path('detail.tpl', TRUE))); + } + + + /************ + Search for uids matching the filter + ************/ + + /* Search button has been pressed */ + if ($this->search_for != ""){ + + if (is_integer (strpos($this->search_for, "*"))){ + $s= $this->search_for; + } else { + $s= "*".$this->search_for."*"; + } + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->search_base); + + /* Perform ldap search for potential users */ + $filter= "(&(objectClass=gosaAccount)(!(objectClass=gosaUserTemplate))". + "(objectClass=goFaxAccount)". + "(|(uid=$s)(l=$s)(homePhone=$s)". + "(telephoneNumber=$s)(facsimileTelephoneNumber=$s)(mobile=$s)". + "(pager=$s)(cn=$s)(givenName=$s)(sn=$s)(personalTitle=$s)". + "(title=$s)))"; + + $res = get_list($filter, "users", $this->search_base, array("uid"), GL_SUBSEARCH ); + + /* Check if we are allowed to collect fax data */ + $fax_users= array(); + foreach($res as $attrs){ + $acl = $this->ui->get_permissions($attrs['dn'],"users/user","uid"); + if(preg_match("/r/",$acl)){ + $fax_users[ $attrs['dn']]= $attrs["uid"][0]; + } + } + + /* Add self uid, if we have self acl + */ + if(preg_match("/(r|w)/",$this->ui->get_permissions($this->ui->dn,"faxreport/faxreport",""))){ + $fax_users[$this->ui->dn] = $this->ui->uid; + } + + $this->fax_users = $fax_users; + + /* Prepare SQL query */ + $this->userfilter= ""; + foreach ($fax_users as $user){ + $this->userfilter.= "uid = '$user' OR "; + } + $this->userfilter= preg_replace("/OR $/", "", $this->userfilter); + } + + /************ + Create filter + ************/ + + /* Perform SQL query */ + if ($this->userfilter){ + if ($this->sort_direction == "down"){ + $desc= "DESC"; + } else { + $desc= ""; + } + $start= date ("YmdHis", mktime(0,0,0,$this->month,1,$this->year)); + $end= date ("YmdHis", mktime(23,59,59,$this->month+1,0,$this->year)); + $query = "SELECT id,uid,date_format(queuing_time, '%Y%m%d%H%i%s') as queuing_time,status,sender_id,receiver_id,pages FROM faxlog ". + "WHERE ( ".$this->userfilter." ) AND queuing_time <= $end AND ". + "queuing_time >= $start ORDER BY ".$this->fields[$this->sort]." $desc;"; + + if(!is_callable("mysql_connect")){ + msg_dialog::display(_("Configuration error"), sprintf(_("Missing %s PHP extension!"), "mysql"), WARNING_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + + /************ + Create results + ************/ + + /* Connecting, selecting database */ + $cfg= $this->config->data['SERVERS']['FAX']; + $link = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']); + + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + $result = @mysql_query($query); + if ($result === false){ + msg_dialog::display(_("Error"), sprintf(_("Cannot query %s database!"), "GOfax"), ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + $this->report_list= array(); + $user_ids = array_flip($fax_users); + while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { + + /* Check permissions for each field */ + $dn = $user_ids[$line['uid']]; + + /* Hide restricted attributes */ + foreach(array("pages","receiverid","senderid","status","queuingtime","detailedView") as $attr){ + $var = $attr."ACL"; + $$var = $this->ui->get_permissions($dn,"faxreport/faxreport",$attr); + } + + /* Restricted attributes will not be displayed, this will be displayed instead */ + $no_acl = ""._("Insufficient permissions").""; + + /* Create date */ + if((!empty($line["queuing_time"])) && preg_match("/r/",$queuingtimeACL)){ + $hour= substr($line["queuing_time"], 8, 2); + $minute=substr($line["queuing_time"], 10, 2); + $format= _("Y-M-D"); + $date= preg_replace("/Y/", substr($line["queuing_time"], 0, 4), $format); + $date= preg_replace("/M/", substr($line["queuing_time"], 4, 2), $date); + $date= preg_replace("/D/", substr($line["queuing_time"], 6, 2), $date); + $str_date = $date." ".$hour.":".$minute; + }else{ + $str_date = $no_acl; + } + + /* Create entry html str */ + + if(preg_match("/r/",$detailedViewACL)){ + $str = " + + \"\" +  ".$line["uid"]. + " + + $str_date"; + }else{ + $str = " + \"\" +  ".$line["uid"]." + $str_date"; + } + + /* Add Status td */ + if(preg_match("/r/",$statusACL)){ + $str.="".$this->status[$line["status"]].""; + }else{ + $str.="".$no_acl.""; + } + + /* Add sender_id td */ + if(preg_match("/r/",$senderidACL)){ + $str.="".$line["sender_id"].""; + }else{ + $str.="".$no_acl.""; + } + + /* Add receiver_id td */ + if(preg_match("/r/",$receiveridACL)){ + $str.="".$line["receiver_id"].""; + }else{ + $str.="".$no_acl.""; + } + + /* Add receiver_id td */ + if(preg_match("/r/",$pagesACL)){ + $str.="".$line["pages"].""; + }else{ + $str.="".$no_acl.""; + } + $this->report_list[] = $str; + } + + mysql_close($link); + } + + /************ + Create output out of results + ************/ + + /* Generate output */ + $mod= 0; + $output= ""; + foreach ($this->report_list as $val){ + if ($mod < $this->start) { + $mod++; + continue; + } + if ($mod >= ($this->start + $this->range)){ + $mod++; + break; + } + if ( ($mod++) & 1){ + $col= "background-color: #ECECEC;"; + } else { + $col= "background-color: #F5F5F5;"; + } + $output.= "$val"; + } + + + /************ + Display results + ************/ + + if (isset($fax_users) && count($fax_users)){ + $smarty->assign("search_result", $output); + $smarty->assign("range_selector", range_selector(count($this->report_list), $this->start, $this->range,"EntriesPerPage")); + }else{ + $smarty->assign("search_result", ""); + } + + /* Show main page */ + $smarty->assign("plug", "?plug=".validate($_GET['plug'])); + for($i= 0; $i<7; $i++){ + $smarty->assign("mode$i", ""); + } + $smarty->assign("mode".$this->sort, "\"\"sort_direction. + ".png\" border=0 align=middle>"); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + + /* Save ui input, and store it in session::get() + to remember last search next time*/ + function save_object() + { + $faxreportfilter = session::get("faxreportfilter"); + if(isset($_POST['EntriesPerPage'])){ + $this->range = $_POST['EntriesPerPage']; + } + + if (isset($_GET['start'])){ + $this->start= (int)$_GET['start']; + } + + /* Adapt sorting */ + if (isset($_GET['sort'])){ + if ($this->sort == (int)$_GET['sort']){ + if ($this->sort_direction == "down"){ + $this->sort_direction= "up"; + } else { + $this->sort_direction= "down"; + } + } + $this->sort= (int)$_GET['sort']; + if ($this->sort < 0 || $this->sort > 5){ + $this->sort= 0; + } + } + foreach( array("year", "month", "search_for", "search_base") as $type){ + if (isset($_POST[$type])){ + $faxreportfilter[$type]= $_POST[$type]; + + /* reset start page, if filter has changed */ + if(!isset($_GET['start'])){ + $this->start = 0; + } + } + $this->$type= $faxreportfilter[$type]; + + } + foreach($this->attributes_SO as $name){ + $faxreportfilter[$name] = $this->$name; + } + session::set("faxreportfilter",$faxreportfilter); + } + + + /* Return plugin informations for acl handling + #FIXME You can only read attributes within this report plugin */ + static function plInfo() + { + + return (array( + "plShortName" => _("Fax report"), + "plDescription" => _("Fax report")." "._("All entries are readonly")."", + "plSelfModify" => TRUE, + "plDepends" => array(), + "plPriority" => 1, // Position in tabs + "plSection" => array("administration"), // This belongs to personal + "plCategory" => array("faxreport" => array("description" => _("Fax reports"), + "objectClass" => array())), + "plOptions" => array(), + + "plProvidedAcls" => array( + "detailedView" => _("Detailed view"), + "id" => _("Fax ID"), + "queuingtime" => _("Date")." / "._("Time"), + "status" => _("Status"), + "senderid" => _("Sender ID"), + "sendermsn" => _("Sender MSN"), + "receiverid" => _("Receiver ID"), + "receivermsn" => _("Receiver MSN"), + "pages" => _("Number of pages"), + "statusmessage" => _("Status Message"), + "transfertime" => _("Transfer time")) + )); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofax/gofax/faxreports/contents.tpl b/trunk/gosa-plugins/gofax/gofax/faxreports/contents.tpl new file mode 100644 index 000000000..197c5b8c8 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxreports/contents.tpl @@ -0,0 +1,59 @@ +
+

[F]{t}Filter{/t}

+
+
+

+  {t}Search for{/t} + + {t}in{/t} + + {t}during{/t} + + {t}in{/t} + +   + +

+
+ +
+ +{if $search_result ne ""} + + + + + + + + + + {$search_result} +
{t}User{/t} {$mode0}{t}Date{/t} {$mode1}{t}Status{/t} {$mode2}{t}Sender{/t} {$mode3}{t}Receiver{/t} {$mode4}{t}# pages{/t} {$mode5}
+ + + + + +
{$range_selector}
+

+   +

+ +{else} + {t}Search returned no results...{/t} +{/if} + + + + diff --git a/trunk/gosa-plugins/gofax/gofax/faxreports/detail.tpl b/trunk/gosa-plugins/gofax/gofax/faxreports/detail.tpl new file mode 100644 index 000000000..6e1331412 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxreports/detail.tpl @@ -0,0 +1,69 @@ + + + + + + +
+ + {t}FAX preview - please wait{/t} + +

+ {t}Click on fax to download{/t} +

+
+   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{t}FAX ID{/t}{$fax_id}
{t}User{/t}{$fax_uid}
{t}Date / Time{/t}{$date} / {$time}
{t}Sender MSN{/t}{$fax_sender_msn}
{t}Sender ID{/t}{$fax_sender_id}
{t}Receiver MSN{/t}{$fax_receiver_msn}
{t}Receiver ID{/t}{$fax_receiver_id}
{t}Status{/t}{$fax_status}
{t}Status message{/t}{$fax_status_message}
{t}Transfer time{/t}{$fax_transfer_time}
{t}# pages{/t}{$fax_pages}
+ +
+ +

+ +

+ diff --git a/trunk/gosa-plugins/gofax/gofax/faxreports/main.inc b/trunk/gosa-plugins/gofax/gofax/faxreports/main.inc new file mode 100644 index 000000000..ac1ffc359 --- /dev/null +++ b/trunk/gosa-plugins/gofax/gofax/faxreports/main.inc @@ -0,0 +1,24 @@ +save_object(); + $display= $faxreport->execute (); + $display.= "\n"; + $display= print_header(get_template_path($faxreport->plIcon), _("FAX reports")).$display; + + /* Store changes in session */ + session::set('faxreport',$faxreport); +} +?> diff --git a/trunk/gosa-plugins/gofax/help/guide.xml b/trunk/gosa-plugins/gofax/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/gofax/html/getfax.php b/trunk/gosa-plugins/gofax/html/getfax.php new file mode 100644 index 000000000..6a066b067 --- /dev/null +++ b/trunk/gosa-plugins/gofax/html/getfax.php @@ -0,0 +1,150 @@ +data['SERVERS']['FAX']; +$link = mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']) + or die(_("Could not connect to database server!")); + +mysql_select_db("gofax") or die(_("Could not select database!")); + + +/* Permission to view? */ +$query = "SELECT id,uid FROM faxlog WHERE id = '".validate(stripcslashes($_GET['id']))."'"; +$result = mysql_query($query) or die(_("Database query failed!")); +$line = mysql_fetch_array($result, MYSQL_ASSOC); +if (!preg_match ("/'".$line["uid"]."'/", session::get('fuserfilter'))){ + die ("No permissions to view fax!"); +} + +$query = "SELECT id,fax_data FROM faxdata WHERE id = '". + validate(stripcslashes($_GET['id']))."'"; +$result = mysql_query($query) or die(_("Database query failed!")); + +/* Load pic */ +$data = mysql_result ($result, 0, "fax_data"); +mysql_close ($link); + +if (!isset($_GET['download'])){ + + /* display picture */ + header("Content-type: image/png"); + + /* Fallback if there's no image magick support in PHP */ + if (!function_exists("imagick_blob2image")){ + + /* Write to temporary file and call convert, because TIFF sucks */ + $tmpfname = tempnam ("/tmp", "GOsa"); + $temp= fopen($tmpfname, "w"); + fwrite($temp, $data); + fclose($temp); + + /* Read data written by convert */ + $output= ""; + $query= "convert -size 420x594 $tmpfname -resize 420x594 +profile \"*\" png:- 2> /dev/null"; + $sh= popen($query, 'r'); + $data= ""; + while (!feof($sh)){ + $data.= fread($sh, 4096); + } + pclose($sh); + + unlink($tmpfname); + + } else { + + /* Loading image */ + if(!$handle = imagick_blob2image($data)) { + new log("view","faxreport/faxreport","",array(), "Cannot load fax image") ; + } + + /* Converting image to PNG */ + if(!imagick_convert($handle,"PNG")) { + new log("view","faxreport/faxreport","",array(),"Cannot convert fax image to png") ; + } + + /* Resizing image to 420x594 and blur */ + if(!imagick_resize($handle,420,594,IMAGICK_FILTER_GAUSSIAN,1)){ + new log("view","faxreport/faxreport","",array(),"Cannot resize fax image") ; + } + + /* Creating binary Code for the Image */ + if(!$data = imagick_image2blob($handle)){ + new log("view","faxreport/faxreport","",array(),"Reading fax image image failed") ; + } + } + +} else { + + /* force download dialog */ + header("Content-type: application/tiff\n"); + if (preg_match('/MSIE 5.5/', $HTTP_USER_AGENT) || + preg_match('/MSIE 6.0/', $HTTP_USER_AGENT)) { + header('Content-Disposition: filename="fax.tif"'); + } else { + header('Content-Disposition: attachment; filename="fax.tif"'); + } + header("Content-transfer-encoding: binary\n"); + 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: no-cache"); + header("Pragma: no-cache"); + header("Cache-Control: post-check=0, pre-check=0"); + +} + +/* print the tiff image and close the connection */ +echo "$data"; + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> + diff --git a/trunk/gosa-plugins/gofax/html/images/blocklists.png b/trunk/gosa-plugins/gofax/html/images/blocklists.png new file mode 100644 index 0000000000000000000000000000000000000000..13f03f7462588e4687db52c121b9a92cba1968b1 GIT binary patch literal 3935 zcmV-l51{agP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG( z2s#2n01n?tL_t(&-tC%ubX-S$$3HXo?%jv9yL!v9{FE&}^0tlB#7PXXMe`ue zqakThpwJVNP#SU$;n1Fxw4rb)A#EsaD1|}`KX8MP0H$rw|W60qT=IkEr*}Zf1`^^02H{bd03S$hX+Vc4V_uhN&xp&@q z=RJT#U;xCNE5%9fAdWpw@R6AHz7WE$R;%M%wp{zgRBCVtptiPVPB)v=XhI0u+n2^y zuU>sS2zlaQPCdvsdtV6A6NyCrQA&Bzm`)o21VTto7Q8s=;GZ-|&ZM0dfRqv;1X7Aq z4Ezm%PI1g4k%;(}0SFfZqcA zCRL%C9r3NNnZL4~IGs+TwMGcR>1e25dKVKyS1J`VH8q70f=DEMW+{}-W?~&3%h$hE z)1b9ZJn+B+YsSV#85osHLZy^nE|&+pc6a@JbLZxu?7C+hxL+(%?Cqu0--n;gVgRSEp4gJb#FuvvN+b|M zpaMmqP%vAr-Etv-G3Mnr1=zG{^U5cl*#2-Lk+{qNS}By)T(N0WZeMrzr>kDoNGZkX z3cA2`Np0Oq=FvxSdS0Vx!93z^^NA+wPzJo|DT-rb4D}DXKIL>9p7<@m#7=yGVkw~Pzxw-Z8;YgV7ecc4U z&j}aSaWF#=D3lH;Y<-OQx3{u#?HX3zaufE(&qM3NnPL`HK!cG2;Z<2al}GJ*j?pK# z(S84Y$Xjmf2wik>x7Ipz>#eu_3-G}=1PIxoCZ!a{7_`x76`-`lC_^SQNq2WQotry} zC*t^?fAk1BbK06YsLcRK+rpZhWX~VIkMo-AY5(kJkjpwSr4s(W1MteLAPi^&TBD7H z2w8}TgSDic1^0Z6vqn=4{l~xY%*M+@mu%fiEEa2g^EF^htq=mGHCk&_U_b;!qESXh zMgdLlKrd5;Da=u|D-Z}v5RF8!EgOR&_reP#AAXq4cYJ`FOE+RBCUIYS2`MDDlo-oG zS~gf9jKDG)qbjK4G~W0)7?9Bzi|@Xh)}KAg_cmWa>5uPj=elc84zTL?d)P*F}GSKhd!v?j=9@rQ?qws)}QPw(cbNB;Tz z8~^5^k8C&QkrM)3e9`)#@9^Qcv?M{*Ln(#t1ysE%kw^@!H0g;+9LE8}@fnapl1La(c?0bX&MLf~;tHp>OE7!wEg6O>9AAu+~agrILK zM|epJV*-$GPp++t{^x7YBO|5{tzc8y~~gnlGdVXVlq?oX0lWyBpVu-?&;wb>ClyovtlyMKx%+gDn)-^KdxohEVF21aseR6Yl`4b=+Hy0>wpu7TM9{s?8+TRoO4!~qOO+J@LN{Q!tXk!>093q*? zP?xM{-31pCa%Sg$#C0(v{nRLrGT@1s(p0FpgcmL)8i~-@(1cQoRjXH{mFCW1jI&$n z$fhT-Tpw(Ktqfvu8#~+zKdVA~^?9rf0-U;frV->En}qMxhzshq$TG7$dCob5VAu|04@;qs?0Yt_mh@9o}Q_{ z{Bs(Q97I$-RG<)2U>gvP4g9d;60E z$m*3V=164E^N2>Y8|qoGyaS^(-@Wtwh=bi! zl_sM#wt$c^IJHT7%O0_JUC(>(`vmsUkq59Wi~QgqzVA`C9r6m4fRHV5J%28MZAmOk zzRq1W2n0^ZW_Q;vq>x0T(OI+Lm&;VNWYP|?M8dQHsRFQVy1w^avTuI}FMQ@NNE|po zvoZL95i`!Mj6}$I6*6z%%=y<{$G-jhW^ItgVv+1iFAb9wXut8@l*{ff>N1{u@=1zM{WoW?YNz&aFI5Xx z8NqZ&kn@B7IRLp_;r4R5d{!=(jZIHaC*5*6S*=#%O6%yt1q;t!w{G2nwzf8^)#|K% z9hYt7;L|&}r8dr?e1U=m+I4AfX{7GO-6R4-!~)AObHWpnWL5FvjW==G9e17ZJBM&M z%!N&j3^XNK8YuFvPm=|!qG7r`&9q|Y9Dr-CzWTe`=tMf5j!#cb)w!-)SFKhXl+y9x z;i18W3m3k(wzf7Li9}}gJHNA&$G-LNI1A2VMZQ3ffCz@t&hL=$18OALQlh0KhG2>7 z({=T=tpDi8uukGQsA`p=ZCg2i^$KEp_ENQ=8EB5jIFz3z2Rn}U92gi7@pxRcwarIL zX*!lKSC%DxA*3gztb{_L(B8d!OU=#Ab|R6Ox(Z$Ix{mb^Jv3{RSswe~?VQ)q&cfkAGH!)N3BMDzc|jS*T>ror z{PZ}$;>C*%!1VNVe%J0@x}~|rYieo=YHDkOXe6qH5N;$AxnSPBdDbt=h-2;M`|szg zx8BU9%iCCYXn_3~gcLYZf)LcSwz8;YF)yxL%cYo7?a( zsb`*HWZPpTwWfK|d}Qhf<&j~85VTeT+UGa&g+iI<3hv`waC6=mEly%m9a~Wr5C9Rt z*|B5CSFgYR`di+}|0zvPasTC)vvgvFJL|%X4vdm=9Q=@tFa|pm!ipym8vGzY1R6(3 z>}ZrwGJ#0cP%Td3rUvl53Lzw|e!#-|Iv%Z5d3vHS_%dufV$6{@vKEg~9UJN@P|fDD z4R2;()g%&pblWx_?Cj*9@@4K?xtx~a5e_Ls(Qybx!_B8iGxaC;z0OE9P!XNzL2YsELol8&U+JS=y`OJ5qG#sPsMC>0r<%<_}eFwbOi#5Q*Z+rIzwib13M&&ZwL`|945TX75KG^khI zcmuk%HU7fZZ?*3FaaVGs6JgEb`7CLhM`J?+p=cC@rcx@ApUiN0WQ?BC3HBF@_$yaU zcieGTI=*O8d2r{>{u3_N)0qJwg@Zx=GLEzbVmVyg0#`P|#s*kX3-w_k901=Ke+qJW tIFyFxM&apU=qf`QKw46(K+XBz{|BvDKCa$a#Ss7i002ovPDHLkV1f{mf%*Ud literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofax/html/images/fax_small.png b/trunk/gosa-plugins/gofax/html/images/fax_small.png new file mode 100644 index 0000000000000000000000000000000000000000..bb676f8b7f9d40a3031d5b6c6b8d52fb27d84718 GIT binary patch literal 787 zcmV+u1MK{XP)~i3uiDk!ljAL=-eo%?R#9P;evI zl>7_9f1{8^(XIOw3L%?pT?Hw*q_{HHiJicF+?g=BA9FrkjEPwk4;)^2&Ut>kyu1&* z;;gN$ecbQ&2U(Vl$K&zn@;c|_&d$zLKwSO}UIkcQUj8zQqT68@B80&6JUq_>pwVc2 z7>42dN~z}n{&i!c(YU$3zJ7OOW8=rw)zwB>mPjd4N}{y_1WKvu$;rvfJkNi-xVTXM z*4Eayo12?Imm{r2JE z;S-T0Nqc2wWg$rt;y5NXZ}6gXjx`Dg;2aKzwT>IUPqp?Ze@B1Ol=pb}{ll+=AP6c& zQJ|z`VSb)xze}EXEukM^ot*+47-PA8Gvd95<1}w`zxEkRcb1xgl+tBchSHiaiumr+ z*ZJlniPjpeHDy_n=Q%?7NIAioJG{dZs#IvJD}j`fqA1W>BZQzVCn%-RT4A&y%L=kQ z$6AXJ9>y4~u?Q>hJTD5AQsj9)eXthm97=1nns%VH#u$sW7MNCJ48jV4{{Yrn^uG{U zmeZ;g#+WO(5CW|=#+d061wj-TV?bBexy8lBudc#WmgQ-u(>cAKiE6d_ zG7Lk)Fr-qcTn*7VN3B*PiX!iS)3~>{caWy(%w#etuIs+<3#AmjUhj`f?H?~<%oVPC Ri}e5i002ovPDHLkV1l>TdA9%n literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofax/html/images/list_blocklist.png b/trunk/gosa-plugins/gofax/html/images/list_blocklist.png new file mode 100644 index 0000000000000000000000000000000000000000..d89fd1d2f0a362db2f1dd77fd0a972fab9884523 GIT binary patch literal 671 zcmV;Q0$}}#P)4C$!=N!&C z|NFo9DAH2@Xh9HAfG7nB0HZD273)de;G9@m#ByZCrnPQxPS&b5P7H+QLDNqDIO#}w zcm~7%ym=T1i6~Gg1o@YL>f56Xv_nF#?koaIL1WDU*T?nUgKI=ji;>a}@#Gp96|~0qj|NFI1oc4J6D69?=eQ2keARBmt3Sh{PfP<5~KB#ULS& zDIo5uOo4>xKUYl2e7noRauTd%ix($X?miOVf%$V3@2=gj(M#a%Oz593qy2@UzUqtV&ZdFlk&sY z=o^XB+4+X1GkaND(wO! zx;Ds{#ATExkFS9$wf?H6rM9-%Z&^l3FsPeCp^%x0{{^69E~rF+m|p+@002ovPDHLk FV1mC$IDh~E literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofax/html/images/list_new_blocklist.png b/trunk/gosa-plugins/gofax/html/images/list_new_blocklist.png new file mode 100644 index 0000000000000000000000000000000000000000..971867eb5ba08eee8dfc89c3c81aea617b4f8beb GIT binary patch literal 781 zcmV+o1M>WdP)A{|x^bMH)vQ zd=~^1AW8uOK-bAN3P8MwPGK1hEay+S?|l_hiS*&!f6uCEif9>GXyn^=;6Vx(Fq_9@uf31x#$vi|`1;b0^PfFar@YCE+#=@cLW zB|Yg0*aA#CkIGu0EI_ZXkb{vRhNLu6%jvrFaCH9n-mF5X%Y*(-@OMI89?@hzE7}7{ ziN>nkPH%f5hG>3 zU?S?+mx(a+RnvT7CslTKXb?|=88>-Wv#`RB*jmEVU1aC4gJs$Dy&OwdJTS4H zaA=azsT^FAa&~CNtVK6)^o)m&{&K>WAF^Ik=~h&_9Z|#Pdrq}v5X!lUAv(p3=}a&% z@Np4I>F%qvbVO)ue8uq->zSR^gspK-UC-rY!z1eNhEM<%7oW?AL3>VoluEBLeOen< z-REh?5+Ik#DnG-CODI<+pZhA5;y+PURp2pAqsZ^q$AiIOcrO1N=c;f(+2~OU00000 LNkvXXu0mjf#Y<8f literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofax/html/images/plugin.png b/trunk/gosa-plugins/gofax/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..56e3f5bd906387729d3358b5183fd9e3331b5e38 GIT binary patch literal 2637 zcmV-T3bOTyP)?~ z>We}Mp=-68nVp?Q2!ZE?T4Yw`Liv0yvTfU~cXNZxptVjs|NQg2(&;JE>8Z9dt0E8t z!LF@axBgmdz2*djkobPBZ|~l{KhatXrBqwFRk={DRx^#Daa|O=8iW9)H1p+oBH;*H z>$Y;MB2cYWsnu!=6RiC{P+Czgmk|hTyS=JyTc3UQ*?acx+4Eo|8tqp~H7b?L#K{vU z|8el4gF&TQy-^z&6(~xjk~#e7;X470G5@?$u7$vX0|&Ri@y6>vPb3l#7(gq9(whAT z4ir8e8v3zc_l=ZNT-St7T>5B!ODU03;<|3=+_~ZT4ZR!0H@^AUjz7Ke`k568eD4R} z|EcS`4;W);Gy;qZYrwn`ksjwOVCnW}4~D44ZD*L@X9-5~@`f76Z(p zrGQ8@LM$F*zFfu_2!-5^6$za9@FTlWC?sv$Mk&?wf1^-J5ppF#&|o^7C7$TG%zdPk zcwvu|$4)XjI!X`(1VPhvs?{p>dL69-gpk-F2ha1c{$^o07OvxR@Zdo_&!Z7EmTmwB zn5&e@OkH5dS9V~uX7lDP>xB@zF5S$R5xDQ3yMvK)=i<_m1b!W*6pea-U-$962wG{f z(=)iP3x*{NNFhli5*+*B7@wW}jQ8JrpO71(=GR&bytuku-Cex)>T4YR;Ze42+eT++ zC)L`;2qyrgHB(bl)M`FPfaBPGx81fqzM>0-!{H924S`ZLf`CS&0mfhgg|q~@nLM_1 zE=#b45Y(%6(wQ{VnQ1=y@S|p1y^hifgF#A(QVPqq(1E6>r-##LP6LohX9)a&>J=ec zDMjXdhDxOZ25j42cl+RA_f-gZD5X$=LMx3i8iPR@g+OwC>O9IQZ0nM)0`kQ?eSLih zA$aab&k>KuDVNKrKoN~b$>;NQt?wc;lcA@phibKokb*k~@1RsFF*i3ysZ_#})>6VK zq#!*tMQOH#5CYq_Wp8h9azz5J>o)yg>t+-(8f`#Ii@IMYHIZr|uvn>ZJ(q#a19WZZ z;>dT7aBlb~rZDwSe%WRx?Xo*@>Ep_IaQY_@FK!u0ese%;5i zZ8Dh*#bSwUHoH)hlEh;1mG?kXX@l14;%{THZJT^92S7HHT{bsqGy;M~gR${3M$U~a zjWIqp&hWWmMu$fk85v=8bd=n5j&it+QVQ2~DHe<5a=B*Ib6jSoX8=g2)6H{6Kr|Xn zT*U%3-9{UX+oR zdE${M76NJ6pbQ_KIEi1clNOT*+ipfcpjs}Yl|lmXc)Wi_0yEhx#X=D&CG|!fZ446= zlXT>Abat#`_s%Uf`zVw9e-`J0B zI}}T$W}B27M#sj*=353#TLPKs8BU!ZVs>tpQmMqIO#@^yX>J)9;IVIg8_)A@NIHEf zwAPG_j$zq0*<7w8H8C09e9J(kEdeP7+GyhOIEh4pdflg|r-ytYj}#JV$s0;Q2!Zky zg+dUFbo z=gy@SY$0G<63e={K^Ohfb!<+YJdPBSa5#L!Ze{cH^LU=eU3cAuF$PP@iep>#WeJ=< zbDB?1eS&S-Shj_fl4f=q@ZyUvarn{096EG}YPGuN1j6AkZ@&2^$4?yRnP;9s2*I&q z$6kHw&u=YN7Fq}t3Z@;_F(_l=U#i@fd@ZGrN)b0>({G8hYpE%-g)Qp zFgiXyF5>aH=#fSNWJ3s9mr~Xo$8k=bI#urO?zR(&#Ikjo>j@zQj^kK` zLP6i$cat6%*u*1`JaU=L5`lq%=D{#GH&;A<;<)bV?x}Zmbp_E_GzfcPC4{JYp0~5N zx7TW$MywHmSS%*a{_AWsnM`K)?c3)sSbo_kWCjKX{758{S6aEQRa*sAS$o11(2eEy-75&+QG*9Rd4JkP`I?Ccxcwo9D=+C@Mt%QAeAcP>1 zNTj;zZxKK#75-V_`#yZ%2j?7~=YbF+yX&>Cv!Il!&dzZPArOY4_@{zgF89E7UDjwc z&}=s0`#ypo0OuU8>mr>_XKdSM0D>5k=pX_~XOwe|k$>Z*pxiOH8c z-*>$I`o8*~SYKZ+1Gqy_ZrVnM|TkC_JG(wCCfqLhM^5=toq zK>)@WbY1VK)oS&pX`1(sj*j3s4qVs$>k~9hgRbkyX0ym-GH@KHMGp=RJ{Jmwk+roo z?C$QOSS*4u)|M=#Y(v)z#H^j4?fy91l_yMUYa05JD=I$~V__zs8+^1D)P^%%^KXhX4Qo M07*qoM6N<$g5Z`rpa1{> literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofax/html/images/reports.png b/trunk/gosa-plugins/gofax/html/images/reports.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb715a81134affabdcd92a44d17c659979459a8 GIT binary patch literal 1770 zcmc)J`9ITt902f7Lv0g^VksSRt(2>W(4od+%l(yftG>~poL!PDYG371DypxF3E5;R zVy@AonOs}Rk<2kWT${;JnSI~;^hbQ3kN4~Se!t#7yx;G~`}oJp!$kwFkA@&fgW&4y z16oUEAXPve(1UshngtO)E;xwRvPuj=h*&Q-UpyH6AED98?E;{qr>BR-VzaWcC=^Ow zULF-jqtS|rii(SiOG--Ubb5JtxkMt7$z(k}JtPw8K7I0W`S9~PIk{d={y3jqJCeZhYYHMrXzkknUGCu&FQ}saC^hcm;n#E!@ zG&Hc;?8e5%PfAUnnqbX;v^2LUwE~>aZ2*VU#^G`RuF~hvpTB(h(hhuub^OuU(FyB< zb;G_XffM)+^eXXqygr~`X<%SraBz?h3<-t+flvSlVIq-GBo+Z;u}C~D28LlHuu<3; zY-OwN(aGtx34R!IsHsTw;yKDgPI3g>BL)@%7^14Iok>=%j-95oW=QD z6M8D%Js1cezG|S7il0PT8v%|s~OXl>tFQSM`d0! z#;mcI#p1g+?J$?TX+K!a>9eDCErT}2nU!kzW)xLk6wZt}hHrTmgb56K>2ID+?9+}T zCbg#q<52vF%i`#xcOBcf2TRfUPNPi6{ep0wh2p7emDG?wg)y?*zEEGI%Vcz@RD4@1 zdmWAVc|XzlCJWj6P0iLt7@Kgu_m{rxDmp>q?&Gy)w&aSPtg2trD=lh%bYFhynQ1@y z{_KXSz508dJPP~mR_oN$-1BX=OwRAmygnz;8$ur{Yz<$1+@2pzSrg_AxB|KZlwn}Kwr3(91LvQh~Cyi21Cfd@gZ?4@)eB{eQai>D`t^BcW zr?pJ+DLTViboEe#|Aqbgu9IhdHS+e&jIKL1|#NI0c! z$hcO<9q76;*K_yNqjZZShY10ZwaXI24`uA493M*cs`J7eBbZD$sweTJzTw8H^i@t< z*Q*>qwj_5=LpirWuolVgsrCT{eE8Dji(UFTWhvaSog54VP(H(OSCwx z6V35iq~IX$3}`wiXrqLqjkLyCk`)IkY?c`v(6O%ePif)Wkk+SGs`PWlvVwh+AC-n! zwXU`?3|Jh!LRF?h{zlU@aeiEwV(>#`rO~{5$>8@y1p^xw62C5SvTJ3DM3i_l>=YOr zVVqkV98-Wv%d_3;XEFP@r(0, 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2008-07-28 08:45+0200\n" +"Last-Translator: Jan Wenzel \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/getfax.php:56 +msgid "Could not connect to database server!" +msgstr "Konnte nicht zum Datenbankserver verbinden!" + +#: html/getfax.php:58 +msgid "Could not select database!" +msgstr "Konnte die Datenbank nicht auswählen!" + +#: html/getfax.php:63 html/getfax.php:71 +msgid "Database query failed!" +msgstr "Die Datenbank-Abfrage ist fehlgeschlagen!" + +#: gofax/faxreports/detail.tpl:5 +msgid "FAX preview - please wait" +msgstr "Fax Vorschau - bitte warten" + +#: gofax/faxreports/detail.tpl:8 +msgid "Click on fax to download" +msgstr "Klicken Sie auf das Fax, um es herunterzuladen" + +#: gofax/faxreports/detail.tpl:17 +msgid "FAX ID" +msgstr "Fax-ID" + +#: gofax/faxreports/detail.tpl:21 gofax/faxreports/contents.tpl:30 +#: admin/systems/services/gofax/class_goFaxServer.inc:68 +msgid "User" +msgstr "Benutzer" + +#: gofax/faxreports/detail.tpl:25 +msgid "Date / Time" +msgstr "Datum / Zeit" + +#: gofax/faxreports/detail.tpl:29 gofax/faxreports/class_faxreport.inc:503 +msgid "Sender MSN" +msgstr "Absender-MSN" + +#: gofax/faxreports/detail.tpl:33 gofax/faxreports/class_faxreport.inc:502 +msgid "Sender ID" +msgstr "Absender-ID" + +#: gofax/faxreports/detail.tpl:37 gofax/faxreports/class_faxreport.inc:505 +msgid "Receiver MSN" +msgstr "Empfänger-MSN" + +#: gofax/faxreports/detail.tpl:41 gofax/faxreports/class_faxreport.inc:504 +msgid "Receiver ID" +msgstr "Empfänger-ID" + +#: gofax/faxreports/detail.tpl:45 gofax/faxreports/contents.tpl:32 +#: gofax/faxreports/class_faxreport.inc:501 +msgid "Status" +msgstr "Status" + +#: gofax/faxreports/detail.tpl:49 +msgid "Status message" +msgstr "Status-Nachricht" + +#: gofax/faxreports/detail.tpl:53 gofax/faxreports/class_faxreport.inc:508 +msgid "Transfer time" +msgstr "Übertragungszeit" + +#: gofax/faxreports/detail.tpl:57 gofax/faxreports/contents.tpl:35 +msgid "# pages" +msgstr "# Seiten" + +#: gofax/faxreports/main.inc:19 +msgid "FAX reports" +msgstr "Fax-Berichte" + +#: gofax/faxreports/contents.tpl:2 +msgid "Filter" +msgstr "Filter" + +#: gofax/faxreports/contents.tpl:6 +msgid "Search for" +msgstr "Suche nach" + +#: gofax/faxreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Benutzername, nach dem gesucht werden soll" + +#: gofax/faxreports/contents.tpl:8 gofax/faxreports/contents.tpl:16 +msgid "in" +msgstr "in" + +#: gofax/faxreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Wählen Sie den Teilbaum, in dem gesucht werden soll" + +#: gofax/faxreports/contents.tpl:12 +msgid "during" +msgstr "während" + +#: gofax/faxreports/contents.tpl:21 +msgid "Search" +msgstr "Suchen" + +#: gofax/faxreports/contents.tpl:31 gofax/faxreports/class_faxreport.inc:500 +msgid "Date" +msgstr "Datum" + +#: gofax/faxreports/contents.tpl:33 +msgid "Sender" +msgstr "Absender" + +#: gofax/faxreports/contents.tpl:34 +msgid "Receiver" +msgstr "Empfänger" + +#: gofax/faxreports/contents.tpl:50 +msgid "Search returned no results..." +msgstr "Die Suche verlief ergebnislos..." + +#: gofax/faxreports/class_faxreport.inc:6 +msgid "FAX Reports" +msgstr "Fax-Berichte" + +#: gofax/faxreports/class_faxreport.inc:7 +#: gofax/blocklists/class_blocklistManagement.inc:6 +#: gofax/blocklists/class_blocklistGeneric.inc:10 +#: gofax/faxaccount/class_gofaxAccount.inc:7 +msgid "This does something" +msgstr "Dies tut etwas" + +#: gofax/faxreports/class_faxreport.inc:116 +#: gofax/faxreports/class_faxreport.inc:126 +#: gofax/faxreports/class_faxreport.inc:130 +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Error" +msgstr "Fehler" + +#: gofax/faxreports/class_faxreport.inc:116 +msgid "No fax server found!" +msgstr "Kein Fax-Server gefunden!" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +msgid "Configuration error" +msgstr "Konfigurationsfehler" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, php-format +msgid "Missing %s PHP extension!" +msgstr "Fehlende %s PHP-Erweiterung" + +#: gofax/faxreports/class_faxreport.inc:126 +#, php-format +msgid "Cannot connect to %s database!" +msgstr "Konnte nicht zur %s Datenbank verbinden!" + +#: gofax/faxreports/class_faxreport.inc:130 +#, php-format +msgid "Cannot select %s database!" +msgstr "Konnte keine Auswahl auf %s Datenbank durchführen!" + +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#, php-format +msgid "Cannot query %s database!" +msgstr "Konnte %s Datenbank nicht abfragen!" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#: gofax/blocklists/class_blocklistManagement.inc:269 +#: gofax/blocklists/class_blocklistManagement.inc:326 +msgid "Permission error" +msgstr "Berechtigungsfehler" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +msgid "You have no permission to view this fax id!" +msgstr "Sie haben keine Berechtigung um diese Fax-ID anzusehen!" + +#: gofax/faxreports/class_faxreport.inc:208 +#: gofax/faxreports/class_faxreport.inc:329 +msgid "Y-M-D" +msgstr "D.M.Y" + +#: gofax/faxreports/class_faxreport.inc:323 +msgid "Insufficient permissions to view this attribute" +msgstr "Zugriffsrechte nicht ausreichend um das Attribut anzuzeigen" + +#: gofax/faxreports/class_faxreport.inc:323 +msgid "Insufficient permissions" +msgstr "Unzureichende Berechtigungen" + +#: gofax/faxreports/class_faxreport.inc:487 +#: gofax/faxreports/class_faxreport.inc:488 +msgid "Fax report" +msgstr "Fax-Bericht" + +#: gofax/faxreports/class_faxreport.inc:488 +msgid "All entries are readonly" +msgstr "Alle Einträge sind nur lesbar" + +#: gofax/faxreports/class_faxreport.inc:493 +msgid "Fax reports" +msgstr "Fax-Berichte" + +#: gofax/faxreports/class_faxreport.inc:498 +msgid "Detailed view" +msgstr "Detaillierte Ansicht" + +#: gofax/faxreports/class_faxreport.inc:499 +msgid "Fax ID" +msgstr "Fax-ID" + +#: gofax/faxreports/class_faxreport.inc:500 +msgid "Time" +msgstr "Zeit" + +#: gofax/faxreports/class_faxreport.inc:506 +msgid "Number of pages" +msgstr "Anzahl der Seiten" + +#: gofax/faxreports/class_faxreport.inc:507 +msgid "Status Message" +msgstr "Status-Nachricht" + +#: gofax/blocklists/remove.tpl:2 +msgid "Warning" +msgstr "Warnung" + +#: gofax/blocklists/remove.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Bitte überprüfen Sie genau, was Sie tun. GOsa hat keine Möglichkeit, die " +"Daten wiederherzustellen." + +#: gofax/blocklists/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Wenn Sie sicher sind, drücken Sie 'Entfernen' um fortzufahren oder " +"'Abbrechen' zum Abbruch." + +#: gofax/blocklists/generic.tpl:1 gofax/faxaccount/generic.tpl:6 +#: gofax/faxaccount/paste_generic.tpl:4 +msgid "Generic" +msgstr "Allgemein" + +#: gofax/blocklists/generic.tpl:8 gofax/blocklists/paste_generic.tpl:3 +msgid "List name" +msgstr "Listenname" + +#: gofax/blocklists/generic.tpl:12 gofax/blocklists/paste_generic.tpl:5 +msgid "Name of blocklist" +msgstr "Name der Sperrliste" + +#: gofax/blocklists/generic.tpl:17 +#: gofax/blocklists/class_divListBlocklists.inc:86 +#: gofax/blocklists/class_blocklistGeneric.inc:387 +msgid "Base" +msgstr "Basis" + +#: gofax/blocklists/generic.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Wählen Sie den Teilbaum, in den die Gruppe eingepflegt werden soll" + +#: gofax/blocklists/generic.tpl:26 +msgid "Select a base" +msgstr "Wählen Sie eine Basis" + +#: gofax/blocklists/generic.tpl:40 +msgid "Type" +msgstr "Typ" + +#: gofax/blocklists/generic.tpl:43 +msgid "Select wether to filter incoming or outgoing calls" +msgstr "Wählen Sie, ob ein- oder abgehende Rufe gefiltert werden sollen" + +#: gofax/blocklists/generic.tpl:51 +#: gofax/blocklists/class_blocklistGeneric.inc:386 +msgid "Description" +msgstr "Beschreibung" + +#: gofax/blocklists/generic.tpl:54 +msgid "Descriptive text for this blocklist" +msgstr "Beschreibender Text zu dieser Sperrliste" + +#: gofax/blocklists/generic.tpl:68 +msgid "Blocked numbers" +msgstr "Gesperrte Nummern" + +#: gofax/blocklists/generic.tpl:90 +msgid "Information" +msgstr "Information" + +#: gofax/blocklists/generic.tpl:92 +msgid "Numbers can also contain wild cards." +msgstr "Nummern können auch Platzhalter enthalten." + +#: gofax/blocklists/class_divListBlocklists.inc:31 +#: gofax/blocklists/class_divListBlocklists.inc:32 +msgid "List of blocklists" +msgstr "Liste der Sperrlisten" + +#: gofax/blocklists/class_divListBlocklists.inc:50 +msgid "Select all" +msgstr "Alle auswählen" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +#: gofax/blocklists/class_blocklistGeneric.inc:219 +#: gofax/blocklists/class_blocklistGeneric.inc:222 +#: gofax/blocklists/class_blocklistGeneric.inc:229 +#: gofax/blocklists/class_blocklistGeneric.inc:385 +msgid "Name" +msgstr "Name" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +msgid "Department" +msgstr "Abteilung" + +#: gofax/blocklists/class_divListBlocklists.inc:57 +#: gofax/blocklists/class_divListBlocklists.inc:91 +msgid "Actions" +msgstr "Aktionen" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +#: gofax/faxaccount/class_gofaxAccount.inc:881 +msgid "Send blocklist" +msgstr "Sende-Sperrliste" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +msgid "Show send blocklists" +msgstr "Zeige Sperrlisten für abgehende Rufe" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +#: gofax/faxaccount/class_gofaxAccount.inc:880 +msgid "Receive blocklist" +msgstr "Emfangs-Sperrliste" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +msgid "Show receive blocklists" +msgstr "Zeige eingehende Sperrlisten" + +#: gofax/blocklists/class_divListBlocklists.inc:67 +msgid "Regular expression for matching list names" +msgstr "Regulärer Ausdruck zum Erkennen von Sperrlisten-Namen" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit department" +msgstr "Aktualisieren" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit" +msgstr "Übertragen" + +#: gofax/blocklists/class_divListBlocklists.inc:96 +msgid "Create" +msgstr "Anlegen" + +#: gofax/blocklists/class_divListBlocklists.inc:98 +#: gofax/blocklists/class_blocklistGeneric.inc:388 +msgid "Blocklist" +msgstr "Sperrliste" + +#: gofax/blocklists/class_divListBlocklists.inc:104 +msgid "Remove" +msgstr "Entfernen" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "edit" +msgstr "Bearbeiten" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "Edit user" +msgstr "Benutzer bearbeiten" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "delete" +msgstr "Entfernen" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "Delete user" +msgstr "Benutzer entfernen" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, php-format +msgid "Number of listed '%s'" +msgstr "Anzahl der angezeigen '%s'" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +msgid "blocklists" +msgstr "Sperrlisten" + +#: gofax/blocklists/class_divListBlocklists.inc:196 +msgid "departments" +msgstr "Abteilungen" + +#: gofax/blocklists/class_blocklistManagement.inc:5 +msgid "FAX blocklists" +msgstr "Fax-Sperrlisten" + +#: gofax/blocklists/class_blocklistManagement.inc:230 +msgid "Permission" +msgstr "Berechtigung" + +#: gofax/blocklists/class_blocklistManagement.inc:246 +#: gofax/blocklists/class_blocklistManagement.inc:307 +msgid "blocklist" +msgstr "Sperrliste" + +#: gofax/blocklists/main.inc:35 gofax/blocklists/main.inc:37 +msgid "Blocklist management" +msgstr "Sperrlistenverwaltung" + +#: gofax/blocklists/class_blocklistGeneric.inc:9 +#: gofax/blocklists/class_blocklistGeneric.inc:376 +#: gofax/blocklists/class_blocklistGeneric.inc:381 +#: gofax/blocklists/class_blocklistGeneric.inc:382 +msgid "Fax blocklists" +msgstr "Fax-Sperrlisten" + +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Phone number" +msgstr "Telefonnummer" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "send" +msgstr "senden" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "receive" +msgstr "empfangen" + +#: gofax/blocklists/class_blocklistGeneric.inc:205 +#: gofax/blocklists/class_blocklistGeneric.inc:286 +#: gofax/faxaccount/class_gofaxAccount.inc:659 +#: gofax/faxaccount/class_gofaxAccount.inc:788 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: gofax/blocklists/class_blocklistGeneric.inc:375 +#: gofax/faxaccount/generic.tpl:10 gofax/faxaccount/paste_generic.tpl:8 +#: gofax/faxaccount/class_gofaxAccount.inc:863 +msgid "Fax" +msgstr "Fax" + +#: gofax/blocklists/class_blocklistGeneric.inc:389 +msgid "Blocklist type" +msgstr "Typ der Sperrliste" + +#: gofax/faxaccount/locals.tpl:6 +msgid "Select numbers to add" +msgstr "Wählen Sie die hinzuzufügenden Nummern" + +#: gofax/faxaccount/locals.tpl:19 +msgid "Filters" +msgstr "Filter" + +#: gofax/faxaccount/locals.tpl:28 +msgid "Display numbers of department" +msgstr "Zeige die Nummern der Abteilung" + +#: gofax/faxaccount/locals.tpl:29 +msgid "Choose the department the search will be based on" +msgstr "Wählen Sie die Abteilung, auf die die Suchfunktion angewandt wird" + +#: gofax/faxaccount/locals.tpl:38 +msgid "Display numbers matching" +msgstr "Zeige die Nummern, auf die Folgendes passt" + +#: gofax/faxaccount/locals.tpl:41 +msgid "Regular expression for matching numbers" +msgstr "Regulärer Ausdruck zum Erkennen von Telefonnummern" + +#: gofax/faxaccount/locals.tpl:47 +msgid "Display numbers of user" +msgstr "Zeige Nummern des Benutzers" + +#: gofax/faxaccount/locals.tpl:50 +msgid "User name of which numbers are shown" +msgstr "Benutzername, dessen Nummern angezeigt werden" + +#: gofax/faxaccount/generic.tpl:13 +msgid "Multiple edit" +msgstr "Mehrfaches Bearbeiten" + +#: gofax/faxaccount/generic.tpl:17 gofax/faxaccount/paste_generic.tpl:13 +msgid "Fax number for GOfax to trigger on" +msgstr "Fax-Nummer, auf die GOfax ansprechen soll" + +#: gofax/faxaccount/generic.tpl:24 gofax/faxaccount/class_gofaxAccount.inc:874 +msgid "Language" +msgstr "Sprache" + +#: gofax/faxaccount/generic.tpl:29 +msgid "Specify the GOfax communication language for fax to mail gateway" +msgstr "Geben Sie die Kommunikations-Sprache für das Fax to Mail-Gateway an" + +#: gofax/faxaccount/generic.tpl:37 gofax/faxaccount/class_gofaxAccount.inc:875 +msgid "Delivery format" +msgstr "Auslieferungsformat" + +#: gofax/faxaccount/generic.tpl:41 +msgid "Specify delivery format for fax to mail gateway" +msgstr "Geben Sie das Auslieferungsformat des Fax to Mailgateways an" + +#: gofax/faxaccount/generic.tpl:54 +msgid "Delivery methods" +msgstr "Auslieferungsmethode" + +#: gofax/faxaccount/generic.tpl:59 +msgid "Temporary disable fax usage" +msgstr "Temporäres Abschalten der Fax-Benutzung" + +#: gofax/faxaccount/generic.tpl:65 +msgid "Deliver fax as mail to" +msgstr "Fax als Mail ausliefern an" + +#: gofax/faxaccount/generic.tpl:73 gofax/faxaccount/class_gofaxAccount.inc:878 +msgid "Deliver fax as mail" +msgstr "Als Mail ausliefern" + +#: gofax/faxaccount/generic.tpl:80 gofax/faxaccount/class_gofaxAccount.inc:879 +msgid "Deliver fax to printer" +msgstr "Fax an Drucker weiterleiten" + +#: gofax/faxaccount/generic.tpl:99 +msgid "Alternate fax numbers" +msgstr "Alternative Fax-Nummern" + +#: gofax/faxaccount/generic.tpl:114 +msgid "Add local" +msgstr "Lokale hinzufügen" + +#: gofax/faxaccount/generic.tpl:122 +msgid "Blocklists" +msgstr "Sperrlisten" + +#: gofax/faxaccount/generic.tpl:125 +msgid "Blocklists for incoming fax" +msgstr "Sperrlisten für eingehendes Fax" + +#: gofax/faxaccount/generic.tpl:128 gofax/faxaccount/generic.tpl:136 +msgid "Edit" +msgstr "Bearbeiten" + +#: gofax/faxaccount/generic.tpl:133 +msgid "Blocklists for outgoing fax" +msgstr "Sperrlisten für abgehendes Fax" + +#: gofax/faxaccount/paste_generic.tpl:18 +msgid "Alternate fax numbers will not be copied" +msgstr "Alternative Fax-Nummern werden nicht kopiert" + +#: gofax/faxaccount/main.inc:106 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Betätigen sie den 'Bearbeiten'-Schalter unten um Informationen in diesem " +"Dialog zu ändern" + +#: gofax/faxaccount/main.inc:115 +msgid "FAX settings" +msgstr "Fax-Einstellungen" + +#: gofax/faxaccount/class_gofaxAccount.inc:6 +msgid "FAX" +msgstr "Fax" + +#: gofax/faxaccount/class_gofaxAccount.inc:165 +#: gofax/faxaccount/class_gofaxAccount.inc:175 +#: gofax/faxaccount/class_gofaxAccount.inc:178 +msgid "GOfax" +msgstr "GOfax" + +#: gofax/faxaccount/class_gofaxAccount.inc:174 +msgid "Remove fax account" +msgstr "Fax-Konto entfernen" + +#: gofax/faxaccount/class_gofaxAccount.inc:177 +msgid "Create fax account" +msgstr "Fax-Konto erzeugen" + +#: gofax/faxaccount/class_gofaxAccount.inc:453 +#: gofax/faxaccount/class_gofaxAccount.inc:535 +msgid "back" +msgstr "zurück" + +#: gofax/faxaccount/class_gofaxAccount.inc:675 +#: gofax/faxaccount/class_gofaxAccount.inc:679 +#: gofax/faxaccount/class_gofaxAccount.inc:873 +msgid "Fax number" +msgstr "Faxnummer" + +#: gofax/faxaccount/class_gofaxAccount.inc:687 +msgid "Mail delivery is requested without target address!" +msgstr "Die Mailzustellung wurde ohne Zieladresse angefordert!" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "Mail address" +msgstr "Mail-Adresse" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "your-name@your-domain.com" +msgstr "ihr-name@ihre-domain.com" + +#: gofax/faxaccount/class_gofaxAccount.inc:695 +msgid "Printing is requested without a target printer!" +msgstr "Ausdruck wurden ohne Zieldrucker angefordert!" + +#: gofax/faxaccount/class_gofaxAccount.inc:864 +msgid "Fax account settings" +msgstr "Fax-Konto-Einstellungen" + +#: gofax/faxaccount/class_gofaxAccount.inc:876 +msgid "Alternate fax number" +msgstr "Alternative Fax-Nummer" + +#: gofax/faxaccount/class_gofaxAccount.inc:877 +msgid "Enable/Disable fax" +msgstr "FAX aktivieren/deaktivieren" + +#: gofax/faxaccount/lists.tpl:5 +msgid "Blocked numbers/lists" +msgstr "Gesperrte Nummern/Listen" + +#: gofax/faxaccount/lists.tpl:17 +msgid "List of predefined blocklists" +msgstr "Liste von vordefinierten Sperrlisten" + +#: gofax/faxaccount/lists.tpl:25 +msgid "Add the list to the blocklists" +msgstr "Liste zu den Sperrlisten hinzufügen" + +#: admin/systems/services/gofax/class_goFaxServer.inc:30 +msgid "FAX database" +msgstr "Fax-Datenbank" + +#: admin/systems/services/gofax/class_goFaxServer.inc:59 +msgid "FAX database configuration" +msgstr "Konfiguration der Fax-Datenbank" + +#: admin/systems/services/gofax/class_goFaxServer.inc:71 +#: admin/systems/services/gofax/class_goFaxServer.inc:98 +#: admin/systems/services/gofax/goFaxServer.tpl:12 +msgid "Password" +msgstr "Passwort" + +#: admin/systems/services/gofax/class_goFaxServer.inc:88 +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Fax database" +msgstr "Fax-Datenbank" + +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/gofax/class_goFaxServer.inc:97 +msgid "Login name" +msgstr "Anmeldename" + +#: admin/systems/services/gofax/goFaxServer.tpl:1 +msgid "FAX database information" +msgstr "Informationen der Fax-Datenbank" + +#: admin/systems/services/gofax/goFaxServer.tpl:4 +msgid "FAX DB user" +msgstr "Fax-DB Benutzer" + +#~ msgid "Copy" +#~ msgstr "Kopieren" + +#~ msgid "Cut" +#~ msgstr "Ausschneiden" + +#~ msgid "Paste" +#~ msgstr "Einfügen" + +#~ msgid "cut" +#~ msgstr "Ausschneiden" + +#~ msgid "Cut this entry" +#~ msgstr "Diesen Eintrag ausschneiden" + +#~ msgid "copy" +#~ msgstr "Kopieren" + +#~ msgid "Copy this entry" +#~ msgstr "Diesen Eintrag kopieren" + +#, fuzzy +#~ msgid "Faxi number" +#~ msgstr "Faxnummer" diff --git a/trunk/gosa-plugins/gofax/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofax/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..2e647c995 --- /dev/null +++ b/trunk/gosa-plugins/gofax/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,763 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: html/getfax.php:56 +#, fuzzy +msgid "Could not connect to database server!" +msgstr "" +"La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#: html/getfax.php:58 +#, fuzzy +msgid "Could not select database!" +msgstr "" +"La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#: html/getfax.php:63 html/getfax.php:71 +#, fuzzy +msgid "Database query failed!" +msgstr "La consulta LDAP ha fallado" + +#: gofax/faxreports/detail.tpl:5 +msgid "FAX preview - please wait" +msgstr "" + +#: gofax/faxreports/detail.tpl:8 +msgid "Click on fax to download" +msgstr "" + +#: gofax/faxreports/detail.tpl:17 +msgid "FAX ID" +msgstr "" + +#: gofax/faxreports/detail.tpl:21 gofax/faxreports/contents.tpl:30 +#: admin/systems/services/gofax/class_goFaxServer.inc:68 +msgid "User" +msgstr "Usuario" + +#: gofax/faxreports/detail.tpl:25 +msgid "Date / Time" +msgstr "" + +#: gofax/faxreports/detail.tpl:29 gofax/faxreports/class_faxreport.inc:503 +msgid "Sender MSN" +msgstr "" + +#: gofax/faxreports/detail.tpl:33 gofax/faxreports/class_faxreport.inc:502 +msgid "Sender ID" +msgstr "" + +#: gofax/faxreports/detail.tpl:37 gofax/faxreports/class_faxreport.inc:505 +msgid "Receiver MSN" +msgstr "" + +#: gofax/faxreports/detail.tpl:41 gofax/faxreports/class_faxreport.inc:504 +msgid "Receiver ID" +msgstr "" + +#: gofax/faxreports/detail.tpl:45 gofax/faxreports/contents.tpl:32 +#: gofax/faxreports/class_faxreport.inc:501 +msgid "Status" +msgstr "Estado" + +#: gofax/faxreports/detail.tpl:49 +msgid "Status message" +msgstr "" + +#: gofax/faxreports/detail.tpl:53 gofax/faxreports/class_faxreport.inc:508 +msgid "Transfer time" +msgstr "" + +#: gofax/faxreports/detail.tpl:57 gofax/faxreports/contents.tpl:35 +msgid "# pages" +msgstr "" + +#: gofax/faxreports/main.inc:19 +msgid "FAX reports" +msgstr "" + +#: gofax/faxreports/contents.tpl:2 +msgid "Filter" +msgstr "" + +#: gofax/faxreports/contents.tpl:6 +msgid "Search for" +msgstr "" + +#: gofax/faxreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "" + +#: gofax/faxreports/contents.tpl:8 gofax/faxreports/contents.tpl:16 +msgid "in" +msgstr "" + +#: gofax/faxreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "" + +#: gofax/faxreports/contents.tpl:12 +msgid "during" +msgstr "" + +#: gofax/faxreports/contents.tpl:21 +msgid "Search" +msgstr "Buscar" + +#: gofax/faxreports/contents.tpl:31 gofax/faxreports/class_faxreport.inc:500 +msgid "Date" +msgstr "" + +#: gofax/faxreports/contents.tpl:33 +msgid "Sender" +msgstr "" + +#: gofax/faxreports/contents.tpl:34 +msgid "Receiver" +msgstr "" + +#: gofax/faxreports/contents.tpl:50 +msgid "Search returned no results..." +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:6 +msgid "FAX Reports" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:7 +#: gofax/blocklists/class_blocklistManagement.inc:6 +#: gofax/blocklists/class_blocklistGeneric.inc:10 +#: gofax/faxaccount/class_gofaxAccount.inc:7 +msgid "This does something" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:116 +#: gofax/faxreports/class_faxreport.inc:126 +#: gofax/faxreports/class_faxreport.inc:130 +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Error" +msgstr "Error" + +#: gofax/faxreports/class_faxreport.inc:116 +msgid "No fax server found!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy +msgid "Configuration error" +msgstr "Se puede escribir en la configuración" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Eliminar extensión de impresión" + +#: gofax/faxreports/class_faxreport.inc:126 +#, php-format +msgid "Cannot connect to %s database!" +msgstr "¡No se puede conectar a la base de datos %s!" + +#: gofax/faxreports/class_faxreport.inc:130 +#, fuzzy, php-format +msgid "Cannot select %s database!" +msgstr "" +"La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#, fuzzy, php-format +msgid "Cannot query %s database!" +msgstr "" +"La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#: gofax/blocklists/class_blocklistManagement.inc:269 +#: gofax/blocklists/class_blocklistManagement.inc:326 +#, fuzzy +msgid "Permission error" +msgstr "Permisos" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +msgid "You have no permission to view this fax id!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:208 +#: gofax/faxreports/class_faxreport.inc:329 +msgid "Y-M-D" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:323 +msgid "Insufficient permissions to view this attribute" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:323 +msgid "Insufficient permissions" +msgstr "Permisos insuficientes" + +#: gofax/faxreports/class_faxreport.inc:487 +#: gofax/faxreports/class_faxreport.inc:488 +msgid "Fax report" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:488 +msgid "All entries are readonly" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:493 +msgid "Fax reports" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:498 +msgid "Detailed view" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:499 +msgid "Fax ID" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:500 +msgid "Time" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:506 +msgid "Number of pages" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:507 +msgid "Status Message" +msgstr "" + +#: gofax/blocklists/remove.tpl:2 +msgid "Warning" +msgstr "Aviso" + +#: gofax/blocklists/remove.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: gofax/blocklists/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Entonces, si esta seguro, presione Eliminar para continuar o " +"Cancelar para Abortar." + +#: gofax/blocklists/generic.tpl:1 gofax/faxaccount/generic.tpl:6 +#: gofax/faxaccount/paste_generic.tpl:4 +msgid "Generic" +msgstr "Genérico" + +#: gofax/blocklists/generic.tpl:8 gofax/blocklists/paste_generic.tpl:3 +msgid "List name" +msgstr "" + +#: gofax/blocklists/generic.tpl:12 gofax/blocklists/paste_generic.tpl:5 +msgid "Name of blocklist" +msgstr "" + +#: gofax/blocklists/generic.tpl:17 +#: gofax/blocklists/class_divListBlocklists.inc:86 +#: gofax/blocklists/class_blocklistGeneric.inc:387 +msgid "Base" +msgstr "Base" + +#: gofax/blocklists/generic.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Elija el subárbol donde colocar el grupo" + +#: gofax/blocklists/generic.tpl:26 +msgid "Select a base" +msgstr "Seleccione una base" + +#: gofax/blocklists/generic.tpl:40 +msgid "Type" +msgstr "Tipo" + +#: gofax/blocklists/generic.tpl:43 +msgid "Select wether to filter incoming or outgoing calls" +msgstr "" + +#: gofax/blocklists/generic.tpl:51 +#: gofax/blocklists/class_blocklistGeneric.inc:386 +msgid "Description" +msgstr "Descripción" + +#: gofax/blocklists/generic.tpl:54 +msgid "Descriptive text for this blocklist" +msgstr "" + +#: gofax/blocklists/generic.tpl:68 +msgid "Blocked numbers" +msgstr "" + +#: gofax/blocklists/generic.tpl:90 +msgid "Information" +msgstr "Información" + +#: gofax/blocklists/generic.tpl:92 +msgid "Numbers can also contain wild cards." +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:31 +#: gofax/blocklists/class_divListBlocklists.inc:32 +msgid "List of blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:50 +msgid "Select all" +msgstr "Seleccione todos" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +#: gofax/blocklists/class_blocklistGeneric.inc:219 +#: gofax/blocklists/class_blocklistGeneric.inc:222 +#: gofax/blocklists/class_blocklistGeneric.inc:229 +#: gofax/blocklists/class_blocklistGeneric.inc:385 +msgid "Name" +msgstr "Nombre" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +msgid "Department" +msgstr "Departamento" + +#: gofax/blocklists/class_divListBlocklists.inc:57 +#: gofax/blocklists/class_divListBlocklists.inc:91 +msgid "Actions" +msgstr "Acciones" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +#: gofax/faxaccount/class_gofaxAccount.inc:881 +msgid "Send blocklist" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +msgid "Show send blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +#: gofax/faxaccount/class_gofaxAccount.inc:880 +msgid "Receive blocklist" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +msgid "Show receive blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:67 +msgid "Regular expression for matching list names" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit department" +msgstr "Enviar departamento" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit" +msgstr "Enviar" + +#: gofax/blocklists/class_divListBlocklists.inc:96 +msgid "Create" +msgstr "Crear" + +#: gofax/blocklists/class_divListBlocklists.inc:98 +#: gofax/blocklists/class_blocklistGeneric.inc:388 +msgid "Blocklist" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:104 +msgid "Remove" +msgstr "Eliminar" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "edit" +msgstr "editar" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "Edit user" +msgstr "Editar usuario" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "delete" +msgstr "eliminar" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "Delete user" +msgstr "Eliminar usuario" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Eliminar departamentos seleccionados" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +msgid "blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy +msgid "departments" +msgstr "Departamento" + +#: gofax/blocklists/class_blocklistManagement.inc:5 +msgid "FAX blocklists" +msgstr "" + +#: gofax/blocklists/class_blocklistManagement.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Permisos" + +#: gofax/blocklists/class_blocklistManagement.inc:246 +#: gofax/blocklists/class_blocklistManagement.inc:307 +msgid "blocklist" +msgstr "" + +#: gofax/blocklists/main.inc:35 gofax/blocklists/main.inc:37 +msgid "Blocklist management" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:9 +#: gofax/blocklists/class_blocklistGeneric.inc:376 +#: gofax/blocklists/class_blocklistGeneric.inc:381 +#: gofax/blocklists/class_blocklistGeneric.inc:382 +msgid "Fax blocklists" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +#, fuzzy +msgid "Phone number" +msgstr "Número de Fax" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "send" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "receive" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:205 +#: gofax/blocklists/class_blocklistGeneric.inc:286 +#: gofax/faxaccount/class_gofaxAccount.inc:659 +#: gofax/faxaccount/class_gofaxAccount.inc:788 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: gofax/blocklists/class_blocklistGeneric.inc:375 +#: gofax/faxaccount/generic.tpl:10 gofax/faxaccount/paste_generic.tpl:8 +#: gofax/faxaccount/class_gofaxAccount.inc:863 +msgid "Fax" +msgstr "Fax" + +#: gofax/blocklists/class_blocklistGeneric.inc:389 +msgid "Blocklist type" +msgstr "" + +#: gofax/faxaccount/locals.tpl:6 +msgid "Select numbers to add" +msgstr "" + +#: gofax/faxaccount/locals.tpl:19 +msgid "Filters" +msgstr "Filtros" + +#: gofax/faxaccount/locals.tpl:28 +msgid "Display numbers of department" +msgstr "" + +#: gofax/faxaccount/locals.tpl:29 +msgid "Choose the department the search will be based on" +msgstr "Escoja el departamento base de la búsqueda" + +#: gofax/faxaccount/locals.tpl:38 +msgid "Display numbers matching" +msgstr "" + +#: gofax/faxaccount/locals.tpl:41 +msgid "Regular expression for matching numbers" +msgstr "" + +#: gofax/faxaccount/locals.tpl:47 +msgid "Display numbers of user" +msgstr "" + +#: gofax/faxaccount/locals.tpl:50 +msgid "User name of which numbers are shown" +msgstr "" + +#: gofax/faxaccount/generic.tpl:13 +msgid "Multiple edit" +msgstr "Edición multiple" + +#: gofax/faxaccount/generic.tpl:17 gofax/faxaccount/paste_generic.tpl:13 +msgid "Fax number for GOfax to trigger on" +msgstr "" + +#: gofax/faxaccount/generic.tpl:24 gofax/faxaccount/class_gofaxAccount.inc:874 +msgid "Language" +msgstr "" + +#: gofax/faxaccount/generic.tpl:29 +msgid "Specify the GOfax communication language for fax to mail gateway" +msgstr "" + +#: gofax/faxaccount/generic.tpl:37 gofax/faxaccount/class_gofaxAccount.inc:875 +msgid "Delivery format" +msgstr "" + +#: gofax/faxaccount/generic.tpl:41 +msgid "Specify delivery format for fax to mail gateway" +msgstr "" + +#: gofax/faxaccount/generic.tpl:54 +msgid "Delivery methods" +msgstr "" + +#: gofax/faxaccount/generic.tpl:59 +msgid "Temporary disable fax usage" +msgstr "" + +#: gofax/faxaccount/generic.tpl:65 +msgid "Deliver fax as mail to" +msgstr "" + +#: gofax/faxaccount/generic.tpl:73 gofax/faxaccount/class_gofaxAccount.inc:878 +msgid "Deliver fax as mail" +msgstr "" + +#: gofax/faxaccount/generic.tpl:80 gofax/faxaccount/class_gofaxAccount.inc:879 +msgid "Deliver fax to printer" +msgstr "" + +#: gofax/faxaccount/generic.tpl:99 +msgid "Alternate fax numbers" +msgstr "" + +#: gofax/faxaccount/generic.tpl:114 +msgid "Add local" +msgstr "" + +#: gofax/faxaccount/generic.tpl:122 +msgid "Blocklists" +msgstr "" + +#: gofax/faxaccount/generic.tpl:125 +msgid "Blocklists for incoming fax" +msgstr "" + +#: gofax/faxaccount/generic.tpl:128 gofax/faxaccount/generic.tpl:136 +msgid "Edit" +msgstr "Editar" + +#: gofax/faxaccount/generic.tpl:133 +msgid "Blocklists for outgoing fax" +msgstr "" + +#: gofax/faxaccount/paste_generic.tpl:18 +msgid "Alternate fax numbers will not be copied" +msgstr "" + +#: gofax/faxaccount/main.inc:106 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Pulse en el botón - Editar - para cambiar la información en esta ventana" + +#: gofax/faxaccount/main.inc:115 +msgid "FAX settings" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:6 +msgid "FAX" +msgstr "FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:165 +#: gofax/faxaccount/class_gofaxAccount.inc:175 +#: gofax/faxaccount/class_gofaxAccount.inc:178 +msgid "GOfax" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:174 +msgid "Remove fax account" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:177 +msgid "Create fax account" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:453 +#: gofax/faxaccount/class_gofaxAccount.inc:535 +msgid "back" +msgstr "atrás" + +#: gofax/faxaccount/class_gofaxAccount.inc:675 +#: gofax/faxaccount/class_gofaxAccount.inc:679 +#: gofax/faxaccount/class_gofaxAccount.inc:873 +msgid "Fax number" +msgstr "Número de Fax" + +#: gofax/faxaccount/class_gofaxAccount.inc:687 +msgid "Mail delivery is requested without target address!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "Mail address" +msgstr "Dirección correo electrónico" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "your-name@your-domain.com" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:695 +msgid "Printing is requested without a target printer!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:864 +msgid "Fax account settings" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:876 +msgid "Alternate fax number" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:877 +msgid "Enable/Disable fax" +msgstr "" + +#: gofax/faxaccount/lists.tpl:5 +msgid "Blocked numbers/lists" +msgstr "" + +#: gofax/faxaccount/lists.tpl:17 +msgid "List of predefined blocklists" +msgstr "" + +#: gofax/faxaccount/lists.tpl:25 +msgid "Add the list to the blocklists" +msgstr "" + +#: admin/systems/services/gofax/class_goFaxServer.inc:30 +msgid "FAX database" +msgstr "Base de datos de FAX" + +#: admin/systems/services/gofax/class_goFaxServer.inc:59 +msgid "FAX database configuration" +msgstr "Configuración de la base de datos de FAX" + +#: admin/systems/services/gofax/class_goFaxServer.inc:71 +#: admin/systems/services/gofax/class_goFaxServer.inc:98 +#: admin/systems/services/gofax/goFaxServer.tpl:12 +msgid "Password" +msgstr "Contraseña" + +#: admin/systems/services/gofax/class_goFaxServer.inc:88 +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Fax database" +msgstr "Base de datos de Fax" + +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/gofax/class_goFaxServer.inc:97 +msgid "Login name" +msgstr "Nombre de acceso" + +#: admin/systems/services/gofax/goFaxServer.tpl:1 +msgid "FAX database information" +msgstr "" + +#: admin/systems/services/gofax/goFaxServer.tpl:4 +msgid "FAX DB user" +msgstr "" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "copiar" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "mover" + +#~ msgid "cut" +#~ msgstr "mover" + +#~ msgid "Cut this entry" +#~ msgstr "Mover esta entrada" + +#~ msgid "copy" +#~ msgstr "copiar" + +#~ msgid "Copy this entry" +#~ msgstr "Copiar esta entrada" + +#, fuzzy +#~ msgid "Faxi number" +#~ msgstr "Número de Fax" + +#~ msgid "Select to search within subtrees" +#~ msgstr "Seleccione para buscar dentro de los subárboles" + +#~ msgid "Search in subtrees" +#~ msgstr "Buscar en subárboles" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "The attribute user is empty or contains invalid characters." +#~ msgstr "El atributo usuario está vacío o tiene caracteres no validos" + +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "El atributo contraseña está vacío o tiene caracteres no validos" + +#~ msgid "Back" +#~ msgstr "Atrás" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Delete" +#~ msgstr "Eliminar" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Ok" +#~ msgstr "Ok" + +#, fuzzy +#~ msgid "Name contains invalid characters!" +#~ msgstr "El atributo usuario está vacío o tiene caracteres no validos" + +#~ msgid "Required field 'Name' is not set." +#~ msgstr "No ha introducido el campo obligatorio 'Nombre'." diff --git a/trunk/gosa-plugins/gofax/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofax/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..17c8fb800 --- /dev/null +++ b/trunk/gosa-plugins/gofax/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,694 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2008-07-23 23:10+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: html/getfax.php:56 +msgid "Could not connect to database server!" +msgstr "Impossible de se connecter à la base de données !" + +#: html/getfax.php:58 +msgid "Could not select database!" +msgstr "Impossible de sélectionner la base de données !" + +#: html/getfax.php:63 html/getfax.php:71 +msgid "Database query failed!" +msgstr "La requête LDAP à échoué !" + +#: gofax/faxreports/detail.tpl:5 +msgid "FAX preview - please wait" +msgstr "prévisualisation du FAX - Veuillez attendre" + +#: gofax/faxreports/detail.tpl:8 +msgid "Click on fax to download" +msgstr "Cliquez sur le fax pour le télécharger" + +#: gofax/faxreports/detail.tpl:17 +msgid "FAX ID" +msgstr "FAX ID" + +#: gofax/faxreports/detail.tpl:21 gofax/faxreports/contents.tpl:30 +#: admin/systems/services/gofax/class_goFaxServer.inc:68 +msgid "User" +msgstr "Utilisateur" + +#: gofax/faxreports/detail.tpl:25 +msgid "Date / Time" +msgstr "Date / Heure" + +#: gofax/faxreports/detail.tpl:29 gofax/faxreports/class_faxreport.inc:503 +msgid "Sender MSN" +msgstr "MSN de l'expéditeur" + +#: gofax/faxreports/detail.tpl:33 gofax/faxreports/class_faxreport.inc:502 +msgid "Sender ID" +msgstr "ID de l'expéditeur" + +#: gofax/faxreports/detail.tpl:37 gofax/faxreports/class_faxreport.inc:505 +msgid "Receiver MSN" +msgstr "MSN du correspondant" + +#: gofax/faxreports/detail.tpl:41 gofax/faxreports/class_faxreport.inc:504 +msgid "Receiver ID" +msgstr "ID du correspondant" + +#: gofax/faxreports/detail.tpl:45 gofax/faxreports/contents.tpl:32 +#: gofax/faxreports/class_faxreport.inc:501 +msgid "Status" +msgstr "Statut" + +#: gofax/faxreports/detail.tpl:49 +msgid "Status message" +msgstr "Statut" + +#: gofax/faxreports/detail.tpl:53 gofax/faxreports/class_faxreport.inc:508 +msgid "Transfer time" +msgstr "Temps de transfert" + +#: gofax/faxreports/detail.tpl:57 gofax/faxreports/contents.tpl:35 +msgid "# pages" +msgstr "# pages" + +#: gofax/faxreports/main.inc:19 +msgid "FAX reports" +msgstr "Rapports des Fax" + +#: gofax/faxreports/contents.tpl:2 +msgid "Filter" +msgstr "Filtre" + +#: gofax/faxreports/contents.tpl:6 +msgid "Search for" +msgstr "Recherche de" + +#: gofax/faxreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Entrez le nom recherché" + +#: gofax/faxreports/contents.tpl:8 gofax/faxreports/contents.tpl:16 +msgid "in" +msgstr "dans" + +#: gofax/faxreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Sélectionnez la branche de l'annuaire où sera effectuée la recherche" + +#: gofax/faxreports/contents.tpl:12 +msgid "during" +msgstr "pendant" + +#: gofax/faxreports/contents.tpl:21 +msgid "Search" +msgstr "Recherche" + +#: gofax/faxreports/contents.tpl:31 gofax/faxreports/class_faxreport.inc:500 +msgid "Date" +msgstr "Date" + +#: gofax/faxreports/contents.tpl:33 +msgid "Sender" +msgstr "Expéditeur" + +#: gofax/faxreports/contents.tpl:34 +msgid "Receiver" +msgstr "Correspondant" + +#: gofax/faxreports/contents.tpl:50 +msgid "Search returned no results..." +msgstr "La recherche n'a renvoyé aucun résultat..." + +#: gofax/faxreports/class_faxreport.inc:6 +msgid "FAX Reports" +msgstr "Rapports des Fax" + +#: gofax/faxreports/class_faxreport.inc:7 +#: gofax/blocklists/class_blocklistManagement.inc:6 +#: gofax/blocklists/class_blocklistGeneric.inc:10 +#: gofax/faxaccount/class_gofaxAccount.inc:7 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: gofax/faxreports/class_faxreport.inc:116 +#: gofax/faxreports/class_faxreport.inc:126 +#: gofax/faxreports/class_faxreport.inc:130 +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Error" +msgstr "Erreur" + +#: gofax/faxreports/class_faxreport.inc:116 +msgid "No fax server found!" +msgstr "Pas de serveur de FAX !" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +msgid "Configuration error" +msgstr "Erreur de configuration" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, php-format +msgid "Missing %s PHP extension!" +msgstr "Extension PHP %s manquante !" + +#: gofax/faxreports/class_faxreport.inc:126 +#, php-format +msgid "Cannot connect to %s database!" +msgstr "Impossible de se connecter à la base de données %s !" + +#: gofax/faxreports/class_faxreport.inc:130 +#, php-format +msgid "Cannot select %s database!" +msgstr "Impossible de sélectionner la base de données %s !" + +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#, php-format +msgid "Cannot query %s database!" +msgstr "Impossible d'interroger la base de données %s !" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#: gofax/blocklists/class_blocklistManagement.inc:269 +#: gofax/blocklists/class_blocklistManagement.inc:326 +msgid "Permission error" +msgstr "Erreur de permissions" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +msgid "You have no permission to view this fax id!" +msgstr "Vous n'avez pas l'autorisation de voir cet identifiant de fax !" + +#: gofax/faxreports/class_faxreport.inc:208 +#: gofax/faxreports/class_faxreport.inc:329 +msgid "Y-M-D" +msgstr "A-M-J" + +#: gofax/faxreports/class_faxreport.inc:323 +msgid "Insufficient permissions to view this attribute" +msgstr "Permissions insuffisantes, vous ne pouvez pas voir l'attribut" + +#: gofax/faxreports/class_faxreport.inc:323 +msgid "Insufficient permissions" +msgstr "Permission insuffisantes" + +#: gofax/faxreports/class_faxreport.inc:487 +#: gofax/faxreports/class_faxreport.inc:488 +msgid "Fax report" +msgstr "Rapports des Fax" + +#: gofax/faxreports/class_faxreport.inc:488 +msgid "All entries are readonly" +msgstr "Tous les champs sont en lecture seule" + +#: gofax/faxreports/class_faxreport.inc:493 +msgid "Fax reports" +msgstr "Rapports des Fax" + +#: gofax/faxreports/class_faxreport.inc:498 +msgid "Detailed view" +msgstr "Détails" + +#: gofax/faxreports/class_faxreport.inc:499 +msgid "Fax ID" +msgstr "ID Fax" + +#: gofax/faxreports/class_faxreport.inc:500 +msgid "Time" +msgstr "Temps" + +#: gofax/faxreports/class_faxreport.inc:506 +msgid "Number of pages" +msgstr "Nombre de pages" + +#: gofax/faxreports/class_faxreport.inc:507 +msgid "Status Message" +msgstr "Rapport d'envoi" + +#: gofax/blocklists/remove.tpl:2 +msgid "Warning" +msgstr "Avertissement" + +#: gofax/blocklists/remove.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Veuillez vous assurez que vous voulez effectuer cette opération. Toutes les " +"données seront perdues étant donné qu'il est impossible pour GOsa de " +"récupérer vos données." + +#: gofax/blocklists/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"D'accord - si vous êtes sur - cliquez sur 'Supprimer' pour continuer ou sur " +"'Annuler' pour abandonner." + +#: gofax/blocklists/generic.tpl:1 gofax/faxaccount/generic.tpl:6 +#: gofax/faxaccount/paste_generic.tpl:4 +msgid "Generic" +msgstr "Informations" + +#: gofax/blocklists/generic.tpl:8 gofax/blocklists/paste_generic.tpl:3 +msgid "List name" +msgstr "Liste des noms" + +#: gofax/blocklists/generic.tpl:12 gofax/blocklists/paste_generic.tpl:5 +msgid "Name of blocklist" +msgstr "Nom de la liste rouge" + +#: gofax/blocklists/generic.tpl:17 +#: gofax/blocklists/class_divListBlocklists.inc:86 +#: gofax/blocklists/class_blocklistGeneric.inc:387 +msgid "Base" +msgstr "Base" + +#: gofax/blocklists/generic.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Sélectionnez la branche où sera placée le groupe" + +#: gofax/blocklists/generic.tpl:26 +msgid "Select a base" +msgstr "Sélectionnez une base" + +#: gofax/blocklists/generic.tpl:40 +msgid "Type" +msgstr "Type" + +#: gofax/blocklists/generic.tpl:43 +msgid "Select wether to filter incoming or outgoing calls" +msgstr "" +"Veuillez sélectionner si il faut filtrer sur les appels entrants ou sortants" + +#: gofax/blocklists/generic.tpl:51 +#: gofax/blocklists/class_blocklistGeneric.inc:386 +msgid "Description" +msgstr "Description" + +#: gofax/blocklists/generic.tpl:54 +msgid "Descriptive text for this blocklist" +msgstr "Texte descriptif pour cette liste rouge" + +#: gofax/blocklists/generic.tpl:68 +msgid "Blocked numbers" +msgstr "Numéros bloqués" + +#: gofax/blocklists/generic.tpl:90 +msgid "Information" +msgstr "Information" + +#: gofax/blocklists/generic.tpl:92 +msgid "Numbers can also contain wild cards." +msgstr "Les nombres peuvent aussi contenir des jokers." + +#: gofax/blocklists/class_divListBlocklists.inc:31 +#: gofax/blocklists/class_divListBlocklists.inc:32 +msgid "List of blocklists" +msgstr "Liste des listes rouges" + +#: gofax/blocklists/class_divListBlocklists.inc:50 +msgid "Select all" +msgstr "Sélectionner tout" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +#: gofax/blocklists/class_blocklistGeneric.inc:219 +#: gofax/blocklists/class_blocklistGeneric.inc:222 +#: gofax/blocklists/class_blocklistGeneric.inc:229 +#: gofax/blocklists/class_blocklistGeneric.inc:385 +msgid "Name" +msgstr "Nom" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +msgid "Department" +msgstr "Département" + +#: gofax/blocklists/class_divListBlocklists.inc:57 +#: gofax/blocklists/class_divListBlocklists.inc:91 +msgid "Actions" +msgstr "Actions" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +#: gofax/faxaccount/class_gofaxAccount.inc:881 +msgid "Send blocklist" +msgstr "Afficher les listes rouges en envoi" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +msgid "Show send blocklists" +msgstr "Afficher les numéros d'appels de la liste rouge" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +#: gofax/faxaccount/class_gofaxAccount.inc:880 +msgid "Receive blocklist" +msgstr "Afficher les listes rouges en réception" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +msgid "Show receive blocklists" +msgstr "Afficher les listes rouges de correspondants" + +#: gofax/blocklists/class_divListBlocklists.inc:67 +msgid "Regular expression for matching list names" +msgstr "Expression régulière pour trouver des listes correspondantes" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit department" +msgstr "Soumettre le département" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit" +msgstr "Soumettre" + +#: gofax/blocklists/class_divListBlocklists.inc:96 +msgid "Create" +msgstr "Créer" + +#: gofax/blocklists/class_divListBlocklists.inc:98 +#: gofax/blocklists/class_blocklistGeneric.inc:388 +msgid "Blocklist" +msgstr "Listes Rouges" + +#: gofax/blocklists/class_divListBlocklists.inc:104 +msgid "Remove" +msgstr "Supprimer" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "edit" +msgstr "éditer" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "Edit user" +msgstr "Editer un utilisateur" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "delete" +msgstr "supprimer" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "Delete user" +msgstr "Supprimer un utilisateur" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, php-format +msgid "Number of listed '%s'" +msgstr "Nombre de '%s'" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +msgid "blocklists" +msgstr "Listes Rouges" + +#: gofax/blocklists/class_divListBlocklists.inc:196 +msgid "departments" +msgstr "département" + +#: gofax/blocklists/class_blocklistManagement.inc:5 +msgid "FAX blocklists" +msgstr "Liste Rouge des Fax" + +#: gofax/blocklists/class_blocklistManagement.inc:230 +msgid "Permission" +msgstr "Permissions" + +#: gofax/blocklists/class_blocklistManagement.inc:246 +#: gofax/blocklists/class_blocklistManagement.inc:307 +msgid "blocklist" +msgstr "Listes Rouges" + +#: gofax/blocklists/main.inc:35 gofax/blocklists/main.inc:37 +msgid "Blocklist management" +msgstr "Configuration des listes rouges" + +#: gofax/blocklists/class_blocklistGeneric.inc:9 +#: gofax/blocklists/class_blocklistGeneric.inc:376 +#: gofax/blocklists/class_blocklistGeneric.inc:381 +#: gofax/blocklists/class_blocklistGeneric.inc:382 +msgid "Fax blocklists" +msgstr "Liste Rouge des Fax" + +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "send" +msgstr "envoyer" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "receive" +msgstr "recevoir" + +#: gofax/blocklists/class_blocklistGeneric.inc:205 +#: gofax/blocklists/class_blocklistGeneric.inc:286 +#: gofax/faxaccount/class_gofaxAccount.inc:659 +#: gofax/faxaccount/class_gofaxAccount.inc:788 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: gofax/blocklists/class_blocklistGeneric.inc:375 +#: gofax/faxaccount/generic.tpl:10 gofax/faxaccount/paste_generic.tpl:8 +#: gofax/faxaccount/class_gofaxAccount.inc:863 +msgid "Fax" +msgstr "Fax" + +#: gofax/blocklists/class_blocklistGeneric.inc:389 +msgid "Blocklist type" +msgstr "Type de liste rouge" + +#: gofax/faxaccount/locals.tpl:6 +msgid "Select numbers to add" +msgstr "Sélectionnez les numéros à ajouter" + +#: gofax/faxaccount/locals.tpl:19 +msgid "Filters" +msgstr "Filtres" + +#: gofax/faxaccount/locals.tpl:28 +msgid "Display numbers of department" +msgstr "Afficher les numéro du département" + +#: gofax/faxaccount/locals.tpl:29 +msgid "Choose the department the search will be based on" +msgstr "Sélectionner le département où sera effectuée la recherche" + +#: gofax/faxaccount/locals.tpl:38 +msgid "Display numbers matching" +msgstr "Afficher les numéros correspondants" + +#: gofax/faxaccount/locals.tpl:41 +msgid "Regular expression for matching numbers" +msgstr "Expression régulière pour trouver les numéros correspondants" + +#: gofax/faxaccount/locals.tpl:47 +msgid "Display numbers of user" +msgstr "Afficher les numéros des utilisateurs" + +#: gofax/faxaccount/locals.tpl:50 +msgid "User name of which numbers are shown" +msgstr "Utilisateur dont les numéros sont affichés" + +#: gofax/faxaccount/generic.tpl:13 +msgid "Multiple edit" +msgstr "Edition multiple" + +#: gofax/faxaccount/generic.tpl:17 gofax/faxaccount/paste_generic.tpl:13 +msgid "Fax number for GOfax to trigger on" +msgstr "Numéro de fax pour lesquels GOfax s'activera" + +#: gofax/faxaccount/generic.tpl:24 gofax/faxaccount/class_gofaxAccount.inc:874 +msgid "Language" +msgstr "Langue" + +#: gofax/faxaccount/generic.tpl:29 +msgid "Specify the GOfax communication language for fax to mail gateway" +msgstr "" +"Indiquez le le protocole de communication GOfax pour les fax vers la " +"passerelle de messagerie" + +#: gofax/faxaccount/generic.tpl:37 gofax/faxaccount/class_gofaxAccount.inc:875 +msgid "Delivery format" +msgstr "Format de distribution" + +#: gofax/faxaccount/generic.tpl:41 +msgid "Specify delivery format for fax to mail gateway" +msgstr "" +"Spécifiez le format de distribution pour les fax vers la passerelle de " +"messagerie" + +#: gofax/faxaccount/generic.tpl:54 +msgid "Delivery methods" +msgstr "Méthodes de distribution" + +#: gofax/faxaccount/generic.tpl:59 +msgid "Temporary disable fax usage" +msgstr "Désactiver temporairement l'utilisation du fax" + +#: gofax/faxaccount/generic.tpl:65 +msgid "Deliver fax as mail to" +msgstr "Délivrer les fax comme des messages à" + +#: gofax/faxaccount/generic.tpl:73 gofax/faxaccount/class_gofaxAccount.inc:878 +msgid "Deliver fax as mail" +msgstr "Délivrer les fax comme des messages" + +#: gofax/faxaccount/generic.tpl:80 gofax/faxaccount/class_gofaxAccount.inc:879 +msgid "Deliver fax to printer" +msgstr "Imprimer directement les fax" + +#: gofax/faxaccount/generic.tpl:99 +msgid "Alternate fax numbers" +msgstr "Numéros de fax alternatif" + +#: gofax/faxaccount/generic.tpl:114 +msgid "Add local" +msgstr "Ajouter en local" + +#: gofax/faxaccount/generic.tpl:122 +msgid "Blocklists" +msgstr "Listes Rouges" + +#: gofax/faxaccount/generic.tpl:125 +msgid "Blocklists for incoming fax" +msgstr "Listes rouges pour les fax entrant" + +#: gofax/faxaccount/generic.tpl:128 gofax/faxaccount/generic.tpl:136 +msgid "Edit" +msgstr "Editer" + +#: gofax/faxaccount/generic.tpl:133 +msgid "Blocklists for outgoing fax" +msgstr "Listes rouges pour les fax sortant" + +#: gofax/faxaccount/paste_generic.tpl:18 +msgid "Alternate fax numbers will not be copied" +msgstr "Les numéros de fax alternatif ne seront pas copiés" + +#: gofax/faxaccount/main.inc:106 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Cliquez sur le bouton 'Editer' ci-dessous pour changer les informations dans " +"cette boite de dialogue" + +#: gofax/faxaccount/main.inc:115 +msgid "FAX settings" +msgstr "Configuration du FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:6 +msgid "FAX" +msgstr "FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:165 +#: gofax/faxaccount/class_gofaxAccount.inc:175 +#: gofax/faxaccount/class_gofaxAccount.inc:178 +msgid "GOfax" +msgstr "GOfax" + +#: gofax/faxaccount/class_gofaxAccount.inc:174 +msgid "Remove fax account" +msgstr "Supprimer le compte FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:177 +msgid "Create fax account" +msgstr "Créer un compte FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:453 +#: gofax/faxaccount/class_gofaxAccount.inc:535 +msgid "back" +msgstr "retour" + +#: gofax/faxaccount/class_gofaxAccount.inc:675 +#: gofax/faxaccount/class_gofaxAccount.inc:679 +#: gofax/faxaccount/class_gofaxAccount.inc:873 +msgid "Fax number" +msgstr "Numéro de fax" + +#: gofax/faxaccount/class_gofaxAccount.inc:687 +msgid "Mail delivery is requested without target address!" +msgstr "" +"L'envoi d'un message à été demandé alors que l'adresse du destinataire n'est " +"pas défini !" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "Mail address" +msgstr "Adresse de messagerie" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "your-name@your-domain.com" +msgstr "votre-nom@votre-domaine.com" + +#: gofax/faxaccount/class_gofaxAccount.inc:695 +msgid "Printing is requested without a target printer!" +msgstr "L'impression à été demandé alors que l'imprimante n'est pas définie !" + +#: gofax/faxaccount/class_gofaxAccount.inc:864 +msgid "Fax account settings" +msgstr "Paramètres du compte FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:876 +msgid "Alternate fax number" +msgstr "Numéros de fax alternatif" + +#: gofax/faxaccount/class_gofaxAccount.inc:877 +msgid "Enable/Disable fax" +msgstr "Activer/désactiver le fax" + +#: gofax/faxaccount/lists.tpl:5 +msgid "Blocked numbers/lists" +msgstr "Numéros/listes refusés" + +#: gofax/faxaccount/lists.tpl:17 +msgid "List of predefined blocklists" +msgstr "Liste des listes rouges prédéfinies" + +#: gofax/faxaccount/lists.tpl:25 +msgid "Add the list to the blocklists" +msgstr "Ajouter a la liste des listes rouges" + +#: admin/systems/services/gofax/class_goFaxServer.inc:30 +msgid "FAX database" +msgstr "Base de données des FAX" + +#: admin/systems/services/gofax/class_goFaxServer.inc:59 +msgid "FAX database configuration" +msgstr "Configuration de la base de données des fax" + +#: admin/systems/services/gofax/class_goFaxServer.inc:71 +#: admin/systems/services/gofax/class_goFaxServer.inc:98 +#: admin/systems/services/gofax/goFaxServer.tpl:12 +msgid "Password" +msgstr "Mot de passe" + +#: admin/systems/services/gofax/class_goFaxServer.inc:88 +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Fax database" +msgstr "Base de données des FAX" + +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/gofax/class_goFaxServer.inc:97 +msgid "Login name" +msgstr "Nom d'utilisateur" + +#: admin/systems/services/gofax/goFaxServer.tpl:1 +msgid "FAX database information" +msgstr "Base de données des FAX" + +#: admin/systems/services/gofax/goFaxServer.tpl:4 +msgid "FAX DB user" +msgstr "utilisateur de la base de données du FAX" diff --git a/trunk/gosa-plugins/gofax/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofax/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..69cc3a330 --- /dev/null +++ b/trunk/gosa-plugins/gofax/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,855 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: html/getfax.php:56 +msgid "Could not connect to database server!" +msgstr "Impossibile connettersi al server del database!" + +#: html/getfax.php:58 +msgid "Could not select database!" +msgstr "Impossibile selezionare il database!" + +#: html/getfax.php:63 html/getfax.php:71 +msgid "Database query failed!" +msgstr "La query al database è fallita!" + +#: gofax/faxreports/detail.tpl:5 +msgid "FAX preview - please wait" +msgstr "" + +#: gofax/faxreports/detail.tpl:8 +msgid "Click on fax to download" +msgstr "" + +#: gofax/faxreports/detail.tpl:17 +msgid "FAX ID" +msgstr "" + +#: gofax/faxreports/detail.tpl:21 gofax/faxreports/contents.tpl:30 +#: admin/systems/services/gofax/class_goFaxServer.inc:68 +msgid "User" +msgstr "" + +#: gofax/faxreports/detail.tpl:25 +msgid "Date / Time" +msgstr "" + +#: gofax/faxreports/detail.tpl:29 gofax/faxreports/class_faxreport.inc:503 +msgid "Sender MSN" +msgstr "" + +#: gofax/faxreports/detail.tpl:33 gofax/faxreports/class_faxreport.inc:502 +msgid "Sender ID" +msgstr "" + +#: gofax/faxreports/detail.tpl:37 gofax/faxreports/class_faxreport.inc:505 +msgid "Receiver MSN" +msgstr "" + +#: gofax/faxreports/detail.tpl:41 gofax/faxreports/class_faxreport.inc:504 +msgid "Receiver ID" +msgstr "" + +#: gofax/faxreports/detail.tpl:45 gofax/faxreports/contents.tpl:32 +#: gofax/faxreports/class_faxreport.inc:501 +msgid "Status" +msgstr "Stato" + +#: gofax/faxreports/detail.tpl:49 +msgid "Status message" +msgstr "" + +#: gofax/faxreports/detail.tpl:53 gofax/faxreports/class_faxreport.inc:508 +msgid "Transfer time" +msgstr "" + +#: gofax/faxreports/detail.tpl:57 gofax/faxreports/contents.tpl:35 +msgid "# pages" +msgstr "" + +#: gofax/faxreports/main.inc:19 +msgid "FAX reports" +msgstr "Rapporti FAX" + +#: gofax/faxreports/contents.tpl:2 +msgid "Filter" +msgstr "Filtro" + +#: gofax/faxreports/contents.tpl:6 +msgid "Search for" +msgstr "Cerca" + +#: gofax/faxreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "" + +#: gofax/faxreports/contents.tpl:8 gofax/faxreports/contents.tpl:16 +msgid "in" +msgstr "" + +#: gofax/faxreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "" + +#: gofax/faxreports/contents.tpl:12 +msgid "during" +msgstr "" + +#: gofax/faxreports/contents.tpl:21 +msgid "Search" +msgstr "Cerca" + +#: gofax/faxreports/contents.tpl:31 gofax/faxreports/class_faxreport.inc:500 +msgid "Date" +msgstr "Data" + +#: gofax/faxreports/contents.tpl:33 +msgid "Sender" +msgstr "" + +#: gofax/faxreports/contents.tpl:34 +msgid "Receiver" +msgstr "" + +#: gofax/faxreports/contents.tpl:50 +msgid "Search returned no results..." +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:6 +msgid "FAX Reports" +msgstr "Rapporti FAX" + +#: gofax/faxreports/class_faxreport.inc:7 +#: gofax/blocklists/class_blocklistManagement.inc:6 +#: gofax/blocklists/class_blocklistGeneric.inc:10 +#: gofax/faxaccount/class_gofaxAccount.inc:7 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: gofax/faxreports/class_faxreport.inc:116 +#: gofax/faxreports/class_faxreport.inc:126 +#: gofax/faxreports/class_faxreport.inc:130 +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Error" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:116 +msgid "No fax server found!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy +msgid "Configuration error" +msgstr "File di configurazione" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Elimina foto" + +#: gofax/faxreports/class_faxreport.inc:126 +#, fuzzy, php-format +msgid "Cannot connect to %s database!" +msgstr "Impossibile connettersi al server del database!" + +#: gofax/faxreports/class_faxreport.inc:130 +#, fuzzy, php-format +msgid "Cannot select %s database!" +msgstr "Impossibile selezionare il database!" + +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#, fuzzy, php-format +msgid "Cannot query %s database!" +msgstr "Impossibile selezionare il database!" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#: gofax/blocklists/class_blocklistManagement.inc:269 +#: gofax/blocklists/class_blocklistManagement.inc:326 +#, fuzzy +msgid "Permission error" +msgstr "Permessi" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +msgid "You have no permission to view this fax id!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:208 +#: gofax/faxreports/class_faxreport.inc:329 +msgid "Y-M-D" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:323 +msgid "Insufficient permissions to view this attribute" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:323 +#, fuzzy +msgid "Insufficient permissions" +msgstr "Permessi" + +#: gofax/faxreports/class_faxreport.inc:487 +#: gofax/faxreports/class_faxreport.inc:488 +#, fuzzy +msgid "Fax report" +msgstr "Rapporti FAX" + +#: gofax/faxreports/class_faxreport.inc:488 +#, fuzzy +msgid "All entries are readonly" +msgstr "Tutti i campi sono scrivibili" + +#: gofax/faxreports/class_faxreport.inc:493 +#, fuzzy +msgid "Fax reports" +msgstr "Rapporti FAX" + +#: gofax/faxreports/class_faxreport.inc:498 +#, fuzzy +msgid "Detailed view" +msgstr "Dispositivi del client" + +#: gofax/faxreports/class_faxreport.inc:499 +#, fuzzy +msgid "Fax ID" +msgstr "Fax" + +#: gofax/faxreports/class_faxreport.inc:500 +#, fuzzy +msgid "Time" +msgstr "Cellulare" + +#: gofax/faxreports/class_faxreport.inc:506 +msgid "Number of pages" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:507 +#, fuzzy +msgid "Status Message" +msgstr "Rimuovi" + +#: gofax/blocklists/remove.tpl:2 +msgid "Warning" +msgstr "Attenzione" + +#: gofax/blocklists/remove.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: gofax/blocklists/remove.tpl:10 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Quindi - Se sei sicuro - premi Rimuovi per continuare o Annulla per abortire." + +#: gofax/blocklists/generic.tpl:1 gofax/faxaccount/generic.tpl:6 +#: gofax/faxaccount/paste_generic.tpl:4 +msgid "Generic" +msgstr "Generale" + +#: gofax/blocklists/generic.tpl:8 gofax/blocklists/paste_generic.tpl:3 +msgid "List name" +msgstr "" + +#: gofax/blocklists/generic.tpl:12 gofax/blocklists/paste_generic.tpl:5 +msgid "Name of blocklist" +msgstr "" + +#: gofax/blocklists/generic.tpl:17 +#: gofax/blocklists/class_divListBlocklists.inc:86 +#: gofax/blocklists/class_blocklistGeneric.inc:387 +msgid "Base" +msgstr "Base" + +#: gofax/blocklists/generic.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Scegli il subtree dove mettere il gruppo" + +#: gofax/blocklists/generic.tpl:26 +#, fuzzy +msgid "Select a base" +msgstr "Rimuovi" + +#: gofax/blocklists/generic.tpl:40 +msgid "Type" +msgstr "Tipo" + +#: gofax/blocklists/generic.tpl:43 +msgid "Select wether to filter incoming or outgoing calls" +msgstr "" + +#: gofax/blocklists/generic.tpl:51 +#: gofax/blocklists/class_blocklistGeneric.inc:386 +msgid "Description" +msgstr "Descrizione" + +#: gofax/blocklists/generic.tpl:54 +msgid "Descriptive text for this blocklist" +msgstr "" + +#: gofax/blocklists/generic.tpl:68 +msgid "Blocked numbers" +msgstr "" + +#: gofax/blocklists/generic.tpl:90 +msgid "Information" +msgstr "Informazioni" + +#: gofax/blocklists/generic.tpl:92 +msgid "Numbers can also contain wild cards." +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:31 +#: gofax/blocklists/class_divListBlocklists.inc:32 +msgid "List of blocklists" +msgstr "Lista delle liste di blocchi" + +#: gofax/blocklists/class_divListBlocklists.inc:50 +#, fuzzy +msgid "Select all" +msgstr "Rimuovi" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +#: gofax/blocklists/class_blocklistGeneric.inc:219 +#: gofax/blocklists/class_blocklistGeneric.inc:222 +#: gofax/blocklists/class_blocklistGeneric.inc:229 +#: gofax/blocklists/class_blocklistGeneric.inc:385 +msgid "Name" +msgstr "Cognome" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +msgid "Department" +msgstr "Dipartimento" + +#: gofax/blocklists/class_divListBlocklists.inc:57 +#: gofax/blocklists/class_divListBlocklists.inc:91 +msgid "Actions" +msgstr "Azioni" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +#: gofax/faxaccount/class_gofaxAccount.inc:881 +#, fuzzy +msgid "Send blocklist" +msgstr "Liste di blocco" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +msgid "Show send blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +#: gofax/faxaccount/class_gofaxAccount.inc:880 +#, fuzzy +msgid "Receive blocklist" +msgstr "Lista delle liste di blocchi" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +msgid "Show receive blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:67 +msgid "Regular expression for matching list names" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit department" +msgstr "Imposta dipartimento" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:96 +msgid "Create" +msgstr "Creare" + +#: gofax/blocklists/class_divListBlocklists.inc:98 +#: gofax/blocklists/class_blocklistGeneric.inc:388 +#, fuzzy +msgid "Blocklist" +msgstr "Liste di blocco" + +#: gofax/blocklists/class_divListBlocklists.inc:104 +msgid "Remove" +msgstr "Rimuovi" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "edit" +msgstr "modifica" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +#, fuzzy +msgid "Edit user" +msgstr "Modifica contatto" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "delete" +msgstr "elimina" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +#, fuzzy +msgid "Delete user" +msgstr "Rimuovi" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Lista delle liste di blocchi" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#, fuzzy +msgid "blocklists" +msgstr "Liste di blocco" + +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy +msgid "departments" +msgstr "Dipartimento" + +#: gofax/blocklists/class_blocklistManagement.inc:5 +#, fuzzy +msgid "FAX blocklists" +msgstr "Liste blocco FAX" + +#: gofax/blocklists/class_blocklistManagement.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Permessi" + +#: gofax/blocklists/class_blocklistManagement.inc:246 +#: gofax/blocklists/class_blocklistManagement.inc:307 +#, fuzzy +msgid "blocklist" +msgstr "Liste di blocco" + +#: gofax/blocklists/main.inc:35 gofax/blocklists/main.inc:37 +msgid "Blocklist management" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:9 +#: gofax/blocklists/class_blocklistGeneric.inc:376 +#: gofax/blocklists/class_blocklistGeneric.inc:381 +#: gofax/blocklists/class_blocklistGeneric.inc:382 +#, fuzzy +msgid "Fax blocklists" +msgstr "Liste blocco FAX" + +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +#, fuzzy +msgid "Phone number" +msgstr "Numero di telefono" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "send" +msgstr "invia" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "receive" +msgstr "ricevi" + +#: gofax/blocklists/class_blocklistGeneric.inc:205 +#: gofax/blocklists/class_blocklistGeneric.inc:286 +#: gofax/faxaccount/class_gofaxAccount.inc:659 +#: gofax/faxaccount/class_gofaxAccount.inc:788 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: gofax/blocklists/class_blocklistGeneric.inc:375 +#: gofax/faxaccount/generic.tpl:10 gofax/faxaccount/paste_generic.tpl:8 +#: gofax/faxaccount/class_gofaxAccount.inc:863 +msgid "Fax" +msgstr "Fax" + +#: gofax/blocklists/class_blocklistGeneric.inc:389 +#, fuzzy +msgid "Blocklist type" +msgstr "Liste di blocco" + +#: gofax/faxaccount/locals.tpl:6 +msgid "Select numbers to add" +msgstr "Seleziona il numero da aggiungere" + +#: gofax/faxaccount/locals.tpl:19 +msgid "Filters" +msgstr "Filtri" + +#: gofax/faxaccount/locals.tpl:28 +msgid "Display numbers of department" +msgstr "" + +#: gofax/faxaccount/locals.tpl:29 +msgid "Choose the department the search will be based on" +msgstr "Scegli il dipartimento di base per la ricerca" + +#: gofax/faxaccount/locals.tpl:38 +msgid "Display numbers matching" +msgstr "" + +#: gofax/faxaccount/locals.tpl:41 +msgid "Regular expression for matching numbers" +msgstr "" + +#: gofax/faxaccount/locals.tpl:47 +msgid "Display numbers of user" +msgstr "" + +#: gofax/faxaccount/locals.tpl:50 +msgid "User name of which numbers are shown" +msgstr "" + +#: gofax/faxaccount/generic.tpl:13 +msgid "Multiple edit" +msgstr "" + +#: gofax/faxaccount/generic.tpl:17 gofax/faxaccount/paste_generic.tpl:13 +msgid "Fax number for GOfax to trigger on" +msgstr "" + +#: gofax/faxaccount/generic.tpl:24 gofax/faxaccount/class_gofaxAccount.inc:874 +msgid "Language" +msgstr "Lingua" + +#: gofax/faxaccount/generic.tpl:29 +msgid "Specify the GOfax communication language for fax to mail gateway" +msgstr "" + +#: gofax/faxaccount/generic.tpl:37 gofax/faxaccount/class_gofaxAccount.inc:875 +msgid "Delivery format" +msgstr "Formato di recapito" + +#: gofax/faxaccount/generic.tpl:41 +msgid "Specify delivery format for fax to mail gateway" +msgstr "" + +#: gofax/faxaccount/generic.tpl:54 +msgid "Delivery methods" +msgstr "Metodi di recapito" + +#: gofax/faxaccount/generic.tpl:59 +msgid "Temporary disable fax usage" +msgstr "Disabilita temporaneamente l'uso del Fax" + +#: gofax/faxaccount/generic.tpl:65 +msgid "Deliver fax as mail to" +msgstr "" + +#: gofax/faxaccount/generic.tpl:73 gofax/faxaccount/class_gofaxAccount.inc:878 +msgid "Deliver fax as mail" +msgstr "Recapita Fax come mail" + +#: gofax/faxaccount/generic.tpl:80 gofax/faxaccount/class_gofaxAccount.inc:879 +msgid "Deliver fax to printer" +msgstr "Recapita Fax alla stampante" + +#: gofax/faxaccount/generic.tpl:99 +msgid "Alternate fax numbers" +msgstr "Numeri di Fax alternativi" + +#: gofax/faxaccount/generic.tpl:114 +msgid "Add local" +msgstr "Aggiungi localmente" + +#: gofax/faxaccount/generic.tpl:122 +msgid "Blocklists" +msgstr "Liste di blocco" + +#: gofax/faxaccount/generic.tpl:125 +msgid "Blocklists for incoming fax" +msgstr "Liste di blocco per i Fax in arrivo" + +#: gofax/faxaccount/generic.tpl:128 gofax/faxaccount/generic.tpl:136 +msgid "Edit" +msgstr "Modifica" + +#: gofax/faxaccount/generic.tpl:133 +msgid "Blocklists for outgoing fax" +msgstr "Liste di blocco per i Fax in partenza" + +#: gofax/faxaccount/paste_generic.tpl:18 +#, fuzzy +msgid "Alternate fax numbers will not be copied" +msgstr "Numeri di Fax alternativi" + +#: gofax/faxaccount/main.inc:106 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " +"questo dialogo" + +#: gofax/faxaccount/main.inc:115 +msgid "FAX settings" +msgstr "Impostazioni FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:6 +msgid "FAX" +msgstr "FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:165 +#: gofax/faxaccount/class_gofaxAccount.inc:175 +#: gofax/faxaccount/class_gofaxAccount.inc:178 +msgid "GOfax" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:174 +msgid "Remove fax account" +msgstr "Elimina estensioni FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:177 +msgid "Create fax account" +msgstr "Crea estensioni FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:453 +#: gofax/faxaccount/class_gofaxAccount.inc:535 +#, fuzzy +msgid "back" +msgstr "Indietro" + +#: gofax/faxaccount/class_gofaxAccount.inc:675 +#: gofax/faxaccount/class_gofaxAccount.inc:679 +#: gofax/faxaccount/class_gofaxAccount.inc:873 +#, fuzzy +msgid "Fax number" +msgstr "Numero di telefono" + +#: gofax/faxaccount/class_gofaxAccount.inc:687 +msgid "Mail delivery is requested without target address!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "Mail address" +msgstr "Indirizzo principale" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "your-name@your-domain.com" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:695 +msgid "Printing is requested without a target printer!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:864 +#, fuzzy +msgid "Fax account settings" +msgstr "Impostazioni Samba" + +#: gofax/faxaccount/class_gofaxAccount.inc:876 +#, fuzzy +msgid "Alternate fax number" +msgstr "Numeri di Fax alternativi" + +#: gofax/faxaccount/class_gofaxAccount.inc:877 +msgid "Enable/Disable fax" +msgstr "" + +#: gofax/faxaccount/lists.tpl:5 +msgid "Blocked numbers/lists" +msgstr "Numeri/liste bloccati" + +#: gofax/faxaccount/lists.tpl:17 +msgid "List of predefined blocklists" +msgstr "Liste di blocco predefinite" + +#: gofax/faxaccount/lists.tpl:25 +#, fuzzy +msgid "Add the list to the blocklists" +msgstr "Lista delle liste di blocchi" + +#: admin/systems/services/gofax/class_goFaxServer.inc:30 +msgid "FAX database" +msgstr "" + +#: admin/systems/services/gofax/class_goFaxServer.inc:59 +#, fuzzy +msgid "FAX database configuration" +msgstr "Scarica il file di configurazione" + +#: admin/systems/services/gofax/class_goFaxServer.inc:71 +#: admin/systems/services/gofax/class_goFaxServer.inc:98 +#: admin/systems/services/gofax/goFaxServer.tpl:12 +msgid "Password" +msgstr "Password" + +#: admin/systems/services/gofax/class_goFaxServer.inc:88 +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +#, fuzzy +msgid "Fax database" +msgstr "Database" + +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/gofax/class_goFaxServer.inc:97 +#, fuzzy +msgid "Login name" +msgstr "Nome locazione" + +#: admin/systems/services/gofax/goFaxServer.tpl:1 +#, fuzzy +msgid "FAX database information" +msgstr "Informazioni organizzazione" + +#: admin/systems/services/gofax/goFaxServer.tpl:4 +msgid "FAX DB user" +msgstr "" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Azienda" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Paste" +#~ msgstr "Data" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Faxi number" +#~ msgstr "Numero di telefono" + +#~ msgid "This account has no fax extensions." +#~ msgstr "Questa identità non possiede estensioni FAX" + +#~ msgid "" +#~ "This account has fax features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "Questa identià possiede estensioni FAX." + +#~ msgid "" +#~ "This account has fax features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "Questa identità non possiede estensioni FAX" + +#, fuzzy +#~ msgid "Fax is empty!" +#~ msgstr "Rapporti FAX" + +#, fuzzy +#~ msgid "Blocklist name" +#~ msgstr "Liste di blocco" + +#, fuzzy +#~ msgid "Select to search within subtrees" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "The attribute user is empty or contains invalid characters." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#~ msgid "Back" +#~ msgstr "Indietro" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Delete" +#~ msgstr "Rimuovi" + +#~ msgid "Apply" +#~ msgstr "Applica" + +#, fuzzy +#~ msgid "Name contains invalid characters!" +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "" +#~ "This menu allows you to create, delete and edit selected blocklists. " +#~ "Having a large size of lists, you might prefer the range selectors on top " +#~ "of the select box." +#~ msgstr "" +#~ "Questo menù permette di creare, modificare e cancellare gli utenti " +#~ "selezionati. Avendo un gran numero di utenti, puoi usare i selettori di " +#~ "intervalli in cima alla lista degli utenti." + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Imposta dipartimento" + +#, fuzzy +#~ msgid "You're about to delete the following blocklists(s) %s" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have not permission to delete '%s'!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have not permission to delete this entry!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "Removing of user/fax account with dn '%s' failed." +#~ msgstr "Elimina estensioni Unix" + +#, fuzzy +#~ msgid "Saving of user/fax account with dn '%s' failed." +#~ msgstr "Estenzioni Proxy Internet" + +#, fuzzy +#~ msgid "Removing of blocklist with dn '%s' failed." +#~ msgstr "Elimina estensioni per le applicazioni" + +#, fuzzy +#~ msgid "Saving of blocklist with dn '%s' failed." +#~ msgstr "Nome applicazione" + +#, fuzzy +#~ msgid "Can't query fax table 'faxlog' for report generation!" +#~ msgstr "Impossibile selezionare il database!" diff --git a/trunk/gosa-plugins/gofax/locale/messages.po b/trunk/gosa-plugins/gofax/locale/messages.po new file mode 100644 index 000000000..2a579faac --- /dev/null +++ b/trunk/gosa-plugins/gofax/locale/messages.po @@ -0,0 +1,682 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/getfax.php:56 +msgid "Could not connect to database server!" +msgstr "" + +#: html/getfax.php:58 +msgid "Could not select database!" +msgstr "" + +#: html/getfax.php:63 html/getfax.php:71 +msgid "Database query failed!" +msgstr "" + +#: gofax/faxreports/detail.tpl:5 +msgid "FAX preview - please wait" +msgstr "" + +#: gofax/faxreports/detail.tpl:8 +msgid "Click on fax to download" +msgstr "" + +#: gofax/faxreports/detail.tpl:17 +msgid "FAX ID" +msgstr "" + +#: gofax/faxreports/detail.tpl:21 gofax/faxreports/contents.tpl:30 +#: admin/systems/services/gofax/class_goFaxServer.inc:68 +msgid "User" +msgstr "" + +#: gofax/faxreports/detail.tpl:25 +msgid "Date / Time" +msgstr "" + +#: gofax/faxreports/detail.tpl:29 gofax/faxreports/class_faxreport.inc:503 +msgid "Sender MSN" +msgstr "" + +#: gofax/faxreports/detail.tpl:33 gofax/faxreports/class_faxreport.inc:502 +msgid "Sender ID" +msgstr "" + +#: gofax/faxreports/detail.tpl:37 gofax/faxreports/class_faxreport.inc:505 +msgid "Receiver MSN" +msgstr "" + +#: gofax/faxreports/detail.tpl:41 gofax/faxreports/class_faxreport.inc:504 +msgid "Receiver ID" +msgstr "" + +#: gofax/faxreports/detail.tpl:45 gofax/faxreports/contents.tpl:32 +#: gofax/faxreports/class_faxreport.inc:501 +msgid "Status" +msgstr "" + +#: gofax/faxreports/detail.tpl:49 +msgid "Status message" +msgstr "" + +#: gofax/faxreports/detail.tpl:53 gofax/faxreports/class_faxreport.inc:508 +msgid "Transfer time" +msgstr "" + +#: gofax/faxreports/detail.tpl:57 gofax/faxreports/contents.tpl:35 +msgid "# pages" +msgstr "" + +#: gofax/faxreports/main.inc:19 +msgid "FAX reports" +msgstr "" + +#: gofax/faxreports/contents.tpl:2 +msgid "Filter" +msgstr "" + +#: gofax/faxreports/contents.tpl:6 +msgid "Search for" +msgstr "" + +#: gofax/faxreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "" + +#: gofax/faxreports/contents.tpl:8 gofax/faxreports/contents.tpl:16 +msgid "in" +msgstr "" + +#: gofax/faxreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "" + +#: gofax/faxreports/contents.tpl:12 +msgid "during" +msgstr "" + +#: gofax/faxreports/contents.tpl:21 +msgid "Search" +msgstr "" + +#: gofax/faxreports/contents.tpl:31 gofax/faxreports/class_faxreport.inc:500 +msgid "Date" +msgstr "" + +#: gofax/faxreports/contents.tpl:33 +msgid "Sender" +msgstr "" + +#: gofax/faxreports/contents.tpl:34 +msgid "Receiver" +msgstr "" + +#: gofax/faxreports/contents.tpl:50 +msgid "Search returned no results..." +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:6 +msgid "FAX Reports" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:7 +#: gofax/blocklists/class_blocklistManagement.inc:6 +#: gofax/blocklists/class_blocklistGeneric.inc:10 +#: gofax/faxaccount/class_gofaxAccount.inc:7 +msgid "This does something" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:116 +#: gofax/faxreports/class_faxreport.inc:126 +#: gofax/faxreports/class_faxreport.inc:130 +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Error" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:116 +msgid "No fax server found!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +msgid "Configuration error" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, php-format +msgid "Missing %s PHP extension!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:126 +#, php-format +msgid "Cannot connect to %s database!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:130 +#, php-format +msgid "Cannot select %s database!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#, php-format +msgid "Cannot query %s database!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#: gofax/blocklists/class_blocklistManagement.inc:269 +#: gofax/blocklists/class_blocklistManagement.inc:326 +msgid "Permission error" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +msgid "You have no permission to view this fax id!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:208 +#: gofax/faxreports/class_faxreport.inc:329 +msgid "Y-M-D" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:323 +msgid "Insufficient permissions to view this attribute" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:323 +msgid "Insufficient permissions" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:487 +#: gofax/faxreports/class_faxreport.inc:488 +msgid "Fax report" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:488 +msgid "All entries are readonly" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:493 +msgid "Fax reports" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:498 +msgid "Detailed view" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:499 +msgid "Fax ID" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:500 +msgid "Time" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:506 +msgid "Number of pages" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:507 +msgid "Status Message" +msgstr "" + +#: gofax/blocklists/remove.tpl:2 +msgid "Warning" +msgstr "" + +#: gofax/blocklists/remove.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: gofax/blocklists/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: gofax/blocklists/generic.tpl:1 gofax/faxaccount/generic.tpl:6 +#: gofax/faxaccount/paste_generic.tpl:4 +msgid "Generic" +msgstr "" + +#: gofax/blocklists/generic.tpl:8 gofax/blocklists/paste_generic.tpl:3 +msgid "List name" +msgstr "" + +#: gofax/blocklists/generic.tpl:12 gofax/blocklists/paste_generic.tpl:5 +msgid "Name of blocklist" +msgstr "" + +#: gofax/blocklists/generic.tpl:17 +#: gofax/blocklists/class_divListBlocklists.inc:86 +#: gofax/blocklists/class_blocklistGeneric.inc:387 +msgid "Base" +msgstr "" + +#: gofax/blocklists/generic.tpl:20 +msgid "Choose subtree to place group in" +msgstr "" + +#: gofax/blocklists/generic.tpl:26 +msgid "Select a base" +msgstr "" + +#: gofax/blocklists/generic.tpl:40 +msgid "Type" +msgstr "" + +#: gofax/blocklists/generic.tpl:43 +msgid "Select wether to filter incoming or outgoing calls" +msgstr "" + +#: gofax/blocklists/generic.tpl:51 +#: gofax/blocklists/class_blocklistGeneric.inc:386 +msgid "Description" +msgstr "" + +#: gofax/blocklists/generic.tpl:54 +msgid "Descriptive text for this blocklist" +msgstr "" + +#: gofax/blocklists/generic.tpl:68 +msgid "Blocked numbers" +msgstr "" + +#: gofax/blocklists/generic.tpl:90 +msgid "Information" +msgstr "" + +#: gofax/blocklists/generic.tpl:92 +msgid "Numbers can also contain wild cards." +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:31 +#: gofax/blocklists/class_divListBlocklists.inc:32 +msgid "List of blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:50 +msgid "Select all" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +#: gofax/blocklists/class_blocklistGeneric.inc:219 +#: gofax/blocklists/class_blocklistGeneric.inc:222 +#: gofax/blocklists/class_blocklistGeneric.inc:229 +#: gofax/blocklists/class_blocklistGeneric.inc:385 +msgid "Name" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +msgid "Department" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:57 +#: gofax/blocklists/class_divListBlocklists.inc:91 +msgid "Actions" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +#: gofax/faxaccount/class_gofaxAccount.inc:881 +msgid "Send blocklist" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +msgid "Show send blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +#: gofax/faxaccount/class_gofaxAccount.inc:880 +msgid "Receive blocklist" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +msgid "Show receive blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:67 +msgid "Regular expression for matching list names" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit department" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:96 +msgid "Create" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:98 +#: gofax/blocklists/class_blocklistGeneric.inc:388 +msgid "Blocklist" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:104 +msgid "Remove" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "edit" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "Edit user" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "delete" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "Delete user" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, php-format +msgid "Number of listed '%s'" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +msgid "blocklists" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:196 +msgid "departments" +msgstr "" + +#: gofax/blocklists/class_blocklistManagement.inc:5 +msgid "FAX blocklists" +msgstr "" + +#: gofax/blocklists/class_blocklistManagement.inc:230 +msgid "Permission" +msgstr "" + +#: gofax/blocklists/class_blocklistManagement.inc:246 +#: gofax/blocklists/class_blocklistManagement.inc:307 +msgid "blocklist" +msgstr "" + +#: gofax/blocklists/main.inc:35 gofax/blocklists/main.inc:37 +msgid "Blocklist management" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:9 +#: gofax/blocklists/class_blocklistGeneric.inc:376 +#: gofax/blocklists/class_blocklistGeneric.inc:381 +#: gofax/blocklists/class_blocklistGeneric.inc:382 +msgid "Fax blocklists" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Phone number" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "send" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "receive" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:205 +#: gofax/blocklists/class_blocklistGeneric.inc:286 +#: gofax/faxaccount/class_gofaxAccount.inc:659 +#: gofax/faxaccount/class_gofaxAccount.inc:788 +msgid "LDAP error" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:375 +#: gofax/faxaccount/generic.tpl:10 gofax/faxaccount/paste_generic.tpl:8 +#: gofax/faxaccount/class_gofaxAccount.inc:863 +msgid "Fax" +msgstr "" + +#: gofax/blocklists/class_blocklistGeneric.inc:389 +msgid "Blocklist type" +msgstr "" + +#: gofax/faxaccount/locals.tpl:6 +msgid "Select numbers to add" +msgstr "" + +#: gofax/faxaccount/locals.tpl:19 +msgid "Filters" +msgstr "" + +#: gofax/faxaccount/locals.tpl:28 +msgid "Display numbers of department" +msgstr "" + +#: gofax/faxaccount/locals.tpl:29 +msgid "Choose the department the search will be based on" +msgstr "" + +#: gofax/faxaccount/locals.tpl:38 +msgid "Display numbers matching" +msgstr "" + +#: gofax/faxaccount/locals.tpl:41 +msgid "Regular expression for matching numbers" +msgstr "" + +#: gofax/faxaccount/locals.tpl:47 +msgid "Display numbers of user" +msgstr "" + +#: gofax/faxaccount/locals.tpl:50 +msgid "User name of which numbers are shown" +msgstr "" + +#: gofax/faxaccount/generic.tpl:13 +msgid "Multiple edit" +msgstr "" + +#: gofax/faxaccount/generic.tpl:17 gofax/faxaccount/paste_generic.tpl:13 +msgid "Fax number for GOfax to trigger on" +msgstr "" + +#: gofax/faxaccount/generic.tpl:24 gofax/faxaccount/class_gofaxAccount.inc:874 +msgid "Language" +msgstr "" + +#: gofax/faxaccount/generic.tpl:29 +msgid "Specify the GOfax communication language for fax to mail gateway" +msgstr "" + +#: gofax/faxaccount/generic.tpl:37 gofax/faxaccount/class_gofaxAccount.inc:875 +msgid "Delivery format" +msgstr "" + +#: gofax/faxaccount/generic.tpl:41 +msgid "Specify delivery format for fax to mail gateway" +msgstr "" + +#: gofax/faxaccount/generic.tpl:54 +msgid "Delivery methods" +msgstr "" + +#: gofax/faxaccount/generic.tpl:59 +msgid "Temporary disable fax usage" +msgstr "" + +#: gofax/faxaccount/generic.tpl:65 +msgid "Deliver fax as mail to" +msgstr "" + +#: gofax/faxaccount/generic.tpl:73 gofax/faxaccount/class_gofaxAccount.inc:878 +msgid "Deliver fax as mail" +msgstr "" + +#: gofax/faxaccount/generic.tpl:80 gofax/faxaccount/class_gofaxAccount.inc:879 +msgid "Deliver fax to printer" +msgstr "" + +#: gofax/faxaccount/generic.tpl:99 +msgid "Alternate fax numbers" +msgstr "" + +#: gofax/faxaccount/generic.tpl:114 +msgid "Add local" +msgstr "" + +#: gofax/faxaccount/generic.tpl:122 +msgid "Blocklists" +msgstr "" + +#: gofax/faxaccount/generic.tpl:125 +msgid "Blocklists for incoming fax" +msgstr "" + +#: gofax/faxaccount/generic.tpl:128 gofax/faxaccount/generic.tpl:136 +msgid "Edit" +msgstr "" + +#: gofax/faxaccount/generic.tpl:133 +msgid "Blocklists for outgoing fax" +msgstr "" + +#: gofax/faxaccount/paste_generic.tpl:18 +msgid "Alternate fax numbers will not be copied" +msgstr "" + +#: gofax/faxaccount/main.inc:106 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" + +#: gofax/faxaccount/main.inc:115 +msgid "FAX settings" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:6 +msgid "FAX" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:165 +#: gofax/faxaccount/class_gofaxAccount.inc:175 +#: gofax/faxaccount/class_gofaxAccount.inc:178 +msgid "GOfax" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:174 +msgid "Remove fax account" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:177 +msgid "Create fax account" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:453 +#: gofax/faxaccount/class_gofaxAccount.inc:535 +msgid "back" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:675 +#: gofax/faxaccount/class_gofaxAccount.inc:679 +#: gofax/faxaccount/class_gofaxAccount.inc:873 +msgid "Fax number" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:687 +msgid "Mail delivery is requested without target address!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "Mail address" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "your-name@your-domain.com" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:695 +msgid "Printing is requested without a target printer!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:864 +msgid "Fax account settings" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:876 +msgid "Alternate fax number" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:877 +msgid "Enable/Disable fax" +msgstr "" + +#: gofax/faxaccount/lists.tpl:5 +msgid "Blocked numbers/lists" +msgstr "" + +#: gofax/faxaccount/lists.tpl:17 +msgid "List of predefined blocklists" +msgstr "" + +#: gofax/faxaccount/lists.tpl:25 +msgid "Add the list to the blocklists" +msgstr "" + +#: admin/systems/services/gofax/class_goFaxServer.inc:30 +msgid "FAX database" +msgstr "" + +#: admin/systems/services/gofax/class_goFaxServer.inc:59 +msgid "FAX database configuration" +msgstr "" + +#: admin/systems/services/gofax/class_goFaxServer.inc:71 +#: admin/systems/services/gofax/class_goFaxServer.inc:98 +#: admin/systems/services/gofax/goFaxServer.tpl:12 +msgid "Password" +msgstr "" + +#: admin/systems/services/gofax/class_goFaxServer.inc:88 +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Fax database" +msgstr "" + +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Services" +msgstr "" + +#: admin/systems/services/gofax/class_goFaxServer.inc:97 +msgid "Login name" +msgstr "" + +#: admin/systems/services/gofax/goFaxServer.tpl:1 +msgid "FAX database information" +msgstr "" + +#: admin/systems/services/gofax/goFaxServer.tpl:4 +msgid "FAX DB user" +msgstr "" diff --git a/trunk/gosa-plugins/gofax/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofax/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..2f44cb04e --- /dev/null +++ b/trunk/gosa-plugins/gofax/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,918 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/getfax.php:56 +msgid "Could not connect to database server!" +msgstr "Kan niet verbinden met de database server!" + +#: html/getfax.php:58 +msgid "Could not select database!" +msgstr "De opgegeven database kon niet geselecteerd worden!" + +#: html/getfax.php:63 html/getfax.php:71 +msgid "Database query failed!" +msgstr "De database zoekopdracht is mislukt" + +#: gofax/faxreports/detail.tpl:5 +msgid "FAX preview - please wait" +msgstr "Fax voorbeeld - even geduld a.u.b." + +#: gofax/faxreports/detail.tpl:8 +msgid "Click on fax to download" +msgstr "Klik op de Fax om deze te downloaden" + +#: gofax/faxreports/detail.tpl:17 +msgid "FAX ID" +msgstr "Fax ID" + +#: gofax/faxreports/detail.tpl:21 gofax/faxreports/contents.tpl:30 +#: admin/systems/services/gofax/class_goFaxServer.inc:68 +msgid "User" +msgstr "Gebruiker" + +#: gofax/faxreports/detail.tpl:25 +msgid "Date / Time" +msgstr "Datum / Tijd" + +#: gofax/faxreports/detail.tpl:29 gofax/faxreports/class_faxreport.inc:503 +msgid "Sender MSN" +msgstr "Afzender MSN" + +#: gofax/faxreports/detail.tpl:33 gofax/faxreports/class_faxreport.inc:502 +msgid "Sender ID" +msgstr "Afzender ID" + +#: gofax/faxreports/detail.tpl:37 gofax/faxreports/class_faxreport.inc:505 +msgid "Receiver MSN" +msgstr "Ontvanger MSN" + +#: gofax/faxreports/detail.tpl:41 gofax/faxreports/class_faxreport.inc:504 +msgid "Receiver ID" +msgstr "Ontvanger ID" + +#: gofax/faxreports/detail.tpl:45 gofax/faxreports/contents.tpl:32 +#: gofax/faxreports/class_faxreport.inc:501 +msgid "Status" +msgstr "Status" + +#: gofax/faxreports/detail.tpl:49 +msgid "Status message" +msgstr "Status bericht" + +#: gofax/faxreports/detail.tpl:53 gofax/faxreports/class_faxreport.inc:508 +msgid "Transfer time" +msgstr "Overdrachtstijd" + +#: gofax/faxreports/detail.tpl:57 gofax/faxreports/contents.tpl:35 +msgid "# pages" +msgstr "# pagina's" + +#: gofax/faxreports/main.inc:19 +msgid "FAX reports" +msgstr "Fax rapporten" + +#: gofax/faxreports/contents.tpl:2 +msgid "Filter" +msgstr "Filter" + +#: gofax/faxreports/contents.tpl:6 +msgid "Search for" +msgstr "Zoek naar" + +#: gofax/faxreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Voer de te zoeken gebruikersnaam in" + +#: gofax/faxreports/contents.tpl:8 gofax/faxreports/contents.tpl:16 +msgid "in" +msgstr "in" + +#: gofax/faxreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Selecteer de subtree waarbinnen de zoekopdracht plaatsvindt" + +#: gofax/faxreports/contents.tpl:12 +msgid "during" +msgstr "gedurende" + +#: gofax/faxreports/contents.tpl:21 +msgid "Search" +msgstr "Zoeken" + +#: gofax/faxreports/contents.tpl:31 gofax/faxreports/class_faxreport.inc:500 +msgid "Date" +msgstr "Datum" + +#: gofax/faxreports/contents.tpl:33 +msgid "Sender" +msgstr "Afzender" + +#: gofax/faxreports/contents.tpl:34 +msgid "Receiver" +msgstr "Ontvanger" + +#: gofax/faxreports/contents.tpl:50 +msgid "Search returned no results..." +msgstr "De zoekopdracht gaf geen resultaten terug..." + +#: gofax/faxreports/class_faxreport.inc:6 +msgid "FAX Reports" +msgstr "Fax rapporten" + +#: gofax/faxreports/class_faxreport.inc:7 +#: gofax/blocklists/class_blocklistManagement.inc:6 +#: gofax/blocklists/class_blocklistGeneric.inc:10 +#: gofax/faxaccount/class_gofaxAccount.inc:7 +msgid "This does something" +msgstr "Dit doet iets" + +#: gofax/faxreports/class_faxreport.inc:116 +#: gofax/faxreports/class_faxreport.inc:126 +#: gofax/faxreports/class_faxreport.inc:130 +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Error" +msgstr "Fout" + +#: gofax/faxreports/class_faxreport.inc:116 +msgid "No fax server found!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy +msgid "Configuration error" +msgstr "Configuratie bestand" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Verwijder printer mogelijkheden" + +#: gofax/faxreports/class_faxreport.inc:126 +#, fuzzy, php-format +msgid "Cannot connect to %s database!" +msgstr "" +"Kan niet verbinden met de Fax database. Rapporten kunnen niet getoond worden!" + +#: gofax/faxreports/class_faxreport.inc:130 +#, fuzzy, php-format +msgid "Cannot select %s database!" +msgstr "De opgegeven database kon niet geselecteerd worden!" + +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#, fuzzy, php-format +msgid "Cannot query %s database!" +msgstr "De opgegeven database kon niet geselecteerd worden!" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#: gofax/blocklists/class_blocklistManagement.inc:269 +#: gofax/blocklists/class_blocklistManagement.inc:326 +#, fuzzy +msgid "Permission error" +msgstr "Rechten" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#, fuzzy +msgid "You have no permission to view this fax id!" +msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#: gofax/faxreports/class_faxreport.inc:208 +#: gofax/faxreports/class_faxreport.inc:329 +msgid "Y-M-D" +msgstr "J-M-D" + +#: gofax/faxreports/class_faxreport.inc:323 +#, fuzzy +msgid "Insufficient permissions to view this attribute" +msgstr "" +"Onvoldoende permissies. Kan attribuut '%s' in goFonMacro niet veranderen." + +#: gofax/faxreports/class_faxreport.inc:323 +#, fuzzy +msgid "Insufficient permissions" +msgstr "Rechten" + +#: gofax/faxreports/class_faxreport.inc:487 +#: gofax/faxreports/class_faxreport.inc:488 +#, fuzzy +msgid "Fax report" +msgstr "Fax rapporten" + +#: gofax/faxreports/class_faxreport.inc:488 +#, fuzzy +msgid "All entries are readonly" +msgstr "Alle velden zijn aanpasbaar" + +#: gofax/faxreports/class_faxreport.inc:493 +#, fuzzy +msgid "Fax reports" +msgstr "Fax rapporten" + +#: gofax/faxreports/class_faxreport.inc:498 +#, fuzzy +msgid "Detailed view" +msgstr "Geinstalleerde apparaten" + +#: gofax/faxreports/class_faxreport.inc:499 +#, fuzzy +msgid "Fax ID" +msgstr "Fax ID" + +#: gofax/faxreports/class_faxreport.inc:500 +#, fuzzy +msgid "Time" +msgstr "MIME" + +#: gofax/faxreports/class_faxreport.inc:506 +#, fuzzy +msgid "Number of pages" +msgstr "Naam van de afdeling" + +#: gofax/faxreports/class_faxreport.inc:507 +#, fuzzy +msgid "Status Message" +msgstr "Status bericht" + +#: gofax/blocklists/remove.tpl:2 +msgid "Warning" +msgstr "Waarschuwing" + +#: gofax/blocklists/remove.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Verzeker u ervan dat u dit daadwerkelijk wil doorvoeren, aangezien het " +"onmogelijk is voor GOsa om de data terug te halen." + +#: gofax/blocklists/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Indien u zeker bent drukt u dan 'Verwijderen' om door te gaan of 'Annuleren' " +"om te annuleren." + +#: gofax/blocklists/generic.tpl:1 gofax/faxaccount/generic.tpl:6 +#: gofax/faxaccount/paste_generic.tpl:4 +msgid "Generic" +msgstr "Algemeen" + +#: gofax/blocklists/generic.tpl:8 gofax/blocklists/paste_generic.tpl:3 +msgid "List name" +msgstr "Lijstnaam" + +#: gofax/blocklists/generic.tpl:12 gofax/blocklists/paste_generic.tpl:5 +msgid "Name of blocklist" +msgstr "Naam van de blokkeerlijst" + +#: gofax/blocklists/generic.tpl:17 +#: gofax/blocklists/class_divListBlocklists.inc:86 +#: gofax/blocklists/class_blocklistGeneric.inc:387 +msgid "Base" +msgstr "Basis" + +#: gofax/blocklists/generic.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Selecteer de subtree waaronder deze groep geplaatst wordt" + +#: gofax/blocklists/generic.tpl:26 +msgid "Select a base" +msgstr "Selecteer een basis" + +#: gofax/blocklists/generic.tpl:40 +msgid "Type" +msgstr "Type" + +#: gofax/blocklists/generic.tpl:43 +msgid "Select wether to filter incoming or outgoing calls" +msgstr "Selecteer of inkomende en uitgaande gesprekken gefilterd moeten worden" + +#: gofax/blocklists/generic.tpl:51 +#: gofax/blocklists/class_blocklistGeneric.inc:386 +msgid "Description" +msgstr "Omschrijving" + +#: gofax/blocklists/generic.tpl:54 +msgid "Descriptive text for this blocklist" +msgstr "Beschrijving van deze blokkeerlijst" + +#: gofax/blocklists/generic.tpl:68 +msgid "Blocked numbers" +msgstr "Geblokkeerde nummers" + +#: gofax/blocklists/generic.tpl:90 +msgid "Information" +msgstr "Informatie" + +#: gofax/blocklists/generic.tpl:92 +msgid "Numbers can also contain wild cards." +msgstr "Nummers kunnen ook wildcards (*?) bevatten." + +#: gofax/blocklists/class_divListBlocklists.inc:31 +#: gofax/blocklists/class_divListBlocklists.inc:32 +msgid "List of blocklists" +msgstr "Lijst met blokkeerlijsten" + +#: gofax/blocklists/class_divListBlocklists.inc:50 +#, fuzzy +msgid "Select all" +msgstr "Selecteer" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +#: gofax/blocklists/class_blocklistGeneric.inc:219 +#: gofax/blocklists/class_blocklistGeneric.inc:222 +#: gofax/blocklists/class_blocklistGeneric.inc:229 +#: gofax/blocklists/class_blocklistGeneric.inc:385 +msgid "Name" +msgstr "Naam" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +msgid "Department" +msgstr "Afdeling" + +#: gofax/blocklists/class_divListBlocklists.inc:57 +#: gofax/blocklists/class_divListBlocklists.inc:91 +msgid "Actions" +msgstr "Acties" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +#: gofax/faxaccount/class_gofaxAccount.inc:881 +#, fuzzy +msgid "Send blocklist" +msgstr "Toon verstuur blokkeerlijsten" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +msgid "Show send blocklists" +msgstr "Toon verstuur blokkeerlijsten" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +#: gofax/faxaccount/class_gofaxAccount.inc:880 +#, fuzzy +msgid "Receive blocklist" +msgstr "Toon ontvangst blokkeerlijsten" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +msgid "Show receive blocklists" +msgstr "Toon ontvangst blokkeerlijsten" + +#: gofax/blocklists/class_divListBlocklists.inc:67 +msgid "Regular expression for matching list names" +msgstr "Reguliere expressie voor overeenkomende lijstnamen" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit department" +msgstr "Verwerk afdeling" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit" +msgstr "Verwerk" + +#: gofax/blocklists/class_divListBlocklists.inc:96 +msgid "Create" +msgstr "Aanmaken" + +#: gofax/blocklists/class_divListBlocklists.inc:98 +#: gofax/blocklists/class_blocklistGeneric.inc:388 +#, fuzzy +msgid "Blocklist" +msgstr "Blokkeerlijsten" + +#: gofax/blocklists/class_divListBlocklists.inc:104 +msgid "Remove" +msgstr "Verwijderen" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "edit" +msgstr "Bewerk" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "Edit user" +msgstr "Bewerk gebruiker" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "delete" +msgstr "Verwijder" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "Delete user" +msgstr "Verwijder gebruiker" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Naam van de blokkeerlijst" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#, fuzzy +msgid "blocklists" +msgstr "Blokkeerlijsten" + +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy +msgid "departments" +msgstr "Afdeling" + +#: gofax/blocklists/class_blocklistManagement.inc:5 +#, fuzzy +msgid "FAX blocklists" +msgstr "Fax blokkades" + +#: gofax/blocklists/class_blocklistManagement.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Rechten" + +#: gofax/blocklists/class_blocklistManagement.inc:246 +#: gofax/blocklists/class_blocklistManagement.inc:307 +#, fuzzy +msgid "blocklist" +msgstr "Blokkeerlijsten" + +#: gofax/blocklists/main.inc:35 gofax/blocklists/main.inc:37 +msgid "Blocklist management" +msgstr "Blokkeerlijst beheer" + +#: gofax/blocklists/class_blocklistGeneric.inc:9 +#: gofax/blocklists/class_blocklistGeneric.inc:376 +#: gofax/blocklists/class_blocklistGeneric.inc:381 +#: gofax/blocklists/class_blocklistGeneric.inc:382 +#, fuzzy +msgid "Fax blocklists" +msgstr "Fax blokkades" + +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +#, fuzzy +msgid "Phone number" +msgstr "Geblokkeerde nummers" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "send" +msgstr "versturen" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "receive" +msgstr "ontvangen" + +#: gofax/blocklists/class_blocklistGeneric.inc:205 +#: gofax/blocklists/class_blocklistGeneric.inc:286 +#: gofax/faxaccount/class_gofaxAccount.inc:659 +#: gofax/faxaccount/class_gofaxAccount.inc:788 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: gofax/blocklists/class_blocklistGeneric.inc:375 +#: gofax/faxaccount/generic.tpl:10 gofax/faxaccount/paste_generic.tpl:8 +#: gofax/faxaccount/class_gofaxAccount.inc:863 +msgid "Fax" +msgstr "Fax" + +#: gofax/blocklists/class_blocklistGeneric.inc:389 +#, fuzzy +msgid "Blocklist type" +msgstr "Blokkeerlijst naam" + +#: gofax/faxaccount/locals.tpl:6 +msgid "Select numbers to add" +msgstr "Selecteer de toe te voegen nummers" + +#: gofax/faxaccount/locals.tpl:19 +msgid "Filters" +msgstr "Filters" + +#: gofax/faxaccount/locals.tpl:28 +msgid "Display numbers of department" +msgstr "Toon nummers van afdeling" + +#: gofax/faxaccount/locals.tpl:29 +msgid "Choose the department the search will be based on" +msgstr "Selecteer de afdeling waarbinnen gezocht zal worden" + +#: gofax/faxaccount/locals.tpl:38 +msgid "Display numbers matching" +msgstr "Toon de overeenkomende nummers" + +#: gofax/faxaccount/locals.tpl:41 +msgid "Regular expression for matching numbers" +msgstr "Reguliere expressie voor overeenkomende nummers" + +#: gofax/faxaccount/locals.tpl:47 +msgid "Display numbers of user" +msgstr "Toon nummers van gebruiker" + +#: gofax/faxaccount/locals.tpl:50 +msgid "User name of which numbers are shown" +msgstr "Gebruikersnaam van de gebruiker wiens nummers getoond worden" + +#: gofax/faxaccount/generic.tpl:13 +msgid "Multiple edit" +msgstr "" + +#: gofax/faxaccount/generic.tpl:17 gofax/faxaccount/paste_generic.tpl:13 +msgid "Fax number for GOfax to trigger on" +msgstr "Fax nummer waarop GOfax moet reageren" + +#: gofax/faxaccount/generic.tpl:24 gofax/faxaccount/class_gofaxAccount.inc:874 +msgid "Language" +msgstr "Taal" + +#: gofax/faxaccount/generic.tpl:29 +msgid "Specify the GOfax communication language for fax to mail gateway" +msgstr "Specificeer de GOfax communicatie taal voor de Fax naar E-mail gateway" + +#: gofax/faxaccount/generic.tpl:37 gofax/faxaccount/class_gofaxAccount.inc:875 +msgid "Delivery format" +msgstr "Aflever formaat" + +#: gofax/faxaccount/generic.tpl:41 +msgid "Specify delivery format for fax to mail gateway" +msgstr "Specificeer het aflever formaat voor de Fax naar E-mail gateway" + +#: gofax/faxaccount/generic.tpl:54 +msgid "Delivery methods" +msgstr "Aflever methodes" + +#: gofax/faxaccount/generic.tpl:59 +msgid "Temporary disable fax usage" +msgstr "Schakel Fax gebruik tijdelijk uit" + +#: gofax/faxaccount/generic.tpl:65 +msgid "Deliver fax as mail to" +msgstr "Lever Fax als E-mail af aan" + +#: gofax/faxaccount/generic.tpl:73 gofax/faxaccount/class_gofaxAccount.inc:878 +msgid "Deliver fax as mail" +msgstr "Lever Fax als E-mail af" + +#: gofax/faxaccount/generic.tpl:80 gofax/faxaccount/class_gofaxAccount.inc:879 +msgid "Deliver fax to printer" +msgstr "Lever Fax af op printer" + +#: gofax/faxaccount/generic.tpl:99 +msgid "Alternate fax numbers" +msgstr "Alternatieve Fax nummers" + +#: gofax/faxaccount/generic.tpl:114 +msgid "Add local" +msgstr "Lokaal toevoegen" + +#: gofax/faxaccount/generic.tpl:122 +msgid "Blocklists" +msgstr "Blokkeerlijsten" + +#: gofax/faxaccount/generic.tpl:125 +msgid "Blocklists for incoming fax" +msgstr "Blokkeerlijsten voor te ontvangen Faxen" + +#: gofax/faxaccount/generic.tpl:128 gofax/faxaccount/generic.tpl:136 +msgid "Edit" +msgstr "Bewerken" + +#: gofax/faxaccount/generic.tpl:133 +msgid "Blocklists for outgoing fax" +msgstr "Blokkeerlijsten voor te versturen Faxen" + +#: gofax/faxaccount/paste_generic.tpl:18 +#, fuzzy +msgid "Alternate fax numbers will not be copied" +msgstr "Alternatieve Fax nummers" + +#: gofax/faxaccount/main.inc:106 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Gebruik de 'Bewerk' knop hieronder om de informatie in deze dialoog te " +"veranderen" + +#: gofax/faxaccount/main.inc:115 +msgid "FAX settings" +msgstr "Fax instellingen" + +#: gofax/faxaccount/class_gofaxAccount.inc:6 +msgid "FAX" +msgstr "Fax" + +#: gofax/faxaccount/class_gofaxAccount.inc:165 +#: gofax/faxaccount/class_gofaxAccount.inc:175 +#: gofax/faxaccount/class_gofaxAccount.inc:178 +msgid "GOfax" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:174 +msgid "Remove fax account" +msgstr "Fax account verwijderen" + +#: gofax/faxaccount/class_gofaxAccount.inc:177 +msgid "Create fax account" +msgstr "Fax account aanmaken" + +#: gofax/faxaccount/class_gofaxAccount.inc:453 +#: gofax/faxaccount/class_gofaxAccount.inc:535 +msgid "back" +msgstr "terug" + +#: gofax/faxaccount/class_gofaxAccount.inc:675 +#: gofax/faxaccount/class_gofaxAccount.inc:679 +#: gofax/faxaccount/class_gofaxAccount.inc:873 +#, fuzzy +msgid "Fax number" +msgstr "Serienummer" + +#: gofax/faxaccount/class_gofaxAccount.inc:687 +msgid "Mail delivery is requested without target address!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +#, fuzzy +msgid "Mail address" +msgstr "Het E-mail adres dat u opgegeven heeft is ongeldig." + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "your-name@your-domain.com" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:695 +msgid "Printing is requested without a target printer!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:864 +#, fuzzy +msgid "Fax account settings" +msgstr "Samba Instellingen" + +#: gofax/faxaccount/class_gofaxAccount.inc:876 +#, fuzzy +msgid "Alternate fax number" +msgstr "Alternatieve Fax nummers" + +#: gofax/faxaccount/class_gofaxAccount.inc:877 +msgid "Enable/Disable fax" +msgstr "" + +#: gofax/faxaccount/lists.tpl:5 +msgid "Blocked numbers/lists" +msgstr "Geblokkeerde nummers/lijsten" + +#: gofax/faxaccount/lists.tpl:17 +msgid "List of predefined blocklists" +msgstr "Lijst met voorgedefiniëerde blokkeerlijstn" + +#: gofax/faxaccount/lists.tpl:25 +msgid "Add the list to the blocklists" +msgstr "Voeg de lijst toe aan de blokkeerlijsten" + +#: admin/systems/services/gofax/class_goFaxServer.inc:30 +msgid "FAX database" +msgstr "FAX database" + +#: admin/systems/services/gofax/class_goFaxServer.inc:59 +#, fuzzy +msgid "FAX database configuration" +msgstr "FAX database" + +#: admin/systems/services/gofax/class_goFaxServer.inc:71 +#: admin/systems/services/gofax/class_goFaxServer.inc:98 +#: admin/systems/services/gofax/goFaxServer.tpl:12 +msgid "Password" +msgstr "Wachtwoord" + +#: admin/systems/services/gofax/class_goFaxServer.inc:88 +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +#, fuzzy +msgid "Fax database" +msgstr "FAX database" + +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/gofax/class_goFaxServer.inc:97 +#, fuzzy +msgid "Login name" +msgstr "Naam van de locatie" + +#: admin/systems/services/gofax/goFaxServer.tpl:1 +#, fuzzy +msgid "FAX database information" +msgstr "Free Busy informatie" + +#: admin/systems/services/gofax/goFaxServer.tpl:4 +msgid "FAX DB user" +msgstr "FAX DB gebruiker" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopieer" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "knippen" + +#~ msgid "Paste" +#~ msgstr "Plakken" + +#~ msgid "cut" +#~ msgstr "knippen" + +#~ msgid "Cut this entry" +#~ msgstr "Deze invoer knippen" + +#~ msgid "copy" +#~ msgstr "kopieer" + +#~ msgid "Copy this entry" +#~ msgstr "Deze invoer kopieren" + +#, fuzzy +#~ msgid "Faxi number" +#~ msgstr "Serienummer" + +#~ msgid "This account has no fax extensions." +#~ msgstr "Dit account heeft geen Fax mogelijkheden." + +#~ msgid "" +#~ "This account has fax features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Dit account heeft Fax mogelijkheden ingeschakeld. U kunt deze " +#~ "uitschakelen door de knop hieronder te gebruiken." + +#~ msgid "" +#~ "This account has fax features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Dit account heeft Fax mogelijkheden uitgeschakeld. U kunt deze " +#~ "inschakelen door de knop hieronder te gebruiken." + +#, fuzzy +#~ msgid "Fax is empty!" +#~ msgstr "Fax rapporten" + +#~ msgid "Blocklist name" +#~ msgstr "Blokkeerlijst naam" + +#~ msgid "Select to see send blocklists" +#~ msgstr "Selecteer om de verstuur blokkeerlijsten te zien" + +#~ msgid "Select to see receive blocklists" +#~ msgstr "Selecteer om de ontvangst blokkeerlijsten te zien" + +#~ msgid "Select to search within subtrees" +#~ msgstr "Selecteer om binnen subonderdelen te zoeken" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Zoek binnen subtree" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#, fuzzy +#~ msgid "The attribute user is empty or contains invalid characters." +#~ msgstr "Het atribuut '%s' is leeg of bevat ongeldige karakters!" + +#, fuzzy +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "Het atribuut '%s' is leeg of bevat ongeldige karakters!" + +#~ msgid "Back" +#~ msgstr "Terug" + +#~ msgid "Add" +#~ msgstr "Toevoegen" + +#~ msgid "Delete" +#~ msgstr "Verwijderen" + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#, fuzzy +#~ msgid "Name contains invalid characters!" +#~ msgstr "Vereist veld 'Naam' bevat ongeldige karakters" + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "De opgegeven naam wordt al gebruikt." + +#~ msgid "" +#~ "This menu allows you to create, delete and edit selected blocklists. " +#~ "Having a large size of lists, you might prefer the range selectors on top " +#~ "of the select box." +#~ msgstr "" +#~ "Dit menu maakt het mogelijk om geselecteerde blokkeerlijsten toe te " +#~ "voegen, bewerken of verwijderen. Indien u veel blokkeerlijsten heeft is " +#~ "het aan te raden de selectie mogelijkheden te gebruiken." + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Naam van de afdeling" + +#, fuzzy +#~ msgid "You're about to delete the following blocklists(s) %s" +#~ msgstr "U staat op het punt blokkeerlijst '%s' te verwijderen." + +#, fuzzy +#~ msgid "You have not permission to delete '%s'!" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#~ msgid "You're about to delete the blocklist '%s'." +#~ msgstr "U staat op het punt blokkeerlijst '%s' te verwijderen." + +#, fuzzy +#~ msgid "You have not permission to delete this entry!" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "Removing of user/fax account with dn '%s' failed." +#~ msgstr "Het verwijderen van het algemene gebruikers account is mislukt" + +#, fuzzy +#~ msgid "Saving of user/fax account with dn '%s' failed." +#~ msgstr "Het opslaan van het algemene gerbuikers account is mislukt" + +#, fuzzy +#~ msgid "Removing of blocklist with dn '%s' failed." +#~ msgstr "Het verwijderen van het blokeerlijst object is mislukt" + +#, fuzzy +#~ msgid "Saving of blocklist with dn '%s' failed." +#~ msgstr "Het opslaan van het blokkeerlijst object is mislukt" + +#~ msgid "You're trying to add an invalid phone number." +#~ msgstr "U probeert een ongeldig telefoonnummer toe te voegen." + +#~ msgid "The required field 'Fax' is not set." +#~ msgstr "Het vereiste veld 'Fax' is leeg." + +#~ msgid "Please enter a valid telephone number in the 'Fax' field." +#~ msgstr "Voer a.u.b. een geldig Fax nummer bij het 'Fax' veld in." + +#~ msgid "Mail delivery is checked, but no address has been specified." +#~ msgstr "E-mail aflevering staat aan, alleen is er geen adres opgegeven." + +#~ msgid "" +#~ "Deliver fax to printer, is only possible if valid printer is given. " +#~ "Please correct your choice." +#~ msgstr "" +#~ "Fax afleveren op een printer is alleen mogelijk indien een geldige " +#~ "printer is opgegeven. Corrigeer uw keuze a.u.b." + +#~ msgid "There is no mysql extension available, please check your php setup." +#~ msgstr "" +#~ "Er is geen MySQL extensie beschikbaar. Controleer uw PHP installatie a.u." +#~ "b." + +#~ msgid "Can't select fax database for report generation!" +#~ msgstr "Kan de Fax database voor rapportage niet selecteren!" + +#, fuzzy +#~ msgid "Can't query fax table 'faxlog' for report generation!" +#~ msgstr "Kan de Fax database voor rapportage niet selecteren!" + +#~ msgid "Query for fax database failed!" +#~ msgstr "De zoekopdracht op de Fax database is mislukt!" + +#~ msgid "You have no permission to retrieve informations about this fax id!" +#~ msgstr "" +#~ "U heeft geen toestemming om informatie over dit Fax ID op te vragen!" + +#, fuzzy +#~ msgid "You are not allowed to delete the blocklist '%s'!" +#~ msgstr "U heeft geen toestemming om deze gebruiker te verwijderen!" + +#~ msgid "Please specify a valid phone number." +#~ msgstr "Geef a.u.b. een geldig telefoonnummer op." + +#~ msgid "Required field 'Name' is not set." +#~ msgstr "Vereist veld 'Naam' is leeg." diff --git a/trunk/gosa-plugins/gofax/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofax/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..6d17f7bda --- /dev/null +++ b/trunk/gosa-plugins/gofax/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,890 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: html/getfax.php:56 +msgid "Could not connect to database server!" +msgstr "Nie można połączyć się z serwerem baz danych!" + +#: html/getfax.php:58 +msgid "Could not select database!" +msgstr "Nie można wybrać bazy danych!" + +#: html/getfax.php:63 html/getfax.php:71 +msgid "Database query failed!" +msgstr "Zapytanie do bazy danych nieudane" + +#: gofax/faxreports/detail.tpl:5 +msgid "FAX preview - please wait" +msgstr "Podgląd FAXu - proszę poczekać" + +#: gofax/faxreports/detail.tpl:8 +msgid "Click on fax to download" +msgstr "Kliknij na fax aby pobrać" + +#: gofax/faxreports/detail.tpl:17 +msgid "FAX ID" +msgstr "FAX ID" + +#: gofax/faxreports/detail.tpl:21 gofax/faxreports/contents.tpl:30 +#: admin/systems/services/gofax/class_goFaxServer.inc:68 +msgid "User" +msgstr "Użytkownik" + +#: gofax/faxreports/detail.tpl:25 +msgid "Date / Time" +msgstr "Data/Czas" + +#: gofax/faxreports/detail.tpl:29 gofax/faxreports/class_faxreport.inc:503 +msgid "Sender MSN" +msgstr "MSN nadawcy" + +#: gofax/faxreports/detail.tpl:33 gofax/faxreports/class_faxreport.inc:502 +msgid "Sender ID" +msgstr "ID nadawcy" + +#: gofax/faxreports/detail.tpl:37 gofax/faxreports/class_faxreport.inc:505 +msgid "Receiver MSN" +msgstr "MSN odbiorcy" + +#: gofax/faxreports/detail.tpl:41 gofax/faxreports/class_faxreport.inc:504 +msgid "Receiver ID" +msgstr "ID odbiorcy" + +#: gofax/faxreports/detail.tpl:45 gofax/faxreports/contents.tpl:32 +#: gofax/faxreports/class_faxreport.inc:501 +msgid "Status" +msgstr "Status" + +#: gofax/faxreports/detail.tpl:49 +msgid "Status message" +msgstr "Informacja o statusie" + +#: gofax/faxreports/detail.tpl:53 gofax/faxreports/class_faxreport.inc:508 +msgid "Transfer time" +msgstr "Czas transferu" + +#: gofax/faxreports/detail.tpl:57 gofax/faxreports/contents.tpl:35 +msgid "# pages" +msgstr "# stron" + +#: gofax/faxreports/main.inc:19 +msgid "FAX reports" +msgstr "Raporty FAX" + +#: gofax/faxreports/contents.tpl:2 +msgid "Filter" +msgstr "Filtr" + +#: gofax/faxreports/contents.tpl:6 +msgid "Search for" +msgstr "Szukaj dla" + +#: gofax/faxreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Wprowadź poszukiwaną nazwę użytkownika" + +#: gofax/faxreports/contents.tpl:8 gofax/faxreports/contents.tpl:16 +msgid "in" +msgstr "w" + +#: gofax/faxreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Wybierz poddrzewo od którego zacząć szukanie" + +#: gofax/faxreports/contents.tpl:12 +msgid "during" +msgstr "podczas" + +#: gofax/faxreports/contents.tpl:21 +msgid "Search" +msgstr "Szukaj" + +#: gofax/faxreports/contents.tpl:31 gofax/faxreports/class_faxreport.inc:500 +msgid "Date" +msgstr "Data" + +#: gofax/faxreports/contents.tpl:33 +msgid "Sender" +msgstr "Nadawca" + +#: gofax/faxreports/contents.tpl:34 +msgid "Receiver" +msgstr "Odbiorca" + +#: gofax/faxreports/contents.tpl:50 +msgid "Search returned no results..." +msgstr "Wyszukiwanie nie zwróciło żadnych wyników..." + +#: gofax/faxreports/class_faxreport.inc:6 +msgid "FAX Reports" +msgstr "Raporty FAX" + +#: gofax/faxreports/class_faxreport.inc:7 +#: gofax/blocklists/class_blocklistManagement.inc:6 +#: gofax/blocklists/class_blocklistGeneric.inc:10 +#: gofax/faxaccount/class_gofaxAccount.inc:7 +msgid "This does something" +msgstr "To robi coś" + +#: gofax/faxreports/class_faxreport.inc:116 +#: gofax/faxreports/class_faxreport.inc:126 +#: gofax/faxreports/class_faxreport.inc:130 +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Error" +msgstr "Błąd" + +#: gofax/faxreports/class_faxreport.inc:116 +msgid "No fax server found!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy +msgid "Configuration error" +msgstr "Plik konfiguracyjny" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Rozszerzenie inwentarza" + +#: gofax/faxreports/class_faxreport.inc:126 +#, fuzzy, php-format +msgid "Cannot connect to %s database!" +msgstr "Nie można połączyć się z bazą fax, nie można pokazać żadnych raportów!" + +#: gofax/faxreports/class_faxreport.inc:130 +#, fuzzy, php-format +msgid "Cannot select %s database!" +msgstr "Nie można wybrać bazy danych!" + +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#, fuzzy, php-format +msgid "Cannot query %s database!" +msgstr "Nie można wybrać bazy danych!" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#: gofax/blocklists/class_blocklistManagement.inc:269 +#: gofax/blocklists/class_blocklistManagement.inc:326 +#, fuzzy +msgid "Permission error" +msgstr "Uprawnienia" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#, fuzzy +msgid "You have no permission to view this fax id!" +msgstr "Brak uprawnień do usunięcia tej bloklisty." + +#: gofax/faxreports/class_faxreport.inc:208 +#: gofax/faxreports/class_faxreport.inc:329 +msgid "Y-M-D" +msgstr "R-M-D" + +#: gofax/faxreports/class_faxreport.inc:323 +#, fuzzy +msgid "Insufficient permissions to view this attribute" +msgstr "Brak uprawnień do zmian atrybutu '%s' w goFonMacro." + +#: gofax/faxreports/class_faxreport.inc:323 +#, fuzzy +msgid "Insufficient permissions" +msgstr "Uprawnienia pliku" + +#: gofax/faxreports/class_faxreport.inc:487 +#: gofax/faxreports/class_faxreport.inc:488 +msgid "Fax report" +msgstr "Raport FAX" + +#: gofax/faxreports/class_faxreport.inc:488 +#, fuzzy +msgid "All entries are readonly" +msgstr "Wszystkie pola są zapisywalne" + +#: gofax/faxreports/class_faxreport.inc:493 +#, fuzzy +msgid "Fax reports" +msgstr "Raport FAX" + +#: gofax/faxreports/class_faxreport.inc:498 +msgid "Detailed view" +msgstr "Widok szczegółowy" + +#: gofax/faxreports/class_faxreport.inc:499 +#, fuzzy +msgid "Fax ID" +msgstr "FAX ID" + +#: gofax/faxreports/class_faxreport.inc:500 +#, fuzzy +msgid "Time" +msgstr "Mime" + +#: gofax/faxreports/class_faxreport.inc:506 +#, fuzzy +msgid "Number of pages" +msgstr "Nazwa departamentu" + +#: gofax/faxreports/class_faxreport.inc:507 +#, fuzzy +msgid "Status Message" +msgstr "Informacja o statusie" + +#: gofax/blocklists/remove.tpl:2 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: gofax/blocklists/remove.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Proszę upewnić się, że faktycznie chcesz wykonać tą operację. Nie ma " +"możliwości odwrócenia tego procesu." + +#: gofax/blocklists/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Jeśli jesteś pewien - naciśnij 'Usuń' aby kontynuować lub 'Anuluj' aby " +"anulować." + +#: gofax/blocklists/generic.tpl:1 gofax/faxaccount/generic.tpl:6 +#: gofax/faxaccount/paste_generic.tpl:4 +msgid "Generic" +msgstr "Ogólne" + +#: gofax/blocklists/generic.tpl:8 gofax/blocklists/paste_generic.tpl:3 +msgid "List name" +msgstr "Nazwa listy" + +#: gofax/blocklists/generic.tpl:12 gofax/blocklists/paste_generic.tpl:5 +msgid "Name of blocklist" +msgstr "Nazwa bloklisty" + +#: gofax/blocklists/generic.tpl:17 +#: gofax/blocklists/class_divListBlocklists.inc:86 +#: gofax/blocklists/class_blocklistGeneric.inc:387 +msgid "Base" +msgstr "Kontener" + +#: gofax/blocklists/generic.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Wybierz poddrzewo do umieszczenia grupy" + +#: gofax/blocklists/generic.tpl:26 +msgid "Select a base" +msgstr "Wybierz bazę" + +#: gofax/blocklists/generic.tpl:40 +msgid "Type" +msgstr "Typ" + +#: gofax/blocklists/generic.tpl:43 +msgid "Select wether to filter incoming or outgoing calls" +msgstr "Wybierz, czy filtrować nadchodzące czy przychodzące rozmowy" + +#: gofax/blocklists/generic.tpl:51 +#: gofax/blocklists/class_blocklistGeneric.inc:386 +msgid "Description" +msgstr "Opis" + +#: gofax/blocklists/generic.tpl:54 +msgid "Descriptive text for this blocklist" +msgstr "Opis tej bloklisty" + +#: gofax/blocklists/generic.tpl:68 +msgid "Blocked numbers" +msgstr "Blokowane numery" + +#: gofax/blocklists/generic.tpl:90 +msgid "Information" +msgstr "Informacja" + +#: gofax/blocklists/generic.tpl:92 +msgid "Numbers can also contain wild cards." +msgstr "Numery mogą również zawierać maski" + +#: gofax/blocklists/class_divListBlocklists.inc:31 +#: gofax/blocklists/class_divListBlocklists.inc:32 +msgid "List of blocklists" +msgstr "Lista bloklist" + +#: gofax/blocklists/class_divListBlocklists.inc:50 +#, fuzzy +msgid "Select all" +msgstr "Wybierz" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +#: gofax/blocklists/class_blocklistGeneric.inc:219 +#: gofax/blocklists/class_blocklistGeneric.inc:222 +#: gofax/blocklists/class_blocklistGeneric.inc:229 +#: gofax/blocklists/class_blocklistGeneric.inc:385 +msgid "Name" +msgstr "Imię" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +msgid "Department" +msgstr "Departament" + +#: gofax/blocklists/class_divListBlocklists.inc:57 +#: gofax/blocklists/class_divListBlocklists.inc:91 +msgid "Actions" +msgstr "Akcje" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +#: gofax/faxaccount/class_gofaxAccount.inc:881 +msgid "Send blocklist" +msgstr "Bloklista wysyłania" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +msgid "Show send blocklists" +msgstr "Pokaż bloklisty wysyłania" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +#: gofax/faxaccount/class_gofaxAccount.inc:880 +msgid "Receive blocklist" +msgstr "Bloklista otrzymywania" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +msgid "Show receive blocklists" +msgstr "Pokaż bloklisty otrzymywania" + +#: gofax/blocklists/class_divListBlocklists.inc:67 +msgid "Regular expression for matching list names" +msgstr "Wyrażenie regularne do dopasowania nazw list" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit department" +msgstr "Zatwierdź departament" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit" +msgstr "Wyślij" + +#: gofax/blocklists/class_divListBlocklists.inc:96 +msgid "Create" +msgstr "Utwórz" + +#: gofax/blocklists/class_divListBlocklists.inc:98 +#: gofax/blocklists/class_blocklistGeneric.inc:388 +#, fuzzy +msgid "Blocklist" +msgstr "Bloklisty" + +#: gofax/blocklists/class_divListBlocklists.inc:104 +msgid "Remove" +msgstr "Usuń" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "edit" +msgstr "edytuj" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "Edit user" +msgstr "Edytuj użytkownika" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "delete" +msgstr "Usuń" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "Delete user" +msgstr "Usuń użytkownika" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Nazwa bloklisty" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#, fuzzy +msgid "blocklists" +msgstr "Bloklisty" + +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy +msgid "departments" +msgstr "Departament" + +#: gofax/blocklists/class_blocklistManagement.inc:5 +#, fuzzy +msgid "FAX blocklists" +msgstr "Bloklisty FAX" + +#: gofax/blocklists/class_blocklistManagement.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Uprawnienia" + +#: gofax/blocklists/class_blocklistManagement.inc:246 +#: gofax/blocklists/class_blocklistManagement.inc:307 +#, fuzzy +msgid "blocklist" +msgstr "Bloklisty" + +#: gofax/blocklists/main.inc:35 gofax/blocklists/main.inc:37 +msgid "Blocklist management" +msgstr "Zarządzanie bloklistą" + +#: gofax/blocklists/class_blocklistGeneric.inc:9 +#: gofax/blocklists/class_blocklistGeneric.inc:376 +#: gofax/blocklists/class_blocklistGeneric.inc:381 +#: gofax/blocklists/class_blocklistGeneric.inc:382 +#, fuzzy +msgid "Fax blocklists" +msgstr "Bloklisty FAX" + +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +#, fuzzy +msgid "Phone number" +msgstr "Blokowane numery" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "send" +msgstr "wysyłanie" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "receive" +msgstr "odbieranie" + +#: gofax/blocklists/class_blocklistGeneric.inc:205 +#: gofax/blocklists/class_blocklistGeneric.inc:286 +#: gofax/faxaccount/class_gofaxAccount.inc:659 +#: gofax/faxaccount/class_gofaxAccount.inc:788 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: gofax/blocklists/class_blocklistGeneric.inc:375 +#: gofax/faxaccount/generic.tpl:10 gofax/faxaccount/paste_generic.tpl:8 +#: gofax/faxaccount/class_gofaxAccount.inc:863 +msgid "Fax" +msgstr "Fax" + +#: gofax/blocklists/class_blocklistGeneric.inc:389 +msgid "Blocklist type" +msgstr "Typ bloklisty" + +#: gofax/faxaccount/locals.tpl:6 +msgid "Select numbers to add" +msgstr "Wybierz numery do dodania" + +#: gofax/faxaccount/locals.tpl:19 +msgid "Filters" +msgstr "Filtry" + +#: gofax/faxaccount/locals.tpl:28 +msgid "Display numbers of department" +msgstr "Wyświetl numery departamentu" + +#: gofax/faxaccount/locals.tpl:29 +msgid "Choose the department the search will be based on" +msgstr "Wybierz departament na którym wyszukiwanie będzie bazować" + +#: gofax/faxaccount/locals.tpl:38 +msgid "Display numbers matching" +msgstr "Wyświetl numery pasujące" + +#: gofax/faxaccount/locals.tpl:41 +msgid "Regular expression for matching numbers" +msgstr "Wyrażenie regularne dla dopasowania numerów" + +#: gofax/faxaccount/locals.tpl:47 +msgid "Display numbers of user" +msgstr "Wyświetl numery użytkownika" + +#: gofax/faxaccount/locals.tpl:50 +msgid "User name of which numbers are shown" +msgstr "Nazwa użytkownika którego numery są pokazane" + +#: gofax/faxaccount/generic.tpl:13 +msgid "Multiple edit" +msgstr "" + +#: gofax/faxaccount/generic.tpl:17 gofax/faxaccount/paste_generic.tpl:13 +msgid "Fax number for GOfax to trigger on" +msgstr "Numer faxu dla GOfax dla przełączenia" + +#: gofax/faxaccount/generic.tpl:24 gofax/faxaccount/class_gofaxAccount.inc:874 +msgid "Language" +msgstr "Język" + +#: gofax/faxaccount/generic.tpl:29 +msgid "Specify the GOfax communication language for fax to mail gateway" +msgstr "Podaj język komunikacji GOfax dla bramki fax2mail" + +#: gofax/faxaccount/generic.tpl:37 gofax/faxaccount/class_gofaxAccount.inc:875 +msgid "Delivery format" +msgstr "Format dostarczania" + +#: gofax/faxaccount/generic.tpl:41 +msgid "Specify delivery format for fax to mail gateway" +msgstr "Podaj format dostarczania dla bramki fax-mail" + +#: gofax/faxaccount/generic.tpl:54 +msgid "Delivery methods" +msgstr "Metody dostarczania" + +#: gofax/faxaccount/generic.tpl:59 +msgid "Temporary disable fax usage" +msgstr "Tymczasowo zablokuj używanie faxu" + +#: gofax/faxaccount/generic.tpl:65 +msgid "Deliver fax as mail to" +msgstr "Dostarcz fax jako pocztę do" + +#: gofax/faxaccount/generic.tpl:73 gofax/faxaccount/class_gofaxAccount.inc:878 +msgid "Deliver fax as mail" +msgstr "Dostarcz fax jako pocztę" + +#: gofax/faxaccount/generic.tpl:80 gofax/faxaccount/class_gofaxAccount.inc:879 +msgid "Deliver fax to printer" +msgstr "Dostarcz fax na drukarkę" + +#: gofax/faxaccount/generic.tpl:99 +msgid "Alternate fax numbers" +msgstr "Alternatywne numery faxu" + +#: gofax/faxaccount/generic.tpl:114 +msgid "Add local" +msgstr "Dodaj lokalne" + +#: gofax/faxaccount/generic.tpl:122 +msgid "Blocklists" +msgstr "Bloklisty" + +#: gofax/faxaccount/generic.tpl:125 +msgid "Blocklists for incoming fax" +msgstr "Bloklisty dla nadchodzących faxów" + +#: gofax/faxaccount/generic.tpl:128 gofax/faxaccount/generic.tpl:136 +msgid "Edit" +msgstr "Edytuj" + +#: gofax/faxaccount/generic.tpl:133 +msgid "Blocklists for outgoing fax" +msgstr "Bloklisty dla wychodzących faxów" + +#: gofax/faxaccount/paste_generic.tpl:18 +#, fuzzy +msgid "Alternate fax numbers will not be copied" +msgstr "Alternatywne numery faxu" + +#: gofax/faxaccount/main.inc:106 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "Kliknij przycisk 'Edytuj' poniżej, aby zmienić informacje w tym oknie" + +#: gofax/faxaccount/main.inc:115 +msgid "FAX settings" +msgstr "Ustawienia FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:6 +msgid "FAX" +msgstr "FAX" + +#: gofax/faxaccount/class_gofaxAccount.inc:165 +#: gofax/faxaccount/class_gofaxAccount.inc:175 +#: gofax/faxaccount/class_gofaxAccount.inc:178 +msgid "GOfax" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:174 +msgid "Remove fax account" +msgstr "Usuń konto fax" + +#: gofax/faxaccount/class_gofaxAccount.inc:177 +msgid "Create fax account" +msgstr "Utwórz konto fax" + +#: gofax/faxaccount/class_gofaxAccount.inc:453 +#: gofax/faxaccount/class_gofaxAccount.inc:535 +msgid "back" +msgstr "wróć" + +#: gofax/faxaccount/class_gofaxAccount.inc:675 +#: gofax/faxaccount/class_gofaxAccount.inc:679 +#: gofax/faxaccount/class_gofaxAccount.inc:873 +msgid "Fax number" +msgstr "Numer fax" + +#: gofax/faxaccount/class_gofaxAccount.inc:687 +msgid "Mail delivery is requested without target address!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +#, fuzzy +msgid "Mail address" +msgstr "Adres email który podano jest nieprawidłowy." + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "your-name@your-domain.com" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:695 +msgid "Printing is requested without a target printer!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:864 +msgid "Fax account settings" +msgstr "Ustawienia konta fax" + +#: gofax/faxaccount/class_gofaxAccount.inc:876 +#, fuzzy +msgid "Alternate fax number" +msgstr "Alternatywne numery faxu" + +#: gofax/faxaccount/class_gofaxAccount.inc:877 +msgid "Enable/Disable fax" +msgstr "Włącz/Wyłącz fax" + +#: gofax/faxaccount/lists.tpl:5 +msgid "Blocked numbers/lists" +msgstr "Zablokowane numery/listy" + +#: gofax/faxaccount/lists.tpl:17 +msgid "List of predefined blocklists" +msgstr "Lista predefiniowanych bloklist" + +#: gofax/faxaccount/lists.tpl:25 +msgid "Add the list to the blocklists" +msgstr "Dodaj listę do bloklisty" + +#: admin/systems/services/gofax/class_goFaxServer.inc:30 +msgid "FAX database" +msgstr "Baza FAX" + +#: admin/systems/services/gofax/class_goFaxServer.inc:59 +msgid "FAX database configuration" +msgstr "Konfiguracja bazy FAX" + +#: admin/systems/services/gofax/class_goFaxServer.inc:71 +#: admin/systems/services/gofax/class_goFaxServer.inc:98 +#: admin/systems/services/gofax/goFaxServer.tpl:12 +msgid "Password" +msgstr "Hasło" + +#: admin/systems/services/gofax/class_goFaxServer.inc:88 +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +#, fuzzy +msgid "Fax database" +msgstr "Baza FAX" + +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/gofax/class_goFaxServer.inc:97 +msgid "Login name" +msgstr "Nazwa login" + +#: admin/systems/services/gofax/goFaxServer.tpl:1 +msgid "FAX database information" +msgstr "Informacje bazy FAX" + +#: admin/systems/services/gofax/goFaxServer.tpl:4 +msgid "FAX DB user" +msgstr "Użytkownik bazy FAX" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopiuj" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "wytnij" + +#~ msgid "Paste" +#~ msgstr "Wklej" + +#~ msgid "cut" +#~ msgstr "wytnij" + +#~ msgid "Cut this entry" +#~ msgstr "Wytnij ten obiekt" + +#~ msgid "copy" +#~ msgstr "kopiuj" + +#~ msgid "Copy this entry" +#~ msgstr "Kopiuj ten obiekt" + +#, fuzzy +#~ msgid "Faxi number" +#~ msgstr "Numer fax" + +#~ msgid "This account has no fax extensions." +#~ msgstr "To konto nie posiada rozszerzenia fax" + +#~ msgid "" +#~ "This account has fax features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "To konto ma włączone cechu fax. Można je wyłączyć klikając poniżej." + +#~ msgid "" +#~ "This account has fax features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "To konto ma wyłączone cechy faxu. Można je włączyć klikając poniżej." + +#, fuzzy +#~ msgid "Fax is empty!" +#~ msgstr "Raport FAX" + +#~ msgid "Blocklist name" +#~ msgstr "Nazwa bloklisty" + +#~ msgid "Select to see send blocklists" +#~ msgstr "Wybierz aby zobaczyć bloklisty wysyłania" + +#~ msgid "Select to see receive blocklists" +#~ msgstr "Wybierz aby zobaczyć bloklisty odbierania" + +#~ msgid "Select to search within subtrees" +#~ msgstr "Zaznacz aby wyszukiwać wewnątrz poddrzew" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Szukaj wewnątrz tego poddrzewa" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "The attribute user is empty or contains invalid characters." +#~ msgstr "Atrybut użytkownik jest pusty lub zawiera nieprawidłowe znaki." + +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "Atrybut hasło jest pusty lub zawiera nieprawidłowe znaki." + +#~ msgid "Back" +#~ msgstr "Wróć" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "Ok" +#~ msgstr "Ok" + +#, fuzzy +#~ msgid "Name contains invalid characters!" +#~ msgstr "Wymaganie pole 'Nazwa' zawiera niedozwolone znaki" + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "Podana nazwa jest już używana." + +#~ msgid "" +#~ "This menu allows you to create, delete and edit selected blocklists. " +#~ "Having a large size of lists, you might prefer the range selectors on top " +#~ "of the select box." +#~ msgstr "" +#~ "To menu umożliwia tworzenie, usuwanie oraz edycję wybranych bloklist. " +#~ "Posiadając duże listy, może okazać się wygodniejsze korzystanie z " +#~ "selektorów zakresu na górze." + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Nazwa departamentu" + +#, fuzzy +#~ msgid "You're about to delete the following blocklists(s) %s" +#~ msgstr "Zamierzasz usunąć bloklistę '%s'." + +#, fuzzy +#~ msgid "You have not permission to delete '%s'!" +#~ msgstr "Brak uprawnień do usunięcia tej bloklisty." + +#~ msgid "You're about to delete the blocklist '%s'." +#~ msgstr "Zamierzasz usunąć bloklistę '%s'." + +#, fuzzy +#~ msgid "You have not permission to delete this entry!" +#~ msgstr "Brak uprawnień do usunięcia tej bloklisty." + +#~ msgid "Removing of user/fax account with dn '%s' failed." +#~ msgstr "Usuwanie konta fax z dn '%s' nieudane." + +#~ msgid "Saving of user/fax account with dn '%s' failed." +#~ msgstr "Zapisywanie konta fax z dn '%s' nieudane." + +#~ msgid "Removing of blocklist with dn '%s' failed." +#~ msgstr "Usuwanie bloklisty z dn '%s' nieudane." + +#~ msgid "Saving of blocklist with dn '%s' failed." +#~ msgstr "Zapisywanie bloklisty z dn '%s' nieudane." + +#~ msgid "You're trying to add an invalid phone number." +#~ msgstr "Nieprawidłowy numer telefonu." + +#~ msgid "The required field 'Fax' is not set." +#~ msgstr "Wymagane pole 'fax' jest puste." + +#~ msgid "Please enter a valid telephone number in the 'Fax' field." +#~ msgstr "Proszę podać prawidłowy numer telefonu w polu 'Fax'." + +#~ msgid "Mail delivery is checked, but no address has been specified." +#~ msgstr "Dostarczanie poczty jest włączone, ale nie podano adresu." + +#~ msgid "" +#~ "Deliver fax to printer, is only possible if valid printer is given. " +#~ "Please correct your choice." +#~ msgstr "" +#~ "Dostarczanie faxu do drukarki jest możliwe jedynie gdy istnieje " +#~ "prawidłowa drukarka. Proszę poprawić." + +#~ msgid "There is no mysql extension available, please check your php setup." +#~ msgstr "Brak rozszerzenia mysql, proszę sprawdzić ustawienia php." + +#~ msgid "Can't select fax database for report generation!" +#~ msgstr "Nie można wybrać bazy fax aby generować raport!" + +#, fuzzy +#~ msgid "Can't query fax table 'faxlog' for report generation!" +#~ msgstr "Nie można wybrać bazy fax aby generować raport!" + +#~ msgid "Query for fax database failed!" +#~ msgstr "Zapytanie do bazy fax nieudane!" + +#~ msgid "You have no permission to retrieve informations about this fax id!" +#~ msgstr "Brak uprawnień do pobierania informacji o tym faxie!" + +#, fuzzy +#~ msgid "You are not allowed to delete the blocklist '%s'!" +#~ msgstr "Brak uprawnień do usunięcia tego użytkownika!" + +#~ msgid "Please specify a valid phone number." +#~ msgstr "Proszę podać prawidłowy numer telefonu." + +#~ msgid "Required field 'Name' is not set." +#~ msgstr "Wymagane pole 'Nazwa' jest puste." diff --git a/trunk/gosa-plugins/gofax/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofax/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..3cfd773de --- /dev/null +++ b/trunk/gosa-plugins/gofax/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,911 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: html/getfax.php:56 +msgid "Could not connect to database server!" +msgstr "Невозможно подключиться к серверу базы данных!" + +#: html/getfax.php:58 +msgid "Could not select database!" +msgstr "Невозможно выбрать базу данных!" + +#: html/getfax.php:63 html/getfax.php:71 +msgid "Database query failed!" +msgstr "Невозможно выполнить запрос к базе данных!" + +#: gofax/faxreports/detail.tpl:5 +msgid "FAX preview - please wait" +msgstr "Предварительный просмотр - пожалуйста, подождите" + +#: gofax/faxreports/detail.tpl:8 +msgid "Click on fax to download" +msgstr "Щелкните по факсу, чтобы загрузить его" + +#: gofax/faxreports/detail.tpl:17 +msgid "FAX ID" +msgstr "Идентификатор факса" + +#: gofax/faxreports/detail.tpl:21 gofax/faxreports/contents.tpl:30 +#: admin/systems/services/gofax/class_goFaxServer.inc:68 +msgid "User" +msgstr "Пользователь" + +#: gofax/faxreports/detail.tpl:25 +msgid "Date / Time" +msgstr "Дата / время" + +#: gofax/faxreports/detail.tpl:29 gofax/faxreports/class_faxreport.inc:503 +msgid "Sender MSN" +msgstr "MSN отправителя" + +#: gofax/faxreports/detail.tpl:33 gofax/faxreports/class_faxreport.inc:502 +msgid "Sender ID" +msgstr "Идентификатор отправителя" + +#: gofax/faxreports/detail.tpl:37 gofax/faxreports/class_faxreport.inc:505 +msgid "Receiver MSN" +msgstr "MSN получателя" + +#: gofax/faxreports/detail.tpl:41 gofax/faxreports/class_faxreport.inc:504 +msgid "Receiver ID" +msgstr "Идентификатор получателя" + +#: gofax/faxreports/detail.tpl:45 gofax/faxreports/contents.tpl:32 +#: gofax/faxreports/class_faxreport.inc:501 +msgid "Status" +msgstr "Состояние" + +#: gofax/faxreports/detail.tpl:49 +msgid "Status message" +msgstr "Сообщение о состоянии" + +#: gofax/faxreports/detail.tpl:53 gofax/faxreports/class_faxreport.inc:508 +msgid "Transfer time" +msgstr "Время передачи" + +#: gofax/faxreports/detail.tpl:57 gofax/faxreports/contents.tpl:35 +msgid "# pages" +msgstr "Число страниц" + +#: gofax/faxreports/main.inc:19 +msgid "FAX reports" +msgstr "Отчеты о факсах" + +#: gofax/faxreports/contents.tpl:2 +msgid "Filter" +msgstr "Фильтр" + +#: gofax/faxreports/contents.tpl:6 +msgid "Search for" +msgstr "Поиск" + +#: gofax/faxreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Введите искомое имя пользователя" + +#: gofax/faxreports/contents.tpl:8 gofax/faxreports/contents.tpl:16 +msgid "in" +msgstr "в" + +#: gofax/faxreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Выберите ветку для поиска" + +#: gofax/faxreports/contents.tpl:12 +msgid "during" +msgstr "в течение" + +#: gofax/faxreports/contents.tpl:21 +msgid "Search" +msgstr "Поиск" + +#: gofax/faxreports/contents.tpl:31 gofax/faxreports/class_faxreport.inc:500 +msgid "Date" +msgstr "Дата" + +#: gofax/faxreports/contents.tpl:33 +msgid "Sender" +msgstr "Отправитель" + +#: gofax/faxreports/contents.tpl:34 +msgid "Receiver" +msgstr "Получатель" + +#: gofax/faxreports/contents.tpl:50 +msgid "Search returned no results..." +msgstr "Не найдено..." + +#: gofax/faxreports/class_faxreport.inc:6 +msgid "FAX Reports" +msgstr "Отчеты о факсах" + +#: gofax/faxreports/class_faxreport.inc:7 +#: gofax/blocklists/class_blocklistManagement.inc:6 +#: gofax/blocklists/class_blocklistGeneric.inc:10 +#: gofax/faxaccount/class_gofaxAccount.inc:7 +msgid "This does something" +msgstr "Что-то будет" + +#: gofax/faxreports/class_faxreport.inc:116 +#: gofax/faxreports/class_faxreport.inc:126 +#: gofax/faxreports/class_faxreport.inc:130 +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Error" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:116 +msgid "No fax server found!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy +msgid "Configuration error" +msgstr "Настроить" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Удалить параметры" + +#: gofax/faxreports/class_faxreport.inc:126 +#, fuzzy, php-format +msgid "Cannot connect to %s database!" +msgstr "" +"Не удается подключиться к базе данных факсов, отчеты показаны не будут!" + +#: gofax/faxreports/class_faxreport.inc:130 +#, fuzzy, php-format +msgid "Cannot select %s database!" +msgstr "Невозможно выбрать базу данных!" + +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#, fuzzy, php-format +msgid "Cannot query %s database!" +msgstr "Невозможно выбрать базу данных!" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#: gofax/blocklists/class_blocklistManagement.inc:269 +#: gofax/blocklists/class_blocklistManagement.inc:326 +#, fuzzy +msgid "Permission error" +msgstr "Права для членов группы" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#, fuzzy +msgid "You have no permission to view this fax id!" +msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#: gofax/faxreports/class_faxreport.inc:208 +#: gofax/faxreports/class_faxreport.inc:329 +msgid "Y-M-D" +msgstr "Г-М-Д" + +#: gofax/faxreports/class_faxreport.inc:323 +#, fuzzy +msgid "Insufficient permissions to view this attribute" +msgstr "У вас недостаточно прав для удаления этого подразделения." + +#: gofax/faxreports/class_faxreport.inc:323 +#, fuzzy +msgid "Insufficient permissions" +msgstr "Права для членов группы" + +#: gofax/faxreports/class_faxreport.inc:487 +#: gofax/faxreports/class_faxreport.inc:488 +#, fuzzy +msgid "Fax report" +msgstr "Отчеты о факсах" + +#: gofax/faxreports/class_faxreport.inc:488 +#, fuzzy +msgid "All entries are readonly" +msgstr "Все поля доступны для записи" + +#: gofax/faxreports/class_faxreport.inc:493 +#, fuzzy +msgid "Fax reports" +msgstr "Отчеты о факсах" + +#: gofax/faxreports/class_faxreport.inc:498 +#, fuzzy +msgid "Detailed view" +msgstr "Клиентские устройства" + +#: gofax/faxreports/class_faxreport.inc:499 +#, fuzzy +msgid "Fax ID" +msgstr "Идентификатор факса" + +#: gofax/faxreports/class_faxreport.inc:500 +#, fuzzy +msgid "Time" +msgstr "Мобильный" + +#: gofax/faxreports/class_faxreport.inc:506 +#, fuzzy +msgid "Number of pages" +msgstr "Подразделение" + +#: gofax/faxreports/class_faxreport.inc:507 +#, fuzzy +msgid "Status Message" +msgstr "Сообщение о состоянии" + +#: gofax/blocklists/remove.tpl:2 +msgid "Warning" +msgstr "Предупреждение" + +#: gofax/blocklists/remove.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Подумайте еще раз, действительно ли вам нужно удаление, так как GOsa не " +"сможет отменить результаты этой операции." + +#: gofax/blocklists/remove.tpl:10 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Если вы уверены в своих действиях, нажмите на кнопку Удалить, иначе " +"нажмите Отмена." + +#: gofax/blocklists/generic.tpl:1 gofax/faxaccount/generic.tpl:6 +#: gofax/faxaccount/paste_generic.tpl:4 +msgid "Generic" +msgstr "Общее" + +#: gofax/blocklists/generic.tpl:8 gofax/blocklists/paste_generic.tpl:3 +msgid "List name" +msgstr "Список" + +#: gofax/blocklists/generic.tpl:12 gofax/blocklists/paste_generic.tpl:5 +msgid "Name of blocklist" +msgstr "Имя стоп-листа" + +#: gofax/blocklists/generic.tpl:17 +#: gofax/blocklists/class_divListBlocklists.inc:86 +#: gofax/blocklists/class_blocklistGeneric.inc:387 +msgid "Base" +msgstr "Ветка" + +#: gofax/blocklists/generic.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Выберите ветку для группы" + +#: gofax/blocklists/generic.tpl:26 +#, fuzzy +msgid "Select a base" +msgstr "Выберите, чтобы просмотреть серверы" + +#: gofax/blocklists/generic.tpl:40 +msgid "Type" +msgstr "Тип" + +#: gofax/blocklists/generic.tpl:43 +msgid "Select wether to filter incoming or outgoing calls" +msgstr "Выберите, нужно ли фильтровать входящие или исходящие звонки" + +#: gofax/blocklists/generic.tpl:51 +#: gofax/blocklists/class_blocklistGeneric.inc:386 +msgid "Description" +msgstr "Описание" + +#: gofax/blocklists/generic.tpl:54 +msgid "Descriptive text for this blocklist" +msgstr "Описание стоп-листа" + +#: gofax/blocklists/generic.tpl:68 +msgid "Blocked numbers" +msgstr "Блокируемые номера" + +#: gofax/blocklists/generic.tpl:90 +msgid "Information" +msgstr "Информация" + +#: gofax/blocklists/generic.tpl:92 +msgid "Numbers can also contain wild cards." +msgstr "Вместо точных номеров можно использовать шаблоны." + +#: gofax/blocklists/class_divListBlocklists.inc:31 +#: gofax/blocklists/class_divListBlocklists.inc:32 +msgid "List of blocklists" +msgstr "Стоп-листы" + +#: gofax/blocklists/class_divListBlocklists.inc:50 +#, fuzzy +msgid "Select all" +msgstr "Удалить" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +#: gofax/blocklists/class_blocklistGeneric.inc:219 +#: gofax/blocklists/class_blocklistGeneric.inc:222 +#: gofax/blocklists/class_blocklistGeneric.inc:229 +#: gofax/blocklists/class_blocklistGeneric.inc:385 +msgid "Name" +msgstr "Фамилия" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +msgid "Department" +msgstr "Подразделение" + +#: gofax/blocklists/class_divListBlocklists.inc:57 +#: gofax/blocklists/class_divListBlocklists.inc:91 +msgid "Actions" +msgstr "Действия" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +#: gofax/faxaccount/class_gofaxAccount.inc:881 +#, fuzzy +msgid "Send blocklist" +msgstr "Показать стоп-листы отправки" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +msgid "Show send blocklists" +msgstr "Показать стоп-листы отправки" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +#: gofax/faxaccount/class_gofaxAccount.inc:880 +#, fuzzy +msgid "Receive blocklist" +msgstr "Показать стоп-листы получения" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +msgid "Show receive blocklists" +msgstr "Показать стоп-листы получения" + +#: gofax/blocklists/class_divListBlocklists.inc:67 +msgid "Regular expression for matching list names" +msgstr "Регулярное выражение, соответствующее именам списков" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +#, fuzzy +msgid "Submit department" +msgstr "Показать подразделения" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit" +msgstr "" + +#: gofax/blocklists/class_divListBlocklists.inc:96 +msgid "Create" +msgstr "Создать" + +#: gofax/blocklists/class_divListBlocklists.inc:98 +#: gofax/blocklists/class_blocklistGeneric.inc:388 +#, fuzzy +msgid "Blocklist" +msgstr "\"Черные списки\"" + +#: gofax/blocklists/class_divListBlocklists.inc:104 +msgid "Remove" +msgstr "Удалить" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +#, fuzzy +msgid "edit" +msgstr "Изменить" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +#, fuzzy +msgid "Edit user" +msgstr "Пользователи домена" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +#, fuzzy +msgid "delete" +msgstr "Удалить" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +#, fuzzy +msgid "Delete user" +msgstr "Удалить" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Имя стоп-листа" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#, fuzzy +msgid "blocklists" +msgstr "\"Черные списки\"" + +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy +msgid "departments" +msgstr "Подразделение" + +#: gofax/blocklists/class_blocklistManagement.inc:5 +#, fuzzy +msgid "FAX blocklists" +msgstr "Стоп-лист номеров (факсы)" + +#: gofax/blocklists/class_blocklistManagement.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Права для членов группы" + +#: gofax/blocklists/class_blocklistManagement.inc:246 +#: gofax/blocklists/class_blocklistManagement.inc:307 +#, fuzzy +msgid "blocklist" +msgstr "\"Черные списки\"" + +#: gofax/blocklists/main.inc:35 gofax/blocklists/main.inc:37 +msgid "Blocklist management" +msgstr "Управление \"черными списками\"" + +#: gofax/blocklists/class_blocklistGeneric.inc:9 +#: gofax/blocklists/class_blocklistGeneric.inc:376 +#: gofax/blocklists/class_blocklistGeneric.inc:381 +#: gofax/blocklists/class_blocklistGeneric.inc:382 +#, fuzzy +msgid "Fax blocklists" +msgstr "Стоп-лист номеров (факсы)" + +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +#, fuzzy +msgid "Phone number" +msgstr "Блокируемые номера" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "send" +msgstr "отправка" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "receive" +msgstr "получение" + +#: gofax/blocklists/class_blocklistGeneric.inc:205 +#: gofax/blocklists/class_blocklistGeneric.inc:286 +#: gofax/faxaccount/class_gofaxAccount.inc:659 +#: gofax/faxaccount/class_gofaxAccount.inc:788 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: gofax/blocklists/class_blocklistGeneric.inc:375 +#: gofax/faxaccount/generic.tpl:10 gofax/faxaccount/paste_generic.tpl:8 +#: gofax/faxaccount/class_gofaxAccount.inc:863 +msgid "Fax" +msgstr "Факс" + +#: gofax/blocklists/class_blocklistGeneric.inc:389 +#, fuzzy +msgid "Blocklist type" +msgstr "Управление \"черными списками\"" + +#: gofax/faxaccount/locals.tpl:6 +msgid "Select numbers to add" +msgstr "Выбрать номера для добавления" + +#: gofax/faxaccount/locals.tpl:19 +msgid "Filters" +msgstr "Фильтры" + +#: gofax/faxaccount/locals.tpl:28 +msgid "Display numbers of department" +msgstr "Показать номера из подразделения" + +#: gofax/faxaccount/locals.tpl:29 +msgid "Choose the department the search will be based on" +msgstr "Выбрать раздел, для которого будет осуществлен поиск" + +#: gofax/faxaccount/locals.tpl:38 +msgid "Display numbers matching" +msgstr "Показать совпадения номеров" + +#: gofax/faxaccount/locals.tpl:41 +msgid "Regular expression for matching numbers" +msgstr "Регулярное выражение, соответствующее номерам" + +#: gofax/faxaccount/locals.tpl:47 +msgid "Display numbers of user" +msgstr "Показать номера пользователя" + +#: gofax/faxaccount/locals.tpl:50 +msgid "User name of which numbers are shown" +msgstr "Имя пользователя, для которого перечисляются номера" + +#: gofax/faxaccount/generic.tpl:13 +msgid "Multiple edit" +msgstr "" + +#: gofax/faxaccount/generic.tpl:17 gofax/faxaccount/paste_generic.tpl:13 +msgid "Fax number for GOfax to trigger on" +msgstr "Номер факса, для которого сработает GOfax" + +#: gofax/faxaccount/generic.tpl:24 gofax/faxaccount/class_gofaxAccount.inc:874 +msgid "Language" +msgstr "Язык" + +#: gofax/faxaccount/generic.tpl:29 +msgid "Specify the GOfax communication language for fax to mail gateway" +msgstr "" +"Укаэите предпочтительный язык для получения сообщений о факсах по эл. почте" + +#: gofax/faxaccount/generic.tpl:37 gofax/faxaccount/class_gofaxAccount.inc:875 +msgid "Delivery format" +msgstr "Формат доставки" + +#: gofax/faxaccount/generic.tpl:41 +msgid "Specify delivery format for fax to mail gateway" +msgstr "Укажите в каком формате должны перенаправляться факсы" + +#: gofax/faxaccount/generic.tpl:54 +msgid "Delivery methods" +msgstr "Способ доставки" + +#: gofax/faxaccount/generic.tpl:59 +msgid "Temporary disable fax usage" +msgstr "Временно отключить использование факса" + +#: gofax/faxaccount/generic.tpl:65 +#, fuzzy +msgid "Deliver fax as mail to" +msgstr "Отправлять факсы по эл. почте" + +#: gofax/faxaccount/generic.tpl:73 gofax/faxaccount/class_gofaxAccount.inc:878 +msgid "Deliver fax as mail" +msgstr "Отправлять факсы по эл. почте" + +#: gofax/faxaccount/generic.tpl:80 gofax/faxaccount/class_gofaxAccount.inc:879 +msgid "Deliver fax to printer" +msgstr "Отправлять факсы на принтер" + +#: gofax/faxaccount/generic.tpl:99 +msgid "Alternate fax numbers" +msgstr "Альтернативные номера факсов" + +#: gofax/faxaccount/generic.tpl:114 +msgid "Add local" +msgstr "Добавить локально" + +#: gofax/faxaccount/generic.tpl:122 +msgid "Blocklists" +msgstr "\"Черные списки\"" + +#: gofax/faxaccount/generic.tpl:125 +msgid "Blocklists for incoming fax" +msgstr "\"Черные списки\" для входящих факсов" + +#: gofax/faxaccount/generic.tpl:128 gofax/faxaccount/generic.tpl:136 +msgid "Edit" +msgstr "Изменить" + +#: gofax/faxaccount/generic.tpl:133 +msgid "Blocklists for outgoing fax" +msgstr "\"Черные списки\" для исходящих факсов" + +#: gofax/faxaccount/paste_generic.tpl:18 +#, fuzzy +msgid "Alternate fax numbers will not be copied" +msgstr "Альтернативные номера факсов" + +#: gofax/faxaccount/main.inc:106 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." + +#: gofax/faxaccount/main.inc:115 +msgid "FAX settings" +msgstr "Настройки факса" + +#: gofax/faxaccount/class_gofaxAccount.inc:6 +msgid "FAX" +msgstr "Факс" + +#: gofax/faxaccount/class_gofaxAccount.inc:165 +#: gofax/faxaccount/class_gofaxAccount.inc:175 +#: gofax/faxaccount/class_gofaxAccount.inc:178 +msgid "GOfax" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:174 +msgid "Remove fax account" +msgstr "Удалить настройки факса" + +#: gofax/faxaccount/class_gofaxAccount.inc:177 +msgid "Create fax account" +msgstr "Создать настройки факса" + +#: gofax/faxaccount/class_gofaxAccount.inc:453 +#: gofax/faxaccount/class_gofaxAccount.inc:535 +#, fuzzy +msgid "back" +msgstr "Назад" + +#: gofax/faxaccount/class_gofaxAccount.inc:675 +#: gofax/faxaccount/class_gofaxAccount.inc:679 +#: gofax/faxaccount/class_gofaxAccount.inc:873 +#, fuzzy +msgid "Fax number" +msgstr "Терминал" + +#: gofax/faxaccount/class_gofaxAccount.inc:687 +msgid "Mail delivery is requested without target address!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +#, fuzzy +msgid "Mail address" +msgstr "Введенный вами адрес уже используется." + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "your-name@your-domain.com" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:695 +msgid "Printing is requested without a target printer!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:864 +#, fuzzy +msgid "Fax account settings" +msgstr "Настройки Samba" + +#: gofax/faxaccount/class_gofaxAccount.inc:876 +#, fuzzy +msgid "Alternate fax number" +msgstr "Альтернативные номера факсов" + +#: gofax/faxaccount/class_gofaxAccount.inc:877 +msgid "Enable/Disable fax" +msgstr "" + +#: gofax/faxaccount/lists.tpl:5 +msgid "Blocked numbers/lists" +msgstr "Блокируемые номера/списки" + +#: gofax/faxaccount/lists.tpl:17 +msgid "List of predefined blocklists" +msgstr "Готовые \"черные списки\"" + +#: gofax/faxaccount/lists.tpl:25 +#, fuzzy +msgid "Add the list to the blocklists" +msgstr "Стоп-листы" + +#: admin/systems/services/gofax/class_goFaxServer.inc:30 +#, fuzzy +msgid "FAX database" +msgstr "Базы данных" + +#: admin/systems/services/gofax/class_goFaxServer.inc:59 +#, fuzzy +msgid "FAX database configuration" +msgstr "Базы данных" + +#: admin/systems/services/gofax/class_goFaxServer.inc:71 +#: admin/systems/services/gofax/class_goFaxServer.inc:98 +#: admin/systems/services/gofax/goFaxServer.tpl:12 +msgid "Password" +msgstr "Пароль" + +#: admin/systems/services/gofax/class_goFaxServer.inc:88 +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +#, fuzzy +msgid "Fax database" +msgstr "Базы данных" + +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/gofax/class_goFaxServer.inc:97 +#, fuzzy +msgid "Login name" +msgstr "Местоположение" + +#: admin/systems/services/gofax/goFaxServer.tpl:1 +#, fuzzy +msgid "FAX database information" +msgstr "Базы данных" + +#: admin/systems/services/gofax/goFaxServer.tpl:4 +#, fuzzy +msgid "FAX DB user" +msgstr "Показать пользователей факсов" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Компания" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Paste" +#~ msgstr "Дата" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Faxi number" +#~ msgstr "Терминал" + +#~ msgid "This account has no fax extensions." +#~ msgstr "Для этой учетной записи нет расширений факса." + +#~ msgid "" +#~ "This account has fax features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи есть настройки факса. Вы можете удалить их, щелкнув " +#~ "ниже." + +#~ msgid "" +#~ "This account has fax features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи нет настроек факса. Вы можете добавить их, щелкнув " +#~ "ниже." + +#, fuzzy +#~ msgid "Fax is empty!" +#~ msgstr "Отчеты о факсах" + +#, fuzzy +#~ msgid "Blocklist name" +#~ msgstr "Управление \"черными списками\"" + +#~ msgid "Select to see send blocklists" +#~ msgstr "Выберите, чтобы просмотреть стоп-листы (отправка)" + +#~ msgid "Select to see receive blocklists" +#~ msgstr "Выберите, чтобы просмотреть стоп-листы (получение)" + +#, fuzzy +#~ msgid "Select to search within subtrees" +#~ msgstr "Искать в поддеревьях" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Искать в поддеревьях" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#, fuzzy +#~ msgid "The attribute user is empty or contains invalid characters." +#~ msgstr "Неправильное указание таймаута '%s'" + +#, fuzzy +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "Неправильное указание таймаута '%s'" + +#~ msgid "Back" +#~ msgstr "Назад" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#, fuzzy +#~ msgid "Name contains invalid characters!" +#~ msgstr "Значение поля 'Имя' содержит недопустимые символы." + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "" +#~ "This menu allows you to create, delete and edit selected blocklists. " +#~ "Having a large size of lists, you might prefer the range selectors on top " +#~ "of the select box." +#~ msgstr "" +#~ "С помощью этого меню вы можете добавлять, изменять и удалять выбранные " +#~ "подразделения. Если у вас достаточно большое количество подразделений, вы " +#~ "можете использовать групповое выделение." + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "You're about to delete the following blocklists(s) %s" +#~ msgstr "Вы собираетесь удалить стоп-лист '%s'." + +#, fuzzy +#~ msgid "You have not permission to delete '%s'!" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#~ msgid "You're about to delete the blocklist '%s'." +#~ msgstr "Вы собираетесь удалить стоп-лист '%s'." + +#, fuzzy +#~ msgid "You have not permission to delete this entry!" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "Removing of user/fax account with dn '%s' failed." +#~ msgstr "Удалить учетную запись POSIX" + +#, fuzzy +#~ msgid "Saving of user/fax account with dn '%s' failed." +#~ msgstr "Аккаунт Proxy" + +#, fuzzy +#~ msgid "Removing of blocklist with dn '%s' failed." +#~ msgstr "Удалить приложения" + +#, fuzzy +#~ msgid "Saving of blocklist with dn '%s' failed." +#~ msgstr "Приложение" + +#~ msgid "You're trying to add an invalid phone number." +#~ msgstr "Вы пытаетесь ввести некорректный номер телефона." + +#~ msgid "The required field 'Fax' is not set." +#~ msgstr "Обязательное поле \"Факс\" не заполнено." + +#~ msgid "Please enter a valid telephone number in the 'Fax' field." +#~ msgstr "Введите корректный номер телефона в поле \"Факс\"." + +#~ msgid "Can't select fax database for report generation!" +#~ msgstr "Не удается выбрать базу данных факсов для создания отчетов!" + +#, fuzzy +#~ msgid "Can't query fax table 'faxlog' for report generation!" +#~ msgstr "Не удается выбрать базу данных факсов для создания отчетов!" + +#~ msgid "Query for fax database failed!" +#~ msgstr "Невозможно выполнить запрос к базе данных факсов!" + +#~ msgid "You have no permission to retrieve informations about this fax id!" +#~ msgstr "У вас недостаточно прав для получения информации об этом факсе!" + +#, fuzzy +#~ msgid "You are not allowed to delete the blocklist '%s'!" +#~ msgstr "У вас недостаточно прав для удаления этого пользователя!" + +#~ msgid "Please specify a valid phone number." +#~ msgstr "Укажите корректный номер телефона." + +#~ msgid "Required field 'Name' is not set." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." diff --git a/trunk/gosa-plugins/gofax/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofax/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..2f4d4cf15 --- /dev/null +++ b/trunk/gosa-plugins/gofax/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,906 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: html/getfax.php:56 +msgid "Could not connect to database server!" +msgstr "无法连接到数据库!" + +#: html/getfax.php:58 +msgid "Could not select database!" +msgstr "无法选择数据库!" + +#: html/getfax.php:63 html/getfax.php:71 +msgid "Database query failed!" +msgstr "数据库查询失败!" + +#: gofax/faxreports/detail.tpl:5 +msgid "FAX preview - please wait" +msgstr "传真预览 ── 请等待" + +#: gofax/faxreports/detail.tpl:8 +msgid "Click on fax to download" +msgstr "点击传真下载" + +#: gofax/faxreports/detail.tpl:17 +msgid "FAX ID" +msgstr "传真 ID" + +#: gofax/faxreports/detail.tpl:21 gofax/faxreports/contents.tpl:30 +#: admin/systems/services/gofax/class_goFaxServer.inc:68 +msgid "User" +msgstr "用户" + +#: gofax/faxreports/detail.tpl:25 +msgid "Date / Time" +msgstr "日期 / 时间" + +#: gofax/faxreports/detail.tpl:29 gofax/faxreports/class_faxreport.inc:503 +msgid "Sender MSN" +msgstr "发送者 MSN" + +#: gofax/faxreports/detail.tpl:33 gofax/faxreports/class_faxreport.inc:502 +msgid "Sender ID" +msgstr "发送者 ID" + +#: gofax/faxreports/detail.tpl:37 gofax/faxreports/class_faxreport.inc:505 +msgid "Receiver MSN" +msgstr "接收者 MSN" + +#: gofax/faxreports/detail.tpl:41 gofax/faxreports/class_faxreport.inc:504 +msgid "Receiver ID" +msgstr "接收者 ID" + +#: gofax/faxreports/detail.tpl:45 gofax/faxreports/contents.tpl:32 +#: gofax/faxreports/class_faxreport.inc:501 +msgid "Status" +msgstr "状态" + +#: gofax/faxreports/detail.tpl:49 +msgid "Status message" +msgstr "状态信息" + +#: gofax/faxreports/detail.tpl:53 gofax/faxreports/class_faxreport.inc:508 +msgid "Transfer time" +msgstr "传送时间" + +#: gofax/faxreports/detail.tpl:57 gofax/faxreports/contents.tpl:35 +msgid "# pages" +msgstr "# 页" + +#: gofax/faxreports/main.inc:19 +msgid "FAX reports" +msgstr "传真记录" + +#: gofax/faxreports/contents.tpl:2 +msgid "Filter" +msgstr "过滤器" + +#: gofax/faxreports/contents.tpl:6 +msgid "Search for" +msgstr "查询" + +#: gofax/faxreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "输入要查询的用户名" + +#: gofax/faxreports/contents.tpl:8 gofax/faxreports/contents.tpl:16 +msgid "in" +msgstr "于" + +#: gofax/faxreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "选择查询基于的子树" + +#: gofax/faxreports/contents.tpl:12 +msgid "during" +msgstr "在" + +#: gofax/faxreports/contents.tpl:21 +msgid "Search" +msgstr "查找" + +#: gofax/faxreports/contents.tpl:31 gofax/faxreports/class_faxreport.inc:500 +msgid "Date" +msgstr "日期" + +#: gofax/faxreports/contents.tpl:33 +msgid "Sender" +msgstr "发送者" + +#: gofax/faxreports/contents.tpl:34 +msgid "Receiver" +msgstr "接收者" + +#: gofax/faxreports/contents.tpl:50 +msgid "Search returned no results..." +msgstr "查无结果..." + +#: gofax/faxreports/class_faxreport.inc:6 +msgid "FAX Reports" +msgstr "传真记录" + +#: gofax/faxreports/class_faxreport.inc:7 +#: gofax/blocklists/class_blocklistManagement.inc:6 +#: gofax/blocklists/class_blocklistGeneric.inc:10 +#: gofax/faxaccount/class_gofaxAccount.inc:7 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: gofax/faxreports/class_faxreport.inc:116 +#: gofax/faxreports/class_faxreport.inc:126 +#: gofax/faxreports/class_faxreport.inc:130 +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +msgid "Error" +msgstr "错误" + +#: gofax/faxreports/class_faxreport.inc:116 +msgid "No fax server found!" +msgstr "" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy +msgid "Configuration error" +msgstr "配置文件" + +#: gofax/faxreports/class_faxreport.inc:119 +#: gofax/faxreports/class_faxreport.inc:288 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "删除打印机扩展" + +#: gofax/faxreports/class_faxreport.inc:126 +#, fuzzy, php-format +msgid "Cannot connect to %s database!" +msgstr "不能连接传真数据库,无法显示报告!" + +#: gofax/faxreports/class_faxreport.inc:130 +#, fuzzy, php-format +msgid "Cannot select %s database!" +msgstr "无法选择数据库!" + +#: gofax/faxreports/class_faxreport.inc:135 +#: gofax/faxreports/class_faxreport.inc:158 +#: gofax/faxreports/class_faxreport.inc:304 +#, fuzzy, php-format +msgid "Cannot query %s database!" +msgstr "无法选择数据库!" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#: gofax/blocklists/class_blocklistManagement.inc:269 +#: gofax/blocklists/class_blocklistManagement.inc:326 +#, fuzzy +msgid "Permission error" +msgstr "允许" + +#: gofax/faxreports/class_faxreport.inc:167 +#: gofax/faxreports/class_faxreport.inc:177 +#, fuzzy +msgid "You have no permission to view this fax id!" +msgstr "您无权删除这个黑名单。" + +#: gofax/faxreports/class_faxreport.inc:208 +#: gofax/faxreports/class_faxreport.inc:329 +msgid "Y-M-D" +msgstr "Y-M-D" + +#: gofax/faxreports/class_faxreport.inc:323 +#, fuzzy +msgid "Insufficient permissions to view this attribute" +msgstr "权限不足,无法在 goFonMacro 中修改属性 '%s'。" + +#: gofax/faxreports/class_faxreport.inc:323 +#, fuzzy +msgid "Insufficient permissions" +msgstr "缺省权限" + +#: gofax/faxreports/class_faxreport.inc:487 +#: gofax/faxreports/class_faxreport.inc:488 +#, fuzzy +msgid "Fax report" +msgstr "传真记录" + +#: gofax/faxreports/class_faxreport.inc:488 +#, fuzzy +msgid "All entries are readonly" +msgstr "所有字段均可写" + +#: gofax/faxreports/class_faxreport.inc:493 +#, fuzzy +msgid "Fax reports" +msgstr "传真记录" + +#: gofax/faxreports/class_faxreport.inc:498 +#, fuzzy +msgid "Detailed view" +msgstr "安装设备" + +#: gofax/faxreports/class_faxreport.inc:499 +#, fuzzy +msgid "Fax ID" +msgstr "传真 ID" + +#: gofax/faxreports/class_faxreport.inc:500 +#, fuzzy +msgid "Time" +msgstr "Mime" + +#: gofax/faxreports/class_faxreport.inc:506 +#, fuzzy +msgid "Number of pages" +msgstr "部门名称" + +#: gofax/faxreports/class_faxreport.inc:507 +#, fuzzy +msgid "Status Message" +msgstr "状态信息" + +#: gofax/blocklists/remove.tpl:2 +msgid "Warning" +msgstr "警告" + +#: gofax/blocklists/remove.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "请再次检查您是否要这么做,因为 GOsa 将没有办法将您的数据找回。" + +#: gofax/blocklists/remove.tpl:10 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "所以,如果您确定,请按“删除”继续,否则按“取消”退出。" + +#: gofax/blocklists/generic.tpl:1 gofax/faxaccount/generic.tpl:6 +#: gofax/faxaccount/paste_generic.tpl:4 +msgid "Generic" +msgstr "通用配置" + +#: gofax/blocklists/generic.tpl:8 gofax/blocklists/paste_generic.tpl:3 +msgid "List name" +msgstr "列表名称" + +#: gofax/blocklists/generic.tpl:12 gofax/blocklists/paste_generic.tpl:5 +msgid "Name of blocklist" +msgstr "黑名单名称" + +#: gofax/blocklists/generic.tpl:17 +#: gofax/blocklists/class_divListBlocklists.inc:86 +#: gofax/blocklists/class_blocklistGeneric.inc:387 +msgid "Base" +msgstr "位置" + +#: gofax/blocklists/generic.tpl:20 +msgid "Choose subtree to place group in" +msgstr "选择来放置组的子树" + +#: gofax/blocklists/generic.tpl:26 +msgid "Select a base" +msgstr "选择一个位置" + +#: gofax/blocklists/generic.tpl:40 +msgid "Type" +msgstr "类型" + +#: gofax/blocklists/generic.tpl:43 +msgid "Select wether to filter incoming or outgoing calls" +msgstr "选择过滤打入电话还是打出电话" + +#: gofax/blocklists/generic.tpl:51 +#: gofax/blocklists/class_blocklistGeneric.inc:386 +msgid "Description" +msgstr "描述" + +#: gofax/blocklists/generic.tpl:54 +msgid "Descriptive text for this blocklist" +msgstr "此黑名带描述文字" + +#: gofax/blocklists/generic.tpl:68 +msgid "Blocked numbers" +msgstr "封锁号码" + +#: gofax/blocklists/generic.tpl:90 +msgid "Information" +msgstr "提示信息" + +#: gofax/blocklists/generic.tpl:92 +msgid "Numbers can also contain wild cards." +msgstr "数字也可以包含通配符。" + +#: gofax/blocklists/class_divListBlocklists.inc:31 +#: gofax/blocklists/class_divListBlocklists.inc:32 +msgid "List of blocklists" +msgstr "黑名单列表" + +#: gofax/blocklists/class_divListBlocklists.inc:50 +#, fuzzy +msgid "Select all" +msgstr "选择" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +#: gofax/blocklists/class_blocklistGeneric.inc:219 +#: gofax/blocklists/class_blocklistGeneric.inc:222 +#: gofax/blocklists/class_blocklistGeneric.inc:229 +#: gofax/blocklists/class_blocklistGeneric.inc:385 +msgid "Name" +msgstr "名称" + +#: gofax/blocklists/class_divListBlocklists.inc:56 +msgid "Department" +msgstr "部门" + +#: gofax/blocklists/class_divListBlocklists.inc:57 +#: gofax/blocklists/class_divListBlocklists.inc:91 +msgid "Actions" +msgstr "动作" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +#: gofax/faxaccount/class_gofaxAccount.inc:881 +#, fuzzy +msgid "Send blocklist" +msgstr "显示发送黑名单" + +#: gofax/blocklists/class_divListBlocklists.inc:60 +msgid "Show send blocklists" +msgstr "显示发送黑名单" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +#: gofax/faxaccount/class_gofaxAccount.inc:880 +#, fuzzy +msgid "Receive blocklist" +msgstr "显示接收黑名单" + +#: gofax/blocklists/class_divListBlocklists.inc:61 +msgid "Show receive blocklists" +msgstr "显示接收黑名单" + +#: gofax/blocklists/class_divListBlocklists.inc:67 +msgid "Regular expression for matching list names" +msgstr "匹配列表名称的正则表达式" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit department" +msgstr "提交部门" + +#: gofax/blocklists/class_divListBlocklists.inc:88 +msgid "Submit" +msgstr "提交" + +#: gofax/blocklists/class_divListBlocklists.inc:96 +msgid "Create" +msgstr "创建" + +#: gofax/blocklists/class_divListBlocklists.inc:98 +#: gofax/blocklists/class_blocklistGeneric.inc:388 +#, fuzzy +msgid "Blocklist" +msgstr "黑名单" + +#: gofax/blocklists/class_divListBlocklists.inc:104 +msgid "Remove" +msgstr "删除" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "edit" +msgstr "编辑" + +#: gofax/blocklists/class_divListBlocklists.inc:151 +msgid "Edit user" +msgstr "编辑用户" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "delete" +msgstr "删除" + +#: gofax/blocklists/class_divListBlocklists.inc:158 +msgid "Delete user" +msgstr "删除用户" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "黑名单名称" + +#: gofax/blocklists/class_divListBlocklists.inc:195 +#, fuzzy +msgid "blocklists" +msgstr "黑名单" + +#: gofax/blocklists/class_divListBlocklists.inc:196 +#, fuzzy +msgid "departments" +msgstr "部门" + +#: gofax/blocklists/class_blocklistManagement.inc:5 +#, fuzzy +msgid "FAX blocklists" +msgstr "传真黑名单" + +#: gofax/blocklists/class_blocklistManagement.inc:230 +#, fuzzy +msgid "Permission" +msgstr "允许" + +#: gofax/blocklists/class_blocklistManagement.inc:246 +#: gofax/blocklists/class_blocklistManagement.inc:307 +#, fuzzy +msgid "blocklist" +msgstr "黑名单" + +#: gofax/blocklists/main.inc:35 gofax/blocklists/main.inc:37 +msgid "Blocklist management" +msgstr "黑名单管理" + +#: gofax/blocklists/class_blocklistGeneric.inc:9 +#: gofax/blocklists/class_blocklistGeneric.inc:376 +#: gofax/blocklists/class_blocklistGeneric.inc:381 +#: gofax/blocklists/class_blocklistGeneric.inc:382 +#, fuzzy +msgid "Fax blocklists" +msgstr "传真黑名单" + +#: gofax/blocklists/class_blocklistGeneric.inc:132 +#: gofax/faxaccount/class_gofaxAccount.inc:242 +#, fuzzy +msgid "Phone number" +msgstr "封锁号码" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "send" +msgstr "发送" + +#: gofax/blocklists/class_blocklistGeneric.inc:164 +msgid "receive" +msgstr "接收" + +#: gofax/blocklists/class_blocklistGeneric.inc:205 +#: gofax/blocklists/class_blocklistGeneric.inc:286 +#: gofax/faxaccount/class_gofaxAccount.inc:659 +#: gofax/faxaccount/class_gofaxAccount.inc:788 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: gofax/blocklists/class_blocklistGeneric.inc:375 +#: gofax/faxaccount/generic.tpl:10 gofax/faxaccount/paste_generic.tpl:8 +#: gofax/faxaccount/class_gofaxAccount.inc:863 +msgid "Fax" +msgstr "传真" + +#: gofax/blocklists/class_blocklistGeneric.inc:389 +#, fuzzy +msgid "Blocklist type" +msgstr "黑名单名称" + +#: gofax/faxaccount/locals.tpl:6 +msgid "Select numbers to add" +msgstr "选择要添加的数字" + +#: gofax/faxaccount/locals.tpl:19 +msgid "Filters" +msgstr "过滤器" + +#: gofax/faxaccount/locals.tpl:28 +msgid "Display numbers of department" +msgstr "显示部门号码" + +#: gofax/faxaccount/locals.tpl:29 +msgid "Choose the department the search will be based on" +msgstr "选择一个部门来做查询" + +#: gofax/faxaccount/locals.tpl:38 +msgid "Display numbers matching" +msgstr "显示匹配数字" + +#: gofax/faxaccount/locals.tpl:41 +msgid "Regular expression for matching numbers" +msgstr "匹配号码的正则表达式" + +#: gofax/faxaccount/locals.tpl:47 +msgid "Display numbers of user" +msgstr "显示用户编号" + +#: gofax/faxaccount/locals.tpl:50 +msgid "User name of which numbers are shown" +msgstr "显示该号码的用户名" + +#: gofax/faxaccount/generic.tpl:13 +msgid "Multiple edit" +msgstr "" + +#: gofax/faxaccount/generic.tpl:17 gofax/faxaccount/paste_generic.tpl:13 +msgid "Fax number for GOfax to trigger on" +msgstr "要打开的 GOfax 的传真号码" + +#: gofax/faxaccount/generic.tpl:24 gofax/faxaccount/class_gofaxAccount.inc:874 +msgid "Language" +msgstr "语言" + +#: gofax/faxaccount/generic.tpl:29 +msgid "Specify the GOfax communication language for fax to mail gateway" +msgstr "描述传真到邮件网关的 GOfax 通讯语言" + +#: gofax/faxaccount/generic.tpl:37 gofax/faxaccount/class_gofaxAccount.inc:875 +msgid "Delivery format" +msgstr "传输格式" + +#: gofax/faxaccount/generic.tpl:41 +msgid "Specify delivery format for fax to mail gateway" +msgstr "说明传真到邮件网关的格式" + +#: gofax/faxaccount/generic.tpl:54 +msgid "Delivery methods" +msgstr "传输方法" + +#: gofax/faxaccount/generic.tpl:59 +msgid "Temporary disable fax usage" +msgstr "临时禁用传真" + +#: gofax/faxaccount/generic.tpl:65 +msgid "Deliver fax as mail to" +msgstr "发送传真至邮件到" + +#: gofax/faxaccount/generic.tpl:73 gofax/faxaccount/class_gofaxAccount.inc:878 +msgid "Deliver fax as mail" +msgstr "发送传真至邮件" + +#: gofax/faxaccount/generic.tpl:80 gofax/faxaccount/class_gofaxAccount.inc:879 +msgid "Deliver fax to printer" +msgstr "发送传真至打印机" + +#: gofax/faxaccount/generic.tpl:99 +msgid "Alternate fax numbers" +msgstr "替代传真号码" + +#: gofax/faxaccount/generic.tpl:114 +msgid "Add local" +msgstr "添加本地" + +#: gofax/faxaccount/generic.tpl:122 +msgid "Blocklists" +msgstr "黑名单" + +#: gofax/faxaccount/generic.tpl:125 +msgid "Blocklists for incoming fax" +msgstr "输入传真黑名单" + +#: gofax/faxaccount/generic.tpl:128 gofax/faxaccount/generic.tpl:136 +msgid "Edit" +msgstr "编辑" + +#: gofax/faxaccount/generic.tpl:133 +msgid "Blocklists for outgoing fax" +msgstr "外发传真黑名单" + +#: gofax/faxaccount/paste_generic.tpl:18 +msgid "Alternate fax numbers will not be copied" +msgstr "不拷贝到替代传真号码" + +#: gofax/faxaccount/main.inc:106 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "点击下面的“编辑”按钮修改该对话框内的信息" + +#: gofax/faxaccount/main.inc:115 +msgid "FAX settings" +msgstr "传真设置" + +#: gofax/faxaccount/class_gofaxAccount.inc:6 +msgid "FAX" +msgstr "传真" + +#: gofax/faxaccount/class_gofaxAccount.inc:165 +#: gofax/faxaccount/class_gofaxAccount.inc:175 +#: gofax/faxaccount/class_gofaxAccount.inc:178 +msgid "GOfax" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:174 +msgid "Remove fax account" +msgstr "删除传真账号" + +#: gofax/faxaccount/class_gofaxAccount.inc:177 +msgid "Create fax account" +msgstr "创建传真账号" + +#: gofax/faxaccount/class_gofaxAccount.inc:453 +#: gofax/faxaccount/class_gofaxAccount.inc:535 +msgid "back" +msgstr "返回" + +#: gofax/faxaccount/class_gofaxAccount.inc:675 +#: gofax/faxaccount/class_gofaxAccount.inc:679 +#: gofax/faxaccount/class_gofaxAccount.inc:873 +#, fuzzy +msgid "Fax number" +msgstr "系列号" + +#: gofax/faxaccount/class_gofaxAccount.inc:687 +msgid "Mail delivery is requested without target address!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +#, fuzzy +msgid "Mail address" +msgstr "您输入的邮件地址无效。" + +#: gofax/faxaccount/class_gofaxAccount.inc:689 +msgid "your-name@your-domain.com" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:695 +msgid "Printing is requested without a target printer!" +msgstr "" + +#: gofax/faxaccount/class_gofaxAccount.inc:864 +#, fuzzy +msgid "Fax account settings" +msgstr "Samba 设置" + +#: gofax/faxaccount/class_gofaxAccount.inc:876 +#, fuzzy +msgid "Alternate fax number" +msgstr "替代传真号码" + +#: gofax/faxaccount/class_gofaxAccount.inc:877 +msgid "Enable/Disable fax" +msgstr "" + +#: gofax/faxaccount/lists.tpl:5 +msgid "Blocked numbers/lists" +msgstr "封锁号码/列表" + +#: gofax/faxaccount/lists.tpl:17 +msgid "List of predefined blocklists" +msgstr "预定义黑名单列表" + +#: gofax/faxaccount/lists.tpl:25 +msgid "Add the list to the blocklists" +msgstr "添加列表至黑名单" + +#: admin/systems/services/gofax/class_goFaxServer.inc:30 +msgid "FAX database" +msgstr "传真数据库" + +#: admin/systems/services/gofax/class_goFaxServer.inc:59 +#, fuzzy +msgid "FAX database configuration" +msgstr "传真数据库" + +#: admin/systems/services/gofax/class_goFaxServer.inc:71 +#: admin/systems/services/gofax/class_goFaxServer.inc:98 +#: admin/systems/services/gofax/goFaxServer.tpl:12 +msgid "Password" +msgstr "口令" + +#: admin/systems/services/gofax/class_goFaxServer.inc:88 +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +#, fuzzy +msgid "Fax database" +msgstr "传真数据库" + +#: admin/systems/services/gofax/class_goFaxServer.inc:89 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/gofax/class_goFaxServer.inc:97 +#, fuzzy +msgid "Login name" +msgstr "位置名称" + +#: admin/systems/services/gofax/goFaxServer.tpl:1 +#, fuzzy +msgid "FAX database information" +msgstr "系统信息" + +#: admin/systems/services/gofax/goFaxServer.tpl:4 +msgid "FAX DB user" +msgstr "传真数据库用户名" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "复制" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "剪切" + +#~ msgid "Paste" +#~ msgstr "粘贴" + +#~ msgid "cut" +#~ msgstr "剪切" + +#~ msgid "Cut this entry" +#~ msgstr "剪切条目" + +#~ msgid "copy" +#~ msgstr "复制" + +#~ msgid "Copy this entry" +#~ msgstr "拷贝条目" + +#, fuzzy +#~ msgid "Faxi number" +#~ msgstr "系列号" + +#~ msgid "This account has no fax extensions." +#~ msgstr "这个账号没有传真扩展。" + +#~ msgid "" +#~ "This account has fax features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "这个账户传真功能已启用。您可以点击下面的按钮禁用。" + +#~ msgid "" +#~ "This account has fax features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "这个账户传真功能已禁用。您可以点击下面的按钮来启用。" + +#, fuzzy +#~ msgid "Fax is empty!" +#~ msgstr "传真记录" + +#~ msgid "Blocklist name" +#~ msgstr "黑名单名称" + +#~ msgid "Select to see send blocklists" +#~ msgstr "选择查看发送黑名单" + +#~ msgid "Select to see receive blocklists" +#~ msgstr "选择查看接收黑名单" + +#~ msgid "Select to search within subtrees" +#~ msgstr "选择在子树中查询" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "在子树中查找" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#, fuzzy +#~ msgid "The attribute user is empty or contains invalid characters." +#~ msgstr "属性 '%s' 为空或者包含无效字符。" + +#, fuzzy +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "属性 '%s' 为空或者包含无效字符。" + +#~ msgid "Back" +#~ msgstr "返回" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Delete" +#~ msgstr "删除" + +#~ msgid "Apply" +#~ msgstr "应用" + +#~ msgid "Ok" +#~ msgstr "好" + +#, fuzzy +#~ msgid "Name contains invalid characters!" +#~ msgstr "需要的“姓名”字段包含无效字符" + +#, fuzzy +#~ msgid "Name is already in use!" +#~ msgstr "指定名称已经使用。" + +#~ msgid "" +#~ "This menu allows you to create, delete and edit selected blocklists. " +#~ "Having a large size of lists, you might prefer the range selectors on top " +#~ "of the select box." +#~ msgstr "" +#~ "这个菜单允许您创建,删除和修改所选的黑名单。对于一个长列表,您可以通过选择" +#~ "框上面的范围选择来调整。" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "You're about to delete the following blocklists(s) %s" +#~ msgstr "您将要删除黑名单 '%s'。" + +#, fuzzy +#~ msgid "You have not permission to delete '%s'!" +#~ msgstr "您无权删除这个黑名单。" + +#~ msgid "You're about to delete the blocklist '%s'." +#~ msgstr "您将要删除黑名单 '%s'。" + +#, fuzzy +#~ msgid "You have not permission to delete this entry!" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "Removing of user/fax account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of user/fax account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Removing of blocklist with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of blocklist with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#~ msgid "You're trying to add an invalid phone number." +#~ msgstr "您正在添加一个无效的电话号码。" + +#~ msgid "The required field 'Fax' is not set." +#~ msgstr "需要的字段“传真”没有设置" + +#~ msgid "Please enter a valid telephone number in the 'Fax' field." +#~ msgstr "请在“传真”处填入一个有效的电话号码。" + +#~ msgid "Mail delivery is checked, but no address has been specified." +#~ msgstr "选择了邮件传递,但是没有定义地址。" + +#~ msgid "" +#~ "Deliver fax to printer, is only possible if valid printer is given. " +#~ "Please correct your choice." +#~ msgstr "" +#~ "发送传真道打印机,只有在提供一个有效的打印机才能够实现。请修改您的选择。" + +#, fuzzy +#~ msgid "" +#~ "No fax extension defined in your server configuration, no reports can be " +#~ "shown!" +#~ msgstr "没有在服务器配置中定义传真扩展,无法显示报告!" + +#~ msgid "There is no mysql extension available, please check your php setup." +#~ msgstr "没有可用的 mysql 扩展,请检查您的 php 设置。" + +#~ msgid "Can't select fax database for report generation!" +#~ msgstr "无法为创建报告查找传真数据库!" + +#~ msgid "Can't query fax table 'faxlog' for report generation!" +#~ msgstr "无法为创建报告查询传真数据表 'faxlog'!" + +#~ msgid "Query for fax database failed!" +#~ msgstr "查询传真数据库失败!" + +#~ msgid "You have no permission to retrieve informations about this fax id!" +#~ msgstr "您无权获取关于此传真 id 的信息!" + +#, fuzzy +#~ msgid "You are not allowed to delete the blocklist '%s'!" +#~ msgstr "您无权删除这个用户!" + +#~ msgid "Please specify a valid phone number." +#~ msgstr "请给出一个有效电话号码。" + +#~ msgid "Required field 'Name' is not set." +#~ msgstr "需要的“姓名”字段没有设置" diff --git a/trunk/gosa-plugins/gofax/manifest b/trunk/gosa-plugins/gofax/manifest new file mode 100644 index 000000000..8c16043b0 --- /dev/null +++ b/trunk/gosa-plugins/gofax/manifest @@ -0,0 +1,6 @@ +[manifest] +name = gofax +description = GOfax integration for GOsa. +author = Cajus Pollmeier +version = 1.0 +depends = gosa-core diff --git a/trunk/gosa-plugins/gofax/plugin.dsc b/trunk/gosa-plugins/gofax/plugin.dsc new file mode 100644 index 000000000..867adcd0f --- /dev/null +++ b/trunk/gosa-plugins/gofax/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = gofax +description = "GOfax management backend with report functionality" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = systems diff --git a/trunk/gosa-plugins/gofon/admin/ogroups/gofon/class_phonequeue.inc b/trunk/gosa-plugins/gofon/admin/ogroups/gofon/class_phonequeue.inc new file mode 100644 index 000000000..30a89c888 --- /dev/null +++ b/trunk/gosa-plugins/gofon/admin/ogroups/gofon/class_phonequeue.inc @@ -0,0 +1,959 @@ +goFonHomeServers if available + * and use first server as default if necessary. + */ + if(isset($config->data['SERVERS']['FON']) && + count($config->data['SERVERS']['FON']) && + is_callable("mysql_connect")){ + + /* Set available server */ + $this->goFonHomeServers = $config->data['SERVERS']['FON']; + + /* Set default server */ + if($this->dn == "new"){ + $this->goFonHomeServer = $this->goFonHomeServers[0]['DN']; + } + + /* Remember inital home server, to be able to remove old entries */ + $this->init_HomeServer = $this->goFonHomeServer; + + /* get config */ + if(!isset($this->goFonHomeServers[$this->goFonHomeServer])){ + msg_dialog::display(_("Obsolete entry"), sprintf(_("The current home server is not available anymore. It will be moved to '%s' if you save this entry!"), preg_replace("/,/",", ",$this->goFonHomeServers[0]['DN'])), ERROR_DIALOG); + $this->goFonHomeServer = $this->goFonHomeServers[0]['DN']; + $this->init_HomeServer = $this->goFonHomeServers[0]['DN']; + } + $cur_cfg = $this->goFonHomeServers[$this->goFonHomeServer]; + } + + + /* Variable init + * Load phone nubmers and parse dial options + */ + if($this->is_account){ + if(isset($this->attrs['telephoneNumber'])){ + $this->telephoneNumber=$this->attrs['telephoneNumber']; + unset($this->telephoneNumber['count']); + } + for($i = 0; $i < strlen($this->goFonDialOption); $i++){ + $name = "goFonDialOption".$this->goFonDialOption[$i]; + $this->$name=$this->goFonDialOption[$i]; + } + } + + /* Set Queue announce hold time to true/false */ + if(preg_match("/no/i",$this->goFonQueueAnnounceHoldtime)){ + $this->goFonQueueAnnounceHoldtime=false; + }else{ + $this->goFonQueueAnnounceHoldtime=true; + } + + /* Define all available ringdown types */ + $types= array('ringall' =>_("ring all"), + 'roundrobin' =>_("round robin"), + 'leastrecent'=>_("least recently called"), + 'fewestcalls'=>_("fewest completed calls"), + 'random' =>_("random"), + 'rrmemory' =>_("round robin with memory")); + $i = 0; + foreach($types as $type => $name){ + $i++; + $this->goFonQueueStrategyOptions[$i] =$name; + $this->goFonQueueStrategyOptionsR[$i] =$type; + $tmp[$type] = $i; + } + $this->goFonQueueStrategy= $tmp[$this->goFonQueueStrategy]; + $this->old_cn = $this->cn; + $this->old_phone_numbers = $this->telephoneNumber; + } + + + /* This function ensures that the selected home server + * and the initially selected home server are reachable and accessible + */ + function check_database_accessibility() + { + /* Check if mysql extension is available */ + if(!is_callable("mysql_pconnect")){ + return(msgPool::missingext("mysql")); + } + + /******************** + * Check currently selected home server + ********************/ + + $cfg_Current = $this->goFonHomeServers[$this->goFonHomeServer]; + $r_current = @mysql_pconnect($cfg_Current['SERVER'],$cfg_Current['LOGIN'],$cfg_Current['PASSWORD']); + if(!$r_current){ + new log("debug","ogroups/".get_class($this),"",array(),@mysql_error($r_current)); + return(msgPool::dbconnect("GOfon",@mysql_error($r_current),$cfg_Current['SERVER'])); + } + $db_current = @mysql_select_db($cfg_Current['DB'],$r_current); + if(!$db_current){ + new log("debug","ogroups/".get_class($this),"",array(),@mysql_error($r_current)); + mysql_close($r_current); + return(msgPool::dbselect("GOfon",@mysql_error($r_current),$cfg_Current['DB'])); + } + + /******************** + * Check init home server + ********************/ + + if($this->initially_was_account){ + $cfg_Init = $this->goFonHomeServers[$this->init_HomeServer] ; + $r_init = @mysql_pconnect($cfg_Init['SERVER'],$cfg_Init['LOGIN'],$cfg_Init['PASSWORD']); + if(!$r_init){ + new log("debug","ogroups/".get_class($this),"",array(),@mysql_error($r_init)); + return(msgPool::dbconnect("GOfon",@mysql_error($r_current),$cfg_Init['SERVER'])); + } + $db_init = @mysql_select_db($cfg_Init['DB'],$r_init); + if(!$db_init){ + new log("debug","ogroups/".get_class($this),"",array(),@mysql_error($r_init)); + mysql_close($r_init); + return(msgPool::dbselect("GOfon",@mysql_error($r_current),$cfg_Init['DB'])); + } + } + } + + + /* Display plugin ui */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","ogroups/".get_class($this),$this->dn); + } + + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Show tab dialog headers */ + if ($this->parent !== NULL){ + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove the phone queue from this Account"), + msgPool::featuresEnabled(_("phone queue"))); + } else { + $display= $this->show_enable_header(_("Create phone queue"), + msgPool::featuresDisabled(_("phone queue"))); + return ($display); + } + } + + if($this->acl_is_writeable("telephoneNumber")){ + + /* Add queue number */ + if(isset($_POST['add_phonenumber'])&&(isset($_POST['phonenumber']))&&(!empty($_POST['phonenumber']))){ + if((!in_array($_POST['phonenumber'],$this->telephoneNumber))&&(is_numeric($_POST['phonenumber']))){ + $this->telephoneNumber[]=$_POST['phonenumber']; + } + } + + /* Delete queue number */ + if(isset($_POST['delete_phonenumber'])&&(isset($_POST['goFonQueueNumber_List']))){ + unset($this->telephoneNumber[$_POST['goFonQueueNumber_List']]); + } + + /* queue number up */ + if(isset($_POST['up_phonenumber'])&&(isset($_POST['goFonQueueNumber_List']))){ + if($_POST['goFonQueueNumber_List']>0){ + $up = $this->telephoneNumber[$_POST['goFonQueueNumber_List']]; + $down = $this->telephoneNumber[$_POST['goFonQueueNumber_List']-1]; + $this->telephoneNumber[$_POST['goFonQueueNumber_List']] = $down; + $this->telephoneNumber[$_POST['goFonQueueNumber_List']-1] = $up; + } + } + + /* Queuenumber down */ + if(isset($_POST['down_phonenumber'])&&(isset($_POST['goFonQueueNumber_List']))){ + if(isset($this->telephoneNumber[($_POST['goFonQueueNumber_List']+1)])){ + $up = $this->telephoneNumber[$_POST['goFonQueueNumber_List']+1]; + $down = $this->telephoneNumber[$_POST['goFonQueueNumber_List']]; + $this->telephoneNumber[$_POST['goFonQueueNumber_List']+1] = $down; + $this->telephoneNumber[$_POST['goFonQueueNumber_List']] = $up; + } + $this->telephoneNumber[$_POST['goFonQueueNumber_List']] = $up; + } + } + + $tmp = array(); + foreach($this->telephoneNumber as $val){ + if(!empty($val)){ + $tmp[]= $val; + } + } + $this->telephoneNumber=$tmp; + + /* Assign samrty variables */ + $smarty= get_smarty(); + $smarty->assign("goFonQueueLanguageOptions",get_languages(FALSE,TRUE)); + $smarty->assign("goFonQueueStrategyOptions", $this->goFonQueueStrategyOptions); + + /* Set acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + foreach($this->attributes as $key => $val){ + $smarty->assign($val,$this->$val); + if($this->$val == false){ + $smarty->assign($val."CHK",""); + }else{ + $smarty->assign($val."CHK"," checked "); + } + } + + /* Create array with goFonHomeServer */ + $tmp = array(); + foreach($this->goFonHomeServers as $dn => $val){ + if(!is_numeric($dn)){ + $tmp[$dn] = $val['SERVER']; + } + } + $smarty->assign("goFonHomeServers",$tmp); + + return ($display.$smarty->fetch (get_template_path('phonequeue.tpl', TRUE,dirname(__FILE__)))); + } + + + /* Check formular input */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + if(!count($this->goFonHomeServers)){ + $message[] = _("There must be at least one server with an asterisk database to create a phone queue."); + } + if(empty($this->goFonHomeServer)){ + $message[] = msgPool::required(_("Home server")); + } + if($this->is_number_used()){ + $message[] = $this->is_number_used(); + } + if(!((is_numeric($this->goFonTimeOut))||(empty($this->goFonTimeOut)))){ + $message[] = msgPool::invalid(_("Timeout"),$this->goFonTimeOut,"/[0-9]/"); + } + if(!((is_numeric($this->goFonQueueRetry))||(empty($this->goFonQueueRetry)))){ + $message[] = msgPool::invalid(_("Retry"),$this->goFonQueueRetry,"/[0-9]/"); + } + if(!((is_numeric($this->goFonMaxLen))||(empty($this->goFonMaxLen)))){ + $message[] = msgPool::invalid(_("Queue length"),$this->goFonMaxLen,"/[0-9]/"); + } + if(!((is_numeric($this->goFonAnnounceFrequency))||(empty($this->goFonAnnounceFrequency)))){ + $message[] = msgPool::invalid(_("Announce frequency"),$this->goFonAnnounceFrequency,"/[0-9]/"); + } + if(count($this->telephoneNumber)==0){ + $message[] = msgPool::required(_("Number")); + } + + /* check if add to database could be successfull */ + $str = $this->add_to_database(); + if(!empty($str)){ + $message[] = $str; + } + return $message; + } + + + /* This function removes the old database entries. + * If this entry should be removed or the home server has changed + * this function is called to ensure that all old entries will be deleted. + */ + function remove_from_database($save = false) + { + /* Check if we must remove old entries */ + if($this->initially_was_account){ + + /* Check if there is at least on server configuration */ + if(!count($this->goFonHomeServers)){ + return(msgPool::noserver(_("asterisk"))); + } + + /******************** + * Get configuration and check it + ********************/ + + /* Check if databases are reachable, returns an error string if anything fails */ + $error_str = $this->check_database_accessibility(); + if($error_str){ + return($error_str); + } + + /* Connect to current database to be able to add new entries */ + $cfg_Current = $this->goFonHomeServers[$this->init_HomeServer] ; + $res_cur = @mysql_pconnect($cfg_Current['SERVER'],$cfg_Current['LOGIN'],$cfg_Current['PASSWORD']); + $db_cur = @mysql_select_db($cfg_Current['DB'],$res_cur); + + /* Create sql entries */ + $delete[]= "DELETE FROM ".$cfg_Current['EXT_TABLE']." WHERE exten='".$this->old_cn."';\n"; + $delete[]= "DELETE FROM ".$cfg_Current['QUEUE_TABLE']." WHERE name='".$this->old_cn."'; \n"; + $delete[]= "DELETE FROM ".$cfg_Current['QUEUE_MEMBER_TABLE']." WHERE queue_name='".$this->old_cn."';\n"; + foreach($this->old_phone_numbers as $number){ + $delete[]= "DELETE FROM ".$cfg_Current['EXT_TABLE']." WHERE exten='".$number."';\n"; + } + + /* Execute the queries */ + if($save){ + foreach($delete as $sql){ + $res = @mysql_query($sql,$res_cur); + if(!$res){ + new log("debug","ogroups/".get_class($this),"",array(),@mysql_error($r_current)); + return(msgPool::dbquery(_("GOfon"),@mysql_error($r_current))); + } + } + } + } + } + + + /* This function handles the database entries for this + * queue. + * Existing entries will be updated if possible. + */ + function add_to_database($save = false) + { + /* Check if there is at least on server configuration */ + if(!count($this->goFonHomeServers)){ + return( msgPool::noserver(_("asterisk"))); + } + + /******************** + * Get configuration and check it + ********************/ + + /* Check if databases are reachable, returns an error string if anything fails */ + $error_str = $this->check_database_accessibility(); + if($error_str){ + return($error_str); + } + + /* Connect to current database to be able to add new entries */ + $cfg_Current = $this->goFonHomeServers[$this->goFonHomeServer] ; + $res_cur = @mysql_pconnect($cfg_Current['SERVER'],$cfg_Current['LOGIN'],$cfg_Current['PASSWORD']); + $db_cur = @mysql_select_db($cfg_Current['DB'],$res_cur); + + /* Connect to old home server and remove old entries if necessary */ + if(($this->initially_was_account) && ($this->init_HomeServer != $this->goFonHomeServer)){ + $str = $this->remove_from_database($save); + if(!empty($str)){ + return($str);; + } + } + + /* Ensure that we have the new cn in $this->cn and the old cn in $this->old_cn */ + $this->cn = $this->parent->by_object['ogroup']->cn; + + if($save){ + + /***************** + * Create queue table entry + *****************/ + + /* Check if QUEUE_TABLE entry exists. + * If this entry is missing - create it + * else update the entry with new values. + */ + $query = "SELECT * FROM ".$cfg_Current['QUEUE_TABLE']." WHERE name='".$this->old_cn."';"; + $res = mysql_query($query,$res_cur); + if(!$res){ + new log("debug","ogroups/".get_class($this),"",array(),@mysql_error($res_cur)); + return(_("Cannot find old queue entry!")); + } + $cnt = mysql_affected_rows($res_cur); + + + /* Create queue table entry + * Leave unused options empty. + */ + $queue["announce"] = ""; + $queue["monitor_join"] = ""; + $queue["monitor_format"] = ""; + $queue["announce_round_seconds"]= ""; + $queue["wrapuptime"] = ""; + $queue["servicelevel"] = ""; + $queue["eventmemberstatus"] = ""; + $queue["eventwhencalled"] = ""; + $queue["memberdelay"] = ""; + $queue["weight"] = ""; + $queue["timeoutrestart"] = ""; + + $queue["queue_holdtime"] = $this->goFonQueueAnnounce; + $queue["queue_lessthan"] = $this->goFonQueueLessThan; + $queue["retry"] = $this->goFonQueueRetry; + $queue["reportholdtime"] = "1"; + $queue["joinempty"] = "no"; + $queue["leavewhenempty"] = "yes"; + + $queue["context"] = "default"; + $queue["name"] = $this->cn; + $queue["timeout"] = $this->goFonTimeOut; + $queue["maxlen"] = $this->goFonMaxLen; + $queue["strategy" ] = $this->goFonQueueStrategyOptionsR[$this->goFonQueueStrategy]; + $queue["queue_thankyou"] = $this->goFonQueueThankYou; + $queue["queue_reporthold"] = $this->goFonQueueReportHold; + $queue["announce_frequency"] = $this->goFonAnnounceFrequency; + $queue["queue_youarenext"] = $this->goFonQueueYouAreNext; + $queue["queue_thereare"] = $this->goFonQueueThereAre; + $queue["queue_callswaiting"] = $this->goFonQueueCallsWaiting; + $queue["queue_minutes"] = $this->goFonQueueMinutes; + $queue["queue_seconds"] = $this->goFonQueueSeconds; + $queue["announce_holdtime"] = $this->goFonQueueAnnounceHoldtime; + $queue["musiconhold"] = $this->goFonMusiconHold; + + + /* Check if we must create a new queue entry + * or if we can update an existing entry + * $cnt contains the number of entries matching this cn + */ + + /* Create new queue table entry + */ + if($cnt == 0){ + + /* Parse and Add Queue */ + $entries = ""; + $values = ""; + foreach($queue as $attr=>$val){ + if($val == "") continue; + $entries.= "`".$attr."`,"; + $values .= "'".$val."',"; + } + $values = preg_replace("/,$/","",$values); + $entries = preg_replace("/,$/","",$entries ); + $SQL[]="INSERT INTO ".$cfg_Current['QUEUE_TABLE']." (".$entries.") VALUES (".$values.");"; + }elseif($cnt == 1){ + + /* Update queue table entry + */ + $queue_old = @mysql_fetch_assoc($res); + foreach($queue_old as $name => $value){ + if(isset($queue[$name]) && $queue[$name] == $value){ + unset($queue[$name]); + } + } + + /* Parse and Add Queue */ + if(count($queue)){ + $query = "UPDATE ".$cfg_Current['QUEUE_TABLE']." SET "; + foreach($queue as $key => $val){ + $query.= "".$key."='".$val."',"; + } + $query = preg_replace("/,$/","",$query); + $query.= " WHERE name='".$this->old_cn."';"; + $SQL[] = $query; + } + }else{ + return(sprintf(_("Found more than one entry named '%s' in queue table. Please inform your system administrator!"),$this->cn)); + } + + + /***************** + * Create queue member entries + *****************/ + + /* Add the queue member entries + * First we must remove all old user entries. + * to be able to add a clean set of members. + */ + $SQL[]= "DELETE FROM ".$cfg_Current['QUEUE_MEMBER_TABLE']." WHERE queue_name='".$this->cn."';"; + $SQL[]= "DELETE FROM ".$cfg_Current['QUEUE_MEMBER_TABLE']." WHERE queue_name='".$this->old_cn."';"; + + /* Append new Member for this queue */ + $queueuser =array(); + $i = 0; + $parent = $this->parent->by_object['ogroup']; + + + $ldap = $this->config->get_ldap_link(); + foreach($parent->memberList as $member => $mem_data){ + $ldap->cat($member,array("goFonHomeServer","objectClass","dn","uid")); + if($ldap->count()){ + + $obj = $ldap->fetch(); + + /* Calculate server and account dependencies */ + $is_acc = in_array("goFonAccount",$obj['objectClass']); + $is_home= isset($obj['goFonHomeServer'][0]) && $obj['goFonHomeServer'][0] == $this->goFonHomeServer; + + /* Append user to list of queue member, + * only if user has phoneAccount extension && is on same home server */ + if($is_acc && $is_home){ + $i ++ ; + $queueuser[$i]['queue_name'] = $this->cn; + $queueuser[$i]['interface'] = "SIP/".$obj['uid'][0]; + $queueuser[$i]['penalty'] = 1; + } + } + } + + /* Parse and Add members to query Array */ + if(is_array($queueuser)){ + foreach($queueuser as $user){ + $entries = ""; + $values = ""; + foreach($user as $attr => $val){ + $entries.= "`".$attr."`,"; + $values .= "'".$val."',"; + } + $values = preg_replace("/,$/","",$values); + $entries = preg_replace("/,$/","",$entries ); + + $SQL[]="INSERT INTO ".$cfg_Current['QUEUE_MEMBER_TABLE']." (".$entries.") VALUES (".$values.")"; + } + } + + + /***************** + * Create extension entries + *****************/ + + /* Add the extension entries + * First we must remove all old entensions. + */ + $SQL[]= "DELETE FROM ".$cfg_Current['EXT_TABLE']." WHERE exten='".$this->cn."';\n"; + $SQL[]= "DELETE FROM ".$cfg_Current['EXT_TABLE']." WHERE exten='".$this->old_cn."';\n"; + + /* Delete old enxtension entries for the old telephone nubmer */ + if(is_array($this->old_phone_numbers)){ + foreach($this->old_phone_numbers as $phone){ + $SQL[]= "DELETE FROM ".$cfg_Current['EXT_TABLE']." WHERE exten='".$phone."';\n"; + } + } + + /* Delete enxtension entries for telephone numbers */ + if(is_array($this->telephoneNumber)){ + foreach($this->telephoneNumber as $phone){ + $SQL[]= "DELETE FROM ".$cfg_Current['EXT_TABLE']." WHERE exten='".$phone."';\n"; + } + } + + /* Create a extension entry fpr each telephoneNumber */ + $i_insert_only_once = false; + $prio = 11; // This represents the priority for each telephoneNumber + foreach($this->telephoneNumber as $num){ + + /* The naming refrences */ + if($i_insert_only_once == false){ + $i_insert_only_once = true; + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $this->cn; + $a_ext[$i]['priority'] = 1; + $a_ext[$i]['app'] = "Goto"; + $a_ext[$i]['appdata'] = $num."|1"; + $i ++ ; + } + + /* If there is currently no user for this queue + * Play no service sound file and return to default context. + */ + if(count($queueuser)==0){ + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $num; + $a_ext[$i]['priority'] = 1; + $a_ext[$i]['app'] = "SetLanguage"; + $a_ext[$i]['appdata'] = "de"; + $i ++ ; + + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $num; + $a_ext[$i]['priority'] = 2; + $a_ext[$i]['app'] = "Playback"; + $a_ext[$i]['appdata'] = "ss-noservice"; + $i ++ ; + + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $num; + $a_ext[$i]['priority'] = 3; + $a_ext[$i]['app'] = "Goto"; + $a_ext[$i]['appdata'] = "default"; + $i ++ ; + }else{ + + /* Dcrement priority to avoid using same priority twice */ + $prio --; + + /* Wait for 2 seconds */ + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $num; + $a_ext[$i]['priority'] = 1; + $a_ext[$i]['app'] = "Wait"; + $a_ext[$i]['appdata'] = "2"; + $i ++ ; + + /* Set language to queue language */ + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $num; + $a_ext[$i]['priority'] = 2; + $a_ext[$i]['app'] = "SetLanguage"; + $a_ext[$i]['appdata'] = $this->goFonQueueLanguage; + $i ++ ; + + /* Play welcome sound file */ + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $num; + $a_ext[$i]['priority'] = 3; + $a_ext[$i]['app'] = "Playback"; + $a_ext[$i]['appdata'] = $this->goFonWelcomeMusic; + $i ++ ; + + /* Set CID name */ + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $num; + $a_ext[$i]['priority'] = 4; + $a_ext[$i]['app'] = "SetCIDName"; + if(!empty($this->parent->by_object['ogroup']->description)){ + $a_ext[$i]['appdata'] = $this->parent->by_object['ogroup']->description; + }else{ + $a_ext[$i]['appdata'] = $this->cn." - ".$num; + } + $i ++ ; + + /* Set queue priority */ + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $num; + $a_ext[$i]['priority'] = 5; + $a_ext[$i]['app'] = "SetVar"; + $a_ext[$i]['appdata'] = "QUEUE_PRIO=".$prio; + $i ++ ; + + /* Open queue */ + $a_ext[$i]['context'] = 'GOsa'; + $a_ext[$i]['exten'] = $num; + $a_ext[$i]['priority'] = 6; + $a_ext[$i]['app'] = "Queue"; + $a_ext[$i]['appdata'] = $this->cn; + "|". + $this->goFonDialOptiont. + $this->goFonDialOptionT. + $this->goFonDialOptionh. + $this->goFonDialOptionH. + $this->goFonDialOptionr; + } + + $i++; + } + + /* Parse and Add Extension entries */ + foreach($a_ext as $ext){ + $entries = ""; + $values = ""; + foreach($ext as $attr => $val){ + $entries.= "`".$attr."`,"; + $values .= "'".$val."',"; + } + $values = preg_replace("/,$/","",$values); + $entries = preg_replace("/,$/","",$entries ); + $SQL[]="INSERT INTO ".$cfg_Current['EXT_TABLE']." (".$entries.") VALUES (".$values.")"; + } + + /* Do all collected mysql queries + */ + foreach($SQL as $query) + $res = mysql_query($query,$res_cur); + if(!$res){ + new log("debug","ogroups/".get_class($this),"",array(),@mysql_error($res_cur)); + return(msgPool::dbquery(_("GOfon"),@mysql_error($res_cur))); + } + } + @mysql_close($r_con); + return(false); + } + + + /* This function checks if the given phonenumbers + * are available or already in use + */ + function is_number_used() + { + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(& (!(uid=".$this->cn.")) + (!(cn=".$this->cn."))) + (| (objectClass=goFonAccount) + (objectClass=goFonQueue) + (objectClass=goFonConference)))", array("telephoneNumber","cn","uid")); + while($attrs = $ldap->fetch()) { + unset($attrs['telephoneNumber']['count']); + foreach($attrs['telephoneNumber'] as $tele){ + if(!isset($attrs['cn'][0])) $attrs['cn'][0]=$attrs['dn']; + if(!isset($attrs['uid'][0])) $attrs['uid'][0]=$attrs['dn']; + $numbers[$tele]=$attrs; + } + } + + foreach($this->telephoneNumber as $num){ + if((isset($numbers[$num]))&&(($numbers[$num]['cn'][0]!= $this->attrs['cn'][0]))){ + if(isset($numbers[$num]['uid'][0])){ + msgPool::duplicated(_("telephone number")); + }else{ + msgPool::duplicated(_("telephone number")); + } + } + } + } + + + /* Get posted attributes */ + function save_object() + { + plugin::save_object(); + if(isset($_POST['phonenumber'])){ + foreach(array("goFonDialOptiont","goFonDialOptionT","goFonDialOptionh","goFonDialOptionr","goFonDialOptionH","goFonMusiconHold") as $val){ + if(isset($_POST[$val])){ + $this->$val = $_POST[$val]; + }else{ + $this->$val = false; + } + } + if(isset($_POST['goFonQueueAnnounceHoldtime'])){ + $this->goFonQueueAnnounceHoldtime = "yes"; + }else{ + $this->goFonQueueAnnounceHoldtime = false; + } + } + } + + + function save() + { + $ldap= $this->config->get_ldap_link(); + + plugin::save(); + + /* Create dial option attribute */ + $this->attrs['goFonDialOption'] = ""; + foreach(array("goFonDialOptiont","goFonDialOptionT","goFonDialOptionr","goFonDialOptionh","goFonDialOptionH","cn") as $val){ + $this->attrs['goFonDialOption'].=$this->$val; + unset($this->attrs[$val]); + } + if(empty($this->attrs['goFonDialOption'])) { + $this->attrs['goFonDialOption']=array(); + } + + /* Set announce hold time to yes no .. */ + if($this->goFonQueueAnnounceHoldtime != "no" ){ + $this->attrs['goFonQueueAnnounceHoldtime'] = "yes"; + }else{ + $this->attrs['goFonQueueAnnounceHoldtime'] = "no"; + } + + /* Set strategy */ + $this->attrs['goFonQueueStrategy'] = $this->goFonQueueStrategyOptionsR[$this->goFonQueueStrategy]; + + /* Add database entry, display error and abort if this fails */ + $str = $this->add_to_database(true); + if(!empty($str)){ + msg_dialog::display(_("Error"), $str, ERROR_DIALOG); + } + + /* Save data to LDAP */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if($this->initially_was_account){ + new log("modify","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("modify","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify"); + } + } else { + $this->handle_post_events("add"); + } + } + + + /* remove object from parent */ + function remove_from_parent() + { + /* Cancel if nothing is to do here */ + if (!$this->initially_was_account){ + return; + } + + /* Remove database entries, + * if fails display errors and abort + */ + $str = $this->remove_from_database(true); + if(!empty($str)){ + msg_dialog::display(_("Error"), $str, ERROR_DIALOG); + return false; + } + + /* Remove all temporary attributes */ + $tmp = array_flip($this->attributes); + foreach(array("goFonDialOptiont","goFonDialOptionT","goFonDialOptionr","goFonDialOptionh","goFonDialOptionH","cn") as $val){ + unset($this->$val); + unset($this->attrs[$val]); + unset($tmp[$val]); + } + foreach(array_flip($tmp) as $key => $val){ + $tmp2[]=$val; + } + $this->attributes = $tmp2; + + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Remove and write to LDAP */ + plugin::remove_from_parent(); + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,$this->attributes, "Save"); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + new log("remove","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + + function getCopyDialog() + { + $str = ""; + $str .= _("Phone number"); + $str .= " "; + return($str); + } + + + function saveCopyDialog() + { + if(isset($_POST['telephoneNumber'])){ + $this->telephoneNumber = $_POST['telephoneNumber']; + } + } + + + static function plInfo() + { + return (array( + "plShortName" => _("Phone"), + "plDescription" => _("Phone group"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 3, + "plSection" => array("administration"), + "plCategory" => array("ogroups"), + "plProvidedAcls"=> array( + + "goFonTimeOut" => _("Timeout"), + "goFonMaxLen" => _("Max queue length"), + "goFonHomeServer" => _("Home server"), + "goFonAnnounceFrequency" => _("Announce frequency"), + "goFonDialOptiont" => _("Allow the called user to transfer his call"), + "goFonDialOptionT" => _("Allows calling user to transfer call"), + "goFonDialOptionh" => _("Allow the called to hangup by pressing *"), + "goFonDialOptionr" => _("Ring instead of playing background music"), + "goFonDialOptionH" => _("Allows calling to hangup by pressing *"), + + "goFonMusiconHold" => _("Music on hold"), + "goFonWelcomeMusic" => _("Welcome music"), + "goFonQueueReportHold" => _("Report hold time"), + "goFonQueueYouAreNext" => _("'You are next' sound"), + "goFonQueueThereAre" => _("'There are' sound"), + "goFonQueueCallsWaiting" => _("'Call waiting' sound"), + "goFonQueueThankYou" => _("'Thank you' sound"), + "goFonQueueMinutes" => _("'Minutes' sound"), + "goFonQueueSeconds" => _("'Seconds' sound"), + "goFonQueueLessThan" => _("'Less than' sound"), + "telephoneNumber" => _("Queue phone number"), + "goFonQueueLanguage" => _("Language"), + "goFonQueueStrategy" => _("Method"), + "goFonQueueAnnounceHoldtime"=> _("Announce holdtime"), + "goFonQueueAnnounce" => _("Announce"), + "goFonQueueRetry" => _("Retry")) + )); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/admin/ogroups/gofon/phonequeue.tpl b/trunk/gosa-plugins/gofon/admin/ogroups/gofon/phonequeue.tpl new file mode 100644 index 000000000..166256d6a --- /dev/null +++ b/trunk/gosa-plugins/gofon/admin/ogroups/gofon/phonequeue.tpl @@ -0,0 +1,328 @@ +

+ ! {t}Only users with the same asterisk home server will be included to this queue.{/t} +

+ + + + + + + + + + + + + + + + + +
+

 {t}Phone numbers{/t}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+{render acl=$telephoneNumberACL} + +{/render} + +{render acl=$telephoneNumberACL} +
+{/render} +{render acl=$telephoneNumberACL} + +{/render} +
+{render acl=$telephoneNumberACL} + +{/render} +{render acl=$telephoneNumberACL} +   +{/render} +{render acl=$telephoneNumberACL} + +{/render} +
+

 {t}Options{/t}

{$must} +{render acl=$goFonHomeServerACL} + +{/render} +
+ {t}Language{/t} + +{render acl=$goFonQueueLanguageACL} + +{/render} +
+ {t}Timeout{/t} + +{render acl=$goFonTimeOutACL} + +{/render} +
+ {t}Retry{/t} + +{render acl=$goFonQueueRetryACL} + +{/render} +
+ {t}Strategy{/t} + +{render acl=$goFonQueueStrategyACL} + +{/render} + +
+ {t}Max queue length{/t} + +{render acl=$goFonMaxLenACL} + +{/render} +
+ {t}Announce frequency{/t} + +{render acl=$goFonAnnounceFrequencyACL} + +{/render} + {t}(in seconds){/t} +
+
+

+ + {t}Queue sound setup{/t} +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ {t}Music on hold{/t} + +{render acl=$goFonMusiconHoldACL} + +{/render} +
+ {t}Welcome sound file{/t} + +{render acl=$goFonWelcomeMusicACL} + +{/render} +
+ {t}Announce message{/t} + +{render acl=$goFonQueueAnnounceACL} + +{/render} +
+ {t}Sound file for 'You are next ...'{/t} + +{render acl=$goFonQueueYouAreNextACL} + +{/render} +
+ {t}'There are ...'{/t} + +{render acl=$goFonQueueThereAreACL} + +{/render} +
+ {t}'... calls waiting'{/t} + +{render acl=$goFonQueueCallsWaitingACL} + +{/render} +
+ {t}'Thank you' message{/t} + +{render acl=$goFonQueueThankYouACL} + +{/render} +
+ {t}'minutes' sound file{/t} + +{render acl=$goFonQueueMinutesACL} + +{/render} +
+ {t}'seconds' sound file{/t} + +{render acl=$goFonQueueSecondsACL} + +{/render} +
+ {t}Hold sound file{/t} + +{render acl=$goFonQueueReportHoldACL} + +{/render} +
+ {t}Less Than sound file{/t} + +{render acl=$goFonQueueLessThanACL} + +{/render} +
+
+

+

 {t}Phone attributes {/t}

+ + + + + + + + + +
+{render acl=$goFonQueueAnnounceHoldtimeACL} + +{/render} + {t}Announce holdtime{/t} +
+{render acl=$goFonDialOptiontACL} + +{/render} + {t}Allow the called user to transfer his call{/t} +
+{render acl=$goFonDialOptionTACL} + +{/render} + {t}Allows calling user to transfer call{/t} +
+ +
+ + + + + + + + + + +
+{render acl=$goFonDialOptionhACL} + +{/render} + {t}Allow the called to hangup by pressing *{/t} +
+{render acl=$goFonDialOptionHACL} + +{/render} + {t}Allows calling to hangup by pressing *{/t} +
+{render acl=$goFonDialOptionrACL} + +{/render} + {t}Ring instead of playing background music{/t} +
+
diff --git a/trunk/gosa-plugins/gofon/admin/systems/gofon/class_phoneGeneric.inc b/trunk/gosa-plugins/gofon/admin/systems/gofon/class_phoneGeneric.inc new file mode 100644 index 000000000..7889e6d10 --- /dev/null +++ b/trunk/gosa-plugins/gofon/admin/systems/gofon/class_phoneGeneric.inc @@ -0,0 +1,538 @@ +array("cn", "description", + "goFonType","goFonDmtfMode","goFonHost","goFonDefaultIP", + "goFonQualify"), + "1"=>array("cn", "description", + "goFonType","goFonHost","goFonDefaultIP", + "goFonQualify","goFonAuth","goFonSecret","goFonInkeys","goFonOutkey", + "goFonTrunk","goFonAccountCode","selected_categorie","goFonPermit","goFonDeny"), + "2"=>array("cn", "description", "goFonMSN")); + + + var $objectclasses= array("top", "goFonHardware"); + + function phoneGeneric (&$config, $dn= NULL, $parent= NULL) + { + plugin::plugin ($config, $dn, $parent); + $this->netConfigDNS = new termDNS($this->config,$this,$this->objectclasses, true); + $this->netConfigDNS->MACisMust =TRUE; + + /* Set base */ + if ($this->dn == "new"){ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + $this->cn= ""; + } else { + $this->base= preg_replace ("/^[^,]+,".preg_quote(get_ou("phoneRDN"), '/')."/", "", $this->dn); + } + + if($this->goFonMSN != ""){ + $this->selected_categorie = 2; + }elseif($this->goFonAccountCode != ""){ + $this->selected_categorie = 1 ; + + if(isset($this->attrs['goFonPermit']['count'])){ + unset ($this->attrs['goFonPermit']['count']); + $this->goFonPermit=$this->attrs['goFonPermit']; + } + + if(isset($this->attrs['goFonDeny']['count'])){ + unset ($this->attrs['goFonDeny']['count']) ; + $this->goFonDeny=$this->attrs['goFonDeny']; + } + + } else { + $this->selected_categorie = 0; + } + + if($this->goFonDefaultIP!="dynamic"){ + $this->goFonDefaultIP = "network"; + } + + /* Save dn for later references */ + $this->orig_dn= $this->dn; + $this->orig_base= $this->base; + $this->orig_cn= $this->cn; + } + + function set_acl_base($base) + { + plugin::set_acl_base($base); + $this->netConfigDNS->set_acl_base($base); + } + + function set_acl_category($cat) + { + plugin::set_acl_category($cat); + $this->netConfigDNS->set_acl_category($cat); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","phone/".get_class($this),$this->dn); + } + + /* Do we represent a valid phone? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("phone")).""; + return($display); + } + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* A new base was selected, check if it is a valid one */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* handle Permit Add*/ + if(isset($_POST['goFonPermitAdd']) && $this->acl_is_writeable("goFonPermit")){ + if(isset($_POST['goFonPermitNew'])){ + if(is_string($this->goFonPermit)){ + $this->goFonPermit=array(); + } + $new = $_POST['goFonPermitNew']; + if(strlen($new)> 1) { + $this->goFonPermit[]= $new; + } + } + } + + /* handle Deny Add*/ + if(isset($_POST['goFonDenyAdd']) && $this->acl_is_writeable("goFonDeny")){ + if(isset($_POST['goFonDenyNew'])){ + if(is_string($this->goFonDeny)){ + $this->goFonDeny=array(); + } + $new = $_POST['goFonDenyNew']; + if(strlen($new)> 1) { + $this->goFonDeny[]= $new; + } + } + } + + /* Handle Permit Deletion*/ + if(isset($_POST['goFonPermitDel']) && $this->acl_is_writeable("goFonPermit")){ + if(isset($_POST['goFonPermitS'])){ + if(is_string($this->goFonPermit)){ + $this->goFonPermit=array(); + } + $new = $_POST['goFonPermitS']; + $tmp = array_flip($this->goFonPermit); + unset($tmp[$new]); + $this->goFonPermit=array(); + foreach(array_flip($tmp) as $tm){ + $this->goFonPermit[]=$tm; + } + } + } + + + /* Handle Permit Deletion*/ + if(isset($_POST['goFonDenyDel']) && $this->acl_is_writeable("goFonDeny")){ + if(isset($_POST['goFonDenyS'])){ + if(is_string($this->goFonDeny)){ + $this->goFonDeny=array(); + } + $new = $_POST['goFonDenyS']; + $tmp = array_flip($this->goFonDeny); + unset($tmp[$new]); + $this->goFonDeny=array(); + foreach(array_flip($tmp) as $tm){ + $this->goFonDeny[]=$tm; + } + } + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + + $smarty->assign("bases", $this->get_allowed_bases()); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $smarty->assign("staticAddress","*");// $this->config->idepartments); + + /* Create Arrays for samrty select boxes */ + $smarty->assign("categories", array("SIP","IAX","CAPI")); + $smarty->assign("goFonTypes", array("peer" =>"peer" ,"user" =>"user" ,"friend" =>"friend")); + $smarty->assign("goFonDmtfModes", array("inband" =>"inband" ,"rfc2833"=>"rfc2833" ,"info" =>"info")); + $smarty->assign("goFonAuths", array("plaintext" =>"plaintext" ,"md5" =>"md5" /*,"rsa" =>"rsa"*/)); + $smarty->assign("goFonTrunks", array("yes" =>_("yes") ,"no" => _("no"))); + + /* deativate all fields that are not used by the specified type */ + foreach($this->attributes as $att){ + if((!in_array($att,$this->usedattrs[$this->selected_categorie]))){ + $smarty->assign($att."USED", "disabled" ); + $smarty->assign($att, ""); + }else{ + $smarty->assign($att."USED", "" ); + $smarty->assign($att, $this->$att); + } + } + + $smarty->assign("selected_categorie",$this->selected_categorie); + + /* Assign attributes */ + $smarty->assign("base_select", $this->base); + $smarty->assign("goFonDefaultIPs",array("dynamic"=>_("dynamic"),"network"=>_("Networksettings"))); + + /* Show main page */ + $str = $this->netConfigDNS->execute(); + if(is_object($this->netConfigDNS->dialog)){ + return($str); + } + $smarty->assign("netconfig", $str); + $smarty->assign("phonesettings", get_template_path("phonesettings.tpl",TRUE,dirname(__FILE__))); + return($smarty->fetch (get_template_path('phone.tpl', TRUE,dirname(__FILE__)))); + } + + function remove_from_parent() + { + if($this->acl_is_removeable()){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + $ldap->search ("(&(objectClass=goFonAccount)(goFonHardware=".$this->cn."))", array("uid","cn")); + while ($attr = $ldap->fetch()){ + msg_dialog::display(_("Error"), sprintf(_("Cannot delete entry because it is still in use by '%s'!"), $attr['cn'][0]), ERROR_DIALOG); + return; + } + + $this->netConfigDNS->remove_from_parent(); + $ldap->rmdir($this->dn); + + new log("remove","phone/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + $this->handle_post_events("remove",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } + } + } + + + /* Save data to object */ + function save_object() + { + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + $this->netConfigDNS->save_object(); + + /* Set new base if allowed */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + $message= array_merge($message, $this->netConfigDNS->check()); + + $this->dn= "cn=".$this->cn.",".get_ou('phoneRDN').$this->base; + + /* To check for valid ip*/ + if($this->netConfigDNS->ipHostNumber == ""){ + $message[]= msgPool::required(_("IP address")); + } else { + if (!tests::is_ip($this->netConfigDNS->ipHostNumber)){ + $message[]= msgPool::invalid(_("IP address")); + } + } + + /* Check if given name is a valid host/dns name */ + if(!tests::is_dns_name($this->cn) ){ + $message[] = msgPool::invalid(_("Name")); + } + + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + if ($this->cn == "0"){ + $message[]= msgPool::reserved(_("Name")); + } + + if ($this->orig_dn != $this->dn){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->base); + $ldap->search ("(cn=".$this->cn.")", array("cn")); + if ($ldap->count() != 0){ + while ($attrs= $ldap->fetch()){ + + if(preg_match("/cn=dhcp,/",$attrs['dn'])){ + continue; + } + + if ($attrs['dn'] != $this->orig_dn){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + + /* only to define which attrs to save*/ + $mode = $this->selected_categorie; + + /* Remove all unwanted attrs */ + foreach($this->attributes as $att){ + + /* Check all attributes, if they are needed for this type of phone */ + if(!in_array($att,$this->usedattrs[$mode])){ + $this->attrs[$att] = array(); + } + } + + /* unset the categorie*/ + unset($this->attrs['selected_categorie']); + + /* Remove all empty values */ + if ($this->orig_dn == 'new'){ + $attrs= array(); + foreach ($this->attrs as $key => $val){ + if (is_array($val) && count($val) == 0){ + continue; + } + $attrs[$key]= $val; + } + $this->attrs= $attrs; + } + + if($this->goFonDefaultIP!="dynamic"){ + $this->attrs['goFonDefaultIP'] = $this->netConfigDNS->ipHostNumber; + } + + $this->attrs = $this->netConfigDNS->getVarsForSaving($this->attrs); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + if ($this->orig_dn == 'new'){ + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + new log("create","phone/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("add",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + } else { + if ($this->orig_dn != $this->dn){ + $this->move($this->orig_dn, $this->dn); + } + + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + new log("modify","phone/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + // $user_phone_reload + $ldap->cd ($this->config->current['BASE']); + $user_phone_assignment = $ldap->fetch($ldap->search("(&(objectClass=goFonAccount)(goFonHardware=".$this->cn."))",array("uid"))); + if($user_phone_assignment){ + $usertab= new usertabs($this->config,$this->config->data['TABS']['USERTABS'], $user_phone_assignment['dn']); + $usertab->by_object['phoneAccount']->is_modified = true; + $usertab->save(); + unset($usertab); + } + $this->handle_post_events("modify",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + } + $this->netConfigDNS->cn = $this->cn; + $this->netConfigDNS->save(); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + + /* Display generic part for server copy & paste */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn" ,$this->cn); + $smarty->assign("object","phone"); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + if(isset($source['macAddress'][0])){ + $this->netConfigDNS->macAddress = $source['macAddress'][0]; + } + if(isset($source['ipHostNumber'][0])){ + $this->netConfigDNS->ipHostNumber = $source['ipHostNumber'][0]; + } + + $source_o = new phoneGeneric($this->config, $source['dn']); + $this->selected_categorie = $source_o->selected_categorie; + } + + + /* Return plugin informations for acl handling + #FIXME FAIscript seams to ununsed within this class... */ + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Phone generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("phone" => array("description" => _("Phone hardware"), + "objectClass" => "goFonHardware")), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "base" => _("Base"), + "description" => _("Description"), + "goFonType" => _("SIP Mode"), + "goFonDmtfMode" => _("SIP DTMF mode"), + "goFonDefaultIP" => _("SIP Default ip"), + "goFonQualify" => _("SIP Qualify"), + "goFonAuth" => _("IAX authentication type"), + "goFonSecret" => _("IAX secret"), + "goFonAccountCode" => _("IAX account code"), + "goFonTrunk" => _("IAX trunk lines"), + "goFonPermit" => _("IAX permit settings"), + "goFonDeny" => _("IAX deny settings"), + "goFonMSN" => _("CAPI MSN"), + "categorie" => _("Hardware type")) + )); + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/admin/systems/gofon/paste_generic.tpl b/trunk/gosa-plugins/gofon/admin/systems/gofon/paste_generic.tpl new file mode 100644 index 000000000..ebaf6c1d6 --- /dev/null +++ b/trunk/gosa-plugins/gofon/admin/systems/gofon/paste_generic.tpl @@ -0,0 +1,8 @@ + + + + + +
{$must} + +
diff --git a/trunk/gosa-plugins/gofon/admin/systems/gofon/phone.tpl b/trunk/gosa-plugins/gofon/admin/systems/gofon/phone.tpl new file mode 100644 index 000000000..246e81011 --- /dev/null +++ b/trunk/gosa-plugins/gofon/admin/systems/gofon/phone.tpl @@ -0,0 +1,57 @@ + + + + + +
+ + + + + + + + + + + + +
{$must} +{render acl=$cnACL} + +{/render} +
 
{$must} +{render acl=$baseACL} + +{/render} +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} +
+
+ + + + + +
+{render acl=$descriptionACL} + +{/render} +
+
+ +

 

+{include file="$phonesettings"} + +

 

+{$netconfig} + + + diff --git a/trunk/gosa-plugins/gofon/admin/systems/gofon/phonesettings.tpl b/trunk/gosa-plugins/gofon/admin/systems/gofon/phonesettings.tpl new file mode 100644 index 000000000..c901e880b --- /dev/null +++ b/trunk/gosa-plugins/gofon/admin/systems/gofon/phonesettings.tpl @@ -0,0 +1,260 @@ +

{t}Advanced phone settings{/t}

+ + + + + +{if $selected_categorie eq '0'} + + + + +
+ {$staticAddress} +{render acl=$categorieACL} + +{/render} + {if $javascript eq 'false'} + + {/if} +
+
+
+ + + + + + + + + +
+ {$staticAddress} + + +{render acl=$goFonTypeACL} + +{/render} +
+ + +{render acl=$goFonDmtfModeACL} + +{/render} +
+
+ + + + + + + + + +
+ + +{render acl=$goFonDefaultIPACL} + +{/render} +
+ + +{render acl=$goFonQualifyACL} + +{/render} +
+
+{/if} + +{if $selected_categorie eq '1'} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +{render acl=$goFonTypeACL} + +{/render} +
+ + +{render acl=$goFonDefaultIPACL} + +{/render} +
+ + +{render acl=$goFonQualifyACL} + +{/render} +
+   +
+ + +{render acl=$goFonAuthACL} + +{/render} +
+ + +{render acl=$goFonSecretACL} + +{/render} +
+   +
+ + +{render acl=$goFonAccountCodeACL} + +{/render} +
+ + +{render acl=$goFonTrunkACL} + +{/render} +
+ + + + + + + + +
+
+{render acl=$goFonPermitACL} + +{/render} +
+{render acl=$goFonPermitACL} + +{/render} +{render acl=$goFonPermitACL} + +{/render} +{render acl=$goFonPermitACL} + +{/render} +

+
+
+{render acl=$goFonDenyACL} + +{/render} +
+{render acl=$goFonDenyACL} + +{/render} +{render acl=$goFonDenyACL} + +{/render} +{render acl=$goFonDenyACL} + +{/render} +
+ + +{/if} + +{if $selected_categorie eq '2'} + + + + + + +
+   +{render acl=$goFonMSNACL} + +{/render} +
+ + +   + + + +{/if} diff --git a/trunk/gosa-plugins/gofon/admin/systems/gofon/tabs_phone.inc b/trunk/gosa-plugins/gofon/admin/systems/gofon/tabs_phone.inc new file mode 100644 index 000000000..b8a859058 --- /dev/null +++ b/trunk/gosa-plugins/gofon/admin/systems/gofon/tabs_phone.inc @@ -0,0 +1,41 @@ +addSpecialTabs(); + } + + function save_object($save_current= FALSE) + { + tabs::save_object($save_current); + + $baseobject = $this->by_object['phoneGeneric']; + $baseobject->netConfigDNS->cn= $baseobject->cn; + } + + + function save($ignore_account= FALSE) + { + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + $baseobject= $this->by_object['phoneGeneric']; + $this->dn= "cn=$baseobject->cn,".get_ou('phoneRDN').$baseobject->base; + $baseobject->dn= $this->dn; + + foreach ($this->by_object as $key => $obj){ + $this->by_object[$key]->dn= $this->dn; + } + + tabs::save(TRUE); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/admin/systems/services/gofon/class_goFonServer.inc b/trunk/gosa-plugins/gofon/admin/systems/services/gofon/class_goFonServer.inc new file mode 100644 index 000000000..bfdb7b646 --- /dev/null +++ b/trunk/gosa-plugins/gofon/admin/systems/services/gofon/class_goFonServer.inc @@ -0,0 +1,186 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goFonServer"); + var $attributes = array("goFonAdmin", "goFonPassword","goFonAreaCode", "goFonCountryCode"); + var $StatusFlag = "goFonServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goFonServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $cn =""; + var $acl; + + var $goFonServerStatus = ""; + var $goFonPassword = ""; + var $goFonAdmin = ""; + var $goFonAreaCode = ""; + var $goFonCountryCode = ""; + var $view_logged =FALSE; + + var $orig_dn = ""; + + function goFonServer(&$config,$dn) + { + goService::goService($config,$dn); + $this->DisplayName = _("VoIP service"); + + $this->orig_dn = $dn; + } + + + function execute() + { + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + $smarty = get_smarty(); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + /* Assign acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + return($smarty->fetch(get_template_path("goFonServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("VoIP service")." - "._("Asterisk management"); + #$fields['AllowEdit'] = true; + return($fields); + } + + function check() + { + $message = plugin::check(); + if (empty($this->goFonAdmin)){ + $message[]= msgPool::required(_("User")); + } + if (empty($this->goFonPassword)){ + $message[]= msgPool::required(_("Password")); + } + if (empty($this->goFonAreaCode)){ + $message[]= msgPool::required(_("Local dial prefix")); + } + if (empty($this->goFonCountryCode)){ + $message[]= msgPool::requierd(_("Country prefix")); + } + return($message); + } + + + function save_object() + { + if(isset($_POST['goFonServerPosted'])){ + plugin::save_object(); + } + } + + + function allow_remove() + { + /* Check if we are able to remove the asterisk database. If the database is still in use skip */ + if($this->is_account){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(goFonHomeServer=".$this->dn.")(|(uid=*)(cn=*)))",array("dn","uid","cn","goFonHomeServer")); + if($ldap->count()){ + + /* Number of entries shown in warning */ + $i = 3; + $str = ""; + while(($attrs = $ldap->fetch()) && $i >= 0){ + $i --; + if(isset($attrs['uid'][0])){ + $str .= $attrs['uid'][0]." "; + }else{ + $str .= $attrs['cn'][0]." "; + } + } + + /* Some entries found */ + if($i != 3){ + return(sprintf(_("You can't remove the asterisk database extension, it is still in use by these objects '%s'."),trim($str))); + } + } + } + } + + + function save() + { + goService::save(); + /* Update goFonAccounts if server was is renamed. + Set attribute goFonHomeServer to current dn + */ + if(in_array("goFonServer",$this->objectclasses)){ + if($this->orig_dn != "new" && $this->orig_dn != $this->dn){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(goFonHomeServer=".$this->orig_dn.")(|(objectClass=goFonAccount)(objectClass=goFonConference)))",array("goFonHomeServer")); + $dns = array(); + while($attrs = $ldap->fetch()){ + $dns[] = $attrs['dn']; + } + foreach($dns as $dn){ + $ldap->cd($dn); + $ldap->modify(array("goFonHomeServer" => $this->dn)); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD, get_class())); + } + } + } + + /* Updated config list of gofon servers */ + if($this->orig_dn == "new" || $this->orig_dn != $this->dn){ + $config = session::get('config'); + $config->load_servers(); + session::set('config',$config); + } + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("VoIP service"), + "plDescription" => _("VoIP - asterisk management")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 92, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "start" => _("Start"), + "stop" => _("Stop"), + "restart" => _("Restart"), + + "goFonAdmin" => _("Admin"), + "goFonPassword" => _("Password"), + "goFonAreaCode" => _("Area code"), + "goFonCountryCode"=> _("Country code")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/admin/systems/services/gofon/goFonServer.tpl b/trunk/gosa-plugins/gofon/admin/systems/services/gofon/goFonServer.tpl new file mode 100644 index 000000000..129625811 --- /dev/null +++ b/trunk/gosa-plugins/gofon/admin/systems/services/gofon/goFonServer.tpl @@ -0,0 +1,43 @@ +

{t}VoIP database information{/t}

+ + + + + + + + + + + + + + + + + +
{t}Asterisk DB user{/t}{$must} +{render acl=$goFonAdminACL} + +{/render} +
{t}Password{/t}{$must} +{render acl=$goFonPasswordACL} + +{/render} +
{t}Country dial prefix{/t}{$must} +{render acl=$goFonCountryCodeACL} + +{/render} +
{t}Local dial prefix{/t}{$must} +{render acl=$goFonAreaCodeACL} + +{/render} +
+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/gofon/contrib/gofon.sql b/trunk/gosa-plugins/gofon/contrib/gofon.sql new file mode 100644 index 000000000..584bcc99f --- /dev/null +++ b/trunk/gosa-plugins/gofon/contrib/gofon.sql @@ -0,0 +1,24 @@ +create database gophone; +use gophone; + +create table cdr ( + calldate datetime NOT NULL default '0000-00-00 00:00:00', + clid varchar(80) NOT NULL default '', + src varchar(80) NOT NULL default '', + dst varchar(80) NOT NULL default '', + dcontext varchar(80) NOT NULL default '', + channel varchar(80) NOT NULL default '', + dstchannel varchar(80) NOT NULL default '', + lastapp varchar(80) NOT NULL default '', + lastdata varchar(80) NOT NULL default '', + duration integer NOT NULL default '0', + billsec integer NOT NULL default '0', + disposition varchar(45) NOT NULL default '', + amaflags integer NOT NULL default '0', + accountcode varchar(20) NOT NULL default '', + uniqueid varchar(32) NOT NULL default '', + userfield varchar(255) NOT NULL default '' +); + +GRANT INSERT,SELECT ON gophone.cdr TO asterisk@localhost IDENTIFIED BY 'somemysqlpass'; + diff --git a/trunk/gosa-plugins/gofon/gofon/conference/class_divListConferences.inc b/trunk/gosa-plugins/gofon/gofon/conference/class_divListConferences.inc new file mode 100644 index 000000000..442f552cf --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/conference/class_divListConferences.inc @@ -0,0 +1,248 @@ +parent = $parent; + $this->ui = get_userinfo(); + + /* Set list strings */ + $this->SetTitle(_("List of conference rooms")); + $this->SetSummary(_("List of conference rooms")); + + /* Result page will look like a headpage */ + $this->SetHeadpageMode(); + + $this->EnableAplhabet(true); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 100; + if($this->parent->snapshotEnabled()){ + $action_col_size += 20; + } + + /* Toggle all selected / deselected */ + $chk = ""; + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); + $this->AddHeader(array("string" =>_("Name")." - "._("Number"), "attach" => "style=''")); + $this->AddHeader(array("string" => _("Owner"), "attach" => "style='width:200px;'")); + $this->AddHeader(array("string" => _("PIN"), "attach" => "style='width:50px;'")); + $this->AddHeader(array("string" =>_("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'")); + + /* Add Checkboxes / SubSearch checkbox */ + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name ,Text ,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Regular expression for matching conference names"),"*" , true); + } + + + function GenHeader() + { + /* Get all departments within this subtree */ + $base = $this->config->current['BASE']; + $options = $this->create_department_list($this->module); + + /* Get acls */ + $acls = $this->ui->get_permissions($this->selectedBase,"gofonconference/conference"); + $acl_all = $this->ui->has_complete_category_acls($this->selectedBase,"gofonconference") ; + + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(); + + /* Add the rest (base select ....)*/ + $listhead .= _("Base")." ". + "  "; + + /* Create Layers menu */ + $s = ".|"._("Actions")."|\n"; + + /* Append create options */ + if(preg_match("/(c.*w|w.*c)/",$acl_all)){ + $s .= "..|". + " "._("Create")."|\n"; + $s.= "...|". + " "._("Conference")."|conference_new|\n"; + $s.= "..|---|\n"; + } + + /* Multiple options */ + $s.= "..|". + " "._("Remove")."|"."remove_multiple|\n"; + + /* Add Copy & Paste header */ + $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module); + + $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); + + $this->SetDropDownHeaderMenu($s); + $this->SetListHeader($listhead); + } + + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + function setEntries($list) + { + $userimg = "User"; + $editlink = "%s"; + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 100; + if($this->parent->snapshotEnabled()){ + $action_col_size += 20; + } + + $ui = get_userinfo(); + + /* Insert conferneces*/ + foreach($list as $conferencekey => $conference ){ + + $acl = $this->ui->get_permissions($conference['dn'],"gofonconference/conference"); + $acl_all = $this->ui->has_complete_category_acls($conference['dn'],"gofonconference"); + + /* You will need at least read access for the + current conference informations to display it */ + if(!preg_match("/r/",$acl)){ + continue; + } + + $actions =""; + + /* Add copy & cut functionality */ + $actions.= $this->parent->get_copypaste_action($conference['dn'],"gofonconference","conference"); + + /* Add edit icon - This is allowed when we have at least read access. */ + $actions.= ""; + + /* Add snapshot icon */ + $actions.= $this->parent->get_snapshot_action($conference['dn'],$this->module); + + /* Create delete link - Only if we are allowed to delete this entry */ + if(preg_match("/d/",$acl)){ + $actions.= ""; + } + + /* Display PIN icon, only if we are the owner of the given conference */ + $owner = $this->parent->ui->dn==$conference['goFonConferenceOwner'][0]; + $p_acl = $this->ui->get_permissions($conference['dn'],"gofonconference/conference","goFonPIN"); + if((isset($conference['goFonPIN'][0])) && $owner && preg_match("/r/",$p_acl)){ + $pin = "PIN"; + }else{ + $pin = " "; + } + + /* Display numer of the conference if we are allowed to view it */ + $n_acl = $this->ui->get_permissions($conference['dn'],"gofonconference/conference","telephoneNumber"); + if(isset($conference['telephoneNumber'][0]) && preg_match("/r/",$n_acl)){ + $number = " - ".$conference['telephoneNumber'][0]; + }else{ + $number = "  - ?"; + } + + /* Get conference owner name */ + $ldap= $this->parent->config->get_ldap_link(); + $ldap->cat($conference['goFonConferenceOwner'][0], array('cn','dn')); + $data = $ldap->fetch(); + if(isset($data['cn'][0])){ + $cn = $data['cn'][0]; + }else{ + $cn = _("Unknown"); + } + + /* Create title */ + $title=""; + if(isset($data['dn'])){ + $title = " title='".preg_replace("/ /"," ",LDAP::fix($data['dn']))."' "; + } + + /* Cutted objects should be displayed in light grey */ + $display = $conference['cn'][0].$number; + if($this->parent->CopyPasteHandler){ + foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){ + if($queue_data['dn'] == $conference['dn']) { + $display = "".$display.""; + break; + } + } + } + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $a_field1 = array("string"=>sprintf($userimg,_("Conference")), "attach" => $title." style='text-align:center;width:20px;'"); + $a_field2 = array("string"=>sprintf($editlink,$conferencekey,$display), "attach" => $title." style=''"); + $a_field3 = array("string"=> $cn , "attach" => $title." style='width:200px;'"); + $a_field4 = array("string"=> $pin, "attach" => $title." style='width:50px;'"); + $a_field5 = array("string"=> preg_replace("/%KEY%/",$conferencekey,$actions), + "attach"=> $title."style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); + + $this->AddElement(array($field0,$a_field1,$a_field2,$a_field3,$a_field4,$a_field5)); + } + + /* Create summary string for list footer */ + $num_deps=0; + if(!$this->SubSearch){ + $num_deps = count($this->Added_Departments); + } + $num_objs = count($list); + + $num_obj_str = sprintf(_("Number of listed '%s'"),_("conferences")); + $num_dep_str = sprintf(_("Number of listed '%s'"),_("departments")); + + $str = "".$num_obj_str." ".$num_objs."    "; + $str.= "".$num_dep_str." ".$num_deps."    "; + + $this->set_List_Bottom_Info($str); + } + + function Save() + { + MultiSelectWindow :: Save(); + } + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow :: save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/conference/class_phoneConferenceGeneric.inc b/trunk/gosa-plugins/gofon/gofon/conference/class_phoneConferenceGeneric.inc new file mode 100644 index 000000000..fe083b72d --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/conference/class_phoneConferenceGeneric.inc @@ -0,0 +1,802 @@ +is_account = TRUE; + $this->ui = get_userinfo(); + $this->orig_dn = $dn; + + $this->languages= get_languages(TRUE,TRUE); + + + /* Check server configurations + * Load all server configuration in $this->goFonHomeServers if available + * and use first server as default if necessary. + */ + $a_SETUP= array(); + $config = session::get('config'); + if(isset($config->data['SERVERS']['FON']) && is_callable("mysql_connect")) { + + /* Set available server */ + $this->goFonHomeServers = $config->data['SERVERS']['FON']; + + /* Set default server */ + if($this->dn == "new"){ + $this->goFonHomeServer = $this->goFonHomeServers[0]['DN']; + } + + /* Remember inital home server, to be able to remove old entries */ + $this->init_HomeServer = $this->goFonHomeServer; + + /* get config */ + if(!isset($this->goFonHomeServers[$this->goFonHomeServer])){ + msg_dialog::display(_("Obsolete entry"), sprintf(_("The current home server is not available anymore. It will be moved to '%s' if you save this entry!"), preg_replace("/,/",", ",$this->goFonHomeServers[0]['DN'])), ERROR_DIALOG); + + $this->goFonHomeServer = $this->goFonHomeServers[0]['DN']; + $this->init_HomeServer = $this->goFonHomeServers[0]['DN']; + } + $cur_cfg = $this->goFonHomeServers[$this->goFonHomeServer]; + } + + /* Set base */ + if ($this->dn == "new"){ + $ui= get_userinfo(); + if(session::is_set('CurrentMainBase')){ + $this->base = session::get('CurrentMainBase'); + }else{ + $this->base= dn2base($ui->dn); + } + } else { + + /* Get base */ + $this->base = preg_replace ("/^[^,]+,".preg_quote(get_ou('phoneConferenceRDN'), '/')."/i","",$this->dn);; + } + + $this->goFonConferenceOwner=$this->ui->dn; + + /* Parse Options ... + * Parameter|Lifetime|number + */ + if($this->dn!="new"){ + $tmp1= split("\|",$this->attrs['goFonConferenceOption'][0]); + + for($i = 0 ; $i < strlen($tmp1[0]);$i++){ + $varname = "goFonConferenceOption_".$tmp1[0][$i]; + if($tmp1[0][$i]=="d"){ + $this->goFonConferenceOption_D = $tmp1[0][$i]; + }else{ + $this->$varname = $tmp1[0][$i]; + } + } + + $this->goFonConferenceOptionLifetime = $tmp1[1]; + if(isset($tmp1[2]) && isset($this->languages[$tmp1[2]])){ + $this->language = $tmp1[2]; + } + + $this->old_tele_number = $this->telephoneNumber; + } + $this->old_dn = $this->dn; + $this->old_cn = $this->cn; + $this->old_base = $this->base; + $this->orig_base = $this->base; + $this->orig_dn = $this->dn; + + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log last action */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","gofonconference/".get_class($this),$this->dn); + } + + $smarty= get_smarty(); + + $smarty->assign("bases" ,$this->config->idepartments); + $smarty->assign("base" ,$this->base); + + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once && $this->acl_is_writeable("base")){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + foreach ($this->attributes as $val){ + $smarty->assign("$val", $this->$val); + if(!$this->$val){ + $smarty->assign($val."CHK", ""); + }else{ + $smarty->assign($val."CHK", " checked "); + } + } + + /* Create array with goFonHomeServer */ + $tmp = array(); + foreach($this->goFonHomeServers as $dn => $val){ + if(!is_numeric($dn)){ + $tmp[$dn] = $val['SERVER']; + } + } + $smarty->assign("language",$this->language); + $smarty->assign("languages",$this->languages); + $smarty->assign("goFonHomeServers",$tmp); + $smarty->assign("goFonConferenceOptions", array("D"=>"Conference ","d"=>"Conference without PIN")); + $smarty->assign("goFonConferenceOptionFormats", array("WAV"=>"Wave","GSM"=>"GSM","WAV49"=>"Wave49")); + $smarty->assign("goFonConferenceOption", $this->goFonConferenceOption_D); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + if($this->acl_is_writeable("base")){ + $smarty->assign("baseSelect",true); + }else{ + $smarty->assign("baseSelect",false); + } + + $smarty->assign("bases" ,$this->get_allowed_bases()); + $smarty->assign("base_select" ,$this->base); + + + if(session::get('js')==1){ + if($this->goFonConferenceOption_P != "P"){ + $smarty->assign("goFonPINACL", $this->getacl("goFonPIN",TRUE)); + $smarty->assign("goFonPIN",""); + } + if($this->goFonConferenceOption_r != "r"){ + $smarty->assign("goFonConferenceOptionFormatACL", $this->getacl("goFonConferenceOptionr",TRUE)); + } + } + return($smarty->fetch (get_template_path('generic.tpl', TRUE))); + } + + + function remove_from_parent() + { + /* Check if 'old' home server is available in gosa FON server configuration + * Try to remove this entry from database and display errors. + */ + if(isset($this->goFonHomeServers[$this->goFonHomeServer])){ + $str = $this->SQL_remove_me(true); + if($str){ + msg_dialog::display(_("Error"), $str, ERROR_DIALOG); + return false; + } + }else{ + msg_dialog::display(_("Error"), sprintf(_("Cannot delete entry from server '%s' because it seems to be removed!"), preg_replace("/,/",", ",$this->goFonHomeServer)), ERROR_DIALOG); + return false; + } + + /* Remove ldap entry */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $ldap->recursive_remove(); + + new log("remove","gofonconference/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove'); + } + + + /* Save data to object */ + function save_object() + { + if(isset($_POST['phoneConferenceGeneric'])){ + + /* Get selected language */ + if($this->acl_is_writeable("language") && isset($_POST['language']) && isset($this->languages[get_post('language')])){ + $this->language = get_post('language'); + } + + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + /* Save base, since this is no LDAP attribute */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + foreach(array("goFonConferenceOption_P","goFonConferenceOption_r","goFonConferenceOption_M","goFonConferenceOption_s", + "goFonConferenceOption_i","goFonConferenceOption_c","goFonConferenceOption_D") as $attrs){ + + /* Acl can't contain _ so we remove it here. */ + $acl_name = preg_replace("/_/","",$attrs); + + if($this->acl_is_writeable($acl_name)){ + + if(isset($_POST[$attrs])){ + $this->$attrs = $_POST[$attrs]; + }else{ + $this->$attrs = false; + } + } + } + } + } + + + function check_database_accessibility() + { + /* Check if mysql extension is available */ + if(!is_callable("mysql_pconnect")){ + return(msgPool::missingext("php-mysql")); + } + + /******************** + * Check currently selected home server + ********************/ + + $cfg_Current = $this->goFonHomeServers[$this->goFonHomeServer]; + $r_current = @mysql_pconnect($cfg_Current['SERVER'],$cfg_Current['LOGIN'],$cfg_Current['PASSWORD']); + if(!$r_current){ + new log("debug","gofonconference/".get_class($this),"",array(),@mysql_error($r_current)); + return(msgPool::dbconnect("GOfon",@mysql_error($r_current), $cfg_Current['SERVER'])); + } + $db_current = @mysql_select_db($cfg_Current['DB'],$r_current); + if(!$db_current){ + new log("debug","gofonconference/".get_class($this),"",array(),@mysql_error($r_current)); + mysql_close($r_current); + return(msgPool::dbselect("GOfon",@mysql_error($r_current), $cfg_Current['DB'])); + } + + /******************** + * Check init home server + ********************/ + + if($this->goFonHomeServers != $this->init_HomeServer){ + $cfg_Init = $this->goFonHomeServers[$this->init_HomeServer] ; + $r_init = @mysql_pconnect($cfg_Init['SERVER'],$cfg_Init['LOGIN'],$cfg_Init['PASSWORD']); + if(!$r_init){ + new log("debug","gofonconference/".get_class($this),"",array(),@mysql_error($r_init)); + return(msgPool::dbconnect("GOfon",@mysql_error($r_current), $cfg_Init['SERVER'])); + } + $db_init = @mysql_select_db($cfg_Init['DB'],$r_init); + if(!$db_init){ + new log("debug","gofonconference/".get_class($this),"",array(),@mysql_error($r_init)); + mysql_close($r_init); + return(msgPool::dbselect("GOfon",@mysql_error($r_current), $cfg_Init['DB'])); + } + } + } + + /* Check values */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if($this->is_number_used()){ + $message[] = $this->is_number_used(); + } + + /* Check if previously selected server is still available */ + if($this->initially_was_account && !isset($this->goFonHomeServers[$this->goFonHomeServer])){ + $message[]= sprintf(_("The previously selected asterisk home server '%s' is no longer available!"),preg_replace("/,/",", ",$this->goFonHomeServer)); + return($message); + } + + if((empty($this->goFonPIN))&&($this->goFonConferenceOption_P=="P")&&($this->goFonConferenceOption_D=="D")){ + $message[]= msgPool::required(_("PIN")); + } + + if($this->cn == ""){ + $message[] = msgPool::required(_("Name")); + } + + if(!is_numeric($this->telephoneNumber)){ + $message[] = msgPool::invalid(_("Number"),$this->telephoneNumber,"/[0-9]/"); + } + + if(!((is_numeric($this->goFonConferenceOptionLifetime))||(empty($this->goFonConferenceOptionLifetime)))){ + $message[] = msgPool::invalid(_("Lifetime"),$this->goFonConferenceOptionLifetime,"/[0-9]/"); + } + + /* Check if add could be successful */ + $str = $this->SQL_add_me(false); + if(!empty($str)){ + $message[] = $str; + } + + if($this->old_cn != $this->cn || $this->base != $this->old_base){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd(get_ou('phoneConferenceRDN').$this->base); + $ldap->search("(&(objectClass=goFonConference)(cn=".$this->cn."))",array("cn")); + if($ldap->count()){ + $message[] = msgPool::duplicated(_("Name")); + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return $message; + } + + + function SQL_add_me($save) + { + /* Check if there is at least on server configuration */ + if(!count($this->goFonHomeServers)){ + return(msgPool::noserver(_("GOfon"))); + } + + /******************** + * Get configuration and try to connect + ********************/ + + /* Check if databases are reachable, returns an error string if anything fails */ + $error_str = $this->check_database_accessibility(); + if($error_str){ + return($error_str); + } + + /* Remove old entries, returns an error string if anything fails */ + $error_str = $this->SQL_remove_me($save); + if($error_str){ + return($error_str); + } + + /* Connect to current database to be able to add new entries */ + $cfg_Current = $this->goFonHomeServers[$this->goFonHomeServer] ; + $res_cur = @mysql_pconnect($cfg_Current['SERVER'],$cfg_Current['LOGIN'],$cfg_Current['PASSWORD']); + $db_cur = @mysql_select_db($cfg_Current['DB'],$res_cur); + + /******************** + * Remove entries that could cause trouble + ********************/ + + /* If the current home server is different to the initial home server, + * there may be already some entries with the given telephoneNumber and/or cn. + * We must remove those entries to avoid duplicate use of the same extension name. + */ + if($this->goFonHomeServer != $this->init_HomeServer){ + $query = "SELECT id FROM ".$cfg_Current['EXT_TABLE']." WHERE exten='".$this->telephoneNumber."' OR exten='".$this->cn."';"; + $res = @mysql_query($query,$res_cur); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + if(!$res){ + new log("debug","gofonconference/".get_class($this),"",array(),@mysql_error($res_cur)); + return(msgPool::dbquery("GOfon", @mysql_error($res_cur),$cfg_Current['SERVER'])); + } + if($save && mysql_affected_rows($res_cur)) { + $SQL = "DELETE FROM ".$cfg_Current['EXT_TABLE']." + WHERE (exten='".$this->telephoneNumber."') + OR (exten='".$this->cn."')"; + + /* Query and ensure that everything went fine */ + $res = @mysql_query($SQL,$res_cur); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$SQL, "Database query"); + if(!$res){ + new log("debug","gofonconference/".get_class($this),"",array(),@mysql_error($res_cur)); + return(msgPool::dbquery("GOfon", @mysql_error($res_cur),$cfg_Current['SERVER'])); + } + } + } + + /******************** + * Add new conference entry + ********************/ + if((!empty($this->telephoneNumber))&&($save==true)){ + + /* Create string out of conference Flags */ + $parameter =""; + foreach(array("goFonConferenceOption_P","goFonConferenceOption_r","goFonConferenceOption_M","goFonConferenceOption_s", + "goFonConferenceOption_i","goFonConferenceOption_c","goFonConferenceOption_D") as $attrs){ + $parameter .= $this->$attrs; + } + + $i=1; + $EXT=array(); + $context="GOsa"; + // Set Language to German + $EXT[$i]['exten'] =$this->telephoneNumber; + $EXT[$i]['context'] = $context; + $EXT[$i]['priority']= $i; + $EXT[$i]['app'] ="SetLanguage"; + $EXT[$i]['appdata'] =$this->language; + $i++; + + if($this->goFonConferenceOption_r == "r"){ + + // Recordingformat for conference + $EXT[$i]['exten'] =$this->telephoneNumber; + $EXT[$i]['context'] =$context; + $EXT[$i]['priority']= $i; + $EXT[$i]['app'] ="Setvar"; + $EXT[$i]['appdata'] ="MEETME_RECORDINGFORMAT=".$this->goFonConferenceOptionFormat; + $i++; + + } + + // Answer Call + $EXT[$i]['exten'] =$this->telephoneNumber; + $EXT[$i]['context'] =$context; + $EXT[$i]['priority']=$i; + $EXT[$i]['app'] ="answer"; + $EXT[$i]['appdata'] =""; + $i++; + + // Start Conference + $EXT[$i]['exten'] =$this->telephoneNumber; + $EXT[$i]['context'] =$context; + $EXT[$i]['priority']=$i; + $EXT[$i]['app'] ="MeetMe"; + + if(empty($this->goFonPIN)) { + $EXT[$i]['appdata'] =$this->telephoneNumber."|".$parameter; + }else{ + $EXT[$i]['appdata'] =$this->telephoneNumber."|".$parameter."|".$this->goFonPIN; + } + $i++; + + // Start Conference + $EXT[$i]['exten'] =$this->cn; + $EXT[$i]['context'] =$context; + $EXT[$i]['priority']=1; + $EXT[$i]['app'] ="Goto"; + $EXT[$i]['appdata'] =$this->telephoneNumber."|1"; + $SQL=array(); + + foreach($EXT as $keytop => $valtop){ + $s_keys = ""; + $s_values = ""; + foreach($valtop as $key=>$val){ + $s_keys .="`".$key."`,"; + $s_values .="'".$val."',"; + } + $s_keys =preg_replace("/\,$/","",$s_keys); + $s_values =preg_replace("/\,$/","",$s_values); + $SQL[]="INSERT INTO ".$cfg_Current['EXT_TABLE']." (".$s_keys.") VALUES (".$s_values.");"; + } + foreach($SQL as $sqlsyn){ + mysql_query($sqlsyn,$res_cur); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$sqlsyn, "Database query"); + } + } + + @mysql_close($res_cur); + } + + + /* Remove initial entry from database + * This function checks if there is an entry in the + * initial home server that uses this->old_cn or $this->old_tele_number + * and removes this entries. + * This function is called from save and remove_from parent. + * + * The parameter '$save' is false if we just + * want to check if a remove is possible. + * And true if we realy want to remove the entries. + */ + function SQL_remove_me($save) + { + /* check database access */ + $str = $this->check_database_accessibility(); + if($str){ + return($str); + } + + /* Connect to old database */ + $cfg_Init = $this->goFonHomeServers[$this->init_HomeServer] ; + $r_init = @mysql_pconnect($cfg_Init['SERVER'],$cfg_Init['LOGIN'],$cfg_Init['PASSWORD']); + $db_init = @mysql_select_db($cfg_Init['DB'],$r_init); + + /* Check if there is an old entry */ + $query = "SELECT id FROM ".$cfg_Init['EXT_TABLE']." WHERE exten='".$this->old_tele_number."' OR exten='".$this->old_cn."';"; + $res = @mysql_query($query,$r_init); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + if(!$res){ + new log("debug","gofonconference/".get_class($this),"",array(),@mysql_error($r_init)); + return(msgPool::dbquery("GOfon", @mysql_error($res_cur),$cfg_Init['SERVER'])); + } + + /* There are entries using this cn and/or phone number */ + if($save && mysql_affected_rows($r_init)) { + $SQL = "DELETE FROM ".$cfg_Init['EXT_TABLE']." + WHERE (exten='".$this->old_tele_number."') + OR (exten='".$this->old_cn."')"; + + /* Query and ensure that everything went fine */ + $res = @mysql_query($SQL,$r_init); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$SQL, "Database query"); + if(!$res){ + new log("debug","gofonconference/".get_class($this),"",array(),@mysql_error($r_init)); + return(msgPool::dbquery("GOfon", @mysql_error($res_cur),$cfg_Init['SERVER'])); + } + + }//ENDE old num availiable ... + @mysql_close($r_init); + return(false); + } + + + + /* This function checks if the given phonenumbers are available or already in use*/ + function is_number_used() + { + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(|(objectClass=goFonAccount)(objectClass=goFonQueue)(objectClass=goFonConference))", array("telephoneNumber","cn","uid")); + while($attrs = $ldap->fetch()) { + unset($attrs['telephoneNumber']['count']); + foreach($attrs['telephoneNumber'] as $tele){ + if(!isset($attrs['cn'][0])) $attrs['cn'][0]=$attrs['dn']; + if(!isset($attrs['uid'][0])) $attrs['uid'][0]=$attrs['dn']; + $numbers[$tele]=$attrs; + } + } + + $num = $this->telephoneNumber; + if((isset($numbers[$num]))&&(($numbers[$num]['cn'][0]!=$this->old_cn))){ + if(isset($numbers[$num]['uid'][0])){ + return sprintf(_("'%s' is already assigned to '%s'!"),$num,$numbers[$num]['uid'][0]); + }else{ + return sprintf(_("'%s' is already assigned to '%s'!"),$num,$numbers[$num]['cn'][0]); + } + } + } + + + /* Save to LDAP */ + function save() + { + + if((!isset($this->attrs['goFonPIN']))){ + $pin_use = false; + }else{ + $pin_use = true; + } + + /* Unset PIN if this is a conference without PIN */ + if((!empty($this->goFonPIN)||($this->goFonConferenceOption_P=="P"))&&($this->goFonConferenceOption_D=="d")){ + $this->goFonPIN = ""; + } + + plugin::save(); + + if(empty($this->old_tele_number)){ + $this->old_tele_number= $this->telephoneNumber; + } + + $this->SQL_add_me(true); + + if(empty($this->goFonConferenceOption_P)){ + if($pin_use){ + $this->attrs['goFonPIN']=array(); + }else{ + unset($this->attrs['goFonPIN']); + } + } + $this->attrs['goFonConferenceOption']=""; + foreach(array("goFonConferenceOption_P","goFonConferenceOption_r","goFonConferenceOption_M","goFonConferenceOption_s", + "goFonConferenceOption_i","goFonConferenceOption_c","goFonConferenceOption_D","goFonConferenceOptionFormat") as $attrs){ + $this->attrs['goFonConferenceOption'] .= $this->$attrs; + unset($this->attrs[$attrs]); + } + + $this->attrs['goFonConferenceOption'].="|".$this->goFonConferenceOptionLifetime; + $this->attrs['goFonConferenceOption'].="|".$this->language; + unset($this->attrs['goFonConferenceOptionLifetime']); + + /* Write back to ldap */ + + unset($this->attrs['base']); + + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($this->dn, array('dn')); + + if ($ldap->count()){ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + $this->handle_post_events('modify'); + } else { + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + $this->handle_post_events('add'); + } + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","gofonconference/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","gofonconference/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->postcreate(); + } + + + function getCopyDialog() + { + $smarty = get_smarty(); + $smarty->assign("cn" ,$this->cn); + $smarty->assign("telephoneNumber" ,$this->telephoneNumber); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + if(isset($_POST['telephoneNumber'])){ + $this->telephoneNumber = $_POST['telephoneNumber']; + } + } + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source) ; + + $source_o = new conference($this->config,$source['dn']); + + foreach($this->attributes as $attr){ + $this->$attr = $source_o->$attr; + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Conference"), + "plDescription" => _("Phone conference management"), + "plSelfModify" => TRUE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("gofonconference" => array("description" => _("GOfon conference"), + "objectClass" => "gofonConference")), + + "plProvidedAcls" => array( + "cn" => _("Name"), + "base" => _("Base"), + "description" => _("Description"), + "goFonPIN" => _("Conference PIN"), + + "language" => _("Language"), + + "goFonHomeServer" => _("Home server"), + "goFonConferenceOptionP" => _("Preset PIN"), + "goFonConferenceOptionr" => _("Record conference"), + "goFonConferenceOptionM" => _("Play music on hold"), + "goFonConferenceOptions" => _("Activate menu"), + "goFonConferenceOptioni" => _("Announce user activity"), + "goFonConferenceOptionc" => _("Count user"), + "goFonConferenceOptionD" => _("Conference type"), + + "goFonConferenceOptionFormat" => _("Format"), + "goFonConferenceOptionLifetime" => _("Lifetime"), + "telephoneNumber" => _("Telephone number"), + "goFonConferenceOwner" => _("Owner")) + )); + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/conference/class_phoneConferenceManagment.inc b/trunk/gosa-plugins/gofon/gofon/conference/class_phoneConferenceManagment.inc new file mode 100644 index 000000000..4bf90de84 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/conference/class_phoneConferenceManagment.inc @@ -0,0 +1,583 @@ +ui = $ui; + $this->dn = ""; + $this->config = $config; + $this->DivListConference = new divListConference($this->config,$this); + + /* Copy & Paste enabled ?*/ + if ($this->config->get_cfg_value("copyPaste") == "true"){ + $this->CopyPasteHandler = new CopyPasteHandler($this->config); + } + } + + + /* Execute class and display something */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + session::set('LOCK_VARS_TO_USE',array("/^menu_action/","/^id$/","/^act$/","/^conference_/","/^item_selected/","/^remove_multiple_conferences/")); + + /*************** + Variable initialisation + ***************/ + + /* Reload departments */ + $smarty = get_smarty(); + $display = ""; + $s_action = ""; // Will contain an action, like del or edit + $s_entry = ""; // The entry name for edit delete -... + + + /*************** + Check posts + ***************/ + + foreach($_POST as $key => $post){ + if(preg_match("/^conference_new.*/i",$key)){ + $s_action = "new"; + // Post for delete + }elseif(preg_match("/^conference_del.*/",$key)){ + $s_action = "del"; + $s_entry = preg_replace("/^conference_del_/i","",$key); + $s_entry = preg_replace("/_.*$/","",$s_entry); + // Post for edit + }elseif(preg_match("/conference_edit_.*/",$key)){ + $s_action="edit"; + $s_entry = preg_replace("/conference_edit_/i","",$key); + $s_entry = preg_replace("/_.*$/","",$s_entry); + }elseif(preg_match("/^remove_multiple_conferences/",$key)){ + $s_action="del_multiple"; + }elseif(preg_match("/^editPaste.*/i",$key)){ + $s_action="editPaste"; + }elseif(preg_match("/^copy_.*/",$key)){ + $s_action="copy"; + $s_entry = preg_replace("/^copy_/i","",$key); + $s_entry = preg_replace("/_.$/","",$s_entry); + }elseif(preg_match("/^cut_.*/",$key)){ + $s_action="cut"; + $s_entry = preg_replace("/^cut_/i","",$key); + $s_entry = preg_replace("/_.$/","",$s_entry); + }elseif(preg_match("/^multiple_copy_objects/",$key)){ + $s_action = "copy_multiple"; + }elseif(preg_match("/^multiple_cut_objects/",$key)){ + $s_action = "cut_multiple"; + } + } + + /* Edit Entry */ + if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ + $s_action = "edit"; + $s_entry = $_GET['id']; + } + + /* handle C&P from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ + $s_action = "copy_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){ + $s_action = "cut_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){ + $s_action = "editPaste"; + } + + /* Create options */ + if(isset($_POST['menu_action']) && $_POST['menu_action'] == "conference_new"){ + $s_action = "new"; + } + + /* handle remove from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){ + $s_action = "del_multiple"; + } + + + /*************** + Cancel dialogs + ***************/ + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + $this->remove_lock(); + $this->conftab= NULL; + $this->lognames= array();; + $this->cn= ""; + set_object_info(); + } + + + /******************** + Copy & Paste Handling ... + ********************/ + + /* Display the copy & paste dialog, if it is currently open */ + $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); + if($ret){ + return($ret); + } + + + /******************** + Delete MULTIPLE entries requested, display confirm dialog + ********************/ + + if ($s_action=="del_multiple"){ + $ids = $this->list_get_selected_items(); + + $this->dns = array(); + if(count($ids)){ + $disallowed = array(); + foreach($ids as $id){ + $dn = $this->conferences[$id]['dn']; + $acl = $this->ui->get_permissions($dn, "gofonconference/conference"); + if(preg_match("/d/",$acl)){ + $this->dns[$id] = $dn; + }else{ + $disallowed[] = $dn; + } + } + + if(count($disallowed)){ + msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); + } + + if(count($this->dns)){ + + /* Check locks */ + if ($user= get_multiple_locks($this->dns)){ + return(gen_locked_message($user,$this->dns)); + } + + /* Prepare entry list to be displayed */ + $dns_names = array(); + foreach($this->dns as $dn){ + $dns_names[] = LDAP::fix($dn); + } + + /* Lock the current entry, so nobody will edit it during deletion */ + add_lock ($this->dns, $this->ui->dn); + + $smarty->assign("info", msgPool::deleteInfo($dns_names,_("conference"))); + $smarty->assign("multiple", true); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + /******************** + Delete MULTIPLE entries confirmed + ********************/ + + /* Confirmation for deletion has been passed. Users should be deleted. */ + if (isset($_POST['delete_multiple_conference_confirm'])){ + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + $this->dn = $dn; + $acl = $this->ui->get_permissions($this->dn,"gofonconference/conference"); + if(preg_match("/d/",$acl)){ + $this->remove_from_parent(); + } else { + msg_dialog::display(_("Permission error"), _("You have not permission to delete this entry!"), ERROR_DIALOG); + } + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /******************** + Delete MULTIPLE entries Canceled + ********************/ + + /* Remove lock */ + if(isset($_POST['delete_multiple_conference_cancel'])){ + $this->remove_lock(); + $this->dns =array(); + } + + + /*************** + Delete + ***************/ + + /* Delete Entry if Posted action (s_action) == del + * The entry which will be deleted is defined in $s_entry + */ + if ($s_action =="del"){ + + $acl = $this->ui->get_permissions($this->conferences[$s_entry]['dn'],"gofonconference/conference"); + if(preg_match("/d/",$acl)){ + $this->dn= $this->conferences[$s_entry]['dn']; + + /* Check locking */ + if (($conf= get_lock($this->dn)) != ""){ + return(gen_locked_message($conf, $this->dn)); + } else { + add_lock ($this->dn, $this->ui->dn); + $smarty->assign("info", msgPool::deleteInfo(LDAP::fix($this->dn),_("conference"))); + $smarty->assign("multiple", false); + $display.= $smarty->fetch (get_template_path('remove.tpl', TRUE)); + return ($display); + } + } + } + + + /*************** + Delete confirmed + ***************/ + + /* If department deletion is accepted ... + * Finally delete department + */ + if (isset($_POST['delete_department_confirm'])){ + $acl = $this->ui->get_permissions($this->dn,"gofonconference/conference"); + if(preg_match("/d/",$acl)){ + $this->remove_from_parent(); + } else { + msg_dialog::display(_("Permission error"), _("You have not permission to delete this entry!"), ERROR_DIALOG); + } + } + + + /*************** + Edit + ***************/ + + /* Edit Entry if Posted action (s_action) == edit + * The entry which will be edited is defined in $s_entry + */ + if (($s_action=="edit") && (!isset($this->conftab->config))){ + + $this->dn= $this->conferences[$s_entry]['dn']; + + if (($conf= get_lock($this->dn)) != ""){ + return(gen_locked_message ($conf, $this->dn,TRUE)); + } + + /* Lock the current entry, so everyone will get the above dialog */ + add_lock ($this->dn, $this->ui->dn); + + /* Register conftab to trigger edit dialog */ + $this->conftab= new conferencetabs($this->config,$this->config->data['TABS']['CONFERENCETABS'], $this->dn,"gofonconference"); + $this->conftab->set_acl_base($this->dn); + set_object_info($this->dn); + } + + + /*************** + Create new + ***************/ + + /* Insert new entry*/ + if($s_action == "new" ){ + + $dummy_dn = "cn=dummy,".get_ou('phoneConferenceRDN').$this->DivListConference->selectedBase; + $acl = $this->ui->get_permissions($dummy_dn,"gofonconference/conference"); + if(preg_match("/c/",$acl)){ + /* Set up the users ACL's for this 'dn' */ + $this->dn= "new"; + $this->conftab= new conferencetabs($this->config,$this->config->data['TABS']['CONFERENCETABS'], $this->dn,"gofonconference"); + $this->conftab->set_acl_base($dummy_dn); + set_object_info(); + } + } + + + /*************** + Save entry + ***************/ + + /* Edit finished, check and save changes */ + if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply'])) && (isset($this->conftab->config))){ + /* Check tabs, will feed message array */ + $this->conftab->last= $this->conftab->current; + $this->conftab->save_object(); + $message= $this->conftab->check(); + + if (count($message) == 0){ + if($this->conftab->save() == 1){ + gosa_log ("goFonConference object '".$this->dn."' saving failed."); + return; + } + gosa_log ("goFonConference object '".$this->dn."' has been saved"); + + if (!isset($_POST['edit_apply'])){ + $this->remove_lock(); + $this->conftab= NULL; + set_object_info(); + }else{ + + /* Reinitialize tab */ + if($this->conftab instanceof tabs){ + $this->conftab->re_init(); + } + } + + } else { + msg_dialog::displayChecks($message); + } + } + + + /*************** + Display dialogs + ***************/ + + /* if edit or new, show dialog */ + if(($this->conftab) && (isset($this->conftab->config))){ + $display= $this->conftab->execute(); + + /* Don't show buttons if tab dialog requests this */ + + if(($this->conftab instanceOf tabs || $this->conftab instanceOf plugin) && $this->conftab->read_only == TRUE){ + $display.= "

+ +

"; + }elseif (!$this->conftab->by_object[$this->conftab->current]->dialog){ + $display.= "

\n"; + $display.= "\n"; + $display.= " \n"; + if ($this->dn != "new"){ + $display.= "\n"; + $display.= " \n"; + } + $display.= "\n"; + $display.= "

"; + } + return ($display); + } + + + /*************** + display divlist + ***************/ + + /* Check if there is a snapshot dialog open */ + $base = $this->DivListConference->selectedBase; + if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + /* Return rendered main page */ + /* Display dialog with system list */ + $this->DivListConference->parent = $this; + $this->DivListConference->execute(); + + /* Add departments if subsearch is disabled */ + if(!$this->DivListConference->SubSearch){ + $this->DivListConference->AddDepartments($this->DivListConference->selectedBase,5,1); + } + $this->reload(); + $this->DivListConference->setEntries($this->conferences); + return($this->DivListConference->Draw()); + } + + + /* Return departments, that will be included within snapshot detection */ + function get_used_snapshot_bases() + { + return(array(get_ou('phoneConferenceRDN').$this->DivListConference->selectedBase)); + } + + + /* Reload entries for divlist. + * reload all conferences for the current base, with the given regex + */ + function reload() + { + $Base = get_ou('phoneConferenceRDN').$this->DivListConference->selectedBase; + $SubSearch = $this->DivListConference->SubSearch; + $Regex = $this->DivListConference->Regex; + $Flags = GL_SIZELIMIT ; + $Filter = "(&(|(cn=".$Regex.")(description=".$Regex."))(objectClass=goFonConference))"; + $Attrs = array("cn","goFonConferenceOwner","goFonPIN","telephoneNumber"); + + if($SubSearch){ + $Flags |= GL_SUBSEARCH; + } + + $this->conferences= get_list($Filter, "gofonconference", $Base, $Attrs, $Flags); + } + + function remove_from_parent() + { + /* Ehm what are we doinf here ? */ + + $cfg = new conference($this->config, $this->dn); + $cfg->set_acl_category("gofonconference"); + $cfg->set_acl_base($this->dn); + + $cfg->remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->dn); + $ldap->recursive_remove(); + + /* Optionally execute a command after we're done */ + $this->postremove(); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new conftab($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } + + } + + + function copyPasteHandling_from_queue($s_action,$s_entry) + { + /* Check if Copy & Paste is disabled */ + if(!is_object($this->CopyPasteHandler)){ + return(""); + } + + $ui = get_userinfo(); + + /* Add a single entry to queue */ + if($s_action == "cut" || $s_action == "copy"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + $dn = $this->conferences[$s_entry]['dn']; + + if($s_action == "copy" && $ui->is_copyable($dn,"gofonconference","conference")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"conferencetabs","CONFERENCETABS","gofonconference"); + } + if($s_action == "cut" && $ui->is_cutable($dn,"gofonconference","conference")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"conferencetabs","CONFERENCETABS","gofonconference"); + } + } + + /* Add entries to queue */ + if($s_action == "copy_multiple" || $s_action == "cut_multiple"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + + /* Add new entries to CP queue */ + foreach($this->list_get_selected_items() as $id){ + $dn = $this->conferences[$id]['dn']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,"gofonconference","conference")){ + $this->CopyPasteHandler->add_to_queue($dn,"copy","conferencetabs","CONFERENCETABS","gofonconference"); + } + if($s_action == "cut_multiple" && $ui->is_cutable($dn,"gofonconference","conference")){ + $this->CopyPasteHandler->add_to_queue($dn,"cut","conferencetabs","CONFERENCETABS","gofonconference"); + } + } + } + + /* Start pasting entries */ + if($s_action == "editPaste"){ + $this->start_pasting_copied_objects = TRUE; + } + /* Return C&P dialog */ + if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ + + /* Get dialog */ + $this->CopyPasteHandler->SetVar("base",$this->DivListConference->selectedBase); + $data = $this->CopyPasteHandler->execute(); + + /* Return dialog data */ + if(!empty($data)){ + return($data); + } + } + + /* Automatically disable status for pasting */ + if(!$this->CopyPasteHandler->entries_queued()){ + $this->start_pasting_copied_objects = FALSE; + } + return(""); + } + + + function save_object() + { + $this->DivListConference->save_object(); + } + + + /*! \brief Remove entry locks if the plugin was aborted. + */ + function remove_lock() + { + if($this->dn) { + del_lock($this->dn); + }elseif(isset($this->conftab) && isset($this->conftab->dn)){ + del_lock ($this->conftab->dn); + } + if(is_array($this->dns) && count($this->dns)) del_lock($this->dns); + } + + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/conference/generic.tpl b/trunk/gosa-plugins/gofon/gofon/conference/generic.tpl new file mode 100644 index 000000000..901e5c080 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/conference/generic.tpl @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + + + +
+

+ {t}Properties{/t} +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + {$must} + +{render acl=$cnACL} + +{/render} +
+ + {$must} + +{render acl=$goFonConferenceOptionDACL} + +{/render} +
+
+
+ + {$must} + + +{render acl=$baseACL} + +{/render} + +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} + +
{$must} +{render acl=$goFonHomeServerACL} + +{/render} +
{t}Language{/t} + +{render acl=$languageACL} + +{/render} +
+
+   + + + + + + + + + + + + + + +
+ + +{render acl=$descriptionACL} + +{/render} +
+ {t}Lifetime (in days){/t} + +{render acl=$goFonConferenceOptionLifetimeACL} + +{/render} +
+ {t}Phone number{/t} + {$must} + +{render acl=$telephoneNumberACL} + +{/render} +
+ +
+

 

+
+

+ {t}Options{/t} +

+
+ + + + + + + + + + + + + + + + + +
+{render acl=$goFonConferenceOptionPACL} + +{/render} + + {t}Preset PIN{/t} +
+   + + {t}PIN{/t} +{render acl=$goFonPINACL} + +{/render} +
+{render acl=$goFonConferenceOptionrACL} + +{/render} + {t}Record conference{/t} +
+   + + {t}Sound file format{/t}  +{render acl=$goFonConferenceOptionFormatACL} + +{/render} +
+ +
+   + + + + + + + + + + + + + + + +
+{render acl=$goFonConferenceOptionMACL} + +{/render} + {t}Play music on hold{/t} +
+{render acl=$goFonConferenceOptionsACL} + +{/render} + {t}Activate session menu{/t} +
+{render acl=$goFonConferenceOptioniACL} + +{/render} + {t}Announce users joining or leaving the conference{/t} +
+{render acl=$goFonConferenceOptioncACL} + +{/render} + {t}Count users{/t} +
+ +
+ + + + + + diff --git a/trunk/gosa-plugins/gofon/gofon/conference/headpage.tpl b/trunk/gosa-plugins/gofon/gofon/conference/headpage.tpl new file mode 100644 index 000000000..5b5a95a89 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/conference/headpage.tpl @@ -0,0 +1,45 @@ + + + + + +
+
+

+ {t}List of conference rooms{/t} {$hint} +

+
+
+ {$conferencehead} +
+
+
+ {$conferences} + +
+
+
+

[i]{t}Information{/t}

+
+
+

+ {t}This menu allows you to create, delete and edit selected phone conferences. Having a large number of phone conferences, you might prefer the range selectors on top of the conferences list.{/t} +

+
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ +
+ {$apply} +
+ + +
+ + diff --git a/trunk/gosa-plugins/gofon/gofon/conference/main.inc b/trunk/gosa-plugins/gofon/gofon/conference/main.inc new file mode 100644 index 000000000..43ad9547c --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/conference/main.inc @@ -0,0 +1,63 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('conference'); +}else{ + + + /* Create usermanagement object on demand */ + if (!session::is_set('conference')){ + session::set("conference",new phoneConferenceManagment($config, $ui)); + } + $conference = session::get('conference'); + $conference->save_object(); + $output= $conference->execute(); + + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header(get_template_path('plugins/gofon/images/conference.png'), _("Conference management"), "\"\" ".LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path('plugins/gofon/images/conference.png'), _("Conference management")); + } + + /* Reset requested? */ + if (isset($_GET['reset']) && $_GET['reset'] == 1){ + session::un_set ('conference'); + } + + /* Show and save dialog */ + $display.= $output; + session::set('conference',$conference); +} + +?> diff --git a/trunk/gosa-plugins/gofon/gofon/conference/paste_generic.tpl b/trunk/gosa-plugins/gofon/gofon/conference/paste_generic.tpl new file mode 100644 index 000000000..fa72f3f24 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/conference/paste_generic.tpl @@ -0,0 +1,23 @@ + + + + + + + + + +
+ + {$must} + + +
+ {t}Phone number{/t} + {$must} + + +
+ diff --git a/trunk/gosa-plugins/gofon/gofon/conference/remove.tpl b/trunk/gosa-plugins/gofon/gofon/conference/remove.tpl new file mode 100644 index 000000000..7f4b8f1e6 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/conference/remove.tpl @@ -0,0 +1,24 @@ +
+  {t}Warning{/t} +
+ {$info} +

+ {t}This includes 'all' accounts, systems, etc. in this subtree. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+ +

+ {t}Best thing to do before performing this action would be to save the current contents of your LDAP tree in a file. So - if you've done so - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+{if $multiple} + +   + +{else} + +   + +{/if} +

+ diff --git a/trunk/gosa-plugins/gofon/gofon/conference/tabs_conference.inc b/trunk/gosa-plugins/gofon/gofon/conference/tabs_conference.inc new file mode 100644 index 000000000..8d51b1f9b --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/conference/tabs_conference.inc @@ -0,0 +1,41 @@ +base= $this->by_object['conference']->base; + + /* Add references/acls/snapshots */ + $this->addSpecialTabs(); + } + + function check($ignore_account= FALSE) + { + return (tabs::check(TRUE)); + } + + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['conference']; + $new_dn= 'cn='.$baseobject->cn.','.get_ou('phoneConferenceRDN').$baseobject->base; + + if(strtolower($this->dn)==strtolower($new_dn)){ + $this->dn=$new_dn; + } + + if($this->dn != $new_dn && $this->dn != "new"){ + $baseobject->recursive_move($this->dn, $new_dn); + } + $this->dn= $new_dn; + + tabs::save(TRUE); + } + +} + +?> diff --git a/trunk/gosa-plugins/gofon/gofon/fonreports/class_fonreport.inc b/trunk/gosa-plugins/gofon/gofon/fonreports/class_fonreport.inc new file mode 100644 index 000000000..a5e932a3d --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/fonreports/class_fonreport.inc @@ -0,0 +1,420 @@ +config = $config; + $this->ui = $ui; + $this->search_base= get_base_from_people($ui->dn); + + $this->month = date("m"); + $this->year = date("Y"); + + /* Use filter settings if we have already searched */ + if (!session::is_set("fonfilter")){ + $fonfilter = array(); + foreach($this->attributes_SO as $name){ + $fonfilter[$name]=$this->$name; + } + session::set("fonfilter", $fonfilter); + }else{ + $fonfilter = session::get("fonfilter"); + foreach($this->attributes_SO as $name){ + $this->$name = $fonfilter[$name]; + } + } + } + + + /* Save ui interactions and store results in session, + to remember settings */ + function save_object() + { + $fonfilter= session::get("fonfilter"); + if(isset($_POST['EntryPerPage'])){ + $this->range = $_POST['EntryPerPage']; + } + if (isset($_GET['start'])){ + $this->start= (int)$_GET['start']; + } + foreach( array("year", "month", "search_for", "search_base") as $type){ + if (isset($_POST[$type])){ + $this->$type= $_POST[$type]; + } + } + + /* Adapt sorting */ + if (isset($_GET['sort'])){ + if ($this->sort == (int)$_GET['sort']){ + if ($this->sort_direction == "down"){ + $this->sort_direction= "up"; + } else { + $this->sort_direction= "down"; + } + } + $this->sort= (int)$_GET['sort']; + if ($this->sort < 0 || $this->sort > 6){ + $this->sort= 0; + } + } + + /* remove unwanted tags */ + $this->search_for = stripslashes(preg_replace("/[^0-9a-z\*\+ \-]/i","",$this->search_for)); + + foreach($this->attributes_SO as $name){ + $fonfilter[$name] = $this->$name; + } + session::set("fonfilter", $fonfilter); + } + + + /* Search & display results */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* GVet template engine */ + $smarty= get_smarty(); + + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","fonreport/".get_class($this),$this->dn); + } + + /***************** + Variable Init + *****************/ + + $fields_str = ""; + + $months= array(); + for($i = 1 ; $i <= 12 ; $i ++ ){ + $months[$i] = _(date("F",gmmktime(0,0,0,$i))); + } + + /* Prepare template */ + $current= date("Y"); + $years= array(); + for ($y= $current - 5; $y<=$current; $y++){ + $years[$y]= $y; + } + + /***************** + Smarty + *****************/ + $bases = array(); + $cat_bases = $this->ui->get_module_departments("fonreport"); + foreach($this->config->idepartments as $dn => $name){ + if(in_array_ics($dn,$cat_bases)){ + $bases[$dn] = $name; + } + } + + if(!isset($bases[$this->search_base])){ + $this->search_base = key($bases); + } + + $smarty->assign("plug", "?plug=".validate($_GET['plug'])); + $smarty->assign("launchimage", get_template_path('images/launch.png')); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("search_for", $this->search_for); + $smarty->assign("bases", $bases); + $smarty->assign("base_select", $this->search_base); + $smarty->assign("months", $months); + $smarty->assign("month_select", $this->month); + $smarty->assign("years", $years); + $smarty->assign("year_select", $this->year); + $smarty->assign("search_result", ""); + + + /***************** + Check Database , Table , Connection + *****************/ + + /* Connecting, selecting database */ + if (!isset($this->config->data['SERVERS']['FON'][0])){ + msg_dialog::display(_("Configuration error"), msgPool::noserver(_("GOfon")), WARNING_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + }elseif(!is_callable("mysql_connect")){ + msg_dialog::display(_("Configuration error"), msgPool::missingext("php-mysql"), WARNING_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + }else{ + + $cfg= $this->config->data['SERVERS']['FON'][0]; + $link = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']); + if ($link === FALSE){ + msg_dialog::display(_("Error"), msgPool::dbconnect(_("GOfon"),@mysql_error(),$cfg['SERVER']),ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + if (! @mysql_select_db("gophone")){ + msg_dialog::display(_("Error"), msgPool::dbselect(_("GOfon"),@mysql_error(),$cfg['DB']),ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + } + + + /***************** + Get Query String && Search + *****************/ + + $query = $this->CreateQuerySyntax(); + $cfg = $this->config->data['SERVERS']['FON'][0]; + $link = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']); + + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + + $result = @mysql_query($query); + if ($result === false){ + msg_dialog::display(_("Error"), msgPool::dbquery(_("GOfon"),@mysql_error(),$cfg['SERVER']),ERROR_DIALOG); + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + /***************** + Fetch results + *****************/ + + $report_list= array(); + + /* Restricted attributes will not be displayed, this will be displayed instead */ + $no_acl = ""._("Insufficient permissions").""; + + $no_acl = " "; + + while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { + + foreach($line as $attr => $value){ + + if($attr == "duration") continue; + + $acl = $this->ui->get_permissions($this->search_base,"fonreport/fonreport",$attr); + if(!preg_match("/r/",$acl)){ + $line[$attr] = $no_acl; + } + } + + if($this->ui->get_permissions($this->search_base,"fonreport/fonreport","calldate")){ + $hour= substr($line["calldate"], 11, 2); + $minute=substr($line["calldate"], 14, 2); + $format= _("Y-M-D"); + $date= preg_replace("/Y/", substr($line["calldate"], 0, 4), $format); + $date= preg_replace("/M/", substr($line["calldate"], 5, 2), $date); + $date= preg_replace("/D/", substr($line["calldate"], 8, 2), $date); + $date_str = $date." ".$hour.":".$minute; + }else{ + $date_str = $no_acl; + } + + $append_str = ""; + $append_str .= "".$date_str.""; + + foreach(array("src","dst","channel","lastapp","disposition") as $atr){ + if(isset($line[$atr])){ + $append_str .= "".$line[$atr].""; + } + } + + if($this->ui->get_permissions($this->search_base,"fonreport/fonreport","duration")){ + $append_str .= "".$this->gen_duration($line["duration"]).""; + }else{ + $append_str .= "".$no_acl.""; + } + $report_list[] = $append_str; + } + + $this->report_list= $report_list; + @mysql_close($link); + + + /***************** + Create list of results + *****************/ + + /* Generate output */ + $mod = 0; + $output = ""; + if(count($this->report_list) < $this->start){ + $this->start = 0; + } + foreach($this->report_list as $val){ + if ($mod < $this->start) { + $mod++; + continue; + } + if ($mod >= ($this->start + $this->range)){ + $mod++; + break; + } + if ( ($mod++) & 1){ + $col= "background-color: #ECECEC;"; + } else { + $col= "background-color: #F5F5F5;"; + } + $output.= "$val"; + } + + /***************** + Tell smarty what we have found + *****************/ + + if ($output != ""){ + $smarty->assign("search_result", $output); + $smarty->assign("range_selector", range_selector(count($this->report_list), $this->start,$this->range,"EntryPerPage")); + } else { + $smarty->assign("search_result", ""); + } + + /* Show main page */ + for($i= 0; $i<7; $i++){ + $smarty->assign("mode$i", ""); + } + $smarty->assign("mode".$this->sort, "\"\"sort_direction.".png\" border=0 align=middle>"); + + return($smarty->fetch(get_template_path('contents.tpl', TRUE))); + } + + + /* Create duration string 12'11" */ + function gen_duration($seconds) + { + if ($seconds / 60 > 1){ + $minutes= (int)($seconds / 60); + $seconds= $seconds % 60; + return ("$minutes’$seconds”"); + } + return ("$seconds”"); + } + + + /* Create WHERE part for our mysql serach */ + function GetUidMatchingFilter() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->search_base); + $s = $this->search_for; + + $s = preg_replace("/\%/","",$s); + $s2 = preg_replace("/\*/","%",$s); + + $filter = "(&(objectClass=gosaAccount)(!(objectClass=gosaUserTemplate))". + "(|(uid=$s)(l=$s)(homePhone=$s)(telephoneNumber=$s)(facsimileTelephoneNumber=$s)(mobile=$s)". + "(pager=$s)(cn=$s)(givenName=$s)(sn=$s)(personalTitle=$s)(title=$s)))"; + + $attrs = array("uid"); + $res = get_sub_list($filter,"fonreport/fonreport",get_people_ou(),$this->search_base,$attrs); + + $str = " AND ("; + $fields = array("dstchannel","channel"); + if(count($res)){ + foreach($res as $attrs){ + $uid = $attrs["uid"][0]; + foreach($fields as $name){ + $str .= $name." like '%".$uid."%' OR "; + } + } + } + $str .= " channel like '%".$s."%' OR + dstchannel like '%".$s."%' OR + dst like '".$s2."' OR + src like '".$s2."' OR + lastapp like '".$s2."')"; + return($str); + } + + + /* Create query string */ + function CreateQuerySyntax() + { + /* Get extended search filter which contain uids and so on */ + $uidstring = $this->GetUidMatchingFilter(); + + /* Create string with all fields seperated by ,*/ + $fields_str =""; + foreach($this->fields as $field){ + if($field == "calldate") { + continue; + } + $fields_str .= $field.", "; + } + $fields_str = preg_replace("/, $/","",$fields_str); + + /* Create Sort tag */ + if ($this->sort_direction == "down"){ + $desc= "DESC"; + } else { + $desc= "ASC"; + } + /* Create times */ + $start= date ("YmdHis", mktime(0,0,0,$this->month,1,$this->year)); + $end= date ("YmdHis", mktime(23,59,59,($this->month +1),0,$this->year)); + $query = "SELECT ".$fields_str.",calldate FROM cdr ". + "WHERE + calldate <= $end + AND + calldate >= $start + ". $uidstring." + ORDER BY ".$this->fields[$this->sort]." $desc;"; + return($query); + } + + + /* Return plugin informations for acl handling + #FIXME You can only read attributes within this report plugin */ + static function plInfo() + { + return (array( + "plShortName" => _("Phone reports"), + "plDescription" => _("Phone reports")." "._("All entries are readonly")."", + "plSelfModify" => TRUE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array( + "fonreport" => array( + "description" => _("Phone reports"), + "objectClass" => "None")), + + + "plProvidedAcls" => array( + "calldate" =>_("Date"), + "src" =>_("Source"), + "dst" =>_("Destination"), + "channel" =>_("Channel"), + "lastapp" =>_("Application called"), + "disposition" =>_("Disposition"), + "duration" =>_("Duration")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/fonreports/contents.tpl b/trunk/gosa-plugins/gofon/gofon/fonreports/contents.tpl new file mode 100644 index 000000000..d8cf0a47f --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/fonreports/contents.tpl @@ -0,0 +1,59 @@ +
+

[F]{t}Filter{/t}

+
+
+

+  {t}Search for{/t} + + {t}in{/t} + + {t}during{/t} + + {t}in{/t} + +   + +

+
+ +
+ +{if $search_result } + + + + + + + + + + + {$search_result} +
{t}Date{/t} {$mode0}{t}Source{/t} {$mode1}{t}Destination{/t} {$mode2}{t}Channel{/t} {$mode3}{t}Application{/t} {$mode4}{t}Status{/t} {$mode5}{t}Duration{/t} {$mode6}
+ + + + + +
{$range_selector}
+ +

+   +

+{else} + {t}Search returned no results...{/t} +{/if} + + + diff --git a/trunk/gosa-plugins/gofon/gofon/fonreports/main.inc b/trunk/gosa-plugins/gofon/gofon/fonreports/main.inc new file mode 100644 index 000000000..cbd957edd --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/fonreports/main.inc @@ -0,0 +1,27 @@ +save_object(); + $display= $fonreport->execute (); + $display.= "\n"; + + /* Page header*/ + $display= print_header(get_template_path('plugins/gofon/images/phonereport.png'), _("Phone reports")).$display; + + /* Store changes in session */ + session::set('fonreport',$fonreport); +} +?> diff --git a/trunk/gosa-plugins/gofon/gofon/macro/class_divListMacros.inc b/trunk/gosa-plugins/gofon/gofon/macro/class_divListMacros.inc new file mode 100644 index 000000000..d2ac863be --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/class_divListMacros.inc @@ -0,0 +1,225 @@ +parent = $parent; + $this->ui = get_userinfo(); + + /* Set list strings */ + $this->SetTitle(_("List of macros")); + $this->SetSummary(_("List of macros")); + + /* Result page will look like a headpage */ + $this->SetHeadpageMode(); + + $this->EnableAplhabet (true); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 100; + if($this->parent->snapshotEnabled()){ + $action_col_size += 20; + } + + /* Toggle all selected / deselected */ + $chk = ""; + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); + $this->AddHeader(array("string" => _("Name")." / "._("Department"), "attach" => "style=''")); + $this->AddHeader(array("string" => _("Visible"), "attach" => "style='width:50px;'")); + $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'" )); + + /* Add Checkboxes / SubSearch checkbox */ + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name ,Text ,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Regular expression for matching macro names"),"*" , true); + } + + function GenHeader() + { + /* Get all departments within this subtree */ + $base = $this->config->current['BASE']; + $options = $this->create_department_list($this->module); + + $ui =get_userinfo(); + $acl = $ui->get_permissions($this->selectedBase,"gofonmacro/macro"); + $acl_all= $ui->has_complete_category_acls($this->selectedBase,"gofonmacro"); + + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(); + $listhead .= _("Base")." ". + "  "; + + /* Create Layers menu */ + $s = ".|"._("Actions")."|\n"; + + /* Append create options */ + if(preg_match("/c/",$acl)){ + $s .= "..|". + " "._("Create")."|\n"; + $s.= "...|". + " "._("Macro")."|goFonMacro_new|\n"; + $s.= "..|---|\n"; + } + + /* Multiple options */ + $s.= "..|". + " "._("Remove")."|"."remove_multiple|\n"; + + + /* Add Copy & Paste header */ + $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module); + + /* Add snapshot icons */ + $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); + + $this->SetDropDownHeaderMenu($s); + $this->SetListHeader($listhead); + } + + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + function setEntries($list) + { + + $empty = ""; + $macroimg = ""._("Macro").""; + $visible = ""._("yes").""; + $invisible = ""._("no").""; + $editlink = "%s"; + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 100; + if($this->parent->snapshotEnabled()){ + $action_col_size += 20; + } + + $ui = get_userinfo(); + + foreach($list as $key => $val){ + + $acl = $ui->get_permissions($val['dn'],"gofonmacro/macro"); + $acl_all= $ui->has_complete_category_acls($val['dn'],"gofonmacro"); + + $action = ""; + if(!preg_match("/r/",$acl)){ + continue; + } + + /* Add copy & cut functionality */ + $action.= $this->parent->get_copypaste_action($val['dn'],"gofonmacro","macro"); + + $action.= ""; + + /* Add snapshot icon */ + $action.= $this->parent->get_snapshot_action($val['dn'],$this->module); + + if(preg_match("/d/",$acl)){ + $action.= ""; + } + + if(isset($val['goFonMacroVisible']['0'])&&($val['goFonMacroVisible']['0'] == "1")){ + $pic1 = $visible; + }else{ + $pic1 = $invisible; + } + + $display= $val["displayName"][0]." (".$val["cn"][0].")"; + if(isset($val['description'][0])){ + + $desc = $val['description'][0]; + if(strlen($desc) > 55){ + $desc = substr($desc,0,52)."..."; + } + + $display .= " [".$desc."]"; + } + + /* Cutted objects should be displayed in light grey */ + if($this->parent->CopyPasteHandler){ + foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){ + if($queue_data['dn'] == $val['dn']) { + $display = "".$display.""; + break; + } + } + } + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field1 = array("string" => sprintf($macroimg,$val['dn']), "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"); + $field3 = array("string" => $pic1, "attach" => "style='width:50px;'"); + $field4 = array("string" => preg_replace("/%KEY%/", "$key", $action), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); + + $this->AddElement(array($field0,$field1,$field2,$field3,$field4)); + } + + /* Create summary string for list footer */ + $num_deps=0; + if(!$this->SubSearch){ + $num_deps = count($this->Added_Departments); + } + $num_objs = count($list); + + $num_obj_str = sprintf(_("Number of listed %s"),_("macros")); + $num_dep_str = sprintf(_("Number of listed %s"),_("departments")); + + $str = "".$num_obj_str." ".$num_objs."    "; + $str.= "".$num_dep_str." ".$num_deps."    "; + + $this->set_List_Bottom_Info($str); + } + + function Save() + { + MultiSelectWindow :: Save(); + } + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow :: save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacro.inc b/trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacro.inc new file mode 100644 index 000000000..44987dde2 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacro.inc @@ -0,0 +1,583 @@ +is_account= TRUE; + + /* Edit or new one ?*/ + if ($this->dn == "new"){ + if(session::is_set('CurrentMainBase')){ + $this->base = session::get('CurrentMainBase'); + }else{ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } + } else { + $this->orig_cn=$this->cn; + $this->base= preg_replace ("/^[^,]+,".preg_quote(get_ou("phoneMacroRDN"), '/')."/i", "", $this->dn); + } + + /* Check server configurations + * Load all server configuration in $this->goFonHomeServers if available + */ + $a_SETUP= array(); + if(isset($config->data['SERVERS']['FON'])){ + + /* Set available server */ + $this->goFonHomeServers = $config->data['SERVERS']['FON']; + + /* Remove default entry, not necessary here */ + if(isset($this->goFonHomeServers[0])){ + unset($this->goFonHomeServers[0]); + } + } + + $this->orig_base = $this->base; + $this->orig_dn = $this->dn; + } + + + /*! Execute this plugin */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","gofonmacro/".get_class($this),$this->dn); + } + + /* Variables */ + $vars = ""; + $tmp = array(); + $number = 0; + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* A new base was selected, check if it is a valid one */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $smarty->assign("bases", $this->get_allowed_bases()); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + if($this->acl_is_writeable("base")){ + $smarty->assign("baseSelect",true); + }else{ + $smarty->assign("baseSelect",false); + } + + + /* Assign all vars to Smarty */ + foreach($this->attributes as $ar){ + $smarty->assign($ar, $this->$ar); + } + /* Checkboxes */ + $smarty->assign("base_select", $this->base); + $smarty->assign("vars", $vars); + + if($this->goFonMacroVisible){ + $smarty->assign("goFonMacroVisibleChecked"," checked "); + }else{ + $smarty->assign("goFonMacroVisibleChecked",""); + } + + $smarty->assign("cnACL",$this->getacl("cn",$this->initially_was_account)); + $smarty->assign("cn",$this->cn); + + /* Ensure that macro content is displayed correctly encoded */ + $smarty->assign("goFonMacroContent",htmlentities(utf8_decode ($this->goFonMacroContent))); + + /* Show main page */ + return($smarty->fetch (get_template_path('generic.tpl', TRUE))); + } + + + /* This method check if all databases are reachable. + * Returns with error message or an empty string on success. + * + * - Is mysql extension available + * - Is every server reachable + * - Does the database exists/is accessible + */ + function check_database_accessibility() + { + /* Check if mysql extension is available */ + if(!is_callable("mysql_pconnect")){ + return(msgPool::missingext("php-mysql")); + } + + /******************** + * Check all home server + ********************/ + foreach($this->goFonHomeServers as $goFonHomeServer => $cfg_Current){ + $r_current = @mysql_pconnect($cfg_Current['SERVER'],$cfg_Current['LOGIN'],$cfg_Current['PASSWORD']); + if(!$r_current){ + new log("debug","gofonmacro/".get_class($this),"",array(),@mysql_error($r_current)); + return ( msgPool::dbconnect("GOfon",@mysql_error(),$cfg_Current['SERVER'])); + } + $db_current = @mysql_select_db($cfg_Current['DB'],$r_current); + if(!$db_current){ + new log("debug","gofonmacro/".get_class($this),"",array(),@mysql_error($r_current)); + mysql_close($r_current); + return ( msgPool::dbselect("GOfon",@mysql_error(),$cfg_Current['DB'])); + } + } + } + + + /* Remove current macro from all asterisk server. + * First of all check if we have access to all databases. + * - Remove old entries + */ + function remove_from_database($save) + { + /* Check if all databases are reachable */ + $str = $this->check_database_accessibility(); + if($str){ + return($str); + } + + /* Create query string */ + $context = addslashes("macro-".$this->cn); + + /* Remove current macro from each server available */ + if($save){ + foreach($this->goFonHomeServers as $dn => $Server){ + $query = "DELETE FROM ".$Server['EXT_TABLE']." WHERE context='".$context."';"; + $r_current = @mysql_pconnect($Server['SERVER'],$Server['LOGIN'],$Server['PASSWORD']); + $db_current = @mysql_select_db($Server['DB'],$r_current); + $res = @mysql_query($query,$r_current); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + if(!$res){ + new log("debug","gofonmacro/".get_class($this),"",array(),@mysql_error($r_current)); + return ( msgPool::dbquery("GOfon",@mysql_error($r_current),$Server['SERVER'])); + } + @mysql_close($r_current); + } + } + } + + + /* Add current macro to all asterisk server. + * First of all check if we have access to all databases. + * - Remove old entries + * - Add new entries + */ + function add_to_database($save) + { + /* Check if all databases are reachable */ + $str = $this->check_database_accessibility(); + if($str){ + return($str); + } + + /* Remove old entries first. Else we got duplicated entries */ + $str = $this->remove_from_database($save); + if($str){ + return($str); + } + + /* Create query string */ + $context = "macro-".$this->cn; + + /************ + * Parse Macro content + ************/ + $sql = + "INSERT INTO %TABLENAME% ". + " (context,exten,priority,app,appdata) ". + " VALUES "; + + $a_contentLines = split("\n",$this->goFonMacroContent); + foreach($a_contentLines as $i_linenum => $s_linestr){ + + /* Remove the 'exten => ' string in front of the macro content line + * example line 'exten => s,2,GotoIf(${ARG3}?3:5)' + * Remove comments introduced by ; + * Skip empty lines + */ + $s_linestr = trim($s_linestr); + $s_linestr = preg_replace("/;.*$/","",$s_linestr) ; + $s_linestr = preg_replace ("/^.*=\> /","",$s_linestr); + + if(empty($s_linestr)){ + continue; + } + + /* A line that passes the check above should look like this + * s,1,SetLanguage(de) + * 3 parts seperated by , + * If there are more or less parts, abort. + * The preg_replace exclude parameters from split .. + */ + $tmp = split(",", $s_linestr,3); + + /* Check if there is an application given */ + if(empty($tmp[1])){ + return(sprintf(_("Application missing in line %s!"),$i_linenum)); + } + /* Check if there is an extension given */ + if(empty($tmp[0])){ + return(sprintf(_("Extension missing in line %s!"),$i_linenum)); + } + + /* Create extension entry for current line + * and add this line to an array that will be inserted + * to each database. + */ + $exten = addslashes($tmp[0]); + $prio = addslashes($tmp[1]); + $app = addslashes(preg_replace("/\(.*\).*$/","",$tmp[2])); + $para = addslashes(preg_replace("/^[^(]*\((.*)\)[^)]*$/", "$1", $tmp[2])); + $sql.= " ('".$context."','".$exten."','".$prio."','".$app."','".$para."'),"; + } + + /* Remove last , from query string */ + $sql = preg_replace("/,$/","",$sql); + + /* Save current changes to the database */ + if($save){ + + /* Macro are spread to each asterisk server */ + foreach($this->goFonHomeServers as $dn => $cfg){ + $r_con = @mysql_pconnect($cfg['SERVER'],$cfg['LOGIN'],$cfg['PASSWORD']); + $db = @mysql_select_db($cfg['DB'],$r_con); + $query = preg_replace("/%TABLENAME%/",$cfg['EXT_TABLE'],$sql); + $res = @mysql_query($query,$r_con); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + if(!$res){ + new log("debug","gofonmacro/".get_class($this),"",array(),@mysql_error($r_con)); + } + @mysql_close($r_con); + } + } + } + + + function save_object() + { + if (isset($_POST['gofonMacroGenericPosted'])){ + + $old_cn = $this->cn; + $old_visible = $this->goFonMacroVisible; + + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + /* Save base, since this is no LDAP attribute */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + + /* Restore old cn if we have insuficient acls to change cn ... */ + if(!$this->acl_is_writeable("cn",$this->initially_was_account)){ + $this->cn = $old_cn; + } + + /* check if we are allowed to toggle visibility */ + if($this->acl_is_writeable("goFonMacroVisible")) { + + /* Checkbox selected ? */ + if(isset($_POST['goFonMacroVisible'])) { + $this->goFonMacroVisible= 1 ; + }else { + if(isset($_POST['displayName'])){ + $this->goFonMacroVisible= 0 ; + } + } + }else{ + $this->goFonMacroVisible = $old_visible; + } + } + } + + + /*! Check values */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(!count($this->goFonHomeServers)){ + $message[] = msgPool::noserver(_("GOfon")); + } + + /* Check if insert/replace is possible and all servers are available */ + $str = $this->add_to_database(false); + if($str){ + $message[] = $str; + } + + /* Check if cn is already used */ + if(($this->dn=="new")||($this->orig_cn!=$this->cn)){ + $ldap = $this->config->get_ldap_link(); + $ldap->search("(&(objectClass=goFonMacro)(cn=".$this->cn."))",array("cn")); + if($ldap->count()>0){ + $message[]= msgPool::duplicated(_("Name")); + } + } + + /* Check if display name is set */ + if($this->displayName == ""){ + $message[] = msgPool::required(_("Name")); + } + /* CN is restricted to 20 chars */ + if(strlen("Makro-".$this->cn)>20 ){ + $message[]=_("Name can be 20 characters at maximum!"); + } + + /* If this macro is still in use we should not change the visible for user flag to invisible */ + if(!$this->goFonMacroVisible){ + $ldap = $this->config->get_ldap_link(); + $res = $ldap->search("(&(objectClass=goFonAccount)(objectClass=gosaAccount)(goFonMacro=*))", array("goFonMacro")); + while ($val = $ldap->fetch()){ + if(strstr($val['goFonMacro'][0],$this->dn)){ + $message[] = _("Macro is still in use!"); + return($message); + } + } + } + + if(empty($this->goFonMacroContent)){ + $message[] = _("Macro is empty!"); + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return $message; + } + + + /*! Remove makro from all given databases + * and ldap too. + */ + function remove_from_parent() + { + $ldap= $this->config->get_ldap_link(); + + /* Skip remove if this macro is still in use */ + $res = $ldap->search("(&(objectClass=goFonAccount)(objectClass=gosaAccount)(goFonMacro=*))", array("goFonMacro", "cn")); + while ($val = $ldap->fetch()){ + if(strstr($val['goFonMacro'][0],$this->dn)){ + msg_dialog::display(_("Error"), sprintf(_("Cannot delete entry because it is still in use by '%s'!"), $val['cn'][0]), ERROR_DIALOG); + return false; + } + } + + /* Try to remove from database */ + if(count($this->goFonHomeServers)){ + $str = $this->remove_from_database(true); + if($str){ + msg_dialog::display(_("Error"), $str, ERROR_DIALOG); + return false; + } + }else{ + msg_dialog::display(_("Configuration error"), msgPool::noserver(_("GOfon")), WARNING_DIALOG); + return false; + } + + /* Remove phone macro */ + $ldap->rmDir($this->dn); + new log("remove","gofonmacro/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + } + + + /*! Save to LDAP */ + function save() + { + plugin::save(); + unset($this->attrs['base']); + + /* Try to add entries to databases */ + $str = $this->add_to_database(true); + if($str){ + msg_dialog::display(_("Error"), $str, ERROR_DIALOG); + }else{ + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cat($this->dn, array('dn')); + $a= $ldap->fetch(); + + if (count($a)){ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + $this->handle_post_events("modify"); + } else { + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + $this->handle_post_events("add"); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","gofonmacro/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","gofonmacro/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + } + } + + + function getCopyDialog() + { + $smarty = get_smarty(); + $smarty->assign("cn" ,$this->cn); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Asterisk macro management"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("gofonmacro" => array("description" => _("GOfon macro"), + "objectClass" => "gofonMacro")), + + "plProvidedAcls" => array( + "cn" => _("Macro name"), + "base" => _("Base"), + "description" => _("Description"), + "displayName" => _("Display name"), + "goFonMacroContent" => _("Macro content and parameter"), + "goFonMacroVisible" => _("Visibility flag")) + )); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacroManagement.inc b/trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacroManagement.inc new file mode 100644 index 000000000..faad636f7 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacroManagement.inc @@ -0,0 +1,605 @@ +config= $config; + $this->ui= $ui; + + $this->DivListMacro = new divListMacro($this->config,$this); + + /* Copy & Paste enabled ?*/ + if ($this->config->get_cfg_value("copyPaste") == "true"){ + $this->CopyPasteHandler = new CopyPasteHandler($this->config); + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + session::set('LOCK_VARS_TO_USE',array("/^menu_action/","/^goFonMacro_/","/^act$/","/^id$/","/^item_selected/","/^remove_multiple_macros/")); + + /***************** + Variable initialisation + *****************/ + + $s_action = ""; // Contains the action to proceed + $s_entry = ""; // The value for s_action + $base_back = ""; // The Link for Backbutton + $smarty= get_smarty(); + + + /***************** + Check Posts + *****************/ + + /* Test Posts */ + foreach($_POST as $key => $val){ + // Post for delete + if(preg_match("/^goFonMacro_del/",$key)){ + $s_action = "del"; + $s_entry = preg_replace("/^goFonMacro_del_/i","",$key); + // Post for edit + }elseif(preg_match("/^goFonMacro_edit_/",$key)){ + $s_action="edit"; + $s_entry = preg_replace("/^goFonMacro_edit_/i","",$key); + // Post for new + }elseif(preg_match("/^goFonMacro_new/",$key)){ + $s_action="new"; + }elseif(preg_match("/^remove_multiple_macros/",$key)){ + $s_action="del_multiple"; + }elseif(preg_match("/^editPaste.*/i",$key)){ + $s_action="editPaste"; + }elseif(preg_match("/^copy_.*/",$key)){ + $s_action="copy"; + $s_entry = preg_replace("/^copy_/i","",$key); + }elseif(preg_match("/^cut_.*/",$key)){ + $s_action="cut"; + $s_entry = preg_replace("/^cut_/i","",$key); + }elseif(preg_match("/^multiple_copy_objects/",$key)){ + $s_action = "copy_multiple"; + }elseif(preg_match("/^multiple_cut_objects/",$key)){ + $s_action = "cut_multiple"; + } + } + if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ + $s_action ="edit"; + $s_entry = $_GET['id']; + } + $s_entry = preg_replace("/_.$/","",$s_entry); + + + /******************** + Copy & Paste Handling ... + ********************/ + + + /* handle C&P from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ + $s_action = "copy_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){ + $s_action = "cut_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){ + $s_action = "editPaste"; + } + + /* Create options */ + if(isset($_POST['menu_action']) && $_POST['menu_action'] == "goFonMacro_new"){ + $s_action = "new"; + } + + /* handle remove from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){ + $s_action = "del_multiple"; + } + + /* Display the copy & paste dialog, if it is currently open */ + $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); + if($ret){ + return($ret); + } + + + /***************** + Create a new Macro + *****************/ + + /* New macro? */ + if ($s_action=="new"){ + + /* By default we set 'dn' to 'new', all relevant plugins will + react on this. */ + $this->dn= "new"; + + /* Create new usertab object */ + $this->macrotabs= new macrotabs($this->config,$this->config->data['TABS']['MACROTABS'], $this->dn,"gofonmacro"); + $this->macrotabs->set_acl_base($this->DivListMacro->selectedBase); + } + + /***************** + Edit || Password canceled + *****************/ + + /* Cancel dialogs */ + if (isset($_POST['edit_cancel'])){ + $this->remove_lock(); + unset ($this->macrotabs); + $this->macrotabs= NULL; + set_object_info(); + } + + + /***************** + Edit finised + *****************/ + + /* Finish mac edit is triggered by the tabulator dialog, so + the user wants to save edited data. Check and save at this + point. */ + if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply'])) && (isset($this->macrotabs->config))){ + + /* Check tabs, will feed message array */ + $this->macrotabs->last= $this->macrotabs->current; + $this->macrotabs->save_object(); + $message= $this->macrotabs->check(); + + /* Save, or display error message? */ + if (count($message) == 0){ + + /* Save data data to ldap */ + $this->macrotabs->save(); + + if (!isset($_POST['edit_apply'])){ + /* macro has been saved successfully, remove lock from + LDAP. */ + if ($this->dn != "new"){ + $this->remove_lock(); + } + + unset ($this->macrotabs); + $this->macrotabs= NULL; + set_object_info(); + }else{ + + /* Reinitialize tab */ + if($this->macrotabs instanceof tabs){ + $this->macrotabs->re_init(); + } + } + } else { + /* Ok. There seem to be errors regarding to the tab data, + show message and continue as usual. */ + msg_dialog::displayChecks($message); + } + } + + + /***************** + Edit macro + *****************/ + + /* User wants to edit data */ + if (($s_action=="edit") && (!isset($this->macrotabs->config))){ + + $dn = $this->macros[$s_entry]['dn']; + $acl = $this->ui->get_permissions($dn,"gofonmacro/macro"); + if(preg_match("/r/",$acl)){ + $this->dn = $dn; + + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return(gen_locked_message ($user, $this->dn,TRUE)); + } + + /* Lock the current entry, so everyone will get the + above dialog */ + add_lock ($this->dn, $this->ui->dn); + + /* Register macrotabs to trigger edit dialog */ + $this->macrotabs= new macrotabs($this->config, + $this->config->data['TABS']['MACROTABS'], $this->dn,"gofonmacro"); + set_object_info($this->dn); + } + } + + + + /******************** + Delete MULTIPLE entries requested, display confirm dialog + ********************/ + + if ($s_action=="del_multiple"){ + $ids = $this->list_get_selected_items(); + + + $this->dns = array(); + if(count($ids)){ + $disallowed = array(); + foreach($ids as $id){ + $dn = $this->macros[$id]['dn']; + $acl = $this->ui->get_permissions($dn, "gofonmacro/macro"); + if(preg_match("/d/",$acl)){ + $this->dns[$id] = $dn; + }else{ + $disallowed[] = $dn; + } + } + + if(count($disallowed)){ + msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); + } + + if(count($this->dns)){ + + /* Check locks */ + if ($user= get_multiple_locks($this->dns)){ + return(gen_locked_message($user,$this->dns)); + } + + $dns_names = array(); + foreach($this->dns as $dn){ + $dns_names[] = LDAP::fix($dn); + } + + /* Add entry locks */ + add_lock ($this->dns, $this->ui->dn); + + /* Lock the current entry, so nobody will edit it during deletion */ + $smarty->assign("intro", msgPool::deleteInfo($dns_names,("macro"))); + $smarty->assign("multiple", true); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + /******************** + Delete MULTIPLE entries confirmed + ********************/ + + /* Confirmation for deletion has been passed. Users should be deleted. */ + if (isset($_POST['delete_multiple_macro_confirm'])){ + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + + $acl = $this->ui->get_permissions($dn,"gofonmacro/macro"); + if(preg_match("/d/",$acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->macrotabs= new macrotabs($this->config,$this->config->data['TABS']['MACROTABS'], $dn,"gofonmacro"); + $this->macrotabs->delete (); + unset ($this->macrotabs); + $this->macrotabs= NULL; + + } else { + msg_dialog::display(_("Permission error"),msgPool::permDelete(), ERROR_DIALOG); + } + + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /******************** + Delete MULTIPLE entries Canceled + ********************/ + + /* Remove lock */ + if(isset($_POST['delete_multiple_macro_cancel'])){ + $this->remove_lock(); + $this->dns = array(); + } + + + /***************** + Remove macro + *****************/ + + /* Remove user was requested */ + if ($s_action=="del"){ + + /* Get 'dn' from posted 'uid' */ + $dn = $this->macros[$s_entry]['dn']; + $acl = $this->ui->get_permissions($dn,"gofonmacro/macro"); + + if(preg_match("/d/",$acl)){ + + $this->dn = $dn; + + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return (gen_locked_message ($user, $this->dn)); + } + + /* Lock the current entry, so nobody will edit it during deletion */ + add_lock ($this->dn, $this->ui->dn); + $smarty= get_smarty(); + $smarty->assign("intro", msgPool::deleteInfo(LDAP::fix($this->dn),_("macro"))); + $smarty->assign("multiple", false); + return($smarty->fetch (get_template_path('remove.tpl', TRUE))); + } else { + + /* Obviously the user isn't allowed to delete. Show message and + clean session. */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG); + } + } + + + /***************** + Remove macro + *****************/ + + /* Confirmation for deletion has been passed. Macro should be deleted. */ + if (isset($_POST['delete_macro_confirm'])){ + + $acl = $this->ui->get_permissions($this->dn,"gofonmacro/macro"); + + if(preg_match("/r/",$acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->macrotabs= new macrotabs($this->config,$this->config->data['TABS']['MACROTABS'], $this->dn,"gofonmacro"); + $this->macrotabs->delete (); + unset ($this->macrotabs); + $this->macrotabs= NULL; + } else { + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG); + new log("security","gofonmacro/".get_class($this),$this->dn,array(),"Tried to trick deletion."); + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + } + + + /***************** + Display open dialogs + *****************/ + + /* Show tab dialog if object is present */ + if (($this->macrotabs) && (isset($this->macrotabs->config))){ + $display= $this->macrotabs->execute(); + + /* Don't show buttons if tab dialog requests this */ + + if(($this->macrotabs instanceOf tabs || $this->macrotabs instanceOf plugin) && $this->macrotabs->read_only == TRUE){ + $display.= "

+ +

"; + }elseif (!$this->macrotabs->by_object[$this->macrotabs->current]->dialog){ + $display.= "

\n"; + $display.= "\n"; + $display.= " \n"; + if ($this->dn != "new"){ + $display.= "\n"; + $display.= " \n"; + } + $display.= "\n"; + $display.= "

"; + } + return ($display); + } + + + /***************** + Display entry list + *****************/ + + /* Check if there is a snapshot dialog open */ + $base = $this->DivListMacro->selectedBase; + if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + /* Return rendered main page */ + /* Display dialog with system list */ + $this->DivListMacro->parent = $this; + $this->DivListMacro->execute(); + + /* Add departments if subsearch is disabled */ + if(!$this->DivListMacro->SubSearch){ + $this->DivListMacro->AddDepartments($this->DivListMacro->selectedBase,4,1); + } + $this->reload(); + $this->DivListMacro->setEntries($this->macros); + return($this->DivListMacro->Draw()); + } + + + function copyPasteHandling_from_queue($s_action,$s_entry) + { + /* Check if Copy & Paste is disabled */ + if(!is_object($this->CopyPasteHandler)){ + return(""); + } + + $ui = get_userinfo(); + + /* Add a single entry to queue */ + if($s_action == "cut" || $s_action == "copy"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + $dn = $this->macros[$s_entry]['dn']; + + if($s_action == "copy" && $ui->is_copyable($dn,"gofonmacro","macro")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"macrotabs","MACROTABS","gofonmacro"); + } + if($s_action == "cut" && $ui->is_cutable($dn,"gofonmacro","macro")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"macrotabs","MACROTABS","gofonmacro"); + } + } + + /* Add entries to queue */ + if($s_action == "copy_multiple" || $s_action == "cut_multiple"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + + /* Add new entries to CP queue */ + foreach($this->list_get_selected_items() as $id){ + $dn = $this->macros[$id]['dn']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,"gofonmacro","macro")){ + $this->CopyPasteHandler->add_to_queue($dn,"copy","macrotabs","MACROTABS","gofonmacro"); + } + if($s_action == "cut_multiple" && $ui->is_cutable($dn,"gofonmacro","macro")){ + $this->CopyPasteHandler->add_to_queue($dn,"cut","macrotabs","MACROTABS","gofonmacro"); + } + } + } + + /* Start pasting entries */ + if($s_action == "editPaste"){ + $this->start_pasting_copied_objects = TRUE; + } + + /* Return C&P dialog */ + if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ + + /* Get dialog */ + $this->CopyPasteHandler->SetVar("base",$this->DivListMacro->selectedBase); + $data = $this->CopyPasteHandler->execute(); + + /* Return dialog data */ + if(!empty($data)){ + return($data); + } + } + + /* Automatically disable status for pasting */ + if(!$this->CopyPasteHandler->entries_queued()){ + $this->start_pasting_copied_objects = FALSE; + } + return(""); + } + + + + /* Return departments, that will be included within snapshot detection */ + function get_used_snapshot_bases() + { + return(array(get_ou('phoneMacroRDN').$this->DivListMacro->selectedBase)); + } + + + function reload() + { + /* Set base for all searches */ + $base = $this->DivListMacro->selectedBase; + $SubSearch = $this->DivListMacro->SubSearch; + $Regex = $this->DivListMacro->Regex; + $Filter = "(&(cn=".$Regex.")(objectClass=goFonMacro))"; + $Flags = GL_SIZELIMIT; + $Attrs = array("cn","description","displayName","goFonMacroVisible"); + + /* Prepare for ls or search*/ + if($SubSearch){ + $Flags |= GL_SUBSEARCH; + }else{ + $base = get_ou('phoneMacroRDN').$base; + } + + /* Generate macro list */ + $res= get_list($Filter, "gofonmacro", $base, $Attrs, $Flags); + + $tmp=array(); + foreach($res as $tkey => $val ){ + $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val; + } + ksort($tmp); + $this->macros=array(); + foreach($tmp as $val){ + $this->macros[]=$val; + } + + reset ($this->macros); + } + + + /* Save data to object */ + function save_object() + { + $this->DivListMacro->save_object(); + if(is_object($this->CopyPasteHandler)){ + $this->CopyPasteHandler->save_object(); + } + } + + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + /*! \brief Remove entry locks if the plugin was aborted. + */ + function remove_lock() + { + if($this->dn) del_lock($this->dn); + if(is_array($this->dns) && count($this->dns)) del_lock($this->dns); + } + + function adapt_from_template($dn, $skip= array()) { } + function check() { } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacroParameters.inc b/trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacroParameters.inc new file mode 100644 index 000000000..c131d67ab --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/class_gofonMacroParameters.inc @@ -0,0 +1,414 @@ + array("selected", "", ""), + "combo" => array("", "selected", ""), + "bool" => array("", "", "selected")); + + /*! attribute list for save action */ + var $attributes= array("base","goFonMacroParameter"); + + /*! Objectclasses needed by the class*/ + var $objectclasses= array("top", "goFonMacro"); + var $ui; + + //! The konstructor of macroParameter + /*! The konstructor of macroParameter... + - reads goFonMacroParameter and parses them to an array + - Set attributes from openldap (edit) + - Set attributes from default (new) + */ + function macroParameter (&$config, $dn= NULL, $parent= NULL) + { + plugin::plugin ($config, $dn, $parent); + + $tmp = array(); // temporary Var + $tmp2 = array(); // temporary Var ... + $tmp3 = ""; + $ldap= $config->get_ldap_link(); + + $this->dn = $dn; + + /* This is always an account */ + $this->is_account= TRUE; + + /* Edit or new one ?*/ + if ($this->dn == "new"){ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } else { + $this->base= dn2base($this->dn); + } + + /* initialising macro parameter */ + if(isset($this->attrs['goFonMacroParameter']) && + isset($this->attrs['goFonMacroParameter']['count'])){ + unset($this->attrs['goFonMacroParameter']['count']); + } + + /* Set Parameters, or a new array if ther are no parameters */ + if(isset($this->attrs['goFonMacroParameter'])){ + $this->goFonMacroParameter = $this->attrs['goFonMacroParameter']; + }else{ + $this->goFonMacroParameter =array(); + } + + /* Create an array for parameters if not given yet */ + if(!is_array($this->goFonMacroParameter)){ + $tmp3 = $this->goFonMacroParameter; + $this->goFonMacroParameter =array(); + if(!empty($tmp3)) { + $this->goFonMacroParameter[] = $tmp3; + } + } + + /* Load parametersettings*/ + foreach($this->goFonMacroParameter as $para){ + $tmp = split("!",$para); + $num = $tmp[0]; + $tmp2[$num]['name'] = base64_decode($tmp[1]); + $tmp2[$num]['type'] = $tmp[2]; + $tmp2[$num]['default'] = $tmp[3]; + $tmp2[$num]['var'] = "var".$num; + } + + + /* Assign this array */ + $this->goFonMacroParameter = $tmp2; + + $this->para_count = count ($tmp2); + + $this->ui= get_userinfo(); + } + + //! Perform Parameter check + /*! + Compares the given parameters (goFonMacroParameters) with the parameters defined in goFonContent\n + -> Decide which attrs are new and which are unused\n + -> Sort result array (containing both parameters 'goFonMacroParameters/goFonContent' and new / unused info)\n + \param $content The given goFonContent for this macro\n + \param $goFonMacroParameter Array with the already given parameters \n + */ + function check_paras($content,$goFonMacroParameter) + { + /* Check contents for parameters */ + preg_match_all("/[$]\{ARG[0-9]*\}/",$content,$res,PREG_OFFSET_CAPTURE); + + $new = array(); + + /* Detect parameters with positions */ + foreach($res[0] as $val){ + $num = preg_replace("/[^0-9]/","",$val[0]); + $new[$num]['val'] = $val[0]; + $new[$num]['num'] = $num; + } + + /* Compare content parameter and macro parameter */ + foreach($goFonMacroParameter as $gokey => $goval){ + foreach($new as $nkey => $nval){ + if($gokey == $nval['num']){ + /* sign this as OK */ + $goFonMacroParameter[$gokey]['check']= true; + } + } + } + + /* Now check if there is new parameter in the content, which is not assigned yet */ + foreach($new as $key => $val){ + /* Assign std values */ + $goFonMacroParameter[$key]['var']="var".$key; + $goFonMacroParameter[$key]['check']= true; + + /* If this is a new Parameter, name it ${ARG#} by default*/ + if((!isset($goFonMacroParameter[$key]['name']))||(empty($goFonMacroParameter[$key]['name']))){ + $goFonMacroParameter[$key]['name']="\${ARG".$key."}"; + } + } + + foreach($goFonMacroParameter as $key => $val){ + /* All attributes with check == false, are unneeded so mark them with ['check']= false */ + if(!isset($goFonMacroParameter[$key]['check'])){ + $goFonMacroParameter[$key]['check']= false; + } + /* Ah no default given assign ="" to prevent unsigned index */ + if(!isset($goFonMacroParameter[$key]['default'])){ + $goFonMacroParameter[$key]['default'] = ""; + } + } + + /* Sort output for better reading */ + asort($goFonMacroParameter); + return($goFonMacroParameter); + + } + + //! Execute this Plugin + /*! + Perform Parameter check \n + Draw paramter table\n + Show tpl \n + */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Variables */ + $vars = ""; + $tmp = array(); + $number = 0; + + /* Get acls for this tab, + there is only one attribute to write, + so we use the acls from gofon/marco */ + if($this->is_new){ + $ACLs = $this->ui->get_permissions($this->base,"gofonmacro/macro","goFonMacroContent"); + }else{ + $ACLs = $this->ui->get_permissions($this->dn,"gofonmacro/macro","goFonMacroContent"); + } + + /* get current content */ + $macroManagment = session::get('macroManagement') ; + $content = $macroManagment->macrotabs->by_object['macro']->goFonMacroContent; + + if(strstr($content,"ARG")){ + $vorpos = strpos($content,"ARG"); + $rest = substr($content,$vorpos, strlen($content)); + } + + /* Do we represent a valid group? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("Phone macro")).""; + return ($display); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + + /* Add an empty Parameter */ + if(isset($_POST['addvar']) && preg_match("/w/",$ACLs)){ + if(!is_array($this->goFonMacroParameter)){ + $vars = $this->goFonMacroParameter; + $this->goFonMacroParameter = array(); + $this->goFonMacroParameter[]= $vars; + } + $number= count($this->goFonMacroParameter); + $number++; + $this->goFonMacroParameter[]=array("var"=>"var","name"=>"new","type"=>"string","default"=>"test"); + } + + /*generate Table which shows als parameters */ + $FonParas = $this->check_paras($content,$this->goFonMacroParameter); + + /* Sort by Parameterid, and keep keys */ + ksort($FonParas); + + + + if(!preg_match("/r/",$ACLs)){ + $smarty->assign("readable",false); + }else{ + $smarty->assign("readable",true); + foreach($FonParas as $key=>$para) { + + /* Select correct item of combobox */ + if(isset($para['type'])){ + list($sel1, $sel2, $sel3)= $this->type_shortcut[$para['type']]; + }else{ + list($sel1, $sel2, $sel3)= array("", "", ""); + } + + /* Disable all input fields if we are not allowed to change the parameters */ + $disabled = ""; + if(!preg_match("/w/",$ACLs)){ + $key = ""; + $disabled = " disabled "; + } + + /* Assemble output table */ + $vars .=" + + + ARG".$key." + + + + + + +  "; + if($para['check']==false) { + $vars.=""; + } + + $vars.=" "; + } + } + + /* Checkboxes */ + $smarty->assign("base_select", $this->base); + $smarty->assign("vars", $vars); + + /* Show main page */ + return($smarty->fetch (get_template_path('parameter.tpl', TRUE))); + } + + //! Unused here + /*! + Unused here because goFonMacro will remove this Macro\n + */ + function remove_from_parent() + { + } + + //! Save our data + /*! + Save POST data to object \n + This gives us the possibility to leave a tab, without losing our typed informations\n + \n + Read the POST fields for the parameters and saves their info the the class\n + */ + function save_object() + { + if (isset($_POST['phoneparameters'])){ + plugin::save_object(); + } + /* read out post data, and assign it to the parameters */ + /* And or delete */ + foreach($_POST as $name=>$value){ + + /* Test if there is a variable begining with "del" */ + if(preg_match("/del/",$name)){ + + /* Extract entry id to delete */ + $nr = str_replace("del","",$name) ; + + /* unset entry */ + unset($this->goFonMacroParameter[$nr]); + + }elseif(preg_match("/number/",$name)){ + + /* Set Post vars */ + $key = $_POST[$name]; + + $this->goFonMacroParameter[$key]['var'] = $_POST["var".$key]; + $this->goFonMacroParameter[$key]['name'] = $_POST["varname".$key]; + $this->goFonMacroParameter[$key]['type'] = $_POST["vartype".$key]; + $this->goFonMacroParameter[$key]['default']= $_POST["default".$key]; + } + } + + } + + + //! Checks given values + /*! + Check values\n + If a user enters an invalid value, then this function will output an error msg\n + (In better words :prepare the errormessages that will be put out )\n + */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + foreach($this->goFonMacroParameter as $key=>$val){ + if((strstr($val['default'],"!"))||(strstr($val['default'],"#"))) { + $message[] = sprintf(_("Parameter %s contains invalid character. '!,#' is used as delimiter!"),$val['name']); + } + switch($val['type']){ + case 'bool' : $possible = array("","0","1"); + if(!in_array($val['default'],$possible)) { + $message[] = sprintf(_("Parameter %s is invalid!"),$val['name']); + };break; + case 'string' : + case 'combo' : + default : ; + + } + } + return $message; + } + + //! Save changes to openldap + /*! + Save to LDAP + This function saves given attributes to the ldap + */ + function save() + { + /* Post checks */ + + plugin::save(); + + $this->attrs['goFonMacroParameter']=array(); + + foreach($this->goFonMacroParameter as $key=>$fonpara){ + $this->attrs['goFonMacroParameter'][]=$key."!".base64_encode($fonpara['name'])."!".$fonpara['type']."!".$fonpara['default']; + } + + if($this->para_count != count($this->attrs['goFonMacroParameter'])){ + msg_dialog::display(_("Information"), _("Number of parameters for this macro has changed. Please update all users using it!"), INFO_DIALOG); + } + + unset($this->attrs['base']); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cat($this->dn, array('dn')); + $a= $ldap->fetch(); + + if (count($a)){ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + $this->handle_post_events("modify"); + } else { + if(count($this->attrs['goFonMacroParameter']==0)){ + unset($this->attrs['goFonMacroParameter']); + } + $ldap->cd($this->dn); + $ldap->create_missing_trees( $this->dn); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + $this->handle_post_events("add"); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + $source_o = new macroParameter($this->config,$source['dn']); + $this->goFonMacroParameter = $source_o-> goFonMacroParameter; + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/macro/generic.tpl b/trunk/gosa-plugins/gofon/gofon/macro/generic.tpl new file mode 100644 index 000000000..02744c1bb --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/generic.tpl @@ -0,0 +1,83 @@ + + + + + + +
+ + + + + + + + + + + + + + + + +
{$must} +{render acl=$cnACL} + +{/render} +
{$must} +{render acl=$displayNameACL} + +{/render} +
+
{$must} + {render acl=$baseACL} + + {/render} + + {render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + + {/render} + +
+
+   + + + + + + + + + +
+{render acl=$descriptionACL} + +{/render} +
+{render acl=$goFonMacroVisibleACL} + {t}Visible for user{/t} +{/render} +
+
+

 

+
+{t}Macro text{/t} +
+{render acl=$goFonMacroContentACL} + +{/render} + + + + + diff --git a/trunk/gosa-plugins/gofon/gofon/macro/headpage.tpl b/trunk/gosa-plugins/gofon/gofon/macro/headpage.tpl new file mode 100644 index 000000000..79a6fa289 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/headpage.tpl @@ -0,0 +1,51 @@ + + + + + +
+
+

+ {t}List of macros{/t} {$hint} +

+
+
+ {$macroshead} +
+
+
+ {$macros} + +
+
+
+

[i]{t}Information{/t}

+
+
+

+ {t}This menu allows you to add, edit and remove selected macros. You may want to use the range selector on top of the macro listbox, when working with a large number of macros.{/t} +

+
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + + +
+ {t}Display macros matching{/t} + + +
+ {$apply} +
+
+ + diff --git a/trunk/gosa-plugins/gofon/gofon/macro/main.inc b/trunk/gosa-plugins/gofon/gofon/macro/main.inc new file mode 100644 index 000000000..8d4521ed3 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/main.inc @@ -0,0 +1,68 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('macroManagement'); +}else{ + + + /* Create macroManagement object on demand */ + if (!session::is_set('macroManagement')){ + session::set('macroManagement',new goFonMacro ($config, $ui)); + } + + /* Get object */ + $macroManagement = session::get('macroManagement'); + $macroManagement->save_object(); + $output= $macroManagement->execute(); + + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header( get_template_path('plugins/gofon/images/macros.png'), + _("Phone macro management"), + "\"\" + ".LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path('plugins/gofon/images/macros.png'), _("Phone macro management")); + } + + /* Reset requested? */ + if (isset($_GET['reset']) && $_GET['reset'] == 1){ + session::un_set ('macroManagement'); + } + + /* Show and save dialog */ + $display.= $output; + session::set('macroManagement',$macroManagement); +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/macro/parameter.tpl b/trunk/gosa-plugins/gofon/gofon/macro/parameter.tpl new file mode 100644 index 000000000..48e99cd82 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/parameter.tpl @@ -0,0 +1,28 @@ +{if $readable} + + + + + + + + + {$vars} +
{t}Argument{/t} + {t}Name{/t} + {t}type{/t} + {t}Default value{/t} + +   +
+{else} +

{t}You are not allowed to view the macro parameter settings{/t}

+{/if} + + + + diff --git a/trunk/gosa-plugins/gofon/gofon/macro/paste_generic.tpl b/trunk/gosa-plugins/gofon/gofon/macro/paste_generic.tpl new file mode 100644 index 000000000..0f5acf467 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/paste_generic.tpl @@ -0,0 +1,9 @@ + + + + + +
+ {$must} + +
diff --git a/trunk/gosa-plugins/gofon/gofon/macro/remove.tpl b/trunk/gosa-plugins/gofon/gofon/macro/remove.tpl new file mode 100644 index 000000000..e4c851f14 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/remove.tpl @@ -0,0 +1,23 @@ +
+  {t}Warning{/t} +
+

+ {$intro} + {t}This may be used by several groups. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+

+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ {if $multiple} + +   + + {else} + +   + + {/if} +

+ diff --git a/trunk/gosa-plugins/gofon/gofon/macro/tabs_macros.inc b/trunk/gosa-plugins/gofon/gofon/macro/tabs_macros.inc new file mode 100644 index 000000000..f874015e4 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/macro/tabs_macros.inc @@ -0,0 +1,40 @@ +addSpecialTabs(); + } + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['macro']; + + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + $new_dn= "cn=".$baseobject->cn.",".get_ou('phoneMacroRDN').$baseobject->base; + + /* Move group? */ + if ($this->dn != $new_dn){ + + /* Write entry on new 'dn' */ + if ($this->dn != "new"){ + $baseobject->move($this->dn, $new_dn); + $this->by_object['macro']= $baseobject; + } + + /* Happen to use the new one */ + $this->dn= $new_dn; + } + + tabs::save(); + } + +} + +?> diff --git a/trunk/gosa-plugins/gofon/gofon/phoneaccount/class_phoneAccount.inc b/trunk/gosa-plugins/gofon/gofon/phoneaccount/class_phoneAccount.inc new file mode 100644 index 000000000..796ff8958 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/phoneaccount/class_phoneAccount.inc @@ -0,0 +1,1769 @@ +attrs['telephoneNumber'])){ + for ($i= 0; $i<$this->attrs['telephoneNumber']['count']; $i++){ + $number= $this->attrs['telephoneNumber'][$i]; + $this->phoneNumbers[$number]= $number; + } + } + + /* Set parent object to tab object */ + if(is_object($parent)){ + $this->parent = $parent->parent; + } + + /* Get current uid and cn + */ + if(isset($this->attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + if(isset($this->attrs['cn'][0])){ + $this->cn = $this->attrs['cn'][0]; + } + if(isset($this->attrs['mail'][0])){ + $this->mailAddress = $this->attrs['mail'][0]; + $this->has_mailAccount = true; + } + if(isset($this->attrs['pager'][0])){ + $this->pager = $this->attrs['pager'][0]; + } + + /* If there is a parent object present, use references + */ + if(isset($this->parent->by_object['user']->uid)){ + $this->uid = &$this->parent->by_object['user']->uid; + } + if(isset($this->parent->by_object['user']->cn)){ + $this->cn =&$this->parent->by_object['user']->cn; + } + if(isset($this->parent->by_object['user']->pager)){ + $this->pager =&$this->parent->by_object['user']->pager; + } + if(isset($this->parent->by_object['mailAccount']->mail)){ + $this->mailAddress = &$this->parent->by_object['mailAccount']->mail; + $this->has_mailAccount = &$this->parent->by_object['mailAccount']->is_account; + } + + /* Check server configurations + * Load all server configuration in $this->goFonHomeServers if available + * and first server as default if necessary. + * Check if connection is successfull for the selected server $this->goFonHomeServer + */ + + + /* Set available server */ + $config = session::get('config'); + if(isset($config->data['SERVERS']['FON'])){ + $this->goFonHomeServers = $config->data['SERVERS']['FON']; + } + + $a_SETUP= array(); + if($this->is_account && isset($config->data['SERVERS']['FON']) && + array_key_exists('FON',$config->data['SERVERS']) && + is_callable("mysql_connect") + ) { + + /* Servers defined? Watch here... */ + if (count($this->goFonHomeServers)){ + + /* Set default server */ + if(empty($this->goFonHomeServer) || $this->goFonHomeServer == "0"){ + $this->goFonHomeServer= $this->goFonHomeServers[0]['DN']; + } + + /* Remember inital home server, to be able to remove old entries */ + $this->init_HomeServer = $this->goFonHomeServer; + + /* Get config */ + if(!isset($this->goFonHomeServers[$this->goFonHomeServer])){ + msg_dialog::display(_("Obsolete entry"), sprintf(_("The current home server is not available anymore. It will be moved to '%s' if you save this entry!"), preg_replace("/,/",", ",$this->goFonHomeServers[0]['DN'])), ERROR_DIALOG); + + $this->goFonHomeServer = $this->goFonHomeServers[0]['DN']; + $this->init_HomeServer = $this->goFonHomeServers[0]['DN']; + } + $cur_cfg = $this->goFonHomeServers[$this->goFonHomeServer]; + + $r_con = @mysql_pconnect($cur_cfg['SERVER'],$cur_cfg['LOGIN'],$cur_cfg['PASSWORD']); + if(!$r_con){ + new log("debug","gofonreport/".get_class($this),"",array(),@mysql_error()); + } + $db = @mysql_select_db($cur_cfg['DB'],$r_con); + if(!$db){ + new log("debug","gofonreport/".get_class($this),"",array(),@mysql_error()); + } + + $first = false; + foreach($this->phoneNumbers as $key => $val){ + if(!$first){ + $first = $key; + } + } + } + } + + /* Get available phone hardware + * Search for all available phone hardware + */ + $tmp = get_sub_list("(objectClass=goFonHardware)","phone",array(get_ou("phoneRDN")), + $this->config->current['BASE'],array("cn","description"), GL_SUBSEARCH); + foreach($tmp as $attrs){ + $cn= $attrs['cn'][0]; + $description= ""; + if (isset($attrs['description'])){ + $description= " - ".$attrs['description'][0]; + } + $this->hardware_list[$cn]= "$cn$description"; + } + $this->hardware_list["automatic"]= _("automatic"); + ksort($this->hardware_list); + + + /* Collect all usd phones + goFonHardware set. + */ + $deps_a = array( + get_people_ou(), + get_ou("ogroupRDN"), + get_ou("serverRDN"), + get_ou("terminalRDN"), + get_ou("workstationRDN"), + get_ou("printerRDN"), + get_ou("componentRDN"), + get_ou("phoneRDN")); + + $tmp = get_sub_list("(goFonHardware=*)","phone",$deps_a,$this->config->current['BASE'], + array('cn','dn','goFonHardware'),GL_SUBSEARCH); + foreach($tmp as $attrs){ + $cn = $attrs['goFonHardware'][0]; + if(isset($this->hardware_list[$cn])){ + $this->used_hardware[$cn]= $cn; + } + } + + + /* Get available Macros + * Search for all Macros that are visible and create + * an array with name and parameters + */ + $tmp = get_sub_list("(&(objectClass=goFonMacro)(goFonMacroVisible=1))","gofonmacro",array(get_ou("phoneMacroRDN")), + $this->config->current['BASE'],array("displayName","goFonMacroParameter","dn","cn"), GL_NO_ACL_CHECK | GL_SUBSEARCH ); + + + /* Add none for no macro*/ + $this->macros['none']=_("no macro"); + $this->macro ="none"; + + /* Fetch all Macros*/ + foreach($tmp as $attrs){ + + $ui = get_userinfo(); + $acl = $ui->get_permissions($attrs['dn'],"gofonmacro/macro",""); + + /* Skip all macros we are not able to read + execpt, the currently selected macro. + */ + if(!preg_match("/r/",$acl) && !preg_match("/^".preg_quote($attrs['dn'], '/')."/",$this->goFonMacro)){ + continue; + } + + /* unset Count, we don't need that here */ + unset($attrs['displayName']['count']); + + /* Parse macro data, unset count for parameterarrays */ + if (isset($attrs['goFonMacroParameter']['count'])){ + unset($attrs['goFonMacroParameter']['count']); + } + + /* fill Selectfield variable with Macros */ + if(isset($attrs['displayName'][0])){ + $this->macros[$attrs['dn']] = $attrs['displayName'][0]." (".$attrs['cn'][0].")"; + }else{ + $this->macros[$attrs['dn']] = _("undefined"); + } + + /* Go through available parameters and parse all attributes, like parametername, type, default ...*/ + if((isset($attrs['goFonMacroParameter']))&&(is_array($attrs['goFonMacroParameter']))){ + + foreach($attrs['goFonMacroParameter'] as $pkey=>$pval){ + /* Split Data in readable values, by delimiter ! */ + $data = split("!",$attrs['goFonMacroParameter'][$pkey]); + + /* Set all attrs */ + $id = $data[0]; + $this->macroarray[$attrs['dn']][$id]['var'] ="var".$id; + $this->macroarray[$attrs['dn']][$id]['choosen']=$data[3]; + $this->macroarray[$attrs['dn']][$id]['id'] =$id; + $this->macroarray[$attrs['dn']][$id]['name'] =$data[1]; + $this->macroarray[$attrs['dn']][$id]['type'] =$data[2]; + $this->macroarray[$attrs['dn']][$id]['default']=$data[3]; + if($data[2] == "bool"){ + $this->macroarray[$attrs['dn']][$id]['choosen']=$data[3]; + } + }//foreach + }//is_array + }//while + + + /* Parse used Macro + * If we have a macro selected, parse it and set values + * in $this->macroarray[$this->macro]. + */ + $tmp = split("!",$this->goFonMacro); + if(is_array($tmp)){ + + /* First value is the macroname */ + $this->macro = $tmp[0]; + + /* Macroname saved, delete that index */ + unset($tmp[0]); + + /* Check if makro has been removed */ + if(!isset($this->macros[$this->macro])){ + $this->macrostillavailable = false; + }else{ + $this->macrostillavailable = true; + } + + /* for each parametervalues ( parameterID#value like 25#twentyfive) */ + foreach($tmp as $var){ + + /* Split this, so we have $varar[0] = parameterID $varar[1] = SelectedValue */ + $varar = split("#",$var); + + /* Only insert if the parameter still exists */ + if(isset($this->macroarray[$this->macro][$varar[0]])){ + /* Assign value */ + $this->macroarray[$this->macro][$varar[0]]['choosen']=$varar[1]; + } + } + } + + + $this->a_old_telenums = $this->phoneNumbers; + + /* Get voicemail PIN from MySQL DB + * Because every user can change his PIN directly from the phone + * without any update to the ldap + * This means, the PIN in the DB is up to date + */ + // Connect to DB server + if( (is_callable("mysql_pconnect"))&& + (isset($cur_cfg))&& + (isset($cur_cfg['SERVER']))&& + (isset($cur_cfg['LOGIN']))&& + (isset($cur_cfg['PASSWORD']))){ + + $r_con = @mysql_pconnect($cur_cfg['SERVER'],$cur_cfg['LOGIN'],$cur_cfg['PASSWORD']); + if($r_con){ + $r_db = @mysql_select_db($cur_cfg['DB'],$r_con); + + $query_tmp = "SELECT ".$cur_cfg['VOICE_TABLE'].".context as 'v_context', + ".$cur_cfg['SIP_TABLE'].".context, + ".$cur_cfg['VOICE_TABLE'].".password + FROM ".$cur_cfg['VOICE_TABLE'].", + ".$cur_cfg['SIP_TABLE']." + WHERE customer_id = sip_users.mailbox AND name='".$this->uid."'"; + + + $res = mysql_query($query_tmp); + $vp = mysql_fetch_assoc($res); + + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query_tmp, "Database query"); + if((isset($vp['password']))&&(!empty($vp['password']))){ + $this->goFonPINVoice = $vp['password']; + } + if((isset($vp['context']))&&(!empty($vp['context']))){ + $this->context = $vp['context']; + } + if((isset($vp['v_context']))&&(!empty($vp['v_context']))){ + $this->voice_context = $vp['v_context']; + } + } + } + $this->lastmacro=$this->macro; + + if(is_callable("mysql_close")&&(isset($r_con))&&($r_con)){ + @mysql_close($r_con) ; + } + } + + + /* This function generates the Database entries. + * The Parameter 'save' could be true or false. + * false - means only testing no database transactions. + * true - write database entries. + * + * 'sip_users','voice_mail' and 'extensions' table entries will be created. + * + * If the phone hardware is 'automatic' the table entries will only be removed + * and not added. + */ + function generate_mysql_entension_entries($save = false) + { + /* Check if there is at least one server available + * If not, return and tell the user that saving failed + */ + if(!count($this->goFonHomeServers)){ + if($save){ + msg_dialog::display(_("Configuration error"), msgPool::noserver(_("GOfon")), WARNING_DIALOG); + } + return(true); + } + + /* Check if Mysql extension is available */ + if(!is_callable("mysql_pconnect")){ + if($save){ + msg_dialog::display(_("Configuration error"), msgPool::missingext("php-mysql"), WARNING_DIALOG); + } + return(true); + } + + /********************** + * Attribute Initialisation + **********************/ + + $old_connection = false; + + // Get Configuration for Mysql database Server + $s_parameter = ""; // Contains paramter for selected Macro + $r_con = false; // DB connection + $r_db = false; // Selected DB + $r_res = false; // Result resource + $a_ldap_attrs = array(); // + + $s_ip = NULL; // Contains ip for Sip entry + $s_host = NULL; // Contains host for Sip entry + $s_qualify = "yes"; // Qualify entry + $s_pin = NULL; // Entry for secret + $s_type = NULL; // Entry for phone type (friend , peer ..) + + $sip_data_array = array(); // Contains complete sip entry, to generate SQL syntax + $i_old_key = false; // Contains index for first old phonenumber, to delete old entries corectly + $i_new_key = false; // Contains index for first new phonenumber, to generate new entries corectly + + $s_sip_values = ""; // Contains string with all values for given attributes in SQL syntax + $s_sip_keys = ""; // Contains all needed attributes to generate sip entry in DB + + $s_sip_key = ""; // Key for SIP entry index + $s_sip_val = ""; // Value for SIP entry index + + $b_first_deleted= false; // Only delete first entry, + $s_telenums = ""; // for each value variable + + $i_is_accounted = false; // Ensure that extension entry, for name to number is only once in table + + /* Prepare some basic attributes */ + $oldnums = array(); + foreach($this->a_old_telenums as $tele){ + $oldnums[]= preg_replace("/[^0-9]/","",$tele); + } + foreach($this->phoneNumbers as $tele){ + $newnums[]= preg_replace("/[^0-9]/","",$tele); + } + + if(empty($this->uid)) trigger_error("Uid is empty."); + + + /* Create voicemail entry + */ + if((!isset($this->cn))||(empty($this->cn))){ + $CNname= $this->uid; + }else{ + $CNname= $this->cn; + } + + $s_mail = ""; + if($this->has_mailAccount){ + $s_mail = $this->mailAddress;; + } + + /* Get phonehardware to setup sip entry */ + $ldap = $this->config->get_ldap_link(); + $r_res = $ldap->search("(&(objectClass=goFonHardware)(cn=".$this->goFonHardware."))", array('*')); + $a_ldap_attrs = $ldap->fetch(); + + /* Check selected phone hardware, is a default IP set? */ + if(((isset($a_ldap_attrs['goFonDefaultIP'][0]))&&($a_ldap_attrs['goFonDefaultIP'][0] != "dynamic"))){ + $s_ip = $a_ldap_attrs['goFonDefaultIP'][0]; + $s_host = $s_ip; + }else{ + $s_ip = NULL; + $s_host = "dynamic"; + } + + // Attribute GoFonQualify set ? + if(isset($a_ldap_attrs['goFonQualify'])){ + $s_qualify = $a_ldap_attrs['goFonQualify'][0]; + } + + // Attribute GoFonPIN set ? + if(isset($this->goFonPIN)){ + $s_pin = $this->goFonPIN; + } + + // Attribute GoFonType set ? + if(isset($a_ldap_attrs['goFonType'])){ + $s_type = $a_ldap_attrs['goFonType'][0]; + } + + if(isset($a_ldap_attrs['goFonDmtfMode'][0])){ + $sip_data_array['dtmfmode'] = $a_ldap_attrs['goFonDmtfMode'][0]; + }else{ + $sip_data_array['dtmfmode'] ="rfc2833"; + } + + /* Check if phone number is used */ + if($this->is_number_used()){ + $this->generate_error = $this->is_number_used(); + return false; + } + + + + /********************** + * Check Server Connection Information + **********************/ + + /* Create Mysql handle for the current goFonHomeServer, if possible + * Get configuration to old asterisk home server + */ + $a_New = $this->goFonHomeServers[$this->goFonHomeServer]; // DB Configuration + $new_connection = @mysql_pconnect($a_New['SERVER'],$a_New['LOGIN'],$a_New['PASSWORD']); + if(!$new_connection){ + $this->generate_error = msgPool::dbconnect($a_New['SERVER'],@mysql_error($new_connection), + _("Abort saving entries to keep the database consistent.")); + new log("debug","gofonreport/".get_class($this),"",array(),@mysql_error($new_connection)); + return false; + } + $new_database = @mysql_select_db($a_New['DB'],$new_connection); + if(!$new_database){ + $this->generate_error = msgPool::dbselect($a_New['DB'],@mysql_error($new_connection), + _("Abort saving entries to keep the database consistent.")); + new log("debug","gofonreport/".get_class($this),"",array(),@mysql_error($new_connection)); + return false; + } + + /* If the home server has changed, we must remove entries from old + * server and add new entries in new server. + */ + if($this->init_HomeServer != $this->goFonHomeServer){ + + /* Get configuration to old asterisk home server */ + $a_Remove = $this->goFonHomeServers[$this->init_HomeServer]; // DB Configuration + + /* Create connection to the database that contains the old entry. + */ + $old_connection = @mysql_pconnect($a_Remove['SERVER'],$a_Remove['LOGIN'],$a_Remove['PASSWORD']); + if(!$old_connection){ + $this->generate_error = msgPool::dbconnect($a_Remove['SERVER'],@mysql_error($old_connection), + _("Abort saving entries to keep the database consistent.")); + new log("debug","gofonreport/".get_class($this),"",array(),@mysql_error($old_connection)); + return false; + } + $old_database = @mysql_select_db($a_Remove['DB'],$old_connection); + if(!$old_database){ + $this->generate_error = msgPool::dbselect($a_Remove['DB'],@mysql_error($old_connection), + _("Abort saving entries to keep the database consistent.")); + new log("debug","gofonreport/".get_class($this),"",array(),@mysql_error($old_connection)); + return false; + } + } + + /* Save means that we must save changes, not only test */ + if($save == true){ + + /********************** + * Remove entries from old home server + **********************/ + + /* Check if there is an old entry + * If there is an old entry, get callerid and remove voicemail and extensions + */ + if($old_connection){ + $query = "SELECT id,name,callerid FROM ".$a_Remove['SIP_TABLE']." WHERE name='".$this->uid."';"; + $rid = mysql_query($query,$old_connection); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + + /* Old entry found, remove it */ + $query_a = array(); + if(mysql_affected_rows($old_connection)){ + $result = mysql_fetch_assoc($rid); + $query_a[]= "DELETE FROM ".$a_Remove['SIP_TABLE']." WHERE name='".$this->uid."';"; + $query_a[]= "DELETE FROM ".$a_Remove['VOICE_TABLE']." WHERE customer_id='".$result['callerid']."';"; + $query_a[]= "DELETE FROM ".$a_Remove['EXT_TABLE']." WHERE exten='".$this->uid."';"; + foreach($oldnums as $s_telenums) { + $query_a[]= "DELETE FROM ".$a_Remove['EXT_TABLE']." WHERE exten='".$s_telenums."';"; + } + + foreach($query_a as $qry){ + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$qry, "Database query"); + if(!mysql_query($qry,$old_connection)){ + trigger_error(mysql_error($old_connection)); + } + } + } + } + + /********************** + * Update / Insert sip_users entry + **********************/ + + /* Set the first given phone number as callerid */ + reset($newnums); + $i_new_key = key($newnums); + $sip_data_array['callerid'] =$newnums[$i_new_key]; + $sip_data_array['mailbox'] =$newnums[$i_new_key]; + + /* Check if there is already an entry in sip_users for this uid */ + $SQL_query_array = array(); + $query = "SELECT * FROM ".$a_New['SIP_TABLE']." WHERE name='".$this->uid."';\n"; + $rid = mysql_query($query,$new_connection); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + if(mysql_affected_rows($new_connection)){ + + /********************** + * Update sip_users entry + **********************/ + $result = mysql_fetch_assoc($rid); + $sip_data_array['host'] = $s_host; + $sip_data_array['qualify'] = $s_qualify; + $sip_data_array['secret'] = $this->goFonPIN; + $sip_data_array['type'] = $s_type ; + $sip_data_array['username'] = $this->uid; + $sip_data_array['ipaddr'] = $s_ip; + $sip_data_array['context'] = $this->context; + + /* Remove not changed attributes, to avoid updating table with same values */ + foreach($sip_data_array as $name => $value){ + if($result[$name] == $value){ + unset($sip_data_array[$name]); + } + } + /* Only update entry if there is something to uopdate */ + if(count($sip_data_array)){ + $query = "UPDATE ".$a_New['SIP_TABLE']." SET "; + foreach($sip_data_array as $key => $val){ + $query.= "".$key."='".$val."',"; + } + $query = preg_replace("/,$/","",$query); + $query.= " WHERE name='".$this->uid."';"; + $SQL_query_array[] = $query; + } + } else { + + /********************** + * Insert sip_users entry + **********************/ + //generate SIP entry + $sip_data_array['id'] = ""; + $sip_data_array['name'] = $this->uid; + $sip_data_array['accountcode'] = NULL; + $sip_data_array['amaflags'] = NULL; + $sip_data_array['callgroup'] = NULL; + $sip_data_array['canreinvite'] = "no"; + $sip_data_array['context'] = $this->context; + $sip_data_array['defaultip'] = NULL; + $sip_data_array['fromuser'] = NULL; + $sip_data_array['fromdomain'] = NULL; + $sip_data_array['host'] = $s_host; + $sip_data_array['insecure'] = NULL; + $sip_data_array['language'] = NULL; + $sip_data_array['mailbox'] = $newnums[$i_new_key]; + $sip_data_array['md5secret'] = NULL; + $sip_data_array['nat'] = "no"; + $sip_data_array['permit'] = NULL; + $sip_data_array['deny'] = NULL; + $sip_data_array['mask'] = NULL; + $sip_data_array['pickupgroup'] = NULL; + $sip_data_array['port'] = NULL; + $sip_data_array['qualify'] = $s_qualify; + $sip_data_array['restrictcid'] = "n"; + $sip_data_array['rtptimeout'] = NULL; + $sip_data_array['rtpholdtimeout']=NULL; + $sip_data_array['secret'] = $this->goFonPIN; + $sip_data_array['type'] = $s_type ; + $sip_data_array['username'] = $this->uid; + $sip_data_array['disallow'] = NULL; + $sip_data_array['allow'] = NULL; + $sip_data_array['musiconhold'] = NULL; + $sip_data_array['regseconds'] = NULL; + $sip_data_array['ipaddr'] = $s_ip; + $sip_data_array['regexten'] = NULL; + $sip_data_array['cancallforward']=NULL; + + /* There is currently no entry for this user in the sip_users table. + * We should create one i + */ + foreach($sip_data_array as $s_sip_key=>$s_sip_val){ + if($s_sip_val === NULL) continue; + $s_sip_values.="'".$s_sip_val."',"; + $s_sip_keys .="`".$s_sip_key."`,"; + } + $s_sip_values = preg_replace("/,$/","",$s_sip_values); + $s_sip_keys = preg_replace("/,$/","",$s_sip_keys); + + /* Add sip entries to mysql queries */ + $SQL_query_array[] ="INSERT INTO ".$a_New['SIP_TABLE']." (".$s_sip_keys.") VALUES (".$s_sip_values.");"; + } + + + /********************** + * Update / Insert Voice mail entry + **********************/ + + $customer_id = $newnums[$i_new_key]; + + $query = "SELECT id,name,callerid FROM ".$a_New['SIP_TABLE']." WHERE name='".$this->uid."';"; + + $rid = mysql_query($query,$new_connection); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + $result = mysql_fetch_assoc($rid); + + $old_customer_id = ""; + if($result){ + $old_customer_id = $result['callerid']; + } + + $voice_data_array = array( + "customer_id" => $customer_id, + "mailbox" => $customer_id, + "password" => $this->goFonVoicemailPIN, + "fullname" => $CNname, + "context" => $this->voice_context, + "email" => $s_mail); + + $voice_data_array['pager'] = $this->pager; + + /* Check if there is already an entry in sip_users for this uid */ + $query_tmp = "SELECT * FROM ".$a_New['VOICE_TABLE']." WHERE customer_id='".$old_customer_id."';\n"; + + + $rid = mysql_query($query_tmp,$new_connection); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query_tmp, "Database query"); + if(mysql_affected_rows($new_connection)){ + + /********************** + * Update Voice mail entry + **********************/ + + $result = mysql_fetch_assoc($rid) ; + + foreach($voice_data_array as $name => $value){ + if($result[$name] == $value){ + unset($voice_data_array[$name]); + } + } + + /* Only update entry if there is something to update */ + if(count($voice_data_array)){ + $query = "UPDATE ".$a_New['VOICE_TABLE']." SET "; + foreach($voice_data_array as $key => $val){ + $query.= "".$key."='".$val."',"; + } + $query = preg_replace("/,$/","",$query); + $query.= " WHERE customer_id='".$old_customer_id."';"; + $SQL_query_array[] = $query; + } + }else{ + + /********************** + * Insert Voice mail entry + **********************/ + $voice_data_array['context'] = $this->voice_context; + + /* There is currently no voice mail entry for this user. + * We should create one + */ + $s_voi_values = $s_voi_keys = ""; + foreach($voice_data_array as $s_voi_key=>$s_voi_val){ + if($s_voi_val === NULL) continue; + $s_voi_values.="'".$s_voi_val."',"; + $s_voi_keys .="`".$s_voi_key."`,"; + } + $s_voi_values = preg_replace("/,$/","",$s_voi_values); + $s_voi_keys = preg_replace("/,$/","",$s_voi_keys); + + /* Add sip entries to mysql queries */ + $SQL_query_array[] ="INSERT INTO ".$a_New['VOICE_TABLE']." (".$s_voi_keys.") VALUES (".$s_voi_values.");"; + } + + + /********************** + * Remove/Insert extension entries + **********************/ + + /* Remove old entries */ + $query = array(); + $query[]= "DELETE FROM ".$a_New['EXT_TABLE']." WHERE exten=\"".$this->uid."\";"; + $oldnums= array(); + foreach($oldnums as $s_telenums){ + $query[]= "DELETE FROM ".$a_New['EXT_TABLE']." WHERE exten=\"".$s_telenums."\";"; + } + foreach($newnums as $s_telenums){ + $query[]= "DELETE FROM ".$a_New['EXT_TABLE']." WHERE exten=\"".$s_telenums."\";"; + } + foreach($query as $qry){ + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$qry, "Database query"); + if(!mysql_query($qry,$new_connection)){ + trigger_error(mysql_error($new_connection)); + } + } + + /********************** + * Insert extension entries + **********************/ + + // Get selected Macro Parameter and create parameter entry + if(isset($this->macroarray[$this->macro])){ + foreach($this->macroarray[$this->macro] as $key => $val ){ + $s_parameter .= $val['choosen']."|"; + } + $s_parameter = preg_replace("/\|$/","",$s_parameter); + } + + $i = 0; + $EXT = array(); + if(!is_numeric($this->uid)){ + $EXT[$i]['context'] = 'GOsa'; + $EXT[$i]['exten'] = $this->uid; + $EXT[$i]['priority']= 1; + $EXT[$i]['app'] = "Goto"; + $EXT[$i]['appdata'] = $newnums[$i_new_key]."|1"; + $i ++; + } + + // Entension entries Hint / Dial / Goto + foreach($newnums as $s_telenums){ + + /* Hint Entry */ + $EXT[$i]['context'] = 'GOsa'; + $EXT[$i]['exten'] = $s_telenums; + $EXT[$i]['priority']= "Hint"; + $EXT[$i]['app'] = 'SIP/'.$this->uid; + $i ++; + /* SetCID */ + //$EXT[$i]['context'] = 'GOsa'; + //$EXT[$i]['exten'] = $s_telenums; + //$EXT[$i]['priority']= 1; + //$EXT[$i]['app'] = "SetCIDName"; + //$EXT[$i]['appdata'] = $CNname; + //$i ++; + + // If no macro is selected use Dial + if($this->macro!="none"){ + $macroname = preg_replace("/,.*$/","",$this->macro); + $macroname = preg_replace("/^.*=/","",$macroname); + $s_app = "Macro";$macroname; + $s_par = $macroname."|".$s_parameter; + }else{ + $s_app = "Dial"; + $s_par = 'SIP/'.$this->uid."|20|r"; + } + + $EXT[$i]['context'] = 'GOsa'; + $EXT[$i]['exten'] = $s_telenums; + $EXT[$i]['priority']= 1; + $EXT[$i]['app'] = $s_app; + $EXT[$i]['appdata'] = $s_par; + $i ++; + } + + // Append all these Entries + foreach($EXT as $entr){ + $SQL_syn = "INSERT INTO ".$a_New['EXT_TABLE']." ("; + foreach($entr as $key2 => $val2){ + $SQL_syn.= "`".$key2."`,"; + } + $SQL_syn = preg_replace("/,$/","",$SQL_syn); + $SQL_syn .= ") VALUES ("; + foreach($entr as $key2 => $val2){ + $SQL_syn .= "'".$val2."',"; + } + $SQL_syn = preg_replace("/,$/","",$SQL_syn); + $SQL_syn .=");\n"; + + $SQL_query_array[] =$SQL_syn; + $SQL_syn =""; + } + + // Perform queries ... + foreach($SQL_query_array as $query){ + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + if(!@mysql_query($query,$new_connection)){ + $this->generate_error = msgPool::dbquery("GOfon",@mysql_error($old_connection)); + return false; + } + } + } + @mysql_close($new_connection); + return true; + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + $display = ""; + $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + + if(empty($this->macro)&&(!empty($this->goFonMacro))){ + + /* Go through already saved values, for a parameter */ + $tmp = split("!",$this->goFonMacro); + + /* it is possible that nothing has been saved yet */ + if(is_array($tmp)){ + + /* First value is the macroname */ + $this->macro = $tmp[0]; + + /* Macroname saved, delete that index */ + unset($tmp[0]); + + /* Check if macro has been removed */ + if(!isset($this->macroarray[$this->macro])){ + $this->macrostillavailable = false; + }else{ + $this->macrostillavailable = true; + } + + /* for each parametervalues ( parameterID#value like 25#twentyfive) */ + foreach($tmp as $var){ + + /* Split this, so we have $varar[0] = parameterID $varar[1] = SelectedValue */ + $varar = split("#",$var); + + /* Only insert if the parameter still exists */ + if(isset($this->macroarray[$this->macro][$varar[0]])){ + /* Assign value */ + $this->macroarray[$this->macro][$varar[0]]['choosen']=$varar[1]; + } + } + } + } + + /* Do we represent a valid account? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("Phone")).""; + $display.= back_to_main(); + return ($display); + } + + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + + /* Do we represent a valid account? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("Phone")).""; + $display.= back_to_main(); + return($display); + } + + $display= ""; + + /* Show tab dialog headers */ + + if (!$this->multiple_support_active && $this->parent !== NULL){ + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove phone account"), + msgPool::featuresEnabled(_("Phone"))); + } else { + if(empty($this->uid)){ + $display= $this->show_enable_header(_("Create phone account"), + msgPool::featuresDisabled(_("Phone"),_("User uid"))); + }else{ + $display= $this->show_enable_header(_("Create phone account"), + msgPool::featuresDisabled(_("Phone"))); + } + return ($display); + } + } + /* Select no macro if, state is empty, this is the case, if the selected macro is no longer available */ + if(empty($this->macro)){ + $this->macro ="none"; + } + + /* Prepare templating */ + $smarty= get_smarty(); + + /* tell user that the selected plugin is no longer available */ + if((!$this->macrostillavailable)&&($this->macro!="none")){ + msg_dialog::display(_("Error"), _("Selected macro is not available anymore!"), ERROR_DIALOG); + } + + /* Assing macroselectbox values */ + $smarty->assign("macros",$this->macros); + $smarty->assign("macro", $this->macro); + + /* Assign contexts */ + $smarty->assign("contexts",$this->get_asterisk_contexts()); + $smarty->assign("context" ,$this->context); + $smarty->assign("voice_context" ,$this->voice_context); + + /* check if there is a FON server created */ + if(!count($this->goFonHomeServer)){ + msg_dialog::display(_("Configuration error"), msgPool::noserver(_("GOfon")), WARNING_DIALOG); + } + + /* Create html parameter table for selected macro parameters + * skip if no parameters given + */ + if(!isset($this->macroarray[$this->macro])){ + $macrotab=""; + }else{ + + $macrotab =""; + /* for every single parameter-> display textfile,combo, or true false switch*/ + + foreach($this->phoneNumbers as $phonenum){ + $tmp[] = $phonenum; + } + + if($this->macro != $this->lastmacro){ + /* Go through all params */ + foreach($this->macroarray[$this->macro] as $key => $paras){ + + $string = $paras['default']; + + $string=preg_replace("/%uid/i",$this->uid,$string); + + if(isset($this->cn)){ + $string=preg_replace("/%cn/i",$this->cn,$string); + } + + for($i = 0 ; $i < 10; $i++){ + if(isset($tmp[$i])){ + $string = preg_replace("/%telephoneNumber_".($i+1)."/i",$tmp[$i],$string); + } + } + if(isset($tmp[0])){ + $string = preg_replace("/%telephoneNumber/i",$tmp[0],$string); + } + $this->macroarray[$this->macro][$key]['choosen']=$string; + } + } + + foreach($this->macroarray[$this->macro] as $paras){ + + /* get al vars */ + $var = $paras['var']; + $name = $paras['name']; + $default = $paras['default']; + $type = $paras['type']; + $choosen = $paras['choosen'] ; + $str = $default; + + $dis = ""; + if(!$this->acl_is_writeable("goFonMacro",$SkipWrite)){ + $dis = " disabled "; + } + + /* in case of a combo box display a combobox with selected attr */ + $macrotab.= ""; + switch ($type){ + + case "combo": + $str= ""; + $macrotab.= ""; + + } + $macrotab.="
".base64_decode($name)."$str"; + break; + + case "bool": + if(!$choosen){ + $str="\n"; + }else{ + $str="\n"; + } + $macrotab.= "$str ".base64_decode($name).""; + break; + + case "string": + $str=""; + $macrotab.= "".base64_decode($name)."$str"; + break; + + } + $macrotab.= "
"; + }//is_array() + + /* Give smarty the table */ + $smarty->assign("macrotab",$macrotab); + + + /* Add phone number */ + if (isset($_POST["add_phonenumber"]) && $_POST['phonenumber']){ + + if(strlen(trim($_POST["phonenumber"])) > 5 ){ + msg_dialog::display(_("Error"), msgPool::toobig("Phone number",99999), ERROR_DIALOG); + }elseif (tests::is_phone_nr($_POST['phonenumber'])){ + $number= trim($_POST["phonenumber"]); + $this->phoneNumbers[$number]= $number; + $this->is_modified= TRUE; + } else { + msg_dialog::display(_("Error"), msgPool::invalid("Phone number"), ERROR_DIALOG); + } + } + + /* Remove phone number */ + if (isset($_POST["delete_phonenumber"]) && isset($_POST["phonenumber_list"])){ + foreach ($_POST['phonenumber_list'] as $number){ + unset($this->phoneNumbers[$number]); + $this->is_modified= TRUE; + } + } + + /* Assign acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name,$SkipWrite)); + } + + /* Transfer ACL's */ + foreach($this->attributes as $val){ + if(isset($this->$val)){ + $smarty->assign($val,$this->$val); + }else{ + $smarty->assign($val,""); + } + } + + /* Create home server array */ + $tmp = array(); + foreach($this->goFonHomeServers as $dn => $attrs){ + if(!is_numeric($dn)){ + $tmp[$dn] = $attrs['SERVER']; + } + } + $smarty->assign("goFonHomeServers",$tmp); + + /* Fill arrays */ + $smarty->assign ("goFonHardware", $this->goFonHardware); + if (!count($this->phoneNumbers)){ + $smarty->assign ("phoneNumbers", array()); + } else { + $smarty->assign ("phoneNumbers", $this->phoneNumbers); + } + + $dis = ""; + if(!$this->acl_is_writeable("goFonHardware",$SkipWrite)){ + $dis= " disabled "; + } + $hl= "\n"; + $smarty->assign ("hardware_list", $hl); + + + foreach($this->attributes as $attr){ + if(in_array($attr,$this->multi_boxes)){ + $smarty->assign("use_".$attr,TRUE); + }else{ + $smarty->assign("use_".$attr,FALSE); + } + } + + foreach(array("goFonVoiceMailContext","goFonContext") as $attr){ + if(in_array($attr,$this->multi_boxes)){ + $smarty->assign("use_".$attr,TRUE); + }else{ + $smarty->assign("use_".$attr,FALSE); + } + } + + /* Show main page */ + $this->lastmacro = $this->macro; + $smarty->assign("multiple_support",$this->multiple_support_active); + $display.= $smarty->fetch(get_template_path('generic.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + + function save_object() + { + $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + if (isset($_POST["phoneTab"])){ + + plugin::save_object(); + + /* Save checkbox */ + $tmp = preg_replace("/[^a-z]/i","",$this->goFonDeliveryMode); + if($this->acl_is_writeable("goFonDeliveryMode",$SkipWrite)){ + if(isset($_POST['fon_to_mail']) && !preg_match("/M/",$this->goFonDeliveryMode)){ + $tmp .= "M"; + }elseif(!isset($_POST['fon_to_mail']) && preg_match("/M/",$this->goFonDeliveryMode)){ + $tmp = preg_replace ("/M/","",$tmp); + } + } + $this->goFonDeliveryMode= "[".$tmp."]"; + + + /* Every macro in the select box are available */ + if((isset($_POST['macro']))){ + $this->macro = $_POST['macro']; + $this->macrostillavailable=true; + } + + if(isset($_POST['macro']) && $_POST['macro'] != $this->macro){ + $this->is_modified =true; + } + + /* Save context */ + if(isset($_POST['context'])){ + if($this->context != $_POST['context']){ + $this->is_modified= TRUE; + } + $this->context= $_POST['context']; + } + + /* Save voice context */ + if(isset($_POST['voice_context'])){ + if($this->voice_context != $_POST['voice_context']){ + $this->is_modified= TRUE; + } + $this->voice_context= $_POST['voice_context']; + } + + if(is_array($this->phoneNumbers)){ + foreach($this->phoneNumbers as $telenumms) { + $nummsinorder[]=$telenumms; + } + }else{ + $nummsinorder=array(""); + } + + + /* get all Postvars */ + if(isset($this->macroarray[$this->macro])){ + + + if($this->acl_is_writeable("goFonMacro",$SkipWrite)){ + foreach($this->macroarray[$this->macro] as $key => $paras){ + + $old_macro_settings = $this->macroarray[$this->macro][$key]; + $backup = $this->macroarray[$this->macro][$key]; + + if(isset($_POST[$paras['var']])){ + $this->macroarray[$this->macro][$key]['choosen'] = $_POST[$paras['var']]; + } + + /* Checkboxes are special, they are not Posted if they are not selected, so the won't be changed with the above code + We need this code below to read and save checkboxes correct + */ + + if(isset($_POST['post_success'])){ + if($this->macroarray[$this->macro][$key]['type']=="bool"){ + if(isset($_POST[$this->macroarray[$this->macro][$key]['var']])) { + $this->macroarray[$this->macro][$key]['choosen']=1; + }else{ + $this->macroarray[$this->macro][$key]['choosen']=0; + } + } + } + if(array_differs($old_macro_settings,$this->macroarray[$this->macro][$key])){ + $this->is_modified = TRUE; + } + } + + if(count(array_diff($this->macroarray[$this->macro][$key],$backup))){ + $this->is_modified = TRUE; + } + } + } + } + } + + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(!count($this->goFonHomeServers)){ + $message[] = _("There must be at least one server with an asterisk database to create a phone account."); + } + + if(empty($this->goFonHomeServer)){ + $message[] = msgPool::invalid(_("Home server")); + } + + if((strlen($this->goFonVoicemailPIN)==0)||(strlen($this->goFonVoicemailPIN)>4)){ + $message[]= msgPool::invalid(_("Voicemail PIN"),"","",_("Between 1-4 charactes")); + }else{ + if(preg_match("/[^0-9]/",$this->goFonVoicemailPIN)){ + $message[]= msgPool::invalid(_("Voicemail PIN"),preg_replace("/[0-9]/","X",$this->goFonVoicemailPIN),"/X/"); + } + } + + if(preg_match("/[^0-9a-z]/i",$this->goFonPIN)){ + $message[]= msgPool::invalid(_("Phone PIN"),preg_replace("/[0-9a-z]/i","X",$this->goFonPIN),"/X/"); + } + + if ($this->initially_was_account != $this->is_account || $this->is_modified){ + if(!$this->generate_mysql_entension_entries()){ + $message[] = $this->generate_error; + } + } + + /* We need at least one phone number */ + if (count($this->phoneNumbers) == 0){ + $message[]= msgPool::required("Phone number"); + } + + /* check for ! in any parameter setting*/ + if(isset($this->macroarray[$this->macro])){ + foreach($this->macroarray[$this->macro] as $val){ + if((strstr($val['choosen'],"!"))||(strstr($val['choosen'],"#"))){ + $message[] = msgPool::invalid(sprintf(_("macro parameter %s"),$val['name']),$val['choosen'],"/[^\#]/"); + } + } + } + return ($message); + } + + + + function save() + { + plugin::save(); + + /* Force saving macro again + * This ensures that + * - the macro is available on the destiantion server. + * - the macro saved is up to date on the destination server. + */ + if(!empty($this->macro) && $this->macro != "none") { + $macro_tab= new macrotabs($this->config,$this->config->data['TABS']['MACROTABS'], $this->macro,"gofonmacro"); + $macro_tab -> save(); + } + + /* Save arrays */ + $tmp_numbers = array(); + foreach ($this->phoneNumbers as $number){ + $tmp_numbers[] = $number; + } + + /* Save settings, or remove goFonMacro attribute*/ + if($this->macro!="none"){ + $this->attrs['goFonMacro']=$this->macro; + if(isset($this->macroarray[$this->macro])){ + foreach($this->macroarray[$this->macro] as $paras) { + $this->attrs['goFonMacro'].="!".$paras['id']."#".$paras['choosen']; + } + } + }else{ + $this->attrs['goFonMacro']=array(); + } + unset($this->attrs['macro']) ; + + $this->attrs['goFonForwarding']=array(); + + if ($this->initially_was_account != $this->is_account || $this->is_modified){ + $str = $this->generate_mysql_entension_entries(true); + if(empty($str)){ + msg_dialog::display(_("Error"), $str, ERROR_DIALOG); + } + } + + if($this->attrs['goFonMacro']==""){ + $this->attrs['goFonMacro']=array(); + } + + unset($this->attrs['cn']); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + + /* Force saving numbers, else it will be overwriten by user account. */ + $this->attrs['telephoneNumber'] =$tmp_numbers; + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + + } + + + function adapt_from_template($dn, $skip= array()) + { + plugin::adapt_from_template($dn, $skip); + + /* Assemble phone numbers */ + if (isset($this->attrs['telephoneNumber']) && !in_array("telephoneNumber", $skip)){ + for ($i= 0; $i<$this->attrs['telephoneNumber']['count']; $i++){ + $number= $this->attrs['telephoneNumber'][$i]; + $this->phoneNumbers[$number]= $number; + } + } + } + + + function remove_from_parent() + { + if(!$this->initially_was_account) return; + + if(count($this->goFonHomeServers) && !empty($this->init_HomeServer) && is_callable("mysql_pconnect")){ + + // Get Configuration for initial Mysql database Server + $a_SETUP = $this->goFonHomeServers[$this->init_HomeServer]; + $s_parameter =""; + + // Connect to DB server + $r_con = @mysql_pconnect($a_SETUP['SERVER'],$a_SETUP['LOGIN'],$a_SETUP['PASSWORD']); + + // Check if we are connected correctly + if(!$r_con){ + msg_dialog::display(_("Error"), msgPool::dbconnect("GOfon",@mysql_error()), ERROR_DIALOG); + new log("debug","gofonreport/".get_class($this),"",array(),@mysql_error()); + return false; + } + + // Select database for Extensions + $db = @mysql_select_db($a_SETUP['DB'],$r_con); + + // Test if we have the database selected correctly + if(!$db){ + msg_dialog::display(_("Error"), msgPool::dbselect("GOfon", @mysql_error()), ERROR_DIALOG); + new log("debug","gofonreport/".get_class($this),"",array(),@mysql_error()); + return false; + } + + $SQL=""; + + + $first_num = false; + // Delete old entries + foreach($this->a_old_telenums as $s_telenums){ + if(!$first_num){ + $first_num = $s_telenums; + } + $SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$s_telenums."';\n"; + } + + + $query = "SELECT id,name,callerid FROM ".$a_SETUP['SIP_TABLE']." WHERE name='".$this->uid."';"; + $rid = mysql_query($query,$r_con); + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + $result = mysql_fetch_assoc($rid); + $callerid = $first_num; + if($result){ + $callerid = $result['callerid']; + } + + $SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id='".$callerid."';"; + $SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$this->uid."';\n"; + $SQL[] = "DELETE FROM ".$a_SETUP['SIP_TABLE']." WHERE name='".$this->uid."';\n"; + + foreach($SQL as $query){ + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query"); + if(!@mysql_query($query,$r_con)){ + msg_dialog::display(_("Error"), msgPool::dbquery("GOfon",@mysql_error()), ERROR_DIALOG); + return false; + } + } + }else{ + msg_dialog::display(_("Configuration error"), msgPool::missingext("php-mysql"), WARNING_DIALOG); + return false; + } + + /* unset macro attr, it will cause an error */ + $tmp = array_flip($this->attributes); + unset($tmp['macro']); + $this->attributes=array_flip($tmp); + + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + plugin::remove_from_parent(); + + /* Just keep one phone number */ + if (count($this->telephoneNumber) && $this->telephoneNumber != ""){ + $this->attrs['telephoneNumber']= $this->telephoneNumber; + } else { + $this->attrs['telephoneNumber']= array(); + } + + + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=goFonQueue)(member=*))", array("member")); + while($attr = $ldap->fetch()){ + if(in_array($this->dn,$attr['member'])){ + $new =new ogrouptabs($this->config, $this->config->data['TABS']['OGROUPTABS'],$attr['dn']); + unset($new->by_object['ogroup']->memberList[$this->dn]); + unset($new->by_object['ogroup']->member[$this->dn]); + $new->save(); + msg_dialog::display(_("Information"), sprintf(_("User '%s' has been removed from phone queue '%s'."), $this->cn, $new->by_object['ogroup']->cn), INFO_DIALOG); + } + } + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + @mysql_close($r_con); + $this->handle_post_events('remove',array("uid"=> $this->uid)); + } + + + + /* This function checks if the given phonenumbers are available or already in use*/ + function is_number_used() + { + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(|(objectClass=goFonAccount)(objectClass=goFonQueue)(objectClass=goFonConference))", array("telephoneNumber","cn","uid")); + while($attrs = $ldap->fetch()) { + unset($attrs['telephoneNumber']['count']); + foreach($attrs['telephoneNumber'] as $tele){ + if(!isset($attrs['cn'][0])) $attrs['cn'][0]=$attrs['dn']; + if(!isset($attrs['uid'][0])) $attrs['uid'][0]=$attrs['dn']; + $numbers[$tele]=$attrs; + } + } + + foreach($this->phoneNumbers as $num){ + if((isset($numbers[$num]))&&(($numbers[$num]['uid'][0]!=$this->uid))){ + if(isset($numbers[$num]['uid'][0])){ + return sprintf(_("The specified telephonenumber '%s' is already assigned to '%s'."),$num,$numbers[$num]['uid'][0]); + }else{ + return sprintf(_("The specified telephonenumber '%s' is already assigned to '%s'."),$num,$numbers[$num]['cn'][0]); + } + } + } + } + + + /* Create phoneAccount part of copy & paste dialog */ + function getCopyDialog() + { + if(!$this->is_account) return(""); + $smarty = get_smarty(); + if (!count($this->phoneNumbers)){ + $smarty->assign ("phoneNumbers", array("")); + } else { + $smarty->assign ("phoneNumbers", $this->phoneNumbers); + } + + $smarty->assign("goFonVoicemailPIN",$this->goFonVoicemailPIN); + $smarty->assign("goFonPIN",$this->goFonPIN); + + $display= $smarty->fetch(get_template_path('paste_generic.tpl', TRUE, dirname(__FILE__))); + $ret =array(); + $ret['string'] = $display; + $ret['status'] = ""; + return($ret); + } + + /* Save posts from copy & paste dialog dialog */ + function saveCopyDialog() + { + if(!$this->is_account) return; + $this->execute(); + if(isset($_POST['goFonVoicemailPIN'])) { + $this->goFonVoicemailPIN = $_POST['goFonVoicemailPIN']; + } + if(isset($_POST['goFonPIN'])){ + $this->goFonPIN = $_POST['goFonPIN']; + } + } + + + function allow_remove() + { + /* Check if previously selected server is still available */ + if($this->initially_was_account && !isset($this->goFonHomeServers[$this->goFonHomeServer])){ + return sprintf(_("The previously selected asterisk home server (%s) is no longer available. Remove aborted."),preg_replace("/,/",", ",$this->goFonHomeServer)); + } + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Phone"), + "plDescription" => _("Phone account settings"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 7, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + + + "plOptions" => array(), + + "plProvidedAcls" => array( + "telephoneNumber" => _("Telephone number"), + "goFonMacro" => _("Macro settings"), + "goFonHardware" => _("Phone hardware"), + "goFonHomeServer" => _("Home server"), + "goFonContext" => _("Phone context"), + "goFonVoiceMailContext" => _("Voice mail context"), + "goFonPIN" => _("Telephone pin"), + "goFonVoicemailPIN" => _("Voicemail pin")) + )); + } + + + + function multiple_execute() + { + plugin::multiple_execute(); + return($this->execute()); + } + + function get_multi_init_values() + { + $ret = plugin::get_multi_init_values(); + $ret['phoneNumbers'] = array(); + foreach($this->phoneNumbers as $number){ + $ret['phoneNumbers'][] = $number." [".$this->attrs['cn'][0]."]"; + } + $ret['phoneNumbers']['count'] = count($ret['phoneNumbers']); + return($ret); + } + + function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + + $this->phoneNumbers = array(); + if(isset($all['phoneNumbers'])){ + for($i = 0 ; $i < $all['phoneNumbers']['count'] ; $i++){ + $this->phoneNumbers[$all['phoneNumbers'][$i]] = $all['phoneNumbers'][$i]; + } + } + } + + function multiple_save_object() + { + /* Simply call parents save_object */ + if (isset($_POST["phoneTab"])){ + + plugin::save_object(); + plugin::multiple_save_object(); + + /* Every macro in the select box are available */ + if((isset($_POST['macro']))){ + $this->macrostillavailable=true; + } + + if(isset($_POST['macro']) && $_POST['macro'] != $this->macro){ + $this->macro = $_POST['macro']; + $this->is_modified =true; + } + + /* get all Postvars */ + if(isset($this->macroarray[$this->macro])){ + foreach($this->macroarray[$this->macro] as $key => $paras){ + $backup = $this->macroarray[$this->macro][$key]; + if(isset($_POST[$paras['var']])){ + $this->macroarray[$this->macro][$key]['choosen'] = $_POST[$paras['var']]; + } + if(isset($_POST['post_success'])){ + if($this->macroarray[$this->macro][$key]['type']=="bool"){ + if(isset($_POST[$this->macroarray[$this->macro][$key]['var']])) { + $this->macroarray[$this->macro][$key]['choosen']=$_POST[$paras['var']]; + }else{ + $this->macroarray[$this->macro][$key]['choosen']=false; + } + } + } + } + if(count(array_diff($this->macroarray[$this->macro][$key],$backup))){ + $this->is_modified = TRUE; + } + } + } + } + + function multiple_check() + { + $message = plugin::multiple_check(); + + if(!count($this->goFonHomeServers) && in_array("goFonHomeServers",$this->multi_boxes)){ + $message[] = _("There is currently no asterisk server defined!"); + } + + if(empty($this->goFonHomeServer) && in_array("goFonHomeServers",$this->multi_boxes)){ + $message[] = _("Asterisk server is invalid!"); + } + + if(in_array("goFonVoicemailPIN",$this->multi_boxes) && + ( (strlen($this->goFonVoicemailPIN)==0)|| + (strlen($this->goFonVoicemailPIN)>4))){ + $message[]=(_("Voicemail PIN must be 4 characters long!")); + }else{ + if(preg_match("/[^0-9]/",$this->goFonVoicemailPIN) && in_array("goFonVoicemailPIN",$this->multi_boxes) ){ + $message[]=(_("Voicemail PIN contains invalid characters!")); + } + } + + if(preg_match("/[^0-9a-z]/i",$this->goFonPIN) && in_array("goFonPIN",$this->multi_boxes)){ + $message[]=(_("Phone pin contains invalid characters!")); + } + + /* check for ! in any parameter setting*/ + if(isset($this->macroarray[$this->macro]) && in_array("macro",$this->multi_boxes)){ + foreach($this->macroarray[$this->macro] as $val){ + if((strstr($val['choosen'],"!"))||(strstr($val['choosen'],"#"))){ + $message[] = sprintf(_("The parameter %s contains invalid char. '!,#' is used as delimiter"),$val['name']); + } + } + } + + return($message); + } + + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("macro",$this->multi_boxes)){ + $ret['macro'] = $this->macro; + $ret['macroarray'] = $this->macroarray; + $ret['macros'] = $this->macros; + } + return($ret); + } + + + /* Return asterisk contexts + * Additionaly read contexts from file. + */ + function get_asterisk_contexts() + { + $contexts = array(); + $contexts[] = "default"; + $contexts[] = "parkedcalls"; + $contexts[] = "from-sip"; + $contexts[] = "from-capi"; + $file = "/etc/gosa/asterisk_contexts.conf"; + if(file_exists($file) && is_readable($file)){ + foreach(file($file) as $context){ + $contexts[] = trim($context); + } + } + array_unique($contexts); + return($contexts); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/gofon/gofon/phoneaccount/generic.tpl b/trunk/gosa-plugins/gofon/gofon/phoneaccount/generic.tpl new file mode 100644 index 000000000..27b824231 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/phoneaccount/generic.tpl @@ -0,0 +1,156 @@ + + + + + + + + + + + + +
+

+ +  {t}Phone numbers{/t} +

+ +{if $multiple_support} + + + +{else} + +{render acl=$telephoneNumberACL} + +{/render} +
+{render acl=$telephoneNumberACL} + +{/render} +{render acl=$telephoneNumberACL} +   +{/render} +{render acl=$telephoneNumberACL} + +{/render} + +{/if} +
+ + + + + +
+

 {t}Telephone hardware{/t}

+ + + {if !$multiple_support} + + + + + {/if} + + + + + + + + + + + + + + + + + + + + + +
+ {t}Telephone{/t} + + {render acl=$goFonHardwareACL checkbox=$multiple_support checked=$use_goFonHardware} + {$hardware_list} + {/render} +
{t}Home server{/t}{$must} + +{render acl=$goFonHomeServerACL checkbox=$multiple_support checked=$use_goFonHomeServer} + +{/render} +
{t}Context{/t} + +{render acl=$goFonContextACL checkbox=$multiple_support checked=$use_goFonContext} + +{/render} +
{t}Voicemail context{/t} + +{render acl=$goFonVoiceMailContextACL checkbox=$multiple_support checked=$use_goFonVoiceMailContext} + +{/render} +
+ + +{render acl=$goFonVoicemailPINACL checkbox=$multiple_support checked=$use_goFonVoicemailPIN} + +{/render} +
+ + +{render acl=$goFonPINACL checkbox=$multiple_support checked=$use_goFonPIN} + +{/render} +
+
+
 
+

+ +  {t}Phone macro{/t} +

+ + + + +
+{render acl=$goFonMacroACL checkbox=$multiple_support checked=$use_macro} + +{/render} + {if $javascript eq 'false'} +{render acl=$goFonMacroACL} + +{/render} + {/if} +
+
+ {$macrotab} +
+ + + + diff --git a/trunk/gosa-plugins/gofon/gofon/phoneaccount/main.inc b/trunk/gosa-plugins/gofon/gofon/phoneaccount/main.inc new file mode 100644 index 000000000..ebc64d3fe --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/phoneaccount/main.inc @@ -0,0 +1,136 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('phoneAccount'); + session::un_set('edit'); + +}else{ + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + session::un_set ('edit'); + session::un_set ('phoneAccount'); + } + + /* Create phoneAccount object on demand */ + if (!session::is_set('phoneAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $phoneAccount= new phoneAccount ($config, $ui->dn); + $phoneAccount->set_acl_base($ui->dn); + $phoneAccount->set_acl_category("users"); + session::set('phoneAccount',$phoneAccount); + } + $phoneAccount = session::get('phoneAccount'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $phoneAccount->save_object (); + } + + /* Enter edit mode? */ + if (isset($_POST['edit']) && !session::is_set('edit')){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $phoneAccount->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $phoneAccount->save (); + + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Write back to session */ + session::set('phoneAccount',$phoneAccount); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + if($lock_msg){ + $display.= $lock_msg; + }else{ + $display.= $phoneAccount->execute (); + } + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('phoneAccount',$phoneAccount); + } + + $info= ""; + if ($phoneAccount->is_account && empty($lock_msg)){ + $display.= "

"; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + $info= "\"\" ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/phoneAccount"))){ + $info.= "\"\""._("Click the 'Edit' button below to change informations in this dialog"); + $display.= "\n"; + } + $display.= "\n"; + } + $display.= "

\n"; + $display.= "\n"; + } + + /* Page header*/ + $display= print_header(get_template_path('plugins/gofon/images/phoneAccount.png'), _("Phone settings"), $info).$display; + +} +?> diff --git a/trunk/gosa-plugins/gofon/gofon/phoneaccount/paste_generic.tpl b/trunk/gosa-plugins/gofon/gofon/phoneaccount/paste_generic.tpl new file mode 100644 index 000000000..164948ba6 --- /dev/null +++ b/trunk/gosa-plugins/gofon/gofon/phoneaccount/paste_generic.tpl @@ -0,0 +1,55 @@ +

{t}Phone settings{/t}

+ + + + + + + + +
+

+  {t}Phone numbers{/t} +

+
+ +
+ + + +
+ + + + +
+

+ +  {t}Telephone hardware{/t} +

+ + + + + + + + + +
+ + + +
+ + + +
+
+
+ +
+
diff --git a/trunk/gosa-plugins/gofon/help/guide.xml b/trunk/gosa-plugins/gofon/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/gofon/html/images/banana.png b/trunk/gosa-plugins/gofon/html/images/banana.png new file mode 100644 index 0000000000000000000000000000000000000000..b9bc82e02e62f28bd9dab66d89c1dbbbd482596e GIT binary patch literal 784 zcmV+r1MmEaP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;hDk(0RCwBA{Qv(y10y3N10j$y_pd;t4O2f0BSXUL zZww6gUo$W~ddH9m5I`&pL;@X=_xsNsy=rj$@ID5I-~xsxANU!*eg88bAb^N6AZ`AC zhm}jZ4Rp0N7``xwGhDs(oZ;i&Zw$YFerEs(AfgQT_W3;nBZnBn-RHj<9^Spfz%FLM z@R#u$!~eg382|!^i5LSuy?(+VB%{Od>(4(1X$?mPF|J<>pI<*?U;u_6KmZYCfRL!9 z1JnPX4BtL|WMKdMmVuLti{b6Fy9~^1>)rv00BhM1)Qu5^S^)pDe&j_4+dtYe+&;EzhroF=Q@L+q~eB+jaml) z0tl}Gg$qB=XZZKa;rqAm4FCT8Wcbg(%y44g4hAtrtq<(ne2E}600G2;BiaN+x&QS4 z{QfoJpT7+Ic{msx zX7=|o{Nh$*xPAWx!*2#Qh7YeEGo0J8kU>~h^@FOpyCJ$}5C8}uunTfmGTi_Bhe6@b zZw7|1AKx&%eSDkY+3gDqJOZM?0Mp(8jIzX)WilVIg%>~ofx|%g$DIQwpK&Cx@bEDF z{{EGLgGbPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG( z2sIkk5uR)S01)>{L_t(&-tC%cj3j4y$A9lpRejFUbL{0^d%Ty|_L|)oA6N!qFo}VH zLAGUM&Oj7FqJ%^oAs`Wn5P?Dj2@oj=5QxK|U=jitg0b-l#>e_xulJnw?Ci|$+r@%Cm({4Qqt4a)m17z|M&Sn=i9=2&+qaf`5iz0AHZ+>&@bvKpMH1%0Rr*6 z0pO{pp4y>=yh18@uJ=BZB*}E6(b!wB*B?pZc-DK!<#SxL{Su^*cw7pui|>p;PrBz% z{BYVmaLys6Bn(58R^+nT7YAVfzWqUIsPxrMn>Jk^hEboC0uUH$=(IaD8ui1Ai;IsQ zI&k3gf!4p2LY$`Xi?fmVAKyI%^63DcpE#21>+id9czF2j%d6m=!+Qrn7zTvl;8&Rp>;1NH~ZC?bm|? z18ajI=<>k#&d&Sp%G(}*WwQ9#5cL(Mi~SSFVeM6)#^qtCveguoB-*2@5iSo zJsvE09Q*e^$6TX<5b3oCloV*C2F?mVDLo{FSaquMz14RvrImBwJvz`#O--@;xo6pN z>80HM{eNTn=rNoZcxyllq!%C@LIemrDT4qMLUgYk_*6Nx){Jf1$nfwm2lnkpD9QO7 zH)3Lg@SwF`eO3Tk>vhiiz7w99uAKMaeX6{34r?7=K%f*RHe_=dyfuuBu4e4~jok6$ zpYY&=4-kYJ>m6DslvD^I5mKb@6awWP-YXCe?;M*pZ|3^z-#}svtyYsTn;~w;2rqD? zERafU{S5%*u(K8+#0d*HpDMphp{{rfQYt!0hi0?G!ong+r-KeO$B$1_C>D9^TW+OR zui_jmhgz21cZCNBVZYUlxx$K&?t6Qf55JC(p zC6QA0xV|##IOj0NkR%C03L+h_SXrb}uTotq(}~*@@;Pdi3QG%1?A^PU$>~Xi6F3LL zdlC%7g2m&p2&*U-vP_IWPo-X?R;$uzHPKSjY_(WzV!Uwa)7~Q_1&_}IX9O@3=%7oX zuJYdDoyXc#d21ckgGL|&sFjy!H=EQObvm7x@?wQnCt=^7XSw2v%R#0Y+Ix?bT_11) zCmh1dG;Dec2sUoqNVQg{-E1PHB2HqGb^^V8h&g-a+QuXbXqaL|C($0<9EHAYQ0LWQXvyX3=fWQbmkbHBq5*6&|fSt zb$kYI4MT$^5Q_QvSr+H#NvuUGLEPw2Zd4FLVw^`>hmXio4E39@TEkk*6fzN&RpIBe2aqX4`M*0llf&bv0I}6M= zv;1n`KEAta7v5WpvD`T`htL9LJzbjKS1Q6fNi{1hbZ!Oh!9fL&)!BV}-yWjCgT)HLC(?9qy8mPAfkuf+dBZGas zFb6{#->z}ao5 zSwKovOp-WD5S+65T}NJV4G<>=XCX0;daZ#;5~Nnt8+E?;`7iSR*IAT+dJ94W#(=R6 zyeQ*kmV8j8z4vqc`k{k-@)MsTSIqL*u3hvOiqx?PJoS2$>AB-L1WpUQaY*S9LR@ef z03k%dSrok?c7}oe0dir){M-V4rGAtbEG{h&XaUY4ZAx2@Kr6NCGyvW+ z=<#A1K+2p`s?lC(1=n@tR;xv|QK8e0@Cxdc8au|;(P+gCuieJmKll;u{oz*`-+d1z zgv7LQqMU+|Szi0HG5+9Bzer#IAh&(zHa_%$58yBe1l2|jcg$nFLu!d_8=QBbL@_aj zKYsF`=hO&D;+VM8CI}zS@*2vp3f^*g~d zky3NjtKZDf$T|GzTc4p;tK$3;Ugc1}#SJ&UnGNS}^_aq~2=LXf!G23uqnSyhRCx&tF8N z`8ey&+YY7yB0xyZ1=}xW>=WPMz@8^Kdgw{^Kk-v4ZNod>^J&(Ot|M-C7~gk@d?ug9 z{V1ZmRH5B$F;FU@RJX_!A}3(<6aaG67)u-{35i!Zj?4m`DkN1e_yQub#u8IBx1id2e$fqtY? z6f;?p#L#FpAcpB<$JqVsZmzoWN}hh|2+j$jYzEN{adhccX*v)Zk_II0t`(O3q(u=>b?;S_*}bIi)16 zcAJMEd6X@iH3F*rELd1L2OE-&%uqr30|+U=OcIBvf6Rt5+9yUlvHQ4yZe zV!$&`Ji+$u+n~JwNee`~%h!O1cRkCFSKY)V*9gvyZzrOKF&-(wNkO0m#)9;oj6cly zeV;~;y^Rxo2TAr(dxuh%4MuItY3c) z2M--4%ICQ5wXY`(by_NWk*0c?wp&xr{*di)3v?lMW@jMCk@%2>mgW`LTuWRYXW{-y zOqVvwr;fV)nh&Cbklnxd6wX5J`8(+3u07Fgd7_>L78Vz?LJ)yKDM>z`r_*lJaxQJC zttF0Qvbh`s0|OXinVp?ssZs&&$>;LRX2qpMN-a^`!9BlvfXlY6r%*bF#B}J?$~?OJ zFy-83ER8>pSa=w11=4$z7dY?PFm?rNF1`VRJQv9VPyOtpD8ESc$UWG??;#|3=QBM3 zqa!0;2z*L|-URo=jIB4hNw1By6bgCr^99aXx0Wyr5kj0cQ*%yGb=RpWXqF$b0&>uptxvtv; zVS50!Zr$8&x7)FEo)dbAm1>`KIOk}0V%Ds#Q7R3hbsEg9byR9?mdZ`;yLSqcIBvRm z2j}kG#9*ySt=^)4%@A*T+ZMj}y(gGxby!oIVC~3SuD#(ybQTY?SSb@l8AzI49V8>$ zZlwIcKN2+dvtj)?c<%|rFzErvX0xqqCewMbn@t|@*5XG;kV;W+bT~LZ!-Ky(g!iDe zV)NEMvYCMCsd?^ev=LGu1S~Gq>9k`myL=5%6!7G?=U7;%5fp|AM4Q6sMu;0-<-6UX zi7^)X+$_bMLPvcF==1-bA-#vhXGNj$wVQU zC?E_&!a$(|g;ENo1g+XU&))ejEL92& z!Z08c1w>)G`cW7XMgc*f3ACg-H^Htuz5qbw*po!kVXWZj_#ReW@k(gTfj1CWL4YOV z=)@l4M35w&ul@Ko9@{(rl~%Ly)XILq1KDPy{;O8A<%2NHbb<9mcE^H32rGr~%VWZ= zTQAs}7*h&#mN3*rf$mx%Bnkt7mJhBn|-i-#V(i$ezwp_Qjt5cQbBf4=&a zSAO-%D_=H!5&)l)z6~7d%JRMN6p2oe@TWh2{1WFJS}U|xgjy45MHnc;@C2AZE0mH5 zAu!gl@v67+{DEgM2AmQo4`H^S?BF2v%29HqwOn`WUvTUTf5XAUlefS6l{fsuj+;KW z|IboA&2pUAzhV1zS;Puirkm?Ycj6|cL@9~Vsk3UWQ{D#}tIBK;T!Px6L zyk~}tQWW}%JU&(DjX_AEGzv;V;|RalmqYix`o@oaeg75yYp?t9bI(0@@8QFTzyCtJ zl&*`?0ZG?7>I@?Lin$MLzi{4Tay&5Q&%jGfsB9iWzzW=X}N~QAFbP{-sAPDI1@25~GP$(4e-t)}f39i0s z6olZx$M!KZGjq0A4FG@nfBIJgA;bXirsZrN$1(Hs^Gr@oGC4U(rBY${{>k1f^y@!( z;FPh>Y4ZNx#(yQAJX2XxE|-~_n&SA(JUGXJ@oDBO?H7F4e*k-9#Ikbbm6x|~-}_(N5Ej7c_VcP}C)u01kB9A zvPwc?GYSq04OBf#84>3505ZDq0Phq60MHjf0KUZ00NqT%0R962074Q=0Oj)N038b@ z0HoQh0RQ^!F9L|g-aee=$B!=z41XE_{Q1kw@R>t|VVB8QhR=*Y8Q!s>z(J0t65fAD=MLZ+{v71L42_>`gF%>AltD~SkwN&s5QCJU9K+_{yTGvk z5I`)j==jUZ%pi8-1;b_4;|$#VQVd@Y@i1H!IKv>S;mq*wJ1@ig|92T4A9%>{i1Pu1 zi?#>@6EibdA3y+s4FE+E%g^5ox6Cye{{3TN`1kWQgQBY-!{%ov7~bD-WqAMoAH!Se zMGU|7*%&_j`o_TdfD^0-NH7Bg5DO!S#l*XI+) z-~R!PV*CH^=NASRVJU`FSFSPqzr(N!7|1IjF8&AeH8`yS1Q4UOb+F@`H=lBD-rBbj zXzUB1ARkBqDYY^KmEHu3T*Q`?0RjkyK$-*zBzs0|f&c-;NNIKk2rvL0bM$@_sPdQq O0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<6-h)vRCwBA{Qv(y10?_;fEd%#(!eIXdiCnV`t|Dt zLF|Blfd5~ub3EFjIP`Hc*R9{*?f_4_AKl!1YjjUA%-4+Fz*ApZL6AH(O* zpApVR0ssL7cY#NCFW3Pf>BqM(GaOkpi9u6Cjp40mFoX2xZ45ttdh=}_C|J@BZ z2J!#BzV`puo4fy`qN3je1P}|zRB&urf7ytr@2^26ho3a@GF#cz__xK|iKYsp+fs>Pq;n!baxG?cD z{9+Yl`1zL!g1@{52Fxpl*!)%oU^EK?1Q7G>+jri_RQ7T3$q6x7Sx7M)IQ*F5>BFZC zmtOKQe0Xqz!PQKdf%)%S1{S6tV9dzG$nfOM28I}S35J-WISl{-#KObFE%5)(R|Zjb zK?Y7{1_nufR)#BYe=_9SzhY=EuxDWSbeDnQ3(#x-|AM{1{Ph8Y!2jzEAK$AmeE)9029U=hMS7<3>_Q( zF#rS*3n(C9i2|k(1X^1={x4qS2TWB!GsT}VFx=k)kx)}(V7T>zfq{hum^MCs00i?TJuNVLV3;>~eh$6%nEMWiu002ovPDHLkV1nTN BlGFeI literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofon/html/images/list_new_conference.png b/trunk/gosa-plugins/gofon/html/images/list_new_conference.png new file mode 100644 index 0000000000000000000000000000000000000000..ee9cf5f546a90ee736516e449d1e35f106cf7aba GIT binary patch literal 904 zcmV;319$w1P)H!oFap7Q_z0~JX` zK~y-)b&!2X+;tqsU*F&FcfWhc^Y&CXuTI@^Cd-Fya^)$@9Tcdv$Ul;3oY2D}ZZU#Z zM1S;Gk*o)b=B;HUO=>V`F-HDTY@jer&oq~_hs&mwOPyw&p65M&`r{h=%Qt-B!v{Vu z-tV{Ke_5Nl4pr{1dS>MAx&vu3at|(E9@KSE3N!^u@S=K?&D|P!Rkzz-|hxz;lzpIC{8; z6Xj8U?l?+Ya~;u{DMqJl-1|rf00Th1)9Mp?BJAw}|46=+!4?>U%fSpouRPEDPa16T zEJ95Y@eeH6a>Td}L4{*<}C4Nhmqt$le$gE&5u;(MV&pzvG?l=*#<#KuZ z0;FInnBEok;xS2E@o3eN;!A=D|2hhE=||aG=;9~7#ipb)?>>%-1dLp>ifdE z{f^DEpt*^s>p6UMSkCm$z5s;TK#kR9j_+SST$1~1;vtcFr>ssnWj3-&R%SF z+%KPgP?sw&EgA;)0L9ILJ=0gdu9wGJDwj;t`qD-KTrSt69?xALgL)h&xOvwNBjDP! e`8ZGtsQ&;cNkLD*86v6x0000nu~ zK~y-)jgw1ARACgyf8Th`rU%U>M4UF2(V~Sth^S2xQ_#vJh-NJ5LEVWdsYQzjA}T5u zwkUDnQV=CEC6rlhf@xEc6_JV2lQCn=Y8-Q}Gdentds>VRK`r`LhwpIy=l6Z*{FR9C zUni&}Z<8rGBxQeIYkt390AjINqNAfj2dJy7lT<3zAKv;DWsY z0&eIUoa*Q%m0f`IN)J@$ajdOIncZjr74Ayj^o|nwIt;-0FPo#*ahikY3Qf1ahTtk@ zsUaNOo@2MKLG^UA@s20qFilgLrvv1a&=_Y5COW+DxW~ zaBR7c?@2x3a9CIM^*cuPo@{Yhb9FQaG&R3qF!BL_hUx*%G_D897Z)d=%k%B!Z7SR@ zb~S%Nn=@y&OLAkBm+3f5pmJU*Z-*yotch{vNDYieAT?YRDH-d>CGW9DmXJ=T`-@Wm zICaS+Ze?gW(TG03ob$(4pq^eUEJik2K(Mng+K2C%+@}Q7d zx)eT5fTl4qVI?%B)L+IE5q|#sK{mIEygirQm+x~mc&m_%K4;Ih#n5FD3f<7vznnX5 z@!Hxgq7;eF&Q9Iy^$EcE_;}*py-wZht(SN_#&4uUW{afc1wH@(002ovPDHLkV1nK~ BZp;7x literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofon/html/images/macros.png b/trunk/gosa-plugins/gofon/html/images/macros.png new file mode 100644 index 0000000000000000000000000000000000000000..3d2f1f30c37c6e064359e71939be591764365716 GIT binary patch literal 4392 zcmV+@5!ddCP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG( z2sjRTWi(s>01&82L_t(&-tC%ukY06p$3MT{@0|C%_v~(VHy6MdHUyG@fFPhE5R^_^ zK(JU#>CjrM)xl|}7uy+e1}L`L!q^rjt)qker=y}=#!d^Ci}WcA`h_KF9L~^Ap6F3OI+dv6oV2vOG zm=##*5LSS6{q=DfN{0gj4$H2cFLSihL5S?y0ZIxyr3Ow4Kq+sz5Mssg%J;2rZ5CG6 zf^&Gj$H9XK+41s=oOi(mJowNzIW&0~>jchd@C4Ec5EdbP1dc3%02D&x*A`r+9G>T~ zcHJ1m!^7-;Wfww8P9GaXCmP|v^SqTO1>kw!Db~6ALMCRGa}J!#l(*JmjKvA?l|m<) zQn`pTnvv0!tUY~3)e!;^yizgIHDuj>-DY7+%Ksk$Z3WUX3%ephp;JWLs zCDocR>{2KdNumVd1ePocq!MSo0RTB{jX?;p-~sD0<$EENi!&glB2Htv-I!y?W=Z21 z&-a*`Iz+Wr<9B}hCR*(#)80) z6iBJo8f{RXdOZLs)u0fdluFWdqBIqKKeaJ)1%U@_L^%(g%f##u^1zz??m7nA$<(`t1I!w|3Fk)|nWul&0VvlQyo zBS(&wR;^wcz7Bv8Vo)iGl(HY|i&@87i`JSnO%YNMcs{d@SsLvo&AEBvB%)d=(`q!B zJ2uD8ojW;j=m5eBtOem5DH>tG;BXj(QPip>_V3+Cqurv_YSIb2c+#UAhOE>HPT1^e z=Ma*r!&QJ20vPcFYHLBR0f z2$R!?iPMxyxyaDq04rCmCW#_E-=|Wk@WkVfGdnXwY79~dl1|Kgr-2X>Z5`5Bq*T6f zR8L&UoLg&*>4%M5C|HXMT1KJ97>w4m8y%vk!+dKVt1WHka9A$AP!8 zIUCPEmlt+CPh=8;;;Bd}`Ot?xM7P^TNlCq4=X>A#KC`Vk&>)4R)9uh|HZvNu7K=bS zaK?@RFE0Ub`0!L9ggDJv+fOjNNNH!6R%GKGsW!Aa4cd(k(kYB*Nkh&2>@oh~@Ba}k zEWU(^$qB}P`T|l|e9!0bfk`%=a}MoxnQ zV=>C09qWM~ECFDht>IXvlw72!%|nI-ATFI zGee`@qSI>ezylBPjtehlWOO)dpsd;Ox)735)zUO6;rqu~KTqUE*8oYXu?A9YX}3D) zG(~!fcBjpjd$+KC`_p{%V;^Jv`m=cOfp73PpZ_~XM@PB)?k`ZU)d`~rV>G?CMQhE* z4IBB}&wq~T>1iH(@IjvZ&XfGsjW_b%tFGd~2Oi*U=bq1skzs@oXZ7>8r_j{&k#nLj z9Iw@?qE@SsrYTw*Qk|l;MyDEW48~}jwX|AoMn*>Y^FRAjo_cy4+fKw^1qZPwX6n4kx7Sg;3UlE$K%4)Cx9FQc7S@4~3UFwxNs@#(jxl)$AOK?waU6pXq-hF37=~Q` zfe)~E?;cR1mTJ9pQ?Ha5>(QgJi&|#86oj=IjV5sdIJ(^~NhczVLXt4T7{mQvyPqVE zky0+E=zfcm^*RxqP8TU8AZRpNv|3p$S=@{D&QeNdW@gyBbt|6o2KMaTtB#*aoNkQ4 z8UxNQSbxcxzIPCiCJ9L#;THmeAi(#1N`-(%W0o&}`AbwPl_da-G2ozFEaG_{#bOcV zDN3axBO}YHRx4O*iK2L^=YdkG#C`YO$930VkASjNUTp~gDb*Rq7))>HwU~jdTjB|A zG=)Neb{Nv>bg5OUREiZ!L5X6i#OBMd7_xm==BDH8<2l6s`I<}Ih4#+o&2K!~z{(c=KfQLPP0lJ@%Nr3{pDDTpj~opm%D z4chG%#bQ8EPy~enl}ed!KlT`xUiKcMDC$oaJSnNyYiO z{p`7{Co{&-?RL3h^JcdGXe+*wQVO|l2>`8iElpFp-7cb+$kr~}1LyrXl5RI7O)cGK zlPK(FyC!Q94wR5=-h2g0s=oD;B%xd`lO$=L7lJ||3%S|ZW6aIXQq04u2PD&_Lli|= zYf00TO0~-2g9nMy6sgo$zYgr5IN(VsmlcaeCMGA5N-;3745<{gVu>`>bixiKaOm)1 zcD%TQcU^J`&yP=Ftsp2BS+!y%r;n{;YHEt#xZwuEFoZk=RG!RQYXnd!mw9gdIX?60 zPct<&g%Falu`#y%(-z*kb}exn_dDM(jHp&C7-P`QCg+}a9^0OJiseH?*MIJ>@7yMw zb38Zxd|3#&ODTEE-hKOMHkzzI;|xmWGEZ-NiowA_-n#a5=I7^l=9y=409>VpFI2DYZ`BGy=C$)w9DY&!cZ-aV^*$O zMVcgdc}E(CA)fE!dmhSD%r_c%p5G5gAzszwd?J6bleV^&6 zDJqpJgF}P;@DxJOYPB)O;Cb113xxtZUU;53NqBnO(-VcD@YVCrKR?R>Aw&VVzg($a zTCEOTijYg<#VyVS*B|>XvdqFDtami#=K0c>zl1SaOOU21tyYU-Q0xN%7#ST!<)DPj zrWB1vgKiX4C@fe%2m-!x-@owG(?4N;Zu-8k+ZkWHBXdBh+iCwe?1s)S6pD*mU?BuD z9}5a0j1Y?>0sFeZ{gYPG6r)v64NMO7-5R1gHJ zTrM#*G^8t)it~Nn^E_X9o~JxdDWyEAlu}AbIWjW(#jCEm%A1>?&+CHhbGK3+X{rgs zFmDnC#@cM^CMBNlE!hk7jwp(_=GyoB^;+$e-Me>hUjo2oPe;H+F1>q&<0Lpv3VA~) z^Uprued<%6YHhyq%9Wnyp|wUSMY&w2)oKw%F+zy`Hj@79sijKy_6wa(r%%T^O?mj? zhbO=O^{?yRSL7SKe(i}^B)xF6i^Sv})IbWPBO@bUz5TY^4h2C#sZ=J4Licaq`c`M= z=!_j49LV0dEFRr28WxmFB?bovnLTz)f9J_3<~>ijLJ&}^R=M-9?s$Id)~%mi!Y6OQ zI6VMr(fN3h$9?Y0O*h?iLA_qT_4YgN*!am?Zuw!O(RjGgXq#`FTLzueCcJkZ~uh5?Y7(Y20`%QdcA((MHgLEch0F&sdUNk@bDLW-+yPW z$5OBT3;_Qp$-Pkrbi3U|WU*hEnmT;&1Zx;z?xZ#K7xnKpLWoO&b8`~t iS$ey3?wOxwo&Nz~v%A&FbfSv@0000$EYo%i1Kq^d&EOzU2Kp z2+~RG_xR=W`+hIqA1tJS>&A*7Cl2raHT%Tq*tmH?ZXPL-A2K_3UCTZA$rQOPBKvO7 z2x-eq>&0jWd-SeH_XkGU0bMQh?P@&|3 zD{rfUKD|lZ8~)n5`0p`50JQttjDhYw1HS}z9N14=Pk2M!Gn&({7_{0^bQRYIZ(8V_ zPIF*QivC0K{>R!_i#PZ_E8q7*WG7P-!r z{#%4P(`eNI@l7qgsbHqt{=INRmy)e8`4G}sNKb)VgJ_)Ht3tS`Z}@(D60^z2jeH2z z)DZ+#S4r&e+U1OuCiSZALaqd=2H|E1L}BSl5Mhb^CzhJ!uS%JQe3)YXHNlSzy5k)z z(?4c3^srekm}Qr|1-1jhFjQO^O@dRTR&(K10I4hS+UL+2Yex_2_&kG=$p;jRCDHD_ zC{27C;EPsYZ4sp^{Fj4S6DM2Y(pWKdXN4bE6F-&;0#oJ;lV%3fwNR6_Q7z{(apk%F zM~|UxULH^)Ubf8DaXY&=X`TLUqO#9RR&Iq7;m^g;7cr|)E;~p?K^bxK-nH_%cY_E) z_t8XPXltW(4*2AM^Ni@d(W4!IN6z<%dL%lltn-}(67#)+f4+GG&{(&+zOUf~I=yr4 YH{mlb;Aq1by#N3J07*qoM6N<$f}lcy-~a#s literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofon/html/images/phoneAccount.png b/trunk/gosa-plugins/gofon/html/images/phoneAccount.png new file mode 100644 index 0000000000000000000000000000000000000000..638ede970e00b88927e9ebb5c5ace5c6905c64fb GIT binary patch literal 3721 zcmV;44tDX0P)w7@rSwuC>?M=T>73k~ovG z<{a1g{lD87-#3@2DnHDZ`9Tx#KfV4Rzz_P0UeYMde-uDKkpD%J{(ILI0h~N}@>N#M zoyMB$Rkf03*>b<%f2!B(eKSkbHC3q9YrNu>KZ+595^`__zDokVpig%iF6x620>&8P zIL1bnTDAJp06g>bGo^*ag}*#{^yrB=F3%bxfZ)6%871`lz3**pZ9Ve*v(J926h#jh zk&6g^X)?O||WG+m)5owf2oikGRVMh$8!`N~Q9PIq`~WUP1^2 zRe}!$%|XpCF5F#fG){OIY`GFEK@~w10jr45%?6d?rYeYn=0BIk2F4hAy)NDdDwPT- zVvNNY^A6xEmjz&qJ!*`J#yl7UP*pTcfe8Us;?ZarKll7|l*BMfvx%exMaAY~ki10- zxd;X|U?$Af3q+y9(07@e$-<|q{f4@%&fr=DcJ z-$x{`D`1TfSv!AO0MBc@e}TckgHV)ph{GVICt(Gr=I*Sue$9v{^1}0p5?PE z1QpafhyhsplU$^8Uja;9pl7_w~{%>a5x~YR!B!FqCz0o0%PT-D*!M{!Fxnx zM*=}};>Rjf6!lzf5ChhIjwM-E?~$LV&TWWo*7v7F>$U zeDRC_#QNF>!{LBok}(=3q-jEyjB?cq3Kop9hrILH$X*P<7~2#9YxB;W`#JGi=zRzQ z?;Jij%Hi@EtZMxznsN`>Xs^DNBG@ve8hi_B#NAAo=lT6ng6bydY{pjs~T zwfp~*v!_qf?G6|YheUBimStq)?O$`uM(nj~YwOhm2lo#z0w5wyYYoPjiLOt3oe%=f zIkGH6j8KkBY_+#&_d0a8TO{d-M!iP2-DZ1po2Q<7iWiq(M1l|kh$fNglJWEt-{sCb?*NnU(5i|tg$)EDNI=x&Zc{xV9654? zPPfNsFhGnY%~G;a29y0LV2~IMlQYF`07s=bHcVWnSDbhF;3pd!lg&-&bo%sq1KO<) ziFYK!l%IOjPx8yZbPt_ghiD9N(_rrYVzZFSjd=g+7@2>EWHpg!!mNCGP>=gT5;orW+murNimh6{IOuS(`T z-F};1yN^+ej{@1y(c0SNPyYB%aS|vQICJ(4Cm(wpBY{#>V&%oNoP6|AR6Wjl?ps|) zBEfnkE?0@F5eA{x8?d&vk!uI}F~(buQ*H#lb^(B(VFqQ+S~EpxC{%_WAX@B;>VbfI zPiNG_;jtoY_d4A3-uH3*ZO6&dz^{DZSNY(t{~E8k?G~PW?)!Y~w?4v0KK5aL*}wiQAN}Y@II!;;{_U&(!e>77Ic8^SSTVGFUDj4s3YC@I76b_XOt_(y-n;cKtuTaTS&bMri({KUP~W~zMa(MOqU%+SLlD81f*<@NIfgb)ep z0>%VH~z?KUngBaxxs?Nh7Qh%03ln@czs z$kZ`2Q)hm@!Ra$Ytn<{G4eE_DXU}DX;FzDArxuslSl?uJVGgUp*7hc)NFW4^&(&5D zB5U_u1VELhqA~`MYtF9I=)|=`C=7Wx9Mb8xNk(PVLa*KBgTL`X-t*3P)9QBk>EmzW z_kZt`+O02D~zpvlx{ngyu9F=Mfmt{EbaGAUC?mVcn zxw*x`g9mv3J@@e7gZC4~F~$hP;RsZS;}U6_;=H32S&S{=vaARbEm3T7Nk-5>WFruR z^BE#SrC!Hqpg$Z@wh^aaJc})r7!5~6*5I65Yj@fQZ@%$HKfMne_TCe`2Ms&izu?Zq zs1eB0lr$Mpip#|17*O!aO)tNRH@xx3SwFwZ7ryWXUVFzKyylL(ICbh2U;fwo_=z|D zIIq6_b{_irH+b-&hxpkOKf}uoAK@$a-N)mPe}_uB1R*~`uY5z7=*b!P0p{bqIeo{ zopP9i4Jkq~HgddH6(zTry~2{`9wvMggT z7_hLoFxdxoV&LLDj$tquf*J;$4x{0KxLigJC|2Xkx|Ud?2V}&(dB*0vd8P77>iX#>Ohn-As}?1P21f+9MM$bo$JTkuhej zQmJs}>{*Pp%+JqZtYxNBCCeQBVINXhURmMPcTe%UyYAvUC(jUqP_9;x!o@LGHyh=r zU=_d+l>rrkcuXW%V+i zhytbv>;(yem_P`ESb>mRq9G89;3gjn8cZGsYd}=!^}BeloIAUWAIIT9P(ORa4KK?9 ztgmlW#Yn{%OJpt1InJJ2CW<1~*Ei_(hYXXHcB_T=j_a=Xw-IsEu}n> zz~~6nFoZmy_MS9Nsn%-D&(GtWXKihj?RFbfsn_abu@Z7cV*Dc% zQCOac*oh`pQ7l3z=H#6!W|DpxCtKFmRv8Wl%r7nw+ZZvRK`Rpgd-v>75j0nW;_Z|C z*-p-8TzB5nXw<21G`RMfgT!%+jAP!(=nKSnwQu8mj=2W(E*AP`@ zb}lEpR;x`C4sjf369Cm}by%%bl9&3iNdfg9-Ma^4?Jn+LhTKA^dI60xsmM6_H8oF) z*5<+@!DZMfMhPSn056_7KXmN~37SZlF1qP4yH+2Npn5_aMN1*(I7@4?|=h6!GGq&{vR=cMwnnyQM1pqX=PLimp{$T0v1 zd>dFkaA4o(4<0-iH5v^&(`cA-rDChqsx6nxwpOdMu(06j^}3cyr6`I@Hi{w}Mb=sy z8EdVz))*0Ej4_hq5XpDef;Y(tCX7Li$GEAs-DSf4s{vrw%jGKf-Orb*j|qG!b=}o=srIXW n=-$1^|GDdj{;vi<^Z@<~K5zJTV3C$`00000NkvXXu0mjf4|+iD literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofon/html/images/phonereport.png b/trunk/gosa-plugins/gofon/html/images/phonereport.png new file mode 100644 index 0000000000000000000000000000000000000000..6842f44b1810f3346cc13962c75fd9aa592cded8 GIT binary patch literal 1929 zcmc)KiCfZ19{_N?#VcO5w4yZA@_01ex9zn%#4`@(CVpJ`OF(bLm2Gc&{E z@kAoAva+%UR9|1;*x1~SB9Vkb;qvnG#Kc5eT3SxqN+D_CRkwujUPAb= zTT1y-N?j`Nm?@`8DjCwsp4}>j1elH3L?L!e5<5A>PA-u;U-KuurjuJkov*E}ecdl@ z9FjHxsAEk`X)~SQLYrynSp?Q<8`^vo3^WeK?#)+I z*}GQ3x?FKkVJksZ537+!qJtq2#TXZRgpV_=KmVcMI2ulScz!21Bo2=@!Ns4$@lO3I zU}(bfT6OCphJTumS$uosX?D6=+Ny_vTA995g%LvaF~p`qaqCHpP*YpJBk>`s-Dye~ zoxqv+(od+GmtNkq-88!Q;pRXy3Etb3BCld9AKSqyuhh;gc^o4acQYe1D*0t)_D0!m zkIW$alSjSLP!|t_O#4t9(vG5U*|>(Gx~F=TYo#ceqj&gx-1HUtb}sDMcL$zp7( zuM6}N&cdIeYIW}7#%AwcS$^Paa+7cRaHUGvu`5dT`HgWi)&Eo=w-|oachc89uebiL zzvaxOorWxmb&$mq#A!e55?+^uHs5=>y4?%9cyVsyO-a0Xv!Fx+N#B2*9vn?VoAx+* zvKGkd2y)b|DMOoC{JED2VbPoC{?|=q_$eY_4sT3L5nj-gSfg}B6^%e_(p>~T=*Qt7 zloAO@QDLqQ`tv*E8~gQ@XE2|+TCc}OA>OUmelWq9ok=-E$usM+juadSsymHUW%z9Q z8B^kbftM=q=p5tc#>AAVCq;%-6gRw!K1jXm~?wC8N%A#JO7;rcE) z$2&`r&|7!BFY$xPH?FO-c)-4d%KI4Y`JiyP&x?5=V>wTJ{_M+ zFu2ogjq1yLp_jyM7Oe*v<6ff^7&fU)uBF{*YOCSBGY{J7wCnN(<^-*u2P@uEj+GH$ zh$-8cUsxeFMQ-8R3Rn8z32|mOFc0qUgGLcQRPl#KKjwek-hdgqhpIh6^6@hVOlZl^9AM+gUI+h8HQv{1zm$WbrG?ou>W|JbJGi-3zbh*8=8}n*8b5?3O!Su8?nl)@URS<(b`2E!HHO% z0uiHG91!3UWQ28vR6(E}*rN0cOMHWdP%^nOIiIo>b?XHy@p(k{Rae!Fr=~f-T9-_4 z#PtK-g^mhOU$~ZaWghjcKswqVT1`bd{gt#fyLmBKCFfRv?E);_0eRWjA0rIsWd(L_ z3{CE8ET6b)jkx$FV+LbFvEoJ0wsC*u@4e23-VRjD3on14q;gP4eZ@9*#L9W4=VOR# zq+`>9hJrC7OR=6jxrao+fBkP}MvKFi9{fR_I3HE}{px;9&XAFYvcgUhOcZe4SY(wG z{?hI9*72&df9zpbMZC0=?2SD_{nh?z_{El19dsH#>V&G`Uc8CE0W#w^mA=s5DYy|7 qVOke!>9hVuOS5#{oNExbtKdDG=zrrS4g-8j5EloOeZ5`KqyGaY4C~bZ literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofon/html/images/pin.png b/trunk/gosa-plugins/gofon/html/images/pin.png new file mode 100644 index 0000000000000000000000000000000000000000..ca93f0d149f25ec249f8964ee93267f3f3208dd0 GIT binary patch literal 693 zcmV;m0!safP)hd-OLGsikAyx;m5E(CC6E+5`r_2UxZu9A$i{^YC${6#B-_w`h z@B9D2_xC5zqVe(ZU^pCpTCG-Hnx-{1P1{>uUVbTx;yYZVp`oGM^Yin?;o;$D06YL( z0|NsSu~;lWIy(CBLO?VceZ%wo^Y(cl5O@%cMn3{D>b)aRjoEBwi^bwrd!Vzk^LxEs zHv{O<1N^71udja)1Yv?82!|jDcN9fAvD@wLo}M0WCX*>GEG*dS^}5;)AX@z8cswo* z4h}j=l7ylt@cDem=kstl99UahOGF}(y8wRcR_O2VzdANHcE#uOfh7Nq3xxulPA77? z973T`&~CQ}&aGfH8aoUI1Hmv1dV708(=-ka4nR>9Y&IKYSw2!#_2}FqX0zE(D=RCT zl}ZJTMgtT@!R>aVR;z*IIPC83mQ_{#*$yzY_(nRNP6va*$*!(0QkLbt#l^+1&1Tc& z@px#Orn@PMG9;79_hZO-;Q90G4HMEG;el5Jgej*w{D;g+i0M z6##%?m|vw*>E!tM7`a?-3jh>F5oc#-?`N~wywz$Y=H}*J_4V~#(*qd7;qViVuunYRF__6)~yw?;-r9mFo5xvC?O#(P}qPWE`)^( z6L&^8;4P3Es|zGC(ZmqD&_DtU69%n{1uwO7(FR&tiqq-Lbf)utEdCl-J;}*QPVzqQ zn^&+j-uA&gy$`S1=X%0X8l(cHKnRcmgpC&iW|4Y+37++V*_K?#~Hciv-;@+ zu{QupVna#U2R9NlM-dI-Qfvh$2aj-UucopMtKQTF2km4GG!0{ZkD>24UFM}}>Y+T~qxdOv)?&HGgJjoFEo@E;t%4oE_%ibMu7dj|rvV#Ote|GR??njZ-gwyGr-H_SHb=V~-Bm z>LPB@QbSU31-GhDQt2|)YtsbC4D+>q_8-dIQ^OOl0w1!>Z0YL`e>$?i)7%{0X6w1Tm1CUCk uo^5aM_z1*qAo1T{X+4l?YnK8nEbNxC!m)A0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ<6-h)vRCwBA{Qv(y10?_;fEd%#(!eIXdiCnV`t|Dt zLF|Blfd5~ub3EFjIP`Hc*R9{*?f_4_AKl!1YjjUA%-4+Fz*ApZL6AH(O* zpApVR0ssL7cY#NCFW3Pf>BqM(GaOkpi9u6Cjp40mFoX2xZ45ttdh=}_C|J@BZ z2J!#BzV`puo4fy`qN3je1P}|zRB&urf7ytr@2^26ho3a@GF#cz__xK|iKYsp+fs>Pq;n!baxG?cD z{9+Yl`1zL!g1@{52Fxpl*!)%oU^EK?1Q7G>+jri_RQ7T3$q6x7Sx7M)IQ*F5>BFZC zmtOKQe0Xqz!PQKdf%)%S1{S6tV9dzG$nfOM28I}S35J-WISl{-#KObFE%5)(R|Zjb zK?Y7{1_nufR)#BYe=_9SzhY=EuxDWSbeDnQ3(#x-|AM{1{Ph8Y!2jzEAK$AmeE)9029U=hMS7<3>_Q( zF#rS*3n(C9i2|k(1X^1={x4qS2TWB!GsT}VFx=k)kx)}(V7T>zfq{hum^MCs00i?TJuNVLV3;>~eh$6%nEMWiu002ovPDHLkV1nTN BlGFeI literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/gofon/html/images/select_phone.png b/trunk/gosa-plugins/gofon/html/images/select_phone.png new file mode 100644 index 0000000000000000000000000000000000000000..b9bc82e02e62f28bd9dab66d89c1dbbbd482596e GIT binary patch literal 784 zcmV+r1MmEaP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;hDk(0RCwBA{Qv(y10y3N10j$y_pd;t4O2f0BSXUL zZww6gUo$W~ddH9m5I`&pL;@X=_xsNsy=rj$@ID5I-~xsxANU!*eg88bAb^N6AZ`AC zhm}jZ4Rp0N7``xwGhDs(oZ;i&Zw$YFerEs(AfgQT_W3;nBZnBn-RHj<9^Spfz%FLM z@R#u$!~eg382|!^i5LSuy?(+VB%{Od>(4(1X$?mPF|J<>pI<*?U;u_6KmZYCfRL!9 z1JnPX4BtL|WMKdMmVuLti{b6Fy9~^1>)rv00BhM1)Qu5^S^)pDe&j_4+dtYe+&;EzhroF=Q@L+q~eB+jaml) z0tl}Gg$qB=XZZKa;rqAm4FCT8Wcbg(%y44g4hAtrtq<(ne2E}600G2;BiaN+x&QS4 z{QfoJpT7+Ic{msx zX7=|o{Nh$*xPAWx!*2#Qh7YeEGo0J8kU>~h^@FOpyCJ$}5C8}uunTfmGTi_Bhe6@b zZw7|1AKx&%eSDkY+3gDqJOZM?0Mp(8jIzX)WilVIg%>~ofx|%g$DIQwpK&Cx@bEDF z{{EGLgGbM@oA-i$gBPJ*q_n?JH5mE zywiIYUY9gAH8mLug`Rr7-Va?ammd)2a``rqNc^<3v-3l-SUh+Yu)H*VeSL!q3k%=G zVzG~Mxg5D%j%u}vBuR94cQZIRh{NG%udc3sx3RIY2vh-N0GrJ=w6wJJEEbEszq`B3 z>FFu8S`AIpXf~UaN+m8XE)YV<^YioX*lf1cVcf<8U}|I2<^gPFyY*)oPV;xyzh|sSKQp(V6|ES z2nK`r{eIf*HknL@LZN^pNobnJ=;$c5T1}suoBO~TjYdCrI2;&;fvT!lEEa}`hY5$n zD2jrnX?VR}lF1~6LII1#LZwn66bjjfhK4@24h#&uYnmpVot>DbiQR6;?RHZv7BNi| z(=@46D!AQl48wTL2qEzKd?9PI*+d9|s;U@lODwWDxfk1$EyG^6f;PUd4R;z_1NeCg(b)DYcUQ|^@mSq%0A(>2) z%jK@5cs#xykH^t<9aUB7>+2&DiC`E8FJ8PLpU>lTIvE=q!{hPb@p!1!Y8)IKh)gE) z9N>+~$;n^W*49KOlM#kt2-7sh{r$Z-J3ABUbXqhT4Plz5&~;rT5(%-gvLYgp$d71n-Q?~-L1m&=9Q?WVW4m+tOvWLf6+_LjrLL-zLe*xug$Ykz-G9SKA&$a6bjiV zCMKAko@QiZgyZAmyXEEOuN#fV^Z$M0t5Ou@ZNK0DNq>L;kkx7>l}aTunat0?pa0GN Y3kV5|P>}*, 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2008-07-28 08:22+0200\n" +"Last-Translator: Jan Wenzel \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/ogroups/gofon/phonequeue.tpl:2 +msgid "" +"Only users with the same asterisk home server will be included to this queue." +msgstr "" +"Nur Benutzer mit demselben Asterisk Home-Server werden in die Warteschlange " +"aufgenommen." + +#: admin/ogroups/gofon/phonequeue.tpl:5 +msgid "Queue Settings" +msgstr "Warteschlangen-Einstellungen" + +#: admin/ogroups/gofon/phonequeue.tpl:8 gofon/phoneaccount/generic.tpl:1 +#: gofon/phoneaccount/generic.tpl:6 gofon/phoneaccount/paste_generic.tpl:2 +#: gofon/phoneaccount/paste_generic.tpl:6 +msgid "Phone numbers" +msgstr "Telefonnummern" + +#: admin/ogroups/gofon/phonequeue.tpl:12 +#: admin/ogroups/gofon/phonequeue.tpl:135 +msgid "Generic queue Settings" +msgstr "Allgemeine Warteschlangen-Einstellungen" + +#: admin/ogroups/gofon/phonequeue.tpl:24 +msgid "Up" +msgstr "Auf" + +#: admin/ogroups/gofon/phonequeue.tpl:27 +msgid "Down" +msgstr "Ab" + +#: admin/ogroups/gofon/phonequeue.tpl:47 gofon/conference/generic.tpl:141 +msgid "Options" +msgstr "Optionen" + +#: admin/ogroups/gofon/phonequeue.tpl:50 +#: admin/ogroups/gofon/class_phonequeue.inc:305 +#: admin/ogroups/gofon/class_phonequeue.inc:929 +#: gofon/phoneaccount/generic.tpl:58 +#: gofon/phoneaccount/class_phoneAccount.inc:1273 +#: gofon/phoneaccount/class_phoneAccount.inc:1612 +#: gofon/conference/generic.tpl:68 +#: gofon/conference/class_phoneConferenceGeneric.inc:782 +msgid "Home server" +msgstr "Home-Server" + +#: admin/ogroups/gofon/phonequeue.tpl:62 +#: admin/ogroups/gofon/class_phonequeue.inc:948 +#: gofon/conference/generic.tpl:78 +#: gofon/conference/class_phoneConferenceGeneric.inc:780 +msgid "Language" +msgstr "Sprache" + +#: admin/ogroups/gofon/phonequeue.tpl:75 +#: admin/ogroups/gofon/class_phonequeue.inc:311 +#: admin/ogroups/gofon/class_phonequeue.inc:927 +msgid "Timeout" +msgstr "Wartezeit" + +#: admin/ogroups/gofon/phonequeue.tpl:85 +#: admin/ogroups/gofon/class_phonequeue.inc:314 +#: admin/ogroups/gofon/class_phonequeue.inc:952 +msgid "Retry" +msgstr "Wiederholen" + +#: admin/ogroups/gofon/phonequeue.tpl:95 +msgid "Strategy" +msgstr "Strategie" + +#: admin/ogroups/gofon/phonequeue.tpl:109 +#: admin/ogroups/gofon/class_phonequeue.inc:928 +msgid "Max queue length" +msgstr "Maximale Grösse der Warteschlange" + +#: admin/ogroups/gofon/phonequeue.tpl:119 +#: admin/ogroups/gofon/class_phonequeue.inc:320 +#: admin/ogroups/gofon/class_phonequeue.inc:930 +msgid "Announce frequency" +msgstr "Benachrichtigungsfrequenz" + +#: admin/ogroups/gofon/phonequeue.tpl:125 +msgid "(in seconds)" +msgstr "(in Sekunden)" + +#: admin/ogroups/gofon/phonequeue.tpl:133 +msgid "Queue sound setup" +msgstr "Einstellung der Ansagen/Töne" + +#: admin/ogroups/gofon/phonequeue.tpl:138 +msgid "Use music on hold instead of ringing" +msgstr "Benutze Wartemusik statt Klingelton" + +#: admin/ogroups/gofon/phonequeue.tpl:149 +#: admin/ogroups/gofon/class_phonequeue.inc:937 +msgid "Music on hold" +msgstr "Wartemusik" + +#: admin/ogroups/gofon/phonequeue.tpl:159 +msgid "Welcome sound file" +msgstr "'Willkommen'" + +#: admin/ogroups/gofon/phonequeue.tpl:169 +msgid "Announce message" +msgstr "Benachrichtigung" + +#: admin/ogroups/gofon/phonequeue.tpl:179 +msgid "Sound file for 'You are next ...'" +msgstr "Klangdatei für Ansage 'Sie sind der Nächste...'" + +#: admin/ogroups/gofon/phonequeue.tpl:189 +msgid "'There are ...'" +msgstr "'Es gibt ...'" + +#: admin/ogroups/gofon/phonequeue.tpl:199 +msgid "'... calls waiting'" +msgstr "'... wartende Anrufe'" + +#: admin/ogroups/gofon/phonequeue.tpl:209 +msgid "'Thank you' message" +msgstr "'Vielen Dank'" + +#: admin/ogroups/gofon/phonequeue.tpl:219 +msgid "'minutes' sound file" +msgstr "'Minuten'" + +#: admin/ogroups/gofon/phonequeue.tpl:229 +msgid "'seconds' sound file" +msgstr "'Sekunden'" + +#: admin/ogroups/gofon/phonequeue.tpl:239 +msgid "Hold sound file" +msgstr "Gespräch halten" + +#: admin/ogroups/gofon/phonequeue.tpl:249 +msgid "Less Than sound file" +msgstr "'Weniger als...''" + +#: admin/ogroups/gofon/phonequeue.tpl:267 +msgid "Phone attributes " +msgstr "Telefon-Attribute" + +#: admin/ogroups/gofon/phonequeue.tpl:277 +#: admin/ogroups/gofon/class_phonequeue.inc:950 +msgid "Announce holdtime" +msgstr "Benachrichtige über Wartezeit" + +#: admin/ogroups/gofon/phonequeue.tpl:285 +#: admin/ogroups/gofon/class_phonequeue.inc:931 +msgid "Allow the called user to transfer his call" +msgstr "Erlaube Weiterleiten des Gesprächs (Angerufener)" + +#: admin/ogroups/gofon/phonequeue.tpl:293 +#: admin/ogroups/gofon/class_phonequeue.inc:932 +msgid "Allows calling user to transfer call" +msgstr "Erlaube Weiterleiten des Gesprächs (Anrufer)" + +#: admin/ogroups/gofon/phonequeue.tpl:305 +#: admin/ogroups/gofon/class_phonequeue.inc:933 +msgid "Allow the called to hangup by pressing *" +msgstr "Auflegen durch Drücken der Taste '*' (Angerufener)" + +#: admin/ogroups/gofon/phonequeue.tpl:313 +#: admin/ogroups/gofon/class_phonequeue.inc:935 +msgid "Allows calling to hangup by pressing *" +msgstr "Auflegen durch Drücken der Taste '*' (Anrufer)" + +#: admin/ogroups/gofon/phonequeue.tpl:321 +#: admin/ogroups/gofon/class_phonequeue.inc:934 +msgid "Ring instead of playing background music" +msgstr "Klingelton statt Hintergrund-Musik" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +msgid "Obsolete entry" +msgstr "Veralteter Eintrag" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, php-format +msgid "" +"The current home server is not available anymore. It will be moved to '%s' " +"if you save this entry!" +msgstr "" +"Der momentane Anmeldeserver ist nicht mehr verfügbar. Er wird auf '%s' " +"gewechselt, wenn Sie diesen Eintrag speichern!" + +#: admin/ogroups/gofon/class_phonequeue.inc:121 +msgid "ring all" +msgstr "alle gleichzeitig" + +#: admin/ogroups/gofon/class_phonequeue.inc:122 +msgid "round robin" +msgstr "nacheinander" + +#: admin/ogroups/gofon/class_phonequeue.inc:123 +msgid "least recently called" +msgstr "am wenigsten Anrufe" + +#: admin/ogroups/gofon/class_phonequeue.inc:124 +msgid "fewest completed calls" +msgstr "am wenigsten abgeschlossene Anrufe" + +#: admin/ogroups/gofon/class_phonequeue.inc:125 +msgid "random" +msgstr "zufällig" + +#: admin/ogroups/gofon/class_phonequeue.inc:126 +msgid "round robin with memory" +msgstr "nacheinander (mit Speicher)" + +#: admin/ogroups/gofon/class_phonequeue.inc:210 +msgid "Remove the phone queue from this Account" +msgstr "Warteschlange von diesem Konto entfernen" + +#: admin/ogroups/gofon/class_phonequeue.inc:211 +#: admin/ogroups/gofon/class_phonequeue.inc:214 +msgid "phone queue" +msgstr "Telefon-Warteschlange" + +#: admin/ogroups/gofon/class_phonequeue.inc:213 +msgid "Create phone queue" +msgstr "Warteschlange erstellen" + +#: admin/ogroups/gofon/class_phonequeue.inc:302 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone queue." +msgstr "" +"Es muss mindestens ein Server mit einer Asterisk-Datenbank bestehen, um eine " +"Telefon-Warteschlange zu erstellen." + +#: admin/ogroups/gofon/class_phonequeue.inc:317 +msgid "Queue length" +msgstr "Größe der Warteschlange" + +#: admin/ogroups/gofon/class_phonequeue.inc:323 +#: gofon/conference/class_phoneConferenceGeneric.inc:392 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Number" +msgstr "Nummer" + +#: admin/ogroups/gofon/class_phonequeue.inc:346 +#: admin/ogroups/gofon/class_phonequeue.inc:394 +msgid "asterisk" +msgstr "Asterisk" + +#: admin/ogroups/gofon/class_phonequeue.inc:378 +#: admin/ogroups/gofon/class_phonequeue.inc:732 +#: gofon/macro/class_gofonMacro.inc:392 gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/conference/class_phoneConferenceGeneric.inc:430 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "GOfon" +msgstr "GOfon" + +#: admin/ogroups/gofon/class_phonequeue.inc:437 +msgid "Cannot find old queue entry!" +msgstr "Kann alten Warteschlangen-Eintrag nicht finden!" + +#: admin/ogroups/gofon/class_phonequeue.inc:523 +#, php-format +msgid "" +"Found more than one entry named '%s' in queue table. Please inform your " +"system administrator!" +msgstr "" +"Es wurde mehr als ein Eintrag mit dem Namen '%s' in der Warteschlangen-" +"Tabelle gefunden. Bitte informieren Sie Ihren System-Administrator!" + +#: admin/ogroups/gofon/class_phonequeue.inc:764 +#: admin/ogroups/gofon/class_phonequeue.inc:766 +msgid "telephone number" +msgstr "Telefonnummer" + +#: admin/ogroups/gofon/class_phonequeue.inc:823 +#: admin/ogroups/gofon/class_phonequeue.inc:865 +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 gofon/macro/class_gofonMacro.inc:467 +#: gofon/macro/class_gofonMacro.inc:505 +#: gofon/phoneaccount/class_phoneAccount.inc:958 +#: gofon/phoneaccount/class_phoneAccount.inc:1077 +#: gofon/phoneaccount/class_phoneAccount.inc:1350 +#: gofon/phoneaccount/class_phoneAccount.inc:1422 +#: gofon/phoneaccount/class_phoneAccount.inc:1432 +#: gofon/phoneaccount/class_phoneAccount.inc:1466 +#: gofon/conference/class_phoneConferenceGeneric.inc:260 +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "Error" +msgstr "Fehler" + +#: admin/ogroups/gofon/class_phonequeue.inc:838 +#: admin/ogroups/gofon/class_phonequeue.inc:893 +#: admin/systems/services/gofon/class_goFonServer.inc:146 +#: admin/systems/gofon/class_phoneGeneric.inc:282 +#: admin/systems/gofon/class_phoneGeneric.inc:428 +#: admin/systems/gofon/class_phoneGeneric.inc:442 +#: admin/systems/gofon/class_phoneGeneric.inc:459 +#: gofon/macro/class_gofonMacroParameters.inc:401 +#: gofon/macro/class_gofonMacro.inc:479 gofon/macro/class_gofonMacro.inc:490 +#: gofon/macro/class_gofonMacro.inc:526 +#: gofon/phoneaccount/class_phoneAccount.inc:1377 +#: gofon/phoneaccount/class_phoneAccount.inc:1513 +#: gofon/conference/class_phoneConferenceGeneric.inc:718 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/ogroups/gofon/class_phonequeue.inc:901 +#: gofon/conference/generic.tpl:120 gofon/conference/paste_generic.tpl:15 +msgid "Phone number" +msgstr "Telefonnummer" + +#: admin/ogroups/gofon/class_phonequeue.inc:918 +#: gofon/phoneaccount/class_phoneAccount.inc:6 +#: gofon/phoneaccount/class_phoneAccount.inc:911 +#: gofon/phoneaccount/class_phoneAccount.inc:924 +#: gofon/phoneaccount/class_phoneAccount.inc:936 +#: gofon/phoneaccount/class_phoneAccount.inc:940 +#: gofon/phoneaccount/class_phoneAccount.inc:943 +#: gofon/phoneaccount/class_phoneAccount.inc:1597 +msgid "Phone" +msgstr "Telefon" + +#: admin/ogroups/gofon/class_phonequeue.inc:919 +msgid "Phone group" +msgstr "Telefon-Gruppe" + +#: admin/ogroups/gofon/class_phonequeue.inc:938 +msgid "Welcome music" +msgstr "Begrüßungsmusik" + +#: admin/ogroups/gofon/class_phonequeue.inc:939 +msgid "Report hold time" +msgstr "Benachrichtige über Wartezeit" + +#: admin/ogroups/gofon/class_phonequeue.inc:940 +msgid "'You are next' sound" +msgstr "'Sie sind der Nächste'-Ton" + +#: admin/ogroups/gofon/class_phonequeue.inc:941 +msgid "'There are' sound" +msgstr "'Es gibt ...'-Ton" + +#: admin/ogroups/gofon/class_phonequeue.inc:942 +msgid "'Call waiting' sound" +msgstr "'wartender Anruf'-Ton" + +#: admin/ogroups/gofon/class_phonequeue.inc:943 +msgid "'Thank you' sound" +msgstr "'Vielen Dank'-Ton" + +#: admin/ogroups/gofon/class_phonequeue.inc:944 +msgid "'Minutes' sound" +msgstr "'Minuten'-Ton" + +#: admin/ogroups/gofon/class_phonequeue.inc:945 +msgid "'Seconds' sound" +msgstr "'Sekunden'-Ton" + +#: admin/ogroups/gofon/class_phonequeue.inc:946 +msgid "'Less than' sound" +msgstr "'Weniger als'-Ton" + +#: admin/ogroups/gofon/class_phonequeue.inc:947 +msgid "Queue phone number" +msgstr "Telefonnummer der Warteschlange" + +#: admin/ogroups/gofon/class_phonequeue.inc:949 +msgid "Method" +msgstr "Methode" + +#: admin/ogroups/gofon/class_phonequeue.inc:951 +msgid "Announce" +msgstr "Ankündigung" + +#: admin/systems/services/gofon/goFonServer.tpl:1 +msgid "VoIP database information" +msgstr "Informationen der VoIP-Datenbank" + +#: admin/systems/services/gofon/goFonServer.tpl:4 +msgid "Asterisk DB user" +msgstr "Asterisk-DB Benutzer" + +#: admin/systems/services/gofon/goFonServer.tpl:12 +#: admin/systems/services/gofon/class_goFonServer.inc:77 +#: admin/systems/services/gofon/class_goFonServer.inc:179 +msgid "Password" +msgstr "Passwort" + +#: admin/systems/services/gofon/goFonServer.tpl:20 +msgid "Country dial prefix" +msgstr "Landesvorwahl" + +#: admin/systems/services/gofon/goFonServer.tpl:28 +#: admin/systems/services/gofon/class_goFonServer.inc:80 +msgid "Local dial prefix" +msgstr "Ortsvorwahl" + +#: admin/systems/services/gofon/class_goFonServer.inc:34 +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#: admin/systems/services/gofon/class_goFonServer.inc:165 +msgid "VoIP service" +msgstr "VoIP-Dienst" + +#: admin/systems/services/gofon/class_goFonServer.inc:65 +msgid "Asterisk management" +msgstr "Asterisk-Verwaltung" + +#: admin/systems/services/gofon/class_goFonServer.inc:74 +msgid "User" +msgstr "Benutzer" + +#: admin/systems/services/gofon/class_goFonServer.inc:83 +msgid "Country prefix" +msgstr "Landesvorwahl" + +#: admin/systems/services/gofon/class_goFonServer.inc:120 +#, php-format +msgid "" +"You can't remove the asterisk database extension, it is still in use by " +"these objects '%s'." +msgstr "" +"Sie können die Asterisk Datenbank-Erweiterung nicht entfernen, sie wird " +"momentan noch von folgenden Objekten verwendet: '%s'." + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "VoIP - asterisk management" +msgstr "VoIP - Asterisk Verwaltung" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/gofon/class_goFonServer.inc:174 +msgid "Start" +msgstr "Start" + +#: admin/systems/services/gofon/class_goFonServer.inc:175 +msgid "Stop" +msgstr "Beenden" + +#: admin/systems/services/gofon/class_goFonServer.inc:176 +msgid "Restart" +msgstr "Neustart" + +#: admin/systems/services/gofon/class_goFonServer.inc:178 +msgid "Admin" +msgstr "Administrator" + +#: admin/systems/services/gofon/class_goFonServer.inc:180 +msgid "Area code" +msgstr "Ortsvorwahl" + +#: admin/systems/services/gofon/class_goFonServer.inc:181 +msgid "Country code" +msgstr "Landesvorwahl" + +#: admin/systems/gofon/phonesettings.tpl:1 +msgid "Advanced phone settings" +msgstr "Erweiterte Telefon-Einstellungen" + +#: admin/systems/gofon/phonesettings.tpl:6 +msgid "Phone type" +msgstr "Telefon-Modell" + +#: admin/systems/gofon/phonesettings.tpl:8 +#: admin/systems/gofon/phonesettings.tpl:30 +#: admin/systems/gofon/phonesettings.tpl:42 +#: admin/systems/gofon/phonesettings.tpl:58 +#: admin/systems/gofon/phonesettings.tpl:91 +#: admin/systems/gofon/phonesettings.tpl:128 +#: admin/systems/gofon/phonesettings.tpl:181 +msgid "Choose a phone type" +msgstr "Wählen Sie das Telefon-Modell" + +#: admin/systems/gofon/phonesettings.tpl:13 +msgid "refresh" +msgstr "Aktualisieren" + +#: admin/systems/gofon/phonesettings.tpl:25 +msgid "Mode" +msgstr "Modus" + +#: admin/systems/gofon/phonesettings.tpl:38 +msgid "DTMF mode" +msgstr "DTMF-Modus" + +#: admin/systems/gofon/phonesettings.tpl:54 +#: admin/systems/gofon/phonesettings.tpl:99 +msgid "Default IP" +msgstr "Standard IP-Adresse" + +#: admin/systems/gofon/phonesettings.tpl:66 +#: admin/systems/gofon/phonesettings.tpl:109 +msgid "Response timeout" +msgstr "Wartezeit bis Antwort" + +#: admin/systems/gofon/phonesettings.tpl:87 +msgid "Modus" +msgstr "Modus" + +#: admin/systems/gofon/phonesettings.tpl:124 +msgid "Authtype" +msgstr "Authentifizierung" + +#: admin/systems/gofon/phonesettings.tpl:136 +msgid "Secret" +msgstr "Passwort" + +#: admin/systems/gofon/phonesettings.tpl:146 +msgid "GoFonInkeys" +msgstr "GOFon-Schlüssel (eingehend)" + +#: admin/systems/gofon/phonesettings.tpl:154 +msgid "GoFonOutKeys" +msgstr "GOFon-Schlüssel (ausgehend)" + +#: admin/systems/gofon/phonesettings.tpl:167 +msgid "Account code" +msgstr "Konto-Identifikation" + +#: admin/systems/gofon/phonesettings.tpl:177 +msgid "Trunk lines" +msgstr "Leitungen zusammenfassen" + +#: admin/systems/gofon/phonesettings.tpl:194 +msgid "Hosts that are allowed to connect" +msgstr "Erlaube diesen Rechnern die Verbindung" + +#: admin/systems/gofon/phonesettings.tpl:197 +#: admin/systems/gofon/phonesettings.tpl:220 +msgid "List of alternative mail addresses" +msgstr "Liste alternativer Mail-Adressen" + +#: admin/systems/gofon/phonesettings.tpl:217 +msgid "Hosts that are not allowed to connect" +msgstr "Verbiete diesen Rechnern die Verbindung" + +#: admin/systems/gofon/phonesettings.tpl:247 +msgid "MSN" +msgstr "MSN" + +#: admin/systems/gofon/paste_generic.tpl:3 admin/systems/gofon/phone.tpl:6 +msgid "Phone name" +msgstr "Telefon-Name" + +#: admin/systems/gofon/phone.tpl:17 +#: admin/systems/gofon/class_phoneGeneric.inc:517 +#: gofon/macro/class_gofonMacro.inc:573 gofon/macro/class_divListMacros.inc:79 +#: gofon/macro/generic.tpl:27 gofon/conference/generic.tpl:49 +#: gofon/conference/class_phoneConferenceGeneric.inc:776 +#: gofon/conference/class_divListConferences.inc:83 +msgid "Base" +msgstr "Basis" + +#: admin/systems/gofon/phone.tpl:20 gofon/macro/generic.tpl:30 +msgid "Choose subtree to place group in" +msgstr "Wählen Sie den Teilbaum, in den die Gruppe eingepflegt werden soll" + +#: admin/systems/gofon/phone.tpl:25 gofon/macro/generic.tpl:36 +#: gofon/conference/generic.tpl:56 gofon/conference/generic.tpl:62 +msgid "Select a base" +msgstr "Wählen Sie eine Basis" + +#: admin/systems/gofon/phone.tpl:34 +#: admin/systems/gofon/class_phoneGeneric.inc:518 +#: gofon/macro/class_gofonMacro.inc:574 gofon/macro/generic.tpl:49 +#: gofon/conference/generic.tpl:98 +#: gofon/conference/class_phoneConferenceGeneric.inc:777 +msgid "Description" +msgstr "Beschreibung" + +#: admin/systems/gofon/class_phoneGeneric.inc:124 +msgid "phone" +msgstr "Telefon" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:121 +msgid "yes" +msgstr "ja" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:122 +msgid "no" +msgstr "nein" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "dynamic" +msgstr "dynamisch" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "Networksettings" +msgstr "Netzwerk-Einstellungen" + +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 +#, php-format +msgid "Cannot delete entry because it is still in use by '%s'!" +msgstr "Konnte Eintrag nicht entfernen, da er noch von '%s' verwendet wird!" + +#: admin/systems/gofon/class_phoneGeneric.inc:331 +#: admin/systems/gofon/class_phoneGeneric.inc:334 +msgid "IP address" +msgstr "IP-Adresse" + +#: admin/systems/gofon/class_phoneGeneric.inc:340 +#: admin/systems/gofon/class_phoneGeneric.inc:344 +#: admin/systems/gofon/class_phoneGeneric.inc:347 +#: admin/systems/gofon/class_phoneGeneric.inc:362 +#: admin/systems/gofon/class_phoneGeneric.inc:516 +#: gofon/macro/class_gofonMacro.inc:406 gofon/macro/class_gofonMacro.inc:412 +#: gofon/macro/class_divListMacros.inc:56 gofon/macro/parameter.tpl:6 +#: gofon/conference/class_phoneConferenceGeneric.inc:388 +#: gofon/conference/class_phoneConferenceGeneric.inc:410 +#: gofon/conference/class_phoneConferenceGeneric.inc:775 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Name" +msgstr "Name" + +#: admin/systems/gofon/class_phoneGeneric.inc:507 +#: gofon/macro/class_gofonMacro.inc:562 +msgid "Generic" +msgstr "Allgemein" + +#: admin/systems/gofon/class_phoneGeneric.inc:508 +msgid "Phone generic" +msgstr "Telefon (Allgemein)" + +#: admin/systems/gofon/class_phoneGeneric.inc:513 +#: gofon/phoneaccount/class_phoneAccount.inc:1611 +msgid "Phone hardware" +msgstr "Telefon-Hardware" + +#: admin/systems/gofon/class_phoneGeneric.inc:519 +msgid "SIP Mode" +msgstr "SIP Modus" + +#: admin/systems/gofon/class_phoneGeneric.inc:520 +msgid "SIP DTMF mode" +msgstr "SIP DTMF-Modus" + +#: admin/systems/gofon/class_phoneGeneric.inc:521 +msgid "SIP Default ip" +msgstr "SIP Standard IP-Adresse" + +#: admin/systems/gofon/class_phoneGeneric.inc:522 +msgid "SIP Qualify" +msgstr "SIP Qualifizieren" + +#: admin/systems/gofon/class_phoneGeneric.inc:523 +msgid "IAX authentication type" +msgstr "IAX Authentifikations-Typ" + +#: admin/systems/gofon/class_phoneGeneric.inc:524 +msgid "IAX secret" +msgstr "IAX Kennwort" + +#: admin/systems/gofon/class_phoneGeneric.inc:525 +msgid "IAX account code" +msgstr "IAX Konto-Identifikation" + +#: admin/systems/gofon/class_phoneGeneric.inc:526 +msgid "IAX trunk lines" +msgstr "IAX Leitungen zusammenfassen" + +#: admin/systems/gofon/class_phoneGeneric.inc:527 +msgid "IAX permit settings" +msgstr "IAX Zulassungs-Einstellungen" + +#: admin/systems/gofon/class_phoneGeneric.inc:528 +msgid "IAX deny settings" +msgstr "IAX Ablehnungs-Einstellungen" + +#: admin/systems/gofon/class_phoneGeneric.inc:529 +msgid "CAPI MSN" +msgstr "CAPI MSN" + +#: admin/systems/gofon/class_phoneGeneric.inc:530 +msgid "Hardware type" +msgstr "Hardware-Typ" + +#: gofon/macro/headpage.tpl:6 gofon/macro/class_divListMacros.inc:31 +#: gofon/macro/class_divListMacros.inc:32 +msgid "List of macros" +msgstr "Liste der Makros" + +#: gofon/macro/headpage.tpl:20 gofon/macro/class_gofonMacroParameters.inc:374 +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#: gofon/conference/headpage.tpl:20 +msgid "Information" +msgstr "Information" + +#: gofon/macro/headpage.tpl:24 +msgid "" +"This menu allows you to add, edit and remove selected macros. You may want " +"to use the range selector on top of the macro listbox, when working with a " +"large number of macros." +msgstr "" +"Dieses Menü erlaubt es Ihnen Makros hinzuzufügen, zu bearbeiten oder zu " +"entfernen. Bei einer großen Anzahl von Makros bietet sich die Verwendung der " +"Bereichsauswahl an." + +#: gofon/macro/headpage.tpl:29 gofon/conference/headpage.tpl:29 +msgid "Filters" +msgstr "Filter" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "Zeige Makros, auf die zutrifft" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "Zeige Makros, auf die zutrifft" + +#: gofon/macro/headpage.tpl:41 gofon/macro/class_divListMacros.inc:64 +msgid "Regular expression for matching macro names" +msgstr "Regulärer Ausdruck zum Erkennen von Makro-Namen" + +#: gofon/macro/remove.tpl:2 gofon/conference/remove.tpl:2 +msgid "Warning" +msgstr "Warnung" + +#: gofon/macro/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dieser Eintrag wird unter Umständen von verschiedenen Gruppen genutzt. Bitte " +"überprüfen Sie genau was Sie tun, da GOsa keine Möglichkeit hat, die Daten " +"wiederherzustellen." + +#: gofon/macro/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Wenn Sie sicher sind, drücken Sie 'Entfernen' um fortzufahren oder " +"'Abbrechen' zum Abbruch." + +#: gofon/macro/class_gofonMacroParameters.inc:200 +#: gofon/phoneaccount/generic.tpl:125 gofon/phoneaccount/generic.tpl:127 +msgid "Phone macro" +msgstr "Telefon-Makro" + +#: gofon/macro/class_gofonMacroParameters.inc:256 +msgid "String" +msgstr "Zeichenkette" + +#: gofon/macro/class_gofonMacroParameters.inc:257 +msgid "Combobox" +msgstr "Auswahl-Gruppe" + +#: gofon/macro/class_gofonMacroParameters.inc:258 +msgid "Bool" +msgstr "Schalter" + +#: gofon/macro/class_gofonMacroParameters.inc:264 +msgid "Delete unused" +msgstr "Entferne" + +#: gofon/macro/class_gofonMacroParameters.inc:340 +#, php-format +msgid "Parameter %s contains invalid character. '!,#' is used as delimiter!" +msgstr "" +"Der Parameter %s enthält ungültige Zeichen. '!,#' werden als Feldtrenner " +"verwendet!" + +#: gofon/macro/class_gofonMacroParameters.inc:345 +#, php-format +msgid "Parameter %s is invalid!" +msgstr "Der Parameter %s ist ungültig!" + +#: gofon/macro/class_gofonMacroParameters.inc:374 +msgid "" +"Number of parameters for this macro has changed. Please update all users " +"using it!" +msgstr "" +"Die Anzahl der Parameter für dieses Makro wurde verändert. Bitte " +"aktualisieren Sie alle Benutzer, die es verwenden!" + +#: gofon/macro/class_gofonMacro.inc:300 +#, php-format +msgid "Application missing in line %s!" +msgstr "Anwendung fehlt in Zeile %s!" + +#: gofon/macro/class_gofonMacro.inc:304 +#, php-format +msgid "Extension missing in line %s!" +msgstr "Erweiterung fehlt in Zeile %s!" + +#: gofon/macro/class_gofonMacro.inc:416 +msgid "Name can be 20 characters at maximum!" +msgstr "Der Name kann höchstens 20 Zeichen lang sein!" + +#: gofon/macro/class_gofonMacro.inc:425 +msgid "Macro is still in use!" +msgstr "Das Makro wird noch verwendet!" + +#: gofon/macro/class_gofonMacro.inc:432 +msgid "Macro is empty!" +msgstr "Das Makro ist leer!" + +#: gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:371 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/phoneaccount/class_phoneAccount.inc:1471 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:169 +msgid "Configuration error" +msgstr "Konfigurationsfehler" + +#: gofon/macro/class_gofonMacro.inc:563 +msgid "Asterisk macro management" +msgstr "Asterisk-Makro-Verwaltung" + +#: gofon/macro/class_gofonMacro.inc:568 +msgid "GOfon macro" +msgstr "GOfon-Makro" + +#: gofon/macro/class_gofonMacro.inc:572 gofon/macro/generic.tpl:6 +#: gofon/macro/generic.tpl:9 gofon/macro/paste_generic.tpl:4 +#: gofon/macro/paste_generic.tpl:6 +msgid "Macro name" +msgstr "Makro-Name" + +#: gofon/macro/class_gofonMacro.inc:575 gofon/macro/generic.tpl:14 +msgid "Display name" +msgstr "Angezeigter Name" + +#: gofon/macro/class_gofonMacro.inc:576 +msgid "Macro content and parameter" +msgstr "Makro-Inhalt und Parameter" + +#: gofon/macro/class_gofonMacro.inc:577 +msgid "Visibility flag" +msgstr "Sichtbarkeits-Flag" + +#: gofon/macro/class_divListMacros.inc:50 +#: gofon/conference/class_divListConferences.inc:50 +msgid "Select all" +msgstr "Alle auswählen" + +#: gofon/macro/class_divListMacros.inc:56 +msgid "Department" +msgstr "Abteilung" + +#: gofon/macro/class_divListMacros.inc:57 +msgid "Visible" +msgstr "Sichtbar" + +#: gofon/macro/class_divListMacros.inc:58 +#: gofon/macro/class_divListMacros.inc:84 +#: gofon/conference/class_divListConferences.inc:59 +#: gofon/conference/class_divListConferences.inc:88 +msgid "Actions" +msgstr "Aktionen" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit department" +msgstr "Aktualisieren" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit" +msgstr "Übertragen" + +#: gofon/macro/class_divListMacros.inc:89 +#: gofon/conference/class_divListConferences.inc:93 +msgid "Create" +msgstr "Anlegen" + +#: gofon/macro/class_divListMacros.inc:91 +#: gofon/macro/class_divListMacros.inc:120 +msgid "Macro" +msgstr "Makro" + +#: gofon/macro/class_divListMacros.inc:97 +#: gofon/conference/class_divListConferences.inc:101 +msgid "Remove" +msgstr "Entfernen" + +#: gofon/macro/class_divListMacros.inc:121 +msgid "visible" +msgstr "sichtbar" + +#: gofon/macro/class_divListMacros.inc:122 +msgid "invisible" +msgstr "unsichtbar" + +#: gofon/macro/class_divListMacros.inc:146 +#: gofon/conference/class_divListConferences.inc:150 +msgid "edit" +msgstr "Bearbeiten" + +#: gofon/macro/class_divListMacros.inc:147 +msgid "Edit macro" +msgstr "Makro bearbeiten" + +#: gofon/macro/class_divListMacros.inc:153 +#: gofon/conference/class_divListConferences.inc:158 +msgid "delete" +msgstr "Entfernen" + +#: gofon/macro/class_divListMacros.inc:154 +msgid "Delete macro" +msgstr "Makro entfernen" + +#: gofon/macro/class_divListMacros.inc:202 +#: gofon/macro/class_divListMacros.inc:203 +#, php-format +msgid "Number of listed %s" +msgstr "Anzahl der angezeigten %s" + +#: gofon/macro/class_divListMacros.inc:202 +msgid "macros" +msgstr "Makros" + +#: gofon/macro/class_divListMacros.inc:203 +#: gofon/conference/class_divListConferences.inc:226 +msgid "departments" +msgstr "Abteilungen" + +#: gofon/macro/generic.tpl:18 +msgid "Macro name to be displayed" +msgstr "Makro-Name der angezeigt wird" + +#: gofon/macro/generic.tpl:60 +msgid "Visible for user" +msgstr "Sichtbar für Benutzer" + +#: gofon/macro/generic.tpl:70 +msgid "Macro text" +msgstr "Makro-Inhalt" + +#: gofon/macro/class_gofonMacroManagement.inc:24 +msgid "Phone macros" +msgstr "Telefon-Makros" + +#: gofon/macro/class_gofonMacroManagement.inc:25 +#: gofon/phoneaccount/class_phoneAccount.inc:7 +#: gofon/fonreports/class_fonreport.inc:7 +msgid "This does something" +msgstr "Dies tut etwas" + +#: gofon/macro/class_gofonMacroManagement.inc:273 +#: gofon/conference/class_phoneConferenceManagment.inc:187 +msgid "Permission" +msgstr "Berechtigung" + +#: gofon/macro/class_gofonMacroManagement.inc:320 +#: gofon/macro/class_gofonMacroManagement.inc:373 +#: gofon/macro/class_gofonMacroManagement.inc:397 +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +msgid "Permission error" +msgstr "Berechtigungsfehler" + +#: gofon/macro/class_gofonMacroManagement.inc:366 +msgid "macro" +msgstr "Makro" + +#: gofon/macro/main.inc:51 gofon/macro/main.inc:55 +msgid "Phone macro management" +msgstr "Telefon-Makro-Verwaltung" + +#: gofon/macro/parameter.tpl:4 +msgid "Argument" +msgstr "Argument" + +#: gofon/macro/parameter.tpl:8 +msgid "type" +msgstr "Typ" + +#: gofon/macro/parameter.tpl:10 +msgid "Default value" +msgstr "Standardwert" + +#: gofon/macro/parameter.tpl:19 +msgid "You are not allowed to view the macro parameter settings" +msgstr "" +"Sie haben keine Berechtigung, die Makro-Parameter Einstellungen anzuzeigen." + +#: gofon/phoneaccount/generic.tpl:42 gofon/phoneaccount/paste_generic.tpl:27 +msgid "Telephone hardware" +msgstr "Telefon-Hardware" + +#: gofon/phoneaccount/generic.tpl:44 gofon/phoneaccount/generic.tpl:48 +#: gofon/phoneaccount/paste_generic.tpl:29 +msgid "Telephone" +msgstr "Telefon" + +#: gofon/phoneaccount/generic.tpl:62 +msgid "Select the accounts home server" +msgstr "Wählen Sie den Home-Server des Kontos." + +#: gofon/phoneaccount/generic.tpl:69 +msgid "Context" +msgstr "Kontext" + +#: gofon/phoneaccount/generic.tpl:73 gofon/phoneaccount/generic.tpl:84 +msgid "Select the accounts context" +msgstr "Wählen Sie den Kontext des Kontos" + +#: gofon/phoneaccount/generic.tpl:80 +msgid "Voicemail context" +msgstr "Voicemail-Kontext" + +#: gofon/phoneaccount/generic.tpl:93 gofon/phoneaccount/paste_generic.tpl:32 +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#: gofon/phoneaccount/class_phoneAccount.inc:1280 +msgid "Voicemail PIN" +msgstr "Voicemail-PIN" + +#: gofon/phoneaccount/generic.tpl:103 gofon/phoneaccount/paste_generic.tpl:40 +#: gofon/phoneaccount/class_phoneAccount.inc:1285 +msgid "Phone PIN" +msgstr "Telefon-PIN" + +#: gofon/phoneaccount/generic.tpl:138 +msgid "Refresh" +msgstr "Aktualisieren" + +#: gofon/phoneaccount/paste_generic.tpl:1 gofon/phoneaccount/main.inc:133 +msgid "Phone settings" +msgstr "Telefon-Einstellungen" + +#: gofon/phoneaccount/main.inc:123 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Betätigen sie den 'Bearbeiten'-Schalter unten um Informationen in diesem " +"Dialog zu ändern" + +#: gofon/phoneaccount/class_phoneAccount.inc:172 +msgid "automatic" +msgstr "automatisch" + +#: gofon/phoneaccount/class_phoneAccount.inc:208 +msgid "no macro" +msgstr "kein Makro" + +#: gofon/phoneaccount/class_phoneAccount.inc:236 +msgid "undefined" +msgstr "nicht definiert" + +#: gofon/phoneaccount/class_phoneAccount.inc:489 +#: gofon/phoneaccount/class_phoneAccount.inc:496 +#: gofon/phoneaccount/class_phoneAccount.inc:514 +#: gofon/phoneaccount/class_phoneAccount.inc:521 +msgid "Abort saving entries to keep the database consistent." +msgstr "" +"Das Speichern der Einträge abbrechen, um die Datenbank konsistent zu halten." + +#: gofon/phoneaccount/class_phoneAccount.inc:935 +msgid "Remove phone account" +msgstr "Telefon-Konto entfernen" + +#: gofon/phoneaccount/class_phoneAccount.inc:939 +#: gofon/phoneaccount/class_phoneAccount.inc:942 +msgid "Create phone account" +msgstr "Telefon-Konto erstellen" + +#: gofon/phoneaccount/class_phoneAccount.inc:940 +msgid "User uid" +msgstr "Benutzer uid" + +#: gofon/phoneaccount/class_phoneAccount.inc:958 +msgid "Selected macro is not available anymore!" +msgstr "Das gewählte Makro ist nirgendwo verfügbar!" + +#: gofon/phoneaccount/class_phoneAccount.inc:982 +msgid "Parameter" +msgstr "Parameter" + +#: gofon/phoneaccount/class_phoneAccount.inc:1126 +msgid "Choose your private phone" +msgstr "Wählen Sie Ihr privates Telefon" + +#: gofon/phoneaccount/class_phoneAccount.inc:1269 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone account." +msgstr "" +"Es muss mindestens ein Server mit einer Asterisk-Datenbank bestehen, um ein " +"Telefon-Konto zu erstellen." + +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +msgid "Between 1-4 charactes" +msgstr "1-4 Zeichen" + +#: gofon/phoneaccount/class_phoneAccount.inc:1303 +#, php-format +msgid "macro parameter %s" +msgstr "Makro-Parameter %s" + +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#, php-format +msgid "User '%s' has been removed from phone queue '%s'." +msgstr "Benutzer '%s' aus Warteschlange '%s' entfernt." + +#: gofon/phoneaccount/class_phoneAccount.inc:1541 +#: gofon/phoneaccount/class_phoneAccount.inc:1543 +#, php-format +msgid "The specified telephonenumber '%s' is already assigned to '%s'." +msgstr "Die angegebene Telefonnummer '%s' wird bereits von '%s' verwendet." + +#: gofon/phoneaccount/class_phoneAccount.inc:1589 +#, php-format +msgid "" +"The previously selected asterisk home server (%s) is no longer available. " +"Remove aborted." +msgstr "" +"Der zuvor ausgewählte Asterisk Home-Server ('%s') ist nicht mehr verfügbar." +"Entfernen wurde abgebrochen." + +#: gofon/phoneaccount/class_phoneAccount.inc:1598 +msgid "Phone account settings" +msgstr "Telefon-Konto-Einstellungen" + +#: gofon/phoneaccount/class_phoneAccount.inc:1602 +msgid "My account" +msgstr "Mein Konto" + +#: gofon/phoneaccount/class_phoneAccount.inc:1609 +#: gofon/conference/class_phoneConferenceGeneric.inc:793 +msgid "Telephone number" +msgstr "Telefonnummer" + +#: gofon/phoneaccount/class_phoneAccount.inc:1610 +msgid "Macro settings" +msgstr "Makro-Einstellungen" + +#: gofon/phoneaccount/class_phoneAccount.inc:1613 +msgid "Phone context" +msgstr "Telefon-Kontext" + +#: gofon/phoneaccount/class_phoneAccount.inc:1614 +msgid "Voice mail context" +msgstr "Voicemail-Kontext" + +#: gofon/phoneaccount/class_phoneAccount.inc:1615 +msgid "Telephone pin" +msgstr "Telefon-PIN" + +#: gofon/phoneaccount/class_phoneAccount.inc:1616 +msgid "Voicemail pin" +msgstr "Voicemail-PIN" + +#: gofon/phoneaccount/class_phoneAccount.inc:1698 +msgid "There is currently no asterisk server defined!" +msgstr "Es ist momentan kein Asterisk-Server definiert!" + +#: gofon/phoneaccount/class_phoneAccount.inc:1702 +msgid "Asterisk server is invalid!" +msgstr "Der Asterisk-Server ist ungültig!" + +#: gofon/phoneaccount/class_phoneAccount.inc:1708 +msgid "Voicemail PIN must be 4 characters long!" +msgstr "Die Voicemail-PIN muss 4 Zeichen lang sein!" + +#: gofon/phoneaccount/class_phoneAccount.inc:1711 +msgid "Voicemail PIN contains invalid characters!" +msgstr "Die Voicemail-PIN enthält ungültige Zeichen!" + +#: gofon/phoneaccount/class_phoneAccount.inc:1716 +msgid "Phone pin contains invalid characters!" +msgstr "Die Telefon-PIN enthält ungültige Zeichen!" + +#: gofon/phoneaccount/class_phoneAccount.inc:1723 +#, php-format +msgid "The parameter %s contains invalid char. '!,#' is used as delimiter" +msgstr "" +"Der Parameter '%s' enthält ungültige Zeichen. '!,#' werden als Feldtrenner " +"verwendet" + +#: gofon/conference/headpage.tpl:6 +#: gofon/conference/class_divListConferences.inc:31 +#: gofon/conference/class_divListConferences.inc:32 +msgid "List of conference rooms" +msgstr "Liste der Konferenz-Räume" + +#: gofon/conference/headpage.tpl:24 +msgid "" +"This menu allows you to create, delete and edit selected phone conferences. " +"Having a large number of phone conferences, you might prefer the range " +"selectors on top of the conferences list." +msgstr "" +"Dieses Menü erlaubt es Ihnen Telefon-Konferenzen hinzuzufügen, zu bearbeiten " +"oder zu entfernen. Bei einer großen Anzahl von Abteilungen bietet sich die " +"Verwendung der Bereichswahl an." + +#: gofon/conference/headpage.tpl:35 +msgid "Display users matching" +msgstr "Zeige die Benutzer, auf die Folgendes passt" + +#: gofon/conference/headpage.tpl:36 +msgid "Regular expression for matching user names" +msgstr "Regulärer Ausdruck zum Erkennen von Benutzernamen" + +#: gofon/conference/remove.tpl:6 +msgid "" +"This includes 'all' accounts, systems, etc. in this subtree. Please double " +"check if your really want to do this since there is no way for GOsa to get " +"your data back." +msgstr "" +"Dies umfasst 'alle' Konten, System- und Setup-Informationen dieses " +"Teilbaums. Bitte prüfen Sie genau, da es keine Möglichkeit für GOsa gibt, " +"die Daten wiederherzustellen. " + +#: gofon/conference/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Eine Sicherung der LDAP-Datenbank bietet sich an. Wenn Sie dies erledigt " +"haben, drücken Sie 'Entfernen' um Fortzufahren oder 'Abbrechen', um den " +"Vorgang abzubrechen." + +#: gofon/conference/class_phoneConferenceManagment.inc:24 +msgid "Phone conferences" +msgstr "Telefon-Konferenzen" + +#: gofon/conference/class_phoneConferenceManagment.inc:25 +msgid "Management" +msgstr "Verwaltung" + +#: gofon/conference/class_phoneConferenceManagment.inc:206 +#: gofon/conference/class_phoneConferenceManagment.inc:267 +msgid "conference" +msgstr "Konferenz" + +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +msgid "You have not permission to delete this entry!" +msgstr "Sie haben keine Berechtigung, diesen Eintrag zu entfernen!" + +#: gofon/conference/generic.tpl:5 +msgid "Properties" +msgstr "Eigenschaften" + +#: gofon/conference/generic.tpl:15 gofon/conference/paste_generic.tpl:5 +msgid "Conference name" +msgstr "Konferenz-Name" + +#: gofon/conference/generic.tpl:21 gofon/conference/paste_generic.tpl:10 +msgid "Name of conference to create" +msgstr "Name der zu erzeugenden Konferenz" + +#: gofon/conference/generic.tpl:28 +msgid "Type" +msgstr "Typ" + +#: gofon/conference/generic.tpl:35 +msgid "Choose subtree to place conference in" +msgstr "Wählen Sie den Teilbaum, in den die Konferenz eingepflegt werden soll" + +#: gofon/conference/generic.tpl:82 +msgid "Select language" +msgstr "Auswahl der Sprache" + +#: gofon/conference/generic.tpl:104 +msgid "Descriptive text for department" +msgstr "Beschreibender Text zu dieser Abteilung" + +#: gofon/conference/generic.tpl:110 +msgid "Lifetime (in days)" +msgstr "Lebenszeit (in Tagen)" + +#: gofon/conference/generic.tpl:157 +#: gofon/conference/class_phoneConferenceGeneric.inc:783 +msgid "Preset PIN" +msgstr "PIN voreinstellen" + +#: gofon/conference/generic.tpl:165 +#: gofon/conference/class_phoneConferenceGeneric.inc:384 +#: gofon/conference/class_divListConferences.inc:58 +msgid "PIN" +msgstr "PIN" + +#: gofon/conference/generic.tpl:177 +#: gofon/conference/class_phoneConferenceGeneric.inc:784 +msgid "Record conference" +msgstr "Konferenz aufnehmen" + +#: gofon/conference/generic.tpl:185 +msgid "Sound file format" +msgstr "Format der Audiodatei" + +#: gofon/conference/generic.tpl:188 +msgid "Choose subtree to place department in" +msgstr "Wählen Sie den Teilbaum, in den die Abteilung eingepflegt werden soll" + +#: gofon/conference/generic.tpl:208 +#: gofon/conference/class_phoneConferenceGeneric.inc:785 +msgid "Play music on hold" +msgstr "Wartemusik bei Halten" + +#: gofon/conference/generic.tpl:216 +msgid "Activate session menu" +msgstr "Sitzungsmenü aktivieren" + +#: gofon/conference/generic.tpl:224 +msgid "Announce users joining or leaving the conference" +msgstr "Benachrichtige über Abgang/Zugang von Teilnehmern" + +#: gofon/conference/generic.tpl:232 +msgid "Count users" +msgstr "Zähle Benutzer" + +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#, php-format +msgid "Cannot delete entry from server '%s' because it seems to be removed!" +msgstr "" +"Kann Eintrag nicht von Server '%s' entfernen, da er scheinbar bereits " +"entfernt wurde!" + +#: gofon/conference/class_phoneConferenceGeneric.inc:379 +#, php-format +msgid "" +"The previously selected asterisk home server '%s' is no longer available!" +msgstr "" +"Der zuvor ausgewählte Asterisk Anmelde-Server '%s' ist nicht mehr verfügbar." + +#: gofon/conference/class_phoneConferenceGeneric.inc:396 +#: gofon/conference/class_phoneConferenceGeneric.inc:792 +msgid "Lifetime" +msgstr "Lebenszeit" + +#: gofon/conference/class_phoneConferenceGeneric.inc:641 +#: gofon/conference/class_phoneConferenceGeneric.inc:643 +#, php-format +msgid "'%s' is already assigned to '%s'!" +msgstr "'%s' wird bereits von '%s' verwendet!" + +#: gofon/conference/class_phoneConferenceGeneric.inc:765 +#: gofon/conference/class_divListConferences.inc:95 +#: gofon/conference/class_divListConferences.inc:208 +msgid "Conference" +msgstr "Konferenz" + +#: gofon/conference/class_phoneConferenceGeneric.inc:766 +msgid "Phone conference management" +msgstr "Telefonkonferenz-Verwaltung" + +#: gofon/conference/class_phoneConferenceGeneric.inc:771 +msgid "GOfon conference" +msgstr "GOfon-Konferenz" + +#: gofon/conference/class_phoneConferenceGeneric.inc:778 +msgid "Conference PIN" +msgstr "Konferenz-PIN" + +#: gofon/conference/class_phoneConferenceGeneric.inc:786 +msgid "Activate menu" +msgstr "Menü aktivieren" + +#: gofon/conference/class_phoneConferenceGeneric.inc:787 +msgid "Announce user activity" +msgstr "Melde Benutzer-Aktivität" + +#: gofon/conference/class_phoneConferenceGeneric.inc:788 +msgid "Count user" +msgstr "Zähle Benutzer" + +#: gofon/conference/class_phoneConferenceGeneric.inc:789 +msgid "Conference type" +msgstr "Konferenz-Typ" + +#: gofon/conference/class_phoneConferenceGeneric.inc:791 +msgid "Format" +msgstr "Format" + +#: gofon/conference/class_phoneConferenceGeneric.inc:794 +#: gofon/conference/class_divListConferences.inc:57 +msgid "Owner" +msgstr "Besitzer" + +#: gofon/conference/main.inc:48 gofon/conference/main.inc:50 +msgid "Conference management" +msgstr "Konferenz-Verwaltung" + +#: gofon/conference/class_divListConferences.inc:65 +msgid "Regular expression for matching conference names" +msgstr "Regulärer Ausdruck zum Erkennen von Konferenznamen" + +#: gofon/conference/class_divListConferences.inc:150 +msgid "Edit this entry" +msgstr "Diesen Eintrag bearbeiten" + +#: gofon/conference/class_divListConferences.inc:158 +msgid "Delete this entry" +msgstr "Diesen Eintrag entfernen" + +#: gofon/conference/class_divListConferences.inc:185 +msgid "Unknown" +msgstr "Unbekannt" + +#: gofon/conference/class_divListConferences.inc:225 +#: gofon/conference/class_divListConferences.inc:226 +#, php-format +msgid "Number of listed '%s'" +msgstr "Anzahl der angezeigten '%s'" + +#: gofon/conference/class_divListConferences.inc:225 +msgid "conferences" +msgstr "Konferenzen" + +#: gofon/fonreports/class_fonreport.inc:6 +msgid "Phone Reports" +msgstr "Telefon-Berichte" + +#: gofon/fonreports/class_fonreport.inc:210 +msgid "Insufficient permissions" +msgstr "Unzureichende Berechtigungen" + +#: gofon/fonreports/class_fonreport.inc:229 +msgid "Y-M-D" +msgstr "D.M.Y" + +#: gofon/fonreports/class_fonreport.inc:396 +#: gofon/fonreports/class_fonreport.inc:397 +#: gofon/fonreports/class_fonreport.inc:404 gofon/fonreports/main.inc:22 +msgid "Phone reports" +msgstr "Telefon-Berichte" + +#: gofon/fonreports/class_fonreport.inc:397 +msgid "All entries are readonly" +msgstr "Alle Einträge sind nur lesbar" + +#: gofon/fonreports/class_fonreport.inc:409 gofon/fonreports/contents.tpl:30 +msgid "Date" +msgstr "Datum" + +#: gofon/fonreports/class_fonreport.inc:410 gofon/fonreports/contents.tpl:31 +msgid "Source" +msgstr "Quelle" + +#: gofon/fonreports/class_fonreport.inc:411 gofon/fonreports/contents.tpl:32 +msgid "Destination" +msgstr "Ziel" + +#: gofon/fonreports/class_fonreport.inc:412 gofon/fonreports/contents.tpl:33 +msgid "Channel" +msgstr "Kanal" + +#: gofon/fonreports/class_fonreport.inc:413 +msgid "Application called" +msgstr "Name der Anwendung" + +#: gofon/fonreports/class_fonreport.inc:414 +msgid "Disposition" +msgstr "Disposition" + +#: gofon/fonreports/class_fonreport.inc:415 gofon/fonreports/contents.tpl:36 +msgid "Duration" +msgstr "Dauer" + +#: gofon/fonreports/contents.tpl:2 +msgid "Filter" +msgstr "Filter" + +#: gofon/fonreports/contents.tpl:6 +msgid "Search for" +msgstr "Suche nach" + +#: gofon/fonreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Benutzername, nach dem gesucht werden soll" + +#: gofon/fonreports/contents.tpl:8 gofon/fonreports/contents.tpl:16 +msgid "in" +msgstr "in" + +#: gofon/fonreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Wählen Sie den Teilbaum, in dem gesucht werden soll" + +#: gofon/fonreports/contents.tpl:12 +msgid "during" +msgstr "während" + +#: gofon/fonreports/contents.tpl:21 +msgid "Search" +msgstr "Suchen" + +#: gofon/fonreports/contents.tpl:34 +msgid "Application" +msgstr "Anwendung" + +#: gofon/fonreports/contents.tpl:35 +msgid "Status" +msgstr "Status" + +#: gofon/fonreports/contents.tpl:51 +msgid "Search returned no results..." +msgstr "Die Suche verlief ergebnislos..." + +#~ msgid "Addons" +#~ msgstr "Zusätzliches" + +#~ msgid "Not supported multiple brace in line %s!" +#~ msgstr "Nicht unterstützte Mehrfach-Klammerung in Zeile %s!" + +#~ msgid "GOfon reports" +#~ msgstr "GOfon-Berichte" + +#~ msgid "Copy" +#~ msgstr "Kopieren" + +#~ msgid "Cut" +#~ msgstr "Ausschneiden" + +#~ msgid "Paste" +#~ msgstr "Einfügen" + +#~ msgid "cut" +#~ msgstr "Ausschneiden" + +#~ msgid "Cut this entry" +#~ msgstr "Diesen Eintrag ausschneiden" + +#~ msgid "copy" +#~ msgstr "Kopieren" + +#~ msgid "Copy this entry" +#~ msgstr "Diesen Eintrag kopieren" diff --git a/trunk/gosa-plugins/gofon/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofon/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..5faf4f485 --- /dev/null +++ b/trunk/gosa-plugins/gofon/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,1638 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/ogroups/gofon/phonequeue.tpl:2 +msgid "" +"Only users with the same asterisk home server will be included to this queue." +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:5 +msgid "Queue Settings" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:8 gofon/phoneaccount/generic.tpl:1 +#: gofon/phoneaccount/generic.tpl:6 gofon/phoneaccount/paste_generic.tpl:2 +#: gofon/phoneaccount/paste_generic.tpl:6 +msgid "Phone numbers" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:12 +#: admin/ogroups/gofon/phonequeue.tpl:135 +msgid "Generic queue Settings" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:24 +msgid "Up" +msgstr "Arriba" + +#: admin/ogroups/gofon/phonequeue.tpl:27 +msgid "Down" +msgstr "Abajo" + +#: admin/ogroups/gofon/phonequeue.tpl:47 gofon/conference/generic.tpl:141 +msgid "Options" +msgstr "Opciones" + +#: admin/ogroups/gofon/phonequeue.tpl:50 +#: admin/ogroups/gofon/class_phonequeue.inc:305 +#: admin/ogroups/gofon/class_phonequeue.inc:929 +#: gofon/phoneaccount/generic.tpl:58 +#: gofon/phoneaccount/class_phoneAccount.inc:1273 +#: gofon/phoneaccount/class_phoneAccount.inc:1612 +#: gofon/conference/generic.tpl:68 +#: gofon/conference/class_phoneConferenceGeneric.inc:782 +msgid "Home server" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:62 +#: admin/ogroups/gofon/class_phonequeue.inc:948 +#: gofon/conference/generic.tpl:78 +#: gofon/conference/class_phoneConferenceGeneric.inc:780 +msgid "Language" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:75 +#: admin/ogroups/gofon/class_phonequeue.inc:311 +#: admin/ogroups/gofon/class_phonequeue.inc:927 +msgid "Timeout" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:85 +#: admin/ogroups/gofon/class_phonequeue.inc:314 +#: admin/ogroups/gofon/class_phonequeue.inc:952 +msgid "Retry" +msgstr "Reintento" + +#: admin/ogroups/gofon/phonequeue.tpl:95 +msgid "Strategy" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:109 +#: admin/ogroups/gofon/class_phonequeue.inc:928 +msgid "Max queue length" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:119 +#: admin/ogroups/gofon/class_phonequeue.inc:320 +#: admin/ogroups/gofon/class_phonequeue.inc:930 +msgid "Announce frequency" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:125 +msgid "(in seconds)" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:133 +msgid "Queue sound setup" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:138 +msgid "Use music on hold instead of ringing" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:149 +#: admin/ogroups/gofon/class_phonequeue.inc:937 +msgid "Music on hold" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:159 +msgid "Welcome sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:169 +msgid "Announce message" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:179 +msgid "Sound file for 'You are next ...'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:189 +msgid "'There are ...'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:199 +msgid "'... calls waiting'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:209 +msgid "'Thank you' message" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:219 +msgid "'minutes' sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:229 +msgid "'seconds' sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:239 +msgid "Hold sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:249 +msgid "Less Than sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:267 +msgid "Phone attributes " +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:277 +#: admin/ogroups/gofon/class_phonequeue.inc:950 +msgid "Announce holdtime" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:285 +#: admin/ogroups/gofon/class_phonequeue.inc:931 +msgid "Allow the called user to transfer his call" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:293 +#: admin/ogroups/gofon/class_phonequeue.inc:932 +msgid "Allows calling user to transfer call" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:305 +#: admin/ogroups/gofon/class_phonequeue.inc:933 +msgid "Allow the called to hangup by pressing *" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:313 +#: admin/ogroups/gofon/class_phonequeue.inc:935 +msgid "Allows calling to hangup by pressing *" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:321 +#: admin/ogroups/gofon/class_phonequeue.inc:934 +msgid "Ring instead of playing background music" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, fuzzy +msgid "Obsolete entry" +msgstr "Eliminar esta entrada" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, php-format +msgid "" +"The current home server is not available anymore. It will be moved to '%s' " +"if you save this entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:121 +msgid "ring all" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:122 +msgid "round robin" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:123 +msgid "least recently called" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:124 +msgid "fewest completed calls" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:125 +msgid "random" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:126 +msgid "round robin with memory" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:210 +msgid "Remove the phone queue from this Account" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:211 +#: admin/ogroups/gofon/class_phonequeue.inc:214 +msgid "phone queue" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:213 +msgid "Create phone queue" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:302 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone queue." +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:317 +msgid "Queue length" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:323 +#: gofon/conference/class_phoneConferenceGeneric.inc:392 +#: gofon/conference/class_divListConferences.inc:56 +#, fuzzy +msgid "Number" +msgstr "Nombre" + +#: admin/ogroups/gofon/class_phonequeue.inc:346 +#: admin/ogroups/gofon/class_phonequeue.inc:394 +msgid "asterisk" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:378 +#: admin/ogroups/gofon/class_phonequeue.inc:732 +#: gofon/macro/class_gofonMacro.inc:392 gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/conference/class_phoneConferenceGeneric.inc:430 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "GOfon" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:437 +msgid "Cannot find old queue entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:523 +#, php-format +msgid "" +"Found more than one entry named '%s' in queue table. Please inform your " +"system administrator!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:764 +#: admin/ogroups/gofon/class_phonequeue.inc:766 +#, fuzzy +msgid "telephone number" +msgstr "Teléfono" + +#: admin/ogroups/gofon/class_phonequeue.inc:823 +#: admin/ogroups/gofon/class_phonequeue.inc:865 +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 gofon/macro/class_gofonMacro.inc:467 +#: gofon/macro/class_gofonMacro.inc:505 +#: gofon/phoneaccount/class_phoneAccount.inc:958 +#: gofon/phoneaccount/class_phoneAccount.inc:1077 +#: gofon/phoneaccount/class_phoneAccount.inc:1350 +#: gofon/phoneaccount/class_phoneAccount.inc:1422 +#: gofon/phoneaccount/class_phoneAccount.inc:1432 +#: gofon/phoneaccount/class_phoneAccount.inc:1466 +#: gofon/conference/class_phoneConferenceGeneric.inc:260 +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "Error" +msgstr "Error" + +#: admin/ogroups/gofon/class_phonequeue.inc:838 +#: admin/ogroups/gofon/class_phonequeue.inc:893 +#: admin/systems/services/gofon/class_goFonServer.inc:146 +#: admin/systems/gofon/class_phoneGeneric.inc:282 +#: admin/systems/gofon/class_phoneGeneric.inc:428 +#: admin/systems/gofon/class_phoneGeneric.inc:442 +#: admin/systems/gofon/class_phoneGeneric.inc:459 +#: gofon/macro/class_gofonMacroParameters.inc:401 +#: gofon/macro/class_gofonMacro.inc:479 gofon/macro/class_gofonMacro.inc:490 +#: gofon/macro/class_gofonMacro.inc:526 +#: gofon/phoneaccount/class_phoneAccount.inc:1377 +#: gofon/phoneaccount/class_phoneAccount.inc:1513 +#: gofon/conference/class_phoneConferenceGeneric.inc:718 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: admin/ogroups/gofon/class_phonequeue.inc:901 +#: gofon/conference/generic.tpl:120 gofon/conference/paste_generic.tpl:15 +#, fuzzy +msgid "Phone number" +msgstr "Número de teléfono personal" + +#: admin/ogroups/gofon/class_phonequeue.inc:918 +#: gofon/phoneaccount/class_phoneAccount.inc:6 +#: gofon/phoneaccount/class_phoneAccount.inc:911 +#: gofon/phoneaccount/class_phoneAccount.inc:924 +#: gofon/phoneaccount/class_phoneAccount.inc:936 +#: gofon/phoneaccount/class_phoneAccount.inc:940 +#: gofon/phoneaccount/class_phoneAccount.inc:943 +#: gofon/phoneaccount/class_phoneAccount.inc:1597 +msgid "Phone" +msgstr "Teléfono" + +#: admin/ogroups/gofon/class_phonequeue.inc:919 +msgid "Phone group" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:938 +msgid "Welcome music" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:939 +msgid "Report hold time" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:940 +msgid "'You are next' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:941 +msgid "'There are' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:942 +msgid "'Call waiting' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:943 +msgid "'Thank you' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:944 +msgid "'Minutes' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:945 +msgid "'Seconds' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:946 +msgid "'Less than' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:947 +msgid "Queue phone number" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:949 +msgid "Method" +msgstr "Método" + +#: admin/ogroups/gofon/class_phonequeue.inc:951 +msgid "Announce" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:1 +msgid "VoIP database information" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:4 +msgid "Asterisk DB user" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:12 +#: admin/systems/services/gofon/class_goFonServer.inc:77 +#: admin/systems/services/gofon/class_goFonServer.inc:179 +msgid "Password" +msgstr "Contraseña" + +#: admin/systems/services/gofon/goFonServer.tpl:20 +msgid "Country dial prefix" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:28 +#: admin/systems/services/gofon/class_goFonServer.inc:80 +msgid "Local dial prefix" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:34 +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#: admin/systems/services/gofon/class_goFonServer.inc:165 +msgid "VoIP service" +msgstr "Servicio VoIP" + +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#, fuzzy +msgid "Asterisk management" +msgstr "VoIP - Administración de Asterisk PBX" + +#: admin/systems/services/gofon/class_goFonServer.inc:74 +msgid "User" +msgstr "Usuario" + +#: admin/systems/services/gofon/class_goFonServer.inc:83 +#, fuzzy +msgid "Country prefix" +msgstr "Código de País" + +#: admin/systems/services/gofon/class_goFonServer.inc:120 +#, php-format +msgid "" +"You can't remove the asterisk database extension, it is still in use by " +"these objects '%s'." +msgstr "" +"No puede eliminar la extensión de base de datos asterisk, esta todavía en " +"use por los objetos '%s'." + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "VoIP - asterisk management" +msgstr "VoIP - Administración de Asterisk PBX" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/gofon/class_goFonServer.inc:174 +msgid "Start" +msgstr "Inicio" + +#: admin/systems/services/gofon/class_goFonServer.inc:175 +msgid "Stop" +msgstr "Parada" + +#: admin/systems/services/gofon/class_goFonServer.inc:176 +msgid "Restart" +msgstr "Reiniciar" + +#: admin/systems/services/gofon/class_goFonServer.inc:178 +msgid "Admin" +msgstr "Administrador" + +#: admin/systems/services/gofon/class_goFonServer.inc:180 +msgid "Area code" +msgstr "Código de Área" + +#: admin/systems/services/gofon/class_goFonServer.inc:181 +msgid "Country code" +msgstr "Código de País" + +#: admin/systems/gofon/phonesettings.tpl:1 +msgid "Advanced phone settings" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:6 +msgid "Phone type" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:8 +#: admin/systems/gofon/phonesettings.tpl:30 +#: admin/systems/gofon/phonesettings.tpl:42 +#: admin/systems/gofon/phonesettings.tpl:58 +#: admin/systems/gofon/phonesettings.tpl:91 +#: admin/systems/gofon/phonesettings.tpl:128 +#: admin/systems/gofon/phonesettings.tpl:181 +msgid "Choose a phone type" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:13 +msgid "refresh" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:25 +msgid "Mode" +msgstr "Modo" + +#: admin/systems/gofon/phonesettings.tpl:38 +msgid "DTMF mode" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:54 +#: admin/systems/gofon/phonesettings.tpl:99 +msgid "Default IP" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:66 +#: admin/systems/gofon/phonesettings.tpl:109 +msgid "Response timeout" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:87 +msgid "Modus" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:124 +msgid "Authtype" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:136 +msgid "Secret" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:146 +msgid "GoFonInkeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:154 +msgid "GoFonOutKeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:167 +msgid "Account code" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:177 +msgid "Trunk lines" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:194 +msgid "Hosts that are allowed to connect" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:197 +#: admin/systems/gofon/phonesettings.tpl:220 +msgid "List of alternative mail addresses" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:217 +msgid "Hosts that are not allowed to connect" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:247 +msgid "MSN" +msgstr "" + +#: admin/systems/gofon/paste_generic.tpl:3 admin/systems/gofon/phone.tpl:6 +msgid "Phone name" +msgstr "" + +#: admin/systems/gofon/phone.tpl:17 +#: admin/systems/gofon/class_phoneGeneric.inc:517 +#: gofon/macro/class_gofonMacro.inc:573 gofon/macro/class_divListMacros.inc:79 +#: gofon/macro/generic.tpl:27 gofon/conference/generic.tpl:49 +#: gofon/conference/class_phoneConferenceGeneric.inc:776 +#: gofon/conference/class_divListConferences.inc:83 +msgid "Base" +msgstr "Base" + +#: admin/systems/gofon/phone.tpl:20 gofon/macro/generic.tpl:30 +msgid "Choose subtree to place group in" +msgstr "Elija el subárbol donde colocar el grupo" + +#: admin/systems/gofon/phone.tpl:25 gofon/macro/generic.tpl:36 +#: gofon/conference/generic.tpl:56 gofon/conference/generic.tpl:62 +msgid "Select a base" +msgstr "Seleccione una base" + +#: admin/systems/gofon/phone.tpl:34 +#: admin/systems/gofon/class_phoneGeneric.inc:518 +#: gofon/macro/class_gofonMacro.inc:574 gofon/macro/generic.tpl:49 +#: gofon/conference/generic.tpl:98 +#: gofon/conference/class_phoneConferenceGeneric.inc:777 +msgid "Description" +msgstr "Descripción" + +#: admin/systems/gofon/class_phoneGeneric.inc:124 +#, fuzzy +msgid "phone" +msgstr "Teléfono" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:121 +msgid "yes" +msgstr "si" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:122 +msgid "no" +msgstr "no" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "dynamic" +msgstr "dinámico" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "Networksettings" +msgstr "Configuración de red" + +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 +#, php-format +msgid "Cannot delete entry because it is still in use by '%s'!" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:331 +#: admin/systems/gofon/class_phoneGeneric.inc:334 +msgid "IP address" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:340 +#: admin/systems/gofon/class_phoneGeneric.inc:344 +#: admin/systems/gofon/class_phoneGeneric.inc:347 +#: admin/systems/gofon/class_phoneGeneric.inc:362 +#: admin/systems/gofon/class_phoneGeneric.inc:516 +#: gofon/macro/class_gofonMacro.inc:406 gofon/macro/class_gofonMacro.inc:412 +#: gofon/macro/class_divListMacros.inc:56 gofon/macro/parameter.tpl:6 +#: gofon/conference/class_phoneConferenceGeneric.inc:388 +#: gofon/conference/class_phoneConferenceGeneric.inc:410 +#: gofon/conference/class_phoneConferenceGeneric.inc:775 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Name" +msgstr "Nombre" + +#: admin/systems/gofon/class_phoneGeneric.inc:507 +#: gofon/macro/class_gofonMacro.inc:562 +msgid "Generic" +msgstr "Genérico" + +#: admin/systems/gofon/class_phoneGeneric.inc:508 +msgid "Phone generic" +msgstr "Teléfono genérico" + +#: admin/systems/gofon/class_phoneGeneric.inc:513 +#: gofon/phoneaccount/class_phoneAccount.inc:1611 +msgid "Phone hardware" +msgstr "Teléfono hardware" + +#: admin/systems/gofon/class_phoneGeneric.inc:519 +msgid "SIP Mode" +msgstr "Modo SIP" + +#: admin/systems/gofon/class_phoneGeneric.inc:520 +msgid "SIP DTMF mode" +msgstr "Modo SIP DTMF" + +#: admin/systems/gofon/class_phoneGeneric.inc:521 +msgid "SIP Default ip" +msgstr "Dirección IP por defecto de SIP" + +#: admin/systems/gofon/class_phoneGeneric.inc:522 +msgid "SIP Qualify" +msgstr "Capacidad SIP" + +#: admin/systems/gofon/class_phoneGeneric.inc:523 +msgid "IAX authentication type" +msgstr "Tipo de autentificación IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:524 +msgid "IAX secret" +msgstr "contraseña IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:525 +msgid "IAX account code" +msgstr "Código de cuenta IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:526 +msgid "IAX trunk lines" +msgstr "Lineas troncales IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:527 +msgid "IAX permit settings" +msgstr "Configuración permitida IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:528 +msgid "IAX deny settings" +msgstr "Configuración denegada IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:529 +msgid "CAPI MSN" +msgstr "CAPI MSN" + +#: admin/systems/gofon/class_phoneGeneric.inc:530 +msgid "Hardware type" +msgstr "Tipo de hardware" + +#: gofon/macro/headpage.tpl:6 gofon/macro/class_divListMacros.inc:31 +#: gofon/macro/class_divListMacros.inc:32 +msgid "List of macros" +msgstr "" + +#: gofon/macro/headpage.tpl:20 gofon/macro/class_gofonMacroParameters.inc:374 +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#: gofon/conference/headpage.tpl:20 +msgid "Information" +msgstr "Información" + +#: gofon/macro/headpage.tpl:24 +msgid "" +"This menu allows you to add, edit and remove selected macros. You may want " +"to use the range selector on top of the macro listbox, when working with a " +"large number of macros." +msgstr "" + +#: gofon/macro/headpage.tpl:29 gofon/conference/headpage.tpl:29 +msgid "Filters" +msgstr "Filtros" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "" + +#: gofon/macro/headpage.tpl:41 gofon/macro/class_divListMacros.inc:64 +msgid "Regular expression for matching macro names" +msgstr "" + +#: gofon/macro/remove.tpl:2 gofon/conference/remove.tpl:2 +msgid "Warning" +msgstr "Aviso" + +#: gofon/macro/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Esta puede ser usada por varios grupos. Si está seguro de lo que quiere " +"hacer pulse dos veces, ya que no hay manera de que GOsa recupere " +"posteriormente la información." + +#: gofon/macro/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Entonces, si esta seguro, presione Eliminar para continuar o " +"Cancelar para Abortar." + +#: gofon/macro/class_gofonMacroParameters.inc:200 +#: gofon/phoneaccount/generic.tpl:125 gofon/phoneaccount/generic.tpl:127 +msgid "Phone macro" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:256 +msgid "String" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:257 +msgid "Combobox" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:258 +msgid "Bool" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:264 +msgid "Delete unused" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:340 +#, php-format +msgid "Parameter %s contains invalid character. '!,#' is used as delimiter!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:345 +#, php-format +msgid "Parameter %s is invalid!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:374 +msgid "" +"Number of parameters for this macro has changed. Please update all users " +"using it!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:300 +#, php-format +msgid "Application missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:304 +#, php-format +msgid "Extension missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:416 +msgid "Name can be 20 characters at maximum!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:425 +msgid "Macro is still in use!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:432 +msgid "Macro is empty!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:371 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/phoneaccount/class_phoneAccount.inc:1471 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:169 +#, fuzzy +msgid "Configuration error" +msgstr "Se puede escribir en la configuración" + +#: gofon/macro/class_gofonMacro.inc:563 +msgid "Asterisk macro management" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:568 +msgid "GOfon macro" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:572 gofon/macro/generic.tpl:6 +#: gofon/macro/generic.tpl:9 gofon/macro/paste_generic.tpl:4 +#: gofon/macro/paste_generic.tpl:6 +msgid "Macro name" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:575 gofon/macro/generic.tpl:14 +msgid "Display name" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:576 +msgid "Macro content and parameter" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:577 +msgid "Visibility flag" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:50 +#: gofon/conference/class_divListConferences.inc:50 +msgid "Select all" +msgstr "Seleccione todos" + +#: gofon/macro/class_divListMacros.inc:56 +msgid "Department" +msgstr "Departamento" + +#: gofon/macro/class_divListMacros.inc:57 +msgid "Visible" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:58 +#: gofon/macro/class_divListMacros.inc:84 +#: gofon/conference/class_divListConferences.inc:59 +#: gofon/conference/class_divListConferences.inc:88 +msgid "Actions" +msgstr "Acciones" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit department" +msgstr "Enviar departamento" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit" +msgstr "Enviar" + +#: gofon/macro/class_divListMacros.inc:89 +#: gofon/conference/class_divListConferences.inc:93 +msgid "Create" +msgstr "Crear" + +#: gofon/macro/class_divListMacros.inc:91 +#: gofon/macro/class_divListMacros.inc:120 +msgid "Macro" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:97 +#: gofon/conference/class_divListConferences.inc:101 +msgid "Remove" +msgstr "Eliminar" + +#: gofon/macro/class_divListMacros.inc:121 +msgid "visible" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:122 +msgid "invisible" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:146 +#: gofon/conference/class_divListConferences.inc:150 +msgid "edit" +msgstr "editar" + +#: gofon/macro/class_divListMacros.inc:147 +msgid "Edit macro" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:153 +#: gofon/conference/class_divListConferences.inc:158 +msgid "delete" +msgstr "eliminar" + +#: gofon/macro/class_divListMacros.inc:154 +msgid "Delete macro" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:202 +#: gofon/macro/class_divListMacros.inc:203 +#, fuzzy, php-format +msgid "Number of listed %s" +msgstr "Eliminar departamentos seleccionados" + +#: gofon/macro/class_divListMacros.inc:202 +msgid "macros" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:203 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy +msgid "departments" +msgstr "Departamento" + +#: gofon/macro/generic.tpl:18 +msgid "Macro name to be displayed" +msgstr "" + +#: gofon/macro/generic.tpl:60 +msgid "Visible for user" +msgstr "" + +#: gofon/macro/generic.tpl:70 +msgid "Macro text" +msgstr "" + +#: gofon/macro/class_gofonMacroManagement.inc:24 +msgid "Phone macros" +msgstr "" + +#: gofon/macro/class_gofonMacroManagement.inc:25 +#: gofon/phoneaccount/class_phoneAccount.inc:7 +#: gofon/fonreports/class_fonreport.inc:7 +msgid "This does something" +msgstr "" + +#: gofon/macro/class_gofonMacroManagement.inc:273 +#: gofon/conference/class_phoneConferenceManagment.inc:187 +#, fuzzy +msgid "Permission" +msgstr "Permisos" + +#: gofon/macro/class_gofonMacroManagement.inc:320 +#: gofon/macro/class_gofonMacroManagement.inc:373 +#: gofon/macro/class_gofonMacroManagement.inc:397 +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "Permission error" +msgstr "Permisos" + +#: gofon/macro/class_gofonMacroManagement.inc:366 +msgid "macro" +msgstr "" + +#: gofon/macro/main.inc:51 gofon/macro/main.inc:55 +msgid "Phone macro management" +msgstr "" + +#: gofon/macro/parameter.tpl:4 +msgid "Argument" +msgstr "" + +#: gofon/macro/parameter.tpl:8 +msgid "type" +msgstr "" + +#: gofon/macro/parameter.tpl:10 +msgid "Default value" +msgstr "Valor por defecto" + +#: gofon/macro/parameter.tpl:19 +msgid "You are not allowed to view the macro parameter settings" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:42 gofon/phoneaccount/paste_generic.tpl:27 +msgid "Telephone hardware" +msgstr "Teléfono hardware" + +#: gofon/phoneaccount/generic.tpl:44 gofon/phoneaccount/generic.tpl:48 +#: gofon/phoneaccount/paste_generic.tpl:29 +msgid "Telephone" +msgstr "Teléfono" + +#: gofon/phoneaccount/generic.tpl:62 +msgid "Select the accounts home server" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:69 +#, fuzzy +msgid "Context" +msgstr "Continuar" + +#: gofon/phoneaccount/generic.tpl:73 gofon/phoneaccount/generic.tpl:84 +#, fuzzy +msgid "Select the accounts context" +msgstr "Eliminar esta entrada" + +#: gofon/phoneaccount/generic.tpl:80 +msgid "Voicemail context" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:93 gofon/phoneaccount/paste_generic.tpl:32 +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#: gofon/phoneaccount/class_phoneAccount.inc:1280 +msgid "Voicemail PIN" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:103 gofon/phoneaccount/paste_generic.tpl:40 +#: gofon/phoneaccount/class_phoneAccount.inc:1285 +msgid "Phone PIN" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:138 +msgid "Refresh" +msgstr "Refresco" + +#: gofon/phoneaccount/paste_generic.tpl:1 gofon/phoneaccount/main.inc:133 +msgid "Phone settings" +msgstr "" + +#: gofon/phoneaccount/main.inc:123 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Pulse en el botón - Editar - para cambiar la información en esta ventana" + +#: gofon/phoneaccount/class_phoneAccount.inc:172 +msgid "automatic" +msgstr "automático" + +#: gofon/phoneaccount/class_phoneAccount.inc:208 +msgid "no macro" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:236 +msgid "undefined" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:489 +#: gofon/phoneaccount/class_phoneAccount.inc:496 +#: gofon/phoneaccount/class_phoneAccount.inc:514 +#: gofon/phoneaccount/class_phoneAccount.inc:521 +msgid "Abort saving entries to keep the database consistent." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:935 +msgid "Remove phone account" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:939 +#: gofon/phoneaccount/class_phoneAccount.inc:942 +msgid "Create phone account" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:940 +msgid "User uid" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:958 +msgid "Selected macro is not available anymore!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:982 +msgid "Parameter" +msgstr "Parámetro" + +#: gofon/phoneaccount/class_phoneAccount.inc:1126 +msgid "Choose your private phone" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1269 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone account." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +msgid "Between 1-4 charactes" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1303 +#, php-format +msgid "macro parameter %s" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#, php-format +msgid "User '%s' has been removed from phone queue '%s'." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1541 +#: gofon/phoneaccount/class_phoneAccount.inc:1543 +#, php-format +msgid "The specified telephonenumber '%s' is already assigned to '%s'." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1589 +#, php-format +msgid "" +"The previously selected asterisk home server (%s) is no longer available. " +"Remove aborted." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1598 +msgid "Phone account settings" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1602 +msgid "My account" +msgstr "Mi cuenta" + +#: gofon/phoneaccount/class_phoneAccount.inc:1609 +#: gofon/conference/class_phoneConferenceGeneric.inc:793 +msgid "Telephone number" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1610 +msgid "Macro settings" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1613 +#, fuzzy +msgid "Phone context" +msgstr "Teléfono genérico" + +#: gofon/phoneaccount/class_phoneAccount.inc:1614 +msgid "Voice mail context" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1615 +msgid "Telephone pin" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1616 +msgid "Voicemail pin" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1698 +msgid "There is currently no asterisk server defined!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1702 +msgid "Asterisk server is invalid!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1708 +msgid "Voicemail PIN must be 4 characters long!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1711 +#, fuzzy +msgid "Voicemail PIN contains invalid characters!" +msgstr "El atributo contraseña está vacío o tiene caracteres no validos" + +#: gofon/phoneaccount/class_phoneAccount.inc:1716 +#, fuzzy +msgid "Phone pin contains invalid characters!" +msgstr "El atributo contraseña está vacío o tiene caracteres no validos" + +#: gofon/phoneaccount/class_phoneAccount.inc:1723 +#, php-format +msgid "The parameter %s contains invalid char. '!,#' is used as delimiter" +msgstr "" + +#: gofon/conference/headpage.tpl:6 +#: gofon/conference/class_divListConferences.inc:31 +#: gofon/conference/class_divListConferences.inc:32 +msgid "List of conference rooms" +msgstr "" + +#: gofon/conference/headpage.tpl:24 +msgid "" +"This menu allows you to create, delete and edit selected phone conferences. " +"Having a large number of phone conferences, you might prefer the range " +"selectors on top of the conferences list." +msgstr "" + +#: gofon/conference/headpage.tpl:35 +msgid "Display users matching" +msgstr "Mostrar usuarios que coincidan con" + +#: gofon/conference/headpage.tpl:36 +msgid "Regular expression for matching user names" +msgstr "" + +#: gofon/conference/remove.tpl:6 +msgid "" +"This includes 'all' accounts, systems, etc. in this subtree. Please double " +"check if your really want to do this since there is no way for GOsa to get " +"your data back." +msgstr "" +"Esto incluye 'todas' las cuentas, sistemas, etc. en este subárbol. Por favor " +"pulse dos veces si quiere realmente hacer esto, ya que no hay forma de que " +"GOsa recupere la información posteriormente." + +#: gofon/conference/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"La mejor opción antes de ejecutar esta acción es haber grabado el contenido " +"actual de su árbol LDAP en un fichero. Entonces - Y solo entonces - presione " +"'Eliminar' para continuar o 'Cancelar' para abortar." + +#: gofon/conference/class_phoneConferenceManagment.inc:24 +msgid "Phone conferences" +msgstr "" + +#: gofon/conference/class_phoneConferenceManagment.inc:25 +msgid "Management" +msgstr "" + +#: gofon/conference/class_phoneConferenceManagment.inc:206 +#: gofon/conference/class_phoneConferenceManagment.inc:267 +msgid "conference" +msgstr "" + +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "You have not permission to delete this entry!" +msgstr "No tiene permisos para eliminar este departamento." + +#: gofon/conference/generic.tpl:5 +msgid "Properties" +msgstr "Propiedades" + +#: gofon/conference/generic.tpl:15 gofon/conference/paste_generic.tpl:5 +msgid "Conference name" +msgstr "" + +#: gofon/conference/generic.tpl:21 gofon/conference/paste_generic.tpl:10 +msgid "Name of conference to create" +msgstr "" + +#: gofon/conference/generic.tpl:28 +msgid "Type" +msgstr "Tipo" + +#: gofon/conference/generic.tpl:35 +msgid "Choose subtree to place conference in" +msgstr "" + +#: gofon/conference/generic.tpl:82 +#, fuzzy +msgid "Select language" +msgstr "Idioma del Servidor" + +#: gofon/conference/generic.tpl:104 +msgid "Descriptive text for department" +msgstr "Descripción del departamento" + +#: gofon/conference/generic.tpl:110 +msgid "Lifetime (in days)" +msgstr "" + +#: gofon/conference/generic.tpl:157 +#: gofon/conference/class_phoneConferenceGeneric.inc:783 +msgid "Preset PIN" +msgstr "" + +#: gofon/conference/generic.tpl:165 +#: gofon/conference/class_phoneConferenceGeneric.inc:384 +#: gofon/conference/class_divListConferences.inc:58 +msgid "PIN" +msgstr "" + +#: gofon/conference/generic.tpl:177 +#: gofon/conference/class_phoneConferenceGeneric.inc:784 +msgid "Record conference" +msgstr "" + +#: gofon/conference/generic.tpl:185 +msgid "Sound file format" +msgstr "" + +#: gofon/conference/generic.tpl:188 +msgid "Choose subtree to place department in" +msgstr "Elija subárbol para colocar el departamento" + +#: gofon/conference/generic.tpl:208 +#: gofon/conference/class_phoneConferenceGeneric.inc:785 +msgid "Play music on hold" +msgstr "" + +#: gofon/conference/generic.tpl:216 +msgid "Activate session menu" +msgstr "" + +#: gofon/conference/generic.tpl:224 +msgid "Announce users joining or leaving the conference" +msgstr "" + +#: gofon/conference/generic.tpl:232 +msgid "Count users" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#, php-format +msgid "Cannot delete entry from server '%s' because it seems to be removed!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:379 +#, php-format +msgid "" +"The previously selected asterisk home server '%s' is no longer available!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:396 +#: gofon/conference/class_phoneConferenceGeneric.inc:792 +msgid "Lifetime" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:641 +#: gofon/conference/class_phoneConferenceGeneric.inc:643 +#, php-format +msgid "'%s' is already assigned to '%s'!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:765 +#: gofon/conference/class_divListConferences.inc:95 +#: gofon/conference/class_divListConferences.inc:208 +msgid "Conference" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:766 +msgid "Phone conference management" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:771 +msgid "GOfon conference" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:778 +msgid "Conference PIN" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:786 +msgid "Activate menu" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:787 +msgid "Announce user activity" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:788 +msgid "Count user" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:789 +msgid "Conference type" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:791 +msgid "Format" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:794 +#: gofon/conference/class_divListConferences.inc:57 +msgid "Owner" +msgstr "" + +#: gofon/conference/main.inc:48 gofon/conference/main.inc:50 +msgid "Conference management" +msgstr "" + +#: gofon/conference/class_divListConferences.inc:65 +msgid "Regular expression for matching conference names" +msgstr "" + +#: gofon/conference/class_divListConferences.inc:150 +msgid "Edit this entry" +msgstr "Editar esta entrada" + +#: gofon/conference/class_divListConferences.inc:158 +msgid "Delete this entry" +msgstr "Eliminar esta entrada" + +#: gofon/conference/class_divListConferences.inc:185 +msgid "Unknown" +msgstr "Desconocido" + +#: gofon/conference/class_divListConferences.inc:225 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Eliminar departamentos seleccionados" + +#: gofon/conference/class_divListConferences.inc:225 +msgid "conferences" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:6 +msgid "Phone Reports" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:210 +msgid "Insufficient permissions" +msgstr "Permisos insuficientes" + +#: gofon/fonreports/class_fonreport.inc:229 +msgid "Y-M-D" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:396 +#: gofon/fonreports/class_fonreport.inc:397 +#: gofon/fonreports/class_fonreport.inc:404 gofon/fonreports/main.inc:22 +msgid "Phone reports" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:397 +msgid "All entries are readonly" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:409 gofon/fonreports/contents.tpl:30 +msgid "Date" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:410 gofon/fonreports/contents.tpl:31 +msgid "Source" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:411 gofon/fonreports/contents.tpl:32 +msgid "Destination" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:412 gofon/fonreports/contents.tpl:33 +msgid "Channel" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:413 +msgid "Application called" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:414 +msgid "Disposition" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:415 gofon/fonreports/contents.tpl:36 +msgid "Duration" +msgstr "" + +#: gofon/fonreports/contents.tpl:2 +msgid "Filter" +msgstr "" + +#: gofon/fonreports/contents.tpl:6 +msgid "Search for" +msgstr "" + +#: gofon/fonreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "" + +#: gofon/fonreports/contents.tpl:8 gofon/fonreports/contents.tpl:16 +msgid "in" +msgstr "" + +#: gofon/fonreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "" + +#: gofon/fonreports/contents.tpl:12 +msgid "during" +msgstr "" + +#: gofon/fonreports/contents.tpl:21 +msgid "Search" +msgstr "Buscar" + +#: gofon/fonreports/contents.tpl:34 +msgid "Application" +msgstr "Aplicación" + +#: gofon/fonreports/contents.tpl:35 +msgid "Status" +msgstr "Estado" + +#: gofon/fonreports/contents.tpl:51 +msgid "Search returned no results..." +msgstr "" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "copiar" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "mover" + +#~ msgid "cut" +#~ msgstr "mover" + +#~ msgid "Cut this entry" +#~ msgstr "Mover esta entrada" + +#~ msgid "copy" +#~ msgstr "copiar" + +#~ msgid "Copy this entry" +#~ msgstr "Copiar esta entrada" + +#~ msgid "Select to search within subtrees" +#~ msgstr "Seleccione para buscar dentro de los subárboles" + +#~ msgid "Search in subtrees" +#~ msgstr "Buscar en subárboles" + +#~ msgid "You're about to delete the whole LDAP subtree placed under '%s'." +#~ msgstr "Ha decidido eliminar todo el subárbol LDAP colocado debajo de '%s'." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Delete" +#~ msgstr "Eliminar" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Edit" +#~ msgstr "Editar" + +#, fuzzy +#~ msgid "You're about to delete the following macro(s) %s" +#~ msgstr "Ha decidido eliminar todo el subárbol LDAP colocado debajo de '%s'." + +#~ msgid "This 'dn' has no phone features." +#~ msgstr "Esta 'dn' no tiene características telefónicas." + +#, fuzzy +#~ msgid "'0' is a reserved name and cannot be used!" +#~ msgstr "" +#~ "El 'Nombre de Teléfono' '0' es un nombre reservado y no puede ser " +#~ "utilizado." + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "VoIP service - Asterisk management" +#~ msgstr "Servicio VoIP - Administración de Asterisk" + +#~ msgid "The attribute DB user is empty or contains invalid characters." +#~ msgstr "El atributo Usuario de BD está vacío o tiene caracteres no validos" + +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "El atributo contraseña está vacío o tiene caracteres no validos" + +#~ msgid "" +#~ "The attribute local dial prefix is empty or contains invalid characters." +#~ msgstr "" +#~ "El atributo prefijo de marcado local está vacío o tiene caracteres no " +#~ "validos" + +#~ msgid "" +#~ "The attribute country dial prefix is empty or contains invalid characters." +#~ msgstr "" +#~ "El atributo prefijo de marcado del país está vacío o tiene caracteres no " +#~ "validos" + +#, fuzzy +#~ msgid "Updating gofon home server failed for '%s'." +#~ msgstr "Ha fallado la actualización del servidor DNS con dn '%s'." + +#, fuzzy +#~ msgid "Removing of system phone/generic with dn '%s' failed!" +#~ msgstr "Ha fallado la eliminación del teléfono genérico con dn '%s'." + +#, fuzzy +#~ msgid "Saving of phone/generic with dn '%s' failed!" +#~ msgstr "Ha fallado la grabación de teléfono genérico con dn '%s'." + +#, fuzzy +#~ msgid "Saving of goFonConference/generic with dn '%s' failed!" +#~ msgstr "Ha fallado la grabación de teléfono genérico con dn '%s'." + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed!" +#~ msgstr "Ha fallado la eliminación del teléfono genérico con dn '%s'." + +#, fuzzy +#~ msgid "" +#~ "Can't delete because there are users which are depending on this phone. " +#~ "One of them is user '%s'." +#~ msgstr "" +#~ "No se puede eliminar porque hay usuarios que dependen de este teléfono. " +#~ "Uno de ellos es el usuario '%s'." + +#~ msgid "The required field IP address is empty." +#~ msgstr "No ha introducido el campo obligatorio'Dirección IP'." + +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "El campo 'Dirección IP' tiene una dirección no valida." + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "Por favor introduzca un nombre de adjunto valido." + +#~ msgid "The required field 'Phone name' is not set." +#~ msgstr "No ha introducido el campo obligatorio'Nombre del teléfono'." + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "Ya hay una entrada '%s' en la base seleccionada" diff --git a/trunk/gosa-plugins/gofon/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofon/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..a2bce7ee7 --- /dev/null +++ b/trunk/gosa-plugins/gofon/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,1528 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2008-08-12 12:57+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/ogroups/gofon/phonequeue.tpl:2 +msgid "" +"Only users with the same asterisk home server will be included to this queue." +msgstr "" +"Seulement les utilisateurs avec le même serveur asterisk seront inclus dans " +"cette queue." + +#: admin/ogroups/gofon/phonequeue.tpl:5 +msgid "Queue Settings" +msgstr "Préférences des queues" + +#: admin/ogroups/gofon/phonequeue.tpl:8 gofon/phoneaccount/generic.tpl:1 +#: gofon/phoneaccount/generic.tpl:6 gofon/phoneaccount/paste_generic.tpl:2 +#: gofon/phoneaccount/paste_generic.tpl:6 +msgid "Phone numbers" +msgstr "Numéros de téléphones" + +#: admin/ogroups/gofon/phonequeue.tpl:12 +#: admin/ogroups/gofon/phonequeue.tpl:135 +msgid "Generic queue Settings" +msgstr "Paramètres par défaut des queues" + +#: admin/ogroups/gofon/phonequeue.tpl:24 +msgid "Up" +msgstr "Au dessus" + +#: admin/ogroups/gofon/phonequeue.tpl:27 +msgid "Down" +msgstr "En bas" + +#: admin/ogroups/gofon/phonequeue.tpl:47 gofon/conference/generic.tpl:141 +msgid "Options" +msgstr "Options" + +#: admin/ogroups/gofon/phonequeue.tpl:50 +#: admin/ogroups/gofon/class_phonequeue.inc:305 +#: admin/ogroups/gofon/class_phonequeue.inc:929 +#: gofon/phoneaccount/generic.tpl:58 +#: gofon/phoneaccount/class_phoneAccount.inc:1273 +#: gofon/phoneaccount/class_phoneAccount.inc:1612 +#: gofon/conference/generic.tpl:68 +#: gofon/conference/class_phoneConferenceGeneric.inc:782 +msgid "Home server" +msgstr "Serveur Primaire" + +#: admin/ogroups/gofon/phonequeue.tpl:62 +#: admin/ogroups/gofon/class_phonequeue.inc:948 +#: gofon/conference/generic.tpl:78 +#: gofon/conference/class_phoneConferenceGeneric.inc:780 +msgid "Language" +msgstr "Langue" + +#: admin/ogroups/gofon/phonequeue.tpl:75 +#: admin/ogroups/gofon/class_phonequeue.inc:311 +#: admin/ogroups/gofon/class_phonequeue.inc:927 +msgid "Timeout" +msgstr "Temps d'attente maximum" + +#: admin/ogroups/gofon/phonequeue.tpl:85 +#: admin/ogroups/gofon/class_phonequeue.inc:314 +#: admin/ogroups/gofon/class_phonequeue.inc:952 +msgid "Retry" +msgstr "Réessayer" + +#: admin/ogroups/gofon/phonequeue.tpl:95 +msgid "Strategy" +msgstr "Stratégie" + +#: admin/ogroups/gofon/phonequeue.tpl:109 +#: admin/ogroups/gofon/class_phonequeue.inc:928 +msgid "Max queue length" +msgstr "Taille maximale de la queue" + +#: admin/ogroups/gofon/phonequeue.tpl:119 +#: admin/ogroups/gofon/class_phonequeue.inc:320 +#: admin/ogroups/gofon/class_phonequeue.inc:930 +msgid "Announce frequency" +msgstr "Fréquence du message d'annonce" + +#: admin/ogroups/gofon/phonequeue.tpl:125 +msgid "(in seconds)" +msgstr "(en secondes)" + +#: admin/ogroups/gofon/phonequeue.tpl:133 +msgid "Queue sound setup" +msgstr "Configuration de la queue d'attente du son" + +#: admin/ogroups/gofon/phonequeue.tpl:138 +msgid "Use music on hold instead of ringing" +msgstr "Mettre de la musique lorsqu'on est en attente plutôt que la sonnerie" + +#: admin/ogroups/gofon/phonequeue.tpl:149 +#: admin/ogroups/gofon/class_phonequeue.inc:937 +msgid "Music on hold" +msgstr "Musique d'attente" + +#: admin/ogroups/gofon/phonequeue.tpl:159 +msgid "Welcome sound file" +msgstr "Fichier son de bienvenue" + +#: admin/ogroups/gofon/phonequeue.tpl:169 +msgid "Announce message" +msgstr "Message de présentation" + +#: admin/ogroups/gofon/phonequeue.tpl:179 +msgid "Sound file for 'You are next ...'" +msgstr "Fichier son pour 'Vous êtes le suivant ...'" + +#: admin/ogroups/gofon/phonequeue.tpl:189 +msgid "'There are ...'" +msgstr "'Il y a ...'" + +#: admin/ogroups/gofon/phonequeue.tpl:199 +msgid "'... calls waiting'" +msgstr "'... appels en attente'" + +#: admin/ogroups/gofon/phonequeue.tpl:209 +msgid "'Thank you' message" +msgstr "Message 'Merci'" + +#: admin/ogroups/gofon/phonequeue.tpl:219 +msgid "'minutes' sound file" +msgstr "'minutes' du fichier son" + +#: admin/ogroups/gofon/phonequeue.tpl:229 +msgid "'seconds' sound file" +msgstr "'secondes' du fichier son" + +#: admin/ogroups/gofon/phonequeue.tpl:239 +msgid "Hold sound file" +msgstr "Fichier son du message d'attente" + +#: admin/ogroups/gofon/phonequeue.tpl:249 +msgid "Less Than sound file" +msgstr "Fichier son, moins de" + +#: admin/ogroups/gofon/phonequeue.tpl:267 +msgid "Phone attributes " +msgstr "Propriétés du téléphone" + +#: admin/ogroups/gofon/phonequeue.tpl:277 +#: admin/ogroups/gofon/class_phonequeue.inc:950 +msgid "Announce holdtime" +msgstr "Annonce de la durée de mise en attente" + +#: admin/ogroups/gofon/phonequeue.tpl:285 +#: admin/ogroups/gofon/class_phonequeue.inc:931 +msgid "Allow the called user to transfer his call" +msgstr "Permettre à l'utilisateur appelé de transférer son appel" + +#: admin/ogroups/gofon/phonequeue.tpl:293 +#: admin/ogroups/gofon/class_phonequeue.inc:932 +msgid "Allows calling user to transfer call" +msgstr "Permettre à l'utilisateur qui appelle de transférer son appel" + +#: admin/ogroups/gofon/phonequeue.tpl:305 +#: admin/ogroups/gofon/class_phonequeue.inc:933 +msgid "Allow the called to hangup by pressing *" +msgstr "Permettre à la personne qui appelle de raccrocher en appuyant sur *" + +#: admin/ogroups/gofon/phonequeue.tpl:313 +#: admin/ogroups/gofon/class_phonequeue.inc:935 +msgid "Allows calling to hangup by pressing *" +msgstr "Permettre à la personne qui appelle de raccrocher en appuyant sur *" + +#: admin/ogroups/gofon/phonequeue.tpl:321 +#: admin/ogroups/gofon/class_phonequeue.inc:934 +msgid "Ring instead of playing background music" +msgstr "Sonner au lieu de mettre une musique d'ambiance" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +msgid "Obsolete entry" +msgstr "Entrée obsolète" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, php-format +msgid "" +"The current home server is not available anymore. It will be moved to '%s' " +"if you save this entry!" +msgstr "" +"Le serveur home n'est plus disponible. Il sera bougé vers '%s' si vous " +"sauvez cette entrée !" + +#: admin/ogroups/gofon/class_phonequeue.inc:121 +msgid "ring all" +msgstr "Tout faire sonner" + +#: admin/ogroups/gofon/class_phonequeue.inc:122 +msgid "round robin" +msgstr "les un après les autres" + +#: admin/ogroups/gofon/class_phonequeue.inc:123 +msgid "least recently called" +msgstr "le moins appelé " + +#: admin/ogroups/gofon/class_phonequeue.inc:124 +msgid "fewest completed calls" +msgstr "le plus petit nombre d'appel réussi" + +#: admin/ogroups/gofon/class_phonequeue.inc:125 +msgid "random" +msgstr "au hasard" + +#: admin/ogroups/gofon/class_phonequeue.inc:126 +msgid "round robin with memory" +msgstr "les un après les autres avec mémorisation du dernier utilisé" + +#: admin/ogroups/gofon/class_phonequeue.inc:210 +msgid "Remove the phone queue from this Account" +msgstr "Supprimer la queue téléphonique de ce compte" + +#: admin/ogroups/gofon/class_phonequeue.inc:211 +#: admin/ogroups/gofon/class_phonequeue.inc:214 +msgid "phone queue" +msgstr "queue téléphonique" + +#: admin/ogroups/gofon/class_phonequeue.inc:213 +msgid "Create phone queue" +msgstr "Créer une queue téléphonique" + +#: admin/ogroups/gofon/class_phonequeue.inc:302 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone queue." +msgstr "" +"Il doit y avoir au moins un serveur avec une base de données asterisk pour " +"créer un queue téléphonique." + +#: admin/ogroups/gofon/class_phonequeue.inc:317 +msgid "Queue length" +msgstr "taille de la queue" + +#: admin/ogroups/gofon/class_phonequeue.inc:323 +#: gofon/conference/class_phoneConferenceGeneric.inc:392 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Number" +msgstr "Numéro" + +#: admin/ogroups/gofon/class_phonequeue.inc:346 +#: admin/ogroups/gofon/class_phonequeue.inc:394 +msgid "asterisk" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:378 +#: admin/ogroups/gofon/class_phonequeue.inc:732 +#: gofon/macro/class_gofonMacro.inc:392 gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/conference/class_phoneConferenceGeneric.inc:430 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "GOfon" +msgstr "Gofon" + +#: admin/ogroups/gofon/class_phonequeue.inc:437 +msgid "Cannot find old queue entry!" +msgstr "Impossible de trouver l'entrée dans l'ancienne queue !" + +#: admin/ogroups/gofon/class_phonequeue.inc:523 +#, php-format +msgid "" +"Found more than one entry named '%s' in queue table. Please inform your " +"system administrator!" +msgstr "" +"J'ai trouvé plus d'une entrée nommée '%s' dans la queue. Veuillez informer " +"votre administrateur système !" + +#: admin/ogroups/gofon/class_phonequeue.inc:764 +#: admin/ogroups/gofon/class_phonequeue.inc:766 +msgid "telephone number" +msgstr "numéro de téléphone" + +#: admin/ogroups/gofon/class_phonequeue.inc:823 +#: admin/ogroups/gofon/class_phonequeue.inc:865 +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 gofon/macro/class_gofonMacro.inc:467 +#: gofon/macro/class_gofonMacro.inc:505 +#: gofon/phoneaccount/class_phoneAccount.inc:958 +#: gofon/phoneaccount/class_phoneAccount.inc:1077 +#: gofon/phoneaccount/class_phoneAccount.inc:1350 +#: gofon/phoneaccount/class_phoneAccount.inc:1422 +#: gofon/phoneaccount/class_phoneAccount.inc:1432 +#: gofon/phoneaccount/class_phoneAccount.inc:1466 +#: gofon/conference/class_phoneConferenceGeneric.inc:260 +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "Error" +msgstr "Erreur" + +#: admin/ogroups/gofon/class_phonequeue.inc:838 +#: admin/ogroups/gofon/class_phonequeue.inc:893 +#: admin/systems/services/gofon/class_goFonServer.inc:146 +#: admin/systems/gofon/class_phoneGeneric.inc:282 +#: admin/systems/gofon/class_phoneGeneric.inc:428 +#: admin/systems/gofon/class_phoneGeneric.inc:442 +#: admin/systems/gofon/class_phoneGeneric.inc:459 +#: gofon/macro/class_gofonMacroParameters.inc:401 +#: gofon/macro/class_gofonMacro.inc:479 gofon/macro/class_gofonMacro.inc:490 +#: gofon/macro/class_gofonMacro.inc:526 +#: gofon/phoneaccount/class_phoneAccount.inc:1377 +#: gofon/phoneaccount/class_phoneAccount.inc:1513 +#: gofon/conference/class_phoneConferenceGeneric.inc:718 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/ogroups/gofon/class_phonequeue.inc:901 +#: gofon/conference/generic.tpl:120 gofon/conference/paste_generic.tpl:15 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#: admin/ogroups/gofon/class_phonequeue.inc:918 +#: gofon/phoneaccount/class_phoneAccount.inc:6 +#: gofon/phoneaccount/class_phoneAccount.inc:911 +#: gofon/phoneaccount/class_phoneAccount.inc:924 +#: gofon/phoneaccount/class_phoneAccount.inc:936 +#: gofon/phoneaccount/class_phoneAccount.inc:940 +#: gofon/phoneaccount/class_phoneAccount.inc:943 +#: gofon/phoneaccount/class_phoneAccount.inc:1597 +msgid "Phone" +msgstr "Téléphone" + +#: admin/ogroups/gofon/class_phonequeue.inc:919 +msgid "Phone group" +msgstr "Groupe téléphonique" + +#: admin/ogroups/gofon/class_phonequeue.inc:938 +msgid "Welcome music" +msgstr "Musique de bienvenue" + +#: admin/ogroups/gofon/class_phonequeue.inc:939 +msgid "Report hold time" +msgstr "Annonce de la durée de mise en attente" + +#: admin/ogroups/gofon/class_phonequeue.inc:940 +msgid "'You are next' sound" +msgstr "son 'Vous êtes le suivant'" + +#: admin/ogroups/gofon/class_phonequeue.inc:941 +msgid "'There are' sound" +msgstr "son 'Il y a ...'" + +#: admin/ogroups/gofon/class_phonequeue.inc:942 +msgid "'Call waiting' sound" +msgstr "son '... appels en attente'" + +#: admin/ogroups/gofon/class_phonequeue.inc:943 +msgid "'Thank you' sound" +msgstr "son 'Merci'" + +#: admin/ogroups/gofon/class_phonequeue.inc:944 +msgid "'Minutes' sound" +msgstr "'minutes' du fichier son" + +#: admin/ogroups/gofon/class_phonequeue.inc:945 +msgid "'Seconds' sound" +msgstr "'secondes' du fichier son" + +#: admin/ogroups/gofon/class_phonequeue.inc:946 +msgid "'Less than' sound" +msgstr "Fichier son, 'moins de'" + +#: admin/ogroups/gofon/class_phonequeue.inc:947 +msgid "Queue phone number" +msgstr "Numéro de la queue téléphonique" + +#: admin/ogroups/gofon/class_phonequeue.inc:949 +msgid "Method" +msgstr "Méthode" + +#: admin/ogroups/gofon/class_phonequeue.inc:951 +msgid "Announce" +msgstr "Annonce" + +#: admin/systems/services/gofon/goFonServer.tpl:1 +msgid "VoIP database information" +msgstr "Information sur la base de données VOIP" + +#: admin/systems/services/gofon/goFonServer.tpl:4 +msgid "Asterisk DB user" +msgstr "Utilisateur de la base de données Asterisk" + +#: admin/systems/services/gofon/goFonServer.tpl:12 +#: admin/systems/services/gofon/class_goFonServer.inc:77 +#: admin/systems/services/gofon/class_goFonServer.inc:179 +msgid "Password" +msgstr "Mot de passe" + +#: admin/systems/services/gofon/goFonServer.tpl:20 +msgid "Country dial prefix" +msgstr "Préfixe du pays" + +#: admin/systems/services/gofon/goFonServer.tpl:28 +#: admin/systems/services/gofon/class_goFonServer.inc:80 +msgid "Local dial prefix" +msgstr "Préfixe local" + +#: admin/systems/services/gofon/class_goFonServer.inc:34 +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#: admin/systems/services/gofon/class_goFonServer.inc:165 +msgid "VoIP service" +msgstr "Service VOIP" + +#: admin/systems/services/gofon/class_goFonServer.inc:65 +msgid "Asterisk management" +msgstr "Gestion Asterisk" + +#: admin/systems/services/gofon/class_goFonServer.inc:74 +msgid "User" +msgstr "Utilisateur" + +#: admin/systems/services/gofon/class_goFonServer.inc:83 +msgid "Country prefix" +msgstr "Préfixe du pays" + +#: admin/systems/services/gofon/class_goFonServer.inc:120 +#, php-format +msgid "" +"You can't remove the asterisk database extension, it is still in use by " +"these objects '%s'." +msgstr "" +"Impossible d'enlever l'extension de la base de données asterisk ,elle est " +"utilisé par ce(s) objets '%s'." + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "VoIP - asterisk management" +msgstr "VOIP - Gestion d'asterisk" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/gofon/class_goFonServer.inc:174 +msgid "Start" +msgstr "Démarrage" + +#: admin/systems/services/gofon/class_goFonServer.inc:175 +msgid "Stop" +msgstr "Arrêter" + +#: admin/systems/services/gofon/class_goFonServer.inc:176 +msgid "Restart" +msgstr "Réessayer" + +#: admin/systems/services/gofon/class_goFonServer.inc:178 +msgid "Admin" +msgstr "Administrateur" + +#: admin/systems/services/gofon/class_goFonServer.inc:180 +msgid "Area code" +msgstr "Préfixe local" + +#: admin/systems/services/gofon/class_goFonServer.inc:181 +msgid "Country code" +msgstr "Préfixe national" + +#: admin/systems/gofon/phonesettings.tpl:1 +msgid "Advanced phone settings" +msgstr "Configuration avancée du téléphone" + +#: admin/systems/gofon/phonesettings.tpl:6 +msgid "Phone type" +msgstr "Type de téléphone" + +#: admin/systems/gofon/phonesettings.tpl:8 +#: admin/systems/gofon/phonesettings.tpl:30 +#: admin/systems/gofon/phonesettings.tpl:42 +#: admin/systems/gofon/phonesettings.tpl:58 +#: admin/systems/gofon/phonesettings.tpl:91 +#: admin/systems/gofon/phonesettings.tpl:128 +#: admin/systems/gofon/phonesettings.tpl:181 +msgid "Choose a phone type" +msgstr "Sélectionnez un type de téléphone" + +#: admin/systems/gofon/phonesettings.tpl:13 +msgid "refresh" +msgstr "Rafraîchir" + +#: admin/systems/gofon/phonesettings.tpl:25 +msgid "Mode" +msgstr "Mode" + +#: admin/systems/gofon/phonesettings.tpl:38 +msgid "DTMF mode" +msgstr "Mode DTMF" + +#: admin/systems/gofon/phonesettings.tpl:54 +#: admin/systems/gofon/phonesettings.tpl:99 +msgid "Default IP" +msgstr "Adresse ip par défaut" + +#: admin/systems/gofon/phonesettings.tpl:66 +#: admin/systems/gofon/phonesettings.tpl:109 +msgid "Response timeout" +msgstr "Temps de réponse maximum" + +#: admin/systems/gofon/phonesettings.tpl:87 +msgid "Modus" +msgstr "Mode" + +#: admin/systems/gofon/phonesettings.tpl:124 +msgid "Authtype" +msgstr "Type d'authentification" + +#: admin/systems/gofon/phonesettings.tpl:136 +msgid "Secret" +msgstr "Secret" + +#: admin/systems/gofon/phonesettings.tpl:146 +msgid "GoFonInkeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:154 +msgid "GoFonOutKeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:167 +msgid "Account code" +msgstr "Code du compte téléphonique" + +#: admin/systems/gofon/phonesettings.tpl:177 +msgid "Trunk lines" +msgstr "Regrouper des lignes" + +#: admin/systems/gofon/phonesettings.tpl:194 +msgid "Hosts that are allowed to connect" +msgstr "Machines qui peuvent se connecter" + +#: admin/systems/gofon/phonesettings.tpl:197 +#: admin/systems/gofon/phonesettings.tpl:220 +msgid "List of alternative mail addresses" +msgstr "Liste des adresses de messagerie alternatives" + +#: admin/systems/gofon/phonesettings.tpl:217 +msgid "Hosts that are not allowed to connect" +msgstr "Machines qui ne peuvent pas se connecter" + +#: admin/systems/gofon/phonesettings.tpl:247 +msgid "MSN" +msgstr "MSN" + +#: admin/systems/gofon/paste_generic.tpl:3 admin/systems/gofon/phone.tpl:6 +msgid "Phone name" +msgstr "Nom du téléphone" + +#: admin/systems/gofon/phone.tpl:17 +#: admin/systems/gofon/class_phoneGeneric.inc:517 +#: gofon/macro/class_gofonMacro.inc:573 gofon/macro/class_divListMacros.inc:79 +#: gofon/macro/generic.tpl:27 gofon/conference/generic.tpl:49 +#: gofon/conference/class_phoneConferenceGeneric.inc:776 +#: gofon/conference/class_divListConferences.inc:83 +msgid "Base" +msgstr "Base" + +#: admin/systems/gofon/phone.tpl:20 gofon/macro/generic.tpl:30 +msgid "Choose subtree to place group in" +msgstr "Sélectionnez la branche où sera placée le groupe" + +#: admin/systems/gofon/phone.tpl:25 gofon/macro/generic.tpl:36 +#: gofon/conference/generic.tpl:56 gofon/conference/generic.tpl:62 +msgid "Select a base" +msgstr "Sélectionnez une base" + +#: admin/systems/gofon/phone.tpl:34 +#: admin/systems/gofon/class_phoneGeneric.inc:518 +#: gofon/macro/class_gofonMacro.inc:574 gofon/macro/generic.tpl:49 +#: gofon/conference/generic.tpl:98 +#: gofon/conference/class_phoneConferenceGeneric.inc:777 +msgid "Description" +msgstr "Description" + +#: admin/systems/gofon/class_phoneGeneric.inc:124 +msgid "phone" +msgstr "téléphone" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:121 +msgid "yes" +msgstr "oui" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:122 +msgid "no" +msgstr "non" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "dynamic" +msgstr "dynamique" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "Networksettings" +msgstr "Configuration réseau" + +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 +#, php-format +msgid "Cannot delete entry because it is still in use by '%s'!" +msgstr "" +"Impossible d'éffacer l'entrée parcequ'elle est encore utilisée par '%s' !" + +#: admin/systems/gofon/class_phoneGeneric.inc:331 +#: admin/systems/gofon/class_phoneGeneric.inc:334 +msgid "IP address" +msgstr "Adresse ip" + +#: admin/systems/gofon/class_phoneGeneric.inc:340 +#: admin/systems/gofon/class_phoneGeneric.inc:344 +#: admin/systems/gofon/class_phoneGeneric.inc:347 +#: admin/systems/gofon/class_phoneGeneric.inc:362 +#: admin/systems/gofon/class_phoneGeneric.inc:516 +#: gofon/macro/class_gofonMacro.inc:406 gofon/macro/class_gofonMacro.inc:412 +#: gofon/macro/class_divListMacros.inc:56 gofon/macro/parameter.tpl:6 +#: gofon/conference/class_phoneConferenceGeneric.inc:388 +#: gofon/conference/class_phoneConferenceGeneric.inc:410 +#: gofon/conference/class_phoneConferenceGeneric.inc:775 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Name" +msgstr "Nom" + +#: admin/systems/gofon/class_phoneGeneric.inc:507 +#: gofon/macro/class_gofonMacro.inc:562 +msgid "Generic" +msgstr "Informations" + +#: admin/systems/gofon/class_phoneGeneric.inc:508 +msgid "Phone generic" +msgstr "Téléphone générique" + +#: admin/systems/gofon/class_phoneGeneric.inc:513 +#: gofon/phoneaccount/class_phoneAccount.inc:1611 +msgid "Phone hardware" +msgstr "Matériel téléphonique" + +#: admin/systems/gofon/class_phoneGeneric.inc:519 +msgid "SIP Mode" +msgstr "Mode SIP" + +#: admin/systems/gofon/class_phoneGeneric.inc:520 +msgid "SIP DTMF mode" +msgstr "Mode DTMF" + +#: admin/systems/gofon/class_phoneGeneric.inc:521 +msgid "SIP Default ip" +msgstr "SIP Adresse ip par défaut" + +#: admin/systems/gofon/class_phoneGeneric.inc:522 +msgid "SIP Qualify" +msgstr "Qualification SIP" + +#: admin/systems/gofon/class_phoneGeneric.inc:523 +msgid "IAX authentication type" +msgstr "Type d'authentification IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:524 +msgid "IAX secret" +msgstr "Secret IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:525 +msgid "IAX account code" +msgstr "Code du compte IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:526 +msgid "IAX trunk lines" +msgstr "Trunk IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:527 +msgid "IAX permit settings" +msgstr "Paramètres de permissions IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:528 +msgid "IAX deny settings" +msgstr "Paramètres d'interdiction IAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:529 +msgid "CAPI MSN" +msgstr "MSN CAPI" + +#: admin/systems/gofon/class_phoneGeneric.inc:530 +msgid "Hardware type" +msgstr "Type de matériel" + +#: gofon/macro/headpage.tpl:6 gofon/macro/class_divListMacros.inc:31 +#: gofon/macro/class_divListMacros.inc:32 +msgid "List of macros" +msgstr "Liste des macros" + +#: gofon/macro/headpage.tpl:20 gofon/macro/class_gofonMacroParameters.inc:374 +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#: gofon/conference/headpage.tpl:20 +msgid "Information" +msgstr "Information" + +#: gofon/macro/headpage.tpl:24 +msgid "" +"This menu allows you to add, edit and remove selected macros. You may want " +"to use the range selector on top of the macro listbox, when working with a " +"large number of macros." +msgstr "" +"Ce menu permet d'ajouter, de modifier ou de supprimer les macros " +"sélectionnés. Vous pouvez utiliser les différents filtres lorsque vous " +"travaillez avec un nombre élevé de macros." + +#: gofon/macro/headpage.tpl:29 gofon/conference/headpage.tpl:29 +msgid "Filters" +msgstr "Filtres" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "Afficher les macros correspondantes" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "Afficher les macros correspondantes" + +#: gofon/macro/headpage.tpl:41 gofon/macro/class_divListMacros.inc:64 +msgid "Regular expression for matching macro names" +msgstr "Expression régulière correspondant à des noms de macro" + +#: gofon/macro/remove.tpl:2 gofon/conference/remove.tpl:2 +msgid "Warning" +msgstr "Avertissement" + +#: gofon/macro/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Cela peut être utilisé par plusieurs groupes. Veuillez vérifier que vous " +"voulez effectuer cette opération étant donné qu'il est impossible pour GOsa " +"de récupérer vos données." + +#: gofon/macro/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"D'accord - si vous êtes sur - cliquez sur 'Supprimer' pour continuer ou sur " +"'Annuler' pour abandonner." + +#: gofon/macro/class_gofonMacroParameters.inc:200 +#: gofon/phoneaccount/generic.tpl:125 gofon/phoneaccount/generic.tpl:127 +msgid "Phone macro" +msgstr "Macro téléphoniques" + +#: gofon/macro/class_gofonMacroParameters.inc:256 +msgid "String" +msgstr "Chaîne de caractère" + +#: gofon/macro/class_gofonMacroParameters.inc:257 +msgid "Combobox" +msgstr "Boite à choix multiple" + +#: gofon/macro/class_gofonMacroParameters.inc:258 +msgid "Bool" +msgstr "Booléen" + +#: gofon/macro/class_gofonMacroParameters.inc:264 +msgid "Delete unused" +msgstr "Supprimer les paramètres inutilisés" + +#: gofon/macro/class_gofonMacroParameters.inc:340 +#, php-format +msgid "Parameter %s contains invalid character. '!,#' is used as delimiter!" +msgstr "" +"Le paramètre %s contient des caractères invalides. '!,#' est utilisé comme " +"séparateur !" + +#: gofon/macro/class_gofonMacroParameters.inc:345 +#, php-format +msgid "Parameter %s is invalid!" +msgstr "Le paramètre %s est non valide !" + +#: gofon/macro/class_gofonMacroParameters.inc:374 +msgid "" +"Number of parameters for this macro has changed. Please update all users " +"using it!" +msgstr "" +"Le nombre de paramètres de cette macro à changé. Veuillez mettre à jour tout " +"les utilisateurs qui l'utilisent !" + +#: gofon/macro/class_gofonMacro.inc:300 +#, php-format +msgid "Application missing in line %s!" +msgstr "Il y a pas d'application indiquée à la ligne '%s' !" + +#: gofon/macro/class_gofonMacro.inc:304 +#, php-format +msgid "Extension missing in line %s!" +msgstr "Extension manquante à la ligne %s !" + +#: gofon/macro/class_gofonMacro.inc:416 +msgid "Name can be 20 characters at maximum!" +msgstr "Les noms ne peuvent pas dépasser 20 caractères !" + +#: gofon/macro/class_gofonMacro.inc:425 +msgid "Macro is still in use!" +msgstr "Macro encore en utilisation !" + +#: gofon/macro/class_gofonMacro.inc:432 +msgid "Macro is empty!" +msgstr "La macro est vide !" + +#: gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:371 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/phoneaccount/class_phoneAccount.inc:1471 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:169 +msgid "Configuration error" +msgstr "Erreur de configuration" + +#: gofon/macro/class_gofonMacro.inc:563 +msgid "Asterisk macro management" +msgstr "Gestion des macros d'Asterisk" + +#: gofon/macro/class_gofonMacro.inc:568 +msgid "GOfon macro" +msgstr "Macro GOfon" + +#: gofon/macro/class_gofonMacro.inc:572 gofon/macro/generic.tpl:6 +#: gofon/macro/generic.tpl:9 gofon/macro/paste_generic.tpl:4 +#: gofon/macro/paste_generic.tpl:6 +msgid "Macro name" +msgstr "Nom de la macro" + +#: gofon/macro/class_gofonMacro.inc:575 gofon/macro/generic.tpl:14 +msgid "Display name" +msgstr "Nom à afficher" + +#: gofon/macro/class_gofonMacro.inc:576 +msgid "Macro content and parameter" +msgstr "Contenu et paramètre des macros" + +#: gofon/macro/class_gofonMacro.inc:577 +msgid "Visibility flag" +msgstr "Etat de visibilité" + +#: gofon/macro/class_divListMacros.inc:50 +#: gofon/conference/class_divListConferences.inc:50 +msgid "Select all" +msgstr "Sélectionner tout" + +#: gofon/macro/class_divListMacros.inc:56 +msgid "Department" +msgstr "Département" + +#: gofon/macro/class_divListMacros.inc:57 +msgid "Visible" +msgstr "Visible" + +#: gofon/macro/class_divListMacros.inc:58 +#: gofon/macro/class_divListMacros.inc:84 +#: gofon/conference/class_divListConferences.inc:59 +#: gofon/conference/class_divListConferences.inc:88 +msgid "Actions" +msgstr "Actions" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit department" +msgstr "Soumettre le département" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit" +msgstr "Soumettre" + +#: gofon/macro/class_divListMacros.inc:89 +#: gofon/conference/class_divListConferences.inc:93 +msgid "Create" +msgstr "Créer" + +#: gofon/macro/class_divListMacros.inc:91 +#: gofon/macro/class_divListMacros.inc:120 +msgid "Macro" +msgstr "Macro" + +#: gofon/macro/class_divListMacros.inc:97 +#: gofon/conference/class_divListConferences.inc:101 +msgid "Remove" +msgstr "Supprimer" + +#: gofon/macro/class_divListMacros.inc:121 +msgid "visible" +msgstr "visible" + +#: gofon/macro/class_divListMacros.inc:122 +msgid "invisible" +msgstr "invisible" + +#: gofon/macro/class_divListMacros.inc:146 +#: gofon/conference/class_divListConferences.inc:150 +msgid "edit" +msgstr "éditer" + +#: gofon/macro/class_divListMacros.inc:147 +msgid "Edit macro" +msgstr "Editer une macro" + +#: gofon/macro/class_divListMacros.inc:153 +#: gofon/conference/class_divListConferences.inc:158 +msgid "delete" +msgstr "supprimer" + +#: gofon/macro/class_divListMacros.inc:154 +msgid "Delete macro" +msgstr "Supprimer une macro" + +#: gofon/macro/class_divListMacros.inc:202 +#: gofon/macro/class_divListMacros.inc:203 +#, php-format +msgid "Number of listed %s" +msgstr "Nombre de '%s' listés" + +#: gofon/macro/class_divListMacros.inc:202 +msgid "macros" +msgstr "macros" + +#: gofon/macro/class_divListMacros.inc:203 +#: gofon/conference/class_divListConferences.inc:226 +msgid "departments" +msgstr "Départements" + +#: gofon/macro/generic.tpl:18 +msgid "Macro name to be displayed" +msgstr "Nom d'affichage de la macro" + +#: gofon/macro/generic.tpl:60 +msgid "Visible for user" +msgstr "Visible pour l'utilisateur" + +#: gofon/macro/generic.tpl:70 +msgid "Macro text" +msgstr "Texte de la macro" + +#: gofon/macro/class_gofonMacroManagement.inc:24 +msgid "Phone macros" +msgstr "Macros téléphoniques" + +#: gofon/macro/class_gofonMacroManagement.inc:25 +#: gofon/phoneaccount/class_phoneAccount.inc:7 +#: gofon/fonreports/class_fonreport.inc:7 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: gofon/macro/class_gofonMacroManagement.inc:273 +#: gofon/conference/class_phoneConferenceManagment.inc:187 +msgid "Permission" +msgstr "Permissions" + +#: gofon/macro/class_gofonMacroManagement.inc:320 +#: gofon/macro/class_gofonMacroManagement.inc:373 +#: gofon/macro/class_gofonMacroManagement.inc:397 +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +msgid "Permission error" +msgstr "Erreur de permissions" + +#: gofon/macro/class_gofonMacroManagement.inc:366 +msgid "macro" +msgstr "macro" + +#: gofon/macro/main.inc:51 gofon/macro/main.inc:55 +msgid "Phone macro management" +msgstr "Administration des macros téléphoniques" + +#: gofon/macro/parameter.tpl:4 +msgid "Argument" +msgstr "Argument" + +#: gofon/macro/parameter.tpl:8 +msgid "type" +msgstr "type" + +#: gofon/macro/parameter.tpl:10 +msgid "Default value" +msgstr "Valeur par défaut" + +#: gofon/macro/parameter.tpl:19 +msgid "You are not allowed to view the macro parameter settings" +msgstr "Vous n'êtes pas autorisé à voir les paramètres de cette macro." + +#: gofon/phoneaccount/generic.tpl:42 gofon/phoneaccount/paste_generic.tpl:27 +msgid "Telephone hardware" +msgstr "Matériel téléphonique" + +#: gofon/phoneaccount/generic.tpl:44 gofon/phoneaccount/generic.tpl:48 +#: gofon/phoneaccount/paste_generic.tpl:29 +msgid "Telephone" +msgstr "Téléphone" + +#: gofon/phoneaccount/generic.tpl:62 +msgid "Select the accounts home server" +msgstr "Sélectionnez le serveur primaire" + +#: gofon/phoneaccount/generic.tpl:69 +msgid "Context" +msgstr "Contexte" + +#: gofon/phoneaccount/generic.tpl:73 gofon/phoneaccount/generic.tpl:84 +msgid "Select the accounts context" +msgstr "Sélectionnez le contexte du compte" + +#: gofon/phoneaccount/generic.tpl:80 +msgid "Voicemail context" +msgstr "Contexte de la boite vocale" + +#: gofon/phoneaccount/generic.tpl:93 gofon/phoneaccount/paste_generic.tpl:32 +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#: gofon/phoneaccount/class_phoneAccount.inc:1280 +msgid "Voicemail PIN" +msgstr "Code PIN de la boite vocale" + +#: gofon/phoneaccount/generic.tpl:103 gofon/phoneaccount/paste_generic.tpl:40 +#: gofon/phoneaccount/class_phoneAccount.inc:1285 +msgid "Phone PIN" +msgstr "Code PIN du téléphone" + +#: gofon/phoneaccount/generic.tpl:138 +msgid "Refresh" +msgstr "Rafraîchir" + +#: gofon/phoneaccount/paste_generic.tpl:1 gofon/phoneaccount/main.inc:133 +msgid "Phone settings" +msgstr "Configuration du téléphone" + +#: gofon/phoneaccount/main.inc:123 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Cliquez sur le bouton 'Editer' ci-dessous pour changer les informations dans " +"cette boite de dialogue" + +#: gofon/phoneaccount/class_phoneAccount.inc:172 +msgid "automatic" +msgstr "automatique" + +#: gofon/phoneaccount/class_phoneAccount.inc:208 +msgid "no macro" +msgstr "pas de macros" + +#: gofon/phoneaccount/class_phoneAccount.inc:236 +msgid "undefined" +msgstr "non défini" + +#: gofon/phoneaccount/class_phoneAccount.inc:489 +#: gofon/phoneaccount/class_phoneAccount.inc:496 +#: gofon/phoneaccount/class_phoneAccount.inc:514 +#: gofon/phoneaccount/class_phoneAccount.inc:521 +msgid "Abort saving entries to keep the database consistent." +msgstr "" +"Abandon de la sauvegarde des données pour garder la base de données " +"consistante." + +#: gofon/phoneaccount/class_phoneAccount.inc:935 +msgid "Remove phone account" +msgstr "Supprimer l'extension téléphonique" + +#: gofon/phoneaccount/class_phoneAccount.inc:939 +#: gofon/phoneaccount/class_phoneAccount.inc:942 +msgid "Create phone account" +msgstr "Créer un compte téléphone" + +#: gofon/phoneaccount/class_phoneAccount.inc:940 +msgid "User uid" +msgstr "id utilisateur" + +#: gofon/phoneaccount/class_phoneAccount.inc:958 +msgid "Selected macro is not available anymore!" +msgstr "la macro sélectionnée n'est plus disponible !" + +#: gofon/phoneaccount/class_phoneAccount.inc:982 +msgid "Parameter" +msgstr "Paramètres" + +#: gofon/phoneaccount/class_phoneAccount.inc:1126 +msgid "Choose your private phone" +msgstr "Choisissez votre téléphone privé" + +#: gofon/phoneaccount/class_phoneAccount.inc:1269 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone account." +msgstr "" +"Il doit y avoir au moins un serveur avec une base de données asterisk pour " +"créer un compte téléphonique." + +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +msgid "Between 1-4 charactes" +msgstr "Entre 1-4 caractères." + +#: gofon/phoneaccount/class_phoneAccount.inc:1303 +#, php-format +msgid "macro parameter %s" +msgstr "paramètre de la macro %s" + +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#, php-format +msgid "User '%s' has been removed from phone queue '%s'." +msgstr "L'utilisateur '%s' à été enlevé de la queue '%s'." + +#: gofon/phoneaccount/class_phoneAccount.inc:1541 +#: gofon/phoneaccount/class_phoneAccount.inc:1543 +#, php-format +msgid "The specified telephonenumber '%s' is already assigned to '%s'." +msgstr "Le numéro de téléphone %s est déjà utilisé par '%s'." + +#: gofon/phoneaccount/class_phoneAccount.inc:1589 +#, php-format +msgid "" +"The previously selected asterisk home server (%s) is no longer available. " +"Remove aborted." +msgstr "" +"Le serveur asterisk primaire précédemment sélectionné n'existe plus (%s). " +"Effacement interrompu." + +#: gofon/phoneaccount/class_phoneAccount.inc:1598 +msgid "Phone account settings" +msgstr "Paramètres compte téléphonique" + +#: gofon/phoneaccount/class_phoneAccount.inc:1602 +msgid "My account" +msgstr "Mon Compte" + +#: gofon/phoneaccount/class_phoneAccount.inc:1609 +#: gofon/conference/class_phoneConferenceGeneric.inc:793 +msgid "Telephone number" +msgstr "Numéro de téléphone" + +#: gofon/phoneaccount/class_phoneAccount.inc:1610 +msgid "Macro settings" +msgstr "Paramètres des macros" + +#: gofon/phoneaccount/class_phoneAccount.inc:1613 +msgid "Phone context" +msgstr "Contexte téléphonique" + +#: gofon/phoneaccount/class_phoneAccount.inc:1614 +msgid "Voice mail context" +msgstr "Contexte de la boite vocale" + +#: gofon/phoneaccount/class_phoneAccount.inc:1615 +msgid "Telephone pin" +msgstr "Code PIN du téléphone" + +#: gofon/phoneaccount/class_phoneAccount.inc:1616 +msgid "Voicemail pin" +msgstr "Code PIN de la boite vocale" + +#: gofon/phoneaccount/class_phoneAccount.inc:1698 +msgid "There is currently no asterisk server defined!" +msgstr "Il n'y a pas de serveur asterisk défini !" + +#: gofon/phoneaccount/class_phoneAccount.inc:1702 +msgid "Asterisk server is invalid!" +msgstr "Le serveur Asterisk est non valide !" + +#: gofon/phoneaccount/class_phoneAccount.inc:1708 +msgid "Voicemail PIN must be 4 characters long!" +msgstr "Le code pin de la boîte vocale doit être long de 4 caractères." + +#: gofon/phoneaccount/class_phoneAccount.inc:1711 +msgid "Voicemail PIN contains invalid characters!" +msgstr "Le code pin de la boîte vocale contient des caractères non valides !" + +#: gofon/phoneaccount/class_phoneAccount.inc:1716 +msgid "Phone pin contains invalid characters!" +msgstr "Le mot de passe contient des caractères invalides." + +#: gofon/phoneaccount/class_phoneAccount.inc:1723 +#, php-format +msgid "The parameter %s contains invalid char. '!,#' is used as delimiter" +msgstr "" +"Le paramètre %s contient des caractères invalides. '!#' est utilisé comme " +"séparateur" + +#: gofon/conference/headpage.tpl:6 +#: gofon/conference/class_divListConferences.inc:31 +#: gofon/conference/class_divListConferences.inc:32 +msgid "List of conference rooms" +msgstr "Liste des salles de conférence" + +#: gofon/conference/headpage.tpl:24 +msgid "" +"This menu allows you to create, delete and edit selected phone conferences. " +"Having a large number of phone conferences, you might prefer the range " +"selectors on top of the conferences list." +msgstr "" +"Ce menu vous permet de d'ajouter, supprimer et éditer les conférences " +"sélectionnés. Si vous avez un grand nombre de conférences il est conseillé " +"d'utiliser les filtres." + +#: gofon/conference/headpage.tpl:35 +msgid "Display users matching" +msgstr "Afficher les utilisateurs correspondants" + +#: gofon/conference/headpage.tpl:36 +msgid "Regular expression for matching user names" +msgstr "Expression régulière concordant avec les noms des utilisateurs" + +#: gofon/conference/remove.tpl:6 +msgid "" +"This includes 'all' accounts, systems, etc. in this subtree. Please double " +"check if your really want to do this since there is no way for GOsa to get " +"your data back." +msgstr "" +"Ceci inclus tous les comptes systèmes, etc... dans cette branche. Veuillez " +"vérifier si vous voulez réaliser cette opération étant donné qu'il est " +"impossible pour GOsa de récupérer vos données." + +#: gofon/conference/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Il est conseillé de sauvegarder l'arbre de votre annuaire LDAP dans un " +"fichier avant de réaliser cette action. Appuyez sur 'Supprimer' pour " +"continuer ou 'Annuler' pour abandonner." + +#: gofon/conference/class_phoneConferenceManagment.inc:24 +msgid "Phone conferences" +msgstr "Conférences téléphoniques" + +#: gofon/conference/class_phoneConferenceManagment.inc:25 +msgid "Management" +msgstr "Gestion" + +#: gofon/conference/class_phoneConferenceManagment.inc:206 +#: gofon/conference/class_phoneConferenceManagment.inc:267 +msgid "conference" +msgstr "Conférence" + +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +msgid "You have not permission to delete this entry!" +msgstr "Vous n'avez pas les droits nécessaires pour supprimer cette entrée !" + +#: gofon/conference/generic.tpl:5 +msgid "Properties" +msgstr "Propriétés" + +#: gofon/conference/generic.tpl:15 gofon/conference/paste_generic.tpl:5 +msgid "Conference name" +msgstr "Nom de la conférence" + +#: gofon/conference/generic.tpl:21 gofon/conference/paste_generic.tpl:10 +msgid "Name of conference to create" +msgstr "Nom de la conférence à créer" + +#: gofon/conference/generic.tpl:28 +msgid "Type" +msgstr "Type" + +#: gofon/conference/generic.tpl:35 +msgid "Choose subtree to place conference in" +msgstr "Sélectionnez la branche où sera enregistrée la conférence" + +#: gofon/conference/generic.tpl:82 +msgid "Select language" +msgstr "Sélectionnez la langue" + +#: gofon/conference/generic.tpl:104 +msgid "Descriptive text for department" +msgstr "Description du département" + +#: gofon/conference/generic.tpl:110 +msgid "Lifetime (in days)" +msgstr "Durée (en jours)" + +#: gofon/conference/generic.tpl:157 +#: gofon/conference/class_phoneConferenceGeneric.inc:783 +msgid "Preset PIN" +msgstr "Code PIN préselectionné" + +#: gofon/conference/generic.tpl:165 +#: gofon/conference/class_phoneConferenceGeneric.inc:384 +#: gofon/conference/class_divListConferences.inc:58 +msgid "PIN" +msgstr "Code PIN" + +#: gofon/conference/generic.tpl:177 +#: gofon/conference/class_phoneConferenceGeneric.inc:784 +msgid "Record conference" +msgstr "Enregistrer la conférence" + +#: gofon/conference/generic.tpl:185 +msgid "Sound file format" +msgstr "Format du fichier son " + +#: gofon/conference/generic.tpl:188 +msgid "Choose subtree to place department in" +msgstr "" +"Sélectionnez la branche de l'annuaire dans laquelle sera placée le " +"département" + +#: gofon/conference/generic.tpl:208 +#: gofon/conference/class_phoneConferenceGeneric.inc:785 +msgid "Play music on hold" +msgstr "Musique d'attente" + +#: gofon/conference/generic.tpl:216 +msgid "Activate session menu" +msgstr "Activer le menu de session" + +#: gofon/conference/generic.tpl:224 +msgid "Announce users joining or leaving the conference" +msgstr "Annoncer les nouveaux utilisateurs et ceux qui quittent" + +#: gofon/conference/generic.tpl:232 +msgid "Count users" +msgstr "Compter les utilisateurs" + +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#, php-format +msgid "Cannot delete entry from server '%s' because it seems to be removed!" +msgstr "" +"Impossible d'effacer l'entrée du serveur '%s' parceque l'entrée semble avoir " +"déjà été effacée !" + +#: gofon/conference/class_phoneConferenceGeneric.inc:379 +#, php-format +msgid "" +"The previously selected asterisk home server '%s' is no longer available!" +msgstr "" +"Le serveur asterisk primaire (%s) précédemment sélectionné n'est plus " +"disponible !" + +#: gofon/conference/class_phoneConferenceGeneric.inc:396 +#: gofon/conference/class_phoneConferenceGeneric.inc:792 +msgid "Lifetime" +msgstr "Durée" + +#: gofon/conference/class_phoneConferenceGeneric.inc:641 +#: gofon/conference/class_phoneConferenceGeneric.inc:643 +#, php-format +msgid "'%s' is already assigned to '%s'!" +msgstr "'%s' est déjà utilisé par '%s' !" + +#: gofon/conference/class_phoneConferenceGeneric.inc:765 +#: gofon/conference/class_divListConferences.inc:95 +#: gofon/conference/class_divListConferences.inc:208 +msgid "Conference" +msgstr "Conférence" + +#: gofon/conference/class_phoneConferenceGeneric.inc:766 +msgid "Phone conference management" +msgstr "Gestion des conférences téléphoniques" + +#: gofon/conference/class_phoneConferenceGeneric.inc:771 +msgid "GOfon conference" +msgstr "Conférences téléphoniques" + +#: gofon/conference/class_phoneConferenceGeneric.inc:778 +msgid "Conference PIN" +msgstr "Code Pin de la conférence" + +#: gofon/conference/class_phoneConferenceGeneric.inc:786 +msgid "Activate menu" +msgstr "Activer le menu" + +#: gofon/conference/class_phoneConferenceGeneric.inc:787 +msgid "Announce user activity" +msgstr "Annoncer l'activité utilisateur" + +#: gofon/conference/class_phoneConferenceGeneric.inc:788 +msgid "Count user" +msgstr "Compter les utilisateurs" + +#: gofon/conference/class_phoneConferenceGeneric.inc:789 +msgid "Conference type" +msgstr "Type de conférence" + +#: gofon/conference/class_phoneConferenceGeneric.inc:791 +msgid "Format" +msgstr "Format" + +#: gofon/conference/class_phoneConferenceGeneric.inc:794 +#: gofon/conference/class_divListConferences.inc:57 +msgid "Owner" +msgstr "Propriétaire" + +#: gofon/conference/main.inc:48 gofon/conference/main.inc:50 +msgid "Conference management" +msgstr "Gestion des conférences" + +#: gofon/conference/class_divListConferences.inc:65 +msgid "Regular expression for matching conference names" +msgstr "Expression régulière concordant avec les noms des conférences" + +#: gofon/conference/class_divListConferences.inc:150 +msgid "Edit this entry" +msgstr "Editer cette entrée" + +#: gofon/conference/class_divListConferences.inc:158 +msgid "Delete this entry" +msgstr "Supprimer cette entrée" + +#: gofon/conference/class_divListConferences.inc:185 +msgid "Unknown" +msgstr "Inconnu" + +#: gofon/conference/class_divListConferences.inc:225 +#: gofon/conference/class_divListConferences.inc:226 +#, php-format +msgid "Number of listed '%s'" +msgstr "Nombre de '%s' listés" + +#: gofon/conference/class_divListConferences.inc:225 +msgid "conferences" +msgstr "Conférences" + +#: gofon/fonreports/class_fonreport.inc:6 +msgid "Phone Reports" +msgstr "Rapports téléphoniques" + +#: gofon/fonreports/class_fonreport.inc:210 +msgid "Insufficient permissions" +msgstr "Permission insuffisantes" + +#: gofon/fonreports/class_fonreport.inc:229 +msgid "Y-M-D" +msgstr "A-M-J" + +#: gofon/fonreports/class_fonreport.inc:396 +#: gofon/fonreports/class_fonreport.inc:397 +#: gofon/fonreports/class_fonreport.inc:404 gofon/fonreports/main.inc:22 +msgid "Phone reports" +msgstr "Rapports téléphoniques" + +#: gofon/fonreports/class_fonreport.inc:397 +msgid "All entries are readonly" +msgstr "Tous les champs sont en lecture seule" + +#: gofon/fonreports/class_fonreport.inc:409 gofon/fonreports/contents.tpl:30 +msgid "Date" +msgstr "Date" + +#: gofon/fonreports/class_fonreport.inc:410 gofon/fonreports/contents.tpl:31 +msgid "Source" +msgstr "Emetteur" + +#: gofon/fonreports/class_fonreport.inc:411 gofon/fonreports/contents.tpl:32 +msgid "Destination" +msgstr "Destinataire" + +#: gofon/fonreports/class_fonreport.inc:412 gofon/fonreports/contents.tpl:33 +msgid "Channel" +msgstr "Canal" + +#: gofon/fonreports/class_fonreport.inc:413 +msgid "Application called" +msgstr "Application appelée" + +#: gofon/fonreports/class_fonreport.inc:414 +msgid "Disposition" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:415 gofon/fonreports/contents.tpl:36 +msgid "Duration" +msgstr "Durée" + +#: gofon/fonreports/contents.tpl:2 +msgid "Filter" +msgstr "Filtre" + +#: gofon/fonreports/contents.tpl:6 +msgid "Search for" +msgstr "Recherche de" + +#: gofon/fonreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Entrez le nom recherché" + +#: gofon/fonreports/contents.tpl:8 gofon/fonreports/contents.tpl:16 +msgid "in" +msgstr "dans" + +#: gofon/fonreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Sélectionnez la branche de l'annuaire où sera effectuée la recherche" + +#: gofon/fonreports/contents.tpl:12 +msgid "during" +msgstr "pendant" + +#: gofon/fonreports/contents.tpl:21 +msgid "Search" +msgstr "Recherche" + +#: gofon/fonreports/contents.tpl:34 +msgid "Application" +msgstr "Applications" + +#: gofon/fonreports/contents.tpl:35 +msgid "Status" +msgstr "Statut" + +#: gofon/fonreports/contents.tpl:51 +msgid "Search returned no results..." +msgstr "La recherche n'a renvoyé aucun résultat..." + +#~ msgid "Addons" +#~ msgstr "Extensions" + +#~ msgid "Not supported multiple brace in line %s!" +#~ msgstr "Les crochets multiple ne sont pas supportés à la ligne %s !" diff --git a/trunk/gosa-plugins/gofon/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofon/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..690d7ce59 --- /dev/null +++ b/trunk/gosa-plugins/gofon/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,1878 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/ogroups/gofon/phonequeue.tpl:2 +msgid "" +"Only users with the same asterisk home server will be included to this queue." +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:5 +#, fuzzy +msgid "Queue Settings" +msgstr "Impostazioni FAX" + +#: admin/ogroups/gofon/phonequeue.tpl:8 gofon/phoneaccount/generic.tpl:1 +#: gofon/phoneaccount/generic.tpl:6 gofon/phoneaccount/paste_generic.tpl:2 +#: gofon/phoneaccount/paste_generic.tpl:6 +msgid "Phone numbers" +msgstr "Numeri di telefono" + +#: admin/ogroups/gofon/phonequeue.tpl:12 +#: admin/ogroups/gofon/phonequeue.tpl:135 +#, fuzzy +msgid "Generic queue Settings" +msgstr "Impostazioni generali delle code" + +#: admin/ogroups/gofon/phonequeue.tpl:24 +msgid "Up" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:27 +#, fuzzy +msgid "Down" +msgstr "Dominio" + +#: admin/ogroups/gofon/phonequeue.tpl:47 gofon/conference/generic.tpl:141 +msgid "Options" +msgstr "Opzioni" + +#: admin/ogroups/gofon/phonequeue.tpl:50 +#: admin/ogroups/gofon/class_phonequeue.inc:305 +#: admin/ogroups/gofon/class_phonequeue.inc:929 +#: gofon/phoneaccount/generic.tpl:58 +#: gofon/phoneaccount/class_phoneAccount.inc:1273 +#: gofon/phoneaccount/class_phoneAccount.inc:1612 +#: gofon/conference/generic.tpl:68 +#: gofon/conference/class_phoneConferenceGeneric.inc:782 +#, fuzzy +msgid "Home server" +msgstr "Server" + +#: admin/ogroups/gofon/phonequeue.tpl:62 +#: admin/ogroups/gofon/class_phonequeue.inc:948 +#: gofon/conference/generic.tpl:78 +#: gofon/conference/class_phoneConferenceGeneric.inc:780 +msgid "Language" +msgstr "Lingua" + +#: admin/ogroups/gofon/phonequeue.tpl:75 +#: admin/ogroups/gofon/class_phonequeue.inc:311 +#: admin/ogroups/gofon/class_phonequeue.inc:927 +#, fuzzy +msgid "Timeout" +msgstr "Timeout" + +#: admin/ogroups/gofon/phonequeue.tpl:85 +#: admin/ogroups/gofon/class_phonequeue.inc:314 +#: admin/ogroups/gofon/class_phonequeue.inc:952 +msgid "Retry" +msgstr "Riprova" + +#: admin/ogroups/gofon/phonequeue.tpl:95 +#, fuzzy +msgid "Strategy" +msgstr "Stato" + +#: admin/ogroups/gofon/phonequeue.tpl:109 +#: admin/ogroups/gofon/class_phonequeue.inc:928 +msgid "Max queue length" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:119 +#: admin/ogroups/gofon/class_phonequeue.inc:320 +#: admin/ogroups/gofon/class_phonequeue.inc:930 +msgid "Announce frequency" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:125 +msgid "(in seconds)" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:133 +msgid "Queue sound setup" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:138 +msgid "Use music on hold instead of ringing" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:149 +#: admin/ogroups/gofon/class_phonequeue.inc:937 +msgid "Music on hold" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:159 +#, fuzzy +msgid "Welcome sound file" +msgstr "Benvenuto %s!" + +#: admin/ogroups/gofon/phonequeue.tpl:169 +#, fuzzy +msgid "Announce message" +msgstr "Messaggio di di risposta automatica" + +#: admin/ogroups/gofon/phonequeue.tpl:179 +msgid "Sound file for 'You are next ...'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:189 +msgid "'There are ...'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:199 +msgid "'... calls waiting'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:209 +msgid "'Thank you' message" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:219 +msgid "'minutes' sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:229 +msgid "'seconds' sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:239 +msgid "Hold sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:249 +#, fuzzy +msgid "Less Than sound file" +msgstr "Benvenuto %s!" + +#: admin/ogroups/gofon/phonequeue.tpl:267 +#, fuzzy +msgid "Phone attributes " +msgstr "Attributo DN delle persone" + +#: admin/ogroups/gofon/phonequeue.tpl:277 +#: admin/ogroups/gofon/class_phonequeue.inc:950 +msgid "Announce holdtime" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:285 +#: admin/ogroups/gofon/class_phonequeue.inc:931 +msgid "Allow the called user to transfer his call" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:293 +#: admin/ogroups/gofon/class_phonequeue.inc:932 +msgid "Allows calling user to transfer call" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:305 +#: admin/ogroups/gofon/class_phonequeue.inc:933 +msgid "Allow the called to hangup by pressing *" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:313 +#: admin/ogroups/gofon/class_phonequeue.inc:935 +msgid "Allows calling to hangup by pressing *" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:321 +#: admin/ogroups/gofon/class_phonequeue.inc:934 +msgid "Ring instead of playing background music" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, fuzzy +msgid "Obsolete entry" +msgstr "Elimina questo record" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, php-format +msgid "" +"The current home server is not available anymore. It will be moved to '%s' " +"if you save this entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:121 +#, fuzzy +msgid "ring all" +msgstr "Terminali" + +#: admin/ogroups/gofon/class_phonequeue.inc:122 +msgid "round robin" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:123 +msgid "least recently called" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:124 +msgid "fewest completed calls" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:125 +#, fuzzy +msgid "random" +msgstr "e" + +#: admin/ogroups/gofon/class_phonequeue.inc:126 +msgid "round robin with memory" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:210 +#, fuzzy +msgid "Remove the phone queue from this Account" +msgstr "Elimina estensioni telefoniche" + +#: admin/ogroups/gofon/class_phonequeue.inc:211 +#: admin/ogroups/gofon/class_phonequeue.inc:214 +#, fuzzy +msgid "phone queue" +msgstr "Crea estensioni telefoniche" + +#: admin/ogroups/gofon/class_phonequeue.inc:213 +#, fuzzy +msgid "Create phone queue" +msgstr "Crea estensioni telefoniche" + +#: admin/ogroups/gofon/class_phonequeue.inc:302 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone queue." +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:317 +#, fuzzy +msgid "Queue length" +msgstr "Impostazioni FAX" + +#: admin/ogroups/gofon/class_phonequeue.inc:323 +#: gofon/conference/class_phoneConferenceGeneric.inc:392 +#: gofon/conference/class_divListConferences.inc:56 +#, fuzzy +msgid "Number" +msgstr "Nome - Numero" + +#: admin/ogroups/gofon/class_phonequeue.inc:346 +#: admin/ogroups/gofon/class_phonequeue.inc:394 +#, fuzzy +msgid "asterisk" +msgstr "Data" + +#: admin/ogroups/gofon/class_phonequeue.inc:378 +#: admin/ogroups/gofon/class_phonequeue.inc:732 +#: gofon/macro/class_gofonMacro.inc:392 gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/conference/class_phoneConferenceGeneric.inc:430 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +#, fuzzy +msgid "GOfon" +msgstr "Rapporti telefono" + +#: admin/ogroups/gofon/class_phonequeue.inc:437 +msgid "Cannot find old queue entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:523 +#, php-format +msgid "" +"Found more than one entry named '%s' in queue table. Please inform your " +"system administrator!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:764 +#: admin/ogroups/gofon/class_phonequeue.inc:766 +#, fuzzy +msgid "telephone number" +msgstr "Numero di telefono" + +#: admin/ogroups/gofon/class_phonequeue.inc:823 +#: admin/ogroups/gofon/class_phonequeue.inc:865 +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 gofon/macro/class_gofonMacro.inc:467 +#: gofon/macro/class_gofonMacro.inc:505 +#: gofon/phoneaccount/class_phoneAccount.inc:958 +#: gofon/phoneaccount/class_phoneAccount.inc:1077 +#: gofon/phoneaccount/class_phoneAccount.inc:1350 +#: gofon/phoneaccount/class_phoneAccount.inc:1422 +#: gofon/phoneaccount/class_phoneAccount.inc:1432 +#: gofon/phoneaccount/class_phoneAccount.inc:1466 +#: gofon/conference/class_phoneConferenceGeneric.inc:260 +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "Error" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:838 +#: admin/ogroups/gofon/class_phonequeue.inc:893 +#: admin/systems/services/gofon/class_goFonServer.inc:146 +#: admin/systems/gofon/class_phoneGeneric.inc:282 +#: admin/systems/gofon/class_phoneGeneric.inc:428 +#: admin/systems/gofon/class_phoneGeneric.inc:442 +#: admin/systems/gofon/class_phoneGeneric.inc:459 +#: gofon/macro/class_gofonMacroParameters.inc:401 +#: gofon/macro/class_gofonMacro.inc:479 gofon/macro/class_gofonMacro.inc:490 +#: gofon/macro/class_gofonMacro.inc:526 +#: gofon/phoneaccount/class_phoneAccount.inc:1377 +#: gofon/phoneaccount/class_phoneAccount.inc:1513 +#: gofon/conference/class_phoneConferenceGeneric.inc:718 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/ogroups/gofon/class_phonequeue.inc:901 +#: gofon/conference/generic.tpl:120 gofon/conference/paste_generic.tpl:15 +msgid "Phone number" +msgstr "Numero di telefono" + +#: admin/ogroups/gofon/class_phonequeue.inc:918 +#: gofon/phoneaccount/class_phoneAccount.inc:6 +#: gofon/phoneaccount/class_phoneAccount.inc:911 +#: gofon/phoneaccount/class_phoneAccount.inc:924 +#: gofon/phoneaccount/class_phoneAccount.inc:936 +#: gofon/phoneaccount/class_phoneAccount.inc:940 +#: gofon/phoneaccount/class_phoneAccount.inc:943 +#: gofon/phoneaccount/class_phoneAccount.inc:1597 +msgid "Phone" +msgstr "Telefono" + +#: admin/ogroups/gofon/class_phonequeue.inc:919 +#, fuzzy +msgid "Phone group" +msgstr "I membri sono in un gruppo di risposta telefonica" + +#: admin/ogroups/gofon/class_phonequeue.inc:938 +#, fuzzy +msgid "Welcome music" +msgstr "Benvenuto %s!" + +#: admin/ogroups/gofon/class_phonequeue.inc:939 +msgid "Report hold time" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:940 +msgid "'You are next' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:941 +msgid "'There are' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:942 +msgid "'Call waiting' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:943 +msgid "'Thank you' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:944 +msgid "'Minutes' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:945 +#, fuzzy +msgid "'Seconds' sound" +msgstr "Benvenuto %s!" + +#: admin/ogroups/gofon/class_phonequeue.inc:946 +#, fuzzy +msgid "'Less than' sound" +msgstr "Benvenuto %s!" + +#: admin/ogroups/gofon/class_phonequeue.inc:947 +#, fuzzy +msgid "Queue phone number" +msgstr "Numero di telefono" + +#: admin/ogroups/gofon/class_phonequeue.inc:949 +#, fuzzy +msgid "Method" +msgstr "metodo" + +#: admin/ogroups/gofon/class_phonequeue.inc:951 +#, fuzzy +msgid "Announce" +msgstr "Messaggio di di risposta automatica" + +#: admin/systems/services/gofon/goFonServer.tpl:1 +#, fuzzy +msgid "VoIP database information" +msgstr "Informazioni personali" + +#: admin/systems/services/gofon/goFonServer.tpl:4 +msgid "Asterisk DB user" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:12 +#: admin/systems/services/gofon/class_goFonServer.inc:77 +#: admin/systems/services/gofon/class_goFonServer.inc:179 +msgid "Password" +msgstr "Password" + +#: admin/systems/services/gofon/goFonServer.tpl:20 +msgid "Country dial prefix" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:28 +#: admin/systems/services/gofon/class_goFonServer.inc:80 +msgid "Local dial prefix" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:34 +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#: admin/systems/services/gofon/class_goFonServer.inc:165 +#, fuzzy +msgid "VoIP service" +msgstr "server" + +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#, fuzzy +msgid "Asterisk management" +msgstr "Riferimenti" + +#: admin/systems/services/gofon/class_goFonServer.inc:74 +msgid "User" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:83 +#, fuzzy +msgid "Country prefix" +msgstr "Sicurezza" + +#: admin/systems/services/gofon/class_goFonServer.inc:120 +#, php-format +msgid "" +"You can't remove the asterisk database extension, it is still in use by " +"these objects '%s'." +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +#, fuzzy +msgid "VoIP - asterisk management" +msgstr "Riferimenti" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/gofon/class_goFonServer.inc:174 +#, fuzzy +msgid "Start" +msgstr "Avvio" + +#: admin/systems/services/gofon/class_goFonServer.inc:175 +msgid "Stop" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:176 +#, fuzzy +msgid "Restart" +msgstr "Riprova" + +#: admin/systems/services/gofon/class_goFonServer.inc:178 +#, fuzzy +msgid "Admin" +msgstr "DN dell'amministratore" + +#: admin/systems/services/gofon/class_goFonServer.inc:180 +#, fuzzy +msgid "Area code" +msgstr "Directory" + +#: admin/systems/services/gofon/class_goFonServer.inc:181 +#, fuzzy +msgid "Country code" +msgstr "Sicurezza" + +#: admin/systems/gofon/phonesettings.tpl:1 +#, fuzzy +msgid "Advanced phone settings" +msgstr "Opzioni di posta avanzate" + +#: admin/systems/gofon/phonesettings.tpl:6 +#, fuzzy +msgid "Phone type" +msgstr "Telefono" + +#: admin/systems/gofon/phonesettings.tpl:8 +#: admin/systems/gofon/phonesettings.tpl:30 +#: admin/systems/gofon/phonesettings.tpl:42 +#: admin/systems/gofon/phonesettings.tpl:58 +#: admin/systems/gofon/phonesettings.tpl:91 +#: admin/systems/gofon/phonesettings.tpl:128 +#: admin/systems/gofon/phonesettings.tpl:181 +#, fuzzy +msgid "Choose a phone type" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/systems/gofon/phonesettings.tpl:13 +msgid "refresh" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:25 +msgid "Mode" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:38 +msgid "DTMF mode" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:54 +#: admin/systems/gofon/phonesettings.tpl:99 +#, fuzzy +msgid "Default IP" +msgstr "Stampante predefinita" + +#: admin/systems/gofon/phonesettings.tpl:66 +#: admin/systems/gofon/phonesettings.tpl:109 +msgid "Response timeout" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:87 +msgid "Modus" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:124 +msgid "Authtype" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:136 +#, fuzzy +msgid "Secret" +msgstr "Strada" + +#: admin/systems/gofon/phonesettings.tpl:146 +msgid "GoFonInkeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:154 +msgid "GoFonOutKeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:167 +#, fuzzy +msgid "Account code" +msgstr "Sicurezza" + +#: admin/systems/gofon/phonesettings.tpl:177 +msgid "Trunk lines" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:194 +msgid "Hosts that are allowed to connect" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:197 +#: admin/systems/gofon/phonesettings.tpl:220 +msgid "List of alternative mail addresses" +msgstr "Lista degli indirizzi alternativi" + +#: admin/systems/gofon/phonesettings.tpl:217 +msgid "Hosts that are not allowed to connect" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:247 +msgid "MSN" +msgstr "" + +#: admin/systems/gofon/paste_generic.tpl:3 admin/systems/gofon/phone.tpl:6 +msgid "Phone name" +msgstr "" + +#: admin/systems/gofon/phone.tpl:17 +#: admin/systems/gofon/class_phoneGeneric.inc:517 +#: gofon/macro/class_gofonMacro.inc:573 gofon/macro/class_divListMacros.inc:79 +#: gofon/macro/generic.tpl:27 gofon/conference/generic.tpl:49 +#: gofon/conference/class_phoneConferenceGeneric.inc:776 +#: gofon/conference/class_divListConferences.inc:83 +msgid "Base" +msgstr "Base" + +#: admin/systems/gofon/phone.tpl:20 gofon/macro/generic.tpl:30 +msgid "Choose subtree to place group in" +msgstr "Scegli il subtree dove mettere il gruppo" + +#: admin/systems/gofon/phone.tpl:25 gofon/macro/generic.tpl:36 +#: gofon/conference/generic.tpl:56 gofon/conference/generic.tpl:62 +#, fuzzy +msgid "Select a base" +msgstr "Rimuovi" + +#: admin/systems/gofon/phone.tpl:34 +#: admin/systems/gofon/class_phoneGeneric.inc:518 +#: gofon/macro/class_gofonMacro.inc:574 gofon/macro/generic.tpl:49 +#: gofon/conference/generic.tpl:98 +#: gofon/conference/class_phoneConferenceGeneric.inc:777 +msgid "Description" +msgstr "Descrizione" + +#: admin/systems/gofon/class_phoneGeneric.inc:124 +#, fuzzy +msgid "phone" +msgstr "Telefono" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:121 +#, fuzzy +msgid "yes" +msgstr "Sistemi" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:122 +#, fuzzy +msgid "no" +msgstr "nessuno" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "dynamic" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +#, fuzzy +msgid "Networksettings" +msgstr "Mostra workstation" + +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 +#, php-format +msgid "Cannot delete entry because it is still in use by '%s'!" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:331 +#: admin/systems/gofon/class_phoneGeneric.inc:334 +msgid "IP address" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:340 +#: admin/systems/gofon/class_phoneGeneric.inc:344 +#: admin/systems/gofon/class_phoneGeneric.inc:347 +#: admin/systems/gofon/class_phoneGeneric.inc:362 +#: admin/systems/gofon/class_phoneGeneric.inc:516 +#: gofon/macro/class_gofonMacro.inc:406 gofon/macro/class_gofonMacro.inc:412 +#: gofon/macro/class_divListMacros.inc:56 gofon/macro/parameter.tpl:6 +#: gofon/conference/class_phoneConferenceGeneric.inc:388 +#: gofon/conference/class_phoneConferenceGeneric.inc:410 +#: gofon/conference/class_phoneConferenceGeneric.inc:775 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Name" +msgstr "Cognome" + +#: admin/systems/gofon/class_phoneGeneric.inc:507 +#: gofon/macro/class_gofonMacro.inc:562 +msgid "Generic" +msgstr "Generale" + +#: admin/systems/gofon/class_phoneGeneric.inc:508 +#, fuzzy +msgid "Phone generic" +msgstr "Numero di telefono" + +#: admin/systems/gofon/class_phoneGeneric.inc:513 +#: gofon/phoneaccount/class_phoneAccount.inc:1611 +#, fuzzy +msgid "Phone hardware" +msgstr "Dispositivo telefonico" + +#: admin/systems/gofon/class_phoneGeneric.inc:519 +msgid "SIP Mode" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:520 +msgid "SIP DTMF mode" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:521 +#, fuzzy +msgid "SIP Default ip" +msgstr "Stampante predefinita" + +#: admin/systems/gofon/class_phoneGeneric.inc:522 +msgid "SIP Qualify" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:523 +#, fuzzy +msgid "IAX authentication type" +msgstr "Destinazione" + +#: admin/systems/gofon/class_phoneGeneric.inc:524 +#, fuzzy +msgid "IAX secret" +msgstr "server" + +#: admin/systems/gofon/class_phoneGeneric.inc:525 +#, fuzzy +msgid "IAX account code" +msgstr "Sicurezza" + +#: admin/systems/gofon/class_phoneGeneric.inc:526 +msgid "IAX trunk lines" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:527 +#, fuzzy +msgid "IAX permit settings" +msgstr "Impostazioni FAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:528 +#, fuzzy +msgid "IAX deny settings" +msgstr "Impostazioni FAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:529 +msgid "CAPI MSN" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:530 +msgid "Hardware type" +msgstr "" + +#: gofon/macro/headpage.tpl:6 gofon/macro/class_divListMacros.inc:31 +#: gofon/macro/class_divListMacros.inc:32 +#, fuzzy +msgid "List of macros" +msgstr "Lista dei gruppi" + +#: gofon/macro/headpage.tpl:20 gofon/macro/class_gofonMacroParameters.inc:374 +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#: gofon/conference/headpage.tpl:20 +msgid "Information" +msgstr "Informazioni" + +#: gofon/macro/headpage.tpl:24 +#, fuzzy +msgid "" +"This menu allows you to add, edit and remove selected macros. You may want " +"to use the range selector on top of the macro listbox, when working with a " +"large number of macros." +msgstr "" +"Questo menù permette di creare, modificare e cancellare i gruppi " +"selezionati. Avendo un gran numero di gruppi, puoi usare i selettori di " +"intervalli in cima alla lista dei gruppi." + +#: gofon/macro/headpage.tpl:29 gofon/conference/headpage.tpl:29 +msgid "Filters" +msgstr "Filtri" + +#: gofon/macro/headpage.tpl:38 +#, fuzzy +msgid "Display macros matching" +msgstr "Mosra gruppi corrispondenti a" + +#: gofon/macro/headpage.tpl:38 +#, fuzzy +msgid "Display macros matching" +msgstr "Mosra gruppi corrispondenti a" + +#: gofon/macro/headpage.tpl:41 gofon/macro/class_divListMacros.inc:64 +#, fuzzy +msgid "Regular expression for matching macro names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: gofon/macro/remove.tpl:2 gofon/conference/remove.tpl:2 +msgid "Warning" +msgstr "Attenzione" + +#: gofon/macro/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: gofon/macro/remove.tpl:9 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Quindi - Se sei sicuro - premi Rimuovi per continuare o Annulla per abortire." + +#: gofon/macro/class_gofonMacroParameters.inc:200 +#: gofon/phoneaccount/generic.tpl:125 gofon/phoneaccount/generic.tpl:127 +msgid "Phone macro" +msgstr "Macro telefonica" + +#: gofon/macro/class_gofonMacroParameters.inc:256 +#, fuzzy +msgid "String" +msgstr "Ricerca" + +#: gofon/macro/class_gofonMacroParameters.inc:257 +msgid "Combobox" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:258 +msgid "Bool" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:264 +#, fuzzy +msgid "Delete unused" +msgstr "Rimuovi" + +#: gofon/macro/class_gofonMacroParameters.inc:340 +#, php-format +msgid "Parameter %s contains invalid character. '!,#' is used as delimiter!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:345 +#, php-format +msgid "Parameter %s is invalid!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:374 +msgid "" +"Number of parameters for this macro has changed. Please update all users " +"using it!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:300 +#, php-format +msgid "Application missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:304 +#, php-format +msgid "Extension missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:416 +msgid "Name can be 20 characters at maximum!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:425 +#, fuzzy +msgid "Macro is still in use!" +msgstr "Opzioni di posta dell'identità" + +#: gofon/macro/class_gofonMacro.inc:432 +#, fuzzy +msgid "Macro is empty!" +msgstr "Nome gruppo" + +#: gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:371 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/phoneaccount/class_phoneAccount.inc:1471 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:169 +#, fuzzy +msgid "Configuration error" +msgstr "File di configurazione" + +#: gofon/macro/class_gofonMacro.inc:563 +#, fuzzy +msgid "Asterisk macro management" +msgstr "Riferimenti" + +#: gofon/macro/class_gofonMacro.inc:568 +#, fuzzy +msgid "GOfon macro" +msgstr "Rapporti telefono" + +#: gofon/macro/class_gofonMacro.inc:572 gofon/macro/generic.tpl:6 +#: gofon/macro/generic.tpl:9 gofon/macro/paste_generic.tpl:4 +#: gofon/macro/paste_generic.tpl:6 +#, fuzzy +msgid "Macro name" +msgstr "Nome gruppo" + +#: gofon/macro/class_gofonMacro.inc:575 gofon/macro/generic.tpl:14 +msgid "Display name" +msgstr "Mostra il nome" + +#: gofon/macro/class_gofonMacro.inc:576 +#, fuzzy +msgid "Macro content and parameter" +msgstr "Nome gruppo" + +#: gofon/macro/class_gofonMacro.inc:577 +msgid "Visibility flag" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:50 +#: gofon/conference/class_divListConferences.inc:50 +#, fuzzy +msgid "Select all" +msgstr "Rimuovi" + +#: gofon/macro/class_divListMacros.inc:56 +msgid "Department" +msgstr "Dipartimento" + +#: gofon/macro/class_divListMacros.inc:57 +#, fuzzy +msgid "Visible" +msgstr "disabilitato" + +#: gofon/macro/class_divListMacros.inc:58 +#: gofon/macro/class_divListMacros.inc:84 +#: gofon/conference/class_divListConferences.inc:59 +#: gofon/conference/class_divListConferences.inc:88 +msgid "Actions" +msgstr "Azioni" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit department" +msgstr "Imposta dipartimento" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:89 +#: gofon/conference/class_divListConferences.inc:93 +msgid "Create" +msgstr "Creare" + +#: gofon/macro/class_divListMacros.inc:91 +#: gofon/macro/class_divListMacros.inc:120 +#, fuzzy +msgid "Macro" +msgstr "Nome gruppo" + +#: gofon/macro/class_divListMacros.inc:97 +#: gofon/conference/class_divListConferences.inc:101 +msgid "Remove" +msgstr "Rimuovi" + +#: gofon/macro/class_divListMacros.inc:121 +#, fuzzy +msgid "visible" +msgstr "Pubblico" + +#: gofon/macro/class_divListMacros.inc:122 +#, fuzzy +msgid "invisible" +msgstr "Pubblico" + +#: gofon/macro/class_divListMacros.inc:146 +#: gofon/conference/class_divListConferences.inc:150 +msgid "edit" +msgstr "modifica" + +#: gofon/macro/class_divListMacros.inc:147 +#, fuzzy +msgid "Edit macro" +msgstr "Modifica contatto" + +#: gofon/macro/class_divListMacros.inc:153 +#: gofon/conference/class_divListConferences.inc:158 +msgid "delete" +msgstr "elimina" + +#: gofon/macro/class_divListMacros.inc:154 +#, fuzzy +msgid "Delete macro" +msgstr "Rimuovi" + +#: gofon/macro/class_divListMacros.inc:202 +#: gofon/macro/class_divListMacros.inc:203 +#, fuzzy, php-format +msgid "Number of listed %s" +msgstr "Rimuovi" + +#: gofon/macro/class_divListMacros.inc:202 +#, fuzzy +msgid "macros" +msgstr "Nome gruppo" + +#: gofon/macro/class_divListMacros.inc:203 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy +msgid "departments" +msgstr "Dipartimento" + +#: gofon/macro/generic.tpl:18 +msgid "Macro name to be displayed" +msgstr "" + +#: gofon/macro/generic.tpl:60 +#, fuzzy +msgid "Visible for user" +msgstr "Lista degli utenti" + +#: gofon/macro/generic.tpl:70 +#, fuzzy +msgid "Macro text" +msgstr "Nome gruppo" + +#: gofon/macro/class_gofonMacroManagement.inc:24 +msgid "Phone macros" +msgstr "Macro telefiche" + +#: gofon/macro/class_gofonMacroManagement.inc:25 +#: gofon/phoneaccount/class_phoneAccount.inc:7 +#: gofon/fonreports/class_fonreport.inc:7 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: gofon/macro/class_gofonMacroManagement.inc:273 +#: gofon/conference/class_phoneConferenceManagment.inc:187 +#, fuzzy +msgid "Permission" +msgstr "Permessi" + +#: gofon/macro/class_gofonMacroManagement.inc:320 +#: gofon/macro/class_gofonMacroManagement.inc:373 +#: gofon/macro/class_gofonMacroManagement.inc:397 +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "Permission error" +msgstr "Permessi" + +#: gofon/macro/class_gofonMacroManagement.inc:366 +#, fuzzy +msgid "macro" +msgstr "Nome gruppo" + +#: gofon/macro/main.inc:51 gofon/macro/main.inc:55 +msgid "Phone macro management" +msgstr "" + +#: gofon/macro/parameter.tpl:4 +#, fuzzy +msgid "Argument" +msgstr "Argomenti" + +#: gofon/macro/parameter.tpl:8 +#, fuzzy +msgid "type" +msgstr "Tipo" + +#: gofon/macro/parameter.tpl:10 +msgid "Default value" +msgstr "" + +#: gofon/macro/parameter.tpl:19 +#, fuzzy +msgid "You are not allowed to view the macro parameter settings" +msgstr "Non hai il permesso di cambiare la tua password." + +#: gofon/phoneaccount/generic.tpl:42 gofon/phoneaccount/paste_generic.tpl:27 +msgid "Telephone hardware" +msgstr "Dispositivo telefonico" + +#: gofon/phoneaccount/generic.tpl:44 gofon/phoneaccount/generic.tpl:48 +#: gofon/phoneaccount/paste_generic.tpl:29 +msgid "Telephone" +msgstr "Telefono" + +#: gofon/phoneaccount/generic.tpl:62 +#, fuzzy +msgid "Select the accounts home server" +msgstr "Rimuovi" + +#: gofon/phoneaccount/generic.tpl:69 +#, fuzzy +msgid "Context" +msgstr "Contenuti" + +#: gofon/phoneaccount/generic.tpl:73 gofon/phoneaccount/generic.tpl:84 +#, fuzzy +msgid "Select the accounts context" +msgstr "Rimuovi" + +#: gofon/phoneaccount/generic.tpl:80 +msgid "Voicemail context" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:93 gofon/phoneaccount/paste_generic.tpl:32 +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#: gofon/phoneaccount/class_phoneAccount.inc:1280 +msgid "Voicemail PIN" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:103 gofon/phoneaccount/paste_generic.tpl:40 +#: gofon/phoneaccount/class_phoneAccount.inc:1285 +#, fuzzy +msgid "Phone PIN" +msgstr "Telefono" + +#: gofon/phoneaccount/generic.tpl:138 +#, fuzzy +msgid "Refresh" +msgstr "Riferimenti" + +#: gofon/phoneaccount/paste_generic.tpl:1 gofon/phoneaccount/main.inc:133 +msgid "Phone settings" +msgstr "" + +#: gofon/phoneaccount/main.inc:123 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " +"questo dialogo" + +#: gofon/phoneaccount/class_phoneAccount.inc:172 +msgid "automatic" +msgstr "automatico" + +#: gofon/phoneaccount/class_phoneAccount.inc:208 +#, fuzzy +msgid "no macro" +msgstr "Rapporti telefono" + +#: gofon/phoneaccount/class_phoneAccount.inc:236 +#, fuzzy +msgid "undefined" +msgstr "non definito" + +#: gofon/phoneaccount/class_phoneAccount.inc:489 +#: gofon/phoneaccount/class_phoneAccount.inc:496 +#: gofon/phoneaccount/class_phoneAccount.inc:514 +#: gofon/phoneaccount/class_phoneAccount.inc:521 +msgid "Abort saving entries to keep the database consistent." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:935 +msgid "Remove phone account" +msgstr "Elimina estensioni telefoniche" + +#: gofon/phoneaccount/class_phoneAccount.inc:939 +#: gofon/phoneaccount/class_phoneAccount.inc:942 +msgid "Create phone account" +msgstr "Crea estensioni telefoniche" + +#: gofon/phoneaccount/class_phoneAccount.inc:940 +msgid "User uid" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:958 +msgid "Selected macro is not available anymore!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:982 +msgid "Parameter" +msgstr "Parametro" + +#: gofon/phoneaccount/class_phoneAccount.inc:1126 +msgid "Choose your private phone" +msgstr "Scegli il tuo numero di telefono personale" + +#: gofon/phoneaccount/class_phoneAccount.inc:1269 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone account." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +msgid "Between 1-4 charactes" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1303 +#, fuzzy, php-format +msgid "macro parameter %s" +msgstr "Nome gruppo" + +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#, php-format +msgid "User '%s' has been removed from phone queue '%s'." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1541 +#: gofon/phoneaccount/class_phoneAccount.inc:1543 +#, php-format +msgid "The specified telephonenumber '%s' is already assigned to '%s'." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1589 +#, php-format +msgid "" +"The previously selected asterisk home server (%s) is no longer available. " +"Remove aborted." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1598 +#, fuzzy +msgid "Phone account settings" +msgstr "Opzioni di posta dell'identità" + +#: gofon/phoneaccount/class_phoneAccount.inc:1602 +msgid "My account" +msgstr "Identità" + +#: gofon/phoneaccount/class_phoneAccount.inc:1609 +#: gofon/conference/class_phoneConferenceGeneric.inc:793 +#, fuzzy +msgid "Telephone number" +msgstr "Numero di telefono" + +#: gofon/phoneaccount/class_phoneAccount.inc:1610 +#, fuzzy +msgid "Macro settings" +msgstr "Opzioni di posta dell'identità" + +#: gofon/phoneaccount/class_phoneAccount.inc:1613 +#, fuzzy +msgid "Phone context" +msgstr "Telefono" + +#: gofon/phoneaccount/class_phoneAccount.inc:1614 +msgid "Voice mail context" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1615 +#, fuzzy +msgid "Telephone pin" +msgstr "Telefono" + +#: gofon/phoneaccount/class_phoneAccount.inc:1616 +msgid "Voicemail pin" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1698 +msgid "There is currently no asterisk server defined!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1702 +msgid "Asterisk server is invalid!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1708 +msgid "Voicemail PIN must be 4 characters long!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1711 +#, fuzzy +msgid "Voicemail PIN contains invalid characters!" +msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#: gofon/phoneaccount/class_phoneAccount.inc:1716 +#, fuzzy +msgid "Phone pin contains invalid characters!" +msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#: gofon/phoneaccount/class_phoneAccount.inc:1723 +#, php-format +msgid "The parameter %s contains invalid char. '!,#' is used as delimiter" +msgstr "" + +#: gofon/conference/headpage.tpl:6 +#: gofon/conference/class_divListConferences.inc:31 +#: gofon/conference/class_divListConferences.inc:32 +#, fuzzy +msgid "List of conference rooms" +msgstr "Lista dei gruppi" + +#: gofon/conference/headpage.tpl:24 +#, fuzzy +msgid "" +"This menu allows you to create, delete and edit selected phone conferences. " +"Having a large number of phone conferences, you might prefer the range " +"selectors on top of the conferences list." +msgstr "" +"Questo menù permette di creare, modificare e cancellare gli utenti " +"selezionati. Avendo un gran numero di utenti, puoi usare i selettori di " +"intervalli in cima alla lista degli utenti." + +#: gofon/conference/headpage.tpl:35 +msgid "Display users matching" +msgstr "Mostra utenti che corrispondono a" + +#: gofon/conference/headpage.tpl:36 +#, fuzzy +msgid "Regular expression for matching user names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: gofon/conference/remove.tpl:6 +msgid "" +"This includes 'all' accounts, systems, etc. in this subtree. Please double " +"check if your really want to do this since there is no way for GOsa to get " +"your data back." +msgstr "" + +#: gofon/conference/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: gofon/conference/class_phoneConferenceManagment.inc:24 +msgid "Phone conferences" +msgstr "Conferenze telefoniche" + +#: gofon/conference/class_phoneConferenceManagment.inc:25 +msgid "Management" +msgstr "Dirigenza" + +#: gofon/conference/class_phoneConferenceManagment.inc:206 +#: gofon/conference/class_phoneConferenceManagment.inc:267 +#, fuzzy +msgid "conference" +msgstr "Conferenza" + +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "You have not permission to delete this entry!" +msgstr "Non hai il permesso di cambiare la tua password." + +#: gofon/conference/generic.tpl:5 +msgid "Properties" +msgstr "" + +#: gofon/conference/generic.tpl:15 gofon/conference/paste_generic.tpl:5 +#, fuzzy +msgid "Conference name" +msgstr "Riferimenti" + +#: gofon/conference/generic.tpl:21 gofon/conference/paste_generic.tpl:10 +#, fuzzy +msgid "Name of conference to create" +msgstr "Lista dei gruppi" + +#: gofon/conference/generic.tpl:28 +msgid "Type" +msgstr "Tipo" + +#: gofon/conference/generic.tpl:35 +#, fuzzy +msgid "Choose subtree to place conference in" +msgstr "Scegli il subtree per l'utente" + +#: gofon/conference/generic.tpl:82 +#, fuzzy +msgid "Select language" +msgstr "Lingua" + +#: gofon/conference/generic.tpl:104 +msgid "Descriptive text for department" +msgstr "" + +#: gofon/conference/generic.tpl:110 +msgid "Lifetime (in days)" +msgstr "" + +#: gofon/conference/generic.tpl:157 +#: gofon/conference/class_phoneConferenceGeneric.inc:783 +#, fuzzy +msgid "Preset PIN" +msgstr "presente" + +#: gofon/conference/generic.tpl:165 +#: gofon/conference/class_phoneConferenceGeneric.inc:384 +#: gofon/conference/class_divListConferences.inc:58 +msgid "PIN" +msgstr "" + +#: gofon/conference/generic.tpl:177 +#: gofon/conference/class_phoneConferenceGeneric.inc:784 +#, fuzzy +msgid "Record conference" +msgstr "Riferimenti" + +#: gofon/conference/generic.tpl:185 +msgid "Sound file format" +msgstr "" + +#: gofon/conference/generic.tpl:188 +msgid "Choose subtree to place department in" +msgstr "" + +#: gofon/conference/generic.tpl:208 +#: gofon/conference/class_phoneConferenceGeneric.inc:785 +msgid "Play music on hold" +msgstr "" + +#: gofon/conference/generic.tpl:216 +#, fuzzy +msgid "Activate session menu" +msgstr "Attiva la risposta automatica" + +#: gofon/conference/generic.tpl:224 +msgid "Announce users joining or leaving the conference" +msgstr "" + +#: gofon/conference/generic.tpl:232 +#, fuzzy +msgid "Count users" +msgstr "Paese" + +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#, php-format +msgid "Cannot delete entry from server '%s' because it seems to be removed!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:379 +#, php-format +msgid "" +"The previously selected asterisk home server '%s' is no longer available!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:396 +#: gofon/conference/class_phoneConferenceGeneric.inc:792 +msgid "Lifetime" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:641 +#: gofon/conference/class_phoneConferenceGeneric.inc:643 +#, php-format +msgid "'%s' is already assigned to '%s'!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:765 +#: gofon/conference/class_divListConferences.inc:95 +#: gofon/conference/class_divListConferences.inc:208 +msgid "Conference" +msgstr "Conferenza" + +#: gofon/conference/class_phoneConferenceGeneric.inc:766 +#, fuzzy +msgid "Phone conference management" +msgstr "Riferimenti" + +#: gofon/conference/class_phoneConferenceGeneric.inc:771 +#, fuzzy +msgid "GOfon conference" +msgstr "Conferenze telefoniche" + +#: gofon/conference/class_phoneConferenceGeneric.inc:778 +#, fuzzy +msgid "Conference PIN" +msgstr "Conferenza" + +#: gofon/conference/class_phoneConferenceGeneric.inc:786 +#, fuzzy +msgid "Activate menu" +msgstr "Attiva la risposta automatica" + +#: gofon/conference/class_phoneConferenceGeneric.inc:787 +msgid "Announce user activity" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:788 +#, fuzzy +msgid "Count user" +msgstr "Paese" + +#: gofon/conference/class_phoneConferenceGeneric.inc:789 +#, fuzzy +msgid "Conference type" +msgstr "Riferimenti" + +#: gofon/conference/class_phoneConferenceGeneric.inc:791 +#, fuzzy +msgid "Format" +msgstr "Informazioni" + +#: gofon/conference/class_phoneConferenceGeneric.inc:794 +#: gofon/conference/class_divListConferences.inc:57 +msgid "Owner" +msgstr "" + +#: gofon/conference/main.inc:48 gofon/conference/main.inc:50 +#, fuzzy +msgid "Conference management" +msgstr "Riferimenti" + +#: gofon/conference/class_divListConferences.inc:65 +#, fuzzy +msgid "Regular expression for matching conference names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: gofon/conference/class_divListConferences.inc:150 +msgid "Edit this entry" +msgstr "Modifica questo record" + +#: gofon/conference/class_divListConferences.inc:158 +msgid "Delete this entry" +msgstr "Elimina questo record" + +#: gofon/conference/class_divListConferences.inc:185 +msgid "Unknown" +msgstr "" + +#: gofon/conference/class_divListConferences.inc:225 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Rimuovi" + +#: gofon/conference/class_divListConferences.inc:225 +#, fuzzy +msgid "conferences" +msgstr "Conferenza" + +#: gofon/fonreports/class_fonreport.inc:6 +msgid "Phone Reports" +msgstr "Rapporti telefono" + +#: gofon/fonreports/class_fonreport.inc:210 +#, fuzzy +msgid "Insufficient permissions" +msgstr "Permessi" + +#: gofon/fonreports/class_fonreport.inc:229 +msgid "Y-M-D" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:396 +#: gofon/fonreports/class_fonreport.inc:397 +#: gofon/fonreports/class_fonreport.inc:404 gofon/fonreports/main.inc:22 +msgid "Phone reports" +msgstr "Rapporti telefono" + +#: gofon/fonreports/class_fonreport.inc:397 +#, fuzzy +msgid "All entries are readonly" +msgstr "Tutti i campi sono scrivibili" + +#: gofon/fonreports/class_fonreport.inc:409 gofon/fonreports/contents.tpl:30 +msgid "Date" +msgstr "Data" + +#: gofon/fonreports/class_fonreport.inc:410 gofon/fonreports/contents.tpl:31 +msgid "Source" +msgstr "Sorgente" + +#: gofon/fonreports/class_fonreport.inc:411 gofon/fonreports/contents.tpl:32 +msgid "Destination" +msgstr "Destinazione" + +#: gofon/fonreports/class_fonreport.inc:412 gofon/fonreports/contents.tpl:33 +msgid "Channel" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:413 +#, fuzzy +msgid "Application called" +msgstr "Nome applicazione" + +#: gofon/fonreports/class_fonreport.inc:414 +#, fuzzy +msgid "Disposition" +msgstr "Disconnessione " + +#: gofon/fonreports/class_fonreport.inc:415 gofon/fonreports/contents.tpl:36 +msgid "Duration" +msgstr "Durata" + +#: gofon/fonreports/contents.tpl:2 +msgid "Filter" +msgstr "Filtro" + +#: gofon/fonreports/contents.tpl:6 +msgid "Search for" +msgstr "Cerca" + +#: gofon/fonreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "" + +#: gofon/fonreports/contents.tpl:8 gofon/fonreports/contents.tpl:16 +msgid "in" +msgstr "" + +#: gofon/fonreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "" + +#: gofon/fonreports/contents.tpl:12 +msgid "during" +msgstr "" + +#: gofon/fonreports/contents.tpl:21 +msgid "Search" +msgstr "Cerca" + +#: gofon/fonreports/contents.tpl:34 +msgid "Application" +msgstr "Applicazione" + +#: gofon/fonreports/contents.tpl:35 +msgid "Status" +msgstr "Stato" + +#: gofon/fonreports/contents.tpl:51 +msgid "Search returned no results..." +msgstr "" + +#~ msgid "Addons" +#~ msgstr "Extra" + +#, fuzzy +#~ msgid "GOfon reports" +#~ msgstr "Rapporti telefono" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Azienda" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Paste" +#~ msgstr "Data" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Impossibile selezionare il database!" + +#~ msgid "This account has no phone extensions." +#~ msgstr "Questa identità non possiede estensioni telefoniche" + +#~ msgid "" +#~ "This account has phone features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "Questa identià possiede estensioni telefoniche." + +#, fuzzy +#~ msgid "" +#~ "This account has phone features disabled. You can't enable them while no " +#~ "uid is set." +#~ msgstr "Questa identità non possiede estensioni telefoniche" + +#~ msgid "" +#~ "This account has phone features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "Questa identità non possiede estensioni telefoniche" + +#, fuzzy +#~ msgid "Cannot connect to %s database on server '%s'!" +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "Cannot select %s database on server '%s'!" +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "Cannot query %s database on server '%s'!" +#~ msgstr "Impossibile selezionare il database!" + +#~ msgid "Name - Number" +#~ msgstr "Nome - Numero" + +#, fuzzy +#~ msgid "Select to search within subtrees" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#, fuzzy +#~ msgid "Number of listed conferences" +#~ msgstr "Riferimenti" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Imposta dipartimento" + +#, fuzzy +#~ msgid "Cannot insert new macro on server '%s'!" +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "Display name is not set!" +#~ msgstr "Mostra il nome" + +#, fuzzy +#~ msgid "This 'dn' is no phone macro." +#~ msgstr "Questa identità non possiede estensioni telefoniche" + +#, fuzzy +#~ msgid "You're about to delete the following user(s) %s" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "Apply" +#~ msgstr "Applica" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Delete" +#~ msgstr "Rimuovi" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Edit" +#~ msgstr "Modifica" + +#, fuzzy +#~ msgid "You're about to delete the following macro(s) %s" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "Save" +#~ msgstr "Salva" + +#, fuzzy +#~ msgid "VoIP service - Asterisk management" +#~ msgstr "Riferimenti" + +#, fuzzy +#~ msgid "The attribute DB user is empty or contains invalid characters." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "" +#~ "The attribute local dial prefix is empty or contains invalid characters." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "" +#~ "The attribute country dial prefix is empty or contains invalid characters." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "" +#~ "Phone queue is enabled for this group. You can disable it by clicking " +#~ "below." +#~ msgstr "Questa identià possiede estensioni telefoniche." + +#, fuzzy +#~ msgid "" +#~ "For this group the phone queues are disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "Questa identità non possiede estensioni telefoniche" + +#, fuzzy +#~ msgid "Please select a valid goFonHomeServer." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Mysql query failed." +#~ msgstr "La query al database è fallita!" + +#, fuzzy +#~ msgid "Saving phone queue failed" +#~ msgstr "Estenzioni Proxy Internet" + +#, fuzzy +#~ msgid "Removing phone queue failed" +#~ msgstr "Elimina estensioni Unix" + +#, fuzzy +#~ msgid "Updating gofon home server failed for '%s'." +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Removing of system phone/generic with dn '%s' failed!" +#~ msgstr "Elimina estensioni Unix" + +#, fuzzy +#~ msgid "Saving of phone/generic with dn '%s' failed!" +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "Phone number is invalid!" +#~ msgstr "Numeri di telefono" + +#, fuzzy +#~ msgid "Saving of user/phone account with dn '%s' failed." +#~ msgstr "Estenzioni Proxy Internet" + +#, fuzzy +#~ msgid "Removing of user/phone account with dn '%s' failed." +#~ msgstr "Elimina estensioni Unix" + +#, fuzzy +#~ msgid "Saving of goFonConference/generic with dn '%s' failed!" +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed!" +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "Saving of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "Can't select database '%s' on initial home server '%s'." +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "The required field IP address is empty." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "The required field 'Phone name' is not set." +#~ msgstr "Il campo necessario 'Home directory' non è vuoto" + +#, fuzzy +#~ msgid "Can't select phone database for report generation!" +#~ msgstr "Impossibile selezionare il database!" + +#~ msgid "Please enter a valid phone number!" +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please enter a PIN." +#~ msgstr "Inserisci la URI del server LDAP" + +#, fuzzy +#~ msgid "Please enter a name for the conference." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "There is already a conference with this name in the current tree." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "You can't save an empty macro." +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "" +#~ "Could not remove the macro entry from asterisk databases. Please check " +#~ "your asterisk database configurations." +#~ msgstr "Impossibile connettersi al server del database!" diff --git a/trunk/gosa-plugins/gofon/locale/messages.po b/trunk/gosa-plugins/gofon/locale/messages.po new file mode 100644 index 000000000..9d31bc0fa --- /dev/null +++ b/trunk/gosa-plugins/gofon/locale/messages.po @@ -0,0 +1,1476 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/ogroups/gofon/phonequeue.tpl:2 +msgid "" +"Only users with the same asterisk home server will be included to this queue." +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:5 +msgid "Queue Settings" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:8 gofon/phoneaccount/generic.tpl:1 +#: gofon/phoneaccount/generic.tpl:6 gofon/phoneaccount/paste_generic.tpl:2 +#: gofon/phoneaccount/paste_generic.tpl:6 +msgid "Phone numbers" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:12 +#: admin/ogroups/gofon/phonequeue.tpl:135 +msgid "Generic queue Settings" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:24 +msgid "Up" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:27 +msgid "Down" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:47 gofon/conference/generic.tpl:141 +msgid "Options" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:50 +#: admin/ogroups/gofon/class_phonequeue.inc:305 +#: admin/ogroups/gofon/class_phonequeue.inc:929 +#: gofon/phoneaccount/generic.tpl:58 +#: gofon/phoneaccount/class_phoneAccount.inc:1273 +#: gofon/phoneaccount/class_phoneAccount.inc:1612 +#: gofon/conference/generic.tpl:68 +#: gofon/conference/class_phoneConferenceGeneric.inc:782 +msgid "Home server" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:62 +#: admin/ogroups/gofon/class_phonequeue.inc:948 +#: gofon/conference/generic.tpl:78 +#: gofon/conference/class_phoneConferenceGeneric.inc:780 +msgid "Language" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:75 +#: admin/ogroups/gofon/class_phonequeue.inc:311 +#: admin/ogroups/gofon/class_phonequeue.inc:927 +msgid "Timeout" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:85 +#: admin/ogroups/gofon/class_phonequeue.inc:314 +#: admin/ogroups/gofon/class_phonequeue.inc:952 +msgid "Retry" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:95 +msgid "Strategy" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:109 +#: admin/ogroups/gofon/class_phonequeue.inc:928 +msgid "Max queue length" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:119 +#: admin/ogroups/gofon/class_phonequeue.inc:320 +#: admin/ogroups/gofon/class_phonequeue.inc:930 +msgid "Announce frequency" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:125 +msgid "(in seconds)" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:133 +msgid "Queue sound setup" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:138 +msgid "Use music on hold instead of ringing" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:149 +#: admin/ogroups/gofon/class_phonequeue.inc:937 +msgid "Music on hold" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:159 +msgid "Welcome sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:169 +msgid "Announce message" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:179 +msgid "Sound file for 'You are next ...'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:189 +msgid "'There are ...'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:199 +msgid "'... calls waiting'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:209 +msgid "'Thank you' message" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:219 +msgid "'minutes' sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:229 +msgid "'seconds' sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:239 +msgid "Hold sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:249 +msgid "Less Than sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:267 +msgid "Phone attributes " +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:277 +#: admin/ogroups/gofon/class_phonequeue.inc:950 +msgid "Announce holdtime" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:285 +#: admin/ogroups/gofon/class_phonequeue.inc:931 +msgid "Allow the called user to transfer his call" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:293 +#: admin/ogroups/gofon/class_phonequeue.inc:932 +msgid "Allows calling user to transfer call" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:305 +#: admin/ogroups/gofon/class_phonequeue.inc:933 +msgid "Allow the called to hangup by pressing *" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:313 +#: admin/ogroups/gofon/class_phonequeue.inc:935 +msgid "Allows calling to hangup by pressing *" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:321 +#: admin/ogroups/gofon/class_phonequeue.inc:934 +msgid "Ring instead of playing background music" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +msgid "Obsolete entry" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, php-format +msgid "" +"The current home server is not available anymore. It will be moved to '%s' " +"if you save this entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:121 +msgid "ring all" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:122 +msgid "round robin" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:123 +msgid "least recently called" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:124 +msgid "fewest completed calls" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:125 +msgid "random" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:126 +msgid "round robin with memory" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:210 +msgid "Remove the phone queue from this Account" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:211 +#: admin/ogroups/gofon/class_phonequeue.inc:214 +msgid "phone queue" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:213 +msgid "Create phone queue" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:302 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone queue." +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:317 +msgid "Queue length" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:323 +#: gofon/conference/class_phoneConferenceGeneric.inc:392 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Number" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:346 +#: admin/ogroups/gofon/class_phonequeue.inc:394 +msgid "asterisk" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:378 +#: admin/ogroups/gofon/class_phonequeue.inc:732 +#: gofon/macro/class_gofonMacro.inc:392 gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/conference/class_phoneConferenceGeneric.inc:430 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "GOfon" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:437 +msgid "Cannot find old queue entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:523 +#, php-format +msgid "" +"Found more than one entry named '%s' in queue table. Please inform your " +"system administrator!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:764 +#: admin/ogroups/gofon/class_phonequeue.inc:766 +msgid "telephone number" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:823 +#: admin/ogroups/gofon/class_phonequeue.inc:865 +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 gofon/macro/class_gofonMacro.inc:467 +#: gofon/macro/class_gofonMacro.inc:505 +#: gofon/phoneaccount/class_phoneAccount.inc:958 +#: gofon/phoneaccount/class_phoneAccount.inc:1077 +#: gofon/phoneaccount/class_phoneAccount.inc:1350 +#: gofon/phoneaccount/class_phoneAccount.inc:1422 +#: gofon/phoneaccount/class_phoneAccount.inc:1432 +#: gofon/phoneaccount/class_phoneAccount.inc:1466 +#: gofon/conference/class_phoneConferenceGeneric.inc:260 +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "Error" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:838 +#: admin/ogroups/gofon/class_phonequeue.inc:893 +#: admin/systems/services/gofon/class_goFonServer.inc:146 +#: admin/systems/gofon/class_phoneGeneric.inc:282 +#: admin/systems/gofon/class_phoneGeneric.inc:428 +#: admin/systems/gofon/class_phoneGeneric.inc:442 +#: admin/systems/gofon/class_phoneGeneric.inc:459 +#: gofon/macro/class_gofonMacroParameters.inc:401 +#: gofon/macro/class_gofonMacro.inc:479 gofon/macro/class_gofonMacro.inc:490 +#: gofon/macro/class_gofonMacro.inc:526 +#: gofon/phoneaccount/class_phoneAccount.inc:1377 +#: gofon/phoneaccount/class_phoneAccount.inc:1513 +#: gofon/conference/class_phoneConferenceGeneric.inc:718 +msgid "LDAP error" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:901 +#: gofon/conference/generic.tpl:120 gofon/conference/paste_generic.tpl:15 +msgid "Phone number" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:918 +#: gofon/phoneaccount/class_phoneAccount.inc:6 +#: gofon/phoneaccount/class_phoneAccount.inc:911 +#: gofon/phoneaccount/class_phoneAccount.inc:924 +#: gofon/phoneaccount/class_phoneAccount.inc:936 +#: gofon/phoneaccount/class_phoneAccount.inc:940 +#: gofon/phoneaccount/class_phoneAccount.inc:943 +#: gofon/phoneaccount/class_phoneAccount.inc:1597 +msgid "Phone" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:919 +msgid "Phone group" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:938 +msgid "Welcome music" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:939 +msgid "Report hold time" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:940 +msgid "'You are next' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:941 +msgid "'There are' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:942 +msgid "'Call waiting' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:943 +msgid "'Thank you' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:944 +msgid "'Minutes' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:945 +msgid "'Seconds' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:946 +msgid "'Less than' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:947 +msgid "Queue phone number" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:949 +msgid "Method" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:951 +msgid "Announce" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:1 +msgid "VoIP database information" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:4 +msgid "Asterisk DB user" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:12 +#: admin/systems/services/gofon/class_goFonServer.inc:77 +#: admin/systems/services/gofon/class_goFonServer.inc:179 +msgid "Password" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:20 +msgid "Country dial prefix" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:28 +#: admin/systems/services/gofon/class_goFonServer.inc:80 +msgid "Local dial prefix" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:34 +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#: admin/systems/services/gofon/class_goFonServer.inc:165 +msgid "VoIP service" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:65 +msgid "Asterisk management" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:74 +msgid "User" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:83 +msgid "Country prefix" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:120 +#, php-format +msgid "" +"You can't remove the asterisk database extension, it is still in use by " +"these objects '%s'." +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "VoIP - asterisk management" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "Services" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:174 +msgid "Start" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:175 +msgid "Stop" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:176 +msgid "Restart" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:178 +msgid "Admin" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:180 +msgid "Area code" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:181 +msgid "Country code" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:1 +msgid "Advanced phone settings" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:6 +msgid "Phone type" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:8 +#: admin/systems/gofon/phonesettings.tpl:30 +#: admin/systems/gofon/phonesettings.tpl:42 +#: admin/systems/gofon/phonesettings.tpl:58 +#: admin/systems/gofon/phonesettings.tpl:91 +#: admin/systems/gofon/phonesettings.tpl:128 +#: admin/systems/gofon/phonesettings.tpl:181 +msgid "Choose a phone type" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:13 +msgid "refresh" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:25 +msgid "Mode" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:38 +msgid "DTMF mode" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:54 +#: admin/systems/gofon/phonesettings.tpl:99 +msgid "Default IP" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:66 +#: admin/systems/gofon/phonesettings.tpl:109 +msgid "Response timeout" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:87 +msgid "Modus" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:124 +msgid "Authtype" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:136 +msgid "Secret" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:146 +msgid "GoFonInkeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:154 +msgid "GoFonOutKeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:167 +msgid "Account code" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:177 +msgid "Trunk lines" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:194 +msgid "Hosts that are allowed to connect" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:197 +#: admin/systems/gofon/phonesettings.tpl:220 +msgid "List of alternative mail addresses" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:217 +msgid "Hosts that are not allowed to connect" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:247 +msgid "MSN" +msgstr "" + +#: admin/systems/gofon/paste_generic.tpl:3 admin/systems/gofon/phone.tpl:6 +msgid "Phone name" +msgstr "" + +#: admin/systems/gofon/phone.tpl:17 +#: admin/systems/gofon/class_phoneGeneric.inc:517 +#: gofon/macro/class_gofonMacro.inc:573 gofon/macro/class_divListMacros.inc:79 +#: gofon/macro/generic.tpl:27 gofon/conference/generic.tpl:49 +#: gofon/conference/class_phoneConferenceGeneric.inc:776 +#: gofon/conference/class_divListConferences.inc:83 +msgid "Base" +msgstr "" + +#: admin/systems/gofon/phone.tpl:20 gofon/macro/generic.tpl:30 +msgid "Choose subtree to place group in" +msgstr "" + +#: admin/systems/gofon/phone.tpl:25 gofon/macro/generic.tpl:36 +#: gofon/conference/generic.tpl:56 gofon/conference/generic.tpl:62 +msgid "Select a base" +msgstr "" + +#: admin/systems/gofon/phone.tpl:34 +#: admin/systems/gofon/class_phoneGeneric.inc:518 +#: gofon/macro/class_gofonMacro.inc:574 gofon/macro/generic.tpl:49 +#: gofon/conference/generic.tpl:98 +#: gofon/conference/class_phoneConferenceGeneric.inc:777 +msgid "Description" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:124 +msgid "phone" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:121 +msgid "yes" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:122 +msgid "no" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "dynamic" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "Networksettings" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 +#, php-format +msgid "Cannot delete entry because it is still in use by '%s'!" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:331 +#: admin/systems/gofon/class_phoneGeneric.inc:334 +msgid "IP address" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:340 +#: admin/systems/gofon/class_phoneGeneric.inc:344 +#: admin/systems/gofon/class_phoneGeneric.inc:347 +#: admin/systems/gofon/class_phoneGeneric.inc:362 +#: admin/systems/gofon/class_phoneGeneric.inc:516 +#: gofon/macro/class_gofonMacro.inc:406 gofon/macro/class_gofonMacro.inc:412 +#: gofon/macro/class_divListMacros.inc:56 gofon/macro/parameter.tpl:6 +#: gofon/conference/class_phoneConferenceGeneric.inc:388 +#: gofon/conference/class_phoneConferenceGeneric.inc:410 +#: gofon/conference/class_phoneConferenceGeneric.inc:775 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Name" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:507 +#: gofon/macro/class_gofonMacro.inc:562 +msgid "Generic" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:508 +msgid "Phone generic" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:513 +#: gofon/phoneaccount/class_phoneAccount.inc:1611 +msgid "Phone hardware" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:519 +msgid "SIP Mode" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:520 +msgid "SIP DTMF mode" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:521 +msgid "SIP Default ip" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:522 +msgid "SIP Qualify" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:523 +msgid "IAX authentication type" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:524 +msgid "IAX secret" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:525 +msgid "IAX account code" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:526 +msgid "IAX trunk lines" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:527 +msgid "IAX permit settings" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:528 +msgid "IAX deny settings" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:529 +msgid "CAPI MSN" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:530 +msgid "Hardware type" +msgstr "" + +#: gofon/macro/headpage.tpl:6 gofon/macro/class_divListMacros.inc:31 +#: gofon/macro/class_divListMacros.inc:32 +msgid "List of macros" +msgstr "" + +#: gofon/macro/headpage.tpl:20 gofon/macro/class_gofonMacroParameters.inc:374 +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#: gofon/conference/headpage.tpl:20 +msgid "Information" +msgstr "" + +#: gofon/macro/headpage.tpl:24 +msgid "" +"This menu allows you to add, edit and remove selected macros. You may want " +"to use the range selector on top of the macro listbox, when working with a " +"large number of macros." +msgstr "" + +#: gofon/macro/headpage.tpl:29 gofon/conference/headpage.tpl:29 +msgid "Filters" +msgstr "" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "" + +#: gofon/macro/headpage.tpl:41 gofon/macro/class_divListMacros.inc:64 +msgid "Regular expression for matching macro names" +msgstr "" + +#: gofon/macro/remove.tpl:2 gofon/conference/remove.tpl:2 +msgid "Warning" +msgstr "" + +#: gofon/macro/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: gofon/macro/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:200 +#: gofon/phoneaccount/generic.tpl:125 gofon/phoneaccount/generic.tpl:127 +msgid "Phone macro" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:256 +msgid "String" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:257 +msgid "Combobox" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:258 +msgid "Bool" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:264 +msgid "Delete unused" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:340 +#, php-format +msgid "Parameter %s contains invalid character. '!,#' is used as delimiter!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:345 +#, php-format +msgid "Parameter %s is invalid!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:374 +msgid "" +"Number of parameters for this macro has changed. Please update all users " +"using it!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:300 +#, php-format +msgid "Application missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:304 +#, php-format +msgid "Extension missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:416 +msgid "Name can be 20 characters at maximum!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:425 +msgid "Macro is still in use!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:432 +msgid "Macro is empty!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:371 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/phoneaccount/class_phoneAccount.inc:1471 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:169 +msgid "Configuration error" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:563 +msgid "Asterisk macro management" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:568 +msgid "GOfon macro" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:572 gofon/macro/generic.tpl:6 +#: gofon/macro/generic.tpl:9 gofon/macro/paste_generic.tpl:4 +#: gofon/macro/paste_generic.tpl:6 +msgid "Macro name" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:575 gofon/macro/generic.tpl:14 +msgid "Display name" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:576 +msgid "Macro content and parameter" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:577 +msgid "Visibility flag" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:50 +#: gofon/conference/class_divListConferences.inc:50 +msgid "Select all" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:56 +msgid "Department" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:57 +msgid "Visible" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:58 +#: gofon/macro/class_divListMacros.inc:84 +#: gofon/conference/class_divListConferences.inc:59 +#: gofon/conference/class_divListConferences.inc:88 +msgid "Actions" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit department" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:89 +#: gofon/conference/class_divListConferences.inc:93 +msgid "Create" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:91 +#: gofon/macro/class_divListMacros.inc:120 +msgid "Macro" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:97 +#: gofon/conference/class_divListConferences.inc:101 +msgid "Remove" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:121 +msgid "visible" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:122 +msgid "invisible" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:146 +#: gofon/conference/class_divListConferences.inc:150 +msgid "edit" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:147 +msgid "Edit macro" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:153 +#: gofon/conference/class_divListConferences.inc:158 +msgid "delete" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:154 +msgid "Delete macro" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:202 +#: gofon/macro/class_divListMacros.inc:203 +#, php-format +msgid "Number of listed %s" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:202 +msgid "macros" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:203 +#: gofon/conference/class_divListConferences.inc:226 +msgid "departments" +msgstr "" + +#: gofon/macro/generic.tpl:18 +msgid "Macro name to be displayed" +msgstr "" + +#: gofon/macro/generic.tpl:60 +msgid "Visible for user" +msgstr "" + +#: gofon/macro/generic.tpl:70 +msgid "Macro text" +msgstr "" + +#: gofon/macro/class_gofonMacroManagement.inc:24 +msgid "Phone macros" +msgstr "" + +#: gofon/macro/class_gofonMacroManagement.inc:25 +#: gofon/phoneaccount/class_phoneAccount.inc:7 +#: gofon/fonreports/class_fonreport.inc:7 +msgid "This does something" +msgstr "" + +#: gofon/macro/class_gofonMacroManagement.inc:273 +#: gofon/conference/class_phoneConferenceManagment.inc:187 +msgid "Permission" +msgstr "" + +#: gofon/macro/class_gofonMacroManagement.inc:320 +#: gofon/macro/class_gofonMacroManagement.inc:373 +#: gofon/macro/class_gofonMacroManagement.inc:397 +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +msgid "Permission error" +msgstr "" + +#: gofon/macro/class_gofonMacroManagement.inc:366 +msgid "macro" +msgstr "" + +#: gofon/macro/main.inc:51 gofon/macro/main.inc:55 +msgid "Phone macro management" +msgstr "" + +#: gofon/macro/parameter.tpl:4 +msgid "Argument" +msgstr "" + +#: gofon/macro/parameter.tpl:8 +msgid "type" +msgstr "" + +#: gofon/macro/parameter.tpl:10 +msgid "Default value" +msgstr "" + +#: gofon/macro/parameter.tpl:19 +msgid "You are not allowed to view the macro parameter settings" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:42 gofon/phoneaccount/paste_generic.tpl:27 +msgid "Telephone hardware" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:44 gofon/phoneaccount/generic.tpl:48 +#: gofon/phoneaccount/paste_generic.tpl:29 +msgid "Telephone" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:62 +msgid "Select the accounts home server" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:69 +msgid "Context" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:73 gofon/phoneaccount/generic.tpl:84 +msgid "Select the accounts context" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:80 +msgid "Voicemail context" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:93 gofon/phoneaccount/paste_generic.tpl:32 +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#: gofon/phoneaccount/class_phoneAccount.inc:1280 +msgid "Voicemail PIN" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:103 gofon/phoneaccount/paste_generic.tpl:40 +#: gofon/phoneaccount/class_phoneAccount.inc:1285 +msgid "Phone PIN" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:138 +msgid "Refresh" +msgstr "" + +#: gofon/phoneaccount/paste_generic.tpl:1 gofon/phoneaccount/main.inc:133 +msgid "Phone settings" +msgstr "" + +#: gofon/phoneaccount/main.inc:123 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:172 +msgid "automatic" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:208 +msgid "no macro" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:236 +msgid "undefined" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:489 +#: gofon/phoneaccount/class_phoneAccount.inc:496 +#: gofon/phoneaccount/class_phoneAccount.inc:514 +#: gofon/phoneaccount/class_phoneAccount.inc:521 +msgid "Abort saving entries to keep the database consistent." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:935 +msgid "Remove phone account" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:939 +#: gofon/phoneaccount/class_phoneAccount.inc:942 +msgid "Create phone account" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:940 +msgid "User uid" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:958 +msgid "Selected macro is not available anymore!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:982 +msgid "Parameter" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1126 +msgid "Choose your private phone" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1269 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone account." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +msgid "Between 1-4 charactes" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1303 +#, php-format +msgid "macro parameter %s" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#, php-format +msgid "User '%s' has been removed from phone queue '%s'." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1541 +#: gofon/phoneaccount/class_phoneAccount.inc:1543 +#, php-format +msgid "The specified telephonenumber '%s' is already assigned to '%s'." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1589 +#, php-format +msgid "" +"The previously selected asterisk home server (%s) is no longer available. " +"Remove aborted." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1598 +msgid "Phone account settings" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1602 +msgid "My account" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1609 +#: gofon/conference/class_phoneConferenceGeneric.inc:793 +msgid "Telephone number" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1610 +msgid "Macro settings" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1613 +msgid "Phone context" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1614 +msgid "Voice mail context" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1615 +msgid "Telephone pin" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1616 +msgid "Voicemail pin" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1698 +msgid "There is currently no asterisk server defined!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1702 +msgid "Asterisk server is invalid!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1708 +msgid "Voicemail PIN must be 4 characters long!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1711 +msgid "Voicemail PIN contains invalid characters!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1716 +msgid "Phone pin contains invalid characters!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1723 +#, php-format +msgid "The parameter %s contains invalid char. '!,#' is used as delimiter" +msgstr "" + +#: gofon/conference/headpage.tpl:6 +#: gofon/conference/class_divListConferences.inc:31 +#: gofon/conference/class_divListConferences.inc:32 +msgid "List of conference rooms" +msgstr "" + +#: gofon/conference/headpage.tpl:24 +msgid "" +"This menu allows you to create, delete and edit selected phone conferences. " +"Having a large number of phone conferences, you might prefer the range " +"selectors on top of the conferences list." +msgstr "" + +#: gofon/conference/headpage.tpl:35 +msgid "Display users matching" +msgstr "" + +#: gofon/conference/headpage.tpl:36 +msgid "Regular expression for matching user names" +msgstr "" + +#: gofon/conference/remove.tpl:6 +msgid "" +"This includes 'all' accounts, systems, etc. in this subtree. Please double " +"check if your really want to do this since there is no way for GOsa to get " +"your data back." +msgstr "" + +#: gofon/conference/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: gofon/conference/class_phoneConferenceManagment.inc:24 +msgid "Phone conferences" +msgstr "" + +#: gofon/conference/class_phoneConferenceManagment.inc:25 +msgid "Management" +msgstr "" + +#: gofon/conference/class_phoneConferenceManagment.inc:206 +#: gofon/conference/class_phoneConferenceManagment.inc:267 +msgid "conference" +msgstr "" + +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +msgid "You have not permission to delete this entry!" +msgstr "" + +#: gofon/conference/generic.tpl:5 +msgid "Properties" +msgstr "" + +#: gofon/conference/generic.tpl:15 gofon/conference/paste_generic.tpl:5 +msgid "Conference name" +msgstr "" + +#: gofon/conference/generic.tpl:21 gofon/conference/paste_generic.tpl:10 +msgid "Name of conference to create" +msgstr "" + +#: gofon/conference/generic.tpl:28 +msgid "Type" +msgstr "" + +#: gofon/conference/generic.tpl:35 +msgid "Choose subtree to place conference in" +msgstr "" + +#: gofon/conference/generic.tpl:82 +msgid "Select language" +msgstr "" + +#: gofon/conference/generic.tpl:104 +msgid "Descriptive text for department" +msgstr "" + +#: gofon/conference/generic.tpl:110 +msgid "Lifetime (in days)" +msgstr "" + +#: gofon/conference/generic.tpl:157 +#: gofon/conference/class_phoneConferenceGeneric.inc:783 +msgid "Preset PIN" +msgstr "" + +#: gofon/conference/generic.tpl:165 +#: gofon/conference/class_phoneConferenceGeneric.inc:384 +#: gofon/conference/class_divListConferences.inc:58 +msgid "PIN" +msgstr "" + +#: gofon/conference/generic.tpl:177 +#: gofon/conference/class_phoneConferenceGeneric.inc:784 +msgid "Record conference" +msgstr "" + +#: gofon/conference/generic.tpl:185 +msgid "Sound file format" +msgstr "" + +#: gofon/conference/generic.tpl:188 +msgid "Choose subtree to place department in" +msgstr "" + +#: gofon/conference/generic.tpl:208 +#: gofon/conference/class_phoneConferenceGeneric.inc:785 +msgid "Play music on hold" +msgstr "" + +#: gofon/conference/generic.tpl:216 +msgid "Activate session menu" +msgstr "" + +#: gofon/conference/generic.tpl:224 +msgid "Announce users joining or leaving the conference" +msgstr "" + +#: gofon/conference/generic.tpl:232 +msgid "Count users" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#, php-format +msgid "Cannot delete entry from server '%s' because it seems to be removed!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:379 +#, php-format +msgid "" +"The previously selected asterisk home server '%s' is no longer available!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:396 +#: gofon/conference/class_phoneConferenceGeneric.inc:792 +msgid "Lifetime" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:641 +#: gofon/conference/class_phoneConferenceGeneric.inc:643 +#, php-format +msgid "'%s' is already assigned to '%s'!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:765 +#: gofon/conference/class_divListConferences.inc:95 +#: gofon/conference/class_divListConferences.inc:208 +msgid "Conference" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:766 +msgid "Phone conference management" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:771 +msgid "GOfon conference" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:778 +msgid "Conference PIN" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:786 +msgid "Activate menu" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:787 +msgid "Announce user activity" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:788 +msgid "Count user" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:789 +msgid "Conference type" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:791 +msgid "Format" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:794 +#: gofon/conference/class_divListConferences.inc:57 +msgid "Owner" +msgstr "" + +#: gofon/conference/main.inc:48 gofon/conference/main.inc:50 +msgid "Conference management" +msgstr "" + +#: gofon/conference/class_divListConferences.inc:65 +msgid "Regular expression for matching conference names" +msgstr "" + +#: gofon/conference/class_divListConferences.inc:150 +msgid "Edit this entry" +msgstr "" + +#: gofon/conference/class_divListConferences.inc:158 +msgid "Delete this entry" +msgstr "" + +#: gofon/conference/class_divListConferences.inc:185 +msgid "Unknown" +msgstr "" + +#: gofon/conference/class_divListConferences.inc:225 +#: gofon/conference/class_divListConferences.inc:226 +#, php-format +msgid "Number of listed '%s'" +msgstr "" + +#: gofon/conference/class_divListConferences.inc:225 +msgid "conferences" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:6 +msgid "Phone Reports" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:210 +msgid "Insufficient permissions" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:229 +msgid "Y-M-D" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:396 +#: gofon/fonreports/class_fonreport.inc:397 +#: gofon/fonreports/class_fonreport.inc:404 gofon/fonreports/main.inc:22 +msgid "Phone reports" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:397 +msgid "All entries are readonly" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:409 gofon/fonreports/contents.tpl:30 +msgid "Date" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:410 gofon/fonreports/contents.tpl:31 +msgid "Source" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:411 gofon/fonreports/contents.tpl:32 +msgid "Destination" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:412 gofon/fonreports/contents.tpl:33 +msgid "Channel" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:413 +msgid "Application called" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:414 +msgid "Disposition" +msgstr "" + +#: gofon/fonreports/class_fonreport.inc:415 gofon/fonreports/contents.tpl:36 +msgid "Duration" +msgstr "" + +#: gofon/fonreports/contents.tpl:2 +msgid "Filter" +msgstr "" + +#: gofon/fonreports/contents.tpl:6 +msgid "Search for" +msgstr "" + +#: gofon/fonreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "" + +#: gofon/fonreports/contents.tpl:8 gofon/fonreports/contents.tpl:16 +msgid "in" +msgstr "" + +#: gofon/fonreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "" + +#: gofon/fonreports/contents.tpl:12 +msgid "during" +msgstr "" + +#: gofon/fonreports/contents.tpl:21 +msgid "Search" +msgstr "" + +#: gofon/fonreports/contents.tpl:34 +msgid "Application" +msgstr "" + +#: gofon/fonreports/contents.tpl:35 +msgid "Status" +msgstr "" + +#: gofon/fonreports/contents.tpl:51 +msgid "Search returned no results..." +msgstr "" diff --git a/trunk/gosa-plugins/gofon/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofon/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..792c8da7b --- /dev/null +++ b/trunk/gosa-plugins/gofon/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,2096 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/ogroups/gofon/phonequeue.tpl:2 +msgid "" +"Only users with the same asterisk home server will be included to this queue." +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:5 +msgid "Queue Settings" +msgstr "Wachtrij instellingen" + +#: admin/ogroups/gofon/phonequeue.tpl:8 gofon/phoneaccount/generic.tpl:1 +#: gofon/phoneaccount/generic.tpl:6 gofon/phoneaccount/paste_generic.tpl:2 +#: gofon/phoneaccount/paste_generic.tpl:6 +msgid "Phone numbers" +msgstr "Telefoonnummers" + +#: admin/ogroups/gofon/phonequeue.tpl:12 +#: admin/ogroups/gofon/phonequeue.tpl:135 +msgid "Generic queue Settings" +msgstr "Algemene wachtrij instellingen" + +#: admin/ogroups/gofon/phonequeue.tpl:24 +msgid "Up" +msgstr "Omhoog" + +#: admin/ogroups/gofon/phonequeue.tpl:27 +msgid "Down" +msgstr "Omlaag" + +#: admin/ogroups/gofon/phonequeue.tpl:47 gofon/conference/generic.tpl:141 +msgid "Options" +msgstr "Opties" + +#: admin/ogroups/gofon/phonequeue.tpl:50 +#: admin/ogroups/gofon/class_phonequeue.inc:305 +#: admin/ogroups/gofon/class_phonequeue.inc:929 +#: gofon/phoneaccount/generic.tpl:58 +#: gofon/phoneaccount/class_phoneAccount.inc:1273 +#: gofon/phoneaccount/class_phoneAccount.inc:1612 +#: gofon/conference/generic.tpl:68 +#: gofon/conference/class_phoneConferenceGeneric.inc:782 +#, fuzzy +msgid "Home server" +msgstr "Tijd Service" + +#: admin/ogroups/gofon/phonequeue.tpl:62 +#: admin/ogroups/gofon/class_phonequeue.inc:948 +#: gofon/conference/generic.tpl:78 +#: gofon/conference/class_phoneConferenceGeneric.inc:780 +msgid "Language" +msgstr "Taal" + +#: admin/ogroups/gofon/phonequeue.tpl:75 +#: admin/ogroups/gofon/class_phonequeue.inc:311 +#: admin/ogroups/gofon/class_phonequeue.inc:927 +msgid "Timeout" +msgstr "Timeout" + +#: admin/ogroups/gofon/phonequeue.tpl:85 +#: admin/ogroups/gofon/class_phonequeue.inc:314 +#: admin/ogroups/gofon/class_phonequeue.inc:952 +msgid "Retry" +msgstr "Opnieuw proberen" + +#: admin/ogroups/gofon/phonequeue.tpl:95 +msgid "Strategy" +msgstr "Strategie" + +#: admin/ogroups/gofon/phonequeue.tpl:109 +#: admin/ogroups/gofon/class_phonequeue.inc:928 +msgid "Max queue length" +msgstr "Maximale wachtrij lengte" + +#: admin/ogroups/gofon/phonequeue.tpl:119 +#: admin/ogroups/gofon/class_phonequeue.inc:320 +#: admin/ogroups/gofon/class_phonequeue.inc:930 +msgid "Announce frequency" +msgstr "Aankondigingsfrequentie" + +#: admin/ogroups/gofon/phonequeue.tpl:125 +msgid "(in seconds)" +msgstr "(in seconden)" + +#: admin/ogroups/gofon/phonequeue.tpl:133 +msgid "Queue sound setup" +msgstr "Wachtrij geluidsinstellingen" + +#: admin/ogroups/gofon/phonequeue.tpl:138 +msgid "Use music on hold instead of ringing" +msgstr "Gebruik wachtstand muziek i.p.v. rinkelen" + +#: admin/ogroups/gofon/phonequeue.tpl:149 +#: admin/ogroups/gofon/class_phonequeue.inc:937 +msgid "Music on hold" +msgstr "Wachtstand muziek" + +#: admin/ogroups/gofon/phonequeue.tpl:159 +msgid "Welcome sound file" +msgstr "Welkomst geluidsbestand" + +#: admin/ogroups/gofon/phonequeue.tpl:169 +msgid "Announce message" +msgstr "Aankondigings bericht" + +#: admin/ogroups/gofon/phonequeue.tpl:179 +msgid "Sound file for 'You are next ...'" +msgstr "Geluidsbestand voor 'U bent de volgende ...'" + +#: admin/ogroups/gofon/phonequeue.tpl:189 +msgid "'There are ...'" +msgstr "'Er zijn ...'" + +#: admin/ogroups/gofon/phonequeue.tpl:199 +msgid "'... calls waiting'" +msgstr "'...oproepen wachtend'" + +#: admin/ogroups/gofon/phonequeue.tpl:209 +msgid "'Thank you' message" +msgstr "'Dank U' bericht" + +#: admin/ogroups/gofon/phonequeue.tpl:219 +msgid "'minutes' sound file" +msgstr "'minuten' geluidsbestand" + +#: admin/ogroups/gofon/phonequeue.tpl:229 +msgid "'seconds' sound file" +msgstr "'seconden' geluidsbestand" + +#: admin/ogroups/gofon/phonequeue.tpl:239 +msgid "Hold sound file" +msgstr "Wachtstand geluidsbestand" + +#: admin/ogroups/gofon/phonequeue.tpl:249 +msgid "Less Than sound file" +msgstr "Minder Dan geluidsbestand" + +#: admin/ogroups/gofon/phonequeue.tpl:267 +msgid "Phone attributes " +msgstr "Telefoon attributen " + +#: admin/ogroups/gofon/phonequeue.tpl:277 +#: admin/ogroups/gofon/class_phonequeue.inc:950 +msgid "Announce holdtime" +msgstr "Aankondigings wachttijd" + +#: admin/ogroups/gofon/phonequeue.tpl:285 +#: admin/ogroups/gofon/class_phonequeue.inc:931 +msgid "Allow the called user to transfer his call" +msgstr "Sta de gebelde gebruiker toe het gesprek over te zetten" + +#: admin/ogroups/gofon/phonequeue.tpl:293 +#: admin/ogroups/gofon/class_phonequeue.inc:932 +msgid "Allows calling user to transfer call" +msgstr "Sta de bellende gebruiker toe het gesprek over te zetten" + +#: admin/ogroups/gofon/phonequeue.tpl:305 +#: admin/ogroups/gofon/class_phonequeue.inc:933 +msgid "Allow the called to hangup by pressing *" +msgstr "Sta de gebelde gebruiker toe op te hangen door * in te drukken" + +#: admin/ogroups/gofon/phonequeue.tpl:313 +#: admin/ogroups/gofon/class_phonequeue.inc:935 +msgid "Allows calling to hangup by pressing *" +msgstr "Sta de bellende gebruiker toe op te hangen door * in te drukken" + +#: admin/ogroups/gofon/phonequeue.tpl:321 +#: admin/ogroups/gofon/class_phonequeue.inc:934 +msgid "Ring instead of playing background music" +msgstr "Rinkel i.p.v. achtergrond muziek afspelen" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, fuzzy +msgid "Obsolete entry" +msgstr "Verwijder deze invoer" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, php-format +msgid "" +"The current home server is not available anymore. It will be moved to '%s' " +"if you save this entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:121 +msgid "ring all" +msgstr "rinkel allemaal" + +#: admin/ogroups/gofon/class_phonequeue.inc:122 +msgid "round robin" +msgstr "om en om" + +#: admin/ogroups/gofon/class_phonequeue.inc:123 +msgid "least recently called" +msgstr "minst recent gebelde" + +#: admin/ogroups/gofon/class_phonequeue.inc:124 +msgid "fewest completed calls" +msgstr "minst afgeronde gesprekken" + +#: admin/ogroups/gofon/class_phonequeue.inc:125 +msgid "random" +msgstr "willekeurig" + +#: admin/ogroups/gofon/class_phonequeue.inc:126 +msgid "round robin with memory" +msgstr "om en om met geheugen" + +#: admin/ogroups/gofon/class_phonequeue.inc:210 +msgid "Remove the phone queue from this Account" +msgstr "Verwijder telefoonwachtrij van dit account" + +#: admin/ogroups/gofon/class_phonequeue.inc:211 +#: admin/ogroups/gofon/class_phonequeue.inc:214 +#, fuzzy +msgid "phone queue" +msgstr "Telefoonwachtrij aanmaken" + +#: admin/ogroups/gofon/class_phonequeue.inc:213 +msgid "Create phone queue" +msgstr "Telefoonwachtrij aanmaken" + +#: admin/ogroups/gofon/class_phonequeue.inc:302 +#, fuzzy +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone queue." +msgstr "Er moet tenminste een NTP server geselecteerd zijn." + +#: admin/ogroups/gofon/class_phonequeue.inc:317 +#, fuzzy +msgid "Queue length" +msgstr "Maximale wachtrij lengte" + +#: admin/ogroups/gofon/class_phonequeue.inc:323 +#: gofon/conference/class_phoneConferenceGeneric.inc:392 +#: gofon/conference/class_divListConferences.inc:56 +#, fuzzy +msgid "Number" +msgstr "Naam - nummer" + +#: admin/ogroups/gofon/class_phonequeue.inc:346 +#: admin/ogroups/gofon/class_phonequeue.inc:394 +#, fuzzy +msgid "asterisk" +msgstr "Plakken" + +#: admin/ogroups/gofon/class_phonequeue.inc:378 +#: admin/ogroups/gofon/class_phonequeue.inc:732 +#: gofon/macro/class_gofonMacro.inc:392 gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/conference/class_phoneConferenceGeneric.inc:430 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +#, fuzzy +msgid "GOfon" +msgstr "geen macro" + +#: admin/ogroups/gofon/class_phonequeue.inc:437 +msgid "Cannot find old queue entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:523 +#, php-format +msgid "" +"Found more than one entry named '%s' in queue table. Please inform your " +"system administrator!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:764 +#: admin/ogroups/gofon/class_phonequeue.inc:766 +#, fuzzy +msgid "telephone number" +msgstr "Telefoonnummer" + +#: admin/ogroups/gofon/class_phonequeue.inc:823 +#: admin/ogroups/gofon/class_phonequeue.inc:865 +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 gofon/macro/class_gofonMacro.inc:467 +#: gofon/macro/class_gofonMacro.inc:505 +#: gofon/phoneaccount/class_phoneAccount.inc:958 +#: gofon/phoneaccount/class_phoneAccount.inc:1077 +#: gofon/phoneaccount/class_phoneAccount.inc:1350 +#: gofon/phoneaccount/class_phoneAccount.inc:1422 +#: gofon/phoneaccount/class_phoneAccount.inc:1432 +#: gofon/phoneaccount/class_phoneAccount.inc:1466 +#: gofon/conference/class_phoneConferenceGeneric.inc:260 +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "Error" +msgstr "Fout" + +#: admin/ogroups/gofon/class_phonequeue.inc:838 +#: admin/ogroups/gofon/class_phonequeue.inc:893 +#: admin/systems/services/gofon/class_goFonServer.inc:146 +#: admin/systems/gofon/class_phoneGeneric.inc:282 +#: admin/systems/gofon/class_phoneGeneric.inc:428 +#: admin/systems/gofon/class_phoneGeneric.inc:442 +#: admin/systems/gofon/class_phoneGeneric.inc:459 +#: gofon/macro/class_gofonMacroParameters.inc:401 +#: gofon/macro/class_gofonMacro.inc:479 gofon/macro/class_gofonMacro.inc:490 +#: gofon/macro/class_gofonMacro.inc:526 +#: gofon/phoneaccount/class_phoneAccount.inc:1377 +#: gofon/phoneaccount/class_phoneAccount.inc:1513 +#: gofon/conference/class_phoneConferenceGeneric.inc:718 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: admin/ogroups/gofon/class_phonequeue.inc:901 +#: gofon/conference/generic.tpl:120 gofon/conference/paste_generic.tpl:15 +msgid "Phone number" +msgstr "Telefoonnummer" + +#: admin/ogroups/gofon/class_phonequeue.inc:918 +#: gofon/phoneaccount/class_phoneAccount.inc:6 +#: gofon/phoneaccount/class_phoneAccount.inc:911 +#: gofon/phoneaccount/class_phoneAccount.inc:924 +#: gofon/phoneaccount/class_phoneAccount.inc:936 +#: gofon/phoneaccount/class_phoneAccount.inc:940 +#: gofon/phoneaccount/class_phoneAccount.inc:943 +#: gofon/phoneaccount/class_phoneAccount.inc:1597 +msgid "Phone" +msgstr "Telefoon" + +#: admin/ogroups/gofon/class_phonequeue.inc:919 +#, fuzzy +msgid "Phone group" +msgstr "Leden zitten in een telefoon beantwoordgroep" + +#: admin/ogroups/gofon/class_phonequeue.inc:938 +#, fuzzy +msgid "Welcome music" +msgstr "Welkom %s!" + +#: admin/ogroups/gofon/class_phonequeue.inc:939 +#, fuzzy +msgid "Report hold time" +msgstr "Aankondigings wachttijd" + +#: admin/ogroups/gofon/class_phonequeue.inc:940 +msgid "'You are next' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:941 +#, fuzzy +msgid "'There are' sound" +msgstr "'Er zijn ...'" + +#: admin/ogroups/gofon/class_phonequeue.inc:942 +#, fuzzy +msgid "'Call waiting' sound" +msgstr "'...oproepen wachtend'" + +#: admin/ogroups/gofon/class_phonequeue.inc:943 +#, fuzzy +msgid "'Thank you' sound" +msgstr "'Dank U' bericht" + +#: admin/ogroups/gofon/class_phonequeue.inc:944 +#, fuzzy +msgid "'Minutes' sound" +msgstr "'minuten' geluidsbestand" + +#: admin/ogroups/gofon/class_phonequeue.inc:945 +#, fuzzy +msgid "'Seconds' sound" +msgstr "'seconden' geluidsbestand" + +#: admin/ogroups/gofon/class_phonequeue.inc:946 +#, fuzzy +msgid "'Less than' sound" +msgstr "Minder Dan geluidsbestand" + +#: admin/ogroups/gofon/class_phonequeue.inc:947 +#, fuzzy +msgid "Queue phone number" +msgstr "Telefoonnummer" + +#: admin/ogroups/gofon/class_phonequeue.inc:949 +#, fuzzy +msgid "Method" +msgstr "methode" + +#: admin/ogroups/gofon/class_phonequeue.inc:951 +#, fuzzy +msgid "Announce" +msgstr "Aankondigings bericht" + +#: admin/systems/services/gofon/goFonServer.tpl:1 +#, fuzzy +msgid "VoIP database information" +msgstr "Informatie weergeven/verbergen" + +#: admin/systems/services/gofon/goFonServer.tpl:4 +msgid "Asterisk DB user" +msgstr "Asterisk DB gebruiker" + +#: admin/systems/services/gofon/goFonServer.tpl:12 +#: admin/systems/services/gofon/class_goFonServer.inc:77 +#: admin/systems/services/gofon/class_goFonServer.inc:179 +msgid "Password" +msgstr "Wachtwoord" + +#: admin/systems/services/gofon/goFonServer.tpl:20 +msgid "Country dial prefix" +msgstr "Internationale telefoon prefix" + +#: admin/systems/services/gofon/goFonServer.tpl:28 +#: admin/systems/services/gofon/class_goFonServer.inc:80 +msgid "Local dial prefix" +msgstr "Lokale telefoon prefix" + +#: admin/systems/services/gofon/class_goFonServer.inc:34 +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#: admin/systems/services/gofon/class_goFonServer.inc:165 +#, fuzzy +msgid "VoIP service" +msgstr "IMAP Service" + +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#, fuzzy +msgid "Asterisk management" +msgstr "Asterisk beheer" + +#: admin/systems/services/gofon/class_goFonServer.inc:74 +msgid "User" +msgstr "Gebruiker" + +#: admin/systems/services/gofon/class_goFonServer.inc:83 +#, fuzzy +msgid "Country prefix" +msgstr "Internationale telefoon prefix" + +#: admin/systems/services/gofon/class_goFonServer.inc:120 +#, fuzzy, php-format +msgid "" +"You can't remove the asterisk database extension, it is still in use by " +"these objects '%s'." +msgstr "" +"U kunt deze bijlage niet verwijderen, aangezien deze nog steeds in gebruik " +"is door deze systemen: '%s'" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +#, fuzzy +msgid "VoIP - asterisk management" +msgstr "Asterisk beheer" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/gofon/class_goFonServer.inc:174 +#, fuzzy +msgid "Start" +msgstr "Opstarten" + +#: admin/systems/services/gofon/class_goFonServer.inc:175 +msgid "Stop" +msgstr "Stop" + +#: admin/systems/services/gofon/class_goFonServer.inc:176 +#, fuzzy +msgid "Restart" +msgstr "Opnieuw proberen" + +#: admin/systems/services/gofon/class_goFonServer.inc:178 +#, fuzzy +msgid "Admin" +msgstr "Beheerders" + +#: admin/systems/services/gofon/class_goFonServer.inc:180 +#, fuzzy +msgid "Area code" +msgstr "SOA record" + +#: admin/systems/services/gofon/class_goFonServer.inc:181 +#, fuzzy +msgid "Country code" +msgstr "Account code" + +#: admin/systems/gofon/phonesettings.tpl:1 +msgid "Advanced phone settings" +msgstr "Geavanceerde telefoon instellingen" + +#: admin/systems/gofon/phonesettings.tpl:6 +msgid "Phone type" +msgstr "Telefoontype" + +#: admin/systems/gofon/phonesettings.tpl:8 +#: admin/systems/gofon/phonesettings.tpl:30 +#: admin/systems/gofon/phonesettings.tpl:42 +#: admin/systems/gofon/phonesettings.tpl:58 +#: admin/systems/gofon/phonesettings.tpl:91 +#: admin/systems/gofon/phonesettings.tpl:128 +#: admin/systems/gofon/phonesettings.tpl:181 +msgid "Choose a phone type" +msgstr "Kies een telefoontype" + +#: admin/systems/gofon/phonesettings.tpl:13 +msgid "refresh" +msgstr "ververs" + +#: admin/systems/gofon/phonesettings.tpl:25 +msgid "Mode" +msgstr "Modus" + +#: admin/systems/gofon/phonesettings.tpl:38 +msgid "DTMF mode" +msgstr "DTMF modus" + +#: admin/systems/gofon/phonesettings.tpl:54 +#: admin/systems/gofon/phonesettings.tpl:99 +msgid "Default IP" +msgstr "Standaard IP" + +#: admin/systems/gofon/phonesettings.tpl:66 +#: admin/systems/gofon/phonesettings.tpl:109 +msgid "Response timeout" +msgstr "Reageer timeout" + +#: admin/systems/gofon/phonesettings.tpl:87 +msgid "Modus" +msgstr "Modus" + +#: admin/systems/gofon/phonesettings.tpl:124 +msgid "Authtype" +msgstr "Authorisatietype" + +#: admin/systems/gofon/phonesettings.tpl:136 +msgid "Secret" +msgstr "Wachtwoord" + +#: admin/systems/gofon/phonesettings.tpl:146 +msgid "GoFonInkeys" +msgstr "GOFonInKeys" + +#: admin/systems/gofon/phonesettings.tpl:154 +msgid "GoFonOutKeys" +msgstr "GoFonOutKeys" + +#: admin/systems/gofon/phonesettings.tpl:167 +msgid "Account code" +msgstr "Account code" + +#: admin/systems/gofon/phonesettings.tpl:177 +msgid "Trunk lines" +msgstr "Trunk lijnen" + +#: admin/systems/gofon/phonesettings.tpl:194 +msgid "Hosts that are allowed to connect" +msgstr "Hosts die mogen verbinden" + +#: admin/systems/gofon/phonesettings.tpl:197 +#: admin/systems/gofon/phonesettings.tpl:220 +msgid "List of alternative mail addresses" +msgstr "Lijst met alternatieve E-mail adressen" + +#: admin/systems/gofon/phonesettings.tpl:217 +msgid "Hosts that are not allowed to connect" +msgstr "Hosts die niet mogen verbinden" + +#: admin/systems/gofon/phonesettings.tpl:247 +msgid "MSN" +msgstr "MSN" + +#: admin/systems/gofon/paste_generic.tpl:3 admin/systems/gofon/phone.tpl:6 +msgid "Phone name" +msgstr "Telefoonnaam" + +#: admin/systems/gofon/phone.tpl:17 +#: admin/systems/gofon/class_phoneGeneric.inc:517 +#: gofon/macro/class_gofonMacro.inc:573 gofon/macro/class_divListMacros.inc:79 +#: gofon/macro/generic.tpl:27 gofon/conference/generic.tpl:49 +#: gofon/conference/class_phoneConferenceGeneric.inc:776 +#: gofon/conference/class_divListConferences.inc:83 +msgid "Base" +msgstr "Basis" + +#: admin/systems/gofon/phone.tpl:20 gofon/macro/generic.tpl:30 +msgid "Choose subtree to place group in" +msgstr "Selecteer de subtree waaronder deze groep geplaatst wordt" + +#: admin/systems/gofon/phone.tpl:25 gofon/macro/generic.tpl:36 +#: gofon/conference/generic.tpl:56 gofon/conference/generic.tpl:62 +msgid "Select a base" +msgstr "Selecteer een basis" + +#: admin/systems/gofon/phone.tpl:34 +#: admin/systems/gofon/class_phoneGeneric.inc:518 +#: gofon/macro/class_gofonMacro.inc:574 gofon/macro/generic.tpl:49 +#: gofon/conference/generic.tpl:98 +#: gofon/conference/class_phoneConferenceGeneric.inc:777 +msgid "Description" +msgstr "Omschrijving" + +#: admin/systems/gofon/class_phoneGeneric.inc:124 +#, fuzzy +msgid "phone" +msgstr "Telefoon" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:121 +msgid "yes" +msgstr "ja" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:122 +msgid "no" +msgstr "nee" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "dynamic" +msgstr "dynamisch" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "Networksettings" +msgstr "Netwerk instellingen" + +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 +#, php-format +msgid "Cannot delete entry because it is still in use by '%s'!" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:331 +#: admin/systems/gofon/class_phoneGeneric.inc:334 +msgid "IP address" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:340 +#: admin/systems/gofon/class_phoneGeneric.inc:344 +#: admin/systems/gofon/class_phoneGeneric.inc:347 +#: admin/systems/gofon/class_phoneGeneric.inc:362 +#: admin/systems/gofon/class_phoneGeneric.inc:516 +#: gofon/macro/class_gofonMacro.inc:406 gofon/macro/class_gofonMacro.inc:412 +#: gofon/macro/class_divListMacros.inc:56 gofon/macro/parameter.tpl:6 +#: gofon/conference/class_phoneConferenceGeneric.inc:388 +#: gofon/conference/class_phoneConferenceGeneric.inc:410 +#: gofon/conference/class_phoneConferenceGeneric.inc:775 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Name" +msgstr "Naam" + +#: admin/systems/gofon/class_phoneGeneric.inc:507 +#: gofon/macro/class_gofonMacro.inc:562 +msgid "Generic" +msgstr "Algemeen" + +#: admin/systems/gofon/class_phoneGeneric.inc:508 +#, fuzzy +msgid "Phone generic" +msgstr "Telefoonnummer" + +#: admin/systems/gofon/class_phoneGeneric.inc:513 +#: gofon/phoneaccount/class_phoneAccount.inc:1611 +#, fuzzy +msgid "Phone hardware" +msgstr "Telefoon hardware" + +#: admin/systems/gofon/class_phoneGeneric.inc:519 +#, fuzzy +msgid "SIP Mode" +msgstr "Modus" + +#: admin/systems/gofon/class_phoneGeneric.inc:520 +#, fuzzy +msgid "SIP DTMF mode" +msgstr "DTMF modus" + +#: admin/systems/gofon/class_phoneGeneric.inc:521 +#, fuzzy +msgid "SIP Default ip" +msgstr "Standaard IP" + +#: admin/systems/gofon/class_phoneGeneric.inc:522 +msgid "SIP Qualify" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:523 +#, fuzzy +msgid "IAX authentication type" +msgstr "Nagios authenticatie" + +#: admin/systems/gofon/class_phoneGeneric.inc:524 +#, fuzzy +msgid "IAX secret" +msgstr "IMAP Service" + +#: admin/systems/gofon/class_phoneGeneric.inc:525 +#, fuzzy +msgid "IAX account code" +msgstr "Account code" + +#: admin/systems/gofon/class_phoneGeneric.inc:526 +#, fuzzy +msgid "IAX trunk lines" +msgstr "Trunk lijnen" + +#: admin/systems/gofon/class_phoneGeneric.inc:527 +#, fuzzy +msgid "IAX permit settings" +msgstr "Fax instellingen" + +#: admin/systems/gofon/class_phoneGeneric.inc:528 +#, fuzzy +msgid "IAX deny settings" +msgstr "Fax instellingen" + +#: admin/systems/gofon/class_phoneGeneric.inc:529 +msgid "CAPI MSN" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:530 +msgid "Hardware type" +msgstr "" + +#: gofon/macro/headpage.tpl:6 gofon/macro/class_divListMacros.inc:31 +#: gofon/macro/class_divListMacros.inc:32 +msgid "List of macros" +msgstr "Lijst met macro's" + +#: gofon/macro/headpage.tpl:20 gofon/macro/class_gofonMacroParameters.inc:374 +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#: gofon/conference/headpage.tpl:20 +msgid "Information" +msgstr "Informatie" + +#: gofon/macro/headpage.tpl:24 +msgid "" +"This menu allows you to add, edit and remove selected macros. You may want " +"to use the range selector on top of the macro listbox, when working with a " +"large number of macros." +msgstr "" +"Dit menu maakt het mogelijk om geselecteerde macro's toe te voegen, bewerken " +"of verwijderen. Indien u veel macro's heeft, dan is het aan te raden de " +"selectie mogelijkheden te gebruiken." + +#: gofon/macro/headpage.tpl:29 gofon/conference/headpage.tpl:29 +msgid "Filters" +msgstr "Filters" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "Toon overeenkomende macro's" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "Toon overeenkomende macro's" + +#: gofon/macro/headpage.tpl:41 gofon/macro/class_divListMacros.inc:64 +msgid "Regular expression for matching macro names" +msgstr "Reguliere expressie voor overeenkomende macronamen" + +#: gofon/macro/remove.tpl:2 gofon/conference/remove.tpl:2 +msgid "Warning" +msgstr "Waarschuwing" + +#: gofon/macro/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dit kan gebruikt worden door meerdere groepen. Verzeker uzelf ervan dat dit " +"is wat u wil, aangezien er geen mogelijkheid voor GOsa is om uw date terug " +"te halen." + +#: gofon/macro/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Indien u zeker bent drukt u dan 'Verwijderen' om door te gaan of 'Annuleren' " +"om te annuleren." + +#: gofon/macro/class_gofonMacroParameters.inc:200 +#: gofon/phoneaccount/generic.tpl:125 gofon/phoneaccount/generic.tpl:127 +msgid "Phone macro" +msgstr "Telefoon macro" + +#: gofon/macro/class_gofonMacroParameters.inc:256 +msgid "String" +msgstr "Tekstregel" + +#: gofon/macro/class_gofonMacroParameters.inc:257 +msgid "Combobox" +msgstr "Combobox" + +#: gofon/macro/class_gofonMacroParameters.inc:258 +msgid "Bool" +msgstr "Bool" + +#: gofon/macro/class_gofonMacroParameters.inc:264 +msgid "Delete unused" +msgstr "Verwijder ongebruikte" + +#: gofon/macro/class_gofonMacroParameters.inc:340 +#, fuzzy, php-format +msgid "Parameter %s contains invalid character. '!,#' is used as delimiter!" +msgstr "" +"De bevat '%s' bevat ongeldige karakters. '!,#' worden gebruikt als " +"scheidingstekens" + +#: gofon/macro/class_gofonMacroParameters.inc:345 +#, php-format +msgid "Parameter %s is invalid!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:374 +msgid "" +"Number of parameters for this macro has changed. Please update all users " +"using it!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:300 +#, fuzzy, php-format +msgid "Application missing in line %s!" +msgstr "Er is een dubbele invoer in '%s' voor '%s'" + +#: gofon/macro/class_gofonMacro.inc:304 +#, php-format +msgid "Extension missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:416 +msgid "Name can be 20 characters at maximum!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:425 +#, fuzzy +msgid "Macro is still in use!" +msgstr "E-mail instellingen" + +#: gofon/macro/class_gofonMacro.inc:432 +#, fuzzy +msgid "Macro is empty!" +msgstr "Macro tekst" + +#: gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:371 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/phoneaccount/class_phoneAccount.inc:1471 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:169 +#, fuzzy +msgid "Configuration error" +msgstr "Configuratie bestand" + +#: gofon/macro/class_gofonMacro.inc:563 +#, fuzzy +msgid "Asterisk macro management" +msgstr "Asterisk beheer" + +#: gofon/macro/class_gofonMacro.inc:568 +#, fuzzy +msgid "GOfon macro" +msgstr "geen macro" + +#: gofon/macro/class_gofonMacro.inc:572 gofon/macro/generic.tpl:6 +#: gofon/macro/generic.tpl:9 gofon/macro/paste_generic.tpl:4 +#: gofon/macro/paste_generic.tpl:6 +msgid "Macro name" +msgstr "Macronaam" + +#: gofon/macro/class_gofonMacro.inc:575 gofon/macro/generic.tpl:14 +msgid "Display name" +msgstr "Getoonde naam" + +#: gofon/macro/class_gofonMacro.inc:576 +#, fuzzy +msgid "Macro content and parameter" +msgstr "Macro tekst" + +#: gofon/macro/class_gofonMacro.inc:577 +msgid "Visibility flag" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:50 +#: gofon/conference/class_divListConferences.inc:50 +#, fuzzy +msgid "Select all" +msgstr "Selecteer" + +#: gofon/macro/class_divListMacros.inc:56 +msgid "Department" +msgstr "Afdeling" + +#: gofon/macro/class_divListMacros.inc:57 +msgid "Visible" +msgstr "Zichtbaar" + +#: gofon/macro/class_divListMacros.inc:58 +#: gofon/macro/class_divListMacros.inc:84 +#: gofon/conference/class_divListConferences.inc:59 +#: gofon/conference/class_divListConferences.inc:88 +msgid "Actions" +msgstr "Acties" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit department" +msgstr "Verwerk afdeling" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit" +msgstr "Verwerk" + +#: gofon/macro/class_divListMacros.inc:89 +#: gofon/conference/class_divListConferences.inc:93 +msgid "Create" +msgstr "Aanmaken" + +#: gofon/macro/class_divListMacros.inc:91 +#: gofon/macro/class_divListMacros.inc:120 +msgid "Macro" +msgstr "Macro" + +#: gofon/macro/class_divListMacros.inc:97 +#: gofon/conference/class_divListConferences.inc:101 +msgid "Remove" +msgstr "Verwijderen" + +#: gofon/macro/class_divListMacros.inc:121 +msgid "visible" +msgstr "zichtbaar" + +#: gofon/macro/class_divListMacros.inc:122 +msgid "invisible" +msgstr "onzichtbaar" + +#: gofon/macro/class_divListMacros.inc:146 +#: gofon/conference/class_divListConferences.inc:150 +msgid "edit" +msgstr "Bewerk" + +#: gofon/macro/class_divListMacros.inc:147 +#, fuzzy +msgid "Edit macro" +msgstr "Bewerk share" + +#: gofon/macro/class_divListMacros.inc:153 +#: gofon/conference/class_divListConferences.inc:158 +msgid "delete" +msgstr "Verwijder" + +#: gofon/macro/class_divListMacros.inc:154 +#, fuzzy +msgid "Delete macro" +msgstr "Verwijder gebruiker" + +#: gofon/macro/class_divListMacros.inc:202 +#: gofon/macro/class_divListMacros.inc:203 +#, fuzzy, php-format +msgid "Number of listed %s" +msgstr "Naam van de afdeling" + +#: gofon/macro/class_divListMacros.inc:202 +#, fuzzy +msgid "macros" +msgstr "Macro" + +#: gofon/macro/class_divListMacros.inc:203 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy +msgid "departments" +msgstr "Afdeling" + +#: gofon/macro/generic.tpl:18 +msgid "Macro name to be displayed" +msgstr "Weer te geven macronaam" + +#: gofon/macro/generic.tpl:60 +msgid "Visible for user" +msgstr "Zichtbaar voor gebruikers" + +#: gofon/macro/generic.tpl:70 +msgid "Macro text" +msgstr "Macro tekst" + +#: gofon/macro/class_gofonMacroManagement.inc:24 +msgid "Phone macros" +msgstr "Tel. macro's" + +#: gofon/macro/class_gofonMacroManagement.inc:25 +#: gofon/phoneaccount/class_phoneAccount.inc:7 +#: gofon/fonreports/class_fonreport.inc:7 +msgid "This does something" +msgstr "Dit doet iets" + +#: gofon/macro/class_gofonMacroManagement.inc:273 +#: gofon/conference/class_phoneConferenceManagment.inc:187 +#, fuzzy +msgid "Permission" +msgstr "Rechten" + +#: gofon/macro/class_gofonMacroManagement.inc:320 +#: gofon/macro/class_gofonMacroManagement.inc:373 +#: gofon/macro/class_gofonMacroManagement.inc:397 +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "Permission error" +msgstr "Rechten" + +#: gofon/macro/class_gofonMacroManagement.inc:366 +#, fuzzy +msgid "macro" +msgstr "Macro" + +#: gofon/macro/main.inc:51 gofon/macro/main.inc:55 +msgid "Phone macro management" +msgstr "Telefoon macrobeheer" + +#: gofon/macro/parameter.tpl:4 +msgid "Argument" +msgstr "Argument" + +#: gofon/macro/parameter.tpl:8 +msgid "type" +msgstr "type" + +#: gofon/macro/parameter.tpl:10 +msgid "Default value" +msgstr "Standaard waarde" + +#: gofon/macro/parameter.tpl:19 +#, fuzzy +msgid "You are not allowed to view the macro parameter settings" +msgstr "U heeft geen toestemming om deze gebruiker te verwijderen!" + +#: gofon/phoneaccount/generic.tpl:42 gofon/phoneaccount/paste_generic.tpl:27 +msgid "Telephone hardware" +msgstr "Telefoon hardware" + +#: gofon/phoneaccount/generic.tpl:44 gofon/phoneaccount/generic.tpl:48 +#: gofon/phoneaccount/paste_generic.tpl:29 +msgid "Telephone" +msgstr "Telefoon" + +#: gofon/phoneaccount/generic.tpl:62 +#, fuzzy +msgid "Select the accounts home server" +msgstr "Selecteer om servers te zien" + +#: gofon/phoneaccount/generic.tpl:69 +#, fuzzy +msgid "Context" +msgstr "Inhoud" + +#: gofon/phoneaccount/generic.tpl:73 gofon/phoneaccount/generic.tpl:84 +#, fuzzy +msgid "Select the accounts context" +msgstr "Selecteer om servers te zien" + +#: gofon/phoneaccount/generic.tpl:80 +#, fuzzy +msgid "Voicemail context" +msgstr "Voicemail PIN-code" + +#: gofon/phoneaccount/generic.tpl:93 gofon/phoneaccount/paste_generic.tpl:32 +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#: gofon/phoneaccount/class_phoneAccount.inc:1280 +msgid "Voicemail PIN" +msgstr "Voicemail PIN-code" + +#: gofon/phoneaccount/generic.tpl:103 gofon/phoneaccount/paste_generic.tpl:40 +#: gofon/phoneaccount/class_phoneAccount.inc:1285 +msgid "Phone PIN" +msgstr "Telefoon PIN-code" + +#: gofon/phoneaccount/generic.tpl:138 +msgid "Refresh" +msgstr "Ververs" + +#: gofon/phoneaccount/paste_generic.tpl:1 gofon/phoneaccount/main.inc:133 +msgid "Phone settings" +msgstr "Telefoon instellingen" + +#: gofon/phoneaccount/main.inc:123 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Gebruik de 'Bewerk' knop hieronder om de informatie in deze dialoog te " +"veranderen" + +#: gofon/phoneaccount/class_phoneAccount.inc:172 +msgid "automatic" +msgstr "automatisch" + +#: gofon/phoneaccount/class_phoneAccount.inc:208 +msgid "no macro" +msgstr "geen macro" + +#: gofon/phoneaccount/class_phoneAccount.inc:236 +msgid "undefined" +msgstr "niet gedefiniëerd" + +#: gofon/phoneaccount/class_phoneAccount.inc:489 +#: gofon/phoneaccount/class_phoneAccount.inc:496 +#: gofon/phoneaccount/class_phoneAccount.inc:514 +#: gofon/phoneaccount/class_phoneAccount.inc:521 +msgid "Abort saving entries to keep the database consistent." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:935 +msgid "Remove phone account" +msgstr "Verwijder telefoon account" + +#: gofon/phoneaccount/class_phoneAccount.inc:939 +#: gofon/phoneaccount/class_phoneAccount.inc:942 +msgid "Create phone account" +msgstr "Telefoon account aanmaken" + +#: gofon/phoneaccount/class_phoneAccount.inc:940 +msgid "User uid" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:958 +msgid "Selected macro is not available anymore!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:982 +msgid "Parameter" +msgstr "Parameters" + +#: gofon/phoneaccount/class_phoneAccount.inc:1126 +msgid "Choose your private phone" +msgstr "Kies uw privé telefoon" + +#: gofon/phoneaccount/class_phoneAccount.inc:1269 +#, fuzzy +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone account." +msgstr "" +"Er moet tenminste een NTP server geselecteerd zijn of de overervings mode " +"moet geactiveerd zijn." + +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#, fuzzy +msgid "Between 1-4 charactes" +msgstr "Voicemail PIN-code moet tussen 1 en 4 karakters zijn" + +#: gofon/phoneaccount/class_phoneAccount.inc:1303 +#, fuzzy, php-format +msgid "macro parameter %s" +msgstr "Macro tekst" + +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#, fuzzy, php-format +msgid "User '%s' has been removed from phone queue '%s'." +msgstr "Gebruiker '%s' is van telefoonwachtrij '%s' verwijderd" + +#: gofon/phoneaccount/class_phoneAccount.inc:1541 +#: gofon/phoneaccount/class_phoneAccount.inc:1543 +#, php-format +msgid "The specified telephonenumber '%s' is already assigned to '%s'." +msgstr "Het opgegeven telefoonnummer '%s' is al toegekend aan '%s'." + +#: gofon/phoneaccount/class_phoneAccount.inc:1589 +#, fuzzy, php-format +msgid "" +"The previously selected asterisk home server (%s) is no longer available. " +"Remove aborted." +msgstr "" +"Het geselecteerde kiosk profiel '%s' is niet meer beschikbaar. Het huidige " +"profiel wordt op 'geen' ingesteld." + +#: gofon/phoneaccount/class_phoneAccount.inc:1598 +#, fuzzy +msgid "Phone account settings" +msgstr "Telefoon instellingen" + +#: gofon/phoneaccount/class_phoneAccount.inc:1602 +msgid "My account" +msgstr "Mijn account" + +#: gofon/phoneaccount/class_phoneAccount.inc:1609 +#: gofon/conference/class_phoneConferenceGeneric.inc:793 +#, fuzzy +msgid "Telephone number" +msgstr "Telefoonnummer" + +#: gofon/phoneaccount/class_phoneAccount.inc:1610 +#, fuzzy +msgid "Macro settings" +msgstr "E-mail instellingen" + +#: gofon/phoneaccount/class_phoneAccount.inc:1613 +#, fuzzy +msgid "Phone context" +msgstr "Telefoonnaam" + +#: gofon/phoneaccount/class_phoneAccount.inc:1614 +#, fuzzy +msgid "Voice mail context" +msgstr "Voicemail PIN-code" + +#: gofon/phoneaccount/class_phoneAccount.inc:1615 +#, fuzzy +msgid "Telephone pin" +msgstr "Telefoon" + +#: gofon/phoneaccount/class_phoneAccount.inc:1616 +#, fuzzy +msgid "Voicemail pin" +msgstr "Voicemail PIN-code" + +#: gofon/phoneaccount/class_phoneAccount.inc:1698 +msgid "There is currently no asterisk server defined!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1702 +msgid "Asterisk server is invalid!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1708 +#, fuzzy +msgid "Voicemail PIN must be 4 characters long!" +msgstr "Voicemail PIN-code moet tussen 1 en 4 karakters zijn" + +#: gofon/phoneaccount/class_phoneAccount.inc:1711 +#, fuzzy +msgid "Voicemail PIN contains invalid characters!" +msgstr "Voicemail PIN-code moet tussen 1 en 4 karakters zijn" + +#: gofon/phoneaccount/class_phoneAccount.inc:1716 +#, fuzzy +msgid "Phone pin contains invalid characters!" +msgstr "Het atribuut '%s' is leeg of bevat ongeldige karakters!" + +#: gofon/phoneaccount/class_phoneAccount.inc:1723 +#, php-format +msgid "The parameter %s contains invalid char. '!,#' is used as delimiter" +msgstr "" +"De bevat '%s' bevat ongeldige karakters. '!,#' worden gebruikt als " +"scheidingstekens" + +#: gofon/conference/headpage.tpl:6 +#: gofon/conference/class_divListConferences.inc:31 +#: gofon/conference/class_divListConferences.inc:32 +msgid "List of conference rooms" +msgstr "Lijst met conferentie kamers" + +#: gofon/conference/headpage.tpl:24 +msgid "" +"This menu allows you to create, delete and edit selected phone conferences. " +"Having a large number of phone conferences, you might prefer the range " +"selectors on top of the conferences list." +msgstr "" +"Dit menu maakt het mogelijk om geselecteerde telefoon conferenties toe te " +"voegen, bewerken of verwijderen. Indien u veel conferenties heeft is het aan " +"te raden de selectie mogelijkheden te gebruiken." + +#: gofon/conference/headpage.tpl:35 +msgid "Display users matching" +msgstr "Toon overeenkomende gebruikers" + +#: gofon/conference/headpage.tpl:36 +msgid "Regular expression for matching user names" +msgstr "Reguliere expressie voor overeenkomende gebruikersnamen" + +#: gofon/conference/remove.tpl:6 +msgid "" +"This includes 'all' accounts, systems, etc. in this subtree. Please double " +"check if your really want to do this since there is no way for GOsa to get " +"your data back." +msgstr "" +"Dit omvat 'alle' accounts, systemen etc. in deze subtree. Verzeker uzelf er " +"van dat dit is wat u wilt, aangezien er geen mogelijkheid voor GOsa is om " +"deze gegevens terug te halen." + +#: gofon/conference/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Het is aan te raden de huidige inhoud van uw LDAP database op te slaan " +"alvorens u doorgaat. Indien u dat gedaan heeft drukt u op 'Verwijderen' om " +"door te gaan of op 'Annuleren' om te annuleren." + +#: gofon/conference/class_phoneConferenceManagment.inc:24 +msgid "Phone conferences" +msgstr "Tel. conferenties" + +#: gofon/conference/class_phoneConferenceManagment.inc:25 +msgid "Management" +msgstr "Beheer" + +#: gofon/conference/class_phoneConferenceManagment.inc:206 +#: gofon/conference/class_phoneConferenceManagment.inc:267 +#, fuzzy +msgid "conference" +msgstr "Conferentie" + +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "You have not permission to delete this entry!" +msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#: gofon/conference/generic.tpl:5 +msgid "Properties" +msgstr "Eigenschappen" + +#: gofon/conference/generic.tpl:15 gofon/conference/paste_generic.tpl:5 +msgid "Conference name" +msgstr "Conferentienaam" + +#: gofon/conference/generic.tpl:21 gofon/conference/paste_generic.tpl:10 +msgid "Name of conference to create" +msgstr "Naam van de aan te maken conferentie" + +#: gofon/conference/generic.tpl:28 +msgid "Type" +msgstr "Type" + +#: gofon/conference/generic.tpl:35 +msgid "Choose subtree to place conference in" +msgstr "Kies de subtree waaronder de conferentie geplaatst wordt" + +#: gofon/conference/generic.tpl:82 +#, fuzzy +msgid "Select language" +msgstr "Taal" + +#: gofon/conference/generic.tpl:104 +msgid "Descriptive text for department" +msgstr "Omschrijving voor de afdeling" + +#: gofon/conference/generic.tpl:110 +msgid "Lifetime (in days)" +msgstr "Geldigheidsduur (in dagen)" + +#: gofon/conference/generic.tpl:157 +#: gofon/conference/class_phoneConferenceGeneric.inc:783 +msgid "Preset PIN" +msgstr "Voorgedefinieerde PIN-code" + +#: gofon/conference/generic.tpl:165 +#: gofon/conference/class_phoneConferenceGeneric.inc:384 +#: gofon/conference/class_divListConferences.inc:58 +msgid "PIN" +msgstr "PIN-code" + +#: gofon/conference/generic.tpl:177 +#: gofon/conference/class_phoneConferenceGeneric.inc:784 +msgid "Record conference" +msgstr "Conferentie opnemen" + +#: gofon/conference/generic.tpl:185 +msgid "Sound file format" +msgstr "Geluidsbestand formaat" + +#: gofon/conference/generic.tpl:188 +msgid "Choose subtree to place department in" +msgstr "Selecteer de subtree waaronder deze afdeling geplaatst wordt" + +#: gofon/conference/generic.tpl:208 +#: gofon/conference/class_phoneConferenceGeneric.inc:785 +msgid "Play music on hold" +msgstr "Muziek afspelen bij wachtstand" + +#: gofon/conference/generic.tpl:216 +msgid "Activate session menu" +msgstr "Activeer sessiemenu" + +#: gofon/conference/generic.tpl:224 +msgid "Announce users joining or leaving the conference" +msgstr "Kondig binnenkomende en verlatende gebruikers aan" + +#: gofon/conference/generic.tpl:232 +msgid "Count users" +msgstr "Tel het aantal gebruikers" + +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#, php-format +msgid "Cannot delete entry from server '%s' because it seems to be removed!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:379 +#, fuzzy, php-format +msgid "" +"The previously selected asterisk home server '%s' is no longer available!" +msgstr "Dit programma is niet meer beschikbaar." + +#: gofon/conference/class_phoneConferenceGeneric.inc:396 +#: gofon/conference/class_phoneConferenceGeneric.inc:792 +#, fuzzy +msgid "Lifetime" +msgstr "Geldigheidsduur (in dagen)" + +#: gofon/conference/class_phoneConferenceGeneric.inc:641 +#: gofon/conference/class_phoneConferenceGeneric.inc:643 +#, fuzzy, php-format +msgid "'%s' is already assigned to '%s'!" +msgstr "Het opgegeven telefoonnummer '%s' is al toegekend aan '%s'." + +#: gofon/conference/class_phoneConferenceGeneric.inc:765 +#: gofon/conference/class_divListConferences.inc:95 +#: gofon/conference/class_divListConferences.inc:208 +msgid "Conference" +msgstr "Conferentie" + +#: gofon/conference/class_phoneConferenceGeneric.inc:766 +#, fuzzy +msgid "Phone conference management" +msgstr "Conferentie beheer" + +#: gofon/conference/class_phoneConferenceGeneric.inc:771 +#, fuzzy +msgid "GOfon conference" +msgstr "Tel. conferenties" + +#: gofon/conference/class_phoneConferenceGeneric.inc:778 +#, fuzzy +msgid "Conference PIN" +msgstr "Conferentie" + +#: gofon/conference/class_phoneConferenceGeneric.inc:786 +#, fuzzy +msgid "Activate menu" +msgstr "Activeer sessiemenu" + +#: gofon/conference/class_phoneConferenceGeneric.inc:787 +#, fuzzy +msgid "Announce user activity" +msgstr "Aankondigingsfrequentie" + +#: gofon/conference/class_phoneConferenceGeneric.inc:788 +#, fuzzy +msgid "Count user" +msgstr "Tel het aantal gebruikers" + +#: gofon/conference/class_phoneConferenceGeneric.inc:789 +#, fuzzy +msgid "Conference type" +msgstr "Conferentienaam" + +#: gofon/conference/class_phoneConferenceGeneric.inc:791 +#, fuzzy +msgid "Format" +msgstr "formaat" + +#: gofon/conference/class_phoneConferenceGeneric.inc:794 +#: gofon/conference/class_divListConferences.inc:57 +msgid "Owner" +msgstr "Eigenaar" + +#: gofon/conference/main.inc:48 gofon/conference/main.inc:50 +msgid "Conference management" +msgstr "Conferentie beheer" + +#: gofon/conference/class_divListConferences.inc:65 +msgid "Regular expression for matching conference names" +msgstr "Reguliere expressie voor overeenkomende conferentie namen" + +#: gofon/conference/class_divListConferences.inc:150 +msgid "Edit this entry" +msgstr "Bewerk deze invoer" + +#: gofon/conference/class_divListConferences.inc:158 +msgid "Delete this entry" +msgstr "Verwijder deze invoer" + +#: gofon/conference/class_divListConferences.inc:185 +msgid "Unknown" +msgstr "Onbekend" + +#: gofon/conference/class_divListConferences.inc:225 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Naam van de afdeling" + +#: gofon/conference/class_divListConferences.inc:225 +#, fuzzy +msgid "conferences" +msgstr "Conferentie" + +#: gofon/fonreports/class_fonreport.inc:6 +msgid "Phone Reports" +msgstr "Telefoon rapporten" + +#: gofon/fonreports/class_fonreport.inc:210 +#, fuzzy +msgid "Insufficient permissions" +msgstr "Rechten" + +#: gofon/fonreports/class_fonreport.inc:229 +msgid "Y-M-D" +msgstr "J-M-D" + +#: gofon/fonreports/class_fonreport.inc:396 +#: gofon/fonreports/class_fonreport.inc:397 +#: gofon/fonreports/class_fonreport.inc:404 gofon/fonreports/main.inc:22 +msgid "Phone reports" +msgstr "Tel. rapporten" + +#: gofon/fonreports/class_fonreport.inc:397 +#, fuzzy +msgid "All entries are readonly" +msgstr "Alle velden zijn aanpasbaar" + +#: gofon/fonreports/class_fonreport.inc:409 gofon/fonreports/contents.tpl:30 +msgid "Date" +msgstr "Datum" + +#: gofon/fonreports/class_fonreport.inc:410 gofon/fonreports/contents.tpl:31 +msgid "Source" +msgstr "Bron" + +#: gofon/fonreports/class_fonreport.inc:411 gofon/fonreports/contents.tpl:32 +msgid "Destination" +msgstr "Doel" + +#: gofon/fonreports/class_fonreport.inc:412 gofon/fonreports/contents.tpl:33 +msgid "Channel" +msgstr "Kanaal" + +#: gofon/fonreports/class_fonreport.inc:413 +#, fuzzy +msgid "Application called" +msgstr "Programmanaam" + +#: gofon/fonreports/class_fonreport.inc:414 +#, fuzzy +msgid "Disposition" +msgstr "Max. verbrekingsduur" + +#: gofon/fonreports/class_fonreport.inc:415 gofon/fonreports/contents.tpl:36 +msgid "Duration" +msgstr "Tijdsduur" + +#: gofon/fonreports/contents.tpl:2 +msgid "Filter" +msgstr "Filter" + +#: gofon/fonreports/contents.tpl:6 +msgid "Search for" +msgstr "Zoek naar" + +#: gofon/fonreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Voer de te zoeken gebruikersnaam in" + +#: gofon/fonreports/contents.tpl:8 gofon/fonreports/contents.tpl:16 +msgid "in" +msgstr "in" + +#: gofon/fonreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Selecteer de subtree waarbinnen de zoekopdracht plaatsvindt" + +#: gofon/fonreports/contents.tpl:12 +msgid "during" +msgstr "gedurende" + +#: gofon/fonreports/contents.tpl:21 +msgid "Search" +msgstr "Zoeken" + +#: gofon/fonreports/contents.tpl:34 +msgid "Application" +msgstr "Programma" + +#: gofon/fonreports/contents.tpl:35 +msgid "Status" +msgstr "Status" + +#: gofon/fonreports/contents.tpl:51 +msgid "Search returned no results..." +msgstr "De zoekopdracht gaf geen resultaten terug..." + +#~ msgid "Addons" +#~ msgstr "Plugins" + +#, fuzzy +#~ msgid "GOfon reports" +#~ msgstr "Tel. rapporten" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopieer" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "knippen" + +#~ msgid "Paste" +#~ msgstr "Plakken" + +#~ msgid "cut" +#~ msgstr "knippen" + +#~ msgid "Cut this entry" +#~ msgstr "Deze invoer knippen" + +#~ msgid "copy" +#~ msgstr "kopieer" + +#~ msgid "Copy this entry" +#~ msgstr "Deze invoer kopieren" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Kan de database %s op %s niet selecteren." + +#, fuzzy +#~ msgid "Insufficient permissions to view this attribute" +#~ msgstr "" +#~ "Onvoldoende permissies. Kan attribuut '%s' in goFonMacro niet veranderen." + +#~ msgid "This account has no phone extensions." +#~ msgstr "Dit account heeft geen telefoon mogelijkheden." + +#~ msgid "" +#~ "This account has phone features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Dit account heeft telefoon mogelijkheden ingeschakeld. U kunt deze " +#~ "uitschakelen door de knop hieronder te gebruiken." + +#~ msgid "" +#~ "This account has phone features disabled. You can't enable them while no " +#~ "uid is set." +#~ msgstr "" +#~ "Dit account heeft telefoon mogelijkheden uitgeschakeld. U kunt ze niet " +#~ "inschakelen zolang geen uid ingesteld is." + +#~ msgid "" +#~ "This account has phone features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Dit account heeft telefoon mogelijkheden uitgeschakeld. U kunt deze " +#~ "inschakelen door de knop hieronder te gebruiken." + +#, fuzzy +#~ msgid "Cannot connect to %s database on server '%s'!" +#~ msgstr "Kan de database %s op %s niet selecteren." + +#, fuzzy +#~ msgid "Cannot select %s database on server '%s'!" +#~ msgstr "Kan de database %s op %s niet selecteren." + +#, fuzzy +#~ msgid "Lifetime is not valid!" +#~ msgstr "Geldigheidsduur (in dagen)" + +#, fuzzy +#~ msgid "Cannot query %s database on server '%s'!" +#~ msgstr "Kan de database %s op %s niet selecteren." + +#~ msgid "Name - Number" +#~ msgstr "Naam - nummer" + +#~ msgid "Select to search within subtrees" +#~ msgstr "Selecteer om binnen subonderdelen te zoeken" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Zoek binnen subtree" + +#, fuzzy +#~ msgid "Number of listed conferences" +#~ msgstr "Conferentie opnemen" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Naam van de afdeling" + +#, fuzzy +#~ msgid "Cannot insert new macro on server '%s'!" +#~ msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." + +#, fuzzy +#~ msgid "Display name is not set!" +#~ msgstr "Getoonde naam" + +#~ msgid "This 'dn' is no phone macro." +#~ msgstr "Deze 'dn' is geen telefoonmacro." + +#, fuzzy +#~ msgid "You're about to delete the following user(s) %s" +#~ msgstr "U staat op het punt gebruiker %s te verwijderen." + +#~ msgid "You're about to delete the whole LDAP subtree placed under '%s'." +#~ msgstr "U staat op het punt de hele LDAP subtree onder '%s' te verwijderen." + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Delete" +#~ msgstr "Verwijderen" + +#~ msgid "Add" +#~ msgstr "Toevoegen" + +#~ msgid "Edit" +#~ msgstr "Bewerken" + +#, fuzzy +#~ msgid "You're about to delete the following macro(s) %s" +#~ msgstr "U staat op het punt gebruiker %s te verwijderen." + +#~ msgid "You're about to delete the macro '%s'." +#~ msgstr "U staat op het punt de macro '%s' te verwijderen." + +#~ msgid "This 'dn' has no phone features." +#~ msgstr "Deze 'dn' heeft geen telefoon mogelijkheden." + +#, fuzzy +#~ msgid "'0' is a reserved name and cannot be used!" +#~ msgstr "De 'Telefoonnaam' '0' is gereserveerd en kan niet gebruikt worden." + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#, fuzzy +#~ msgid "VoIP service - Asterisk management" +#~ msgstr "Asterisk beheer" + +#, fuzzy +#~ msgid "The attribute DB user is empty or contains invalid characters." +#~ msgstr "Het atribuut '%s' is leeg of bevat ongeldige karakters!" + +#, fuzzy +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "Het atribuut '%s' is leeg of bevat ongeldige karakters!" + +#, fuzzy +#~ msgid "" +#~ "The attribute local dial prefix is empty or contains invalid characters." +#~ msgstr "Het atribuut '%s' is leeg of bevat ongeldige karakters!" + +#, fuzzy +#~ msgid "" +#~ "The attribute country dial prefix is empty or contains invalid characters." +#~ msgstr "Het atribuut '%s' is leeg of bevat ongeldige karakters!" + +#~ msgid "" +#~ "Phone queue is enabled for this group. You can disable it by clicking " +#~ "below." +#~ msgstr "" +#~ "Dit account heeft telefoonwachtrijen ingeschakeld. U kunt deze " +#~ "uitschakelen door de knop hieronder te gebruiken." + +#~ msgid "" +#~ "For this group the phone queues are disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Dit account heeft telefoonwachtrijen uitgeschakeld. U kunt deze " +#~ "inschakelen door de knop hieronder te gebruiken." + +#, fuzzy +#~ msgid "Please select a valid goFonHomeServer." +#~ msgstr "Selecteer a.u.b. een geldig mailserver" + +#~ msgid "Timeout must be numeric" +#~ msgstr "Timeout dient nummeriek te zijn" + +#~ msgid "Retry must be numeric" +#~ msgstr "Herhalen moet nummeriek zijn" + +#~ msgid "Max queue length must be numeric" +#~ msgstr "Maximale wachtrijlengte moet nummeriek zijn" + +#~ msgid "Announce frequency must be numeric" +#~ msgstr "Aankondiginsfrequentie moet nummeriek zijn" + +#~ msgid "There must be least one queue number defined." +#~ msgstr "Er moet tenminste een wachtrijnummer gedefinieerd zijn." + +#, fuzzy +#~ msgid "Cannot remove queue entries from database!" +#~ msgstr "Fout bij het exporteren van de gevraagde gegevens!" + +#, fuzzy +#~ msgid "Mysql query failed." +#~ msgstr "De database zoekopdracht is mislukt" + +#~ msgid "Saving phone queue failed" +#~ msgstr "Het opslaan van de telefoon wachtrij is mislukt" + +#~ msgid "Removing phone queue failed" +#~ msgstr "Het verwijderen van de telefoon wachtrij is mislukt" + +#, fuzzy +#~ msgid "Updating gofon home server failed for '%s'." +#~ msgstr "Het bijwerken van de DNS service is mislukt" + +#, fuzzy +#~ msgid "Removing of system phone/generic with dn '%s' failed!" +#~ msgstr "Het verwijderen van het telefoon account is mislukt" + +#, fuzzy +#~ msgid "Saving of phone/generic with dn '%s' failed!" +#~ msgstr "Het opslaan van het Open-Xchange account is mislukt" + +#, fuzzy +#~ msgid "" +#~ "The MySQL Server '%s' isn't reachable as user '%s'. Abort saving entries " +#~ "to keep the database consistent, check GOsa log for mysql error." +#~ msgstr "" +#~ "De MySQL Server '%s' is niet bereikbaar als gebruiker '%s'. Controleer " +#~ "het GOsa logbestand op mysql fouten." + +#, fuzzy +#~ msgid "" +#~ "The old MySQL home server '%s' isn't reachable as user '%s'. Abort saving " +#~ "entries to keep the database consistent, check GOsa log for mysql error." +#~ msgstr "" +#~ "De MySQL Server '%s' is niet bereikbaar als gebruiker '%s'. Controleer " +#~ "het GOsa logbestand voor de mysql fout." + +#, fuzzy +#~ msgid "Phone number is invalid!" +#~ msgstr "Telefoonnummers" + +#~ msgid "" +#~ "The specified Voicemail PIN contains invalid characters, only numeric " +#~ "values are allowed here." +#~ msgstr "" +#~ "De opgegeven Voicemail PIN-code bevat ongeldige karakters. Alleen " +#~ "nummerieke waardes zijn toegestaan." + +#~ msgid "" +#~ "The specified phone PIN contains invalid characters, only aphanumeric " +#~ "values are allowed here." +#~ msgstr "" +#~ "De opgegeven telefoon PIN-code bevat ongeldige karakters. Alleen " +#~ "alfanummerieke waardes zijn toegestaan." + +#~ msgid "You need to specify at least one phone number!" +#~ msgstr "U dient tenminste één telefoonnummer op te geven!" + +#, fuzzy +#~ msgid "Saving of user/phone account with dn '%s' failed." +#~ msgstr "Het opslaan van het telefoon account is mislukt" + +#, fuzzy +#~ msgid "Removing of user/phone account with dn '%s' failed." +#~ msgstr "Het verwijderen van het telefoon account is mislukt" + +#, fuzzy +#~ msgid "Saving of goFonConference/generic with dn '%s' failed!" +#~ msgstr "Het opslaan van het Open-Xchange account is mislukt" + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed!" +#~ msgstr "Het verwijderen van het algemene gebruikers account is mislukt" + +#, fuzzy +#~ msgid "Saving of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "Het opslaan van het Open-Xchange account is mislukt" + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "Het verwijderen van het algemene gebruikers account is mislukt" + +#~ msgid "" +#~ "Can't save any changes to asterisk database, there is currently no mysql " +#~ "extension available in your php setup." +#~ msgstr "" +#~ "Kan geen veranderingen opslaan in de Asterisk database. Er is geen MySQL " +#~ "extensie beschikbaar. Controleer uw PHP installatie." + +#, fuzzy +#~ msgid "" +#~ "The MySQL home server '%s' isn't reachable as user '%s', check GOsa log " +#~ "for mysql error." +#~ msgstr "" +#~ "De MySQL Server '%s' is niet bereikbaar als gebruiker '%s'. Controleer " +#~ "het GOsa logbestand voor de mysql fout." + +#, fuzzy +#~ msgid "" +#~ "The MySQL initial home server '%s' isn't reachable as user '%s', check " +#~ "GOsa log for mysql error." +#~ msgstr "" +#~ "De MySQL Server '%s' is niet bereikbaar als gebruiker '%s'. Controleer " +#~ "het GOsa logbestand voor de mysql fout." + +#, fuzzy +#~ msgid "Can't select database '%s' on initial home server '%s'." +#~ msgstr "Kan de database %s op %s niet selecteren." + +#~ msgid "" +#~ "There is currently no asterisk server defined. Possibly you are missing a " +#~ "server that handles the asterisk management (goFonServer). Your settings " +#~ "can't be saved to asterisk database." +#~ msgstr "" +#~ "Er is momenteel geen Asterisk server gedefinieerd. Het kan zijn dat een " +#~ "server ontbreekt die asterisk management beheert (goFonServer). Uw " +#~ "instellingen kunnen niet opgeslagen worden in de asterisk database." + +#, fuzzy +#~ msgid "" +#~ "Can't delete because there are users which are depending on this phone. " +#~ "One of them is user '%s'." +#~ msgstr "" +#~ "Kan niet verwijderd worden, aangezien er een gebruiker is die " +#~ "afhankelijkis van deze telefoon. Een van deze gebruiker(s) is '%s'." + +#~ msgid "The required field IP address is empty." +#~ msgstr "Het vereiste veld IP adres is leeg." + +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "Het veld IP adres bevat een ongeldig adres." + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "Geef a.u.b. een geldige naam op voor deze bijlage." + +#~ msgid "The required field 'Phone name' is not set." +#~ msgstr "Het vereiste veld 'Telefoonnaam' is leeg." + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "Er is al een invoer '%s' onder de basis die u gekozen heeft" + +#~ msgid "Can't connect to phone database, no reports can be shown!" +#~ msgstr "" +#~ "Kan niet verbinden met de telefoondatabase. Rapporten kunnen niet getoond " +#~ "worden!" + +#~ msgid "There is no mysql extension available, please check your php setup." +#~ msgstr "" +#~ "Er is geen MySQL extensie beschikbaar. Controleer uw PHP installatie a.u." +#~ "b." + +#~ msgid "Can't select phone database for report generation!" +#~ msgstr "Kan de telefoondatabase voor rapportage niet selecteren!" + +#~ msgid "Query for phone database failed!" +#~ msgstr "De zoekopdracht binnen de telefoon database is mislukt!" + +#~ msgid "" +#~ "Can't save any changes to asterisk database, there is no mysql extension " +#~ "available." +#~ msgstr "" +#~ "Kan geen veranderingen in de Asterisk database opslaan. Er is geen MySQL " +#~ "extensie beschikbaar. Controleer uw PHP installatie." + +#~ msgid "Error while performing query:" +#~ msgstr "Fout bij het uitvoeren van zoekopdracht:" + +#~ msgid "" +#~ "The macro you selected, is no longer available for you, please choose " +#~ "another one." +#~ msgstr "" +#~ "De macro die u geselecteerd heeft, is niet meer beschikbaar voor u. " +#~ "Selecteer a.u.b. een andere macro." + +#~ msgid "Please enter a valid phone number!" +#~ msgstr "Voer a.u.b. een geldig telefoonnummer in!" + +#~ msgid "" +#~ "The MySQL Server '%s' isn't reachable as user '%s', check GOsa log for " +#~ "mysql error." +#~ msgstr "" +#~ "De MySQL Server '%s' is niet bereikbaar als gebruiker '%s'. Controleer " +#~ "het GOsa logbestand op mysql fouten." + +#~ msgid "" +#~ "Can't remove phone account, the mysql extension is not present in php " +#~ "configuration." +#~ msgstr "" +#~ "Kan het telefoon account niet verwijderen. De MySQL extensie is niet " +#~ "aanwezig binnen uw PHP configuratie." + +#~ msgid "Please enter a PIN." +#~ msgstr "Voer a.u.b. een PIN-code in." + +#~ msgid "Please enter a name for the conference." +#~ msgstr "Voer a.u.b. een naam voor de conferentie in." + +#~ msgid "Only numeric chars are allowed in Number field." +#~ msgstr "Alleen nummerieke karakters zijn toegestaan in het nummer veld." + +#~ msgid "Only numbers are allowed in Lifetime." +#~ msgstr "Alleen nummerieke waardes zijn toegestaan in geldigheidsduur" + +#, fuzzy +#~ msgid "There is already a conference with this name in the current tree." +#~ msgstr "Er bestaat al een profiel met deze klassenaam." + +#, fuzzy +#~ msgid "Removing macro from '%s' failed. Check GOsa log for mysql error." +#~ msgstr "" +#~ "De MySQL Server '%s' is niet bereikbaar als gebruiker '%s'. Controleer " +#~ "het GOsa logbestand voor de mysql fout." + +#, fuzzy +#~ msgid "More than one '(' is currently not supported. Line : '%s'." +#~ msgstr "" +#~ "Automatische aanmaak van object type '%s' wordt momenteel niet " +#~ "ondersteund. Rapporteer dit a.u.b. aan het GOsa team." + +#, fuzzy +#~ msgid "More than one ')' is currently not supported. Line : '%s'." +#~ msgstr "" +#~ "Automatische aanmaak van object type '%s' wordt momenteel niet " +#~ "ondersteund. Rapporteer dit a.u.b. aan het GOsa team." + +#, fuzzy +#~ msgid "" +#~ "There must be at least one server with an asterisk database to save this " +#~ "phone macro." +#~ msgstr "" +#~ "Er moet tenminste een NTP server geselecteerd zijn of de overervings mode " +#~ "moet geactiveerd zijn." + +#~ msgid "The given cn '%s' already exists." +#~ msgstr "De opgegeven cn '%s' bestaat al." + +#~ msgid "You must specify the 'Display Name' in order to save this macro" +#~ msgstr "U moet de 'Display Naam' opgeven om deze macro op te slaan" + +#~ msgid "The given cn is too long, to create a Makro entry, maximum 20 chars." +#~ msgstr "" +#~ "De opgegeven cn is te lang om een Macro invoer te maken. Maximaal 20 " +#~ "karakters." + +#, fuzzy +#~ msgid "" +#~ "This macro is still in use. It is necessary to mark this macro as visible " +#~ "for users." +#~ msgstr "" +#~ "Deze macro is nog steeds in gebruik. Verzeker uzelf ervan dat geen enkele " +#~ "gebruiker deze macro geselecteerd heeft." + +#~ msgid "Makro length must be lower than 100 lines" +#~ msgstr "De macro lengte moet minder dan 100 regels zijn" + +#, fuzzy +#~ msgid "You can't save an empty macro." +#~ msgstr "Kan bestand '%s' niet opslaan." + +#, fuzzy +#~ msgid "" +#~ "This macro is still in use. To delete this Macro ensure that nobody has " +#~ "selected it." +#~ msgstr "" +#~ "Deze macro is nog steeds in gebruik. Verzeker uzelf ervan dat geen enkele " +#~ "gebruiker deze macro geselecteerd heeft." + +#, fuzzy +#~ msgid "" +#~ "Could not remove the macro entry from asterisk databases. Please check " +#~ "your asterisk database configurations." +#~ msgstr "" +#~ "Kan niet verbinden met de opgegeven database. Controleer uw GLPI " +#~ "configuratie a.u.b." + +#~ msgid "The parameter %s has incorrect value for type bool." +#~ msgstr "De parameter %s heeft een incorrecte waarde voor het type boolean." + +#~ msgid "" +#~ "Parameter count of the macro changed, you must update each user which are " +#~ "using this macro '%s'." +#~ msgstr "" +#~ "Parameter hoeveelheid van de macro is veranderd. U dient elke gebruiker, " +#~ "die deze macro '%s' gebruik, bij te werken." + +#~ msgid "You are not allowed to delete this macro!" +#~ msgstr "U heeft geen toestemming om deze macro te verwijderen!" diff --git a/trunk/gosa-plugins/gofon/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofon/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d74689f40 --- /dev/null +++ b/trunk/gosa-plugins/gofon/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,2036 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/ogroups/gofon/phonequeue.tpl:2 +msgid "" +"Only users with the same asterisk home server will be included to this queue." +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:5 +msgid "Queue Settings" +msgstr "Ustawienia kolejki" + +#: admin/ogroups/gofon/phonequeue.tpl:8 gofon/phoneaccount/generic.tpl:1 +#: gofon/phoneaccount/generic.tpl:6 gofon/phoneaccount/paste_generic.tpl:2 +#: gofon/phoneaccount/paste_generic.tpl:6 +msgid "Phone numbers" +msgstr "Numery telefonów" + +#: admin/ogroups/gofon/phonequeue.tpl:12 +#: admin/ogroups/gofon/phonequeue.tpl:135 +msgid "Generic queue Settings" +msgstr "Ogólne ustawienia kolejki" + +#: admin/ogroups/gofon/phonequeue.tpl:24 +msgid "Up" +msgstr "Góra" + +#: admin/ogroups/gofon/phonequeue.tpl:27 +msgid "Down" +msgstr "W dół" + +#: admin/ogroups/gofon/phonequeue.tpl:47 gofon/conference/generic.tpl:141 +msgid "Options" +msgstr "Opcje" + +#: admin/ogroups/gofon/phonequeue.tpl:50 +#: admin/ogroups/gofon/class_phonequeue.inc:305 +#: admin/ogroups/gofon/class_phonequeue.inc:929 +#: gofon/phoneaccount/generic.tpl:58 +#: gofon/phoneaccount/class_phoneAccount.inc:1273 +#: gofon/phoneaccount/class_phoneAccount.inc:1612 +#: gofon/conference/generic.tpl:68 +#: gofon/conference/class_phoneConferenceGeneric.inc:782 +#, fuzzy +msgid "Home server" +msgstr "Serwer czasu" + +#: admin/ogroups/gofon/phonequeue.tpl:62 +#: admin/ogroups/gofon/class_phonequeue.inc:948 +#: gofon/conference/generic.tpl:78 +#: gofon/conference/class_phoneConferenceGeneric.inc:780 +msgid "Language" +msgstr "Język" + +#: admin/ogroups/gofon/phonequeue.tpl:75 +#: admin/ogroups/gofon/class_phonequeue.inc:311 +#: admin/ogroups/gofon/class_phonequeue.inc:927 +msgid "Timeout" +msgstr "Timeout" + +#: admin/ogroups/gofon/phonequeue.tpl:85 +#: admin/ogroups/gofon/class_phonequeue.inc:314 +#: admin/ogroups/gofon/class_phonequeue.inc:952 +msgid "Retry" +msgstr "Ponawia" + +#: admin/ogroups/gofon/phonequeue.tpl:95 +msgid "Strategy" +msgstr "Strategia" + +#: admin/ogroups/gofon/phonequeue.tpl:109 +#: admin/ogroups/gofon/class_phonequeue.inc:928 +msgid "Max queue length" +msgstr "Maksymalna długość kolejki" + +#: admin/ogroups/gofon/phonequeue.tpl:119 +#: admin/ogroups/gofon/class_phonequeue.inc:320 +#: admin/ogroups/gofon/class_phonequeue.inc:930 +msgid "Announce frequency" +msgstr "Częstotliwość zapowiedzi" + +#: admin/ogroups/gofon/phonequeue.tpl:125 +msgid "(in seconds)" +msgstr "(w sekundach)" + +#: admin/ogroups/gofon/phonequeue.tpl:133 +msgid "Queue sound setup" +msgstr "Ustawienia dźwięku kolejki" + +#: admin/ogroups/gofon/phonequeue.tpl:138 +msgid "Use music on hold instead of ringing" +msgstr "Użyj muzyki zamiast dzwonienia podczas oczenikwania" + +#: admin/ogroups/gofon/phonequeue.tpl:149 +#: admin/ogroups/gofon/class_phonequeue.inc:937 +msgid "Music on hold" +msgstr "Muzyka podczas oczekiwania" + +#: admin/ogroups/gofon/phonequeue.tpl:159 +msgid "Welcome sound file" +msgstr "Plik dźwiękowy powitania" + +#: admin/ogroups/gofon/phonequeue.tpl:169 +msgid "Announce message" +msgstr "Komunikat zapowiadający" + +#: admin/ogroups/gofon/phonequeue.tpl:179 +msgid "Sound file for 'You are next ...'" +msgstr "Plik dźwiękowy 'Jesteś następny ...'" + +#: admin/ogroups/gofon/phonequeue.tpl:189 +msgid "'There are ...'" +msgstr "'Istnieją ...'" + +#: admin/ogroups/gofon/phonequeue.tpl:199 +msgid "'... calls waiting'" +msgstr "'... rozmów oczekujących'" + +#: admin/ogroups/gofon/phonequeue.tpl:209 +msgid "'Thank you' message" +msgstr "Wiadomość 'dziękujemy'" + +#: admin/ogroups/gofon/phonequeue.tpl:219 +msgid "'minutes' sound file" +msgstr "plik dźwiękowy 'minut'" + +#: admin/ogroups/gofon/phonequeue.tpl:229 +msgid "'seconds' sound file" +msgstr "plik dźwiękowy 'sekund'" + +#: admin/ogroups/gofon/phonequeue.tpl:239 +msgid "Hold sound file" +msgstr "Plik dźwiękowy podtrzymania" + +#: admin/ogroups/gofon/phonequeue.tpl:249 +msgid "Less Than sound file" +msgstr "Plik dźwiękowy 'mniej niż'" + +#: admin/ogroups/gofon/phonequeue.tpl:267 +msgid "Phone attributes " +msgstr "Atrybuty telefonu" + +#: admin/ogroups/gofon/phonequeue.tpl:277 +#: admin/ogroups/gofon/class_phonequeue.inc:950 +msgid "Announce holdtime" +msgstr "Ogłaszaj czas podtrzymania" + +#: admin/ogroups/gofon/phonequeue.tpl:285 +#: admin/ogroups/gofon/class_phonequeue.inc:931 +msgid "Allow the called user to transfer his call" +msgstr "Zezwól dodzwanianemu użytkownikowi na przekazanie tej rozmowy" + +#: admin/ogroups/gofon/phonequeue.tpl:293 +#: admin/ogroups/gofon/class_phonequeue.inc:932 +msgid "Allows calling user to transfer call" +msgstr "Zezwala dzwoniącemu użytkownikowi na przekazanie rozmowy" + +#: admin/ogroups/gofon/phonequeue.tpl:305 +#: admin/ogroups/gofon/class_phonequeue.inc:933 +msgid "Allow the called to hangup by pressing *" +msgstr "Zezwól dodzanianemu użytkownikowi na rozłączenie przez wciśnięcie *" + +#: admin/ogroups/gofon/phonequeue.tpl:313 +#: admin/ogroups/gofon/class_phonequeue.inc:935 +msgid "Allows calling to hangup by pressing *" +msgstr "Zezwala dzwoniącemu na rozłączenie poprzez wciśnięcie *" + +#: admin/ogroups/gofon/phonequeue.tpl:321 +#: admin/ogroups/gofon/class_phonequeue.inc:934 +msgid "Ring instead of playing background music" +msgstr "Dzwoń zamiast odtwarzać muzyki w tle" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, fuzzy +msgid "Obsolete entry" +msgstr "Usuń ten obiekt" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, php-format +msgid "" +"The current home server is not available anymore. It will be moved to '%s' " +"if you save this entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:121 +msgid "ring all" +msgstr "dzwoń do wszystkich" + +#: admin/ogroups/gofon/class_phonequeue.inc:122 +msgid "round robin" +msgstr "round robin" + +#: admin/ogroups/gofon/class_phonequeue.inc:123 +msgid "least recently called" +msgstr "ostatnio wdzwaniany" + +#: admin/ogroups/gofon/class_phonequeue.inc:124 +msgid "fewest completed calls" +msgstr "najmniej ukończonych połączeń" + +#: admin/ogroups/gofon/class_phonequeue.inc:125 +msgid "random" +msgstr "losowy" + +#: admin/ogroups/gofon/class_phonequeue.inc:126 +msgid "round robin with memory" +msgstr "round robin z zapamiętywaniem" + +#: admin/ogroups/gofon/class_phonequeue.inc:210 +msgid "Remove the phone queue from this Account" +msgstr "Usuń kolejkę telefoniczną z tego konta" + +#: admin/ogroups/gofon/class_phonequeue.inc:211 +#: admin/ogroups/gofon/class_phonequeue.inc:214 +#, fuzzy +msgid "phone queue" +msgstr "Utwórz kolejkę telefoniczną" + +#: admin/ogroups/gofon/class_phonequeue.inc:213 +msgid "Create phone queue" +msgstr "Utwórz kolejkę telefoniczną" + +#: admin/ogroups/gofon/class_phonequeue.inc:302 +#, fuzzy +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone queue." +msgstr "Musi być wybrany co najmniej jeden serwer NTP." + +#: admin/ogroups/gofon/class_phonequeue.inc:317 +#, fuzzy +msgid "Queue length" +msgstr "Maksymalna długość kolejki" + +#: admin/ogroups/gofon/class_phonequeue.inc:323 +#: gofon/conference/class_phoneConferenceGeneric.inc:392 +#: gofon/conference/class_divListConferences.inc:56 +#, fuzzy +msgid "Number" +msgstr "Nazwa - Numer" + +#: admin/ogroups/gofon/class_phonequeue.inc:346 +#: admin/ogroups/gofon/class_phonequeue.inc:394 +#, fuzzy +msgid "asterisk" +msgstr "Wklej" + +#: admin/ogroups/gofon/class_phonequeue.inc:378 +#: admin/ogroups/gofon/class_phonequeue.inc:732 +#: gofon/macro/class_gofonMacro.inc:392 gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/conference/class_phoneConferenceGeneric.inc:430 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +#, fuzzy +msgid "GOfon" +msgstr "brak makra" + +#: admin/ogroups/gofon/class_phonequeue.inc:437 +msgid "Cannot find old queue entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:523 +#, php-format +msgid "" +"Found more than one entry named '%s' in queue table. Please inform your " +"system administrator!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:764 +#: admin/ogroups/gofon/class_phonequeue.inc:766 +#, fuzzy +msgid "telephone number" +msgstr "Numer telefonu" + +#: admin/ogroups/gofon/class_phonequeue.inc:823 +#: admin/ogroups/gofon/class_phonequeue.inc:865 +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 gofon/macro/class_gofonMacro.inc:467 +#: gofon/macro/class_gofonMacro.inc:505 +#: gofon/phoneaccount/class_phoneAccount.inc:958 +#: gofon/phoneaccount/class_phoneAccount.inc:1077 +#: gofon/phoneaccount/class_phoneAccount.inc:1350 +#: gofon/phoneaccount/class_phoneAccount.inc:1422 +#: gofon/phoneaccount/class_phoneAccount.inc:1432 +#: gofon/phoneaccount/class_phoneAccount.inc:1466 +#: gofon/conference/class_phoneConferenceGeneric.inc:260 +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "Error" +msgstr "Błąd" + +#: admin/ogroups/gofon/class_phonequeue.inc:838 +#: admin/ogroups/gofon/class_phonequeue.inc:893 +#: admin/systems/services/gofon/class_goFonServer.inc:146 +#: admin/systems/gofon/class_phoneGeneric.inc:282 +#: admin/systems/gofon/class_phoneGeneric.inc:428 +#: admin/systems/gofon/class_phoneGeneric.inc:442 +#: admin/systems/gofon/class_phoneGeneric.inc:459 +#: gofon/macro/class_gofonMacroParameters.inc:401 +#: gofon/macro/class_gofonMacro.inc:479 gofon/macro/class_gofonMacro.inc:490 +#: gofon/macro/class_gofonMacro.inc:526 +#: gofon/phoneaccount/class_phoneAccount.inc:1377 +#: gofon/phoneaccount/class_phoneAccount.inc:1513 +#: gofon/conference/class_phoneConferenceGeneric.inc:718 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/ogroups/gofon/class_phonequeue.inc:901 +#: gofon/conference/generic.tpl:120 gofon/conference/paste_generic.tpl:15 +msgid "Phone number" +msgstr "Numer telefonu" + +#: admin/ogroups/gofon/class_phonequeue.inc:918 +#: gofon/phoneaccount/class_phoneAccount.inc:6 +#: gofon/phoneaccount/class_phoneAccount.inc:911 +#: gofon/phoneaccount/class_phoneAccount.inc:924 +#: gofon/phoneaccount/class_phoneAccount.inc:936 +#: gofon/phoneaccount/class_phoneAccount.inc:940 +#: gofon/phoneaccount/class_phoneAccount.inc:943 +#: gofon/phoneaccount/class_phoneAccount.inc:1597 +msgid "Phone" +msgstr "Telefon" + +#: admin/ogroups/gofon/class_phonequeue.inc:919 +msgid "Phone group" +msgstr "Grupa telefoniczna" + +#: admin/ogroups/gofon/class_phonequeue.inc:938 +msgid "Welcome music" +msgstr "Muzyka powitalna" + +#: admin/ogroups/gofon/class_phonequeue.inc:939 +msgid "Report hold time" +msgstr "Ogłaszaj czas wstrzymania" + +#: admin/ogroups/gofon/class_phonequeue.inc:940 +msgid "'You are next' sound" +msgstr "Dźwięk 'jesteś następny'" + +#: admin/ogroups/gofon/class_phonequeue.inc:941 +msgid "'There are' sound" +msgstr "Dźwięk 'Istnieją'" + +#: admin/ogroups/gofon/class_phonequeue.inc:942 +msgid "'Call waiting' sound" +msgstr "Dźwięk 'rozmowa oczekująca'" + +#: admin/ogroups/gofon/class_phonequeue.inc:943 +msgid "'Thank you' sound" +msgstr "Dźwięk 'dziękujemy'" + +#: admin/ogroups/gofon/class_phonequeue.inc:944 +msgid "'Minutes' sound" +msgstr "Dźwięk 'minut'" + +#: admin/ogroups/gofon/class_phonequeue.inc:945 +msgid "'Seconds' sound" +msgstr "Dźwięk 'sekund'" + +#: admin/ogroups/gofon/class_phonequeue.inc:946 +msgid "'Less than' sound" +msgstr "Dźwięk 'mniej niż'" + +#: admin/ogroups/gofon/class_phonequeue.inc:947 +msgid "Queue phone number" +msgstr "Kolejkuj numer telefonu" + +#: admin/ogroups/gofon/class_phonequeue.inc:949 +msgid "Method" +msgstr "Metoda" + +#: admin/ogroups/gofon/class_phonequeue.inc:951 +msgid "Announce" +msgstr "Zapowiadanie" + +#: admin/systems/services/gofon/goFonServer.tpl:1 +msgid "VoIP database information" +msgstr "Informacje bazy danych VoIP" + +#: admin/systems/services/gofon/goFonServer.tpl:4 +msgid "Asterisk DB user" +msgstr "Użytkownik basy Asterisk" + +#: admin/systems/services/gofon/goFonServer.tpl:12 +#: admin/systems/services/gofon/class_goFonServer.inc:77 +#: admin/systems/services/gofon/class_goFonServer.inc:179 +msgid "Password" +msgstr "Hasło" + +#: admin/systems/services/gofon/goFonServer.tpl:20 +msgid "Country dial prefix" +msgstr "Krajowy prefix telefoniczny" + +#: admin/systems/services/gofon/goFonServer.tpl:28 +#: admin/systems/services/gofon/class_goFonServer.inc:80 +msgid "Local dial prefix" +msgstr "Lokalny prefix telefoniczny" + +#: admin/systems/services/gofon/class_goFonServer.inc:34 +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#: admin/systems/services/gofon/class_goFonServer.inc:165 +msgid "VoIP service" +msgstr "Usługa VoIP" + +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#, fuzzy +msgid "Asterisk management" +msgstr "Zarządzanie makro Asterisk" + +#: admin/systems/services/gofon/class_goFonServer.inc:74 +msgid "User" +msgstr "Użytkownik" + +#: admin/systems/services/gofon/class_goFonServer.inc:83 +#, fuzzy +msgid "Country prefix" +msgstr "Krajowy prefix telefoniczny" + +#: admin/systems/services/gofon/class_goFonServer.inc:120 +#, fuzzy, php-format +msgid "" +"You can't remove the asterisk database extension, it is still in use by " +"these objects '%s'." +msgstr "" +"Nie można usunąć tego załącznika, jest wciąż używany przez system(y) '%s'" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +#, fuzzy +msgid "VoIP - asterisk management" +msgstr "Zarządzanie Asterisk" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/gofon/class_goFonServer.inc:174 +msgid "Start" +msgstr "Start" + +#: admin/systems/services/gofon/class_goFonServer.inc:175 +msgid "Stop" +msgstr "Zatrzymaj" + +#: admin/systems/services/gofon/class_goFonServer.inc:176 +msgid "Restart" +msgstr "Restart" + +#: admin/systems/services/gofon/class_goFonServer.inc:178 +msgid "Admin" +msgstr "Admin" + +#: admin/systems/services/gofon/class_goFonServer.inc:180 +msgid "Area code" +msgstr "Kod województwa" + +#: admin/systems/services/gofon/class_goFonServer.inc:181 +msgid "Country code" +msgstr "Kod kraju" + +#: admin/systems/gofon/phonesettings.tpl:1 +msgid "Advanced phone settings" +msgstr "Zaawansowane ustawienia telefonu" + +#: admin/systems/gofon/phonesettings.tpl:6 +msgid "Phone type" +msgstr "Typ telefonu" + +#: admin/systems/gofon/phonesettings.tpl:8 +#: admin/systems/gofon/phonesettings.tpl:30 +#: admin/systems/gofon/phonesettings.tpl:42 +#: admin/systems/gofon/phonesettings.tpl:58 +#: admin/systems/gofon/phonesettings.tpl:91 +#: admin/systems/gofon/phonesettings.tpl:128 +#: admin/systems/gofon/phonesettings.tpl:181 +msgid "Choose a phone type" +msgstr "Proszę wybrać typ telefonu" + +#: admin/systems/gofon/phonesettings.tpl:13 +msgid "refresh" +msgstr "Odśwież" + +#: admin/systems/gofon/phonesettings.tpl:25 +msgid "Mode" +msgstr "Tryb" + +#: admin/systems/gofon/phonesettings.tpl:38 +msgid "DTMF mode" +msgstr "Tryb DTMF" + +#: admin/systems/gofon/phonesettings.tpl:54 +#: admin/systems/gofon/phonesettings.tpl:99 +msgid "Default IP" +msgstr "Domyślny IP" + +#: admin/systems/gofon/phonesettings.tpl:66 +#: admin/systems/gofon/phonesettings.tpl:109 +msgid "Response timeout" +msgstr "Przekroczony limit czasu odpowiedzi" + +#: admin/systems/gofon/phonesettings.tpl:87 +msgid "Modus" +msgstr "Modus" + +#: admin/systems/gofon/phonesettings.tpl:124 +msgid "Authtype" +msgstr "Typ autoryzacji" + +#: admin/systems/gofon/phonesettings.tpl:136 +msgid "Secret" +msgstr "Tajny" + +#: admin/systems/gofon/phonesettings.tpl:146 +msgid "GoFonInkeys" +msgstr "GoFonInkeys" + +#: admin/systems/gofon/phonesettings.tpl:154 +msgid "GoFonOutKeys" +msgstr "GoFonOutkeys" + +#: admin/systems/gofon/phonesettings.tpl:167 +msgid "Account code" +msgstr "Kod konta" + +#: admin/systems/gofon/phonesettings.tpl:177 +msgid "Trunk lines" +msgstr "Zmniejsz linie" + +#: admin/systems/gofon/phonesettings.tpl:194 +msgid "Hosts that are allowed to connect" +msgstr "Hosty które mogą się połączyć." + +#: admin/systems/gofon/phonesettings.tpl:197 +#: admin/systems/gofon/phonesettings.tpl:220 +msgid "List of alternative mail addresses" +msgstr "Lista alternatywnych adresów pocztowych" + +#: admin/systems/gofon/phonesettings.tpl:217 +msgid "Hosts that are not allowed to connect" +msgstr "Hosty które nie mogą się połączyć." + +#: admin/systems/gofon/phonesettings.tpl:247 +msgid "MSN" +msgstr "MSN" + +#: admin/systems/gofon/paste_generic.tpl:3 admin/systems/gofon/phone.tpl:6 +msgid "Phone name" +msgstr "Nazwa telefonu" + +#: admin/systems/gofon/phone.tpl:17 +#: admin/systems/gofon/class_phoneGeneric.inc:517 +#: gofon/macro/class_gofonMacro.inc:573 gofon/macro/class_divListMacros.inc:79 +#: gofon/macro/generic.tpl:27 gofon/conference/generic.tpl:49 +#: gofon/conference/class_phoneConferenceGeneric.inc:776 +#: gofon/conference/class_divListConferences.inc:83 +msgid "Base" +msgstr "Kontener" + +#: admin/systems/gofon/phone.tpl:20 gofon/macro/generic.tpl:30 +msgid "Choose subtree to place group in" +msgstr "Wybierz poddrzewo do umieszczenia grupy" + +#: admin/systems/gofon/phone.tpl:25 gofon/macro/generic.tpl:36 +#: gofon/conference/generic.tpl:56 gofon/conference/generic.tpl:62 +msgid "Select a base" +msgstr "Wybierz bazę" + +#: admin/systems/gofon/phone.tpl:34 +#: admin/systems/gofon/class_phoneGeneric.inc:518 +#: gofon/macro/class_gofonMacro.inc:574 gofon/macro/generic.tpl:49 +#: gofon/conference/generic.tpl:98 +#: gofon/conference/class_phoneConferenceGeneric.inc:777 +msgid "Description" +msgstr "Opis" + +#: admin/systems/gofon/class_phoneGeneric.inc:124 +#, fuzzy +msgid "phone" +msgstr "Telefon" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:121 +msgid "yes" +msgstr "tak" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:122 +msgid "no" +msgstr "nie" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "dynamic" +msgstr "dynamiczne" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "Networksettings" +msgstr "Ustawienia sieci" + +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 +#, php-format +msgid "Cannot delete entry because it is still in use by '%s'!" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:331 +#: admin/systems/gofon/class_phoneGeneric.inc:334 +msgid "IP address" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:340 +#: admin/systems/gofon/class_phoneGeneric.inc:344 +#: admin/systems/gofon/class_phoneGeneric.inc:347 +#: admin/systems/gofon/class_phoneGeneric.inc:362 +#: admin/systems/gofon/class_phoneGeneric.inc:516 +#: gofon/macro/class_gofonMacro.inc:406 gofon/macro/class_gofonMacro.inc:412 +#: gofon/macro/class_divListMacros.inc:56 gofon/macro/parameter.tpl:6 +#: gofon/conference/class_phoneConferenceGeneric.inc:388 +#: gofon/conference/class_phoneConferenceGeneric.inc:410 +#: gofon/conference/class_phoneConferenceGeneric.inc:775 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Name" +msgstr "Imię" + +#: admin/systems/gofon/class_phoneGeneric.inc:507 +#: gofon/macro/class_gofonMacro.inc:562 +msgid "Generic" +msgstr "Ogólne" + +#: admin/systems/gofon/class_phoneGeneric.inc:508 +#, fuzzy +msgid "Phone generic" +msgstr "Numer telefonu" + +#: admin/systems/gofon/class_phoneGeneric.inc:513 +#: gofon/phoneaccount/class_phoneAccount.inc:1611 +msgid "Phone hardware" +msgstr "Sprzęt telefoniczny" + +#: admin/systems/gofon/class_phoneGeneric.inc:519 +#, fuzzy +msgid "SIP Mode" +msgstr "Tryb" + +#: admin/systems/gofon/class_phoneGeneric.inc:520 +#, fuzzy +msgid "SIP DTMF mode" +msgstr "Tryb DTMF" + +#: admin/systems/gofon/class_phoneGeneric.inc:521 +#, fuzzy +msgid "SIP Default ip" +msgstr "Domyślny IP" + +#: admin/systems/gofon/class_phoneGeneric.inc:522 +#, fuzzy +msgid "SIP Qualify" +msgstr "Kwalifikuj" + +#: admin/systems/gofon/class_phoneGeneric.inc:523 +#, fuzzy +msgid "IAX authentication type" +msgstr "Autentykacja Nagios" + +#: admin/systems/gofon/class_phoneGeneric.inc:524 +#, fuzzy +msgid "IAX secret" +msgstr "Usługa FAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:525 +#, fuzzy +msgid "IAX account code" +msgstr "Kod konta" + +#: admin/systems/gofon/class_phoneGeneric.inc:526 +#, fuzzy +msgid "IAX trunk lines" +msgstr "Zmniejsz linie" + +#: admin/systems/gofon/class_phoneGeneric.inc:527 +#, fuzzy +msgid "IAX permit settings" +msgstr "Ustawienia FAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:528 +#, fuzzy +msgid "IAX deny settings" +msgstr "Ustawienia FAX" + +#: admin/systems/gofon/class_phoneGeneric.inc:529 +msgid "CAPI MSN" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:530 +msgid "Hardware type" +msgstr "Typ sprzętu" + +#: gofon/macro/headpage.tpl:6 gofon/macro/class_divListMacros.inc:31 +#: gofon/macro/class_divListMacros.inc:32 +msgid "List of macros" +msgstr "Lista makr" + +#: gofon/macro/headpage.tpl:20 gofon/macro/class_gofonMacroParameters.inc:374 +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#: gofon/conference/headpage.tpl:20 +msgid "Information" +msgstr "Informacja" + +#: gofon/macro/headpage.tpl:24 +msgid "" +"This menu allows you to add, edit and remove selected macros. You may want " +"to use the range selector on top of the macro listbox, when working with a " +"large number of macros." +msgstr "" +"To menu umożliwia tworzenie, usuwanie oraz edycję wybranych makr. Posiadając " +"dużą ilość makr, może okazać się wygodniejsze korzystanie z selektorów " +"zakresu na górze listy makr." + +#: gofon/macro/headpage.tpl:29 gofon/conference/headpage.tpl:29 +msgid "Filters" +msgstr "Filtry" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "Wyświetl makra pasujące" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "Wyświetl makra pasujące" + +#: gofon/macro/headpage.tpl:41 gofon/macro/class_divListMacros.inc:64 +msgid "Regular expression for matching macro names" +msgstr "Wyrażenie regularne dla dopasowania nazw makr" + +#: gofon/macro/remove.tpl:2 gofon/conference/remove.tpl:2 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: gofon/macro/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"To może być używane przez kilka grup. Proszę upewnić się czy kontynuować, " +"gdyż nie ma operacji powrotu." + +#: gofon/macro/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Jeśli jesteś pewien - naciśnij 'Usuń' aby kontynuować lub 'Anuluj' aby " +"anulować." + +#: gofon/macro/class_gofonMacroParameters.inc:200 +#: gofon/phoneaccount/generic.tpl:125 gofon/phoneaccount/generic.tpl:127 +msgid "Phone macro" +msgstr "Makro telefoniczne" + +#: gofon/macro/class_gofonMacroParameters.inc:256 +msgid "String" +msgstr "Napis" + +#: gofon/macro/class_gofonMacroParameters.inc:257 +msgid "Combobox" +msgstr "Lista rozwijana" + +#: gofon/macro/class_gofonMacroParameters.inc:258 +msgid "Bool" +msgstr "Bool" + +#: gofon/macro/class_gofonMacroParameters.inc:264 +msgid "Delete unused" +msgstr "Usuń nieużywane" + +#: gofon/macro/class_gofonMacroParameters.inc:340 +#, fuzzy, php-format +msgid "Parameter %s contains invalid character. '!,#' is used as delimiter!" +msgstr "" +"Parametr %s zawiera nieprawidłowy znak. '!,#' jest użyty jako separator" + +#: gofon/macro/class_gofonMacroParameters.inc:345 +#, php-format +msgid "Parameter %s is invalid!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:374 +msgid "" +"Number of parameters for this macro has changed. Please update all users " +"using it!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:300 +#, fuzzy, php-format +msgid "Application missing in line %s!" +msgstr "Istnieje duplikat w '%s' dla '%s'." + +#: gofon/macro/class_gofonMacro.inc:304 +#, php-format +msgid "Extension missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:416 +msgid "Name can be 20 characters at maximum!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:425 +#, fuzzy +msgid "Macro is still in use!" +msgstr "Ustawienia makra" + +#: gofon/macro/class_gofonMacro.inc:432 +#, fuzzy +msgid "Macro is empty!" +msgstr "Tekst makro" + +#: gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:371 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/phoneaccount/class_phoneAccount.inc:1471 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:169 +#, fuzzy +msgid "Configuration error" +msgstr "Plik konfiguracyjny" + +#: gofon/macro/class_gofonMacro.inc:563 +msgid "Asterisk macro management" +msgstr "Zarządzanie makro Asterisk" + +#: gofon/macro/class_gofonMacro.inc:568 +#, fuzzy +msgid "GOfon macro" +msgstr "brak makra" + +#: gofon/macro/class_gofonMacro.inc:572 gofon/macro/generic.tpl:6 +#: gofon/macro/generic.tpl:9 gofon/macro/paste_generic.tpl:4 +#: gofon/macro/paste_generic.tpl:6 +msgid "Macro name" +msgstr "Nazwa makra" + +#: gofon/macro/class_gofonMacro.inc:575 gofon/macro/generic.tpl:14 +msgid "Display name" +msgstr "Wyświetl nazwę" + +#: gofon/macro/class_gofonMacro.inc:576 +#, fuzzy +msgid "Macro content and parameter" +msgstr "Zawartość makro" + +#: gofon/macro/class_gofonMacro.inc:577 +msgid "Visibility flag" +msgstr "Flaga widoczności" + +#: gofon/macro/class_divListMacros.inc:50 +#: gofon/conference/class_divListConferences.inc:50 +#, fuzzy +msgid "Select all" +msgstr "Wybierz" + +#: gofon/macro/class_divListMacros.inc:56 +msgid "Department" +msgstr "Departament" + +#: gofon/macro/class_divListMacros.inc:57 +msgid "Visible" +msgstr "Widoczne" + +#: gofon/macro/class_divListMacros.inc:58 +#: gofon/macro/class_divListMacros.inc:84 +#: gofon/conference/class_divListConferences.inc:59 +#: gofon/conference/class_divListConferences.inc:88 +msgid "Actions" +msgstr "Akcje" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit department" +msgstr "Zatwierdź departament" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit" +msgstr "Wyślij" + +#: gofon/macro/class_divListMacros.inc:89 +#: gofon/conference/class_divListConferences.inc:93 +msgid "Create" +msgstr "Utwórz" + +#: gofon/macro/class_divListMacros.inc:91 +#: gofon/macro/class_divListMacros.inc:120 +msgid "Macro" +msgstr "Makro" + +#: gofon/macro/class_divListMacros.inc:97 +#: gofon/conference/class_divListConferences.inc:101 +msgid "Remove" +msgstr "Usuń" + +#: gofon/macro/class_divListMacros.inc:121 +msgid "visible" +msgstr "widoczne" + +#: gofon/macro/class_divListMacros.inc:122 +msgid "invisible" +msgstr "niewidoczne" + +#: gofon/macro/class_divListMacros.inc:146 +#: gofon/conference/class_divListConferences.inc:150 +msgid "edit" +msgstr "edytuj" + +#: gofon/macro/class_divListMacros.inc:147 +msgid "Edit macro" +msgstr "Edytuj makro" + +#: gofon/macro/class_divListMacros.inc:153 +#: gofon/conference/class_divListConferences.inc:158 +msgid "delete" +msgstr "Usuń" + +#: gofon/macro/class_divListMacros.inc:154 +msgid "Delete macro" +msgstr "Usuń makro" + +#: gofon/macro/class_divListMacros.inc:202 +#: gofon/macro/class_divListMacros.inc:203 +#, fuzzy, php-format +msgid "Number of listed %s" +msgstr "Nazwa departamentu" + +#: gofon/macro/class_divListMacros.inc:202 +#, fuzzy +msgid "macros" +msgstr "Makro" + +#: gofon/macro/class_divListMacros.inc:203 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy +msgid "departments" +msgstr "Departament" + +#: gofon/macro/generic.tpl:18 +msgid "Macro name to be displayed" +msgstr "Nazwa makra do wyświetlenia" + +#: gofon/macro/generic.tpl:60 +msgid "Visible for user" +msgstr "Widoczne dla użytkownika" + +#: gofon/macro/generic.tpl:70 +msgid "Macro text" +msgstr "Tekst makro" + +#: gofon/macro/class_gofonMacroManagement.inc:24 +msgid "Phone macros" +msgstr "Makra telefoniczne" + +#: gofon/macro/class_gofonMacroManagement.inc:25 +#: gofon/phoneaccount/class_phoneAccount.inc:7 +#: gofon/fonreports/class_fonreport.inc:7 +msgid "This does something" +msgstr "To robi coś" + +#: gofon/macro/class_gofonMacroManagement.inc:273 +#: gofon/conference/class_phoneConferenceManagment.inc:187 +#, fuzzy +msgid "Permission" +msgstr "Uprawnienia" + +#: gofon/macro/class_gofonMacroManagement.inc:320 +#: gofon/macro/class_gofonMacroManagement.inc:373 +#: gofon/macro/class_gofonMacroManagement.inc:397 +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "Permission error" +msgstr "Uprawnienia" + +#: gofon/macro/class_gofonMacroManagement.inc:366 +#, fuzzy +msgid "macro" +msgstr "Makro" + +#: gofon/macro/main.inc:51 gofon/macro/main.inc:55 +msgid "Phone macro management" +msgstr "Zarządzanie makrami telefonów" + +#: gofon/macro/parameter.tpl:4 +msgid "Argument" +msgstr "Argument" + +#: gofon/macro/parameter.tpl:8 +msgid "type" +msgstr "typ" + +#: gofon/macro/parameter.tpl:10 +msgid "Default value" +msgstr "Domyślna wartość" + +#: gofon/macro/parameter.tpl:19 +#, fuzzy +msgid "You are not allowed to view the macro parameter settings" +msgstr "Brak uprawnień do usunięcia tego użytkownika!" + +#: gofon/phoneaccount/generic.tpl:42 gofon/phoneaccount/paste_generic.tpl:27 +msgid "Telephone hardware" +msgstr "Sprzęt telefoniczny" + +#: gofon/phoneaccount/generic.tpl:44 gofon/phoneaccount/generic.tpl:48 +#: gofon/phoneaccount/paste_generic.tpl:29 +msgid "Telephone" +msgstr "Telefon" + +#: gofon/phoneaccount/generic.tpl:62 +#, fuzzy +msgid "Select the accounts home server" +msgstr "Proszę aby zobaczyć serwery" + +#: gofon/phoneaccount/generic.tpl:69 +#, fuzzy +msgid "Context" +msgstr "Zawartość" + +#: gofon/phoneaccount/generic.tpl:73 gofon/phoneaccount/generic.tpl:84 +#, fuzzy +msgid "Select the accounts context" +msgstr "Proszę aby zobaczyć serwery" + +#: gofon/phoneaccount/generic.tpl:80 +#, fuzzy +msgid "Voicemail context" +msgstr "PIN poczty głosowej" + +#: gofon/phoneaccount/generic.tpl:93 gofon/phoneaccount/paste_generic.tpl:32 +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#: gofon/phoneaccount/class_phoneAccount.inc:1280 +msgid "Voicemail PIN" +msgstr "PIN poczty głosowej" + +#: gofon/phoneaccount/generic.tpl:103 gofon/phoneaccount/paste_generic.tpl:40 +#: gofon/phoneaccount/class_phoneAccount.inc:1285 +msgid "Phone PIN" +msgstr "PIN telefonu" + +#: gofon/phoneaccount/generic.tpl:138 +msgid "Refresh" +msgstr "Odśwież" + +#: gofon/phoneaccount/paste_generic.tpl:1 gofon/phoneaccount/main.inc:133 +msgid "Phone settings" +msgstr "Ustawienia telefonu" + +#: gofon/phoneaccount/main.inc:123 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "Kliknij przycisk 'Edytuj' poniżej, aby zmienić informacje w tym oknie" + +#: gofon/phoneaccount/class_phoneAccount.inc:172 +msgid "automatic" +msgstr "automatyczne" + +#: gofon/phoneaccount/class_phoneAccount.inc:208 +msgid "no macro" +msgstr "brak makra" + +#: gofon/phoneaccount/class_phoneAccount.inc:236 +msgid "undefined" +msgstr "niezdefiniowany" + +#: gofon/phoneaccount/class_phoneAccount.inc:489 +#: gofon/phoneaccount/class_phoneAccount.inc:496 +#: gofon/phoneaccount/class_phoneAccount.inc:514 +#: gofon/phoneaccount/class_phoneAccount.inc:521 +msgid "Abort saving entries to keep the database consistent." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:935 +msgid "Remove phone account" +msgstr "Usuń konto telefoniczne" + +#: gofon/phoneaccount/class_phoneAccount.inc:939 +#: gofon/phoneaccount/class_phoneAccount.inc:942 +msgid "Create phone account" +msgstr "Utwórz konto telefoniczne" + +#: gofon/phoneaccount/class_phoneAccount.inc:940 +msgid "User uid" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:958 +msgid "Selected macro is not available anymore!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:982 +msgid "Parameter" +msgstr "Parametr" + +#: gofon/phoneaccount/class_phoneAccount.inc:1126 +msgid "Choose your private phone" +msgstr "Wybierz swój telefon prywatny" + +#: gofon/phoneaccount/class_phoneAccount.inc:1269 +#, fuzzy +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone account." +msgstr "" +"Musi być zaznaczony co najmniej jeden serwer NTP lub zaznaczony tryb " +"dziedziczenia." + +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#, fuzzy +msgid "Between 1-4 charactes" +msgstr "PIN Voicemail musi zawierać od 1 do 4 znaków." + +#: gofon/phoneaccount/class_phoneAccount.inc:1303 +#, fuzzy, php-format +msgid "macro parameter %s" +msgstr "Zawartość makro" + +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#, fuzzy, php-format +msgid "User '%s' has been removed from phone queue '%s'." +msgstr "Usunięto użytkownika '%s' z kolejki telefonicznej '%s'." + +#: gofon/phoneaccount/class_phoneAccount.inc:1541 +#: gofon/phoneaccount/class_phoneAccount.inc:1543 +#, php-format +msgid "The specified telephonenumber '%s' is already assigned to '%s'." +msgstr "Podany numer telefonu '%s' jest już przypisany do '%s'." + +#: gofon/phoneaccount/class_phoneAccount.inc:1589 +#, fuzzy, php-format +msgid "" +"The previously selected asterisk home server (%s) is no longer available. " +"Remove aborted." +msgstr "" +"Wybrany profil kiosk '%s' nie jest już dostępny, ustawiam aktualny profil na " +"'brak'." + +#: gofon/phoneaccount/class_phoneAccount.inc:1598 +msgid "Phone account settings" +msgstr "Ustawienia konta telefonicznego" + +#: gofon/phoneaccount/class_phoneAccount.inc:1602 +msgid "My account" +msgstr "Moje konto " + +#: gofon/phoneaccount/class_phoneAccount.inc:1609 +#: gofon/conference/class_phoneConferenceGeneric.inc:793 +msgid "Telephone number" +msgstr "Numer telefonu" + +#: gofon/phoneaccount/class_phoneAccount.inc:1610 +msgid "Macro settings" +msgstr "Ustawienia makra" + +#: gofon/phoneaccount/class_phoneAccount.inc:1613 +#, fuzzy +msgid "Phone context" +msgstr "Nazwa telefonu" + +#: gofon/phoneaccount/class_phoneAccount.inc:1614 +#, fuzzy +msgid "Voice mail context" +msgstr "PIN poczty głosowej" + +#: gofon/phoneaccount/class_phoneAccount.inc:1615 +msgid "Telephone pin" +msgstr "PIN Telefonu" + +#: gofon/phoneaccount/class_phoneAccount.inc:1616 +msgid "Voicemail pin" +msgstr "PIN poczty głosowej" + +#: gofon/phoneaccount/class_phoneAccount.inc:1698 +msgid "There is currently no asterisk server defined!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1702 +msgid "Asterisk server is invalid!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1708 +#, fuzzy +msgid "Voicemail PIN must be 4 characters long!" +msgstr "PIN Voicemail musi zawierać od 1 do 4 znaków." + +#: gofon/phoneaccount/class_phoneAccount.inc:1711 +#, fuzzy +msgid "Voicemail PIN contains invalid characters!" +msgstr "PIN Voicemail musi zawierać od 1 do 4 znaków." + +#: gofon/phoneaccount/class_phoneAccount.inc:1716 +#, fuzzy +msgid "Phone pin contains invalid characters!" +msgstr "Atrybut hasło jest pusty lub zawiera nieprawidłowe znaki." + +#: gofon/phoneaccount/class_phoneAccount.inc:1723 +#, php-format +msgid "The parameter %s contains invalid char. '!,#' is used as delimiter" +msgstr "" +"Parametr %s zawiera nieprawidłowy znak. '!,#' jest użyty jako separator" + +#: gofon/conference/headpage.tpl:6 +#: gofon/conference/class_divListConferences.inc:31 +#: gofon/conference/class_divListConferences.inc:32 +msgid "List of conference rooms" +msgstr "Lista sal konferencyjnych" + +#: gofon/conference/headpage.tpl:24 +msgid "" +"This menu allows you to create, delete and edit selected phone conferences. " +"Having a large number of phone conferences, you might prefer the range " +"selectors on top of the conferences list." +msgstr "" +"To menu umożliwia tworzenie, usuwanie oraz edycję wybranych konferencji " +"telefonicznych. Posiadając dużą ilość konferencji, może okazać się " +"wygodniejsze korzystanie z selektorów zakresu na górze listy konferencji." + +#: gofon/conference/headpage.tpl:35 +msgid "Display users matching" +msgstr "Wyświetl użytkowników pasujących" + +#: gofon/conference/headpage.tpl:36 +msgid "Regular expression for matching user names" +msgstr "Wyrażenie regularne do dopasowania nazw użytkowników" + +#: gofon/conference/remove.tpl:6 +msgid "" +"This includes 'all' accounts, systems, etc. in this subtree. Please double " +"check if your really want to do this since there is no way for GOsa to get " +"your data back." +msgstr "" +"Operacja odnosi sie do 'wszystkich' kont, systemów, etc w tym poddrzewie. " +"Proszę upewnić się czy kontynuować, gdyż nie ma operacji powrotu." + +#: gofon/conference/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Przed wykonaniem tej operacji zaleca się wykonanie kopii bezpieczeństwa " +"drzewa LDAP. Naciśnij 'Usuń' aby kontynuować, lub 'Anuluj' aby przerwać." + +#: gofon/conference/class_phoneConferenceManagment.inc:24 +msgid "Phone conferences" +msgstr "Konferencje telefoniczne" + +#: gofon/conference/class_phoneConferenceManagment.inc:25 +msgid "Management" +msgstr "Zarządzanie" + +#: gofon/conference/class_phoneConferenceManagment.inc:206 +#: gofon/conference/class_phoneConferenceManagment.inc:267 +#, fuzzy +msgid "conference" +msgstr "Konferencja" + +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "You have not permission to delete this entry!" +msgstr "Brak uprawnień do usunięcia tego departamentu." + +#: gofon/conference/generic.tpl:5 +msgid "Properties" +msgstr "Właściwości" + +#: gofon/conference/generic.tpl:15 gofon/conference/paste_generic.tpl:5 +msgid "Conference name" +msgstr "Nazwa konferencji" + +#: gofon/conference/generic.tpl:21 gofon/conference/paste_generic.tpl:10 +msgid "Name of conference to create" +msgstr "Nazwa tworzonej konferencji" + +#: gofon/conference/generic.tpl:28 +msgid "Type" +msgstr "Typ" + +#: gofon/conference/generic.tpl:35 +msgid "Choose subtree to place conference in" +msgstr "Wybierz poddrzewo do umieszczenia konferencji" + +#: gofon/conference/generic.tpl:82 +#, fuzzy +msgid "Select language" +msgstr "Język" + +#: gofon/conference/generic.tpl:104 +msgid "Descriptive text for department" +msgstr "Tekst opisujący departament" + +#: gofon/conference/generic.tpl:110 +msgid "Lifetime (in days)" +msgstr "Wiek (w dniach)" + +#: gofon/conference/generic.tpl:157 +#: gofon/conference/class_phoneConferenceGeneric.inc:783 +msgid "Preset PIN" +msgstr "Prekonfiturowany PIN" + +#: gofon/conference/generic.tpl:165 +#: gofon/conference/class_phoneConferenceGeneric.inc:384 +#: gofon/conference/class_divListConferences.inc:58 +msgid "PIN" +msgstr "PIN" + +#: gofon/conference/generic.tpl:177 +#: gofon/conference/class_phoneConferenceGeneric.inc:784 +msgid "Record conference" +msgstr "Nagrywanie konferencji" + +#: gofon/conference/generic.tpl:185 +msgid "Sound file format" +msgstr "Format pliku dźwiękowego" + +#: gofon/conference/generic.tpl:188 +msgid "Choose subtree to place department in" +msgstr "Wybierz poddrzewo do umieszczenia departamentu" + +#: gofon/conference/generic.tpl:208 +#: gofon/conference/class_phoneConferenceGeneric.inc:785 +msgid "Play music on hold" +msgstr "Odtwarzaj muzykę podczas zawieszenia" + +#: gofon/conference/generic.tpl:216 +msgid "Activate session menu" +msgstr "Aktywuj menu sesji" + +#: gofon/conference/generic.tpl:224 +msgid "Announce users joining or leaving the conference" +msgstr "Zapowiadaj użytkowników dołączających lub opuszczających konferencję" + +#: gofon/conference/generic.tpl:232 +msgid "Count users" +msgstr "Zlicz użytkowników" + +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#, php-format +msgid "Cannot delete entry from server '%s' because it seems to be removed!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:379 +#, fuzzy, php-format +msgid "" +"The previously selected asterisk home server '%s' is no longer available!" +msgstr "Ta aplikacja nie jest już dostępna." + +#: gofon/conference/class_phoneConferenceGeneric.inc:396 +#: gofon/conference/class_phoneConferenceGeneric.inc:792 +msgid "Lifetime" +msgstr "Wiek" + +#: gofon/conference/class_phoneConferenceGeneric.inc:641 +#: gofon/conference/class_phoneConferenceGeneric.inc:643 +#, fuzzy, php-format +msgid "'%s' is already assigned to '%s'!" +msgstr "Podany numer telefonu '%s' jest już przypisany do '%s'." + +#: gofon/conference/class_phoneConferenceGeneric.inc:765 +#: gofon/conference/class_divListConferences.inc:95 +#: gofon/conference/class_divListConferences.inc:208 +msgid "Conference" +msgstr "Konferencja" + +#: gofon/conference/class_phoneConferenceGeneric.inc:766 +msgid "Phone conference management" +msgstr "Zarządzanie konferencją telefoniczną" + +#: gofon/conference/class_phoneConferenceGeneric.inc:771 +#, fuzzy +msgid "GOfon conference" +msgstr "Konferencje telefoniczne" + +#: gofon/conference/class_phoneConferenceGeneric.inc:778 +msgid "Conference PIN" +msgstr "PIN Konferencji" + +#: gofon/conference/class_phoneConferenceGeneric.inc:786 +msgid "Activate menu" +msgstr "Aktywuj menu" + +#: gofon/conference/class_phoneConferenceGeneric.inc:787 +msgid "Announce user activity" +msgstr "Zapowiadaj aktywność użytkownika" + +#: gofon/conference/class_phoneConferenceGeneric.inc:788 +msgid "Count user" +msgstr "Zlicz użytkownika" + +#: gofon/conference/class_phoneConferenceGeneric.inc:789 +msgid "Conference type" +msgstr "Typ konferencji" + +#: gofon/conference/class_phoneConferenceGeneric.inc:791 +msgid "Format" +msgstr "format" + +#: gofon/conference/class_phoneConferenceGeneric.inc:794 +#: gofon/conference/class_divListConferences.inc:57 +msgid "Owner" +msgstr "Właściciel" + +#: gofon/conference/main.inc:48 gofon/conference/main.inc:50 +msgid "Conference management" +msgstr "Zarządzanie konferencją" + +#: gofon/conference/class_divListConferences.inc:65 +msgid "Regular expression for matching conference names" +msgstr "Wyrażenie regularne dla dopasowania nazw konferencji" + +#: gofon/conference/class_divListConferences.inc:150 +msgid "Edit this entry" +msgstr "Edytuj ten obiekt" + +#: gofon/conference/class_divListConferences.inc:158 +msgid "Delete this entry" +msgstr "Usuń ten obiekt" + +#: gofon/conference/class_divListConferences.inc:185 +msgid "Unknown" +msgstr "Nieznane" + +#: gofon/conference/class_divListConferences.inc:225 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Nazwa departamentu" + +#: gofon/conference/class_divListConferences.inc:225 +#, fuzzy +msgid "conferences" +msgstr "Konferencja" + +#: gofon/fonreports/class_fonreport.inc:6 +msgid "Phone Reports" +msgstr "Raporty telefoniczne" + +#: gofon/fonreports/class_fonreport.inc:210 +#, fuzzy +msgid "Insufficient permissions" +msgstr "Uprawnienia pliku" + +#: gofon/fonreports/class_fonreport.inc:229 +msgid "Y-M-D" +msgstr "R-M-D" + +#: gofon/fonreports/class_fonreport.inc:396 +#: gofon/fonreports/class_fonreport.inc:397 +#: gofon/fonreports/class_fonreport.inc:404 gofon/fonreports/main.inc:22 +msgid "Phone reports" +msgstr "Raporty telefoniczne" + +#: gofon/fonreports/class_fonreport.inc:397 +#, fuzzy +msgid "All entries are readonly" +msgstr "Wszystkie pola są zapisywalne" + +#: gofon/fonreports/class_fonreport.inc:409 gofon/fonreports/contents.tpl:30 +msgid "Date" +msgstr "Data" + +#: gofon/fonreports/class_fonreport.inc:410 gofon/fonreports/contents.tpl:31 +msgid "Source" +msgstr "Źródło" + +#: gofon/fonreports/class_fonreport.inc:411 gofon/fonreports/contents.tpl:32 +msgid "Destination" +msgstr "Cel" + +#: gofon/fonreports/class_fonreport.inc:412 gofon/fonreports/contents.tpl:33 +msgid "Channel" +msgstr "Kanał" + +#: gofon/fonreports/class_fonreport.inc:413 +#, fuzzy +msgid "Application called" +msgstr "Nazwa aplikacji" + +#: gofon/fonreports/class_fonreport.inc:414 +#, fuzzy +msgid "Disposition" +msgstr "Rozłączenie" + +#: gofon/fonreports/class_fonreport.inc:415 gofon/fonreports/contents.tpl:36 +msgid "Duration" +msgstr "Czas trwania" + +#: gofon/fonreports/contents.tpl:2 +msgid "Filter" +msgstr "Filtr" + +#: gofon/fonreports/contents.tpl:6 +msgid "Search for" +msgstr "Szukaj dla" + +#: gofon/fonreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Wprowadź poszukiwaną nazwę użytkownika" + +#: gofon/fonreports/contents.tpl:8 gofon/fonreports/contents.tpl:16 +msgid "in" +msgstr "w" + +#: gofon/fonreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Wybierz poddrzewo od którego zacząć szukanie" + +#: gofon/fonreports/contents.tpl:12 +msgid "during" +msgstr "podczas" + +#: gofon/fonreports/contents.tpl:21 +msgid "Search" +msgstr "Szukaj" + +#: gofon/fonreports/contents.tpl:34 +msgid "Application" +msgstr "Aplikacja" + +#: gofon/fonreports/contents.tpl:35 +msgid "Status" +msgstr "Status" + +#: gofon/fonreports/contents.tpl:51 +msgid "Search returned no results..." +msgstr "Wyszukiwanie nie zwróciło żadnych wyników..." + +#~ msgid "Addons" +#~ msgstr "Dodatki" + +#, fuzzy +#~ msgid "GOfon reports" +#~ msgstr "Raporty telefoniczne" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopiuj" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "wytnij" + +#~ msgid "Paste" +#~ msgstr "Wklej" + +#~ msgid "cut" +#~ msgstr "wytnij" + +#~ msgid "Cut this entry" +#~ msgstr "Wytnij ten obiekt" + +#~ msgid "copy" +#~ msgstr "kopiuj" + +#~ msgid "Copy this entry" +#~ msgstr "Kopiuj ten obiekt" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Nie można wybrać bazy %s na %s." + +#, fuzzy +#~ msgid "Insufficient permissions to view this attribute" +#~ msgstr "Brak uprawnień do zmian atrybutu '%s' w goFonMacro." + +#~ msgid "This account has no phone extensions." +#~ msgstr "To konto nie posiada rozszerzeń telefonu." + +#~ msgid "" +#~ "This account has phone features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "To konto ma włączone cechy telefonu. Można je wyłączyć klikając poniżej." + +#~ msgid "" +#~ "This account has phone features disabled. You can't enable them while no " +#~ "uid is set." +#~ msgstr "" +#~ "To konto posiada wyłączone rozszerzenia telefonu. Nie można włączyć tego " +#~ "rozszerzenia dopóki nie jest ustawiony uid." + +#~ msgid "" +#~ "This account has phone features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "To konto ma wyłączone cechy telefonu. Można je włączyć klikając poniżej." + +#, fuzzy +#~ msgid "Cannot connect to %s database on server '%s'!" +#~ msgstr "Nie można wybrać bazy %s na %s." + +#, fuzzy +#~ msgid "Cannot select %s database on server '%s'!" +#~ msgstr "Nie można wybrać bazy %s na %s." + +#, fuzzy +#~ msgid "Lifetime is not valid!" +#~ msgstr "Wiek (w dniach)" + +#, fuzzy +#~ msgid "Cannot query %s database on server '%s'!" +#~ msgstr "Nie można wybrać bazy %s na %s." + +#~ msgid "Name - Number" +#~ msgstr "Nazwa - Numer" + +#~ msgid "Select to search within subtrees" +#~ msgstr "Zaznacz aby wyszukiwać wewnątrz poddrzew" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Szukaj wewnątrz tego poddrzewa" + +#, fuzzy +#~ msgid "Number of listed conferences" +#~ msgstr "Nagrywanie konferencji" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Nazwa departamentu" + +#, fuzzy +#~ msgid "Cannot insert new macro on server '%s'!" +#~ msgstr "Logowanie użytkownika nieudane, odpowiedź serwera LDAP '%s'." + +#, fuzzy +#~ msgid "Display name is not set!" +#~ msgstr "Wyświetl nazwę" + +#~ msgid "This 'dn' is no phone macro." +#~ msgstr "Ten 'dn' nie jest makrem telefonu." + +#, fuzzy +#~ msgid "You're about to delete the following user(s) %s" +#~ msgstr "Zamierzasz usunąć użytkownika %s." + +#~ msgid "You're about to delete the whole LDAP subtree placed under '%s'." +#~ msgstr "Zamierzasz usunąć całe poddrzewo LDAP umieszczone pod '%s'." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Edit" +#~ msgstr "Edytuj" + +#, fuzzy +#~ msgid "You're about to delete the following macro(s) %s" +#~ msgstr "Zamierzasz usunąć użytkownika %s." + +#~ msgid "You're about to delete the macro '%s'." +#~ msgstr "Zamierzasz usunąć makro '%s'." + +#~ msgid "This 'dn' has no phone features." +#~ msgstr "Ten 'dn' nie posiada cech telefonu." + +#, fuzzy +#~ msgid "'0' is a reserved name and cannot be used!" +#~ msgstr "Nazwa telefonu '0' jest zarezerwowana i nie może być użyta." + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#, fuzzy +#~ msgid "VoIP service - Asterisk management" +#~ msgstr "Zarządzanie Asterisk" + +#~ msgid "The attribute DB user is empty or contains invalid characters." +#~ msgstr "Atrybut użytkownik BD jest pusty lub zawiera nieprawidłowe znaki." + +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "Atrybut hasło jest pusty lub zawiera nieprawidłowe znaki." + +#~ msgid "" +#~ "The attribute local dial prefix is empty or contains invalid characters." +#~ msgstr "" +#~ "Atrybut lokalnego prefiksu jest pusty lub zawiera nieprawidłowe znaki." + +#~ msgid "" +#~ "The attribute country dial prefix is empty or contains invalid characters." +#~ msgstr "" +#~ "Atrybut krajowego prefiksu jest pusty lub zawiera nieprawidłowe znaki." + +#~ msgid "" +#~ "Phone queue is enabled for this group. You can disable it by clicking " +#~ "below." +#~ msgstr "" +#~ "Kolejka telefoniczna jest włączona dla tej grupy. Można ją wyłączyć " +#~ "klikając poniżej." + +#~ msgid "" +#~ "For this group the phone queues are disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Kolejka telefoniczna jest wyłączona dla tej grupy. Można ją włączyć " +#~ "klikając poniżej." + +#, fuzzy +#~ msgid "Please select a valid goFonHomeServer." +#~ msgstr "Proszę wybrać prawidłowy serwer pocztowy." + +#~ msgid "Timeout must be numeric" +#~ msgstr "Limit czasu musi być liczbą" + +#~ msgid "Retry must be numeric" +#~ msgstr "Powtórzenia muszą być liczbą" + +#~ msgid "Max queue length must be numeric" +#~ msgstr "Maksymalna długość kolejki musi być liczbą" + +#~ msgid "Announce frequency must be numeric" +#~ msgstr "Częstotliwość zapowiadania musi być liczbą" + +#~ msgid "There must be least one queue number defined." +#~ msgstr "Musi być zdefiniowany co najmniej jeden numer kolejki." + +#, fuzzy +#~ msgid "Cannot remove queue entries from database!" +#~ msgstr "Błąd podczas eksportowania żądanych wpisów!" + +#, fuzzy +#~ msgid "Mysql query failed." +#~ msgstr "Zapytanie do bazy danych nieudane" + +#~ msgid "Saving phone queue failed" +#~ msgstr "Zapisywanie kolejki telefonu nieudane" + +#~ msgid "Removing phone queue failed" +#~ msgstr "Usuwanie kolejki telefonu nieudane" + +#, fuzzy +#~ msgid "Updating gofon home server failed for '%s'." +#~ msgstr "Aktualizacja usługi DNS nieudana" + +#, fuzzy +#~ msgid "Removing of system phone/generic with dn '%s' failed!" +#~ msgstr "Usuwanie konta telefonicznego z dn '%s' nieudane" + +#, fuzzy +#~ msgid "Saving of phone/generic with dn '%s' failed!" +#~ msgstr "Zapisywanie konta goFonMacro z dn '%s' nieudane." + +#, fuzzy +#~ msgid "" +#~ "The MySQL Server '%s' isn't reachable as user '%s'. Abort saving entries " +#~ "to keep the database consistent, check GOsa log for mysql error." +#~ msgstr "" +#~ "Serwer MySQL '%s' nie jest dostępny dla użytkownika '%s', sprawdź log " +#~ "GOsa dla błedu mysql." + +#, fuzzy +#~ msgid "" +#~ "The old MySQL home server '%s' isn't reachable as user '%s'. Abort saving " +#~ "entries to keep the database consistent, check GOsa log for mysql error." +#~ msgstr "" +#~ "Serwer MySQL '%s' nie jest dostępny dla użytkownika '%s', sprawdź log " +#~ "GOsa dla błedu mysql." + +#, fuzzy +#~ msgid "Phone number is invalid!" +#~ msgstr "Numery telefonów" + +#~ msgid "" +#~ "The specified Voicemail PIN contains invalid characters, only numeric " +#~ "values are allowed here." +#~ msgstr "" +#~ "Podany PIN Voicemail zawiera niedozwolone znaki, tylko cyfry są dozwolone." + +#~ msgid "" +#~ "The specified phone PIN contains invalid characters, only aphanumeric " +#~ "values are allowed here." +#~ msgstr "" +#~ "Podany PIN telefonu zawiera niedozwolone znaki, tylko znaki " +#~ "alfanumeryczne są dozwolone." + +#~ msgid "You need to specify at least one phone number!" +#~ msgstr "Musisz podac co najmniej jeden numer telefonu!" + +#~ msgid "Saving of user/phone account with dn '%s' failed." +#~ msgstr "Zapisywanie konta telefonicznego z dn '%s' nieudane" + +#~ msgid "Removing of user/phone account with dn '%s' failed." +#~ msgstr "Usuwanie konta telefonicznego z dn '%s' nieudane" + +#, fuzzy +#~ msgid "Saving of goFonConference/generic with dn '%s' failed!" +#~ msgstr "Zapisywanie konta goFonMacro z dn '%s' nieudane." + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed!" +#~ msgstr "Usuwanie konta goFonMakro z dn '%s' nieudane." + +#~ msgid "Saving of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "Zapisywanie konta goFonMacro z dn '%s' nieudane." + +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "Usuwanie konta goFonMakro z dn '%s' nieudane." + +#~ msgid "" +#~ "Can't save any changes to asterisk database, there is currently no mysql " +#~ "extension available in your php setup." +#~ msgstr "" +#~ "Nie można zapisać zmian do bazy asterisk. Brak funkcjonalnosci mysql w " +#~ "ustawieniach php." + +#, fuzzy +#~ msgid "" +#~ "The MySQL home server '%s' isn't reachable as user '%s', check GOsa log " +#~ "for mysql error." +#~ msgstr "" +#~ "Serwer MySQL '%s' nie jest dostępny dla użytkownika '%s', sprawdź log " +#~ "GOsa dla błedu mysql." + +#, fuzzy +#~ msgid "" +#~ "The MySQL initial home server '%s' isn't reachable as user '%s', check " +#~ "GOsa log for mysql error." +#~ msgstr "" +#~ "Serwer MySQL '%s' nie jest dostępny dla użytkownika '%s', sprawdź log " +#~ "GOsa dla błedu mysql." + +#, fuzzy +#~ msgid "Can't select database '%s' on initial home server '%s'." +#~ msgstr "Nie można wybrać bazy %s na %s." + +#~ msgid "" +#~ "There is currently no asterisk server defined. Possibly you are missing a " +#~ "server that handles the asterisk management (goFonServer). Your settings " +#~ "can't be saved to asterisk database." +#~ msgstr "" +#~ "Brak zdefiniowanego serwera asterisk. Prawdopodobnie prakuje serwera " +#~ "który obsługuje zarządzanie asterisk (goFonServer). Ustawienia nie mogą " +#~ "być zapisane do bazy asterisk." + +#, fuzzy +#~ msgid "" +#~ "Can't delete because there are users which are depending on this phone. " +#~ "One of them is user '%s'." +#~ msgstr "" +#~ "Nie można usunąć ponieważ są użytkownicy zależni od tego telefonu. Jednym " +#~ "z takich użytkowników jest '%s'." + +#~ msgid "The required field IP address is empty." +#~ msgstr "Wymagane pole adres IP jest puste." + +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "Pole adres IP zawiera nieprawidłowy adres." + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "Proszę podać prawidłową nazwę dla tego typu mime." + +#~ msgid "The required field 'Phone name' is not set." +#~ msgstr "Wymagane pole 'Nazwa telefonu' jest puste." + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "Już istnieje wpis '%s' w wybranym elemencie" + +#~ msgid "Can't connect to phone database, no reports can be shown!" +#~ msgstr "" +#~ "Nie można połączyć się z bazą telefonów, nie można pokazać żadnych " +#~ "raportów!" + +#~ msgid "There is no mysql extension available, please check your php setup." +#~ msgstr "Brak rozszerzenia mysql, proszę sprawdzić ustawienia php." + +#~ msgid "Can't select phone database for report generation!" +#~ msgstr "Nie można wybrać bazy telefonów aby generować raport!" + +#~ msgid "Query for phone database failed!" +#~ msgstr "Zapytanie do bazy telefonów nieudane!" + +#~ msgid "" +#~ "Can't save any changes to asterisk database, there is no mysql extension " +#~ "available." +#~ msgstr "" +#~ "Nie można zapisać zmian w bazie asterisk. Brak wsparcia dla mysql w " +#~ "ustawieniach php." + +#~ msgid "Error while performing query:" +#~ msgstr "Błąd podczas wykonywania zapytania:" + +#~ msgid "" +#~ "The macro you selected, is no longer available for you, please choose " +#~ "another one." +#~ msgstr "Makro które wybrano nie jest już dostępne, proszę wybrać inne." + +#~ msgid "Please enter a valid phone number!" +#~ msgstr "Proszę podać prawidłowy numer telefonu." + +#~ msgid "" +#~ "The MySQL Server '%s' isn't reachable as user '%s', check GOsa log for " +#~ "mysql error." +#~ msgstr "" +#~ "Serwer MySQL '%s' nie jest dostępny dla użytkownika '%s', sprawdź log " +#~ "GOsa dla błedu mysql." + +#~ msgid "" +#~ "Can't remove phone account, the mysql extension is not present in php " +#~ "configuration." +#~ msgstr "" +#~ "Nie można usunąć konta telefonicznego. Brak wsparcia dla mysql w " +#~ "ustawieniach php." + +#~ msgid "Please enter a PIN." +#~ msgstr "Proszę wpisać PIN." + +#~ msgid "Please enter a name for the conference." +#~ msgstr "Proszę podać nazwę konferencji." + +#~ msgid "Only numeric chars are allowed in Number field." +#~ msgstr "Tylko cyfry są dozwolone w polu Numer." + +#~ msgid "Only numbers are allowed in Lifetime." +#~ msgstr "Tylko liczby są dozwolone w okresie życia" + +#, fuzzy +#~ msgid "There is already a conference with this name in the current tree." +#~ msgstr "Już istnieje profil ze zdefiniowaną tą nazwą klasy." + +#, fuzzy +#~ msgid "Removing macro from '%s' failed. Check GOsa log for mysql error." +#~ msgstr "" +#~ "Serwer MySQL '%s' nie jest dostępny dla użytkownika '%s', sprawdź log " +#~ "GOsa dla błedu mysql." + +#, fuzzy +#~ msgid "More than one '(' is currently not supported. Line : '%s'." +#~ msgstr "" +#~ "Automatyczne tworzenie typu '%s' nie jest obecnie wspierane. Proszę " +#~ "skontaktować się z zespołem GOsa." + +#, fuzzy +#~ msgid "More than one ')' is currently not supported. Line : '%s'." +#~ msgstr "" +#~ "Automatyczne tworzenie typu '%s' nie jest obecnie wspierane. Proszę " +#~ "skontaktować się z zespołem GOsa." + +#, fuzzy +#~ msgid "" +#~ "There must be at least one server with an asterisk database to save this " +#~ "phone macro." +#~ msgstr "" +#~ "Musi być zaznaczony co najmniej jeden serwer NTP lub zaznaczony tryb " +#~ "dziedziczenia." + +#~ msgid "The given cn '%s' already exists." +#~ msgstr "Podane cn '%s' już istnieje." + +#~ msgid "You must specify the 'Display Name' in order to save this macro" +#~ msgstr "Należy podać 'Nazwa wyświetlana' aby zapisać to makro" + +#~ msgid "The given cn is too long, to create a Makro entry, maximum 20 chars." +#~ msgstr "" +#~ "Podane cn jest zbyt długie aby utworzyć wpis Makro, maksimum 20 znaków." + +#, fuzzy +#~ msgid "" +#~ "This macro is still in use. It is necessary to mark this macro as visible " +#~ "for users." +#~ msgstr "" +#~ "To makro jest wciąż używane. Aby je usunąć upewnij się że nikt nie " +#~ "zaznaczył tego Makra." + +#~ msgid "Makro length must be lower than 100 lines" +#~ msgstr "Długość makro musi być mniejsza niż 100 linii" + +#, fuzzy +#~ msgid "You can't save an empty macro." +#~ msgstr "Nie można zapisać pliku '%s'." + +#, fuzzy +#~ msgid "" +#~ "This macro is still in use. To delete this Macro ensure that nobody has " +#~ "selected it." +#~ msgstr "" +#~ "To makro jest wciąż używane. Aby je usunąć upewnij się że nikt nie " +#~ "zaznaczył tego Makra." + +#, fuzzy +#~ msgid "" +#~ "Could not remove the macro entry from asterisk databases. Please check " +#~ "your asterisk database configurations." +#~ msgstr "" +#~ "OpenGroupware: Nie można połączyć się z bazą. Proszę sprawdzić podane " +#~ "parametry konfiguracji." + +#~ msgid "The parameter %s has incorrect value for type bool." +#~ msgstr "Parametr %s posiada nieprawidłową wartość dla typu logicznego." + +#~ msgid "" +#~ "Parameter count of the macro changed, you must update each user which are " +#~ "using this macro '%s'." +#~ msgstr "" +#~ "Liczba parametrów tego makra została zmieniona. Należy powiadomić " +#~ "wszustkich użytkowników tego makra '%s'." + +#~ msgid "You are not allowed to delete this macro!" +#~ msgstr "Brak uprawnień do usunięcia tego makro!" diff --git a/trunk/gosa-plugins/gofon/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofon/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ad7b1fed1 --- /dev/null +++ b/trunk/gosa-plugins/gofon/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,1985 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/ogroups/gofon/phonequeue.tpl:2 +msgid "" +"Only users with the same asterisk home server will be included to this queue." +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:5 +#, fuzzy +msgid "Queue Settings" +msgstr "Настройки Samba" + +#: admin/ogroups/gofon/phonequeue.tpl:8 gofon/phoneaccount/generic.tpl:1 +#: gofon/phoneaccount/generic.tpl:6 gofon/phoneaccount/paste_generic.tpl:2 +#: gofon/phoneaccount/paste_generic.tpl:6 +msgid "Phone numbers" +msgstr "Телефонные номера" + +#: admin/ogroups/gofon/phonequeue.tpl:12 +#: admin/ogroups/gofon/phonequeue.tpl:135 +#, fuzzy +msgid "Generic queue Settings" +msgstr "Общая информация о пользователе" + +#: admin/ogroups/gofon/phonequeue.tpl:24 +msgid "Up" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:27 +#, fuzzy +msgid "Down" +msgstr "Домен" + +#: admin/ogroups/gofon/phonequeue.tpl:47 gofon/conference/generic.tpl:141 +msgid "Options" +msgstr "Параметры" + +#: admin/ogroups/gofon/phonequeue.tpl:50 +#: admin/ogroups/gofon/class_phonequeue.inc:305 +#: admin/ogroups/gofon/class_phonequeue.inc:929 +#: gofon/phoneaccount/generic.tpl:58 +#: gofon/phoneaccount/class_phoneAccount.inc:1273 +#: gofon/phoneaccount/class_phoneAccount.inc:1612 +#: gofon/conference/generic.tpl:68 +#: gofon/conference/class_phoneConferenceGeneric.inc:782 +#, fuzzy +msgid "Home server" +msgstr "Сервисы" + +#: admin/ogroups/gofon/phonequeue.tpl:62 +#: admin/ogroups/gofon/class_phonequeue.inc:948 +#: gofon/conference/generic.tpl:78 +#: gofon/conference/class_phoneConferenceGeneric.inc:780 +msgid "Language" +msgstr "Язык" + +#: admin/ogroups/gofon/phonequeue.tpl:75 +#: admin/ogroups/gofon/class_phonequeue.inc:311 +#: admin/ogroups/gofon/class_phonequeue.inc:927 +#, fuzzy +msgid "Timeout" +msgstr "Таймаут (с)" + +#: admin/ogroups/gofon/phonequeue.tpl:85 +#: admin/ogroups/gofon/class_phonequeue.inc:314 +#: admin/ogroups/gofon/class_phonequeue.inc:952 +msgid "Retry" +msgstr "Повторить" + +#: admin/ogroups/gofon/phonequeue.tpl:95 +#, fuzzy +msgid "Strategy" +msgstr "Адм. единица" + +#: admin/ogroups/gofon/phonequeue.tpl:109 +#: admin/ogroups/gofon/class_phonequeue.inc:928 +msgid "Max queue length" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:119 +#: admin/ogroups/gofon/class_phonequeue.inc:320 +#: admin/ogroups/gofon/class_phonequeue.inc:930 +msgid "Announce frequency" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:125 +msgid "(in seconds)" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:133 +msgid "Queue sound setup" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:138 +msgid "Use music on hold instead of ringing" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:149 +#: admin/ogroups/gofon/class_phonequeue.inc:937 +msgid "Music on hold" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:159 +#, fuzzy +msgid "Welcome sound file" +msgstr "Добро пожаловать %s!" + +#: admin/ogroups/gofon/phonequeue.tpl:169 +#, fuzzy +msgid "Announce message" +msgstr "Сообщение автоответчика" + +#: admin/ogroups/gofon/phonequeue.tpl:179 +msgid "Sound file for 'You are next ...'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:189 +msgid "'There are ...'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:199 +msgid "'... calls waiting'" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:209 +#, fuzzy +msgid "'Thank you' message" +msgstr "Сообщение о состоянии" + +#: admin/ogroups/gofon/phonequeue.tpl:219 +msgid "'minutes' sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:229 +msgid "'seconds' sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:239 +msgid "Hold sound file" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:249 +#, fuzzy +msgid "Less Than sound file" +msgstr "Добро пожаловать %s!" + +#: admin/ogroups/gofon/phonequeue.tpl:267 +#, fuzzy +msgid "Phone attributes " +msgstr "Атрибут DN пользователей" + +#: admin/ogroups/gofon/phonequeue.tpl:277 +#: admin/ogroups/gofon/class_phonequeue.inc:950 +msgid "Announce holdtime" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:285 +#: admin/ogroups/gofon/class_phonequeue.inc:931 +msgid "Allow the called user to transfer his call" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:293 +#: admin/ogroups/gofon/class_phonequeue.inc:932 +msgid "Allows calling user to transfer call" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:305 +#: admin/ogroups/gofon/class_phonequeue.inc:933 +msgid "Allow the called to hangup by pressing *" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:313 +#: admin/ogroups/gofon/class_phonequeue.inc:935 +msgid "Allows calling to hangup by pressing *" +msgstr "" + +#: admin/ogroups/gofon/phonequeue.tpl:321 +#: admin/ogroups/gofon/class_phonequeue.inc:934 +msgid "Ring instead of playing background music" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, fuzzy +msgid "Obsolete entry" +msgstr "Удалить" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, php-format +msgid "" +"The current home server is not available anymore. It will be moved to '%s' " +"if you save this entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:121 +#, fuzzy +msgid "ring all" +msgstr "Терминалы" + +#: admin/ogroups/gofon/class_phonequeue.inc:122 +msgid "round robin" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:123 +msgid "least recently called" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:124 +msgid "fewest completed calls" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:125 +#, fuzzy +msgid "random" +msgstr "и" + +#: admin/ogroups/gofon/class_phonequeue.inc:126 +msgid "round robin with memory" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:210 +#, fuzzy +msgid "Remove the phone queue from this Account" +msgstr "Удалить телефонный аккаунт" + +#: admin/ogroups/gofon/class_phonequeue.inc:211 +#: admin/ogroups/gofon/class_phonequeue.inc:214 +#, fuzzy +msgid "phone queue" +msgstr "Создать телефонный аккаунт" + +#: admin/ogroups/gofon/class_phonequeue.inc:213 +#, fuzzy +msgid "Create phone queue" +msgstr "Создать телефонный аккаунт" + +#: admin/ogroups/gofon/class_phonequeue.inc:302 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone queue." +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:317 +#, fuzzy +msgid "Queue length" +msgstr "Настройки Samba" + +#: admin/ogroups/gofon/class_phonequeue.inc:323 +#: gofon/conference/class_phoneConferenceGeneric.inc:392 +#: gofon/conference/class_divListConferences.inc:56 +#, fuzzy +msgid "Number" +msgstr "Номер телефона" + +#: admin/ogroups/gofon/class_phonequeue.inc:346 +#: admin/ogroups/gofon/class_phonequeue.inc:394 +#, fuzzy +msgid "asterisk" +msgstr "Дата" + +#: admin/ogroups/gofon/class_phonequeue.inc:378 +#: admin/ogroups/gofon/class_phonequeue.inc:732 +#: gofon/macro/class_gofonMacro.inc:392 gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/conference/class_phoneConferenceGeneric.inc:430 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +#, fuzzy +msgid "GOfon" +msgstr "Телефонные отчеты" + +#: admin/ogroups/gofon/class_phonequeue.inc:437 +msgid "Cannot find old queue entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:523 +#, php-format +msgid "" +"Found more than one entry named '%s' in queue table. Please inform your " +"system administrator!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:764 +#: admin/ogroups/gofon/class_phonequeue.inc:766 +#, fuzzy +msgid "telephone number" +msgstr "Телефонные номера" + +#: admin/ogroups/gofon/class_phonequeue.inc:823 +#: admin/ogroups/gofon/class_phonequeue.inc:865 +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 gofon/macro/class_gofonMacro.inc:467 +#: gofon/macro/class_gofonMacro.inc:505 +#: gofon/phoneaccount/class_phoneAccount.inc:958 +#: gofon/phoneaccount/class_phoneAccount.inc:1077 +#: gofon/phoneaccount/class_phoneAccount.inc:1350 +#: gofon/phoneaccount/class_phoneAccount.inc:1422 +#: gofon/phoneaccount/class_phoneAccount.inc:1432 +#: gofon/phoneaccount/class_phoneAccount.inc:1466 +#: gofon/conference/class_phoneConferenceGeneric.inc:260 +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "Error" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:838 +#: admin/ogroups/gofon/class_phonequeue.inc:893 +#: admin/systems/services/gofon/class_goFonServer.inc:146 +#: admin/systems/gofon/class_phoneGeneric.inc:282 +#: admin/systems/gofon/class_phoneGeneric.inc:428 +#: admin/systems/gofon/class_phoneGeneric.inc:442 +#: admin/systems/gofon/class_phoneGeneric.inc:459 +#: gofon/macro/class_gofonMacroParameters.inc:401 +#: gofon/macro/class_gofonMacro.inc:479 gofon/macro/class_gofonMacro.inc:490 +#: gofon/macro/class_gofonMacro.inc:526 +#: gofon/phoneaccount/class_phoneAccount.inc:1377 +#: gofon/phoneaccount/class_phoneAccount.inc:1513 +#: gofon/conference/class_phoneConferenceGeneric.inc:718 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/ogroups/gofon/class_phonequeue.inc:901 +#: gofon/conference/generic.tpl:120 gofon/conference/paste_generic.tpl:15 +#, fuzzy +msgid "Phone number" +msgstr "Телефонные номера" + +#: admin/ogroups/gofon/class_phonequeue.inc:918 +#: gofon/phoneaccount/class_phoneAccount.inc:6 +#: gofon/phoneaccount/class_phoneAccount.inc:911 +#: gofon/phoneaccount/class_phoneAccount.inc:924 +#: gofon/phoneaccount/class_phoneAccount.inc:936 +#: gofon/phoneaccount/class_phoneAccount.inc:940 +#: gofon/phoneaccount/class_phoneAccount.inc:943 +#: gofon/phoneaccount/class_phoneAccount.inc:1597 +msgid "Phone" +msgstr "Телефон" + +#: admin/ogroups/gofon/class_phonequeue.inc:919 +#, fuzzy +msgid "Phone group" +msgstr "Члены телефонной группы" + +#: admin/ogroups/gofon/class_phonequeue.inc:938 +#, fuzzy +msgid "Welcome music" +msgstr "Добро пожаловать %s!" + +#: admin/ogroups/gofon/class_phonequeue.inc:939 +msgid "Report hold time" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:940 +msgid "'You are next' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:941 +msgid "'There are' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:942 +msgid "'Call waiting' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:943 +#, fuzzy +msgid "'Thank you' sound" +msgstr "Сообщение о состоянии" + +#: admin/ogroups/gofon/class_phonequeue.inc:944 +msgid "'Minutes' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:945 +#, fuzzy +msgid "'Seconds' sound" +msgstr "Добро пожаловать %s!" + +#: admin/ogroups/gofon/class_phonequeue.inc:946 +#, fuzzy +msgid "'Less than' sound" +msgstr "Добро пожаловать %s!" + +#: admin/ogroups/gofon/class_phonequeue.inc:947 +#, fuzzy +msgid "Queue phone number" +msgstr "Телефонные номера" + +#: admin/ogroups/gofon/class_phonequeue.inc:949 +#, fuzzy +msgid "Method" +msgstr "Почтовые настройки" + +#: admin/ogroups/gofon/class_phonequeue.inc:951 +#, fuzzy +msgid "Announce" +msgstr "Сообщение автоответчика" + +#: admin/systems/services/gofon/goFonServer.tpl:1 +#, fuzzy +msgid "VoIP database information" +msgstr "Системная информация" + +#: admin/systems/services/gofon/goFonServer.tpl:4 +msgid "Asterisk DB user" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:12 +#: admin/systems/services/gofon/class_goFonServer.inc:77 +#: admin/systems/services/gofon/class_goFonServer.inc:179 +msgid "Password" +msgstr "Пароль" + +#: admin/systems/services/gofon/goFonServer.tpl:20 +msgid "Country dial prefix" +msgstr "" + +#: admin/systems/services/gofon/goFonServer.tpl:28 +#: admin/systems/services/gofon/class_goFonServer.inc:80 +msgid "Local dial prefix" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:34 +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#: admin/systems/services/gofon/class_goFonServer.inc:165 +#, fuzzy +msgid "VoIP service" +msgstr "LDAP-сервер" + +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#, fuzzy +msgid "Asterisk management" +msgstr "Управление системами" + +#: admin/systems/services/gofon/class_goFonServer.inc:74 +msgid "User" +msgstr "Пользователь" + +#: admin/systems/services/gofon/class_goFonServer.inc:83 +#, fuzzy +msgid "Country prefix" +msgstr "Учетная запись" + +#: admin/systems/services/gofon/class_goFonServer.inc:120 +#, php-format +msgid "" +"You can't remove the asterisk database extension, it is still in use by " +"these objects '%s'." +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +#, fuzzy +msgid "VoIP - asterisk management" +msgstr "Управление системами" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/gofon/class_goFonServer.inc:174 +#, fuzzy +msgid "Start" +msgstr "Запуск" + +#: admin/systems/services/gofon/class_goFonServer.inc:175 +msgid "Stop" +msgstr "" + +#: admin/systems/services/gofon/class_goFonServer.inc:176 +#, fuzzy +msgid "Restart" +msgstr "Повторить" + +#: admin/systems/services/gofon/class_goFonServer.inc:178 +#, fuzzy +msgid "Admin" +msgstr "DN администратора" + +#: admin/systems/services/gofon/class_goFonServer.inc:180 +#, fuzzy +msgid "Area code" +msgstr "Каталог" + +#: admin/systems/services/gofon/class_goFonServer.inc:181 +#, fuzzy +msgid "Country code" +msgstr "Учетная запись" + +#: admin/systems/gofon/phonesettings.tpl:1 +#, fuzzy +msgid "Advanced phone settings" +msgstr "Настройки телефона" + +#: admin/systems/gofon/phonesettings.tpl:6 +#, fuzzy +msgid "Phone type" +msgstr "Название" + +#: admin/systems/gofon/phonesettings.tpl:8 +#: admin/systems/gofon/phonesettings.tpl:30 +#: admin/systems/gofon/phonesettings.tpl:42 +#: admin/systems/gofon/phonesettings.tpl:58 +#: admin/systems/gofon/phonesettings.tpl:91 +#: admin/systems/gofon/phonesettings.tpl:128 +#: admin/systems/gofon/phonesettings.tpl:181 +#, fuzzy +msgid "Choose a phone type" +msgstr "Выберите тип мыши" + +#: admin/systems/gofon/phonesettings.tpl:13 +msgid "refresh" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:25 +msgid "Mode" +msgstr "Режим" + +#: admin/systems/gofon/phonesettings.tpl:38 +#, fuzzy +msgid "DTMF mode" +msgstr "Режим" + +#: admin/systems/gofon/phonesettings.tpl:54 +#: admin/systems/gofon/phonesettings.tpl:99 +#, fuzzy +msgid "Default IP" +msgstr "по умолчанию" + +#: admin/systems/gofon/phonesettings.tpl:66 +#: admin/systems/gofon/phonesettings.tpl:109 +msgid "Response timeout" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:87 +#, fuzzy +msgid "Modus" +msgstr "Мышь" + +#: admin/systems/gofon/phonesettings.tpl:124 +msgid "Authtype" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:136 +#, fuzzy +msgid "Secret" +msgstr "Улица" + +#: admin/systems/gofon/phonesettings.tpl:146 +msgid "GoFonInkeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:154 +msgid "GoFonOutKeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:167 +#, fuzzy +msgid "Account code" +msgstr "Учетная запись" + +#: admin/systems/gofon/phonesettings.tpl:177 +#, fuzzy +msgid "Trunk lines" +msgstr "Тонкие клиенты" + +#: admin/systems/gofon/phonesettings.tpl:194 +msgid "Hosts that are allowed to connect" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:197 +#: admin/systems/gofon/phonesettings.tpl:220 +msgid "List of alternative mail addresses" +msgstr "Список альтернативных адресов эл. почты" + +#: admin/systems/gofon/phonesettings.tpl:217 +#, fuzzy +msgid "Hosts that are not allowed to connect" +msgstr "У вас недостаточно прав для удаления этого объекта!" + +#: admin/systems/gofon/phonesettings.tpl:247 +msgid "MSN" +msgstr "" + +#: admin/systems/gofon/paste_generic.tpl:3 admin/systems/gofon/phone.tpl:6 +msgid "Phone name" +msgstr "Название" + +#: admin/systems/gofon/phone.tpl:17 +#: admin/systems/gofon/class_phoneGeneric.inc:517 +#: gofon/macro/class_gofonMacro.inc:573 gofon/macro/class_divListMacros.inc:79 +#: gofon/macro/generic.tpl:27 gofon/conference/generic.tpl:49 +#: gofon/conference/class_phoneConferenceGeneric.inc:776 +#: gofon/conference/class_divListConferences.inc:83 +msgid "Base" +msgstr "Ветка" + +#: admin/systems/gofon/phone.tpl:20 gofon/macro/generic.tpl:30 +msgid "Choose subtree to place group in" +msgstr "Выберите ветку для группы" + +#: admin/systems/gofon/phone.tpl:25 gofon/macro/generic.tpl:36 +#: gofon/conference/generic.tpl:56 gofon/conference/generic.tpl:62 +#, fuzzy +msgid "Select a base" +msgstr "Выберите, чтобы просмотреть серверы" + +#: admin/systems/gofon/phone.tpl:34 +#: admin/systems/gofon/class_phoneGeneric.inc:518 +#: gofon/macro/class_gofonMacro.inc:574 gofon/macro/generic.tpl:49 +#: gofon/conference/generic.tpl:98 +#: gofon/conference/class_phoneConferenceGeneric.inc:777 +msgid "Description" +msgstr "Описание" + +#: admin/systems/gofon/class_phoneGeneric.inc:124 +#, fuzzy +msgid "phone" +msgstr "Телефон" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:121 +#, fuzzy +msgid "yes" +msgstr "Системы" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:122 +#, fuzzy +msgid "no" +msgstr "нет" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "dynamic" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +#, fuzzy +msgid "Networksettings" +msgstr "Сетевые настройки" + +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 +#, php-format +msgid "Cannot delete entry because it is still in use by '%s'!" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:331 +#: admin/systems/gofon/class_phoneGeneric.inc:334 +msgid "IP address" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:340 +#: admin/systems/gofon/class_phoneGeneric.inc:344 +#: admin/systems/gofon/class_phoneGeneric.inc:347 +#: admin/systems/gofon/class_phoneGeneric.inc:362 +#: admin/systems/gofon/class_phoneGeneric.inc:516 +#: gofon/macro/class_gofonMacro.inc:406 gofon/macro/class_gofonMacro.inc:412 +#: gofon/macro/class_divListMacros.inc:56 gofon/macro/parameter.tpl:6 +#: gofon/conference/class_phoneConferenceGeneric.inc:388 +#: gofon/conference/class_phoneConferenceGeneric.inc:410 +#: gofon/conference/class_phoneConferenceGeneric.inc:775 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Name" +msgstr "Фамилия" + +#: admin/systems/gofon/class_phoneGeneric.inc:507 +#: gofon/macro/class_gofonMacro.inc:562 +msgid "Generic" +msgstr "Общее" + +#: admin/systems/gofon/class_phoneGeneric.inc:508 +#, fuzzy +msgid "Phone generic" +msgstr "Телефонные номера" + +#: admin/systems/gofon/class_phoneGeneric.inc:513 +#: gofon/phoneaccount/class_phoneAccount.inc:1611 +#, fuzzy +msgid "Phone hardware" +msgstr "Телефонное оборудование" + +#: admin/systems/gofon/class_phoneGeneric.inc:519 +#, fuzzy +msgid "SIP Mode" +msgstr "Режим" + +#: admin/systems/gofon/class_phoneGeneric.inc:520 +#, fuzzy +msgid "SIP DTMF mode" +msgstr "Режим" + +#: admin/systems/gofon/class_phoneGeneric.inc:521 +#, fuzzy +msgid "SIP Default ip" +msgstr "по умолчанию" + +#: admin/systems/gofon/class_phoneGeneric.inc:522 +msgid "SIP Qualify" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:523 +#, fuzzy +msgid "IAX authentication type" +msgstr "Рабочая станция Windows" + +#: admin/systems/gofon/class_phoneGeneric.inc:524 +#, fuzzy +msgid "IAX secret" +msgstr "LDAP-сервер" + +#: admin/systems/gofon/class_phoneGeneric.inc:525 +#, fuzzy +msgid "IAX account code" +msgstr "Учетная запись" + +#: admin/systems/gofon/class_phoneGeneric.inc:526 +#, fuzzy +msgid "IAX trunk lines" +msgstr "Тонкие клиенты" + +#: admin/systems/gofon/class_phoneGeneric.inc:527 +#, fuzzy +msgid "IAX permit settings" +msgstr "Настройки факса" + +#: admin/systems/gofon/class_phoneGeneric.inc:528 +#, fuzzy +msgid "IAX deny settings" +msgstr "Настройки факса" + +#: admin/systems/gofon/class_phoneGeneric.inc:529 +msgid "CAPI MSN" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:530 +msgid "Hardware type" +msgstr "" + +#: gofon/macro/headpage.tpl:6 gofon/macro/class_divListMacros.inc:31 +#: gofon/macro/class_divListMacros.inc:32 +#, fuzzy +msgid "List of macros" +msgstr "Список групп" + +#: gofon/macro/headpage.tpl:20 gofon/macro/class_gofonMacroParameters.inc:374 +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#: gofon/conference/headpage.tpl:20 +msgid "Information" +msgstr "Информация" + +#: gofon/macro/headpage.tpl:24 +#, fuzzy +msgid "" +"This menu allows you to add, edit and remove selected macros. You may want " +"to use the range selector on top of the macro listbox, when working with a " +"large number of macros." +msgstr "" +"С помощью этого меню вы можете добавлять, изменять и удалять выбранные " +"группы пользователей. Если у вас их достаточно большое количество, вы можете " +"использовать групповое выделение." + +#: gofon/macro/headpage.tpl:29 gofon/conference/headpage.tpl:29 +msgid "Filters" +msgstr "Фильтры" + +#: gofon/macro/headpage.tpl:38 +#, fuzzy +msgid "Display macros matching" +msgstr "Шаблон для групп" + +#: gofon/macro/headpage.tpl:38 +#, fuzzy +msgid "Display macros matching" +msgstr "Шаблон для групп" + +#: gofon/macro/headpage.tpl:41 gofon/macro/class_divListMacros.inc:64 +#, fuzzy +msgid "Regular expression for matching macro names" +msgstr "Регулярное выражение, соответствующее именам групп" + +#: gofon/macro/remove.tpl:2 gofon/conference/remove.tpl:2 +msgid "Warning" +msgstr "Предупреждение" + +#: gofon/macro/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Это приложение может использоваться несколькими группами. Подумайте еще раз, " +"действительно ли вы хотите удалить его, так как GOsa не сможет отменить " +"результаты этой операции." + +#: gofon/macro/remove.tpl:9 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Если вы уверены в своих действиях, нажмите на кнопку Удалить, иначе " +"нажмите Отмена." + +#: gofon/macro/class_gofonMacroParameters.inc:200 +#: gofon/phoneaccount/generic.tpl:125 gofon/phoneaccount/generic.tpl:127 +#, fuzzy +msgid "Phone macro" +msgstr "Телефонные отчеты" + +#: gofon/macro/class_gofonMacroParameters.inc:256 +#, fuzzy +msgid "String" +msgstr "в течение" + +#: gofon/macro/class_gofonMacroParameters.inc:257 +msgid "Combobox" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:258 +msgid "Bool" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:264 +#, fuzzy +msgid "Delete unused" +msgstr "Удалить" + +#: gofon/macro/class_gofonMacroParameters.inc:340 +#, fuzzy, php-format +msgid "Parameter %s contains invalid character. '!,#' is used as delimiter!" +msgstr "Неправильное указание таймаута '%s'" + +#: gofon/macro/class_gofonMacroParameters.inc:345 +#, php-format +msgid "Parameter %s is invalid!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:374 +msgid "" +"Number of parameters for this macro has changed. Please update all users " +"using it!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:300 +#, fuzzy, php-format +msgid "Application missing in line %s!" +msgstr "У выбранного приложения нет параметров." + +#: gofon/macro/class_gofonMacro.inc:304 +#, php-format +msgid "Extension missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:416 +msgid "Name can be 20 characters at maximum!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:425 +#, fuzzy +msgid "Macro is still in use!" +msgstr "Почтовые настройки пользователя" + +#: gofon/macro/class_gofonMacro.inc:432 +#, fuzzy +msgid "Macro is empty!" +msgstr "Название" + +#: gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:371 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/phoneaccount/class_phoneAccount.inc:1471 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:169 +#, fuzzy +msgid "Configuration error" +msgstr "Настроить" + +#: gofon/macro/class_gofonMacro.inc:563 +#, fuzzy +msgid "Asterisk macro management" +msgstr "Управление системами" + +#: gofon/macro/class_gofonMacro.inc:568 +#, fuzzy +msgid "GOfon macro" +msgstr "Телефонные отчеты" + +#: gofon/macro/class_gofonMacro.inc:572 gofon/macro/generic.tpl:6 +#: gofon/macro/generic.tpl:9 gofon/macro/paste_generic.tpl:4 +#: gofon/macro/paste_generic.tpl:6 +#, fuzzy +msgid "Macro name" +msgstr "Название" + +#: gofon/macro/class_gofonMacro.inc:575 gofon/macro/generic.tpl:14 +msgid "Display name" +msgstr "Отображаемое имя" + +#: gofon/macro/class_gofonMacro.inc:576 +#, fuzzy +msgid "Macro content and parameter" +msgstr "Название" + +#: gofon/macro/class_gofonMacro.inc:577 +msgid "Visibility flag" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:50 +#: gofon/conference/class_divListConferences.inc:50 +#, fuzzy +msgid "Select all" +msgstr "Удалить" + +#: gofon/macro/class_divListMacros.inc:56 +msgid "Department" +msgstr "Подразделение" + +#: gofon/macro/class_divListMacros.inc:57 +#, fuzzy +msgid "Visible" +msgstr "Переменная" + +#: gofon/macro/class_divListMacros.inc:58 +#: gofon/macro/class_divListMacros.inc:84 +#: gofon/conference/class_divListConferences.inc:59 +#: gofon/conference/class_divListConferences.inc:88 +msgid "Actions" +msgstr "Действия" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +#, fuzzy +msgid "Submit department" +msgstr "Показать подразделения" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:89 +#: gofon/conference/class_divListConferences.inc:93 +msgid "Create" +msgstr "Создать" + +#: gofon/macro/class_divListMacros.inc:91 +#: gofon/macro/class_divListMacros.inc:120 +#, fuzzy +msgid "Macro" +msgstr "Название" + +#: gofon/macro/class_divListMacros.inc:97 +#: gofon/conference/class_divListConferences.inc:101 +msgid "Remove" +msgstr "Удалить" + +#: gofon/macro/class_divListMacros.inc:121 +#, fuzzy +msgid "visible" +msgstr "Видимый всем" + +#: gofon/macro/class_divListMacros.inc:122 +#, fuzzy +msgid "invisible" +msgstr "Видимый всем" + +#: gofon/macro/class_divListMacros.inc:146 +#: gofon/conference/class_divListConferences.inc:150 +#, fuzzy +msgid "edit" +msgstr "Изменить" + +#: gofon/macro/class_divListMacros.inc:147 +#, fuzzy +msgid "Edit macro" +msgstr "Пользователи домена" + +#: gofon/macro/class_divListMacros.inc:153 +#: gofon/conference/class_divListConferences.inc:158 +#, fuzzy +msgid "delete" +msgstr "Удалить" + +#: gofon/macro/class_divListMacros.inc:154 +#, fuzzy +msgid "Delete macro" +msgstr "Удалить" + +#: gofon/macro/class_divListMacros.inc:202 +#: gofon/macro/class_divListMacros.inc:203 +#, fuzzy, php-format +msgid "Number of listed %s" +msgstr "Подразделение" + +#: gofon/macro/class_divListMacros.inc:202 +#, fuzzy +msgid "macros" +msgstr "Название" + +#: gofon/macro/class_divListMacros.inc:203 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy +msgid "departments" +msgstr "Подразделение" + +#: gofon/macro/generic.tpl:18 +msgid "Macro name to be displayed" +msgstr "" + +#: gofon/macro/generic.tpl:60 +#, fuzzy +msgid "Visible for user" +msgstr "Список пользователей" + +#: gofon/macro/generic.tpl:70 +#, fuzzy +msgid "Macro text" +msgstr "Название" + +#: gofon/macro/class_gofonMacroManagement.inc:24 +#, fuzzy +msgid "Phone macros" +msgstr "Телефонные отчеты" + +#: gofon/macro/class_gofonMacroManagement.inc:25 +#: gofon/phoneaccount/class_phoneAccount.inc:7 +#: gofon/fonreports/class_fonreport.inc:7 +msgid "This does something" +msgstr "Что-то будет" + +#: gofon/macro/class_gofonMacroManagement.inc:273 +#: gofon/conference/class_phoneConferenceManagment.inc:187 +#, fuzzy +msgid "Permission" +msgstr "Права для членов группы" + +#: gofon/macro/class_gofonMacroManagement.inc:320 +#: gofon/macro/class_gofonMacroManagement.inc:373 +#: gofon/macro/class_gofonMacroManagement.inc:397 +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "Permission error" +msgstr "Права для членов группы" + +#: gofon/macro/class_gofonMacroManagement.inc:366 +#, fuzzy +msgid "macro" +msgstr "Название" + +#: gofon/macro/main.inc:51 gofon/macro/main.inc:55 +#, fuzzy +msgid "Phone macro management" +msgstr "Управление системами" + +#: gofon/macro/parameter.tpl:4 +#, fuzzy +msgid "Argument" +msgstr "подразделения" + +#: gofon/macro/parameter.tpl:8 +#, fuzzy +msgid "type" +msgstr "Тип" + +#: gofon/macro/parameter.tpl:10 +msgid "Default value" +msgstr "По умолчанию" + +#: gofon/macro/parameter.tpl:19 +#, fuzzy +msgid "You are not allowed to view the macro parameter settings" +msgstr "У вас недостаточно прав для удаления этого пользователя!" + +#: gofon/phoneaccount/generic.tpl:42 gofon/phoneaccount/paste_generic.tpl:27 +msgid "Telephone hardware" +msgstr "Телефонное оборудование" + +#: gofon/phoneaccount/generic.tpl:44 gofon/phoneaccount/generic.tpl:48 +#: gofon/phoneaccount/paste_generic.tpl:29 +msgid "Telephone" +msgstr "Телефон" + +#: gofon/phoneaccount/generic.tpl:62 +#, fuzzy +msgid "Select the accounts home server" +msgstr "Выберите, чтобы просмотреть серверы" + +#: gofon/phoneaccount/generic.tpl:69 +#, fuzzy +msgid "Context" +msgstr "Контакт" + +#: gofon/phoneaccount/generic.tpl:73 gofon/phoneaccount/generic.tpl:84 +#, fuzzy +msgid "Select the accounts context" +msgstr "Выберите, чтобы просмотреть серверы" + +#: gofon/phoneaccount/generic.tpl:80 +msgid "Voicemail context" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:93 gofon/phoneaccount/paste_generic.tpl:32 +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#: gofon/phoneaccount/class_phoneAccount.inc:1280 +msgid "Voicemail PIN" +msgstr "" + +#: gofon/phoneaccount/generic.tpl:103 gofon/phoneaccount/paste_generic.tpl:40 +#: gofon/phoneaccount/class_phoneAccount.inc:1285 +#, fuzzy +msgid "Phone PIN" +msgstr "Телефон" + +#: gofon/phoneaccount/generic.tpl:138 +#, fuzzy +msgid "Refresh" +msgstr "Ссылки" + +#: gofon/phoneaccount/paste_generic.tpl:1 gofon/phoneaccount/main.inc:133 +msgid "Phone settings" +msgstr "Настройки телефона" + +#: gofon/phoneaccount/main.inc:123 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." + +#: gofon/phoneaccount/class_phoneAccount.inc:172 +msgid "automatic" +msgstr "автоматически" + +#: gofon/phoneaccount/class_phoneAccount.inc:208 +#, fuzzy +msgid "no macro" +msgstr "Телефонные отчеты" + +#: gofon/phoneaccount/class_phoneAccount.inc:236 +#, fuzzy +msgid "undefined" +msgstr "не определена" + +#: gofon/phoneaccount/class_phoneAccount.inc:489 +#: gofon/phoneaccount/class_phoneAccount.inc:496 +#: gofon/phoneaccount/class_phoneAccount.inc:514 +#: gofon/phoneaccount/class_phoneAccount.inc:521 +msgid "Abort saving entries to keep the database consistent." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:935 +msgid "Remove phone account" +msgstr "Удалить телефонный аккаунт" + +#: gofon/phoneaccount/class_phoneAccount.inc:939 +#: gofon/phoneaccount/class_phoneAccount.inc:942 +msgid "Create phone account" +msgstr "Создать телефонный аккаунт" + +#: gofon/phoneaccount/class_phoneAccount.inc:940 +msgid "User uid" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:958 +msgid "Selected macro is not available anymore!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:982 +#, fuzzy +msgid "Parameter" +msgstr "Параметры загрузки" + +#: gofon/phoneaccount/class_phoneAccount.inc:1126 +msgid "Choose your private phone" +msgstr "Укажите личный телефон" + +#: gofon/phoneaccount/class_phoneAccount.inc:1269 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone account." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +msgid "Between 1-4 charactes" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1303 +#, fuzzy, php-format +msgid "macro parameter %s" +msgstr "Название" + +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#, php-format +msgid "User '%s' has been removed from phone queue '%s'." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1541 +#: gofon/phoneaccount/class_phoneAccount.inc:1543 +#, php-format +msgid "The specified telephonenumber '%s' is already assigned to '%s'." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1589 +#, php-format +msgid "" +"The previously selected asterisk home server (%s) is no longer available. " +"Remove aborted." +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1598 +#, fuzzy +msgid "Phone account settings" +msgstr "Настройки телефона" + +#: gofon/phoneaccount/class_phoneAccount.inc:1602 +msgid "My account" +msgstr "Моя учетная запись" + +#: gofon/phoneaccount/class_phoneAccount.inc:1609 +#: gofon/conference/class_phoneConferenceGeneric.inc:793 +#, fuzzy +msgid "Telephone number" +msgstr "Телефонные номера" + +#: gofon/phoneaccount/class_phoneAccount.inc:1610 +#, fuzzy +msgid "Macro settings" +msgstr "Почтовые настройки пользователя" + +#: gofon/phoneaccount/class_phoneAccount.inc:1613 +#, fuzzy +msgid "Phone context" +msgstr "Название" + +#: gofon/phoneaccount/class_phoneAccount.inc:1614 +msgid "Voice mail context" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1615 +#, fuzzy +msgid "Telephone pin" +msgstr "Телефон" + +#: gofon/phoneaccount/class_phoneAccount.inc:1616 +msgid "Voicemail pin" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1698 +msgid "There is currently no asterisk server defined!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1702 +msgid "Asterisk server is invalid!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1708 +msgid "Voicemail PIN must be 4 characters long!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1711 +#, fuzzy +msgid "Voicemail PIN contains invalid characters!" +msgstr "Неправильное указание таймаута '%s'" + +#: gofon/phoneaccount/class_phoneAccount.inc:1716 +#, fuzzy +msgid "Phone pin contains invalid characters!" +msgstr "Неправильное указание таймаута '%s'" + +#: gofon/phoneaccount/class_phoneAccount.inc:1723 +#, fuzzy, php-format +msgid "The parameter %s contains invalid char. '!,#' is used as delimiter" +msgstr "Неправильное указание таймаута '%s'" + +#: gofon/conference/headpage.tpl:6 +#: gofon/conference/class_divListConferences.inc:31 +#: gofon/conference/class_divListConferences.inc:32 +#, fuzzy +msgid "List of conference rooms" +msgstr "Список групп" + +#: gofon/conference/headpage.tpl:24 +#, fuzzy +msgid "" +"This menu allows you to create, delete and edit selected phone conferences. " +"Having a large number of phone conferences, you might prefer the range " +"selectors on top of the conferences list." +msgstr "" +"С помощью этого меню вы можете добавлять, изменять и удалять выбранные " +"подразделения. Если у вас достаточно большое количество подразделений, вы " +"можете использовать групповое выделение." + +#: gofon/conference/headpage.tpl:35 +msgid "Display users matching" +msgstr "Фильтр" + +#: gofon/conference/headpage.tpl:36 +#, fuzzy +msgid "Regular expression for matching user names" +msgstr "Регулярное выражение, соответствующее именам пользователей" + +#: gofon/conference/remove.tpl:6 +#, fuzzy +msgid "" +"This includes 'all' accounts, systems, etc. in this subtree. Please double " +"check if your really want to do this since there is no way for GOsa to get " +"your data back." +msgstr "" +"Это включает все учетные записи, системы и т.п. для данного " +"подразделения. Подумайте еще раз, действительно ли вы хотите его удалить, " +"так как GOsa не сможет отменить результаты этой операции." + +#: gofon/conference/remove.tpl:10 +#, fuzzy +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Лучше всего перед удалением сохранить резервную копию текущего дерева LDAP в " +"файл. Если вы сделали это и действительно хотите выполнить удаление, нажмите " +"Удалить, иначе нажмите Отмена." + +#: gofon/conference/class_phoneConferenceManagment.inc:24 +#, fuzzy +msgid "Phone conferences" +msgstr "Номер телефона" + +#: gofon/conference/class_phoneConferenceManagment.inc:25 +#, fuzzy +msgid "Management" +msgstr "Название" + +#: gofon/conference/class_phoneConferenceManagment.inc:206 +#: gofon/conference/class_phoneConferenceManagment.inc:267 +#, fuzzy +msgid "conference" +msgstr "Ссылки" + +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "You have not permission to delete this entry!" +msgstr "У вас недостаточно прав для удаления этого подразделения." + +#: gofon/conference/generic.tpl:5 +msgid "Properties" +msgstr "Свойства" + +#: gofon/conference/generic.tpl:15 gofon/conference/paste_generic.tpl:5 +#, fuzzy +msgid "Conference name" +msgstr "Ссылки" + +#: gofon/conference/generic.tpl:21 gofon/conference/paste_generic.tpl:10 +#, fuzzy +msgid "Name of conference to create" +msgstr "Имя создаваемой ветки" + +#: gofon/conference/generic.tpl:28 +msgid "Type" +msgstr "Тип" + +#: gofon/conference/generic.tpl:35 +#, fuzzy +msgid "Choose subtree to place conference in" +msgstr "Выберите ветку для пользователя" + +#: gofon/conference/generic.tpl:82 +#, fuzzy +msgid "Select language" +msgstr "Язык" + +#: gofon/conference/generic.tpl:104 +msgid "Descriptive text for department" +msgstr "Описание подразделения" + +#: gofon/conference/generic.tpl:110 +msgid "Lifetime (in days)" +msgstr "" + +#: gofon/conference/generic.tpl:157 +#: gofon/conference/class_phoneConferenceGeneric.inc:783 +#, fuzzy +msgid "Preset PIN" +msgstr "присутствует" + +#: gofon/conference/generic.tpl:165 +#: gofon/conference/class_phoneConferenceGeneric.inc:384 +#: gofon/conference/class_divListConferences.inc:58 +msgid "PIN" +msgstr "" + +#: gofon/conference/generic.tpl:177 +#: gofon/conference/class_phoneConferenceGeneric.inc:784 +#, fuzzy +msgid "Record conference" +msgstr "Ссылки" + +#: gofon/conference/generic.tpl:185 +msgid "Sound file format" +msgstr "" + +#: gofon/conference/generic.tpl:188 +msgid "Choose subtree to place department in" +msgstr "Выберите ветку для подразделения" + +#: gofon/conference/generic.tpl:208 +#: gofon/conference/class_phoneConferenceGeneric.inc:785 +msgid "Play music on hold" +msgstr "" + +#: gofon/conference/generic.tpl:216 +#, fuzzy +msgid "Activate session menu" +msgstr "Включить автоответчик" + +#: gofon/conference/generic.tpl:224 +msgid "Announce users joining or leaving the conference" +msgstr "" + +#: gofon/conference/generic.tpl:232 +#, fuzzy +msgid "Count users" +msgstr "Страна" + +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#, php-format +msgid "Cannot delete entry from server '%s' because it seems to be removed!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:379 +#, fuzzy, php-format +msgid "" +"The previously selected asterisk home server '%s' is no longer available!" +msgstr "У выбранного приложения нет параметров." + +#: gofon/conference/class_phoneConferenceGeneric.inc:396 +#: gofon/conference/class_phoneConferenceGeneric.inc:792 +msgid "Lifetime" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:641 +#: gofon/conference/class_phoneConferenceGeneric.inc:643 +#, php-format +msgid "'%s' is already assigned to '%s'!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:765 +#: gofon/conference/class_divListConferences.inc:95 +#: gofon/conference/class_divListConferences.inc:208 +#, fuzzy +msgid "Conference" +msgstr "Ссылки" + +#: gofon/conference/class_phoneConferenceGeneric.inc:766 +#, fuzzy +msgid "Phone conference management" +msgstr "Управление подразделениями" + +#: gofon/conference/class_phoneConferenceGeneric.inc:771 +#, fuzzy +msgid "GOfon conference" +msgstr "Номер телефона" + +#: gofon/conference/class_phoneConferenceGeneric.inc:778 +#, fuzzy +msgid "Conference PIN" +msgstr "Ссылки" + +#: gofon/conference/class_phoneConferenceGeneric.inc:786 +#, fuzzy +msgid "Activate menu" +msgstr "Включить автоответчик" + +#: gofon/conference/class_phoneConferenceGeneric.inc:787 +msgid "Announce user activity" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:788 +#, fuzzy +msgid "Count user" +msgstr "Страна" + +#: gofon/conference/class_phoneConferenceGeneric.inc:789 +#, fuzzy +msgid "Conference type" +msgstr "Ссылки" + +#: gofon/conference/class_phoneConferenceGeneric.inc:791 +#, fuzzy +msgid "Format" +msgstr "Порт" + +#: gofon/conference/class_phoneConferenceGeneric.inc:794 +#: gofon/conference/class_divListConferences.inc:57 +msgid "Owner" +msgstr "" + +#: gofon/conference/main.inc:48 gofon/conference/main.inc:50 +#, fuzzy +msgid "Conference management" +msgstr "Управление подразделениями" + +#: gofon/conference/class_divListConferences.inc:65 +#, fuzzy +msgid "Regular expression for matching conference names" +msgstr "Регулярное выражение, соответствующее именам пользователей" + +#: gofon/conference/class_divListConferences.inc:150 +#, fuzzy +msgid "Edit this entry" +msgstr "Редактиовать объект" + +#: gofon/conference/class_divListConferences.inc:158 +#, fuzzy +msgid "Delete this entry" +msgstr "Удалить" + +#: gofon/conference/class_divListConferences.inc:185 +#, fuzzy +msgid "Unknown" +msgstr "состояние неизвестно" + +#: gofon/conference/class_divListConferences.inc:225 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Подразделение" + +#: gofon/conference/class_divListConferences.inc:225 +#, fuzzy +msgid "conferences" +msgstr "Ссылки" + +#: gofon/fonreports/class_fonreport.inc:6 +msgid "Phone Reports" +msgstr "Телефонные отчеты" + +#: gofon/fonreports/class_fonreport.inc:210 +#, fuzzy +msgid "Insufficient permissions" +msgstr "Права для членов группы" + +#: gofon/fonreports/class_fonreport.inc:229 +msgid "Y-M-D" +msgstr "Г-М-Д" + +#: gofon/fonreports/class_fonreport.inc:396 +#: gofon/fonreports/class_fonreport.inc:397 +#: gofon/fonreports/class_fonreport.inc:404 gofon/fonreports/main.inc:22 +msgid "Phone reports" +msgstr "Телефонные отчеты" + +#: gofon/fonreports/class_fonreport.inc:397 +#, fuzzy +msgid "All entries are readonly" +msgstr "Все поля доступны для записи" + +#: gofon/fonreports/class_fonreport.inc:409 gofon/fonreports/contents.tpl:30 +msgid "Date" +msgstr "Дата" + +#: gofon/fonreports/class_fonreport.inc:410 gofon/fonreports/contents.tpl:31 +msgid "Source" +msgstr "Источник" + +#: gofon/fonreports/class_fonreport.inc:411 gofon/fonreports/contents.tpl:32 +msgid "Destination" +msgstr "Назначение" + +#: gofon/fonreports/class_fonreport.inc:412 gofon/fonreports/contents.tpl:33 +msgid "Channel" +msgstr "Канал" + +#: gofon/fonreports/class_fonreport.inc:413 +#, fuzzy +msgid "Application called" +msgstr "Приложение" + +#: gofon/fonreports/class_fonreport.inc:414 +#, fuzzy +msgid "Disposition" +msgstr "Отключение" + +#: gofon/fonreports/class_fonreport.inc:415 gofon/fonreports/contents.tpl:36 +msgid "Duration" +msgstr "Продолжительность" + +#: gofon/fonreports/contents.tpl:2 +msgid "Filter" +msgstr "Фильтр" + +#: gofon/fonreports/contents.tpl:6 +msgid "Search for" +msgstr "Поиск" + +#: gofon/fonreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "Введите искомое имя пользователя" + +#: gofon/fonreports/contents.tpl:8 gofon/fonreports/contents.tpl:16 +msgid "in" +msgstr "в" + +#: gofon/fonreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "Выберите ветку для поиска" + +#: gofon/fonreports/contents.tpl:12 +msgid "during" +msgstr "в течение" + +#: gofon/fonreports/contents.tpl:21 +msgid "Search" +msgstr "Поиск" + +#: gofon/fonreports/contents.tpl:34 +msgid "Application" +msgstr "Приложение" + +#: gofon/fonreports/contents.tpl:35 +msgid "Status" +msgstr "Состояние" + +#: gofon/fonreports/contents.tpl:51 +msgid "Search returned no results..." +msgstr "Не найдено..." + +#~ msgid "Addons" +#~ msgstr "Дополнительно" + +#, fuzzy +#~ msgid "GOfon reports" +#~ msgstr "Телефонные отчеты" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Компания" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Paste" +#~ msgstr "Дата" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Невозможно выбрать базу данных!" + +#, fuzzy +#~ msgid "Insufficient permissions to view this attribute" +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#~ msgid "This account has no phone extensions." +#~ msgstr "В этой учетной записи нет атрибутов для телефона." + +#~ msgid "" +#~ "This account has phone features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи включены телефонные атрибуты. Вы можете отключить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "" +#~ "This account has phone features disabled. You can't enable them while no " +#~ "uid is set." +#~ msgstr "" +#~ "В этой учетной записи отключены телефонные атрибуты. Вы можете включить " +#~ "их, щелкнув ниже." + +#~ msgid "" +#~ "This account has phone features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи отключены телефонные атрибуты. Вы можете включить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "Cannot connect to %s database on server '%s'!" +#~ msgstr "Невозможно выбрать базу данных!" + +#, fuzzy +#~ msgid "Cannot select %s database on server '%s'!" +#~ msgstr "Невозможно выбрать базу данных!" + +#, fuzzy +#~ msgid "Cannot query %s database on server '%s'!" +#~ msgstr "Невозможно выбрать базу данных!" + +#, fuzzy +#~ msgid "Name - Number" +#~ msgstr "Номер телефона" + +#, fuzzy +#~ msgid "Select to search within subtrees" +#~ msgstr "Искать в поддеревьях" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Искать в поддеревьях" + +#, fuzzy +#~ msgid "Number of listed conferences" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Cannot insert new macro on server '%s'!" +#~ msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Display name is not set!" +#~ msgstr "Отображаемое имя" + +#, fuzzy +#~ msgid "This 'dn' is no phone macro." +#~ msgstr "Этот DN не имеет свойств телефона." + +#, fuzzy +#~ msgid "You're about to delete the following user(s) %s" +#~ msgstr "Вы собираетесь удалить пользователя %s." + +#~ msgid "You're about to delete the whole LDAP subtree placed under '%s'." +#~ msgstr "Вы собираетесь удалить целую ветку LDAP с корнем в \"%s\"." + +#~ msgid "Apply" +#~ msgstr "Применить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Edit" +#~ msgstr "Изменить" + +#, fuzzy +#~ msgid "You're about to delete the following macro(s) %s" +#~ msgstr "Вы собираетесь удалить пользователя %s." + +#, fuzzy +#~ msgid "You're about to delete the macro '%s'." +#~ msgstr "Вы собираетесь удалить группу \"%s\"." + +#~ msgid "This 'dn' has no phone features." +#~ msgstr "Этот DN не имеет свойств телефона." + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#, fuzzy +#~ msgid "VoIP service - Asterisk management" +#~ msgstr "Управление системами" + +#, fuzzy +#~ msgid "The attribute DB user is empty or contains invalid characters." +#~ msgstr "Неправильное указание таймаута '%s'" + +#, fuzzy +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "Неправильное указание таймаута '%s'" + +#, fuzzy +#~ msgid "" +#~ "The attribute local dial prefix is empty or contains invalid characters." +#~ msgstr "Неправильное указание таймаута '%s'" + +#, fuzzy +#~ msgid "" +#~ "The attribute country dial prefix is empty or contains invalid characters." +#~ msgstr "Неправильное указание таймаута '%s'" + +#, fuzzy +#~ msgid "" +#~ "Phone queue is enabled for this group. You can disable it by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи включены телефонные атрибуты. Вы можете отключить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "" +#~ "For this group the phone queues are disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "В этой учетной записи отключены телефонные атрибуты. Вы можете включить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "Please select a valid goFonHomeServer." +#~ msgstr "Введите корректный серийный номер" + +#, fuzzy +#~ msgid "Mysql query failed." +#~ msgstr "Невозможно выполнить запрос к базе данных!" + +#, fuzzy +#~ msgid "Saving phone queue failed" +#~ msgstr "Аккаунт Proxy" + +#, fuzzy +#~ msgid "Removing phone queue failed" +#~ msgstr "Удалить учетную запись POSIX" + +#, fuzzy +#~ msgid "Updating gofon home server failed for '%s'." +#~ msgstr "Удалить сервис DNS" + +#, fuzzy +#~ msgid "Removing of system phone/generic with dn '%s' failed!" +#~ msgstr "Удалить учетную запись POSIX" + +#, fuzzy +#~ msgid "Saving of phone/generic with dn '%s' failed!" +#~ msgstr "Создать настройки запись эл. почты" + +#, fuzzy +#~ msgid "Phone number is invalid!" +#~ msgstr "Телефонные номера" + +#, fuzzy +#~ msgid "" +#~ "The specified Voicemail PIN contains invalid characters, only numeric " +#~ "values are allowed here." +#~ msgstr "" +#~ "Значение поля \"Регистрационное имя\" содержит недопустимые символы. " +#~ "Допустимыми являются буквы в нижнем регистре, цифры и дефисы." + +#, fuzzy +#~ msgid "" +#~ "The specified phone PIN contains invalid characters, only aphanumeric " +#~ "values are allowed here." +#~ msgstr "" +#~ "Значение поля \"Регистрационное имя\" содержит недопустимые символы. " +#~ "Допустимыми являются буквы в нижнем регистре, цифры и дефисы." + +#~ msgid "You need to specify at least one phone number!" +#~ msgstr "Необходимо указать не менее одного телефонного номера!" + +#, fuzzy +#~ msgid "Saving of user/phone account with dn '%s' failed." +#~ msgstr "Аккаунт Proxy" + +#, fuzzy +#~ msgid "Removing of user/phone account with dn '%s' failed." +#~ msgstr "Удалить учетную запись POSIX" + +#, fuzzy +#~ msgid "Saving of goFonConference/generic with dn '%s' failed!" +#~ msgstr "Создать настройки запись эл. почты" + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed!" +#~ msgstr "Удалить настройки эл. почты" + +#, fuzzy +#~ msgid "Saving of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "Создать настройки запись эл. почты" + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" + +#, fuzzy +#~ msgid "Can't select database '%s' on initial home server '%s'." +#~ msgstr "Невозможно выбрать базу данных!" + +#, fuzzy +#~ msgid "The required field IP address is empty." +#~ msgstr "Обязательное поле \"Основной адрес\" не заполнено." + +#, fuzzy +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "The required field 'Phone name' is not set." +#~ msgstr "Обязательное поле \"Личное имя\" не заполнено." + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "В выбранной вами ветке уже есть запись \"%s\"" + +#, fuzzy +#~ msgid "Can't connect to phone database, no reports can be shown!" +#~ msgstr "" +#~ "Не удается подключиться к базе данных факсов, отчеты показаны не будут!" + +#, fuzzy +#~ msgid "Can't select phone database for report generation!" +#~ msgstr "Не удается выбрать базу данных факсов для создания отчетов!" + +#~ msgid "Query for phone database failed!" +#~ msgstr "Запрос в базу телефонов не выполнен!" + +#~ msgid "Please enter a valid phone number!" +#~ msgstr "Введите корректный номер телефона!" + +#, fuzzy +#~ msgid "Please enter a PIN." +#~ msgstr "Введите адрес сервера" + +#, fuzzy +#~ msgid "Please enter a name for the conference." +#~ msgstr "Введите корректный номер телефона!" + +#, fuzzy +#~ msgid "There is already a conference with this name in the current tree." +#~ msgstr "" +#~ "Пользователь с таким регистрационным именем в базе данных уже существует." + +#, fuzzy +#~ msgid "More than one '(' is currently not supported. Line : '%s'." +#~ msgstr "" +#~ "Автоматическое создание типа \"%s\" не поддерживается. Пожалуйста, " +#~ "сообщите об этом команде разработчиков GOsa." + +#, fuzzy +#~ msgid "More than one ')' is currently not supported. Line : '%s'." +#~ msgstr "" +#~ "Автоматическое создание типа \"%s\" не поддерживается. Пожалуйста, " +#~ "сообщите об этом команде разработчиков GOsa." + +#, fuzzy +#~ msgid "The given cn '%s' already exists." +#~ msgstr "Подразделение с таким именем уже существует." + +#, fuzzy +#~ msgid "You can't save an empty macro." +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "" +#~ "Could not remove the macro entry from asterisk databases. Please check " +#~ "your asterisk database configurations." +#~ msgstr "Не удается подключиться к базе журналов, отчеты показаны не будут!" + +#, fuzzy +#~ msgid "You are not allowed to delete this macro!" +#~ msgstr "У вас недостаточно прав для удаления этой группы!" diff --git a/trunk/gosa-plugins/gofon/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/gofon/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..640a28141 --- /dev/null +++ b/trunk/gosa-plugins/gofon/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,2070 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:30+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/ogroups/gofon/phonequeue.tpl:2 +msgid "" +"Only users with the same asterisk home server will be included to this queue." +msgstr "只有有着相同 asterisk 主服务器的用户才会被包含在这个队列中。" + +#: admin/ogroups/gofon/phonequeue.tpl:5 +msgid "Queue Settings" +msgstr "队列设置" + +#: admin/ogroups/gofon/phonequeue.tpl:8 gofon/phoneaccount/generic.tpl:1 +#: gofon/phoneaccount/generic.tpl:6 gofon/phoneaccount/paste_generic.tpl:2 +#: gofon/phoneaccount/paste_generic.tpl:6 +msgid "Phone numbers" +msgstr "电话号码" + +#: admin/ogroups/gofon/phonequeue.tpl:12 +#: admin/ogroups/gofon/phonequeue.tpl:135 +msgid "Generic queue Settings" +msgstr "通用队列设置" + +#: admin/ogroups/gofon/phonequeue.tpl:24 +msgid "Up" +msgstr "上" + +#: admin/ogroups/gofon/phonequeue.tpl:27 +msgid "Down" +msgstr "关闭" + +#: admin/ogroups/gofon/phonequeue.tpl:47 gofon/conference/generic.tpl:141 +msgid "Options" +msgstr "选项" + +#: admin/ogroups/gofon/phonequeue.tpl:50 +#: admin/ogroups/gofon/class_phonequeue.inc:305 +#: admin/ogroups/gofon/class_phonequeue.inc:929 +#: gofon/phoneaccount/generic.tpl:58 +#: gofon/phoneaccount/class_phoneAccount.inc:1273 +#: gofon/phoneaccount/class_phoneAccount.inc:1612 +#: gofon/conference/generic.tpl:68 +#: gofon/conference/class_phoneConferenceGeneric.inc:782 +msgid "Home server" +msgstr "主服务器" + +#: admin/ogroups/gofon/phonequeue.tpl:62 +#: admin/ogroups/gofon/class_phonequeue.inc:948 +#: gofon/conference/generic.tpl:78 +#: gofon/conference/class_phoneConferenceGeneric.inc:780 +msgid "Language" +msgstr "语言" + +#: admin/ogroups/gofon/phonequeue.tpl:75 +#: admin/ogroups/gofon/class_phonequeue.inc:311 +#: admin/ogroups/gofon/class_phonequeue.inc:927 +msgid "Timeout" +msgstr "过期" + +#: admin/ogroups/gofon/phonequeue.tpl:85 +#: admin/ogroups/gofon/class_phonequeue.inc:314 +#: admin/ogroups/gofon/class_phonequeue.inc:952 +msgid "Retry" +msgstr "重试" + +#: admin/ogroups/gofon/phonequeue.tpl:95 +msgid "Strategy" +msgstr "策略" + +#: admin/ogroups/gofon/phonequeue.tpl:109 +#: admin/ogroups/gofon/class_phonequeue.inc:928 +msgid "Max queue length" +msgstr "最大队列长度" + +#: admin/ogroups/gofon/phonequeue.tpl:119 +#: admin/ogroups/gofon/class_phonequeue.inc:320 +#: admin/ogroups/gofon/class_phonequeue.inc:930 +msgid "Announce frequency" +msgstr "公告频率" + +#: admin/ogroups/gofon/phonequeue.tpl:125 +msgid "(in seconds)" +msgstr "(秒)" + +#: admin/ogroups/gofon/phonequeue.tpl:133 +msgid "Queue sound setup" +msgstr "队列声音设置" + +#: admin/ogroups/gofon/phonequeue.tpl:138 +msgid "Use music on hold instead of ringing" +msgstr "播放音乐保持锁定而非播放" + +#: admin/ogroups/gofon/phonequeue.tpl:149 +#: admin/ogroups/gofon/class_phonequeue.inc:937 +msgid "Music on hold" +msgstr "暂停的音乐" + +#: admin/ogroups/gofon/phonequeue.tpl:159 +msgid "Welcome sound file" +msgstr "欢迎声音文件" + +#: admin/ogroups/gofon/phonequeue.tpl:169 +msgid "Announce message" +msgstr "公告信息" + +#: admin/ogroups/gofon/phonequeue.tpl:179 +msgid "Sound file for 'You are next ...'" +msgstr "声音文件“您是下一个...”" + +#: admin/ogroups/gofon/phonequeue.tpl:189 +msgid "'There are ...'" +msgstr "'这里有 ...'" + +#: admin/ogroups/gofon/phonequeue.tpl:199 +msgid "'... calls waiting'" +msgstr "'... 电话在等待'" + +#: admin/ogroups/gofon/phonequeue.tpl:209 +msgid "'Thank you' message" +msgstr "'谢谢您' 消息" + +#: admin/ogroups/gofon/phonequeue.tpl:219 +msgid "'minutes' sound file" +msgstr "'分钟' 声音文件" + +#: admin/ogroups/gofon/phonequeue.tpl:229 +msgid "'seconds' sound file" +msgstr "'秒' 声音文件" + +#: admin/ogroups/gofon/phonequeue.tpl:239 +msgid "Hold sound file" +msgstr "暂停声音文件" + +#: admin/ogroups/gofon/phonequeue.tpl:249 +msgid "Less Than sound file" +msgstr "声音文件“小于...”" + +#: admin/ogroups/gofon/phonequeue.tpl:267 +msgid "Phone attributes " +msgstr "电话属性" + +#: admin/ogroups/gofon/phonequeue.tpl:277 +#: admin/ogroups/gofon/class_phonequeue.inc:950 +msgid "Announce holdtime" +msgstr "公告期限" + +#: admin/ogroups/gofon/phonequeue.tpl:285 +#: admin/ogroups/gofon/class_phonequeue.inc:931 +msgid "Allow the called user to transfer his call" +msgstr "允许被叫用户转移呼叫" + +#: admin/ogroups/gofon/phonequeue.tpl:293 +#: admin/ogroups/gofon/class_phonequeue.inc:932 +msgid "Allows calling user to transfer call" +msgstr "允许拨叫用户转移呼叫" + +#: admin/ogroups/gofon/phonequeue.tpl:305 +#: admin/ogroups/gofon/class_phonequeue.inc:933 +msgid "Allow the called to hangup by pressing *" +msgstr "允许被叫用户按 * 键挂起" + +#: admin/ogroups/gofon/phonequeue.tpl:313 +#: admin/ogroups/gofon/class_phonequeue.inc:935 +msgid "Allows calling to hangup by pressing *" +msgstr "允许拨叫用户按 * 键挂起" + +#: admin/ogroups/gofon/phonequeue.tpl:321 +#: admin/ogroups/gofon/class_phonequeue.inc:934 +msgid "Ring instead of playing background music" +msgstr "振铃而非播放背景音乐" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, fuzzy +msgid "Obsolete entry" +msgstr "删除这个条目" + +#: admin/ogroups/gofon/class_phonequeue.inc:91 +#: gofon/phoneaccount/class_phoneAccount.inc:134 +#: gofon/conference/class_phoneConferenceGeneric.inc:103 +#, php-format +msgid "" +"The current home server is not available anymore. It will be moved to '%s' " +"if you save this entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:121 +msgid "ring all" +msgstr "全部响铃" + +#: admin/ogroups/gofon/class_phonequeue.inc:122 +msgid "round robin" +msgstr "round robin" + +#: admin/ogroups/gofon/class_phonequeue.inc:123 +#, fuzzy +msgid "least recently called" +msgstr "最近最少的电话" + +#: admin/ogroups/gofon/class_phonequeue.inc:124 +#, fuzzy +msgid "fewest completed calls" +msgstr "最少完成的电话" + +#: admin/ogroups/gofon/class_phonequeue.inc:125 +msgid "random" +msgstr "随机" + +#: admin/ogroups/gofon/class_phonequeue.inc:126 +msgid "round robin with memory" +msgstr "内存 round robin" + +#: admin/ogroups/gofon/class_phonequeue.inc:210 +msgid "Remove the phone queue from this Account" +msgstr "删除来自该账号的电话队列" + +#: admin/ogroups/gofon/class_phonequeue.inc:211 +#: admin/ogroups/gofon/class_phonequeue.inc:214 +#, fuzzy +msgid "phone queue" +msgstr "创建电话队列" + +#: admin/ogroups/gofon/class_phonequeue.inc:213 +msgid "Create phone queue" +msgstr "创建电话队列" + +#: admin/ogroups/gofon/class_phonequeue.inc:302 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone queue." +msgstr "必须有至少一个带有 asterisk 数据库的服务器来创建一个电话队列。" + +#: admin/ogroups/gofon/class_phonequeue.inc:317 +#, fuzzy +msgid "Queue length" +msgstr "最大队列长度" + +#: admin/ogroups/gofon/class_phonequeue.inc:323 +#: gofon/conference/class_phoneConferenceGeneric.inc:392 +#: gofon/conference/class_divListConferences.inc:56 +#, fuzzy +msgid "Number" +msgstr "名称 - 数字" + +#: admin/ogroups/gofon/class_phonequeue.inc:346 +#: admin/ogroups/gofon/class_phonequeue.inc:394 +#, fuzzy +msgid "asterisk" +msgstr "粘贴" + +#: admin/ogroups/gofon/class_phonequeue.inc:378 +#: admin/ogroups/gofon/class_phonequeue.inc:732 +#: gofon/macro/class_gofonMacro.inc:392 gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/conference/class_phoneConferenceGeneric.inc:430 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +#, fuzzy +msgid "GOfon" +msgstr "没有宏" + +#: admin/ogroups/gofon/class_phonequeue.inc:437 +msgid "Cannot find old queue entry!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:523 +#, php-format +msgid "" +"Found more than one entry named '%s' in queue table. Please inform your " +"system administrator!" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:764 +#: admin/ogroups/gofon/class_phonequeue.inc:766 +#, fuzzy +msgid "telephone number" +msgstr "电话号码" + +#: admin/ogroups/gofon/class_phonequeue.inc:823 +#: admin/ogroups/gofon/class_phonequeue.inc:865 +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 gofon/macro/class_gofonMacro.inc:467 +#: gofon/macro/class_gofonMacro.inc:505 +#: gofon/phoneaccount/class_phoneAccount.inc:958 +#: gofon/phoneaccount/class_phoneAccount.inc:1077 +#: gofon/phoneaccount/class_phoneAccount.inc:1350 +#: gofon/phoneaccount/class_phoneAccount.inc:1422 +#: gofon/phoneaccount/class_phoneAccount.inc:1432 +#: gofon/phoneaccount/class_phoneAccount.inc:1466 +#: gofon/conference/class_phoneConferenceGeneric.inc:260 +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#: gofon/fonreports/class_fonreport.inc:176 +#: gofon/fonreports/class_fonreport.inc:180 +#: gofon/fonreports/class_fonreport.inc:198 +msgid "Error" +msgstr "错误" + +#: admin/ogroups/gofon/class_phonequeue.inc:838 +#: admin/ogroups/gofon/class_phonequeue.inc:893 +#: admin/systems/services/gofon/class_goFonServer.inc:146 +#: admin/systems/gofon/class_phoneGeneric.inc:282 +#: admin/systems/gofon/class_phoneGeneric.inc:428 +#: admin/systems/gofon/class_phoneGeneric.inc:442 +#: admin/systems/gofon/class_phoneGeneric.inc:459 +#: gofon/macro/class_gofonMacroParameters.inc:401 +#: gofon/macro/class_gofonMacro.inc:479 gofon/macro/class_gofonMacro.inc:490 +#: gofon/macro/class_gofonMacro.inc:526 +#: gofon/phoneaccount/class_phoneAccount.inc:1377 +#: gofon/phoneaccount/class_phoneAccount.inc:1513 +#: gofon/conference/class_phoneConferenceGeneric.inc:718 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/ogroups/gofon/class_phonequeue.inc:901 +#: gofon/conference/generic.tpl:120 gofon/conference/paste_generic.tpl:15 +msgid "Phone number" +msgstr "电话号码" + +#: admin/ogroups/gofon/class_phonequeue.inc:918 +#: gofon/phoneaccount/class_phoneAccount.inc:6 +#: gofon/phoneaccount/class_phoneAccount.inc:911 +#: gofon/phoneaccount/class_phoneAccount.inc:924 +#: gofon/phoneaccount/class_phoneAccount.inc:936 +#: gofon/phoneaccount/class_phoneAccount.inc:940 +#: gofon/phoneaccount/class_phoneAccount.inc:943 +#: gofon/phoneaccount/class_phoneAccount.inc:1597 +msgid "Phone" +msgstr "电话" + +#: admin/ogroups/gofon/class_phonequeue.inc:919 +#, fuzzy +msgid "Phone group" +msgstr "电话宏" + +#: admin/ogroups/gofon/class_phonequeue.inc:938 +#, fuzzy +msgid "Welcome music" +msgstr "欢迎 %s!" + +#: admin/ogroups/gofon/class_phonequeue.inc:939 +#, fuzzy +msgid "Report hold time" +msgstr "公告期限" + +#: admin/ogroups/gofon/class_phonequeue.inc:940 +msgid "'You are next' sound" +msgstr "" + +#: admin/ogroups/gofon/class_phonequeue.inc:941 +#, fuzzy +msgid "'There are' sound" +msgstr "'这里有 ...'" + +#: admin/ogroups/gofon/class_phonequeue.inc:942 +#, fuzzy +msgid "'Call waiting' sound" +msgstr "'... 电话在等待'" + +#: admin/ogroups/gofon/class_phonequeue.inc:943 +#, fuzzy +msgid "'Thank you' sound" +msgstr "'谢谢您' 消息" + +#: admin/ogroups/gofon/class_phonequeue.inc:944 +#, fuzzy +msgid "'Minutes' sound" +msgstr "'分钟' 声音文件" + +#: admin/ogroups/gofon/class_phonequeue.inc:945 +#, fuzzy +msgid "'Seconds' sound" +msgstr "'秒' 声音文件" + +#: admin/ogroups/gofon/class_phonequeue.inc:946 +#, fuzzy +msgid "'Less than' sound" +msgstr "声音文件“小于...”" + +#: admin/ogroups/gofon/class_phonequeue.inc:947 +#, fuzzy +msgid "Queue phone number" +msgstr "电话号码" + +#: admin/ogroups/gofon/class_phonequeue.inc:949 +#, fuzzy +msgid "Method" +msgstr "方法" + +#: admin/ogroups/gofon/class_phonequeue.inc:951 +#, fuzzy +msgid "Announce" +msgstr "公告信息" + +#: admin/systems/services/gofon/goFonServer.tpl:1 +#, fuzzy +msgid "VoIP database information" +msgstr "切换信息" + +#: admin/systems/services/gofon/goFonServer.tpl:4 +msgid "Asterisk DB user" +msgstr "Asterisk DB 用户" + +#: admin/systems/services/gofon/goFonServer.tpl:12 +#: admin/systems/services/gofon/class_goFonServer.inc:77 +#: admin/systems/services/gofon/class_goFonServer.inc:179 +msgid "Password" +msgstr "口令" + +#: admin/systems/services/gofon/goFonServer.tpl:20 +msgid "Country dial prefix" +msgstr "国内拨号前缀" + +#: admin/systems/services/gofon/goFonServer.tpl:28 +#: admin/systems/services/gofon/class_goFonServer.inc:80 +msgid "Local dial prefix" +msgstr "内部拨号前缀" + +#: admin/systems/services/gofon/class_goFonServer.inc:34 +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#: admin/systems/services/gofon/class_goFonServer.inc:165 +#, fuzzy +msgid "VoIP service" +msgstr "IMAP 服务" + +#: admin/systems/services/gofon/class_goFonServer.inc:65 +#, fuzzy +msgid "Asterisk management" +msgstr "Asterisk 管理" + +#: admin/systems/services/gofon/class_goFonServer.inc:74 +msgid "User" +msgstr "用户" + +#: admin/systems/services/gofon/class_goFonServer.inc:83 +#, fuzzy +msgid "Country prefix" +msgstr "国内拨号前缀" + +#: admin/systems/services/gofon/class_goFonServer.inc:120 +#, php-format +msgid "" +"You can't remove the asterisk database extension, it is still in use by " +"these objects '%s'." +msgstr "您不能删除 asterisk 数据库扩展,它仍被这些对象 '%s' 使用。" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +#, fuzzy +msgid "VoIP - asterisk management" +msgstr "Asterisk 管理" + +#: admin/systems/services/gofon/class_goFonServer.inc:166 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/gofon/class_goFonServer.inc:174 +#, fuzzy +msgid "Start" +msgstr "启动" + +#: admin/systems/services/gofon/class_goFonServer.inc:175 +msgid "Stop" +msgstr "停止" + +#: admin/systems/services/gofon/class_goFonServer.inc:176 +#, fuzzy +msgid "Restart" +msgstr "重试" + +#: admin/systems/services/gofon/class_goFonServer.inc:178 +#, fuzzy +msgid "Admin" +msgstr "管理员" + +#: admin/systems/services/gofon/class_goFonServer.inc:180 +#, fuzzy +msgid "Area code" +msgstr "SOA 记录" + +#: admin/systems/services/gofon/class_goFonServer.inc:181 +#, fuzzy +msgid "Country code" +msgstr "账号号码" + +#: admin/systems/gofon/phonesettings.tpl:1 +msgid "Advanced phone settings" +msgstr "高级电话设置" + +#: admin/systems/gofon/phonesettings.tpl:6 +msgid "Phone type" +msgstr "电话类型" + +#: admin/systems/gofon/phonesettings.tpl:8 +#: admin/systems/gofon/phonesettings.tpl:30 +#: admin/systems/gofon/phonesettings.tpl:42 +#: admin/systems/gofon/phonesettings.tpl:58 +#: admin/systems/gofon/phonesettings.tpl:91 +#: admin/systems/gofon/phonesettings.tpl:128 +#: admin/systems/gofon/phonesettings.tpl:181 +msgid "Choose a phone type" +msgstr "选择一个电话类型" + +#: admin/systems/gofon/phonesettings.tpl:13 +msgid "refresh" +msgstr "刷新" + +#: admin/systems/gofon/phonesettings.tpl:25 +msgid "Mode" +msgstr "模式" + +#: admin/systems/gofon/phonesettings.tpl:38 +msgid "DTMF mode" +msgstr "DTMF 模式" + +#: admin/systems/gofon/phonesettings.tpl:54 +#: admin/systems/gofon/phonesettings.tpl:99 +msgid "Default IP" +msgstr "缺省 IP" + +#: admin/systems/gofon/phonesettings.tpl:66 +#: admin/systems/gofon/phonesettings.tpl:109 +msgid "Response timeout" +msgstr "响应超时" + +#: admin/systems/gofon/phonesettings.tpl:87 +msgid "Modus" +msgstr "模块" + +#: admin/systems/gofon/phonesettings.tpl:124 +msgid "Authtype" +msgstr "认证类型" + +#: admin/systems/gofon/phonesettings.tpl:136 +msgid "Secret" +msgstr "秘密" + +#: admin/systems/gofon/phonesettings.tpl:146 +msgid "GoFonInkeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:154 +msgid "GoFonOutKeys" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:167 +msgid "Account code" +msgstr "账号号码" + +#: admin/systems/gofon/phonesettings.tpl:177 +msgid "Trunk lines" +msgstr "" + +#: admin/systems/gofon/phonesettings.tpl:194 +msgid "Hosts that are allowed to connect" +msgstr "允许连接的主机" + +#: admin/systems/gofon/phonesettings.tpl:197 +#: admin/systems/gofon/phonesettings.tpl:220 +msgid "List of alternative mail addresses" +msgstr "替代邮件地址列表" + +#: admin/systems/gofon/phonesettings.tpl:217 +msgid "Hosts that are not allowed to connect" +msgstr "不允许连接的主机" + +#: admin/systems/gofon/phonesettings.tpl:247 +msgid "MSN" +msgstr "MSN" + +#: admin/systems/gofon/paste_generic.tpl:3 admin/systems/gofon/phone.tpl:6 +msgid "Phone name" +msgstr "电话名称" + +#: admin/systems/gofon/phone.tpl:17 +#: admin/systems/gofon/class_phoneGeneric.inc:517 +#: gofon/macro/class_gofonMacro.inc:573 gofon/macro/class_divListMacros.inc:79 +#: gofon/macro/generic.tpl:27 gofon/conference/generic.tpl:49 +#: gofon/conference/class_phoneConferenceGeneric.inc:776 +#: gofon/conference/class_divListConferences.inc:83 +msgid "Base" +msgstr "位置" + +#: admin/systems/gofon/phone.tpl:20 gofon/macro/generic.tpl:30 +msgid "Choose subtree to place group in" +msgstr "选择来放置组的子树" + +#: admin/systems/gofon/phone.tpl:25 gofon/macro/generic.tpl:36 +#: gofon/conference/generic.tpl:56 gofon/conference/generic.tpl:62 +msgid "Select a base" +msgstr "选择一个位置" + +#: admin/systems/gofon/phone.tpl:34 +#: admin/systems/gofon/class_phoneGeneric.inc:518 +#: gofon/macro/class_gofonMacro.inc:574 gofon/macro/generic.tpl:49 +#: gofon/conference/generic.tpl:98 +#: gofon/conference/class_phoneConferenceGeneric.inc:777 +msgid "Description" +msgstr "描述" + +#: admin/systems/gofon/class_phoneGeneric.inc:124 +#, fuzzy +msgid "phone" +msgstr "电话" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:121 +msgid "yes" +msgstr "是" + +#: admin/systems/gofon/class_phoneGeneric.inc:235 +#: gofon/macro/class_divListMacros.inc:122 +msgid "no" +msgstr "否" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "dynamic" +msgstr "动态" + +#: admin/systems/gofon/class_phoneGeneric.inc:252 +msgid "Networksettings" +msgstr "网络设置" + +#: admin/systems/gofon/class_phoneGeneric.inc:272 +#: gofon/macro/class_gofonMacro.inc:458 +#, php-format +msgid "Cannot delete entry because it is still in use by '%s'!" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:331 +#: admin/systems/gofon/class_phoneGeneric.inc:334 +msgid "IP address" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:340 +#: admin/systems/gofon/class_phoneGeneric.inc:344 +#: admin/systems/gofon/class_phoneGeneric.inc:347 +#: admin/systems/gofon/class_phoneGeneric.inc:362 +#: admin/systems/gofon/class_phoneGeneric.inc:516 +#: gofon/macro/class_gofonMacro.inc:406 gofon/macro/class_gofonMacro.inc:412 +#: gofon/macro/class_divListMacros.inc:56 gofon/macro/parameter.tpl:6 +#: gofon/conference/class_phoneConferenceGeneric.inc:388 +#: gofon/conference/class_phoneConferenceGeneric.inc:410 +#: gofon/conference/class_phoneConferenceGeneric.inc:775 +#: gofon/conference/class_divListConferences.inc:56 +msgid "Name" +msgstr "名称" + +#: admin/systems/gofon/class_phoneGeneric.inc:507 +#: gofon/macro/class_gofonMacro.inc:562 +msgid "Generic" +msgstr "通用配置" + +#: admin/systems/gofon/class_phoneGeneric.inc:508 +#, fuzzy +msgid "Phone generic" +msgstr "电话号码" + +#: admin/systems/gofon/class_phoneGeneric.inc:513 +#: gofon/phoneaccount/class_phoneAccount.inc:1611 +#, fuzzy +msgid "Phone hardware" +msgstr "电话硬件" + +#: admin/systems/gofon/class_phoneGeneric.inc:519 +#, fuzzy +msgid "SIP Mode" +msgstr "模式" + +#: admin/systems/gofon/class_phoneGeneric.inc:520 +#, fuzzy +msgid "SIP DTMF mode" +msgstr "DTMF 模式" + +#: admin/systems/gofon/class_phoneGeneric.inc:521 +#, fuzzy +msgid "SIP Default ip" +msgstr "缺省 IP" + +#: admin/systems/gofon/class_phoneGeneric.inc:522 +msgid "SIP Qualify" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:523 +#, fuzzy +msgid "IAX authentication type" +msgstr "Nagios 鉴权" + +#: admin/systems/gofon/class_phoneGeneric.inc:524 +#, fuzzy +msgid "IAX secret" +msgstr "IMAP 服务" + +#: admin/systems/gofon/class_phoneGeneric.inc:525 +#, fuzzy +msgid "IAX account code" +msgstr "账号号码" + +#: admin/systems/gofon/class_phoneGeneric.inc:526 +msgid "IAX trunk lines" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:527 +#, fuzzy +msgid "IAX permit settings" +msgstr "传真设置" + +#: admin/systems/gofon/class_phoneGeneric.inc:528 +#, fuzzy +msgid "IAX deny settings" +msgstr "传真设置" + +#: admin/systems/gofon/class_phoneGeneric.inc:529 +msgid "CAPI MSN" +msgstr "" + +#: admin/systems/gofon/class_phoneGeneric.inc:530 +msgid "Hardware type" +msgstr "" + +#: gofon/macro/headpage.tpl:6 gofon/macro/class_divListMacros.inc:31 +#: gofon/macro/class_divListMacros.inc:32 +msgid "List of macros" +msgstr "宏列表" + +#: gofon/macro/headpage.tpl:20 gofon/macro/class_gofonMacroParameters.inc:374 +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#: gofon/conference/headpage.tpl:20 +msgid "Information" +msgstr "提示信息" + +#: gofon/macro/headpage.tpl:24 +msgid "" +"This menu allows you to add, edit and remove selected macros. You may want " +"to use the range selector on top of the macro listbox, when working with a " +"large number of macros." +msgstr "" +"这个菜单允许您添加,编辑和删除所选的宏。对于一个长列表,您可以通过选择框上面" +"的范围选择来调整。" + +#: gofon/macro/headpage.tpl:29 gofon/conference/headpage.tpl:29 +msgid "Filters" +msgstr "过滤器" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "显示匹配的宏" + +#: gofon/macro/headpage.tpl:38 +msgid "Display macros matching" +msgstr "显示匹配的宏" + +#: gofon/macro/headpage.tpl:41 gofon/macro/class_divListMacros.inc:64 +msgid "Regular expression for matching macro names" +msgstr "匹配宏名的正则表达式" + +#: gofon/macro/remove.tpl:2 gofon/conference/remove.tpl:2 +msgid "Warning" +msgstr "警告" + +#: gofon/macro/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"这可能被好几个组使用。请再次检查您是否要这么做,因为 GOsa 没有办法将您的数据" +"找回。" + +#: gofon/macro/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "所以,如果您确定,请按“删除”继续,否则按“取消”退出。" + +#: gofon/macro/class_gofonMacroParameters.inc:200 +#: gofon/phoneaccount/generic.tpl:125 gofon/phoneaccount/generic.tpl:127 +msgid "Phone macro" +msgstr "电话宏" + +#: gofon/macro/class_gofonMacroParameters.inc:256 +msgid "String" +msgstr "字符串" + +#: gofon/macro/class_gofonMacroParameters.inc:257 +msgid "Combobox" +msgstr "单选框" + +#: gofon/macro/class_gofonMacroParameters.inc:258 +msgid "Bool" +msgstr "布尔值" + +#: gofon/macro/class_gofonMacroParameters.inc:264 +msgid "Delete unused" +msgstr "删除未使用的" + +#: gofon/macro/class_gofonMacroParameters.inc:340 +#, fuzzy, php-format +msgid "Parameter %s contains invalid character. '!,#' is used as delimiter!" +msgstr "参数 %s 包含无效字符。'!,#' 用做分隔符" + +#: gofon/macro/class_gofonMacroParameters.inc:345 +#, php-format +msgid "Parameter %s is invalid!" +msgstr "" + +#: gofon/macro/class_gofonMacroParameters.inc:374 +msgid "" +"Number of parameters for this macro has changed. Please update all users " +"using it!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:300 +#, fuzzy, php-format +msgid "Application missing in line %s!" +msgstr "没有给出应用程序,在行: '%s'。" + +#: gofon/macro/class_gofonMacro.inc:304 +#, php-format +msgid "Extension missing in line %s!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:416 +msgid "Name can be 20 characters at maximum!" +msgstr "" + +#: gofon/macro/class_gofonMacro.inc:425 +#, fuzzy +msgid "Macro is still in use!" +msgstr "邮件选项" + +#: gofon/macro/class_gofonMacro.inc:432 +#, fuzzy +msgid "Macro is empty!" +msgstr "宏文本" + +#: gofon/macro/class_gofonMacro.inc:471 +#: gofon/phoneaccount/class_phoneAccount.inc:363 +#: gofon/phoneaccount/class_phoneAccount.inc:371 +#: gofon/phoneaccount/class_phoneAccount.inc:972 +#: gofon/phoneaccount/class_phoneAccount.inc:1471 +#: gofon/fonreports/class_fonreport.inc:166 +#: gofon/fonreports/class_fonreport.inc:169 +#, fuzzy +msgid "Configuration error" +msgstr "配置文件" + +#: gofon/macro/class_gofonMacro.inc:563 +#, fuzzy +msgid "Asterisk macro management" +msgstr "Asterisk 管理" + +#: gofon/macro/class_gofonMacro.inc:568 +#, fuzzy +msgid "GOfon macro" +msgstr "没有宏" + +#: gofon/macro/class_gofonMacro.inc:572 gofon/macro/generic.tpl:6 +#: gofon/macro/generic.tpl:9 gofon/macro/paste_generic.tpl:4 +#: gofon/macro/paste_generic.tpl:6 +msgid "Macro name" +msgstr "宏名称" + +#: gofon/macro/class_gofonMacro.inc:575 gofon/macro/generic.tpl:14 +msgid "Display name" +msgstr "显示名称" + +#: gofon/macro/class_gofonMacro.inc:576 +#, fuzzy +msgid "Macro content and parameter" +msgstr "启动参数" + +#: gofon/macro/class_gofonMacro.inc:577 +msgid "Visibility flag" +msgstr "" + +#: gofon/macro/class_divListMacros.inc:50 +#: gofon/conference/class_divListConferences.inc:50 +#, fuzzy +msgid "Select all" +msgstr "选择" + +#: gofon/macro/class_divListMacros.inc:56 +msgid "Department" +msgstr "部门" + +#: gofon/macro/class_divListMacros.inc:57 +msgid "Visible" +msgstr "可见" + +#: gofon/macro/class_divListMacros.inc:58 +#: gofon/macro/class_divListMacros.inc:84 +#: gofon/conference/class_divListConferences.inc:59 +#: gofon/conference/class_divListConferences.inc:88 +msgid "Actions" +msgstr "动作" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit department" +msgstr "提交部门" + +#: gofon/macro/class_divListMacros.inc:81 +#: gofon/conference/class_divListConferences.inc:85 +msgid "Submit" +msgstr "提交" + +#: gofon/macro/class_divListMacros.inc:89 +#: gofon/conference/class_divListConferences.inc:93 +msgid "Create" +msgstr "创建" + +#: gofon/macro/class_divListMacros.inc:91 +#: gofon/macro/class_divListMacros.inc:120 +msgid "Macro" +msgstr "宏" + +#: gofon/macro/class_divListMacros.inc:97 +#: gofon/conference/class_divListConferences.inc:101 +msgid "Remove" +msgstr "删除" + +#: gofon/macro/class_divListMacros.inc:121 +msgid "visible" +msgstr "可见" + +#: gofon/macro/class_divListMacros.inc:122 +msgid "invisible" +msgstr "不可见" + +#: gofon/macro/class_divListMacros.inc:146 +#: gofon/conference/class_divListConferences.inc:150 +msgid "edit" +msgstr "编辑" + +#: gofon/macro/class_divListMacros.inc:147 +msgid "Edit macro" +msgstr "编辑宏" + +#: gofon/macro/class_divListMacros.inc:153 +#: gofon/conference/class_divListConferences.inc:158 +msgid "delete" +msgstr "删除" + +#: gofon/macro/class_divListMacros.inc:154 +msgid "Delete macro" +msgstr "删除宏" + +#: gofon/macro/class_divListMacros.inc:202 +#: gofon/macro/class_divListMacros.inc:203 +#, fuzzy, php-format +msgid "Number of listed %s" +msgstr "部门名称" + +#: gofon/macro/class_divListMacros.inc:202 +#, fuzzy +msgid "macros" +msgstr "宏" + +#: gofon/macro/class_divListMacros.inc:203 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy +msgid "departments" +msgstr "部门" + +#: gofon/macro/generic.tpl:18 +msgid "Macro name to be displayed" +msgstr "要显示的宏名称" + +#: gofon/macro/generic.tpl:60 +msgid "Visible for user" +msgstr "用户可见" + +#: gofon/macro/generic.tpl:70 +msgid "Macro text" +msgstr "宏文本" + +#: gofon/macro/class_gofonMacroManagement.inc:24 +msgid "Phone macros" +msgstr "电话宏" + +#: gofon/macro/class_gofonMacroManagement.inc:25 +#: gofon/phoneaccount/class_phoneAccount.inc:7 +#: gofon/fonreports/class_fonreport.inc:7 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: gofon/macro/class_gofonMacroManagement.inc:273 +#: gofon/conference/class_phoneConferenceManagment.inc:187 +#, fuzzy +msgid "Permission" +msgstr "允许" + +#: gofon/macro/class_gofonMacroManagement.inc:320 +#: gofon/macro/class_gofonMacroManagement.inc:373 +#: gofon/macro/class_gofonMacroManagement.inc:397 +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "Permission error" +msgstr "允许" + +#: gofon/macro/class_gofonMacroManagement.inc:366 +#, fuzzy +msgid "macro" +msgstr "宏" + +#: gofon/macro/main.inc:51 gofon/macro/main.inc:55 +msgid "Phone macro management" +msgstr "电话宏管理" + +#: gofon/macro/parameter.tpl:4 +msgid "Argument" +msgstr "参数" + +#: gofon/macro/parameter.tpl:8 +msgid "type" +msgstr "类型" + +#: gofon/macro/parameter.tpl:10 +msgid "Default value" +msgstr "缺省值" + +#: gofon/macro/parameter.tpl:19 +#, fuzzy +msgid "You are not allowed to view the macro parameter settings" +msgstr "您无权删除这个宏!" + +#: gofon/phoneaccount/generic.tpl:42 gofon/phoneaccount/paste_generic.tpl:27 +msgid "Telephone hardware" +msgstr "电话硬件" + +#: gofon/phoneaccount/generic.tpl:44 gofon/phoneaccount/generic.tpl:48 +#: gofon/phoneaccount/paste_generic.tpl:29 +msgid "Telephone" +msgstr "电话" + +#: gofon/phoneaccount/generic.tpl:62 +msgid "Select the accounts home server" +msgstr "选择账号的主服务器" + +#: gofon/phoneaccount/generic.tpl:69 +#, fuzzy +msgid "Context" +msgstr "内容" + +#: gofon/phoneaccount/generic.tpl:73 gofon/phoneaccount/generic.tpl:84 +#, fuzzy +msgid "Select the accounts context" +msgstr "选择账号的主服务器" + +#: gofon/phoneaccount/generic.tpl:80 +#, fuzzy +msgid "Voicemail context" +msgstr "语音邮件 PIN" + +#: gofon/phoneaccount/generic.tpl:93 gofon/phoneaccount/paste_generic.tpl:32 +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#: gofon/phoneaccount/class_phoneAccount.inc:1280 +msgid "Voicemail PIN" +msgstr "语音邮件 PIN" + +#: gofon/phoneaccount/generic.tpl:103 gofon/phoneaccount/paste_generic.tpl:40 +#: gofon/phoneaccount/class_phoneAccount.inc:1285 +msgid "Phone PIN" +msgstr "电话 PIN" + +#: gofon/phoneaccount/generic.tpl:138 +msgid "Refresh" +msgstr "刷新" + +#: gofon/phoneaccount/paste_generic.tpl:1 gofon/phoneaccount/main.inc:133 +msgid "Phone settings" +msgstr "电话设置" + +#: gofon/phoneaccount/main.inc:123 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "点击下面的“编辑”按钮修改该对话框内的信息" + +#: gofon/phoneaccount/class_phoneAccount.inc:172 +msgid "automatic" +msgstr "自动" + +#: gofon/phoneaccount/class_phoneAccount.inc:208 +msgid "no macro" +msgstr "没有宏" + +#: gofon/phoneaccount/class_phoneAccount.inc:236 +msgid "undefined" +msgstr "未定义" + +#: gofon/phoneaccount/class_phoneAccount.inc:489 +#: gofon/phoneaccount/class_phoneAccount.inc:496 +#: gofon/phoneaccount/class_phoneAccount.inc:514 +#: gofon/phoneaccount/class_phoneAccount.inc:521 +#, fuzzy +msgid "Abort saving entries to keep the database consistent." +msgstr "" +"无法查询数据库 '%s' 于 '%s'。取消保存将保持数据库的完整性,通过 GOsa 日志来查" +"看 mysql 错误。" + +#: gofon/phoneaccount/class_phoneAccount.inc:935 +msgid "Remove phone account" +msgstr "删除电话账号" + +#: gofon/phoneaccount/class_phoneAccount.inc:939 +#: gofon/phoneaccount/class_phoneAccount.inc:942 +msgid "Create phone account" +msgstr "创建电话账号" + +#: gofon/phoneaccount/class_phoneAccount.inc:940 +msgid "User uid" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:958 +msgid "Selected macro is not available anymore!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:982 +msgid "Parameter" +msgstr "参数" + +#: gofon/phoneaccount/class_phoneAccount.inc:1126 +msgid "Choose your private phone" +msgstr "选择您私人电话" + +#: gofon/phoneaccount/class_phoneAccount.inc:1269 +msgid "" +"There must be at least one server with an asterisk database to create a " +"phone account." +msgstr "必须有至少一个带有 asterisk 数据库的服务器来创建一个电话账号。" + +#: gofon/phoneaccount/class_phoneAccount.inc:1277 +#, fuzzy +msgid "Between 1-4 charactes" +msgstr "语音邮件 PIN 必须包含 1-4 个字符。" + +#: gofon/phoneaccount/class_phoneAccount.inc:1303 +#, fuzzy, php-format +msgid "macro parameter %s" +msgstr "启动参数" + +#: gofon/phoneaccount/class_phoneAccount.inc:1504 +#, fuzzy, php-format +msgid "User '%s' has been removed from phone queue '%s'." +msgstr "删除用户 '%s',从电话队列 '%s'。" + +#: gofon/phoneaccount/class_phoneAccount.inc:1541 +#: gofon/phoneaccount/class_phoneAccount.inc:1543 +#, php-format +msgid "The specified telephonenumber '%s' is already assigned to '%s'." +msgstr "指定的电话号码 '%s' 已经分配给了 '%s'。" + +#: gofon/phoneaccount/class_phoneAccount.inc:1589 +#, php-format +msgid "" +"The previously selected asterisk home server (%s) is no longer available. " +"Remove aborted." +msgstr "之前选择的 asterisk 主服务器 (%s) 不存在了。删除终止。" + +#: gofon/phoneaccount/class_phoneAccount.inc:1598 +#, fuzzy +msgid "Phone account settings" +msgstr "电话设置" + +#: gofon/phoneaccount/class_phoneAccount.inc:1602 +msgid "My account" +msgstr "我的账号" + +#: gofon/phoneaccount/class_phoneAccount.inc:1609 +#: gofon/conference/class_phoneConferenceGeneric.inc:793 +#, fuzzy +msgid "Telephone number" +msgstr "电话号码" + +#: gofon/phoneaccount/class_phoneAccount.inc:1610 +#, fuzzy +msgid "Macro settings" +msgstr "邮件选项" + +#: gofon/phoneaccount/class_phoneAccount.inc:1613 +#, fuzzy +msgid "Phone context" +msgstr "电话名称" + +#: gofon/phoneaccount/class_phoneAccount.inc:1614 +#, fuzzy +msgid "Voice mail context" +msgstr "语音邮件 PIN" + +#: gofon/phoneaccount/class_phoneAccount.inc:1615 +#, fuzzy +msgid "Telephone pin" +msgstr "电话" + +#: gofon/phoneaccount/class_phoneAccount.inc:1616 +#, fuzzy +msgid "Voicemail pin" +msgstr "语音邮件 PIN" + +#: gofon/phoneaccount/class_phoneAccount.inc:1698 +msgid "There is currently no asterisk server defined!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1702 +msgid "Asterisk server is invalid!" +msgstr "" + +#: gofon/phoneaccount/class_phoneAccount.inc:1708 +#, fuzzy +msgid "Voicemail PIN must be 4 characters long!" +msgstr "语音邮件 PIN 必须包含 1-4 个字符。" + +#: gofon/phoneaccount/class_phoneAccount.inc:1711 +#, fuzzy +msgid "Voicemail PIN contains invalid characters!" +msgstr "语音邮件 PIN 必须包含 1-4 个字符。" + +#: gofon/phoneaccount/class_phoneAccount.inc:1716 +#, fuzzy +msgid "Phone pin contains invalid characters!" +msgstr "属性 '%s' 为空或者包含无效字符。" + +#: gofon/phoneaccount/class_phoneAccount.inc:1723 +#, php-format +msgid "The parameter %s contains invalid char. '!,#' is used as delimiter" +msgstr "参数 %s 包含无效字符。'!,#' 用做分隔符" + +#: gofon/conference/headpage.tpl:6 +#: gofon/conference/class_divListConferences.inc:31 +#: gofon/conference/class_divListConferences.inc:32 +msgid "List of conference rooms" +msgstr "会议室列表" + +#: gofon/conference/headpage.tpl:24 +msgid "" +"This menu allows you to create, delete and edit selected phone conferences. " +"Having a large number of phone conferences, you might prefer the range " +"selectors on top of the conferences list." +msgstr "" +"这个菜单允许您创建,删除和修改所选的电话会议。对于一个长列表,您可以通过列表" +"上面的范围选择来调整。" + +#: gofon/conference/headpage.tpl:35 +msgid "Display users matching" +msgstr "显示匹配的用户" + +#: gofon/conference/headpage.tpl:36 +msgid "Regular expression for matching user names" +msgstr "用于匹配用户名的正则表达式" + +#: gofon/conference/remove.tpl:6 +msgid "" +"This includes 'all' accounts, systems, etc. in this subtree. Please double " +"check if your really want to do this since there is no way for GOsa to get " +"your data back." +msgstr "" +"在这个子树中包含了所有账号,系统等等。请再次检查您是否要这么做,因为 GOsa 没" +"有办法将您的数据找回。" + +#: gofon/conference/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"最好在执行这个操作之前,保存当前 LDAP 树中的内容到一个文件。所以,如果您已经" +"这么做了,按“删除”继续或者按“取消”退出。" + +#: gofon/conference/class_phoneConferenceManagment.inc:24 +msgid "Phone conferences" +msgstr "电话会议" + +#: gofon/conference/class_phoneConferenceManagment.inc:25 +msgid "Management" +msgstr "管理" + +#: gofon/conference/class_phoneConferenceManagment.inc:206 +#: gofon/conference/class_phoneConferenceManagment.inc:267 +#, fuzzy +msgid "conference" +msgstr "会议" + +#: gofon/conference/class_phoneConferenceManagment.inc:228 +#: gofon/conference/class_phoneConferenceManagment.inc:288 +#, fuzzy +msgid "You have not permission to delete this entry!" +msgstr "您无权删除这个部门。" + +#: gofon/conference/generic.tpl:5 +msgid "Properties" +msgstr "属性" + +#: gofon/conference/generic.tpl:15 gofon/conference/paste_generic.tpl:5 +msgid "Conference name" +msgstr "会议名称" + +#: gofon/conference/generic.tpl:21 gofon/conference/paste_generic.tpl:10 +msgid "Name of conference to create" +msgstr "要创建会议的名称" + +#: gofon/conference/generic.tpl:28 +msgid "Type" +msgstr "类型" + +#: gofon/conference/generic.tpl:35 +msgid "Choose subtree to place conference in" +msgstr "选择放置会议的子树" + +#: gofon/conference/generic.tpl:82 +#, fuzzy +msgid "Select language" +msgstr "服务器名称" + +#: gofon/conference/generic.tpl:104 +msgid "Descriptive text for department" +msgstr "部门描述文件" + +#: gofon/conference/generic.tpl:110 +msgid "Lifetime (in days)" +msgstr "生存期(天)" + +#: gofon/conference/generic.tpl:157 +#: gofon/conference/class_phoneConferenceGeneric.inc:783 +msgid "Preset PIN" +msgstr "预置 PIN" + +#: gofon/conference/generic.tpl:165 +#: gofon/conference/class_phoneConferenceGeneric.inc:384 +#: gofon/conference/class_divListConferences.inc:58 +msgid "PIN" +msgstr "PIN" + +#: gofon/conference/generic.tpl:177 +#: gofon/conference/class_phoneConferenceGeneric.inc:784 +msgid "Record conference" +msgstr "会议记录" + +#: gofon/conference/generic.tpl:185 +msgid "Sound file format" +msgstr "声音文件类型" + +#: gofon/conference/generic.tpl:188 +msgid "Choose subtree to place department in" +msgstr "选择放置部门的子树" + +#: gofon/conference/generic.tpl:208 +#: gofon/conference/class_phoneConferenceGeneric.inc:785 +msgid "Play music on hold" +msgstr "播放暂停音乐" + +#: gofon/conference/generic.tpl:216 +msgid "Activate session menu" +msgstr "激活会话菜单" + +#: gofon/conference/generic.tpl:224 +msgid "Announce users joining or leaving the conference" +msgstr "通知用户加入或者离开会议" + +#: gofon/conference/generic.tpl:232 +msgid "Count users" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:264 +#, php-format +msgid "Cannot delete entry from server '%s' because it seems to be removed!" +msgstr "" + +#: gofon/conference/class_phoneConferenceGeneric.inc:379 +#, fuzzy, php-format +msgid "" +"The previously selected asterisk home server '%s' is no longer available!" +msgstr "之前选择的 asterisk 主服务器 (%s) 不存在了。" + +#: gofon/conference/class_phoneConferenceGeneric.inc:396 +#: gofon/conference/class_phoneConferenceGeneric.inc:792 +#, fuzzy +msgid "Lifetime" +msgstr "生存期(天)" + +#: gofon/conference/class_phoneConferenceGeneric.inc:641 +#: gofon/conference/class_phoneConferenceGeneric.inc:643 +#, fuzzy, php-format +msgid "'%s' is already assigned to '%s'!" +msgstr "指定的电话号码 '%s' 已经分配给了 '%s'。" + +#: gofon/conference/class_phoneConferenceGeneric.inc:765 +#: gofon/conference/class_divListConferences.inc:95 +#: gofon/conference/class_divListConferences.inc:208 +msgid "Conference" +msgstr "会议" + +#: gofon/conference/class_phoneConferenceGeneric.inc:766 +#, fuzzy +msgid "Phone conference management" +msgstr "会议管理" + +#: gofon/conference/class_phoneConferenceGeneric.inc:771 +#, fuzzy +msgid "GOfon conference" +msgstr "电话会议" + +#: gofon/conference/class_phoneConferenceGeneric.inc:778 +#, fuzzy +msgid "Conference PIN" +msgstr "会议" + +#: gofon/conference/class_phoneConferenceGeneric.inc:786 +#, fuzzy +msgid "Activate menu" +msgstr "激活会话菜单" + +#: gofon/conference/class_phoneConferenceGeneric.inc:787 +#, fuzzy +msgid "Announce user activity" +msgstr "公告频率" + +#: gofon/conference/class_phoneConferenceGeneric.inc:788 +#, fuzzy +msgid "Count user" +msgstr "国家" + +#: gofon/conference/class_phoneConferenceGeneric.inc:789 +#, fuzzy +msgid "Conference type" +msgstr "会议名称" + +#: gofon/conference/class_phoneConferenceGeneric.inc:791 +#, fuzzy +msgid "Format" +msgstr "格式" + +#: gofon/conference/class_phoneConferenceGeneric.inc:794 +#: gofon/conference/class_divListConferences.inc:57 +msgid "Owner" +msgstr "所有者" + +#: gofon/conference/main.inc:48 gofon/conference/main.inc:50 +msgid "Conference management" +msgstr "会议管理" + +#: gofon/conference/class_divListConferences.inc:65 +msgid "Regular expression for matching conference names" +msgstr "匹配会议名称的正则表达式" + +#: gofon/conference/class_divListConferences.inc:150 +msgid "Edit this entry" +msgstr "编辑这条记录" + +#: gofon/conference/class_divListConferences.inc:158 +msgid "Delete this entry" +msgstr "删除这个条目" + +#: gofon/conference/class_divListConferences.inc:185 +msgid "Unknown" +msgstr "未知" + +#: gofon/conference/class_divListConferences.inc:225 +#: gofon/conference/class_divListConferences.inc:226 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "部门名称" + +#: gofon/conference/class_divListConferences.inc:225 +#, fuzzy +msgid "conferences" +msgstr "会议" + +#: gofon/fonreports/class_fonreport.inc:6 +msgid "Phone Reports" +msgstr "电话记录" + +#: gofon/fonreports/class_fonreport.inc:210 +#, fuzzy +msgid "Insufficient permissions" +msgstr "缺省权限" + +#: gofon/fonreports/class_fonreport.inc:229 +msgid "Y-M-D" +msgstr "Y-M-D" + +#: gofon/fonreports/class_fonreport.inc:396 +#: gofon/fonreports/class_fonreport.inc:397 +#: gofon/fonreports/class_fonreport.inc:404 gofon/fonreports/main.inc:22 +msgid "Phone reports" +msgstr "电话记录" + +#: gofon/fonreports/class_fonreport.inc:397 +#, fuzzy +msgid "All entries are readonly" +msgstr "所有字段均可写" + +#: gofon/fonreports/class_fonreport.inc:409 gofon/fonreports/contents.tpl:30 +msgid "Date" +msgstr "日期" + +#: gofon/fonreports/class_fonreport.inc:410 gofon/fonreports/contents.tpl:31 +msgid "Source" +msgstr "源" + +#: gofon/fonreports/class_fonreport.inc:411 gofon/fonreports/contents.tpl:32 +msgid "Destination" +msgstr "目标" + +#: gofon/fonreports/class_fonreport.inc:412 gofon/fonreports/contents.tpl:33 +msgid "Channel" +msgstr "频道" + +#: gofon/fonreports/class_fonreport.inc:413 +#, fuzzy +msgid "Application called" +msgstr "应用程序名称" + +#: gofon/fonreports/class_fonreport.inc:414 +#, fuzzy +msgid "Disposition" +msgstr "断开" + +#: gofon/fonreports/class_fonreport.inc:415 gofon/fonreports/contents.tpl:36 +msgid "Duration" +msgstr "持续时间" + +#: gofon/fonreports/contents.tpl:2 +msgid "Filter" +msgstr "过滤器" + +#: gofon/fonreports/contents.tpl:6 +msgid "Search for" +msgstr "查询" + +#: gofon/fonreports/contents.tpl:7 +msgid "Enter user name to search for" +msgstr "输入要查询的用户名" + +#: gofon/fonreports/contents.tpl:8 gofon/fonreports/contents.tpl:16 +msgid "in" +msgstr "于" + +#: gofon/fonreports/contents.tpl:9 +msgid "Select subtree to base search on" +msgstr "选择查询基于的子树" + +#: gofon/fonreports/contents.tpl:12 +msgid "during" +msgstr "在" + +#: gofon/fonreports/contents.tpl:21 +msgid "Search" +msgstr "查找" + +#: gofon/fonreports/contents.tpl:34 +msgid "Application" +msgstr "应用程序" + +#: gofon/fonreports/contents.tpl:35 +msgid "Status" +msgstr "状态" + +#: gofon/fonreports/contents.tpl:51 +msgid "Search returned no results..." +msgstr "查无结果..." + +#~ msgid "Addons" +#~ msgstr "插件" + +#, fuzzy +#~ msgid "GOfon reports" +#~ msgstr "电话记录" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "复制" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "剪切" + +#~ msgid "Paste" +#~ msgstr "粘贴" + +#~ msgid "cut" +#~ msgstr "剪切" + +#~ msgid "Cut this entry" +#~ msgstr "剪切条目" + +#~ msgid "copy" +#~ msgstr "复制" + +#~ msgid "Copy this entry" +#~ msgstr "拷贝条目" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "无法选择数据库 %s 在 %s 上。" + +#, fuzzy +#~ msgid "Insufficient permissions to view this attribute" +#~ msgstr "权限不足,无法在 goFonMacro 中修改属性 '%s'。" + +#~ msgid "This account has no phone extensions." +#~ msgstr "这个账号没有电话扩展。" + +#~ msgid "" +#~ "This account has phone features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "这个账户电话功能已启用。您可以点击下面的按钮禁用。" + +#~ msgid "" +#~ "This account has phone features disabled. You can't enable them while no " +#~ "uid is set." +#~ msgstr "这个账户电话功能已禁用。您可以点击下面的按钮来启用。" + +#~ msgid "" +#~ "This account has phone features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "这个账户的电话功能被禁用。您可以点击下面按钮来启用。" + +#, fuzzy +#~ msgid "Cannot connect to %s database on server '%s'!" +#~ msgstr "无法在主服务器 '%s' 上选择数据库 '%s'。" + +#, fuzzy +#~ msgid "Cannot select %s database on server '%s'!" +#~ msgstr "无法在主服务器 '%s' 上选择数据库 '%s'。" + +#, fuzzy +#~ msgid "Lifetime is not valid!" +#~ msgstr "生存期(天)" + +#, fuzzy +#~ msgid "Cannot query %s database on server '%s'!" +#~ msgstr "无法在主服务器 '%s' 上选择数据库 '%s'。" + +#~ msgid "Name - Number" +#~ msgstr "名称 - 数字" + +#~ msgid "Select to search within subtrees" +#~ msgstr "选择在子树中查询" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "在子树中查找" + +#, fuzzy +#~ msgid "Number of listed conferences" +#~ msgstr "会议记录" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Cannot insert new macro on server '%s'!" +#~ msgstr "为服务器 '%s' 插入新宏失败。" + +#, fuzzy +#~ msgid "Display name is not set!" +#~ msgstr "显示名称" + +#~ msgid "This 'dn' is no phone macro." +#~ msgstr "这个 'dn' 不是电话宏。" + +#, fuzzy +#~ msgid "You're about to delete the following user(s) %s" +#~ msgstr "您将删除用户 %s。" + +#~ msgid "You're about to delete the whole LDAP subtree placed under '%s'." +#~ msgstr "您将要删除 '%s' 下的整个 LDAP 子树。" + +#~ msgid "Ok" +#~ msgstr "好" + +#~ msgid "Apply" +#~ msgstr "应用" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Delete" +#~ msgstr "删除" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Edit" +#~ msgstr "编辑" + +#, fuzzy +#~ msgid "You're about to delete the following macro(s) %s" +#~ msgstr "您将删除用户 %s。" + +#~ msgid "You're about to delete the macro '%s'." +#~ msgstr "您将要删除宏 '%s'。" + +#~ msgid "This 'dn' has no phone features." +#~ msgstr "这个 'dn' 没有电话功能。" + +#, fuzzy +#~ msgid "'0' is a reserved name and cannot be used!" +#~ msgstr "'0' 作为保留 '电话名' 不能使用。" + +#~ msgid "Save" +#~ msgstr "保存" + +#, fuzzy +#~ msgid "VoIP service - Asterisk management" +#~ msgstr "Asterisk 管理" + +#, fuzzy +#~ msgid "The attribute DB user is empty or contains invalid characters." +#~ msgstr "属性 '%s' 为空或者包含无效字符。" + +#, fuzzy +#~ msgid "The attribute password is empty or contains invalid characters." +#~ msgstr "属性 '%s' 为空或者包含无效字符。" + +#, fuzzy +#~ msgid "" +#~ "The attribute local dial prefix is empty or contains invalid characters." +#~ msgstr "属性 '%s' 为空或者包含无效字符。" + +#, fuzzy +#~ msgid "" +#~ "The attribute country dial prefix is empty or contains invalid characters." +#~ msgstr "属性 '%s' 为空或者包含无效字符。" + +#~ msgid "" +#~ "Phone queue is enabled for this group. You can disable it by clicking " +#~ "below." +#~ msgstr "电话队列已经为这个组启用。您可以点击下面按钮禁用。" + +#~ msgid "" +#~ "For this group the phone queues are disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "对于这个组电话队列被禁用。您可以点击下面按钮启用。" + +#~ msgid "Please select a valid goFonHomeServer." +#~ msgstr "请选择一个有效的 goFonHomeServer。" + +#~ msgid "Timeout must be numeric" +#~ msgstr "超时必须填数字" + +#~ msgid "Retry must be numeric" +#~ msgstr "重试必须填数字" + +#~ msgid "Max queue length must be numeric" +#~ msgstr "最大队列长度必须是数字" + +#~ msgid "Announce frequency must be numeric" +#~ msgstr "公告频率必须是一个数字" + +#~ msgid "There must be least one queue number defined." +#~ msgstr "必须至少定义一个队列数字" + +#, fuzzy +#~ msgid "Cannot remove queue entries from database!" +#~ msgstr "从数据库删除旧的队列条目失败" + +#~ msgid "Mysql query failed." +#~ msgstr "Mysql 查询失败。" + +#~ msgid "Please have a look a the gosa logfiles." +#~ msgstr "请看一下 GOsa 日志文件。" + +#~ msgid "Saving phone queue failed" +#~ msgstr "保存电话队列失败" + +#~ msgid "Removing phone queue failed" +#~ msgstr "删除电话队列失败" + +#, fuzzy +#~ msgid "Updating gofon home server failed for '%s'." +#~ msgstr "更新 DNS 服务失败" + +#, fuzzy +#~ msgid "Removing of system phone/generic with dn '%s' failed!" +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of phone/generic with dn '%s' failed!" +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#~ msgid "" +#~ "The MySQL Server '%s' isn't reachable as user '%s'. Abort saving entries " +#~ "to keep the database consistent, check GOsa log for mysql error." +#~ msgstr "" +#~ "MySQL 服务器 '%s' 无法被用户 '%s' 访问。取消保存将保持数据库的完整性,通" +#~ "过 GOsa 日志来查看 mysql 错误。" + +#~ msgid "" +#~ "The old MySQL home server '%s' isn't reachable as user '%s'. Abort saving " +#~ "entries to keep the database consistent, check GOsa log for mysql error." +#~ msgstr "" +#~ "老的 MySQL 主服务器 '%s' 无法被用户 '%s' 访问。取消保存将保持数据库的完整" +#~ "性,通过 GOsa 日志来查看 mysql 错误。" + +#, fuzzy +#~ msgid "Phone number is invalid!" +#~ msgstr "电话号码" + +#~ msgid "" +#~ "The specified Voicemail PIN contains invalid characters, only numeric " +#~ "values are allowed here." +#~ msgstr "输入的语音邮件 PIN 包含无效字符,只允许数字。" + +#~ msgid "" +#~ "The specified phone PIN contains invalid characters, only aphanumeric " +#~ "values are allowed here." +#~ msgstr "输入的电话 PIN 包含无效字符,只允许字母数字。" + +#~ msgid "You need to specify at least one phone number!" +#~ msgstr "您需要提供至少一个电话号码!" + +#, fuzzy +#~ msgid "Saving of user/phone account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Removing of user/phone account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of goFonConference/generic with dn '%s' failed!" +#~ msgstr "保存 dn 为 '%s' 服务器服务/反病毒失败。" + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed!" +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Removing of goFonMacro/generic account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#~ msgid "" +#~ "The specified home server '%s' is not available in GOsa server " +#~ "configuration. Saving this account will create a new entry on the server " +#~ "'%s'. Use cancel if you do not want to create a new entry while ignoring " +#~ "old accounts." +#~ msgstr "" +#~ "提供的主服务器 '%s' 不在 GOsa 服务器配置中。保存这个账号将在服务器 '%s' 上" +#~ "创建一个新条目。选择“取消”如果您不想创建一个新条目并忽略旧账号。" + +#~ msgid "" +#~ "Can't save any changes to asterisk database, there is currently no mysql " +#~ "extension available in your php setup." +#~ msgstr "无法保存修改到 asterisk 数据库,当前 php 没有安装 mysql 扩展。" + +#~ msgid "" +#~ "The MySQL home server '%s' isn't reachable as user '%s', check GOsa log " +#~ "for mysql error." +#~ msgstr "" +#~ "MySQL 主服务器 '%s' 无法被用户 '%s' 访问到,通过 GOsa 日志来查看 mysql 错" +#~ "误。" + +#~ msgid "" +#~ "The MySQL initial home server '%s' isn't reachable as user '%s', check " +#~ "GOsa log for mysql error." +#~ msgstr "" +#~ "MySQL 主服务器 '%s' 无法被用户 '%s' 访问到,通过 GOsa 日志来查看 mysql 错" +#~ "误。" + +#~ msgid "Can't select database '%s' on initial home server '%s'." +#~ msgstr "无法在初始的主服务器 '%s' 上选择数据库 '%s'。" + +#~ msgid "" +#~ "There is currently no asterisk server defined. Possibly you are missing a " +#~ "server that handles the asterisk management (goFonServer). Your settings " +#~ "can't be saved to asterisk database." +#~ msgstr "" +#~ "当前没有定义 asterisk 服务器。可能您漏掉了个服务器处理 asterisk 管理" +#~ "(goFonServer)。您的设置不能保存到 asterisk 数据库。" + +#~ msgid "Could not detect old queue entry, query failed." +#~ msgstr "无法检测旧的队列条目,查询失败。" + +#~ msgid "" +#~ "More than one entry in queue table found, that uses the name ('%s'). " +#~ "Please fix this issue manually first." +#~ msgstr "在队列中发现至少一个条目,名为(%s)。请先手工解决这个问题。" + +#, fuzzy +#~ msgid "" +#~ "Can't delete because there are users which are depending on this phone. " +#~ "One of them is user '%s'." +#~ msgstr "无法删除,因为仍然有用户在依赖这个电话。其中一个用户是 '%s'。" + +#~ msgid "The required field IP address is empty." +#~ msgstr "需要的 IP 地址字段为空。" + +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "IP 地址字段包含无效地址。" + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "请为这个附件指定一个有效名称。" + +#~ msgid "The required field 'Phone name' is not set." +#~ msgstr "需要的字段“电话名称”没有设置。" + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "在您选择的部门中已经存在条目 '%s'" + +#~ msgid "Can't connect to phone database, no reports can be shown!" +#~ msgstr "不能连接电话数据库,无法显示报告!" + +#~ msgid "There is no mysql extension available, please check your php setup." +#~ msgstr "没有可用的 mysql 扩展,请检查您的 php 设置。" + +#~ msgid "Can't select phone database for report generation!" +#~ msgstr "无法为生成报告查询电话数据库!" + +#~ msgid "Query for phone database failed!" +#~ msgstr "查询电话数据库失败!" + +#~ msgid "" +#~ "The specified goFonHomeServer '%s' is not available in GOsa server " +#~ "configuration. Saving this account will create a new entry on the server " +#~ "'%s'. Use cancel if you do not want to create a new entry ignoring old " +#~ "accounts." +#~ msgstr "" +#~ "指定的 goFonHomeServer '%s' 在 GOsa 服务器配置中不存在。保存这个账号将在服" +#~ "务器 '%s' 上创建一个新条目。选择“取消”如果您不想创建一个新条目并忽略旧账" +#~ "号。" + +#~ msgid "" +#~ "Can't save any changes to asterisk database, there is no mysql extension " +#~ "available." +#~ msgstr "因为当前没有 mysql 扩展,无法保存修改到 asterisk 数据库。" + +#~ msgid "Error while performing query:" +#~ msgstr "执行查询时错误:" + +#~ msgid "" +#~ "The macro you selected, is no longer available for you, please choose " +#~ "another one." +#~ msgstr "您选择的宏不能继续使用,请选择另外一个。" + +#~ msgid "Please enter a valid phone number!" +#~ msgstr "无法输入一个有效的电话号码!" + +#~ msgid "" +#~ "The MySQL Server '%s' isn't reachable as user '%s', check GOsa log for " +#~ "mysql error." +#~ msgstr "" +#~ "MySQL 服务器'%s' 无法被用户 '%s' 访问,通过 GOsa 日志来查看 mysql 错误。" + +#~ msgid "" +#~ "Can't remove phone account, the mysql extension is not present in php " +#~ "configuration." +#~ msgstr "无法删除电话账号,PHP 配置中没有 mysql 扩展。" + +#~ msgid "" +#~ "Could not remove the conference entry from database on home server (%s). " +#~ "Please check your asterisk database configuration." +#~ msgstr "" +#~ "无法从主服务器(%s)中数据库中删除会议条目。请检查您 asterisk 数据库的配置。" + +#~ msgid "Please enter a PIN." +#~ msgstr "请输入一个 PIN。" + +#~ msgid "Please enter a name for the conference." +#~ msgstr "请为这个会议输入一个名称。" + +#~ msgid "Only numeric chars are allowed in Number field." +#~ msgstr "数字字段只允许填数字。" + +#~ msgid "Only numbers are allowed in Lifetime." +#~ msgstr "在 Lifetime 中只允许数字。" + +#, fuzzy +#~ msgid "There is already a conference with this name in the current tree." +#~ msgstr "已经有一个 profile 使用了这个类名。" + +#~ msgid "" +#~ "Can not check if there are already some entries with given telephone " +#~ "number and/or cn in the destination home server." +#~ msgstr "" +#~ "无法检查是否已经有一些条目包含给出的电话号码 和/或 cn 在目标主服务器中。" + +#~ msgid "" +#~ "Can not remove entries with some telephone number and/or cn from " +#~ "destination home server." +#~ msgstr "无法删除包含一些电话号码并且/或者 cn 来自目标主服务器的条目。" + +#~ msgid "" +#~ "Can not check if entry exists in old database. Please have a look a the " +#~ "gosa logfiles." +#~ msgstr "无法检查条目是否存在于旧的数据库中。请查看 gosa 日志文件。" + +#~ msgid "" +#~ "Can not remove old entries from initial home server. Please have a look a " +#~ "the gosa logfiles." +#~ msgstr "无法在原来的主服务器中删除旧条目。请查看 gosa 日志文件。" + +#~ msgid "Removing macro from '%s' failed. Check GOsa log for mysql error." +#~ msgstr "从 '%s' 删除宏失败。通过 GOsa 日志来查看 mysql 错误。" + +#~ msgid "More than one '(' is currently not supported. Line : '%s'." +#~ msgstr "当前不支持一个以上的 '('。行: '%s'。" + +#~ msgid "More than one ')' is currently not supported. Line : '%s'." +#~ msgstr "当前不支持一个以上的 ')'。行: '%s'。" + +#~ msgid "There is no extension type given in line : '%s'." +#~ msgstr "没有给出扩展类型,在行: '%s'。" + +#~ msgid "" +#~ "There must be at least one server with an asterisk database to save this " +#~ "phone macro." +#~ msgstr "必须有至少一个带有 asterisk 数据库的服务器来保存电话宏。" + +#~ msgid "The given cn '%s' already exists." +#~ msgstr "给出的 cn '%s' 已经存在。" + +#~ msgid "You must specify the 'Display Name' in order to save this macro" +#~ msgstr "为保存这个宏,您必须提供“显示名称”" + +#~ msgid "The given cn is too long, to create a Makro entry, maximum 20 chars." +#~ msgstr "提供的 cn 可能太长,为创建一个 Makro 条目,最多 20 个字符。" + +#~ msgid "" +#~ "This macro is still in use. It is necessary to mark this macro as visible " +#~ "for users." +#~ msgstr "该宏仍在使用。有必要将这个宏标记为用户可见。" + +#~ msgid "Makro length must be lower than 100 lines" +#~ msgstr "Macro 长度必须少于 100 行" + +#~ msgid "" +#~ "This macro is still in use. To delete this Macro ensure that nobody has " +#~ "selected it." +#~ msgstr "该宏仍在使用。要删除这个宏先确认没有人使用它。" + +#~ msgid "" +#~ "Could not remove the macro entry from asterisk databases. Please check " +#~ "your asterisk database configurations." +#~ msgstr "" +#~ "无法从 asterisk 数据库中删除该宏记录。请检查您的 asterisk 数据库配置。" + +#~ msgid "The parameter %s has incorrect value for type bool." +#~ msgstr "参数 %s 含有不正确的布尔值。" + +#~ msgid "" +#~ "Parameter count of the macro changed, you must update each user which are " +#~ "using this macro '%s'." +#~ msgstr "宏的参数数目修改了,您必须更新每一个使用宏 '%s' 的用户。" + +#~ msgid "You are not allowed to delete this macro!" +#~ msgstr "您无权删除这个宏!" diff --git a/trunk/gosa-plugins/gofon/plugin.dsc b/trunk/gosa-plugins/gofon/plugin.dsc new file mode 100644 index 000000000..d17280ddb --- /dev/null +++ b/trunk/gosa-plugins/gofon/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = gofon +description = "GOfon backend management with report functionality" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = systems diff --git a/trunk/gosa-plugins/goto/addons/goto/class_gotoLogView.inc b/trunk/gosa-plugins/goto/addons/goto/class_gotoLogView.inc new file mode 100644 index 000000000..a5e166ff2 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/class_gotoLogView.inc @@ -0,0 +1,215 @@ + up, 0 => down + + var $ignore_account = TRUE; + var $standalone = FALSE; + + function __construct(&$config,$dn,$parent) + { + $this->config = $config; + $this->parent = $parent; + + /* Try to fetch logs for the given event (mac) + */ + $this->o_queue = new gosaSupportDaemon(); + + /* Load ldap object if given + and use this macAddress. + */ + if(is_object($parent) && $dn != "" && $dn != "new"){ + plugin::plugin($config,$dn,$parent); + } + + /* Get correct macAddress. + Check if an event is given or a ldap object. + */ + if(is_array($this->parent) && isset($this->parent['MACADDRESS'])){ + $this->mac = $this->parent['MACADDRESS']; + $this->standalone = TRUE; + }elseif(isset($parent->attrs['macAddress'][0])){ + $this->mac = $parent->attrs['macAddress'][0]; + $this->standalone = FALSE; + } + + /* Query for log files + */ + $res = $this->o_queue->get_log_info_for_mac($this->mac); + if($this->o_queue->is_configured() && $this->o_queue->is_error()){ + msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG); + } + + /* Check if there is at least one log file + */ + if(!isset($res[$this->mac]) || !is_array($res[$this->mac])){ + $this->logs = array(); + }else{ + $this->selected_date = key($res[$this->mac]); + $this->logs = $res; + } + + } + + + function execute() + { + $smarty = get_smarty(); + $smarty->assign("logs",$this->logs); + $smarty->assign("logs_available", isset($this->logs[$this->mac])); + $smarty->assign("mac",$this->mac); + $smarty->assign("selected_file",$this->selected_file); + $smarty->assign("selected_date",$this->selected_date); + $smarty->assign("log_file", $this->get_log($this->mac,$this->selected_date,$this->selected_file)); + $smarty->assign("standalone",$this->standalone); + + if (isset($this->logs[$this->mac])){ + $date = date("d.m.Y H:i:s",$this->logs[$this->mac][$this->selected_date]['REAL_DATE']); + } + $file = $this->selected_file; + $smarty->assign("selected_log",_("none")); + if(!empty($file)){ + $smarty->assign("selected_log",$file.", ".$date); + } + + $divlist = new divlist("log_view"); + + /* Create sort direction images + */ + if($this->sort_dir){ + $img = "\\/"; + }else{ + $img = "/\\sort_by == "file"){ + $img1 = $img; + $img2 = ""; + }else{ + $img1 = ""; + $img2 = $img; + } + + + /* Create list header + */ + $divlist->SetHeader(array( + array("string"=>""._("File")." ".$img1."", + "attach"=>"width='200px;'"), + array("string"=>""._("Date")." ".$img2."", + "attach" => "style='border-right:none;'"), + )); + + /* Create divlist list + */ + $divlist->SetEntriesPerPage(0); + $divlist->SetHeight(150); + + /* Create sortable array + */ + $link = "%str%"; + $to_add = array(); + $sort_by = $this->sort_by; + foreach($this->logs as $mac => $times){ + foreach($times as $time => $data){ + $rtime = $data['REAL_DATE']; + foreach($data['FILES'] as $file){ + + $highlight = ""; + if($file == $this->selected_file && $time == $this->selected_date && $mac == $this->mac){ + $highlight = "background-color:#CCCCCC"; + } + + $use_link = preg_replace(array("/%mac%/","/%time%/","/%file%/"),array($mac,$time,$file),$link); + $to_add[$$sort_by.$file.$time] = array( + array("string" => preg_replace("/%str%/",$file,$use_link), + "attach" => "style='width:200px; $highlight'"), + array("string" => preg_replace("/%str%/",date("d.m.Y H:i:s",$rtime),$use_link), + "attach" => "style='border-right:none; $highlight'"), + ); + } + } + } + + /* Sort entries + */ + if(!$this->sort_dir){ + uksort($to_add, "strnatcasecmp"); + }else{ + uksort($to_add, "strnatcasecmp"); + $to_add = array_reverse($to_add); + } + + /* Append entries to list + */ + foreach($to_add as $entry){ + $divlist->AddEntry($entry); + } + + $smarty->assign("ACL",preg_match("/r/",$this->getacl(""))); + $smarty->assign("divlist",$divlist->DrawList()); + return($smarty->fetch(get_template_path('log_view.tpl', TRUE,dirname(__FILE__)))); + } + + + function get_log($mac,$date,$file) + { + $res = $this->o_queue->get_log_file($mac,$date,$file); + if($this->o_queue->is_configured() && $this->o_queue->is_error()){ + msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG); + } + $res = nl2br(htmlentities($res)); + return($res); + } + + + function save_object() + { + foreach(array("time"=>"selected_date","file"=>"selected_file") as $attr => $dest){ + if(isset($_GET[$attr])){ + $this->$dest = $_GET[$attr]; + } + } + if(isset($_GET['sort_by']) && in_array($_GET['sort_by'],array("file","time"))){ + if($_GET['sort_by'] == $this->sort_by){ + $this->sort_dir = !$this->sort_dir; + } + $this->sort_by = $_GET['sort_by']; + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Log view"), + "plDescription" => _("GOto log view"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 30, + "plSection" => array("administration"), + "plCategory" => array("workstation","server"), + + "plProvidedAcls"=> array() + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/class_goto_import_file.inc b/trunk/gosa-plugins/goto/addons/goto/class_goto_import_file.inc new file mode 100644 index 000000000..0b3338505 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/class_goto_import_file.inc @@ -0,0 +1,179 @@ +parent = $parent; + $this->daemon_events = DaemonEvent::get_event_types( SYSTEM_EVENT | HIDDEN_EVENT); + + $this->csv_fields = array( + "0"=>"TIMESTAMP","1" => "MAC", "2" => "HEADER", "3" => "OGROUP", + "4" => "BASE", "5" => "FQDN", "6" => "IP", "7" => "DHCP"); + } + + + private function parse_csv($str) + { + + /* Some file checks + */ + $lines = split("\n",$str); + if(empty($str) || !count($lines)){ + msg_dialog::display(_("Import"), msgPool::incorrectUpload(_("file is empty")),ERROR_DIALOG); + return; + } + + /* Reset current events + */ + $this->events = array(); + + /* Parse each line of the given file + */ + foreach($lines as $line){ + + // Skip empty lines. + if(empty($line)) continue; + + /* Load values from file + */ + $fields = split(";",$line); + $event = array(); + foreach($this->csv_fields as $key => $val) { + $event[$val] = ""; + if(isset($fields[$key])){ + $event[$val] = $fields[$key]; + } + } + $this->events[] = $event; + } + $this->check_fields(); + } + + + public function execute() + { + /* Import file + */ + if(isset($_POST['import']) && isset($_FILES['file'])) { + if(isset($_FILES['file']['tmp_name'])){ + $str = file_get_contents($_FILES['file']['tmp_name']); + $this->parse_csv($str); + } + } + + /* Import started + */ + $confirmed = FALSE; + foreach($_POST as $name => $value){ + if(preg_match("/^MSG_OK/",$name)){ + $confirmed = TRUE; + } + } + if(isset($_POST['start_import']) || $confirmed){ + $error = FALSE; + if(!$confirmed){ + foreach($this->events as $event){ + if(!empty($event['ERROR'])){ + $error = TRUE; + break; + } + } + if($error){ + msg_dialog::display(_("Import"), + _("Selected entries will be skipped because of errors. Do you want to proceed?"),CONFIRM_DIALOG); + } + } + if(!$error){ + + $success = 0; + $fail = 0; + + foreach($this->events as $key => $event){ + if(!empty($event['ERROR'])){ + $fail ++; + continue; + } + + /* Create event + */ + $class= $this->daemon_events['QUEUED'][$event['HEADER']]; + $o_data = $this->daemon_events['BY_CLASS'][$class]; + $object = new $class($this->config); + $object->add_targets(array($event['MAC'])); + if($o_data['s_Schedule_Action'] == $event['HEADER']){ + $object->set_type(SCHEDULED_EVENT); + }else{ + $object->set_type(TRIGGERED_EVENT); + } + + /* Update values like fqdn a.s.o + */ + foreach($this->csv_fields as $name){ + if($name == "TIMESTAMP" && empty($event[$name])) continue; + $object->set_value($name,$event[$name]); + } + + if(!$this->parent->o_queue->append($object)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($this->parent->o_queue->get_error()),ERROR_DIALOG); + $fail ++; + }else{ + unset($this->events[$key]); + $success ++; + } + } + msg_dialog::display(_("Import"),sprintf(_("Import complete: %s events successfully send, %s failed"),$success,$fail),INFO_DIALOG); + $this->import_successful = count($this->events) == 0; + } + } + + + /* Prepare output + */ + $evts = $this->events; + foreach($this->events as $id => $evt){ + foreach($evt as $key => $val){ + if(in_array($key,$this->csv_fields)){ + $evts[$id][$key] = "".strip_tags($val).""; + } + } + } + + $smarty = get_smarty(); + $smarty->assign("info",$evts); + $smarty->assign("count",count($evts)); + return($smarty->fetch(get_template_path('goto_import_file.tpl', TRUE))); + } + + + public function check() + { + $message = plugin::check(); + $this->check_fields(); + return($message); + } + + + private function check_fields() + { + foreach($this->events as $key => $event){ + $this->events[$key]['ERROR'] = ""; + if(empty($event['MAC']) || !tests::is_mac($event['MAC'])){ + $this->events[$key]['ERROR'] .= msgPool::invalid(_("MAC")).", "; + } + if(empty($event['HEADER']) || !isset($this->daemon_events['QUEUED'][$event['HEADER']])){ + $this->events[$key]['ERROR'] .= msgPool::invalid(_("Event")).", "; + } + $this->events[$key]['ERROR'] = trim($this->events[$key]['ERROR'],", "); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/class_gotomasses.inc b/trunk/gosa-plugins/goto/addons/goto/class_gotomasses.inc new file mode 100644 index 000000000..ad278eaba --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/class_gotomasses.inc @@ -0,0 +1,922 @@ +config= &$config; + $this->o_queue = new gosaSupportDaemon(TRUE,5); + $this->events = DaemonEvent::get_event_types( SYSTEM_EVENT); + + /* Get tags that will be used in queue searches */ + $this->event_tags = array("none"); + foreach($this->events['SCHEDULED'] as $evt){ + $this->event_tags[] = $evt['s_Queued_Action']; + } + + /* Load filter settings */ + if(!session::is_set("gotomasses_filter")){ + $gotomasses_filter = + array( + "range" => $this->range, + "sort_by" => $this->sort_by, + "sort_dir" => $this->sort_dir); + session::set("gotomasses_filter",$gotomasses_filter); + } + $gotomasses_filter = session::get("gotomasses_filter"); + foreach(array("range","sort_by","sort_dir") as $attr) { + $this->$attr = $gotomasses_filter[$attr]; + } + } + + + function execute() + { + $smarty = get_smarty(); + + /************ + * Handle posts + ************/ + + $s_entry = $s_action = ""; + $arr = array( + + "/^pause_/" => "pause", + "/^resume_/" => "resume", + "/^execute_process_/" => "execute_process", + "/^abort_process_/" => "abort_process", + + "/^prio_up_/" => "prio_up", + "/^prio_down_/" => "prio_down", + + "/^edit_task_/" => "edit", + "/^log_view_/" => "logview", + "/^remove_task_/" => "remove", + "/^new_task_/" => "new_task");; + + foreach($arr as $regex => $action){ + foreach($_POST as $name => $value){ + if(preg_match($regex,$name)){ + $s_action = $action; + $s_entry = preg_replace($regex,"",$name); + $s_entry = preg_replace("/_(x|y)$/","",$s_entry); + } + } + } + + /* Menu actions */ + if(isset($_POST['menu_action']) && !empty($_POST['menu_action'])){ + $s_action = $_POST['menu_action']; + } + + /* Edit posted from list link */ + if(isset($_GET['act']) && $_GET['act'] == "edit" && isset($_GET['id']) && isset($this->tasks[$_GET['id']])){ + $s_action = "edit"; + $s_entry = $_GET['id']; + } + + + /************ + * Import CSV file + ************/ + + if($s_action == "import_file" && $this->acl_is_writeable("")){ + $this->dialog = new goto_import_file($this->config,$this); + } + + if(isset($_POST['import_abort'])){ + $this->dialog = FALSE; + } + + + /************ + * Handle Priority modifications + ************/ + + if(preg_match("/^prio_/",$s_action) && $this->acl_is_writeable("")){ + switch($s_action){ + case 'prio_down' : $this->update_priority($s_entry,"down");break; + case 'prio_up' : $this->update_priority($s_entry,"up");break; + } + } + + /************ + * Handle pause/resume/execute modifications + ************/ + + if(preg_match("/^resume/",$s_action) || + preg_match("/^pause/",$s_action) || + preg_match("/^abort_process/",$s_action) || + preg_match("/^execute_process/",$s_action)){ + + if($this->acl_is_writeable("")){ + switch($s_action){ + case 'resume' : $this->resume_queue_entries (array($s_entry));break; + case 'pause' : $this->pause_queue_entries (array($s_entry));break; + case 'execute_process': $this->execute_queue_entries (array($s_entry));break; + case 'abort_process' : $this->abort_queue_entries (array($s_entry));break; + case 'resume_all' : $this->resume_queue_entries ($this->list_get_selected_items());break; + case 'pause_all' : $this->pause_queue_entries ($this->list_get_selected_items());break; + case 'execute_process_all': $this->execute_queue_entries ($this->list_get_selected_items());break; + case 'abort_process_all' : $this->abort_queue_entries ($this->list_get_selected_items());break; + + default : trigger_error("Undefined action setting used (".$s_action.")."); + } + } + if($this->o_queue->is_error()){ + msg_dialog::display(_("Error"), $this->o_queue->get_error(), ERROR_DIALOG); + } + } + + /************ + * ADD + ************/ + + if(preg_match("/^add_event_/",$s_action) && $this->acl_is_writeable("")){ + $type = preg_replace("/^add_event_/","",$s_action); + if(isset($this->events['BY_CLASS'][$type])){ + $e_data = $this->events['BY_CLASS'][$type]; + $this->dialog = new $e_data['CLASS_NAME']($this->config); + } + } + + /************ + * EDIT + ************/ + + if($s_action == "edit" && $this->acl_is_writeable("")){ + $id = $s_entry; + $type = FALSE; + if(isset($this->entries[$id])){ + $event = $this->entries[$s_entry]; + if($event['STATUS'] == "waiting" && isset($this->events['QUEUED'][$event['HEADERTAG']])){ + $evt_name = $this->events['QUEUED'][$event['HEADERTAG']]; + $type = $this->events['BY_CLASS'][$evt_name]; + $this->dialog = new $type['CLASS_NAME']($this->config,$event); + } + } + } + + + /************ + * LOG VIEW + ************/ + + if($s_action == "logview" && $this->acl_is_readable("")){ + $id = $s_entry; + $type = FALSE; + if(isset($this->entries[$id])){ + $event = $this->entries[$s_entry]; + $this->dialog = new gotoLogView($this->config,"",$event,$this); + } + } + + + /************ + * REMOVE + ************/ + + /* Remove multiple */ + if($s_action == "remove_multiple" || $s_action == "remove"){ + + if(!$this->acl_is_removeable()){ + msg_dialog::display(_("Permission"), msgPool::permDelete(), ERROR_DIALOG); + }else{ + + if($s_action == "remove"){ + $ids = array($s_entry); + }else{ + $ids = $this->list_get_selected_items(); + } + + $this->ids_to_remove = array(); + + if(count($ids)){ + $ret = $this->o_queue->ids_exist($ids); + $ret = $this->o_queue->get_entries_by_id($ret); + $tmp = ""; + + $deleteable_jobs = array(); + $not_deleteable_jobs = array(); + foreach($ret as $task){ + + /* Create a printable job name/description */ + if(isset($this->events['QUEUED'][$task['HEADERTAG']])){ + $evt_name = $this->events['QUEUED'][$task['HEADERTAG']]; + $evt = $this->events['BY_CLASS'][$evt_name]; + $j_name = $task['ID']." - ".$evt['s_Menu_Name']." ".$task['MACADDRESS']; + }else{ + $j_name = $task['ID']." - ".$task['HEADERTAG']." ".$task['MACADDRESS']; + } + + /* Only remove WAITING or ERROR entries */ + if(in_array($task['STATUS'],array("waiting","error","processed")) || + ($task['STATUS'] == "processing" && !preg_match("/install/",$task['HEADERTAG'])) ){ + $this->ids_to_remove[] = $task['ID']; + $deleteable_jobs[] = $j_name; + }else{ + $not_deleteable_jobs[] = $j_name; + } + } + if(count($not_deleteable_jobs)){ + msg_dialog::display(_("Remove"), + sprintf(_("The following jobs couldn't be deleted, they have to be aborted: %s"), + "
".msgPool::buildList($not_deleteable_jobs)),INFO_DIALOG); + } + + if(count($this->ids_to_remove)){ + $smarty->assign("multiple", TRUE); + $smarty->assign("info",msgPool::deleteInfo($deleteable_jobs)); + $this->current = $s_entry; + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + } + + /* Remove specified tasks */ + if(count($this->ids_to_remove) && isset($_POST['delete_multiple_confirm'])){ + + /* Reboot hosts with not yet startet installations and timestamps in the past + */ + if($this->acl_is_removeable("")){ + timezone::get_default_timezone(); + foreach($this->ids_to_remove as $id){ + $entry = $this->o_queue->get_entries_by_id(array($id)); + if(isset($entry['ANSWER1'])){ + $entry = $entry['ANSWER1']; + if( $entry['STATUS'] == "waiting" && + $entry['HEADERTAG'] == "trigger_action_reinstall"){ + $evt = new DaemonEvent_reinstall($this->config,$entry); + if($evt->get_timestamp(FALSE) < time()){ + $r_evt = new DaemonEvent_localboot($this->config); + $r_evt->add_targets(array($entry['MACADDRESS'])); + $r_evt->set_type(TRIGGERED_EVENT); + $this->o_queue->append($r_evt); + } + } + } + } + + $this->o_queue->remove_entries($this->ids_to_remove); + $this->save(); + } + } + + /* Remove aborted */ + if(isset($_POST['delete_cancel'])){ + $this->ids_to_remove = array();; + } + + + /************ + * EDIT + ************/ + + /* Close dialog */ + if(isset($_POST['save_event_dialog'])){ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + if(!$this->o_queue->append($this->dialog)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($this->o_queue->get_error()),ERROR_DIALOG); + }else{ + $this->dialog = FALSE; + $this->current = -1; + } + } + } + + + /* Close dialog */ + if(isset($_POST['abort_event_dialog'])){ + $this->dialog = FALSE; + $this->current = -1; + } + + /* Display dialogs if currently opened */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + $display = $this->dialog->execute(); + + if($this->dialog instanceOf goto_import_file && $this->dialog->import_successful){ + $this->dialog = FALSE; + }else{ + return($display); + } + } + + /************ + * Handle Divlist + ************/ + + $divlist = new MultiSelectWindow($this->config,"gotoMasses",array("gotomasses")); + $divlist->SetInformation(_("This menu allows you to remove and change the properties of GOsa tasks.")); + $divlist->SetSummary(_("List of queued jobs")); + $divlist->EnableCloseButton(FALSE); + $divlist->EnableSaveButton(FALSE); + $divlist->SetHeadpageMode(); + $s = ".|"._("Actions")."|\n"; + $s.= "..| "._("Create")."\n"; + + if($this->acl_is_writeable("")){ + foreach($this->events['SCHEDULED'] as $name => $event){ + $s.= "...|".$event['MenuImage']." ".$event['s_Menu_Name']."|add_event_".$name."\n"; + } + } + if($this->acl_is_removeable()){ + $s.= "..|---|\n"; + $s.= "..| "._("Import")."|import_file\n"; + $s.= "..| "._("Remove")."|remove_multiple\n"; + } + if(preg_match("/w/",$this->getacl(""))){ + $s.= "..|---|\n"; + $s.= "..|"._("Resume")." "._("Resume")."|resume_all\n"; + $s.= "..|"._("Pause")." "._("Pause")."|pause_all\n"; + $s.= "..|"._("Abort")." "._("Abort")."|abort_process_all\n"; + $s.= "..|"._("Execute")." "._("Execute")."|execute_process_all\n"; + } + + $divlist->SetDropDownHeaderMenu($s); + + if($this->sort_dir == "up"){ + $sort_img = "/\"; + }else{ + $sort_img = "\/"; + } + + if($this->sort_by == "TargetName"){ $sort_img_1 = $sort_img; } else { $sort_img_1 = "" ;} + if($this->sort_by == "TaskID"){ $sort_img_2 = $sort_img; } else { $sort_img_2 = "" ;} + if($this->sort_by == "Schedule"){ $sort_img_3 = $sort_img; } else { $sort_img_3 = "" ;} + if($this->sort_by == "Action"){ $sort_img_4 = $sort_img; } else { $sort_img_4 = "" ;} + + /* Create divlist */ + $divlist->SetListHeader(""); + + $plug = $_GET['plug']; + $chk = ""; + + /* set Page header */ + $divlist->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $divlist->AddHeader(array("string"=>""._("Target").$sort_img_1."")); + $divlist->AddHeader(array("string"=>""._("Task").$sort_img_2."", + "attach"=>"style='width:120px;'")); + $divlist->AddHeader(array("string"=>""._("Schedule").$sort_img_3."", + "attach"=>"style='width:140px;'")); + $divlist->AddHeader(array("string"=>""._("Status").$sort_img_4."", + "attach"=>"style='width:80px;'")); + $divlist->AddHeader(array("string"=>_("Action"), + "attach"=>"style='border-right:0px;width:140px;'")); + + + /* Reload the list of entries */ + $this->reload(); + + foreach($this->entries as $key => $task){ + + $prio_actions=""; + $action = ""; + + + /* If WAITING add priority action + */ + if(in_array($task['STATUS'],array("waiting")) && $this->acl_is_writeable("")){ + $prio_actions.= " "; + $prio_actions.= " "; + } + + /* If WAITING add pause action + */ + if(in_array($task['STATUS'],array("waiting")) && $this->acl_is_writeable("")){ + $prio_actions.= " "; + } + + /* If PAUSED add resume action + */ + if(in_array($task['STATUS'],array("paused")) && $this->acl_is_writeable("")){ + $prio_actions.= " "; + } + + /* If PAUSED or WAITING add execution action + */ + if(in_array($task['STATUS'],array("paused","waiting")) && $this->acl_is_writeable("")){ + $prio_actions.= " "; + } + + /* Add logview button, currently ever. + */ + if($this->acl_is_readable("")){ + $action .= " "; + } + + /* If PAUSED or WAITING add edit action + */ + if(in_array($task['STATUS'],array("waiting")) && $this->acl_is_writeable("")){ + $action.= ""; + } + + /* If PROCESSING add abort action + */ + if(in_array($task['STATUS'],array("processing")) && preg_match("/install/",$task['HEADERTAG']) && $this->acl_is_writeable("")){ + $action.= ""; + $action.= ""; + } + + /* If WAITING or ERROR add remove action + */ + if( $this->acl_is_removeable() && in_array($task['STATUS'],array("waiting","error","processed"))){ + $action.= ""; + } + if($this->acl_is_writeable("") && in_array($task['STATUS'],array("processing")) && !preg_match("/install/",$task['HEADERTAG'])){ + $action.= ""; + } + + /* Create entry display name and tooltip */ + $color = ""; + $display = $task['MACADDRESS']; + $tooltip = ""; + if(isset($task['PLAINNAME']) && !preg_match("/none/i",$task['PLAINNAME'])){ + $display = $task['PLAINNAME']; + $tooltip = " title='".$task['MACADDRESS']."' "; + } + $display2= $task['HEADERTAG']; + + /* Check if this event exists as Daemon class + * In this case, display a more accurate entry. + */ + if(isset($this->events['QUEUED'][$task['HEADERTAG']])){ + $evt_name = $this->events['QUEUED'][$task['HEADERTAG']]; + $event_type = $this->events['BY_CLASS'][$evt_name]; + $display2 = $event_type['s_Menu_Name']; + + if(strlen($display2) > 20){ + $display2 = substr($display2,0,18)."..."; + } + + if(isset($event_type['ListImage']) && !empty($event_type['ListImage'])){ + $display2 = $event_type['ListImage']." ".$display2; + } + } + + $status = $task['STATUS']; + + if($status == "waiting"){ + $status = " "._("Waiting"); + } + if($status == "error"){ + $status = " "._("Error"); + } + if($status == "processed"){ + $status = " "._("Processed"); + } + + /* Special handling for all entries that have + STATUS == "processing" && PROGRESS == NUMERIC + */ + if($status == "processing" && isset($task['PROGRESS'])){ + $percent = $task['PROGRESS']; + + /* Show activation? */ + if ($percent == "goto-activation"){ + $status = " "._("Locked"); + + /* Show hardware detect? */ + } elseif ($percent == "goto-hardware-detection") { + $status = " "._("Detection"); + + /* Real percent */ + } else { + if (preg_match('/install/', $task['HEADERTAG'])){ + $status = ""; + } else { + $status = preg_replace('/ /', ' ', _("in progress")); + } + } + } + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;".$color."'"); + $field1 = array("string" => $display, + "attach" => $tooltip."style='".$color."'"); + $field1a= array("string" => $display2, + "attach" => "style='".$color.";width:120px;'"); + if ($task['TIMESTAMP'] == "19700101000000"){ + $field2 = array("string" => _("immediately"),"attach" => "style='".$color.";width:140px;'"); + } else { + $field2 = array("string" => date("d.m.Y H:i:s",strtotime($task['TIMESTAMP'])),"attach" => "style='".$color.";width:140px;'"); + } + $field3 = array("string" => $status,"attach" => "style='".$color.";width:80px;'"); + $field4 = array("string" => $prio_actions.$action,"attach" => "style='".$color.";text-align:right;width:140px;border-right:0px;'"); + $divlist->AddElement(array($field0,$field1,$field1a,$field2,$field3,$field4)); + } + + $smarty = get_smarty(); + $smarty->assign("events",$this->events); + $smarty->assign("start",$this->start); + $smarty->assign("start_real", ($this->start + 1)); + $smarty->assign("ranges", array("10" => "10", + "20" => "20", + "25" => "25", + "50" => "50", + "100"=> "100", + "200"=> "200", + "9999" => "*")); + + $count = $this->o_queue->number_of_queued_entries($this->event_tags); + if(!$count) $count = $this->range; + $divlist->SetListFooter(range_selector($count, $this->start, $this->range,"range")); + $smarty->assign("range",$this->range); + $smarty->assign("div",$divlist->Draw()); + return($smarty->fetch (get_template_path('gotomasses.tpl', TRUE, dirname(__FILE__)))); + } + + + /*! \brief Move an entry up or down in the queue, by updating its execution timestamp + @param $id Integer The ID of the entry which should be updated. + @param $type String "up" / "down" + @return boolean TRUE in case of success else FALSE + */ + public function update_priority($id,$type = "up") + { + if($type == "up"){ + $tmp = $this->o_queue->get_queued_entries($this->event_tags,-1,-1,"timestamp DESC"); + }else{ + $tmp = $this->o_queue->get_queued_entries($this->event_tags,-1,-1,"timestamp ASC"); + } + $last = array(); + foreach($tmp as $entry){ + if($entry['ID'] == $id){ + if(count($last)){ + $time = strtotime($last['TIMESTAMP']); + if($type == "up"){ + $time ++; + }else{ + $time --; + } + $time_str = date("YmdHis",$time); + return($this->o_queue->update_entries(array($id),array("timestamp" => $time_str))); + }else{ + return(FALSE); + } + } + $last = $entry; + } + return(FALSE); + } + + + /*! \brief Resumes to status 'waiting'. + * @return Boolean TRUE in case of success, else FALSE. + */ + private function resume_queue_entries($ids) + { + if(!count($ids)){ + return; + } + + /* Entries are resumed by setting the status to + * 'waiting' + */ + $data = array("status" => "waiting"); + + /* Check if given ids are valid and check if the status + * allows resuming. + */ + $update_ids = array(); + foreach($this->o_queue->get_entries_by_id($ids) as $entry){ + if(isset($entry['STATUS']) && preg_match("/paused/",$entry['STATUS'])){ + $update_ids[] = $entry['ID']; + } + } + + /* Tell the daemon that we have entries to update. + */ + if(count($update_ids)){ + if(!$this->o_queue->update_entries($update_ids,$data)){ + msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entry: %s"),$id) , ERROR_DIALOG); + return(FALSE); + } + } + return(TRUE); + } + + + /*! \brief Force queue job to be done as far as possible. + * @return Boolean TRUE in case of success, else FALSE. + */ + private function execute_queue_entries($ids) + { + if(!count($ids)){ + return; + } + + /* Execution is forced by updating the status to + * waiting and setting the timestamp to current time. + */ + $data = array( "timestamp" => date("YmdHis",time()), + "status" => "waiting"); + + /* Only allow execution of paused or waiting entries + */ + $update_ids = array(); + foreach($this->o_queue->get_entries_by_id($ids) as $entry){ + if(in_array($entry['STATUS'],array("paused","waiting"))){ + $update_ids[] = $entry['ID']; + } + } + + /* Tell the daemon that we want to update some entries + */ + if(count($update_ids)){ + if(!$this->o_queue->update_entries($update_ids,$data)){ + msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entries.")) , ERROR_DIALOG); + return(FALSE); + } + } + return(TRUE); + } + + + /*! \brief Force queue job to be done as far as possible. + * @return Boolean TRUE in case of success, else FALSE. + */ + private function abort_queue_entries($ids) + { + if(!count($ids)){ + return; + } + + /* Entries are paused by setting the status to + * something different from 'waiting'. + * We simply use 'paused'. + */ + $data = array("status" => "paused"); + + /* Detect if the ids we got are valid and + * check if the status allows pausing. + */ + $update_ids = array(); + foreach($this->o_queue->get_entries_by_id($ids) as $entry){ + if(isset($entry['STATUS']) && preg_match("/processing/",$entry['STATUS'])){ + if(isset($entry['MACADDRESS'])){ + $update_ids[] = $entry['MACADDRESS']; + }else{ + trigger_error("No mac address found in event."); + } + } + } + + if(class_available("DaemonEvent_faireboot")){ + $tmp = new DaemonEvent_faireboot($this->config); + $tmp->add_targets($update_ids); + $tmp->set_type(TRIGGERED_EVENT); + $this->recently_removed = $update_ids; + + if(!$this->o_queue->append($tmp)){ + msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entry: %s"),$id) , ERROR_DIALOG); + return(FALSE); + } + }else{ + msg_dialog::display(_("Error"), + sprintf(_("Required class '%s' cannot be found: job not aborted!"), + "DaemonEvent_faireboot") , ERROR_DIALOG); + } + } + + + /*! \brief Pauses the specified queue entry from execution. + * @return Boolean TRUE in case of success, else FALSE. + */ + private function pause_queue_entries($ids) + { + if(!count($ids)){ + return; + } + + /* Entries are paused by setting the status to + * something different from 'waiting'. + * We simply use 'paused'. + */ + $data = array("status" => "paused"); + + /* Detect if the ids we got are valid and + * check if the status allows pausing. + */ + $update_ids = array(); + foreach($this->o_queue->get_entries_by_id($ids) as $entry){ + if(isset($entry['STATUS']) && preg_match("/waiting/",$entry['STATUS'])){ + $update_ids[] = $entry['ID']; + } + } + + /* Tell the daemon that we want to update some entries + */ + if(count($update_ids)){ + if(!$this->o_queue->update_entries($update_ids,$data)){ + msg_dialog::display(_("Error"), sprintf(_("Cannot update queue entry: %s"),$id) , ERROR_DIALOG); + return(FALSE); + } + } + return(TRUE); + } + + + /*! \brief Request list of queued jobs. + * @return Returns an array of all queued jobs. + */ + function reload() + { + + /* Sort map html-post-name => daemon-col-name + */ + $map = array( + "QueuePosition" => "id", + "Action" => "status", + "TaskID" => "headertag", + "TargetName" => "macaddress", + "Schedule" => "timestamp"); + + /* Create sort header + */ + if(!isset($map[$this->sort_by])){ + $sort = "id DESC"; + }else{ + $sort = $map[$this->sort_by]; + if($this->sort_dir == "up"){ + $sort.= " ASC"; + }else{ + $sort.= " DESC"; + } + } + + /* Get entries. */ + $start = $this->start; + $stop = $this->range; + $entries = $this->o_queue->get_queued_entries($this->event_tags,$start,$stop,$sort); + if ($this->o_queue->is_error()){ + msg_dialog::display(_("Error"), sprintf(_("Cannot load queue entries: %s"), "

".$this->o_queue->get_error()), ERROR_DIALOG); + } + + /* Assign entries by id. + */ + $this->entries = array(); + + foreach($entries as $entry){ + + /* Skip entries which will be removed within the next seconds */ + if(isset($entry['MACADDRESS']) && in_array($entry['MACADDRESS'],$this->recently_removed)){ + continue; + } + $this->entries[$entry['ID']]= $entry; + } + $this->recently_removed = array(); + } + + + /*! \brief Handle post jobs, like sorting. + */ + function save_object() + { + /* Check for sorting changes + */ + $sort_vals = array("Action","QueuePosition","TargetName","Schedule","TaskID"); + if(isset($_GET['sort']) && in_array($_GET['sort'],$sort_vals)){ + $sort = $_GET['sort']; + if($this->sort_by == $sort){ + if($this->sort_dir == "up"){ + $this->sort_dir = "down"; + }else{ + $this->sort_dir = "up"; + } + } + $this->sort_by = $sort; + } + + /* Range selection used? */ + if(isset($_POST['range']) && is_numeric($_POST['range'])){ + $this->range = $_POST['range']; + } + + /* Save filter settings */ + $gotomasses_filter = session::get("gotomasses_filter"); + foreach(array("range","sort_by","sort_dir") as $attr){ + $gotomasses_filter[$attr] = $this->$attr; + } + session::set("gotomasses_filter",$gotomasses_filter); + + /* Page changed. */ + if(isset($_GET['start'])){ + $start = $_GET['start']; + if(is_numeric($start) || $start == 0){ + $this->start = $start; + } + } + + /* Check start stop and reset if necessary */ + $count = $this->o_queue->number_of_queued_entries($this->event_tags); + if($this->start >= $count){ + $this->start = $count -1; + } + if($this->start < 0){ + $this->start = 0; + } + } + + + function save() + { + // We do not save anything here. + } + + + /*! \brief Return a list of all selected items. + @return Array Returns an array containing all selected item ids. + */ + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + + static function plInfo() + { + return (array( + "plShortName" => _("System deployment"), + "plDescription" => _("Provide a mechanism to automatically activate systems"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("addon"), + "plCategory" => array("gotomasses" => array("objectClass" => "none", "description" => _("System deployment"))), + "plProvidedAcls" => array("Comment" => _("Description")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/class_target_list.inc b/trunk/gosa-plugins/goto/addons/goto/class_target_list.inc new file mode 100644 index 000000000..5ae70c23b --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/class_target_list.inc @@ -0,0 +1,334 @@ +AddCheckBox */ + var $ogroups ; + var $servers ; + var $workstations ; + var $incoming ; + + + /* Subsearch checkbox */ + var $SubSearch ; + var $IPMatch ; + var $parent ; + var $ui ; + + + function target_list(&$config,$Targets_used) + { + MultiSelectWindow::MultiSelectWindow($config, "Targetselection", array("ogroup","server","incoming","workstation","gotomasses")); + + $this->Targets_used = $Targets_used; + + $this->SetInformation( _("Select the target objects for your scheduled action.")); + $this->SetTitle( _("Available targets")); + $this->SetSummary( _("Available targets")); + $this->SetHeadpageMode(FALSE); + + /* set Page header */ + $chk = ""; + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + + $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); + $this->AddHeader(array("string" => _("Object name"), "attach" => "style=''")); + + /* Text ,Value, Name, Is selected */ + $this->AddCheckBox("ogroups", _("Select to see object groups"), _("Show object groups"), true); + $this->AddCheckBox("servers", _("Select to see servers") , _("Show servers"), true); + $this->AddCheckBox("workstations", _("Select to see workstations"),_("Show workstations"), true); + $this->AddCheckBox("incoming", _("Select to see incoming objects") , _("Show new objects"), true); + + /* Add SubSearch checkbox */ + $this->AddCheckBox(SEPERATOR); + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + $this->AddCheckBox("IPMatch", _("Select to search for a specific IP range only"), _("Match IP range"), false); + + /* Name,Text,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Regular expression for matching group names"), "*" , true); + $this->AddRegex ("IP_start", _("IP range start"), "0.0.0.0" , true); + $this->AddRegex ("IP_end", _("IP range end"), "255.255.255.255" , true); + $this->EnableAplhabet(TRUE); + } + + + function GenHeader() + { + $options= ""; + + /* Get all departments within this subtree */ + $ui= get_userinfo(); + $first = ""; + $found = FALSE; + $base = $this->config->current['BASE']; + + /* Add base */ + $tmp = array(); + $tmp[] = array("dn"=>$this->config->current['BASE']); + $tmp= array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $this->module, $base, + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); + + $deps = array(); + foreach($tmp as $tm){ + $deps[$tm['dn']] = $tm['dn']; + } + + /* Load possible departments */ + $ui= get_userinfo(); + $tdeps= $ui->get_module_departments("ogroups"); + $ids = $this->config->idepartments; + $first = ""; + $found = FALSE; + foreach($ids as $dep => $name){ + if(isset($deps[$dep]) && in_array_ics($dep, $tdeps)){ + + /* Keep first base dn in mind, we could need this + * info if no valid base was found + */ + if(empty($first)) { + $first = $dep['dn']; + } + + $value = $ids[$dep]; + if ($this->selectedBase == $dep){ + $found = TRUE; + $options.= ""; + } else { + $options.= ""; + } + } + } + + /* The currently used base is not visible with your acl setup. + * Set base to first useable base. + */ + if(!$found){ + $this->selectedBase = $first; + } + + /* Get copy & paste icon */ + $acls = $ui->get_permissions($this->selectedBase,"ogroups/ogroup"); + $acl_all= $ui->has_complete_category_acls($this->selectedBase,"ogroups"); + + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(); + + /* Add department selector */ + $listhead .= _("Base")." ". + "  "; + $listhead .="
"; + + $this->SetListHeader($listhead); + } + + + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + $this->reload(); + $this->SetEntries($this->list); + return($this->Draw()); + } + + + function SetEntries($list) + { + /* Add Copy & Paste buttons if copy&paste is enabled + */ + // Defining Links + $editlink = "%s"; + + $ui = get_userinfo(); + + // Assigning ogroups + foreach($list as $key => $val){ + + if(in_array($val['cn'][0],$this->Targets_used) || + isset($val['macAddress'][0]) && in_array($val['macAddress'][0],$this->Targets_used)) continue; + + $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; + if(!isset($val['description'][0])){ + $desc = ""; + }else{ + $desc = " - [ ".$val['description'][0]." ]"; + } + if(!isset($val['ipHostNumber'][0])){ + $desc.= ""; + }else{ + $desc.= " - ".$val['ipHostNumber'][0].""; + } + + + $img ="Hmm"; + if(in_array("goServer",$val['objectClass'])){ + $img = ""._("Server").""; + }elseif(in_array("gotoWorkstation",$val['objectClass'])){ + $img = ""._("Workstation").""; + }elseif(in_array("gosaGroupOfNames",$val['objectClass'])){ + $img = ""._("Object group").""; + } + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field1 = array("string" => $img, + "attach" => "style='text- align:center;width: 20px;'"); + $field2 = array("string" => $val['cn'][0].$desc, + "attach" => "style='border-right:0px;' ".$title); + + $this->AddElement(array($field0,$field1,$field2)); + } + } + + + function save() + { + $ret = array(); + $items = $this->list_get_selected_items(); + foreach($items as $item){ + $ret[] = $this->list[$item]; + } + return($ret); + } + + + function save_object() + { + MultiSelectWindow::save_object(); + } + + + function reload() + { + /* Set base for all searches && initialise some vars */ + $this->list= array(); + $base = $this->selectedBase; + $filter = ""; + $Regex = $this->Regex; + $IP_start = $this->IP_start; + $IP_end = $this->IP_end; + + if($this->IPMatch){ + if(!tests::is_ip($IP_start)){ + msg_dialog::display(_("Error"), msgPool::invalid(_("IP range")), ERROR_DIALOG); + return; + } + if(!tests::is_ip($IP_end)){ + msg_dialog::display(_("Error"), msgPool::invalid(_("IP range")), ERROR_DIALOG); + return; + } + } + + + $chk = array( + "ogroups" => "(&(objectClass=gosaGroupOfNames)(|(gosaGroupObjects=*S*)(gosaGroupObjects=*W*)))" , + "servers" => "(objectClass=goServer)" , + "incoming" => "(objectClass=GOhard)" , + "workstations" => "(objectClass=gotoWorkstation)"); + + /* Create filter */ + foreach($chk as $chkBox => $FilterPart){ + if($this->$chkBox){ + $filter .= $FilterPart; + } + } + $filter= "(&(cn=".$Regex.")(|".$filter."))"; + + if($this->SubSearch){ + $res= get_list($filter, array("ogroups","workstations","servers"), $base, + array("cn","objectClass","gosaGroupObjects","ipHostNumber","description"), GL_SIZELIMIT | GL_SUBSEARCH); + }else{ + $res= get_list($filter, "ogroups", get_groups_ou().$base, + array("cn","objectClass","ipHostNumber","description"), GL_SIZELIMIT ); + $res= array_merge($res,get_list($filter, "workstation", get_ou('workstationRDN').$base, + array("cn","objectClass","ipHostNumber","description"), GL_SIZELIMIT )); + $res= array_merge($res,get_list($filter, "server", get_ou('serverRDN').$base, + array("cn","objectClass","ipHostNumber","description"), GL_SIZELIMIT )); + + $deps_a = array( + get_ou("workstationRDN"), + get_ou("incominou"), + get_ou("serverRDN"), + get_ou("ogroupRDN")); + + $res = get_sub_list($filter,array("server","incoming","workstation","ogroup"), + $deps_a,get_ou("systemRDN").$base,array("cn","objectClass","ipHostNumber","description"),GL_SIZELIMIT); + } + + $this->list= $res; + ksort ($this->list); + reset ($this->list); + $tmp=array(); + foreach($this->list as $tkey => $val ){ + + if($this->IPMatch){ + if(isset($val['ipHostNumber'][0])){ + if(tests::is_ip_range($IP_start,$val['ipHostNumber'][0]) && tests::is_ip_range($val['ipHostNumber'][0],$IP_end)){ + $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val; + } + } + }else{ + $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val; + } + } + ksort($tmp); + $this->list=array(); + foreach($tmp as $val){ + $this->list[]=$val; + } + reset ($this->list); + } + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_activate.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_activate.tpl new file mode 100644 index 000000000..d8db5666c --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_activate.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Time schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_faireboot.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_faireboot.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_faireboot.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_goto_reload.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_goto_reload.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_goto_reload.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_halt.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_halt.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_halt.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_installation_activation.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_installation_activation.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_installation_activation.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_localboot.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_localboot.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_localboot.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_lock.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_lock.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_lock.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_memcheck.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_memcheck.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_memcheck.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_notify.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_notify.tpl new file mode 100644 index 000000000..98ca474b4 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_notify.tpl @@ -0,0 +1,93 @@ + +{if $is_new} + + + + + + +
+ {t}Message settings{/t} + + + + + + + + + + + + + + + +
{t}Sender{/t}
{t}Subject{/t}
{t}Message{/t} :
+ +
+
+ {t}Schedule{/t} + + + + +
{$timestamp}

+ + + + + + + + +
+ {t}Target users{/t} +
+ +
+ {t}Target groups{/t} +
+ +
+ + +
+
+ +{else} + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reboot.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reboot.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reboot.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reinstall.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reinstall.tpl new file mode 100644 index 000000000..b61f37edf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reinstall.tpl @@ -0,0 +1,67 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Progress{/t}{$progress}
{t}Status{/t}{$status}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reload_ldap_config.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reload_ldap_config.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_reload_ldap_config.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_rescan.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_rescan.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_rescan.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_sysinfo.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_sysinfo.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_sysinfo.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_update.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_update.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_update.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_wakeup.tpl b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_wakeup.tpl new file mode 100644 index 000000000..02f6dacaf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/DaemonEvent_wakeup.tpl @@ -0,0 +1,63 @@ + +{if $is_new} + + + + + + +
+ + + + +
{t}Schedule{/t}

+ {$timestamp}
+
+ + + + +
+ {t}System list{/t} +
+ {$target_list} +
+
+ +{else} + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}ID{/t}{$data.ID}
{t}Status{/t}{$data.STATUS}
{t}Result{/t}{$data.RESULT}
{t}Target{/t}{$data.MACADDRESS}
{t}Timestamp{/t}{$timestamp}
+
+ +
+
+ +{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent.inc new file mode 100644 index 000000000..575626165 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent.inc @@ -0,0 +1,515 @@ + + \version 1.00 + \date 26.02.2008 + + This is the base class for all new daemon events. + It implements most of the required functionality. + */ +class DaemonEvent +{ + /* Menu Strings */ + protected $s_Menu_Name = "s_Menu_Name not set"; // Diplayed in the ActionsMenu->CreateNew + protected $s_Event_Name = "s_Event_Name not set"; // Will be displayed in the Management list. + protected $s_Menu_Image = "images/empty.png"; // Image displayed in Actions->New + protected $s_List_Image = ""; // Image displayed in event listing + + public $config; // GOsa configuration object + protected $data; // The event data, when edited + + protected $a_targets = array(); // The list of assigned Targets (When newly created) + protected $s_Schedule_Action = ""; // The deamon command name when newly created. (e.g. job_trigger_action_halt) + protected $s_Trigger_Action= ""; // The deamon command name when edited. (e.g. trigger_action_halt) + protected $s_Queued_Action= ""; // The deamon command name when edited. (e.g. trigger_action_halt) + protected $timestamp = 0; // Event execution time; + protected $id = -1; // The Table ID + protected $status = "unknown";// The current event status + protected $is_new = TRUE; // Is TRUE if this is a new event + + protected $mode = SCHEDULED_EVENT; // Default action is sheduled. + + /* Sub dialog hanlding */ + protected $target_divlist = NULL; // The divlist used by the target add dialog + protected $target_add_list_used = FALSE; // Indicates that the target add list was used. + protected $time_select_used = FALSE; // Indicates that we have used the timestamp select boxes. + protected $target_list_used = FALSE; // Target list was diaplayed? + protected $_target_list = array(); // Object Cache of those objects displayed in the target add dialog + protected $workstation_list = array(); // Used as cache in the target list. + protected $server_list = array(); // Used as cache in the target list. + + protected $visible_for = HIDDEN_EVENT; + + protected $attributes = array("timestamp"); + + function set_type($type) + { + $this->mode = $type; + } + + + function get_type() + { + return($this->mode); + } + + /*! \brief Class contructor. + @param Array GOsa configuration object. + @param Array Event data, only given when edited. + */ + public function __construct($config,$data = array()) + { + $this->data = $data; + $this->config = $config; + timezone::get_default_timezone(); + $this->timestamp = time(); + + /* Load values from given data */ + if(count($data)){ + $this->is_new = FALSE; + + $attrs = array("id" => "ID"); + foreach($attrs as $to => $from){ + $this->$to = $data[$from]; + } + if(isset($data['TIMESTAMP'])){ + $this->timestamp = $this->_event_to_timestamp($data['TIMESTAMP']); + } + } + } + + + /*! \brief Create the HTML output for the plugin. + @return String The generated HTML output. + */ + public function execute() + { + $this->time_select_used = FALSE; + $this->target_list_used = FALSE; + + $str = "

"._("This job has no template!")."

"; + $str.= "

"; + $str.= "
+ +
"; + return($str); + } + + /*! \brief Returns the plugin header, displayed in the template. + @return String HTML header part. + */ + public function get_header() + { + if($this->target_add_list_used){ + return(""); + } + $str = "

".sprintf(_("Create '%s' job"),$this->s_Event_Name)."

"; + return($str); + } + + + /*! \brief Returns the plugin footer (save cancel), displayed in the template. + @return String HTML footer part. + */ + public function get_footer() + { + if($this->target_add_list_used){ + return(""); + } + $str = "

"; + $str.= "
+   + +
"; + return($str); + } + + + /*! \brief Returns HTML representation of a timestamp using ", + "attach" => "style='width:20px; border-right:0px;'") + )); + } + $list_footer = ""; + return($divlist->DrawList().$list_footer); + } + + + /*! \brief Returns HTML content, displaying a dialog which allows to add new targets. + @return String HTML content. (EventTargetAddList) + */ + public function get_target_add_list() + { + $this->target_add_list_used = TRUE; + + if($this->target_divlist == NULL){ + $this->target_divlist = new EventTargetAddList($this->config,$this); + } + $this->target_divlist->execute(); + + $smarty = get_smarty(); + $smarty->assign("divlist",$this->target_divlist->Draw()); + return($smarty->fetch(get_template_path('target_list.tpl', TRUE, dirname(__FILE__)))); + } + + + /*! \brief Handles all posted HTML data, including target add,remove... + */ + public function save_object() + { + if(isset($_POST['open_target_list'])){ + $this->target_add_list_used =TRUE; + } + if($this->target_divlist != NULL){ + $this->target_divlist->save_object(); + } + if($this->target_add_list_used){ + if(isset($_POST['abort_target_dialog'])){ + $this->target_add_list_used =FALSE; + $this->target_divlist = NULL; + } + if(isset($_POST['save_target_dialog'])){ + $this->target_add_list_used =FALSE; + $this->add_targets($this->target_divlist->get_selected_targets()); + $this->target_divlist = NULL; + } + } + + if($this->time_select_used){ + $time_stamp_values_found = TRUE; + foreach(array("time_year","time_month","time_day","time_hour","time_minute","time_second") as $attr){ + $time_stamp_values_found &= isset($_POST[$attr]); + } + if($time_stamp_values_found){ + $this->timestamp = mktime( + $_POST['time_hour'], + $_POST['time_minute'], + $_POST['time_second'], + $_POST['time_month'], + $_POST['time_day'], + $_POST['time_year']); + } + } + + if($this->target_list_used){ + foreach($_POST as $name => $value){ + if(preg_match("/^del_target_/",$name)){ + $id = preg_replace("/^del_target_([0-9]*)_.*/","\\1",$name); + if(isset($this->a_targets[$id])){ + unset($this->a_targets[$id]); + } + break; + } + } + } + } + + + /*! \brief Converts a daemon timestamp into an unix timestamp. \ + e.g. 20080101125959 -> 1199188799 + @param A daemon timestamp YYYYddmmHHiiss + @return Integer A unix timestamp. + */ + public function _event_to_timestamp($str) + { + return(strtotime($str)); + } + + + /*! \brief Converts a unix timestamp in to a gosa-si timestamp. \ + e.g. 1199188799 -> 20080101125959 + @param A unix timestamp (e.g. 1199188799) + @return Integer A daemon timestamp (e.g. 20080101125959). + */ + public function _timestamp_to_event($stamp) + { + return(date("YmdHis",$stamp)); + } + + + /*! \brief Returns event information, like menu strings, images ... + @return Array Event informations. + */ + public function get_event_info() + { + $data =array(); + $data['CLASS_NAME'] = get_class($this); + $data['s_Menu_Name'] = $this->s_Menu_Name; + $data['s_Event_Name'] = $this->s_Event_Name; + foreach(array("s_Queued_Action","s_Schedule_Action","s_Trigger_Action") as $attr){ + if(!empty($this->$attr)){ + $data[$attr] = $this->$attr; + } + } + $data['MenuImage'] = "".$this->s_Menu_Name.""; + $data['ListImage'] = "".$this->s_Event_Name.""; + return($data); + } + + + /*! \brief Check if we have opened the target add dialog. + @return Boolean TRUE if we have opened the target add dialog else FALSE. + */ + protected function is_target_list_open() + { + return($this->target_add_list_used); + } + + + /*! \brief Returns a complete list of all available events. + @return Array Containing $this->get_event_info() for all available events. + */ + static function get_event_types($type) + { + global $class_mapping,$config; + $list = array(); + $list['BY_CLASS'] = array(); + $list['TRIGGERED'] = array(); + $list['SCHEDULED'] = array(); + $list['QUEUED'] = array(); + + foreach($class_mapping as $name => $path){ + if(preg_match("/^DaemonEvent_/",$name)){ + $tmp = new $name($config); + if($tmp->visible_for & $type){ + $evt = $tmp->get_event_info(); + $list['BY_CLASS'][$name] = $evt; + if(isset($evt['s_Trigger_Action'])){ + $list['TRIGGERED'][$name] = $evt; + $list['QUEUED'][$evt['s_Trigger_Action']] = $name; + } + if(isset($evt['s_Schedule_Action'])){ + $list['SCHEDULED'][$name] = $evt; + $list['QUEUED'][$evt['s_Schedule_Action']] = $name; + } + if(isset($evt['s_Queued_Action'])){ + $list['QUEUED'][$evt['s_Queued_Action']] = $name; + } + } + } + } + return($list); + } + + + /*! \brief Returns TRUE if this event is new. (Not edited) + @return Boolean TRUE if new, else FALSE. + */ + public function is_new() + { + return($this->is_new); + } + + + /*! \brief Returns the event tag to schedule a new action + @param Returns the event e.g. 'job_trigger_action_wake' + */ + public function get_schedule_action() + { + return($this->s_Schedule_Action); + } + + + /*! \brief Returns the event tag to schedule a new action + @param Returns the event e.g. 'trigger_action_wake' + */ + public function get_trigger_action() + { + return($this->s_Trigger_Action); + } + + + /*! brief Returns an array containig all attributes \ + That should be written. + @return Array e.g. 'status' => 'bla blub' + */ + public function save() + { + $ret = array(); + foreach($this->attributes as $attr){ + $ret[$attr] = $this->$attr; + } + if($this->mode == SCHEDULED_EVENT){ + $ret['timestamp'] = $this->_timestamp_to_event($this->timestamp); + }elseif(isset($ret['timestamp'])){ + unset($ret['timestamp']); + } + return($ret); + } + + + /*! \brief Returns the event targets + @return Array All selected targets. + */ + public function get_targets() + { + return($this->a_targets); + } + + + /*! \brief Returns the event timestamp in GOsa daemon format. + @return Returns the event timestamp (20081231120000) + */ + public function get_timestamp($si_type = TRUE) + { + if($si_type){ + return($this->_timestamp_to_event($this->timestamp)); + }else{ + return($this->timestamp); + } + } + + + /*! \brief Returns the event ID + @return Returns the event ID + */ + public function get_id() + { + if($this->is_new){ + return(-1); + }else{ + return($this->data['ID']); + } + } + + + /*! \brief Add a target MAC address + @param Array A List of all target that should be added. + */ + public function set_timestamp($stamp) + { + $this->timestamp = $stamp; + } + + + /*! \brief Add a target MAC address + @param Array A List of all target that should be added. + */ + public function add_targets($targets) + { + foreach($targets as $target){ + $this->a_targets[] = $target; + } + } + + public function check() + { + return(array()); + } + + + /*! \brief Update a class variable from outside + */ + public function set_value($name,$value) + { + $name = strtolower($name); + if(isset($this->$name) && in_array($name,$this->attributes)){ + $this->$name = $value; + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_activate.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_activate.inc new file mode 100644 index 000000000..5e7224d04 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_activate.inc @@ -0,0 +1,67 @@ +s_Menu_Name = _("Unlock"); + $this->s_Event_Name = _("Unlock"); + $this->s_Schedule_Action = "job_trigger_action_activate"; + $this->s_Trigger_Action= "gosa_trigger_action_activate"; + $this->s_Queued_Action= "trigger_action_activate"; + $this->s_Menu_Image = "images/lists/unlocked.png"; + $this->s_List_Image = "images/lists/unlocked.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_activate.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_activate_new.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_activate_new.inc new file mode 100644 index 000000000..ddf10555e --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_activate_new.inc @@ -0,0 +1,79 @@ +s_Menu_Name = _("Activate new"); + $this->s_Event_Name = _("Activate new"); + $this->s_Schedule_Action = "job_trigger_activate_new"; + $this->s_Trigger_Action = "gosa_trigger_activate_new"; + $this->s_Queued_Action = "trigger_activate_new"; + $this->s_Menu_Image = "images/lists/unlocked.png"; + $this->s_List_Image = "images/lists/unlocked.png"; + } + + public function execute() + { + DaemonEvent::execute(); + return(""); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_activate_new.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_faireboot.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_faireboot.inc new file mode 100644 index 000000000..e529c910d --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_faireboot.inc @@ -0,0 +1,66 @@ +s_Menu_Name = _("Abort installation"); + $this->s_Event_Name = _("Abort installation"); + $this->s_Schedule_Action = "job_trigger_action_faireboot"; + $this->s_Trigger_Action= "gosa_trigger_action_faireboot"; + $this->s_Queued_Action= "trigger_action_faireboot"; + $this->s_Menu_Image = "images/small_error.png"; + $this->s_List_Image = "images/small_error.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_faireboot.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_goto_reload.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_goto_reload.inc new file mode 100644 index 000000000..110b023f7 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_goto_reload.inc @@ -0,0 +1,75 @@ +mac = $macs; + } + + public function __construct($config,$data = array()) + { + DaemonEvent::__construct($config,$data); + $this->s_Menu_Name = _("GOto reload"); + $this->s_Event_Name = _("Reload GOto settings"); + $this->s_Schedule_Action= "job_trigger_goto_settings_reload"; + $this->s_Trigger_Action = "gosa_trigger_goto_settings_reload"; + $this->s_Queued_Action = "trigger_action_goto_settings_reload"; + $this->s_Menu_Image = "images/lists/reload.png"; + $this->s_List_Image = "images/lists/reload.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_goto_reload.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_halt.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_halt.inc new file mode 100644 index 000000000..d7b572d69 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_halt.inc @@ -0,0 +1,69 @@ +s_Menu_Name = _("Switch off"); + $this->s_Event_Name = _("Switch off"); + $this->s_Schedule_Action = "job_trigger_action_halt"; + $this->s_Trigger_Action= "gosa_trigger_action_halt"; + $this->s_Queued_Action= "trigger_action_halt"; + $this->s_Menu_Image = "images/lists/off.png"; + $this->s_List_Image = "images/lists/off.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_halt.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_installation_activation.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_installation_activation.inc new file mode 100644 index 000000000..20b14e4a4 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_installation_activation.inc @@ -0,0 +1,66 @@ +s_Menu_Name = _("Installation activation"); + $this->s_Event_Name = _("Installation activation"); + $this->s_Schedule_Action = "job_set_activated_for_installation"; + $this->s_Trigger_Action = "gosa_set_activated_for_installation"; + $this->s_Queued_Action = "set_activated_for_installation"; + $this->s_Menu_Image = "images/true.png"; + $this->s_List_Image = "images/true.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_installation_activation.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_localboot.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_localboot.inc new file mode 100644 index 000000000..3906c2df5 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_localboot.inc @@ -0,0 +1,66 @@ +s_Menu_Name = _("Force localboot"); + $this->s_Event_Name = _("Force localboot"); + $this->s_Schedule_Action = "job_trigger_action_localboot"; + $this->s_Trigger_Action= "gosa_trigger_action_localboot"; + $this->s_Queued_Action= "trigger_action_localboot"; + $this->s_Menu_Image = "plugins/goto/images/localboot.png"; + $this->s_List_Image = "plugins/goto/images/localboot.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_localboot.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_lock.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_lock.inc new file mode 100644 index 000000000..8074378c6 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_lock.inc @@ -0,0 +1,67 @@ +s_Menu_Name = _("Lock"); + $this->s_Event_Name = _("Lock"); + $this->s_Schedule_Action = "job_trigger_action_lock"; + $this->s_Trigger_Action= "gosa_trigger_action_lock"; + $this->s_Queued_Action= "trigger_action_lock"; + $this->s_Menu_Image = "images/lists/locked.png"; + $this->s_List_Image = "images/lists/locked.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_lock.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_memcheck.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_memcheck.inc new file mode 100644 index 000000000..ad160addf --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_memcheck.inc @@ -0,0 +1,66 @@ +s_Menu_Name = _("Memory test"); + $this->s_Event_Name = _("Memory test"); + $this->s_Schedule_Action= "job_trigger_action_memcheck"; + $this->s_Trigger_Action = "gosa_trigger_action_memcheck"; + $this->s_Queued_Action = "trigger_action_memcheck"; + $this->s_Menu_Image = "plugins/goto/images/memcheck.png"; + $this->s_List_Image = "plugins/goto/images/memcheck.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_memcheck.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_notify.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_notify.inc new file mode 100644 index 000000000..13bf90dd8 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_notify.inc @@ -0,0 +1,211 @@ +from = $ui->cn; + + $this->message = base64_decode($this->message); + $this->subject = base64_decode($this->subject); + + $this->s_Menu_Name = _("Send message"); + $this->s_Event_Name = _("Send message"); + + $this->s_Schedule_Action = "job_send_user_msg"; + $this->s_Trigger_Action= "gosa_send_user_msg"; + $this->s_Queued_Action= "trigger_action_notify"; + $this->s_Menu_Image = "plugins/goto/images/notify.png"; + $this->s_List_Image = "plugins/goto/images/notify.png"; + $this->a_targets = array("GOSA"); // Required to get the event send. Maybe this is a wrong value. + } + + public function execute() + { + DaemonEvent::execute(); + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + + $display = $this->get_header(); + $tmp = $this->data; + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + + $smarty->assign("user" , $this->user); + $smarty->assign("group" , $this->group); + + $smarty->assign("add_str", msgPool::addButton(_("Target"))); + $smarty->assign("del_str", msgPool::delButton(_("Target"))); + + $smarty->assign("from", xmlentities($this->from)); + $smarty->assign("subject", xmlentities($this->subject)); + $smarty->assign("message", xmlentities($this->message)); + + $display.= $smarty->fetch(get_template_path('DaemonEvent_notify.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + + public function check() + { + $msgs = DaemonEvent::check(); + if(empty($this->subject)){ + $msgs[] = msgPool::required(_("Subject")); + } + if(empty($this->message)){ + $msgs[] = msgPool::required(_("Message")); + } + if(empty($this->from)){ + $msgs[] = msgPool::required(_("From")); + } + if(!count($this->group) && !count($this->user)){ + $msgs[] = msgPool::required(_("Target")); + } + return($msgs); + } + + + public function save_object() + { + DaemonEvent::save_object(); + + if(isset($_POST['del_any_target']) && isset($_POST['group'])){ + foreach($_POST['group'] as $id){ + if(isset($this->group[$id])){ + unset($this->group[$id]); + } + } + } + if(isset($_POST['del_any_target']) && isset($_POST['user'])){ + foreach($_POST['user'] as $id){ + if(isset($this->user[$id])){ + unset($this->user[$id]); + } + } + } + + if(isset($_POST['subject'])){ + $this->subject = get_post('subject'); + } + if(isset($_POST['message'])){ + $this->message = get_post('message'); + } + if(isset($_POST['from'])){ + $this->from = get_post('from'); + } + } + + public function add_users($targets) + { + $add = $targets; + if(!is_array($add)){ + $add = array($add); + } + foreach($add as $target){ + if(!in_array($target,$this->user)){ + $this->user[] = $target; + } + } + } + + + public function add_groups($targets) + { + $add = $targets; + if(!is_array($add)){ + $add = array($add); + } + foreach($add as $target){ + if(!in_array($target,$this->group)){ + $this->group[] = $target; + } + } + } + + + /*! \brief Returns HTML content, displaying a dialog which allows to add new targets. + @return String HTML content. (EventTargetAddList) + */ + public function get_target_add_list() + { + $this->target_add_list_used = TRUE; + + if($this->target_divlist == NULL){ + $this->target_divlist = new EventTargetAddUserList($this->config,$this); + } + $this->target_divlist->execute(); + + $smarty = get_smarty(); + $smarty->assign("divlist",$this->target_divlist->Draw()); + return($smarty->fetch(get_template_path('target_list.tpl', TRUE, dirname(__FILE__)))); + } + + + /*! \brief Add a target MAC address + @param Array A List of all target that should be added. + */ + public function add_targets($targets) + { + if(isset($targets['USERS'])){ + $this->add_users($targets['USERS']); + } + if(isset($targets['GROUPS'])){ + $this->add_groups($targets['GROUPS']); + } + } + + + public function save() + { + $ret = DaemonEvent::save(); + $ret['delivery_time'] = $ret['timestamp']; + $ret['user'] = array_values( $ret['user']); + $ret['group'] = array_values( $ret['group']); + $ret['subject'] = base64_encode($ret['subject']); + $ret['message'] = base64_encode($ret['message']); + return($ret); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reboot.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reboot.inc new file mode 100644 index 000000000..b11bd3b4e --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reboot.inc @@ -0,0 +1,67 @@ +s_Menu_Name = _("Reboot"); + $this->s_Event_Name = _("Reboot"); + $this->s_Schedule_Action = "job_trigger_action_reboot"; + $this->s_Trigger_Action= "gosa_trigger_action_reboot"; + $this->s_Queued_Action= "trigger_action_reboot"; + $this->s_Menu_Image = "images/lists/reload.png"; + $this->s_List_Image = "images/lists/reload.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_reboot.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc new file mode 100644 index 000000000..f882842f6 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc @@ -0,0 +1,51 @@ +s_Menu_Name = _("Reload fai release db"); + $this->s_Event_Name = _("Reload fai release db"); + $this->s_Schedule_Action= "gosa_recreate_fai_release_db"; + $this->s_Trigger_Action = "gosa_recreate_fai_release_db"; + $this->s_Queued_Action = "recreate_fai_release_db"; + $this->s_Menu_Image = "images/edit.png"; + $this->s_List_Image = "images/edit.png"; + } + + public function execute() + { + DaemonEvent::execute(); + return("Cannot be displayed"); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc new file mode 100644 index 000000000..647d9af0a --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc @@ -0,0 +1,51 @@ +s_Menu_Name = _("Reload fai server db"); + $this->s_Event_Name = _("Reload fai server db"); + $this->s_Schedule_Action= "gosa_recreate_fai_server_db"; + $this->s_Trigger_Action = "gosa_recreate_fai_server_db"; + $this->s_Queued_Action = "recreate_fai_release_db"; + $this->s_Menu_Image = "images/edit.png"; + $this->s_List_Image = "images/edit.png"; + } + + public function execute() + { + DaemonEvent::execute(); + return("Cannot be displayed"); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reinstall.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reinstall.inc new file mode 100644 index 000000000..f87bb8e10 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reinstall.inc @@ -0,0 +1,76 @@ +s_Menu_Name = _("Reinstall"); + $this->s_Event_Name = _("Reinstall"); + $this->s_Schedule_Action = "job_trigger_action_reinstall"; + $this->s_Trigger_Action= "job_trigger_action_reinstall"; + $this->s_Queued_Action= "trigger_action_reinstall"; + $this->s_Menu_Image = "plugins/goto/images/reinstall.png"; + $this->s_List_Image = "plugins/goto/images/reinstall.png"; + + if(!$this->is_new()){ + if(isset($data['PROGRESS'])){ + $this->progress = $data['PROGRESS']; + } + if(isset($data['STATUS'])){ + $this->status = $data['STATUS']; + } + } + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("status" , $this->status); + $smarty->assign("progress" , $this->progress); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_reinstall.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reload_ldap_config.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reload_ldap_config.inc new file mode 100644 index 000000000..1a555b213 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_reload_ldap_config.inc @@ -0,0 +1,66 @@ +s_Menu_Name = _("Reload LDAP config"); + $this->s_Event_Name = _("Reload LDAP config"); + $this->s_Schedule_Action= "job_trigger_reload_ldap_config"; + $this->s_Trigger_Action = "gosa_trigger_reload_ldap_config"; + $this->s_Queued_Action = "reload_ldap_config"; + $this->s_Menu_Image = "images/lists/edit.png"; + $this->s_List_Image = "images/lists/edit.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_wakeup.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_rescan.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_rescan.inc new file mode 100644 index 000000000..6d4686e35 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_rescan.inc @@ -0,0 +1,66 @@ +s_Menu_Name = _("Rescan hardware"); + $this->s_Event_Name = _("Rescan hardware"); + $this->s_Schedule_Action= "job_detect_hardware"; + $this->s_Trigger_Action = "gosa_detect_hardware"; + $this->s_Queued_Action = "detect_hardware"; + $this->s_Menu_Image = "plugins/goto/images/rescan.png"; + $this->s_List_Image = "plugins/goto/images/rescan.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_rescan.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_sysinfo.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_sysinfo.inc new file mode 100644 index 000000000..05ff34c18 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_sysinfo.inc @@ -0,0 +1,66 @@ +s_Menu_Name = _("System analysis"); + $this->s_Event_Name = _("System analysis"); + $this->s_Schedule_Action= "job_trigger_action_sysinfo"; + $this->s_Trigger_Action = "gosa_trigger_action_sysinfo"; + $this->s_Queued_Action = "trigger_action_sysinfo"; + $this->s_Menu_Image = "plugins/goto/images/sysinfo.png"; + $this->s_List_Image = "plugins/goto/images/sysinfo.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_sysinfo.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_update.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_update.inc new file mode 100644 index 000000000..3571fc328 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_update.inc @@ -0,0 +1,67 @@ +s_Menu_Name = _("Software update"); + $this->s_Event_Name = _("Software update"); + $this->s_Schedule_Action = "job_trigger_action_update"; + $this->s_Trigger_Action= "job_trigger_action_update"; + $this->s_Queued_Action= "trigger_action_update"; + $this->s_Menu_Image = "plugins/goto/images/update.png"; + $this->s_List_Image = "plugins/goto/images/update.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_update.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_wakeup.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_wakeup.inc new file mode 100644 index 000000000..075482a92 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_DaemonEvent_wakeup.inc @@ -0,0 +1,67 @@ +s_Menu_Name = _("Wake up"); + $this->s_Event_Name = _("Wake system"); + $this->s_Schedule_Action= "job_trigger_action_wake"; + $this->s_Trigger_Action = "gosa_trigger_action_wake"; + $this->s_Queued_Action = "trigger_action_wake"; + $this->s_Menu_Image = "images/lists/on.png"; + $this->s_List_Image = "images/lists/on.png"; + } + + public function execute() + { + DaemonEvent::execute(); + + $display = $this->get_header(); + + $tmp = $this->data; + + /* Check if target add dialog is open */ + if($this->is_target_list_open() && $this->is_new){ + return($this->get_target_add_list()); + } + + $smarty = get_smarty(); + $smarty->assign("data" , $this->data); + $smarty->assign("target_list" , $this->get_target_list()); + $smarty->assign("is_new" , $this->is_new); + $smarty->assign("timestamp" , $this->get_time_select()); + $display.= $smarty->fetch(get_template_path('DaemonEvent_wakeup.tpl', TRUE, dirname(__FILE__))); + $display.= $this->get_footer(); + return($display); + } + + public function save_object() + { + DaemonEvent::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_EventTargetAddList.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_EventTargetAddList.inc new file mode 100644 index 000000000..fbc32992a --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_EventTargetAddList.inc @@ -0,0 +1,288 @@ +parent = $parent; + $this->ui = get_userinfo(); + + + $this->target_divlist = new MultiSelectWindow($this->config,"EventAddTargedtList","gotomasses"); + $this->SetSummary(_("Targets")); + $this->EnableCloseButton(FALSE); + $this->EnableSaveButton(FALSE); + + $this->SetInformation(_("This dialog shows all available targets for the event. Check the targets you want to add and use the 'Apply' button.")); + + /* Toggle all selected / deselected */ + $chk = ""; + + $this->EnableAplhabet(TRUE); + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>_("System / Department"))); + + //$name,$string,$value,$conn,$image="images/lists/search.png") + $this->AddRegex("regex" ,"regex" ,"*" , TRUE); + $this->AddRegex("ipfrom","ipfrom" ,"0.0.0.0" , FALSE); + $this->AddRegex("ipto" ,"ipto" ,"255.255.255.255" , FALSE); + + $this->AddCheckBox("display_server","1" ,_("Display server"),TRUE); + $this->AddCheckBox("display_workstation","1",_("Display workstation"),TRUE); + $this->AddCheckBox("display_ogroup","1" ,_("Display object groups"),TRUE); + $this->AddCheckBox("filter_iprange","1" ,_("Filter by IP range"),FALSE); + + + + /* Create a list of servers + */ + $tmp = get_sub_list("(&(macAddress=*)(objectClass=goServer))", + "server",get_ou("serverRDN"),$config->current['BASE'], + array("cn","objectClass","description","ipHostNumber","macAddress"),GL_SUBSEARCH); + foreach($tmp as $server){ + $this->server_list[$server['dn']] = $server; + } + + /* Create a list of workstations + */ + $tmp = get_sub_list("(&(macAddress=*)(objectClass=gotoWorkstation))", + "server",get_ou("workstationRDN"),$config->current['BASE'], + array("cn","objectClass","description","ipHostNumber","macAddress"),GL_SUBSEARCH); + foreach($tmp as $server){ + $this->workstation_list[$server['dn']] = $server; + } + + } + + + function execute() + { + $this->ClearElementsList(); + $this->AddDepartments($this->selectedBase,2,1); + $this->setEntries(); + $this->GenHeader(); + } + + + function GenHeader() + { + $modules = array("server","workstation"); + + /* Add base */ + $tmp = array(); + $base = $this->config->current['BASE']; + $tmp[] = array("dn"=>$this->config->current['BASE']); + $tmp= array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $modules, $base, + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); + + $deps = array(); + foreach($tmp as $tm){ + $deps[$tm['dn']] = $tm['dn']; + } + + $department = $departments = array(); + $ui= get_userinfo(); + $d = $ui->get_module_departments($modules); + foreach($d as $department){ + $departments[$department] = $department; + } + + /* Load possible departments */ + $ids = $this->config->idepartments; + $first = ""; + $found = FALSE; + $options = array(); + foreach($ids as $dep => $name){ + if(isset($deps[$dep]) && in_array_ics($dep, $departments)){ + + /* Keep first base dn in mind, we could need this + * info if no valid base was found + */ + if(empty($first)) { + $first = $dep['dn']; + } + + $value = $ids[$dep]; + if ($this->selectedBase == $dep){ + $found = TRUE; + $options.= ""; + } else { + $options.= ""; + } + } + } + + $listhead = $this->get_default_header(); + + /* Add base selection */ + $listhead .= _("Base")."  ". + "  "; + + $this->SetListHeader($listhead); + + } + + + function get_selected_targets() + { + $a_targets = array(); + foreach($this->list_get_selected_items() as $id){ + if(in_array("gosaGroupOfNames",$this->_target_list[$id]['objectClass'])){ + foreach($this->_target_list[$id]['member'] as $mem_dn){ + if(isset($this->workstation_list[$mem_dn])){ + $a_targets[] = $this->workstation_list[$mem_dn]['macAddress'][0]; + } + if(isset($this->server_list[$mem_dn])){ + $a_targets[] = $this->server_list[$mem_dn]['macAddress'][0]; + } + } + }else{ + if(isset($this->_target_list[$id]['macAddress'][0])){ + $a_targets[] = $this->_target_list[$id]['macAddress'][0]; + } + } + } + return($a_targets); + } + + + function setEntries() + { + $_target_list = array(); + if($this->display_server){ + $_target_list = array_merge($_target_list, + get_list("(&(cn=".$this->regex.")(objectClass=goServer))", + "server",get_ou("serverRDN").$this->selectedBase, + array("cn","objectClass","description","ipHostNumber","macAddress"),GL_NONE)); + } + if($this->display_workstation){ + $_target_list = array_merge($_target_list, + get_list("(&(cn=".$this->regex.")(objectClass=gotoWorkstation))", + "workstation",get_ou("workstationRDN").$this->selectedBase, + array("cn","objectClass","description","ipHostNumber","macAddress"),GL_NONE)); + } + if($this->display_ogroup){ + $_target_list = array_merge($_target_list, + get_list("(&(cn=".$this->regex.")(member=*)(objectClass=gosaGroupOfNames))", + "ogroups",get_ou("ogroupRDN").$this->selectedBase, + array("cn","objectClass","description","member"),GL_NONE)); + } + $this->_target_list = $_target_list; + + $tmp = array(); + foreach($this->_target_list as $key => $object){ + $tmp[$key] = $object['cn'][0]; + } + natcasesort($tmp); + + foreach($tmp as $key => $obj){ + + $obj = $this->_target_list[$key]; + $name = $obj['cn'][0]; + if(isset($obj['description'])){ + $name .= " [".$obj['description'][0]."]"; + } + if(isset($obj['macAddress'])){ + $name .= " - ".$obj['macAddress'][0].""; + } + if(isset($obj['ipHostNumber'])){ + $name .= " - ".$obj['ipHostNumber'][0].""; + } + + $img =""; + if(in_array("goServer",$obj['objectClass'])){ + $img = 'S'; + + if($this->filter_iprange){ + if(!isset($obj['ipHostNumber']) || !tests::is_in_ip_range($this->ipfrom,$this->ipto, $obj['ipHostNumber'][0])) { + continue; + } + } + if(!isset($this->server_list[$obj['dn']])){ + continue; + } + }elseif(in_array("gotoWorkstation",$obj['objectClass'])){ + $img = 'W'; + if($this->filter_iprange){ + if(!isset($obj['ipHostNumber']) || !tests::is_in_ip_range($this->ipfrom,$this->ipto,$obj['ipHostNumber'][0])) { + continue; + } + } + if(!isset($this->workstation_list[$obj['dn']])){ + continue; + } + }elseif(in_array("gosaGroupOfNames",$obj['objectClass'])){ + $img = 'O'; + } + + $field1 = array("string" => "", + "attach" => "style='width:20px;'"); + $field2 = array("string" => $img, + "attach" => "style='width:20px;'"); + $field3 = array("string" => $name , "attach" => "title='".$obj['dn']."'"); + $this->AddElement(array($field1,$field2,$field3)); + } + } + + + /*! \brief Returns a set of elements selected in a MultiSelectWindow + @return Array[integer]=integer + */ + protected function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/class_EventTargetAddUsersList.inc b/trunk/gosa-plugins/goto/addons/goto/events/class_EventTargetAddUsersList.inc new file mode 100644 index 000000000..714b6edde --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/class_EventTargetAddUsersList.inc @@ -0,0 +1,220 @@ +parent = $parent; + $this->ui = get_userinfo(); + + + $this->target_divlist = new MultiSelectWindow($this->config,"EventAddTargetUserList","gotomasses"); + $this->SetSummary(_("Targets")); + $this->EnableCloseButton(FALSE); + $this->EnableSaveButton(FALSE); + + $this->SetInformation(_("This dialog shows all available targets for your event, check the targets you want to add and use the 'Use' button to accept.")); + + /* Toggle all selected / deselected */ + $chk = ""; + + $this->EnableAplhabet(TRUE); + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>_("System / Department"))); + + //$name,$string,$value,$conn,$image="images/lists/search.png") + $this->AddRegex("regex" ,"regex" ,"*" , TRUE); + + $this->AddCheckBox("display_users" ,"1", _("Display users"),TRUE); + $this->AddCheckBox("display_groups" ,"1", _("Display groups"),TRUE); + } + + + function execute() + { + $this->ClearElementsList(); + $this->AddDepartments($this->selectedBase,2,1); + $this->setEntries(); + $this->GenHeader(); + } + + + function GenHeader() + { + $modules = array("users","groups"); + + /* Add base */ + $tmp = array(); + $base = $this->config->current['BASE']; + $tmp[] = array("dn"=>$this->config->current['BASE']); + $tmp= array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $modules, $base, + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); + + $deps = array(); + foreach($tmp as $tm){ + $deps[$tm['dn']] = $tm['dn']; + } + + $department = $departments = array(); + $ui= get_userinfo(); + $d = $ui->get_module_departments($modules); + foreach($d as $department){ + $departments[$department] = $department; + } + + /* Load possible departments */ + $ids = $this->config->idepartments; + $first = ""; + $found = FALSE; + $options = array(); + foreach($ids as $dep => $name){ + if(isset($deps[$dep]) && in_array_ics($dep, $departments)){ + + /* Keep first base dn in mind, we could need this + * info if no valid base was found + */ + if(empty($first)) { + $first = $dep['dn']; + } + + $value = $ids[$dep]; + if ($this->selectedBase == $dep){ + $found = TRUE; + $options.= ""; + } else { + $options.= ""; + } + } + } + + $listhead = $this->get_default_header(); + + /* Add base selection */ + $listhead .= _("Base")."  ". + "  "; + + $this->SetListHeader($listhead); + + } + + + function setEntries() + { + $_target_list = array(); + + if($this->display_users){ + $_target_list = array_merge($_target_list, + get_sub_list("(&(objectClass=person)(objectClass=gosaAccount))","users",get_people_ou(),get_people_ou().$this->selectedBase, + array("cn","objectClass","description","uid"),GL_NONE)); + } + if($this->display_groups){ + $_target_list = array_merge($_target_list, + get_sub_list("(objectClass=posixGroup)","groups",get_groups_ou(),get_groups_ou().$this->selectedBase, + array("cn","objectClass","description"),GL_NONE)); + } + $this->_target_list = $_target_list; + + $tmp = array(); + foreach($this->_target_list as $key => $object){ + $tmp[$key] = $object['cn'][0]; + } + natcasesort($tmp); + + foreach($tmp as $key => $obj){ + + $obj = $this->_target_list[$key]; + $name = $obj['cn'][0]; + if(isset($obj['description'])){ + $name .= " [".$obj['description'][0]."]"; + } + + $img =""; + if(in_array("gosaAccount",$obj['objectClass'])){ + $img = 'U'; + }elseif(in_array("posixGroup",$obj['objectClass'])){ + $img = 'G'; + } + + $field1 = array("string" => "", + "attach" => "style='width:20px;'"); + $field2 = array("string" => $img, + "attach" => "style='width:20px;'"); + $field3 = array("string" => $name , "attach" => "title='".$obj['dn']."'"); + $this->AddElement(array($field1,$field2,$field3)); + } + } + + + function get_selected_targets() + { + $a_targets = array("USERS" => array(),"GROUPS" => array()); + + foreach($this->list_get_selected_items() as $id){ + $obj = $this->_target_list[$id]; + if(in_array("posixGroup",$obj['objectClass'])){ + $a_targets['GROUPS'][] = $obj['cn'][0]; + } + if(in_array("gosaAccount",$obj['objectClass'])){ + $a_targets['USERS'][] = $obj['uid'][0]; + } + } + + return($a_targets); + } + + + /*! \brief Returns a set of elements selected in a MultiSelectWindow + @return Array[integer]=integer + */ + protected function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/addons/goto/events/target_list.tpl b/trunk/gosa-plugins/goto/addons/goto/events/target_list.tpl new file mode 100644 index 000000000..0ec59f25f --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/target_list.tpl @@ -0,0 +1,7 @@ +{$divlist} + +

+
+   + +
diff --git a/trunk/gosa-plugins/goto/addons/goto/events/timestamp_select.tpl b/trunk/gosa-plugins/goto/addons/goto/events/timestamp_select.tpl new file mode 100644 index 000000000..9253774c9 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/events/timestamp_select.tpl @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + +
{t}Year{/t}{t}Month{/t}{t}Day{/t}  {t}Hour{/t}{t}Minute{/t}{t}Second{/t}
+   + +   + +   +   +   + +   + + +
+ diff --git a/trunk/gosa-plugins/goto/addons/goto/goto_import_file.tpl b/trunk/gosa-plugins/goto/addons/goto/goto_import_file.tpl new file mode 100644 index 000000000..30bddeaac --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/goto_import_file.tpl @@ -0,0 +1,87 @@ +

{t}Import jobs{/t}

+

+{t}You can import a list of jobs into the GOsa job queue. This should be a semicolon seperated list of items in the following format:{/t} +

+{t}timestamp{/t} ; {t}MAC-address{/t} ; {t}job type{/t} ; {t}object group{/t} [ ; {t}import base{/t} ; {t}full hostname{/t} ; {t}IP-address{/t} ; {t}DHCP group{/t} ] +
+
+{if !$count} +{t}Example{/t}: +
+20080626162556 ; 00:0C:29:99:1E:37 ; job_trigger_activate_new ; goto-client ; dc=test,dc=gonicus,dc=de +
+
+{/if} + +

+  + + + + + +
+ {t}Select list to import{/t} + + + +
+ + {if $count} +

 

+
+
+
+ + + + + + + + + + + + {foreach from=$info item=item key=key} + {if $item.ERROR} + + + + + + + + + + + + + + {else} + {if ($key % 2)} + + {else} + + {/if} + + + + + + + + + + {/if} + {/foreach} +
{t}Timestamp{/t}{t}MAC{/t}{t}Event{/t}{t}Object group{/t}{t}Base{/t}{t}FQDN{/t}{t}IP{/t}{t}DHCP{/t}
{$item.TIMESTAMP}{$item.MAC}{$item.HEADER}{$item.OGROUP}{$item.BASE}{$item.FQDN}{$item.IP}{$item.DHCP}
{$item.ERROR}
{$item.TIMESTAMP}{$item.MAC}{$item.HEADER}{$item.OGROUP}{$item.BASE}{$item.FQDN}{$item.IP}{$item.DHCP}
+
+ {/if} +
+

+
+   + +
+
diff --git a/trunk/gosa-plugins/goto/addons/goto/gotomasses.tpl b/trunk/gosa-plugins/goto/addons/goto/gotomasses.tpl new file mode 100644 index 000000000..97b3eff01 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/gotomasses.tpl @@ -0,0 +1,141 @@ + + +{$div} + + +{literal} + +{/literal} diff --git a/trunk/gosa-plugins/goto/addons/goto/log_view.tpl b/trunk/gosa-plugins/goto/addons/goto/log_view.tpl new file mode 100644 index 000000000..433214f22 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/log_view.tpl @@ -0,0 +1,29 @@ +{if !$ACL} + +

{msgPool type=permView}

+ +{else} + {if $logs_available} +

{t}Available logs{/t}

+ +
{$divlist}
+
+

+

{t}Selected log{/t}: {$selected_log}

+
+ {$log_file} +
+ {else} +

{t}No logs for this host available!{/t}

+ {/if} +{/if} + +{if $standalone} +
+ +

+
+ +
+
+{/if} diff --git a/trunk/gosa-plugins/goto/addons/goto/main.inc b/trunk/gosa-plugins/goto/addons/goto/main.inc new file mode 100644 index 000000000..af6b0ab7e --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/main.inc @@ -0,0 +1,70 @@ +set_acl_category("gotomasses"); + + /* Check root dn and user dn for acl informations */ + $gotomasses->set_acl_base($config->current['BASE']); + if($gotomasses->getacl("") == ""){ + $gotomasses->set_acl_base($ui->dn); + } + + /* Check if we have acl on our own base */ + if($gotomasses->getacl("") == ""){ + $gotomasses->set_acl_base(dn2base($ui->dn)); + } + session::set("gotomasses",$gotomasses); + } + $gotomasses = session::get('gotomasses'); + + /* Execute formular */ + $display= $gotomasses->save_object(); + if(isset($_POST['save_gotomass_changes'])){ + $gotomasses->save(); + } + $display= $gotomasses->execute (); + + /* Page header*/ + $display= print_header(get_template_path('plugins/goto/images/goto.png'), _("System deployment status")).$display; + + /* Store changes in session */ + session::set('gotomasses',$gotomasses); +} diff --git a/trunk/gosa-plugins/goto/addons/goto/remove.tpl b/trunk/gosa-plugins/goto/addons/goto/remove.tpl new file mode 100644 index 000000000..975c107c0 --- /dev/null +++ b/trunk/gosa-plugins/goto/addons/goto/remove.tpl @@ -0,0 +1,20 @@ +
+  {t}Warning{/t} +
+

+ {$info} +

+ +

+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+{if $multiple} + +{else} + +{/if} + +

+ diff --git a/trunk/gosa-plugins/goto/admin/applications/class_applicationGeneric.inc b/trunk/gosa-plugins/goto/admin/applications/class_applicationGeneric.inc new file mode 100644 index 000000000..b6caa4d92 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/class_applicationGeneric.inc @@ -0,0 +1,623 @@ +get_ldap_link(); + $this->orig_dn = $dn; + if ($dn != 'new'){ + $this->iconData= $ldap->get_attribute($dn, "gosaApplicationIcon"); + $this->saved_attributes['gosaApplicationIcon'] = $this->iconData; + } + if ($this->iconData == ""){ + $this->set_picture(""); + } + session::set('binary',$this->iconData); + session::set('binarytype',"image/jpeg"); + $this->gosaApplicationIcon= $this->iconData; + + /* This is always an account */ + $this->is_account= TRUE; + + if ($this->dn == "new"){ + if(session::is_set('CurrentMainBase')){ + $this->base = session::get('CurrentMainBase'); + }else{ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } + } else { + $this->base= preg_replace ("/^[^,]+,".get_ou('applicationRDN')."/", "", $this->dn); + } + + $this->orig_cn = $this->cn; + $this->orig_base = $this->base; + $this->gosaApplicationFlags = preg_replace("/[^GDLMO]/","",$this->gosaApplicationFlags); + } + + + function generateTemplate() + { + $str= "# This code is part of GOsa (https://gosa.gonicus.de)\n#\n"; + + $values = array(); + $names = array(); + if($this->parent->by_object['applicationParameters']->is_account){ + $names = $this->parent->by_object['applicationParameters']->option_name; + $values = $this->parent->by_object['applicationParameters']->option_value; + } + + if (count($names)){ + $str .="# This plugin handles these environment variables:\n"; + } else { + $str .="# This plugin handles no environment variables.\n"; + } + + foreach($names as $index => $name){ + + // Fix length + for($i = strlen($name) ; $i < 30 ; $i++){ + $name= $name." "; + } + if((isset($values[$index]))&&(!empty($values[$index]))){ + $str.= "# ".$name."\t(e.g. '".$values[$index]."')\n"; + }else{ + $str.= "# ".$name."\t("._("no example").")\n"; + } + } + $str .= "#\n". + "# Don't remove the following tag, it is used for header update.\n". + "### END HEADER ###"; + + return($str); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","application/".get_class($this),$this->dn); + } + + $smarty= get_smarty(); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name, preg_match("/freeze/i",$this->FAIstate))); + } + $smarty->assign("IconReadable", $this->acl_is_readable("gosaApplicationIcon")); + + /* Do we represent a valid group? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("application")).""; + return ($display); + } + + /* Download requested */ + foreach($_POST as $name => $value){ + if(preg_match("/^downloadScript/",$name)){ + session::set('binary',$this->gotoLogonScript); + session::set('binarytype',"octet-stream"); + session::set('binaryfile',$this->cn.".gosaApplication"); + header("location: getbin.php "); + exit(); + } + } + + /* Reassign picture data, sometimes its corrupt cause we started a download of application scripts */ + session::set('binary',$this->iconData); + session::set('binarytype',"image/jpeg"); + + $smarty->assign("rand", rand(0, 10000)); + $head = $this->generateTemplate(); + $this->gotoLogonScript= $this->generateTemplate().preg_replace('/.*### END HEADER ###/s', '', $this->gotoLogonScript); + + if((isset($_POST['upLoad']))&&(isset($_FILES['ScriptFile'])) && !preg_match("/freeze/i",$this->FAIstate)){ + $str = file_get_contents($_FILES['ScriptFile']['tmp_name']); + $this->gotoLogonScript = $str; + } + + /* Fill templating stuff */ + $smarty->assign("cn", $this->cn); + if(!$this->is_release()){ + $smarty->assign("bases", $this->get_allowed_bases()); + }else{ + $smarty->assign("bases", array()); + } + if ($this->dn == "new"){ + $smarty->assign("selectmode", ""); + $smarty->assign("namemode", ""); + } else { + $smarty->assign("namemode", "readonly"); + $smarty->assign("selectmode", "disabled"); + } + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once && !preg_match("/freeze/i",$this->FAIstate)){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* Just allow selection valid bases */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* Get random number for pictures */ + srand((double)microtime()*1000000); + $smarty->assign("rand", rand(0, 10000)); + + /* Variables */ + foreach(array("description", "gosaApplicationExecute", "gosaApplicationName","cn") as $val){ + $smarty->assign($val, $this->$val); + } + + /* Checkboxes */ + foreach (array("G" => "execForGroupmembers", "O" => "overwriteConfig", + "L" => "placeOnKicker", + "D" => "placeOnDesktop", "M" => "placeInStartmenu") as $key => $val){ + if (preg_match("/$key/", $this->gosaApplicationFlags) && $this->acl_is_readable("$val")){ + $smarty->assign("$val", "checked"); + } else { + $smarty->assign("$val", ""); + } + } + + $smarty->assign("isReleaseApplikation" ,$this->is_release()); + $smarty->assign("gotoLogonScript",htmlentities($this->gotoLogonScript, ENT_COMPAT, 'UTF-8')); + $smarty->assign("base_select", $this->base); + /* Show main page */ + return($smarty->fetch (get_template_path('generic.tpl', TRUE))); + } + + + function remove_from_parent() + { + restore_error_handler(); + + /* Parse release out of object dn */ + $release = preg_replace("/".get_ou("applicationRDN").preg_quote($this->base, '/')."$/","",$this->dn); + $release = preg_replace("/^cn=[^,]+,/","",$release); + + /* Get a list of all groups + */ + $groups = array(); + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(objectClass=posixGroup)",array("dn")); + while($attrs = $ldap->fetch()){ + $groups[$attrs['dn']] = array(); + } + + /* Check if there are groups, useing this application + */ + $found = array(); + foreach($groups as $group => $data){ + $ldap->cd($release.$group); + $ldap->search("(objectClass=gotoMenuEntry)",array("dn")); + while($attrs = $ldap->fetch()){ + $info = preg_replace("/".preg_quote($release.$group, '/')."$/","",$attrs['dn']); + if(preg_match("/^cn=".$this->cn."/",$info) && !preg_match("/ou=[^,]+,/",$info)){ + $found[] = $attrs['dn']; + } + } + } + + /* Create an error message an skip remove, if + this application is still in use. + */ + if(count($found)){ + msg_dialog::display(_("Error"), sprintf(_("Cannot remove application - it is still in use by these objects: %s"), "
".msgPool::buildList($found)), ERROR_DIALOG); + return(FALSE); + } + + $ldap->rmDir($this->dn); + new log("remove","application/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class()), ERROR_DIALOG); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove"); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class()), ERROR_DIALOG); + } + } + } + + + /* Save data to object */ + function save_object() + { + if(preg_match("/freeze/i",$this->FAIstate)){ + return; + } + + if (isset($_POST['cn'])){ + + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + /* Save attributes */ + parent::save_object(); + + $checks = array("execForGroupmembers" => "G", + "placeOnDesktop" => "D", + "placeOnKicker" => "L", + "placeInStartmenu" => "M", + "overwriteConfig" => "O"); + + + /* Save application flags */ + foreach($checks as $name => $flag){ + if($this->acl_is_writeable($name)){ + $set = isset($_POST[$name]) && $_POST[$name] == 1; + if(!$set && strstr($this->gosaApplicationFlags,$flag)){ + $this->gosaApplicationFlags = str_replace($flag,"",$this->gosaApplicationFlags); + }elseif($set && !preg_match("/".$flag."/",$this->gosaApplicationFlags)){ + $this->gosaApplicationFlags .= $flag; + } + } + } + + /* Remove current picture */ + if(isset($_POST['remove_picture'])){ + $this->set_picture(""); + } + + /* Check for picture upload */ + if (isset($_FILES['picture_file']['name']) && $_FILES['picture_file']['name'] != ""){ + + if (!is_uploaded_file($_FILES['picture_file']['tmp_name'])) { + msg_dialog::display(_("Error"), msgPool::incorrectUpload(), ERROR_DIALOG); + } + + if (!function_exists("imagick_blob2image")){ + /* Get temporary file name for conversation */ + $fname = tempnam (TEMP_DIR, "GOsa"); + + /* Open file and write out photoData */ + $fp = fopen ($fname, "w"); + fwrite ($fp, $_FILES['picture_file']['tmp_name']); + fclose ($fp); + + /* Build conversation query. Filename is generated automatically, so + we do not need any special security checks. Exec command and save + output. For PHP safe mode, you'll need a configuration which respects + image magick as executable... */ + $query= "convert -size 48x48 $fname -resize 48x48 +profile \"*\" -"; + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $query, "Execute"); + + /* Read data written by convert */ + $output= ""; + $sh= popen($query, 'r'); + while (!feof($sh)){ + $output.= fread($sh, 4096); + } + pclose($sh); + + unlink($fname); + } else { + + /* Load the new uploaded Photo */ + if(!$handle = imagick_ReadImage($_FILES['picture_file']['tmp_name'])){ + msg_dialog::display(_("Error"), msgPool::incorrectUpload(_("no read permission")), ERROR_DIALOG); + } + + /* Resizing image to 147x200 and blur */ + if(!imagick_resize($handle,48,48,IMAGICK_FILTER_GAUSSIAN,0)){ + msg_dialog::display(_("Error"), msgPool::incorrectUpload(_("cannot resize image")), ERROR_DIALOG); + } + + /* Converting image to JPEG */ + if(!imagick_convert($handle,"PNG")) { + msg_dialog::display(_("Error"), msgPool::incorrectUpload(_("cannot convert image")), ERROR_DIALOG); + } + + if(!imagick_writeimage($handle,$_FILES['picture_file']['tmp_name'])){ + msg_dialog::display(_("Error"), msgPool::incorrectUpload(sprintf(_("cannot save image to '%s'"), $_FILES['picture_file']['tmp_name'])), ERROR_DIALOG); + } + + imagick_free($handle); + } + + /* Activate new picture */ + $this->set_picture($_FILES['picture_file']['tmp_name']); + } + + if(!$this->is_release()){ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + } + } + } + + + /* Check values */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(!preg_match("#^/#",$this->gosaApplicationExecute)){ + $message[]=msgPool::invalid(_("Execute path"),"","","/some/path"); + } + + /* Permissions for that base? */ + if ($this->base != ""){ + $new_dn= "cn=".$this->cn.",".get_ou('applicationRDN').$this->base; + } else { + $new_dn= $this->dn; + } + + + if($this->dn == "new"){ + $this->set_acl_base($this->base); + } + + /* All required fields are set? */ + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + + if(preg_match("/[^a-z0-9_-]/",$this->cn)) { + $message[]=msgPool::invalid(_("Name"),$this->cn,"/^[a-z0-9_-]*$/"); + } + + if ($this->gosaApplicationExecute == ""){ + $message[]= msgPool::required(_("Execute")); + } + + /* Check for existing application */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current["BASE"]); + + $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + + if($this->is_release()){ + $base = $this->parent->parent->app_release; + }else{ + $base = get_ou('applicationRDN').$this->base; + } + + $ldap->ls("(&(objectClass=gosaApplication)(cn=".$this->cn."))",$base,array("cn")); + if($ldap->count()){ + $attrs = $ldap->fetch(); + if($this->dn != $attrs['dn']) { + $message[]= msgPool::duplicated("cn"); + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return $message; + } + + + /* Save to LDAP */ + function save() + { + /* Get application script without header part, to check if we must save the script itself */ + $script = preg_replace('/.*### END HEADER ###/s', '', $this->gotoLogonScript); + + $this->gosaApplicationFlags ="[{$this->gosaApplicationFlags}]"; + plugin::save(); + $this->attrs["gosaApplicationIcon"]= $this->gosaApplicationIcon; + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cat($this->dn, array('dn')); + + $a= $ldap->fetch(); + if (count($a)){ + + /* Remove gotoLogonScript if it is empty */ + if(empty($script)) { + $this->attrs['gotoLogonScript'] = array(); + } + + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + $this->handle_post_events("modify"); + new log("modify","application/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } else { + + /* Remove gotoLogonScript if it is empty */ + if(empty($script)) { + unset($this->attrs['gotoLogonScript']); + } + + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + new log("create","application/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("add"); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class()), ERROR_DIALOG); + } + } + + + function is_release() + { + if(isset($this->parent->parent)){ + return($this->parent->parent->IsReleaseManagementActivated()); + }else{ + /* Check if we should enable the release selection */ + $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + return(true); + } + } + return(FALSE); + } + + + function set_picture($filename) + { + if (!is_file($filename)){ + $filename= "./plugins/goto/images/default_icon.png"; + $this->gosaApplicationIcon= "*removed*"; + } + + if (file_exists($filename)){ + $fd = fopen ($filename, "rb"); + $this->iconData= fread ($fd, filesize ($filename)); + session::set('binary',$this->iconData); + session::set('binarytype',"image/jpeg"); + $this->gosaApplicationIcon= $this->iconData; + + fclose ($fd); + } + } + + function getCopyDialog() + { + $vars = array("cn"); + + $str ="

"._("Application settings")."

+ + + + + +
". + _("Application name"). + " + +
"; + $ret = array(); + $ret['status'] = ""; + $ret['string'] = $str; + return($ret); + } + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + $source_o = new application($this->config,$source['dn']); + $this->gosaApplicationIcon = $source_o->gosaApplicationIcon; + } + + + /* Return plugin informations for acl handling + #FIXME FAIscript seams to ununsed within this class... */ + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Application generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("application" => array("description" => _("Application"), + "objectClass" => "gosaApplication")), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "base" => _("Base"), + "description" => _("Description"), + "gosaApplicationExecute" => _("Execute"), + "gosaApplicationName" => _("Name"), + "gosaApplicationIcon" => _("Icon"), + "gotoLogonScript" => _("Script content"), + + "execForGroupmembers" => _("Only executable for members"), // G + "placeOnDesktop" => _("Place icon on members desktop"), // D + "placeOnKicker" => _("Place entry in members launch bar"), // L + "placeInStartmenu" => _("Place entry in members startmenu"), // M + "overwriteConfig" => _("Replace user configuration on startup")) // O + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/applications/class_applicationManagement.inc b/trunk/gosa-plugins/goto/admin/applications/class_applicationManagement.inc new file mode 100644 index 000000000..ddfb16123 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/class_applicationManagement.inc @@ -0,0 +1,761 @@ +config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + return(true); + } + return(false); + } + + + function applicationManagement (&$config, &$ui) + { + /* Save configuration for internal use */ + $this->config = &$config; + $this->ui = &$ui; + + /* Check if copy & paste is activated */ + if($this->config->boolValueIsTrue("MAIN","COPYPASTE")){ + $this->CopyPasteHandler = new CopyPasteHandler($this->config); + } + + /* Creat dialog object */ + $this->DivListApplication = new divListApplication($this->config,$this); + + if($this->IsReleaseManagementActivated()){ + $this->acl_base = $this->config->current['BASE']; + + /* Check if we should enable the release selection */ + $this->enableReleaseManagement = true; + + /* Hide SubSearch checkbox */ + $this->DivListApplication->DisableCheckBox("SubSearch"); + }else{ + $this->acl_base = &$this->DivListApplication->selectedBase; + } + + /* Set default release */ + if(!$this->IsReleaseManagementActivated()){ + $this->app_base = get_ou("applicationRDN").$this->config->current['BASE']; + if(!session::is_set("app_filter")){ + session::set("app_filter",array("app_base" => $this->app_base)); + } + $app_filter = session::get("app_filter"); + }else{ + + /* Set intial release */ + $this->app_base = get_ou("applicationRDN").$this->config->current['BASE']; + $rel = $config->search("faiManagement","DEFAULTFAIRELEASE",array("menu")); + $rels = array_flip($this->getReleases()); + if(isset($rels[$rel])){ + $rel = $rels[$rel]; + }else{ + $rel = $this->app_base; + } + + if(!session::is_set("app_filter")){ + session::set("app_filter",array("app_base" => $this->app_base,"app_release" => $rel)); + } + $app_filter = session::get("app_filter"); + $this->app_base = $app_filter['app_base']; + $this->app_release = $app_filter['app_release']; + } + } + + + function getReleases() + { + $ldap = $this->config->get_ldap_link(); + $ret = array(); + $base = $this->app_base; + + $ret[$this->app_base] = "/"; + $ldap->cd($base); + $ldap->search("(&(objectClass=organizationalUnit)(objectClass=FAIbranch))",array("ou")); + while($attrs = $ldap->fetch()){ + $str = str_replace($base,"",$attrs['dn']); + $tmp = array_reverse( split("ou=",$str)); + $str = ""; + foreach($tmp as $val){ + $val = trim(preg_replace("/,/","",$val)); + if(empty($val)) break; + $str .= "/".$val; + } + if(!empty($str)){ + $ret[$attrs['dn']]= preg_replace("/^\//","",$str); + } + } + asort($ret); + return($ret); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + + /**************** + Variable init + ****************/ + + /* These vars will be stored if you try to open a locked app, + to be able to perform your last requests after showing a warning message */ + session::set('LOCK_VARS_TO_USE',array("/^act$/","/^id$/","/^appl_edit_/","/^appl_del_/","/^item_selected/","/^remove_multiple_applications/","/^menu_action/")); + + $smarty = get_smarty(); // Smarty instance + $s_action = ""; // Contains the action to proceed + $s_entry = ""; // The value for s_action + $base_back = ""; // The Link for Backbutton + + /* Test Posts */ + foreach($_POST as $key => $val){ + // Post for delete + if(preg_match("/appl_del.*/",$key)){ + $s_action = "del"; + $s_entry = preg_replace("/appl_".$s_action."_/i","",$key); + // Post for edit + }elseif(preg_match("/appl_edit_.*/",$key)){ + $s_action="edit"; + $s_entry = preg_replace("/appl_".$s_action."_/i","",$key); + // Post for new + }elseif(preg_match("/^copy_.*/",$key)){ + $s_action="copy"; + $s_entry = preg_replace("/^copy_/i","",$key); + }elseif(preg_match("/^cut_.*/",$key)){ + $s_action="cut"; + $s_entry = preg_replace("/^cut_/i","",$key); + // Post for new + }elseif(preg_match("/^appl_new.*/",$key)){ + $s_action="new"; + }elseif(preg_match("/^remove_multiple_applications/",$key)){ + $s_action="del_multiple"; + }elseif(preg_match("/^editPaste.*/i",$key)){ + $s_action="editPaste"; + }elseif(preg_match("/^multiple_copy_groups/",$key)){ + $s_action = "copy_multiple"; + }elseif(preg_match("/^multiple_cut_groups/",$key)){ + $s_action = "cut_multiple"; + } + } + + if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ + $s_action ="edit"; + $s_entry = $_GET['id']; + } + + $s_entry = preg_replace("/_.$/","",$s_entry); + + + /* handle C&P from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ + $s_action = "copy_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){ + $s_action = "cut_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){ + $s_action = "editPaste"; + } + + /* Create options */ + if(isset($_POST['menu_action']) && $_POST['menu_action'] == "appl_new"){ + $s_action = "new"; + } + + /* handle remove from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){ + $s_action = "del_multiple"; + } + + /**************** + Copy & Paste handling + ****************/ + + /* Display the copy & paste dialog, if it is currently open */ + $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); + if($ret){ + return($ret); + } + + /**************** + Create a new app + ****************/ + + /* New application? */ + if ($s_action=="new"){ + + /* By default we set 'dn' to 'new', all relevant plugins will + react on this. */ + $this->dn= "new"; + + /* Create new usertab object */ + $this->apptabs= new apptabs($this->config,$this->config->data['TABS']['APPSTABS'], $this->dn,"application"); + $this->apptabs->parent = &$this; + $this->apptabs->set_acl_base($this->acl_base); + } + + + /**************** + Edit entry canceled + ****************/ + + /* Cancel dialogs */ + if (isset($_POST['edit_cancel']) || isset($_POST['password_cancel'])){ + $this->remove_lock(); + $this->apptabs= NULL; + set_object_info(); + } + + + /**************** + Edit entry finished + ****************/ + + /* Finish apps edit is triggered by the tabulator dialog, so + the user wants to save edited data. Check and save at this + point. */ + if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply']) ) && (isset($this->apptabs->config))){ + + /* Check tabs, will feed message array */ + $this->apptabs->last= $this->apptabs->current; + $this->apptabs->save_object(); + $message= $this->apptabs->check(); + + /* Save, or display error message? */ + if (count($message) == 0){ + + /* Save data data to ldap */ + $this->apptabs->save(); + + if (!isset($_POST['edit_apply'])){ + /* Application has been saved successfully, remove lock from + LDAP. */ + if ($this->dn != "new"){ + $this->remove_lock(); + } + $this->apptabs= NULL; + set_object_info(); + }else{ + + /* Reinitialize tab */ + if($this->apptabs instanceof tabs){ + $this->apptabs->re_init(); + } + } + } else { + /* Ok. There seem to be errors regarding to the tab data, + show message and continue as usual. */ + msg_dialog::displayChecks($message); + } + } + + + /**************** + Edit entry + ****************/ + + /* User wants to edit data? */ + if (($s_action=="edit") && (!isset($this->apptabs->config))){ + + /* Get 'dn' from posted 'applist', must be unique */ + $this->dn= $this->applications[$s_entry]['dn']; + + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return(gen_locked_message ($user, $this->dn,TRUE)); + } + + /* Lock the current entry, so everyone will get the + above dialog */ + add_lock ($this->dn, $this->ui->dn); + + /* Register apptabs to trigger edit dialog */ + $this->apptabs= new apptabs($this->config,$this->config->data['TABS']['APPSTABS'], $this->dn,"application"); + if($this->IsReleaseManagementActivated()){ + $this->apptabs->set_FAIstate($this->applications[$s_entry]['FAIstate'][0]); + } + $this->apptabs->parent = &$this; + $this->apptabs->set_acl_base($this->dn); + set_object_info($this->dn); + } + + + + /******************** + Delete MULTIPLE entries requested, display confirm dialog + ********************/ + + if ($s_action=="del_multiple"){ + $ids = $this->list_get_selected_items(); + + if(count($ids)){ + $this->dns = array(); + + $disallowed = array(); + foreach($ids as $id){ + $dn = $this->applications[$id]['dn']; + $acl = $this->ui->get_permissions($dn, "application/application"); + if(preg_match("/d/",$acl)){ + $this->dns[$id] = $dn; + }else{ + $disallowed[] = $dn; + } + } + + if(count($disallowed)){ + msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); + } + + if(count($this->dns)){ + + if ($user= get_multiple_locks($this->dns)){ + return(gen_locked_message($user,$this->dns)); + } + + $dns_names = array(); + foreach($this->dns as $dn){ + add_lock ($dn, $this->ui->dn); + $dns_names[] =LDAP::fix($dn); + } + + /* Lock the current entry, so nobody will edit it during deletion */ + $smarty->assign("intro", msgPool::deleteInfo($dns_names,_("application"))); + $smarty->assign("multiple", true); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + /******************** + Delete MULTIPLE entries confirmed + ********************/ + + /* Confirmation for deletion has been passed. Users should be deleted. */ + if (isset($_POST['delete_multiple_application_confirm'])){ + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + + $ui = get_userinfo(); + $acl = $ui->get_permissions($dn ,"application/application"); + if (preg_match('/d/', $acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->apptabs= new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], $dn,"application"); + $this->apptabs->parent = &$this; + $this->apptabs->set_acl_base($dn); + $this->apptabs->delete (); + unset ($this->apptabs); + $this->apptabs= NULL; + + } else { + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); + new log("security","application/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /******************** + Delete MULTIPLE entries Canceled + ********************/ + + /* Remove lock */ + if(isset($_POST['delete_multiple_application_cancel'])){ + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + /**************** + Delete app + ****************/ + + /* Remove user was requested */ + if ($s_action == "del"){ + + /* Get 'dn' from posted 'uid' */ + $this->dn= $this->applications[$s_entry]['dn']; + + /* Load permissions for selected 'dn' and check if + we're allowed to remove this 'dn' */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->dn ,"application/application"); + + if(preg_match("/d/",$acl)){ + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return (gen_locked_message ($user, $this->dn)); + } + + /* Lock the current entry, so nobody will edit it during deletion */ + add_lock ($this->dn, $this->ui->dn); + $smarty= get_smarty(); + $smarty->assign("intro",msgPool::deleteInfo(LDAP::fix($this->dn),_("application"))); + $smarty->assign("multiple", false); + return($smarty->fetch (get_template_path('remove.tpl', TRUE))); + } else { + + /* Obviously the user isn't allowed to delete. Show message and + clean session. */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); + } + } + + + /**************** + Delete app confirmed + ****************/ + + /* Confirmation for deletion has been passed. Group should be deleted. */ + if (isset($_POST['delete_app_confirm'])){ + + /* Some nice guy may send this as POST, so we've to check + for the permissions again. */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->dn ,"application/application"); + + if(preg_match("/d/",$acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->apptabs= new apptabs($this->config, $this->config->data['TABS']['APPSTABS'], $this->dn,"application"); + $this->apptabs->parent = &$this; + $this->apptabs->set_acl_base($this->dn); + $this->apptabs->delete (); + unset ($this->apptabs); + $this->apptabs= NULL; + + } else { + + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); + new log("security","application/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + } + + + /**************** + Delete app canceled + ****************/ + + /* Delete application canceled? */ + if (isset($_POST['delete_cancel'])){ + $this->remove_lock(); + set_object_info(); + } + + /* Show tab dialog if object is present */ + if (($this->apptabs) && (isset($this->apptabs->config))){ + $display= $this->apptabs->execute(); + + /* Don't show buttons if tab dialog requests this */ + if (!$this->apptabs->by_object[$this->apptabs->current]->dialog){ + $display.= "

\n"; + + if(($this->apptabs instanceOf tabs || $this->apptabs instanceOf plugin) && $this->apptabs->read_only == TRUE){ + $display.= "

+ +

"; + }elseif(isset($this->apptabs->FAIstate) && !preg_match("/freeze/i",$this->apptabs->FAIstate)){ + $display.= "\n"; + $display.= " \n"; + if ($this->dn != "new"){ + $display.= "\n"; + $display.= " \n"; + } + } + $display.= "\n"; + $display.= "

"; + } + return ($display); + } + + + /**************** + Dialog display + ****************/ + + /* Check if there is a snapshot dialog open */ + if($this->IsReleaseManagementActivated()){ + $base = $this->app_release; + }else{ + $base = $this->app_base; + } + if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + /* Display dialog with system list */ + $this->DivListApplication->parent = $this; + $this->DivListApplication->execute(); + if(!$this->IsReleaseManagementActivated()){ + $this->DivListApplication->AddDepartments($this->DivListApplication->selectedBase,3,1); + } + $this->reload(); + $this->DivListApplication->setEntries($this->applications); + return($this->DivListApplication->Draw()); + } + + + /* Return departments, that will be included within snapshot detection */ + function get_used_snapshot_bases() + { + if($this->IsReleaseManagementActivated()){ + return(array($this->app_release)); + }else{ + return(array($this->app_base)); + } + } + + + function reload() + { + $this->applications= array(); + + /* Set base for all searches */ + $Regex = $this->DivListApplication->Regex; + $SubSearch = $this->DivListApplication->SubSearch; + $Flags = GL_NONE | GL_SIZELIMIT; + $Filter = "(&(cn=".$Regex.")(objectClass=gosaApplication))"; + $tmp = array(); + + if(!$this->IsReleaseManagementActivated()){ + $use_base = $this->app_base; + if($SubSearch){ + $use_base = preg_replace("/^".preg_quote(get_ou("applicationRDN"), '/')."/","",$use_base); + } + }else{ + $use_base = $this->app_release; + $SubSearch= FALSE; + } + + /* Add FAIstate to the search attributes */ + $search_attrs = array("cn","description","dn","objectClass"); + if($this->IsReleaseManagementActivated()) { + $search_attrs[] = "FAIstate"; + } + + if($SubSearch){ + $res= get_sub_list($Filter, "application",get_ou("applicationRDN"), $use_base, $search_attrs, $Flags); + }else{ + $res= get_list($Filter, "application",$use_base, $search_attrs, $Flags); + } + $tmp2 = array(); + foreach ($res as $val){ + if(!isset($val['FAIstate'])){ + $val['FAIstate'][0] = ""; + } + $tmp[strtolower($val['cn'][0]).$val['cn'][0].$val['dn']]=$val; + $tmp2[strtolower($val['cn'][0]).$val['cn'][0].$val['dn']] = strtolower($val['cn'][0]).$val['cn'][0].$val['dn']; + } + + natcasesort($tmp2); + $this->applications=array(); + foreach($tmp2 as $val){ + $this->applications[]=$tmp[$val]; + } + reset ($this->applications); + } + + function remove_from_parent() + { + /* Optionally execute a command after we're done */ + $this->postremove(); + } + + + function copyPasteHandling_from_queue($s_action,$s_entry) + { + /* Check if Copy & Paste is disabled */ + if(!is_object($this->CopyPasteHandler)){ + return(""); + } + + $ui = get_userinfo(); + + /* Add a single entry to queue */ + if($s_action == "cut" || $s_action == "copy"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + $dn = $this->applications[$s_entry]['dn']; + if($s_action == "copy" && $ui->is_copyable($dn,"application","application")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"apptabs","APPSTABS","application"); + } + if($s_action == "cut" && $ui->is_cutable($dn,"application","application")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"apptabs","APPSTABS","application"); + } + } + + + /* Add entries to queue */ + if($s_action == "copy_multiple" || $s_action == "cut_multiple"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + + /* Add new entries to CP queue */ + foreach($this->list_get_selected_items() as $id){ + $dn = $this->applications[$id]['dn']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,"application","application")){ + $this->CopyPasteHandler->add_to_queue($dn,"copy","apptabs","APPSTABS","application"); + } + if($s_action == "cut_multiple" && $ui->is_cutable($dn,"application","application")){ + $this->CopyPasteHandler->add_to_queue($dn,"cut","apptabs","APPSTABS","application"); + } + } + } + + /* Start pasting entries */ + if($s_action == "editPaste"){ + $this->start_pasting_copied_objects = TRUE; + } + + + /* Return C&P dialog */ + if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ + + + /* Get dialog */ + $this->CopyPasteHandler->SetVar("base",$this->app_base); + $this->CopyPasteHandler->SetVar("parent",$this); + $data = $this->CopyPasteHandler->execute(); + + /* Return dialog data */ + if(!empty($data)){ + return($data); + } + } + + /* Automatically disable status for pasting */ + if(!$this->CopyPasteHandler->entries_queued()){ + $this->start_pasting_copied_objects = FALSE; + } + return(""); + } + + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + + /* Save to LDAP */ + function save() + { + /* Optionally execute a command after we're done */ + $this->postcreate(); + } + + + function remove_lock() + { + if (isset($this->apptabs->dn)){ + del_lock ($this->apptabs->dn); + }elseif(isset($this->dn) && !empty($this->dn) && $this->dn != "new"){ + del_lock($this->dn); + } + if(isset($this->dns) && is_array($this->dns) && count($this->dns)){ + del_lock($this->dns); + } + } + + + function save_object() + { + $this->DivListApplication->save_object(); + if(is_object($this->CopyPasteHandler)){ + $this->CopyPasteHandler->save_object(); + } + + if($this->IsReleaseManagementActivated() && isset($_POST['app_release'])){ + $sel_rel = get_post('app_release'); + $releases = array_flip($this->getReleases()); + if(isset($releases[$sel_rel])){ + $this->app_release = $releases[$sel_rel]; + } + $app_filter = session::get("app_filter"); + $app_filter['app_release'] = $this->app_release; + session::set("app_filter",$app_filter); + }elseif(!$this->IsReleaseManagementActivated()){ + $this->app_base = get_ou("applicationRDN").$this->DivListApplication->selectedBase; + $app_filter = session::get("app_filter"); + $app_filter['app_base'] = $this->app_base; + session::set("app_filter",$app_filter); + } + } + + function check() {} + function adapt_from_template($dn, $skip= array()) {} + function password_change_needed() {} +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/applications/class_applicationParameters.inc b/trunk/gosa-plugins/goto/admin/applications/class_applicationParameters.inc new file mode 100644 index 000000000..fecd5927e --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/class_applicationParameters.inc @@ -0,0 +1,252 @@ +gosaApplicationParameter = array(); + + if (isset($this->attrs['gosaApplicationParameter'])){ + $this->is_account= TRUE; + for ($i= 0; $i<$this->attrs['gosaApplicationParameter']['count']; $i++){ + $option= preg_replace('/^[^:]+:/', '', + $this->attrs['gosaApplicationParameter'][$i]); + $name= preg_replace('/:.*$/', '', + $this->attrs['gosaApplicationParameter'][$i]); + $this->option_name[$i]= $name; + $this->option_value[$i]= $option; + } + } else { + $this->is_account= FALSE; + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Show tab dialog headers */ + $display= ""; + if ($this->parent !== NULL){ + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove options"),msgPool::featuresEnabled(_("parameter"))); + } else { + $display= $this->show_enable_header(_("Create options"), msgPool::featuresDisabled(_("parameter"))); + $this->parent->by_object['application']->generateTemplate(); + return ($display); + } + } + + if($this->acl_is_writeable("gosaApplicationParameter")){ + + /* Add option to list */ + if (isset($_POST['add_option'])){ + $i= count($this->option_name); + $this->option_name[$i]= ""; + $this->option_value[$i]= ""; + } + + /* Remove value from list */ + for ($i= 0; $ioption_name); $i++){ + if (isset($_POST["remove$i"])){ + $k= 0; + $on= array(); + $ov= array(); + for ($j= 0; $joption_name); $j++){ + if ($j != $i){ + $on[$k]= $this->option_name[$j]; + $ov[$k]= $this->option_value[$j]; + $k++; + } + } + $this->option_name= $on; + $this->option_value= $ov; + break; + } + } + } + + /* Generate list of attributes */ + if (count($this->option_name) == 0){ + $this->option_name[]= ""; + $this->option_value[]= ""; + } + + + + $acl = $this->getacl("gosaApplicationParameter") ; + $table= ""; + if (count ($this->option_name)){ + + for ($i= 0; $i < count($this->option_name); $i++){ + $name = $this->option_name[$i]; + $value= $this->option_value[$i]; + + $tag = ""; + if(!preg_match("/w/",$acl)){ + $tag = " disabled "; + } + + if(!preg_match("/r/",$acl)){ + $name = ""; + $value= ""; + } + + $table.="". + " ". + " ". + " ". + ""; + } + } + $table.= "
"._("Variable").""._("Default value")."
". + " ". + " ". + " ". + "
". + "
". + " ". + "
"; + $table.=""; + + /* Show main page */ + $smarty= get_smarty(); + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $smarty->assign("table", $table); + $display.= $smarty->fetch(get_template_path('parameters.tpl', TRUE)); + $this->parent->by_object['application']->generateTemplate(); + return ($display); + } + + function remove_from_parent() + { + $ldap= $this->config->get_ldap_link(); + + /* Zero attributes */ + $this->attrs= array(); + $this->attrs['gosaApplicationParameter']= array(); + + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove'); + } + + + /* Save data to object */ + function save_object() + { + if (isset($_POST['option0']) && $this->acl_is_writeable("gosaApplicationParameter")){ + for ($i= 0; $ioption_name); $i++){ + $this->option_name[$i]= $_POST["option$i"]; + $this->option_value[$i]= ""; + if ($_POST["value$i"] != ""){ + $this->option_value[$i]= $_POST["value$i"]; + } + } + } + } + + + /* Check values */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Check for valid option names */ + for ($i= 0; $ioption_name); $i++){ + if (!preg_match ("/^[a-z0-9_]+$/i", $this->option_name[$i])){ + $message[]= msgPool::invalid(_("Name"), $this->option_name[$i],"/^[a-z0-9_]+$/i"); + } + } + + return $message; + } + + + /* Save to LDAP */ + function save() + { + /* Generate values */ + $this->attrs= array(); + if (count($this->option_name) == 0){ + $this->attrs['gosaApplicationParameter']= array(); + } else { + for ($i= 0; $ioption_name); $i++){ + $this->attrs['gosaApplicationParameter'][]= $this->option_name[$i]. + ":".$this->option_value[$i]; + } + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events('modify'); + } + + /* Return plugin informations for acl handling +#FIXME FAIscript seams to ununsed within this class... */ + static function plInfo() + { + return (array( + "plShortName" => _("Parameter"), + "plDescription" => _("Parameter configuration"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("application"), + + "plProvidedAcls"=> array( + "gosaApplicationParameter" => _("Application parameter settings")) + )); + } + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/applications/class_divListApplication.inc b/trunk/gosa-plugins/goto/admin/applications/class_divListApplication.inc new file mode 100644 index 000000000..c281fa2c5 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/class_divListApplication.inc @@ -0,0 +1,266 @@ +parent = &$parent; + $this->ui = get_userinfo(); + + /* Set list strings */ + $this->SetTitle(_("List of Applications")); + $this->SetSummary(_("This table displays all applications in the selected tree.")); + + /* Result page will look like a headpage */ + $this->SetHeadpageMode(); + + $this->EnableAplhabet(true); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* set Page header */ + $action_col_size = 80; + if($this->parent->snapshotEnabled()){ + $action_col_size += 38; + } + + + /* Toggle all selected / deselected */ + $chk = ""; + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); + $this->AddHeader(array("string" => _("Application name")." / "._("Department"), "attach" => "style=''")); + $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'")); + + /* Add SubSearch checkbox */ + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name ,Text ,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Display users matching"),"*" , true); + } + + + function AddUserBoxToFilter($position) + { + $str = ""; + if(($position == 2) && ($this->parent->IsReleaseManagementActivated($this->config))){ + $smarty = get_smarty(); + $releases = $this->parent->getReleases(); + $smarty->assign("app_release" , $releases[$this->parent->app_release]); + $smarty->assign("app_base" , $releases[$this->parent->app_base]); + $smarty->assign("branchimage","plugins/goto/images/branch.png"); + $smarty->assign("app_releases", $releases); + $str = $smarty->fetch(get_template_path('release_select.tpl', TRUE)); + } + return($str); + } + + + function GenHeader() + { + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(false); + + if(!$this->parent->IsReleaseManagementActivated()){ + + /* Get all departments within this subtree */ + $base = $this->config->current['BASE']; + $options = $this->create_department_list($this->module); + + /* And the rest, a base selection box */ + $listhead .= _("Base")." ". + "  "; + } + + /* Get acls */ + $ui = get_userinfo(); + + if($this->parent->IsReleaseManagementActivated()){ + $acl = $ui->get_permissions($this->parent->acl_base,"application/application"); + $acl_all = $ui->has_complete_category_acls($this->parent->acl_base,"application"); + }else{ + $acl = $ui->get_permissions($this->selectedBase,"application/application"); + $acl_all = $ui->has_complete_category_acls($this->parent->app_base,"application"); + } + + /* Create Layers menu */ + $s = ".|"._("Actions")."|\n"; + + /* Append create options */ + $s .= "..|". + " "._("Create")."|\n"; + if(preg_match("/c/",$acl)) { + $s.= "...|". + " "._("Application")."|appl_new|\n"; + } + + /* Multiple options */ + $s.= "..|---|\n"; + $s.= "..|". + " "._("Remove")."|"."remove_multiple|\n"; + + /* Add Copy & Paste header */ + $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module); + + /* Add snapshot icons */ + $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); + + $this->SetDropDownHeaderMenu($s); + $this->SetListHeader($listhead); + } + + + /* so some basic settings */ + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + + function setEntries($list) + { + /******************** + Variable init + ********************/ + + /* Create links */ + $editlink = "%s"; + $userimg = "User"; + $applimg = "A"; + $empty = ""; + + /* set Page header */ + $action_col_size = 80; + if($this->parent->snapshotEnabled()){ + $action_col_size += 38; + } + + /******************** + Attach objects + ********************/ + + $ui = get_userinfo(); + foreach($list as $key => $val){ + + $acl = $ui->get_permissions($val['dn'],"application/application"); + $acl_all= $ui->has_complete_category_acls($val['dn'],"application"); + + /* Check FAI state + */ + $FAIstate = $val['FAIstate'][0]; + + /* Create action icons */ + $actions= ""; + + /* Add copy & cut functionality */ + if(!preg_match("/freeze/i",$FAIstate)){ + $actions.= $this->parent->get_copypaste_action($val['dn'],"application","application"); + }else{ + $actions.= " "; + $actions.= " "; + } + + /* Add edit icon */ + $actions.= ""; + + /* Add snapshot icon */ + if(!preg_match("/freeze/i",$FAIstate)){ + $actions.= $this->parent->get_snapshot_action($val['dn'],$this->module); + }else{ + $actions.= " "; + $actions.= " "; + } + + + /* If we are allowed to remove the application account, display remove icon */ + if(preg_match("/freeze/i",$FAIstate)){ + $actions .= "!"; + }elseif(preg_match("/d/",$acl)){ + $actions.= ""; + }else{ + $actions.= " "; + } + + $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; + + if(!isset($val['description'][0])){ + $desc = ""; + }else{ + $desc = " - [ ".$val['description'][0]." ]"; + } + + /* Cutted objects should be displayed in light grey */ + $display = $val['cn'][0].$desc; + if($this->parent->CopyPasteHandler){ + foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){ + if($queue_data['dn'] == $val['dn']) { + $display = "".$display.""; + break; + } + } + } + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field1 = array("string" => sprintf($applimg,$val['dn']), "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' ".$title); + $field3 = array("string" => preg_replace("/%KEY%/", $key, $actions), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); + $this->AddElement(array($field0,$field1,$field2,$field3)); + } + + /* Create summary string for list footer */ + $num_deps=0; + if(!$this->SubSearch){ + $num_deps = count($this->Added_Departments); + } + $num_apps = count($list); + + $num_app_str = _("Number of listed applications"); + $num_dep_str = _("Number of listed departments"); + + $str = "".$num_app_str." ".$num_apps."    "; + $str.= "".$num_dep_str." ".$num_deps."    "; + + $this->set_List_Bottom_Info($str); + } + + function Save() + { + MultiSelectWindow::Save(); + } + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow::save_object(); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/applications/generic.tpl b/trunk/gosa-plugins/goto/admin/applications/generic.tpl new file mode 100644 index 000000000..45299fdca --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/generic.tpl @@ -0,0 +1,156 @@ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+{render acl=$cnACL} + +{/render} +
+{render acl=$gosaApplicationNameACL} + +{/render} +
+{render acl=$gosaApplicationExecuteACL} + +{/render} +
+{render acl=$descriptionACL} + +{/render} +
+{render acl=$baseACL} + +{/render} +{if !$isReleaseApplikation} +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} +{/if} +
+
+   + + + + + + +
+ +
+{if $IconReadable} + +{else} + +{/if} +
+  
+ + +{render acl=$gosaApplicationIconACL} + +{/render} +{render acl=$gosaApplicationIconACL} + +{/render} +{render acl=$gosaApplicationIconACL} + +{/render} +
+
+ +

 

+ +

{t}Options{/t} {t}Options{/t}

+ + + + + +
+{render acl=$execForGroupmembersACL} + +{/render} + {t}Only executable for members{/t} +
+{render acl=$overwriteConfigACL} + +{/render} + {t}Replace user configuration on startup{/t} +
+{render acl=$placeOnDesktopACL} + +{/render} + {t}Place icon on members desktop{/t} +
+{render acl=$placeInStartmenuACL} + +{/render} + {t}Place entry in members startmenu{/t} +
+{render acl=$placeOnKickerACL} + +{/render} + {t}Place entry in members launch bar{/t} +
+ +

 

+ + + + + +
+

{t}Script{/t} {t}Script{/t}

+{render acl=$gotoLogonScriptACL} + +{/render} +{render acl=$gotoLogonScriptACL} + +{/render} +{render acl=$gotoLogonScriptACL} + +{/render} + +
+ +
+ + + diff --git a/trunk/gosa-plugins/goto/admin/applications/main.inc b/trunk/gosa-plugins/goto/admin/applications/main.inc new file mode 100644 index 000000000..99a7a72c8 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/main.inc @@ -0,0 +1,63 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('applicationManagement'); +}else{ + + + /* Create applicationManagement object on demand */ + if (!session::is_set('applicationManagement')){ + session::set('applicationManagement',new applicationManagement ($config, $ui)); + } + $applicationManagement = session::get('applicationManagement'); + $applicationManagement->save_object(); + $output= $applicationManagement->execute(); + + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header(get_template_path($applicationManagement->plIcon), _("Application management"), "\"\" ".LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path($applicationManagement->plIcon), _("Application management")); + } + + /* Reset requested? */ + if (isset($_GET['reset']) && $_GET['reset'] == 1){ + session::un_set ('applicationManagement'); + } + + /* Show and save dialog */ + $display.= $output; + session::set('applicationManagement',$applicationManagement); +} + +?> diff --git a/trunk/gosa-plugins/goto/admin/applications/parameters.tpl b/trunk/gosa-plugins/goto/admin/applications/parameters.tpl new file mode 100644 index 000000000..57c221971 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/parameters.tpl @@ -0,0 +1,2 @@ +{$table} +
diff --git a/trunk/gosa-plugins/goto/admin/applications/release_select.tpl b/trunk/gosa-plugins/goto/admin/applications/release_select.tpl new file mode 100644 index 000000000..4a8cee268 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/release_select.tpl @@ -0,0 +1,16 @@ +
+

[F]{t}Branches{/t}

+
+
+ + + + +
+ {t}Current release{/t}  + +
+
+
diff --git a/trunk/gosa-plugins/goto/admin/applications/remove.tpl b/trunk/gosa-plugins/goto/admin/applications/remove.tpl new file mode 100644 index 000000000..7fef781fc --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/remove.tpl @@ -0,0 +1,23 @@ +
+  {t}Warning{/t} +
+

+ {$intro} + {t}This may be used by several groups. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+

+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ {if $multiple} + +   + + {else} + +   + + {/if} +

+ diff --git a/trunk/gosa-plugins/goto/admin/applications/tabs_application.inc b/trunk/gosa-plugins/goto/admin/applications/tabs_application.inc new file mode 100644 index 000000000..4be68a07b --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/applications/tabs_application.inc @@ -0,0 +1,54 @@ +addSpecialTabs(); + } + + function set_FAIstate($state) + { + $this->FAIstate = $state; + foreach($this->by_name as $name => $desc){ + $this->by_object[$name]->FAIstate = $state; + } + } + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['application']; + + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + if($this->parent->IsReleaseManagementActivated()){ + $new_dn= "cn=".$baseobject->cn.",".$this->parent->app_release; + }else{ + $new_dn= "cn=".$baseobject->cn.",".get_ou('applicationRDN').$baseobject->base; + } + + /* Move group? */ + if ($this->dn != $new_dn){ + + /* Write entry on new 'dn' */ + if ($this->dn != "new"){ + $baseobject->move($this->dn, $new_dn); + $this->by_object['application']= $baseobject; + } + + /* Happen to use the new one */ + $this->dn= $new_dn; + } + + tabs::save(); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc b/trunk/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc new file mode 100644 index 000000000..0448b3bde --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/devices/class_deviceGeneric.inc @@ -0,0 +1,273 @@ +is_account = TRUE; + + $this->types= array("camera" => _("Digital camera"), + "disc" => _("USB stick"), + "cdrom" => _("CD/DVD drive"),); + asort($this->types); + + /* Set class values */ + if(isset($this->attrs['gotoHotplugDevice'][0])){ + $tmp = preg_split("/\|/",$this->attrs['gotoHotplugDevice'][0]); + $this->cn = $this->attrs['cn'][0]; + $this->description= $tmp[0]; + $this->devID = $tmp[1]; + $this->serial = $tmp[2]; + $this->vendor = $tmp[3]; + if (isset($tmp[4])){ + $this->type= $tmp[4]; + } + } + + $this->orig_cn = $this->cn; + + /* Set Base */ + if ($this->dn == "new"){ + if(session::is_set('CurrentMainBase')){ + $this->base = session::get('CurrentMainBase'); + }else{ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } + } else { + $this->base =preg_replace ("/^[^,]+,".get_ou('deviceRDN')."/","",$this->dn); + } + $this->orig_base = $this->base; + $this->orig_dn = $this->dn; + } + + + public function execute() + { + $smarty = get_smarty(); + $smarty->assign("base",$this->base); + $smarty->assign("bases",$this->get_allowed_bases()); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $attr => $desc){ + $smarty->assign($attr."ACL", $this->getacl($attr)); + } + + $smarty->assign("type",$this->type); + $smarty->assign ("types", $this->types); + return($smarty->fetch(get_template_path("deviceGeneric.tpl",TRUE,dirname(__FILE__)))); + } + + + public function check() + { + $message = plugin::check(); + + if($this->cn == "" ||(preg_match("/[^a-z0-9]/i",$this->cn))){ + $message[]= msgPool::invalid(_("Name"),$this->cn,"/^[a-z0-9]*$/i"); + } + if(preg_match("/[^a-z0-9!\"?.,;:-_\(\) ]/i",$this->description)){ + $message[]= msgPool::invalid(_("Description"),$this->cn,"/^[a-z0-9!\"?.,;:-_\(\) ]*$/i"); + } + + /* Skip serial check if vendor and product id are given */ + if(preg_match("/^\s+$/i",$this->devID)){ + $message[]= msgPool::invalid(_("iSerial"),"","01234"); + }elseif(empty($this->devID) && $this->devID!="0"){ + $message[]= msgPool::required(_("iSerial")); + } + if(empty($this->serial) || !$this->is_2byteHex($this->serial)){ + $message[]= msgPool::invalid(_("Serial"),"","","0x1234"); + } + if(empty($this->vendor) || !$this->is_2byteHex($this->vendor)){ + $message[]= msgPool::invalid(_("Vendor ID"),"","","0x1234"); + } + + /* Check if entry already exists */ + if($this->cn != $this->orig_cn || $this->dn == "new"){ + $ldap = $this->config->get_ldap_link(); + $ldap->search("(&(objectClass=gotoDevice)(cn=".$this->cn."*))",array("cn")); + if($ldap->count()){ + $message[]= msgPool::duplicated(_("Name")); + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return($message); + } + + + public function save_object() + { + if(isset($_POST['deviceGeneric_posted'])){ + plugin::save_object(); + + if(isset($_POST['base'])){ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[get_post("base")])){ + $this->base = get_post("base"); + } + } + } + } + + + public function remove_from_parent() + { + plugin::remove_from_parent(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + $ldap->search("(&(objectClass=gotoEnvironment)(gotoHotplugDeviceDN=".$this->dn."))",array("cn","gotoHotplugDeviceDN")); + $skip = FALSE; + $obj = array(); + while($attrs = $ldap->fetch()){ + $obj[$ldap->getDN()]= $attrs['cn'][0]; + $skip =TRUE; + } + if($skip){ + msg_dialog::display(_("Error"), msgPool::stillInUse(_("Device"), $obj), INFO_DIALOG); + }else{ + $ldap->rmdir_recursive($this->dn); + } + } + + + public function save() + { + plugin::save(); + + /* Unset non ldap attributes + */ + foreach(array("devID","serial","vendor", "type", "description") as $name){ + if(isset($this->attrs[$name])){ + unset($this->attrs[$name]); + } + } + + $this->attrs['gotoHotplugDevice'] = ""; + foreach(array("description","devID","serial","vendor", "type") as $post){ + $this->attrs['gotoHotplugDevice'] .= $this->$post."|"; + } + $this->attrs['gotoHotplugDevice'] = preg_replace("/\|$/","",$this->attrs['gotoHotplugDevice']); + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($this->dn); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->create_missing_trees(preg_replace("/^[^,]+,/","",$this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + + /* check if given str in like this 0xffff*/ + function is_2byteHex($str) + { + return !strlen($str) || preg_match("/^(0x|x|)[a-f0-9][a-f0-9][a-f0-9][a-f0-9]/i",$str); + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + $source_o = new deviceGeneric($this->config,$source['dn']); + foreach($this->CopyPasteVars as $post){ + $this->$post = $source_o->$post; + } + } + + + /* Return a dialog with all fields that must be changed, + if we want to copy this entry */ + function getCopyDialog() + { + $str = ""; + $smarty = get_smarty(); + $smarty->assign("cn", $this->cn); + $str = $smarty->fetch(get_template_path("paste_deviceGeneric.tpl",TRUE,dirname(__FILE__))); + + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + /* Save all */ + function saveCopyDialog() + { + $attrs = array("cn"); + foreach($attrs as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + } + + + + /* Return plugin informations for acl handling */ + public static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Device generic")." ("._("Hotplug").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("devices" => array("description" => _("Devices"), + "objectClass" => "gotoHotplugDevice")), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "base" => _("Base"), + "description" => _("Description"), + "type" => _("Type"), + "serial" => _("Serial"), + "vendor" => _("Vendor"), + "devID" => _("Device ID")) + )); + + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/devices/class_deviceManagement.inc b/trunk/gosa-plugins/goto/admin/devices/class_deviceManagement.inc new file mode 100644 index 000000000..1acd7d6fa --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/devices/class_deviceManagement.inc @@ -0,0 +1,599 @@ +ui = get_userinfo(); + + /* Check if copy & paste is activated */ + if($this->config->get_cfg_value("copyPaste") == "true"){ + $this->CopyPasteHandler = new CopyPasteHandler($this->config); + } + + /* Creat dialog object */ + $this->DivListDevices = new divListDevices($this->config,$this); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /**************** + Variable init + ****************/ + + /* These vars will be stored if you try to open a locked device, + to be able to perform your last requests after showing a warning message */ + session::set('LOCK_VARS_TO_USE',array("/^act$/","/^id$/","/^device_edit_/","/^menu_action/", + "/^device_del_/","/^item_selected/","/^remove_multiple_devices/")); + + $smarty = get_smarty(); // Smarty instance + $s_action = ""; // Contains the action to proceed + $s_entry = ""; // The value for s_action + $base_back = ""; // The Link for Backbutton + + /* Test Posts */ + foreach($_POST as $key => $val){ + + if(preg_match("/device_del.*/",$key)){ + $s_action = "del"; + $s_entry = preg_replace("/device_".$s_action."_/i","",$key); + }elseif(preg_match("/device_edit_.*/",$key)){ + $s_action="edit"; + $s_entry = preg_replace("/device_".$s_action."_/i","",$key); + }elseif(preg_match("/^copy_.*/",$key)){ + $s_action="copy"; + $s_entry = preg_replace("/^copy_/i","",$key); + }elseif(preg_match("/^cut_.*/",$key)){ + $s_action="cut"; + $s_entry = preg_replace("/^cut_/i","",$key); + }elseif(preg_match("/^device_new.*/",$key)){ + $s_action="new"; + }elseif(preg_match("/^remove_multiple_devices/",$key)){ + $s_action="del_multiple"; + }elseif(preg_match("/^editPaste.*/i",$key)){ + $s_action="editPaste"; + }elseif(preg_match("/^multiple_copy_devices/",$key)){ + $s_action = "copy_multiple"; + }elseif(preg_match("/^multiple_cut_devices/",$key)){ + $s_action = "cut_multiple"; + } + } + + if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ + $s_action ="edit"; + $s_entry = $_GET['id']; + } + + $s_entry = preg_replace("/_.$/","",$s_entry); + + + /* handle C&P from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ + $s_action = "copy_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){ + $s_action = "cut_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){ + $s_action = "editPaste"; + } + + /* Create options */ + if(isset($_POST['menu_action']) && $_POST['menu_action'] == "device_new"){ + $s_action = "new"; + } + + /* handle remove from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){ + $s_action = "del_multiple"; + } + + /**************** + Copy & Paste handling + ****************/ + + /* Display the copy & paste dialog, if it is currently open */ + $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); + if($ret){ + return($ret); + } + + /**************** + Create a new device type + ****************/ + + /* New device type? */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->DivListDevices->selectedBase,"devices/deviceGeneric"); + if (($s_action=="new") && preg_match("/c/",$acl)){ + + /* By default we set 'dn' to 'new', all relevant plugins will + react on this. */ + $this->dn= "new"; + + /* Create new usertab object */ + $this->devicetabs= new devicetabs($this->config, $this->config->data['TABS']['DEVICETABS'], $this->dn,"devices"); + $this->devicetabs->set_acl_base($this->DivListDevices->selectedBase); + } + + + /**************** + Edit entry canceled + ****************/ + + /* Cancel dialogs */ + if (isset($_POST['edit_cancel']) && is_object($this->devicetabs)){ + $this->remove_lock(); + $this->devicetabs= NULL; + set_object_info(); + } + + + /**************** + Edit entry finished + ****************/ + + /* Finish device edit is triggered by the tabulator dialog, so + the user wants to save edited data. Check and save at this point. */ + if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply']) ) && (isset($this->devicetabs->config))){ + + /* Check tabs, will feed message array */ + $this->devicetabs->save_object(); + $message= $this->devicetabs->check(); + + /* Save, or display error message? */ + if (count($message) == 0){ + + /* Save data data to ldap */ + $this->devicetabs->save(); + + if (!isset($_POST['edit_apply'])){ + + /* device type has been saved successfully, remove lock from LDAP. */ + if ($this->dn != "new"){ + $this->remove_lock(); + } + unset ($this->devicetabs); + $this->devicetabs= NULL; + set_object_info(); + }else{ + + /* Reinitialize tab */ + if($this->devicetabs instanceof tabs){ + $this->devicetabs->re_init(); + } + } + } else { + /* Ok. There seem to be errors regarding to the tab data, + show message and continue as usual. */ + msg_dialog::displayChecks($message); + } + } + + + /**************** + Edit entry + ****************/ + + /* User wants to edit data? */ + if (($s_action=="edit") && (!isset($this->devicetabs->config))){ + + /* Get 'dn' from posted 'devicelist', must be unique */ + $this->dn= $this->devices[$s_entry]['dn']; + + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return(gen_locked_message ($user, $this->dn,TRUE)); + } + + /* Lock the current entry, so everyone will get the + above dialog */ + add_lock ($this->dn, $this->ui->dn); + + + /* Register devicetabs to trigger edit dialog */ + $this->devicetabs= new devicetabs($this->config,$this->config->data['TABS']['DEVICETABS'], $this->dn,"devices"); + $this->devicetabs->set_acl_base($this->dn); + set_object_info($this->dn); + } + + + /******************** + Delete MULTIPLE entries requested, display confirm dialog + ********************/ + if ($s_action=="del_multiple"){ + $ids = $this->list_get_selected_items(); + + if(count($ids)){ + + $disallowed = array(); + foreach($ids as $id){ + $dn = $this->devices[$id]['dn']; + $acl = $this->ui->get_permissions($dn, "devices/deviceGeneric"); + if(preg_match("/d/",$acl)){ + $this->dns[$id] = $dn; + }else{ + $disallowed[] = $dn; + } + } + + if(count($disallowed)){ + msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); + } + + if(count($this->dns)){ + + /* Check locks */ + if ($user= get_multiple_locks($this->dns)){ + return(gen_locked_message($user,$this->dns)); + } + + $dns_names = array(); + foreach($this->dns as $dn){ + $dns_names[] =LDAP::fix($dn); + } + add_lock ($this->dns, $this->ui->dn); + + /* Lock the current entry, so nobody will edit it during deletion */ + $smarty->assign("intro", msgPool::deleteInfo($dns_names),_("device")); + $smarty->assign("multiple", true); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + /******************** + Delete MULTIPLE entries confirmed + ********************/ + + /* Confirmation for deletion has been passed. Users should be deleted. */ + if (isset($_POST['delete_multiple_device_confirm'])){ + + $ui = get_userinfo(); + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + + $acl = $ui->get_permissions($dn,"devices/deviceGeneric"); + if(preg_match("/d/",$acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->devicetabs= new devicetabs($this->config, $this->config->data['TABS']['DEVICETABS'], $dn,"devices"); + $this->devicetabs->set_acl_base($dn); + $this->devicetabs->delete (); + unset ($this->devicetabs); + $this->devicetabs= NULL; + + } else { + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); + new log("security","devices/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /******************** + Delete MULTIPLE entries Canceled + ********************/ + + /* Remove lock */ + if(isset($_POST['delete_multiple_device_cancel'])){ + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /**************** + Delete device type + ****************/ + + /* Remove user was requested */ + if ($s_action == "del"){ + + /* Get 'dn' from posted 'uid' */ + $this->dn= $this->devices[$s_entry]['dn']; + + /* Load permissions for selected 'dn' and check if + we're allowed to remove this 'dn' */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->dn,"devices/deviceGeneric"); + if (preg_match("/d/",$acl)){ + + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return (gen_locked_message ($user, $this->dn)); + } + + /* Lock the current entry, so nobody will edit it during deletion */ + add_lock ($this->dn, $this->ui->dn); + $smarty= get_smarty(); + $smarty->assign("intro", msgPool::deleteInfo(LDAP::fix($this->dn),_("device"))); + $smarty->assign("multiple", false); + return($smarty->fetch (get_template_path('remove.tpl', TRUE))); + } else { + + /* Obviously the user isn't allowed to delete. Show message and + clean session. */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); + } + } + + + /**************** + Delete device confirmed + ****************/ + + /* Confirmation for deletion has been passed. Group should be deleted. */ + if (isset($_POST['delete_device_confirm'])){ + + /* Some nice guy may send this as POST, so we've to check + for the permissions again. */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->dn,"devices/deviceGeneric"); + if(preg_match("/d/",$acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->devicetabs= new devicetabs($this->config, $this->config->data['TABS']['DEVICETABS'], $this->dn,"devices"); + $this->devicetabs->set_acl_base($this->dn); + $this->devicetabs->delete (); + unset ($this->devicetabs); + $this->devicetabs= NULL; + + } else { + + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); + new log("security","devices/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /**************** + Delete device canceled + ****************/ + + /* Delete device canceled? */ + if (isset($_POST['delete_cancel'])){ + $this->remove_lock(); + set_object_info(); + } + + /* Show tab dialog if object is present */ + if (($this->devicetabs) && (isset($this->devicetabs->config))){ + $display= $this->devicetabs->execute(); + + /* Don't show buttons if tab dialog requests this */ + + if(($this->devicetabs instanceOf tabs || $this->devicetabs instanceOf plugin) && $this->devicetabs->read_only == TRUE){ + $display.= "

+ +

"; + }elseif (!$this->devicetabs->by_object[$this->devicetabs->current]->dialog){ + $display.= "

\n"; + $display.= "\n"; + $display.= " \n"; + if ($this->dn != "new"){ + $display.= "\n"; + $display.= " \n"; + } + $display.= "\n"; + $display.= "

"; + } + return ($display); + } + + + /**************** + Dialog display + ****************/ + + /* Check if there is a snapshot dialog open */ + $base = $this->DivListDevices->selectedBase; + if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + /* Display dialog with system list */ + $this->DivListDevices->parent = $this; + $this->DivListDevices->execute(); + $this->DivListDevices->AddDepartments($this->DivListDevices->selectedBase,3,1); + $this->reload(); + $this->DivListDevices->setEntries($this->devices); + return($this->DivListDevices->Draw()); + + } + + function save_object() { + $this->DivListDevices->save_object(); + if(is_object($this->CopyPasteHandler)){ + $this->CopyPasteHandler->save_object(); + } + } + + + /* Return departments, that will be included within snapshot detection */ + function get_used_snapshot_bases() + { + return(array(get_ou('deviceRDN').$this->DivListDevices->selectedBase)); + } + + function copyPasteHandling_from_queue($s_action,$s_entry) + { + /* Check if Copy & Paste is disabled */ + if(!is_object($this->CopyPasteHandler)){ + return(""); + } + + $ui = get_userinfo(); + + /* Add a single entry to queue */ + if($s_action == "cut" || $s_action == "copy"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + $dn = $this->devices[$s_entry]['dn']; + if($s_action == "copy" && $ui->is_copyable($dn,"devices","deviceGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"devicetabs","DEVICETABS","devices"); + } + if($s_action == "cut" && $ui->is_cutable($dn,"devices","deviceGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"devicetabs","DEVICETABS","devices"); + } + } + + /* Add entries to queue */ + if($s_action == "copy_multiple" || $s_action == "cut_multiple"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + + /* Add new entries to CP queue */ + foreach($this->list_get_selected_items() as $id){ + $dn = $this->devices[$id]['dn']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,"devices","deviceGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,"copy","devicetabs","DEVICETABS","devices"); + } + if($s_action == "cut_multiple" && $ui->is_cutable($dn,"devices","deviceGeneric")){ + $this->CopyPasteHandler->add_to_queue($dn,"cut","devicetabs","DEVICETABS","devices"); + } + } + } + + /* Start pasting entries */ + if($s_action == "editPaste"){ + $this->start_pasting_copied_objects = TRUE; + } + + /* Return C&P dialog */ + if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ + + /* Get dialog */ + $this->CopyPasteHandler->SetVar("base",$this->DivListDevices->selectedBase); + $data = $this->CopyPasteHandler->execute(); + + /* Return dialog data */ + if(!empty($data)){ + return($data); + } + } + + /* Automatically disable status for pasting */ + if(!$this->CopyPasteHandler->entries_queued()){ + $this->start_pasting_copied_objects = FALSE; + } + return(""); + } + + + + function reload() + { + /* Set base for all searches */ + $base = $this->DivListDevices->selectedBase; + $Regex = $this->DivListDevices->Regex; + $SubSearch = $this->DivListDevices->SubSearch; + $Flags = GL_NONE | GL_SIZELIMIT; + $Filter = "(&(|(cn=".$Regex.")(description=".$Regex."))(objectClass=gotoDevice))"; + $tmp = array(); + + /* In case of subsearch, add the subsearch flag */ + if($SubSearch){ + $Flags |= GL_SUBSEARCH; + }else{ + $base = get_ou('deviceRDN').$base; + } + + /* Get results and create index */ + $res= get_sub_list($Filter,"devices",get_ou('deviceRDN'), $base, array("cn","gotoHotplugDevice","description","dn","objectClass"), $Flags); + $tmp2 = array(); + foreach ($res as $val){ + if (!isset($val['description']) && isset($val['gotoHotplugDevice'][0])) { + $dsc= preg_replace("/\|.*$/", "", $val['gotoHotplugDevice'][0]); + if ($dsc != ""){ + $val['description']= array("count" => 1, 0 => $dsc); + } + } + $tmp2[strtolower($val['cn'][0]).$val['cn'][0].$val['dn']] = strtolower($val['cn'][0]).$val['cn'][0].$val['dn']; + $tmp[strtolower($val['cn'][0]).$val['cn'][0].$val['dn']]=$val; + } + + /* sort entries */ + natcasesort($tmp2); + $this->devices=array(); + foreach($tmp2 as $val){ + $this->devices[]=$tmp[$val]; + } + reset ($this->devices); + } + + + function remove_lock() + { + if (isset($this->dn) && !empty($this->dn)){ + del_lock ($this->dn); + } + if(isset($this->dns) && is_array($this->dns) && count($this->dns)){ + del_lock ($this->dns); + } + } + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + + function remove_from_parent() + { + /* This cannot be removed... */ + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/devices/class_divListDevices.inc b/trunk/gosa-plugins/goto/admin/devices/class_divListDevices.inc new file mode 100644 index 000000000..c4c11b25a --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/devices/class_divListDevices.inc @@ -0,0 +1,229 @@ +parent = &$parent; + $this->ui = get_userinfo(); + + /* set Page header */ + $action_col_size = 80; + if($this->parent->snapshotEnabled()){ + $action_col_size += 38; + } + + /* Set list strings */ + $this->SetTitle (_("List of defined devices")); + $this->SetSummary (_("List of defined devices")); + + /* Result page will look like a headpage */ + $this->SetHeadpageMode(); + $this->EnableAplhabet(true); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* Toggle all selected / deselected */ + $chk = ""; + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); + $this->AddHeader(array("string" => _("Device name")." / "._("Department"), "attach" => "style=''")); + $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'")); + + /* Add SubSearch checkbox */ + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name ,Text ,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Display devices matching"),"*" , true); + } + + + /* Create list header, with create / copy & paste etc*/ + function GenHeader() + { + /* Get all departments within this subtree */ + $ui= get_userinfo(); + $first = ""; + $found = FALSE; + $base = $this->config->current['BASE']; + $options = $this->create_department_list($this->module); + + /* Get acls */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->selectedBase,"devices/deviceGeneric"); + $acl_all = $ui->has_complete_category_acls($this->selectedBase,"devices") ; + + + /* If this is true we add an additional seperator. Just look a few lines below */ + $listhead = MultiSelectWindow::get_default_header(); + + /* And at least add a department selection box */ + $listhead .= _("Base")." ". + "  "; + + /* Create Layers menu */ + $s = ".|"._("Actions")."|\n"; + + /* Append create options */ + if(preg_match("/c/",$acl)) { + $s .= "..|". + " "._("Create")."|\n"; + $s.= "...|". + " "._("Device")."|device_new|\n"; + $s.= "..|---|\n"; + } + + /* Multiple options */ + $s.= "..|". + " "._("Remove")."|"."remove_multiple|\n"; + + /* Add Copy & Paste header */ + $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module); + + /* Add snapshot icons */ + $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); + + $this->SetDropDownHeaderMenu($s); + + $this->SetListHeader($listhead); + } + + + /* Some basic settings */ + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + + function setEntries($list) + { + /******************** + Variable init + ********************/ + + /* Create links */ + $editlink = "%s"; + $userimg = "User"; + $deviceimg = "A"; + $empty = ""; + + /* set Page header */ + $action_col_size = 80; + if($this->parent->snapshotEnabled()){ + $action_col_size += 38; + } + + /******************** + Attach objects + ********************/ + + foreach($list as $key => $val){ + + $ui = get_userinfo(); + $acl = $ui->get_permissions($val['dn'],"devices/deviceGeneric"); + $acl_all = $ui->has_complete_category_acls($val['dn'],"devices") ; + + $actions = ""; + + /* Add copy & cut functionality */ + $actions.= $this->parent->get_copypaste_action($val['dn'],"devices","deviceGeneric"); + + $actions.= ""; + + $actions.= $this->parent->get_snapshot_action($val['dn'],$this->module); + + /* Add delete button */ + if(preg_match("/d/",$acl)){ + $actions.= ""; + }else{ + $actions.= " "; + } + + $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; + + if(!isset($val['description'][0])){ + $desc = ""; + }else{ + $desc = " - [ ".$val['description'][0]." ]"; + } + + /* Cutted objects should be displayed in light grey */ + $display = $val['cn'][0].$desc; + if($this->parent->CopyPasteHandler){ + foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){ + if($queue_data['dn'] == $val['dn']) { + $display = "".$display.""; + break; + } + } + } + + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field1 = array("string" => sprintf($deviceimg,$val['dn']), "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' ".$title); + $field3 = array("string" => preg_replace("/%KEY%/", $key, $actions), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); + $this->AddElement(array($field0,$field1,$field2,$field3)); + } + + + /* Create summary string for list footer */ + $num_deps=0; + if(!$this->SubSearch){ + $num_deps = count($this->Added_Departments); + } + $num_objs = count($list); + + $num_obj_str = _("Number of listed devices"); + $num_dep_str = _("Number of listed departments"); + + $str = "".$num_obj_str." ".$num_objs."    "; + $str.= "".$num_dep_str." ".$num_deps."    "; + + $this->set_List_Bottom_Info($str); + } + + function Save() + { + MultiSelectWindow::Save(); + } + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow::save_object(); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/devices/deviceGeneric.tpl b/trunk/gosa-plugins/goto/admin/devices/deviceGeneric.tpl new file mode 100644 index 000000000..294dddbe8 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/devices/deviceGeneric.tpl @@ -0,0 +1,89 @@ + +

{t}Devices{/t}

+ + + + +
+ + + + + + + + + + + + + + + + + +
+ +{render acl=$baseACL} + +{/render} +
{$must} + +{render acl=$cnACL} + +{/render} +
+ +{render acl=$descriptionACL} + +{/render} +
+ +{render acl=$typeACL} + +{/render} +
+
+ + + + + + + + + + + + + + +
{$must} + +{render acl=$devIDACL} + +{/render} +  
{$must} + +{render acl=$vendorACL} + +{/render} +
{$must} + +{render acl=$serialACL} + +{/render} +
+
+ + + + diff --git a/trunk/gosa-plugins/goto/admin/devices/main.inc b/trunk/gosa-plugins/goto/admin/devices/main.inc new file mode 100644 index 000000000..dd9d451fd --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/devices/main.inc @@ -0,0 +1,64 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('DeviceManagement'); +}else{ + + /* Create DeviceManagement object on demand */ + if (!session::is_set('DeviceManagement')){ + session::set('DeviceManagement',new deviceManagement ($config)); + } + + /* Get object */ + $DeviceManagement = session::get('DeviceManagement'); + $DeviceManagement->save_object(); + $output= $DeviceManagement->execute(); + + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header(get_template_path($DeviceManagement->plIcon), _("Hotplug device management"), "\"\" ".LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path($DeviceManagement->plIcon), _("Hotplug device management")); + } + + /* Reset requested? */ + if (isset($_GET['reset']) && $_GET['reset'] == 1){ + session::un_set ('DeviceManagement'); + } + + /* Show and save dialog */ + $display.= $output; + session::set('DeviceManagement',$DeviceManagement); +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/devices/paste_deviceGeneric.tpl b/trunk/gosa-plugins/goto/admin/devices/paste_deviceGeneric.tpl new file mode 100644 index 000000000..44d688246 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/devices/paste_deviceGeneric.tpl @@ -0,0 +1,25 @@ + +

{t}Devices{/t}

+ + + + +
+ + + + + +
{$must} + + +
+
+ + + + diff --git a/trunk/gosa-plugins/goto/admin/devices/remove.tpl b/trunk/gosa-plugins/goto/admin/devices/remove.tpl new file mode 100644 index 000000000..10f738a38 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/devices/remove.tpl @@ -0,0 +1,23 @@ +
+  {t}Warning{/t} +
+

+ {$intro} + {t}This may be used by several users/groups. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+

+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ {if $multiple} + +   + + {else} + +   + + {/if} +

+ diff --git a/trunk/gosa-plugins/goto/admin/devices/tabs_devices.inc b/trunk/gosa-plugins/goto/admin/devices/tabs_devices.inc new file mode 100644 index 000000000..f6664a16f --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/devices/tabs_devices.inc @@ -0,0 +1,38 @@ +addSpecialTabs(); + } + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['deviceGeneric']; + $new_dn= "cn=".$baseobject->cn.",".get_ou('deviceRDN').$baseobject->base; + + /* Move group? */ + if ($this->dn != $new_dn){ + + /* Write entry on new 'dn' */ + if ($this->dn != "new"){ + $baseobject->move($this->dn, $new_dn); + $this->by_object['deviceGeneric']= $baseobject; + } + + /* Happen to use the new one */ + $this->dn= $new_dn; + } + + tabs::save(); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/groups/apps/app_list.tpl b/trunk/gosa-plugins/goto/admin/groups/apps/app_list.tpl new file mode 100644 index 000000000..14be6bc36 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/groups/apps/app_list.tpl @@ -0,0 +1,163 @@ + + {if $enableReleaseManagement} + + + + {/if} + + + + +
+ {t}Release{/t} + + + {if $copied} + + {else} + + {/if} + +
+
+ + +{foreach from=$entries item=item key=key} + {if $item.TYPE == "OPEN"} + + + + + + + + + + {elseif $item.TYPE == "RELEASE"} + { if $i++ % 2 == 0} + + {else} + + {/if} + + + + + {elseif $item.TYPE == "FOLDER"} + { if $i++ % 2 == 0} + + {else} + + {/if} + + + + + {elseif $item.TYPE == "SEPERATOR"} + + { if $i++ % 2 == 0} + + {else} + + {/if} + + + + {elseif $item.TYPE == "ENTRY"} + + { if $i++ % 2 == 0} + + {else} + + {/if} + + + + + {/if} +{/foreach} +
+ + + {elseif $item.TYPE == "CLOSE"} +
+
+ {t}Release{/t} + + {$item.NAME} + +
+ {if $item.ICON != ""} +
+ {t}Folder{/t} +
+ {else} +
+ {t}Folder{/t} +
+ {/if} +
+ {$item.NAME}  + + + + + +
+
+
+ + + +  +
+
+ {t}Entry{/t} +
+
+ {$item.NAME} {$item.INFO} + + + + + +
+
+ + {t}add to{/t} + + + +
+ {$app_list} + + +
+ diff --git a/trunk/gosa-plugins/goto/admin/groups/apps/class_groupApplication.inc b/trunk/gosa-plugins/goto/admin/groups/apps/class_groupApplication.inc new file mode 100644 index 000000000..a6cb616bb --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/groups/apps/class_groupApplication.inc @@ -0,0 +1,1447 @@ +dn = $dn; + $this->_load_menu_structure(); + $this->a_Structure_on_load = $this->a_Structure; + + /* Check if we have relase mangement enabled and prepare group application for release management */ + $tmp = $config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + $this->enableReleaseManagement = true; + } + + $this->Releases = $this->getReleases(); + + /* Set intial release */ + $this->FAIrelease = $config->search("faiManagement","DEFAULTFAIRELEASE",array("menu")); + if(empty($this->FAIrelease) || !isset($this->Releases[$this->FAIrelease])){ + $this->FAIrelease = "/"; + } + + $this->curbase = $this->config->current['BASE']; + $this->reload(); + + /* If we have at least one assigned application- + Enable this account. + */ + $this->is_account = FALSE; + if(count($this->_get_all_entries()) > 1){ + $this->is_account= TRUE; + } + $this->initially_was_account = $this->is_account; + } + + + /*! \brief Reload the list of applications for the currently selected release. + If necessary, maybe the list is already cached. + */ + function reload() + { + $ret = array(); + $release_info = $this->Releases[$this->FAIrelease]; + + /* Check if the available application were already been fetched. + If not, build up a list of available applications. + */ + if(!isset($this->_cache['ReleaseApps'][$release_info['suffix']])){ + + /* First of all, get all application departments to search in. + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("ou=apps",array("dn")); + $app_deps = array(); + while($attrs = $ldap->fetch()){ + $app_deps[] = $attrs['dn']; + } + + /* Search all release departments for the above fetched application departments + */ + foreach($app_deps as $dep){ + $ldap->cd($dep); + $ldap->search("objectClass=FAIbranch",array("dn")); + while($attrs = $ldap->fetch()){ + $app_deps[] = $attrs['dn']; + } + } + + /* Filter out those releases that match the currently selected release, + and fetch all applications from those departments. + */ + foreach($app_deps as $dep){ + if(preg_match("/^".preg_quote($release_info['suffix'], '/')."/",$dep)){ + $ret = array_merge($ret,get_list("(objectClass=gosaApplication)","application",$dep,array("*"),GL_NONE)); + } + } + + /* Create a new array containing all fetch apps for the currently selected release, + sort it and store results in cache. + */ + $tmp = array(); + foreach($ret as $key => $app){ + $tmp[$key] = $app['cn'][0]; + } + natcasesort($tmp); + $res = array(); + foreach($tmp as $key => $app){ + $res[] = $ret[$key]; + } + + $this->_cache['ReleaseApps'][$release_info['suffix']] = $res; + } + $this->apps = $this->_cache['ReleaseApps'][$release_info['suffix']]; + } + + + + /*! \brief generate a list of available releases + @return return an array with all available releases. + + e.g. + + / "name" / + "found" 1 + "parts" Array (empty) + "suffix" ou=apps, + + halut "name" halut + "found" 1 + "FAIstate" + "dn" ou=halut,ou=apps,ou=Direktorium,o=Landeshauptstadt München,c=de + "parts" 0 halut + "suffix" ou=halut,ou=apps, + + This will be used as base for the application menu structure. + If there is a menu assigned for a release, this menu will be + appended with the index 'ENTRIES'; + */ + function getReleases() + { + $ret =array("/" => array("name" => "/", "found" => TRUE , "parts" => array(),"suffix" => get_ou('applicationRDN'))); + if($this->enableReleaseManagement){ + + /* Only display those releases that we are able to read + */ + $dn = get_ou("applicationRDN").$this->config->current['BASE']; + $filter = "(&(objectClass=organizationalUnit)(objectClass=FAIbranch))"; + $res = get_sub_list($filter,array("application","fai"), + array(get_ou("applicationRDN"),get_ou("faiBaseRDN")),$dn, array("ou","FAIstate"), GL_SUBSEARCH); + + /* Go through all departments and check which department is a valid + department release. + */ + foreach($res as $attrs){ + if(preg_match("/".get_ou('applicationRDN')."/",$attrs['dn'])){ + + /* Parse all returned departments dns into a useable type. + (ou=1.0.0,ou=halut,ou=apps ==> halue/1.0.0) + */ + $bb = preg_replace("/".get_ou('applicationRDN').".*/","",$attrs['dn']); + $parts = array_reverse(split("ou=",$bb)); + + $str =""; + foreach($parts as $key => $part){ + if(empty($part)) { + unset($parts[$key]); + continue; + } + $part = str_replace(",","",$part); + $str .= $part."/"; + $parts[$key] = $part; + } + $name = preg_replace("/\/$/","",$str); + if(empty($name)) { + $name ="/"; + } + + $FAIstate = ""; + if(isset($attrs['FAIstate'])){ + $FAIstate = $attrs['FAIstate'][0]; + } + + /* Check if this department has a menu structure assigned + */ + $all = $this->_get_all_entries(); + $found = FALSE; + foreach($all as $entry){ + if(isset($entry['DN']) && preg_match("/^".preg_quote($bb, '/')."/",$entry['DN'])){ + $found =TRUE; + break; + } + } + + $ret[$name] = array("name" => $name, + "found" => $found, + "FAIstate" => $FAIstate, + "dn" => $attrs['dn'], + "parts" => $parts,"suffix" => $bb.get_ou('applicationRDN')); + } + } + } + ksort($ret); + return($ret); + } + + + /*! \brief Load the menu structure from ldap and create a multi dimensional array. + + This will create a multidimensional array. + e.g.: + + $this->a_Structure = + + [0]['TYPE'] = "BASE" + [0]['ENTRIES'] [0]['TYPE'] = "RELEASE" + [0]['NAME'] = "halut" + [0]['ENTRIES']= array() + ... + [0]['ENTRIES'] [1]['TYPE'] = "RELEASE" + [1]['NAME'] = "halut/1.0.0" + [1]['ENTRIES'] [0]['TYPE'] = "TYPE" + [0]['NAME'] = "Programme" + [0]['ENTRIES'][0]['TYPE'] = "ENTRY" + [0]['NAME'] = "konqueror" + [1]['TYPE'] = "ENTRY" + [1]['NAME'] = "firefox" + */ + function _load_menu_structure() + { + /* Create the base object + */ + $base = array(); + $base['UNIQID'] = uniqid(); + $base['PARENT'] = 0; + $base['NAME'] = ""; + $base['TYPE'] = "BASE"; + $base['ENTRIES']= array(); + $base['STATUS'] = "LOADED"; + + $this->a_Structure = array(); + $this->a_Structure[0] = $base; + + /* Search for all Releases/Menu Folders and Menu Entries, + to append them to our structure array. + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->search("(|(objectClass=gotoSubmenuEntry)(objectClass=FAIbranch)(objectClass=gotoMenuEntry))",array("*")); + while($attrs = $ldap->fetch()){ + + /* Find the correct position where to add this entry. + e.g. If we have cn=firefox,cn=Programme,ou=halut... + + 1. get a pointer to the halut array ($this->a_Structure['0'][ENTRIES''][]['halut']) + 2. then get a pointer to the halut['ENTRIES'][]['Programme'] array. + 3. append 'firefox' to the 'ENTRIES' of our "Programme" pointer. + */ + $cur = &$this->a_Structure[0]['ENTRIES']; + $parent_id = $base['UNIQID']; + $sub_dn = preg_replace("/,".preg_quote($this->dn, '/')."$/","",$attrs['dn']); + $sub_dn_array = split("\,",$sub_dn); + + /* Walk through our menu structure array while we have found + the correct position where to add this object. + */ + $found = true; + for($i = (count($sub_dn_array)-1) ; $i >= 0 ; $i--){ + $name = preg_replace("/^[^=]*+=/","",$sub_dn_array[$i]); + + /* We haven't found the end node where this object has to be added + */ + if($i > 0){ + $found =FALSE; + foreach($cur as $key => $entry){ + if($entry['NAME'] == $name){ + $cur = &$cur[$key]['ENTRIES']; + $parent_id = $entry['UNIQID']; + $found =true; + break; + } + } + }else{ + + if(!$found){ + break; + } + + /* Get application priority. + And ensure that each priority exists once. + */ + $priority = 1; + if(isset($attrs['gosaApplicationPriority'])){ + $priority= $attrs['gosaApplicationPriority'][0]; + } + while(isset($cur[$priority])){ + $priority ++; + } + + /* Create the data object that should be added + * Folder + * Entry + * Release + */ + $data = array(); + + /* Add a menu folder + */ + if(in_array("gotoSubmenuEntry",$attrs['objectClass'])){ + $type = "FOLDER"; + + $data['ICON'] = ""; + if(isset($attrs['gosaApplicationIcon'])){ + $data['ICON'] = $ldap->get_attribute($attrs['dn'],"gosaApplicationIcon"); + } + + /* Add a menu entry + */ + }elseif(in_array("gotoMenuEntry",$attrs['objectClass'])){ + + $type = "ENTRY"; + $data['INFO'] = ""; + $data['PARAMETER'] = array(); + if(isset($attrs['gosaApplicationParameter'])){ + for($p = 0 ; $p < $attrs['gosaApplicationParameter']['count'] ; $p ++){ + if(preg_match("/:/",$attrs['gosaApplicationParameter'][$p])){ + $tmp = split(":",$attrs['gosaApplicationParameter'][$p]); + $data['PARAMETER'][$tmp[0]] = preg_replace('/^[^:]+:/', '', $attrs['gosaApplicationParameter'][$p]); + }elseif($attrs['gosaApplicationParameter'][$p] == "*separator*"){ + $type = "SEPERATOR"; + $data['PARAMETER'] = array(); + break; + } + } + } + + /* Add a release + */ + }elseif(in_array("FAIbranch",$attrs['objectClass'])){ + $type = "RELEASE"; + if(isset($attrs['FAIstate'][0])){ + $data['FAIstate'] = $attrs['FAIstate'][0]; + }else{ + $data['FAIstate'] = ""; + } + } + + /* Create object and append it to the current structure pointer + */ + $data['LDAP_ATTRS'] = $attrs; + $data['DN'] = $attrs['dn']; + $data['NAME'] = $name; + $data['TYPE'] = $type; + $data['PRIORITY'] = $priority; + $data['ENTRIES'] = array(); + $data['UNIQID'] = uniqid(); + $data['PARENT'] = $parent_id; + $data['STATUS'] = "LOADED"; + $cur[$priority] = $data; + ksort($cur); + } + } + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if(isset($_GET['r'])) $this->__construct($this->config,$this->dn); + + if (isset($_POST['modify_state'])){ + $this->is_account = !$this->is_account; + } + + /* Do we represent a valid account? */ + if (!$this->is_account){ + $display= $this->show_disable_header(msgPool::addFeaturesButton(_("Menu")), msgPool::featuresDisabled(_("Menu"))); + return ($display); + } + + $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Menu")), msgPool::featuresEnabled(_("Menu"))); + + if(isset($_GET['send'])){ + $id = $_GET['send']; + $all = $this->_get_all_entries(); + if(isset($all[$id])){ + send_binary_content($all[$id]['ICON'],$id.".jpg","image/jpeg"); + exit; + } + } + + if(isset($_GET['r'])) + $this->__construct($this->config,$this->dn); + + if(count($this->edit_entry)){ + if($this->edit_entry['TYPE'] == "ENTRY"){ + $smarty = get_smarty(); + $smarty->assign("type", "ENTRY"); + $smarty->assign("entry",$this->edit_entry); + $smarty->assign("paras",$this->app_parameter); + $display= $smarty->fetch (get_template_path('edit_entry.tpl', TRUE, dirname(__FILE__))); + return($display); + } + if($this->edit_entry['TYPE'] == "FOLDER"){ + $smarty = get_smarty(); + + session::set("binarytype" , "image/jpeg"); + session::set("binary" , $this->edit_entry['ICON']); + + $smarty->assign("rand", microtime(TRUE)); + $smarty->assign("image_set" , strlen($this->edit_entry['ICON']) > 0); + $smarty->assign("type", "FOLDER"); + $smarty->assign("entry",$this->edit_entry); + $display= $smarty->fetch (get_template_path('edit_entry.tpl', TRUE, dirname(__FILE__))); + return($display); + } + } + + $smarty = get_smarty(); + $smarty->assign("plug_id" , $_GET['plug']); + + /* Create application list */ + $div = new divSelectBox("appgroup"); + $div->SetHeight(300); + $departments = array(); + if(!$this->enableReleaseManagement){ + $res = get_list("(objectClass=gosaDepartment)", "application", $this->curbase,array("description","cn","ou"),GL_SIZELIMIT); + foreach($res as $value){ + $fdn = $value['dn']; + $fdn = preg_replace("/".preg_quote($this->curbase, '/')."/","",$fdn); + $fdn= LDAP::fix($fdn); + if($value["description"][0]!=".."){ + $departments[$value['dn']]= convert_department_dn($fdn)." - [".$value["description"][0]."]"; + }else{ + $departments[$value['dn']]=convert_department_dn($fdn)." ["._("Back")."]"; + } + } + } + + $linkopen = "%s"; + + /* Create base back entry */ + $base_back = preg_replace("/^[^,]+,/","",$this->curbase); + if((strlen($base_back)>= strlen($this->config->current['BASE']))&&($this->curbase!=$this->config->current['BASE'])){ + $div->AddEntry(array( + array("string"=>sprintf($linkopen,base64_encode($base_back),".. ["._("back")."]"), + "attach"=>"style='border:0px;'") + )); + } + + /* Append departments for current base */ + foreach($departments as $key => $app){ + $div->AddEntry(array( + array("string"=>""._("department")." ".sprintf($linkopen, + base64_encode($key),$app), + "attach"=>"style='border:0px;'") + )); + } + + + /* Add applications found on this base */ + $used_apps = $this->_get_used_entry_name(); + foreach($this->apps as $key => $app){ + if(in_array($app['cn'][0],$used_apps)){ + continue; + } + if(!preg_match("/".get_ou('applicationRDN').preg_quote($this->curbase, '/')."$/",$app['dn'])){ + continue; + } + + $name = $app['cn'][0]; + if(isset($app['description'])){ + $name .= " [".$app['description'][0]."]"; + } + $div->AddEntry(array( + array("string"=>sprintf("",$key). + ""._("application")." ".$name, + "attach"=>"style='border:0px;'") + )); + } + + /* Assign copy / paste values + */ + if(!empty($this->copied_release)){ + $smarty->assign("copied", TRUE); + $smarty->assign("copy_source", $this->copied_release); + }else{ + $smarty->assign("copied", FALSE); + } + $smarty->assign("enableReleaseManagement",$this->enableReleaseManagement); + $smarty->assign("FAIrelease",$this->FAIrelease); + $smarty->assign("app_list",$div->DrawList()); + $smarty->assign("i",0); + $smarty->assign("releases",$this->Releases); + $smarty->assign("folders" , $this->_get_folder_names()); + $entries = $this->_get_entries_for_release($this->FAIrelease); + $smarty->assign("entries",$entries); + $display.= $smarty->fetch (get_template_path('app_list.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + + /*! \brief Returns all used folder names + @return Array All used folder names. + */ + function _get_folder_names() + { + $data = $this->_get_entries_for_release($this->FAIrelease); + $all = $this->_get_all_entries(); + $ret = array("BASE" => "."); + foreach($data as $entry){ + + if($entry['TYPE'] == "FOLDER"){ + $str = $entry['NAME']; + $parent = $entry['PARENT']; + $i = 10; + while(isset($all[$parent]) && $i){ + $i --; + $parent_o = $all[$parent]; + $str = $parent_o['NAME']."/".$str; + $parent = $all[$parent_o['UNIQID']]['PARENT']; + } + $ret[$entry['UNIQID']] = $str; + } + } + return($ret); + } + + + /*! \brief return all used applications + @return Array All used applications. + */ + function _get_used_entry_name() + { + $data = $this->_get_entries_for_release($this->FAIrelease); + $ret = array(); + foreach($data as $entry){ + if($entry['TYPE'] == "ENTRY"){ + $ret[] = $entry['NAME']; + } + } + return($ret); + } + + + /*! \brief Returns all folder an entries for the selected release + @return Array Returns the complete menu structure for the given array. + */ + function _get_entries_for_release($release,$cur = NULL) + { + $all = $this->_get_all_entries(); + $key = $this->_get_release_key($release); + if(isset($all[$key]) && count($all[$key]['ENTRIES'])){ + $res = $this->_get_all_entries(TRUE,TRUE,$all[$key]['ENTRIES']); + return($res); + } + return(array()); + } + + + /*! \brief Save the currently edited entry + */ + function _save_entry_edit() + { + $all = $this->_get_all_entries(); + $entry = $this->edit_entry; + $r_entry= &$all[$entry['UNIQID']]; + + + if($entry['TYPE'] == "ENTRY"){ + $r_entry['PARAMETER'] = $this->app_parameter; + if($r_entry['STATUS'] != "ADDED"){ + $r_entry['STATUS'] = "EDITED"; + } + } + if($entry['TYPE'] == "FOLDER"){ + $r_entry['ICON'] = $this->edit_entry['ICON']; + $r_entry['STATUS'] = "EDITED"; + } + $this->dialog = FALSE; + $this->edit_entry = array(); + } + + + /*! \brief prepare the entry with the given ID, to be edited. + Read application Parameter from ldap. + */ + function _edit_entry_edit($id) + { + $all = $this->_get_all_entries(); + $entry = $all[$id]; + + $this->app_parameter = array(); + if($entry['TYPE'] == "ENTRY"){ + $found = FALSE; + foreach($this->apps as $id => $app){ + + if($app['cn'][0] == $entry['NAME']){ + $found = TRUE; + break; + } + } + if($found){ + + /* Create a list of editable parameter */ + if(isset($app['gosaApplicationParameter'])){ + for($i = 0 ; $i < $app['gosaApplicationParameter']['count'] ; $i++) { + $para = $app['gosaApplicationParameter'][$i]; + $tmp = split(":",$para); + $this->app_parameter[$tmp[0]] = $tmp[1]; + } + } + + /* Overwrite parameters with entry parameters */ + foreach($entry['PARAMETER'] as $name => $value){ + $this->app_parameter[$name] = $value; + } + + $this->dialog = TRUE; + $this->edit_entry = $entry; + } + } + + if($entry['TYPE'] == "FOLDER"){ + $this->dialog = TRUE; + $this->edit_entry = $entry; + } + } + + + /*! \brief Removes the menu structure from ldap + */ + function remove_from_parent() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->ls("(|(objectClass=gotoSubmenuEntry)(objectClass=FAIbranch)(objectClass=gotoMenuEntry))",$this->dn,array("*")); + $a_remove = array(); + while($attrs = $ldap->fetch()){ + $a_remove[] = $attrs['dn']; + } + foreach($a_remove as $remove){ + $ldap->rmdir_recursive($remove); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + } + $this->_load_menu_structure(); + } + + + function check() + { + $message = plugin::check(); + return($message); + } + + + /*! \brief Create missing releases, if there is a release selected \ + that is currently not part of the menu structure \ + then create this entry + */ + function _check_missing_release($release) + { + $release_info = $this->Releases[$release]; + + $parent_id = $this->a_Structure[0]['UNIQID']; + $cur = &$this->a_Structure[0]['ENTRIES']; + for($i = 0 ; $i < count($release_info['parts']) ; $i ++){ + $part = $release_info['parts'][$i]; + $found = FALSE; + foreach($cur as $key => $name){ + if($name['NAME'] == $part){ + $parent_id = $cur[$key]['UNIQID']; + $cur = &$cur[$key]['ENTRIES']; + + $found =TRUE; + break; + } + } + if(!$found){ + $release = array(); + $release['UNIQID'] = uniqid(); + $release['PARENT'] = $parent_id; + $release['NAME'] = $part; + $release['TYPE'] = "RELEASE"; + $release['ENTRIES']= array(); + $release['STATUS'] = "ADDED"; + $release['FAIstate'] = $release_info['FAIstate']; + $cur[] = $release; + $i --; + } + } + } + + + + /*! \brief Moves a given object ($id) in a specified direction ($dir). + @param String The object ID of the object we want to move + @dir String Move "up" or "down" + */ + function _move_entry($id,$dir) + { + $all = $this->_get_all_entries(); + if($dir == "down"){ + $to = $this->_get_next($id); + } + if($dir == "up"){ + $to = $this->_get_last($id); + } + + if(!$to){ + return; + } + + $o_to = $all[$to]; + $o_from = $all[$id]; + + if($o_to['PARENT'] == $o_from['UNIQID'] && $dir == "down"){ + $to = $this->_get_next($to,$o_from['PARENT']); + $o_to = $all[$to]; + } + + /* Target is ENTRY && same BASE, just switch */ + if($o_to['PARENT'] == $o_from['PARENT'] ){ + $parent = $all[$o_to['PARENT']]; + $pos = 0; + foreach($parent['ENTRIES'] as $entry){ + $pos ++; + if($entry['UNIQID'] == $to){ + break; + } + } + if($dir == "up" && $pos > 0){ + $pos --; + } + $this->_add_entry($parent['UNIQID'],$o_from,$pos); + $this->_remove_entry_id($id); + return(TRUE); + } + return(FALSE); + } + + + + /*! \brief Returns the railing object ID of the given object. + @return String The id of the trailing object. + */ + function _get_last($id) + { + $all_l = array_reverse($this->_get_entries_for_release($this->FAIrelease)); + for($i = 0 ; $i < count($all_l) ; $i ++){ + if(isset($all_l[$i]['UNIQID']) && $all_l[$i]['UNIQID'] == $id){ + $i++; + break; + } + } + while(isset($all_l[$i]) && !in_array($all_l[$i]['TYPE'],array("ENTRY","FOLDER","CLOSE","OPEN")) && $i < count($all_l)){ + $i++; + } + + if(!isset($all_l[$i])){ + return(FALSE); + } + + if(in_array($all_l[$i]['TYPE'],array("CLOSE","OPEN"))){ + return($all_l[$i]['PARENT']); + } + + return($all_l[$i]['UNIQID']); + } + + + /*! \brief Returns the following object ID of the given object. + @return String The id of the following object. + */ + function _get_next($id,$parent = 0) + { + $all_l = $this->_get_entries_for_release($this->FAIrelease); + for($i = 0 ; $i < count($all_l) ; $i ++){ + if(isset($all_l[$i]['UNIQID']) && $all_l[$i]['UNIQID'] == $id){ + $i++; + break; + } + } + if($parent != 0){ + while(isset($all_l[$i]) && $all_l[$i]['PARENT'] != $parent){ + $i++; + } + }else{ + while(isset($all_l[$i]) && !in_array($all_l[$i]['TYPE'],array("ENTRY","FOLDER")) && $i < count($all_l)){ + $i++; + } + } + if(!isset($all_l[$i])){ + return(FALSE); + } + if(in_array($all_l[$i]['TYPE'],array("CLOSE","OPEN"))){ + return($all_l[$i]['PARENT']); + } + return($all_l[$i]['UNIQID']); + } + + + + + /* !\brief Handle ui POSTS, like sort up/down/delete + */ + function save_object() + { + foreach($_POST as $name => $value){ + + if(preg_match("/^menu_copy_/",$name)){ + $this->copied_release = $this->FAIrelease; + break; + } + if(preg_match("/^menu_delete/",$name)){ + $current_rel = $this->_get_release_key($this->FAIrelease); + $this->_remove_entry_id($current_rel); + break; + } + if(preg_match("/^menu_paste_/",$name)){ + $source_rel = $this->_get_release_key($this->copied_release); + $current_rel = $this->_get_release_key($this->FAIrelease); + + $all = $this->_get_all_entries(); + $menu = $all[$source_rel]['ENTRIES']; + + foreach($menu as $entry){ + if(in_array($entry['TYPE'],array("FOLDER","ENTRY","SEPERATOR"))){ + $this->_add_entry($current_rel,$entry,-1); + } + } + $this->copied_release = ""; + break; + } + + if(preg_match("/del_/",$name)){ + $id = preg_replace("/^del_/","",$name); + $id = preg_replace("/_(x|y)$/","",$id); + $this->_remove_entry_id($id); + break; + } + if(preg_match("/app_entry_edit/",$name)){ + $id = preg_replace("/^app_entry_edit/","",$name); + $id = preg_replace("/_(x|y)$/","",$id); + $this->_edit_entry_edit($id); + break; + } + if(preg_match("/up_/",$name)){ + $id = preg_replace("/^up_/","",$name); + $id = preg_replace("/_(x|y)$/","",$id); + $this->_move_entry($id,"up"); + break; + } + if(preg_match("/down_/",$name)){ + $id = preg_replace("/^down_/","",$name); + $id = preg_replace("/_(x|y)$/","",$id); + $this->_move_entry($id,"down"); + break; + } + if(preg_match("/^parameter_/",$name) && + count($this->edit_entry) && $this->edit_entry['TYPE'] == "ENTRY"){ + $name = preg_replace("/^parameter_/","",$name); + $this->app_parameter[$name] = $value; + } + } + if(isset($_POST['FAIrelease'])){ + $this->FAIrelease = $_POST['FAIrelease']; + $this->_check_missing_release($this->FAIrelease); + } + if(isset($_GET['act']) && $_GET['act'] == 'depopen'){ + $this->curbase = base64_decode($_GET['depid']); + } + if(isset($_POST['add_to_folder']) && isset($_POST['folder'])){ + $folder = $_POST['folder']; + foreach($_POST as $name => $value){ + if(preg_match("/^AddApp_[0-9]*$/",$name)){ + $this->_add_app_id($folder,preg_replace("/^AddApp_/","",$name)); + } + } + } + + /* Add seperator */ + if(isset($_POST['add_seperator']) && isset($_POST['menu_folder'])){ + $folder = $_POST['menu_folder']; + $this->_add_seperator($folder); + } + + if(isset($_POST['add_menu_to_folder']) && isset($_POST['menu_folder'])){ + $folder = $_POST['menu_folder']; + $name = $_POST['menu_folder_name']; + if(strlen($name) > 0 && preg_match("/[a-z ]/i",$name)){ + $this->_add_sub_folder($folder,$name); + } + } + if(isset($_POST['app_entry_save'])){ + $this->_save_entry_edit(); + } + + if(isset($_FILES['folder_image']) && isset($_POST['folder_image_upload'])){ + if($_FILES['folder_image']['error'] == 0 && $_FILES['folder_image']['size'] > 0){ + $this->edit_entry['ICON'] = file_get_contents($_FILES['folder_image']['tmp_name']); + } + } + + if(isset($_POST['edit_reset_image'])){ + $this->edit_entry['ICON'] = ""; + } + + if(isset($_POST['app_entry_cancel'])){ + $this->edit_entry = array(); + $this->dialog = FALSE; + } + $this->reload(); + } + + + /*! \brief Returns the UNIQID of the currently selected release + */ + function _get_release_key($release,$add_if_missing = FALSE) + { + $release_info = $this->Releases[$release]; + + if($release_info['name'] == "/"){ + return($this->a_Structure['0']['UNIQID']); + } + + $cur = &$this->a_Structure[0]['ENTRIES']; + $s_key = ""; + $found = FALSE; + foreach($release_info['parts'] as $name){ + foreach($cur as $key => $obj){ + if($obj['TYPE'] == "RELEASE" && $obj['NAME'] == $name){ + $s_key = $cur[$key]['UNIQID']; + $cur = &$cur[$key]['ENTRIES']; + $found = TRUE; + break; + } + $found = FALSE; + } + } + if($found){ + return($s_key); + } + return(FALSE); + } + + + /*! \brief Add a new folder folder to the specified folder id + @param String $folder The folder id in where we want to add the new folder. + @param String $name The name of the new folder. + */ + function _add_sub_folder($folder,$name) + { + $all = $this->_get_all_entries(); + if($folder == "BASE"){ + $folder = $this->_get_release_key($this->FAIrelease,TRUE); + } + + if(isset($all[$folder])){ + $a_folder = array(); + $a_folder['STATUS'] = "ADDED"; + $a_folder['NAME'] = $name; + $a_folder['UNIQID'] = uniqid(); + $a_folder['ENTRIES']= array(); + $a_folder['PARENT'] = $folder; + $a_folder['TYPE'] = "FOLDER"; + $a_folder['ICON'] = ""; + $all[$folder]['ENTRIES'][] = $a_folder; + } + } + + + /* !\brief Remove the given id from the menu structure. + @param String ID to of the entry we want to remove. + @return Boolean TRUE on success + */ + function _remove_entry_id($id) + { + $all = $this->_get_all_entries(); + if(isset($all[$id])){ + $all[$id]['STATUS'] = "REMOVED"; + $all[$id]['ENTRIES'] = array(); + return(TRUE); + } + return(FALSE); + } + + + /* !\brief Adds an object to a given folder. + @param String The folder where we should add the entry + @param Array The entry we want to add. + @param Array The position in the destination entry array. + */ + function _add_entry($folder_id,$entry,$pos = 0) + { + $all = $this->_get_all_entries(); + + /* Do not add removed */ + if($entry['STATUS'] == "REMOVED"){ + return; + } + + /* Check if the folder exists + */ + if(isset($all[$folder_id])){ + + /* Check if the entry we want to add, + contains su objects. + */ + if(!isset($entry['ENTRIES'])){ + $entries = array(); + }else{ + $entries = $entry['ENTRIES']; + } + $folder = &$all[$folder_id]; + + /* Prepare the entry to be added. + */ + $entry['UNIQID'] = uniqid(); + $entry['PARENT'] = $folder_id; + $entry['ENTRIES']= array(); + $entry['STATUS'] = "ADDED"; + + /* Append the ebtry to the given folder + and to the given position \$pos + */ + $cnt = 0; + $new = array(); + $added =FALSE; + foreach($folder['ENTRIES'] as $key => $obj){ + if($obj['STATUS'] == "LOADED"){ + $obj['STATUS'] = "EDITED"; + } + if($pos == $cnt){ + $new[] = $entry; + $added = TRUE; + } + $cnt ++; + $new[] = $obj; + } + if(!$added){ + $new[] = $entry; + } + $all[$folder_id]['ENTRIES'] = &$new; + + /* Add sub entries too. + */ + foreach($entries as $sub){ + $this->_add_entry($entry['UNIQID'],$sub,-1); + } + return(TRUE); + } + return(FALSE); + } + + + /*! \brief Add the application identified by $app_id to folder $folder_id + @param String folder_id The UNIQID of the folder where we want to add the new folder. + @param Integer app_id The ID of the application which should be added. + */ + function _add_app_id($folder_id,$app_id) + { + $all = $this->_get_all_entries(); + if($folder_id == "BASE"){ + $folder_id = $this->_get_release_key($this->FAIrelease); + } + if(isset($all[$folder_id]) && isset($this->apps[$app_id])){ + + $new = array(); + $new['TYPE'] = "ENTRY"; + $new['NAME'] = $this->apps[$app_id]['cn'][0]; + $new['UNIQID']= uniqid(); + $new['PARENT']= $folder_id; + $new['PARAMETER']= array(); + if(isset($this->apps[$app_id]['description'][0])){ + $new['INFO'] = $this->apps[$app_id]['description'][0]; + }else{ + $new['INFO'] = ""; + } + $new['STATUS']= "ADDED"; + $all[$folder_id]['ENTRIES'][] = $new; + } + } + + + /*! \brief Add the application identified by $app_id to folder $folder_id + @param String folder_id The UNIQID of the folder where we want to add the new folder. + @param Integer app_id The ID of the application which should be added. + */ + function _add_seperator($folder_id) + { + $all = $this->_get_all_entries(); + if($folder_id == "BASE"){ + $folder_id = $this->_get_release_key($this->FAIrelease); + } + + if(isset($all[$folder_id])){ + $new = array(); + $new['TYPE'] = "SEPERATOR"; + $new['NAME'] = "SEPERATOR"; + $new['UNIQID']= uniqid(); + $new['PARENT']= $folder_id; + $new['PARAMETER']= array(); + $new['STATUS']= "ADDED"; + $all[$folder_id]['ENTRIES'][] = $new; + } + } + + + /*! \brief Return all entries linear. ($this->a_Structure is a multidimensional array) + @param Boolean $add_tags If TRUE, OPEN/CLOSE Tags will be appended. + Used in the smarty template to display logical sperations. + @param &Array Start here, Pointer to an array. + */ + function _get_all_entries($add_tags = FALSE, $skip_release = FALSE, &$cur = NULL) + { + $ret = array(); + if($cur == NULL){ + $cur = &$this->a_Structure; + } + + /* Walk through all entries and append them to our return array + */ + foreach($cur as $key => $entry){ + if($skip_release && $entry['TYPE'] == "RELEASE"){ + continue; + } + if($entry['TYPE'] == "ENTRY"){ + $found = FALSE; + foreach($this->apps as $app){ + if($app['cn'][0] == $entry['NAME']){ + $found = TRUE; + if(isset($app['description'][0])){ + $entry['INFO'] = "[".$app['description'][0]."]"; + } + break; + } + } + if(!$found){ + $entry['INFO'] = ""._("Not available in release.").""; + } + } + + $tmp = $entry; + + /* Recursive resolution of the subentries + There are two methods. + - Just add sub entries + - Add sub entries and additionaly add OPEN / CLOSE tags to be able + to display logical seperators in the smarty template. + */ + if(!$add_tags){ + $ret[$tmp['UNIQID']] = &$cur[$key]; + if(isset($entry['ENTRIES']) && count($entry['ENTRIES'])){ + $ret = array_merge($ret,$this->_get_all_entries($add_tags,$skip_release,$cur[$key]['ENTRIES'])); + } + }else{ + + if(isset($tmp['ENTRIES'])){ + unset($tmp['ENTRIES']); + } + if($tmp['STATUS'] != "REMOVED"){ + $ret[] = $tmp; + if(isset($entry['ENTRIES']) && count($entry['ENTRIES'])){ + $add = false; + foreach($entry['ENTRIES'] as $entry){ + if($entry['STATUS'] != "REMOVED"){ + $add = TRUE; + break; + } + } + + if($add){ + $ret[] = array("TYPE" => "OPEN", "PARENT" => $entry['PARENT']); + $ret = array_merge($ret,$this->_get_all_entries($add_tags,$skip_release,$cur[$key]['ENTRIES'])); + $ret[] = array("TYPE" => "CLOSE" , "PARENT" => $entry['PARENT']); + } + } + } + } + } + return($ret); + } + + + /*! \brief Save this plugin data to ldap. + Save the current menu structure to ldap. + */ + function save() + { + $ldap = $this->config->get_ldap_link(); + $all = $this->_get_all_entries(); + $prio = 0; + $Actions = array("Remove" => array(),"Edit" => array() , "Add" => array()); + + /* Walk through the menu structure and build up the ldap data object, + the entry dn and the entry priority. + */ + $sep_id = 0; + foreach($all as $entry){ + $prio ++; + $cur = $entry; + $dn = ""; + + /* Build entry dn + */ + do{ + if($cur['TYPE'] == "SEPERATOR"){ + $sep_id ++; + $dn.= "cn=seperator_".$sep_id.","; + }elseif($cur['TYPE'] == "ENTRY"){ + $dn.= "cn=".$cur['NAME'].","; + }elseif($cur['TYPE'] == "FOLDER"){ + $dn.= "cn=".$cur['NAME'].","; + }elseif($cur['TYPE'] == "RELEASE"){ + $dn.= "ou=".$cur['NAME'].","; + }elseif($cur['TYPE'] == "BASE"){ + } + if(!isset($all[$cur['PARENT']])){ + $cur = NULL; + }else{ + $cur = $all[$cur['PARENT']]; + } + }while(is_array($cur)); + + $cur_dn = $dn.$this->dn; + $attrs = array(); + + /* Build entry data object. + */ + switch($entry['TYPE']){ + case "SEPERATOR" : + { + $attrs['objectClass'] = array("gotoMenuEntry"); + $attrs['cn'] = "seperator_".$sep_id; + $attrs['gosaApplicationPriority'] = $prio; + $attrs['gosaApplicationParameter'] = "*separator*"; + } + break; + case "ENTRY" : + { + $attrs['objectClass'] = array("gotoMenuEntry"); + $attrs['cn'] = $entry['NAME']; + $attrs['gosaApplicationPriority'] = $prio; + $attrs['gosaApplicationParameter'] = array(); + + foreach($entry['PARAMETER'] as $name => $value){ + $attrs['gosaApplicationParameter'][] = $name.":".$value; + } + if($entry['STATUS'] == "ADDED" && !count($attrs['gosaApplicationParameter'])){ + unset($attrs['gosaApplicationParameter']); + } + } + break; + case "FOLDER" : + { + $attrs['objectClass'] = array("gotoSubmenuEntry"); + $attrs['cn'] = $entry['NAME']; + $attrs['gosaApplicationPriority'] = $prio; + if($entry['STATUS'] != "ADDED"){ + $attrs['gosaApplicationIcon'] = array(); + } + + if(!empty($entry['ICON'])){ + $attrs['gosaApplicationIcon'] = $entry['ICON']; + } + } + break; + case "RELEASE" : + { + $attrs['ou'] = $entry['NAME']; + $attrs['objectClass'] = array(); + $attrs['objectClass'][] = "top"; + $attrs['objectClass'][] = "organizationalUnit"; + $attrs['objectClass'][] = "FAIbranch"; + if(!empty($entry['FAIstate'])){ + $attrs['FAIstate'] = $entry['FAIstate']; + } + } + break; + } + + /* Append missing ObjectClasses, ... Tagging + */ + if(isset($entry['LDAP_ATTRS'])){ + for($i = 0 ; $i < $entry['LDAP_ATTRS']['objectClass']['count']; $i ++){ + $oc = $entry['LDAP_ATTRS']['objectClass'][$i]; + if(!in_array($oc,$attrs['objectClass'])){ + $attrs['objectClass'][] = $oc; + } + } + } + + /* Create an array containing all operations sorted by type. (add,remove...) + */ + if($entry['STATUS'] == "LOADED"){ + continue; + } + if($entry['STATUS'] == "REMOVED"){ + if(isset($entry['DN'])){ + $Actions['Remove'][$entry['DN']] = $entry['DN']; + }else{ + $Actions['Remove'][$cur_dn] = $cur_dn; + } + } + if($entry['STATUS'] == "EDITED"){ + $Actions['Edit'][$cur_dn] = $attrs; + } + if($entry['STATUS'] == "ADDED"){ + $Actions['Add'][$cur_dn] = $attrs; + } + } + + /* First remove entries + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + foreach($Actions['Remove'] as $dn){ + $ldap->cd($dn); + $ldap->cat($dn); + if($ldap->count()){ + $ldap->rmdir_recursive($dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_DEL, get_class())); + } + } + } + + /* Add new entries + */ + foreach($Actions['Add'] as $dn => $data){ + $this->tag_attrs($data,$dn,$this->gosaUnitTag); + $ldap->cd($dn); + $ldap->cat($dn); + if(!$ldap->count()){ + $ldap->add($data); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_ADD, get_class())); + } + } + } + + /* Modify entries + */ + foreach($Actions['Edit'] as $dn => $data){ + $this->tag_attrs($data,$dn,$this->gosaUnitTag); + $ldap->cd($dn); + $ldap->cat($dn); + if($ldap->count()){ + $ldap->modify($data); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD, get_class())); + } + } + } + + $this->_load_menu_structure(); + } + + + /*! \brief Return plugin informations for acl handling + @return Array containing all plugin ACL informations + */ + static function plInfo() + { + return (array( + "plShortName" => _("Applications"), + "plDescription" => _("Group applications"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 7, + "plSection" => array("administration"), + "plCategory" => array("groups"), + "plProvidedAcls"=> array( + "gosaMemberApplication" => _("Application"), + "FAIrelease" => _("Release"), + "gosaApplicationParameter" => _("Application parameter")) + )); + } + + + /* \brief Prepare this plugin to be copied. + Adapt all required attributes from the source object. + In this case, update the menu structure too, mark all elements + as newly added, so they will be saved in save(); + */ + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + $tmp = new appgroup($this->config,$source['dn']); + $this->is_account = TRUE; + $this->a_Structure = $tmp->a_Structure; + $all = $this->_get_all_entries(); + foreach($all as &$entry){ + if(isset($entry['STATUS'])){ + $entry['STATUS'] = "ADDED"; + } + } + } + + + /*! \brief Save HTML posts in multiple edit mode + */ + function multiple_save_object() + { + if(isset($_POST['group_apps_multi'])){ + $this->save_object(); + plugin::multiple_save_object(); + + /* Get posts */ + foreach(array("apps") as $attr){ + if(isset($_POST['use_'.$attr])) { + $this->multi_boxes[] = $attr; + } + } + } + } + + + /*! \brief Return values used in multiple edit mode. + Some values can be modified for multiple + groups at the same time. + @return Array All values that support multiple edit. + */ + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + + if(in_array("apps",$this->multi_boxes)){ + $ret['gosaApplicationParameter'] = $this->gosaApplicationParameter; + $ret['Categories'] = $this->Categories; + $ret['gosaMemberApplication'] = $this->gosaMemberApplication; + $ret['FAIrelease'] = $this->FAIrelease; + $ret['appoption'] = $this->appoption; + } + return($ret); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/groups/apps/edit_entry.tpl b/trunk/gosa-plugins/goto/admin/groups/apps/edit_entry.tpl new file mode 100644 index 000000000..a0cb2fccb --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/groups/apps/edit_entry.tpl @@ -0,0 +1,70 @@ + +{if $type == "FOLDER"} +

{$entry.NAME}

+ + + + + + + + + + + + + + + + + +
+ {t}Folder image{/t} + + {if $image_set} + {t}Could not load image.{/t} + {else} + {t}None{/t} + {/if} +
+   +
{t}Upload image{/t} + + + +
{t}Reset image{/t}
+
+{/if} + +{if $type == "ENTRY"} +

{t}Application settings{/t}

+ + + + + + + + + + + +{foreach from=$paras item=item key=key} + + + + +{/foreach} +
{t}Name{/t}{$entry.NAME}
+   +
+ {t}Application options{/t} +
{$key} 
+{/if} +

+

+
+ +   + +
diff --git a/trunk/gosa-plugins/goto/admin/mimetypes/class_divListMimeTypes.inc b/trunk/gosa-plugins/goto/admin/mimetypes/class_divListMimeTypes.inc new file mode 100644 index 000000000..6cc6e6df8 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/mimetypes/class_divListMimeTypes.inc @@ -0,0 +1,267 @@ +parent = &$parent; + $this->ui = get_userinfo(); + + /* Set list strings */ + $this->SetTitle (_("List of defined mime types")); + $this->SetSummary (_("List of defined mime types")); + + /* Result page will look like a headpage */ + $this->SetHeadpageMode(); + $this->EnableAplhabet(true); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* set Page header */ + $action_col_size = 80; + if($this->parent->snapshotEnabled()){ + $action_col_size += 38; + } + + /* Toggle all selected / deselected */ + $chk = ""; + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); + $this->AddHeader(array("string" => _("Mime type")." / "._("Department"), "attach" => "style=''")); + $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'")); + + /* Add SubSearch checkbox */ + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name ,Text ,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Display mime types matching"),"*" , true); + } + + + function AddUserBoxToFilter($position) + { + $str = ""; + if(($position == 2) && ($this->parent->IsReleaseManagementActivated($this->config))){ + $smarty = get_smarty(); + $releases = $this->parent->getReleases(); + $smarty->assign("mime_release" , $releases[$this->parent->mime_release]); + $smarty->assign("mime_base" , $releases[$this->parent->mime_base]); + $smarty->assign("branchimage","plugins/goto/images/branch.png"); + $smarty->assign("mime_releases", $releases); + $str = $smarty->fetch(get_template_path('release_select.tpl', TRUE)); + } + return($str); + } + + + /* Create list header, with create / copy & paste etc*/ + function GenHeader() + { + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(false); + if(!$this->parent->IsReleaseManagementActivated()){ + + /* Get all departments within this subtree */ + $ui= get_userinfo(); + $first = ""; + $found = FALSE; + $base = $this->config->current['BASE']; + $options = $this->create_department_list($this->module); + + /* And at least add a department selection box */ + $listhead .= _("Base")." ". + "  "; + + } + + /* Get acls */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->parent->acl_base,"mimetypes/mimetype"); + $acl_all = $ui->has_complete_category_acls($this->parent->acl_base,"mimetypes") ; + + + /* If this is true we add an additional seperator. Just look a few lines below */ + $add_sep = false; + + /* Create Layers menu */ + $s = ".|"._("Actions")."|\n"; + + /* Append create options */ + if(preg_match("/c/",$acl)) { + $s .= "..|". + " "._("Create")."|\n"; + $s.= "...|". + " "._("Mime type")."|mime_new|\n"; + $s.= "..|---|\n"; + } + + /* Multiple options */ + $s.= "..|". + " "._("Remove")."|"."remove_multiple|\n"; + + /* Add Copy & Paste header */ + $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module); + + /* Add snapshot icons */ + $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); + + $this->SetDropDownHeaderMenu($s); + $this->SetListHeader($listhead); + } + + + /* Some basic settings */ + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + + function setEntries($list) + { + /******************** + Variable init + ********************/ + + /* Create links */ + $editlink = "%s"; + $userimg = "User"; + $mimeimg = "A"; + $empty = ""; + + /* set Page header */ + $action_col_size = 80; + if($this->parent->snapshotEnabled()){ + $action_col_size += 38; + } + + /******************** + Attach objects + ********************/ + + foreach($list as $key => $val){ + + /* Check FAI state + */ + $FAIstate = $val['FAIstate'][0]; + + $ui = get_userinfo(); + $acl = $ui->get_permissions($val['dn'],"mimetypes/mimetype"); + $acl_all = $ui->has_complete_category_acls($val['dn'],"mimetypes") ; + + $action = ""; + + /* Add copy & cut functionality */ + if(!preg_match("/freeze/i",$FAIstate)){ + $action.= $this->parent->get_copypaste_action($val['dn'],"mimetypes","mimetype"); + }else{ + $action.= " "; + $action.= " "; + } + + $action.= ""; + + /* Add snapshot icon */ + if(!preg_match("/freeze/i",$FAIstate)){ + $action.= $this->parent->get_snapshot_action($val['dn'],$this->module); + }else{ + $action.= " "; + $action.= " "; + } + + /* Add delete button */ + if(preg_match("/freeze/i",$FAIstate)){ + $action .= "!"; + }elseif(preg_match("/d/",$acl)){ + $action.= ""; + }else{ + $action.= " "; + } + + $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; + + if(!isset($val['description'][0])){ + $desc = ""; + }else{ + $desc = " - [ ".$val['description'][0]." ]"; + } + + /* Cutted objects should be displayed in light grey */ + $display = $val['cn'][0].$desc; + if($this->parent->CopyPasteHandler){ + foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){ + if($queue_data['dn'] == $val['dn']) { + $display = "".$display.""; + break; + } + } + } + + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field1 = array("string" => sprintf($mimeimg,$val['dn']), "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' ".$title); + $field3 = array("string" => preg_replace("/%KEY%/", $key, $action), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); + $this->AddElement(array($field0,$field1,$field2,$field3)); + } + + + /* Create summary string for list footer */ + $num_deps=0; + if(!$this->SubSearch){ + $num_deps = count($this->Added_Departments); + } + $num_objs = count($list); + + $num_obj_str = _("Number of listed mimetypes"); + $num_dep_str = _("Number of listed departments"); + + $str = "".$num_obj_str." ".$num_objs."    "; + $str.= "".$num_dep_str." ".$num_deps."    "; + + $this->set_List_Bottom_Info($str); + } + + function Save() + { + MultiSelectWindow::Save(); + } + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow::save_object(); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/mimetypes/class_mimetypeGeneric.inc b/trunk/gosa-plugins/goto/admin/mimetypes/class_mimetypeGeneric.inc new file mode 100644 index 000000000..2e266a903 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/mimetypes/class_mimetypeGeneric.inc @@ -0,0 +1,776 @@ +orig_dn = $dn; + + /* get gotoMimeLeftClickActions I/E/Q */ + if(isset($this->gotoMimeLeftClickAction)){ + $str = $this->gotoMimeLeftClickAction; + for($i = 0 ; $i < strlen($str) ; $i ++ ){ + $varna = "gotoMimeLeftClickAction_". $str[$i]; + if(isset($this->$varna)){ + $this->$varna = true; + } + } + } + + /* Create list of defined applications in GOsa */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=gosaApplication)(cn=*))",array('cn')); + $this->ApplicationList = array(); + while($attrs = $ldap->fetch()){ + $this->ApplicationList[$attrs['cn'][0]] = $attrs['cn'][0]; + } + + /* If both radio buttons arn't set, set option I */ + if(!$this->gotoMimeLeftClickAction_I && !$this->gotoMimeLeftClickAction_E){ + $this->gotoMimeLeftClickAction_I = true; + } + + /* Get list of array attributes */ + foreach(array("gotoMimeFilePattern") as $attr){ + $this->$attr = array(); + if(isset($this->attrs[$attr])){ + $tmp = array(); + for($i = 0 ; $i < $this->attrs[$attr]['count'] ; $i ++){ + $str = $this->attrs[$attr][$i]; + $tmp[] = $str; + } + $use_attr = "use_".$attr; + $this->$use_attr = $tmp; + } + } + + /* Get list of array attributes with priority tag ( Test|32 )*/ + foreach(array("gotoMimeApplication","gotoMimeEmbeddedApplication") as $attr){ + $this->$attr = array(); + if(isset($this->attrs[$attr])){ + $tmp = array(); + for($i = 0 ; $i < $this->attrs[$attr]['count'] ; $i ++){ + $str = $this->attrs[$attr][$i]; + $tmp2= split("\|",$str); + + if(count($tmp2) == 2){ + $name = $tmp2[0]; + $prio = $tmp2[1]; + $tmp[$prio] = $name; + } + } + ksort($tmp); + $use_attr = "use_".$attr; + $this->$use_attr = $tmp; + } + } + + /* Set base */ + if ($this->dn == "new"){ + if(session::is_set('CurrentMainBase')){ + $this->base= session::get('CurrentMainBase'); + }else{ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } + } else { + $this->base= preg_replace ("/^.*,".preg_quote(get_ou("mimetypeRDN"), '/')."/", "", $this->dn); + } + + /* Get icon data */ + if(isset($this->attrs['gotoMimeIcon'])){ + $ldap = $this->config->get_ldap_link(); + $this->iconData = $ldap->get_attribute($this->dn,"gotoMimeIcon"); + $this->saved_attributes['gotoMimeIcon'] = $this->iconData; + } + if ($this->iconData == ""){ + $this->set_new_picture(""); + } + session::set('binary',$this->iconData); + session::set('binarytype',"image/jpeg"); + $this->orig_base = $this->base; + } + + + function execute() + { + $smarty = get_smarty(); + + if(!$this->view_logged){ + $this->view_logged =TRUE; + new log("view","mimetypes/".get_class($this),$this->dn); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name,preg_match("/freeze/i",$this->FAIstate))); + } + $smarty->assign("IconReadable", preg_match("/r/",$this->getacl("gotoMimeIcon",preg_match("/freeze/i",$this->FAIstate)))); + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once && !preg_match("/freeze/i",$this->FAIstate)){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* A new base was selected, check if it is a valid one */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* Check Posts */ + $posts = array( + "/^Pattern_SortUp_/" => array("Action" => "Pattern_SortUp", "Func" => "ArrayUp", "Attr" => "use_gotoMimeFilePattern"), + "/^Pattern_SortDown_/" => array("Action" => "Pattern_SortDown","Func" => "ArrayDown", "Attr" => "use_gotoMimeFilePattern"), + "/^Pattern_Remove_/" => array("Action" => "Pattern_Remove", "Func" => "ArrayRemove","Attr" => "use_gotoMimeFilePattern"), + "/^Apps_SortUp_/" => array("Action" => "Apps_SortUp", "Func" => "ArrayUp", "Attr" => "use_gotoMimeApplication"), + "/^Apps_SortDown_/" => array("Action" => "Apps_SortDown", "Func" => "ArrayDown", "Attr" => "use_gotoMimeApplication"), + "/^Apps_Remove_/" => array("Action" => "Apps_Remove", "Func" => "ArrayRemove","Attr" => "use_gotoMimeApplication"), + "/^EApps_SortUp_/" => array("Action" => "EApps_SortUp", "Func" => "ArrayUp", "Attr" => "use_gotoMimeEmbeddedApplication"), + "/^EApps_SortDown_/" => array("Action" => "EApps_SortDown", "Func" => "ArrayDown", "Attr" => "use_gotoMimeEmbeddedApplication"), + "/^EApps_Remove_/" => array("Action" => "EApps_Remove", "Func" => "ArrayRemove","Attr" => "use_gotoMimeEmbeddedApplication")); + $once = true; + + /* Walk through posts and try to find some commands for us. */ + if(!preg_match("/freeze/i",$this->FAIstate)){ + foreach($_POST as $name => $value){ + + /* Walk through possible commands */ + foreach($posts as $regex => $action){ + + /* Check if there is a command posted */ + if(preg_match($regex,$name) && $once){ + $once = false; + + /* Get action vars */ + $func = $action['Func']; // Get function name + $attr = $action['Attr']; // Get attribute name + $acl_a = preg_replace("/^use_/","",$action['Attr']); // Get attribute name + + /* Get entry id */ + $s_entry = preg_replace($regex,"",$name); + $s_entry = preg_replace("/_[xy]$/","",$s_entry); + + /* Execute a command with the given attribute and entry + e.g. $this->gotoMimeFilePattern = $this->ArrayUp(3,$this->gotoMimeFilePattern) */ + if($this->acl_is_writeable($acl_a)){ + $this->$attr= $this->$func($s_entry,$this->$attr,true); + } + } + } + } + + /* Set a new icon was requested */ + if(isset($_POST['update_icon']) && (isset($_FILES['picture_file']['name']))){ + $this->set_new_picture($_FILES['picture_file']['tmp_name']); + } + + /* Add gotoMimeFilePattern */ + if(isset($_POST['AddNewFilePattern']) && isset($_POST['NewFilePattern'])){ + if($this->acl_is_writeable("gotoMimeFilePattern")){ + $str = trim($_POST['NewFilePattern']); + if($str != ""){ + $this->use_gotoMimeFilePattern[] = $str; + } + } + } + + /* Add gotoMimeFilePattern */ + if(isset($_POST['AddNewApplication']) && + (isset($_POST['NewApplication']) || isset($_POST['NewApplicationSelect']))){ + if($this->acl_is_writeable("gotoMimeApplication")){ + $str = ""; + if(isset($_POST['NewApplicationSelect']) && !empty($_POST['NewApplicationSelect'])){ + $str = trim(get_post("NewApplicationSelect")); + } + if(isset($_POST['NewApplication']) && !empty($_POST['NewApplication'])){ + $str = trim(get_post("NewApplication")); + } + if($str != "" && !in_array($str,$this->use_gotoMimeApplication)){ + $this->use_gotoMimeApplication[] = $str; + } + } + } + + /* Add embedded application + * - From input or from select box + */ + if(isset($_POST['AddNewEmbeddedApplication']) && + (isset($_POST['NewEmbeddedApplication']) || isset($_POST['NewEmbeddedApplicationSelect']))){ + if($this->acl_is_writeable("gotoMimeEmbeddedApplication")){ + $str = ""; + if(isset($_POST['NewEmbeddedApplicationSelect']) && !empty($_POST['NewEmbeddedApplicationSelect'])){ + $str = trim(get_post('NewEmbeddedApplicationSelect')); + } + if(isset($_POST['NewEmbeddedApplication']) && !empty($_POST['NewEmbeddedApplication'])){ + $str = trim(get_post('NewEmbeddedApplication')); + } + if($str != "" && !in_array($str,$this->use_gotoMimeEmbeddedApplication)){ + $this->use_gotoMimeEmbeddedApplication[] = $str; + } + } + } + } + + /* Create divlists */ + $DivPatterns = new divSelectBox("gotoMimePatterns"); + $DivApps = new divSelectBox("gotoMimeApplications"); + $DivEApps = new divSelectBox("gotoMimeEmbeddedApplications"); + $DivPatterns -> SetHeight(100); + $DivApps -> SetHeight(100); + $DivEApps -> SetHeight(100); + + + if($this->acl_is_writeable("gotoMimeFilePattern") && !preg_match("/freeze/i",$this->FAIstate)){ + $Pattern_Actions= "   +   + "; + }else{ + $Pattern_Actions= ""; + } + + if($this->acl_is_writeable("gotoMimeApplication") && !preg_match("/freeze/i",$this->FAIstate)){ + $Apps_Actions = "   +   + "; + }else{ + $Apps_Actions= ""; + } + + if($this->acl_is_writeable("gotoMimeEmbeddedApplication") && !preg_match("/freeze/i",$this->FAIstate)){ + $EApps_Actions = "   +   + "; + }else{ + $EApps_Actions= ""; + } + + /* Before adding some entries check acls */ + if($this->acl_is_readable("gotoMimeFilePattern")){ + foreach($this->use_gotoMimeFilePattern as $key => $pattern){ + $field1 = array("string" => $pattern); + $field2 = array("string" => preg_replace("/%s/",$key,$Pattern_Actions),"attach"=>"style='border-right:0px;width:50px;'"); + $fields = array($field1,$field2); + $DivPatterns -> AddEntry($fields); + } + } + + if($this->acl_is_readable("gotoMimeApplication")){ + foreach($this->use_gotoMimeApplication as $key => $pattern){ + $field1 = array("string" => $pattern); + $field2 = array("string" => preg_replace("/%s/",$key,$Apps_Actions),"attach"=>"style='border-right:0px;width:50px;'"); + $fields = array($field1,$field2); + $DivApps -> AddEntry($fields); + } + } + if($this->acl_is_readable("gotoMimeEmbeddedApplication")){ + foreach($this->use_gotoMimeEmbeddedApplication as $key => $pattern){ + $field1 = array("string" => $pattern); + $field2 = array("string" => preg_replace("/%s/",$key,$EApps_Actions),"attach"=>"style='border-right:0px;width:50px;'"); + $fields = array($field1,$field2); + $DivEApps -> AddEntry($fields); + } + } + $smarty->assign("bases", $this->get_allowed_bases()); + $smarty->assign("base_select", $this->base); + $smarty->assign("isReleaseMimeType", $this->is_release()); + $smarty->assign("gotoMimeFilePatterns", $DivPatterns->DrawList()); + $smarty->assign("gotoMimeApplications", $DivApps->DrawList()); + $smarty->assign("gotoMimeEmbeddedApplications", $DivEApps->DrawList()); + + $smarty->assign("ApplicationList",$this->ApplicationList); + + /* Assign class vars to smarty */ + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + /* Assign additional vars that are not included in attributes*/ + foreach(array("gotoMimeLeftClickAction_I","gotoMimeLeftClickAction_E","gotoMimeLeftClickAction_Q") as $attr){ + $smarty->assign($attr,$this->$attr); + } + + /* Assign select box options */ + $smarty->assign("gotoMimeGroups",$this->MimeGroups); + $smarty->assign("gotoMimeIcon" ,$this->get_picture()); + return($smarty->fetch(get_template_path("generic.tpl",TRUE,dirname(__FILE__)))); + } + + + function save_object() + { + if(isset($_POST['MimeGeneric']) && !preg_match("/freeze/i",$this->FAIstate)){ + + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + /* Only save base if we are not in release mode */ + if(!$this->is_release()){ + + /* Set new base if allowed */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + + } + + /* Save radio buttons */ + if($this->acl_is_writeable("gotoMimeLeftClickAction")){ + if(isset($_POST['gotoMimeLeftClickAction_IE'])){ + $chr = $_POST['gotoMimeLeftClickAction_IE']; + if($chr == "E"){ + $this->gotoMimeLeftClickAction_E = true; + $this->gotoMimeLeftClickAction_I = false; + }else{ + $this->gotoMimeLeftClickAction_E = false; + $this->gotoMimeLeftClickAction_I = true; + } + } + if(isset($_POST['gotoMimeLeftClickAction_Q'])){ + $this->gotoMimeLeftClickAction_Q = true; + }else{ + $this->gotoMimeLeftClickAction_Q = false; + } + } + } + } + + + /* save current changes */ + function save() + { + /* Create gotoMimeLeftClickAction out of checkboxes and radio buttons */ + $arr = array ("E","I","Q"); + $str = ""; + foreach ($arr as $Chr){ + $var = "gotoMimeLeftClickAction_".$Chr; + if($this->$var){ + $str .= $Chr; + } + } + $this->gotoMimeLeftClickAction = $str; + + /* Create array entries with priority tag ( Test|3 )*/ + foreach(array("gotoMimeEmbeddedApplication","gotoMimeApplication") as $attr){ + $i = 0; + $use_attr = "use_".$attr; + $tmp = array(); + $this->$attr = array(); + foreach($this->$use_attr as $entry){ + $tmp[] = $entry."|".$i ++; + } + $this->$attr = $tmp; + } + + /* Create array entries */ + foreach(array("gotoMimeFilePattern") as $attr){ + $i = 0; + $use_attr = "use_".$attr; + $tmp = array(); + $this->$attr = array(); + foreach($this->$use_attr as $entry){ + $tmp[] = $entry; + } + $this->$attr = $tmp; + } + + /* Remove Icon if requested */ + if($this->use_gotoMimeIcon != "*removed*"){ + $this->gotoMimeIcon = $this->iconData; + }else{ + $this->gotoMimeIcon = ""; + } + + plugin::save(); + + /* If this is a newly created object, skip storing those + attributes that contain an empty array */ + if($this->orig_dn == "new"){ + foreach(array("gotoMimeEmbeddedApplication","gotoMimeApplication","gotoMimeFilePattern") as $attr){ + if(!count($this->$attr)){ + unset($this->attrs[$attr]); + } + } + } + + $ldap = $this->config->get_ldap_link(); + $ldap-> cd ( $this->config->current['BASE']); + $ldap->cat($this->dn); + if($ldap->count()){ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify($this->attrs); + new log("modify","mimetypes/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + new log("create","mimetypes/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + + /* Remove current mime type */ + function remove_from_parent() + { + plugin::remove_from_parent(); + $ldap = $this->config->get_ldap_link(); + $ldap->rmDir($this->dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + new log("remove","mimetypes/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove"); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $og->dn, 0, get_class())); + } + } + } + + + /* Check given values */ + function check() + { + $message = plugin::check(); + if($this->cn == "" ){ + $message[] = msgPool::required(_("Name")); + } + if(!count($this->use_gotoMimeFilePattern)){ + $message[] = msgPool::required(_("File pattern")); + } + + /* Check if there is already a mime type with this cn */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current["BASE"]); + + if($this->is_release()){ + $base = $this->parent->parent->mime_release; + }else{ + $base = get_ou("mimetypeRDN").$this->base; + } + + $ldap->ls("(&(objectClass=gotoMimeType)(cn=".$this->cn."))",$base,array("cn")); + if($ldap->count()){ + $attrs = $ldap->fetch(); + if($this->dn != $attrs['dn']) { + $message[]= msgPool::duplicated("cn"); + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return($message); + } + + + /** Helper functions **/ + + /* Set a new picture */ + function set_new_picture($filename) + { + if (empty($filename)){ + $filename= "./plugins/goto/images/default_icon.png"; + $this->use_gotoMimeIcon= "*removed*"; + }else{ + $this->use_gotoMimeIcon= $filename; + } + + if (file_exists($filename)){ + $fd = fopen ($filename, "rb"); + $this->iconData= fread ($fd, filesize ($filename)); + session::set('binary',$this->iconData); + session::set('binarytype',"image/jpeg"); + fclose ($fd); + } + } + + /* Get picture link */ + function get_picture() + { + session::set('binary',$this->iconData); + session::set('binarytype',"image/jpeg"); + return("getbin.php"); + } + + /* Transports the given Arraykey one position up*/ + function ArrayUp($atr,$attrs) + { + $ret = $attrs; + $pos = $this->getpos($atr,$attrs) ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == 1))){ + $before = array_slice($attrs,0,($pos-2)); + $mitte = array_reverse(array_slice($attrs,($pos-2),2)); + $unten = array_slice($attrs,$pos); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + + /* Transports the given Arraykey one position down*/ + function ArrayDown($atr,$attrs) + { + $ret = $attrs; + $pos = $this->getpos($atr,$attrs) ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == $cn))){ + $before = array_slice($attrs,0,($pos-1)); + $mitte = array_reverse(array_slice($attrs,($pos-1),2)); + $unten = array_slice($attrs,($pos+1)); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + + /* return the position of the element in the array */ + function getpos($atr,$attrs) + { + $i = 0; + foreach($attrs as $attr => $name) { + $i++; + if($attr == $atr){ + return($i); + } + } + return(-1); + } + + + /* Remove this element from array */ + function ArrayRemove($key,$array,$reorder = false) + { + if(isset($array[$key])){ + unset($array[$key]); + if($reorder){ + $tmp = array(); + foreach($array as $entry){ + $tmp[] = $entry; + } + $array = $tmp; + } + } + return($array); + } + + + /* Combine new array */ + function combineArrays($ar0,$ar1,$ar2) + { + $ret = array(); + if(is_array($ar0)) + foreach($ar0 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar1)) + foreach($ar1 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar2)) + foreach($ar2 as $ar => $a){ + $ret[]=$a; + } + return($ret); + } + + + /* Return a dialog with all fields that must be changed, + if we want to copy this entry */ + function getCopyDialog() + { + $str = ""; + + $smarty = get_smarty(); + $smarty->assign("cn", $this->cn); + $smarty->assign("description", $this->description); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); + + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + /* Save all */ + function saveCopyDialog() + { + $attrs = array("cn","description"); + foreach($attrs as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Mime type generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("mimetypes" => array("description" => _("Mime types"), + "objectClass" => "gotoMimeType")), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "gotoMimeGroup" => _("Mime group"), + "description" => _("Description"), + "base" => _("Base"), + "gotoMimeApplication" => _("Application"), + "gotoMimeLeftClickAction" => _("Left click action"), + "gotoMimeIcon" => _("Icon"), + "gotoMimeFilePattern" => _("File patterns"), + "gotoMimeEmbeddedApplication" => _("Embedded applications")) + )); + + } + + + function is_release() + { + if(is_object($this->parent->parent)){ + return($this->parent->parent->IsReleaseManagementActivated()); + }else{ + /* Check if we should enable the release selection */ + $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + return(true); + } + } + return(FALSE); + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + $source_o = new mimetype($this->config,$source['dn'],$this->parent); + + foreach(array("gotoMimeLeftClickAction_Q","gotoMimeEmbeddedApplication","gotoMimeApplication","gotoMimeFilePattern","gotoMimeIcon","iconData") as $name){ + $use_attr = "use_".$name; + if(isset($this->$use_attr)){ + $this->$use_attr= $source_o->$use_attr; + } + $this->$name = $source_o->$name; + } + foreach($this->attributes as $name){ + $this->$name = $source_o->$name; + } + + if($this->iconData){ + $this->use_gotoMimeIcon ="Not emtpy, causes icon to be written."; + } + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/mimetypes/class_mimetypeManagement.inc b/trunk/gosa-plugins/goto/admin/mimetypes/class_mimetypeManagement.inc new file mode 100644 index 000000000..f7be97b7e --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/mimetypes/class_mimetypeManagement.inc @@ -0,0 +1,773 @@ +config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + return(true); + } + return(false); + } + + + function mimetypeManagement (&$config, &$ui) + { + /* Save configuration for internal use */ + $this->config = &$config; + $this->ui = &$ui; + + /* Check if copy & paste is activated */ + if($this->config->get_cfg_value("copyPaste")){ + $this->CopyPasteHandler = new CopyPasteHandler($this->config); + } + + /* Creat dialog object */ + $this->DivListMimeTypes = new divListMimeTypes($this->config,$this); + + if($this->IsReleaseManagementActivated()){ + + /* Check if we should enable the release selection */ + $this->enableReleaseManagement = true; + + /* Hide SubSearch checkbox */ + $this->DivListMimeTypes->DisableCheckBox("SubSearch"); + } + + /* Set default release */ + if(!$this->IsReleaseManagementActivated()){ + $this->mime_base = get_ou("mimetypeRDN").$this->config->current['BASE']; + $this->acl_base = $this->config->current['BASE']; + if(!session::is_set("mime_filter")){ + + /* Set intial release */ + $rel = $config->search("faiManagement","DEFAULTFAIRELEASE",array("menu")); + if(empty($rel)){ + $rel = $this->mime_base; + } + session::set("mime_filter",array("mime_base" => $rel)); + } + $mime_filter = session::get("mime_filter"); + $this->mime_base = $mime_filter['mime_base']; + }else{ + $this->mime_base = get_ou("mimetypeRDN").$this->config->current['BASE']; + $this->acl_base = &$this->DivListMimeTypes->selectedBase; + + /* Set intial release */ + $rel = $config->search("faiManagement","DEFAULTFAIRELEASE",array("menu")); + $rels = array_flip($this->getReleases()); + if(isset($rels[$rel])){ + $rel = $rels[$rel]; + }else{ + $rel = $this->mime_base; + } + + if(!session::is_set("mime_filter")){ + session::set("mime_filter",array("mime_base" => $this->mime_base,"mime_release" => $rel)); + } + $mime_filter = session::get("mime_filter"); + $this->mime_base = $mime_filter['mime_base']; + $this->mime_release = $mime_filter['mime_release']; + } + } + + + /* Get all releases */ + function getReleases() + { + $ldap = $this->config->get_ldap_link(); + $ret = array(); + $ret [$this->mime_base] = "/"; + + $ldap->cd($this->mime_base); + $ldap->search("(&(objectClass=FAIbranch)(objectClass=organizationalUnit))",array("ou")); + + while($attrs = $ldap->fetch()){ + $str = str_replace($this->mime_base,"",$attrs['dn']); + $tmp = array_reverse( split("ou=",$str)); + $str = ""; + foreach($tmp as $val){ + $val = trim(preg_replace("/,/","",$val)); + if(empty($val)) break; + $str .= "/".$val; + } + if(!empty($str)){ + $ret[$attrs['dn']]= preg_replace("/^\//","",$str); + } + } + asort($ret); + return($ret); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + + /**************** + Variable init + ****************/ + + /* These vars will be stored if you try to open a locked mime, + to be able to perform your last requests after showing a warning message */ + session::set('LOCK_VARS_TO_USE',array("/^act$/","/^id$/","/^mime_edit_/","/^mime_del_/", + "/^item_selected/","/^remove_multiple_mimetypes/","/^menu_action/")); + + $smarty = get_smarty(); // Smarty instance + $s_action = ""; // Contains the action to proceed + $s_entry = ""; // The value for s_action + $base_back = ""; // The Link for Backbutton + + /* Test Posts */ + foreach($_POST as $key => $val){ + // Post for delete + if(preg_match("/mime_del.*/",$key)){ + $s_action = "del"; + $s_entry = preg_replace("/mime_".$s_action."_/i","",$key); + // Post for edit + }elseif(preg_match("/mime_edit_.*/",$key)){ + $s_action="edit"; + $s_entry = preg_replace("/mime_".$s_action."_/i","",$key); + // Post for new + }elseif(preg_match("/^copy_.*/",$key)){ + $s_action="copy"; + $s_entry = preg_replace("/^copy_/i","",$key); + }elseif(preg_match("/^cut_.*/",$key)){ + $s_action="cut"; + $s_entry = preg_replace("/^cut_/i","",$key); + // Post for new + }elseif(preg_match("/^mime_new.*/",$key)){ + $s_action="new"; + }elseif(preg_match("/^remove_multiple_mimetypes/",$key)){ + $s_action="del_multiple"; + }elseif(preg_match("/^editPaste.*/i",$key)){ + $s_action="editPaste"; + }elseif(preg_match("/^multiple_copy_mimetypes/",$key)){ + $s_action = "copy_multiple"; + }elseif(preg_match("/^multiple_cut_mimetypes/",$key)){ + $s_action = "cut_multiple"; + } + } + + if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ + $s_action ="edit"; + $s_entry = $_GET['id']; + } + + $s_entry = preg_replace("/_.$/","",$s_entry); + + /* handle C&P from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ + $s_action = "copy_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){ + $s_action = "cut_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){ + $s_action = "editPaste"; + } + + /* Create options */ + if(isset($_POST['menu_action']) && $_POST['menu_action'] == "mime_new"){ + $s_action = "new"; + } + + /* handle remove from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){ + $s_action = "del_multiple"; + } + + + /**************** + Copy & Paste handling + ****************/ + + /* Display the copy & paste dialog, if it is currently open */ + $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); + if($ret){ + return($ret); + } + + + /**************** + Create a new mime type + ****************/ + + /* New mime type? */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->acl_base,"mimetypes/mimetype"); + if (($s_action=="new") && preg_match("/c/",$acl)){ + + /* By default we set 'dn' to 'new', all relevant plugins will + react on this. */ + $this->dn= "new"; + + /* Create new usertab object */ + $this->mimetabs= new mimetabs($this->config, $this->config->data['TABS']['MIMETABS'], $this->dn,"mimetypes"); + $this->mimetabs->parent = &$this; + $this->mimetabs->set_acl_base($this->acl_base); + } + + + /**************** + Edit entry canceled + ****************/ + + /* Cancel dialogs */ + if (isset($_POST['edit_cancel'])){ + $this->remove_lock(); + $this->mimetabs= NULL; + set_object_info(); + } + + + /**************** + Edit entry finished + ****************/ + + /* Finish mime edit is triggered by the tabulator dialog, so + the user wants to save edited data. Check and save at this point. */ + if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply']) ) && (isset($this->mimetabs->config))){ + + /* Check tabs, will feed message array */ + $this->mimetabs->save_object(); + $message= $this->mimetabs->check(); + + /* Save, or display error message? */ + if (count($message) == 0){ + + /* Save data data to ldap */ + $this->mimetabs->save(); + + if (!isset($_POST['edit_apply'])){ + /* Mime type has been saved successfully, remove lock from LDAP. */ + if ($this->dn != "new"){ + $this->remove_lock(); + } + unset ($this->mimetabs); + $this->mimetabs= NULL; + set_object_info(); + }else{ + + /* Reinitialize tab */ + if($this->mimetabs instanceof tabs){ + $this->mimetabs->re_init(); + } + } + } else { + /* Ok. There seem to be errors regarding to the tab data, + show message and continue as usual. */ + msg_dialog::displayChecks($message); + } + } + + + /**************** + Edit entry + ****************/ + + /* User wants to edit data? */ + if (($s_action=="edit") && (!isset($this->mimetabs->config))){ + + /* Get 'dn' from posted 'mimelist', must be unique */ + $this->dn= $this->mimetypes[$s_entry]['dn']; + + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return(gen_locked_message ($user, $this->dn,TRUE)); + } + + /* Lock the current entry, so everyone will get the + above dialog */ + add_lock ($this->dn, $this->ui->dn); + + /* Register mimetabs to trigger edit dialog */ + $this->mimetabs= new mimetabs($this->config,$this->config->data['TABS']['MIMETABS'], $this->dn,"mimetypes"); + if($this->IsReleaseManagementActivated()){ + $this->mimetabs->set_FAIstate($this->mimetypes[$s_entry]['FAIstate'][0]); + } + $this->mimetabs->parent = &$this; + $this->mimetabs->set_acl_base($this->dn); + set_object_info($this->dn); + } + + + /******************** + Delete MULTIPLE entries requested, display confirm dialog + ********************/ + + if ($s_action=="del_multiple"){ + $ids = $this->list_get_selected_items(); + + $this->dns = array(); + if(count($ids)){ + + $disallowed = array(); + foreach($ids as $id){ + $dn = $this->mimetypes[$id]['dn']; + $acl = $this->ui->get_permissions($dn, "mimetypes/mimetype"); + if(preg_match("/d/",$acl)){ + $this->dns[$id] = $dn; + }else{ + $disallowed[] = $dn; + } + } + + if(count($disallowed)){ + msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); + } + + if(count($this->dns)){ + + /* Check locks */ + if ($user= get_multiple_locks($this->dns)){ + return(gen_locked_message($user,$this->dns)); + } + + $dns_names = array(); + foreach($this->dns as $dn){ + $dns_names[] = LDAP::fix($dn); + } + + add_lock ($this->dns, $this->ui->dn); + + /* Lock the current entry, so nobody will edit it during deletion */ + $smarty->assign("info", msgPool::deleteInfo($dns_names,_("Mime type"))); + $smarty->assign("multiple", true); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + /******************** + Delete MULTIPLE entries confirmed + ********************/ + + /* Confirmation for deletion has been passed. Users should be deleted. */ + if (isset($_POST['delete_multiple_mimetype_confirm'])){ + + $ui = get_userinfo(); + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + + $acl = $ui->get_permissions($dn,"mimetypes/mimetype"); + if(preg_match("/d/",$acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->mimetabs= new mimetabs($this->config, $this->config->data['TABS']['MIMETABS'], $dn,"mimetypes"); + $this->mimetabs->parent = &$this; + $this->mimetabs->set_acl_base($dn); + $this->mimetabs->delete (); + unset ($this->mimetabs); + $this->mimetabs= NULL; + + } else { + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); + new log("security","mimetypes/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /******************** + Delete MULTIPLE entries Canceled + ********************/ + + /* Remove lock */ + if(isset($_POST['delete_multiple_mimetype_cancel'])){ + $this->remove_lock(); + $this->dns = array(); + } + + + /**************** + Delete mime type + ****************/ + + /* Remove user was requested */ + if ($s_action == "del"){ + + /* Get 'dn' from posted 'uid' */ + $this->dn= $this->mimetypes[$s_entry]['dn']; + + /* Load permissions for selected 'dn' and check if + we're allowed to remove this 'dn' */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->dn,"mimetypes/mimetype"); + if (preg_match("/d/",$acl)){ + + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return (gen_locked_message ($user, $this->dn)); + } + + /* Lock the current entry, so nobody will edit it during deletion */ + add_lock ($this->dn, $this->ui->dn); + $smarty= get_smarty(); + $smarty->assign("info", msgPool::deleteInfo(LDAP::fix($this->dn),_("Mime type"))); + $smarty->assign("multiple", false); + return($smarty->fetch (get_template_path('remove.tpl', TRUE))); + } else { + + /* Obviously the user isn't allowed to delete. Show message and + clean session. */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); + } + } + + + /**************** + Delete mime confirmed + ****************/ + + /* Confirmation for deletion has been passed. Group should be deleted. */ + if (isset($_POST['delete_mime_confirm'])){ + + /* Some nice guy may send this as POST, so we've to check + for the permissions again. */ + $ui = get_userinfo(); + $acl = $ui->get_permissions($this->dn,"mimetypes/mimetype"); + if(preg_match("/d/",$acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->mimetabs= new mimetabs($this->config, $this->config->data['TABS']['MIMETABS'], $this->dn,"mimetypes"); + $this->mimetabs->parent = &$this; + $this->mimetabs->set_acl_base($this->dn); + $this->mimetabs->delete (); + unset ($this->mimetabs); + $this->mimetabs= NULL; + + } else { + + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), INFO_DIALOG); + new log("security","mimetypes/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + } + + + /**************** + Delete mime canceled + ****************/ + + /* Delete mime type canceled? */ + if (isset($_POST['delete_cancel'])){ + $this->remove_lock(); + set_object_info(); + } + + /* Show tab dialog if object is present */ + if (($this->mimetabs) && (isset($this->mimetabs->config))){ + $display= $this->mimetabs->execute(); + + /* Don't show buttons if tab dialog requests this */ + + if(($this->mimetabs instanceOf tabs || $this->mimetabs instanceOf plugin) && $this->mimetabs->read_only == TRUE){ + $display.= "

+ +

"; + }elseif (!$this->mimetabs->by_object[$this->mimetabs->current]->dialog){ + $display.= "

\n"; + + if(isset($this->mimetabs->FAIstate) && !preg_match("/freeze/i",$this->mimetabs->FAIstate)){ + $display.= "\n"; + $display.= " \n"; + if ($this->dn != "new"){ + $display.= "\n"; + $display.= " \n"; + } + } + + $display.= "\n"; + $display.= "

"; + } + return ($display); + } + + + /**************** + Dialog display + ****************/ + + /* Check if there is a snapshot dialog open */ + if($this->IsReleaseManagementActivated()){ + $base = $this->mime_release; + }else{ + $base = $this->mime_base; + } + if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + /* Display dialog with system list */ + $this->DivListMimeTypes->parent = $this; + $this->DivListMimeTypes->execute(); + if(!$this->IsReleaseManagementActivated()){ + $this->DivListMimeTypes->AddDepartments($this->DivListMimeTypes->selectedBase,3,1); + } + $this->reload(); + $this->DivListMimeTypes->setEntries($this->mimetypes); + return($this->DivListMimeTypes->Draw()); + } + + + /* Return departments, that will be included within snapshot detection */ + function get_used_snapshot_bases() + { + if($this->IsReleaseManagementActivated()){ + return(array($this->mime_release)); + }else{ + return(array($this->mime_base)); + } + } + + + function reload() + { + $this->mimetypes= array(); + + /* Set base for all searches */ + $base = $this->mime_base; + $Regex = $this->DivListMimeTypes->Regex; + $SubSearch = $this->DivListMimeTypes->SubSearch; + $Flags = GL_NONE | GL_SIZELIMIT; + $Filter = "(&(|(cn=".$Regex.")(description=".$Regex."))(objectClass=gotoMimeType))"; + $tmp = array(); + + if(!$this->IsReleaseManagementActivated()){ + $use_base = $this->mime_base; + if($SubSearch){ + $use_base = preg_replace("/^".preg_quote(get_ou("mimeou"), '/')."/","",$use_base); + } + }else{ + $use_base = $this->mime_release; + $SubSearch= FALSE; + } + + /* Add FAIstate to the search attributes */ + $search_attrs = array("cn","description","dn","objectClass"); + if($this->IsReleaseManagementActivated()) { + $search_attrs[] = "FAIstate"; + } + + if($SubSearch){ + $res= get_sub_list($Filter, "mimetypes",get_ou("mimeou"), $use_base, $search_attrs, $Flags); + }else{ + $res= get_list($Filter, "mimetypes",$use_base, $search_attrs, $Flags); + } + + + $tmp2 = array(); + foreach ($res as $val){ + if(!isset($val['FAIstate'])){ + $val['FAIstate'][0] = ""; + } + $tmp[strtolower($val['cn'][0]).$val['cn'][0].$val['dn']]=$val; + $tmp2[strtolower($val['cn'][0]).$val['cn'][0].$val['dn']] = strtolower($val['cn'][0]).$val['cn'][0].$val['dn']; + } + + /* sort entries */ + natcasesort($tmp2); + $this->mimetypes=array(); + foreach($tmp2 as $val){ + $this->mimetypes[]=$tmp[$val]; + } + reset ($this->mimetypes); + } + + + function remove_from_parent() + { + /* Optionally execute a command after we're done */ + $this->postremove(); + } + + + function copyPasteHandling_from_queue($s_action,$s_entry) + { + /* Check if Copy & Paste is disabled */ + if(!is_object($this->CopyPasteHandler)){ + return(""); + } + + $ui = get_userinfo(); + + /* Add a single entry to queue */ + if($s_action == "cut" || $s_action == "copy"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + $dn = $this->mimetypes[$s_entry]['dn']; + if($s_action == "copy" && $ui->is_copyable($dn,"mimetypes","mimetype")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"mimetabs","MIMETABS","mimetypes"); + } + if($s_action == "cut" && $ui->is_cutable($dn,"mimetypes","mimetype")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"mimetabs","MIMETABS","mimetypes"); + } + } + + /* Add entries to queue */ + if($s_action == "copy_multiple" || $s_action == "cut_multiple"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + + /* Add new entries to CP queue */ + foreach($this->list_get_selected_items() as $id){ + $dn = $this->mimetypes[$id]['dn']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,"mimetypes","mimetype")){ + $this->CopyPasteHandler->add_to_queue($dn,"copy","mimetabs","MIMETABS","mimetypes"); + } + if($s_action == "cut_multiple" && $ui->is_cutable($dn,"mimetypes","mimetype")){ + $this->CopyPasteHandler->add_to_queue($dn,"cut","mimetabs","MIMETABS","mimetypes"); + } + } + } + + /* Start pasting entries */ + if($s_action == "editPaste"){ + $this->start_pasting_copied_objects = TRUE; + } + + /* Return C&P dialog */ + if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ + + /* Get dialog */ + $this->CopyPasteHandler->SetVar("base",preg_replace("/^".preg_quote(get_ou("mimetypeRDN"), '/')."/","",$this->mime_base)); + $this->CopyPasteHandler->SetVar("parent",$this); + $data = $this->CopyPasteHandler->execute(); + + /* Return dialog data */ + if(!empty($data)){ + return($data); + } + } + + /* Automatically disable status for pasting */ + if(!$this->CopyPasteHandler->entries_queued()){ + $this->start_pasting_copied_objects = FALSE; + } + return(""); + } + + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + + /* Save to LDAP */ + function save() + { + /* Optionally execute a command after we're done */ + $this->postcreate(); + } + + function remove_lock() + { + if (isset($this->mimetabs->dn)){ + del_lock ($this->mimetabs->dn); + }elseif(isset($this->dn) && !empty($this->dn) && $this->dn != "new"){ + del_lock($this->dn); + } + if(isset($this->dns) && is_array($this->dns) && count($this->dns)){ + del_lock($this->dns); + } + } + + function save_object() + { + $this->DivListMimeTypes->save_object(); + if(is_object($this->CopyPasteHandler)){ + $this->CopyPasteHandler->save_object(); + } + + if($this->IsReleaseManagementActivated() && isset($_POST['mime_release'])){ + $sel_rel = get_post('mime_release'); + $releases = array_flip($this->getReleases()); + if(isset($releases[$sel_rel])){ + $this->mime_release = $releases[$sel_rel]; + } + $mime_filter = session::get("mime_filter"); + $mime_filter['mime_release'] = $this->mime_release; + session::set("mime_filter",$mime_filter); + }elseif(!$this->IsReleaseManagementActivated()){ + $this->mime_base = get_ou("mimetypeRDN").$this->DivListMimeTypes->selectedBase; + $mime_filter = session::get("mime_filter"); + $mime_filter['mime_base'] = $this->mime_base; + session::set("mime_filter",$mime_filter); + } + } + + + function check() {} + function adapt_from_template($dn, $skip= array()) {} + function password_change_needed() {} +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/mimetypes/generic.tpl b/trunk/gosa-plugins/goto/admin/mimetypes/generic.tpl new file mode 100644 index 000000000..c8450d509 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/mimetypes/generic.tpl @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

[M] {t}Generic{/t}

+
+ + + + + + + + + + + + + +{if !$isReleaseMimeType} + + + + + +{/if} +
+ {t}Mime type{/t}{$must} + +{render acl=$cnACL} + +{/render} +
+ {t}Mime group{/t} + +{render acl=$gotoMimeGroupACL} + +{/render} +
+ {t}Description{/t} + +{render acl=$descriptionACL} + +{/render} +
+ {render acl=$baseACL} + + {/render} + {if !$isReleaseMimeType} + {render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + + {/render} + {/if} +
+ +
+ + + + + +
+
+{if $IconReadable} + {t}Mime icon{/t} +{else} + {t}Mime icon{/t} +{/if} +
+  
+ +{render acl=$gotoMimeIconACL} + +{/render} +{render acl=$gotoMimeIconACL} + +{/render} +
+
+

 

+
+

{t}Left click{/t} {t}Left click{/t}

+
+ {t}File patterns{/t}{$must} +{render acl=$gotoMimeFilePatternACL} + {$gotoMimeFilePatterns} +{/render} + +{render acl=$gotoMimeFilePatternACL} + +{/render} +{render acl=$gotoMimeFilePatternACL} + +{/render} + + {t}Applications{/t} +{render acl=$gotoMimeApplicationACL} + {$gotoMimeApplications} +{/render} + +{render acl=$gotoMimeApplicationACL} + +{/render} +{render acl=$gotoMimeApplicationACL} + +{/render} +{render acl=$gotoMimeApplicationACL} + +{/render} +
+

 

+
+

{t}Embedding{/t} {t}Embedding{/t}

+
+ + + + + +
+{render acl=$gotoMimeLeftClickActionACL} + +{/render} + {t}Show file in embedded viewer{/t} +
+ +{render acl=$gotoMimeLeftClickActionACL} + +{/render} + {t}Show file in external viewer{/t} +
+ +{render acl=$gotoMimeLeftClickActionACL} + +{/render} + {t}Ask whether to save to local disk{/t} +
+ +
+ {t}Applications{/t} +{render acl=$gotoMimeEmbeddedApplicationACL} + {$gotoMimeEmbeddedApplications} +{/render} +{render acl=$gotoMimeEmbeddedApplicationACL} + +{/render} +{render acl=$gotoMimeEmbeddedApplicationACL} + +{/render} +{render acl=$gotoMimeEmbeddedApplicationACL} + +{/render} +
+ + + diff --git a/trunk/gosa-plugins/goto/admin/mimetypes/main.inc b/trunk/gosa-plugins/goto/admin/mimetypes/main.inc new file mode 100644 index 000000000..cbd12a1cc --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/mimetypes/main.inc @@ -0,0 +1,63 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('MimeTypeManagement'); +}else{ + + /* Create MimeTypeManagement object on demand */ + if (!session::is_set('MimeTypeManagement')){ + session::set('MimeTypeManagement',new mimetypeManagement ($config, $ui)); + } + + /* Get object */ + $MimeTypeManagement = session::get('MimeTypeManagement'); + $MimeTypeManagement->save_object(); + $output= $MimeTypeManagement->execute(); + + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header(get_template_path($MimeTypeManagement->plIcon), _("Mimetype management"), "\"\" ".LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path($MimeTypeManagement->plIcon), _("Mimetype management")); + } + + /* Reset requested? */ + if (isset($_GET['reset']) && $_GET['reset'] == 1){ + session::un_set ('MimeTypeManagement'); + } + + /* Show and save dialog */ + $display.= $output; + session::set('MimeTypeManagement',$MimeTypeManagement); +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/mimetypes/paste_generic.tpl b/trunk/gosa-plugins/goto/admin/mimetypes/paste_generic.tpl new file mode 100644 index 000000000..34b5e0751 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/mimetypes/paste_generic.tpl @@ -0,0 +1,31 @@ + + + + + + + +
+

 {t}Generic{/t}

+
+ + + + + + + + + + +
+ {t}Mime type{/t} + + +
+ {t}Description{/t} + + +
+ +
diff --git a/trunk/gosa-plugins/goto/admin/mimetypes/release_select.tpl b/trunk/gosa-plugins/goto/admin/mimetypes/release_select.tpl new file mode 100644 index 000000000..37813af23 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/mimetypes/release_select.tpl @@ -0,0 +1,16 @@ +
+

[F]{t}Branches{/t}

+
+
+ + + + +
+ {t}Current release{/t}  + +
+
+
diff --git a/trunk/gosa-plugins/goto/admin/mimetypes/remove.tpl b/trunk/gosa-plugins/goto/admin/mimetypes/remove.tpl new file mode 100644 index 000000000..440fc2447 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/mimetypes/remove.tpl @@ -0,0 +1,23 @@ +
+  {t}Warning{/t} +
+

+ {$info} + {t}This may be used by several groups. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+

+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ {if $multiple} + +   + + {else} + +   + + {/if} +

+ diff --git a/trunk/gosa-plugins/goto/admin/mimetypes/tabs_mimetypes.inc b/trunk/gosa-plugins/goto/admin/mimetypes/tabs_mimetypes.inc new file mode 100644 index 000000000..efc06be71 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/mimetypes/tabs_mimetypes.inc @@ -0,0 +1,54 @@ +addSpecialTabs(); + } + + function set_FAIstate($state) + { + $this->FAIstate = $state; + foreach($this->by_name as $name => $desc){ + $this->by_object[$name]->FAIstate = $state; + } + } + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['mimetype']; + + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + if($this->parent->IsReleaseManagementActivated()){ + $new_dn= "cn=".$baseobject->cn.",".$this->parent->mime_release; + }else{ + $new_dn= "cn=".$baseobject->cn.",".get_ou('mimetypeRDN').$baseobject->base; + } + + /* Move group? */ + if ($this->dn != $new_dn){ + + /* Write entry on new 'dn' */ + if ($this->dn != "new"){ + $baseobject->move($this->dn, $new_dn); + $this->by_object['mimetype']= $baseobject; + } + + /* Happen to use the new one */ + $this->dn= $new_dn; + } + + tabs::save(); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/ogroups/goto/class_termgroup.inc b/trunk/gosa-plugins/goto/admin/ogroups/goto/class_termgroup.inc new file mode 100644 index 000000000..53556ea08 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/ogroups/goto/class_termgroup.inc @@ -0,0 +1,417 @@ + "halt", + "reboot" => "reboot", + "update" => "update", + "reinstall" => "reinstall", + "rescan" => "rescan", + "wake" => "wakeup", + # These are currently not supported by the tftp daemon + # "memcheck" => "memcheck", + # "sysinfo" => "sysinfo" + ); + + var $attributes = array("gotoMode","gotoSyslogServer", "gotoNtpServer", "gotoTerminalPath", "gotoSwapServer"); + var $objectclasses = array("gotoWorkstationTemplate"); + var $CopyPasteVars = array("gotoNtpServers","modes","inheritTimeServer","members"); + var $view_logged = FALSE; + var $nfsservers = array(); + var $swapservers = array(); + var $member_of_ogroup= false; + + + function termgroup (&$config, $dn= NULL, $parent= NULL) + { + /*************** + Some initialisations + ***************/ + + plugin::plugin($config, $dn, $parent); + $ldap= $config->get_ldap_link(); + + $this->is_account = true; + $this->modes["active"]= _("Activated"); + $this->modes["locked"]= _("Locked"); +// $this->modes["memcheck"]= _("Memory test"); +// $this->modes["sysinfo"]= _("System analysis"); + + $this->orig_dn = $this->dn; + + /*************** + Get mac addresses from member objects + ***************/ + + /* We're only interested in the terminal members here, evaluate + these... */ + if(isset($this->attrs['member'])){ + for ($i= 0; $i<$this->attrs['member']['count']; $i++){ + $member= $this->attrs['member'][$i]; + $ldap->cat($member, array('objectClass', 'macAddress', 'cn')); + if ($ldap->success()){ + $attrs = $ldap->fetch(); + if (in_array("gotoTerminal", $attrs['objectClass']) || + in_array("gotoWorkstation", $attrs['objectClass'])){ + if (isset($attrs['macAddress'])){ + $this->members[$attrs['cn'][0]]= $attrs['macAddress'][0]; + } else { + $this->members[$attrs['cn'][0]]= ""; + } + } + } + } + } + + /*************** + Perpare NTP settings + ***************/ + + /* Create used ntp server array */ + $this->gotoNtpServer= array(); + if(isset($this->attrs['gotoNtpServer'])){ + $this->inheritTimeServer = false; + unset($this->attrs['gotoNtpServer']['count']); + foreach($this->attrs['gotoNtpServer'] as $server){ + $this->gotoNtpServer[$server] = $server; + } + } + + /* Get Share servers */ + $tmp2 = array(); + $tmp2['!']= _("Local swap"); + foreach($this->config->data['SERVERS']['NBD'] as $server){ + if($server != "default"){ + $tmp2[$server]= $server; + }else{ + if($this->member_of_ogroup){ + $tmp2[$server]="["._("inherited")."]"; + } + } + } + $this->swapservers= $tmp2; + + $tmp2 = array(); + foreach($this->config->data['SERVERS']['NFS'] as $server){ + if($server != "default"){ + $tmp2[$server]= $server; + }else{ + if($this->member_of_ogroup){ + $tmp2[$server]="["._("inherited")."]"; + } + } + } + $this->nfsservers= $tmp2; + + /* Set inherit checkbox state */ + if(in_array("default",$this->gotoNtpServer)){ + $this->inheritTimeServer = true; + $this->gotoNtpServer=array(); + } + + /* Create available ntp options */ + $this->gotoNtpServers = $this->config->data['SERVERS']['NTP']; + foreach($this->gotoNtpServers as $key => $server){ + if($server == "default"){ + unset($this->gotoNtpServers[$key]); + } + } + } + + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if (!$this->acl_is_createable() && $this->dn == "new"){ + $message[]= msgPool::permCreate(); + } + + /* Check for valid ntpServer selection */ + if((!$this->inheritTimeServer) && (!count($this->gotoNtpServer))){ + $message[]= msgPool::required(_("NTP server")); + } + return($message); + } + + function remove_from_parent() + { + /* Workstation startup is using gotoWorkstationTemplate too, + if we remove this oc all other not manged attributes will cause errors */ + if(isset($this->attrs['gotoKernelParameters'])){ + $this->objectclasses = array(); + } + + /* Remove acc */ + plugin::remove_from_parent(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->orig_dn); + $ldap->modify($this->attrs); + $this->handle_post_events("remove"); + new log("remove","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","ogroups/".get_class($this),$this->dn); + } + + + /*************** + Handle requested action + ***************/ + + /* Watch for events */ + if ((isset($_POST['action'])) && ($this->acl_is_writeable("FAIstate")) && isset($this->mapActions[$_POST['saction']]) ){ + + /* Check if we have an DaemonEvent for this action */ + $action = $this->mapActions[$_POST['saction']]; + if(class_available("DaemonEvent")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + $macaddresses= array(); + foreach ($this->members as $cn => $macAddress){ + $macaddresses[]= $macAddress; + } + + if(isset($events['TRIGGERED']["DaemonEvent_".$action])){ + $evt = $events['TRIGGERED']["DaemonEvent_".$action]; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->add_targets($macaddresses); + $tmp->set_type(TRIGGERED_EVENT); + $o_queue = new gosaSupportDaemon(); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } else { + msg_dialog::display(_("Event error"), + sprintf(_("Event '%s' is not available!"),$action),ERROR_DIALOG); + } + } + + + /*************** + Add remove NTP server + ***************/ + + /* Add new ntp Server to our list */ + if((isset($_POST['addNtpServer'])) && (isset($_POST['gotoNtpServers']))){ + $this->gotoNtpServer[$_POST['gotoNtpServers']] = $_POST['gotoNtpServers']; + } + + /* Delete selected NtpServer for list of used servers */ + if((isset($_POST['delNtpServer'])) && (isset($_POST['gotoNtpServerSelected']))){ + foreach($_POST['gotoNtpServerSelected'] as $name){ + unset($this->gotoNtpServer[$name]); + } + } + + + /*************** + Prepare smarty + ***************/ + + /* Set government mode */ + $smarty= get_smarty(); + + if (isset($this->parent->by_name['termstartup'])){ + $smarty->assign("is_termgroup", "1"); + } else { + $smarty->assign("is_termgroup", "0"); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated) { + $smarty->assign($name."ACL",$this->getacl($name)); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr, $this->$attr); + } + + /* Variables */ + foreach(array("gotoMode","gotoNtpServer") as $val){ + $smarty->assign($val."_select", $this->$val); + } + + $smarty->assign("actions", array("halt" => _("Switch off"), "reboot" => _("Reboot"), + "instant_update" => _("Instant update"), + "update" => _("Scheduled update"), + "wake" => _("Wake"), + "reinstall" => _("Reinstall"), + "rescan" => _("Rescan hardware"), + "memcheck" => _("Memory test"), + "sysinfo" => _("System analysis"))); + + $smarty->assign("inheritTimeServer",$this->inheritTimeServer); + $smarty->assign("modes", $this->modes); + + $tmp = array(); + foreach($this->gotoNtpServers as $server){ + if(!in_array($server,$this->gotoNtpServer)){ + $tmp[$server] = $server; + } + } + + $smarty->assign("gotoNtpServers",$tmp); + + $smarty->assign("nfsservers", $this->nfsservers); + $smarty->assign("swapservers", $this->swapservers); + + $smarty->assign("syslogservers", $this->config->data['SERVERS']['SYSLOG']); + $smarty->assign("gotoSyslogServer_select", $this->gotoSyslogServer); + + /* Variables */ + foreach(array("gotoTerminalPath", "gotoSwapServer") as $val){ + $smarty->assign($val."_select", $this->$val); + } + + + /* Show main page */ + return ($smarty->fetch (get_template_path('termgroup.tpl', TRUE, dirname(__FILE__)))); + } + + + function save_object() + { + plugin::save_object(); + /* Set inherit mode */ + if(isset($_POST['workgeneric_posted'])){ + if(isset($_POST["inheritTimeServer"])){ + $this->inheritTimeServer = true; + }else{ + $this->inheritTimeServer = false; + } + } + } + + /* Save to LDAP */ + function save() + { + if (isset($this->parent->by_name['termstartup'])){ + $this->objectclasses= array("gotoTerminalTemplate"); + } else { + $this->objectclasses= array("gotoWorkstationTemplate"); + } + + plugin::save(); + + /*************** + Prepare special vars + ***************/ + + /* Unset some special vars ... */ + foreach (array("gotoSyslogServer") as $val){ + if ($this->attrs[$val] == "default"){ + $this->attrs[$val]= array(); + } + } + + /* Update ntp server settings */ + if($this->inheritTimeServer){ + $this->attrs['gotoNtpServer'] = "default"; + }else{ + /* Set ntpServers */ + $this->attrs['gotoNtpServer'] = array(); + foreach($this->gotoNtpServer as $server){ + $this->attrs['gotoNtpServer'][] = $server; + } + } + + + /*************** + Write to ldap + ***************/ + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if($this->initially_was_account){ + new log("modify","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if(!$this->didAction){ + $this->handle_post_events("modify"); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + } + + + static function plInfo() + { + return (array( + "plShortName" => _("System"), + "plDescription" => _("System group"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 5, + "plSection" => array("administration"), + "plCategory" => array("ogroups"), + "plProvidedAcls"=> array( + "gotoMode" => _("Mode"), + "gotoSyslogServer" => _("Syslog server"), + "FAIstate" => _("Action flag"), + "gotoNtpServer" => _("Ntp server"), + "gotoTerminalPath" => _("Root server"), + "gotoSwapServer" => _("Swap server")) + )); + } + + function PrepareForCopyPaste($source) + { + /* Create used ntp server array */ + $this->gotoNtpServer= array(); + + if(isset($source['gotoNtpServer'])){ + $this->inheritTimeServer = false; + unset($source['gotoNtpServer']['count']); + foreach($source['gotoNtpServer'] as $server){ + $this->gotoNtpServer[$server] = $server; + } + } + + /* Set inherit checkbox state */ + if(in_array("default",$this->gotoNtpServer)){ + $this->inheritTimeServer = true; + $this->gotoNtpServer=array(); + } + + /* Create available ntp options */ + $this->gotoNtpServers = $this->config->data['SERVERS']['NTP']; + foreach($this->gotoNtpServers as $key => $server){ + if($server == "default"){ + unset($this->gotoNtpServers[$key]); + } + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/ogroups/goto/termgroup.tpl b/trunk/gosa-plugins/goto/admin/ogroups/goto/termgroup.tpl new file mode 100644 index 000000000..af2d0a5d7 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/ogroups/goto/termgroup.tpl @@ -0,0 +1,132 @@ +
+{t}Warning{/t}: {t}Actions you choose here influence all systems in this object group. Additionally, all values editable here can be inherited by the clients assigned to this object group.{/t} +
+
+

 

+

{t}Generic{/t}

+ + + + + + + + + + + + + +
+ + + + + +

+{render acl=$gotoNtpServerACL} + +{/render} +
+{render acl=$gotoNtpServerACL} + +{/render} +{render acl=$gotoNtpServerACL} + +{/render} + +{render acl=$gotoNtpServerACL} + +{/render} +
+ + +
+ + + + + + + + + + + + + {if $is_termgroup} + + + + + + + + + {/if} +
{t}Mode{/t} +{render acl=$gotoModeACL} + +{/render} +
 
+{render acl=$gotoSyslogServerACL} + +{/render} +
+ {render acl=$gotoTerminalPathACL} + + {/render} +
+ {render acl=$gotoSwapServerACL} + + {/render} +
+
+

 

+
+ + + + +
+ + + +

{t}Action{/t}

+ + + + + +
+{render acl=$FAIstateACL} + +{/render} + +{render acl=$FAIstateACL} + +{/render} +
+ + + + + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/ArpNewDevice.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/ArpNewDevice.tpl new file mode 100644 index 000000000..6ad765324 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/ArpNewDevice.tpl @@ -0,0 +1,31 @@ +

{t}Integrating unknown devices{/t}

+

+ {t}The current device has been detected by the ARP monitor used by GOsa. You can integrate this device into your running DHCP/DNS infrastructure by submitting this form. The device entry will disappear from the list of the systems and move to the DNS/DHCP configuration.{/t} +

+ + + + + + + +
+ + + + + + + +
+
+

+{$netconfig} + + + +

diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/SelectDeviceType.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/SelectDeviceType.tpl new file mode 100644 index 000000000..90ecc5668 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/SelectDeviceType.tpl @@ -0,0 +1,53 @@ +
+

+{t}This system has no system type configured. Please choose a system type for this object and an optional inheritance group. Press the 'continue' button to proceed.{/t} +
+
+

+

+
+{if $dns_cnt == 1} +{t}Please select a system type and an optional bundle of predefined settings to be inherited.{/t} +{else} +{t}Please select a system type and a bundle of predefined settings to be inherited.{/t} +{/if} +
+
+

+ + + + + +
+ + + + +
+ {t}System type{/t}  + +
+
+ + + + +
+ {t}Choose an object group as template{/t}  + +
+
+

 

+

+ + +

diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/chooser.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/chooser.tpl new file mode 100644 index 000000000..b7c32e5b3 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/chooser.tpl @@ -0,0 +1,21 @@ +

{t}Choose the kind of system component you want to create{/t}

+ +

+ {t}Linux terminals and workstations are autocreated on bootup. For this reason you're only be able to create templates for a specific tree. Servers are normally automatically added too, but in some special cases you may need to create a faked server entry to provide GOsa with some informations. Other network components may be used for Nagios setups to create component dependencies.{/t} +

+ +{t}Linux thin client template{/t}
+{t}Linux workstation template{/t}
+{t}Linux Server{/t}
+ +{t}Network printer{/t}
+{t}Phone{/t}
+{t}Other network component{/t}
+ +

+ +   + +

+ + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_ArpNewDevice.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_ArpNewDevice.inc new file mode 100644 index 000000000..fb9a41b58 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_ArpNewDevice.inc @@ -0,0 +1,75 @@ +netConfigDNS = new termDNS($this->config,$this,$this->objectclasses); + $this->acl = "#all#"; + $this->netConfigDNS->acl = $this->acl; + $this->netConfigDNS->force_dns(); + } + + function execute() + { + $smarty = get_smarty(); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + $this->netConfigDNS->cn= $this->cn; + $smarty->assign("netconfig", $this->netConfigDNS->execute()); + + /* Display sub dialog from network settings */ + $this->netConfigDNS->acl = $this->acl; + if($this->netConfigDNS->dialog){ + $this->dialog = TRUE; + return($this->netConfigDNS->execute()); + }else{ + $this->dialog = FALSE; + } + + return($smarty->fetch (get_template_path('ArpNewDevice.tpl', TRUE,dirname(__FILE__)))); + } + + function check() + { + $message= plugin::check(); + $message= array_merge($message, $this->netConfigDNS->check()); + if(empty($this->cn)){ + $message[] = msgPool::required(_("Name")); + } + return($message); + } + + function save_object() + { + if(isset($_POST['ArpNewDevice_posted'])){ + plugin::save_object(); + $this->netConfigDNS->save_object(); + } + } + + function save() + { + $this->netConfigDNS->acl = $this->acl; + plugin::save(); + $this->netConfigDNS->cn = $this->cn; + $this->netConfigDNS->save($this->dn); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->rmdir_recursive($this->dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $key->dn, LDAP_DEL, get_class())); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_SelectDeviceType.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_SelectDeviceType.inc new file mode 100644 index 000000000..09e41147c --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_SelectDeviceType.inc @@ -0,0 +1,102 @@ +dns = array($dn); + plugin::plugin ($config, NULL); + }else{ + $this->dns = $dn; + plugin::plugin ($config, $dn); + } + + /* Get object groups */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + $ldap->search("(&(objectClass=gosaGroupOfNames)(cn=*))",array("cn")); + $tmp= array(); + while($attrs = $ldap->fetch()){ + $tmp[$attrs['dn']]= $attrs['cn'][0]; + } + asort($tmp, SORT_LOCALE_STRING); + $this->ObjectGroups= $tmp; + + $this->SystemTypes =array("workstation"=>_("Workstation"), "terminal"=>_("Terminal"), "server"=>_("Server")); + if(class_available("opsi")){ + $this->SystemTypes["opsi_client"]= _("Windows workstation"); + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + + /* Get object groups */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + $ldap->search("(&(objectClass=gosaGroupOfNames)(cn=*))",array("gosaGroupObjects","cn")); + $tmp= array("W" => array(),"T" => array(), "S" => array(),"O" => array()); + while($attrs = $ldap->fetch()){ + $tmp[preg_replace("/[\[\] ]/","",$attrs['gosaGroupObjects'][0])][$attrs['dn']] = $attrs['cn'][0]; + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + $map = array("workstation" => "W","terminal" => "T","server" => "S", "opsi_client" => "O"); + $smarty->assign("dns_cnt" , count($this->dns)); + $smarty->assign("ogroups", $tmp[$map[$this->SystemType]]); + $smarty->assign("SystemTypes" ,$this->SystemTypes); + $smarty->assign("SystemTypeKeys" ,array_flip($this->SystemTypes)); + $smarty->assign("ObjectGroup",$this->ObjectGroup); + $smarty->assign("SystemType",$this->SystemType); + $display.= $smarty->fetch(get_template_path('SelectDeviceType.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + /* Save data to object */ + function save_object() + { + plugin::save_object(); + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + } + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + return ($message); + } + + /* Save to LDAP */ + function save() + { + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc new file mode 100644 index 000000000..5738c0ec4 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc @@ -0,0 +1,304 @@ +parent = $parent; + $this->DevID = 0; + + /* Predefine selectable values + */ + $this->a_Types = array( + "U" => _("USB"), + "P" => _("Parallel port"), + "S" => _("Serial")); + $this->a_FlowControl = array( + "S" => _("Software"), + "H" => _("Hardware")); + $this->a_Parities = array( + "E" => _("Even"), + "O" => _("Odd"), + "N" => _("None")); + $this->a_Speeds = array( + "4800" => "4.800 "._("bit/s"), + "9600" => "9.600 "._("bit/s"), + "19200" => "19.200 "._("bit/s"), + "38400" => "38.400 "._("bit/s"), + "57600" => "57.600 "._("bit/s"), + "115200"=> "115.200 "._("bit/s"), + "230400"=> "230.400 "._("bit/s"), + "460800"=> "460.800 "._("bit/s")); + $this->a_Bits = array( + 5,6,7,8); + $this->a_Devices = array( + "U" => "/dev/usb/lp", + "P" => "/dev/lp", + "S" => "/dev/ttyS"); + + /* Create default entry + */ + foreach($this->attributes as $attr){ + $this->default_entry[$attr] = $this->$attr; + } + + /* Load current settings + */ + if(count($data) == 0){ + $this->is_account = FALSE; + }else{ + foreach($data as $dat){ + if(substr_count($dat,":") < 8) continue; + list($s_Type,$s_Device,$i_Port,$s_Speed,$s_FlowControl,$s_Parity,$i_Bit,$s_WriteOnly,$s_Options) = split("\:",$dat); + $entry = array(); + foreach($this->attributes as $attr){ + $entry[$attr] = $$attr; + } + $this->data[] = $entry; + } + + /* Set first entry values + From "$this->data[0]" to "$this->" + */ + if(count($this->data)){ + foreach($this->attributes as $attr){ + $this->$attr = $this->data[$this->DevID][$attr]; + } + $this->is_account = TRUE; + } + } + $this->initially_was_account = $this->is_account; + } + + + /*! \brief Create HTML output of this plugin. + Depending on the current plugin status, there is a + 'create' and a 'remove'account button displayed on top + followed by the gotoLpdEnable options. + @param . + @return String HTML content + */ + public function execute() + { + $display = ""; + + /* Set smarty variables + */ + $smarty = get_smarty(); + $smarty->assign("acl",$this->parent->getacl("gotoLpdEnable")); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + foreach(array("DevID","a_Types","a_FlowControl","a_Parities","a_Speeds","a_Bits") as $attr){ + $smarty->assign($attr,$this->$attr); + } + ksort($this->data); + $smarty->assign("data_cnt",count($this->data)); + $smarty->assign("data",$this->data); + $smarty->assign("a_DevIDs",array_keys($this->data)); + $smarty->assign("is_account",$this->is_account); + return($display.$smarty->fetch(get_template_path("gotoLpdEnable.tpl",TRUE,dirname(__FILE__)))); + } + + + /*! \brief Checks the given informations and returns an array + with the error messages or an empty array if everything went fine. + @param . + @return Array of Strings Error messages. + */ + public function check() + { + $messages = plugin::check(); + if(!$this->is_account){ + return($messages); + } + foreach($this->data as $id => $entry){ + if(!tests::is_id($entry['i_Port'])){ + $messages[] = msgPool::invalid(_("Port")); + } + if(preg_match("/:/",$entry['s_Options'])){ + $messages[] = msgPool::invalid(_("Options")); + } + } + return($messages); + } + + + /*! \brief Save all ui inputs. + @param . + @return . + */ + public function save_object() + { + if(!$this->parent->acl_is_writeable("gotoLpdEnable")){ + return; + } + + if(!isset($_POST['gotoLpdEnable_entry_posted'])){ + return; + } + + /* Handle account add/remove + */ + if(isset($_POST['gotoLpdEnable_enabled'])){ + $this->is_account = TRUE; + }else{ + $this->is_account = FALSE; + } + + /* Check if we have to propose device settings + (current device info is empty and the printer type has changed) + */ + $propose_device = ""; + if(isset($_POST['s_Device']) && empty($_POST['s_Device']) && + isset($_POST['s_Type']) && $_POST['s_Type'] != $this->s_Type){ + $propose_device = $this->a_Devices[$_POST['s_Type']].$this->DevID; + } + + plugin::save_object(); + + if(!empty($propose_device)){ + $this->s_Device = $propose_device; + } + + /* Get checkbox changes + */ + if(isset($_POST['s_WriteOnly'])){ + $this->s_WriteOnly = "Y"; + }else{ + $this->s_WriteOnly = "N"; + } + + /* Write back attributes to data array ($this->data) + */ + foreach($this->attributes as $attr){ + $this->data[$this->DevID][$attr] = $this->$attr; + } + + /* Device ID has changed another printer was selected * / + if(isset($_POST['DevID']) && $_POST['DevID'] != $this->DevID){ + $this->DevID = $_POST['DevID']; + foreach($this->attributes as $attr){ + $this->$attr = $this->data[$this->DevID][$attr]; + } + } + */ + + /* Add and remove additional printer settings + if(isset($_POST['del_printer'])){ + unset($this->data[$this->DevID]); + $this->data = array_values($this->data); + if(count($this->data) == 0){ + $this->is_account = FALSE; + } + $this->DevID = key($this->data); + } + if(isset($_POST['add_printer'])){ + if(count($this->data) < 3){ + $entry = $this->default_entry; + $entry['i_Port'] = $entry['i_Port'] + count($this->data); + $entry['s_Device'] = $entry['s_Device'].count($this->data); + $this->DevID = count($this->data); + $this->data[] = $entry; + foreach($this->attributes as $attr){ + $this->$attr = $this->data[$this->DevID][$attr]; + } + } + } + */ + } + + + /*! \brief Creates an array containing all gotoLpdEnabled values, + see constructor for more details. + @param . + @return Array of gotoLpdEnabled Strings. + */ + public function save() + { + $ret = array(); + $serial_only = array("s_Speed","s_FlowControl","s_Parity","i_Bit"); + $attrs = array("s_Type","s_Device","i_Port","s_Speed","s_FlowControl","s_Parity","i_Bit","s_WriteOnly","s_Options"); + foreach($this->data as $entry){ + $str = ""; + foreach($attrs as $attr){ + if(in_array($attr,$serial_only) && $entry['s_Type'] != "Serial"){ + $str .= ":"; + }else{ + $str .= $entry[$attr].":"; + } + } + $ret[] = preg_replace("/:$/","",$str); + } + return($ret); + } + + + /*! \brief . + @param . + @return . + */ + public function acl_is_writeable($attr,$skip_write = FALSE) + { + return(TRUE); + } + + + /*! \brief . + @param . + @return . + */ + public function acl_is_removeable($skip_write = FALSE) + { + return(TRUE); + } + + + /*! \brief . + @param . + @return . + */ + public function acl_is_createable($skip_write = FALSE) + { + return(TRUE); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_printGeneric.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_printGeneric.inc new file mode 100644 index 000000000..e12c79d6b --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_printGeneric.inc @@ -0,0 +1,1069 @@ +config = &$config; + $this->dn = $dn; + + /* If parent was posted(the tabs object) we can detect the printer type. */ + if($parent){ + $this->parent = $parent; + $this->getTypeOfPrinter(); + }else{ + $this->BelongsTo = "unknown"; + return; + } + + /* Update dn, to ensure storing as printer instead of WS / terminal */ + if(preg_match("/Terminal/i",$this->BelongsTo) || preg_match("/TerminalTemplate/i",$this->BelongsTo)){ + $this->dn= preg_replace("/".preg_quote(get_ou('terminalRDN'), '/')."/",get_ou('printerRDN'),$this->dn); + } + + if(preg_match("/Workstation/i",$this->BelongsTo) || preg_match("/WorkstationTemplate/i",$this->BelongsTo)){ + $this->dn= preg_replace("/".preg_quote(get_ou('workstationRDN'), '/')."/",get_ou('printerRDN'),$this->dn); + } + + $this->orig_dn = $this->dn; + + /* Get printer settings, possibly dn has changed */ + plugin::plugin ($config, $this->dn); + + /* Get is_account initially_was_account status */ + $this->getTypeOfPrinter(true); + + /* set orig dn to new if object is new */ + $ldap= $this->config->get_ldap_link(); + $ldap->cat($this->dn, array('dn')); + if(!$ldap->count()){ + $this->orig_dn = "new"; + } + + /* create dns object */ + $this->netConfigDNS = new termDNS($this->config, $this,$this->objectclasses); + + /* Set base */ + if ($this->dn == "new"){ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + $this->cn= ""; + } else { + + /* Set base and check if the extracted base exists */ + if(preg_match("/".preg_quote(get_ou('systemIncomingRDN'), '/')."/",$this->dn)){ + $this->base= preg_replace("/".preg_quote(get_ou('systemIncomingRDN'), '/')."/","",dn2base($this->dn)); + }else{ + $this->base= preg_replace("/".preg_quote(get_ou('printerRDN'), '/')."/","",dn2base($this->dn)); + } + + if(!isset($this->config->idepartments[$this->base])){ + msg_dialog::display(_("Internal error"), sprintf(_("Cannot determine a valid department for this object. Setting base to '%s'!"), session::get('CurrentMainBase')) , WARNING_DIALOG); + $this->base = session::get('CurrentMainBase'); + } + } + + /* Extract selected ppd */ + if(isset($this->gotoPrinterPPD)){ + $this->gotoPrinterPPD = preg_replace("/^http.*ppd\//i","",$this->gotoPrinterPPD); + } + + $this->initial_PPD = $this->gotoPrinterPPD; + + /* Prepare different member types */ + foreach(array("AddUser" =>"gotoUserPrinter", + "AddGroup" =>"gotoGroupPrinter", + "AddAdminUser" =>"gotoUserAdminPrinter", + "AddAdminGroup" =>"gotoGroupAdminPrinter") as $type => $attr){ + + /* $this->members contains all members */ + $this->member[$type]=array(); + + if(isset($this->attrs[$attr])){ + $ldap->cd($this->config->current['BASE']) ; + for($i = 0 ; $i < $this->attrs[$attr]['count']; $i++){ + + $mem = $this->attrs[$attr][$i]; + if(preg_match("/Group/",$type)){ + $ldap->search("(&(|(objectClass=posixGroup)(objectClass=gosaGroupOfNames))(cn=".$mem."))",array("cn","description")); + if($ldap->count()){ + $entry = $ldap->fetch(); + $this->member[$type][$entry['cn'][0]]=$entry; + } + }else{ + $ldap->search("(&(objectClass=person)(objectClass=inetOrgPerson)(uid=".$mem."))",array("cn","uid")); + if($ldap->count()){ + $entry = $ldap->fetch(); + $this->member[$type][$entry['uid'][0]]=$entry; + } + } + } + } + } + $this->orig_cn = $this->cn; + $this->orig_base = $this->base; + } + + function set_acl_base($base) + { + plugin::set_acl_base($base); + if(is_object($this->netConfigDNS)){ + $this->netConfigDNS->set_acl_base($base); + } + } + + function set_acl_category($cat) + { + plugin::set_acl_category($cat); + if(is_object($this->netConfigDNS)){ + $this->netConfigDNS->set_acl_category($cat); + } + } + + /* Detect type of printer. + * Printer can be stand alone, belong to a workstation or belong to a terminal. + * We can detect the type printer type when comparing the tabs objects + */ + function getTypeOfPrinter($UpdateAccountStatus = false) + { + /* Disable account as default + */ + $this->is_account = $this->initially_was_account = false; + + /* Detect type of printer via parent tabs. + */ + + $class = get_class($this->parent); + if(isset($this->parent->by_object['workgeneric'])){ + + /* Exclude templates + */ + $this->cn = $this->parent->by_object['workgeneric']->cn; + if($this->parent->by_object['workgeneric']->cn == "wdefault"){ + $this->BelongsTo = "WorkstationTemplate"; + }else{ + $this->BelongsTo = "Workstation"; + } + }elseif(isset($this->parent->by_object['termgeneric'])){ + + /* Exclude templates + */ + $this->cn = $this->parent->by_object['termgeneric']->cn; + if($this->parent->by_object['termgeneric']->cn == "default"){ + $this->BelongsTo = "TerminalTemplate"; + }else{ + $this->BelongsTo = "Terminal"; + } + }elseif(isset($this->parent->by_name['printgeneric'])){ + $this->BelongsTo = "Printer"; + } + + if($UpdateAccountStatus){ + + /* Set is_account / was account + */ + if($this->dn == "new"){ + $this->initially_was_account = false; + } + + /* If is printer it must be a true account. + */ + if(preg_match("/printer/i",$this->BelongsTo)){ + $this->is_account = true; + } + + /* Update dn, to ensure storing as printer instead of WS / terminal + */ + if(preg_match("/terminal/i",$this->BelongsTo)){ + $this->dn= preg_replace("/".preg_quote(get_ou('terminalRDN'), '/')."/",get_ou('printerRDN'),$this->dn); + } + + if(preg_match("/workstation/i",$this->BelongsTo)){ + $this->dn= preg_replace("/".preg_quote(get_ou('workstationRDN'), '/')."/",get_ou('printerRDN'),$this->dn); + } + + /* Detect if this is a valid printer account; + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn, array('objectClass')); + + if($ldap->count()){ + $attrs = $ldap->fetch(); + if(in_array("gotoPrinter",$attrs['objectClass'])){ + $this->initially_was_account = true; + $this->is_account = true; + }else{ + $this->is_account = false; + } + } + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","printer/".get_class($this),$this->dn); + } + + + /* If type of printer couldn't be detected (because of missing parent object in construction) + * hide this tab. + */ + if(preg_match("/unknown/i",$this->BelongsTo)){ + $display= $this->show_enable_header(_("Add printer extension"), + _("Could not initialize printer tab, parameter parent was missing while construction."),TRUE,TRUE); + return($display); + } + + /* Templates can't have printer extensions + */ + if(preg_match("/WorkstationTemplate/i",$this->BelongsTo)){ + $display= $this->show_enable_header(_("Add printer extension"), + _("This is a workstation template, printer tab is disabled."),TRUE,TRUE); + return($display); + } + if(preg_match("/TerminalTemplate/i",$this->BelongsTo)){ + $display= $this->show_enable_header(_("Add printer extension"), + _("This is a terminal template, printer tab is disabled."),TRUE,TRUE); + return($display); + } + + /* Get cn from base object */ + if(preg_match("/^Workstation$/i",$this->BelongsTo)){ + $this->cn = $this->parent->by_object['workgeneric']->cn; + } + if(preg_match("/^Terminal$/i",$this->BelongsTo)){ + $this->cn = $this->parent->by_object['termgeneric']->cn; + } + + $smarty= get_smarty(); + + /* Assign acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL", $this->getacl($name)); + } + + $display=""; + + /* Tell smarty if this is a standalone object or a terminal / WS depending printer */ + if(preg_match("/^Printer$/i",$this->BelongsTo)){ + $smarty->assign("StandAlone",true); + }else{ + $smarty->assign("StandAlone",false); + } + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Do we represent a valid printer? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("printer")).""; + return($display); + } + + /* If this is a WS / Terminal depending printer, display account state button */ + if(!preg_match("/^Printer$/i",$this->BelongsTo)){ + if($this->cn == "" && ($this->dn != "new")){ + $display= $this->show_enable_header(_("Add printer extension"), + msgPool::featuresDisabled(_("printer"))._("You can't enable it while 'cn' is not present in entry. Possibly you are currently creating a new terminal template."),TRUE,TRUE); + $this->is_account= false; + return $display; + } + + if (($this->is_account)){ + if(preg_match("/^Workstation$/i",$this->BelongsTo)){ + $display= $this->show_disable_header(_("Remove printer extension"), + msgPool::featuresEnabled(_("printer"))); + }elseif(preg_match("/^Terminal$/i",$this->BelongsTo)){ + $display= $this->show_disable_header(_("Remove printer extension"), + msgPool::featuresDisabled(_("printer"))); + } + }else{ + if(preg_match("/^Workstation$/i",$this->BelongsTo)){ + $display= $this->show_enable_header(_("Add printer extension"), + msgPool::featuresEnabled(_("printer"))); + }elseif(preg_match("/^Terminal$/i",$this->BelongsTo)){ + $display= $this->show_enable_header(_("Add printer extension"), + msgPool::featuresDisabled(_("printer"))); + } + return ($display); + } + } + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once && $this->acl_is_moveable()){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + $this->baseSelection = true; + } + } + + /* Dialog handling for base select dialog + * Check if base was selected, dialog aborted etc */ + if(is_object($this->dialog)){ + + $this->dialog->save_object(); + if($this->baseSelection){ + if($this->dialog->isClosed()){ + $this->dialog = false; + $this->baseSelection = false; + }elseif($this->dialog->isSelected()){ + + /* A new base was selected, check if it is a valid one */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + + $this->dialog= false; + $this->baseSelection = false; + }else{ + return($this->dialog->execute()); + } + } + } + + /* Fill templating stuff */ + $smarty->assign("bases", $this->get_allowed_bases()); + $smarty->assign("base_select", $this->base); + + /* Assign attributes */ + foreach ($this->attributes as $attr){ + $smarty->assign("$attr", $this->$attr); + } + + if(isset($_POST['AddUser'])){ + $this->dialog = new selectUserToPrinterDialog($this->config, NULL,"AddUser",$this->member); + } + if(isset($_POST['AddGroup'])){ + $this->dialog = new selectUserToPrinterDialog($this->config, NULL,"AddGroup",$this->member); + } + if(isset($_POST['AddAdminUser'])){ + $this->dialog = new selectUserToPrinterDialog($this->config, NULL,"AddAdminUser",$this->member); + } + if(isset($_POST['AddAdminGroup'])){ + $this->dialog = new selectUserToPrinterDialog($this->config, NULL,"AddAdminGroup",$this->member); + } + + /* Display ppd configure/select dialog */ + if(isset($_POST['EditDriver'])){ + if($this->PPDdialogToSave && is_object($this->PPDdialogToSave)){ + $this->dialog = $this->PPDdialogToSave; + }else{ + $this->dialog = new printerPPDDialog($this->config, $this->dn,$this->gotoPrinterPPD); + $this->dialog->cn= $this->cn; + } + } + + /* remove ppd */ + if(isset($_POST['RemoveDriver'])){ + $this->gotoPrinterPPD = array(); + $this->PPDdialogToSave = NULL; + } + + /* Close ppd dialog */ + if(isset($_POST['ClosePPD'])){ + unset($this->dialog); + $this->dialog=FALSE; + } + + /* Save selected ppd */ + if(isset($_POST['SavePPD'])){ + $this->dialog->save_object(); + if(count($this->dialog->check())){ + foreach($this->dialog->check() as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $this->gotoPrinterPPD = array(); + $this->gotoPrinterPPD = $this->dialog->save(); + $this->PPDdialogToSave = $this->dialog; + unset($this->dialog); + $this->dialog=FALSE; + } + } + + /* Member management, delete user / group / admin ..*/ + if((isset($_POST['DelUser']))&&(isset($_POST['UserMember']))){ + foreach($_POST['UserMember'] as $mem){ + $this->DelMember('AddUser',$mem); + } + } + + if((isset($_POST['DelUser']))&&(isset($_POST['UserMember']))){ + foreach($_POST['UserMember'] as $mem){ + $this->DelMember('AddGroup',$mem); + } + } + + if((isset($_POST['DelAdmin']))&&(isset($_POST['AdminMember']))){ + foreach($_POST['AdminMember'] as $mem){ + $this->DelMember('AddAdminUser',$mem); + } + } + + if((isset($_POST['DelAdmin']))&&(isset($_POST['AdminMember']))){ + foreach($_POST['AdminMember'] as $mem){ + $this->DelMember('AddAdminGroup',$mem); + } + } + + /* Abort user / group adding dialog */ + if(isset($_POST['PrinterCancel'])){ + unset($this->dialog); + $this->dialog= FALSE; + } + + /* Save selected users / groups */ + if(isset($_POST['PrinterSave'])){ + $this->dialog->save_object(); + if(count($this->dialog->check())){ + foreach($this->dialog->check() as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $data= $new = $this->dialog->save(); + unset($data['type']); + foreach($data as $mem){ + $this->AddMember($new['type'], $mem['dn']); + } + unset($this->dialog); + $this->dialog=FALSE; + } + } + + /* Display dialog, if there is currently one open*/ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + $display = $this->dialog->execute(); + return $display; + } + + /* Parse selected ppd file */ + $config = session::get('config'); + if ($config->get_cfg_value("ppdPath") != ""){ + $path = $config->get_cfg_value("ppdPath"); + if(!preg_match("/\/$/",$path)){ + $path = $path."/"; + } + + $ppdManager= new ppdManager($path); + if(!empty($this->gotoPrinterPPD)){ + if((!file_exists($path.$this->gotoPrinterPPD))){ + $smarty->assign("driverInfo", "".sprintf(_("Your currently selected PPD file '%s' doesn't exist."),$path.$this->gotoPrinterPPD).""); + }else{ + $smarty->assign("driverInfo", $ppdManager->loadDescription($path.$this->gotoPrinterPPD)); + } + }else{ + $smarty->assign("driverInfo", _("Not defined")); + } + }else{ + $smarty->assign("driverInfo",_("Can't get ppd informations.")); + } + + /* Create user & admin user list */ + $list=$this->generateList(); + $userlist = array_merge($list['AddUser'],$list['AddGroup']); + $adminlist = array_merge($list['AddAdminUser'],$list['AddAdminGroup']); + + asort($userlist); + asort($adminlist); + + if(!preg_match("/Printer/i",$this->BelongsTo)){ + if(preg_match("/Terminal/i",$this->BelongsTo)){ + $smarty->assign("desc" ,sprintf(_("This printer belongs to %s. You can't rename this printer."),_("terminal"),"".$this->cn."")); + }else{ + $smarty->assign("desc" ,sprintf(_("This printer belongs to %s. You can't rename this printer."),_("workstation"),"".$this->cn."")); + } + $smarty->assign("cnACL" , $this->getacl("cn",true)); + }else{ + $smarty->assign("desc" ,""); + } + $smarty->assign("UserMember" ,$this->UserMember); + $smarty->assign("UserMembers" ,$userlist); + $smarty->assign("UserMemberKeys",array_flip($userlist)); + + $smarty->assign("AdminMember" ,$this->AdminMember); + $smarty->assign("AdminMembers" ,$adminlist); + $smarty->assign("AdminMemberKeys",array_flip($adminlist)); + if(preg_match("/Printer/i",$this->BelongsTo)){ + + /* Show main page */ + $str = $this->netConfigDNS->execute(); + if(is_object($this->netConfigDNS->dialog)){ + return($str); + } + $smarty->assign("netconfig", $str); + } else { + $smarty->assign("netconfig", ""); + } + + return($display.$smarty->fetch (get_template_path('printer.tpl', TRUE, dirname(__FILE__)))); + } + + function remove_from_parent() + { + /* Only remove if there was initially an account */ + if($this->initially_was_account){ + + /* Update dn, to ensure storing as printer instead of WS / terminal + */ + if(preg_match("/terminal/i",$this->BelongsTo)){ + $this->dn= preg_replace("/".preg_quote(get_ou('terminalRDN'), '/').",/",get_ou('printerRDN'),$this->dn); + } + + if(preg_match("/workstation/i",$this->BelongsTo)){ + $this->dn= preg_replace("/".preg_quote(get_ou('workstationRDN'), '/')."/",get_ou('printerRDN'),$this->dn); + } + + /* Check if this dn points to a printer, to avoid deleting something else */ + $ldap= $this->config->get_ldap_link(); + $ldap->cat($this->dn, array('dn',"objectClass")); + if(!$ldap->count()){ + msg_dialog::display(_("Error"), _("Object is no printer!"), ERROR_DIALOG); + return; + } + + /* Check if obejct is a printer */ + $CheckPrinter = $ldap->fetch(); + if(!in_array("gotoPrinter",$CheckPrinter['objectClass'])){ + msg_dialog::display(_("Error"), _("Object is no printer!"), ERROR_DIALOG); + return; + } + + /* Remove account & dns extension */ + $this->netConfigDNS->remove_from_parent(); + $ldap->rmdir($this->dn); + + new log("remove","printer/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + $this->handle_post_events("remove",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } + + /* Remove previously selected ppd file.*/ + if(!empty($this->initial_PPD)){ + $tmp = new printerPPDDialog($this->config, $this->dn,$this->initial_PPD); + $tmp->removeModifiedPPD(); + } + } + } + + + /* Save data to object */ + function save_object() + { + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + if(is_object($this->netConfigDNS)){ + $this->netConfigDNS->save_object(); + } + + /* Set new base if allowed */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + } + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + if (preg_match("/printer/i",$this->BelongsTo)){ + $message= array_merge($message, $this->netConfigDNS->check()); + } + + /* Don't display check messages if this is a template object */ + if(isset($this->parent->by_object['workgeneric'])){ + if($this->parent->by_object['workgeneric']->cn == "wdefault"){ + return $message; + } + }elseif(isset($this->parent->by_object['termgeneric'])){ + if($this->parent->by_object['termgeneric']->cn == "default"){ + return $message; + } + } + + $dn= "cn=".$this->cn.get_ou('printerRDN').",".$this->base; + + /* must: cn */ + if(($this->BelongsTo == "Printer") && $this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + + /* must: cn */ + if(($this->BelongsTo == "Printer") && !tests::is_dns_name($this->cn)){ + $message[]= msgPool::invalid(_("Name")); + } + + /* must: labeledURI */ + if(empty($this->labeledURI)){ + $message[]= msgPool::required(_("Printer URL")); + } + + /* Check if there is already an entry with this cn*/ + if (($this->orig_dn != $dn)&&( preg_match("/printer/i",$this->BelongsTo))){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->base); + $ldap->ls("(cn=".$this->cn.")",get_ou('printerRDN').$this->base, array("cn")); + if ($ldap->count() != 0){ + while ($attrs= $ldap->fetch()){ + if(preg_match("/cn=dhcp,/",$attrs['dn'])){ + continue; + } + if ($attrs['dn'] != $this->orig_dn){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* Update dn, to ensure storing as printer instead of WS / terminal + */ + if(preg_match("/terminal/i",$this->BelongsTo)){ + $this->dn= preg_replace("/".preg_quote(get_ou('terminalRDN'), '/')."/",get_ou('printerRDN'),$this->dn); + } + + if(preg_match("/workstation/i",$this->BelongsTo)){ + $this->dn= preg_replace("/".preg_quote(get_ou('workstationRDN'), '/')."/",get_ou('printerRDN'),$this->dn); + } + + if(!$this->is_account) return; + if(isset($this->parent->by_object['workgeneric'])){ + if($this->parent->by_object['workgeneric']->cn == "wdefault"){ + return; + } + + /* Adapt IP & mac from parent object */ + $this->netConfigDNS->ipHostNumber = $this->parent->by_object['workgeneric']->netConfigDNS->ipHostNumber; + $this->netConfigDNS->macAddress = $this->parent->by_object['workgeneric']->netConfigDNS->macAddress; + + }elseif(isset($this->parent->by_object['termgeneric'])){ + if($this->parent->by_object['termgeneric']->cn == "default"){ + return; + } + + /* Adapt IP & mac from parent object */ + $this->netConfigDNS->ipHostNumber = $this->parent->by_object['termgeneric']->netConfigDNS->ipHostNumber; + $this->netConfigDNS->macAddress = $this->parent->by_object['termgeneric']->netConfigDNS->macAddress; + } + + /* If type is still unknown, the initialisation of this printer failed, abort. */ + if(preg_match("/unknown/i",$this->BelongsTo)){ + return; + } + + /* save ppd configuration */ + if($this->PPDdialogToSave && is_object($this->PPDdialogToSave)){ + $this->PPDdialogToSave->save_ppd(); + } + if($this->orig_dn != $this->dn){ + if(!empty($this->gotoPrinterPPD)) { + $this->PPDdialogToSave = new printerPPDDialog($this->config, $this->dn,$this->gotoPrinterPPD); + $this->PPDdialogToSave->cn = $this->cn; + $this->PPDdialogToSave->generateProperties(); + $this->gotoPrinterPPD = $this->PPDdialogToSave->update_ppd_url(); + } + } + + /* Remove previously selected ppd file.*/ + if($this->initial_PPD != $this->gotoPrinterPPD && $this->initially_was_account){ + if(!empty($this->initial_PPD)){ + $tmp = new printerPPDDialog($this->config, $this->dn,$this->initial_PPD); + $tmp->removeModifiedPPD(); + } + } + + if(preg_match("/https/i",$_SERVER['HTTP_REFERER'])){ + $method="https://"; + }else{ + $method="http://"; + } + + /* Get servername */ + $server = $_SERVER['SERVER_NAME']; + if(tests::is_ip($server)){ + $server_name = gethostbyaddr($server); + }else{ + $server_name = gethostbyaddr(gethostbyname($server)); + } + + /* If no ppd is selected, remove this attribute */ + if(!empty($this->gotoPrinterPPD) && $this->initially_was_account) { + $this->gotoPrinterPPD = $method.str_replace("//","/",$server_name."/ppd/".$this->gotoPrinterPPD); + }else{ + $this->gotoPrinterPPD = array(); + } + + $dn= $this->dn; + + /* reduce objectClasses to minimun */ + $this->attrs['objectClass']= $this->objectclasses; + + plugin::save(); + $ldap= $this->config->get_ldap_link(); + + /* Remove all empty values */ + if ($this->orig_dn == 'new'){ + $attrs= array(); + foreach ($this->attrs as $key => $val){ + if (is_array($val) && count($val) == 0){ + continue; + } + $attrs[$key]= $val; + } + $this->attrs= $attrs; + } + + /* Append printer user + */ + $this->attrs['gotoUserPrinter']=array(); + foreach($this->member['AddUser'] as $mem){ + $this->attrs['gotoUserPrinter'][]=$mem['uid'][0]; + } + + /* Append printer group + */ + $this->attrs['gotoGroupPrinter'] = array(); + foreach($this->member['AddGroup'] as $mem){ + $this->attrs['gotoGroupPrinter'][]=$mem['cn'][0]; + } + + /* Append printer admin user + */ + $this->attrs['gotoUserAdminPrinter'] = array(); + foreach($this->member['AddAdminUser'] as $mem){ + $this->attrs['gotoUserAdminPrinter'][]=$mem['uid'][0]; + } + + /* Append printer admin group + */ + $this->attrs['gotoGroupAdminPrinter']= array(); + foreach($this->member['AddAdminGroup'] as $mem){ + $this->attrs['gotoGroupAdminPrinter'][]=$mem['cn'][0]; + } + + if($this->orig_dn == 'new'){ + foreach(array("gotoGroupPrinter","gotoUserAdminPrinter","gotoGroupAdminPrinter","gotoUserPrinter") as $checkVar){ + if(count($this->attrs[$checkVar]) == 0 || empty($this->attrs[$checkVar])){ + unset($this->attrs[$checkVar]); + } + } + } + + /* Ensure to create a new object */ + if(preg_match("/".preg_quote(get_ou('systemIncomingRDN'), '/')."/",$this->orig_dn)){ + $this->orig_dn = "new"; + } + + /* Move object in necessary*/ + if (($this->orig_dn != $this->dn) && ($this->orig_dn != 'new')){ + $this->move($this->orig_dn, $this->dn); + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cat($this->dn); + if(!$ldap->count()){ + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + + /* Remove empty values */ + foreach($this->attrs as $name => $value){ + if(empty($value)){ + unset($this->attrs[$name]); + } + } + + $ldap->add($this->attrs); + $this->handle_post_events("add",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + new log("create","printer/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } else { + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + $this->handle_post_events("modify",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + new log("modify","printer/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + #if(preg_match("/printer/i",$this->BelongsTo)){ + $this->netConfigDNS->cn = $this->cn; + $this->netConfigDNS->dn = $this->dn; + $this->netConfigDNS->save(); + #} + } + + function generateList(){ + $a_return=array(); + + foreach($this->member as $type => $values){ + $a_return[$type]=array(); + foreach($values as $value){ + if((preg_match("/Group/i",$type))){ + if(!isset($value['description'])){ + $a_return[$type][$value['cn'][0]]= _("Group")." : ".$value['cn'][0]; + }else{ + $a_return[$type][$value['cn'][0]]= _("Group")." : ".$value['cn'][0]." [".$value['description'][0]."]"; + } + }else{ + $a_return[$type][$value['uid'][0]]=_("User")." : ".$value['cn'][0]; + } + } + } + return($a_return); + } + + /* Return plugin informations for acl handling + #FIXME FAIscript seams to ununsed within this class... */ + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Print generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 4, + "plSection" => array("administration"), + "plCategory" => array("printer" => array("description" => _("Printer"), + "objectClass" => "gotoPrinter"),"workstation","terminal"), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "base" => _("Base") , + "description" => _("Description"), + "l" => _("Location"), + "labeledURI" => _("LabeledURL"), + "gotoPrinterPPD" => _("Printer PPD"), + "gotoUserPrinter" => _("Permissions")) + )); + } + + + /* Delete member */ + function DelMember($type,$id) + { + /* Check if there was a printer "dn" given, or the "cn" */ + foreach($this->member[$type] as $key => $printer){ + if($printer['dn'] == $id) { + $id = $key; + } + } + + if(!$this->acl_is_writeable("gotoUserPrinter")){ + msg_dialog::display(_("Permission error"), msgPool::permDelete(_("printer user"), $id), INFO_DIALOG); + return(FALSE); + } + + if(isset($this->member[$type][$id])){ + unset($this->member[$type][$id]); + return(TRUE); + } + return(FALSE); + } + + + /* Add given obejct to members */ + function AddMember($type,$dn) + { + $types = array("AddUser","AddGroup","AddAdminUser","AddAdminGroup"); + if(!in_array_ics($type, $types)){ + msg_dialog::display(_("Internal error"), sprintf(_("Illegal member type '%s'!"), $type), ERROR_DIALOG); + return(FALSE); + } + + if(!$this->acl_is_writeable("gotoUserPrinter")){ + msg_dialog::display(_("Permission error"), msgPool::permModify(_("printer user"), $this->dn), INFO_DIALOG); + return(FALSE); + } + + /* Get name of index attributes */ + if(preg_match("/user/i",$type)){ + $var = "uid"; + }else{ + $var = "cn"; + } + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($dn); + $ldap->cat($dn,array($var,"cn")); + if($ldap->count()){ + + $attrs = $ldap->fetch(); + + if(isset($attrs[$var][0])){ + $name = $attrs[$var][0]; + + /* Check if this uid/cn is already assigned to any permission */ + foreach($types as $ctype){ + + /* If we want to add a user, only check user/userAdmin members */ + if((preg_match("/user/i",$type)) && (!preg_match("/user/i",$ctype))){ + continue; + } + + /* If we want to add a group, only check groups/adminGroups .. */ + if((preg_match("/group/i",$type)) && (!preg_match("/group/i",$ctype))){ + continue; + } + + if(isset( $this->member[$ctype][$name])){ + msg_dialog::display(_("Error"), sprintf(_("'%s' is already used!"), $attrs[$var][0]), ERROR_DIALOG); + return(FALSE); + } + } + + /* Everything is fine. So add the given object to members */ + $this->member[$type][$attrs[$var][0]] = $attrs ; + }else{ + print_a($attrs); + } + }else{ + msg_dialog::display(_("Error"), sprintf(_("'%s' does not exist!"), $dn), ERROR_DIALOG); + return(FALSE); + } + return(TRUE); + } + + + /* Display generic part for server copy & paste */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn" ,$this->cn); + $smarty->assign("object","printer"); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + if(isset($source['macAddress'][0])){ + $this->netConfigDNS->macAddress = $source['macAddress'][0]; + } + if(isset($source['ipHostNumber'][0])){ + $this->netConfigDNS->ipHostNumber = $source['ipHostNumber'][0]; + } + + $source_o = new printgeneric($this->config,$source['dn'],NULL,$this->parent); + foreach($this->attributes as $attr){ + $this->$attr = $source_o->$attr; + } + $this->member = $source_o -> member; + + $this->gotoPrinterPPD = ""; + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_selectUserToPrinterDialog.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_selectUserToPrinterDialog.inc new file mode 100644 index 000000000..246f21516 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_selectUserToPrinterDialog.inc @@ -0,0 +1,207 @@ +depselect = $this->config->current['BASE']; + + switch($type){ + case "AddUser" : + $this->searchObjects = "(objectClass=gosaAccount)(!(uid=*$))"; + $this->searchAttrs = array("cn","uid"); + $this->searchAppend = "uid"; + $this->baseAddition = get_people_ou(); + $this->search_cat = "users"; + ;break; + case "AddGroup" : + $this->searchObjects = "(objectClass=posixGroup)"; + $this->searchAttrs = array("cn","description"); + $this->searchAppend = "cn"; + $this->baseAddition = get_groups_ou(); + $this->search_cat = "groups"; + ;break; + case "AddAdminUser" : + $this->searchObjects = "(objectClass=gosaAccount)(!(uid=*$))"; + $this->searchAttrs = array("cn","uid"); + $this->searchAppend = "uid"; + $this->baseAddition = get_people_ou(); + $this->search_cat = "users"; + ;break; + case "AddAdminGroup" : + $this->searchObjects = "(objectClass=posixGroup)"; + $this->searchAttrs = array("cn","description"); + $this->searchAppend = "cn"; + $this->baseAddition = get_groups_ou(); + $this->search_cat = "groups"; + ;break; + } + $this->type = $type; + + /* Collect already assigned object dns */ + $this->dns_used = array(); + if(isset($already_assigned[$type])){ + foreach($already_assigned[$type] as $entry){ + $this->dns_used[] = $entry['dn']; + } + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + if(isset($_POST['dialogissubmitted'])){ + $this->regex=$_POST['regexPrinter']; + $this->depselect = $_POST['depselectPrinter']; + } + $this->subtree= isset($_POST['SubSearch']); + + if((isset($_GET['search']))&&(!empty($_GET['search']))){ + $this->regex=$_GET['search']."*"; + $this->regex=preg_replace("/\*\*/","*",$this->regex); + } + + + /* Get all departments within this subtree */ + $base = $this->config->current['BASE']; + $deps_res[] = array("dn"=>$this->config->current['BASE']); + $deps_res= array_merge($deps_res,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", array("users","groups"), $this->config->current['BASE'], + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); + + /* Load possible departments */ + $ui = get_userinfo(); + + /* Allowed user departments */ + $udeps = $ui->get_module_departments("users"); + + /* Allowed groups department */ + $gdeps = $ui->get_module_departments("groups"); + + /* Combine both arrays */ + $tdeps = array_unique(array_merge($udeps,$gdeps)); + + /* Create usable departments array */ + $ids = $this->config->idepartments; + $deps = array(); + foreach($deps_res as $dep){ + if(isset($ids[$dep['dn']]) && in_array_ics($dep['dn'], $tdeps)){ + $value = $ids[$dep['dn']]; + $deps[$dep['dn']] = $value; + } + } + if(!isset($deps[$this->depselect])){ + $this->depselect = key($deps); + } + + + $tmp_printers= $this->getPrinter(); + natcasesort($tmp_printers); + $smarty->assign("regexPrinter" , $this->regex); + $smarty->assign("deplistPrinter" , $deps);;//deplist); + $smarty->assign("depselectPrinter" , $this->depselect); + $smarty->assign("gotoPrinters" , array_values($tmp_printers)); + $smarty->assign("gotoPrinterKeys" , array_keys($tmp_printers)); + $smarty->assign("apply" , apply_filter()); + $smarty->assign("alphabet" , generate_alphabet()); + $smarty->assign("search_image" , get_template_path('images/lists/search.png')); + $smarty->assign("tree_image" , get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage" , get_template_path('images/info.png')); + $smarty->assign("launchimage" , get_template_path('images/lists/action.png')); + $smarty->assign("deplist" , $deps); + $smarty->assign("subtree", $this->subtree?"checked":""); + + $display.= $smarty->fetch(get_template_path('selectUserToPrinterDialog.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + function check(){ + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(empty($_POST['gotoPrinter'])){ + $message[] = _("Please select a printer or press cancel."); + } + return $message; + } + + /* Save to LDAP */ + function save() + { + $a_return['type']=$this->type; + + foreach($_POST['gotoPrinter'] as $name){ + $data = $this->getPrinter(true); + $a_return[$name]= $data[$name]; + } + return($a_return); + } + + /* This function generates the Printerlist + * All printers are returned that match regex and and depselect + */ + function getPrinter($detailed = false) + { + $a_return=array(); + + $filter = "(&".$this->searchObjects."(cn=".$this->regex."))"; + $base = $this->baseAddition.$this->depselect; + $attrs = $this->searchAttrs; + $cat = $this->search_cat; + + if ($this->subtree){ + $res= get_list($filter,$cat,$this->depselect,$attrs, GL_SUBSEARCH); + } else { + $res= get_list($filter,$cat,$base,$attrs); + } + foreach($res as $printer){ + + /* Skip already used entries */ + if(in_array($printer['dn'],$this->dns_used)) { + continue; + } + + if(($detailed ==true)){ + if(isset($printer[$this->searchAppend])){ + $a_return[$printer[$this->searchAppend][0]] = $printer; + } + }else{ + if(isset($printer[$this->searchAppend])){ + if(isset($printer['description'][0])){ + $a_return[$printer[$this->searchAppend][0]] = $printer['cn'][0]." - ".$printer['description'][0]; + }else{ + $a_return[$printer[$this->searchAppend][0]] = $printer['cn'][0]; + } + } + } + } + return($a_return); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalGeneric.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalGeneric.inc new file mode 100644 index 000000000..0c043fe3c --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalGeneric.inc @@ -0,0 +1,710 @@ + "", "rescan" => "", "wake" => "", "memcheck" => "", "sysinfo" => ""); + + var $fai_activated = FALSE; + var $view_logged = FALSE; + + var $member_of_ogroup = FALSE; + + var $kerberos_key_service = NULL; + + + function termgeneric (&$config, $dn= NULL, $parent= NULL) + { + /* Check if FAI is activated */ + $tmp= $config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + $this->fai_activated = TRUE; + } + + plugin::plugin ($config, $dn, $parent); + + if(class_available("krbHostKeys")){ + $this->kerberos_key_service = new krbHostKeys($this->config,$this); + } + + if(!isset($this->parent->by_object['ogroup'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + $ldap->search("(&(|(objectClass=gotoTerminalTemplate)(objectClass=gotoWorkstationTemplate))(member=".LDAP::prepare4filter($this->dn)."))",array("cn")); + $this->member_of_ogroup = $ldap->count() >= 1; + } + + $this->netConfigDNS = new termDNS($this->config,$this,$this->objectclasses); + /* Read arrays */ + foreach (array("ghNetNic", "ghIdeDev", "ghScsiDev") as $val){ + if (!isset($this->attrs[$val])){ + continue; + } + for ($i= 0; $i<$this->attrs[$val]['count']; $i++){ + array_push($this->$val, $this->attrs[$val][$i]); + } + } + + /* Create used ntp server array */ + $this->gotoNtpServer= array(); + if(isset($this->attrs['gotoNtpServer'])){ + $this->inheritTimeServer = false; + for($i = 0 ; $i < $this->attrs['gotoNtpServer']['count']; $i++ ){ + $server = $this->attrs['gotoNtpServer'][$i]; + $this->gotoNtpServer[$server] = $server; + } + } + + /* Set inherit checkbox state */ + if((in_array("default",$this->gotoNtpServer)) || (count($this->gotoNtpServer)==0)){ + $this->inheritTimeServer = true; + $this->gotoNtpServer=array(); + } + + /* You can't inherit the NTP service, if we are not member in an object group */ + if(!$this->member_of_ogroup){ + $this->inheritTimeServer = FALSE; + } + + /* Create available ntp options */ + $this->gotoNtpServers = $this->config->data['SERVERS']['NTP']; + foreach($this->gotoNtpServers as $key => $server){ + if($server == "default"){ + unset($this->gotoNtpServers[$key]); + } + } + + $this->modes["locked"]= _("Locked"); + $this->modes["active"]= _("Activated"); + + /* Set base */ + if ($this->dn == "new"){ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } else { + $this->base= preg_replace ("/^[^,]+,".preg_quote(get_ou("terminalRDN"), '/')."/", "", $this->dn); + } + + /* Create an array of all Syslog servers */ + $tmp = $this->config->data['SERVERS']['SYSLOG']; + foreach($tmp as $server){ + $visible = $server; + if($server == "default" && $this->member_of_ogroup) { + $visible = "["._("inherited")."]"; + } + $this->gotoSyslogServers[$server] = $visible; + } + + $this->orig_dn= $this->dn; + $this->orig_cn= $this->cn; + $this->orig_base= $this->base; + } + + function set_acl_base($base) + { + plugin::set_acl_base($base); + $this->netConfigDNS->set_acl_base($base); + } + + function set_acl_category($cat) + { + plugin::set_acl_category($cat); + $this->netConfigDNS->set_acl_category($cat); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","terminal/".get_class($this),$this->dn); + } + + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + + if (isset($_POST['action']) && $this->acl_is_writeable("FAIstate") && isset($this->validActions[$_POST['saction']])){ + $action = $_POST['saction']; + + /* Check if we have an DaemonEvent for this action */ + if(class_available("DaemonEvent_".$action)){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + if(isset($events['TRIGGERED']["DaemonEvent_".$action])){ + $evt = $events['TRIGGERED']["DaemonEvent_".$action]; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->add_targets(array($this->netConfigDNS->macAddress)); + $tmp->set_type(TRIGGERED_EVENT); + $o_queue = new gosaSupportDaemon(); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + }else{ + msg_dialog::display(_("Event error"), + sprintf(_("Event '%s' is not available!"),$action),ERROR_DIALOG); + } + + } + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once && $this->acl_is_moveable()){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* A new base was selected, check if it is a valid one */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* Do we represent a valid terminal? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("terminal")).""; + return($display); + } + + /* Add new ntp Server to our list */ + if((isset($_POST['addNtpServer'])) && (isset($_POST['gotoNtpServers'])) && $this->acl_is_writeable("gotoNtpServer")){ + $this->gotoNtpServer[$_POST['gotoNtpServers']] = $_POST['gotoNtpServers']; + } + + /* Delete selected NtpServer for list of used servers */ + if((isset($_POST['delNtpServer'])) && (isset($_POST['gotoNtpServerSelected'])) && $this->acl_is_writeable("gotoNtpServer")){ + foreach($_POST['gotoNtpServerSelected'] as $name){ + unset($this->gotoNtpServer[$name]); + } + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $smarty->assign("cn", $this->cn); + $smarty->assign("description", $this->description); + $smarty->assign("staticAddress", ""); + + $smarty->assign("bases", $this->get_allowed_bases()); + + /* tell smarty the inherit checkbox state */ + $smarty->assign("inheritTimeServer",$this->inheritTimeServer); + + /* Check if terminal is online */ + if (gosaSupportDaemon::ping($this->netConfigDNS->macAddress)){ + $smarty->assign("actions", array( "halt" => _("Switch off"), + "reboot" => _("Reboot"), + #"memcheck" => _("Memory test"), + #"sysinfo" => _("System analysis") + )); + } else { + $smarty->assign("actions", array("wake" => _("Wake up"), + #"memcheck" => _("Memory test"), + #"sysinfo" => _("System analysis") + )); + } + + /* Arrays */ + $smarty->assign("modes", $this->modes); + + $tmp2 = array(); + $tmp2['!']= _("Local swap"); + foreach($this->config->data['SERVERS']['NBD'] as $server){ + if($server != "default"){ + $tmp2[$server]= $server; + }else{ + if($this->member_of_ogroup){ + $tmp2[$server]="["._("inherited")."]"; + } + } + } + + $smarty->assign("swapservers", $tmp2); + $tmp2 = array(); + foreach($this->config->data['SERVERS']['NFS'] as $server){ + if($server != "default"){ + $tmp2[$server]= $server; + }else{ + if($this->member_of_ogroup){ + $tmp2[$server]="["._("inherited")."]"; + } + } + } + + $smarty->assign("nfsservers", $tmp2); + $smarty->assign("syslogservers", $this->gotoSyslogServers); + + $tmp = array(); + foreach($this->gotoNtpServers as $server){ + if(!in_array($server,$this->gotoNtpServer)){ + $tmp[$server] = $server; + } + } + + $smarty->assign("ntpservers", $tmp); + $smarty->assign("fai_activated",$this->fai_activated); + + /* Variables */ + foreach(array("base", "gotoMode", "gotoTerminalPath", "gotoSwapServer","gotoSyslogServer", "gotoNtpServer") as $val){ + $smarty->assign($val."_select", $this->$val); + } + + $smarty->assign("member_of_ogroup",$this->member_of_ogroup); + + /* Show main page */ + $str = $this->netConfigDNS->execute(); + if(is_object($this->netConfigDNS->dialog)){ + return($str); + } + $smarty->assign("netconfig", $str); + + /* Display kerberos host key options */ + $smarty->assign("host_key",""); + if(is_object($this->kerberos_key_service)){ + $smarty->assign("host_key",$this->kerberos_key_service->execute_by_prefix("host/")); + } + + return($smarty->fetch (get_template_path('terminal.tpl', TRUE, dirname(__FILE__)))); + } + + function remove_from_parent() + { + if($this->acl_is_removeable()){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->cat($this->dn, array('dn')); + if($ldap->count()){ + $this->netConfigDNS->remove_from_parent(); + $ldap->rmDir($this->dn); + + new log("remove","terminal/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + + /* Remove kerberos key dependencies too */ + if(is_object($this->kerberos_key_service)){ + $this->kerberos_key_service->remove_from_parent_by_prefix("host/"); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } + + /* Remove all accessTo/trust dependencies */ + update_accessTo($this->cn,""); + } + + /* Clean queue form entries with this mac + */ + if(class_available("gosaSupportDaemon") && tests::is_mac($this->netConfigDNS->orig_macAddress)){ + $q = new gosaSupportDaemon(); + $q->clean_queue_from_mac($this->netConfigDNS->orig_macAddress); + } + } + } + + + /* Save data to object */ + function save_object() + { + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + /* Set new base if allowed */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + + $this->netConfigDNS->save_object(); + + /* Save terminal path to parent since it is used by termstartup, too */ + if(isset($this->parent->by_object['termstartup'])){ + $this->parent->by_object['termstartup']->gotoTerminalPath= $this->gotoTerminalPath; + } + + if(isset($_POST['termgeneric_posted'])){ + if(isset($_POST["inheritTimeServer"]) && $this->member_of_ogroup){ + $this->inheritTimeServer = true; + }else{ + $this->inheritTimeServer = false; + } + } + + if(isset($_POST["inheritAll"])){ + $this->set_everything_to_inherited(); + } + + /* Hanle kerberos host key plugin */ + if(is_object($this->kerberos_key_service)){ + $this->kerberos_key_service->save_object_by_prefix("host/"); + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Skip IP & Mac checks if this is a template */ + if($this->cn != "default"){ + $message= array_merge($message, $this->netConfigDNS->check()); + } + + /* Permissions for that base? */ + $this->dn= "cn=".$this->cn.",".get_ou('terminalRDN').$this->base; + + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + + /* Check if given name is a valid host/dns name */ + if(!tests::is_dns_name($this->cn) ){ + $message[] = msgPool::invalid(_("Name")); + } + + if ($this->orig_dn == 'new'){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->base); + + /* It is possible to have a 'default' terminal on every base */ + if($this->cn == "default"){ + $ldap->cat($this->dn); + }else{ + $ldap->search ("(&(objectClass=gotoTerminal)(cn=".$this->cn."))", array("cn")); + } + if ($ldap->count() != 0){ + while ($attrs= $ldap->fetch()){ + if (preg_match("/cn=dhcp,/",$attrs['dn']) || preg_match ("/,".preg_quote(get_ou('systemIncomingRDN'), '/')."/", $ldap->getDN())){ + continue; + } else { + if ($attrs['dn'] != $this->orig_dn){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + } + } + + /* Check for valid ntpServer selection */ + if((!$this->inheritTimeServer) && (!count($this->gotoNtpServer))){ + $message[]= msgPool::required(_("NTP server")); + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* Detect mode changes */ + $activate= (isset($this->saved_attributes['gotoMode']) && + $this->gotoMode != $this->saved_attributes['gotoMode'] && + $this->gotoMode == "active" && + tests::is_ip($this->netConfigDNS->ipHostNumber)) || $this->auto_activate; + plugin::save(); + + /* Strip out 'default' values */ + foreach (array("gotoTerminalPath", "gotoSwapServer", "gotoSyslogServer") as $val){ + if(isset($this->attrs[$val])){ + if ($this->attrs[$val] == "default"){ + $this->attrs[$val]= array(); + } + } + } + + /* Add missing arrays */ + foreach (array("ghScsiDev", "ghIdeDev", "ghNetNic") as $val){ + if (isset ($this->$val) && count ($this->$val) != 0){ + $this->attrs["$val"]= $this->$val; + } + } + + /* Remove all empty values */ + if ($this->orig_dn == 'new'){ + $attrs= array(); + foreach ($this->attrs as $key => $val){ + if (is_array($val) && count($val) == 0){ + continue; + } + $attrs[$key]= $val; + } + $this->attrs= $attrs; + } + + /* Set ntpServers */ + $this->attrs['gotoNtpServer'] = array(); + if(!$this->inheritTimeServer){ + foreach($this->gotoNtpServer as $server){ + $this->attrs['gotoNtpServer'][] = $server; + } + } + + /* cn=default and macAddress=- indicates that this is a template */ + if($this->cn == "default"){ + $this->netConfigDNS->macAddress = "-"; + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + if ($this->orig_dn == 'new'){ + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + if (!count($this->attrs['gotoNtpServer'])){ + unset($this->attrs['gotoNtpServer']); + } + $ldap->add($this->attrs); + new log("create","terminal/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + $this->netConfigDNS->cn = $this->cn; + $this->netConfigDNS->save(); + + $this->handle_post_events("add",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + } else { + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + new log("modify","terminal/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + $this->netConfigDNS->cn = $this->cn; + $this->netConfigDNS->save(); + + $this->handle_post_events("modify",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + + /* Update all accessTo/trust dependencies */ + if($this->orig_cn != $this->cn){ + update_accessTo($this->orig_cn,$this->cn); + } + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Send installation activation + */ + if ($activate && class_available("DaemonEvent")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + $o_queue = new gosaSupportDaemon(); + if(isset($events['TRIGGERED']['DaemonEvent_installation_activation'])){ + $evt = $events['TRIGGERED']['DaemonEvent_installation_activation']; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $tmp->add_targets(array($this->netConfigDNS->macAddress)); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + } + + + /* Display generic part for server copy & paste */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn" ,$this->cn); + $smarty->assign("object","terminal"); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + if(isset($source['macAddress'][0])){ + $this->netConfigDNS->macAddress = $source['macAddress'][0]; + } + if(isset($source['ipHostNumber'][0])){ + $this->netConfigDNS->ipHostNumber = $source['ipHostNumber'][0]; + } + + /* Create used ntp server array */ + $this->gotoNtpServer= array(); + if(isset($source['gotoNtpServer'])){ + $this->inheritTimeServer = false; + unset($source['gotoNtpServer']['count']); + foreach($source['gotoNtpServer'] as $server){ + $this->gotoNtpServer[$server] = $server; + } + } + + /* Set inherit checkbox state */ + if((in_array("default",$this->gotoNtpServer)) || (count($this->gotoNtpServer)==0)){ + $this->inheritTimeServer = true; + $this->gotoNtpServer=array(); + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Terminal"), + "plDescription" => _("Terminal generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 1, + "plSection" => array("administration"), + "plCategory" => array("terminal" => array( "description" => _("Terminal"), + "objectClass" => "gotoTerminal")), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "description" => _("Description"), + "base" => _("Base"), + + "gotoMode" => _("Mode"), + "gotoSyslogServer" => _("Syslog server enabled"), + + "gotoTerminalPath" => _("Root server"), + "gotoSwapServer" => _("Swap server"), + + "gotoNtpServer" => _("Ntp server settings"), + "userPassword" => _("Root password"), + + "FAIstate" => _("Action flag")) + )); + } + + + function set_everything_to_inherited() + { + $this->gotoTerminalPath = "default"; + $this->gotoSwapServer = "default" ; + $this->gotoSyslogServer = "default"; + $this->inheritTimeServer = TRUE; + + /* Set workstation service attributes to inherited */ + if($this->member_of_ogroup && isset($this->parent->by_object['termservice'])){ + foreach(array("gotoXKbLayout","gotoXKbModel","gotoXKbVariant", + "gotoXResolution","gotoXColordepth","gotoXMouseType","gotoXMouseport") as $name){ + $this->parent->by_object['termservice']->$name = "default"; + } + } + + /* Set workstation startup attributes to inherited */ + if($this->member_of_ogroup && isset($this->parent->by_object['termstartup'])){ + $this->parent->by_object['termstartup']->gotoBootKernel = "default-inherited"; + $this->parent->by_object['termstartup']->gotoLdapServer = "default-inherited"; + + $this->parent->by_object['workstartup']->gotoLdap_inherit = TRUE; + $this->parent->by_object['workstartup']->gotoLdapServers = array(); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalInfo.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalInfo.inc new file mode 100644 index 000000000..d92a958eb --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalInfo.inc @@ -0,0 +1,264 @@ +attrs[$val])){ + continue; + } + for ($i= 0; $i<$this->attrs[$val]['count']; $i++){ + array_push($this->$val, $this->attrs[$val][$i]); + } + } + + /* Fix USB entry */ + if ($this->ghUsbSupport == "true"){ + $this->ghUsbSupport= _("present"); + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","terminal/".get_class($this),$this->dn); + } + + /* Do we represent a valid terminal? */ + if (!$this->is_account && $this->parent === NULL){ + return("\"\" ". + msgPool::noValidExtension(_("terminal")).""); + } + + $smarty= get_smarty(); + $display= ""; + $smarty->assign("ACL",TRUE); + if(!preg_match("/r/",$this->getacl(""))){ + $smarty->assign("ACL",FALSE); + }elseif(!is_callable("snmpget")){ + msg_dialog::display(_("Configuration error"), msgPool::missingext("snmp"), ERROR_DIALOG); + + $smarty->assign("load", progressbar(0,100,15,true)); + $smarty->assign("mem", progressbar(0,100,15,true)); + $smarty->assign("swap", progressbar(0,100,15,true)); + foreach(array("uptime", "sshd", "X", "saned", "artsd", "cupsd","status","ghNetNic", "ghIdeDev", "ghScsiDev","FloppyDevice", "CdromDevice","active") as $val){ + $smarty->assign("$val", ""._("unknown status").""); + } + + + $display =""; + }else + /* Default entry? */ + if ($this->cn == "default"){ + $display= "

"; + $display.= _("This is a virtual terminal which has no properties to show here."); + $display.= "
"; + } else { + + /* Get template object */ + $smarty->assign("staticAddress", ""); + + /* Prevent undefined variable .... */ + $smarty->assign("load", progressbar(0,100,15,true)); + $smarty->assign("mem", progressbar(0,100,15,true)); + $smarty->assign("swap", progressbar(0,100,15,true)); + + /* Check if terminal is online */ + if (gosaSupportDaemon::ping($this->macAddress)){ + $smarty->assign("status", _("online")); + $smarty->assign("active", "true"); + + /* Fill data if we have snmp */ + $host= $this->cn; + + /* Use 'goto' as snmp community or the configured value from the config */ + $community= 'goto'; + $str= $this->config->search("terminfo", "SNMPCOMMUNITY", array('tabs')); + if(!empty($str)){ + $community = $str; + } + + /* Get memory informations */ + if(!is_callable("snmpget")){ + $MemFree = false; + }else{ + $MemFree= @snmpget($host, $community, "UCD-SNMP-MIB::memory.memAvailReal.0"); + } + if ($MemFree != FALSE){ + $MemFree= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $MemFree); + $MemTotal= @snmpget($host, $community, "UCD-SNMP-MIB::memory.memTotalReal.0"); + $MemTotal= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $MemTotal); + if ($MemTotal != 0){ + $smarty->assign("mem",progressbar( (int)(($MemTotal - $MemFree)*100/$MemTotal),100,15,true)); + ; + } + $SwapFree= @snmpget($host, $community, "UCD-SNMP-MIB::memory.memAvailSwap.0"); + $SwapFree= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $SwapFree); + $SwapTotal= @snmpget($host, $community, "UCD-SNMP-MIB::memory.memTotalSwap.0"); + $SwapTotal= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $SwapTotal); + if ($SwapTotal != 0){ +#$smarty->assign("swap", (int)(($SwapTotal - $SwapFree)*100/$SwapTotal)); + $smarty->assign("swap", progressbar(0,100,15,true)); + } + + /* Get system uptime */ + $sysup= @snmpget($host, $community, "SNMPv2-MIB::sysUpTime.0"); + $smarty->assign("uptime", preg_replace('/^.* ([0-9:]+)\..*$/', '\\1', $sysup)); + + /* Get system load */ + $sysload= @snmpget($host, $community, "UCD-SNMP-MIB::laLoad.2"); + $sysload= preg_replace('/^.*[=:] ([0-9.]+)$/', '\\1', $sysload); + + $smarty->assign("load", progressbar($sysload*100,100,15,true)); + + /* Get status for key processes */ + $processes= @snmpwalk($host, $community, "UCD-SNMP-MIB::prNames"); + $check4= array("sshd", "cupsd", "artsd", "X", "saned"); + foreach ($check4 as $pname){ + $eflag= -1; + foreach ($processes as $key => $val){ + $process= preg_replace('/^.*[:=] (.*)$/', '\\1', $val); + if ($process == $pname){ + $index= preg_replace('/^.*\.([0-9]+) [:=] .*$/', '\\1', $val); + $res= @snmpget($host, $community, "UCD-SNMP-MIB::prErrorFlag.$index"); + $eflag= preg_replace('/^.*[:=] /', '', $res); + break; + } + } + switch ($eflag){ + case 0: + $smarty->assign("$pname", "\""._("running")."\""); + break; + case 1: + $smarty->assign("$pname", "\""._("not"); + break; + default: + $smarty->assign("$pname", _("not defined")); + } + } + } else { + foreach(array("uptime", "sshd", "X", "saned", "artsd", "cupsd") as $val){ + $smarty->assign("$val", ""._("unknown status").""); + } + } + /* Check for mounted partitions (show max 8 partitions) */ + $partitions= ""; + for ($n= 1; $n<9; $n++){ + $device= @snmpget($host, $community, "UCD-SNMP-MIB::dskDevice.$n"); + if ($device == ""){ + break; + } + $device= preg_replace('/^STRING: */', '', $device); + $usage= @snmpget($host, $community, "UCD-SNMP-MIB::dskPercent.$n"); + $usage= preg_replace('/^INTEGER: */', '', $usage); + $partitions.= "$device".progressbar($usage,100,16,true)."\n"; + } + $smarty->assign("partitions", $partitions); + } else { + $smarty->assign("status", _("offline")); + $smarty->assign("active", "false"); + } + + /* Set floppy and cdrom status */ + foreach(array("Floppy", "Cdrom") as $val){ + $name= "goto".$val."Enable"; + if ($this->$name == "YES"){ + $status= _("present"); + } else { + $status= "-"; + } + $smarty->assign($val."Device", $status); + } + + /* Show main page */ + foreach(array("ghNetNic", "ghIdeDev", "ghScsiDev") as $val){ + if (!count($this->$val)){ + $this->$val= "-"; + } + $smarty->assign($val, $this->$val); + } + } + foreach(array("ghCpuType", "ghMemSize", "macAddress", "ghUsbSupport", + "ghGfxAdapter", "ghSoundAdapter", "gotoLastUser", "ghInventoryNumber") as $val){ + + $smarty->assign($val, $this->$val); + } + $display= $smarty->fetch (get_template_path('info.tpl', TRUE, dirname(__FILE__))); + + return ($display); + } + + function remove_from_parent() + { + } + + + /* Save data to object */ + function save_object() + { + plugin::save_object(); + } + + + /* Save to LDAP */ + function save() + { + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("System info"), + "plDescription" => _("System informations"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 33, + "plSection" => array("administration"), + "plCategory" => array("workstation","server","terminal"), + "plProvidedAcls"=> array() + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalService.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalService.inc new file mode 100644 index 000000000..a19bfe318 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalService.inc @@ -0,0 +1,711 @@ +orig_dn= $this->dn; + + /* Check if we are a part of an ogroup. + * In this case, we have to hide all the inherit stuff. + */ + if(isset($parent) && get_class($parent) == "ogroup"){ + $this->is_ogroup = TRUE; + } + + /* Check if we are member of an object group. + */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(|(objectClass=gotoTerminalTemplate)(objectClass=gotoWorkstationTemplate))(member=".LDAP::prepare4filter($this->dn)."))"); + if($ldap->count()){ + $this->is_ogroup_member = TRUE; + } + + /* Load gotoLpdEnable + */ + $this->gotoLpdEnable = array(); + if(isset($this->attrs['gotoLpdEnable']['count'])){ + for($i = 0 ; $i < $this->attrs['gotoLpdEnable']['count']; $i ++){ + $this->gotoLpdEnable[] = $this->attrs['gotoLpdEnable'][$i]; + } + } + $this->gotoLpdEnable_dialog = new gotoLpdEnable($this->config,$this->gotoLpdEnable,$this); + + /* Get list of available xdrivers */ + $this->XDrivers = $this->getListOfXDrivers(); + + /* Create a list of available resolutions. + */ + $this->XResolutions= array( + "640x480" => "640x480", + "800x600" => "800x600", + "1024x768" => "1024x768", + "1152x864" => "1152x864", + "1280x1024" => "1280x1024", + "1400x1050" => "1400x1050", + "1600x1200" => "1600x1200"); + + if($this->config->get_cfg_value("resolutions") != ""){ + $file = $this->config->get_cfg_value("resolutions"); + if(is_readable($file)){ + $str = file_get_contents($file); + $lines = split("\n",$str); + foreach($lines as $line){ + $line = trim($line); + if(!empty($line)){ + $this->XResolutions[$line]=$line; + } + } + }else{ + msg_dialog::display(_("Configuration error"), msgPool::cannotReadFile($file), WARNING_DIALOG); + } + } + + /* Create a set of selectable color depths + */ + $this->XColordepths= array( + "8" => "8 " ._("bit"), + "15" => "15 "._("bit"), + "16" => "16 "._("bit"), + "24" => "24 "._("bit")); + + + /* Create a set of selectable keyboard models + */ + $this->XKbModels = array(); + foreach(array ("btc9000", "chicony", "compaq", "dell", "dell101", "everex", + "flexpro", "geniuscomfy", "hp", "itouch", "jp106", "logicordless", + "logiinetnav", "logiinternet", "macintosh", "microsoft", + "microsoftpro", "omnikey101", "pc101", "pc102", "pc104", + "pc105", "rapidaccess", "rapidaccess2", "winbook") as $type){ + $this->XKbModels[$type] = $type; + } + + /* Additional values will be extracted from CONFIG_DIR.keyboardLayouts */ + $this->XKbLayouts = array("de"=> "de","en" =>"en", "es" => "es", "us" =>"us", "fr" => "fr"); + $this->XKbVariants= array("nodeadkeys"=>"nodeadkeys", "basic"=>"basic"); + $this->MouseTypes = array("ImPS/2"=>"ImPS/2","PS/2"=>"PS/2", "explorerps/2"=>"explorerps/2", + "Microsoft"=>"Microsoft","Logitech"=>"Logitech"); + $this->MousePorts = array("/dev/ttyS0"=>"/dev/ttyS0", + "/dev/ttyS1"=>"/dev/ttyS1","/dev/psaux"=>"/dev/psaux", + "/dev/input/mice"=>"/dev/input/mice"); + + + /* Try to read additional keyboard layouts + */ + if(file_exists(CONFIG_DIR."/keyboardLayouts")){ + if(is_readable(CONFIG_DIR."/keyboardLayouts")){ + $str = file_get_contents(CONFIG_DIR."/keyboardLayouts"); + $tmp = split("\n",$str); + foreach($tmp as $entry){ + if((!empty($entry)) && (!preg_match("/^#/",$entry))){ + $entry = trim($entry); + $tmp2 = split ("\:",$entry); + $la = trim($tmp2[0]); // What would be saved to ldap + $da = trim($tmp2[1]); // This wis displayed in the listbox + $this->XKbLayouts [ $la] = $da; + } + } + } + } + + /* Terminal server methods supported by LTSP */ + if($this->is_ogroup_member){ + $this->XMethods["default"]= _("inherited"); + } + $this->XMethods["xdmcp"] = _("XDMCP"); + $this->XMethods["ldm"] = _("LDM"); + $this->XMethods["shell"] = _("Shell"); + $this->XMethods["telnet"] = _("Telnet"); + $this->XMethods["rdp"] = _("Windows RDP"); + #$this->XMethods["citrix"] = _("ICA client"); + + /* Get selected gotoXdmcpServer */ + $this->selected_xdmcp_servers = array(); + if(isset($this->attrs['gotoXdmcpServer'])){ + for($i = 0 ; $i < $this->attrs['gotoXdmcpServer']['count'] ; $i++){ + $this->selected_xdmcp_servers[] = $this->attrs['gotoXdmcpServer'][$i]; + } + } + + /* Load phone hardware list + */ + $tmp = get_sub_list("(objectClass=goFonHardware)","",array(get_ou("phoneRDN")), + $this->config->current['BASE'],array("cn","description"), GL_NO_ACL_CHECK); + foreach($tmp as $attrs){ + $cn= $attrs['cn'][0]; + $description= ""; + if (isset($attrs['description'])){ + $description= " - ".$attrs['description'][0]; + } + $this->hardware_list[$cn]= "$cn$description"; + } + $this->hardware_list["automatic"]= _("automatic"); + ksort($this->hardware_list); + + /* These departments may contain objects that have + goFonHardware set. + */ + $deps_a = array( + get_people_ou(), + get_ou("ogroupRDN"), + get_ou("serverRDN"), + get_ou("terminalRDN"), + get_ou("workstationRDN"), + get_ou("printerRDN"), + get_ou("componentRDN"), + get_ou("phoneRDN")); + + $tmp = get_sub_list("(goFonHardware=*)","",$deps_a,$this->config->current['BASE'], + array('cn','dn','goFonHardware'),GL_NO_ACL_CHECK); + foreach($tmp as $attrs){ + $cn = $attrs['goFonHardware'][0]; + if(isset($this->hardware_list[$cn])){ + $this->used_hardware[$cn]= $cn; + } + } + + /* Load hardware list */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $map= array( + "gotoXResolution", + "gotoXColordepth", + "gotoXKbModel", + "gotoXKbLayout", +# "gotoXDriver", + "gotoXdmcpServer", + "gotoXKbVariant", + "gotoXMouseType", + "gotoXMethod", + "gotoXMouseport"); + $ldap->search("(&(|(objectClass=gotoTerminalTemplate)(objectClass=gotoWorkstationTemplate))(member=".LDAP::prepare4filter($this->dn)."))",$map); + if ($ldap->count() == 1){ + $attrs= $ldap->fetch(); + foreach ($map as $name){ + if (!isset($attrs[$name][0])){ + continue; + } + + switch ($name){ +# case 'gotoXDriver': +# $this->XDrivers = array('default' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->XDrivers; +# break; + case 'gotoXMethod': + $this->XMethods = array('default' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->XMethods; + if(isset($attrs['gotoXdmcpServer'])){ + for($i = 0 ; $i < $attrs['gotoXdmcpServer']['count'] ; $i++){ + $this->inherited_xdmcp_servers[] = $attrs['gotoXdmcpServer'][$i]; + } + } + break; + case 'gotoXResolution': + $this->XResolutions= array('default' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->XResolutions; + break; + case 'gotoXColordepth': + $this->XColordepths= array('default' => _("inherited").' ['.$attrs[$name][0].' '._('Bit').']') + $this->XColordepths; + break; + case 'gotoXKbModel': + $this->XKbModels= array('default' => _("inherited").' ['.$attrs[$name][0].']') + $this->XKbModels; + break; + case 'gotoXKbLayout': + $this->XKbLayouts= array('default' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->XKbLayouts; + break; + case 'gotoXKbVariant': + $this->XKbVariants= array('default' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->XKbVariants; + break; + case 'gotoXMouseType': + $this->MouseTypes= array('AUTO' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->MouseTypes; + break; + case 'gotoXMouseport': + $this->MousePorts= array('AUTO' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->MousePorts; + break; + } + } + } + + if(preg_match("/\+/",$this->gotoXHsync)){ + $this->AutoSync = true; + $this->gotoXHsync = preg_replace("/\+/","-",$this->gotoXHsync); + $this->gotoXVsync = preg_replace("/\+/","-",$this->gotoXVsync); + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","terminal/".get_class($this),$this->dn); + } + + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + + /* Do we represent a valid terminal? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + _("This 'dn' has no terminal features.").""; + return ($display); + } + + /* Show main page */ + $smarty= get_smarty(); + $smarty->assign("gotoLpdEnable_dialog", $this->gotoLpdEnable_dialog->execute()); + + /* Assign acls */ + $tmp= $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + if(isset($_POST['gotoXdmcpServer_add']) && isset($_POST['XdmcpAddServer'])){ + if(!in_array($_POST['gotoXdmcpServer_add'],$this->selected_xdmcp_servers)){ + $this->selected_xdmcp_servers[] = $_POST['gotoXdmcpServer_add']; + } + } + + if(isset($_POST['selected_xdmcp_servers']) && isset($_POST['XdmcpDelServer'])){ + $tmp = array(); + foreach($this->selected_xdmcp_servers as $name){ + if(!in_array($name,$_POST['selected_xdmcp_servers'])){ + $tmp[] = $name; + } + } + $this->selected_xdmcp_servers = $tmp; + } + + /* Arrays */ + foreach(array("XMethods", "XDrivers", "XResolutions", "XColordepths", + "XKbModels","XKbVariants","MouseTypes", "MousePorts") as $val){ + $smarty->assign("$val", $this->$val); + } + $smarty->assign("XKbLayouts", $this->XKbLayouts); + $smarty->assign("XKbLayoutKeys",array_flip($this->XKbLayouts)); + $smarty->assign("nfsservers", $this->config->data['SERVERS']['NFS']); + + + /* Create a list of useable servers for the currently selected + * connection type. + */ + $xdmcp_types = $this->config->data['SERVERS']['TERMINAL_SESSION_TYPES']; + $available_servers = array(); + foreach($xdmcp_types as $servername =>$supported_types){ + if(in_array(strtoupper($this->gotoXMethod),$supported_types)){ + $available_servers[] = $servername; + } + } + + /* Append additional information to invalid server selections. + */ + $tmp = array(); + foreach($this->selected_xdmcp_servers as $server){ + if(in_array($server,$available_servers)){ + $tmp[$server] = $server; + }else{ + $tmp[$server] = $server." - "._("Unsupported"); + } + } + + /* Remove already selected servers from available list. + */ + foreach($available_servers as $key => $server){ + if(isset($tmp[$server])){ + unset($available_servers[$key]); + } + } + + $smarty->assign("selected_xdmcp_servers", $tmp); + $smarty->assign("inherited_xdmcp_servers", $this->inherited_xdmcp_servers); + $smarty->assign("available_xdmcp_servers", $available_servers); + + /* Variables - select */ + foreach(array("gotoXMethod","gotoXDriver", "gotoXResolution", "gotoXColordepth", + "gotoLpdServer", "gotoXKbModel", "gotoXKbLayout", + "gotoXKbVariant", "gotoXMouseType", "gotoXMouseport") as $val){ + + $smarty->assign($val."_select", $this->$val); + } + + /* Variables */ + foreach(array("gotoXHsync", "gotoXVsync") as $val){ + $smarty->assign($val, $this->$val); + } + $smarty->assign("staticAddress", ""); + + /* Checkboxes */ + foreach(array("gotoScannerEnable") as $val){ + if ($this->$val == TRUE) { + $smarty->assign("$val", "checked"); + } else { + $smarty->assign("$val", ""); + } + } + + /* Phone stuff */ + $smarty->assign ("goFonHardware", $this->goFonHardware); + $hl= "\n"; + $smarty->assign ("hardware_list", $hl); + $smarty->assign ("gotoXMonitor", $this->gotoXMonitor); + + $smarty->assign("AutoSyncACL",$this->getacl("AutoSync")); + + $smarty->assign("AutoSyncCHK"," "); + if($this->AutoSync){ + $smarty->assign("AutoSyncCHK"," checked "); + $smarty->assign("gotoXVsyncACL", preg_replace("/w/","",$this->getacl("gotoXVsync"))); + $smarty->assign("gotoXHsyncACL", preg_replace("/w/","",$this->getacl("gotoXHsync"))); + } + + /* Show main page */ + return($smarty->fetch (get_template_path('terminalService.tpl', TRUE,dirname(__FILE__)))); + } + + function remove_from_parent() + { + new log("remove","terminal/".get_class($this),$this->dn,array_keys($this->attrs)); + $this->handle_post_events("remove"); + } + + + /* Save data to object */ + function save_object() + { + plugin::save_object(); + + $this->gotoLpdEnable_dialog->save_object(); + if($this->gotoLpdEnable_dialog->is_account){ + $this->gotoLpdEnable = $this->gotoLpdEnable_dialog->save(); + }else{ + $this->gotoLpdEnable = array(); + } + + /* Save checkbox state */ + if (isset ($_POST['gotoXMethod'])){ + foreach (array("gotoScannerEnable") as $val){ + + if($this->acl_is_writeable($val)){ + if (!isset ($_POST["$val"])){ + $this->$val= FALSE; + } else { + $this->$val= TRUE; + } + } + } + } + + if(isset($_POST['gotoXDriver'])){ + if(isset($_POST['AutoSync'])){ + $this->AutoSync = true; + }else{ + $this->AutoSync = false; + } + } + + /* Default entries can use blank hsync/vsync entries */ + if ($this->dn != "" && $this->cn != "default" && $this->cn != "default"){ + + /* But only if no auto sync is enabled... */ + if (!$this->AutoSync){ + + /* Check vsync for correct usage */ + $val= preg_replace ("/\s/", "", $this->gotoXVsync); + if (!preg_match ("/^\d+(\.\d+)?([-]\d+(\.\d+)?)?$/", $val) && $this->acl_is_writeable("gotoXVsync")){ + $message[]= msgPool::invalid(_("VSync range")); + } elseif ($this->acl_is_writeable("gotoXVsync")){ + list($v1,$v2)= preg_split ("/[-+]/", $val); + if ($v2 != ""){ + if ($v1 > $v2){ + $message[]= msgPool::invalid(_("VSync range")); + } + } + } + + /* Check hsync for correct usage */ + $val= preg_replace ("/\s/", "", $this->gotoXHsync); + if (!preg_match ("/^\d+(\.\d+)?([-]\d+(\.\d+)?)?$/", $val) && $this->acl_is_writeable("gotoXHsync")){ + $message[]= msgPool::invalid(_("HSync range")); + } elseif ($this->acl_is_writeable("gotoXHsync")){ + list($v1,$v2)= preg_split ("/[-+]/", $val); + if ($v2 != ""){ + if ($v1 > $v2){ + $message[]= msgPool::invalid(_("HSync range")); + } + } + } + } + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + $message = array_merge($message,$this->gotoLpdEnable_dialog->check()); + + if($this->gotoXMethod != "default"){ + $xdmcp_types = $this->config->data['SERVERS']['TERMINAL_SESSION_TYPES']; + $available_servers = array(); + foreach($xdmcp_types as $servername =>$supported_types){ + if(in_array(strtoupper($this->gotoXMethod),$supported_types)){ + $available_servers[] = $servername; + } + } + foreach($this->selected_xdmcp_servers as $server){ + if(!in_array($server,$available_servers)){ + $message[] = _("Remote desktop settings contains servers that do not support the selected connection method."); + break; + } + } + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* remove objectclass GOhard if this is an ogroup tab */ + if(isset($this->parent->by_object['ogroup'])){ + $this->objectclasses = array(); + } + + plugin::save(); + + /* Strip out 'default' values */ + foreach(array("gotoXMethod","gotoXDriver", "gotoXResolution", "gotoXColordepth", + "gotoLpdServer", "gotoXKbModel", "gotoXKbLayout", + "gotoXKbVariant", "gotoXMouseType", "gotoXMouseport") as $val){ + + if ($this->attrs[$val] == "default"){ + $this->attrs[$val]= array(); + } + } + + if($this->gotoXMethod == "default"){ + $this->attrs['gotoXdmcpServer'] = array(); + $this->attrs['gotoXMethod'] = array(); + }else{ + $this->attrs['gotoXdmcpServer'] = array_values($this->selected_xdmcp_servers); + } + + + if($this->AutoSync){ + $this->attrs['gotoXHsync'] = "30+55"; + $this->attrs['gotoXVsync'] = "50+70"; + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + new log("modify","terminal/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + $this->handle_post_events("modify"); + + /* Send goto reload event to gosaSupportDaemon */ + if(count($this->attrs)){ + $this->send_goto_reload(); + } + } + + + function getListOfXDrivers() + { + $drivers = array("default" => "["._("unknown")."]"); + + /* Generate a list of xdrivers from CONFIG_DIR/xdrivers */ + if (file_exists(CONFIG_DIR.'/xdrivers')){ + $xdrivers = file (CONFIG_DIR.'/xdrivers'); + foreach ($xdrivers as $line){ + if (!preg_match ("/^#/", $line)){ + $drivers[]= trim($line); + } + } + } else { + foreach( array( + "ati", "atimisc", "chips", "cirrus", "cyrix", "fbdev", "fglrx", + "i128", "i740", "i810", "intel", "imstt", "mga", "neomagic", "newport", "nsc", "nv", "nvidia", + "r128", "radeon", "rendition", "s3", "s3virge", "savage", "siliconmotion", + "sis", "tdfx", "tga", "trident", "tseng", "vesa", "vga", "vmware") as $driver){ + $drivers[] = $driver; + } + } + return($drivers); + } + + function send_goto_reload() + { + if(count($this->attrs) && class_available("DaemonEvent")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + $o_queue = new gosaSupportDaemon(); + if(isset($events['TRIGGERED']['DaemonEvent_goto_reload'])){ + $evt = $events['TRIGGERED']['DaemonEvent_goto_reload']; + $macs = array(); + + /* Get list of macAddresses + */ + if(isset($this->parent->by_object['ogroup'])){ + + /* If we are an object group, add all member macs + */ + $p = $this->parent->by_object['ogroup']; + foreach($p->memberList as $dn => $obj){ + if(preg_match("/".preg_quote(get_ou("systemIncomingRDN"), '/')."/",$dn)) continue; + if(isset($p->objcache[$dn]['macAddress']) && !empty($p->objcache[$dn]['macAddress'])){ + $macs[] = $p->objcache[$dn]['macAddress']; + } + } + }elseif(isset($this->parent->by_object['workgeneric']->netConfigDNS->macAddress)){ + + /* We are a workstation. Add current mac. + */ + $mac = $this->parent->by_object['workgeneric']->netConfigDNS->macAddress; + if(!empty($mac) && !preg_match("/".preg_quote(get_ou("systemIncomingRDN"), '/')."/",$this->orig_dn)){ + $macs[] = $mac; + } + } + + /* Trigger event for all member objects + */ + if(count($macs)){ + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $target = $o_queue->get_host().":".$o_queue->get_port(); + $tmp->add_targets(array($target)); + $tmp->set_macs($macs); + if(!$o_queue->append($tmp,TRUE)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Service"), + "plDescription" => _("Terminal service"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 3, + "plSection" => array("administration"), + "plCategory" => array("terminal"), + + "plProvidedAcls"=> array( + + "gotoXMonitor" => _("Monitor"), + "gotoXMethod" => _("Method"), + "gotoXdmcpServer" => _("Remote desktop"), + "gotoXDriver" => _("Gfx driver"), + "gotoXResolution" => _("Gfx resolution"), + "gotoXColordepth" => _("Gfx color depth"), + "gotoXHsync" => _("HSync"), + "gotoXVsync" => _("VSync"), + "AutoSync" => _("Auto-Sync"), + "gotoScannerEnable" => _("Scanner enabled"), + "gotoLpdEnable" => _("Printer enabled"), + "gotoXKbModel" => _("Keyboard model"), + "gotoXKbLayout" => _("Keyboard layout"), + "gotoXKbVariant" => _("Keyboard variant"), + "gotoXMouseType" => _("Mouse type"), + "gotoXMouseport" => _("Mouse port"), + "gotoLpdEnable" => _("Printer enabled"), + "goFonHardware" => _("Telephone hardware")) + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalStartup.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalStartup.inc new file mode 100644 index 000000000..c55ce9824 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_terminalStartup.inc @@ -0,0 +1,554 @@ +gotoBootKernels = array("default"=> ("default")); + + /* Get arrays */ + foreach (array("gotoModules") as $val){ + $this->$val = array(); + if (isset($this->attrs["$val"]["count"])){ + for ($i= 0; $i<$this->attrs["count"]; $i++){ + if (isset($this->attrs["$val"][$i])){ + array_push($this->$val, $this->attrs["$val"][$i]); + } + } + } + sort ($this->$val); + $this->$val= array_unique($this->$val); + } + + /* Prepare Shares */ + if((isset($this->attrs['gotoShare']))&&(is_array($this->attrs['gotoShare']))){ + unset($this->attrs['gotoShare']['count']); + foreach($this->attrs['gotoShare'] as $share){ + $tmp = $tmp2 = array(); + $tmp = split("\|",$share); + $tmp2['server'] =$tmp[0]; + $tmp2['name'] =$tmp[1]; + $tmp2['mountPoint'] =$tmp[2]; + $this->gotoShares[$tmp[1]."|".$tmp[0]]=$tmp2; + } + } + + $this->gotoShareSelections= $config->getShareList(true); + $this->gotoAvailableShares= $config->getShareList(false); + + $this->orig_dn= $this->dn; + + /* Creating a list of valid Mirrors + * none will not be saved to ldap. + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ui = get_userinfo(); + foreach($this->config->data['SERVERS']['LDAP'] as $dn => $data){ + if($ui->get_category_permissions($data['dn'],"server",TRUE)){ + for($i = 0; $i < $data['goLdapBase']['count']; $i ++){ + $name = $data["cn"][0].":".$data["goLdapBase"][$i]; + $this->gotoLdapServerList[]= $name; + } + } + } + + if(isset($this->attrs['gotoLdapServer'])){ + unset($this->attrs['gotoLdapServer']['count']); + sort($this->attrs['gotoLdapServer']); + foreach($this->attrs['gotoLdapServer'] as $value){ + $this->gotoLdapServers[] = preg_replace("/^[0-9]*:/","",$value); + } + } + natcasesort($this->gotoLdapServerList); + + /* Load hardware list */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(|(objectClass=gotoTerminalTemplate)(objectClass=gotoWorkstationTemplate))(member=".LDAP::prepare4filter($this->dn)."))"); + if ($ldap->count() == 1){ + $map= array("gotoLdapServer","gotoBootKernel"); + $attrs= $ldap->fetch(); + $this->member_of_ogroup = TRUE; + $this->o_group_dn = $attrs['dn']; + + foreach ($map as $name){ + if (!isset($attrs[$name][0])){ + continue; + } + switch ($name){ + case 'gotoBootKernel': + /* Handle inheritance value "default" */ + if ($this->member_of_ogroup){ + $this->gotoBootKernels["default-inherited"]= _("inherited")." [".$attrs['gotoBootKernel'][0]."]"; + } + break; + case 'gotoLdapServer': + $this->goLdapServerList= array_merge(array('default-inherit' => _("inherited").' ['.$attrs[$name][0].']' ), $this->goLdapServerList); + break; + } + } + } + + if(!count($this->gotoLdapServers) && $this->member_of_ogroup){ + $this->gotoLdap_inherit = TRUE; + } + + /* Get list of boot kernels */ + if (isset($this->config->data['TABS'])){ + $command= $this->config->search(get_class($this), "systemKernelsHook",array('tabs')); + + if (!check_command($command)){ + $message[]= sprintf(_("Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to exist."), $command, + get_class($this)); + } else { + $fh= popen($command, "r"); + while (!feof($fh)) { + $buffer= trim(fgets($fh, 256)); + + if(!empty($buffer)){ + + $name=$value = $buffer; + + if(preg_match("/:/",$buffer)){ + $name = preg_replace("/:.*$/","",$buffer); + $value= preg_replace("/^.*:/","",$buffer); + $this->gotoBootKernels[$name]= $name.":".$value; + }else{ + $this->gotoBootKernels[$name]= $value; + } + } + } + pclose($fh); + } + + } + + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","terminal/".get_class($this),$this->dn); + } + + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + + /* Do we represent a valid terminal? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("terminal")).""; + return ($display); + } + + /* Add module */ + if (isset ($_POST['add_module'])){ + if ($_POST['module'] != "" && $this->acl_is_writeable("gotoMode")){ + $this->add_list ($this->gotoModules, $_POST['module']); + } + } + + /* Delete module */ + if (isset ($_POST['delete_module'])){ + if (count($_POST['modules_list']) && $this->acl_is_writeable("gotoMode")){ + $this->del_list ($this->gotoModules, $_POST['modules_list']); + } + } + + /* Show main page */ + $smarty= get_smarty(); + + /* Assign acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $smarty->assign("member_of_ogroup",$this->member_of_ogroup); + + /* In this section server shares will be defined + * A user can select one of the given shares and a mount point + * and attach this combination to his setup. + */ + $smarty->assign("gotoShareSelections", $this->gotoShareSelections); + $smarty->assign("gotoShareSelectionKeys", array_flip($this->gotoShareSelections)); + $smarty->assign("gotoBootKernels",$this->gotoBootKernels); + + /* if $_POST['gotoShareAdd'] is set, we will try to add a new entry + * This entry will be, a combination of mountPoint and sharedefinitions + */ + if(isset($_POST['gotoShareAdd']) && $this->acl_is_writeable("gotoShare")){ + /* We assign a share to this user, if we don't know where to mount the share */ + if((!isset($_POST['gotoShareMountPoint']))||(empty($_POST['gotoShareMountPoint']))||(preg_match("/[\|]/i",$_POST['gotoShareMountPoint']))){ + msg_dialog::display(_("Error"), msgPool::invalid(_("Mount point")), WARNING_DIALOG); + }elseif(isset($_POST['gotoShareSelection']) && isset($this->gotoAvailableShares[$_POST['gotoShareSelection']])){ + $a_share = $this->gotoAvailableShares[$_POST['gotoShareSelection']]; + $s_mount = $_POST['gotoShareMountPoint']; + /* Preparing the new assignment */ + $this->gotoShares[$a_share['name']."|".$a_share['server']]=$a_share; + $this->gotoShares[$a_share['name']."|".$a_share['server']]['mountPoint']=$s_mount; + } + } + + /* if the Post gotoShareDel is set, someone asked GOsa to delete the selected entry (if there is one selected) + * If there is no defined share selected, we will abort the deletion without any message + */ + if((isset($_POST['gotoShareDel']))&&(isset($_POST['gotoShare'])) && $this->acl_is_writeable("gotoShare")){ + unset($this->gotoShares[$_POST['gotoShare']]); + } + + $smarty->assign("gotoShares",$this->printOutAssignedShares()); + $smarty->assign("gotoShareKeys",array_flip($this->printOutAssignedShares())); + + /* Create divSelectBox for ldap server selection + */ + $SelectBoxLdapServer = new divSelectBox("LdapServer"); + $SelectBoxLdapServer->SetHeight(80); + + /* Add new ldap server to the list */ + if(!$this->gotoLdap_inherit && isset($_POST['add_ldap_server']) && isset($_POST['ldap_server_to_add'])){ + if(isset($this->gotoLdapServerList[$_POST['ldap_server_to_add']])){ + $to_add = $this->gotoLdapServerList[$_POST['ldap_server_to_add']]; + if(!in_array($to_add,$this->gotoLdapServers)){ + $this->gotoLdapServers[] = $to_add; + } + } + } + + /* Move ldap servers up and down */ + if(!$this->gotoLdap_inherit){ + foreach($_POST as $name => $value){ + if(preg_match("/sort_ldap_up_/",$name)){ + $id = preg_replace("/^sort_ldap_up_([0-9]*)_(x|y)$/","\\1",$name); + $from = $id; + $to = $id -1; + $tmp = $this->array_switch_item($this->gotoLdapServers,$from,$to); + if($tmp){ + $this->gotoLdapServers = $tmp; + } + break; + } + if(preg_match("/sort_ldap_down_/",$name)){ + $id = preg_replace("/^sort_ldap_down_([0-9]*)_(x|y)$/","\\1",$name); + $from = $id; + $to = $id +1; + $tmp = $this->array_switch_item($this->gotoLdapServers,$from,$to); + if($tmp){ + $this->gotoLdapServers = $tmp; + } + break; + } + if(preg_match("/gotoLdapRemove_/",$name)){ + $id = preg_replace("/^gotoLdapRemove_([0-9]*)_(x|y)$/","\\1",$name); + $value = $this->gotoLdapServers[$id]; + $this->gotoLdapServers = array_remove_entries(array($value),$this->gotoLdapServers); + break; + } + } + } + /* Add Entries + */ + foreach($this->gotoLdapServers as $key => $server){ + if(!in_array($server,$this->gotoLdapServerList)){ + $server = $server." (missing)"; + } + + $SelectBoxLdapServer->AddEntry( + array(array("string" => $server), + array("string" => + " ". + " ". + "", + "attach" => "style='text-align:right;width:40px;border-right:0px;'"))); + } + + if($this->gotoLdap_inherit){ + $smarty->assign("gotoLdapServerACL_inherit", preg_replace("/w/","",$this->getacl("gotoLdapServer")));; + }else{ + $smarty->assign("gotoLdapServerACL_inherit", $this->getacl("gotoLdapServer")); + } + + $list = array(); + foreach($this->gotoLdapServerList as $key => $entry){ + if(!in_array($entry,$this->gotoLdapServers)){ + $list[$key] = $entry; + } + } + $smarty->assign("gotoLdapServers", $SelectBoxLdapServer->DrawList()); + $smarty->assign("gotoLdapServerList", $list); + $smarty->assign("gotoLdap_inherit", $this->gotoLdap_inherit); + $smarty->assign("JS", session::get('js')); + + foreach (array("gotoModules" ) as $val){ + $smarty->assign("$val", $this->$val); + } + + /* Values */ + foreach(array("gotoBootKernel", "gotoKernelParameters") as $val){ + $smarty->assign($val, $this->$val); + } + + /* Show main page */ + return($smarty->fetch (get_template_path('terminalStartup.tpl', TRUE,dirname(__FILE__)))); + } + + function remove_from_parent() + { + if($this->acl_is_removeable()){ + $this->handle_post_events("remove"); + new log("remove","terminal/".get_class($this),$this->dn,array_keys($this->attrs)); + } + } + + + /* Save data to object */ + function save_object() + { + plugin::save_object(); + + if(isset($_POST['TerminalStarttabPosted'])){ + if(isset($_POST['gotoLdap_inherit'])){ + $this->gotoLdap_inherit = TRUE; + }else{ + $this->gotoLdap_inherit = FALSE; + } + } + } + + + /* Save to LDAP */ + function save() + { + /* Depending on the baseobject (Ogroup / WS) we + * use another set of objectClasses + * In case of TS itself, we use "array("GOhard");" + * if we are currently editing from ogroup menu we use (array("goTerminalTemplate")) + */ + if(isset($this->parent->by_object['ogroup'])){ + $this->objectclasses = array("gotoTerminalTemplate"); + }elseif(isset($this->parent->by_object['termgeneric'])){ + $this->objectclasses = array("GOhard"); + }else{ + msg_dialog::display(_("Fatal error"), + "Object Type Configuration is unknown. Please contact the GOsa developers.", + FATAL_ERROR_DIALOG); + exit(); + } + + /* Find proper terminal path for tftp configuration + FIXME: This is suboptimal when the default has changed to + another location! */ + if ($this->gotoTerminalPath == "default-inherit"){ + $ldap= $this->config->get_ldap_link(); + + /* Strip relevant part from dn, keep trailing ',' */ + $tmp= preg_replace("/^cn=[^,]+,".get_ou('terminalRDN')."/i", "", $this->dn); + $tmp= preg_replace("/".$this->config->current['BASE']."$/i", "", $tmp); + + /* Walk from top to base and try to load default values for + 'gotoTerminalPath'. Abort when an entry is found. */ + while (TRUE){ + $tmp= preg_replace ("/^[^,]+,/", "", $tmp); + + $ldap->cat("cn=default,".get_ou('terminalRDN').$tmp. + $this->config->current['BASE'], array('gotoTerminalPath')); + $attrs= $ldap->fetch(); + if (isset($attrs['gotoTerminalPath'])){ + $this->gotoTerminalPath= $attrs['gotoTerminalPath'][0]; + break; + } + + /* Nothing left? */ + if ($tmp == ""){ + break; + } + } + } + + plugin::save(); + + /* Add missing arrays */ + foreach (array("gotoModules") as $val){ + if (isset ($this->$val) && count ($this->$val) != 0){ + + $this->attrs["$val"]= array_unique($this->$val); + } + if(!isset($this->attrs["$val"])){ + $this->attrs["$val"]=array(); + } + } + + /* Prepare list of ldap servers */ + $this->attrs['gotoLdapServer'] = array(); + if(!$this->gotoLdap_inherit){ + $i = 0; + foreach($this->gotoLdapServers as $server){ + $i ++; + $this->attrs['gotoLdapServer'][] = $i.":".$server; + } + } + + /* Strip out 'default' values */ + if ($this->attrs['gotoBootKernel'] == "default-inherited"){ + $this->attrs['gotoBootKernel']= array(); + } + + /* prepare share settings */ + $tmp = array(); + foreach($this->gotoShares as $name => $settings){ + $tmp2 = split("\|",$name); + $name = $tmp2[0]; + $tmp[] = $settings['server']."|".$name."|".$settings['mountPoint']; + } + $this->attrs['gotoShare']=$tmp; + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + + $this->cleanup(); + $ldap->modify ($this->attrs); + + new log("modify","terminal/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + $this->handle_post_events("modify"); + } + + /* Add value to array, check if unique */ + function add_list (&$array, $value) + { + if ($value != ""){ + $array[]= $value; + sort($array); + array_unique ($array); + } + } + + + /* Delete value to array, check if unique */ + function del_list (&$array, $list) + { + $tmp= array(); + foreach ($array as $mod){ + if (!in_array($mod, $list)){ + $tmp[]= $mod; + } + } + $array= $tmp; + } + + /* Generate ListBox frindly output for the defined shares + * Possibly Add or remove an attribute here, + */ + function printOutAssignedShares() + { + $a_return = array(); + if(is_array($this->gotoShares)){ + foreach($this->gotoShares as $share){ + $a_return[$share['name']."|".$share['server']]= $share['name']." [".$share['server']."]"; + } + } + return($a_return); + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + $source_o = new termstartup ($this->config, $source['dn']); + + foreach(array("gotoModules", "gotoKernelParameters","gotoShares","gotoKernelParameters","gotoTerminalPath","gotoShares","goLdapServerList","gotoBootKernel","gotoLdapServer","gotoBootKernels") as $attr){ + $this->$attr = $source_o->$attr; + } + } + + + function array_switch_item($ar,$from,$to) + { + if(!is_array($ar)){ + return(false); + } + if(!isset($ar[$from])){ + return(false); + } + if(!isset($ar[$to])){ + return(false); + } + + $tmp = $ar[$from]; + $ar[$from] = $ar[$to]; + $ar[$to] = $tmp; + return($ar); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Startup"), + "plDescription" => _("Terminal startup"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 5, + "plSection" => array("administration"), + "plCategory" => array("terminal"), + + "plProvidedAcls"=> array( + "gotoLdapServer" => _("Ldap server"), + "gotoShare" => _("Shares"), + "gotoModules" => _("Kernel modules"), + "gotoBootKernel" => _("Boot kernel"), + "gotoKernelParameters"=> _("Kernel parameter")) + )); + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationGeneric.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationGeneric.inc new file mode 100644 index 000000000..7246e5597 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationGeneric.inc @@ -0,0 +1,753 @@ + "", "localboot" => "", "halt" => "", "update" => "", "reinstall" => "", + "rescan" => "", "wakeup" => "", "memcheck" => "", "sysinfo" => ""); + + var $fai_activated = FALSE; + + var $member_of_ogroup = FALSE; + + var $currently_installing = FALSE; + var $currently_installing_warned = FALSE; + + var $kerberos_key_service = NULL; + + function workgeneric (&$config, $dn= NULL, $parent= NULL) + { + $tmp= $config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + $this->fai_activated = TRUE; + } + + plugin::plugin ($config, $dn, $parent); + + if(class_available("krbHostKeys")){ + $this->kerberos_key_service = new krbHostKeys($this->config,$this); + } + + if(!isset($this->parent->by_object['ogroup'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + $ldap->search("(&(objectClass=gotoWorkstationTemplate)(member=".LDAP::prepare4filter($this->dn)."))",array("cn")); + $this->member_of_ogroup = $ldap->count() >= 1; + } + + $this->netConfigDNS = new termDNS($this->config,$this,$this->objectclasses); + + /* Check if this host is currently in installation process*/ + if(class_available("gosaSupportDaemon") && class_available("DaemonEvent")){ + $o = new gosaSupportDaemon(); + $e_types = DaemonEvent::get_event_types(USER_EVENT | SYSTEM_EVENT | HIDDEN_EVENT); + $evts = $o->get_entries_by_mac(array($this->netConfigDNS->macAddress)); + foreach($evts as $evt){ + if(isset($e_types['QUEUED'][$evt['HEADERTAG']]) && $evt['STATUS'] == "processing" && + $e_types['QUEUED'][$evt['HEADERTAG']] == "DaemonEvent_reinstall"){ + $this->currently_installing =TRUE; + } + } + } + + /* Read arrays */ + foreach (array("ghNetNic", "ghIdeDev", "ghScsiDev") as $val){ + if (!isset($this->attrs[$val])){ + continue; + } + for ($i= 0; $i<$this->attrs[$val]['count']; $i++){ + array_push($this->$val, $this->attrs[$val][$i]); + } + } + + /* Create used ntp server array */ + $this->gotoNtpServer= array(); + if(isset($this->attrs['gotoNtpServer'])){ + $this->inheritTimeServer = false; + unset($this->attrs['gotoNtpServer']['count']); + foreach($this->attrs['gotoNtpServer'] as $server){ + $this->gotoNtpServer[$server] = $server; + } + } + + /* Set inherit checkbox state */ + if((in_array("default",$this->gotoNtpServer)) || (count($this->gotoNtpServer) == 0)){ + $this->inheritTimeServer = true; + $this->gotoNtpServer=array(); + } + + /* You can't inherit the NTP service, if we are not member in an object group */ + if(!$this->member_of_ogroup){ + $this->inheritTimeServer = FALSE; + } + + /* Create available ntp options */ + $tmp = $this->config->data['SERVERS']['NTP']; + $this->gotoNtpServers = array(); + foreach($tmp as $key => $server){ + if($server == "default") continue; + $this->gotoNtpServers[$server] = $server; + } + + $this->modes["active"]= _("Activated"); + $this->modes["locked"]= _("Locked"); + + /* Set base */ + if ($this->dn == "new"){ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + } else { + $this->base= preg_replace ("/^[^,]+,".preg_quote(get_ou("workstationRDN"), '/')."/i", "", $this->dn); + } + + /* Create an array of all Syslog servers */ + $tmp = $this->config->data['SERVERS']['SYSLOG']; + foreach($tmp as $server){ + $visible = $server; + if($server == "default" && $this->member_of_ogroup) { + $visible = "["._("inherited")."]"; + } + $this->gotoSyslogServers[$server] = $visible; + } + + $this->initial_gotoMode = $this->gotoMode; + + /* Save 'dn' for later referal */ + $this->orig_dn= $this->dn; + $this->orig_cn= $this->cn; + $this->orig_base= $this->base; + } + + + function set_acl_base($base) + { + plugin::set_acl_base($base); + $this->netConfigDNS->set_acl_base($base); + } + + function set_acl_category($cat) + { + plugin::set_acl_category($cat); + $this->netConfigDNS->set_acl_category($cat); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","workstation/".get_class($this),$this->dn); + } + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + if ((isset($_POST['action'])) && ($this->acl_is_writeable("FAIstate")) && isset($this->validActions[$_POST['saction']]) ){ + $action= $_POST['saction']; + + /* Check if we have an DaemonEvent for this action */ + if(class_available("DaemonEvent")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + if(isset($events['TRIGGERED']["DaemonEvent_".$action])){ + $evt = $events['TRIGGERED']["DaemonEvent_".$action]; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->add_targets(array($this->netConfigDNS->macAddress)); + $tmp->set_type(TRIGGERED_EVENT); + $o_queue = new gosaSupportDaemon(); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } else { + msg_dialog::display(_("Event error"), + sprintf(_("Event '%s' is not available!"),$action),ERROR_DIALOG); + } + + + } + + /* Do we represent a valid terminal? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("workstation")).""; + return($display); + } + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once && $this->acl_is_writeable("base")){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* A new base was selected, check if it is a valid one */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* Add new ntp Server to our list */ + if((isset($_POST['addNtpServer'])) && (isset($_POST['gotoNtpServers'])) && $this->acl_is_writeable("gotoNtpServer")){ + $this->gotoNtpServer[$_POST['gotoNtpServers']] = $_POST['gotoNtpServers']; + } + + /* Delete selected NtpServer for list of used servers */ + if((isset($_POST['delNtpServer'])) && (isset($_POST['gotoNtpServerSelected'])) && $this->acl_is_writeable("gotoNtpServer")){ + foreach($_POST['gotoNtpServerSelected'] as $name){ + unset($this->gotoNtpServer[$name]); + } + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + + /* Set acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $smarty->assign("cn", $this->cn); + $smarty->assign("description", $this->description); + $smarty->assign("l", $this->l); + $smarty->assign("bases", $this->get_allowed_bases()); + $smarty->assign("staticAddress", ""); + + $tmp = array(); + foreach($this->gotoNtpServers as $server){ + if(!in_array($server,$this->gotoNtpServer)){ + $tmp[$server] = $server; + } + } + $smarty->assign("gotoNtpServers",$tmp); + + /* Check if workstation is online */ + if (gosaSupportDaemon::ping($this->netConfigDNS->macAddress)){ + $smarty->assign("actions", array("halt" => _("Switch off"), "reboot" => _("Reboot"), + "update" => _("Software update"), + "reinstall" => _("Reinstall"), + "rescan" => _("Rescan hardware"), + #"memcheck" => _("Memory test"), + "localboot" => _("Force localboot"), + #"sysinfo" => _("System analysis") + )); + } else { + $smarty->assign("actions", array("wakeup" => _("Wake up"), + "reinstall" => _("Reinstall"), + "update" => _("Software update"), + #"memcheck" => _("Memory test"), + "localboot" => _("Force localboot"), + #"sysinfo" => _("System analysis") + )); + } + /* Arrays */ + $smarty->assign("modes", $this->modes); + $smarty->assign("nfsservers", $this->config->data['SERVERS']['NFS']); + $smarty->assign("syslogservers", $this->gotoSyslogServers); + $smarty->assign("fai_activated",$this->fai_activated); + + $ntpser = array(); + foreach($this->gotoNtpServers as $server){ + if(!in_array($server,$this->gotoNtpServer)){ + $ntpser[$server] = $server; + } + } + $smarty->assign("gotoNtpServers", $ntpser); + + /* Variables */ + foreach(array("base", "gotoMode", "gotoSyslogServer", "gotoNtpServer") as $val){ + $smarty->assign($val."_select", $this->$val); + } + + /* tell smarty the inherit checkbox state */ + $smarty->assign("inheritTimeServer",$this->inheritTimeServer); + $smarty->assign("member_of_ogroup",$this->member_of_ogroup); + + $str = $this->netConfigDNS->execute(); + if(is_object($this->netConfigDNS->dialog)){ + return($str); + } + $smarty->assign("netconfig", $str); + + /* Display kerberos host key options */ + $smarty->assign("host_key",""); + if(is_object($this->kerberos_key_service)){ + $smarty->assign("host_key",$this->kerberos_key_service->execute_by_prefix("host/")); + } + + /* Show main page */ + $smarty->assign("currently_installing", $this->currently_installing); + return($smarty->fetch (get_template_path('workstation.tpl', TRUE, dirname(__FILE__)))); + } + + function remove_from_parent() + { + if($this->acl_is_removeable()){ + + $this->netConfigDNS->remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + $ldap->rmdir($this->dn); + new log("remove","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + + /* Remove kerberos key dependencies too */ + if(is_object($this->kerberos_key_service)){ + $this->kerberos_key_service->remove_from_parent_by_prefix("host/"); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove", array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } + + /* Remove all accessTo/trust dependencies */ + update_accessTo($this->cn,""); + } + + /* Clean queue form entries with this mac + */ + if(class_available("gosaSupportDaemon") && tests::is_mac($this->netConfigDNS->orig_macAddress)){ + $q = new gosaSupportDaemon(); + $q->clean_queue_from_mac($this->netConfigDNS->orig_macAddress); + } + + if(isset($_POST["inheritAll"])){ + $this->set_everything_to_inherited(); + } + } + + + /* Save data to object */ + function save_object() + { + + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + /* Save base, since this is no LDAP attribute */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + + $this->netConfigDNS->save_object(); + + /* Set inherit mode */ + if((isset($_POST['workgeneric_posted'])) && ($this->acl_is_writeable("gotoNtpServer"))){ + if(isset($_POST["inheritTimeServer"]) && $this->member_of_ogroup){ + $this->inheritTimeServer = true; + }else{ + $this->inheritTimeServer = false; + } + } + + if(isset($_POST["inheritAll"])){ + $this->set_everything_to_inherited(); + } + + /* Hanle kerberos host key plugin */ + if(is_object($this->kerberos_key_service)){ + $this->kerberos_key_service->save_object_by_prefix("host/"); + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Skip IP & Mac checks if this is a template */ + if($this->cn != "wdefault"){ + $message= array_merge($message, $this->netConfigDNS->check()); + } + + $this->dn= "cn=".$this->cn.",".get_ou('workstationRDN').$this->base; + + if ($this->cn == ""){ + $message[]= msgPool::required(_("Name")); + } + + /* Check if given name is a valid host/dns name */ + if(!tests::is_dns_name($this->cn)){ + $message[] = msgPool::invalid(_("Name")); + } + + if ($this->orig_dn != $this->dn){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->base); + + if($this->cn == "wdefault"){ + $ldap->cat($this->dn); + }else{ + $ldap->search ("(&(cn=".$this->cn.")(objectClass=gotoWorkstation))", array("cn")); + } + if ($ldap->count() != 0){ + while ($attrs= $ldap->fetch()){ + if (preg_match("/cn=dhcp,/",$attrs['dn']) || preg_match ("/,".get_ou('systemIncomingRDN')."/", $ldap->getDN())){ + continue; + } else { + if ($attrs['dn'] != $this->orig_dn){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + } + } + + /* Check for valid ntpServer selection */ + if((!$this->inheritTimeServer) && (!count($this->gotoNtpServer))){ + $message[]= msgPool::required(_("NTP server")); + } + + /* Only systems with a valid ldap handle can be activated + */ + if($this->gotoMode == "active" && $this->initial_gotoMode != "active"){ + + if(isset($this->parent->by_object['workstartup']) && + !count($this->parent->by_object['workstartup']->gotoLdapServers) && + !$this->parent->by_object['workstartup']->gotoLdap_inherit){ + + $message[] = _("A valid LDAP server assignement is missing!"); + } + }else{ + /* Warn the user, that this host is currently installing */ + if($this->currently_installing && !$this->currently_installing_warned && + !preg_match("/".preg_quote(get_ou("systemIncomingRDN"), '/')."/",$this->orig_dn)){ + + /* Force aborting without message dialog */ + $message[] = ""; + $this->currently_installing_warned = TRUE; + msg_dialog::display(_("Software deployment"), + _("This host is currently installing. If you want to save it, press 'OK'."), + CONFIRM_DIALOG); + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* Detect mode changes */ + $activate= (isset($this->saved_attributes['gotoMode']) && + $this->gotoMode != $this->saved_attributes['gotoMode'] && + $this->gotoMode == "active" && + tests::is_ip($this->netConfigDNS->ipHostNumber)) || $this->auto_activate; + plugin::save(); + + /* Strip out 'default' values */ + foreach (array("gotoSyslogServer") as $val){ + + if (isset($this->attrs[$val]) && $this->attrs[$val] == "default"){ + $this->attrs[$val]= array(); + } + } + + /* Add missing arrays */ + foreach (array("ghScsiDev", "ghIdeDev", "ghNetNic") as $val){ + if (isset ($this->$val) && count ($this->$val) != 0){ + $this->attrs["$val"]= $this->$val; + } + } + + /* Remove all empty values */ + if ($this->orig_dn == 'new'){ + $attrs= array(); + foreach ($this->attrs as $key => $val){ + if (is_array($val) && count($val) == 0){ + continue; + } + $attrs[$key]= $val; + } + $this->attrs= $attrs; + } + + /* Update ntp server settings */ + if($this->inheritTimeServer){ + if($this->is_new){ + if(isset($this->attrs['gotoNtpServer'])){ + unset($this->attrs['gotoNtpServer']); + } + }else{ + $this->attrs['gotoNtpServer'] = array(); + } + }else{ + /* Set ntpServers */ + $this->attrs['gotoNtpServer'] = array(); + foreach($this->gotoNtpServer as $server){ + $this->attrs['gotoNtpServer'][] = $server; + } + } + + /* cn=default and macAddress=- indicates that this is a template */ + if($this->cn == "wdefault"){ + $this->netConfigDNS->macAddress = "-"; + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + if ($this->orig_dn == 'new'){ + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + new log("create","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + $this->netConfigDNS->cn = $this->cn; + $this->netConfigDNS->save(); + + $this->handle_post_events("add",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + } else { + if ($this->orig_dn != $this->dn){ + + /* Remove all accessTo/trust dependencies */ + update_accessTo($this->orig_cn,$this->cn); + } + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + new log("modify","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + $this->netConfigDNS->cn = $this->cn; + $this->netConfigDNS->save(); + + $this->handle_post_events("modify",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + } + + if ($activate && class_available("DaemonEvent")){ + + /* Send installation activation + */ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + $o_queue = new gosaSupportDaemon(); + if(isset($events['TRIGGERED']['DaemonEvent_installation_activation'])){ + $evt = $events['TRIGGERED']['DaemonEvent_installation_activation']; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $tmp->add_targets(array($this->netConfigDNS->macAddress)); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + } + + + /* Display generic part for server copy & paste */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn" ,$this->cn); + $smarty->assign("object","workstation"); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + if(isset($source['macAddress'][0])){ + $this->netConfigDNS->macAddress = $source['macAddress'][0]; + } + if(isset($source['ipHostNumber'][0])){ + $this->netConfigDNS->ipHostNumber = $source['ipHostNumber'][0]; + } + + /* Create used ntp server array */ + $this->gotoNtpServer= array(); + if(isset($source['gotoNtpServer'])){ + $this->inheritTimeServer = false; + unset($source['gotoNtpServer']['count']); + foreach($source['gotoNtpServer'] as $server){ + $this->gotoNtpServer[$server] = $server; + } + } + + /* Set inherit checkbox state */ + if((in_array("default",$this->gotoNtpServer)) || (count($this->gotoNtpServer)==0)){ + $this->inheritTimeServer = true; + $this->gotoNtpServer=array(); + } + } + + + /* Return plugin informations for acl handling + #FIXME FAIscript seams to ununsed within this class... */ + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Workstation generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("workstation" => array("description" => _("Workstation"), + "objectClass" => "gotoWorkstation")), + "plProvidedAcls"=> array( + "cn" => _("Workstation name"), + "description" => _("Description") , + "l" => _("Location") , + "base" => _("Base") , + "gotoMode" => _("Goto mode"), + "gotoSyslogServer" => _("Syslog server"), + "gotoNtpServer" => _("Ntp server"), + "userPassword" => _("Root password"), + "createFAICD" => _("Create FAI CD"), + "FAIstate" => _("Action flag")) + )); + } + + function set_everything_to_inherited() + { + $this->gotoSyslogServer = "default"; + $this->inheritTimeServer = TRUE; + + /* Set workstation service attributes to inherited */ + if($this->member_of_ogroup && isset($this->parent->by_object['workservice'])){ + foreach(array("gotoXKbLayout","gotoXKbModel","gotoXKbVariant", + "gotoXResolution","gotoXColordepth","gotoXMouseType","gotoXMouseport") as $name){ + if($this->parent->by_object['workservice']->acl_is_writeable($name)){ + $this->parent->by_object['workservice']->$name = "default"; + } + } + } + + /* Set workstation startup attributes to inherited */ + if($this->member_of_ogroup && isset($this->parent->by_object['workstartup'])){ + $obj = $this->parent->by_object['workstartup']; + if($obj->acl_is_writeable("gotoBootKernel")){ + $this->parent->by_object['workstartup']->gotoBootKernel = "default-inherited"; + } + if($obj->acl_is_writeable("gotoLdapServer")){ + $this->parent->by_object['workstartup']->gotoLdapServer = "default-inherited"; + $this->parent->by_object['workstartup']->gotoLdap_inherit = TRUE; + $this->parent->by_object['workstartup']->gotoLdapServers = array(); + } + if($obj->acl_is_writeable("FAIdebianMirror")){ + $this->parent->by_object['workstartup']->FAIdebianMirror= "inherited"; + } + } + } +} + // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc new file mode 100644 index 000000000..f0fcff4e4 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc @@ -0,0 +1,575 @@ +XResolutions= array( + "640x480" => "640x480", + "800x600" => "800x600", + "1024x768" => "1024x768", + "1152x864" => "1152x864", + "1280x1024" => "1280x1024", + "1400x1050" => "1400x1050", + "1600x1200" => "1600x1200"); + + if($this->config->get_cfg_value("resolutions") != ""){ + $file = $this->config->get_cfg_value("resolutions"); + + if(is_readable($file)){ + $str = file_get_contents($file); + $lines = split("\n",$str); + foreach($lines as $line){ + $line = trim($line); + if(!empty($line)){ + $this->XResolutions[$line]=$line; + } + } + //natcasesort($this->gotoXResolutions); + }else{ + msg_dialog::display(_("Configuration error"), msgPool::cannotReadFile($file), WARNING_DIALOG); + } + } + + /* Get list of available xdrivers */ + $this->XDrivers = $this->getListOfXDrivers(); + + array_unshift($this->XDrivers, "["._("unknown")."]"); + + $this->XColordepths= array( + "8" => "8 " ._("bit"), + "15" => "15 "._("bit"), + "16" => "16 "._("bit"), + "24" => "24 "._("bit")); + + foreach(array ("btc9000", "chicony", "compaq", "dell", "dell101", "everex", + "flexpro", "geniuscomfy", "hp", "itouch", "jp106", "logicordless", + "logiinetnav", "logiinternet", "macintosh", "microsoft", + "microsoftpro", "omnikey101", "pc101", "pc102", "pc104", + "pc105", "rapidaccess", "rapidaccess2", "winbook") as $type){ + $this->XKbModels[$type] = $type; + } + + $this->MouseTypes= array("ImPS/2" => "ImPS/2", "PS/2" => "PS/2", "Microsoft" => "Microsoft", + "Logitech" => "Logitech","explorerps/2"=>"explorerps/2",); + + $this->MousePorts= array("/dev/ttyS0" =>"/dev/ttyS0", + "/dev/ttyS1" => "/dev/ttyS1", "/dev/psaux" =>"/dev/psaux", + "/dev/input/mice" => "/dev/input/mice"); + + /* Additional values will be extracted from CONFIG_DIR./keyboardLayouts */ + $this->XKbLayouts = array("de"=> "de","en" =>"en", "es" => "es", "us" =>"us", "fr" => "fr"); + $this->XKbVariants= array ("nodeadkeys"=>"nodeadkeys", "basic"=>"basic"); + + /* try to read additional keyboard layouts + */ + if(file_exists(CONFIG_DIR."/keyboardLayouts")){ + if(is_readable(CONFIG_DIR."/keyboardLayouts")){ + $str = file_get_contents(CONFIG_DIR."/keyboardLayouts"); + $tmp = split("\n",$str); + foreach($tmp as $entry){ + if((!empty($entry)) && (!preg_match("/^#/",$entry))){ + $entry = trim($entry); + $tmp2 = split ("\:",$entry); + $la = trim($tmp2[0]); // What would be saved to ldap + $da = trim($tmp2[1]); // This wis displayed in the listbox + $this->XKbLayouts [ $la] = $da; + } + } + } + } + + $this->orig_dn= $this->dn; + + /* Load phone hardware list + */ + $tmp = get_sub_list("(objectClass=goFonHardware)","",array(get_ou("phoneRDN")), + $this->config->current['BASE'],array("cn","description"), GL_NO_ACL_CHECK); + foreach($tmp as $attrs){ + $cn= $attrs['cn'][0]; + $description= ""; + if (isset($attrs['description'])){ + $description= " - ".$attrs['description'][0]; + } + $this->hardware_list[$cn]= "$cn$description"; + } + $this->hardware_list["automatic"]= _("automatic"); + ksort($this->hardware_list); + + /* These departments may contain objects that have + goFonHardware set. + */ + $deps_a = array( + get_people_ou(), + get_ou("ogroupRDN"), + get_ou("serverRDN"), + get_ou("terminalRDN"), + get_ou("workstationRDN"), + get_ou("printerRDN"), + get_ou("componentRDN"), + get_ou("phoneRDN")); + + $tmp = get_sub_list("(goFonHardware=*)","",$deps_a,$this->config->current['BASE'], + array('cn','dn','goFonHardware'),GL_NO_ACL_CHECK); + foreach($tmp as $attrs){ + $cn = $attrs['goFonHardware'][0]; + if(isset($this->hardware_list[$cn])){ + $this->used_hardware[$cn]= $cn; + } + } + + if(preg_match("/\+/",$this->gotoXHsync)){ + $this->AutoSync = true; + $this->gotoXHsync = preg_replace("/\+/","-",$this->gotoXHsync); + $this->gotoXVsync = preg_replace("/\+/","-",$this->gotoXVsync); + } + + /* Load hardware list */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=gotoWorkstationTemplate)(member=".LDAP::prepare4filter($this->dn)."))"); + if ($ldap->count() == 1){ + $map= array("gotoXResolution", "gotoXColordepth", "gotoXKbModel", "gotoXKbLayout", + "gotoXKbVariant", "gotoXMouseType", "gotoXMouseport"); + $attrs= $ldap->fetch(); + + foreach ($map as $name){ + if (!isset($attrs[$name][0])){ + continue; + } + + switch ($name){ + case 'gotoXResolution': + $this->XResolutions= array('default' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->XResolutions; + break; + case 'gotoXColordepth': + $this->XColordepths= array('default' => _("inherited").' ['.$attrs[$name][0].' '._('Bit').']') + $this->XColordepths; + break; + case 'gotoXKbModel': + $this->XKbModels= array('default' => _("inherited").' ['.$attrs[$name][0].']') + $this->XKbModels; + break; + case 'gotoXKbLayout': + $this->XKbLayouts= array('default' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->XKbLayouts; + break; + case 'gotoXKbVariant': + $this->XKbVariants= array('default' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->XKbVariants; + break; + case 'gotoXMouseType': + $this->MouseTypes= array('AUTO' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->MouseTypes; + break; + case 'gotoXMouseport': + $this->MousePorts= array('AUTO' => _("inherited").' ['.$attrs[$name][0].']' ) + $this->MousePorts; + break; + } + + } + + } + + /* Workaround to fill in inherited values if we've specified an objectclass */ + $SelectedSystemType = session::get("SelectedSystemType"); + if (isset($SelectedSystemType['ogroup']) && $SelectedSystemType['ogroup'] != 'none'){ + $this->XResolutions= array('default' => _("inherited")); + $this->XColordepths= array('default' => _("inherited")); + $this->XKbModels= array('default' => _("inherited")); + $this->XKbLayouts= array('default' => _("inherited")); + $this->XKbVariants= array('default' => _("inherited")); + $this->MouseTypes= array('AUTO' => _("inherited")); + $this->MousePorts= array('AUTO' => _("inherited")); + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","workstation/".get_class($this),$this->dn); + } + + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Show main page */ + $smarty= get_smarty(); + + /* Assign ACLs */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + /* Arrays */ + foreach(array("XDrivers", "XResolutions", "XColordepths", + "XKbModels", "XKbVariants", + "MouseTypes", "MousePorts") as $val){ + $smarty->assign("$val", $this->$val); + } + $smarty->assign("XKbLayouts" ,$this->XKbLayouts); + $smarty->assign("XKbLayoutKeys" ,array_flip($this->XKbLayouts)); + + $smarty->assign("xdmcpservers", $this->config->data['SERVERS']['TERMINAL']); + $smarty->assign("nfsservers", $this->config->data['SERVERS']['NFS']); + $smarty->assign("nfsservers", $this->config->data['SERVERS']['NFS']); + + /* Variables - select */ + foreach(array( + "gotoXDriver", "gotoXResolution", "gotoXColordepth", + "gotoXKbModel", "gotoXKbLayout","gotoScannerEnable", + "gotoXKbVariant", "gotoXMouseType", "gotoXMouseport") as $val){ + + $smarty->assign($val."_select", $this->$val); + } + + /* Variables */ + foreach(array("gotoXHsync", "gotoXVsync") as $val){ + $smarty->assign($val, $this->$val); + } + $smarty->assign("staticAddress", ""); + + /* Checkboxes */ + foreach(array("gotoScannerEnable") as $val){ + if ($this->$val == TRUE) { + $smarty->assign("$val", "checked"); + } else { + $smarty->assign("$val", ""); + } + } + + /* Phone stuff */ + $smarty->assign ("goFonHardware", $this->goFonHardware); + + $perms = ""; + if(!$this->acl_is_writeable("goFonHardware")){ + $perms = " disabled "; + } + + $hl= "\n"; + $smarty->assign ("hardware_list", $hl); + $smarty->assign ("gotoXMonitor", $this->gotoXMonitor); + + if($this->AutoSync){ + $smarty->assign("AutoSyncCHK"," checked "); + $smarty->assign("hiddenState"," disabled "); + }else{ + $smarty->assign("AutoSyncCHK"," "); + $smarty->assign("hiddenState",""); + } + + /* Show main page */ + return($smarty->fetch (get_template_path('workstationService.tpl',TRUE,dirname(__FILE__)))); + } + + function remove_from_parent() + { + $this->handle_post_events("remove"); + new log("remove","workstation/".get_class($this),$this->dn); + } + + /* Save data to object */ + function save_object() + { + plugin::save_object(); + + if((isset($_POST['workservicePosted'])) && $this->acl_is_writeable("AutoSync")) { + if(isset($_POST['AutoSync'])){ + $this->AutoSync = true; + }else{ + $this->AutoSync = false; + } + } + } + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Default entries can use blank hsync/vsync entries */ + if ($this->dn != "" && $this->cn != "default" && $this->cn != "wdefault"){ + + /* But only if no auto sync is enabled... */ + if (!$this->AutoSync){ + + /* Check vsync for correct usage */ + $val= preg_replace ("/\s/", "", $this->gotoXVsync); + + if($this->acl_is_writeable("gotoXVsync")){ + if(empty($val)){ + $message[]= msgPool::required(_("VSync")); + }elseif (!preg_match ("/^\d+(\.\d+)?([-]\d+(\.\d+)?)?$/", $val)){ + $message[]= msgPool::invalid(_("VSync")); + } else{ + list($v1,$v2)= preg_split ("/[-+]/", $val); + if ($v2 != ""){ + if ($v1 > $v2){ + $message[]= msgPool::invalid(_("VSync")); + } + } + } + } + + /* Check hsync for correct usage */ + $val= preg_replace ("/\s/", "", $this->gotoXHsync); + if($this->acl_is_writeable("gotoXHsync")){ + if(empty($val)){ + $message[]= msgPool::required(_("HSync")); + }elseif (!preg_match ("/^\d+(\.\d+)?([-]\d+(\.\d+)?)?$/", $val)){ + $message[]= msgPool::invalid(_("HSync")); + } else{ + list($v1,$v2)= preg_split ("/[-+]/", $val); + if ($v2 != ""){ + if ($v1 > $v2){ + $message[]= msgPool::invalid(_("HSync")); + } + } + } + } + } + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* remove objectclass GOhard if this is an ogroup tab */ + if(isset($this->parent->by_object['ogroup'])){ + $this->objectclasses = array(); + } + + plugin::save(); + + /* Strip out 'default' values */ + foreach(array( + "gotoXDriver", "gotoXResolution", "gotoXColordepth", + "gotoXKbModel", "gotoXKbLayout", + "gotoXKbVariant", "gotoXMouseType", "gotoXMouseport") as $val){ + + if ($this->attrs[$val] == "default"){ + $this->attrs[$val]= array(); + } + } + + if($this->AutoSync){ + $this->attrs['gotoXHsync'] = "30+55"; + $this->attrs['gotoXVsync'] = "50+70"; + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + + + $ldap->modify ($this->attrs); + new log("modify","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + $this->handle_post_events("modify"); + + /* Send goto reload event to gosaSupportDaemon */ + if(count($this->attrs)){ + $this->send_goto_reload(); + } + + } + + + function getListOfXDrivers() + { + /* Generate a list of xdrivers from CONFIG_DIR./xdrivers */ + $drivers = array(); + if (file_exists(CONFIG_DIR.'/xdrivers')){ + $xdrivers = file (CONFIG_DIR.'/xdrivers'); + foreach ($xdrivers as $line){ + if (!preg_match ("/^#/", $line)){ + $drivers[]= trim($line); + } + } + } else { + $drivers = array("ati", "atimisc", "chips", "cirrus", "cyrix", "fbdev", "fglrx", + "i128", "i740", "i810", "intel", "imstt", "mga", "neomagic", "newport", "nsc", "nv", "nvidia", + "r128", "radeon", "rendition", "s3", "s3virge", "savage", "siliconmotion", + "sis", "tdfx", "tga", "trident", "tseng", "vesa", "vga", "vmware"); + } + return($drivers); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Service"), + "plDescription" => _("Workstation service"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 10, + "plSection" => array("administration"), + "plCategory" => array("workstation","ogroups"), + + "plProvidedAcls"=> array( + "gotoXMonitor" => _("Monitor"), + "gotoXDriver" => _("Gfx driver"), + "gotoXResolution" => _("Gfx resolution"), + "gotoXColordepth" => _("Gfx color depth"), + "gotoXHsync" => _("HSync"), + "gotoXVsync" => _("VSync"), + "AutoSync" => _("Use DDC"), + "gotoScannerEnable" => _("Scanner enabled"), + "gotoXKbModel" => _("Keyboard model"), + "gotoXKbLayout" => _("Keyboard layout"), + "gotoXKbVariant" => _("Keyboard variant"), + "gotoXMouseType" => _("Mouse type"), + "gotoXMouseport" => _("Mouse port"), + "goFonHardware" => _("Telephone hardware")) + )); + } + + + /*! \brief Send goto_reload event to support daemon + */ + function send_goto_reload() + { + if(count($this->attrs) && class_available("DaemonEvent")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + $o_queue = new gosaSupportDaemon(); + if(isset($events['TRIGGERED']['DaemonEvent_goto_reload'])){ + $evt = $events['TRIGGERED']['DaemonEvent_goto_reload']; + $macs = array(); + + /* Get list of macAddresses + */ + if(isset($this->parent->by_object['ogroup'])){ + + /* If we are an object group, add all member macs + */ + $p = $this->parent->by_object['ogroup']; + foreach($p->memberList as $dn => $obj){ + if(preg_match("/".preg_quote(get_ou("systemIncomingRDN"), '/')."/",$dn)) continue; + if(isset($p->objcache[$dn]['macAddress']) && !empty($p->objcache[$dn]['macAddress'])){ + $macs[] = $p->objcache[$dn]['macAddress']; + } + } + }elseif(isset($this->parent->by_object['workgeneric']->netConfigDNS->macAddress)){ + + /* We are a workstation. Add current mac. + */ + $mac = $this->parent->by_object['workgeneric']->netConfigDNS->macAddress; + if(!empty($mac) && !preg_match("/".preg_quote(get_ou("systemIncomingRDN"), '/')."/",$this->orig_dn)){ + $macs[] = $mac; + } + } + + /* Trigger event for all member objects + */ + if(count($macs)){ + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $target = $o_queue->get_host().":".$o_queue->get_port(); + $tmp->add_targets(array($target)); + $tmp->set_macs($macs); + if(!$o_queue->append($tmp,TRUE)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + if(preg_match("/\+/",$this->gotoXHsync)){ + $this->AutoSync = true; + $this->gotoXHsync = preg_replace("/\+/","-",$this->gotoXHsync); + $this->gotoXVsync = preg_replace("/\+/","-",$this->gotoXVsync); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc b/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc new file mode 100644 index 000000000..134ec2556 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc @@ -0,0 +1,1326 @@ +search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp) && class_available("faiManagement")){ + $this->fai_activated = TRUE; + }else{ + $this->attributes = array("gotoLdapServer", "gotoBootKernel", "gotoKernelParameters", "gotoShare"); + $this->objectclasses = array("GOhard"); + } + + plugin::plugin ($config, $dn, $parent); + + /* Check for si daemon */ + $this->si_active = $this->config->get_cfg_value("gosaSupportURI") != ""; + + /* Check object group membership */ + if(!isset($this->parent->by_object['ogroup'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + $ldap->search("(&(objectClass=gotoWorkstationTemplate)(member=".LDAP::prepare4filter($this->dn)."))",array("cn","dn")); + if($ldap->count()){ + $this->member_of_ogroup = TRUE; + $attrs = $ldap->fetch(); + $this->o_group_dn = $attrs['dn']; + } + } + + /* Creating a list of valid Mirrors + * none will not be saved to ldap. + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ui = get_userinfo(); + foreach($this->config->data['SERVERS']['LDAP'] as $dn => $data){ + if($ui->get_category_permissions($data['dn'],"server",TRUE)){ + for($i = 0; $i < $data['goLdapBase']['count']; $i ++){ + $name = $data["cn"][0].":".$data["goLdapBase"][$i]; + $this->gotoLdapServerList[]= $name; + } + } + } + + /* Get list of assigned ldap servers + */ + if(isset($this->attrs['gotoLdapServer'])){ + unset($this->attrs['gotoLdapServer']['count']); + sort($this->attrs['gotoLdapServer']); + foreach($this->attrs['gotoLdapServer'] as $value){ + $this->gotoLdapServers[] = preg_replace("/^[0-9]*:/","",$value); + } + } + natcasesort($this->gotoLdapServerList); + + if(!count($this->gotoLdapServers) && $this->member_of_ogroup){ + $this->gotoLdap_inherit = TRUE; + } + + /* FAI Initialization + Skip this if FAI is not activated + */ + if($this->fai_activated) { + + /* Parse used FAIclasses (stored as string). + * The single classes are seperated by ' '. + * There is also the release type given, after first + * occurrence of ':'. + */ + $this->FAIclass =array(); + if(isset($this->attrs['FAIclass'][0])){ + $tmp = split(" ",$this->attrs['FAIclass'][0]); + $tmp2 =array(); + + foreach($tmp as $class){ + if( ":" == $class[0] ) { + $this->FAIrelease = trim(substr($class, 1)); + }else{ + $tmp2[$class] = $class; + } + } + $this->FAIclass = $tmp2; + } + } + + /* Get arrays */ + foreach (array("gotoModules", "gotoAutoFs", "gotoFilesystem") as $val){ + if (isset($this->attrs["$val"]["count"])){ + for ($i= 0; $i<$this->attrs["count"]; $i++){ + if (isset($this->attrs["$val"][$i])){ + array_push($this->$val, $this->attrs["$val"][$i]); + } + } + } + sort ($this->$val); + $this->$val= array_unique($this->$val); + } + + /* Prepare Shares */ + if((isset($this->attrs['gotoShare']))&&(is_array($this->attrs['gotoShare']))){ + unset($this->attrs['gotoShare']['count']); + foreach($this->attrs['gotoShare'] as $share){ + $tmp = $tmp2 = array(); + $tmp = split("\|",$share); + $tmp2['server'] =$tmp[0]; + $tmp2['name'] =$tmp[1]; + $tmp2['mountPoint'] =$tmp[2]; + $this->gotoShares[$tmp[1]."|".$tmp[0]]=$tmp2; + } + } + + $this->gotoShareSelections= $config->getShareList(true); + $this->gotoAvailableShares= $config->getShareList(false); + $tmp2 = array(); + + + $this->orig_dn= $this->dn; + + /* Handle inheritance value "default" */ + if ($this->member_of_ogroup){ + $this->gotoBootKernels= array("default-inherited" => '['._("inherited").']'); + } + + /* If we are member in an object group, + * we have to handle inherited values. + * So you can see what is inherited. + */ + if ($this->member_of_ogroup){ + + if(count($this->FAIclass)==0 && $this->FAIrelease == ""){ + $this->FAIdebianMirror = "inherited"; + } + + if($this->fai_activated){ + $map= array("gotoBootKernel","FAIclass","FAIdebianMirror"); + }else{ + $map= array("gotoBootKernel"); + } + + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->o_group_dn); + $attrs= $ldap->fetch(); + + foreach ($map as $name){ + if (!isset($attrs[$name][0])){ + continue; + } + + switch ($name){ + case 'gotoBootKernel': + $this->gotoBootKernels['default-inherited']= _("inherited").' ['.$attrs[$name][0].']' ; + break; + + case 'FAIclass': + $str = split(":",$attrs[$name][0]); + $this->InheritedFAIclass = split("\ ",trim($str[0])); + $this->InheritedFAIrelease = trim($str[1]); + break; + + case 'FAIdebianMirror': + $this->InheritedFAIdebianMirror = $attrs[$name][0]; + break; + } + } + } + + $this->update_fai_cache(); + + if($this->fai_activated && !$this->si_fai_action_failed && $this->si_active){ + + /* Check if the current mirror is available + */ + if(!isset($this->cache['SERVERS'][$this->FAIdebianMirror])){ + if(count($this->FAIclass)){ + msg_dialog::display(_("Error"), sprintf(_("FAI mirror '%s' is not available - setting to mirror 'auto'!"), $this->FAIdebianMirror), ERROR_DIALOG); + } + $this->FAIdebianMirror = "auto"; + $this->FAIrelease = key($this->cache['SERVERS'][$this->FAIdebianMirror]); + $this->cache['CLASSES'] = array(); + $this->update_fai_cache(); + } + + /* Check if the current mirror is available + */ + if(!isset($this->cache['SERVERS'][$this->FAIdebianMirror][$this->FAIrelease])){ + $new_release = key($this->cache['SERVERS'][$this->FAIdebianMirror]); + if(count($this->FAIclass)){ + msg_dialog::display(_("Error"), sprintf(_("FAI release '%s' is not available on mirror '%s' - setting to release '%s'!"), $this->FAIrelease, $this->FAIdebianMirror,$new_release), ERROR_DIALOG); + } + $this->FAIrelease = $new_release; + $this->cache['CLASSES'] = array(); + $this->update_fai_cache(); + } + } + } + + + function check() + { + $messages = array(); + + /* Call common method to give check the hook */ + $messages= plugin::check(); + + /* If there are packages selected, but no mirror show error */ + if(($this->FAIdebianMirror == "none")&&(count($this->FAIclass)>0)){ + $messages[]=_("Please select a 'FAI server' or remove the 'FAI classes'."); + } + + return($messages); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","workstation/".get_class($this),$this->dn); + } + + /* Do we represent a valid terminal? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("workstation")).""; + return ($display); + } + + /* Add module */ + if (isset ($_POST['add_module'])){ + if ($_POST['module'] != "" && $this->acl_is_writeable("gotoModules")){ + $this->add_list ($this->gotoModules, $_POST['module']); + } + } + + /* Delete module */ + if (isset ($_POST['delete_module'])){ + if (count($_POST['modules_list']) && $this->acl_is_writeable("gotoModules")){ + $this->del_list ($this->gotoModules, $_POST['modules_list']); + } + } + + /* FAI class management */ + if($this->fai_activated){ + if(((isset($_POST['AddClass']))&&(isset($_POST['FAIclassesSel']))) && ($this->acl_is_writeable("FAIclass"))){ + $found = 0 ; + + /* If this new class/profile will attach a second partition table + * to our list of classes, abort and show a message. + */ + foreach($this->FAIclass as $name){ + if(isset($this->FAIclassInfo[$name])){ + foreach($this->FAIclassInfo[$name] as $atr){ + if(isset($atr['obj'])){ + if($atr['obj'] == "FAIpartitionTable"){ + $found ++ ; + } + } + } + } + } + + if((isset($this->FAIclassInfo[$_POST['FAIclassesSel']]['FAIpartitionTable']))&&($found>0)){ + msg_dialog::display(_("Error"), _("There is already a profile containing a partition table in your configuration!") , ERROR_DIALOG); + }else{ + $this->FAIclass[$_POST['FAIclassesSel']]=$_POST['FAIclassesSel']; + } + } + + $sort = false; + + /* Move one used class class one position up or down */ + if($this->acl_is_writeable("FAIclass")){ + foreach($_POST as $name => $val){ + + $sort_type = false; + if((preg_match("/sort_up/",$name))&&(!$sort)){ + $sort_type = "sort_up_"; + } + if((preg_match("/sort_down/",$name))&&(!$sort)){ + $sort_type = "sort_down_"; + } + + if(($sort_type)&&(!$sort)){ + $value = base64_decode(preg_replace("/_.*$/i","",preg_replace("/".$sort_type."/i","",$name))); + $sort = true; + + $last = -1; + $change_down = -1; + + /* Create array with numeric index */ + $tmp = array(); + foreach($this->FAIclass as $class){ + $tmp [] = $class; + } + + /* Walk trough array */ + foreach($tmp as $key => $faiName){ + if($faiName == $value){ + if($sort_type == "sort_up_"){ + if($last != -1){ + $change_down= $last; + } + }else{ + if(isset($tmp[$key+1])){ + $change_down = $key; + } + } + } + $last = $key; + } + + $tmp2 = array(); + $skip = false; + + foreach($tmp as $ky => $vl){ + + if($ky == $change_down){ + $skip = $vl; + }else{ + $tmp2[$vl] = $vl; + } + if(($skip != false)&&($ky != $change_down)){ + $tmp2[$skip] = $skip; + $skip =false; + } + } + $this->FAIclass = $tmp2; + } + + if(preg_match("/fai_remove/i",$name)){ + $value = base64_decode(preg_replace("/_.*$/i","",preg_replace("/fai_remove_/i","",$name))); + unset($this->FAIclass[$value]); + } + } + } + + /* Delete selected class from our list */ + if($this->acl_is_writeable("FAIclass")){ + if((isset($_POST['DelClass']))&&(isset($_POST['FAIclassSel']))){ + if(isset($this->FAIclass[$_POST['FAIclassSel']])){ + unset($this->FAIclass[$_POST['FAIclassSel']]); + } + } + } + }// END fai handling + + /* Show main page */ + $smarty= get_smarty(); + + /* Assign ACLs to smarty */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $smarty->assign("member_of_ogroup",$this->member_of_ogroup); + + /* In this section server shares will be defined + * A user can select one of the given shares and a mount point + * and attach this combination to his setup. + */ + $smarty->assign("gotoShareSelections", $this->gotoShareSelections); + $smarty->assign("gotoShareSelectionKeys", array_flip($this->gotoShareSelections)); + + /* if $_POST['gotoShareAdd'] is set, we will try to add a new entry + * This entry will be, a combination of mountPoint and sharedefinitions + */ + if((isset($_POST['gotoShareAdd'])) && isset($_POST['gotoShareSelection']) && ($this->acl_is_writeable("gotoShare"))) { + /* We assign a share to this user, if we don't know where to mount the share */ + if((!isset($_POST['gotoShareMountPoint']))||(empty($_POST['gotoShareMountPoint']))||(preg_match("/[\|]/i",$_POST['gotoShareMountPoint']))){ + msg_dialog::display(_("Error"), msgPool::required(_("Mount point")), ERROR_DIALOG); + }else{ + + if(isset($this->gotoAvailableShares[$_POST['gotoShareSelection']])){ + $a_share = $this->gotoAvailableShares[$_POST['gotoShareSelection']]; + $s_mount = $_POST['gotoShareMountPoint']; + /* Preparing the new assignment */ + $this->gotoShares[$a_share['name']."|".$a_share['server']]=$a_share; + $this->gotoShares[$a_share['name']."|".$a_share['server']]['mountPoint']=$s_mount; + } + } + } + + /* if the Post gotoShareDel is set, someone asked GOsa to delete the selected entry (if there is one selected) + * If there is no defined share selected, we will abort the deletion without any message + */ + if(($this->acl_is_writeable("gotoShare"))&& (isset($_POST['gotoShareDel']))&&(isset($_POST['gotoShare']))){ + unset($this->gotoShares[$_POST['gotoShare']]); + } + + $smarty->assign("gotoShares",$this->printOutAssignedShares()); + $smarty->assign("gotoSharesCount",count($this->printOutAssignedShares())); + $smarty->assign("gotoShareKeys",array_flip($this->printOutAssignedShares())); + $smarty->assign("gotoBootKernels",$this->gotoBootKernels); + + /* Create divSelectBox for ldap server selection + */ + $SelectBoxLdapServer = new divSelectBox("LdapServer"); + $SelectBoxLdapServer->SetHeight(130); + + /* Add new ldap server to the list */ + if($this->acl_is_writeable("gotoLdapServer") && + !$this->gotoLdap_inherit && + isset($_POST['add_ldap_server']) && + isset($_POST['ldap_server_to_add'])){ + if(isset($this->gotoLdapServerList[$_POST['ldap_server_to_add']])){ + $to_add = $this->gotoLdapServerList[$_POST['ldap_server_to_add']]; + if(!in_array($to_add,$this->gotoLdapServers)){ + $this->gotoLdapServers[] = $to_add; + } + } + } + + /* Move ldap servers up and down */ + if(!$this->gotoLdap_inherit && $this->acl_is_writeable("gotoLdapServer")){ + foreach($_POST as $name => $value){ + if(preg_match("/sort_ldap_up_/",$name)){ + $id = preg_replace("/^sort_ldap_up_([0-9]*)_(x|y)$/","\\1",$name); + $from = $id; + $to = $id -1; + $tmp = $this->array_switch_item($this->gotoLdapServers,$from,$to); + if($tmp){ + $this->gotoLdapServers = $tmp; + } + break; + } + if(preg_match("/sort_ldap_down_/",$name)){ + $id = preg_replace("/^sort_ldap_down_([0-9]*)_(x|y)$/","\\1",$name); + $from = $id; + $to = $id +1; + $tmp = $this->array_switch_item($this->gotoLdapServers,$from,$to); + if($tmp){ + $this->gotoLdapServers = $tmp; + } + break; + } + if(preg_match("/gotoLdapRemove_/",$name)){ + $id = preg_replace("/^gotoLdapRemove_([0-9]*)_(x|y)$/","\\1",$name); + $value = $this->gotoLdapServers[$id]; + $this->gotoLdapServers = array_remove_entries(array($value),$this->gotoLdapServers); + break; + } + } + } + + /* Add Entries */ + if($this->acl_is_readable("gotoLdapServer")){ + + foreach($this->gotoLdapServers as $key => $server){ + + /* Announce missing entries */ + if(!in_array($server,$this->gotoLdapServerList)){ + $server = $server." (missing)"; + } + + /* Convert old style entry */ + if (!preg_match('%:ldaps?://%', $server)){ + $server= "ldap://".preg_replace('/^([^:]+):/', '\1/', $server); + + /* Beautify new style entries */ + } else { + $server= preg_replace("/^[^:]+:/", "", $server); + } + + $SelectBoxLdapServer->AddEntry( + array(array("string" => $server), + array("string" => + " ". + " ". + "", + "attach" => "style='text-align:right;width:40px;border-right:0px;'"))); + } + } + + if($this->gotoLdap_inherit){ + $smarty->assign("gotoLdapServerACL_inherit", preg_replace("/w/","",$this->getacl("gotoLdapServer")));; + }else{ + $smarty->assign("gotoLdapServerACL_inherit", $this->getacl("gotoLdapServer")); + } + + $list = array(); + foreach($this->gotoLdapServerList as $key => $entry){ + if(!in_array($entry,$this->gotoLdapServers)){ + + /* Convert old style entry */ + if (!preg_match('%:ldap[s]*://%', $entry)){ + $entry= "ldap://".preg_replace('/^([^:]+):/', '\1/', $entry); + + /* Beautify new style entries */ + } else { + $entry= preg_replace("/^[^:]+:/", "", $entry); + } + + $list[$key] = $entry; + } + } + $smarty->assign("gotoLdapServers", $SelectBoxLdapServer->DrawList()); + $smarty->assign("gotoLdapServerList", $list); + $smarty->assign("gotoLdap_inherit", $this->gotoLdap_inherit); + $smarty->assign("JS", session::get('js')); + + foreach (array("gotoModules", "gotoAutoFs", "gotoFilesystem") as $val){ + $smarty->assign("$val", $this->$val); + } + + /* Values */ + foreach(array("gotoBootKernel","gotoShare","FAIclasses","FAIclass","FAIdebianMirror","FAIrelease") as $val){ + $smarty->assign($val, $this->$val); + } + + $smarty->assign("fai_activated",$this->fai_activated); + + /* Create FAI output */ + $this->update_fai_cache(); + $smarty->assign("si_fai_action_failed",$this->si_fai_action_failed); + $smarty->assign("si_active",$this->si_active); + + $div = new divSelectBox("WSFAIscriptClasses"); + $div -> SetHeight("110"); + + if(!$this->si_fai_action_failed && $this->si_active && $this->fai_activated){ + + $smarty->assign("FAIservers" , $this->cache['SERVERS']); + $smarty->assign("FAIdebianMirror",$this->FAIdebianMirror); + $smarty->assign("FAIrelease" , $this->FAIrelease); + $smarty->assign("FAIclasses" , $this->selectable_classes()); + + /* Get classes for release from cache. + * Or build cache + */ + if($this->FAIdebianMirror == "inherited"){ + $release = $this->InheritedFAIrelease; + }else{ + $release = $this->FAIrelease; + } + + $smarty->assign("gotoBootKernels",$this->cache['KERNELS'][$release]); + $smarty->assign("InheritedFAIrelease",$this->InheritedFAIrelease); + + $str_empty = "  \"\""; + if($this->acl_is_writeable("FAIclass")){ + $str_up = "  "; + $str_down = "  "; + $str_remove = "  "; + }else{ + $str_up=$str_down=$str_remove=$str_empty; + } + + /* Get classes */ + if($this->FAIdebianMirror == "inherited"){ + $tmp = $this->InheritedFAIclass; + }else{ + $tmp = $this->FAIclass; + } + + /* Get invalid classes */ + $invalid = $this->get_invalid_classes($tmp); + + /* Draw every single entry */ + $i = 1; + if($this->acl_is_readable("FAIclass")){ + foreach($tmp as $class){ + + /* Mark invalid classes. (Not in selected release) + */ + $marker = ""; + if(in_array_ics($class,$invalid)){ + $marker = " ("._("Not available in current setup").")"; + } + + /* Create up/down priority icons + * Skip this, if we have inherited the FAI classes. + */ + if($this->FAIdebianMirror == "inherited"){ + $str = ""; + }else{ + if($i==1){ + $str = $str_empty.$str_down.$str_remove; + }elseif($i == count($this->FAIclass)){ + $str = $str_up.$str_empty.$str_remove; + }else{ + $str = $str_up.$str_down.$str_remove; + } + } + $i ++ ; + + /* Get Description tag + * There may be several FAI objects with the same class name, + * use the description from FAIprofile, if possible. + */ + $desc = ""; + if(isset($this->cache['CLASSES'][$this->FAIrelease][$class])){ + foreach($this->cache['CLASSES'][$this->FAIrelease][$class] as $types ){ + if(isset($types['Desc'])){ + $desc= $types['Desc']; + if($types['Type'] == "FAIprofile"){ + break; + } + } + } + } + if(!empty($desc)){ + $desc = " [".trim($desc)."]"; + } + + $div->AddEntry(array( + array("string"=>$class.$desc.$marker), + array("string"=>preg_replace("/\%s/",base64_encode($class),$str),"attach"=>"style='width:50px;border-right:none;'") + )); + } + }// END FAI output generation + }// END FAI output generation + $smarty->assign("FAIScriptlist",$div->DrawList()); + + /* Radio button group */ + if (preg_match("/G/", $this->bootmode)) { + $smarty->assign("graphicalbootup", "checked"); + } else { + $smarty->assign("graphicalbootup", ""); + } + if (preg_match("/T/", $this->bootmode)) { + $smarty->assign("textbootup", "checked"); + } else { + $smarty->assign("textbootup", ""); + } + if (preg_match("/D/", $this->bootmode)) { + $smarty->assign("debugbootup", "checked"); + } else { + $smarty->assign("debugbootup", ""); + } + + /* Show main page */ + $smarty->assign("gotoKernelParameters",$this->gotoKernelParameters); + return($smarty->fetch (get_template_path('workstationStartup.tpl', TRUE,dirname(__FILE__)))); + } + + + function remove_from_parent() + { + $this->handle_post_events("remove"); + new log("remove","workstation/".get_class($this),$this->dn); + } + + + /* Save data to object */ + function save_object() + { + $old_mirror = $this->FAIdebianMirror; + plugin::save_object(); + + /* Update release */ + if($old_mirror != $this->FAIdebianMirror){ + if(!isset($this->cache['SERVERS'][$this->FAIdebianMirror][$this->FAIrelease])){ + $this->FAIrelease = key($this->cache['SERVERS'][$this->FAIdebianMirror]); + } + } + + if(isset($_POST['WorkstationStarttabPosted'])){ + if(isset($_POST['gotoLdap_inherit'])){ + $this->gotoLdap_inherit = TRUE; + }else{ + $this->gotoLdap_inherit = FALSE; + } + + /* Save group radio buttons */ + if ($this->acl_is_writeable("bootmode") && isset($_POST["bootmode"])){ + $this->bootmode= $_POST["bootmode"]; + } + } + } + + + /* Save to LDAP */ + function save() + { + + /* Depending on the baseobject (Ogroup / WS) we + * use another set of objectClasses + * In case of WS itself, we use "array("GOhard", "FAIobject");" + * if we are currently editing from ogroup menu we use (array("gotWorkstationTemplate","GOhard", "FAIobject")) + */ + if(isset($this->parent->by_object['ogroup'])){ + $this->objectclasses = array("gotoWorkstationTemplate"); + }elseif(isset($this->parent->by_object['workgeneric'])){ + $this->objectclasses = array("GOhard"); + }elseif(isset($this->parent->by_object['servgeneric'])){ + $this->objectclasses = array("GOhard","gotoWorkstationTemplate"); + }else{ + msg_dialog::display(_("Fatal error"), + "Object Type Configuration is unknown. Please contact the GOsa developers.", + FATAL_ERROR_DIALOG); + exit(); + } + + /* Append FAI class */ + if($this->fai_activated){ + $this->objectclasses[] = "FAIobject"; + } + + /* Find proper terminal path for tftp configuration + FIXME: This is suboptimal when the default has changed to + another location! */ + if (($this->gotoTerminalPath == "default")){ + $ldap= $this->config->get_ldap_link(); + + /* Strip relevant part from dn, keep trailing ',' */ + $tmp= preg_replace("/^cn=[^,]+,".get_ou('terminalRDN')."/i", "", $this->dn); + $tmp= preg_replace("/".$this->config->current['BASE']."$/i", "", $tmp); + + /* Walk from top to base and try to load default values for + 'gotoTerminalPath'. Abort when an entry is found. */ + while (TRUE){ + $tmp= preg_replace ("/^[^,]+,/", "", $tmp); + + $ldap->cat("cn=default,".get_ou('terminalRDN').$tmp. + $this->config->current['BASE'], array('gotoTerminalPath')); + $attrs= $ldap->fetch(); + if (isset($attrs['gotoTerminalPath'])){ + $this->gotoTerminalPath= $attrs['gotoTerminalPath'][0]; + break; + } + + /* Nothing left? */ + if ($tmp == ""){ + break; + } + } + } + + plugin::save(); + + unset( $this->attrs['FAIrelease'] ); + $str = ""; + + /* Skip FAI attribute handling if not necessary */ + if($this->fai_activated && !$this->si_fai_action_failed){ + if($this->FAIdebianMirror == "inherited"){ + $this->attrs['FAIclass'] = $this->attrs['FAIrelease'] = $this->attrs['FAIdebianMirror'] = array(); + }else{ + foreach($this->FAIclass as $class){ + $str .= $class." "; + } + $str = trim($str); + if(empty($this->attrs['FAIclass'])){ + $this->attrs['FAIclass'] = array(); + }else{ + $this->attrs['FAIclass']= $str." :".$this->FAIrelease; + } + } + } + + /* Add missing arrays */ + foreach (array("gotoFilesystem", "gotoAutoFs", "gotoModules") as $val){ + if (isset ($this->$val) && count ($this->$val) != 0){ + + $this->attrs["$val"]= array_unique($this->$val); + } + if(!isset($this->attrs["$val"])) $this->attrs["$val"]=array(); + } + + /* Prepare list of ldap servers */ + $this->attrs['gotoLdapServer'] = array(); + if(!$this->gotoLdap_inherit){ + $i = 0; + foreach($this->gotoLdapServers as $server){ + $i ++; + $this->attrs['gotoLdapServer'][] = $i.":".$server; + } + } + + if ($this->attrs['gotoBootKernel'] == "default-inherited"){ + $this->attrs['gotoBootKernel']= array(); + } + + /* if mirror == none stop saving this attribute */ + if($this->FAIdebianMirror == "none"){ + $this->FAIdebianMirror = ""; + } + + /* Get FAIstate from object, the generic tab could have changed it during execute */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + + + /* Skip FAI attribute handling if not necessary */ + if($this->fai_activated && !$this->si_fai_action_failed && $this->si_active){ + $ldap->cat($this->dn,array("FAIstate")); + $checkFAIstate = $ldap->fetch(); + + /* Remove FAI objects if no FAI class is selected */ + if((count($this->FAIclass)==0) && (!isset($checkFAIstate['FAIstate']))){ + $this->attrs['FAIclass'] = array(); + $this->attrs['FAIdebianMirror'] = array(); + } + }else{ + + /* Don't touch FAI objects if something went wrong with the si daemon. + */ + if(isset($this->attrs['FAIclass'])) unset($this->attrs['FAIclass']); + if(isset($this->attrs['FAIdebianMirror'])) unset($this->attrs['FAIdebianMirror']); + } + + /* prepare share settings */ + $tmp = array(); + foreach($this->gotoShares as $name => $settings){ + $tmp2= split("\|",$name); + $name = $tmp2[0]; + $tmp[] = $settings['server']."|".$name."|".$settings['mountPoint']; + } + $this->attrs['gotoShare']=$tmp; + $this->cleanup(); + $ldap->modify ($this->attrs); + new log("modify","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + $this->handle_post_events("modify"); + + /* Check if LDAP server has changed */ + if ((isset($this->attrs['gotoLdapServer']) && class_available("DaemonEvent")) || $this->gotoLdap_inherit){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + $o_queue = new gosaSupportDaemon(); + if(isset($events['TRIGGERED']['DaemonEvent_reload_ldap_config'])){ + $evt = $events['TRIGGERED']['DaemonEvent_reload_ldap_config']; + $macs = array(); + + /* Get list of macAddresses + */ + if(isset($this->parent->by_object['ogroup'])){ + + /* If we are an object group, add all member macs + */ + $p = $this->parent->by_object['ogroup']; + foreach($p->memberList as $dn => $obj){ + if(isset($p->objcache[$dn]['macAddress']) && !empty($p->objcache[$dn]['macAddress'])){ + $macs[] = $p->objcache[$dn]['macAddress']; + } + } + }elseif(isset($this->parent->by_object['workgeneric']->netConfigDNS->macAddress)){ + + /* We are a workstation. Add current mac. + */ + $mac = $this->parent->by_object['workgeneric']->netConfigDNS->macAddress; + if(!empty($mac)){ + $macs[] = $mac; + } + }elseif(isset($this->parent->by_object['servgeneric']->netConfigDNS->macAddress)){ + + /* We are a server. Add current mac. + */ + $mac = $this->parent->by_object['servgeneric']->netConfigDNS->macAddress; + if(!empty($mac)){ + $macs[] = $mac; + } + } + + /* Trigger event for all member objects + */ + foreach($macs as $mac){ + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $tmp->add_targets(array($mac)); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + } + } + + + /* Add value to array, check if unique */ + function add_list (&$array, $value) + { + if ($value != ""){ + $array[]= $value; + sort($array); + array_unique ($array); + } + } + + + /* Delete value to array, check if unique */ + function del_list (&$array, $list) + { + $tmp= array(); + foreach ($array as $mod){ + if (!in_array($mod, $list)){ + $tmp[]= $mod; + } + } + $array= $tmp; + } + + /* Generate ListBox frindly output for the defined shares + * Possibly Add or remove an attribute here, + */ + function printOutAssignedShares() + { + $a_return = array(); + if(is_array($this->gotoShares)){ + foreach($this->gotoShares as $share){ + $a_return[$share['name']."|".$share['server']]= $share['name']." [".$share['server']."]"; + } + } + return($a_return); + } + + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + $source_o = new workstartup ($this->config, $source['dn']); + foreach(array("FAIclass","gotoModules", "gotoAutoFs", "gotoFilesystem", + "gotoKernelParameters","gotoShares") as $attr){ + $this->$attr = $source_o->$attr; + } + } + + + function array_switch_item($ar,$from,$to) + { + if(!is_array($ar)){ + return(false); + } + if(!isset($ar[$from])){ + return(false); + } + if(!isset($ar[$to])){ + return(false); + } + + $tmp = $ar[$from]; + $ar[$from] = $ar[$to]; + $ar[$to] = $tmp; + return($ar); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Startup"), + "plDescription" => _("System startup"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 9, + "plSection" => array("administration"), + "plCategory" => array("workstation","server","ogroups"), + + "plProvidedAcls"=> array( + "gotoLdapServer" => _("Ldap server"), + "gotoBootKernel" => _("Boot kernel"), + "gotoKernelParameters" => _("Kernel parameter"), + + "gotoModules" => _("Kernel modules"), + "gotoShare" => _("Shares"), + + "FAIclass" => _("FAI classes"), + "FAIdebianMirror" => _("Debian mirror"), + "FAIrelease" => _("Debian release"), + + "FAIstatus" => _("FAI status flag")) // #FIXME is this acl realy necessary ? + )); + } + + + /* Updates release dns + * and reads all classes for the current release, + * if not already done ($this->cache). + */ + function update_fai_cache($first_call = FALSE) + { + $force = FALSE; + if(!$this->si_active) return; + $start = microtime(TRUE); + + if($this->si_fai_action_failed && !isset($_POST['fai_si_retry'])) return; + + $this->si_fai_action_failed = FALSE; + + /* Get the list of available servers and their releases. + */ + if($force || !isset($this->cache['SERVERS'])){ + + $o_queue = new gosaSupportDaemon(); + $tmp = $o_queue->FAI_get_server(); + if($o_queue->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + $this->si_fai_action_failed = TRUE; + $this->cache = array(); + return; + }else{ + + foreach($tmp as $entry){ + $rel = $entry['FAI_RELEASE']; + $this->cache['SERVERS']['auto'][$rel] = $rel; + $this->cache['SERVERS'][$entry['SERVER']][$rel] = $rel; + uksort($this->cache['SERVERS']['auto'], 'strnatcasecmp'); + uksort($this->cache['SERVERS'][$entry['SERVER']], 'strnatcasecmp'); + } + } + } + + /* Ensure that our selection is valid, else we get several PHP warnings + if there is no FAI configuration at all. + */ + if(!isset($this->cache['SERVERS'][$this->FAIdebianMirror])){ + $this->cache['SERVERS'][$this->FAIdebianMirror][''] =''; + } + + /* Build up arrays, without checks */ + if(!$first_call){ + + /* Check if the selected mirror is available */ + if(!isset($this->cache['SERVERS'][$this->FAIdebianMirror])){ + $this->FAIdebianMirror = "auto"; + $this->FAIrelease = key($this->cache['SERVERS'][$this->FAIdebianMirror]); + trigger_error("There was a problem with the selected FAIdebianMirror. This mirror ('".$this->FAIdebianMirror."') is not available"); + } + + /* Check if the selected release is available */ + if($this->FAIdebianMirror != "inherited" && !isset($this->cache['SERVERS'][$this->FAIdebianMirror][$this->FAIrelease])){ + + if($this->FAIrelease != ""){ + trigger_error("There was a problem with the selected FAIrelease. This release ('".$this->FAIrelease."') is not available"); + } + $this->FAIrelease = key($this->cache['SERVERS'][$this->FAIdebianMirror]); + } + } + + /* Get classes for release from cache. + * Or build cache + */ + if($this->FAIdebianMirror == "inherited"){ + $release = $this->InheritedFAIrelease; + }else{ + $release = $this->FAIrelease; + } + + if($force || !isset($this->cache['CLASSES'][$release]) && $release != ""){ + + /* Get the list of available servers and their releases. + */ + $o_queue = new gosaSupportDaemon(); + $tmp = $o_queue->FAI_get_classes($release); + $this->cache['CLASSES'][$release] = array(); + if($o_queue->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + $this->si_fai_action_failed = TRUE; + $this->cache=array(); + return; + }else{ + foreach($tmp as $entry){ + $class = $entry['CLASS']; + $this->cache['CLASSES'][$release][$class] = $this->analyse_fai_object($entry); + } + } + + /* Add object caught from external hook + */ + $lines= $this->GetHookElements(); + foreach ($lines as $hline){ + $entries= split(";", $hline); + $server = $entries['0']; + $url = $entries['1']; + if (!empty($url)){ + + /* Split releases */ + if (isset($entries[2])){ + $releases= split(",", $entries[2]); + + foreach ($releases as $release_data){ + $release_c = preg_replace('/:.*$/', '', $release_data); + $sections_c = split(':', preg_replace('/^[^:]+:([^|]+)|.*$/', '\1', $release_data)); + $classes_c = split('\|', preg_replace('/^[^|]+\|(.*)$/', '\1', $release_data)); + + if($release_c == $release){ + $this->cache['SERVERS'][$url][$release_c]=$release_c; + $this->cache['SERVERS']['auto'][$release_c]=$release_c; + foreach ($classes_c as $class){ + if ($class != ""){ + $this->cache['CLASSES'][$release_c][$class]= array(); + } + } + } + } + } + } + } + uksort($this->cache['SERVERS'], 'strnatcasecmp'); + + /* Only add inherit option, if we are part in an object group + */ + if($this->member_of_ogroup){ + $this->cache['SERVERS'] = array_merge(array('inherited' => array()),$this->cache['SERVERS']); + } + } + + /* Get list of available kernel for this release + */ + if(!isset($this->cache['KERNELS'])) $this->cache['KERNELS'] = array(); + + if($force || !isset($this->cache['KERNELS'][$release])){ + $o_queue = new gosaSupportDaemon(); + $tmp = $o_queue->FAI_get_kernels($release); + $this->cache['KERNELS'][$release] = array(); + foreach($this->gotoBootKernels as $name => $default){ + $this->cache['KERNELS'][$release][$name] = $default; + } + foreach($tmp as $kernel){ + if(empty($kernel)) continue; + $this->cache['KERNELS'][$release][$kernel]=$kernel; + } + ksort($this->cache['KERNELS'][$release]); + } + } + + + /* This function return an array containing all + * invalid classes for the selected server/release + */ + function get_invalid_classes($classes) + { + $this->update_fai_cache(); + if($this->FAIdebianMirror == "inherited" && isset($this->cache['CLASSES'][$this->InheritedFAIrelease])){ + $release_classes = $this->cache['CLASSES'][$this->InheritedFAIrelease]; + }elseif(isset($this->cache['CLASSES'][$this->FAIrelease])){ + $release_classes = $this->cache['CLASSES'][$this->FAIrelease]; + }else{ + $release_classes = array(); + } + + + /* Detect all classes that are not valid + * for the selected release + */ + $NA = array(); + foreach($classes as $class){ + if(!isset($release_classes[$class])){ + $NA[] = $class; + } + } + return($NA); + } + + + /* Get all selectable classes for the ui select box + */ + function selectable_classes() + { + $this->update_fai_cache(); + + if($this->FAIdebianMirror == "inherited" && isset($this->cache['CLASSES'][$this->InheritedFAIrelease])){ + $classes = $this->cache['CLASSES'][$this->InheritedFAIrelease]; + }elseif(isset($this->cache['CLASSES'][$this->FAIrelease])){ + $classes = $this->cache['CLASSES'][$this->FAIrelease]; + }else{ + $classes = array(); + } + + $Abbr =""; + $ret= array(); + foreach($classes as $class_name => $class_types){ + if(!in_array($class_name,$this->FAIclass)){ + foreach($class_types as $type){ + if(!preg_match("/".$type['Abbr']."/",$Abbr)){ + $Abbr .= $type['Abbr']." "; + } + } + $ret[$class_name] = trim($Abbr); + } + } + uksort($ret, 'strnatcasecmp'); + return($ret); + } + + + /* Analyse FAI object and return an array with usefull informations like + * FAIobject type. + */ + function analyse_fai_object($attr) + { + $tmp = array(); + switch($attr['TYPE']){ + + case 'FAIpackageList': + $tmp["Type"]= 'FAIpackageList'; + $tmp["Abbr"]= 'Pl'; + break; + case 'FAItemplate': + $tmp["Type"]= 'FAItemplate'; + $tmp["Abbr"]= 'T'; + break; + case 'FAIvariable': + $tmp["Type"]= 'FAIvariable'; + $tmp["Abbr"]= 'V'; + break; + case 'FAIscript': + $tmp["Type"]= 'FAIscript'; + $tmp["Abbr"]= 'S'; + break; + case 'FAIhook': + $tmp["Type"]= 'FAIhook'; + $tmp["Abbr"]= 'H'; + break; + case 'FAIpartitionTable': + $tmp["Type"]= 'FAIpartitionTable'; + $tmp["Abbr"]= 'Pt'; + break; + case 'FAIprofile': + $tmp["Type"]= 'FAIprofile'; + $tmp["Abbr"]= 'P'; + break; + default: trigger_error("Unknown FAI object type!");; + } + return($tmp); + } + + + /* Return repository hook output, if possible. + */ + function GetHookElements() + { + $ret = array(); + $cmd= $this->config->search("servrepository", "repositoryBranchHook",array('tabs')); + if(!empty($cmd)){ + $res = shell_exec($cmd); + $res2 = trim($res); + if((!$res)){ + msg_dialog::display(_("Configuration error"), msgPool::cmdexecfailed("repositoryBranchHook", $cmd), ERROR_DIALOG); + }elseif(empty($res2)){ + msg_dialog::display(_("Configuration error"), _("'repositoryBranchHook' returned no result!"), ERROR_DIALOG); + }else{ + $tmp = split("\n",$res); + foreach($tmp as $line){ + if(empty($line)) continue; + $ret[]= $line; + } + } + } + return($ret); + } + + + /* This function creates the release name out of a dn + * e.g. "ou=1.0rc2,ou=siga,ou=fai,..." => "siga/1.0rc2" + */ + function dn_to_release_name($dn) + { + $relevant = preg_replace("/,".preg_quote(get_ou("faiBaseRDN"), '/').".*$/","",$dn); + $parts = array_reverse(split("\,",$relevant)); + $str =""; + foreach($parts as $part){ + $str .= preg_replace("/^ou=/","",$part)."/"; + } + return(preg_replace("/\/$/","",$str)); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/gencd.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/gencd.tpl new file mode 100644 index 000000000..fe56211e9 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/gencd.tpl @@ -0,0 +1,20 @@ +

+ {t}CD-Install-Image generation{/t} +

+

+ {t}This option enables you to generate FAI install CD images for the selected workstation. The procedure may take about 10 minutes to complete, so please be patient after pressing the 'Create ISO-Image' button.{/t} +

+ +

+ +   + +

+ + + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/gencd_frame.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/gencd_frame.tpl new file mode 100644 index 000000000..4c53bdab5 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/gencd_frame.tpl @@ -0,0 +1,3 @@ + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/gotoLpdEnable.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/gotoLpdEnable.tpl new file mode 100644 index 000000000..daff63c3c --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/gotoLpdEnable.tpl @@ -0,0 +1,145 @@ +{if !$is_account} + + + + + +
+ + + + {/render} + + +
+ {render acl=$acl} +  {t}Enable printer settings{/t}
+
+{else} + + + + + +
+ + + + + {/render} + + + + + + + + + + + + + + + + + + + + + + +
+ {render acl=$acl} +  {t}Enable printer settings{/t}
{t}Type{/t} + {render acl=$acl} + + {/render} +
{t}Device{/t} + {render acl=$acl} + + {/render} +
{t}Port{/t} + {render acl=$acl} + + {/render} +
{t}Options{/t} + {render acl=$acl} + + {/render} +
{t}Write only{/t} + {render acl=$acl} + + {/render} +
+
+{if $s_Type == "S"} + + + + + + + + + + + + + + + + + +
{t}Bit rate{/t} + {render acl=$acl} + + {/render} +
{t}Flow control{/t} + {render acl=$acl} + + {/render} +
{t}Parity{/t} + {render acl=$acl} + + {/render} +
{t}Bits{/t} + {render acl=$acl} + + {/render} +
+{/if} +
+{/if} + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/info.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/info.tpl new file mode 100644 index 000000000..03f05f7e3 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/info.tpl @@ -0,0 +1,140 @@ + +{if !$ACL} +

{msgPool type=permView}

+{else} + +

{t}System information{/t}

+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
{t}CPU{/t}{$ghCpuType}
{t}Memory{/t}{$ghMemSize}
{t}Boot MAC{/t}{$macAddress}
{t}USB support{/t}{$ghUsbSupport}
{t}System status{/t}{$status}
{t}Inventory number{/t}{$ghInventoryNumber}
{t}Last login{/t}{$gotoLastUser}
+
+   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{t}Network devices{/t} + {foreach item=netcard from=$ghNetNic} + {$netcard}
+ {/foreach} +
{t}IDE devices{/t} + {foreach item=idedev from=$ghIdeDev} + {$idedev}
+ {/foreach} +
{t}SCSI devices{/t} + {foreach item=scsidev from=$ghScsiDev} + {$scsidev}
+ {/foreach} +
{t}Floppy device{/t}{$FloppyDevice}
{t}CDROM device{/t}{$CdromDevice}
{t}Graphic device{/t}{$ghGfxAdapter}
{t}Audio device{/t}{$ghSoundAdapter}
+
+ +{if $active eq "true"} +
+

{t}System status{/t}

+ + + + + + +
+ + + + + + + + + + + + + + + + + {$partitions} +
{t}Up since{/t}{$uptime}
{t}CPU load{/t}{$load}
{t}Memory usage{/t}{$mem}
{t}Swap usage{/t}{$swap}
 
+
+   + + + + + + + + + + + + + + + + + +
{t}SSH service{/t}{$sshd}
{t}Print service{/t}{$cupsd}
{t}Scan service{/t}{$saned}
{t}Sound service{/t}{$artsd}
{t}GUI{/t}{$X}
+
+{/if} +{/if} diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/printer.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/printer.tpl new file mode 100644 index 000000000..25de9728c --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/printer.tpl @@ -0,0 +1,150 @@ + + + + + +
+{if $StandAlone } +

{t}General{/t}

+ + + + + + + + + + + + + + + + +
{$must} +{render acl=$cnACL} + +{/render} +
+{render acl=$descriptionACL} + +{/render} +
 
{$must} +{render acl=$baseACL} + +{/render} +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} +
+
+{/if} +

{t}Details{/t}

+ + + + + + + + + +
+{render acl=$lACL} + +{/render} +
{$must} +{render acl=$labeledURIACL} + +{/render} +
+ + + + +
+
+ {t}Driver{/t}: {$driverInfo}  +{render acl=$gotoPrinterPPDACL mode=read_active} + +{/render} +{render acl=$gotoPrinterPPDACL} + +{/render} +
+
+ +

 

+ +

{t}Permissions{/t}

+ + + + + +
+ + + + +
+ {t}Users which are allowed to use this printer{/t}
+{render acl=$gotoUserPrinterACL} +
+{/render} +{render acl=$gotoUserPrinterACL} + +{/render} +{render acl=$gotoUserPrinterACL} + +{/render} +{render acl=$gotoUserPrinterACL} + +{/render} +
+ +
+ + + + +
+ {t}Users which are allowed to administrate this printer{/t}
+{render acl=$gotoUserPrinterACL} +
+{/render} +{render acl=$gotoUserPrinterACL} + +{/render} +{render acl=$gotoUserPrinterACL} + +{/render} +{render acl=$gotoUserPrinterACL} + +{/render} + +
+ +
+ + +{if $netconfig ne ''} +

 

+{$netconfig} +{/if} + + + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/selectUserToPrinterDialog.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/selectUserToPrinterDialog.tpl new file mode 100644 index 000000000..f96284c4c --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/selectUserToPrinterDialog.tpl @@ -0,0 +1,70 @@ + + + + + + + +
+
+

+ +

+
+
+

+
+

+
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + +
+  {t}Search in subtrees{/t} +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ {$apply} +
+
+ +

 

+

+ + +

+ diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/tabs_printers.inc b/trunk/gosa-plugins/goto/admin/systems/goto/tabs_printers.inc new file mode 100644 index 000000000..5b8eb259d --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/tabs_printers.inc @@ -0,0 +1,92 @@ +dn= $dn; + $this->config= $config; + + $baseobject= NULL; + + foreach ($data as $tab){ + if(!class_available($tab['CLASS'])) continue; + + $this->by_name[$tab['CLASS']]= $tab['NAME']; + + if ($baseobject === NULL){ + $baseobject= new $tab['CLASS']($this->config, $this->dn,NULL,$this); + $this->by_object[$tab['CLASS']]= $baseobject; + } else { + $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn, $baseobject,$this); + } + + $this->by_object[$tab['CLASS']]->parent= &$this; + $this->by_object[$tab['CLASS']]->set_acl_category($category); + $this->read_only |= $this->by_object[$tab['CLASS']]->read_only; + + /* Initialize current */ + if ($this->current == ""){ + $this->current= $tab['CLASS']; + } + } + + /* Add references/acls/snapshots */ + $this->addSpecialTabs(); + } + + + /*! \brief Reinitializes the tab classes with fresh ldap values. + This maybe usefull if for example the apply button was pressed. + */ + function re_init() + { + $baseobject= NULL; + foreach($this->by_object as $name => $object){ + $class = get_class($object); + if(in_array($class,array("reference","acl"))) continue; + if ($baseobject === NULL){ + $baseobject= new $class($this->config, $this->dn,NULL,$this); + $baseobject->enable_CSN_check(); + $this->by_object[$name]= $baseobject; + } else { + $this->by_object[$name]= new $class($this->config, $this->dn, $baseobject,$this); + } + $this->by_object[$name]->parent= &$this; + $this->by_object[$name]->set_acl_category($this->acl_category); + } + } + + + function save_object($save_current= FALSE) + { + tabs::save_object($save_current); + + /* Assign current cn */ + $baseobject= $this->by_object['printgeneric']; + $baseobject->netConfigDNS->cn= $baseobject->cn; + } + + + function save($ignore_account= FALSE) + { + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + $baseobject= $this->by_object['printgeneric']; + $this->dn= "cn=$baseobject->cn,".get_ou('printerRDN').$baseobject->base; + $baseobject->dn= $this->dn; + + foreach ($this->by_object as $key => $obj){ + $this->by_object[$key]->dn= $this->dn; + } + + tabs::save(FALSE); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/tabs_terminal.inc b/trunk/gosa-plugins/goto/admin/systems/goto/tabs_terminal.inc new file mode 100644 index 000000000..266566c2c --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/tabs_terminal.inc @@ -0,0 +1,112 @@ +dn= $dn; + $this->config= $config; + + $baseobject= NULL; + + foreach ($data as $tab){ + if(!class_available($tab['CLASS'])) continue; + + $this->by_name[$tab['CLASS']]= $tab['NAME']; + + if ($baseobject === NULL){ + $baseobject= new $tab['CLASS']($this->config, $this->dn,NULL,$this); + $this->by_object[$tab['CLASS']]= $baseobject; + } else { + $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn, $baseobject,$this); + } + + $this->by_object[$tab['CLASS']]->parent= &$this; + $this->by_object[$tab['CLASS']]->set_acl_category($category); + $this->read_only |= $this->by_object[$tab['CLASS']]->read_only; + + /* Initialize current */ + if ($this->current == ""){ + $this->current= $tab['CLASS']; + } + } + + /* Add references/acls/snapshots */ + $this->addSpecialTabs(); + } + + + /*! \brief Reinitializes the tab classes with fresh ldap values. + This maybe usefull if for example the apply button was pressed. + */ + function re_init() + { + $baseobject= NULL; + foreach($this->by_object as $name => $object){ + $class = get_class($object); + if(in_array($class,array("reference","acl"))) continue; + if ($baseobject === NULL){ + $baseobject= new $class($this->config, $this->dn,NULL,$this); + $baseobject->enable_CSN_check(); + $this->by_object[$name]= $baseobject; + } else { + $this->by_object[$name]= new $class($this->config, $this->dn, $baseobject,$this); + } + $this->by_object[$name]->parent= &$this; + $this->by_object[$name]->set_acl_category($this->acl_category); + } + } + + + function save_object($save_current= FALSE) + { + tabs::save_object($save_current); + + /* Update reference, transfer variables */ + if(isset($this->by_object['termstartup'])){ + $this->by_object['termstartup']->gotoTerminalPath= $this->by_object['termgeneric']->gotoTerminalPath; + } + + $baseobject = $this->by_object['termgeneric']; + $baseobject->netConfigDNS->cn= $baseobject->cn; + foreach($this->by_object as $name => $plug){ + $this->by_object[$name]->cn = $baseobject->cn; + } + } + + + function save($ignore_account= FALSE) + { + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + $baseobject= $this->by_object['termgeneric']; + $this->dn= "cn=".$baseobject->cn.",".get_ou('terminalRDN').$baseobject->base; + $baseobject->dn= $this->dn; + + if($this->dn != $baseobject->orig_dn && $baseobject->orig_dn != "new"){ + + /* Udpate acls */ + $baseobject->update_acls($baseobject->orig_dn,$this->dn); + $baseobject->move($baseobject->orig_dn,$this->dn); + } + + foreach ($this->by_object as $key => $obj){ + $this->by_object[$key]->dn= $this->dn; + $this->by_object[$key]->cn= $baseobject->cn; + } + + tabs::save(TRUE); + if(isset($this->by_object['printgeneric'])){ + if(($this->by_object['printgeneric']->is_account==false)&&($this->by_object['printgeneric']->initially_was_account==true)){ + $this->by_object['printgeneric']->remove_from_parent(); + } + } + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/tabs_workstation.inc b/trunk/gosa-plugins/goto/admin/systems/goto/tabs_workstation.inc new file mode 100644 index 000000000..a84b5fcb9 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/tabs_workstation.inc @@ -0,0 +1,112 @@ +dn= $dn; + $this->config= $config; + + $baseobject= NULL; + + foreach ($data as $tab){ + + if(!class_available($tab['CLASS'])) continue; + $this->by_name[$tab['CLASS']]= $tab['NAME']; + + if ($baseobject === NULL){ + $baseobject= new $tab['CLASS']($this->config, $this->dn,NULL,$this); + $this->by_object[$tab['CLASS']]= $baseobject; + } else { + $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn, $baseobject,$this); + } + + $this->by_object[$tab['CLASS']]->parent= &$this; + $this->by_object[$tab['CLASS']]->set_acl_category($category); + $this->read_only |= $this->by_object[$tab['CLASS']]->read_only; + + /* Initialize current */ + if ($this->current == ""){ + $this->current= $tab['CLASS']; + } + } + + /* Add references/acls/snapshots */ + $this->addSpecialTabs(); + } + + + /*! \brief Reinitializes the tab classes with fresh ldap values. + This maybe usefull if for example the apply button was pressed. + */ + function re_init() + { + $baseobject= NULL; + foreach($this->by_object as $name => $object){ + $class = get_class($object); + if(in_array($class,array("reference","acl"))) continue; + if ($baseobject === NULL){ + $baseobject= new $class($this->config, $this->dn,NULL,$this); + $baseobject->enable_CSN_check(); + $this->by_object[$name]= $baseobject; + } else { + $this->by_object[$name]= new $class($this->config, $this->dn, $baseobject,$this); + } + $this->by_object[$name]->parent= &$this; + $this->by_object[$name]->set_acl_category($this->acl_category); + } + } + + + function save_object($save_current= FALSE) + { + tabs::save_object($save_current); + + /* Assign current cn */ + $baseobject= $this->by_object['workgeneric']; + $baseobject->netConfigDNS->cn= $baseobject->cn; + foreach ($this->by_object as $key => $obj){ + $this->by_object[$key]->cn= $baseobject->cn; + } + } + + + function save($ignore_account= FALSE) + { + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + $baseobject= $this->by_object['workgeneric']; + $this->dn= "cn=".$baseobject->cn.",".get_ou('workstationRDN').$baseobject->base; + + if($this->dn != $baseobject->orig_dn && $baseobject->orig_dn != "new"){ + + /* Udpate acls */ + $baseobject->update_acls($baseobject->orig_dn,$this->dn); + $baseobject->move($baseobject->orig_dn,$this->dn); + } + + $baseobject->dn= $this->dn; + + foreach ($this->by_object as $key => $obj){ + $this->by_object[$key]->dn= $this->dn; + $this->by_object[$key]->cn= $baseobject->cn; + } + + tabs::save(TRUE); + + if(isset($this->by_object['printgeneric'])){ + if(($this->by_object['printgeneric']->is_account==false)&&($this->by_object['printgeneric']->initially_was_account==true)){ + $this->by_object['printgeneric']->remove_from_parent(); + } + } + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/terminal.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/terminal.tpl new file mode 100644 index 000000000..606c8e740 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/terminal.tpl @@ -0,0 +1,190 @@ +

{t}Properties{/t}

+ + + + + +
+ + + {if $cn eq 'default'} + + {else} + + + {/if} + + + + + + + + + +
{t}Terminal template{/t}{$must} +{render acl=$cnACL} + +{/render} +
+{render acl=$descriptionACL} + +{/render} +
{$must} + +{render acl=$baseACL} + +{/render} +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} +
+ {$host_key} + +
+ + + + + + + + + +
+{render acl=$gotoModeACL} + +{/render} +
+{render acl=$gotoSyslogServerACL} + +{/render} +
+
+

 

+ + + + + +
+ + + + + + + + + +
+{render acl=$gotoTerminalPathACL} + +{/render} +
+{render acl=$gotoSwapServerACL} + +{/render} +
+
+ + + + + + + +
+{if $member_of_ogroup} +{render acl=$gotoNtpServerACL} + {t}Inherit time server attributes{/t} +{/render} +{else} + {t}Inherit time server attributes{/t} +{/if} +

+{render acl=$gotoNtpServerACL} + +{/render} +
+{render acl=$gotoNtpServerACL} + +{/render} +{render acl=$gotoNtpServerACL} + +{/render} +{render acl=$gotoNtpServerACL} + +{/render} +
+ +
+ +{if $cn neq 'default'} +

 

+ +{$netconfig} +{/if} +

 

+ + + + + +
+ {if $fai_activated} +

{t}Action{/t}

+ + + + + +
+ {render acl=$gotoNtpServerACL} + + {/render} + + {render acl=$gotoNtpServerACL} + + {/render} +
+ {/if} +
+ {if $member_of_ogroup} + + {/if} +
+ + + + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/terminalService.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/terminalService.tpl new file mode 100644 index 000000000..d5fad8859 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/terminalService.tpl @@ -0,0 +1,252 @@ + + + + + + + + + + + + +
+

{t}Keyboard{/t}

+ + + + + + + + + + + + + +
+{render acl=$gotoXKbModelACL} + +{/render} +
+{render acl=$gotoXKbLayoutACL} + +{/render} +
+{render acl=$gotoXKbVariantACL} + +{/render} +
+ +
+   + +

{t}Mouse{/t}

+ + + + + + + + + +
+{render acl=$gotoXMouseTypeACL} + +{/render} +
+{render acl=$gotoXMouseportACL} + +{/render} +
+ +
+   + +

{t}Telephone hardware{/t}

+ + + + +
{t}Telephone{/t}  +{render acl=$goFonHardwareACL} + {$hardware_list} +{/render} +
+ +
+ + + + + + + + + + + + + +

+

{t}Graphic device{/t}

+ + + + + + + + + + + + + +
+{render acl=$gotoXDriverACL} + +{/render} +
+{render acl=$gotoXResolutionACL} + +{/render } +
+{render acl=$gotoXColordepthACL} + +{/render} +
+
+   + +

{t}Display device{/t}

+ + + + + + + + + + + + +{/render} + + + + +{/render} + +
{t}Type{/t}{$gotoXMonitor}
+{render acl=$AutoSyncACL} + +{/render} + {t}Use DDC for automatic detection{/t}
+{render acl=$gotoXHsyncACL} + kHz
+{render acl=$gotoXVsyncACL} + Hz
+ +
+   + +

{t}Remote desktop{/t}

+ + + + + + + + + + +
+{render acl=$gotoXMethodACL} + + +{/render} +
+
+{render acl=$gotoXdmcpServerACL} +
+{/render} +{render acl=$gotoXdmcpServerACL} + +{/render} +{render acl=$gotoXdmcpServerACL} + +{/render} +{render acl=$gotoXdmcpServerACL} + +{/render} + +
+ +
+ + + + + + + + + + +
+

+

+
+

{t}Scan device{/t}

+{render acl=$gotoScannerEnableACL} + +{/render} + {t}Provide scan services{/t} + +
+   + +

+ {t}Printer{/t} +

+ {$gotoLpdEnable_dialog} +
+ +
diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/terminalStartup.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/terminalStartup.tpl new file mode 100644 index 000000000..c2ce19b98 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/terminalStartup.tpl @@ -0,0 +1,130 @@ +

{t}Boot parameters{/t}

+ + + + + + +
+ + + + +
+{render acl=$gotoLdapServerACL} +{if $member_of_ogroup} +( + {t}inherit from group{/t}) +{if !$JS} + +{/if} +{/if} +{/render} +{render acl=$gotoLdapServerACL_inherit} + {$gotoLdapServers} +{/render} +{render acl=$gotoLdapServerACL_inherit} + +{/render} +{render acl=$gotoLdapServerACL_inherit} + +{/render} +
+
+   + + + + + + + + + + +{/render} + +
+{render acl=$gotoBootKernelACL} + +{/render} +
+{render acl=$gotoKernelParametersACL} +
+ +
+ + + + + + + + + +

+

+ {t}Kernel modules (format: name parameters){/t} +

+{render acl=$gotoModulesACL} + +{/render} +
+{render acl=$gotoModulesACL} + +{/render} +{render acl=$gotoModulesACL} +   +{/render} +{render acl=$gotoModulesACL} + +{/render} +
+

 

+ + + + +
+{render acl=$gotoShareACL} + +{/render} +
+{render acl=$gotoShareACL} + +{/render} +{render acl=$gotoShareACL} + +{/render} +{render acl=$gotoShareACL} + +{/render} +{render acl=$gotoShareACL} + +{/render} +
+
+ + + + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/workstation.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/workstation.tpl new file mode 100644 index 000000000..2ea84bfe6 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/workstation.tpl @@ -0,0 +1,179 @@ +

{t}Properties{/t}

+ + + + + +
+ + +{if $cn eq 'wdefault'} + +{else} + + +{/if} + + + + + + + + + + + + + +
{t}Workstation template{/t}{$must} +{render acl=$cnACL} + +{/render} +
+{render acl=$descriptionACL} + +{/render} +
+{render acl=$lACL} + +{/render} +
{$must} +{render acl=$baseACL} + +{/render} +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} +
+ + {$host_key} + +
+ + + + + + + + + +
{t}Mode{/t} +{render acl=$gotoModeACL} + +{/render} +
+{render acl=$gotoSyslogServerACL} + +{/render} +
+

 

+ + + + + + + +
+{if $member_of_ogroup} +{render acl=$gotoNtpServerACL} + {t}Inherit time server attributes{/t} +{/render} +{else} + {t}Inherit time server attributes{/t} +{/if} +

+{render acl=$gotoNtpServerACL} + +{/render} +
+{render acl=$gotoNtpServerACL} + +{/render} +{render acl=$gotoNtpServerACL} + +{/render} +{render acl=$gotoNtpServerACL} + +{/render} +
+
+{if $cn neq 'wdefault'} +

 

+ +{$netconfig} +{/if} +

 

+ +{if $fai_activated} +

{t}Action{/t}

+ + + +
+ + + + + +
+{render acl=$FAIstateACL} + +{/render} + +{if $currently_installing} +{render acl=r} + +{/render} +{else} +{render acl=$FAIstateACL} + +{/render} +{/if} +
+{/if} +
+{if $member_of_ogroup} + +{/if} +
+ + {if $cn eq 'wdefault'} + + + {else} + + {/if} + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/workstationService.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/workstationService.tpl new file mode 100644 index 000000000..19d3896b1 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/workstationService.tpl @@ -0,0 +1,223 @@ + + + + + + + + + + + + +
+

{t}Keyboard{/t}

+ + + + + + + + + + + + + +
+ +{render acl=$gotoXKbModelACL} + +{/render} + +
+ +{render acl=$gotoXKbLayoutACL} + +{/render} + +
+ +{render acl=$gotoXKbVariantACL} + +{/render} + +
+ +
+   + +

{t}Mouse{/t}

+ + + + +{/render} + + + + + + +
+ +{render acl=$gotoXMouseTypeACL} + +
+ +{render acl=$gotoXMouseportACL} + +{/render} + +
+ +
+   + +

{t}Telephone hardware{/t}

+ + + + +
{t}Telephone{/t}  + +{render acl=$goFonHardwareACL} + {$hardware_list} +{/render} + +
+ +
+ + + + + + + + + + + + + +

+

{t}Graphic device{/t}

+ + + + + + + + + + + + + +
+ +{render acl=$gotoXDriverACL} + +{/render} + +
+ +{render acl=$gotoXResolutionACL} + +{/render} + +
+ +{render acl=$gotoXColordepthACL} + +{/render} + +
+
+   + +

{t}Display device{/t}

+ + + + + + + + + + + + + + + + + +
{t}Type{/t}{if $gotoXMonitor==""}{t}unknown{/t}{/if}{$gotoXMonitor}
+ +{render acl=$AutoSyncACL} + +{/render} + + {t}Use DDC for automatic detection{/t}
+ +{render acl=$gotoXHsyncACL} + kHz +{/render} + +
+ +{render acl=$gotoXVsyncACL} + Hz +{/render} + +
+ +
+   + + + +

{t}Scan device{/t}

+ +{render acl=$gotoScannerEnableACL} + +{/render} + + {t}Provide scan services{/t} +
+ + +
+ + + + + + diff --git a/trunk/gosa-plugins/goto/admin/systems/goto/workstationStartup.tpl b/trunk/gosa-plugins/goto/admin/systems/goto/workstationStartup.tpl new file mode 100644 index 000000000..a484dce7f --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/goto/workstationStartup.tpl @@ -0,0 +1,247 @@ + + + + + + + + +
+

{t}Boot parameters{/t}

+ + + {if $fai_activated && $si_active && !$si_fai_action_failed} + + + + + {/if} + + + + + + + +
+{render acl=$gotoBootKernelACL} + +{/render} +
+{render acl=$gotoKernelParametersACL} + +{/render} +
+{render acl=$gotoLdapServerACL} +{if $member_of_ogroup} +( + {t}inherit from group{/t}) +{if !$JS} + +{/if} +{/if} +{/render} +{render acl=$gotoLdapServerACL_inherit} + {$gotoLdapServers} +{/render} +{render acl=$gotoLdapServerACL_inherit} + +{/render} +{render acl=$gotoLdapServerACL_inherit} + +{/render} +
+ +
+   + + + {if !$fai_activated} +

{t}FAI Object assignment disabled. You can't use this feature until FAI is activated.{/t}

+ {elseif !$si_active} + {t}GOsa support daemon not configured{/t}
+ {t}FAI settings cannot be modified{/t} + {elseif $si_fai_action_failed} + {msgPool type=siError}
+ {t}Check if the GOsa support daemon (gosa-si) is running.{/t} + + {elseif $fai_activated} + + {if $FAIdebianMirror == "inherited"} + + + + + + + + + + +
+

 {t}FAI server{/t} +

+
+

 {t}Release{/t} +

+
+ {render acl=$FAIdebianMirrorACL} + + {/render} + + +
+

+  {t}Assigned FAI classes{/t} +

+ {render acl=$FAIclassACL} + {$FAIScriptlist} + {/render} + {else} + + + + + + + + + + +
+

 {t}FAI server{/t} +

+
+

 {t}Release{/t} +

+
+ {render acl=$FAIdebianMirrorACL} + + {/render} + {if $javascript eq 'false'} + {render acl=$FAIdebianMirrorACL} + + {/render} + {/if} + + {render acl=$FAIreleaseACL} + + {/render} +
+

+  {t}Assigned FAI classes{/t} +

+ {render acl=$FAIclassACL} + {$FAIScriptlist} + {/render} + + {render acl=$FAIclassACL} + + {/render} + {render acl=$FAIclassACL} + + {/render} + + {/if} + + {/if} +
+ + + + + + + + + +

+

+ {t}Kernel modules (format: name parameters){/t} +

+{render acl=$gotoModulesACL} + +{/render} +
+{render acl=$gotoModulesACL} + +{/render} +{render acl=$gotoModulesACL} +   +{/render} +{render acl=$gotoModulesACL} + +{/render} +
+

 

+ + + + +
+{render acl=$gotoShareACL} + +{/render} +
+{render acl=$gotoShareACL} + +{/render} +{render acl=$gotoShareACL} + +{/render} +{render acl=$gotoShareACL} + +{/render} +{render acl=$gotoShareACL} + +{/render} +
+
+ + + diff --git a/trunk/gosa-plugins/goto/admin/systems/ppd/class_ppdManager.inc b/trunk/gosa-plugins/goto/admin/systems/ppd/class_ppdManager.inc new file mode 100644 index 000000000..fe72164d2 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/ppd/class_ppdManager.inc @@ -0,0 +1,361 @@ +path= $path; + }elseif(is_link($path) && (is_dir(readlink($path)))) { + $this->path= $path; + } else { + msg_dialog::display(_("PPD manager error"), sprintf(_("The specified path '%s' does not exist."),$path), ERROR_DIALOG); + return (false); + } + } + + + function findPPD($path) + { + $list= array(); + $currentDir= getcwd(); + + $dh = opendir($path); + while(false !== ($file = readdir($dh))){ + + /* Skip well known files */ + if( $file == '.' || $file == '..'){ + continue; + } + + /* Recurse through all "common" directories */ + $check_path= $path.'/'.$file; + if(is_dir($check_path) || (is_link($check_path) && (is_dir(readlink($check_path))))){ + $list= array_merge($list, $this->findPPD($check_path)); + continue; + } + + /* Check for PPD extension */ + if (preg_match('/\.ppd(.gz)?$/i', $file)){ + $list[]= $path.'/'.$file; + } + } + + closedir($dh); + chdir ($currentDir); + return ($list); + } + + + function updateAttribute($file, $section, $attribute, $value) + { + $fsection= false; + $fattribute= false; + $section= preg_replace('/^\*/', '', $section); + $attribute= preg_replace('/^\*/', '', $attribute); + + $rp= @gzopen($file, "r"); + $wp= @gzopen("$file.tmp", "w"); + + + + while (!gzeof($rp)){ + $lines[]= gzgets($rp, 1024); + } + + $ret = ""; + $done =false; + foreach($lines as $nr => $line){ + + if (preg_match("/\*OpenGroup:*\s+\**$section\/*/", $line)){ + $fsection= true; + $ret .=$line; + continue; + } + + /* Change model name .. */ + if ((preg_match("/^\*".$attribute.":*\s+/",$line)) && ($attribute == "ModelName")){ + $line= "*$attribute: \"$value\"\n"; + $done =true; + } + + if (($fsection) && ($section != "NO_SECTION")){ + if (preg_match("/^\*CloseGroup:*\s+\**$section\/*/", $line)){ + $fsection= false; + $ret .=$line; + continue; + } + + + if (preg_match("/^\*OpenUI:*\s+\**$attribute\/*/", $line)){ + $fattribute= true; + $ret .= $line; + continue; + } + + if ($fattribute){ + if (preg_match("/^\*CloseUI:*\s+\**$attribute\/*/", $line)){ + $fattribute= false; + $ret .= $line; + continue; + } + + if (preg_match("/^\*Default$attribute:*\s+/", $line)){ + $line= "*Default$attribute: $value\n"; + $done =true; + } + } + }else{ + if (preg_match("/^\*OpenUI:*\s+\**$attribute\/*/", $line)){ + $fattribute= true; + $ret .= $line; + continue; + } + + if ($fattribute){ + if (preg_match("/^\*CloseUI:*\s+\**$attribute\/*/", $line)){ + $fattribute= false; + $ret .= $line; + continue; + } + + if (preg_match("/^\*Default$attribute:*\s+/", $line)){ + $line= "*Default$attribute: $value\n"; + $done =true; + } + } + } + $ret .=$line; + } + + gzwrite($wp,$ret); + + gzclose($wp); + gzclose($rp); + + copy("$file.tmp", "$file"); + unlink("$file.tmp"); + } + + + function saveProperties($ppdFile, $properties) + { + if(!is_readable($ppdFile)){ + msg_dialog::display(_("PPD manager error"), sprintf(_("Specified PPD file '%s' cannot be opened for reading."),$ppdFile), ERROR_DIALOG); + }elseif(!is_writeable(preg_replace("#(^.*/).*$#","\\1",$ppdFile.".tmp"))){ + msg_dialog::display(_("PPD manager error"), sprintf(_("The temporary file '%s' cannot be opened for writing."),$ppdFile.".tmp"), ERROR_DIALOG); + }else{ + if(is_array($properties)){ + foreach ($properties as $name => $section){ + foreach ($section as $attribute => $value){ + if (is_array($value)){ + $this->updateAttribute($ppdFile, $name, $attribute, $value['_default']); + } + } + } + } + } + } + + function loadProperties($ppdFile) + { + $group= ""; + $option= ""; + $properties= array(); + + $fh= gzopen ($ppdFile, 'r'); + while (!gzeof($fh)) { + + /* Read line */ + $line= gzgets($fh, 256); + if (strlen($line) >= 256){ + trigger_error(_('Parsing PPD file %s failed - line too long. Trailing characters have been ignored'), E_USER_WARNING); + } + + /* Trigger for option groups */ + if (preg_match('/^\*OpenGroup:/i', $line)){ + + /* Sanity checks */ + if ($group != ""){ + trigger_error(_('Nested groups are not supported!'), E_USER_WARNING); + continue; + } + if (in_array($group, $properties)){ + trigger_error(_('Group name not unique!'), E_USER_WARNING); + continue; + } + + // TODO: Symbol values are not supported yet! + if (preg_match('/\^/', $line)){ + trigger_error(_('Symbol values are not supported yet!'), E_USER_WARNING); + } + $complete= preg_replace('@^\*OpenGroup:\s+(.*)$@i', '\1', $line); + $complete= trim($complete, '"'); + if (preg_match('@/@', $complete)){ + $group= trim(preg_replace('@^\*OpenGroup:\s+"?([^/]+)/.*$@i', '\1', $line)); + $name = preg_replace('@^\*OpenGroup:\s+"?[^/]+/([^/]+).*$@i', '\1', $line); + } else { + $group= $complete; + $name = $complete; + } + $properties[$group]= array('_name' => $name); + continue; + } + if (preg_match("/^\*CloseGroup:\s+\"?$group\"?/i", $line)){ + $group= ""; + continue; + } + + /* Trigger for options */ + if (preg_match('/^\*OpenUI\s+/i', $line)){ + + /* Sanity check */ + if ($option != ""){ + trigger_error(_('Nested options are not supported!'), E_USER_WARNING); + continue; + } + + // TODO: Symbol values are not supported yet! + if (preg_match('/\^/', $line)){ + trigger_error(_('Symbol values are not supported yet!'), E_USER_WARNING); + } + $complete= preg_replace('@^\*OpenUI\s+(.*)$@i', '\1', $line); + $complete= trim($complete, '"'); + if (preg_match('@/@', $complete)){ + $option= trim(preg_replace('@^\*OpenUI\s+([^/]+)/.*$@i', '\1', $line)); + $name = trim(preg_replace('@^\*OpenUI\s+[^/]+/([^/]+).*$@i', '\1', $line)); + } else { + $option= trim($complete); + $name = trim($complete); + } + + /* Extract option type */ + $type= trim(preg_replace('/^[^:]+:\s+/', '', $line)); + $name= preg_replace('/:.*$/', '', $name); + $option= preg_replace('/:.*$/', '', $option); + + // TODO: PickMany is not supported yet! + if (preg_match('/PickMany/i', $type)){ + trigger_error(_('PickMany is not supported yet!'), E_USER_WARNING); + } + if(empty($group)){ + $properties["NO_SECTION"][$option]= array('_name' => $name, '_type' => $type); + }else{ + $properties[$group][$option]= array('_name' => $name, '_type' => $type); + } + continue; + } + /* Show interest for option parsing */ + if ($option != ""){ + + $eoption= preg_replace('@\*@', '', $option); + + /* Close section? */ + if (preg_match("@^\*CloseUI:\s+\*$eoption@i", $line)){ + $option= ""; + continue; + } + + /* Default value? */ + if (preg_match("@^\*Default$eoption:@", $line)){ + $c= preg_replace("@^\*Default$eoption:\s+@", "", $line); + if(empty($group)){ + $properties["NO_SECTION"][$option]['_default']= trim(trim($c, '"')); + }else{ + $properties[$group][$option]['_default']= trim(trim($c, '"')); + } + continue; + } + + /* Possible value? */ + if (preg_match("@^\*$eoption\s+@", $line)){ +#*PageSize Letter/US Letter: "<>setpagedevice" + $c= preg_replace("@^\*$eoption\s+([^/]+).*$@", "$1", $line); + $d= preg_replace("@^\*$eoption\s+[^/]+/([^:]+).*$@", "$1", $line); + if(empty($group)){ + $properties["NO_SECTION"][$option][trim($c)]= trim($d); + }else{ + $properties[$group][$option][trim($c)]= trim($d); + } + continue; + } + } + } + gzclose ($fh); + return ($properties); + } + + function loadDescription($ppdFile) + { + $model= ""; + $manufacturer= ""; + + + /* Only parse complete PPD file again, if it was changed */ + $modified = filemtime($ppdFile); + if(isset($this->cachedList[$ppdFile]) && isset($this->timestamps[$ppdFile]) && $modified == $this->timestamps[$ppdFile]){ + return($this->cachedList[$ppdFile]); + } + + /* Remember modified timestamp, to speed up next request */ + $this->timestamps[$ppdFile] = filemtime($ppdFile); + + $fh= gzopen ($ppdFile, 'r'); + while ((!gzeof($fh))&&($fh)) { + + /* Read line */ + $line= gzgets($fh, 256); + if (strlen($line) >= 256){ + trigger_error(_('Parsing PPD file %s failed - line too long. Trailing characters have been ignored'), E_USER_WARNING); + } + + /* Extract interesting informations */ + if (preg_match('/^\*Manufacturer:/i', $line)){ + $manufacturer= preg_replace('/^\*Manufacturer:\s+"?([^"]+)"?.*$/i', '\1', $line); + } + if (preg_match('/^\*ModelName:/i', $line)){ + $model= preg_replace('/^\*ModelName:\s+"?([^"]+)"?.*$/i', '\1', $line); + } + + /* Got everything we need? Skip rest for speed reasons... */ + if ($model != '' && $manufacturer != ''){ + break; + } + } + gzclose ($fh); + + /* Write out a notice that the PPD file seems to be broken if we can't + extract any usefull informations */ + if ($model == '' || $manufacturer == ''){ + trigger_error(sprintf(_('Parsing PPD file %s failed - no information found.'), $ppdFile), E_USER_WARNING); + } + + return ($manufacturer.' - '.$model); + } + + + function getPrinterList($reload= false) + { + /* Load list of PPD files */ + if (count($this->cachedList) == 0 || $reload){ + $list= $this->findPPD($this->path); + + /* Load descriptive informations to build final printer list */ + $new = array(); + foreach ($list as $ppdFile){ + $new[$ppdFile] = $this->loadDescription($ppdFile); + } + $this->cachedList= $new ; + + } + + return ($this->cachedList); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/ppd/class_printerPPDDialog.inc b/trunk/gosa-plugins/goto/admin/systems/ppd/class_printerPPDDialog.inc new file mode 100644 index 000000000..2f176e75a --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/ppd/class_printerPPDDialog.inc @@ -0,0 +1,577 @@ +ppdManager->loadProperties($this->selectedPPD['link']); + var $ppdList = array(); // Contains all Printer models + var $ppdListHeader = array(); // Contains all printer vendors + + /* Paths */ + var $pathToPPD = ""; // Base path, defined in gosa.conf e.g. "/var/spool/ppd/" + var $pathToModified = "modified/"; // used to store the modified ppds + + /* Object Info */ + var $cn = "" ; // Used to tag the ppds modified by the printer object, + var $ui; + + /* If there is already a ppd file for the same type of printer, + * remember the path to ppd file and display a dialog which allows + * to overwrite the current ppd file. + */ + var $add_ppd_later = ""; + var $add_later_msg_dialog = NULL; + + function printerPPDDialog (&$config, $dn= NULL, $ppdfile=NULL ) + { + plugin::plugin ($config, $dn); + $this->depselect = $this->config->current['BASE']; + + $this->ui = get_userinfo(); + + /* Get PPD path and remove double //, and add trailing / */ + $config = session::get('config'); + if($config->get_cfg_value("ppdPath") != ""){ + $this->pathToPPD = $config->get_cfg_value("ppdPath"); + $this->pathToPPD= preg_replace("/\/\//", "/", $this->pathToPPD); + if(!preg_match("/\/$/",$this->pathToPPD)){ + $this->pathToPPD = $this->pathToPPD."/"; + } + }else{ + $this->pathToPPD = ""; + } + + /* Check if ppdPath is set in gosa.conf. + */ + if(empty($this->pathToPPD)){ + msg_dialog::display(_("Configuration error"), msgPool::invalidConfigurationAttribute("ppdPath"), ERROR_DIALOG); + } + + /* It seams that we have an existing PPD path, so go on */ + if(!((!is_dir($this->pathToPPD))||(empty($this->pathToPPD)))){ + + /* Load all available PPD files and sort them into an array */ + $this->ppdManager= new ppdManager($this->pathToPPD); + $this->getPrinterReload (); + + /* The user has already a valid PPD assigned + * Get some informations about this PPD + * and set it as selected. + * The ppdpath ['link'] should be relative from .../ppd/modified/ + * e.g. "/Compaq/Compaq-J1200.ppd" */ + if(($ppdfile!== NULL)&&(strlen($ppdfile)>0)){ + $ppdfile = preg_replace("#".$this->pathToModified."#","",$ppdfile); + if(!file_exists($this->pathToPPD.$this->pathToModified.$ppdfile)){ + msg_dialog::display(_("PPD error"), sprintf(_("Cannot open PPD '%s'!"), $ppdfile), ERROR_DIALOG); + }else{ + $res = $this->ppdManager->loadDescription($this->pathToPPD.$this->pathToModified.$ppdfile); + if($res){ + $tmp = split("\n",$res); + $tmp3 = array(); + $tmp3['name'] = trim(preg_replace("/^\-/","",trim($tmp[1]))); + $tmp3['link'] = $ppdfile; + $tmp3['ppd'] = $res; + } + $this->selectedPPD = $tmp3; + } + } + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $display= ""; + $smarty= get_smarty(); + $smarty->assign("ppdString", _("Can't get ppd informations.")); + $smarty->assign("showOptions", ""); + $smarty->assign("path_valid", TRUE); + $smarty->assign("acl",$this->ui->get_permissions($this->dn,"printer/printgeneric","gotoPrinterPPD")); + + $acl = $this->ui->get_permissions($this->dn,"printer/printgeneric","gotoPrinterPPD"); + + if(empty($this->pathToPPD)){ + + /* Print out template */ + $smarty->assign("path_valid", FALSE); + $display.= $smarty->fetch(get_template_path('printerPPDDialog.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + /* Check these paths */ + $paths = array($this->pathToPPD, $this->pathToPPD.$this->pathToModified); + + /* If one of our required paths is not available, stop here and display some info */ + foreach($paths as $path){ + + /* Check if path is write/readable*/ + $is_r = @is_readable($path); + if(((!is_dir($path))||(empty($path)) || (!$is_r)) && (!@mkdir($path))){ + msg_dialog::display(_("Configuration error"), + sprintf(_("Cannot open PPD path '%s' for reading and writing!"), $path), ERROR_DIALOG); + + /* Print out template */ + $display.= $smarty->fetch(get_template_path('printerPPDDialog.tpl', TRUE,dirname(__FILE__))); + return($display); + } + } + + // PPD selection / upload / dialog handling + + /* Is there a new PPD file uploaded ? */ + if(preg_match("/w/",$acl)){ + if((isset($_FILES['NewPPDFile']))&&(isset($_POST['SubmitNewPPDFile']))){ + $file = ($_FILES['NewPPDFile']); + if($file['size'] != 0 ){ + if($name = $this->AddPPD($file['tmp_name'])){ + $this->SelectPPD($name); + } + }else{ + msg_dialog::display(_("PPD error"), msgPool::incorrectUpload(_("file is empty")), ERROR_DIALOG); + } + } + } + + /* Overwrite existing PPD file and select it as currently used for this object */ + if(is_object($this->add_later_msg_dialog) && ($this->add_later_msg_dialog->is_confirmed()) && $this->add_ppd_later != ""){ + if($name = $this->AddPPD($this->add_ppd_later,TRUE)){ + $this->SelectPPD($name); + } + $this->add_ppd_later = ""; + $this->add_later_msg_dialog = NULL; + } + + /* Open a dialog that allow us to select different PPDs */ + if(preg_match("/w/",$acl)){ + if(isset($_POST['SelectPPD'])){ + $this->dialog= new printerPPDSelectionDialog($this->config,$this->dn,$this->ppdList,$this->ppdListHeader,$this->selectedPPD); + } + } + + /* The selection dialog fpr PPDs is canceled */ + if(isset($_POST['ClosePPDSelection'])){ + unset($this->dialog); + $this->dialog=FALSE; + } + + /* Div Selection */ + if((isset($_GET['act']))&&($_GET['act']=="use")){ + $this->SelectPPD(base64_decode($_GET['id'])); + unset($this->dialog); + $this->dialog=FALSE; + + } + + /* if a dialog is open, print the dialog instead of this class */ + if(is_object($this->dialog)){ + $display = $this->dialog->execute(); + return($display); + } + + // ENDE PPD selection / upload / dialog handling + + /* Give smarty the information it needs */ + $smarty->assign("ppdString" ,$this->getPPDInformation()); + $tmp= $this->generateProperties(); + if ($tmp == ""){ + $smarty->assign("showOptions", 0); + } else { + $smarty->assign("showOptions", 1); + $smarty->assign("properties",$this->generateProperties()); + } + + /* Print out template */ + $display.= $smarty->fetch(get_template_path('printerPPDDialog.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + + /* Select PPD */ + function SelectPPD($name) + { + /* Replace base path we don't need it here + The path we need looks like this : "/Vendor/ModellName.ppd"; + thats all */ + $name = preg_replace("#".$this->pathToPPD."#","",$name); + + /* Intialise some base vars */ + $AbsoluteSourceName = $this->pathToPPD.$name; + $AbsoluteDestinationPath = $this->pathToPPD.$this->pathToModified; + $Vendor = ""; // Vendor + $Name = ""; // Name + $Modell = ""; // Modell + $PrinterName = ""; // The new name of the printer + $PPDName = ""; + + /* Force reload of config dialog */ + $this->ppdConfig = false; + $this->selectedPPD['link'] = false; + + /* Get PPD informations and set vendor / modell / name */ + if((!file_exists($AbsoluteSourceName)) || (!is_readable($AbsoluteSourceName))){ + msg_dialog::display(_("PPD error"), msgPool::cannotReadFile($AbsoluteSourceName), ERROR_DIALOG); + return; + } + $res = $this->ppdManager->loadDescription($AbsoluteSourceName); + if($res){ + $tmp = split("\n",$res); + $Name = trim(preg_replace("/^\-/","",trim($tmp[1]))); + $Vendor = trim($tmp[0]); + $Model = trim(preg_replace("/".$Vendor."/","",$Name)); + } + + $PrinterName = $this->cn."-".preg_replace("/[^a-z0-9-_\.]/i","_",$Name); + $PPDName = $Vendor."/".$PrinterName.".ppd"; + + /* Create the vendors path, if it doesn't exists already */ + if(!is_dir($AbsoluteDestinationPath.$Vendor)){ + if(!(@mkdir($AbsoluteDestinationPath.$Vendor))){ + msg_dialog::display(_("PPD error"), msgPool::cannotCreateFolder($AbsoluteDestinationPath.$Vendor), ERROR_DIALOG); + return(false); + } + } + + /* Create destination file handle */ + $fp = @fopen($AbsoluteDestinationPath.$PPDName,"w+"); + if(!$fp){ + msg_dialog::display(_("PPD error"), msgPool::cannotWriteFile($AbsoluteDestinationPath.$PPDName), ERROR_DIALOG); + return(false); + } + + $str = file_get_contents($AbsoluteSourceName); + fputs($fp,$str); + @fclose($fp); + + //$this->ppdManager->updateAttribute($filename,"NO_SECTION","ModelName",$printerName); + + $tmp3['link'] =$PPDName; + $this->selectedPPD = $tmp3; + $this->getPrinterReload(); + return($PPDName); + } + + + /* This function adds a new ppd file to the list of available ppds. + All required paths and files will be created + $_PathOnHdd e.g. = /tmp/PHP_tmpfile213452 */ + function AddPPD($_PathOnHdd,$overwrite = FALSE) + { + /* Check if file exists && is readable */ + if((!is_file($_PathOnHdd)) || (!is_readable($_PathOnHdd))){ + msg_dialog::display(_("PPD error"), msgPool::cannotReadFile($_PathOnHdd), ERROR_DIALOG); + return(false); + } + + /* Reload list to detect changes e.g. a file has been deleted */ + $this->getPrinterReload(); + + /* Get Description from ppd, & parse out some informations */ + $res = @$this->ppdManager->loadDescription($_PathOnHdd); + if($res){ + $tmp = split("\n",$res); + $name = @trim(preg_replace("/^\-/","",trim($tmp[1]))); + $vendor = @trim($tmp[0]); + $model = @trim(preg_replace("/".$vendor."/","",$name)); + } + + /* Check if parse was successfull */ + if(empty($name) || empty($vendor)){ + msg_dialog::display(_("PPD error"), sprintf(_("Cannot parse PPD '%s'!"), $_PathOnHdd), ERROR_DIALOG); + return(false); + } + + /* Prepare list of ppds */ + if(!isset($this->ppdList[$vendor])){ + $this->ppdList[$vendor] = array(); + } + + /* Create ppd file and fill in the source contents */ + $ppdname = $vendor."/".$name.".ppd"; + $filename = $this->pathToPPD.preg_replace("/[^a-z0-9-_\.\/]/i","_",$ppdname); + $filename = $this->pathToPPD.$ppdname; + $contents = file_get_contents($_PathOnHdd); + + + /* Check if this ppd already exists */ + $found = false; + foreach($this->ppdList[$vendor] as $key => $val){ + if(preg_match("/".$model.".*/i",$key)){ + $found = true; + if(!$overwrite){ + if(!copy($_PathOnHdd,$_PathOnHdd."_back")){ + msg_dialog::display(_("PPD error"), msgPool::cannotReadFile($_PathOnHdd), ERROR_DIALOG); + }else{ + $this->add_ppd_later = $_PathOnHdd."_back"; + $this->add_later_msg_dialog = new msg_dialog(_("Overwrite existing PPD"), + _("There is already a ppd file for this kind of printer. Do you want to overwrite it?"),CONFIRM_DIALOG); + } + return; + } + } + } + + /* Create the vendors path, if it doesn't exists already */ + if(!is_dir($this->pathToPPD.$vendor)){ + if(!(@mkdir($this->pathToPPD.$vendor))){ + msg_dialog::display(_("PPD error"), msgPool::cannotCreateFolder($this->pathToPPD.$vendor), ERROR_DIALOG); + return(false); + } + } + + /* Open file handle */ + $fp = fopen($filename,"w+"); + + /* Check file handle & contents */ + if(!$fp){ + msg_dialog::display(_("PPD error"), msgPool::cannotWriteFile($filename), ERROR_DIALOG); + return; + } + if(empty($contents)){ + msg_dialog::display(_("PPD error"), msgPool::incorrectUpload(_("file is empty")), ERROR_DIALOG); + return; + } + + /* Fille file with data */ + fputs($fp,$contents); + @fclose($fp); + + /* Our job is done here */ + return($ppdname); + } + + + /* This function reloads the list of available printers/vendors + $this->ppdListHeader + Compaq => 1 + $this->ppdList + Compaq => Compaq IJ1200 => name => Compaq IJ1200 + link => /var/spool/ppd/Compaq/Compaq-J1200.ppd + ppd => Compaq - Co + */ + function getPrinterReload() + { + if(is_readable($this->pathToPPD)){ + $tmp = @$this->ppdManager->getPrinterList(true); + + $this->ppdListHeader = $this->ppdList = array(); + + /* Sort all available files, and create header (Vendor index) */ + foreach($tmp as $file=>$ppd){ + + if(preg_match("#".$this->pathToModified."#",$file)) continue; + + $tmp2 = split("\n",$ppd); + if(!isset($this->ppdListHeader[$tmp2[0]])){ + $this->ppdListHeader[$tmp2[0]]=0; + } + $tmp3['name'] =preg_replace("/^ -/","",$tmp2[1]." - ".$tmp2[2]); + $tmp3['link'] =$file; + $tmp3['ppd'] =$ppd; + $this->ppdListHeader[$tmp2[0]]++; + $this->ppdList[$tmp2[0]][preg_replace("/^ -/","",$tmp2[1]." - ".$tmp2[2])]=$tmp3; + } + } + } + + + /* Save all options posted from ppd dialog */ + function save_object() + { + if(!((isset($_POST['PPDDisSubmitted'])) && (is_array($this->ppdConfig)))){ + return; + } + + if(preg_match("/w/",$this->ui->get_permissions($this->dn,"printer/printgeneric","gotoPrinterPPD"))){ + foreach($this->ppdConfig as $cat => $obj){ + foreach($obj as $attr => $attributes){ + if(isset($_POST[base64_encode($attributes['_name'])])){ + $this->ppdConfig[$cat][$attr]['_default'] = $_POST[base64_encode($attributes['_name'])]; + } + } + } + } + } + + + /* Save modified ppd */ + function save_ppd() + { + if($this->ppdManager){ + $this->ppdManager->saveProperties($this->pathToPPD.$this->pathToModified.$this->selectedPPD['link'],$this->ppdConfig); + } + } + + + /* Return selected ppd path, if none is selected then false */ + function save() + { + /* return the selected PPD, and in future the selected options too */ + return($this->pathToModified.$this->selectedPPD['link']); + } + + + /* Get Information for a single PPD entry + * This will be shown on top of template + */ + function getPPDInformation() + { + $str = "none"; + if(!empty($this->selectedPPD)){ + $str = $this->ppdManager->loadDescription($this->pathToPPD.$this->pathToModified.$this->selectedPPD['link']); + } + return($str) ; + } + + + /* Display all options from the selected ppd file */ + function generateProperties() + { + /* Set Headline */ + $str = ""; + $feed= ""; + + $s_ppd = $this->pathToPPD.$this->pathToModified.$this->selectedPPD['link']; + + /* If ppd exists and is readable */ + if((!empty($this->selectedPPD['link']))&&(file_exists($s_ppd))){ + + /* If there is no initial Configuration, load it */ + if($this->ppdConfig == false){ + $this->ppdConfig = $this->ppdManager->loadProperties($s_ppd); + } + + /* Create a table */ + $str .= "
"; + + /* Input all data to the table */ + foreach($this->ppdConfig as $cat => $obj){ + + /* Add new category */ + $str .= ""; + + /* Add attributes of the current category */ + foreach($obj as $attr => $settings){ + + /* Skip all entries beginning with _ */ + if($attr[0] == "_") continue; + + /* Prepare data */ + $values = array(); + $name = $settings['_name']; + + if (!isset($settings['_default'])){ + $default = ""; + } else { + $default = $settings['_default']; + } + + $type = $settings['_type']; + + /* Add name to table */ + $str .= "\n"; + } + } + $str .= "
$feed"; + if ($feed == ""){ + $feed= "
"; + } + $str .= ""._("Section")." '".$cat."' 
"; + $str .= "
\n"; + $str .= $name."
\n"; + $str .= "
\n"; + + /* Get all values */ + foreach( $settings as $vname => $value){ + if($vname[0] != "_"){ + $values[$vname]= $value; + } + } + + $acl =""; + if(!preg_match("/w/",$this->ui->get_permissions($this->dn,"printer/printgeneric","gotoPrinterPPD"))){ + $acl = "disabled"; + } + + /* preparing Html output + * Supported types are PickOne/Boolean + */ + + /* If type is PickOne, create a select box */ + if(($type == "PickOne")||(($type=="Boolean")&&(count($values)>1))){ + + $str .= "\n"; + + }elseif($type == "Boolean"){ + + /* If type is Boolean & no values are given */ + $str .= "\n"; + + }else{ + msg_dialog::display(_("PPD error"), sprintf(_("PPD type '%s' is not supported!"), $type), ERROR_DIALOG); + } + $str .= "
\n"; + } + return($str); + } + + function removeModifiedPPD() + { + $path = $this->pathToPPD.$this->pathToModified.$this->selectedPPD['link']; + + if(file_exists($path)){ + if(is_writeable($path)){ + if(!@unlink($path)){ + msg_dialog::display(_("PPD error"), msgPool::cannotDeleteFile($path), ERROR_DIALOG); + } + }else{ + msg_dialog::display(_("PPD error"), msgPool::cannotDeleteFile($path), ERROR_DIALOG); + } + }else{ + msg_dialog::display(_("PPD error"), msgPool::cannotDeleteFile($path), ERROR_DIALOG); + } + } + + function update_ppd_url() + { + $this->SelectPPD("modified/".$this->selectedPPD['link']); + return("modified/".$this->selectedPPD['link']); + } + + function check() + { + $message = plugin::check(); + if(empty($this->selectedPPD['link'])){ + $message[] = _("Please select a valid ppd file or use 'Cancel' to go back to printer configuration."); + } + return($message); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/ppd/class_printerPPDSelectionDialog.inc b/trunk/gosa-plugins/goto/admin/systems/ppd/class_printerPPDSelectionDialog.inc new file mode 100644 index 000000000..8d109d11b --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/ppd/class_printerPPDSelectionDialog.inc @@ -0,0 +1,196 @@ +list = $list; + $this->header = $headers; + $this->depselect = $this->config->current['BASE']; + + if(!session::is_set('printerPPDSelectionDialog')){ + session::set("printerPPDSelectionDialog",array('regex'=> "*")); + } + + /* Order the manufacturers index */ + ksort($this->header); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + $s_action = "none"; + + $printerPPDSelectionDialog = session::get('printerPPDSelectionDialog'); + $regex = $printerPPDSelectionDialog['regex']; + + if(isset($_GET['search'])){ + $regex = $_GET['search']."*"; + } + + if(isset($_POST['regex'])){ + $regex= $_POST['regex']; + } + + $regex = str_replace("**","*",$regex); + $printerPPDSelectionDialog['regex'] = $regex; + session::set('printerPPDSelectionDialog',$printerPPDSelectionDialog); + + + /* Delete requested, check if everything is ok and display confirmation dialog */ + if(isset($_GET['act']) && $_GET['act'] == "del"){ + + /* Get id and check if id is valid */ + $id_to_del = base64_decode($_GET['id']); + $found = ""; + foreach($this->list[$this->Vendor] as $key => $data){ + if($data['link'] == $id_to_del){ + $found = $key; + break; + } + } + if(!empty($found)){ + $this->current_del_id = $id_to_del; + + $smarty->assign("warning", sprintf(msgPool::deleteInfo($found))); + return($smarty->fetch(get_template_path('remove_ppd.tpl', TRUE))); + + }else{ + msg_dialog::display(_("PPD error"), msgPool::fileDoesNotExist($id_to_del), ERROR_DIALOG); + } + } + + /* Deletion confirmed */ + if(isset($_POST['delete_ppd_confirm']) && !empty($this->current_del_id)){ + + /* check if file is removeable */ + $is_ok = false; + if(is_writeable($this->current_del_id)){ + $is_ok = @unlink($this->current_del_id); + + /* Update ppd list */ + if($is_ok){ + foreach($this->list as $vendor => $ppds){ + foreach($ppds as $ppd => $data){ + if($data['link'] == $this->current_del_id){ + unset($this->list[$vendor][$ppd]); + } + } + } + } + } + + if(!$is_ok){ + msg_dialog::display(_("PPD error"), msgPool::cannotDeleteFile($this->current_del_id), ERROR_DIALOG); + } + } + + + /** Added **/ + $list = array(); + foreach($this->list as $cat => $ppds){ + foreach($ppds as $ppd){ + if(preg_match("/^".str_replace("*",".*",$regex)."/i",$ppd['ppd'])){ + if(is_readable($ppd['link'])){ + $list[$ppd['link']] = $ppd; + } + } + } + } + + /* Sort the list alphabetically */ + asort($list); + + if((isset($_GET['act']))&&($_GET['act']=="open")) { + + if((!empty($_GET['id'])) && (!isset( $this->header[base64_decode($_GET['id'])]))){ + msg_dialog::display(_("PPD error"), sprintf(_("Cannot locate vendor '%s' in available PPDs!"), base64_decode($_GET['id'])), ERROR_DIALOG); + $this->Vendor = ""; + }else{ + $this->Vendor = base64_decode($_GET['id']); + } + } + + $div = new divSelectBox("printerPPDSelectionDialog"); + $div ->SetHeight(450); + $div ->SetSummary(_("Printer ppd selection.")); + + $linkopen = " +  %s + "; + $uselink = "%s"; + $dellink = " + "._("delete")." + "; + + if(empty($this->Vendor)){ + foreach($this-> header as $key => $entry){ + $div ->AddEntry (array( + array("string"=>sprintf($linkopen,base64_encode($key),$key),"attach"=>"style='border-right:0px;'") + )); + } + }else{ + $div ->AddEntry (array( + array("string"=>sprintf($linkopen,"",".. ["._("back")."]"),"attach"=>"style='border-right:0px;'") + )); + foreach($list as $key => $ppd){ + if(preg_match("/^".$this->Vendor."/",$ppd['ppd'])){ + + if(is_writeable($ppd['link'])){ + $del_str = sprintf($dellink,base64_encode($key)); + }else{ + $del_str = ""; + } + + $div ->AddEntry (array( + array("string"=>sprintf($uselink,base64_encode($key),$ppd['ppd'])), + array("string"=>$del_str,"attach"=>"style='border-right:0px;'") + + )); + } + } + } + + $smarty->assign("List", $div -> DrawList()); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("apply", apply_filter()); + $smarty->assign("regex", $regex); + + $display.= $smarty->fetch(get_template_path('printerPPDSelectionDialog.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + function save_object() + { + } + + function check(){ + } + + /* Save to LDAP */ + function save() + { + return $this->selectedPPD; + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/ppd/printerPPDDialog.tpl b/trunk/gosa-plugins/goto/admin/systems/ppd/printerPPDDialog.tpl new file mode 100644 index 000000000..e1845673d --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/ppd/printerPPDDialog.tpl @@ -0,0 +1,40 @@ +

P {t}Printer driver{/t}

+{if !$path_valid} +

+ {msgPool type=invalidConfigurationAttribute param=ppdPath} +

+{else} + + + + + +
+ {t}Model{/t}: {$ppdString}  + {render acl=$acl} + + {/render} + + {t}New driver{/t}  + {render acl=$acl} + + {/render} + {render acl=$acl} + + {/render} +
+ {if $showOptions eq 1} +

 

+

L {t}Options{/t}

+ {$properties} + {/if} +{/if} +

+ + {if $path_valid} + {render acl=$acl} + + {/render} + {/if} + +

diff --git a/trunk/gosa-plugins/goto/admin/systems/ppd/printerPPDSelectionDialog.tpl b/trunk/gosa-plugins/goto/admin/systems/ppd/printerPPDSelectionDialog.tpl new file mode 100644 index 000000000..b6cad00b8 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/ppd/printerPPDSelectionDialog.tpl @@ -0,0 +1,48 @@ + + + + + +
+
+

+ {t}Select objects to add{/t} +

+
+
+ {$List} + +
+
+
+

+ [F] + {t}Filters{/t} +

+
+
+ + {$alphabet} +
+ + + + + +
+ + + +
+ {$apply} + +
+
+ +

+ +

+ diff --git a/trunk/gosa-plugins/goto/admin/systems/ppd/remove_ppd.tpl b/trunk/gosa-plugins/goto/admin/systems/ppd/remove_ppd.tpl new file mode 100644 index 000000000..508b1b925 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/ppd/remove_ppd.tpl @@ -0,0 +1,15 @@ +
+ {t}Warning{/t} +
+

+ {$warning} +

+ +

+ {t}The ppd file will be removed from the server and can not be restored.{/t} +

+

+ +   + +

diff --git a/trunk/gosa-plugins/goto/admin/systems/services/cups/class_goCupsServer.inc b/trunk/gosa-plugins/goto/admin/systems/services/cups/class_goCupsServer.inc new file mode 100644 index 000000000..96f65d858 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/cups/class_goCupsServer.inc @@ -0,0 +1,85 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goCupsServer"); + var $attributes = array(); + var $StatusFlag = "goCupsServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goCupsServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $acl; + var $cn = ""; + var $goCupsServerStatus = ""; + var $view_logged =FALSE; + + function goCupsServer(&$config,$dn) + { + goService::goService($config,$dn); + $this->DisplayName = _("Print service"); + } + + + function execute() + { + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + $smarty = get_smarty(); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + return($smarty->fetch(get_template_path("goCupsServer.tpl",TRUE,dirname(__FILE__)))); + } + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Print service"); + #$fields['AllowEdit'] = false; + return($fields); + } + + function check() + { + $message = plugin::check(); + return($message); + } + + function save_object() + { + plugin::save_object(); + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Cups"), + "plDescription" => _("Print service")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 100, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "start" => _("Start"), + "stop" => _("Stop"), + "restart" => _("Restart"), + ) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/services/cups/goCupsServer.tpl b/trunk/gosa-plugins/goto/admin/systems/services/cups/goCupsServer.tpl new file mode 100644 index 000000000..37a3bcc74 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/cups/goCupsServer.tpl @@ -0,0 +1,9 @@ +

{t}Print Service{/t} {t}enabled{/t}

+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/goto/admin/systems/services/kiosk/class_goKioskService.inc b/trunk/gosa-plugins/goto/admin/systems/services/kiosk/class_goKioskService.inc new file mode 100644 index 000000000..dc27c5333 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/kiosk/class_goKioskService.inc @@ -0,0 +1,282 @@ +parent->cn)){ + $this->cn = &$parent->parent->cn; + }elseif(isset($this->attrs['cn'][0])){ + $this->cn = $this->attrs['cn'][0]; + } + $this->orig_cn = $this->cn; + + $this->DisplayName = _("Kiosk profile service"); + $this->baseDir = $this->config->search('environment', 'kioskpath',array('menu','tabs')); + $this->server_path = preg_replace("/%cn/", $this->cn, $this->server_path); + + /* Load list of profiles and check if they still exists */ + if ($this->baseDir == ""){ +# msg_dialog::display(_("Configuration error"), +# msgPool::cmdnotfound("KIOSKPATH",_("Kiosk profile service")), ERROR_DIALOG); + }else{ + $this->gotoKioskProfiles = array(); + if(isset($this->attrs['gotoKioskProfile']) && is_array($this->attrs['gotoKioskProfile'])){ + for($i = 0 ; $i < $this->attrs['gotoKioskProfile']['count']; $i ++){ + $url = $this->attrs['gotoKioskProfile'][$i]; + $this->server_path = preg_replace("/\/[^\/]*$/","",$url); + $name= preg_replace("/^.*\//","",$url); + $this->gotoKioskProfiles[] = array('url' => $url , + 'name' => $name , + 'initial' =>TRUE, + 'exists' => file_exists($this->baseDir."/".$name)); + } + } + } + } + + + function remove_from_parent() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=gotoEnvironment)(gotoKioskProfile=*/".$this->orig_cn."/*))",array("cn")); + if ($ldap->count() != 0){ + $obj= array(); + while($attrs = $ldap->fetch()){ + $obj[$ldap->getDN()]= $attrs['cn'][0]; + } + msg_dialog::display(_("Error"), msgPool::stillInUse(_("Kiosk profile service"), msgPool::buildList($obj)), ERROR_DIALOG); + }else{ + goService::remove_from_parent(); + } + } + + + function execute() + { + /* log actions */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $smarty->assign("baseDir",$this->baseDir); + $smarty->assign("ThisACL",$this->getacl("")); + $display= ""; + + /* Download kiosk profile + */ + if(isset($_GET['getkiosk'])){ + $id = $_GET['getkiosk']; + + foreach($this->gotoKioskProfiles as $profile){ + if($profile['name'] == $id){ + $name = $this->baseDir."/".$id; + if(file_exists($name)){ + $content = file_get_contents($name); + send_binary_content($content,$id); + } + } + } + } + + + /* Add new kiosk profile + * in profile directory ($this->baseDir); + */ + if((isset($_POST['profileAdd']))&&(isset($_FILES['newProfile'])) && $this->acl_is_writeable("")){ + $file = $_FILES['newProfile']; + if(!file_exists($this->baseDir.$file['name'])){ + $tmp = array( + 'url' => "" , + 'name' => $file['name'] , + 'initial' => FALSE, + 'tmp_name'=> $file['tmp_name'], + 'content' => file_get_contents($file['tmp_name']), + 'exists' => TRUE); + $this->gotoKioskProfiles[] = $tmp; + } + } + + $only_once = true; + foreach($_POST as $name => $value){ + + if((preg_match("/^delkiosk_/",$name))&&($only_once) && $this->acl_is_writeable("")){ + + /* Get id, name and path */ + $only_once = false; + $id = preg_replace("/^delkiosk_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $name = $this->gotoKioskProfiles[$id]['name']; + $filename = $this->baseDir."/".$name; + + /* check if profile is still in use */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=gotoEnvironment)(gotoKioskProfile=*".$name.")",array("cn","uid","gotoKioskProfile")); + + if ($ldap->count() != 0){ + + $obj= array(); + $found= false; + while(($attrs = $ldap->fetch()) && ($cnt)){ + $check = preg_replace("/^.*\//i","",$attrs['gotoKioskProfile'][0]); + if($check == $name){ + $obj[$ldap->getDN()]= $attrs['cn'][0]; + $found= true; + } + } + + if ($found){ + msg_dialog::display(_("Error"), msgPool::stillInUse(_("Kiosk profile"), msgPool::buildList($obj)), ERROR_DIALOG); + } + }else{ + if($this->gotoKioskProfiles[$id]['initial']){ + $res = @unlink($filename); + if(!$res){ + if(!is_writeable($filename)){ + msg_dialog::display(_("Error"), msgPool::cannotDeleteFile($filename), ERROR_DIALOG); + } + if(!file_exists($filename)){ + msg_dialog::display(_("Error"), msgPool::fileDoesNotExist($filename), ERROR_DIALOG); + } + } + unset($this->gotoKioskProfiles[$id]); + } + } + } + } + + /* Display list of profiles */ + $divlist = new divSelectBox("KioskProfiles"); + $divlist -> SetHeight (300); + + + foreach($this->gotoKioskProfiles as $key => $val ){ + $del = " "; + if($this->acl_is_writeable("")){ + $del = ""; + } + $divlist->AddEntry(array( + array("string"=>"".$val['name'].""), + array("string"=>$del, + "attach"=>" style='border-right: 0px;width:24px; text-align:center;' ") + )); + } + + /* Assign all existing profiles to smarty */ + $smarty->assign("divlist",$divlist->DrawList()); + $smarty = get_smarty(); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + $smarty->assign("server_path",$this->server_path); + return($smarty->fetch(get_template_path("goKioskService.tpl",TRUE,dirname(__FILE__)))); + } + + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Kiosk profile service"); + #$fields['AllowEdit'] = TRUE; + #$fields['AllowStart'] = false; + #$fields['AllowStop'] = false; + #$fields['AllowRestart'] = false; + return($fields); + } + + function check() + { + $message = plugin::check(); + return($message); + } + + function save() + { + goService::save(); + + $method = $this->server_path."/"; + $method = preg_replace("/\/\/*$/","/",$method); + $this->attrs['gotoKioskProfile'] = array(); + foreach($this->gotoKioskProfiles as $profile){ + if(!$profile['initial']){ + + $contents = $profile['content']; + $path = $this->baseDir."/".$profile['name']; + $fp = @fopen($path,"w"); + if(!$fp){ + msg_dialog::display(_("Error"), msgPool::cannotWriteFile($path), ERROR_DIALOG); + }else{ + fwrite($fp,$contents,strlen($contents)); + $this->attrs['gotoKioskProfile'][] = $method.$profile['name']; + } + @unlink($profile['tmp_name']); + }else{ + $this->attrs['gotoKioskProfile'][] = $method.$profile['name']; + } + } + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + } + + + function save_object() + { + if(isset($_POST['goKioskPosted'])){ + goService::save_object(); + if(isset($_POST['server_path'])){ + $this->server_path = get_post("server_path"); + } + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Kiosk"), + "plDescription" => _("Kiosk profile management")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 100, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array() + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/services/kiosk/goKioskService.tpl b/trunk/gosa-plugins/goto/admin/systems/services/kiosk/goKioskService.tpl new file mode 100644 index 000000000..7d9f0ca54 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/kiosk/goKioskService.tpl @@ -0,0 +1,42 @@ +

 

+ +{if $baseDir == ""} + +{msgPool type=invalidConfigurationAttribute param=KIOSKPATH} + +

 

+
+ +
+ +{else} + + + +{t}Server path{/t}  +
+
+{render acl=$ThisACL} +{$divlist} +{/render} +{render acl=$ThisACL} + +{/render} +{render acl=$ThisACL} + +{/render} + +

 

+
+ +   + +
+ + + +{/if} diff --git a/trunk/gosa-plugins/goto/admin/systems/services/ldap/class_goLdapServer.inc b/trunk/gosa-plugins/goto/admin/systems/services/ldap/class_goLdapServer.inc new file mode 100644 index 000000000..165659b46 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/ldap/class_goLdapServer.inc @@ -0,0 +1,142 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goLdapServer"); + var $attributes = array("goLdapBase"); + var $StatusFlag = "goLdapServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goLdapServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $cn = ""; + var $goLdapServerStatus = ""; + var $goLdapBase = ""; + var $oldBase = ""; + var $view_logged =FALSE; + + var $krb_service_prefix = "ldap/"; + + function goLdapServer(&$config,$dn) + { + goService::goService($config,$dn); + $this->DisplayName = _("LDAP service"); + + /* Suggest a default value */ + if ($this->goLdapBase == ""){ + if ($this->dn == ""){ + $srv= _("fill-in-your-servers-dns-name"); + } else { + $srv= preg_replace("/^cn=([^,]+),.*$/", "$1", $this->dn); + } + $this->goLdapBase= "ldap://$srv:389/".$config->current['BASE']; + } + $this->oldBase = $this->goLdapBase; + } + + + function execute() + { + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + $smarty = get_smarty(); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + return($smarty->fetch(get_template_path("goLdapServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("LDAP service"); + #$fields['AllowEdit'] = true; + return($fields); + } + + + + function check() + { + $message = plugin::check(); + if(empty($this->goLdapBase)){ + $message[] = msgPool::required(_("Base")); + } + if(!preg_match("/^ldap[si]?:\/\/[^\/]+\/.+$/", $this->goLdapBase)){ + $message[] = msgPool::invalid(_("Base"),"","","ldap[si]://base"); + } + return($message); + } + + + function save_object() + { + if(isset($_POST['goLdapServerPosted'])){ + plugin::save_object(); + } + } + + + function save() + { + goService::save(); + + /* Update object relation */ + if(!empty($this->oldBase) && $this->oldBase != $this->goLdapBase){ + $new = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search('(&(objectClass=GOhard)(gotoLdapServer=*'.$this->oldBase.'))',array("cn","gotoLdapServer")); + while($attrs = $ldap->fetch()){ + $ldapServer = array(); + for($i = 0 ; $i < $attrs['gotoLdapServer']['count'] ; $i ++ ){ + $ldapServer[] = preg_replace("/".preg_quote($this->oldBase, '/')."/",$this->goLdapBase,$attrs['gotoLdapServer'][$i]); + } + $new[$attrs['dn']]['gotoLdapServer'] = $ldapServer; + } + foreach($new as $dn => $data){ + $ldap->cd($dn); + $ldap->modify($data); + if(!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Ldap"), + "plDescription" => _("Ldap")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 96, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "goLdapBase" => _("Ldap base")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/services/ldap/goLdapServer.tpl b/trunk/gosa-plugins/goto/admin/systems/services/ldap/goLdapServer.tpl new file mode 100644 index 000000000..7b126faba --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/ldap/goLdapServer.tpl @@ -0,0 +1,13 @@ +

{t}LDAP service{/t}

+{t}LDAP URI{/t}{$must} +{render acl=$goLdapBaseACL} + +{/render} + +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/goto/admin/systems/services/nfs/class_servNfs.inc b/trunk/gosa-plugins/goto/admin/systems/services/nfs/class_servNfs.inc new file mode 100644 index 000000000..105d9565d --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/nfs/class_servNfs.inc @@ -0,0 +1,272 @@ +parent = $parent; + $dn = $parent->dn; + plugin::plugin ($config, $dn); + + $this->types = array("NBD" => "NBD", "CIFS" => "CIFS", "NFS"=>"NFS","samba"=>"samba","netatalk"=>"netatalk","NCP"=>"NCP"); + if($dn){ + $this->host = substr($dn, 3, strpos($dn, ',')-3); + } + asort($this->types); + + $this->charsets = array(); + + if(!file_exists(CONFIG_DIR."/encodings")){ + msg_dialog::display(_("Error"), msgPool::fileDoesNotExist(CONFIG_DIR."/encodings"), ERROR_DIALOG); + }else{ + if(!is_readable(CONFIG_DIR."/encodings")){ + msg_dialog::display(_("Error"), msgPool::cannotReadFile(CONFIG_DIR."/encodings"), ERROR_DIALOG); + }else{ + $fp = fopen(CONFIG_DIR."/encodings","r"); + $i = 100; + while(!feof($fp)&&$i){ + $i -- ; + $str = trim(fgets($fp,256)); + + /* Skip comments */ + if(!preg_match("/^#/",$str)){ + $arr = split("\=",$str); + if(count($arr)==2){ + $this->charsets[$arr[0]]=$arr[1]; + } + } + } + } + } + + if($entry){ + list($this->name, $this->description, $this->type, $this->charset, + $this->path, $this->option, $this->volume)= split("\|",$entry."|"); + $this->is_edit = true; + + }else{ + $this->attributes[] = "name"; + } + + + $this->create_mount_init = $mount; + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + + $smarty->assign("charsets" ,$this->charsets); + $smarty->assign("types" ,$this->types); + + /* attrs to smarty*/ + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + $tmp = $this->parent->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->parent->getacl($name)); + } + + $smarty->assign("name",$this->name); + if($this->is_edit){ + $smarty->assign("nameACL", preg_replace("/w/","",$this->parent->getacl("name"))); + } + $smarty->assign("allow_mounts", $this->parent->allow_mounts); + $smarty->assign("mount_checked", ""); + + $smarty->assign("appleMountsACL", $this->getacl("appleMounts")); + + if (($this->type == "netatalk") || ($this->type == "NFS")) { + if ($this->create_mount_init) { + $smarty->assign("mount_checked", "checked"); + } else { + $tmp = split(",", $this->dn); + $clip = $tmp[0] . ",".get_ou('serverRDN'); + $mountsdn = "cn=mounts," . substr($this->dn, strlen($clip)); + switch ($this->type) { + case "netatalk" : { + $mountdn = "cn=".$this->host.":/".$this->name.",".$mountsdn; + break; + } + case "NFS" : { + $mountdn = "cn=".$this->host.":".$this->path.",".$mountsdn; + break; + } + default : { + continue; + } + } + $ldap = $this->config->get_ldap_link(); + $ldap->cat($mountdn, array('dn')); + $attrs = $ldap->fetch(); + if (count($attrs) > 0) { + $smarty->assign("mount_checked", "checked"); + } + } + } + + $display= $smarty->fetch(get_template_path('servnfs.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + function remove_from_parent() + { + /* This cannot be removed... */ + } + + + /* Save data to object */ + function save_object() + { + if(isset($_POST['servnfs_posted'])){ + + foreach($this->attributes as $name){ + if($this->parent->acl_is_writeable($name) && isset($_POST[$name])){ + $this->$name = $_POST[$name]; + } + } + + if ((isset($_POST['netatalk_mount'])) && (($this->type == "netatalk") || ($this->type == "NFS"))) { + $this->create_mount = true; + } else { + $this->create_mount = false; + } + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(empty($this->path)){ + $message[]= msgPool::required(_("Path")); + } + + if($this->type == "NBD") { + if (!preg_match('/^[a-z0-9-]+:[0-9]+$/', $this->path)){ + $message[]= _("'Path / Volume' must be of format 'server:port'!"); + } + } else { + if (!tests::is_path($this->path)){ + $message[]= _("'Path / Volume' must contain at least one '/'!"); + } + } + + if(!in_array($this->type,$this->types)){ + $message[]= msgPool::required(_("Type")); + } + + // only 0-9a-z + if(!$this->is_edit){ + if(empty($this->name)){ + $message[]= msgPool::required(_("Name")); + } + if(!preg_match("/^[a-z0-9\._äüö]*$/ui",$this->name)){ + $message[]= msgPool::invalid(_("Name"),$this->name,"/[a-z0-9\._äüö]/ui"); + } + } + + if(!empty($this->description) && preg_match("/^[^a-z0-9\._äüö\+ -]*$/ui",$this->description)){ + $message[]= msgPool::invalid(_("Description"),$this->description,"/^[a-z0-9\._äüö\+ -]*$/ui"); + } + + if(!empty($this->volume) && preg_match("/^[^a-z0-9\._äüö\+ -]*$/ui",$this->volume)){ + $message[]= msgPool::invalid(_("Volume"),$this->volume,"/^[a-z0-9\._äüö\+ -]*$/ui"); + } + + if(!empty($this->option) && preg_match("/^[^a-z0-9\._äüö,=\+ -]*$/ui",$this->option)){ + $message[]= msgPool::invalid(_("Option"),$this->option,"/^[a-z0-9\._äüö\+ -]*$/ui"); + } + + /* remove a / at the end of the path, we neither need it there nor + * do we want to check for it later. + */ + if(substr($this->path, -1, 1) == '/') { + $this->path=substr($this->path, 0, -1); + } + + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(objectClass=goShareServer)", array("goExportEntry")); + while($test = $ldap->fetch()){ + if($test['dn']==$this->dn) + continue; + if(isset($test['goExportEntry'])){ + foreach($test['goExportEntry'] as $entry){ + $tmp = split("\|",$entry); + if($tmp[0] == $this->name){ + $message[]= msgPool::duplicated(_("Name")); + } + } + } + } + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* Everything seems perfect, lets + generate an new export Entry + */ + + $s_return = ""; + + $s_return.= $this->name."|"; + $s_return.= $this->description."|"; + $s_return.= $this->type."|"; + $s_return.= $this->charset."|"; + $s_return.= $this->path."|"; + $s_return.= $this->option."|"; + $s_return.= $this->volume; + + return(array($this->name=>$s_return)); + } + + function should_create_mount() { + return $this->create_mount; + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/services/nfs/servnfs.tpl b/trunk/gosa-plugins/goto/admin/systems/services/nfs/servnfs.tpl new file mode 100644 index 000000000..93e1ec0bf --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/nfs/servnfs.tpl @@ -0,0 +1,144 @@ +

 {t}Edit share{/t}

+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + +
+ {t}Name{/t} {$must} + +{render acl=$nameACL} + +{/render} +
+ {t}Description{/t} + +{render acl=$descriptionACL} + +{/render} +
+ {t}Path{/t} / {t}Volume{/t} {$must} + +{render acl=$pathACL} + +{/render} +
+
{t}Server{/t}
+
+{render acl=$volumeACL} + +{/render} +
+
+ + + + + + + + + + + + + + + +
+ + {t}Type{/t} + +{render acl=$typeACL} + +{/render} + {if $allow_mounts == TRUE} +

+{render acl=$netatalkmountACL} + +{/render} + +
+
+ {/if} + + {literal} + + {/literal} +
+ {t}Codepage{/t} + +{render acl=$charsetACL} + +{/render} +
+ {t}Option{/t} + +{render acl=$optionACL} + +{/render} +
+
+

 

+
+ + +
+ diff --git a/trunk/gosa-plugins/goto/admin/systems/services/ntp/class_goNtpServer.inc b/trunk/gosa-plugins/goto/admin/systems/services/ntp/class_goNtpServer.inc new file mode 100644 index 000000000..82c0a7415 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/ntp/class_goNtpServer.inc @@ -0,0 +1,149 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goNtpServer"); + var $attributes = array("goTimeSource"); + var $StatusFlag = "goNtpServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goNtpServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $goTimeSource = array(); + var $goNtpServerStatus= ""; + var $acl; + var $cn = ""; + var $view_logged =FALSE; + + function goNtpServer(&$config,$dn) + { + goService::goService($config,$dn); + $this->DisplayName = _("Time service (NTP)"); + + /* Load arrays */ + $tmp = array(); + if (isset($this->attrs['goTimeSource'])){ + for ($i= 0; $i<$this->attrs['goTimeSource']['count']; $i++){ + $tmp[$this->attrs['goTimeSource'][$i]]= $this->attrs['goTimeSource'][$i]; + } + } + $this->goTimeSource= $tmp; + } + + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /* Here we add a new entry */ + if(isset($_POST['NewNTPAdd']) && $_POST['NewNTPExport'] != "" && $this->acl_is_writeable("goTimeSource")) { + $this->goTimeSource[$_POST['NewNTPExport']]= $_POST['NewNTPExport']; + asort($this->goTimeSource); + } + + /* Deleting an Entry, is a bit more complicated than adding one*/ + if((isset($_POST['DelNTPEnt'])) && (isset($_POST['goTimeSource'])) && $this->acl_is_writeable("goTimeSource")) { + foreach ($_POST['goTimeSource'] as $entry){ + if (isset($this->goTimeSource[$entry])){ + unset($this->goTimeSource[$entry]); + } + } + } + + $smarty->assign("goTimeSourceACL", $this->getacl("goTimeSource")) ; + $smarty->assign("goTimeSource" , $this->goTimeSource); + return($smarty->fetch(get_template_path("goNtpServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Time service (NTP)"); + #$fields['AllowEdit'] = true; + return($fields); + } + + + function save() + { + plugin::save(); + $this->attrs['goTimeSource'] =array(); + foreach($this->goTimeSource as $entry){ + $this->attrs['goTimeSource'][] = $entry; + } + /* Check if this is a new entry ... add/modify */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + if($this->initially_was_account){ + $this->handle_post_events("modify"); + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + $this->handle_post_events("add"); + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Time service"), + "plDescription" => _("Time service - NTP")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 91, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "goTimeSource" =>_("Ntp source")) + )); + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Load arrays */ + $tmp = array(); + if (isset($source['goTimeSource'])){ + for ($i= 0; $i<$source['goTimeSource']['count']; $i++){ + $tmp[$source['goTimeSource'][$i]]= $source['goTimeSource'][$i]; + } + } + $this->goTimeSource= $tmp; + + + } + + function check(){ return array();} + + function save_object(){;} +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/services/ntp/goNtpServer.tpl b/trunk/gosa-plugins/goto/admin/systems/services/ntp/goNtpServer.tpl new file mode 100644 index 000000000..777063151 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/ntp/goNtpServer.tpl @@ -0,0 +1,32 @@ +
+

{t}Time server{/t}

+
+ + + + +
+{render acl=$goTimeSourceACL} + +{/render} +
+{render acl=$goTimeSourceACL} + +{/render} +{render acl=$goTimeSourceACL} + +{/render} +{render acl=$goTimeSourceACL} + +{/render} +
+ +

 

+
+ +   + +
diff --git a/trunk/gosa-plugins/goto/admin/systems/services/shares/class_goShareServer.inc b/trunk/gosa-plugins/goto/admin/systems/services/shares/class_goShareServer.inc new file mode 100644 index 000000000..833239a23 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/shares/class_goShareServer.inc @@ -0,0 +1,413 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goShareServer"); + var $attributes = array("goExportEntry"); + var $StatusFlag = "goShareServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goShareServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $cn = ""; + var $goShareServerStatus = ""; + var $goExportEntry = array(); + var $allow_mounts = false; + var $mounts_to_remove = array(); + var $mounts_to_add = array(); + var $view_logged =FALSE; + + function goShareServer(&$config,$dn) + { + goService::goService($config,$dn); + + $this->DisplayName = _("File service (Shares)"); + + $tmp =array(); + if(isset($this->attrs['goExportEntry'])){ + if(isset($this->attrs['goExportEntry']['count'])){ + for($i= 0; $i<$this->attrs['goExportEntry']['count']; $i++){ + $entry= $this->attrs['goExportEntry'][$i]; + $tmp[preg_replace('/\|.*$/', '', $entry)]= $entry; + } + } + } + $this->goExportEntryList = $tmp; + + $ldap = $this->config->get_ldap_link(); + $avl_objectclasses = $ldap->get_objectclasses(); + if (isset($avl_objectclasses["mount"])) { + $this->allow_mounts = true; + } + } + + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + + if((isset($_POST['DelNfsEnt']))&&(isset($_POST['goExportEntryList'])) && ($this->acl_is_writeable("name"))){ + if($this->allow_mounts){ + foreach($_POST['goExportEntryList'] as $entry){ + $this->deleteFromMountList($this->goExportEntryList[$entry]); + } + } + foreach($_POST['goExportEntryList'] as $entry){ + $this->deleteFromList($entry); + } + } + + if(isset($_POST['NewNfsAdd']) && ($this->acl_is_writeable("name"))){ + $this->oldone = NULL; + $this->o_subWindow = new servnfs($this->config, $this); + $this->o_subWindow->set_acl_category("server"); + $this->o_subWindow->set_acl_base($this->dn); + $this->dialog = true; + } + + if((isset($_POST['NewNfsEdit']))&&(isset($_POST['goExportEntryList']))){ + $entry = $this->goExportEntryList[$_POST['goExportEntryList'][0]]; + $add_mount=isset($this->mounts_to_add[$entry]); + $this->oldone=$entry; + $this->o_subWindow = new servnfs($this->config,$this,$entry,$add_mount); + $this->o_subWindow->set_acl_base($this->dn); + $this->o_subWindow->set_acl_category("server"); + $this->dialog = true; + } + if(isset($this->o_subWindow)){ + $this->o_subWindow->save_object(TRUE); + } + + /* Save NFS setup */ + if(isset($_POST['NFSsave']) && isset($this->o_subWindow) && is_object($this->o_subWindow)){ + if(count($this->o_subWindow->check())>0){ + foreach($this->o_subWindow->check() as $msg) { + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $this->o_subWindow->save_object(); + $newone = $this->o_subWindow->save(); + + $this->addToList($newone); + if($this->allow_mounts){ + if($this->oldone != NULL) { + $this->deleteFromMountList($this->oldone); + } + if ($this->o_subWindow->should_create_mount()) { + $this->addToMountList($newone); + } + } + unset($this->o_subWindow); + $this->dialog = false; + } + } + + /* Cancel NFS setup */ + if(isset($_POST['NFScancel'])){ + $this->oldone = NULL; + unset($this->o_subWindow); + $this->dialog = false; + } + + /* Execute NFS setup dialog*/ + if(isset($this->o_subWindow)){ + return $this->o_subWindow->execute(); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + /* Set acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + $smarty->assign("createable",$this->acl_is_createable()); + $smarty->assign("removeable",$this->acl_is_removeable()); + + $tellSmarty= array(); + ksort($this->goExportEntryList); + foreach($this->goExportEntryList as $name=>$values){ + $tmp = split("\|",$values); + $tellSmarty[$name] = $tmp[0]." ".$tmp[4]." (".$tmp[2].")"; + } + $smarty->assign("goExportEntry",array_keys($tellSmarty)); + $smarty->assign("goExportEntryKeys",($tellSmarty)); + return($smarty->fetch(get_template_path("goShareServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("File service (Shares)"); + #$fields['AllowEdit'] = true; + return($fields); + } + + + function save() + { + plugin::save(); + + /* Arrays */ + foreach (array("goExportEntryList"=>"goExportEntry") as $source => $destination){ + $this->attrs[$destination]= array(); + foreach ($this->$source as $element){ + $this->attrs[$destination][]= $element; + } + } + + + /* Process netatalk mounts */ + if($this->allow_mounts) { + $this->process_mounts(); + } + + /* Check if this is a new entry ... add/modify */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + if($this->initially_was_account){ + $this->handle_post_events("modify"); + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + $this->handle_post_events("add"); + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + } + + + function check() + { + $message = plugin::check(); + return($message); + } + + + function save_object() + { + if(isset($_POST['goShareServerPosted'])){ + plugin::save_object(); + } + } + + function addToList($entry){ + $key = key($entry); + $this->goExportEntryList[$key]=$entry[$key]; + } + + function deleteFromList($id) + { + /* Check if the share is used by someone */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(|(gotoProfileServer=*|$id)(gotoShare=*|$id|*||*))", array("cn")); + if ($ldap->count() != 0){ + while ($attrs= $ldap->fetch()){ + $obj[$ldap->getDN()]= $attrs['cn'][0]; + } + msg_dialog::display(_("Error"), msgPool::stillInUse(_("share"), msgPool::buildList($obj)), ERROR_DIALOG); + + } else { + /* Finally remove it */ + unset($this->goExportEntryList[$id]); + } + } + + function process_mounts() { + + $clip = "cn=" . $this->cn . ",".get_ou('serverRDN'); + $mountsdn = "cn=mounts," . substr($this->dn, strlen($clip)); + + $mounts = array( + "objectClass" => "container", + "cn" => "mounts" + ); + + # load data from mounts container + $ldap = $this->config->get_ldap_link(); + $ldap->cat($mountsdn, array('dn')); + $attrs = $ldap->fetch(); + + # mounts container not present yet, so we create it + if (count($attrs) == 0) { + $ldap->cd($mountsdn); + $ldap->add($mounts); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_ADD, get_class())); + } + new log("modify","server/".get_class($this),$mountsdn,array_keys($mounts),$ldap->get_error()); + } + + # remove deleted mounts from the container + foreach ($this->mounts_to_remove as $entry) { + $mount=$this->returnMountEntry($entry); + $mountdn = "cn=".$mount["cn"].","."$mountsdn"; + + $ldap->cat($mountdn, array('dn')); + $attrs = $ldap->fetch(); + + if (count($attrs) != 0) { + $ldap->rmdir($mountdn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $mountdn, LDAP_DEL, get_class())); + } + new log("remove","server/".get_class($this),$mountdn,array_keys($mount),$ldap->get_error()); + } + } + + # add new mounts to the container + foreach ($this->mounts_to_add as $entry) { + $mount=$this->returnMountEntry($entry); + $mountdn = "cn=".$mount["cn"].","."$mountsdn"; + $ldap->cd($mountdn); + $ldap->add($mount); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $mount, LDAP_ADD, get_class())); + } + new log("create","server/".get_class($this),$mountdn,array_keys($mount),$ldap->get_error()); + } + } + + function addToMountList($entry) + { + if($this->acl_is_writeable("name")){ + $key = key($entry); + $type = $this->get_share_type($entry[$key]); + if (($type == "netatalk") || ($type == "NFS")) { + $this->mounts_to_add[$entry[$key]] = $entry[$key]; + unset($this->mounts_to_remove[$entry[$key]]); + } + } + } + + function deleteFromMountList($entry) + { + if($this->acl_is_writeable("name")){ + $type = $this->get_share_type($entry); + if (($type == "netatalk") || ($type == "NFS")) { + $this->mounts_to_remove[$entry] = $entry; + unset($this->mounts_to_add[$entry]); + } + } + } + + function get_share_type($share) + { + $tmp = split("\|", $share); + return $tmp[2]; + } + + function returnMountEntry($entry) + { + $item = split("\|", $entry); + $name = $item[0]; + $description = $item[1]; + $type = $item[2]; + $charset = $item[3]; + $path = $item[4]; + $options = $item[5]; + + switch ($type) { + case "netatalk" : { + $mount = array( + "mountDirectory" => "/Network/Servers/", + "mountOption" => array( + "net", + "url==afp://;AUTH=NO%20USER%20AUTHENT@".$this->cn."/$name/" + ), + "mountType" => "url", + "objectClass" => "mount", + "cn" => $this->cn .":/".$name + ); + break; + } + case "NFS" : { + $mount = array( + "mountDirectory" => "/Network/Servers/", + "mountOption" => "net", + "mountType" => "nfs", + "objectClass" => "mount", + "cn" => $this->cn .":".$path + ); + break; + } + default : { + continue; + } + } + return $mount; + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + $tmp =array(); + if(isset($source['goExportEntry'])){ + if(isset($source['goExportEntry']['count'])){ + for($i= 0; $i<$source['goExportEntry']['count']; $i++){ + $entry= $source['goExportEntry'][$i]; + $tmp[preg_replace('/\|.*$/', '', $entry)]= $entry; + } + } + } + $this->goExportEntryList = $tmp; + $this->goExportEntry = $tmp; + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("File service (Shares)"), + "plDescription" => _("File service - Shares")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 90, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "name" => _("Name"), + "netatalkmount" => _("Apple mounts"), + "description" => _("Description"), + "type" => _("Type"), + "charset" => _("Charset"), + "path" => _("Path"), + "option" => _("Option"), + "volume" => _("Volume")) + + )); + } + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/services/shares/goShareServer.tpl b/trunk/gosa-plugins/goto/admin/systems/services/shares/goShareServer.tpl new file mode 100644 index 000000000..190ea6e2e --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/shares/goShareServer.tpl @@ -0,0 +1,33 @@ +

{t}Shares{/t}

+ + + + +
+{render acl=$nameACL mode=read_active} + +{/render} +
+ +{render acl=$nameACL} + +{/render} +{render acl=$nameACL mode=read_active} + +{/render} +{render acl=$nameACL} + +{/render} +
+ + +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/goto/admin/systems/services/syslog/class_goLogDBServer.inc b/trunk/gosa-plugins/goto/admin/systems/services/syslog/class_goLogDBServer.inc new file mode 100644 index 000000000..69a05f2ba --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/syslog/class_goLogDBServer.inc @@ -0,0 +1,111 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goLogDBServer"); + var $attributes = array("goLogAdmin", "goLogPassword" , "gosaLogDB"); + var $StatusFlag = "goLogDBServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goLogDBServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $acl; + var $cn = ""; + var $goLogDBServerStatus = ""; + var $goLogAdmin = ""; + var $goLogPassword = ""; + var $gosaLogDB = "gomon"; + var $view_logged =FALSE; + + + function goLogDBServer(&$config,$dn) + { + goService::goService($config,$dn); + $this->DisplayName = _("Syslog service database"); + } + + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + return($smarty->fetch(get_template_path("goLogDBServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Syslog service database"); + #$fields['AllowEdit'] = true; + return($fields); + } + + + function check() + { + $message = plugin::check(); + if (empty($this->goLogAdmin)){ + $message[]= msgPool::required(_("User")); + } + if (empty($this->goLogPassword)){ + $message[]= msgPool::required(_("Password")); + } + if (empty($this->gosaLogDB)){ + $message[]= msgPool::required(_("Database")); + } + return($message); + } + + + function save_object() + { + if(isset($_POST['goLogDBServerPosted'])){ + plugin::save_object(); + } + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Logging database"), + "plDescription" => _("Logging database")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 97, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "start" => _("Start"), + "stop" => _("Stop"), + "restart" => _("Restart"), + "goLogAdmin" => _("Admin"), + "goLogPassword" => _("Password"), + "gosaLogDB" => _("Database")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/services/syslog/class_goSyslogServer.inc b/trunk/gosa-plugins/goto/admin/systems/services/syslog/class_goSyslogServer.inc new file mode 100644 index 000000000..8758ce2ef --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/syslog/class_goSyslogServer.inc @@ -0,0 +1,83 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goSyslogServer"); + var $attributes = array(); + var $StatusFlag = "goSyslogServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goSyslogServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $acl; + var $cn = ""; + var $goSyslogServerStatus = ""; + var $view_logged =FALSE; + + function goSyslogServer(&$config,$dn) + { + goService::goService($config,$dn); + $this->DisplayName = _("Syslog server"); + } + + + function execute() + { + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + + $smarty = get_smarty(); + return($smarty->fetch(get_template_path("goSyslogServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Syslog server"); + #$fields['AllowEdit'] = false; + return($fields); + } + + function check() + { + $message = plugin::check(); + return($message); + } + + + function save_object() + { + plugin::save_object(); + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Logging service"), + "plDescription" => _("Logging service")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 88, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array() + )); + } + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/services/syslog/goLogDBServer.tpl b/trunk/gosa-plugins/goto/admin/systems/services/syslog/goLogDBServer.tpl new file mode 100644 index 000000000..b2d5926fb --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/syslog/goLogDBServer.tpl @@ -0,0 +1,35 @@ +

{t}Logging database information{/t}

+ + + + + + + + + + + + + +
{t}Database{/t}{$must} +{render acl=$gosaLogDBACL} + +{/render} +
{t}Logging DB user{/t}{$must} +{render acl=$goLogAdminACL} + +{/render} +
{t}Password{/t}{$must} +{render acl=$goLogPasswordACL} + +{/render} +
+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/goto/admin/systems/services/syslog/goSyslogServer.tpl b/trunk/gosa-plugins/goto/admin/systems/services/syslog/goSyslogServer.tpl new file mode 100644 index 000000000..5fa1c6351 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/syslog/goSyslogServer.tpl @@ -0,0 +1,9 @@ +

{t}Syslog Service{/t} {t}enabled{/t}

+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/goto/admin/systems/services/terminal/class_goTerminalServer.inc b/trunk/gosa-plugins/goto/admin/systems/services/terminal/class_goTerminalServer.inc new file mode 100644 index 000000000..30bcf1527 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/terminal/class_goTerminalServer.inc @@ -0,0 +1,180 @@ +DisplayName = _("Terminal service"); + + $tmp = array(); + if(isset($this->attrs['gotoSessionType'])){ + for($i =0; $i < $this->attrs['gotoSessionType']['count'] ; $i++){ + $tmp[] = $this->attrs['gotoSessionType'][$i]; + } + } + $this->gotoSessionType = $tmp; + #$this->gotoSessionTypes= array("LDM","XDCMP","RDP","CITRIX"); + $this->gotoSessionTypes= array("LDM","XDCMP", "SHELL", "RDP", "TELNET"); + } + + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + + $tmp = $this->plinfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + $tmp = array(); + foreach($this->gotoSessionTypes as $type){ + if(in_array($type,$this->gotoSessionType)){ + $tmp[$type] = TRUE; + }else{ + $tmp[$type] = FALSE; + } + } + $smarty->assign("gotoSessionTypes",$tmp); + + return($smarty->fetch(get_template_path("goTerminalServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Terminal service"); + #$fields['AllowEdit'] = true; + return($fields); + } + + + function save() + { + plugin::save(); + + if(!$this->goXdmcpIsEnabled){ + $this->attrs['goXdmcpIsEnabled'] = "0"; + } + + $this->attrs['gotoSessionType'] = array_values($this->gotoSessionType); + + /* Check if this is a new entry ... add/modify */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + if($this->initially_was_account){ + $this->handle_post_events("modify"); + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + $this->handle_post_events("add"); + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + } + + + function check() + { + $message = plugin::check(); + return($message); + } + + + function save_object() + { + if(isset($_POST['goTerminalServerPosted'])){ + plugin::save_object(); + + $this->gotoSessionType = array(); + foreach($this->gotoSessionTypes as $attr){ + if(isset($_POST['gotoSessionType_'.$attr])){ + $this->gotoSessionType[] = $attr; + } + } + + if($this->acl_is_writeable("goXdmcpIsEnabled")){ + if(isset($_POST['goXdmcpIsEnabled'])){ + $this->goXdmcpIsEnabled = true; + }else{ + $this->goXdmcpIsEnabled = false; + } + } + } + } + + + function PrepareForCopyPaste($obj) + { + plugin::PrepareForCopyPaste($obj); + $tmp = array(); + if(isset($obj['gotoSessionType'])){ + for($i =0; $i < $obj['gotoSessionType']['count'] ; $i++){ + $tmp[] = $obj['gotoSessionType'][$i]; + } + } + $this->gotoSessionType = $tmp; + #$this->gotoSessionTypes= array("LDM","XDCMP","RDP","CITRIX"); + $this->gotoSessionTypes= array("LDM","XDCMP", "SHELL", "TELNET"); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Terminal service"), + "plDescription" => _("Terminal service")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 87, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "goXdmcpIsEnabled" => _("Temporary disable login")) + )); + } + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/admin/systems/services/terminal/goTerminalServer.tpl b/trunk/gosa-plugins/goto/admin/systems/services/terminal/goTerminalServer.tpl new file mode 100644 index 000000000..2555113d7 --- /dev/null +++ b/trunk/gosa-plugins/goto/admin/systems/services/terminal/goTerminalServer.tpl @@ -0,0 +1,28 @@ + + + + + + + +
+

{t}Terminal service{/t}

+{render acl=$goXdmcpIsEnabledACL} + +{/render} + {t}Temporary disable login{/t} +
+

{t}Supported session types{/t}

+ {foreach from=$gotoSessionTypes item=item key=key} +  {$key}
+ {/foreach} +
+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/goto/contrib/resolutions b/trunk/gosa-plugins/goto/contrib/resolutions new file mode 100644 index 000000000..92338058b --- /dev/null +++ b/trunk/gosa-plugins/goto/contrib/resolutions @@ -0,0 +1,4 @@ +480x320 +640x480 +1024x768 +1280x1024 diff --git a/trunk/gosa-plugins/goto/help/guide.xml b/trunk/gosa-plugins/goto/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/goto/html/images/application.png b/trunk/gosa-plugins/goto/html/images/application.png new file mode 100644 index 0000000000000000000000000000000000000000..671fc7db7cd9cf4e39a13584429f1c6220ad1315 GIT binary patch literal 3839 zcmWlcd03L!7sp=~K?Oy_jY_~w#nDL-GtC81bIUQuENz(t7u0fLGEK{TK@2s`G%J@D zb!?sNr;Ro_Qz?cEmW@oSm5sZ(rQ*H-?~net_dNHXbMAAV@A=&C%?%9j*3#Ul2>^hW zua9StD%yTu>L}G70$Bm5bTNl3>{2 z6NdaoAPYe1VC;#?oL{MSJoxCOO{IWukd6p%4=a?yo#y($oI6bj*Od`NPvUKZ;n>3J z4A?uRB2WCTl^51b2+a@(7|0wFzFJLnEmnRrWKxjD4(w`yoDidq(WzGmgyyF9&2~)pa{a6_leue*ToPlo!awIJ;OB*m=%=Tc zaIVm?bUrG>yyXo5Lw2?@ydA9|PCr|L)AmI*M9x>hwjba}Ab+@U?X9#8GATn;Lni-X zB@=v0p+H9R=)M9$C3ZR_%=hZPAM&wVGM{2Mca>Jnk#f(+S@wkAjfPB|=1AJzO7ZA{ zt=q{Wl)s?HAM)`_0bp5@*2>oc0-J(BWS+lR1y%1fx{iB2ulPzAett}+xqyq82PVJv ziSqxEh)~w|%lH~{QsBS^QnOJLw9+|SBC|ml;xK}Xf2#``Zvs6+aO)_E2ZXmA*;^%a zL3wHWZdI1lf`sW_=*8@C=SfrwOSaWS@``-xMW?9yrDn}dqn4EPby)DSR_RIJ$n@36 zVMaITU*kYLU&Qh%`*tWtwZ_BA)rY|~Ni3H~+KSoaNZ>=sesSD?LXvZR7gP|?&P zk}bKGZ$P>FP~ z;Bv4$;CT&N8F3F^7s=64d|L;F#fD9G>c{JCODB)p&2njWa=8{&pnGtf3K(Oo4;z&h zc0~vcURAnubZS$VaZ*~ZybHT6zz!R}r6BxJ%JJm6*}SBL!$;h3W4X1BE-)R2f8z^I zl}$LeWvbouNguGOS+NyoJ2d~4Px4t#qV zo0#=(jO;CVy^&(jszzRGX|t2!<3!wtkMXQJ+wE6Ef*(D|c9^xbb6@~1uCqAHGI@k3 zXj8Mj?TN2{U0*`v6 z&=^3~FiZ&DeZ{^ssCSM@47|t*Us*#;aJS0QezYxT?fry8hbK&5ls_VZk%PYX-hKA~ zSOu%TWg;P4+^5*o#!crCRWqLzq^a<}kCDEC5?Mh5fcX)si8=T6Dkj;!rYk$GA7|~v zEY_wS$MO#TQPY2fj4-slPNRBkF6f0ZVxJ>k4GpQKxu0bQ`n2l|!-k)#An%XOD#!Xf zluf;(qhfVA+&8Nq!fs{&L0H~A;!-#8st4j-?hRozFTD90hV5&De`bIg2-+-&A_m+H zx}aO$Q5Xcn+uJ-u;Lrc>3ewgoHgt9_mv2XN_TR(+s8#l6%Ie$TLQm?_90}pyH;k* zbwk+RYyOO9kP)$YMY{%{L8VBz2v=Fjzg<3+A6Pg+1a7Az5a1;}1=q83d73WTKNaFs z`ERc@eHKIJao@N0>|7w<;rDjP#B~y6Bh_A6a@eIUZ=oa=gUl zVlsT#hx_V<`j3{S|e;}(TbN1t_7rJ;ldTq^>CMZARX3-oF zT+Xd?U#UZFlrY1Z1#6!nLYA7N(X?w2yMK5Te#K`B+dU12&;AhzkLGBnm~&%j%8oBG z^am>j4T8UU|Ft_2Vi@C=%vFfC?We3m5i)E{DNgVAaFNgO2+#3avDPP4=I_y-M|bjC zL0}zo>IZ8q$?XT4%U_E80jQz_o3Qi(yJ0Y0l&{F+8^)-c);v(4>w|%^b@ahIJiiBz zYiB@40{OeSIJIl30#Nnn`A&?br5a3`E$}`iWZS`WC6uA7+p-vFMF#^BaGkt`n^o&Jh@E!MkcB%?~ zSQVar*(3lAKZJ1~q8wI8qdvyRBMf`z!-c7Xrcyk_ONQ;RCGo;#bm{VxsG+^B4Ha8v zSN#ZC*n^e!C{{1?2fjRc47xRenj2{fSl)L%G86Rqhl+f@?BX704Cdu3BU0C8BtfPg zUc4u!`yAoD(tCGPzSLmkabLbD!IUQbIiG=3AWmO0F0FU!DHWXsD0}$DWUHgP`Pa&r z?8Om0LVW&M2N7IbncI0{c;gg|2V_PLLeK%FVg-LRA_M<_E56TLv%-hT)w3+qRke2(!$!yv9ncYdT>L#k!UYRr*GEnI|XT#2#(Q|6_ZL4eAF!?qB7Q1G=o@?(wM7qxFopdaS%_BRQHjR`MHjLtbvTF+)aF~68aiYJ^QIc>{)aDw@OLgO8YLCxWe(9_bMW)IZ zB80R%4oBomi*NKRFB&rBgtQ!$87{3XE7g;OUZ?vPKYzGzYsOiz*x}8(*Qyz>$=kd> zjoG3JGOvDu{w=qXAfADcsd)(FR)1JbToZ!x?x)XTc2ggpO^x279b+QiS4u&Qoq^LX zmDKTN#Z1s*$6tw!sjEx*t`^P8wY6__$JQIo*_U?KO_LkNxLRboG)QGZ(+__i7Zn|h zgcOH_1P2t=Bn9P0G)VPAUACY3?@UChYz-rx45=U_^fj%FO|*TxGt=jkG^hMx6~gRP zo8aRZ%Zm2s9jd&^_h3@fI4K*)wwQq@#X7kjIs&8a3((%iPH}JuFmH!y$m>mK(iH3S zj}t4J(^C~otHtv>wq5_2Jg8VNsoXMWya9FI2QrJaP$fI_0BP?KTBX<@xO~CzZK2vC zNRHp#I*V&?hwJB6RBfM%4&6OZFVaS+lgocx;uUPIXSj+rlU?u!s~1TPzd)G3w+-6d jTLO^M!mtN$9TuSGjG>HG301Z<2_xC@Be}94W z&(941etlX15I`&-L*0$U8Gim^VEFlif#JtbApQZx-x(Ob1L^PIp%|GB#Q&HW7=8gg z3^bSFKNG~IjEtXv0=p6b0*Hx|jfLSS(6C=13^e>V2>*uSKMV|ifEefy2u5Q6L&7Mb z$;`^Y$iT(`5I`(^tp6FTB@r4x2K|8=@&^h3MrQv;(7%8G2kQgH7080WKrbv_$HV{- zKrH<13=9r(2n%P=p3RV&no2NoK!$(}`}YqRw*UTvF^K=`=YNKMN0=A@0*Hy6RDsJ- z7#pMjAb?mH{t;*JkEwE~$tnE-Rzo3t1_potV*3A&ymSn6EwZ5?_Ftelhz1BC7HmNQ z3TI@1EzA+Y@gEv-Fbg0C0|XEYHWw2UdDvWx925Wn#6nEuffU2S6gko`!xljU1Q5Yg zflVVmLqV1T1Bn43fbd2hE{(ViMFa&v0O1S@WKCc^M+ul!fjJhI{GxB5MH*Bc)S&oJsRDpzPA!c9=04)9g{Dsg!i{NY^{SR3VO8@)&4`*t+_2fGPKmak)s?GxlASMPH c0e}Dl0I565QA{BqJOBUy07*qoM6N<$f;X}fV*mgE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/clock.png b/trunk/gosa-plugins/goto/html/images/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..dca2c7ef8542c0a3a2b13d47a4e9b5f0c0a2408b GIT binary patch literal 875 zcmV-x1C;!UP)xCLv9sBYt<+FU4ojtm6crTOAX>OofCQ*; ztBR<&RY;tG!T}C&M(V9e+_vw;#Zzy;|H|Qmd(=!! zBh{gzNiK=7O2jXsC@%d24~Oc}C!fhr|5(LZpSW9~v=6-d;+yAReKg}I-L0XkG6A0l zT~iSx2}P4}O`Bq_Ki7o!Mq~@>HROCJ3sVDQb~8Kgo7HgM`p(bO8~10 zt_Wk<934?Vy@?<@YDBm-U&%C>@XpQRou5Sy!cSk{ zpe^KO@NgfZ2)*s#OCNs-ypM~4`myZ4X%YIc#s5}r9y?9Yaz15LCQvn58pV5B!H$tU3AzI zO=6usuKBy-a?`Atk^u3r2cHJU!ZzdItCbnh&hiuv+AW5)N zr0Kx=HcTyfF~&X`2m4nEsFmlYO5y#-pQ~D`&=rtT6d6@+c}4fJHv2nyF~;bEm+!y0 zwE5?E@0|kj5`b&f|Hx1OQ1#zCG`wsFMYm}JBBc$RTEk)0_A;~TVR9?Nw9>GiGc#(kzQ-d#3zHkuknMPj;GW8%)DGxEXf#CK~#90?V4X`9a$a6Kj+>_nnYVx=$|dZDobg1MQWP5R3vF( zu`Ng+)OE^AR)k$#+Vw%(eF?6@zS$~*Mc8<$wbV8!z44(GTj-)&lAs2`hqR$oWJ}tG zCfVdB+vFxQcV^Ddhq-ezcQSYGOq%T?_=Cfp^LKvV@AsVFIWu$N|Mtn6TBk9Baip65 zXH1!dC$>gwX^)vNUM^i1yGzyD)b#8_iLb?n$N z7ktN~cDV2>{`~F@Y{%h^S6`b1C>D!P0}Fr+Xx3@5uN6RUc6OG_moIbt_;CPwdwUre z7~uWRT>yORcm0Ugob7)H%c%f-EI`&GsWMGdpFDYzJ$v@BVZ#Q18j$xpcOfEZtr0DV z)@V=ji*FvqavXmB)=ybaAZt+|2cVQfDTU)W0QC3w1MszXeu=xhjM3JHh(@#q5#Aj9 z1EMv3Klw4s6&uz`k*o^T*zfAjz%Ms#JKd z@LL`SNLB^v*pCC?c^)Fd-`+k2z?XjTeLUOdGdp)6S|j2s@|(ZDi)hVDuY89k+s0g@ zB3TrOWj_i+MCwv&YbyY|UVaJJvf29OJw6aEXiwMFIq=-`EL%3EzuY7XkSq!$?ismU z4z2a7a@)2M5$^u+PXIh~=tVrc!e7F=og3iv)RL(|OkF$k^ z1+>=8|NB1xbZpy-=Q!->eYv*K|NgU|*LM0akYcg;Y!#3d2Ov7Fa>2%=wO%z{qERR) zj{_2y=H})Q5z3QOD5WquI?#^8&ey(IH|F^GI3pt?L3TUU>7)P-A3iMLhrmXb&*#bI z>SvPHnwFLp9LJ%hr3KIP$mjEQZNg(l7rEzoY~Q|})2C0Plp>eQv1Q8^lv12Jb&83J z33_{b0T>tRjSPl!8&4N|&(~|Aymuwy_Sv*===FyVH!s0R?EiJQ9UZ(Q?TrNjnUmvh?LL)X=Eh`$HG{rmUXv}qHYH*Y4N&tn({Q&UrjNbQJn^ypEF#o{Z#JTM1T z0ssw76_c@QFbso2p-_{wHn{5{6$|Y+NTq@}HsUyF$M*BCCwzYajy(b3V-MCbPH z+t<{|EEe9mW2_U1tfBt+^_8}5RqjPa&WP}?x zZmhaaI;2G%N>i7hKqC8)aGY-Bd^2kXu2Egk@AmE6T)K3L!NI|%?AHN^-nhHFo9^!J z+7t?|!)@bIGjJK|nz9cuJMnr=p>VsT_J(29>h9jX%Y_RU7#tk@E-Bcr1CVz9he0+w z>!-137_C|=_93zcvP_{k(9JBV{k?nl7#<$x`t|Ft0w0lreTY#Y%M{A;C*X6;32aJx6GBh;wLo%>m2O#dohYlTzy>7&O*s=h-c=00b?d{;R zKSfIR8v@w9dw1d)C=Ni9(@D;k%Vj1fC*P=MXYiv>D)t)!2=Ym99GU@0Yt`5D7XH-v zfDG&>0%&Au07UDO#ps~SX~2O0rN0+M7^1%mI(nZFOz z6gYF{%u1nQ)WTZ;&UM|ohwZ?E@^F2lwsHO1+S&*?9yp&GMDV!Y25bR72W$m4@c7@5 z)0)PgHq-botUknF6PXsVSM4-k&A0O8K2i&Q)S0jPka_{bij#SK6+Tt{eUe|Ok$Of47|dXI&bjA*?|JVURpn;T{r4aE#Psy1KR+-q5QvBXBuRoX25T+G7*vU7 zXJ;=z@xSuM8=zJ?2M(KVw}Z8YH{W`L)89JHpPqP}s2uUoL!aO;p8DJ+ zfWE#;;WfSYgyN;JAOKY*2m&>r@!)ap*0&r4Z^Q}^>1pISVX||W7C_@U;p~Ec<)J) zWHWRcV+d?O<%Woprs?MM7ryv~Un%$GXHNdVbtnYjMmm1{_$L9=?RHU=)TMwSib6yM zgCU3lj4_h{d-m)pyyoc02dUx)}O zxYTjWEfXv+FOeh(XU?2GeDUIie=h=}$O%|Lopa?h)+N zsvv@~hP`|Da{l~JSXo&a=*h{QjKYHl59a0F;hg)y_U#kntE(;Ec;ihH=fD_HMN!xU zkbyxJQKh-mB#ygGO-()DTyDO!b!_ZtZU7>=!)U|%bVs8x#GymKnM=T_Q_n?F7~V=| z3F)tS{Z~>rJT#nZabQGIjDaifT_Fl1T;ejD@8txeg6}=67sMzCgi*-SQj^x|Dvd3T zn)gxxTDbtMuC3+;uxn&wgi2o@Q5b=_9_uZFwU%mMK%5BeIK^YJs))(VsZuUc?ynG) zOM_#hBh}mhHWEt?+8Kr+p$$=0Qs+t26ji|*Ww;jbSKq$EZ+)o7)L5Cdbx$fD6-8B0 z3}F~zp!&``KidY(<^phIVtJpmEs7$-C_+W?K2u&r>8n^?`+1AcJ^32{_Nhsp|I7zy zbp$I)iX!4M20|MGhI+j|lvjx`2!g!4LqQM_1Qtb6(ajRVIbm|R#MF^-9{6Ab@k*o5 zkT}aqC&de(nJijKYY9w%h-Au(f-2oqnHmY%y)ELtoh7{YOr1E# z_Th-{J$VOfab`j`umoX19LN2+0R%Sp31F=SYcc>T7$fvoERrgnB&8jD+KERI*5(o} zdqWr~DuP#w#bPj|sqf1TV54)&Lk5E(OIB8ua>;P+a*MISkgfH8j4?PTjMM^7J~~Nl zAOuy?jS}8uyb}}S`7?2D?RyH)v;T5QxiH)1W1svXwF4upeB)kv-T@-Kd1akHI6T5y z$01(9W|`Vp!@{+N+`Cu|fGVQkCB-|>ZDSR-eq@}7?x}-)wvYJQA5GGU9WEBU z5dsq-l4a>6N!D`%=-ELYYHdaz6;e@}>y8gjRQS?AUgfdh8O5XQof_uk$Lj=XmxWe} zSIu_c2tG}5Y0AX*?Va2J3WU+7h~QJ7f$*O7Sh;s+nKcRd(sNfaz{l=VD$-?k-QjyX zt{996UIb$db91vRxdHrg1O7f}CP@;UPcuJI@Tt%-G0*<-IDh%iYrOcnY}TF4DxeLc7Ny&Hug-Z>BfGGAzUr7v_m_lH~f?N*1?PFDK}*E2P0 zF~;NK6t8~0QZDBQux;zsyu26IS}kIi;Kgq`q=>NYg{zC}bX|%!5#IO8>0W7Vt>V3q zq%jt|Qms|nxd8-W?o7Ohs*mGtAYM=e@tHqZqlg-Uz-A6Bf{^XLilTr|Q{rxns4fBd zoj5Ne(DdH7;y9^$?@_P4k|JyF%NA;7OSPmJ?VXS)qFK^)&XKqTYs_4$m8%uV07PMw zmv_lpJJ;=W>n_b^K%xSwlmmEuHsw2SdFuUe_jrgAy&i>3_S-?X)1^8%cs{rG6gz>m zI#@m1Zny79l7w=(+-p{pN~nDAXTSyF@8gh9-w%Ni61_f|i{lvQJpZwOVTvL&L*aRU%5Ie}I2|@n87-Q%_NE4Ds|c&#xmtKBZi{5&SGC|Uo2D$V6(R+d*78XEe+;=*Df z1;T~JVgma62cBPATzqtXex8xx5sWc(+8sXn(WBgT*B+|XDuaWAEG{n6?Z(6|W_ET4 zU{+PXU1)K@?Ao=fsEqKz2Om6h$L>4!jgF2|tyZzd&~CTsbUN4|V4%MrwHdI5YuC88 zaE)`Xo%`zp2M(P0?4N(O7=WVM1Ke}ZJ)e5`;fKF5xnq)d|L5mio115OrOB(W{x^dI zgX}+eALUYosi`T%!1;6MXa3=v-`wA9E?p_QcA*f|J@2AOHAAOx=1bhdy$ck&zMF?KXdM;>7naUcB%V;CA2& z;Og~y?qp;N05Esnd1u91J1Qc(R##W2=H}-196NUG=p&Cj@`0^mV_~JQ4}+oET;k%T zOP!~`{FPUJ`o>THV{&rxVyRTRY^}ZIoLhMN?YCok!Rvi1F+Dx~>)-l6c#j@ES`v|= zAP6R`wcA>)R%3Q{Hge821_uXktJmuzX_}_ZX7jynw|lu(tF4cXjkz!ko2oi1BJWvi zoAdMYE-!#0c|eaGIg%P<)_@sfOvhR~Z;UC4h?c(iOfe))Bzk>MlF-gTWt^ohU-yIdzS=3;DDreIp pO2}sXH!6N3fQ`HU(r1O}e*yM4kJGG}(z^fv002ovPDHLkV1iZX5o`be literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/display.png b/trunk/gosa-plugins/goto/html/images/display.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ef81c608c703f52f2d4d5bf3e00c6aba4b9df8 GIT binary patch literal 733 zcmV<30wVp1P)Yh#uD{ryLFZFMC%`RgSgfBA$vn|E31Od z5F(65HKWmtX4cT}kGa>2eDlSJlx0yVF$P3wk`-Rf4CC4`m@0z_yw?*ZO-U8*1k6-c2$%NoMH@WC6*ZfY+6yka(O7MJt?0wGN-&IkTJyJj}LVYRf_M0oc5 zfXoWr+;Dn2pq(~|2+n&D#i}TxhHlv*Q%jm!R?C!!AKapAA#SeFzpDBEhg0%yO5Frh z74JL%Dk`WzQDl@=&c;T;%j-GcKK_RyPkH{wn8!a~P`A+Qbt%gZS!VIx0bo_YhlmqJ zj777IIvQd~c=X)`O%thu#bh051#cR>C~nEX8k;0lk+A>KCKyAOT9VXYR0u?(545dk zK5v=V4dY3dH+#DLf-&~VPfw4xx3||n-+pJQc?ZtnT#IuK=N#VaG7a9RG_9j<;q2_} zLe|#S9_;S!ewOEX<-LzF#)bZurt<$`7JdjJV2qK=%ggJ-!^5v%*UkJ3?# P00000NkvXXu0mjfm?>k_ literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/edit_share.png b/trunk/gosa-plugins/goto/html/images/edit_share.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8d7017f66d582574d6d274625b71bc896f2502 GIT binary patch literal 725 zcmV;`0xJE9P)1uZb$;s9f6b_IBB&D(HwwXICI&@eF2D;A1UKG* zYp+Cbq1%v!E(9SMFoJjw;zBf&*fTxd(_LL%Kj$15Gqe|wZ}aUQ-uHnQUhtypuRi_k z%ZKmYzWrgA+ukM#B7!Iu;2h3-l!|FrEvwC#{Pg1w4E_pT8$D35m5x z8FTmjk9qCp>x@H3??$pXMjMj>8Gr;ZMpZIa^6v3{?i?L63_Zbnl#~b&({?RdO2)zA z-9(n<3Z*K>5dn~ma7$u^_ob;WY*%{gtaLuG4-xOmX@WIiaawYqiEX=`%Obt z6}ZW<*=`5|>bk;B4r3HHNvrj8eg(+$Vow`QQ>R36Kx;{1H9`tRB*;fg1eBSj?FMX? zlBRjHt5EN~v>yqW%@&CWqn);F{Y^j**V-=~}hPXI(D0Ek6|hy_Y& zR4frV$}<07;^ad0?bqKhpPf@3pzafm_Hp6)a zGyo7lEcth(7=Ez7WY_{U;0GTA0}~qq^A}|{zF+)YT)!At7?>D18NU5slVNzvpaxWb zo`D%i{sZFw5CZ@Lh~*Q@UxuG7KoLd;2Hm%u3~~R3ExLcN;@Qlw8K{|o;SUf?39xW< zL}YUGy0!`xS`4FfjaL`o(bn=X-`+F+YK#->N3Z&)z-r@#p_XAOipbh&j$q zh~ebDZ z`~2hI1AqWx;oxAMqp2>Y^5p9AUm|?WYzq`D8Ghb5%dqj~0|o{Gpyu}s42>*?4C%~L z4DYWTW?*JxW;l56@wazh|Hy&D5Fh{mK>)u00$z{WodO9FAs0Jf2KfpY00|5X0Hrli z08slW007qj0E7cF0Ddh#02C$~0NdQ;0JXW-{oUsHGA&L zx53!CK_vP_8z(gs@8{Kk;ph7R7Bfu%COSm|0`=_} z)70Dn-t73y0suh(zW)RY1_A)>_5j!M=GM~s-t#B_1tI|6&(r`64G91^>f-?4B+id(ObZ z^pD}`gI5gSzyD|86Jlrh`t~Wq=O?EbB)C5@+i&FZ;Nliw`16$mmn*4-9|)Fo6;% z6U+dB0AjxK_&dY(r#~2u-u!ar+Vv+d^`&@R#C1$r7&t|MY2iBq13N1N1283?IQW>M ze)^R=2d}-^_UrGzQ?SGg5I`8nSe89>Ye(Rl|8F+^|Nmgh|BLe?|L1wAJ{03-n+cTm z24V@2%VFvP0thQo5@L0jn`3jUGuGsuEFar!pim$X%Ya;rt`;D`08`>#b12Aab^rhX M07*qoM6N<$f_7f)E&u=k literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/freeze.png b/trunk/gosa-plugins/goto/html/images/freeze.png new file mode 100644 index 0000000000000000000000000000000000000000..04a05c1cb1fec55b1d037f11b7340d8d24f9b969 GIT binary patch literal 750 zcmVsmTOMf>H=7Ly%CAwRb5*>sq*K2!wDGwwax7f*>fu zMXOv`(8`V0A~f(jlp#%LhH>6F&-d=U?-tXHQ<7(O?mhqi?_AEgb^H_4({CefZQ+Nl zt<8^`n(D6s$g-NsW~G^2uK0R#@_|&Vch?@Kre3v#!=Xex-v4Z9s5csmwbRwrLU(t2 zb0FZmolfW7@%a7K#l?AX4v_JRTV6 z3rC~P3pr#qW2szP^{qWTcnL}KA-1` z5L&fy6`&|8hM^;bAd|_Tn5MZ}sm;zNva+mbnpQ&BbreOd&aFzid1*6*==2I{AFrA9 zOb*U%0ouXUQnRmynpc7Kn&0|}rGU^Uq{>J8Q>tjN`oP-7@?A{9g=Ag|YM z=vajMo0`Kx^;9W&3VX|jP+tr@+4$@M$V%LckKGz=>c|1dfD?q^P%R*a1?0hT0>zz< zJ73@Legn#YqnwSU?m#ieh2a2_z}k>F%7xBmaF}y23M%-t3(O7_OK@<4Avql8oHIba z=wKB!@QS|;m9CZziVnvr7#3E^MZQ=Aa2!B2z^{R;4r~WZyKFRV&@Ct#VAx<-pu4O5 z>KZZZGD-gQ5@IiVr;O-p7C7Ht>3qO)^uy* z@wo5+mDthZ?6YTIzHhCy*IxTLUYe%z|6F{?2Lc}myhRD@7tixZh?3*$dxkZI#E=C0 zHtAu;i-ISaGGrK1g%p&;J0z1@&n~0^S%$0vccc~|cxt>hJw5%G(b3W0z5j1f6txx>7XCIdG4W^2y^Qvl7T`hz{PRYmaW_elvMx?}!+Jjg_VbPE zxm<3wQmIU$X&UdXz*}3T1li&He!1K2lIdV@n+N~Dk|0P4g1{ZF^OlJfGKYHG^oQ(( zoLyaAO)p-&$XVX0T)K2AZ8n?f{QSI;hYug7Q&Usv($Z2&jKrE@&XJ~)D6j$-l9MM- zN~u)pX*OTTOV|x2|uDi^AW`6MIWqt(JM$wm6QZP%KEh)i&>) zPDjFUZLM~@EmyBzl_N)v7_Zo}Ws5FRAZ9m=8k?8PWx+-k_?c)SP)=q=EVEd#ROG@o zG3`&FO27un-`J1u+HRB;K$ipwH|G4N&*I{u95`@5_UzdsH*VZ8^?AWp!E z&15Xmp;efqSptgNiKuIf=-7cvv*0ya>W zfD4pG0ka={S>KgdE-;qVciX~hdGpi)H)J&8p0L*)>_XHyH?G}A-{S&0G>Nkfn*GPZ zC*6m_{b3VRjoL&xOgFu@lO#90j=gs6n(W@a+w9Bz`}gy={<)B9wb^J&9K}78#zV2J zEU&!g7L{s6TC1&f&j7Z&G2d<1dCHZtMj;IrMsVsH@COebl-sv&%dTC!sL1{Vba8bJ z^>O+r;;;IrKDBN{i`_>-Ytb>bziYcaPRq7!+vL`*TY?nFtY58GH_S#=GmP!FZ_^#@ z1^S-C>nLNxHuZaVE+t7hckZ0oPcL7-9GFgPApt$e9MJ`slX&n)Polh`ooQSkzN=}q zguOxgg4TA{i9y|LWMpJh1Z<$LiL*m0g(*EeMXEJ{Pjd`~p;DyLAc)tr?arg*(B?rI zY*+X5OkF+U&Ye4^zHi??9SC;$#hG1va-b>8E8C=A&%p{s#OMzCaU3lZ%h6+X`S#l}0IuRUTiZgH$h02I_U)m3 z{`tRUWVnMc%DvDP7((XeLXemdmaSX2%9AHg6FaQR51_7_DE1M2*-5*OXQcocqtLc zfA?JxvA>A*xNn&Mc(P+hwU<+!KYw2C-@i{Q@W2~Pz|K+Zuo?t0VsclWKlh~BjOg#0 za%4WslQWfP&qT(?5|CJuyLW4{yv&omryRIUWagQeSmEyg4B|r`6qIsxqztJH5C7Nl zEQbyq+U!>ef(i*r!BN->?Iv)MjvysRSYx{@9FqWWEI)P(?m+HcAHyl=D*ZUAH~K%oT~ zRyo>ed#RoPU{Q`9eFdv*#~50YKHZUzKB@zF4wg)D>Jn%#wMHMkBP4H5AW3@JVg^2y zd=Oy+cX1*H0A$)pfD2Iwj#}fB?WRu)d*sohq8vXy5BFnx0&4`YAjuUF1k^>L^^n$! zvrxQ7g5|=63v?f|e{e(NKEQm(2NCGfWir2Ai}#~r4TQ85i!xvFH0~pM&5(ny7nlpdZ9>kEHulHU578F!-TbDvJbZnS$;nAtnK=?uia`We zIx?~)4-i~f5O;lSrdZ}*_-3Q}IZri>cUmaO24I2)f@1bn?`SjtHG4~QkKbDR>u{+W?0SFW&XF8G%( zU*1eEB-APp{`x;6ag?NqBw8F(3u;L_hG+TBWn|N)1 z3UTWy?xz#&XJ2NRjM>6=x6SUyvD7@X*nSpB*S%5#iacw41)I;xy?^{x7UqgbbLY$# zvQwu{v5$)V=}_zLomZds7$wEJ-o{*EI}*EL)@cPkH*}#y7ZI-^!`tVigad4`@lW~s z>n0-tPeJUFGt{n`T(zazR9Vl0@rj<|Dr(Oz9@k~1%D@4K~8jwSV_QO&w$cSWysGUpFlo_lpy|l z^4H2Z)A%FEzcK==z@8WaC`zJ0A{5r&2k_2cDOV}16THFgY&4G#)%<%#Al2xTTA)At f&mJELyk+?hmB~jLVtu1Y00000NkvXXu0mjf-?zgK literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/hardware.png b/trunk/gosa-plugins/goto/html/images/hardware.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac401c6f4a2c335bff69e1f955ef96856e21a48 GIT binary patch literal 836 zcmV-K1H1f*P)k-9#Ikbbm6x|~-}_(N5Ej7c_VcP}C)u01kB9A zvPwc?GYSq04OBf#84>3505ZDq0Phq60MHjf0KUZ00NqT%0R962074Q=0Oj)N038b@ z0HoQh0RQ^!F9L|g-aee=$B!=z41XE_{Q1kw@R>t|VVB8QhR=*Y8Q!s>z(J0t65fAD=MLZ+{v71L42_>`gF%>AltD~SkwN&s5QCJU9K+_{yTGvk z5I`)j==jUZ%pi8-1;b_4;|$#VQVd@Y@i1H!IKv>S;mq*wJ1@ig|92T4A9%>{i1Pu1 zi?#>@6EibdA3y+s4FE+E%g^5ox6Cye{{3TN`1kWQgQBY-!{%ov7~bD-WqAMoAH!Se zMGU|7*%&_j`o_TdfD^0-NH7Bg5DO!S#l*XI+) z-~R!PV*CH^=NASRVJU`FSFSPqzr(N!7|1IjF8&AeH8`yS1Q4UOb+F@`H=lBD-rBbj zXzUB1ARkBqDYY^KmEHu3T*Q`?0RjkyK$-*zBzs0|f&c-;NNIKk2rvL0bM$@_sPdQq O0000@2HQ*UHxaBpO3pY$&$0000EbVXQnL3MO! zZ*l-tZfkCDcW#U!4DtW~03Lc&Sad{Xb7OL8aCB*JZU6vyoJ&+F$V@INElLFd5MKj+ z>hujP00084Nkl z7bAo)@FL#5c?dih2whB=2sST9R+vy~5R+6UXrp9ICyCpu&fMN@uXFGFu9IS*)T!_3 zIemEG;UOj`XRjFy)bm(OG$v%7q$J}zl63s3r|02IfXL!65q|$ha5|#r>zypVM`f%; z(l8_=s8+&TImpZ|FaPKs9PE`Y1lHHL#I?O+_Y|CV^b70)r|+yT1!MnF39bh>6mdj*iyb0H6Z^zkjpSVqvFP zmT>?ot`wO;2RC6dT|!#QAel@-I!Z&>KZK$xP!$xOUg2bLyWicbt1BC$D3XvdLaPHf&IFF*5Ln-dJ$l^60z~!{0DzH^H@#I=CC>-~Yvx}b?f>)}Gkg*-0v;oS00000NkvXXu0mjfen5G> literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/keyboard.png b/trunk/gosa-plugins/goto/html/images/keyboard.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc03064ada7837d168d4dff815c3eaec80ff8d3 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6I14-?iy0WWg+Z8+Vb&Z8pdd@S zqpu?a!^Xav-+_~Xe1&9>AYTTCDpdxChGqtapZ|gMO9qBg0|tgy2@DKYGZ+}e^C!h0 zbpxtB>*?YcQgJKk&-n&<1{MKf#!9vZ2Bj4Y3Jn}u3>*s6>^3O>Gd5`QWK-Z(mORMC zz|_&&xUl0PYnNQhBxN3MNua<>`+%sXhXx|@jE|fXqGUQ8ftqJHu&rfV70Vr3)+dD8Y`dXZ6FlZG#xjI|o9djg5O%X$)go#dqA`>H!o=i=7)s%e<{k0*6-B)dV* z>bYTh8-0F{>Q;J6!>vO+LS$&3LLcTM^kwLxf6YC?eb7}?K^9jYhqH1DkYMNz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;$w@>(RCwBA?C^QBY98z;HI3f#D}3 z1H*rA1_o9>28O3c7#QyFfT%*Z0>m%*&oE)a1O|WrJdC>y03Z-TUt#4aI+Lq7xSod; z#)3}>P=44aWWovX4{ey1eWDP13CVCLt@X{W074kRA&z3h=N}9Vm!JJ**m;MML0OQ2 zA=-=yWE|LhhTp&8N&x~0ZotoRKL2?N6m1_oxvuMBMO4#K?v5I}Gj@V?r>;G%Yf;p5lK3^Q-ZGQ9g} z#~>@kz+kKNkHJBSk%9laC&P;?QVbG29~n6Qo`D+x5I}GP4!)LV5EA5Pc*#-1;9;P~ zVE64SgNncphHqcKF!23kV&Gr{2Aq-)1B19Q0~@O_+yH<8f*YWq;LIRv63k!#j32wt zzZkY3eZ;`S@P$D~`VWK9>zfRce||8qv0E@OeBfgE$Hm3~^E*HQ!40sK{loD7`FnJUz_dX{5uzC#KE7{OJt?!^c|;zyEMByyq8Z_{qx7@P}8JK?bT1Ab{WosK{_L zynX)}m_;vp-!?&N`8UD%XF??s|V>o#1I8^mB28MH&!7P9Pf*Zib z#>^lsAqY-{|M(0UzJB_^z`(@Fz{11Nz|6|V!1(nGSY3E{IG6?{JrH#ax3X1I9(0mK3mBo-iR d1_6Ko0|4SW*7X~+Jplj!002ovPDHLkV1nV3al`-s literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/list_new_app.png b/trunk/gosa-plugins/goto/html/images/list_new_app.png new file mode 100644 index 0000000000000000000000000000000000000000..b7fa9d3a2db98af13a11a22c52006b883e6cb626 GIT binary patch literal 794 zcmV+#1LgdQP)%uFUt$PYM~Xey0VXbT#nf`S`&g$i}+54z|o;8Jw$qJ|<} zq@5swAPAa;*j1w|1%DzGF|C1Cfx(1<|=08~LSI9am(l_L{&;mY^4@k-rxxZu$r$MCie^%ktu zAPm76!#f<%z@SMq0vJF6yzM0$?Hg9sVrVANun;S(Map6}iD38R>vVm}kV*l6*2 zDhBZSx-t}d4GOdqvm6MoUNz_&$k5x>i60m$udBpwd~(L^=HJ|WVwXfjgO+GD5q-9t z=_rM0?M5z!z_ z4Sstn`e-4YMMNjh->bM@=a%+r(rqZ<`$8_~62^vR4EZeNGEnG*!G0*@K@^T3-MeY~ z*jL{GII3xP3xq95ticapbq%5z!cd4CO^VYF?u9JXIz+(O?*03L0nY*nkSHYLuo^<# zt~WUCkOwAPKXE1tBFc*;7`>gRyw&c!07XwoV@dlLKFYy{9vHdqz<3EBEOBP;AdHs? z>Koa1sRPDb);{}G)ciir%|%(YBI=9iN!=NX`gfHT^R+o zm}6&e%=9{MhaxpLYP#Nu!w0_j{FAJSV)(lXA767|6xj1H?e$k^{yNZ3^PTu)B6_-?J(e*iqc4;!zq48Zul4P*bHu*1J zM|aPc2Tx9DITg>`S_rg^+Nq4XUg41ak$7Ef_#cdMM;yltsN&imlKY8ZGbbnjt@Stm Y0MV?uXJ{UTjsO4v07*qoM6N<$f=H-n&j0`b literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/list_new_device.png b/trunk/gosa-plugins/goto/html/images/list_new_device.png new file mode 100644 index 0000000000000000000000000000000000000000..43b0c6cfd947d1bef4130efaa98d44e74fead1a2 GIT binary patch literal 642 zcmV-|0)737P)+DMzATof&8(b`4fx*()Q|3FB! zYSAvDO+g@pSrAB#2_+cfBB2(d4x=^C_v7AsTD%!iG_5au`Cbm^d(OSz>kK?tY%@{V zrGo$+YIGRasfoh~9U4r%7T4=0(3oIt#eNxCcMoBa z_`eeku^7i9u0`VM1)${Svn|E0_6&XsYAI-Pzyll$)_{&7Z~+GlU{gQ}9KQDo>Ln9hA1+`ak32@lv2#ie8QW(N^5Hq3zc*-;Al4BU$DBm#O_DAgL1k``>6@mbxXjyeHMSXI!`ujI>kz;AlxSiWl^Fm^K$bU;+qpEh{Mi*N z+swx7OuXgWHPVCq*xD2-69QGv4_A0qJzR3GKb)6S-5xs9=vbp8gN`(Dq%o1kTP}0| z${i+No<{YxF*sCZbmTa9FTPGf1afumi@AH+qMIqyl|#sB~S literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/list_new_mime.png b/trunk/gosa-plugins/goto/html/images/list_new_mime.png new file mode 100644 index 0000000000000000000000000000000000000000..d9afa9a9d80280d9f14b76a44d418cd863fd4907 GIT binary patch literal 698 zcmV;r0!96aP)+^Ykcs|N74BqP@^`#T_X9@wvglIJC008J42ipd#0t)CI0ZO23q#~3{f`}lt zjV(gc;R*ooo~+A|--o57#j6!Xw;%3ac2UCNQ!dwA05DC9bk1UNt<0yiFrRYqIj^&l zbkp5vGIab0t$TBrXq3*}f<{k0;K{oRt9chY6%QFpC#}I|7TAMrcLU$%AJW$F6i=az zTtgo|-z5NCzX5HHX@*-DxUMF#%0-q}A(wXUe17<7UWA|ERt5CT)ZZ44Zoc4J&osM* zB_1z#lG(jNX8;DfY_4`G?tKV5(MP~*y{`hQ6-;e)Ft>G#H{LOZF7z-ySYWM1@hs=Y zXRg;8eEL4#r3r{BXKxsWh={~qXJx%0vL_;$oGJ1M5ebOQP}34{^bA#9wGiyAkWFPt zmn&!+Z{g;5{IPQo8i8Ox(CY+-z5t65ixVvwwH};3)y#G_kH@Feq6N^4`;=~cMUS0_ zfj9&Ye9sO;0wzv8hg7Nt&~-N*?S2$s`vxfFc4(e#cPgMC*gPop0R$Jh9lL`XrKt*V zDOdHID@{9i9Dvz4B;t++h$UeF2n7(5#VSD4wEBSwNv+d|bhKm;NsK}wi3+3Czm9W6 g9|b^#QHRfe0l!-QCDtA^Pyhe`07*qoM6N<$f?;VU5&!@I literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/list_reset_password.png b/trunk/gosa-plugins/goto/html/images/list_reset_password.png new file mode 100644 index 0000000000000000000000000000000000000000..ddef191b2bb7f7567159ab0f7a7c479c688fb3c7 GIT binary patch literal 820 zcmV-41Izr0P)CxD;!fTH^~410>Mc{ zK~y-)g_B)KlW`QrpZC=_w_I*>ZO*0Q=U!KewhAq+KndOp8Awoh;YC?=<4reNLo~W7 zx~Pj3>1IWw1f>{-jk#=UU#!I>%#TKXp)x3lbH|9=;eh%P)=hr>BP&T}3PgDp{6 zSy^T>nQksGFQ-sSBb3sGwzjr=E|=>Kb_;{SaI&eX$(xs#*8m_BK#E?kuWoK`o+>IT zI=?HxY&JhHDJi+Ny>2ub&za3;JAl||bL_uFDwWE;Uhntq4HAjumne!-0CCX(o7BF( zzHUJfsu_mS3W9LT@AngpMw5}0l$0|xG&JAR(xMbaF}NMTY{}IYi^ZLro2z447Jk1U zJkMilY6@Dd77mBQR#Q_`0bo6EQ8rP+neMrqO7O zQ6&&U68ii5&#KjGCO$qMX=!PY$z%uw0^m3fN~IEGV`FQul z*ZvH9M}GiSmlYhx#Wy9ImaOfa4bHkHuXukJFXQhB1awRLiEaFAN9 z*7@}G^nx8OI0xLHC@TRoJqJwB152yG^dcC-bbTI~+_2efAI8VWBRM%a`vpO$*#RgR zaJ-1SdjpvFBVsHDiC2Mh4MSCNW{;xBUTLvduDIRqZ$6(76B83lo2wH-62-3e4stA+ zl580b-M&tj#0d3wbkazIoDzVBQ&L9&ATcqqI6puCnp`eFycN)}vgo6sx~tT8|IX^` yx3*qe@5kc{8zgPf`u?R@P}sB3{HXSSPxuGG@GBe!aII?q0000r0x_7B6f(|?yng-0r)z6#-#7rv@4oY1H!1nw z{VWEHRM;FXFLiVoHoq9`K@Q~LdclWw2SuD;5`n{Qki09;pz!%obd-(#LXj2V5- zW2BN(C`ybmL}AYHla%&RNZ5<{`0#{0PbGi@pp-%?N!pLlaZIc%=oH6Q7-Pv&O&Vs{ zG($%TVZTqNa|QsZ6jDh3dekAy1=Z>ZrIL$M60l^MAq*3m%^vY_gfTht^i5AM5CX?_ zD0&5wSaaNq$Wo0|5^Et%GQuz=4pXEORSpGLFvJN4O(k-rpWUmh!R3bDxT%2dmNv31Q;J5f4N?--%v`Z=@+NY zE?-{0I59C%NRkAT8?3eL?mY|}ji1*aKW_c0b?!78jqiHB-meU6X=&-By}i9BoleK@ z@9*1It7V(brrq4!v9rAFVak8pg)P2!a6L z_p83|zcQQ={8zG8tG&OtxcI^B>`QYOE?j!6+wCUz?{ECJySw{vef{3|tybp;AmM)` z&!4ZCPwj+%?%Zo1-o1OTb@S$z+mn+smw_U{%*@5o@Zy2-ylQQAb@i7sXQqR8yKP5D z{mRtT3&L8<#>O8eNpx?1eqL>FKRCH|ZRKr9cAgaph@y6Q`}Ws&N~J;|gzL=B&7O5# vM=2#mtJO(&cD6Rl<&nJK@28Mt|K|PyJSAkZgeEE<00000NkvXXu0mjfa~Om1 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/logon_script.png b/trunk/gosa-plugins/goto/html/images/logon_script.png new file mode 100644 index 0000000000000000000000000000000000000000..f8aaba2e3e3e488dffb292b58a0143b7d8341b91 GIT binary patch literal 601 zcmV-f0;c_mP)|W zK~#9!os+?8Q$ZAlznM&$-n4k90@p_fHN8AuI$lTL5^xTEq<0W-yyWRS{K06j4J| z5K(j#?|nW1Aeb2dmBdfjQ+4q39occ<YoO6Wi zE2UBeQspe2W%l6%07R55>oFMQRI8O~fO8IjVy}S<2_|LE7gs3`@{ur(McwZCG~mKs zep;Y#XN{9zP5SrO$=WFZySrbe>~}gHopNw=Wcb!M`YTWIqB!U9e)zVvwS{vI5usMA zvAMaqKjolvk~6>lf?{co5DJvbvm{9gfL^ahjFEc1&i3}UyRirNUcUY7^rdM^qtO_P n0o=~c&Pu!8{^xPNDhBuiN=!A6_`=~Z00000NkvXXu0mjf*?kWY literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/memcheck.png b/trunk/gosa-plugins/goto/html/images/memcheck.png new file mode 100644 index 0000000000000000000000000000000000000000..6ddeddb689de7fbc69a3d4ffb08410e53f27d25f GIT binary patch literal 931 zcmV;U16=%xP)G6 z1Q7FlpOYG2n8i|`KK;VS%p=Y4?%hYA=5Gw2KYwL-@ZcH4yEpF`IJkHiB;*a%IT-(V zJb!xs{EuIM9{q!cJwO04*9J5D%DU&pzI)HYaPj1E27XB;pdp_aUcPwC@aWMCV8H%l z`1bW1!@qyb41D4mLK4Efz5;*lus?qN^VDBp&;bMhK>)u01ONd80s!~U0QuIy0QKP+ z0O$({0R9du0Pyhj0PXGZ00##K0O8^10Q>v=0466O060Wi6d@A%g9rJe5wh9-b^?fr zUBw`s;m>!ODF7lO902_L{Q&9e^8g_g0wxv+{#^n9K>)u01E#?By3Wt;<5x~0FcvN- z6w|P*0YFku03tI;0M^XR00j&d0Qvd-01gfe0Q~&=0JO8V`lF_-vC`S>#^dt=0002$000010*D0`pOHQ9a@;n*I}+h4=*g=jtaNnF!avuaTm2N`_{M$y z?4fJdub*1*>C@ZwK&1~s!2{C=5I`7cWdTRszY7Ncr$)0s5ai)Y6%muoXJTS90!ndU zQx6b87)XGVfg{&}p+t(8Ar{ExA*3E4fbbzEViW-c7y#A0Jq-u2kTn1R002ovPDHLk FV1idnqDue( literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/mime_embedding.png b/trunk/gosa-plugins/goto/html/images/mime_embedding.png new file mode 100644 index 0000000000000000000000000000000000000000..1930fb233f6ac09c41a8b0107c911a6fb8a27633 GIT binary patch literal 692 zcmV;l0!#ggP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;DoI2^RCwBA?C^QBY98aO&=VhA%(< zGCXHBYn=d(;1CQO*X01!YdFq2q+J!KGJ zVr1YE`p2Lx#?J8h%NGVlCKiU@zyB~WF|#mm^9nNj2fFpo-+w^-7w!Up0D>DJ%=Mdr zk&%(%@1H*m92^V`KiU5=Ff;#U;NjtAU}t9sPl`sGhKyU+icz76CSXjUcKn8&f0RfOkkT{4B zas>y-e@FlzfG`XIna;_{2{z>4zkhH;e*gXrb_pvhE7%ek00TmtzJU$@{{1`HV33%lr6pKBKmfrF067nYVcq~?5Fg}pE-o%`*nkX$g$E1(1Q6T+ zkVcrZLC)pl;{$sOWDrOU7I=S=(f|km1Q6VSSFc_{q7i5-$f@t%y@UH5WH?CUlP6Cw zk}^O5!3_Xu28A%lzfw|C@OTFq07^t(zkUT95FQ>5Ru4+Xg@uLO009IyKtMnMY=DS} z2!p7oDA)j4+=Bqffb-|iBWnif{R!SI-Y;XMNwpXV^<{*aN^_Vx3-ct!@s`>bqi46H0{3;+Ry)quaBJ~J?XSj52m z8_4<2#PIAXBg0pVFh+JBcH2kypF44Kam~GP<{HE8o0k~?0tl-C3?KJ1F#oy8!0>~O z;s49O3@@au7-U_78NS`V&T#4b=bvxiykyw3V+~N@9|nK`V#22X|HH`)th}5I3|}}H z-hbp{_@d#*AS5Hjz|8QMfrW*Y;mV~eKvn;Mn2iA-fG}L}_r(bYW{z7x&A^!b#K7>5 zM~y+yA(Vmh|4#-!9$tnc2M;mayK^3>l9deH=U0|9du%fr$es{1a&N2Ofs^ zGM)^AQql}8zy!d^%*gQO^-E5WZXgx`Vs3x{Vu3~JPf*mnxX8f5{*Zz3k06l4&hY9x zJA-IYEW@ua9~gfB`pNL=<0l3tMkZjIVT8Gy7a)M(Uib&{(%&CIhBN~M2QR~y=T8~l z2wO97{9|VL`T7k|BO}8A2nZd^1@wcFmECVAWI1(5D0*HkP2*F7gh&7GP8B`2R8JGoxfHwbT z_$|Q8z{<`B^!tAXHa2DkW@Z)!E-p@{@TgdZTeog9+`n_30U&@_?%sL$VbzK?JRm1B zG6Q1=6j*LX{7Jy;#>&w?K3pF07*qoM6N<$g5Dym0RR91 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/mimetypes.png b/trunk/gosa-plugins/goto/html/images/mimetypes.png new file mode 100644 index 0000000000000000000000000000000000000000..603a6a6903fcd5a496f742628159aedc9714bda9 GIT binary patch literal 2694 zcmV;13VHR3P)TTxI_sF(4>N@1tH2&fmGD0RcS;eM37R6 zwo;|4s?@4dOZfwVdI<$e6@`}2ma0`qfsh6gha65q>^OGf_+GE=y|4GC^PbGg!Aa{1 zC);+U(af7Y=J%Q3@AsYAu?_ym%l{QX7^nvXpR7nA0i>=ZfB=@nXDKu^NnifkIxqJ!J)baa07`iso_zQrflx9_O zK+`m5a<>&ipkO$1bdc`eDb9^#NK6(;XNv^Ag0P>U-t z5o@G%)j|ScKS#3=*1ZJ7UeYB6Gdzi36YSW1mTb1n7w=zJ@nY2h-uTOhcp9U4TIy+S zt7kYmsyop2t)dlG88Rt;fIE4jK;!_1ub^$bv z-q9qjL7lkYU}(YyDM5hGZ(^7RX z`Gx!LduC{8s0War2mm2ieQh&hR~Oz=NkQazN99CItcFK#TgEw+;CnylC!SCMsY$jx zbQ78;+*;W~fK8h>KQ!wIa%lj3KHqPFGoKhh0PAmAMnm9jr8p@9Hkh_#d7Y0oRckyt z3zUccaj=)u*?ug`BAw1qUtiC^JU>+opADg2o8Kf3hkbnGD>w6l=MRue<`CH;`}dz= z!QASqX%{G6$E<127FC zxc|YMX}`9eov$C^z?+A8e~%+T7PWqp4XdJLGXKpL;#U z4__QqP?DhEgU8enI_lYC&OolZNyzL4{fOQNkJ&4j$zA&Yg^2 zcO5sr@B+HecV&OnODQYWRUy+vsJ4(#fffM-K_4{u6XYiP7#{26+mR`}e|nRkl!S^! zqWL`H#0iocH&XZ5V@N5*d;rLg6hX{rFP3z=t~vO!g09Z1|jZ6X)z!V^70-SGcZT%FW z&A|&IlgTXW@9+POn%rn?Y^1C=piLZPXvCms8Q^OH1VZ}B9sQ7wu!J=LWJwl z8yA6)h_`=A-}gSVLr$JUIL{j3woE@uw?$CtfA{b9{XhEs;az}b%%F;ojg7^bThV~R zMf`9lW!lsR8=-B&yf$TqkPyoi4w_}(VXj}ln^cl+?(40XX+!yV6xtVhn zDdnh8G|Iyphk5a>AU9tvS-n)Uwt0Z|nqkJyO|o~yOF=2slBAc3zybogR1h}Ov=B~6 zjdr4W>}kWb*#>J)JM%d|F95Fkcudnx>YqHmn8mSvQsZaYuuM>2SHr@EZD?9MDp%<2 z>}0)`!AzY&qYUf64(WRlr~UxhF*MV2X`^S3yKQoQ01RCx7z{dYR&9W9J-R{}TBN(X zo3U~Mzu%9?<6(S!oJ1mlvA`zm5r~fGpl&IyLFpkx|2{DNj?oo^#U)qY9h=_}iZwM= z&QR;ttz*raHK?malv26v>eZ`V(9FumiD$Dk#bQX?1|ephWPwUwdG?~a_2_F~Ey26< z5JEyYAv9|eHL;uAs=APcLII_4?)#j?Pp4803=9wm1S*>&a6#WzfVH)?w6(QezUy^m zjI*-;cGp(MIMww~Z6w0j=qSsUEpwkO%c{ISv#%Dx^`L^jYyhtQr=1Xr#pZSdv27+2 ziRqm?&#*EOX@MG-uJLXkO@J>Hu0YMayH$1G0J6uAAAeODV=9%Ibp!z_q2Pqkv17-A z?TZ)RuDs@R#GBz(bd&eSpcVXFz{A)NA@;Uh+b)7MP9VH_`0Eu=q``uj`K=T^3 zRWu*sLK4z-{DXtwNb}GTMr$jYl!&EE@u|;cZJXV@cfaw>cVRj^5s0 zyk2ibVcf84YNYIqA{2;SSBEqV2J(3Vx8927_tSIg)cz-)c;ac`JRq-p2EImCvq}Ja^s;oee02CAy;V|05g&gnbIPug|Pi<8mJONnM2q9Mzt<8 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/mouse.png b/trunk/gosa-plugins/goto/html/images/mouse.png new file mode 100644 index 0000000000000000000000000000000000000000..3c0d31df2209e47ac594b87b0e755df5f15109fe GIT binary patch literal 751 zcmV7o}QP&<|)h!JT~2%%AgxRu+w!YU@IZ+B-mcV^zqyqWjw5Dw_#_w)|$_xZiw z?=|9d+6D#&Ui-fPJ)KTh5{X2tP$+}|2WdM*$rIG+(Sr$B3pjwl7`Ht}R zlL@6<6pKZq)9IFpiHYY;O-;!Vm{{!20xo8p*I;;Qy002ovPDHLkV1jn&S1JGi literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/notify.png b/trunk/gosa-plugins/goto/html/images/notify.png new file mode 100644 index 0000000000000000000000000000000000000000..92d602c58b1a5da07ccf891badd63550bfbbc142 GIT binary patch literal 635 zcmV->0)+jEP)G|hO+?ymEj&Qy&Nho9l3NVDua|65!yIC-X%YCdux0jCdQbW*^aZ)Zs)| z2S1BGTGtfVJ3d=$&sfjpNnRR8*O!SkH_<6E+lDdo(o1=^q^=lm0;NeGW5R7bw`?v^d?}N42_2 zr3Ahk2|9oc)L~aGd_RWaTPUiWz0kwr>OZJb(*e-i0pb1FUZuQT%@fS_L V)zeR5l9vDg002ovPDHLkV1nDv6bk?V literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/plugin.png b/trunk/gosa-plugins/goto/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..7b7bf37dd0e54fec1f937c51d2a6045666e4c231 GIT binary patch literal 3242 zcmV;b3{~@qP)}Jf&Fulxl-|p$# z%Uw=YeR-&J?$SMAh$F>OC{3yAoW7^(`+xiQ4SYI29sj?FRGUX0dE`v1)%uI$$B*CJ zXf#mOPkh*a=bMjvW{i>L<>eng|NQfR{o;!+eyjSs0Nj87{lD?>!w>)6*|TS7=jZ3C z*Xy77f}fSh>YVZY`1v6OR##Vf<&{@>;)y5z@|kCz`6jT=i4!O8eEjjpH~am*{$CjV zeqWz^?m0bq^5h=_n0xNI=g%H|@WED|=RY$i|EGtR(ugqD^hzQ11vwUX+BQi!LL{(x; zoYYwDNAF^!Tq7DGM8$?aS+Rllo-f>e2fzBoQ$s0;2+p}0u-^fQ3|WMc$m{Q2(h=>Bl8Dk~@h=6lBQ5>JW=icv*WF&Ys~XBw2K5z&ZIu%ciEje-WifEocqbr=!_lV{AI zILi9UfS^g0#%-dac@Kc3d%}T(Q|#a0B=~@23AIK=H4>ws(GWuWJzPK#Z}HzzD$ZVXb9$ZYrrj zd1$4x!+nTE10f{B5kY`Xub>sW{PulEFapoLzREir&}!riiolhHHNNt>7ME7Lyt}+f zEi*Wm4+$S}IT1TM)5JNO01y!p=!)(=HUQw9!&yTJiZO}fAw-OkM6gjrA_!<{ty+4O zUO#ZloaO$LQwZ?hQis>B71VRbN_&gnz3(8ubKhaQg|fIl;Lrd5Jw9l6sbzU$N+=nn zn(lW7mlW8bmd3l2)`{yWp+~b`_Dh1u`Z8kTziK=8- zHd3MFF-B@6lH8#8KDoc31c``AhEowOfDvJ<-=kGCtgi=VW}0{(h^nk^N32A;g|gEv zIMft=>)xBVx>1m4hVPzV;oJXli379K_@IQ+TZNd`N)jO?_qsdu3;`sfCRIqpu)RH? zIUNa-o<+t1BsbqLJgS~Q`t@Jny~QoQ_wFVuE1Mk28?1LDR+R1_((iUT`=w*F8W|hC z$mNAD|M>g@v#n`FEJYCrz64OMArdvx-Ra|fNEQ&|(C8;rXu^;s8S#31i+Z!k+`dNg zoa;-yax`sFlJ|c`|1qnT>mY09hVW)t9 ze`SGM-XO~|c8Z9`$gM|bXx4=7K?D(Ac)QK&hNqU-@r9q@dJ1|<@JW4oy#l%ejF<@z zHQ`2gt52mu#u&O=J+54Cb8LP;xj4K}u1rgP)R^3Crx$tc;yS&7!MO}X==#L1%o&10 z0IUc;f?`uNE~Bmy8AfaGlLU&wvvPF-9kbWEoekZXsgu-eaxBD_{%@Yh6~i3&a_^A#&p8eH=d6q}6nsK6RKo zZre}rDWwQL8En5_aBX>mUbg^|#4H`T*YQYfoO6=^gh{Vtgze29m)~Edy}Fq$^8wei z9KGcrH{W^_HnVg#dW4`vA1M^p`^r{;&Q8ILKU(2>p|l4u0B-->0j8Q6XFh*`FaPo( zH2S3fsto!CSC=-}-s~f0M3?TegO9WUV5oR-{0WoQjhLa~|xZYJB|J%1%TH4~;a)-|KZW%21 z()3|QY@BoKmO?5d66alJ$#O@QS@PUct2t`5jJ1^=UVC+sb1z&%HE`=K`&esla{c-a znG>3I%XHIH&xJv+;GGMr{Ohxqm}*$&T9(-<%a^}+lzgU1r!zfuIrB(9GQ54G3Qio<;Xf(@vhBd`rrlvqv#fY(V`o=1h4ipSoX0g_!=~C5Y zt-+e)9qRRrBZr!_rZRr-;a}oE&n@xBn=8Ei)-wHmWKbwy|JrTbdFK(jgUAogEpXxD zIu|dsxwNo>4?>n@7?aY5$}5V1_uwn?ce&A_5$|=Qf^mt{q9#>X&frQA#tPP11R>8Y zU;VY4xn+KaMrJUg{N`8ZSzGI}cy$}ZaA1F(xqS`RHU@~XoVoiZ7O!se?!`5*Ik^*J zh=>V@8Ko&wW}ZpPg$;Urp`Gds%tL#a9wX<|~JSn9he@7bM=emDS4S*NuIk;G|dWkQvP_OMG56^OnMy!6fn zijq4^El&glBgCj>MK|&`<;7(SpbT0uRfX230!z!LfWojY*aJYzw#Y~VV`@{z1XtOE ztL#CBk}zgORK1>+`kFcw8k63}nCk501S$aIb#)bWEm4z8moW)c0IO1Xq9)ez#`MFX zWu=aTF^DyY6~rd)o6@bCArMnmY?WPUO1U-F7b+2g4pl_dqy~WjF=abbw9G(DZzQCt zDcKv+Ng1yy2@KOzRq`xju9c&bQU{kAGH0=wC39vNp(}f^6_~QED3vo;hFydhAjCNA z)TOL84rlPG2Jl71hd?n1_#%QBTFsoOgJA@&06_9WGTtzX5$-#48~=2BEZeFj;;R2z z78j#-td{@AxT96}SW0xL*P7l>Qn#XE-ubaW4+LYUz@+uh!~atca-EA=SGfV{}Mp^_-}W31lgK$~&bz!)Rn=WHhy$5rRrN$M-V& z&BVKM#>u@Vu@gcdgut<5$2fof{7-2!Gd>8D=;7ToIU>h~Uf^wB?c&i&0p4?R?CHk(5O8Sle<+`0R^k9)>P zeOEDKW@d(q7ccVIV~_pd{Q2|$04!EPpfNi;`}H$t&V1we@#80)b6IuhZmZuts=wbb zqW_ffNxoB6+U@q%%P+tD)|D$)o&vrPbSCp?m=<<>&kwWS(cYicHT;cRX`!x64!_l=ltB<)VvY~=c3falGGH1 z^30M9g^-L?1$R&1fcGh?c|e7~JY5_^EKY9?wk$egz|(B>Gi2K(<`7HQZ;W*f@(;e0 zDgXESt=7OAe8PRs*2y^==UnVb^Jq}eU_9S5M_vB-#roBimfk*>pG;EVti3;f(w=#$ zC%DWw)eawKNozTyAUH`*zR_p~%glf722bA{-XNK#;^MR>S?A&&^Las^WF61l%xvmh zojB#dO_!*z3o@myzwzz4$f&?@z<_UG$tCj#7Z+~Z739UyJ>~qq@>!ub+Y_8jPH>zI z@ZwzEq`GU}=lQW^cRgq1KCotD$hcir>+opPsh@hzJEzL3$*g@=^|#>Us!5U_!g)*Y wTy5X{ciEIZLN7%Aq#u#^`?l!g@_#qmdKI;Vst0MM_Z4gdfE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/prio_increase.png b/trunk/gosa-plugins/goto/html/images/prio_increase.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9856c81de38b295b9a09664d1b4259930f012a GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rXaO+x!*+3D_0*}aI z1_o|n5N2eUHAey{$X?><>&kwWS(aBy<~YOiOrVf#iEBiObAE1aYF-J0b5UwyNotBh zd1gt5LP$ocg1e`0!21-{JO&0v22U5q5R21WCvVI>Y#`uj-^}yWK*sm-k^Ky5mNChxT@zS31zHb3SCnHa+O|Mu%BiEjT{(B(tv89{d(eQ>B7kZzsdwpqb&dI`mmg=Ic zdhJU*4}N?-qpr3*b~=Mkt;RHl1@C`9d0HdU#=?-9x$k#>Z9r4@l>6WR=Dd3?)S&ca zS6`u~7-O(7=c()VPgiyZ9}YWS7Jc+tuCV{#jp9`=#8lF3nWq8+jlt8^&t;ucLK6VP C#-JJi literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/reinstall.png b/trunk/gosa-plugins/goto/html/images/reinstall.png new file mode 100644 index 0000000000000000000000000000000000000000..fc716d05cede7735eff93c8f653ff15b58a272ec GIT binary patch literal 885 zcmV-*1B(2KP)+q>THea{*gI562(uM_oy!E;il=I!s@IDfD;S_>aLo!=F0 zZi>I2Q1)NClD|1VkxhK{X@7EEuhjzrs{8q#EnmFRXbK3KB;pNUZrdIRL`})Y-AY$b z^h1K8Z3^itNU7mwk|_2P0tK99wsfR@YmV}2z83#hdC&qwk=ErA z`y@+iy$F8;il!qgIpneh+25H@78twc4*mGu;iU%xG!-7|Fc`@kU^e|ELeo(+9iggR z{c|&?t$xQJ4BId5Iw_bZ?Zn7L89 zJ8h+tMF(DeLZRvvj;oQD`yXsaEiAFL)KFko_0s=3 z9=%d>t=m$jR;0W-U6A_@UK%yR(XM?*uD^EShnzccy(r&)e|)OvnSqx9bKU#TH@>*% zv&Ri1+Fz}#YKylft!tN$PXQS~zV*(}&!-k=wvK*1Fbt#sZ{7Dd#os(BFrVYF00000 LNkvXXu0mjfeA$%H literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/rescan.png b/trunk/gosa-plugins/goto/html/images/rescan.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c25e71ed6f42e9d7c86bfaa9521100417b79ec GIT binary patch literal 803 zcmV+;1Kj+HP)Q9@7}Kq5k$Hy^uSphIE%v% z4*cH|>+9=VX_$_kK6mF{_<$~t#9+0yn1u|sGQa_6t^`9 zXwBs4`;y)KLv%jifHj6AC)f*jSsXb;#?IzcHk*wsOPC}zW>>etDC)EO1Ue+uigZ#C z8%+>|jQaC*p7gkP;BTDbD3MN5C8e}500J-BVN}eqlXTI>;K%#)f*v*wBDEQ|?y!Bg zNo(!_w#d z1(2i(Lt9e*p~=1aHMEd;H?#bH`5}iMAEWtOm&c6`t;Qo-f3-QDoWR~2!GdQCl#<8< zwx<-2ghzW2QOJxlKfQqO4RBqTrKKf&-=|uw5(hDE=puzg*|v>s+t}LBdSil-Fk&(Y zm|w~wek}3o^a4^!dc7XQ;gC|Pgl*fj>ut2qSp|TS=9Pof_GeS`5XK-C4EMPdv{+oM z(CKv8+}uP6L8Vf`aU3qJU1+A&^t#GqGIFLkHPN`;yZ_1gwO>>!lo84p9rDz34i1CK z!ykU|ktmnTSe8Y<-)D7obx^%oeV=W96@@}!;nb;j&tAE5^_wV)9z5srT(0ZBQ>j$e zip8SH<#NPvtXEc6PHt^&-2jk55O}w4{qcR0Bs)L?#4ozr?cUDk^Uc}W*`n*Z^;)g= h)yBrgcmLTN{{h_PHTI{}2!{Xw002ovPDHLkV1kZMh1viB literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/scanner.png b/trunk/gosa-plugins/goto/html/images/scanner.png new file mode 100644 index 0000000000000000000000000000000000000000..627540c7081d01f681eaedce86e746498996718a GIT binary patch literal 809 zcmV+^1J?YBP)Fd(O$aG--Y;O)@KNDuzwwSQplAR%TWd3hVSj zLGTaoUhpqyK@i-{`Uk{aD1v(D&6GkZ6cGgRV!Ln%V!L*$Cux$CEx~v9a-L9LF>J`}?|HuYa<%wDh)8Y6Qq`w;Qjmt$mgx$*)q%)b{rF zUqKMGIA(Qq_5C0Sbi3Ww2L}gHzu&iE7+R&24a3kzQDlAJPxkiqqA(0?v)TLw$O5u!wYwevN;`udyAFK*v{2e6YF0NlE{a=G%-rObo< zkm8(!5M#RqtOaA?@5u1Mhab&jpdsUTauHfisUP$ajGQ>)e^;O ziPGs=+GYwl{bF&sasA!ne-a>|GA(@*FZ*k8(amDd$p}@$gl`+}YaMO6An${{(L=y=4&SDB@@k(NPg9jL0Mr zSrg$}jbp~aCgh71adqM9jmZ|$*_pY8S2ASnV-llCg&wKIMOe!TU>Ydt80{n!UQTo7 zg&Afmr_W3T-ENmo`;c;0W3A=Hlt&?-#qm7A5-LTn6VVPk-06JI>Ywi+6DcPG-}n2* zSVnOIz$h5d3kJyX8coh& literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/select_application.png b/trunk/gosa-plugins/goto/html/images/select_application.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6de2f62d02d020e5941474f5e34997fe12aa5b GIT binary patch literal 959 zcmV;w13>(VP)|pPJeL6z@N2ZZ-ztzd*%beljrp`oqBR_8Y_y21X_Z7+_>#V)zF%{P*u4WtI{sJX|hWrB3e;F8ohW%rB^yCY}|G)nk{{R0Eo zJ^cUw{N4ZmpT7P7|LBP)zjY0LS{R_N00KyLySy1A%vI5>x-0=0+&1P~K2e88GP_}6bnh97^J7(N1H z;S&&l1IEgmw?7zOy?V>Q%=m}lCopQ?eFBPoVPMcRveE}?(FF(~CQ!ir0U7ciL^DD( z0&V{RRQwYdrAIH`XV|*`6vKFbMIp022}i00M{s z3t)2aNUh$q|H+qA_x}IC{~nmg{sGg&umAr~UwrxB-6!n^P)#)utANx31P~(w4j?3= z=x<`-8Z99qB+JUo$nx^#+drpH9Ju%D#jX87>AgVw2$cE(0tlx8P{0pLEKqMUK(p{$ hApQ(Ze+&Qt1_0CnfN6=Ax^Dmg002ovPDHLkV1m~Pzi9vf literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/select_device.png b/trunk/gosa-plugins/goto/html/images/select_device.png new file mode 100644 index 0000000000000000000000000000000000000000..546c7afad57616b7bca3eeae9eed8381bbeb4487 GIT binary patch literal 861 zcmV-j1ETziP)@2HQ*UHxaBpO3pY$&$0000EbVXQnL3MO! zZ*l-tZfkCDcW#U!4DtW~03Lc&Sad{Xb7OL8aCB*JZU6vyoJ&+F$V@INElLFd5MKj+ z>hujP00084Nkl z7bAo)@FL#5c?dih2whB=2sST9R+vy~5R+6UXrp9ICyCpu&fMN@uXFGFu9IS*)T!_3 zIemEG;UOj`XRjFy)bm(OG$v%7q$J}zl63s3r|02IfXL!65q|$ha5|#r>zypVM`f%; z(l8_=s8+&TImpZ|FaPKs9PE`Y1lHHL#I?O+_Y|CV^b70)r|+yT1!MnF39bh>6mdj*iyb0H6Z^zkjpSVqvFP zmT>?ot`wO;2RC6dT|!#QAel@-I!Z&>KZK$xP!$xOUg2bLyWicbt1BC$D3XvdLaPHf&IFF*5Ln-dJ$l^60z~!{0DzH^H@#I=CC>-~Yvx}b?f>)}Gkg*-0v;oS00000NkvXXu0mjfen5G> literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/select_mimetype.png b/trunk/gosa-plugins/goto/html/images/select_mimetype.png new file mode 100644 index 0000000000000000000000000000000000000000..8210b43eb12353cc6f993947f5fea5d1641d99cb GIT binary patch literal 851 zcmV-Z1FZasP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;$w@>(RCwBA?C^QBY98z;HI3f#D}3 z1H*rA1_o9>28O3c7#QyFfT%*Z0>m%*&oE)a1O|WrJdC>y03Z-TUt#4aI+Lq7xSod; z#)3}>P=44aWWovX4{ey1eWDP13CVCLt@X{W074kRA&z3h=N}9Vm!JJ**m;MML0OQ2 zA=-=yWE|LhhTp&8N&x~0ZotoRKL2?N6m1_oxvuMBMO4#K?v5I}Gj@V?r>;G%Yf;p5lK3^Q-ZGQ9g} z#~>@kz+kKNkHJBSk%9laC&P;?QVbG29~n6Qo`D+x5I}GP4!)LV5EA5Pc*#-1;9;P~ zVE64SgNncphHqcKF!23kV&Gr{2Aq-)1B19Q0~@O_+yH<8f*YWq;LIRv63k!#j32wt zzZkY3eZ;`S@P$D~`VWK9>zfRce||8qv0E@OeBfgE$Hm3~^E*HQ!40sK{loD7`FnJUz_dX{5uzC#KE7{OJt?!^c|;zyEMByyq8Z_{qx7@P}8JK?bT1Ab{WosK{_L zynX)}m_;vp-!?&N`8UD%XF??s|V>o#1I8^mB28MH&!7P9Pf*Zib z#>^lsAqY-{|M(0UzJB_^z`(@Fz{11Nz|6|V!1(nGSY3E{IG6?{JrH#ax3X1I9(0mK3mBo-iR d1_6Ko0|4SW*7X~+Jplj!002ovPDHLkV1nV3al`-s literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/sysinfo.png b/trunk/gosa-plugins/goto/html/images/sysinfo.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac401c6f4a2c335bff69e1f955ef96856e21a48 GIT binary patch literal 836 zcmV-K1H1f*P)k-9#Ikbbm6x|~-}_(N5Ej7c_VcP}C)u01kB9A zvPwc?GYSq04OBf#84>3505ZDq0Phq60MHjf0KUZ00NqT%0R962074Q=0Oj)N038b@ z0HoQh0RQ^!F9L|g-aee=$B!=z41XE_{Q1kw@R>t|VVB8QhR=*Y8Q!s>z(J0t65fAD=MLZ+{v71L42_>`gF%>AltD~SkwN&s5QCJU9K+_{yTGvk z5I`)j==jUZ%pi8-1;b_4;|$#VQVd@Y@i1H!IKv>S;mq*wJ1@ig|92T4A9%>{i1Pu1 zi?#>@6EibdA3y+s4FE+E%g^5ox6Cye{{3TN`1kWQgQBY-!{%ov7~bD-WqAMoAH!Se zMGU|7*%&_j`o_TdfD^0-NH7Bg5DO!S#l*XI+) z-~R!PV*CH^=NASRVJU`FSFSPqzr(N!7|1IjF8&AeH8`yS1Q4UOb+F@`H=lBD-rBbj zXzUB1ARkBqDYY^KmEHu3T*Q`?0RjkyK$-*zBzs0|f&c-;NNIKk2rvL0bM$@_sPdQq O0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ0tk-OlK0J5%RKl$ZR3;ww?F;)|LyPp{~b%O z|F4;N;{T)X|No!=@b7=_n*0AntmpmbQ|+4%(+3bhFwFt#S%>~lz4GP%%b)-Mzy0<9 z|2rVQaR1}~lQ-Y}zyIz3{~Moy{Ez?tcb@(9U(jgUe=e!E0FYjQ0Af~6+AF~D@Be-$ zKXs0HBO!+WK*4`N40JgICl5OV7au3XZ=gVVMk2$p1N#`f0|FR+i3u`X*?!4`iPd%{ zKmalQ|NAe1ONvh*(n6f!7f|8PzYzQbgh6~DE=x~j*u7~TgR!$0!yBN0tez|bpQ?nw zzdwHi00M~V|DV713MxVj94t&=4Ium-N`nk32Ws90)LbxaIm2H~JBIyFzB1hZ_>)1- zQ4u)mHn@KXrNb@l;1LLNzvXFu8`v-;%OBXP>XH_!1_{qp1 z1N0W#uRjbo58h@Fmf!~&pa2j+OhAHx5h(HI^=F1RU;hG~$iVOxi0?mmz+i804-Vv= z)7ly4rg$-M{QAnk%k-at_3Kv#P8Ogo|Nk=p1P}`-k$ipkmBBK|h=B!Y^@pGT8912# zGZggCWw>_y0K>c!w-|UuC4k=f&+y|v3j;SVGlN5{1;g>RXF+B^00=p1Y;hc1zbQ2o}7Ka@ZijS zP?FvN5I{`N_eFz~=gKLE8UFqF4K{?EnSlZ5QigAzelmOpdXERl28o0G{rBq+hD8-? zK(;3WgZcwN05OAD-=1!|@sHD4;rO1L2I^`e49c?nK(8<`tlDs$;p&-(4Cdx?KxZ>B zoH~4$p(=6?!|NySCjd211nC6`Ae79+tK1s^%zg8X4W$GkLUb8a{{6>r^WHm# zWs6RO4EO-G8J?K{0*DbkQ*ny7fKwRIAbTKI07divfBzqV0u1D5kh7810|XcV^d_H1 Tk^AtW00000NkvXXu0mjfSz_lE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/goto/html/images/view_logs.png b/trunk/gosa-plugins/goto/html/images/view_logs.png new file mode 100644 index 0000000000000000000000000000000000000000..1930fb233f6ac09c41a8b0107c911a6fb8a27633 GIT binary patch literal 692 zcmV;l0!#ggP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;DoI2^RCwBA?C^QBY98aO&=VhA%(< zGCXHBYn=d(;1CQO*X01!YdFq2q+J!KGJ zVr1YE`p2Lx#?J8h%NGVlCKiU@zyB~WF|#mm^9nNj2fFpo-+w^-7w!Up0D>DJ%=Mdr zk&%(%@1H*m92^V`KiU5=Ff;#U;NjtAU}t9sPl`sGhKyU+icz76CSXjUcKn8&f0RfOkkT{4B zas>y-e@FlzfG`XIna;_{2{z>4zkhH;e*gXrb_pvhE7%ek00TmtzJU$@{{1`HV33%lr6pKBKmfrF067nYVcq~?5Fg}pE-o%`*nkX$g$E1(1Q6T+ zkVcrZLC)pl;{$sOWDrOU7I=S=(f|km1Q6VSSFc_{q7i5-$f@t%y@UH5WH?CUlP6Cw zk}^O5!3_Xu28A%lzfw|C@OTFq07^t(zkUT95FQ>5Ru4+Xg@uLO009IyKtMnMY=DS} z2!p7oDA)j4+=Bqffb-|iBWnif{R, 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:31+0100\n" +"PO-Revision-Date: 2008-12-04 11:18+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/ogroups/goto/termgroup.tpl:2 admin/devices/remove.tpl:2 +#: admin/applications/remove.tpl:2 admin/mimetypes/remove.tpl:2 +#: admin/systems/ppd/remove_ppd.tpl:2 addons/goto/remove.tpl:2 +#: personal/environment/class_environment.inc:139 +#: personal/environment/class_environment.inc:307 +#: personal/environment/class_environment.inc:360 +#: personal/environment/class_environment.inc:364 +msgid "Warning" +msgstr "Warnung" + +#: admin/ogroups/goto/termgroup.tpl:2 +msgid "" +"Actions you choose here influence all systems in this object group. " +"Additionally, all values editable here can be inherited by the clients " +"assigned to this object group." +msgstr "" +"Aktionen die hier ausgewählt werden beeinflussen alle Systeme dieser " +"Objektgruppe. Zusätzlich können alle hier einstellbaren Werte von den " +"Systemen ererbt werden." + +#: admin/ogroups/goto/termgroup.tpl:6 +#: admin/devices/class_deviceGeneric.inc:251 +#: admin/applications/class_applicationGeneric.inc:597 +#: admin/mimetypes/generic.tpl:4 admin/mimetypes/paste_generic.tpl:4 +#: admin/mimetypes/class_mimetypeGeneric.inc:715 +#: admin/systems/goto/class_printGeneric.inc:920 +#: admin/systems/goto/class_workstationGeneric.inc:698 +msgid "Generic" +msgstr "Allgemein" + +#: admin/ogroups/goto/termgroup.tpl:14 +#: admin/ogroups/goto/class_termgroup.inc:145 +#: admin/systems/goto/workstation.tpl:95 +#: admin/systems/goto/class_workstationGeneric.inc:489 +#: admin/systems/goto/class_terminalGeneric.inc:480 +#: admin/systems/goto/terminal.tpl:117 +msgid "NTP server" +msgstr "Zeit-Server" + +#: admin/ogroups/goto/termgroup.tpl:17 admin/systems/goto/workstation.tpl:98 +#: admin/systems/goto/terminal.tpl:120 +msgid "Choose server to use for synchronizing time" +msgstr "" +"Wählen Sie den Server, der zur Zeit-Synchronisation genutzt werden soll" + +#: admin/ogroups/goto/termgroup.tpl:47 +#: admin/ogroups/goto/class_termgroup.inc:378 +#: admin/systems/goto/workstation.tpl:55 +#: admin/systems/goto/class_terminalGeneric.inc:669 +#: admin/systems/goto/terminal.tpl:47 +msgid "Mode" +msgstr "Modus" + +#: admin/ogroups/goto/termgroup.tpl:50 admin/systems/goto/workstation.tpl:58 +#: admin/systems/goto/terminal.tpl:50 +msgid "Select terminal mode" +msgstr "Wählen Sie den Terminal-Modus" + +#: admin/ogroups/goto/termgroup.tpl:58 +#: admin/ogroups/goto/class_termgroup.inc:379 +#: admin/systems/services/syslog/class_goSyslogServer.inc:27 +#: admin/systems/services/syslog/class_goSyslogServer.inc:47 +#: admin/systems/goto/workstation.tpl:65 +#: admin/systems/goto/class_workstationGeneric.inc:712 +#: admin/systems/goto/terminal.tpl:57 +msgid "Syslog server" +msgstr "Syslog-Server" + +#: admin/ogroups/goto/termgroup.tpl:61 admin/systems/goto/workstation.tpl:68 +#: admin/systems/goto/terminal.tpl:60 +msgid "Choose server to use for logging" +msgstr "Wählen Sie den Server, der für das Protokollieren genutzt werden soll" + +#: admin/ogroups/goto/termgroup.tpl:69 +#: admin/ogroups/goto/class_termgroup.inc:382 +#: admin/systems/goto/class_terminalGeneric.inc:672 +#: admin/systems/goto/terminal.tpl:76 +msgid "Root server" +msgstr "Root-Server" + +#: admin/ogroups/goto/termgroup.tpl:72 admin/systems/goto/terminal.tpl:79 +msgid "Select NFS root filesystem to use" +msgstr "Wählen Sie das NFS-Root-Dateisystem" + +#: admin/ogroups/goto/termgroup.tpl:79 +#: admin/ogroups/goto/class_termgroup.inc:383 +#: admin/systems/goto/class_terminalGeneric.inc:673 +#: admin/systems/goto/terminal.tpl:86 +msgid "Swap server" +msgstr "Auslagerungs-Server" + +#: admin/ogroups/goto/termgroup.tpl:82 admin/systems/goto/terminal.tpl:89 +msgid "Choose NFS filesystem to place swap files on" +msgstr "" +"Wählen Sie das NFS-Dateisystem, in dem die Auslagerungsdateien abgelegt " +"werden sollen" + +#: admin/ogroups/goto/termgroup.tpl:110 admin/systems/goto/workstation.tpl:130 +#: admin/systems/goto/terminal.tpl:156 addons/goto/class_gotomasses.inc:415 +msgid "Action" +msgstr "Aktion" + +#: admin/ogroups/goto/termgroup.tpl:115 admin/systems/goto/workstation.tpl:137 +#: admin/systems/goto/terminal.tpl:161 +msgid "Select action to execute for this terminal" +msgstr "Wählen Sie die auszuführende Aktion für dieses Terminal" + +#: admin/ogroups/goto/termgroup.tpl:123 admin/applications/generic.tpl:24 +#: admin/applications/class_applicationGeneric.inc:438 +#: admin/applications/class_applicationGeneric.inc:609 +#: admin/systems/goto/workstation.tpl:146 +#: admin/systems/goto/workstation.tpl:150 admin/systems/goto/terminal.tpl:169 +#: addons/goto/class_gotomasses.inc:383 +msgid "Execute" +msgstr "Ausführen" + +#: admin/ogroups/goto/class_termgroup.inc:48 +#: admin/systems/goto/class_workstationGeneric.inc:138 +#: admin/systems/goto/class_terminalGeneric.inc:122 +msgid "Activated" +msgstr "Aktiv" + +#: admin/ogroups/goto/class_termgroup.inc:49 +#: admin/systems/goto/class_workstationGeneric.inc:139 +#: admin/systems/goto/class_terminalGeneric.inc:121 +#: addons/goto/class_gotomasses.inc:538 +msgid "Locked" +msgstr "Gesperrt" + +#: admin/ogroups/goto/class_termgroup.inc:95 +#: admin/systems/goto/class_terminalGeneric.inc:281 +msgid "Local swap" +msgstr "Lokaler Auslagerungsspeicher" + +#: admin/ogroups/goto/class_termgroup.inc:101 +#: admin/ogroups/goto/class_termgroup.inc:113 +#: admin/systems/goto/class_terminalStartup.inc:116 +#: admin/systems/goto/class_terminalStartup.inc:120 +#: admin/systems/goto/class_terminalService.inc:175 +#: admin/systems/goto/class_terminalService.inc:256 +#: admin/systems/goto/class_terminalService.inc:264 +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_terminalService.inc:270 +#: admin/systems/goto/class_terminalService.inc:273 +#: admin/systems/goto/class_terminalService.inc:276 +#: admin/systems/goto/class_terminalService.inc:279 +#: admin/systems/goto/class_terminalService.inc:282 +#: admin/systems/goto/class_workstationGeneric.inc:154 +#: admin/systems/goto/class_workstationStartup.inc:180 +#: admin/systems/goto/class_workstationStartup.inc:210 +#: admin/systems/goto/class_workstationService.inc:191 +#: admin/systems/goto/class_workstationService.inc:194 +#: admin/systems/goto/class_workstationService.inc:197 +#: admin/systems/goto/class_workstationService.inc:200 +#: admin/systems/goto/class_workstationService.inc:203 +#: admin/systems/goto/class_workstationService.inc:206 +#: admin/systems/goto/class_workstationService.inc:209 +#: admin/systems/goto/class_workstationService.inc:220 +#: admin/systems/goto/class_workstationService.inc:221 +#: admin/systems/goto/class_workstationService.inc:222 +#: admin/systems/goto/class_workstationService.inc:223 +#: admin/systems/goto/class_workstationService.inc:224 +#: admin/systems/goto/class_workstationService.inc:225 +#: admin/systems/goto/class_workstationService.inc:226 +#: admin/systems/goto/class_terminalGeneric.inc:137 +#: admin/systems/goto/class_terminalGeneric.inc:287 +#: admin/systems/goto/class_terminalGeneric.inc:299 +msgid "inherited" +msgstr "geerbt" + +#: admin/ogroups/goto/class_termgroup.inc:203 +#: admin/systems/goto/class_terminalService.inc:666 +#: admin/systems/goto/class_workstationGeneric.inc:212 +#: admin/systems/goto/class_workstationGeneric.inc:635 +#: admin/systems/goto/class_workstationStartup.inc:926 +#: admin/systems/goto/class_workstationStartup.inc:1053 +#: admin/systems/goto/class_workstationStartup.inc:1113 +#: admin/systems/goto/class_workstationService.inc:554 +#: admin/systems/goto/class_terminalGeneric.inc:187 +#: admin/systems/goto/class_terminalGeneric.inc:594 +#: addons/goto/class_gotomasses.inc:328 +#: addons/goto/class_goto_import_file.inc:124 +msgid "Service infrastructure" +msgstr "Dienst-Infrastruktur" + +#: admin/ogroups/goto/class_termgroup.inc:207 +#: admin/systems/goto/class_workstationGeneric.inc:216 +#: admin/systems/goto/class_terminalGeneric.inc:191 +msgid "Event error" +msgstr "Ereignis-Fehler" + +#: admin/ogroups/goto/class_termgroup.inc:208 +#: admin/systems/goto/class_workstationGeneric.inc:217 +#: admin/systems/goto/class_terminalGeneric.inc:192 +#, php-format +msgid "Event '%s' is not available!" +msgstr "Das Ereignis '%s' ist nicht verfügbar!" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:265 +#: addons/goto/events/class_DaemonEvent_halt.inc:31 +#: addons/goto/events/class_DaemonEvent_halt.inc:32 +msgid "Switch off" +msgstr "Ausschalten" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:266 +#: addons/goto/events/class_DaemonEvent_reboot.inc:29 +#: addons/goto/events/class_DaemonEvent_reboot.inc:30 +msgid "Reboot" +msgstr "Neustarten" + +#: admin/ogroups/goto/class_termgroup.inc:258 +msgid "Instant update" +msgstr "Sofortiges Update" + +#: admin/ogroups/goto/class_termgroup.inc:259 +msgid "Scheduled update" +msgstr "Geplantes Update" + +#: admin/ogroups/goto/class_termgroup.inc:260 +msgid "Wake" +msgstr "Aufwecken" + +#: admin/ogroups/goto/class_termgroup.inc:261 +#: admin/systems/goto/class_workstationGeneric.inc:300 +#: admin/systems/goto/class_workstationGeneric.inc:308 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:32 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:33 +msgid "Reinstall" +msgstr "Neu-Installation" + +#: admin/ogroups/goto/class_termgroup.inc:262 +#: admin/systems/goto/class_workstationGeneric.inc:301 +#: addons/goto/events/class_DaemonEvent_rescan.inc:28 +#: addons/goto/events/class_DaemonEvent_rescan.inc:29 +msgid "Rescan hardware" +msgstr "Hardware neu erkennen" + +#: admin/ogroups/goto/class_termgroup.inc:263 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:28 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:29 +msgid "Memory test" +msgstr "Speichertest" + +#: admin/ogroups/goto/class_termgroup.inc:264 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:28 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:29 +msgid "System analysis" +msgstr "Systemanalyse" + +#: admin/ogroups/goto/class_termgroup.inc:362 +#: admin/groups/apps/class_groupApplication.inc:649 +#: admin/groups/apps/class_groupApplication.inc:1330 +#: admin/groups/apps/class_groupApplication.inc:1344 +#: admin/groups/apps/class_groupApplication.inc:1358 +#: admin/devices/class_deviceGeneric.inc:196 +#: admin/applications/class_applicationParameters.inc:161 +#: admin/applications/class_applicationParameters.inc:224 +#: admin/applications/class_applicationGeneric.inc:271 +#: admin/applications/class_applicationGeneric.inc:285 +#: admin/applications/class_applicationGeneric.inc:515 +#: admin/mimetypes/class_mimetypeGeneric.inc:494 +#: admin/mimetypes/class_mimetypeGeneric.inc:506 +#: admin/mimetypes/class_mimetypeGeneric.inc:521 +#: admin/systems/services/kiosk/class_goKioskService.inc:249 +#: admin/systems/services/ldap/class_goLdapServer.inc:117 +#: admin/systems/services/ntp/class_goNtpServer.inc:98 +#: admin/systems/services/terminal/class_goTerminalServer.inc:103 +#: admin/systems/services/shares/class_goShareServer.inc:192 +#: admin/systems/services/shares/class_goShareServer.inc:261 +#: admin/systems/services/shares/class_goShareServer.inc:277 +#: admin/systems/services/shares/class_goShareServer.inc:290 +#: admin/systems/goto/class_printGeneric.inc:601 +#: admin/systems/goto/class_printGeneric.inc:885 +#: admin/systems/goto/class_terminalStartup.inc:455 +#: admin/systems/goto/class_ArpNewDevice.inc:69 +#: admin/systems/goto/class_terminalService.inc:590 +#: admin/systems/goto/class_workstationGeneric.inc:364 +#: admin/systems/goto/class_workstationGeneric.inc:596 +#: admin/systems/goto/class_workstationGeneric.inc:613 +#: admin/systems/goto/class_workstationStartup.inc:877 +#: admin/systems/goto/class_workstationService.inc:447 +#: admin/systems/goto/class_terminalGeneric.inc:353 +#: admin/systems/goto/class_terminalGeneric.inc:580 +#: personal/environment/class_environment.inc:1058 +#: personal/environment/class_environment.inc:1315 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/ogroups/goto/class_termgroup.inc:370 +msgid "System" +msgstr "System" + +#: admin/ogroups/goto/class_termgroup.inc:371 +msgid "System group" +msgstr "System-Gruppe" + +#: admin/ogroups/goto/class_termgroup.inc:380 +#: admin/systems/goto/class_workstationGeneric.inc:716 +#: admin/systems/goto/class_terminalGeneric.inc:678 +msgid "Action flag" +msgstr "Ablaufstatus" + +#: admin/ogroups/goto/class_termgroup.inc:381 +#: admin/systems/goto/class_workstationGeneric.inc:713 +msgid "Ntp server" +msgstr "NTP-Dienst" + +#: admin/groups/apps/edit_entry.tpl:8 +msgid "Folder image" +msgstr "Verzeichnisbild" + +#: admin/groups/apps/edit_entry.tpl:12 +msgid "Could not load image." +msgstr "Konnte Bild nicht laden." + +#: admin/groups/apps/edit_entry.tpl:14 +#: admin/systems/goto/class_gotoLpdEnabled.inc:58 +msgid "None" +msgstr "Keine" + +#: admin/groups/apps/edit_entry.tpl:24 +msgid "Upload image" +msgstr "Bild Hochladen" + +#: admin/groups/apps/edit_entry.tpl:28 admin/applications/generic.tpl:142 +#: admin/systems/ppd/printerPPDDialog.tpl:21 +#: addons/goto/goto_import_file.tpl:25 +msgid "Upload" +msgstr "Hochladen" + +#: admin/groups/apps/edit_entry.tpl:32 +msgid "Reset image" +msgstr "Bild zurücksetzen" + +#: admin/groups/apps/edit_entry.tpl:33 +msgid "Reset" +msgstr "Zurücksetzen" + +#: admin/groups/apps/edit_entry.tpl:40 +#: admin/applications/class_applicationGeneric.inc:557 +msgid "Application settings" +msgstr "Anwendungs-Einstellungen" + +#: admin/groups/apps/edit_entry.tpl:43 +#: admin/devices/class_deviceGeneric.inc:90 +#: admin/devices/class_deviceGeneric.inc:114 +#: admin/devices/class_deviceGeneric.inc:260 +#: admin/applications/class_applicationParameters.inc:193 +#: admin/applications/class_applicationGeneric.inc:430 +#: admin/applications/class_applicationGeneric.inc:434 +#: admin/applications/class_applicationGeneric.inc:606 +#: admin/applications/class_applicationGeneric.inc:610 +#: admin/mimetypes/class_mimetypeGeneric.inc:532 +#: admin/mimetypes/class_mimetypeGeneric.inc:724 +#: admin/systems/services/shares/class_goShareServer.inc:398 +#: admin/systems/services/nfs/class_servNfs.inc:199 +#: admin/systems/services/nfs/class_servNfs.inc:202 +#: admin/systems/services/nfs/class_servNfs.inc:235 +#: admin/systems/services/nfs/servnfs.tpl:9 +#: admin/systems/goto/class_printGeneric.inc:670 +#: admin/systems/goto/class_printGeneric.inc:675 +#: admin/systems/goto/class_printGeneric.inc:694 +#: admin/systems/goto/class_printGeneric.inc:929 +#: admin/systems/goto/class_ArpNewDevice.inc:46 +#: admin/systems/goto/class_workstationGeneric.inc:456 +#: admin/systems/goto/class_workstationGeneric.inc:461 +#: admin/systems/goto/class_workstationGeneric.inc:479 +#: admin/systems/goto/class_terminalGeneric.inc:446 +#: admin/systems/goto/class_terminalGeneric.inc:451 +#: admin/systems/goto/class_terminalGeneric.inc:470 +#: admin/systems/goto/class_terminalGeneric.inc:665 +#: personal/environment/class_logonManagementDialog.inc:103 +msgid "Name" +msgstr "Name" + +#: admin/groups/apps/edit_entry.tpl:53 +msgid "Application options" +msgstr "Anwendungsoptionen" + +#: admin/groups/apps/class_groupApplication.inc:381 +#: admin/groups/apps/class_groupApplication.inc:385 +msgid "Menu" +msgstr "Menü" + +#: admin/groups/apps/class_groupApplication.inc:439 +msgid "Back" +msgstr "Zurück" + +#: admin/groups/apps/class_groupApplication.inc:450 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:147 +msgid "back" +msgstr "zurück" + +#: admin/groups/apps/class_groupApplication.inc:458 +msgid "department" +msgstr "Abteilung" + +#: admin/groups/apps/class_groupApplication.inc:481 +#: admin/applications/class_applicationManagement.inc:368 +#: admin/applications/class_applicationManagement.inc:449 +#: admin/applications/class_applicationGeneric.inc:127 +msgid "application" +msgstr "Anwendung" + +#: admin/groups/apps/class_groupApplication.inc:1146 +msgid "Not available in release." +msgstr "Nicht verfügbar in Release." + +#: admin/groups/apps/class_groupApplication.inc:1373 +#: admin/applications/class_applicationManagement.inc:24 +#: admin/mimetypes/generic.tpl:117 admin/mimetypes/generic.tpl:177 +msgid "Applications" +msgstr "Anwendungen" + +#: admin/groups/apps/class_groupApplication.inc:1374 +msgid "Group applications" +msgstr "Anwendungen der Gruppe" + +#: admin/groups/apps/class_groupApplication.inc:1381 +#: admin/applications/class_divListApplication.inc:114 +#: admin/applications/class_divListApplication.inc:150 +#: admin/applications/class_applicationGeneric.inc:603 +#: admin/mimetypes/class_mimetypeGeneric.inc:728 +msgid "Application" +msgstr "Anwendung" + +#: admin/groups/apps/class_groupApplication.inc:1382 +#: admin/groups/apps/app_list.tpl:5 admin/groups/apps/app_list.tpl:53 +#: admin/systems/goto/workstationStartup.tpl:83 +#: admin/systems/goto/workstationStartup.tpl:123 +msgid "Release" +msgstr "Release" + +#: admin/groups/apps/class_groupApplication.inc:1383 +msgid "Application parameter" +msgstr "Anwendungs-Parameter" + +#: admin/groups/apps/app_list.tpl:11 +msgid "Copy menu" +msgstr "Menü kopieren" + +#: admin/groups/apps/app_list.tpl:13 +msgid "Paste menu from" +msgstr "Menü einfügen von" + +#: admin/groups/apps/app_list.tpl:17 +msgid "Delete menu" +msgstr "Menü entfernen" + +#: admin/groups/apps/app_list.tpl:70 admin/groups/apps/app_list.tpl:74 +msgid "Folder" +msgstr "Verzeichnis" + +#: admin/groups/apps/app_list.tpl:82 admin/groups/apps/app_list.tpl:103 +#: admin/groups/apps/app_list.tpl:128 addons/goto/class_gotomasses.inc:432 +msgid "Move up" +msgstr "Nach oben bewegen" + +#: admin/groups/apps/app_list.tpl:84 admin/groups/apps/app_list.tpl:105 +#: admin/groups/apps/app_list.tpl:130 addons/goto/class_gotomasses.inc:434 +msgid "Move down" +msgstr "Nach unten bewegen" + +#: admin/groups/apps/app_list.tpl:86 admin/groups/apps/app_list.tpl:107 +#: admin/groups/apps/app_list.tpl:132 +#: admin/devices/class_divListDevices.inc:100 +#: admin/applications/class_applicationParameters.inc:125 +#: admin/applications/class_divListApplication.inc:120 +#: admin/mimetypes/class_divListMimeTypes.inc:122 +#: admin/systems/goto/terminalService.tpl:212 +#: admin/systems/goto/terminalStartup.tpl:115 +#: admin/systems/goto/workstationStartup.tpl:233 +#: admin/systems/goto/printer.tpl:71 addons/goto/class_gotomasses.inc:269 +#: addons/goto/class_gotomasses.inc:376 addons/goto/class_gotomasses.inc:484 +#: addons/goto/class_gotomasses.inc:488 +#: addons/goto/events/class_DaemonEvent.inc:230 +#: personal/environment/environment.tpl:238 +msgid "Remove" +msgstr "Entfernen" + +#: admin/groups/apps/app_list.tpl:88 admin/groups/apps/app_list.tpl:134 +#: admin/systems/services/shares/goShareServer.tpl:17 +#: admin/systems/goto/printer.tpl:68 addons/goto/class_gotomasses.inc:469 +#: personal/environment/environment.tpl:274 +msgid "Edit" +msgstr "Bearbeiten" + +#: admin/groups/apps/app_list.tpl:121 +msgid "Entry" +msgstr "Eintrag" + +#: admin/groups/apps/app_list.tpl:143 +msgid "add to" +msgstr "hinzufügen" + +#: admin/groups/apps/app_list.tpl:149 admin/groups/apps/app_list.tpl:159 +msgid "Add selected applications to this folder." +msgstr "Füge gewählte Anwendungen zu diesem Verzeichnis hinzu." + +#: admin/groups/apps/app_list.tpl:150 +msgid "Separator" +msgstr "Feldtrenner" + +#: admin/groups/apps/app_list.tpl:150 +msgid "Add a separator to this folder." +msgstr "Füge Feldtrenner zu diesem Verzeichnis hinzu." + +#: admin/devices/class_divListDevices.inc:33 +#: admin/devices/class_divListDevices.inc:34 +msgid "List of defined devices" +msgstr "Liste der definierten Geräte" + +#: admin/devices/class_divListDevices.inc:45 +#: admin/applications/class_divListApplication.inc:45 +#: admin/mimetypes/class_divListMimeTypes.inc:45 +msgid "Select all" +msgstr "Alle auswählen" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/devices/deviceGeneric.tpl:20 admin/devices/paste_deviceGeneric.tpl:9 +msgid "Device name" +msgstr "Gerätename" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/applications/class_divListApplication.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +msgid "Department" +msgstr "Abteilung" + +#: admin/devices/class_divListDevices.inc:52 +#: admin/devices/class_divListDevices.inc:87 +#: admin/applications/class_divListApplication.inc:52 +#: admin/applications/class_divListApplication.inc:107 +#: admin/mimetypes/class_divListMimeTypes.inc:52 +#: admin/mimetypes/class_divListMimeTypes.inc:109 +#: addons/goto/class_gotomasses.inc:365 +msgid "Actions" +msgstr "Aktionen" + +#: admin/devices/class_divListDevices.inc:58 +msgid "Display devices matching" +msgstr "Zeige die Geräte, auf die das Folgende passt" + +#: admin/devices/class_divListDevices.inc:82 admin/devices/deviceGeneric.tpl:9 +#: admin/devices/class_deviceGeneric.inc:261 admin/applications/generic.tpl:42 +#: admin/applications/class_divListApplication.inc:90 +#: admin/applications/class_applicationGeneric.inc:607 +#: admin/mimetypes/generic.tpl:44 +#: admin/mimetypes/class_divListMimeTypes.inc:93 +#: admin/mimetypes/class_mimetypeGeneric.inc:727 +#: admin/systems/services/ldap/class_goLdapServer.inc:79 +#: admin/systems/services/ldap/class_goLdapServer.inc:82 +#: admin/systems/goto/workstation.tpl:35 +#: admin/systems/goto/class_printGeneric.inc:930 +#: admin/systems/goto/class_workstationGeneric.inc:710 +#: admin/systems/goto/class_terminalGeneric.inc:667 +#: admin/systems/goto/printer.tpl:27 admin/systems/goto/terminal.tpl:27 +#: addons/goto/class_target_list.inc:152 addons/goto/goto_import_file.tpl:41 +#: addons/goto/events/class_EventTargetAddList.inc:161 +#: addons/goto/events/class_EventTargetAddUsersList.inc:130 +msgid "Base" +msgstr "Basis" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit department" +msgstr "Aktualisieren" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit" +msgstr "Übertragen" + +#: admin/devices/class_divListDevices.inc:92 +#: admin/applications/class_divListApplication.inc:111 +#: admin/mimetypes/class_divListMimeTypes.inc:114 +#: admin/systems/goto/chooser.tpl:16 addons/goto/class_gotomasses.inc:366 +msgid "Create" +msgstr "Anlegen" + +#: admin/devices/class_divListDevices.inc:94 +#: admin/devices/class_divListDevices.inc:131 +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/systems/goto/gotoLpdEnable.tpl:27 +#: admin/systems/goto/gotoLpdEnable.tpl:63 +msgid "Device" +msgstr "Gerät" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "edit" +msgstr "Bearbeiten" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "Edit this entry" +msgstr "Diesen Eintrag bearbeiten" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:136 +msgid "delete" +msgstr "Entfernen" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +msgid "Delete this entry" +msgstr "Diesen Eintrag entfernen" + +#: admin/devices/class_divListDevices.inc:205 +msgid "Number of listed devices" +msgstr "Anzahl der angezeigten Geräte" + +#: admin/devices/class_divListDevices.inc:206 +#: admin/applications/class_divListApplication.inc:243 +#: admin/mimetypes/class_divListMimeTypes.inc:244 +msgid "Number of listed departments" +msgstr "Anzahl der angezeigten Abteilungen" + +#: admin/devices/remove.tpl:6 +msgid "" +"This may be used by several users/groups. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dies wird unter Umständen von verschiedenen Benutzern/Gruppen genutzt. Bitte " +"prüfen Sie genau, ob Sie dies wünschen, da GOsa keine Möglichkeit hat, die " +"Daten wiederherzustellen." + +#: admin/devices/remove.tpl:9 admin/applications/remove.tpl:9 +#: admin/mimetypes/remove.tpl:9 addons/goto/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Wenn Sie sicher sind, drücken Sie 'Entfernen' um fortzufahren oder " +"'Abbrechen' zum Abbruch." + +#: admin/devices/deviceGeneric.tpl:2 admin/devices/paste_deviceGeneric.tpl:2 +#: admin/devices/class_deviceGeneric.inc:257 +msgid "Devices" +msgstr "Geräte" + +#: admin/devices/deviceGeneric.tpl:29 admin/devices/class_deviceGeneric.inc:93 +#: admin/devices/class_deviceGeneric.inc:262 admin/applications/generic.tpl:33 +#: admin/applications/class_applicationGeneric.inc:608 +#: admin/mimetypes/generic.tpl:34 admin/mimetypes/paste_generic.tpl:21 +#: admin/mimetypes/class_mimetypeGeneric.inc:726 +#: admin/systems/services/shares/class_goShareServer.inc:400 +#: admin/systems/services/nfs/class_servNfs.inc:207 +#: admin/systems/services/nfs/servnfs.tpl:19 +#: admin/systems/goto/workstation.tpl:19 +#: admin/systems/goto/ArpNewDevice.tpl:17 +#: admin/systems/goto/class_printGeneric.inc:931 +#: admin/systems/goto/class_workstationGeneric.inc:708 +#: admin/systems/goto/class_terminalGeneric.inc:666 +#: admin/systems/goto/printer.tpl:16 admin/systems/goto/terminal.tpl:19 +#: addons/goto/class_gotomasses.inc:917 +#: personal/environment/class_logonManagementDialog.inc:111 +#: personal/environment/logonManagement.tpl:17 +msgid "Description" +msgstr "Beschreibung" + +#: admin/devices/deviceGeneric.tpl:38 +msgid "Device type" +msgstr "Gerätetyp" + +#: admin/devices/deviceGeneric.tpl:42 +msgid "Choose the device type" +msgstr "Wählen Sie den Gerätetyp" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "Serial number" +msgstr "Seriennummer" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "(iSerial)" +msgstr "(iSerial)" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "Vendor-ID" +msgstr "Anbieter-ID" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "(idVendor)" +msgstr "(idVendor)" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "Product-ID" +msgstr "Produkt-ID" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "(idProduct)" +msgstr "(idProduct)" + +#: admin/devices/main.inc:49 admin/devices/main.inc:51 +msgid "Hotplug device management" +msgstr "Verwaltung der Hotplug-Geräte" + +#: admin/devices/class_deviceGeneric.inc:29 +msgid "Digital camera" +msgstr "Digitalkamera" + +#: admin/devices/class_deviceGeneric.inc:30 +msgid "USB stick" +msgstr "USB-Stick" + +#: admin/devices/class_deviceGeneric.inc:31 +msgid "CD/DVD drive" +msgstr "CD/DVD-Laufwerk" + +#: admin/devices/class_deviceGeneric.inc:98 +#: admin/devices/class_deviceGeneric.inc:100 +msgid "iSerial" +msgstr "iSerial" + +#: admin/devices/class_deviceGeneric.inc:103 +#: admin/devices/class_deviceGeneric.inc:264 +#: admin/systems/goto/class_gotoLpdEnabled.inc:51 +msgid "Serial" +msgstr "Seriell" + +#: admin/devices/class_deviceGeneric.inc:106 +msgid "Vendor ID" +msgstr "Lieferanten-ID" + +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/applications/class_applicationGeneric.inc:264 +#: admin/applications/class_applicationGeneric.inc:338 +#: admin/applications/class_applicationGeneric.inc:370 +#: admin/applications/class_applicationGeneric.inc:375 +#: admin/applications/class_applicationGeneric.inc:380 +#: admin/applications/class_applicationGeneric.inc:384 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: admin/systems/services/kiosk/class_goKioskService.inc:161 +#: admin/systems/services/kiosk/class_goKioskService.inc:164 +#: admin/systems/services/kiosk/class_goKioskService.inc:234 +#: admin/systems/services/shares/class_goShareServer.inc:98 +#: admin/systems/services/shares/class_goShareServer.inc:233 +#: admin/systems/services/nfs/class_servNfs.inc:43 +#: admin/systems/services/nfs/class_servNfs.inc:46 +#: admin/systems/goto/class_printGeneric.inc:435 +#: admin/systems/goto/class_printGeneric.inc:482 +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#: admin/systems/goto/class_printGeneric.inc:1008 +#: admin/systems/goto/class_printGeneric.inc:1019 +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:234 +#: admin/systems/goto/class_workstationStartup.inc:247 +#: admin/systems/goto/class_workstationStartup.inc:324 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#: addons/goto/class_gotoLogView.inc:57 addons/goto/class_gotoLogView.inc:175 +#: addons/goto/class_gotomasses.inc:174 addons/goto/class_gotomasses.inc:524 +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:691 +#: addons/goto/class_gotomasses.inc:735 addons/goto/class_gotomasses.inc:739 +#: addons/goto/class_gotomasses.inc:775 addons/goto/class_gotomasses.inc:816 +#: personal/environment/class_environment.inc:591 +#: personal/environment/class_environment.inc:673 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#: personal/environment/class_environment.inc:841 +#: personal/environment/class_environment.inc:892 +#: personal/environment/class_environment.inc:988 +msgid "Error" +msgstr "Fehler" + +#: admin/devices/class_deviceGeneric.inc:252 +msgid "Device generic" +msgstr "Allgemeines zum Gerät" + +#: admin/devices/class_deviceGeneric.inc:252 +msgid "Hotplug" +msgstr "Hotplug" + +#: admin/devices/class_deviceGeneric.inc:263 +#: admin/systems/services/shares/class_goShareServer.inc:401 +#: admin/systems/services/nfs/class_servNfs.inc:193 +#: admin/systems/services/nfs/servnfs.tpl:56 +#: admin/systems/goto/terminalService.tpl:48 +#: admin/systems/goto/terminalService.tpl:138 +#: admin/systems/goto/workstationService.tpl:54 +#: admin/systems/goto/workstationService.tpl:156 +#: admin/systems/goto/gotoLpdEnable.tpl:53 +msgid "Type" +msgstr "Typ" + +#: admin/devices/class_deviceGeneric.inc:265 +msgid "Vendor" +msgstr "Hersteller" + +#: admin/devices/class_deviceGeneric.inc:266 +msgid "Device ID" +msgstr "Geräte-ID" + +#: admin/devices/class_deviceManagement.inc:7 +#: personal/environment/class_environment.inc:1783 +#: personal/environment/environment.tpl:293 +msgid "Hotplug devices" +msgstr "Hotplug-Geräte" + +#: admin/devices/class_deviceManagement.inc:8 +msgid "Manage hotplug devices" +msgstr "Hotplug-Geräte verwalten" + +#: admin/devices/class_deviceManagement.inc:246 +#: admin/applications/class_applicationManagement.inc:352 +#: admin/mimetypes/class_mimetypeManagement.inc:360 +#: addons/goto/class_gotomasses.inc:230 +msgid "Permission" +msgstr "Berechtigung" + +#: admin/devices/class_deviceManagement.inc:263 +#: admin/devices/class_deviceManagement.inc:345 +msgid "device" +msgstr "Gerät" + +#: admin/devices/class_deviceManagement.inc:296 +#: admin/devices/class_deviceManagement.inc:352 +#: admin/devices/class_deviceManagement.inc:381 +#: admin/applications/class_applicationManagement.inc:401 +#: admin/applications/class_applicationManagement.inc:456 +#: admin/applications/class_applicationManagement.inc:487 +#: admin/mimetypes/class_mimetypeManagement.inc:412 +#: admin/mimetypes/class_mimetypeManagement.inc:466 +#: admin/mimetypes/class_mimetypeManagement.inc:496 +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#: personal/environment/class_environment.inc:583 +msgid "Permission error" +msgstr "Berechtigungsfehler" + +#: admin/applications/remove.tpl:6 admin/mimetypes/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dieser Eintrag wird unter Umständen von verschiedenen Gruppen genutzt. Bitte " +"überprüfen Sie genau was Sie tun, da GOsa keine Möglichkeit hat, die Daten " +"wiederherzustellen." + +#: admin/applications/release_select.tpl:2 +#: admin/mimetypes/release_select.tpl:2 +msgid "Branches" +msgstr "Zweige" + +#: admin/applications/release_select.tpl:8 +#: admin/mimetypes/release_select.tpl:8 +msgid "Current release" +msgstr "Momentanes Release" + +#: admin/applications/class_applicationParameters.inc:53 +msgid "Remove options" +msgstr "Optionen entfernen" + +#: admin/applications/class_applicationParameters.inc:53 +#: admin/applications/class_applicationParameters.inc:55 +msgid "parameter" +msgstr "Parameter" + +#: admin/applications/class_applicationParameters.inc:55 +msgid "Create options" +msgstr "Optionen aktivieren" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Variable" +msgstr "Variable" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Default value" +msgstr "Standardwert" + +#: admin/applications/class_applicationParameters.inc:131 +msgid "Add option" +msgstr "Option hinzufügen" + +#: admin/applications/class_applicationParameters.inc:236 +msgid "Parameter" +msgstr "Parameter" + +#: admin/applications/class_applicationParameters.inc:237 +msgid "Parameter configuration" +msgstr "Konfiguration der Parameter" + +#: admin/applications/class_applicationParameters.inc:245 +msgid "Application parameter settings" +msgstr "Konfiguration der Anwendungs-Parameter" + +#: admin/applications/generic.tpl:7 admin/applications/generic.tpl:10 +#: admin/applications/class_divListApplication.inc:51 +#: admin/applications/class_applicationGeneric.inc:561 +msgid "Application name" +msgstr "Name der Anwendung" + +#: admin/applications/generic.tpl:15 +msgid "Display name" +msgstr "Angezeigter Name" + +#: admin/applications/generic.tpl:19 +#: admin/applications/class_applicationGeneric.inc:566 +msgid "Application name to be displayed (i.e. below icons)" +msgstr "Angezeigter Name der Anwendung (z.B. unter Symbole)" + +#: admin/applications/generic.tpl:28 +msgid "Path and/or binary name of application" +msgstr "Pfad und/oder Name der Anwendung" + +#: admin/applications/generic.tpl:45 admin/mimetypes/generic.tpl:47 +msgid "Choose subtree to place application in" +msgstr "Wählen Sie den Teilbaum, in den die Anwendung plaziert werden soll." + +#: admin/applications/generic.tpl:52 admin/mimetypes/generic.tpl:53 +#: admin/systems/goto/workstation.tpl:43 admin/systems/goto/printer.tpl:35 +#: admin/systems/goto/terminal.tpl:36 +msgid "Select a base" +msgstr "Wählen Sie eine Basis" + +#: admin/applications/generic.tpl:66 +#: admin/applications/class_applicationGeneric.inc:611 +#: admin/mimetypes/generic.tpl:67 +#: admin/mimetypes/class_mimetypeGeneric.inc:730 +msgid "Icon" +msgstr "Symbol" + +#: admin/applications/generic.tpl:82 admin/mimetypes/generic.tpl:84 +msgid "Update" +msgstr "Aktualisieren" + +#: admin/applications/generic.tpl:82 +msgid "Reload picture from LDAP" +msgstr "Bild neu laden" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture" +msgstr "Bild entfernen" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture from LDAP" +msgstr "Entferne Bild aus LDAP" + +#: admin/applications/generic.tpl:96 +#: admin/systems/goto/class_gotoLpdEnabled.inc:156 +#: admin/systems/goto/gotoLpdEnable.tpl:79 +#: admin/systems/ppd/printerPPDDialog.tpl:28 +msgid "Options" +msgstr "Optionen" + +#: admin/applications/generic.tpl:103 +#: admin/applications/class_applicationGeneric.inc:614 +msgid "Only executable for members" +msgstr "Nur ausführbar für Gruppen-Mitglieder" + +#: admin/applications/generic.tpl:108 +#: admin/applications/class_applicationGeneric.inc:618 +msgid "Replace user configuration on startup" +msgstr "Konfiguration bei jedem Start ersetzen" + +#: admin/applications/generic.tpl:114 +#: admin/applications/class_applicationGeneric.inc:615 +msgid "Place icon on members desktop" +msgstr "Platziere das Symbol auf dem Desktop der Gruppenmitglieder" + +#: admin/applications/generic.tpl:119 +#: admin/applications/class_applicationGeneric.inc:617 +msgid "Place entry in members startmenu" +msgstr "Platziere einen Eintrag im Startmenü der Gruppenmitglieder" + +#: admin/applications/generic.tpl:124 +#: admin/applications/class_applicationGeneric.inc:616 +msgid "Place entry in members launch bar" +msgstr "Platziere einen Eintrag in der Kontrollleiste der Gruppenmitglieder" + +#: admin/applications/generic.tpl:134 +#: personal/environment/logonManagement.tpl:55 +msgid "Script" +msgstr "Skript" + +#: admin/applications/generic.tpl:139 addons/goto/goto_import_file.tpl:84 +#: addons/goto/class_gotomasses.inc:375 +#: addons/goto/class_goto_import_file.inc:29 +#: addons/goto/class_goto_import_file.inc:89 +#: addons/goto/class_goto_import_file.inc:131 +#: personal/environment/logonManagement.tpl:65 +msgid "Import" +msgstr "Importieren" + +#: admin/applications/generic.tpl:144 +msgid "Download" +msgstr "Herunterladen" + +#: admin/applications/class_applicationManagement.inc:25 +#: personal/environment/class_environment.inc:10 +msgid "This does something" +msgstr "Dies tut etwas" + +#: admin/applications/class_divListApplication.inc:25 +msgid "List of Applications" +msgstr "Liste der Anwendungen" + +#: admin/applications/class_divListApplication.inc:26 +msgid "This table displays all applications in the selected tree." +msgstr "Diese Tabelle enthält alle Abteilungen des gewählten Teilbaums" + +#: admin/applications/class_divListApplication.inc:58 +#: personal/environment/hotplugDialog.tpl:43 +msgid "Display users matching" +msgstr "Zeige die Benutzer, auf die Folgendes passt" + +#: admin/applications/class_divListApplication.inc:199 +#: admin/mimetypes/class_divListMimeTypes.inc:198 +msgid "Freezed" +msgstr "Eingefroren" + +#: admin/applications/class_divListApplication.inc:242 +msgid "Number of listed applications" +msgstr "Anzahl der angezeigten Anwendungen" + +#: admin/applications/main.inc:48 admin/applications/main.inc:50 +msgid "Application management" +msgstr "Anwendungsverwaltung" + +#: admin/applications/class_applicationGeneric.inc:95 +msgid "no example" +msgstr "kein Beispiel" + +#: admin/applications/class_applicationGeneric.inc:264 +#, php-format +msgid "Cannot remove application - it is still in use by these objects: %s" +msgstr "" +"Die Anwendung konnte nicht entfernt werden, sie wird momentan noch von " +"folgenden Objekten verwendet: %s" + +#: admin/applications/class_applicationGeneric.inc:370 +msgid "no read permission" +msgstr "Keine Leseberechtigung" + +#: admin/applications/class_applicationGeneric.inc:375 +msgid "cannot resize image" +msgstr "Kann Bild nicht in der Größe verändern" + +#: admin/applications/class_applicationGeneric.inc:380 +msgid "cannot convert image" +msgstr "Kann Bild nicht konvertieren" + +#: admin/applications/class_applicationGeneric.inc:384 +#, php-format +msgid "cannot save image to '%s'" +msgstr "Kann Bild nicht unter '%s' speichern" + +#: admin/applications/class_applicationGeneric.inc:413 +msgid "Execute path" +msgstr "Arbeitsverzeichnis" + +#: admin/applications/class_applicationGeneric.inc:598 +msgid "Application generic" +msgstr "Anwendung (Allgemein)" + +#: admin/applications/class_applicationGeneric.inc:612 +msgid "Script content" +msgstr "Skript-Inhalt" + +#: admin/mimetypes/class_mimetypeManagement.inc:24 +#: admin/mimetypes/class_mimetypeGeneric.inc:721 +msgid "Mime types" +msgstr "MIME-Typen" + +#: admin/mimetypes/class_mimetypeManagement.inc:25 +msgid "Manage mime types" +msgstr "MIME-Typen verwalten" + +#: admin/mimetypes/class_mimetypeManagement.inc:378 +#: admin/mimetypes/class_mimetypeManagement.inc:459 +#: admin/mimetypes/generic.tpl:12 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:116 +#: admin/mimetypes/class_divListMimeTypes.inc:152 +#: admin/mimetypes/paste_generic.tpl:13 +msgid "Mime type" +msgstr "MIME-Typ" + +#: admin/mimetypes/generic.tpl:16 admin/mimetypes/paste_generic.tpl:16 +msgid "Please enter a name for the mime type here" +msgstr "Bitte geben Sie hier einen Namen für den MIME-Typ ein" + +#: admin/mimetypes/generic.tpl:22 +#: admin/mimetypes/class_mimetypeGeneric.inc:725 +msgid "Mime group" +msgstr "MIME-Gruppe" + +#: admin/mimetypes/generic.tpl:26 +msgid "Categorize this mime type" +msgstr "Kategorie dieses MIME-Typs" + +#: admin/mimetypes/generic.tpl:38 +msgid "Please specify a description" +msgstr "Bitte geben Sie eine Beschreibung an" + +#: admin/mimetypes/generic.tpl:69 admin/mimetypes/generic.tpl:72 +msgid "Mime icon" +msgstr "MIME-Icon" + +#: admin/mimetypes/generic.tpl:85 +msgid "Update mime type icon" +msgstr "Aktualisiere MIME-Typ Icon" + +#: admin/mimetypes/generic.tpl:99 +msgid "Left click" +msgstr "Linksklick" + +#: admin/mimetypes/generic.tpl:104 +#: admin/mimetypes/class_mimetypeGeneric.inc:731 +msgid "File patterns" +msgstr "Datei-Muster" + +#: admin/mimetypes/generic.tpl:110 +msgid "Please specify a new file pattern" +msgstr "Bitte geben Sie ein neues Dateimuster an" + +#: admin/mimetypes/generic.tpl:113 +msgid "Add a new file pattern" +msgstr "Erstelle ein neues Dateimuster" + +#: admin/mimetypes/generic.tpl:129 admin/mimetypes/generic.tpl:189 +msgid "Enter an application name here" +msgstr "Geben Sie hier den Namen der Anwendung ein" + +#: admin/mimetypes/generic.tpl:132 admin/mimetypes/generic.tpl:193 +msgid "Add application" +msgstr "Anwendung hinzufügen" + +#: admin/mimetypes/generic.tpl:143 +msgid "Embedding" +msgstr "eingebettet" + +#: admin/mimetypes/generic.tpl:156 +msgid "Show file in embedded viewer" +msgstr "Zeige Datei mit eingebautem Betrachter" + +#: admin/mimetypes/generic.tpl:163 +msgid "Show file in external viewer" +msgstr "Zeige Datei mit externem Programm" + +#: admin/mimetypes/generic.tpl:170 +msgid "Ask whether to save to local disk" +msgstr "Frage nach, ob Datei lokal auf Festplatte gespeichert werden soll" + +#: admin/mimetypes/class_divListMimeTypes.inc:27 +#: admin/mimetypes/class_divListMimeTypes.inc:28 +msgid "List of defined mime types" +msgstr "Liste von definierten MIME-Typen" + +#: admin/mimetypes/class_divListMimeTypes.inc:58 +msgid "Display mime types matching" +msgstr "Zeige MIME-Typen, auf die Folgendes passt" + +#: admin/mimetypes/class_divListMimeTypes.inc:243 +msgid "Number of listed mimetypes" +msgstr "Anzahl der angezeigten MIME-Typen" + +#: admin/mimetypes/paste_generic.tpl:24 +msgid "Please specify a description for this mime type here" +msgstr "Bitte geben Sie hier eine Beschreibung dieses MIME-Typs ein" + +#: admin/mimetypes/main.inc:48 admin/mimetypes/main.inc:50 +msgid "Mimetype management" +msgstr "MIME-Typen Verwaltung" + +#: admin/mimetypes/class_mimetypeGeneric.inc:535 +msgid "File pattern" +msgstr "Datei-Muster" + +#: admin/mimetypes/class_mimetypeGeneric.inc:716 +msgid "Mime type generic" +msgstr "MIME-Typ (Allgemein)" + +#: admin/mimetypes/class_mimetypeGeneric.inc:729 +msgid "Left click action" +msgstr "Linksklick-Aktion" + +#: admin/mimetypes/class_mimetypeGeneric.inc:732 +msgid "Embedded applications" +msgstr "Eingebettete Anwendungen" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +msgid "Print Service" +msgstr "Druck-Dienst" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "enabled" +msgstr "aktiviert" + +#: admin/systems/services/cups/class_goCupsServer.inc:27 +#: admin/systems/services/cups/class_goCupsServer.inc:48 +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/goto/info.tpl:124 +msgid "Print service" +msgstr "Druck-Dienst" + +#: admin/systems/services/cups/class_goCupsServer.inc:68 +msgid "Cups" +msgstr "CUPS" + +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/services/shares/class_goShareServer.inc:390 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/cups/class_goCupsServer.inc:77 +#: admin/systems/services/syslog/class_goLogDBServer.inc:101 +msgid "Start" +msgstr "Start" + +#: admin/systems/services/cups/class_goCupsServer.inc:78 +#: admin/systems/services/syslog/class_goLogDBServer.inc:102 +msgid "Stop" +msgstr "Beenden" + +#: admin/systems/services/cups/class_goCupsServer.inc:79 +#: admin/systems/services/syslog/class_goLogDBServer.inc:103 +msgid "Restart" +msgstr "Neustart" + +#: admin/systems/services/kiosk/class_goKioskService.inc:34 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:206 +msgid "Kiosk profile service" +msgstr "Kiosk-Profil-Dienst" + +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: personal/environment/class_environment.inc:1784 +#: personal/environment/environment.tpl:124 +#: personal/environment/environment.tpl:160 +msgid "Kiosk profile" +msgstr "Kiosk-Profil" + +#: admin/systems/services/kiosk/class_goKioskService.inc:269 +msgid "Kiosk" +msgstr "Kiosk" + +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/kiosk/goKioskService.tpl:1 +msgid "Kiosk profile management" +msgstr "Verwaltung der Kiosk-Profile" + +#: admin/systems/services/kiosk/goKioskService.tpl:16 +msgid "Server path" +msgstr "Server-Pfad" + +#: admin/systems/services/kiosk/goKioskService.tpl:23 +#: addons/goto/goto_import_file.tpl:24 +msgid "Browse" +msgstr "Durchsuchen" + +#: admin/systems/services/ldap/goLdapServer.tpl:1 +#: admin/systems/services/ldap/class_goLdapServer.inc:30 +#: admin/systems/services/ldap/class_goLdapServer.inc:68 +msgid "LDAP service" +msgstr "LDAP-Dienst" + +#: admin/systems/services/ldap/goLdapServer.tpl:2 +msgid "LDAP URI" +msgstr "LDAP URI" + +#: admin/systems/services/ldap/class_goLdapServer.inc:35 +msgid "fill-in-your-servers-dns-name" +msgstr "tragen-sie-den-dns-namen-des-servers-ein" + +#: admin/systems/services/ldap/class_goLdapServer.inc:128 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +msgid "Ldap" +msgstr "LDAP" + +#: admin/systems/services/ldap/class_goLdapServer.inc:137 +msgid "Ldap base" +msgstr "LDAP-Basis" + +#: admin/systems/services/ntp/goNtpServer.tpl:2 +msgid "Time server" +msgstr "Zeit-Server" + +#: admin/systems/services/ntp/class_goNtpServer.inc:28 +#: admin/systems/services/ntp/class_goNtpServer.inc:74 +msgid "Time service (NTP)" +msgstr "Zeit-Dienst (NTP)" + +#: admin/systems/services/ntp/class_goNtpServer.inc:114 +msgid "Time service" +msgstr "Zeit-Dienst" + +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +msgid "Time service - NTP" +msgstr "Zeit-Dienst - NTP" + +#: admin/systems/services/ntp/class_goNtpServer.inc:123 +msgid "Ntp source" +msgstr "NTP-Quelle" + +#: admin/systems/services/terminal/goTerminalServer.tpl:4 +#: admin/systems/services/terminal/class_goTerminalServer.inc:26 +#: admin/systems/services/terminal/class_goTerminalServer.inc:76 +#: admin/systems/services/terminal/class_goTerminalServer.inc:164 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/goto/class_terminalService.inc:679 +msgid "Terminal service" +msgstr "Terminal-Dienst" + +#: admin/systems/services/terminal/goTerminalServer.tpl:8 +#: admin/systems/services/terminal/class_goTerminalServer.inc:173 +msgid "Temporary disable login" +msgstr "Anmeldung sperren (temporär)" + +#: admin/systems/services/terminal/goTerminalServer.tpl:13 +msgid "Supported session types" +msgstr "Unterstützte Sitzungstypen" + +#: admin/systems/services/shares/goShareServer.tpl:1 +#: admin/systems/goto/class_terminalStartup.inc:543 +#: admin/systems/goto/class_workstationStartup.inc:1021 +#: admin/systems/goto/terminalStartup.tpl:91 +#: admin/systems/goto/workstationStartup.tpl:209 +#: personal/environment/class_environment.inc:1782 +#: personal/environment/environment.tpl:212 +msgid "Shares" +msgstr "Freigaben" + +#: admin/systems/services/shares/class_goShareServer.inc:31 +#: admin/systems/services/shares/class_goShareServer.inc:157 +#: admin/systems/services/shares/class_goShareServer.inc:389 +msgid "File service (Shares)" +msgstr "Datei-Dienst (Freigaben)" + +#: admin/systems/services/shares/class_goShareServer.inc:233 +msgid "share" +msgstr "Freigabe" + +#: admin/systems/services/shares/class_goShareServer.inc:390 +msgid "File service - Shares" +msgstr "Datei-Dienst - Freigaben" + +#: admin/systems/services/shares/class_goShareServer.inc:399 +msgid "Apple mounts" +msgstr "Apple Freigaben" + +#: admin/systems/services/shares/class_goShareServer.inc:402 +msgid "Charset" +msgstr "Zeichensatz" + +#: admin/systems/services/shares/class_goShareServer.inc:403 +#: admin/systems/services/nfs/class_servNfs.inc:179 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Path" +msgstr "Pfad" + +#: admin/systems/services/shares/class_goShareServer.inc:404 +#: admin/systems/services/nfs/class_servNfs.inc:215 +#: admin/systems/services/nfs/servnfs.tpl:121 +msgid "Option" +msgstr "Option" + +#: admin/systems/services/shares/class_goShareServer.inc:405 +#: admin/systems/services/nfs/class_servNfs.inc:211 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Volume" +msgstr "Volume" + +#: admin/systems/services/nfs/class_servNfs.inc:184 +msgid "'Path / Volume' must be of format 'server:port'!" +msgstr "'Pfad / Volume' muß das Format 'server:port' haben!" + +#: admin/systems/services/nfs/class_servNfs.inc:188 +msgid "'Path / Volume' must contain at least one '/'!" +msgstr "'Pfad / Volume' muß mindestens ein '/' enthalten!" + +#: admin/systems/services/nfs/servnfs.tpl:1 +msgid "Edit share" +msgstr "Freigabe bearbeiten" + +#: admin/systems/services/nfs/servnfs.tpl:2 +msgid "NFS setup" +msgstr "NFS-Einrichtung" + +#: admin/systems/services/nfs/servnfs.tpl:39 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:201 +#: addons/goto/events/class_EventTargetAddList.inc:238 +#: personal/environment/environment.tpl:135 +msgid "Server" +msgstr "Server" + +#: admin/systems/services/nfs/servnfs.tpl:69 +msgid "Auto-mount share on Apple systems" +msgstr "Freigabe auf Apple-Systemen automatisch einbinden." + +#: admin/systems/services/nfs/servnfs.tpl:109 +msgid "Codepage" +msgstr "Codepage" + +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "Syslog Service" +msgstr "Protokoll-Dienst" + +#: admin/systems/services/syslog/class_goSyslogServer.inc:68 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +msgid "Logging service" +msgstr "Protokoll-Dienst" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:31 +#: admin/systems/services/syslog/class_goLogDBServer.inc:59 +msgid "Syslog service database" +msgstr "Protokoll-Dienst Datenbank" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:69 +#: admin/systems/goto/class_printGeneric.inc:908 +#: addons/goto/events/class_EventTargetAddUsersList.inc:171 +msgid "User" +msgstr "Benutzer" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:72 +#: admin/systems/services/syslog/class_goLogDBServer.inc:105 +#: admin/systems/services/syslog/goLogDBServer.tpl:20 +msgid "Password" +msgstr "Passwort" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:75 +#: admin/systems/services/syslog/class_goLogDBServer.inc:106 +#: admin/systems/services/syslog/goLogDBServer.tpl:4 +msgid "Database" +msgstr "Datenbank" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:92 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Logging database" +msgstr "Protokoll-Datenbank" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:104 +msgid "Admin" +msgstr "Administrator" + +#: admin/systems/services/syslog/goLogDBServer.tpl:1 +msgid "Logging database information" +msgstr "Informationen der Protokoll-Datenbank" + +#: admin/systems/services/syslog/goLogDBServer.tpl:12 +msgid "Logging DB user" +msgstr "Protokoll-DB Benutzer" + +#: admin/systems/goto/workstation.tpl:1 admin/systems/goto/terminal.tpl:1 +msgid "Properties" +msgstr "Eigenschaften" + +#: admin/systems/goto/workstation.tpl:8 +msgid "Workstation template" +msgstr "Vorlage für Arbeitsstation" + +#: admin/systems/goto/workstation.tpl:10 +#: admin/systems/goto/class_workstationGeneric.inc:707 +msgid "Workstation name" +msgstr "Name der Arbeitsstation" + +#: admin/systems/goto/workstation.tpl:27 +#: admin/systems/goto/class_printGeneric.inc:932 +#: admin/systems/goto/class_workstationGeneric.inc:709 +msgid "Location" +msgstr "Ort" + +#: admin/systems/goto/workstation.tpl:38 admin/systems/goto/terminal.tpl:31 +msgid "Choose subtree to place group in" +msgstr "Wählen Sie den Teilbaum, in den die Gruppe eingepflegt werden soll" + +#: admin/systems/goto/workstation.tpl:87 admin/systems/goto/workstation.tpl:90 +#: admin/systems/goto/terminal.tpl:109 admin/systems/goto/terminal.tpl:112 +msgid "Inherit time server attributes" +msgstr "Zeit-Server-Attribute übernehmen" + +#: admin/systems/goto/workstation.tpl:160 +msgid "Inherit all values from group" +msgstr "Alle Werte von Gruppe übernehmen" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:3 +#: personal/environment/selectPrinterDialog.tpl:5 +#: personal/environment/selectPrinterDialog.tpl:10 +msgid "Select printer to add" +msgstr "Wählen Sie den hinzuzufügenden Drucker" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:8 +msgid "Select entries to add" +msgstr "Wählen Sie die hinzuzufügenden Einträge" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:22 +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:18 +#: personal/environment/selectPrinterDialog.tpl:24 +#: personal/environment/hotplugDialog.tpl:24 +msgid "Filters" +msgstr "Filter" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Select to search within subtrees" +msgstr "Wählen Sie diese Option um auch in Teilbäumen zu suchen" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Search in subtrees" +msgstr "Suche in Teilbäumen" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:38 +msgid "Display members of department" +msgstr "Zeige die Mitglieder der Abteilung" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:41 +#: personal/environment/selectPrinterDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Wählen Sie die Abteilung, auf die die Suchfunktion angewandt wird" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:50 +msgid "Display members matching" +msgstr "Zeige die Mitglieder, auf die Folgendes passt" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:55 +msgid "Regular expression for matching member names" +msgstr "Regulärer Ausdruck zum Erkennen von Mitgliedsnamen" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:49 +msgid "USB" +msgstr "USB" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:50 +msgid "Parallel port" +msgstr "Parallelport" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:53 +msgid "Software" +msgstr "Software" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:54 +msgid "Hardware" +msgstr "Hardware" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:56 +msgid "Even" +msgstr "Gerade" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:57 +msgid "Odd" +msgstr "Uneben" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:60 +#: admin/systems/goto/class_gotoLpdEnabled.inc:61 +#: admin/systems/goto/class_gotoLpdEnabled.inc:62 +#: admin/systems/goto/class_gotoLpdEnabled.inc:63 +#: admin/systems/goto/class_gotoLpdEnabled.inc:64 +#: admin/systems/goto/class_gotoLpdEnabled.inc:65 +#: admin/systems/goto/class_gotoLpdEnabled.inc:66 +#: admin/systems/goto/class_gotoLpdEnabled.inc:67 +msgid "bit/s" +msgstr "bits/s" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:153 +#: admin/systems/goto/terminalService.tpl:58 +#: admin/systems/goto/workstationService.tpl:66 +#: admin/systems/goto/gotoLpdEnable.tpl:71 +msgid "Port" +msgstr "Anschluss" + +#: admin/systems/goto/ArpNewDevice.tpl:1 +msgid "Integrating unknown devices" +msgstr "Integriere unbekannt Geräte" + +#: admin/systems/goto/ArpNewDevice.tpl:3 +msgid "" +"The current device has been detected by the ARP monitor used by GOsa. You " +"can integrate this device into your running DHCP/DNS infrastructure by " +"submitting this form. The device entry will disappear from the list of the " +"systems and move to the DNS/DHCP configuration." +msgstr "" +"Das gewählte Gerät wurde vom ARP-Monitor erkannt, der von GOsa verwendet " +"wird. Sie können dieses Gerät in Ihre DHCP/DNS-Infrastruktur integrieren, " +"wenn Sie dieses Formular absenden. Das Gerät wird aus der Liste der Systeme " +"verschwinden und in die DHCP/DNS-Konfiguration verschoben werden." + +#: admin/systems/goto/ArpNewDevice.tpl:9 +msgid "DNS name" +msgstr "DNS-Name" + +#: admin/systems/goto/class_printGeneric.inc:106 +#: admin/systems/goto/class_printGeneric.inc:968 +msgid "Internal error" +msgstr "Interner Fehler" + +#: admin/systems/goto/class_printGeneric.inc:106 +#, php-format +msgid "" +"Cannot determine a valid department for this object. Setting base to '%s'!" +msgstr "" +"Kann keine gültige Abteilung für dieses Objekt ermitteln, setze Basis auf '%" +"s'." + +#: admin/systems/goto/class_printGeneric.inc:262 +#: admin/systems/goto/class_printGeneric.inc:270 +#: admin/systems/goto/class_printGeneric.inc:275 +#: admin/systems/goto/class_printGeneric.inc:324 +#: admin/systems/goto/class_printGeneric.inc:340 +#: admin/systems/goto/class_printGeneric.inc:343 +msgid "Add printer extension" +msgstr "Drucker-Erweiterung hinzufügen" + +#: admin/systems/goto/class_printGeneric.inc:263 +msgid "" +"Could not initialize printer tab, parameter parent was missing while " +"construction." +msgstr "" +"Konnte den 'Druck'-Reiter nicht initialisieren, der Parameter 'parent' " +"fehlte während der Erstellung." + +#: admin/systems/goto/class_printGeneric.inc:271 +msgid "This is a workstation template, printer tab is disabled." +msgstr "" +"Dies ist eine Arbeitsstations-Vorlage, der Drucker-Tab ist deaktiviert." + +#: admin/systems/goto/class_printGeneric.inc:276 +msgid "This is a terminal template, printer tab is disabled." +msgstr "Dies ist eine Terminal-Vorlage, das Drucker-Tab ist deaktiviert." + +#: admin/systems/goto/class_printGeneric.inc:317 +#: admin/systems/goto/class_printGeneric.inc:325 +#: admin/systems/goto/class_printGeneric.inc:333 +#: admin/systems/goto/class_printGeneric.inc:336 +#: admin/systems/goto/class_printGeneric.inc:341 +#: admin/systems/goto/class_printGeneric.inc:344 +msgid "printer" +msgstr "Drucker" + +#: admin/systems/goto/class_printGeneric.inc:325 +msgid "" +"You can't enable it while 'cn' is not present in entry. Possibly you are " +"currently creating a new terminal template." +msgstr "" +"Sie können es nicht aktivieren, solange das 'cn'-Attribut nicht im Eintrag " +"enthalten ist. Wahrscheinlich erstellen Sie gerade eine neue Terminal-" +"Vorlage." + +#: admin/systems/goto/class_printGeneric.inc:332 +#: admin/systems/goto/class_printGeneric.inc:335 +msgid "Remove printer extension" +msgstr "Drucker-Erweiterung entfernen" + +#: admin/systems/goto/class_printGeneric.inc:513 +#, php-format +msgid "Your currently selected PPD file '%s' doesn't exist." +msgstr "Die momentan gewählte PPD-Datei '%s' wurde nicht gefunden." + +#: admin/systems/goto/class_printGeneric.inc:518 +msgid "Not defined" +msgstr "Nicht definiert" + +#: admin/systems/goto/class_printGeneric.inc:521 +#: admin/systems/ppd/class_printerPPDDialog.inc:97 +msgid "Can't get ppd informations." +msgstr "Kann PPD-Information nicht lesen" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_printGeneric.inc:536 +#, php-format +msgid "This printer belongs to %s. You can't rename this printer." +msgstr "Dieser Drucker gehört zu %s. Sie können ihn nicht umbenennen." + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_terminalStartup.inc:180 +#: admin/systems/goto/class_terminalInfo.inc:68 +#: admin/systems/goto/class_terminalGeneric.inc:230 +msgid "terminal" +msgstr "Terminal" + +#: admin/systems/goto/class_printGeneric.inc:536 +#: admin/systems/goto/class_workstationGeneric.inc:226 +#: admin/systems/goto/class_workstationStartup.inc:285 +msgid "workstation" +msgstr "Arbeitsstation" + +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +msgid "Object is no printer!" +msgstr "Das Objekt ist kein Drucker!" + +#: admin/systems/goto/class_printGeneric.inc:680 +#: admin/systems/goto/printer.tpl:54 +msgid "Printer URL" +msgstr "Drucker URL" + +#: admin/systems/goto/class_printGeneric.inc:903 +#: admin/systems/goto/class_printGeneric.inc:905 +#: addons/goto/events/class_EventTargetAddUsersList.inc:173 +msgid "Group" +msgstr "Gruppe" + +#: admin/systems/goto/class_printGeneric.inc:921 +msgid "Print generic" +msgstr "Drucken (Alllgemein)" + +#: admin/systems/goto/class_printGeneric.inc:926 +#: admin/systems/goto/terminalService.tpl:245 +#: personal/environment/environment.tpl:338 +#: personal/environment/environment.tpl:374 +msgid "Printer" +msgstr "Drucker" + +#: admin/systems/goto/class_printGeneric.inc:933 +msgid "LabeledURL" +msgstr "Benannte URL" + +#: admin/systems/goto/class_printGeneric.inc:934 +msgid "Printer PPD" +msgstr "Drucker-PPD" + +#: admin/systems/goto/class_printGeneric.inc:935 +#: admin/systems/goto/printer.tpl:82 +msgid "Permissions" +msgstr "Berechtigungen" + +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +msgid "printer user" +msgstr "Druckerbenutzer" + +#: admin/systems/goto/class_printGeneric.inc:968 +#, php-format +msgid "Illegal member type '%s'!" +msgstr "Ungültiger Mitgliedstyp '%s'!" + +#: admin/systems/goto/class_printGeneric.inc:1008 +#, php-format +msgid "'%s' is already used!" +msgstr "'%s' wird bereits verwendet!" + +#: admin/systems/goto/class_printGeneric.inc:1019 +#, php-format +msgid "'%s' does not exist!" +msgstr "'%s' existiert nicht!" + +#: admin/systems/goto/class_selectUserToPrinterDialog.inc:147 +msgid "Please select a printer or press cancel." +msgstr "Bitte wählen Sie einen Drucker oder 'Abbrechen'." + +#: admin/systems/goto/class_terminalStartup.inc:135 +#, php-format +msgid "" +"Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to " +"exist." +msgstr "" +"Das in systemKernelsHook angegebene Kommando '%s' (Modul '%s') scheint nicht " +"zu existieren." + +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +msgid "Mount point" +msgstr "Einhänge-Pfad" + +#: admin/systems/goto/class_terminalStartup.inc:372 +#: admin/systems/goto/class_workstationStartup.inc:750 +msgid "Fatal error" +msgstr "Schwerer Fehler" + +#: admin/systems/goto/class_terminalStartup.inc:533 +#: admin/systems/goto/class_workstationStartup.inc:1007 +msgid "Startup" +msgstr "Start" + +#: admin/systems/goto/class_terminalStartup.inc:534 +msgid "Terminal startup" +msgstr "Terminal-Start" + +#: admin/systems/goto/class_terminalStartup.inc:542 +#: admin/systems/goto/class_workstationStartup.inc:1016 +msgid "Ldap server" +msgstr "LDAP-Server" + +#: admin/systems/goto/class_terminalStartup.inc:544 +#: admin/systems/goto/class_workstationStartup.inc:1020 +msgid "Kernel modules" +msgstr "Kernel-Module" + +#: admin/systems/goto/class_terminalStartup.inc:545 +#: admin/systems/goto/class_workstationStartup.inc:1017 +#: admin/systems/goto/terminalStartup.tpl:40 +#: admin/systems/goto/workstationStartup.tpl:9 +msgid "Boot kernel" +msgstr "Boot-Kernel" + +#: admin/systems/goto/class_terminalStartup.inc:546 +#: admin/systems/goto/class_workstationStartup.inc:1018 +msgid "Kernel parameter" +msgstr "Kernel-Parameter" + +#: admin/systems/goto/class_terminalInfo.inc:50 +#: admin/systems/goto/class_terminalInfo.inc:204 +msgid "present" +msgstr "vorhanden" + +#: admin/systems/goto/class_terminalInfo.inc:77 +#: admin/systems/goto/class_terminalService.inc:121 +#: admin/systems/goto/class_workstationStartup.inc:1295 +#: admin/systems/goto/class_workstationStartup.inc:1297 +#: admin/systems/goto/class_workstationService.inc:78 +#: admin/systems/ppd/class_printerPPDDialog.inc:54 +#: admin/systems/ppd/class_printerPPDDialog.inc:121 +#: personal/environment/class_environment.inc:234 +msgid "Configuration error" +msgstr "Konfigurationsfehler" + +#: admin/systems/goto/class_terminalInfo.inc:83 +#: admin/systems/goto/class_terminalInfo.inc:179 +msgid "unknown status" +msgstr "unbekannter Status" + +#: admin/systems/goto/class_terminalInfo.inc:92 +msgid "This is a virtual terminal which has no properties to show here." +msgstr "" +"Dies ist ein virtuelles Terminal, deshalb können an dieser Stelle keine " +"Informationen angezeigt werden." + +#: admin/systems/goto/class_terminalInfo.inc:106 +msgid "online" +msgstr "aktiv" + +#: admin/systems/goto/class_terminalInfo.inc:168 +msgid "running" +msgstr "läuft" + +#: admin/systems/goto/class_terminalInfo.inc:171 +msgid "not running" +msgstr "läuft nicht" + +#: admin/systems/goto/class_terminalInfo.inc:174 +msgid "not defined" +msgstr "nicht definiert" + +#: admin/systems/goto/class_terminalInfo.inc:196 +msgid "offline" +msgstr "inaktiv" + +#: admin/systems/goto/class_terminalInfo.inc:251 +msgid "System info" +msgstr "System-Information" + +#: admin/systems/goto/class_terminalInfo.inc:252 +msgid "System informations" +msgstr "System-Informationen" + +#: admin/systems/goto/class_terminalService.inc:128 +#: admin/systems/goto/class_terminalService.inc:129 +#: admin/systems/goto/class_terminalService.inc:130 +#: admin/systems/goto/class_terminalService.inc:131 +#: admin/systems/goto/class_workstationService.inc:88 +#: admin/systems/goto/class_workstationService.inc:89 +#: admin/systems/goto/class_workstationService.inc:90 +#: admin/systems/goto/class_workstationService.inc:91 +msgid "bit" +msgstr "Bit" + +#: admin/systems/goto/class_terminalService.inc:177 +msgid "XDMCP" +msgstr "XDMCP" + +#: admin/systems/goto/class_terminalService.inc:178 +msgid "LDM" +msgstr "LDM" + +#: admin/systems/goto/class_terminalService.inc:179 +msgid "Shell" +msgstr "Shell" + +#: admin/systems/goto/class_terminalService.inc:180 +msgid "Telnet" +msgstr "Telnet" + +#: admin/systems/goto/class_terminalService.inc:181 +msgid "Windows RDP" +msgstr "Windows RDP" + +#: admin/systems/goto/class_terminalService.inc:204 +#: admin/systems/goto/class_workstationService.inc:144 +msgid "automatic" +msgstr "automatisch" + +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_workstationService.inc:194 +msgid "Bit" +msgstr "Bit" + +#: admin/systems/goto/class_terminalService.inc:314 +msgid "This 'dn' has no terminal features." +msgstr "Dieser 'DN' hat keine Terminal-Erweiterungen." + +#: admin/systems/goto/class_terminalService.inc:372 +msgid "Unsupported" +msgstr "Nicht unterstützt" + +#: admin/systems/goto/class_terminalService.inc:414 +#: admin/systems/goto/class_workstationService.inc:309 +msgid "Choose the phone located at the current terminal" +msgstr "Wählen Sie das sich am momentanen Arbeitsplatz befindende Telefon." + +#: admin/systems/goto/class_terminalService.inc:495 +#: admin/systems/goto/class_terminalService.inc:500 +msgid "VSync range" +msgstr "VSync-Bereich" + +#: admin/systems/goto/class_terminalService.inc:508 +#: admin/systems/goto/class_terminalService.inc:513 +msgid "HSync range" +msgstr "HSync-Bereich" + +#: admin/systems/goto/class_terminalService.inc:539 +msgid "" +"Remote desktop settings contains servers that do not support the selected " +"connection method." +msgstr "" +"Die Einstellungen für den entfernten Desktop beinhalten Server die die " +"gewählte Verbindungsmethode nicht unterstützen." + +#: admin/systems/goto/class_terminalService.inc:603 +#: admin/systems/goto/workstationService.tpl:157 +#: admin/systems/goto/class_workstationService.inc:85 +msgid "unknown" +msgstr "unbekannt" + +#: admin/systems/goto/class_terminalService.inc:678 +#: admin/systems/goto/class_workstationService.inc:484 +msgid "Service" +msgstr "Dienst" + +#: admin/systems/goto/class_terminalService.inc:688 +#: admin/systems/goto/class_workstationService.inc:493 +msgid "Monitor" +msgstr "Monitor" + +#: admin/systems/goto/class_terminalService.inc:689 +msgid "Method" +msgstr "Methode" + +#: admin/systems/goto/class_terminalService.inc:690 +#: admin/systems/goto/terminalService.tpl:173 +msgid "Remote desktop" +msgstr "Entfernte Arbeitsfläche" + +#: admin/systems/goto/class_terminalService.inc:691 +#: admin/systems/goto/class_workstationService.inc:494 +msgid "Gfx driver" +msgstr "Grafiktreiber" + +#: admin/systems/goto/class_terminalService.inc:692 +#: admin/systems/goto/class_workstationService.inc:495 +msgid "Gfx resolution" +msgstr "Auflösung" + +#: admin/systems/goto/class_terminalService.inc:693 +#: admin/systems/goto/class_workstationService.inc:496 +msgid "Gfx color depth" +msgstr "Farbtiefe" + +#: admin/systems/goto/class_terminalService.inc:694 +#: admin/systems/goto/terminalService.tpl:150 +#: admin/systems/goto/workstationService.tpl:170 +#: admin/systems/goto/class_workstationService.inc:393 +#: admin/systems/goto/class_workstationService.inc:395 +#: admin/systems/goto/class_workstationService.inc:400 +#: admin/systems/goto/class_workstationService.inc:497 +msgid "HSync" +msgstr "HSync" + +#: admin/systems/goto/class_terminalService.inc:695 +#: admin/systems/goto/terminalService.tpl:158 +#: admin/systems/goto/workstationService.tpl:181 +#: admin/systems/goto/class_workstationService.inc:376 +#: admin/systems/goto/class_workstationService.inc:378 +#: admin/systems/goto/class_workstationService.inc:383 +#: admin/systems/goto/class_workstationService.inc:498 +msgid "VSync" +msgstr "VSync" + +#: admin/systems/goto/class_terminalService.inc:696 +msgid "Auto-Sync" +msgstr "Auto-Sync" + +#: admin/systems/goto/class_terminalService.inc:697 +#: admin/systems/goto/class_workstationService.inc:500 +msgid "Scanner enabled" +msgstr "Scanner aktiviert" + +#: admin/systems/goto/class_terminalService.inc:698 +#: admin/systems/goto/class_terminalService.inc:704 +msgid "Printer enabled" +msgstr "Drucker aktiviert" + +#: admin/systems/goto/class_terminalService.inc:699 +#: admin/systems/goto/class_workstationService.inc:501 +msgid "Keyboard model" +msgstr "Tastatur-Modell" + +#: admin/systems/goto/class_terminalService.inc:700 +#: admin/systems/goto/class_workstationService.inc:502 +msgid "Keyboard layout" +msgstr "Tastatur-Layout" + +#: admin/systems/goto/class_terminalService.inc:701 +#: admin/systems/goto/class_workstationService.inc:503 +msgid "Keyboard variant" +msgstr "Tastatur-Variante" + +#: admin/systems/goto/class_terminalService.inc:702 +#: admin/systems/goto/class_workstationService.inc:504 +msgid "Mouse type" +msgstr "Maus-Typ" + +#: admin/systems/goto/class_terminalService.inc:703 +#: admin/systems/goto/class_workstationService.inc:505 +msgid "Mouse port" +msgstr "Maus-Anschluß" + +#: admin/systems/goto/class_terminalService.inc:705 +#: admin/systems/goto/terminalService.tpl:76 +#: admin/systems/goto/workstationService.tpl:86 +#: admin/systems/goto/class_workstationService.inc:506 +msgid "Telephone hardware" +msgstr "Telefon-Hardware" + +#: admin/systems/goto/info.tpl:6 +msgid "System information" +msgstr "System-Information" + +#: admin/systems/goto/info.tpl:12 +msgid "CPU" +msgstr "Prozessor" + +#: admin/systems/goto/info.tpl:15 +msgid "Memory" +msgstr "Speicher" + +#: admin/systems/goto/info.tpl:18 +msgid "Boot MAC" +msgstr "MAC-Adresse" + +#: admin/systems/goto/info.tpl:21 +msgid "USB support" +msgstr "USB-Unterstützung" + +#: admin/systems/goto/info.tpl:24 admin/systems/goto/info.tpl:92 +msgid "System status" +msgstr "System-Status" + +#: admin/systems/goto/info.tpl:28 +msgid "Inventory number" +msgstr "Inventarnummer" + +#: admin/systems/goto/info.tpl:32 +msgid "Last login" +msgstr "Letzte Anmeldung" + +#: admin/systems/goto/info.tpl:43 +msgid "Network devices" +msgstr "Netzwerk-Geräte" + +#: admin/systems/goto/info.tpl:52 +msgid "IDE devices" +msgstr "IDE-Geräte" + +#: admin/systems/goto/info.tpl:61 +msgid "SCSI devices" +msgstr "SCSI-Geräte" + +#: admin/systems/goto/info.tpl:69 +msgid "Floppy device" +msgstr "Disketten-Laufwerk" + +#: admin/systems/goto/info.tpl:73 +msgid "CDROM device" +msgstr "CDROM-Laufwerk" + +#: admin/systems/goto/info.tpl:78 admin/systems/goto/terminalService.tpl:95 +#: admin/systems/goto/workstationService.tpl:107 +msgid "Graphic device" +msgstr "Grafikkarte" + +#: admin/systems/goto/info.tpl:82 +msgid "Audio device" +msgstr "Soundkarte" + +#: admin/systems/goto/info.tpl:98 +msgid "Up since" +msgstr "Eingeschaltet seit" + +#: admin/systems/goto/info.tpl:101 +msgid "CPU load" +msgstr "Prozessor-Last" + +#: admin/systems/goto/info.tpl:104 +msgid "Memory usage" +msgstr "Speicher-Nutzung" + +#: admin/systems/goto/info.tpl:107 +msgid "Swap usage" +msgstr "Nutzung des virtuellen Speichers" + +#: admin/systems/goto/info.tpl:121 +msgid "SSH service" +msgstr "SSH-Dienst" + +#: admin/systems/goto/info.tpl:127 +msgid "Scan service" +msgstr "Scan-Dienst" + +#: admin/systems/goto/info.tpl:130 +msgid "Sound service" +msgstr "Audio-Dienst" + +#: admin/systems/goto/info.tpl:133 +msgid "GUI" +msgstr "GUI" + +#: admin/systems/goto/class_workstationGeneric.inc:299 +#: admin/systems/goto/class_workstationGeneric.inc:309 +#: addons/goto/events/class_DaemonEvent_update.inc:29 +#: addons/goto/events/class_DaemonEvent_update.inc:30 +msgid "Software update" +msgstr "Softwareupdate" + +#: admin/systems/goto/class_workstationGeneric.inc:303 +#: admin/systems/goto/class_workstationGeneric.inc:311 +#: addons/goto/events/class_DaemonEvent_localboot.inc:28 +#: addons/goto/events/class_DaemonEvent_localboot.inc:29 +msgid "Force localboot" +msgstr "Erzwinge lokalen Systemstart" + +#: admin/systems/goto/class_workstationGeneric.inc:307 +#: admin/systems/goto/class_terminalGeneric.inc:271 +#: addons/goto/events/class_DaemonEvent_wakeup.inc:29 +msgid "Wake up" +msgstr "Aufwecken" + +#: admin/systems/goto/class_workstationGeneric.inc:500 +msgid "A valid LDAP server assignement is missing!" +msgstr "Es fehlt eine gültige LDAP-Server-Zusweisung!" + +#: admin/systems/goto/class_workstationGeneric.inc:510 +msgid "Software deployment" +msgstr "Softwareverteilung" + +#: admin/systems/goto/class_workstationGeneric.inc:511 +msgid "This host is currently installing. If you want to save it, press 'OK'." +msgstr "" +"Dieses System installiert momentan. Wenn Sie es speichern möchten, drücken " +"Sie 'OK'." + +#: admin/systems/goto/class_workstationGeneric.inc:699 +msgid "Workstation generic" +msgstr "Arbeitsstation (Allgemein)" + +#: admin/systems/goto/class_workstationGeneric.inc:704 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:203 +#: addons/goto/events/class_EventTargetAddList.inc:249 +msgid "Workstation" +msgstr "Arbeitsstation" + +#: admin/systems/goto/class_workstationGeneric.inc:711 +msgid "Goto mode" +msgstr "GOto-Modus" + +#: admin/systems/goto/class_workstationGeneric.inc:714 +#: admin/systems/goto/class_terminalGeneric.inc:676 +msgid "Root password" +msgstr "Root-Passwort" + +#: admin/systems/goto/class_workstationGeneric.inc:715 +msgid "Create FAI CD" +msgstr "FAI CD erstellen" + +#: admin/systems/goto/gencd_frame.tpl:2 +msgid "Your browser does not supprt iframes." +msgstr "Ihr Browser unterstützt keine iframes." + +#: admin/systems/goto/terminalService.tpl:4 +#: admin/systems/goto/workstationService.tpl:4 +msgid "Keyboard" +msgstr "Tastatur" + +#: admin/systems/goto/terminalService.tpl:7 +#: admin/systems/goto/workstationService.tpl:7 +#: admin/systems/ppd/printerPPDDialog.tpl:10 +msgid "Model" +msgstr "Modell" + +#: admin/systems/goto/terminalService.tpl:10 +#: admin/systems/goto/workstationService.tpl:11 +msgid "Choose keyboard model" +msgstr "Wählen Sie das Tastatur-Modell" + +#: admin/systems/goto/terminalService.tpl:17 +#: admin/systems/goto/workstationService.tpl:19 +msgid "Layout" +msgstr "Layout" + +#: admin/systems/goto/terminalService.tpl:20 +#: admin/systems/goto/workstationService.tpl:23 +msgid "Choose keyboard layout" +msgstr "Wählen Sie das Tastatur-Layout" + +#: admin/systems/goto/terminalService.tpl:27 +#: admin/systems/goto/workstationService.tpl:31 +msgid "Variant" +msgstr "Variante" + +#: admin/systems/goto/terminalService.tpl:30 +#: admin/systems/goto/workstationService.tpl:35 +msgid "Choose keyboard variant" +msgstr "Wählen Sie die Tastatur-Variante" + +#: admin/systems/goto/terminalService.tpl:45 +#: admin/systems/goto/workstationService.tpl:51 +msgid "Mouse" +msgstr "Maus" + +#: admin/systems/goto/terminalService.tpl:51 +#: admin/systems/goto/workstationService.tpl:58 +msgid "Choose mouse type" +msgstr "Wählen Sie den Maus-Typ" + +#: admin/systems/goto/terminalService.tpl:61 +#: admin/systems/goto/workstationService.tpl:70 +msgid "Choose mouse port" +msgstr "Wählen Sie den Maus-Port" + +#: admin/systems/goto/terminalService.tpl:79 +#: admin/systems/goto/workstationService.tpl:89 +msgid "Telephone" +msgstr "Telefon" + +#: admin/systems/goto/terminalService.tpl:98 +#: admin/systems/goto/workstationService.tpl:110 +#: admin/systems/goto/printer.tpl:66 +msgid "Driver" +msgstr "Treiber" + +#: admin/systems/goto/terminalService.tpl:101 +#: admin/systems/goto/workstationService.tpl:114 +msgid "Choose graphic driver that is needed by the installed graphic board" +msgstr "" +"Wählen Sie den Treiber, der von der installierten Grafikkarte benötigt wird." + +#: admin/systems/goto/terminalService.tpl:108 +#: admin/systems/goto/workstationService.tpl:122 +#: personal/environment/class_environment.inc:1786 +#: personal/environment/environment.tpl:183 +msgid "Resolution" +msgstr "Auflösung" + +#: admin/systems/goto/terminalService.tpl:111 +#: admin/systems/goto/workstationService.tpl:126 +msgid "Choose screen resolution used in graphic mode" +msgstr "Wählen Sie die Auflösung, die im Grafik-Modus genutzt wird" + +#: admin/systems/goto/terminalService.tpl:118 +#: admin/systems/goto/workstationService.tpl:134 +msgid "Color depth" +msgstr "Farbtiefe" + +#: admin/systems/goto/terminalService.tpl:121 +#: admin/systems/goto/workstationService.tpl:138 +msgid "Choose colordepth used in graphic mode" +msgstr "Wählen Sie die Farbtiefe, die im Grafik-Modus genutzt wird" + +#: admin/systems/goto/terminalService.tpl:135 +#: admin/systems/goto/workstationService.tpl:153 +msgid "Display device" +msgstr "Anzeige" + +#: admin/systems/goto/terminalService.tpl:147 +#: admin/systems/goto/workstationService.tpl:167 +msgid "Use DDC for automatic detection" +msgstr "Verwende DDC zur automatischen Erkennung" + +#: admin/systems/goto/terminalService.tpl:154 +#: admin/systems/goto/workstationService.tpl:175 +msgid "Horizontal refresh frequency for installed monitor" +msgstr "Horizontale Wiederholrate für den installierten Monitor" + +#: admin/systems/goto/terminalService.tpl:162 +#: admin/systems/goto/workstationService.tpl:186 +msgid "Vertical refresh frequency for installed monitor" +msgstr "Vertikale Wiederholrate für den installierten Monitor" + +#: admin/systems/goto/terminalService.tpl:177 +msgid "Connect method" +msgstr "Verbindungsmethode" + +#: admin/systems/goto/terminalService.tpl:180 +msgid "Choose method to connect to terminal server" +msgstr "Wählen Sie die Methode der Anbindung an den Terminal-Server" + +#: admin/systems/goto/terminalService.tpl:184 +#: admin/systems/goto/terminalStartup.tpl:14 +#: admin/systems/goto/workstationStartup.tpl:36 +#: addons/goto/class_gotomasses.inc:400 +msgid "Reload" +msgstr "Neu laden" + +#: admin/systems/goto/terminalService.tpl:191 +msgid "Terminal server" +msgstr "Terminal-Server" + +#: admin/systems/goto/terminalService.tpl:202 +msgid "Select specific terminal server to use" +msgstr "Wählen Sie einen bestimmten Terminal-Server" + +#: admin/systems/goto/terminalService.tpl:208 +msgid "Add selected server" +msgstr "Füge gewählten Server hinzu" + +#: admin/systems/goto/terminalService.tpl:212 +msgid "Remove selected server" +msgstr "Entferne gewählten Server" + +#: admin/systems/goto/terminalService.tpl:233 +#: admin/systems/goto/workstationService.tpl:201 +msgid "Scan device" +msgstr "Scanner" + +#: admin/systems/goto/terminalService.tpl:235 +#: admin/systems/goto/workstationService.tpl:204 +msgid "Select to start SANE scan service on terminal" +msgstr "Wählen, um den SANE Scanner-Dienst auf dem Terminal zu starten" + +#: admin/systems/goto/terminalService.tpl:237 +#: admin/systems/goto/workstationService.tpl:207 +msgid "Provide scan services" +msgstr "Bilderfassungsdienste bereitstellen" + +#: admin/systems/goto/gotoLpdEnable.tpl:12 +#: admin/systems/goto/gotoLpdEnable.tpl:48 +msgid "Enable printer settings" +msgstr "Drucker-Einstellungen aktivieren" + +#: admin/systems/goto/gotoLpdEnable.tpl:87 +msgid "Write only" +msgstr "Nur schreibend" + +#: admin/systems/goto/gotoLpdEnable.tpl:100 +msgid "Bit rate" +msgstr "Bit-Rate" + +#: admin/systems/goto/gotoLpdEnable.tpl:110 +msgid "Flow control" +msgstr "Flusskontrolle" + +#: admin/systems/goto/gotoLpdEnable.tpl:120 +msgid "Parity" +msgstr "Parität" + +#: admin/systems/goto/gotoLpdEnable.tpl:130 +msgid "Bits" +msgstr "Bits" + +#: admin/systems/goto/class_workstationStartup.inc:234 +#, php-format +msgid "FAI mirror '%s' is not available - setting to mirror 'auto'!" +msgstr "Der FAI-Mirror '%s' ist nicht verfügbar - setze Mirror auf 'auto'!" + +#: admin/systems/goto/class_workstationStartup.inc:247 +#, php-format +msgid "" +"FAI release '%s' is not available on mirror '%s' - setting to release '%s'!" +msgstr "" +"Das FAI-Release '%s' ist auf dem Mirror '%s' nicht verfügbar - wähle Release " +"'%s'!" + +#: admin/systems/goto/class_workstationStartup.inc:266 +msgid "Please select a 'FAI server' or remove the 'FAI classes'." +msgstr "" +"Bitte wählen Sie einen 'FAI-Server' oder entfernen Sie die FAI-Klassen." + +#: admin/systems/goto/class_workstationStartup.inc:324 +msgid "" +"There is already a profile containing a partition table in your " +"configuration!" +msgstr "" +"In Ihrer Konfiguration befindet sich bereits ein Profil, das eine " +"Partitionstabelle enthält!" + +#: admin/systems/goto/class_workstationStartup.inc:629 +msgid "Not available in current setup" +msgstr "Nicht verfügbar in momentaner Konfiguration" + +#: admin/systems/goto/class_workstationStartup.inc:1008 +msgid "System startup" +msgstr "Systemstart" + +#: admin/systems/goto/class_workstationStartup.inc:1023 +msgid "FAI classes" +msgstr "FAI-Klassen" + +#: admin/systems/goto/class_workstationStartup.inc:1024 +msgid "Debian mirror" +msgstr "Debian Spiegelserver" + +#: admin/systems/goto/class_workstationStartup.inc:1025 +msgid "Debian release" +msgstr "Debian-Release" + +#: admin/systems/goto/class_workstationStartup.inc:1027 +msgid "FAI status flag" +msgstr "FAI-Status-Flag" + +#: admin/systems/goto/class_workstationStartup.inc:1297 +msgid "'repositoryBranchHook' returned no result!" +msgstr "'repositoryBranchHook' hat kein Ergebnis zurückgeliefert!" + +#: admin/systems/goto/gencd.tpl:2 +msgid "CD-Install-Image generation" +msgstr "Erstellung der Installations-CD (Abbild)" + +#: admin/systems/goto/gencd.tpl:5 +msgid "" +"This option enables you to generate FAI install CD images for the selected " +"workstation. The procedure may take about 10 minutes to complete, so please " +"be patient after pressing the 'Create ISO-Image' button." +msgstr "" +"Diese Option erlaubt es Ihnen, ein Abbild einer FAI-Installations-CD für die " +"gewählte Arbeitsstation zu erstellen. Dieser Vorgang dauert etwa 10 Minuten, " +"haben Sie also Geduld, nachdem Sie den Knopf 'Erstelle ISO-Abbild' gedrückt " +"haben." + +#: admin/systems/goto/gencd.tpl:9 +msgid "Create ISO-Image" +msgstr "Erstelle ISO-Abbild" + +#: admin/systems/goto/class_workstationService.inc:485 +msgid "Workstation service" +msgstr "Arbeitsstations-Dienst" + +#: admin/systems/goto/class_workstationService.inc:499 +msgid "Use DDC" +msgstr "Verwende DDC" + +#: admin/systems/goto/terminalStartup.tpl:1 +#: admin/systems/goto/workstationStartup.tpl:4 +msgid "Boot parameters" +msgstr "Boot-Parameter" + +#: admin/systems/goto/terminalStartup.tpl:7 +#: admin/systems/goto/workstationStartup.tpl:29 +msgid "LDAP server" +msgstr "LDAP-Server" + +#: admin/systems/goto/terminalStartup.tpl:12 +#: admin/systems/goto/workstationStartup.tpl:34 +msgid "inherit from group" +msgstr "von Gruppe übernehmen" + +#: admin/systems/goto/terminalStartup.tpl:51 +#: admin/systems/goto/workstationStartup.tpl:20 +msgid "Custom options" +msgstr "Angepasste Optionen" + +#: admin/systems/goto/terminalStartup.tpl:55 +#: admin/systems/goto/workstationStartup.tpl:24 +msgid "" +"Enter any parameters that should be passed to the kernel as append line " +"during bootup" +msgstr "" +"Geben Sie die Parameter ein, die dem Kernel beim Starten übergeben werden " +"sollen" + +#: admin/systems/goto/terminalStartup.tpl:70 +#: admin/systems/goto/workstationStartup.tpl:188 +msgid "Kernel modules (format: name parameters)" +msgstr "Kernel-Module (Format: Name Parameter)" + +#: admin/systems/goto/terminalStartup.tpl:73 +#: admin/systems/goto/workstationStartup.tpl:191 +msgid "Add additional modules to load on startup" +msgstr "" +"Zusätzliche Module hinzufügen, die während des Starts geladen werden sollen" + +#: admin/systems/goto/terminalStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:227 +msgid "Mountpoint" +msgstr "Mount-Pfad" + +#: admin/systems/goto/SelectDeviceType.tpl:3 +msgid "" +"This system has no system type configured. Please choose a system type for " +"this object and an optional inheritance group. Press the 'continue' button " +"to proceed." +msgstr "" +"Dieses System hat keinen zugewiesenen Typ. Bitte wählen Sie einen Typ und " +"eine optionale Gruppe mit vordefinierten Eigenschaften. Drücken Sie 'Weiter' " +"um fortzufahren." + +#: admin/systems/goto/SelectDeviceType.tpl:10 +msgid "" +"Please select a system type and an optional bundle of predefined settings to " +"be inherited." +msgstr "" +"Bitte wählen Sie einen Systemtyp und (optional) einen Satz von " +"vordefinierten Einstellungen (werden automatisch übernommen)." + +#: admin/systems/goto/SelectDeviceType.tpl:12 +msgid "" +"Please select a system type and a bundle of predefined settings to be " +"inherited." +msgstr "" +"Bitte wählen Sie einen Systemtyp und (optional) einen Satz von " +"vordefinierten Einstellungen." + +#: admin/systems/goto/SelectDeviceType.tpl:23 +#: admin/systems/goto/SelectDeviceType.tpl:24 +msgid "System type" +msgstr "System-Typ" + +#: admin/systems/goto/SelectDeviceType.tpl:36 +msgid "Choose an object group as template" +msgstr "Wählen Sie eine Objektgruppe als Vorlageobjekt" + +#: admin/systems/goto/SelectDeviceType.tpl:37 +#: addons/goto/class_target_list.inc:205 addons/goto/goto_import_file.tpl:40 +#: addons/goto/events/class_EventTargetAddList.inc:259 +msgid "Object group" +msgstr "Objektgruppe" + +#: admin/systems/goto/SelectDeviceType.tpl:39 +#: addons/goto/class_gotoLogView.inc:87 +msgid "none" +msgstr "keine" + +#: admin/systems/goto/SelectDeviceType.tpl:51 +msgid "Continue" +msgstr "Fortsetzen" + +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: admin/systems/goto/class_terminalGeneric.inc:656 +#: admin/systems/goto/class_terminalGeneric.inc:662 +msgid "Terminal" +msgstr "Terminal" + +#: admin/systems/goto/class_SelectDeviceType.inc:41 +#: admin/systems/goto/chooser.tpl:10 +msgid "Windows workstation" +msgstr "Windows Arbeitsstation" + +#: admin/systems/goto/workstationStartup.tpl:64 +msgid "" +"FAI Object assignment disabled. You can't use this feature until FAI is " +"activated." +msgstr "" +"FAI Objektzuweisung nicht aktiv. Sie können dieses Feature nicht verwenden, " +"bis FAI aktiviert wurde." + +#: admin/systems/goto/workstationStartup.tpl:66 +msgid "GOsa support daemon not configured" +msgstr "GOsa Unterstützungs-Daemon nicht konfiguriert" + +#: admin/systems/goto/workstationStartup.tpl:67 +msgid "FAI settings cannot be modified" +msgstr "FAI-Einstellungen können nicht verändert werden" + +#: admin/systems/goto/workstationStartup.tpl:70 +msgid "Check if the GOsa support daemon (gosa-si) is running." +msgstr "Prüfen Sie, ob der GOsa Unterstützungs-Daemon (gosa-si) läuft." + +#: admin/systems/goto/workstationStartup.tpl:71 +msgid "retry" +msgstr "nochmals versuchen" + +#: admin/systems/goto/workstationStartup.tpl:79 +#: admin/systems/goto/workstationStartup.tpl:119 +msgid "FAI server" +msgstr "FAI-Server" + +#: admin/systems/goto/workstationStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:158 +msgid "Assigned FAI classes" +msgstr "Zugewiesene FAI-Klassen" + +#: admin/systems/goto/workstationStartup.tpl:142 +msgid "set" +msgstr "setzen" + +#: admin/systems/goto/class_terminalGeneric.inc:657 +msgid "Terminal generic" +msgstr "Terminal (Allgemein)" + +#: admin/systems/goto/class_terminalGeneric.inc:670 +msgid "Syslog server enabled" +msgstr "Protokoll-Server aktiviert" + +#: admin/systems/goto/class_terminalGeneric.inc:675 +msgid "Ntp server settings" +msgstr "NTP-Dienst-Einstellungen" + +#: admin/systems/goto/printer.tpl:5 +msgid "General" +msgstr "Allgemein" + +#: admin/systems/goto/printer.tpl:8 +msgid "Printer name" +msgstr "Druckername" + +#: admin/systems/goto/printer.tpl:30 +msgid "Choose subtree to place user in" +msgstr "Wählen Sie den Teilbaum, in den der Benutzer eingepflegt werden soll" + +#: admin/systems/goto/printer.tpl:43 +msgid "Details" +msgstr "Details" + +#: admin/systems/goto/printer.tpl:46 +msgid "Printer location" +msgstr "Drucker-Standort" + +#: admin/systems/goto/printer.tpl:89 +msgid "Users which are allowed to use this printer" +msgstr "Benutzer mit Berechtigung, diesen Drucker zu nutzen" + +#: admin/systems/goto/printer.tpl:91 +msgid "Users" +msgstr "Benutzer" + +#: admin/systems/goto/printer.tpl:96 admin/systems/goto/printer.tpl:120 +msgid "Add user" +msgstr "Benutzer hinzufügen" + +#: admin/systems/goto/printer.tpl:99 admin/systems/goto/printer.tpl:123 +msgid "Add group" +msgstr "Gruppe hinzufügen" + +#: admin/systems/goto/printer.tpl:113 +msgid "Users which are allowed to administrate this printer" +msgstr "Benutzer mit Berechtigung, diesen Drucker zu verwalten" + +#: admin/systems/goto/printer.tpl:115 +msgid "Admins" +msgstr "Administratoren" + +#: admin/systems/goto/chooser.tpl:1 +msgid "Choose the kind of system component you want to create" +msgstr "Wählen Sie die Art der System-Komponente, die Sie anlegen möchten" + +#: admin/systems/goto/chooser.tpl:4 +msgid "" +"Linux terminals and workstations are autocreated on bootup. For this reason " +"you're only be able to create templates for a specific tree. Servers are " +"normally automatically added too, but in some special cases you may need to " +"create a faked server entry to provide GOsa with some informations. Other " +"network components may be used for Nagios setups to create component " +"dependencies." +msgstr "" +"Linux Terminals und Arbeitsstationen werden beim Systemstart automatisch " +"hinzugefügt. Aus diesem Grund können Sie für diese Systemtypen nur Vorlagen " +"für einen Teilbaum anlegen. Server werden ebenfalls automatisch hinzugefügt, " +"in einigen Fällen benötigen Sie Pseudo-Einträge um GOsa mit benötigten " +"Informationen zu versorgen. Weitere Netzwerk-Komponenten können z.B. für " +"Nagios Umgebungen genutzt werden um die Abhängigkeiten aufzulösen." + +#: admin/systems/goto/chooser.tpl:7 +msgid "Linux thin client template" +msgstr "Linux Thin-Client Vorlage" + +#: admin/systems/goto/chooser.tpl:8 +msgid "Linux workstation template" +msgstr "Linux Arbeitsstations-Vorlage" + +#: admin/systems/goto/chooser.tpl:9 +msgid "Linux Server" +msgstr "Linux Server" + +#: admin/systems/goto/chooser.tpl:11 +msgid "Network printer" +msgstr "Netzwerk-Drucker" + +#: admin/systems/goto/chooser.tpl:12 +msgid "Phone" +msgstr "Telefon" + +#: admin/systems/goto/chooser.tpl:13 +msgid "Other network component" +msgstr "Andere Netzwerk-Komponente" + +#: admin/systems/goto/terminal.tpl:8 +msgid "Terminal template" +msgstr "Terminal-Vorlage" + +#: admin/systems/goto/terminal.tpl:10 +msgid "Terminal name" +msgstr "Terminal-Name" + +#: admin/systems/goto/terminal.tpl:178 +msgid "Inherit all" +msgstr "Alles übernehmen" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:6 +msgid "Select objects to add" +msgstr "Wählen Sie die hinzuzufügenden Objekte" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:28 +msgid "Display objects matching" +msgstr "Zeige die Objekte, auf die Folgendes passt" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:32 +msgid "Regular expression for matching object names" +msgstr "Regulärer Ausdruck zum Erkennen von Objekt-Namen" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:44 +msgid "Close" +msgstr "Schliessen" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#: admin/systems/ppd/class_ppdManager.inc:148 +#: admin/systems/ppd/class_ppdManager.inc:150 +msgid "PPD manager error" +msgstr "PPD-Manager-Fehler" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#, php-format +msgid "The specified path '%s' does not exist." +msgstr "Der angegebene Pfad '%s' existiert nicht." + +#: admin/systems/ppd/class_ppdManager.inc:148 +#, php-format +msgid "Specified PPD file '%s' cannot be opened for reading." +msgstr "Die PPD-Datei '%s' konnte nicht zum Lesen geöffnet werden." + +#: admin/systems/ppd/class_ppdManager.inc:150 +#, php-format +msgid "The temporary file '%s' cannot be opened for writing." +msgstr "Die temporäre Datei '%s' kann nicht zum Schreiben geöffnet werden." + +#: admin/systems/ppd/class_ppdManager.inc:176 +#: admin/systems/ppd/class_ppdManager.inc:313 +#, php-format +msgid "" +"Parsing PPD file %s failed - line too long. Trailing characters have been " +"ignored" +msgstr "" +"Das Verarbeiten der PPD-Datei '%s' ist fehlgeschlagen - Zeile zu lang. " +"Nachfolgende Zeichen wurden ausgelassen." + +#: admin/systems/ppd/class_ppdManager.inc:184 +msgid "Nested groups are not supported!" +msgstr "Verschachtelte Gruppen werden nicht unterstützt!" + +#: admin/systems/ppd/class_ppdManager.inc:188 +msgid "Group name not unique!" +msgstr "Der Gruppenname ist nicht eindeutig!" + +#: admin/systems/ppd/class_ppdManager.inc:194 +#: admin/systems/ppd/class_ppdManager.inc:224 +msgid "Symbol values are not supported yet!" +msgstr "Symbolische Werte werden noch nicht unterstützt!" + +#: admin/systems/ppd/class_ppdManager.inc:218 +msgid "Nested options are not supported!" +msgstr "Verschachtelte Werte werden noch nicht unterstützt." + +#: admin/systems/ppd/class_ppdManager.inc:243 +msgid "PickMany is not supported yet!" +msgstr "Die Option PickMany wird noch nicht unterstützt!" + +#: admin/systems/ppd/class_ppdManager.inc:334 +#, php-format +msgid "Parsing PPD file %s failed - no information found." +msgstr "" +"Das Verarbeiten der PPD-Datei '%s' ist fehlgeschlagen - keine Information " +"gefunden." + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:223 +#: admin/systems/ppd/class_printerPPDDialog.inc:240 +#: admin/systems/ppd/class_printerPPDDialog.inc:248 +#: admin/systems/ppd/class_printerPPDDialog.inc:272 +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#: admin/systems/ppd/class_printerPPDDialog.inc:313 +#: admin/systems/ppd/class_printerPPDDialog.inc:327 +#: admin/systems/ppd/class_printerPPDDialog.inc:337 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#: admin/systems/ppd/class_printerPPDDialog.inc:551 +#: admin/systems/ppd/class_printerPPDDialog.inc:554 +#: admin/systems/ppd/class_printerPPDDialog.inc:557 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:75 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:100 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +msgid "PPD error" +msgstr "PPD-Fehler" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#, php-format +msgid "Cannot open PPD '%s'!" +msgstr "Kann PPD '%s' nicht öffnen!" + +#: admin/systems/ppd/class_printerPPDDialog.inc:122 +#, php-format +msgid "Cannot open PPD path '%s' for reading and writing!" +msgstr "Kann PPD-Pfad '%s' nicht zum Lesen und Schreiben öffnen!" + +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: addons/goto/class_goto_import_file.inc:29 +msgid "file is empty" +msgstr "Datei ist leer" + +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#, php-format +msgid "Cannot parse PPD '%s'!" +msgstr "Kann PPD '%s' nicht einlesen!" + +#: admin/systems/ppd/class_printerPPDDialog.inc:316 +msgid "Overwrite existing PPD" +msgstr "Existierende PPD überschreiben" + +#: admin/systems/ppd/class_printerPPDDialog.inc:317 +msgid "" +"There is already a ppd file for this kind of printer. Do you want to " +"overwrite it?" +msgstr "" +"Der von Ihnen gewählte Drucker-Typ verfügt bereits über eine PPD-Datei. " +"Möchten Sie diese überschreiben?" + +#: admin/systems/ppd/class_printerPPDDialog.inc:465 +msgid "Section" +msgstr "Section" + +#: admin/systems/ppd/class_printerPPDDialog.inc:525 +#: admin/systems/ppd/class_printerPPDDialog.inc:528 +msgid "True" +msgstr "wahr" + +#: admin/systems/ppd/class_printerPPDDialog.inc:526 +#: admin/systems/ppd/class_printerPPDDialog.inc:529 +msgid "False" +msgstr "falsch" + +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#, php-format +msgid "PPD type '%s' is not supported!" +msgstr "PPD-Typ '%s' wird nicht unterstützt!" + +#: admin/systems/ppd/class_printerPPDDialog.inc:571 +msgid "" +"Please select a valid ppd file or use 'Cancel' to go back to printer " +"configuration." +msgstr "" +"Bitte wählen Sie eine gültige PPD-Datei oder drücken Sie 'Abbrechen', um " +"zurück zur Drucker-Konfiguration zu gelangen." + +#: admin/systems/ppd/remove_ppd.tpl:9 +msgid "The ppd file will be removed from the server and can not be restored." +msgstr "" +"Die PPD-Datei wird vom Server entfernt und kann nicht wiederhergestellt " +"werden." + +#: admin/systems/ppd/printerPPDDialog.tpl:1 +msgid "Printer driver" +msgstr "Drucker-Treiber" + +#: admin/systems/ppd/printerPPDDialog.tpl:12 +msgid "Select" +msgstr "Auswahl" + +#: admin/systems/ppd/printerPPDDialog.tpl:16 +msgid "New driver" +msgstr "Neuer Treiber" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, php-format +msgid "Cannot locate vendor '%s' in available PPDs!" +msgstr "Kann Hersteller '%s' nicht in den verfügbaren PPDs finden!" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:129 +msgid "Printer ppd selection." +msgstr "Auswahl der Drucker-PPD" + +#: addons/goto/class_target_list.inc:58 +msgid "Select the target objects for your scheduled action." +msgstr "Wählen Sie die Zielobjekte für den geplanten Vorgang." + +#: addons/goto/class_target_list.inc:59 addons/goto/class_target_list.inc:60 +msgid "Available targets" +msgstr "Verfügbare Ziele" + +#: addons/goto/class_target_list.inc:69 +msgid "Object name" +msgstr "Objektname" + +#: addons/goto/class_target_list.inc:72 +msgid "Select to see object groups" +msgstr "Auswählen um Objektgruppen zu sehen" + +#: addons/goto/class_target_list.inc:72 +msgid "Show object groups" +msgstr "Zeige Objektgruppen" + +#: addons/goto/class_target_list.inc:73 +msgid "Select to see servers" +msgstr "Wählen um Server anzuzeigen" + +#: addons/goto/class_target_list.inc:73 +msgid "Show servers" +msgstr "Zeige Server" + +#: addons/goto/class_target_list.inc:74 +msgid "Select to see workstations" +msgstr "Auswählen um Arbeitsstationen zu sehen" + +#: addons/goto/class_target_list.inc:74 +msgid "Show workstations" +msgstr "Zeige Arbeitsstationen" + +#: addons/goto/class_target_list.inc:75 +msgid "Select to see incoming objects" +msgstr "Auswählen um neue Objekte zu sehen" + +#: addons/goto/class_target_list.inc:75 +msgid "Show new objects" +msgstr "Zeige neue Objekte" + +#: addons/goto/class_target_list.inc:80 +msgid "Select to search for a specific IP range only" +msgstr "Auswählen um nur in einem bestimmten IP-Bereich zu suchen" + +#: addons/goto/class_target_list.inc:80 +msgid "Match IP range" +msgstr "IP-Bereich" + +#: addons/goto/class_target_list.inc:83 +msgid "Regular expression for matching group names" +msgstr "Regulärer Ausdruck zum Erkennen von Gruppennamen" + +#: addons/goto/class_target_list.inc:84 +msgid "IP range start" +msgstr "Beginn des IP-Bereichs" + +#: addons/goto/class_target_list.inc:85 +msgid "IP range end" +msgstr "Ende des IP-Bereichs" + +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +msgid "IP range" +msgstr "IP-Bereich" + +#: addons/goto/goto_import_file.tpl:1 +msgid "Import jobs" +msgstr "Vorgänge importieren" + +#: addons/goto/goto_import_file.tpl:3 +msgid "" +"You can import a list of jobs into the GOsa job queue. This should be a " +"semicolon seperated list of items in the following format:" +msgstr "" +"Sie können eine Liste von Aufträgen in die GOsa Auftragsliste importieren. " +"Die Liste sollte aus Einträgen im folgenden Format bestehen, die jeweils " +"durch ein Semikolon getrennt werden:" + +#: addons/goto/goto_import_file.tpl:5 +msgid "timestamp" +msgstr "Zeitstempel" + +#: addons/goto/goto_import_file.tpl:5 +msgid "MAC-address" +msgstr "MAC-Adresse" + +#: addons/goto/goto_import_file.tpl:5 +msgid "job type" +msgstr "Auftrags-Typ" + +#: addons/goto/goto_import_file.tpl:5 +msgid "object group" +msgstr "Objektgruppe" + +#: addons/goto/goto_import_file.tpl:5 +msgid "import base" +msgstr "Basis für Import" + +#: addons/goto/goto_import_file.tpl:5 +msgid "full hostname" +msgstr "Voll qualifizierter Hostname" + +#: addons/goto/goto_import_file.tpl:5 +msgid "IP-address" +msgstr "IP-Adresse" + +#: addons/goto/goto_import_file.tpl:5 +msgid "DHCP group" +msgstr "DHCP-Gruppe" + +#: addons/goto/goto_import_file.tpl:9 +msgid "Example" +msgstr "Beispiel" + +#: addons/goto/goto_import_file.tpl:21 +msgid "Select list to import" +msgstr "Wählen Sie die zu importierende Liste" + +#: addons/goto/goto_import_file.tpl:37 +#: addons/goto/events/DaemonEvent_update.tpl:51 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:51 +#: addons/goto/events/DaemonEvent_halt.tpl:51 +#: addons/goto/events/DaemonEvent_wakeup.tpl:51 +#: addons/goto/events/DaemonEvent_reboot.tpl:51 +#: addons/goto/events/DaemonEvent_notify.tpl:85 +#: addons/goto/events/DaemonEvent_rescan.tpl:51 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:51 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:51 +#: addons/goto/events/DaemonEvent_faireboot.tpl:51 +#: addons/goto/events/DaemonEvent_localboot.tpl:51 +#: addons/goto/events/DaemonEvent_memcheck.tpl:51 +#: addons/goto/events/DaemonEvent_activate.tpl:51 +#: addons/goto/events/DaemonEvent_lock.tpl:51 +#: addons/goto/events/DaemonEvent_reinstall.tpl:55 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:51 +msgid "Timestamp" +msgstr "Zeitstempel" + +#: addons/goto/goto_import_file.tpl:38 +#: addons/goto/class_goto_import_file.inc:168 +msgid "MAC" +msgstr "MAC" + +#: addons/goto/goto_import_file.tpl:39 +#: addons/goto/class_goto_import_file.inc:171 +msgid "Event" +msgstr "Ereignis" + +#: addons/goto/goto_import_file.tpl:42 +msgid "FQDN" +msgstr "FQDN" + +#: addons/goto/goto_import_file.tpl:43 +msgid "IP" +msgstr "IP" + +#: addons/goto/goto_import_file.tpl:44 +msgid "DHCP" +msgstr "DHCP" + +#: addons/goto/class_gotoLogView.inc:113 +msgid "File" +msgstr "Datei" + +#: addons/goto/class_gotoLogView.inc:115 +msgid "Date" +msgstr "Datum" + +#: addons/goto/class_gotoLogView.inc:202 +msgid "Log view" +msgstr "Log-Ansicht" + +#: addons/goto/class_gotoLogView.inc:203 +msgid "GOto log view" +msgstr "GOto Log-Ansicht" + +#: addons/goto/class_gotomasses.inc:26 +msgid "Deployment status" +msgstr "Verteilungs-Status" + +#: addons/goto/class_gotomasses.inc:27 addons/goto/main.inc:66 +msgid "System deployment status" +msgstr "Systemverteilungs-Status" + +#: addons/goto/class_gotomasses.inc:270 +#, php-format +msgid "The following jobs couldn't be deleted, they have to be aborted: %s" +msgstr "" +"Die folgenden Aufträge konnten nicht gelöscht werden, sie müssen abgebrochen " +"werden: %s" + +#: addons/goto/class_gotomasses.inc:360 +msgid "This menu allows you to remove and change the properties of GOsa tasks." +msgstr "" +"Dieses Menü erlaubt es Ihnen, GOsa-Aufgaben zu entfernen oder die " +"Eigenschaften zu verändern." + +#: addons/goto/class_gotomasses.inc:361 +msgid "List of queued jobs" +msgstr "Liste der geplanten Vorgänge" + +#: addons/goto/class_gotomasses.inc:380 +msgid "Resume" +msgstr "Fortsetzen" + +#: addons/goto/class_gotomasses.inc:381 +msgid "Pause" +msgstr "Pause" + +#: addons/goto/class_gotomasses.inc:382 +msgid "Abort" +msgstr "Abbrechen" + +#: addons/goto/class_gotomasses.inc:408 +#: addons/goto/events/DaemonEvent_update.tpl:47 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:47 +#: addons/goto/events/DaemonEvent_halt.tpl:47 +#: addons/goto/events/DaemonEvent_wakeup.tpl:47 +#: addons/goto/events/DaemonEvent_reboot.tpl:47 +#: addons/goto/events/DaemonEvent_notify.tpl:81 +#: addons/goto/events/DaemonEvent_rescan.tpl:47 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:47 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:47 +#: addons/goto/events/DaemonEvent_faireboot.tpl:47 +#: addons/goto/events/class_DaemonEvent_notify.inc:77 +#: addons/goto/events/class_DaemonEvent_notify.inc:78 +#: addons/goto/events/class_DaemonEvent_notify.inc:103 +#: addons/goto/events/DaemonEvent_localboot.tpl:47 +#: addons/goto/events/DaemonEvent_memcheck.tpl:47 +#: addons/goto/events/DaemonEvent_activate.tpl:47 +#: addons/goto/events/DaemonEvent_lock.tpl:47 +#: addons/goto/events/DaemonEvent_reinstall.tpl:51 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:47 +msgid "Target" +msgstr "Ziel" + +#: addons/goto/class_gotomasses.inc:409 +msgid "Task" +msgstr "Vorgang" + +#: addons/goto/class_gotomasses.inc:411 +#: addons/goto/events/DaemonEvent_update.tpl:9 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:9 +#: addons/goto/events/DaemonEvent_halt.tpl:9 +#: addons/goto/events/DaemonEvent_wakeup.tpl:9 +#: addons/goto/events/DaemonEvent_reboot.tpl:9 +#: addons/goto/events/DaemonEvent_notify.tpl:28 +#: addons/goto/events/DaemonEvent_rescan.tpl:9 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:9 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:9 +#: addons/goto/events/DaemonEvent_faireboot.tpl:9 +#: addons/goto/events/DaemonEvent_localboot.tpl:9 +#: addons/goto/events/DaemonEvent_memcheck.tpl:9 +#: addons/goto/events/DaemonEvent_lock.tpl:9 +#: addons/goto/events/DaemonEvent_reinstall.tpl:9 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:9 +msgid "Schedule" +msgstr "Plan" + +#: addons/goto/class_gotomasses.inc:413 +#: addons/goto/events/DaemonEvent_update.tpl:39 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:39 +#: addons/goto/events/DaemonEvent_halt.tpl:39 +#: addons/goto/events/DaemonEvent_wakeup.tpl:39 +#: addons/goto/events/DaemonEvent_reboot.tpl:39 +#: addons/goto/events/DaemonEvent_notify.tpl:73 +#: addons/goto/events/DaemonEvent_rescan.tpl:39 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:39 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:39 +#: addons/goto/events/DaemonEvent_faireboot.tpl:39 +#: addons/goto/events/DaemonEvent_localboot.tpl:39 +#: addons/goto/events/DaemonEvent_memcheck.tpl:39 +#: addons/goto/events/DaemonEvent_activate.tpl:39 +#: addons/goto/events/DaemonEvent_lock.tpl:39 +#: addons/goto/events/DaemonEvent_reinstall.tpl:43 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:39 +msgid "Status" +msgstr "Status" + +#: addons/goto/class_gotomasses.inc:441 +msgid "Pause job" +msgstr "Vorgang pausieren" + +#: addons/goto/class_gotomasses.inc:448 +msgid "Resume job" +msgstr "Vorgang fortsetzen" + +#: addons/goto/class_gotomasses.inc:455 +msgid "Execute now" +msgstr "Sofort ausführen" + +#: addons/goto/class_gotomasses.inc:462 +msgid "View logs" +msgstr "Protokolle einsehen" + +#: addons/goto/class_gotomasses.inc:477 +msgid "Abort job" +msgstr "Vorgang abbrechen" + +#: addons/goto/class_gotomasses.inc:521 +msgid "Waiting" +msgstr "Wartend" + +#: addons/goto/class_gotomasses.inc:527 +msgid "Processed" +msgstr "Durchgeführt" + +#: addons/goto/class_gotomasses.inc:542 +msgid "Detection" +msgstr "Erkennung" + +#: addons/goto/class_gotomasses.inc:550 +msgid "in progress" +msgstr "in Bearbeitung" + +#: addons/goto/class_gotomasses.inc:563 +msgid "immediately" +msgstr "sofort" + +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:735 +#: addons/goto/class_gotomasses.inc:775 +#, php-format +msgid "Cannot update queue entry: %s" +msgstr "Kann Warteschlangeneintrag nicht aktualisieren: %s" + +#: addons/goto/class_gotomasses.inc:691 +#, php-format +msgid "Cannot update queue entries." +msgstr "Kann Warteschlangeneinträge nicht aktualisieren." + +#: addons/goto/class_gotomasses.inc:740 +#, php-format +msgid "Required class '%s' cannot be found: job not aborted!" +msgstr "" +"Die erforderliche Klasse '%s' wurde nicht gefunden: Auftrag abgebrochen!" + +#: addons/goto/class_gotomasses.inc:816 +#, php-format +msgid "Cannot load queue entries: %s" +msgstr "Kann Warteschlangeneinträge nicht laden: %s" + +#: addons/goto/class_gotomasses.inc:910 addons/goto/class_gotomasses.inc:916 +msgid "System deployment" +msgstr "System-Verteilung" + +#: addons/goto/class_gotomasses.inc:911 +msgid "Provide a mechanism to automatically activate systems" +msgstr "Stelle einen Mechanismus bereit um Systemen automatisch zu aktivieren" + +#: addons/goto/log_view.tpl:7 +msgid "Available logs" +msgstr "Verfügbare Protokolle" + +#: addons/goto/log_view.tpl:12 +msgid "Selected log" +msgstr "Ausgewähltes Protokoll" + +#: addons/goto/log_view.tpl:17 +msgid "No logs for this host available!" +msgstr "Es sind keine Protokolle für dieses System verfügbar!" + +#: addons/goto/events/class_DaemonEvent_lock.inc:29 +#: addons/goto/events/class_DaemonEvent_lock.inc:30 +msgid "Lock" +msgstr "Sperre" + +#: addons/goto/events/DaemonEvent_update.tpl:18 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:18 +#: addons/goto/events/DaemonEvent_halt.tpl:18 +#: addons/goto/events/DaemonEvent_wakeup.tpl:18 +#: addons/goto/events/DaemonEvent_reboot.tpl:18 +#: addons/goto/events/DaemonEvent_rescan.tpl:18 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:18 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:18 +#: addons/goto/events/DaemonEvent_faireboot.tpl:18 +#: addons/goto/events/DaemonEvent_localboot.tpl:18 +#: addons/goto/events/DaemonEvent_memcheck.tpl:18 +#: addons/goto/events/DaemonEvent_activate.tpl:18 +#: addons/goto/events/DaemonEvent_lock.tpl:18 +#: addons/goto/events/DaemonEvent_reinstall.tpl:18 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:18 +msgid "System list" +msgstr "Systemliste" + +#: addons/goto/events/DaemonEvent_update.tpl:35 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:35 +#: addons/goto/events/DaemonEvent_halt.tpl:35 +#: addons/goto/events/DaemonEvent_wakeup.tpl:35 +#: addons/goto/events/DaemonEvent_reboot.tpl:35 +#: addons/goto/events/DaemonEvent_notify.tpl:69 +#: addons/goto/events/DaemonEvent_rescan.tpl:35 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:35 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:35 +#: addons/goto/events/DaemonEvent_faireboot.tpl:35 +#: addons/goto/events/DaemonEvent_localboot.tpl:35 +#: addons/goto/events/DaemonEvent_memcheck.tpl:35 +#: addons/goto/events/DaemonEvent_activate.tpl:35 +#: addons/goto/events/DaemonEvent_lock.tpl:35 +#: addons/goto/events/DaemonEvent_reinstall.tpl:35 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:35 +msgid "ID" +msgstr "ID" + +#: addons/goto/events/DaemonEvent_update.tpl:43 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:43 +#: addons/goto/events/DaemonEvent_halt.tpl:43 +#: addons/goto/events/DaemonEvent_wakeup.tpl:43 +#: addons/goto/events/DaemonEvent_reboot.tpl:43 +#: addons/goto/events/DaemonEvent_notify.tpl:77 +#: addons/goto/events/DaemonEvent_rescan.tpl:43 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:43 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:43 +#: addons/goto/events/DaemonEvent_faireboot.tpl:43 +#: addons/goto/events/DaemonEvent_localboot.tpl:43 +#: addons/goto/events/DaemonEvent_memcheck.tpl:43 +#: addons/goto/events/DaemonEvent_activate.tpl:43 +#: addons/goto/events/DaemonEvent_lock.tpl:43 +#: addons/goto/events/DaemonEvent_reinstall.tpl:47 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:43 +msgid "Result" +msgstr "Ergebnis" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:37 +msgid "GOto reload" +msgstr "GOto Aktualisieren" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:38 +msgid "Reload GOto settings" +msgstr "GOto-Einstellungen aktualisieren" + +#: addons/goto/events/class_DaemonEvent_activate.inc:29 +#: addons/goto/events/class_DaemonEvent_activate.inc:30 +msgid "Unlock" +msgstr "Sperre aufheben" + +#: addons/goto/events/class_DaemonEvent_faireboot.inc:28 +#: addons/goto/events/class_DaemonEvent_faireboot.inc:29 +msgid "Abort installation" +msgstr "Installation abbrechen" + +#: addons/goto/events/target_list.tpl:5 +msgid "Apply" +msgstr "Anwenden" + +#: addons/goto/events/target_list.tpl:6 +msgid "Cancel" +msgstr "Abbrechen" + +#: addons/goto/events/DaemonEvent_notify.tpl:7 +msgid "Message settings" +msgstr "Nachrichteneinstellungen" + +#: addons/goto/events/DaemonEvent_notify.tpl:10 +msgid "Sender" +msgstr "Absender" + +#: addons/goto/events/DaemonEvent_notify.tpl:14 +#: addons/goto/events/class_DaemonEvent_notify.inc:94 +msgid "Subject" +msgstr "Betreff" + +#: addons/goto/events/DaemonEvent_notify.tpl:18 +#: addons/goto/events/class_DaemonEvent_notify.inc:97 +msgid "Message" +msgstr "Nachricht" + +#: addons/goto/events/DaemonEvent_notify.tpl:37 +msgid "Target users" +msgstr "Zielbenutzer" + +#: addons/goto/events/DaemonEvent_notify.tpl:44 +msgid "Target groups" +msgstr "Zielgruppen" + +#: addons/goto/events/class_DaemonEvent.inc:119 +msgid "This job has no template!" +msgstr "Dieser Auftrag hat keine Vorlage!" + +#: addons/goto/events/class_DaemonEvent.inc:135 +#, php-format +msgid "Create '%s' job" +msgstr "Erstelle '%s'-Vorgang" + +#: addons/goto/events/class_DaemonEvent.inc:234 +msgid "Add" +msgstr "Hinzufügen" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:31 +msgid "Reload fai release db" +msgstr "FAI-Release-Datenbank neu laden" + +#: addons/goto/events/class_DaemonEvent_wakeup.inc:30 +msgid "Wake system" +msgstr "System aufwecken" + +#: addons/goto/events/class_DaemonEvent_activate_new.inc:40 +#: addons/goto/events/class_DaemonEvent_activate_new.inc:41 +msgid "Activate new" +msgstr "Neue Geräte Aktivieren" + +#: addons/goto/events/class_EventTargetAddList.inc:51 +#: addons/goto/events/class_EventTargetAddUsersList.inc:45 +msgid "Targets" +msgstr "Ziele" + +#: addons/goto/events/class_EventTargetAddList.inc:55 +msgid "" +"This dialog shows all available targets for the event. Check the targets you " +"want to add and use the 'Apply' button." +msgstr "" +"Dieser Dialog zeigt alle verfügbaren Ziele für Ihr Ereignis, wählen Sie die " +"zu verwendenden Ziele und drücken Sie auf den Knopf 'Anwenden' um die " +"Auswahl zu übernehmen." + +#: addons/goto/events/class_EventTargetAddList.inc:66 +#: addons/goto/events/class_EventTargetAddUsersList.inc:60 +msgid "System / Department" +msgstr "System / Abteilung" + +#: addons/goto/events/class_EventTargetAddList.inc:73 +msgid "Display server" +msgstr "Zeige Server" + +#: addons/goto/events/class_EventTargetAddList.inc:74 +msgid "Display workstation" +msgstr "Zeige Arbeitsstation" + +#: addons/goto/events/class_EventTargetAddList.inc:75 +msgid "Display object groups" +msgstr "Zeige die Objektgruppen, auf die Folgendes passt" + +#: addons/goto/events/class_EventTargetAddList.inc:76 +msgid "Filter by IP range" +msgstr "IP-Bereichsfilter" + +#: addons/goto/events/timestamp_select.tpl:3 +msgid "Year" +msgstr "Jahr" + +#: addons/goto/events/timestamp_select.tpl:4 +msgid "Month" +msgstr "Monat" + +#: addons/goto/events/timestamp_select.tpl:5 +msgid "Day" +msgstr "Tag" + +#: addons/goto/events/timestamp_select.tpl:7 +msgid "Hour" +msgstr "Stunde" + +#: addons/goto/events/timestamp_select.tpl:8 +msgid "Minute" +msgstr "Minute" + +#: addons/goto/events/timestamp_select.tpl:9 +msgid "Second" +msgstr "Sekunde" + +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:28 +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:29 +msgid "Reload LDAP config" +msgstr "LDAP-Konfiguration neu laden" + +#: addons/goto/events/class_DaemonEvent_notify.inc:46 +#: addons/goto/events/class_DaemonEvent_notify.inc:47 +msgid "Send message" +msgstr "Nachricht senden" + +#: addons/goto/events/class_DaemonEvent_notify.inc:100 +msgid "From" +msgstr "Von" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:49 +msgid "" +"This dialog shows all available targets for your event, check the targets " +"you want to add and use the 'Use' button to accept." +msgstr "" +"Dieser Dialog zeigt alle verfügbaren Ziele für Ihr Ereignis, wählen Sie die " +"zu verwendenden Ziele und drücken Sie auf den Knopf 'Verwenden' um die " +"Auswahl zu übernehmen." + +#: addons/goto/events/class_EventTargetAddUsersList.inc:65 +msgid "Display users" +msgstr "Zeige Benutzer" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:66 +msgid "Display groups" +msgstr "Zeige Gruppen" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:31 +msgid "Reload fai server db" +msgstr "FAI-Server-Datenbank neu laden" + +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:28 +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:29 +msgid "Installation activation" +msgstr "Aktivierung der Installation" + +#: addons/goto/events/DaemonEvent_activate.tpl:9 +msgid "Time schedule" +msgstr "Zeitplan" + +#: addons/goto/events/DaemonEvent_reinstall.tpl:39 +msgid "Progress" +msgstr "Fortschritt" + +#: addons/goto/class_goto_import_file.inc:90 +msgid "" +"Selected entries will be skipped because of errors. Do you want to proceed?" +msgstr "" +"Die ausgewählten Einträge sind fehlerhaft und werden nicht berücksichtig. " +"Möchten Sie fortfahren?" + +#: addons/goto/class_goto_import_file.inc:131 +#, php-format +msgid "Import complete: %s events successfully send, %s failed" +msgstr "Import abgeschlossen: %s Vorgänge importiert, %s fehlgeschlagen" + +#: personal/environment/class_environment.inc:9 +#: personal/environment/class_environment.inc:433 +#: personal/environment/class_environment.inc:434 +#: personal/environment/class_environment.inc:442 +#: personal/environment/class_environment.inc:443 +#: personal/environment/class_environment.inc:446 +#: personal/environment/class_environment.inc:447 +#: personal/environment/class_environment.inc:450 +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:473 +#: personal/environment/class_environment.inc:474 +#: personal/environment/class_environment.inc:478 +#: personal/environment/class_environment.inc:479 +#: personal/environment/class_environment.inc:482 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1766 +msgid "Environment" +msgstr "Umgebung" + +#: personal/environment/class_environment.inc:139 +#, php-format +msgid "Device '%s' is not available anymore. It will be removed!" +msgstr "Das Gerät'%s' ist nicht mehr länger verfügbar. Es wird gelöscht!" + +#: personal/environment/class_environment.inc:212 +msgid "auto" +msgstr "auto" + +#: personal/environment/class_environment.inc:234 +#, php-format +msgid "Cannot open file '%s'!" +msgstr "Kann Datei '%s' nicht öffnen!" + +#: personal/environment/class_environment.inc:271 +#: personal/environment/class_environment.inc:272 +msgid "disabled" +msgstr "deaktiviert" + +#: personal/environment/class_environment.inc:307 +#, php-format +msgid "" +"Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk " +"profile will be disabled!" +msgstr "" +"Das Kiosk-Profil '%s', das sich auf dem Server '%s' befindet, ist nicht mehr " +"verfügbar. Das Kiosk-Profil wird deaktiviert!" + +#: personal/environment/class_environment.inc:360 +#, php-format +msgid "Profile server '%s' is not available anymore. Switched to server '%s'." +msgstr "" +"Der Profil-Server '%s' ist nicht mehr verfügbar, Wechsel auf Server '%s'." + +#: personal/environment/class_environment.inc:364 +#, php-format +msgid "" +"Profile server '%s' is not available anymore. Kiosk profile will be disabled." +msgstr "" +"Der Profil-Server '%s' ist nicht mehr verfügbar. Das Kiosk-Profil wird " +"deaktiviert." + +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1148 +msgid "POSIX" +msgstr "POSIX" + +#: personal/environment/class_environment.inc:583 +#: personal/environment/environment.tpl:246 +msgid "Logon scripts" +msgstr "Anmelde-Skripte" + +#: personal/environment/class_environment.inc:673 +msgid "Share" +msgstr "Freigabe" + +#: personal/environment/class_environment.inc:763 +#: personal/environment/environment.tpl:257 +#: personal/environment/environment.tpl:303 +msgid "Used by all users" +msgstr "Verwendet von allen Benutzern" + +#: personal/environment/class_environment.inc:766 +#: personal/environment/environment.tpl:259 +#: personal/environment/environment.tpl:305 +msgid "Used by some users" +msgstr "Verwendet von einigen Benutzern" + +#: personal/environment/class_environment.inc:779 +#: personal/environment/class_environment.inc:780 +#: personal/environment/class_environment.inc:789 +#: personal/environment/class_environment.inc:790 +msgid "Reset password hash" +msgstr "Passwort zurücksetzen" + +#: personal/environment/class_environment.inc:794 +msgid "Delete share entry" +msgstr "Diesen Freigabe-Eintrag entfernen" + +#: personal/environment/class_environment.inc:988 +msgid "Cannot set default printer flag for groups!" +msgstr "Kann Standarddrucker-Flag nicht für Gruppen setzen!" + +#: personal/environment/class_environment.inc:1141 +#: personal/environment/class_environment.inc:1711 +#: personal/environment/class_environment.inc:1780 +msgid "Profile quota" +msgstr "Profil-Kontingent" + +#: personal/environment/class_environment.inc:1148 +msgid "environment" +msgstr "Umgebung" + +#: personal/environment/class_environment.inc:1329 +msgid "group share" +msgstr "Gruppen-Freigabe" + +#: personal/environment/class_environment.inc:1363 +msgid "Administrator" +msgstr "Administrator" + +#: personal/environment/class_environment.inc:1368 +msgid "Default printer" +msgstr "Standard Drucker" + +#: personal/environment/class_environment.inc:1767 +msgid "Environment settings" +msgstr "Umgebungs-Einstellungen" + +#: personal/environment/class_environment.inc:1771 +msgid "My account" +msgstr "Mein Konto" + +#: personal/environment/class_environment.inc:1775 +msgid "Command to extend the list of possible screen resolutions" +msgstr "Befehl um die Liste der möglichen Auflösungen zu erweitern" + +#: personal/environment/class_environment.inc:1779 +msgid "Profile server" +msgstr "Profilserver" + +#: personal/environment/class_environment.inc:1781 +#: personal/environment/environment.tpl:41 +#: personal/environment/environment.tpl:106 +msgid "Cache profile localy" +msgstr "Profil lokal zwischenspeichern" + +#: personal/environment/class_environment.inc:1785 +#: personal/environment/environment.tpl:174 +msgid "Resolution changeable during session" +msgstr "Auflösung änderbar während des Betriebs" + +#: personal/environment/class_environment.inc:1787 +#: personal/environment/logonManagement.tpl:56 +msgid "Logon script" +msgstr "Anmelde-Skript" + +#: personal/environment/environment.tpl:3 +msgid "The environment extension is currently disabled." +msgstr "Die Umgebungs-Erweiterung ist zur Zeit deaktiviert." + +#: personal/environment/environment.tpl:11 +msgid "Profiles" +msgstr "Profile" + +#: personal/environment/environment.tpl:14 +#: personal/environment/environment.tpl:207 +#: personal/environment/environment.tpl:288 +msgid "Environment managment settings" +msgstr "Umgebungs-Einstellungen" + +#: personal/environment/environment.tpl:22 +#: personal/environment/environment.tpl:55 +msgid "Use profile managment" +msgstr "Benutze Profil-Verwaltung" + +#: personal/environment/environment.tpl:26 +#: personal/environment/environment.tpl:65 +msgid "Profil path" +msgstr "Profil-Pfad" + +#: personal/environment/environment.tpl:36 +#: personal/environment/environment.tpl:95 +msgid "MB" +msgstr "MB" + +#: personal/environment/environment.tpl:47 +msgid "Profile managment" +msgstr "Profil-Verwaltung" + +#: personal/environment/environment.tpl:62 +msgid "Profile server managment" +msgstr "Profil-Server-Verwaltung" + +#: personal/environment/environment.tpl:89 +msgid "Profil quota" +msgstr "Profil-Kontingent" + +#: personal/environment/environment.tpl:120 +msgid "Kiosk profile settings" +msgstr "Kiosk-Profil-Einstellungen" + +#: personal/environment/environment.tpl:145 +msgid "Profile" +msgstr "Profil" + +#: personal/environment/environment.tpl:164 +msgid "Manage" +msgstr "Verwalten" + +#: personal/environment/environment.tpl:222 +msgid "User used to connect to the share" +msgstr "Benutzer, der für die Verbindung zur Freigabe verwendet wird" + +#: personal/environment/environment.tpl:225 +msgid "Select a share" +msgstr "Wählen Sie eine Freigabe" + +#: personal/environment/environment.tpl:233 +msgid "Mount path" +msgstr "Einhänge-Pfad" + +#: personal/environment/environment.tpl:248 +#: personal/environment/logonManagement.tpl:1 +#: personal/environment/logonManagement.tpl:5 +msgid "Logon script management" +msgstr "Verwaltung der Anmelde-Skripte" + +#: personal/environment/environment.tpl:295 +msgid "Hotplug device settings" +msgstr "Einstellungen der Hotplug-Geräte" + +#: personal/environment/environment.tpl:342 +msgid "" +"Using this option will overwrite the complete printer settings for all " +"currently edited objects!" +msgstr "" +"Das Verwenden dieser Option wird die Druckereinstellungen aller momentan " +"bearbeiteten Objekte vollständig überschreiben!" + +#: personal/environment/environment.tpl:343 +#: personal/environment/environment.tpl:376 +msgid "Printer settings" +msgstr "Drucker-Einstellungen" + +#: personal/environment/environment.tpl:360 +#: personal/environment/environment.tpl:393 +msgid "Toggle admin" +msgstr "Admin-Modus umschalten" + +#: personal/environment/environment.tpl:363 +#: personal/environment/environment.tpl:396 +msgid "Toggle default" +msgstr "Standard umschalten" + +#: personal/environment/class_logonManagementDialog.inc:107 +#: personal/environment/logonManagement.tpl:10 +msgid "Script name" +msgstr "Skriptname" + +#: personal/environment/main.inc:134 +msgid "User environment settings" +msgstr "Einstellungen der Benutzer-Umgebung" + +#: personal/environment/class_selectPrinterDialog.inc:107 +msgid "Please select a printer!" +msgstr "Bitte wählen Sie einen Drucker!" + +#: personal/environment/class_hotplugDialog.inc:64 +msgid "Please select a hotplug device!" +msgstr "Bitte wählen Sie ein Hotplug-Gerät!" + +#: personal/environment/selectPrinterDialog.tpl:1 +msgid "Add printer devices" +msgstr "Drucker hinzufügen" + +#: personal/environment/selectPrinterDialog.tpl:48 +msgid "Display printers matching" +msgstr "Zeige die Drucker, auf die Folgendes passt" + +#: personal/environment/selectPrinterDialog.tpl:53 +msgid "Regular expression for matching printer names" +msgstr "Regulärer Ausdruck zum Erkennen von Druckernamen" + +#: personal/environment/logonManagement.tpl:8 +msgid "Logon script settings" +msgstr "Einstellungen für Anmelde-Skripte" + +#: personal/environment/logonManagement.tpl:24 +msgid "Priority" +msgstr "Priorität" + +#: personal/environment/logonManagement.tpl:34 +msgid "Logon script flags" +msgstr "Optionen für Anmelde-Skripte" + +#: personal/environment/logonManagement.tpl:38 +msgid "Last script" +msgstr "Letztes Skript" + +#: personal/environment/logonManagement.tpl:44 +msgid "Script can be replaced by user" +msgstr "Skript kann vom Benutzer ausgetauscht werden" + +#: personal/environment/hotplugDialog.tpl:1 +msgid "Add hotplug devices" +msgstr "Hotplug-Geräte hinzufügen" + +#: personal/environment/hotplugDialog.tpl:5 +msgid "Hotplug management" +msgstr "Verwaltung der Hotplug-Geräte" + +#: personal/environment/hotplugDialog.tpl:10 +msgid "Select hotplug device to add" +msgstr "Auswahl des hinzuzufügenden Hotplug-Gerätes" + +#: personal/environment/hotplugDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Wählen Sie die Abteilung, auf die die Suchfunktion angewandt wird" + +#: personal/environment/hotplugDialog.tpl:48 +msgid "Regular expression for matching hotplugs" +msgstr "Regulärer Ausdruck zum Erkennen von Hotplug-Geräten" diff --git a/trunk/gosa-plugins/goto/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/goto/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..a1a62cea0 --- /dev/null +++ b/trunk/gosa-plugins/goto/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,5953 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:31+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/ogroups/goto/termgroup.tpl:2 admin/devices/remove.tpl:2 +#: admin/applications/remove.tpl:2 admin/mimetypes/remove.tpl:2 +#: admin/systems/ppd/remove_ppd.tpl:2 addons/goto/remove.tpl:2 +#: personal/environment/class_environment.inc:139 +#: personal/environment/class_environment.inc:307 +#: personal/environment/class_environment.inc:360 +#: personal/environment/class_environment.inc:364 +msgid "Warning" +msgstr "Aviso" + +#: admin/ogroups/goto/termgroup.tpl:2 +msgid "" +"Actions you choose here influence all systems in this object group. " +"Additionally, all values editable here can be inherited by the clients " +"assigned to this object group." +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:6 +#: admin/devices/class_deviceGeneric.inc:251 +#: admin/applications/class_applicationGeneric.inc:597 +#: admin/mimetypes/generic.tpl:4 admin/mimetypes/paste_generic.tpl:4 +#: admin/mimetypes/class_mimetypeGeneric.inc:715 +#: admin/systems/goto/class_printGeneric.inc:920 +#: admin/systems/goto/class_workstationGeneric.inc:698 +msgid "Generic" +msgstr "Genérico" + +#: admin/ogroups/goto/termgroup.tpl:14 +#: admin/ogroups/goto/class_termgroup.inc:145 +#: admin/systems/goto/workstation.tpl:95 +#: admin/systems/goto/class_workstationGeneric.inc:489 +#: admin/systems/goto/class_terminalGeneric.inc:480 +#: admin/systems/goto/terminal.tpl:117 +msgid "NTP server" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:17 admin/systems/goto/workstation.tpl:98 +#: admin/systems/goto/terminal.tpl:120 +msgid "Choose server to use for synchronizing time" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:47 +#: admin/ogroups/goto/class_termgroup.inc:378 +#: admin/systems/goto/workstation.tpl:55 +#: admin/systems/goto/class_terminalGeneric.inc:669 +#: admin/systems/goto/terminal.tpl:47 +msgid "Mode" +msgstr "Modo" + +#: admin/ogroups/goto/termgroup.tpl:50 admin/systems/goto/workstation.tpl:58 +#: admin/systems/goto/terminal.tpl:50 +msgid "Select terminal mode" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:58 +#: admin/ogroups/goto/class_termgroup.inc:379 +#: admin/systems/services/syslog/class_goSyslogServer.inc:27 +#: admin/systems/services/syslog/class_goSyslogServer.inc:47 +#: admin/systems/goto/workstation.tpl:65 +#: admin/systems/goto/class_workstationGeneric.inc:712 +#: admin/systems/goto/terminal.tpl:57 +msgid "Syslog server" +msgstr "Servidor de registro de sistema" + +#: admin/ogroups/goto/termgroup.tpl:61 admin/systems/goto/workstation.tpl:68 +#: admin/systems/goto/terminal.tpl:60 +msgid "Choose server to use for logging" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:69 +#: admin/ogroups/goto/class_termgroup.inc:382 +#: admin/systems/goto/class_terminalGeneric.inc:672 +#: admin/systems/goto/terminal.tpl:76 +msgid "Root server" +msgstr "Servidor Raíz" + +#: admin/ogroups/goto/termgroup.tpl:72 admin/systems/goto/terminal.tpl:79 +msgid "Select NFS root filesystem to use" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:79 +#: admin/ogroups/goto/class_termgroup.inc:383 +#: admin/systems/goto/class_terminalGeneric.inc:673 +#: admin/systems/goto/terminal.tpl:86 +msgid "Swap server" +msgstr "Servidor de Intercambio" + +#: admin/ogroups/goto/termgroup.tpl:82 admin/systems/goto/terminal.tpl:89 +msgid "Choose NFS filesystem to place swap files on" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:110 admin/systems/goto/workstation.tpl:130 +#: admin/systems/goto/terminal.tpl:156 addons/goto/class_gotomasses.inc:415 +msgid "Action" +msgstr "Acción" + +#: admin/ogroups/goto/termgroup.tpl:115 admin/systems/goto/workstation.tpl:137 +#: admin/systems/goto/terminal.tpl:161 +msgid "Select action to execute for this terminal" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:123 admin/applications/generic.tpl:24 +#: admin/applications/class_applicationGeneric.inc:438 +#: admin/applications/class_applicationGeneric.inc:609 +#: admin/systems/goto/workstation.tpl:146 +#: admin/systems/goto/workstation.tpl:150 admin/systems/goto/terminal.tpl:169 +#: addons/goto/class_gotomasses.inc:383 +msgid "Execute" +msgstr "Ejecute" + +#: admin/ogroups/goto/class_termgroup.inc:48 +#: admin/systems/goto/class_workstationGeneric.inc:138 +#: admin/systems/goto/class_terminalGeneric.inc:122 +msgid "Activated" +msgstr "Activado" + +#: admin/ogroups/goto/class_termgroup.inc:49 +#: admin/systems/goto/class_workstationGeneric.inc:139 +#: admin/systems/goto/class_terminalGeneric.inc:121 +#: addons/goto/class_gotomasses.inc:538 +msgid "Locked" +msgstr "Bloqueado" + +#: admin/ogroups/goto/class_termgroup.inc:95 +#: admin/systems/goto/class_terminalGeneric.inc:281 +#, fuzzy +msgid "Local swap" +msgstr "Nombre del Rol" + +#: admin/ogroups/goto/class_termgroup.inc:101 +#: admin/ogroups/goto/class_termgroup.inc:113 +#: admin/systems/goto/class_terminalStartup.inc:116 +#: admin/systems/goto/class_terminalStartup.inc:120 +#: admin/systems/goto/class_terminalService.inc:175 +#: admin/systems/goto/class_terminalService.inc:256 +#: admin/systems/goto/class_terminalService.inc:264 +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_terminalService.inc:270 +#: admin/systems/goto/class_terminalService.inc:273 +#: admin/systems/goto/class_terminalService.inc:276 +#: admin/systems/goto/class_terminalService.inc:279 +#: admin/systems/goto/class_terminalService.inc:282 +#: admin/systems/goto/class_workstationGeneric.inc:154 +#: admin/systems/goto/class_workstationStartup.inc:180 +#: admin/systems/goto/class_workstationStartup.inc:210 +#: admin/systems/goto/class_workstationService.inc:191 +#: admin/systems/goto/class_workstationService.inc:194 +#: admin/systems/goto/class_workstationService.inc:197 +#: admin/systems/goto/class_workstationService.inc:200 +#: admin/systems/goto/class_workstationService.inc:203 +#: admin/systems/goto/class_workstationService.inc:206 +#: admin/systems/goto/class_workstationService.inc:209 +#: admin/systems/goto/class_workstationService.inc:220 +#: admin/systems/goto/class_workstationService.inc:221 +#: admin/systems/goto/class_workstationService.inc:222 +#: admin/systems/goto/class_workstationService.inc:223 +#: admin/systems/goto/class_workstationService.inc:224 +#: admin/systems/goto/class_workstationService.inc:225 +#: admin/systems/goto/class_workstationService.inc:226 +#: admin/systems/goto/class_terminalGeneric.inc:137 +#: admin/systems/goto/class_terminalGeneric.inc:287 +#: admin/systems/goto/class_terminalGeneric.inc:299 +msgid "inherited" +msgstr "heredado" + +#: admin/ogroups/goto/class_termgroup.inc:203 +#: admin/systems/goto/class_terminalService.inc:666 +#: admin/systems/goto/class_workstationGeneric.inc:212 +#: admin/systems/goto/class_workstationGeneric.inc:635 +#: admin/systems/goto/class_workstationStartup.inc:926 +#: admin/systems/goto/class_workstationStartup.inc:1053 +#: admin/systems/goto/class_workstationStartup.inc:1113 +#: admin/systems/goto/class_workstationService.inc:554 +#: admin/systems/goto/class_terminalGeneric.inc:187 +#: admin/systems/goto/class_terminalGeneric.inc:594 +#: addons/goto/class_gotomasses.inc:328 +#: addons/goto/class_goto_import_file.inc:124 +#, fuzzy +msgid "Service infrastructure" +msgstr "Buscar en subárboles" + +#: admin/ogroups/goto/class_termgroup.inc:207 +#: admin/systems/goto/class_workstationGeneric.inc:216 +#: admin/systems/goto/class_terminalGeneric.inc:191 +msgid "Event error" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:208 +#: admin/systems/goto/class_workstationGeneric.inc:217 +#: admin/systems/goto/class_terminalGeneric.inc:192 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:265 +#: addons/goto/events/class_DaemonEvent_halt.inc:31 +#: addons/goto/events/class_DaemonEvent_halt.inc:32 +msgid "Switch off" +msgstr "Apagar" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:266 +#: addons/goto/events/class_DaemonEvent_reboot.inc:29 +#: addons/goto/events/class_DaemonEvent_reboot.inc:30 +msgid "Reboot" +msgstr "Reiniciar" + +#: admin/ogroups/goto/class_termgroup.inc:258 +msgid "Instant update" +msgstr "Actualización instantánea" + +#: admin/ogroups/goto/class_termgroup.inc:259 +msgid "Scheduled update" +msgstr "Actualización programada" + +#: admin/ogroups/goto/class_termgroup.inc:260 +#, fuzzy +msgid "Wake" +msgstr "Despertar" + +#: admin/ogroups/goto/class_termgroup.inc:261 +#: admin/systems/goto/class_workstationGeneric.inc:300 +#: admin/systems/goto/class_workstationGeneric.inc:308 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:32 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:33 +msgid "Reinstall" +msgstr "Reinstalar" + +#: admin/ogroups/goto/class_termgroup.inc:262 +#: admin/systems/goto/class_workstationGeneric.inc:301 +#: addons/goto/events/class_DaemonEvent_rescan.inc:28 +#: addons/goto/events/class_DaemonEvent_rescan.inc:29 +msgid "Rescan hardware" +msgstr "Buscar hardware" + +#: admin/ogroups/goto/class_termgroup.inc:263 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:28 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:29 +msgid "Memory test" +msgstr "Chequeo de memoria" + +#: admin/ogroups/goto/class_termgroup.inc:264 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:28 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:29 +msgid "System analysis" +msgstr "Análisis del sistema" + +#: admin/ogroups/goto/class_termgroup.inc:362 +#: admin/groups/apps/class_groupApplication.inc:649 +#: admin/groups/apps/class_groupApplication.inc:1330 +#: admin/groups/apps/class_groupApplication.inc:1344 +#: admin/groups/apps/class_groupApplication.inc:1358 +#: admin/devices/class_deviceGeneric.inc:196 +#: admin/applications/class_applicationParameters.inc:161 +#: admin/applications/class_applicationParameters.inc:224 +#: admin/applications/class_applicationGeneric.inc:271 +#: admin/applications/class_applicationGeneric.inc:285 +#: admin/applications/class_applicationGeneric.inc:515 +#: admin/mimetypes/class_mimetypeGeneric.inc:494 +#: admin/mimetypes/class_mimetypeGeneric.inc:506 +#: admin/mimetypes/class_mimetypeGeneric.inc:521 +#: admin/systems/services/kiosk/class_goKioskService.inc:249 +#: admin/systems/services/ldap/class_goLdapServer.inc:117 +#: admin/systems/services/ntp/class_goNtpServer.inc:98 +#: admin/systems/services/terminal/class_goTerminalServer.inc:103 +#: admin/systems/services/shares/class_goShareServer.inc:192 +#: admin/systems/services/shares/class_goShareServer.inc:261 +#: admin/systems/services/shares/class_goShareServer.inc:277 +#: admin/systems/services/shares/class_goShareServer.inc:290 +#: admin/systems/goto/class_printGeneric.inc:601 +#: admin/systems/goto/class_printGeneric.inc:885 +#: admin/systems/goto/class_terminalStartup.inc:455 +#: admin/systems/goto/class_ArpNewDevice.inc:69 +#: admin/systems/goto/class_terminalService.inc:590 +#: admin/systems/goto/class_workstationGeneric.inc:364 +#: admin/systems/goto/class_workstationGeneric.inc:596 +#: admin/systems/goto/class_workstationGeneric.inc:613 +#: admin/systems/goto/class_workstationStartup.inc:877 +#: admin/systems/goto/class_workstationService.inc:447 +#: admin/systems/goto/class_terminalGeneric.inc:353 +#: admin/systems/goto/class_terminalGeneric.inc:580 +#: personal/environment/class_environment.inc:1058 +#: personal/environment/class_environment.inc:1315 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: admin/ogroups/goto/class_termgroup.inc:370 +msgid "System" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:371 +msgid "System group" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:380 +#: admin/systems/goto/class_workstationGeneric.inc:716 +#: admin/systems/goto/class_terminalGeneric.inc:678 +msgid "Action flag" +msgstr "Marca de acción" + +#: admin/ogroups/goto/class_termgroup.inc:381 +#: admin/systems/goto/class_workstationGeneric.inc:713 +msgid "Ntp server" +msgstr "Servidor NTP" + +#: admin/groups/apps/edit_entry.tpl:8 +msgid "Folder image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:12 +#, fuzzy +msgid "Could not load image." +msgstr "No se puede subir la imagen a %s." + +#: admin/groups/apps/edit_entry.tpl:14 +#: admin/systems/goto/class_gotoLpdEnabled.inc:58 +#, fuzzy +msgid "None" +msgstr "ninguno" + +#: admin/groups/apps/edit_entry.tpl:24 +msgid "Upload image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:28 admin/applications/generic.tpl:142 +#: admin/systems/ppd/printerPPDDialog.tpl:21 +#: addons/goto/goto_import_file.tpl:25 +msgid "Upload" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:32 +msgid "Reset image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:33 +#, fuzzy +msgid "Reset" +msgstr "Versión" + +#: admin/groups/apps/edit_entry.tpl:40 +#: admin/applications/class_applicationGeneric.inc:557 +msgid "Application settings" +msgstr "Parametros de la aplicación" + +#: admin/groups/apps/edit_entry.tpl:43 +#: admin/devices/class_deviceGeneric.inc:90 +#: admin/devices/class_deviceGeneric.inc:114 +#: admin/devices/class_deviceGeneric.inc:260 +#: admin/applications/class_applicationParameters.inc:193 +#: admin/applications/class_applicationGeneric.inc:430 +#: admin/applications/class_applicationGeneric.inc:434 +#: admin/applications/class_applicationGeneric.inc:606 +#: admin/applications/class_applicationGeneric.inc:610 +#: admin/mimetypes/class_mimetypeGeneric.inc:532 +#: admin/mimetypes/class_mimetypeGeneric.inc:724 +#: admin/systems/services/shares/class_goShareServer.inc:398 +#: admin/systems/services/nfs/class_servNfs.inc:199 +#: admin/systems/services/nfs/class_servNfs.inc:202 +#: admin/systems/services/nfs/class_servNfs.inc:235 +#: admin/systems/services/nfs/servnfs.tpl:9 +#: admin/systems/goto/class_printGeneric.inc:670 +#: admin/systems/goto/class_printGeneric.inc:675 +#: admin/systems/goto/class_printGeneric.inc:694 +#: admin/systems/goto/class_printGeneric.inc:929 +#: admin/systems/goto/class_ArpNewDevice.inc:46 +#: admin/systems/goto/class_workstationGeneric.inc:456 +#: admin/systems/goto/class_workstationGeneric.inc:461 +#: admin/systems/goto/class_workstationGeneric.inc:479 +#: admin/systems/goto/class_terminalGeneric.inc:446 +#: admin/systems/goto/class_terminalGeneric.inc:451 +#: admin/systems/goto/class_terminalGeneric.inc:470 +#: admin/systems/goto/class_terminalGeneric.inc:665 +#: personal/environment/class_logonManagementDialog.inc:103 +msgid "Name" +msgstr "Nombre" + +#: admin/groups/apps/edit_entry.tpl:53 +msgid "Application options" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:381 +#: admin/groups/apps/class_groupApplication.inc:385 +#, fuzzy +msgid "Menu" +msgstr "Impresora" + +#: admin/groups/apps/class_groupApplication.inc:439 +msgid "Back" +msgstr "Atrás" + +#: admin/groups/apps/class_groupApplication.inc:450 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:147 +msgid "back" +msgstr "atrás" + +#: admin/groups/apps/class_groupApplication.inc:458 +msgid "department" +msgstr "departamento" + +#: admin/groups/apps/class_groupApplication.inc:481 +#: admin/applications/class_applicationManagement.inc:368 +#: admin/applications/class_applicationManagement.inc:449 +#: admin/applications/class_applicationGeneric.inc:127 +msgid "application" +msgstr "aplicación" + +#: admin/groups/apps/class_groupApplication.inc:1146 +#, fuzzy +msgid "Not available in release." +msgstr "No esta disponible en la configuración actual" + +#: admin/groups/apps/class_groupApplication.inc:1373 +#: admin/applications/class_applicationManagement.inc:24 +#: admin/mimetypes/generic.tpl:117 admin/mimetypes/generic.tpl:177 +msgid "Applications" +msgstr "Aplicaciones" + +#: admin/groups/apps/class_groupApplication.inc:1374 +msgid "Group applications" +msgstr "Grupo de aplicaciones" + +#: admin/groups/apps/class_groupApplication.inc:1381 +#: admin/applications/class_divListApplication.inc:114 +#: admin/applications/class_divListApplication.inc:150 +#: admin/applications/class_applicationGeneric.inc:603 +#: admin/mimetypes/class_mimetypeGeneric.inc:728 +msgid "Application" +msgstr "Aplicación" + +#: admin/groups/apps/class_groupApplication.inc:1382 +#: admin/groups/apps/app_list.tpl:5 admin/groups/apps/app_list.tpl:53 +#: admin/systems/goto/workstationStartup.tpl:83 +#: admin/systems/goto/workstationStartup.tpl:123 +msgid "Release" +msgstr "Versión" + +#: admin/groups/apps/class_groupApplication.inc:1383 +msgid "Application parameter" +msgstr "Parámetro de la aplicación" + +#: admin/groups/apps/app_list.tpl:11 +#, fuzzy +msgid "Copy menu" +msgstr "copiar" + +#: admin/groups/apps/app_list.tpl:13 +msgid "Paste menu from" +msgstr "" + +#: admin/groups/apps/app_list.tpl:17 +#, fuzzy +msgid "Delete menu" +msgstr "Eliminar entrada" + +#: admin/groups/apps/app_list.tpl:70 admin/groups/apps/app_list.tpl:74 +#, fuzzy +msgid "Folder" +msgstr "Modo" + +#: admin/groups/apps/app_list.tpl:82 admin/groups/apps/app_list.tpl:103 +#: admin/groups/apps/app_list.tpl:128 addons/goto/class_gotomasses.inc:432 +msgid "Move up" +msgstr "Mover arriba" + +#: admin/groups/apps/app_list.tpl:84 admin/groups/apps/app_list.tpl:105 +#: admin/groups/apps/app_list.tpl:130 addons/goto/class_gotomasses.inc:434 +msgid "Move down" +msgstr "Mover abajo" + +#: admin/groups/apps/app_list.tpl:86 admin/groups/apps/app_list.tpl:107 +#: admin/groups/apps/app_list.tpl:132 +#: admin/devices/class_divListDevices.inc:100 +#: admin/applications/class_applicationParameters.inc:125 +#: admin/applications/class_divListApplication.inc:120 +#: admin/mimetypes/class_divListMimeTypes.inc:122 +#: admin/systems/goto/terminalService.tpl:212 +#: admin/systems/goto/terminalStartup.tpl:115 +#: admin/systems/goto/workstationStartup.tpl:233 +#: admin/systems/goto/printer.tpl:71 addons/goto/class_gotomasses.inc:269 +#: addons/goto/class_gotomasses.inc:376 addons/goto/class_gotomasses.inc:484 +#: addons/goto/class_gotomasses.inc:488 +#: addons/goto/events/class_DaemonEvent.inc:230 +#: personal/environment/environment.tpl:238 +msgid "Remove" +msgstr "Eliminar" + +#: admin/groups/apps/app_list.tpl:88 admin/groups/apps/app_list.tpl:134 +#: admin/systems/services/shares/goShareServer.tpl:17 +#: admin/systems/goto/printer.tpl:68 addons/goto/class_gotomasses.inc:469 +#: personal/environment/environment.tpl:274 +msgid "Edit" +msgstr "Editar" + +#: admin/groups/apps/app_list.tpl:121 +#, fuzzy +msgid "Entry" +msgstr "Editar entrada" + +#: admin/groups/apps/app_list.tpl:143 +#, fuzzy +msgid "add to" +msgstr "Añadir opción" + +#: admin/groups/apps/app_list.tpl:149 admin/groups/apps/app_list.tpl:159 +#, fuzzy +msgid "Add selected applications to this folder." +msgstr "La aplicación seleccionada no tiene opciones." + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Separator" +msgstr "Insertar separador" + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Add a separator to this folder." +msgstr "La aplicación seleccionada no tiene opciones." + +#: admin/devices/class_divListDevices.inc:33 +#: admin/devices/class_divListDevices.inc:34 +msgid "List of defined devices" +msgstr "" + +#: admin/devices/class_divListDevices.inc:45 +#: admin/applications/class_divListApplication.inc:45 +#: admin/mimetypes/class_divListMimeTypes.inc:45 +msgid "Select all" +msgstr "Seleccione todos" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/devices/deviceGeneric.tpl:20 admin/devices/paste_deviceGeneric.tpl:9 +msgid "Device name" +msgstr "" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/applications/class_divListApplication.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +msgid "Department" +msgstr "Departamento" + +#: admin/devices/class_divListDevices.inc:52 +#: admin/devices/class_divListDevices.inc:87 +#: admin/applications/class_divListApplication.inc:52 +#: admin/applications/class_divListApplication.inc:107 +#: admin/mimetypes/class_divListMimeTypes.inc:52 +#: admin/mimetypes/class_divListMimeTypes.inc:109 +#: addons/goto/class_gotomasses.inc:365 +msgid "Actions" +msgstr "Acciones" + +#: admin/devices/class_divListDevices.inc:58 +msgid "Display devices matching" +msgstr "" + +#: admin/devices/class_divListDevices.inc:82 admin/devices/deviceGeneric.tpl:9 +#: admin/devices/class_deviceGeneric.inc:261 admin/applications/generic.tpl:42 +#: admin/applications/class_divListApplication.inc:90 +#: admin/applications/class_applicationGeneric.inc:607 +#: admin/mimetypes/generic.tpl:44 +#: admin/mimetypes/class_divListMimeTypes.inc:93 +#: admin/mimetypes/class_mimetypeGeneric.inc:727 +#: admin/systems/services/ldap/class_goLdapServer.inc:79 +#: admin/systems/services/ldap/class_goLdapServer.inc:82 +#: admin/systems/goto/workstation.tpl:35 +#: admin/systems/goto/class_printGeneric.inc:930 +#: admin/systems/goto/class_workstationGeneric.inc:710 +#: admin/systems/goto/class_terminalGeneric.inc:667 +#: admin/systems/goto/printer.tpl:27 admin/systems/goto/terminal.tpl:27 +#: addons/goto/class_target_list.inc:152 addons/goto/goto_import_file.tpl:41 +#: addons/goto/events/class_EventTargetAddList.inc:161 +#: addons/goto/events/class_EventTargetAddUsersList.inc:130 +msgid "Base" +msgstr "Base" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit department" +msgstr "Enviar departamento" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit" +msgstr "Enviar" + +#: admin/devices/class_divListDevices.inc:92 +#: admin/applications/class_divListApplication.inc:111 +#: admin/mimetypes/class_divListMimeTypes.inc:114 +#: admin/systems/goto/chooser.tpl:16 addons/goto/class_gotomasses.inc:366 +msgid "Create" +msgstr "Crear" + +#: admin/devices/class_divListDevices.inc:94 +#: admin/devices/class_divListDevices.inc:131 +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/systems/goto/gotoLpdEnable.tpl:27 +#: admin/systems/goto/gotoLpdEnable.tpl:63 +msgid "Device" +msgstr "" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "edit" +msgstr "editar" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "Edit this entry" +msgstr "Editar esta entrada" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:136 +msgid "delete" +msgstr "eliminar" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +msgid "Delete this entry" +msgstr "Eliminar esta entrada" + +#: admin/devices/class_divListDevices.inc:205 +#, fuzzy +msgid "Number of listed devices" +msgstr "Nuevo otros dispositivos" + +#: admin/devices/class_divListDevices.inc:206 +#: admin/applications/class_divListApplication.inc:243 +#: admin/mimetypes/class_divListMimeTypes.inc:244 +#, fuzzy +msgid "Number of listed departments" +msgstr "Eliminar departamentos seleccionados" + +#: admin/devices/remove.tpl:6 +msgid "" +"This may be used by several users/groups. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/devices/remove.tpl:9 admin/applications/remove.tpl:9 +#: admin/mimetypes/remove.tpl:9 addons/goto/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Entonces, si esta seguro, presione Eliminar para continuar o " +"Cancelar para Abortar." + +#: admin/devices/deviceGeneric.tpl:2 admin/devices/paste_deviceGeneric.tpl:2 +#: admin/devices/class_deviceGeneric.inc:257 +msgid "Devices" +msgstr "Dispositivos" + +#: admin/devices/deviceGeneric.tpl:29 admin/devices/class_deviceGeneric.inc:93 +#: admin/devices/class_deviceGeneric.inc:262 admin/applications/generic.tpl:33 +#: admin/applications/class_applicationGeneric.inc:608 +#: admin/mimetypes/generic.tpl:34 admin/mimetypes/paste_generic.tpl:21 +#: admin/mimetypes/class_mimetypeGeneric.inc:726 +#: admin/systems/services/shares/class_goShareServer.inc:400 +#: admin/systems/services/nfs/class_servNfs.inc:207 +#: admin/systems/services/nfs/servnfs.tpl:19 +#: admin/systems/goto/workstation.tpl:19 +#: admin/systems/goto/ArpNewDevice.tpl:17 +#: admin/systems/goto/class_printGeneric.inc:931 +#: admin/systems/goto/class_workstationGeneric.inc:708 +#: admin/systems/goto/class_terminalGeneric.inc:666 +#: admin/systems/goto/printer.tpl:16 admin/systems/goto/terminal.tpl:19 +#: addons/goto/class_gotomasses.inc:917 +#: personal/environment/class_logonManagementDialog.inc:111 +#: personal/environment/logonManagement.tpl:17 +msgid "Description" +msgstr "Descripción" + +#: admin/devices/deviceGeneric.tpl:38 +#, fuzzy +msgid "Device type" +msgstr "Nombre del servicio" + +#: admin/devices/deviceGeneric.tpl:42 +msgid "Choose the device type" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:53 +#, fuzzy +msgid "Serial number" +msgstr "Número del busca" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "(iSerial)" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "Vendor-ID" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "(idVendor)" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "Product-ID" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "(idProduct)" +msgstr "" + +#: admin/devices/main.inc:49 admin/devices/main.inc:51 +#, fuzzy +msgid "Hotplug device management" +msgstr "Administración Sieve" + +#: admin/devices/class_deviceGeneric.inc:29 +msgid "Digital camera" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:30 +msgid "USB stick" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:31 +msgid "CD/DVD drive" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:98 +#: admin/devices/class_deviceGeneric.inc:100 +#, fuzzy +msgid "iSerial" +msgstr "Terminal" + +#: admin/devices/class_deviceGeneric.inc:103 +#: admin/devices/class_deviceGeneric.inc:264 +#: admin/systems/goto/class_gotoLpdEnabled.inc:51 +#, fuzzy +msgid "Serial" +msgstr "Terminal" + +#: admin/devices/class_deviceGeneric.inc:106 +msgid "Vendor ID" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/applications/class_applicationGeneric.inc:264 +#: admin/applications/class_applicationGeneric.inc:338 +#: admin/applications/class_applicationGeneric.inc:370 +#: admin/applications/class_applicationGeneric.inc:375 +#: admin/applications/class_applicationGeneric.inc:380 +#: admin/applications/class_applicationGeneric.inc:384 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: admin/systems/services/kiosk/class_goKioskService.inc:161 +#: admin/systems/services/kiosk/class_goKioskService.inc:164 +#: admin/systems/services/kiosk/class_goKioskService.inc:234 +#: admin/systems/services/shares/class_goShareServer.inc:98 +#: admin/systems/services/shares/class_goShareServer.inc:233 +#: admin/systems/services/nfs/class_servNfs.inc:43 +#: admin/systems/services/nfs/class_servNfs.inc:46 +#: admin/systems/goto/class_printGeneric.inc:435 +#: admin/systems/goto/class_printGeneric.inc:482 +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#: admin/systems/goto/class_printGeneric.inc:1008 +#: admin/systems/goto/class_printGeneric.inc:1019 +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:234 +#: admin/systems/goto/class_workstationStartup.inc:247 +#: admin/systems/goto/class_workstationStartup.inc:324 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#: addons/goto/class_gotoLogView.inc:57 addons/goto/class_gotoLogView.inc:175 +#: addons/goto/class_gotomasses.inc:174 addons/goto/class_gotomasses.inc:524 +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:691 +#: addons/goto/class_gotomasses.inc:735 addons/goto/class_gotomasses.inc:739 +#: addons/goto/class_gotomasses.inc:775 addons/goto/class_gotomasses.inc:816 +#: personal/environment/class_environment.inc:591 +#: personal/environment/class_environment.inc:673 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#: personal/environment/class_environment.inc:841 +#: personal/environment/class_environment.inc:892 +#: personal/environment/class_environment.inc:988 +msgid "Error" +msgstr "Error" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Device generic" +msgstr "Servidor genérico" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Hotplug" +msgstr "Dispositivos de conexión en caliente (HotPlug)" + +#: admin/devices/class_deviceGeneric.inc:263 +#: admin/systems/services/shares/class_goShareServer.inc:401 +#: admin/systems/services/nfs/class_servNfs.inc:193 +#: admin/systems/services/nfs/servnfs.tpl:56 +#: admin/systems/goto/terminalService.tpl:48 +#: admin/systems/goto/terminalService.tpl:138 +#: admin/systems/goto/workstationService.tpl:54 +#: admin/systems/goto/workstationService.tpl:156 +#: admin/systems/goto/gotoLpdEnable.tpl:53 +msgid "Type" +msgstr "Tipo" + +#: admin/devices/class_deviceGeneric.inc:265 +#, fuzzy +msgid "Vendor" +msgstr "Servidor" + +#: admin/devices/class_deviceGeneric.inc:266 +#, fuzzy +msgid "Device ID" +msgstr "Nombre del servicio" + +#: admin/devices/class_deviceManagement.inc:7 +#: personal/environment/class_environment.inc:1783 +#: personal/environment/environment.tpl:293 +msgid "Hotplug devices" +msgstr "Dispositivos de conexión en caliente (HotPlug)" + +#: admin/devices/class_deviceManagement.inc:8 +#, fuzzy +msgid "Manage hotplug devices" +msgstr "dispositivos" + +#: admin/devices/class_deviceManagement.inc:246 +#: admin/applications/class_applicationManagement.inc:352 +#: admin/mimetypes/class_mimetypeManagement.inc:360 +#: addons/goto/class_gotomasses.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Permisos" + +#: admin/devices/class_deviceManagement.inc:263 +#: admin/devices/class_deviceManagement.inc:345 +#, fuzzy +msgid "device" +msgstr "Servicio" + +#: admin/devices/class_deviceManagement.inc:296 +#: admin/devices/class_deviceManagement.inc:352 +#: admin/devices/class_deviceManagement.inc:381 +#: admin/applications/class_applicationManagement.inc:401 +#: admin/applications/class_applicationManagement.inc:456 +#: admin/applications/class_applicationManagement.inc:487 +#: admin/mimetypes/class_mimetypeManagement.inc:412 +#: admin/mimetypes/class_mimetypeManagement.inc:466 +#: admin/mimetypes/class_mimetypeManagement.inc:496 +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#: personal/environment/class_environment.inc:583 +#, fuzzy +msgid "Permission error" +msgstr "Permisos" + +#: admin/applications/remove.tpl:6 admin/mimetypes/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Esta puede ser usada por varios grupos. Si está seguro de lo que quiere " +"hacer pulse dos veces, ya que no hay manera de que GOsa recupere " +"posteriormente la información." + +#: admin/applications/release_select.tpl:2 +#: admin/mimetypes/release_select.tpl:2 +msgid "Branches" +msgstr "" + +#: admin/applications/release_select.tpl:8 +#: admin/mimetypes/release_select.tpl:8 +msgid "Current release" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:53 +msgid "Remove options" +msgstr "Eliminar opciones" + +#: admin/applications/class_applicationParameters.inc:53 +#: admin/applications/class_applicationParameters.inc:55 +#, fuzzy +msgid "parameter" +msgstr "Parámetro" + +#: admin/applications/class_applicationParameters.inc:55 +msgid "Create options" +msgstr "Crear opciones" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Variable" +msgstr "Variable" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Default value" +msgstr "Valor por defecto" + +#: admin/applications/class_applicationParameters.inc:131 +msgid "Add option" +msgstr "Añadir opción" + +#: admin/applications/class_applicationParameters.inc:236 +msgid "Parameter" +msgstr "Parámetro" + +#: admin/applications/class_applicationParameters.inc:237 +msgid "Parameter configuration" +msgstr "Configuración del parámetro" + +#: admin/applications/class_applicationParameters.inc:245 +msgid "Application parameter settings" +msgstr "Configuración de los parámetros de aplicación" + +#: admin/applications/generic.tpl:7 admin/applications/generic.tpl:10 +#: admin/applications/class_divListApplication.inc:51 +#: admin/applications/class_applicationGeneric.inc:561 +msgid "Application name" +msgstr "Nombre de la aplicación" + +#: admin/applications/generic.tpl:15 +msgid "Display name" +msgstr "" + +#: admin/applications/generic.tpl:19 +#: admin/applications/class_applicationGeneric.inc:566 +msgid "Application name to be displayed (i.e. below icons)" +msgstr "" +"Nombre con el que se mostrara la aplicación(esto es debajo de los iconos)" + +#: admin/applications/generic.tpl:28 +msgid "Path and/or binary name of application" +msgstr "" + +#: admin/applications/generic.tpl:45 admin/mimetypes/generic.tpl:47 +msgid "Choose subtree to place application in" +msgstr "" + +#: admin/applications/generic.tpl:52 admin/mimetypes/generic.tpl:53 +#: admin/systems/goto/workstation.tpl:43 admin/systems/goto/printer.tpl:35 +#: admin/systems/goto/terminal.tpl:36 +msgid "Select a base" +msgstr "Seleccione una base" + +#: admin/applications/generic.tpl:66 +#: admin/applications/class_applicationGeneric.inc:611 +#: admin/mimetypes/generic.tpl:67 +#: admin/mimetypes/class_mimetypeGeneric.inc:730 +msgid "Icon" +msgstr "Icono" + +#: admin/applications/generic.tpl:82 admin/mimetypes/generic.tpl:84 +msgid "Update" +msgstr "" + +#: admin/applications/generic.tpl:82 +msgid "Reload picture from LDAP" +msgstr "" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture" +msgstr "Eliminar foto" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture from LDAP" +msgstr "" + +#: admin/applications/generic.tpl:96 +#: admin/systems/goto/class_gotoLpdEnabled.inc:156 +#: admin/systems/goto/gotoLpdEnable.tpl:79 +#: admin/systems/ppd/printerPPDDialog.tpl:28 +msgid "Options" +msgstr "Opciones" + +#: admin/applications/generic.tpl:103 +#: admin/applications/class_applicationGeneric.inc:614 +msgid "Only executable for members" +msgstr "Solo ejecutables para los miembros" + +#: admin/applications/generic.tpl:108 +#: admin/applications/class_applicationGeneric.inc:618 +msgid "Replace user configuration on startup" +msgstr "Reemplazar la configuración del usuario en el inicio" + +#: admin/applications/generic.tpl:114 +#: admin/applications/class_applicationGeneric.inc:615 +msgid "Place icon on members desktop" +msgstr "Colocar icono en los escritorios de los miembros " + +#: admin/applications/generic.tpl:119 +#: admin/applications/class_applicationGeneric.inc:617 +msgid "Place entry in members startmenu" +msgstr "Colocar entrado en los menús de inicio de los miembros" + +#: admin/applications/generic.tpl:124 +#: admin/applications/class_applicationGeneric.inc:616 +msgid "Place entry in members launch bar" +msgstr "Colocar entrada en los barra de inicio de los miembros" + +#: admin/applications/generic.tpl:134 +#: personal/environment/logonManagement.tpl:55 +msgid "Script" +msgstr "" + +#: admin/applications/generic.tpl:139 addons/goto/goto_import_file.tpl:84 +#: addons/goto/class_gotomasses.inc:375 +#: addons/goto/class_goto_import_file.inc:29 +#: addons/goto/class_goto_import_file.inc:89 +#: addons/goto/class_goto_import_file.inc:131 +#: personal/environment/logonManagement.tpl:65 +msgid "Import" +msgstr "" + +#: admin/applications/generic.tpl:144 +msgid "Download" +msgstr "" + +#: admin/applications/class_applicationManagement.inc:25 +#: personal/environment/class_environment.inc:10 +msgid "This does something" +msgstr "" + +#: admin/applications/class_divListApplication.inc:25 +msgid "List of Applications" +msgstr "Lista de aplicaciones" + +#: admin/applications/class_divListApplication.inc:26 +msgid "This table displays all applications in the selected tree." +msgstr "Esta tabla muestra todas las aplicaciones en el árbol seleccionado." + +#: admin/applications/class_divListApplication.inc:58 +#: personal/environment/hotplugDialog.tpl:43 +msgid "Display users matching" +msgstr "Mostrar usuarios que coincidan con" + +#: admin/applications/class_divListApplication.inc:199 +#: admin/mimetypes/class_divListMimeTypes.inc:198 +msgid "Freezed" +msgstr "" + +#: admin/applications/class_divListApplication.inc:242 +#, fuzzy +msgid "Number of listed applications" +msgstr "Eliminar aplicaciones seleccionadas" + +#: admin/applications/main.inc:48 admin/applications/main.inc:50 +msgid "Application management" +msgstr "Administración de aplicación" + +#: admin/applications/class_applicationGeneric.inc:95 +msgid "no example" +msgstr "sin ejemplo" + +#: admin/applications/class_applicationGeneric.inc:264 +#, fuzzy, php-format +msgid "Cannot remove application - it is still in use by these objects: %s" +msgstr "" +"No se puede eliminar el perfil Kiosk, está todavía en uso por el objeto '%s'." + +#: admin/applications/class_applicationGeneric.inc:370 +#, fuzzy +msgid "no read permission" +msgstr "Permisos" + +#: admin/applications/class_applicationGeneric.inc:375 +msgid "cannot resize image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:380 +msgid "cannot convert image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:384 +#, fuzzy, php-format +msgid "cannot save image to '%s'" +msgstr "No se puede grabar el archivo '%s'." + +#: admin/applications/class_applicationGeneric.inc:413 +#, fuzzy +msgid "Execute path" +msgstr "Ejecute" + +#: admin/applications/class_applicationGeneric.inc:598 +msgid "Application generic" +msgstr "Aplicación genérica" + +#: admin/applications/class_applicationGeneric.inc:612 +msgid "Script content" +msgstr "Contenido del script" + +#: admin/mimetypes/class_mimetypeManagement.inc:24 +#: admin/mimetypes/class_mimetypeGeneric.inc:721 +msgid "Mime types" +msgstr "" + +#: admin/mimetypes/class_mimetypeManagement.inc:25 +msgid "Manage mime types" +msgstr "" + +#: admin/mimetypes/class_mimetypeManagement.inc:378 +#: admin/mimetypes/class_mimetypeManagement.inc:459 +#: admin/mimetypes/generic.tpl:12 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:116 +#: admin/mimetypes/class_divListMimeTypes.inc:152 +#: admin/mimetypes/paste_generic.tpl:13 +msgid "Mime type" +msgstr "" + +#: admin/mimetypes/generic.tpl:16 admin/mimetypes/paste_generic.tpl:16 +msgid "Please enter a name for the mime type here" +msgstr "" + +#: admin/mimetypes/generic.tpl:22 +#: admin/mimetypes/class_mimetypeGeneric.inc:725 +msgid "Mime group" +msgstr "" + +#: admin/mimetypes/generic.tpl:26 +msgid "Categorize this mime type" +msgstr "" + +#: admin/mimetypes/generic.tpl:38 +msgid "Please specify a description" +msgstr "" + +#: admin/mimetypes/generic.tpl:69 admin/mimetypes/generic.tpl:72 +msgid "Mime icon" +msgstr "" + +#: admin/mimetypes/generic.tpl:85 +msgid "Update mime type icon" +msgstr "" + +#: admin/mimetypes/generic.tpl:99 +msgid "Left click" +msgstr "" + +#: admin/mimetypes/generic.tpl:104 +#: admin/mimetypes/class_mimetypeGeneric.inc:731 +msgid "File patterns" +msgstr "" + +#: admin/mimetypes/generic.tpl:110 +msgid "Please specify a new file pattern" +msgstr "" + +#: admin/mimetypes/generic.tpl:113 +msgid "Add a new file pattern" +msgstr "" + +#: admin/mimetypes/generic.tpl:129 admin/mimetypes/generic.tpl:189 +msgid "Enter an application name here" +msgstr "" + +#: admin/mimetypes/generic.tpl:132 admin/mimetypes/generic.tpl:193 +msgid "Add application" +msgstr "" + +#: admin/mimetypes/generic.tpl:143 +msgid "Embedding" +msgstr "" + +#: admin/mimetypes/generic.tpl:156 +msgid "Show file in embedded viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:163 +msgid "Show file in external viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:170 +msgid "Ask whether to save to local disk" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:27 +#: admin/mimetypes/class_divListMimeTypes.inc:28 +msgid "List of defined mime types" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:58 +msgid "Display mime types matching" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:243 +msgid "Number of listed mimetypes" +msgstr "" + +#: admin/mimetypes/paste_generic.tpl:24 +msgid "Please specify a description for this mime type here" +msgstr "" + +#: admin/mimetypes/main.inc:48 admin/mimetypes/main.inc:50 +msgid "Mimetype management" +msgstr "" + +#: admin/mimetypes/class_mimetypeGeneric.inc:535 +msgid "File pattern" +msgstr "" + +#: admin/mimetypes/class_mimetypeGeneric.inc:716 +msgid "Mime type generic" +msgstr "" + +#: admin/mimetypes/class_mimetypeGeneric.inc:729 +msgid "Left click action" +msgstr "" + +#: admin/mimetypes/class_mimetypeGeneric.inc:732 +msgid "Embedded applications" +msgstr "" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +msgid "Print Service" +msgstr "" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "enabled" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:27 +#: admin/systems/services/cups/class_goCupsServer.inc:48 +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/goto/info.tpl:124 +msgid "Print service" +msgstr "Servicio de impresión" + +#: admin/systems/services/cups/class_goCupsServer.inc:68 +msgid "Cups" +msgstr "Cups" + +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/services/shares/class_goShareServer.inc:390 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/cups/class_goCupsServer.inc:77 +#: admin/systems/services/syslog/class_goLogDBServer.inc:101 +msgid "Start" +msgstr "Inicio" + +#: admin/systems/services/cups/class_goCupsServer.inc:78 +#: admin/systems/services/syslog/class_goLogDBServer.inc:102 +msgid "Stop" +msgstr "Parada" + +#: admin/systems/services/cups/class_goCupsServer.inc:79 +#: admin/systems/services/syslog/class_goLogDBServer.inc:103 +msgid "Restart" +msgstr "Reiniciar" + +#: admin/systems/services/kiosk/class_goKioskService.inc:34 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:206 +#, fuzzy +msgid "Kiosk profile service" +msgstr "Perfil Kiosk" + +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: personal/environment/class_environment.inc:1784 +#: personal/environment/environment.tpl:124 +#: personal/environment/environment.tpl:160 +msgid "Kiosk profile" +msgstr "Perfil Kiosk" + +#: admin/systems/services/kiosk/class_goKioskService.inc:269 +msgid "Kiosk" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/kiosk/goKioskService.tpl:1 +msgid "Kiosk profile management" +msgstr "" + +#: admin/systems/services/kiosk/goKioskService.tpl:16 +#, fuzzy +msgid "Server path" +msgstr "Servidor" + +#: admin/systems/services/kiosk/goKioskService.tpl:23 +#: addons/goto/goto_import_file.tpl:24 +msgid "Browse" +msgstr "" + +#: admin/systems/services/ldap/goLdapServer.tpl:1 +#: admin/systems/services/ldap/class_goLdapServer.inc:30 +#: admin/systems/services/ldap/class_goLdapServer.inc:68 +msgid "LDAP service" +msgstr "Servicio LDAP" + +#: admin/systems/services/ldap/goLdapServer.tpl:2 +msgid "LDAP URI" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:35 +msgid "fill-in-your-servers-dns-name" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:128 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +msgid "Ldap" +msgstr "Ldap" + +#: admin/systems/services/ldap/class_goLdapServer.inc:137 +msgid "Ldap base" +msgstr "Base Ldap" + +#: admin/systems/services/ntp/goNtpServer.tpl:2 +msgid "Time server" +msgstr "" + +#: admin/systems/services/ntp/class_goNtpServer.inc:28 +#: admin/systems/services/ntp/class_goNtpServer.inc:74 +msgid "Time service (NTP)" +msgstr "Servicio Horario (NTP)" + +#: admin/systems/services/ntp/class_goNtpServer.inc:114 +msgid "Time service" +msgstr "Servicio Horario" + +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +msgid "Time service - NTP" +msgstr "Servicio Horario - NTP" + +#: admin/systems/services/ntp/class_goNtpServer.inc:123 +msgid "Ntp source" +msgstr "Servicio NTP externo" + +#: admin/systems/services/terminal/goTerminalServer.tpl:4 +#: admin/systems/services/terminal/class_goTerminalServer.inc:26 +#: admin/systems/services/terminal/class_goTerminalServer.inc:76 +#: admin/systems/services/terminal/class_goTerminalServer.inc:164 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/goto/class_terminalService.inc:679 +msgid "Terminal service" +msgstr "Servicio de terminal" + +#: admin/systems/services/terminal/goTerminalServer.tpl:8 +#: admin/systems/services/terminal/class_goTerminalServer.inc:173 +msgid "Temporary disable login" +msgstr "Desactivar temporalmente el inicio de sesión" + +#: admin/systems/services/terminal/goTerminalServer.tpl:13 +msgid "Supported session types" +msgstr "" + +#: admin/systems/services/shares/goShareServer.tpl:1 +#: admin/systems/goto/class_terminalStartup.inc:543 +#: admin/systems/goto/class_workstationStartup.inc:1021 +#: admin/systems/goto/terminalStartup.tpl:91 +#: admin/systems/goto/workstationStartup.tpl:209 +#: personal/environment/class_environment.inc:1782 +#: personal/environment/environment.tpl:212 +msgid "Shares" +msgstr "Recursos compartidos" + +#: admin/systems/services/shares/class_goShareServer.inc:31 +#: admin/systems/services/shares/class_goShareServer.inc:157 +#: admin/systems/services/shares/class_goShareServer.inc:389 +msgid "File service (Shares)" +msgstr "Servicio de Archivos (Compartidos)" + +#: admin/systems/services/shares/class_goShareServer.inc:233 +#, fuzzy +msgid "share" +msgstr "Recursos compartidos" + +#: admin/systems/services/shares/class_goShareServer.inc:390 +msgid "File service - Shares" +msgstr "Servidor de Archivos - Compartidos" + +#: admin/systems/services/shares/class_goShareServer.inc:399 +msgid "Apple mounts" +msgstr "Puntos de montaje Appletalk" + +#: admin/systems/services/shares/class_goShareServer.inc:402 +msgid "Charset" +msgstr "Juego de caracteres" + +#: admin/systems/services/shares/class_goShareServer.inc:403 +#: admin/systems/services/nfs/class_servNfs.inc:179 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Path" +msgstr "Ruta" + +#: admin/systems/services/shares/class_goShareServer.inc:404 +#: admin/systems/services/nfs/class_servNfs.inc:215 +#: admin/systems/services/nfs/servnfs.tpl:121 +msgid "Option" +msgstr "Opción" + +#: admin/systems/services/shares/class_goShareServer.inc:405 +#: admin/systems/services/nfs/class_servNfs.inc:211 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Volume" +msgstr "Volumen" + +#: admin/systems/services/nfs/class_servNfs.inc:184 +msgid "'Path / Volume' must be of format 'server:port'!" +msgstr "" + +#: admin/systems/services/nfs/class_servNfs.inc:188 +msgid "'Path / Volume' must contain at least one '/'!" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:1 +msgid "Edit share" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:2 +msgid "NFS setup" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:39 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:201 +#: addons/goto/events/class_EventTargetAddList.inc:238 +#: personal/environment/environment.tpl:135 +msgid "Server" +msgstr "Servidor" + +#: admin/systems/services/nfs/servnfs.tpl:69 +msgid "Auto-mount share on Apple systems" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:109 +msgid "Codepage" +msgstr "" + +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "Syslog Service" +msgstr "" + +#: admin/systems/services/syslog/class_goSyslogServer.inc:68 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +msgid "Logging service" +msgstr "Servicio de Registro de sistema" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:31 +#: admin/systems/services/syslog/class_goLogDBServer.inc:59 +#, fuzzy +msgid "Syslog service database" +msgstr "Servidor de registro de sistema activado" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:69 +#: admin/systems/goto/class_printGeneric.inc:908 +#: addons/goto/events/class_EventTargetAddUsersList.inc:171 +msgid "User" +msgstr "Usuario" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:72 +#: admin/systems/services/syslog/class_goLogDBServer.inc:105 +#: admin/systems/services/syslog/goLogDBServer.tpl:20 +msgid "Password" +msgstr "Contraseña" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:75 +#: admin/systems/services/syslog/class_goLogDBServer.inc:106 +#: admin/systems/services/syslog/goLogDBServer.tpl:4 +#, fuzzy +msgid "Database" +msgstr "Crear" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:92 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Logging database" +msgstr "Base de datos de Registro" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:104 +msgid "Admin" +msgstr "Administrador" + +#: admin/systems/services/syslog/goLogDBServer.tpl:1 +msgid "Logging database information" +msgstr "" + +#: admin/systems/services/syslog/goLogDBServer.tpl:12 +msgid "Logging DB user" +msgstr "" + +#: admin/systems/goto/workstation.tpl:1 admin/systems/goto/terminal.tpl:1 +msgid "Properties" +msgstr "Propiedades" + +#: admin/systems/goto/workstation.tpl:8 +msgid "Workstation template" +msgstr "" + +#: admin/systems/goto/workstation.tpl:10 +#: admin/systems/goto/class_workstationGeneric.inc:707 +msgid "Workstation name" +msgstr "Nombre de la estación de trabajo" + +#: admin/systems/goto/workstation.tpl:27 +#: admin/systems/goto/class_printGeneric.inc:932 +#: admin/systems/goto/class_workstationGeneric.inc:709 +msgid "Location" +msgstr "Localización" + +#: admin/systems/goto/workstation.tpl:38 admin/systems/goto/terminal.tpl:31 +msgid "Choose subtree to place group in" +msgstr "Elija el subárbol donde colocar el grupo" + +#: admin/systems/goto/workstation.tpl:87 admin/systems/goto/workstation.tpl:90 +#: admin/systems/goto/terminal.tpl:109 admin/systems/goto/terminal.tpl:112 +msgid "Inherit time server attributes" +msgstr "" + +#: admin/systems/goto/workstation.tpl:160 +#, fuzzy +msgid "Inherit all values from group" +msgstr "Lista de grupos" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:3 +#: personal/environment/selectPrinterDialog.tpl:5 +#: personal/environment/selectPrinterDialog.tpl:10 +msgid "Select printer to add" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:8 +msgid "Select entries to add" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:22 +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:18 +#: personal/environment/selectPrinterDialog.tpl:24 +#: personal/environment/hotplugDialog.tpl:24 +msgid "Filters" +msgstr "Filtros" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Select to search within subtrees" +msgstr "Seleccione para buscar dentro de los subárboles" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Search in subtrees" +msgstr "Buscar en subárboles" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:38 +msgid "Display members of department" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:41 +#: personal/environment/selectPrinterDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Escoja el departamento base de la búsqueda" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:50 +msgid "Display members matching" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:55 +msgid "Regular expression for matching member names" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:49 +msgid "USB" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:50 +msgid "Parallel port" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:53 +#, fuzzy +msgid "Software" +msgstr "Actualización instantánea" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:54 +#, fuzzy +msgid "Hardware" +msgstr "Buscar hardware" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:56 +#, fuzzy +msgid "Even" +msgstr "Entorno" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:57 +#, fuzzy +msgid "Odd" +msgstr "Añadir" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:60 +#: admin/systems/goto/class_gotoLpdEnabled.inc:61 +#: admin/systems/goto/class_gotoLpdEnabled.inc:62 +#: admin/systems/goto/class_gotoLpdEnabled.inc:63 +#: admin/systems/goto/class_gotoLpdEnabled.inc:64 +#: admin/systems/goto/class_gotoLpdEnabled.inc:65 +#: admin/systems/goto/class_gotoLpdEnabled.inc:66 +#: admin/systems/goto/class_gotoLpdEnabled.inc:67 +#, fuzzy +msgid "bit/s" +msgstr "bit" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:153 +#: admin/systems/goto/terminalService.tpl:58 +#: admin/systems/goto/workstationService.tpl:66 +#: admin/systems/goto/gotoLpdEnable.tpl:71 +msgid "Port" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:1 +msgid "Integrating unknown devices" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:3 +msgid "" +"The current device has been detected by the ARP monitor used by GOsa. You " +"can integrate this device into your running DHCP/DNS infrastructure by " +"submitting this form. The device entry will disappear from the list of the " +"systems and move to the DNS/DHCP configuration." +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:9 +#, fuzzy +msgid "DNS name" +msgstr "Nombre" + +#: admin/systems/goto/class_printGeneric.inc:106 +#: admin/systems/goto/class_printGeneric.inc:968 +#, fuzzy +msgid "Internal error" +msgstr "Insertar separador" + +#: admin/systems/goto/class_printGeneric.inc:106 +#, fuzzy, php-format +msgid "" +"Cannot determine a valid department for this object. Setting base to '%s'!" +msgstr "" +"No puedo extraer una base válida parala dn del objeto, sera puesta la base a " +"'%s'." + +#: admin/systems/goto/class_printGeneric.inc:262 +#: admin/systems/goto/class_printGeneric.inc:270 +#: admin/systems/goto/class_printGeneric.inc:275 +#: admin/systems/goto/class_printGeneric.inc:324 +#: admin/systems/goto/class_printGeneric.inc:340 +#: admin/systems/goto/class_printGeneric.inc:343 +msgid "Add printer extension" +msgstr "Añadir extensión de impresora" + +#: admin/systems/goto/class_printGeneric.inc:263 +#, fuzzy +msgid "" +"Could not initialize printer tab, parameter parent was missing while " +"construction." +msgstr "" +"No se puede activar la pestaña de impresora, el origen de los parametros " +"desapareció cuando se estaba construyendo." + +#: admin/systems/goto/class_printGeneric.inc:271 +msgid "This is a workstation template, printer tab is disabled." +msgstr "" +"Esto es una plantilla de estación de trabajo, la pestaña de impresión está " +"desactivada." + +#: admin/systems/goto/class_printGeneric.inc:276 +msgid "This is a terminal template, printer tab is disabled." +msgstr "" +"Esto es una plantilla de termina, la pestaña de impresión está desactivada." + +#: admin/systems/goto/class_printGeneric.inc:317 +#: admin/systems/goto/class_printGeneric.inc:325 +#: admin/systems/goto/class_printGeneric.inc:333 +#: admin/systems/goto/class_printGeneric.inc:336 +#: admin/systems/goto/class_printGeneric.inc:341 +#: admin/systems/goto/class_printGeneric.inc:344 +#, fuzzy +msgid "printer" +msgstr "Impresora" + +#: admin/systems/goto/class_printGeneric.inc:325 +#, fuzzy +msgid "" +"You can't enable it while 'cn' is not present in entry. Possibly you are " +"currently creating a new terminal template." +msgstr "" +"Este objeto tiene la extensión de impresora desactivada. No puede activarla " +"mientras un 'cn' no este presente en la entrada. Posiblemente esto ocurra " +"porque actualmente está creando una nueva plantilla de terminal" + +#: admin/systems/goto/class_printGeneric.inc:332 +#: admin/systems/goto/class_printGeneric.inc:335 +msgid "Remove printer extension" +msgstr "Eliminar extensión de impresora" + +#: admin/systems/goto/class_printGeneric.inc:513 +#, php-format +msgid "Your currently selected PPD file '%s' doesn't exist." +msgstr "El archivo PPD seleccionado '%s' no existe." + +#: admin/systems/goto/class_printGeneric.inc:518 +#, fuzzy +msgid "Not defined" +msgstr "sin definirse" + +#: admin/systems/goto/class_printGeneric.inc:521 +#: admin/systems/ppd/class_printerPPDDialog.inc:97 +msgid "Can't get ppd informations." +msgstr "No se puede acceder a la información PPD" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_printGeneric.inc:536 +#, fuzzy, php-format +msgid "This printer belongs to %s. You can't rename this printer." +msgstr "" +"Esta impresora pertenece al terminal '%s'. No puede renombrar esta impresora." + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_terminalStartup.inc:180 +#: admin/systems/goto/class_terminalInfo.inc:68 +#: admin/systems/goto/class_terminalGeneric.inc:230 +#, fuzzy +msgid "terminal" +msgstr "Terminal" + +#: admin/systems/goto/class_printGeneric.inc:536 +#: admin/systems/goto/class_workstationGeneric.inc:226 +#: admin/systems/goto/class_workstationStartup.inc:285 +#, fuzzy +msgid "workstation" +msgstr "Estación de trabajo" + +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +msgid "Object is no printer!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:680 +#: admin/systems/goto/printer.tpl:54 +msgid "Printer URL" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:903 +#: admin/systems/goto/class_printGeneric.inc:905 +#: addons/goto/events/class_EventTargetAddUsersList.inc:173 +msgid "Group" +msgstr "Grupo" + +#: admin/systems/goto/class_printGeneric.inc:921 +msgid "Print generic" +msgstr "Impresora genérica" + +#: admin/systems/goto/class_printGeneric.inc:926 +#: admin/systems/goto/terminalService.tpl:245 +#: personal/environment/environment.tpl:338 +#: personal/environment/environment.tpl:374 +msgid "Printer" +msgstr "Impresora" + +#: admin/systems/goto/class_printGeneric.inc:933 +msgid "LabeledURL" +msgstr "LabeledURL" + +#: admin/systems/goto/class_printGeneric.inc:934 +msgid "Printer PPD" +msgstr "Impresora PPD" + +#: admin/systems/goto/class_printGeneric.inc:935 +#: admin/systems/goto/printer.tpl:82 +msgid "Permissions" +msgstr "Permisos" + +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#, fuzzy +msgid "printer user" +msgstr "Impresora" + +#: admin/systems/goto/class_printGeneric.inc:968 +#, php-format +msgid "Illegal member type '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:1008 +#, fuzzy, php-format +msgid "'%s' is already used!" +msgstr "El nombre introducido ya esta siendo usado" + +#: admin/systems/goto/class_printGeneric.inc:1019 +#, fuzzy, php-format +msgid "'%s' does not exist!" +msgstr "El valor especificado como 'UID' no es valido." + +#: admin/systems/goto/class_selectUserToPrinterDialog.inc:147 +msgid "Please select a printer or press cancel." +msgstr "Por favor seleccione una impresora o presione cancelar." + +#: admin/systems/goto/class_terminalStartup.inc:135 +#, fuzzy, php-format +msgid "" +"Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to " +"exist." +msgstr "" +"El comando '%s', especificado como método 'KERNELS' para la extensión '%s' " +"no existe." + +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#, fuzzy +msgid "Mount point" +msgstr "Puerto del ratón" + +#: admin/systems/goto/class_terminalStartup.inc:372 +#: admin/systems/goto/class_workstationStartup.inc:750 +#, fuzzy +msgid "Fatal error" +msgstr "Insertar separador" + +#: admin/systems/goto/class_terminalStartup.inc:533 +#: admin/systems/goto/class_workstationStartup.inc:1007 +msgid "Startup" +msgstr "Inicio" + +#: admin/systems/goto/class_terminalStartup.inc:534 +msgid "Terminal startup" +msgstr "Inicio de terminal" + +#: admin/systems/goto/class_terminalStartup.inc:542 +#: admin/systems/goto/class_workstationStartup.inc:1016 +msgid "Ldap server" +msgstr "Servidor LDAP" + +#: admin/systems/goto/class_terminalStartup.inc:544 +#: admin/systems/goto/class_workstationStartup.inc:1020 +msgid "Kernel modules" +msgstr "Módulos del Kernel" + +#: admin/systems/goto/class_terminalStartup.inc:545 +#: admin/systems/goto/class_workstationStartup.inc:1017 +#: admin/systems/goto/terminalStartup.tpl:40 +#: admin/systems/goto/workstationStartup.tpl:9 +msgid "Boot kernel" +msgstr "Kernel de inicio" + +#: admin/systems/goto/class_terminalStartup.inc:546 +#: admin/systems/goto/class_workstationStartup.inc:1018 +msgid "Kernel parameter" +msgstr "Parametros del Kernel" + +#: admin/systems/goto/class_terminalInfo.inc:50 +#: admin/systems/goto/class_terminalInfo.inc:204 +msgid "present" +msgstr "presente" + +#: admin/systems/goto/class_terminalInfo.inc:77 +#: admin/systems/goto/class_terminalService.inc:121 +#: admin/systems/goto/class_workstationStartup.inc:1295 +#: admin/systems/goto/class_workstationStartup.inc:1297 +#: admin/systems/goto/class_workstationService.inc:78 +#: admin/systems/ppd/class_printerPPDDialog.inc:54 +#: admin/systems/ppd/class_printerPPDDialog.inc:121 +#: personal/environment/class_environment.inc:234 +#, fuzzy +msgid "Configuration error" +msgstr "Se puede escribir en la configuración" + +#: admin/systems/goto/class_terminalInfo.inc:83 +#: admin/systems/goto/class_terminalInfo.inc:179 +msgid "unknown status" +msgstr "estado desconocido" + +#: admin/systems/goto/class_terminalInfo.inc:92 +msgid "This is a virtual terminal which has no properties to show here." +msgstr "" +"Este es un terminal virtual que no tiene propiedades que puedan ser mostradas" + +#: admin/systems/goto/class_terminalInfo.inc:106 +msgid "online" +msgstr "en linea" + +#: admin/systems/goto/class_terminalInfo.inc:168 +msgid "running" +msgstr "funcionando" + +#: admin/systems/goto/class_terminalInfo.inc:171 +msgid "not running" +msgstr "parado" + +#: admin/systems/goto/class_terminalInfo.inc:174 +msgid "not defined" +msgstr "sin definirse" + +#: admin/systems/goto/class_terminalInfo.inc:196 +msgid "offline" +msgstr "fuera de linea" + +#: admin/systems/goto/class_terminalInfo.inc:251 +#, fuzzy +msgid "System info" +msgstr "Inventario de sistemas" + +#: admin/systems/goto/class_terminalInfo.inc:252 +#, fuzzy +msgid "System informations" +msgstr "No se puede acceder a la información PPD" + +#: admin/systems/goto/class_terminalService.inc:128 +#: admin/systems/goto/class_terminalService.inc:129 +#: admin/systems/goto/class_terminalService.inc:130 +#: admin/systems/goto/class_terminalService.inc:131 +#: admin/systems/goto/class_workstationService.inc:88 +#: admin/systems/goto/class_workstationService.inc:89 +#: admin/systems/goto/class_workstationService.inc:90 +#: admin/systems/goto/class_workstationService.inc:91 +msgid "bit" +msgstr "bit" + +#: admin/systems/goto/class_terminalService.inc:177 +msgid "XDMCP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:178 +msgid "LDM" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:179 +msgid "Shell" +msgstr "Shell" + +#: admin/systems/goto/class_terminalService.inc:180 +#, fuzzy +msgid "Telnet" +msgstr "Eliminar" + +#: admin/systems/goto/class_terminalService.inc:181 +msgid "Windows RDP" +msgstr "Windows RDP" + +#: admin/systems/goto/class_terminalService.inc:204 +#: admin/systems/goto/class_workstationService.inc:144 +msgid "automatic" +msgstr "automático" + +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_workstationService.inc:194 +msgid "Bit" +msgstr "Bit" + +#: admin/systems/goto/class_terminalService.inc:314 +msgid "This 'dn' has no terminal features." +msgstr "Esta 'dn' no tiene características de terminal." + +#: admin/systems/goto/class_terminalService.inc:372 +msgid "Unsupported" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:414 +#: admin/systems/goto/class_workstationService.inc:309 +msgid "Choose the phone located at the current terminal" +msgstr "Elija el teléfono localizado en el terminal actual" + +#: admin/systems/goto/class_terminalService.inc:495 +#: admin/systems/goto/class_terminalService.inc:500 +msgid "VSync range" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:508 +#: admin/systems/goto/class_terminalService.inc:513 +msgid "HSync range" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:539 +msgid "" +"Remote desktop settings contains servers that do not support the selected " +"connection method." +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:603 +#: admin/systems/goto/workstationService.tpl:157 +#: admin/systems/goto/class_workstationService.inc:85 +msgid "unknown" +msgstr "desconocido" + +#: admin/systems/goto/class_terminalService.inc:678 +#: admin/systems/goto/class_workstationService.inc:484 +msgid "Service" +msgstr "Servicio" + +#: admin/systems/goto/class_terminalService.inc:688 +#: admin/systems/goto/class_workstationService.inc:493 +msgid "Monitor" +msgstr "Monitor" + +#: admin/systems/goto/class_terminalService.inc:689 +msgid "Method" +msgstr "Método" + +#: admin/systems/goto/class_terminalService.inc:690 +#: admin/systems/goto/terminalService.tpl:173 +msgid "Remote desktop" +msgstr "Escritorio remoto" + +#: admin/systems/goto/class_terminalService.inc:691 +#: admin/systems/goto/class_workstationService.inc:494 +msgid "Gfx driver" +msgstr "Dispositivo Gfx" + +#: admin/systems/goto/class_terminalService.inc:692 +#: admin/systems/goto/class_workstationService.inc:495 +msgid "Gfx resolution" +msgstr "Resolución Gfx" + +#: admin/systems/goto/class_terminalService.inc:693 +#: admin/systems/goto/class_workstationService.inc:496 +msgid "Gfx color depth" +msgstr "Profundidad del Color Gfx" + +#: admin/systems/goto/class_terminalService.inc:694 +#: admin/systems/goto/terminalService.tpl:150 +#: admin/systems/goto/workstationService.tpl:170 +#: admin/systems/goto/class_workstationService.inc:393 +#: admin/systems/goto/class_workstationService.inc:395 +#: admin/systems/goto/class_workstationService.inc:400 +#: admin/systems/goto/class_workstationService.inc:497 +msgid "HSync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:695 +#: admin/systems/goto/terminalService.tpl:158 +#: admin/systems/goto/workstationService.tpl:181 +#: admin/systems/goto/class_workstationService.inc:376 +#: admin/systems/goto/class_workstationService.inc:378 +#: admin/systems/goto/class_workstationService.inc:383 +#: admin/systems/goto/class_workstationService.inc:498 +msgid "VSync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:696 +msgid "Auto-Sync" +msgstr "Auto-Sync" + +#: admin/systems/goto/class_terminalService.inc:697 +#: admin/systems/goto/class_workstationService.inc:500 +msgid "Scanner enabled" +msgstr "Escáner activado" + +#: admin/systems/goto/class_terminalService.inc:698 +#: admin/systems/goto/class_terminalService.inc:704 +#, fuzzy +msgid "Printer enabled" +msgstr "Servicio de impresión activo" + +#: admin/systems/goto/class_terminalService.inc:699 +#: admin/systems/goto/class_workstationService.inc:501 +msgid "Keyboard model" +msgstr "Modelo de teclado" + +#: admin/systems/goto/class_terminalService.inc:700 +#: admin/systems/goto/class_workstationService.inc:502 +msgid "Keyboard layout" +msgstr "Localización del teclado" + +#: admin/systems/goto/class_terminalService.inc:701 +#: admin/systems/goto/class_workstationService.inc:503 +msgid "Keyboard variant" +msgstr "Variante de teclado" + +#: admin/systems/goto/class_terminalService.inc:702 +#: admin/systems/goto/class_workstationService.inc:504 +msgid "Mouse type" +msgstr "Tipo de ratón" + +#: admin/systems/goto/class_terminalService.inc:703 +#: admin/systems/goto/class_workstationService.inc:505 +msgid "Mouse port" +msgstr "Puerto del ratón" + +#: admin/systems/goto/class_terminalService.inc:705 +#: admin/systems/goto/terminalService.tpl:76 +#: admin/systems/goto/workstationService.tpl:86 +#: admin/systems/goto/class_workstationService.inc:506 +msgid "Telephone hardware" +msgstr "Teléfono hardware" + +#: admin/systems/goto/info.tpl:6 +msgid "System information" +msgstr "" + +#: admin/systems/goto/info.tpl:12 +msgid "CPU" +msgstr "" + +#: admin/systems/goto/info.tpl:15 +msgid "Memory" +msgstr "" + +#: admin/systems/goto/info.tpl:18 +msgid "Boot MAC" +msgstr "" + +#: admin/systems/goto/info.tpl:21 +msgid "USB support" +msgstr "" + +#: admin/systems/goto/info.tpl:24 admin/systems/goto/info.tpl:92 +msgid "System status" +msgstr "" + +#: admin/systems/goto/info.tpl:28 +msgid "Inventory number" +msgstr "" + +#: admin/systems/goto/info.tpl:32 +msgid "Last login" +msgstr "" + +#: admin/systems/goto/info.tpl:43 +msgid "Network devices" +msgstr "" + +#: admin/systems/goto/info.tpl:52 +msgid "IDE devices" +msgstr "" + +#: admin/systems/goto/info.tpl:61 +msgid "SCSI devices" +msgstr "" + +#: admin/systems/goto/info.tpl:69 +msgid "Floppy device" +msgstr "" + +#: admin/systems/goto/info.tpl:73 +msgid "CDROM device" +msgstr "" + +#: admin/systems/goto/info.tpl:78 admin/systems/goto/terminalService.tpl:95 +#: admin/systems/goto/workstationService.tpl:107 +msgid "Graphic device" +msgstr "" + +#: admin/systems/goto/info.tpl:82 +msgid "Audio device" +msgstr "" + +#: admin/systems/goto/info.tpl:98 +msgid "Up since" +msgstr "" + +#: admin/systems/goto/info.tpl:101 +msgid "CPU load" +msgstr "" + +#: admin/systems/goto/info.tpl:104 +msgid "Memory usage" +msgstr "" + +#: admin/systems/goto/info.tpl:107 +msgid "Swap usage" +msgstr "" + +#: admin/systems/goto/info.tpl:121 +msgid "SSH service" +msgstr "" + +#: admin/systems/goto/info.tpl:127 +msgid "Scan service" +msgstr "" + +#: admin/systems/goto/info.tpl:130 +msgid "Sound service" +msgstr "" + +#: admin/systems/goto/info.tpl:133 +msgid "GUI" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:299 +#: admin/systems/goto/class_workstationGeneric.inc:309 +#: addons/goto/events/class_DaemonEvent_update.inc:29 +#: addons/goto/events/class_DaemonEvent_update.inc:30 +#, fuzzy +msgid "Software update" +msgstr "Actualización instantánea" + +#: admin/systems/goto/class_workstationGeneric.inc:303 +#: admin/systems/goto/class_workstationGeneric.inc:311 +#: addons/goto/events/class_DaemonEvent_localboot.inc:28 +#: addons/goto/events/class_DaemonEvent_localboot.inc:29 +msgid "Force localboot" +msgstr "Forzar inicio local" + +#: admin/systems/goto/class_workstationGeneric.inc:307 +#: admin/systems/goto/class_terminalGeneric.inc:271 +#: addons/goto/events/class_DaemonEvent_wakeup.inc:29 +msgid "Wake up" +msgstr "Despertar" + +#: admin/systems/goto/class_workstationGeneric.inc:500 +msgid "A valid LDAP server assignement is missing!" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:510 +#, fuzzy +msgid "Software deployment" +msgstr "Inicio del Sistema" + +#: admin/systems/goto/class_workstationGeneric.inc:511 +msgid "This host is currently installing. If you want to save it, press 'OK'." +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:699 +msgid "Workstation generic" +msgstr "Estación de trabajo genérica" + +#: admin/systems/goto/class_workstationGeneric.inc:704 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:203 +#: addons/goto/events/class_EventTargetAddList.inc:249 +msgid "Workstation" +msgstr "Estación de trabajo" + +#: admin/systems/goto/class_workstationGeneric.inc:711 +msgid "Goto mode" +msgstr "Pasar al modo" + +#: admin/systems/goto/class_workstationGeneric.inc:714 +#: admin/systems/goto/class_terminalGeneric.inc:676 +msgid "Root password" +msgstr "Contraseña de root" + +#: admin/systems/goto/class_workstationGeneric.inc:715 +#, fuzzy +msgid "Create FAI CD" +msgstr "Crear" + +#: admin/systems/goto/gencd_frame.tpl:2 +msgid "Your browser does not supprt iframes." +msgstr "" + +#: admin/systems/goto/terminalService.tpl:4 +#: admin/systems/goto/workstationService.tpl:4 +msgid "Keyboard" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:7 +#: admin/systems/goto/workstationService.tpl:7 +#: admin/systems/ppd/printerPPDDialog.tpl:10 +msgid "Model" +msgstr "Modelo" + +#: admin/systems/goto/terminalService.tpl:10 +#: admin/systems/goto/workstationService.tpl:11 +msgid "Choose keyboard model" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:17 +#: admin/systems/goto/workstationService.tpl:19 +msgid "Layout" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:20 +#: admin/systems/goto/workstationService.tpl:23 +msgid "Choose keyboard layout" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:27 +#: admin/systems/goto/workstationService.tpl:31 +msgid "Variant" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:30 +#: admin/systems/goto/workstationService.tpl:35 +msgid "Choose keyboard variant" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:45 +#: admin/systems/goto/workstationService.tpl:51 +msgid "Mouse" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:51 +#: admin/systems/goto/workstationService.tpl:58 +msgid "Choose mouse type" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:61 +#: admin/systems/goto/workstationService.tpl:70 +msgid "Choose mouse port" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:79 +#: admin/systems/goto/workstationService.tpl:89 +msgid "Telephone" +msgstr "Teléfono" + +#: admin/systems/goto/terminalService.tpl:98 +#: admin/systems/goto/workstationService.tpl:110 +#: admin/systems/goto/printer.tpl:66 +msgid "Driver" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:101 +#: admin/systems/goto/workstationService.tpl:114 +msgid "Choose graphic driver that is needed by the installed graphic board" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:108 +#: admin/systems/goto/workstationService.tpl:122 +#: personal/environment/class_environment.inc:1786 +#: personal/environment/environment.tpl:183 +msgid "Resolution" +msgstr "Resolución" + +#: admin/systems/goto/terminalService.tpl:111 +#: admin/systems/goto/workstationService.tpl:126 +msgid "Choose screen resolution used in graphic mode" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:118 +#: admin/systems/goto/workstationService.tpl:134 +msgid "Color depth" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:121 +#: admin/systems/goto/workstationService.tpl:138 +msgid "Choose colordepth used in graphic mode" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:135 +#: admin/systems/goto/workstationService.tpl:153 +msgid "Display device" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:147 +#: admin/systems/goto/workstationService.tpl:167 +msgid "Use DDC for automatic detection" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:154 +#: admin/systems/goto/workstationService.tpl:175 +msgid "Horizontal refresh frequency for installed monitor" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:162 +#: admin/systems/goto/workstationService.tpl:186 +msgid "Vertical refresh frequency for installed monitor" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:177 +msgid "Connect method" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:180 +msgid "Choose method to connect to terminal server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:184 +#: admin/systems/goto/terminalStartup.tpl:14 +#: admin/systems/goto/workstationStartup.tpl:36 +#: addons/goto/class_gotomasses.inc:400 +msgid "Reload" +msgstr "Recargar" + +#: admin/systems/goto/terminalService.tpl:191 +msgid "Terminal server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:202 +msgid "Select specific terminal server to use" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:208 +msgid "Add selected server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:212 +#, fuzzy +msgid "Remove selected server" +msgstr "Servidor Raíz" + +#: admin/systems/goto/terminalService.tpl:233 +#: admin/systems/goto/workstationService.tpl:201 +msgid "Scan device" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:235 +#: admin/systems/goto/workstationService.tpl:204 +msgid "Select to start SANE scan service on terminal" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:237 +#: admin/systems/goto/workstationService.tpl:207 +msgid "Provide scan services" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:12 +#: admin/systems/goto/gotoLpdEnable.tpl:48 +#, fuzzy +msgid "Enable printer settings" +msgstr "Parámetros genéricos del usuario" + +#: admin/systems/goto/gotoLpdEnable.tpl:87 +msgid "Write only" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:100 +#, fuzzy +msgid "Bit rate" +msgstr "Migrar" + +#: admin/systems/goto/gotoLpdEnable.tpl:110 +msgid "Flow control" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:120 +#, fuzzy +msgid "Parity" +msgstr "Sumario" + +#: admin/systems/goto/gotoLpdEnable.tpl:130 +#, fuzzy +msgid "Bits" +msgstr "Bit" + +#: admin/systems/goto/class_workstationStartup.inc:234 +#, fuzzy, php-format +msgid "FAI mirror '%s' is not available - setting to mirror 'auto'!" +msgstr "" +"El perfil Kiosk seleccionado '%s' no es accesible, configurando el perfil " +"actual a 'ninguno'." + +#: admin/systems/goto/class_workstationStartup.inc:247 +#, fuzzy, php-format +msgid "" +"FAI release '%s' is not available on mirror '%s' - setting to release '%s'!" +msgstr "" +"El servidor de perfiles seleccionado '%s' no es accesible. Configurando el " +"servidor de perfiles a '%s'." + +#: admin/systems/goto/class_workstationStartup.inc:266 +msgid "Please select a 'FAI server' or remove the 'FAI classes'." +msgstr "Por favor selecciones un 'servidor FAI' o elimine las 'clases FAI'." + +#: admin/systems/goto/class_workstationStartup.inc:324 +#, fuzzy +msgid "" +"There is already a profile containing a partition table in your " +"configuration!" +msgstr "" +"Ya existe un usuario con este perfil en su selección que tiene " +"configuraciones de tabla de particiones." + +#: admin/systems/goto/class_workstationStartup.inc:629 +msgid "Not available in current setup" +msgstr "No esta disponible en la configuración actual" + +#: admin/systems/goto/class_workstationStartup.inc:1008 +msgid "System startup" +msgstr "Inicio del Sistema" + +#: admin/systems/goto/class_workstationStartup.inc:1023 +msgid "FAI classes" +msgstr "Clases FAI" + +#: admin/systems/goto/class_workstationStartup.inc:1024 +msgid "Debian mirror" +msgstr "Servidor espejo Debian" + +#: admin/systems/goto/class_workstationStartup.inc:1025 +msgid "Debian release" +msgstr "Versión de Debian" + +#: admin/systems/goto/class_workstationStartup.inc:1027 +msgid "FAI status flag" +msgstr "Marca de estado de FAI" + +#: admin/systems/goto/class_workstationStartup.inc:1297 +msgid "'repositoryBranchHook' returned no result!" +msgstr "" + +#: admin/systems/goto/gencd.tpl:2 +msgid "CD-Install-Image generation" +msgstr "" + +#: admin/systems/goto/gencd.tpl:5 +msgid "" +"This option enables you to generate FAI install CD images for the selected " +"workstation. The procedure may take about 10 minutes to complete, so please " +"be patient after pressing the 'Create ISO-Image' button." +msgstr "" + +#: admin/systems/goto/gencd.tpl:9 +msgid "Create ISO-Image" +msgstr "" + +#: admin/systems/goto/class_workstationService.inc:485 +msgid "Workstation service" +msgstr "Servicio de la estación de trabajo" + +#: admin/systems/goto/class_workstationService.inc:499 +msgid "Use DDC" +msgstr "Usar DDC" + +#: admin/systems/goto/terminalStartup.tpl:1 +#: admin/systems/goto/workstationStartup.tpl:4 +msgid "Boot parameters" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:7 +#: admin/systems/goto/workstationStartup.tpl:29 +msgid "LDAP server" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:12 +#: admin/systems/goto/workstationStartup.tpl:34 +#, fuzzy +msgid "inherit from group" +msgstr "Lista de grupos" + +#: admin/systems/goto/terminalStartup.tpl:51 +#: admin/systems/goto/workstationStartup.tpl:20 +msgid "Custom options" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:55 +#: admin/systems/goto/workstationStartup.tpl:24 +msgid "" +"Enter any parameters that should be passed to the kernel as append line " +"during bootup" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:70 +#: admin/systems/goto/workstationStartup.tpl:188 +msgid "Kernel modules (format: name parameters)" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:73 +#: admin/systems/goto/workstationStartup.tpl:191 +msgid "Add additional modules to load on startup" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:227 +msgid "Mountpoint" +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:3 +msgid "" +"This system has no system type configured. Please choose a system type for " +"this object and an optional inheritance group. Press the 'continue' button " +"to proceed." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:10 +msgid "" +"Please select a system type and an optional bundle of predefined settings to " +"be inherited." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:12 +msgid "" +"Please select a system type and a bundle of predefined settings to be " +"inherited." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:23 +#: admin/systems/goto/SelectDeviceType.tpl:24 +msgid "System type" +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:36 +msgid "Choose an object group as template" +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:37 +#: addons/goto/class_target_list.inc:205 addons/goto/goto_import_file.tpl:40 +#: addons/goto/events/class_EventTargetAddList.inc:259 +msgid "Object group" +msgstr "Grupo de objetos" + +#: admin/systems/goto/SelectDeviceType.tpl:39 +#: addons/goto/class_gotoLogView.inc:87 +msgid "none" +msgstr "ninguno" + +#: admin/systems/goto/SelectDeviceType.tpl:51 +msgid "Continue" +msgstr "Continuar" + +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: admin/systems/goto/class_terminalGeneric.inc:656 +#: admin/systems/goto/class_terminalGeneric.inc:662 +msgid "Terminal" +msgstr "Terminal" + +#: admin/systems/goto/class_SelectDeviceType.inc:41 +#: admin/systems/goto/chooser.tpl:10 +msgid "Windows workstation" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:64 +msgid "" +"FAI Object assignment disabled. You can't use this feature until FAI is " +"activated." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:66 +msgid "GOsa support daemon not configured" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:67 +msgid "FAI settings cannot be modified" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:70 +msgid "Check if the GOsa support daemon (gosa-si) is running." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:71 +#, fuzzy +msgid "retry" +msgstr "Editar entrada" + +#: admin/systems/goto/workstationStartup.tpl:79 +#: admin/systems/goto/workstationStartup.tpl:119 +msgid "FAI server" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:158 +msgid "Assigned FAI classes" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:142 +msgid "set" +msgstr "" + +#: admin/systems/goto/class_terminalGeneric.inc:657 +msgid "Terminal generic" +msgstr "Terminal genérico" + +#: admin/systems/goto/class_terminalGeneric.inc:670 +msgid "Syslog server enabled" +msgstr "Servidor de registro de sistema activado" + +#: admin/systems/goto/class_terminalGeneric.inc:675 +msgid "Ntp server settings" +msgstr "Parámetros del servidor NTP" + +#: admin/systems/goto/printer.tpl:5 +msgid "General" +msgstr "" + +#: admin/systems/goto/printer.tpl:8 +msgid "Printer name" +msgstr "" + +#: admin/systems/goto/printer.tpl:30 +msgid "Choose subtree to place user in" +msgstr "Elija el subárbol donde colocar al usuario" + +#: admin/systems/goto/printer.tpl:43 +msgid "Details" +msgstr "" + +#: admin/systems/goto/printer.tpl:46 +msgid "Printer location" +msgstr "" + +#: admin/systems/goto/printer.tpl:89 +msgid "Users which are allowed to use this printer" +msgstr "" + +#: admin/systems/goto/printer.tpl:91 +msgid "Users" +msgstr "Usuarios" + +#: admin/systems/goto/printer.tpl:96 admin/systems/goto/printer.tpl:120 +msgid "Add user" +msgstr "" + +#: admin/systems/goto/printer.tpl:99 admin/systems/goto/printer.tpl:123 +msgid "Add group" +msgstr "" + +#: admin/systems/goto/printer.tpl:113 +msgid "Users which are allowed to administrate this printer" +msgstr "" + +#: admin/systems/goto/printer.tpl:115 +msgid "Admins" +msgstr "" + +#: admin/systems/goto/chooser.tpl:1 +msgid "Choose the kind of system component you want to create" +msgstr "" + +#: admin/systems/goto/chooser.tpl:4 +msgid "" +"Linux terminals and workstations are autocreated on bootup. For this reason " +"you're only be able to create templates for a specific tree. Servers are " +"normally automatically added too, but in some special cases you may need to " +"create a faked server entry to provide GOsa with some informations. Other " +"network components may be used for Nagios setups to create component " +"dependencies." +msgstr "" + +#: admin/systems/goto/chooser.tpl:7 +msgid "Linux thin client template" +msgstr "" + +#: admin/systems/goto/chooser.tpl:8 +msgid "Linux workstation template" +msgstr "" + +#: admin/systems/goto/chooser.tpl:9 +msgid "Linux Server" +msgstr "" + +#: admin/systems/goto/chooser.tpl:11 +msgid "Network printer" +msgstr "" + +#: admin/systems/goto/chooser.tpl:12 +msgid "Phone" +msgstr "Teléfono" + +#: admin/systems/goto/chooser.tpl:13 +msgid "Other network component" +msgstr "" + +#: admin/systems/goto/terminal.tpl:8 +msgid "Terminal template" +msgstr "" + +#: admin/systems/goto/terminal.tpl:10 +msgid "Terminal name" +msgstr "" + +#: admin/systems/goto/terminal.tpl:178 +#, fuzzy +msgid "Inherit all" +msgstr "Inicio todos" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:6 +msgid "Select objects to add" +msgstr "Seleccione los objetos a añadir" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:28 +msgid "Display objects matching" +msgstr "Mostrar objetos que coincidan" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:32 +msgid "Regular expression for matching object names" +msgstr "Expresiones regulares para buscar nombre de objetos" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:44 +msgid "Close" +msgstr "Cerrar" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#: admin/systems/ppd/class_ppdManager.inc:148 +#: admin/systems/ppd/class_ppdManager.inc:150 +msgid "PPD manager error" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#, fuzzy, php-format +msgid "The specified path '%s' does not exist." +msgstr "El valor especificado como 'UID' no es valido." + +#: admin/systems/ppd/class_ppdManager.inc:148 +#, fuzzy, php-format +msgid "Specified PPD file '%s' cannot be opened for reading." +msgstr "El método especificado '%s' no se puede ejecutar para servicios." + +#: admin/systems/ppd/class_ppdManager.inc:150 +#, php-format +msgid "The temporary file '%s' cannot be opened for writing." +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:176 +#: admin/systems/ppd/class_ppdManager.inc:313 +#, php-format +msgid "" +"Parsing PPD file %s failed - line too long. Trailing characters have been " +"ignored" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:184 +msgid "Nested groups are not supported!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:188 +msgid "Group name not unique!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:194 +#: admin/systems/ppd/class_ppdManager.inc:224 +msgid "Symbol values are not supported yet!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:218 +msgid "Nested options are not supported!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:243 +msgid "PickMany is not supported yet!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:334 +#, php-format +msgid "Parsing PPD file %s failed - no information found." +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:223 +#: admin/systems/ppd/class_printerPPDDialog.inc:240 +#: admin/systems/ppd/class_printerPPDDialog.inc:248 +#: admin/systems/ppd/class_printerPPDDialog.inc:272 +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#: admin/systems/ppd/class_printerPPDDialog.inc:313 +#: admin/systems/ppd/class_printerPPDDialog.inc:327 +#: admin/systems/ppd/class_printerPPDDialog.inc:337 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#: admin/systems/ppd/class_printerPPDDialog.inc:551 +#: admin/systems/ppd/class_printerPPDDialog.inc:554 +#: admin/systems/ppd/class_printerPPDDialog.inc:557 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:75 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:100 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, fuzzy +msgid "PPD error" +msgstr "Servicio LDAP" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#, fuzzy, php-format +msgid "Cannot open PPD '%s'!" +msgstr "No se puede grabar el archivo '%s'." + +#: admin/systems/ppd/class_printerPPDDialog.inc:122 +#, php-format +msgid "Cannot open PPD path '%s' for reading and writing!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: addons/goto/class_goto_import_file.inc:29 +#, fuzzy +msgid "file is empty" +msgstr "Eliminar esta entrada" + +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#, fuzzy, php-format +msgid "Cannot parse PPD '%s'!" +msgstr "No se puede grabar el archivo '%s'." + +#: admin/systems/ppd/class_printerPPDDialog.inc:316 +msgid "Overwrite existing PPD" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:317 +#, fuzzy +msgid "" +"There is already a ppd file for this kind of printer. Do you want to " +"overwrite it?" +msgstr "Ya existe un archivo PPD para ese tipo de impresora." + +#: admin/systems/ppd/class_printerPPDDialog.inc:465 +msgid "Section" +msgstr "Sección" + +#: admin/systems/ppd/class_printerPPDDialog.inc:525 +#: admin/systems/ppd/class_printerPPDDialog.inc:528 +msgid "True" +msgstr "Verdadero" + +#: admin/systems/ppd/class_printerPPDDialog.inc:526 +#: admin/systems/ppd/class_printerPPDDialog.inc:529 +msgid "False" +msgstr "Falso" + +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#, php-format +msgid "PPD type '%s' is not supported!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:571 +msgid "" +"Please select a valid ppd file or use 'Cancel' to go back to printer " +"configuration." +msgstr "" +"Por favor seleccione un archivo ppd válido o use 'Cancelar' para volver a la " +"configuración de impresora." + +#: admin/systems/ppd/remove_ppd.tpl:9 +msgid "The ppd file will be removed from the server and can not be restored." +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:1 +msgid "Printer driver" +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:12 +msgid "Select" +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:16 +msgid "New driver" +msgstr "" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, php-format +msgid "Cannot locate vendor '%s' in available PPDs!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:129 +msgid "Printer ppd selection." +msgstr "Selección del ppd de la impresora." + +#: addons/goto/class_target_list.inc:58 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: addons/goto/class_target_list.inc:59 addons/goto/class_target_list.inc:60 +msgid "Available targets" +msgstr "" + +#: addons/goto/class_target_list.inc:69 +msgid "Object name" +msgstr "Nombre de objeto" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Select to see object groups" +msgstr "Seleccione para buscar dentro de los subárboles" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Show object groups" +msgstr "Mostrar los grupos samba" + +#: addons/goto/class_target_list.inc:73 +msgid "Select to see servers" +msgstr "Seleccione para ver los servidores" + +#: addons/goto/class_target_list.inc:73 +msgid "Show servers" +msgstr "Mostrar servidores" + +#: addons/goto/class_target_list.inc:74 +#, fuzzy +msgid "Select to see workstations" +msgstr "Seleccione para buscar dentro de los subárboles" + +#: addons/goto/class_target_list.inc:74 +msgid "Show workstations" +msgstr "Mostrar estaciones de trabajo" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Select to see incoming objects" +msgstr "Seleccione para buscar dentro de los subárboles" + +#: addons/goto/class_target_list.inc:75 +msgid "Show new objects" +msgstr "" + +#: addons/goto/class_target_list.inc:80 +msgid "Select to search for a specific IP range only" +msgstr "" + +#: addons/goto/class_target_list.inc:80 +msgid "Match IP range" +msgstr "" + +#: addons/goto/class_target_list.inc:83 +msgid "Regular expression for matching group names" +msgstr "Expresión regular para buscar nombres de grupos" + +#: addons/goto/class_target_list.inc:84 +msgid "IP range start" +msgstr "" + +#: addons/goto/class_target_list.inc:85 +msgid "IP range end" +msgstr "" + +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +msgid "IP range" +msgstr "" + +#: addons/goto/goto_import_file.tpl:1 +#, fuzzy +msgid "Import jobs" +msgstr "Base Ldap" + +#: addons/goto/goto_import_file.tpl:3 +msgid "" +"You can import a list of jobs into the GOsa job queue. This should be a " +"semicolon seperated list of items in the following format:" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "timestamp" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "MAC-address" +msgstr "Dirección" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "job type" +msgstr "Tipo de ratón" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "object group" +msgstr "Mostrar los grupos samba" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "import base" +msgstr "Base Ldap" + +#: addons/goto/goto_import_file.tpl:5 +msgid "full hostname" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "IP-address" +msgstr "Dirección" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "DHCP group" +msgstr "Grupo" + +#: addons/goto/goto_import_file.tpl:9 +msgid "Example" +msgstr "Ejemplo" + +#: addons/goto/goto_import_file.tpl:21 +#, fuzzy +msgid "Select list to import" +msgstr "Inicio" + +#: addons/goto/goto_import_file.tpl:37 +#: addons/goto/events/DaemonEvent_update.tpl:51 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:51 +#: addons/goto/events/DaemonEvent_halt.tpl:51 +#: addons/goto/events/DaemonEvent_wakeup.tpl:51 +#: addons/goto/events/DaemonEvent_reboot.tpl:51 +#: addons/goto/events/DaemonEvent_notify.tpl:85 +#: addons/goto/events/DaemonEvent_rescan.tpl:51 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:51 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:51 +#: addons/goto/events/DaemonEvent_faireboot.tpl:51 +#: addons/goto/events/DaemonEvent_localboot.tpl:51 +#: addons/goto/events/DaemonEvent_memcheck.tpl:51 +#: addons/goto/events/DaemonEvent_activate.tpl:51 +#: addons/goto/events/DaemonEvent_lock.tpl:51 +#: addons/goto/events/DaemonEvent_reinstall.tpl:55 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:51 +msgid "Timestamp" +msgstr "" + +#: addons/goto/goto_import_file.tpl:38 +#: addons/goto/class_goto_import_file.inc:168 +#, fuzzy +msgid "MAC" +msgstr "ACL" + +#: addons/goto/goto_import_file.tpl:39 +#: addons/goto/class_goto_import_file.inc:171 +#, fuzzy +msgid "Event" +msgstr "Entorno" + +#: addons/goto/goto_import_file.tpl:42 +msgid "FQDN" +msgstr "" + +#: addons/goto/goto_import_file.tpl:43 +msgid "IP" +msgstr "" + +#: addons/goto/goto_import_file.tpl:44 +msgid "DHCP" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:113 +msgid "File" +msgstr "Archivo" + +#: addons/goto/class_gotoLogView.inc:115 +#, fuzzy +msgid "Date" +msgstr "Crear" + +#: addons/goto/class_gotoLogView.inc:202 +#, fuzzy +msgid "Log view" +msgstr "Servicio de Registro de sistema" + +#: addons/goto/class_gotoLogView.inc:203 +#, fuzzy +msgid "GOto log view" +msgstr "Pasar al modo" + +#: addons/goto/class_gotomasses.inc:26 +#, fuzzy +msgid "Deployment status" +msgstr "Inicio del Sistema" + +#: addons/goto/class_gotomasses.inc:27 addons/goto/main.inc:66 +#, fuzzy +msgid "System deployment status" +msgstr "Inicio del Sistema" + +#: addons/goto/class_gotomasses.inc:270 +#, php-format +msgid "The following jobs couldn't be deleted, they have to be aborted: %s" +msgstr "" + +#: addons/goto/class_gotomasses.inc:360 +#, fuzzy +msgid "This menu allows you to remove and change the properties of GOsa tasks." +msgstr "" +"Este menú le permite añadir, eliminar o configurar las propiedades de un " +"servicioespecíficos." + +#: addons/goto/class_gotomasses.inc:361 +#, fuzzy +msgid "List of queued jobs" +msgstr "Lista de Departamentos" + +#: addons/goto/class_gotomasses.inc:380 +#, fuzzy +msgid "Resume" +msgstr "Reinstalar" + +#: addons/goto/class_gotomasses.inc:381 +#, fuzzy +msgid "Pause" +msgstr "Base" + +#: addons/goto/class_gotomasses.inc:382 +msgid "Abort" +msgstr "Cancelar" + +#: addons/goto/class_gotomasses.inc:408 +#: addons/goto/events/DaemonEvent_update.tpl:47 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:47 +#: addons/goto/events/DaemonEvent_halt.tpl:47 +#: addons/goto/events/DaemonEvent_wakeup.tpl:47 +#: addons/goto/events/DaemonEvent_reboot.tpl:47 +#: addons/goto/events/DaemonEvent_notify.tpl:81 +#: addons/goto/events/DaemonEvent_rescan.tpl:47 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:47 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:47 +#: addons/goto/events/DaemonEvent_faireboot.tpl:47 +#: addons/goto/events/class_DaemonEvent_notify.inc:77 +#: addons/goto/events/class_DaemonEvent_notify.inc:78 +#: addons/goto/events/class_DaemonEvent_notify.inc:103 +#: addons/goto/events/DaemonEvent_localboot.tpl:47 +#: addons/goto/events/DaemonEvent_memcheck.tpl:47 +#: addons/goto/events/DaemonEvent_activate.tpl:47 +#: addons/goto/events/DaemonEvent_lock.tpl:47 +#: addons/goto/events/DaemonEvent_reinstall.tpl:51 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:47 +#, fuzzy +msgid "Target" +msgstr "Juego de caracteres" + +#: addons/goto/class_gotomasses.inc:409 +msgid "Task" +msgstr "" + +#: addons/goto/class_gotomasses.inc:411 +#: addons/goto/events/DaemonEvent_update.tpl:9 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:9 +#: addons/goto/events/DaemonEvent_halt.tpl:9 +#: addons/goto/events/DaemonEvent_wakeup.tpl:9 +#: addons/goto/events/DaemonEvent_reboot.tpl:9 +#: addons/goto/events/DaemonEvent_notify.tpl:28 +#: addons/goto/events/DaemonEvent_rescan.tpl:9 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:9 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:9 +#: addons/goto/events/DaemonEvent_faireboot.tpl:9 +#: addons/goto/events/DaemonEvent_localboot.tpl:9 +#: addons/goto/events/DaemonEvent_memcheck.tpl:9 +#: addons/goto/events/DaemonEvent_lock.tpl:9 +#: addons/goto/events/DaemonEvent_reinstall.tpl:9 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:9 +#, fuzzy +msgid "Schedule" +msgstr "PHP Schedule it" + +#: addons/goto/class_gotomasses.inc:413 +#: addons/goto/events/DaemonEvent_update.tpl:39 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:39 +#: addons/goto/events/DaemonEvent_halt.tpl:39 +#: addons/goto/events/DaemonEvent_wakeup.tpl:39 +#: addons/goto/events/DaemonEvent_reboot.tpl:39 +#: addons/goto/events/DaemonEvent_notify.tpl:73 +#: addons/goto/events/DaemonEvent_rescan.tpl:39 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:39 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:39 +#: addons/goto/events/DaemonEvent_faireboot.tpl:39 +#: addons/goto/events/DaemonEvent_localboot.tpl:39 +#: addons/goto/events/DaemonEvent_memcheck.tpl:39 +#: addons/goto/events/DaemonEvent_activate.tpl:39 +#: addons/goto/events/DaemonEvent_lock.tpl:39 +#: addons/goto/events/DaemonEvent_reinstall.tpl:43 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:39 +msgid "Status" +msgstr "Estado" + +#: addons/goto/class_gotomasses.inc:441 +#, fuzzy +msgid "Pause job" +msgstr "Base" + +#: addons/goto/class_gotomasses.inc:448 +#, fuzzy +msgid "Resume job" +msgstr "Reinstalar" + +#: addons/goto/class_gotomasses.inc:455 +#, fuzzy +msgid "Execute now" +msgstr "Ejecute" + +#: addons/goto/class_gotomasses.inc:462 +msgid "View logs" +msgstr "" + +#: addons/goto/class_gotomasses.inc:477 +#, fuzzy +msgid "Abort job" +msgstr "Inicio todos" + +#: addons/goto/class_gotomasses.inc:521 +#, fuzzy +msgid "Waiting" +msgstr "Aviso" + +#: addons/goto/class_gotomasses.inc:527 +#, fuzzy +msgid "Processed" +msgstr "Propiedades" + +#: addons/goto/class_gotomasses.inc:542 +#, fuzzy +msgid "Detection" +msgstr "Sección" + +#: addons/goto/class_gotomasses.inc:550 +#, fuzzy +msgid "in progress" +msgstr "Propiedades" + +#: addons/goto/class_gotomasses.inc:563 +msgid "immediately" +msgstr "" + +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:735 +#: addons/goto/class_gotomasses.inc:775 +#, fuzzy, php-format +msgid "Cannot update queue entry: %s" +msgstr "Crear nuevo departamento" + +#: addons/goto/class_gotomasses.inc:691 +#, php-format +msgid "Cannot update queue entries." +msgstr "" + +#: addons/goto/class_gotomasses.inc:740 +#, php-format +msgid "Required class '%s' cannot be found: job not aborted!" +msgstr "" + +#: addons/goto/class_gotomasses.inc:816 +#, fuzzy, php-format +msgid "Cannot load queue entries: %s" +msgstr "" +"La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#: addons/goto/class_gotomasses.inc:910 addons/goto/class_gotomasses.inc:916 +#, fuzzy +msgid "System deployment" +msgstr "Sistema / Departamento" + +#: addons/goto/class_gotomasses.inc:911 +msgid "Provide a mechanism to automatically activate systems" +msgstr "" + +#: addons/goto/log_view.tpl:7 +msgid "Available logs" +msgstr "" + +#: addons/goto/log_view.tpl:12 +#, fuzzy +msgid "Selected log" +msgstr "Eliminar acl" + +#: addons/goto/log_view.tpl:17 +msgid "No logs for this host available!" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_lock.inc:29 +#: addons/goto/events/class_DaemonEvent_lock.inc:30 +#, fuzzy +msgid "Lock" +msgstr "Bloqueado" + +#: addons/goto/events/DaemonEvent_update.tpl:18 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:18 +#: addons/goto/events/DaemonEvent_halt.tpl:18 +#: addons/goto/events/DaemonEvent_wakeup.tpl:18 +#: addons/goto/events/DaemonEvent_reboot.tpl:18 +#: addons/goto/events/DaemonEvent_rescan.tpl:18 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:18 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:18 +#: addons/goto/events/DaemonEvent_faireboot.tpl:18 +#: addons/goto/events/DaemonEvent_localboot.tpl:18 +#: addons/goto/events/DaemonEvent_memcheck.tpl:18 +#: addons/goto/events/DaemonEvent_activate.tpl:18 +#: addons/goto/events/DaemonEvent_lock.tpl:18 +#: addons/goto/events/DaemonEvent_reinstall.tpl:18 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:18 +#, fuzzy +msgid "System list" +msgstr "Análisis del sistema" + +#: addons/goto/events/DaemonEvent_update.tpl:35 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:35 +#: addons/goto/events/DaemonEvent_halt.tpl:35 +#: addons/goto/events/DaemonEvent_wakeup.tpl:35 +#: addons/goto/events/DaemonEvent_reboot.tpl:35 +#: addons/goto/events/DaemonEvent_notify.tpl:69 +#: addons/goto/events/DaemonEvent_rescan.tpl:35 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:35 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:35 +#: addons/goto/events/DaemonEvent_faireboot.tpl:35 +#: addons/goto/events/DaemonEvent_localboot.tpl:35 +#: addons/goto/events/DaemonEvent_memcheck.tpl:35 +#: addons/goto/events/DaemonEvent_activate.tpl:35 +#: addons/goto/events/DaemonEvent_lock.tpl:35 +#: addons/goto/events/DaemonEvent_reinstall.tpl:35 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:35 +#, fuzzy +msgid "ID" +msgstr "GID" + +#: addons/goto/events/DaemonEvent_update.tpl:43 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:43 +#: addons/goto/events/DaemonEvent_halt.tpl:43 +#: addons/goto/events/DaemonEvent_wakeup.tpl:43 +#: addons/goto/events/DaemonEvent_reboot.tpl:43 +#: addons/goto/events/DaemonEvent_notify.tpl:77 +#: addons/goto/events/DaemonEvent_rescan.tpl:43 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:43 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:43 +#: addons/goto/events/DaemonEvent_faireboot.tpl:43 +#: addons/goto/events/DaemonEvent_localboot.tpl:43 +#: addons/goto/events/DaemonEvent_memcheck.tpl:43 +#: addons/goto/events/DaemonEvent_activate.tpl:43 +#: addons/goto/events/DaemonEvent_lock.tpl:43 +#: addons/goto/events/DaemonEvent_reinstall.tpl:47 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:43 +#, fuzzy +msgid "Result" +msgstr "Resolución" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:37 +#, fuzzy +msgid "GOto reload" +msgstr "Pasar al modo" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:38 +#, fuzzy +msgid "Reload GOto settings" +msgstr "Parámetros genéricos del usuario" + +#: addons/goto/events/class_DaemonEvent_activate.inc:29 +#: addons/goto/events/class_DaemonEvent_activate.inc:30 +#, fuzzy +msgid "Unlock" +msgstr "Bloqueado" + +#: addons/goto/events/class_DaemonEvent_faireboot.inc:28 +#: addons/goto/events/class_DaemonEvent_faireboot.inc:29 +#, fuzzy +msgid "Abort installation" +msgstr "Estación de trabajo" + +#: addons/goto/events/target_list.tpl:5 +msgid "Apply" +msgstr "Aplicar" + +#: addons/goto/events/target_list.tpl:6 +msgid "Cancel" +msgstr "Cancelar" + +#: addons/goto/events/DaemonEvent_notify.tpl:7 +#, fuzzy +msgid "Message settings" +msgstr "Parámetros del servidor NTP" + +#: addons/goto/events/DaemonEvent_notify.tpl:10 +#, fuzzy +msgid "Sender" +msgstr "Servidor" + +#: addons/goto/events/DaemonEvent_notify.tpl:14 +#: addons/goto/events/class_DaemonEvent_notify.inc:94 +#, fuzzy +msgid "Subject" +msgstr "Enviar" + +#: addons/goto/events/DaemonEvent_notify.tpl:18 +#: addons/goto/events/class_DaemonEvent_notify.inc:97 +#, fuzzy +msgid "Message" +msgstr "Parámetros del servidor NTP" + +#: addons/goto/events/DaemonEvent_notify.tpl:37 +#, fuzzy +msgid "Target users" +msgstr "Recursos compartidos" + +#: addons/goto/events/DaemonEvent_notify.tpl:44 +#, fuzzy +msgid "Target groups" +msgstr "Recursos compartidos" + +#: addons/goto/events/class_DaemonEvent.inc:119 +#, fuzzy +msgid "This job has no template!" +msgstr "Esta 'dn' no tiene características de terminal." + +#: addons/goto/events/class_DaemonEvent.inc:135 +#, php-format +msgid "Create '%s' job" +msgstr "" + +#: addons/goto/events/class_DaemonEvent.inc:234 +msgid "Add" +msgstr "Añadir" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:31 +msgid "Reload fai release db" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_wakeup.inc:30 +msgid "Wake system" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_activate_new.inc:40 +#: addons/goto/events/class_DaemonEvent_activate_new.inc:41 +#, fuzzy +msgid "Activate new" +msgstr "Activado" + +#: addons/goto/events/class_EventTargetAddList.inc:51 +#: addons/goto/events/class_EventTargetAddUsersList.inc:45 +#, fuzzy +msgid "Targets" +msgstr "Recursos compartidos" + +#: addons/goto/events/class_EventTargetAddList.inc:55 +msgid "" +"This dialog shows all available targets for the event. Check the targets you " +"want to add and use the 'Apply' button." +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:66 +#: addons/goto/events/class_EventTargetAddUsersList.inc:60 +#, fuzzy +msgid "System / Department" +msgstr "Departamento" + +#: addons/goto/events/class_EventTargetAddList.inc:73 +#, fuzzy +msgid "Display server" +msgstr "Servidor de Cola" + +#: addons/goto/events/class_EventTargetAddList.inc:74 +#, fuzzy +msgid "Display workstation" +msgstr "Mostrar usuarios que coincidan con" + +#: addons/goto/events/class_EventTargetAddList.inc:75 +#, fuzzy +msgid "Display object groups" +msgstr "Servidor de Cola" + +#: addons/goto/events/class_EventTargetAddList.inc:76 +msgid "Filter by IP range" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:3 +msgid "Year" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:4 +#, fuzzy +msgid "Month" +msgstr "mes" + +#: addons/goto/events/timestamp_select.tpl:5 +#, fuzzy +msgid "Day" +msgstr "Mayo" + +#: addons/goto/events/timestamp_select.tpl:7 +msgid "Hour" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:8 +#, fuzzy +msgid "Minute" +msgstr "Impresora" + +#: addons/goto/events/timestamp_select.tpl:9 +#, fuzzy +msgid "Second" +msgstr "Sección" + +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:28 +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:29 +msgid "Reload LDAP config" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_notify.inc:46 +#: addons/goto/events/class_DaemonEvent_notify.inc:47 +msgid "Send message" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_notify.inc:100 +msgid "From" +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:49 +msgid "" +"This dialog shows all available targets for your event, check the targets " +"you want to add and use the 'Use' button to accept." +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:65 +#, fuzzy +msgid "Display users" +msgstr "Servidor de Cola" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:66 +#, fuzzy +msgid "Display groups" +msgstr "Servidor de Cola" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:31 +msgid "Reload fai server db" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:28 +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:29 +#, fuzzy +msgid "Installation activation" +msgstr "Comprobación de la instalación" + +#: addons/goto/events/DaemonEvent_activate.tpl:9 +#, fuzzy +msgid "Time schedule" +msgstr "Actualización programada" + +#: addons/goto/events/DaemonEvent_reinstall.tpl:39 +#, fuzzy +msgid "Progress" +msgstr "Propiedades" + +#: addons/goto/class_goto_import_file.inc:90 +msgid "" +"Selected entries will be skipped because of errors. Do you want to proceed?" +msgstr "" + +#: addons/goto/class_goto_import_file.inc:131 +#, php-format +msgid "Import complete: %s events successfully send, %s failed" +msgstr "" + +#: personal/environment/class_environment.inc:9 +#: personal/environment/class_environment.inc:433 +#: personal/environment/class_environment.inc:434 +#: personal/environment/class_environment.inc:442 +#: personal/environment/class_environment.inc:443 +#: personal/environment/class_environment.inc:446 +#: personal/environment/class_environment.inc:447 +#: personal/environment/class_environment.inc:450 +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:473 +#: personal/environment/class_environment.inc:474 +#: personal/environment/class_environment.inc:478 +#: personal/environment/class_environment.inc:479 +#: personal/environment/class_environment.inc:482 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1766 +msgid "Environment" +msgstr "Entorno" + +#: personal/environment/class_environment.inc:139 +#, php-format +msgid "Device '%s' is not available anymore. It will be removed!" +msgstr "" + +#: personal/environment/class_environment.inc:212 +msgid "auto" +msgstr "automático" + +#: personal/environment/class_environment.inc:234 +#, fuzzy, php-format +msgid "Cannot open file '%s'!" +msgstr "No se puede grabar el archivo '%s'." + +#: personal/environment/class_environment.inc:271 +#: personal/environment/class_environment.inc:272 +msgid "disabled" +msgstr "desactivado" + +#: personal/environment/class_environment.inc:307 +#, php-format +msgid "" +"Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk " +"profile will be disabled!" +msgstr "" + +#: personal/environment/class_environment.inc:360 +#, fuzzy, php-format +msgid "Profile server '%s' is not available anymore. Switched to server '%s'." +msgstr "" +"El servidor de perfiles seleccionado '%s' no es accesible. Configurando el " +"servidor de perfiles a '%s'." + +#: personal/environment/class_environment.inc:364 +#, fuzzy, php-format +msgid "" +"Profile server '%s' is not available anymore. Kiosk profile will be disabled." +msgstr "" +"El servidor de perfiles seleccionado '%s' no es accesible. Configurando el " +"servidor de perfiles a '%s'." + +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1148 +msgid "POSIX" +msgstr "POSIX" + +#: personal/environment/class_environment.inc:583 +#: personal/environment/environment.tpl:246 +msgid "Logon scripts" +msgstr "" + +#: personal/environment/class_environment.inc:673 +#, fuzzy +msgid "Share" +msgstr "Recursos compartidos" + +#: personal/environment/class_environment.inc:763 +#: personal/environment/environment.tpl:257 +#: personal/environment/environment.tpl:303 +msgid "Used by all users" +msgstr "" + +#: personal/environment/class_environment.inc:766 +#: personal/environment/environment.tpl:259 +#: personal/environment/environment.tpl:305 +msgid "Used by some users" +msgstr "" + +#: personal/environment/class_environment.inc:779 +#: personal/environment/class_environment.inc:780 +#: personal/environment/class_environment.inc:789 +#: personal/environment/class_environment.inc:790 +msgid "Reset password hash" +msgstr "Reiniciar hash de la contraseña" + +#: personal/environment/class_environment.inc:794 +msgid "Delete share entry" +msgstr "Eliminar entrada compartida" + +#: personal/environment/class_environment.inc:988 +#, fuzzy +msgid "Cannot set default printer flag for groups!" +msgstr "" +"El indicador de impresora por defecto de GOsa no está permitido dentro de " +"los grupos." + +#: personal/environment/class_environment.inc:1141 +#: personal/environment/class_environment.inc:1711 +#: personal/environment/class_environment.inc:1780 +msgid "Profile quota" +msgstr "Cuota del Perfil" + +#: personal/environment/class_environment.inc:1148 +#, fuzzy +msgid "environment" +msgstr "Entorno" + +#: personal/environment/class_environment.inc:1329 +msgid "group share" +msgstr "grupo compartido" + +#: personal/environment/class_environment.inc:1363 +msgid "Administrator" +msgstr "Administrador" + +#: personal/environment/class_environment.inc:1368 +msgid "Default printer" +msgstr "Impresora por defecto" + +#: personal/environment/class_environment.inc:1767 +msgid "Environment settings" +msgstr "Parámetros de entorno" + +#: personal/environment/class_environment.inc:1771 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/environment/class_environment.inc:1775 +msgid "Command to extend the list of possible screen resolutions" +msgstr "Comando para extender la lista de resoluciones de pantalla posibles" + +#: personal/environment/class_environment.inc:1779 +msgid "Profile server" +msgstr "Servidor de Perfil" + +#: personal/environment/class_environment.inc:1781 +#: personal/environment/environment.tpl:41 +#: personal/environment/environment.tpl:106 +msgid "Cache profile localy" +msgstr "Cachear perfil localmente" + +#: personal/environment/class_environment.inc:1785 +#: personal/environment/environment.tpl:174 +msgid "Resolution changeable during session" +msgstr "Resolución modificable durante la sesión" + +#: personal/environment/class_environment.inc:1787 +#: personal/environment/logonManagement.tpl:56 +msgid "Logon script" +msgstr "Script de inicio de sesión" + +#: personal/environment/environment.tpl:3 +msgid "The environment extension is currently disabled." +msgstr "" + +#: personal/environment/environment.tpl:11 +msgid "Profiles" +msgstr "" + +#: personal/environment/environment.tpl:14 +#: personal/environment/environment.tpl:207 +#: personal/environment/environment.tpl:288 +msgid "Environment managment settings" +msgstr "" + +#: personal/environment/environment.tpl:22 +#: personal/environment/environment.tpl:55 +msgid "Use profile managment" +msgstr "" + +#: personal/environment/environment.tpl:26 +#: personal/environment/environment.tpl:65 +msgid "Profil path" +msgstr "" + +#: personal/environment/environment.tpl:36 +#: personal/environment/environment.tpl:95 +msgid "MB" +msgstr "Mb" + +#: personal/environment/environment.tpl:47 +msgid "Profile managment" +msgstr "" + +#: personal/environment/environment.tpl:62 +msgid "Profile server managment" +msgstr "" + +#: personal/environment/environment.tpl:89 +msgid "Profil quota" +msgstr "" + +#: personal/environment/environment.tpl:120 +msgid "Kiosk profile settings" +msgstr "" + +#: personal/environment/environment.tpl:145 +msgid "Profile" +msgstr "" + +#: personal/environment/environment.tpl:164 +msgid "Manage" +msgstr "" + +#: personal/environment/environment.tpl:222 +msgid "User used to connect to the share" +msgstr "" + +#: personal/environment/environment.tpl:225 +msgid "Select a share" +msgstr "" + +#: personal/environment/environment.tpl:233 +msgid "Mount path" +msgstr "" + +#: personal/environment/environment.tpl:248 +#: personal/environment/logonManagement.tpl:1 +#: personal/environment/logonManagement.tpl:5 +msgid "Logon script management" +msgstr "" + +#: personal/environment/environment.tpl:295 +msgid "Hotplug device settings" +msgstr "" + +#: personal/environment/environment.tpl:342 +msgid "" +"Using this option will overwrite the complete printer settings for all " +"currently edited objects!" +msgstr "" + +#: personal/environment/environment.tpl:343 +#: personal/environment/environment.tpl:376 +msgid "Printer settings" +msgstr "" + +#: personal/environment/environment.tpl:360 +#: personal/environment/environment.tpl:393 +msgid "Toggle admin" +msgstr "" + +#: personal/environment/environment.tpl:363 +#: personal/environment/environment.tpl:396 +msgid "Toggle default" +msgstr "" + +#: personal/environment/class_logonManagementDialog.inc:107 +#: personal/environment/logonManagement.tpl:10 +#, fuzzy +msgid "Script name" +msgstr "Contenido del script" + +#: personal/environment/main.inc:134 +msgid "User environment settings" +msgstr "Parámetros de entorno de usuario" + +#: personal/environment/class_selectPrinterDialog.inc:107 +#, fuzzy +msgid "Please select a printer!" +msgstr "Por favor seleccione una plantilla válida." + +#: personal/environment/class_hotplugDialog.inc:64 +#, fuzzy +msgid "Please select a hotplug device!" +msgstr "Por favor seleccione una plantilla válida." + +#: personal/environment/selectPrinterDialog.tpl:1 +#, fuzzy +msgid "Add printer devices" +msgstr "Añadir extensión de impresora" + +#: personal/environment/selectPrinterDialog.tpl:48 +msgid "Display printers matching" +msgstr "" + +#: personal/environment/selectPrinterDialog.tpl:53 +msgid "Regular expression for matching printer names" +msgstr "" + +#: personal/environment/logonManagement.tpl:8 +msgid "Logon script settings" +msgstr "" + +#: personal/environment/logonManagement.tpl:24 +msgid "Priority" +msgstr "" + +#: personal/environment/logonManagement.tpl:34 +msgid "Logon script flags" +msgstr "" + +#: personal/environment/logonManagement.tpl:38 +msgid "Last script" +msgstr "" + +#: personal/environment/logonManagement.tpl:44 +msgid "Script can be replaced by user" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:1 +msgid "Add hotplug devices" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:5 +msgid "Hotplug management" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:10 +msgid "Select hotplug device to add" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:48 +msgid "Regular expression for matching hotplugs" +msgstr "" + +#~ msgid "Spool server" +#~ msgstr "Servidor de Cola" + +#, fuzzy +#~ msgid "Password method" +#~ msgstr "Contraseña" + +#~ msgid "" +#~ "The passwords you've entered as 'New password' and 'Repeated new " +#~ "password' do not match." +#~ msgstr "" +#~ "No coinciden las contraseñas introducidas como 'Nueva contraseña' y " +#~ "'Repetir nueva contraseña'." + +#~ msgid "The password used as new and current are too similar." +#~ msgstr "" +#~ "La contraseña actual y la introducida como nueva son demasiado parecidas." + +#~ msgid "The password used as new is to short." +#~ msgstr "La nueva contraseña es demasiado corta." + +#~ msgid "You have no permissions to change your password." +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#~ msgid "External password changer reported a problem: " +#~ msgstr "" +#~ "El programa externo de cambio de contraseña informo de un problema: " + +#, fuzzy +#~ msgid "PHP configuration" +#~ msgstr "Escribir archivo de configuración" + +#, fuzzy +#~ msgid "Password change" +#~ msgstr "Contraseña" + +#, fuzzy +#~ msgid "Your password is about to expire, please change your password!" +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#, fuzzy +#~ msgid "Smarty error" +#~ msgstr "Insertar separador" + +#, fuzzy +#~ msgid "Authentication error" +#~ msgstr "Tipo de autentificación IAX" + +#~ msgid "Object" +#~ msgstr "Objeto" + +#, fuzzy +#~ msgid "Change your password" +#~ msgstr "Cambiar contraseña" + +#, fuzzy +#~ msgid "Success" +#~ msgstr "Acceso sin restricciones" + +#~ msgid "Username" +#~ msgstr "Nombre de Usuario" + +#, fuzzy +#~ msgid "New password repeated" +#~ msgstr "activo, la contraseña expiró" + +#, fuzzy +#~ msgid "Password strength" +#~ msgstr "La contraseña expira en" + +#, fuzzy +#~ msgid "Change" +#~ msgstr "Cancelar" + +#, fuzzy +#~ msgid "Click here to change your password" +#~ msgstr "Permitir al usuario cambiar su contraseña" + +#, fuzzy +#~ msgid "Your password has expired. Please choose a new one!" +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#, fuzzy +#~ msgid "Old password" +#~ msgstr "contraseña" + +#, fuzzy +#~ msgid "Verify password" +#~ msgstr "Contraseña del usuario" + +#~ msgid "Change password" +#~ msgstr "Cambiar contraseña" + +#, fuzzy +#~ msgid "Additional filter options" +#~ msgstr "Eliminar opciones" + +#, fuzzy +#~ msgid "ACL for this object" +#~ msgstr "ACLs que tienen estos objetos: %s" + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Finish" +#~ msgstr "Terminar" + +#, fuzzy +#~ msgid "Please select your preferred language here" +#~ msgstr "Este paso le permite seleccionar su idioma preferido" + +#, fuzzy +#~ msgid "Basic checks for PHP compatibility and extensions" +#~ msgstr "" +#~ "Comprobación básica de la versión de PHP y las extensiones necesarias." + +#~ msgid "Checking PHP version" +#~ msgstr "Comprobando la versión de PHP" + +#, fuzzy +#~ msgid "PHP must be of version %s or above." +#~ msgstr "PHP debe ser versión '%s'/'%s' o superior." + +#, fuzzy +#~ msgid "GOsa requires this module to make use of SSHA encryption." +#~ msgstr "" +#~ "Este módulo es necesario para poder hacer uso del método de codificación " +#~ "SSHA" + +#, fuzzy +#~ msgid "mbstring" +#~ msgstr "Parametros de samba" + +#, fuzzy +#~ msgid "MySQL" +#~ msgstr "Servicio LDAP" + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to communicate with several supported databases." +#~ msgstr "" +#~ "MySQL es necesario para el acceso a algunas bases de datos soportadas." + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to show printers that are not defined within " +#~ "the LDAP." +#~ msgstr "" +#~ "MySQL es necesario para el acceso a algunas bases de datos soportadas." + +#, fuzzy +#~ msgid "samba hash generator" +#~ msgstr "Función de generación de hash de la contraseña SAMBA" + +#~ msgid "" +#~ "register_globals is a PHP mechanism to register all global variables to " +#~ "be accessible from scripts without changing the scope. This may be a " +#~ "security risk." +#~ msgstr "" +#~ "registr_globals es un mecanismo de PHP para registrar todas las variables " +#~ "globales de tal manera que sean accesible desde scripts sin que cambien " +#~ "su ámbito. Esto puede ser un problema de seguridad." + +#~ msgid "" +#~ "Search for 'register_globals' in your php.ini and switch it to 'Off'." +#~ msgstr "Busque 'register_globals' en su php.ini y modifíquelo por 'Off'." + +#~ msgid "" +#~ "PHP uses this value for the garbage collector to delete old sessions." +#~ msgstr "" +#~ "PHP usa este valor en el recolector de basura para eliminar las sesiones " +#~ "antiguas." + +#~ msgid "" +#~ "Setting this value to one day will prevent loosing session and cookies " +#~ "before they really timeout." +#~ msgstr "" +#~ "Ajustando este valor a un día impedirá la perdida de sesiones y cookies " +#~ "antes de que realmente se desconecte por tiempo." + +#~ msgid "" +#~ "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 " +#~ "or higher." +#~ msgstr "" +#~ "Busque 'sessio.gc_maxlifetime' en su php.ini y modifíquelo a 86400 o " +#~ "mayor." + +#~ msgid "Off" +#~ msgstr "Off" + +#~ msgid "" +#~ "In Order to use GOsa without any trouble, the session.auto_register " +#~ "option in your php.ini should be set to 'Off'." +#~ msgstr "" +#~ "Si quiere usar GOsa sin problemas, debe modificar a 'Off' la opción " +#~ "'session.auto_register' en su php.ini." + +#~ msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." +#~ msgstr "Busque 'session.auto_start' en su php.ini y modifíquelo a 'Off'." + +#~ msgid "" +#~ "GOsa needs at least 32MB of memory. Setting it below this limit may cause " +#~ "errors that are not reproducable! Increase it for larger setups." +#~ msgstr "" +#~ "GOsa necesita al menos 32Mb de memoria. Teniéndola por debajo de ese " +#~ "limite provocara errores inesperados. Aumentar para configuraciones " +#~ "mayores." + +#~ msgid "" +#~ "Search for 'memory_limit' in your php.ini and set it to '32M' or higher." +#~ msgstr "Busque 'memory_limit' en su php.ini y modifíquelo a '32M' o mayor." + +#~ msgid "" +#~ "This option influences the PHP output handling. Turn this Option off, to " +#~ "increase performance." +#~ msgstr "" +#~ "Esta opción está relacionada con el manejo de salida de PHP. Desactive " +#~ "esta opción poniéndola en off para mejorar el rendimiento." + +#~ msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'." +#~ msgstr "Busque 'implicit_flush' en su php.ini y modifíquelo a 'Off'." + +#~ msgid "The Execution time should be at least 30 seconds." +#~ msgstr "El tiempo de ejecución debe ser de al menos 30 segundos." + +#~ msgid "" +#~ "Search for 'max_execution_time' in your php.ini and set it to '30' or " +#~ "higher." +#~ msgstr "" +#~ "Busque 'max_execution_time' en su php.ini y modifíquelo a '30' o mayor." + +#~ msgid "" +#~ "Increase the server security by setting expose_php to 'off'. PHP won't " +#~ "send any information about the server you are running in this case." +#~ msgstr "" +#~ "Aumente la seguridad del servidor modificando el parámetro 'expose_php' a " +#~ "'off'. PHP no debería enviar ningún tipo de información sobre el servidor " +#~ "que esta ejecutando la aplicación." + +#~ msgid "Search for 'expose_php' in your php.ini and set if to 'Off'." +#~ msgstr "Busque 'expose_php' en su php.ini y modifíquelo a 'Off'." + +#~ msgid "On" +#~ msgstr "On" + +#~ msgid "" +#~ "Increase your server security by setting magic_quotes_gpc to 'on'. PHP " +#~ "will escape all quotes in strings in this case." +#~ msgstr "" +#~ "Aumente la seguridad del servidor modificando el parámetro " +#~ "'magic_quotes_gpc ' a 'on'. PHP debería escapar todas las comillas de las " +#~ "cadenas en este caso." + +#~ msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." +#~ msgstr "Busque 'magic_quotes_gpc' en su php.ini y modifíquelo a 'On'." + +#~ msgid "" +#~ "Increase your server performance by setting magic_quotes_gpc to 'off'." +#~ msgstr "" +#~ "Aumente el rendimiento de su servidor modificando 'magic_quotes_gpc' a " +#~ "'off'" + +#~ msgid "" +#~ "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to " +#~ "'Off'." +#~ msgstr "" +#~ "Busque 'zend.ze1_compatibility_mode' en su php.ini y modifíquelo a 'Off'." + +#~ msgid "Configuration writeable" +#~ msgstr "Se puede escribir en la configuración" + +#~ msgid "The configuration file can't be written" +#~ msgstr "No se puede escribir en la configuración" + +#~ msgid "" +#~ "GOsa reads its configuration from a file located in (%s/%s). The setup " +#~ "can write the configuration directly if it is writeable." +#~ msgstr "" +#~ "GOsa lee la configuración desde un archivo colocado en (%s/%s). El " +#~ "asistente puede escribir la configuración directamente si tiene permisos " +#~ "de escritura." + +#~ msgid "Completed" +#~ msgstr "Completado" + +#~ msgid "UNIX accounts/groups" +#~ msgstr "Cuentas/Grupos UNIX" + +#~ msgid "Samba management" +#~ msgstr "Administración Samba" + +#~ msgid "Mailsystem management" +#~ msgstr "Administración sistema de correo" + +#~ msgid "FAX system administration" +#~ msgstr "Administración sistema de FAX" + +#~ msgid "Asterisk administration" +#~ msgstr "Administración Asterisk" + +#~ msgid "System-/Configmanagement" +#~ msgstr "Sistemas-/Administración de Configuraciones" + +#~ msgid "Addressbook" +#~ msgstr "Libreta direcciones" + +#~ msgid "Get notifications or send feedback" +#~ msgstr "Recibir avisos o enviar sugerencias" + +#~ msgid "Notification and feedback" +#~ msgstr "Avisos y sugerencias" + +#, fuzzy +#~ msgid "Cannot send feedback: service temporarily unavailable" +#~ msgstr "" +#~ "Error mientras se envía su sugerencia. Es posible que el servicio no se " +#~ "encuentre disponible" + +#~ msgid "Feedback sucessfully send" +#~ msgstr "Sugerencia enviada correctamente" + +#~ msgid "Please specify a valid email address." +#~ msgstr "Por favor indique una dirección de correo válida." + +#, fuzzy +#~ msgid "" +#~ "You have to select at least one of both options, subscribe or send " +#~ "feedback." +#~ msgstr "" +#~ "Debe tener activa al menos una opción para suscribirse o enviar una " +#~ "sugerencia." + +#~ msgid "LDAP schema check" +#~ msgstr "Comprobar esquemas LDAP" + +#~ msgid "Perform test on your current LDAP schema" +#~ msgstr "Efectuando comprobaciones en los esquemas actuales de LDAP" + +#~ msgid "No" +#~ msgstr "No" + +#~ msgid "Yes" +#~ msgstr "Si" + +#~ msgid "LDAP setup" +#~ msgstr "Configuración LDAP" + +#~ msgid "LDAP connection setup" +#~ msgstr "Conectividad LDAP" + +#~ msgid "" +#~ "This dialog performs the basic configuration of the LDAP connectivity for " +#~ "GOsa." +#~ msgstr "" +#~ "Este asistente llevara a cabo la configuración de la conectividad entre " +#~ "GOsa y LDAP." + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' failed!" +#~ msgstr "La Autenticación Anónima en el servidor '%s'. ha tenido éxito." + +#, fuzzy +#~ msgid "Bind as user '%s' failed!" +#~ msgstr "Ha fallado la Autenticación como usuario '%s' en el servidor '%s'." + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' succeeded." +#~ msgstr "La Autenticación Anónima en el servidor '%s'. ha tenido éxito." + +#, fuzzy +#~ msgid "Please specify user and password!" +#~ msgstr "Por Favor especifique un usuario y contraseña" + +#, fuzzy +#~ msgid "Bind as user '%s' to server '%s' succeeded!" +#~ msgstr "" +#~ "La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#~ msgid "Language setup" +#~ msgstr "Selección de idiomas" + +#~ msgid "This step allows you to select your preferred language." +#~ msgstr "Este paso le permite seleccionar su idioma preferido" + +#~ msgid "Automatic" +#~ msgstr "Automatico" + +#, fuzzy +#~ msgid "Setup" +#~ msgstr "Inicio" + +#, fuzzy +#~ msgid "Automatic UIDs" +#~ msgstr "Automatico" + +#~ msgid "GID / UID min id" +#~ msgstr "GID / UID min id" + +#~ msgid "Password settings" +#~ msgstr "Parámetros de Contraseña" + +#~ msgid "Samba settings" +#~ msgstr "Parametros de samba" + +#~ msgid "Samba SID" +#~ msgstr "Samba SID" + +#, fuzzy +#~ msgid "Timezone" +#~ msgstr "Zona de uso horario del usuario OX" + +#, fuzzy +#~ msgid "Enable DNS extension" +#~ msgstr "Eliminar extensión de impresión" + +#, fuzzy +#~ msgid "Enable DHCP extension" +#~ msgstr "Eliminar extensión de impresión" + +#, fuzzy +#~ msgid "Enable mime type management" +#~ msgstr "Administración Sieve" + +#, fuzzy +#~ msgid "Enable FAI release management" +#~ msgstr "Administración Samba" + +#, fuzzy +#~ msgid "Logging options" +#~ msgstr "¡id desconocido!" + +#~ msgid "Mail settings" +#~ msgstr "Parámetros de correo" + +#, fuzzy +#~ msgid "Display summary in listings" +#~ msgstr "Mostrar sistemas que coincidan con" + +#, fuzzy +#~ msgid "Override sudo role ou" +#~ msgstr "¡id desconocido!" + +#, fuzzy +#~ msgid "Enable edit locking" +#~ msgstr "Activar comprobación de correo" + +#, fuzzy +#~ msgid "Login attribute" +#~ msgstr "Base de datos de Registro" + +#, fuzzy +#~ msgid "Remember dialog filter settings" +#~ msgstr "Parámetros genéricos del usuario" + +#~ msgid "GOsa settings 1/3" +#~ msgstr "Configuración GOsa 1/3" + +#~ msgid "GOsa generic settings" +#~ msgstr "Configuración genérica de GOsa" + +#~ msgid "The specified value for '%s' must be a numeric value" +#~ msgstr "El valor especificado para '%s' debe ser una valor numérico" + +#~ msgid "Don't add a trailing comma to '%s'." +#~ msgstr "No añada una coma final a '%s'" + +#~ msgid "People storage ou" +#~ msgstr "OU de almacenamiento de Usuarios" + +#~ msgid "Group storage ou" +#~ msgstr "OU de almacenamiento de Grupos" + +#~ msgid "Uid base must be numeric" +#~ msgstr "El Uid base debe ser un valor numérico" + +#~ msgid "The given password minimum length is not numeric." +#~ msgstr "" +#~ "El valor indicado como longitud mínima de la contraseña no es un valor " +#~ "numérico." + +#~ msgid "The given password differ value is not numeric." +#~ msgstr "" +#~ "El valor indicado como diferencias mínimas de la contraseña no es un " +#~ "valor numérico." + +#~ msgid "GOsa settings 2/3" +#~ msgstr "Configuración GOsa 2/3" + +#~ msgid "Customize special parameters" +#~ msgstr "Personalizar parametros especiales" + +#~ msgid "GOsa settings 3/3" +#~ msgstr "Configuración GOsa 3/3" + +#~ msgid "Tweak some GOsa core behaviour" +#~ msgstr "Ajustar el comportamiento del núcleo común de GOsa" + +#, fuzzy +#~ msgid "Session lifetime must be a numeric value!" +#~ msgstr "Tiempo de vida de sesión debe ser un valor numérico" + +#, fuzzy +#~ msgid "Maximum LDAP query time must be a numeric value!" +#~ msgstr "Máximo tiempo de consulta LDAP debe ser un valor numérico." + +#~ msgid "Write configuration file" +#~ msgstr "Escribir archivo de configuración" + +#~ msgid "Finish - write the configuration file" +#~ msgstr "Terminar - Escribir el archivo de configuración" + +#, fuzzy +#~ msgid "" +#~ "Your configuration file is currently world readable. Please update the " +#~ "file permissions!" +#~ msgstr "" +#~ "El fichero de configuración es universalmente legible. ¡Por favor " +#~ "modifique los permisos del archivo!" + +#~ msgid "The configuration is currently not readable or it does not exists." +#~ msgstr "" +#~ "En estos momentos la configuración no es accesible o no tiene permisos " +#~ "para leerla." + +#~ msgid "" +#~ "After downloading and placing the file under %s, please make sure that " +#~ "the user the webserver is running with is able to read %s, while other " +#~ "users shouldn't. You may want to execute these commands to achieve this " +#~ "requirement:" +#~ msgstr "" +#~ "Despues de descargar y poner el fichero en %s, compruebe que el usuario " +#~ "del servicio web es capaz de leer %s, mientras que los otros usuarios no. " +#~ "Si quiere puede ejecutar los siguientes comandos para cumplir lo " +#~ "requerido:" + +#~ msgid "Organization" +#~ msgstr "Organización" + +#~ msgid "Mail address" +#~ msgstr "Dirección correo electrónico" + +#~ msgid "User ID" +#~ msgstr "Identificador (ID) de usuario" + +#~ msgid "Welcome" +#~ msgstr "Bienvenido" + +#~ msgid "The welcome message" +#~ msgstr "Mensaje de Bienvenida" + +#~ msgid "Welcome to GOsa setup wizard" +#~ msgstr "Bienvenidos al asistente de configuración de GOsa" + +#~ msgid "Admin password" +#~ msgstr "Contraseña de administrador" + +#~ msgid "LDAP inspection" +#~ msgstr "Inspección LDAP" + +#~ msgid "Analyze your current LDAP for GOsa compatibility" +#~ msgstr "Analice la compatibilidad con GOsa de su directorio LDAP" + +#~ msgid "Checking for root object" +#~ msgstr "Comprobando objeto raíz" + +#~ msgid "Checking permissions on LDAP database" +#~ msgstr "Comprobando permisos en la base de datos LDAP" + +#, fuzzy +#~ msgid "Checking for invisible departments" +#~ msgstr "Comprobando departamentos invisibles" + +#~ msgid "Checking for invisible users" +#~ msgstr "Comprobando usuarios invisibles" + +#~ msgid "Checking for super administrator" +#~ msgstr "Comprobando súper administrador" + +#~ msgid "Checking for users outside the people tree" +#~ msgstr "Comprobando cuentas fuera del árbol de usuarios" + +#~ msgid "Checking for groups outside the groups tree" +#~ msgstr "Comprobando grupos fuera del árbol de grupos" + +#~ msgid "Checking for windows workstations outside the winstation tree" +#~ msgstr "" +#~ "Comprobando estaciones de trabajo windows fuera del árbol de estaciones " +#~ "de trabajo windows" + +#, fuzzy +#~ msgid "Checking for duplicated UID numbers" +#~ msgstr "Comprobando números uid duplicados" + +#, fuzzy +#~ msgid "Checking for duplicate GID numbers" +#~ msgstr "Comprobando números uid duplicados" + +#, fuzzy +#~ msgid "Checking for old style USB devices" +#~ msgstr "Comprobando objeto raíz" + +#, fuzzy +#~ msgid "Checking for old services that have to be migrated" +#~ msgstr "Comprobando cuentas fuera del árbol de usuarios" + +#, fuzzy +#~ msgid "Checking for old style application menus" +#~ msgstr "Comprobando números gid duplicados" + +#~ msgid "LDAP query failed" +#~ msgstr "La consulta LDAP ha fallado" + +#~ msgid "Possibly the 'root object' is missing." +#~ msgstr "Posiblemente el objeto raíz está desaparecido" + +#~ msgid "Found %s duplicate values for attribute 'uidNumber'." +#~ msgstr "Encontrado '%s' valores duplicados del atributo 'uidNumber'." + +#~ msgid "Found %s duplicate values for attribute 'gidNumber'." +#~ msgstr "Encontrado '%s' valores duplicados del atributo 'gidNumber'." + +#~ msgid "Failed" +#~ msgstr "Error" + +#~ msgid "" +#~ "Found %s winstations outside the predefined winstation department ou '%s'." +#~ msgstr "" +#~ "Se encontraron '%s' estaciones de trabajo windows fuera del contenedor ou " +#~ "de estaciones de trabajo windows '%s'" + +#~ msgid "Found %s groups outside the configured tree '%s'." +#~ msgstr "Encontrados '%s' grupos fuera del árbol configurado '%s'." + +#~ msgid "Move" +#~ msgstr "Mover" + +#~ msgid "Found %s user(s) outside the configured tree '%s'." +#~ msgstr "Encontrados '%s' usuario(s) fuera del árbol configurado '%s'." + +#~ msgid "" +#~ "The specified user '%s' does not have full access to your ldap database." +#~ msgstr "" +#~ "El usuario especificado '%s' no tiene acceso total a la base de datos " +#~ "LDAP." + +#~ msgid "Found %s user(s) that will not be visible in GOsa." +#~ msgstr "Encontrados %s usuario(s) que nos son visibles para GOsa." + +#, fuzzy +#~ msgid "Migration error" +#~ msgstr "Migrar" + +#, fuzzy +#~ msgid "Cannot migrate department '%s':" +#~ msgstr "Crear nuevo departamento" + +#~ msgid "Found %s department(s) that will not be visible in GOsa." +#~ msgstr "Encontrados %s departamento(s) que nos son visibles para GOsa." + +#~ msgid "There is no GOsa administrator account inside your LDAP." +#~ msgstr "No hay cuenta de administrador GOsa en la base de datos LDAP." + +#, fuzzy +#~ msgid "Password error" +#~ msgstr "La contraseña expira en" + +#, fuzzy +#~ msgid "Provided passwords do not match!" +#~ msgstr "" +#~ "¡La contraseñas introducidas como nueva y repita nueva contraseña no " +#~ "coinciden!" + +#, fuzzy +#~ msgid "Specify a valid user ID!" +#~ msgstr "Por favor especifique un uid valido." + +#, fuzzy +#~ msgid "Cannot move users to the requested department!" +#~ msgstr "No puedo mover los usuarios al departamento especificado." + +#~ msgid "Winstation will be moved from" +#~ msgstr "La estaciones de trabajo windows serán trasladadas desde" + +#~ msgid "to" +#~ msgstr "a" + +#~ msgid "Updating following references too" +#~ msgstr "También se actualizaran las siguientes referencias" + +#~ msgid "Group will be moved from" +#~ msgstr "El grupo serán trasladado desde" + +#~ msgid "User will be moved from" +#~ msgstr "El usuario serán trasladado desde" + +#~ msgid "The following references will be updated" +#~ msgstr "Las siguientes referencias se actualizaran" + +#~ msgid "" +#~ "The LDAP root object is missing. It is required to use your LDAP service." +#~ msgstr "" +#~ "EL objeto raíz de LDAP ha desaparecido. Es necesario para poder usar el " +#~ "servicio LDAP." + +#~ msgid "Try to create root object" +#~ msgstr "Intentando crear el objeto raíz" + +#~ msgid "Root object couldn't be created, you should try it on your own." +#~ msgstr "" +#~ "El objeto raíz no ha podido ser creado, tendra que crearlo usted mismo." + +#, fuzzy +#~ msgid "Copy '%s' to '%s' failed:" +#~ msgstr "Moviendo '%s' a '%s'" + +#, fuzzy +#~ msgid "Updating '%s' failed: %s" +#~ msgstr "Servicio de Registro de sistema" + +#~ msgid "License" +#~ msgstr "Licencia" + +#~ msgid "Terms and conditions for usage" +#~ msgstr "Términos y condiciones de uso" + +#, fuzzy +#~ msgid "Select to list objects of type '%s'." +#~ msgstr "Seleccione para ver los servidores" + +#, fuzzy +#~ msgid "Select to list objects containig '%s'." +#~ msgstr "Seleccione para ver los servidores" + +#, fuzzy +#~ msgid "Select to list objects that have '%s' enabled" +#~ msgstr "Seleccione para ver los servidores" + +#, fuzzy +#~ msgid "You have no permission to delete this object!" +#~ msgstr "No tiene permisos para eliminar este departamento." + +#, fuzzy +#~ msgid "You have no permission to delete the object:" +#~ msgstr "No tiene permisos para eliminar este departamento." + +#, fuzzy +#~ msgid "You have no permission to delete these objects:" +#~ msgstr "No tiene permisos para eliminar este departamento." + +#, fuzzy +#~ msgid "You have no permission to create this object!" +#~ msgstr "No tiene permisos para eliminar este departamento." + +#, fuzzy +#~ msgid "You have no permission to create the object:" +#~ msgstr "No tiene permisos para eliminar este departamento." + +#, fuzzy +#~ msgid "You have no permission to create these objects:" +#~ msgstr "No tiene permisos para eliminar este departamento." + +#, fuzzy +#~ msgid "You have no permission to modify this object!" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "You have no permission to modify the object:" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "You have no permission to modify these objects:" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "You have no permission to view this object!" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "You have no permission to view the object:" +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#, fuzzy +#~ msgid "You have no permission to view these objects:" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "You have no permission to move this object!" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "You have no permission to move the object:" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "You have no permission to move these objects:" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "Connection information" +#~ msgstr "Información genérica del usuario" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "" +#~ "La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#, fuzzy +#~ msgid "Cannot query %s database!" +#~ msgstr "" +#~ "La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#, fuzzy +#~ msgid "The field '%s' contains a reserved keyword!" +#~ msgstr "El campo 'Fax' tiene un número de teléfono no valido." + +#, fuzzy +#~ msgid "Cannot execute '%s' command!" +#~ msgstr "" +#~ "La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#, fuzzy +#~ msgid "Cannot execute '%s' command (%s)!" +#~ msgstr "" +#~ "La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#, fuzzy +#~ msgid "Value for '%s' is too large!" +#~ msgstr "El valor especificado como 'UID' es demasiado pequeño." + +#, fuzzy +#~ msgid "Value for '%s' is too small!" +#~ msgstr "El valor especificado como 'UID' es demasiado pequeño." + +#, fuzzy +#~ msgid "'%s' must be %d or above!" +#~ msgstr "PHP debe ser versión '%s'/'%s' o superior." + +#, fuzzy +#~ msgid "There is already an entry with this '%s' attribute in the system!" +#~ msgstr "Ya existe un usuario con este 'Login' en la base de datos." + +#, fuzzy +#~ msgid "The required field '%s' is empty!" +#~ msgstr "No se ha asignado ningún valor al campo obligatorio 'Nombre'." + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters" +#~ msgstr "El campo 'Nombre' no tiene caracteres validos." + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters!" +#~ msgstr "El campo 'Nombre' no tiene caracteres validos." + +#, fuzzy +#~ msgid "Missing %s PHP extension!" +#~ msgstr "Eliminar extensión de impresión" + +#, fuzzy +#~ msgid "Add %s" +#~ msgstr "Añadir" + +#, fuzzy +#~ msgid "Delete %s" +#~ msgstr "Eliminar" + +#, fuzzy +#~ msgid "Edit..." +#~ msgstr "Editar" + +#, fuzzy +#~ msgid "Edit %s..." +#~ msgstr "Editar usuario" + +#, fuzzy +#~ msgid "This account has no valid %s extensions!" +#~ msgstr "Esta cuenta no tiene extensiones GOsa validas" + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Esta cuenta tiene características posix activadas. Puede desactivarla " +#~ "pulsando aquí" + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. To disable them, you'll need to " +#~ "remove the %s settings first!" +#~ msgstr "" +#~ "Esta cuenta tiene las características unix activadas. Para desactivarlas, " +#~ "necesita eliminar la cuenta samba / entorno primero." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Esta cuenta tiene la extensión posix desactivada. Puede activarla " +#~ "pulsando aquí." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. To enable them, you'll need to add " +#~ "the %s settings first!" +#~ msgstr "" +#~ "Esta cuenta tiene las características unix activadas. Para desactivarlas, " +#~ "necesita eliminar la cuenta samba / entorno primero." + +#, fuzzy +#~ msgid "" +#~ "This account has %s features settings. To disable them, you'll need to " +#~ "add the %s settings first!" +#~ msgstr "" +#~ "Esta cuenta tiene las características unix activadas. Para desactivarlas, " +#~ "necesita eliminar la cuenta samba / entorno primero." + +#, fuzzy +#~ msgid "Add %s settings" +#~ msgstr "Parametros Unix" + +#, fuzzy +#~ msgid "Remove %s settings" +#~ msgstr "Parámetros genéricos del usuario" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Pulse en el botón - Editar - para cambiar la información en esta ventana" + +#~ msgid "January" +#~ msgstr "Enero" + +#~ msgid "February" +#~ msgstr "Febrero" + +#~ msgid "March" +#~ msgstr "Marzo" + +#~ msgid "April" +#~ msgstr "Abril" + +#~ msgid "May" +#~ msgstr "Mayo" + +#~ msgid "June" +#~ msgstr "Junio" + +#~ msgid "July" +#~ msgstr "Julio" + +#~ msgid "August" +#~ msgstr "Agosto" + +#~ msgid "September" +#~ msgstr "Septiembre" + +#~ msgid "October" +#~ msgstr "Octubre" + +#~ msgid "November" +#~ msgstr "Noviembre" + +#~ msgid "December" +#~ msgstr "Diciembre" + +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "Junio" + +#, fuzzy +#~ msgid "Monday" +#~ msgstr "mes" + +#, fuzzy +#~ msgid "Wednesday" +#~ msgstr "Miércoles" + +#, fuzzy +#~ msgid "read operation" +#~ msgstr "Eliminar opciones" + +#, fuzzy +#~ msgid "authentication" +#~ msgstr "Tipo de autentificación IAX" + +#, fuzzy +#~ msgid "LDAP %s failed!" +#~ msgstr "La consulta LDAP ha fallado" + +#, fuzzy +#~ msgid "LDAP operation failed!" +#~ msgstr "La consulta LDAP ha fallado" + +#, fuzzy +#~ msgid "Upload failed: %s" +#~ msgstr "Servicio de Registro de sistema" + +#, fuzzy +#~ msgid "This '%s' is still in use." +#~ msgstr "" +#~ "Este Rol no puede ser eliminado por estar siendo usado. Los siguientes " +#~ "objetos están usando este rol %s" + +#, fuzzy +#~ msgid "This '%s' is still in use by these objects: %s" +#~ msgstr "" +#~ "Este Rol no puede ser eliminado por estar siendo usado. Los siguientes " +#~ "objetos están usando este rol %s" + +#, fuzzy +#~ msgid "Cannot open file '%s' for reading!" +#~ msgstr "No se puede grabar el archivo '%s'." + +#, fuzzy +#~ msgid "Cannot open file '%s' for writing!" +#~ msgstr "No se puede grabar el archivo '%s'." + +#, fuzzy +#~ msgid "Cannot create folder '%s'!" +#~ msgstr "Crear nuevo departamento" + +#, fuzzy +#~ msgid "Checking for %s support" +#~ msgstr "Comprobando soporte mhash" + +#~ msgid "ACL" +#~ msgstr "ACL" + +#, fuzzy +#~ msgid "Cannot not parse XML!" +#~ msgstr "¡Demasiados usuarios!, no hay identificadores (ID) libres" + +#, fuzzy +#~ msgid "You're going to edit the LDAP entry/entries %s" +#~ msgstr "Has decidido eliminar las siguientes entradas %s" + +#, fuzzy +#~ msgid "LDAP warning" +#~ msgstr "Aviso" + +#, fuzzy +#~ msgid "Cannot get schema information from server. No schema check possible!" +#~ msgstr "" +#~ "No puedo obtener información de esquemas del servidor. ¡No es posible " +#~ "comprobar los esquemas!" + +#~ msgid "French" +#~ msgstr "Francés" + +#~ msgid "English" +#~ msgstr "Inglés" + +#~ msgid "Chinese" +#~ msgstr "Chino" + +#, fuzzy +#~ msgid "Vietnamese" +#~ msgstr "Nombre de pila" + +#~ msgid "Russian" +#~ msgstr "Ruso" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Se puede escribir en la configuración" + +#, fuzzy +#~ msgid "These objects will be pasted: %s" +#~ msgstr "Las siguientes referencias se actualizaran" + +#, fuzzy +#~ msgid "Cannot paste" +#~ msgstr "¡No puedo abrir el certificado especificado!" + +#, fuzzy +#~ msgid "You are not allowed to create a snapshot for %s." +#~ msgstr "No tiene permisos para crear un nuevo rol." + +#, fuzzy +#~ msgid "You are not allowed to restore a snapshot for %s." +#~ msgstr "No tiene permisos para crear un nuevo rol." + +#~ msgid "cut" +#~ msgstr "mover" + +#~ msgid "Cut this entry" +#~ msgstr "Mover esta entrada" + +#~ msgid "copy" +#~ msgstr "copiar" + +#~ msgid "Copy this entry" +#~ msgstr "Copiar esta entrada" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "copiar" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "mover" + +#, fuzzy +#~ msgid "Logging failed: %s" +#~ msgstr "Servicio de Registro de sistema" + +#, fuzzy +#~ msgid "Specified objectType is empty or invalid!" +#~ msgstr "La contraseñas especificadas están vacías o no son iguales." + +#, fuzzy +#~ msgid "MySQL error" +#~ msgstr "Servicio LDAP" + +#, fuzzy +#~ msgid "Cannot add location to the database!" +#~ msgstr "" +#~ "La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." + +#~ msgid "Go to root department" +#~ msgstr "Ir al departamento raíz" + +#~ msgid "Root" +#~ msgstr "Raíz" + +#~ msgid "Go up one department" +#~ msgstr "Subir un departamento" + +#~ msgid "Up" +#~ msgstr "Arriba" + +#~ msgid "Go to users department" +#~ msgstr "Ir al departamento de usuarios" + +#~ msgid "Home" +#~ msgstr "Inicio" + +#~ msgid "Reload list" +#~ msgstr "Recargar lista" + +#, fuzzy +#~ msgid "Use" +#~ msgstr "Usuario" + +#, fuzzy +#~ msgid "Filter entries with this syntax" +#~ msgstr "Entradas de filtrado con esta sintaxis" + +#, fuzzy +#~ msgid "Certificate is empty!" +#~ msgstr "Número de serie del certificado" + +#, fuzzy +#~ msgid "No valid certificate loaded!" +#~ msgstr "No hay certificados instalados" + +#, fuzzy +#~ msgid "Manage access control lists" +#~ msgstr "Lista de control de acceso" + +#~ msgid "All categories" +#~ msgstr "Todas las categorías" + +#~ msgid "Reset ACLs" +#~ msgstr "Eliminar ACLs" + +#~ msgid "One level" +#~ msgstr "Un nivel" + +#~ msgid "Current object" +#~ msgstr "Objeto actual" + +#~ msgid "Complete subtree" +#~ msgstr "Subárbol completo" + +#~ msgid "Complete subtree (permanent)" +#~ msgstr "Subárbol completo (permanente)" + +#~ msgid "Groups" +#~ msgstr "Grupos" + +#~ msgid "Down" +#~ msgstr "Abajo" + +#, fuzzy +#~ msgid "No ACL settings for this category!" +#~ msgstr "No hay ACL configuradas en esta categoría" + +#~ msgid "Contains ACLs for these objects: %s" +#~ msgstr "ACLs que tienen estos objetos: %s" + +#, fuzzy +#~ msgid "category ACL" +#~ msgstr "Categoría" + +#, fuzzy +#~ msgid "Edit ACL for '%s' - scope is '%s'" +#~ msgstr "Editar ACL para '%s', el ámbito es '%s'" + +#~ msgid "All objects in current subtree" +#~ msgstr "Todos los objetos en el subárbol actual" + +#~ msgid "read" +#~ msgstr "leer" + +#~ msgid "write" +#~ msgstr "escribir" + +#, fuzzy +#~ msgid "unknown role" +#~ msgstr "¡id desconocido!" + +#~ msgid "Access control list" +#~ msgstr "Lista de control de acceso" + +#~ msgid "ACL roles" +#~ msgstr "Rol" + +#~ msgid "Role name" +#~ msgstr "Nombre del Rol" + +#~ msgid "Role description" +#~ msgstr "Descripción del Rol" + +#, fuzzy +#~ msgid "Password reset" +#~ msgstr "La contraseña expira en" + +#~ msgid "ACL management" +#~ msgstr "Administración de ACL" + +#~ msgid "ACL Templates" +#~ msgstr "Plantillas ACL" + +#~ msgid "List of acls" +#~ msgstr "Lista de acls" + +#~ msgid "Summary" +#~ msgstr "Sumario" + +#~ msgid "Display acls matching" +#~ msgstr "Mostrar las acl que coincidan con" + +#~ msgid "Role" +#~ msgstr "Rol" + +#~ msgid "Edit acl role" +#~ msgstr "Editar rol" + +#~ msgid "Edit acl" +#~ msgstr "Editar acl" + +#, fuzzy +#~ msgid "ACL role" +#~ msgstr "Rol" + +#, fuzzy +#~ msgid "Access control roles" +#~ msgstr "Lista de control de acceso" + +#, fuzzy +#~ msgid "Edit AC roles" +#~ msgstr "Rol" + +#, fuzzy +#~ msgid "Reset ACL" +#~ msgstr "Eliminar ACLs" + +#~ msgid "No ACL settings for this category" +#~ msgstr "No hay ACL configuradas en esta categoría" + +#, fuzzy +#~ msgid "ACL for these objects: %s" +#~ msgstr "ACLs que tienen estos objetos: %s" + +#, fuzzy +#~ msgid "Edit category ACL" +#~ msgstr "Editar las categorías ACLs" + +#, fuzzy +#~ msgid "Reset category ACL" +#~ msgstr "Categoría" + +#~ msgid "Edit ACL for '%s', scope is '%s'" +#~ msgstr "Editar ACL para '%s', el ámbito es '%s'" + +#, fuzzy +#~ msgid "Object in use" +#~ msgstr "Objeto" + +#, fuzzy +#~ msgid "This role cannot be removed while it is in use by these objects:" +#~ msgstr "" +#~ "Este Rol no puede ser eliminado por estar siendo usado. Los siguientes " +#~ "objetos están usando este rol %s" + +#, fuzzy +#~ msgid "Strength" +#~ msgstr "Calle" + +#~ msgid "User administration" +#~ msgstr "Administración de Usuario" + +#~ msgid "Template" +#~ msgstr "Plantilla" + +#, fuzzy +#~ msgid "Manage users" +#~ msgstr "Usuarios del dominio" + +#, fuzzy +#~ msgid "Infrastructure error" +#~ msgstr "Buscar en subárboles" + +#, fuzzy +#~ msgid "You have no permission to change this users password!" +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#, fuzzy +#~ msgid "You have no permission to modify object '%s'!" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "You have no permission to use this template!" +#~ msgstr "No tiene permisos para mover este objeto a '%s'." + +#, fuzzy +#~ msgid "user" +#~ msgstr "Usuario" + +#, fuzzy +#~ msgid "You have no permission to change the lock status for this user!" +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#~ msgid "Given name" +#~ msgstr "Nombre de pila" + +#, fuzzy +#~ msgid "Applying a template" +#~ msgstr "Plantilla" + +#~ msgid "List of users" +#~ msgstr "Lista de usuarios" + +#, fuzzy +#~ msgid "Show %s" +#~ msgstr "Mostrar teléfonos" + +#, fuzzy +#~ msgid "templates" +#~ msgstr "Plantilla" + +#, fuzzy +#~ msgid "GOsa object" +#~ msgstr "Objeto" + +#, fuzzy +#~ msgid "functional users" +#~ msgstr "Mostrar usuarios funcionales" + +#~ msgid "Posix" +#~ msgstr "Posix" + +#, fuzzy +#~ msgid "POSIX users" +#~ msgstr "Parametros de samba" + +#~ msgid "Mail" +#~ msgstr "Correo Electrónico" + +#, fuzzy +#~ msgid "mail users" +#~ msgstr "Usuarios del dominio" + +#~ msgid "Samba" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "samba users" +#~ msgstr "Usuarios del dominio" + +#~ msgid "Proxy" +#~ msgstr "Proxy" + +#, fuzzy +#~ msgid "proxy users" +#~ msgstr "Mostrar los usuarios de proxy" + +#, fuzzy +#~ msgid "Apply template" +#~ msgstr "Plantilla" + +#~ msgid "GOsa" +#~ msgstr "GOsa" + +#~ msgid "Edit generic properties" +#~ msgstr "Editar características generales" + +#~ msgid "Edit UNIX properties" +#~ msgstr "Editar características UNIX" + +#~ msgid "Edit environment properties" +#~ msgstr "Editar características de entorno" + +#~ msgid "Edit mail properties" +#~ msgstr "Editar características de correo electrónico" + +#~ msgid "Edit phone properties" +#~ msgstr "Editar características telefónicas" + +#~ msgid "Fax" +#~ msgstr "Fax" + +#~ msgid "Edit fax properies" +#~ msgstr "Editar características de Fax" + +#~ msgid "Edit samba properties" +#~ msgstr "Editar características samba" + +#~ msgid "Netatalk" +#~ msgstr "Netatalk" + +#~ msgid "Edit netatalk properties" +#~ msgstr "Editar características netatalk" + +#~ msgid "Create user from template" +#~ msgstr "Crear usuario desde plantilla" + +#~ msgid "Create user with this template" +#~ msgstr "Crear usuario con esta plantilla" + +#, fuzzy +#~ msgid "inactive" +#~ msgstr "activo" + +#~ msgid "active" +#~ msgstr "activo" + +#~ msgid "password" +#~ msgstr "contraseña" + +#~ msgid "Delete user" +#~ msgstr "Eliminar usuario" + +#, fuzzy +#~ msgid "Cannot find group SID in your configuration!" +#~ msgstr "" +#~ "¡No se puede encontrar SID en LDAP o en el archivo de configuración!" + +#~ msgid "Samba group" +#~ msgstr "Grupo de samba" + +#~ msgid "Domain admins" +#~ msgstr "Administradores del dominio" + +#~ msgid "Domain users" +#~ msgstr "Usuarios del dominio" + +#~ msgid "Domain guests" +#~ msgstr "Invitados del dominio" + +#~ msgid "Special group (%d)" +#~ msgstr "Grupo especial (%d)" + +#~ msgid "full access" +#~ msgstr "Acceso sin restricciones" + +#~ msgid "allow access to these hosts" +#~ msgstr "Permitir el acceso a estos equipos" + +#~ msgid "! unknown id" +#~ msgstr "¡id desconocido!" + +#, fuzzy +#~ msgid "Cannot find any RIDBASE for '%s'!" +#~ msgstr "No hay ningún RIDBASE configurado para '%s'." + +#, fuzzy +#~ msgid "Cannot allocate a free ID!" +#~ msgstr "¡Demasiados usuarios!, no hay identificadores (ID) libres" + +#~ msgid "Generic group settings" +#~ msgstr "Parámetros genéricos del grupo" + +#~ msgid "Samba group type" +#~ msgstr "Tipo de grupo de samba" + +#~ msgid "Samba domain name" +#~ msgstr "Nombre de dominio samba" + +#~ msgid "Phone pickup group" +#~ msgstr "Miembros de grupo de salto telefónico" + +#~ msgid "Nagios group" +#~ msgstr "Grupo Nagios" + +#~ msgid "Group member" +#~ msgstr "Miembro del grupo" + +#~ msgid "Group administration" +#~ msgstr "Administración de grupo" + +#~ msgid "Display systems matching" +#~ msgstr "Mostrar sistemas que coincidan con" + +#~ msgid "List of groups" +#~ msgstr "Lista de grupos" + +#~ msgid "Select to see groups that are primary groups of users" +#~ msgstr "Seleccione para ver que grupos son grupos primarios de usuarios" + +#, fuzzy +#~ msgid "primary groups" +#~ msgstr "Mostrar grupos primarios" + +#, fuzzy +#~ msgid "samba groups mappings" +#~ msgstr "Tipo de grupo de samba" + +#, fuzzy +#~ msgid "samba groups" +#~ msgstr "Grupo de samba" + +#, fuzzy +#~ msgid "application settings" +#~ msgstr "Aplicaciones" + +#, fuzzy +#~ msgid "application groups" +#~ msgstr "Mostrar los grupos de aplicaciones" + +#, fuzzy +#~ msgid "mail settings" +#~ msgstr "Parámetros de correo" + +#, fuzzy +#~ msgid "mail groups" +#~ msgstr "Mostrar grupos de correo" + +#~ msgid "Select to see normal groups that have only functional aspects" +#~ msgstr "Seleccione para ver que grupos tienen solo aspectos funcionales" + +#, fuzzy +#~ msgid "functional groups" +#~ msgstr "Mostrar grupos funcionales" + +#~ msgid "User name of which groups are shown" +#~ msgstr "Nombre de usuario de los grupos que se muestran" + +#, fuzzy +#~ msgid "Number of listed groups" +#~ msgstr "Eliminar grupo seleccionado" + +#, fuzzy +#~ msgid "In all groups" +#~ msgstr "Mostrar grupos de correo" + +#, fuzzy +#~ msgid "Not in all groups" +#~ msgstr "Mostrar grupos de correo" + +#, fuzzy +#~ msgid "Locality" +#~ msgstr "Localización" + +#~ msgid "Administrative settings" +#~ msgstr "Parámetros administrativos" + +#, fuzzy +#~ msgid "Domain Component" +#~ msgstr "Administradores del dominio" + +#, fuzzy +#~ msgid "Cannot find an unused tag for this administrative unit!" +#~ msgstr "" +#~ "Error Fatal: ¡No se puede encontrar una etiqueta sin usar para " +#~ "identificar la unidad administrativa!" + +#~ msgid "Tagging '%s'." +#~ msgstr "Etiquetando '%s'." + +#~ msgid "Moving '%s' to '%s'" +#~ msgstr "Moviendo '%s' a '%s'" + +#~ msgid "FAILED to copy %s, aborting operation" +#~ msgstr "Ha fallado a copiar %s, operación abortada" + +#~ msgid "Departments" +#~ msgstr "Departamentos" + +#~ msgid "Department name" +#~ msgstr "Nombre de departamento" + +#~ msgid "Category" +#~ msgstr "Categoría" + +#~ msgid "State" +#~ msgstr "Provincia" + +#~ msgid "Address" +#~ msgstr "Dirección" + +#~ msgid "List of departments" +#~ msgstr "Lista de Departamentos" + +#~ msgid "Regular expression for matching department names" +#~ msgstr "Expresión regular para buscar el nombre del departamento" + +#, fuzzy +#~ msgid "Country name" +#~ msgstr "País" + +#~ msgid "Department management" +#~ msgstr "Administración de departamento" + +#, fuzzy +#~ msgid "Name of organization" +#~ msgstr "Organización" + +#, fuzzy +#~ msgid "Manage Departments" +#~ msgstr "Departamentos" + +#~ msgid "Country" +#~ msgstr "País" + +#, fuzzy +#~ msgid "Organization name" +#~ msgstr "Organización" + +#~ msgid "Postal address" +#~ msgstr "Código Postal" + +#, fuzzy +#~ msgid "Phone number" +#~ msgstr "Número de teléfono personal" + +#, fuzzy +#~ msgid "Manage object groups" +#~ msgstr "Mostrar los grupos samba" + +#, fuzzy +#~ msgid "Windows Install" +#~ msgstr "Windows RDP" + +#, fuzzy +#~ msgid "FAI summary" +#~ msgstr "Sumario" + +#, fuzzy +#~ msgid "people" +#~ msgstr "Rol" + +#, fuzzy +#~ msgid "winstations" +#~ msgstr "Estación de trabajo Windows" + +#, fuzzy +#~ msgid "Sytem trust" +#~ msgstr "Sistema de confianza" + +#, fuzzy +#~ msgid "user groups" +#~ msgstr "Grupo de samba" + +#, fuzzy +#~ msgid "nested groups" +#~ msgstr "Lista de grupos" + +#, fuzzy +#~ msgid "department groups" +#~ msgstr "departamento" + +#, fuzzy +#~ msgid "server groups" +#~ msgstr "Mostrar grupos primarios" + +#, fuzzy +#~ msgid "workstation groups" +#~ msgstr "Estación de trabajo" + +#, fuzzy +#~ msgid "windows workstation groups" +#~ msgstr "Mostrar estaciones de trabajo" + +#, fuzzy +#~ msgid "terminal groups" +#~ msgstr "Mostrar grupos de correo" + +#, fuzzy +#~ msgid "printer groups" +#~ msgstr "Mostrar grupos primarios" + +#, fuzzy +#~ msgid "phone groups" +#~ msgstr "Mostrar los grupos samba" + +#, fuzzy +#~ msgid "Edit users POSIX settings" +#~ msgstr "Parametros de samba" + +#~ msgid "expired" +#~ msgstr "expiró" + +#~ msgid "grace time active" +#~ msgstr "Periodo de gracia activado" + +#, fuzzy +#~ msgid "password not changeable" +#~ msgstr "activo, no puede cambiar la contraseña" + +#, fuzzy +#~ msgid "password expired" +#~ msgstr "activo, la contraseña expiró" + +#~ msgid "unconfigured" +#~ msgstr "Sin configurar" + +#~ msgid "Password can't be changed up to %s days after last change" +#~ msgstr "" +#~ "La contraseñas no pueden ser cambiadas hasta %s días desde el último " +#~ "cambio" + +#~ msgid "Password must be changed after %s days" +#~ msgstr "La contraseñas deben ser cambiadas despues de %s días" + +#, fuzzy +#~ msgid "Disable account after %s days of inactivity after password expiry" +#~ msgstr "" +#~ "Desactivar cuenta despues de %s días de inactividad una vez expirada la " +#~ "contraseña" + +#, fuzzy +#~ msgid "Warn user %s days before password expiry" +#~ msgstr "Avisar al usuario %s días antes de que la contraseña expire" + +#~ msgid "Group of user" +#~ msgstr "Grupo de usuarios" + +#~ msgid "Home directory" +#~ msgstr "Directorio de usuario" + +#, fuzzy +#~ msgid "shadowMin" +#~ msgstr "Shadow min" + +#, fuzzy +#~ msgid "shadowMax" +#~ msgstr "Shadow max" + +#, fuzzy +#~ msgid "shadowWarning" +#~ msgstr "Shadow warning" + +#, fuzzy +#~ msgid "shadowInactive" +#~ msgstr "Shadow inactive" + +#~ msgid "POSIX account" +#~ msgstr "Cuenta POSIX" + +#~ msgid "Group ID" +#~ msgstr "Identificador (ID) de Grupo" + +#~ msgid "Force password change on login" +#~ msgstr "Forzar el cambio de contraseña al iniciar" + +#~ msgid "Shadow min" +#~ msgstr "Shadow min" + +#~ msgid "Shadow max" +#~ msgstr "Shadow max" + +#~ msgid "Shadow warning" +#~ msgstr "Shadow warning" + +#~ msgid "Shadow inactive" +#~ msgstr "Shadow inactive" + +#~ msgid "Shadow expire" +#~ msgstr "Shadow expire" + +#~ msgid "System trust model" +#~ msgstr "Sistema de confianza" + +#, fuzzy +#~ msgid "POSIX settings" +#~ msgstr "Parametros de samba" + +#, fuzzy +#~ msgid "Change user password" +#~ msgstr "Cambiar contraseña" + +#~ msgid "You need to specify your current password in order to proceed." +#~ msgstr "Necesita introducir su contraseña actual para continuar." + +#~ msgid "The password you've entered as 'New password' is empty." +#~ msgstr "No se ha asignado ningún valor al campo 'Nueva contraseña'." + +#, fuzzy +#~ msgid "External password changer reported a problem: %s." +#~ msgstr "" +#~ "El programa externo de cambio de contraseña informo de un problema: " + +#~ msgid "" +#~ "The password you've entered as your current password doesn't match the " +#~ "real one." +#~ msgstr "La contraseña introducida como contraseña actual no es correcta." + +#, fuzzy +#~ msgid "You have no permission to change your password." +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#~ msgid "User password" +#~ msgstr "Contraseña del usuario" + +#, fuzzy +#~ msgid "You have no permission to change your password at this time" +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#, fuzzy +#~ msgid "You have no permission to set your password!" +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#~ msgid "Generic user information" +#~ msgstr "Información genérica del usuario" + +#~ msgid "Certificate serial number" +#~ msgstr "Número de serie del certificado" + +#, fuzzy +#~ msgid "Edit organizational user settings" +#~ msgstr "Parámetros administrativos" + +#~ msgid "female" +#~ msgstr "mujer" + +#~ msgid "male" +#~ msgstr "hombre" + +#~ msgid "" +#~ "(Some types of certificates are currently not supported and may be " +#~ "displayed as 'invalid'.)" +#~ msgstr "" +#~ "(Algunos tipos de certificados no están soportados y pueden ser mostrados " +#~ "como no validos.)" + +#~ msgid "Certificate is valid from %s to %s and is currently %s." +#~ msgstr "El certificado es valido desde %s hasta %s y es actualmente %s." + +#~ msgid "valid" +#~ msgstr "válido" + +#~ msgid "invalid" +#~ msgstr "no válido" + +#~ msgid "No certificate installed" +#~ msgstr "No hay certificados instalados" + +#, fuzzy +#~ msgid "The selected password method is no longer available." +#~ msgstr "La aplicación ya no está disponible." + +#, fuzzy +#~ msgid "The selected password method requires initial configuration!" +#~ msgstr "La aplicación ya no está disponible." + +#~ msgid "Homepage" +#~ msgstr "Página Web" + +#, fuzzy +#~ msgid "Cannot open certificate!" +#~ msgstr "¡No puedo abrir el certificado especificado!" + +#~ msgid "Unit" +#~ msgstr "Unidad" + +#~ msgid "House identifier" +#~ msgstr "Tipo de Vía" + +#~ msgid "Vocation" +#~ msgstr "Profesión" + +#~ msgid "Last delivery" +#~ msgstr "Última dirección conocida" + +#~ msgid "Person locality" +#~ msgstr "Lugar de residencia" + +#~ msgid "Unit description" +#~ msgstr "Descripción de la unidad" + +#~ msgid "Subject area" +#~ msgstr "Área de desarrollo" + +#~ msgid "Functional title" +#~ msgstr "Función" + +#~ msgid "Public visible" +#~ msgstr "Visible por todos" + +#~ msgid "Street" +#~ msgstr "Calle" + +#~ msgid "Postal code" +#~ msgstr "Código Postal" + +#, fuzzy +#~ msgid "Surname" +#~ msgstr "Apellidos" + +#~ msgid "User identification" +#~ msgstr "Identificación de Usuario" + +#~ msgid "Personal title" +#~ msgstr "Título Personal" + +#~ msgid "Academic title" +#~ msgstr "Títulos académicos" + +#~ msgid "Date of birth" +#~ msgstr "Fecha de nacimiento" + +#~ msgid "Gender" +#~ msgstr "Sexo" + +#~ msgid "Preferred language" +#~ msgstr "Idioma preferido" + +#~ msgid "User picture" +#~ msgstr "Foto del usuario" + +#~ msgid "Department number" +#~ msgstr "Número del departamento" + +#~ msgid "Employee number" +#~ msgstr "Número de empleado" + +#~ msgid "Employee type" +#~ msgstr "Funciones laborales" + +#~ msgid "Room number" +#~ msgstr "Número de habitación" + +#~ msgid "Telefon number" +#~ msgstr "Número de teléfono" + +#~ msgid "Pager number" +#~ msgstr "Número del busca" + +#~ msgid "Mobile number" +#~ msgstr "Teléfono móvil" + +#~ msgid "Fax number" +#~ msgstr "Número de Fax" + +#~ msgid "Home postal address" +#~ msgstr "Dirección Postal personal" + +#~ msgid "Home phone number" +#~ msgstr "Número de teléfono personal" + +#, fuzzy +#~ msgid "User password method" +#~ msgstr "Contraseña" + +#~ msgid "User certificates" +#~ msgstr "Certificados de usuario" + +#, fuzzy +#~ msgid "Start import" +#~ msgstr "Inicio" + +#~ msgid "ICA client" +#~ msgstr "Cliente ICA" + +#~ msgid "show chooser" +#~ msgstr "mostrar selector" + +#~ msgid "direct" +#~ msgstr "directo" + +#~ msgid "load balanced" +#~ msgstr "balanceo de carga" diff --git a/trunk/gosa-plugins/goto/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/goto/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..5ff397fa6 --- /dev/null +++ b/trunk/gosa-plugins/goto/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,3860 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:31+0100\n" +"PO-Revision-Date: 2008-12-04 14:31+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/ogroups/goto/termgroup.tpl:2 admin/devices/remove.tpl:2 +#: admin/applications/remove.tpl:2 admin/mimetypes/remove.tpl:2 +#: admin/systems/ppd/remove_ppd.tpl:2 addons/goto/remove.tpl:2 +#: personal/environment/class_environment.inc:139 +#: personal/environment/class_environment.inc:307 +#: personal/environment/class_environment.inc:360 +#: personal/environment/class_environment.inc:364 +msgid "Warning" +msgstr "Avertissement" + +#: admin/ogroups/goto/termgroup.tpl:2 +msgid "" +"Actions you choose here influence all systems in this object group. " +"Additionally, all values editable here can be inherited by the clients " +"assigned to this object group." +msgstr "" +"Les actions que vous choisissez ici influencent tout les systèmes dans ce " +"groupe d'objet. De plus tout les valeurs éditables ici peuvent être hérité " +"par les clients assigné à ce groupe d'objets." + +#: admin/ogroups/goto/termgroup.tpl:6 +#: admin/devices/class_deviceGeneric.inc:251 +#: admin/applications/class_applicationGeneric.inc:597 +#: admin/mimetypes/generic.tpl:4 admin/mimetypes/paste_generic.tpl:4 +#: admin/mimetypes/class_mimetypeGeneric.inc:715 +#: admin/systems/goto/class_printGeneric.inc:920 +#: admin/systems/goto/class_workstationGeneric.inc:698 +msgid "Generic" +msgstr "Informations" + +#: admin/ogroups/goto/termgroup.tpl:14 +#: admin/ogroups/goto/class_termgroup.inc:145 +#: admin/systems/goto/workstation.tpl:95 +#: admin/systems/goto/class_workstationGeneric.inc:489 +#: admin/systems/goto/class_terminalGeneric.inc:480 +#: admin/systems/goto/terminal.tpl:117 +msgid "NTP server" +msgstr "Serveur NTP" + +#: admin/ogroups/goto/termgroup.tpl:17 admin/systems/goto/workstation.tpl:98 +#: admin/systems/goto/terminal.tpl:120 +msgid "Choose server to use for synchronizing time" +msgstr "Sélectionnez le serveur pour la synchronisation du temps" + +#: admin/ogroups/goto/termgroup.tpl:47 +#: admin/ogroups/goto/class_termgroup.inc:378 +#: admin/systems/goto/workstation.tpl:55 +#: admin/systems/goto/class_terminalGeneric.inc:669 +#: admin/systems/goto/terminal.tpl:47 +msgid "Mode" +msgstr "Mode" + +#: admin/ogroups/goto/termgroup.tpl:50 admin/systems/goto/workstation.tpl:58 +#: admin/systems/goto/terminal.tpl:50 +msgid "Select terminal mode" +msgstr "Sélectionnez le mode du terminal" + +#: admin/ogroups/goto/termgroup.tpl:58 +#: admin/ogroups/goto/class_termgroup.inc:379 +#: admin/systems/services/syslog/class_goSyslogServer.inc:27 +#: admin/systems/services/syslog/class_goSyslogServer.inc:47 +#: admin/systems/goto/workstation.tpl:65 +#: admin/systems/goto/class_workstationGeneric.inc:712 +#: admin/systems/goto/terminal.tpl:57 +msgid "Syslog server" +msgstr "Serveur de journaux systèmes" + +#: admin/ogroups/goto/termgroup.tpl:61 admin/systems/goto/workstation.tpl:68 +#: admin/systems/goto/terminal.tpl:60 +msgid "Choose server to use for logging" +msgstr "Sélectionnez le serveur de journaux à utiliser" + +#: admin/ogroups/goto/termgroup.tpl:69 +#: admin/ogroups/goto/class_termgroup.inc:382 +#: admin/systems/goto/class_terminalGeneric.inc:672 +#: admin/systems/goto/terminal.tpl:76 +msgid "Root server" +msgstr "Serveur Primaire" + +#: admin/ogroups/goto/termgroup.tpl:72 admin/systems/goto/terminal.tpl:79 +msgid "Select NFS root filesystem to use" +msgstr "Sélectionnez le système de fichier racine NFS à utiliser" + +#: admin/ogroups/goto/termgroup.tpl:79 +#: admin/ogroups/goto/class_termgroup.inc:383 +#: admin/systems/goto/class_terminalGeneric.inc:673 +#: admin/systems/goto/terminal.tpl:86 +msgid "Swap server" +msgstr "Serveur de Swap" + +#: admin/ogroups/goto/termgroup.tpl:82 admin/systems/goto/terminal.tpl:89 +msgid "Choose NFS filesystem to place swap files on" +msgstr "Sélectionnez le système de fichier NFS où sera placé le swap" + +#: admin/ogroups/goto/termgroup.tpl:110 admin/systems/goto/workstation.tpl:130 +#: admin/systems/goto/terminal.tpl:156 addons/goto/class_gotomasses.inc:415 +msgid "Action" +msgstr "Action" + +#: admin/ogroups/goto/termgroup.tpl:115 admin/systems/goto/workstation.tpl:137 +#: admin/systems/goto/terminal.tpl:161 +msgid "Select action to execute for this terminal" +msgstr "Sélectionnez l'opération à exécuter sur le terminal" + +#: admin/ogroups/goto/termgroup.tpl:123 admin/applications/generic.tpl:24 +#: admin/applications/class_applicationGeneric.inc:438 +#: admin/applications/class_applicationGeneric.inc:609 +#: admin/systems/goto/workstation.tpl:146 +#: admin/systems/goto/workstation.tpl:150 admin/systems/goto/terminal.tpl:169 +#: addons/goto/class_gotomasses.inc:383 +msgid "Execute" +msgstr "Exécuter" + +#: admin/ogroups/goto/class_termgroup.inc:48 +#: admin/systems/goto/class_workstationGeneric.inc:138 +#: admin/systems/goto/class_terminalGeneric.inc:122 +msgid "Activated" +msgstr "Activé" + +#: admin/ogroups/goto/class_termgroup.inc:49 +#: admin/systems/goto/class_workstationGeneric.inc:139 +#: admin/systems/goto/class_terminalGeneric.inc:121 +#: addons/goto/class_gotomasses.inc:538 +msgid "Locked" +msgstr "Verrouillé" + +#: admin/ogroups/goto/class_termgroup.inc:95 +#: admin/systems/goto/class_terminalGeneric.inc:281 +msgid "Local swap" +msgstr "swap locale" + +#: admin/ogroups/goto/class_termgroup.inc:101 +#: admin/ogroups/goto/class_termgroup.inc:113 +#: admin/systems/goto/class_terminalStartup.inc:116 +#: admin/systems/goto/class_terminalStartup.inc:120 +#: admin/systems/goto/class_terminalService.inc:175 +#: admin/systems/goto/class_terminalService.inc:256 +#: admin/systems/goto/class_terminalService.inc:264 +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_terminalService.inc:270 +#: admin/systems/goto/class_terminalService.inc:273 +#: admin/systems/goto/class_terminalService.inc:276 +#: admin/systems/goto/class_terminalService.inc:279 +#: admin/systems/goto/class_terminalService.inc:282 +#: admin/systems/goto/class_workstationGeneric.inc:154 +#: admin/systems/goto/class_workstationStartup.inc:180 +#: admin/systems/goto/class_workstationStartup.inc:210 +#: admin/systems/goto/class_workstationService.inc:191 +#: admin/systems/goto/class_workstationService.inc:194 +#: admin/systems/goto/class_workstationService.inc:197 +#: admin/systems/goto/class_workstationService.inc:200 +#: admin/systems/goto/class_workstationService.inc:203 +#: admin/systems/goto/class_workstationService.inc:206 +#: admin/systems/goto/class_workstationService.inc:209 +#: admin/systems/goto/class_workstationService.inc:220 +#: admin/systems/goto/class_workstationService.inc:221 +#: admin/systems/goto/class_workstationService.inc:222 +#: admin/systems/goto/class_workstationService.inc:223 +#: admin/systems/goto/class_workstationService.inc:224 +#: admin/systems/goto/class_workstationService.inc:225 +#: admin/systems/goto/class_workstationService.inc:226 +#: admin/systems/goto/class_terminalGeneric.inc:137 +#: admin/systems/goto/class_terminalGeneric.inc:287 +#: admin/systems/goto/class_terminalGeneric.inc:299 +msgid "inherited" +msgstr "hérité" + +#: admin/ogroups/goto/class_termgroup.inc:203 +#: admin/systems/goto/class_terminalService.inc:666 +#: admin/systems/goto/class_workstationGeneric.inc:212 +#: admin/systems/goto/class_workstationGeneric.inc:635 +#: admin/systems/goto/class_workstationStartup.inc:926 +#: admin/systems/goto/class_workstationStartup.inc:1053 +#: admin/systems/goto/class_workstationStartup.inc:1113 +#: admin/systems/goto/class_workstationService.inc:554 +#: admin/systems/goto/class_terminalGeneric.inc:187 +#: admin/systems/goto/class_terminalGeneric.inc:594 +#: addons/goto/class_gotomasses.inc:328 +#: addons/goto/class_goto_import_file.inc:124 +msgid "Service infrastructure" +msgstr "Infrastructure des services" + +#: admin/ogroups/goto/class_termgroup.inc:207 +#: admin/systems/goto/class_workstationGeneric.inc:216 +#: admin/systems/goto/class_terminalGeneric.inc:191 +msgid "Event error" +msgstr "Erreur Evénement " + +#: admin/ogroups/goto/class_termgroup.inc:208 +#: admin/systems/goto/class_workstationGeneric.inc:217 +#: admin/systems/goto/class_terminalGeneric.inc:192 +#, php-format +msgid "Event '%s' is not available!" +msgstr "L'événement '%s' n'est pas disponible !" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:265 +#: addons/goto/events/class_DaemonEvent_halt.inc:31 +#: addons/goto/events/class_DaemonEvent_halt.inc:32 +msgid "Switch off" +msgstr "Eteindre" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:266 +#: addons/goto/events/class_DaemonEvent_reboot.inc:29 +#: addons/goto/events/class_DaemonEvent_reboot.inc:30 +msgid "Reboot" +msgstr "Redémarrer" + +#: admin/ogroups/goto/class_termgroup.inc:258 +msgid "Instant update" +msgstr "Mise à jour immédiate" + +#: admin/ogroups/goto/class_termgroup.inc:259 +msgid "Scheduled update" +msgstr "Mise à jour programmée" + +#: admin/ogroups/goto/class_termgroup.inc:260 +msgid "Wake" +msgstr "Réveiller" + +#: admin/ogroups/goto/class_termgroup.inc:261 +#: admin/systems/goto/class_workstationGeneric.inc:300 +#: admin/systems/goto/class_workstationGeneric.inc:308 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:32 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:33 +msgid "Reinstall" +msgstr "Reinstaller" + +#: admin/ogroups/goto/class_termgroup.inc:262 +#: admin/systems/goto/class_workstationGeneric.inc:301 +#: addons/goto/events/class_DaemonEvent_rescan.inc:28 +#: addons/goto/events/class_DaemonEvent_rescan.inc:29 +msgid "Rescan hardware" +msgstr "Recherche du matériel" + +#: admin/ogroups/goto/class_termgroup.inc:263 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:28 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:29 +msgid "Memory test" +msgstr "Test mémoire" + +#: admin/ogroups/goto/class_termgroup.inc:264 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:28 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:29 +msgid "System analysis" +msgstr "Analyse du système" + +#: admin/ogroups/goto/class_termgroup.inc:362 +#: admin/groups/apps/class_groupApplication.inc:649 +#: admin/groups/apps/class_groupApplication.inc:1330 +#: admin/groups/apps/class_groupApplication.inc:1344 +#: admin/groups/apps/class_groupApplication.inc:1358 +#: admin/devices/class_deviceGeneric.inc:196 +#: admin/applications/class_applicationParameters.inc:161 +#: admin/applications/class_applicationParameters.inc:224 +#: admin/applications/class_applicationGeneric.inc:271 +#: admin/applications/class_applicationGeneric.inc:285 +#: admin/applications/class_applicationGeneric.inc:515 +#: admin/mimetypes/class_mimetypeGeneric.inc:494 +#: admin/mimetypes/class_mimetypeGeneric.inc:506 +#: admin/mimetypes/class_mimetypeGeneric.inc:521 +#: admin/systems/services/kiosk/class_goKioskService.inc:249 +#: admin/systems/services/ldap/class_goLdapServer.inc:117 +#: admin/systems/services/ntp/class_goNtpServer.inc:98 +#: admin/systems/services/terminal/class_goTerminalServer.inc:103 +#: admin/systems/services/shares/class_goShareServer.inc:192 +#: admin/systems/services/shares/class_goShareServer.inc:261 +#: admin/systems/services/shares/class_goShareServer.inc:277 +#: admin/systems/services/shares/class_goShareServer.inc:290 +#: admin/systems/goto/class_printGeneric.inc:601 +#: admin/systems/goto/class_printGeneric.inc:885 +#: admin/systems/goto/class_terminalStartup.inc:455 +#: admin/systems/goto/class_ArpNewDevice.inc:69 +#: admin/systems/goto/class_terminalService.inc:590 +#: admin/systems/goto/class_workstationGeneric.inc:364 +#: admin/systems/goto/class_workstationGeneric.inc:596 +#: admin/systems/goto/class_workstationGeneric.inc:613 +#: admin/systems/goto/class_workstationStartup.inc:877 +#: admin/systems/goto/class_workstationService.inc:447 +#: admin/systems/goto/class_terminalGeneric.inc:353 +#: admin/systems/goto/class_terminalGeneric.inc:580 +#: personal/environment/class_environment.inc:1058 +#: personal/environment/class_environment.inc:1315 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/ogroups/goto/class_termgroup.inc:370 +msgid "System" +msgstr "Système" + +#: admin/ogroups/goto/class_termgroup.inc:371 +msgid "System group" +msgstr "Groupe système" + +#: admin/ogroups/goto/class_termgroup.inc:380 +#: admin/systems/goto/class_workstationGeneric.inc:716 +#: admin/systems/goto/class_terminalGeneric.inc:678 +msgid "Action flag" +msgstr "Indicateur d'action" + +#: admin/ogroups/goto/class_termgroup.inc:381 +#: admin/systems/goto/class_workstationGeneric.inc:713 +msgid "Ntp server" +msgstr "Serveur NTP" + +#: admin/groups/apps/edit_entry.tpl:8 +msgid "Folder image" +msgstr "Dossier image" + +#: admin/groups/apps/edit_entry.tpl:12 +msgid "Could not load image." +msgstr "Impossible de charger l'image." + +#: admin/groups/apps/edit_entry.tpl:14 +#: admin/systems/goto/class_gotoLpdEnabled.inc:58 +msgid "None" +msgstr "aucun" + +#: admin/groups/apps/edit_entry.tpl:24 +msgid "Upload image" +msgstr "Télécharger une image" + +#: admin/groups/apps/edit_entry.tpl:28 admin/applications/generic.tpl:142 +#: admin/systems/ppd/printerPPDDialog.tpl:21 +#: addons/goto/goto_import_file.tpl:25 +msgid "Upload" +msgstr "Télécharger" + +#: admin/groups/apps/edit_entry.tpl:32 +msgid "Reset image" +msgstr "Réinitialiser l'image" + +#: admin/groups/apps/edit_entry.tpl:33 +msgid "Reset" +msgstr "Réinitialiser" + +#: admin/groups/apps/edit_entry.tpl:40 +#: admin/applications/class_applicationGeneric.inc:557 +msgid "Application settings" +msgstr "Préférences de l'application" + +#: admin/groups/apps/edit_entry.tpl:43 +#: admin/devices/class_deviceGeneric.inc:90 +#: admin/devices/class_deviceGeneric.inc:114 +#: admin/devices/class_deviceGeneric.inc:260 +#: admin/applications/class_applicationParameters.inc:193 +#: admin/applications/class_applicationGeneric.inc:430 +#: admin/applications/class_applicationGeneric.inc:434 +#: admin/applications/class_applicationGeneric.inc:606 +#: admin/applications/class_applicationGeneric.inc:610 +#: admin/mimetypes/class_mimetypeGeneric.inc:532 +#: admin/mimetypes/class_mimetypeGeneric.inc:724 +#: admin/systems/services/shares/class_goShareServer.inc:398 +#: admin/systems/services/nfs/class_servNfs.inc:199 +#: admin/systems/services/nfs/class_servNfs.inc:202 +#: admin/systems/services/nfs/class_servNfs.inc:235 +#: admin/systems/services/nfs/servnfs.tpl:9 +#: admin/systems/goto/class_printGeneric.inc:670 +#: admin/systems/goto/class_printGeneric.inc:675 +#: admin/systems/goto/class_printGeneric.inc:694 +#: admin/systems/goto/class_printGeneric.inc:929 +#: admin/systems/goto/class_ArpNewDevice.inc:46 +#: admin/systems/goto/class_workstationGeneric.inc:456 +#: admin/systems/goto/class_workstationGeneric.inc:461 +#: admin/systems/goto/class_workstationGeneric.inc:479 +#: admin/systems/goto/class_terminalGeneric.inc:446 +#: admin/systems/goto/class_terminalGeneric.inc:451 +#: admin/systems/goto/class_terminalGeneric.inc:470 +#: admin/systems/goto/class_terminalGeneric.inc:665 +#: personal/environment/class_logonManagementDialog.inc:103 +msgid "Name" +msgstr "Nom" + +#: admin/groups/apps/edit_entry.tpl:53 +msgid "Application options" +msgstr "Options des applications" + +#: admin/groups/apps/class_groupApplication.inc:381 +#: admin/groups/apps/class_groupApplication.inc:385 +msgid "Menu" +msgstr "Menu" + +#: admin/groups/apps/class_groupApplication.inc:439 +msgid "Back" +msgstr "Retour" + +#: admin/groups/apps/class_groupApplication.inc:450 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:147 +msgid "back" +msgstr "retour" + +#: admin/groups/apps/class_groupApplication.inc:458 +msgid "department" +msgstr "département" + +#: admin/groups/apps/class_groupApplication.inc:481 +#: admin/applications/class_applicationManagement.inc:368 +#: admin/applications/class_applicationManagement.inc:449 +#: admin/applications/class_applicationGeneric.inc:127 +msgid "application" +msgstr "application" + +#: admin/groups/apps/class_groupApplication.inc:1146 +msgid "Not available in release." +msgstr "Non disponible dans cette version." + +#: admin/groups/apps/class_groupApplication.inc:1373 +#: admin/applications/class_applicationManagement.inc:24 +#: admin/mimetypes/generic.tpl:117 admin/mimetypes/generic.tpl:177 +msgid "Applications" +msgstr "Applications" + +#: admin/groups/apps/class_groupApplication.inc:1374 +msgid "Group applications" +msgstr "Groupe d'applications" + +#: admin/groups/apps/class_groupApplication.inc:1381 +#: admin/applications/class_divListApplication.inc:114 +#: admin/applications/class_divListApplication.inc:150 +#: admin/applications/class_applicationGeneric.inc:603 +#: admin/mimetypes/class_mimetypeGeneric.inc:728 +msgid "Application" +msgstr "Applications" + +#: admin/groups/apps/class_groupApplication.inc:1382 +#: admin/groups/apps/app_list.tpl:5 admin/groups/apps/app_list.tpl:53 +#: admin/systems/goto/workstationStartup.tpl:83 +#: admin/systems/goto/workstationStartup.tpl:123 +msgid "Release" +msgstr "Version" + +#: admin/groups/apps/class_groupApplication.inc:1383 +msgid "Application parameter" +msgstr "Paramètre de l'application" + +#: admin/groups/apps/app_list.tpl:11 +msgid "Copy menu" +msgstr "" + +#: admin/groups/apps/app_list.tpl:13 +msgid "Paste menu from" +msgstr "Coller le menu depuis" + +#: admin/groups/apps/app_list.tpl:17 +msgid "Delete menu" +msgstr "Effacer le menu" + +#: admin/groups/apps/app_list.tpl:70 admin/groups/apps/app_list.tpl:74 +msgid "Folder" +msgstr "Dossier" + +#: admin/groups/apps/app_list.tpl:82 admin/groups/apps/app_list.tpl:103 +#: admin/groups/apps/app_list.tpl:128 addons/goto/class_gotomasses.inc:432 +msgid "Move up" +msgstr "En haut" + +#: admin/groups/apps/app_list.tpl:84 admin/groups/apps/app_list.tpl:105 +#: admin/groups/apps/app_list.tpl:130 addons/goto/class_gotomasses.inc:434 +msgid "Move down" +msgstr "En bas" + +#: admin/groups/apps/app_list.tpl:86 admin/groups/apps/app_list.tpl:107 +#: admin/groups/apps/app_list.tpl:132 +#: admin/devices/class_divListDevices.inc:100 +#: admin/applications/class_applicationParameters.inc:125 +#: admin/applications/class_divListApplication.inc:120 +#: admin/mimetypes/class_divListMimeTypes.inc:122 +#: admin/systems/goto/terminalService.tpl:212 +#: admin/systems/goto/terminalStartup.tpl:115 +#: admin/systems/goto/workstationStartup.tpl:233 +#: admin/systems/goto/printer.tpl:71 addons/goto/class_gotomasses.inc:269 +#: addons/goto/class_gotomasses.inc:376 addons/goto/class_gotomasses.inc:484 +#: addons/goto/class_gotomasses.inc:488 +#: addons/goto/events/class_DaemonEvent.inc:230 +#: personal/environment/environment.tpl:238 +msgid "Remove" +msgstr "Supprimer" + +#: admin/groups/apps/app_list.tpl:88 admin/groups/apps/app_list.tpl:134 +#: admin/systems/services/shares/goShareServer.tpl:17 +#: admin/systems/goto/printer.tpl:68 addons/goto/class_gotomasses.inc:469 +#: personal/environment/environment.tpl:274 +msgid "Edit" +msgstr "Editer" + +#: admin/groups/apps/app_list.tpl:121 +msgid "Entry" +msgstr "Entrée" + +#: admin/groups/apps/app_list.tpl:143 +msgid "add to" +msgstr "Ajouter à" + +#: admin/groups/apps/app_list.tpl:149 admin/groups/apps/app_list.tpl:159 +msgid "Add selected applications to this folder." +msgstr "Ajouter les applications sélectionnées dans ce dossier." + +#: admin/groups/apps/app_list.tpl:150 +msgid "Separator" +msgstr "Séparateur" + +#: admin/groups/apps/app_list.tpl:150 +msgid "Add a separator to this folder." +msgstr "Ajouter un séparateur à ce dossier." + +#: admin/devices/class_divListDevices.inc:33 +#: admin/devices/class_divListDevices.inc:34 +msgid "List of defined devices" +msgstr "Liste des périphériques définis" + +#: admin/devices/class_divListDevices.inc:45 +#: admin/applications/class_divListApplication.inc:45 +#: admin/mimetypes/class_divListMimeTypes.inc:45 +msgid "Select all" +msgstr "Sélectionner tout" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/devices/deviceGeneric.tpl:20 admin/devices/paste_deviceGeneric.tpl:9 +msgid "Device name" +msgstr "Nom du périphérique" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/applications/class_divListApplication.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +msgid "Department" +msgstr "Département" + +#: admin/devices/class_divListDevices.inc:52 +#: admin/devices/class_divListDevices.inc:87 +#: admin/applications/class_divListApplication.inc:52 +#: admin/applications/class_divListApplication.inc:107 +#: admin/mimetypes/class_divListMimeTypes.inc:52 +#: admin/mimetypes/class_divListMimeTypes.inc:109 +#: addons/goto/class_gotomasses.inc:365 +msgid "Actions" +msgstr "Actions" + +#: admin/devices/class_divListDevices.inc:58 +msgid "Display devices matching" +msgstr "Afficher les périphériques correspondants" + +#: admin/devices/class_divListDevices.inc:82 admin/devices/deviceGeneric.tpl:9 +#: admin/devices/class_deviceGeneric.inc:261 admin/applications/generic.tpl:42 +#: admin/applications/class_divListApplication.inc:90 +#: admin/applications/class_applicationGeneric.inc:607 +#: admin/mimetypes/generic.tpl:44 +#: admin/mimetypes/class_divListMimeTypes.inc:93 +#: admin/mimetypes/class_mimetypeGeneric.inc:727 +#: admin/systems/services/ldap/class_goLdapServer.inc:79 +#: admin/systems/services/ldap/class_goLdapServer.inc:82 +#: admin/systems/goto/workstation.tpl:35 +#: admin/systems/goto/class_printGeneric.inc:930 +#: admin/systems/goto/class_workstationGeneric.inc:710 +#: admin/systems/goto/class_terminalGeneric.inc:667 +#: admin/systems/goto/printer.tpl:27 admin/systems/goto/terminal.tpl:27 +#: addons/goto/class_target_list.inc:152 addons/goto/goto_import_file.tpl:41 +#: addons/goto/events/class_EventTargetAddList.inc:161 +#: addons/goto/events/class_EventTargetAddUsersList.inc:130 +msgid "Base" +msgstr "Base" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit department" +msgstr "Soumettre le département" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit" +msgstr "Soumettre" + +#: admin/devices/class_divListDevices.inc:92 +#: admin/applications/class_divListApplication.inc:111 +#: admin/mimetypes/class_divListMimeTypes.inc:114 +#: admin/systems/goto/chooser.tpl:16 addons/goto/class_gotomasses.inc:366 +msgid "Create" +msgstr "Créer" + +#: admin/devices/class_divListDevices.inc:94 +#: admin/devices/class_divListDevices.inc:131 +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/systems/goto/gotoLpdEnable.tpl:27 +#: admin/systems/goto/gotoLpdEnable.tpl:63 +msgid "Device" +msgstr "Périphérique" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "edit" +msgstr "éditer" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "Edit this entry" +msgstr "Editer cette entrée" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:136 +msgid "delete" +msgstr "supprimer" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +msgid "Delete this entry" +msgstr "Supprimer cette entrée" + +#: admin/devices/class_divListDevices.inc:205 +msgid "Number of listed devices" +msgstr "Nombre de périphériques listés" + +#: admin/devices/class_divListDevices.inc:206 +#: admin/applications/class_divListApplication.inc:243 +#: admin/mimetypes/class_divListMimeTypes.inc:244 +msgid "Number of listed departments" +msgstr "Nombre de département listés" + +#: admin/devices/remove.tpl:6 +msgid "" +"This may be used by several users/groups. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Cela peut être utilisé par plusieurs utilisateurs/groupes. Veuillez vérifier " +"que vous voulez effectuer cette opération étant donné qu'il est impossible " +"pour GOsa de récupérer vos données." + +#: admin/devices/remove.tpl:9 admin/applications/remove.tpl:9 +#: admin/mimetypes/remove.tpl:9 addons/goto/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"D'accord - si vous êtes sur - cliquez sur 'Supprimer' pour continuer ou sur " +"'Annuler' pour abandonner." + +#: admin/devices/deviceGeneric.tpl:2 admin/devices/paste_deviceGeneric.tpl:2 +#: admin/devices/class_deviceGeneric.inc:257 +msgid "Devices" +msgstr "Périphériques" + +#: admin/devices/deviceGeneric.tpl:29 admin/devices/class_deviceGeneric.inc:93 +#: admin/devices/class_deviceGeneric.inc:262 admin/applications/generic.tpl:33 +#: admin/applications/class_applicationGeneric.inc:608 +#: admin/mimetypes/generic.tpl:34 admin/mimetypes/paste_generic.tpl:21 +#: admin/mimetypes/class_mimetypeGeneric.inc:726 +#: admin/systems/services/shares/class_goShareServer.inc:400 +#: admin/systems/services/nfs/class_servNfs.inc:207 +#: admin/systems/services/nfs/servnfs.tpl:19 +#: admin/systems/goto/workstation.tpl:19 +#: admin/systems/goto/ArpNewDevice.tpl:17 +#: admin/systems/goto/class_printGeneric.inc:931 +#: admin/systems/goto/class_workstationGeneric.inc:708 +#: admin/systems/goto/class_terminalGeneric.inc:666 +#: admin/systems/goto/printer.tpl:16 admin/systems/goto/terminal.tpl:19 +#: addons/goto/class_gotomasses.inc:917 +#: personal/environment/class_logonManagementDialog.inc:111 +#: personal/environment/logonManagement.tpl:17 +msgid "Description" +msgstr "Description" + +#: admin/devices/deviceGeneric.tpl:38 +msgid "Device type" +msgstr "Type de périphérique" + +#: admin/devices/deviceGeneric.tpl:42 +msgid "Choose the device type" +msgstr "Choisissez le type de périphérique" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "Serial number" +msgstr "Numéro de série" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "(iSerial)" +msgstr "(ISérie)" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "Vendor-ID" +msgstr "ID du vendeur" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "(idVendor)" +msgstr "(Idvendeur)" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "Product-ID" +msgstr "ID du produit" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "(idProduct)" +msgstr "(Idproduit)" + +#: admin/devices/main.inc:49 admin/devices/main.inc:51 +msgid "Hotplug device management" +msgstr "Gestion des périphériques Hotplug" + +#: admin/devices/class_deviceGeneric.inc:29 +msgid "Digital camera" +msgstr "Appareil photo numérique" + +#: admin/devices/class_deviceGeneric.inc:30 +msgid "USB stick" +msgstr "Clé USB" + +#: admin/devices/class_deviceGeneric.inc:31 +msgid "CD/DVD drive" +msgstr "Lecteur de CD / DVD" + +#: admin/devices/class_deviceGeneric.inc:98 +#: admin/devices/class_deviceGeneric.inc:100 +msgid "iSerial" +msgstr "ISérie" + +#: admin/devices/class_deviceGeneric.inc:103 +#: admin/devices/class_deviceGeneric.inc:264 +#: admin/systems/goto/class_gotoLpdEnabled.inc:51 +msgid "Serial" +msgstr "Série" + +#: admin/devices/class_deviceGeneric.inc:106 +msgid "Vendor ID" +msgstr "ID du vendeur" + +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/applications/class_applicationGeneric.inc:264 +#: admin/applications/class_applicationGeneric.inc:338 +#: admin/applications/class_applicationGeneric.inc:370 +#: admin/applications/class_applicationGeneric.inc:375 +#: admin/applications/class_applicationGeneric.inc:380 +#: admin/applications/class_applicationGeneric.inc:384 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: admin/systems/services/kiosk/class_goKioskService.inc:161 +#: admin/systems/services/kiosk/class_goKioskService.inc:164 +#: admin/systems/services/kiosk/class_goKioskService.inc:234 +#: admin/systems/services/shares/class_goShareServer.inc:98 +#: admin/systems/services/shares/class_goShareServer.inc:233 +#: admin/systems/services/nfs/class_servNfs.inc:43 +#: admin/systems/services/nfs/class_servNfs.inc:46 +#: admin/systems/goto/class_printGeneric.inc:435 +#: admin/systems/goto/class_printGeneric.inc:482 +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#: admin/systems/goto/class_printGeneric.inc:1008 +#: admin/systems/goto/class_printGeneric.inc:1019 +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:234 +#: admin/systems/goto/class_workstationStartup.inc:247 +#: admin/systems/goto/class_workstationStartup.inc:324 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#: addons/goto/class_gotoLogView.inc:57 addons/goto/class_gotoLogView.inc:175 +#: addons/goto/class_gotomasses.inc:174 addons/goto/class_gotomasses.inc:524 +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:691 +#: addons/goto/class_gotomasses.inc:735 addons/goto/class_gotomasses.inc:739 +#: addons/goto/class_gotomasses.inc:775 addons/goto/class_gotomasses.inc:816 +#: personal/environment/class_environment.inc:591 +#: personal/environment/class_environment.inc:673 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#: personal/environment/class_environment.inc:841 +#: personal/environment/class_environment.inc:892 +#: personal/environment/class_environment.inc:988 +msgid "Error" +msgstr "Erreur" + +#: admin/devices/class_deviceGeneric.inc:252 +msgid "Device generic" +msgstr "Information du périphérique" + +#: admin/devices/class_deviceGeneric.inc:252 +msgid "Hotplug" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:263 +#: admin/systems/services/shares/class_goShareServer.inc:401 +#: admin/systems/services/nfs/class_servNfs.inc:193 +#: admin/systems/services/nfs/servnfs.tpl:56 +#: admin/systems/goto/terminalService.tpl:48 +#: admin/systems/goto/terminalService.tpl:138 +#: admin/systems/goto/workstationService.tpl:54 +#: admin/systems/goto/workstationService.tpl:156 +#: admin/systems/goto/gotoLpdEnable.tpl:53 +msgid "Type" +msgstr "Type" + +#: admin/devices/class_deviceGeneric.inc:265 +msgid "Vendor" +msgstr "Vendeur" + +#: admin/devices/class_deviceGeneric.inc:266 +msgid "Device ID" +msgstr "ID du périphérique" + +#: admin/devices/class_deviceManagement.inc:7 +#: personal/environment/class_environment.inc:1783 +#: personal/environment/environment.tpl:293 +msgid "Hotplug devices" +msgstr "Périphériques Hotplug" + +#: admin/devices/class_deviceManagement.inc:8 +msgid "Manage hotplug devices" +msgstr "Gérer les périphériques hotplug" + +#: admin/devices/class_deviceManagement.inc:246 +#: admin/applications/class_applicationManagement.inc:352 +#: admin/mimetypes/class_mimetypeManagement.inc:360 +#: addons/goto/class_gotomasses.inc:230 +msgid "Permission" +msgstr "Permissions" + +#: admin/devices/class_deviceManagement.inc:263 +#: admin/devices/class_deviceManagement.inc:345 +msgid "device" +msgstr "périphérique" + +#: admin/devices/class_deviceManagement.inc:296 +#: admin/devices/class_deviceManagement.inc:352 +#: admin/devices/class_deviceManagement.inc:381 +#: admin/applications/class_applicationManagement.inc:401 +#: admin/applications/class_applicationManagement.inc:456 +#: admin/applications/class_applicationManagement.inc:487 +#: admin/mimetypes/class_mimetypeManagement.inc:412 +#: admin/mimetypes/class_mimetypeManagement.inc:466 +#: admin/mimetypes/class_mimetypeManagement.inc:496 +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#: personal/environment/class_environment.inc:583 +msgid "Permission error" +msgstr "Erreur de permissions" + +#: admin/applications/remove.tpl:6 admin/mimetypes/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Cela peut être utilisé par plusieurs groupes. Veuillez vérifier que vous " +"voulez effectuer cette opération étant donné qu'il est impossible pour GOsa " +"de récupérer vos données." + +#: admin/applications/release_select.tpl:2 +#: admin/mimetypes/release_select.tpl:2 +msgid "Branches" +msgstr "Branches" + +#: admin/applications/release_select.tpl:8 +#: admin/mimetypes/release_select.tpl:8 +msgid "Current release" +msgstr "Version actuelle" + +#: admin/applications/class_applicationParameters.inc:53 +msgid "Remove options" +msgstr "Supprimer les options" + +#: admin/applications/class_applicationParameters.inc:53 +#: admin/applications/class_applicationParameters.inc:55 +msgid "parameter" +msgstr "paramètre" + +#: admin/applications/class_applicationParameters.inc:55 +msgid "Create options" +msgstr "Créer des options" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Variable" +msgstr "Variable" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Default value" +msgstr "Valeur par défaut" + +#: admin/applications/class_applicationParameters.inc:131 +msgid "Add option" +msgstr "Ajouter une option" + +#: admin/applications/class_applicationParameters.inc:236 +msgid "Parameter" +msgstr "Paramètres" + +#: admin/applications/class_applicationParameters.inc:237 +msgid "Parameter configuration" +msgstr "Configuration des paramètres" + +#: admin/applications/class_applicationParameters.inc:245 +msgid "Application parameter settings" +msgstr "Préférences de l'application" + +#: admin/applications/generic.tpl:7 admin/applications/generic.tpl:10 +#: admin/applications/class_divListApplication.inc:51 +#: admin/applications/class_applicationGeneric.inc:561 +msgid "Application name" +msgstr "Nom de l'application" + +#: admin/applications/generic.tpl:15 +msgid "Display name" +msgstr "Nom à afficher" + +#: admin/applications/generic.tpl:19 +#: admin/applications/class_applicationGeneric.inc:566 +msgid "Application name to be displayed (i.e. below icons)" +msgstr "Le nom de l'application à afficher (ex: en dessous des icônes)" + +#: admin/applications/generic.tpl:28 +msgid "Path and/or binary name of application" +msgstr "Chemin et/ou le nom de l'exécutable de l'application" + +#: admin/applications/generic.tpl:45 admin/mimetypes/generic.tpl:47 +msgid "Choose subtree to place application in" +msgstr "" +"Sélectionner la branche de l'annuaire ou sera placée l'entrée de " +"l'application" + +#: admin/applications/generic.tpl:52 admin/mimetypes/generic.tpl:53 +#: admin/systems/goto/workstation.tpl:43 admin/systems/goto/printer.tpl:35 +#: admin/systems/goto/terminal.tpl:36 +msgid "Select a base" +msgstr "Sélectionnez une base" + +#: admin/applications/generic.tpl:66 +#: admin/applications/class_applicationGeneric.inc:611 +#: admin/mimetypes/generic.tpl:67 +#: admin/mimetypes/class_mimetypeGeneric.inc:730 +msgid "Icon" +msgstr "Icône" + +#: admin/applications/generic.tpl:82 admin/mimetypes/generic.tpl:84 +msgid "Update" +msgstr "Mise à Jour" + +#: admin/applications/generic.tpl:82 +msgid "Reload picture from LDAP" +msgstr "Recharger l'image à partir de l'annuaire LDAP" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture" +msgstr "Suppression de l'image personnelle" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture from LDAP" +msgstr "Effacer l'image de l'annuaire LDAP" + +#: admin/applications/generic.tpl:96 +#: admin/systems/goto/class_gotoLpdEnabled.inc:156 +#: admin/systems/goto/gotoLpdEnable.tpl:79 +#: admin/systems/ppd/printerPPDDialog.tpl:28 +msgid "Options" +msgstr "Options" + +#: admin/applications/generic.tpl:103 +#: admin/applications/class_applicationGeneric.inc:614 +msgid "Only executable for members" +msgstr "Exécutable uniquement par les membres" + +#: admin/applications/generic.tpl:108 +#: admin/applications/class_applicationGeneric.inc:618 +msgid "Replace user configuration on startup" +msgstr "Remplacer la configuration de l'utilisateur au démarrage" + +#: admin/applications/generic.tpl:114 +#: admin/applications/class_applicationGeneric.inc:615 +msgid "Place icon on members desktop" +msgstr "Placer une icône sur le bureau des membres" + +#: admin/applications/generic.tpl:119 +#: admin/applications/class_applicationGeneric.inc:617 +msgid "Place entry in members startmenu" +msgstr "Placer une entrée dans le menu démarrage des membres" + +#: admin/applications/generic.tpl:124 +#: admin/applications/class_applicationGeneric.inc:616 +msgid "Place entry in members launch bar" +msgstr "Placer une entrée dans le menu démarrage des membres" + +#: admin/applications/generic.tpl:134 +#: personal/environment/logonManagement.tpl:55 +msgid "Script" +msgstr "Script" + +#: admin/applications/generic.tpl:139 addons/goto/goto_import_file.tpl:84 +#: addons/goto/class_gotomasses.inc:375 +#: addons/goto/class_goto_import_file.inc:29 +#: addons/goto/class_goto_import_file.inc:89 +#: addons/goto/class_goto_import_file.inc:131 +#: personal/environment/logonManagement.tpl:65 +msgid "Import" +msgstr "Importer" + +#: admin/applications/generic.tpl:144 +msgid "Download" +msgstr "Téléchargement" + +#: admin/applications/class_applicationManagement.inc:25 +#: personal/environment/class_environment.inc:10 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: admin/applications/class_divListApplication.inc:25 +msgid "List of Applications" +msgstr "Liste des applications" + +#: admin/applications/class_divListApplication.inc:26 +msgid "This table displays all applications in the selected tree." +msgstr "Ce tableau montre toutes les applications dans l'arbre sélectionné." + +#: admin/applications/class_divListApplication.inc:58 +#: personal/environment/hotplugDialog.tpl:43 +msgid "Display users matching" +msgstr "Afficher les utilisateurs correspondants" + +#: admin/applications/class_divListApplication.inc:199 +#: admin/mimetypes/class_divListMimeTypes.inc:198 +msgid "Freezed" +msgstr "Gelée" + +#: admin/applications/class_divListApplication.inc:242 +msgid "Number of listed applications" +msgstr "Nombre d'applications listées" + +#: admin/applications/main.inc:48 admin/applications/main.inc:50 +msgid "Application management" +msgstr "Gestion des applications" + +#: admin/applications/class_applicationGeneric.inc:95 +msgid "no example" +msgstr "pas d'exemple" + +#: admin/applications/class_applicationGeneric.inc:264 +#, php-format +msgid "Cannot remove application - it is still in use by these objects: %s" +msgstr "" +"Impossible d'enlever l'application ,elle est encore utilisée par ce(s) " +"objets : %s" + +#: admin/applications/class_applicationGeneric.inc:370 +msgid "no read permission" +msgstr "Pas de permissions en lecture" + +#: admin/applications/class_applicationGeneric.inc:375 +msgid "cannot resize image" +msgstr "Impossible de redimensionner l'image" + +#: admin/applications/class_applicationGeneric.inc:380 +msgid "cannot convert image" +msgstr "impossible de convertir l'image" + +#: admin/applications/class_applicationGeneric.inc:384 +#, php-format +msgid "cannot save image to '%s'" +msgstr "Impossible de sauver l'image dans '%s'" + +#: admin/applications/class_applicationGeneric.inc:413 +msgid "Execute path" +msgstr "Chemin d'exécution" + +#: admin/applications/class_applicationGeneric.inc:598 +msgid "Application generic" +msgstr "Information des applications" + +#: admin/applications/class_applicationGeneric.inc:612 +msgid "Script content" +msgstr "Contenu du script" + +#: admin/mimetypes/class_mimetypeManagement.inc:24 +#: admin/mimetypes/class_mimetypeGeneric.inc:721 +msgid "Mime types" +msgstr "Types mime" + +#: admin/mimetypes/class_mimetypeManagement.inc:25 +msgid "Manage mime types" +msgstr "Gérer les types mime" + +#: admin/mimetypes/class_mimetypeManagement.inc:378 +#: admin/mimetypes/class_mimetypeManagement.inc:459 +#: admin/mimetypes/generic.tpl:12 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:116 +#: admin/mimetypes/class_divListMimeTypes.inc:152 +#: admin/mimetypes/paste_generic.tpl:13 +msgid "Mime type" +msgstr "Type mime" + +#: admin/mimetypes/generic.tpl:16 admin/mimetypes/paste_generic.tpl:16 +msgid "Please enter a name for the mime type here" +msgstr "Veuillez entrer un nom pour le type mime" + +#: admin/mimetypes/generic.tpl:22 +#: admin/mimetypes/class_mimetypeGeneric.inc:725 +msgid "Mime group" +msgstr "Groupe de type mime" + +#: admin/mimetypes/generic.tpl:26 +msgid "Categorize this mime type" +msgstr "Mettre ce type mime dans une catégorie" + +#: admin/mimetypes/generic.tpl:38 +msgid "Please specify a description" +msgstr "Veuillez indiquer une description" + +#: admin/mimetypes/generic.tpl:69 admin/mimetypes/generic.tpl:72 +msgid "Mime icon" +msgstr "Icône mime" + +#: admin/mimetypes/generic.tpl:85 +msgid "Update mime type icon" +msgstr "Mettre à jour l'icône mime" + +#: admin/mimetypes/generic.tpl:99 +msgid "Left click" +msgstr "Clic gauche" + +#: admin/mimetypes/generic.tpl:104 +#: admin/mimetypes/class_mimetypeGeneric.inc:731 +msgid "File patterns" +msgstr "Filtres des fichiers" + +#: admin/mimetypes/generic.tpl:110 +msgid "Please specify a new file pattern" +msgstr "Veuillez indiquer un nouveau filtre de fichiers" + +#: admin/mimetypes/generic.tpl:113 +msgid "Add a new file pattern" +msgstr "Ajouter un nouveau filtre de fichier" + +#: admin/mimetypes/generic.tpl:129 admin/mimetypes/generic.tpl:189 +msgid "Enter an application name here" +msgstr "Nom de l'application" + +#: admin/mimetypes/generic.tpl:132 admin/mimetypes/generic.tpl:193 +msgid "Add application" +msgstr "Ajouter une Application" + +#: admin/mimetypes/generic.tpl:143 +msgid "Embedding" +msgstr "Inclure" + +#: admin/mimetypes/generic.tpl:156 +msgid "Show file in embedded viewer" +msgstr "Montrer le fichier dans le navigateur" + +#: admin/mimetypes/generic.tpl:163 +msgid "Show file in external viewer" +msgstr "Montrer le fichier dans un programme externe" + +#: admin/mimetypes/generic.tpl:170 +msgid "Ask whether to save to local disk" +msgstr "Demander si il faut le sauver sur un disque local" + +#: admin/mimetypes/class_divListMimeTypes.inc:27 +#: admin/mimetypes/class_divListMimeTypes.inc:28 +msgid "List of defined mime types" +msgstr "Liste des type mime définis" + +#: admin/mimetypes/class_divListMimeTypes.inc:58 +msgid "Display mime types matching" +msgstr "Afficher les types mime correspondants" + +#: admin/mimetypes/class_divListMimeTypes.inc:243 +msgid "Number of listed mimetypes" +msgstr "Nombre de type mime listés" + +#: admin/mimetypes/paste_generic.tpl:24 +msgid "Please specify a description for this mime type here" +msgstr "Veuillez indiquer une description pour ce type mime" + +#: admin/mimetypes/main.inc:48 admin/mimetypes/main.inc:50 +msgid "Mimetype management" +msgstr "Gestion des type mime" + +#: admin/mimetypes/class_mimetypeGeneric.inc:535 +msgid "File pattern" +msgstr "" + +#: admin/mimetypes/class_mimetypeGeneric.inc:716 +msgid "Mime type generic" +msgstr "Information sur les types mime" + +#: admin/mimetypes/class_mimetypeGeneric.inc:729 +msgid "Left click action" +msgstr "Clic gauche" + +#: admin/mimetypes/class_mimetypeGeneric.inc:732 +msgid "Embedded applications" +msgstr "Applications Incorporées" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +msgid "Print Service" +msgstr "Services d'impression" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "enabled" +msgstr "activé" + +#: admin/systems/services/cups/class_goCupsServer.inc:27 +#: admin/systems/services/cups/class_goCupsServer.inc:48 +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/goto/info.tpl:124 +msgid "Print service" +msgstr "Service d'impression" + +#: admin/systems/services/cups/class_goCupsServer.inc:68 +msgid "Cups" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/services/shares/class_goShareServer.inc:390 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/cups/class_goCupsServer.inc:77 +#: admin/systems/services/syslog/class_goLogDBServer.inc:101 +msgid "Start" +msgstr "Démarrage" + +#: admin/systems/services/cups/class_goCupsServer.inc:78 +#: admin/systems/services/syslog/class_goLogDBServer.inc:102 +msgid "Stop" +msgstr "Arrêter" + +#: admin/systems/services/cups/class_goCupsServer.inc:79 +#: admin/systems/services/syslog/class_goLogDBServer.inc:103 +msgid "Restart" +msgstr "Réessayer" + +#: admin/systems/services/kiosk/class_goKioskService.inc:34 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:206 +msgid "Kiosk profile service" +msgstr "Service de profil Kiosk" + +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: personal/environment/class_environment.inc:1784 +#: personal/environment/environment.tpl:124 +#: personal/environment/environment.tpl:160 +msgid "Kiosk profile" +msgstr "Profil Kiosk" + +#: admin/systems/services/kiosk/class_goKioskService.inc:269 +msgid "Kiosk" +msgstr "Kiosk" + +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/kiosk/goKioskService.tpl:1 +msgid "Kiosk profile management" +msgstr "Gérer les profil Kiosk" + +#: admin/systems/services/kiosk/goKioskService.tpl:16 +msgid "Server path" +msgstr "Chemin du serveur" + +#: admin/systems/services/kiosk/goKioskService.tpl:23 +#: addons/goto/goto_import_file.tpl:24 +msgid "Browse" +msgstr "Parcourir" + +#: admin/systems/services/ldap/goLdapServer.tpl:1 +#: admin/systems/services/ldap/class_goLdapServer.inc:30 +#: admin/systems/services/ldap/class_goLdapServer.inc:68 +msgid "LDAP service" +msgstr "Service LDAP" + +#: admin/systems/services/ldap/goLdapServer.tpl:2 +msgid "LDAP URI" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:35 +msgid "fill-in-your-servers-dns-name" +msgstr "Veuillez indiquer vos serveurs dns" + +#: admin/systems/services/ldap/class_goLdapServer.inc:128 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +msgid "Ldap" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:137 +msgid "Ldap base" +msgstr "Base ldap" + +#: admin/systems/services/ntp/goNtpServer.tpl:2 +msgid "Time server" +msgstr "Serveur de temps" + +#: admin/systems/services/ntp/class_goNtpServer.inc:28 +#: admin/systems/services/ntp/class_goNtpServer.inc:74 +msgid "Time service (NTP)" +msgstr "Services de temps (NTP)" + +#: admin/systems/services/ntp/class_goNtpServer.inc:114 +msgid "Time service" +msgstr "Services de temps" + +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +msgid "Time service - NTP" +msgstr "Services de temps - NTP" + +#: admin/systems/services/ntp/class_goNtpServer.inc:123 +msgid "Ntp source" +msgstr "Source ntp" + +#: admin/systems/services/terminal/goTerminalServer.tpl:4 +#: admin/systems/services/terminal/class_goTerminalServer.inc:26 +#: admin/systems/services/terminal/class_goTerminalServer.inc:76 +#: admin/systems/services/terminal/class_goTerminalServer.inc:164 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/goto/class_terminalService.inc:679 +msgid "Terminal service" +msgstr "Services de terminaux" + +#: admin/systems/services/terminal/goTerminalServer.tpl:8 +#: admin/systems/services/terminal/class_goTerminalServer.inc:173 +msgid "Temporary disable login" +msgstr "Désactiver temporairement l'identifiant" + +#: admin/systems/services/terminal/goTerminalServer.tpl:13 +msgid "Supported session types" +msgstr "Type de sessions supportées" + +#: admin/systems/services/shares/goShareServer.tpl:1 +#: admin/systems/goto/class_terminalStartup.inc:543 +#: admin/systems/goto/class_workstationStartup.inc:1021 +#: admin/systems/goto/terminalStartup.tpl:91 +#: admin/systems/goto/workstationStartup.tpl:209 +#: personal/environment/class_environment.inc:1782 +#: personal/environment/environment.tpl:212 +msgid "Shares" +msgstr "Partages" + +#: admin/systems/services/shares/class_goShareServer.inc:31 +#: admin/systems/services/shares/class_goShareServer.inc:157 +#: admin/systems/services/shares/class_goShareServer.inc:389 +msgid "File service (Shares)" +msgstr "Serveur de fichier (Partages)" + +#: admin/systems/services/shares/class_goShareServer.inc:233 +msgid "share" +msgstr "partage" + +#: admin/systems/services/shares/class_goShareServer.inc:390 +msgid "File service - Shares" +msgstr "Serveur de fichier - Partages" + +#: admin/systems/services/shares/class_goShareServer.inc:399 +msgid "Apple mounts" +msgstr "Montages Apple" + +#: admin/systems/services/shares/class_goShareServer.inc:402 +msgid "Charset" +msgstr "Jeu de caractères" + +#: admin/systems/services/shares/class_goShareServer.inc:403 +#: admin/systems/services/nfs/class_servNfs.inc:179 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Path" +msgstr "Chemin" + +#: admin/systems/services/shares/class_goShareServer.inc:404 +#: admin/systems/services/nfs/class_servNfs.inc:215 +#: admin/systems/services/nfs/servnfs.tpl:121 +msgid "Option" +msgstr "Option" + +#: admin/systems/services/shares/class_goShareServer.inc:405 +#: admin/systems/services/nfs/class_servNfs.inc:211 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Volume" +msgstr "Volume" + +#: admin/systems/services/nfs/class_servNfs.inc:184 +msgid "'Path / Volume' must be of format 'server:port'!" +msgstr "'Chemin / Volume' doit être dans le format 'serveur:port' !" + +#: admin/systems/services/nfs/class_servNfs.inc:188 +msgid "'Path / Volume' must contain at least one '/'!" +msgstr "'Chemin / Volume' doit au moins contenir un '/' !" + +#: admin/systems/services/nfs/servnfs.tpl:1 +msgid "Edit share" +msgstr "Editer un partage" + +#: admin/systems/services/nfs/servnfs.tpl:2 +msgid "NFS setup" +msgstr "Préférences NFS" + +#: admin/systems/services/nfs/servnfs.tpl:39 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:201 +#: addons/goto/events/class_EventTargetAddList.inc:238 +#: personal/environment/environment.tpl:135 +msgid "Server" +msgstr "Serveur" + +#: admin/systems/services/nfs/servnfs.tpl:69 +msgid "Auto-mount share on Apple systems" +msgstr "Monter les partages automatiquement sur les machines Apple." + +#: admin/systems/services/nfs/servnfs.tpl:109 +msgid "Codepage" +msgstr "Codage des caractères" + +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "Syslog Service" +msgstr "Service de journaux systèmes" + +#: admin/systems/services/syslog/class_goSyslogServer.inc:68 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +msgid "Logging service" +msgstr "Service des journaux systèmes" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:31 +#: admin/systems/services/syslog/class_goLogDBServer.inc:59 +msgid "Syslog service database" +msgstr "Service de journaux systèmes" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:69 +#: admin/systems/goto/class_printGeneric.inc:908 +#: addons/goto/events/class_EventTargetAddUsersList.inc:171 +msgid "User" +msgstr "Utilisateur" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:72 +#: admin/systems/services/syslog/class_goLogDBServer.inc:105 +#: admin/systems/services/syslog/goLogDBServer.tpl:20 +msgid "Password" +msgstr "Mot de passe" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:75 +#: admin/systems/services/syslog/class_goLogDBServer.inc:106 +#: admin/systems/services/syslog/goLogDBServer.tpl:4 +msgid "Database" +msgstr "Base de données" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:92 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Logging database" +msgstr "Base de données des journaux systèmes" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:104 +msgid "Admin" +msgstr "Administrateur" + +#: admin/systems/services/syslog/goLogDBServer.tpl:1 +msgid "Logging database information" +msgstr "Base de données des journaux systèmes" + +#: admin/systems/services/syslog/goLogDBServer.tpl:12 +msgid "Logging DB user" +msgstr "Utilisateur de la base de données des journaux systèmes" + +#: admin/systems/goto/workstation.tpl:1 admin/systems/goto/terminal.tpl:1 +msgid "Properties" +msgstr "Propriétés" + +#: admin/systems/goto/workstation.tpl:8 +msgid "Workstation template" +msgstr "Modèle de station de travail" + +#: admin/systems/goto/workstation.tpl:10 +#: admin/systems/goto/class_workstationGeneric.inc:707 +msgid "Workstation name" +msgstr "Nom de la station de travail" + +#: admin/systems/goto/workstation.tpl:27 +#: admin/systems/goto/class_printGeneric.inc:932 +#: admin/systems/goto/class_workstationGeneric.inc:709 +msgid "Location" +msgstr "Lieu" + +#: admin/systems/goto/workstation.tpl:38 admin/systems/goto/terminal.tpl:31 +msgid "Choose subtree to place group in" +msgstr "Sélectionnez la branche où sera placée le groupe" + +#: admin/systems/goto/workstation.tpl:87 admin/systems/goto/workstation.tpl:90 +#: admin/systems/goto/terminal.tpl:109 admin/systems/goto/terminal.tpl:112 +msgid "Inherit time server attributes" +msgstr "Hérite des paramètres du serveur de temps" + +#: admin/systems/goto/workstation.tpl:160 +msgid "Inherit all values from group" +msgstr "Hériter toutes les valeurs du groupe" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:3 +#: personal/environment/selectPrinterDialog.tpl:5 +#: personal/environment/selectPrinterDialog.tpl:10 +msgid "Select printer to add" +msgstr "Sélectionnez une imprimante à ajouter" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:8 +msgid "Select entries to add" +msgstr "Sélectionnez les entrées à ajouter" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:22 +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:18 +#: personal/environment/selectPrinterDialog.tpl:24 +#: personal/environment/hotplugDialog.tpl:24 +msgid "Filters" +msgstr "Filtres" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Select to search within subtrees" +msgstr "Sélectionner pour chercher dans le sous arbre" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Search in subtrees" +msgstr "Chercher dans les sous arbre" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:38 +msgid "Display members of department" +msgstr "Afficher les membres du département" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:41 +#: personal/environment/selectPrinterDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Sélectionner le département où sera effectuée la recherche" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:50 +msgid "Display members matching" +msgstr "Afficher les membres correspondants" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:55 +msgid "Regular expression for matching member names" +msgstr "Expression régulière concordant avec les noms des membres" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:49 +msgid "USB" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:50 +msgid "Parallel port" +msgstr "Port parallèle" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:53 +msgid "Software" +msgstr "Logiciel" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:54 +msgid "Hardware" +msgstr "Matériel" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:56 +msgid "Even" +msgstr "Pair" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:57 +msgid "Odd" +msgstr "Impair" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:60 +#: admin/systems/goto/class_gotoLpdEnabled.inc:61 +#: admin/systems/goto/class_gotoLpdEnabled.inc:62 +#: admin/systems/goto/class_gotoLpdEnabled.inc:63 +#: admin/systems/goto/class_gotoLpdEnabled.inc:64 +#: admin/systems/goto/class_gotoLpdEnabled.inc:65 +#: admin/systems/goto/class_gotoLpdEnabled.inc:66 +#: admin/systems/goto/class_gotoLpdEnabled.inc:67 +msgid "bit/s" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:153 +#: admin/systems/goto/terminalService.tpl:58 +#: admin/systems/goto/workstationService.tpl:66 +#: admin/systems/goto/gotoLpdEnable.tpl:71 +msgid "Port" +msgstr "Port" + +#: admin/systems/goto/ArpNewDevice.tpl:1 +msgid "Integrating unknown devices" +msgstr "Intégration des périphériques inconnus" + +#: admin/systems/goto/ArpNewDevice.tpl:3 +msgid "" +"The current device has been detected by the ARP monitor used by GOsa. You " +"can integrate this device into your running DHCP/DNS infrastructure by " +"submitting this form. The device entry will disappear from the list of the " +"systems and move to the DNS/DHCP configuration." +msgstr "" +"Le périphérique actuel à été détecté par le moniteur ARP utilisé par GOsa. " +"Vous pouvez intégrer ce périphérique dans votre infrastructure DNS/DHCP en " +"soumettant ce formulaire. Ce périphérique vas disparaître de la liste des " +"systèmes et apparaître dans la configuration DNS/DHCP." + +#: admin/systems/goto/ArpNewDevice.tpl:9 +msgid "DNS name" +msgstr "Nom DNS" + +#: admin/systems/goto/class_printGeneric.inc:106 +#: admin/systems/goto/class_printGeneric.inc:968 +msgid "Internal error" +msgstr "Erreur interne" + +#: admin/systems/goto/class_printGeneric.inc:106 +#, php-format +msgid "" +"Cannot determine a valid department for this object. Setting base to '%s'!" +msgstr "" +"Impossible d'obtenir un département valide pour cet objet. Je met la base à " +"'%s' ! " + +#: admin/systems/goto/class_printGeneric.inc:262 +#: admin/systems/goto/class_printGeneric.inc:270 +#: admin/systems/goto/class_printGeneric.inc:275 +#: admin/systems/goto/class_printGeneric.inc:324 +#: admin/systems/goto/class_printGeneric.inc:340 +#: admin/systems/goto/class_printGeneric.inc:343 +msgid "Add printer extension" +msgstr "Ajouter une extension d'imprimante" + +#: admin/systems/goto/class_printGeneric.inc:263 +msgid "" +"Could not initialize printer tab, parameter parent was missing while " +"construction." +msgstr "" +"Impossible d'initialiser l'onglet imprimante, le paramètre parent était " +"manquant pendant la construction." + +#: admin/systems/goto/class_printGeneric.inc:271 +msgid "This is a workstation template, printer tab is disabled." +msgstr "" +"Ceci est un modèle de station de travail, l'onglet imprimante est désactivé." + +#: admin/systems/goto/class_printGeneric.inc:276 +msgid "This is a terminal template, printer tab is disabled." +msgstr "Ceci est un modèle de terminal, l'onglet imprimante est désactivé." + +#: admin/systems/goto/class_printGeneric.inc:317 +#: admin/systems/goto/class_printGeneric.inc:325 +#: admin/systems/goto/class_printGeneric.inc:333 +#: admin/systems/goto/class_printGeneric.inc:336 +#: admin/systems/goto/class_printGeneric.inc:341 +#: admin/systems/goto/class_printGeneric.inc:344 +msgid "printer" +msgstr "imprimante" + +#: admin/systems/goto/class_printGeneric.inc:325 +msgid "" +"You can't enable it while 'cn' is not present in entry. Possibly you are " +"currently creating a new terminal template." +msgstr "" +"Vous ne pourrez l'activer tant qu'un 'cn' n'est pas présent dans l'entrée. " +"Vous êtes probablement occupé à créer un nouveau modèle de terminal." + +#: admin/systems/goto/class_printGeneric.inc:332 +#: admin/systems/goto/class_printGeneric.inc:335 +msgid "Remove printer extension" +msgstr "Enlever l'extension d'impression" + +#: admin/systems/goto/class_printGeneric.inc:513 +#, php-format +msgid "Your currently selected PPD file '%s' doesn't exist." +msgstr "Le fichier PPD sélectionné '%s' n'existe pas." + +#: admin/systems/goto/class_printGeneric.inc:518 +msgid "Not defined" +msgstr "Non défini" + +#: admin/systems/goto/class_printGeneric.inc:521 +#: admin/systems/ppd/class_printerPPDDialog.inc:97 +msgid "Can't get ppd informations." +msgstr "Impossible d'obtenir des informations sur les ppd." + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_printGeneric.inc:536 +#, php-format +msgid "This printer belongs to %s. You can't rename this printer." +msgstr "Cette imprimante appartient à %s. Vous ne pouvez pas changer son nom." + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_terminalStartup.inc:180 +#: admin/systems/goto/class_terminalInfo.inc:68 +#: admin/systems/goto/class_terminalGeneric.inc:230 +msgid "terminal" +msgstr "terminal" + +#: admin/systems/goto/class_printGeneric.inc:536 +#: admin/systems/goto/class_workstationGeneric.inc:226 +#: admin/systems/goto/class_workstationStartup.inc:285 +msgid "workstation" +msgstr "stations de travail" + +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +msgid "Object is no printer!" +msgstr "L'objet n'est pas une Imprimante !" + +#: admin/systems/goto/class_printGeneric.inc:680 +#: admin/systems/goto/printer.tpl:54 +msgid "Printer URL" +msgstr "URL de l'imprimante" + +#: admin/systems/goto/class_printGeneric.inc:903 +#: admin/systems/goto/class_printGeneric.inc:905 +#: addons/goto/events/class_EventTargetAddUsersList.inc:173 +msgid "Group" +msgstr "Groupes" + +#: admin/systems/goto/class_printGeneric.inc:921 +msgid "Print generic" +msgstr "Imprimante générique" + +#: admin/systems/goto/class_printGeneric.inc:926 +#: admin/systems/goto/terminalService.tpl:245 +#: personal/environment/environment.tpl:338 +#: personal/environment/environment.tpl:374 +msgid "Printer" +msgstr "Imprimante" + +#: admin/systems/goto/class_printGeneric.inc:933 +msgid "LabeledURL" +msgstr "URL de l'imprimante" + +#: admin/systems/goto/class_printGeneric.inc:934 +msgid "Printer PPD" +msgstr "PPD de l'Imprimante" + +#: admin/systems/goto/class_printGeneric.inc:935 +#: admin/systems/goto/printer.tpl:82 +msgid "Permissions" +msgstr "Permissions" + +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +msgid "printer user" +msgstr "utilisateur de l'Imprimante" + +#: admin/systems/goto/class_printGeneric.inc:968 +#, php-format +msgid "Illegal member type '%s'!" +msgstr "Type de membre illégal '%s' !" + +#: admin/systems/goto/class_printGeneric.inc:1008 +#, php-format +msgid "'%s' is already used!" +msgstr "'%s' est déjà utilisé !" + +#: admin/systems/goto/class_printGeneric.inc:1019 +#, php-format +msgid "'%s' does not exist!" +msgstr "'%s' n'existe pas !" + +#: admin/systems/goto/class_selectUserToPrinterDialog.inc:147 +msgid "Please select a printer or press cancel." +msgstr "Veuillez sélectionner une imprimante ou cliquez sur annuler." + +#: admin/systems/goto/class_terminalStartup.inc:135 +#, php-format +msgid "" +"Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to " +"exist." +msgstr "" +"La commande '%s', spécifié comme sytemKernelsHook de l'extension '%s' " +"n'existe pas." + +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +msgid "Mount point" +msgstr "Point de montage" + +#: admin/systems/goto/class_terminalStartup.inc:372 +#: admin/systems/goto/class_workstationStartup.inc:750 +msgid "Fatal error" +msgstr "Erreur Fatale" + +#: admin/systems/goto/class_terminalStartup.inc:533 +#: admin/systems/goto/class_workstationStartup.inc:1007 +msgid "Startup" +msgstr "Démarrage" + +#: admin/systems/goto/class_terminalStartup.inc:534 +msgid "Terminal startup" +msgstr "Démarrage du terminal" + +#: admin/systems/goto/class_terminalStartup.inc:542 +#: admin/systems/goto/class_workstationStartup.inc:1016 +msgid "Ldap server" +msgstr "Serveur ldap" + +#: admin/systems/goto/class_terminalStartup.inc:544 +#: admin/systems/goto/class_workstationStartup.inc:1020 +msgid "Kernel modules" +msgstr "Modules du kernel" + +#: admin/systems/goto/class_terminalStartup.inc:545 +#: admin/systems/goto/class_workstationStartup.inc:1017 +#: admin/systems/goto/terminalStartup.tpl:40 +#: admin/systems/goto/workstationStartup.tpl:9 +msgid "Boot kernel" +msgstr "Kernel utilisé au démarrage" + +#: admin/systems/goto/class_terminalStartup.inc:546 +#: admin/systems/goto/class_workstationStartup.inc:1018 +msgid "Kernel parameter" +msgstr "Paramètre du kernel" + +#: admin/systems/goto/class_terminalInfo.inc:50 +#: admin/systems/goto/class_terminalInfo.inc:204 +msgid "present" +msgstr "présent" + +#: admin/systems/goto/class_terminalInfo.inc:77 +#: admin/systems/goto/class_terminalService.inc:121 +#: admin/systems/goto/class_workstationStartup.inc:1295 +#: admin/systems/goto/class_workstationStartup.inc:1297 +#: admin/systems/goto/class_workstationService.inc:78 +#: admin/systems/ppd/class_printerPPDDialog.inc:54 +#: admin/systems/ppd/class_printerPPDDialog.inc:121 +#: personal/environment/class_environment.inc:234 +msgid "Configuration error" +msgstr "Erreur de configuration" + +#: admin/systems/goto/class_terminalInfo.inc:83 +#: admin/systems/goto/class_terminalInfo.inc:179 +msgid "unknown status" +msgstr "statut inconnu" + +#: admin/systems/goto/class_terminalInfo.inc:92 +msgid "This is a virtual terminal which has no properties to show here." +msgstr "Ceci est un pseudo-terminal, aucune propriété ne peut être affichée." + +#: admin/systems/goto/class_terminalInfo.inc:106 +msgid "online" +msgstr "en ligne" + +#: admin/systems/goto/class_terminalInfo.inc:168 +msgid "running" +msgstr "en cours d'exécution" + +#: admin/systems/goto/class_terminalInfo.inc:171 +msgid "not running" +msgstr "n'est pas en cours d'exécution" + +#: admin/systems/goto/class_terminalInfo.inc:174 +msgid "not defined" +msgstr "non défini" + +#: admin/systems/goto/class_terminalInfo.inc:196 +msgid "offline" +msgstr "hors-ligne" + +#: admin/systems/goto/class_terminalInfo.inc:251 +msgid "System info" +msgstr "Information système" + +#: admin/systems/goto/class_terminalInfo.inc:252 +msgid "System informations" +msgstr "Information système" + +#: admin/systems/goto/class_terminalService.inc:128 +#: admin/systems/goto/class_terminalService.inc:129 +#: admin/systems/goto/class_terminalService.inc:130 +#: admin/systems/goto/class_terminalService.inc:131 +#: admin/systems/goto/class_workstationService.inc:88 +#: admin/systems/goto/class_workstationService.inc:89 +#: admin/systems/goto/class_workstationService.inc:90 +#: admin/systems/goto/class_workstationService.inc:91 +msgid "bit" +msgstr "bit" + +#: admin/systems/goto/class_terminalService.inc:177 +msgid "XDMCP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:178 +msgid "LDM" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:179 +msgid "Shell" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:180 +msgid "Telnet" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:181 +msgid "Windows RDP" +msgstr "Windows RDP" + +#: admin/systems/goto/class_terminalService.inc:204 +#: admin/systems/goto/class_workstationService.inc:144 +msgid "automatic" +msgstr "automatique" + +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_workstationService.inc:194 +msgid "Bit" +msgstr "Bit" + +#: admin/systems/goto/class_terminalService.inc:314 +msgid "This 'dn' has no terminal features." +msgstr "Ce 'dn' n'a pas d'extension de terminaux." + +#: admin/systems/goto/class_terminalService.inc:372 +msgid "Unsupported" +msgstr "Non supporté" + +#: admin/systems/goto/class_terminalService.inc:414 +#: admin/systems/goto/class_workstationService.inc:309 +msgid "Choose the phone located at the current terminal" +msgstr "Choisissez le téléphone situé à coté du terminal" + +#: admin/systems/goto/class_terminalService.inc:495 +#: admin/systems/goto/class_terminalService.inc:500 +msgid "VSync range" +msgstr "Fréquence de synchronisation verticale" + +#: admin/systems/goto/class_terminalService.inc:508 +#: admin/systems/goto/class_terminalService.inc:513 +msgid "HSync range" +msgstr "Fréquence de synchronisation Horizontale" + +#: admin/systems/goto/class_terminalService.inc:539 +msgid "" +"Remote desktop settings contains servers that do not support the selected " +"connection method." +msgstr "" +"Les paramètres Remote desktop contiennent des serveurs qui ne prennent pas " +"en compte la méthode de connexion sélectionnée." + +#: admin/systems/goto/class_terminalService.inc:603 +#: admin/systems/goto/workstationService.tpl:157 +#: admin/systems/goto/class_workstationService.inc:85 +msgid "unknown" +msgstr "inconnu" + +#: admin/systems/goto/class_terminalService.inc:678 +#: admin/systems/goto/class_workstationService.inc:484 +msgid "Service" +msgstr "Service" + +#: admin/systems/goto/class_terminalService.inc:688 +#: admin/systems/goto/class_workstationService.inc:493 +msgid "Monitor" +msgstr "Ecran" + +#: admin/systems/goto/class_terminalService.inc:689 +msgid "Method" +msgstr "Méthode" + +#: admin/systems/goto/class_terminalService.inc:690 +#: admin/systems/goto/terminalService.tpl:173 +msgid "Remote desktop" +msgstr "Bureau distant" + +#: admin/systems/goto/class_terminalService.inc:691 +#: admin/systems/goto/class_workstationService.inc:494 +msgid "Gfx driver" +msgstr "Pilote graphique" + +#: admin/systems/goto/class_terminalService.inc:692 +#: admin/systems/goto/class_workstationService.inc:495 +msgid "Gfx resolution" +msgstr "Résolution" + +#: admin/systems/goto/class_terminalService.inc:693 +#: admin/systems/goto/class_workstationService.inc:496 +msgid "Gfx color depth" +msgstr "Profondeur des couleurs" + +#: admin/systems/goto/class_terminalService.inc:694 +#: admin/systems/goto/terminalService.tpl:150 +#: admin/systems/goto/workstationService.tpl:170 +#: admin/systems/goto/class_workstationService.inc:393 +#: admin/systems/goto/class_workstationService.inc:395 +#: admin/systems/goto/class_workstationService.inc:400 +#: admin/systems/goto/class_workstationService.inc:497 +msgid "HSync" +msgstr "Fréquence de synchronisation Horizontale" + +#: admin/systems/goto/class_terminalService.inc:695 +#: admin/systems/goto/terminalService.tpl:158 +#: admin/systems/goto/workstationService.tpl:181 +#: admin/systems/goto/class_workstationService.inc:376 +#: admin/systems/goto/class_workstationService.inc:378 +#: admin/systems/goto/class_workstationService.inc:383 +#: admin/systems/goto/class_workstationService.inc:498 +msgid "VSync" +msgstr "Fréquence de synchronisation verticale" + +#: admin/systems/goto/class_terminalService.inc:696 +msgid "Auto-Sync" +msgstr "Synchronisation automatique" + +#: admin/systems/goto/class_terminalService.inc:697 +#: admin/systems/goto/class_workstationService.inc:500 +msgid "Scanner enabled" +msgstr "Scanner activé" + +#: admin/systems/goto/class_terminalService.inc:698 +#: admin/systems/goto/class_terminalService.inc:704 +msgid "Printer enabled" +msgstr "Imprimante activée" + +#: admin/systems/goto/class_terminalService.inc:699 +#: admin/systems/goto/class_workstationService.inc:501 +msgid "Keyboard model" +msgstr "Modèle de clavier" + +#: admin/systems/goto/class_terminalService.inc:700 +#: admin/systems/goto/class_workstationService.inc:502 +msgid "Keyboard layout" +msgstr "Disposition du clavier" + +#: admin/systems/goto/class_terminalService.inc:701 +#: admin/systems/goto/class_workstationService.inc:503 +msgid "Keyboard variant" +msgstr "Variante du clavier" + +#: admin/systems/goto/class_terminalService.inc:702 +#: admin/systems/goto/class_workstationService.inc:504 +msgid "Mouse type" +msgstr "Type de souris" + +#: admin/systems/goto/class_terminalService.inc:703 +#: admin/systems/goto/class_workstationService.inc:505 +msgid "Mouse port" +msgstr "Port souris" + +#: admin/systems/goto/class_terminalService.inc:705 +#: admin/systems/goto/terminalService.tpl:76 +#: admin/systems/goto/workstationService.tpl:86 +#: admin/systems/goto/class_workstationService.inc:506 +msgid "Telephone hardware" +msgstr "Matériel téléphonique" + +#: admin/systems/goto/info.tpl:6 +msgid "System information" +msgstr "Information sur le système" + +#: admin/systems/goto/info.tpl:12 +msgid "CPU" +msgstr "CPU" + +#: admin/systems/goto/info.tpl:15 +msgid "Memory" +msgstr "Mémoire" + +#: admin/systems/goto/info.tpl:18 +msgid "Boot MAC" +msgstr "Adresse MAC de démarrage" + +#: admin/systems/goto/info.tpl:21 +msgid "USB support" +msgstr "Support USB" + +#: admin/systems/goto/info.tpl:24 admin/systems/goto/info.tpl:92 +msgid "System status" +msgstr "Statut du système" + +#: admin/systems/goto/info.tpl:28 +msgid "Inventory number" +msgstr "Numéro d'inventaire" + +#: admin/systems/goto/info.tpl:32 +msgid "Last login" +msgstr "Dernière connexion" + +#: admin/systems/goto/info.tpl:43 +msgid "Network devices" +msgstr "Périphériques réseau" + +#: admin/systems/goto/info.tpl:52 +msgid "IDE devices" +msgstr "Périphériques IDE" + +#: admin/systems/goto/info.tpl:61 +msgid "SCSI devices" +msgstr "Périphériques SCSI" + +#: admin/systems/goto/info.tpl:69 +msgid "Floppy device" +msgstr "Lecteur de disquette" + +#: admin/systems/goto/info.tpl:73 +msgid "CDROM device" +msgstr "Lecteur CDROM" + +#: admin/systems/goto/info.tpl:78 admin/systems/goto/terminalService.tpl:95 +#: admin/systems/goto/workstationService.tpl:107 +msgid "Graphic device" +msgstr "Carte écran" + +#: admin/systems/goto/info.tpl:82 +msgid "Audio device" +msgstr "Carte son" + +#: admin/systems/goto/info.tpl:98 +msgid "Up since" +msgstr "Allumé depuis" + +#: admin/systems/goto/info.tpl:101 +msgid "CPU load" +msgstr "Charge CPU" + +#: admin/systems/goto/info.tpl:104 +msgid "Memory usage" +msgstr "Utilisation Mémoire" + +#: admin/systems/goto/info.tpl:107 +msgid "Swap usage" +msgstr "Utilisation Swap" + +#: admin/systems/goto/info.tpl:121 +msgid "SSH service" +msgstr "Service SSH" + +#: admin/systems/goto/info.tpl:127 +msgid "Scan service" +msgstr "Service scanner" + +#: admin/systems/goto/info.tpl:130 +msgid "Sound service" +msgstr "Service Son" + +#: admin/systems/goto/info.tpl:133 +msgid "GUI" +msgstr "Interface graphique" + +#: admin/systems/goto/class_workstationGeneric.inc:299 +#: admin/systems/goto/class_workstationGeneric.inc:309 +#: addons/goto/events/class_DaemonEvent_update.inc:29 +#: addons/goto/events/class_DaemonEvent_update.inc:30 +msgid "Software update" +msgstr "Mise à jour logicielle" + +#: admin/systems/goto/class_workstationGeneric.inc:303 +#: admin/systems/goto/class_workstationGeneric.inc:311 +#: addons/goto/events/class_DaemonEvent_localboot.inc:28 +#: addons/goto/events/class_DaemonEvent_localboot.inc:29 +msgid "Force localboot" +msgstr "Forcer un démarrage local" + +#: admin/systems/goto/class_workstationGeneric.inc:307 +#: admin/systems/goto/class_terminalGeneric.inc:271 +#: addons/goto/events/class_DaemonEvent_wakeup.inc:29 +msgid "Wake up" +msgstr "Réveiller" + +#: admin/systems/goto/class_workstationGeneric.inc:500 +msgid "A valid LDAP server assignement is missing!" +msgstr "Un serveur LDAP valide est manquant !" + +#: admin/systems/goto/class_workstationGeneric.inc:510 +msgid "Software deployment" +msgstr "Déploiement logiciel" + +#: admin/systems/goto/class_workstationGeneric.inc:511 +msgid "This host is currently installing. If you want to save it, press 'OK'." +msgstr "" +"Cet hôte est en cours d'installation, si vous voulez le sauver, cliquez sur " +"'OK'." + +#: admin/systems/goto/class_workstationGeneric.inc:699 +msgid "Workstation generic" +msgstr "Information de la station de travail" + +#: admin/systems/goto/class_workstationGeneric.inc:704 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:203 +#: addons/goto/events/class_EventTargetAddList.inc:249 +msgid "Workstation" +msgstr "Stations de travail" + +#: admin/systems/goto/class_workstationGeneric.inc:711 +msgid "Goto mode" +msgstr "Mode Goto" + +#: admin/systems/goto/class_workstationGeneric.inc:714 +#: admin/systems/goto/class_terminalGeneric.inc:676 +msgid "Root password" +msgstr "Mot de passe root" + +#: admin/systems/goto/class_workstationGeneric.inc:715 +msgid "Create FAI CD" +msgstr "Créer un CD FAI" + +#: admin/systems/goto/gencd_frame.tpl:2 +msgid "Your browser does not supprt iframes." +msgstr "Votre navigateur ne supporte pas les iframes." + +#: admin/systems/goto/terminalService.tpl:4 +#: admin/systems/goto/workstationService.tpl:4 +msgid "Keyboard" +msgstr "Clavier" + +#: admin/systems/goto/terminalService.tpl:7 +#: admin/systems/goto/workstationService.tpl:7 +#: admin/systems/ppd/printerPPDDialog.tpl:10 +msgid "Model" +msgstr "Modèle" + +#: admin/systems/goto/terminalService.tpl:10 +#: admin/systems/goto/workstationService.tpl:11 +msgid "Choose keyboard model" +msgstr "Sélectionnez le modèle du clavier" + +#: admin/systems/goto/terminalService.tpl:17 +#: admin/systems/goto/workstationService.tpl:19 +msgid "Layout" +msgstr "Disposition" + +#: admin/systems/goto/terminalService.tpl:20 +#: admin/systems/goto/workstationService.tpl:23 +msgid "Choose keyboard layout" +msgstr "Sélectionnez la disposition du clavier" + +#: admin/systems/goto/terminalService.tpl:27 +#: admin/systems/goto/workstationService.tpl:31 +msgid "Variant" +msgstr "Variante" + +#: admin/systems/goto/terminalService.tpl:30 +#: admin/systems/goto/workstationService.tpl:35 +msgid "Choose keyboard variant" +msgstr "Sélectionnez la variante du clavier" + +#: admin/systems/goto/terminalService.tpl:45 +#: admin/systems/goto/workstationService.tpl:51 +msgid "Mouse" +msgstr "Souris" + +#: admin/systems/goto/terminalService.tpl:51 +#: admin/systems/goto/workstationService.tpl:58 +msgid "Choose mouse type" +msgstr "Sélectionnez le type de souris" + +#: admin/systems/goto/terminalService.tpl:61 +#: admin/systems/goto/workstationService.tpl:70 +msgid "Choose mouse port" +msgstr "Sélectionnez le port de la souris" + +#: admin/systems/goto/terminalService.tpl:79 +#: admin/systems/goto/workstationService.tpl:89 +msgid "Telephone" +msgstr "Téléphone" + +#: admin/systems/goto/terminalService.tpl:98 +#: admin/systems/goto/workstationService.tpl:110 +#: admin/systems/goto/printer.tpl:66 +msgid "Driver" +msgstr "Pilote" + +#: admin/systems/goto/terminalService.tpl:101 +#: admin/systems/goto/workstationService.tpl:114 +msgid "Choose graphic driver that is needed by the installed graphic board" +msgstr "" +"Sélectionnez le pilote de la carte vidéo correspondant à la carte graphique " +"installée" + +#: admin/systems/goto/terminalService.tpl:108 +#: admin/systems/goto/workstationService.tpl:122 +#: personal/environment/class_environment.inc:1786 +#: personal/environment/environment.tpl:183 +msgid "Resolution" +msgstr "Résolution" + +#: admin/systems/goto/terminalService.tpl:111 +#: admin/systems/goto/workstationService.tpl:126 +msgid "Choose screen resolution used in graphic mode" +msgstr "Sélectionnez la résolution utilisée en mode graphique" + +#: admin/systems/goto/terminalService.tpl:118 +#: admin/systems/goto/workstationService.tpl:134 +msgid "Color depth" +msgstr "Profondeur des couleurs" + +#: admin/systems/goto/terminalService.tpl:121 +#: admin/systems/goto/workstationService.tpl:138 +msgid "Choose colordepth used in graphic mode" +msgstr "Sélectionnez la profondeur des couleurs utilisée en mode graphique" + +#: admin/systems/goto/terminalService.tpl:135 +#: admin/systems/goto/workstationService.tpl:153 +msgid "Display device" +msgstr "Écran" + +#: admin/systems/goto/terminalService.tpl:147 +#: admin/systems/goto/workstationService.tpl:167 +msgid "Use DDC for automatic detection" +msgstr "Utiliser DCC pour la détection automatique" + +#: admin/systems/goto/terminalService.tpl:154 +#: admin/systems/goto/workstationService.tpl:175 +msgid "Horizontal refresh frequency for installed monitor" +msgstr "Fréquence de rafraîchissement horizontal pour l'écran installé" + +#: admin/systems/goto/terminalService.tpl:162 +#: admin/systems/goto/workstationService.tpl:186 +msgid "Vertical refresh frequency for installed monitor" +msgstr "Fréquence de rafraîchissement verticale pour l'écran installé" + +#: admin/systems/goto/terminalService.tpl:177 +msgid "Connect method" +msgstr "Méthode de connexion" + +#: admin/systems/goto/terminalService.tpl:180 +msgid "Choose method to connect to terminal server" +msgstr "Sélectionnez la méthode de connexion au terminal" + +#: admin/systems/goto/terminalService.tpl:184 +#: admin/systems/goto/terminalStartup.tpl:14 +#: admin/systems/goto/workstationStartup.tpl:36 +#: addons/goto/class_gotomasses.inc:400 +msgid "Reload" +msgstr "Recharger" + +#: admin/systems/goto/terminalService.tpl:191 +msgid "Terminal server" +msgstr "Serveur de terminaux" + +#: admin/systems/goto/terminalService.tpl:202 +msgid "Select specific terminal server to use" +msgstr "Sélectionnez un serveur de terminaux à utiliser" + +#: admin/systems/goto/terminalService.tpl:208 +msgid "Add selected server" +msgstr "Ajouter le serveur sélectionné" + +#: admin/systems/goto/terminalService.tpl:212 +msgid "Remove selected server" +msgstr "Supprimer le serveur sélectionné" + +#: admin/systems/goto/terminalService.tpl:233 +#: admin/systems/goto/workstationService.tpl:201 +msgid "Scan device" +msgstr "Scanner" + +#: admin/systems/goto/terminalService.tpl:235 +#: admin/systems/goto/workstationService.tpl:204 +msgid "Select to start SANE scan service on terminal" +msgstr "Sélectionner afin de démarrer le service scanner SANE sur le terminal" + +#: admin/systems/goto/terminalService.tpl:237 +#: admin/systems/goto/workstationService.tpl:207 +msgid "Provide scan services" +msgstr "Fournir des services de scanner" + +#: admin/systems/goto/gotoLpdEnable.tpl:12 +#: admin/systems/goto/gotoLpdEnable.tpl:48 +msgid "Enable printer settings" +msgstr "Activer les paramètres de l'imprimante" + +#: admin/systems/goto/gotoLpdEnable.tpl:87 +msgid "Write only" +msgstr "En écriture seulement" + +#: admin/systems/goto/gotoLpdEnable.tpl:100 +msgid "Bit rate" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:110 +msgid "Flow control" +msgstr "Contrôle de flux" + +#: admin/systems/goto/gotoLpdEnable.tpl:120 +msgid "Parity" +msgstr "Parité" + +#: admin/systems/goto/gotoLpdEnable.tpl:130 +msgid "Bits" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:234 +#, php-format +msgid "FAI mirror '%s' is not available - setting to mirror 'auto'!" +msgstr "" +"Le miroir FAI '%s' n'est pas disponible - miroir mis sur 'automatique' !" + +#: admin/systems/goto/class_workstationStartup.inc:247 +#, php-format +msgid "" +"FAI release '%s' is not available on mirror '%s' - setting to release '%s'!" +msgstr "" +"La version FAI '%s' n'est pas disponible sur le miroir '%s' - la version " +"sera '%s' !" + +#: admin/systems/goto/class_workstationStartup.inc:266 +msgid "Please select a 'FAI server' or remove the 'FAI classes'." +msgstr "Veuillez sélectionner un 'serveur FAI' ou effacer les 'Classes FAI'." + +#: admin/systems/goto/class_workstationStartup.inc:324 +msgid "" +"There is already a profile containing a partition table in your " +"configuration!" +msgstr "" +"Il y a déjà un profil dans votre sélection qui contient des configurations " +"de table de partitions !" + +#: admin/systems/goto/class_workstationStartup.inc:629 +msgid "Not available in current setup" +msgstr "Pas disponible dans la configuration actuelle" + +#: admin/systems/goto/class_workstationStartup.inc:1008 +msgid "System startup" +msgstr "Démarrage du système" + +#: admin/systems/goto/class_workstationStartup.inc:1023 +msgid "FAI classes" +msgstr "Classes FAI" + +#: admin/systems/goto/class_workstationStartup.inc:1024 +msgid "Debian mirror" +msgstr "Mirroir Debian" + +#: admin/systems/goto/class_workstationStartup.inc:1025 +msgid "Debian release" +msgstr "Version Debian" + +#: admin/systems/goto/class_workstationStartup.inc:1027 +msgid "FAI status flag" +msgstr "Indicateur de statut FAI" + +#: admin/systems/goto/class_workstationStartup.inc:1297 +msgid "'repositoryBranchHook' returned no result!" +msgstr "'repositoryBranchHook' n'a renvoyé aucun résultat !" + +#: admin/systems/goto/gencd.tpl:2 +msgid "CD-Install-Image generation" +msgstr "Génération d'un image CD pour l'installation" + +#: admin/systems/goto/gencd.tpl:5 +msgid "" +"This option enables you to generate FAI install CD images for the selected " +"workstation. The procedure may take about 10 minutes to complete, so please " +"be patient after pressing the 'Create ISO-Image' button." +msgstr "" +"Cette option permet de créer des images d'installation FAI pour le poste de " +"travail sélectionné. La procédure peut mettre 10 minutes pour se terminer, " +"veuillez être patient après avoir cliquer sur 'Créer une image ISO'." + +#: admin/systems/goto/gencd.tpl:9 +msgid "Create ISO-Image" +msgstr "Créer un image ISO" + +#: admin/systems/goto/class_workstationService.inc:485 +msgid "Workstation service" +msgstr "Service station de travail" + +#: admin/systems/goto/class_workstationService.inc:499 +msgid "Use DDC" +msgstr "Utiliser DCC" + +#: admin/systems/goto/terminalStartup.tpl:1 +#: admin/systems/goto/workstationStartup.tpl:4 +msgid "Boot parameters" +msgstr "Paramètre de démarrage" + +#: admin/systems/goto/terminalStartup.tpl:7 +#: admin/systems/goto/workstationStartup.tpl:29 +msgid "LDAP server" +msgstr "Serveur LDAP" + +#: admin/systems/goto/terminalStartup.tpl:12 +#: admin/systems/goto/workstationStartup.tpl:34 +msgid "inherit from group" +msgstr "hériter du groupe" + +#: admin/systems/goto/terminalStartup.tpl:51 +#: admin/systems/goto/workstationStartup.tpl:20 +msgid "Custom options" +msgstr "Options personnalisées" + +#: admin/systems/goto/terminalStartup.tpl:55 +#: admin/systems/goto/workstationStartup.tpl:24 +msgid "" +"Enter any parameters that should be passed to the kernel as append line " +"during bootup" +msgstr "Entrez les paramètres qui seront passés au kernel lors du démarrage" + +#: admin/systems/goto/terminalStartup.tpl:70 +#: admin/systems/goto/workstationStartup.tpl:188 +msgid "Kernel modules (format: name parameters)" +msgstr "Modules du kernel (format : nom paramètre)" + +#: admin/systems/goto/terminalStartup.tpl:73 +#: admin/systems/goto/workstationStartup.tpl:191 +msgid "Add additional modules to load on startup" +msgstr "Ajouter des modules à charger au démarrage" + +#: admin/systems/goto/terminalStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:227 +msgid "Mountpoint" +msgstr "Point de montage" + +#: admin/systems/goto/SelectDeviceType.tpl:3 +msgid "" +"This system has no system type configured. Please choose a system type for " +"this object and an optional inheritance group. Press the 'continue' button " +"to proceed." +msgstr "" +"Ce système n'a pas de type de système configuré. S'il vous plaît choisissez " +"un type de système pourcet objet et un héritage de groupe facultatif. " +"Appuyez sur le bouton 'Continuer' pour continuer." + +#: admin/systems/goto/SelectDeviceType.tpl:10 +msgid "" +"Please select a system type and an optional bundle of predefined settings to " +"be inherited." +msgstr "" +"Veuillez sélectionner un type de système et éventuellement d'un ensemble de " +"paramètres à hériter." + +#: admin/systems/goto/SelectDeviceType.tpl:12 +msgid "" +"Please select a system type and a bundle of predefined settings to be " +"inherited." +msgstr "" +"Veuillez sélectionner un type de système et d'un ensemble de paramètres à " +"hériter." + +#: admin/systems/goto/SelectDeviceType.tpl:23 +#: admin/systems/goto/SelectDeviceType.tpl:24 +msgid "System type" +msgstr "Type de système" + +#: admin/systems/goto/SelectDeviceType.tpl:36 +msgid "Choose an object group as template" +msgstr "Choisissez un groupe d'objets comme modèles" + +#: admin/systems/goto/SelectDeviceType.tpl:37 +#: addons/goto/class_target_list.inc:205 addons/goto/goto_import_file.tpl:40 +#: addons/goto/events/class_EventTargetAddList.inc:259 +msgid "Object group" +msgstr "Groupes d'objets" + +#: admin/systems/goto/SelectDeviceType.tpl:39 +#: addons/goto/class_gotoLogView.inc:87 +msgid "none" +msgstr "aucun" + +#: admin/systems/goto/SelectDeviceType.tpl:51 +msgid "Continue" +msgstr "Continuer" + +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: admin/systems/goto/class_terminalGeneric.inc:656 +#: admin/systems/goto/class_terminalGeneric.inc:662 +msgid "Terminal" +msgstr "Terminal" + +#: admin/systems/goto/class_SelectDeviceType.inc:41 +#: admin/systems/goto/chooser.tpl:10 +msgid "Windows workstation" +msgstr "Station de travail Windows" + +#: admin/systems/goto/workstationStartup.tpl:64 +msgid "" +"FAI Object assignment disabled. You can't use this feature until FAI is " +"activated." +msgstr "" +"Vous ne pouvez pas utiliser cette option tant que FAI n'est pas activé." + +#: admin/systems/goto/workstationStartup.tpl:66 +msgid "GOsa support daemon not configured" +msgstr "Le service GOsa n'est pas configuré" + +#: admin/systems/goto/workstationStartup.tpl:67 +msgid "FAI settings cannot be modified" +msgstr "Les paramètres FAI ne peuvent pas être modifiés" + +#: admin/systems/goto/workstationStartup.tpl:70 +msgid "Check if the GOsa support daemon (gosa-si) is running." +msgstr "Vérifiez si le service GOsa (gosa-si) fonctionne." + +#: admin/systems/goto/workstationStartup.tpl:71 +msgid "retry" +msgstr "réessayer" + +#: admin/systems/goto/workstationStartup.tpl:79 +#: admin/systems/goto/workstationStartup.tpl:119 +msgid "FAI server" +msgstr "Serveur FAI" + +#: admin/systems/goto/workstationStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:158 +msgid "Assigned FAI classes" +msgstr "Liste des classes FAI utilisées" + +#: admin/systems/goto/workstationStartup.tpl:142 +msgid "set" +msgstr "activé" + +#: admin/systems/goto/class_terminalGeneric.inc:657 +msgid "Terminal generic" +msgstr "Information du terminal" + +#: admin/systems/goto/class_terminalGeneric.inc:670 +msgid "Syslog server enabled" +msgstr "Serveur de journaux systèmes activé" + +#: admin/systems/goto/class_terminalGeneric.inc:675 +msgid "Ntp server settings" +msgstr "Préférences du serveur de temps" + +#: admin/systems/goto/printer.tpl:5 +msgid "General" +msgstr "Général" + +#: admin/systems/goto/printer.tpl:8 +msgid "Printer name" +msgstr "Nom de l'imprimante" + +#: admin/systems/goto/printer.tpl:30 +msgid "Choose subtree to place user in" +msgstr "Sélectionnez la branche où sera enregistrée l'utilisateur" + +#: admin/systems/goto/printer.tpl:43 +msgid "Details" +msgstr "Détails" + +#: admin/systems/goto/printer.tpl:46 +msgid "Printer location" +msgstr "Localisation de l'imprimante" + +#: admin/systems/goto/printer.tpl:89 +msgid "Users which are allowed to use this printer" +msgstr "Utilisateurs qui sont autorisés à utiliser cette imprimante" + +#: admin/systems/goto/printer.tpl:91 +msgid "Users" +msgstr "Utilisateurs" + +#: admin/systems/goto/printer.tpl:96 admin/systems/goto/printer.tpl:120 +msgid "Add user" +msgstr "Ajouter un utilisateur" + +#: admin/systems/goto/printer.tpl:99 admin/systems/goto/printer.tpl:123 +msgid "Add group" +msgstr "Ajouter un groupe" + +#: admin/systems/goto/printer.tpl:113 +msgid "Users which are allowed to administrate this printer" +msgstr "Utilisateur qui sont autorisés à administrer cette imprimante" + +#: admin/systems/goto/printer.tpl:115 +msgid "Admins" +msgstr "Administrateurs" + +#: admin/systems/goto/chooser.tpl:1 +msgid "Choose the kind of system component you want to create" +msgstr "Choisissez le type de composant système que vous souhaitez créer" + +#: admin/systems/goto/chooser.tpl:4 +msgid "" +"Linux terminals and workstations are autocreated on bootup. For this reason " +"you're only be able to create templates for a specific tree. Servers are " +"normally automatically added too, but in some special cases you may need to " +"create a faked server entry to provide GOsa with some informations. Other " +"network components may be used for Nagios setups to create component " +"dependencies." +msgstr "" +"Les terminaux Linux et les stations de travail sont automatiquement créés au " +"démarrage. Pour cette raison vous pouvez créer un modèle uniquement pour une " +"branche spécifique. Les serveurs sont également ajoutés automatiquement, " +"mais dans certains cas vous pouvez avoir besoin de créer une pseudo entrée " +"serveur afin de fournir à GOsa diverses informations. Les autres composants " +"réseaux peuvent être utilisés lors la configuration de Nagios afin de créer " +"les dépendances des composants." + +#: admin/systems/goto/chooser.tpl:7 +msgid "Linux thin client template" +msgstr "Modèle de client léger Linux" + +#: admin/systems/goto/chooser.tpl:8 +msgid "Linux workstation template" +msgstr "Modèle de station de travail Linux" + +#: admin/systems/goto/chooser.tpl:9 +msgid "Linux Server" +msgstr "Serveur Linux" + +#: admin/systems/goto/chooser.tpl:11 +msgid "Network printer" +msgstr "Imprimante réseau" + +#: admin/systems/goto/chooser.tpl:12 +msgid "Phone" +msgstr "Téléphone" + +#: admin/systems/goto/chooser.tpl:13 +msgid "Other network component" +msgstr "Autre composant réseau" + +#: admin/systems/goto/terminal.tpl:8 +msgid "Terminal template" +msgstr "Modèle de terminaux" + +#: admin/systems/goto/terminal.tpl:10 +msgid "Terminal name" +msgstr "Nom du terminal" + +#: admin/systems/goto/terminal.tpl:178 +msgid "Inherit all" +msgstr "Hériter de tout" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:6 +msgid "Select objects to add" +msgstr "Sélectionnez les objets à ajouter" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:28 +msgid "Display objects matching" +msgstr "Afficher les objets correspondants" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:32 +msgid "Regular expression for matching object names" +msgstr "Expression régulière pour trouver les objets correspondants" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:44 +msgid "Close" +msgstr "Fermer" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#: admin/systems/ppd/class_ppdManager.inc:148 +#: admin/systems/ppd/class_ppdManager.inc:150 +msgid "PPD manager error" +msgstr "Erreur du gestionnaire de PPD" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#, php-format +msgid "The specified path '%s' does not exist." +msgstr "Le chemin '%s' n'existe pas." + +#: admin/systems/ppd/class_ppdManager.inc:148 +#, php-format +msgid "Specified PPD file '%s' cannot be opened for reading." +msgstr "Le fichier PPD '%s' ne peut pas être ouvert en lecture." + +#: admin/systems/ppd/class_ppdManager.inc:150 +#, php-format +msgid "The temporary file '%s' cannot be opened for writing." +msgstr "Le fichier temporaire '%s' n'a pas pu être ouvert en écriture." + +#: admin/systems/ppd/class_ppdManager.inc:176 +#: admin/systems/ppd/class_ppdManager.inc:313 +#, php-format +msgid "" +"Parsing PPD file %s failed - line too long. Trailing characters have been " +"ignored" +msgstr "" +"La lecture du PPD %s à échoué - ligne trop longue. Les caractères restant on " +"été ignorés" + +#: admin/systems/ppd/class_ppdManager.inc:184 +msgid "Nested groups are not supported!" +msgstr "Les groupes imbriqués ne sont pas supportés !" + +#: admin/systems/ppd/class_ppdManager.inc:188 +msgid "Group name not unique!" +msgstr "Le nom du groupe n'est pas unique !" + +#: admin/systems/ppd/class_ppdManager.inc:194 +#: admin/systems/ppd/class_ppdManager.inc:224 +msgid "Symbol values are not supported yet!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:218 +msgid "Nested options are not supported!" +msgstr "Les options imbriquées ne sont pas supportées !" + +#: admin/systems/ppd/class_ppdManager.inc:243 +msgid "PickMany is not supported yet!" +msgstr "La sélection multiple n'est pas encore supportée !" + +#: admin/systems/ppd/class_ppdManager.inc:334 +#, php-format +msgid "Parsing PPD file %s failed - no information found." +msgstr "La lecture du fichier PPD %s à échoué - pas de données." + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:223 +#: admin/systems/ppd/class_printerPPDDialog.inc:240 +#: admin/systems/ppd/class_printerPPDDialog.inc:248 +#: admin/systems/ppd/class_printerPPDDialog.inc:272 +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#: admin/systems/ppd/class_printerPPDDialog.inc:313 +#: admin/systems/ppd/class_printerPPDDialog.inc:327 +#: admin/systems/ppd/class_printerPPDDialog.inc:337 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#: admin/systems/ppd/class_printerPPDDialog.inc:551 +#: admin/systems/ppd/class_printerPPDDialog.inc:554 +#: admin/systems/ppd/class_printerPPDDialog.inc:557 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:75 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:100 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +msgid "PPD error" +msgstr "Erreur de PPD" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#, php-format +msgid "Cannot open PPD '%s'!" +msgstr "Impossible de lire le PPD '%s' !" + +#: admin/systems/ppd/class_printerPPDDialog.inc:122 +#, php-format +msgid "Cannot open PPD path '%s' for reading and writing!" +msgstr "" +"Impossible de lire et d'écrire dans le chemin spécifié pour le PPD '%s' !" + +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: addons/goto/class_goto_import_file.inc:29 +msgid "file is empty" +msgstr "Le fichier est vide" + +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#, php-format +msgid "Cannot parse PPD '%s'!" +msgstr "Ne peut pas analyser le PPD '%s' !" + +#: admin/systems/ppd/class_printerPPDDialog.inc:316 +msgid "Overwrite existing PPD" +msgstr "Ecrasement du PPD existant" + +#: admin/systems/ppd/class_printerPPDDialog.inc:317 +msgid "" +"There is already a ppd file for this kind of printer. Do you want to " +"overwrite it?" +msgstr "" +"Il y a déjà un fichier ppd pour ce type d'imprimante. Voulez vous l'écraser ?" + +#: admin/systems/ppd/class_printerPPDDialog.inc:465 +msgid "Section" +msgstr "Section" + +#: admin/systems/ppd/class_printerPPDDialog.inc:525 +#: admin/systems/ppd/class_printerPPDDialog.inc:528 +msgid "True" +msgstr "Vrai" + +#: admin/systems/ppd/class_printerPPDDialog.inc:526 +#: admin/systems/ppd/class_printerPPDDialog.inc:529 +msgid "False" +msgstr "Faux" + +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#, php-format +msgid "PPD type '%s' is not supported!" +msgstr " PPD de type '%s' non supporté !" + +#: admin/systems/ppd/class_printerPPDDialog.inc:571 +msgid "" +"Please select a valid ppd file or use 'Cancel' to go back to printer " +"configuration." +msgstr "" +"Veuillez sélectionner un fichier ppd valide ou utiliser 'Annuler' pour " +"revenir à la configuration de l'imprimante." + +#: admin/systems/ppd/remove_ppd.tpl:9 +msgid "The ppd file will be removed from the server and can not be restored." +msgstr "Le fichier ppd sera effacé du serveur et ne pourra pas être récupéré." + +#: admin/systems/ppd/printerPPDDialog.tpl:1 +msgid "Printer driver" +msgstr "Pilote d'imprimante" + +#: admin/systems/ppd/printerPPDDialog.tpl:12 +msgid "Select" +msgstr "Sélectionner" + +#: admin/systems/ppd/printerPPDDialog.tpl:16 +msgid "New driver" +msgstr "Nouveau pilote" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, php-format +msgid "Cannot locate vendor '%s' in available PPDs!" +msgstr "Impossible de localiser le vendeur '%s' dans les PPD disponibles !" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:129 +msgid "Printer ppd selection." +msgstr "Sélection du ppd de votre imprimante." + +#: addons/goto/class_target_list.inc:58 +msgid "Select the target objects for your scheduled action." +msgstr "Sélectionnez les objets de destination pour votre action programmée." + +#: addons/goto/class_target_list.inc:59 addons/goto/class_target_list.inc:60 +msgid "Available targets" +msgstr "Cibles disponibles" + +#: addons/goto/class_target_list.inc:69 +msgid "Object name" +msgstr "Nom de l'objet" + +#: addons/goto/class_target_list.inc:72 +msgid "Select to see object groups" +msgstr "Groupe d'objets" + +#: addons/goto/class_target_list.inc:72 +msgid "Show object groups" +msgstr "Montrez les groupes d'objets" + +#: addons/goto/class_target_list.inc:73 +msgid "Select to see servers" +msgstr "Sélectionnez pour voir les serveurs" + +#: addons/goto/class_target_list.inc:73 +msgid "Show servers" +msgstr "Montrez les serveurs" + +#: addons/goto/class_target_list.inc:74 +msgid "Select to see workstations" +msgstr "Station de travail Windows" + +#: addons/goto/class_target_list.inc:74 +msgid "Show workstations" +msgstr "Station de travail Windows" + +#: addons/goto/class_target_list.inc:75 +msgid "Select to see incoming objects" +msgstr "Sélectionner pour voir les objets qui arrivent" + +#: addons/goto/class_target_list.inc:75 +msgid "Show new objects" +msgstr "Montrer les nouveaux objets" + +#: addons/goto/class_target_list.inc:80 +msgid "Select to search for a specific IP range only" +msgstr "Sélectionnez pour rechercher dans plage IP spécifique" + +#: addons/goto/class_target_list.inc:80 +msgid "Match IP range" +msgstr "Correspondance de la plage d'adresses IP" + +#: addons/goto/class_target_list.inc:83 +msgid "Regular expression for matching group names" +msgstr "Expression régulière correspondant à des noms de groupe" + +#: addons/goto/class_target_list.inc:84 +msgid "IP range start" +msgstr "Début de la plage ip" + +#: addons/goto/class_target_list.inc:85 +msgid "IP range end" +msgstr "Fin de la plage ip" + +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +msgid "IP range" +msgstr "Plage ip" + +#: addons/goto/goto_import_file.tpl:1 +msgid "Import jobs" +msgstr "Importer de tâches" + +#: addons/goto/goto_import_file.tpl:3 +msgid "" +"You can import a list of jobs into the GOsa job queue. This should be a " +"semicolon seperated list of items in the following format:" +msgstr "" +"Vous pouvez importer une liste de jobs dans la queue des jobs GOsa. Cela " +"doit être un liste séparée par un point virgule dans le format suivant :" + +#: addons/goto/goto_import_file.tpl:5 +msgid "timestamp" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "MAC-address" +msgstr "Adresse mac" + +#: addons/goto/goto_import_file.tpl:5 +msgid "job type" +msgstr "Type de job" + +#: addons/goto/goto_import_file.tpl:5 +msgid "object group" +msgstr "Groupes d'objets" + +#: addons/goto/goto_import_file.tpl:5 +msgid "import base" +msgstr "base pour l'importation" + +#: addons/goto/goto_import_file.tpl:5 +msgid "full hostname" +msgstr "Nom complet de l'hôte" + +#: addons/goto/goto_import_file.tpl:5 +msgid "IP-address" +msgstr "Adresse ip" + +#: addons/goto/goto_import_file.tpl:5 +msgid "DHCP group" +msgstr "Groupe DHCP" + +#: addons/goto/goto_import_file.tpl:9 +msgid "Example" +msgstr "Exemple" + +#: addons/goto/goto_import_file.tpl:21 +msgid "Select list to import" +msgstr "Sélectionnez la liste à importer" + +#: addons/goto/goto_import_file.tpl:37 +#: addons/goto/events/DaemonEvent_update.tpl:51 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:51 +#: addons/goto/events/DaemonEvent_halt.tpl:51 +#: addons/goto/events/DaemonEvent_wakeup.tpl:51 +#: addons/goto/events/DaemonEvent_reboot.tpl:51 +#: addons/goto/events/DaemonEvent_notify.tpl:85 +#: addons/goto/events/DaemonEvent_rescan.tpl:51 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:51 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:51 +#: addons/goto/events/DaemonEvent_faireboot.tpl:51 +#: addons/goto/events/DaemonEvent_localboot.tpl:51 +#: addons/goto/events/DaemonEvent_memcheck.tpl:51 +#: addons/goto/events/DaemonEvent_activate.tpl:51 +#: addons/goto/events/DaemonEvent_lock.tpl:51 +#: addons/goto/events/DaemonEvent_reinstall.tpl:55 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:51 +msgid "Timestamp" +msgstr "Date" + +#: addons/goto/goto_import_file.tpl:38 +#: addons/goto/class_goto_import_file.inc:168 +msgid "MAC" +msgstr "MAC" + +#: addons/goto/goto_import_file.tpl:39 +#: addons/goto/class_goto_import_file.inc:171 +msgid "Event" +msgstr "Evenement" + +#: addons/goto/goto_import_file.tpl:42 +msgid "FQDN" +msgstr "" + +#: addons/goto/goto_import_file.tpl:43 +msgid "IP" +msgstr "" + +#: addons/goto/goto_import_file.tpl:44 +msgid "DHCP" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:113 +msgid "File" +msgstr "Fichier" + +#: addons/goto/class_gotoLogView.inc:115 +msgid "Date" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:202 +msgid "Log view" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:203 +msgid "GOto log view" +msgstr "" + +#: addons/goto/class_gotomasses.inc:26 +msgid "Deployment status" +msgstr "Etat du déploiement" + +#: addons/goto/class_gotomasses.inc:27 addons/goto/main.inc:66 +msgid "System deployment status" +msgstr "Etat du déploiement des systèmes" + +#: addons/goto/class_gotomasses.inc:270 +#, php-format +msgid "The following jobs couldn't be deleted, they have to be aborted: %s" +msgstr "" +"Les jobs suivants ne peuvent pas être effacés, il doivent être annulés: %s" + +#: addons/goto/class_gotomasses.inc:360 +msgid "This menu allows you to remove and change the properties of GOsa tasks." +msgstr "" +"Ce menu vous permet d'effacer et d'éditer les propriétés des tâches GOsa." + +#: addons/goto/class_gotomasses.inc:361 +msgid "List of queued jobs" +msgstr "Liste des tâches dans la queue" + +#: addons/goto/class_gotomasses.inc:380 +msgid "Resume" +msgstr "Redémarrer" + +#: addons/goto/class_gotomasses.inc:381 +msgid "Pause" +msgstr "Suspendre" + +#: addons/goto/class_gotomasses.inc:382 +msgid "Abort" +msgstr "Annuler" + +#: addons/goto/class_gotomasses.inc:408 +#: addons/goto/events/DaemonEvent_update.tpl:47 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:47 +#: addons/goto/events/DaemonEvent_halt.tpl:47 +#: addons/goto/events/DaemonEvent_wakeup.tpl:47 +#: addons/goto/events/DaemonEvent_reboot.tpl:47 +#: addons/goto/events/DaemonEvent_notify.tpl:81 +#: addons/goto/events/DaemonEvent_rescan.tpl:47 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:47 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:47 +#: addons/goto/events/DaemonEvent_faireboot.tpl:47 +#: addons/goto/events/class_DaemonEvent_notify.inc:77 +#: addons/goto/events/class_DaemonEvent_notify.inc:78 +#: addons/goto/events/class_DaemonEvent_notify.inc:103 +#: addons/goto/events/DaemonEvent_localboot.tpl:47 +#: addons/goto/events/DaemonEvent_memcheck.tpl:47 +#: addons/goto/events/DaemonEvent_activate.tpl:47 +#: addons/goto/events/DaemonEvent_lock.tpl:47 +#: addons/goto/events/DaemonEvent_reinstall.tpl:51 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:47 +msgid "Target" +msgstr "Cible" + +#: addons/goto/class_gotomasses.inc:409 +msgid "Task" +msgstr "Tâches" + +#: addons/goto/class_gotomasses.inc:411 +#: addons/goto/events/DaemonEvent_update.tpl:9 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:9 +#: addons/goto/events/DaemonEvent_halt.tpl:9 +#: addons/goto/events/DaemonEvent_wakeup.tpl:9 +#: addons/goto/events/DaemonEvent_reboot.tpl:9 +#: addons/goto/events/DaemonEvent_notify.tpl:28 +#: addons/goto/events/DaemonEvent_rescan.tpl:9 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:9 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:9 +#: addons/goto/events/DaemonEvent_faireboot.tpl:9 +#: addons/goto/events/DaemonEvent_localboot.tpl:9 +#: addons/goto/events/DaemonEvent_memcheck.tpl:9 +#: addons/goto/events/DaemonEvent_lock.tpl:9 +#: addons/goto/events/DaemonEvent_reinstall.tpl:9 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:9 +msgid "Schedule" +msgstr "Planificateur" + +#: addons/goto/class_gotomasses.inc:413 +#: addons/goto/events/DaemonEvent_update.tpl:39 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:39 +#: addons/goto/events/DaemonEvent_halt.tpl:39 +#: addons/goto/events/DaemonEvent_wakeup.tpl:39 +#: addons/goto/events/DaemonEvent_reboot.tpl:39 +#: addons/goto/events/DaemonEvent_notify.tpl:73 +#: addons/goto/events/DaemonEvent_rescan.tpl:39 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:39 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:39 +#: addons/goto/events/DaemonEvent_faireboot.tpl:39 +#: addons/goto/events/DaemonEvent_localboot.tpl:39 +#: addons/goto/events/DaemonEvent_memcheck.tpl:39 +#: addons/goto/events/DaemonEvent_activate.tpl:39 +#: addons/goto/events/DaemonEvent_lock.tpl:39 +#: addons/goto/events/DaemonEvent_reinstall.tpl:43 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:39 +msgid "Status" +msgstr "Statut" + +#: addons/goto/class_gotomasses.inc:441 +msgid "Pause job" +msgstr "Suspendre le job" + +#: addons/goto/class_gotomasses.inc:448 +msgid "Resume job" +msgstr "Redémarrer le job" + +#: addons/goto/class_gotomasses.inc:455 +msgid "Execute now" +msgstr "Exécuter maintenant" + +#: addons/goto/class_gotomasses.inc:462 +msgid "View logs" +msgstr "Voir les journaux systèmes" + +#: addons/goto/class_gotomasses.inc:477 +msgid "Abort job" +msgstr "Annuler le job" + +#: addons/goto/class_gotomasses.inc:521 +msgid "Waiting" +msgstr "Avertissement" + +#: addons/goto/class_gotomasses.inc:527 +msgid "Processed" +msgstr "Terminé" + +#: addons/goto/class_gotomasses.inc:542 +msgid "Detection" +msgstr "Détection" + +#: addons/goto/class_gotomasses.inc:550 +msgid "in progress" +msgstr "en cours" + +#: addons/goto/class_gotomasses.inc:563 +msgid "immediately" +msgstr "Immédiatement" + +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:735 +#: addons/goto/class_gotomasses.inc:775 +#, php-format +msgid "Cannot update queue entry: %s" +msgstr "Impossible de mettre à jour les files d'attente: %s" + +#: addons/goto/class_gotomasses.inc:691 +#, php-format +msgid "Cannot update queue entries." +msgstr "Impossible de mettre à jour les files d'attentes." + +#: addons/goto/class_gotomasses.inc:740 +#, php-format +msgid "Required class '%s' cannot be found: job not aborted!" +msgstr "La classe obligatoire '%s' n'a pas été trouvée: job non annulé !" + +#: addons/goto/class_gotomasses.inc:816 +#, php-format +msgid "Cannot load queue entries: %s" +msgstr "Impossible de charger les entrées de la queue: %s" + +#: addons/goto/class_gotomasses.inc:910 addons/goto/class_gotomasses.inc:916 +msgid "System deployment" +msgstr "Déploiement de système" + +#: addons/goto/class_gotomasses.inc:911 +msgid "Provide a mechanism to automatically activate systems" +msgstr "" +"Procure un mécanisme pour activer un ensemble de systèmes automatiquement" + +#: addons/goto/log_view.tpl:7 +msgid "Available logs" +msgstr "Journaux systèmes disponibles" + +#: addons/goto/log_view.tpl:12 +msgid "Selected log" +msgstr "Sélectionner le journal système" + +#: addons/goto/log_view.tpl:17 +msgid "No logs for this host available!" +msgstr "Pas de journaux systèmes disponibles pour cet hôte !" + +#: addons/goto/events/class_DaemonEvent_lock.inc:29 +#: addons/goto/events/class_DaemonEvent_lock.inc:30 +msgid "Lock" +msgstr "Verrouillé" + +#: addons/goto/events/DaemonEvent_update.tpl:18 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:18 +#: addons/goto/events/DaemonEvent_halt.tpl:18 +#: addons/goto/events/DaemonEvent_wakeup.tpl:18 +#: addons/goto/events/DaemonEvent_reboot.tpl:18 +#: addons/goto/events/DaemonEvent_rescan.tpl:18 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:18 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:18 +#: addons/goto/events/DaemonEvent_faireboot.tpl:18 +#: addons/goto/events/DaemonEvent_localboot.tpl:18 +#: addons/goto/events/DaemonEvent_memcheck.tpl:18 +#: addons/goto/events/DaemonEvent_activate.tpl:18 +#: addons/goto/events/DaemonEvent_lock.tpl:18 +#: addons/goto/events/DaemonEvent_reinstall.tpl:18 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:18 +msgid "System list" +msgstr "Liste des systèmes" + +#: addons/goto/events/DaemonEvent_update.tpl:35 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:35 +#: addons/goto/events/DaemonEvent_halt.tpl:35 +#: addons/goto/events/DaemonEvent_wakeup.tpl:35 +#: addons/goto/events/DaemonEvent_reboot.tpl:35 +#: addons/goto/events/DaemonEvent_notify.tpl:69 +#: addons/goto/events/DaemonEvent_rescan.tpl:35 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:35 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:35 +#: addons/goto/events/DaemonEvent_faireboot.tpl:35 +#: addons/goto/events/DaemonEvent_localboot.tpl:35 +#: addons/goto/events/DaemonEvent_memcheck.tpl:35 +#: addons/goto/events/DaemonEvent_activate.tpl:35 +#: addons/goto/events/DaemonEvent_lock.tpl:35 +#: addons/goto/events/DaemonEvent_reinstall.tpl:35 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:35 +msgid "ID" +msgstr "" + +#: addons/goto/events/DaemonEvent_update.tpl:43 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:43 +#: addons/goto/events/DaemonEvent_halt.tpl:43 +#: addons/goto/events/DaemonEvent_wakeup.tpl:43 +#: addons/goto/events/DaemonEvent_reboot.tpl:43 +#: addons/goto/events/DaemonEvent_notify.tpl:77 +#: addons/goto/events/DaemonEvent_rescan.tpl:43 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:43 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:43 +#: addons/goto/events/DaemonEvent_faireboot.tpl:43 +#: addons/goto/events/DaemonEvent_localboot.tpl:43 +#: addons/goto/events/DaemonEvent_memcheck.tpl:43 +#: addons/goto/events/DaemonEvent_activate.tpl:43 +#: addons/goto/events/DaemonEvent_lock.tpl:43 +#: addons/goto/events/DaemonEvent_reinstall.tpl:47 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:43 +msgid "Result" +msgstr "Résultat" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:37 +msgid "GOto reload" +msgstr "Rechargement de Goto" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:38 +msgid "Reload GOto settings" +msgstr "Recharger les paramètres GOto" + +#: addons/goto/events/class_DaemonEvent_activate.inc:29 +#: addons/goto/events/class_DaemonEvent_activate.inc:30 +msgid "Unlock" +msgstr "Deverrouillé" + +#: addons/goto/events/class_DaemonEvent_faireboot.inc:28 +#: addons/goto/events/class_DaemonEvent_faireboot.inc:29 +msgid "Abort installation" +msgstr "Annuler l'installation" + +#: addons/goto/events/target_list.tpl:5 +msgid "Apply" +msgstr "Appliquer" + +#: addons/goto/events/target_list.tpl:6 +msgid "Cancel" +msgstr "Annuler" + +#: addons/goto/events/DaemonEvent_notify.tpl:7 +msgid "Message settings" +msgstr "Paramètres des messages" + +#: addons/goto/events/DaemonEvent_notify.tpl:10 +msgid "Sender" +msgstr "Expéditeur" + +#: addons/goto/events/DaemonEvent_notify.tpl:14 +#: addons/goto/events/class_DaemonEvent_notify.inc:94 +msgid "Subject" +msgstr "Sujet" + +#: addons/goto/events/DaemonEvent_notify.tpl:18 +#: addons/goto/events/class_DaemonEvent_notify.inc:97 +msgid "Message" +msgstr "" + +#: addons/goto/events/DaemonEvent_notify.tpl:37 +msgid "Target users" +msgstr "Utilisateurs cibles" + +#: addons/goto/events/DaemonEvent_notify.tpl:44 +msgid "Target groups" +msgstr "Groupes cibles" + +#: addons/goto/events/class_DaemonEvent.inc:119 +msgid "This job has no template!" +msgstr "Ce job n'a pas de modèle !" + +#: addons/goto/events/class_DaemonEvent.inc:135 +#, php-format +msgid "Create '%s' job" +msgstr "Création du job '%s'" + +#: addons/goto/events/class_DaemonEvent.inc:234 +msgid "Add" +msgstr "Ajouter" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:31 +msgid "Reload fai release db" +msgstr "Recharger la base de données fai" + +#: addons/goto/events/class_DaemonEvent_wakeup.inc:30 +msgid "Wake system" +msgstr "Réveiller un système" + +#: addons/goto/events/class_DaemonEvent_activate_new.inc:40 +#: addons/goto/events/class_DaemonEvent_activate_new.inc:41 +msgid "Activate new" +msgstr "Activé les nouveaux" + +#: addons/goto/events/class_EventTargetAddList.inc:51 +#: addons/goto/events/class_EventTargetAddUsersList.inc:45 +msgid "Targets" +msgstr "Cibles" + +#: addons/goto/events/class_EventTargetAddList.inc:55 +msgid "" +"This dialog shows all available targets for the event. Check the targets you " +"want to add and use the 'Apply' button." +msgstr "" +"Cette fenêtre montre tous les objets disponibles pour votre événement, " +"vérifier les objets quevous souhaitez ajouter et d'utiliser le bouton " +"'Utiliser' pour accepter." + +#: addons/goto/events/class_EventTargetAddList.inc:66 +#: addons/goto/events/class_EventTargetAddUsersList.inc:60 +msgid "System / Department" +msgstr "Systèmes / Département" + +#: addons/goto/events/class_EventTargetAddList.inc:73 +msgid "Display server" +msgstr "Afficher les serveurs" + +#: addons/goto/events/class_EventTargetAddList.inc:74 +msgid "Display workstation" +msgstr "Afficher les stations de travail" + +#: addons/goto/events/class_EventTargetAddList.inc:75 +msgid "Display object groups" +msgstr "Afficher les groupes objets correspondants" + +#: addons/goto/events/class_EventTargetAddList.inc:76 +msgid "Filter by IP range" +msgstr "Filtrer les adresse IP par étendue" + +#: addons/goto/events/timestamp_select.tpl:3 +msgid "Year" +msgstr "Année" + +#: addons/goto/events/timestamp_select.tpl:4 +msgid "Month" +msgstr "Mois" + +#: addons/goto/events/timestamp_select.tpl:5 +msgid "Day" +msgstr "Jour" + +#: addons/goto/events/timestamp_select.tpl:7 +msgid "Hour" +msgstr "Heure" + +#: addons/goto/events/timestamp_select.tpl:8 +msgid "Minute" +msgstr "Minutes" + +#: addons/goto/events/timestamp_select.tpl:9 +msgid "Second" +msgstr "Secondes" + +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:28 +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:29 +msgid "Reload LDAP config" +msgstr "Recharger le configuration LDAP" + +#: addons/goto/events/class_DaemonEvent_notify.inc:46 +#: addons/goto/events/class_DaemonEvent_notify.inc:47 +msgid "Send message" +msgstr "Envoyer un message" + +#: addons/goto/events/class_DaemonEvent_notify.inc:100 +msgid "From" +msgstr "Depuis" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:49 +msgid "" +"This dialog shows all available targets for your event, check the targets " +"you want to add and use the 'Use' button to accept." +msgstr "" +"Cette fenêtre montre tous les objets disponibles pour votre événement, " +"vérifier les objets quevous souhaitez ajouter et d'utiliser le bouton " +"'Utiliser' pour accepter." + +#: addons/goto/events/class_EventTargetAddUsersList.inc:65 +msgid "Display users" +msgstr "Afficher les utilisateurs" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:66 +msgid "Display groups" +msgstr "Afficher les groupes" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:31 +msgid "Reload fai server db" +msgstr "Recharger la base de données FAI" + +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:28 +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:29 +msgid "Installation activation" +msgstr "Activation de l'installation" + +#: addons/goto/events/DaemonEvent_activate.tpl:9 +msgid "Time schedule" +msgstr "Horaire" + +#: addons/goto/events/DaemonEvent_reinstall.tpl:39 +msgid "Progress" +msgstr "Progression" + +#: addons/goto/class_goto_import_file.inc:90 +msgid "" +"Selected entries will be skipped because of errors. Do you want to proceed?" +msgstr "" +"Les entrées sélectionnées seront ignorées à cause des erreurs qu'elle " +"contiennent. Voulez vous continuer ?" + +#: addons/goto/class_goto_import_file.inc:131 +#, php-format +msgid "Import complete: %s events successfully send, %s failed" +msgstr "" +"L'importation est finie : %s évènements ont été envoyés, %s ont échoués" + +#: personal/environment/class_environment.inc:9 +#: personal/environment/class_environment.inc:433 +#: personal/environment/class_environment.inc:434 +#: personal/environment/class_environment.inc:442 +#: personal/environment/class_environment.inc:443 +#: personal/environment/class_environment.inc:446 +#: personal/environment/class_environment.inc:447 +#: personal/environment/class_environment.inc:450 +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:473 +#: personal/environment/class_environment.inc:474 +#: personal/environment/class_environment.inc:478 +#: personal/environment/class_environment.inc:479 +#: personal/environment/class_environment.inc:482 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1766 +msgid "Environment" +msgstr "Environnement" + +#: personal/environment/class_environment.inc:139 +#, php-format +msgid "Device '%s' is not available anymore. It will be removed!" +msgstr "Le périphérique '%s' n'est plus disponible. Il va être supprimé !" + +#: personal/environment/class_environment.inc:212 +msgid "auto" +msgstr "automatique" + +#: personal/environment/class_environment.inc:234 +#, php-format +msgid "Cannot open file '%s'!" +msgstr "Impossible de lire le fichier '%s' !" + +#: personal/environment/class_environment.inc:271 +#: personal/environment/class_environment.inc:272 +msgid "disabled" +msgstr "désactivé" + +#: personal/environment/class_environment.inc:307 +#, php-format +msgid "" +"Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk " +"profile will be disabled!" +msgstr "" +"Le profil Kiosk '%s' situé sur le serveur '%s' n'est plus disponible. Le " +"profil Kiosk sera désactivé !" + +#: personal/environment/class_environment.inc:360 +#, php-format +msgid "Profile server '%s' is not available anymore. Switched to server '%s'." +msgstr "" +"Le serveur de profil '%s' n'est plus disponible. Le serveur de profil est " +"changé en '%s'." + +#: personal/environment/class_environment.inc:364 +#, php-format +msgid "" +"Profile server '%s' is not available anymore. Kiosk profile will be disabled." +msgstr "" +"Le serveur de profil sélectionné '%s' n'est plus disponible. Le profil Kiosk " +"sera désactivé." + +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1148 +msgid "POSIX" +msgstr "UNIX" + +#: personal/environment/class_environment.inc:583 +#: personal/environment/environment.tpl:246 +msgid "Logon scripts" +msgstr "Scripts de démarrage" + +#: personal/environment/class_environment.inc:673 +msgid "Share" +msgstr "Partage" + +#: personal/environment/class_environment.inc:763 +#: personal/environment/environment.tpl:257 +#: personal/environment/environment.tpl:303 +msgid "Used by all users" +msgstr "Utilisé pour tout les utilisateurs" + +#: personal/environment/class_environment.inc:766 +#: personal/environment/environment.tpl:259 +#: personal/environment/environment.tpl:305 +msgid "Used by some users" +msgstr "Utilisé par certains utilisateurs" + +#: personal/environment/class_environment.inc:779 +#: personal/environment/class_environment.inc:780 +#: personal/environment/class_environment.inc:789 +#: personal/environment/class_environment.inc:790 +msgid "Reset password hash" +msgstr "Réinitialiser le mot de passe" + +#: personal/environment/class_environment.inc:794 +msgid "Delete share entry" +msgstr "Supprimer ce partage" + +#: personal/environment/class_environment.inc:988 +msgid "Cannot set default printer flag for groups!" +msgstr "" + +#: personal/environment/class_environment.inc:1141 +#: personal/environment/class_environment.inc:1711 +#: personal/environment/class_environment.inc:1780 +msgid "Profile quota" +msgstr "Quota du profil" + +#: personal/environment/class_environment.inc:1148 +msgid "environment" +msgstr "environnement" + +#: personal/environment/class_environment.inc:1329 +msgid "group share" +msgstr "partage de groupe" + +#: personal/environment/class_environment.inc:1363 +msgid "Administrator" +msgstr "Administrateur" + +#: personal/environment/class_environment.inc:1368 +msgid "Default printer" +msgstr "Imprimante par défaut" + +#: personal/environment/class_environment.inc:1767 +msgid "Environment settings" +msgstr "Préférences d'environnement" + +#: personal/environment/class_environment.inc:1771 +msgid "My account" +msgstr "Mon Compte" + +#: personal/environment/class_environment.inc:1775 +msgid "Command to extend the list of possible screen resolutions" +msgstr "Commande pour étendre la liste des résolutions écrans possibles" + +#: personal/environment/class_environment.inc:1779 +msgid "Profile server" +msgstr "Serveur de profil" + +#: personal/environment/class_environment.inc:1781 +#: personal/environment/environment.tpl:41 +#: personal/environment/environment.tpl:106 +msgid "Cache profile localy" +msgstr "Cacher le profil localement" + +#: personal/environment/class_environment.inc:1785 +#: personal/environment/environment.tpl:174 +msgid "Resolution changeable during session" +msgstr "La résolution peut être changée pendant la session" + +#: personal/environment/class_environment.inc:1787 +#: personal/environment/logonManagement.tpl:56 +msgid "Logon script" +msgstr "Script de démarrage" + +#: personal/environment/environment.tpl:3 +msgid "The environment extension is currently disabled." +msgstr "L'extension d'environnement est actuellement désactivée." + +#: personal/environment/environment.tpl:11 +msgid "Profiles" +msgstr "Profils" + +#: personal/environment/environment.tpl:14 +#: personal/environment/environment.tpl:207 +#: personal/environment/environment.tpl:288 +msgid "Environment managment settings" +msgstr "Paramètres des préférences d'environnement" + +#: personal/environment/environment.tpl:22 +#: personal/environment/environment.tpl:55 +msgid "Use profile managment" +msgstr "Utiliser la gestion des profiles" + +#: personal/environment/environment.tpl:26 +#: personal/environment/environment.tpl:65 +msgid "Profil path" +msgstr "Chemin du Profil" + +#: personal/environment/environment.tpl:36 +#: personal/environment/environment.tpl:95 +msgid "MB" +msgstr "" + +#: personal/environment/environment.tpl:47 +msgid "Profile managment" +msgstr "Gestion du profile" + +#: personal/environment/environment.tpl:62 +msgid "Profile server managment" +msgstr "Gestion des profiles serveurs" + +#: personal/environment/environment.tpl:89 +msgid "Profil quota" +msgstr "Quota du profil" + +#: personal/environment/environment.tpl:120 +msgid "Kiosk profile settings" +msgstr "Paramètres du profil Kiosk" + +#: personal/environment/environment.tpl:145 +msgid "Profile" +msgstr "Profil" + +#: personal/environment/environment.tpl:164 +msgid "Manage" +msgstr "Gérer" + +#: personal/environment/environment.tpl:222 +msgid "User used to connect to the share" +msgstr "Utilisateur sélectionné pour la connexion au partage" + +#: personal/environment/environment.tpl:225 +msgid "Select a share" +msgstr "Sélectionnez un partage" + +#: personal/environment/environment.tpl:233 +msgid "Mount path" +msgstr "Point de montage" + +#: personal/environment/environment.tpl:248 +#: personal/environment/logonManagement.tpl:1 +#: personal/environment/logonManagement.tpl:5 +msgid "Logon script management" +msgstr "Administration des scripts de démarrage" + +#: personal/environment/environment.tpl:295 +msgid "Hotplug device settings" +msgstr "Paramètre des périphériques Hotplug" + +#: personal/environment/environment.tpl:342 +msgid "" +"Using this option will overwrite the complete printer settings for all " +"currently edited objects!" +msgstr "" +"L'utilisation de cette option écrasera les paramètres de tout les objets " +"actuellement édités !" + +#: personal/environment/environment.tpl:343 +#: personal/environment/environment.tpl:376 +msgid "Printer settings" +msgstr "Paramètres de l'imprimante" + +#: personal/environment/environment.tpl:360 +#: personal/environment/environment.tpl:393 +msgid "Toggle admin" +msgstr "Afficher/Cacher l'administrateur" + +#: personal/environment/environment.tpl:363 +#: personal/environment/environment.tpl:396 +msgid "Toggle default" +msgstr "Afficher/Cacher réglages par défaut" + +#: personal/environment/class_logonManagementDialog.inc:107 +#: personal/environment/logonManagement.tpl:10 +msgid "Script name" +msgstr "Nom du script" + +#: personal/environment/main.inc:134 +msgid "User environment settings" +msgstr "Utiliser les préférences d'environnement" + +#: personal/environment/class_selectPrinterDialog.inc:107 +msgid "Please select a printer!" +msgstr "Veuillez sélectionner une imprimante !" + +#: personal/environment/class_hotplugDialog.inc:64 +msgid "Please select a hotplug device!" +msgstr "Veuillez sélectionner un périphérique hotplug !" + +#: personal/environment/selectPrinterDialog.tpl:1 +msgid "Add printer devices" +msgstr "Ajouter des d'imprimantes" + +#: personal/environment/selectPrinterDialog.tpl:48 +msgid "Display printers matching" +msgstr "Afficher les imprimantes correspondantes" + +#: personal/environment/selectPrinterDialog.tpl:53 +msgid "Regular expression for matching printer names" +msgstr "Expression régulière concordant avec les noms des imprimantes" + +#: personal/environment/logonManagement.tpl:8 +msgid "Logon script settings" +msgstr "Paramètres des scripts de démarrage" + +#: personal/environment/logonManagement.tpl:24 +msgid "Priority" +msgstr "Priorité" + +#: personal/environment/logonManagement.tpl:34 +msgid "Logon script flags" +msgstr "Paramètres des scripts de démarrage" + +#: personal/environment/logonManagement.tpl:38 +msgid "Last script" +msgstr "Dernier script" + +#: personal/environment/logonManagement.tpl:44 +msgid "Script can be replaced by user" +msgstr "Le script peut être remplacé par l'utilisateur" + +#: personal/environment/hotplugDialog.tpl:1 +msgid "Add hotplug devices" +msgstr "Ajouter des périphériques hotplug" + +#: personal/environment/hotplugDialog.tpl:5 +msgid "Hotplug management" +msgstr "Gestion des périphériques Hotplug" + +#: personal/environment/hotplugDialog.tpl:10 +msgid "Select hotplug device to add" +msgstr "Sélectionner le périphérique hotplug à ajouter" + +#: personal/environment/hotplugDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Sélectionner le département où sera effectuée la recherche" + +#: personal/environment/hotplugDialog.tpl:48 +msgid "Regular expression for matching hotplugs" +msgstr "" +"Expression régulière concordant avec les noms des périphériques hotplug" diff --git a/trunk/gosa-plugins/goto/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/goto/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..97e21bdd2 --- /dev/null +++ b/trunk/gosa-plugins/goto/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,6826 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:31+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/ogroups/goto/termgroup.tpl:2 admin/devices/remove.tpl:2 +#: admin/applications/remove.tpl:2 admin/mimetypes/remove.tpl:2 +#: admin/systems/ppd/remove_ppd.tpl:2 addons/goto/remove.tpl:2 +#: personal/environment/class_environment.inc:139 +#: personal/environment/class_environment.inc:307 +#: personal/environment/class_environment.inc:360 +#: personal/environment/class_environment.inc:364 +msgid "Warning" +msgstr "Attenzione" + +#: admin/ogroups/goto/termgroup.tpl:2 +msgid "" +"Actions you choose here influence all systems in this object group. " +"Additionally, all values editable here can be inherited by the clients " +"assigned to this object group." +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:6 +#: admin/devices/class_deviceGeneric.inc:251 +#: admin/applications/class_applicationGeneric.inc:597 +#: admin/mimetypes/generic.tpl:4 admin/mimetypes/paste_generic.tpl:4 +#: admin/mimetypes/class_mimetypeGeneric.inc:715 +#: admin/systems/goto/class_printGeneric.inc:920 +#: admin/systems/goto/class_workstationGeneric.inc:698 +msgid "Generic" +msgstr "Generale" + +#: admin/ogroups/goto/termgroup.tpl:14 +#: admin/ogroups/goto/class_termgroup.inc:145 +#: admin/systems/goto/workstation.tpl:95 +#: admin/systems/goto/class_workstationGeneric.inc:489 +#: admin/systems/goto/class_terminalGeneric.inc:480 +#: admin/systems/goto/terminal.tpl:117 +msgid "NTP server" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:17 admin/systems/goto/workstation.tpl:98 +#: admin/systems/goto/terminal.tpl:120 +msgid "Choose server to use for synchronizing time" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:47 +#: admin/ogroups/goto/class_termgroup.inc:378 +#: admin/systems/goto/workstation.tpl:55 +#: admin/systems/goto/class_terminalGeneric.inc:669 +#: admin/systems/goto/terminal.tpl:47 +msgid "Mode" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:50 admin/systems/goto/workstation.tpl:58 +#: admin/systems/goto/terminal.tpl:50 +msgid "Select terminal mode" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:58 +#: admin/ogroups/goto/class_termgroup.inc:379 +#: admin/systems/services/syslog/class_goSyslogServer.inc:27 +#: admin/systems/services/syslog/class_goSyslogServer.inc:47 +#: admin/systems/goto/workstation.tpl:65 +#: admin/systems/goto/class_workstationGeneric.inc:712 +#: admin/systems/goto/terminal.tpl:57 +msgid "Syslog server" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:61 admin/systems/goto/workstation.tpl:68 +#: admin/systems/goto/terminal.tpl:60 +msgid "Choose server to use for logging" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:69 +#: admin/ogroups/goto/class_termgroup.inc:382 +#: admin/systems/goto/class_terminalGeneric.inc:672 +#: admin/systems/goto/terminal.tpl:76 +msgid "Root server" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:72 admin/systems/goto/terminal.tpl:79 +msgid "Select NFS root filesystem to use" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:79 +#: admin/ogroups/goto/class_termgroup.inc:383 +#: admin/systems/goto/class_terminalGeneric.inc:673 +#: admin/systems/goto/terminal.tpl:86 +msgid "Swap server" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:82 admin/systems/goto/terminal.tpl:89 +msgid "Choose NFS filesystem to place swap files on" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:110 admin/systems/goto/workstation.tpl:130 +#: admin/systems/goto/terminal.tpl:156 addons/goto/class_gotomasses.inc:415 +msgid "Action" +msgstr "Azione" + +#: admin/ogroups/goto/termgroup.tpl:115 admin/systems/goto/workstation.tpl:137 +#: admin/systems/goto/terminal.tpl:161 +msgid "Select action to execute for this terminal" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:123 admin/applications/generic.tpl:24 +#: admin/applications/class_applicationGeneric.inc:438 +#: admin/applications/class_applicationGeneric.inc:609 +#: admin/systems/goto/workstation.tpl:146 +#: admin/systems/goto/workstation.tpl:150 admin/systems/goto/terminal.tpl:169 +#: addons/goto/class_gotomasses.inc:383 +msgid "Execute" +msgstr "Esegui" + +#: admin/ogroups/goto/class_termgroup.inc:48 +#: admin/systems/goto/class_workstationGeneric.inc:138 +#: admin/systems/goto/class_terminalGeneric.inc:122 +#, fuzzy +msgid "Activated" +msgstr "Privato" + +#: admin/ogroups/goto/class_termgroup.inc:49 +#: admin/systems/goto/class_workstationGeneric.inc:139 +#: admin/systems/goto/class_terminalGeneric.inc:121 +#: addons/goto/class_gotomasses.inc:538 +msgid "Locked" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:95 +#: admin/systems/goto/class_terminalGeneric.inc:281 +#, fuzzy +msgid "Local swap" +msgstr "Nome locazione" + +#: admin/ogroups/goto/class_termgroup.inc:101 +#: admin/ogroups/goto/class_termgroup.inc:113 +#: admin/systems/goto/class_terminalStartup.inc:116 +#: admin/systems/goto/class_terminalStartup.inc:120 +#: admin/systems/goto/class_terminalService.inc:175 +#: admin/systems/goto/class_terminalService.inc:256 +#: admin/systems/goto/class_terminalService.inc:264 +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_terminalService.inc:270 +#: admin/systems/goto/class_terminalService.inc:273 +#: admin/systems/goto/class_terminalService.inc:276 +#: admin/systems/goto/class_terminalService.inc:279 +#: admin/systems/goto/class_terminalService.inc:282 +#: admin/systems/goto/class_workstationGeneric.inc:154 +#: admin/systems/goto/class_workstationStartup.inc:180 +#: admin/systems/goto/class_workstationStartup.inc:210 +#: admin/systems/goto/class_workstationService.inc:191 +#: admin/systems/goto/class_workstationService.inc:194 +#: admin/systems/goto/class_workstationService.inc:197 +#: admin/systems/goto/class_workstationService.inc:200 +#: admin/systems/goto/class_workstationService.inc:203 +#: admin/systems/goto/class_workstationService.inc:206 +#: admin/systems/goto/class_workstationService.inc:209 +#: admin/systems/goto/class_workstationService.inc:220 +#: admin/systems/goto/class_workstationService.inc:221 +#: admin/systems/goto/class_workstationService.inc:222 +#: admin/systems/goto/class_workstationService.inc:223 +#: admin/systems/goto/class_workstationService.inc:224 +#: admin/systems/goto/class_workstationService.inc:225 +#: admin/systems/goto/class_workstationService.inc:226 +#: admin/systems/goto/class_terminalGeneric.inc:137 +#: admin/systems/goto/class_terminalGeneric.inc:287 +#: admin/systems/goto/class_terminalGeneric.inc:299 +msgid "inherited" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:203 +#: admin/systems/goto/class_terminalService.inc:666 +#: admin/systems/goto/class_workstationGeneric.inc:212 +#: admin/systems/goto/class_workstationGeneric.inc:635 +#: admin/systems/goto/class_workstationStartup.inc:926 +#: admin/systems/goto/class_workstationStartup.inc:1053 +#: admin/systems/goto/class_workstationStartup.inc:1113 +#: admin/systems/goto/class_workstationService.inc:554 +#: admin/systems/goto/class_terminalGeneric.inc:187 +#: admin/systems/goto/class_terminalGeneric.inc:594 +#: addons/goto/class_gotomasses.inc:328 +#: addons/goto/class_goto_import_file.inc:124 +#, fuzzy +msgid "Service infrastructure" +msgstr "Seleziona per mostrare le applicazioni" + +#: admin/ogroups/goto/class_termgroup.inc:207 +#: admin/systems/goto/class_workstationGeneric.inc:216 +#: admin/systems/goto/class_terminalGeneric.inc:191 +msgid "Event error" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:208 +#: admin/systems/goto/class_workstationGeneric.inc:217 +#: admin/systems/goto/class_terminalGeneric.inc:192 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:265 +#: addons/goto/events/class_DaemonEvent_halt.inc:31 +#: addons/goto/events/class_DaemonEvent_halt.inc:32 +msgid "Switch off" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:266 +#: addons/goto/events/class_DaemonEvent_reboot.inc:29 +#: addons/goto/events/class_DaemonEvent_reboot.inc:30 +msgid "Reboot" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:258 +#, fuzzy +msgid "Instant update" +msgstr "Crea estensioni telefoniche" + +#: admin/ogroups/goto/class_termgroup.inc:259 +msgid "Scheduled update" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:260 +msgid "Wake" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:261 +#: admin/systems/goto/class_workstationGeneric.inc:300 +#: admin/systems/goto/class_workstationGeneric.inc:308 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:32 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:33 +msgid "Reinstall" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:262 +#: admin/systems/goto/class_workstationGeneric.inc:301 +#: addons/goto/events/class_DaemonEvent_rescan.inc:28 +#: addons/goto/events/class_DaemonEvent_rescan.inc:29 +#, fuzzy +msgid "Rescan hardware" +msgstr "Dispositivo telefonico" + +#: admin/ogroups/goto/class_termgroup.inc:263 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:28 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:29 +msgid "Memory test" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:264 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:28 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:29 +#, fuzzy +msgid "System analysis" +msgstr "Log di sitema" + +#: admin/ogroups/goto/class_termgroup.inc:362 +#: admin/groups/apps/class_groupApplication.inc:649 +#: admin/groups/apps/class_groupApplication.inc:1330 +#: admin/groups/apps/class_groupApplication.inc:1344 +#: admin/groups/apps/class_groupApplication.inc:1358 +#: admin/devices/class_deviceGeneric.inc:196 +#: admin/applications/class_applicationParameters.inc:161 +#: admin/applications/class_applicationParameters.inc:224 +#: admin/applications/class_applicationGeneric.inc:271 +#: admin/applications/class_applicationGeneric.inc:285 +#: admin/applications/class_applicationGeneric.inc:515 +#: admin/mimetypes/class_mimetypeGeneric.inc:494 +#: admin/mimetypes/class_mimetypeGeneric.inc:506 +#: admin/mimetypes/class_mimetypeGeneric.inc:521 +#: admin/systems/services/kiosk/class_goKioskService.inc:249 +#: admin/systems/services/ldap/class_goLdapServer.inc:117 +#: admin/systems/services/ntp/class_goNtpServer.inc:98 +#: admin/systems/services/terminal/class_goTerminalServer.inc:103 +#: admin/systems/services/shares/class_goShareServer.inc:192 +#: admin/systems/services/shares/class_goShareServer.inc:261 +#: admin/systems/services/shares/class_goShareServer.inc:277 +#: admin/systems/services/shares/class_goShareServer.inc:290 +#: admin/systems/goto/class_printGeneric.inc:601 +#: admin/systems/goto/class_printGeneric.inc:885 +#: admin/systems/goto/class_terminalStartup.inc:455 +#: admin/systems/goto/class_ArpNewDevice.inc:69 +#: admin/systems/goto/class_terminalService.inc:590 +#: admin/systems/goto/class_workstationGeneric.inc:364 +#: admin/systems/goto/class_workstationGeneric.inc:596 +#: admin/systems/goto/class_workstationGeneric.inc:613 +#: admin/systems/goto/class_workstationStartup.inc:877 +#: admin/systems/goto/class_workstationService.inc:447 +#: admin/systems/goto/class_terminalGeneric.inc:353 +#: admin/systems/goto/class_terminalGeneric.inc:580 +#: personal/environment/class_environment.inc:1058 +#: personal/environment/class_environment.inc:1315 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/ogroups/goto/class_termgroup.inc:370 +#, fuzzy +msgid "System" +msgstr "Sistemi" + +#: admin/ogroups/goto/class_termgroup.inc:371 +#, fuzzy +msgid "System group" +msgstr "Accesso ai sistemi" + +#: admin/ogroups/goto/class_termgroup.inc:380 +#: admin/systems/goto/class_workstationGeneric.inc:716 +#: admin/systems/goto/class_terminalGeneric.inc:678 +#, fuzzy +msgid "Action flag" +msgstr "Azione" + +#: admin/ogroups/goto/class_termgroup.inc:381 +#: admin/systems/goto/class_workstationGeneric.inc:713 +#, fuzzy +msgid "Ntp server" +msgstr "Servizi" + +#: admin/groups/apps/edit_entry.tpl:8 +#, fuzzy +msgid "Folder image" +msgstr "Home Page" + +#: admin/groups/apps/edit_entry.tpl:12 +msgid "Could not load image." +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:14 +#: admin/systems/goto/class_gotoLpdEnabled.inc:58 +#, fuzzy +msgid "None" +msgstr "nessuno" + +#: admin/groups/apps/edit_entry.tpl:24 +msgid "Upload image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:28 admin/applications/generic.tpl:142 +#: admin/systems/ppd/printerPPDDialog.tpl:21 +#: addons/goto/goto_import_file.tpl:25 +msgid "Upload" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:32 +msgid "Reset image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:33 +#, fuzzy +msgid "Reset" +msgstr "reset" + +#: admin/groups/apps/edit_entry.tpl:40 +#: admin/applications/class_applicationGeneric.inc:557 +#, fuzzy +msgid "Application settings" +msgstr "Opzioni applicazione" + +#: admin/groups/apps/edit_entry.tpl:43 +#: admin/devices/class_deviceGeneric.inc:90 +#: admin/devices/class_deviceGeneric.inc:114 +#: admin/devices/class_deviceGeneric.inc:260 +#: admin/applications/class_applicationParameters.inc:193 +#: admin/applications/class_applicationGeneric.inc:430 +#: admin/applications/class_applicationGeneric.inc:434 +#: admin/applications/class_applicationGeneric.inc:606 +#: admin/applications/class_applicationGeneric.inc:610 +#: admin/mimetypes/class_mimetypeGeneric.inc:532 +#: admin/mimetypes/class_mimetypeGeneric.inc:724 +#: admin/systems/services/shares/class_goShareServer.inc:398 +#: admin/systems/services/nfs/class_servNfs.inc:199 +#: admin/systems/services/nfs/class_servNfs.inc:202 +#: admin/systems/services/nfs/class_servNfs.inc:235 +#: admin/systems/services/nfs/servnfs.tpl:9 +#: admin/systems/goto/class_printGeneric.inc:670 +#: admin/systems/goto/class_printGeneric.inc:675 +#: admin/systems/goto/class_printGeneric.inc:694 +#: admin/systems/goto/class_printGeneric.inc:929 +#: admin/systems/goto/class_ArpNewDevice.inc:46 +#: admin/systems/goto/class_workstationGeneric.inc:456 +#: admin/systems/goto/class_workstationGeneric.inc:461 +#: admin/systems/goto/class_workstationGeneric.inc:479 +#: admin/systems/goto/class_terminalGeneric.inc:446 +#: admin/systems/goto/class_terminalGeneric.inc:451 +#: admin/systems/goto/class_terminalGeneric.inc:470 +#: admin/systems/goto/class_terminalGeneric.inc:665 +#: personal/environment/class_logonManagementDialog.inc:103 +msgid "Name" +msgstr "Cognome" + +#: admin/groups/apps/edit_entry.tpl:53 +msgid "Application options" +msgstr "Opzioni applicazione" + +#: admin/groups/apps/class_groupApplication.inc:381 +#: admin/groups/apps/class_groupApplication.inc:385 +#, fuzzy +msgid "Menu" +msgstr "Stampante" + +#: admin/groups/apps/class_groupApplication.inc:439 +msgid "Back" +msgstr "Indietro" + +#: admin/groups/apps/class_groupApplication.inc:450 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:147 +#, fuzzy +msgid "back" +msgstr "Indietro" + +#: admin/groups/apps/class_groupApplication.inc:458 +#, fuzzy +msgid "department" +msgstr "dipartimenti" + +#: admin/groups/apps/class_groupApplication.inc:481 +#: admin/applications/class_applicationManagement.inc:368 +#: admin/applications/class_applicationManagement.inc:449 +#: admin/applications/class_applicationGeneric.inc:127 +#, fuzzy +msgid "application" +msgstr "applicazioni" + +#: admin/groups/apps/class_groupApplication.inc:1146 +msgid "Not available in release." +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1373 +#: admin/applications/class_applicationManagement.inc:24 +#: admin/mimetypes/generic.tpl:117 admin/mimetypes/generic.tpl:177 +msgid "Applications" +msgstr "Applicazioni" + +#: admin/groups/apps/class_groupApplication.inc:1374 +#, fuzzy +msgid "Group applications" +msgstr "Mostra applicazioni" + +#: admin/groups/apps/class_groupApplication.inc:1381 +#: admin/applications/class_divListApplication.inc:114 +#: admin/applications/class_divListApplication.inc:150 +#: admin/applications/class_applicationGeneric.inc:603 +#: admin/mimetypes/class_mimetypeGeneric.inc:728 +msgid "Application" +msgstr "Applicazione" + +#: admin/groups/apps/class_groupApplication.inc:1382 +#: admin/groups/apps/app_list.tpl:5 admin/groups/apps/app_list.tpl:53 +#: admin/systems/goto/workstationStartup.tpl:83 +#: admin/systems/goto/workstationStartup.tpl:123 +#, fuzzy +msgid "Release" +msgstr "Rimuovi" + +#: admin/groups/apps/class_groupApplication.inc:1383 +#, fuzzy +msgid "Application parameter" +msgstr "Nome applicazione" + +#: admin/groups/apps/app_list.tpl:11 +#, fuzzy +msgid "Copy menu" +msgstr "Azienda" + +#: admin/groups/apps/app_list.tpl:13 +msgid "Paste menu from" +msgstr "" + +#: admin/groups/apps/app_list.tpl:17 +#, fuzzy +msgid "Delete menu" +msgstr "Elimina questo record" + +#: admin/groups/apps/app_list.tpl:70 admin/groups/apps/app_list.tpl:74 +#, fuzzy +msgid "Folder" +msgstr "Filtri" + +#: admin/groups/apps/app_list.tpl:82 admin/groups/apps/app_list.tpl:103 +#: admin/groups/apps/app_list.tpl:128 addons/goto/class_gotomasses.inc:432 +msgid "Move up" +msgstr "" + +#: admin/groups/apps/app_list.tpl:84 admin/groups/apps/app_list.tpl:105 +#: admin/groups/apps/app_list.tpl:130 addons/goto/class_gotomasses.inc:434 +#, fuzzy +msgid "Move down" +msgstr "Dominio" + +#: admin/groups/apps/app_list.tpl:86 admin/groups/apps/app_list.tpl:107 +#: admin/groups/apps/app_list.tpl:132 +#: admin/devices/class_divListDevices.inc:100 +#: admin/applications/class_applicationParameters.inc:125 +#: admin/applications/class_divListApplication.inc:120 +#: admin/mimetypes/class_divListMimeTypes.inc:122 +#: admin/systems/goto/terminalService.tpl:212 +#: admin/systems/goto/terminalStartup.tpl:115 +#: admin/systems/goto/workstationStartup.tpl:233 +#: admin/systems/goto/printer.tpl:71 addons/goto/class_gotomasses.inc:269 +#: addons/goto/class_gotomasses.inc:376 addons/goto/class_gotomasses.inc:484 +#: addons/goto/class_gotomasses.inc:488 +#: addons/goto/events/class_DaemonEvent.inc:230 +#: personal/environment/environment.tpl:238 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/groups/apps/app_list.tpl:88 admin/groups/apps/app_list.tpl:134 +#: admin/systems/services/shares/goShareServer.tpl:17 +#: admin/systems/goto/printer.tpl:68 addons/goto/class_gotomasses.inc:469 +#: personal/environment/environment.tpl:274 +msgid "Edit" +msgstr "Modifica" + +#: admin/groups/apps/app_list.tpl:121 +#, fuzzy +msgid "Entry" +msgstr "Modifica contatto" + +#: admin/groups/apps/app_list.tpl:143 +#, fuzzy +msgid "add to" +msgstr "Rapporto" + +#: admin/groups/apps/app_list.tpl:149 admin/groups/apps/app_list.tpl:159 +msgid "Add selected applications to this folder." +msgstr "" + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Separator" +msgstr "Server" + +#: admin/groups/apps/app_list.tpl:150 +msgid "Add a separator to this folder." +msgstr "" + +#: admin/devices/class_divListDevices.inc:33 +#: admin/devices/class_divListDevices.inc:34 +#, fuzzy +msgid "List of defined devices" +msgstr "Lista degli utenti" + +#: admin/devices/class_divListDevices.inc:45 +#: admin/applications/class_divListApplication.inc:45 +#: admin/mimetypes/class_divListMimeTypes.inc:45 +#, fuzzy +msgid "Select all" +msgstr "Rimuovi" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/devices/deviceGeneric.tpl:20 admin/devices/paste_deviceGeneric.tpl:9 +msgid "Device name" +msgstr "" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/applications/class_divListApplication.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +msgid "Department" +msgstr "Dipartimento" + +#: admin/devices/class_divListDevices.inc:52 +#: admin/devices/class_divListDevices.inc:87 +#: admin/applications/class_divListApplication.inc:52 +#: admin/applications/class_divListApplication.inc:107 +#: admin/mimetypes/class_divListMimeTypes.inc:52 +#: admin/mimetypes/class_divListMimeTypes.inc:109 +#: addons/goto/class_gotomasses.inc:365 +msgid "Actions" +msgstr "Azioni" + +#: admin/devices/class_divListDevices.inc:58 +#, fuzzy +msgid "Display devices matching" +msgstr "Mostra gli indirizzi che corrispondono" + +#: admin/devices/class_divListDevices.inc:82 admin/devices/deviceGeneric.tpl:9 +#: admin/devices/class_deviceGeneric.inc:261 admin/applications/generic.tpl:42 +#: admin/applications/class_divListApplication.inc:90 +#: admin/applications/class_applicationGeneric.inc:607 +#: admin/mimetypes/generic.tpl:44 +#: admin/mimetypes/class_divListMimeTypes.inc:93 +#: admin/mimetypes/class_mimetypeGeneric.inc:727 +#: admin/systems/services/ldap/class_goLdapServer.inc:79 +#: admin/systems/services/ldap/class_goLdapServer.inc:82 +#: admin/systems/goto/workstation.tpl:35 +#: admin/systems/goto/class_printGeneric.inc:930 +#: admin/systems/goto/class_workstationGeneric.inc:710 +#: admin/systems/goto/class_terminalGeneric.inc:667 +#: admin/systems/goto/printer.tpl:27 admin/systems/goto/terminal.tpl:27 +#: addons/goto/class_target_list.inc:152 addons/goto/goto_import_file.tpl:41 +#: addons/goto/events/class_EventTargetAddList.inc:161 +#: addons/goto/events/class_EventTargetAddUsersList.inc:130 +msgid "Base" +msgstr "Base" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit department" +msgstr "Imposta dipartimento" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit" +msgstr "" + +#: admin/devices/class_divListDevices.inc:92 +#: admin/applications/class_divListApplication.inc:111 +#: admin/mimetypes/class_divListMimeTypes.inc:114 +#: admin/systems/goto/chooser.tpl:16 addons/goto/class_gotomasses.inc:366 +msgid "Create" +msgstr "Creare" + +#: admin/devices/class_divListDevices.inc:94 +#: admin/devices/class_divListDevices.inc:131 +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/systems/goto/gotoLpdEnable.tpl:27 +#: admin/systems/goto/gotoLpdEnable.tpl:63 +#, fuzzy +msgid "Device" +msgstr "Dispositivi" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "edit" +msgstr "modifica" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "Edit this entry" +msgstr "Modifica questo record" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:136 +msgid "delete" +msgstr "elimina" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +msgid "Delete this entry" +msgstr "Elimina questo record" + +#: admin/devices/class_divListDevices.inc:205 +#, fuzzy +msgid "Number of listed devices" +msgstr "Mostra dispositiva di rete" + +#: admin/devices/class_divListDevices.inc:206 +#: admin/applications/class_divListApplication.inc:243 +#: admin/mimetypes/class_divListMimeTypes.inc:244 +#, fuzzy +msgid "Number of listed departments" +msgstr "Imposta dipartimento" + +#: admin/devices/remove.tpl:6 +msgid "" +"This may be used by several users/groups. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/devices/remove.tpl:9 admin/applications/remove.tpl:9 +#: admin/mimetypes/remove.tpl:9 addons/goto/remove.tpl:9 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Quindi - Se sei sicuro - premi Rimuovi per continuare o Annulla per abortire." + +#: admin/devices/deviceGeneric.tpl:2 admin/devices/paste_deviceGeneric.tpl:2 +#: admin/devices/class_deviceGeneric.inc:257 +msgid "Devices" +msgstr "Dispositivi" + +#: admin/devices/deviceGeneric.tpl:29 admin/devices/class_deviceGeneric.inc:93 +#: admin/devices/class_deviceGeneric.inc:262 admin/applications/generic.tpl:33 +#: admin/applications/class_applicationGeneric.inc:608 +#: admin/mimetypes/generic.tpl:34 admin/mimetypes/paste_generic.tpl:21 +#: admin/mimetypes/class_mimetypeGeneric.inc:726 +#: admin/systems/services/shares/class_goShareServer.inc:400 +#: admin/systems/services/nfs/class_servNfs.inc:207 +#: admin/systems/services/nfs/servnfs.tpl:19 +#: admin/systems/goto/workstation.tpl:19 +#: admin/systems/goto/ArpNewDevice.tpl:17 +#: admin/systems/goto/class_printGeneric.inc:931 +#: admin/systems/goto/class_workstationGeneric.inc:708 +#: admin/systems/goto/class_terminalGeneric.inc:666 +#: admin/systems/goto/printer.tpl:16 admin/systems/goto/terminal.tpl:19 +#: addons/goto/class_gotomasses.inc:917 +#: personal/environment/class_logonManagementDialog.inc:111 +#: personal/environment/logonManagement.tpl:17 +msgid "Description" +msgstr "Descrizione" + +#: admin/devices/deviceGeneric.tpl:38 +#, fuzzy +msgid "Device type" +msgstr "Dispositivi" + +#: admin/devices/deviceGeneric.tpl:42 +#, fuzzy +msgid "Choose the device type" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/devices/deviceGeneric.tpl:53 +#, fuzzy +msgid "Serial number" +msgstr "Numero di telefono" + +#: admin/devices/deviceGeneric.tpl:53 +#, fuzzy +msgid "(iSerial)" +msgstr "Terminali" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "Vendor-ID" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "(idVendor)" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "Product-ID" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "(idProduct)" +msgstr "" + +#: admin/devices/main.inc:49 admin/devices/main.inc:51 +#, fuzzy +msgid "Hotplug device management" +msgstr "Riferimenti" + +#: admin/devices/class_deviceGeneric.inc:29 +msgid "Digital camera" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:30 +#, fuzzy +msgid "USB stick" +msgstr "statico" + +#: admin/devices/class_deviceGeneric.inc:31 +msgid "CD/DVD drive" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:98 +#: admin/devices/class_deviceGeneric.inc:100 +#, fuzzy +msgid "iSerial" +msgstr "Terminali" + +#: admin/devices/class_deviceGeneric.inc:103 +#: admin/devices/class_deviceGeneric.inc:264 +#: admin/systems/goto/class_gotoLpdEnabled.inc:51 +#, fuzzy +msgid "Serial" +msgstr "Terminali" + +#: admin/devices/class_deviceGeneric.inc:106 +msgid "Vendor ID" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/applications/class_applicationGeneric.inc:264 +#: admin/applications/class_applicationGeneric.inc:338 +#: admin/applications/class_applicationGeneric.inc:370 +#: admin/applications/class_applicationGeneric.inc:375 +#: admin/applications/class_applicationGeneric.inc:380 +#: admin/applications/class_applicationGeneric.inc:384 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: admin/systems/services/kiosk/class_goKioskService.inc:161 +#: admin/systems/services/kiosk/class_goKioskService.inc:164 +#: admin/systems/services/kiosk/class_goKioskService.inc:234 +#: admin/systems/services/shares/class_goShareServer.inc:98 +#: admin/systems/services/shares/class_goShareServer.inc:233 +#: admin/systems/services/nfs/class_servNfs.inc:43 +#: admin/systems/services/nfs/class_servNfs.inc:46 +#: admin/systems/goto/class_printGeneric.inc:435 +#: admin/systems/goto/class_printGeneric.inc:482 +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#: admin/systems/goto/class_printGeneric.inc:1008 +#: admin/systems/goto/class_printGeneric.inc:1019 +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:234 +#: admin/systems/goto/class_workstationStartup.inc:247 +#: admin/systems/goto/class_workstationStartup.inc:324 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#: addons/goto/class_gotoLogView.inc:57 addons/goto/class_gotoLogView.inc:175 +#: addons/goto/class_gotomasses.inc:174 addons/goto/class_gotomasses.inc:524 +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:691 +#: addons/goto/class_gotomasses.inc:735 addons/goto/class_gotomasses.inc:739 +#: addons/goto/class_gotomasses.inc:775 addons/goto/class_gotomasses.inc:816 +#: personal/environment/class_environment.inc:591 +#: personal/environment/class_environment.inc:673 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#: personal/environment/class_environment.inc:841 +#: personal/environment/class_environment.inc:892 +#: personal/environment/class_environment.inc:988 +msgid "Error" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Device generic" +msgstr "Cognome" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Hotplug" +msgstr "Dispositivi del client" + +#: admin/devices/class_deviceGeneric.inc:263 +#: admin/systems/services/shares/class_goShareServer.inc:401 +#: admin/systems/services/nfs/class_servNfs.inc:193 +#: admin/systems/services/nfs/servnfs.tpl:56 +#: admin/systems/goto/terminalService.tpl:48 +#: admin/systems/goto/terminalService.tpl:138 +#: admin/systems/goto/workstationService.tpl:54 +#: admin/systems/goto/workstationService.tpl:156 +#: admin/systems/goto/gotoLpdEnable.tpl:53 +msgid "Type" +msgstr "Tipo" + +#: admin/devices/class_deviceGeneric.inc:265 +#, fuzzy +msgid "Vendor" +msgstr "Server" + +#: admin/devices/class_deviceGeneric.inc:266 +#, fuzzy +msgid "Device ID" +msgstr "Dispositivi" + +#: admin/devices/class_deviceManagement.inc:7 +#: personal/environment/class_environment.inc:1783 +#: personal/environment/environment.tpl:293 +#, fuzzy +msgid "Hotplug devices" +msgstr "Dispositivi del client" + +#: admin/devices/class_deviceManagement.inc:8 +#, fuzzy +msgid "Manage hotplug devices" +msgstr "Dispositivi del client" + +#: admin/devices/class_deviceManagement.inc:246 +#: admin/applications/class_applicationManagement.inc:352 +#: admin/mimetypes/class_mimetypeManagement.inc:360 +#: addons/goto/class_gotomasses.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Permessi" + +#: admin/devices/class_deviceManagement.inc:263 +#: admin/devices/class_deviceManagement.inc:345 +#, fuzzy +msgid "device" +msgstr "Dispositivi" + +#: admin/devices/class_deviceManagement.inc:296 +#: admin/devices/class_deviceManagement.inc:352 +#: admin/devices/class_deviceManagement.inc:381 +#: admin/applications/class_applicationManagement.inc:401 +#: admin/applications/class_applicationManagement.inc:456 +#: admin/applications/class_applicationManagement.inc:487 +#: admin/mimetypes/class_mimetypeManagement.inc:412 +#: admin/mimetypes/class_mimetypeManagement.inc:466 +#: admin/mimetypes/class_mimetypeManagement.inc:496 +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#: personal/environment/class_environment.inc:583 +#, fuzzy +msgid "Permission error" +msgstr "Permessi" + +#: admin/applications/remove.tpl:6 admin/mimetypes/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/applications/release_select.tpl:2 +#: admin/mimetypes/release_select.tpl:2 +#, fuzzy +msgid "Branches" +msgstr "Annulla" + +#: admin/applications/release_select.tpl:8 +#: admin/mimetypes/release_select.tpl:8 +#, fuzzy +msgid "Current release" +msgstr "Password attuale" + +#: admin/applications/class_applicationParameters.inc:53 +msgid "Remove options" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:53 +#: admin/applications/class_applicationParameters.inc:55 +#, fuzzy +msgid "parameter" +msgstr "Parametro" + +#: admin/applications/class_applicationParameters.inc:55 +msgid "Create options" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Variable" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Default value" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:131 +msgid "Add option" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:236 +msgid "Parameter" +msgstr "Parametro" + +#: admin/applications/class_applicationParameters.inc:237 +#, fuzzy +msgid "Parameter configuration" +msgstr "Scarica il file di configurazione" + +#: admin/applications/class_applicationParameters.inc:245 +#, fuzzy +msgid "Application parameter settings" +msgstr "Nome applicazione" + +#: admin/applications/generic.tpl:7 admin/applications/generic.tpl:10 +#: admin/applications/class_divListApplication.inc:51 +#: admin/applications/class_applicationGeneric.inc:561 +msgid "Application name" +msgstr "Nome applicazione" + +#: admin/applications/generic.tpl:15 +msgid "Display name" +msgstr "Mostra il nome" + +#: admin/applications/generic.tpl:19 +#: admin/applications/class_applicationGeneric.inc:566 +msgid "Application name to be displayed (i.e. below icons)" +msgstr "" + +#: admin/applications/generic.tpl:28 +msgid "Path and/or binary name of application" +msgstr "" + +#: admin/applications/generic.tpl:45 admin/mimetypes/generic.tpl:47 +msgid "Choose subtree to place application in" +msgstr "" + +#: admin/applications/generic.tpl:52 admin/mimetypes/generic.tpl:53 +#: admin/systems/goto/workstation.tpl:43 admin/systems/goto/printer.tpl:35 +#: admin/systems/goto/terminal.tpl:36 +#, fuzzy +msgid "Select a base" +msgstr "Rimuovi" + +#: admin/applications/generic.tpl:66 +#: admin/applications/class_applicationGeneric.inc:611 +#: admin/mimetypes/generic.tpl:67 +#: admin/mimetypes/class_mimetypeGeneric.inc:730 +msgid "Icon" +msgstr "Icna" + +#: admin/applications/generic.tpl:82 admin/mimetypes/generic.tpl:84 +msgid "Update" +msgstr "Aggiorna" + +#: admin/applications/generic.tpl:82 +msgid "Reload picture from LDAP" +msgstr "" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture" +msgstr "Elimina foto" + +#: admin/applications/generic.tpl:85 +#, fuzzy +msgid "Remove picture from LDAP" +msgstr "Elimina foto" + +#: admin/applications/generic.tpl:96 +#: admin/systems/goto/class_gotoLpdEnabled.inc:156 +#: admin/systems/goto/gotoLpdEnable.tpl:79 +#: admin/systems/ppd/printerPPDDialog.tpl:28 +msgid "Options" +msgstr "Opzioni" + +#: admin/applications/generic.tpl:103 +#: admin/applications/class_applicationGeneric.inc:614 +msgid "Only executable for members" +msgstr "" + +#: admin/applications/generic.tpl:108 +#: admin/applications/class_applicationGeneric.inc:618 +msgid "Replace user configuration on startup" +msgstr "" + +#: admin/applications/generic.tpl:114 +#: admin/applications/class_applicationGeneric.inc:615 +msgid "Place icon on members desktop" +msgstr "" + +#: admin/applications/generic.tpl:119 +#: admin/applications/class_applicationGeneric.inc:617 +msgid "Place entry in members startmenu" +msgstr "" + +#: admin/applications/generic.tpl:124 +#: admin/applications/class_applicationGeneric.inc:616 +msgid "Place entry in members launch bar" +msgstr "" + +#: admin/applications/generic.tpl:134 +#: personal/environment/logonManagement.tpl:55 +msgid "Script" +msgstr "Script" + +#: admin/applications/generic.tpl:139 addons/goto/goto_import_file.tpl:84 +#: addons/goto/class_gotomasses.inc:375 +#: addons/goto/class_goto_import_file.inc:29 +#: addons/goto/class_goto_import_file.inc:89 +#: addons/goto/class_goto_import_file.inc:131 +#: personal/environment/logonManagement.tpl:65 +msgid "Import" +msgstr "Importa" + +#: admin/applications/generic.tpl:144 +#, fuzzy +msgid "Download" +msgstr "Dominio" + +#: admin/applications/class_applicationManagement.inc:25 +#: personal/environment/class_environment.inc:10 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: admin/applications/class_divListApplication.inc:25 +#, fuzzy +msgid "List of Applications" +msgstr "Lista delle applicazioni" + +#: admin/applications/class_divListApplication.inc:26 +msgid "This table displays all applications in the selected tree." +msgstr "" + +#: admin/applications/class_divListApplication.inc:58 +#: personal/environment/hotplugDialog.tpl:43 +msgid "Display users matching" +msgstr "Mostra utenti che corrispondono a" + +#: admin/applications/class_divListApplication.inc:199 +#: admin/mimetypes/class_divListMimeTypes.inc:198 +msgid "Freezed" +msgstr "" + +#: admin/applications/class_divListApplication.inc:242 +#, fuzzy +msgid "Number of listed applications" +msgstr "Applicazioni in uso" + +#: admin/applications/main.inc:48 admin/applications/main.inc:50 +msgid "Application management" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:95 +#, fuzzy +msgid "no example" +msgstr "incompleto" + +#: admin/applications/class_applicationGeneric.inc:264 +#, fuzzy, php-format +msgid "Cannot remove application - it is still in use by these objects: %s" +msgstr "Non hai il permesso di cambiare la tua password." + +#: admin/applications/class_applicationGeneric.inc:370 +#, fuzzy +msgid "no read permission" +msgstr "Permessi" + +#: admin/applications/class_applicationGeneric.inc:375 +msgid "cannot resize image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:380 +msgid "cannot convert image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:384 +#, fuzzy, php-format +msgid "cannot save image to '%s'" +msgstr "Rimuovi" + +#: admin/applications/class_applicationGeneric.inc:413 +#, fuzzy +msgid "Execute path" +msgstr "Esegui" + +#: admin/applications/class_applicationGeneric.inc:598 +#, fuzzy +msgid "Application generic" +msgstr "Nome applicazione" + +#: admin/applications/class_applicationGeneric.inc:612 +#, fuzzy +msgid "Script content" +msgstr "Mostra terminali" + +#: admin/mimetypes/class_mimetypeManagement.inc:24 +#: admin/mimetypes/class_mimetypeGeneric.inc:721 +#, fuzzy +msgid "Mime types" +msgstr "Tipo" + +#: admin/mimetypes/class_mimetypeManagement.inc:25 +#, fuzzy +msgid "Manage mime types" +msgstr "Sistemi" + +#: admin/mimetypes/class_mimetypeManagement.inc:378 +#: admin/mimetypes/class_mimetypeManagement.inc:459 +#: admin/mimetypes/generic.tpl:12 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:116 +#: admin/mimetypes/class_divListMimeTypes.inc:152 +#: admin/mimetypes/paste_generic.tpl:13 +#, fuzzy +msgid "Mime type" +msgstr "Tipo" + +#: admin/mimetypes/generic.tpl:16 admin/mimetypes/paste_generic.tpl:16 +#, fuzzy +msgid "Please enter a name for the mime type here" +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/mimetypes/generic.tpl:22 +#: admin/mimetypes/class_mimetypeGeneric.inc:725 +#, fuzzy +msgid "Mime group" +msgstr "Gruppo primario" + +#: admin/mimetypes/generic.tpl:26 +msgid "Categorize this mime type" +msgstr "" + +#: admin/mimetypes/generic.tpl:38 +#, fuzzy +msgid "Please specify a description" +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/mimetypes/generic.tpl:69 admin/mimetypes/generic.tpl:72 +#, fuzzy +msgid "Mime icon" +msgstr "Gruppo primario" + +#: admin/mimetypes/generic.tpl:85 +msgid "Update mime type icon" +msgstr "" + +#: admin/mimetypes/generic.tpl:99 +msgid "Left click" +msgstr "" + +#: admin/mimetypes/generic.tpl:104 +#: admin/mimetypes/class_mimetypeGeneric.inc:731 +#, fuzzy +msgid "File patterns" +msgstr "Filtri" + +#: admin/mimetypes/generic.tpl:110 +#, fuzzy +msgid "Please specify a new file pattern" +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/mimetypes/generic.tpl:113 +msgid "Add a new file pattern" +msgstr "" + +#: admin/mimetypes/generic.tpl:129 admin/mimetypes/generic.tpl:189 +#, fuzzy +msgid "Enter an application name here" +msgstr "Nome applicazione" + +#: admin/mimetypes/generic.tpl:132 admin/mimetypes/generic.tpl:193 +#, fuzzy +msgid "Add application" +msgstr "applicazioni" + +#: admin/mimetypes/generic.tpl:143 +msgid "Embedding" +msgstr "" + +#: admin/mimetypes/generic.tpl:156 +msgid "Show file in embedded viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:163 +msgid "Show file in external viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:170 +msgid "Ask whether to save to local disk" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:27 +#: admin/mimetypes/class_divListMimeTypes.inc:28 +#, fuzzy +msgid "List of defined mime types" +msgstr "Liste di blocco predefinite" + +#: admin/mimetypes/class_divListMimeTypes.inc:58 +#, fuzzy +msgid "Display mime types matching" +msgstr "Mostra utenti che corrispondono a" + +#: admin/mimetypes/class_divListMimeTypes.inc:243 +#, fuzzy +msgid "Number of listed mimetypes" +msgstr "Liste di blocco predefinite" + +#: admin/mimetypes/paste_generic.tpl:24 +#, fuzzy +msgid "Please specify a description for this mime type here" +msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#: admin/mimetypes/main.inc:48 admin/mimetypes/main.inc:50 +#, fuzzy +msgid "Mimetype management" +msgstr "Riferimenti" + +#: admin/mimetypes/class_mimetypeGeneric.inc:535 +#, fuzzy +msgid "File pattern" +msgstr "Filtri" + +#: admin/mimetypes/class_mimetypeGeneric.inc:716 +#, fuzzy +msgid "Mime type generic" +msgstr "Tipo" + +#: admin/mimetypes/class_mimetypeGeneric.inc:729 +#, fuzzy +msgid "Left click action" +msgstr "Crea estensioni per le applicazioni" + +#: admin/mimetypes/class_mimetypeGeneric.inc:732 +#, fuzzy +msgid "Embedded applications" +msgstr "Applicazioni in uso" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +msgid "Print Service" +msgstr "" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +#, fuzzy +msgid "enabled" +msgstr "disabilitato" + +#: admin/systems/services/cups/class_goCupsServer.inc:27 +#: admin/systems/services/cups/class_goCupsServer.inc:48 +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/goto/info.tpl:124 +msgid "Print service" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:68 +#, fuzzy +msgid "Cups" +msgstr "gruppi" + +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/services/shares/class_goShareServer.inc:390 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/cups/class_goCupsServer.inc:77 +#: admin/systems/services/syslog/class_goLogDBServer.inc:101 +#, fuzzy +msgid "Start" +msgstr "Avvio" + +#: admin/systems/services/cups/class_goCupsServer.inc:78 +#: admin/systems/services/syslog/class_goLogDBServer.inc:102 +msgid "Stop" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:79 +#: admin/systems/services/syslog/class_goLogDBServer.inc:103 +#, fuzzy +msgid "Restart" +msgstr "Riprova" + +#: admin/systems/services/kiosk/class_goKioskService.inc:34 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:206 +#, fuzzy +msgid "Kiosk profile service" +msgstr "Opzioni di posta dell'identità" + +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: personal/environment/class_environment.inc:1784 +#: personal/environment/environment.tpl:124 +#: personal/environment/environment.tpl:160 +msgid "Kiosk profile" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:269 +msgid "Kiosk" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/kiosk/goKioskService.tpl:1 +#, fuzzy +msgid "Kiosk profile management" +msgstr "Riferimenti" + +#: admin/systems/services/kiosk/goKioskService.tpl:16 +#, fuzzy +msgid "Server path" +msgstr "Server" + +#: admin/systems/services/kiosk/goKioskService.tpl:23 +#: addons/goto/goto_import_file.tpl:24 +msgid "Browse" +msgstr "" + +#: admin/systems/services/ldap/goLdapServer.tpl:1 +#: admin/systems/services/ldap/class_goLdapServer.inc:30 +#: admin/systems/services/ldap/class_goLdapServer.inc:68 +#, fuzzy +msgid "LDAP service" +msgstr "Dispositivi" + +#: admin/systems/services/ldap/goLdapServer.tpl:2 +msgid "LDAP URI" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:35 +msgid "fill-in-your-servers-dns-name" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:128 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +msgid "Ldap" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:137 +#, fuzzy +msgid "Ldap base" +msgstr "Server" + +#: admin/systems/services/ntp/goNtpServer.tpl:2 +#, fuzzy +msgid "Time server" +msgstr "Server" + +#: admin/systems/services/ntp/class_goNtpServer.inc:28 +#: admin/systems/services/ntp/class_goNtpServer.inc:74 +#, fuzzy +msgid "Time service (NTP)" +msgstr "Utenti di Dominio" + +#: admin/systems/services/ntp/class_goNtpServer.inc:114 +#, fuzzy +msgid "Time service" +msgstr "Utenti di Dominio" + +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#, fuzzy +msgid "Time service - NTP" +msgstr "Utenti di Dominio" + +#: admin/systems/services/ntp/class_goNtpServer.inc:123 +#, fuzzy +msgid "Ntp source" +msgstr "Servizi" + +#: admin/systems/services/terminal/goTerminalServer.tpl:4 +#: admin/systems/services/terminal/class_goTerminalServer.inc:26 +#: admin/systems/services/terminal/class_goTerminalServer.inc:76 +#: admin/systems/services/terminal/class_goTerminalServer.inc:164 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/goto/class_terminalService.inc:679 +#, fuzzy +msgid "Terminal service" +msgstr "Terminal Server" + +#: admin/systems/services/terminal/goTerminalServer.tpl:8 +#: admin/systems/services/terminal/class_goTerminalServer.inc:173 +msgid "Temporary disable login" +msgstr "" + +#: admin/systems/services/terminal/goTerminalServer.tpl:13 +msgid "Supported session types" +msgstr "" + +#: admin/systems/services/shares/goShareServer.tpl:1 +#: admin/systems/goto/class_terminalStartup.inc:543 +#: admin/systems/goto/class_workstationStartup.inc:1021 +#: admin/systems/goto/terminalStartup.tpl:91 +#: admin/systems/goto/workstationStartup.tpl:209 +#: personal/environment/class_environment.inc:1782 +#: personal/environment/environment.tpl:212 +#, fuzzy +msgid "Shares" +msgstr "reset" + +#: admin/systems/services/shares/class_goShareServer.inc:31 +#: admin/systems/services/shares/class_goShareServer.inc:157 +#: admin/systems/services/shares/class_goShareServer.inc:389 +#, fuzzy +msgid "File service (Shares)" +msgstr "Server" + +#: admin/systems/services/shares/class_goShareServer.inc:233 +#, fuzzy +msgid "share" +msgstr "reset" + +#: admin/systems/services/shares/class_goShareServer.inc:390 +#, fuzzy +msgid "File service - Shares" +msgstr "Server" + +#: admin/systems/services/shares/class_goShareServer.inc:399 +msgid "Apple mounts" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:402 +#, fuzzy +msgid "Charset" +msgstr "reset" + +#: admin/systems/services/shares/class_goShareServer.inc:403 +#: admin/systems/services/nfs/class_servNfs.inc:179 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Path" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:404 +#: admin/systems/services/nfs/class_servNfs.inc:215 +#: admin/systems/services/nfs/servnfs.tpl:121 +#, fuzzy +msgid "Option" +msgstr "Opzioni" + +#: admin/systems/services/shares/class_goShareServer.inc:405 +#: admin/systems/services/nfs/class_servNfs.inc:211 +#: admin/systems/services/nfs/servnfs.tpl:29 +#, fuzzy +msgid "Volume" +msgstr "Home" + +#: admin/systems/services/nfs/class_servNfs.inc:184 +msgid "'Path / Volume' must be of format 'server:port'!" +msgstr "" + +#: admin/systems/services/nfs/class_servNfs.inc:188 +msgid "'Path / Volume' must contain at least one '/'!" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:1 +#, fuzzy +msgid "Edit share" +msgstr "Modifica contatto" + +#: admin/systems/services/nfs/servnfs.tpl:2 +msgid "NFS setup" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:39 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:201 +#: addons/goto/events/class_EventTargetAddList.inc:238 +#: personal/environment/environment.tpl:135 +msgid "Server" +msgstr "Server" + +#: admin/systems/services/nfs/servnfs.tpl:69 +msgid "Auto-mount share on Apple systems" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:109 +#, fuzzy +msgid "Codepage" +msgstr "Home Page" + +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "Syslog Service" +msgstr "" + +#: admin/systems/services/syslog/class_goSyslogServer.inc:68 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#, fuzzy +msgid "Logging service" +msgstr "Utenti di Dominio" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:31 +#: admin/systems/services/syslog/class_goLogDBServer.inc:59 +#, fuzzy +msgid "Syslog service database" +msgstr "Mostra server" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:69 +#: admin/systems/goto/class_printGeneric.inc:908 +#: addons/goto/events/class_EventTargetAddUsersList.inc:171 +msgid "User" +msgstr "" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:72 +#: admin/systems/services/syslog/class_goLogDBServer.inc:105 +#: admin/systems/services/syslog/goLogDBServer.tpl:20 +msgid "Password" +msgstr "Password" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:75 +#: admin/systems/services/syslog/class_goLogDBServer.inc:106 +#: admin/systems/services/syslog/goLogDBServer.tpl:4 +#, fuzzy +msgid "Database" +msgstr "Data" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:92 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Logging database" +msgstr "" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:104 +#, fuzzy +msgid "Admin" +msgstr "DN dell'amministratore" + +#: admin/systems/services/syslog/goLogDBServer.tpl:1 +#, fuzzy +msgid "Logging database information" +msgstr "Informazioni organizzazione" + +#: admin/systems/services/syslog/goLogDBServer.tpl:12 +msgid "Logging DB user" +msgstr "" + +#: admin/systems/goto/workstation.tpl:1 admin/systems/goto/terminal.tpl:1 +msgid "Properties" +msgstr "" + +#: admin/systems/goto/workstation.tpl:8 +msgid "Workstation template" +msgstr "" + +#: admin/systems/goto/workstation.tpl:10 +#: admin/systems/goto/class_workstationGeneric.inc:707 +msgid "Workstation name" +msgstr "" + +#: admin/systems/goto/workstation.tpl:27 +#: admin/systems/goto/class_printGeneric.inc:932 +#: admin/systems/goto/class_workstationGeneric.inc:709 +msgid "Location" +msgstr "Località" + +#: admin/systems/goto/workstation.tpl:38 admin/systems/goto/terminal.tpl:31 +msgid "Choose subtree to place group in" +msgstr "Scegli il subtree dove mettere il gruppo" + +#: admin/systems/goto/workstation.tpl:87 admin/systems/goto/workstation.tpl:90 +#: admin/systems/goto/terminal.tpl:109 admin/systems/goto/terminal.tpl:112 +msgid "Inherit time server attributes" +msgstr "" + +#: admin/systems/goto/workstation.tpl:160 +#, fuzzy +msgid "Inherit all values from group" +msgstr "Lista dei gruppi" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:3 +#: personal/environment/selectPrinterDialog.tpl:5 +#: personal/environment/selectPrinterDialog.tpl:10 +#, fuzzy +msgid "Select printer to add" +msgstr "Seleziona il numero da aggiungere" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:8 +#, fuzzy +msgid "Select entries to add" +msgstr "Selezioni utenti da aggiungere" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:22 +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:18 +#: personal/environment/selectPrinterDialog.tpl:24 +#: personal/environment/hotplugDialog.tpl:24 +msgid "Filters" +msgstr "Filtri" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +#, fuzzy +msgid "Select to search within subtrees" +msgstr "Seleziona per mostrare le applicazioni" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +#, fuzzy +msgid "Search in subtrees" +msgstr "Seleziona per mostrare le applicazioni" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:38 +#, fuzzy +msgid "Display members of department" +msgstr "Mostra utenti del dipartimento" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:41 +#: personal/environment/selectPrinterDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Scegli il dipartimento di base per la ricerca" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:50 +#, fuzzy +msgid "Display members matching" +msgstr "Mostra utenti che corrispondono a" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:55 +#, fuzzy +msgid "Regular expression for matching member names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:49 +msgid "USB" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:50 +msgid "Parallel port" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:53 +#, fuzzy +msgid "Software" +msgstr "Crea estensioni telefoniche" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:54 +#, fuzzy +msgid "Hardware" +msgstr "Dispositivo telefonico" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:56 +#, fuzzy +msgid "Even" +msgstr "Ambiente" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:57 +#, fuzzy +msgid "Odd" +msgstr "Aggiungi" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:60 +#: admin/systems/goto/class_gotoLpdEnabled.inc:61 +#: admin/systems/goto/class_gotoLpdEnabled.inc:62 +#: admin/systems/goto/class_gotoLpdEnabled.inc:63 +#: admin/systems/goto/class_gotoLpdEnabled.inc:64 +#: admin/systems/goto/class_gotoLpdEnabled.inc:65 +#: admin/systems/goto/class_gotoLpdEnabled.inc:66 +#: admin/systems/goto/class_gotoLpdEnabled.inc:67 +#, fuzzy +msgid "bit/s" +msgstr "scrivere" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:153 +#: admin/systems/goto/terminalService.tpl:58 +#: admin/systems/goto/workstationService.tpl:66 +#: admin/systems/goto/gotoLpdEnable.tpl:71 +msgid "Port" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:1 +msgid "Integrating unknown devices" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:3 +msgid "" +"The current device has been detected by the ARP monitor used by GOsa. You " +"can integrate this device into your running DHCP/DNS infrastructure by " +"submitting this form. The device entry will disappear from the list of the " +"systems and move to the DNS/DHCP configuration." +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:9 +#, fuzzy +msgid "DNS name" +msgstr "Cognome" + +#: admin/systems/goto/class_printGeneric.inc:106 +#: admin/systems/goto/class_printGeneric.inc:968 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: admin/systems/goto/class_printGeneric.inc:106 +#, php-format +msgid "" +"Cannot determine a valid department for this object. Setting base to '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:262 +#: admin/systems/goto/class_printGeneric.inc:270 +#: admin/systems/goto/class_printGeneric.inc:275 +#: admin/systems/goto/class_printGeneric.inc:324 +#: admin/systems/goto/class_printGeneric.inc:340 +#: admin/systems/goto/class_printGeneric.inc:343 +msgid "Add printer extension" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:263 +msgid "" +"Could not initialize printer tab, parameter parent was missing while " +"construction." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:271 +msgid "This is a workstation template, printer tab is disabled." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:276 +msgid "This is a terminal template, printer tab is disabled." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:317 +#: admin/systems/goto/class_printGeneric.inc:325 +#: admin/systems/goto/class_printGeneric.inc:333 +#: admin/systems/goto/class_printGeneric.inc:336 +#: admin/systems/goto/class_printGeneric.inc:341 +#: admin/systems/goto/class_printGeneric.inc:344 +#, fuzzy +msgid "printer" +msgstr "stampanti" + +#: admin/systems/goto/class_printGeneric.inc:325 +#, fuzzy +msgid "" +"You can't enable it while 'cn' is not present in entry. Possibly you are " +"currently creating a new terminal template." +msgstr "Questa identità non possiede estensioni di posta." + +#: admin/systems/goto/class_printGeneric.inc:332 +#: admin/systems/goto/class_printGeneric.inc:335 +#, fuzzy +msgid "Remove printer extension" +msgstr "Elimina foto" + +#: admin/systems/goto/class_printGeneric.inc:513 +#, php-format +msgid "Your currently selected PPD file '%s' doesn't exist." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:518 +#, fuzzy +msgid "Not defined" +msgstr "non definito" + +#: admin/systems/goto/class_printGeneric.inc:521 +#: admin/systems/ppd/class_printerPPDDialog.inc:97 +msgid "Can't get ppd informations." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_printGeneric.inc:536 +#, php-format +msgid "This printer belongs to %s. You can't rename this printer." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_terminalStartup.inc:180 +#: admin/systems/goto/class_terminalInfo.inc:68 +#: admin/systems/goto/class_terminalGeneric.inc:230 +#, fuzzy +msgid "terminal" +msgstr "Terminali" + +#: admin/systems/goto/class_printGeneric.inc:536 +#: admin/systems/goto/class_workstationGeneric.inc:226 +#: admin/systems/goto/class_workstationStartup.inc:285 +#, fuzzy +msgid "workstation" +msgstr "Nome applicazione" + +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +msgid "Object is no printer!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:680 +#: admin/systems/goto/printer.tpl:54 +msgid "Printer URL" +msgstr "URL della stampante" + +#: admin/systems/goto/class_printGeneric.inc:903 +#: admin/systems/goto/class_printGeneric.inc:905 +#: addons/goto/events/class_EventTargetAddUsersList.inc:173 +msgid "Group" +msgstr "Gruppo" + +#: admin/systems/goto/class_printGeneric.inc:921 +#, fuzzy +msgid "Print generic" +msgstr "Stampante" + +#: admin/systems/goto/class_printGeneric.inc:926 +#: admin/systems/goto/terminalService.tpl:245 +#: personal/environment/environment.tpl:338 +#: personal/environment/environment.tpl:374 +msgid "Printer" +msgstr "Stampante" + +#: admin/systems/goto/class_printGeneric.inc:933 +msgid "LabeledURL" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:934 +#, fuzzy +msgid "Printer PPD" +msgstr "Stampante" + +#: admin/systems/goto/class_printGeneric.inc:935 +#: admin/systems/goto/printer.tpl:82 +msgid "Permissions" +msgstr "Permessi" + +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#, fuzzy +msgid "printer user" +msgstr "Stampante" + +#: admin/systems/goto/class_printGeneric.inc:968 +#, php-format +msgid "Illegal member type '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:1008 +#, fuzzy, php-format +msgid "'%s' is already used!" +msgstr "L'indirizzo principale inserito è già in uso." + +#: admin/systems/goto/class_printGeneric.inc:1019 +#, fuzzy, php-format +msgid "'%s' does not exist!" +msgstr "La password immessa come 'Nuova password' è vuota" + +#: admin/systems/goto/class_selectUserToPrinterDialog.inc:147 +#, fuzzy +msgid "Please select a printer or press cancel." +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/systems/goto/class_terminalStartup.inc:135 +#, php-format +msgid "" +"Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to " +"exist." +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#, fuzzy +msgid "Mount point" +msgstr "Monitoraggio" + +#: admin/systems/goto/class_terminalStartup.inc:372 +#: admin/systems/goto/class_workstationStartup.inc:750 +#, fuzzy +msgid "Fatal error" +msgstr "Terminal Server" + +#: admin/systems/goto/class_terminalStartup.inc:533 +#: admin/systems/goto/class_workstationStartup.inc:1007 +msgid "Startup" +msgstr "Avvio" + +#: admin/systems/goto/class_terminalStartup.inc:534 +#, fuzzy +msgid "Terminal startup" +msgstr "Terminali" + +#: admin/systems/goto/class_terminalStartup.inc:542 +#: admin/systems/goto/class_workstationStartup.inc:1016 +#, fuzzy +msgid "Ldap server" +msgstr "Server" + +#: admin/systems/goto/class_terminalStartup.inc:544 +#: admin/systems/goto/class_workstationStartup.inc:1020 +#, fuzzy +msgid "Kernel modules" +msgstr "Parametro" + +#: admin/systems/goto/class_terminalStartup.inc:545 +#: admin/systems/goto/class_workstationStartup.inc:1017 +#: admin/systems/goto/terminalStartup.tpl:40 +#: admin/systems/goto/workstationStartup.tpl:9 +msgid "Boot kernel" +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:546 +#: admin/systems/goto/class_workstationStartup.inc:1018 +#, fuzzy +msgid "Kernel parameter" +msgstr "Parametro" + +#: admin/systems/goto/class_terminalInfo.inc:50 +#: admin/systems/goto/class_terminalInfo.inc:204 +msgid "present" +msgstr "presente" + +#: admin/systems/goto/class_terminalInfo.inc:77 +#: admin/systems/goto/class_terminalService.inc:121 +#: admin/systems/goto/class_workstationStartup.inc:1295 +#: admin/systems/goto/class_workstationStartup.inc:1297 +#: admin/systems/goto/class_workstationService.inc:78 +#: admin/systems/ppd/class_printerPPDDialog.inc:54 +#: admin/systems/ppd/class_printerPPDDialog.inc:121 +#: personal/environment/class_environment.inc:234 +#, fuzzy +msgid "Configuration error" +msgstr "File di configurazione" + +#: admin/systems/goto/class_terminalInfo.inc:83 +#: admin/systems/goto/class_terminalInfo.inc:179 +msgid "unknown status" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:92 +msgid "This is a virtual terminal which has no properties to show here." +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:106 +msgid "online" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:168 +msgid "running" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:171 +msgid "not running" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:174 +msgid "not defined" +msgstr "non definito" + +#: admin/systems/goto/class_terminalInfo.inc:196 +msgid "offline" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:251 +#, fuzzy +msgid "System info" +msgstr "Elimina contatto" + +#: admin/systems/goto/class_terminalInfo.inc:252 +#, fuzzy +msgid "System informations" +msgstr "Informazioni personali" + +#: admin/systems/goto/class_terminalService.inc:128 +#: admin/systems/goto/class_terminalService.inc:129 +#: admin/systems/goto/class_terminalService.inc:130 +#: admin/systems/goto/class_terminalService.inc:131 +#: admin/systems/goto/class_workstationService.inc:88 +#: admin/systems/goto/class_workstationService.inc:89 +#: admin/systems/goto/class_workstationService.inc:90 +#: admin/systems/goto/class_workstationService.inc:91 +#, fuzzy +msgid "bit" +msgstr "scrivere" + +#: admin/systems/goto/class_terminalService.inc:177 +msgid "XDMCP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:178 +msgid "LDM" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:179 +msgid "Shell" +msgstr "Shell" + +#: admin/systems/goto/class_terminalService.inc:180 +#, fuzzy +msgid "Telnet" +msgstr "Rimuovi" + +#: admin/systems/goto/class_terminalService.inc:181 +msgid "Windows RDP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:204 +#: admin/systems/goto/class_workstationService.inc:144 +msgid "automatic" +msgstr "automatico" + +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_workstationService.inc:194 +#, fuzzy +msgid "Bit" +msgstr "scrivere" + +#: admin/systems/goto/class_terminalService.inc:314 +msgid "This 'dn' has no terminal features." +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:372 +msgid "Unsupported" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:414 +#: admin/systems/goto/class_workstationService.inc:309 +msgid "Choose the phone located at the current terminal" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:495 +#: admin/systems/goto/class_terminalService.inc:500 +msgid "VSync range" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:508 +#: admin/systems/goto/class_terminalService.inc:513 +msgid "HSync range" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:539 +msgid "" +"Remote desktop settings contains servers that do not support the selected " +"connection method." +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:603 +#: admin/systems/goto/workstationService.tpl:157 +#: admin/systems/goto/class_workstationService.inc:85 +msgid "unknown" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:678 +#: admin/systems/goto/class_workstationService.inc:484 +#, fuzzy +msgid "Service" +msgstr "Servizi" + +#: admin/systems/goto/class_terminalService.inc:688 +#: admin/systems/goto/class_workstationService.inc:493 +#, fuzzy +msgid "Monitor" +msgstr "Dimensione quota" + +#: admin/systems/goto/class_terminalService.inc:689 +#, fuzzy +msgid "Method" +msgstr "metodo" + +#: admin/systems/goto/class_terminalService.inc:690 +#: admin/systems/goto/terminalService.tpl:173 +msgid "Remote desktop" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:691 +#: admin/systems/goto/class_workstationService.inc:494 +#, fuzzy +msgid "Gfx driver" +msgstr "Server" + +#: admin/systems/goto/class_terminalService.inc:692 +#: admin/systems/goto/class_workstationService.inc:495 +msgid "Gfx resolution" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:693 +#: admin/systems/goto/class_workstationService.inc:496 +msgid "Gfx color depth" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:694 +#: admin/systems/goto/terminalService.tpl:150 +#: admin/systems/goto/workstationService.tpl:170 +#: admin/systems/goto/class_workstationService.inc:393 +#: admin/systems/goto/class_workstationService.inc:395 +#: admin/systems/goto/class_workstationService.inc:400 +#: admin/systems/goto/class_workstationService.inc:497 +msgid "HSync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:695 +#: admin/systems/goto/terminalService.tpl:158 +#: admin/systems/goto/workstationService.tpl:181 +#: admin/systems/goto/class_workstationService.inc:376 +#: admin/systems/goto/class_workstationService.inc:378 +#: admin/systems/goto/class_workstationService.inc:383 +#: admin/systems/goto/class_workstationService.inc:498 +msgid "VSync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:696 +msgid "Auto-Sync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:697 +#: admin/systems/goto/class_workstationService.inc:500 +#, fuzzy +msgid "Scanner enabled" +msgstr "disabilitato" + +#: admin/systems/goto/class_terminalService.inc:698 +#: admin/systems/goto/class_terminalService.inc:704 +#, fuzzy +msgid "Printer enabled" +msgstr "Nome della stampante" + +#: admin/systems/goto/class_terminalService.inc:699 +#: admin/systems/goto/class_workstationService.inc:501 +msgid "Keyboard model" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:700 +#: admin/systems/goto/class_workstationService.inc:502 +msgid "Keyboard layout" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:701 +#: admin/systems/goto/class_workstationService.inc:503 +msgid "Keyboard variant" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:702 +#: admin/systems/goto/class_workstationService.inc:504 +#, fuzzy +msgid "Mouse type" +msgstr "Tipo" + +#: admin/systems/goto/class_terminalService.inc:703 +#: admin/systems/goto/class_workstationService.inc:505 +#, fuzzy +msgid "Mouse port" +msgstr "Monitoraggio" + +#: admin/systems/goto/class_terminalService.inc:705 +#: admin/systems/goto/terminalService.tpl:76 +#: admin/systems/goto/workstationService.tpl:86 +#: admin/systems/goto/class_workstationService.inc:506 +msgid "Telephone hardware" +msgstr "Dispositivo telefonico" + +#: admin/systems/goto/info.tpl:6 +msgid "System information" +msgstr "" + +#: admin/systems/goto/info.tpl:12 +msgid "CPU" +msgstr "" + +#: admin/systems/goto/info.tpl:15 +msgid "Memory" +msgstr "" + +#: admin/systems/goto/info.tpl:18 +msgid "Boot MAC" +msgstr "" + +#: admin/systems/goto/info.tpl:21 +msgid "USB support" +msgstr "" + +#: admin/systems/goto/info.tpl:24 admin/systems/goto/info.tpl:92 +msgid "System status" +msgstr "" + +#: admin/systems/goto/info.tpl:28 +msgid "Inventory number" +msgstr "" + +#: admin/systems/goto/info.tpl:32 +msgid "Last login" +msgstr "" + +#: admin/systems/goto/info.tpl:43 +msgid "Network devices" +msgstr "" + +#: admin/systems/goto/info.tpl:52 +msgid "IDE devices" +msgstr "" + +#: admin/systems/goto/info.tpl:61 +msgid "SCSI devices" +msgstr "" + +#: admin/systems/goto/info.tpl:69 +msgid "Floppy device" +msgstr "" + +#: admin/systems/goto/info.tpl:73 +msgid "CDROM device" +msgstr "" + +#: admin/systems/goto/info.tpl:78 admin/systems/goto/terminalService.tpl:95 +#: admin/systems/goto/workstationService.tpl:107 +msgid "Graphic device" +msgstr "" + +#: admin/systems/goto/info.tpl:82 +msgid "Audio device" +msgstr "" + +#: admin/systems/goto/info.tpl:98 +msgid "Up since" +msgstr "" + +#: admin/systems/goto/info.tpl:101 +msgid "CPU load" +msgstr "" + +#: admin/systems/goto/info.tpl:104 +msgid "Memory usage" +msgstr "" + +#: admin/systems/goto/info.tpl:107 +msgid "Swap usage" +msgstr "" + +#: admin/systems/goto/info.tpl:121 +msgid "SSH service" +msgstr "" + +#: admin/systems/goto/info.tpl:127 +msgid "Scan service" +msgstr "" + +#: admin/systems/goto/info.tpl:130 +msgid "Sound service" +msgstr "" + +#: admin/systems/goto/info.tpl:133 +msgid "GUI" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:299 +#: admin/systems/goto/class_workstationGeneric.inc:309 +#: addons/goto/events/class_DaemonEvent_update.inc:29 +#: addons/goto/events/class_DaemonEvent_update.inc:30 +#, fuzzy +msgid "Software update" +msgstr "Crea estensioni telefoniche" + +#: admin/systems/goto/class_workstationGeneric.inc:303 +#: admin/systems/goto/class_workstationGeneric.inc:311 +#: addons/goto/events/class_DaemonEvent_localboot.inc:28 +#: addons/goto/events/class_DaemonEvent_localboot.inc:29 +msgid "Force localboot" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:307 +#: admin/systems/goto/class_terminalGeneric.inc:271 +#: addons/goto/events/class_DaemonEvent_wakeup.inc:29 +msgid "Wake up" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:500 +msgid "A valid LDAP server assignement is missing!" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:510 +#, fuzzy +msgid "Software deployment" +msgstr "Sistemi" + +#: admin/systems/goto/class_workstationGeneric.inc:511 +msgid "This host is currently installing. If you want to save it, press 'OK'." +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:699 +#, fuzzy +msgid "Workstation generic" +msgstr "Mostra workstation" + +#: admin/systems/goto/class_workstationGeneric.inc:704 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:203 +#: addons/goto/events/class_EventTargetAddList.inc:249 +msgid "Workstation" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:711 +#, fuzzy +msgid "Goto mode" +msgstr "nella cartella" + +#: admin/systems/goto/class_workstationGeneric.inc:714 +#: admin/systems/goto/class_terminalGeneric.inc:676 +#, fuzzy +msgid "Root password" +msgstr "Cambia password" + +#: admin/systems/goto/class_workstationGeneric.inc:715 +#, fuzzy +msgid "Create FAI CD" +msgstr "Creare" + +#: admin/systems/goto/gencd_frame.tpl:2 +msgid "Your browser does not supprt iframes." +msgstr "" + +#: admin/systems/goto/terminalService.tpl:4 +#: admin/systems/goto/workstationService.tpl:4 +msgid "Keyboard" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:7 +#: admin/systems/goto/workstationService.tpl:7 +#: admin/systems/ppd/printerPPDDialog.tpl:10 +msgid "Model" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:10 +#: admin/systems/goto/workstationService.tpl:11 +msgid "Choose keyboard model" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:17 +#: admin/systems/goto/workstationService.tpl:19 +msgid "Layout" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:20 +#: admin/systems/goto/workstationService.tpl:23 +msgid "Choose keyboard layout" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:27 +#: admin/systems/goto/workstationService.tpl:31 +msgid "Variant" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:30 +#: admin/systems/goto/workstationService.tpl:35 +msgid "Choose keyboard variant" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:45 +#: admin/systems/goto/workstationService.tpl:51 +msgid "Mouse" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:51 +#: admin/systems/goto/workstationService.tpl:58 +msgid "Choose mouse type" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:61 +#: admin/systems/goto/workstationService.tpl:70 +msgid "Choose mouse port" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:79 +#: admin/systems/goto/workstationService.tpl:89 +msgid "Telephone" +msgstr "Telefono" + +#: admin/systems/goto/terminalService.tpl:98 +#: admin/systems/goto/workstationService.tpl:110 +#: admin/systems/goto/printer.tpl:66 +msgid "Driver" +msgstr "Driver" + +#: admin/systems/goto/terminalService.tpl:101 +#: admin/systems/goto/workstationService.tpl:114 +msgid "Choose graphic driver that is needed by the installed graphic board" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:108 +#: admin/systems/goto/workstationService.tpl:122 +#: personal/environment/class_environment.inc:1786 +#: personal/environment/environment.tpl:183 +msgid "Resolution" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:111 +#: admin/systems/goto/workstationService.tpl:126 +msgid "Choose screen resolution used in graphic mode" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:118 +#: admin/systems/goto/workstationService.tpl:134 +msgid "Color depth" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:121 +#: admin/systems/goto/workstationService.tpl:138 +msgid "Choose colordepth used in graphic mode" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:135 +#: admin/systems/goto/workstationService.tpl:153 +msgid "Display device" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:147 +#: admin/systems/goto/workstationService.tpl:167 +msgid "Use DDC for automatic detection" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:154 +#: admin/systems/goto/workstationService.tpl:175 +msgid "Horizontal refresh frequency for installed monitor" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:162 +#: admin/systems/goto/workstationService.tpl:186 +msgid "Vertical refresh frequency for installed monitor" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:177 +msgid "Connect method" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:180 +msgid "Choose method to connect to terminal server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:184 +#: admin/systems/goto/terminalStartup.tpl:14 +#: admin/systems/goto/workstationStartup.tpl:36 +#: addons/goto/class_gotomasses.inc:400 +#, fuzzy +msgid "Reload" +msgstr "leggere" + +#: admin/systems/goto/terminalService.tpl:191 +msgid "Terminal server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:202 +msgid "Select specific terminal server to use" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:208 +msgid "Add selected server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:212 +#, fuzzy +msgid "Remove selected server" +msgstr "Elimina foto" + +#: admin/systems/goto/terminalService.tpl:233 +#: admin/systems/goto/workstationService.tpl:201 +msgid "Scan device" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:235 +#: admin/systems/goto/workstationService.tpl:204 +msgid "Select to start SANE scan service on terminal" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:237 +#: admin/systems/goto/workstationService.tpl:207 +msgid "Provide scan services" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:12 +#: admin/systems/goto/gotoLpdEnable.tpl:48 +#, fuzzy +msgid "Enable printer settings" +msgstr "Impostazioni Unix" + +#: admin/systems/goto/gotoLpdEnable.tpl:87 +#, fuzzy +msgid "Write only" +msgstr "Telefono privato" + +#: admin/systems/goto/gotoLpdEnable.tpl:100 +#, fuzzy +msgid "Bit rate" +msgstr "Creare" + +#: admin/systems/goto/gotoLpdEnable.tpl:110 +#, fuzzy +msgid "Flow control" +msgstr "Opzioni di accesso" + +#: admin/systems/goto/gotoLpdEnable.tpl:120 +#, fuzzy +msgid "Parity" +msgstr "Proxy" + +#: admin/systems/goto/gotoLpdEnable.tpl:130 +#, fuzzy +msgid "Bits" +msgstr "scrivere" + +#: admin/systems/goto/class_workstationStartup.inc:234 +#, php-format +msgid "FAI mirror '%s' is not available - setting to mirror 'auto'!" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:247 +#, php-format +msgid "" +"FAI release '%s' is not available on mirror '%s' - setting to release '%s'!" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:266 +#, fuzzy +msgid "Please select a 'FAI server' or remove the 'FAI classes'." +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/systems/goto/class_workstationStartup.inc:324 +msgid "" +"There is already a profile containing a partition table in your " +"configuration!" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:629 +msgid "Not available in current setup" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1008 +#, fuzzy +msgid "System startup" +msgstr "Accesso ai sistemi" + +#: admin/systems/goto/class_workstationStartup.inc:1023 +#, fuzzy +msgid "FAI classes" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/systems/goto/class_workstationStartup.inc:1024 +msgid "Debian mirror" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1025 +#, fuzzy +msgid "Debian release" +msgstr "Password attuale" + +#: admin/systems/goto/class_workstationStartup.inc:1027 +msgid "FAI status flag" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1297 +msgid "'repositoryBranchHook' returned no result!" +msgstr "" + +#: admin/systems/goto/gencd.tpl:2 +msgid "CD-Install-Image generation" +msgstr "" + +#: admin/systems/goto/gencd.tpl:5 +msgid "" +"This option enables you to generate FAI install CD images for the selected " +"workstation. The procedure may take about 10 minutes to complete, so please " +"be patient after pressing the 'Create ISO-Image' button." +msgstr "" + +#: admin/systems/goto/gencd.tpl:9 +msgid "Create ISO-Image" +msgstr "" + +#: admin/systems/goto/class_workstationService.inc:485 +#, fuzzy +msgid "Workstation service" +msgstr "server" + +#: admin/systems/goto/class_workstationService.inc:499 +#, fuzzy +msgid "Use DDC" +msgstr "Utenti" + +#: admin/systems/goto/terminalStartup.tpl:1 +#: admin/systems/goto/workstationStartup.tpl:4 +msgid "Boot parameters" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:7 +#: admin/systems/goto/workstationStartup.tpl:29 +msgid "LDAP server" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:12 +#: admin/systems/goto/workstationStartup.tpl:34 +#, fuzzy +msgid "inherit from group" +msgstr "Lista dei gruppi" + +#: admin/systems/goto/terminalStartup.tpl:51 +#: admin/systems/goto/workstationStartup.tpl:20 +msgid "Custom options" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:55 +#: admin/systems/goto/workstationStartup.tpl:24 +msgid "" +"Enter any parameters that should be passed to the kernel as append line " +"during bootup" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:70 +#: admin/systems/goto/workstationStartup.tpl:188 +msgid "Kernel modules (format: name parameters)" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:73 +#: admin/systems/goto/workstationStartup.tpl:191 +msgid "Add additional modules to load on startup" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:227 +#, fuzzy +msgid "Mountpoint" +msgstr "Monitoraggio" + +#: admin/systems/goto/SelectDeviceType.tpl:3 +msgid "" +"This system has no system type configured. Please choose a system type for " +"this object and an optional inheritance group. Press the 'continue' button " +"to proceed." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:10 +msgid "" +"Please select a system type and an optional bundle of predefined settings to " +"be inherited." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:12 +msgid "" +"Please select a system type and a bundle of predefined settings to be " +"inherited." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:23 +#: admin/systems/goto/SelectDeviceType.tpl:24 +#, fuzzy +msgid "System type" +msgstr "Sistemi" + +#: admin/systems/goto/SelectDeviceType.tpl:36 +#, fuzzy +msgid "Choose an object group as template" +msgstr "Gruppo di oggetti" + +#: admin/systems/goto/SelectDeviceType.tpl:37 +#: addons/goto/class_target_list.inc:205 addons/goto/goto_import_file.tpl:40 +#: addons/goto/events/class_EventTargetAddList.inc:259 +msgid "Object group" +msgstr "Gruppo di oggetti" + +#: admin/systems/goto/SelectDeviceType.tpl:39 +#: addons/goto/class_gotoLogView.inc:87 +msgid "none" +msgstr "nessuno" + +#: admin/systems/goto/SelectDeviceType.tpl:51 +msgid "Continue" +msgstr "Continua" + +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: admin/systems/goto/class_terminalGeneric.inc:656 +#: admin/systems/goto/class_terminalGeneric.inc:662 +#, fuzzy +msgid "Terminal" +msgstr "Terminali" + +#: admin/systems/goto/class_SelectDeviceType.inc:41 +#: admin/systems/goto/chooser.tpl:10 +msgid "Windows workstation" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:64 +msgid "" +"FAI Object assignment disabled. You can't use this feature until FAI is " +"activated." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:66 +msgid "GOsa support daemon not configured" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:67 +msgid "FAI settings cannot be modified" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:70 +msgid "Check if the GOsa support daemon (gosa-si) is running." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:71 +#, fuzzy +msgid "retry" +msgstr "Modifica contatto" + +#: admin/systems/goto/workstationStartup.tpl:79 +#: admin/systems/goto/workstationStartup.tpl:119 +#, fuzzy +msgid "FAI server" +msgstr "server" + +#: admin/systems/goto/workstationStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:158 +#, fuzzy +msgid "Assigned FAI classes" +msgstr "Scegli il tuo numero di telefono personale" + +#: admin/systems/goto/workstationStartup.tpl:142 +#, fuzzy +msgid "set" +msgstr "reset" + +#: admin/systems/goto/class_terminalGeneric.inc:657 +#, fuzzy +msgid "Terminal generic" +msgstr "Terminal Server" + +#: admin/systems/goto/class_terminalGeneric.inc:670 +#, fuzzy +msgid "Syslog server enabled" +msgstr "Mostra server" + +#: admin/systems/goto/class_terminalGeneric.inc:675 +#, fuzzy +msgid "Ntp server settings" +msgstr "Opzioni di posta dell'identità" + +#: admin/systems/goto/printer.tpl:5 +msgid "General" +msgstr "Generale" + +#: admin/systems/goto/printer.tpl:8 +msgid "Printer name" +msgstr "Nome della stampante" + +#: admin/systems/goto/printer.tpl:30 +msgid "Choose subtree to place user in" +msgstr "Scegli il subtree per l'utente" + +#: admin/systems/goto/printer.tpl:43 +msgid "Details" +msgstr "Dettagli" + +#: admin/systems/goto/printer.tpl:46 +#, fuzzy +msgid "Printer location" +msgstr "Impostazioni Unix" + +#: admin/systems/goto/printer.tpl:89 +msgid "Users which are allowed to use this printer" +msgstr "" + +#: admin/systems/goto/printer.tpl:91 +msgid "Users" +msgstr "Utenti" + +#: admin/systems/goto/printer.tpl:96 admin/systems/goto/printer.tpl:120 +#, fuzzy +msgid "Add user" +msgstr "Modifica contatto" + +#: admin/systems/goto/printer.tpl:99 admin/systems/goto/printer.tpl:123 +#, fuzzy +msgid "Add group" +msgstr "gruppi" + +#: admin/systems/goto/printer.tpl:113 +msgid "Users which are allowed to administrate this printer" +msgstr "" + +#: admin/systems/goto/printer.tpl:115 +#, fuzzy +msgid "Admins" +msgstr "DN dell'amministratore" + +#: admin/systems/goto/chooser.tpl:1 +msgid "Choose the kind of system component you want to create" +msgstr "" + +#: admin/systems/goto/chooser.tpl:4 +msgid "" +"Linux terminals and workstations are autocreated on bootup. For this reason " +"you're only be able to create templates for a specific tree. Servers are " +"normally automatically added too, but in some special cases you may need to " +"create a faked server entry to provide GOsa with some informations. Other " +"network components may be used for Nagios setups to create component " +"dependencies." +msgstr "" + +#: admin/systems/goto/chooser.tpl:7 +msgid "Linux thin client template" +msgstr "" + +#: admin/systems/goto/chooser.tpl:8 +msgid "Linux workstation template" +msgstr "" + +#: admin/systems/goto/chooser.tpl:9 +msgid "Linux Server" +msgstr "Server Linux" + +#: admin/systems/goto/chooser.tpl:11 +msgid "Network printer" +msgstr "" + +#: admin/systems/goto/chooser.tpl:12 +msgid "Phone" +msgstr "Telefono" + +#: admin/systems/goto/chooser.tpl:13 +msgid "Other network component" +msgstr "" + +#: admin/systems/goto/terminal.tpl:8 +msgid "Terminal template" +msgstr "" + +#: admin/systems/goto/terminal.tpl:10 +msgid "Terminal name" +msgstr "" + +#: admin/systems/goto/terminal.tpl:178 +#, fuzzy +msgid "Inherit all" +msgstr "Iniziali" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:6 +msgid "Select objects to add" +msgstr "" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:28 +msgid "Display objects matching" +msgstr "" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:32 +msgid "Regular expression for matching object names" +msgstr "" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:44 +#, fuzzy +msgid "Close" +msgstr "Scegli" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#: admin/systems/ppd/class_ppdManager.inc:148 +#: admin/systems/ppd/class_ppdManager.inc:150 +#, fuzzy +msgid "PPD manager error" +msgstr "Amministrazione LDAP" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#, fuzzy, php-format +msgid "The specified path '%s' does not exist." +msgstr "La password immessa come 'Nuova password' è vuota" + +#: admin/systems/ppd/class_ppdManager.inc:148 +#, php-format +msgid "Specified PPD file '%s' cannot be opened for reading." +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:150 +#, php-format +msgid "The temporary file '%s' cannot be opened for writing." +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:176 +#: admin/systems/ppd/class_ppdManager.inc:313 +#, php-format +msgid "" +"Parsing PPD file %s failed - line too long. Trailing characters have been " +"ignored" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:184 +msgid "Nested groups are not supported!" +msgstr "Gruppi ricorsivi non supportati!" + +#: admin/systems/ppd/class_ppdManager.inc:188 +msgid "Group name not unique!" +msgstr "Nome del gruppo non unico!" + +#: admin/systems/ppd/class_ppdManager.inc:194 +#: admin/systems/ppd/class_ppdManager.inc:224 +msgid "Symbol values are not supported yet!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:218 +msgid "Nested options are not supported!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:243 +msgid "PickMany is not supported yet!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:334 +#, php-format +msgid "Parsing PPD file %s failed - no information found." +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:223 +#: admin/systems/ppd/class_printerPPDDialog.inc:240 +#: admin/systems/ppd/class_printerPPDDialog.inc:248 +#: admin/systems/ppd/class_printerPPDDialog.inc:272 +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#: admin/systems/ppd/class_printerPPDDialog.inc:313 +#: admin/systems/ppd/class_printerPPDDialog.inc:327 +#: admin/systems/ppd/class_printerPPDDialog.inc:337 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#: admin/systems/ppd/class_printerPPDDialog.inc:551 +#: admin/systems/ppd/class_printerPPDDialog.inc:554 +#: admin/systems/ppd/class_printerPPDDialog.inc:557 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:75 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:100 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, fuzzy +msgid "PPD error" +msgstr "Dispositivi" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#, fuzzy, php-format +msgid "Cannot open PPD '%s'!" +msgstr "Rimuovi" + +#: admin/systems/ppd/class_printerPPDDialog.inc:122 +#, php-format +msgid "Cannot open PPD path '%s' for reading and writing!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: addons/goto/class_goto_import_file.inc:29 +#, fuzzy +msgid "file is empty" +msgstr "Elimina questo record" + +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#, fuzzy, php-format +msgid "Cannot parse PPD '%s'!" +msgstr "Rimuovi" + +#: admin/systems/ppd/class_printerPPDDialog.inc:316 +msgid "Overwrite existing PPD" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:317 +msgid "" +"There is already a ppd file for this kind of printer. Do you want to " +"overwrite it?" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:465 +#, fuzzy +msgid "Section" +msgstr "Azione" + +#: admin/systems/ppd/class_printerPPDDialog.inc:525 +#: admin/systems/ppd/class_printerPPDDialog.inc:528 +#, fuzzy +msgid "True" +msgstr "Futuro" + +#: admin/systems/ppd/class_printerPPDDialog.inc:526 +#: admin/systems/ppd/class_printerPPDDialog.inc:529 +#, fuzzy +msgid "False" +msgstr "femmina" + +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#, fuzzy, php-format +msgid "PPD type '%s' is not supported!" +msgstr "Gruppi ricorsivi non supportati!" + +#: admin/systems/ppd/class_printerPPDDialog.inc:571 +msgid "" +"Please select a valid ppd file or use 'Cancel' to go back to printer " +"configuration." +msgstr "" + +#: admin/systems/ppd/remove_ppd.tpl:9 +msgid "The ppd file will be removed from the server and can not be restored." +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:1 +#, fuzzy +msgid "Printer driver" +msgstr "Stampante" + +#: admin/systems/ppd/printerPPDDialog.tpl:12 +#, fuzzy +msgid "Select" +msgstr "Rimuovi" + +#: admin/systems/ppd/printerPPDDialog.tpl:16 +#, fuzzy +msgid "New driver" +msgstr "Server" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, php-format +msgid "Cannot locate vendor '%s' in available PPDs!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:129 +#, fuzzy +msgid "Printer ppd selection." +msgstr "Impostazioni Unix" + +#: addons/goto/class_target_list.inc:58 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: addons/goto/class_target_list.inc:59 addons/goto/class_target_list.inc:60 +#, fuzzy +msgid "Available targets" +msgstr "Applicazioni disponibili" + +#: addons/goto/class_target_list.inc:69 +msgid "Object name" +msgstr "Nome dell'oggetto" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Select to see object groups" +msgstr "Gruppo di oggetti" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Show object groups" +msgstr "Gruppi di oggetti" + +#: addons/goto/class_target_list.inc:73 +msgid "Select to see servers" +msgstr "" + +#: addons/goto/class_target_list.inc:73 +msgid "Show servers" +msgstr "Mostra server" + +#: addons/goto/class_target_list.inc:74 +#, fuzzy +msgid "Select to see workstations" +msgstr "Seleziona per mostrare le applicazioni" + +#: addons/goto/class_target_list.inc:74 +msgid "Show workstations" +msgstr "Mostra workstation" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Select to see incoming objects" +msgstr "Seleziona per mostrare le applicazioni" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Show new objects" +msgstr "Oggetti membri" + +#: addons/goto/class_target_list.inc:80 +msgid "Select to search for a specific IP range only" +msgstr "" + +#: addons/goto/class_target_list.inc:80 +msgid "Match IP range" +msgstr "" + +#: addons/goto/class_target_list.inc:83 +msgid "Regular expression for matching group names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: addons/goto/class_target_list.inc:84 +msgid "IP range start" +msgstr "" + +#: addons/goto/class_target_list.inc:85 +msgid "IP range end" +msgstr "" + +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#, fuzzy +msgid "IP range" +msgstr "Pager" + +#: addons/goto/goto_import_file.tpl:1 +#, fuzzy +msgid "Import jobs" +msgstr "Importa" + +#: addons/goto/goto_import_file.tpl:3 +msgid "" +"You can import a list of jobs into the GOsa job queue. This should be a " +"semicolon seperated list of items in the following format:" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "timestamp" +msgstr "Timeout" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "MAC-address" +msgstr "Indirizzo" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "job type" +msgstr "Tipo" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "object group" +msgstr "Gruppo di oggetti" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "import base" +msgstr "Importa" + +#: addons/goto/goto_import_file.tpl:5 +msgid "full hostname" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "IP-address" +msgstr "Indirizzo" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "DHCP group" +msgstr "gruppi" + +#: addons/goto/goto_import_file.tpl:9 +msgid "Example" +msgstr "" + +#: addons/goto/goto_import_file.tpl:21 +#, fuzzy +msgid "Select list to import" +msgstr "Seleziona il numero da aggiungere" + +#: addons/goto/goto_import_file.tpl:37 +#: addons/goto/events/DaemonEvent_update.tpl:51 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:51 +#: addons/goto/events/DaemonEvent_halt.tpl:51 +#: addons/goto/events/DaemonEvent_wakeup.tpl:51 +#: addons/goto/events/DaemonEvent_reboot.tpl:51 +#: addons/goto/events/DaemonEvent_notify.tpl:85 +#: addons/goto/events/DaemonEvent_rescan.tpl:51 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:51 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:51 +#: addons/goto/events/DaemonEvent_faireboot.tpl:51 +#: addons/goto/events/DaemonEvent_localboot.tpl:51 +#: addons/goto/events/DaemonEvent_memcheck.tpl:51 +#: addons/goto/events/DaemonEvent_activate.tpl:51 +#: addons/goto/events/DaemonEvent_lock.tpl:51 +#: addons/goto/events/DaemonEvent_reinstall.tpl:55 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:51 +#, fuzzy +msgid "Timestamp" +msgstr "Timeout" + +#: addons/goto/goto_import_file.tpl:38 +#: addons/goto/class_goto_import_file.inc:168 +#, fuzzy +msgid "MAC" +msgstr "ACL" + +#: addons/goto/goto_import_file.tpl:39 +#: addons/goto/class_goto_import_file.inc:171 +#, fuzzy +msgid "Event" +msgstr "Ambiente" + +#: addons/goto/goto_import_file.tpl:42 +msgid "FQDN" +msgstr "" + +#: addons/goto/goto_import_file.tpl:43 +msgid "IP" +msgstr "" + +#: addons/goto/goto_import_file.tpl:44 +msgid "DHCP" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:113 +msgid "File" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:115 +#, fuzzy +msgid "Date" +msgstr "Data" + +#: addons/goto/class_gotoLogView.inc:202 +#, fuzzy +msgid "Log view" +msgstr "Nome utente" + +#: addons/goto/class_gotoLogView.inc:203 +#, fuzzy +msgid "GOto log view" +msgstr "nella cartella" + +#: addons/goto/class_gotomasses.inc:26 +#, fuzzy +msgid "Deployment status" +msgstr "Sistemi" + +#: addons/goto/class_gotomasses.inc:27 addons/goto/main.inc:66 +#, fuzzy +msgid "System deployment status" +msgstr "Sistemi" + +#: addons/goto/class_gotomasses.inc:270 +#, php-format +msgid "The following jobs couldn't be deleted, they have to be aborted: %s" +msgstr "" + +#: addons/goto/class_gotomasses.inc:360 +msgid "This menu allows you to remove and change the properties of GOsa tasks." +msgstr "" + +#: addons/goto/class_gotomasses.inc:361 +#, fuzzy +msgid "List of queued jobs" +msgstr "Lista degli utenti" + +#: addons/goto/class_gotomasses.inc:380 +#, fuzzy +msgid "Resume" +msgstr "reset" + +#: addons/goto/class_gotomasses.inc:381 +#, fuzzy +msgid "Pause" +msgstr "Data" + +#: addons/goto/class_gotomasses.inc:382 +msgid "Abort" +msgstr "" + +#: addons/goto/class_gotomasses.inc:408 +#: addons/goto/events/DaemonEvent_update.tpl:47 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:47 +#: addons/goto/events/DaemonEvent_halt.tpl:47 +#: addons/goto/events/DaemonEvent_wakeup.tpl:47 +#: addons/goto/events/DaemonEvent_reboot.tpl:47 +#: addons/goto/events/DaemonEvent_notify.tpl:81 +#: addons/goto/events/DaemonEvent_rescan.tpl:47 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:47 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:47 +#: addons/goto/events/DaemonEvent_faireboot.tpl:47 +#: addons/goto/events/class_DaemonEvent_notify.inc:77 +#: addons/goto/events/class_DaemonEvent_notify.inc:78 +#: addons/goto/events/class_DaemonEvent_notify.inc:103 +#: addons/goto/events/DaemonEvent_localboot.tpl:47 +#: addons/goto/events/DaemonEvent_memcheck.tpl:47 +#: addons/goto/events/DaemonEvent_activate.tpl:47 +#: addons/goto/events/DaemonEvent_lock.tpl:47 +#: addons/goto/events/DaemonEvent_reinstall.tpl:51 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:47 +#, fuzzy +msgid "Target" +msgstr "reset" + +#: addons/goto/class_gotomasses.inc:409 +msgid "Task" +msgstr "" + +#: addons/goto/class_gotomasses.inc:411 +#: addons/goto/events/DaemonEvent_update.tpl:9 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:9 +#: addons/goto/events/DaemonEvent_halt.tpl:9 +#: addons/goto/events/DaemonEvent_wakeup.tpl:9 +#: addons/goto/events/DaemonEvent_reboot.tpl:9 +#: addons/goto/events/DaemonEvent_notify.tpl:28 +#: addons/goto/events/DaemonEvent_rescan.tpl:9 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:9 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:9 +#: addons/goto/events/DaemonEvent_faireboot.tpl:9 +#: addons/goto/events/DaemonEvent_localboot.tpl:9 +#: addons/goto/events/DaemonEvent_memcheck.tpl:9 +#: addons/goto/events/DaemonEvent_lock.tpl:9 +#: addons/goto/events/DaemonEvent_reinstall.tpl:9 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:9 +#, fuzzy +msgid "Schedule" +msgstr "Estenzioni PHPGroupware" + +#: addons/goto/class_gotomasses.inc:413 +#: addons/goto/events/DaemonEvent_update.tpl:39 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:39 +#: addons/goto/events/DaemonEvent_halt.tpl:39 +#: addons/goto/events/DaemonEvent_wakeup.tpl:39 +#: addons/goto/events/DaemonEvent_reboot.tpl:39 +#: addons/goto/events/DaemonEvent_notify.tpl:73 +#: addons/goto/events/DaemonEvent_rescan.tpl:39 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:39 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:39 +#: addons/goto/events/DaemonEvent_faireboot.tpl:39 +#: addons/goto/events/DaemonEvent_localboot.tpl:39 +#: addons/goto/events/DaemonEvent_memcheck.tpl:39 +#: addons/goto/events/DaemonEvent_activate.tpl:39 +#: addons/goto/events/DaemonEvent_lock.tpl:39 +#: addons/goto/events/DaemonEvent_reinstall.tpl:43 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:39 +msgid "Status" +msgstr "Stato" + +#: addons/goto/class_gotomasses.inc:441 +#, fuzzy +msgid "Pause job" +msgstr "Data" + +#: addons/goto/class_gotomasses.inc:448 +#, fuzzy +msgid "Resume job" +msgstr "reset" + +#: addons/goto/class_gotomasses.inc:455 +#, fuzzy +msgid "Execute now" +msgstr "Esegui" + +#: addons/goto/class_gotomasses.inc:462 +#, fuzzy +msgid "View logs" +msgstr "Applicazioni disponibili" + +#: addons/goto/class_gotomasses.inc:477 +#, fuzzy +msgid "Abort job" +msgstr "Iniziali" + +#: addons/goto/class_gotomasses.inc:521 +#, fuzzy +msgid "Waiting" +msgstr "Attenzione" + +#: addons/goto/class_gotomasses.inc:527 +#, fuzzy +msgid "Processed" +msgstr "Profili" + +#: addons/goto/class_gotomasses.inc:542 +#, fuzzy +msgid "Detection" +msgstr "Azione" + +#: addons/goto/class_gotomasses.inc:550 +#, fuzzy +msgid "in progress" +msgstr "Profili" + +#: addons/goto/class_gotomasses.inc:563 +msgid "immediately" +msgstr "" + +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:735 +#: addons/goto/class_gotomasses.inc:775 +#, fuzzy, php-format +msgid "Cannot update queue entry: %s" +msgstr "Rimuovi" + +#: addons/goto/class_gotomasses.inc:691 +#, php-format +msgid "Cannot update queue entries." +msgstr "" + +#: addons/goto/class_gotomasses.inc:740 +#, php-format +msgid "Required class '%s' cannot be found: job not aborted!" +msgstr "" + +#: addons/goto/class_gotomasses.inc:816 +#, fuzzy, php-format +msgid "Cannot load queue entries: %s" +msgstr "Rimuovi" + +#: addons/goto/class_gotomasses.inc:910 addons/goto/class_gotomasses.inc:916 +#, fuzzy +msgid "System deployment" +msgstr "Dipartimento" + +#: addons/goto/class_gotomasses.inc:911 +msgid "Provide a mechanism to automatically activate systems" +msgstr "" + +#: addons/goto/log_view.tpl:7 +#, fuzzy +msgid "Available logs" +msgstr "Applicazioni disponibili" + +#: addons/goto/log_view.tpl:12 +#, fuzzy +msgid "Selected log" +msgstr "Rimuovi" + +#: addons/goto/log_view.tpl:17 +msgid "No logs for this host available!" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_lock.inc:29 +#: addons/goto/events/class_DaemonEvent_lock.inc:30 +msgid "Lock" +msgstr "" + +#: addons/goto/events/DaemonEvent_update.tpl:18 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:18 +#: addons/goto/events/DaemonEvent_halt.tpl:18 +#: addons/goto/events/DaemonEvent_wakeup.tpl:18 +#: addons/goto/events/DaemonEvent_reboot.tpl:18 +#: addons/goto/events/DaemonEvent_rescan.tpl:18 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:18 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:18 +#: addons/goto/events/DaemonEvent_faireboot.tpl:18 +#: addons/goto/events/DaemonEvent_localboot.tpl:18 +#: addons/goto/events/DaemonEvent_memcheck.tpl:18 +#: addons/goto/events/DaemonEvent_activate.tpl:18 +#: addons/goto/events/DaemonEvent_lock.tpl:18 +#: addons/goto/events/DaemonEvent_reinstall.tpl:18 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:18 +#, fuzzy +msgid "System list" +msgstr "Log di sitema" + +#: addons/goto/events/DaemonEvent_update.tpl:35 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:35 +#: addons/goto/events/DaemonEvent_halt.tpl:35 +#: addons/goto/events/DaemonEvent_wakeup.tpl:35 +#: addons/goto/events/DaemonEvent_reboot.tpl:35 +#: addons/goto/events/DaemonEvent_notify.tpl:69 +#: addons/goto/events/DaemonEvent_rescan.tpl:35 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:35 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:35 +#: addons/goto/events/DaemonEvent_faireboot.tpl:35 +#: addons/goto/events/DaemonEvent_localboot.tpl:35 +#: addons/goto/events/DaemonEvent_memcheck.tpl:35 +#: addons/goto/events/DaemonEvent_activate.tpl:35 +#: addons/goto/events/DaemonEvent_lock.tpl:35 +#: addons/goto/events/DaemonEvent_reinstall.tpl:35 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:35 +#, fuzzy +msgid "ID" +msgstr "GID" + +#: addons/goto/events/DaemonEvent_update.tpl:43 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:43 +#: addons/goto/events/DaemonEvent_halt.tpl:43 +#: addons/goto/events/DaemonEvent_wakeup.tpl:43 +#: addons/goto/events/DaemonEvent_reboot.tpl:43 +#: addons/goto/events/DaemonEvent_notify.tpl:77 +#: addons/goto/events/DaemonEvent_rescan.tpl:43 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:43 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:43 +#: addons/goto/events/DaemonEvent_faireboot.tpl:43 +#: addons/goto/events/DaemonEvent_localboot.tpl:43 +#: addons/goto/events/DaemonEvent_memcheck.tpl:43 +#: addons/goto/events/DaemonEvent_activate.tpl:43 +#: addons/goto/events/DaemonEvent_lock.tpl:43 +#: addons/goto/events/DaemonEvent_reinstall.tpl:47 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:43 +#, fuzzy +msgid "Result" +msgstr "Riprova" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:37 +#, fuzzy +msgid "GOto reload" +msgstr "nella cartella" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:38 +#, fuzzy +msgid "Reload GOto settings" +msgstr "Impostazioni Unix" + +#: addons/goto/events/class_DaemonEvent_activate.inc:29 +#: addons/goto/events/class_DaemonEvent_activate.inc:30 +msgid "Unlock" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_faireboot.inc:28 +#: addons/goto/events/class_DaemonEvent_faireboot.inc:29 +#, fuzzy +msgid "Abort installation" +msgstr "Amministrazione" + +#: addons/goto/events/target_list.tpl:5 +msgid "Apply" +msgstr "Applica" + +#: addons/goto/events/target_list.tpl:6 +msgid "Cancel" +msgstr "Annulla" + +#: addons/goto/events/DaemonEvent_notify.tpl:7 +#, fuzzy +msgid "Message settings" +msgstr "Opzioni di posta dell'identità" + +#: addons/goto/events/DaemonEvent_notify.tpl:10 +#, fuzzy +msgid "Sender" +msgstr "Server" + +#: addons/goto/events/DaemonEvent_notify.tpl:14 +#: addons/goto/events/class_DaemonEvent_notify.inc:94 +#, fuzzy +msgid "Subject" +msgstr "Rimuovi" + +#: addons/goto/events/DaemonEvent_notify.tpl:18 +#: addons/goto/events/class_DaemonEvent_notify.inc:97 +#, fuzzy +msgid "Message" +msgstr "Nome gruppo" + +#: addons/goto/events/DaemonEvent_notify.tpl:37 +#, fuzzy +msgid "Target users" +msgstr "reset" + +#: addons/goto/events/DaemonEvent_notify.tpl:44 +#, fuzzy +msgid "Target groups" +msgstr "reset" + +#: addons/goto/events/class_DaemonEvent.inc:119 +msgid "This job has no template!" +msgstr "" + +#: addons/goto/events/class_DaemonEvent.inc:135 +#, fuzzy, php-format +msgid "Create '%s' job" +msgstr "Gruppo di oggetti" + +#: addons/goto/events/class_DaemonEvent.inc:234 +msgid "Add" +msgstr "Aggiungi" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:31 +#, fuzzy +msgid "Reload fai release db" +msgstr "Nome applicazione" + +#: addons/goto/events/class_DaemonEvent_wakeup.inc:30 +#, fuzzy +msgid "Wake system" +msgstr "Sistemi" + +#: addons/goto/events/class_DaemonEvent_activate_new.inc:40 +#: addons/goto/events/class_DaemonEvent_activate_new.inc:41 +#, fuzzy +msgid "Activate new" +msgstr "Privato" + +#: addons/goto/events/class_EventTargetAddList.inc:51 +#: addons/goto/events/class_EventTargetAddUsersList.inc:45 +#, fuzzy +msgid "Targets" +msgstr "reset" + +#: addons/goto/events/class_EventTargetAddList.inc:55 +msgid "" +"This dialog shows all available targets for the event. Check the targets you " +"want to add and use the 'Apply' button." +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:66 +#: addons/goto/events/class_EventTargetAddUsersList.inc:60 +#, fuzzy +msgid "System / Department" +msgstr "Dipartimento" + +#: addons/goto/events/class_EventTargetAddList.inc:73 +#, fuzzy +msgid "Display server" +msgstr "Mostra il nome" + +#: addons/goto/events/class_EventTargetAddList.inc:74 +#, fuzzy +msgid "Display workstation" +msgstr "Mostra utenti che corrispondono a" + +#: addons/goto/events/class_EventTargetAddList.inc:75 +#, fuzzy +msgid "Display object groups" +msgstr "Gruppo di oggetti" + +#: addons/goto/events/class_EventTargetAddList.inc:76 +msgid "Filter by IP range" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:3 +#, fuzzy +msgid "Year" +msgstr "Cerca" + +#: addons/goto/events/timestamp_select.tpl:4 +#, fuzzy +msgid "Month" +msgstr "mese" + +#: addons/goto/events/timestamp_select.tpl:5 +#, fuzzy +msgid "Day" +msgstr "giorno" + +#: addons/goto/events/timestamp_select.tpl:7 +#, fuzzy +msgid "Hour" +msgstr "ora" + +#: addons/goto/events/timestamp_select.tpl:8 +#, fuzzy +msgid "Minute" +msgstr "Stampante" + +#: addons/goto/events/timestamp_select.tpl:9 +#, fuzzy +msgid "Second" +msgstr "Azione" + +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:28 +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:29 +msgid "Reload LDAP config" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_notify.inc:46 +#: addons/goto/events/class_DaemonEvent_notify.inc:47 +#, fuzzy +msgid "Send message" +msgstr "Home Page" + +#: addons/goto/events/class_DaemonEvent_notify.inc:100 +#, fuzzy +msgid "From" +msgstr "e" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:49 +msgid "" +"This dialog shows all available targets for your event, check the targets " +"you want to add and use the 'Use' button to accept." +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:65 +#, fuzzy +msgid "Display users" +msgstr "Mostra il nome" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:66 +#, fuzzy +msgid "Display groups" +msgstr "Gruppo di oggetti" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:31 +msgid "Reload fai server db" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:28 +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:29 +#, fuzzy +msgid "Installation activation" +msgstr "Amministrazione" + +#: addons/goto/events/DaemonEvent_activate.tpl:9 +#, fuzzy +msgid "Time schedule" +msgstr "Server" + +#: addons/goto/events/DaemonEvent_reinstall.tpl:39 +#, fuzzy +msgid "Progress" +msgstr "Profili" + +#: addons/goto/class_goto_import_file.inc:90 +msgid "" +"Selected entries will be skipped because of errors. Do you want to proceed?" +msgstr "" + +#: addons/goto/class_goto_import_file.inc:131 +#, php-format +msgid "Import complete: %s events successfully send, %s failed" +msgstr "" + +#: personal/environment/class_environment.inc:9 +#: personal/environment/class_environment.inc:433 +#: personal/environment/class_environment.inc:434 +#: personal/environment/class_environment.inc:442 +#: personal/environment/class_environment.inc:443 +#: personal/environment/class_environment.inc:446 +#: personal/environment/class_environment.inc:447 +#: personal/environment/class_environment.inc:450 +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:473 +#: personal/environment/class_environment.inc:474 +#: personal/environment/class_environment.inc:478 +#: personal/environment/class_environment.inc:479 +#: personal/environment/class_environment.inc:482 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1766 +msgid "Environment" +msgstr "Ambiente" + +#: personal/environment/class_environment.inc:139 +#, php-format +msgid "Device '%s' is not available anymore. It will be removed!" +msgstr "" + +#: personal/environment/class_environment.inc:212 +#, fuzzy +msgid "auto" +msgstr "Rapporto" + +#: personal/environment/class_environment.inc:234 +#, fuzzy, php-format +msgid "Cannot open file '%s'!" +msgstr "Rimuovi" + +#: personal/environment/class_environment.inc:271 +#: personal/environment/class_environment.inc:272 +msgid "disabled" +msgstr "disabilitato" + +#: personal/environment/class_environment.inc:307 +#, php-format +msgid "" +"Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk " +"profile will be disabled!" +msgstr "" + +#: personal/environment/class_environment.inc:360 +#, php-format +msgid "Profile server '%s' is not available anymore. Switched to server '%s'." +msgstr "" + +#: personal/environment/class_environment.inc:364 +#, php-format +msgid "" +"Profile server '%s' is not available anymore. Kiosk profile will be disabled." +msgstr "" + +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1148 +msgid "POSIX" +msgstr "" + +#: personal/environment/class_environment.inc:583 +#: personal/environment/environment.tpl:246 +msgid "Logon scripts" +msgstr "" + +#: personal/environment/class_environment.inc:673 +#, fuzzy +msgid "Share" +msgstr "reset" + +#: personal/environment/class_environment.inc:763 +#: personal/environment/environment.tpl:257 +#: personal/environment/environment.tpl:303 +msgid "Used by all users" +msgstr "" + +#: personal/environment/class_environment.inc:766 +#: personal/environment/environment.tpl:259 +#: personal/environment/environment.tpl:305 +msgid "Used by some users" +msgstr "" + +#: personal/environment/class_environment.inc:779 +#: personal/environment/class_environment.inc:780 +#: personal/environment/class_environment.inc:789 +#: personal/environment/class_environment.inc:790 +#, fuzzy +msgid "Reset password hash" +msgstr "Cambia password" + +#: personal/environment/class_environment.inc:794 +#, fuzzy +msgid "Delete share entry" +msgstr "Elimina questo record" + +#: personal/environment/class_environment.inc:988 +msgid "Cannot set default printer flag for groups!" +msgstr "" + +#: personal/environment/class_environment.inc:1141 +#: personal/environment/class_environment.inc:1711 +#: personal/environment/class_environment.inc:1780 +#, fuzzy +msgid "Profile quota" +msgstr "Path del profilo" + +#: personal/environment/class_environment.inc:1148 +#, fuzzy +msgid "environment" +msgstr "Ambiente" + +#: personal/environment/class_environment.inc:1329 +#, fuzzy +msgid "group share" +msgstr "gruppi" + +#: personal/environment/class_environment.inc:1363 +#, fuzzy +msgid "Administrator" +msgstr "Amministrazione" + +#: personal/environment/class_environment.inc:1368 +#, fuzzy +msgid "Default printer" +msgstr "Permessi predefiniti" + +#: personal/environment/class_environment.inc:1767 +#, fuzzy +msgid "Environment settings" +msgstr "Opzioni di posta dell'identità" + +#: personal/environment/class_environment.inc:1771 +msgid "My account" +msgstr "Identità" + +#: personal/environment/class_environment.inc:1775 +msgid "Command to extend the list of possible screen resolutions" +msgstr "" + +#: personal/environment/class_environment.inc:1779 +#, fuzzy +msgid "Profile server" +msgstr "Server" + +#: personal/environment/class_environment.inc:1781 +#: personal/environment/environment.tpl:41 +#: personal/environment/environment.tpl:106 +msgid "Cache profile localy" +msgstr "" + +#: personal/environment/class_environment.inc:1785 +#: personal/environment/environment.tpl:174 +msgid "Resolution changeable during session" +msgstr "" + +#: personal/environment/class_environment.inc:1787 +#: personal/environment/logonManagement.tpl:56 +msgid "Logon script" +msgstr "" + +#: personal/environment/environment.tpl:3 +msgid "The environment extension is currently disabled." +msgstr "" + +#: personal/environment/environment.tpl:11 +msgid "Profiles" +msgstr "Profili" + +#: personal/environment/environment.tpl:14 +#: personal/environment/environment.tpl:207 +#: personal/environment/environment.tpl:288 +#, fuzzy +msgid "Environment managment settings" +msgstr "Opzioni di posta dell'identità" + +#: personal/environment/environment.tpl:22 +#: personal/environment/environment.tpl:55 +#, fuzzy +msgid "Use profile managment" +msgstr "Riferimenti" + +#: personal/environment/environment.tpl:26 +#: personal/environment/environment.tpl:65 +#, fuzzy +msgid "Profil path" +msgstr "Path del profilo" + +#: personal/environment/environment.tpl:36 +#: personal/environment/environment.tpl:95 +msgid "MB" +msgstr "Mb" + +#: personal/environment/environment.tpl:47 +#, fuzzy +msgid "Profile managment" +msgstr "Riferimenti" + +#: personal/environment/environment.tpl:62 +#, fuzzy +msgid "Profile server managment" +msgstr "Riferimenti" + +#: personal/environment/environment.tpl:89 +#, fuzzy +msgid "Profil quota" +msgstr "Path del profilo" + +#: personal/environment/environment.tpl:120 +#, fuzzy +msgid "Kiosk profile settings" +msgstr "Opzioni di posta dell'identità" + +#: personal/environment/environment.tpl:145 +#, fuzzy +msgid "Profile" +msgstr "Path del profilo" + +#: personal/environment/environment.tpl:164 +#, fuzzy +msgid "Manage" +msgstr "Nome gruppo" + +#: personal/environment/environment.tpl:222 +#, fuzzy +msgid "User used to connect to the share" +msgstr "Impossibile connettersi al server del database!" + +#: personal/environment/environment.tpl:225 +#, fuzzy +msgid "Select a share" +msgstr "Rimuovi" + +#: personal/environment/environment.tpl:233 +#, fuzzy +msgid "Mount path" +msgstr "Monitoraggio" + +#: personal/environment/environment.tpl:248 +#: personal/environment/logonManagement.tpl:1 +#: personal/environment/logonManagement.tpl:5 +#, fuzzy +msgid "Logon script management" +msgstr "Riferimenti" + +#: personal/environment/environment.tpl:295 +#, fuzzy +msgid "Hotplug device settings" +msgstr "Dispositivi del client" + +#: personal/environment/environment.tpl:342 +msgid "" +"Using this option will overwrite the complete printer settings for all " +"currently edited objects!" +msgstr "" + +#: personal/environment/environment.tpl:343 +#: personal/environment/environment.tpl:376 +#, fuzzy +msgid "Printer settings" +msgstr "Impostazioni Unix" + +#: personal/environment/environment.tpl:360 +#: personal/environment/environment.tpl:393 +msgid "Toggle admin" +msgstr "" + +#: personal/environment/environment.tpl:363 +#: personal/environment/environment.tpl:396 +msgid "Toggle default" +msgstr "" + +#: personal/environment/class_logonManagementDialog.inc:107 +#: personal/environment/logonManagement.tpl:10 +#, fuzzy +msgid "Script name" +msgstr "Script path" + +#: personal/environment/main.inc:134 +#, fuzzy +msgid "User environment settings" +msgstr "Opzioni di posta dell'identità" + +#: personal/environment/class_selectPrinterDialog.inc:107 +#, fuzzy +msgid "Please select a printer!" +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/environment/class_hotplugDialog.inc:64 +#, fuzzy +msgid "Please select a hotplug device!" +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/environment/selectPrinterDialog.tpl:1 +#, fuzzy +msgid "Add printer devices" +msgstr "Dispositivi del client" + +#: personal/environment/selectPrinterDialog.tpl:48 +#, fuzzy +msgid "Display printers matching" +msgstr "Mostra utenti che corrispondono a" + +#: personal/environment/selectPrinterDialog.tpl:53 +#, fuzzy +msgid "Regular expression for matching printer names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: personal/environment/logonManagement.tpl:8 +#, fuzzy +msgid "Logon script settings" +msgstr "Impostazioni Unix" + +#: personal/environment/logonManagement.tpl:24 +#, fuzzy +msgid "Priority" +msgstr "Proxy" + +#: personal/environment/logonManagement.tpl:34 +msgid "Logon script flags" +msgstr "" + +#: personal/environment/logonManagement.tpl:38 +msgid "Last script" +msgstr "" + +#: personal/environment/logonManagement.tpl:44 +msgid "Script can be replaced by user" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:1 +#, fuzzy +msgid "Add hotplug devices" +msgstr "Dispositivi del client" + +#: personal/environment/hotplugDialog.tpl:5 +#, fuzzy +msgid "Hotplug management" +msgstr "Riferimenti" + +#: personal/environment/hotplugDialog.tpl:10 +#, fuzzy +msgid "Select hotplug device to add" +msgstr "Rimuovi" + +#: personal/environment/hotplugDialog.tpl:34 +#, fuzzy +msgid "Choose the department the search will be based on" +msgstr "Scegli il dipartimento di base per la ricerca" + +#: personal/environment/hotplugDialog.tpl:48 +#, fuzzy +msgid "Regular expression for matching hotplugs" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "Dipartimento" + +#, fuzzy +#~ msgid "GOsa configuration %s/%s is not readable. Aborted." +#~ msgstr "Il file di configurazione di GOsa %s/gosa.conf non è legibile." + +#, fuzzy +#~ msgid "Password method" +#~ msgstr "Algorimo password" + +#~ msgid "" +#~ "The passwords you've entered as 'New password' and 'Repeated new " +#~ "password' do not match." +#~ msgstr "Le password nuova e ripetuta non corrispondono" + +#~ msgid "New password" +#~ msgstr "Nuova password" + +#~ msgid "The password used as new and current are too similar." +#~ msgstr "" +#~ "La password immessa come 'Nuova password' è troppo simile a quella " +#~ "attuale." + +#~ msgid "The password used as new is to short." +#~ msgstr "La 'Nuova password' immessa è troppo corta." + +#~ msgid "Current password" +#~ msgstr "Password attuale" + +#~ msgid "You have no permissions to change your password." +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "External password changer reported a problem: " +#~ msgstr "Il programma esterno per cambiare la password ha avuto un problema:" + +#, fuzzy +#~ msgid "PHP configuration" +#~ msgstr "Scarica il file di configurazione" + +#, fuzzy +#~ msgid "Password change" +#~ msgstr "Cambia la password" + +#, fuzzy +#~ msgid "Your password is about to expire, please change your password!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "Plugin" +#~ msgstr "Ricerca" + +#, fuzzy +#~ msgid "Smarty" +#~ msgstr "Avvio" + +#, fuzzy +#~ msgid "Session is not encrypted!" +#~ msgstr "Rilevato un conflitto di sessione" + +#, fuzzy +#~ msgid "Smarty error" +#~ msgstr "Stato" + +#, fuzzy +#~ msgid "Authentication error" +#~ msgstr "Destinazione" + +#, fuzzy +#~ msgid "Account locked. Please contact your system administrator!" +#~ msgstr "" +#~ "Errore di connessione al server LDAP. Contatta l'amministratore del " +#~ "sistema." + +#~ msgid "Session conflict detected" +#~ msgstr "Rilevato un conflitto di sessione" + +#~ msgid "Logout" +#~ msgstr "Termina sessione" + +#~ msgid "Locking conflict detected" +#~ msgstr "Rilevato un conflitto di accesso" + +#, fuzzy +#~ msgid "Restoring object snapshots" +#~ msgstr "Gruppo di oggetti" + +#~ msgid "Object" +#~ msgstr "Oggetto" + +#, fuzzy +#~ msgid "Creating object snapshots" +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Change your password" +#~ msgstr "Cambia la password" + +#, fuzzy +#~ msgid "Success" +#~ msgstr "Setup completato" + +#~ msgid "Directory" +#~ msgstr "Directory" + +#~ msgid "Username" +#~ msgstr "Nome utente" + +#, fuzzy +#~ msgid "New password repeated" +#~ msgstr "Nuova password" + +#, fuzzy +#~ msgid "Password strength" +#~ msgstr "Algorimo password" + +#, fuzzy +#~ msgid "Change" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "Click here to change your password" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "Your password has expired. Please choose a new one!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "Old password" +#~ msgstr "Password" + +#, fuzzy +#~ msgid "Verify password" +#~ msgstr "Password" + +#~ msgid "Change password" +#~ msgstr "Cambia la password" + +#, fuzzy +#~ msgid "Login screen" +#~ msgstr "Utenti di Dominio" + +#, fuzzy +#~ msgid "" +#~ "Please use your username and your password to log into the site " +#~ "administration system." +#~ msgstr "Usa il tuo nome utente e password per connetterti" + +#~ msgid "Sign in" +#~ msgstr "Entra" + +#~ msgid "Click here to log in" +#~ msgstr "Clicca qui per connetterti" + +#~ msgid "Information" +#~ msgstr "Informazioni" + +#, fuzzy +#~ msgid "New ACL" +#~ msgstr "Nuovo" + +#, fuzzy +#~ msgid "ACL type" +#~ msgstr "Tipo" + +#, fuzzy +#~ msgid "Select an acl type" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Additional filter options" +#~ msgstr "Opzioni applicazione" + +#~ msgid "Members" +#~ msgstr "Membri" + +#, fuzzy +#~ msgid "List of available ACL categories" +#~ msgstr "Scegli il tuo numero di telefono personale" + +#, fuzzy +#~ msgid "ACL for this object" +#~ msgstr "Controllo il supporto per iconv" + +#, fuzzy +#~ msgid "Available roles" +#~ msgstr "Applicazioni disponibili" + +#~ msgid "" +#~ "You are currently editing a database entry. Do you want to dismiss the " +#~ "changes?" +#~ msgstr "" +#~ "Stai modificando un campo del database. Vuoi abbandonare i cambiamenti?" + +#~ msgid "Main" +#~ msgstr "Principale" + +#~ msgid "Help" +#~ msgstr "Aiuto" + +#~ msgid "Sign out" +#~ msgstr "Termina la sessione" + +#~ msgid "Signed in:" +#~ msgstr "Connesso:" + +#~ msgid "Set" +#~ msgstr "Imposta" + +#~ msgid "Save" +#~ msgstr "Salva" + +#, fuzzy +#~ msgid "Cancel all" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "Operation complete" +#~ msgstr "incompleto" + +#~ msgid "Finish" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Sign in again" +#~ msgstr "Entra" + +#~ msgid "Search" +#~ msgstr "Cerca" + +#, fuzzy +#~ msgid "Please select the preferred language" +#~ msgstr "Lingua preferita" + +#, fuzzy +#~ msgid "Please select your preferred language here" +#~ msgstr "Lingua preferita" + +#, fuzzy +#~ msgid "Checking PHP version" +#~ msgstr "Controllo della versione di PHP (>=4.1.0)" + +#, fuzzy +#~ msgid "PHP must be of version %s or above." +#~ msgstr "PHP deve essere la versione 4.1.0 o superiore." + +#, fuzzy +#~ msgid "mbstring" +#~ msgstr "Impostazioni Samba" + +#, fuzzy +#~ msgid "MySQL" +#~ msgstr "Errore LDAP" + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to communicate with several supported databases." +#~ msgstr "" +#~ "Queso modulo serve a leggere i report di GOfax dal database.GOsa funziona " +#~ "correttamente anche senza." + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to show printers that are not defined within " +#~ "the LDAP." +#~ msgstr "" +#~ "Queso modulo serve a leggere i report di GOfax dal database.GOsa funziona " +#~ "correttamente anche senza." + +#, fuzzy +#~ msgid "" +#~ "register_globals is a PHP mechanism to register all global variables to " +#~ "be accessible from scripts without changing the scope. This may be a " +#~ "security risk." +#~ msgstr "" +#~ "register_globals è un meccanismo PHP che può comportare maggiori rischi " +#~ "per la sicurezza. GOsa funziona in entrambe le modalità" + +#, fuzzy +#~ msgid "" +#~ "Search for 'register_globals' in your php.ini and switch it to 'Off'." +#~ msgstr "Controllo se register_globals e impostato su 'off'" + +#, fuzzy +#~ msgid "" +#~ "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 " +#~ "or higher." +#~ msgstr "" +#~ "Per non avere problemi con GOsa è necessario impostare l'opzione session." +#~ "auto_register su 'off' nel file php.ini" + +#, fuzzy +#~ msgid "" +#~ "In Order to use GOsa without any trouble, the session.auto_register " +#~ "option in your php.ini should be set to 'Off'." +#~ msgstr "" +#~ "Per non avere problemi con GOsa è necessario impostare l'opzione session." +#~ "auto_register su 'off' nel file php.ini" + +#, fuzzy +#~ msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." +#~ msgstr "" +#~ "Per non avere problemi con GOsa è necessario impostare l'opzione session." +#~ "auto_register su 'off' nel file php.ini" + +#, fuzzy +#~ msgid "" +#~ "GOsa needs at least 32MB of memory. Setting it below this limit may cause " +#~ "errors that are not reproducable! Increase it for larger setups." +#~ msgstr "" +#~ "Per non avere problemi con GOsa è necessario impostare l'opzione " +#~ "memory_limit a 16MB o più nel file php.ini" + +#, fuzzy +#~ msgid "" +#~ "This option influences the PHP output handling. Turn this Option off, to " +#~ "increase performance." +#~ msgstr "" +#~ "Per motivi di performance è consigliato di impostare l'opzione " +#~ "implicit_flush su 'off' nel file php.ini." + +#, fuzzy +#~ msgid "The Execution time should be at least 30 seconds." +#~ msgstr "" +#~ "Per non avere problemi con GOsa è necessario impostare l'opzione " +#~ "max_execution_time a 30 secondi o più nel file php.ini" + +#, fuzzy +#~ msgid "" +#~ "Increase the server security by setting expose_php to 'off'. PHP won't " +#~ "send any information about the server you are running in this case." +#~ msgstr "" +#~ "Per motivi di sicurezza è consigliato di impostare l'opzione expose_php " +#~ "su 'off' nel file php.ini." + +#, fuzzy +#~ msgid "On" +#~ msgstr "Opzioni" + +#~ msgid "" +#~ "Increase your server security by setting magic_quotes_gpc to 'on'. PHP " +#~ "will escape all quotes in strings in this case." +#~ msgstr "" +#~ "Per motivi di sicurezza è consigliato di impostare l'opzione " +#~ "magic_quotes_gpc su 'on' nel file php.ini." + +#, fuzzy +#~ msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." +#~ msgstr "Controllo se register_globals e impostato su 'off'" + +#, fuzzy +#~ msgid "" +#~ "Increase your server performance by setting magic_quotes_gpc to 'off'." +#~ msgstr "" +#~ "Per motivi di sicurezza è consigliato di impostare l'opzione " +#~ "magic_quotes_gpc su 'on' nel file php.ini." + +#, fuzzy +#~ msgid "" +#~ "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to " +#~ "'Off'." +#~ msgstr "" +#~ "Per non avere problemi con GOsa è necessario impostare l'opzione session." +#~ "auto_register su 'off' nel file php.ini" + +#, fuzzy +#~ msgid "Configuration writeable" +#~ msgstr "File di configurazione" + +#, fuzzy +#~ msgid "The configuration file can't be written" +#~ msgstr "File di configurazione" + +#, fuzzy +#~ msgid "Schema specific settings" +#~ msgstr "Impostazioni Samba" + +#, fuzzy +#~ msgid "Check status" +#~ msgstr "Stato" + +#, fuzzy +#~ msgid "Schema check failed" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Setup error" +#~ msgstr "Stato" + +#, fuzzy +#~ msgid "Completed" +#~ msgstr "incompleto" + +#, fuzzy +#~ msgid "UNIX accounts/groups" +#~ msgstr "Account Unix" + +#, fuzzy +#~ msgid "Samba management" +#~ msgstr "Dirigenza" + +#, fuzzy +#~ msgid "Mailsystem management" +#~ msgstr "Riferimenti" + +#, fuzzy +#~ msgid "FAX system administration" +#~ msgstr "Amministrazione utenti" + +#, fuzzy +#~ msgid "Asterisk administration" +#~ msgstr "Amministrazione utenti" + +#, fuzzy +#~ msgid "System-/Configmanagement" +#~ msgstr "Riferimenti" + +#~ msgid "Addressbook" +#~ msgstr "Rubrica" + +#, fuzzy +#~ msgid "Get notifications or send feedback" +#~ msgstr "Non ci sono certificati installati" + +#, fuzzy +#~ msgid "Notification and feedback" +#~ msgstr "Non ci sono certificati installati" + +#, fuzzy +#~ msgid "Please specify a valid email address." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "LDAP schema check" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "No" +#~ msgstr "nessuno" + +#, fuzzy +#~ msgid "Yes" +#~ msgstr "Sistemi" + +#, fuzzy +#~ msgid "LDAP setup" +#~ msgstr "Dispositivi" + +#, fuzzy +#~ msgid "LDAP connection setup" +#~ msgstr "Disconnessione " + +#, fuzzy +#~ msgid "" +#~ "This dialog performs the basic configuration of the LDAP connectivity for " +#~ "GOsa." +#~ msgstr "I campi seguenti permettono una configurazione base di GOsa." + +#, fuzzy +#~ msgid "Bind as user '%s' failed!" +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' succeeded." +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "Please specify user and password!" +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Bind as user '%s' to server '%s' succeeded!" +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "Language setup" +#~ msgstr "Lingua" + +#, fuzzy +#~ msgid "This step allows you to select your preferred language." +#~ msgstr "Lingua preferita" + +#, fuzzy +#~ msgid "Automatic" +#~ msgstr "automatico" + +#, fuzzy +#~ msgid "GOsa setup wizard" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Setup" +#~ msgstr "Imposta" + +#, fuzzy +#~ msgid "Create your configuration file" +#~ msgstr "File di configurazione" + +#~ msgid "Download configuration" +#~ msgstr "Scarica il file di configurazione" + +#, fuzzy +#~ msgid "Status: " +#~ msgstr "Stato" + +#, fuzzy +#~ msgid "Theme" +#~ msgstr "Cellulare" + +#, fuzzy +#~ msgid "Apache" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "People and group storage" +#~ msgstr "Ou delle persone" + +#, fuzzy +#~ msgid "People DN attribute" +#~ msgstr "Attributo DN delle persone" + +#, fuzzy +#~ msgid "People storage subtree" +#~ msgstr "Ou delle persone" + +#, fuzzy +#~ msgid "Group storage subtree" +#~ msgstr "Ou dei gruppi" + +#, fuzzy +#~ msgid "Automatic UIDs" +#~ msgstr "automatico" + +#, fuzzy +#~ msgid "Number base for people/groups" +#~ msgstr "UID di base per utenti/gruppi" + +#, fuzzy +#~ msgid "Password settings" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Password encryption algorithm" +#~ msgstr "Algoritmo di criptaggio" + +#, fuzzy +#~ msgid "Password restrictions" +#~ msgstr "La password spira il" + +#, fuzzy +#~ msgid "Password change hook" +#~ msgstr "Cambia la password" + +#, fuzzy +#~ msgid "Use account expiration" +#~ msgstr "L'account spira dopo" + +#~ msgid "" +#~ "GOsa supports several encryption types for your passwords. Normally this " +#~ "is adjustable via user templates, but you can specify a default method to " +#~ "be used here, too." +#~ msgstr "" +#~ "GOsa supporta numerosi algoritmi di criptaggio per le password. Imposta " +#~ "quello di default." + +#, fuzzy +#~ msgid "" +#~ "GOsa always acts as admin and manages access rights internally. This is a " +#~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " +#~ "For this to work, we need the admin DN and the corresponding password." +#~ msgstr "" +#~ "GOsa agisce sul DIT tramite l'utente di amministrazione e possiede uno " +#~ "schema di permessi interno. Questo è un workaround finché non sarà " +#~ "completato il supportp per le ACL all'interno del DIT in OpenLDAP." + +#~ msgid "" +#~ "Some basic LDAP parameters are tunable and affect the locations where " +#~ "GOsa saves people and groups, including the way accounts get created. " +#~ "Check the values below if the fit your needs." +#~ msgstr "" +#~ "Alcuni parametri di LDAP sono selezionabili e influenzano il posto in cui " +#~ "GOsa salva le identità e i gruppi. Controlla che i valori riportati " +#~ "corrispondano alle impostaioni del tuo DIT." + +#, fuzzy +#~ msgid "" +#~ "GOsa has modular support for several mail methods. These methods provide " +#~ "interfaces to users mailboxes and general handling for quotas. You can " +#~ "choose the dummy plugin to leave all your mail settings untouched." +#~ msgstr "" +#~ "GOsa supporta numerosi metodi per amministrare la posta. Questi metodi " +#~ "possiedono interfacce per impostare opzioni come ad esempio la quota. " +#~ "Puoi impostare il metodo 'dummy' per mantenere tutte le impostazioni." + +#~ msgid "Samba settings" +#~ msgstr "Impostazioni Samba" + +#, fuzzy +#~ msgid "Samba SID" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "RID base" +#~ msgstr "Database" + +#, fuzzy +#~ msgid "Workstation container" +#~ msgstr "Mostra workstation" + +#, fuzzy +#~ msgid "Samba SID mapping" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "Timezone" +#~ msgstr "Cellulare" + +#, fuzzy +#~ msgid "Please choose your preferred timezone here" +#~ msgstr "Lingua preferita" + +#, fuzzy +#~ msgid "Additional GOsa settings" +#~ msgstr "Opzioni applicazione" + +#, fuzzy +#~ msgid "Enable DNS extension" +#~ msgstr "Elimina foto" + +#, fuzzy +#~ msgid "Enable DHCP extension" +#~ msgstr "Elimina foto" + +#, fuzzy +#~ msgid "Enable mime type management" +#~ msgstr "Riferimenti" + +#, fuzzy +#~ msgid "Enable FAI release management" +#~ msgstr "Riferimenti" + +#, fuzzy +#~ msgid "Enable user netatalk plugin" +#~ msgstr "Crea estensioni telefoniche" + +#, fuzzy +#~ msgid "Government mode" +#~ msgstr "nella cartella" + +#, fuzzy +#~ msgid "Logging options" +#~ msgstr "Utenti di Dominio" + +#, fuzzy +#~ msgid "Syslog" +#~ msgstr "Log di sitema" + +#, fuzzy +#~ msgid "Mail settings" +#~ msgstr "Opzioni di posta dell'identità" + +#~ msgid "Mail method" +#~ msgstr "Metodo di amministrazione della posta" + +#, fuzzy +#~ msgid "Vacation templates" +#~ msgstr "Messaggio di di risposta automatica" + +#, fuzzy +#~ msgid "Snapshots / Undo" +#~ msgstr "Nome applicazione" + +#, fuzzy +#~ msgid "Enable snapshots" +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "Snapshot base" +#~ msgstr "Nome applicazione" + +#, fuzzy +#~ msgid "GOsa core settings" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Disable primary group filter" +#~ msgstr "Mostra gruppi di utenti" + +#, fuzzy +#~ msgid "Display summary in listings" +#~ msgstr "Mosra gruppi corrispondenti a" + +#, fuzzy +#~ msgid "Honour administrative units" +#~ msgstr "Amministrazione dei gruppi di utenti" + +#, fuzzy +#~ msgid "Smarty compile directory" +#~ msgstr "Home directory" + +#, fuzzy +#~ msgid "Path for PPD storage" +#~ msgstr "Algorimo password" + +#, fuzzy +#~ msgid "Path for kiosk profile storage" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Mail queue script" +#~ msgstr "Script path" + +#, fuzzy +#~ msgid "Notification script" +#~ msgstr "Non ci sono certificati installati" + +#, fuzzy +#~ msgid "Login attribute" +#~ msgstr "Attributo DN delle persone" + +#, fuzzy +#~ msgid "Remember dialog filter settings" +#~ msgstr "Impostazioni generali delle code" + +#, fuzzy +#~ msgid "Session lifetime" +#~ msgstr "Rilevato un conflitto di sessione" + +#, fuzzy +#~ msgid "Show PHP errors" +#~ msgstr "Errore PHP" + +#, fuzzy +#~ msgid "Maximum LDAP query time" +#~ msgstr "Inoltra i messaggi a" + +#, fuzzy +#~ msgid "Debug level" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Disabled" +#~ msgstr "disabilitato" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "disabilitato" + +#, fuzzy +#~ msgid "GOsa settings 1/3" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "GOsa generic settings" +#~ msgstr "Impostazioni generali delle code" + +#~ msgid "People storage ou" +#~ msgstr "Ou delle persone" + +#~ msgid "Group storage ou" +#~ msgstr "Ou dei gruppi" + +#, fuzzy +#~ msgid "GOsa settings 2/3" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Customize special parameters" +#~ msgstr "Parametro" + +#, fuzzy +#~ msgid "GOsa settings 3/3" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Maximum LDAP query time must be a numeric value!" +#~ msgstr "Inoltra i messaggi a" + +#, fuzzy +#~ msgid "Write configuration file" +#~ msgstr "File di configurazione" + +#, fuzzy +#~ msgid "Finish - write the configuration file" +#~ msgstr "File di configurazione" + +#, fuzzy +#~ msgid "" +#~ "Your configuration file is currently world readable. Please update the " +#~ "file permissions!" +#~ msgstr "Il file di configurazione di GOsa %s/gosa.conf non è legibile." + +#, fuzzy +#~ msgid "The configuration is currently not readable or it does not exists." +#~ msgstr "Il file di configurazione di GOsa %s/gosa.conf non è legibile." + +#, fuzzy +#~ msgid "" +#~ "After downloading and placing the file under %s, please make sure that " +#~ "the user the webserver is running with is able to read %s, while other " +#~ "users shouldn't. You may want to execute these commands to achieve this " +#~ "requirement:" +#~ msgstr "" +#~ "Dopo averlo scaricato dentro /etc/gosa/, assicurati che l'utente del " +#~ "webserver sia in grado di leggerlo mentre tutti gli altri utenti non " +#~ "possono. In molti casi è sufficiente eseguire i comandi seguenti." + +#, fuzzy +#~ msgid "Create a basic, single site configuration" +#~ msgstr "Scarica il file di configurazione" + +#, fuzzy +#~ msgid "Find every possible configuration error" +#~ msgstr "File di configurazione" + +#, fuzzy +#~ msgid "To continue..." +#~ msgstr "Configurazione continua..." + +#~ msgid "Organization" +#~ msgstr "Organizzazione" + +#~ msgid "Mail address" +#~ msgstr "Indirizzo principale" + +#, fuzzy +#~ msgid "Features" +#~ msgstr "Futuro" + +#, fuzzy +#~ msgid "Check again" +#~ msgstr "Continua" + +#, fuzzy +#~ msgid "Move selected workstations" +#~ msgstr "Selezione le workstation da aggiungere" + +#, fuzzy +#~ msgid "Hide changes" +#~ msgstr "Open-Xchange" + +#, fuzzy +#~ msgid "Show changes" +#~ msgstr "Mostra telefoni" + +#, fuzzy +#~ msgid "Move selected users into this people tree" +#~ msgstr "Nuovo template" + +#, fuzzy +#~ msgid "Create a new GOsa administrator account" +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "Password (again)" +#~ msgstr "Algorimo password" + +#, fuzzy +#~ msgid "Current" +#~ msgstr "Password attuale" + +#, fuzzy +#~ msgid "After migration" +#~ msgstr "Amministrazione utenti" + +#, fuzzy +#~ msgid "Refresh" +#~ msgstr "Riferimenti" + +#, fuzzy +#~ msgid "Welcome" +#~ msgstr "Benvenuto %s!" + +#, fuzzy +#~ msgid "The welcome message" +#~ msgstr "Elimina questo record" + +#, fuzzy +#~ msgid "Welcome to GOsa setup wizard" +#~ msgstr "Benvenuto nel setup di GOsa!" + +#, fuzzy +#~ msgid "PHP setup configuration" +#~ msgstr "Scarica il file di configurazione" + +#, fuzzy +#~ msgid "LDAP connection" +#~ msgstr "Disconnessione " + +#~ msgid "Location name" +#~ msgstr "Nome locazione" + +#, fuzzy +#~ msgid "Connection URL" +#~ msgstr "Connessione" + +#, fuzzy +#~ msgid "TLS connection" +#~ msgstr "Connessione" + +#, fuzzy +#~ msgid "Authentication" +#~ msgstr "Destinazione" + +#~ msgid "Admin DN" +#~ msgstr "DN dell'amministratore" + +#, fuzzy +#~ msgid "Select user" +#~ msgstr "Rimuovi" + +#~ msgid "Admin password" +#~ msgstr "Password dell'amministratore" + +#, fuzzy +#~ msgid "Schema based settings" +#~ msgstr "Impostazioni Samba" + +#, fuzzy +#~ msgid "Current status" +#~ msgstr "Stato" + +#, fuzzy +#~ msgid "LDAP inspection" +#~ msgstr "Ispezione della configurazione PHP" + +#, fuzzy +#~ msgid "Checking for root object" +#~ msgstr "Controllo il supporto per iconv" + +#, fuzzy +#~ msgid "Checking for invisible departments" +#~ msgstr "Controllo il supporto per iconv" + +#, fuzzy +#~ msgid "Checking for invisible users" +#~ msgstr "Controllo il supporto per iconv" + +#, fuzzy +#~ msgid "Checking for super administrator" +#~ msgstr "Controllo la presenza di alcuni programmi addizionali" + +#, fuzzy +#~ msgid "Checking for users outside the people tree" +#~ msgstr "Controllo il modulo cups" + +#, fuzzy +#~ msgid "Checking for groups outside the groups tree" +#~ msgstr "Controllo il modulo cups" + +#, fuzzy +#~ msgid "Checking for duplicated UID numbers" +#~ msgstr "Controllo il supporto per %s" + +#, fuzzy +#~ msgid "Checking for duplicate GID numbers" +#~ msgstr "Controllo il supporto per %s" + +#, fuzzy +#~ msgid "Checking for old style USB devices" +#~ msgstr "Controllo il supporto per iconv" + +#, fuzzy +#~ msgid "Checking for old services that have to be migrated" +#~ msgstr "Controllo il modulo cups" + +#, fuzzy +#~ msgid "Checking for old style application menus" +#~ msgstr "Controllo il supporto per %s" + +#, fuzzy +#~ msgid "LDAP query failed" +#~ msgstr "La query al database è fallita!" + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'uidNumber'." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'gidNumber'." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#~ msgid "Failed" +#~ msgstr "Fallito" + +#, fuzzy +#~ msgid "Found %s groups outside the configured tree '%s'." +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "Move" +#~ msgstr "Dominio" + +#, fuzzy +#~ msgid "Migration error" +#~ msgstr "Creare" + +#, fuzzy +#~ msgid "Cannot migrate department '%s':" +#~ msgstr "Vai al dipartimento base" + +#, fuzzy +#~ msgid "Input error" +#~ msgstr "Errore PHP" + +#, fuzzy +#~ msgid "Password error" +#~ msgstr "La password spira il" + +#, fuzzy +#~ msgid "Provided passwords do not match!" +#~ msgstr "Le password nuova e ripetuta non corrispondono" + +#, fuzzy +#~ msgid "Specify a valid user ID!" +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Cannot move users to the requested department!" +#~ msgstr "Mostra utenti del dipartimento" + +#, fuzzy +#~ msgid "to" +#~ msgstr "Rapporto" + +#, fuzzy +#~ msgid "Try to create root object" +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Updating '%s' failed: %s" +#~ msgstr "Utenti di Dominio" + +#, fuzzy +#~ msgid "All objects in this category" +#~ msgstr "Nome descrittivo del gruppo" + +#, fuzzy +#~ msgid "Select to list objects of type '%s'." +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Select to list objects containig '%s'." +#~ msgstr "Mostra gruppi che contengono utenti" + +#, fuzzy +#~ msgid "Select to list objects that have '%s' enabled" +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "You have no permission to delete this object!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to delete the object:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to delete these objects:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to create this object!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to create the object:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to create these objects:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to modify this object!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to modify the object:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to modify these objects:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to view this object!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to view the object:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to view these objects:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to move this object!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to move the object:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to move these objects:" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "Connection information" +#~ msgstr "Informazioni personali" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Impossibile connettersi al server del database!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "Cannot query %s database!" +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "'%s' command is invalid!" +#~ msgstr "Il valore specificato per l'UID non è valido." + +#, fuzzy +#~ msgid "'%s' command (%s) is invalid!" +#~ msgstr "Il valore specificato per l'UID non è valido." + +#, fuzzy +#~ msgid "Cannot execute '%s' command!" +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "Cannot execute '%s' command (%s)!" +#~ msgstr "Impossibile selezionare il database!" + +#, fuzzy +#~ msgid "Value for '%s' is too large!" +#~ msgstr "Il valore specificato per l'UID è troppo basso." + +#, fuzzy +#~ msgid "Value for '%s' is too small!" +#~ msgstr "Il valore specificato per l'UID è troppo basso." + +#, fuzzy +#~ msgid "'%s' must be %d or above!" +#~ msgstr "PHP deve essere la versione 4.1.0 o superiore." + +#, fuzzy +#~ msgid "The required field '%s' is empty!" +#~ msgstr "Il campo necessario 'Home directory' non è vuoto" + +#, fuzzy +#~ msgid "'%s' are not allowed!" +#~ msgstr "Cambia la password" + +#, fuzzy +#~ msgid "Missing %s PHP extension!" +#~ msgstr "Elimina foto" + +#, fuzzy +#~ msgid "Add %s" +#~ msgstr "Aggiungi" + +#, fuzzy +#~ msgid "Delete %s" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Set %s" +#~ msgstr "Imposta" + +#, fuzzy +#~ msgid "Edit..." +#~ msgstr "Modifica" + +#, fuzzy +#~ msgid "Edit %s..." +#~ msgstr "Modifica contatto" + +#, fuzzy +#~ msgid "This account has no valid %s extensions!" +#~ msgstr "Questa identità non possiede estensioni GOsa." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "Questa identià possiede estensioni Unix." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. To disable them, you'll need to " +#~ "remove the %s settings first!" +#~ msgstr "" +#~ "Questa identià possiede estensioni Unix. Per eliminarle devi eliminare " +#~ "prima le estensioni Samba / ambiente." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "Questa identità non possiede estensioni Unix" + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. To enable them, you'll need to add " +#~ "the %s settings first!" +#~ msgstr "" +#~ "Questa identià possiede estensioni Unix. Per eliminarle devi eliminare " +#~ "prima le estensioni Samba / ambiente." + +#, fuzzy +#~ msgid "" +#~ "This account has %s features settings. To disable them, you'll need to " +#~ "add the %s settings first!" +#~ msgstr "" +#~ "Questa identià possiede estensioni Unix. Per eliminarle devi eliminare " +#~ "prima le estensioni Samba / ambiente." + +#, fuzzy +#~ msgid "Add %s settings" +#~ msgstr "Opzioni applicazione" + +#, fuzzy +#~ msgid "Remove %s settings" +#~ msgstr "Impostazioni Unix" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " +#~ "questo dialogo" + +#~ msgid "January" +#~ msgstr "Gennaio" + +#~ msgid "February" +#~ msgstr "Febbraio" + +#~ msgid "March" +#~ msgstr "Marzo" + +#~ msgid "April" +#~ msgstr "Aprile" + +#~ msgid "May" +#~ msgstr "Maggio" + +#~ msgid "June" +#~ msgstr "Giugno" + +#~ msgid "July" +#~ msgstr "Luglio" + +#~ msgid "August" +#~ msgstr "Agosto" + +#~ msgid "September" +#~ msgstr "Settembre" + +#~ msgid "October" +#~ msgstr "Ottobre" + +#~ msgid "November" +#~ msgstr "Novembre" + +#~ msgid "December" +#~ msgstr "Dicembre" + +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "Cognome" + +#, fuzzy +#~ msgid "Monday" +#~ msgstr "mese" + +#, fuzzy +#~ msgid "read operation" +#~ msgstr "Opzioni di posta" + +#, fuzzy +#~ msgid "modify operation" +#~ msgstr "Informazioni personali" + +#, fuzzy +#~ msgid "delete operation" +#~ msgstr "Selezione le workstation da aggiungere" + +#, fuzzy +#~ msgid "search operation" +#~ msgstr "L'account spira dopo" + +#, fuzzy +#~ msgid "authentication" +#~ msgstr "Destinazione" + +#, fuzzy +#~ msgid "LDAP %s failed!" +#~ msgstr "La query al database è fallita!" + +#, fuzzy +#~ msgid "LDAP operation failed!" +#~ msgstr "La query al database è fallita!" + +#, fuzzy +#~ msgid "Upload failed: %s" +#~ msgstr "Utenti di Dominio" + +#, fuzzy +#~ msgid "This '%s' is still in use." +#~ msgstr "Nome descrittivo del gruppo" + +#, fuzzy +#~ msgid "This '%s' is still in use by these objects: %s" +#~ msgstr "Nome descrittivo del gruppo" + +#, fuzzy +#~ msgid "Cannot open file '%s' for reading!" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot open file '%s' for writing!" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot create folder '%s'!" +#~ msgstr "Vai al dipartimento base" + +#, fuzzy +#~ msgid "Cannot delete folder '%s'!" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Checking for %s support" +#~ msgstr "Controllo il supporto per iconv" + +#~ msgid "ACL" +#~ msgstr "ACL" + +#~ msgid "References" +#~ msgstr "Riferimenti" + +#, fuzzy +#~ msgid "Cannot not parse XML!" +#~ msgstr "Troppi utenti non posso allocare un ID libero!" + +#, fuzzy +#~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." +#~ msgstr "Errore durante la connessione al server LDAP. Il server dice: '%s'" + +#, fuzzy +#~ msgid "Username / UID is not unique inside the LDAP tree!" +#~ msgstr "" +#~ "Errore di connessione al server LDAP. Contatta l'amministratore del " +#~ "sistema." + +#, fuzzy +#~ msgid "" +#~ "Username / UID is not unique inside the LDAP tree. Please contact your " +#~ "Administrator." +#~ msgstr "" +#~ "Errore di connessione al server LDAP. Contatta l'amministratore del " +#~ "sistema." + +#, fuzzy +#~ msgid "" +#~ "Cannot create locking information in LDAP tree. Please contact your " +#~ "administrator!" +#~ msgstr "" +#~ "Errore di connessione al server LDAP. Contatta l'amministratore del " +#~ "sistema." + +#~ msgid "Configure" +#~ msgstr "Configura" + +#~ msgid "incomplete" +#~ msgstr "incompleto" + +#, fuzzy +#~ msgid "Continue anyway" +#~ msgstr "Continua" + +#, fuzzy +#~ msgid "Edit anyway" +#~ msgstr "Modifica contatto" + +#, fuzzy +#~ msgid "You're going to edit the LDAP entry/entries %s" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "GOsa development snapshot (Rev %s)" +#~ msgstr "versione di sviluppo di GOsa (Rev %s)" + +#, fuzzy +#~ msgid "Cannot write to revision file!" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "LDAP warning" +#~ msgstr "Amministrazione LDAP" + +#, fuzzy +#~ msgid "Missing required object class '%s'!" +#~ msgstr "Lista dei dipartimenti" + +#~ msgid "German" +#~ msgstr "Tedesco" + +#~ msgid "French" +#~ msgstr "Francese" + +#~ msgid "Italian" +#~ msgstr "Italiano" + +#~ msgid "Spanish" +#~ msgstr "Spagnolo" + +#~ msgid "English" +#~ msgstr "Inglese" + +#~ msgid "Dutch" +#~ msgstr "Tedesco" + +#, fuzzy +#~ msgid "Polish" +#~ msgstr "Inglese" + +#, fuzzy +#~ msgid "Chinese" +#~ msgstr "reset" + +#, fuzzy +#~ msgid "Vietnamese" +#~ msgstr "Nome" + +#~ msgid "Russian" +#~ msgstr "Russo" + +#, fuzzy +#~ msgid "Remove snapshot" +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "Cannot bind to LDAP. Please contact the system administrator." +#~ msgstr "" +#~ "Errore di connessione al server LDAP. Contatta l'amministratore del " +#~ "sistema." + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "File di configurazione" + +#, fuzzy +#~ msgid "Copy and paste failed!" +#~ msgstr "Nome applicazione" + +#, fuzzy +#~ msgid "Cannot set permission for '%s'" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "No write permission in '%s'" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Paste" +#~ msgstr "Data" + +#, fuzzy +#~ msgid "Cannot paste" +#~ msgstr "Crea estensioni telefoniche" + +#, fuzzy +#~ msgid "You are not allowed to create a snapshot for %s." +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You are not allowed to restore a snapshot for %s." +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "Restore" +#~ msgstr "Riprova" + +#, fuzzy +#~ msgid "Create snapshot" +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "Create a new snapshot from this object" +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Azienda" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Logging failed: %s" +#~ msgstr "Utenti di Dominio" + +#, fuzzy +#~ msgid "Invalid option '%s' specified!" +#~ msgstr "L'uid contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "Specified objectType is empty or invalid!" +#~ msgstr "Il valore specificato per l'UID non è valido." + +#, fuzzy +#~ msgid "MySQL error" +#~ msgstr "Errore LDAP" + +#, fuzzy +#~ msgid "Cannot add location to the database!" +#~ msgstr "Impossibile connettersi al server del database!" + +#~ msgid "Go to root department" +#~ msgstr "Vai al dipartimento base" + +#~ msgid "Root" +#~ msgstr "Root" + +#~ msgid "Go up one department" +#~ msgstr "Sali di dipartimento" + +#~ msgid "Go to users department" +#~ msgstr "Vai agli utenti del dipartimento" + +#~ msgid "Home" +#~ msgstr "Home" + +#, fuzzy +#~ msgid "Choose a base" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Use" +#~ msgstr "Utenti" + +#, fuzzy +#~ msgid "Filter entries with this syntax" +#~ msgstr "Mostra gli indirizzi che corrispondono" + +#, fuzzy +#~ msgid "Certificate is empty!" +#~ msgstr "Certificati" + +#, fuzzy +#~ msgid "Cannot extract information for non PEM certificates!" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "No valid certificate loaded!" +#~ msgstr "Non ci sono certificati installati" + +#, fuzzy +#~ msgid "Manage access control lists" +#~ msgstr "Opzioni di accesso" + +#, fuzzy +#~ msgid "All categories" +#~ msgstr "Aggiungi contatto" + +#, fuzzy +#~ msgid "Current object" +#~ msgstr "Password attuale" + +#, fuzzy +#~ msgid "Complete subtree" +#~ msgstr "incompleto" + +#~ msgid "Groups" +#~ msgstr "Gruppi di utenti" + +#, fuzzy +#~ msgid "Down" +#~ msgstr "Dominio" + +#, fuzzy +#~ msgid "No ACL settings for this category!" +#~ msgstr "Nome descrittivo del gruppo" + +#, fuzzy +#~ msgid "category ACL" +#~ msgstr "classe" + +#, fuzzy +#~ msgid "Show/hide advanced settings" +#~ msgstr "Opzioni di posta avanzate" + +#, fuzzy +#~ msgid "Remove objects" +#~ msgstr "Oggetti membri" + +#~ msgid "read" +#~ msgstr "leggere" + +#~ msgid "write" +#~ msgstr "scrivere" + +#, fuzzy +#~ msgid "Complete object" +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Role: %s" +#~ msgstr "Ruolo" + +#, fuzzy +#~ msgid "Contains settings for these objects: %s" +#~ msgstr "Nome descrittivo del gruppo" + +#, fuzzy +#~ msgid "Access control list" +#~ msgstr "Opzioni di accesso" + +#, fuzzy +#~ msgid "ACL roles" +#~ msgstr "ACL" + +#, fuzzy +#~ msgid "Role name" +#~ msgstr "Cognome" + +#, fuzzy +#~ msgid "Role description" +#~ msgstr "Descrizoione unità" + +#, fuzzy +#~ msgid "Password reset" +#~ msgstr "La password spira il" + +#, fuzzy +#~ msgid "The user password was resetted, please set a new password value!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "while operating on '%s' using LDAP server '%s'" +#~ msgstr "Errore durante la connessione al server LDAP. Il server dice: '%s'" + +#, fuzzy +#~ msgid "while operating on LDAP server %s" +#~ msgstr "Errore durante la connessione al server LDAP. Il server dice: '%s'" + +#~ msgid "PHP error" +#~ msgstr "Errore PHP" + +#~ msgid "class" +#~ msgstr "classe" + +#~ msgid "function" +#~ msgstr "funzione" + +#~ msgid "static" +#~ msgstr "statico" + +#~ msgid "method" +#~ msgstr "metodo" + +#~ msgid "Arguments" +#~ msgstr "Argomenti" + +#, fuzzy +#~ msgid "ACL management" +#~ msgstr "Riferimenti" + +#, fuzzy +#~ msgid "ACL Templates" +#~ msgstr "Template" + +#, fuzzy +#~ msgid "List of acls" +#~ msgstr "Lista dei gruppi" + +#, fuzzy +#~ msgid "Display acls matching" +#~ msgstr "Mosra gruppi corrispondenti a" + +#~ msgid "Role" +#~ msgstr "Ruolo" + +#, fuzzy +#~ msgid "Edit acl role" +#~ msgstr "Modifica contatto" + +#, fuzzy +#~ msgid "Edit acl" +#~ msgstr "classe" + +#, fuzzy +#~ msgid "Delete acl" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "ACL role" +#~ msgstr "ACL" + +#, fuzzy +#~ msgid "Access control roles" +#~ msgstr "Opzioni di accesso" + +#, fuzzy +#~ msgid "Edit AC roles" +#~ msgstr "ACL" + +#, fuzzy +#~ msgid "Reset ACL" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "No ACL settings for this category" +#~ msgstr "Nome descrittivo del gruppo" + +#, fuzzy +#~ msgid "ACL for these objects: %s" +#~ msgstr "Nome descrittivo del gruppo" + +#, fuzzy +#~ msgid "Edit category ACL" +#~ msgstr "classe" + +#, fuzzy +#~ msgid "Reset category ACL" +#~ msgstr "classe" + +#, fuzzy +#~ msgid "Object in use" +#~ msgstr "Nome dell'oggetto" + +#~ msgid "" +#~ "Changing the password affects your authentification on mail, proxy, samba " +#~ "and unix services." +#~ msgstr "" +#~ "Cambiare la passord influisce sull'autenticazione su posta, proxu " +#~ "Internet, Samba e Unix." + +#~ msgid "Repeat new password" +#~ msgstr "Ripeti la password" + +#, fuzzy +#~ msgid "Strength" +#~ msgstr "Strada" + +#~ msgid "Set password" +#~ msgstr "Cambia password" + +#~ msgid "User administration" +#~ msgstr "Amministrazione utenti" + +#~ msgid "Creating a new user using templates" +#~ msgstr "Crea un nuovo utente usando i template" + +#, fuzzy +#~ msgid "Last name" +#~ msgstr "Scegli il tuo numero di telefono personale" + +#, fuzzy +#~ msgid "First name" +#~ msgstr "Liste di blocco" + +#, fuzzy +#~ msgid "Manage users" +#~ msgstr "Utenti di Dominio" + +#, fuzzy +#~ msgid "Infrastructure error" +#~ msgstr "Errore PHP" + +#, fuzzy +#~ msgid "You have no permission to change this users password!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to modify object '%s'!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You have no permission to use this template!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "user" +#~ msgstr "utenti" + +#, fuzzy +#~ msgid "You have no permission to change the lock status for this user!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "Given name" +#~ msgstr "Nome" + +#, fuzzy +#~ msgid "Applying a template" +#~ msgstr "Template" + +#~ msgid "List of users" +#~ msgstr "Lista degli utenti" + +#, fuzzy +#~ msgid "Show %s" +#~ msgstr "Mostra gruppi" + +#, fuzzy +#~ msgid "templates" +#~ msgstr "Template" + +#, fuzzy +#~ msgid "GOsa object" +#~ msgstr "Oggetto" + +#, fuzzy +#~ msgid "functional users" +#~ msgstr "Mostra utenti funzionali" + +#, fuzzy +#~ msgid "Posix" +#~ msgstr "Proxy" + +#, fuzzy +#~ msgid "POSIX users" +#~ msgstr "Impostazioni Unix" + +#~ msgid "Mail" +#~ msgstr "Posta" + +#, fuzzy +#~ msgid "mail users" +#~ msgstr "Utenti di Dominio" + +#~ msgid "Samba" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "samba users" +#~ msgstr "Utenti di Dominio" + +#~ msgid "Proxy" +#~ msgstr "Proxy" + +#, fuzzy +#~ msgid "proxy users" +#~ msgstr "Mostra utenti proxy" + +#, fuzzy +#~ msgid "Apply template" +#~ msgstr "Template" + +#, fuzzy +#~ msgid "Edit generic properties" +#~ msgstr "Modifica proprietà" + +#, fuzzy +#~ msgid "Edit UNIX properties" +#~ msgstr "Modifica proprietà" + +#, fuzzy +#~ msgid "Edit environment properties" +#~ msgstr "Modifica proprietà" + +#, fuzzy +#~ msgid "Edit mail properties" +#~ msgstr "Modifica proprietà" + +#, fuzzy +#~ msgid "Edit phone properties" +#~ msgstr "Modifica proprietà" + +#~ msgid "Fax" +#~ msgstr "Fax" + +#, fuzzy +#~ msgid "Edit fax properies" +#~ msgstr "Modifica proprietà" + +#, fuzzy +#~ msgid "Edit samba properties" +#~ msgstr "Modifica proprietà" + +#, fuzzy +#~ msgid "Edit netatalk properties" +#~ msgstr "Modifica proprietà" + +#, fuzzy +#~ msgid "Create user from template" +#~ msgstr "Nuovo template" + +#, fuzzy +#~ msgid "Create user with this template" +#~ msgstr "Nuovo template" + +#, fuzzy +#~ msgid "inactive" +#~ msgstr "Privato" + +#, fuzzy +#~ msgid "active" +#~ msgstr "Privato" + +#, fuzzy +#~ msgid "password" +#~ msgstr "Password" + +#, fuzzy +#~ msgid "Not allowed" +#~ msgstr "Cambia la password" + +#, fuzzy +#~ msgid "Delete user" +#~ msgstr "Rimuovi" + +#~ msgid "Samba group" +#~ msgstr "Gruppo Samba" + +#~ msgid "Domain admins" +#~ msgstr "Amministratori di Dominio" + +#~ msgid "Domain users" +#~ msgstr "Utenti di Dominio" + +#~ msgid "Domain guests" +#~ msgstr "Ospiti di Dominio" + +#~ msgid "Special group (%d)" +#~ msgstr "Gruppo speciale (%d)" + +#~ msgid "full access" +#~ msgstr "accesso completo" + +#~ msgid "allow access to these hosts" +#~ msgstr "accesso limitato ai seguenti host" + +#, fuzzy +#~ msgid "Cannot find any SID for '%s'!" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot find any RIDBASE for '%s'!" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot allocate a free ID!" +#~ msgstr "Troppi utenti non posso allocare un ID libero!" + +#, fuzzy +#~ msgid "Generic group settings" +#~ msgstr "Impostazioni generali delle code" + +#, fuzzy +#~ msgid "Samba group type" +#~ msgstr "Gruppo Samba" + +#, fuzzy +#~ msgid "Samba domain name" +#~ msgstr "Home di Samba" + +#~ msgid "System trust" +#~ msgstr "Accesso ai sistemi" + +#, fuzzy +#~ msgid "Phone pickup group" +#~ msgstr "I membri sono in un gruppo di risposta telefonica" + +#, fuzzy +#~ msgid "Nagios group" +#~ msgstr "Contatto" + +#, fuzzy +#~ msgid "Group member" +#~ msgstr "Membri del gruppo" + +#~ msgid "Group administration" +#~ msgstr "Amministrazione dei gruppi di utenti" + +#~ msgid "Select systems to add" +#~ msgstr "Seleziona un sistema da aggiungere" + +#~ msgid "Display systems of department" +#~ msgstr "Mostra i sistemi del dipartimento" + +#~ msgid "Display systems matching" +#~ msgstr "Mostra i sistemi che corrispondono a:" + +#~ msgid "Regular expression for matching addresses" +#~ msgstr "Espressione regolare per selezionare l'indirizzo" + +#, fuzzy +#~ msgid "Group settings" +#~ msgstr "Impostazioni FAX" + +#~ msgid "Group name" +#~ msgstr "Nome gruppo" + +#~ msgid "Posix name of the group" +#~ msgstr "Nome Unix del gruppo" + +#~ msgid "Normally IDs are autogenerated, select to specify manually" +#~ msgstr "" +#~ "Normalmente le ID sono autogenerate, selezionare per specificarelo " +#~ "manulamente" + +#~ msgid "Force GID" +#~ msgstr "Forza GID" + +#~ msgid "Forced ID number" +#~ msgstr "Forza numero ID" + +#, fuzzy +#~ msgid "group" +#~ msgstr "gruppi" + +#~ msgid "Select users to add" +#~ msgstr "Selezioni utenti da aggiungere" + +#~ msgid "Display users of department" +#~ msgstr "Mostra utenti del dipartimento" + +#~ msgid "List of groups" +#~ msgstr "Lista dei gruppi" + +#~ msgid "Select to see groups that are primary groups of users" +#~ msgstr "" +#~ "Selezione per mostrare i gruppi che sono gruppi primari per gli utenti" + +#, fuzzy +#~ msgid "primary groups" +#~ msgstr "Gruppo primario" + +#, fuzzy +#~ msgid "samba groups mappings" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "samba groups" +#~ msgstr "Gruppo Samba" + +#, fuzzy +#~ msgid "application settings" +#~ msgstr "applicazioni" + +#, fuzzy +#~ msgid "application groups" +#~ msgstr "Mostra gruppi di applicazioni" + +#, fuzzy +#~ msgid "mail settings" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "mail groups" +#~ msgstr "Mostra gruppi di posta" + +#~ msgid "Select to see normal groups that have only functional aspects" +#~ msgstr "Seleziona per mostrare i gruppi che hanno solo aspetti funzionali" + +#, fuzzy +#~ msgid "functional groups" +#~ msgstr "Mostra gruppi funzionali" + +#~ msgid "User name of which groups are shown" +#~ msgstr "Nome dell'utente del quale mostrare i gruppi" + +#, fuzzy +#~ msgid "Number of listed groups" +#~ msgstr "Nome del gruppo" + +#~ msgid "Descriptive text for this group" +#~ msgstr "Nome descrittivo del gruppo" + +#~ msgid "Select to create a samba conform group" +#~ msgstr "Seleziona per creare un gruppo conforme Samba" + +#~ msgid "in domain" +#~ msgstr "nel dominio" + +#~ msgid "Members are in a phone pickup group" +#~ msgstr "I membri sono in un gruppo di risposta telefonica" + +#, fuzzy +#~ msgid "Members are in a nagios group" +#~ msgstr "I membri sono in un gruppo di risposta telefonica" + +#~ msgid "Group members" +#~ msgstr "Membri del gruppo" + +#, fuzzy +#~ msgid "In all groups" +#~ msgstr "Gruppo primario" + +#, fuzzy +#~ msgid "Not in all groups" +#~ msgstr "Mostra gruppi di posta" + +#, fuzzy +#~ msgid "Locality" +#~ msgstr "Località" + +#, fuzzy +#~ msgid "Administrative settings" +#~ msgstr "Amministrazione" + +#, fuzzy +#~ msgid "Domain Component" +#~ msgstr "Amministratori di Dominio" + +#~ msgid "Departments" +#~ msgstr "Dipartimenti" + +#, fuzzy +#~ msgid "Department name" +#~ msgstr "Dipartimento" + +#~ msgid "State" +#~ msgstr "Stato" + +#~ msgid "Address" +#~ msgstr "Indirizzo" + +#~ msgid "List of departments" +#~ msgstr "Lista dei dipartimenti" + +#, fuzzy +#~ msgid "Country name" +#~ msgstr "Paese" + +#, fuzzy +#~ msgid "Name of organization" +#~ msgstr "Organizzazione" + +#, fuzzy +#~ msgid "Manage Departments" +#~ msgstr "Dipartimenti" + +#~ msgid "Country" +#~ msgstr "Paese" + +#, fuzzy +#~ msgid "Organization name" +#~ msgstr "Organizzazione" + +#~ msgid "Postal address" +#~ msgstr "CAP" + +#~ msgid "Phone number" +#~ msgstr "Numero di telefono" + +#~ msgid "Object groups" +#~ msgstr "Gruppi di oggetti" + +#, fuzzy +#~ msgid "Manage object groups" +#~ msgstr "Nome del gruppo" + +#, fuzzy +#~ msgid "Please enter the new object group name" +#~ msgstr "Inserisci la URI del server LDAP" + +#, fuzzy +#~ msgid "Phone queue" +#~ msgstr "Numero di telefono" + +#, fuzzy +#~ msgid "Systems" +#~ msgstr "Sistemi" + +#~ msgid "Terminals" +#~ msgstr "Terminali" + +#~ msgid "departments" +#~ msgstr "dipartimenti" + +#, fuzzy +#~ msgid "people" +#~ msgstr "Mostra persone" + +#~ msgid "groups" +#~ msgstr "gruppi" + +#~ msgid "servers" +#~ msgstr "server" + +#~ msgid "printers" +#~ msgstr "stampanti" + +#~ msgid "phones" +#~ msgstr "telefoni" + +#~ msgid "applications" +#~ msgstr "applicazioni" + +#~ msgid "users" +#~ msgstr "utenti" + +#, fuzzy +#~ msgid "winstations" +#~ msgstr "Amministrazione" + +#, fuzzy +#~ msgid "Object group generic" +#~ msgstr "Gruppo di oggetti" + +#, fuzzy +#~ msgid "Sytem trust" +#~ msgstr "Accesso ai sistemi" + +#, fuzzy +#~ msgid "Member" +#~ msgstr "Membri" + +#~ msgid "Name of the group" +#~ msgstr "Nome del gruppo" + +#~ msgid "Member objects" +#~ msgstr "Oggetti membri" + +#, fuzzy +#~ msgid "List of object groups" +#~ msgstr "Nome del gruppo" + +#, fuzzy +#~ msgid "user groups" +#~ msgstr "gruppi" + +#, fuzzy +#~ msgid "nested groups" +#~ msgstr "Gruppi di oggetti" + +#, fuzzy +#~ msgid "department groups" +#~ msgstr "dipartimenti" + +#, fuzzy +#~ msgid "server groups" +#~ msgstr "server" + +#, fuzzy +#~ msgid "workstation groups" +#~ msgstr "Mostra workstation" + +#, fuzzy +#~ msgid "windows workstation groups" +#~ msgstr "Mostra workstation" + +#, fuzzy +#~ msgid "terminal groups" +#~ msgstr "Mostra gruppi di posta" + +#, fuzzy +#~ msgid "printer groups" +#~ msgstr "Gruppo primario" + +#, fuzzy +#~ msgid "phone groups" +#~ msgstr "Mostra gruppi" + +#, fuzzy +#~ msgid "Number of listed object groups" +#~ msgstr "Nome del gruppo" + +#~ msgid "UNIX" +#~ msgstr "Unix" + +#~ msgid "FAX" +#~ msgstr "FAX" + +#~ msgid "FTP" +#~ msgstr "FTP" + +#~ msgid "Contents" +#~ msgstr "Contenuti" + +#~ msgid "This object has no relationship to other objects." +#~ msgstr "Questo oggetto non ha relazioni con altri oggetti." + +#~ msgid "Welcome %s!" +#~ msgstr "Benvenuto %s!" + +#, fuzzy +#~ msgid "" +#~ "This is the GOsa main menu. You can select your tasks from the menu on " +#~ "the left, or by choosing one of the pictograms below. All changes apply " +#~ "directly to your companies LDAP server." +#~ msgstr "" +#~ "Questa è la schermata principale di GOsa. Puoi selezionare le attività " +#~ "tramite il menù sulla sinitra o cliccando slle icone qui sotto. Tutti i " +#~ "cambiamenti sono applicati immediatamente al server LDAP." + +#~ msgid "" +#~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " +#~ "get back to the pictogram view." +#~ msgstr "" +#~ "Usa Termina la sessione in alto a sinistra per uscire e " +#~ "Principale per tornare alla schermata principale." + +#~ msgid "The GOsa team" +#~ msgstr "Il team di GOsa" + +#~ msgid "Select groups to add" +#~ msgstr "Seleziona un gruppo da aggiungere" + +#~ msgid "Display groups of department" +#~ msgstr "Mostra gruppi di dipartimenti" + +#~ msgid "Display groups matching" +#~ msgstr "Mosra gruppi corrispondenti a" + +#~ msgid "Display groups of user" +#~ msgstr "Mostra gruppi di utenti" + +#, fuzzy +#~ msgid "Edit users POSIX settings" +#~ msgstr "Impostazioni Unix" + +#, fuzzy +#~ msgid "expired" +#~ msgstr "Esporta" + +#, fuzzy +#~ msgid "password not changeable" +#~ msgstr "Nuova password" + +#, fuzzy +#~ msgid "password expired" +#~ msgstr "La password spira il" + +#~ msgid "unconfigured" +#~ msgstr "non configurata" + +#~ msgid "Password can't be changed up to %s days after last change" +#~ msgstr "" +#~ "La password non può essere cambiata per %s giorni dall'ultimo cambiamento" + +#~ msgid "Password must be changed after %s days" +#~ msgstr "La password deve essere cambiata dopo %s giorni" + +#, fuzzy +#~ msgid "Disable account after %s days of inactivity after password expiry" +#~ msgstr "" +#~ "Disabilita l'account dopo %s giorni di inattività dopo che la password è " +#~ "spirata" + +#, fuzzy +#~ msgid "Warn user %s days before password expiry" +#~ msgstr "Avvisa l'utente %s giorni prima che la password spiri" + +#~ msgid "Group of user" +#~ msgstr "Gruppo di utenti" + +#~ msgid "Home directory" +#~ msgstr "Home directory" + +#~ msgid "UID" +#~ msgstr "UID" + +#, fuzzy +#~ msgid "shadowMin" +#~ msgstr "Mostra terminali" + +#, fuzzy +#~ msgid "shadowWarning" +#~ msgstr "Mostra workstation" + +#, fuzzy +#~ msgid "shadowInactive" +#~ msgstr "Mostra stampanti" + +#, fuzzy +#~ msgid "POSIX account" +#~ msgstr "Estenzioni FTP" + +#, fuzzy +#~ msgid "Group ID" +#~ msgstr "Gruppo" + +#, fuzzy +#~ msgid "Force password change on login" +#~ msgstr "Cambia la password" + +#, fuzzy +#~ msgid "Shadow min" +#~ msgstr "Mostra terminali" + +#, fuzzy +#~ msgid "Shadow warning" +#~ msgstr "Mostra workstation" + +#, fuzzy +#~ msgid "Shadow inactive" +#~ msgstr "Mostra stampanti" + +#, fuzzy +#~ msgid "Shadow expire" +#~ msgstr "Mostra persone" + +#, fuzzy +#~ msgid "System trust model" +#~ msgstr "Accesso ai sistemi" + +#, fuzzy +#~ msgid "POSIX settings" +#~ msgstr "Impostazioni Unix" + +#~ msgid "User must change password on first login" +#~ msgstr "L'utente deve cambiare la password alla prima connessione" + +#~ msgid "Password expires on" +#~ msgstr "La password spira il" + +#, fuzzy +#~ msgid "Posix settings" +#~ msgstr "Impostazioni Unix" + +#~ msgid "Force UID/GID" +#~ msgstr "Forza UID/GID" + +#~ msgid "Group membership" +#~ msgstr "Gruppi di appartenenza" + +#~ msgid "(Warning: more than 16 groups are not supported by NFS!)" +#~ msgstr "(Attenzione: L'NFS non supporta più di 16 gruppi!)" + +#~ msgid "Primary group" +#~ msgstr "Gruppo primario" + +#~ msgid "Account" +#~ msgstr "Sicurezza" + +#~ msgid "" +#~ "To change your personal password use the fields below. The changes take " +#~ "effect immediately. Please memorize the new password, because you " +#~ "wouldn't be able to login without it." +#~ msgstr "" +#~ "Per cambiare la tua password usa i campi qui sotto. I cambiamenti avrenno " +#~ "effetto immediatamente. Memorizza la nuova password perché non sarai in " +#~ "grado di connetterti senza di essa." + +#~ msgid "Clear fields" +#~ msgstr "Ripulisci i campi" + +#, fuzzy +#~ msgid "Change user password" +#~ msgstr "Cambia la password" + +#~ msgid "You need to specify your current password in order to proceed." +#~ msgstr "Devi specificare la tua 'Password attuale' per procedere." + +#~ msgid "The password you've entered as 'New password' is empty." +#~ msgstr "La password immessa come 'Nuova password' è vuota" + +#, fuzzy +#~ msgid "External password changer reported a problem: %s." +#~ msgstr "Il programma esterno per cambiare la password ha avuto un problema:" + +#~ msgid "" +#~ "The password you've entered as your current password doesn't match the " +#~ "real one." +#~ msgstr "La password immessa come 'Password attuale' è errata" + +#, fuzzy +#~ msgid "You have no permission to change your password." +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "User password" +#~ msgstr "Nuova password" + +#~ msgid "" +#~ "You've successfully changed your password. Remember to change all " +#~ "programms configured to use it as well." +#~ msgstr "" +#~ "Hai cambiato con successo la tua password. Ricorda di cambiare tutto i " +#~ "programmmi configurati per usarla." + +#, fuzzy +#~ msgid "Password change not allowed" +#~ msgstr "Cambia la password" + +#, fuzzy +#~ msgid "You have no permission to change your password at this time" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "Personal picture" +#~ msgstr "Foto personale" + +#~ msgid "" +#~ "You have changed the method your password is stored in the ldap database. " +#~ "For that reason you've to enter your password at this point again. GOsa " +#~ "will then encode it with the selected method." +#~ msgstr "" +#~ "Hai modificato il metodo con cui la tua password è immagazzinata nel " +#~ "database LDAP. Per questo motivo devi inserire nuovamnete la tua password." + +#, fuzzy +#~ msgid "You have no permission to set your password!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "Generic user information" +#~ msgstr "Informazioni generali" + +#~ msgid "Certificates" +#~ msgstr "Certificati" + +#~ msgid "Standard certificate" +#~ msgstr "Certificato standard" + +#~ msgid "S/MIME certificate" +#~ msgstr "Certificato S/MIME" + +#~ msgid "PKCS12 certificate" +#~ msgstr "Certificato PKCS12" + +#~ msgid "Certificate serial number" +#~ msgstr "Numero seriale del certificato" + +#, fuzzy +#~ msgid "Edit organizational user settings" +#~ msgstr "Opzioni applicazione" + +#~ msgid "female" +#~ msgstr "femmina" + +#~ msgid "male" +#~ msgstr "maschio" + +#~ msgid "valid" +#~ msgstr "valido" + +#~ msgid "invalid" +#~ msgstr "invalido" + +#~ msgid "No certificate installed" +#~ msgstr "Non ci sono certificati installati" + +#~ msgid "Homepage" +#~ msgstr "Home Page" + +#~ msgid "Mobile" +#~ msgstr "Cellulare" + +#, fuzzy +#~ msgid "Cannot open certificate!" +#~ msgstr "Impossibile aprite il certificato selezionato!" + +#~ msgid "Unit" +#~ msgstr "Unità" + +#~ msgid "House identifier" +#~ msgstr "Identificativo della casa" + +#~ msgid "Last delivery" +#~ msgstr "Ultimo recapito" + +#~ msgid "Person locality" +#~ msgstr "Località personale" + +#~ msgid "Unit description" +#~ msgstr "Descrizoione unità" + +#~ msgid "Functional title" +#~ msgstr "Funzione" + +#~ msgid "Public visible" +#~ msgstr "Pubblico" + +#~ msgid "Street" +#~ msgstr "Strada" + +#~ msgid "Postal code" +#~ msgstr "CAP" + +#, fuzzy +#~ msgid "Generic user settings" +#~ msgstr "Impostazioni generali delle code" + +#~ msgid "Surname" +#~ msgstr "Cognome" + +#, fuzzy +#~ msgid "User identification" +#~ msgstr "Amministrazione utenti" + +#~ msgid "Personal title" +#~ msgstr "Titolo onorifico" + +#~ msgid "Academic title" +#~ msgstr "Titolo di studio" + +#~ msgid "Date of birth" +#~ msgstr "Data di nascita" + +#, fuzzy +#~ msgid "Gender" +#~ msgstr "Generale" + +#, fuzzy +#~ msgid "Preferred language" +#~ msgstr "Lingua preferita" + +#, fuzzy +#~ msgid "User picture" +#~ msgstr "Foto personale" + +#, fuzzy +#~ msgid "Department number" +#~ msgstr "Dipartimento" + +#, fuzzy +#~ msgid "Employee number" +#~ msgstr "Qualifica" + +#~ msgid "Employee type" +#~ msgstr "Qualifica" + +#, fuzzy +#~ msgid "Room number" +#~ msgstr "Numero di telefono" + +#, fuzzy +#~ msgid "Telefon number" +#~ msgstr "Numero di telefono" + +#, fuzzy +#~ msgid "Pager number" +#~ msgstr "Numero di telefono" + +#, fuzzy +#~ msgid "Mobile number" +#~ msgstr "Cellulare" + +#, fuzzy +#~ msgid "Fax number" +#~ msgstr "Numero di telefono" + +#, fuzzy +#~ msgid "Home phone number" +#~ msgstr "Numero di telefono" + +#, fuzzy +#~ msgid "User password method" +#~ msgstr "Algorimo password" + +#, fuzzy +#~ msgid "User certificates" +#~ msgstr "Certificato standard" + +#, fuzzy +#~ msgid "User settings" +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Clear password" +#~ msgstr "Nuova password" + +#, fuzzy +#~ msgid "Set new password" +#~ msgstr "Cambia password" + +#~ msgid "Personal information" +#~ msgstr "Informazioni personali" + +#~ msgid "Preferred langage" +#~ msgstr "Lingua preferita" + +#~ msgid "Password storage" +#~ msgstr "Algorimo password" + +#~ msgid "Edit certificates" +#~ msgstr "Modifica certificati" + +#~ msgid "Organizational information" +#~ msgstr "Informazioni organizzazione" + +#~ msgid "Department No." +#~ msgstr "Dipartimento No." + +#~ msgid "Employee No." +#~ msgstr "Matricola" + +#~ msgid "Room No." +#~ msgstr "Stanza No." + +#~ msgid "Change picture" +#~ msgstr "Cambia foto" + +#, fuzzy +#~ msgid "Template name" +#~ msgstr "Template" + +#~ msgid "Sex" +#~ msgstr "Sesso" + +#~ msgid "Please use the phone tab" +#~ msgstr "Usa il tab del telefono" + +#, fuzzy +#~ msgid "Start import" +#~ msgstr "Avvio" + +#, fuzzy +#~ msgid "Printer service enabled" +#~ msgstr "Nome della stampante" diff --git a/trunk/gosa-plugins/goto/locale/messages.po b/trunk/gosa-plugins/goto/locale/messages.po new file mode 100644 index 000000000..f39445b99 --- /dev/null +++ b/trunk/gosa-plugins/goto/locale/messages.po @@ -0,0 +1,3776 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:31+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/ogroups/goto/termgroup.tpl:2 admin/devices/remove.tpl:2 +#: admin/applications/remove.tpl:2 admin/mimetypes/remove.tpl:2 +#: admin/systems/ppd/remove_ppd.tpl:2 addons/goto/remove.tpl:2 +#: personal/environment/class_environment.inc:139 +#: personal/environment/class_environment.inc:307 +#: personal/environment/class_environment.inc:360 +#: personal/environment/class_environment.inc:364 +msgid "Warning" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:2 +msgid "" +"Actions you choose here influence all systems in this object group. " +"Additionally, all values editable here can be inherited by the clients " +"assigned to this object group." +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:6 +#: admin/devices/class_deviceGeneric.inc:251 +#: admin/applications/class_applicationGeneric.inc:597 +#: admin/mimetypes/generic.tpl:4 admin/mimetypes/paste_generic.tpl:4 +#: admin/mimetypes/class_mimetypeGeneric.inc:715 +#: admin/systems/goto/class_printGeneric.inc:920 +#: admin/systems/goto/class_workstationGeneric.inc:698 +msgid "Generic" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:14 +#: admin/ogroups/goto/class_termgroup.inc:145 +#: admin/systems/goto/workstation.tpl:95 +#: admin/systems/goto/class_workstationGeneric.inc:489 +#: admin/systems/goto/class_terminalGeneric.inc:480 +#: admin/systems/goto/terminal.tpl:117 +msgid "NTP server" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:17 admin/systems/goto/workstation.tpl:98 +#: admin/systems/goto/terminal.tpl:120 +msgid "Choose server to use for synchronizing time" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:47 +#: admin/ogroups/goto/class_termgroup.inc:378 +#: admin/systems/goto/workstation.tpl:55 +#: admin/systems/goto/class_terminalGeneric.inc:669 +#: admin/systems/goto/terminal.tpl:47 +msgid "Mode" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:50 admin/systems/goto/workstation.tpl:58 +#: admin/systems/goto/terminal.tpl:50 +msgid "Select terminal mode" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:58 +#: admin/ogroups/goto/class_termgroup.inc:379 +#: admin/systems/services/syslog/class_goSyslogServer.inc:27 +#: admin/systems/services/syslog/class_goSyslogServer.inc:47 +#: admin/systems/goto/workstation.tpl:65 +#: admin/systems/goto/class_workstationGeneric.inc:712 +#: admin/systems/goto/terminal.tpl:57 +msgid "Syslog server" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:61 admin/systems/goto/workstation.tpl:68 +#: admin/systems/goto/terminal.tpl:60 +msgid "Choose server to use for logging" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:69 +#: admin/ogroups/goto/class_termgroup.inc:382 +#: admin/systems/goto/class_terminalGeneric.inc:672 +#: admin/systems/goto/terminal.tpl:76 +msgid "Root server" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:72 admin/systems/goto/terminal.tpl:79 +msgid "Select NFS root filesystem to use" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:79 +#: admin/ogroups/goto/class_termgroup.inc:383 +#: admin/systems/goto/class_terminalGeneric.inc:673 +#: admin/systems/goto/terminal.tpl:86 +msgid "Swap server" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:82 admin/systems/goto/terminal.tpl:89 +msgid "Choose NFS filesystem to place swap files on" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:110 admin/systems/goto/workstation.tpl:130 +#: admin/systems/goto/terminal.tpl:156 addons/goto/class_gotomasses.inc:415 +msgid "Action" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:115 admin/systems/goto/workstation.tpl:137 +#: admin/systems/goto/terminal.tpl:161 +msgid "Select action to execute for this terminal" +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:123 admin/applications/generic.tpl:24 +#: admin/applications/class_applicationGeneric.inc:438 +#: admin/applications/class_applicationGeneric.inc:609 +#: admin/systems/goto/workstation.tpl:146 +#: admin/systems/goto/workstation.tpl:150 admin/systems/goto/terminal.tpl:169 +#: addons/goto/class_gotomasses.inc:383 +msgid "Execute" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:48 +#: admin/systems/goto/class_workstationGeneric.inc:138 +#: admin/systems/goto/class_terminalGeneric.inc:122 +msgid "Activated" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:49 +#: admin/systems/goto/class_workstationGeneric.inc:139 +#: admin/systems/goto/class_terminalGeneric.inc:121 +#: addons/goto/class_gotomasses.inc:538 +msgid "Locked" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:95 +#: admin/systems/goto/class_terminalGeneric.inc:281 +msgid "Local swap" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:101 +#: admin/ogroups/goto/class_termgroup.inc:113 +#: admin/systems/goto/class_terminalStartup.inc:116 +#: admin/systems/goto/class_terminalStartup.inc:120 +#: admin/systems/goto/class_terminalService.inc:175 +#: admin/systems/goto/class_terminalService.inc:256 +#: admin/systems/goto/class_terminalService.inc:264 +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_terminalService.inc:270 +#: admin/systems/goto/class_terminalService.inc:273 +#: admin/systems/goto/class_terminalService.inc:276 +#: admin/systems/goto/class_terminalService.inc:279 +#: admin/systems/goto/class_terminalService.inc:282 +#: admin/systems/goto/class_workstationGeneric.inc:154 +#: admin/systems/goto/class_workstationStartup.inc:180 +#: admin/systems/goto/class_workstationStartup.inc:210 +#: admin/systems/goto/class_workstationService.inc:191 +#: admin/systems/goto/class_workstationService.inc:194 +#: admin/systems/goto/class_workstationService.inc:197 +#: admin/systems/goto/class_workstationService.inc:200 +#: admin/systems/goto/class_workstationService.inc:203 +#: admin/systems/goto/class_workstationService.inc:206 +#: admin/systems/goto/class_workstationService.inc:209 +#: admin/systems/goto/class_workstationService.inc:220 +#: admin/systems/goto/class_workstationService.inc:221 +#: admin/systems/goto/class_workstationService.inc:222 +#: admin/systems/goto/class_workstationService.inc:223 +#: admin/systems/goto/class_workstationService.inc:224 +#: admin/systems/goto/class_workstationService.inc:225 +#: admin/systems/goto/class_workstationService.inc:226 +#: admin/systems/goto/class_terminalGeneric.inc:137 +#: admin/systems/goto/class_terminalGeneric.inc:287 +#: admin/systems/goto/class_terminalGeneric.inc:299 +msgid "inherited" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:203 +#: admin/systems/goto/class_terminalService.inc:666 +#: admin/systems/goto/class_workstationGeneric.inc:212 +#: admin/systems/goto/class_workstationGeneric.inc:635 +#: admin/systems/goto/class_workstationStartup.inc:926 +#: admin/systems/goto/class_workstationStartup.inc:1053 +#: admin/systems/goto/class_workstationStartup.inc:1113 +#: admin/systems/goto/class_workstationService.inc:554 +#: admin/systems/goto/class_terminalGeneric.inc:187 +#: admin/systems/goto/class_terminalGeneric.inc:594 +#: addons/goto/class_gotomasses.inc:328 +#: addons/goto/class_goto_import_file.inc:124 +msgid "Service infrastructure" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:207 +#: admin/systems/goto/class_workstationGeneric.inc:216 +#: admin/systems/goto/class_terminalGeneric.inc:191 +msgid "Event error" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:208 +#: admin/systems/goto/class_workstationGeneric.inc:217 +#: admin/systems/goto/class_terminalGeneric.inc:192 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:265 +#: addons/goto/events/class_DaemonEvent_halt.inc:31 +#: addons/goto/events/class_DaemonEvent_halt.inc:32 +msgid "Switch off" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:266 +#: addons/goto/events/class_DaemonEvent_reboot.inc:29 +#: addons/goto/events/class_DaemonEvent_reboot.inc:30 +msgid "Reboot" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:258 +msgid "Instant update" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:259 +msgid "Scheduled update" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:260 +msgid "Wake" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:261 +#: admin/systems/goto/class_workstationGeneric.inc:300 +#: admin/systems/goto/class_workstationGeneric.inc:308 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:32 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:33 +msgid "Reinstall" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:262 +#: admin/systems/goto/class_workstationGeneric.inc:301 +#: addons/goto/events/class_DaemonEvent_rescan.inc:28 +#: addons/goto/events/class_DaemonEvent_rescan.inc:29 +msgid "Rescan hardware" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:263 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:28 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:29 +msgid "Memory test" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:264 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:28 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:29 +msgid "System analysis" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:362 +#: admin/groups/apps/class_groupApplication.inc:649 +#: admin/groups/apps/class_groupApplication.inc:1330 +#: admin/groups/apps/class_groupApplication.inc:1344 +#: admin/groups/apps/class_groupApplication.inc:1358 +#: admin/devices/class_deviceGeneric.inc:196 +#: admin/applications/class_applicationParameters.inc:161 +#: admin/applications/class_applicationParameters.inc:224 +#: admin/applications/class_applicationGeneric.inc:271 +#: admin/applications/class_applicationGeneric.inc:285 +#: admin/applications/class_applicationGeneric.inc:515 +#: admin/mimetypes/class_mimetypeGeneric.inc:494 +#: admin/mimetypes/class_mimetypeGeneric.inc:506 +#: admin/mimetypes/class_mimetypeGeneric.inc:521 +#: admin/systems/services/kiosk/class_goKioskService.inc:249 +#: admin/systems/services/ldap/class_goLdapServer.inc:117 +#: admin/systems/services/ntp/class_goNtpServer.inc:98 +#: admin/systems/services/terminal/class_goTerminalServer.inc:103 +#: admin/systems/services/shares/class_goShareServer.inc:192 +#: admin/systems/services/shares/class_goShareServer.inc:261 +#: admin/systems/services/shares/class_goShareServer.inc:277 +#: admin/systems/services/shares/class_goShareServer.inc:290 +#: admin/systems/goto/class_printGeneric.inc:601 +#: admin/systems/goto/class_printGeneric.inc:885 +#: admin/systems/goto/class_terminalStartup.inc:455 +#: admin/systems/goto/class_ArpNewDevice.inc:69 +#: admin/systems/goto/class_terminalService.inc:590 +#: admin/systems/goto/class_workstationGeneric.inc:364 +#: admin/systems/goto/class_workstationGeneric.inc:596 +#: admin/systems/goto/class_workstationGeneric.inc:613 +#: admin/systems/goto/class_workstationStartup.inc:877 +#: admin/systems/goto/class_workstationService.inc:447 +#: admin/systems/goto/class_terminalGeneric.inc:353 +#: admin/systems/goto/class_terminalGeneric.inc:580 +#: personal/environment/class_environment.inc:1058 +#: personal/environment/class_environment.inc:1315 +msgid "LDAP error" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:370 +msgid "System" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:371 +msgid "System group" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:380 +#: admin/systems/goto/class_workstationGeneric.inc:716 +#: admin/systems/goto/class_terminalGeneric.inc:678 +msgid "Action flag" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:381 +#: admin/systems/goto/class_workstationGeneric.inc:713 +msgid "Ntp server" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:8 +msgid "Folder image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:12 +msgid "Could not load image." +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:14 +#: admin/systems/goto/class_gotoLpdEnabled.inc:58 +msgid "None" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:24 +msgid "Upload image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:28 admin/applications/generic.tpl:142 +#: admin/systems/ppd/printerPPDDialog.tpl:21 +#: addons/goto/goto_import_file.tpl:25 +msgid "Upload" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:32 +msgid "Reset image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:33 +msgid "Reset" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:40 +#: admin/applications/class_applicationGeneric.inc:557 +msgid "Application settings" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:43 +#: admin/devices/class_deviceGeneric.inc:90 +#: admin/devices/class_deviceGeneric.inc:114 +#: admin/devices/class_deviceGeneric.inc:260 +#: admin/applications/class_applicationParameters.inc:193 +#: admin/applications/class_applicationGeneric.inc:430 +#: admin/applications/class_applicationGeneric.inc:434 +#: admin/applications/class_applicationGeneric.inc:606 +#: admin/applications/class_applicationGeneric.inc:610 +#: admin/mimetypes/class_mimetypeGeneric.inc:532 +#: admin/mimetypes/class_mimetypeGeneric.inc:724 +#: admin/systems/services/shares/class_goShareServer.inc:398 +#: admin/systems/services/nfs/class_servNfs.inc:199 +#: admin/systems/services/nfs/class_servNfs.inc:202 +#: admin/systems/services/nfs/class_servNfs.inc:235 +#: admin/systems/services/nfs/servnfs.tpl:9 +#: admin/systems/goto/class_printGeneric.inc:670 +#: admin/systems/goto/class_printGeneric.inc:675 +#: admin/systems/goto/class_printGeneric.inc:694 +#: admin/systems/goto/class_printGeneric.inc:929 +#: admin/systems/goto/class_ArpNewDevice.inc:46 +#: admin/systems/goto/class_workstationGeneric.inc:456 +#: admin/systems/goto/class_workstationGeneric.inc:461 +#: admin/systems/goto/class_workstationGeneric.inc:479 +#: admin/systems/goto/class_terminalGeneric.inc:446 +#: admin/systems/goto/class_terminalGeneric.inc:451 +#: admin/systems/goto/class_terminalGeneric.inc:470 +#: admin/systems/goto/class_terminalGeneric.inc:665 +#: personal/environment/class_logonManagementDialog.inc:103 +msgid "Name" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:53 +msgid "Application options" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:381 +#: admin/groups/apps/class_groupApplication.inc:385 +msgid "Menu" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:439 +msgid "Back" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:450 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:147 +msgid "back" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:458 +msgid "department" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:481 +#: admin/applications/class_applicationManagement.inc:368 +#: admin/applications/class_applicationManagement.inc:449 +#: admin/applications/class_applicationGeneric.inc:127 +msgid "application" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1146 +msgid "Not available in release." +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1373 +#: admin/applications/class_applicationManagement.inc:24 +#: admin/mimetypes/generic.tpl:117 admin/mimetypes/generic.tpl:177 +msgid "Applications" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1374 +msgid "Group applications" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1381 +#: admin/applications/class_divListApplication.inc:114 +#: admin/applications/class_divListApplication.inc:150 +#: admin/applications/class_applicationGeneric.inc:603 +#: admin/mimetypes/class_mimetypeGeneric.inc:728 +msgid "Application" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1382 +#: admin/groups/apps/app_list.tpl:5 admin/groups/apps/app_list.tpl:53 +#: admin/systems/goto/workstationStartup.tpl:83 +#: admin/systems/goto/workstationStartup.tpl:123 +msgid "Release" +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1383 +msgid "Application parameter" +msgstr "" + +#: admin/groups/apps/app_list.tpl:11 +msgid "Copy menu" +msgstr "" + +#: admin/groups/apps/app_list.tpl:13 +msgid "Paste menu from" +msgstr "" + +#: admin/groups/apps/app_list.tpl:17 +msgid "Delete menu" +msgstr "" + +#: admin/groups/apps/app_list.tpl:70 admin/groups/apps/app_list.tpl:74 +msgid "Folder" +msgstr "" + +#: admin/groups/apps/app_list.tpl:82 admin/groups/apps/app_list.tpl:103 +#: admin/groups/apps/app_list.tpl:128 addons/goto/class_gotomasses.inc:432 +msgid "Move up" +msgstr "" + +#: admin/groups/apps/app_list.tpl:84 admin/groups/apps/app_list.tpl:105 +#: admin/groups/apps/app_list.tpl:130 addons/goto/class_gotomasses.inc:434 +msgid "Move down" +msgstr "" + +#: admin/groups/apps/app_list.tpl:86 admin/groups/apps/app_list.tpl:107 +#: admin/groups/apps/app_list.tpl:132 +#: admin/devices/class_divListDevices.inc:100 +#: admin/applications/class_applicationParameters.inc:125 +#: admin/applications/class_divListApplication.inc:120 +#: admin/mimetypes/class_divListMimeTypes.inc:122 +#: admin/systems/goto/terminalService.tpl:212 +#: admin/systems/goto/terminalStartup.tpl:115 +#: admin/systems/goto/workstationStartup.tpl:233 +#: admin/systems/goto/printer.tpl:71 addons/goto/class_gotomasses.inc:269 +#: addons/goto/class_gotomasses.inc:376 addons/goto/class_gotomasses.inc:484 +#: addons/goto/class_gotomasses.inc:488 +#: addons/goto/events/class_DaemonEvent.inc:230 +#: personal/environment/environment.tpl:238 +msgid "Remove" +msgstr "" + +#: admin/groups/apps/app_list.tpl:88 admin/groups/apps/app_list.tpl:134 +#: admin/systems/services/shares/goShareServer.tpl:17 +#: admin/systems/goto/printer.tpl:68 addons/goto/class_gotomasses.inc:469 +#: personal/environment/environment.tpl:274 +msgid "Edit" +msgstr "" + +#: admin/groups/apps/app_list.tpl:121 +msgid "Entry" +msgstr "" + +#: admin/groups/apps/app_list.tpl:143 +msgid "add to" +msgstr "" + +#: admin/groups/apps/app_list.tpl:149 admin/groups/apps/app_list.tpl:159 +msgid "Add selected applications to this folder." +msgstr "" + +#: admin/groups/apps/app_list.tpl:150 +msgid "Separator" +msgstr "" + +#: admin/groups/apps/app_list.tpl:150 +msgid "Add a separator to this folder." +msgstr "" + +#: admin/devices/class_divListDevices.inc:33 +#: admin/devices/class_divListDevices.inc:34 +msgid "List of defined devices" +msgstr "" + +#: admin/devices/class_divListDevices.inc:45 +#: admin/applications/class_divListApplication.inc:45 +#: admin/mimetypes/class_divListMimeTypes.inc:45 +msgid "Select all" +msgstr "" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/devices/deviceGeneric.tpl:20 admin/devices/paste_deviceGeneric.tpl:9 +msgid "Device name" +msgstr "" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/applications/class_divListApplication.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +msgid "Department" +msgstr "" + +#: admin/devices/class_divListDevices.inc:52 +#: admin/devices/class_divListDevices.inc:87 +#: admin/applications/class_divListApplication.inc:52 +#: admin/applications/class_divListApplication.inc:107 +#: admin/mimetypes/class_divListMimeTypes.inc:52 +#: admin/mimetypes/class_divListMimeTypes.inc:109 +#: addons/goto/class_gotomasses.inc:365 +msgid "Actions" +msgstr "" + +#: admin/devices/class_divListDevices.inc:58 +msgid "Display devices matching" +msgstr "" + +#: admin/devices/class_divListDevices.inc:82 admin/devices/deviceGeneric.tpl:9 +#: admin/devices/class_deviceGeneric.inc:261 admin/applications/generic.tpl:42 +#: admin/applications/class_divListApplication.inc:90 +#: admin/applications/class_applicationGeneric.inc:607 +#: admin/mimetypes/generic.tpl:44 +#: admin/mimetypes/class_divListMimeTypes.inc:93 +#: admin/mimetypes/class_mimetypeGeneric.inc:727 +#: admin/systems/services/ldap/class_goLdapServer.inc:79 +#: admin/systems/services/ldap/class_goLdapServer.inc:82 +#: admin/systems/goto/workstation.tpl:35 +#: admin/systems/goto/class_printGeneric.inc:930 +#: admin/systems/goto/class_workstationGeneric.inc:710 +#: admin/systems/goto/class_terminalGeneric.inc:667 +#: admin/systems/goto/printer.tpl:27 admin/systems/goto/terminal.tpl:27 +#: addons/goto/class_target_list.inc:152 addons/goto/goto_import_file.tpl:41 +#: addons/goto/events/class_EventTargetAddList.inc:161 +#: addons/goto/events/class_EventTargetAddUsersList.inc:130 +msgid "Base" +msgstr "" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit department" +msgstr "" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit" +msgstr "" + +#: admin/devices/class_divListDevices.inc:92 +#: admin/applications/class_divListApplication.inc:111 +#: admin/mimetypes/class_divListMimeTypes.inc:114 +#: admin/systems/goto/chooser.tpl:16 addons/goto/class_gotomasses.inc:366 +msgid "Create" +msgstr "" + +#: admin/devices/class_divListDevices.inc:94 +#: admin/devices/class_divListDevices.inc:131 +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/systems/goto/gotoLpdEnable.tpl:27 +#: admin/systems/goto/gotoLpdEnable.tpl:63 +msgid "Device" +msgstr "" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "edit" +msgstr "" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "Edit this entry" +msgstr "" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:136 +msgid "delete" +msgstr "" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +msgid "Delete this entry" +msgstr "" + +#: admin/devices/class_divListDevices.inc:205 +msgid "Number of listed devices" +msgstr "" + +#: admin/devices/class_divListDevices.inc:206 +#: admin/applications/class_divListApplication.inc:243 +#: admin/mimetypes/class_divListMimeTypes.inc:244 +msgid "Number of listed departments" +msgstr "" + +#: admin/devices/remove.tpl:6 +msgid "" +"This may be used by several users/groups. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/devices/remove.tpl:9 admin/applications/remove.tpl:9 +#: admin/mimetypes/remove.tpl:9 addons/goto/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/devices/deviceGeneric.tpl:2 admin/devices/paste_deviceGeneric.tpl:2 +#: admin/devices/class_deviceGeneric.inc:257 +msgid "Devices" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:29 admin/devices/class_deviceGeneric.inc:93 +#: admin/devices/class_deviceGeneric.inc:262 admin/applications/generic.tpl:33 +#: admin/applications/class_applicationGeneric.inc:608 +#: admin/mimetypes/generic.tpl:34 admin/mimetypes/paste_generic.tpl:21 +#: admin/mimetypes/class_mimetypeGeneric.inc:726 +#: admin/systems/services/shares/class_goShareServer.inc:400 +#: admin/systems/services/nfs/class_servNfs.inc:207 +#: admin/systems/services/nfs/servnfs.tpl:19 +#: admin/systems/goto/workstation.tpl:19 +#: admin/systems/goto/ArpNewDevice.tpl:17 +#: admin/systems/goto/class_printGeneric.inc:931 +#: admin/systems/goto/class_workstationGeneric.inc:708 +#: admin/systems/goto/class_terminalGeneric.inc:666 +#: admin/systems/goto/printer.tpl:16 admin/systems/goto/terminal.tpl:19 +#: addons/goto/class_gotomasses.inc:917 +#: personal/environment/class_logonManagementDialog.inc:111 +#: personal/environment/logonManagement.tpl:17 +msgid "Description" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:38 +msgid "Device type" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:42 +msgid "Choose the device type" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "Serial number" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "(iSerial)" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "Vendor-ID" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "(idVendor)" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "Product-ID" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "(idProduct)" +msgstr "" + +#: admin/devices/main.inc:49 admin/devices/main.inc:51 +msgid "Hotplug device management" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:29 +msgid "Digital camera" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:30 +msgid "USB stick" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:31 +msgid "CD/DVD drive" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:98 +#: admin/devices/class_deviceGeneric.inc:100 +msgid "iSerial" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:103 +#: admin/devices/class_deviceGeneric.inc:264 +#: admin/systems/goto/class_gotoLpdEnabled.inc:51 +msgid "Serial" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:106 +msgid "Vendor ID" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/applications/class_applicationGeneric.inc:264 +#: admin/applications/class_applicationGeneric.inc:338 +#: admin/applications/class_applicationGeneric.inc:370 +#: admin/applications/class_applicationGeneric.inc:375 +#: admin/applications/class_applicationGeneric.inc:380 +#: admin/applications/class_applicationGeneric.inc:384 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: admin/systems/services/kiosk/class_goKioskService.inc:161 +#: admin/systems/services/kiosk/class_goKioskService.inc:164 +#: admin/systems/services/kiosk/class_goKioskService.inc:234 +#: admin/systems/services/shares/class_goShareServer.inc:98 +#: admin/systems/services/shares/class_goShareServer.inc:233 +#: admin/systems/services/nfs/class_servNfs.inc:43 +#: admin/systems/services/nfs/class_servNfs.inc:46 +#: admin/systems/goto/class_printGeneric.inc:435 +#: admin/systems/goto/class_printGeneric.inc:482 +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#: admin/systems/goto/class_printGeneric.inc:1008 +#: admin/systems/goto/class_printGeneric.inc:1019 +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:234 +#: admin/systems/goto/class_workstationStartup.inc:247 +#: admin/systems/goto/class_workstationStartup.inc:324 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#: addons/goto/class_gotoLogView.inc:57 addons/goto/class_gotoLogView.inc:175 +#: addons/goto/class_gotomasses.inc:174 addons/goto/class_gotomasses.inc:524 +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:691 +#: addons/goto/class_gotomasses.inc:735 addons/goto/class_gotomasses.inc:739 +#: addons/goto/class_gotomasses.inc:775 addons/goto/class_gotomasses.inc:816 +#: personal/environment/class_environment.inc:591 +#: personal/environment/class_environment.inc:673 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#: personal/environment/class_environment.inc:841 +#: personal/environment/class_environment.inc:892 +#: personal/environment/class_environment.inc:988 +msgid "Error" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:252 +msgid "Device generic" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:252 +msgid "Hotplug" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:263 +#: admin/systems/services/shares/class_goShareServer.inc:401 +#: admin/systems/services/nfs/class_servNfs.inc:193 +#: admin/systems/services/nfs/servnfs.tpl:56 +#: admin/systems/goto/terminalService.tpl:48 +#: admin/systems/goto/terminalService.tpl:138 +#: admin/systems/goto/workstationService.tpl:54 +#: admin/systems/goto/workstationService.tpl:156 +#: admin/systems/goto/gotoLpdEnable.tpl:53 +msgid "Type" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:265 +msgid "Vendor" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:266 +msgid "Device ID" +msgstr "" + +#: admin/devices/class_deviceManagement.inc:7 +#: personal/environment/class_environment.inc:1783 +#: personal/environment/environment.tpl:293 +msgid "Hotplug devices" +msgstr "" + +#: admin/devices/class_deviceManagement.inc:8 +msgid "Manage hotplug devices" +msgstr "" + +#: admin/devices/class_deviceManagement.inc:246 +#: admin/applications/class_applicationManagement.inc:352 +#: admin/mimetypes/class_mimetypeManagement.inc:360 +#: addons/goto/class_gotomasses.inc:230 +msgid "Permission" +msgstr "" + +#: admin/devices/class_deviceManagement.inc:263 +#: admin/devices/class_deviceManagement.inc:345 +msgid "device" +msgstr "" + +#: admin/devices/class_deviceManagement.inc:296 +#: admin/devices/class_deviceManagement.inc:352 +#: admin/devices/class_deviceManagement.inc:381 +#: admin/applications/class_applicationManagement.inc:401 +#: admin/applications/class_applicationManagement.inc:456 +#: admin/applications/class_applicationManagement.inc:487 +#: admin/mimetypes/class_mimetypeManagement.inc:412 +#: admin/mimetypes/class_mimetypeManagement.inc:466 +#: admin/mimetypes/class_mimetypeManagement.inc:496 +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#: personal/environment/class_environment.inc:583 +msgid "Permission error" +msgstr "" + +#: admin/applications/remove.tpl:6 admin/mimetypes/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/applications/release_select.tpl:2 +#: admin/mimetypes/release_select.tpl:2 +msgid "Branches" +msgstr "" + +#: admin/applications/release_select.tpl:8 +#: admin/mimetypes/release_select.tpl:8 +msgid "Current release" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:53 +msgid "Remove options" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:53 +#: admin/applications/class_applicationParameters.inc:55 +msgid "parameter" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:55 +msgid "Create options" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Variable" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Default value" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:131 +msgid "Add option" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:236 +msgid "Parameter" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:237 +msgid "Parameter configuration" +msgstr "" + +#: admin/applications/class_applicationParameters.inc:245 +msgid "Application parameter settings" +msgstr "" + +#: admin/applications/generic.tpl:7 admin/applications/generic.tpl:10 +#: admin/applications/class_divListApplication.inc:51 +#: admin/applications/class_applicationGeneric.inc:561 +msgid "Application name" +msgstr "" + +#: admin/applications/generic.tpl:15 +msgid "Display name" +msgstr "" + +#: admin/applications/generic.tpl:19 +#: admin/applications/class_applicationGeneric.inc:566 +msgid "Application name to be displayed (i.e. below icons)" +msgstr "" + +#: admin/applications/generic.tpl:28 +msgid "Path and/or binary name of application" +msgstr "" + +#: admin/applications/generic.tpl:45 admin/mimetypes/generic.tpl:47 +msgid "Choose subtree to place application in" +msgstr "" + +#: admin/applications/generic.tpl:52 admin/mimetypes/generic.tpl:53 +#: admin/systems/goto/workstation.tpl:43 admin/systems/goto/printer.tpl:35 +#: admin/systems/goto/terminal.tpl:36 +msgid "Select a base" +msgstr "" + +#: admin/applications/generic.tpl:66 +#: admin/applications/class_applicationGeneric.inc:611 +#: admin/mimetypes/generic.tpl:67 +#: admin/mimetypes/class_mimetypeGeneric.inc:730 +msgid "Icon" +msgstr "" + +#: admin/applications/generic.tpl:82 admin/mimetypes/generic.tpl:84 +msgid "Update" +msgstr "" + +#: admin/applications/generic.tpl:82 +msgid "Reload picture from LDAP" +msgstr "" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture" +msgstr "" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture from LDAP" +msgstr "" + +#: admin/applications/generic.tpl:96 +#: admin/systems/goto/class_gotoLpdEnabled.inc:156 +#: admin/systems/goto/gotoLpdEnable.tpl:79 +#: admin/systems/ppd/printerPPDDialog.tpl:28 +msgid "Options" +msgstr "" + +#: admin/applications/generic.tpl:103 +#: admin/applications/class_applicationGeneric.inc:614 +msgid "Only executable for members" +msgstr "" + +#: admin/applications/generic.tpl:108 +#: admin/applications/class_applicationGeneric.inc:618 +msgid "Replace user configuration on startup" +msgstr "" + +#: admin/applications/generic.tpl:114 +#: admin/applications/class_applicationGeneric.inc:615 +msgid "Place icon on members desktop" +msgstr "" + +#: admin/applications/generic.tpl:119 +#: admin/applications/class_applicationGeneric.inc:617 +msgid "Place entry in members startmenu" +msgstr "" + +#: admin/applications/generic.tpl:124 +#: admin/applications/class_applicationGeneric.inc:616 +msgid "Place entry in members launch bar" +msgstr "" + +#: admin/applications/generic.tpl:134 +#: personal/environment/logonManagement.tpl:55 +msgid "Script" +msgstr "" + +#: admin/applications/generic.tpl:139 addons/goto/goto_import_file.tpl:84 +#: addons/goto/class_gotomasses.inc:375 +#: addons/goto/class_goto_import_file.inc:29 +#: addons/goto/class_goto_import_file.inc:89 +#: addons/goto/class_goto_import_file.inc:131 +#: personal/environment/logonManagement.tpl:65 +msgid "Import" +msgstr "" + +#: admin/applications/generic.tpl:144 +msgid "Download" +msgstr "" + +#: admin/applications/class_applicationManagement.inc:25 +#: personal/environment/class_environment.inc:10 +msgid "This does something" +msgstr "" + +#: admin/applications/class_divListApplication.inc:25 +msgid "List of Applications" +msgstr "" + +#: admin/applications/class_divListApplication.inc:26 +msgid "This table displays all applications in the selected tree." +msgstr "" + +#: admin/applications/class_divListApplication.inc:58 +#: personal/environment/hotplugDialog.tpl:43 +msgid "Display users matching" +msgstr "" + +#: admin/applications/class_divListApplication.inc:199 +#: admin/mimetypes/class_divListMimeTypes.inc:198 +msgid "Freezed" +msgstr "" + +#: admin/applications/class_divListApplication.inc:242 +msgid "Number of listed applications" +msgstr "" + +#: admin/applications/main.inc:48 admin/applications/main.inc:50 +msgid "Application management" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:95 +msgid "no example" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:264 +#, php-format +msgid "Cannot remove application - it is still in use by these objects: %s" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:370 +msgid "no read permission" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:375 +msgid "cannot resize image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:380 +msgid "cannot convert image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:384 +#, php-format +msgid "cannot save image to '%s'" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:413 +msgid "Execute path" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:598 +msgid "Application generic" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:612 +msgid "Script content" +msgstr "" + +#: admin/mimetypes/class_mimetypeManagement.inc:24 +#: admin/mimetypes/class_mimetypeGeneric.inc:721 +msgid "Mime types" +msgstr "" + +#: admin/mimetypes/class_mimetypeManagement.inc:25 +msgid "Manage mime types" +msgstr "" + +#: admin/mimetypes/class_mimetypeManagement.inc:378 +#: admin/mimetypes/class_mimetypeManagement.inc:459 +#: admin/mimetypes/generic.tpl:12 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:116 +#: admin/mimetypes/class_divListMimeTypes.inc:152 +#: admin/mimetypes/paste_generic.tpl:13 +msgid "Mime type" +msgstr "" + +#: admin/mimetypes/generic.tpl:16 admin/mimetypes/paste_generic.tpl:16 +msgid "Please enter a name for the mime type here" +msgstr "" + +#: admin/mimetypes/generic.tpl:22 +#: admin/mimetypes/class_mimetypeGeneric.inc:725 +msgid "Mime group" +msgstr "" + +#: admin/mimetypes/generic.tpl:26 +msgid "Categorize this mime type" +msgstr "" + +#: admin/mimetypes/generic.tpl:38 +msgid "Please specify a description" +msgstr "" + +#: admin/mimetypes/generic.tpl:69 admin/mimetypes/generic.tpl:72 +msgid "Mime icon" +msgstr "" + +#: admin/mimetypes/generic.tpl:85 +msgid "Update mime type icon" +msgstr "" + +#: admin/mimetypes/generic.tpl:99 +msgid "Left click" +msgstr "" + +#: admin/mimetypes/generic.tpl:104 +#: admin/mimetypes/class_mimetypeGeneric.inc:731 +msgid "File patterns" +msgstr "" + +#: admin/mimetypes/generic.tpl:110 +msgid "Please specify a new file pattern" +msgstr "" + +#: admin/mimetypes/generic.tpl:113 +msgid "Add a new file pattern" +msgstr "" + +#: admin/mimetypes/generic.tpl:129 admin/mimetypes/generic.tpl:189 +msgid "Enter an application name here" +msgstr "" + +#: admin/mimetypes/generic.tpl:132 admin/mimetypes/generic.tpl:193 +msgid "Add application" +msgstr "" + +#: admin/mimetypes/generic.tpl:143 +msgid "Embedding" +msgstr "" + +#: admin/mimetypes/generic.tpl:156 +msgid "Show file in embedded viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:163 +msgid "Show file in external viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:170 +msgid "Ask whether to save to local disk" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:27 +#: admin/mimetypes/class_divListMimeTypes.inc:28 +msgid "List of defined mime types" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:58 +msgid "Display mime types matching" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:243 +msgid "Number of listed mimetypes" +msgstr "" + +#: admin/mimetypes/paste_generic.tpl:24 +msgid "Please specify a description for this mime type here" +msgstr "" + +#: admin/mimetypes/main.inc:48 admin/mimetypes/main.inc:50 +msgid "Mimetype management" +msgstr "" + +#: admin/mimetypes/class_mimetypeGeneric.inc:535 +msgid "File pattern" +msgstr "" + +#: admin/mimetypes/class_mimetypeGeneric.inc:716 +msgid "Mime type generic" +msgstr "" + +#: admin/mimetypes/class_mimetypeGeneric.inc:729 +msgid "Left click action" +msgstr "" + +#: admin/mimetypes/class_mimetypeGeneric.inc:732 +msgid "Embedded applications" +msgstr "" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +msgid "Print Service" +msgstr "" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "enabled" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:27 +#: admin/systems/services/cups/class_goCupsServer.inc:48 +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/goto/info.tpl:124 +msgid "Print service" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:68 +msgid "Cups" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/services/shares/class_goShareServer.inc:390 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Services" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:77 +#: admin/systems/services/syslog/class_goLogDBServer.inc:101 +msgid "Start" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:78 +#: admin/systems/services/syslog/class_goLogDBServer.inc:102 +msgid "Stop" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:79 +#: admin/systems/services/syslog/class_goLogDBServer.inc:103 +msgid "Restart" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:34 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:206 +msgid "Kiosk profile service" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: personal/environment/class_environment.inc:1784 +#: personal/environment/environment.tpl:124 +#: personal/environment/environment.tpl:160 +msgid "Kiosk profile" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:269 +msgid "Kiosk" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/kiosk/goKioskService.tpl:1 +msgid "Kiosk profile management" +msgstr "" + +#: admin/systems/services/kiosk/goKioskService.tpl:16 +msgid "Server path" +msgstr "" + +#: admin/systems/services/kiosk/goKioskService.tpl:23 +#: addons/goto/goto_import_file.tpl:24 +msgid "Browse" +msgstr "" + +#: admin/systems/services/ldap/goLdapServer.tpl:1 +#: admin/systems/services/ldap/class_goLdapServer.inc:30 +#: admin/systems/services/ldap/class_goLdapServer.inc:68 +msgid "LDAP service" +msgstr "" + +#: admin/systems/services/ldap/goLdapServer.tpl:2 +msgid "LDAP URI" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:35 +msgid "fill-in-your-servers-dns-name" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:128 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +msgid "Ldap" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:137 +msgid "Ldap base" +msgstr "" + +#: admin/systems/services/ntp/goNtpServer.tpl:2 +msgid "Time server" +msgstr "" + +#: admin/systems/services/ntp/class_goNtpServer.inc:28 +#: admin/systems/services/ntp/class_goNtpServer.inc:74 +msgid "Time service (NTP)" +msgstr "" + +#: admin/systems/services/ntp/class_goNtpServer.inc:114 +msgid "Time service" +msgstr "" + +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +msgid "Time service - NTP" +msgstr "" + +#: admin/systems/services/ntp/class_goNtpServer.inc:123 +msgid "Ntp source" +msgstr "" + +#: admin/systems/services/terminal/goTerminalServer.tpl:4 +#: admin/systems/services/terminal/class_goTerminalServer.inc:26 +#: admin/systems/services/terminal/class_goTerminalServer.inc:76 +#: admin/systems/services/terminal/class_goTerminalServer.inc:164 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/goto/class_terminalService.inc:679 +msgid "Terminal service" +msgstr "" + +#: admin/systems/services/terminal/goTerminalServer.tpl:8 +#: admin/systems/services/terminal/class_goTerminalServer.inc:173 +msgid "Temporary disable login" +msgstr "" + +#: admin/systems/services/terminal/goTerminalServer.tpl:13 +msgid "Supported session types" +msgstr "" + +#: admin/systems/services/shares/goShareServer.tpl:1 +#: admin/systems/goto/class_terminalStartup.inc:543 +#: admin/systems/goto/class_workstationStartup.inc:1021 +#: admin/systems/goto/terminalStartup.tpl:91 +#: admin/systems/goto/workstationStartup.tpl:209 +#: personal/environment/class_environment.inc:1782 +#: personal/environment/environment.tpl:212 +msgid "Shares" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:31 +#: admin/systems/services/shares/class_goShareServer.inc:157 +#: admin/systems/services/shares/class_goShareServer.inc:389 +msgid "File service (Shares)" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:233 +msgid "share" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:390 +msgid "File service - Shares" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:399 +msgid "Apple mounts" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:402 +msgid "Charset" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:403 +#: admin/systems/services/nfs/class_servNfs.inc:179 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Path" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:404 +#: admin/systems/services/nfs/class_servNfs.inc:215 +#: admin/systems/services/nfs/servnfs.tpl:121 +msgid "Option" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:405 +#: admin/systems/services/nfs/class_servNfs.inc:211 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Volume" +msgstr "" + +#: admin/systems/services/nfs/class_servNfs.inc:184 +msgid "'Path / Volume' must be of format 'server:port'!" +msgstr "" + +#: admin/systems/services/nfs/class_servNfs.inc:188 +msgid "'Path / Volume' must contain at least one '/'!" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:1 +msgid "Edit share" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:2 +msgid "NFS setup" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:39 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:201 +#: addons/goto/events/class_EventTargetAddList.inc:238 +#: personal/environment/environment.tpl:135 +msgid "Server" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:69 +msgid "Auto-mount share on Apple systems" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:109 +msgid "Codepage" +msgstr "" + +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "Syslog Service" +msgstr "" + +#: admin/systems/services/syslog/class_goSyslogServer.inc:68 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +msgid "Logging service" +msgstr "" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:31 +#: admin/systems/services/syslog/class_goLogDBServer.inc:59 +msgid "Syslog service database" +msgstr "" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:69 +#: admin/systems/goto/class_printGeneric.inc:908 +#: addons/goto/events/class_EventTargetAddUsersList.inc:171 +msgid "User" +msgstr "" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:72 +#: admin/systems/services/syslog/class_goLogDBServer.inc:105 +#: admin/systems/services/syslog/goLogDBServer.tpl:20 +msgid "Password" +msgstr "" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:75 +#: admin/systems/services/syslog/class_goLogDBServer.inc:106 +#: admin/systems/services/syslog/goLogDBServer.tpl:4 +msgid "Database" +msgstr "" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:92 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Logging database" +msgstr "" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:104 +msgid "Admin" +msgstr "" + +#: admin/systems/services/syslog/goLogDBServer.tpl:1 +msgid "Logging database information" +msgstr "" + +#: admin/systems/services/syslog/goLogDBServer.tpl:12 +msgid "Logging DB user" +msgstr "" + +#: admin/systems/goto/workstation.tpl:1 admin/systems/goto/terminal.tpl:1 +msgid "Properties" +msgstr "" + +#: admin/systems/goto/workstation.tpl:8 +msgid "Workstation template" +msgstr "" + +#: admin/systems/goto/workstation.tpl:10 +#: admin/systems/goto/class_workstationGeneric.inc:707 +msgid "Workstation name" +msgstr "" + +#: admin/systems/goto/workstation.tpl:27 +#: admin/systems/goto/class_printGeneric.inc:932 +#: admin/systems/goto/class_workstationGeneric.inc:709 +msgid "Location" +msgstr "" + +#: admin/systems/goto/workstation.tpl:38 admin/systems/goto/terminal.tpl:31 +msgid "Choose subtree to place group in" +msgstr "" + +#: admin/systems/goto/workstation.tpl:87 admin/systems/goto/workstation.tpl:90 +#: admin/systems/goto/terminal.tpl:109 admin/systems/goto/terminal.tpl:112 +msgid "Inherit time server attributes" +msgstr "" + +#: admin/systems/goto/workstation.tpl:160 +msgid "Inherit all values from group" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:3 +#: personal/environment/selectPrinterDialog.tpl:5 +#: personal/environment/selectPrinterDialog.tpl:10 +msgid "Select printer to add" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:8 +msgid "Select entries to add" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:22 +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:18 +#: personal/environment/selectPrinterDialog.tpl:24 +#: personal/environment/hotplugDialog.tpl:24 +msgid "Filters" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Select to search within subtrees" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Search in subtrees" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:38 +msgid "Display members of department" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:41 +#: personal/environment/selectPrinterDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:50 +msgid "Display members matching" +msgstr "" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:55 +msgid "Regular expression for matching member names" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:49 +msgid "USB" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:50 +msgid "Parallel port" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:53 +msgid "Software" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:54 +msgid "Hardware" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:56 +msgid "Even" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:57 +msgid "Odd" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:60 +#: admin/systems/goto/class_gotoLpdEnabled.inc:61 +#: admin/systems/goto/class_gotoLpdEnabled.inc:62 +#: admin/systems/goto/class_gotoLpdEnabled.inc:63 +#: admin/systems/goto/class_gotoLpdEnabled.inc:64 +#: admin/systems/goto/class_gotoLpdEnabled.inc:65 +#: admin/systems/goto/class_gotoLpdEnabled.inc:66 +#: admin/systems/goto/class_gotoLpdEnabled.inc:67 +msgid "bit/s" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:153 +#: admin/systems/goto/terminalService.tpl:58 +#: admin/systems/goto/workstationService.tpl:66 +#: admin/systems/goto/gotoLpdEnable.tpl:71 +msgid "Port" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:1 +msgid "Integrating unknown devices" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:3 +msgid "" +"The current device has been detected by the ARP monitor used by GOsa. You " +"can integrate this device into your running DHCP/DNS infrastructure by " +"submitting this form. The device entry will disappear from the list of the " +"systems and move to the DNS/DHCP configuration." +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:9 +msgid "DNS name" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:106 +#: admin/systems/goto/class_printGeneric.inc:968 +msgid "Internal error" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:106 +#, php-format +msgid "" +"Cannot determine a valid department for this object. Setting base to '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:262 +#: admin/systems/goto/class_printGeneric.inc:270 +#: admin/systems/goto/class_printGeneric.inc:275 +#: admin/systems/goto/class_printGeneric.inc:324 +#: admin/systems/goto/class_printGeneric.inc:340 +#: admin/systems/goto/class_printGeneric.inc:343 +msgid "Add printer extension" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:263 +msgid "" +"Could not initialize printer tab, parameter parent was missing while " +"construction." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:271 +msgid "This is a workstation template, printer tab is disabled." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:276 +msgid "This is a terminal template, printer tab is disabled." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:317 +#: admin/systems/goto/class_printGeneric.inc:325 +#: admin/systems/goto/class_printGeneric.inc:333 +#: admin/systems/goto/class_printGeneric.inc:336 +#: admin/systems/goto/class_printGeneric.inc:341 +#: admin/systems/goto/class_printGeneric.inc:344 +msgid "printer" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:325 +msgid "" +"You can't enable it while 'cn' is not present in entry. Possibly you are " +"currently creating a new terminal template." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:332 +#: admin/systems/goto/class_printGeneric.inc:335 +msgid "Remove printer extension" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:513 +#, php-format +msgid "Your currently selected PPD file '%s' doesn't exist." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:518 +msgid "Not defined" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:521 +#: admin/systems/ppd/class_printerPPDDialog.inc:97 +msgid "Can't get ppd informations." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_printGeneric.inc:536 +#, php-format +msgid "This printer belongs to %s. You can't rename this printer." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_terminalStartup.inc:180 +#: admin/systems/goto/class_terminalInfo.inc:68 +#: admin/systems/goto/class_terminalGeneric.inc:230 +msgid "terminal" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:536 +#: admin/systems/goto/class_workstationGeneric.inc:226 +#: admin/systems/goto/class_workstationStartup.inc:285 +msgid "workstation" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +msgid "Object is no printer!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:680 +#: admin/systems/goto/printer.tpl:54 +msgid "Printer URL" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:903 +#: admin/systems/goto/class_printGeneric.inc:905 +#: addons/goto/events/class_EventTargetAddUsersList.inc:173 +msgid "Group" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:921 +msgid "Print generic" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:926 +#: admin/systems/goto/terminalService.tpl:245 +#: personal/environment/environment.tpl:338 +#: personal/environment/environment.tpl:374 +msgid "Printer" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:933 +msgid "LabeledURL" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:934 +msgid "Printer PPD" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:935 +#: admin/systems/goto/printer.tpl:82 +msgid "Permissions" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +msgid "printer user" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:968 +#, php-format +msgid "Illegal member type '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:1008 +#, php-format +msgid "'%s' is already used!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:1019 +#, php-format +msgid "'%s' does not exist!" +msgstr "" + +#: admin/systems/goto/class_selectUserToPrinterDialog.inc:147 +msgid "Please select a printer or press cancel." +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:135 +#, php-format +msgid "" +"Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to " +"exist." +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +msgid "Mount point" +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:372 +#: admin/systems/goto/class_workstationStartup.inc:750 +msgid "Fatal error" +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:533 +#: admin/systems/goto/class_workstationStartup.inc:1007 +msgid "Startup" +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:534 +msgid "Terminal startup" +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:542 +#: admin/systems/goto/class_workstationStartup.inc:1016 +msgid "Ldap server" +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:544 +#: admin/systems/goto/class_workstationStartup.inc:1020 +msgid "Kernel modules" +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:545 +#: admin/systems/goto/class_workstationStartup.inc:1017 +#: admin/systems/goto/terminalStartup.tpl:40 +#: admin/systems/goto/workstationStartup.tpl:9 +msgid "Boot kernel" +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:546 +#: admin/systems/goto/class_workstationStartup.inc:1018 +msgid "Kernel parameter" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:50 +#: admin/systems/goto/class_terminalInfo.inc:204 +msgid "present" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:77 +#: admin/systems/goto/class_terminalService.inc:121 +#: admin/systems/goto/class_workstationStartup.inc:1295 +#: admin/systems/goto/class_workstationStartup.inc:1297 +#: admin/systems/goto/class_workstationService.inc:78 +#: admin/systems/ppd/class_printerPPDDialog.inc:54 +#: admin/systems/ppd/class_printerPPDDialog.inc:121 +#: personal/environment/class_environment.inc:234 +msgid "Configuration error" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:83 +#: admin/systems/goto/class_terminalInfo.inc:179 +msgid "unknown status" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:92 +msgid "This is a virtual terminal which has no properties to show here." +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:106 +msgid "online" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:168 +msgid "running" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:171 +msgid "not running" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:174 +msgid "not defined" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:196 +msgid "offline" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:251 +msgid "System info" +msgstr "" + +#: admin/systems/goto/class_terminalInfo.inc:252 +msgid "System informations" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:128 +#: admin/systems/goto/class_terminalService.inc:129 +#: admin/systems/goto/class_terminalService.inc:130 +#: admin/systems/goto/class_terminalService.inc:131 +#: admin/systems/goto/class_workstationService.inc:88 +#: admin/systems/goto/class_workstationService.inc:89 +#: admin/systems/goto/class_workstationService.inc:90 +#: admin/systems/goto/class_workstationService.inc:91 +msgid "bit" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:177 +msgid "XDMCP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:178 +msgid "LDM" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:179 +msgid "Shell" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:180 +msgid "Telnet" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:181 +msgid "Windows RDP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:204 +#: admin/systems/goto/class_workstationService.inc:144 +msgid "automatic" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_workstationService.inc:194 +msgid "Bit" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:314 +msgid "This 'dn' has no terminal features." +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:372 +msgid "Unsupported" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:414 +#: admin/systems/goto/class_workstationService.inc:309 +msgid "Choose the phone located at the current terminal" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:495 +#: admin/systems/goto/class_terminalService.inc:500 +msgid "VSync range" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:508 +#: admin/systems/goto/class_terminalService.inc:513 +msgid "HSync range" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:539 +msgid "" +"Remote desktop settings contains servers that do not support the selected " +"connection method." +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:603 +#: admin/systems/goto/workstationService.tpl:157 +#: admin/systems/goto/class_workstationService.inc:85 +msgid "unknown" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:678 +#: admin/systems/goto/class_workstationService.inc:484 +msgid "Service" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:688 +#: admin/systems/goto/class_workstationService.inc:493 +msgid "Monitor" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:689 +msgid "Method" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:690 +#: admin/systems/goto/terminalService.tpl:173 +msgid "Remote desktop" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:691 +#: admin/systems/goto/class_workstationService.inc:494 +msgid "Gfx driver" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:692 +#: admin/systems/goto/class_workstationService.inc:495 +msgid "Gfx resolution" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:693 +#: admin/systems/goto/class_workstationService.inc:496 +msgid "Gfx color depth" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:694 +#: admin/systems/goto/terminalService.tpl:150 +#: admin/systems/goto/workstationService.tpl:170 +#: admin/systems/goto/class_workstationService.inc:393 +#: admin/systems/goto/class_workstationService.inc:395 +#: admin/systems/goto/class_workstationService.inc:400 +#: admin/systems/goto/class_workstationService.inc:497 +msgid "HSync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:695 +#: admin/systems/goto/terminalService.tpl:158 +#: admin/systems/goto/workstationService.tpl:181 +#: admin/systems/goto/class_workstationService.inc:376 +#: admin/systems/goto/class_workstationService.inc:378 +#: admin/systems/goto/class_workstationService.inc:383 +#: admin/systems/goto/class_workstationService.inc:498 +msgid "VSync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:696 +msgid "Auto-Sync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:697 +#: admin/systems/goto/class_workstationService.inc:500 +msgid "Scanner enabled" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:698 +#: admin/systems/goto/class_terminalService.inc:704 +msgid "Printer enabled" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:699 +#: admin/systems/goto/class_workstationService.inc:501 +msgid "Keyboard model" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:700 +#: admin/systems/goto/class_workstationService.inc:502 +msgid "Keyboard layout" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:701 +#: admin/systems/goto/class_workstationService.inc:503 +msgid "Keyboard variant" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:702 +#: admin/systems/goto/class_workstationService.inc:504 +msgid "Mouse type" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:703 +#: admin/systems/goto/class_workstationService.inc:505 +msgid "Mouse port" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:705 +#: admin/systems/goto/terminalService.tpl:76 +#: admin/systems/goto/workstationService.tpl:86 +#: admin/systems/goto/class_workstationService.inc:506 +msgid "Telephone hardware" +msgstr "" + +#: admin/systems/goto/info.tpl:6 +msgid "System information" +msgstr "" + +#: admin/systems/goto/info.tpl:12 +msgid "CPU" +msgstr "" + +#: admin/systems/goto/info.tpl:15 +msgid "Memory" +msgstr "" + +#: admin/systems/goto/info.tpl:18 +msgid "Boot MAC" +msgstr "" + +#: admin/systems/goto/info.tpl:21 +msgid "USB support" +msgstr "" + +#: admin/systems/goto/info.tpl:24 admin/systems/goto/info.tpl:92 +msgid "System status" +msgstr "" + +#: admin/systems/goto/info.tpl:28 +msgid "Inventory number" +msgstr "" + +#: admin/systems/goto/info.tpl:32 +msgid "Last login" +msgstr "" + +#: admin/systems/goto/info.tpl:43 +msgid "Network devices" +msgstr "" + +#: admin/systems/goto/info.tpl:52 +msgid "IDE devices" +msgstr "" + +#: admin/systems/goto/info.tpl:61 +msgid "SCSI devices" +msgstr "" + +#: admin/systems/goto/info.tpl:69 +msgid "Floppy device" +msgstr "" + +#: admin/systems/goto/info.tpl:73 +msgid "CDROM device" +msgstr "" + +#: admin/systems/goto/info.tpl:78 admin/systems/goto/terminalService.tpl:95 +#: admin/systems/goto/workstationService.tpl:107 +msgid "Graphic device" +msgstr "" + +#: admin/systems/goto/info.tpl:82 +msgid "Audio device" +msgstr "" + +#: admin/systems/goto/info.tpl:98 +msgid "Up since" +msgstr "" + +#: admin/systems/goto/info.tpl:101 +msgid "CPU load" +msgstr "" + +#: admin/systems/goto/info.tpl:104 +msgid "Memory usage" +msgstr "" + +#: admin/systems/goto/info.tpl:107 +msgid "Swap usage" +msgstr "" + +#: admin/systems/goto/info.tpl:121 +msgid "SSH service" +msgstr "" + +#: admin/systems/goto/info.tpl:127 +msgid "Scan service" +msgstr "" + +#: admin/systems/goto/info.tpl:130 +msgid "Sound service" +msgstr "" + +#: admin/systems/goto/info.tpl:133 +msgid "GUI" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:299 +#: admin/systems/goto/class_workstationGeneric.inc:309 +#: addons/goto/events/class_DaemonEvent_update.inc:29 +#: addons/goto/events/class_DaemonEvent_update.inc:30 +msgid "Software update" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:303 +#: admin/systems/goto/class_workstationGeneric.inc:311 +#: addons/goto/events/class_DaemonEvent_localboot.inc:28 +#: addons/goto/events/class_DaemonEvent_localboot.inc:29 +msgid "Force localboot" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:307 +#: admin/systems/goto/class_terminalGeneric.inc:271 +#: addons/goto/events/class_DaemonEvent_wakeup.inc:29 +msgid "Wake up" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:500 +msgid "A valid LDAP server assignement is missing!" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:510 +msgid "Software deployment" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:511 +msgid "This host is currently installing. If you want to save it, press 'OK'." +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:699 +msgid "Workstation generic" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:704 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:203 +#: addons/goto/events/class_EventTargetAddList.inc:249 +msgid "Workstation" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:711 +msgid "Goto mode" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:714 +#: admin/systems/goto/class_terminalGeneric.inc:676 +msgid "Root password" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:715 +msgid "Create FAI CD" +msgstr "" + +#: admin/systems/goto/gencd_frame.tpl:2 +msgid "Your browser does not supprt iframes." +msgstr "" + +#: admin/systems/goto/terminalService.tpl:4 +#: admin/systems/goto/workstationService.tpl:4 +msgid "Keyboard" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:7 +#: admin/systems/goto/workstationService.tpl:7 +#: admin/systems/ppd/printerPPDDialog.tpl:10 +msgid "Model" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:10 +#: admin/systems/goto/workstationService.tpl:11 +msgid "Choose keyboard model" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:17 +#: admin/systems/goto/workstationService.tpl:19 +msgid "Layout" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:20 +#: admin/systems/goto/workstationService.tpl:23 +msgid "Choose keyboard layout" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:27 +#: admin/systems/goto/workstationService.tpl:31 +msgid "Variant" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:30 +#: admin/systems/goto/workstationService.tpl:35 +msgid "Choose keyboard variant" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:45 +#: admin/systems/goto/workstationService.tpl:51 +msgid "Mouse" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:51 +#: admin/systems/goto/workstationService.tpl:58 +msgid "Choose mouse type" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:61 +#: admin/systems/goto/workstationService.tpl:70 +msgid "Choose mouse port" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:79 +#: admin/systems/goto/workstationService.tpl:89 +msgid "Telephone" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:98 +#: admin/systems/goto/workstationService.tpl:110 +#: admin/systems/goto/printer.tpl:66 +msgid "Driver" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:101 +#: admin/systems/goto/workstationService.tpl:114 +msgid "Choose graphic driver that is needed by the installed graphic board" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:108 +#: admin/systems/goto/workstationService.tpl:122 +#: personal/environment/class_environment.inc:1786 +#: personal/environment/environment.tpl:183 +msgid "Resolution" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:111 +#: admin/systems/goto/workstationService.tpl:126 +msgid "Choose screen resolution used in graphic mode" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:118 +#: admin/systems/goto/workstationService.tpl:134 +msgid "Color depth" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:121 +#: admin/systems/goto/workstationService.tpl:138 +msgid "Choose colordepth used in graphic mode" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:135 +#: admin/systems/goto/workstationService.tpl:153 +msgid "Display device" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:147 +#: admin/systems/goto/workstationService.tpl:167 +msgid "Use DDC for automatic detection" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:154 +#: admin/systems/goto/workstationService.tpl:175 +msgid "Horizontal refresh frequency for installed monitor" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:162 +#: admin/systems/goto/workstationService.tpl:186 +msgid "Vertical refresh frequency for installed monitor" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:177 +msgid "Connect method" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:180 +msgid "Choose method to connect to terminal server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:184 +#: admin/systems/goto/terminalStartup.tpl:14 +#: admin/systems/goto/workstationStartup.tpl:36 +#: addons/goto/class_gotomasses.inc:400 +msgid "Reload" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:191 +msgid "Terminal server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:202 +msgid "Select specific terminal server to use" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:208 +msgid "Add selected server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:212 +msgid "Remove selected server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:233 +#: admin/systems/goto/workstationService.tpl:201 +msgid "Scan device" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:235 +#: admin/systems/goto/workstationService.tpl:204 +msgid "Select to start SANE scan service on terminal" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:237 +#: admin/systems/goto/workstationService.tpl:207 +msgid "Provide scan services" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:12 +#: admin/systems/goto/gotoLpdEnable.tpl:48 +msgid "Enable printer settings" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:87 +msgid "Write only" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:100 +msgid "Bit rate" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:110 +msgid "Flow control" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:120 +msgid "Parity" +msgstr "" + +#: admin/systems/goto/gotoLpdEnable.tpl:130 +msgid "Bits" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:234 +#, php-format +msgid "FAI mirror '%s' is not available - setting to mirror 'auto'!" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:247 +#, php-format +msgid "" +"FAI release '%s' is not available on mirror '%s' - setting to release '%s'!" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:266 +msgid "Please select a 'FAI server' or remove the 'FAI classes'." +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:324 +msgid "" +"There is already a profile containing a partition table in your " +"configuration!" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:629 +msgid "Not available in current setup" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1008 +msgid "System startup" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1023 +msgid "FAI classes" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1024 +msgid "Debian mirror" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1025 +msgid "Debian release" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1027 +msgid "FAI status flag" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1297 +msgid "'repositoryBranchHook' returned no result!" +msgstr "" + +#: admin/systems/goto/gencd.tpl:2 +msgid "CD-Install-Image generation" +msgstr "" + +#: admin/systems/goto/gencd.tpl:5 +msgid "" +"This option enables you to generate FAI install CD images for the selected " +"workstation. The procedure may take about 10 minutes to complete, so please " +"be patient after pressing the 'Create ISO-Image' button." +msgstr "" + +#: admin/systems/goto/gencd.tpl:9 +msgid "Create ISO-Image" +msgstr "" + +#: admin/systems/goto/class_workstationService.inc:485 +msgid "Workstation service" +msgstr "" + +#: admin/systems/goto/class_workstationService.inc:499 +msgid "Use DDC" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:1 +#: admin/systems/goto/workstationStartup.tpl:4 +msgid "Boot parameters" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:7 +#: admin/systems/goto/workstationStartup.tpl:29 +msgid "LDAP server" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:12 +#: admin/systems/goto/workstationStartup.tpl:34 +msgid "inherit from group" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:51 +#: admin/systems/goto/workstationStartup.tpl:20 +msgid "Custom options" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:55 +#: admin/systems/goto/workstationStartup.tpl:24 +msgid "" +"Enter any parameters that should be passed to the kernel as append line " +"during bootup" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:70 +#: admin/systems/goto/workstationStartup.tpl:188 +msgid "Kernel modules (format: name parameters)" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:73 +#: admin/systems/goto/workstationStartup.tpl:191 +msgid "Add additional modules to load on startup" +msgstr "" + +#: admin/systems/goto/terminalStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:227 +msgid "Mountpoint" +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:3 +msgid "" +"This system has no system type configured. Please choose a system type for " +"this object and an optional inheritance group. Press the 'continue' button " +"to proceed." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:10 +msgid "" +"Please select a system type and an optional bundle of predefined settings to " +"be inherited." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:12 +msgid "" +"Please select a system type and a bundle of predefined settings to be " +"inherited." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:23 +#: admin/systems/goto/SelectDeviceType.tpl:24 +msgid "System type" +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:36 +msgid "Choose an object group as template" +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:37 +#: addons/goto/class_target_list.inc:205 addons/goto/goto_import_file.tpl:40 +#: addons/goto/events/class_EventTargetAddList.inc:259 +msgid "Object group" +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:39 +#: addons/goto/class_gotoLogView.inc:87 +msgid "none" +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:51 +msgid "Continue" +msgstr "" + +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: admin/systems/goto/class_terminalGeneric.inc:656 +#: admin/systems/goto/class_terminalGeneric.inc:662 +msgid "Terminal" +msgstr "" + +#: admin/systems/goto/class_SelectDeviceType.inc:41 +#: admin/systems/goto/chooser.tpl:10 +msgid "Windows workstation" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:64 +msgid "" +"FAI Object assignment disabled. You can't use this feature until FAI is " +"activated." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:66 +msgid "GOsa support daemon not configured" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:67 +msgid "FAI settings cannot be modified" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:70 +msgid "Check if the GOsa support daemon (gosa-si) is running." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:71 +msgid "retry" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:79 +#: admin/systems/goto/workstationStartup.tpl:119 +msgid "FAI server" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:158 +msgid "Assigned FAI classes" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:142 +msgid "set" +msgstr "" + +#: admin/systems/goto/class_terminalGeneric.inc:657 +msgid "Terminal generic" +msgstr "" + +#: admin/systems/goto/class_terminalGeneric.inc:670 +msgid "Syslog server enabled" +msgstr "" + +#: admin/systems/goto/class_terminalGeneric.inc:675 +msgid "Ntp server settings" +msgstr "" + +#: admin/systems/goto/printer.tpl:5 +msgid "General" +msgstr "" + +#: admin/systems/goto/printer.tpl:8 +msgid "Printer name" +msgstr "" + +#: admin/systems/goto/printer.tpl:30 +msgid "Choose subtree to place user in" +msgstr "" + +#: admin/systems/goto/printer.tpl:43 +msgid "Details" +msgstr "" + +#: admin/systems/goto/printer.tpl:46 +msgid "Printer location" +msgstr "" + +#: admin/systems/goto/printer.tpl:89 +msgid "Users which are allowed to use this printer" +msgstr "" + +#: admin/systems/goto/printer.tpl:91 +msgid "Users" +msgstr "" + +#: admin/systems/goto/printer.tpl:96 admin/systems/goto/printer.tpl:120 +msgid "Add user" +msgstr "" + +#: admin/systems/goto/printer.tpl:99 admin/systems/goto/printer.tpl:123 +msgid "Add group" +msgstr "" + +#: admin/systems/goto/printer.tpl:113 +msgid "Users which are allowed to administrate this printer" +msgstr "" + +#: admin/systems/goto/printer.tpl:115 +msgid "Admins" +msgstr "" + +#: admin/systems/goto/chooser.tpl:1 +msgid "Choose the kind of system component you want to create" +msgstr "" + +#: admin/systems/goto/chooser.tpl:4 +msgid "" +"Linux terminals and workstations are autocreated on bootup. For this reason " +"you're only be able to create templates for a specific tree. Servers are " +"normally automatically added too, but in some special cases you may need to " +"create a faked server entry to provide GOsa with some informations. Other " +"network components may be used for Nagios setups to create component " +"dependencies." +msgstr "" + +#: admin/systems/goto/chooser.tpl:7 +msgid "Linux thin client template" +msgstr "" + +#: admin/systems/goto/chooser.tpl:8 +msgid "Linux workstation template" +msgstr "" + +#: admin/systems/goto/chooser.tpl:9 +msgid "Linux Server" +msgstr "" + +#: admin/systems/goto/chooser.tpl:11 +msgid "Network printer" +msgstr "" + +#: admin/systems/goto/chooser.tpl:12 +msgid "Phone" +msgstr "" + +#: admin/systems/goto/chooser.tpl:13 +msgid "Other network component" +msgstr "" + +#: admin/systems/goto/terminal.tpl:8 +msgid "Terminal template" +msgstr "" + +#: admin/systems/goto/terminal.tpl:10 +msgid "Terminal name" +msgstr "" + +#: admin/systems/goto/terminal.tpl:178 +msgid "Inherit all" +msgstr "" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:6 +msgid "Select objects to add" +msgstr "" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:28 +msgid "Display objects matching" +msgstr "" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:32 +msgid "Regular expression for matching object names" +msgstr "" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:44 +msgid "Close" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#: admin/systems/ppd/class_ppdManager.inc:148 +#: admin/systems/ppd/class_ppdManager.inc:150 +msgid "PPD manager error" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#, php-format +msgid "The specified path '%s' does not exist." +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:148 +#, php-format +msgid "Specified PPD file '%s' cannot be opened for reading." +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:150 +#, php-format +msgid "The temporary file '%s' cannot be opened for writing." +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:176 +#: admin/systems/ppd/class_ppdManager.inc:313 +#, php-format +msgid "" +"Parsing PPD file %s failed - line too long. Trailing characters have been " +"ignored" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:184 +msgid "Nested groups are not supported!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:188 +msgid "Group name not unique!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:194 +#: admin/systems/ppd/class_ppdManager.inc:224 +msgid "Symbol values are not supported yet!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:218 +msgid "Nested options are not supported!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:243 +msgid "PickMany is not supported yet!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:334 +#, php-format +msgid "Parsing PPD file %s failed - no information found." +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:223 +#: admin/systems/ppd/class_printerPPDDialog.inc:240 +#: admin/systems/ppd/class_printerPPDDialog.inc:248 +#: admin/systems/ppd/class_printerPPDDialog.inc:272 +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#: admin/systems/ppd/class_printerPPDDialog.inc:313 +#: admin/systems/ppd/class_printerPPDDialog.inc:327 +#: admin/systems/ppd/class_printerPPDDialog.inc:337 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#: admin/systems/ppd/class_printerPPDDialog.inc:551 +#: admin/systems/ppd/class_printerPPDDialog.inc:554 +#: admin/systems/ppd/class_printerPPDDialog.inc:557 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:75 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:100 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +msgid "PPD error" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#, php-format +msgid "Cannot open PPD '%s'!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:122 +#, php-format +msgid "Cannot open PPD path '%s' for reading and writing!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: addons/goto/class_goto_import_file.inc:29 +msgid "file is empty" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#, php-format +msgid "Cannot parse PPD '%s'!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:316 +msgid "Overwrite existing PPD" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:317 +msgid "" +"There is already a ppd file for this kind of printer. Do you want to " +"overwrite it?" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:465 +msgid "Section" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:525 +#: admin/systems/ppd/class_printerPPDDialog.inc:528 +msgid "True" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:526 +#: admin/systems/ppd/class_printerPPDDialog.inc:529 +msgid "False" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#, php-format +msgid "PPD type '%s' is not supported!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:571 +msgid "" +"Please select a valid ppd file or use 'Cancel' to go back to printer " +"configuration." +msgstr "" + +#: admin/systems/ppd/remove_ppd.tpl:9 +msgid "The ppd file will be removed from the server and can not be restored." +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:1 +msgid "Printer driver" +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:12 +msgid "Select" +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:16 +msgid "New driver" +msgstr "" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, php-format +msgid "Cannot locate vendor '%s' in available PPDs!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:129 +msgid "Printer ppd selection." +msgstr "" + +#: addons/goto/class_target_list.inc:58 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: addons/goto/class_target_list.inc:59 addons/goto/class_target_list.inc:60 +msgid "Available targets" +msgstr "" + +#: addons/goto/class_target_list.inc:69 +msgid "Object name" +msgstr "" + +#: addons/goto/class_target_list.inc:72 +msgid "Select to see object groups" +msgstr "" + +#: addons/goto/class_target_list.inc:72 +msgid "Show object groups" +msgstr "" + +#: addons/goto/class_target_list.inc:73 +msgid "Select to see servers" +msgstr "" + +#: addons/goto/class_target_list.inc:73 +msgid "Show servers" +msgstr "" + +#: addons/goto/class_target_list.inc:74 +msgid "Select to see workstations" +msgstr "" + +#: addons/goto/class_target_list.inc:74 +msgid "Show workstations" +msgstr "" + +#: addons/goto/class_target_list.inc:75 +msgid "Select to see incoming objects" +msgstr "" + +#: addons/goto/class_target_list.inc:75 +msgid "Show new objects" +msgstr "" + +#: addons/goto/class_target_list.inc:80 +msgid "Select to search for a specific IP range only" +msgstr "" + +#: addons/goto/class_target_list.inc:80 +msgid "Match IP range" +msgstr "" + +#: addons/goto/class_target_list.inc:83 +msgid "Regular expression for matching group names" +msgstr "" + +#: addons/goto/class_target_list.inc:84 +msgid "IP range start" +msgstr "" + +#: addons/goto/class_target_list.inc:85 +msgid "IP range end" +msgstr "" + +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +msgid "IP range" +msgstr "" + +#: addons/goto/goto_import_file.tpl:1 +msgid "Import jobs" +msgstr "" + +#: addons/goto/goto_import_file.tpl:3 +msgid "" +"You can import a list of jobs into the GOsa job queue. This should be a " +"semicolon seperated list of items in the following format:" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "timestamp" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "MAC-address" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "job type" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "object group" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "import base" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "full hostname" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "IP-address" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +msgid "DHCP group" +msgstr "" + +#: addons/goto/goto_import_file.tpl:9 +msgid "Example" +msgstr "" + +#: addons/goto/goto_import_file.tpl:21 +msgid "Select list to import" +msgstr "" + +#: addons/goto/goto_import_file.tpl:37 +#: addons/goto/events/DaemonEvent_update.tpl:51 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:51 +#: addons/goto/events/DaemonEvent_halt.tpl:51 +#: addons/goto/events/DaemonEvent_wakeup.tpl:51 +#: addons/goto/events/DaemonEvent_reboot.tpl:51 +#: addons/goto/events/DaemonEvent_notify.tpl:85 +#: addons/goto/events/DaemonEvent_rescan.tpl:51 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:51 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:51 +#: addons/goto/events/DaemonEvent_faireboot.tpl:51 +#: addons/goto/events/DaemonEvent_localboot.tpl:51 +#: addons/goto/events/DaemonEvent_memcheck.tpl:51 +#: addons/goto/events/DaemonEvent_activate.tpl:51 +#: addons/goto/events/DaemonEvent_lock.tpl:51 +#: addons/goto/events/DaemonEvent_reinstall.tpl:55 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:51 +msgid "Timestamp" +msgstr "" + +#: addons/goto/goto_import_file.tpl:38 +#: addons/goto/class_goto_import_file.inc:168 +msgid "MAC" +msgstr "" + +#: addons/goto/goto_import_file.tpl:39 +#: addons/goto/class_goto_import_file.inc:171 +msgid "Event" +msgstr "" + +#: addons/goto/goto_import_file.tpl:42 +msgid "FQDN" +msgstr "" + +#: addons/goto/goto_import_file.tpl:43 +msgid "IP" +msgstr "" + +#: addons/goto/goto_import_file.tpl:44 +msgid "DHCP" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:113 +msgid "File" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:115 +msgid "Date" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:202 +msgid "Log view" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:203 +msgid "GOto log view" +msgstr "" + +#: addons/goto/class_gotomasses.inc:26 +msgid "Deployment status" +msgstr "" + +#: addons/goto/class_gotomasses.inc:27 addons/goto/main.inc:66 +msgid "System deployment status" +msgstr "" + +#: addons/goto/class_gotomasses.inc:270 +#, php-format +msgid "The following jobs couldn't be deleted, they have to be aborted: %s" +msgstr "" + +#: addons/goto/class_gotomasses.inc:360 +msgid "This menu allows you to remove and change the properties of GOsa tasks." +msgstr "" + +#: addons/goto/class_gotomasses.inc:361 +msgid "List of queued jobs" +msgstr "" + +#: addons/goto/class_gotomasses.inc:380 +msgid "Resume" +msgstr "" + +#: addons/goto/class_gotomasses.inc:381 +msgid "Pause" +msgstr "" + +#: addons/goto/class_gotomasses.inc:382 +msgid "Abort" +msgstr "" + +#: addons/goto/class_gotomasses.inc:408 +#: addons/goto/events/DaemonEvent_update.tpl:47 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:47 +#: addons/goto/events/DaemonEvent_halt.tpl:47 +#: addons/goto/events/DaemonEvent_wakeup.tpl:47 +#: addons/goto/events/DaemonEvent_reboot.tpl:47 +#: addons/goto/events/DaemonEvent_notify.tpl:81 +#: addons/goto/events/DaemonEvent_rescan.tpl:47 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:47 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:47 +#: addons/goto/events/DaemonEvent_faireboot.tpl:47 +#: addons/goto/events/class_DaemonEvent_notify.inc:77 +#: addons/goto/events/class_DaemonEvent_notify.inc:78 +#: addons/goto/events/class_DaemonEvent_notify.inc:103 +#: addons/goto/events/DaemonEvent_localboot.tpl:47 +#: addons/goto/events/DaemonEvent_memcheck.tpl:47 +#: addons/goto/events/DaemonEvent_activate.tpl:47 +#: addons/goto/events/DaemonEvent_lock.tpl:47 +#: addons/goto/events/DaemonEvent_reinstall.tpl:51 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:47 +msgid "Target" +msgstr "" + +#: addons/goto/class_gotomasses.inc:409 +msgid "Task" +msgstr "" + +#: addons/goto/class_gotomasses.inc:411 +#: addons/goto/events/DaemonEvent_update.tpl:9 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:9 +#: addons/goto/events/DaemonEvent_halt.tpl:9 +#: addons/goto/events/DaemonEvent_wakeup.tpl:9 +#: addons/goto/events/DaemonEvent_reboot.tpl:9 +#: addons/goto/events/DaemonEvent_notify.tpl:28 +#: addons/goto/events/DaemonEvent_rescan.tpl:9 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:9 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:9 +#: addons/goto/events/DaemonEvent_faireboot.tpl:9 +#: addons/goto/events/DaemonEvent_localboot.tpl:9 +#: addons/goto/events/DaemonEvent_memcheck.tpl:9 +#: addons/goto/events/DaemonEvent_lock.tpl:9 +#: addons/goto/events/DaemonEvent_reinstall.tpl:9 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:9 +msgid "Schedule" +msgstr "" + +#: addons/goto/class_gotomasses.inc:413 +#: addons/goto/events/DaemonEvent_update.tpl:39 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:39 +#: addons/goto/events/DaemonEvent_halt.tpl:39 +#: addons/goto/events/DaemonEvent_wakeup.tpl:39 +#: addons/goto/events/DaemonEvent_reboot.tpl:39 +#: addons/goto/events/DaemonEvent_notify.tpl:73 +#: addons/goto/events/DaemonEvent_rescan.tpl:39 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:39 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:39 +#: addons/goto/events/DaemonEvent_faireboot.tpl:39 +#: addons/goto/events/DaemonEvent_localboot.tpl:39 +#: addons/goto/events/DaemonEvent_memcheck.tpl:39 +#: addons/goto/events/DaemonEvent_activate.tpl:39 +#: addons/goto/events/DaemonEvent_lock.tpl:39 +#: addons/goto/events/DaemonEvent_reinstall.tpl:43 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:39 +msgid "Status" +msgstr "" + +#: addons/goto/class_gotomasses.inc:441 +msgid "Pause job" +msgstr "" + +#: addons/goto/class_gotomasses.inc:448 +msgid "Resume job" +msgstr "" + +#: addons/goto/class_gotomasses.inc:455 +msgid "Execute now" +msgstr "" + +#: addons/goto/class_gotomasses.inc:462 +msgid "View logs" +msgstr "" + +#: addons/goto/class_gotomasses.inc:477 +msgid "Abort job" +msgstr "" + +#: addons/goto/class_gotomasses.inc:521 +msgid "Waiting" +msgstr "" + +#: addons/goto/class_gotomasses.inc:527 +msgid "Processed" +msgstr "" + +#: addons/goto/class_gotomasses.inc:542 +msgid "Detection" +msgstr "" + +#: addons/goto/class_gotomasses.inc:550 +msgid "in progress" +msgstr "" + +#: addons/goto/class_gotomasses.inc:563 +msgid "immediately" +msgstr "" + +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:735 +#: addons/goto/class_gotomasses.inc:775 +#, php-format +msgid "Cannot update queue entry: %s" +msgstr "" + +#: addons/goto/class_gotomasses.inc:691 +#, php-format +msgid "Cannot update queue entries." +msgstr "" + +#: addons/goto/class_gotomasses.inc:740 +#, php-format +msgid "Required class '%s' cannot be found: job not aborted!" +msgstr "" + +#: addons/goto/class_gotomasses.inc:816 +#, php-format +msgid "Cannot load queue entries: %s" +msgstr "" + +#: addons/goto/class_gotomasses.inc:910 addons/goto/class_gotomasses.inc:916 +msgid "System deployment" +msgstr "" + +#: addons/goto/class_gotomasses.inc:911 +msgid "Provide a mechanism to automatically activate systems" +msgstr "" + +#: addons/goto/log_view.tpl:7 +msgid "Available logs" +msgstr "" + +#: addons/goto/log_view.tpl:12 +msgid "Selected log" +msgstr "" + +#: addons/goto/log_view.tpl:17 +msgid "No logs for this host available!" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_lock.inc:29 +#: addons/goto/events/class_DaemonEvent_lock.inc:30 +msgid "Lock" +msgstr "" + +#: addons/goto/events/DaemonEvent_update.tpl:18 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:18 +#: addons/goto/events/DaemonEvent_halt.tpl:18 +#: addons/goto/events/DaemonEvent_wakeup.tpl:18 +#: addons/goto/events/DaemonEvent_reboot.tpl:18 +#: addons/goto/events/DaemonEvent_rescan.tpl:18 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:18 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:18 +#: addons/goto/events/DaemonEvent_faireboot.tpl:18 +#: addons/goto/events/DaemonEvent_localboot.tpl:18 +#: addons/goto/events/DaemonEvent_memcheck.tpl:18 +#: addons/goto/events/DaemonEvent_activate.tpl:18 +#: addons/goto/events/DaemonEvent_lock.tpl:18 +#: addons/goto/events/DaemonEvent_reinstall.tpl:18 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:18 +msgid "System list" +msgstr "" + +#: addons/goto/events/DaemonEvent_update.tpl:35 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:35 +#: addons/goto/events/DaemonEvent_halt.tpl:35 +#: addons/goto/events/DaemonEvent_wakeup.tpl:35 +#: addons/goto/events/DaemonEvent_reboot.tpl:35 +#: addons/goto/events/DaemonEvent_notify.tpl:69 +#: addons/goto/events/DaemonEvent_rescan.tpl:35 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:35 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:35 +#: addons/goto/events/DaemonEvent_faireboot.tpl:35 +#: addons/goto/events/DaemonEvent_localboot.tpl:35 +#: addons/goto/events/DaemonEvent_memcheck.tpl:35 +#: addons/goto/events/DaemonEvent_activate.tpl:35 +#: addons/goto/events/DaemonEvent_lock.tpl:35 +#: addons/goto/events/DaemonEvent_reinstall.tpl:35 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:35 +msgid "ID" +msgstr "" + +#: addons/goto/events/DaemonEvent_update.tpl:43 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:43 +#: addons/goto/events/DaemonEvent_halt.tpl:43 +#: addons/goto/events/DaemonEvent_wakeup.tpl:43 +#: addons/goto/events/DaemonEvent_reboot.tpl:43 +#: addons/goto/events/DaemonEvent_notify.tpl:77 +#: addons/goto/events/DaemonEvent_rescan.tpl:43 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:43 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:43 +#: addons/goto/events/DaemonEvent_faireboot.tpl:43 +#: addons/goto/events/DaemonEvent_localboot.tpl:43 +#: addons/goto/events/DaemonEvent_memcheck.tpl:43 +#: addons/goto/events/DaemonEvent_activate.tpl:43 +#: addons/goto/events/DaemonEvent_lock.tpl:43 +#: addons/goto/events/DaemonEvent_reinstall.tpl:47 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:43 +msgid "Result" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:37 +msgid "GOto reload" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:38 +msgid "Reload GOto settings" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_activate.inc:29 +#: addons/goto/events/class_DaemonEvent_activate.inc:30 +msgid "Unlock" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_faireboot.inc:28 +#: addons/goto/events/class_DaemonEvent_faireboot.inc:29 +msgid "Abort installation" +msgstr "" + +#: addons/goto/events/target_list.tpl:5 +msgid "Apply" +msgstr "" + +#: addons/goto/events/target_list.tpl:6 +msgid "Cancel" +msgstr "" + +#: addons/goto/events/DaemonEvent_notify.tpl:7 +msgid "Message settings" +msgstr "" + +#: addons/goto/events/DaemonEvent_notify.tpl:10 +msgid "Sender" +msgstr "" + +#: addons/goto/events/DaemonEvent_notify.tpl:14 +#: addons/goto/events/class_DaemonEvent_notify.inc:94 +msgid "Subject" +msgstr "" + +#: addons/goto/events/DaemonEvent_notify.tpl:18 +#: addons/goto/events/class_DaemonEvent_notify.inc:97 +msgid "Message" +msgstr "" + +#: addons/goto/events/DaemonEvent_notify.tpl:37 +msgid "Target users" +msgstr "" + +#: addons/goto/events/DaemonEvent_notify.tpl:44 +msgid "Target groups" +msgstr "" + +#: addons/goto/events/class_DaemonEvent.inc:119 +msgid "This job has no template!" +msgstr "" + +#: addons/goto/events/class_DaemonEvent.inc:135 +#, php-format +msgid "Create '%s' job" +msgstr "" + +#: addons/goto/events/class_DaemonEvent.inc:234 +msgid "Add" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:31 +msgid "Reload fai release db" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_wakeup.inc:30 +msgid "Wake system" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_activate_new.inc:40 +#: addons/goto/events/class_DaemonEvent_activate_new.inc:41 +msgid "Activate new" +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:51 +#: addons/goto/events/class_EventTargetAddUsersList.inc:45 +msgid "Targets" +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:55 +msgid "" +"This dialog shows all available targets for the event. Check the targets you " +"want to add and use the 'Apply' button." +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:66 +#: addons/goto/events/class_EventTargetAddUsersList.inc:60 +msgid "System / Department" +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:73 +msgid "Display server" +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:74 +msgid "Display workstation" +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:75 +msgid "Display object groups" +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:76 +msgid "Filter by IP range" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:3 +msgid "Year" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:4 +msgid "Month" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:5 +msgid "Day" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:7 +msgid "Hour" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:8 +msgid "Minute" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:9 +msgid "Second" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:28 +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:29 +msgid "Reload LDAP config" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_notify.inc:46 +#: addons/goto/events/class_DaemonEvent_notify.inc:47 +msgid "Send message" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_notify.inc:100 +msgid "From" +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:49 +msgid "" +"This dialog shows all available targets for your event, check the targets " +"you want to add and use the 'Use' button to accept." +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:65 +msgid "Display users" +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:66 +msgid "Display groups" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:31 +msgid "Reload fai server db" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:28 +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:29 +msgid "Installation activation" +msgstr "" + +#: addons/goto/events/DaemonEvent_activate.tpl:9 +msgid "Time schedule" +msgstr "" + +#: addons/goto/events/DaemonEvent_reinstall.tpl:39 +msgid "Progress" +msgstr "" + +#: addons/goto/class_goto_import_file.inc:90 +msgid "" +"Selected entries will be skipped because of errors. Do you want to proceed?" +msgstr "" + +#: addons/goto/class_goto_import_file.inc:131 +#, php-format +msgid "Import complete: %s events successfully send, %s failed" +msgstr "" + +#: personal/environment/class_environment.inc:9 +#: personal/environment/class_environment.inc:433 +#: personal/environment/class_environment.inc:434 +#: personal/environment/class_environment.inc:442 +#: personal/environment/class_environment.inc:443 +#: personal/environment/class_environment.inc:446 +#: personal/environment/class_environment.inc:447 +#: personal/environment/class_environment.inc:450 +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:473 +#: personal/environment/class_environment.inc:474 +#: personal/environment/class_environment.inc:478 +#: personal/environment/class_environment.inc:479 +#: personal/environment/class_environment.inc:482 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1766 +msgid "Environment" +msgstr "" + +#: personal/environment/class_environment.inc:139 +#, php-format +msgid "Device '%s' is not available anymore. It will be removed!" +msgstr "" + +#: personal/environment/class_environment.inc:212 +msgid "auto" +msgstr "" + +#: personal/environment/class_environment.inc:234 +#, php-format +msgid "Cannot open file '%s'!" +msgstr "" + +#: personal/environment/class_environment.inc:271 +#: personal/environment/class_environment.inc:272 +msgid "disabled" +msgstr "" + +#: personal/environment/class_environment.inc:307 +#, php-format +msgid "" +"Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk " +"profile will be disabled!" +msgstr "" + +#: personal/environment/class_environment.inc:360 +#, php-format +msgid "Profile server '%s' is not available anymore. Switched to server '%s'." +msgstr "" + +#: personal/environment/class_environment.inc:364 +#, php-format +msgid "" +"Profile server '%s' is not available anymore. Kiosk profile will be disabled." +msgstr "" + +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1148 +msgid "POSIX" +msgstr "" + +#: personal/environment/class_environment.inc:583 +#: personal/environment/environment.tpl:246 +msgid "Logon scripts" +msgstr "" + +#: personal/environment/class_environment.inc:673 +msgid "Share" +msgstr "" + +#: personal/environment/class_environment.inc:763 +#: personal/environment/environment.tpl:257 +#: personal/environment/environment.tpl:303 +msgid "Used by all users" +msgstr "" + +#: personal/environment/class_environment.inc:766 +#: personal/environment/environment.tpl:259 +#: personal/environment/environment.tpl:305 +msgid "Used by some users" +msgstr "" + +#: personal/environment/class_environment.inc:779 +#: personal/environment/class_environment.inc:780 +#: personal/environment/class_environment.inc:789 +#: personal/environment/class_environment.inc:790 +msgid "Reset password hash" +msgstr "" + +#: personal/environment/class_environment.inc:794 +msgid "Delete share entry" +msgstr "" + +#: personal/environment/class_environment.inc:988 +msgid "Cannot set default printer flag for groups!" +msgstr "" + +#: personal/environment/class_environment.inc:1141 +#: personal/environment/class_environment.inc:1711 +#: personal/environment/class_environment.inc:1780 +msgid "Profile quota" +msgstr "" + +#: personal/environment/class_environment.inc:1148 +msgid "environment" +msgstr "" + +#: personal/environment/class_environment.inc:1329 +msgid "group share" +msgstr "" + +#: personal/environment/class_environment.inc:1363 +msgid "Administrator" +msgstr "" + +#: personal/environment/class_environment.inc:1368 +msgid "Default printer" +msgstr "" + +#: personal/environment/class_environment.inc:1767 +msgid "Environment settings" +msgstr "" + +#: personal/environment/class_environment.inc:1771 +msgid "My account" +msgstr "" + +#: personal/environment/class_environment.inc:1775 +msgid "Command to extend the list of possible screen resolutions" +msgstr "" + +#: personal/environment/class_environment.inc:1779 +msgid "Profile server" +msgstr "" + +#: personal/environment/class_environment.inc:1781 +#: personal/environment/environment.tpl:41 +#: personal/environment/environment.tpl:106 +msgid "Cache profile localy" +msgstr "" + +#: personal/environment/class_environment.inc:1785 +#: personal/environment/environment.tpl:174 +msgid "Resolution changeable during session" +msgstr "" + +#: personal/environment/class_environment.inc:1787 +#: personal/environment/logonManagement.tpl:56 +msgid "Logon script" +msgstr "" + +#: personal/environment/environment.tpl:3 +msgid "The environment extension is currently disabled." +msgstr "" + +#: personal/environment/environment.tpl:11 +msgid "Profiles" +msgstr "" + +#: personal/environment/environment.tpl:14 +#: personal/environment/environment.tpl:207 +#: personal/environment/environment.tpl:288 +msgid "Environment managment settings" +msgstr "" + +#: personal/environment/environment.tpl:22 +#: personal/environment/environment.tpl:55 +msgid "Use profile managment" +msgstr "" + +#: personal/environment/environment.tpl:26 +#: personal/environment/environment.tpl:65 +msgid "Profil path" +msgstr "" + +#: personal/environment/environment.tpl:36 +#: personal/environment/environment.tpl:95 +msgid "MB" +msgstr "" + +#: personal/environment/environment.tpl:47 +msgid "Profile managment" +msgstr "" + +#: personal/environment/environment.tpl:62 +msgid "Profile server managment" +msgstr "" + +#: personal/environment/environment.tpl:89 +msgid "Profil quota" +msgstr "" + +#: personal/environment/environment.tpl:120 +msgid "Kiosk profile settings" +msgstr "" + +#: personal/environment/environment.tpl:145 +msgid "Profile" +msgstr "" + +#: personal/environment/environment.tpl:164 +msgid "Manage" +msgstr "" + +#: personal/environment/environment.tpl:222 +msgid "User used to connect to the share" +msgstr "" + +#: personal/environment/environment.tpl:225 +msgid "Select a share" +msgstr "" + +#: personal/environment/environment.tpl:233 +msgid "Mount path" +msgstr "" + +#: personal/environment/environment.tpl:248 +#: personal/environment/logonManagement.tpl:1 +#: personal/environment/logonManagement.tpl:5 +msgid "Logon script management" +msgstr "" + +#: personal/environment/environment.tpl:295 +msgid "Hotplug device settings" +msgstr "" + +#: personal/environment/environment.tpl:342 +msgid "" +"Using this option will overwrite the complete printer settings for all " +"currently edited objects!" +msgstr "" + +#: personal/environment/environment.tpl:343 +#: personal/environment/environment.tpl:376 +msgid "Printer settings" +msgstr "" + +#: personal/environment/environment.tpl:360 +#: personal/environment/environment.tpl:393 +msgid "Toggle admin" +msgstr "" + +#: personal/environment/environment.tpl:363 +#: personal/environment/environment.tpl:396 +msgid "Toggle default" +msgstr "" + +#: personal/environment/class_logonManagementDialog.inc:107 +#: personal/environment/logonManagement.tpl:10 +msgid "Script name" +msgstr "" + +#: personal/environment/main.inc:134 +msgid "User environment settings" +msgstr "" + +#: personal/environment/class_selectPrinterDialog.inc:107 +msgid "Please select a printer!" +msgstr "" + +#: personal/environment/class_hotplugDialog.inc:64 +msgid "Please select a hotplug device!" +msgstr "" + +#: personal/environment/selectPrinterDialog.tpl:1 +msgid "Add printer devices" +msgstr "" + +#: personal/environment/selectPrinterDialog.tpl:48 +msgid "Display printers matching" +msgstr "" + +#: personal/environment/selectPrinterDialog.tpl:53 +msgid "Regular expression for matching printer names" +msgstr "" + +#: personal/environment/logonManagement.tpl:8 +msgid "Logon script settings" +msgstr "" + +#: personal/environment/logonManagement.tpl:24 +msgid "Priority" +msgstr "" + +#: personal/environment/logonManagement.tpl:34 +msgid "Logon script flags" +msgstr "" + +#: personal/environment/logonManagement.tpl:38 +msgid "Last script" +msgstr "" + +#: personal/environment/logonManagement.tpl:44 +msgid "Script can be replaced by user" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:1 +msgid "Add hotplug devices" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:5 +msgid "Hotplug management" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:10 +msgid "Select hotplug device to add" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:48 +msgid "Regular expression for matching hotplugs" +msgstr "" diff --git a/trunk/gosa-plugins/goto/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/goto/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..80c843418 --- /dev/null +++ b/trunk/gosa-plugins/goto/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,7458 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:31+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/ogroups/goto/termgroup.tpl:2 admin/devices/remove.tpl:2 +#: admin/applications/remove.tpl:2 admin/mimetypes/remove.tpl:2 +#: admin/systems/ppd/remove_ppd.tpl:2 addons/goto/remove.tpl:2 +#: personal/environment/class_environment.inc:139 +#: personal/environment/class_environment.inc:307 +#: personal/environment/class_environment.inc:360 +#: personal/environment/class_environment.inc:364 +msgid "Warning" +msgstr "Waarschuwing" + +#: admin/ogroups/goto/termgroup.tpl:2 +msgid "" +"Actions you choose here influence all systems in this object group. " +"Additionally, all values editable here can be inherited by the clients " +"assigned to this object group." +msgstr "" +"De acties die u hier kiest, beinvloeden alle systemen in deze objectgroep. " +"Daarnaast kunnen alle hier bewerkbare waardes overerfd worden door terminal " +"clients die aan deze objectgroep worden toegekend." + +#: admin/ogroups/goto/termgroup.tpl:6 +#: admin/devices/class_deviceGeneric.inc:251 +#: admin/applications/class_applicationGeneric.inc:597 +#: admin/mimetypes/generic.tpl:4 admin/mimetypes/paste_generic.tpl:4 +#: admin/mimetypes/class_mimetypeGeneric.inc:715 +#: admin/systems/goto/class_printGeneric.inc:920 +#: admin/systems/goto/class_workstationGeneric.inc:698 +msgid "Generic" +msgstr "Algemeen" + +#: admin/ogroups/goto/termgroup.tpl:14 +#: admin/ogroups/goto/class_termgroup.inc:145 +#: admin/systems/goto/workstation.tpl:95 +#: admin/systems/goto/class_workstationGeneric.inc:489 +#: admin/systems/goto/class_terminalGeneric.inc:480 +#: admin/systems/goto/terminal.tpl:117 +msgid "NTP server" +msgstr "NTP tijdserver" + +#: admin/ogroups/goto/termgroup.tpl:17 admin/systems/goto/workstation.tpl:98 +#: admin/systems/goto/terminal.tpl:120 +msgid "Choose server to use for synchronizing time" +msgstr "Selecteer de server die gebruikt wordt voor tijdsynchronisatie" + +#: admin/ogroups/goto/termgroup.tpl:47 +#: admin/ogroups/goto/class_termgroup.inc:378 +#: admin/systems/goto/workstation.tpl:55 +#: admin/systems/goto/class_terminalGeneric.inc:669 +#: admin/systems/goto/terminal.tpl:47 +msgid "Mode" +msgstr "Modus" + +#: admin/ogroups/goto/termgroup.tpl:50 admin/systems/goto/workstation.tpl:58 +#: admin/systems/goto/terminal.tpl:50 +msgid "Select terminal mode" +msgstr "Selecteer terminal modus" + +#: admin/ogroups/goto/termgroup.tpl:58 +#: admin/ogroups/goto/class_termgroup.inc:379 +#: admin/systems/services/syslog/class_goSyslogServer.inc:27 +#: admin/systems/services/syslog/class_goSyslogServer.inc:47 +#: admin/systems/goto/workstation.tpl:65 +#: admin/systems/goto/class_workstationGeneric.inc:712 +#: admin/systems/goto/terminal.tpl:57 +msgid "Syslog server" +msgstr "Syslog server" + +#: admin/ogroups/goto/termgroup.tpl:61 admin/systems/goto/workstation.tpl:68 +#: admin/systems/goto/terminal.tpl:60 +msgid "Choose server to use for logging" +msgstr "Selecteer de server die gebruikt wordt voor log doeleinden" + +#: admin/ogroups/goto/termgroup.tpl:69 +#: admin/ogroups/goto/class_termgroup.inc:382 +#: admin/systems/goto/class_terminalGeneric.inc:672 +#: admin/systems/goto/terminal.tpl:76 +msgid "Root server" +msgstr "Root server" + +#: admin/ogroups/goto/termgroup.tpl:72 admin/systems/goto/terminal.tpl:79 +msgid "Select NFS root filesystem to use" +msgstr "Selecteer het te gebruiken NFS root bestandssysteem" + +#: admin/ogroups/goto/termgroup.tpl:79 +#: admin/ogroups/goto/class_termgroup.inc:383 +#: admin/systems/goto/class_terminalGeneric.inc:673 +#: admin/systems/goto/terminal.tpl:86 +msgid "Swap server" +msgstr "Swap server" + +#: admin/ogroups/goto/termgroup.tpl:82 admin/systems/goto/terminal.tpl:89 +msgid "Choose NFS filesystem to place swap files on" +msgstr "Kies het NFS bestandssysteem waarop de swapbestanden geplaatst worden" + +#: admin/ogroups/goto/termgroup.tpl:110 admin/systems/goto/workstation.tpl:130 +#: admin/systems/goto/terminal.tpl:156 addons/goto/class_gotomasses.inc:415 +msgid "Action" +msgstr "Actie" + +#: admin/ogroups/goto/termgroup.tpl:115 admin/systems/goto/workstation.tpl:137 +#: admin/systems/goto/terminal.tpl:161 +msgid "Select action to execute for this terminal" +msgstr "Selecteer de voor deze terminal uit te voeren actie" + +#: admin/ogroups/goto/termgroup.tpl:123 admin/applications/generic.tpl:24 +#: admin/applications/class_applicationGeneric.inc:438 +#: admin/applications/class_applicationGeneric.inc:609 +#: admin/systems/goto/workstation.tpl:146 +#: admin/systems/goto/workstation.tpl:150 admin/systems/goto/terminal.tpl:169 +#: addons/goto/class_gotomasses.inc:383 +msgid "Execute" +msgstr "Commando" + +#: admin/ogroups/goto/class_termgroup.inc:48 +#: admin/systems/goto/class_workstationGeneric.inc:138 +#: admin/systems/goto/class_terminalGeneric.inc:122 +msgid "Activated" +msgstr "Geactiveerd" + +#: admin/ogroups/goto/class_termgroup.inc:49 +#: admin/systems/goto/class_workstationGeneric.inc:139 +#: admin/systems/goto/class_terminalGeneric.inc:121 +#: addons/goto/class_gotomasses.inc:538 +msgid "Locked" +msgstr "Geblokkeerd" + +#: admin/ogroups/goto/class_termgroup.inc:95 +#: admin/systems/goto/class_terminalGeneric.inc:281 +#, fuzzy +msgid "Local swap" +msgstr "Naam van de locatie" + +#: admin/ogroups/goto/class_termgroup.inc:101 +#: admin/ogroups/goto/class_termgroup.inc:113 +#: admin/systems/goto/class_terminalStartup.inc:116 +#: admin/systems/goto/class_terminalStartup.inc:120 +#: admin/systems/goto/class_terminalService.inc:175 +#: admin/systems/goto/class_terminalService.inc:256 +#: admin/systems/goto/class_terminalService.inc:264 +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_terminalService.inc:270 +#: admin/systems/goto/class_terminalService.inc:273 +#: admin/systems/goto/class_terminalService.inc:276 +#: admin/systems/goto/class_terminalService.inc:279 +#: admin/systems/goto/class_terminalService.inc:282 +#: admin/systems/goto/class_workstationGeneric.inc:154 +#: admin/systems/goto/class_workstationStartup.inc:180 +#: admin/systems/goto/class_workstationStartup.inc:210 +#: admin/systems/goto/class_workstationService.inc:191 +#: admin/systems/goto/class_workstationService.inc:194 +#: admin/systems/goto/class_workstationService.inc:197 +#: admin/systems/goto/class_workstationService.inc:200 +#: admin/systems/goto/class_workstationService.inc:203 +#: admin/systems/goto/class_workstationService.inc:206 +#: admin/systems/goto/class_workstationService.inc:209 +#: admin/systems/goto/class_workstationService.inc:220 +#: admin/systems/goto/class_workstationService.inc:221 +#: admin/systems/goto/class_workstationService.inc:222 +#: admin/systems/goto/class_workstationService.inc:223 +#: admin/systems/goto/class_workstationService.inc:224 +#: admin/systems/goto/class_workstationService.inc:225 +#: admin/systems/goto/class_workstationService.inc:226 +#: admin/systems/goto/class_terminalGeneric.inc:137 +#: admin/systems/goto/class_terminalGeneric.inc:287 +#: admin/systems/goto/class_terminalGeneric.inc:299 +msgid "inherited" +msgstr "overerfd" + +#: admin/ogroups/goto/class_termgroup.inc:203 +#: admin/systems/goto/class_terminalService.inc:666 +#: admin/systems/goto/class_workstationGeneric.inc:212 +#: admin/systems/goto/class_workstationGeneric.inc:635 +#: admin/systems/goto/class_workstationStartup.inc:926 +#: admin/systems/goto/class_workstationStartup.inc:1053 +#: admin/systems/goto/class_workstationStartup.inc:1113 +#: admin/systems/goto/class_workstationService.inc:554 +#: admin/systems/goto/class_terminalGeneric.inc:187 +#: admin/systems/goto/class_terminalGeneric.inc:594 +#: addons/goto/class_gotomasses.inc:328 +#: addons/goto/class_goto_import_file.inc:124 +#, fuzzy +msgid "Service infrastructure" +msgstr "Zoek binnen subtree" + +#: admin/ogroups/goto/class_termgroup.inc:207 +#: admin/systems/goto/class_workstationGeneric.inc:216 +#: admin/systems/goto/class_terminalGeneric.inc:191 +#, fuzzy +msgid "Event error" +msgstr "Fout" + +#: admin/ogroups/goto/class_termgroup.inc:208 +#: admin/systems/goto/class_workstationGeneric.inc:217 +#: admin/systems/goto/class_terminalGeneric.inc:192 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:265 +#: addons/goto/events/class_DaemonEvent_halt.inc:31 +#: addons/goto/events/class_DaemonEvent_halt.inc:32 +msgid "Switch off" +msgstr "Uitschakelen" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:266 +#: addons/goto/events/class_DaemonEvent_reboot.inc:29 +#: addons/goto/events/class_DaemonEvent_reboot.inc:30 +msgid "Reboot" +msgstr "Herstarten" + +#: admin/ogroups/goto/class_termgroup.inc:258 +msgid "Instant update" +msgstr "Onmiddelijk bijwerken" + +#: admin/ogroups/goto/class_termgroup.inc:259 +msgid "Scheduled update" +msgstr "Geplande bijwerking" + +#: admin/ogroups/goto/class_termgroup.inc:260 +#, fuzzy +msgid "Wake" +msgstr "Aanzetten" + +#: admin/ogroups/goto/class_termgroup.inc:261 +#: admin/systems/goto/class_workstationGeneric.inc:300 +#: admin/systems/goto/class_workstationGeneric.inc:308 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:32 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:33 +msgid "Reinstall" +msgstr "Herinstalleer" + +#: admin/ogroups/goto/class_termgroup.inc:262 +#: admin/systems/goto/class_workstationGeneric.inc:301 +#: addons/goto/events/class_DaemonEvent_rescan.inc:28 +#: addons/goto/events/class_DaemonEvent_rescan.inc:29 +msgid "Rescan hardware" +msgstr "Hardware opnieuw scannen" + +#: admin/ogroups/goto/class_termgroup.inc:263 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:28 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:29 +msgid "Memory test" +msgstr "Geheugentest" + +#: admin/ogroups/goto/class_termgroup.inc:264 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:28 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:29 +msgid "System analysis" +msgstr "Systeem analyse" + +#: admin/ogroups/goto/class_termgroup.inc:362 +#: admin/groups/apps/class_groupApplication.inc:649 +#: admin/groups/apps/class_groupApplication.inc:1330 +#: admin/groups/apps/class_groupApplication.inc:1344 +#: admin/groups/apps/class_groupApplication.inc:1358 +#: admin/devices/class_deviceGeneric.inc:196 +#: admin/applications/class_applicationParameters.inc:161 +#: admin/applications/class_applicationParameters.inc:224 +#: admin/applications/class_applicationGeneric.inc:271 +#: admin/applications/class_applicationGeneric.inc:285 +#: admin/applications/class_applicationGeneric.inc:515 +#: admin/mimetypes/class_mimetypeGeneric.inc:494 +#: admin/mimetypes/class_mimetypeGeneric.inc:506 +#: admin/mimetypes/class_mimetypeGeneric.inc:521 +#: admin/systems/services/kiosk/class_goKioskService.inc:249 +#: admin/systems/services/ldap/class_goLdapServer.inc:117 +#: admin/systems/services/ntp/class_goNtpServer.inc:98 +#: admin/systems/services/terminal/class_goTerminalServer.inc:103 +#: admin/systems/services/shares/class_goShareServer.inc:192 +#: admin/systems/services/shares/class_goShareServer.inc:261 +#: admin/systems/services/shares/class_goShareServer.inc:277 +#: admin/systems/services/shares/class_goShareServer.inc:290 +#: admin/systems/goto/class_printGeneric.inc:601 +#: admin/systems/goto/class_printGeneric.inc:885 +#: admin/systems/goto/class_terminalStartup.inc:455 +#: admin/systems/goto/class_ArpNewDevice.inc:69 +#: admin/systems/goto/class_terminalService.inc:590 +#: admin/systems/goto/class_workstationGeneric.inc:364 +#: admin/systems/goto/class_workstationGeneric.inc:596 +#: admin/systems/goto/class_workstationGeneric.inc:613 +#: admin/systems/goto/class_workstationStartup.inc:877 +#: admin/systems/goto/class_workstationService.inc:447 +#: admin/systems/goto/class_terminalGeneric.inc:353 +#: admin/systems/goto/class_terminalGeneric.inc:580 +#: personal/environment/class_environment.inc:1058 +#: personal/environment/class_environment.inc:1315 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: admin/ogroups/goto/class_termgroup.inc:370 +msgid "System" +msgstr "Systeem" + +#: admin/ogroups/goto/class_termgroup.inc:371 +#, fuzzy +msgid "System group" +msgstr "Systeem status" + +#: admin/ogroups/goto/class_termgroup.inc:380 +#: admin/systems/goto/class_workstationGeneric.inc:716 +#: admin/systems/goto/class_terminalGeneric.inc:678 +#, fuzzy +msgid "Action flag" +msgstr "Actie" + +#: admin/ogroups/goto/class_termgroup.inc:381 +#: admin/systems/goto/class_workstationGeneric.inc:713 +#, fuzzy +msgid "Ntp server" +msgstr "NTP tijdserver" + +#: admin/groups/apps/edit_entry.tpl:8 +#, fuzzy +msgid "Folder image" +msgstr "Karakterset" + +#: admin/groups/apps/edit_entry.tpl:12 +msgid "Could not load image." +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:14 +#: admin/systems/goto/class_gotoLpdEnabled.inc:58 +#, fuzzy +msgid "None" +msgstr "geen" + +#: admin/groups/apps/edit_entry.tpl:24 +#, fuzzy +msgid "Upload image" +msgstr "Uploaden" + +#: admin/groups/apps/edit_entry.tpl:28 admin/applications/generic.tpl:142 +#: admin/systems/ppd/printerPPDDialog.tpl:21 +#: addons/goto/goto_import_file.tpl:25 +msgid "Upload" +msgstr "Uploaden" + +#: admin/groups/apps/edit_entry.tpl:32 +msgid "Reset image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:33 +#, fuzzy +msgid "Reset" +msgstr "stel in" + +#: admin/groups/apps/edit_entry.tpl:40 +#: admin/applications/class_applicationGeneric.inc:557 +msgid "Application settings" +msgstr "Programma instellingen" + +#: admin/groups/apps/edit_entry.tpl:43 +#: admin/devices/class_deviceGeneric.inc:90 +#: admin/devices/class_deviceGeneric.inc:114 +#: admin/devices/class_deviceGeneric.inc:260 +#: admin/applications/class_applicationParameters.inc:193 +#: admin/applications/class_applicationGeneric.inc:430 +#: admin/applications/class_applicationGeneric.inc:434 +#: admin/applications/class_applicationGeneric.inc:606 +#: admin/applications/class_applicationGeneric.inc:610 +#: admin/mimetypes/class_mimetypeGeneric.inc:532 +#: admin/mimetypes/class_mimetypeGeneric.inc:724 +#: admin/systems/services/shares/class_goShareServer.inc:398 +#: admin/systems/services/nfs/class_servNfs.inc:199 +#: admin/systems/services/nfs/class_servNfs.inc:202 +#: admin/systems/services/nfs/class_servNfs.inc:235 +#: admin/systems/services/nfs/servnfs.tpl:9 +#: admin/systems/goto/class_printGeneric.inc:670 +#: admin/systems/goto/class_printGeneric.inc:675 +#: admin/systems/goto/class_printGeneric.inc:694 +#: admin/systems/goto/class_printGeneric.inc:929 +#: admin/systems/goto/class_ArpNewDevice.inc:46 +#: admin/systems/goto/class_workstationGeneric.inc:456 +#: admin/systems/goto/class_workstationGeneric.inc:461 +#: admin/systems/goto/class_workstationGeneric.inc:479 +#: admin/systems/goto/class_terminalGeneric.inc:446 +#: admin/systems/goto/class_terminalGeneric.inc:451 +#: admin/systems/goto/class_terminalGeneric.inc:470 +#: admin/systems/goto/class_terminalGeneric.inc:665 +#: personal/environment/class_logonManagementDialog.inc:103 +msgid "Name" +msgstr "Naam" + +#: admin/groups/apps/edit_entry.tpl:53 +msgid "Application options" +msgstr "Programma opties" + +#: admin/groups/apps/class_groupApplication.inc:381 +#: admin/groups/apps/class_groupApplication.inc:385 +#, fuzzy +msgid "Menu" +msgstr "Printer" + +#: admin/groups/apps/class_groupApplication.inc:439 +msgid "Back" +msgstr "Terug" + +#: admin/groups/apps/class_groupApplication.inc:450 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:147 +msgid "back" +msgstr "terug" + +#: admin/groups/apps/class_groupApplication.inc:458 +msgid "department" +msgstr "afdeling" + +#: admin/groups/apps/class_groupApplication.inc:481 +#: admin/applications/class_applicationManagement.inc:368 +#: admin/applications/class_applicationManagement.inc:449 +#: admin/applications/class_applicationGeneric.inc:127 +msgid "application" +msgstr "programma" + +#: admin/groups/apps/class_groupApplication.inc:1146 +msgid "Not available in release." +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1373 +#: admin/applications/class_applicationManagement.inc:24 +#: admin/mimetypes/generic.tpl:117 admin/mimetypes/generic.tpl:177 +msgid "Applications" +msgstr "Programma's" + +#: admin/groups/apps/class_groupApplication.inc:1374 +#, fuzzy +msgid "Group applications" +msgstr "Toon programma's" + +#: admin/groups/apps/class_groupApplication.inc:1381 +#: admin/applications/class_divListApplication.inc:114 +#: admin/applications/class_divListApplication.inc:150 +#: admin/applications/class_applicationGeneric.inc:603 +#: admin/mimetypes/class_mimetypeGeneric.inc:728 +msgid "Application" +msgstr "Programma" + +#: admin/groups/apps/class_groupApplication.inc:1382 +#: admin/groups/apps/app_list.tpl:5 admin/groups/apps/app_list.tpl:53 +#: admin/systems/goto/workstationStartup.tpl:83 +#: admin/systems/goto/workstationStartup.tpl:123 +msgid "Release" +msgstr "Distributie versie" + +#: admin/groups/apps/class_groupApplication.inc:1383 +#, fuzzy +msgid "Application parameter" +msgstr "Programmanaam" + +#: admin/groups/apps/app_list.tpl:11 +#, fuzzy +msgid "Copy menu" +msgstr "kopieer" + +#: admin/groups/apps/app_list.tpl:13 +msgid "Paste menu from" +msgstr "" + +#: admin/groups/apps/app_list.tpl:17 +#, fuzzy +msgid "Delete menu" +msgstr "Verwijder invoer" + +#: admin/groups/apps/app_list.tpl:70 admin/groups/apps/app_list.tpl:74 +#, fuzzy +msgid "Folder" +msgstr "Filters" + +#: admin/groups/apps/app_list.tpl:82 admin/groups/apps/app_list.tpl:103 +#: admin/groups/apps/app_list.tpl:128 addons/goto/class_gotomasses.inc:432 +msgid "Move up" +msgstr "Omhoog verplaatsen" + +#: admin/groups/apps/app_list.tpl:84 admin/groups/apps/app_list.tpl:105 +#: admin/groups/apps/app_list.tpl:130 addons/goto/class_gotomasses.inc:434 +msgid "Move down" +msgstr "Omlaag verplaatsen" + +#: admin/groups/apps/app_list.tpl:86 admin/groups/apps/app_list.tpl:107 +#: admin/groups/apps/app_list.tpl:132 +#: admin/devices/class_divListDevices.inc:100 +#: admin/applications/class_applicationParameters.inc:125 +#: admin/applications/class_divListApplication.inc:120 +#: admin/mimetypes/class_divListMimeTypes.inc:122 +#: admin/systems/goto/terminalService.tpl:212 +#: admin/systems/goto/terminalStartup.tpl:115 +#: admin/systems/goto/workstationStartup.tpl:233 +#: admin/systems/goto/printer.tpl:71 addons/goto/class_gotomasses.inc:269 +#: addons/goto/class_gotomasses.inc:376 addons/goto/class_gotomasses.inc:484 +#: addons/goto/class_gotomasses.inc:488 +#: addons/goto/events/class_DaemonEvent.inc:230 +#: personal/environment/environment.tpl:238 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/groups/apps/app_list.tpl:88 admin/groups/apps/app_list.tpl:134 +#: admin/systems/services/shares/goShareServer.tpl:17 +#: admin/systems/goto/printer.tpl:68 addons/goto/class_gotomasses.inc:469 +#: personal/environment/environment.tpl:274 +msgid "Edit" +msgstr "Bewerken" + +#: admin/groups/apps/app_list.tpl:121 +#, fuzzy +msgid "Entry" +msgstr "Invoer bewerken" + +#: admin/groups/apps/app_list.tpl:143 +#, fuzzy +msgid "add to" +msgstr "Optie toevoegen" + +#: admin/groups/apps/app_list.tpl:149 admin/groups/apps/app_list.tpl:159 +#, fuzzy +msgid "Add selected applications to this folder." +msgstr "Het geselecteerde programma heeft geen opties." + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Separator" +msgstr "Scheidingsteken invoegen" + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Add a separator to this folder." +msgstr "Het geselecteerde programma heeft geen opties." + +#: admin/devices/class_divListDevices.inc:33 +#: admin/devices/class_divListDevices.inc:34 +#, fuzzy +msgid "List of defined devices" +msgstr "Lijst met apparaten" + +#: admin/devices/class_divListDevices.inc:45 +#: admin/applications/class_divListApplication.inc:45 +#: admin/mimetypes/class_divListMimeTypes.inc:45 +#, fuzzy +msgid "Select all" +msgstr "Selecteer" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/devices/deviceGeneric.tpl:20 admin/devices/paste_deviceGeneric.tpl:9 +msgid "Device name" +msgstr "Apparaat naam" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/applications/class_divListApplication.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +msgid "Department" +msgstr "Afdeling" + +#: admin/devices/class_divListDevices.inc:52 +#: admin/devices/class_divListDevices.inc:87 +#: admin/applications/class_divListApplication.inc:52 +#: admin/applications/class_divListApplication.inc:107 +#: admin/mimetypes/class_divListMimeTypes.inc:52 +#: admin/mimetypes/class_divListMimeTypes.inc:109 +#: addons/goto/class_gotomasses.inc:365 +msgid "Actions" +msgstr "Acties" + +#: admin/devices/class_divListDevices.inc:58 +msgid "Display devices matching" +msgstr "Toon overeenkomende apparaten" + +#: admin/devices/class_divListDevices.inc:82 admin/devices/deviceGeneric.tpl:9 +#: admin/devices/class_deviceGeneric.inc:261 admin/applications/generic.tpl:42 +#: admin/applications/class_divListApplication.inc:90 +#: admin/applications/class_applicationGeneric.inc:607 +#: admin/mimetypes/generic.tpl:44 +#: admin/mimetypes/class_divListMimeTypes.inc:93 +#: admin/mimetypes/class_mimetypeGeneric.inc:727 +#: admin/systems/services/ldap/class_goLdapServer.inc:79 +#: admin/systems/services/ldap/class_goLdapServer.inc:82 +#: admin/systems/goto/workstation.tpl:35 +#: admin/systems/goto/class_printGeneric.inc:930 +#: admin/systems/goto/class_workstationGeneric.inc:710 +#: admin/systems/goto/class_terminalGeneric.inc:667 +#: admin/systems/goto/printer.tpl:27 admin/systems/goto/terminal.tpl:27 +#: addons/goto/class_target_list.inc:152 addons/goto/goto_import_file.tpl:41 +#: addons/goto/events/class_EventTargetAddList.inc:161 +#: addons/goto/events/class_EventTargetAddUsersList.inc:130 +msgid "Base" +msgstr "Basis" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit department" +msgstr "Verwerk afdeling" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit" +msgstr "Verwerk" + +#: admin/devices/class_divListDevices.inc:92 +#: admin/applications/class_divListApplication.inc:111 +#: admin/mimetypes/class_divListMimeTypes.inc:114 +#: admin/systems/goto/chooser.tpl:16 addons/goto/class_gotomasses.inc:366 +msgid "Create" +msgstr "Aanmaken" + +#: admin/devices/class_divListDevices.inc:94 +#: admin/devices/class_divListDevices.inc:131 +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/systems/goto/gotoLpdEnable.tpl:27 +#: admin/systems/goto/gotoLpdEnable.tpl:63 +msgid "Device" +msgstr "Apparaat" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "edit" +msgstr "Bewerk" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "Edit this entry" +msgstr "Bewerk deze invoer" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:136 +msgid "delete" +msgstr "Verwijder" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +msgid "Delete this entry" +msgstr "Verwijder deze invoer" + +#: admin/devices/class_divListDevices.inc:205 +#, fuzzy +msgid "Number of listed devices" +msgstr "Naam van de afdeling" + +#: admin/devices/class_divListDevices.inc:206 +#: admin/applications/class_divListApplication.inc:243 +#: admin/mimetypes/class_divListMimeTypes.inc:244 +#, fuzzy +msgid "Number of listed departments" +msgstr "Naam van de afdeling" + +#: admin/devices/remove.tpl:6 +#, fuzzy +msgid "" +"This may be used by several users/groups. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dit kan gebruikt worden door meerdere groepen. Verzeker uzelf ervan dat dit " +"is wat u wil, aangezien er geen mogelijkheid voor GOsa is om uw date terug " +"te halen." + +#: admin/devices/remove.tpl:9 admin/applications/remove.tpl:9 +#: admin/mimetypes/remove.tpl:9 addons/goto/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Indien u zeker bent drukt u dan 'Verwijderen' om door te gaan of 'Annuleren' " +"om te annuleren." + +#: admin/devices/deviceGeneric.tpl:2 admin/devices/paste_deviceGeneric.tpl:2 +#: admin/devices/class_deviceGeneric.inc:257 +msgid "Devices" +msgstr "Apparaten" + +#: admin/devices/deviceGeneric.tpl:29 admin/devices/class_deviceGeneric.inc:93 +#: admin/devices/class_deviceGeneric.inc:262 admin/applications/generic.tpl:33 +#: admin/applications/class_applicationGeneric.inc:608 +#: admin/mimetypes/generic.tpl:34 admin/mimetypes/paste_generic.tpl:21 +#: admin/mimetypes/class_mimetypeGeneric.inc:726 +#: admin/systems/services/shares/class_goShareServer.inc:400 +#: admin/systems/services/nfs/class_servNfs.inc:207 +#: admin/systems/services/nfs/servnfs.tpl:19 +#: admin/systems/goto/workstation.tpl:19 +#: admin/systems/goto/ArpNewDevice.tpl:17 +#: admin/systems/goto/class_printGeneric.inc:931 +#: admin/systems/goto/class_workstationGeneric.inc:708 +#: admin/systems/goto/class_terminalGeneric.inc:666 +#: admin/systems/goto/printer.tpl:16 admin/systems/goto/terminal.tpl:19 +#: addons/goto/class_gotomasses.inc:917 +#: personal/environment/class_logonManagementDialog.inc:111 +#: personal/environment/logonManagement.tpl:17 +msgid "Description" +msgstr "Omschrijving" + +#: admin/devices/deviceGeneric.tpl:38 +#, fuzzy +msgid "Device type" +msgstr "Apparaat naam" + +#: admin/devices/deviceGeneric.tpl:42 +#, fuzzy +msgid "Choose the device type" +msgstr "Kies een telefoontype" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "Serial number" +msgstr "Serienummer" + +#: admin/devices/deviceGeneric.tpl:53 +#, fuzzy +msgid "(iSerial)" +msgstr "Serieel" + +#: admin/devices/deviceGeneric.tpl:63 +#, fuzzy +msgid "Vendor-ID" +msgstr "Afzender ID" + +#: admin/devices/deviceGeneric.tpl:63 +#, fuzzy +msgid "(idVendor)" +msgstr "Afzender ID" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "Product-ID" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "(idProduct)" +msgstr "" + +#: admin/devices/main.inc:49 admin/devices/main.inc:51 +#, fuzzy +msgid "Hotplug device management" +msgstr "Hotplug beheer" + +#: admin/devices/class_deviceGeneric.inc:29 +msgid "Digital camera" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:30 +#, fuzzy +msgid "USB stick" +msgstr "sticky" + +#: admin/devices/class_deviceGeneric.inc:31 +msgid "CD/DVD drive" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:98 +#: admin/devices/class_deviceGeneric.inc:100 +#, fuzzy +msgid "iSerial" +msgstr "Serieel" + +#: admin/devices/class_deviceGeneric.inc:103 +#: admin/devices/class_deviceGeneric.inc:264 +#: admin/systems/goto/class_gotoLpdEnabled.inc:51 +#, fuzzy +msgid "Serial" +msgstr "Serieel" + +#: admin/devices/class_deviceGeneric.inc:106 +#, fuzzy +msgid "Vendor ID" +msgstr "Afzender ID" + +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/applications/class_applicationGeneric.inc:264 +#: admin/applications/class_applicationGeneric.inc:338 +#: admin/applications/class_applicationGeneric.inc:370 +#: admin/applications/class_applicationGeneric.inc:375 +#: admin/applications/class_applicationGeneric.inc:380 +#: admin/applications/class_applicationGeneric.inc:384 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: admin/systems/services/kiosk/class_goKioskService.inc:161 +#: admin/systems/services/kiosk/class_goKioskService.inc:164 +#: admin/systems/services/kiosk/class_goKioskService.inc:234 +#: admin/systems/services/shares/class_goShareServer.inc:98 +#: admin/systems/services/shares/class_goShareServer.inc:233 +#: admin/systems/services/nfs/class_servNfs.inc:43 +#: admin/systems/services/nfs/class_servNfs.inc:46 +#: admin/systems/goto/class_printGeneric.inc:435 +#: admin/systems/goto/class_printGeneric.inc:482 +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#: admin/systems/goto/class_printGeneric.inc:1008 +#: admin/systems/goto/class_printGeneric.inc:1019 +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:234 +#: admin/systems/goto/class_workstationStartup.inc:247 +#: admin/systems/goto/class_workstationStartup.inc:324 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#: addons/goto/class_gotoLogView.inc:57 addons/goto/class_gotoLogView.inc:175 +#: addons/goto/class_gotomasses.inc:174 addons/goto/class_gotomasses.inc:524 +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:691 +#: addons/goto/class_gotomasses.inc:735 addons/goto/class_gotomasses.inc:739 +#: addons/goto/class_gotomasses.inc:775 addons/goto/class_gotomasses.inc:816 +#: personal/environment/class_environment.inc:591 +#: personal/environment/class_environment.inc:673 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#: personal/environment/class_environment.inc:841 +#: personal/environment/class_environment.inc:892 +#: personal/environment/class_environment.inc:988 +msgid "Error" +msgstr "Fout" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Device generic" +msgstr "Servernaam" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Hotplug" +msgstr "Hotplug apparaten" + +#: admin/devices/class_deviceGeneric.inc:263 +#: admin/systems/services/shares/class_goShareServer.inc:401 +#: admin/systems/services/nfs/class_servNfs.inc:193 +#: admin/systems/services/nfs/servnfs.tpl:56 +#: admin/systems/goto/terminalService.tpl:48 +#: admin/systems/goto/terminalService.tpl:138 +#: admin/systems/goto/workstationService.tpl:54 +#: admin/systems/goto/workstationService.tpl:156 +#: admin/systems/goto/gotoLpdEnable.tpl:53 +msgid "Type" +msgstr "Type" + +#: admin/devices/class_deviceGeneric.inc:265 +#, fuzzy +msgid "Vendor" +msgstr "Afzender ID" + +#: admin/devices/class_deviceGeneric.inc:266 +#, fuzzy +msgid "Device ID" +msgstr "Apparaat" + +#: admin/devices/class_deviceManagement.inc:7 +#: personal/environment/class_environment.inc:1783 +#: personal/environment/environment.tpl:293 +msgid "Hotplug devices" +msgstr "Hotplug apparaten" + +#: admin/devices/class_deviceManagement.inc:8 +#, fuzzy +msgid "Manage hotplug devices" +msgstr "Hotplug apparaten toevoegen" + +#: admin/devices/class_deviceManagement.inc:246 +#: admin/applications/class_applicationManagement.inc:352 +#: admin/mimetypes/class_mimetypeManagement.inc:360 +#: addons/goto/class_gotomasses.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Rechten" + +#: admin/devices/class_deviceManagement.inc:263 +#: admin/devices/class_deviceManagement.inc:345 +#, fuzzy +msgid "device" +msgstr "Apparaat" + +#: admin/devices/class_deviceManagement.inc:296 +#: admin/devices/class_deviceManagement.inc:352 +#: admin/devices/class_deviceManagement.inc:381 +#: admin/applications/class_applicationManagement.inc:401 +#: admin/applications/class_applicationManagement.inc:456 +#: admin/applications/class_applicationManagement.inc:487 +#: admin/mimetypes/class_mimetypeManagement.inc:412 +#: admin/mimetypes/class_mimetypeManagement.inc:466 +#: admin/mimetypes/class_mimetypeManagement.inc:496 +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#: personal/environment/class_environment.inc:583 +#, fuzzy +msgid "Permission error" +msgstr "Rechten" + +#: admin/applications/remove.tpl:6 admin/mimetypes/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dit kan gebruikt worden door meerdere groepen. Verzeker uzelf ervan dat dit " +"is wat u wil, aangezien er geen mogelijkheid voor GOsa is om uw date terug " +"te halen." + +#: admin/applications/release_select.tpl:2 +#: admin/mimetypes/release_select.tpl:2 +msgid "Branches" +msgstr "Aftakkingen" + +#: admin/applications/release_select.tpl:8 +#: admin/mimetypes/release_select.tpl:8 +msgid "Current release" +msgstr "Huidige uitgave" + +#: admin/applications/class_applicationParameters.inc:53 +msgid "Remove options" +msgstr "Opties verwijderen" + +#: admin/applications/class_applicationParameters.inc:53 +#: admin/applications/class_applicationParameters.inc:55 +#, fuzzy +msgid "parameter" +msgstr "Parameters" + +#: admin/applications/class_applicationParameters.inc:55 +msgid "Create options" +msgstr "Opties aanmaken" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Variable" +msgstr "Variabele" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Default value" +msgstr "Standaard waarde" + +#: admin/applications/class_applicationParameters.inc:131 +msgid "Add option" +msgstr "Optie toevoegen" + +#: admin/applications/class_applicationParameters.inc:236 +msgid "Parameter" +msgstr "Parameters" + +#: admin/applications/class_applicationParameters.inc:237 +#, fuzzy +msgid "Parameter configuration" +msgstr "FAX database" + +#: admin/applications/class_applicationParameters.inc:245 +#, fuzzy +msgid "Application parameter settings" +msgstr "Programmanaam" + +#: admin/applications/generic.tpl:7 admin/applications/generic.tpl:10 +#: admin/applications/class_divListApplication.inc:51 +#: admin/applications/class_applicationGeneric.inc:561 +msgid "Application name" +msgstr "Programmanaam" + +#: admin/applications/generic.tpl:15 +msgid "Display name" +msgstr "Getoonde naam" + +#: admin/applications/generic.tpl:19 +#: admin/applications/class_applicationGeneric.inc:566 +msgid "Application name to be displayed (i.e. below icons)" +msgstr "Te tonen programma naam (bv. onder iconen)" + +#: admin/applications/generic.tpl:28 +msgid "Path and/or binary name of application" +msgstr "Directory en/of bestandsnaam van het programma" + +#: admin/applications/generic.tpl:45 admin/mimetypes/generic.tpl:47 +msgid "Choose subtree to place application in" +msgstr "Selecteer de subtree waaronder het programma geplaatst zal worden." + +#: admin/applications/generic.tpl:52 admin/mimetypes/generic.tpl:53 +#: admin/systems/goto/workstation.tpl:43 admin/systems/goto/printer.tpl:35 +#: admin/systems/goto/terminal.tpl:36 +msgid "Select a base" +msgstr "Selecteer een basis" + +#: admin/applications/generic.tpl:66 +#: admin/applications/class_applicationGeneric.inc:611 +#: admin/mimetypes/generic.tpl:67 +#: admin/mimetypes/class_mimetypeGeneric.inc:730 +msgid "Icon" +msgstr "Icoon" + +#: admin/applications/generic.tpl:82 admin/mimetypes/generic.tpl:84 +msgid "Update" +msgstr "Bijwerken" + +#: admin/applications/generic.tpl:82 +msgid "Reload picture from LDAP" +msgstr "Herlaad plaatje vanuit LDAP" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture" +msgstr "Plaatje verwijderen" + +#: admin/applications/generic.tpl:85 +#, fuzzy +msgid "Remove picture from LDAP" +msgstr "Herlaad plaatje vanuit LDAP" + +#: admin/applications/generic.tpl:96 +#: admin/systems/goto/class_gotoLpdEnabled.inc:156 +#: admin/systems/goto/gotoLpdEnable.tpl:79 +#: admin/systems/ppd/printerPPDDialog.tpl:28 +msgid "Options" +msgstr "Opties" + +#: admin/applications/generic.tpl:103 +#: admin/applications/class_applicationGeneric.inc:614 +msgid "Only executable for members" +msgstr "Alleen uitvoerbaar voor groepsleden" + +#: admin/applications/generic.tpl:108 +#: admin/applications/class_applicationGeneric.inc:618 +msgid "Replace user configuration on startup" +msgstr "Vervang gebruikers configuratie bij opstarten" + +#: admin/applications/generic.tpl:114 +#: admin/applications/class_applicationGeneric.inc:615 +msgid "Place icon on members desktop" +msgstr "Plaats icoon op de desktop van groepsleden" + +#: admin/applications/generic.tpl:119 +#: admin/applications/class_applicationGeneric.inc:617 +msgid "Place entry in members startmenu" +msgstr "Plaats programma in het startmenu van groepsleden" + +#: admin/applications/generic.tpl:124 +#: admin/applications/class_applicationGeneric.inc:616 +msgid "Place entry in members launch bar" +msgstr "Plaats invoer in snelstartbalk van groepsleden" + +#: admin/applications/generic.tpl:134 +#: personal/environment/logonManagement.tpl:55 +msgid "Script" +msgstr "Script" + +#: admin/applications/generic.tpl:139 addons/goto/goto_import_file.tpl:84 +#: addons/goto/class_gotomasses.inc:375 +#: addons/goto/class_goto_import_file.inc:29 +#: addons/goto/class_goto_import_file.inc:89 +#: addons/goto/class_goto_import_file.inc:131 +#: personal/environment/logonManagement.tpl:65 +msgid "Import" +msgstr "Importeren" + +#: admin/applications/generic.tpl:144 +msgid "Download" +msgstr "Downloaden" + +#: admin/applications/class_applicationManagement.inc:25 +#: personal/environment/class_environment.inc:10 +msgid "This does something" +msgstr "Dit doet iets" + +#: admin/applications/class_divListApplication.inc:25 +msgid "List of Applications" +msgstr "Lijst met programma's" + +#: admin/applications/class_divListApplication.inc:26 +msgid "This table displays all applications in the selected tree." +msgstr "Deze tabel toont alle programma's in de geselecteerde tree." + +#: admin/applications/class_divListApplication.inc:58 +#: personal/environment/hotplugDialog.tpl:43 +msgid "Display users matching" +msgstr "Toon overeenkomende gebruikers" + +#: admin/applications/class_divListApplication.inc:199 +#: admin/mimetypes/class_divListMimeTypes.inc:198 +msgid "Freezed" +msgstr "" + +#: admin/applications/class_divListApplication.inc:242 +#, fuzzy +msgid "Number of listed applications" +msgstr "Gebruikte programma's" + +#: admin/applications/main.inc:48 admin/applications/main.inc:50 +msgid "Application management" +msgstr "Programma beheer" + +#: admin/applications/class_applicationGeneric.inc:95 +msgid "no example" +msgstr "geen voorbeeld" + +#: admin/applications/class_applicationGeneric.inc:264 +#, fuzzy, php-format +msgid "Cannot remove application - it is still in use by these objects: %s" +msgstr "" +"U kunt deze bijlage niet verwijderen, aangezien deze nog steeds in gebruik " +"is door deze systemen: '%s'" + +#: admin/applications/class_applicationGeneric.inc:370 +#, fuzzy +msgid "no read permission" +msgstr "Rechten" + +#: admin/applications/class_applicationGeneric.inc:375 +msgid "cannot resize image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:380 +msgid "cannot convert image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:384 +#, fuzzy, php-format +msgid "cannot save image to '%s'" +msgstr "Kan bestand '%s' niet opslaan." + +#: admin/applications/class_applicationGeneric.inc:413 +#, fuzzy +msgid "Execute path" +msgstr "Commando" + +#: admin/applications/class_applicationGeneric.inc:598 +#, fuzzy +msgid "Application generic" +msgstr "Programmanaam" + +#: admin/applications/class_applicationGeneric.inc:612 +#, fuzzy +msgid "Script content" +msgstr "Variabele inhoud" + +#: admin/mimetypes/class_mimetypeManagement.inc:24 +#: admin/mimetypes/class_mimetypeGeneric.inc:721 +#, fuzzy +msgid "Mime types" +msgstr "MIME-type" + +#: admin/mimetypes/class_mimetypeManagement.inc:25 +#, fuzzy +msgid "Manage mime types" +msgstr "OS-types beheren" + +#: admin/mimetypes/class_mimetypeManagement.inc:378 +#: admin/mimetypes/class_mimetypeManagement.inc:459 +#: admin/mimetypes/generic.tpl:12 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:116 +#: admin/mimetypes/class_divListMimeTypes.inc:152 +#: admin/mimetypes/paste_generic.tpl:13 +#, fuzzy +msgid "Mime type" +msgstr "MIME-type" + +#: admin/mimetypes/generic.tpl:16 admin/mimetypes/paste_generic.tpl:16 +#, fuzzy +msgid "Please enter a name for the mime type here" +msgstr "Voer a.u.b. een naam voor de conferentie in." + +#: admin/mimetypes/generic.tpl:22 +#: admin/mimetypes/class_mimetypeGeneric.inc:725 +#, fuzzy +msgid "Mime group" +msgstr "Primaire groep" + +#: admin/mimetypes/generic.tpl:26 +#, fuzzy +msgid "Categorize this mime type" +msgstr "Categorie voor deze subtree" + +#: admin/mimetypes/generic.tpl:38 +#, fuzzy +msgid "Please specify a description" +msgstr "Geef a.u.b. een geldige scriptnaam op." + +#: admin/mimetypes/generic.tpl:69 admin/mimetypes/generic.tpl:72 +#, fuzzy +msgid "Mime icon" +msgstr "Primaire groep" + +#: admin/mimetypes/generic.tpl:85 +msgid "Update mime type icon" +msgstr "" + +#: admin/mimetypes/generic.tpl:99 +msgid "Left click" +msgstr "" + +#: admin/mimetypes/generic.tpl:104 +#: admin/mimetypes/class_mimetypeGeneric.inc:731 +#, fuzzy +msgid "File patterns" +msgstr "Filters" + +#: admin/mimetypes/generic.tpl:110 +#, fuzzy +msgid "Please specify a new file pattern" +msgstr "Geef a.u.b. een naam op." + +#: admin/mimetypes/generic.tpl:113 +msgid "Add a new file pattern" +msgstr "" + +#: admin/mimetypes/generic.tpl:129 admin/mimetypes/generic.tpl:189 +#, fuzzy +msgid "Enter an application name here" +msgstr "Programmanaam" + +#: admin/mimetypes/generic.tpl:132 admin/mimetypes/generic.tpl:193 +#, fuzzy +msgid "Add application" +msgstr "programma" + +#: admin/mimetypes/generic.tpl:143 +msgid "Embedding" +msgstr "" + +#: admin/mimetypes/generic.tpl:156 +msgid "Show file in embedded viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:163 +msgid "Show file in external viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:170 +msgid "Ask whether to save to local disk" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:27 +#: admin/mimetypes/class_divListMimeTypes.inc:28 +#, fuzzy +msgid "List of defined mime types" +msgstr "Lijst met voorgedefiniëerde blokkeerlijstn" + +#: admin/mimetypes/class_divListMimeTypes.inc:58 +#, fuzzy +msgid "Display mime types matching" +msgstr "Toon de overeenkomende cartridgetypes" + +#: admin/mimetypes/class_divListMimeTypes.inc:243 +#, fuzzy +msgid "Number of listed mimetypes" +msgstr "Lijst met voorgedefiniëerde blokkeerlijstn" + +#: admin/mimetypes/paste_generic.tpl:24 +#, fuzzy +msgid "Please specify a description for this mime type here" +msgstr "Geef a.u.b. een geldige naam op voor deze bijlage." + +#: admin/mimetypes/main.inc:48 admin/mimetypes/main.inc:50 +#, fuzzy +msgid "Mimetype management" +msgstr "Systeembeheer" + +#: admin/mimetypes/class_mimetypeGeneric.inc:535 +#, fuzzy +msgid "File pattern" +msgstr "Filters" + +#: admin/mimetypes/class_mimetypeGeneric.inc:716 +#, fuzzy +msgid "Mime type generic" +msgstr "MIME-type" + +#: admin/mimetypes/class_mimetypeGeneric.inc:729 +#, fuzzy +msgid "Left click action" +msgstr "Programma's aanmaken" + +#: admin/mimetypes/class_mimetypeGeneric.inc:732 +#, fuzzy +msgid "Embedded applications" +msgstr "Gebruikte programma's" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +msgid "Print Service" +msgstr "Print Service" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +#, fuzzy +msgid "enabled" +msgstr "gedeactiveerd" + +#: admin/systems/services/cups/class_goCupsServer.inc:27 +#: admin/systems/services/cups/class_goCupsServer.inc:48 +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/goto/info.tpl:124 +msgid "Print service" +msgstr "Print service" + +#: admin/systems/services/cups/class_goCupsServer.inc:68 +#, fuzzy +msgid "Cups" +msgstr "omhoog" + +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/services/shares/class_goShareServer.inc:390 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/cups/class_goCupsServer.inc:77 +#: admin/systems/services/syslog/class_goLogDBServer.inc:101 +#, fuzzy +msgid "Start" +msgstr "Opstarten" + +#: admin/systems/services/cups/class_goCupsServer.inc:78 +#: admin/systems/services/syslog/class_goLogDBServer.inc:102 +msgid "Stop" +msgstr "Stop" + +#: admin/systems/services/cups/class_goCupsServer.inc:79 +#: admin/systems/services/syslog/class_goLogDBServer.inc:103 +#, fuzzy +msgid "Restart" +msgstr "Opnieuw proberen" + +#: admin/systems/services/kiosk/class_goKioskService.inc:34 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:206 +#, fuzzy +msgid "Kiosk profile service" +msgstr "Kiosk profiel instellingen" + +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: personal/environment/class_environment.inc:1784 +#: personal/environment/environment.tpl:124 +#: personal/environment/environment.tpl:160 +msgid "Kiosk profile" +msgstr "Kiosk profiel" + +#: admin/systems/services/kiosk/class_goKioskService.inc:269 +msgid "Kiosk" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/kiosk/goKioskService.tpl:1 +msgid "Kiosk profile management" +msgstr "Kiosk profiel beheer" + +#: admin/systems/services/kiosk/goKioskService.tpl:16 +#, fuzzy +msgid "Server path" +msgstr "Servernaam" + +#: admin/systems/services/kiosk/goKioskService.tpl:23 +#: addons/goto/goto_import_file.tpl:24 +msgid "Browse" +msgstr "Doorzoek" + +#: admin/systems/services/ldap/goLdapServer.tpl:1 +#: admin/systems/services/ldap/class_goLdapServer.inc:30 +#: admin/systems/services/ldap/class_goLdapServer.inc:68 +#, fuzzy +msgid "LDAP service" +msgstr "LDAP Service" + +#: admin/systems/services/ldap/goLdapServer.tpl:2 +msgid "LDAP URI" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:35 +msgid "fill-in-your-servers-dns-name" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:128 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +msgid "Ldap" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:137 +#, fuzzy +msgid "Ldap base" +msgstr "Ldap server" + +#: admin/systems/services/ntp/goNtpServer.tpl:2 +#, fuzzy +msgid "Time server" +msgstr "Tijd Service" + +#: admin/systems/services/ntp/class_goNtpServer.inc:28 +#: admin/systems/services/ntp/class_goNtpServer.inc:74 +#, fuzzy +msgid "Time service (NTP)" +msgstr "Tijd Service" + +#: admin/systems/services/ntp/class_goNtpServer.inc:114 +#, fuzzy +msgid "Time service" +msgstr "Tijd Service" + +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#, fuzzy +msgid "Time service - NTP" +msgstr "Tijd Service" + +#: admin/systems/services/ntp/class_goNtpServer.inc:123 +#, fuzzy +msgid "Ntp source" +msgstr "Audio service" + +#: admin/systems/services/terminal/goTerminalServer.tpl:4 +#: admin/systems/services/terminal/class_goTerminalServer.inc:26 +#: admin/systems/services/terminal/class_goTerminalServer.inc:76 +#: admin/systems/services/terminal/class_goTerminalServer.inc:164 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/goto/class_terminalService.inc:679 +#, fuzzy +msgid "Terminal service" +msgstr "Terminal Service" + +#: admin/systems/services/terminal/goTerminalServer.tpl:8 +#: admin/systems/services/terminal/class_goTerminalServer.inc:173 +msgid "Temporary disable login" +msgstr "Schakel inlog mogelijkheid tijdelijk uit" + +#: admin/systems/services/terminal/goTerminalServer.tpl:13 +msgid "Supported session types" +msgstr "" + +#: admin/systems/services/shares/goShareServer.tpl:1 +#: admin/systems/goto/class_terminalStartup.inc:543 +#: admin/systems/goto/class_workstationStartup.inc:1021 +#: admin/systems/goto/terminalStartup.tpl:91 +#: admin/systems/goto/workstationStartup.tpl:209 +#: personal/environment/class_environment.inc:1782 +#: personal/environment/environment.tpl:212 +msgid "Shares" +msgstr "Shares" + +#: admin/systems/services/shares/class_goShareServer.inc:31 +#: admin/systems/services/shares/class_goShareServer.inc:157 +#: admin/systems/services/shares/class_goShareServer.inc:389 +#, fuzzy +msgid "File service (Shares)" +msgstr "Bestandserver" + +#: admin/systems/services/shares/class_goShareServer.inc:233 +#, fuzzy +msgid "share" +msgstr "Shares" + +#: admin/systems/services/shares/class_goShareServer.inc:390 +#, fuzzy +msgid "File service - Shares" +msgstr "Bestandserver" + +#: admin/systems/services/shares/class_goShareServer.inc:399 +msgid "Apple mounts" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:402 +#, fuzzy +msgid "Charset" +msgstr "Chipset" + +#: admin/systems/services/shares/class_goShareServer.inc:403 +#: admin/systems/services/nfs/class_servNfs.inc:179 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Path" +msgstr "Pad" + +#: admin/systems/services/shares/class_goShareServer.inc:404 +#: admin/systems/services/nfs/class_servNfs.inc:215 +#: admin/systems/services/nfs/servnfs.tpl:121 +msgid "Option" +msgstr "Optie" + +#: admin/systems/services/shares/class_goShareServer.inc:405 +#: admin/systems/services/nfs/class_servNfs.inc:211 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Volume" +msgstr "Volume" + +#: admin/systems/services/nfs/class_servNfs.inc:184 +msgid "'Path / Volume' must be of format 'server:port'!" +msgstr "" + +#: admin/systems/services/nfs/class_servNfs.inc:188 +msgid "'Path / Volume' must contain at least one '/'!" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:1 +msgid "Edit share" +msgstr "Bewerk share" + +#: admin/systems/services/nfs/servnfs.tpl:2 +msgid "NFS setup" +msgstr "NFS instellingen" + +#: admin/systems/services/nfs/servnfs.tpl:39 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:201 +#: addons/goto/events/class_EventTargetAddList.inc:238 +#: personal/environment/environment.tpl:135 +msgid "Server" +msgstr "Server" + +#: admin/systems/services/nfs/servnfs.tpl:69 +msgid "Auto-mount share on Apple systems" +msgstr "Auto-mount share op Apple systemen" + +#: admin/systems/services/nfs/servnfs.tpl:109 +msgid "Codepage" +msgstr "Karakterset" + +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "Syslog Service" +msgstr "Syslog Service" + +#: admin/systems/services/syslog/class_goSyslogServer.inc:68 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#, fuzzy +msgid "Logging service" +msgstr "Log DB gebruiker" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:31 +#: admin/systems/services/syslog/class_goLogDBServer.inc:59 +#, fuzzy +msgid "Syslog service database" +msgstr "Syslog Service" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:69 +#: admin/systems/goto/class_printGeneric.inc:908 +#: addons/goto/events/class_EventTargetAddUsersList.inc:171 +msgid "User" +msgstr "Gebruiker" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:72 +#: admin/systems/services/syslog/class_goLogDBServer.inc:105 +#: admin/systems/services/syslog/goLogDBServer.tpl:20 +msgid "Password" +msgstr "Wachtwoord" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:75 +#: admin/systems/services/syslog/class_goLogDBServer.inc:106 +#: admin/systems/services/syslog/goLogDBServer.tpl:4 +#, fuzzy +msgid "Database" +msgstr "Plakken" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:92 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Logging database" +msgstr "Log database" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:104 +#, fuzzy +msgid "Admin" +msgstr "Beheerders" + +#: admin/systems/services/syslog/goLogDBServer.tpl:1 +#, fuzzy +msgid "Logging database information" +msgstr "Log database" + +#: admin/systems/services/syslog/goLogDBServer.tpl:12 +msgid "Logging DB user" +msgstr "Log DB gebruiker" + +#: admin/systems/goto/workstation.tpl:1 admin/systems/goto/terminal.tpl:1 +msgid "Properties" +msgstr "Eigenschappen" + +#: admin/systems/goto/workstation.tpl:8 +msgid "Workstation template" +msgstr "Werkstation sjabloon" + +#: admin/systems/goto/workstation.tpl:10 +#: admin/systems/goto/class_workstationGeneric.inc:707 +msgid "Workstation name" +msgstr "Werkstation naam" + +#: admin/systems/goto/workstation.tpl:27 +#: admin/systems/goto/class_printGeneric.inc:932 +#: admin/systems/goto/class_workstationGeneric.inc:709 +msgid "Location" +msgstr "Plaats" + +#: admin/systems/goto/workstation.tpl:38 admin/systems/goto/terminal.tpl:31 +msgid "Choose subtree to place group in" +msgstr "Selecteer de subtree waaronder deze groep geplaatst wordt" + +#: admin/systems/goto/workstation.tpl:87 admin/systems/goto/workstation.tpl:90 +#: admin/systems/goto/terminal.tpl:109 admin/systems/goto/terminal.tpl:112 +msgid "Inherit time server attributes" +msgstr "Tijdserver attributen overerven" + +#: admin/systems/goto/workstation.tpl:160 +#, fuzzy +msgid "Inherit all values from group" +msgstr "Lijst met groepen" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:3 +#: personal/environment/selectPrinterDialog.tpl:5 +#: personal/environment/selectPrinterDialog.tpl:10 +msgid "Select printer to add" +msgstr "Selecteer de toe te voegen printer" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:8 +msgid "Select entries to add" +msgstr "Selecteer de toe te voegen regels" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:22 +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:18 +#: personal/environment/selectPrinterDialog.tpl:24 +#: personal/environment/hotplugDialog.tpl:24 +msgid "Filters" +msgstr "Filters" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Select to search within subtrees" +msgstr "Selecteer om binnen subonderdelen te zoeken" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +#, fuzzy +msgid "Search in subtrees" +msgstr "Zoek binnen subtree" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:38 +msgid "Display members of department" +msgstr "Toon leden van afdeling" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:41 +#: personal/environment/selectPrinterDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Selecteer de afdeling waarbinnen gezocht zal worden" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:50 +msgid "Display members matching" +msgstr "Toon de overeenkomende leden" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:55 +msgid "Regular expression for matching member names" +msgstr "Reguliere expressie voor overeenkomende lidnamen" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:49 +msgid "USB" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:50 +msgid "Parallel port" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:53 +#, fuzzy +msgid "Software" +msgstr "Onmiddelijk bijwerken" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:54 +#, fuzzy +msgid "Hardware" +msgstr "Hardware opnieuw scannen" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:56 +#, fuzzy +msgid "Even" +msgstr "Omgeving" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:57 +#, fuzzy +msgid "Odd" +msgstr "Toevoegen" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:60 +#: admin/systems/goto/class_gotoLpdEnabled.inc:61 +#: admin/systems/goto/class_gotoLpdEnabled.inc:62 +#: admin/systems/goto/class_gotoLpdEnabled.inc:63 +#: admin/systems/goto/class_gotoLpdEnabled.inc:64 +#: admin/systems/goto/class_gotoLpdEnabled.inc:65 +#: admin/systems/goto/class_gotoLpdEnabled.inc:66 +#: admin/systems/goto/class_gotoLpdEnabled.inc:67 +#, fuzzy +msgid "bit/s" +msgstr "bit" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:153 +#: admin/systems/goto/terminalService.tpl:58 +#: admin/systems/goto/workstationService.tpl:66 +#: admin/systems/goto/gotoLpdEnable.tpl:71 +msgid "Port" +msgstr "Poort" + +#: admin/systems/goto/ArpNewDevice.tpl:1 +msgid "Integrating unknown devices" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:3 +msgid "" +"The current device has been detected by the ARP monitor used by GOsa. You " +"can integrate this device into your running DHCP/DNS infrastructure by " +"submitting this form. The device entry will disappear from the list of the " +"systems and move to the DNS/DHCP configuration." +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:9 +#, fuzzy +msgid "DNS name" +msgstr "Naam" + +#: admin/systems/goto/class_printGeneric.inc:106 +#: admin/systems/goto/class_printGeneric.inc:968 +#, fuzzy +msgid "Internal error" +msgstr "Terminal server" + +#: admin/systems/goto/class_printGeneric.inc:106 +#, fuzzy, php-format +msgid "" +"Cannot determine a valid department for this object. Setting base to '%s'!" +msgstr "" +"Kon geen geldige basis ophalen uit de dn van het object. Basis is ingesteld " +"op '%s'." + +#: admin/systems/goto/class_printGeneric.inc:262 +#: admin/systems/goto/class_printGeneric.inc:270 +#: admin/systems/goto/class_printGeneric.inc:275 +#: admin/systems/goto/class_printGeneric.inc:324 +#: admin/systems/goto/class_printGeneric.inc:340 +#: admin/systems/goto/class_printGeneric.inc:343 +msgid "Add printer extension" +msgstr "Voeg printer extensie toe" + +#: admin/systems/goto/class_printGeneric.inc:263 +#, fuzzy +msgid "" +"Could not initialize printer tab, parameter parent was missing while " +"construction." +msgstr "" +"Kon de printertab niet initialiseren. Parameter parent ontbrak bij aanmaak." + +#: admin/systems/goto/class_printGeneric.inc:271 +msgid "This is a workstation template, printer tab is disabled." +msgstr "Dit is een werkstationsjabloon. Het printer tabblad is uitgeschakeld." + +#: admin/systems/goto/class_printGeneric.inc:276 +msgid "This is a terminal template, printer tab is disabled." +msgstr "Dit is een terminalsjabloon. Het printer tabblad is uitgeschakeld." + +#: admin/systems/goto/class_printGeneric.inc:317 +#: admin/systems/goto/class_printGeneric.inc:325 +#: admin/systems/goto/class_printGeneric.inc:333 +#: admin/systems/goto/class_printGeneric.inc:336 +#: admin/systems/goto/class_printGeneric.inc:341 +#: admin/systems/goto/class_printGeneric.inc:344 +#, fuzzy +msgid "printer" +msgstr "printers" + +#: admin/systems/goto/class_printGeneric.inc:325 +#, fuzzy +msgid "" +"You can't enable it while 'cn' is not present in entry. Possibly you are " +"currently creating a new terminal template." +msgstr "" +"Dit object heeft printer mogelijkheden uitgeschakeld. U kunt deze niet " +"inschakelen zolang 'cn' niet aanwezig is in de invoer. Het kan mogelijk zijn " +"dat u een nieuwe terminal sjabloon aan het maken bent." + +#: admin/systems/goto/class_printGeneric.inc:332 +#: admin/systems/goto/class_printGeneric.inc:335 +msgid "Remove printer extension" +msgstr "Verwijder printer mogelijkheden" + +#: admin/systems/goto/class_printGeneric.inc:513 +#, php-format +msgid "Your currently selected PPD file '%s' doesn't exist." +msgstr "Uw huidig geselecteerde PPD bestand '%s' bestaat niet." + +#: admin/systems/goto/class_printGeneric.inc:518 +#, fuzzy +msgid "Not defined" +msgstr "niet gedefiniëerd" + +#: admin/systems/goto/class_printGeneric.inc:521 +#: admin/systems/ppd/class_printerPPDDialog.inc:97 +msgid "Can't get ppd informations." +msgstr "Kan de PPD informatie niet ophalen." + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_printGeneric.inc:536 +#, fuzzy, php-format +msgid "This printer belongs to %s. You can't rename this printer." +msgstr "" +"Deze printer behoort bij terminal %s. U kunt deze printer niet hernoemen." + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_terminalStartup.inc:180 +#: admin/systems/goto/class_terminalInfo.inc:68 +#: admin/systems/goto/class_terminalGeneric.inc:230 +#, fuzzy +msgid "terminal" +msgstr "Terminal" + +#: admin/systems/goto/class_printGeneric.inc:536 +#: admin/systems/goto/class_workstationGeneric.inc:226 +#: admin/systems/goto/class_workstationStartup.inc:285 +#, fuzzy +msgid "workstation" +msgstr "Werkstation" + +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#, fuzzy +msgid "Object is no printer!" +msgstr "Netwerk printer" + +#: admin/systems/goto/class_printGeneric.inc:680 +#: admin/systems/goto/printer.tpl:54 +msgid "Printer URL" +msgstr "Printer URL" + +#: admin/systems/goto/class_printGeneric.inc:903 +#: admin/systems/goto/class_printGeneric.inc:905 +#: addons/goto/events/class_EventTargetAddUsersList.inc:173 +msgid "Group" +msgstr "Groep" + +#: admin/systems/goto/class_printGeneric.inc:921 +#, fuzzy +msgid "Print generic" +msgstr "Print Service" + +#: admin/systems/goto/class_printGeneric.inc:926 +#: admin/systems/goto/terminalService.tpl:245 +#: personal/environment/environment.tpl:338 +#: personal/environment/environment.tpl:374 +msgid "Printer" +msgstr "Printer" + +#: admin/systems/goto/class_printGeneric.inc:933 +msgid "LabeledURL" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:934 +#, fuzzy +msgid "Printer PPD" +msgstr "Printer" + +#: admin/systems/goto/class_printGeneric.inc:935 +#: admin/systems/goto/printer.tpl:82 +msgid "Permissions" +msgstr "Rechten" + +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#, fuzzy +msgid "printer user" +msgstr "Printer" + +#: admin/systems/goto/class_printGeneric.inc:968 +#, php-format +msgid "Illegal member type '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:1008 +#, fuzzy, php-format +msgid "'%s' is already used!" +msgstr "De opgegeven naam wordt al gebruikt." + +#: admin/systems/goto/class_printGeneric.inc:1019 +#, fuzzy, php-format +msgid "'%s' does not exist!" +msgstr "PPD beheerder : Het opgegeven pad '%s' bestaat niet." + +#: admin/systems/goto/class_selectUserToPrinterDialog.inc:147 +msgid "Please select a printer or press cancel." +msgstr "Selecteer a.u.b. een printer of druk annuleren in" + +#: admin/systems/goto/class_terminalStartup.inc:135 +#, fuzzy, php-format +msgid "" +"Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to " +"exist." +msgstr "" +"Het commando '%s' dat gespecificeerd is als KERNELS inhaker voor module '%s' " +"bestaat niet." + +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#, fuzzy +msgid "Mount point" +msgstr "Koppelpunt" + +#: admin/systems/goto/class_terminalStartup.inc:372 +#: admin/systems/goto/class_workstationStartup.inc:750 +#, fuzzy +msgid "Fatal error" +msgstr "Terminal server" + +#: admin/systems/goto/class_terminalStartup.inc:533 +#: admin/systems/goto/class_workstationStartup.inc:1007 +msgid "Startup" +msgstr "Opstarten" + +#: admin/systems/goto/class_terminalStartup.inc:534 +#, fuzzy +msgid "Terminal startup" +msgstr "Terminal sjabloon" + +#: admin/systems/goto/class_terminalStartup.inc:542 +#: admin/systems/goto/class_workstationStartup.inc:1016 +#, fuzzy +msgid "Ldap server" +msgstr "Ldap server" + +#: admin/systems/goto/class_terminalStartup.inc:544 +#: admin/systems/goto/class_workstationStartup.inc:1020 +#, fuzzy +msgid "Kernel modules" +msgstr "Controleer parameter" + +#: admin/systems/goto/class_terminalStartup.inc:545 +#: admin/systems/goto/class_workstationStartup.inc:1017 +#: admin/systems/goto/terminalStartup.tpl:40 +#: admin/systems/goto/workstationStartup.tpl:9 +msgid "Boot kernel" +msgstr "Boot kernel" + +#: admin/systems/goto/class_terminalStartup.inc:546 +#: admin/systems/goto/class_workstationStartup.inc:1018 +#, fuzzy +msgid "Kernel parameter" +msgstr "Controleer parameter" + +#: admin/systems/goto/class_terminalInfo.inc:50 +#: admin/systems/goto/class_terminalInfo.inc:204 +msgid "present" +msgstr "aanwezig" + +#: admin/systems/goto/class_terminalInfo.inc:77 +#: admin/systems/goto/class_terminalService.inc:121 +#: admin/systems/goto/class_workstationStartup.inc:1295 +#: admin/systems/goto/class_workstationStartup.inc:1297 +#: admin/systems/goto/class_workstationService.inc:78 +#: admin/systems/ppd/class_printerPPDDialog.inc:54 +#: admin/systems/ppd/class_printerPPDDialog.inc:121 +#: personal/environment/class_environment.inc:234 +#, fuzzy +msgid "Configuration error" +msgstr "Configuratie bestand" + +#: admin/systems/goto/class_terminalInfo.inc:83 +#: admin/systems/goto/class_terminalInfo.inc:179 +msgid "unknown status" +msgstr "onbekende status" + +#: admin/systems/goto/class_terminalInfo.inc:92 +msgid "This is a virtual terminal which has no properties to show here." +msgstr "" +"Dit is een virtuele terminal die geen eigenschappen voorhanden heeft die " +"hier getoond kunnen worden." + +#: admin/systems/goto/class_terminalInfo.inc:106 +msgid "online" +msgstr "online" + +#: admin/systems/goto/class_terminalInfo.inc:168 +msgid "running" +msgstr "draait" + +#: admin/systems/goto/class_terminalInfo.inc:171 +msgid "not running" +msgstr "draait niet" + +#: admin/systems/goto/class_terminalInfo.inc:174 +msgid "not defined" +msgstr "niet gedefiniëerd" + +#: admin/systems/goto/class_terminalInfo.inc:196 +msgid "offline" +msgstr "offline" + +#: admin/systems/goto/class_terminalInfo.inc:251 +#, fuzzy +msgid "System info" +msgstr "Systeem informatie" + +#: admin/systems/goto/class_terminalInfo.inc:252 +#, fuzzy +msgid "System informations" +msgstr "Systeem informatie" + +#: admin/systems/goto/class_terminalService.inc:128 +#: admin/systems/goto/class_terminalService.inc:129 +#: admin/systems/goto/class_terminalService.inc:130 +#: admin/systems/goto/class_terminalService.inc:131 +#: admin/systems/goto/class_workstationService.inc:88 +#: admin/systems/goto/class_workstationService.inc:89 +#: admin/systems/goto/class_workstationService.inc:90 +#: admin/systems/goto/class_workstationService.inc:91 +msgid "bit" +msgstr "bit" + +#: admin/systems/goto/class_terminalService.inc:177 +msgid "XDMCP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:178 +msgid "LDM" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:179 +msgid "Shell" +msgstr "Shell" + +#: admin/systems/goto/class_terminalService.inc:180 +#, fuzzy +msgid "Telnet" +msgstr "Verwijderen" + +#: admin/systems/goto/class_terminalService.inc:181 +msgid "Windows RDP" +msgstr "Windows RDP" + +#: admin/systems/goto/class_terminalService.inc:204 +#: admin/systems/goto/class_workstationService.inc:144 +msgid "automatic" +msgstr "automatisch" + +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_workstationService.inc:194 +msgid "Bit" +msgstr "Bit" + +#: admin/systems/goto/class_terminalService.inc:314 +msgid "This 'dn' has no terminal features." +msgstr "Deze 'dn' heeft geen terminal mogelijkheden." + +#: admin/systems/goto/class_terminalService.inc:372 +#, fuzzy +msgid "Unsupported" +msgstr "USB ondersteuning" + +#: admin/systems/goto/class_terminalService.inc:414 +#: admin/systems/goto/class_workstationService.inc:309 +msgid "Choose the phone located at the current terminal" +msgstr "Selecteer de telefoon die zich bij de huidige terminal bevindt." + +#: admin/systems/goto/class_terminalService.inc:495 +#: admin/systems/goto/class_terminalService.inc:500 +#, fuzzy +msgid "VSync range" +msgstr "VSync" + +#: admin/systems/goto/class_terminalService.inc:508 +#: admin/systems/goto/class_terminalService.inc:513 +#, fuzzy +msgid "HSync range" +msgstr "HSync" + +#: admin/systems/goto/class_terminalService.inc:539 +msgid "" +"Remote desktop settings contains servers that do not support the selected " +"connection method." +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:603 +#: admin/systems/goto/workstationService.tpl:157 +#: admin/systems/goto/class_workstationService.inc:85 +msgid "unknown" +msgstr "onbekend" + +#: admin/systems/goto/class_terminalService.inc:678 +#: admin/systems/goto/class_workstationService.inc:484 +#, fuzzy +msgid "Service" +msgstr "Services" + +#: admin/systems/goto/class_terminalService.inc:688 +#: admin/systems/goto/class_workstationService.inc:493 +#, fuzzy +msgid "Monitor" +msgstr "Monitor grootte" + +#: admin/systems/goto/class_terminalService.inc:689 +#, fuzzy +msgid "Method" +msgstr "methode" + +#: admin/systems/goto/class_terminalService.inc:690 +#: admin/systems/goto/terminalService.tpl:173 +msgid "Remote desktop" +msgstr "Remote desktop" + +#: admin/systems/goto/class_terminalService.inc:691 +#: admin/systems/goto/class_workstationService.inc:494 +#, fuzzy +msgid "Gfx driver" +msgstr "Nieuw stuurprogramma" + +#: admin/systems/goto/class_terminalService.inc:692 +#: admin/systems/goto/class_workstationService.inc:495 +#, fuzzy +msgid "Gfx resolution" +msgstr "Resolutie" + +#: admin/systems/goto/class_terminalService.inc:693 +#: admin/systems/goto/class_workstationService.inc:496 +#, fuzzy +msgid "Gfx color depth" +msgstr "Kleurdiepte" + +#: admin/systems/goto/class_terminalService.inc:694 +#: admin/systems/goto/terminalService.tpl:150 +#: admin/systems/goto/workstationService.tpl:170 +#: admin/systems/goto/class_workstationService.inc:393 +#: admin/systems/goto/class_workstationService.inc:395 +#: admin/systems/goto/class_workstationService.inc:400 +#: admin/systems/goto/class_workstationService.inc:497 +msgid "HSync" +msgstr "HSync" + +#: admin/systems/goto/class_terminalService.inc:695 +#: admin/systems/goto/terminalService.tpl:158 +#: admin/systems/goto/workstationService.tpl:181 +#: admin/systems/goto/class_workstationService.inc:376 +#: admin/systems/goto/class_workstationService.inc:378 +#: admin/systems/goto/class_workstationService.inc:383 +#: admin/systems/goto/class_workstationService.inc:498 +msgid "VSync" +msgstr "VSync" + +#: admin/systems/goto/class_terminalService.inc:696 +msgid "Auto-Sync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:697 +#: admin/systems/goto/class_workstationService.inc:500 +#, fuzzy +msgid "Scanner enabled" +msgstr "gedeactiveerd" + +#: admin/systems/goto/class_terminalService.inc:698 +#: admin/systems/goto/class_terminalService.inc:704 +#, fuzzy +msgid "Printer enabled" +msgstr "Printernaam" + +#: admin/systems/goto/class_terminalService.inc:699 +#: admin/systems/goto/class_workstationService.inc:501 +#, fuzzy +msgid "Keyboard model" +msgstr "Kies toetsenbord model" + +#: admin/systems/goto/class_terminalService.inc:700 +#: admin/systems/goto/class_workstationService.inc:502 +#, fuzzy +msgid "Keyboard layout" +msgstr "Kies toetsenbord indeling" + +#: admin/systems/goto/class_terminalService.inc:701 +#: admin/systems/goto/class_workstationService.inc:503 +#, fuzzy +msgid "Keyboard variant" +msgstr "Kies toetsenbord variant" + +#: admin/systems/goto/class_terminalService.inc:702 +#: admin/systems/goto/class_workstationService.inc:504 +#, fuzzy +msgid "Mouse type" +msgstr "MIME-type" + +#: admin/systems/goto/class_terminalService.inc:703 +#: admin/systems/goto/class_workstationService.inc:505 +#, fuzzy +msgid "Mouse port" +msgstr "Koppelpunt" + +#: admin/systems/goto/class_terminalService.inc:705 +#: admin/systems/goto/terminalService.tpl:76 +#: admin/systems/goto/workstationService.tpl:86 +#: admin/systems/goto/class_workstationService.inc:506 +msgid "Telephone hardware" +msgstr "Telefoon hardware" + +#: admin/systems/goto/info.tpl:6 +msgid "System information" +msgstr "Systeem informatie" + +#: admin/systems/goto/info.tpl:12 +msgid "CPU" +msgstr "Processor" + +#: admin/systems/goto/info.tpl:15 +msgid "Memory" +msgstr "Geheugen" + +#: admin/systems/goto/info.tpl:18 +msgid "Boot MAC" +msgstr "Hardware Adres (MAC)" + +#: admin/systems/goto/info.tpl:21 +msgid "USB support" +msgstr "USB ondersteuning" + +#: admin/systems/goto/info.tpl:24 admin/systems/goto/info.tpl:92 +msgid "System status" +msgstr "Systeem status" + +#: admin/systems/goto/info.tpl:28 +msgid "Inventory number" +msgstr "Inventaris nummer" + +#: admin/systems/goto/info.tpl:32 +msgid "Last login" +msgstr "Laatste aanmelding" + +#: admin/systems/goto/info.tpl:43 +msgid "Network devices" +msgstr "Netwerk apparaten" + +#: admin/systems/goto/info.tpl:52 +msgid "IDE devices" +msgstr "IDE apparaten" + +#: admin/systems/goto/info.tpl:61 +msgid "SCSI devices" +msgstr "SCSI apparaten" + +#: admin/systems/goto/info.tpl:69 +msgid "Floppy device" +msgstr "Diskdrive" + +#: admin/systems/goto/info.tpl:73 +msgid "CDROM device" +msgstr "CDROM speler" + +#: admin/systems/goto/info.tpl:78 admin/systems/goto/terminalService.tpl:95 +#: admin/systems/goto/workstationService.tpl:107 +msgid "Graphic device" +msgstr "Grafische kaart" + +#: admin/systems/goto/info.tpl:82 +msgid "Audio device" +msgstr "Geluidskaart" + +#: admin/systems/goto/info.tpl:98 +msgid "Up since" +msgstr "Staat aan sinds" + +#: admin/systems/goto/info.tpl:101 +msgid "CPU load" +msgstr "Processor belasting" + +#: admin/systems/goto/info.tpl:104 +msgid "Memory usage" +msgstr "Geheugen gebruik" + +#: admin/systems/goto/info.tpl:107 +msgid "Swap usage" +msgstr "Swap gebruik" + +#: admin/systems/goto/info.tpl:121 +msgid "SSH service" +msgstr "SSH service" + +#: admin/systems/goto/info.tpl:127 +msgid "Scan service" +msgstr "Scan service" + +#: admin/systems/goto/info.tpl:130 +msgid "Sound service" +msgstr "Audio service" + +#: admin/systems/goto/info.tpl:133 +msgid "GUI" +msgstr "GUI" + +#: admin/systems/goto/class_workstationGeneric.inc:299 +#: admin/systems/goto/class_workstationGeneric.inc:309 +#: addons/goto/events/class_DaemonEvent_update.inc:29 +#: addons/goto/events/class_DaemonEvent_update.inc:30 +#, fuzzy +msgid "Software update" +msgstr "Onmiddelijk bijwerken" + +#: admin/systems/goto/class_workstationGeneric.inc:303 +#: admin/systems/goto/class_workstationGeneric.inc:311 +#: addons/goto/events/class_DaemonEvent_localboot.inc:28 +#: addons/goto/events/class_DaemonEvent_localboot.inc:29 +msgid "Force localboot" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:307 +#: admin/systems/goto/class_terminalGeneric.inc:271 +#: addons/goto/events/class_DaemonEvent_wakeup.inc:29 +msgid "Wake up" +msgstr "Aanzetten" + +#: admin/systems/goto/class_workstationGeneric.inc:500 +msgid "A valid LDAP server assignement is missing!" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:510 +#, fuzzy +msgid "Software deployment" +msgstr "Systeemtype" + +#: admin/systems/goto/class_workstationGeneric.inc:511 +msgid "This host is currently installing. If you want to save it, press 'OK'." +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:699 +#, fuzzy +msgid "Workstation generic" +msgstr "Werkstation naam" + +#: admin/systems/goto/class_workstationGeneric.inc:704 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:203 +#: addons/goto/events/class_EventTargetAddList.inc:249 +msgid "Workstation" +msgstr "Werkstation" + +#: admin/systems/goto/class_workstationGeneric.inc:711 +#, fuzzy +msgid "Goto mode" +msgstr "naar map" + +#: admin/systems/goto/class_workstationGeneric.inc:714 +#: admin/systems/goto/class_terminalGeneric.inc:676 +#, fuzzy +msgid "Root password" +msgstr "Wachtwoord instellen" + +#: admin/systems/goto/class_workstationGeneric.inc:715 +#, fuzzy +msgid "Create FAI CD" +msgstr "Aanmaken" + +#: admin/systems/goto/gencd_frame.tpl:2 +msgid "Your browser does not supprt iframes." +msgstr "" + +#: admin/systems/goto/terminalService.tpl:4 +#: admin/systems/goto/workstationService.tpl:4 +msgid "Keyboard" +msgstr "Toetsenbord" + +#: admin/systems/goto/terminalService.tpl:7 +#: admin/systems/goto/workstationService.tpl:7 +#: admin/systems/ppd/printerPPDDialog.tpl:10 +msgid "Model" +msgstr "Model" + +#: admin/systems/goto/terminalService.tpl:10 +#: admin/systems/goto/workstationService.tpl:11 +msgid "Choose keyboard model" +msgstr "Kies toetsenbord model" + +#: admin/systems/goto/terminalService.tpl:17 +#: admin/systems/goto/workstationService.tpl:19 +msgid "Layout" +msgstr "Indeling" + +#: admin/systems/goto/terminalService.tpl:20 +#: admin/systems/goto/workstationService.tpl:23 +msgid "Choose keyboard layout" +msgstr "Kies toetsenbord indeling" + +#: admin/systems/goto/terminalService.tpl:27 +#: admin/systems/goto/workstationService.tpl:31 +msgid "Variant" +msgstr "Variant" + +#: admin/systems/goto/terminalService.tpl:30 +#: admin/systems/goto/workstationService.tpl:35 +msgid "Choose keyboard variant" +msgstr "Kies toetsenbord variant" + +#: admin/systems/goto/terminalService.tpl:45 +#: admin/systems/goto/workstationService.tpl:51 +msgid "Mouse" +msgstr "Muis" + +#: admin/systems/goto/terminalService.tpl:51 +#: admin/systems/goto/workstationService.tpl:58 +msgid "Choose mouse type" +msgstr "Kies het muis type" + +#: admin/systems/goto/terminalService.tpl:61 +#: admin/systems/goto/workstationService.tpl:70 +msgid "Choose mouse port" +msgstr "Kies muispoort" + +#: admin/systems/goto/terminalService.tpl:79 +#: admin/systems/goto/workstationService.tpl:89 +msgid "Telephone" +msgstr "Telefoon" + +#: admin/systems/goto/terminalService.tpl:98 +#: admin/systems/goto/workstationService.tpl:110 +#: admin/systems/goto/printer.tpl:66 +msgid "Driver" +msgstr "Stuurprogramma" + +#: admin/systems/goto/terminalService.tpl:101 +#: admin/systems/goto/workstationService.tpl:114 +msgid "Choose graphic driver that is needed by the installed graphic board" +msgstr "" +"Kies het stuurprogramma dat nodig is voor de geïnstalleerde grafische kaart" + +#: admin/systems/goto/terminalService.tpl:108 +#: admin/systems/goto/workstationService.tpl:122 +#: personal/environment/class_environment.inc:1786 +#: personal/environment/environment.tpl:183 +msgid "Resolution" +msgstr "Resolutie" + +#: admin/systems/goto/terminalService.tpl:111 +#: admin/systems/goto/workstationService.tpl:126 +msgid "Choose screen resolution used in graphic mode" +msgstr "Kies de scherm resolutie die gebruikt wordt in grafische modus" + +#: admin/systems/goto/terminalService.tpl:118 +#: admin/systems/goto/workstationService.tpl:134 +msgid "Color depth" +msgstr "Kleurdiepte" + +#: admin/systems/goto/terminalService.tpl:121 +#: admin/systems/goto/workstationService.tpl:138 +msgid "Choose colordepth used in graphic mode" +msgstr "Kies de kleurdiepte die gebruikt wordt in grafische modus" + +#: admin/systems/goto/terminalService.tpl:135 +#: admin/systems/goto/workstationService.tpl:153 +msgid "Display device" +msgstr "Scherm" + +#: admin/systems/goto/terminalService.tpl:147 +#: admin/systems/goto/workstationService.tpl:167 +msgid "Use DDC for automatic detection" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:154 +#: admin/systems/goto/workstationService.tpl:175 +msgid "Horizontal refresh frequency for installed monitor" +msgstr "Horizontale ververs frequentie voor de geïnstalleerde monitor" + +#: admin/systems/goto/terminalService.tpl:162 +#: admin/systems/goto/workstationService.tpl:186 +msgid "Vertical refresh frequency for installed monitor" +msgstr "Verticale ververs frequentie voor de geïnstalleerde monitor" + +#: admin/systems/goto/terminalService.tpl:177 +msgid "Connect method" +msgstr "Verbindings methode" + +#: admin/systems/goto/terminalService.tpl:180 +msgid "Choose method to connect to terminal server" +msgstr "Kies de methode om te verbinden met de terminal server" + +#: admin/systems/goto/terminalService.tpl:184 +#: admin/systems/goto/terminalStartup.tpl:14 +#: admin/systems/goto/workstationStartup.tpl:36 +#: addons/goto/class_gotomasses.inc:400 +#, fuzzy +msgid "Reload" +msgstr "Lezen" + +#: admin/systems/goto/terminalService.tpl:191 +msgid "Terminal server" +msgstr "Terminal server" + +#: admin/systems/goto/terminalService.tpl:202 +msgid "Select specific terminal server to use" +msgstr "Selecteer de te gebruiken terminal server" + +#: admin/systems/goto/terminalService.tpl:208 +msgid "Add selected server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:212 +#, fuzzy +msgid "Remove selected server" +msgstr "Plaatje verwijderen" + +#: admin/systems/goto/terminalService.tpl:233 +#: admin/systems/goto/workstationService.tpl:201 +msgid "Scan device" +msgstr "Scanner" + +#: admin/systems/goto/terminalService.tpl:235 +#: admin/systems/goto/workstationService.tpl:204 +msgid "Select to start SANE scan service on terminal" +msgstr "Selecteer om de SANE scan service te starten op de terminal" + +#: admin/systems/goto/terminalService.tpl:237 +#: admin/systems/goto/workstationService.tpl:207 +msgid "Provide scan services" +msgstr "Lever scan diensten" + +#: admin/systems/goto/gotoLpdEnable.tpl:12 +#: admin/systems/goto/gotoLpdEnable.tpl:48 +#, fuzzy +msgid "Enable printer settings" +msgstr "Printer instellingen" + +#: admin/systems/goto/gotoLpdEnable.tpl:87 +#, fuzzy +msgid "Write only" +msgstr "Telefoon privé" + +#: admin/systems/goto/gotoLpdEnable.tpl:100 +#, fuzzy +msgid "Bit rate" +msgstr "Aanmaken" + +#: admin/systems/goto/gotoLpdEnable.tpl:110 +#, fuzzy +msgid "Flow control" +msgstr "Toegangsopties" + +#: admin/systems/goto/gotoLpdEnable.tpl:120 +#, fuzzy +msgid "Parity" +msgstr "Prioriteit" + +#: admin/systems/goto/gotoLpdEnable.tpl:130 +#, fuzzy +msgid "Bits" +msgstr "Bit" + +#: admin/systems/goto/class_workstationStartup.inc:234 +#, fuzzy, php-format +msgid "FAI mirror '%s' is not available - setting to mirror 'auto'!" +msgstr "" +"Het geselecteerde kiosk profiel '%s' is niet meer beschikbaar. Het huidige " +"profiel wordt op 'geen' ingesteld." + +#: admin/systems/goto/class_workstationStartup.inc:247 +#, fuzzy, php-format +msgid "" +"FAI release '%s' is not available on mirror '%s' - setting to release '%s'!" +msgstr "" +"Het geselecteerde kiosk profiel '%s' is niet meer beschikbaar. Het huidige " +"profiel wordt op 'geen' ingesteld." + +#: admin/systems/goto/class_workstationStartup.inc:266 +msgid "Please select a 'FAI server' or remove the 'FAI classes'." +msgstr "Selecteer a.u.b. een 'FAI server' of verwijder de 'FAI klasses'." + +#: admin/systems/goto/class_workstationStartup.inc:324 +#, fuzzy +msgid "" +"There is already a profile containing a partition table in your " +"configuration!" +msgstr "" +"Er bestaat al een profiel in uw selectie die partitietabel configuraties " +"bevat." + +#: admin/systems/goto/class_workstationStartup.inc:629 +msgid "Not available in current setup" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1008 +#, fuzzy +msgid "System startup" +msgstr "Systeem status" + +#: admin/systems/goto/class_workstationStartup.inc:1023 +msgid "FAI classes" +msgstr "FAI klassen" + +#: admin/systems/goto/class_workstationStartup.inc:1024 +msgid "Debian mirror" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1025 +#, fuzzy +msgid "Debian release" +msgstr "Huidige uitgave" + +#: admin/systems/goto/class_workstationStartup.inc:1027 +msgid "FAI status flag" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1297 +msgid "'repositoryBranchHook' returned no result!" +msgstr "" + +#: admin/systems/goto/gencd.tpl:2 +msgid "CD-Install-Image generation" +msgstr "" + +#: admin/systems/goto/gencd.tpl:5 +msgid "" +"This option enables you to generate FAI install CD images for the selected " +"workstation. The procedure may take about 10 minutes to complete, so please " +"be patient after pressing the 'Create ISO-Image' button." +msgstr "" + +#: admin/systems/goto/gencd.tpl:9 +msgid "Create ISO-Image" +msgstr "" + +#: admin/systems/goto/class_workstationService.inc:485 +#, fuzzy +msgid "Workstation service" +msgstr "Werkstation naam" + +#: admin/systems/goto/class_workstationService.inc:499 +#, fuzzy +msgid "Use DDC" +msgstr "Gebruikers ID" + +#: admin/systems/goto/terminalStartup.tpl:1 +#: admin/systems/goto/workstationStartup.tpl:4 +msgid "Boot parameters" +msgstr "Opstart parameters" + +#: admin/systems/goto/terminalStartup.tpl:7 +#: admin/systems/goto/workstationStartup.tpl:29 +msgid "LDAP server" +msgstr "LDAP server" + +#: admin/systems/goto/terminalStartup.tpl:12 +#: admin/systems/goto/workstationStartup.tpl:34 +#, fuzzy +msgid "inherit from group" +msgstr "Lijst met groepen" + +#: admin/systems/goto/terminalStartup.tpl:51 +#: admin/systems/goto/workstationStartup.tpl:20 +msgid "Custom options" +msgstr "Aangepaste opties" + +#: admin/systems/goto/terminalStartup.tpl:55 +#: admin/systems/goto/workstationStartup.tpl:24 +msgid "" +"Enter any parameters that should be passed to the kernel as append line " +"during bootup" +msgstr "" +"Geef parameters op die meegeven worden aan de kernel als append regel " +"tijdens het opstarten" + +#: admin/systems/goto/terminalStartup.tpl:70 +#: admin/systems/goto/workstationStartup.tpl:188 +msgid "Kernel modules (format: name parameters)" +msgstr "Kernel modules (formaat: naam parameters)" + +#: admin/systems/goto/terminalStartup.tpl:73 +#: admin/systems/goto/workstationStartup.tpl:191 +msgid "Add additional modules to load on startup" +msgstr "Voeg additioneel te laden modules toe bij het opstarten" + +#: admin/systems/goto/terminalStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:227 +msgid "Mountpoint" +msgstr "Koppelpunt" + +#: admin/systems/goto/SelectDeviceType.tpl:3 +msgid "" +"This system has no system type configured. Please choose a system type for " +"this object and an optional inheritance group. Press the 'continue' button " +"to proceed." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:10 +msgid "" +"Please select a system type and an optional bundle of predefined settings to " +"be inherited." +msgstr "" +"Selecteer a.u.b. een systeemtype en een optionele bundel met te overerven " +"voorgedefinieerde instellingen." + +#: admin/systems/goto/SelectDeviceType.tpl:12 +#, fuzzy +msgid "" +"Please select a system type and a bundle of predefined settings to be " +"inherited." +msgstr "" +"Selecteer a.u.b. een systeemtype en een optionele bundel met te overerven " +"voorgedefinieerde instellingen." + +#: admin/systems/goto/SelectDeviceType.tpl:23 +#: admin/systems/goto/SelectDeviceType.tpl:24 +msgid "System type" +msgstr "Systeemtype" + +#: admin/systems/goto/SelectDeviceType.tpl:36 +msgid "Choose an object group as template" +msgstr "Selecteer een objectgroep als sjabloon" + +#: admin/systems/goto/SelectDeviceType.tpl:37 +#: addons/goto/class_target_list.inc:205 addons/goto/goto_import_file.tpl:40 +#: addons/goto/events/class_EventTargetAddList.inc:259 +msgid "Object group" +msgstr "Objectgroep" + +#: admin/systems/goto/SelectDeviceType.tpl:39 +#: addons/goto/class_gotoLogView.inc:87 +msgid "none" +msgstr "geen" + +#: admin/systems/goto/SelectDeviceType.tpl:51 +msgid "Continue" +msgstr "Doorgaan" + +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: admin/systems/goto/class_terminalGeneric.inc:656 +#: admin/systems/goto/class_terminalGeneric.inc:662 +msgid "Terminal" +msgstr "Terminal" + +#: admin/systems/goto/class_SelectDeviceType.inc:41 +#: admin/systems/goto/chooser.tpl:10 +msgid "Windows workstation" +msgstr "Windows werkstation" + +#: admin/systems/goto/workstationStartup.tpl:64 +msgid "" +"FAI Object assignment disabled. You can't use this feature until FAI is " +"activated." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:66 +msgid "GOsa support daemon not configured" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:67 +msgid "FAI settings cannot be modified" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:70 +msgid "Check if the GOsa support daemon (gosa-si) is running." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:71 +#, fuzzy +msgid "retry" +msgstr "Invoer bewerken" + +#: admin/systems/goto/workstationStartup.tpl:79 +#: admin/systems/goto/workstationStartup.tpl:119 +msgid "FAI server" +msgstr "FAI server" + +#: admin/systems/goto/workstationStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:158 +msgid "Assigned FAI classes" +msgstr "Toegekende FAI klasses" + +#: admin/systems/goto/workstationStartup.tpl:142 +msgid "set" +msgstr "stel in" + +#: admin/systems/goto/class_terminalGeneric.inc:657 +#, fuzzy +msgid "Terminal generic" +msgstr "Terminal Service" + +#: admin/systems/goto/class_terminalGeneric.inc:670 +#, fuzzy +msgid "Syslog server enabled" +msgstr "Syslog server" + +#: admin/systems/goto/class_terminalGeneric.inc:675 +#, fuzzy +msgid "Ntp server settings" +msgstr "Gebruikersinstellingen" + +#: admin/systems/goto/printer.tpl:5 +msgid "General" +msgstr "Algemeen" + +#: admin/systems/goto/printer.tpl:8 +msgid "Printer name" +msgstr "Printernaam" + +#: admin/systems/goto/printer.tpl:30 +msgid "Choose subtree to place user in" +msgstr "Kies de subtree waaronder de gebruiker geplaatst wordt" + +#: admin/systems/goto/printer.tpl:43 +msgid "Details" +msgstr "Details" + +#: admin/systems/goto/printer.tpl:46 +msgid "Printer location" +msgstr "Printer locatie" + +#: admin/systems/goto/printer.tpl:89 +msgid "Users which are allowed to use this printer" +msgstr "Gebruikers die deze printer mogen gebruiken" + +#: admin/systems/goto/printer.tpl:91 +msgid "Users" +msgstr "Gebruikers" + +#: admin/systems/goto/printer.tpl:96 admin/systems/goto/printer.tpl:120 +msgid "Add user" +msgstr "Gebruiker toevoegen" + +#: admin/systems/goto/printer.tpl:99 admin/systems/goto/printer.tpl:123 +msgid "Add group" +msgstr "Groep toevoegen" + +#: admin/systems/goto/printer.tpl:113 +msgid "Users which are allowed to administrate this printer" +msgstr "Gebruikers die deze printer mogen beheren" + +#: admin/systems/goto/printer.tpl:115 +msgid "Admins" +msgstr "Beheerders" + +#: admin/systems/goto/chooser.tpl:1 +msgid "Choose the kind of system component you want to create" +msgstr "Kies het type systeem component dat u wenst aan te maken" + +#: admin/systems/goto/chooser.tpl:4 +msgid "" +"Linux terminals and workstations are autocreated on bootup. For this reason " +"you're only be able to create templates for a specific tree. Servers are " +"normally automatically added too, but in some special cases you may need to " +"create a faked server entry to provide GOsa with some informations. Other " +"network components may be used for Nagios setups to create component " +"dependencies." +msgstr "" +"Linux terminals en werkstations worden automatisch aangemaakt bij het " +"opstarten. Om deze reden kunt u alleen sjablonen voor een specifieke tree " +"aanmaken. Servers worden normaliter ook automatisch toegevoegd, maar in " +"sommige speciale gevallen moet u nep server informatie invoeren zodat GOsa " +"met de server informatie kan werken. Andere netwerk componenten kunnen " +"gebruikt worden binnen Nagios omgevingen om component afhankelijkheden te " +"kunnen creëren." + +#: admin/systems/goto/chooser.tpl:7 +msgid "Linux thin client template" +msgstr "Linux thin client sjabloon" + +#: admin/systems/goto/chooser.tpl:8 +msgid "Linux workstation template" +msgstr "Linux werkstation sjabloon" + +#: admin/systems/goto/chooser.tpl:9 +msgid "Linux Server" +msgstr "Linux server" + +#: admin/systems/goto/chooser.tpl:11 +msgid "Network printer" +msgstr "Netwerk printer" + +#: admin/systems/goto/chooser.tpl:12 +msgid "Phone" +msgstr "Telefoon" + +#: admin/systems/goto/chooser.tpl:13 +msgid "Other network component" +msgstr "Ander netwerk component" + +#: admin/systems/goto/terminal.tpl:8 +msgid "Terminal template" +msgstr "Terminal sjabloon" + +#: admin/systems/goto/terminal.tpl:10 +msgid "Terminal name" +msgstr "Terminal naam" + +#: admin/systems/goto/terminal.tpl:178 +#, fuzzy +msgid "Inherit all" +msgstr "Initialen" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:6 +msgid "Select objects to add" +msgstr "Selecteer de toe te voegen objecten" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:28 +msgid "Display objects matching" +msgstr "Toon overeenkomende objecten" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:32 +msgid "Regular expression for matching object names" +msgstr "Reguliere expressie voor overeenkomende objectnamen" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:44 +msgid "Close" +msgstr "Sluiten" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#: admin/systems/ppd/class_ppdManager.inc:148 +#: admin/systems/ppd/class_ppdManager.inc:150 +#, fuzzy +msgid "PPD manager error" +msgstr "LDAP beheer" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#, fuzzy, php-format +msgid "The specified path '%s' does not exist." +msgstr "PPD beheerder : Het opgegeven pad '%s' bestaat niet." + +#: admin/systems/ppd/class_ppdManager.inc:148 +#, fuzzy, php-format +msgid "Specified PPD file '%s' cannot be opened for reading." +msgstr "Het opgegeven ppd bestand '%s' kan niet geopend worden om te lezen." + +#: admin/systems/ppd/class_ppdManager.inc:150 +#, fuzzy, php-format +msgid "The temporary file '%s' cannot be opened for writing." +msgstr "Het vereiste tijdelijke bestand '%s' kan niet weggeschreven worden." + +#: admin/systems/ppd/class_ppdManager.inc:176 +#: admin/systems/ppd/class_ppdManager.inc:313 +#, php-format +msgid "" +"Parsing PPD file %s failed - line too long. Trailing characters have been " +"ignored" +msgstr "" +"Het parsen van PPD bestand %s is mislukt - regel was te lang. Resterende " +"karakters zijn genegeerd." + +#: admin/systems/ppd/class_ppdManager.inc:184 +msgid "Nested groups are not supported!" +msgstr "Geneste groepen worden niet ondersteund!" + +#: admin/systems/ppd/class_ppdManager.inc:188 +msgid "Group name not unique!" +msgstr "Groepnaam is niet uniek!" + +#: admin/systems/ppd/class_ppdManager.inc:194 +#: admin/systems/ppd/class_ppdManager.inc:224 +msgid "Symbol values are not supported yet!" +msgstr "Symbool waardes worden nog niet ondersteund!" + +#: admin/systems/ppd/class_ppdManager.inc:218 +msgid "Nested options are not supported!" +msgstr "Geneste opties worden niet ondersteund!" + +#: admin/systems/ppd/class_ppdManager.inc:243 +msgid "PickMany is not supported yet!" +msgstr "PickMany wordt nog niet ondersteund!" + +#: admin/systems/ppd/class_ppdManager.inc:334 +#, php-format +msgid "Parsing PPD file %s failed - no information found." +msgstr "" +"Het parsen van PPD bestand %s is mislukt - er is geen informatie gevonden." + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:223 +#: admin/systems/ppd/class_printerPPDDialog.inc:240 +#: admin/systems/ppd/class_printerPPDDialog.inc:248 +#: admin/systems/ppd/class_printerPPDDialog.inc:272 +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#: admin/systems/ppd/class_printerPPDDialog.inc:313 +#: admin/systems/ppd/class_printerPPDDialog.inc:327 +#: admin/systems/ppd/class_printerPPDDialog.inc:337 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#: admin/systems/ppd/class_printerPPDDialog.inc:551 +#: admin/systems/ppd/class_printerPPDDialog.inc:554 +#: admin/systems/ppd/class_printerPPDDialog.inc:557 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:75 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:100 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, fuzzy +msgid "PPD error" +msgstr "LDAP server" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#, fuzzy, php-format +msgid "Cannot open PPD '%s'!" +msgstr "Kan bestand '%s' niet openen." + +#: admin/systems/ppd/class_printerPPDDialog.inc:122 +#, php-format +msgid "Cannot open PPD path '%s' for reading and writing!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: addons/goto/class_goto_import_file.inc:29 +#, fuzzy +msgid "file is empty" +msgstr "Verwijder deze invoer" + +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#, fuzzy, php-format +msgid "Cannot parse PPD '%s'!" +msgstr "Kan bestand '%s' niet openen." + +#: admin/systems/ppd/class_printerPPDDialog.inc:316 +#, fuzzy +msgid "Overwrite existing PPD" +msgstr "Overschrijf bestaande gegevens" + +#: admin/systems/ppd/class_printerPPDDialog.inc:317 +#, fuzzy +msgid "" +"There is already a ppd file for this kind of printer. Do you want to " +"overwrite it?" +msgstr "Er bestaat al een PPD bestand voor dit type printer." + +#: admin/systems/ppd/class_printerPPDDialog.inc:465 +msgid "Section" +msgstr "Sectie" + +#: admin/systems/ppd/class_printerPPDDialog.inc:525 +#: admin/systems/ppd/class_printerPPDDialog.inc:528 +msgid "True" +msgstr "Ja" + +#: admin/systems/ppd/class_printerPPDDialog.inc:526 +#: admin/systems/ppd/class_printerPPDDialog.inc:529 +msgid "False" +msgstr "Nee" + +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#, fuzzy, php-format +msgid "PPD type '%s' is not supported!" +msgstr "PickMany wordt nog niet ondersteund!" + +#: admin/systems/ppd/class_printerPPDDialog.inc:571 +msgid "" +"Please select a valid ppd file or use 'Cancel' to go back to printer " +"configuration." +msgstr "" + +#: admin/systems/ppd/remove_ppd.tpl:9 +msgid "The ppd file will be removed from the server and can not be restored." +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:1 +msgid "Printer driver" +msgstr "Printer stuurprogramma" + +#: admin/systems/ppd/printerPPDDialog.tpl:12 +msgid "Select" +msgstr "Selecteer" + +#: admin/systems/ppd/printerPPDDialog.tpl:16 +msgid "New driver" +msgstr "Nieuw stuurprogramma" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, php-format +msgid "Cannot locate vendor '%s' in available PPDs!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:129 +msgid "Printer ppd selection." +msgstr "Printer PPD selectie" + +#: addons/goto/class_target_list.inc:58 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: addons/goto/class_target_list.inc:59 addons/goto/class_target_list.inc:60 +#, fuzzy +msgid "Available targets" +msgstr "Beschikbare programma's" + +#: addons/goto/class_target_list.inc:69 +msgid "Object name" +msgstr "Objectnaam" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Select to see object groups" +msgstr "Selecteer een objectgroep" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Show object groups" +msgstr "Objectgroepen" + +#: addons/goto/class_target_list.inc:73 +msgid "Select to see servers" +msgstr "Selecteer om servers te zien" + +#: addons/goto/class_target_list.inc:73 +msgid "Show servers" +msgstr "Toon servers" + +#: addons/goto/class_target_list.inc:74 +msgid "Select to see workstations" +msgstr "Selecteer om werkstations te zien" + +#: addons/goto/class_target_list.inc:74 +msgid "Show workstations" +msgstr "Toon werkstations" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Select to see incoming objects" +msgstr "Selecteer om binnen subonderdelen te zoeken" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Show new objects" +msgstr "Lidmaatschap objecten" + +#: addons/goto/class_target_list.inc:80 +msgid "Select to search for a specific IP range only" +msgstr "" + +#: addons/goto/class_target_list.inc:80 +msgid "Match IP range" +msgstr "" + +#: addons/goto/class_target_list.inc:83 +msgid "Regular expression for matching group names" +msgstr "Reguliere expressie voor overeenkomende groepnamen" + +#: addons/goto/class_target_list.inc:84 +msgid "IP range start" +msgstr "" + +#: addons/goto/class_target_list.inc:85 +msgid "IP range end" +msgstr "" + +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#, fuzzy +msgid "IP range" +msgstr "VSync" + +#: addons/goto/goto_import_file.tpl:1 +#, fuzzy +msgid "Import jobs" +msgstr "Importeren" + +#: addons/goto/goto_import_file.tpl:3 +msgid "" +"You can import a list of jobs into the GOsa job queue. This should be a " +"semicolon seperated list of items in the following format:" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "timestamp" +msgstr "Timeout" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "MAC-address" +msgstr "Adres" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "job type" +msgstr "MIME-type" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "object group" +msgstr "Objectgroep" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "import base" +msgstr "Importeren" + +#: addons/goto/goto_import_file.tpl:5 +msgid "full hostname" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "IP-address" +msgstr "Adres" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "DHCP group" +msgstr "Groep toevoegen" + +#: addons/goto/goto_import_file.tpl:9 +msgid "Example" +msgstr "" + +#: addons/goto/goto_import_file.tpl:21 +#, fuzzy +msgid "Select list to import" +msgstr "Selecteer de toe te voegen printer" + +#: addons/goto/goto_import_file.tpl:37 +#: addons/goto/events/DaemonEvent_update.tpl:51 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:51 +#: addons/goto/events/DaemonEvent_halt.tpl:51 +#: addons/goto/events/DaemonEvent_wakeup.tpl:51 +#: addons/goto/events/DaemonEvent_reboot.tpl:51 +#: addons/goto/events/DaemonEvent_notify.tpl:85 +#: addons/goto/events/DaemonEvent_rescan.tpl:51 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:51 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:51 +#: addons/goto/events/DaemonEvent_faireboot.tpl:51 +#: addons/goto/events/DaemonEvent_localboot.tpl:51 +#: addons/goto/events/DaemonEvent_memcheck.tpl:51 +#: addons/goto/events/DaemonEvent_activate.tpl:51 +#: addons/goto/events/DaemonEvent_lock.tpl:51 +#: addons/goto/events/DaemonEvent_reinstall.tpl:55 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:51 +#, fuzzy +msgid "Timestamp" +msgstr "Timeout" + +#: addons/goto/goto_import_file.tpl:38 +#: addons/goto/class_goto_import_file.inc:168 +#, fuzzy +msgid "MAC" +msgstr "Rechten" + +#: addons/goto/goto_import_file.tpl:39 +#: addons/goto/class_goto_import_file.inc:171 +#, fuzzy +msgid "Event" +msgstr "Omgeving" + +#: addons/goto/goto_import_file.tpl:42 +msgid "FQDN" +msgstr "" + +#: addons/goto/goto_import_file.tpl:43 +msgid "IP" +msgstr "" + +#: addons/goto/goto_import_file.tpl:44 +msgid "DHCP" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:113 +msgid "File" +msgstr "Bestand" + +#: addons/goto/class_gotoLogView.inc:115 +#, fuzzy +msgid "Date" +msgstr "Plakken" + +#: addons/goto/class_gotoLogView.inc:202 +#, fuzzy +msgid "Log view" +msgstr "Inlognaam" + +#: addons/goto/class_gotoLogView.inc:203 +#, fuzzy +msgid "GOto log view" +msgstr "naar map" + +#: addons/goto/class_gotomasses.inc:26 +#, fuzzy +msgid "Deployment status" +msgstr "Systeem status" + +#: addons/goto/class_gotomasses.inc:27 addons/goto/main.inc:66 +#, fuzzy +msgid "System deployment status" +msgstr "Systeemtype" + +#: addons/goto/class_gotomasses.inc:270 +#, php-format +msgid "The following jobs couldn't be deleted, they have to be aborted: %s" +msgstr "" + +#: addons/goto/class_gotomasses.inc:360 +#, fuzzy +msgid "This menu allows you to remove and change the properties of GOsa tasks." +msgstr "" +"Dit menu maakt het mogelijk om FAI verzamelplaatsen aan te maken, bewerken " +"en verwijderen." + +#: addons/goto/class_gotomasses.inc:361 +#, fuzzy +msgid "List of queued jobs" +msgstr "Lijst met apparaten" + +#: addons/goto/class_gotomasses.inc:380 +#, fuzzy +msgid "Resume" +msgstr "Herinstalleer" + +#: addons/goto/class_gotomasses.inc:381 +#, fuzzy +msgid "Pause" +msgstr "Plakken" + +#: addons/goto/class_gotomasses.inc:382 +#, fuzzy +msgid "Abort" +msgstr "Poort" + +#: addons/goto/class_gotomasses.inc:408 +#: addons/goto/events/DaemonEvent_update.tpl:47 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:47 +#: addons/goto/events/DaemonEvent_halt.tpl:47 +#: addons/goto/events/DaemonEvent_wakeup.tpl:47 +#: addons/goto/events/DaemonEvent_reboot.tpl:47 +#: addons/goto/events/DaemonEvent_notify.tpl:81 +#: addons/goto/events/DaemonEvent_rescan.tpl:47 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:47 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:47 +#: addons/goto/events/DaemonEvent_faireboot.tpl:47 +#: addons/goto/events/class_DaemonEvent_notify.inc:77 +#: addons/goto/events/class_DaemonEvent_notify.inc:78 +#: addons/goto/events/class_DaemonEvent_notify.inc:103 +#: addons/goto/events/DaemonEvent_localboot.tpl:47 +#: addons/goto/events/DaemonEvent_memcheck.tpl:47 +#: addons/goto/events/DaemonEvent_activate.tpl:47 +#: addons/goto/events/DaemonEvent_lock.tpl:47 +#: addons/goto/events/DaemonEvent_reinstall.tpl:51 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:47 +#, fuzzy +msgid "Target" +msgstr "Chipset" + +#: addons/goto/class_gotomasses.inc:409 +msgid "Task" +msgstr "Taak" + +#: addons/goto/class_gotomasses.inc:411 +#: addons/goto/events/DaemonEvent_update.tpl:9 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:9 +#: addons/goto/events/DaemonEvent_halt.tpl:9 +#: addons/goto/events/DaemonEvent_wakeup.tpl:9 +#: addons/goto/events/DaemonEvent_reboot.tpl:9 +#: addons/goto/events/DaemonEvent_notify.tpl:28 +#: addons/goto/events/DaemonEvent_rescan.tpl:9 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:9 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:9 +#: addons/goto/events/DaemonEvent_faireboot.tpl:9 +#: addons/goto/events/DaemonEvent_localboot.tpl:9 +#: addons/goto/events/DaemonEvent_memcheck.tpl:9 +#: addons/goto/events/DaemonEvent_lock.tpl:9 +#: addons/goto/events/DaemonEvent_reinstall.tpl:9 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:9 +#, fuzzy +msgid "Schedule" +msgstr "PHPScheduleIt" + +#: addons/goto/class_gotomasses.inc:413 +#: addons/goto/events/DaemonEvent_update.tpl:39 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:39 +#: addons/goto/events/DaemonEvent_halt.tpl:39 +#: addons/goto/events/DaemonEvent_wakeup.tpl:39 +#: addons/goto/events/DaemonEvent_reboot.tpl:39 +#: addons/goto/events/DaemonEvent_notify.tpl:73 +#: addons/goto/events/DaemonEvent_rescan.tpl:39 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:39 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:39 +#: addons/goto/events/DaemonEvent_faireboot.tpl:39 +#: addons/goto/events/DaemonEvent_localboot.tpl:39 +#: addons/goto/events/DaemonEvent_memcheck.tpl:39 +#: addons/goto/events/DaemonEvent_activate.tpl:39 +#: addons/goto/events/DaemonEvent_lock.tpl:39 +#: addons/goto/events/DaemonEvent_reinstall.tpl:43 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:39 +msgid "Status" +msgstr "Status" + +#: addons/goto/class_gotomasses.inc:441 +#, fuzzy +msgid "Pause job" +msgstr "Plakken" + +#: addons/goto/class_gotomasses.inc:448 +#, fuzzy +msgid "Resume job" +msgstr "Herinstalleer" + +#: addons/goto/class_gotomasses.inc:455 +#, fuzzy +msgid "Execute now" +msgstr "Commando" + +#: addons/goto/class_gotomasses.inc:462 +#, fuzzy +msgid "View logs" +msgstr "Beschikbare programma's" + +#: addons/goto/class_gotomasses.inc:477 +#, fuzzy +msgid "Abort job" +msgstr "Initialen" + +#: addons/goto/class_gotomasses.inc:521 +#, fuzzy +msgid "Waiting" +msgstr "Waarschuwing" + +#: addons/goto/class_gotomasses.inc:527 +#, fuzzy +msgid "Processed" +msgstr "Eigenschappen" + +#: addons/goto/class_gotomasses.inc:542 +#, fuzzy +msgid "Detection" +msgstr "Sectie" + +#: addons/goto/class_gotomasses.inc:550 +#, fuzzy +msgid "in progress" +msgstr "Eigenschappen" + +#: addons/goto/class_gotomasses.inc:563 +msgid "immediately" +msgstr "" + +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:735 +#: addons/goto/class_gotomasses.inc:775 +#, fuzzy, php-format +msgid "Cannot update queue entry: %s" +msgstr "Onbekende FAI status %s" + +#: addons/goto/class_gotomasses.inc:691 +#, php-format +msgid "Cannot update queue entries." +msgstr "" + +#: addons/goto/class_gotomasses.inc:740 +#, php-format +msgid "Required class '%s' cannot be found: job not aborted!" +msgstr "" + +#: addons/goto/class_gotomasses.inc:816 +#, fuzzy, php-format +msgid "Cannot load queue entries: %s" +msgstr "Onbekende FAI status %s" + +#: addons/goto/class_gotomasses.inc:910 addons/goto/class_gotomasses.inc:916 +#, fuzzy +msgid "System deployment" +msgstr "Systeembeheer" + +#: addons/goto/class_gotomasses.inc:911 +msgid "Provide a mechanism to automatically activate systems" +msgstr "" + +#: addons/goto/log_view.tpl:7 +#, fuzzy +msgid "Available logs" +msgstr "Beschikbare programma's" + +#: addons/goto/log_view.tpl:12 +#, fuzzy +msgid "Selected log" +msgstr "Selecteer" + +#: addons/goto/log_view.tpl:17 +#, fuzzy +msgid "No logs for this host available!" +msgstr "Bestand is beschikbaar" + +#: addons/goto/events/class_DaemonEvent_lock.inc:29 +#: addons/goto/events/class_DaemonEvent_lock.inc:30 +#, fuzzy +msgid "Lock" +msgstr "Geblokkeerd" + +#: addons/goto/events/DaemonEvent_update.tpl:18 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:18 +#: addons/goto/events/DaemonEvent_halt.tpl:18 +#: addons/goto/events/DaemonEvent_wakeup.tpl:18 +#: addons/goto/events/DaemonEvent_reboot.tpl:18 +#: addons/goto/events/DaemonEvent_rescan.tpl:18 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:18 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:18 +#: addons/goto/events/DaemonEvent_faireboot.tpl:18 +#: addons/goto/events/DaemonEvent_localboot.tpl:18 +#: addons/goto/events/DaemonEvent_memcheck.tpl:18 +#: addons/goto/events/DaemonEvent_activate.tpl:18 +#: addons/goto/events/DaemonEvent_lock.tpl:18 +#: addons/goto/events/DaemonEvent_reinstall.tpl:18 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:18 +#, fuzzy +msgid "System list" +msgstr "Systeem analyse" + +#: addons/goto/events/DaemonEvent_update.tpl:35 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:35 +#: addons/goto/events/DaemonEvent_halt.tpl:35 +#: addons/goto/events/DaemonEvent_wakeup.tpl:35 +#: addons/goto/events/DaemonEvent_reboot.tpl:35 +#: addons/goto/events/DaemonEvent_notify.tpl:69 +#: addons/goto/events/DaemonEvent_rescan.tpl:35 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:35 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:35 +#: addons/goto/events/DaemonEvent_faireboot.tpl:35 +#: addons/goto/events/DaemonEvent_localboot.tpl:35 +#: addons/goto/events/DaemonEvent_memcheck.tpl:35 +#: addons/goto/events/DaemonEvent_activate.tpl:35 +#: addons/goto/events/DaemonEvent_lock.tpl:35 +#: addons/goto/events/DaemonEvent_reinstall.tpl:35 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:35 +#, fuzzy +msgid "ID" +msgstr "GID" + +#: addons/goto/events/DaemonEvent_update.tpl:43 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:43 +#: addons/goto/events/DaemonEvent_halt.tpl:43 +#: addons/goto/events/DaemonEvent_wakeup.tpl:43 +#: addons/goto/events/DaemonEvent_reboot.tpl:43 +#: addons/goto/events/DaemonEvent_notify.tpl:77 +#: addons/goto/events/DaemonEvent_rescan.tpl:43 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:43 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:43 +#: addons/goto/events/DaemonEvent_faireboot.tpl:43 +#: addons/goto/events/DaemonEvent_localboot.tpl:43 +#: addons/goto/events/DaemonEvent_memcheck.tpl:43 +#: addons/goto/events/DaemonEvent_activate.tpl:43 +#: addons/goto/events/DaemonEvent_lock.tpl:43 +#: addons/goto/events/DaemonEvent_reinstall.tpl:47 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:43 +#, fuzzy +msgid "Result" +msgstr "Resolutie" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:37 +#, fuzzy +msgid "GOto reload" +msgstr "naar map" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:38 +#, fuzzy +msgid "Reload GOto settings" +msgstr "Posix instellingen" + +#: addons/goto/events/class_DaemonEvent_activate.inc:29 +#: addons/goto/events/class_DaemonEvent_activate.inc:30 +#, fuzzy +msgid "Unlock" +msgstr "Geblokkeerd" + +#: addons/goto/events/class_DaemonEvent_faireboot.inc:28 +#: addons/goto/events/class_DaemonEvent_faireboot.inc:29 +#, fuzzy +msgid "Abort installation" +msgstr "Werkstation" + +#: addons/goto/events/target_list.tpl:5 +msgid "Apply" +msgstr "Toepassen" + +#: addons/goto/events/target_list.tpl:6 +msgid "Cancel" +msgstr "Annuleren" + +#: addons/goto/events/DaemonEvent_notify.tpl:7 +#, fuzzy +msgid "Message settings" +msgstr "Gebruikersinstellingen" + +#: addons/goto/events/DaemonEvent_notify.tpl:10 +#, fuzzy +msgid "Sender" +msgstr "Server" + +#: addons/goto/events/DaemonEvent_notify.tpl:14 +#: addons/goto/events/class_DaemonEvent_notify.inc:94 +#, fuzzy +msgid "Subject" +msgstr "Selecteer" + +#: addons/goto/events/DaemonEvent_notify.tpl:18 +#: addons/goto/events/class_DaemonEvent_notify.inc:97 +msgid "Message" +msgstr "Bericht" + +#: addons/goto/events/DaemonEvent_notify.tpl:37 +#, fuzzy +msgid "Target users" +msgstr "Shares" + +#: addons/goto/events/DaemonEvent_notify.tpl:44 +#, fuzzy +msgid "Target groups" +msgstr "Shares" + +#: addons/goto/events/class_DaemonEvent.inc:119 +#, fuzzy +msgid "This job has no template!" +msgstr "Deze 'dn' heeft geen terminal mogelijkheden." + +#: addons/goto/events/class_DaemonEvent.inc:135 +#, fuzzy, php-format +msgid "Create '%s' job" +msgstr "Nieuw FAI object aanmaken" + +#: addons/goto/events/class_DaemonEvent.inc:234 +msgid "Add" +msgstr "Toevoegen" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:31 +#, fuzzy +msgid "Reload fai release db" +msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." + +#: addons/goto/events/class_DaemonEvent_wakeup.inc:30 +#, fuzzy +msgid "Wake system" +msgstr "Systeem" + +#: addons/goto/events/class_DaemonEvent_activate_new.inc:40 +#: addons/goto/events/class_DaemonEvent_activate_new.inc:41 +#, fuzzy +msgid "Activate new" +msgstr "Geactiveerd" + +#: addons/goto/events/class_EventTargetAddList.inc:51 +#: addons/goto/events/class_EventTargetAddUsersList.inc:45 +#, fuzzy +msgid "Targets" +msgstr "Shares" + +#: addons/goto/events/class_EventTargetAddList.inc:55 +msgid "" +"This dialog shows all available targets for the event. Check the targets you " +"want to add and use the 'Apply' button." +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:66 +#: addons/goto/events/class_EventTargetAddUsersList.inc:60 +#, fuzzy +msgid "System / Department" +msgstr "Afdeling" + +#: addons/goto/events/class_EventTargetAddList.inc:73 +#, fuzzy +msgid "Display server" +msgstr "Scherm" + +#: addons/goto/events/class_EventTargetAddList.inc:74 +#, fuzzy +msgid "Display workstation" +msgstr "Windows werkstation" + +#: addons/goto/events/class_EventTargetAddList.inc:75 +#, fuzzy +msgid "Display object groups" +msgstr "Toon overeenkomende objecten" + +#: addons/goto/events/class_EventTargetAddList.inc:76 +msgid "Filter by IP range" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:3 +#, fuzzy +msgid "Year" +msgstr "Zoeken" + +#: addons/goto/events/timestamp_select.tpl:4 +#, fuzzy +msgid "Month" +msgstr "maand" + +#: addons/goto/events/timestamp_select.tpl:5 +#, fuzzy +msgid "Day" +msgstr "dag" + +#: addons/goto/events/timestamp_select.tpl:7 +#, fuzzy +msgid "Hour" +msgstr "uur" + +#: addons/goto/events/timestamp_select.tpl:8 +#, fuzzy +msgid "Minute" +msgstr "Printer" + +#: addons/goto/events/timestamp_select.tpl:9 +#, fuzzy +msgid "Second" +msgstr "Sectie" + +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:28 +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:29 +msgid "Reload LDAP config" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_notify.inc:46 +#: addons/goto/events/class_DaemonEvent_notify.inc:47 +#, fuzzy +msgid "Send message" +msgstr "Bericht in wachtstand plaatsen" + +#: addons/goto/events/class_DaemonEvent_notify.inc:100 +#, fuzzy +msgid "From" +msgstr "willekeurig" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:49 +msgid "" +"This dialog shows all available targets for your event, check the targets " +"you want to add and use the 'Use' button to accept." +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:65 +#, fuzzy +msgid "Display users" +msgstr "Scherm" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:66 +#, fuzzy +msgid "Display groups" +msgstr "Toon overeenkomende objecten" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:31 +msgid "Reload fai server db" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:28 +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:29 +#, fuzzy +msgid "Installation activation" +msgstr "Windows werkstation" + +#: addons/goto/events/DaemonEvent_activate.tpl:9 +#, fuzzy +msgid "Time schedule" +msgstr "Geplande bijwerking" + +#: addons/goto/events/DaemonEvent_reinstall.tpl:39 +#, fuzzy +msgid "Progress" +msgstr "Eigenschappen" + +#: addons/goto/class_goto_import_file.inc:90 +msgid "" +"Selected entries will be skipped because of errors. Do you want to proceed?" +msgstr "" + +#: addons/goto/class_goto_import_file.inc:131 +#, php-format +msgid "Import complete: %s events successfully send, %s failed" +msgstr "" + +#: personal/environment/class_environment.inc:9 +#: personal/environment/class_environment.inc:433 +#: personal/environment/class_environment.inc:434 +#: personal/environment/class_environment.inc:442 +#: personal/environment/class_environment.inc:443 +#: personal/environment/class_environment.inc:446 +#: personal/environment/class_environment.inc:447 +#: personal/environment/class_environment.inc:450 +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:473 +#: personal/environment/class_environment.inc:474 +#: personal/environment/class_environment.inc:478 +#: personal/environment/class_environment.inc:479 +#: personal/environment/class_environment.inc:482 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1766 +msgid "Environment" +msgstr "Omgeving" + +#: personal/environment/class_environment.inc:139 +#, fuzzy, php-format +msgid "Device '%s' is not available anymore. It will be removed!" +msgstr "" +"Er is geen MySQL extensie beschikbaar. Controleer uw PHP installatie a.u.b." + +#: personal/environment/class_environment.inc:212 +msgid "auto" +msgstr "auto" + +#: personal/environment/class_environment.inc:234 +#, fuzzy, php-format +msgid "Cannot open file '%s'!" +msgstr "Kan bestand '%s' niet openen." + +#: personal/environment/class_environment.inc:271 +#: personal/environment/class_environment.inc:272 +msgid "disabled" +msgstr "gedeactiveerd" + +#: personal/environment/class_environment.inc:307 +#, php-format +msgid "" +"Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk " +"profile will be disabled!" +msgstr "" + +#: personal/environment/class_environment.inc:360 +#, fuzzy, php-format +msgid "Profile server '%s' is not available anymore. Switched to server '%s'." +msgstr "" +"Het geselecteerde kiosk profiel '%s' is niet meer beschikbaar. Het huidige " +"profiel wordt op 'geen' ingesteld." + +#: personal/environment/class_environment.inc:364 +#, fuzzy, php-format +msgid "" +"Profile server '%s' is not available anymore. Kiosk profile will be disabled." +msgstr "" +"Het geselecteerde kiosk profiel '%s' is niet meer beschikbaar. Het huidige " +"profiel wordt op 'geen' ingesteld." + +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1148 +msgid "POSIX" +msgstr "" + +#: personal/environment/class_environment.inc:583 +#: personal/environment/environment.tpl:246 +msgid "Logon scripts" +msgstr "Login scripts" + +#: personal/environment/class_environment.inc:673 +#, fuzzy +msgid "Share" +msgstr "Shares" + +#: personal/environment/class_environment.inc:763 +#: personal/environment/environment.tpl:257 +#: personal/environment/environment.tpl:303 +msgid "Used by all users" +msgstr "" + +#: personal/environment/class_environment.inc:766 +#: personal/environment/environment.tpl:259 +#: personal/environment/environment.tpl:305 +msgid "Used by some users" +msgstr "" + +#: personal/environment/class_environment.inc:779 +#: personal/environment/class_environment.inc:780 +#: personal/environment/class_environment.inc:789 +#: personal/environment/class_environment.inc:790 +msgid "Reset password hash" +msgstr "Wachtwoord hashwaarde herstellen" + +#: personal/environment/class_environment.inc:794 +msgid "Delete share entry" +msgstr "Verwijder share regel" + +#: personal/environment/class_environment.inc:988 +msgid "Cannot set default printer flag for groups!" +msgstr "" + +#: personal/environment/class_environment.inc:1141 +#: personal/environment/class_environment.inc:1711 +#: personal/environment/class_environment.inc:1780 +#, fuzzy +msgid "Profile quota" +msgstr "Profiel quota" + +#: personal/environment/class_environment.inc:1148 +#, fuzzy +msgid "environment" +msgstr "Omgeving" + +#: personal/environment/class_environment.inc:1329 +msgid "group share" +msgstr "groepsshare" + +#: personal/environment/class_environment.inc:1363 +msgid "Administrator" +msgstr "Beheerder" + +#: personal/environment/class_environment.inc:1368 +msgid "Default printer" +msgstr "Standaard printer" + +#: personal/environment/class_environment.inc:1767 +#, fuzzy +msgid "Environment settings" +msgstr "Gebruikersomgeving instellingen" + +#: personal/environment/class_environment.inc:1771 +msgid "My account" +msgstr "Mijn account" + +#: personal/environment/class_environment.inc:1775 +msgid "Command to extend the list of possible screen resolutions" +msgstr "" + +#: personal/environment/class_environment.inc:1779 +#, fuzzy +msgid "Profile server" +msgstr "Bestandserver" + +#: personal/environment/class_environment.inc:1781 +#: personal/environment/environment.tpl:41 +#: personal/environment/environment.tpl:106 +msgid "Cache profile localy" +msgstr "Profiel lokaal cachen" + +#: personal/environment/class_environment.inc:1785 +#: personal/environment/environment.tpl:174 +msgid "Resolution changeable during session" +msgstr "Resolutie is binnen de sessie te veranderen" + +#: personal/environment/class_environment.inc:1787 +#: personal/environment/logonManagement.tpl:56 +msgid "Logon script" +msgstr "Login script" + +#: personal/environment/environment.tpl:3 +msgid "The environment extension is currently disabled." +msgstr "De omgevings extensie is momenteel uitgeschakeld." + +#: personal/environment/environment.tpl:11 +msgid "Profiles" +msgstr "Profielen" + +#: personal/environment/environment.tpl:14 +#: personal/environment/environment.tpl:207 +#: personal/environment/environment.tpl:288 +msgid "Environment managment settings" +msgstr "Omgevingsbeheer instellingen" + +#: personal/environment/environment.tpl:22 +#: personal/environment/environment.tpl:55 +msgid "Use profile managment" +msgstr "Gebruik profielbeheer" + +#: personal/environment/environment.tpl:26 +#: personal/environment/environment.tpl:65 +msgid "Profil path" +msgstr "Profielpad" + +#: personal/environment/environment.tpl:36 +#: personal/environment/environment.tpl:95 +msgid "MB" +msgstr "MB" + +#: personal/environment/environment.tpl:47 +msgid "Profile managment" +msgstr "Profiel beheer" + +#: personal/environment/environment.tpl:62 +msgid "Profile server managment" +msgstr "Profielserver beheer" + +#: personal/environment/environment.tpl:89 +msgid "Profil quota" +msgstr "Profiel quota" + +#: personal/environment/environment.tpl:120 +msgid "Kiosk profile settings" +msgstr "Kiosk profiel instellingen" + +#: personal/environment/environment.tpl:145 +#, fuzzy +msgid "Profile" +msgstr "Profielen" + +#: personal/environment/environment.tpl:164 +msgid "Manage" +msgstr "Beheer" + +#: personal/environment/environment.tpl:222 +msgid "User used to connect to the share" +msgstr "Te gebruiken gebruikernaam om met de share te verbinden" + +#: personal/environment/environment.tpl:225 +msgid "Select a share" +msgstr "Selecteer een share" + +#: personal/environment/environment.tpl:233 +msgid "Mount path" +msgstr "Mount pad" + +#: personal/environment/environment.tpl:248 +#: personal/environment/logonManagement.tpl:1 +#: personal/environment/logonManagement.tpl:5 +msgid "Logon script management" +msgstr "Login script beheer" + +#: personal/environment/environment.tpl:295 +msgid "Hotplug device settings" +msgstr "Hotplug apparaat instellingen" + +#: personal/environment/environment.tpl:342 +msgid "" +"Using this option will overwrite the complete printer settings for all " +"currently edited objects!" +msgstr "" + +#: personal/environment/environment.tpl:343 +#: personal/environment/environment.tpl:376 +msgid "Printer settings" +msgstr "Printer instellingen" + +#: personal/environment/environment.tpl:360 +#: personal/environment/environment.tpl:393 +msgid "Toggle admin" +msgstr "Beheerders omschakeling" + +#: personal/environment/environment.tpl:363 +#: personal/environment/environment.tpl:396 +msgid "Toggle default" +msgstr "Standaard omschakeling" + +#: personal/environment/class_logonManagementDialog.inc:107 +#: personal/environment/logonManagement.tpl:10 +#, fuzzy +msgid "Script name" +msgstr "Scriptnaam" + +#: personal/environment/main.inc:134 +msgid "User environment settings" +msgstr "Gebruikersomgeving instellingen" + +#: personal/environment/class_selectPrinterDialog.inc:107 +#, fuzzy +msgid "Please select a printer!" +msgstr "Selecteer a.u.b. een geldig bestand." + +#: personal/environment/class_hotplugDialog.inc:64 +#, fuzzy +msgid "Please select a hotplug device!" +msgstr "Selecteer a.u.b. een geldig bestand." + +#: personal/environment/selectPrinterDialog.tpl:1 +#, fuzzy +msgid "Add printer devices" +msgstr "Voeg printer toe" + +#: personal/environment/selectPrinterDialog.tpl:48 +msgid "Display printers matching" +msgstr "Toon de overeenkomende printers" + +#: personal/environment/selectPrinterDialog.tpl:53 +msgid "Regular expression for matching printer names" +msgstr "Reguliere expressie voor overeenkomende printernamen" + +#: personal/environment/logonManagement.tpl:8 +msgid "Logon script settings" +msgstr "Login script instellingen" + +#: personal/environment/logonManagement.tpl:24 +msgid "Priority" +msgstr "Prioriteit" + +#: personal/environment/logonManagement.tpl:34 +msgid "Logon script flags" +msgstr "Login script kenmerken" + +#: personal/environment/logonManagement.tpl:38 +msgid "Last script" +msgstr "Laatste script" + +#: personal/environment/logonManagement.tpl:44 +msgid "Script can be replaced by user" +msgstr "Script kan vervangen worden door gebruiker" + +#: personal/environment/hotplugDialog.tpl:1 +msgid "Add hotplug devices" +msgstr "Hotplug apparaten toevoegen" + +#: personal/environment/hotplugDialog.tpl:5 +msgid "Hotplug management" +msgstr "Hotplug beheer" + +#: personal/environment/hotplugDialog.tpl:10 +msgid "Select hotplug device to add" +msgstr "Selecteer toe te voegen hotplug apparaat" + +#: personal/environment/hotplugDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Selecteer de afdeling waarbinnen gezocht zal worden" + +#: personal/environment/hotplugDialog.tpl:48 +msgid "Regular expression for matching hotplugs" +msgstr "Reguliere expressie voor overeenkomende hotplugs" + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "Systeembeheer" + +#~ msgid "Spool server" +#~ msgstr "Spool server" + +#, fuzzy +#~ msgid "GOsa configuration %s/%s is not readable. Aborted." +#~ msgstr "GOsa configuratie %s/gosa.conf is niet leesbaar. Geannuleerd." + +#~ msgid "Directory '%s' specified as compile directory is not accessible!" +#~ msgstr "" +#~ "Directory '%s' die opgegeven is als compileer directory is niet " +#~ "toegankelijk!" + +#, fuzzy +#~ msgid "Password method" +#~ msgstr "Wachtwoord encryptie" + +#~ msgid "" +#~ "The passwords you've entered as 'New password' and 'Repeated new " +#~ "password' do not match." +#~ msgstr "" +#~ "Het nieuwe wachtwoord en het herhaalde wachtwoord komen niet met elkaar " +#~ "overeen." + +#~ msgid "New password" +#~ msgstr "Nieuw wachtwoord" + +#~ msgid "The password used as new and current are too similar." +#~ msgstr "" +#~ "Het huidige wachtwoord en het nieuwe wachtwoord lijken te veel op elkaar." + +#~ msgid "The password used as new is to short." +#~ msgstr "Het nieuw opgegeven wachtwoord is te kort." + +#~ msgid "Current password" +#~ msgstr "Huidig wachtwoord" + +#~ msgid "Please check the username/password combination." +#~ msgstr "Controleer a.u.b. de gebruikersnaam/wachtwoord combinatie." + +#~ msgid "You have no permissions to change your password." +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." + +#~ msgid "External password changer reported a problem: " +#~ msgstr "Extern wachtwoord verander mechanisme rapporteerde een probleem:" + +#~ msgid "Session will not be encrypted." +#~ msgstr "De sessie zal niet versleuteld zijn." + +#~ msgid "Enter SSL session" +#~ msgstr "Gebruik een SSL sessie" + +#, fuzzy +#~ msgid "PHP configuration" +#~ msgstr "FAX database" + +#~ msgid "" +#~ "FATAL: Register globals is on. GOsa will refuse to login unless this is " +#~ "fixed by an administrator." +#~ msgstr "" +#~ "FATAAL: 'Register globals' is geactiveerd in PHP. GOsa zal niemand laten " +#~ "inloggen totdat dit opgelost is door een systeembeheerder." + +#, fuzzy +#~ msgid "Password change" +#~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" + +#, fuzzy +#~ msgid "Your password is about to expire, please change your password!" +#~ msgstr "" +#~ "Uw wachtwoord zal spoedig verlopen! Kies a.u.b. een nieuw wachtwoord." + +#, fuzzy +#~ msgid "Plugin" +#~ msgstr "in" + +#, fuzzy +#~ msgid "FATAL: Cannot find any plugin definitions for plugin '%s'!" +#~ msgstr "FATAAL: Kan geen enkele module defenities vinden voor module '%s'!" + +#, fuzzy +#~ msgid "Smarty" +#~ msgstr "Samenvatting" + +#, fuzzy +#~ msgid "Session is not encrypted!" +#~ msgstr "De sessie zal niet versleuteld zijn." + +#, fuzzy +#~ msgid "Smarty error" +#~ msgstr "Systeem status" + +#, fuzzy +#~ msgid "Your LDAP setup contains old schema definitions:" +#~ msgstr "" +#~ "Uw LDAP installatie bevat oude schema definities. Draai het installatie " +#~ "programma a.u.b. opnieuw." + +#~ msgid "Please specify a valid username!" +#~ msgstr "Geef a.u.b. een geldige gebruikersnaam op!" + +#~ msgid "Please specify your password!" +#~ msgstr "Geef a.u.b. uw wachtwoord op!" + +#, fuzzy +#~ msgid "Authentication error" +#~ msgstr "Nagios authenticatie" + +#, fuzzy +#~ msgid "Account locked. Please contact your system administrator!" +#~ msgstr "" +#~ "Account is geblokkeerd. Neem a.u.b. contact op met de systeembeheerder." + +#~ msgid "" +#~ "Your browser has cookies disabled. Please enable cookies and reload this " +#~ "page before logging in!" +#~ msgstr "" +#~ "Cookies zijn uitgeschakeld in uw browser. Schakel cookies a.u.b. in en " +#~ "herlaad deze pagina voordat u inlogt!" + +#~ msgid "Help browser" +#~ msgstr "Help verkenner" + +#~ msgid "There is no helpfile specified for this class" +#~ msgstr "Er is (nog) geen help bestand aanwezig voor deze klasse." + +#~ msgid "previous" +#~ msgstr "vorige" + +#~ msgid "next" +#~ msgstr "volgende" + +#~ msgid "Helpdir '%s' is not accessible, can't read any helpfiles." +#~ msgstr "" +#~ "Help directory '%s' is niet toegankelijk. Er kunnen geen helpbestanden " +#~ "gelezen worden." + +#~ msgid "Session conflict detected" +#~ msgstr "Er is een sessie conflict gedetecteerd" + +#, fuzzy +#~ msgid "" +#~ "Probably there's another active instance of your session. Multiple window " +#~ "operation is technical not possible and heavily depends on the browser " +#~ "you're using. Usage of different browsers at a time (i.e. IE and Mozilla) " +#~ "is possible. Pressing the Logout button will close this session." +#~ msgstr "" +#~ "Er is vermoedelijk een andere actieve instantiatie van uw sessie. Werken " +#~ "m.b.v. meerdere schermen is technisch onmogelijk en is sterk afhankelijk " +#~ "van de gebruikte browser. Gelijktijdig gebruik van verschillende browsers " +#~ "(bijvoorbeeld Internet Explorer en Mozilla) is wel mogelijk. Via de " +#~ "Uitloggen knop wordt deze sessie afgesloten." + +#~ msgid "" +#~ "Ignoring this message will change/destroy the data you're currently " +#~ "editing, so please close multiple windows and log in again." +#~ msgstr "" +#~ "Het negeren van dit bericht zal de data die u op dit moment aan het " +#~ "bewerken bent veranderen/vernietigen, dus sluit a.u.b. enige overige " +#~ "vensters en log opnieuw in." + +#~ msgid "Logout" +#~ msgstr "Uitloggen" + +#~ msgid "Locking conflict detected" +#~ msgstr "Er is een blokkade conflict gedetecteerd" + +#, fuzzy +#~ msgid "" +#~ "If this lock detection is false, the other person has obviously closed " +#~ "the webbrowser during the edit operation. You may want to take over the " +#~ "lock by pressing the 'Edit anyway' button." +#~ msgstr "" +#~ "Indien deze blokkade detectie foutief is dan heeft de andere persoon de " +#~ "webbrowser afgesloten tijdens de bewerking. U kunt de blokkade in dit " +#~ "geval overnemen door de Alsnog bewerken knop te gebruiken." + +#, fuzzy +#~ msgid "Restoring object snapshots" +#~ msgstr "Nieuwe objectgroep aanmaken" + +#~ msgid "Object" +#~ msgstr "Object" + +#, fuzzy +#~ msgid "There is no snapshot available that could be restored" +#~ msgstr "" +#~ "Er is geen MySQL extensie beschikbaar. Controleer uw PHP installatie a.u." +#~ "b." + +#, fuzzy +#~ msgid "Creating object snapshots" +#~ msgstr "Nieuwe objectgroep aanmaken" + +#, fuzzy +#~ msgid "Your GOsa session has been closed!" +#~ msgstr "Uw GOsa sessie is verlopen!" + +#, fuzzy +#~ msgid "Change your password" +#~ msgstr "Verander wachtwoord" + +#, fuzzy +#~ msgid "Success" +#~ msgstr "Export was succesvol" + +#~ msgid "Directory" +#~ msgstr "Directory" + +#~ msgid "Username" +#~ msgstr "Gebruikersnaam" + +#, fuzzy +#~ msgid "New password repeated" +#~ msgstr "Nieuw wachtwoord" + +#, fuzzy +#~ msgid "Password strength" +#~ msgstr "Wachtwoord encryptie" + +#, fuzzy +#~ msgid "Change" +#~ msgstr "Kanaal" + +#, fuzzy +#~ msgid "Click here to change your password" +#~ msgstr "Klik hier om uw wachtwoord te veranderen." + +#, fuzzy +#~ msgid "Your password has expired. Please choose a new one!" +#~ msgstr "Uw wachtwoord is verlopen! Kies a.u.b. een nieuw wachtwoord. " + +#, fuzzy +#~ msgid "Old password" +#~ msgstr "Oud wachtwoord" + +#, fuzzy +#~ msgid "Verify password" +#~ msgstr "Nogmaals wachtwoord" + +#~ msgid "Change password" +#~ msgstr "Verander wachtwoord" + +#, fuzzy +#~ msgid "Login screen" +#~ msgstr "Log DB gebruiker" + +#, fuzzy +#~ msgid "" +#~ "Please use your username and your password to log into the site " +#~ "administration system." +#~ msgstr "Voer uw gebruikersnaam en wachtwoord in" + +#~ msgid "Sign in" +#~ msgstr "Inloggen" + +#~ msgid "Click here to log in" +#~ msgstr "Klik hier om in te loggen" + +#~ msgid "Information" +#~ msgstr "Informatie" + +#, fuzzy +#~ msgid "New ACL" +#~ msgstr "Nieuw" + +#, fuzzy +#~ msgid "ACL type" +#~ msgstr "type" + +#, fuzzy +#~ msgid "Select an acl type" +#~ msgstr "Selecteer een basis" + +#, fuzzy +#~ msgid "Additional filter options" +#~ msgstr "Programma instellingen" + +#~ msgid "Members" +#~ msgstr "Groepsleden" + +#, fuzzy +#~ msgid "List of available ACL categories" +#~ msgstr "Lijst met beschikbare pakketten" + +#, fuzzy +#~ msgid "ACL for this object" +#~ msgstr "Zoeken naar iconv ondersteuning" + +#, fuzzy +#~ msgid "Available roles" +#~ msgstr "Beschikbare programma's" + +#~ msgid "" +#~ "You are currently editing a database entry. Do you want to dismiss the " +#~ "changes?" +#~ msgstr "" +#~ "U bent momenteel database gegevens aan het bewerken. Wilt u eventuele " +#~ "wijzigingen ongedaan maken?" + +#~ msgid "Main" +#~ msgstr "Hoofdmenu" + +#~ msgid "Help" +#~ msgstr "Help" + +#~ msgid "Sign out" +#~ msgstr "Uitloggen" + +#~ msgid "Signed in:" +#~ msgstr "Aangemeld:" + +#~ msgid "" +#~ "The size limit option makes LDAP operations faster and saves the LDAP " +#~ "server from getting too much load. The easiest way to handle big " +#~ "databases without long timeouts would be to limit your search to smaller " +#~ "values and use filters to get the entries you are looking for." +#~ msgstr "" +#~ "De grootte limiet optie maakt LDAP bewerkingen sneller en behoedt de LDAP " +#~ "server voor een te grote werkdruk. De eenvoudigste manier om met grote " +#~ "databases te werken zonder lange timeouts is door zoekopdrachten in " +#~ "grootte te beperken en door filters te gebruiken voor de informatie die u " +#~ "zoekt." + +#~ msgid "Please choose the way to react for this session" +#~ msgstr "" +#~ "Kies a.u.b. de manier waarop gereageerd moet worden voor deze sessie" + +#~ msgid "ignore this error and show all entries the LDAP server returns" +#~ msgstr "" +#~ "Negeer deze fout en toon alle gegevens die de LDAP server teruggeeft" + +#~ msgid "" +#~ "ignore this error and show all entries that fit into the defined " +#~ "sizelimit and let me use filters instead" +#~ msgstr "" +#~ "Negeer deze fout en toon alle gegevens die passen binnen de gedefiniëerde " +#~ "grootte limiet en laat me daarvoor in de plaats filters gebruiken" + +#~ msgid "Set" +#~ msgstr "Stel in" + +#, fuzzy +#~ msgid "Copy & paste wizard" +#~ msgstr "Kopieren & plakken wizard" + +#~ msgid "" +#~ "Some values need to be unique in the complete directory while some " +#~ "combinations make no sense. GOsa shows the relevant attributes. Please " +#~ "maintain the values below to fullfill the policies." +#~ msgstr "" +#~ "Somige waardes moeten uniek zijn binnen de gehele directory, terwijl " +#~ "sommige combinaties geen zin hebben. GOsa toont de relevante attributen. " +#~ "Bewaar de waardes hieronder a.u.b. om aan deze vereisten te voldoen." + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#, fuzzy +#~ msgid "Cancel all" +#~ msgstr "Annuleren" + +#~ msgid "Operation complete" +#~ msgstr "Bewerking afgerond" + +#~ msgid "Finish" +#~ msgstr "Opslaan" + +#~ msgid "Your GOsa session has expired!" +#~ msgstr "Uw GOsa sessie is verlopen!" + +#~ msgid "" +#~ "The last interaction with the GOsa web interface has been some time ago " +#~ "in the past. For security reasons, the session has been closed. To " +#~ "continue with administrative tasks, please sign in again." +#~ msgstr "" +#~ "Uw laatste interactie met de GOsa webinterface is enige tijd geleden. Uit " +#~ "veiligheidsoverwegingen is de sessie gesloten. Om door te gaan met " +#~ "administratieve taken, dient u opnieuw in te loggen." + +#~ msgid "Sign in again" +#~ msgstr "Opnieuw inloggen" + +#~ msgid "GOsa help viewer" +#~ msgstr "GOsa help" + +#~ msgid "Index" +#~ msgstr "Index" + +#~ msgid "Search" +#~ msgstr "Zoeken" + +#, fuzzy +#~ msgid "Please select the preferred language" +#~ msgstr "Voorkeurstaal" + +#, fuzzy +#~ msgid "Please select your preferred language here" +#~ msgstr "Voorkeurstaal" + +#, fuzzy +#~ msgid "Checking PHP version" +#~ msgstr "Controle op PHP versie (>=4.1.0)" + +#, fuzzy +#~ msgid "PHP must be of version %s or above." +#~ msgstr "" +#~ "PHP moet minimaal versienummer 4.1.0 hebben. GOsa gebruikt bepaalde " +#~ "functionaliteit die in voorgaande versies niet goed of helemaal niet " +#~ "voorhanden is." + +#, fuzzy +#~ msgid "mbstring" +#~ msgstr "Samba Instellingen" + +#, fuzzy +#~ msgid "MySQL" +#~ msgstr "LDAP fout:" + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to communicate with several supported databases." +#~ msgstr "" +#~ "MySQL ondersteuning is nodig voor het lezen van GOfax rapporten uit " +#~ "databases." + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to show printers that are not defined within " +#~ "the LDAP." +#~ msgstr "" +#~ "MySQL ondersteuning is nodig voor het lezen van GOfax rapporten uit " +#~ "databases." + +#, fuzzy +#~ msgid "" +#~ "register_globals is a PHP mechanism to register all global variables to " +#~ "be accessible from scripts without changing the scope. This may be a " +#~ "security risk." +#~ msgstr "" +#~ "'register_globals' is een PHP mechanisme om alle globale variabelen te " +#~ "registreren zodat deze toegankelijk zijn voor scripts zonder dat de scope " +#~ "veranderd hoeft te worden. Dit is een veiligheidsrisico. GOsa zal in " +#~ "beide modi draaien." + +#, fuzzy +#~ msgid "" +#~ "Search for 'register_globals' in your php.ini and switch it to 'Off'." +#~ msgstr "Controle of 'register_globals' ingesteld staat op 'off'" + +#, fuzzy +#~ msgid "" +#~ "Setting this value to one day will prevent loosing session and cookies " +#~ "before they really timeout." +#~ msgstr "" +#~ "PHP gebruikt deze waarde voor de garbage collector om oude sessies op te " +#~ "ruimen. Door deze waarde op een dag te zetten, voorkomt u dat sessie en " +#~ "cookie informatie verloren gaan, voordat deze daadwerkelijk ongeldig zijn." + +#, fuzzy +#~ msgid "" +#~ "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 " +#~ "or higher." +#~ msgstr "" +#~ "Om GOsa zonder problemen te gebruiken, moet de session.auto_register " +#~ "optie in uw php.ini ingesteld zijn op 'Off'." + +#, fuzzy +#~ msgid "Off" +#~ msgstr "Offline" + +#, fuzzy +#~ msgid "" +#~ "In Order to use GOsa without any trouble, the session.auto_register " +#~ "option in your php.ini should be set to 'Off'." +#~ msgstr "" +#~ "Om GOsa zonder problemen te gebruiken, moet de session.auto_register " +#~ "optie in uw php.ini ingesteld zijn op 'Off'." + +#, fuzzy +#~ msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." +#~ msgstr "" +#~ "Om GOsa zonder problemen te gebruiken, moet de session.auto_register " +#~ "optie in uw php.ini ingesteld zijn op 'Off'." + +#, fuzzy +#~ msgid "" +#~ "GOsa needs at least 32MB of memory. Setting it below this limit may cause " +#~ "errors that are not reproducable! Increase it for larger setups." +#~ msgstr "" +#~ "GOsa heeft tenminste 16MB geheugen nodig. Minder geheugen kan diverse " +#~ "onvoorspelbare fouten opleveren!.Verhoog deze waarde nog verder voor zeer " +#~ "grote omgevingen." + +#, fuzzy +#~ msgid "" +#~ "This option influences the PHP output handling. Turn this Option off, to " +#~ "increase performance." +#~ msgstr "" +#~ "Deze Optie definieert Uitvoer afhandeling. Zet deze Optie uit om " +#~ "snelheiswinst te behalen" + +#, fuzzy +#~ msgid "The Execution time should be at least 30 seconds." +#~ msgstr "" +#~ "De uitvoer tijd moet minimaal 30 seconden zijn, omdat sommige acties lang " +#~ "kunnen duren." + +#, fuzzy +#~ msgid "" +#~ "Increase the server security by setting expose_php to 'off'. PHP won't " +#~ "send any information about the server you are running in this case." +#~ msgstr "" +#~ "Verhoog de server veiligheid door 'expose_php' op 'Off' in te stellen. " +#~ "PHP zal dan geen enkele informatie over de Server die u gebruikt " +#~ "weergeven." + +#, fuzzy +#~ msgid "On" +#~ msgstr "Open" + +#~ msgid "" +#~ "Increase your server security by setting magic_quotes_gpc to 'on'. PHP " +#~ "will escape all quotes in strings in this case." +#~ msgstr "" +#~ "Verhoog de server veiligheid door 'magic_quotes_gpc op 'On' in te stellen." +#~ "PHP zal dan alle aanhalingstekens in strings omzetten." + +#, fuzzy +#~ msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." +#~ msgstr "Controle of 'register_globals' ingesteld staat op 'off'" + +#, fuzzy +#~ msgid "" +#~ "Increase your server performance by setting magic_quotes_gpc to 'off'." +#~ msgstr "" +#~ "Verhoog de server veiligheid door 'magic_quotes_gpc op 'On' in te stellen." +#~ "PHP zal dan alle aanhalingstekens in strings omzetten." + +#, fuzzy +#~ msgid "" +#~ "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to " +#~ "'Off'." +#~ msgstr "" +#~ "Om GOsa zonder problemen te gebruiken, moet de session.auto_register " +#~ "optie in uw php.ini ingesteld zijn op 'Off'." + +#, fuzzy +#~ msgid "Configuration writeable" +#~ msgstr "Configuratie bestand" + +#, fuzzy +#~ msgid "The configuration file can't be written" +#~ msgstr "Configuratie bestand" + +#, fuzzy +#~ msgid "Schema specific settings" +#~ msgstr "Samba Instellingen" + +#, fuzzy +#~ msgid "Check status" +#~ msgstr "Systeem status" + +#, fuzzy +#~ msgid "Schema check failed" +#~ msgstr "Het opslaan van de telefoon is mislukt" + +#, fuzzy +#~ msgid "Setup error" +#~ msgstr "Systeem status" + +#, fuzzy +#~ msgid "Completed" +#~ msgstr "onvolledig" + +#, fuzzy +#~ msgid "Next" +#~ msgstr "tekst" + +#, fuzzy +#~ msgid "UNIX accounts/groups" +#~ msgstr "Account code" + +#, fuzzy +#~ msgid "Samba management" +#~ msgstr "Systeembeheer" + +#, fuzzy +#~ msgid "Mailsystem management" +#~ msgstr "Systeembeheer" + +#, fuzzy +#~ msgid "FAX system administration" +#~ msgstr "Gebruikersbeheer" + +#, fuzzy +#~ msgid "Asterisk administration" +#~ msgstr "Gebruikersbeheer" + +#, fuzzy +#~ msgid "System inventory" +#~ msgstr "Inventaris verwijderen" + +#, fuzzy +#~ msgid "System-/Configmanagement" +#~ msgstr "Systeembeheer" + +#~ msgid "Addressbook" +#~ msgstr "Adresboek" + +#, fuzzy +#~ msgid "Get notifications or send feedback" +#~ msgstr "Secties voor deze versie" + +#, fuzzy +#~ msgid "Notification and feedback" +#~ msgstr "Geen certificaat geinstalleerd" + +#, fuzzy +#~ msgid "Please specify a valid email address." +#~ msgstr "Geef a.u.b. een geldige scriptnaam op." + +#, fuzzy +#~ msgid "LDAP schema check" +#~ msgstr "Ldap server" + +#~ msgid "No" +#~ msgstr "Nee" + +#~ msgid "Yes" +#~ msgstr "Ja" + +#, fuzzy +#~ msgid "LDAP setup" +#~ msgstr "LDAP server" + +#, fuzzy +#~ msgid "LDAP connection setup" +#~ msgstr "Bel..." + +#, fuzzy +#~ msgid "" +#~ "This dialog performs the basic configuration of the LDAP connectivity for " +#~ "GOsa." +#~ msgstr "" +#~ "De volgende velden definiëren de basis configuratie van GOsa's gedrag en " +#~ "beïnvloeden diverse eigenschappen in uw hoofd configuratie." + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' failed!" +#~ msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." + +#, fuzzy +#~ msgid "Bind as user '%s' failed!" +#~ msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' succeeded." +#~ msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." + +#, fuzzy +#~ msgid "Please specify user and password!" +#~ msgstr "Geef a.u.b. uw wachtwoord op!" + +#, fuzzy +#~ msgid "Bind as user '%s' to server '%s' succeeded!" +#~ msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." + +#, fuzzy +#~ msgid "Language setup" +#~ msgstr "Taal" + +#, fuzzy +#~ msgid "This step allows you to select your preferred language." +#~ msgstr "" +#~ "Deze dialoog maakt het mogelijk om een apparaat te verbinden aan de " +#~ "computer die u momenteel aan het bewerken bent." + +#, fuzzy +#~ msgid "Automatic" +#~ msgstr "automatisch" + +#, fuzzy +#~ msgid "GOsa setup wizard" +#~ msgstr "GOsa help" + +#, fuzzy +#~ msgid "Setup" +#~ msgstr "Stel in" + +#, fuzzy +#~ msgid "Create your configuration file" +#~ msgstr "Configuratie bestand" + +#~ msgid "Download configuration" +#~ msgstr "Systeem configuratie" + +#, fuzzy +#~ msgid "Status: " +#~ msgstr "Status" + +#, fuzzy +#~ msgid "Theme" +#~ msgstr "MIME" + +#, fuzzy +#~ msgid "Apache" +#~ msgstr "Cache" + +#, fuzzy +#~ msgid "People and group storage" +#~ msgstr "OU voor gebruikers opslag" + +#, fuzzy +#~ msgid "People DN attribute" +#~ msgstr "DN atribuut voor gebruikers" + +#, fuzzy +#~ msgid "People storage subtree" +#~ msgstr "OU voor gebruikers opslag" + +#, fuzzy +#~ msgid "Group storage subtree" +#~ msgstr "OU voor groepen opslag" + +#, fuzzy +#~ msgid "Automatic UIDs" +#~ msgstr "Automatische modusregels" + +#, fuzzy +#~ msgid "Number base for people/groups" +#~ msgstr "ID basis voor gebruikers/groepen" + +#, fuzzy +#~ msgid "Password settings" +#~ msgstr "Gebruikersinstellingen" + +#, fuzzy +#~ msgid "Password encryption algorithm" +#~ msgstr "Encryptie algoritme" + +#, fuzzy +#~ msgid "Password restrictions" +#~ msgstr "Wachtwoord verloopt op" + +#, fuzzy +#~ msgid "Password change hook" +#~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" + +#, fuzzy +#~ msgid "Use account expiration" +#~ msgstr "Het account verloopt op" + +#~ msgid "" +#~ "GOsa supports several encryption types for your passwords. Normally this " +#~ "is adjustable via user templates, but you can specify a default method to " +#~ "be used here, too." +#~ msgstr "" +#~ "GOsa ondersteunt diverse encryptie types voor uw wachtwoorden. Normaliter " +#~ "is dit aanpasbaar via gebruikerssjablonen. Hier kunt u echter een " +#~ "standaard te gebruiken methode opgeven." + +#, fuzzy +#~ msgid "" +#~ "GOsa always acts as admin and manages access rights internally. This is a " +#~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " +#~ "For this to work, we need the admin DN and the corresponding password." +#~ msgstr "" +#~ "GOsa werkt altijd als een beheerder en verzorgt het toegangsbeheer " +#~ "intern. Dit is een tijdelijke oplossing totdat directory ACIs volledig " +#~ "geïmplementeerd zijn in OpenLDAP. Om dit te kunnen laten werken is een " +#~ "beheerders DN en het bijbehorende wachtwoord nodig." + +#~ msgid "" +#~ "Some basic LDAP parameters are tunable and affect the locations where " +#~ "GOsa saves people and groups, including the way accounts get created. " +#~ "Check the values below if the fit your needs." +#~ msgstr "" +#~ "Sommige LDAP parameters zijn aan te passen en bepalen de locaties waar " +#~ "GOsa gebruikers en groepen opslaat, evenals de manier waarop gebruikers " +#~ "aangemaakt worden. Controleer of de waardes hieronder in uw behoeften " +#~ "voorzien." + +#, fuzzy +#~ msgid "" +#~ "GOsa has modular support for several mail methods. These methods provide " +#~ "interfaces to users mailboxes and general handling for quotas. You can " +#~ "choose the dummy plugin to leave all your mail settings untouched." +#~ msgstr "" +#~ "GOsa heeft modulaire ondersteuning voor diverse E-mail methodes. Deze " +#~ "methodes leveren toegang tot gebruikers mailboxen en algemene afhandeling " +#~ "voor quota's. U kunt de dummy module kiezen om alle E-mail instellingen " +#~ "ongewijzigd te laten." + +#~ msgid "Samba settings" +#~ msgstr "Samba Instellingen" + +#, fuzzy +#~ msgid "Samba SID" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "RID base" +#~ msgstr "Database" + +#, fuzzy +#~ msgid "Workstation container" +#~ msgstr "Werkstation naam" + +#, fuzzy +#~ msgid "Samba SID mapping" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "Timezone" +#~ msgstr "Tijdzone" + +#, fuzzy +#~ msgid "Please choose your preferred timezone here" +#~ msgstr "Voorkeurstaal" + +#, fuzzy +#~ msgid "Additional GOsa settings" +#~ msgstr "Programma instellingen" + +#, fuzzy +#~ msgid "Enable DNS extension" +#~ msgstr "Verwijder printer mogelijkheden" + +#, fuzzy +#~ msgid "Enable DHCP extension" +#~ msgstr "Verwijder printer mogelijkheden" + +#, fuzzy +#~ msgid "Enable mime type management" +#~ msgstr "Systeembeheer" + +#, fuzzy +#~ msgid "Enable FAI release management" +#~ msgstr "Blokkeerlijst beheer" + +#, fuzzy +#~ msgid "Enable user netatalk plugin" +#~ msgstr "Netatalk account beheren" + +#, fuzzy +#~ msgid "Government mode" +#~ msgstr "naar map" + +#, fuzzy +#~ msgid "Logging options" +#~ msgstr "Onbekend" + +#, fuzzy +#~ msgid "Syslog" +#~ msgstr "Systeem logs" + +#~ msgid "Mail settings" +#~ msgstr "E-mail instellingen" + +#~ msgid "Mail method" +#~ msgstr "E-mail methode" + +#, fuzzy +#~ msgid "Vacation templates" +#~ msgstr "Werkstation sjabloon" + +#, fuzzy +#~ msgid "Snapshots / Undo" +#~ msgstr "Het opslaan van de telefoon is mislukt" + +#, fuzzy +#~ msgid "Enable snapshots" +#~ msgstr "Nagios account aanmaken" + +#, fuzzy +#~ msgid "Snapshot base" +#~ msgstr "Het opslaan van de telefoon is mislukt" + +#, fuzzy +#~ msgid "GOsa core settings" +#~ msgstr "E-mail instellingen" + +#, fuzzy +#~ msgid "Disable primary group filter" +#~ msgstr "Toon groepen van gebruiker" + +#, fuzzy +#~ msgid "Display summary in listings" +#~ msgstr "Toon overeenkomende macro's" + +#, fuzzy +#~ msgid "Honour administrative units" +#~ msgstr "Groepen beheer" + +#, fuzzy +#~ msgid "Smarty compile directory" +#~ msgstr "Persoonlijke map" + +#, fuzzy +#~ msgid "Path for PPD storage" +#~ msgstr "Wachtwoord encryptie" + +#, fuzzy +#~ msgid "Path for kiosk profile storage" +#~ msgstr "Kiosk profiel instellingen" + +#, fuzzy +#~ msgid "Override sudo role ou" +#~ msgstr "! onbekend id" + +#, fuzzy +#~ msgid "Mail queue script" +#~ msgstr "Inlogscript" + +#, fuzzy +#~ msgid "Notification script" +#~ msgstr "Geen certificaat geinstalleerd" + +#, fuzzy +#~ msgid "Login attribute" +#~ msgstr "Telefoon attributen " + +#, fuzzy +#~ msgid "Warn if session is not encrypted" +#~ msgstr "De sessie zal niet versleuteld zijn." + +#, fuzzy +#~ msgid "Remember dialog filter settings" +#~ msgstr "Algemene wachtrij instellingen" + +#, fuzzy +#~ msgid "Session lifetime" +#~ msgstr "Er is een sessie conflict gedetecteerd" + +#, fuzzy +#~ msgid "Show PHP errors" +#~ msgstr "PHP fout" + +#, fuzzy +#~ msgid "Maximum LDAP query time" +#~ msgstr "E-mail grootte" + +#, fuzzy +#~ msgid "Debug level" +#~ msgstr "Log prioriteit" + +#, fuzzy +#~ msgid "Disabled" +#~ msgstr "gedeactiveerd" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "gedeactiveerd" + +#, fuzzy +#~ msgid "GOsa settings 1/3" +#~ msgstr "Gebruikersinstellingen" + +#, fuzzy +#~ msgid "GOsa generic settings" +#~ msgstr "Algemene wachtrij instellingen" + +#, fuzzy +#~ msgid "The specified value for '%s' must be a numeric value" +#~ msgstr "De sieve poort dient nummeriek te zijn." + +#~ msgid "People storage ou" +#~ msgstr "OU voor gebruikers opslag" + +#~ msgid "Group storage ou" +#~ msgstr "OU voor groepen opslag" + +#, fuzzy +#~ msgid "Uid base must be numeric" +#~ msgstr "Timeout dient nummeriek te zijn" + +#, fuzzy +#~ msgid "The given password minimum length is not numeric." +#~ msgstr "De sieve poort dient nummeriek te zijn." + +#, fuzzy +#~ msgid "The given password differ value is not numeric." +#~ msgstr "De sieve poort dient nummeriek te zijn." + +#, fuzzy +#~ msgid "GOsa settings 2/3" +#~ msgstr "Gebruikersinstellingen" + +#, fuzzy +#~ msgid "Customize special parameters" +#~ msgstr "Controleer parameter" + +#, fuzzy +#~ msgid "GOsa settings 3/3" +#~ msgstr "Gebruikersinstellingen" + +#, fuzzy +#~ msgid "Session lifetime must be a numeric value!" +#~ msgstr "Toekomstige dagen moet een waarde bevatten." + +#, fuzzy +#~ msgid "Maximum LDAP query time must be a numeric value!" +#~ msgstr "Toekomstige dagen moet een waarde bevatten." + +#, fuzzy +#~ msgid "Write configuration file" +#~ msgstr "Configuratie bestand" + +#, fuzzy +#~ msgid "Finish - write the configuration file" +#~ msgstr "Configuratie bestand" + +#, fuzzy +#~ msgid "" +#~ "Your configuration file is currently world readable. Please update the " +#~ "file permissions!" +#~ msgstr "GOsa configuratie %s/gosa.conf is niet leesbaar. Geannuleerd." + +#, fuzzy +#~ msgid "The configuration is currently not readable or it does not exists." +#~ msgstr "GOsa configuratie %s/gosa.conf is niet leesbaar. Geannuleerd." + +#, fuzzy +#~ msgid "" +#~ "After downloading and placing the file under %s, please make sure that " +#~ "the user the webserver is running with is able to read %s, while other " +#~ "users shouldn't. You may want to execute these commands to achieve this " +#~ "requirement:" +#~ msgstr "" +#~ "Controleer dat de webserver het bestand kan lezen (zonder dat andere " +#~ "gebruikers dit kunnen) nadat u het bestand in de directory /etc/gosa " +#~ "geplaatst heeft. U wil misschien de volgende commando's uitvoeren om aan " +#~ "deze vereiste te voldoen: " + +#, fuzzy +#~ msgid "Create a basic, single site configuration" +#~ msgstr "FAX database" + +#, fuzzy +#~ msgid "Find every possible configuration error" +#~ msgstr "Configuratie bestand" + +#, fuzzy +#~ msgid "To continue..." +#~ msgstr "Installatie vervolg..." + +#~ msgid "Organization" +#~ msgstr "Organisatie" + +#~ msgid "Mail address" +#~ msgstr "E-mail adres" + +#, fuzzy +#~ msgid "Features" +#~ msgstr "Toekomstig" + +#, fuzzy +#~ msgid "Check again" +#~ msgstr "Controleer" + +#, fuzzy +#~ msgid "Move selected workstations" +#~ msgstr "Selecteer om werkstations te zien" + +#, fuzzy +#~ msgid "Hide changes" +#~ msgstr "Open-Xchange" + +#, fuzzy +#~ msgid "Show changes" +#~ msgstr "Toon pakketten" + +#, fuzzy +#~ msgid "Move selected users into this people tree" +#~ msgstr "Maak gebruiker aan met dit sjabloon" + +#, fuzzy +#~ msgid "Create a new GOsa administrator account" +#~ msgstr "Netatalk account aanmaken" + +#~ msgid "User ID" +#~ msgstr "Gebruikers ID" + +#, fuzzy +#~ msgid "Password (again)" +#~ msgstr "Wachtwoord encryptie" + +#, fuzzy +#~ msgid "Current" +#~ msgstr "Nieuw FAI object aanmaken" + +#, fuzzy +#~ msgid "After migration" +#~ msgstr "Gebruikersbeheer" + +#, fuzzy +#~ msgid "Refresh" +#~ msgstr "Referenties" + +#, fuzzy +#~ msgid "Welcome" +#~ msgstr "Welkom %s!" + +#, fuzzy +#~ msgid "The welcome message" +#~ msgstr "Verwijder dit bericht" + +#, fuzzy +#~ msgid "Welcome to GOsa setup wizard" +#~ msgstr "Welkom bij het GOsa installatie programma!" + +#, fuzzy +#~ msgid "PHP setup configuration" +#~ msgstr "FAX database" + +#, fuzzy +#~ msgid "show information" +#~ msgstr "Persoonlijke informatie" + +#, fuzzy +#~ msgid "LDAP connection" +#~ msgstr "Max. verbrekingsduur" + +#~ msgid "Location name" +#~ msgstr "Naam van de locatie" + +#, fuzzy +#~ msgid "Connection URL" +#~ msgstr "Verbindingings URL" + +#, fuzzy +#~ msgid "TLS connection" +#~ msgstr "Bel..." + +#, fuzzy +#~ msgid "Authentication" +#~ msgstr "Nagios authenticatie" + +#~ msgid "Admin DN" +#~ msgstr "Beheerders DN" + +#, fuzzy +#~ msgid "Select user" +#~ msgstr "Verwijder gebruiker" + +#~ msgid "Admin password" +#~ msgstr "Beheerders wachtwoord" + +#, fuzzy +#~ msgid "Schema based settings" +#~ msgstr "Samba Instellingen" + +#, fuzzy +#~ msgid "Current status" +#~ msgstr "Systeem status" + +#, fuzzy +#~ msgid "LDAP inspection" +#~ msgstr "PHP configuratie inspectie" + +#, fuzzy +#~ msgid "Checking for root object" +#~ msgstr "Zoeken naar iconv ondersteuning" + +#, fuzzy +#~ msgid "Checking for invisible departments" +#~ msgstr "Zoeken naar iconv ondersteuning" + +#, fuzzy +#~ msgid "Checking for invisible users" +#~ msgstr "Zoeken naar iconv ondersteuning" + +#, fuzzy +#~ msgid "Checking for super administrator" +#~ msgstr "Zoeken naar enkele additionele programma's" + +#, fuzzy +#~ msgid "Checking for users outside the people tree" +#~ msgstr "Zoeken naar CUPS module" + +#, fuzzy +#~ msgid "Checking for groups outside the groups tree" +#~ msgstr "Zoeken naar CUPS module" + +#, fuzzy +#~ msgid "Checking for duplicated UID numbers" +#~ msgstr "Zoeken naar functie %s" + +#, fuzzy +#~ msgid "Checking for duplicate GID numbers" +#~ msgstr "Zoeken naar functie %s" + +#, fuzzy +#~ msgid "Checking for old style USB devices" +#~ msgstr "Zoeken naar iconv ondersteuning" + +#, fuzzy +#~ msgid "Checking for old services that have to be migrated" +#~ msgstr "Zoeken naar CUPS module" + +#, fuzzy +#~ msgid "Checking for old style application menus" +#~ msgstr "Zoeken naar functie %s" + +#, fuzzy +#~ msgid "LDAP query failed" +#~ msgstr "De database zoekopdracht is mislukt" + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'uidNumber'." +#~ msgstr "Er is een dubbele waarde gevonden voor record type '%s'." + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'gidNumber'." +#~ msgstr "Er is een dubbele waarde gevonden voor record type '%s'." + +#~ msgid "Failed" +#~ msgstr "Mislukt" + +#, fuzzy +#~ msgid "Found %s groups outside the configured tree '%s'." +#~ msgstr "U staat op het punt de invoer '%s' te kopieren." + +#, fuzzy +#~ msgid "Move" +#~ msgstr "Modus" + +#, fuzzy +#~ msgid "Migration error" +#~ msgstr "Aanmaken" + +#, fuzzy +#~ msgid "Cannot migrate department '%s':" +#~ msgstr "Ga naar basis afdelingen" + +#, fuzzy +#~ msgid "Input error" +#~ msgstr "PHP fout" + +#, fuzzy +#~ msgid "Password error" +#~ msgstr "Wachtwoord verloopt op" + +#, fuzzy +#~ msgid "Provided passwords do not match!" +#~ msgstr "" +#~ "Het nieuwe wachtwoord en het herhaalde wachtwoord komen niet met elkaar " +#~ "overeen!" + +#, fuzzy +#~ msgid "Specify a valid user ID!" +#~ msgstr "Geef a.u.b. een geldige gebruikersnaam op!" + +#, fuzzy +#~ msgid "Cannot move users to the requested department!" +#~ msgstr "Ga naar de afdeling van de gebruiker" + +#, fuzzy +#~ msgid "to" +#~ msgstr "Stop" + +#, fuzzy +#~ msgid "Try to create root object" +#~ msgstr "Nieuw FAI object aanmaken" + +#, fuzzy +#~ msgid "Copy '%s' to '%s' failed:" +#~ msgstr "Verplaatsen van %s naar %s" + +#, fuzzy +#~ msgid "Updating '%s' failed: %s" +#~ msgstr "Log DB gebruiker" + +#, fuzzy +#~ msgid "License" +#~ msgstr "Regel" + +#~ msgid "Unknown" +#~ msgstr "Onbekend" + +#, fuzzy +#~ msgid "Select to list objects of type '%s'." +#~ msgstr "Selecteer de toe te voegen objecten" + +#, fuzzy +#~ msgid "Select to list objects containig '%s'." +#~ msgstr "Selecteer om groepen die gebruikers bevatten te tonen" + +#, fuzzy +#~ msgid "Select to list objects that have '%s' enabled" +#~ msgstr "Selecteer de toe te voegen objecten" + +#, fuzzy +#~ msgid "You have no permission to delete this object!" +#~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to delete the object:" +#~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to delete these objects:" +#~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to create this object!" +#~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to create the object:" +#~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to create these objects:" +#~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to modify this object!" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to modify the object:" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to modify these objects:" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to view this object!" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to view the object:" +#~ msgstr "" +#~ "U heeft geen toestemming om een telefoon aan te maken onder deze 'Basis'." + +#, fuzzy +#~ msgid "You have no permission to view these objects:" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to move this object!" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to move the object:" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to move these objects:" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "Connection information" +#~ msgstr "Persoonlijke informatie" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Kan niet verbinden met de database server!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "De opgegeven database kon niet geselecteerd worden!" + +#, fuzzy +#~ msgid "Cannot query %s database!" +#~ msgstr "De opgegeven database kon niet geselecteerd worden!" + +#, fuzzy +#~ msgid "The field '%s' contains a reserved keyword!" +#~ msgstr "Het veld 'Fax' bevat een ongeldig Faxnummer." + +#, fuzzy +#~ msgid "Command specified as %s hook for plugin '%s' does not exist!" +#~ msgstr "" +#~ "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%" +#~ "s' bestaat niet." + +#, fuzzy +#~ msgid "'%s' command is invalid!" +#~ msgstr "De opgegeven naam is ongeldig." + +#, fuzzy +#~ msgid "'%s' command (%s) is invalid!" +#~ msgstr "De opgegeven naam is ongeldig." + +#, fuzzy +#~ msgid "Cannot execute '%s' command!" +#~ msgstr "De opgegeven database kon niet geselecteerd worden!" + +#, fuzzy +#~ msgid "Cannot execute '%s' command (%s)!" +#~ msgstr "De opgegeven database kon niet geselecteerd worden!" + +#, fuzzy +#~ msgid "Value for '%s' is too large!" +#~ msgstr "De opgegeven 'UID' waarde is te klein." + +#, fuzzy +#~ msgid "Value for '%s' is too small!" +#~ msgstr "De opgegeven 'UID' waarde is te klein." + +#, fuzzy +#~ msgid "'%s' must be %d or above!" +#~ msgstr "" +#~ "PHP moet minimaal versienummer 4.1.0 hebben. GOsa gebruikt bepaalde " +#~ "functionaliteit die in voorgaande versies niet goed of helemaal niet " +#~ "voorhanden is." + +#, fuzzy +#~ msgid "There is already an entry with this '%s' attribute in the system!" +#~ msgstr "Er bestaat al een account met deze 'Inlog naam' in de database." + +#, fuzzy +#~ msgid "The required field '%s' is empty!" +#~ msgstr "Het vereiste veld '(Achter)naam' is leeg." + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters" +#~ msgstr "Het veld 'Naam' bevat ongeldige karakters." + +#, fuzzy +#~ msgid "'%s' are not allowed!" +#~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters!" +#~ msgstr "Het veld 'Naam' bevat ongeldige karakters." + +#, fuzzy +#~ msgid "Missing %s PHP extension!" +#~ msgstr "Verwijder printer mogelijkheden" + +#, fuzzy +#~ msgid "Add %s" +#~ msgstr "Toevoegen" + +#, fuzzy +#~ msgid "Delete %s" +#~ msgstr "Verwijderen" + +#, fuzzy +#~ msgid "Set %s" +#~ msgstr "Stel in" + +#, fuzzy +#~ msgid "Edit..." +#~ msgstr "Bewerken" + +#, fuzzy +#~ msgid "Edit %s..." +#~ msgstr "Bewerk gebruiker" + +#, fuzzy +#~ msgid "This account has no valid %s extensions!" +#~ msgstr "Dit account heeft geen geldige GOsa extensies." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Dit account heeft POSIX mogelijkheden ingeschakeld. U kunt deze " +#~ "uitschakelen door de knop hieronder te gebruiken." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. To disable them, you'll need to " +#~ "remove the %s settings first!" +#~ msgstr "" +#~ "Dit account heeft Unix mogelijkheden ingeschakeld. Om deze te verwijderen " +#~ "moet u eerst het samba / omgevings account verwijderen." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Dit account heeft POSIX mogelijkheden uitgeschakeld. U kunt deze " +#~ "inschakelen door de knop hieronder te gebruiken." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. To enable them, you'll need to add " +#~ "the %s settings first!" +#~ msgstr "" +#~ "Dit account heeft Unix mogelijkheden ingeschakeld. Om deze te verwijderen " +#~ "moet u eerst het samba / omgevings account verwijderen." + +#, fuzzy +#~ msgid "" +#~ "This account has %s features settings. To disable them, you'll need to " +#~ "add the %s settings first!" +#~ msgstr "" +#~ "Dit account heeft Unix mogelijkheden ingeschakeld. Om deze te verwijderen " +#~ "moet u eerst het samba / omgevings account verwijderen." + +#, fuzzy +#~ msgid "Add %s settings" +#~ msgstr "Programma instellingen" + +#, fuzzy +#~ msgid "Remove %s settings" +#~ msgstr "Posix instellingen" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Gebruik de 'Bewerk' knop hieronder om de informatie in deze dialoog te " +#~ "veranderen" + +#~ msgid "January" +#~ msgstr "Januari" + +#~ msgid "February" +#~ msgstr "Februari" + +#~ msgid "March" +#~ msgstr "Maart" + +#~ msgid "April" +#~ msgstr "April" + +#~ msgid "May" +#~ msgstr "Mei" + +#~ msgid "June" +#~ msgstr "Juni" + +#~ msgid "July" +#~ msgstr "Juli" + +#~ msgid "August" +#~ msgstr "Augustus" + +#~ msgid "September" +#~ msgstr "September" + +#~ msgid "October" +#~ msgstr "Oktober" + +#~ msgid "November" +#~ msgstr "November" + +#~ msgid "December" +#~ msgstr "December" + +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "Achternaam" + +#, fuzzy +#~ msgid "Monday" +#~ msgstr "maand" + +#, fuzzy +#~ msgid "read operation" +#~ msgstr "E-mail opties" + +#, fuzzy +#~ msgid "modify operation" +#~ msgstr "Persoonlijke informatie" + +#, fuzzy +#~ msgid "delete operation" +#~ msgstr "Selecteer om werkstations te zien" + +#, fuzzy +#~ msgid "search operation" +#~ msgstr "Het account verloopt op" + +#, fuzzy +#~ msgid "authentication" +#~ msgstr "Nagios authenticatie" + +#, fuzzy +#~ msgid "LDAP %s failed!" +#~ msgstr "De database zoekopdracht is mislukt" + +#, fuzzy +#~ msgid "LDAP operation failed!" +#~ msgstr "De database zoekopdracht is mislukt" + +#, fuzzy +#~ msgid "Upload failed: %s" +#~ msgstr "Log DB gebruiker" + +#, fuzzy +#~ msgid "This '%s' is still in use." +#~ msgstr "Deze 'dn' is geen groep." + +#, fuzzy +#~ msgid "Cannot open file '%s' for reading!" +#~ msgstr "Kan bestand '%s' niet openen." + +#, fuzzy +#~ msgid "Cannot open file '%s' for writing!" +#~ msgstr "Kan bestand '%s' niet openen." + +#, fuzzy +#~ msgid "Cannot delete file '%s'!" +#~ msgstr "Kan bestand '%s' niet openen." + +#, fuzzy +#~ msgid "Cannot create folder '%s'!" +#~ msgstr "Ga naar basis afdelingen" + +#, fuzzy +#~ msgid "Cannot delete folder '%s'!" +#~ msgstr "Kan bestand '%s' niet openen." + +#, fuzzy +#~ msgid "Checking for %s support" +#~ msgstr "Zoeken naar iconv ondersteuning" + +#~ msgid "Delete process has been canceled by plugin '%s': %s" +#~ msgstr "Het verwijder proces is geannuleerd door plugin '%s': %s" + +#~ msgid "ACL" +#~ msgstr "Rechten" + +#~ msgid "References" +#~ msgstr "Referenties" + +#, fuzzy +#~ msgid "Cannot not parse XML!" +#~ msgstr "" +#~ "Er zitten te veel gebruikers in de database. Kan geen vrij ID toewijzen!" + +#, fuzzy +#~ msgid "Cannot send abort event for entry %s!" +#~ msgstr "Kan bestand '%s' niet aanmaken." + +#~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." +#~ msgstr "" +#~ "FATAAL: Fout bij het verbinden met de LDAP server. De server meldt: '%s'." + +#, fuzzy +#~ msgid "Username / UID is not unique inside the LDAP tree!" +#~ msgstr "" +#~ "Gebruikersnaam / UID is niet uniek. Controleer uw LDAP database a.u.b." + +#, fuzzy +#~ msgid "" +#~ "Username / UID is not unique inside the LDAP tree. Please contact your " +#~ "Administrator." +#~ msgstr "" +#~ "Gebruikersnaam / UID is niet uniek. Controleer uw LDAP database a.u.b." + +#, fuzzy +#~ msgid "" +#~ "Cannot create locking information in LDAP tree. Please contact your " +#~ "administrator!" +#~ msgstr "" +#~ "Kan de blokkade informatie niet ophalen uit de LDAP database. Controleer " +#~ "a.u.b. de 'config' regel in gosa.conf!" + +#, fuzzy +#~ msgid "LDAP server returned: %s" +#~ msgstr "LDAP server" + +#, fuzzy +#~ msgid "" +#~ "Found multiple locks for object to be locked. This should not happen - " +#~ "cleaning up multiple references." +#~ msgstr "" +#~ "Er zijn meerdere blokkades voor het te blokkeren object gevonden. Dat zou " +#~ "niet mogelijk moeten zijn. Meervoudige verwijzingen worden opgeschoond." + +#~ msgid "The size limit of %d entries is exceed!" +#~ msgstr "De hoeveelheidslimiet van %d invoeren is overschreden!" + +#~ msgid "" +#~ "Set the new size limit to %s and show me this message if the limit still " +#~ "exceeds" +#~ msgstr "" +#~ "Stel de nieuwe hoeveelheidslimiet in op %s en toon me dit bericht indien " +#~ "de limiet nog steeds overschreden wordt." + +#~ msgid "Configure" +#~ msgstr "Instellen" + +#~ msgid "incomplete" +#~ msgstr "onvolledig" + +#~ msgid "Continue anyway" +#~ msgstr "Toch doorgaan" + +#~ msgid "Edit anyway" +#~ msgstr "Alsnog bewerken" + +#, fuzzy +#~ msgid "You're going to edit the LDAP entry/entries %s" +#~ msgstr "U staat op het punt de invoer '%s' te kopieren." + +#~ msgid "Entries per page" +#~ msgstr "Regels per pagina" + +#~ msgid "Apply filter" +#~ msgstr "Filter toepassen" + +#~ msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +#~ msgstr "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +#~ msgid "GOsa development snapshot (Rev %s)" +#~ msgstr "GOsa ontwikkelversie (Revisie %s)" + +#, fuzzy +#~ msgid "Cannot write to revision file!" +#~ msgstr "Kan bestand '%s' niet aanmaken." + +#, fuzzy +#~ msgid "LDAP warning" +#~ msgstr "LDAP beheer" + +#, fuzzy +#~ msgid "Cannot get schema information from server. No schema check possible!" +#~ msgstr "" +#~ "Kan de schema informatie niet ophalen van de server. Schema controle is " +#~ "onmogelijk!" + +#, fuzzy +#~ msgid "Missing required object class '%s'!" +#~ msgstr "Toon FAI sjabloon objecten" + +#, fuzzy +#~ msgid "Class(es) available" +#~ msgstr "Bestand is beschikbaar" + +#~ msgid "German" +#~ msgstr "Duits" + +#~ msgid "French" +#~ msgstr "Frans" + +#~ msgid "Italian" +#~ msgstr "Italiaans" + +#~ msgid "Spanish" +#~ msgstr "Spaans" + +#~ msgid "English" +#~ msgstr "Engels" + +#~ msgid "Dutch" +#~ msgstr "Nederlands" + +#~ msgid "Polish" +#~ msgstr "Pools" + +#, fuzzy +#~ msgid "Chinese" +#~ msgstr "Chipset" + +#, fuzzy +#~ msgid "Vietnamese" +#~ msgstr "Naam" + +#~ msgid "Russian" +#~ msgstr "Russisch" + +#~ msgid "" +#~ "Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to " +#~ "exist." +#~ msgstr "" +#~ "Het commando '%s' dat gespecificeerd is als POSTMODIFY voor module '%s' " +#~ "bestaat niet." + +#, fuzzy +#~ msgid "You're about to delete the snapshot '%s'." +#~ msgstr "U staat op het punt de macro '%s' te verwijderen." + +#, fuzzy +#~ msgid "Remove snapshot" +#~ msgstr "Nagios account aanmaken" + +#~ msgid "XML error in gosa.conf: %s at line %d" +#~ msgstr "XML fout in gosa.conf: %s op regel %d" + +#, fuzzy +#~ msgid "Cannot bind to LDAP. Please contact the system administrator." +#~ msgstr "" +#~ "Kan niet verbinden met de LDAP server. Neem a.u.b. contact op met de " +#~ "systeembeheerder." + +#, fuzzy +#~ msgid "SID and/or RIDBASE missing in the configuration!" +#~ msgstr "SID en/of RIDBASE ontbreken in uw configuratie!" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Configuratie bestand" + +#, fuzzy +#~ msgid "Copy and paste failed!" +#~ msgstr "Kopieren & plakken wizard" + +#, fuzzy +#~ msgid "Cannot set permission for '%s'" +#~ msgstr "Kan bestand '%s' niet aanmaken." + +#, fuzzy +#~ msgid "No write permission in '%s'" +#~ msgstr "Kan bestand '%s' niet aanmaken." + +#~ msgid "Paste" +#~ msgstr "Plakken" + +#, fuzzy +#~ msgid "Cannot paste" +#~ msgstr "Plakken onmogelijk" + +#, fuzzy +#~ msgid "You are not allowed to create a snapshot for %s." +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen!" + +#, fuzzy +#~ msgid "You are not allowed to restore a snapshot for %s." +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen!" + +#, fuzzy +#~ msgid "Restore" +#~ msgstr "Opnieuw proberen" + +#, fuzzy +#~ msgid "Create snapshot" +#~ msgstr "Nagios account aanmaken" + +#, fuzzy +#~ msgid "Create a new snapshot from this object" +#~ msgstr "Nieuw FAI object aanmaken" + +#~ msgid "cut" +#~ msgstr "knippen" + +#~ msgid "Cut this entry" +#~ msgstr "Deze invoer knippen" + +#~ msgid "copy" +#~ msgstr "kopieer" + +#~ msgid "Copy this entry" +#~ msgstr "Deze invoer kopieren" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopieer" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "knippen" + +#, fuzzy +#~ msgid "Logging failed: %s" +#~ msgstr "Log DB gebruiker" + +#, fuzzy +#~ msgid "Specified objectType is empty or invalid!" +#~ msgstr "De opgegeven naam is ongeldig." + +#, fuzzy +#~ msgid "MySQL error" +#~ msgstr "LDAP fout:" + +#, fuzzy +#~ msgid "Cannot add location to the database!" +#~ msgstr "Kan niet verbinden met de database server!" + +#~ msgid "Go to root department" +#~ msgstr "Ga naar basis afdelingen" + +#~ msgid "Root" +#~ msgstr "Basis" + +#~ msgid "Go up one department" +#~ msgstr "Ga een afdeling omhoog" + +#~ msgid "Up" +#~ msgstr "Omhoog" + +#~ msgid "Go to users department" +#~ msgstr "Ga naar gebruikers afdeling" + +#~ msgid "Home" +#~ msgstr "Home" + +#~ msgid "Reload list" +#~ msgstr "Lijst herladen" + +#, fuzzy +#~ msgid "Choose a base" +#~ msgstr "Selecteer een basis" + +#, fuzzy +#~ msgid "Use" +#~ msgstr "Gebruiker" + +#, fuzzy +#~ msgid "Filter entries with this syntax" +#~ msgstr "Filter regels met deze syntax" + +#, fuzzy +#~ msgid "Certificate is empty!" +#~ msgstr "Certificaten" + +#, fuzzy +#~ msgid "Cannot extract information for non PEM certificates!" +#~ msgstr "Kan quota informatie niet ophaleven voor '%s'." + +#, fuzzy +#~ msgid "No valid certificate loaded!" +#~ msgstr "Geen geldig certificaat geladen" + +#~ msgid "XML error in guide.xml: %s at line %d" +#~ msgstr "XML fout in guide.conf: %s op regel %d" + +#~ msgid "No help available for this plugin." +#~ msgstr "Help is (nog) niet beschikbaar voor deze module." + +#~ msgid "%s results for your search with the keyword %s" +#~ msgstr "%s resultaten voor uw zoekopdracht met sleutelwoord %s" + +#~ msgid "%s%% hit rate in file %s" +#~ msgstr "%s%% resultaat in bestand %s" + +#, fuzzy +#~ msgid "Manage access control lists" +#~ msgstr "Toegangsopties" + +#, fuzzy +#~ msgid "All categories" +#~ msgstr "Categorie toevoegen" + +#, fuzzy +#~ msgid "One level" +#~ msgstr "Log prioriteit" + +#, fuzzy +#~ msgid "Current object" +#~ msgstr "Nieuw FAI object aanmaken" + +#, fuzzy +#~ msgid "Complete subtree" +#~ msgstr "Subonderdelen negeren" + +#~ msgid "Groups" +#~ msgstr "Groepen" + +#~ msgid "Down" +#~ msgstr "Omlaag" + +#, fuzzy +#~ msgid "category ACL" +#~ msgstr "Categorie" + +#, fuzzy +#~ msgid "Show/hide advanced settings" +#~ msgstr "Geavanceerde telefoon instellingen" + +#, fuzzy +#~ msgid "Remove objects" +#~ msgstr "Lidmaatschap objecten" + +#~ msgid "read" +#~ msgstr "alleen lezen" + +#~ msgid "write" +#~ msgstr "afleveren, lezen & schrijven" + +#, fuzzy +#~ msgid "Complete object" +#~ msgstr "Nieuw FAI object aanmaken" + +#, fuzzy +#~ msgid "Unkown ACL type '%s'!" +#~ msgstr "Onbekende FAI status %s" + +#, fuzzy +#~ msgid "Unknown entry '%s'!" +#~ msgstr "Onbekende FAI status %s" + +#, fuzzy +#~ msgid "Role: %s" +#~ msgstr "Funktie" + +#, fuzzy +#~ msgid "unknown role" +#~ msgstr "! onbekend id" + +#, fuzzy +#~ msgid "Access control list" +#~ msgstr "Toegangsopties" + +#, fuzzy +#~ msgid "ACL roles" +#~ msgstr "Rechten" + +#, fuzzy +#~ msgid "Role name" +#~ msgstr "Hernoemen" + +#, fuzzy +#~ msgid "Role description" +#~ msgstr "Eenheid omschrijving" + +#, fuzzy +#~ msgid "You are currently editing mutliple entries." +#~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#, fuzzy +#~ msgid "Password reset" +#~ msgstr "Wachtwoord verloopt op" + +#, fuzzy +#~ msgid "The user password was resetted, please set a new password value!" +#~ msgstr "Uw wachtwoord is verlopen! Kies a.u.b. een nieuw wachtwoord. " + +#~ msgid "while operating on '%s' using LDAP server '%s'" +#~ msgstr "bij het bewerken van '%s' op LDAP server '%s'" + +#~ msgid "while operating on LDAP server %s" +#~ msgstr "bij het bewerken van LDAP server %s" + +#~ msgid "" +#~ "This is not a valid DN: '%s'. A block for import should begin with " +#~ "'dn: ...' in line %s" +#~ msgstr "" +#~ "Dit is geen geldige DN: '%s'. Een blok dat geïmporteerd wordt, dient te " +#~ "beginnen met 'dn: ...' op regel %s" + +#~ msgid "" +#~ "Error while importing dn: '%s', please check your LDIF from line %s on!" +#~ msgstr "" +#~ "Fout bij het importeren van dn: '%s', controleer uw LDIF bestand a.u.b. " +#~ "vanaf regel %s!" + +#~ msgid "" +#~ "Generating this page caused the PHP interpreter to raise some errors!" +#~ msgstr "" +#~ "Er is minimaal één PHP fout opgetreden bij het genereren van deze pagina!" + +#, fuzzy +#~ msgid "Send bugreport" +#~ msgstr "Afzender" + +#~ msgid "Toggle information" +#~ msgstr "Informatie weergeven/verbergen" + +#~ msgid "PHP error" +#~ msgstr "PHP fout" + +#~ msgid "class" +#~ msgstr "klasse" + +#~ msgid "function" +#~ msgstr "functie" + +#~ msgid "static" +#~ msgstr "statisch" + +#~ msgid "method" +#~ msgstr "methode" + +#~ msgid "Trace" +#~ msgstr "Trace" + +#~ msgid "Line" +#~ msgstr "Regel" + +#~ msgid "Arguments" +#~ msgstr "Argumenten" + +#, fuzzy +#~ msgid "ACL management" +#~ msgstr "Blokkeerlijst beheer" + +#, fuzzy +#~ msgid "ACL Templates" +#~ msgstr "Sjablonen" + +#, fuzzy +#~ msgid "" +#~ "This includes all system and setup informations. Please double check if " +#~ "your really want to do this since there is no way for GOsa to get your " +#~ "data back." +#~ msgstr "" +#~ "Dit omvat alle systeem en configuratie informatie. Verzeker uzelf " +#~ "hiervan, aangezien er geen manier is voor GOsa om deze gegevens terug te " +#~ "halen." + +#~ msgid "" +#~ "Best thing to do before performing this action would be to save the " +#~ "current contents of your LDAP tree in a file. So - if you've done so - " +#~ "press 'Delete' to continue or 'Cancel' to abort." +#~ msgstr "" +#~ "Het is aan te raden de huidige inhoud van uw LDAP database op te slaan " +#~ "alvorens u doorgaat. Indien u dat gedaan heeft drukt u op 'Verwijderen' " +#~ "om door te gaan of op 'Annuleren' om te annuleren." + +#, fuzzy +#~ msgid "List of acls" +#~ msgstr "Lijst met macro's" + +#~ msgid "Summary" +#~ msgstr "Samenvatting" + +#, fuzzy +#~ msgid "Display acls matching" +#~ msgstr "Toon overeenkomende macro's" + +#~ msgid "Role" +#~ msgstr "Funktie" + +#, fuzzy +#~ msgid "Edit acl role" +#~ msgstr "Bewerk share" + +#, fuzzy +#~ msgid "Edit acl" +#~ msgstr "Bewerk klasse" + +#, fuzzy +#~ msgid "Delete acl" +#~ msgstr "Verwijder klasse" + +#, fuzzy +#~ msgid "ACL role" +#~ msgstr "Rechten" + +#, fuzzy +#~ msgid "Access control roles" +#~ msgstr "Toegangsopties" + +#, fuzzy +#~ msgid "Edit AC roles" +#~ msgstr "Rechten" + +#, fuzzy +#~ msgid "Reset ACL" +#~ msgstr "Verwijderen" + +#, fuzzy +#~ msgid "ACL for these objects: %s" +#~ msgstr "Nieuw FAI object aanmaken" + +#, fuzzy +#~ msgid "Edit category ACL" +#~ msgstr "Bewerk klasse" + +#, fuzzy +#~ msgid "Reset category ACL" +#~ msgstr "Categorie" + +#, fuzzy +#~ msgid "Object in use" +#~ msgstr "Objectnaam" + +#~ msgid "" +#~ "To change the user password use the fields below. The changes take effect " +#~ "immediately. Please memorize the new password, because the user wouldn't " +#~ "be able to login without it." +#~ msgstr "" +#~ "Gebruik de velden hieronder om het gebruikers wachtwoord te veranderen. " +#~ "De veranderingen worden onmiddelijk doorgevoerd. Onthoud het nieuwe " +#~ "wachtwoord a.u.b. aangezien de gebruiker niet in kan loggen zonder dit " +#~ "wachtwoord." + +#~ msgid "" +#~ "Changing the password affects your authentification on mail, proxy, samba " +#~ "and unix services." +#~ msgstr "" +#~ "Het veranderen van het wachtwoord is van invloed op E-mail, proxy, samba " +#~ "en Unix diensten." + +#~ msgid "Repeat new password" +#~ msgstr "Herhaal het nieuwe wachtwoord" + +#, fuzzy +#~ msgid "Strength" +#~ msgstr "Straat" + +#~ msgid "Set password" +#~ msgstr "Wachtwoord instellen" + +#~ msgid "User administration" +#~ msgstr "Gebruikersbeheer" + +#~ msgid "" +#~ "This includes all account data, system access rules, imap settings, etc. " +#~ "for this user. Please double check if your really want to do this since " +#~ "there is no way for GOsa to get your data back." +#~ msgstr "" +#~ "Dit omvat alle account gegevens, systeem toegangsregels, imap " +#~ "instellingen etc. voor deze gebruiker. Verzeker uzelf hiervan, aangezien " +#~ "er geen mogelijkheid voor GOsa is om deze informatie terug te halen." + +#~ msgid "Creating a new user using templates" +#~ msgstr "Een nieuwe gebruiker aanmaken m.b.v. een sjabloon" + +#~ msgid "" +#~ "Creating a new user can be assisted by using templates. Many database " +#~ "records will be filled automatically. Choose 'none' to skip the usage of " +#~ "templates." +#~ msgstr "" +#~ "Het aanmaken van een nieuwe gebruiker kan m.b.v. sjablonen gebeuren. Veel " +#~ "database records zullen dan automatisch gevuld worden. Kies 'geen' om het " +#~ "gebruik van sjablonen over te slaan." + +#~ msgid "Template" +#~ msgstr "Sjabloon" + +#~ msgid "Last name" +#~ msgstr "Achternaam" + +#~ msgid "First name" +#~ msgstr "Voornaam" + +#, fuzzy +#~ msgid "Manage users" +#~ msgstr "Windows gebruikers" + +#, fuzzy +#~ msgid "Infrastructure error" +#~ msgstr "PHP fout" + +#, fuzzy +#~ msgid "You have no permission to change this users password!" +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." + +#, fuzzy +#~ msgid "You have no permission to modify object '%s'!" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "You have no permission to use this template!" +#~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#, fuzzy +#~ msgid "user" +#~ msgstr "gebruikers" + +#, fuzzy +#~ msgid "You have no permission to change the lock status for this user!" +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." + +#~ msgid "Given name" +#~ msgstr "Naam" + +#, fuzzy +#~ msgid "Applying a template" +#~ msgstr "Sjablonen" + +#~ msgid "List of users" +#~ msgstr "Lijst met gebruikers" + +#, fuzzy +#~ msgid "Show %s" +#~ msgstr "Toon groepen" + +#, fuzzy +#~ msgid "templates" +#~ msgstr "Sjablonen" + +#, fuzzy +#~ msgid "GOsa object" +#~ msgstr "Object" + +#, fuzzy +#~ msgid "functional users" +#~ msgstr "Toon functionele gebruikers" + +#~ msgid "Posix" +#~ msgstr "Posix" + +#, fuzzy +#~ msgid "POSIX users" +#~ msgstr "Posix instellingen" + +#~ msgid "Mail" +#~ msgstr "E-mail" + +#, fuzzy +#~ msgid "mail users" +#~ msgstr "Windows gebruikers" + +#~ msgid "Samba" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "samba users" +#~ msgstr "Windows gebruikers" + +#~ msgid "Proxy" +#~ msgstr "Proxy" + +#, fuzzy +#~ msgid "proxy users" +#~ msgstr "Toon Proxy gebruikers" + +#, fuzzy +#~ msgid "Apply template" +#~ msgstr "Sjablonen" + +#~ msgid "GOsa" +#~ msgstr "GOsa" + +#~ msgid "Edit generic properties" +#~ msgstr "Bewerk algemene eigenschappen" + +#~ msgid "Edit UNIX properties" +#~ msgstr "Bewerk UNIX eigenschappen" + +#~ msgid "Edit environment properties" +#~ msgstr "Bewerk omgeving eigenschappen" + +#~ msgid "Edit mail properties" +#~ msgstr "Bewerk E-mail eigenschappen" + +#~ msgid "Edit phone properties" +#~ msgstr "Bewerk telefoon eigenschappen" + +#~ msgid "Fax" +#~ msgstr "Fax" + +#~ msgid "Edit fax properies" +#~ msgstr "Bewerk Fax eigenschappen" + +#~ msgid "Edit samba properties" +#~ msgstr "Bewerk Samba eigenschappen" + +#~ msgid "Netatalk" +#~ msgstr "Netatalk" + +#~ msgid "Edit netatalk properties" +#~ msgstr "Bewerk Netatalk eigenschappen" + +#~ msgid "Create user from template" +#~ msgstr "Maak gebruiker aan vanuit sjabloon" + +#~ msgid "Create user with this template" +#~ msgstr "Maak gebruiker aan met dit sjabloon" + +#, fuzzy +#~ msgid "inactive" +#~ msgstr "actief" + +#~ msgid "active" +#~ msgstr "actief" + +#~ msgid "password" +#~ msgstr "wachtwoord" + +#, fuzzy +#~ msgid "Not allowed" +#~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" + +#~ msgid "Delete user" +#~ msgstr "Verwijder gebruiker" + +#, fuzzy +#~ msgid "Number of listed users" +#~ msgstr "Naam van de afdeling" + +#, fuzzy +#~ msgid "Cannot find group SID in your configuration!" +#~ msgstr "" +#~ "Kan de SID van deze groep niet vinden in de LDAP database of in uw " +#~ "configuratie bestand." + +#~ msgid "Samba group" +#~ msgstr "Samba groep" + +#~ msgid "Domain admins" +#~ msgstr "Windows beheerders" + +#~ msgid "Domain users" +#~ msgstr "Windows gebruikers" + +#~ msgid "Domain guests" +#~ msgstr "Windows gasten" + +#~ msgid "Special group (%d)" +#~ msgstr "Speciale groep (%d)" + +#~ msgid "full access" +#~ msgstr "volledige toegang" + +#~ msgid "allow access to these hosts" +#~ msgstr "sta toegang op deze computers toe" + +#~ msgid "! unknown id" +#~ msgstr "! onbekend id" + +#, fuzzy +#~ msgid "Cannot find any SID for '%s'!" +#~ msgstr "Kan bestand '%s' niet aanmaken." + +#, fuzzy +#~ msgid "Cannot find any RIDBASE for '%s'!" +#~ msgstr "Kan bestand '%s' niet aanmaken." + +#, fuzzy +#~ msgid "Cannot allocate a free ID!" +#~ msgstr "" +#~ "Er zitten te veel gebruikers in de database. Kan geen vrij ID toewijzen!" + +#, fuzzy +#~ msgid "Generic group settings" +#~ msgstr "Algemene wachtrij instellingen" + +#, fuzzy +#~ msgid "Samba group type" +#~ msgstr "Samba groep" + +#, fuzzy +#~ msgid "Samba domain name" +#~ msgstr "Samba home" + +#~ msgid "System trust" +#~ msgstr "Systeem vertrouwen" + +#, fuzzy +#~ msgid "Phone pickup group" +#~ msgstr "Leden zitten in een telefoon beantwoordgroep" + +#, fuzzy +#~ msgid "Nagios group" +#~ msgstr "Nagios account" + +#, fuzzy +#~ msgid "Group member" +#~ msgstr "Groepsleden" + +#~ msgid "Group administration" +#~ msgstr "Groepen beheer" + +#~ msgid "" +#~ "This may be a primary user group. Please double check if you really want " +#~ "to do this since there is no way for GOsa to get your data back." +#~ msgstr "" +#~ "Dit kan een primaire groep zijn. Verzeker uzelf ervan dat dit is wat u " +#~ "wilt, aangezien er geen mogelijkheid voor GOsa is om deze gegevens terug " +#~ "te halen." + +#~ msgid "Select systems to add" +#~ msgstr "Selecteer de toe te voegen systemen" + +#~ msgid "Display systems of department" +#~ msgstr "Toon systemen van afdeling" + +#~ msgid "Display systems matching" +#~ msgstr "Toon de overeenkomende systemen" + +#~ msgid "Regular expression for matching addresses" +#~ msgstr "Reguliere expresie voor overeenkomende adressen" + +#~ msgid "Group settings" +#~ msgstr "Groep instellingen" + +#~ msgid "Group name" +#~ msgstr "Groepnaam" + +#~ msgid "Posix name of the group" +#~ msgstr "POSIX naam van de groep" + +#~ msgid "Normally IDs are autogenerated, select to specify manually" +#~ msgstr "" +#~ "Normaliter worden IDs automatisch gegenereerd. Selecteer om handmatig te " +#~ "specificeren" + +#~ msgid "Force GID" +#~ msgstr "Forceer GID" + +#~ msgid "Forced ID number" +#~ msgstr "Geforceerd ID nummer" + +#, fuzzy +#~ msgid "group" +#~ msgstr "groepen" + +#~ msgid "Select users to add" +#~ msgstr "Selecteer de toe te voegen gebruikers" + +#~ msgid "Search within subtree" +#~ msgstr "Zoek binnen subtree" + +#~ msgid "Display users of department" +#~ msgstr "Toon gebruikers van afdeling" + +#~ msgid "Regular expression for matching user names" +#~ msgstr "Reguliere expressie voor overeenkomende gebruikersnamen" + +#~ msgid "List of groups" +#~ msgstr "Lijst met groepen" + +#~ msgid "Select to see groups that are primary groups of users" +#~ msgstr "" +#~ "Selecteer om de groepen te zien die primaire groepen van gebruikers zijn" + +#, fuzzy +#~ msgid "primary groups" +#~ msgstr "Primaire groep" + +#, fuzzy +#~ msgid "samba groups mappings" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "samba groups" +#~ msgstr "Samba groep" + +#, fuzzy +#~ msgid "application settings" +#~ msgstr "programma's" + +#, fuzzy +#~ msgid "application groups" +#~ msgstr "Toon programma groepen" + +#, fuzzy +#~ msgid "mail settings" +#~ msgstr "E-mail instellingen" + +#, fuzzy +#~ msgid "mail groups" +#~ msgstr "Toon E-mail groepen" + +#~ msgid "Select to see normal groups that have only functional aspects" +#~ msgstr "" +#~ "Selecteer om normale groepen die alleen functionele aspecten hebben te " +#~ "zien" + +#, fuzzy +#~ msgid "functional groups" +#~ msgstr "Toon functionele groepen" + +#~ msgid "User name of which groups are shown" +#~ msgstr "Gebruikersnaam van wie de groepen getoond worden" + +#, fuzzy +#~ msgid "Number of listed groups" +#~ msgstr "Naam van de groep" + +#~ msgid "Descriptive text for this group" +#~ msgstr "Omschrijving voor deze groep" + +#~ msgid "Select to create a samba conform group" +#~ msgstr "Selecteer om een samba conforme groep te maken" + +#~ msgid "in domain" +#~ msgstr "in domein" + +#~ msgid "Members are in a phone pickup group" +#~ msgstr "Leden zitten in een telefoon beantwoordgroep" + +#~ msgid "Members are in a nagios group" +#~ msgstr "Leden zitten in een systeeminformatie groep (Nagios)" + +#~ msgid "Trust mode" +#~ msgstr "Vertrouwensmodus" + +#~ msgid "Group members" +#~ msgstr "Groepsleden" + +#, fuzzy +#~ msgid "In all groups" +#~ msgstr "Primaire groep" + +#, fuzzy +#~ msgid "Not in all groups" +#~ msgstr "Toon E-mail groepen" + +#, fuzzy +#~ msgid "Locality" +#~ msgstr "Plaats" + +#~ msgid "Administrative settings" +#~ msgstr "Administratieve instellingen" + +#, fuzzy +#~ msgid "Domain Component" +#~ msgstr "Windows beheerders" + +#, fuzzy +#~ msgid "Cannot find an unused tag for this administrative unit!" +#~ msgstr "" +#~ "Fatale fout: Kon geen ongebruikte markering vinden om de administratieve " +#~ "eenheid te markeren!" + +#~ msgid "Tagging '%s'." +#~ msgstr "Markeren van '%s'." + +#~ msgid "Moving '%s' to '%s'" +#~ msgstr "Verplaatsen van %s naar %s" + +#~ msgid "FAILED to copy %s, aborting operation" +#~ msgstr "Kopieren van %s is mislukt. Bewerking afgebroken." + +#~ msgid "Departments" +#~ msgstr "Afdelingen" + +#~ msgid "Department name" +#~ msgstr "Afdelingnaam" + +#~ msgid "Category" +#~ msgstr "Categorie" + +#~ msgid "State" +#~ msgstr "Provincie" + +#~ msgid "Address" +#~ msgstr "Adres" + +#~ msgid "Object '%s' is already tagged" +#~ msgstr "Object '%s' is al gemarkeerd" + +#~ msgid "Adding tag (%s) to object '%s'" +#~ msgstr "Toevoegen van markering (%s) aan object '%s'" + +#~ msgid "Removing tag from object '%s'" +#~ msgstr "Verwijderen van markering van object '%s'" + +#~ msgid "List of departments" +#~ msgstr "Lijst met afdelingen" + +#~ msgid "Regular expression for matching department names" +#~ msgstr "Reguliere expressie voor overeenkomende afdelingen" + +#, fuzzy +#~ msgid "Country name" +#~ msgstr "Land" + +#, fuzzy +#~ msgid "Name of country to create" +#~ msgstr "Naam van de aan te maken subtree" + +#~ msgid "Descriptive text for department" +#~ msgstr "Omschrijving voor de afdeling" + +#~ msgid "Choose subtree to place department in" +#~ msgstr "Selecteer de subtree waaronder deze afdeling geplaatst wordt" + +#~ msgid "Tag department as an independent administrative unit" +#~ msgstr "Markeer de afdeling als een onafhankelijke administratieve eenheid" + +#~ msgid "Processing the requested operation" +#~ msgstr "Bezig met verwerken van de gevraagde opdracht" + +#~ msgid "" +#~ "Your browser doesn't support iframes, please use this link to perform the " +#~ "requested operation." +#~ msgstr "" +#~ "Uw browser heeft geen ondersteuning voor frames. Gebruik a.u.b. deze link " +#~ "om de gewenste opdracht uit te voeren." + +#, fuzzy +#~ msgid "You are currently moving/renaming this department." +#~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#~ msgid "Department management" +#~ msgstr "Afdeling beheer" + +#~ msgid "" +#~ "This includes 'all' accounts, systems, etc. in this subtree. Please " +#~ "double check if your really want to do this since there is no way for " +#~ "GOsa to get your data back." +#~ msgstr "" +#~ "Dit omvat 'alle' accounts, systemen etc. in deze subtree. Verzeker uzelf " +#~ "er van dat dit is wat u wilt, aangezien er geen mogelijkheid voor GOsa is " +#~ "om deze gegevens terug te halen." + +#, fuzzy +#~ msgid "Name of organization" +#~ msgstr "Organisatie" + +#, fuzzy +#~ msgid "Name of organization to create" +#~ msgstr "Naam van de aan te maken subtree" + +#~ msgid "Category for this subtree" +#~ msgstr "Categorie voor deze subtree" + +#~ msgid "State where this subtree is located" +#~ msgstr "Provincie waar deze subtree zich bevindt" + +#~ msgid "Location of this subtree" +#~ msgstr "Plaats van deze subtree" + +#~ msgid "Postal address of this subtree" +#~ msgstr "Post adres van deze subtree" + +#~ msgid "Base telephone number of this subtree" +#~ msgstr "Basis telefoonnummer van deze subtree" + +#~ msgid "Base facsimile telephone number of this subtree" +#~ msgstr "Basis Fax nummer van deze subtree" + +#, fuzzy +#~ msgid "Name of locality to create" +#~ msgstr "Naam van de aan te maken subtree" + +#, fuzzy +#~ msgid "Manage Departments" +#~ msgstr "Afdelingen" + +#~ msgid "Country" +#~ msgstr "Land" + +#~ msgid "Name of department" +#~ msgstr "Naam van de afdeling" + +#~ msgid "Name of subtree to create" +#~ msgstr "Naam van de aan te maken subtree" + +#, fuzzy +#~ msgid "Organization name" +#~ msgstr "Organisatie" + +#~ msgid "Postal address" +#~ msgstr "Adres thuis" + +#~ msgid "Phone number" +#~ msgstr "Telefoonnummer" + +#~ msgid "Object groups" +#~ msgstr "Objectgroepen" + +#, fuzzy +#~ msgid "Manage object groups" +#~ msgstr "Naam van objectgroepen" + +#, fuzzy +#~ msgid "Windows Install" +#~ msgstr "Windows werkstation" + +#~ msgid "" +#~ "Please double check if you really want to do this since there is no way " +#~ "for GOsa to get your data back." +#~ msgstr "" +#~ "Controleer a.u.b. of u dit daadwerkelijk wil doen, aangezien er geen " +#~ "mogelijkheid voor GOsa is om uw data terug te krijgen." + +#, fuzzy +#~ msgid "Please enter the new object group name" +#~ msgstr "Geef a.u.b. een nieuwe naam op" + +#~ msgid "Phone queue" +#~ msgstr "Telefoonwachtrij" + +#, fuzzy +#~ msgid "Systems" +#~ msgstr "Systeem" + +#~ msgid "FAI summary" +#~ msgstr "FAI samenvatting" + +#~ msgid "Terminals" +#~ msgstr "Terminals" + +#~ msgid "departments" +#~ msgstr "afdelingen" + +#, fuzzy +#~ msgid "people" +#~ msgstr "Toon personen" + +#~ msgid "groups" +#~ msgstr "groepen" + +#~ msgid "servers" +#~ msgstr "servers" + +#~ msgid "workstations" +#~ msgstr "werkstations" + +#~ msgid "terminals" +#~ msgstr "terminals" + +#~ msgid "printers" +#~ msgstr "printers" + +#~ msgid "phones" +#~ msgstr "telefoons" + +#~ msgid "applications" +#~ msgstr "programma's" + +#~ msgid "too many different objects!" +#~ msgstr "te veel verschillende object tpyes!" + +#~ msgid "users" +#~ msgstr "gebruikers" + +#, fuzzy +#~ msgid "winstations" +#~ msgstr "Windows werkstation" + +#~ msgid "Non existing dn:" +#~ msgstr "Niet bestaande dn: " + +#, fuzzy +#~ msgid "You can combine two different object types at maximum, only!" +#~ msgstr "" +#~ "U kunt maximaal twee verschillende object types tegelijk combineren!" + +#, fuzzy +#~ msgid "Object group generic" +#~ msgstr "Objectgroep" + +#, fuzzy +#~ msgid "Sytem trust" +#~ msgstr "Systeem vertrouwen" + +#, fuzzy +#~ msgid "Member" +#~ msgstr "Groepsleden" + +#~ msgid "Name of the group" +#~ msgstr "Naam van de groep" + +#~ msgid "Member objects" +#~ msgstr "Lidmaatschap objecten" + +#~ msgid "List of object groups" +#~ msgstr "Lijst met objectgroepen" + +#, fuzzy +#~ msgid "user groups" +#~ msgstr "groepen" + +#, fuzzy +#~ msgid "nested groups" +#~ msgstr "Objectgroepen" + +#, fuzzy +#~ msgid "department groups" +#~ msgstr "afdelingen" + +#, fuzzy +#~ msgid "server groups" +#~ msgstr "servers" + +#, fuzzy +#~ msgid "workstation groups" +#~ msgstr "werkstations" + +#, fuzzy +#~ msgid "windows workstation groups" +#~ msgstr "Toon werkstations" + +#, fuzzy +#~ msgid "terminal groups" +#~ msgstr "Toon E-mail groepen" + +#, fuzzy +#~ msgid "printer groups" +#~ msgstr "Primaire groep" + +#, fuzzy +#~ msgid "phone groups" +#~ msgstr "Toon groepen" + +#, fuzzy +#~ msgid "Number of listed object groups" +#~ msgstr "Naam van objectgroepen" + +#~ msgid "Display objects of department" +#~ msgstr "Toon objecten van afdeling" + +#~ msgid "UNIX" +#~ msgstr "Unix" + +#~ msgid "FAX" +#~ msgstr "Fax" + +#~ msgid "FTP" +#~ msgstr "Ftp" + +#~ msgid "Thin Client" +#~ msgstr "Thin Client" + +#~ msgid "Contents" +#~ msgstr "Inhoud" + +#~ msgid "This object has no relationship to other objects." +#~ msgstr "Dit object heeft geen relatie met andere objecten." + +#~ msgid "Welcome %s!" +#~ msgstr "Welkom %s!" + +#~ msgid "" +#~ "This is the GOsa main menu. You can select your tasks from the menu on " +#~ "the left, or by choosing one of the pictograms below. All changes apply " +#~ "directly to your companies LDAP server." +#~ msgstr "" +#~ "Dit is het GOsa hoofdmenu. U kunt taken selecteren door het menu aan de " +#~ "linkerzijde te gebruiken of door een van de pictogrammen hieronder te " +#~ "selecteren. Alle veranderingen worden direct op de LDAP server van uw " +#~ "bedrijf doorgevoerd." + +#~ msgid "" +#~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " +#~ "get back to the pictogram view." +#~ msgstr "" +#~ "Gebruik 'Uitloggen' bovenin om de verbinding te verbreken en 'Hoofdmenu' " +#~ "om terug te keren naar het onderstaande pictogrammen overzicht." + +#~ msgid "The GOsa team" +#~ msgstr "Het GOsa team" + +#~ msgid "Select groups to add" +#~ msgstr "Selecteer de toe te voegen groepen" + +#~ msgid "Display groups of department" +#~ msgstr "Toon groepen van afdeling" + +#~ msgid "Display groups matching" +#~ msgstr "Toon overeenkomende groepen" + +#~ msgid "Display groups of user" +#~ msgstr "Toon groepen van gebruiker" + +#, fuzzy +#~ msgid "Edit users POSIX settings" +#~ msgstr "Posix instellingen" + +#~ msgid "expired" +#~ msgstr "verlopen" + +#~ msgid "grace time active" +#~ msgstr "gratie tijd actief" + +#, fuzzy +#~ msgid "password not changeable" +#~ msgstr "actief, wachtwoord onveranderbaar" + +#, fuzzy +#~ msgid "password expired" +#~ msgstr "actief, wachtwoord verlopen" + +#~ msgid "unconfigured" +#~ msgstr "niet geconfigureerd" + +#~ msgid "Password can't be changed up to %s days after last change" +#~ msgstr "" +#~ "Het wachtwoord kan pas %s dag(en) na de laatste wijziging gewijzigd worden" + +#~ msgid "Password must be changed after %s days" +#~ msgstr "Het wachtwoord moet na %s dag(en) gewijzigd worden" + +#, fuzzy +#~ msgid "Disable account after %s days of inactivity after password expiry" +#~ msgstr "" +#~ "Blokkeer het account na %s dag(en) inactiviteit nadat het wachtwoord " +#~ "verlopen is" + +#, fuzzy +#~ msgid "Warn user %s days before password expiry" +#~ msgstr "Waarschuw de gebruiker %s dagen voordat het wachtwoord verloopt" + +#~ msgid "Group of user" +#~ msgstr "Gebruikersgroep" + +#~ msgid "Home directory" +#~ msgstr "Persoonlijke map" + +#~ msgid "UID" +#~ msgstr "UID" + +#, fuzzy +#~ msgid "shadowMin" +#~ msgstr "Schaduwen van andere sessie" + +#, fuzzy +#~ msgid "shadowMax" +#~ msgstr "Schaduwen van andere sessie" + +#, fuzzy +#~ msgid "shadowWarning" +#~ msgstr "Schaduwen van andere sessie" + +#, fuzzy +#~ msgid "shadowInactive" +#~ msgstr "Schaduwen van andere sessie" + +#, fuzzy +#~ msgid "POSIX account" +#~ msgstr "GLPI account" + +#, fuzzy +#~ msgid "Group ID" +#~ msgstr "Groep" + +#, fuzzy +#~ msgid "Force password change on login" +#~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" + +#, fuzzy +#~ msgid "Shadow min" +#~ msgstr "Schaduwen van andere sessie" + +#, fuzzy +#~ msgid "Shadow max" +#~ msgstr "Schaduwen van andere sessie" + +#, fuzzy +#~ msgid "Shadow warning" +#~ msgstr "Schaduwen van andere sessie" + +#, fuzzy +#~ msgid "Shadow inactive" +#~ msgstr "Schaduwen van andere sessie" + +#, fuzzy +#~ msgid "Shadow expire" +#~ msgstr "Toon personen" + +#, fuzzy +#~ msgid "System trust model" +#~ msgstr "Systeem vertrouwen" + +#, fuzzy +#~ msgid "POSIX settings" +#~ msgstr "Posix instellingen" + +#~ msgid "User must change password on first login" +#~ msgstr "Het wachtwoord moet bij de eerste aanmelding gewijzigd worden" + +#~ msgid "Password expires on" +#~ msgstr "Wachtwoord verloopt op" + +#~ msgid "Posix settings" +#~ msgstr "Posix instellingen" + +#~ msgid "Force UID/GID" +#~ msgstr "Forceer UID/GID" + +#~ msgid "Group membership" +#~ msgstr "Groep lidmaatschap" + +#~ msgid "(Warning: more than 16 groups are not supported by NFS!)" +#~ msgstr "(Waarschuwing: NFS ondersteunt niet meer dan 16 groepen!)" + +#~ msgid "Primary group" +#~ msgstr "Primaire groep" + +#~ msgid "Account" +#~ msgstr "Account" + +#~ msgid "" +#~ "To change your personal password use the fields below. The changes take " +#~ "effect immediately. Please memorize the new password, because you " +#~ "wouldn't be able to login without it." +#~ msgstr "" +#~ "Gebruik het veld hieronder om uw persoonlijke wachtwoord te veranderen. " +#~ "De veranderingen worden direct doorgevoerd. Onthoud het nieuwe wachtwoord " +#~ "a.u.b. aangezien u niet in zult kunnen loggen zonder dit wachtwoord." + +#~ msgid "Clear fields" +#~ msgstr "Wis velden" + +#, fuzzy +#~ msgid "Change user password" +#~ msgstr "Verander wachtwoord" + +#~ msgid "You need to specify your current password in order to proceed." +#~ msgstr "U moet uw huidige wachtwoord opgeven om door te kunnen gaan." + +#~ msgid "The password you've entered as 'New password' is empty." +#~ msgstr "Het nieuw ingevoerde wachtwoord is leeg." + +#, fuzzy +#~ msgid "External password changer reported a problem: %s." +#~ msgstr "Extern wachtwoord verander mechanisme rapporteerde een probleem:" + +#~ msgid "" +#~ "The password you've entered as your current password doesn't match the " +#~ "real one." +#~ msgstr "" +#~ "Het wachtwoord dat u opgegeven heeft als uw huidige wachtwoord is niet " +#~ "correct." + +#, fuzzy +#~ msgid "You have no permission to change your password." +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." + +#, fuzzy +#~ msgid "User password" +#~ msgstr "Wachtwoord wissen" + +#~ msgid "" +#~ "You've successfully changed your password. Remember to change all " +#~ "programms configured to use it as well." +#~ msgstr "" +#~ "U heeft succesvol uw wachtwoord veranderd. Denkt u eraan dat u alle " +#~ "programma's die dit wachtwoord gebruiken ook aanpast!" + +#~ msgid "Password change not allowed" +#~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" + +#, fuzzy +#~ msgid "You have no permission to change your password at this time" +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." + +#~ msgid "Personal picture" +#~ msgstr "Persoonlijk plaatje" + +#~ msgid "" +#~ "You have changed the method your password is stored in the ldap database. " +#~ "For that reason you've to enter your password at this point again. GOsa " +#~ "will then encode it with the selected method." +#~ msgstr "" +#~ "U heeft de manier waarop uw wachtwoord wordt opgeslagen in de LDAP " +#~ "database veranderd. Daarom moet u het wachtwoord op dit moment opnieuw " +#~ "invoeren. GOsa zal dan het wachtwoord versleutelen op de door u " +#~ "geselecteerde methode." + +#, fuzzy +#~ msgid "You have no permission to set your password!" +#~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." + +#~ msgid "Generic user information" +#~ msgstr "Algemene gebruikersinformatie" + +#~ msgid "Certificates" +#~ msgstr "Certificaten" + +#~ msgid "Standard certificate" +#~ msgstr "Standaard certificaat" + +#~ msgid "S/MIME certificate" +#~ msgstr "S/MIME certificaat" + +#~ msgid "PKCS12 certificate" +#~ msgstr "PKCS12 certificaat" + +#~ msgid "Certificate serial number" +#~ msgstr "Certificaat serienummer" + +#, fuzzy +#~ msgid "Edit organizational user settings" +#~ msgstr "Programma instellingen" + +#~ msgid "female" +#~ msgstr "vrouw" + +#~ msgid "male" +#~ msgstr "man" + +#~ msgid "Certificate is valid from %s to %s and is currently %s." +#~ msgstr "" +#~ "Certificaat is geldig van '%s' tot '%s' en de huidige status is '%s'." + +#~ msgid "valid" +#~ msgstr "geldig" + +#~ msgid "invalid" +#~ msgstr "ongeldig" + +#~ msgid "No certificate installed" +#~ msgstr "Geen certificaat geinstalleerd" + +#, fuzzy +#~ msgid "The selected password method is no longer available." +#~ msgstr "Dit programma is niet meer beschikbaar." + +#, fuzzy +#~ msgid "The selected password method requires initial configuration!" +#~ msgstr "Dit programma is niet meer beschikbaar." + +#~ msgid "Homepage" +#~ msgstr "Homepage" + +#~ msgid "Mobile" +#~ msgstr "GSM" + +#~ msgid "Pager" +#~ msgstr "Pieper" + +#, fuzzy +#~ msgid "Cannot open certificate!" +#~ msgstr "Het opgegeven certificaat kon geopend worden!" + +#~ msgid "Unit" +#~ msgstr "Eenheid" + +#~ msgid "House identifier" +#~ msgstr "Huis identificatie" + +#~ msgid "Vocation" +#~ msgstr "Beroep" + +#~ msgid "Last delivery" +#~ msgstr "Laatste levering" + +#~ msgid "Person locality" +#~ msgstr "Werkplaats" + +#~ msgid "Unit description" +#~ msgstr "Eenheid omschrijving" + +#~ msgid "Subject area" +#~ msgstr "Werkgebied" + +#~ msgid "Functional title" +#~ msgstr "Functionele titel" + +#~ msgid "Public visible" +#~ msgstr "Publiek zichtbaar" + +#~ msgid "Street" +#~ msgstr "Straat" + +#~ msgid "Postal code" +#~ msgstr "Postcode" + +#, fuzzy +#~ msgid "Generic user settings" +#~ msgstr "Algemene wachtrij instellingen" + +#~ msgid "Surname" +#~ msgstr "Achternaam" + +#, fuzzy +#~ msgid "User identification" +#~ msgstr "Gebruikersinformatie" + +#~ msgid "Personal title" +#~ msgstr "Aanhef" + +#~ msgid "Academic title" +#~ msgstr "Academische titel" + +#~ msgid "Date of birth" +#~ msgstr "Geboortedatum" + +#, fuzzy +#~ msgid "Gender" +#~ msgstr "Afzender" + +#, fuzzy +#~ msgid "Preferred language" +#~ msgstr "Voorkeurstaal" + +#~ msgid "User picture" +#~ msgstr "Persoonlijk plaatje" + +#, fuzzy +#~ msgid "Department number" +#~ msgstr "Afdelingnaam" + +#, fuzzy +#~ msgid "Employee number" +#~ msgstr "Functie" + +#~ msgid "Employee type" +#~ msgstr "Functie" + +#, fuzzy +#~ msgid "Room number" +#~ msgstr "Telefoonnummer" + +#, fuzzy +#~ msgid "Telefon number" +#~ msgstr "Telefoonnummer" + +#, fuzzy +#~ msgid "Pager number" +#~ msgstr "Telefoonnummer" + +#, fuzzy +#~ msgid "Mobile number" +#~ msgstr "GSM nummer" + +#, fuzzy +#~ msgid "Fax number" +#~ msgstr "Serienummer" + +#~ msgid "Home postal address" +#~ msgstr "Adres thuis" + +#, fuzzy +#~ msgid "Home phone number" +#~ msgstr "Telefoonnummer" + +#, fuzzy +#~ msgid "User password method" +#~ msgstr "Wachtwoord encryptie" + +#, fuzzy +#~ msgid "User certificates" +#~ msgstr "Standaard certificaat" + +#~ msgid "User settings" +#~ msgstr "Gebruikersinstellingen" + +#~ msgid "Clear password" +#~ msgstr "Wachtwoord wissen" + +#~ msgid "Set new password" +#~ msgstr "Nieuw wachtwoord instellen" + +#~ msgid "Personal information" +#~ msgstr "Persoonlijke informatie" + +#~ msgid "Preferred langage" +#~ msgstr "Voorkeurstaal" + +#~ msgid "Password storage" +#~ msgstr "Wachtwoord encryptie" + +#~ msgid "Edit certificates" +#~ msgstr "Bewerk certificaten" + +#~ msgid "Organizational information" +#~ msgstr "Organisatie informatie" + +#~ msgid "Department No." +#~ msgstr "Afdeling nr." + +#~ msgid "Employee No." +#~ msgstr "Personeel nr." + +#~ msgid "Room No." +#~ msgstr "Kamer nr." + +#~ msgid "Change picture" +#~ msgstr "Verander plaatje" + +#~ msgid "Template name" +#~ msgstr "Sjabloon naam" + +#~ msgid "Sex" +#~ msgstr "Geslacht" + +#~ msgid "Please use the phone tab" +#~ msgstr "Gebruik a.u.b. de telefoon tab" + +#, fuzzy +#~ msgid "Start import" +#~ msgstr "Opstarten" + +#~ msgid "ICA client" +#~ msgstr "ICA client" + +#, fuzzy +#~ msgid "Printer service enabled" +#~ msgstr "Print service" + +#~ msgid "show chooser" +#~ msgstr "toon keuze-mogelijkheid" + +#~ msgid "direct" +#~ msgstr "direkt" + +#~ msgid "load balanced" +#~ msgstr "load balanced" diff --git a/trunk/gosa-plugins/goto/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/goto/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..842019ec9 --- /dev/null +++ b/trunk/gosa-plugins/goto/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,7389 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:31+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/ogroups/goto/termgroup.tpl:2 admin/devices/remove.tpl:2 +#: admin/applications/remove.tpl:2 admin/mimetypes/remove.tpl:2 +#: admin/systems/ppd/remove_ppd.tpl:2 addons/goto/remove.tpl:2 +#: personal/environment/class_environment.inc:139 +#: personal/environment/class_environment.inc:307 +#: personal/environment/class_environment.inc:360 +#: personal/environment/class_environment.inc:364 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: admin/ogroups/goto/termgroup.tpl:2 +msgid "" +"Actions you choose here influence all systems in this object group. " +"Additionally, all values editable here can be inherited by the clients " +"assigned to this object group." +msgstr "" +"Akcje wybrane tutaj wpływają na wszystkie systemy w tej grupie obiektów. " +"Dodatkowo wszystkie wartości edytowalne tutaj mogą być odziedziczone przez " +"klientów przypisanych do tych grup obiektów." + +#: admin/ogroups/goto/termgroup.tpl:6 +#: admin/devices/class_deviceGeneric.inc:251 +#: admin/applications/class_applicationGeneric.inc:597 +#: admin/mimetypes/generic.tpl:4 admin/mimetypes/paste_generic.tpl:4 +#: admin/mimetypes/class_mimetypeGeneric.inc:715 +#: admin/systems/goto/class_printGeneric.inc:920 +#: admin/systems/goto/class_workstationGeneric.inc:698 +msgid "Generic" +msgstr "Ogólne" + +#: admin/ogroups/goto/termgroup.tpl:14 +#: admin/ogroups/goto/class_termgroup.inc:145 +#: admin/systems/goto/workstation.tpl:95 +#: admin/systems/goto/class_workstationGeneric.inc:489 +#: admin/systems/goto/class_terminalGeneric.inc:480 +#: admin/systems/goto/terminal.tpl:117 +msgid "NTP server" +msgstr "Serwer NTP" + +#: admin/ogroups/goto/termgroup.tpl:17 admin/systems/goto/workstation.tpl:98 +#: admin/systems/goto/terminal.tpl:120 +msgid "Choose server to use for synchronizing time" +msgstr "Proszę wybrać serwer do synchronizacji czasu" + +#: admin/ogroups/goto/termgroup.tpl:47 +#: admin/ogroups/goto/class_termgroup.inc:378 +#: admin/systems/goto/workstation.tpl:55 +#: admin/systems/goto/class_terminalGeneric.inc:669 +#: admin/systems/goto/terminal.tpl:47 +msgid "Mode" +msgstr "Tryb" + +#: admin/ogroups/goto/termgroup.tpl:50 admin/systems/goto/workstation.tpl:58 +#: admin/systems/goto/terminal.tpl:50 +msgid "Select terminal mode" +msgstr "Proszę wybrać tryb terminala" + +#: admin/ogroups/goto/termgroup.tpl:58 +#: admin/ogroups/goto/class_termgroup.inc:379 +#: admin/systems/services/syslog/class_goSyslogServer.inc:27 +#: admin/systems/services/syslog/class_goSyslogServer.inc:47 +#: admin/systems/goto/workstation.tpl:65 +#: admin/systems/goto/class_workstationGeneric.inc:712 +#: admin/systems/goto/terminal.tpl:57 +msgid "Syslog server" +msgstr "Serwer Syslog" + +#: admin/ogroups/goto/termgroup.tpl:61 admin/systems/goto/workstation.tpl:68 +#: admin/systems/goto/terminal.tpl:60 +msgid "Choose server to use for logging" +msgstr "Proszę wybrać serwer do logowania" + +#: admin/ogroups/goto/termgroup.tpl:69 +#: admin/ogroups/goto/class_termgroup.inc:382 +#: admin/systems/goto/class_terminalGeneric.inc:672 +#: admin/systems/goto/terminal.tpl:76 +msgid "Root server" +msgstr "Serwer NFS" + +#: admin/ogroups/goto/termgroup.tpl:72 admin/systems/goto/terminal.tpl:79 +msgid "Select NFS root filesystem to use" +msgstr "Proszę wybrać główny system plików NFS" + +#: admin/ogroups/goto/termgroup.tpl:79 +#: admin/ogroups/goto/class_termgroup.inc:383 +#: admin/systems/goto/class_terminalGeneric.inc:673 +#: admin/systems/goto/terminal.tpl:86 +msgid "Swap server" +msgstr "Serwer Swap" + +#: admin/ogroups/goto/termgroup.tpl:82 admin/systems/goto/terminal.tpl:89 +msgid "Choose NFS filesystem to place swap files on" +msgstr "Proszę wybrać system plików NFS dla plików swap" + +#: admin/ogroups/goto/termgroup.tpl:110 admin/systems/goto/workstation.tpl:130 +#: admin/systems/goto/terminal.tpl:156 addons/goto/class_gotomasses.inc:415 +msgid "Action" +msgstr "Akcja" + +#: admin/ogroups/goto/termgroup.tpl:115 admin/systems/goto/workstation.tpl:137 +#: admin/systems/goto/terminal.tpl:161 +msgid "Select action to execute for this terminal" +msgstr "Proszę wybrać akcję do wykonania dla tego terminala" + +#: admin/ogroups/goto/termgroup.tpl:123 admin/applications/generic.tpl:24 +#: admin/applications/class_applicationGeneric.inc:438 +#: admin/applications/class_applicationGeneric.inc:609 +#: admin/systems/goto/workstation.tpl:146 +#: admin/systems/goto/workstation.tpl:150 admin/systems/goto/terminal.tpl:169 +#: addons/goto/class_gotomasses.inc:383 +msgid "Execute" +msgstr "Uruchom" + +#: admin/ogroups/goto/class_termgroup.inc:48 +#: admin/systems/goto/class_workstationGeneric.inc:138 +#: admin/systems/goto/class_terminalGeneric.inc:122 +msgid "Activated" +msgstr "Aktywne" + +#: admin/ogroups/goto/class_termgroup.inc:49 +#: admin/systems/goto/class_workstationGeneric.inc:139 +#: admin/systems/goto/class_terminalGeneric.inc:121 +#: addons/goto/class_gotomasses.inc:538 +msgid "Locked" +msgstr "Zablokowane" + +#: admin/ogroups/goto/class_termgroup.inc:95 +#: admin/systems/goto/class_terminalGeneric.inc:281 +#, fuzzy +msgid "Local swap" +msgstr "Nazwa lokalizacji" + +#: admin/ogroups/goto/class_termgroup.inc:101 +#: admin/ogroups/goto/class_termgroup.inc:113 +#: admin/systems/goto/class_terminalStartup.inc:116 +#: admin/systems/goto/class_terminalStartup.inc:120 +#: admin/systems/goto/class_terminalService.inc:175 +#: admin/systems/goto/class_terminalService.inc:256 +#: admin/systems/goto/class_terminalService.inc:264 +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_terminalService.inc:270 +#: admin/systems/goto/class_terminalService.inc:273 +#: admin/systems/goto/class_terminalService.inc:276 +#: admin/systems/goto/class_terminalService.inc:279 +#: admin/systems/goto/class_terminalService.inc:282 +#: admin/systems/goto/class_workstationGeneric.inc:154 +#: admin/systems/goto/class_workstationStartup.inc:180 +#: admin/systems/goto/class_workstationStartup.inc:210 +#: admin/systems/goto/class_workstationService.inc:191 +#: admin/systems/goto/class_workstationService.inc:194 +#: admin/systems/goto/class_workstationService.inc:197 +#: admin/systems/goto/class_workstationService.inc:200 +#: admin/systems/goto/class_workstationService.inc:203 +#: admin/systems/goto/class_workstationService.inc:206 +#: admin/systems/goto/class_workstationService.inc:209 +#: admin/systems/goto/class_workstationService.inc:220 +#: admin/systems/goto/class_workstationService.inc:221 +#: admin/systems/goto/class_workstationService.inc:222 +#: admin/systems/goto/class_workstationService.inc:223 +#: admin/systems/goto/class_workstationService.inc:224 +#: admin/systems/goto/class_workstationService.inc:225 +#: admin/systems/goto/class_workstationService.inc:226 +#: admin/systems/goto/class_terminalGeneric.inc:137 +#: admin/systems/goto/class_terminalGeneric.inc:287 +#: admin/systems/goto/class_terminalGeneric.inc:299 +msgid "inherited" +msgstr "odziedziczony" + +#: admin/ogroups/goto/class_termgroup.inc:203 +#: admin/systems/goto/class_terminalService.inc:666 +#: admin/systems/goto/class_workstationGeneric.inc:212 +#: admin/systems/goto/class_workstationGeneric.inc:635 +#: admin/systems/goto/class_workstationStartup.inc:926 +#: admin/systems/goto/class_workstationStartup.inc:1053 +#: admin/systems/goto/class_workstationStartup.inc:1113 +#: admin/systems/goto/class_workstationService.inc:554 +#: admin/systems/goto/class_terminalGeneric.inc:187 +#: admin/systems/goto/class_terminalGeneric.inc:594 +#: addons/goto/class_gotomasses.inc:328 +#: addons/goto/class_goto_import_file.inc:124 +#, fuzzy +msgid "Service infrastructure" +msgstr "Szukaj wewnątrz tego poddrzewa" + +#: admin/ogroups/goto/class_termgroup.inc:207 +#: admin/systems/goto/class_workstationGeneric.inc:216 +#: admin/systems/goto/class_terminalGeneric.inc:191 +#, fuzzy +msgid "Event error" +msgstr "Błąd" + +#: admin/ogroups/goto/class_termgroup.inc:208 +#: admin/systems/goto/class_workstationGeneric.inc:217 +#: admin/systems/goto/class_terminalGeneric.inc:192 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:265 +#: addons/goto/events/class_DaemonEvent_halt.inc:31 +#: addons/goto/events/class_DaemonEvent_halt.inc:32 +msgid "Switch off" +msgstr "Wyłącz" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:266 +#: addons/goto/events/class_DaemonEvent_reboot.inc:29 +#: addons/goto/events/class_DaemonEvent_reboot.inc:30 +msgid "Reboot" +msgstr "Restartuj" + +#: admin/ogroups/goto/class_termgroup.inc:258 +msgid "Instant update" +msgstr "Natychmiastowe uaktualnienie" + +#: admin/ogroups/goto/class_termgroup.inc:259 +msgid "Scheduled update" +msgstr "Zaplanowana aktualizacja" + +#: admin/ogroups/goto/class_termgroup.inc:260 +#, fuzzy +msgid "Wake" +msgstr "Zbudź" + +#: admin/ogroups/goto/class_termgroup.inc:261 +#: admin/systems/goto/class_workstationGeneric.inc:300 +#: admin/systems/goto/class_workstationGeneric.inc:308 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:32 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:33 +msgid "Reinstall" +msgstr "Przeinstaluj" + +#: admin/ogroups/goto/class_termgroup.inc:262 +#: admin/systems/goto/class_workstationGeneric.inc:301 +#: addons/goto/events/class_DaemonEvent_rescan.inc:28 +#: addons/goto/events/class_DaemonEvent_rescan.inc:29 +msgid "Rescan hardware" +msgstr "Przeskanuj sprzęt" + +#: admin/ogroups/goto/class_termgroup.inc:263 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:28 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:29 +msgid "Memory test" +msgstr "Test pamięci" + +#: admin/ogroups/goto/class_termgroup.inc:264 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:28 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:29 +msgid "System analysis" +msgstr "Analiza systemu" + +#: admin/ogroups/goto/class_termgroup.inc:362 +#: admin/groups/apps/class_groupApplication.inc:649 +#: admin/groups/apps/class_groupApplication.inc:1330 +#: admin/groups/apps/class_groupApplication.inc:1344 +#: admin/groups/apps/class_groupApplication.inc:1358 +#: admin/devices/class_deviceGeneric.inc:196 +#: admin/applications/class_applicationParameters.inc:161 +#: admin/applications/class_applicationParameters.inc:224 +#: admin/applications/class_applicationGeneric.inc:271 +#: admin/applications/class_applicationGeneric.inc:285 +#: admin/applications/class_applicationGeneric.inc:515 +#: admin/mimetypes/class_mimetypeGeneric.inc:494 +#: admin/mimetypes/class_mimetypeGeneric.inc:506 +#: admin/mimetypes/class_mimetypeGeneric.inc:521 +#: admin/systems/services/kiosk/class_goKioskService.inc:249 +#: admin/systems/services/ldap/class_goLdapServer.inc:117 +#: admin/systems/services/ntp/class_goNtpServer.inc:98 +#: admin/systems/services/terminal/class_goTerminalServer.inc:103 +#: admin/systems/services/shares/class_goShareServer.inc:192 +#: admin/systems/services/shares/class_goShareServer.inc:261 +#: admin/systems/services/shares/class_goShareServer.inc:277 +#: admin/systems/services/shares/class_goShareServer.inc:290 +#: admin/systems/goto/class_printGeneric.inc:601 +#: admin/systems/goto/class_printGeneric.inc:885 +#: admin/systems/goto/class_terminalStartup.inc:455 +#: admin/systems/goto/class_ArpNewDevice.inc:69 +#: admin/systems/goto/class_terminalService.inc:590 +#: admin/systems/goto/class_workstationGeneric.inc:364 +#: admin/systems/goto/class_workstationGeneric.inc:596 +#: admin/systems/goto/class_workstationGeneric.inc:613 +#: admin/systems/goto/class_workstationStartup.inc:877 +#: admin/systems/goto/class_workstationService.inc:447 +#: admin/systems/goto/class_terminalGeneric.inc:353 +#: admin/systems/goto/class_terminalGeneric.inc:580 +#: personal/environment/class_environment.inc:1058 +#: personal/environment/class_environment.inc:1315 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/ogroups/goto/class_termgroup.inc:370 +msgid "System" +msgstr "System" + +#: admin/ogroups/goto/class_termgroup.inc:371 +msgid "System group" +msgstr "Grupa systemowa" + +#: admin/ogroups/goto/class_termgroup.inc:380 +#: admin/systems/goto/class_workstationGeneric.inc:716 +#: admin/systems/goto/class_terminalGeneric.inc:678 +msgid "Action flag" +msgstr "Flaga akcji" + +#: admin/ogroups/goto/class_termgroup.inc:381 +#: admin/systems/goto/class_workstationGeneric.inc:713 +msgid "Ntp server" +msgstr "Serwer NTP" + +#: admin/groups/apps/edit_entry.tpl:8 +#, fuzzy +msgid "Folder image" +msgstr "Strona kodowa" + +#: admin/groups/apps/edit_entry.tpl:12 +msgid "Could not load image." +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:14 +#: admin/systems/goto/class_gotoLpdEnabled.inc:58 +#, fuzzy +msgid "None" +msgstr "żaden" + +#: admin/groups/apps/edit_entry.tpl:24 +#, fuzzy +msgid "Upload image" +msgstr "Wgraj" + +#: admin/groups/apps/edit_entry.tpl:28 admin/applications/generic.tpl:142 +#: admin/systems/ppd/printerPPDDialog.tpl:21 +#: addons/goto/goto_import_file.tpl:25 +msgid "Upload" +msgstr "Wgraj" + +#: admin/groups/apps/edit_entry.tpl:32 +msgid "Reset image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:33 +#, fuzzy +msgid "Reset" +msgstr "ustaw" + +#: admin/groups/apps/edit_entry.tpl:40 +#: admin/applications/class_applicationGeneric.inc:557 +msgid "Application settings" +msgstr "Ustawienia Aplikacji" + +#: admin/groups/apps/edit_entry.tpl:43 +#: admin/devices/class_deviceGeneric.inc:90 +#: admin/devices/class_deviceGeneric.inc:114 +#: admin/devices/class_deviceGeneric.inc:260 +#: admin/applications/class_applicationParameters.inc:193 +#: admin/applications/class_applicationGeneric.inc:430 +#: admin/applications/class_applicationGeneric.inc:434 +#: admin/applications/class_applicationGeneric.inc:606 +#: admin/applications/class_applicationGeneric.inc:610 +#: admin/mimetypes/class_mimetypeGeneric.inc:532 +#: admin/mimetypes/class_mimetypeGeneric.inc:724 +#: admin/systems/services/shares/class_goShareServer.inc:398 +#: admin/systems/services/nfs/class_servNfs.inc:199 +#: admin/systems/services/nfs/class_servNfs.inc:202 +#: admin/systems/services/nfs/class_servNfs.inc:235 +#: admin/systems/services/nfs/servnfs.tpl:9 +#: admin/systems/goto/class_printGeneric.inc:670 +#: admin/systems/goto/class_printGeneric.inc:675 +#: admin/systems/goto/class_printGeneric.inc:694 +#: admin/systems/goto/class_printGeneric.inc:929 +#: admin/systems/goto/class_ArpNewDevice.inc:46 +#: admin/systems/goto/class_workstationGeneric.inc:456 +#: admin/systems/goto/class_workstationGeneric.inc:461 +#: admin/systems/goto/class_workstationGeneric.inc:479 +#: admin/systems/goto/class_terminalGeneric.inc:446 +#: admin/systems/goto/class_terminalGeneric.inc:451 +#: admin/systems/goto/class_terminalGeneric.inc:470 +#: admin/systems/goto/class_terminalGeneric.inc:665 +#: personal/environment/class_logonManagementDialog.inc:103 +msgid "Name" +msgstr "Imię" + +#: admin/groups/apps/edit_entry.tpl:53 +msgid "Application options" +msgstr "Opcje aplikacji" + +#: admin/groups/apps/class_groupApplication.inc:381 +#: admin/groups/apps/class_groupApplication.inc:385 +#, fuzzy +msgid "Menu" +msgstr "Drukarka" + +#: admin/groups/apps/class_groupApplication.inc:439 +msgid "Back" +msgstr "Wróć" + +#: admin/groups/apps/class_groupApplication.inc:450 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:147 +msgid "back" +msgstr "wróć" + +#: admin/groups/apps/class_groupApplication.inc:458 +msgid "department" +msgstr "departament" + +#: admin/groups/apps/class_groupApplication.inc:481 +#: admin/applications/class_applicationManagement.inc:368 +#: admin/applications/class_applicationManagement.inc:449 +#: admin/applications/class_applicationGeneric.inc:127 +msgid "application" +msgstr "aplikacja" + +#: admin/groups/apps/class_groupApplication.inc:1146 +msgid "Not available in release." +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1373 +#: admin/applications/class_applicationManagement.inc:24 +#: admin/mimetypes/generic.tpl:117 admin/mimetypes/generic.tpl:177 +msgid "Applications" +msgstr "Aplikacje" + +#: admin/groups/apps/class_groupApplication.inc:1374 +msgid "Group applications" +msgstr "Grupa aplikacje" + +#: admin/groups/apps/class_groupApplication.inc:1381 +#: admin/applications/class_divListApplication.inc:114 +#: admin/applications/class_divListApplication.inc:150 +#: admin/applications/class_applicationGeneric.inc:603 +#: admin/mimetypes/class_mimetypeGeneric.inc:728 +msgid "Application" +msgstr "Aplikacja" + +#: admin/groups/apps/class_groupApplication.inc:1382 +#: admin/groups/apps/app_list.tpl:5 admin/groups/apps/app_list.tpl:53 +#: admin/systems/goto/workstationStartup.tpl:83 +#: admin/systems/goto/workstationStartup.tpl:123 +msgid "Release" +msgstr "Wersja" + +#: admin/groups/apps/class_groupApplication.inc:1383 +msgid "Application parameter" +msgstr "Parametr aplikacji" + +#: admin/groups/apps/app_list.tpl:11 +#, fuzzy +msgid "Copy menu" +msgstr "kopiuj" + +#: admin/groups/apps/app_list.tpl:13 +msgid "Paste menu from" +msgstr "" + +#: admin/groups/apps/app_list.tpl:17 +#, fuzzy +msgid "Delete menu" +msgstr "Usuń wpis" + +#: admin/groups/apps/app_list.tpl:70 admin/groups/apps/app_list.tpl:74 +#, fuzzy +msgid "Folder" +msgstr "Filtry" + +#: admin/groups/apps/app_list.tpl:82 admin/groups/apps/app_list.tpl:103 +#: admin/groups/apps/app_list.tpl:128 addons/goto/class_gotomasses.inc:432 +msgid "Move up" +msgstr "Przesuń w górę" + +#: admin/groups/apps/app_list.tpl:84 admin/groups/apps/app_list.tpl:105 +#: admin/groups/apps/app_list.tpl:130 addons/goto/class_gotomasses.inc:434 +msgid "Move down" +msgstr "Przesuń w dół" + +#: admin/groups/apps/app_list.tpl:86 admin/groups/apps/app_list.tpl:107 +#: admin/groups/apps/app_list.tpl:132 +#: admin/devices/class_divListDevices.inc:100 +#: admin/applications/class_applicationParameters.inc:125 +#: admin/applications/class_divListApplication.inc:120 +#: admin/mimetypes/class_divListMimeTypes.inc:122 +#: admin/systems/goto/terminalService.tpl:212 +#: admin/systems/goto/terminalStartup.tpl:115 +#: admin/systems/goto/workstationStartup.tpl:233 +#: admin/systems/goto/printer.tpl:71 addons/goto/class_gotomasses.inc:269 +#: addons/goto/class_gotomasses.inc:376 addons/goto/class_gotomasses.inc:484 +#: addons/goto/class_gotomasses.inc:488 +#: addons/goto/events/class_DaemonEvent.inc:230 +#: personal/environment/environment.tpl:238 +msgid "Remove" +msgstr "Usuń" + +#: admin/groups/apps/app_list.tpl:88 admin/groups/apps/app_list.tpl:134 +#: admin/systems/services/shares/goShareServer.tpl:17 +#: admin/systems/goto/printer.tpl:68 addons/goto/class_gotomasses.inc:469 +#: personal/environment/environment.tpl:274 +msgid "Edit" +msgstr "Edytuj" + +#: admin/groups/apps/app_list.tpl:121 +#, fuzzy +msgid "Entry" +msgstr "Edycja pozycji" + +#: admin/groups/apps/app_list.tpl:143 +#, fuzzy +msgid "add to" +msgstr "Dodaj opcję" + +#: admin/groups/apps/app_list.tpl:149 admin/groups/apps/app_list.tpl:159 +#, fuzzy +msgid "Add selected applications to this folder." +msgstr "Wybrana aplikacja nie posiada opcji." + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Separator" +msgstr "Wstaw separator" + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Add a separator to this folder." +msgstr "Wybrana aplikacja nie posiada opcji." + +#: admin/devices/class_divListDevices.inc:33 +#: admin/devices/class_divListDevices.inc:34 +#, fuzzy +msgid "List of defined devices" +msgstr "Lista urządzeń" + +#: admin/devices/class_divListDevices.inc:45 +#: admin/applications/class_divListApplication.inc:45 +#: admin/mimetypes/class_divListMimeTypes.inc:45 +#, fuzzy +msgid "Select all" +msgstr "Wybierz" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/devices/deviceGeneric.tpl:20 admin/devices/paste_deviceGeneric.tpl:9 +msgid "Device name" +msgstr "Nazwa urządzenia" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/applications/class_divListApplication.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +msgid "Department" +msgstr "Departament" + +#: admin/devices/class_divListDevices.inc:52 +#: admin/devices/class_divListDevices.inc:87 +#: admin/applications/class_divListApplication.inc:52 +#: admin/applications/class_divListApplication.inc:107 +#: admin/mimetypes/class_divListMimeTypes.inc:52 +#: admin/mimetypes/class_divListMimeTypes.inc:109 +#: addons/goto/class_gotomasses.inc:365 +msgid "Actions" +msgstr "Akcje" + +#: admin/devices/class_divListDevices.inc:58 +msgid "Display devices matching" +msgstr "Wyświetl pasujące urządzenia" + +#: admin/devices/class_divListDevices.inc:82 admin/devices/deviceGeneric.tpl:9 +#: admin/devices/class_deviceGeneric.inc:261 admin/applications/generic.tpl:42 +#: admin/applications/class_divListApplication.inc:90 +#: admin/applications/class_applicationGeneric.inc:607 +#: admin/mimetypes/generic.tpl:44 +#: admin/mimetypes/class_divListMimeTypes.inc:93 +#: admin/mimetypes/class_mimetypeGeneric.inc:727 +#: admin/systems/services/ldap/class_goLdapServer.inc:79 +#: admin/systems/services/ldap/class_goLdapServer.inc:82 +#: admin/systems/goto/workstation.tpl:35 +#: admin/systems/goto/class_printGeneric.inc:930 +#: admin/systems/goto/class_workstationGeneric.inc:710 +#: admin/systems/goto/class_terminalGeneric.inc:667 +#: admin/systems/goto/printer.tpl:27 admin/systems/goto/terminal.tpl:27 +#: addons/goto/class_target_list.inc:152 addons/goto/goto_import_file.tpl:41 +#: addons/goto/events/class_EventTargetAddList.inc:161 +#: addons/goto/events/class_EventTargetAddUsersList.inc:130 +msgid "Base" +msgstr "Kontener" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit department" +msgstr "Zatwierdź departament" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit" +msgstr "Wyślij" + +#: admin/devices/class_divListDevices.inc:92 +#: admin/applications/class_divListApplication.inc:111 +#: admin/mimetypes/class_divListMimeTypes.inc:114 +#: admin/systems/goto/chooser.tpl:16 addons/goto/class_gotomasses.inc:366 +msgid "Create" +msgstr "Utwórz" + +#: admin/devices/class_divListDevices.inc:94 +#: admin/devices/class_divListDevices.inc:131 +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/systems/goto/gotoLpdEnable.tpl:27 +#: admin/systems/goto/gotoLpdEnable.tpl:63 +msgid "Device" +msgstr "Urządzenie" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "edit" +msgstr "edytuj" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "Edit this entry" +msgstr "Edytuj ten obiekt" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:136 +msgid "delete" +msgstr "Usuń" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +msgid "Delete this entry" +msgstr "Usuń ten obiekt" + +#: admin/devices/class_divListDevices.inc:205 +#, fuzzy +msgid "Number of listed devices" +msgstr "Nazwa departamentu" + +#: admin/devices/class_divListDevices.inc:206 +#: admin/applications/class_divListApplication.inc:243 +#: admin/mimetypes/class_divListMimeTypes.inc:244 +#, fuzzy +msgid "Number of listed departments" +msgstr "Nazwa departamentu" + +#: admin/devices/remove.tpl:6 +#, fuzzy +msgid "" +"This may be used by several users/groups. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"To może być używane przez kilka grup. Proszę upewnić się czy kontynuować, " +"gdyż nie ma operacji powrotu." + +#: admin/devices/remove.tpl:9 admin/applications/remove.tpl:9 +#: admin/mimetypes/remove.tpl:9 addons/goto/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Jeśli jesteś pewien - naciśnij 'Usuń' aby kontynuować lub 'Anuluj' aby " +"anulować." + +#: admin/devices/deviceGeneric.tpl:2 admin/devices/paste_deviceGeneric.tpl:2 +#: admin/devices/class_deviceGeneric.inc:257 +msgid "Devices" +msgstr "Urządzenia" + +#: admin/devices/deviceGeneric.tpl:29 admin/devices/class_deviceGeneric.inc:93 +#: admin/devices/class_deviceGeneric.inc:262 admin/applications/generic.tpl:33 +#: admin/applications/class_applicationGeneric.inc:608 +#: admin/mimetypes/generic.tpl:34 admin/mimetypes/paste_generic.tpl:21 +#: admin/mimetypes/class_mimetypeGeneric.inc:726 +#: admin/systems/services/shares/class_goShareServer.inc:400 +#: admin/systems/services/nfs/class_servNfs.inc:207 +#: admin/systems/services/nfs/servnfs.tpl:19 +#: admin/systems/goto/workstation.tpl:19 +#: admin/systems/goto/ArpNewDevice.tpl:17 +#: admin/systems/goto/class_printGeneric.inc:931 +#: admin/systems/goto/class_workstationGeneric.inc:708 +#: admin/systems/goto/class_terminalGeneric.inc:666 +#: admin/systems/goto/printer.tpl:16 admin/systems/goto/terminal.tpl:19 +#: addons/goto/class_gotomasses.inc:917 +#: personal/environment/class_logonManagementDialog.inc:111 +#: personal/environment/logonManagement.tpl:17 +msgid "Description" +msgstr "Opis" + +#: admin/devices/deviceGeneric.tpl:38 +#, fuzzy +msgid "Device type" +msgstr "Nazwa urządzenia" + +#: admin/devices/deviceGeneric.tpl:42 +#, fuzzy +msgid "Choose the device type" +msgstr "Proszę wybrać typ telefonu" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "Serial number" +msgstr "Numer seryjny" + +#: admin/devices/deviceGeneric.tpl:53 +#, fuzzy +msgid "(iSerial)" +msgstr "Szeregowy" + +#: admin/devices/deviceGeneric.tpl:63 +#, fuzzy +msgid "Vendor-ID" +msgstr "ID Dostawcy" + +#: admin/devices/deviceGeneric.tpl:63 +#, fuzzy +msgid "(idVendor)" +msgstr "ID Dostawcy" + +#: admin/devices/deviceGeneric.tpl:72 +#, fuzzy +msgid "Product-ID" +msgstr "ID Produktu" + +#: admin/devices/deviceGeneric.tpl:72 +#, fuzzy +msgid "(idProduct)" +msgstr "ID Produktu" + +#: admin/devices/main.inc:49 admin/devices/main.inc:51 +#, fuzzy +msgid "Hotplug device management" +msgstr "Zarządzanie Hotplug" + +#: admin/devices/class_deviceGeneric.inc:29 +msgid "Digital camera" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:30 +#, fuzzy +msgid "USB stick" +msgstr "sticky" + +#: admin/devices/class_deviceGeneric.inc:31 +msgid "CD/DVD drive" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:98 +#: admin/devices/class_deviceGeneric.inc:100 +#, fuzzy +msgid "iSerial" +msgstr "Szeregowy" + +#: admin/devices/class_deviceGeneric.inc:103 +#: admin/devices/class_deviceGeneric.inc:264 +#: admin/systems/goto/class_gotoLpdEnabled.inc:51 +#, fuzzy +msgid "Serial" +msgstr "Szeregowy" + +#: admin/devices/class_deviceGeneric.inc:106 +#, fuzzy +msgid "Vendor ID" +msgstr "ID Dostawcy" + +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/applications/class_applicationGeneric.inc:264 +#: admin/applications/class_applicationGeneric.inc:338 +#: admin/applications/class_applicationGeneric.inc:370 +#: admin/applications/class_applicationGeneric.inc:375 +#: admin/applications/class_applicationGeneric.inc:380 +#: admin/applications/class_applicationGeneric.inc:384 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: admin/systems/services/kiosk/class_goKioskService.inc:161 +#: admin/systems/services/kiosk/class_goKioskService.inc:164 +#: admin/systems/services/kiosk/class_goKioskService.inc:234 +#: admin/systems/services/shares/class_goShareServer.inc:98 +#: admin/systems/services/shares/class_goShareServer.inc:233 +#: admin/systems/services/nfs/class_servNfs.inc:43 +#: admin/systems/services/nfs/class_servNfs.inc:46 +#: admin/systems/goto/class_printGeneric.inc:435 +#: admin/systems/goto/class_printGeneric.inc:482 +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#: admin/systems/goto/class_printGeneric.inc:1008 +#: admin/systems/goto/class_printGeneric.inc:1019 +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:234 +#: admin/systems/goto/class_workstationStartup.inc:247 +#: admin/systems/goto/class_workstationStartup.inc:324 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#: addons/goto/class_gotoLogView.inc:57 addons/goto/class_gotoLogView.inc:175 +#: addons/goto/class_gotomasses.inc:174 addons/goto/class_gotomasses.inc:524 +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:691 +#: addons/goto/class_gotomasses.inc:735 addons/goto/class_gotomasses.inc:739 +#: addons/goto/class_gotomasses.inc:775 addons/goto/class_gotomasses.inc:816 +#: personal/environment/class_environment.inc:591 +#: personal/environment/class_environment.inc:673 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#: personal/environment/class_environment.inc:841 +#: personal/environment/class_environment.inc:892 +#: personal/environment/class_environment.inc:988 +msgid "Error" +msgstr "Błąd" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Device generic" +msgstr "Nazwa serwera" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Hotplug" +msgstr "Urządzenia Hotplug" + +#: admin/devices/class_deviceGeneric.inc:263 +#: admin/systems/services/shares/class_goShareServer.inc:401 +#: admin/systems/services/nfs/class_servNfs.inc:193 +#: admin/systems/services/nfs/servnfs.tpl:56 +#: admin/systems/goto/terminalService.tpl:48 +#: admin/systems/goto/terminalService.tpl:138 +#: admin/systems/goto/workstationService.tpl:54 +#: admin/systems/goto/workstationService.tpl:156 +#: admin/systems/goto/gotoLpdEnable.tpl:53 +msgid "Type" +msgstr "Typ" + +#: admin/devices/class_deviceGeneric.inc:265 +#, fuzzy +msgid "Vendor" +msgstr "ID Dostawcy" + +#: admin/devices/class_deviceGeneric.inc:266 +#, fuzzy +msgid "Device ID" +msgstr "Urządzenie" + +#: admin/devices/class_deviceManagement.inc:7 +#: personal/environment/class_environment.inc:1783 +#: personal/environment/environment.tpl:293 +msgid "Hotplug devices" +msgstr "Urządzenia Hotplug" + +#: admin/devices/class_deviceManagement.inc:8 +#, fuzzy +msgid "Manage hotplug devices" +msgstr "Dodaj urządzenia hotplug" + +#: admin/devices/class_deviceManagement.inc:246 +#: admin/applications/class_applicationManagement.inc:352 +#: admin/mimetypes/class_mimetypeManagement.inc:360 +#: addons/goto/class_gotomasses.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Uprawnienia" + +#: admin/devices/class_deviceManagement.inc:263 +#: admin/devices/class_deviceManagement.inc:345 +#, fuzzy +msgid "device" +msgstr "Urządzenie" + +#: admin/devices/class_deviceManagement.inc:296 +#: admin/devices/class_deviceManagement.inc:352 +#: admin/devices/class_deviceManagement.inc:381 +#: admin/applications/class_applicationManagement.inc:401 +#: admin/applications/class_applicationManagement.inc:456 +#: admin/applications/class_applicationManagement.inc:487 +#: admin/mimetypes/class_mimetypeManagement.inc:412 +#: admin/mimetypes/class_mimetypeManagement.inc:466 +#: admin/mimetypes/class_mimetypeManagement.inc:496 +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#: personal/environment/class_environment.inc:583 +#, fuzzy +msgid "Permission error" +msgstr "Uprawnienia" + +#: admin/applications/remove.tpl:6 admin/mimetypes/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"To może być używane przez kilka grup. Proszę upewnić się czy kontynuować, " +"gdyż nie ma operacji powrotu." + +#: admin/applications/release_select.tpl:2 +#: admin/mimetypes/release_select.tpl:2 +msgid "Branches" +msgstr "Gałęzie" + +#: admin/applications/release_select.tpl:8 +#: admin/mimetypes/release_select.tpl:8 +msgid "Current release" +msgstr "Obecne wydanie" + +#: admin/applications/class_applicationParameters.inc:53 +msgid "Remove options" +msgstr "Usuń opcje" + +#: admin/applications/class_applicationParameters.inc:53 +#: admin/applications/class_applicationParameters.inc:55 +#, fuzzy +msgid "parameter" +msgstr "Parametr" + +#: admin/applications/class_applicationParameters.inc:55 +msgid "Create options" +msgstr "Utwórz opcje" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Variable" +msgstr "Zmienna" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Default value" +msgstr "Domyślna wartość" + +#: admin/applications/class_applicationParameters.inc:131 +msgid "Add option" +msgstr "Dodaj opcję" + +#: admin/applications/class_applicationParameters.inc:236 +msgid "Parameter" +msgstr "Parametr" + +#: admin/applications/class_applicationParameters.inc:237 +#, fuzzy +msgid "Parameter configuration" +msgstr "Konfiguracja bazy FAX" + +#: admin/applications/class_applicationParameters.inc:245 +#, fuzzy +msgid "Application parameter settings" +msgstr "Parametr aplikacji" + +#: admin/applications/generic.tpl:7 admin/applications/generic.tpl:10 +#: admin/applications/class_divListApplication.inc:51 +#: admin/applications/class_applicationGeneric.inc:561 +msgid "Application name" +msgstr "Nazwa aplikacji" + +#: admin/applications/generic.tpl:15 +msgid "Display name" +msgstr "Wyświetl nazwę" + +#: admin/applications/generic.tpl:19 +#: admin/applications/class_applicationGeneric.inc:566 +msgid "Application name to be displayed (i.e. below icons)" +msgstr "Wyświetlana nazwa aplikacji (pod ikoną)" + +#: admin/applications/generic.tpl:28 +msgid "Path and/or binary name of application" +msgstr "Ścieżka i/lub nazwa binarium aplikacji" + +#: admin/applications/generic.tpl:45 admin/mimetypes/generic.tpl:47 +msgid "Choose subtree to place application in" +msgstr "Wybierz poddrzewo do umieszczenia aplikacji" + +#: admin/applications/generic.tpl:52 admin/mimetypes/generic.tpl:53 +#: admin/systems/goto/workstation.tpl:43 admin/systems/goto/printer.tpl:35 +#: admin/systems/goto/terminal.tpl:36 +msgid "Select a base" +msgstr "Wybierz bazę" + +#: admin/applications/generic.tpl:66 +#: admin/applications/class_applicationGeneric.inc:611 +#: admin/mimetypes/generic.tpl:67 +#: admin/mimetypes/class_mimetypeGeneric.inc:730 +msgid "Icon" +msgstr "Ikona" + +#: admin/applications/generic.tpl:82 admin/mimetypes/generic.tpl:84 +msgid "Update" +msgstr "Aktualizuj" + +#: admin/applications/generic.tpl:82 +msgid "Reload picture from LDAP" +msgstr "Przeładuj obrazek z LDAP" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture" +msgstr "Usuń obrazek" + +#: admin/applications/generic.tpl:85 +#, fuzzy +msgid "Remove picture from LDAP" +msgstr "Przeładuj obrazek z LDAP" + +#: admin/applications/generic.tpl:96 +#: admin/systems/goto/class_gotoLpdEnabled.inc:156 +#: admin/systems/goto/gotoLpdEnable.tpl:79 +#: admin/systems/ppd/printerPPDDialog.tpl:28 +msgid "Options" +msgstr "Opcje" + +#: admin/applications/generic.tpl:103 +#: admin/applications/class_applicationGeneric.inc:614 +msgid "Only executable for members" +msgstr "Tylko wykonywalne dla członków" + +#: admin/applications/generic.tpl:108 +#: admin/applications/class_applicationGeneric.inc:618 +msgid "Replace user configuration on startup" +msgstr "Podmień konfigurację użytkownika na starcie" + +#: admin/applications/generic.tpl:114 +#: admin/applications/class_applicationGeneric.inc:615 +msgid "Place icon on members desktop" +msgstr "Utwórz ikonę na desktopie członka" + +#: admin/applications/generic.tpl:119 +#: admin/applications/class_applicationGeneric.inc:617 +msgid "Place entry in members startmenu" +msgstr "Utwórz wpis w menu startowym członka" + +#: admin/applications/generic.tpl:124 +#: admin/applications/class_applicationGeneric.inc:616 +msgid "Place entry in members launch bar" +msgstr "Utwórz wpis w pasku uruchamiania członka" + +#: admin/applications/generic.tpl:134 +#: personal/environment/logonManagement.tpl:55 +msgid "Script" +msgstr "Skrypt" + +#: admin/applications/generic.tpl:139 addons/goto/goto_import_file.tpl:84 +#: addons/goto/class_gotomasses.inc:375 +#: addons/goto/class_goto_import_file.inc:29 +#: addons/goto/class_goto_import_file.inc:89 +#: addons/goto/class_goto_import_file.inc:131 +#: personal/environment/logonManagement.tpl:65 +msgid "Import" +msgstr "Import" + +#: admin/applications/generic.tpl:144 +msgid "Download" +msgstr "Ściągnij" + +#: admin/applications/class_applicationManagement.inc:25 +#: personal/environment/class_environment.inc:10 +msgid "This does something" +msgstr "To robi coś" + +#: admin/applications/class_divListApplication.inc:25 +msgid "List of Applications" +msgstr "Lista aplikacji" + +#: admin/applications/class_divListApplication.inc:26 +msgid "This table displays all applications in the selected tree." +msgstr "Ta tabela wyświetla wszystkie aplikacje w wybranym drzewie." + +#: admin/applications/class_divListApplication.inc:58 +#: personal/environment/hotplugDialog.tpl:43 +msgid "Display users matching" +msgstr "Wyświetl użytkowników pasujących" + +#: admin/applications/class_divListApplication.inc:199 +#: admin/mimetypes/class_divListMimeTypes.inc:198 +msgid "Freezed" +msgstr "" + +#: admin/applications/class_divListApplication.inc:242 +#, fuzzy +msgid "Number of listed applications" +msgstr "Osadzone aplikacje" + +#: admin/applications/main.inc:48 admin/applications/main.inc:50 +msgid "Application management" +msgstr "Zarządzanie aplikacją" + +#: admin/applications/class_applicationGeneric.inc:95 +msgid "no example" +msgstr "brak przykładu" + +#: admin/applications/class_applicationGeneric.inc:264 +#, fuzzy, php-format +msgid "Cannot remove application - it is still in use by these objects: %s" +msgstr "" +"Nie można usunąć tego załącznika, jest wciąż używany przez system(y) '%s'" + +#: admin/applications/class_applicationGeneric.inc:370 +#, fuzzy +msgid "no read permission" +msgstr "Uprawnienia" + +#: admin/applications/class_applicationGeneric.inc:375 +msgid "cannot resize image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:380 +msgid "cannot convert image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:384 +#, fuzzy, php-format +msgid "cannot save image to '%s'" +msgstr "Nie można zapisać pliku '%s'." + +#: admin/applications/class_applicationGeneric.inc:413 +#, fuzzy +msgid "Execute path" +msgstr "Uruchom" + +#: admin/applications/class_applicationGeneric.inc:598 +#, fuzzy +msgid "Application generic" +msgstr "Nazwa aplikacji" + +#: admin/applications/class_applicationGeneric.inc:612 +msgid "Script content" +msgstr "Zawartość skryptu" + +#: admin/mimetypes/class_mimetypeManagement.inc:24 +#: admin/mimetypes/class_mimetypeGeneric.inc:721 +msgid "Mime types" +msgstr "Typy mime" + +#: admin/mimetypes/class_mimetypeManagement.inc:25 +msgid "Manage mime types" +msgstr "Zarządzaj typami mime" + +#: admin/mimetypes/class_mimetypeManagement.inc:378 +#: admin/mimetypes/class_mimetypeManagement.inc:459 +#: admin/mimetypes/generic.tpl:12 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:116 +#: admin/mimetypes/class_divListMimeTypes.inc:152 +#: admin/mimetypes/paste_generic.tpl:13 +msgid "Mime type" +msgstr "Typ mime" + +#: admin/mimetypes/generic.tpl:16 admin/mimetypes/paste_generic.tpl:16 +msgid "Please enter a name for the mime type here" +msgstr "Proszę podać nazwę typu mime" + +#: admin/mimetypes/generic.tpl:22 +#: admin/mimetypes/class_mimetypeGeneric.inc:725 +msgid "Mime group" +msgstr "Grupa mime" + +#: admin/mimetypes/generic.tpl:26 +msgid "Categorize this mime type" +msgstr "Skategoryzuj ten typ mime" + +#: admin/mimetypes/generic.tpl:38 +msgid "Please specify a description" +msgstr "Proszę podać opis" + +#: admin/mimetypes/generic.tpl:69 admin/mimetypes/generic.tpl:72 +#, fuzzy +msgid "Mime icon" +msgstr "Grupa mime" + +#: admin/mimetypes/generic.tpl:85 +msgid "Update mime type icon" +msgstr "Aktualizuj ikonę typu mime" + +#: admin/mimetypes/generic.tpl:99 +msgid "Left click" +msgstr "" + +#: admin/mimetypes/generic.tpl:104 +#: admin/mimetypes/class_mimetypeGeneric.inc:731 +msgid "File patterns" +msgstr "Wzorce pliku" + +#: admin/mimetypes/generic.tpl:110 +msgid "Please specify a new file pattern" +msgstr "Proszę podać nowy wzorzec pliku" + +#: admin/mimetypes/generic.tpl:113 +msgid "Add a new file pattern" +msgstr "Dodaj nowy wzorzec pliku" + +#: admin/mimetypes/generic.tpl:129 admin/mimetypes/generic.tpl:189 +msgid "Enter an application name here" +msgstr "Podaj nazwę aplikacji" + +#: admin/mimetypes/generic.tpl:132 admin/mimetypes/generic.tpl:193 +msgid "Add application" +msgstr "Dodaj aplikację" + +#: admin/mimetypes/generic.tpl:143 +msgid "Embedding" +msgstr "Osadzanie" + +#: admin/mimetypes/generic.tpl:156 +msgid "Show file in embedded viewer" +msgstr "Pokaż plik w osadzonej przeglądarce" + +#: admin/mimetypes/generic.tpl:163 +msgid "Show file in external viewer" +msgstr "Pokaż plik w zewnętrznej przeglądarce" + +#: admin/mimetypes/generic.tpl:170 +msgid "Ask whether to save to local disk" +msgstr "Pytaj czy zapisać na dysk" + +#: admin/mimetypes/class_divListMimeTypes.inc:27 +#: admin/mimetypes/class_divListMimeTypes.inc:28 +msgid "List of defined mime types" +msgstr "Lista zdefiniowanych typów mime" + +#: admin/mimetypes/class_divListMimeTypes.inc:58 +msgid "Display mime types matching" +msgstr "Wyświetl pasujące typy mime" + +#: admin/mimetypes/class_divListMimeTypes.inc:243 +#, fuzzy +msgid "Number of listed mimetypes" +msgstr "Lista zdefiniowanych typów mime" + +#: admin/mimetypes/paste_generic.tpl:24 +msgid "Please specify a description for this mime type here" +msgstr "Proszę podać opis dla tego typu mime" + +#: admin/mimetypes/main.inc:48 admin/mimetypes/main.inc:50 +msgid "Mimetype management" +msgstr "Zarządzanie typami mime" + +#: admin/mimetypes/class_mimetypeGeneric.inc:535 +#, fuzzy +msgid "File pattern" +msgstr "Wzorce pliku" + +#: admin/mimetypes/class_mimetypeGeneric.inc:716 +msgid "Mime type generic" +msgstr "Typ mime podstawowy" + +#: admin/mimetypes/class_mimetypeGeneric.inc:729 +msgid "Left click action" +msgstr "Akcja lewego kliknięcia" + +#: admin/mimetypes/class_mimetypeGeneric.inc:732 +msgid "Embedded applications" +msgstr "Osadzone aplikacje" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +msgid "Print Service" +msgstr "Usługa drukowania" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "enabled" +msgstr "włączone" + +#: admin/systems/services/cups/class_goCupsServer.inc:27 +#: admin/systems/services/cups/class_goCupsServer.inc:48 +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/goto/info.tpl:124 +msgid "Print service" +msgstr "Usługa Drukowania" + +#: admin/systems/services/cups/class_goCupsServer.inc:68 +msgid "Cups" +msgstr "Cups" + +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/services/shares/class_goShareServer.inc:390 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/cups/class_goCupsServer.inc:77 +#: admin/systems/services/syslog/class_goLogDBServer.inc:101 +msgid "Start" +msgstr "Start" + +#: admin/systems/services/cups/class_goCupsServer.inc:78 +#: admin/systems/services/syslog/class_goLogDBServer.inc:102 +msgid "Stop" +msgstr "Zatrzymaj" + +#: admin/systems/services/cups/class_goCupsServer.inc:79 +#: admin/systems/services/syslog/class_goLogDBServer.inc:103 +msgid "Restart" +msgstr "Restart" + +#: admin/systems/services/kiosk/class_goKioskService.inc:34 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:206 +#, fuzzy +msgid "Kiosk profile service" +msgstr "Ustawienia profilu Kiosk" + +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: personal/environment/class_environment.inc:1784 +#: personal/environment/environment.tpl:124 +#: personal/environment/environment.tpl:160 +msgid "Kiosk profile" +msgstr "Profil Kiosk" + +#: admin/systems/services/kiosk/class_goKioskService.inc:269 +msgid "Kiosk" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/kiosk/goKioskService.tpl:1 +msgid "Kiosk profile management" +msgstr "Zarządzanie profilami kiosk" + +#: admin/systems/services/kiosk/goKioskService.tpl:16 +#, fuzzy +msgid "Server path" +msgstr "Nazwa serwera" + +#: admin/systems/services/kiosk/goKioskService.tpl:23 +#: addons/goto/goto_import_file.tpl:24 +msgid "Browse" +msgstr "Przeglądaj" + +#: admin/systems/services/ldap/goLdapServer.tpl:1 +#: admin/systems/services/ldap/class_goLdapServer.inc:30 +#: admin/systems/services/ldap/class_goLdapServer.inc:68 +msgid "LDAP service" +msgstr "Usługa LDAP" + +#: admin/systems/services/ldap/goLdapServer.tpl:2 +msgid "LDAP URI" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:35 +msgid "fill-in-your-servers-dns-name" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:128 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +msgid "Ldap" +msgstr "Ldap" + +#: admin/systems/services/ldap/class_goLdapServer.inc:137 +msgid "Ldap base" +msgstr "Baza Ldap" + +#: admin/systems/services/ntp/goNtpServer.tpl:2 +msgid "Time server" +msgstr "Serwer czasu" + +#: admin/systems/services/ntp/class_goNtpServer.inc:28 +#: admin/systems/services/ntp/class_goNtpServer.inc:74 +#, fuzzy +msgid "Time service (NTP)" +msgstr "Usługa czasu" + +#: admin/systems/services/ntp/class_goNtpServer.inc:114 +msgid "Time service" +msgstr "Usługa czasu" + +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#, fuzzy +msgid "Time service - NTP" +msgstr "Usługa czasu" + +#: admin/systems/services/ntp/class_goNtpServer.inc:123 +msgid "Ntp source" +msgstr "Źródło ntp" + +#: admin/systems/services/terminal/goTerminalServer.tpl:4 +#: admin/systems/services/terminal/class_goTerminalServer.inc:26 +#: admin/systems/services/terminal/class_goTerminalServer.inc:76 +#: admin/systems/services/terminal/class_goTerminalServer.inc:164 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/goto/class_terminalService.inc:679 +msgid "Terminal service" +msgstr "Usługa Terminali" + +#: admin/systems/services/terminal/goTerminalServer.tpl:8 +#: admin/systems/services/terminal/class_goTerminalServer.inc:173 +msgid "Temporary disable login" +msgstr "Tymczasowo zablokuj logowanie" + +#: admin/systems/services/terminal/goTerminalServer.tpl:13 +msgid "Supported session types" +msgstr "" + +#: admin/systems/services/shares/goShareServer.tpl:1 +#: admin/systems/goto/class_terminalStartup.inc:543 +#: admin/systems/goto/class_workstationStartup.inc:1021 +#: admin/systems/goto/terminalStartup.tpl:91 +#: admin/systems/goto/workstationStartup.tpl:209 +#: personal/environment/class_environment.inc:1782 +#: personal/environment/environment.tpl:212 +msgid "Shares" +msgstr "Udziały" + +#: admin/systems/services/shares/class_goShareServer.inc:31 +#: admin/systems/services/shares/class_goShareServer.inc:157 +#: admin/systems/services/shares/class_goShareServer.inc:389 +#, fuzzy +msgid "File service (Shares)" +msgstr "Usługa plików" + +#: admin/systems/services/shares/class_goShareServer.inc:233 +#, fuzzy +msgid "share" +msgstr "Udziały" + +#: admin/systems/services/shares/class_goShareServer.inc:390 +#, fuzzy +msgid "File service - Shares" +msgstr "Usługa plików" + +#: admin/systems/services/shares/class_goShareServer.inc:399 +#, fuzzy +msgid "Apple mounts" +msgstr "Apple talk" + +#: admin/systems/services/shares/class_goShareServer.inc:402 +msgid "Charset" +msgstr "Kodowanie" + +#: admin/systems/services/shares/class_goShareServer.inc:403 +#: admin/systems/services/nfs/class_servNfs.inc:179 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Path" +msgstr "Ścieżka" + +#: admin/systems/services/shares/class_goShareServer.inc:404 +#: admin/systems/services/nfs/class_servNfs.inc:215 +#: admin/systems/services/nfs/servnfs.tpl:121 +msgid "Option" +msgstr "Opcja" + +#: admin/systems/services/shares/class_goShareServer.inc:405 +#: admin/systems/services/nfs/class_servNfs.inc:211 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Volume" +msgstr "Głośność" + +#: admin/systems/services/nfs/class_servNfs.inc:184 +msgid "'Path / Volume' must be of format 'server:port'!" +msgstr "" + +#: admin/systems/services/nfs/class_servNfs.inc:188 +msgid "'Path / Volume' must contain at least one '/'!" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:1 +msgid "Edit share" +msgstr "Edytuj udział" + +#: admin/systems/services/nfs/servnfs.tpl:2 +msgid "NFS setup" +msgstr "Ustawienia NFS" + +#: admin/systems/services/nfs/servnfs.tpl:39 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:201 +#: addons/goto/events/class_EventTargetAddList.inc:238 +#: personal/environment/environment.tpl:135 +msgid "Server" +msgstr "Serwer" + +#: admin/systems/services/nfs/servnfs.tpl:69 +msgid "Auto-mount share on Apple systems" +msgstr "Auto-montuj udział na systemach Apple" + +#: admin/systems/services/nfs/servnfs.tpl:109 +msgid "Codepage" +msgstr "Strona kodowa" + +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "Syslog Service" +msgstr "Usługa Syslog" + +#: admin/systems/services/syslog/class_goSyslogServer.inc:68 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +msgid "Logging service" +msgstr "Usługa Logowania" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:31 +#: admin/systems/services/syslog/class_goLogDBServer.inc:59 +#, fuzzy +msgid "Syslog service database" +msgstr "Usługa Syslog" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:69 +#: admin/systems/goto/class_printGeneric.inc:908 +#: addons/goto/events/class_EventTargetAddUsersList.inc:171 +msgid "User" +msgstr "Użytkownik" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:72 +#: admin/systems/services/syslog/class_goLogDBServer.inc:105 +#: admin/systems/services/syslog/goLogDBServer.tpl:20 +msgid "Password" +msgstr "Hasło" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:75 +#: admin/systems/services/syslog/class_goLogDBServer.inc:106 +#: admin/systems/services/syslog/goLogDBServer.tpl:4 +#, fuzzy +msgid "Database" +msgstr "Wklej" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:92 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Logging database" +msgstr "Baza logowania" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:104 +msgid "Admin" +msgstr "Admin" + +#: admin/systems/services/syslog/goLogDBServer.tpl:1 +msgid "Logging database information" +msgstr "Informacje bazy logowania" + +#: admin/systems/services/syslog/goLogDBServer.tpl:12 +msgid "Logging DB user" +msgstr "Użytkownik bazy logowania" + +#: admin/systems/goto/workstation.tpl:1 admin/systems/goto/terminal.tpl:1 +msgid "Properties" +msgstr "Właściwości" + +#: admin/systems/goto/workstation.tpl:8 +msgid "Workstation template" +msgstr "Szablon stacji roboczej" + +#: admin/systems/goto/workstation.tpl:10 +#: admin/systems/goto/class_workstationGeneric.inc:707 +msgid "Workstation name" +msgstr "Nazwa stacji roboczej" + +#: admin/systems/goto/workstation.tpl:27 +#: admin/systems/goto/class_printGeneric.inc:932 +#: admin/systems/goto/class_workstationGeneric.inc:709 +msgid "Location" +msgstr "Lokalizacja" + +#: admin/systems/goto/workstation.tpl:38 admin/systems/goto/terminal.tpl:31 +msgid "Choose subtree to place group in" +msgstr "Wybierz poddrzewo do umieszczenia grupy" + +#: admin/systems/goto/workstation.tpl:87 admin/systems/goto/workstation.tpl:90 +#: admin/systems/goto/terminal.tpl:109 admin/systems/goto/terminal.tpl:112 +msgid "Inherit time server attributes" +msgstr "Dziedzicz atrybuty serwera czasu" + +#: admin/systems/goto/workstation.tpl:160 +#, fuzzy +msgid "Inherit all values from group" +msgstr "Lista grup" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:3 +#: personal/environment/selectPrinterDialog.tpl:5 +#: personal/environment/selectPrinterDialog.tpl:10 +msgid "Select printer to add" +msgstr "Wybierz drukarkę do dodania" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:8 +msgid "Select entries to add" +msgstr "Wybierz elementy do dodania" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:22 +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:18 +#: personal/environment/selectPrinterDialog.tpl:24 +#: personal/environment/hotplugDialog.tpl:24 +msgid "Filters" +msgstr "Filtry" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Select to search within subtrees" +msgstr "Zaznacz aby wyszukiwać wewnątrz poddrzew" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +#, fuzzy +msgid "Search in subtrees" +msgstr "Szukaj wewnątrz tego poddrzewa" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:38 +msgid "Display members of department" +msgstr "Wyświetl członków departamentu" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:41 +#: personal/environment/selectPrinterDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Wybierz departament na którym wyszukiwanie będzie bazować" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:50 +msgid "Display members matching" +msgstr "Wyświetl członków pasujących" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:55 +msgid "Regular expression for matching member names" +msgstr "Wyrażenie regularne dla dopasowania nazw członków" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:49 +msgid "USB" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:50 +msgid "Parallel port" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:53 +#, fuzzy +msgid "Software" +msgstr "Natychmiastowe uaktualnienie" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:54 +#, fuzzy +msgid "Hardware" +msgstr "Przeskanuj sprzęt" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:56 +#, fuzzy +msgid "Even" +msgstr "Środowisko" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:57 +#, fuzzy +msgid "Odd" +msgstr "Dodaj" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:60 +#: admin/systems/goto/class_gotoLpdEnabled.inc:61 +#: admin/systems/goto/class_gotoLpdEnabled.inc:62 +#: admin/systems/goto/class_gotoLpdEnabled.inc:63 +#: admin/systems/goto/class_gotoLpdEnabled.inc:64 +#: admin/systems/goto/class_gotoLpdEnabled.inc:65 +#: admin/systems/goto/class_gotoLpdEnabled.inc:66 +#: admin/systems/goto/class_gotoLpdEnabled.inc:67 +#, fuzzy +msgid "bit/s" +msgstr "bit" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:153 +#: admin/systems/goto/terminalService.tpl:58 +#: admin/systems/goto/workstationService.tpl:66 +#: admin/systems/goto/gotoLpdEnable.tpl:71 +msgid "Port" +msgstr "Port" + +#: admin/systems/goto/ArpNewDevice.tpl:1 +msgid "Integrating unknown devices" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:3 +msgid "" +"The current device has been detected by the ARP monitor used by GOsa. You " +"can integrate this device into your running DHCP/DNS infrastructure by " +"submitting this form. The device entry will disappear from the list of the " +"systems and move to the DNS/DHCP configuration." +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:9 +#, fuzzy +msgid "DNS name" +msgstr "Imię" + +#: admin/systems/goto/class_printGeneric.inc:106 +#: admin/systems/goto/class_printGeneric.inc:968 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: admin/systems/goto/class_printGeneric.inc:106 +#, fuzzy, php-format +msgid "" +"Cannot determine a valid department for this object. Setting base to '%s'!" +msgstr "" +"Nie można wydobyć poprawnej podstawy z obiektu dn, ustawiam podstawę na '%s'." + +#: admin/systems/goto/class_printGeneric.inc:262 +#: admin/systems/goto/class_printGeneric.inc:270 +#: admin/systems/goto/class_printGeneric.inc:275 +#: admin/systems/goto/class_printGeneric.inc:324 +#: admin/systems/goto/class_printGeneric.inc:340 +#: admin/systems/goto/class_printGeneric.inc:343 +msgid "Add printer extension" +msgstr "Dodaj rozszerzenie drukarki" + +#: admin/systems/goto/class_printGeneric.inc:263 +#, fuzzy +msgid "" +"Could not initialize printer tab, parameter parent was missing while " +"construction." +msgstr "" +"Nie można zainicjalizować zakładki drukarek, brak parametru parent podzczas " +"tworzenia." + +#: admin/systems/goto/class_printGeneric.inc:271 +msgid "This is a workstation template, printer tab is disabled." +msgstr "To jest szablon stacji roboczej, zakładka drukarek jest wyłączona." + +#: admin/systems/goto/class_printGeneric.inc:276 +msgid "This is a terminal template, printer tab is disabled." +msgstr "To jest szablon terminala, zakładka drukarek jest wyłączona." + +#: admin/systems/goto/class_printGeneric.inc:317 +#: admin/systems/goto/class_printGeneric.inc:325 +#: admin/systems/goto/class_printGeneric.inc:333 +#: admin/systems/goto/class_printGeneric.inc:336 +#: admin/systems/goto/class_printGeneric.inc:341 +#: admin/systems/goto/class_printGeneric.inc:344 +#, fuzzy +msgid "printer" +msgstr "drukarki" + +#: admin/systems/goto/class_printGeneric.inc:325 +#, fuzzy +msgid "" +"You can't enable it while 'cn' is not present in entry. Possibly you are " +"currently creating a new terminal template." +msgstr "" +"Ten obiekt ma wyłączone rozszerzenia drukarki. Nie można ich włączyć dopóki " +"'cn' nie jest obecne we wpisie. Prawdopodobnie próbujesz tworzyć nowy " +"szablon terminala." + +#: admin/systems/goto/class_printGeneric.inc:332 +#: admin/systems/goto/class_printGeneric.inc:335 +msgid "Remove printer extension" +msgstr "Usuń rozszerzenie drukarki" + +#: admin/systems/goto/class_printGeneric.inc:513 +#, php-format +msgid "Your currently selected PPD file '%s' doesn't exist." +msgstr "Wybrany plik PPD '%s' nie istnieje." + +#: admin/systems/goto/class_printGeneric.inc:518 +#, fuzzy +msgid "Not defined" +msgstr "nie zdefiniowane" + +#: admin/systems/goto/class_printGeneric.inc:521 +#: admin/systems/ppd/class_printerPPDDialog.inc:97 +msgid "Can't get ppd informations." +msgstr "Nie można pobrać informacji ppd." + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_printGeneric.inc:536 +#, fuzzy, php-format +msgid "This printer belongs to %s. You can't rename this printer." +msgstr "" +"Ta drukarka należy do terminala %s. Nie można zmienić nazwy tej drukarki." + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_terminalStartup.inc:180 +#: admin/systems/goto/class_terminalInfo.inc:68 +#: admin/systems/goto/class_terminalGeneric.inc:230 +#, fuzzy +msgid "terminal" +msgstr "Terminal" + +#: admin/systems/goto/class_printGeneric.inc:536 +#: admin/systems/goto/class_workstationGeneric.inc:226 +#: admin/systems/goto/class_workstationStartup.inc:285 +#, fuzzy +msgid "workstation" +msgstr "Stacja robocza" + +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#, fuzzy +msgid "Object is no printer!" +msgstr "Drukarka sieciowa" + +#: admin/systems/goto/class_printGeneric.inc:680 +#: admin/systems/goto/printer.tpl:54 +msgid "Printer URL" +msgstr "URL drukarki" + +#: admin/systems/goto/class_printGeneric.inc:903 +#: admin/systems/goto/class_printGeneric.inc:905 +#: addons/goto/events/class_EventTargetAddUsersList.inc:173 +msgid "Group" +msgstr "Grupa" + +#: admin/systems/goto/class_printGeneric.inc:921 +#, fuzzy +msgid "Print generic" +msgstr "Usługa drukowania" + +#: admin/systems/goto/class_printGeneric.inc:926 +#: admin/systems/goto/terminalService.tpl:245 +#: personal/environment/environment.tpl:338 +#: personal/environment/environment.tpl:374 +msgid "Printer" +msgstr "Drukarka" + +#: admin/systems/goto/class_printGeneric.inc:933 +msgid "LabeledURL" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:934 +msgid "Printer PPD" +msgstr "PPD drukarki" + +#: admin/systems/goto/class_printGeneric.inc:935 +#: admin/systems/goto/printer.tpl:82 +msgid "Permissions" +msgstr "Uprawnienia" + +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#, fuzzy +msgid "printer user" +msgstr "Drukarka" + +#: admin/systems/goto/class_printGeneric.inc:968 +#, php-format +msgid "Illegal member type '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:1008 +#, fuzzy, php-format +msgid "'%s' is already used!" +msgstr "Ta nazwa jest już w użyciu." + +#: admin/systems/goto/class_printGeneric.inc:1019 +#, fuzzy, php-format +msgid "'%s' does not exist!" +msgstr "Manager PPD: Podana ścieżka '%s' nie istnieje." + +#: admin/systems/goto/class_selectUserToPrinterDialog.inc:147 +msgid "Please select a printer or press cancel." +msgstr "Proszę wybrać drukarkę lub nacisnąć Anuluj." + +#: admin/systems/goto/class_terminalStartup.inc:135 +#, fuzzy, php-format +msgid "" +"Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to " +"exist." +msgstr "" +"Polecenie '%s' podane jako zaczep KERNELS dla dodatku '%s' nie istnieje." + +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#, fuzzy +msgid "Mount point" +msgstr "Punkt montowania" + +#: admin/systems/goto/class_terminalStartup.inc:372 +#: admin/systems/goto/class_workstationStartup.inc:750 +#, fuzzy +msgid "Fatal error" +msgstr "Terminal Server" + +#: admin/systems/goto/class_terminalStartup.inc:533 +#: admin/systems/goto/class_workstationStartup.inc:1007 +msgid "Startup" +msgstr "Startup" + +#: admin/systems/goto/class_terminalStartup.inc:534 +#, fuzzy +msgid "Terminal startup" +msgstr "Szablon terminala" + +#: admin/systems/goto/class_terminalStartup.inc:542 +#: admin/systems/goto/class_workstationStartup.inc:1016 +msgid "Ldap server" +msgstr "Serwer Ldap" + +#: admin/systems/goto/class_terminalStartup.inc:544 +#: admin/systems/goto/class_workstationStartup.inc:1020 +#, fuzzy +msgid "Kernel modules" +msgstr "Parametr kernela" + +#: admin/systems/goto/class_terminalStartup.inc:545 +#: admin/systems/goto/class_workstationStartup.inc:1017 +#: admin/systems/goto/terminalStartup.tpl:40 +#: admin/systems/goto/workstationStartup.tpl:9 +msgid "Boot kernel" +msgstr "Uruchamiane jądro" + +#: admin/systems/goto/class_terminalStartup.inc:546 +#: admin/systems/goto/class_workstationStartup.inc:1018 +msgid "Kernel parameter" +msgstr "Parametr kernela" + +#: admin/systems/goto/class_terminalInfo.inc:50 +#: admin/systems/goto/class_terminalInfo.inc:204 +msgid "present" +msgstr "obecne" + +#: admin/systems/goto/class_terminalInfo.inc:77 +#: admin/systems/goto/class_terminalService.inc:121 +#: admin/systems/goto/class_workstationStartup.inc:1295 +#: admin/systems/goto/class_workstationStartup.inc:1297 +#: admin/systems/goto/class_workstationService.inc:78 +#: admin/systems/ppd/class_printerPPDDialog.inc:54 +#: admin/systems/ppd/class_printerPPDDialog.inc:121 +#: personal/environment/class_environment.inc:234 +#, fuzzy +msgid "Configuration error" +msgstr "Plik konfiguracyjny" + +#: admin/systems/goto/class_terminalInfo.inc:83 +#: admin/systems/goto/class_terminalInfo.inc:179 +msgid "unknown status" +msgstr "nieznany status" + +#: admin/systems/goto/class_terminalInfo.inc:92 +msgid "This is a virtual terminal which has no properties to show here." +msgstr "" +"To jest terminal wirtualny i nie posiada właściwości do pokazania tutaj." + +#: admin/systems/goto/class_terminalInfo.inc:106 +msgid "online" +msgstr "online" + +#: admin/systems/goto/class_terminalInfo.inc:168 +msgid "running" +msgstr "działa" + +#: admin/systems/goto/class_terminalInfo.inc:171 +msgid "not running" +msgstr "nie działa" + +#: admin/systems/goto/class_terminalInfo.inc:174 +msgid "not defined" +msgstr "nie zdefiniowane" + +#: admin/systems/goto/class_terminalInfo.inc:196 +msgid "offline" +msgstr "offline" + +#: admin/systems/goto/class_terminalInfo.inc:251 +#, fuzzy +msgid "System info" +msgstr "Informacja o systemie" + +#: admin/systems/goto/class_terminalInfo.inc:252 +#, fuzzy +msgid "System informations" +msgstr "Informacja o systemie" + +#: admin/systems/goto/class_terminalService.inc:128 +#: admin/systems/goto/class_terminalService.inc:129 +#: admin/systems/goto/class_terminalService.inc:130 +#: admin/systems/goto/class_terminalService.inc:131 +#: admin/systems/goto/class_workstationService.inc:88 +#: admin/systems/goto/class_workstationService.inc:89 +#: admin/systems/goto/class_workstationService.inc:90 +#: admin/systems/goto/class_workstationService.inc:91 +msgid "bit" +msgstr "bit" + +#: admin/systems/goto/class_terminalService.inc:177 +msgid "XDMCP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:178 +msgid "LDM" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:179 +msgid "Shell" +msgstr "Shell" + +#: admin/systems/goto/class_terminalService.inc:180 +#, fuzzy +msgid "Telnet" +msgstr "Usuń" + +#: admin/systems/goto/class_terminalService.inc:181 +msgid "Windows RDP" +msgstr "Windows RDP" + +#: admin/systems/goto/class_terminalService.inc:204 +#: admin/systems/goto/class_workstationService.inc:144 +msgid "automatic" +msgstr "automatyczne" + +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_workstationService.inc:194 +msgid "Bit" +msgstr "Bit" + +#: admin/systems/goto/class_terminalService.inc:314 +msgid "This 'dn' has no terminal features." +msgstr "Ten 'dn' nie posiada cech terminala." + +#: admin/systems/goto/class_terminalService.inc:372 +#, fuzzy +msgid "Unsupported" +msgstr "Wsparcie dla USB" + +#: admin/systems/goto/class_terminalService.inc:414 +#: admin/systems/goto/class_workstationService.inc:309 +msgid "Choose the phone located at the current terminal" +msgstr "Wybierz telefon umieszczony przy obecnym terminalu" + +#: admin/systems/goto/class_terminalService.inc:495 +#: admin/systems/goto/class_terminalService.inc:500 +#, fuzzy +msgid "VSync range" +msgstr "VSync" + +#: admin/systems/goto/class_terminalService.inc:508 +#: admin/systems/goto/class_terminalService.inc:513 +#, fuzzy +msgid "HSync range" +msgstr "HSync" + +#: admin/systems/goto/class_terminalService.inc:539 +msgid "" +"Remote desktop settings contains servers that do not support the selected " +"connection method." +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:603 +#: admin/systems/goto/workstationService.tpl:157 +#: admin/systems/goto/class_workstationService.inc:85 +msgid "unknown" +msgstr "nieznane" + +#: admin/systems/goto/class_terminalService.inc:678 +#: admin/systems/goto/class_workstationService.inc:484 +msgid "Service" +msgstr "Usługa" + +#: admin/systems/goto/class_terminalService.inc:688 +#: admin/systems/goto/class_workstationService.inc:493 +msgid "Monitor" +msgstr "Monitor" + +#: admin/systems/goto/class_terminalService.inc:689 +msgid "Method" +msgstr "Metoda" + +#: admin/systems/goto/class_terminalService.inc:690 +#: admin/systems/goto/terminalService.tpl:173 +msgid "Remote desktop" +msgstr "Zdalny pulpit" + +#: admin/systems/goto/class_terminalService.inc:691 +#: admin/systems/goto/class_workstationService.inc:494 +msgid "Gfx driver" +msgstr "Sterownik Gfx" + +#: admin/systems/goto/class_terminalService.inc:692 +#: admin/systems/goto/class_workstationService.inc:495 +msgid "Gfx resolution" +msgstr "Rozdzielczość Gfx" + +#: admin/systems/goto/class_terminalService.inc:693 +#: admin/systems/goto/class_workstationService.inc:496 +msgid "Gfx color depth" +msgstr "Głębia kolorów Gfx" + +#: admin/systems/goto/class_terminalService.inc:694 +#: admin/systems/goto/terminalService.tpl:150 +#: admin/systems/goto/workstationService.tpl:170 +#: admin/systems/goto/class_workstationService.inc:393 +#: admin/systems/goto/class_workstationService.inc:395 +#: admin/systems/goto/class_workstationService.inc:400 +#: admin/systems/goto/class_workstationService.inc:497 +msgid "HSync" +msgstr "HSync" + +#: admin/systems/goto/class_terminalService.inc:695 +#: admin/systems/goto/terminalService.tpl:158 +#: admin/systems/goto/workstationService.tpl:181 +#: admin/systems/goto/class_workstationService.inc:376 +#: admin/systems/goto/class_workstationService.inc:378 +#: admin/systems/goto/class_workstationService.inc:383 +#: admin/systems/goto/class_workstationService.inc:498 +msgid "VSync" +msgstr "VSync" + +#: admin/systems/goto/class_terminalService.inc:696 +msgid "Auto-Sync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:697 +#: admin/systems/goto/class_workstationService.inc:500 +msgid "Scanner enabled" +msgstr "Skaner włączony" + +#: admin/systems/goto/class_terminalService.inc:698 +#: admin/systems/goto/class_terminalService.inc:704 +#, fuzzy +msgid "Printer enabled" +msgstr "nazwa drukarki" + +#: admin/systems/goto/class_terminalService.inc:699 +#: admin/systems/goto/class_workstationService.inc:501 +msgid "Keyboard model" +msgstr "Model klawiatury" + +#: admin/systems/goto/class_terminalService.inc:700 +#: admin/systems/goto/class_workstationService.inc:502 +msgid "Keyboard layout" +msgstr "Układ klawiatury" + +#: admin/systems/goto/class_terminalService.inc:701 +#: admin/systems/goto/class_workstationService.inc:503 +msgid "Keyboard variant" +msgstr "Wariant klawiatury" + +#: admin/systems/goto/class_terminalService.inc:702 +#: admin/systems/goto/class_workstationService.inc:504 +msgid "Mouse type" +msgstr "Typ myszy" + +#: admin/systems/goto/class_terminalService.inc:703 +#: admin/systems/goto/class_workstationService.inc:505 +msgid "Mouse port" +msgstr "Port myszy" + +#: admin/systems/goto/class_terminalService.inc:705 +#: admin/systems/goto/terminalService.tpl:76 +#: admin/systems/goto/workstationService.tpl:86 +#: admin/systems/goto/class_workstationService.inc:506 +msgid "Telephone hardware" +msgstr "Sprzęt telefoniczny" + +#: admin/systems/goto/info.tpl:6 +msgid "System information" +msgstr "Informacja o systemie" + +#: admin/systems/goto/info.tpl:12 +msgid "CPU" +msgstr "CPU" + +#: admin/systems/goto/info.tpl:15 +msgid "Memory" +msgstr "Pamięć" + +#: admin/systems/goto/info.tpl:18 +msgid "Boot MAC" +msgstr "Adres MAC" + +#: admin/systems/goto/info.tpl:21 +msgid "USB support" +msgstr "Wsparcie dla USB" + +#: admin/systems/goto/info.tpl:24 admin/systems/goto/info.tpl:92 +msgid "System status" +msgstr "Status systemu" + +#: admin/systems/goto/info.tpl:28 +msgid "Inventory number" +msgstr "Numer inwentarza" + +#: admin/systems/goto/info.tpl:32 +msgid "Last login" +msgstr "Ostatnie logowanie" + +#: admin/systems/goto/info.tpl:43 +msgid "Network devices" +msgstr "Urządzenia sieciowe" + +#: admin/systems/goto/info.tpl:52 +msgid "IDE devices" +msgstr "Urządzenia IDE" + +#: admin/systems/goto/info.tpl:61 +msgid "SCSI devices" +msgstr "Urządzenia SCSI" + +#: admin/systems/goto/info.tpl:69 +msgid "Floppy device" +msgstr "Stacja dyskietek" + +#: admin/systems/goto/info.tpl:73 +msgid "CDROM device" +msgstr "Stacja CDROM" + +#: admin/systems/goto/info.tpl:78 admin/systems/goto/terminalService.tpl:95 +#: admin/systems/goto/workstationService.tpl:107 +msgid "Graphic device" +msgstr "Karta graficzna" + +#: admin/systems/goto/info.tpl:82 +msgid "Audio device" +msgstr "Karta dźwiękowa" + +#: admin/systems/goto/info.tpl:98 +msgid "Up since" +msgstr "Włączony od" + +#: admin/systems/goto/info.tpl:101 +msgid "CPU load" +msgstr "Zużycie procesora" + +#: admin/systems/goto/info.tpl:104 +msgid "Memory usage" +msgstr "Zużycie pamięci" + +#: admin/systems/goto/info.tpl:107 +msgid "Swap usage" +msgstr "Zużycie SWAP" + +#: admin/systems/goto/info.tpl:121 +msgid "SSH service" +msgstr "Usłoga SSH" + +#: admin/systems/goto/info.tpl:127 +msgid "Scan service" +msgstr "Usługa Skanowania" + +#: admin/systems/goto/info.tpl:130 +msgid "Sound service" +msgstr "Usługa dźwięku" + +#: admin/systems/goto/info.tpl:133 +msgid "GUI" +msgstr "GUI" + +#: admin/systems/goto/class_workstationGeneric.inc:299 +#: admin/systems/goto/class_workstationGeneric.inc:309 +#: addons/goto/events/class_DaemonEvent_update.inc:29 +#: addons/goto/events/class_DaemonEvent_update.inc:30 +#, fuzzy +msgid "Software update" +msgstr "Natychmiastowe uaktualnienie" + +#: admin/systems/goto/class_workstationGeneric.inc:303 +#: admin/systems/goto/class_workstationGeneric.inc:311 +#: addons/goto/events/class_DaemonEvent_localboot.inc:28 +#: addons/goto/events/class_DaemonEvent_localboot.inc:29 +msgid "Force localboot" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:307 +#: admin/systems/goto/class_terminalGeneric.inc:271 +#: addons/goto/events/class_DaemonEvent_wakeup.inc:29 +msgid "Wake up" +msgstr "Zbudź" + +#: admin/systems/goto/class_workstationGeneric.inc:500 +msgid "A valid LDAP server assignement is missing!" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:510 +#, fuzzy +msgid "Software deployment" +msgstr "Typ systemu" + +#: admin/systems/goto/class_workstationGeneric.inc:511 +msgid "This host is currently installing. If you want to save it, press 'OK'." +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:699 +#, fuzzy +msgid "Workstation generic" +msgstr "Nazwa stacji roboczej" + +#: admin/systems/goto/class_workstationGeneric.inc:704 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:203 +#: addons/goto/events/class_EventTargetAddList.inc:249 +msgid "Workstation" +msgstr "Stacja robocza" + +#: admin/systems/goto/class_workstationGeneric.inc:711 +#, fuzzy +msgid "Goto mode" +msgstr "do folferu" + +#: admin/systems/goto/class_workstationGeneric.inc:714 +#: admin/systems/goto/class_terminalGeneric.inc:676 +#, fuzzy +msgid "Root password" +msgstr "Ustaw hasło" + +#: admin/systems/goto/class_workstationGeneric.inc:715 +#, fuzzy +msgid "Create FAI CD" +msgstr "Utwórz" + +#: admin/systems/goto/gencd_frame.tpl:2 +msgid "Your browser does not supprt iframes." +msgstr "" + +#: admin/systems/goto/terminalService.tpl:4 +#: admin/systems/goto/workstationService.tpl:4 +msgid "Keyboard" +msgstr "Klawiatura" + +#: admin/systems/goto/terminalService.tpl:7 +#: admin/systems/goto/workstationService.tpl:7 +#: admin/systems/ppd/printerPPDDialog.tpl:10 +msgid "Model" +msgstr "Model" + +#: admin/systems/goto/terminalService.tpl:10 +#: admin/systems/goto/workstationService.tpl:11 +msgid "Choose keyboard model" +msgstr "Wybierz model klawiatury" + +#: admin/systems/goto/terminalService.tpl:17 +#: admin/systems/goto/workstationService.tpl:19 +msgid "Layout" +msgstr "Układ" + +#: admin/systems/goto/terminalService.tpl:20 +#: admin/systems/goto/workstationService.tpl:23 +msgid "Choose keyboard layout" +msgstr "Wybierz układ klawiatury" + +#: admin/systems/goto/terminalService.tpl:27 +#: admin/systems/goto/workstationService.tpl:31 +msgid "Variant" +msgstr "Wariant" + +#: admin/systems/goto/terminalService.tpl:30 +#: admin/systems/goto/workstationService.tpl:35 +msgid "Choose keyboard variant" +msgstr "Wybierz wariant klawiatury" + +#: admin/systems/goto/terminalService.tpl:45 +#: admin/systems/goto/workstationService.tpl:51 +msgid "Mouse" +msgstr "Mysz" + +#: admin/systems/goto/terminalService.tpl:51 +#: admin/systems/goto/workstationService.tpl:58 +msgid "Choose mouse type" +msgstr "Wybierz typ myszy" + +#: admin/systems/goto/terminalService.tpl:61 +#: admin/systems/goto/workstationService.tpl:70 +msgid "Choose mouse port" +msgstr "Wybierz port myszy" + +#: admin/systems/goto/terminalService.tpl:79 +#: admin/systems/goto/workstationService.tpl:89 +msgid "Telephone" +msgstr "Telefon" + +#: admin/systems/goto/terminalService.tpl:98 +#: admin/systems/goto/workstationService.tpl:110 +#: admin/systems/goto/printer.tpl:66 +msgid "Driver" +msgstr "Sterownik" + +#: admin/systems/goto/terminalService.tpl:101 +#: admin/systems/goto/workstationService.tpl:114 +msgid "Choose graphic driver that is needed by the installed graphic board" +msgstr "Wybierz sterownik wymagany przez zainstalowaną kartę graficzną" + +#: admin/systems/goto/terminalService.tpl:108 +#: admin/systems/goto/workstationService.tpl:122 +#: personal/environment/class_environment.inc:1786 +#: personal/environment/environment.tpl:183 +msgid "Resolution" +msgstr "Rozdzielczość" + +#: admin/systems/goto/terminalService.tpl:111 +#: admin/systems/goto/workstationService.tpl:126 +msgid "Choose screen resolution used in graphic mode" +msgstr "Wybierz rozdzielczość ekranu użytą w trybie graficznym" + +#: admin/systems/goto/terminalService.tpl:118 +#: admin/systems/goto/workstationService.tpl:134 +msgid "Color depth" +msgstr "Głębia kolorów" + +#: admin/systems/goto/terminalService.tpl:121 +#: admin/systems/goto/workstationService.tpl:138 +msgid "Choose colordepth used in graphic mode" +msgstr "Wybierz głębię kolorów użytą w trybie graficznym" + +#: admin/systems/goto/terminalService.tpl:135 +#: admin/systems/goto/workstationService.tpl:153 +msgid "Display device" +msgstr "Urządzenie wyświetlające" + +#: admin/systems/goto/terminalService.tpl:147 +#: admin/systems/goto/workstationService.tpl:167 +msgid "Use DDC for automatic detection" +msgstr "Użyj DCC do automatycznego wykrywania" + +#: admin/systems/goto/terminalService.tpl:154 +#: admin/systems/goto/workstationService.tpl:175 +msgid "Horizontal refresh frequency for installed monitor" +msgstr "Częstotliwość odświeżania poziomego dla zainstalowanego monitora" + +#: admin/systems/goto/terminalService.tpl:162 +#: admin/systems/goto/workstationService.tpl:186 +msgid "Vertical refresh frequency for installed monitor" +msgstr "Częstotliwość odświeżania pionowego dla zainstalowanego monitora" + +#: admin/systems/goto/terminalService.tpl:177 +msgid "Connect method" +msgstr "Metoda połączenia" + +#: admin/systems/goto/terminalService.tpl:180 +msgid "Choose method to connect to terminal server" +msgstr "Wybierz metodę połączenia z serwerem terminali" + +#: admin/systems/goto/terminalService.tpl:184 +#: admin/systems/goto/terminalStartup.tpl:14 +#: admin/systems/goto/workstationStartup.tpl:36 +#: addons/goto/class_gotomasses.inc:400 +#, fuzzy +msgid "Reload" +msgstr "Odczyt" + +#: admin/systems/goto/terminalService.tpl:191 +msgid "Terminal server" +msgstr "Serwer terminali" + +#: admin/systems/goto/terminalService.tpl:202 +msgid "Select specific terminal server to use" +msgstr "Wybierz serwer terminali" + +#: admin/systems/goto/terminalService.tpl:208 +msgid "Add selected server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:212 +#, fuzzy +msgid "Remove selected server" +msgstr "Usuń obrazek" + +#: admin/systems/goto/terminalService.tpl:233 +#: admin/systems/goto/workstationService.tpl:201 +msgid "Scan device" +msgstr "Urządzenie skanujące" + +#: admin/systems/goto/terminalService.tpl:235 +#: admin/systems/goto/workstationService.tpl:204 +msgid "Select to start SANE scan service on terminal" +msgstr "Zaznacz aby uruchomić usługę skanowania SANE na terminalu" + +#: admin/systems/goto/terminalService.tpl:237 +#: admin/systems/goto/workstationService.tpl:207 +msgid "Provide scan services" +msgstr "Dostarcza usługi skanowania" + +#: admin/systems/goto/gotoLpdEnable.tpl:12 +#: admin/systems/goto/gotoLpdEnable.tpl:48 +#, fuzzy +msgid "Enable printer settings" +msgstr "Ustawienia drukarki" + +#: admin/systems/goto/gotoLpdEnable.tpl:87 +#, fuzzy +msgid "Write only" +msgstr "Telefon prywatny" + +#: admin/systems/goto/gotoLpdEnable.tpl:100 +#, fuzzy +msgid "Bit rate" +msgstr "Utwórz" + +#: admin/systems/goto/gotoLpdEnable.tpl:110 +#, fuzzy +msgid "Flow control" +msgstr "Kontrola dostępu" + +#: admin/systems/goto/gotoLpdEnable.tpl:120 +#, fuzzy +msgid "Parity" +msgstr "Priorytet" + +#: admin/systems/goto/gotoLpdEnable.tpl:130 +#, fuzzy +msgid "Bits" +msgstr "Bit" + +#: admin/systems/goto/class_workstationStartup.inc:234 +#, fuzzy, php-format +msgid "FAI mirror '%s' is not available - setting to mirror 'auto'!" +msgstr "" +"Wybrany profil kiosk '%s' nie jest już dostępny, ustawiam aktualny profil na " +"'brak'." + +#: admin/systems/goto/class_workstationStartup.inc:247 +#, fuzzy, php-format +msgid "" +"FAI release '%s' is not available on mirror '%s' - setting to release '%s'!" +msgstr "" +"Wybrany profil kiosk '%s' nie jest już dostępny, ustawiam aktualny profil na " +"'brak'." + +#: admin/systems/goto/class_workstationStartup.inc:266 +msgid "Please select a 'FAI server' or remove the 'FAI classes'." +msgstr "Proszę wybrać 'serwer FAI' lub usunąć 'klasy FAI'." + +#: admin/systems/goto/class_workstationStartup.inc:324 +#, fuzzy +msgid "" +"There is already a profile containing a partition table in your " +"configuration!" +msgstr "" +"Już istnieje profil w twoim wyborze który zawiera konfiguracje tablicy " +"partycji." + +#: admin/systems/goto/class_workstationStartup.inc:629 +msgid "Not available in current setup" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1008 +#, fuzzy +msgid "System startup" +msgstr "Status systemu" + +#: admin/systems/goto/class_workstationStartup.inc:1023 +msgid "FAI classes" +msgstr "Klasy FAI" + +#: admin/systems/goto/class_workstationStartup.inc:1024 +msgid "Debian mirror" +msgstr "Mirror Debiana" + +#: admin/systems/goto/class_workstationStartup.inc:1025 +msgid "Debian release" +msgstr "Wydanie debian" + +#: admin/systems/goto/class_workstationStartup.inc:1027 +msgid "FAI status flag" +msgstr "flaga statusu FAI" + +#: admin/systems/goto/class_workstationStartup.inc:1297 +msgid "'repositoryBranchHook' returned no result!" +msgstr "" + +#: admin/systems/goto/gencd.tpl:2 +msgid "CD-Install-Image generation" +msgstr "" + +#: admin/systems/goto/gencd.tpl:5 +msgid "" +"This option enables you to generate FAI install CD images for the selected " +"workstation. The procedure may take about 10 minutes to complete, so please " +"be patient after pressing the 'Create ISO-Image' button." +msgstr "" + +#: admin/systems/goto/gencd.tpl:9 +msgid "Create ISO-Image" +msgstr "" + +#: admin/systems/goto/class_workstationService.inc:485 +msgid "Workstation service" +msgstr "Usługa stacji roboczej" + +#: admin/systems/goto/class_workstationService.inc:499 +#, fuzzy +msgid "Use DDC" +msgstr "Identyfikator użytkownika" + +#: admin/systems/goto/terminalStartup.tpl:1 +#: admin/systems/goto/workstationStartup.tpl:4 +msgid "Boot parameters" +msgstr "Parametry uruchamiania" + +#: admin/systems/goto/terminalStartup.tpl:7 +#: admin/systems/goto/workstationStartup.tpl:29 +msgid "LDAP server" +msgstr "Serwer LDAP" + +#: admin/systems/goto/terminalStartup.tpl:12 +#: admin/systems/goto/workstationStartup.tpl:34 +#, fuzzy +msgid "inherit from group" +msgstr "Lista grup" + +#: admin/systems/goto/terminalStartup.tpl:51 +#: admin/systems/goto/workstationStartup.tpl:20 +msgid "Custom options" +msgstr "Dodatkowe opcje" + +#: admin/systems/goto/terminalStartup.tpl:55 +#: admin/systems/goto/workstationStartup.tpl:24 +msgid "" +"Enter any parameters that should be passed to the kernel as append line " +"during bootup" +msgstr "" +"Podaj wszystkie parametry które powinny zostać przekazane do jądra podczas " +"uruchamiania" + +#: admin/systems/goto/terminalStartup.tpl:70 +#: admin/systems/goto/workstationStartup.tpl:188 +msgid "Kernel modules (format: name parameters)" +msgstr "Modułu jądra (format: nazwa parametry)" + +#: admin/systems/goto/terminalStartup.tpl:73 +#: admin/systems/goto/workstationStartup.tpl:191 +msgid "Add additional modules to load on startup" +msgstr "Dodaj inne moduły do załadowania na starcie" + +#: admin/systems/goto/terminalStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:227 +msgid "Mountpoint" +msgstr "Punkt montowania" + +#: admin/systems/goto/SelectDeviceType.tpl:3 +msgid "" +"This system has no system type configured. Please choose a system type for " +"this object and an optional inheritance group. Press the 'continue' button " +"to proceed." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:10 +msgid "" +"Please select a system type and an optional bundle of predefined settings to " +"be inherited." +msgstr "" +"Proszę wybrać typ systemu i opcjonalny zestaw predefiniowanych ustawień do " +"dziedziczenia." + +#: admin/systems/goto/SelectDeviceType.tpl:12 +#, fuzzy +msgid "" +"Please select a system type and a bundle of predefined settings to be " +"inherited." +msgstr "" +"Proszę wybrać typ systemu i opcjonalny zestaw predefiniowanych ustawień do " +"dziedziczenia." + +#: admin/systems/goto/SelectDeviceType.tpl:23 +#: admin/systems/goto/SelectDeviceType.tpl:24 +msgid "System type" +msgstr "Typ systemu" + +#: admin/systems/goto/SelectDeviceType.tpl:36 +msgid "Choose an object group as template" +msgstr "Wybierz grupę obiektową jako szablon" + +#: admin/systems/goto/SelectDeviceType.tpl:37 +#: addons/goto/class_target_list.inc:205 addons/goto/goto_import_file.tpl:40 +#: addons/goto/events/class_EventTargetAddList.inc:259 +msgid "Object group" +msgstr "Grupa obiektu" + +#: admin/systems/goto/SelectDeviceType.tpl:39 +#: addons/goto/class_gotoLogView.inc:87 +msgid "none" +msgstr "żaden" + +#: admin/systems/goto/SelectDeviceType.tpl:51 +msgid "Continue" +msgstr "Kontynuuj" + +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: admin/systems/goto/class_terminalGeneric.inc:656 +#: admin/systems/goto/class_terminalGeneric.inc:662 +msgid "Terminal" +msgstr "Terminal" + +#: admin/systems/goto/class_SelectDeviceType.inc:41 +#: admin/systems/goto/chooser.tpl:10 +msgid "Windows workstation" +msgstr "Stacja robocza Windows" + +#: admin/systems/goto/workstationStartup.tpl:64 +msgid "" +"FAI Object assignment disabled. You can't use this feature until FAI is " +"activated." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:66 +msgid "GOsa support daemon not configured" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:67 +msgid "FAI settings cannot be modified" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:70 +msgid "Check if the GOsa support daemon (gosa-si) is running." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:71 +#, fuzzy +msgid "retry" +msgstr "Edycja pozycji" + +#: admin/systems/goto/workstationStartup.tpl:79 +#: admin/systems/goto/workstationStartup.tpl:119 +msgid "FAI server" +msgstr "Serwer FAI" + +#: admin/systems/goto/workstationStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:158 +msgid "Assigned FAI classes" +msgstr "Przydzielone klasy FAI" + +#: admin/systems/goto/workstationStartup.tpl:142 +msgid "set" +msgstr "ustaw" + +#: admin/systems/goto/class_terminalGeneric.inc:657 +#, fuzzy +msgid "Terminal generic" +msgstr "Usługa Terminali" + +#: admin/systems/goto/class_terminalGeneric.inc:670 +msgid "Syslog server enabled" +msgstr "Serwer Syslog włączony" + +#: admin/systems/goto/class_terminalGeneric.inc:675 +msgid "Ntp server settings" +msgstr "Ustawienia serwera ntp" + +#: admin/systems/goto/printer.tpl:5 +msgid "General" +msgstr "Ogólne" + +#: admin/systems/goto/printer.tpl:8 +msgid "Printer name" +msgstr "nazwa drukarki" + +#: admin/systems/goto/printer.tpl:30 +msgid "Choose subtree to place user in" +msgstr "Wybierz poddrzewo do umieszczenia konta." + +#: admin/systems/goto/printer.tpl:43 +msgid "Details" +msgstr "Szczegóły" + +#: admin/systems/goto/printer.tpl:46 +msgid "Printer location" +msgstr "Lokalizacja drukarki" + +#: admin/systems/goto/printer.tpl:89 +msgid "Users which are allowed to use this printer" +msgstr "Użytkownicy którzy mogą używać tej drukarki" + +#: admin/systems/goto/printer.tpl:91 +msgid "Users" +msgstr "Użytkownicy" + +#: admin/systems/goto/printer.tpl:96 admin/systems/goto/printer.tpl:120 +msgid "Add user" +msgstr "Dodaj użytkownika" + +#: admin/systems/goto/printer.tpl:99 admin/systems/goto/printer.tpl:123 +msgid "Add group" +msgstr "Dodaj grupę" + +#: admin/systems/goto/printer.tpl:113 +msgid "Users which are allowed to administrate this printer" +msgstr "Użytkownicy, którzy mogą administrować tą drukarką" + +#: admin/systems/goto/printer.tpl:115 +msgid "Admins" +msgstr "Administratorzy" + +#: admin/systems/goto/chooser.tpl:1 +msgid "Choose the kind of system component you want to create" +msgstr "Wybierz rodzaj komponentu systemu do utworzenia" + +#: admin/systems/goto/chooser.tpl:4 +msgid "" +"Linux terminals and workstations are autocreated on bootup. For this reason " +"you're only be able to create templates for a specific tree. Servers are " +"normally automatically added too, but in some special cases you may need to " +"create a faked server entry to provide GOsa with some informations. Other " +"network components may be used for Nagios setups to create component " +"dependencies." +msgstr "" +"Linuksowe terminale i stacje robocze są automatycznie tworzone podczas " +"uruchamiania. Z tego powodu można jedynie utworzyć szablon dla konkretnego " +"drzewa. Serwery przeważnie są automatycznie dodawane, lecz w niektórych " +"przypadkach trzeba utworzyć sztuczny wpis serwera aby zapewnić GOsa pewne " +"informacje. Inne elementy sieciowe mogą zostać użyte w ustawieniach Nagios " +"aby utworzyć zależności." + +#: admin/systems/goto/chooser.tpl:7 +msgid "Linux thin client template" +msgstr "Szablon cienkiego klienta Linux" + +#: admin/systems/goto/chooser.tpl:8 +msgid "Linux workstation template" +msgstr "Sszablon stacji roboczej Linux" + +#: admin/systems/goto/chooser.tpl:9 +msgid "Linux Server" +msgstr "Serwer Linux" + +#: admin/systems/goto/chooser.tpl:11 +msgid "Network printer" +msgstr "Drukarka sieciowa" + +#: admin/systems/goto/chooser.tpl:12 +msgid "Phone" +msgstr "Telefon" + +#: admin/systems/goto/chooser.tpl:13 +msgid "Other network component" +msgstr "Inny element sieciowy" + +#: admin/systems/goto/terminal.tpl:8 +msgid "Terminal template" +msgstr "Szablon terminala" + +#: admin/systems/goto/terminal.tpl:10 +msgid "Terminal name" +msgstr "Nazwa terminala" + +#: admin/systems/goto/terminal.tpl:178 +#, fuzzy +msgid "Inherit all" +msgstr "Inicjały" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:6 +msgid "Select objects to add" +msgstr "Wybierz obiekty do dodania" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:28 +msgid "Display objects matching" +msgstr "Wyświetl obiekty pasujące" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:32 +msgid "Regular expression for matching object names" +msgstr "Wyrażenie regularne dla dopasowania nazw obiektów" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:44 +msgid "Close" +msgstr "Zamknij" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#: admin/systems/ppd/class_ppdManager.inc:148 +#: admin/systems/ppd/class_ppdManager.inc:150 +#, fuzzy +msgid "PPD manager error" +msgstr "Menedżer LDAP" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#, fuzzy, php-format +msgid "The specified path '%s' does not exist." +msgstr "Manager PPD: Podana ścieżka '%s' nie istnieje." + +#: admin/systems/ppd/class_ppdManager.inc:148 +#, fuzzy, php-format +msgid "Specified PPD file '%s' cannot be opened for reading." +msgstr "Podany plik ppd '%s' nie może zostać otwarty do czytania." + +#: admin/systems/ppd/class_ppdManager.inc:150 +#, fuzzy, php-format +msgid "The temporary file '%s' cannot be opened for writing." +msgstr "Wymagany plik tymczasowy '%s' nie może zostać otwarty do zapisu." + +#: admin/systems/ppd/class_ppdManager.inc:176 +#: admin/systems/ppd/class_ppdManager.inc:313 +#, php-format +msgid "" +"Parsing PPD file %s failed - line too long. Trailing characters have been " +"ignored" +msgstr "" +"Parsowanie pliku PPD %s nieudane - linia za długa . Końcowe znaki zostały " +"zignorowane" + +#: admin/systems/ppd/class_ppdManager.inc:184 +msgid "Nested groups are not supported!" +msgstr "Zagnieżdżone grupy nie są wspierane!" + +#: admin/systems/ppd/class_ppdManager.inc:188 +msgid "Group name not unique!" +msgstr "Nazwa grupy nie jest unikalna" + +#: admin/systems/ppd/class_ppdManager.inc:194 +#: admin/systems/ppd/class_ppdManager.inc:224 +msgid "Symbol values are not supported yet!" +msgstr "Wartości symboliczne nie są jeszcze wspierane!" + +#: admin/systems/ppd/class_ppdManager.inc:218 +msgid "Nested options are not supported!" +msgstr "Opcje zagnieżdżone nie są wspierane!" + +#: admin/systems/ppd/class_ppdManager.inc:243 +msgid "PickMany is not supported yet!" +msgstr "PickMany nie jest jeszcze obsługiwany" + +#: admin/systems/ppd/class_ppdManager.inc:334 +#, php-format +msgid "Parsing PPD file %s failed - no information found." +msgstr "Parsowanie pliku PPD %s nieudane - nie znaleziono informacji." + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:223 +#: admin/systems/ppd/class_printerPPDDialog.inc:240 +#: admin/systems/ppd/class_printerPPDDialog.inc:248 +#: admin/systems/ppd/class_printerPPDDialog.inc:272 +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#: admin/systems/ppd/class_printerPPDDialog.inc:313 +#: admin/systems/ppd/class_printerPPDDialog.inc:327 +#: admin/systems/ppd/class_printerPPDDialog.inc:337 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#: admin/systems/ppd/class_printerPPDDialog.inc:551 +#: admin/systems/ppd/class_printerPPDDialog.inc:554 +#: admin/systems/ppd/class_printerPPDDialog.inc:557 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:75 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:100 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, fuzzy +msgid "PPD error" +msgstr "Serwer LDAP" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#, fuzzy, php-format +msgid "Cannot open PPD '%s'!" +msgstr "Nie można otworzyć pliku '%s'." + +#: admin/systems/ppd/class_printerPPDDialog.inc:122 +#, php-format +msgid "Cannot open PPD path '%s' for reading and writing!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: addons/goto/class_goto_import_file.inc:29 +#, fuzzy +msgid "file is empty" +msgstr "Usuń ten obiekt" + +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#, fuzzy, php-format +msgid "Cannot parse PPD '%s'!" +msgstr "Nie można otworzyć pliku '%s'." + +#: admin/systems/ppd/class_printerPPDDialog.inc:316 +#, fuzzy +msgid "Overwrite existing PPD" +msgstr "Zastąp istniejący wpis" + +#: admin/systems/ppd/class_printerPPDDialog.inc:317 +#, fuzzy +msgid "" +"There is already a ppd file for this kind of printer. Do you want to " +"overwrite it?" +msgstr "Istnieje już plik ppd dla tego rodzaju drukarki." + +#: admin/systems/ppd/class_printerPPDDialog.inc:465 +msgid "Section" +msgstr "Sekcja" + +#: admin/systems/ppd/class_printerPPDDialog.inc:525 +#: admin/systems/ppd/class_printerPPDDialog.inc:528 +msgid "True" +msgstr "Tak" + +#: admin/systems/ppd/class_printerPPDDialog.inc:526 +#: admin/systems/ppd/class_printerPPDDialog.inc:529 +msgid "False" +msgstr "Nie" + +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#, fuzzy, php-format +msgid "PPD type '%s' is not supported!" +msgstr "PickMany nie jest jeszcze obsługiwany" + +#: admin/systems/ppd/class_printerPPDDialog.inc:571 +msgid "" +"Please select a valid ppd file or use 'Cancel' to go back to printer " +"configuration." +msgstr "" + +#: admin/systems/ppd/remove_ppd.tpl:9 +msgid "The ppd file will be removed from the server and can not be restored." +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:1 +msgid "Printer driver" +msgstr "Sterownik drulkarki" + +#: admin/systems/ppd/printerPPDDialog.tpl:12 +msgid "Select" +msgstr "Wybierz" + +#: admin/systems/ppd/printerPPDDialog.tpl:16 +msgid "New driver" +msgstr "Nowy sterownik" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, php-format +msgid "Cannot locate vendor '%s' in available PPDs!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:129 +msgid "Printer ppd selection." +msgstr "Wybór ppd drukarki." + +#: addons/goto/class_target_list.inc:58 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: addons/goto/class_target_list.inc:59 addons/goto/class_target_list.inc:60 +#, fuzzy +msgid "Available targets" +msgstr "Dostępni członkowie" + +#: addons/goto/class_target_list.inc:69 +msgid "Object name" +msgstr "Nazwa obiektu" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Select to see object groups" +msgstr "Proszę wybrać grupę obiektów" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Show object groups" +msgstr "Grupy obiektów" + +#: addons/goto/class_target_list.inc:73 +msgid "Select to see servers" +msgstr "Proszę aby zobaczyć serwery" + +#: addons/goto/class_target_list.inc:73 +msgid "Show servers" +msgstr "Pokaż serwery" + +#: addons/goto/class_target_list.inc:74 +msgid "Select to see workstations" +msgstr "Wybierz aby zobaczyc stacje robocze" + +#: addons/goto/class_target_list.inc:74 +msgid "Show workstations" +msgstr "Pokaż stacje robocze" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Select to see incoming objects" +msgstr "Zaznacz aby wyszukiwać wewnątrz poddrzew" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Show new objects" +msgstr "Przenieś obiekty" + +#: addons/goto/class_target_list.inc:80 +msgid "Select to search for a specific IP range only" +msgstr "" + +#: addons/goto/class_target_list.inc:80 +msgid "Match IP range" +msgstr "" + +#: addons/goto/class_target_list.inc:83 +msgid "Regular expression for matching group names" +msgstr "Wyrażenie regularne dla dopasowania nazw grup" + +#: addons/goto/class_target_list.inc:84 +msgid "IP range start" +msgstr "" + +#: addons/goto/class_target_list.inc:85 +msgid "IP range end" +msgstr "" + +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#, fuzzy +msgid "IP range" +msgstr "VSync" + +#: addons/goto/goto_import_file.tpl:1 +#, fuzzy +msgid "Import jobs" +msgstr "Import" + +#: addons/goto/goto_import_file.tpl:3 +msgid "" +"You can import a list of jobs into the GOsa job queue. This should be a " +"semicolon seperated list of items in the following format:" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "timestamp" +msgstr "Czas" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "MAC-address" +msgstr "Adres" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "job type" +msgstr "Typ myszy" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "object group" +msgstr "Grupa obiektu" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "import base" +msgstr "Import" + +#: addons/goto/goto_import_file.tpl:5 +msgid "full hostname" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "IP-address" +msgstr "Adres" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "DHCP group" +msgstr "Dodaj grupę" + +#: addons/goto/goto_import_file.tpl:9 +msgid "Example" +msgstr "" + +#: addons/goto/goto_import_file.tpl:21 +#, fuzzy +msgid "Select list to import" +msgstr "Wybierz drukarkę do dodania" + +#: addons/goto/goto_import_file.tpl:37 +#: addons/goto/events/DaemonEvent_update.tpl:51 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:51 +#: addons/goto/events/DaemonEvent_halt.tpl:51 +#: addons/goto/events/DaemonEvent_wakeup.tpl:51 +#: addons/goto/events/DaemonEvent_reboot.tpl:51 +#: addons/goto/events/DaemonEvent_notify.tpl:85 +#: addons/goto/events/DaemonEvent_rescan.tpl:51 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:51 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:51 +#: addons/goto/events/DaemonEvent_faireboot.tpl:51 +#: addons/goto/events/DaemonEvent_localboot.tpl:51 +#: addons/goto/events/DaemonEvent_memcheck.tpl:51 +#: addons/goto/events/DaemonEvent_activate.tpl:51 +#: addons/goto/events/DaemonEvent_lock.tpl:51 +#: addons/goto/events/DaemonEvent_reinstall.tpl:55 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:51 +msgid "Timestamp" +msgstr "Czas" + +#: addons/goto/goto_import_file.tpl:38 +#: addons/goto/class_goto_import_file.inc:168 +#, fuzzy +msgid "MAC" +msgstr "ACL" + +#: addons/goto/goto_import_file.tpl:39 +#: addons/goto/class_goto_import_file.inc:171 +#, fuzzy +msgid "Event" +msgstr "Środowisko" + +#: addons/goto/goto_import_file.tpl:42 +msgid "FQDN" +msgstr "" + +#: addons/goto/goto_import_file.tpl:43 +msgid "IP" +msgstr "" + +#: addons/goto/goto_import_file.tpl:44 +msgid "DHCP" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:113 +msgid "File" +msgstr "Plik" + +#: addons/goto/class_gotoLogView.inc:115 +#, fuzzy +msgid "Date" +msgstr "Wklej" + +#: addons/goto/class_gotoLogView.inc:202 +#, fuzzy +msgid "Log view" +msgstr "Login" + +#: addons/goto/class_gotoLogView.inc:203 +#, fuzzy +msgid "GOto log view" +msgstr "do folferu" + +#: addons/goto/class_gotomasses.inc:26 +#, fuzzy +msgid "Deployment status" +msgstr "Status systemu" + +#: addons/goto/class_gotomasses.inc:27 addons/goto/main.inc:66 +#, fuzzy +msgid "System deployment status" +msgstr "Typ systemu" + +#: addons/goto/class_gotomasses.inc:270 +#, php-format +msgid "The following jobs couldn't be deleted, they have to be aborted: %s" +msgstr "" + +#: addons/goto/class_gotomasses.inc:360 +#, fuzzy +msgid "This menu allows you to remove and change the properties of GOsa tasks." +msgstr "" +"To menu umożliwia tworzenie, usuwanie oraz edycję ustawień repozytorium." + +#: addons/goto/class_gotomasses.inc:361 +#, fuzzy +msgid "List of queued jobs" +msgstr "Lista urządzeń" + +#: addons/goto/class_gotomasses.inc:380 +#, fuzzy +msgid "Resume" +msgstr "Przeinstaluj" + +#: addons/goto/class_gotomasses.inc:381 +#, fuzzy +msgid "Pause" +msgstr "Wklej" + +#: addons/goto/class_gotomasses.inc:382 +#, fuzzy +msgid "Abort" +msgstr "Port" + +#: addons/goto/class_gotomasses.inc:408 +#: addons/goto/events/DaemonEvent_update.tpl:47 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:47 +#: addons/goto/events/DaemonEvent_halt.tpl:47 +#: addons/goto/events/DaemonEvent_wakeup.tpl:47 +#: addons/goto/events/DaemonEvent_reboot.tpl:47 +#: addons/goto/events/DaemonEvent_notify.tpl:81 +#: addons/goto/events/DaemonEvent_rescan.tpl:47 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:47 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:47 +#: addons/goto/events/DaemonEvent_faireboot.tpl:47 +#: addons/goto/events/class_DaemonEvent_notify.inc:77 +#: addons/goto/events/class_DaemonEvent_notify.inc:78 +#: addons/goto/events/class_DaemonEvent_notify.inc:103 +#: addons/goto/events/DaemonEvent_localboot.tpl:47 +#: addons/goto/events/DaemonEvent_memcheck.tpl:47 +#: addons/goto/events/DaemonEvent_activate.tpl:47 +#: addons/goto/events/DaemonEvent_lock.tpl:47 +#: addons/goto/events/DaemonEvent_reinstall.tpl:51 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:47 +#, fuzzy +msgid "Target" +msgstr "Kodowanie" + +#: addons/goto/class_gotomasses.inc:409 +msgid "Task" +msgstr "Zadanie" + +#: addons/goto/class_gotomasses.inc:411 +#: addons/goto/events/DaemonEvent_update.tpl:9 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:9 +#: addons/goto/events/DaemonEvent_halt.tpl:9 +#: addons/goto/events/DaemonEvent_wakeup.tpl:9 +#: addons/goto/events/DaemonEvent_reboot.tpl:9 +#: addons/goto/events/DaemonEvent_notify.tpl:28 +#: addons/goto/events/DaemonEvent_rescan.tpl:9 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:9 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:9 +#: addons/goto/events/DaemonEvent_faireboot.tpl:9 +#: addons/goto/events/DaemonEvent_localboot.tpl:9 +#: addons/goto/events/DaemonEvent_memcheck.tpl:9 +#: addons/goto/events/DaemonEvent_lock.tpl:9 +#: addons/goto/events/DaemonEvent_reinstall.tpl:9 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:9 +#, fuzzy +msgid "Schedule" +msgstr "PHP schedule it" + +#: addons/goto/class_gotomasses.inc:413 +#: addons/goto/events/DaemonEvent_update.tpl:39 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:39 +#: addons/goto/events/DaemonEvent_halt.tpl:39 +#: addons/goto/events/DaemonEvent_wakeup.tpl:39 +#: addons/goto/events/DaemonEvent_reboot.tpl:39 +#: addons/goto/events/DaemonEvent_notify.tpl:73 +#: addons/goto/events/DaemonEvent_rescan.tpl:39 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:39 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:39 +#: addons/goto/events/DaemonEvent_faireboot.tpl:39 +#: addons/goto/events/DaemonEvent_localboot.tpl:39 +#: addons/goto/events/DaemonEvent_memcheck.tpl:39 +#: addons/goto/events/DaemonEvent_activate.tpl:39 +#: addons/goto/events/DaemonEvent_lock.tpl:39 +#: addons/goto/events/DaemonEvent_reinstall.tpl:43 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:39 +msgid "Status" +msgstr "Status" + +#: addons/goto/class_gotomasses.inc:441 +#, fuzzy +msgid "Pause job" +msgstr "Wklej" + +#: addons/goto/class_gotomasses.inc:448 +#, fuzzy +msgid "Resume job" +msgstr "Przeinstaluj" + +#: addons/goto/class_gotomasses.inc:455 +#, fuzzy +msgid "Execute now" +msgstr "Uruchom" + +#: addons/goto/class_gotomasses.inc:462 +#, fuzzy +msgid "View logs" +msgstr "Dostępne aplikacje" + +#: addons/goto/class_gotomasses.inc:477 +#, fuzzy +msgid "Abort job" +msgstr "Inicjały" + +#: addons/goto/class_gotomasses.inc:521 +#, fuzzy +msgid "Waiting" +msgstr "Ostrzeżenie" + +#: addons/goto/class_gotomasses.inc:527 +#, fuzzy +msgid "Processed" +msgstr "Właściwości" + +#: addons/goto/class_gotomasses.inc:542 +#, fuzzy +msgid "Detection" +msgstr "Sekcja" + +#: addons/goto/class_gotomasses.inc:550 +#, fuzzy +msgid "in progress" +msgstr "Właściwości" + +#: addons/goto/class_gotomasses.inc:563 +msgid "immediately" +msgstr "" + +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:735 +#: addons/goto/class_gotomasses.inc:775 +#, fuzzy, php-format +msgid "Cannot update queue entry: %s" +msgstr "Nieznany wpis '%s'!" + +#: addons/goto/class_gotomasses.inc:691 +#, php-format +msgid "Cannot update queue entries." +msgstr "" + +#: addons/goto/class_gotomasses.inc:740 +#, php-format +msgid "Required class '%s' cannot be found: job not aborted!" +msgstr "" + +#: addons/goto/class_gotomasses.inc:816 +#, fuzzy, php-format +msgid "Cannot load queue entries: %s" +msgstr "Nieznany wpis '%s'!" + +#: addons/goto/class_gotomasses.inc:910 addons/goto/class_gotomasses.inc:916 +#, fuzzy +msgid "System deployment" +msgstr "Zarządzanie systemem" + +#: addons/goto/class_gotomasses.inc:911 +msgid "Provide a mechanism to automatically activate systems" +msgstr "" + +#: addons/goto/log_view.tpl:7 +#, fuzzy +msgid "Available logs" +msgstr "Dostępne aplikacje" + +#: addons/goto/log_view.tpl:12 +#, fuzzy +msgid "Selected log" +msgstr "Wybierz" + +#: addons/goto/log_view.tpl:17 +#, fuzzy +msgid "No logs for this host available!" +msgstr "Plik jest dostępny" + +#: addons/goto/events/class_DaemonEvent_lock.inc:29 +#: addons/goto/events/class_DaemonEvent_lock.inc:30 +#, fuzzy +msgid "Lock" +msgstr "Zablokowane" + +#: addons/goto/events/DaemonEvent_update.tpl:18 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:18 +#: addons/goto/events/DaemonEvent_halt.tpl:18 +#: addons/goto/events/DaemonEvent_wakeup.tpl:18 +#: addons/goto/events/DaemonEvent_reboot.tpl:18 +#: addons/goto/events/DaemonEvent_rescan.tpl:18 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:18 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:18 +#: addons/goto/events/DaemonEvent_faireboot.tpl:18 +#: addons/goto/events/DaemonEvent_localboot.tpl:18 +#: addons/goto/events/DaemonEvent_memcheck.tpl:18 +#: addons/goto/events/DaemonEvent_activate.tpl:18 +#: addons/goto/events/DaemonEvent_lock.tpl:18 +#: addons/goto/events/DaemonEvent_reinstall.tpl:18 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:18 +#, fuzzy +msgid "System list" +msgstr "Analiza systemu" + +#: addons/goto/events/DaemonEvent_update.tpl:35 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:35 +#: addons/goto/events/DaemonEvent_halt.tpl:35 +#: addons/goto/events/DaemonEvent_wakeup.tpl:35 +#: addons/goto/events/DaemonEvent_reboot.tpl:35 +#: addons/goto/events/DaemonEvent_notify.tpl:69 +#: addons/goto/events/DaemonEvent_rescan.tpl:35 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:35 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:35 +#: addons/goto/events/DaemonEvent_faireboot.tpl:35 +#: addons/goto/events/DaemonEvent_localboot.tpl:35 +#: addons/goto/events/DaemonEvent_memcheck.tpl:35 +#: addons/goto/events/DaemonEvent_activate.tpl:35 +#: addons/goto/events/DaemonEvent_lock.tpl:35 +#: addons/goto/events/DaemonEvent_reinstall.tpl:35 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:35 +#, fuzzy +msgid "ID" +msgstr "GID" + +#: addons/goto/events/DaemonEvent_update.tpl:43 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:43 +#: addons/goto/events/DaemonEvent_halt.tpl:43 +#: addons/goto/events/DaemonEvent_wakeup.tpl:43 +#: addons/goto/events/DaemonEvent_reboot.tpl:43 +#: addons/goto/events/DaemonEvent_notify.tpl:77 +#: addons/goto/events/DaemonEvent_rescan.tpl:43 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:43 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:43 +#: addons/goto/events/DaemonEvent_faireboot.tpl:43 +#: addons/goto/events/DaemonEvent_localboot.tpl:43 +#: addons/goto/events/DaemonEvent_memcheck.tpl:43 +#: addons/goto/events/DaemonEvent_activate.tpl:43 +#: addons/goto/events/DaemonEvent_lock.tpl:43 +#: addons/goto/events/DaemonEvent_reinstall.tpl:47 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:43 +#, fuzzy +msgid "Result" +msgstr "Rozdzielczość" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:37 +#, fuzzy +msgid "GOto reload" +msgstr "do folferu" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:38 +#, fuzzy +msgid "Reload GOto settings" +msgstr "Ustawienia Posix" + +#: addons/goto/events/class_DaemonEvent_activate.inc:29 +#: addons/goto/events/class_DaemonEvent_activate.inc:30 +#, fuzzy +msgid "Unlock" +msgstr "Zablokowane" + +#: addons/goto/events/class_DaemonEvent_faireboot.inc:28 +#: addons/goto/events/class_DaemonEvent_faireboot.inc:29 +#, fuzzy +msgid "Abort installation" +msgstr "Stacja robocza" + +#: addons/goto/events/target_list.tpl:5 +msgid "Apply" +msgstr "Zastosuj" + +#: addons/goto/events/target_list.tpl:6 +msgid "Cancel" +msgstr "Anuluj" + +#: addons/goto/events/DaemonEvent_notify.tpl:7 +#, fuzzy +msgid "Message settings" +msgstr "Ustawienia serwera ntp" + +#: addons/goto/events/DaemonEvent_notify.tpl:10 +#, fuzzy +msgid "Sender" +msgstr "Serwer" + +#: addons/goto/events/DaemonEvent_notify.tpl:14 +#: addons/goto/events/class_DaemonEvent_notify.inc:94 +#, fuzzy +msgid "Subject" +msgstr "Wybierz" + +#: addons/goto/events/DaemonEvent_notify.tpl:18 +#: addons/goto/events/class_DaemonEvent_notify.inc:97 +msgid "Message" +msgstr "Wiadomość" + +#: addons/goto/events/DaemonEvent_notify.tpl:37 +#, fuzzy +msgid "Target users" +msgstr "Udziały" + +#: addons/goto/events/DaemonEvent_notify.tpl:44 +#, fuzzy +msgid "Target groups" +msgstr "Udziały" + +#: addons/goto/events/class_DaemonEvent.inc:119 +#, fuzzy +msgid "This job has no template!" +msgstr "Ten 'dn' nie posiada cech terminala." + +#: addons/goto/events/class_DaemonEvent.inc:135 +#, fuzzy, php-format +msgid "Create '%s' job" +msgstr "Utwórz obiekty" + +#: addons/goto/events/class_DaemonEvent.inc:234 +msgid "Add" +msgstr "Dodaj" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:31 +#, fuzzy +msgid "Reload fai release db" +msgstr "Logowanie użytkownika nieudane, odpowiedź serwera LDAP '%s'." + +#: addons/goto/events/class_DaemonEvent_wakeup.inc:30 +#, fuzzy +msgid "Wake system" +msgstr "System" + +#: addons/goto/events/class_DaemonEvent_activate_new.inc:40 +#: addons/goto/events/class_DaemonEvent_activate_new.inc:41 +#, fuzzy +msgid "Activate new" +msgstr "Aktywne" + +#: addons/goto/events/class_EventTargetAddList.inc:51 +#: addons/goto/events/class_EventTargetAddUsersList.inc:45 +#, fuzzy +msgid "Targets" +msgstr "Udziały" + +#: addons/goto/events/class_EventTargetAddList.inc:55 +msgid "" +"This dialog shows all available targets for the event. Check the targets you " +"want to add and use the 'Apply' button." +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:66 +#: addons/goto/events/class_EventTargetAddUsersList.inc:60 +#, fuzzy +msgid "System / Department" +msgstr "Departament" + +#: addons/goto/events/class_EventTargetAddList.inc:73 +#, fuzzy +msgid "Display server" +msgstr "Urządzenie wyświetlające" + +#: addons/goto/events/class_EventTargetAddList.inc:74 +#, fuzzy +msgid "Display workstation" +msgstr "Stacja robocza Windows" + +#: addons/goto/events/class_EventTargetAddList.inc:75 +#, fuzzy +msgid "Display object groups" +msgstr "Wyświetl obiekty pasujące" + +#: addons/goto/events/class_EventTargetAddList.inc:76 +msgid "Filter by IP range" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:3 +#, fuzzy +msgid "Year" +msgstr "Szukaj" + +#: addons/goto/events/timestamp_select.tpl:4 +#, fuzzy +msgid "Month" +msgstr "miesiąc" + +#: addons/goto/events/timestamp_select.tpl:5 +#, fuzzy +msgid "Day" +msgstr "dzień" + +#: addons/goto/events/timestamp_select.tpl:7 +#, fuzzy +msgid "Hour" +msgstr "godzina" + +#: addons/goto/events/timestamp_select.tpl:8 +#, fuzzy +msgid "Minute" +msgstr "Drukarka" + +#: addons/goto/events/timestamp_select.tpl:9 +#, fuzzy +msgid "Second" +msgstr "Sekcja" + +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:28 +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:29 +msgid "Reload LDAP config" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_notify.inc:46 +#: addons/goto/events/class_DaemonEvent_notify.inc:47 +msgid "Send message" +msgstr "Wyślij wiadomość" + +#: addons/goto/events/class_DaemonEvent_notify.inc:100 +#, fuzzy +msgid "From" +msgstr "losowy" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:49 +msgid "" +"This dialog shows all available targets for your event, check the targets " +"you want to add and use the 'Use' button to accept." +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:65 +#, fuzzy +msgid "Display users" +msgstr "Urządzenie wyświetlające" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:66 +#, fuzzy +msgid "Display groups" +msgstr "Wyświetl obiekty pasujące" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:31 +msgid "Reload fai server db" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:28 +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:29 +#, fuzzy +msgid "Installation activation" +msgstr "Stacja Windows" + +#: addons/goto/events/DaemonEvent_activate.tpl:9 +#, fuzzy +msgid "Time schedule" +msgstr "Zaplanowana aktualizacja" + +#: addons/goto/events/DaemonEvent_reinstall.tpl:39 +#, fuzzy +msgid "Progress" +msgstr "Właściwości" + +#: addons/goto/class_goto_import_file.inc:90 +msgid "" +"Selected entries will be skipped because of errors. Do you want to proceed?" +msgstr "" + +#: addons/goto/class_goto_import_file.inc:131 +#, php-format +msgid "Import complete: %s events successfully send, %s failed" +msgstr "" + +#: personal/environment/class_environment.inc:9 +#: personal/environment/class_environment.inc:433 +#: personal/environment/class_environment.inc:434 +#: personal/environment/class_environment.inc:442 +#: personal/environment/class_environment.inc:443 +#: personal/environment/class_environment.inc:446 +#: personal/environment/class_environment.inc:447 +#: personal/environment/class_environment.inc:450 +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:473 +#: personal/environment/class_environment.inc:474 +#: personal/environment/class_environment.inc:478 +#: personal/environment/class_environment.inc:479 +#: personal/environment/class_environment.inc:482 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1766 +msgid "Environment" +msgstr "Środowisko" + +#: personal/environment/class_environment.inc:139 +#, fuzzy, php-format +msgid "Device '%s' is not available anymore. It will be removed!" +msgstr "Brak snapshot'u który mógłby zostać odtworzony" + +#: personal/environment/class_environment.inc:212 +msgid "auto" +msgstr "automatycznie" + +#: personal/environment/class_environment.inc:234 +#, fuzzy, php-format +msgid "Cannot open file '%s'!" +msgstr "Nie można otworzyć pliku '%s'." + +#: personal/environment/class_environment.inc:271 +#: personal/environment/class_environment.inc:272 +msgid "disabled" +msgstr "wyłączone" + +#: personal/environment/class_environment.inc:307 +#, php-format +msgid "" +"Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk " +"profile will be disabled!" +msgstr "" + +#: personal/environment/class_environment.inc:360 +#, fuzzy, php-format +msgid "Profile server '%s' is not available anymore. Switched to server '%s'." +msgstr "" +"Wybrany profil kiosk '%s' nie jest już dostępny, ustawiam aktualny profil na " +"'brak'." + +#: personal/environment/class_environment.inc:364 +#, fuzzy, php-format +msgid "" +"Profile server '%s' is not available anymore. Kiosk profile will be disabled." +msgstr "" +"Wybrany profil kiosk '%s' nie jest już dostępny, ustawiam aktualny profil na " +"'brak'." + +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1148 +msgid "POSIX" +msgstr "" + +#: personal/environment/class_environment.inc:583 +#: personal/environment/environment.tpl:246 +msgid "Logon scripts" +msgstr "Skrypty logowania" + +#: personal/environment/class_environment.inc:673 +#, fuzzy +msgid "Share" +msgstr "Udziały" + +#: personal/environment/class_environment.inc:763 +#: personal/environment/environment.tpl:257 +#: personal/environment/environment.tpl:303 +#, fuzzy +msgid "Used by all users" +msgstr "ACL jest prawidłowy dla wszystkich użytkowników" + +#: personal/environment/class_environment.inc:766 +#: personal/environment/environment.tpl:259 +#: personal/environment/environment.tpl:305 +msgid "Used by some users" +msgstr "" + +#: personal/environment/class_environment.inc:779 +#: personal/environment/class_environment.inc:780 +#: personal/environment/class_environment.inc:789 +#: personal/environment/class_environment.inc:790 +msgid "Reset password hash" +msgstr "Zresetuj hash hasła" + +#: personal/environment/class_environment.inc:794 +msgid "Delete share entry" +msgstr "Usuń wpis udziału" + +#: personal/environment/class_environment.inc:988 +msgid "Cannot set default printer flag for groups!" +msgstr "" + +#: personal/environment/class_environment.inc:1141 +#: personal/environment/class_environment.inc:1711 +#: personal/environment/class_environment.inc:1780 +msgid "Profile quota" +msgstr "Quota profilu" + +#: personal/environment/class_environment.inc:1148 +#, fuzzy +msgid "environment" +msgstr "Środowisko" + +#: personal/environment/class_environment.inc:1329 +msgid "group share" +msgstr "grupuj udział" + +#: personal/environment/class_environment.inc:1363 +msgid "Administrator" +msgstr "Administrator" + +#: personal/environment/class_environment.inc:1368 +msgid "Default printer" +msgstr "Domyślna drukarka" + +#: personal/environment/class_environment.inc:1767 +msgid "Environment settings" +msgstr "Ustawienia środowiska" + +#: personal/environment/class_environment.inc:1771 +msgid "My account" +msgstr "Moje konto " + +#: personal/environment/class_environment.inc:1775 +msgid "Command to extend the list of possible screen resolutions" +msgstr "Polecenie do rozszerzenia listy możliwych rozdzielczości ekranu" + +#: personal/environment/class_environment.inc:1779 +msgid "Profile server" +msgstr "Serwer profili" + +#: personal/environment/class_environment.inc:1781 +#: personal/environment/environment.tpl:41 +#: personal/environment/environment.tpl:106 +msgid "Cache profile localy" +msgstr "Buforu profil lokalnie" + +#: personal/environment/class_environment.inc:1785 +#: personal/environment/environment.tpl:174 +msgid "Resolution changeable during session" +msgstr "Rozdzielczość zmienialna podczas pracy" + +#: personal/environment/class_environment.inc:1787 +#: personal/environment/logonManagement.tpl:56 +msgid "Logon script" +msgstr "Skrypt logowania" + +#: personal/environment/environment.tpl:3 +msgid "The environment extension is currently disabled." +msgstr "Rozszerzenie Środowisko jest obecnie wyłączone" + +#: personal/environment/environment.tpl:11 +msgid "Profiles" +msgstr "Profile" + +#: personal/environment/environment.tpl:14 +#: personal/environment/environment.tpl:207 +#: personal/environment/environment.tpl:288 +msgid "Environment managment settings" +msgstr "Ustawienia zarządzania Środowiskiem" + +#: personal/environment/environment.tpl:22 +#: personal/environment/environment.tpl:55 +msgid "Use profile managment" +msgstr "Użyj zarządzania profilami" + +#: personal/environment/environment.tpl:26 +#: personal/environment/environment.tpl:65 +msgid "Profil path" +msgstr "Ścieżka profili" + +#: personal/environment/environment.tpl:36 +#: personal/environment/environment.tpl:95 +msgid "MB" +msgstr "MB" + +#: personal/environment/environment.tpl:47 +msgid "Profile managment" +msgstr "Zarządzanie profilami" + +#: personal/environment/environment.tpl:62 +msgid "Profile server managment" +msgstr "Zarządzanie serwerem profili" + +#: personal/environment/environment.tpl:89 +msgid "Profil quota" +msgstr "Quota profili" + +#: personal/environment/environment.tpl:120 +msgid "Kiosk profile settings" +msgstr "Ustawienia profilu Kiosk" + +#: personal/environment/environment.tpl:145 +msgid "Profile" +msgstr "Profile" + +#: personal/environment/environment.tpl:164 +msgid "Manage" +msgstr "Zarządzaj" + +#: personal/environment/environment.tpl:222 +msgid "User used to connect to the share" +msgstr "Użytkownik łączył się do tego udziału" + +#: personal/environment/environment.tpl:225 +msgid "Select a share" +msgstr "Wybierz udział" + +#: personal/environment/environment.tpl:233 +msgid "Mount path" +msgstr "Ścieżka montowania" + +#: personal/environment/environment.tpl:248 +#: personal/environment/logonManagement.tpl:1 +#: personal/environment/logonManagement.tpl:5 +msgid "Logon script management" +msgstr "Zarządzanie skryptami logowania" + +#: personal/environment/environment.tpl:295 +msgid "Hotplug device settings" +msgstr "Ustawienia urządzeń Hotplug" + +#: personal/environment/environment.tpl:342 +msgid "" +"Using this option will overwrite the complete printer settings for all " +"currently edited objects!" +msgstr "" + +#: personal/environment/environment.tpl:343 +#: personal/environment/environment.tpl:376 +msgid "Printer settings" +msgstr "Ustawienia drukarki" + +#: personal/environment/environment.tpl:360 +#: personal/environment/environment.tpl:393 +msgid "Toggle admin" +msgstr "Przełącz admin" + +#: personal/environment/environment.tpl:363 +#: personal/environment/environment.tpl:396 +msgid "Toggle default" +msgstr "Przełącz domyślne" + +#: personal/environment/class_logonManagementDialog.inc:107 +#: personal/environment/logonManagement.tpl:10 +#, fuzzy +msgid "Script name" +msgstr "Nazwa skryptu" + +#: personal/environment/main.inc:134 +msgid "User environment settings" +msgstr "Ustawienia środowiska użytkownika" + +#: personal/environment/class_selectPrinterDialog.inc:107 +#, fuzzy +msgid "Please select a printer!" +msgstr "Proszę wybrać prawidłowy plik" + +#: personal/environment/class_hotplugDialog.inc:64 +#, fuzzy +msgid "Please select a hotplug device!" +msgstr "Proszę wybrać prawidłowy plik" + +#: personal/environment/selectPrinterDialog.tpl:1 +#, fuzzy +msgid "Add printer devices" +msgstr "Dodaj urządzenie drukujące" + +#: personal/environment/selectPrinterDialog.tpl:48 +msgid "Display printers matching" +msgstr "Wyświetl drukarki pasujące" + +#: personal/environment/selectPrinterDialog.tpl:53 +msgid "Regular expression for matching printer names" +msgstr "Wyrażenie regularne do dopasowania nazw drukarek" + +#: personal/environment/logonManagement.tpl:8 +msgid "Logon script settings" +msgstr "Ustawienia skryptu logowania" + +#: personal/environment/logonManagement.tpl:24 +msgid "Priority" +msgstr "Priorytet" + +#: personal/environment/logonManagement.tpl:34 +msgid "Logon script flags" +msgstr "Flagi skryptu logowania" + +#: personal/environment/logonManagement.tpl:38 +msgid "Last script" +msgstr "Ostatni skrypt" + +#: personal/environment/logonManagement.tpl:44 +msgid "Script can be replaced by user" +msgstr "Skrypt może być zmieniony przez użytkownika" + +#: personal/environment/hotplugDialog.tpl:1 +msgid "Add hotplug devices" +msgstr "Dodaj urządzenia hotplug" + +#: personal/environment/hotplugDialog.tpl:5 +msgid "Hotplug management" +msgstr "Zarządzanie Hotplug" + +#: personal/environment/hotplugDialog.tpl:10 +msgid "Select hotplug device to add" +msgstr "Wybierz urządzenie hotplug do dodania" + +#: personal/environment/hotplugDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Wybierz departament na którym będzie wyszukiwanie" + +#: personal/environment/hotplugDialog.tpl:48 +msgid "Regular expression for matching hotplugs" +msgstr "Wyrażenie regularne dla dopasowania hotplug" + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "Zarządzanie systemem" + +#~ msgid "Spool server" +#~ msgstr "Serwer kolejkowania" + +#, fuzzy +#~ msgid "GOsa configuration %s/%s is not readable. Aborted." +#~ msgstr "Nie można czytać pliku konfiguracji %s/gosa.conf. Kończę." + +#~ msgid "Directory '%s' specified as compile directory is not accessible!" +#~ msgstr "Katalog '%s' podany jako katalog kompilacji jest niedostępny!" + +#, fuzzy +#~ msgid "Password method" +#~ msgstr "Przechowywanie hasła" + +#~ msgid "" +#~ "The passwords you've entered as 'New password' and 'Repeated new " +#~ "password' do not match." +#~ msgstr "" +#~ "Podane hasła 'Nowe hasło' oraz 'Powtórz nowe hasło' nie są itentyczne." + +#~ msgid "New password" +#~ msgstr "Nowe hasło" + +#~ msgid "The password used as new and current are too similar." +#~ msgstr "Hasło podane jako nowe jest zbyt podobne do obecnego." + +#~ msgid "The password used as new is to short." +#~ msgstr "Hasło podane jako nowe jest za krótkie." + +#~ msgid "Current password" +#~ msgstr "Obecne hasło" + +#~ msgid "Please check the username/password combination." +#~ msgstr "Proszę sprawdzić kombinację login/hasło." + +#~ msgid "You have no permissions to change your password." +#~ msgstr "Brak uprawnień do zmiany własnego hasła" + +#~ msgid "External password changer reported a problem: " +#~ msgstr "Zewnętrzny program do zmiany hasła zgłosił następujący problem:" + +#~ msgid "Session will not be encrypted." +#~ msgstr "Sesja nie będzie szyfrowana." + +#~ msgid "Enter SSL session" +#~ msgstr "Sprowadź sesję SSL" + +#, fuzzy +#~ msgid "PHP configuration" +#~ msgstr "Konfiguracja bazy FAX" + +#~ msgid "" +#~ "FATAL: Register globals is on. GOsa will refuse to login unless this is " +#~ "fixed by an administrator." +#~ msgstr "" +#~ "BŁĄD: Register globals jest włączone. GOsa odmówi logowania do momentu " +#~ "poprawienia tego parametru przez administratora." + +#, fuzzy +#~ msgid "Password change" +#~ msgstr "Brak uprawnień do zmiay hasła" + +#, fuzzy +#~ msgid "Your password is about to expire, please change your password!" +#~ msgstr "Twoje hasło zaraz wygaśnie, proszę zmienić hasło" + +#, fuzzy +#~ msgid "Plugin" +#~ msgstr "w" + +#, fuzzy +#~ msgid "FATAL: Cannot find any plugin definitions for plugin '%s'!" +#~ msgstr "BŁĄD: Nie można znaleźć żadnych definicji dla pluginu '%s'!" + +#, fuzzy +#~ msgid "Smarty" +#~ msgstr "Podsumowanie" + +#, fuzzy +#~ msgid "Session is not encrypted!" +#~ msgstr "Sesja nie będzie szyfrowana." + +#, fuzzy +#~ msgid "Smarty error" +#~ msgstr "Ustaw status" + +#, fuzzy +#~ msgid "Your LDAP setup contains old schema definitions:" +#~ msgstr "" +#~ "Ustawienia serwera LDAP zawierają stare definicje schema. Proszę " +#~ "uruchomić setup." + +#~ msgid "Please specify a valid username!" +#~ msgstr "Proszę podać prawidłową nazwę użytkownika!" + +#~ msgid "Please specify your password!" +#~ msgstr "Proszę podać prawidłowe hasło!" + +#, fuzzy +#~ msgid "Authentication error" +#~ msgstr "Autentykacja Nagios" + +#, fuzzy +#~ msgid "Account locked. Please contact your system administrator!" +#~ msgstr "" +#~ "Konto zablokowane. Proszę skontaktować się z administratorem systemu." + +#~ msgid "" +#~ "Your browser has cookies disabled. Please enable cookies and reload this " +#~ "page before logging in!" +#~ msgstr "" +#~ "Twoja przeglądarka ma wyłączone cookies. Proszę włączyć cookies i " +#~ "przeładować stronę przed logowaniem!" + +#~ msgid "Help browser" +#~ msgstr "Wyszukiwarka pomocy" + +#~ msgid "There is no helpfile specified for this class" +#~ msgstr "Pomoc nie jest dostępna dla tej klasy." + +#~ msgid "previous" +#~ msgstr "poprzednie" + +#~ msgid "next" +#~ msgstr "następne" + +#~ msgid "Helpdir '%s' is not accessible, can't read any helpfiles." +#~ msgstr "" +#~ "Katalog pomocy '%s' nie jest osiągalny, nie można czytać żadnych plików " +#~ "pomocy." + +#~ msgid "Session conflict detected" +#~ msgstr "Wykryto konflikt sesji" + +#~ msgid "" +#~ "Probably there's another active instance of your session. Multiple window " +#~ "operation is technical not possible and heavily depends on the browser " +#~ "you're using. Usage of different browsers at a time (i.e. IE and Mozilla) " +#~ "is possible. Pressing the Logout button will close this session." +#~ msgstr "" +#~ "Prawdopodobnie istnieje inna aktywna instacja sesji. Operowanie na kilku " +#~ "oknach nie jest technicznie możliwe i mocno zależy od używanej " +#~ "przeglądarki. Użycie różnych przeglądarek (np. IE i Mozilla) jest " +#~ "możliwe. Naciśnięcie przycisku Wyloguj zamknie tą sesję." + +#~ msgid "" +#~ "Ignoring this message will change/destroy the data you're currently " +#~ "editing, so please close multiple windows and log in again." +#~ msgstr "" +#~ "Ignorując ten komunikat zmienisz/usuniesz dane które obecnie edytujesz. " +#~ "Proszę zamknąć wiele okien i zalogować się ponownie." + +#~ msgid "Logout" +#~ msgstr "Wyloguj" + +#~ msgid "Locking conflict detected" +#~ msgstr "Wykryto konflikt blokady" + +#~ msgid "" +#~ "If this lock detection is false, the other person has obviously closed " +#~ "the webbrowser during the edit operation. You may want to take over the " +#~ "lock by pressing the 'Edit anyway' button." +#~ msgstr "" +#~ "Jeśli to wykrycie blokady jest błędne, inna osoba prawdopodobnie zamknęła " +#~ "okno przeglądarki podczas operacji edycji. Można przejąć blokadę " +#~ "naciskając Edytuj." + +#~ msgid "Restoring object snapshots" +#~ msgstr "Odtwarzanie obiektu snapshotów" + +#~ msgid "" +#~ "This procedure will restore a snapshot of the selected object. It will " +#~ "replace the existing object after pressing the restore button." +#~ msgstr "" +#~ "Ta procedura przywróci snapshot wybranego obiektu. Obecny obiekt zostanie " +#~ "zamieniony po naciśnięciu przycisku przywróć." + +#~ msgid "Object" +#~ msgstr "Obiekt" + +#~ msgid "There is no snapshot available that could be restored" +#~ msgstr "Brak snapshot'u który mógłby zostać odtworzony" + +#~ msgid "" +#~ "Choose a snapshot and click the folder image, to restore the snapshot" +#~ msgstr "" +#~ "Wybierz snapshot i klinij w obrazek folderu, aby odtwodzyć snapshot." + +#~ msgid "Creating object snapshots" +#~ msgstr "Tworzenie obiektu snapshoty" + +#~ msgid "" +#~ "This procedure will create a snapshot of the selected object. It will be " +#~ "stored inside a special branch of your directory system and can be " +#~ "restored later on." +#~ msgstr "" +#~ "Ta procedura utworzy snapshot wybranego obiektu. Kopia obiektu zostanie " +#~ "zachowana w specjalnej gałęzi i będzie mogła zostać przywrócona później." + +#~ msgid "Reason for generating this snapshot" +#~ msgstr "Przyczyna utworzenia tego snapshot'u" + +#, fuzzy +#~ msgid "Your GOsa session has been closed!" +#~ msgstr "Twoja sesja w GOsa wygasła!" + +#, fuzzy +#~ msgid "Change your password" +#~ msgstr "Zmień hasło" + +#, fuzzy +#~ msgid "Success" +#~ msgstr "Eksport zakończony powodzeniem" + +#~ msgid "Directory" +#~ msgstr "Katalog" + +#~ msgid "Username" +#~ msgstr "Nazwa użytkownika" + +#, fuzzy +#~ msgid "New password repeated" +#~ msgstr "Nowe hasło" + +#, fuzzy +#~ msgid "Password strength" +#~ msgstr "Przechowywanie hasła" + +#, fuzzy +#~ msgid "Change" +#~ msgstr "Kanał" + +#, fuzzy +#~ msgid "Click here to change your password" +#~ msgstr "Brak uprawnień do zmiany własnego hasła" + +#, fuzzy +#~ msgid "Your password has expired. Please choose a new one!" +#~ msgstr "Twoje hasło wygasło !! Proszę wybrać inne hasło" + +#, fuzzy +#~ msgid "Old password" +#~ msgstr "Stare hasło" + +#, fuzzy +#~ msgid "Verify password" +#~ msgstr "Hasło ponownie" + +#~ msgid "Change password" +#~ msgstr "Zmień hasło" + +#, fuzzy +#~ msgid "Login screen" +#~ msgstr "Usługa Logowania" + +#, fuzzy +#~ msgid "" +#~ "Please use your username and your password to log into the site " +#~ "administration system." +#~ msgstr "Proszę użyć swojego loginu i hasła aby się zalogować" + +#~ msgid "Sign in" +#~ msgstr "Zaloguj" + +#~ msgid "Click here to log in" +#~ msgstr "Kliknij tutaj aby się zalogować" + +#~ msgid "Information" +#~ msgstr "Informacja" + +#, fuzzy +#~ msgid "Assigned ACL for current entry" +#~ msgstr "Przypisane ACL'e dla obecnego wpisu" + +#~ msgid "New ACL" +#~ msgstr "Nowy ACL" + +#~ msgid "ACL type" +#~ msgstr "typ ACL" + +#~ msgid "Select an acl type" +#~ msgstr "Wybierz typ ACL" + +#, fuzzy +#~ msgid "Additional filter options" +#~ msgstr "Ustawienia Aplikacji" + +#~ msgid "Use members from" +#~ msgstr "Użyj członków z" + +#~ msgid "Available members" +#~ msgstr "Dostępni członkowie" + +#~ msgid "List message possible targets" +#~ msgstr "Wyświetl możliwe cele wiadomości" + +#~ msgid "Members" +#~ msgstr "Członkowie" + +#~ msgid "List message recipients" +#~ msgstr "Wyświetl odbiorców wiadomości" + +#~ msgid "List of available ACL categories" +#~ msgstr "Lista dostępnych kategorii ACL" + +#, fuzzy +#~ msgid "ACL for this object" +#~ msgstr "ACLe dla tego obiektu" + +#, fuzzy +#~ msgid "Available roles" +#~ msgstr "Dostępni członkowie" + +#~ msgid "" +#~ "You are currently editing a database entry. Do you want to dismiss the " +#~ "changes?" +#~ msgstr "Obecnie edytujesz bazę danych. Czy chcesz porzucić zmiany?" + +#~ msgid "Main" +#~ msgstr "Główne" + +#~ msgid "Help" +#~ msgstr "Pomoc" + +#~ msgid "Sign out" +#~ msgstr "Wyloguj" + +#~ msgid "Signed in:" +#~ msgstr "Zalogowano:" + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "" +#~ "The size limit option makes LDAP operations faster and saves the LDAP " +#~ "server from getting too much load. The easiest way to handle big " +#~ "databases without long timeouts would be to limit your search to smaller " +#~ "values and use filters to get the entries you are looking for." +#~ msgstr "" +#~ "Limit rozmiaru powoduje szybsze operacje LDAP i zapobiega nadmiernemu " +#~ "obciążeniu serwera LDAP. Najprostrzym sposobem działania na dużych bazach " +#~ "bez opóźnień jest ograniczanie wyszukiwań do mniejszej ilości wyników " +#~ "oraz użycie filtrów dla otrzymania poszukiwanych elementów." + +#~ msgid "Please choose the way to react for this session" +#~ msgstr "Proszę wybrać sposób reakcji dla tej sesji" + +#~ msgid "ignore this error and show all entries the LDAP server returns" +#~ msgstr "" +#~ "Ignoruj ten błąd i pokaż wszystkie elementy które zwraca serwer LDAP" + +#~ msgid "" +#~ "ignore this error and show all entries that fit into the defined " +#~ "sizelimit and let me use filters instead" +#~ msgstr "" +#~ "ignoruj ten błąd i pokaż wszystkie elementy które zmieszczą się w " +#~ "zdefiniowanych limicie rozmiaru i pozwól mi użyć filtrów" + +#~ msgid "Set" +#~ msgstr "Ustaw" + +#, fuzzy +#~ msgid "Copy & paste wizard" +#~ msgstr "Kreator Copy & paste" + +#~ msgid "" +#~ "Some values need to be unique in the complete directory while some " +#~ "combinations make no sense. GOsa shows the relevant attributes. Please " +#~ "maintain the values below to fullfill the policies." +#~ msgstr "" +#~ "Niektóre wartości muszą być unikalne w całym katalogu, podczas gdy " +#~ "niektóre kombinacje nie mają sensu. GOsa pokazuje dotyczące atrybuty. " +#~ "Proszę poprawić wartości poniżej aby utrzymać zgodność z regułami." + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#, fuzzy +#~ msgid "Cancel all" +#~ msgstr "Anuluj" + +#~ msgid "Operation complete" +#~ msgstr "Operacja zakończona" + +#~ msgid "Finish" +#~ msgstr "Zakończ" + +#~ msgid "Your GOsa session has expired!" +#~ msgstr "Twoja sesja w GOsa wygasła!" + +#~ msgid "" +#~ "The last interaction with the GOsa web interface has been some time ago " +#~ "in the past. For security reasons, the session has been closed. To " +#~ "continue with administrative tasks, please sign in again." +#~ msgstr "" +#~ "Ostatnia interakcja z interfejsem GOsa była już jakiś czas temu. Z " +#~ "powodów bezpieczeństwa sesja została zamknięta. Aby kontynuować proszę " +#~ "zalogować się ponownie." + +#~ msgid "Sign in again" +#~ msgstr "Zaloguj się ponownie" + +#~ msgid "GOsa help viewer" +#~ msgstr "Podgląd pomocy GOsa" + +#~ msgid "Index" +#~ msgstr "Indeks" + +#~ msgid "Search" +#~ msgstr "Szukaj" + +#, fuzzy +#~ msgid "Please select the preferred language" +#~ msgstr "Preferowany język" + +#, fuzzy +#~ msgid "Please select your preferred language here" +#~ msgstr "Preferowany język" + +#, fuzzy +#~ msgid "Checking PHP version" +#~ msgstr "Sprawdzam wersję PHP (>=4.1.0)" + +#, fuzzy +#~ msgid "PHP must be of version %s or above." +#~ msgstr "" +#~ "PHP musi być w wersji 4.1.0 lub wyższej z powodu używanych funkcji i " +#~ "błędów w języku PHP." + +#, fuzzy +#~ msgid "mbstring" +#~ msgstr "Ustawienia Samba" + +#, fuzzy +#~ msgid "MySQL" +#~ msgstr "błąd LDAP:" + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to communicate with several supported databases." +#~ msgstr "" +#~ "Wsparcie dla MySQL jest potrzebne do czytania raportów GOfax z bazy " +#~ "danych." + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to show printers that are not defined within " +#~ "the LDAP." +#~ msgstr "" +#~ "Wsparcie dla MySQL jest potrzebne do czytania raportów GOfax z bazy " +#~ "danych." + +#, fuzzy +#~ msgid "" +#~ "register_globals is a PHP mechanism to register all global variables to " +#~ "be accessible from scripts without changing the scope. This may be a " +#~ "security risk." +#~ msgstr "" +#~ "register_globals jest mechanizmem PHP umożliwiającym takie ustawienie " +#~ "zmiennych globalnych, że możliwy jest do nich dostęp bez zmiany zakresu. " +#~ "To może powodować zagrożenie bezpieczeństwa. Gosa może działać w obu " +#~ "trybach." + +#, fuzzy +#~ msgid "" +#~ "Search for 'register_globals' in your php.ini and switch it to 'Off'." +#~ msgstr "Sprawdzam, czy register_globals jest ustawione na 'off'" + +#, fuzzy +#~ msgid "" +#~ "Setting this value to one day will prevent loosing session and cookies " +#~ "before they really timeout." +#~ msgstr "" +#~ "PHP używa tej wartości dla garbage collector'a do usuwania starych sesji. " +#~ "Ustawienie tej wartości na jeden dzień zapobiegnie ustraceniu sesji oraz " +#~ "cookie zanim faktycznie wygasną." + +#, fuzzy +#~ msgid "" +#~ "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 " +#~ "or higher." +#~ msgstr "" +#~ "Aby używać GOsa bez problemow, opcja session.auto_register w pliku php." +#~ "ini musi być ustawiona na 'off'." + +#, fuzzy +#~ msgid "Off" +#~ msgstr "Offline" + +#, fuzzy +#~ msgid "" +#~ "In Order to use GOsa without any trouble, the session.auto_register " +#~ "option in your php.ini should be set to 'Off'." +#~ msgstr "" +#~ "Aby używać GOsa bez problemow, opcja session.auto_register w pliku php." +#~ "ini musi być ustawiona na 'off'." + +#, fuzzy +#~ msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." +#~ msgstr "" +#~ "Aby używać GOsa bez problemow, opcja session.auto_register w pliku php." +#~ "ini musi być ustawiona na 'off'." + +#, fuzzy +#~ msgid "" +#~ "GOsa needs at least 32MB of memory. Setting it below this limit may cause " +#~ "errors that are not reproducable! Increase it for larger setups." +#~ msgstr "" +#~ "GOsa potrzebuje conajmniej 16MB pamięci. Mniej może prowadzić do " +#~ "nieprzewidywalnych błędów. Dla większych instalacji, należy zwiększyć ten " +#~ "parametr." + +#, fuzzy +#~ msgid "" +#~ "This option influences the PHP output handling. Turn this Option off, to " +#~ "increase performance." +#~ msgstr "" +#~ "Ta opcja wpływa na obsługę output. Aby zwiększyć wydajność, należy " +#~ "ustawić na 'off'." + +#, fuzzy +#~ msgid "The Execution time should be at least 30 seconds." +#~ msgstr "" +#~ "Ten parametr powinien byc ustawniony na co najmniej 30 sekund. Niektóre " +#~ "funkcje mogą zabierać dużo czasu." + +#, fuzzy +#~ msgid "" +#~ "Increase the server security by setting expose_php to 'off'. PHP won't " +#~ "send any information about the server you are running in this case." +#~ msgstr "" +#~ "Aby zwiększyć bezpieczeństwo, należy ustawić expose_php na 'off'. PHP nie " +#~ "będzie wysyłać żadnych informacji na temat serwera na którym działa." + +#, fuzzy +#~ msgid "On" +#~ msgstr "Otwórz" + +#~ msgid "" +#~ "Increase your server security by setting magic_quotes_gpc to 'on'. PHP " +#~ "will escape all quotes in strings in this case." +#~ msgstr "" +#~ "Ustawienie macig_quotes_gpc na 'on' zwiększy bezpieczeństwo serwera. PHP " +#~ "będzie zabezpieczać cudzysłowa w stringach." + +#, fuzzy +#~ msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." +#~ msgstr "Sprawdzam, czy register_globals jest ustawione na 'off'" + +#, fuzzy +#~ msgid "" +#~ "Increase your server performance by setting magic_quotes_gpc to 'off'." +#~ msgstr "" +#~ "Ustawienie macig_quotes_gpc na 'on' zwiększy bezpieczeństwo serwera. PHP " +#~ "będzie zabezpieczać cudzysłowa w stringach." + +#, fuzzy +#~ msgid "" +#~ "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to " +#~ "'Off'." +#~ msgstr "" +#~ "Aby używać GOsa bez problemow, opcja session.auto_register w pliku php." +#~ "ini musi być ustawiona na 'off'." + +#, fuzzy +#~ msgid "Configuration writeable" +#~ msgstr "Plik konfiguracyjny" + +#, fuzzy +#~ msgid "The configuration file can't be written" +#~ msgstr "Plik konfiguracyjny" + +#, fuzzy +#~ msgid "Schema specific settings" +#~ msgstr "Ustawienia Samba" + +#, fuzzy +#~ msgid "Check status" +#~ msgstr "Ustaw status" + +#, fuzzy +#~ msgid "Schema check failed" +#~ msgstr "Zapisywanie telefonu nieudane" + +#, fuzzy +#~ msgid "Setup error" +#~ msgstr "Ustaw status" + +#, fuzzy +#~ msgid "Completed" +#~ msgstr "niepełne" + +#, fuzzy +#~ msgid "Next" +#~ msgstr "tekst" + +#, fuzzy +#~ msgid "UNIX accounts/groups" +#~ msgstr "Konta Unix" + +#, fuzzy +#~ msgid "Samba management" +#~ msgstr "Zarządzanie systemem" + +#, fuzzy +#~ msgid "Mailsystem management" +#~ msgstr "Zarządzanie systemem" + +#, fuzzy +#~ msgid "FAX system administration" +#~ msgstr "Administracja użytkownikami" + +#, fuzzy +#~ msgid "Asterisk administration" +#~ msgstr "Administracja użytkownikami" + +#, fuzzy +#~ msgid "System inventory" +#~ msgstr "Usuń inwentarz" + +#, fuzzy +#~ msgid "System-/Configmanagement" +#~ msgstr "Zarządzanie systemem" + +#~ msgid "Addressbook" +#~ msgstr "Książka adresowa" + +#, fuzzy +#~ msgid "Get notifications or send feedback" +#~ msgstr "Ograniczenia dla nadawcy" + +#, fuzzy +#~ msgid "Notification and feedback" +#~ msgstr "Powiadomienie wysłane!" + +#, fuzzy +#~ msgid "Please specify a valid email address." +#~ msgstr "Proszę podać prawidłową nazwę skryptu." + +#, fuzzy +#~ msgid "LDAP schema check" +#~ msgstr "Usługa Ldap" + +#~ msgid "No" +#~ msgstr "Nie" + +#~ msgid "Yes" +#~ msgstr "Tak" + +#, fuzzy +#~ msgid "LDAP setup" +#~ msgstr "Serwer LDAP" + +#, fuzzy +#~ msgid "LDAP connection setup" +#~ msgstr "Połączenie dzwonienia..." + +#, fuzzy +#~ msgid "" +#~ "This dialog performs the basic configuration of the LDAP connectivity for " +#~ "GOsa." +#~ msgstr "" +#~ "Poniższe pola pozwalają na podstawową konfigurację zachowania GOsa i " +#~ "wpływają na różne właściwości w głównej konfiguracji." + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' failed!" +#~ msgstr "Logowanie użytkownika nieudane, odpowiedź serwera LDAP '%s'." + +#, fuzzy +#~ msgid "Bind as user '%s' failed!" +#~ msgstr "Logowanie użytkownika nieudane, odpowiedź serwera LDAP '%s'." + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' succeeded." +#~ msgstr "Logowanie użytkownika nieudane, odpowiedź serwera LDAP '%s'." + +#, fuzzy +#~ msgid "Please specify user and password!" +#~ msgstr "Proszę podać prawidłowe hasło!" + +#, fuzzy +#~ msgid "Bind as user '%s' to server '%s' succeeded!" +#~ msgstr "Logowanie użytkownika nieudane, odpowiedź serwera LDAP '%s'." + +#, fuzzy +#~ msgid "Language setup" +#~ msgstr "Język" + +#, fuzzy +#~ msgid "This step allows you to select your preferred language." +#~ msgstr "To menu umożliwia dodawanie, edycję i kasowanie wybranych grup." + +#, fuzzy +#~ msgid "Automatic" +#~ msgstr "automatyczne" + +#, fuzzy +#~ msgid "GOsa setup wizard" +#~ msgstr "Podgląd pomocy GOsa" + +#, fuzzy +#~ msgid "Setup" +#~ msgstr "Ustaw" + +#, fuzzy +#~ msgid "Create your configuration file" +#~ msgstr "Plik konfiguracyjny" + +#~ msgid "Download configuration" +#~ msgstr "Konfiguracja pobierania" + +#, fuzzy +#~ msgid "Status: " +#~ msgstr "Status" + +#, fuzzy +#~ msgid "Theme" +#~ msgstr "Mime" + +#, fuzzy +#~ msgid "Apache" +#~ msgstr "Cache" + +#, fuzzy +#~ msgid "People and group storage" +#~ msgstr "Prosze wyszczególnić długość pamięci." + +#, fuzzy +#~ msgid "People DN attribute" +#~ msgstr "Ten 'dn' nie jest aplikacją." + +#, fuzzy +#~ msgid "People storage subtree" +#~ msgstr "Prosze wyszczególnić długość pamięci." + +#, fuzzy +#~ msgid "Group storage subtree" +#~ msgstr "Proszę wybrać grupę obiektów" + +#, fuzzy +#~ msgid "Automatic UIDs" +#~ msgstr "Automatyczne tryby" + +#, fuzzy +#~ msgid "Number base for people/groups" +#~ msgstr "Podstawowe ID dla użytkowników/grup" + +#, fuzzy +#~ msgid "Password settings" +#~ msgstr "Ustawienia użytkownika" + +#, fuzzy +#~ msgid "Password encryption algorithm" +#~ msgstr "Algorytm szyfrowania" + +#, fuzzy +#~ msgid "Password restrictions" +#~ msgstr "Hasło wygasa" + +#, fuzzy +#~ msgid "Password change hook" +#~ msgstr "Brak uprawnień do zmiay hasła" + +#, fuzzy +#~ msgid "Use account expiration" +#~ msgstr "Konto wygasa po" + +#~ msgid "" +#~ "GOsa supports several encryption types for your passwords. Normally this " +#~ "is adjustable via user templates, but you can specify a default method to " +#~ "be used here, too." +#~ msgstr "" +#~ "GOsa wspiera kilka typów szyfrowania hasła. Typy można ustawić przez " +#~ "szablony użytkownika, oraz można też ustawić typ domyślny tutaj." + +#, fuzzy +#~ msgid "" +#~ "GOsa always acts as admin and manages access rights internally. This is a " +#~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " +#~ "For this to work, we need the admin DN and the corresponding password." +#~ msgstr "" +#~ "GOsa zawsze zachowuje się jak admin i zarządza uprawnieniami wewnętrznie. " +#~ "Jest to obejście dopóki ACL w katalogu OpenLDAP zostaną w pełni " +#~ "zaimplementowane. Trzeba podać administracyjne DN i odpowiednie hasło." + +#~ msgid "" +#~ "Some basic LDAP parameters are tunable and affect the locations where " +#~ "GOsa saves people and groups, including the way accounts get created. " +#~ "Check the values below if the fit your needs." +#~ msgstr "" +#~ "Pewne podstawowe parametry LDAP są zmienialne i wpływają na lokalizacje " +#~ "gdzie GOsa zapisuje użytkowników i grupy razem ze sposobem w jaki konta " +#~ "są tworzone. Sprawdź wartości poniżej i dostosuj do wymagań." + +#, fuzzy +#~ msgid "" +#~ "GOsa has modular support for several mail methods. These methods provide " +#~ "interfaces to users mailboxes and general handling for quotas. You can " +#~ "choose the dummy plugin to leave all your mail settings untouched." +#~ msgstr "" +#~ "GOsa posiada modularne wsparcie dla kilku metod pocztowych. Te metody " +#~ "zapewniają interfejsy dla kont użytkowników oraz quota. Można wybrać " +#~ "sztuczny dodatek, aby pozostawić ustawienia poczty nietknięte." + +#~ msgid "Samba settings" +#~ msgstr "Ustawienia Samba" + +#~ msgid "Samba SID" +#~ msgstr "Samba SID" + +#, fuzzy +#~ msgid "RID base" +#~ msgstr "Baza" + +#, fuzzy +#~ msgid "Workstation container" +#~ msgstr "Nazwa stacji roboczej" + +#, fuzzy +#~ msgid "Samba SID mapping" +#~ msgstr "Samba SID" + +#, fuzzy +#~ msgid "Timezone" +#~ msgstr "Strefa czasowa użytkownika" + +#, fuzzy +#~ msgid "Please choose your preferred timezone here" +#~ msgstr "Preferowany język" + +#, fuzzy +#~ msgid "Additional GOsa settings" +#~ msgstr "Ustawienia Aplikacji" + +#, fuzzy +#~ msgid "Enable DNS extension" +#~ msgstr "Rozszerzenie inwentarza" + +#, fuzzy +#~ msgid "Enable DHCP extension" +#~ msgstr "Rozszerzenie inwentarza" + +#, fuzzy +#~ msgid "Enable mime type management" +#~ msgstr "Zarządzanie typami mime" + +#, fuzzy +#~ msgid "Enable FAI release management" +#~ msgstr "Zarządzanie FAI" + +#, fuzzy +#~ msgid "Enable user netatalk plugin" +#~ msgstr "Zarządzaj kontem Netatalk" + +#, fuzzy +#~ msgid "Government mode" +#~ msgstr "do folferu" + +#, fuzzy +#~ msgid "Logging options" +#~ msgstr "Nieznane" + +#, fuzzy +#~ msgid "Syslog" +#~ msgstr "Logi systemowe" + +#~ msgid "Mail settings" +#~ msgstr "Ustawienia pocztowe" + +#~ msgid "Mail method" +#~ msgstr "Typ pocztowy" + +#, fuzzy +#~ msgid "Vacation templates" +#~ msgstr "Szablon stacji roboczej" + +#, fuzzy +#~ msgid "Snapshots / Undo" +#~ msgstr "Tworzenie snapshot'u nieudane" + +#, fuzzy +#~ msgid "Enable snapshots" +#~ msgstr "Utwórz spanshot" + +#, fuzzy +#~ msgid "Snapshot base" +#~ msgstr "Tworzenie snapshot'u nieudane" + +#, fuzzy +#~ msgid "GOsa core settings" +#~ msgstr "Ustawienia pocztowe" + +#, fuzzy +#~ msgid "Disable primary group filter" +#~ msgstr "Wyświetl grupy użytkownika" + +#, fuzzy +#~ msgid "Display summary in listings" +#~ msgstr "Wyświetl makra pasujące" + +#, fuzzy +#~ msgid "Honour administrative units" +#~ msgstr "Administracja Grupą" + +#, fuzzy +#~ msgid "Smarty compile directory" +#~ msgstr "Katalog domowy" + +#, fuzzy +#~ msgid "Path for PPD storage" +#~ msgstr "Przechowywanie hasła" + +#, fuzzy +#~ msgid "Path for kiosk profile storage" +#~ msgstr "Ustawienia profilu Kiosk" + +#, fuzzy +#~ msgid "Override sudo role ou" +#~ msgstr "! nieznane id" + +#, fuzzy +#~ msgid "Mail queue script" +#~ msgstr "Ogólna ścieżka do skryptu" + +#, fuzzy +#~ msgid "Notification script" +#~ msgstr "Cel powiadomienia" + +#, fuzzy +#~ msgid "Enable edit locking" +#~ msgstr "Włącz skanowanie antyfirusowe" + +#, fuzzy +#~ msgid "Login attribute" +#~ msgstr "Atrybuty telefonu" + +#, fuzzy +#~ msgid "Warn if session is not encrypted" +#~ msgstr "Sesja nie będzie szyfrowana." + +#, fuzzy +#~ msgid "Remember dialog filter settings" +#~ msgstr "Ogólne ustawienia użytkownika" + +#, fuzzy +#~ msgid "Session lifetime" +#~ msgstr "Wykryto konflikt sesji" + +#, fuzzy +#~ msgid "Show PHP errors" +#~ msgstr "błąd PHP:" + +#, fuzzy +#~ msgid "Maximum LDAP query time" +#~ msgstr "Max rozmiar nagłówków poczty" + +#, fuzzy +#~ msgid "Debug level" +#~ msgstr "Jeden poziom" + +#, fuzzy +#~ msgid "Disabled" +#~ msgstr "wyłączone" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "włączone" + +#, fuzzy +#~ msgid "GOsa settings 1/3" +#~ msgstr "Ustawienia użytkownika" + +#, fuzzy +#~ msgid "GOsa generic settings" +#~ msgstr "Ogólne ustawienia użytkownika" + +#, fuzzy +#~ msgid "The specified value for '%s' must be a numeric value" +#~ msgstr "Port sieve musi być liczbą." + +#~ msgid "People storage ou" +#~ msgstr "Prosze wyszczególnić długość pamięci." + +#~ msgid "Group storage ou" +#~ msgstr "Proszę wybrać grupę obiektów" + +#, fuzzy +#~ msgid "Uid base must be numeric" +#~ msgstr "Limit czasu musi być liczbą" + +#, fuzzy +#~ msgid "The given password minimum length is not numeric." +#~ msgstr "Port sieve musi być liczbą." + +#, fuzzy +#~ msgid "The given password differ value is not numeric." +#~ msgstr "Port sieve musi być liczbą." + +#, fuzzy +#~ msgid "GOsa settings 2/3" +#~ msgstr "Ustawienia użytkownika" + +#, fuzzy +#~ msgid "Customize special parameters" +#~ msgstr "Sprawdź parametr" + +#, fuzzy +#~ msgid "GOsa settings 3/3" +#~ msgstr "Ustawienia użytkownika" + +#, fuzzy +#~ msgid "Session lifetime must be a numeric value!" +#~ msgstr "Przyszłe dni muszą być liczbą." + +#, fuzzy +#~ msgid "Maximum LDAP query time must be a numeric value!" +#~ msgstr "Przyszłe dni muszą być liczbą." + +#, fuzzy +#~ msgid "Write configuration file" +#~ msgstr "Plik konfiguracyjny" + +#, fuzzy +#~ msgid "Finish - write the configuration file" +#~ msgstr "Plik konfiguracyjny" + +#, fuzzy +#~ msgid "" +#~ "Your configuration file is currently world readable. Please update the " +#~ "file permissions!" +#~ msgstr "Nie można czytać pliku konfiguracji %s/gosa.conf. Kończę." + +#, fuzzy +#~ msgid "The configuration is currently not readable or it does not exists." +#~ msgstr "Nie można czytać pliku konfiguracji %s/gosa.conf. Kończę." + +#, fuzzy +#~ msgid "" +#~ "After downloading and placing the file under %s, please make sure that " +#~ "the user the webserver is running with is able to read %s, while other " +#~ "users shouldn't. You may want to execute these commands to achieve this " +#~ "requirement:" +#~ msgstr "" +#~ "Po umieszczeniu pliku w /etc/gosa upewnij się, że serwer www ma " +#~ "uprawnienia do jego odczytu, podczas gdy inni użytkownicy nie mają. Aby " +#~ "uzyskać takie uprawnienia, można wykonać te polecenia:" + +#, fuzzy +#~ msgid "Create a basic, single site configuration" +#~ msgstr "Konfiguracja bazy FAX" + +#, fuzzy +#~ msgid "Find every possible configuration error" +#~ msgstr "Plik konfiguracyjny" + +#, fuzzy +#~ msgid "To continue..." +#~ msgstr "Ustawienia trwają..." + +#~ msgid "Organization" +#~ msgstr "Organizacja" + +#~ msgid "Mail address" +#~ msgstr "Adres email" + +#, fuzzy +#~ msgid "Features" +#~ msgstr "Przyszłość" + +#, fuzzy +#~ msgid "Check again" +#~ msgstr "Sprawdź" + +#, fuzzy +#~ msgid "Move selected workstations" +#~ msgstr "Wybierz aby zobaczyc stacje robocze" + +#, fuzzy +#~ msgid "Hide changes" +#~ msgstr "Open xchange" + +#, fuzzy +#~ msgid "Show changes" +#~ msgstr "Pokaż pakiety" + +#, fuzzy +#~ msgid "Move selected users into this people tree" +#~ msgstr "Utwórz użytkownika z tego szablonu" + +#, fuzzy +#~ msgid "Create a new GOsa administrator account" +#~ msgstr "Utwórz konto Netatalk" + +#~ msgid "User ID" +#~ msgstr "Identyfikator użytkownika" + +#, fuzzy +#~ msgid "Password (again)" +#~ msgstr "Przechowywanie hasła" + +#, fuzzy +#~ msgid "Current" +#~ msgstr "Obecny obiekt" + +#, fuzzy +#~ msgid "After migration" +#~ msgstr "Administracja użytkownikami" + +#, fuzzy +#~ msgid "Refresh" +#~ msgstr "Zależności" + +#, fuzzy +#~ msgid "Welcome" +#~ msgstr "Witaj %s!" + +#, fuzzy +#~ msgid "The welcome message" +#~ msgstr "Usuń tą wiadomosc" + +#, fuzzy +#~ msgid "Welcome to GOsa setup wizard" +#~ msgstr "Witaj w instalacji GOsa!" + +#, fuzzy +#~ msgid "PHP setup configuration" +#~ msgstr "Konfiguracja bazy FAX" + +#, fuzzy +#~ msgid "show information" +#~ msgstr "Informacje osobiste" + +#, fuzzy +#~ msgid "LDAP connection" +#~ msgstr "Rozłączenie" + +#~ msgid "Location name" +#~ msgstr "Nazwa lokalizacji" + +#, fuzzy +#~ msgid "Connection URL" +#~ msgstr "Połączeniowy URL" + +#, fuzzy +#~ msgid "TLS connection" +#~ msgstr "Połączenie dzwonienia..." + +#, fuzzy +#~ msgid "Authentication" +#~ msgstr "Autentykacja Nagios" + +#~ msgid "Admin DN" +#~ msgstr "DN Administratora" + +#, fuzzy +#~ msgid "Select user" +#~ msgstr "Usuń użytkownika" + +#~ msgid "Admin password" +#~ msgstr "Hasło Administratora" + +#, fuzzy +#~ msgid "Schema based settings" +#~ msgstr "Ustawienia Samba" + +#, fuzzy +#~ msgid "Current status" +#~ msgstr "Ustaw status" + +#, fuzzy +#~ msgid "LDAP inspection" +#~ msgstr "Inspekcja instalacji PHP" + +#, fuzzy +#~ msgid "Checking for root object" +#~ msgstr "Sprawdzam wsparcie dla iconv" + +#, fuzzy +#~ msgid "Checking for invisible departments" +#~ msgstr "Sprawdzam wsparcie dla iconv" + +#, fuzzy +#~ msgid "Checking for invisible users" +#~ msgstr "Sprawdzam wsparcie dla iconv" + +#, fuzzy +#~ msgid "Checking for super administrator" +#~ msgstr "Sprawedzam dodatkowe programy" + +#, fuzzy +#~ msgid "Checking for users outside the people tree" +#~ msgstr "Sprawdzam moduł cups" + +#, fuzzy +#~ msgid "Checking for groups outside the groups tree" +#~ msgstr "Sprawdzam moduł cups" + +#, fuzzy +#~ msgid "Checking for duplicated UID numbers" +#~ msgstr "Sprawdzam funkcję %s" + +#, fuzzy +#~ msgid "Checking for duplicate GID numbers" +#~ msgstr "Sprawdzam funkcję %s" + +#, fuzzy +#~ msgid "Checking for old style USB devices" +#~ msgstr "Sprawdzam wsparcie dla iconv" + +#, fuzzy +#~ msgid "Checking for old services that have to be migrated" +#~ msgstr "Sprawdzam moduł cups" + +#, fuzzy +#~ msgid "Checking for old style application menus" +#~ msgstr "Sprawdzam funkcję %s" + +#, fuzzy +#~ msgid "LDAP query failed" +#~ msgstr "Zapytanie do bazy danych nieudane" + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'uidNumber'." +#~ msgstr "Znaleziono powtórzoną wartość dla typu rekordu '%s'." + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'gidNumber'." +#~ msgstr "Znaleziono powtórzoną wartość dla typu rekordu '%s'." + +#~ msgid "Failed" +#~ msgstr "Niepowodzenie" + +#, fuzzy +#~ msgid "Found %s groups outside the configured tree '%s'." +#~ msgstr "Zamierzasz skopiować wpis '%s'." + +#, fuzzy +#~ msgid "Move" +#~ msgstr "Tryb" + +#, fuzzy +#~ msgid "Migration error" +#~ msgstr "Utwórz" + +#, fuzzy +#~ msgid "Cannot migrate department '%s':" +#~ msgstr "Utwórz nowy departament" + +#, fuzzy +#~ msgid "Input error" +#~ msgstr "błąd PHP:" + +#, fuzzy +#~ msgid "Password error" +#~ msgstr "Hasło wygasa" + +#, fuzzy +#~ msgid "Provided passwords do not match!" +#~ msgstr "Hasła podane jako nowe i powtórzone nie zgadzają się!" + +#, fuzzy +#~ msgid "Specify a valid user ID!" +#~ msgstr "Proszę podać prawidłową nazwę użytkownika!" + +#, fuzzy +#~ msgid "Cannot move users to the requested department!" +#~ msgstr "Przejdź do domowego departamentu użytkowników" + +#, fuzzy +#~ msgid "to" +#~ msgstr "Zatrzymaj" + +#, fuzzy +#~ msgid "Group will be moved from" +#~ msgstr "Będzie możliwość odtworzenia z" + +#, fuzzy +#~ msgid "User will be moved from" +#~ msgstr "Użyj członków z" + +#, fuzzy +#~ msgid "Try to create root object" +#~ msgstr "Utwórz obiekty" + +#, fuzzy +#~ msgid "Copy '%s' to '%s' failed:" +#~ msgstr "Przenoszenie '%s' do '%s'" + +#, fuzzy +#~ msgid "Updating '%s' failed: %s" +#~ msgstr "Użytkownik bazy logowania" + +#, fuzzy +#~ msgid "License" +#~ msgstr "Linia" + +#~ msgid "All objects in this category" +#~ msgstr "Wszystkie obiekty w tej kategorii" + +#~ msgid "Unknown" +#~ msgstr "Nieznane" + +#, fuzzy +#~ msgid "Select to list objects of type '%s'." +#~ msgstr "Wybierz obiekty do dodania" + +#, fuzzy +#~ msgid "Select to list objects containig '%s'." +#~ msgstr "Zaznacz aby zobaczyć grupy zawierające użytkowników" + +#, fuzzy +#~ msgid "Select to list objects that have '%s' enabled" +#~ msgstr "Wybierz obiekty do dodania" + +#, fuzzy +#~ msgid "You have no permission to delete this object!" +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#, fuzzy +#~ msgid "You have no permission to delete the object:" +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#, fuzzy +#~ msgid "You have no permission to delete these objects:" +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#, fuzzy +#~ msgid "You have no permission to create this object!" +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#, fuzzy +#~ msgid "You have no permission to create the object:" +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#, fuzzy +#~ msgid "You have no permission to create these objects:" +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#, fuzzy +#~ msgid "You have no permission to modify this object!" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "You have no permission to modify the object:" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "You have no permission to modify these objects:" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "You have no permission to view this object!" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "You have no permission to view the object:" +#~ msgstr "Brak uprawnień do tworzenia telefonu w tym elemencie." + +#, fuzzy +#~ msgid "You have no permission to view these objects:" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "You have no permission to move this object!" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "You have no permission to move the object:" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "You have no permission to move these objects:" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "Connection information" +#~ msgstr "Informacje osobiste" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Nie można połączyć się z serwerem baz danych!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Nie można wybrać bazy danych!" + +#, fuzzy +#~ msgid "Cannot query %s database!" +#~ msgstr "Nie można wybrać bazy danych!" + +#, fuzzy +#~ msgid "The field '%s' contains a reserved keyword!" +#~ msgstr "Pole 'Fax' zawiera nieprawidłowy numer telefonu." + +#, fuzzy +#~ msgid "Command specified as %s hook for plugin '%s' does not exist!" +#~ msgstr "Polecenie '%s' podane jako CHECK dla dodatku '%s' nie istnieje." + +#, fuzzy +#~ msgid "'%s' command is invalid!" +#~ msgstr "Podana nazwa jest nieprawidłowa" + +#, fuzzy +#~ msgid "'%s' command (%s) is invalid!" +#~ msgstr "Podana nazwa jest nieprawidłowa" + +#, fuzzy +#~ msgid "Cannot execute '%s' command!" +#~ msgstr "Nie można wybrać bazy danych!" + +#, fuzzy +#~ msgid "Cannot execute '%s' command (%s)!" +#~ msgstr "Nie można wybrać bazy danych!" + +#, fuzzy +#~ msgid "Value for '%s' is too large!" +#~ msgstr "Wartość podana jako 'UID' jest za mała." + +#, fuzzy +#~ msgid "Value for '%s' is too small!" +#~ msgstr "Wartość podana jako 'UID' jest za mała." + +#, fuzzy +#~ msgid "'%s' must be %d or above!" +#~ msgstr "" +#~ "PHP musi być w wersji 4.1.0 lub wyższej z powodu używanych funkcji i " +#~ "błędów w języku PHP." + +#, fuzzy +#~ msgid "There is already an entry with this '%s' attribute in the system!" +#~ msgstr "Już istnieje osoba z takim samym loginem w bazie." + +#, fuzzy +#~ msgid "The required field '%s' is empty!" +#~ msgstr "Wymagane pole 'Nazwa' jest puste." + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters" +#~ msgstr "Pole 'Nazwa' zawiera niedozwolone znaki." + +#, fuzzy +#~ msgid "'%s' are not allowed!" +#~ msgstr "Brak uprawnień do zmiay hasła" + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters!" +#~ msgstr "Pole 'Nazwa' zawiera niedozwolone znaki." + +#, fuzzy +#~ msgid "Missing %s PHP extension!" +#~ msgstr "Rozszerzenie inwentarza" + +#, fuzzy +#~ msgid "Add %s" +#~ msgstr "Dodaj" + +#, fuzzy +#~ msgid "Delete %s" +#~ msgstr "Usuń" + +#, fuzzy +#~ msgid "Set %s" +#~ msgstr "Ustaw" + +#, fuzzy +#~ msgid "Edit..." +#~ msgstr "Edytuj" + +#, fuzzy +#~ msgid "Edit %s..." +#~ msgstr "Edytuj użytkownika" + +#, fuzzy +#~ msgid "This account has no valid %s extensions!" +#~ msgstr "To konto nie posiada poprawnych rozszerzeń GOsa." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "To konto posiada rozszerzenia posix. Można je wyłączyć klikająć poniżej." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. To disable them, you'll need to " +#~ "remove the %s settings first!" +#~ msgstr "" +#~ "To konto posiada rozszerzenia unix, Aby je wyłączyć należy najpierw " +#~ "usunąć konto Samba/Środowisko." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "To konto nie posiada rozszerzenia posix. Można je włączyć klikająć " +#~ "poniżej." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. To enable them, you'll need to add " +#~ "the %s settings first!" +#~ msgstr "" +#~ "To konto posiada rozszerzenia unix, Aby je wyłączyć należy najpierw " +#~ "usunąć konto Samba/Środowisko." + +#, fuzzy +#~ msgid "" +#~ "This account has %s features settings. To disable them, you'll need to " +#~ "add the %s settings first!" +#~ msgstr "" +#~ "To konto posiada rozszerzenia unix, Aby je wyłączyć należy najpierw " +#~ "usunąć konto Samba/Środowisko." + +#, fuzzy +#~ msgid "Add %s settings" +#~ msgstr "Ustawienia Aplikacji" + +#, fuzzy +#~ msgid "Remove %s settings" +#~ msgstr "Ustawienia Posix" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Kliknij przycisk 'Edytuj' poniżej, aby zmienić informacje w tym oknie" + +#~ msgid "January" +#~ msgstr "Styczeń" + +#~ msgid "February" +#~ msgstr "Luty" + +#~ msgid "March" +#~ msgstr "Marzec" + +#~ msgid "April" +#~ msgstr "Kwiecień" + +#~ msgid "May" +#~ msgstr "Maj" + +#~ msgid "June" +#~ msgstr "Czerwiec" + +#~ msgid "July" +#~ msgstr "Lipiec" + +#~ msgid "August" +#~ msgstr "Sierpień" + +#~ msgid "September" +#~ msgstr "Wrzesień" + +#~ msgid "October" +#~ msgstr "Październik" + +#~ msgid "November" +#~ msgstr "Listopad" + +#~ msgid "December" +#~ msgstr "Grudzień" + +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "Nazwisko" + +#, fuzzy +#~ msgid "Monday" +#~ msgstr "miesiąc" + +#, fuzzy +#~ msgid "Wednesday" +#~ msgstr "Środa" + +#, fuzzy +#~ msgid "read operation" +#~ msgstr "Opcje poczty" + +#, fuzzy +#~ msgid "modify operation" +#~ msgstr "Informacje osobiste" + +#, fuzzy +#~ msgid "delete operation" +#~ msgstr "Wybierz aby zobaczyc stacje robocze" + +#, fuzzy +#~ msgid "search operation" +#~ msgstr "Konto wygasa po" + +#, fuzzy +#~ msgid "authentication" +#~ msgstr "Autentykacja Nagios" + +#, fuzzy +#~ msgid "LDAP %s failed!" +#~ msgstr "Zapytanie do bazy danych nieudane" + +#, fuzzy +#~ msgid "LDAP operation failed!" +#~ msgstr "Zapytanie do bazy danych nieudane" + +#, fuzzy +#~ msgid "Upload failed: %s" +#~ msgstr "Użytkownik bazy logowania" + +#, fuzzy +#~ msgid "This '%s' is still in use." +#~ msgstr "Zawiera ustawienia dla tych obiektów: %s" + +#, fuzzy +#~ msgid "This '%s' is still in use by these objects: %s" +#~ msgstr "Zawiera ustawienia dla tych obiektów: %s" + +#, fuzzy +#~ msgid "Cannot open file '%s' for reading!" +#~ msgstr "Nie można otworzyć pliku '%s'." + +#, fuzzy +#~ msgid "Cannot open file '%s' for writing!" +#~ msgstr "Nie można otworzyć pliku '%s'." + +#, fuzzy +#~ msgid "Cannot delete file '%s'!" +#~ msgstr "Nie można otworzyć pliku '%s'." + +#, fuzzy +#~ msgid "Cannot create folder '%s'!" +#~ msgstr "Utwórz nowy departament" + +#, fuzzy +#~ msgid "Cannot delete folder '%s'!" +#~ msgstr "Nie można otworzyć pliku '%s'." + +#, fuzzy +#~ msgid "Checking for %s support" +#~ msgstr "Sprawdzam wsparcie dla iconv" + +#~ msgid "Delete process has been canceled by plugin '%s': %s" +#~ msgstr "Proces usuwania został anulowany przez dodatek '%s': %s" + +#~ msgid "ACL" +#~ msgstr "ACL" + +#~ msgid "References" +#~ msgstr "Zależności" + +#, fuzzy +#~ msgid "Cannot not parse XML!" +#~ msgstr "Zbyt wielu użytkowników, nie można nadać wolnego ID" + +#, fuzzy +#~ msgid "Cannot send abort event for entry %s!" +#~ msgstr "Nie można stworzyć pliku '%s'." + +#~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." +#~ msgstr "" +#~ "BŁĄD: Nie można połączyć się z serwerem LDAP. Odpowiedź serwera '%s'." + +#, fuzzy +#~ msgid "Username / UID is not unique inside the LDAP tree!" +#~ msgstr "Użytkownik /UID nie są unikalne. Proszę sprawdzić bazę LDAP." + +#, fuzzy +#~ msgid "" +#~ "Username / UID is not unique inside the LDAP tree. Please contact your " +#~ "Administrator." +#~ msgstr "Użytkownik /UID nie są unikalne. Proszę sprawdzić bazę LDAP." + +#, fuzzy +#~ msgid "" +#~ "Cannot create locking information in LDAP tree. Please contact your " +#~ "administrator!" +#~ msgstr "" +#~ "Nie można pobrać informacji o blokadach w bazie LDAP. Proszę sprawdzić " +#~ "wpis 'config' w gosa.conf!" + +#, fuzzy +#~ msgid "LDAP server returned: %s" +#~ msgstr "Serwer LDAP" + +#, fuzzy +#~ msgid "" +#~ "Found multiple locks for object to be locked. This should not happen - " +#~ "cleaning up multiple references." +#~ msgstr "" +#~ "Znaleziono wiele blokad dla obiektu do zablokowania. Taka sytuacja nie " +#~ "powinna się wydażyć - czyszczę wiele odwołań." + +#~ msgid "The size limit of %d entries is exceed!" +#~ msgstr "Limit wielkości %d elementów został przekroczony!" + +#~ msgid "" +#~ "Set the new size limit to %s and show me this message if the limit still " +#~ "exceeds" +#~ msgstr "" +#~ "Ustaw nowy limit rozmiaru na %s i pokaż ten komunikat jeśli limit wciąż " +#~ "jest przekroczony" + +#~ msgid "Configure" +#~ msgstr "Konfiguruj" + +#~ msgid "incomplete" +#~ msgstr "niepełne" + +#~ msgid "Continue anyway" +#~ msgstr "Kontynuuj mimo wszystko" + +#~ msgid "Edit anyway" +#~ msgstr "Edytuj mimo wszystko" + +#, fuzzy +#~ msgid "You're going to edit the LDAP entry/entries %s" +#~ msgstr "Zamierzasz skopiować wpis '%s'." + +#~ msgid "Entries per page" +#~ msgstr "Wpisów na stronie" + +#~ msgid "Apply filter" +#~ msgstr "Zastosuj filtr" + +#~ msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +#~ msgstr "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +#~ msgid "GOsa development snapshot (Rev %s)" +#~ msgstr "Wersja deweloperska GOsa (Rev %s)" + +#, fuzzy +#~ msgid "Cannot write to revision file!" +#~ msgstr "Nie można stworzyć pliku '%s'." + +#, fuzzy +#~ msgid "LDAP warning" +#~ msgstr "Menedżer LDAP" + +#, fuzzy +#~ msgid "Cannot get schema information from server. No schema check possible!" +#~ msgstr "" +#~ "Nie można pobrać informacji o schematach z serwera. Sprawdzenie schematów " +#~ "niemożliwe!" + +#, fuzzy +#~ msgid "Missing required object class '%s'!" +#~ msgstr "Wyświetl szablony FAI" + +#, fuzzy +#~ msgid "Class(es) available" +#~ msgstr "Plik jest dostępny" + +#~ msgid "German" +#~ msgstr "Niemiecki" + +#~ msgid "French" +#~ msgstr "Francuski" + +#~ msgid "Italian" +#~ msgstr "Włoski" + +#~ msgid "Spanish" +#~ msgstr "Hiszpański" + +#~ msgid "English" +#~ msgstr "Angielski" + +#~ msgid "Dutch" +#~ msgstr "Holenderski" + +#~ msgid "Polish" +#~ msgstr "Polski" + +#, fuzzy +#~ msgid "Chinese" +#~ msgstr "Chipset" + +#, fuzzy +#~ msgid "Vietnamese" +#~ msgstr "Imię" + +#~ msgid "Russian" +#~ msgstr "Rosyjski" + +#~ msgid "" +#~ "Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to " +#~ "exist." +#~ msgstr "" +#~ "Polecenie '%s', podane jako POSTMODIFY dla dodatku '%s' nie istnieje." + +#~ msgid "You're about to delete the snapshot '%s'." +#~ msgstr "Zamierzasz usunąć snapshot '%s'." + +#~ msgid "Restore snapshot" +#~ msgstr "Odtwórz snapshot" + +#~ msgid "Remove snapshot" +#~ msgstr "Usuń snapshot" + +#~ msgid "Y-m-d, H:i:s" +#~ msgstr "Y-m-d, H:i:s" + +#~ msgid "XML error in gosa.conf: %s at line %d" +#~ msgstr "Błąd XML w pliku gosa.conf: %s w linii %d" + +#, fuzzy +#~ msgid "Cannot bind to LDAP. Please contact the system administrator." +#~ msgstr "" +#~ "Nie można połączyć się z LDAP. Proszę skontaktować się z administratorem." + +#, fuzzy +#~ msgid "SID and/or RIDBASE missing in the configuration!" +#~ msgstr "Brak parametru SID lub/i RIDBASE w konfiguracji!" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Plik konfiguracyjny" + +#, fuzzy +#~ msgid "Copy and paste failed!" +#~ msgstr "Kreator Copy & paste" + +#, fuzzy +#~ msgid "Cannot set permission for '%s'" +#~ msgstr "Nie można stworzyć pliku '%s'." + +#, fuzzy +#~ msgid "No write permission in '%s'" +#~ msgstr "Nie można stworzyć pliku '%s'." + +#~ msgid "Paste" +#~ msgstr "Wklej" + +#, fuzzy +#~ msgid "Cannot paste" +#~ msgstr "Nie można wkleić" + +#, fuzzy +#~ msgid "" +#~ "The snapshot functionality is enabled, but the required variable '%s' is " +#~ "not set." +#~ msgstr "" +#~ "Funkcjonalność snapshot jest włączona, lecz wymagana zmienna '%s' nie " +#~ "jest skonfigurowana w gosa.conf." + +#, fuzzy +#~ msgid "You are not allowed to create a snapshot for %s." +#~ msgstr "Brak uprawnień do zmiany przekazywania poczty" + +#, fuzzy +#~ msgid "You are not allowed to restore a snapshot for %s." +#~ msgstr "Brak uprawnień do zmiany przekazywania poczty" + +#~ msgid "Restore" +#~ msgstr "Odtwórz" + +#~ msgid "Create snapshot" +#~ msgstr "Utwórz spanshot" + +#~ msgid "Create a new snapshot from this object" +#~ msgstr "Utwórz nowy snapshot z tego obiektu" + +#~ msgid "cut" +#~ msgstr "wytnij" + +#~ msgid "Cut this entry" +#~ msgstr "Wytnij ten obiekt" + +#~ msgid "copy" +#~ msgstr "kopiuj" + +#~ msgid "Copy this entry" +#~ msgstr "Kopiuj ten obiekt" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopiuj" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "wytnij" + +#, fuzzy +#~ msgid "Logging failed: %s" +#~ msgstr "Użytkownik bazy logowania" + +#, fuzzy +#~ msgid "Specified objectType is empty or invalid!" +#~ msgstr "Podana nazwa jest nieprawidłowa" + +#, fuzzy +#~ msgid "MySQL error" +#~ msgstr "błąd LDAP:" + +#, fuzzy +#~ msgid "Cannot add location to the database!" +#~ msgstr "Nie można połączyć się z serwerem baz danych!" + +#~ msgid "Go to root department" +#~ msgstr "Idź do głównego departamentu" + +#~ msgid "Root" +#~ msgstr "Główny" + +#~ msgid "Go up one department" +#~ msgstr "Idź jeden departament wyżej" + +#~ msgid "Up" +#~ msgstr "Góra" + +#~ msgid "Go to users department" +#~ msgstr "Przejdź do departamentu użytkowników" + +#~ msgid "Home" +#~ msgstr "Katalog domowy" + +#~ msgid "Reload list" +#~ msgstr "Przeładuj listę" + +#, fuzzy +#~ msgid "Choose a base" +#~ msgstr "Wybierz bazę" + +#, fuzzy +#~ msgid "Use" +#~ msgstr "Użytkownik" + +#, fuzzy +#~ msgid "Filter entries with this syntax" +#~ msgstr "Filtruj elementy z tą składnią" + +#, fuzzy +#~ msgid "Certificate is empty!" +#~ msgstr "Certyfikaty" + +#, fuzzy +#~ msgid "Cannot extract information for non PEM certificates!" +#~ msgstr "Nie można pobrać informacji o quota dla '%s'." + +#, fuzzy +#~ msgid "No valid certificate loaded!" +#~ msgstr "Nie załadowano prawidłowego certyfikatu" + +#~ msgid "XML error in guide.xml: %s at line %d" +#~ msgstr "Błąd XML w guide.xml: %s w linii %d" + +#~ msgid "No help available for this plugin." +#~ msgstr "Pomoc nie jest dostępna dla tego dodatku." + +#~ msgid "%s results for your search with the keyword %s" +#~ msgstr "%s wyników zapytania ze słowem %s" + +#~ msgid "%s%% hit rate in file %s" +#~ msgstr "%s%% trafień w pliku %s" + +#, fuzzy +#~ msgid "Manage access control lists" +#~ msgstr "Kontrola dostępu" + +#~ msgid "All categories" +#~ msgstr "Wszystkie kategorie" + +#~ msgid "Reset ACLs" +#~ msgstr "Resetuj ACL'e" + +#~ msgid "One level" +#~ msgstr "Jeden poziom" + +#~ msgid "Current object" +#~ msgstr "Obecny obiekt" + +#~ msgid "Complete subtree" +#~ msgstr "Pełne poddrzewo" + +#~ msgid "Complete subtree (permanent)" +#~ msgstr "Pełne poddrzewo (trwałe)" + +#~ msgid "Use ACL defined in role" +#~ msgstr "Użyj ACL zdefiniowanego w tej roli" + +#~ msgid "Groups" +#~ msgstr "Grupy" + +#~ msgid "Down" +#~ msgstr "W dół" + +#, fuzzy +#~ msgid "No ACL settings for this category!" +#~ msgstr "Brak ustawień ACL w tej kategorii" + +#~ msgid "Contains ACLs for these objects: %s" +#~ msgstr "Zawiera ACL'e w tych kategoriach: %s" + +#, fuzzy +#~ msgid "category ACL" +#~ msgstr "Kategoria" + +#, fuzzy +#~ msgid "Edit ACL for '%s' - scope is '%s'" +#~ msgstr "Edytuj ACL dla '%s', zakres to '%s'" + +#~ msgid "All objects in current subtree" +#~ msgstr "Wszystkie obiekty w obecnym poddrzewie" + +#, fuzzy +#~ msgid "Show/hide advanced settings" +#~ msgstr "Zaawansowane ustawienia telefonu" + +#~ msgid "Remove objects" +#~ msgstr "Usuń obiekty" + +#~ msgid "Modifyable by owner" +#~ msgstr "Modyfikowalne przez właściciela" + +#~ msgid "read" +#~ msgstr "czytanie" + +#~ msgid "write" +#~ msgstr "zapisywanie" + +#, fuzzy +#~ msgid "Complete object" +#~ msgstr "Utwórz obiekty" + +#, fuzzy +#~ msgid "Unkown ACL type '%s'!" +#~ msgstr "Nieznany wpis '%s'!" + +#~ msgid "Unknown entry '%s'!" +#~ msgstr "Nieznany wpis '%s'!" + +#, fuzzy +#~ msgid "Role: %s" +#~ msgstr "Pełniona funkcja" + +#, fuzzy +#~ msgid "unknown role" +#~ msgstr "! nieznane id" + +#~ msgid "Contains settings for these objects: %s" +#~ msgstr "Zawiera ustawienia dla tych obiektów: %s" + +#, fuzzy +#~ msgid "ACL takes effect for all users" +#~ msgstr "ACL jest prawidłowy dla wszystkich użytkowników" + +#, fuzzy +#~ msgid "Access control list" +#~ msgstr "Kontrola dostępu" + +#, fuzzy +#~ msgid "ACL roles" +#~ msgstr "ACLe" + +#, fuzzy +#~ msgid "Role name" +#~ msgstr "Zmień nazwę" + +#, fuzzy +#~ msgid "Role description" +#~ msgstr "Opis jednostki" + +#, fuzzy +#~ msgid "You are currently editing mutliple entries." +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#, fuzzy +#~ msgid "Password reset" +#~ msgstr "Hasło wygasa" + +#, fuzzy +#~ msgid "The user password was resetted, please set a new password value!" +#~ msgstr "Twoje hasło wygasło !! Proszę wybrać inne hasło" + +#~ msgid "while operating on '%s' using LDAP server '%s'" +#~ msgstr "podczas działania na '%s' używając serwera LDAP '%s'" + +#~ msgid "while operating on LDAP server %s" +#~ msgstr "podczas połączenia z serwerem LDAP '%s'" + +#~ msgid "" +#~ "This is not a valid DN: '%s'. A block for import should begin with " +#~ "'dn: ...' in line %s" +#~ msgstr "" +#~ "To nie jest poprawne DN: '%s'. Blok dla importu powinien zaczynać się " +#~ "'dn: ...' w linii %s" + +#~ msgid "" +#~ "Error while importing dn: '%s', please check your LDIF from line %s on!" +#~ msgstr "Błąd podczas importu dn: '%s', proszę sprawdzić LDIF od linii %s !" + +#~ msgid "" +#~ "Generating this page caused the PHP interpreter to raise some errors!" +#~ msgstr "Tworzenie tej strony spowodowało, że interpreter PHP zwrócił błędy!" + +#, fuzzy +#~ msgid "Send bugreport" +#~ msgstr "Nadawca" + +#~ msgid "Toggle information" +#~ msgstr "Przełącz informacje" + +#~ msgid "PHP error" +#~ msgstr "błąd PHP:" + +#~ msgid "class" +#~ msgstr "klasa" + +#~ msgid "function" +#~ msgstr "funkcja" + +#~ msgid "static" +#~ msgstr "statyczna" + +#~ msgid "method" +#~ msgstr "metoda" + +#~ msgid "Trace" +#~ msgstr "Śledzenie" + +#~ msgid "Line" +#~ msgstr "Linia" + +#~ msgid "Arguments" +#~ msgstr "Argumenty" + +#~ msgid "ACL management" +#~ msgstr "Zarządzanie ACL" + +#, fuzzy +#~ msgid "ACL Templates" +#~ msgstr "Szablony" + +#~ msgid "" +#~ "This includes all system and setup informations. Please double check if " +#~ "your really want to do this since there is no way for GOsa to get your " +#~ "data back." +#~ msgstr "" +#~ "To zawiera cały system i informacje instalacyjne. Proszę upewnić się, że " +#~ "faktycznie chcesz wykonać tą operację. Nie ma możliwości odwrócenia tego " +#~ "procesu." + +#~ msgid "" +#~ "Best thing to do before performing this action would be to save the " +#~ "current contents of your LDAP tree in a file. So - if you've done so - " +#~ "press 'Delete' to continue or 'Cancel' to abort." +#~ msgstr "" +#~ "Przed wykonaniem tej operacji zaleca się wykonanie kopii bezpieczeństwa " +#~ "drzewa LDAP. Naciśnij 'Usuń' aby kontynuować, lub 'Anuluj' aby przerwać." + +#~ msgid "List of acls" +#~ msgstr "Lista ACLi" + +#~ msgid "Summary" +#~ msgstr "Podsumowanie" + +#~ msgid "Display acls matching" +#~ msgstr "Wyświetl ACL pasujące" + +#~ msgid "Role" +#~ msgstr "Pełniona funkcja" + +#, fuzzy +#~ msgid "Edit acl role" +#~ msgstr "Edytuj makro" + +#, fuzzy +#~ msgid "Edit acl" +#~ msgstr "Edytuj klasę" + +#, fuzzy +#~ msgid "Delete acl" +#~ msgstr "Usuń klasę" + +#, fuzzy +#~ msgid "ACL role" +#~ msgstr "ACLe" + +#, fuzzy +#~ msgid "Access control roles" +#~ msgstr "Kontrola dostępu" + +#, fuzzy +#~ msgid "Edit AC roles" +#~ msgstr "ACLe" + +#, fuzzy +#~ msgid "Reset ACL" +#~ msgstr "Resetuj ACL'e" + +#~ msgid "No ACL settings for this category" +#~ msgstr "Brak ustawień ACL w tej kategorii" + +#, fuzzy +#~ msgid "ACL for these objects: %s" +#~ msgstr "Zawiera ACL'e w tych kategoriach: %s" + +#, fuzzy +#~ msgid "Edit category ACL" +#~ msgstr "Edytuj kategorie ACL'i" + +#, fuzzy +#~ msgid "Reset category ACL" +#~ msgstr "Kategoria" + +#~ msgid "Edit ACL for '%s', scope is '%s'" +#~ msgstr "Edytuj ACL dla '%s', zakres to '%s'" + +#, fuzzy +#~ msgid "Object in use" +#~ msgstr "Nazwa obiektu" + +#~ msgid "" +#~ "To change the user password use the fields below. The changes take effect " +#~ "immediately. Please memorize the new password, because the user wouldn't " +#~ "be able to login without it." +#~ msgstr "" +#~ "Aby zmienić hasło użytkownika, proszę użyć formularza poniżej. Zmiany są " +#~ "wprowadzane natychmiastowo. Proszę zapamiętać nowe hasło, gdyż bez niego " +#~ "zalogowanie będzie niemożliwe." + +#~ msgid "" +#~ "Changing the password affects your authentification on mail, proxy, samba " +#~ "and unix services." +#~ msgstr "" +#~ "Zmiana hasła jest powiązana z autentykacją do usług poczty, proxy, samba, " +#~ "oraz unix." + +#~ msgid "Repeat new password" +#~ msgstr "Powtórz nowe hasło" + +#, fuzzy +#~ msgid "Strength" +#~ msgstr "Ulica" + +#~ msgid "Set password" +#~ msgstr "Ustaw hasło" + +#~ msgid "User administration" +#~ msgstr "Administracja użytkownikami" + +#~ msgid "" +#~ "This includes all account data, system access rules, imap settings, etc. " +#~ "for this user. Please double check if your really want to do this since " +#~ "there is no way for GOsa to get your data back." +#~ msgstr "" +#~ "Operacja odnosi się do wszystkich danych dotyczących konta, dostępu, " +#~ "ustawień imap, etc dla tego użytkownika. Proszę upewnić się czy na pewno " +#~ "kontynuować, gdyż nie ma możliwości powrotu." + +#~ msgid "Creating a new user using templates" +#~ msgstr "Utwórz nowego użytkownika używając szablonów" + +#~ msgid "" +#~ "Creating a new user can be assisted by using templates. Many database " +#~ "records will be filled automatically. Choose 'none' to skip the usage of " +#~ "templates." +#~ msgstr "" +#~ "Tworzenie nowego użytkownika może być wspomagane przez szablony. Wiele " +#~ "rekordów bazy będzie automatycznie wypełnionych. Wybierz 'brak' aby " +#~ "pominąć użycie szablonów." + +#~ msgid "Template" +#~ msgstr "Szablon" + +#~ msgid "Last name" +#~ msgstr "Nazwisko" + +#~ msgid "First name" +#~ msgstr "Imię" + +#, fuzzy +#~ msgid "Manage users" +#~ msgstr "Użytkownicy domeny" + +#, fuzzy +#~ msgid "Infrastructure error" +#~ msgstr "błąd PHP:" + +#, fuzzy +#~ msgid "You have no permission to change this users password!" +#~ msgstr "Brak uprawnień do zmiany własnego hasła" + +#, fuzzy +#~ msgid "You have no permission to modify object '%s'!" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "You have no permission to use this template!" +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "user" +#~ msgstr "użytkownicy" + +#, fuzzy +#~ msgid "You have no permission to change the lock status for this user!" +#~ msgstr "Brak uprawnień do zmiany własnego hasła" + +#~ msgid "Given name" +#~ msgstr "Imię" + +#, fuzzy +#~ msgid "Applying a template" +#~ msgstr "Szablony" + +#~ msgid "List of users" +#~ msgstr "Lista użytkowników" + +#, fuzzy +#~ msgid "Show %s" +#~ msgstr "Pokaż grupy" + +#, fuzzy +#~ msgid "templates" +#~ msgstr "Szablony" + +#, fuzzy +#~ msgid "GOsa object" +#~ msgstr "Obiekt" + +#, fuzzy +#~ msgid "functional users" +#~ msgstr "Pokaż użytkowników funkcjonalnych" + +#~ msgid "Posix" +#~ msgstr "Posix" + +#, fuzzy +#~ msgid "POSIX users" +#~ msgstr "Ustawienia Posix" + +#~ msgid "Mail" +#~ msgstr "Poczta" + +#, fuzzy +#~ msgid "mail users" +#~ msgstr "Użytkownicy domeny" + +#~ msgid "Samba" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "samba users" +#~ msgstr "Użytkownicy domeny" + +#~ msgid "Proxy" +#~ msgstr "Proxy" + +#, fuzzy +#~ msgid "proxy users" +#~ msgstr "Pokaż użytkowników proxy" + +#, fuzzy +#~ msgid "Apply template" +#~ msgstr "Szablony" + +#~ msgid "GOsa" +#~ msgstr "GOsa" + +#~ msgid "Edit generic properties" +#~ msgstr "Edytuj ogólne właściwości" + +#~ msgid "Edit UNIX properties" +#~ msgstr "Edytuj właściwości UNIX" + +#~ msgid "Edit environment properties" +#~ msgstr "Edytuj właściwości Środowiska" + +#~ msgid "Edit mail properties" +#~ msgstr "Edytuj właściwości Poczty" + +#~ msgid "Edit phone properties" +#~ msgstr "Edytuj właściwości Telefonu" + +#~ msgid "Fax" +#~ msgstr "Fax" + +#~ msgid "Edit fax properies" +#~ msgstr "Edytuj właściwości Fax" + +#~ msgid "Edit samba properties" +#~ msgstr "Edytuj właściwości Samba" + +#~ msgid "Netatalk" +#~ msgstr "Netatalk" + +#~ msgid "Edit netatalk properties" +#~ msgstr "Edytuj właściwości Netatalk" + +#~ msgid "Create user from template" +#~ msgstr "Utwórz użytkownika z szablonu" + +#~ msgid "Create user with this template" +#~ msgstr "Utwórz użytkownika z tego szablonu" + +#, fuzzy +#~ msgid "inactive" +#~ msgstr "Aktywne" + +#~ msgid "active" +#~ msgstr "Aktywne" + +#~ msgid "password" +#~ msgstr "hasło" + +#, fuzzy +#~ msgid "Not allowed" +#~ msgstr "Brak uprawnień do zmiay hasła" + +#~ msgid "Delete user" +#~ msgstr "Usuń użytkownika" + +#, fuzzy +#~ msgid "Number of listed users" +#~ msgstr "Nazwa departamentu" + +#, fuzzy +#~ msgid "Cannot find group SID in your configuration!" +#~ msgstr "" +#~ "Nie można znaleźć SID tych grup ani w LDAP, ani w pliku konfiguracyjnym!" + +#~ msgid "Samba group" +#~ msgstr "Grupa Samba" + +#~ msgid "Domain admins" +#~ msgstr "Administratorzy domeny" + +#~ msgid "Domain users" +#~ msgstr "Użytkownicy domeny" + +#~ msgid "Domain guests" +#~ msgstr "Goście domeny" + +#~ msgid "Special group (%d)" +#~ msgstr "Specjalna grupa (%d)" + +#~ msgid "full access" +#~ msgstr "pełen dostęp" + +#~ msgid "allow access to these hosts" +#~ msgstr "zezwól na dostęp do tych hostów" + +#~ msgid "! unknown id" +#~ msgstr "! nieznane id" + +#, fuzzy +#~ msgid "Cannot find any SID for '%s'!" +#~ msgstr "Nie można stworzyć pliku '%s'." + +#, fuzzy +#~ msgid "Cannot find any RIDBASE for '%s'!" +#~ msgstr "Nie można stworzyć pliku '%s'." + +#, fuzzy +#~ msgid "Cannot allocate a free ID!" +#~ msgstr "Zbyt wielu użytkowników, nie można nadać wolnego ID" + +#~ msgid "Generic group settings" +#~ msgstr "Ogólne ustawienia grupy" + +#~ msgid "Samba group type" +#~ msgstr "Typ grupy Samba" + +#, fuzzy +#~ msgid "Samba domain name" +#~ msgstr "Katalog domowy Samba" + +#~ msgid "System trust" +#~ msgstr "Zaufanie systemowe" + +#~ msgid "Phone pickup group" +#~ msgstr "Grupie odbioru telefonu" + +#~ msgid "Nagios group" +#~ msgstr "Grupa nagios" + +#~ msgid "Group member" +#~ msgstr "Członek grupy" + +#~ msgid "Group administration" +#~ msgstr "Administracja Grupą" + +#~ msgid "" +#~ "This may be a primary user group. Please double check if you really want " +#~ "to do this since there is no way for GOsa to get your data back." +#~ msgstr "" +#~ "To może być podstawowa grupa użytkownika. Proszę upewnić się czy aby na " +#~ "pewno kontynuować, gdyż tej operacji nie można cofnąć." + +#~ msgid "Select systems to add" +#~ msgstr "Wybierz systemy do dodania" + +#~ msgid "Display systems of department" +#~ msgstr "Wyświetl systemy departamentu" + +#~ msgid "Display systems matching" +#~ msgstr "Wyświetl systemy pasujące" + +#~ msgid "Regular expression for matching addresses" +#~ msgstr "Wyrażenie regularne dla dopasowania adresów" + +#~ msgid "Group settings" +#~ msgstr "Ustawienia grupy" + +#~ msgid "Group name" +#~ msgstr "Nazwa grupy" + +#~ msgid "Posix name of the group" +#~ msgstr "Posixowa nazwa grupy" + +#~ msgid "Normally IDs are autogenerated, select to specify manually" +#~ msgstr "" +#~ "Zwyczajowo ID są generowane automatycznie, wybierz aby podać ręcznie" + +#~ msgid "Force GID" +#~ msgstr "Wymuś GID" + +#~ msgid "Forced ID number" +#~ msgstr "Wymuś numer ID" + +#, fuzzy +#~ msgid "group" +#~ msgstr "grupy" + +#~ msgid "Select users to add" +#~ msgstr "Wybierz użytkowników do dodania" + +#~ msgid "Search within subtree" +#~ msgstr "Szukaj wewnątrz tego poddrzewa" + +#~ msgid "Display users of department" +#~ msgstr "Wyświetl użytkowników departamentu" + +#~ msgid "Regular expression for matching user names" +#~ msgstr "Wyrażenie regularne do dopasowania nazw użytkowników" + +#~ msgid "List of groups" +#~ msgstr "Lista grup" + +#~ msgid "Select to see groups that are primary groups of users" +#~ msgstr "" +#~ "Zaznacz aby zobaczyć grupy które są podstawowymi grupami użytkowników" + +#, fuzzy +#~ msgid "primary groups" +#~ msgstr "Grupa podstawowa" + +#, fuzzy +#~ msgid "samba groups mappings" +#~ msgstr "Samba SID" + +#, fuzzy +#~ msgid "samba groups" +#~ msgstr "Grupa Samba" + +#, fuzzy +#~ msgid "application settings" +#~ msgstr "aplikacje" + +#, fuzzy +#~ msgid "application groups" +#~ msgstr "Pokaż grupy aplikacji" + +#, fuzzy +#~ msgid "mail settings" +#~ msgstr "Ustawienia pocztowe" + +#, fuzzy +#~ msgid "mail groups" +#~ msgstr "Pokaż grupy pocztowe" + +#~ msgid "Select to see normal groups that have only functional aspects" +#~ msgstr "" +#~ "Zaznacz aby zobaczyć grupy, które posiadają tylko aspekty funkcjonalne" + +#, fuzzy +#~ msgid "functional groups" +#~ msgstr "Pokaż grupy funkcjonalne" + +#~ msgid "User name of which groups are shown" +#~ msgstr "Nazwa użytkownika którego grupy są pokazane" + +#, fuzzy +#~ msgid "Number of listed groups" +#~ msgstr "Nazwa grupy" + +#~ msgid "Descriptive text for this group" +#~ msgstr "Tekst opisowy dla tej grupy" + +#~ msgid "Select to create a samba conform group" +#~ msgstr "Wybierz aby utworzyć grupę samba" + +#~ msgid "in domain" +#~ msgstr "w domenie" + +#~ msgid "Members are in a phone pickup group" +#~ msgstr "Członkowie są w grupie odbioru telefonu" + +#~ msgid "Members are in a nagios group" +#~ msgstr "Członkowie są w grupie nagios." + +#~ msgid "Trust mode" +#~ msgstr "Tryb zaufania" + +#~ msgid "Group members" +#~ msgstr "Członkowie grupy" + +#, fuzzy +#~ msgid "In all groups" +#~ msgstr "Grupa pocztowa" + +#, fuzzy +#~ msgid "Not in all groups" +#~ msgstr "Pokaż grupy pocztowe" + +#, fuzzy +#~ msgid "Locality" +#~ msgstr "Lokalizacja" + +#~ msgid "Administrative settings" +#~ msgstr "Ustawienia administracyjne" + +#, fuzzy +#~ msgid "Domain Component" +#~ msgstr "Administratorzy domeny" + +#, fuzzy +#~ msgid "Cannot find an unused tag for this administrative unit!" +#~ msgstr "" +#~ "Błąd krytyczny: Nie można znaleźć nieużywnego znacznika dla jednostki " +#~ "administracyjnej!" + +#~ msgid "Tagging '%s'." +#~ msgstr "Zaznaczanie '%s'." + +#~ msgid "Moving '%s' to '%s'" +#~ msgstr "Przenoszenie '%s' do '%s'" + +#~ msgid "FAILED to copy %s, aborting operation" +#~ msgstr "BŁĄD kopiowania %s, anulowanie operacji" + +#~ msgid "Departments" +#~ msgstr "Departamenty" + +#~ msgid "Department name" +#~ msgstr "Nazwa departamentu" + +#~ msgid "Category" +#~ msgstr "Kategoria" + +#~ msgid "State" +#~ msgstr "Stan" + +#~ msgid "Address" +#~ msgstr "Adres" + +#~ msgid "Object '%s' is already tagged" +#~ msgstr "Obiekt '%s' jest już zaznaczony" + +#~ msgid "Adding tag (%s) to object '%s'" +#~ msgstr "Dodawanie znacznika (%s) do obiektu '%s'" + +#~ msgid "Removing tag from object '%s'" +#~ msgstr "Usuwanie znacznika z obiektu '%s'" + +#~ msgid "List of departments" +#~ msgstr "Lista departamentów" + +#~ msgid "Regular expression for matching department names" +#~ msgstr "Wyrażenie regularne dla dopasowania nazw departamentów" + +#, fuzzy +#~ msgid "Country name" +#~ msgstr "Kraj" + +#, fuzzy +#~ msgid "Name of country to create" +#~ msgstr "Nazwa tworzonego poddrzewa" + +#~ msgid "Descriptive text for department" +#~ msgstr "Tekst opisujący departament" + +#~ msgid "Choose subtree to place department in" +#~ msgstr "Wybierz poddrzewo do umieszczenia departamentu" + +#~ msgid "Tag department as an independent administrative unit" +#~ msgstr "Zaznacz departament jako niezależną jednostkę administracyjną" + +#~ msgid "Processing the requested operation" +#~ msgstr "Przetwarzam zadaną operację" + +#~ msgid "" +#~ "Your browser doesn't support iframes, please use this link to perform the " +#~ "requested operation." +#~ msgstr "" +#~ "Twoja przeglądarka nie obsługuje iframes, proszę użyć tego linku aby " +#~ "wykonać żądaną operację." + +#, fuzzy +#~ msgid "You are currently moving/renaming this department." +#~ msgstr "Brak uprawnień do usunięcia tego departamentu." + +#~ msgid "Department management" +#~ msgstr "Zarządzanie departamentem" + +#~ msgid "" +#~ "This includes 'all' accounts, systems, etc. in this subtree. Please " +#~ "double check if your really want to do this since there is no way for " +#~ "GOsa to get your data back." +#~ msgstr "" +#~ "Operacja odnosi sie do 'wszystkich' kont, systemów, etc w tym poddrzewie. " +#~ "Proszę upewnić się czy kontynuować, gdyż nie ma operacji powrotu." + +#, fuzzy +#~ msgid "Name of organization" +#~ msgstr "Organizacja" + +#, fuzzy +#~ msgid "Name of organization to create" +#~ msgstr "Nazwa tworzonego poddrzewa" + +#~ msgid "Category for this subtree" +#~ msgstr "Kategoria dla tego poddrzewa" + +#~ msgid "State where this subtree is located" +#~ msgstr "Stan w którym jest umieszczone to poddrzewo" + +#~ msgid "Location of this subtree" +#~ msgstr "Lokalizacja tego poddrzewa" + +#~ msgid "Postal address of this subtree" +#~ msgstr "Kod pocztowy tego poddrzewa" + +#~ msgid "Base telephone number of this subtree" +#~ msgstr "Bazowy numer telefonu tego poddrzewa" + +#~ msgid "Base facsimile telephone number of this subtree" +#~ msgstr "Bazowy numer faxu tego poddrzewa" + +#, fuzzy +#~ msgid "Name of locality to create" +#~ msgstr "Nazwa tworzonego poddrzewa" + +#, fuzzy +#~ msgid "Manage Departments" +#~ msgstr "Departamenty" + +#~ msgid "Country" +#~ msgstr "Kraj" + +#~ msgid "Name of department" +#~ msgstr "Nazwa departamentu" + +#~ msgid "Name of subtree to create" +#~ msgstr "Nazwa tworzonego poddrzewa" + +#, fuzzy +#~ msgid "Organization name" +#~ msgstr "Organizacja" + +#~ msgid "Postal address" +#~ msgstr "Adres pocztowy" + +#~ msgid "Phone number" +#~ msgstr "Numer telefonu" + +#~ msgid "Object groups" +#~ msgstr "Grupy obiektów" + +#, fuzzy +#~ msgid "Manage object groups" +#~ msgstr "Nazwa grupy obiektów" + +#, fuzzy +#~ msgid "Windows Install" +#~ msgstr "Stacja robocza Windows" + +#~ msgid "" +#~ "Please double check if you really want to do this since there is no way " +#~ "for GOsa to get your data back." +#~ msgstr "Proszę upewnić się czy kontynuować, gdyż nie ma możliwości powrotu." + +#, fuzzy +#~ msgid "Please enter the new object group name" +#~ msgstr "Proszę podać nową nazwę." + +#~ msgid "Phone queue" +#~ msgstr "Kolejka telefoniczna" + +#, fuzzy +#~ msgid "Systems" +#~ msgstr "System" + +#~ msgid "FAI summary" +#~ msgstr "Podsumowanie FAI" + +#~ msgid "Terminals" +#~ msgstr "Terminale" + +#~ msgid "departments" +#~ msgstr "departamenty" + +#, fuzzy +#~ msgid "people" +#~ msgstr "Pokaż ludzi" + +#~ msgid "groups" +#~ msgstr "grupy" + +#~ msgid "servers" +#~ msgstr "serwery" + +#~ msgid "workstations" +#~ msgstr "stacje robocze" + +#~ msgid "terminals" +#~ msgstr "terminale" + +#~ msgid "printers" +#~ msgstr "drukarki" + +#~ msgid "phones" +#~ msgstr "telefony" + +#~ msgid "applications" +#~ msgstr "aplikacje" + +#~ msgid "too many different objects!" +#~ msgstr "za dużo różnych obiektów!" + +#~ msgid "users" +#~ msgstr "użytkownicy" + +#, fuzzy +#~ msgid "winstations" +#~ msgstr "Stacja Windows" + +#~ msgid "Non existing dn:" +#~ msgstr "Nieistniejące dn:" + +#, fuzzy +#~ msgid "You can combine two different object types at maximum, only!" +#~ msgstr "Można połączyć maksymalnie tylko 2 różne typy obiektów!" + +#~ msgid "Object group generic" +#~ msgstr "Podstawowa grupa obiektu" + +#, fuzzy +#~ msgid "Sytem trust" +#~ msgstr "Zaufanie systemowe" + +#~ msgid "Member" +#~ msgstr "Członek" + +#~ msgid "Name of the group" +#~ msgstr "Nazwa grupy" + +#~ msgid "Member objects" +#~ msgstr "Dodaj członka" + +#~ msgid "List of object groups" +#~ msgstr "Lista grupy obiektów" + +#, fuzzy +#~ msgid "user groups" +#~ msgstr "grupy" + +#, fuzzy +#~ msgid "nested groups" +#~ msgstr "Grupy obiektów" + +#, fuzzy +#~ msgid "department groups" +#~ msgstr "departamenty" + +#, fuzzy +#~ msgid "server groups" +#~ msgstr "serwery" + +#, fuzzy +#~ msgid "workstation groups" +#~ msgstr "stacje robocze" + +#, fuzzy +#~ msgid "windows workstation groups" +#~ msgstr "Pokaż stacje robocze" + +#, fuzzy +#~ msgid "terminal groups" +#~ msgstr "Pokaż grupy pocztowe" + +#, fuzzy +#~ msgid "printer groups" +#~ msgstr "Grupa podstawowa" + +#, fuzzy +#~ msgid "phone groups" +#~ msgstr "Pokaż grupy" + +#, fuzzy +#~ msgid "Number of listed object groups" +#~ msgstr "Nazwa grupy obiektów" + +#~ msgid "Display objects of department" +#~ msgstr "Wyświetl obiekty departamentu" + +#~ msgid "UNIX" +#~ msgstr "UNIX" + +#~ msgid "FAX" +#~ msgstr "FAX" + +#~ msgid "FTP" +#~ msgstr "FTP" + +#~ msgid "Thin Client" +#~ msgstr "Cienki klient" + +#~ msgid "Contents" +#~ msgstr "Zawartość" + +#~ msgid "This object has no relationship to other objects." +#~ msgstr "Ten obiekt nie posiada powiązań z innymi obiektami." + +#~ msgid "Welcome %s!" +#~ msgstr "Witaj %s!" + +#~ msgid "" +#~ "This is the GOsa main menu. You can select your tasks from the menu on " +#~ "the left, or by choosing one of the pictograms below. All changes apply " +#~ "directly to your companies LDAP server." +#~ msgstr "" +#~ "To jest główny ekran GOsa. Można wybrać zadania z menu po lewej stronie, " +#~ "lub wybierając jeden z piktogramów poniżej. Wszelkie zmiany wchodzą " +#~ "bezpośrednio do serwera LDAP." + +#~ msgid "" +#~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " +#~ "get back to the pictogram view." +#~ msgstr "" +#~ "Użyj 'Wyloguj' na górze ekranu aby zamknąć połączenie oraz 'Główne' aby " +#~ "wrócić do głównego ekranu z widokiem piktogramów." + +#~ msgid "The GOsa team" +#~ msgstr "Zespół GOsa" + +#~ msgid "Select groups to add" +#~ msgstr "Wybierz grupy do dodania" + +#~ msgid "Display groups of department" +#~ msgstr "Wyświetl grupy departamentu" + +#~ msgid "Display groups matching" +#~ msgstr "Wyświetl grupy pasujące" + +#~ msgid "Display groups of user" +#~ msgstr "Wyświetl grupy użytkownika" + +#, fuzzy +#~ msgid "Edit users POSIX settings" +#~ msgstr "Ustawienia Posix" + +#~ msgid "expired" +#~ msgstr "wygasło" + +#~ msgid "grace time active" +#~ msgstr "Czas prolongaty aktywny" + +#, fuzzy +#~ msgid "password not changeable" +#~ msgstr "aktywne, hasło niezmienialne" + +#, fuzzy +#~ msgid "password expired" +#~ msgstr "aktywne, hasło wygasło" + +#~ msgid "unconfigured" +#~ msgstr "nieskonfigurowane" + +#~ msgid "Password can't be changed up to %s days after last change" +#~ msgstr "Hasło nie może być zmienione do %s dni po ostatniej zmianie" + +#~ msgid "Password must be changed after %s days" +#~ msgstr "Hasło musi zostać zmienione po %s dniach" + +#, fuzzy +#~ msgid "Disable account after %s days of inactivity after password expiry" +#~ msgstr "Wyłącz konto po %s dniach nieaktywności po wygaśnięciu hasła" + +#, fuzzy +#~ msgid "Warn user %s days before password expiry" +#~ msgstr "Ostrzeż użytkownika na %s dni przed wygaśnięciem hasła" + +#~ msgid "Group of user" +#~ msgstr "Grupa użytkownika" + +#~ msgid "Home directory" +#~ msgstr "Katalog domowy" + +#~ msgid "UID" +#~ msgstr "UID" + +#, fuzzy +#~ msgid "shadowMin" +#~ msgstr "Shadow min" + +#, fuzzy +#~ msgid "shadowMax" +#~ msgstr "Shadow max" + +#, fuzzy +#~ msgid "shadowWarning" +#~ msgstr "Shadow ostrzeżenie" + +#, fuzzy +#~ msgid "shadowInactive" +#~ msgstr "Shadow nieaktywne" + +#~ msgid "POSIX account" +#~ msgstr "Konto POSIX" + +#~ msgid "Group ID" +#~ msgstr "ID grupy" + +#~ msgid "Force password change on login" +#~ msgstr "Wymuś zmianę hasła podczas logowania" + +#~ msgid "Shadow min" +#~ msgstr "Shadow min" + +#~ msgid "Shadow max" +#~ msgstr "Shadow max" + +#~ msgid "Shadow warning" +#~ msgstr "Shadow ostrzeżenie" + +#~ msgid "Shadow inactive" +#~ msgstr "Shadow nieaktywne" + +#~ msgid "Shadow expire" +#~ msgstr "Shadow wygasa" + +#~ msgid "System trust model" +#~ msgstr "Zaufanie do systemów" + +#, fuzzy +#~ msgid "POSIX settings" +#~ msgstr "Ustawienia Posix" + +#~ msgid "User must change password on first login" +#~ msgstr "Użytkownik musi zmienić hasło przy pierwszym logowaniu" + +#~ msgid "Password expires on" +#~ msgstr "Hasło wygasa" + +#~ msgid "Posix settings" +#~ msgstr "Ustawienia Posix" + +#~ msgid "Force UID/GID" +#~ msgstr "Wymuś UID/GID" + +#~ msgid "Group membership" +#~ msgstr "Przynależność do grup" + +#~ msgid "(Warning: more than 16 groups are not supported by NFS!)" +#~ msgstr "(Uwaga: NFS nie wspiera więcej niż 16 grup!)" + +#~ msgid "Primary group" +#~ msgstr "Grupa podstawowa" + +#~ msgid "Account" +#~ msgstr "Konto" + +#~ msgid "" +#~ "To change your personal password use the fields below. The changes take " +#~ "effect immediately. Please memorize the new password, because you " +#~ "wouldn't be able to login without it." +#~ msgstr "" +#~ "Aby zmienić własne hasło, proszę użyć formularza poniżej. Zmiany są " +#~ "wprowadzane do systemu natychmiast. Proszę zapamiętać nowe hasło, gdyż " +#~ "bez niego logowanie będzie niemożliwe." + +#~ msgid "Clear fields" +#~ msgstr "Wyczyść pola" + +#, fuzzy +#~ msgid "Change user password" +#~ msgstr "Zmień hasło" + +#~ msgid "You need to specify your current password in order to proceed." +#~ msgstr "Proszę podać obecne hasło aby kontynuować." + +#~ msgid "The password you've entered as 'New password' is empty." +#~ msgstr "Hasło które podano jako 'Nowe hasło' jest puste." + +#, fuzzy +#~ msgid "External password changer reported a problem: %s." +#~ msgstr "Zewnętrzny program do zmiany hasła zgłosił następujący problem:" + +#~ msgid "" +#~ "The password you've entered as your current password doesn't match the " +#~ "real one." +#~ msgstr "Hasło które podano jako obecne nie zgadza się z prawdziwym hasłem." + +#, fuzzy +#~ msgid "You have no permission to change your password." +#~ msgstr "Brak uprawnień do zmiany własnego hasła" + +#~ msgid "User password" +#~ msgstr "Hasło użytkownika" + +#~ msgid "" +#~ "You've successfully changed your password. Remember to change all " +#~ "programms configured to use it as well." +#~ msgstr "" +#~ "Pomyślnie zmieniono hasło. Proszę pamiętać aby zmienić również ustawienia " +#~ "w programach skonfigurowanych do używania tego hasła." + +#~ msgid "Password change not allowed" +#~ msgstr "Brak uprawnień do zmiay hasła" + +#, fuzzy +#~ msgid "You have no permission to change your password at this time" +#~ msgstr "Brak uprawnień do zmiany własnego hasła" + +#~ msgid "Personal picture" +#~ msgstr "Osobiste zdjęcie" + +#~ msgid "" +#~ "You have changed the method your password is stored in the ldap database. " +#~ "For that reason you've to enter your password at this point again. GOsa " +#~ "will then encode it with the selected method." +#~ msgstr "" +#~ "Zmieniono metodę kodowania hasła w bazie ldap. Z tego powodu należy teraz " +#~ "podać ponownie swoje hasło. GOsa zakoduje to hasło używając wybranej " +#~ "metody." + +#, fuzzy +#~ msgid "You have no permission to set your password!" +#~ msgstr "Brak uprawnień do zmiany własnego hasła" + +#~ msgid "Generic user information" +#~ msgstr "Ogólne informacje o użytkowniku" + +#~ msgid "Certificates" +#~ msgstr "Certyfikaty" + +#~ msgid "Standard certificate" +#~ msgstr "Standardowy certyfikat" + +#~ msgid "S/MIME certificate" +#~ msgstr "certyfikat S/MIME" + +#~ msgid "PKCS12 certificate" +#~ msgstr "certyfikat PKCS12" + +#~ msgid "Certificate serial number" +#~ msgstr "Nmer seryjny certyfikatu" + +#, fuzzy +#~ msgid "Edit organizational user settings" +#~ msgstr "Ustawienia Aplikacji" + +#~ msgid "female" +#~ msgstr "kobieta" + +#~ msgid "male" +#~ msgstr "mężczyzna" + +#~ msgid "Certificate is valid from %s to %s and is currently %s." +#~ msgstr "Certyfikat jest ważny od %s do %s i jest obecnie %s." + +#~ msgid "valid" +#~ msgstr "prawidłowy" + +#~ msgid "invalid" +#~ msgstr "nieprawidłowy" + +#~ msgid "No certificate installed" +#~ msgstr "Brak zainstalowanych certyfikatów" + +#, fuzzy +#~ msgid "The selected password method is no longer available." +#~ msgstr "Ta aplikacja nie jest już dostępna." + +#, fuzzy +#~ msgid "The selected password method requires initial configuration!" +#~ msgstr "Ta aplikacja nie jest już dostępna." + +#~ msgid "Homepage" +#~ msgstr "Strona domowa" + +#~ msgid "Mobile" +#~ msgstr "Komórka" + +#~ msgid "Pager" +#~ msgstr "Pager" + +#, fuzzy +#~ msgid "Cannot open certificate!" +#~ msgstr "Nie można otworzyć wybranego certyfikatu!" + +#~ msgid "Unit" +#~ msgstr "Jednostka" + +#~ msgid "House identifier" +#~ msgstr "Identyfikator budynku" + +#~ msgid "Vocation" +#~ msgstr "Wywołanie" + +#~ msgid "Last delivery" +#~ msgstr "Ostatnia dostawa" + +#~ msgid "Person locality" +#~ msgstr "Lokalizacja osoby" + +#~ msgid "Unit description" +#~ msgstr "Opis jednostki" + +#~ msgid "Subject area" +#~ msgstr "Sektor" + +#~ msgid "Functional title" +#~ msgstr "Tytuł funkcjonalny" + +#~ msgid "Public visible" +#~ msgstr "Publicznie widoczne" + +#~ msgid "Street" +#~ msgstr "Ulica" + +#~ msgid "Postal code" +#~ msgstr "Kod pocztowy" + +#~ msgid "Generic user settings" +#~ msgstr "Ogólne ustawienia użytkownika" + +#~ msgid "Surname" +#~ msgstr "Nazwisko" + +#~ msgid "User identification" +#~ msgstr "Identyfikacja użytkownika" + +#~ msgid "Personal title" +#~ msgstr "Osobisty tytuł" + +#~ msgid "Academic title" +#~ msgstr "Tytuł naukowy" + +#~ msgid "Date of birth" +#~ msgstr "Data urodzenia" + +#~ msgid "Gender" +#~ msgstr "Płeć" + +#~ msgid "Preferred language" +#~ msgstr "Preferowany język" + +#~ msgid "User picture" +#~ msgstr "Zdjęcie użytkownika" + +#~ msgid "Department number" +#~ msgstr "Numer departamentu" + +#~ msgid "Employee number" +#~ msgstr "Numer pracownika" + +#~ msgid "Employee type" +#~ msgstr "Typ pracownika" + +#~ msgid "Room number" +#~ msgstr "Numer pokoju" + +#~ msgid "Telefon number" +#~ msgstr "Numer telefonu" + +#~ msgid "Pager number" +#~ msgstr "Numer pagera" + +#~ msgid "Mobile number" +#~ msgstr "Telefon komórkowy" + +#~ msgid "Fax number" +#~ msgstr "Numer fax" + +#~ msgid "Home postal address" +#~ msgstr "Adres domowy" + +#~ msgid "Home phone number" +#~ msgstr "Numer telefonu domowego" + +#, fuzzy +#~ msgid "User password method" +#~ msgstr "Przechowywanie hasła" + +#~ msgid "User certificates" +#~ msgstr "Certyfikaty użytkownika" + +#~ msgid "User settings" +#~ msgstr "Ustawienia użytkownika" + +#~ msgid "Clear password" +#~ msgstr "Wyczyść hasło" + +#~ msgid "Set new password" +#~ msgstr "Ustaw nowe hasło" + +#~ msgid "Personal information" +#~ msgstr "Informacje osobiste" + +#~ msgid "Preferred langage" +#~ msgstr "Preferowany język" + +#~ msgid "Password storage" +#~ msgstr "Przechowywanie hasła" + +#~ msgid "Edit certificates" +#~ msgstr "Edytuj certyfikaty" + +#~ msgid "Organizational information" +#~ msgstr "Informacje organizacyjne" + +#~ msgid "Department No." +#~ msgstr "Numer departamentu" + +#~ msgid "Employee No." +#~ msgstr "Numer pracownika" + +#~ msgid "Room No." +#~ msgstr "Numer pokoju" + +#~ msgid "Change picture" +#~ msgstr "Zmień zdjęcie" + +#~ msgid "Template name" +#~ msgstr "Nazwa Szablonu" + +#~ msgid "Sex" +#~ msgstr "Płeć" + +#~ msgid "Please use the phone tab" +#~ msgstr "Proszę użyć zakładki telefony" + +#, fuzzy +#~ msgid "Start import" +#~ msgstr "Startup" + +#~ msgid "ICA client" +#~ msgstr "Klient ICA" + +#~ msgid "Printer service enabled" +#~ msgstr "Usługa drukowania włączona" + +#~ msgid "show chooser" +#~ msgstr "pokaż wybor" + +#~ msgid "direct" +#~ msgstr "bezpośredni" + +#~ msgid "load balanced" +#~ msgstr "równoważone obciążenie" diff --git a/trunk/gosa-plugins/goto/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/goto/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..202317871 --- /dev/null +++ b/trunk/gosa-plugins/goto/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,7339 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:31+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/ogroups/goto/termgroup.tpl:2 admin/devices/remove.tpl:2 +#: admin/applications/remove.tpl:2 admin/mimetypes/remove.tpl:2 +#: admin/systems/ppd/remove_ppd.tpl:2 addons/goto/remove.tpl:2 +#: personal/environment/class_environment.inc:139 +#: personal/environment/class_environment.inc:307 +#: personal/environment/class_environment.inc:360 +#: personal/environment/class_environment.inc:364 +msgid "Warning" +msgstr "Предупреждение" + +#: admin/ogroups/goto/termgroup.tpl:2 +msgid "" +"Actions you choose here influence all systems in this object group. " +"Additionally, all values editable here can be inherited by the clients " +"assigned to this object group." +msgstr "" + +#: admin/ogroups/goto/termgroup.tpl:6 +#: admin/devices/class_deviceGeneric.inc:251 +#: admin/applications/class_applicationGeneric.inc:597 +#: admin/mimetypes/generic.tpl:4 admin/mimetypes/paste_generic.tpl:4 +#: admin/mimetypes/class_mimetypeGeneric.inc:715 +#: admin/systems/goto/class_printGeneric.inc:920 +#: admin/systems/goto/class_workstationGeneric.inc:698 +msgid "Generic" +msgstr "Общее" + +#: admin/ogroups/goto/termgroup.tpl:14 +#: admin/ogroups/goto/class_termgroup.inc:145 +#: admin/systems/goto/workstation.tpl:95 +#: admin/systems/goto/class_workstationGeneric.inc:489 +#: admin/systems/goto/class_terminalGeneric.inc:480 +#: admin/systems/goto/terminal.tpl:117 +msgid "NTP server" +msgstr "Сервер NTP" + +#: admin/ogroups/goto/termgroup.tpl:17 admin/systems/goto/workstation.tpl:98 +#: admin/systems/goto/terminal.tpl:120 +msgid "Choose server to use for synchronizing time" +msgstr "Выберите сервер для синхронизации времени" + +#: admin/ogroups/goto/termgroup.tpl:47 +#: admin/ogroups/goto/class_termgroup.inc:378 +#: admin/systems/goto/workstation.tpl:55 +#: admin/systems/goto/class_terminalGeneric.inc:669 +#: admin/systems/goto/terminal.tpl:47 +msgid "Mode" +msgstr "Режим" + +#: admin/ogroups/goto/termgroup.tpl:50 admin/systems/goto/workstation.tpl:58 +#: admin/systems/goto/terminal.tpl:50 +msgid "Select terminal mode" +msgstr "Выберите режим терминала" + +#: admin/ogroups/goto/termgroup.tpl:58 +#: admin/ogroups/goto/class_termgroup.inc:379 +#: admin/systems/services/syslog/class_goSyslogServer.inc:27 +#: admin/systems/services/syslog/class_goSyslogServer.inc:47 +#: admin/systems/goto/workstation.tpl:65 +#: admin/systems/goto/class_workstationGeneric.inc:712 +#: admin/systems/goto/terminal.tpl:57 +msgid "Syslog server" +msgstr "Сервер системных журналов" + +#: admin/ogroups/goto/termgroup.tpl:61 admin/systems/goto/workstation.tpl:68 +#: admin/systems/goto/terminal.tpl:60 +msgid "Choose server to use for logging" +msgstr "Выберите сервер для ведения системных журналов" + +#: admin/ogroups/goto/termgroup.tpl:69 +#: admin/ogroups/goto/class_termgroup.inc:382 +#: admin/systems/goto/class_terminalGeneric.inc:672 +#: admin/systems/goto/terminal.tpl:76 +msgid "Root server" +msgstr "Основной сервер" + +#: admin/ogroups/goto/termgroup.tpl:72 admin/systems/goto/terminal.tpl:79 +msgid "Select NFS root filesystem to use" +msgstr "Выберите корневую файловую систему NFS" + +#: admin/ogroups/goto/termgroup.tpl:79 +#: admin/ogroups/goto/class_termgroup.inc:383 +#: admin/systems/goto/class_terminalGeneric.inc:673 +#: admin/systems/goto/terminal.tpl:86 +msgid "Swap server" +msgstr "Сервер подкачки" + +#: admin/ogroups/goto/termgroup.tpl:82 admin/systems/goto/terminal.tpl:89 +msgid "Choose NFS filesystem to place swap files on" +msgstr "Выберите файловую систему NFS для файлов подкачки" + +#: admin/ogroups/goto/termgroup.tpl:110 admin/systems/goto/workstation.tpl:130 +#: admin/systems/goto/terminal.tpl:156 addons/goto/class_gotomasses.inc:415 +msgid "Action" +msgstr "Действие" + +#: admin/ogroups/goto/termgroup.tpl:115 admin/systems/goto/workstation.tpl:137 +#: admin/systems/goto/terminal.tpl:161 +msgid "Select action to execute for this terminal" +msgstr "Выберите действие, которое нужно выполнить на этом терминале" + +#: admin/ogroups/goto/termgroup.tpl:123 admin/applications/generic.tpl:24 +#: admin/applications/class_applicationGeneric.inc:438 +#: admin/applications/class_applicationGeneric.inc:609 +#: admin/systems/goto/workstation.tpl:146 +#: admin/systems/goto/workstation.tpl:150 admin/systems/goto/terminal.tpl:169 +#: addons/goto/class_gotomasses.inc:383 +msgid "Execute" +msgstr "Выполнить" + +#: admin/ogroups/goto/class_termgroup.inc:48 +#: admin/systems/goto/class_workstationGeneric.inc:138 +#: admin/systems/goto/class_terminalGeneric.inc:122 +#, fuzzy +msgid "Activated" +msgstr "Личный" + +#: admin/ogroups/goto/class_termgroup.inc:49 +#: admin/systems/goto/class_workstationGeneric.inc:139 +#: admin/systems/goto/class_terminalGeneric.inc:121 +#: addons/goto/class_gotomasses.inc:538 +msgid "Locked" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:95 +#: admin/systems/goto/class_terminalGeneric.inc:281 +#, fuzzy +msgid "Local swap" +msgstr "Местоположение" + +#: admin/ogroups/goto/class_termgroup.inc:101 +#: admin/ogroups/goto/class_termgroup.inc:113 +#: admin/systems/goto/class_terminalStartup.inc:116 +#: admin/systems/goto/class_terminalStartup.inc:120 +#: admin/systems/goto/class_terminalService.inc:175 +#: admin/systems/goto/class_terminalService.inc:256 +#: admin/systems/goto/class_terminalService.inc:264 +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_terminalService.inc:270 +#: admin/systems/goto/class_terminalService.inc:273 +#: admin/systems/goto/class_terminalService.inc:276 +#: admin/systems/goto/class_terminalService.inc:279 +#: admin/systems/goto/class_terminalService.inc:282 +#: admin/systems/goto/class_workstationGeneric.inc:154 +#: admin/systems/goto/class_workstationStartup.inc:180 +#: admin/systems/goto/class_workstationStartup.inc:210 +#: admin/systems/goto/class_workstationService.inc:191 +#: admin/systems/goto/class_workstationService.inc:194 +#: admin/systems/goto/class_workstationService.inc:197 +#: admin/systems/goto/class_workstationService.inc:200 +#: admin/systems/goto/class_workstationService.inc:203 +#: admin/systems/goto/class_workstationService.inc:206 +#: admin/systems/goto/class_workstationService.inc:209 +#: admin/systems/goto/class_workstationService.inc:220 +#: admin/systems/goto/class_workstationService.inc:221 +#: admin/systems/goto/class_workstationService.inc:222 +#: admin/systems/goto/class_workstationService.inc:223 +#: admin/systems/goto/class_workstationService.inc:224 +#: admin/systems/goto/class_workstationService.inc:225 +#: admin/systems/goto/class_workstationService.inc:226 +#: admin/systems/goto/class_terminalGeneric.inc:137 +#: admin/systems/goto/class_terminalGeneric.inc:287 +#: admin/systems/goto/class_terminalGeneric.inc:299 +msgid "inherited" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:203 +#: admin/systems/goto/class_terminalService.inc:666 +#: admin/systems/goto/class_workstationGeneric.inc:212 +#: admin/systems/goto/class_workstationGeneric.inc:635 +#: admin/systems/goto/class_workstationStartup.inc:926 +#: admin/systems/goto/class_workstationStartup.inc:1053 +#: admin/systems/goto/class_workstationStartup.inc:1113 +#: admin/systems/goto/class_workstationService.inc:554 +#: admin/systems/goto/class_terminalGeneric.inc:187 +#: admin/systems/goto/class_terminalGeneric.inc:594 +#: addons/goto/class_gotomasses.inc:328 +#: addons/goto/class_goto_import_file.inc:124 +#, fuzzy +msgid "Service infrastructure" +msgstr "Искать в поддеревьях" + +#: admin/ogroups/goto/class_termgroup.inc:207 +#: admin/systems/goto/class_workstationGeneric.inc:216 +#: admin/systems/goto/class_terminalGeneric.inc:191 +msgid "Event error" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:208 +#: admin/systems/goto/class_workstationGeneric.inc:217 +#: admin/systems/goto/class_terminalGeneric.inc:192 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:265 +#: addons/goto/events/class_DaemonEvent_halt.inc:31 +#: addons/goto/events/class_DaemonEvent_halt.inc:32 +msgid "Switch off" +msgstr "Выключить" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:266 +#: addons/goto/events/class_DaemonEvent_reboot.inc:29 +#: addons/goto/events/class_DaemonEvent_reboot.inc:30 +msgid "Reboot" +msgstr "Перезагрузить" + +#: admin/ogroups/goto/class_termgroup.inc:258 +#, fuzzy +msgid "Instant update" +msgstr "Создать телефонный аккаунт" + +#: admin/ogroups/goto/class_termgroup.inc:259 +#, fuzzy +msgid "Scheduled update" +msgstr "Выберите режим терминала" + +#: admin/ogroups/goto/class_termgroup.inc:260 +#, fuzzy +msgid "Wake" +msgstr "Вернуть в обычный режим" + +#: admin/ogroups/goto/class_termgroup.inc:261 +#: admin/systems/goto/class_workstationGeneric.inc:300 +#: admin/systems/goto/class_workstationGeneric.inc:308 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:32 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:33 +msgid "Reinstall" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:262 +#: admin/systems/goto/class_workstationGeneric.inc:301 +#: addons/goto/events/class_DaemonEvent_rescan.inc:28 +#: addons/goto/events/class_DaemonEvent_rescan.inc:29 +#, fuzzy +msgid "Rescan hardware" +msgstr "Телефонное оборудование" + +#: admin/ogroups/goto/class_termgroup.inc:263 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:28 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:29 +#, fuzzy +msgid "Memory test" +msgstr "Память" + +#: admin/ogroups/goto/class_termgroup.inc:264 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:28 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:29 +#, fuzzy +msgid "System analysis" +msgstr "Системные журналы" + +#: admin/ogroups/goto/class_termgroup.inc:362 +#: admin/groups/apps/class_groupApplication.inc:649 +#: admin/groups/apps/class_groupApplication.inc:1330 +#: admin/groups/apps/class_groupApplication.inc:1344 +#: admin/groups/apps/class_groupApplication.inc:1358 +#: admin/devices/class_deviceGeneric.inc:196 +#: admin/applications/class_applicationParameters.inc:161 +#: admin/applications/class_applicationParameters.inc:224 +#: admin/applications/class_applicationGeneric.inc:271 +#: admin/applications/class_applicationGeneric.inc:285 +#: admin/applications/class_applicationGeneric.inc:515 +#: admin/mimetypes/class_mimetypeGeneric.inc:494 +#: admin/mimetypes/class_mimetypeGeneric.inc:506 +#: admin/mimetypes/class_mimetypeGeneric.inc:521 +#: admin/systems/services/kiosk/class_goKioskService.inc:249 +#: admin/systems/services/ldap/class_goLdapServer.inc:117 +#: admin/systems/services/ntp/class_goNtpServer.inc:98 +#: admin/systems/services/terminal/class_goTerminalServer.inc:103 +#: admin/systems/services/shares/class_goShareServer.inc:192 +#: admin/systems/services/shares/class_goShareServer.inc:261 +#: admin/systems/services/shares/class_goShareServer.inc:277 +#: admin/systems/services/shares/class_goShareServer.inc:290 +#: admin/systems/goto/class_printGeneric.inc:601 +#: admin/systems/goto/class_printGeneric.inc:885 +#: admin/systems/goto/class_terminalStartup.inc:455 +#: admin/systems/goto/class_ArpNewDevice.inc:69 +#: admin/systems/goto/class_terminalService.inc:590 +#: admin/systems/goto/class_workstationGeneric.inc:364 +#: admin/systems/goto/class_workstationGeneric.inc:596 +#: admin/systems/goto/class_workstationGeneric.inc:613 +#: admin/systems/goto/class_workstationStartup.inc:877 +#: admin/systems/goto/class_workstationService.inc:447 +#: admin/systems/goto/class_terminalGeneric.inc:353 +#: admin/systems/goto/class_terminalGeneric.inc:580 +#: personal/environment/class_environment.inc:1058 +#: personal/environment/class_environment.inc:1315 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/ogroups/goto/class_termgroup.inc:370 +#, fuzzy +msgid "System" +msgstr "Системы" + +#: admin/ogroups/goto/class_termgroup.inc:371 +#, fuzzy +msgid "System group" +msgstr "Состояние системы" + +#: admin/ogroups/goto/class_termgroup.inc:380 +#: admin/systems/goto/class_workstationGeneric.inc:716 +#: admin/systems/goto/class_terminalGeneric.inc:678 +#, fuzzy +msgid "Action flag" +msgstr "Действие" + +#: admin/ogroups/goto/class_termgroup.inc:381 +#: admin/systems/goto/class_workstationGeneric.inc:713 +#, fuzzy +msgid "Ntp server" +msgstr "Сервер NTP" + +#: admin/groups/apps/edit_entry.tpl:8 +#, fuzzy +msgid "Folder image" +msgstr "Домашняя страница" + +#: admin/groups/apps/edit_entry.tpl:12 +msgid "Could not load image." +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:14 +#: admin/systems/goto/class_gotoLpdEnabled.inc:58 +#, fuzzy +msgid "None" +msgstr "нет" + +#: admin/groups/apps/edit_entry.tpl:24 +#, fuzzy +msgid "Upload image" +msgstr "Загрузка процессора" + +#: admin/groups/apps/edit_entry.tpl:28 admin/applications/generic.tpl:142 +#: admin/systems/ppd/printerPPDDialog.tpl:21 +#: addons/goto/goto_import_file.tpl:25 +#, fuzzy +msgid "Upload" +msgstr "Загрузка процессора" + +#: admin/groups/apps/edit_entry.tpl:32 +msgid "Reset image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:33 +#, fuzzy +msgid "Reset" +msgstr "сброс" + +#: admin/groups/apps/edit_entry.tpl:40 +#: admin/applications/class_applicationGeneric.inc:557 +#, fuzzy +msgid "Application settings" +msgstr "Параметры приложения" + +#: admin/groups/apps/edit_entry.tpl:43 +#: admin/devices/class_deviceGeneric.inc:90 +#: admin/devices/class_deviceGeneric.inc:114 +#: admin/devices/class_deviceGeneric.inc:260 +#: admin/applications/class_applicationParameters.inc:193 +#: admin/applications/class_applicationGeneric.inc:430 +#: admin/applications/class_applicationGeneric.inc:434 +#: admin/applications/class_applicationGeneric.inc:606 +#: admin/applications/class_applicationGeneric.inc:610 +#: admin/mimetypes/class_mimetypeGeneric.inc:532 +#: admin/mimetypes/class_mimetypeGeneric.inc:724 +#: admin/systems/services/shares/class_goShareServer.inc:398 +#: admin/systems/services/nfs/class_servNfs.inc:199 +#: admin/systems/services/nfs/class_servNfs.inc:202 +#: admin/systems/services/nfs/class_servNfs.inc:235 +#: admin/systems/services/nfs/servnfs.tpl:9 +#: admin/systems/goto/class_printGeneric.inc:670 +#: admin/systems/goto/class_printGeneric.inc:675 +#: admin/systems/goto/class_printGeneric.inc:694 +#: admin/systems/goto/class_printGeneric.inc:929 +#: admin/systems/goto/class_ArpNewDevice.inc:46 +#: admin/systems/goto/class_workstationGeneric.inc:456 +#: admin/systems/goto/class_workstationGeneric.inc:461 +#: admin/systems/goto/class_workstationGeneric.inc:479 +#: admin/systems/goto/class_terminalGeneric.inc:446 +#: admin/systems/goto/class_terminalGeneric.inc:451 +#: admin/systems/goto/class_terminalGeneric.inc:470 +#: admin/systems/goto/class_terminalGeneric.inc:665 +#: personal/environment/class_logonManagementDialog.inc:103 +msgid "Name" +msgstr "Фамилия" + +#: admin/groups/apps/edit_entry.tpl:53 +msgid "Application options" +msgstr "Параметры приложения" + +#: admin/groups/apps/class_groupApplication.inc:381 +#: admin/groups/apps/class_groupApplication.inc:385 +#, fuzzy +msgid "Menu" +msgstr "Принтер" + +#: admin/groups/apps/class_groupApplication.inc:439 +msgid "Back" +msgstr "Назад" + +#: admin/groups/apps/class_groupApplication.inc:450 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:147 +#, fuzzy +msgid "back" +msgstr "Назад" + +#: admin/groups/apps/class_groupApplication.inc:458 +#, fuzzy +msgid "department" +msgstr "подразделения" + +#: admin/groups/apps/class_groupApplication.inc:481 +#: admin/applications/class_applicationManagement.inc:368 +#: admin/applications/class_applicationManagement.inc:449 +#: admin/applications/class_applicationGeneric.inc:127 +#, fuzzy +msgid "application" +msgstr "приложения" + +#: admin/groups/apps/class_groupApplication.inc:1146 +msgid "Not available in release." +msgstr "" + +#: admin/groups/apps/class_groupApplication.inc:1373 +#: admin/applications/class_applicationManagement.inc:24 +#: admin/mimetypes/generic.tpl:117 admin/mimetypes/generic.tpl:177 +msgid "Applications" +msgstr "Приложения" + +#: admin/groups/apps/class_groupApplication.inc:1374 +#, fuzzy +msgid "Group applications" +msgstr "Показать приложения" + +#: admin/groups/apps/class_groupApplication.inc:1381 +#: admin/applications/class_divListApplication.inc:114 +#: admin/applications/class_divListApplication.inc:150 +#: admin/applications/class_applicationGeneric.inc:603 +#: admin/mimetypes/class_mimetypeGeneric.inc:728 +msgid "Application" +msgstr "Приложение" + +#: admin/groups/apps/class_groupApplication.inc:1382 +#: admin/groups/apps/app_list.tpl:5 admin/groups/apps/app_list.tpl:53 +#: admin/systems/goto/workstationStartup.tpl:83 +#: admin/systems/goto/workstationStartup.tpl:123 +#, fuzzy +msgid "Release" +msgstr "Набор правил" + +#: admin/groups/apps/class_groupApplication.inc:1383 +#, fuzzy +msgid "Application parameter" +msgstr "Приложение" + +#: admin/groups/apps/app_list.tpl:11 +#, fuzzy +msgid "Copy menu" +msgstr "Компания" + +#: admin/groups/apps/app_list.tpl:13 +msgid "Paste menu from" +msgstr "" + +#: admin/groups/apps/app_list.tpl:17 +#, fuzzy +msgid "Delete menu" +msgstr "Удалить" + +#: admin/groups/apps/app_list.tpl:70 admin/groups/apps/app_list.tpl:74 +#, fuzzy +msgid "Folder" +msgstr "Фильтры" + +#: admin/groups/apps/app_list.tpl:82 admin/groups/apps/app_list.tpl:103 +#: admin/groups/apps/app_list.tpl:128 addons/goto/class_gotomasses.inc:432 +msgid "Move up" +msgstr "" + +#: admin/groups/apps/app_list.tpl:84 admin/groups/apps/app_list.tpl:105 +#: admin/groups/apps/app_list.tpl:130 addons/goto/class_gotomasses.inc:434 +#, fuzzy +msgid "Move down" +msgstr "Домен" + +#: admin/groups/apps/app_list.tpl:86 admin/groups/apps/app_list.tpl:107 +#: admin/groups/apps/app_list.tpl:132 +#: admin/devices/class_divListDevices.inc:100 +#: admin/applications/class_applicationParameters.inc:125 +#: admin/applications/class_divListApplication.inc:120 +#: admin/mimetypes/class_divListMimeTypes.inc:122 +#: admin/systems/goto/terminalService.tpl:212 +#: admin/systems/goto/terminalStartup.tpl:115 +#: admin/systems/goto/workstationStartup.tpl:233 +#: admin/systems/goto/printer.tpl:71 addons/goto/class_gotomasses.inc:269 +#: addons/goto/class_gotomasses.inc:376 addons/goto/class_gotomasses.inc:484 +#: addons/goto/class_gotomasses.inc:488 +#: addons/goto/events/class_DaemonEvent.inc:230 +#: personal/environment/environment.tpl:238 +msgid "Remove" +msgstr "Удалить" + +#: admin/groups/apps/app_list.tpl:88 admin/groups/apps/app_list.tpl:134 +#: admin/systems/services/shares/goShareServer.tpl:17 +#: admin/systems/goto/printer.tpl:68 addons/goto/class_gotomasses.inc:469 +#: personal/environment/environment.tpl:274 +msgid "Edit" +msgstr "Изменить" + +#: admin/groups/apps/app_list.tpl:121 +#, fuzzy +msgid "Entry" +msgstr "Редактиовать объект" + +#: admin/groups/apps/app_list.tpl:143 +#, fuzzy +msgid "add to" +msgstr "Добавить параметр" + +#: admin/groups/apps/app_list.tpl:149 admin/groups/apps/app_list.tpl:159 +#, fuzzy +msgid "Add selected applications to this folder." +msgstr "У выбранного приложения нет параметров." + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Separator" +msgstr "Имя сервера" + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Add a separator to this folder." +msgstr "У выбранного приложения нет параметров." + +#: admin/devices/class_divListDevices.inc:33 +#: admin/devices/class_divListDevices.inc:34 +#, fuzzy +msgid "List of defined devices" +msgstr "Список пользователей" + +#: admin/devices/class_divListDevices.inc:45 +#: admin/applications/class_divListApplication.inc:45 +#: admin/mimetypes/class_divListMimeTypes.inc:45 +#, fuzzy +msgid "Select all" +msgstr "Удалить" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/devices/deviceGeneric.tpl:20 admin/devices/paste_deviceGeneric.tpl:9 +#, fuzzy +msgid "Device name" +msgstr "Имя сервера" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/applications/class_divListApplication.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +msgid "Department" +msgstr "Подразделение" + +#: admin/devices/class_divListDevices.inc:52 +#: admin/devices/class_divListDevices.inc:87 +#: admin/applications/class_divListApplication.inc:52 +#: admin/applications/class_divListApplication.inc:107 +#: admin/mimetypes/class_divListMimeTypes.inc:52 +#: admin/mimetypes/class_divListMimeTypes.inc:109 +#: addons/goto/class_gotomasses.inc:365 +msgid "Actions" +msgstr "Действия" + +#: admin/devices/class_divListDevices.inc:58 +#, fuzzy +msgid "Display devices matching" +msgstr "Показать подходяшие адреса" + +#: admin/devices/class_divListDevices.inc:82 admin/devices/deviceGeneric.tpl:9 +#: admin/devices/class_deviceGeneric.inc:261 admin/applications/generic.tpl:42 +#: admin/applications/class_divListApplication.inc:90 +#: admin/applications/class_applicationGeneric.inc:607 +#: admin/mimetypes/generic.tpl:44 +#: admin/mimetypes/class_divListMimeTypes.inc:93 +#: admin/mimetypes/class_mimetypeGeneric.inc:727 +#: admin/systems/services/ldap/class_goLdapServer.inc:79 +#: admin/systems/services/ldap/class_goLdapServer.inc:82 +#: admin/systems/goto/workstation.tpl:35 +#: admin/systems/goto/class_printGeneric.inc:930 +#: admin/systems/goto/class_workstationGeneric.inc:710 +#: admin/systems/goto/class_terminalGeneric.inc:667 +#: admin/systems/goto/printer.tpl:27 admin/systems/goto/terminal.tpl:27 +#: addons/goto/class_target_list.inc:152 addons/goto/goto_import_file.tpl:41 +#: addons/goto/events/class_EventTargetAddList.inc:161 +#: addons/goto/events/class_EventTargetAddUsersList.inc:130 +msgid "Base" +msgstr "Ветка" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +#, fuzzy +msgid "Submit department" +msgstr "Показать подразделения" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit" +msgstr "" + +#: admin/devices/class_divListDevices.inc:92 +#: admin/applications/class_divListApplication.inc:111 +#: admin/mimetypes/class_divListMimeTypes.inc:114 +#: admin/systems/goto/chooser.tpl:16 addons/goto/class_gotomasses.inc:366 +msgid "Create" +msgstr "Создать" + +#: admin/devices/class_divListDevices.inc:94 +#: admin/devices/class_divListDevices.inc:131 +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/systems/goto/gotoLpdEnable.tpl:27 +#: admin/systems/goto/gotoLpdEnable.tpl:63 +#, fuzzy +msgid "Device" +msgstr "Устройства" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +#, fuzzy +msgid "edit" +msgstr "Изменить" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +#, fuzzy +msgid "Edit this entry" +msgstr "Редактиовать объект" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:136 +#, fuzzy +msgid "delete" +msgstr "Удалить" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#, fuzzy +msgid "Delete this entry" +msgstr "Удалить" + +#: admin/devices/class_divListDevices.inc:205 +#, fuzzy +msgid "Number of listed devices" +msgstr "Подразделение" + +#: admin/devices/class_divListDevices.inc:206 +#: admin/applications/class_divListApplication.inc:243 +#: admin/mimetypes/class_divListMimeTypes.inc:244 +#, fuzzy +msgid "Number of listed departments" +msgstr "Подразделение" + +#: admin/devices/remove.tpl:6 +#, fuzzy +msgid "" +"This may be used by several users/groups. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Это приложение может использоваться несколькими группами. Подумайте еще раз, " +"действительно ли вы хотите удалить его, так как GOsa не сможет отменить " +"результаты этой операции." + +#: admin/devices/remove.tpl:9 admin/applications/remove.tpl:9 +#: admin/mimetypes/remove.tpl:9 addons/goto/remove.tpl:9 +#, fuzzy +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Если вы уверены в своих действиях, нажмите на кнопку Удалить, иначе " +"нажмите Отмена." + +#: admin/devices/deviceGeneric.tpl:2 admin/devices/paste_deviceGeneric.tpl:2 +#: admin/devices/class_deviceGeneric.inc:257 +msgid "Devices" +msgstr "Устройства" + +#: admin/devices/deviceGeneric.tpl:29 admin/devices/class_deviceGeneric.inc:93 +#: admin/devices/class_deviceGeneric.inc:262 admin/applications/generic.tpl:33 +#: admin/applications/class_applicationGeneric.inc:608 +#: admin/mimetypes/generic.tpl:34 admin/mimetypes/paste_generic.tpl:21 +#: admin/mimetypes/class_mimetypeGeneric.inc:726 +#: admin/systems/services/shares/class_goShareServer.inc:400 +#: admin/systems/services/nfs/class_servNfs.inc:207 +#: admin/systems/services/nfs/servnfs.tpl:19 +#: admin/systems/goto/workstation.tpl:19 +#: admin/systems/goto/ArpNewDevice.tpl:17 +#: admin/systems/goto/class_printGeneric.inc:931 +#: admin/systems/goto/class_workstationGeneric.inc:708 +#: admin/systems/goto/class_terminalGeneric.inc:666 +#: admin/systems/goto/printer.tpl:16 admin/systems/goto/terminal.tpl:19 +#: addons/goto/class_gotomasses.inc:917 +#: personal/environment/class_logonManagementDialog.inc:111 +#: personal/environment/logonManagement.tpl:17 +msgid "Description" +msgstr "Описание" + +#: admin/devices/deviceGeneric.tpl:38 +#, fuzzy +msgid "Device type" +msgstr "Имя сервера" + +#: admin/devices/deviceGeneric.tpl:42 +#, fuzzy +msgid "Choose the device type" +msgstr "Выберите тип мыши" + +#: admin/devices/deviceGeneric.tpl:53 +#, fuzzy +msgid "Serial number" +msgstr "Телефонные номера" + +#: admin/devices/deviceGeneric.tpl:53 +#, fuzzy +msgid "(iSerial)" +msgstr "терминалы" + +#: admin/devices/deviceGeneric.tpl:63 +#, fuzzy +msgid "Vendor-ID" +msgstr "Идентификатор отправителя" + +#: admin/devices/deviceGeneric.tpl:63 +#, fuzzy +msgid "(idVendor)" +msgstr "Идентификатор отправителя" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "Product-ID" +msgstr "" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "(idProduct)" +msgstr "" + +#: admin/devices/main.inc:49 admin/devices/main.inc:51 +#, fuzzy +msgid "Hotplug device management" +msgstr "Управление подразделениями" + +#: admin/devices/class_deviceGeneric.inc:29 +msgid "Digital camera" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:30 +#, fuzzy +msgid "USB stick" +msgstr "Состояние" + +#: admin/devices/class_deviceGeneric.inc:31 +msgid "CD/DVD drive" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:98 +#: admin/devices/class_deviceGeneric.inc:100 +#, fuzzy +msgid "iSerial" +msgstr "терминалы" + +#: admin/devices/class_deviceGeneric.inc:103 +#: admin/devices/class_deviceGeneric.inc:264 +#: admin/systems/goto/class_gotoLpdEnabled.inc:51 +#, fuzzy +msgid "Serial" +msgstr "терминалы" + +#: admin/devices/class_deviceGeneric.inc:106 +#, fuzzy +msgid "Vendor ID" +msgstr "Идентификатор отправителя" + +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/applications/class_applicationGeneric.inc:264 +#: admin/applications/class_applicationGeneric.inc:338 +#: admin/applications/class_applicationGeneric.inc:370 +#: admin/applications/class_applicationGeneric.inc:375 +#: admin/applications/class_applicationGeneric.inc:380 +#: admin/applications/class_applicationGeneric.inc:384 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: admin/systems/services/kiosk/class_goKioskService.inc:161 +#: admin/systems/services/kiosk/class_goKioskService.inc:164 +#: admin/systems/services/kiosk/class_goKioskService.inc:234 +#: admin/systems/services/shares/class_goShareServer.inc:98 +#: admin/systems/services/shares/class_goShareServer.inc:233 +#: admin/systems/services/nfs/class_servNfs.inc:43 +#: admin/systems/services/nfs/class_servNfs.inc:46 +#: admin/systems/goto/class_printGeneric.inc:435 +#: admin/systems/goto/class_printGeneric.inc:482 +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#: admin/systems/goto/class_printGeneric.inc:1008 +#: admin/systems/goto/class_printGeneric.inc:1019 +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:234 +#: admin/systems/goto/class_workstationStartup.inc:247 +#: admin/systems/goto/class_workstationStartup.inc:324 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#: addons/goto/class_gotoLogView.inc:57 addons/goto/class_gotoLogView.inc:175 +#: addons/goto/class_gotomasses.inc:174 addons/goto/class_gotomasses.inc:524 +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:691 +#: addons/goto/class_gotomasses.inc:735 addons/goto/class_gotomasses.inc:739 +#: addons/goto/class_gotomasses.inc:775 addons/goto/class_gotomasses.inc:816 +#: personal/environment/class_environment.inc:591 +#: personal/environment/class_environment.inc:673 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#: personal/environment/class_environment.inc:841 +#: personal/environment/class_environment.inc:892 +#: personal/environment/class_environment.inc:988 +msgid "Error" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Device generic" +msgstr "Имя сервера" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Hotplug" +msgstr "Дисковод" + +#: admin/devices/class_deviceGeneric.inc:263 +#: admin/systems/services/shares/class_goShareServer.inc:401 +#: admin/systems/services/nfs/class_servNfs.inc:193 +#: admin/systems/services/nfs/servnfs.tpl:56 +#: admin/systems/goto/terminalService.tpl:48 +#: admin/systems/goto/terminalService.tpl:138 +#: admin/systems/goto/workstationService.tpl:54 +#: admin/systems/goto/workstationService.tpl:156 +#: admin/systems/goto/gotoLpdEnable.tpl:53 +msgid "Type" +msgstr "Тип" + +#: admin/devices/class_deviceGeneric.inc:265 +#, fuzzy +msgid "Vendor" +msgstr "Идентификатор отправителя" + +#: admin/devices/class_deviceGeneric.inc:266 +#, fuzzy +msgid "Device ID" +msgstr "Устройства" + +#: admin/devices/class_deviceManagement.inc:7 +#: personal/environment/class_environment.inc:1783 +#: personal/environment/environment.tpl:293 +#, fuzzy +msgid "Hotplug devices" +msgstr "Дисковод" + +#: admin/devices/class_deviceManagement.inc:8 +#, fuzzy +msgid "Manage hotplug devices" +msgstr "Дисковод" + +#: admin/devices/class_deviceManagement.inc:246 +#: admin/applications/class_applicationManagement.inc:352 +#: admin/mimetypes/class_mimetypeManagement.inc:360 +#: addons/goto/class_gotomasses.inc:230 +#, fuzzy +msgid "Permission" +msgstr "Права для членов группы" + +#: admin/devices/class_deviceManagement.inc:263 +#: admin/devices/class_deviceManagement.inc:345 +#, fuzzy +msgid "device" +msgstr "Устройства" + +#: admin/devices/class_deviceManagement.inc:296 +#: admin/devices/class_deviceManagement.inc:352 +#: admin/devices/class_deviceManagement.inc:381 +#: admin/applications/class_applicationManagement.inc:401 +#: admin/applications/class_applicationManagement.inc:456 +#: admin/applications/class_applicationManagement.inc:487 +#: admin/mimetypes/class_mimetypeManagement.inc:412 +#: admin/mimetypes/class_mimetypeManagement.inc:466 +#: admin/mimetypes/class_mimetypeManagement.inc:496 +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#: personal/environment/class_environment.inc:583 +#, fuzzy +msgid "Permission error" +msgstr "Права для членов группы" + +#: admin/applications/remove.tpl:6 admin/mimetypes/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"Это приложение может использоваться несколькими группами. Подумайте еще раз, " +"действительно ли вы хотите удалить его, так как GOsa не сможет отменить " +"результаты этой операции." + +#: admin/applications/release_select.tpl:2 +#: admin/mimetypes/release_select.tpl:2 +#, fuzzy +msgid "Branches" +msgstr "Отмена" + +#: admin/applications/release_select.tpl:8 +#: admin/mimetypes/release_select.tpl:8 +#, fuzzy +msgid "Current release" +msgstr "Текущий пароль" + +#: admin/applications/class_applicationParameters.inc:53 +msgid "Remove options" +msgstr "Удалить параметры" + +#: admin/applications/class_applicationParameters.inc:53 +#: admin/applications/class_applicationParameters.inc:55 +#, fuzzy +msgid "parameter" +msgstr "Параметры загрузки" + +#: admin/applications/class_applicationParameters.inc:55 +msgid "Create options" +msgstr "Создать параметры" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Variable" +msgstr "Переменная" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Default value" +msgstr "По умолчанию" + +#: admin/applications/class_applicationParameters.inc:131 +msgid "Add option" +msgstr "Добавить параметр" + +#: admin/applications/class_applicationParameters.inc:236 +#, fuzzy +msgid "Parameter" +msgstr "Параметры загрузки" + +#: admin/applications/class_applicationParameters.inc:237 +#, fuzzy +msgid "Parameter configuration" +msgstr "Базы данных" + +#: admin/applications/class_applicationParameters.inc:245 +#, fuzzy +msgid "Application parameter settings" +msgstr "Приложение" + +#: admin/applications/generic.tpl:7 admin/applications/generic.tpl:10 +#: admin/applications/class_divListApplication.inc:51 +#: admin/applications/class_applicationGeneric.inc:561 +msgid "Application name" +msgstr "Приложение" + +#: admin/applications/generic.tpl:15 +msgid "Display name" +msgstr "Отображаемое имя" + +#: admin/applications/generic.tpl:19 +#: admin/applications/class_applicationGeneric.inc:566 +msgid "Application name to be displayed (i.e. below icons)" +msgstr "" +"Имя приложения, которое будет показано пользователям (например, под " +"пиктограммами)" + +#: admin/applications/generic.tpl:28 +msgid "Path and/or binary name of application" +msgstr "Путь и/или имя исполняемого файла приложения" + +#: admin/applications/generic.tpl:45 admin/mimetypes/generic.tpl:47 +msgid "Choose subtree to place application in" +msgstr "Выберите ветку, куда нужно поместить приложение" + +#: admin/applications/generic.tpl:52 admin/mimetypes/generic.tpl:53 +#: admin/systems/goto/workstation.tpl:43 admin/systems/goto/printer.tpl:35 +#: admin/systems/goto/terminal.tpl:36 +#, fuzzy +msgid "Select a base" +msgstr "Выберите, чтобы просмотреть серверы" + +#: admin/applications/generic.tpl:66 +#: admin/applications/class_applicationGeneric.inc:611 +#: admin/mimetypes/generic.tpl:67 +#: admin/mimetypes/class_mimetypeGeneric.inc:730 +msgid "Icon" +msgstr "Пиктограмма" + +#: admin/applications/generic.tpl:82 admin/mimetypes/generic.tpl:84 +msgid "Update" +msgstr "Обновить" + +#: admin/applications/generic.tpl:82 +msgid "Reload picture from LDAP" +msgstr "Обновить изображение с LDAP" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture" +msgstr "Удалить изображение" + +#: admin/applications/generic.tpl:85 +#, fuzzy +msgid "Remove picture from LDAP" +msgstr "Обновить изображение с LDAP" + +#: admin/applications/generic.tpl:96 +#: admin/systems/goto/class_gotoLpdEnabled.inc:156 +#: admin/systems/goto/gotoLpdEnable.tpl:79 +#: admin/systems/ppd/printerPPDDialog.tpl:28 +msgid "Options" +msgstr "Параметры" + +#: admin/applications/generic.tpl:103 +#: admin/applications/class_applicationGeneric.inc:614 +msgid "Only executable for members" +msgstr "Разрешено для выполнения только членам группы" + +#: admin/applications/generic.tpl:108 +#: admin/applications/class_applicationGeneric.inc:618 +msgid "Replace user configuration on startup" +msgstr "Заменять настройки пользователя при запуске" + +#: admin/applications/generic.tpl:114 +#: admin/applications/class_applicationGeneric.inc:615 +msgid "Place icon on members desktop" +msgstr "Помещать пиктограмму на рабочие столы членов группы" + +#: admin/applications/generic.tpl:119 +#: admin/applications/class_applicationGeneric.inc:617 +msgid "Place entry in members startmenu" +msgstr "Помещать членам группы соответствующий элемент в меню запуска" + +#: admin/applications/generic.tpl:124 +#: admin/applications/class_applicationGeneric.inc:616 +#, fuzzy +msgid "Place entry in members launch bar" +msgstr "Помещать членам группы соответствующий элемент в меню запуска" + +#: admin/applications/generic.tpl:134 +#: personal/environment/logonManagement.tpl:55 +#, fuzzy +msgid "Script" +msgstr "Путь к сценариям" + +#: admin/applications/generic.tpl:139 addons/goto/goto_import_file.tpl:84 +#: addons/goto/class_gotomasses.inc:375 +#: addons/goto/class_goto_import_file.inc:29 +#: addons/goto/class_goto_import_file.inc:89 +#: addons/goto/class_goto_import_file.inc:131 +#: personal/environment/logonManagement.tpl:65 +msgid "Import" +msgstr "Импортировать" + +#: admin/applications/generic.tpl:144 +#, fuzzy +msgid "Download" +msgstr "Домен" + +#: admin/applications/class_applicationManagement.inc:25 +#: personal/environment/class_environment.inc:10 +msgid "This does something" +msgstr "Что-то будет" + +#: admin/applications/class_divListApplication.inc:25 +#, fuzzy +msgid "List of Applications" +msgstr "Список приложений" + +#: admin/applications/class_divListApplication.inc:26 +#, fuzzy +msgid "This table displays all applications in the selected tree." +msgstr "Приложение с таким именем уже существует." + +#: admin/applications/class_divListApplication.inc:58 +#: personal/environment/hotplugDialog.tpl:43 +msgid "Display users matching" +msgstr "Фильтр" + +#: admin/applications/class_divListApplication.inc:199 +#: admin/mimetypes/class_divListMimeTypes.inc:198 +msgid "Freezed" +msgstr "" + +#: admin/applications/class_divListApplication.inc:242 +#, fuzzy +msgid "Number of listed applications" +msgstr "Используемые приложения" + +#: admin/applications/main.inc:48 admin/applications/main.inc:50 +msgid "Application management" +msgstr "Управление приложениями" + +#: admin/applications/class_applicationGeneric.inc:95 +#, fuzzy +msgid "no example" +msgstr "не полный" + +#: admin/applications/class_applicationGeneric.inc:264 +#, fuzzy, php-format +msgid "Cannot remove application - it is still in use by these objects: %s" +msgstr "У вас недостаточно прав для удаления этого группового объекта!" + +#: admin/applications/class_applicationGeneric.inc:370 +#, fuzzy +msgid "no read permission" +msgstr "Права для членов группы" + +#: admin/applications/class_applicationGeneric.inc:375 +msgid "cannot resize image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:380 +msgid "cannot convert image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:384 +#, fuzzy, php-format +msgid "cannot save image to '%s'" +msgstr "Удалить" + +#: admin/applications/class_applicationGeneric.inc:413 +#, fuzzy +msgid "Execute path" +msgstr "Выполнить" + +#: admin/applications/class_applicationGeneric.inc:598 +#, fuzzy +msgid "Application generic" +msgstr "Приложение" + +#: admin/applications/class_applicationGeneric.inc:612 +#, fuzzy +msgid "Script content" +msgstr "Путь к сценариям" + +#: admin/mimetypes/class_mimetypeManagement.inc:24 +#: admin/mimetypes/class_mimetypeGeneric.inc:721 +#, fuzzy +msgid "Mime types" +msgstr "Тип" + +#: admin/mimetypes/class_mimetypeManagement.inc:25 +#, fuzzy +msgid "Manage mime types" +msgstr "Системы" + +#: admin/mimetypes/class_mimetypeManagement.inc:378 +#: admin/mimetypes/class_mimetypeManagement.inc:459 +#: admin/mimetypes/generic.tpl:12 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:116 +#: admin/mimetypes/class_divListMimeTypes.inc:152 +#: admin/mimetypes/paste_generic.tpl:13 +#, fuzzy +msgid "Mime type" +msgstr "Тип" + +#: admin/mimetypes/generic.tpl:16 admin/mimetypes/paste_generic.tpl:16 +#, fuzzy +msgid "Please enter a name for the mime type here" +msgstr "Введите корректный номер телефона!" + +#: admin/mimetypes/generic.tpl:22 +#: admin/mimetypes/class_mimetypeGeneric.inc:725 +#, fuzzy +msgid "Mime group" +msgstr "Основная группа" + +#: admin/mimetypes/generic.tpl:26 +#, fuzzy +msgid "Categorize this mime type" +msgstr "Категория этой ветки" + +#: admin/mimetypes/generic.tpl:38 +#, fuzzy +msgid "Please specify a description" +msgstr "Введите корректное имя пользователя!" + +#: admin/mimetypes/generic.tpl:69 admin/mimetypes/generic.tpl:72 +#, fuzzy +msgid "Mime icon" +msgstr "Основная группа" + +#: admin/mimetypes/generic.tpl:85 +msgid "Update mime type icon" +msgstr "" + +#: admin/mimetypes/generic.tpl:99 +msgid "Left click" +msgstr "" + +#: admin/mimetypes/generic.tpl:104 +#: admin/mimetypes/class_mimetypeGeneric.inc:731 +#, fuzzy +msgid "File patterns" +msgstr "Фильтры" + +#: admin/mimetypes/generic.tpl:110 +#, fuzzy +msgid "Please specify a new file pattern" +msgstr "Введите корректное имя пользователя!" + +#: admin/mimetypes/generic.tpl:113 +msgid "Add a new file pattern" +msgstr "" + +#: admin/mimetypes/generic.tpl:129 admin/mimetypes/generic.tpl:189 +#, fuzzy +msgid "Enter an application name here" +msgstr "Приложение" + +#: admin/mimetypes/generic.tpl:132 admin/mimetypes/generic.tpl:193 +#, fuzzy +msgid "Add application" +msgstr "приложения" + +#: admin/mimetypes/generic.tpl:143 +msgid "Embedding" +msgstr "" + +#: admin/mimetypes/generic.tpl:156 +msgid "Show file in embedded viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:163 +msgid "Show file in external viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:170 +msgid "Ask whether to save to local disk" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:27 +#: admin/mimetypes/class_divListMimeTypes.inc:28 +#, fuzzy +msgid "List of defined mime types" +msgstr "Готовые \"черные списки\"" + +#: admin/mimetypes/class_divListMimeTypes.inc:58 +#, fuzzy +msgid "Display mime types matching" +msgstr "Показать совпадения номеров" + +#: admin/mimetypes/class_divListMimeTypes.inc:243 +#, fuzzy +msgid "Number of listed mimetypes" +msgstr "Готовые \"черные списки\"" + +#: admin/mimetypes/paste_generic.tpl:24 +#, fuzzy +msgid "Please specify a description for this mime type here" +msgstr "Укажите корректный номер телефона." + +#: admin/mimetypes/main.inc:48 admin/mimetypes/main.inc:50 +#, fuzzy +msgid "Mimetype management" +msgstr "Управление системами" + +#: admin/mimetypes/class_mimetypeGeneric.inc:535 +#, fuzzy +msgid "File pattern" +msgstr "Фильтры" + +#: admin/mimetypes/class_mimetypeGeneric.inc:716 +#, fuzzy +msgid "Mime type generic" +msgstr "Тип" + +#: admin/mimetypes/class_mimetypeGeneric.inc:729 +#, fuzzy +msgid "Left click action" +msgstr "Создать приложения" + +#: admin/mimetypes/class_mimetypeGeneric.inc:732 +#, fuzzy +msgid "Embedded applications" +msgstr "Используемые приложения" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#, fuzzy +msgid "Print Service" +msgstr "Служба печати" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +#, fuzzy +msgid "enabled" +msgstr "отключен" + +#: admin/systems/services/cups/class_goCupsServer.inc:27 +#: admin/systems/services/cups/class_goCupsServer.inc:48 +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/goto/info.tpl:124 +msgid "Print service" +msgstr "Служба печати" + +#: admin/systems/services/cups/class_goCupsServer.inc:68 +#, fuzzy +msgid "Cups" +msgstr "группы" + +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/services/shares/class_goShareServer.inc:390 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/cups/class_goCupsServer.inc:77 +#: admin/systems/services/syslog/class_goLogDBServer.inc:101 +#, fuzzy +msgid "Start" +msgstr "Запуск" + +#: admin/systems/services/cups/class_goCupsServer.inc:78 +#: admin/systems/services/syslog/class_goLogDBServer.inc:102 +msgid "Stop" +msgstr "" + +#: admin/systems/services/cups/class_goCupsServer.inc:79 +#: admin/systems/services/syslog/class_goLogDBServer.inc:103 +#, fuzzy +msgid "Restart" +msgstr "Повторить" + +#: admin/systems/services/kiosk/class_goKioskService.inc:34 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:206 +#, fuzzy +msgid "Kiosk profile service" +msgstr "Почтовые настройки пользователя" + +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: personal/environment/class_environment.inc:1784 +#: personal/environment/environment.tpl:124 +#: personal/environment/environment.tpl:160 +msgid "Kiosk profile" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:269 +msgid "Kiosk" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/kiosk/goKioskService.tpl:1 +#, fuzzy +msgid "Kiosk profile management" +msgstr "Управление системами" + +#: admin/systems/services/kiosk/goKioskService.tpl:16 +#, fuzzy +msgid "Server path" +msgstr "Имя сервера" + +#: admin/systems/services/kiosk/goKioskService.tpl:23 +#: addons/goto/goto_import_file.tpl:24 +msgid "Browse" +msgstr "Просмотр" + +#: admin/systems/services/ldap/goLdapServer.tpl:1 +#: admin/systems/services/ldap/class_goLdapServer.inc:30 +#: admin/systems/services/ldap/class_goLdapServer.inc:68 +#, fuzzy +msgid "LDAP service" +msgstr "LDAP-сервер" + +#: admin/systems/services/ldap/goLdapServer.tpl:2 +msgid "LDAP URI" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:35 +msgid "fill-in-your-servers-dns-name" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:128 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +msgid "Ldap" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:137 +#, fuzzy +msgid "Ldap base" +msgstr "Сервер подкачки" + +#: admin/systems/services/ntp/goNtpServer.tpl:2 +#, fuzzy +msgid "Time server" +msgstr "Сервисы" + +#: admin/systems/services/ntp/class_goNtpServer.inc:28 +#: admin/systems/services/ntp/class_goNtpServer.inc:74 +#, fuzzy +msgid "Time service (NTP)" +msgstr "Сервисы" + +#: admin/systems/services/ntp/class_goNtpServer.inc:114 +#, fuzzy +msgid "Time service" +msgstr "Сервисы" + +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#, fuzzy +msgid "Time service - NTP" +msgstr "Сервисы" + +#: admin/systems/services/ntp/class_goNtpServer.inc:123 +#, fuzzy +msgid "Ntp source" +msgstr "Звук" + +#: admin/systems/services/terminal/goTerminalServer.tpl:4 +#: admin/systems/services/terminal/class_goTerminalServer.inc:26 +#: admin/systems/services/terminal/class_goTerminalServer.inc:76 +#: admin/systems/services/terminal/class_goTerminalServer.inc:164 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/goto/class_terminalService.inc:679 +#, fuzzy +msgid "Terminal service" +msgstr "Терминальный сервер" + +#: admin/systems/services/terminal/goTerminalServer.tpl:8 +#: admin/systems/services/terminal/class_goTerminalServer.inc:173 +#, fuzzy +msgid "Temporary disable login" +msgstr "Временно отключить использование факса" + +#: admin/systems/services/terminal/goTerminalServer.tpl:13 +msgid "Supported session types" +msgstr "" + +#: admin/systems/services/shares/goShareServer.tpl:1 +#: admin/systems/goto/class_terminalStartup.inc:543 +#: admin/systems/goto/class_workstationStartup.inc:1021 +#: admin/systems/goto/terminalStartup.tpl:91 +#: admin/systems/goto/workstationStartup.tpl:209 +#: personal/environment/class_environment.inc:1782 +#: personal/environment/environment.tpl:212 +#, fuzzy +msgid "Shares" +msgstr "сброс" + +#: admin/systems/services/shares/class_goShareServer.inc:31 +#: admin/systems/services/shares/class_goShareServer.inc:157 +#: admin/systems/services/shares/class_goShareServer.inc:389 +#, fuzzy +msgid "File service (Shares)" +msgstr "Сервер" + +#: admin/systems/services/shares/class_goShareServer.inc:233 +#, fuzzy +msgid "share" +msgstr "сброс" + +#: admin/systems/services/shares/class_goShareServer.inc:390 +#, fuzzy +msgid "File service - Shares" +msgstr "Сервер" + +#: admin/systems/services/shares/class_goShareServer.inc:399 +msgid "Apple mounts" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:402 +#, fuzzy +msgid "Charset" +msgstr "сброс" + +#: admin/systems/services/shares/class_goShareServer.inc:403 +#: admin/systems/services/nfs/class_servNfs.inc:179 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Path" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:404 +#: admin/systems/services/nfs/class_servNfs.inc:215 +#: admin/systems/services/nfs/servnfs.tpl:121 +#, fuzzy +msgid "Option" +msgstr "Параметры" + +#: admin/systems/services/shares/class_goShareServer.inc:405 +#: admin/systems/services/nfs/class_servNfs.inc:211 +#: admin/systems/services/nfs/servnfs.tpl:29 +#, fuzzy +msgid "Volume" +msgstr "Имя системы" + +#: admin/systems/services/nfs/class_servNfs.inc:184 +msgid "'Path / Volume' must be of format 'server:port'!" +msgstr "" + +#: admin/systems/services/nfs/class_servNfs.inc:188 +msgid "'Path / Volume' must contain at least one '/'!" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:1 +#, fuzzy +msgid "Edit share" +msgstr "Пользователи домена" + +#: admin/systems/services/nfs/servnfs.tpl:2 +msgid "NFS setup" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:39 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:201 +#: addons/goto/events/class_EventTargetAddList.inc:238 +#: personal/environment/environment.tpl:135 +msgid "Server" +msgstr "Сервер" + +#: admin/systems/services/nfs/servnfs.tpl:69 +msgid "Auto-mount share on Apple systems" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:109 +#, fuzzy +msgid "Codepage" +msgstr "Домашняя страница" + +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +#, fuzzy +msgid "Syslog Service" +msgstr "Сервер системных журналов" + +#: admin/systems/services/syslog/class_goSyslogServer.inc:68 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#, fuzzy +msgid "Logging service" +msgstr "Служба печати" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:31 +#: admin/systems/services/syslog/class_goLogDBServer.inc:59 +#, fuzzy +msgid "Syslog service database" +msgstr "Сервер системных журналов" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:69 +#: admin/systems/goto/class_printGeneric.inc:908 +#: addons/goto/events/class_EventTargetAddUsersList.inc:171 +msgid "User" +msgstr "Пользователь" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:72 +#: admin/systems/services/syslog/class_goLogDBServer.inc:105 +#: admin/systems/services/syslog/goLogDBServer.tpl:20 +msgid "Password" +msgstr "Пароль" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:75 +#: admin/systems/services/syslog/class_goLogDBServer.inc:106 +#: admin/systems/services/syslog/goLogDBServer.tpl:4 +#, fuzzy +msgid "Database" +msgstr "Дата" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:92 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +#, fuzzy +msgid "Logging database" +msgstr "база пользователя" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:104 +#, fuzzy +msgid "Admin" +msgstr "DN администратора" + +#: admin/systems/services/syslog/goLogDBServer.tpl:1 +#, fuzzy +msgid "Logging database information" +msgstr "база пользователя" + +#: admin/systems/services/syslog/goLogDBServer.tpl:12 +msgid "Logging DB user" +msgstr "" + +#: admin/systems/goto/workstation.tpl:1 admin/systems/goto/terminal.tpl:1 +msgid "Properties" +msgstr "Свойства" + +#: admin/systems/goto/workstation.tpl:8 +msgid "Workstation template" +msgstr "Шаблон рабочей станции" + +#: admin/systems/goto/workstation.tpl:10 +#: admin/systems/goto/class_workstationGeneric.inc:707 +msgid "Workstation name" +msgstr "Имя рабочий станции" + +#: admin/systems/goto/workstation.tpl:27 +#: admin/systems/goto/class_printGeneric.inc:932 +#: admin/systems/goto/class_workstationGeneric.inc:709 +msgid "Location" +msgstr "Местоположение" + +#: admin/systems/goto/workstation.tpl:38 admin/systems/goto/terminal.tpl:31 +msgid "Choose subtree to place group in" +msgstr "Выберите ветку для группы" + +#: admin/systems/goto/workstation.tpl:87 admin/systems/goto/workstation.tpl:90 +#: admin/systems/goto/terminal.tpl:109 admin/systems/goto/terminal.tpl:112 +msgid "Inherit time server attributes" +msgstr "" + +#: admin/systems/goto/workstation.tpl:160 +#, fuzzy +msgid "Inherit all values from group" +msgstr "Список групп" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:3 +#: personal/environment/selectPrinterDialog.tpl:5 +#: personal/environment/selectPrinterDialog.tpl:10 +#, fuzzy +msgid "Select printer to add" +msgstr "Выбрать номера для добавления" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:8 +#, fuzzy +msgid "Select entries to add" +msgstr "Выбрать пользователей для добавления" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:22 +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:18 +#: personal/environment/selectPrinterDialog.tpl:24 +#: personal/environment/hotplugDialog.tpl:24 +msgid "Filters" +msgstr "Фильтры" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +#, fuzzy +msgid "Select to search within subtrees" +msgstr "Искать в поддеревьях" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +#, fuzzy +msgid "Search in subtrees" +msgstr "Искать в поддеревьях" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:38 +#, fuzzy +msgid "Display members of department" +msgstr "Показать номера из подразделения" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:41 +#: personal/environment/selectPrinterDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "Выбрать раздел, для которого будет осуществлен поиск" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:50 +#, fuzzy +msgid "Display members matching" +msgstr "Показать совпадения номеров" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:55 +#, fuzzy +msgid "Regular expression for matching member names" +msgstr "Регулярное выражение, соответствующее именам пользователей" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:49 +msgid "USB" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:50 +msgid "Parallel port" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:53 +#, fuzzy +msgid "Software" +msgstr "Создать телефонный аккаунт" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:54 +#, fuzzy +msgid "Hardware" +msgstr "Телефонное оборудование" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:56 +#, fuzzy +msgid "Even" +msgstr "Окружение" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:57 +#, fuzzy +msgid "Odd" +msgstr "Добавить" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:60 +#: admin/systems/goto/class_gotoLpdEnabled.inc:61 +#: admin/systems/goto/class_gotoLpdEnabled.inc:62 +#: admin/systems/goto/class_gotoLpdEnabled.inc:63 +#: admin/systems/goto/class_gotoLpdEnabled.inc:64 +#: admin/systems/goto/class_gotoLpdEnabled.inc:65 +#: admin/systems/goto/class_gotoLpdEnabled.inc:66 +#: admin/systems/goto/class_gotoLpdEnabled.inc:67 +#, fuzzy +msgid "bit/s" +msgstr "запись" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:153 +#: admin/systems/goto/terminalService.tpl:58 +#: admin/systems/goto/workstationService.tpl:66 +#: admin/systems/goto/gotoLpdEnable.tpl:71 +msgid "Port" +msgstr "Порт" + +#: admin/systems/goto/ArpNewDevice.tpl:1 +msgid "Integrating unknown devices" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:3 +msgid "" +"The current device has been detected by the ARP monitor used by GOsa. You " +"can integrate this device into your running DHCP/DNS infrastructure by " +"submitting this form. The device entry will disappear from the list of the " +"systems and move to the DNS/DHCP configuration." +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:9 +#, fuzzy +msgid "DNS name" +msgstr "Список" + +#: admin/systems/goto/class_printGeneric.inc:106 +#: admin/systems/goto/class_printGeneric.inc:968 +#, fuzzy +msgid "Internal error" +msgstr "Терминал-сервер" + +#: admin/systems/goto/class_printGeneric.inc:106 +#, php-format +msgid "" +"Cannot determine a valid department for this object. Setting base to '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:262 +#: admin/systems/goto/class_printGeneric.inc:270 +#: admin/systems/goto/class_printGeneric.inc:275 +#: admin/systems/goto/class_printGeneric.inc:324 +#: admin/systems/goto/class_printGeneric.inc:340 +#: admin/systems/goto/class_printGeneric.inc:343 +msgid "Add printer extension" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:263 +msgid "" +"Could not initialize printer tab, parameter parent was missing while " +"construction." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:271 +msgid "This is a workstation template, printer tab is disabled." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:276 +msgid "This is a terminal template, printer tab is disabled." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:317 +#: admin/systems/goto/class_printGeneric.inc:325 +#: admin/systems/goto/class_printGeneric.inc:333 +#: admin/systems/goto/class_printGeneric.inc:336 +#: admin/systems/goto/class_printGeneric.inc:341 +#: admin/systems/goto/class_printGeneric.inc:344 +#, fuzzy +msgid "printer" +msgstr "принтеры" + +#: admin/systems/goto/class_printGeneric.inc:325 +#, fuzzy +msgid "" +"You can't enable it while 'cn' is not present in entry. Possibly you are " +"currently creating a new terminal template." +msgstr "" +"В этой учетной записи нет настроек факса. Вы можете добавить их, щелкнув " +"ниже." + +#: admin/systems/goto/class_printGeneric.inc:332 +#: admin/systems/goto/class_printGeneric.inc:335 +#, fuzzy +msgid "Remove printer extension" +msgstr "Удалить параметры" + +#: admin/systems/goto/class_printGeneric.inc:513 +#, php-format +msgid "Your currently selected PPD file '%s' doesn't exist." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:518 +#, fuzzy +msgid "Not defined" +msgstr "не определена" + +#: admin/systems/goto/class_printGeneric.inc:521 +#: admin/systems/ppd/class_printerPPDDialog.inc:97 +#, fuzzy +msgid "Can't get ppd informations." +msgstr "Общая информация о пользователе" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_printGeneric.inc:536 +#, php-format +msgid "This printer belongs to %s. You can't rename this printer." +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_terminalStartup.inc:180 +#: admin/systems/goto/class_terminalInfo.inc:68 +#: admin/systems/goto/class_terminalGeneric.inc:230 +#, fuzzy +msgid "terminal" +msgstr "Терминалы" + +#: admin/systems/goto/class_printGeneric.inc:536 +#: admin/systems/goto/class_workstationGeneric.inc:226 +#: admin/systems/goto/class_workstationStartup.inc:285 +#, fuzzy +msgid "workstation" +msgstr "Рабочая станция" + +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#, fuzzy +msgid "Object is no printer!" +msgstr "Сетевой принтер" + +#: admin/systems/goto/class_printGeneric.inc:680 +#: admin/systems/goto/printer.tpl:54 +msgid "Printer URL" +msgstr "URL принтера" + +#: admin/systems/goto/class_printGeneric.inc:903 +#: admin/systems/goto/class_printGeneric.inc:905 +#: addons/goto/events/class_EventTargetAddUsersList.inc:173 +msgid "Group" +msgstr "Группа" + +#: admin/systems/goto/class_printGeneric.inc:921 +#, fuzzy +msgid "Print generic" +msgstr "Служба печати" + +#: admin/systems/goto/class_printGeneric.inc:926 +#: admin/systems/goto/terminalService.tpl:245 +#: personal/environment/environment.tpl:338 +#: personal/environment/environment.tpl:374 +msgid "Printer" +msgstr "Принтер" + +#: admin/systems/goto/class_printGeneric.inc:933 +msgid "LabeledURL" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:934 +#, fuzzy +msgid "Printer PPD" +msgstr "Принтер" + +#: admin/systems/goto/class_printGeneric.inc:935 +#: admin/systems/goto/printer.tpl:82 +#, fuzzy +msgid "Permissions" +msgstr "Права для членов группы" + +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#, fuzzy +msgid "printer user" +msgstr "Принтер" + +#: admin/systems/goto/class_printGeneric.inc:968 +#, php-format +msgid "Illegal member type '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:1008 +#, fuzzy, php-format +msgid "'%s' is already used!" +msgstr "Указанное имя уже используется." + +#: admin/systems/goto/class_printGeneric.inc:1019 +#, fuzzy, php-format +msgid "'%s' does not exist!" +msgstr "Значение поля \"Файлы\" некорректно." + +#: admin/systems/goto/class_selectUserToPrinterDialog.inc:147 +#, fuzzy +msgid "Please select a printer or press cancel." +msgstr "Введите корректный номер телефона!" + +#: admin/systems/goto/class_terminalStartup.inc:135 +#, fuzzy, php-format +msgid "" +"Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to " +"exist." +msgstr "" +"Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." + +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#, fuzzy +msgid "Mount point" +msgstr "Мониторинг" + +#: admin/systems/goto/class_terminalStartup.inc:372 +#: admin/systems/goto/class_workstationStartup.inc:750 +#, fuzzy +msgid "Fatal error" +msgstr "Терминал-сервер" + +#: admin/systems/goto/class_terminalStartup.inc:533 +#: admin/systems/goto/class_workstationStartup.inc:1007 +msgid "Startup" +msgstr "Запуск" + +#: admin/systems/goto/class_terminalStartup.inc:534 +#, fuzzy +msgid "Terminal startup" +msgstr "Шаблон терминала" + +#: admin/systems/goto/class_terminalStartup.inc:542 +#: admin/systems/goto/class_workstationStartup.inc:1016 +#, fuzzy +msgid "Ldap server" +msgstr "Сервер подкачки" + +#: admin/systems/goto/class_terminalStartup.inc:544 +#: admin/systems/goto/class_workstationStartup.inc:1020 +#, fuzzy +msgid "Kernel modules" +msgstr "Изменить параметры" + +#: admin/systems/goto/class_terminalStartup.inc:545 +#: admin/systems/goto/class_workstationStartup.inc:1017 +#: admin/systems/goto/terminalStartup.tpl:40 +#: admin/systems/goto/workstationStartup.tpl:9 +msgid "Boot kernel" +msgstr "Ядро для загрузки" + +#: admin/systems/goto/class_terminalStartup.inc:546 +#: admin/systems/goto/class_workstationStartup.inc:1018 +#, fuzzy +msgid "Kernel parameter" +msgstr "Изменить параметры" + +#: admin/systems/goto/class_terminalInfo.inc:50 +#: admin/systems/goto/class_terminalInfo.inc:204 +msgid "present" +msgstr "присутствует" + +#: admin/systems/goto/class_terminalInfo.inc:77 +#: admin/systems/goto/class_terminalService.inc:121 +#: admin/systems/goto/class_workstationStartup.inc:1295 +#: admin/systems/goto/class_workstationStartup.inc:1297 +#: admin/systems/goto/class_workstationService.inc:78 +#: admin/systems/ppd/class_printerPPDDialog.inc:54 +#: admin/systems/ppd/class_printerPPDDialog.inc:121 +#: personal/environment/class_environment.inc:234 +#, fuzzy +msgid "Configuration error" +msgstr "Настроить" + +#: admin/systems/goto/class_terminalInfo.inc:83 +#: admin/systems/goto/class_terminalInfo.inc:179 +msgid "unknown status" +msgstr "состояние неизвестно" + +#: admin/systems/goto/class_terminalInfo.inc:92 +msgid "This is a virtual terminal which has no properties to show here." +msgstr "Это виртуальный терминал без особых свойств." + +#: admin/systems/goto/class_terminalInfo.inc:106 +msgid "online" +msgstr "в сети" + +#: admin/systems/goto/class_terminalInfo.inc:168 +msgid "running" +msgstr "запущен" + +#: admin/systems/goto/class_terminalInfo.inc:171 +msgid "not running" +msgstr "не запущен" + +#: admin/systems/goto/class_terminalInfo.inc:174 +msgid "not defined" +msgstr "не определена" + +#: admin/systems/goto/class_terminalInfo.inc:196 +msgid "offline" +msgstr "не в сети" + +#: admin/systems/goto/class_terminalInfo.inc:251 +#, fuzzy +msgid "System info" +msgstr "Системная информация" + +#: admin/systems/goto/class_terminalInfo.inc:252 +#, fuzzy +msgid "System informations" +msgstr "Системная информация" + +#: admin/systems/goto/class_terminalService.inc:128 +#: admin/systems/goto/class_terminalService.inc:129 +#: admin/systems/goto/class_terminalService.inc:130 +#: admin/systems/goto/class_terminalService.inc:131 +#: admin/systems/goto/class_workstationService.inc:88 +#: admin/systems/goto/class_workstationService.inc:89 +#: admin/systems/goto/class_workstationService.inc:90 +#: admin/systems/goto/class_workstationService.inc:91 +#, fuzzy +msgid "bit" +msgstr "запись" + +#: admin/systems/goto/class_terminalService.inc:177 +msgid "XDMCP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:178 +msgid "LDM" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:179 +msgid "Shell" +msgstr "Оболочка" + +#: admin/systems/goto/class_terminalService.inc:180 +#, fuzzy +msgid "Telnet" +msgstr "Удалить" + +#: admin/systems/goto/class_terminalService.inc:181 +msgid "Windows RDP" +msgstr "Windows RDP" + +#: admin/systems/goto/class_terminalService.inc:204 +#: admin/systems/goto/class_workstationService.inc:144 +msgid "automatic" +msgstr "автоматически" + +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_workstationService.inc:194 +#, fuzzy +msgid "Bit" +msgstr "запись" + +#: admin/systems/goto/class_terminalService.inc:314 +msgid "This 'dn' has no terminal features." +msgstr "Это DN не соответствует терминалу." + +#: admin/systems/goto/class_terminalService.inc:372 +#, fuzzy +msgid "Unsupported" +msgstr "Поддержка USB" + +#: admin/systems/goto/class_terminalService.inc:414 +#: admin/systems/goto/class_workstationService.inc:309 +#, fuzzy +msgid "Choose the phone located at the current terminal" +msgstr "Выбрать раздел, для хранения объекта" + +#: admin/systems/goto/class_terminalService.inc:495 +#: admin/systems/goto/class_terminalService.inc:500 +#, fuzzy +msgid "VSync range" +msgstr "Кадровая синхронизация" + +#: admin/systems/goto/class_terminalService.inc:508 +#: admin/systems/goto/class_terminalService.inc:513 +#, fuzzy +msgid "HSync range" +msgstr "Строчная синхронизация" + +#: admin/systems/goto/class_terminalService.inc:539 +msgid "" +"Remote desktop settings contains servers that do not support the selected " +"connection method." +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:603 +#: admin/systems/goto/workstationService.tpl:157 +#: admin/systems/goto/class_workstationService.inc:85 +#, fuzzy +msgid "unknown" +msgstr "состояние неизвестно" + +#: admin/systems/goto/class_terminalService.inc:678 +#: admin/systems/goto/class_workstationService.inc:484 +#, fuzzy +msgid "Service" +msgstr "Сервисы" + +#: admin/systems/goto/class_terminalService.inc:688 +#: admin/systems/goto/class_workstationService.inc:493 +#, fuzzy +msgid "Monitor" +msgstr "Мониторинг" + +#: admin/systems/goto/class_terminalService.inc:689 +#, fuzzy +msgid "Method" +msgstr "Почтовые настройки" + +#: admin/systems/goto/class_terminalService.inc:690 +#: admin/systems/goto/terminalService.tpl:173 +msgid "Remote desktop" +msgstr "Удаленная рабочая станция" + +#: admin/systems/goto/class_terminalService.inc:691 +#: admin/systems/goto/class_workstationService.inc:494 +#, fuzzy +msgid "Gfx driver" +msgstr "Сервер" + +#: admin/systems/goto/class_terminalService.inc:692 +#: admin/systems/goto/class_workstationService.inc:495 +#, fuzzy +msgid "Gfx resolution" +msgstr "Разрешение" + +#: admin/systems/goto/class_terminalService.inc:693 +#: admin/systems/goto/class_workstationService.inc:496 +#, fuzzy +msgid "Gfx color depth" +msgstr "Глубина цвета" + +#: admin/systems/goto/class_terminalService.inc:694 +#: admin/systems/goto/terminalService.tpl:150 +#: admin/systems/goto/workstationService.tpl:170 +#: admin/systems/goto/class_workstationService.inc:393 +#: admin/systems/goto/class_workstationService.inc:395 +#: admin/systems/goto/class_workstationService.inc:400 +#: admin/systems/goto/class_workstationService.inc:497 +msgid "HSync" +msgstr "Строчная синхронизация" + +#: admin/systems/goto/class_terminalService.inc:695 +#: admin/systems/goto/terminalService.tpl:158 +#: admin/systems/goto/workstationService.tpl:181 +#: admin/systems/goto/class_workstationService.inc:376 +#: admin/systems/goto/class_workstationService.inc:378 +#: admin/systems/goto/class_workstationService.inc:383 +#: admin/systems/goto/class_workstationService.inc:498 +msgid "VSync" +msgstr "Кадровая синхронизация" + +#: admin/systems/goto/class_terminalService.inc:696 +msgid "Auto-Sync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:697 +#: admin/systems/goto/class_workstationService.inc:500 +#, fuzzy +msgid "Scanner enabled" +msgstr "отключен" + +#: admin/systems/goto/class_terminalService.inc:698 +#: admin/systems/goto/class_terminalService.inc:704 +#, fuzzy +msgid "Printer enabled" +msgstr "Имя принтера" + +#: admin/systems/goto/class_terminalService.inc:699 +#: admin/systems/goto/class_workstationService.inc:501 +#, fuzzy +msgid "Keyboard model" +msgstr "Выберите модель клавиатуры" + +#: admin/systems/goto/class_terminalService.inc:700 +#: admin/systems/goto/class_workstationService.inc:502 +#, fuzzy +msgid "Keyboard layout" +msgstr "Выберите раскладку" + +#: admin/systems/goto/class_terminalService.inc:701 +#: admin/systems/goto/class_workstationService.inc:503 +#, fuzzy +msgid "Keyboard variant" +msgstr "Выберите вариант раскладки" + +#: admin/systems/goto/class_terminalService.inc:702 +#: admin/systems/goto/class_workstationService.inc:504 +#, fuzzy +msgid "Mouse type" +msgstr "Тип" + +#: admin/systems/goto/class_terminalService.inc:703 +#: admin/systems/goto/class_workstationService.inc:505 +#, fuzzy +msgid "Mouse port" +msgstr "Мониторинг" + +#: admin/systems/goto/class_terminalService.inc:705 +#: admin/systems/goto/terminalService.tpl:76 +#: admin/systems/goto/workstationService.tpl:86 +#: admin/systems/goto/class_workstationService.inc:506 +msgid "Telephone hardware" +msgstr "Телефонное оборудование" + +#: admin/systems/goto/info.tpl:6 +msgid "System information" +msgstr "Системная информация" + +#: admin/systems/goto/info.tpl:12 +msgid "CPU" +msgstr "Процессор" + +#: admin/systems/goto/info.tpl:15 +msgid "Memory" +msgstr "Память" + +#: admin/systems/goto/info.tpl:18 +msgid "Boot MAC" +msgstr "MAC-адрес" + +#: admin/systems/goto/info.tpl:21 +msgid "USB support" +msgstr "Поддержка USB" + +#: admin/systems/goto/info.tpl:24 admin/systems/goto/info.tpl:92 +msgid "System status" +msgstr "Состояние системы" + +#: admin/systems/goto/info.tpl:28 +#, fuzzy +msgid "Inventory number" +msgstr "Номер телефона" + +#: admin/systems/goto/info.tpl:32 +msgid "Last login" +msgstr "Последний вход в систему" + +#: admin/systems/goto/info.tpl:43 +msgid "Network devices" +msgstr "Сетевые устройства" + +#: admin/systems/goto/info.tpl:52 +msgid "IDE devices" +msgstr "Устройства IDE" + +#: admin/systems/goto/info.tpl:61 +msgid "SCSI devices" +msgstr "Устройства SCSI" + +#: admin/systems/goto/info.tpl:69 +msgid "Floppy device" +msgstr "Дисковод" + +#: admin/systems/goto/info.tpl:73 +msgid "CDROM device" +msgstr "Привод CDROM" + +#: admin/systems/goto/info.tpl:78 admin/systems/goto/terminalService.tpl:95 +#: admin/systems/goto/workstationService.tpl:107 +msgid "Graphic device" +msgstr "Видеокарта" + +#: admin/systems/goto/info.tpl:82 +msgid "Audio device" +msgstr "Звуковая карта" + +#: admin/systems/goto/info.tpl:98 +msgid "Up since" +msgstr "Работает с" + +#: admin/systems/goto/info.tpl:101 +msgid "CPU load" +msgstr "Загрузка процессора" + +#: admin/systems/goto/info.tpl:104 +msgid "Memory usage" +msgstr "Использование памяти" + +#: admin/systems/goto/info.tpl:107 +msgid "Swap usage" +msgstr "Использование подкачки" + +#: admin/systems/goto/info.tpl:121 +msgid "SSH service" +msgstr "Служба SSH" + +#: admin/systems/goto/info.tpl:127 +msgid "Scan service" +msgstr "Сканер" + +#: admin/systems/goto/info.tpl:130 +msgid "Sound service" +msgstr "Звук" + +#: admin/systems/goto/info.tpl:133 +msgid "GUI" +msgstr "Графический интерфейс" + +#: admin/systems/goto/class_workstationGeneric.inc:299 +#: admin/systems/goto/class_workstationGeneric.inc:309 +#: addons/goto/events/class_DaemonEvent_update.inc:29 +#: addons/goto/events/class_DaemonEvent_update.inc:30 +#, fuzzy +msgid "Software update" +msgstr "Создать телефонный аккаунт" + +#: admin/systems/goto/class_workstationGeneric.inc:303 +#: admin/systems/goto/class_workstationGeneric.inc:311 +#: addons/goto/events/class_DaemonEvent_localboot.inc:28 +#: addons/goto/events/class_DaemonEvent_localboot.inc:29 +msgid "Force localboot" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:307 +#: admin/systems/goto/class_terminalGeneric.inc:271 +#: addons/goto/events/class_DaemonEvent_wakeup.inc:29 +msgid "Wake up" +msgstr "Вернуть в обычный режим" + +#: admin/systems/goto/class_workstationGeneric.inc:500 +msgid "A valid LDAP server assignement is missing!" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:510 +#, fuzzy +msgid "Software deployment" +msgstr "Системы" + +#: admin/systems/goto/class_workstationGeneric.inc:511 +msgid "This host is currently installing. If you want to save it, press 'OK'." +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:699 +#, fuzzy +msgid "Workstation generic" +msgstr "Имя рабочий станции" + +#: admin/systems/goto/class_workstationGeneric.inc:704 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:203 +#: addons/goto/events/class_EventTargetAddList.inc:249 +msgid "Workstation" +msgstr "Рабочая станция" + +#: admin/systems/goto/class_workstationGeneric.inc:711 +#, fuzzy +msgid "Goto mode" +msgstr "в папку" + +#: admin/systems/goto/class_workstationGeneric.inc:714 +#: admin/systems/goto/class_terminalGeneric.inc:676 +#, fuzzy +msgid "Root password" +msgstr "Изменить пароль" + +#: admin/systems/goto/class_workstationGeneric.inc:715 +#, fuzzy +msgid "Create FAI CD" +msgstr "Создать" + +#: admin/systems/goto/gencd_frame.tpl:2 +msgid "Your browser does not supprt iframes." +msgstr "" + +#: admin/systems/goto/terminalService.tpl:4 +#: admin/systems/goto/workstationService.tpl:4 +msgid "Keyboard" +msgstr "Клавиатура" + +#: admin/systems/goto/terminalService.tpl:7 +#: admin/systems/goto/workstationService.tpl:7 +#: admin/systems/ppd/printerPPDDialog.tpl:10 +msgid "Model" +msgstr "Модель" + +#: admin/systems/goto/terminalService.tpl:10 +#: admin/systems/goto/workstationService.tpl:11 +msgid "Choose keyboard model" +msgstr "Выберите модель клавиатуры" + +#: admin/systems/goto/terminalService.tpl:17 +#: admin/systems/goto/workstationService.tpl:19 +msgid "Layout" +msgstr "Раскладка" + +#: admin/systems/goto/terminalService.tpl:20 +#: admin/systems/goto/workstationService.tpl:23 +msgid "Choose keyboard layout" +msgstr "Выберите раскладку" + +#: admin/systems/goto/terminalService.tpl:27 +#: admin/systems/goto/workstationService.tpl:31 +msgid "Variant" +msgstr "Вариант" + +#: admin/systems/goto/terminalService.tpl:30 +#: admin/systems/goto/workstationService.tpl:35 +msgid "Choose keyboard variant" +msgstr "Выберите вариант раскладки" + +#: admin/systems/goto/terminalService.tpl:45 +#: admin/systems/goto/workstationService.tpl:51 +msgid "Mouse" +msgstr "Мышь" + +#: admin/systems/goto/terminalService.tpl:51 +#: admin/systems/goto/workstationService.tpl:58 +msgid "Choose mouse type" +msgstr "Выберите тип мыши" + +#: admin/systems/goto/terminalService.tpl:61 +#: admin/systems/goto/workstationService.tpl:70 +msgid "Choose mouse port" +msgstr "Выберите порт мыши" + +#: admin/systems/goto/terminalService.tpl:79 +#: admin/systems/goto/workstationService.tpl:89 +msgid "Telephone" +msgstr "Телефон" + +#: admin/systems/goto/terminalService.tpl:98 +#: admin/systems/goto/workstationService.tpl:110 +#: admin/systems/goto/printer.tpl:66 +msgid "Driver" +msgstr "Драйвер" + +#: admin/systems/goto/terminalService.tpl:101 +#: admin/systems/goto/workstationService.tpl:114 +msgid "Choose graphic driver that is needed by the installed graphic board" +msgstr "Выберите подходящий драйвер для установленной видеокарты" + +#: admin/systems/goto/terminalService.tpl:108 +#: admin/systems/goto/workstationService.tpl:122 +#: personal/environment/class_environment.inc:1786 +#: personal/environment/environment.tpl:183 +msgid "Resolution" +msgstr "Разрешение" + +#: admin/systems/goto/terminalService.tpl:111 +#: admin/systems/goto/workstationService.tpl:126 +msgid "Choose screen resolution used in graphic mode" +msgstr "Выберите подходящее разрешение экрана" + +#: admin/systems/goto/terminalService.tpl:118 +#: admin/systems/goto/workstationService.tpl:134 +msgid "Color depth" +msgstr "Глубина цвета" + +#: admin/systems/goto/terminalService.tpl:121 +#: admin/systems/goto/workstationService.tpl:138 +msgid "Choose colordepth used in graphic mode" +msgstr "Выберите подходящую глубину цвета" + +#: admin/systems/goto/terminalService.tpl:135 +#: admin/systems/goto/workstationService.tpl:153 +msgid "Display device" +msgstr "Устройство отображения" + +#: admin/systems/goto/terminalService.tpl:147 +#: admin/systems/goto/workstationService.tpl:167 +msgid "Use DDC for automatic detection" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:154 +#: admin/systems/goto/workstationService.tpl:175 +msgid "Horizontal refresh frequency for installed monitor" +msgstr "Частота обновления строк для данного монитора" + +#: admin/systems/goto/terminalService.tpl:162 +#: admin/systems/goto/workstationService.tpl:186 +msgid "Vertical refresh frequency for installed monitor" +msgstr "Частота обновления кадров для данного монитора" + +#: admin/systems/goto/terminalService.tpl:177 +msgid "Connect method" +msgstr "Способ подключения" + +#: admin/systems/goto/terminalService.tpl:180 +msgid "Choose method to connect to terminal server" +msgstr "Выберите способ подключения к серверу терминалов" + +#: admin/systems/goto/terminalService.tpl:184 +#: admin/systems/goto/terminalStartup.tpl:14 +#: admin/systems/goto/workstationStartup.tpl:36 +#: addons/goto/class_gotomasses.inc:400 +#, fuzzy +msgid "Reload" +msgstr "чтение" + +#: admin/systems/goto/terminalService.tpl:191 +msgid "Terminal server" +msgstr "Терминал-сервер" + +#: admin/systems/goto/terminalService.tpl:202 +msgid "Select specific terminal server to use" +msgstr "Выберите сервер терминалов" + +#: admin/systems/goto/terminalService.tpl:208 +msgid "Add selected server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:212 +#, fuzzy +msgid "Remove selected server" +msgstr "Удалить изображение" + +#: admin/systems/goto/terminalService.tpl:233 +#: admin/systems/goto/workstationService.tpl:201 +msgid "Scan device" +msgstr "Устройство сканирования" + +#: admin/systems/goto/terminalService.tpl:235 +#: admin/systems/goto/workstationService.tpl:204 +msgid "Select to start SANE scan service on terminal" +msgstr "Выберите, чтобы запустить на терминале службу сканирования" + +#: admin/systems/goto/terminalService.tpl:237 +#: admin/systems/goto/workstationService.tpl:207 +msgid "Provide scan services" +msgstr "Предоставлять службу сканирования" + +#: admin/systems/goto/gotoLpdEnable.tpl:12 +#: admin/systems/goto/gotoLpdEnable.tpl:48 +#, fuzzy +msgid "Enable printer settings" +msgstr "Настройки телефона" + +#: admin/systems/goto/gotoLpdEnable.tpl:87 +#, fuzzy +msgid "Write only" +msgstr "Личный телефон" + +#: admin/systems/goto/gotoLpdEnable.tpl:100 +#, fuzzy +msgid "Bit rate" +msgstr "Дата" + +#: admin/systems/goto/gotoLpdEnable.tpl:110 +#, fuzzy +msgid "Flow control" +msgstr "Параметры доступа" + +#: admin/systems/goto/gotoLpdEnable.tpl:120 +#, fuzzy +msgid "Parity" +msgstr "Порт" + +#: admin/systems/goto/gotoLpdEnable.tpl:130 +#, fuzzy +msgid "Bits" +msgstr "запись" + +#: admin/systems/goto/class_workstationStartup.inc:234 +#, php-format +msgid "FAI mirror '%s' is not available - setting to mirror 'auto'!" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:247 +#, php-format +msgid "" +"FAI release '%s' is not available on mirror '%s' - setting to release '%s'!" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:266 +#, fuzzy +msgid "Please select a 'FAI server' or remove the 'FAI classes'." +msgstr "Введите корректный номер телефона!" + +#: admin/systems/goto/class_workstationStartup.inc:324 +#, fuzzy +msgid "" +"There is already a profile containing a partition table in your " +"configuration!" +msgstr "" +"Пользователь с таким регистрационным именем в базе данных уже существует." + +#: admin/systems/goto/class_workstationStartup.inc:629 +msgid "Not available in current setup" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1008 +#, fuzzy +msgid "System startup" +msgstr "Состояние системы" + +#: admin/systems/goto/class_workstationStartup.inc:1023 +#, fuzzy +msgid "FAI classes" +msgstr "Выберите тип мыши" + +#: admin/systems/goto/class_workstationStartup.inc:1024 +msgid "Debian mirror" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1025 +#, fuzzy +msgid "Debian release" +msgstr "Текущий пароль" + +#: admin/systems/goto/class_workstationStartup.inc:1027 +msgid "FAI status flag" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1297 +msgid "'repositoryBranchHook' returned no result!" +msgstr "" + +#: admin/systems/goto/gencd.tpl:2 +msgid "CD-Install-Image generation" +msgstr "" + +#: admin/systems/goto/gencd.tpl:5 +msgid "" +"This option enables you to generate FAI install CD images for the selected " +"workstation. The procedure may take about 10 minutes to complete, so please " +"be patient after pressing the 'Create ISO-Image' button." +msgstr "" + +#: admin/systems/goto/gencd.tpl:9 +#, fuzzy +msgid "Create ISO-Image" +msgstr "Создать шаблон" + +#: admin/systems/goto/class_workstationService.inc:485 +#, fuzzy +msgid "Workstation service" +msgstr "Рабочие станции" + +#: admin/systems/goto/class_workstationService.inc:499 +#, fuzzy +msgid "Use DDC" +msgstr "Идентификатор пользователя" + +#: admin/systems/goto/terminalStartup.tpl:1 +#: admin/systems/goto/workstationStartup.tpl:4 +msgid "Boot parameters" +msgstr "Параметры загрузки" + +#: admin/systems/goto/terminalStartup.tpl:7 +#: admin/systems/goto/workstationStartup.tpl:29 +msgid "LDAP server" +msgstr "LDAP-сервер" + +#: admin/systems/goto/terminalStartup.tpl:12 +#: admin/systems/goto/workstationStartup.tpl:34 +#, fuzzy +msgid "inherit from group" +msgstr "Список групп" + +#: admin/systems/goto/terminalStartup.tpl:51 +#: admin/systems/goto/workstationStartup.tpl:20 +msgid "Custom options" +msgstr "Дополнительные параметры" + +#: admin/systems/goto/terminalStartup.tpl:55 +#: admin/systems/goto/workstationStartup.tpl:24 +msgid "" +"Enter any parameters that should be passed to the kernel as append line " +"during bootup" +msgstr "" +"Введите любые дополнительные параметры, которые должны передаваться ядру во " +"время загрузки" + +#: admin/systems/goto/terminalStartup.tpl:70 +#: admin/systems/goto/workstationStartup.tpl:188 +msgid "Kernel modules (format: name parameters)" +msgstr "Модули ядра (формат: имя параметры)" + +#: admin/systems/goto/terminalStartup.tpl:73 +#: admin/systems/goto/workstationStartup.tpl:191 +msgid "Add additional modules to load on startup" +msgstr "" +"Укажите дополнительные модули, которые должны загружаться при запуске системы" + +#: admin/systems/goto/terminalStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:227 +#, fuzzy +msgid "Mountpoint" +msgstr "Мониторинг" + +#: admin/systems/goto/SelectDeviceType.tpl:3 +msgid "" +"This system has no system type configured. Please choose a system type for " +"this object and an optional inheritance group. Press the 'continue' button " +"to proceed." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:10 +msgid "" +"Please select a system type and an optional bundle of predefined settings to " +"be inherited." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:12 +msgid "" +"Please select a system type and a bundle of predefined settings to be " +"inherited." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:23 +#: admin/systems/goto/SelectDeviceType.tpl:24 +#, fuzzy +msgid "System type" +msgstr "Системы" + +#: admin/systems/goto/SelectDeviceType.tpl:36 +#, fuzzy +msgid "Choose an object group as template" +msgstr "Объект группы" + +#: admin/systems/goto/SelectDeviceType.tpl:37 +#: addons/goto/class_target_list.inc:205 addons/goto/goto_import_file.tpl:40 +#: addons/goto/events/class_EventTargetAddList.inc:259 +msgid "Object group" +msgstr "Объект группы" + +#: admin/systems/goto/SelectDeviceType.tpl:39 +#: addons/goto/class_gotoLogView.inc:87 +msgid "none" +msgstr "нет" + +#: admin/systems/goto/SelectDeviceType.tpl:51 +msgid "Continue" +msgstr "Продолжить" + +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: admin/systems/goto/class_terminalGeneric.inc:656 +#: admin/systems/goto/class_terminalGeneric.inc:662 +#, fuzzy +msgid "Terminal" +msgstr "Терминалы" + +#: admin/systems/goto/class_SelectDeviceType.inc:41 +#: admin/systems/goto/chooser.tpl:10 +msgid "Windows workstation" +msgstr "Рабочая станция Windows" + +#: admin/systems/goto/workstationStartup.tpl:64 +msgid "" +"FAI Object assignment disabled. You can't use this feature until FAI is " +"activated." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:66 +msgid "GOsa support daemon not configured" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:67 +msgid "FAI settings cannot be modified" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:70 +msgid "Check if the GOsa support daemon (gosa-si) is running." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:71 +#, fuzzy +msgid "retry" +msgstr "Редактиовать объект" + +#: admin/systems/goto/workstationStartup.tpl:79 +#: admin/systems/goto/workstationStartup.tpl:119 +#, fuzzy +msgid "FAI server" +msgstr "LDAP-сервер" + +#: admin/systems/goto/workstationStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:158 +#, fuzzy +msgid "Assigned FAI classes" +msgstr "Выберите тип мыши" + +#: admin/systems/goto/workstationStartup.tpl:142 +#, fuzzy +msgid "set" +msgstr "сброс" + +#: admin/systems/goto/class_terminalGeneric.inc:657 +#, fuzzy +msgid "Terminal generic" +msgstr "Терминальный сервер" + +#: admin/systems/goto/class_terminalGeneric.inc:670 +#, fuzzy +msgid "Syslog server enabled" +msgstr "Сервер системных журналов" + +#: admin/systems/goto/class_terminalGeneric.inc:675 +#, fuzzy +msgid "Ntp server settings" +msgstr "Почтовые настройки пользователя" + +#: admin/systems/goto/printer.tpl:5 +#, fuzzy +msgid "General" +msgstr "Общее" + +#: admin/systems/goto/printer.tpl:8 +msgid "Printer name" +msgstr "Имя принтера" + +#: admin/systems/goto/printer.tpl:30 +msgid "Choose subtree to place user in" +msgstr "Выберите ветку для пользователя" + +#: admin/systems/goto/printer.tpl:43 +msgid "Details" +msgstr "" + +#: admin/systems/goto/printer.tpl:46 +#, fuzzy +msgid "Printer location" +msgstr "Настройки телефона" + +#: admin/systems/goto/printer.tpl:89 +#, fuzzy +msgid "Users which are allowed to use this printer" +msgstr "У вас недостаточно прав для удаления этого объекта!" + +#: admin/systems/goto/printer.tpl:91 +msgid "Users" +msgstr "Пользователи" + +#: admin/systems/goto/printer.tpl:96 admin/systems/goto/printer.tpl:120 +#, fuzzy +msgid "Add user" +msgstr "Пользователи домена" + +#: admin/systems/goto/printer.tpl:99 admin/systems/goto/printer.tpl:123 +#, fuzzy +msgid "Add group" +msgstr "группы" + +#: admin/systems/goto/printer.tpl:113 +#, fuzzy +msgid "Users which are allowed to administrate this printer" +msgstr "У вас недостаточно прав для удаления этого объекта!" + +#: admin/systems/goto/printer.tpl:115 +#, fuzzy +msgid "Admins" +msgstr "DN администратора" + +#: admin/systems/goto/chooser.tpl:1 +msgid "Choose the kind of system component you want to create" +msgstr "Выберите тип системного компонента который желаете создать" + +#: admin/systems/goto/chooser.tpl:4 +msgid "" +"Linux terminals and workstations are autocreated on bootup. For this reason " +"you're only be able to create templates for a specific tree. Servers are " +"normally automatically added too, but in some special cases you may need to " +"create a faked server entry to provide GOsa with some informations. Other " +"network components may be used for Nagios setups to create component " +"dependencies." +msgstr "" +"Терминалы и рабочие станцие Linux были созданы автоматически. Поэтому вам " +"необходимо только создать шаблоны для нужного подразделения. Сервера обычно " +"добавляются тоже, но в отдельных случаях вам может понадобиться " +"'виртуальный' сервер для описания обязательных сервисов. Прочие сетевые " +"компоненты могут быть использованы при установке Nagios для создания " +"межкомпонентных зависимостей." + +#: admin/systems/goto/chooser.tpl:7 +msgid "Linux thin client template" +msgstr "Шаблон тонкого клиента Linux" + +#: admin/systems/goto/chooser.tpl:8 +msgid "Linux workstation template" +msgstr "Шаблон рабочей станции Linux" + +#: admin/systems/goto/chooser.tpl:9 +msgid "Linux Server" +msgstr "Сервер Linux" + +#: admin/systems/goto/chooser.tpl:11 +msgid "Network printer" +msgstr "Сетевой принтер" + +#: admin/systems/goto/chooser.tpl:12 +msgid "Phone" +msgstr "Телефон" + +#: admin/systems/goto/chooser.tpl:13 +msgid "Other network component" +msgstr "Прочие сетевые компоненты" + +#: admin/systems/goto/terminal.tpl:8 +msgid "Terminal template" +msgstr "Шаблон терминала" + +#: admin/systems/goto/terminal.tpl:10 +msgid "Terminal name" +msgstr "Терминал" + +#: admin/systems/goto/terminal.tpl:178 +#, fuzzy +msgid "Inherit all" +msgstr "Отчество" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:6 +msgid "Select objects to add" +msgstr "Выбрать объекты для добавления" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:28 +msgid "Display objects matching" +msgstr "Показать совпадения объектов" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:32 +msgid "Regular expression for matching object names" +msgstr "Регулярное выражение, соответствующее именам объектов" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:44 +#, fuzzy +msgid "Close" +msgstr "Выбрать" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#: admin/systems/ppd/class_ppdManager.inc:148 +#: admin/systems/ppd/class_ppdManager.inc:150 +#, fuzzy +msgid "PPD manager error" +msgstr "Экспорт в LDIF" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#, fuzzy, php-format +msgid "The specified path '%s' does not exist." +msgstr "Значение поля \"Файлы\" некорректно." + +#: admin/systems/ppd/class_ppdManager.inc:148 +#, php-format +msgid "Specified PPD file '%s' cannot be opened for reading." +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:150 +#, php-format +msgid "The temporary file '%s' cannot be opened for writing." +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:176 +#: admin/systems/ppd/class_ppdManager.inc:313 +#, php-format +msgid "" +"Parsing PPD file %s failed - line too long. Trailing characters have been " +"ignored" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:184 +#, fuzzy +msgid "Nested groups are not supported!" +msgstr "" +"(Предупреждение: NFS не поддерживает более 16 групп для одного пользователя!)" + +#: admin/systems/ppd/class_ppdManager.inc:188 +#, fuzzy +msgid "Group name not unique!" +msgstr "Группа" + +#: admin/systems/ppd/class_ppdManager.inc:194 +#: admin/systems/ppd/class_ppdManager.inc:224 +msgid "Symbol values are not supported yet!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:218 +msgid "Nested options are not supported!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:243 +msgid "PickMany is not supported yet!" +msgstr "" + +#: admin/systems/ppd/class_ppdManager.inc:334 +#, php-format +msgid "Parsing PPD file %s failed - no information found." +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:223 +#: admin/systems/ppd/class_printerPPDDialog.inc:240 +#: admin/systems/ppd/class_printerPPDDialog.inc:248 +#: admin/systems/ppd/class_printerPPDDialog.inc:272 +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#: admin/systems/ppd/class_printerPPDDialog.inc:313 +#: admin/systems/ppd/class_printerPPDDialog.inc:327 +#: admin/systems/ppd/class_printerPPDDialog.inc:337 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#: admin/systems/ppd/class_printerPPDDialog.inc:551 +#: admin/systems/ppd/class_printerPPDDialog.inc:554 +#: admin/systems/ppd/class_printerPPDDialog.inc:557 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:75 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:100 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, fuzzy +msgid "PPD error" +msgstr "LDAP-сервер" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#, fuzzy, php-format +msgid "Cannot open PPD '%s'!" +msgstr "Удалить" + +#: admin/systems/ppd/class_printerPPDDialog.inc:122 +#, php-format +msgid "Cannot open PPD path '%s' for reading and writing!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: addons/goto/class_goto_import_file.inc:29 +#, fuzzy +msgid "file is empty" +msgstr "Удалить" + +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#, fuzzy, php-format +msgid "Cannot parse PPD '%s'!" +msgstr "Удалить" + +#: admin/systems/ppd/class_printerPPDDialog.inc:316 +#, fuzzy +msgid "Overwrite existing PPD" +msgstr "Экспорт объекта" + +#: admin/systems/ppd/class_printerPPDDialog.inc:317 +#, fuzzy +msgid "" +"There is already a ppd file for this kind of printer. Do you want to " +"overwrite it?" +msgstr "" +"Пользователь с таким регистрационным именем в базе данных уже существует." + +#: admin/systems/ppd/class_printerPPDDialog.inc:465 +#, fuzzy +msgid "Section" +msgstr "Действие" + +#: admin/systems/ppd/class_printerPPDDialog.inc:525 +#: admin/systems/ppd/class_printerPPDDialog.inc:528 +#, fuzzy +msgid "True" +msgstr "Улица" + +#: admin/systems/ppd/class_printerPPDDialog.inc:526 +#: admin/systems/ppd/class_printerPPDDialog.inc:529 +#, fuzzy +msgid "False" +msgstr "женский" + +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#, fuzzy, php-format +msgid "PPD type '%s' is not supported!" +msgstr "" +"(Предупреждение: NFS не поддерживает более 16 групп для одного пользователя!)" + +#: admin/systems/ppd/class_printerPPDDialog.inc:571 +msgid "" +"Please select a valid ppd file or use 'Cancel' to go back to printer " +"configuration." +msgstr "" + +#: admin/systems/ppd/remove_ppd.tpl:9 +msgid "The ppd file will be removed from the server and can not be restored." +msgstr "" + +#: admin/systems/ppd/printerPPDDialog.tpl:1 +#, fuzzy +msgid "Printer driver" +msgstr "Устройство печати" + +#: admin/systems/ppd/printerPPDDialog.tpl:12 +#, fuzzy +msgid "Select" +msgstr "Удалить" + +#: admin/systems/ppd/printerPPDDialog.tpl:16 +#, fuzzy +msgid "New driver" +msgstr "Сервер" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, php-format +msgid "Cannot locate vendor '%s' in available PPDs!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:129 +#, fuzzy +msgid "Printer ppd selection." +msgstr "Настройки телефона" + +#: addons/goto/class_target_list.inc:58 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: addons/goto/class_target_list.inc:59 addons/goto/class_target_list.inc:60 +#, fuzzy +msgid "Available targets" +msgstr "Доступные приложения" + +#: addons/goto/class_target_list.inc:69 +msgid "Object name" +msgstr "Имя объекта" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Select to see object groups" +msgstr "Объект группы" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Show object groups" +msgstr "Объединения" + +#: addons/goto/class_target_list.inc:73 +msgid "Select to see servers" +msgstr "Выберите, чтобы просмотреть серверы" + +#: addons/goto/class_target_list.inc:73 +msgid "Show servers" +msgstr "Показать серверы" + +#: addons/goto/class_target_list.inc:74 +msgid "Select to see workstations" +msgstr "Выберите чтобы посмотреть рабочие станции" + +#: addons/goto/class_target_list.inc:74 +msgid "Show workstations" +msgstr "Показать рабочие станции" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Select to see incoming objects" +msgstr "Искать в поддеревьях" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Show new objects" +msgstr "Включаемые объекты" + +#: addons/goto/class_target_list.inc:80 +msgid "Select to search for a specific IP range only" +msgstr "" + +#: addons/goto/class_target_list.inc:80 +msgid "Match IP range" +msgstr "" + +#: addons/goto/class_target_list.inc:83 +msgid "Regular expression for matching group names" +msgstr "Регулярное выражение, соответствующее именам групп" + +#: addons/goto/class_target_list.inc:84 +msgid "IP range start" +msgstr "" + +#: addons/goto/class_target_list.inc:85 +msgid "IP range end" +msgstr "" + +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#, fuzzy +msgid "IP range" +msgstr "Кадровая синхронизация" + +#: addons/goto/goto_import_file.tpl:1 +#, fuzzy +msgid "Import jobs" +msgstr "Импортировать" + +#: addons/goto/goto_import_file.tpl:3 +msgid "" +"You can import a list of jobs into the GOsa job queue. This should be a " +"semicolon seperated list of items in the following format:" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "timestamp" +msgstr "Таймаут (с)" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "MAC-address" +msgstr "Адрес" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "job type" +msgstr "Тип" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "object group" +msgstr "Объект группы" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "import base" +msgstr "Импортировать" + +#: addons/goto/goto_import_file.tpl:5 +msgid "full hostname" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "IP-address" +msgstr "Адрес" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "DHCP group" +msgstr "группы" + +#: addons/goto/goto_import_file.tpl:9 +msgid "Example" +msgstr "" + +#: addons/goto/goto_import_file.tpl:21 +#, fuzzy +msgid "Select list to import" +msgstr "Выбрать номера для добавления" + +#: addons/goto/goto_import_file.tpl:37 +#: addons/goto/events/DaemonEvent_update.tpl:51 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:51 +#: addons/goto/events/DaemonEvent_halt.tpl:51 +#: addons/goto/events/DaemonEvent_wakeup.tpl:51 +#: addons/goto/events/DaemonEvent_reboot.tpl:51 +#: addons/goto/events/DaemonEvent_notify.tpl:85 +#: addons/goto/events/DaemonEvent_rescan.tpl:51 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:51 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:51 +#: addons/goto/events/DaemonEvent_faireboot.tpl:51 +#: addons/goto/events/DaemonEvent_localboot.tpl:51 +#: addons/goto/events/DaemonEvent_memcheck.tpl:51 +#: addons/goto/events/DaemonEvent_activate.tpl:51 +#: addons/goto/events/DaemonEvent_lock.tpl:51 +#: addons/goto/events/DaemonEvent_reinstall.tpl:55 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:51 +#, fuzzy +msgid "Timestamp" +msgstr "Таймаут (с)" + +#: addons/goto/goto_import_file.tpl:38 +#: addons/goto/class_goto_import_file.inc:168 +#, fuzzy +msgid "MAC" +msgstr "Доступ" + +#: addons/goto/goto_import_file.tpl:39 +#: addons/goto/class_goto_import_file.inc:171 +#, fuzzy +msgid "Event" +msgstr "Окружение" + +#: addons/goto/goto_import_file.tpl:42 +msgid "FQDN" +msgstr "" + +#: addons/goto/goto_import_file.tpl:43 +msgid "IP" +msgstr "" + +#: addons/goto/goto_import_file.tpl:44 +msgid "DHCP" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:113 +#, fuzzy +msgid "File" +msgstr "Файлы" + +#: addons/goto/class_gotoLogView.inc:115 +#, fuzzy +msgid "Date" +msgstr "Дата" + +#: addons/goto/class_gotoLogView.inc:202 +#, fuzzy +msgid "Log view" +msgstr "Имя пользователя" + +#: addons/goto/class_gotoLogView.inc:203 +#, fuzzy +msgid "GOto log view" +msgstr "в папку" + +#: addons/goto/class_gotomasses.inc:26 +#, fuzzy +msgid "Deployment status" +msgstr "Состояние системы" + +#: addons/goto/class_gotomasses.inc:27 addons/goto/main.inc:66 +#, fuzzy +msgid "System deployment status" +msgstr "Системы" + +#: addons/goto/class_gotomasses.inc:270 +#, php-format +msgid "The following jobs couldn't be deleted, they have to be aborted: %s" +msgstr "" + +#: addons/goto/class_gotomasses.inc:360 +#, fuzzy +msgid "This menu allows you to remove and change the properties of GOsa tasks." +msgstr "" +"С помощью этого меню вы можете добавлять, изменять и удалять свойства " +"отдельных систем. Вы можете только добавлять системы которые однажды уже " +"были запущены." + +#: addons/goto/class_gotomasses.inc:361 +#, fuzzy +msgid "List of queued jobs" +msgstr "Список пользователей" + +#: addons/goto/class_gotomasses.inc:380 +#, fuzzy +msgid "Resume" +msgstr "сброс" + +#: addons/goto/class_gotomasses.inc:381 +#, fuzzy +msgid "Pause" +msgstr "Дата" + +#: addons/goto/class_gotomasses.inc:382 +#, fuzzy +msgid "Abort" +msgstr "Порт" + +#: addons/goto/class_gotomasses.inc:408 +#: addons/goto/events/DaemonEvent_update.tpl:47 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:47 +#: addons/goto/events/DaemonEvent_halt.tpl:47 +#: addons/goto/events/DaemonEvent_wakeup.tpl:47 +#: addons/goto/events/DaemonEvent_reboot.tpl:47 +#: addons/goto/events/DaemonEvent_notify.tpl:81 +#: addons/goto/events/DaemonEvent_rescan.tpl:47 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:47 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:47 +#: addons/goto/events/DaemonEvent_faireboot.tpl:47 +#: addons/goto/events/class_DaemonEvent_notify.inc:77 +#: addons/goto/events/class_DaemonEvent_notify.inc:78 +#: addons/goto/events/class_DaemonEvent_notify.inc:103 +#: addons/goto/events/DaemonEvent_localboot.tpl:47 +#: addons/goto/events/DaemonEvent_memcheck.tpl:47 +#: addons/goto/events/DaemonEvent_activate.tpl:47 +#: addons/goto/events/DaemonEvent_lock.tpl:47 +#: addons/goto/events/DaemonEvent_reinstall.tpl:51 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:47 +#, fuzzy +msgid "Target" +msgstr "сброс" + +#: addons/goto/class_gotomasses.inc:409 +msgid "Task" +msgstr "" + +#: addons/goto/class_gotomasses.inc:411 +#: addons/goto/events/DaemonEvent_update.tpl:9 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:9 +#: addons/goto/events/DaemonEvent_halt.tpl:9 +#: addons/goto/events/DaemonEvent_wakeup.tpl:9 +#: addons/goto/events/DaemonEvent_reboot.tpl:9 +#: addons/goto/events/DaemonEvent_notify.tpl:28 +#: addons/goto/events/DaemonEvent_rescan.tpl:9 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:9 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:9 +#: addons/goto/events/DaemonEvent_faireboot.tpl:9 +#: addons/goto/events/DaemonEvent_localboot.tpl:9 +#: addons/goto/events/DaemonEvent_memcheck.tpl:9 +#: addons/goto/events/DaemonEvent_lock.tpl:9 +#: addons/goto/events/DaemonEvent_reinstall.tpl:9 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:9 +#, fuzzy +msgid "Schedule" +msgstr "Учетная запись Groupware" + +#: addons/goto/class_gotomasses.inc:413 +#: addons/goto/events/DaemonEvent_update.tpl:39 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:39 +#: addons/goto/events/DaemonEvent_halt.tpl:39 +#: addons/goto/events/DaemonEvent_wakeup.tpl:39 +#: addons/goto/events/DaemonEvent_reboot.tpl:39 +#: addons/goto/events/DaemonEvent_notify.tpl:73 +#: addons/goto/events/DaemonEvent_rescan.tpl:39 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:39 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:39 +#: addons/goto/events/DaemonEvent_faireboot.tpl:39 +#: addons/goto/events/DaemonEvent_localboot.tpl:39 +#: addons/goto/events/DaemonEvent_memcheck.tpl:39 +#: addons/goto/events/DaemonEvent_activate.tpl:39 +#: addons/goto/events/DaemonEvent_lock.tpl:39 +#: addons/goto/events/DaemonEvent_reinstall.tpl:43 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:39 +msgid "Status" +msgstr "Состояние" + +#: addons/goto/class_gotomasses.inc:441 +#, fuzzy +msgid "Pause job" +msgstr "Дата" + +#: addons/goto/class_gotomasses.inc:448 +#, fuzzy +msgid "Resume job" +msgstr "сброс" + +#: addons/goto/class_gotomasses.inc:455 +#, fuzzy +msgid "Execute now" +msgstr "Выполнить" + +#: addons/goto/class_gotomasses.inc:462 +#, fuzzy +msgid "View logs" +msgstr "Доступные приложения" + +#: addons/goto/class_gotomasses.inc:477 +#, fuzzy +msgid "Abort job" +msgstr "Отчество" + +#: addons/goto/class_gotomasses.inc:521 +#, fuzzy +msgid "Waiting" +msgstr "Предупреждение" + +#: addons/goto/class_gotomasses.inc:527 +#, fuzzy +msgid "Processed" +msgstr "Свойства" + +#: addons/goto/class_gotomasses.inc:542 +#, fuzzy +msgid "Detection" +msgstr "Действие" + +#: addons/goto/class_gotomasses.inc:550 +#, fuzzy +msgid "in progress" +msgstr "Свойства" + +#: addons/goto/class_gotomasses.inc:563 +msgid "immediately" +msgstr "" + +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:735 +#: addons/goto/class_gotomasses.inc:775 +#, fuzzy, php-format +msgid "Cannot update queue entry: %s" +msgstr "состояние неизвестно" + +#: addons/goto/class_gotomasses.inc:691 +#, php-format +msgid "Cannot update queue entries." +msgstr "" + +#: addons/goto/class_gotomasses.inc:740 +#, php-format +msgid "Required class '%s' cannot be found: job not aborted!" +msgstr "" + +#: addons/goto/class_gotomasses.inc:816 +#, fuzzy, php-format +msgid "Cannot load queue entries: %s" +msgstr "состояние неизвестно" + +#: addons/goto/class_gotomasses.inc:910 addons/goto/class_gotomasses.inc:916 +#, fuzzy +msgid "System deployment" +msgstr "Управление системами" + +#: addons/goto/class_gotomasses.inc:911 +msgid "Provide a mechanism to automatically activate systems" +msgstr "" + +#: addons/goto/log_view.tpl:7 +#, fuzzy +msgid "Available logs" +msgstr "Доступные приложения" + +#: addons/goto/log_view.tpl:12 +#, fuzzy +msgid "Selected log" +msgstr "Удалить" + +#: addons/goto/log_view.tpl:17 +msgid "No logs for this host available!" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_lock.inc:29 +#: addons/goto/events/class_DaemonEvent_lock.inc:30 +msgid "Lock" +msgstr "" + +#: addons/goto/events/DaemonEvent_update.tpl:18 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:18 +#: addons/goto/events/DaemonEvent_halt.tpl:18 +#: addons/goto/events/DaemonEvent_wakeup.tpl:18 +#: addons/goto/events/DaemonEvent_reboot.tpl:18 +#: addons/goto/events/DaemonEvent_rescan.tpl:18 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:18 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:18 +#: addons/goto/events/DaemonEvent_faireboot.tpl:18 +#: addons/goto/events/DaemonEvent_localboot.tpl:18 +#: addons/goto/events/DaemonEvent_memcheck.tpl:18 +#: addons/goto/events/DaemonEvent_activate.tpl:18 +#: addons/goto/events/DaemonEvent_lock.tpl:18 +#: addons/goto/events/DaemonEvent_reinstall.tpl:18 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:18 +#, fuzzy +msgid "System list" +msgstr "Системные журналы" + +#: addons/goto/events/DaemonEvent_update.tpl:35 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:35 +#: addons/goto/events/DaemonEvent_halt.tpl:35 +#: addons/goto/events/DaemonEvent_wakeup.tpl:35 +#: addons/goto/events/DaemonEvent_reboot.tpl:35 +#: addons/goto/events/DaemonEvent_notify.tpl:69 +#: addons/goto/events/DaemonEvent_rescan.tpl:35 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:35 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:35 +#: addons/goto/events/DaemonEvent_faireboot.tpl:35 +#: addons/goto/events/DaemonEvent_localboot.tpl:35 +#: addons/goto/events/DaemonEvent_memcheck.tpl:35 +#: addons/goto/events/DaemonEvent_activate.tpl:35 +#: addons/goto/events/DaemonEvent_lock.tpl:35 +#: addons/goto/events/DaemonEvent_reinstall.tpl:35 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:35 +#, fuzzy +msgid "ID" +msgstr "GID" + +#: addons/goto/events/DaemonEvent_update.tpl:43 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:43 +#: addons/goto/events/DaemonEvent_halt.tpl:43 +#: addons/goto/events/DaemonEvent_wakeup.tpl:43 +#: addons/goto/events/DaemonEvent_reboot.tpl:43 +#: addons/goto/events/DaemonEvent_notify.tpl:77 +#: addons/goto/events/DaemonEvent_rescan.tpl:43 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:43 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:43 +#: addons/goto/events/DaemonEvent_faireboot.tpl:43 +#: addons/goto/events/DaemonEvent_localboot.tpl:43 +#: addons/goto/events/DaemonEvent_memcheck.tpl:43 +#: addons/goto/events/DaemonEvent_activate.tpl:43 +#: addons/goto/events/DaemonEvent_lock.tpl:43 +#: addons/goto/events/DaemonEvent_reinstall.tpl:47 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:43 +#, fuzzy +msgid "Result" +msgstr "Разрешение" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:37 +#, fuzzy +msgid "GOto reload" +msgstr "в папку" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:38 +#, fuzzy +msgid "Reload GOto settings" +msgstr "Атрибуты UNIX" + +#: addons/goto/events/class_DaemonEvent_activate.inc:29 +#: addons/goto/events/class_DaemonEvent_activate.inc:30 +msgid "Unlock" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_faireboot.inc:28 +#: addons/goto/events/class_DaemonEvent_faireboot.inc:29 +#, fuzzy +msgid "Abort installation" +msgstr "Рабочая станция" + +#: addons/goto/events/target_list.tpl:5 +msgid "Apply" +msgstr "Применить" + +#: addons/goto/events/target_list.tpl:6 +msgid "Cancel" +msgstr "Отмена" + +#: addons/goto/events/DaemonEvent_notify.tpl:7 +#, fuzzy +msgid "Message settings" +msgstr "Почтовые настройки пользователя" + +#: addons/goto/events/DaemonEvent_notify.tpl:10 +#, fuzzy +msgid "Sender" +msgstr "Сервер" + +#: addons/goto/events/DaemonEvent_notify.tpl:14 +#: addons/goto/events/class_DaemonEvent_notify.inc:94 +#, fuzzy +msgid "Subject" +msgstr "Удалить" + +#: addons/goto/events/DaemonEvent_notify.tpl:18 +#: addons/goto/events/class_DaemonEvent_notify.inc:97 +msgid "Message" +msgstr "Сообщение" + +#: addons/goto/events/DaemonEvent_notify.tpl:37 +#, fuzzy +msgid "Target users" +msgstr "сброс" + +#: addons/goto/events/DaemonEvent_notify.tpl:44 +#, fuzzy +msgid "Target groups" +msgstr "сброс" + +#: addons/goto/events/class_DaemonEvent.inc:119 +#, fuzzy +msgid "This job has no template!" +msgstr "Это DN не соответствует терминалу." + +#: addons/goto/events/class_DaemonEvent.inc:135 +#, fuzzy, php-format +msgid "Create '%s' job" +msgstr "Объект группы" + +#: addons/goto/events/class_DaemonEvent.inc:234 +msgid "Add" +msgstr "Добавить" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:31 +#, fuzzy +msgid "Reload fai release db" +msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." + +#: addons/goto/events/class_DaemonEvent_wakeup.inc:30 +#, fuzzy +msgid "Wake system" +msgstr "Системы" + +#: addons/goto/events/class_DaemonEvent_activate_new.inc:40 +#: addons/goto/events/class_DaemonEvent_activate_new.inc:41 +#, fuzzy +msgid "Activate new" +msgstr "Личный" + +#: addons/goto/events/class_EventTargetAddList.inc:51 +#: addons/goto/events/class_EventTargetAddUsersList.inc:45 +#, fuzzy +msgid "Targets" +msgstr "сброс" + +#: addons/goto/events/class_EventTargetAddList.inc:55 +msgid "" +"This dialog shows all available targets for the event. Check the targets you " +"want to add and use the 'Apply' button." +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:66 +#: addons/goto/events/class_EventTargetAddUsersList.inc:60 +#, fuzzy +msgid "System / Department" +msgstr "Подразделение" + +#: addons/goto/events/class_EventTargetAddList.inc:73 +#, fuzzy +msgid "Display server" +msgstr "Устройство отображения" + +#: addons/goto/events/class_EventTargetAddList.inc:74 +#, fuzzy +msgid "Display workstation" +msgstr "Рабочая станция Windows" + +#: addons/goto/events/class_EventTargetAddList.inc:75 +#, fuzzy +msgid "Display object groups" +msgstr "Показать совпадения объектов" + +#: addons/goto/events/class_EventTargetAddList.inc:76 +msgid "Filter by IP range" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:3 +#, fuzzy +msgid "Year" +msgstr "Поиск" + +#: addons/goto/events/timestamp_select.tpl:4 +#, fuzzy +msgid "Month" +msgstr "месяц" + +#: addons/goto/events/timestamp_select.tpl:5 +#, fuzzy +msgid "Day" +msgstr "день" + +#: addons/goto/events/timestamp_select.tpl:7 +#, fuzzy +msgid "Hour" +msgstr "час" + +#: addons/goto/events/timestamp_select.tpl:8 +#, fuzzy +msgid "Minute" +msgstr "Принтер" + +#: addons/goto/events/timestamp_select.tpl:9 +#, fuzzy +msgid "Second" +msgstr "Действие" + +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:28 +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:29 +msgid "Reload LDAP config" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_notify.inc:46 +#: addons/goto/events/class_DaemonEvent_notify.inc:47 +#, fuzzy +msgid "Send message" +msgstr "Домашняя страница" + +#: addons/goto/events/class_DaemonEvent_notify.inc:100 +#, fuzzy +msgid "From" +msgstr "и" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:49 +msgid "" +"This dialog shows all available targets for your event, check the targets " +"you want to add and use the 'Use' button to accept." +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:65 +#, fuzzy +msgid "Display users" +msgstr "Устройство отображения" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:66 +#, fuzzy +msgid "Display groups" +msgstr "Показать совпадения объектов" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:31 +msgid "Reload fai server db" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:28 +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:29 +#, fuzzy +msgid "Installation activation" +msgstr "Рабочая станция" + +#: addons/goto/events/DaemonEvent_activate.tpl:9 +#, fuzzy +msgid "Time schedule" +msgstr "Выберите режим терминала" + +#: addons/goto/events/DaemonEvent_reinstall.tpl:39 +#, fuzzy +msgid "Progress" +msgstr "Свойства" + +#: addons/goto/class_goto_import_file.inc:90 +msgid "" +"Selected entries will be skipped because of errors. Do you want to proceed?" +msgstr "" + +#: addons/goto/class_goto_import_file.inc:131 +#, php-format +msgid "Import complete: %s events successfully send, %s failed" +msgstr "" + +#: personal/environment/class_environment.inc:9 +#: personal/environment/class_environment.inc:433 +#: personal/environment/class_environment.inc:434 +#: personal/environment/class_environment.inc:442 +#: personal/environment/class_environment.inc:443 +#: personal/environment/class_environment.inc:446 +#: personal/environment/class_environment.inc:447 +#: personal/environment/class_environment.inc:450 +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:473 +#: personal/environment/class_environment.inc:474 +#: personal/environment/class_environment.inc:478 +#: personal/environment/class_environment.inc:479 +#: personal/environment/class_environment.inc:482 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1766 +msgid "Environment" +msgstr "Окружение" + +#: personal/environment/class_environment.inc:139 +#, php-format +msgid "Device '%s' is not available anymore. It will be removed!" +msgstr "" + +#: personal/environment/class_environment.inc:212 +#, fuzzy +msgid "auto" +msgstr "Отношение" + +#: personal/environment/class_environment.inc:234 +#, fuzzy, php-format +msgid "Cannot open file '%s'!" +msgstr "Удалить" + +#: personal/environment/class_environment.inc:271 +#: personal/environment/class_environment.inc:272 +msgid "disabled" +msgstr "отключен" + +#: personal/environment/class_environment.inc:307 +#, php-format +msgid "" +"Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk " +"profile will be disabled!" +msgstr "" + +#: personal/environment/class_environment.inc:360 +#, php-format +msgid "Profile server '%s' is not available anymore. Switched to server '%s'." +msgstr "" + +#: personal/environment/class_environment.inc:364 +#, php-format +msgid "" +"Profile server '%s' is not available anymore. Kiosk profile will be disabled." +msgstr "" + +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1148 +msgid "POSIX" +msgstr "" + +#: personal/environment/class_environment.inc:583 +#: personal/environment/environment.tpl:246 +msgid "Logon scripts" +msgstr "" + +#: personal/environment/class_environment.inc:673 +#, fuzzy +msgid "Share" +msgstr "сброс" + +#: personal/environment/class_environment.inc:763 +#: personal/environment/environment.tpl:257 +#: personal/environment/environment.tpl:303 +msgid "Used by all users" +msgstr "" + +#: personal/environment/class_environment.inc:766 +#: personal/environment/environment.tpl:259 +#: personal/environment/environment.tpl:305 +msgid "Used by some users" +msgstr "" + +#: personal/environment/class_environment.inc:779 +#: personal/environment/class_environment.inc:780 +#: personal/environment/class_environment.inc:789 +#: personal/environment/class_environment.inc:790 +#, fuzzy +msgid "Reset password hash" +msgstr "Изменить пароль" + +#: personal/environment/class_environment.inc:794 +#, fuzzy +msgid "Delete share entry" +msgstr "Удалить" + +#: personal/environment/class_environment.inc:988 +msgid "Cannot set default printer flag for groups!" +msgstr "" + +#: personal/environment/class_environment.inc:1141 +#: personal/environment/class_environment.inc:1711 +#: personal/environment/class_environment.inc:1780 +#, fuzzy +msgid "Profile quota" +msgstr "Путь к профилю" + +#: personal/environment/class_environment.inc:1148 +#, fuzzy +msgid "environment" +msgstr "Окружение" + +#: personal/environment/class_environment.inc:1329 +#, fuzzy +msgid "group share" +msgstr "группы" + +#: personal/environment/class_environment.inc:1363 +#, fuzzy +msgid "Administrator" +msgstr "Администрирование" + +#: personal/environment/class_environment.inc:1368 +msgid "Default printer" +msgstr "Принтер по умолчанию" + +#: personal/environment/class_environment.inc:1767 +#, fuzzy +msgid "Environment settings" +msgstr "Почтовые настройки пользователя" + +#: personal/environment/class_environment.inc:1771 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/environment/class_environment.inc:1775 +msgid "Command to extend the list of possible screen resolutions" +msgstr "" + +#: personal/environment/class_environment.inc:1779 +#, fuzzy +msgid "Profile server" +msgstr "Сервер для хранения запросов и временных файлов" + +#: personal/environment/class_environment.inc:1781 +#: personal/environment/environment.tpl:41 +#: personal/environment/environment.tpl:106 +msgid "Cache profile localy" +msgstr "" + +#: personal/environment/class_environment.inc:1785 +#: personal/environment/environment.tpl:174 +msgid "Resolution changeable during session" +msgstr "" + +#: personal/environment/class_environment.inc:1787 +#: personal/environment/logonManagement.tpl:56 +msgid "Logon script" +msgstr "" + +#: personal/environment/environment.tpl:3 +msgid "The environment extension is currently disabled." +msgstr "" + +#: personal/environment/environment.tpl:11 +#, fuzzy +msgid "Profiles" +msgstr "Путь к профилю" + +#: personal/environment/environment.tpl:14 +#: personal/environment/environment.tpl:207 +#: personal/environment/environment.tpl:288 +#, fuzzy +msgid "Environment managment settings" +msgstr "Почтовые настройки пользователя" + +#: personal/environment/environment.tpl:22 +#: personal/environment/environment.tpl:55 +#, fuzzy +msgid "Use profile managment" +msgstr "Управление системами" + +#: personal/environment/environment.tpl:26 +#: personal/environment/environment.tpl:65 +#, fuzzy +msgid "Profil path" +msgstr "Путь к профилю" + +#: personal/environment/environment.tpl:36 +#: personal/environment/environment.tpl:95 +msgid "MB" +msgstr "Мб" + +#: personal/environment/environment.tpl:47 +#, fuzzy +msgid "Profile managment" +msgstr "Управление подразделениями" + +#: personal/environment/environment.tpl:62 +#, fuzzy +msgid "Profile server managment" +msgstr "Управление подразделениями" + +#: personal/environment/environment.tpl:89 +#, fuzzy +msgid "Profil quota" +msgstr "Путь к профилю" + +#: personal/environment/environment.tpl:120 +#, fuzzy +msgid "Kiosk profile settings" +msgstr "Почтовые настройки пользователя" + +#: personal/environment/environment.tpl:145 +#, fuzzy +msgid "Profile" +msgstr "Путь к профилю" + +#: personal/environment/environment.tpl:164 +#, fuzzy +msgid "Manage" +msgstr "Название" + +#: personal/environment/environment.tpl:222 +#, fuzzy +msgid "User used to connect to the share" +msgstr "Выберите способ подключения к серверу терминалов" + +#: personal/environment/environment.tpl:225 +#, fuzzy +msgid "Select a share" +msgstr "Выберите, чтобы просмотреть серверы" + +#: personal/environment/environment.tpl:233 +#, fuzzy +msgid "Mount path" +msgstr "Контакт" + +#: personal/environment/environment.tpl:248 +#: personal/environment/logonManagement.tpl:1 +#: personal/environment/logonManagement.tpl:5 +#, fuzzy +msgid "Logon script management" +msgstr "Управление системами" + +#: personal/environment/environment.tpl:295 +#, fuzzy +msgid "Hotplug device settings" +msgstr "Дисковод" + +#: personal/environment/environment.tpl:342 +msgid "" +"Using this option will overwrite the complete printer settings for all " +"currently edited objects!" +msgstr "" + +#: personal/environment/environment.tpl:343 +#: personal/environment/environment.tpl:376 +#, fuzzy +msgid "Printer settings" +msgstr "Настройки телефона" + +#: personal/environment/environment.tpl:360 +#: personal/environment/environment.tpl:393 +#, fuzzy +msgid "Toggle admin" +msgstr "Личная информация" + +#: personal/environment/environment.tpl:363 +#: personal/environment/environment.tpl:396 +#, fuzzy +msgid "Toggle default" +msgstr "по умолчанию" + +#: personal/environment/class_logonManagementDialog.inc:107 +#: personal/environment/logonManagement.tpl:10 +#, fuzzy +msgid "Script name" +msgstr "Список" + +#: personal/environment/main.inc:134 +#, fuzzy +msgid "User environment settings" +msgstr "Почтовые настройки пользователя" + +#: personal/environment/class_selectPrinterDialog.inc:107 +#, fuzzy +msgid "Please select a printer!" +msgstr "Введите корректный серийный номер" + +#: personal/environment/class_hotplugDialog.inc:64 +#, fuzzy +msgid "Please select a hotplug device!" +msgstr "Введите корректный серийный номер" + +#: personal/environment/selectPrinterDialog.tpl:1 +#, fuzzy +msgid "Add printer devices" +msgstr "Устройство печати" + +#: personal/environment/selectPrinterDialog.tpl:48 +#, fuzzy +msgid "Display printers matching" +msgstr "Показать совпадения номеров" + +#: personal/environment/selectPrinterDialog.tpl:53 +#, fuzzy +msgid "Regular expression for matching printer names" +msgstr "Регулярное выражение, соответствующее именам пользователей" + +#: personal/environment/logonManagement.tpl:8 +#, fuzzy +msgid "Logon script settings" +msgstr "Атрибуты UNIX" + +#: personal/environment/logonManagement.tpl:24 +#, fuzzy +msgid "Priority" +msgstr "Порт" + +#: personal/environment/logonManagement.tpl:34 +msgid "Logon script flags" +msgstr "" + +#: personal/environment/logonManagement.tpl:38 +msgid "Last script" +msgstr "" + +#: personal/environment/logonManagement.tpl:44 +msgid "Script can be replaced by user" +msgstr "" + +#: personal/environment/hotplugDialog.tpl:1 +#, fuzzy +msgid "Add hotplug devices" +msgstr "Дисковод" + +#: personal/environment/hotplugDialog.tpl:5 +#, fuzzy +msgid "Hotplug management" +msgstr "Управление подразделениями" + +#: personal/environment/hotplugDialog.tpl:10 +#, fuzzy +msgid "Select hotplug device to add" +msgstr "Удалить" + +#: personal/environment/hotplugDialog.tpl:34 +#, fuzzy +msgid "Choose the department the search will be based on" +msgstr "Выбрать раздел, для которого будет осуществлен поиск" + +#: personal/environment/hotplugDialog.tpl:48 +#, fuzzy +msgid "Regular expression for matching hotplugs" +msgstr "Регулярное выражение, соответствующее именам пользователей" + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "Управление системами" + +#~ msgid "Spool server" +#~ msgstr "Сервер для хранения запросов и временных файлов" + +#, fuzzy +#~ msgid "GOsa configuration %s/%s is not readable. Aborted." +#~ msgstr "" +#~ "Не удается прочитать файл настройки GOsa %s/gosa.conf. Операция прервана." + +#, fuzzy +#~ msgid "Directory '%s' specified as compile directory is not accessible!" +#~ msgstr "Недоступен каталог \"%s\", указанный как каталог компиляции!" + +#, fuzzy +#~ msgid "Password method" +#~ msgstr "Хэширование паролей" + +#~ msgid "" +#~ "The passwords you've entered as 'New password' and 'Repeated new " +#~ "password' do not match." +#~ msgstr "Введенные пароли не совпадают!" + +#~ msgid "New password" +#~ msgstr "Новый пароль" + +#~ msgid "The password used as new and current are too similar." +#~ msgstr "Новый и текущий пароли слишком похожи." + +#~ msgid "The password used as new is to short." +#~ msgstr "Новый пароль слишком короткий." + +#~ msgid "Current password" +#~ msgstr "Текущий пароль" + +#~ msgid "Please check the username/password combination." +#~ msgstr "Проверьте, правильно ли вы ввели имя пользователя и пароль." + +#~ msgid "You have no permissions to change your password." +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#~ msgid "External password changer reported a problem: " +#~ msgstr "При попытке сменить пароль извне возникла проблема: " + +#~ msgid "Session will not be encrypted." +#~ msgstr "Данные, передаваемые в течение этого сеанса, не будут зашифрованы." + +#~ msgid "Enter SSL session" +#~ msgstr "Использовать шифрование SSL" + +#, fuzzy +#~ msgid "PHP configuration" +#~ msgstr "Базы данных" + +#, fuzzy +#~ msgid "" +#~ "FATAL: Register globals is on. GOsa will refuse to login unless this is " +#~ "fixed by an administrator." +#~ msgstr "" +#~ "Используется механизм register_globals. GOsa не допустит пользователей в " +#~ "систему, пока он не будет отключен администратором." + +#, fuzzy +#~ msgid "Password change" +#~ msgstr "Сменить пароль" + +#, fuzzy +#~ msgid "Your password is about to expire, please change your password!" +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#, fuzzy +#~ msgid "Plugin" +#~ msgstr "в" + +#, fuzzy +#~ msgid "FATAL: Cannot find any plugin definitions for plugin '%s'!" +#~ msgstr "Не удается найти определение для модуля \"%s\"!" + +#, fuzzy +#~ msgid "Smarty" +#~ msgstr "Запуск" + +#, fuzzy +#~ msgid "Session is not encrypted!" +#~ msgstr "Данные, передаваемые в течение этого сеанса, не будут зашифрованы." + +#, fuzzy +#~ msgid "Smarty error" +#~ msgstr "Состояние системы" + +#~ msgid "Please specify a valid username!" +#~ msgstr "Введите корректное имя пользователя!" + +#~ msgid "Please specify your password!" +#~ msgstr "Введите свой пароль!" + +#, fuzzy +#~ msgid "Authentication error" +#~ msgstr "Рабочая станция Windows" + +#, fuzzy +#~ msgid "Account locked. Please contact your system administrator!" +#~ msgstr "" +#~ "Не удается начать сеанс на LDAP-сервере. Обратитесь к системному " +#~ "администратору." + +#, fuzzy +#~ msgid "There is no helpfile specified for this class" +#~ msgstr "Метод '%s' не описан в вашем файле конфигурации." + +#, fuzzy +#~ msgid "next" +#~ msgstr "текст" + +#~ msgid "Session conflict detected" +#~ msgstr "Конфликт сеансов" + +#, fuzzy +#~ msgid "" +#~ "Probably there's another active instance of your session. Multiple window " +#~ "operation is technical not possible and heavily depends on the browser " +#~ "you're using. Usage of different browsers at a time (i.e. IE and Mozilla) " +#~ "is possible. Pressing the Logout button will close this session." +#~ msgstr "" +#~ "Возможно, есть еще один экземпляр вашего сеанса. Работа с несколькими " +#~ "окнами одновременно технически невозможна и в значительной мере зависит " +#~ "от используемого браузера. Использование разных браузеров одновременно " +#~ "(например, IE и Mozilla) возможно. Нажав на кнопку Выход, вы " +#~ "завершите текущий сеанс." + +#~ msgid "" +#~ "Ignoring this message will change/destroy the data you're currently " +#~ "editing, so please close multiple windows and log in again." +#~ msgstr "" +#~ "Если вы ничего не предпримете, редактируемые вами данные не будут " +#~ "сохранены, поэтому закройте все окна, кроме одного, и начните сеанс " +#~ "заново." + +#~ msgid "Logout" +#~ msgstr "Выход" + +#~ msgid "Locking conflict detected" +#~ msgstr "Конфликт блокировок" + +#, fuzzy +#~ msgid "" +#~ "If this lock detection is false, the other person has obviously closed " +#~ "the webbrowser during the edit operation. You may want to take over the " +#~ "lock by pressing the 'Edit anyway' button." +#~ msgstr "" +#~ "Если результат этой проверки блокировки - ложь, очевидно, другой человек " +#~ "закрыл браузер во время редактирования данных. Вы можете удалить файл " +#~ "блокировки, нажав на кнопку Удалить." + +#, fuzzy +#~ msgid "Restoring object snapshots" +#~ msgstr "Объект группы" + +#~ msgid "Object" +#~ msgstr "Объект" + +#, fuzzy +#~ msgid "Creating object snapshots" +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Change your password" +#~ msgstr "Сменить пароль" + +#, fuzzy +#~ msgid "Success" +#~ msgstr "Экспорт успешен." + +#~ msgid "Directory" +#~ msgstr "Каталог" + +#~ msgid "Username" +#~ msgstr "Имя пользователя" + +#, fuzzy +#~ msgid "New password repeated" +#~ msgstr "Новый пароль" + +#, fuzzy +#~ msgid "Password strength" +#~ msgstr "Хэширование паролей" + +#, fuzzy +#~ msgid "Change" +#~ msgstr "Канал" + +#, fuzzy +#~ msgid "Click here to change your password" +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#, fuzzy +#~ msgid "Your password has expired. Please choose a new one!" +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#, fuzzy +#~ msgid "Old password" +#~ msgstr "Пароль" + +#, fuzzy +#~ msgid "Verify password" +#~ msgstr "Пароль" + +#~ msgid "Change password" +#~ msgstr "Сменить пароль" + +#, fuzzy +#~ msgid "Login screen" +#~ msgstr "Служба печати" + +#, fuzzy +#~ msgid "" +#~ "Please use your username and your password to log into the site " +#~ "administration system." +#~ msgstr "" +#~ "Чтобы войти в систему
введите свои имя пользователя и " +#~ "пароль." + +#~ msgid "Sign in" +#~ msgstr "Войти" + +#~ msgid "Click here to log in" +#~ msgstr "Нажмите на эту кнопку, чтобы войти в систему" + +#~ msgid "Information" +#~ msgstr "Информация" + +#, fuzzy +#~ msgid "New ACL" +#~ msgstr "Создать" + +#, fuzzy +#~ msgid "ACL type" +#~ msgstr "Тип" + +#, fuzzy +#~ msgid "Select an acl type" +#~ msgstr "Выберите, чтобы просмотреть серверы" + +#, fuzzy +#~ msgid "Additional filter options" +#~ msgstr "Дополнительные записи в fstab" + +#, fuzzy +#~ msgid "Available members" +#~ msgstr "Доступные приложения" + +#, fuzzy +#~ msgid "Members" +#~ msgstr "Включаемые объекты" + +#, fuzzy +#~ msgid "List of available ACL categories" +#~ msgstr "Выберите тип мыши" + +#, fuzzy +#~ msgid "ACL for this object" +#~ msgstr "Проверка модуля gd" + +#, fuzzy +#~ msgid "Available roles" +#~ msgstr "Доступные приложения" + +#~ msgid "" +#~ "You are currently editing a database entry. Do you want to dismiss the " +#~ "changes?" +#~ msgstr "" +#~ "Вы сейчас редактируете объект базы данных. Хотите отказаться от изменений?" + +#~ msgid "Main" +#~ msgstr "Начало" + +#~ msgid "Help" +#~ msgstr "Справка" + +#~ msgid "Sign out" +#~ msgstr "Выход" + +#~ msgid "Signed in:" +#~ msgstr "Пользователь:" + +#~ msgid "" +#~ "The size limit option makes LDAP operations faster and saves the LDAP " +#~ "server from getting too much load. The easiest way to handle big " +#~ "databases without long timeouts would be to limit your search to smaller " +#~ "values and use filters to get the entries you are looking for." +#~ msgstr "" +#~ "Ограничение на количество возвращаемых объектов позволяет ускорить " +#~ "операции поиска и предохраняет сервер LDAP от большой нагрузки. " +#~ "Простейший способ снизить время обработки запроса при обслуживаии большой " +#~ "базы данных это установить минимальное значение. Кроме того, будет очень " +#~ "полезно использовать фильтры для просмотра только ограниченного " +#~ "количества объектов." + +#~ msgid "Please choose the way to react for this session" +#~ msgstr "Выберите тип реакции для данной сессии" + +#~ msgid "ignore this error and show all entries the LDAP server returns" +#~ msgstr "игнорировать ошибку и показать все найденые объекты" + +#, fuzzy +#~ msgid "" +#~ "ignore this error and show all entries that fit into the defined " +#~ "sizelimit and let me use filters instead" +#~ msgstr "" +#~ "Игнорировать ошибку и показать все возвращаемые объекты в пределах лимита " +#~ "и позволить использовать фильтры" + +#~ msgid "Set" +#~ msgstr "Установить" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#, fuzzy +#~ msgid "Cancel all" +#~ msgstr "Отмена" + +#, fuzzy +#~ msgid "Operation complete" +#~ msgstr "не полный" + +#~ msgid "Finish" +#~ msgstr "Готово" + +#, fuzzy +#~ msgid "Sign in again" +#~ msgstr "Войти" + +#~ msgid "Search" +#~ msgstr "Поиск" + +#, fuzzy +#~ msgid "Please select the preferred language" +#~ msgstr "Язык по умолчанию" + +#, fuzzy +#~ msgid "Please select your preferred language here" +#~ msgstr "Язык по умолчанию" + +#, fuzzy +#~ msgid "Checking PHP version" +#~ msgstr "Проверка версии PHP (>=4.1.0)" + +#, fuzzy +#~ msgid "PHP must be of version %s or above." +#~ msgstr "" +#~ "У вас должна быть установка PHP версии не ниже 4.1.0, так как в ней " +#~ "реализованы некоторые новые функции и исправлены некоторые ошибки." + +#, fuzzy +#~ msgid "mbstring" +#~ msgstr "Настройки Samba" + +#, fuzzy +#~ msgid "MySQL" +#~ msgstr "Ошибка LDAP:" + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to communicate with several supported databases." +#~ msgstr "" +#~ "Необходим для чтения отчетов о полученных факсимильных сообщениях из базы " +#~ "данных." + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to show printers that are not defined within " +#~ "the LDAP." +#~ msgstr "" +#~ "Необходим для чтения отчетов о полученных факсимильных сообщениях из базы " +#~ "данных." + +#, fuzzy +#~ msgid "" +#~ "register_globals is a PHP mechanism to register all global variables to " +#~ "be accessible from scripts without changing the scope. This may be a " +#~ "security risk." +#~ msgstr "" +#~ "register_globals - механизм PHP, позволяющий делать все глобальные " +#~ "переменные доступными из сценария без смены области действия. Это может " +#~ "быть нарушением безопасности. Тем не менее, GOsa будет работать в любом " +#~ "случае." + +#, fuzzy +#~ msgid "" +#~ "Search for 'register_globals' in your php.ini and switch it to 'Off'." +#~ msgstr "Проверка значения параметра register_globals (должно быть: off)" + +#, fuzzy +#~ msgid "" +#~ "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 " +#~ "or higher." +#~ msgstr "Проверка значения параметра register_globals (должно быть: off)" + +#, fuzzy +#~ msgid "Off" +#~ msgstr "не в сети" + +#, fuzzy +#~ msgid "" +#~ "In Order to use GOsa without any trouble, the session.auto_register " +#~ "option in your php.ini should be set to 'Off'." +#~ msgstr "Проверка значения параметра register_globals (должно быть: off)" + +#, fuzzy +#~ msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." +#~ msgstr "Проверка значения параметра register_globals (должно быть: off)" + +#, fuzzy +#~ msgid "On" +#~ msgstr "Параметры" + +#, fuzzy +#~ msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." +#~ msgstr "Проверка значения параметра register_globals (должно быть: off)" + +#, fuzzy +#~ msgid "" +#~ "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to " +#~ "'Off'." +#~ msgstr "Проверка значения параметра register_globals (должно быть: off)" + +#, fuzzy +#~ msgid "Configuration writeable" +#~ msgstr "Настроить" + +#, fuzzy +#~ msgid "The configuration file can't be written" +#~ msgstr "Настроить" + +#, fuzzy +#~ msgid "Schema specific settings" +#~ msgstr "Настройки телефона" + +#, fuzzy +#~ msgid "Check status" +#~ msgstr "Состояние системы" + +#, fuzzy +#~ msgid "Schema check failed" +#~ msgstr "Приложение" + +#, fuzzy +#~ msgid "Setup error" +#~ msgstr "Состояние системы" + +#, fuzzy +#~ msgid "Completed" +#~ msgstr "не полный" + +#, fuzzy +#~ msgid "Next" +#~ msgstr "текст" + +#, fuzzy +#~ msgid "UNIX accounts/groups" +#~ msgstr "UNIX аккаунт" + +#, fuzzy +#~ msgid "Samba management" +#~ msgstr "Управление системами" + +#, fuzzy +#~ msgid "Mailsystem management" +#~ msgstr "Управление системами" + +#, fuzzy +#~ msgid "FAX system administration" +#~ msgstr "Управление пользователями" + +#, fuzzy +#~ msgid "Asterisk administration" +#~ msgstr "Управление пользователями" + +#, fuzzy +#~ msgid "System inventory" +#~ msgstr "Удалить объект" + +#, fuzzy +#~ msgid "System-/Configmanagement" +#~ msgstr "Управление системами" + +#~ msgid "Addressbook" +#~ msgstr "Адресная книга" + +#, fuzzy +#~ msgid "Get notifications or send feedback" +#~ msgstr "Местоположение ветки" + +#, fuzzy +#~ msgid "Notification and feedback" +#~ msgstr "Изменить сертификаты" + +#, fuzzy +#~ msgid "Feedback sucessfully send" +#~ msgstr "Настройка завершена" + +#, fuzzy +#~ msgid "Please specify a valid email address." +#~ msgstr "Введите корректное имя пользователя!" + +#, fuzzy +#~ msgid "LDAP schema check" +#~ msgstr "Сервер подкачки" + +#, fuzzy +#~ msgid "No" +#~ msgstr "нет" + +#, fuzzy +#~ msgid "Yes" +#~ msgstr "Системы" + +#, fuzzy +#~ msgid "LDAP setup" +#~ msgstr "LDAP-сервер" + +#, fuzzy +#~ msgid "LDAP connection setup" +#~ msgstr "Соединение..." + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' failed!" +#~ msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Bind as user '%s' failed!" +#~ msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' succeeded." +#~ msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Please specify user and password!" +#~ msgstr "Введите свой пароль!" + +#, fuzzy +#~ msgid "Bind as user '%s' to server '%s' succeeded!" +#~ msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Language setup" +#~ msgstr "Язык" + +#, fuzzy +#~ msgid "This step allows you to select your preferred language." +#~ msgstr "Язык по умолчанию" + +#, fuzzy +#~ msgid "Automatic" +#~ msgstr "автоматически" + +#, fuzzy +#~ msgid "GOsa setup wizard" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Setup" +#~ msgstr "Установить" + +#, fuzzy +#~ msgid "Create your configuration file" +#~ msgstr "Настроить" + +#, fuzzy +#~ msgid "Download configuration" +#~ msgstr "Системная информация" + +#, fuzzy +#~ msgid "Status: " +#~ msgstr "Состояние" + +#, fuzzy +#~ msgid "Theme" +#~ msgstr "Мобильный" + +#, fuzzy +#~ msgid "Apache" +#~ msgstr "Отмена" + +#, fuzzy +#~ msgid "People and group storage" +#~ msgstr "Структурная единица (OU) пользователей" + +#, fuzzy +#~ msgid "People DN attribute" +#~ msgstr "Атрибут DN пользователей" + +#, fuzzy +#~ msgid "People storage subtree" +#~ msgstr "Структурная единица (OU) пользователей" + +#, fuzzy +#~ msgid "Group storage subtree" +#~ msgstr "OU групп" + +#, fuzzy +#~ msgid "Automatic UIDs" +#~ msgstr "автоматически" + +#, fuzzy +#~ msgid "Number base for people/groups" +#~ msgstr "База идентификаторов для пользователей/групп" + +#, fuzzy +#~ msgid "Password settings" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Password restrictions" +#~ msgstr "Срок действия пароля истекает" + +#, fuzzy +#~ msgid "Password change hook" +#~ msgstr "Сменить пароль" + +#, fuzzy +#~ msgid "Use account expiration" +#~ msgstr "Учетная запись" + +#, fuzzy +#~ msgid "" +#~ "GOsa always acts as admin and manages access rights internally. This is a " +#~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " +#~ "For this to work, we need the admin DN and the corresponding password." +#~ msgstr "" +#~ "Сейчас вам нужно указать параметры доступа к LDAP-серверу. GOsa всегда " +#~ "выступает в роли администратора и управляет правами доступа " +#~ "самостоятельно. Это временное решение, пока в OpenLDAP не будут " +#~ "реализованы полностью средства контроля доступа (ACI) внутри каталогов. " +#~ "Чтобы это решение работало, укажите DN (уникальное имя) администратора и " +#~ "соответствующий пароль." + +#~ msgid "" +#~ "Some basic LDAP parameters are tunable and affect the locations where " +#~ "GOsa saves people and groups, including the way accounts get created. " +#~ "Check the values below if the fit your needs." +#~ msgstr "" +#~ "Некоторые основные параметры LDAP изменяемы и влияют на расположение " +#~ "сохраняемой информации о пользователях и группах, а также на способ " +#~ "создания учетных записей. Проверьте, подходят ли вам значения, указанные " +#~ "ниже." + +#~ msgid "Samba settings" +#~ msgstr "Настройки Samba" + +#, fuzzy +#~ msgid "Samba SID" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "RID base" +#~ msgstr "Базы данных" + +#, fuzzy +#~ msgid "Workstation container" +#~ msgstr "Имя рабочий станции" + +#, fuzzy +#~ msgid "Samba SID mapping" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "Timezone" +#~ msgstr "Мобильный" + +#, fuzzy +#~ msgid "Please choose your preferred timezone here" +#~ msgstr "Язык по умолчанию" + +#, fuzzy +#~ msgid "Additional GOsa settings" +#~ msgstr "Дополнительные записи в fstab" + +#, fuzzy +#~ msgid "Enable DNS extension" +#~ msgstr "Удалить параметры" + +#, fuzzy +#~ msgid "Enable DHCP extension" +#~ msgstr "Удалить параметры" + +#, fuzzy +#~ msgid "Enable mime type management" +#~ msgstr "Управление системами" + +#, fuzzy +#~ msgid "Enable FAI release management" +#~ msgstr "Управление подразделениями" + +#, fuzzy +#~ msgid "Enable user netatalk plugin" +#~ msgstr "Создать телефонный аккаунт" + +#, fuzzy +#~ msgid "Government mode" +#~ msgstr "в папку" + +#, fuzzy +#~ msgid "Logging options" +#~ msgstr "состояние неизвестно" + +#, fuzzy +#~ msgid "Syslog" +#~ msgstr "Системные журналы" + +#, fuzzy +#~ msgid "Mail settings" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Mail method" +#~ msgstr "Почтовые настройки" + +#, fuzzy +#~ msgid "Vacation templates" +#~ msgstr "Шаблон рабочей станции" + +#, fuzzy +#~ msgid "Snapshots / Undo" +#~ msgstr "Приложение" + +#, fuzzy +#~ msgid "Enable snapshots" +#~ msgstr "Создать настройки запись эл. почты" + +#, fuzzy +#~ msgid "Snapshot base" +#~ msgstr "Приложение" + +#, fuzzy +#~ msgid "GOsa core settings" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Disable primary group filter" +#~ msgstr "Показать группы пользователей" + +#, fuzzy +#~ msgid "Display summary in listings" +#~ msgstr "Шаблон для групп" + +#, fuzzy +#~ msgid "Honour administrative units" +#~ msgstr "Управление группами" + +#, fuzzy +#~ msgid "Smarty compile directory" +#~ msgstr "Домашний каталог" + +#, fuzzy +#~ msgid "Path for PPD storage" +#~ msgstr "Хэширование паролей" + +#, fuzzy +#~ msgid "Path for kiosk profile storage" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Override sudo role ou" +#~ msgstr "состояние неизвестно" + +#, fuzzy +#~ msgid "Mail queue script" +#~ msgstr "Путь к сценариям" + +#, fuzzy +#~ msgid "Notification script" +#~ msgstr "Изменить сертификаты" + +#, fuzzy +#~ msgid "Login attribute" +#~ msgstr "Атрибут DN пользователей" + +#, fuzzy +#~ msgid "Warn if session is not encrypted" +#~ msgstr "Данные, передаваемые в течение этого сеанса, не будут зашифрованы." + +#, fuzzy +#~ msgid "Remember dialog filter settings" +#~ msgstr "Общая информация о пользователе" + +#, fuzzy +#~ msgid "Session lifetime" +#~ msgstr "Конфликт сеансов" + +#, fuzzy +#~ msgid "Show PHP errors" +#~ msgstr "Ошибка LDAP:" + +#, fuzzy +#~ msgid "Maximum LDAP query time" +#~ msgstr "Размер квоты" + +#, fuzzy +#~ msgid "Debug level" +#~ msgstr "Уровень информативности" + +#, fuzzy +#~ msgid "Disabled" +#~ msgstr "отключен" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "отключен" + +#, fuzzy +#~ msgid "GOsa settings 1/3" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "GOsa generic settings" +#~ msgstr "Общая информация о пользователе" + +#~ msgid "People storage ou" +#~ msgstr "Структурная единица (OU) пользователей" + +#~ msgid "Group storage ou" +#~ msgstr "OU групп" + +#, fuzzy +#~ msgid "The given password differ value is not numeric." +#~ msgstr "Значение поля \"Квота\" некорректно." + +#, fuzzy +#~ msgid "GOsa settings 2/3" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Customize special parameters" +#~ msgstr "Изменить параметры" + +#, fuzzy +#~ msgid "GOsa settings 3/3" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Maximum LDAP query time must be a numeric value!" +#~ msgstr "Размер квоты" + +#, fuzzy +#~ msgid "Write configuration file" +#~ msgstr "Настроить" + +#, fuzzy +#~ msgid "Finish - write the configuration file" +#~ msgstr "Настроить" + +#, fuzzy +#~ msgid "" +#~ "Your configuration file is currently world readable. Please update the " +#~ "file permissions!" +#~ msgstr "" +#~ "Не удается прочитать файл настройки GOsa %s/gosa.conf. Операция прервана." + +#, fuzzy +#~ msgid "The configuration is currently not readable or it does not exists." +#~ msgstr "" +#~ "Не удается прочитать файл настройки GOsa %s/gosa.conf. Операция прервана." + +#, fuzzy +#~ msgid "" +#~ "After downloading and placing the file under %s, please make sure that " +#~ "the user the webserver is running with is able to read %s, while other " +#~ "users shouldn't. You may want to execute these commands to achieve this " +#~ "requirement:" +#~ msgstr "" +#~ "Поместив файл gosa.conf в каталог /etc/gosa, убедитесь, что только " +#~ "пользователь веб-сервера может его читать. Для этого вам, возможно, " +#~ "понадобится выполнить следующие команды:" + +#, fuzzy +#~ msgid "Create a basic, single site configuration" +#~ msgstr "Базы данных" + +#, fuzzy +#~ msgid "Find every possible configuration error" +#~ msgstr "Настроить" + +#, fuzzy +#~ msgid "To continue..." +#~ msgstr "Продолжение настройки..." + +#~ msgid "Organization" +#~ msgstr "Организация" + +#, fuzzy +#~ msgid "Mail address" +#~ msgstr "MAC-адрес" + +#, fuzzy +#~ msgid "Check again" +#~ msgstr "Проверить" + +#, fuzzy +#~ msgid "Move selected workstations" +#~ msgstr "Выберите чтобы посмотреть рабочие станции" + +#, fuzzy +#~ msgid "Hide changes" +#~ msgstr "Удалить телефонный аккаунт" + +#, fuzzy +#~ msgid "Show changes" +#~ msgstr "Показать телефоны" + +#, fuzzy +#~ msgid "Move selected users into this people tree" +#~ msgstr "Создать шаблон" + +#, fuzzy +#~ msgid "Create a new GOsa administrator account" +#~ msgstr "Создать настройки запись эл. почты" + +#~ msgid "User ID" +#~ msgstr "Идентификатор пользователя" + +#, fuzzy +#~ msgid "Password (again)" +#~ msgstr "Хэширование паролей" + +#, fuzzy +#~ msgid "Current" +#~ msgstr "Текущий пароль" + +#, fuzzy +#~ msgid "After migration" +#~ msgstr "Управление пользователями" + +#, fuzzy +#~ msgid "Refresh" +#~ msgstr "Ссылки" + +#, fuzzy +#~ msgid "Welcome" +#~ msgstr "Добро пожаловать %s!" + +#, fuzzy +#~ msgid "The welcome message" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Welcome to GOsa setup wizard" +#~ msgstr "Добро пожаловать в раздел настройки GOsa!" + +#, fuzzy +#~ msgid "PHP setup configuration" +#~ msgstr "Базы данных" + +#, fuzzy +#~ msgid "show information" +#~ msgstr "Личная информация" + +#, fuzzy +#~ msgid "LDAP connection" +#~ msgstr "Отключение" + +#~ msgid "Location name" +#~ msgstr "Местоположение" + +#, fuzzy +#~ msgid "Connection URL" +#~ msgstr "Подключение" + +#, fuzzy +#~ msgid "TLS connection" +#~ msgstr "Соединение..." + +#, fuzzy +#~ msgid "Authentication" +#~ msgstr "Рабочая станция Windows" + +#~ msgid "Admin DN" +#~ msgstr "DN администратора" + +#, fuzzy +#~ msgid "Select user" +#~ msgstr "Удалить" + +#~ msgid "Admin password" +#~ msgstr "Пароль администратора" + +#, fuzzy +#~ msgid "Schema based settings" +#~ msgstr "Настройки Samba" + +#, fuzzy +#~ msgid "Current status" +#~ msgstr "Состояние системы" + +#, fuzzy +#~ msgid "LDAP inspection" +#~ msgstr "Проверка конфигурации PHP" + +#, fuzzy +#~ msgid "Checking for root object" +#~ msgstr "Проверка модуля gd" + +#, fuzzy +#~ msgid "Checking for invisible departments" +#~ msgstr "Проверка поддержки gettext" + +#, fuzzy +#~ msgid "Checking for invisible users" +#~ msgstr "Проверка поддержки gettext" + +#, fuzzy +#~ msgid "Checking for super administrator" +#~ msgstr "Проверка дополнительных программ" + +#, fuzzy +#~ msgid "Checking for users outside the people tree" +#~ msgstr "Проверка модуля cups" + +#, fuzzy +#~ msgid "Checking for groups outside the groups tree" +#~ msgstr "Проверка модуля cups" + +#, fuzzy +#~ msgid "Checking for duplicated UID numbers" +#~ msgstr "Проверка поддержки gettext" + +#, fuzzy +#~ msgid "Checking for duplicate GID numbers" +#~ msgstr "Проверка поддержки gettext" + +#, fuzzy +#~ msgid "Checking for old style USB devices" +#~ msgstr "Проверка модуля gd" + +#, fuzzy +#~ msgid "Checking for old services that have to be migrated" +#~ msgstr "Проверка модуля cups" + +#, fuzzy +#~ msgid "Checking for old style application menus" +#~ msgstr "Проверка поддержки gettext" + +#, fuzzy +#~ msgid "LDAP query failed" +#~ msgstr "Невозможно выполнить запрос к базе данных!" + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'uidNumber'." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'gidNumber'." +#~ msgstr "Укажите корректный номер телефона." + +#~ msgid "Failed" +#~ msgstr "Ошибка" + +#, fuzzy +#~ msgid "Found %s groups outside the configured tree '%s'." +#~ msgstr "Вы собираетесь удалить объект %s." + +#, fuzzy +#~ msgid "Move" +#~ msgstr "Режим" + +#, fuzzy +#~ msgid "Migration error" +#~ msgstr "Дата" + +#, fuzzy +#~ msgid "Cannot migrate department '%s':" +#~ msgstr "Список подразделений" + +#, fuzzy +#~ msgid "Input error" +#~ msgstr "Ошибка LDAP:" + +#, fuzzy +#~ msgid "Password error" +#~ msgstr "Срок действия пароля истекает" + +#, fuzzy +#~ msgid "Provided passwords do not match!" +#~ msgstr "Введенные пароли не совпадают!" + +#, fuzzy +#~ msgid "Specify a valid user ID!" +#~ msgstr "Введите корректное имя пользователя!" + +#, fuzzy +#~ msgid "Cannot move users to the requested department!" +#~ msgstr "Невозможно подключиться к серверу базы данных!" + +#, fuzzy +#~ msgid "to" +#~ msgstr "Отношение" + +#, fuzzy +#~ msgid "Try to create root object" +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Copy '%s' to '%s' failed:" +#~ msgstr "Ошибка при выполнении \"%s\"!" + +#, fuzzy +#~ msgid "Updating '%s' failed: %s" +#~ msgstr "Служба печати" + +#, fuzzy +#~ msgid "License" +#~ msgstr "в" + +#, fuzzy +#~ msgid "All objects in this category" +#~ msgstr "Описание группы" + +#, fuzzy +#~ msgid "Unknown" +#~ msgstr "состояние неизвестно" + +#, fuzzy +#~ msgid "Select to list objects of type '%s'." +#~ msgstr "Выбрать объекты для добавления" + +#, fuzzy +#~ msgid "Select to list objects containig '%s'." +#~ msgstr "Показать группы с пользователями" + +#, fuzzy +#~ msgid "Select to list objects that have '%s' enabled" +#~ msgstr "Выбрать объекты для добавления" + +#, fuzzy +#~ msgid "You have no permission to delete this object!" +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#, fuzzy +#~ msgid "You have no permission to delete the object:" +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#, fuzzy +#~ msgid "You have no permission to delete these objects:" +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#, fuzzy +#~ msgid "You have no permission to create this object!" +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#, fuzzy +#~ msgid "You have no permission to create the object:" +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#, fuzzy +#~ msgid "You have no permission to create these objects:" +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#, fuzzy +#~ msgid "You have no permission to modify this object!" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "You have no permission to modify the object:" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "You have no permission to modify these objects:" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "You have no permission to view this object!" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "You have no permission to view the object:" +#~ msgstr "У вас недостаточно прав для создания телефонов в этой ветке." + +#, fuzzy +#~ msgid "You have no permission to view these objects:" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "You have no permission to move this object!" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "You have no permission to move the object:" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "You have no permission to move these objects:" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "Connection information" +#~ msgstr "Личная информация" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Невозможно подключиться к серверу базы данных!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Невозможно выбрать базу данных!" + +#, fuzzy +#~ msgid "Cannot query %s database!" +#~ msgstr "Невозможно выбрать базу данных!" + +#, fuzzy +#~ msgid "The field '%s' contains a reserved keyword!" +#~ msgstr "Значение поля \"Факс\" содержит недопустимый номер телефона." + +#, fuzzy +#~ msgid "Command specified as %s hook for plugin '%s' does not exist!" +#~ msgstr "" +#~ "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s" +#~ "\"." + +#, fuzzy +#~ msgid "'%s' command is invalid!" +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "'%s' command (%s) is invalid!" +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "Cannot execute '%s' command!" +#~ msgstr "Невозможно выбрать базу данных!" + +#, fuzzy +#~ msgid "Cannot execute '%s' command (%s)!" +#~ msgstr "Невозможно выбрать базу данных!" + +#, fuzzy +#~ msgid "Value for '%s' is too large!" +#~ msgstr "Значение 'UID' слишком маленькое." + +#, fuzzy +#~ msgid "Value for '%s' is too small!" +#~ msgstr "Значение 'UID' слишком маленькое." + +#, fuzzy +#~ msgid "'%s' must be %d or above!" +#~ msgstr "" +#~ "У вас должна быть установка PHP версии не ниже 4.1.0, так как в ней " +#~ "реализованы некоторые новые функции и исправлены некоторые ошибки." + +#, fuzzy +#~ msgid "There is already an entry with this '%s' attribute in the system!" +#~ msgstr "" +#~ "Пользователь с таким регистрационным именем в базе данных уже существует." + +#, fuzzy +#~ msgid "The required field '%s' is empty!" +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters" +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#, fuzzy +#~ msgid "'%s' are not allowed!" +#~ msgstr "Сменить пароль" + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters!" +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#, fuzzy +#~ msgid "Missing %s PHP extension!" +#~ msgstr "Удалить параметры" + +#, fuzzy +#~ msgid "Add %s" +#~ msgstr "Добавить" + +#, fuzzy +#~ msgid "Delete %s" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Set %s" +#~ msgstr "Установить" + +#, fuzzy +#~ msgid "Edit..." +#~ msgstr "Изменить" + +#, fuzzy +#~ msgid "Edit %s..." +#~ msgstr "Пользователи домена" + +#, fuzzy +#~ msgid "This account has no valid %s extensions!" +#~ msgstr "Для этой учетной записи нет корректных расширений GOsa." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи используются атрибуты POSIX. Вы можете отключить их " +#~ "использование, щелкнув ниже." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. To disable them, you'll need to " +#~ "remove the %s settings first!" +#~ msgstr "" +#~ "В этой учетной записи используются атрибуты POSIX. Чтобы отключить их " +#~ "использование, сначала нужно удалить учетную запись Samba." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи не используются атрибуты POSIX. Вы можете " +#~ "использовать их, щелкнув ниже." + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. To enable them, you'll need to add " +#~ "the %s settings first!" +#~ msgstr "" +#~ "В этой учетной записи используются атрибуты POSIX. Чтобы отключить их " +#~ "использование, сначала нужно удалить учетную запись Samba." + +#, fuzzy +#~ msgid "" +#~ "This account has %s features settings. To disable them, you'll need to " +#~ "add the %s settings first!" +#~ msgstr "" +#~ "В этой учетной записи используются атрибуты POSIX. Чтобы отключить их " +#~ "использование, сначала нужно удалить учетную запись Samba." + +#, fuzzy +#~ msgid "Add %s settings" +#~ msgstr "Дополнительные записи в fstab" + +#, fuzzy +#~ msgid "Remove %s settings" +#~ msgstr "Атрибуты UNIX" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." + +#~ msgid "January" +#~ msgstr "Январь" + +#~ msgid "February" +#~ msgstr "Февраль" + +#~ msgid "March" +#~ msgstr "Март" + +#~ msgid "April" +#~ msgstr "Апрель" + +#~ msgid "May" +#~ msgstr "Май" + +#~ msgid "June" +#~ msgstr "Июнь" + +#~ msgid "July" +#~ msgstr "Июль" + +#~ msgid "August" +#~ msgstr "Август" + +#~ msgid "September" +#~ msgstr "Сентябрь" + +#~ msgid "October" +#~ msgstr "Октябрь" + +#~ msgid "November" +#~ msgstr "Ноябрь" + +#~ msgid "December" +#~ msgstr "Декабрь" + +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "Имя сервера" + +#, fuzzy +#~ msgid "Monday" +#~ msgstr "месяц" + +#, fuzzy +#~ msgid "read operation" +#~ msgstr "Почтовые настройки" + +#, fuzzy +#~ msgid "modify operation" +#~ msgstr "Личная информация" + +#, fuzzy +#~ msgid "delete operation" +#~ msgstr "Выберите чтобы посмотреть рабочие станции" + +#, fuzzy +#~ msgid "search operation" +#~ msgstr "Учетная запись" + +#, fuzzy +#~ msgid "authentication" +#~ msgstr "Рабочая станция Windows" + +#, fuzzy +#~ msgid "LDAP %s failed!" +#~ msgstr "Невозможно выполнить запрос к базе данных!" + +#, fuzzy +#~ msgid "LDAP operation failed!" +#~ msgstr "Невозможно выполнить запрос к базе данных!" + +#, fuzzy +#~ msgid "Upload failed: %s" +#~ msgstr "Служба печати" + +#, fuzzy +#~ msgid "This '%s' is still in use." +#~ msgstr "Описание группы" + +#, fuzzy +#~ msgid "This '%s' is still in use by these objects: %s" +#~ msgstr "Описание группы" + +#, fuzzy +#~ msgid "Cannot open file '%s' for reading!" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Cannot open file '%s' for writing!" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Cannot delete file '%s'!" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Cannot create folder '%s'!" +#~ msgstr "Список подразделений" + +#, fuzzy +#~ msgid "Cannot delete folder '%s'!" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Checking for %s support" +#~ msgstr "Проверка поддержки gettext" + +#~ msgid "ACL" +#~ msgstr "Доступ" + +#~ msgid "References" +#~ msgstr "Ссылки" + +#, fuzzy +#~ msgid "Cannot not parse XML!" +#~ msgstr "Слишком много пользователей, невозможно создать идентификатор!" + +#, fuzzy +#~ msgid "Cannot send abort event for entry %s!" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." +#~ msgstr "Ошибка при подключении к LDAP-серверу. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Username / UID is not unique inside the LDAP tree!" +#~ msgstr "" +#~ "Имя/идентификатор пользователя не уникальны. Проверьте свою базу данных " +#~ "LDAP." + +#, fuzzy +#~ msgid "" +#~ "Username / UID is not unique inside the LDAP tree. Please contact your " +#~ "Administrator." +#~ msgstr "" +#~ "Имя/идентификатор пользователя не уникальны. Проверьте свою базу данных " +#~ "LDAP." + +#, fuzzy +#~ msgid "" +#~ "Cannot create locking information in LDAP tree. Please contact your " +#~ "administrator!" +#~ msgstr "" +#~ "Не удается считать блокировку в базе данных LDAP. Проверьте, раздел " +#~ "\"config\" в файле gosa.conf!" + +#, fuzzy +#~ msgid "LDAP server returned: %s" +#~ msgstr "LDAP-сервер" + +#, fuzzy +#~ msgid "" +#~ "Found multiple locks for object to be locked. This should not happen - " +#~ "cleaning up multiple references." +#~ msgstr "" +#~ "Для блокируемого объекта обнаружено несколько блокировок. Этого быть не " +#~ "должно, проверьте работу LDAP." + +#~ msgid "The size limit of %d entries is exceed!" +#~ msgstr "Найдено более %d объектов." + +#~ msgid "" +#~ "Set the new size limit to %s and show me this message if the limit still " +#~ "exceeds" +#~ msgstr "" +#~ "Установить новое значение лимита в %s и показать мне это сообщение если " +#~ "лимит будет исчерпан." + +#~ msgid "Configure" +#~ msgstr "Настроить" + +#~ msgid "incomplete" +#~ msgstr "не полный" + +#, fuzzy +#~ msgid "Continue anyway" +#~ msgstr "Продолжить" + +#, fuzzy +#~ msgid "Edit anyway" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "You're going to edit the LDAP entry/entries %s" +#~ msgstr "Вы собираетесь удалить объект %s." + +#~ msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +#~ msgstr "*АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ0123456789" + +#, fuzzy +#~ msgid "Cannot write to revision file!" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "LDAP warning" +#~ msgstr "Экспорт в LDIF" + +#, fuzzy +#~ msgid "Cannot get schema information from server. No schema check possible!" +#~ msgstr "Не удается получить информацию о схемах. Проверка схем невозможна!" + +#, fuzzy +#~ msgid "Missing required object class '%s'!" +#~ msgstr "Список подразделений" + +#~ msgid "German" +#~ msgstr "Немецкий" + +#~ msgid "French" +#~ msgstr "Французский" + +#~ msgid "Spanish" +#~ msgstr "Испанский" + +#~ msgid "English" +#~ msgstr "Английский" + +#~ msgid "Dutch" +#~ msgstr "Датский" + +#, fuzzy +#~ msgid "Polish" +#~ msgstr "Английский" + +#, fuzzy +#~ msgid "Chinese" +#~ msgstr "сброс" + +#, fuzzy +#~ msgid "Vietnamese" +#~ msgstr "Имя" + +#~ msgid "Russian" +#~ msgstr "Русский" + +#, fuzzy +#~ msgid "" +#~ "Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to " +#~ "exist." +#~ msgstr "" +#~ "Не удается найти команду \"%s\", указанную в поле POSTREMOVE модуля \"%s" +#~ "\"." + +#, fuzzy +#~ msgid "You're about to delete the snapshot '%s'." +#~ msgstr "Вы собираетесь удалить группу \"%s\"." + +#, fuzzy +#~ msgid "Remove snapshot" +#~ msgstr "Создать настройки запись эл. почты" + +#~ msgid "XML error in gosa.conf: %s at line %d" +#~ msgstr "Ошибка XML в gosa.conf: %s в строке %d" + +#, fuzzy +#~ msgid "Cannot bind to LDAP. Please contact the system administrator." +#~ msgstr "" +#~ "Не удается начать сеанс на LDAP-сервере. Обратитесь к системному " +#~ "администратору." + +#, fuzzy +#~ msgid "SID and/or RIDBASE missing in the configuration!" +#~ msgstr "В вашем файле настройки отсутствуют значения SID и/или RIDBASE!" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "Настроить" + +#, fuzzy +#~ msgid "Copy and paste failed!" +#~ msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Cannot set permission for '%s'" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "No write permission in '%s'" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Paste" +#~ msgstr "Дата" + +#, fuzzy +#~ msgid "Cannot paste" +#~ msgstr "Создать телефонный аккаунт" + +#, fuzzy +#~ msgid "You are not allowed to create a snapshot for %s." +#~ msgstr "Вам не разрешено менять пароль." + +#, fuzzy +#~ msgid "You are not allowed to restore a snapshot for %s." +#~ msgstr "Вам не разрешено менять пароль." + +#, fuzzy +#~ msgid "Restore" +#~ msgstr "Повторить" + +#, fuzzy +#~ msgid "Create snapshot" +#~ msgstr "Создать настройки запись эл. почты" + +#, fuzzy +#~ msgid "Create a new snapshot from this object" +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Компания" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Logging failed: %s" +#~ msgstr "Служба печати" + +#, fuzzy +#~ msgid "Invalid option '%s' specified!" +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#, fuzzy +#~ msgid "Specified objectType is empty or invalid!" +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "MySQL error" +#~ msgstr "Ошибка LDAP:" + +#, fuzzy +#~ msgid "Cannot add location to the database!" +#~ msgstr "Невозможно подключиться к серверу базы данных!" + +#, fuzzy +#~ msgid "Go to root department" +#~ msgstr "Список подразделений" + +#, fuzzy +#~ msgid "Root" +#~ msgstr "Перезагрузить" + +#, fuzzy +#~ msgid "Go up one department" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Go to users department" +#~ msgstr "Выберите подразделение" + +#, fuzzy +#~ msgid "Home" +#~ msgstr "Имя системы" + +#, fuzzy +#~ msgid "Choose a base" +#~ msgstr "Выберите, чтобы просмотреть серверы" + +#, fuzzy +#~ msgid "Use" +#~ msgstr "Пользователь" + +#, fuzzy +#~ msgid "Filter entries with this syntax" +#~ msgstr "Показать подходяшие адреса" + +#, fuzzy +#~ msgid "Certificate is empty!" +#~ msgstr "Сертификаты" + +#, fuzzy +#~ msgid "Cannot extract information for non PEM certificates!" +#~ msgstr "Не удается создать квоту IMAP. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "No valid certificate loaded!" +#~ msgstr "Изменить сертификаты" + +#, fuzzy +#~ msgid "XML error in guide.xml: %s at line %d" +#~ msgstr "Ошибка XML в gosa.conf: %s в строке %d" + +#, fuzzy +#~ msgid "Manage access control lists" +#~ msgstr "Параметры доступа" + +#, fuzzy +#~ msgid "All categories" +#~ msgstr "Категория" + +#, fuzzy +#~ msgid "One level" +#~ msgstr "Уровень информативности" + +#, fuzzy +#~ msgid "Current object" +#~ msgstr "Текущий пароль" + +#, fuzzy +#~ msgid "Complete subtree" +#~ msgstr "не полный" + +#~ msgid "Groups" +#~ msgstr "Группы" + +#, fuzzy +#~ msgid "Down" +#~ msgstr "Домен" + +#, fuzzy +#~ msgid "No ACL settings for this category!" +#~ msgstr "Описание группы" + +#, fuzzy +#~ msgid "category ACL" +#~ msgstr "Категория" + +#, fuzzy +#~ msgid "Show/hide advanced settings" +#~ msgstr "Настройки телефона" + +#, fuzzy +#~ msgid "Remove objects" +#~ msgstr "Включаемые объекты" + +#~ msgid "read" +#~ msgstr "чтение" + +#~ msgid "write" +#~ msgstr "запись" + +#, fuzzy +#~ msgid "Complete object" +#~ msgstr "Включаемые объекты" + +#, fuzzy +#~ msgid "Unkown ACL type '%s'!" +#~ msgstr "состояние неизвестно" + +#, fuzzy +#~ msgid "Unknown entry '%s'!" +#~ msgstr "состояние неизвестно" + +#, fuzzy +#~ msgid "Role: %s" +#~ msgstr "Роль" + +#, fuzzy +#~ msgid "unknown role" +#~ msgstr "состояние неизвестно" + +#, fuzzy +#~ msgid "Contains settings for these objects: %s" +#~ msgstr "Описание группы" + +#, fuzzy +#~ msgid "Access control list" +#~ msgstr "Параметры доступа" + +#, fuzzy +#~ msgid "ACL roles" +#~ msgstr "Доступ" + +#, fuzzy +#~ msgid "Role name" +#~ msgstr "Имя сервера" + +#, fuzzy +#~ msgid "Role description" +#~ msgstr "Описание подразделения" + +#, fuzzy +#~ msgid "You are currently editing mutliple entries." +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#, fuzzy +#~ msgid "Password reset" +#~ msgstr "Срок действия пароля истекает" + +#, fuzzy +#~ msgid "The user password was resetted, please set a new password value!" +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#, fuzzy +#~ msgid "while operating on '%s' using LDAP server '%s'" +#~ msgstr "Ошибка при подключении к LDAP-серверу. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "while operating on LDAP server %s" +#~ msgstr "Ошибка при подключении к LDAP-серверу. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Send bugreport" +#~ msgstr "Отправитель" + +#, fuzzy +#~ msgid "Toggle information" +#~ msgstr "Личная информация" + +#, fuzzy +#~ msgid "PHP error" +#~ msgstr "Ошибка LDAP:" + +#, fuzzy +#~ msgid "function" +#~ msgstr "Действие" + +#, fuzzy +#~ msgid "static" +#~ msgstr "Состояние" + +#, fuzzy +#~ msgid "method" +#~ msgstr "Почтовые настройки" + +#, fuzzy +#~ msgid "Line" +#~ msgstr "в" + +#, fuzzy +#~ msgid "Arguments" +#~ msgstr "подразделения" + +#, fuzzy +#~ msgid "ACL management" +#~ msgstr "Управление подразделениями" + +#, fuzzy +#~ msgid "ACL Templates" +#~ msgstr "Шаблон" + +#, fuzzy +#~ msgid "" +#~ "This includes all system and setup informations. Please double check if " +#~ "your really want to do this since there is no way for GOsa to get your " +#~ "data back." +#~ msgstr "" +#~ "Сюда входит вся информация о системе и ее настройках. Подумайте " +#~ "еще раз, действительно ли вам нужно удаление, так как GOsa не сможет " +#~ "отменить результаты этой операции." + +#, fuzzy +#~ msgid "" +#~ "Best thing to do before performing this action would be to save the " +#~ "current contents of your LDAP tree in a file. So - if you've done so - " +#~ "press 'Delete' to continue or 'Cancel' to abort." +#~ msgstr "" +#~ "Лучше всего перед удалением сохранить резервную копию текущего дерева " +#~ "LDAP в файл. Если вы сделали это и действительно хотите выполнить " +#~ "удаление, нажмите Удалить, иначе нажмите Отмена." + +#, fuzzy +#~ msgid "List of acls" +#~ msgstr "Список групп" + +#, fuzzy +#~ msgid "Display acls matching" +#~ msgstr "Шаблон для групп" + +#~ msgid "Role" +#~ msgstr "Роль" + +#, fuzzy +#~ msgid "Edit acl role" +#~ msgstr "Пользователи домена" + +#, fuzzy +#~ msgid "Edit acl" +#~ msgstr "Список систем" + +#, fuzzy +#~ msgid "Delete acl" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "ACL role" +#~ msgstr "Доступ" + +#, fuzzy +#~ msgid "Access control roles" +#~ msgstr "Параметры доступа" + +#, fuzzy +#~ msgid "Edit AC roles" +#~ msgstr "Доступ" + +#, fuzzy +#~ msgid "Reset ACL" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "No ACL settings for this category" +#~ msgstr "Описание группы" + +#, fuzzy +#~ msgid "ACL for these objects: %s" +#~ msgstr "Описание группы" + +#, fuzzy +#~ msgid "Edit category ACL" +#~ msgstr "Список систем" + +#, fuzzy +#~ msgid "Reset category ACL" +#~ msgstr "Категория" + +#, fuzzy +#~ msgid "Object in use" +#~ msgstr "Имя объекта" + +#, fuzzy +#~ msgid "" +#~ "To change the user password use the fields below. The changes take effect " +#~ "immediately. Please memorize the new password, because the user wouldn't " +#~ "be able to login without it." +#~ msgstr "" +#~ "В полях ниже вы можете изменить пароль выбранного пользователя. Изменения " +#~ "вступят в силу немедленно. Пожалуйста, запомните новый пароль, так как " +#~ "иначе пользователь не сможет войти в систему." + +#, fuzzy +#~ msgid "" +#~ "Changing the password affects your authentification on mail, proxy, samba " +#~ "and unix services." +#~ msgstr "" +#~ "Изменение пароля влияет на аутентификацию при использовании почты, прокси-" +#~ "сервера, Samba и служб UNIX." + +#~ msgid "Repeat new password" +#~ msgstr "Подтверждение" + +#, fuzzy +#~ msgid "Strength" +#~ msgstr "Улица" + +#~ msgid "Set password" +#~ msgstr "Изменить пароль" + +#~ msgid "User administration" +#~ msgstr "Управление пользователями" + +#~ msgid "" +#~ "This includes all account data, system access rules, imap settings, etc. " +#~ "for this user. Please double check if your really want to do this since " +#~ "there is no way for GOsa to get your data back." +#~ msgstr "" +#~ "Сюда входит вся информация об учетной записи этого пользователя, его " +#~ "права доступа в системе, настройки IMAP и т. д. Подумайте еще раз, " +#~ "действительно ли вам нужно удаление, так как GOsa не сможет отменить " +#~ "результаты этой операции." + +#~ msgid "Creating a new user using templates" +#~ msgstr "Создание пользователя на основе шаблона" + +#, fuzzy +#~ msgid "" +#~ "Creating a new user can be assisted by using templates. Many database " +#~ "records will be filled automatically. Choose 'none' to skip the usage of " +#~ "templates." +#~ msgstr "" +#~ "Можно создавать пользователей на основе шаблонов. При этом многие поля в " +#~ "базе данных будут заполнены автоматически. Выберите нет, чтобы не " +#~ "использовать шаблоны." + +#~ msgid "Template" +#~ msgstr "Шаблон" + +#, fuzzy +#~ msgid "Last name" +#~ msgstr "Список" + +#, fuzzy +#~ msgid "First name" +#~ msgstr "Список" + +#, fuzzy +#~ msgid "Manage users" +#~ msgstr "Пользователи домена" + +#, fuzzy +#~ msgid "Infrastructure error" +#~ msgstr "Ошибка LDAP:" + +#, fuzzy +#~ msgid "You have no permission to change this users password!" +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#, fuzzy +#~ msgid "You have no permission to modify object '%s'!" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "You have no permission to use this template!" +#~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#, fuzzy +#~ msgid "user" +#~ msgstr "пользователи" + +#, fuzzy +#~ msgid "You have no permission to change the lock status for this user!" +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#~ msgid "Given name" +#~ msgstr "Имя" + +#, fuzzy +#~ msgid "Applying a template" +#~ msgstr "Шаблон" + +#~ msgid "List of users" +#~ msgstr "Список пользователей" + +#, fuzzy +#~ msgid "Show %s" +#~ msgstr "Показать группы" + +#, fuzzy +#~ msgid "templates" +#~ msgstr "Шаблон" + +#, fuzzy +#~ msgid "GOsa object" +#~ msgstr "Объект" + +#, fuzzy +#~ msgid "functional users" +#~ msgstr "Показать обычных пользователей" + +#, fuzzy +#~ msgid "Posix" +#~ msgstr "Прокси-сервер" + +#, fuzzy +#~ msgid "POSIX users" +#~ msgstr "Атрибуты UNIX" + +#~ msgid "Mail" +#~ msgstr "Почта" + +#, fuzzy +#~ msgid "mail users" +#~ msgstr "Пользователи домена" + +#~ msgid "Samba" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "samba users" +#~ msgstr "Пользователи домена" + +#~ msgid "Proxy" +#~ msgstr "Прокси-сервер" + +#, fuzzy +#~ msgid "proxy users" +#~ msgstr "Показать пользователей с прокси-серверами" + +#, fuzzy +#~ msgid "Apply template" +#~ msgstr "Шаблон" + +#, fuzzy +#~ msgid "Edit generic properties" +#~ msgstr "Изменить свойства" + +#, fuzzy +#~ msgid "Edit UNIX properties" +#~ msgstr "Изменить свойства" + +#, fuzzy +#~ msgid "Edit environment properties" +#~ msgstr "Изменить свойства" + +#, fuzzy +#~ msgid "Edit mail properties" +#~ msgstr "Изменить свойства" + +#, fuzzy +#~ msgid "Edit phone properties" +#~ msgstr "Изменить свойства" + +#~ msgid "Fax" +#~ msgstr "Факс" + +#, fuzzy +#~ msgid "Edit fax properies" +#~ msgstr "Изменить свойства" + +#, fuzzy +#~ msgid "Edit samba properties" +#~ msgstr "Изменить свойства" + +#, fuzzy +#~ msgid "Edit netatalk properties" +#~ msgstr "Изменить свойства" + +#, fuzzy +#~ msgid "Create user from template" +#~ msgstr "Создать шаблон" + +#, fuzzy +#~ msgid "Create user with this template" +#~ msgstr "Создать шаблон" + +#, fuzzy +#~ msgid "inactive" +#~ msgstr "Личный" + +#, fuzzy +#~ msgid "active" +#~ msgstr "Личный" + +#, fuzzy +#~ msgid "password" +#~ msgstr "Пароль" + +#, fuzzy +#~ msgid "Not allowed" +#~ msgstr "Сменить пароль" + +#, fuzzy +#~ msgid "Delete user" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Number of listed users" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Cannot find group SID in your configuration!" +#~ msgstr "Не могу найти SID в базе LDAP или в сонфигурационном файле!" + +#~ msgid "Samba group" +#~ msgstr "Группа Samba" + +#~ msgid "Domain admins" +#~ msgstr "Администраторы домена" + +#~ msgid "Domain users" +#~ msgstr "Пользователи домена" + +#~ msgid "Domain guests" +#~ msgstr "Непривилегированные пользователи домена" + +#~ msgid "Special group (%d)" +#~ msgstr "Специальная группа (%d)" + +#~ msgid "full access" +#~ msgstr "полный доступ" + +#~ msgid "allow access to these hosts" +#~ msgstr "разрешить доступ только на эти хосты" + +#, fuzzy +#~ msgid "! unknown id" +#~ msgstr "состояние неизвестно" + +#, fuzzy +#~ msgid "Cannot find any SID for '%s'!" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Cannot find any RIDBASE for '%s'!" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Cannot allocate a free ID!" +#~ msgstr "Слишком много пользователей, невозможно создать идентификатор!" + +#, fuzzy +#~ msgid "Generic group settings" +#~ msgstr "Общая информация о пользователе" + +#, fuzzy +#~ msgid "Samba group type" +#~ msgstr "Группа Samba" + +#, fuzzy +#~ msgid "Samba domain name" +#~ msgstr "Домашний каталог Samba" + +#~ msgid "System trust" +#~ msgstr "Системные доверия" + +#, fuzzy +#~ msgid "Phone pickup group" +#~ msgstr "Члены телефонной группы" + +#, fuzzy +#~ msgid "Nagios group" +#~ msgstr "Контакт" + +#, fuzzy +#~ msgid "Group member" +#~ msgstr "Члены группы" + +#~ msgid "Group administration" +#~ msgstr "Управление группами" + +#~ msgid "" +#~ "This may be a primary user group. Please double check if you really want " +#~ "to do this since there is no way for GOsa to get your data back." +#~ msgstr "" +#~ "Возможно, это основная группа пользователей. Еще раз проверте что Вы " +#~ "действительно хотите удалить ее, так как GOsa не сможет отменить " +#~ "результаты этой операции." + +#~ msgid "Select systems to add" +#~ msgstr "Выберите системы для добавления" + +#~ msgid "Display systems of department" +#~ msgstr "Показать системы в подразделении" + +#~ msgid "Display systems matching" +#~ msgstr "Показать подходяшие системы" + +#~ msgid "Regular expression for matching addresses" +#~ msgstr "Регулярное выражение для поиска адреса" + +#, fuzzy +#~ msgid "Group settings" +#~ msgstr "Настройки Samba" + +#~ msgid "Group name" +#~ msgstr "Группа" + +#~ msgid "Posix name of the group" +#~ msgstr "Имя группы, соответствующее стандарту POSIX" + +#~ msgid "Normally IDs are autogenerated, select to specify manually" +#~ msgstr "" +#~ "Обычно идентификаторы создаются автоматически, но вы можете выбрать " +#~ "указание вручную" + +#~ msgid "Force GID" +#~ msgstr "Указать GID вручную" + +#~ msgid "Forced ID number" +#~ msgstr "Указанный вручную GID" + +#, fuzzy +#~ msgid "group" +#~ msgstr "группы" + +#~ msgid "Select users to add" +#~ msgstr "Выбрать пользователей для добавления" + +#, fuzzy +#~ msgid "Search within subtree" +#~ msgstr "Искать в поддеревьях" + +#~ msgid "Display users of department" +#~ msgstr "Подразделение" + +#~ msgid "Regular expression for matching user names" +#~ msgstr "Регулярное выражение, соответствующее именам пользователей" + +#~ msgid "List of groups" +#~ msgstr "Список групп" + +#~ msgid "Select to see groups that are primary groups of users" +#~ msgstr "Выберите, чтобы просмотреть список основных групп пользователей" + +#, fuzzy +#~ msgid "primary groups" +#~ msgstr "Основная группа" + +#, fuzzy +#~ msgid "samba groups mappings" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "samba groups" +#~ msgstr "Группа Samba" + +#, fuzzy +#~ msgid "application settings" +#~ msgstr "приложения" + +#, fuzzy +#~ msgid "application groups" +#~ msgstr "Показать группы приложений" + +#, fuzzy +#~ msgid "mail settings" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "mail groups" +#~ msgstr "Показать группы с эл. почтой" + +#~ msgid "Select to see normal groups that have only functional aspects" +#~ msgstr "Выберите, чтобы просмотреть список обычных групп" + +#, fuzzy +#~ msgid "functional groups" +#~ msgstr "Показать обычные группы" + +#~ msgid "User name of which groups are shown" +#~ msgstr "Имя пользователя, для которого перечисляются группы" + +#, fuzzy +#~ msgid "Number of listed groups" +#~ msgstr "Название группы" + +#~ msgid "Descriptive text for this group" +#~ msgstr "Описание группы" + +#~ msgid "Select to create a samba conform group" +#~ msgstr "Создать группу для работы с Samba" + +#~ msgid "in domain" +#~ msgstr "в домене" + +#~ msgid "Members are in a phone pickup group" +#~ msgstr "Члены телефонной группы" + +#, fuzzy +#~ msgid "Members are in a nagios group" +#~ msgstr "Члены телефонной группы" + +#, fuzzy +#~ msgid "Trust mode" +#~ msgstr "Режим" + +#~ msgid "Group members" +#~ msgstr "Члены группы" + +#, fuzzy +#~ msgid "In all groups" +#~ msgstr "Основная группа" + +#, fuzzy +#~ msgid "Not in all groups" +#~ msgstr "Показать группы с эл. почтой" + +#, fuzzy +#~ msgid "Locality" +#~ msgstr "Местоположение" + +#, fuzzy +#~ msgid "Administrative settings" +#~ msgstr "Администрирование" + +#, fuzzy +#~ msgid "Domain Component" +#~ msgstr "Администраторы домена" + +#~ msgid "Departments" +#~ msgstr "Подразделения" + +#, fuzzy +#~ msgid "Department name" +#~ msgstr "Управление подразделениями" + +#~ msgid "Category" +#~ msgstr "Категория" + +#~ msgid "State" +#~ msgstr "Адм. единица" + +#~ msgid "Address" +#~ msgstr "Адрес" + +#~ msgid "List of departments" +#~ msgstr "Список подразделений" + +#~ msgid "Regular expression for matching department names" +#~ msgstr "Регулярное выражение, соответствующее именам подразделений" + +#, fuzzy +#~ msgid "Country name" +#~ msgstr "Страна" + +#, fuzzy +#~ msgid "Name of country to create" +#~ msgstr "Имя создаваемой ветки" + +#~ msgid "Descriptive text for department" +#~ msgstr "Описание подразделения" + +#~ msgid "Choose subtree to place department in" +#~ msgstr "Выберите ветку для подразделения" + +#, fuzzy +#~ msgid "You are currently moving/renaming this department." +#~ msgstr "У вас недостаточно прав для удаления этого подразделения." + +#~ msgid "Department management" +#~ msgstr "Управление подразделениями" + +#, fuzzy +#~ msgid "" +#~ "This includes 'all' accounts, systems, etc. in this subtree. Please " +#~ "double check if your really want to do this since there is no way for " +#~ "GOsa to get your data back." +#~ msgstr "" +#~ "Это включает все учетные записи, системы и т.п. для данного " +#~ "подразделения. Подумайте еще раз, действительно ли вы хотите его удалить, " +#~ "так как GOsa не сможет отменить результаты этой операции." + +#, fuzzy +#~ msgid "Name of organization" +#~ msgstr "Организация" + +#, fuzzy +#~ msgid "Name of organization to create" +#~ msgstr "Имя создаваемой ветки" + +#~ msgid "Category for this subtree" +#~ msgstr "Категория этой ветки" + +#~ msgid "State where this subtree is located" +#~ msgstr "Адм. единица, в которой находится ветка" + +#~ msgid "Location of this subtree" +#~ msgstr "Местоположение ветки" + +#~ msgid "Postal address of this subtree" +#~ msgstr "Почтовый адрес для ветки" + +#~ msgid "Base telephone number of this subtree" +#~ msgstr "Основный телефонный номер для ветки" + +#~ msgid "Base facsimile telephone number of this subtree" +#~ msgstr "Основный номер факса для ветки" + +#, fuzzy +#~ msgid "Name of locality to create" +#~ msgstr "Имя создаваемой ветки" + +#, fuzzy +#~ msgid "Manage Departments" +#~ msgstr "Подразделения" + +#~ msgid "Country" +#~ msgstr "Страна" + +#~ msgid "Name of department" +#~ msgstr "Подразделение" + +#~ msgid "Name of subtree to create" +#~ msgstr "Имя создаваемой ветки" + +#, fuzzy +#~ msgid "Organization name" +#~ msgstr "Организация" + +#, fuzzy +#~ msgid "Postal address" +#~ msgstr "Почтовый индекс" + +#, fuzzy +#~ msgid "Phone number" +#~ msgstr "Телефонные номера" + +#~ msgid "Object groups" +#~ msgstr "Объединения" + +#, fuzzy +#~ msgid "Manage object groups" +#~ msgstr "Название группы" + +#, fuzzy +#~ msgid "Windows Install" +#~ msgstr "Рабочая станция Windows" + +#~ msgid "" +#~ "Please double check if you really want to do this since there is no way " +#~ "for GOsa to get your data back." +#~ msgstr "" +#~ "Подумайте еще раз, действительно ли вам нужно удаление, так как GOsa не " +#~ "сможет восстановить эти данные." + +#, fuzzy +#~ msgid "Please enter the new object group name" +#~ msgstr "Введите адрес сервера" + +#, fuzzy +#~ msgid "Phone queue" +#~ msgstr "Номер телефона" + +#, fuzzy +#~ msgid "Systems" +#~ msgstr "Системы" + +#~ msgid "Terminals" +#~ msgstr "Терминалы" + +#~ msgid "departments" +#~ msgstr "подразделения" + +#, fuzzy +#~ msgid "people" +#~ msgstr "Показать людей" + +#~ msgid "groups" +#~ msgstr "группы" + +#~ msgid "servers" +#~ msgstr "серверы" + +#~ msgid "workstations" +#~ msgstr "рабочие станции" + +#~ msgid "terminals" +#~ msgstr "терминалы" + +#~ msgid "printers" +#~ msgstr "принтеры" + +#~ msgid "phones" +#~ msgstr "телефоны" + +#~ msgid "applications" +#~ msgstr "приложения" + +#~ msgid "too many different objects!" +#~ msgstr "слишком много различных объектов!" + +#~ msgid "users" +#~ msgstr "пользователи" + +#, fuzzy +#~ msgid "winstations" +#~ msgstr "Рабочая станция" + +#, fuzzy +#~ msgid "Non existing dn:" +#~ msgstr "Не существующий dn:" + +#, fuzzy +#~ msgid "You can combine two different object types at maximum, only!" +#~ msgstr "" +#~ "Вы можете комбинировать не более двух различных классов в одном объекте!" + +#, fuzzy +#~ msgid "Object group generic" +#~ msgstr "Объект группы" + +#, fuzzy +#~ msgid "Sytem trust" +#~ msgstr "Системные доверия" + +#, fuzzy +#~ msgid "Member" +#~ msgstr "Включаемые объекты" + +#~ msgid "Name of the group" +#~ msgstr "Название группы" + +#~ msgid "Member objects" +#~ msgstr "Включаемые объекты" + +#, fuzzy +#~ msgid "List of object groups" +#~ msgstr "Название группы" + +#, fuzzy +#~ msgid "user groups" +#~ msgstr "группы" + +#, fuzzy +#~ msgid "nested groups" +#~ msgstr "Объединения" + +#, fuzzy +#~ msgid "department groups" +#~ msgstr "подразделения" + +#, fuzzy +#~ msgid "server groups" +#~ msgstr "серверы" + +#, fuzzy +#~ msgid "workstation groups" +#~ msgstr "рабочие станции" + +#, fuzzy +#~ msgid "windows workstation groups" +#~ msgstr "Показать рабочие станции" + +#, fuzzy +#~ msgid "terminal groups" +#~ msgstr "Показать группы с эл. почтой" + +#, fuzzy +#~ msgid "printer groups" +#~ msgstr "Основная группа" + +#, fuzzy +#~ msgid "phone groups" +#~ msgstr "Показать группы" + +#, fuzzy +#~ msgid "Number of listed object groups" +#~ msgstr "Название группы" + +#~ msgid "Display objects of department" +#~ msgstr "Показать объекты подразделения" + +#~ msgid "UNIX" +#~ msgstr "Unix" + +#~ msgid "FAX" +#~ msgstr "Факс" + +#~ msgid "FTP" +#~ msgstr "FTP" + +#~ msgid "Thin Client" +#~ msgstr "Тонкий клиент" + +#, fuzzy +#~ msgid "Contents" +#~ msgstr "Контакт" + +#~ msgid "This object has no relationship to other objects." +#~ msgstr "Данный объект не имеет ссылок на другие объекты" + +#~ msgid "Welcome %s!" +#~ msgstr "Добро пожаловать %s!" + +#, fuzzy +#~ msgid "" +#~ "This is the GOsa main menu. You can select your tasks from the menu on " +#~ "the left, or by choosing one of the pictograms below. All changes apply " +#~ "directly to your companies LDAP server." +#~ msgstr "" +#~ "Это начальная страница GOsa. Из меню слева или среди пиктограмм ниже вы " +#~ "можете выбрать нужный вам раздел. Все изменения будут сразу же " +#~ "переноситься на LDAP-сервер вашей компании." + +#, fuzzy +#~ msgid "" +#~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " +#~ "get back to the pictogram view." +#~ msgstr "" +#~ "Чтобы завершить сеанс, выберите в меню слева вверху пункт Выход. " +#~ "Чтобы вернуться на начальную страницу, выберите Начало." + +#~ msgid "The GOsa team" +#~ msgstr "Команда разработчиков GOsa" + +#~ msgid "Select groups to add" +#~ msgstr "Выберите группы для добавления" + +#~ msgid "Display groups of department" +#~ msgstr "Объединения в подразделении" + +#~ msgid "Display groups matching" +#~ msgstr "Шаблон для групп" + +#~ msgid "Display groups of user" +#~ msgstr "Показать группы пользователей" + +#, fuzzy +#~ msgid "Edit users POSIX settings" +#~ msgstr "Атрибуты UNIX" + +#, fuzzy +#~ msgid "expired" +#~ msgstr "Экспорт" + +#, fuzzy +#~ msgid "password not changeable" +#~ msgstr "Новый пароль" + +#, fuzzy +#~ msgid "password expired" +#~ msgstr "Срок действия пароля истекает" + +#~ msgid "unconfigured" +#~ msgstr "Не настроено" + +#~ msgid "Password can't be changed up to %s days after last change" +#~ msgstr "" +#~ "Пароль нельзя изменить в течение %s дн. с последней смены (shadowMin)" + +#~ msgid "Password must be changed after %s days" +#~ msgstr "Пароль должен быть изменен по истечении %s дн. (shadowMax)" + +#, fuzzy +#~ msgid "Disable account after %s days of inactivity after password expiry" +#~ msgstr "" +#~ "Отключить учетную запись, если срок действия пароля истек и прошло %s дн. " +#~ "бездействия (shadowInactive)" + +#, fuzzy +#~ msgid "Warn user %s days before password expiry" +#~ msgstr "" +#~ "Предупреждать пользователей за %s дн. до истечения срока действия пароля " +#~ "(shadowWarning)" + +#~ msgid "Group of user" +#~ msgstr "Группа пользователя" + +#~ msgid "Home directory" +#~ msgstr "Домашний каталог" + +#~ msgid "UID" +#~ msgstr "UID" + +#, fuzzy +#~ msgid "shadowMin" +#~ msgstr "Затенение" + +#, fuzzy +#~ msgid "shadowMax" +#~ msgstr "Затенение" + +#, fuzzy +#~ msgid "shadowWarning" +#~ msgstr "Затенение" + +#, fuzzy +#~ msgid "shadowInactive" +#~ msgstr "Затенение" + +#, fuzzy +#~ msgid "POSIX account" +#~ msgstr "Аккаунт FTP" + +#, fuzzy +#~ msgid "Group ID" +#~ msgstr "Группа" + +#, fuzzy +#~ msgid "Force password change on login" +#~ msgstr "Сменить пароль" + +#, fuzzy +#~ msgid "Shadow min" +#~ msgstr "Затенение" + +#, fuzzy +#~ msgid "Shadow max" +#~ msgstr "Затенение" + +#, fuzzy +#~ msgid "Shadow warning" +#~ msgstr "Затенение" + +#, fuzzy +#~ msgid "Shadow inactive" +#~ msgstr "Затенение" + +#, fuzzy +#~ msgid "Shadow expire" +#~ msgstr "Показать людей" + +#, fuzzy +#~ msgid "System trust model" +#~ msgstr "Системные доверия" + +#, fuzzy +#~ msgid "POSIX settings" +#~ msgstr "Атрибуты UNIX" + +#~ msgid "User must change password on first login" +#~ msgstr "Пользователь должен сменить пароль при первом входе в систему" + +#~ msgid "Password expires on" +#~ msgstr "Срок действия пароля истекает" + +#, fuzzy +#~ msgid "Posix settings" +#~ msgstr "Атрибуты UNIX" + +#~ msgid "Force UID/GID" +#~ msgstr "Указать UID/GID вручную" + +#~ msgid "Group membership" +#~ msgstr "Членство в группах" + +#~ msgid "(Warning: more than 16 groups are not supported by NFS!)" +#~ msgstr "" +#~ "(Предупреждение: NFS не поддерживает более 16 групп для одного " +#~ "пользователя!)" + +#~ msgid "Primary group" +#~ msgstr "Основная группа" + +#~ msgid "Account" +#~ msgstr "Учетная запись" + +#, fuzzy +#~ msgid "" +#~ "To change your personal password use the fields below. The changes take " +#~ "effect immediately. Please memorize the new password, because you " +#~ "wouldn't be able to login without it." +#~ msgstr "" +#~ "В полях ниже вы можете изменить свой пароль. Изменения вступят в силу " +#~ "немедленно. Пожалуйста, запомните новый пароль, так как иначе вы не " +#~ "сможете войти в систему." + +#~ msgid "Clear fields" +#~ msgstr "Очистить поля" + +#, fuzzy +#~ msgid "Change user password" +#~ msgstr "Сменить пароль" + +#~ msgid "You need to specify your current password in order to proceed." +#~ msgstr "Для продолжения укажите свой текущий пароль." + +#~ msgid "The password you've entered as 'New password' is empty." +#~ msgstr "Вы не указали новый пароль." + +#, fuzzy +#~ msgid "External password changer reported a problem: %s." +#~ msgstr "При попытке сменить пароль извне возникла проблема: " + +#~ msgid "" +#~ "The password you've entered as your current password doesn't match the " +#~ "real one." +#~ msgstr "Введенный вами текущий пароль не совпадает с реальным." + +#, fuzzy +#~ msgid "You have no permission to change your password." +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#, fuzzy +#~ msgid "User password" +#~ msgstr "Новый пароль" + +#~ msgid "" +#~ "You've successfully changed your password. Remember to change all " +#~ "programms configured to use it as well." +#~ msgstr "" +#~ "Вы успешно сменили свой пароль. Не забудьте изменить нужные настройки " +#~ "использующих его программ." + +#, fuzzy +#~ msgid "Password change not allowed" +#~ msgstr "Сменить пароль" + +#, fuzzy +#~ msgid "You have no permission to change your password at this time" +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#~ msgid "Personal picture" +#~ msgstr "Изображение" + +#~ msgid "" +#~ "You have changed the method your password is stored in the ldap database. " +#~ "For that reason you've to enter your password at this point again. GOsa " +#~ "will then encode it with the selected method." +#~ msgstr "" +#~ "Вы изменили метод шифрования паролей в базе LDAP. В связи с этим введите " +#~ "свой пароль снова. GOsa произведет шифрование в соответствии с выбраной " +#~ "схемой." + +#, fuzzy +#~ msgid "You have no permission to set your password!" +#~ msgstr "У вас недостаточно прав для смены своего пароля." + +#~ msgid "Generic user information" +#~ msgstr "Общая информация о пользователе" + +#~ msgid "Certificates" +#~ msgstr "Сертификаты" + +#~ msgid "Standard certificate" +#~ msgstr "Стандартный сертификат" + +#~ msgid "S/MIME certificate" +#~ msgstr "Сертификат S/MIME" + +#~ msgid "PKCS12 certificate" +#~ msgstr "Сертификат PKCS12" + +#~ msgid "Certificate serial number" +#~ msgstr "Серийный номер сертификата" + +#, fuzzy +#~ msgid "Edit organizational user settings" +#~ msgstr "Дополнительные записи в fstab" + +#~ msgid "female" +#~ msgstr "женский" + +#~ msgid "male" +#~ msgstr "мужской" + +#, fuzzy +#~ msgid "No certificate installed" +#~ msgstr "Изменить сертификаты" + +#, fuzzy +#~ msgid "The selected password method is no longer available." +#~ msgstr "У выбранного приложения нет параметров." + +#, fuzzy +#~ msgid "The selected password method requires initial configuration!" +#~ msgstr "У выбранного приложения нет параметров." + +#~ msgid "Homepage" +#~ msgstr "Домашняя страница" + +#~ msgid "Mobile" +#~ msgstr "Мобильный" + +#~ msgid "Pager" +#~ msgstr "Пейджер" + +#, fuzzy +#~ msgid "Cannot open certificate!" +#~ msgstr "Невозможно выбрать базу данных!" + +#~ msgid "Unit" +#~ msgstr "Подразделение" + +#~ msgid "House identifier" +#~ msgstr "Номер дома" + +#~ msgid "Vocation" +#~ msgstr "Специальность" + +#~ msgid "Last delivery" +#~ msgstr "Последняя доставка" + +#~ msgid "Person locality" +#~ msgstr "Местоположение сотрудника" + +#~ msgid "Unit description" +#~ msgstr "Описание подразделения" + +#~ msgid "Subject area" +#~ msgstr "Область деятельности" + +#~ msgid "Functional title" +#~ msgstr "Должность" + +#~ msgid "Public visible" +#~ msgstr "Видимый всем" + +#~ msgid "Street" +#~ msgstr "Улица" + +#~ msgid "Postal code" +#~ msgstr "Почтовый индекс" + +#, fuzzy +#~ msgid "Generic user settings" +#~ msgstr "Общая информация о пользователе" + +#, fuzzy +#~ msgid "Surname" +#~ msgstr "Имя сервера" + +#, fuzzy +#~ msgid "User identification" +#~ msgstr "Информация" + +#~ msgid "Personal title" +#~ msgstr "Обращение" + +#~ msgid "Academic title" +#~ msgstr "Академическое звание" + +#~ msgid "Date of birth" +#~ msgstr "Дата рождения" + +#, fuzzy +#~ msgid "Gender" +#~ msgstr "Отправитель" + +#, fuzzy +#~ msgid "Preferred language" +#~ msgstr "Язык по умолчанию" + +#, fuzzy +#~ msgid "User picture" +#~ msgstr "Изображение" + +#, fuzzy +#~ msgid "Department number" +#~ msgstr "Управление подразделениями" + +#, fuzzy +#~ msgid "Employee number" +#~ msgstr "Форма трудоустройства" + +#~ msgid "Employee type" +#~ msgstr "Форма трудоустройства" + +#, fuzzy +#~ msgid "Room number" +#~ msgstr "Телефонные номера" + +#, fuzzy +#~ msgid "Telefon number" +#~ msgstr "Телефонные номера" + +#, fuzzy +#~ msgid "Pager number" +#~ msgstr "Телефонные номера" + +#, fuzzy +#~ msgid "Mobile number" +#~ msgstr "Домашний телефон" + +#, fuzzy +#~ msgid "Fax number" +#~ msgstr "Терминал" + +#, fuzzy +#~ msgid "Home phone number" +#~ msgstr "Телефонные номера" + +#, fuzzy +#~ msgid "User password method" +#~ msgstr "Хэширование паролей" + +#, fuzzy +#~ msgid "User certificates" +#~ msgstr "Стандартный сертификат" + +#, fuzzy +#~ msgid "User settings" +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Clear password" +#~ msgstr "Новый пароль" + +#, fuzzy +#~ msgid "Set new password" +#~ msgstr "Изменить пароль" + +#~ msgid "Personal information" +#~ msgstr "Личная информация" + +#, fuzzy +#~ msgid "Preferred langage" +#~ msgstr "Язык по умолчанию" + +#~ msgid "Password storage" +#~ msgstr "Хэширование паролей" + +#~ msgid "Edit certificates" +#~ msgstr "Изменить сертификаты" + +#~ msgid "Organizational information" +#~ msgstr "Информация об организации" + +#~ msgid "Department No." +#~ msgstr "Номер подразделения" + +#~ msgid "Employee No." +#~ msgstr "Номер работника" + +#~ msgid "Room No." +#~ msgstr "Номер комнаты" + +#~ msgid "Change picture" +#~ msgstr "Сменить изображение" + +#, fuzzy +#~ msgid "Template name" +#~ msgstr "Шаблон" + +#~ msgid "Sex" +#~ msgstr "Пол" + +#~ msgid "Please use the phone tab" +#~ msgstr "Воспользуйтесь закладкой \"Телефон\"" + +#, fuzzy +#~ msgid "Start import" +#~ msgstr "Запуск" + +#~ msgid "ICA client" +#~ msgstr "Клиент ICA" + +#, fuzzy +#~ msgid "Printer service enabled" +#~ msgstr "Служба печати" + +#~ msgid "show chooser" +#~ msgstr "показать окно входа в систему" + +#~ msgid "direct" +#~ msgstr "напрямую" + +#~ msgid "load balanced" +#~ msgstr "с выравниваем нагрузки" diff --git a/trunk/gosa-plugins/goto/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/goto/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..1c044d400 --- /dev/null +++ b/trunk/gosa-plugins/goto/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,7183 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:31+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/ogroups/goto/termgroup.tpl:2 admin/devices/remove.tpl:2 +#: admin/applications/remove.tpl:2 admin/mimetypes/remove.tpl:2 +#: admin/systems/ppd/remove_ppd.tpl:2 addons/goto/remove.tpl:2 +#: personal/environment/class_environment.inc:139 +#: personal/environment/class_environment.inc:307 +#: personal/environment/class_environment.inc:360 +#: personal/environment/class_environment.inc:364 +msgid "Warning" +msgstr "警告" + +#: admin/ogroups/goto/termgroup.tpl:2 +msgid "" +"Actions you choose here influence all systems in this object group. " +"Additionally, all values editable here can be inherited by the clients " +"assigned to this object group." +msgstr "" +"您这里选择的动作会影响这个对象组内所有系统。而且,所有这里可以修改的值都可以" +"被分配到该对象组的对象继承。" + +#: admin/ogroups/goto/termgroup.tpl:6 +#: admin/devices/class_deviceGeneric.inc:251 +#: admin/applications/class_applicationGeneric.inc:597 +#: admin/mimetypes/generic.tpl:4 admin/mimetypes/paste_generic.tpl:4 +#: admin/mimetypes/class_mimetypeGeneric.inc:715 +#: admin/systems/goto/class_printGeneric.inc:920 +#: admin/systems/goto/class_workstationGeneric.inc:698 +msgid "Generic" +msgstr "通用配置" + +#: admin/ogroups/goto/termgroup.tpl:14 +#: admin/ogroups/goto/class_termgroup.inc:145 +#: admin/systems/goto/workstation.tpl:95 +#: admin/systems/goto/class_workstationGeneric.inc:489 +#: admin/systems/goto/class_terminalGeneric.inc:480 +#: admin/systems/goto/terminal.tpl:117 +msgid "NTP server" +msgstr "NTP 服务器" + +#: admin/ogroups/goto/termgroup.tpl:17 admin/systems/goto/workstation.tpl:98 +#: admin/systems/goto/terminal.tpl:120 +msgid "Choose server to use for synchronizing time" +msgstr "选择要用于同步时间的服务器" + +#: admin/ogroups/goto/termgroup.tpl:47 +#: admin/ogroups/goto/class_termgroup.inc:378 +#: admin/systems/goto/workstation.tpl:55 +#: admin/systems/goto/class_terminalGeneric.inc:669 +#: admin/systems/goto/terminal.tpl:47 +msgid "Mode" +msgstr "模式" + +#: admin/ogroups/goto/termgroup.tpl:50 admin/systems/goto/workstation.tpl:58 +#: admin/systems/goto/terminal.tpl:50 +msgid "Select terminal mode" +msgstr "选择终端类型" + +#: admin/ogroups/goto/termgroup.tpl:58 +#: admin/ogroups/goto/class_termgroup.inc:379 +#: admin/systems/services/syslog/class_goSyslogServer.inc:27 +#: admin/systems/services/syslog/class_goSyslogServer.inc:47 +#: admin/systems/goto/workstation.tpl:65 +#: admin/systems/goto/class_workstationGeneric.inc:712 +#: admin/systems/goto/terminal.tpl:57 +msgid "Syslog server" +msgstr "日志服务器" + +#: admin/ogroups/goto/termgroup.tpl:61 admin/systems/goto/workstation.tpl:68 +#: admin/systems/goto/terminal.tpl:60 +msgid "Choose server to use for logging" +msgstr "限制记录日志的服务器" + +#: admin/ogroups/goto/termgroup.tpl:69 +#: admin/ogroups/goto/class_termgroup.inc:382 +#: admin/systems/goto/class_terminalGeneric.inc:672 +#: admin/systems/goto/terminal.tpl:76 +msgid "Root server" +msgstr "根服务器" + +#: admin/ogroups/goto/termgroup.tpl:72 admin/systems/goto/terminal.tpl:79 +msgid "Select NFS root filesystem to use" +msgstr "选择要用的 NFS 根文件系统。" + +#: admin/ogroups/goto/termgroup.tpl:79 +#: admin/ogroups/goto/class_termgroup.inc:383 +#: admin/systems/goto/class_terminalGeneric.inc:673 +#: admin/systems/goto/terminal.tpl:86 +msgid "Swap server" +msgstr "交换服务器" + +#: admin/ogroups/goto/termgroup.tpl:82 admin/systems/goto/terminal.tpl:89 +msgid "Choose NFS filesystem to place swap files on" +msgstr "选择放置交换文件的 NFS 文件系统" + +#: admin/ogroups/goto/termgroup.tpl:110 admin/systems/goto/workstation.tpl:130 +#: admin/systems/goto/terminal.tpl:156 addons/goto/class_gotomasses.inc:415 +msgid "Action" +msgstr "行动" + +#: admin/ogroups/goto/termgroup.tpl:115 admin/systems/goto/workstation.tpl:137 +#: admin/systems/goto/terminal.tpl:161 +msgid "Select action to execute for this terminal" +msgstr "选择这个终端要执行的动作" + +#: admin/ogroups/goto/termgroup.tpl:123 admin/applications/generic.tpl:24 +#: admin/applications/class_applicationGeneric.inc:438 +#: admin/applications/class_applicationGeneric.inc:609 +#: admin/systems/goto/workstation.tpl:146 +#: admin/systems/goto/workstation.tpl:150 admin/systems/goto/terminal.tpl:169 +#: addons/goto/class_gotomasses.inc:383 +msgid "Execute" +msgstr "执行" + +#: admin/ogroups/goto/class_termgroup.inc:48 +#: admin/systems/goto/class_workstationGeneric.inc:138 +#: admin/systems/goto/class_terminalGeneric.inc:122 +msgid "Activated" +msgstr "活动" + +#: admin/ogroups/goto/class_termgroup.inc:49 +#: admin/systems/goto/class_workstationGeneric.inc:139 +#: admin/systems/goto/class_terminalGeneric.inc:121 +#: addons/goto/class_gotomasses.inc:538 +msgid "Locked" +msgstr "锁定" + +#: admin/ogroups/goto/class_termgroup.inc:95 +#: admin/systems/goto/class_terminalGeneric.inc:281 +#, fuzzy +msgid "Local swap" +msgstr "位置名称" + +#: admin/ogroups/goto/class_termgroup.inc:101 +#: admin/ogroups/goto/class_termgroup.inc:113 +#: admin/systems/goto/class_terminalStartup.inc:116 +#: admin/systems/goto/class_terminalStartup.inc:120 +#: admin/systems/goto/class_terminalService.inc:175 +#: admin/systems/goto/class_terminalService.inc:256 +#: admin/systems/goto/class_terminalService.inc:264 +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_terminalService.inc:270 +#: admin/systems/goto/class_terminalService.inc:273 +#: admin/systems/goto/class_terminalService.inc:276 +#: admin/systems/goto/class_terminalService.inc:279 +#: admin/systems/goto/class_terminalService.inc:282 +#: admin/systems/goto/class_workstationGeneric.inc:154 +#: admin/systems/goto/class_workstationStartup.inc:180 +#: admin/systems/goto/class_workstationStartup.inc:210 +#: admin/systems/goto/class_workstationService.inc:191 +#: admin/systems/goto/class_workstationService.inc:194 +#: admin/systems/goto/class_workstationService.inc:197 +#: admin/systems/goto/class_workstationService.inc:200 +#: admin/systems/goto/class_workstationService.inc:203 +#: admin/systems/goto/class_workstationService.inc:206 +#: admin/systems/goto/class_workstationService.inc:209 +#: admin/systems/goto/class_workstationService.inc:220 +#: admin/systems/goto/class_workstationService.inc:221 +#: admin/systems/goto/class_workstationService.inc:222 +#: admin/systems/goto/class_workstationService.inc:223 +#: admin/systems/goto/class_workstationService.inc:224 +#: admin/systems/goto/class_workstationService.inc:225 +#: admin/systems/goto/class_workstationService.inc:226 +#: admin/systems/goto/class_terminalGeneric.inc:137 +#: admin/systems/goto/class_terminalGeneric.inc:287 +#: admin/systems/goto/class_terminalGeneric.inc:299 +msgid "inherited" +msgstr "继承" + +#: admin/ogroups/goto/class_termgroup.inc:203 +#: admin/systems/goto/class_terminalService.inc:666 +#: admin/systems/goto/class_workstationGeneric.inc:212 +#: admin/systems/goto/class_workstationGeneric.inc:635 +#: admin/systems/goto/class_workstationStartup.inc:926 +#: admin/systems/goto/class_workstationStartup.inc:1053 +#: admin/systems/goto/class_workstationStartup.inc:1113 +#: admin/systems/goto/class_workstationService.inc:554 +#: admin/systems/goto/class_terminalGeneric.inc:187 +#: admin/systems/goto/class_terminalGeneric.inc:594 +#: addons/goto/class_gotomasses.inc:328 +#: addons/goto/class_goto_import_file.inc:124 +#, fuzzy +msgid "Service infrastructure" +msgstr "在子树中查找" + +#: admin/ogroups/goto/class_termgroup.inc:207 +#: admin/systems/goto/class_workstationGeneric.inc:216 +#: admin/systems/goto/class_terminalGeneric.inc:191 +#, fuzzy +msgid "Event error" +msgstr "错误" + +#: admin/ogroups/goto/class_termgroup.inc:208 +#: admin/systems/goto/class_workstationGeneric.inc:217 +#: admin/systems/goto/class_terminalGeneric.inc:192 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:265 +#: addons/goto/events/class_DaemonEvent_halt.inc:31 +#: addons/goto/events/class_DaemonEvent_halt.inc:32 +msgid "Switch off" +msgstr "关闭" + +#: admin/ogroups/goto/class_termgroup.inc:257 +#: admin/systems/goto/class_workstationGeneric.inc:298 +#: admin/systems/goto/class_terminalGeneric.inc:266 +#: addons/goto/events/class_DaemonEvent_reboot.inc:29 +#: addons/goto/events/class_DaemonEvent_reboot.inc:30 +msgid "Reboot" +msgstr "重启" + +#: admin/ogroups/goto/class_termgroup.inc:258 +msgid "Instant update" +msgstr "立即更新" + +#: admin/ogroups/goto/class_termgroup.inc:259 +msgid "Scheduled update" +msgstr "计划更新" + +#: admin/ogroups/goto/class_termgroup.inc:260 +#, fuzzy +msgid "Wake" +msgstr "唤醒" + +#: admin/ogroups/goto/class_termgroup.inc:261 +#: admin/systems/goto/class_workstationGeneric.inc:300 +#: admin/systems/goto/class_workstationGeneric.inc:308 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:32 +#: addons/goto/events/class_DaemonEvent_reinstall.inc:33 +msgid "Reinstall" +msgstr "重新安装" + +#: admin/ogroups/goto/class_termgroup.inc:262 +#: admin/systems/goto/class_workstationGeneric.inc:301 +#: addons/goto/events/class_DaemonEvent_rescan.inc:28 +#: addons/goto/events/class_DaemonEvent_rescan.inc:29 +msgid "Rescan hardware" +msgstr "重新扫描硬件" + +#: admin/ogroups/goto/class_termgroup.inc:263 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:28 +#: addons/goto/events/class_DaemonEvent_memcheck.inc:29 +msgid "Memory test" +msgstr "内存测试" + +#: admin/ogroups/goto/class_termgroup.inc:264 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:28 +#: addons/goto/events/class_DaemonEvent_sysinfo.inc:29 +msgid "System analysis" +msgstr "系统分析" + +#: admin/ogroups/goto/class_termgroup.inc:362 +#: admin/groups/apps/class_groupApplication.inc:649 +#: admin/groups/apps/class_groupApplication.inc:1330 +#: admin/groups/apps/class_groupApplication.inc:1344 +#: admin/groups/apps/class_groupApplication.inc:1358 +#: admin/devices/class_deviceGeneric.inc:196 +#: admin/applications/class_applicationParameters.inc:161 +#: admin/applications/class_applicationParameters.inc:224 +#: admin/applications/class_applicationGeneric.inc:271 +#: admin/applications/class_applicationGeneric.inc:285 +#: admin/applications/class_applicationGeneric.inc:515 +#: admin/mimetypes/class_mimetypeGeneric.inc:494 +#: admin/mimetypes/class_mimetypeGeneric.inc:506 +#: admin/mimetypes/class_mimetypeGeneric.inc:521 +#: admin/systems/services/kiosk/class_goKioskService.inc:249 +#: admin/systems/services/ldap/class_goLdapServer.inc:117 +#: admin/systems/services/ntp/class_goNtpServer.inc:98 +#: admin/systems/services/terminal/class_goTerminalServer.inc:103 +#: admin/systems/services/shares/class_goShareServer.inc:192 +#: admin/systems/services/shares/class_goShareServer.inc:261 +#: admin/systems/services/shares/class_goShareServer.inc:277 +#: admin/systems/services/shares/class_goShareServer.inc:290 +#: admin/systems/goto/class_printGeneric.inc:601 +#: admin/systems/goto/class_printGeneric.inc:885 +#: admin/systems/goto/class_terminalStartup.inc:455 +#: admin/systems/goto/class_ArpNewDevice.inc:69 +#: admin/systems/goto/class_terminalService.inc:590 +#: admin/systems/goto/class_workstationGeneric.inc:364 +#: admin/systems/goto/class_workstationGeneric.inc:596 +#: admin/systems/goto/class_workstationGeneric.inc:613 +#: admin/systems/goto/class_workstationStartup.inc:877 +#: admin/systems/goto/class_workstationService.inc:447 +#: admin/systems/goto/class_terminalGeneric.inc:353 +#: admin/systems/goto/class_terminalGeneric.inc:580 +#: personal/environment/class_environment.inc:1058 +#: personal/environment/class_environment.inc:1315 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/ogroups/goto/class_termgroup.inc:370 +msgid "System" +msgstr "系统" + +#: admin/ogroups/goto/class_termgroup.inc:371 +#, fuzzy +msgid "System group" +msgstr "信赖的系统" + +#: admin/ogroups/goto/class_termgroup.inc:380 +#: admin/systems/goto/class_workstationGeneric.inc:716 +#: admin/systems/goto/class_terminalGeneric.inc:678 +#, fuzzy +msgid "Action flag" +msgstr "行动" + +#: admin/ogroups/goto/class_termgroup.inc:381 +#: admin/systems/goto/class_workstationGeneric.inc:713 +#, fuzzy +msgid "Ntp server" +msgstr "NTP 服务器" + +#: admin/groups/apps/edit_entry.tpl:8 +#, fuzzy +msgid "Folder image" +msgstr "代码页" + +#: admin/groups/apps/edit_entry.tpl:12 +msgid "Could not load image." +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:14 +#: admin/systems/goto/class_gotoLpdEnabled.inc:58 +#, fuzzy +msgid "None" +msgstr "无" + +#: admin/groups/apps/edit_entry.tpl:24 +#, fuzzy +msgid "Upload image" +msgstr "上传" + +#: admin/groups/apps/edit_entry.tpl:28 admin/applications/generic.tpl:142 +#: admin/systems/ppd/printerPPDDialog.tpl:21 +#: addons/goto/goto_import_file.tpl:25 +msgid "Upload" +msgstr "上传" + +#: admin/groups/apps/edit_entry.tpl:32 +msgid "Reset image" +msgstr "" + +#: admin/groups/apps/edit_entry.tpl:33 +#, fuzzy +msgid "Reset" +msgstr "设置" + +#: admin/groups/apps/edit_entry.tpl:40 +#: admin/applications/class_applicationGeneric.inc:557 +msgid "Application settings" +msgstr "应用程序设置" + +#: admin/groups/apps/edit_entry.tpl:43 +#: admin/devices/class_deviceGeneric.inc:90 +#: admin/devices/class_deviceGeneric.inc:114 +#: admin/devices/class_deviceGeneric.inc:260 +#: admin/applications/class_applicationParameters.inc:193 +#: admin/applications/class_applicationGeneric.inc:430 +#: admin/applications/class_applicationGeneric.inc:434 +#: admin/applications/class_applicationGeneric.inc:606 +#: admin/applications/class_applicationGeneric.inc:610 +#: admin/mimetypes/class_mimetypeGeneric.inc:532 +#: admin/mimetypes/class_mimetypeGeneric.inc:724 +#: admin/systems/services/shares/class_goShareServer.inc:398 +#: admin/systems/services/nfs/class_servNfs.inc:199 +#: admin/systems/services/nfs/class_servNfs.inc:202 +#: admin/systems/services/nfs/class_servNfs.inc:235 +#: admin/systems/services/nfs/servnfs.tpl:9 +#: admin/systems/goto/class_printGeneric.inc:670 +#: admin/systems/goto/class_printGeneric.inc:675 +#: admin/systems/goto/class_printGeneric.inc:694 +#: admin/systems/goto/class_printGeneric.inc:929 +#: admin/systems/goto/class_ArpNewDevice.inc:46 +#: admin/systems/goto/class_workstationGeneric.inc:456 +#: admin/systems/goto/class_workstationGeneric.inc:461 +#: admin/systems/goto/class_workstationGeneric.inc:479 +#: admin/systems/goto/class_terminalGeneric.inc:446 +#: admin/systems/goto/class_terminalGeneric.inc:451 +#: admin/systems/goto/class_terminalGeneric.inc:470 +#: admin/systems/goto/class_terminalGeneric.inc:665 +#: personal/environment/class_logonManagementDialog.inc:103 +msgid "Name" +msgstr "名称" + +#: admin/groups/apps/edit_entry.tpl:53 +msgid "Application options" +msgstr "应用程序选项" + +#: admin/groups/apps/class_groupApplication.inc:381 +#: admin/groups/apps/class_groupApplication.inc:385 +#, fuzzy +msgid "Menu" +msgstr "打印机" + +#: admin/groups/apps/class_groupApplication.inc:439 +msgid "Back" +msgstr "返回" + +#: admin/groups/apps/class_groupApplication.inc:450 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:147 +msgid "back" +msgstr "返回" + +#: admin/groups/apps/class_groupApplication.inc:458 +msgid "department" +msgstr "部门" + +#: admin/groups/apps/class_groupApplication.inc:481 +#: admin/applications/class_applicationManagement.inc:368 +#: admin/applications/class_applicationManagement.inc:449 +#: admin/applications/class_applicationGeneric.inc:127 +msgid "application" +msgstr "应用程序" + +#: admin/groups/apps/class_groupApplication.inc:1146 +#, fuzzy +msgid "Not available in release." +msgstr "当前安装不可用" + +#: admin/groups/apps/class_groupApplication.inc:1373 +#: admin/applications/class_applicationManagement.inc:24 +#: admin/mimetypes/generic.tpl:117 admin/mimetypes/generic.tpl:177 +msgid "Applications" +msgstr "应用程序" + +#: admin/groups/apps/class_groupApplication.inc:1374 +#, fuzzy +msgid "Group applications" +msgstr "应用程序" + +#: admin/groups/apps/class_groupApplication.inc:1381 +#: admin/applications/class_divListApplication.inc:114 +#: admin/applications/class_divListApplication.inc:150 +#: admin/applications/class_applicationGeneric.inc:603 +#: admin/mimetypes/class_mimetypeGeneric.inc:728 +msgid "Application" +msgstr "应用程序" + +#: admin/groups/apps/class_groupApplication.inc:1382 +#: admin/groups/apps/app_list.tpl:5 admin/groups/apps/app_list.tpl:53 +#: admin/systems/goto/workstationStartup.tpl:83 +#: admin/systems/goto/workstationStartup.tpl:123 +msgid "Release" +msgstr "发行" + +#: admin/groups/apps/class_groupApplication.inc:1383 +#, fuzzy +msgid "Application parameter" +msgstr "应用程序名称" + +#: admin/groups/apps/app_list.tpl:11 +#, fuzzy +msgid "Copy menu" +msgstr "复制" + +#: admin/groups/apps/app_list.tpl:13 +msgid "Paste menu from" +msgstr "" + +#: admin/groups/apps/app_list.tpl:17 +#, fuzzy +msgid "Delete menu" +msgstr "删除条目" + +#: admin/groups/apps/app_list.tpl:70 admin/groups/apps/app_list.tpl:74 +#, fuzzy +msgid "Folder" +msgstr "过滤器" + +#: admin/groups/apps/app_list.tpl:82 admin/groups/apps/app_list.tpl:103 +#: admin/groups/apps/app_list.tpl:128 addons/goto/class_gotomasses.inc:432 +msgid "Move up" +msgstr "向上移动" + +#: admin/groups/apps/app_list.tpl:84 admin/groups/apps/app_list.tpl:105 +#: admin/groups/apps/app_list.tpl:130 addons/goto/class_gotomasses.inc:434 +msgid "Move down" +msgstr "向下移动" + +#: admin/groups/apps/app_list.tpl:86 admin/groups/apps/app_list.tpl:107 +#: admin/groups/apps/app_list.tpl:132 +#: admin/devices/class_divListDevices.inc:100 +#: admin/applications/class_applicationParameters.inc:125 +#: admin/applications/class_divListApplication.inc:120 +#: admin/mimetypes/class_divListMimeTypes.inc:122 +#: admin/systems/goto/terminalService.tpl:212 +#: admin/systems/goto/terminalStartup.tpl:115 +#: admin/systems/goto/workstationStartup.tpl:233 +#: admin/systems/goto/printer.tpl:71 addons/goto/class_gotomasses.inc:269 +#: addons/goto/class_gotomasses.inc:376 addons/goto/class_gotomasses.inc:484 +#: addons/goto/class_gotomasses.inc:488 +#: addons/goto/events/class_DaemonEvent.inc:230 +#: personal/environment/environment.tpl:238 +msgid "Remove" +msgstr "删除" + +#: admin/groups/apps/app_list.tpl:88 admin/groups/apps/app_list.tpl:134 +#: admin/systems/services/shares/goShareServer.tpl:17 +#: admin/systems/goto/printer.tpl:68 addons/goto/class_gotomasses.inc:469 +#: personal/environment/environment.tpl:274 +msgid "Edit" +msgstr "编辑" + +#: admin/groups/apps/app_list.tpl:121 +#, fuzzy +msgid "Entry" +msgstr "编辑记录" + +#: admin/groups/apps/app_list.tpl:143 +#, fuzzy +msgid "add to" +msgstr "添加选项" + +#: admin/groups/apps/app_list.tpl:149 admin/groups/apps/app_list.tpl:159 +#, fuzzy +msgid "Add selected applications to this folder." +msgstr "选择的应用程序没有选项。" + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Separator" +msgstr "插入分隔符" + +#: admin/groups/apps/app_list.tpl:150 +#, fuzzy +msgid "Add a separator to this folder." +msgstr "选择的应用程序没有选项。" + +#: admin/devices/class_divListDevices.inc:33 +#: admin/devices/class_divListDevices.inc:34 +#, fuzzy +msgid "List of defined devices" +msgstr "设备列表" + +#: admin/devices/class_divListDevices.inc:45 +#: admin/applications/class_divListApplication.inc:45 +#: admin/mimetypes/class_divListMimeTypes.inc:45 +#, fuzzy +msgid "Select all" +msgstr "选择" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/devices/deviceGeneric.tpl:20 admin/devices/paste_deviceGeneric.tpl:9 +msgid "Device name" +msgstr "设备名称" + +#: admin/devices/class_divListDevices.inc:51 +#: admin/applications/class_divListApplication.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +msgid "Department" +msgstr "部门" + +#: admin/devices/class_divListDevices.inc:52 +#: admin/devices/class_divListDevices.inc:87 +#: admin/applications/class_divListApplication.inc:52 +#: admin/applications/class_divListApplication.inc:107 +#: admin/mimetypes/class_divListMimeTypes.inc:52 +#: admin/mimetypes/class_divListMimeTypes.inc:109 +#: addons/goto/class_gotomasses.inc:365 +msgid "Actions" +msgstr "动作" + +#: admin/devices/class_divListDevices.inc:58 +msgid "Display devices matching" +msgstr "显示匹配的设备" + +#: admin/devices/class_divListDevices.inc:82 admin/devices/deviceGeneric.tpl:9 +#: admin/devices/class_deviceGeneric.inc:261 admin/applications/generic.tpl:42 +#: admin/applications/class_divListApplication.inc:90 +#: admin/applications/class_applicationGeneric.inc:607 +#: admin/mimetypes/generic.tpl:44 +#: admin/mimetypes/class_divListMimeTypes.inc:93 +#: admin/mimetypes/class_mimetypeGeneric.inc:727 +#: admin/systems/services/ldap/class_goLdapServer.inc:79 +#: admin/systems/services/ldap/class_goLdapServer.inc:82 +#: admin/systems/goto/workstation.tpl:35 +#: admin/systems/goto/class_printGeneric.inc:930 +#: admin/systems/goto/class_workstationGeneric.inc:710 +#: admin/systems/goto/class_terminalGeneric.inc:667 +#: admin/systems/goto/printer.tpl:27 admin/systems/goto/terminal.tpl:27 +#: addons/goto/class_target_list.inc:152 addons/goto/goto_import_file.tpl:41 +#: addons/goto/events/class_EventTargetAddList.inc:161 +#: addons/goto/events/class_EventTargetAddUsersList.inc:130 +msgid "Base" +msgstr "位置" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit department" +msgstr "提交部门" + +#: admin/devices/class_divListDevices.inc:84 +#: admin/applications/class_divListApplication.inc:92 +#: admin/mimetypes/class_divListMimeTypes.inc:95 +#: addons/goto/class_target_list.inc:154 +#: addons/goto/events/class_EventTargetAddList.inc:163 +#: addons/goto/events/class_EventTargetAddUsersList.inc:132 +msgid "Submit" +msgstr "提交" + +#: admin/devices/class_divListDevices.inc:92 +#: admin/applications/class_divListApplication.inc:111 +#: admin/mimetypes/class_divListMimeTypes.inc:114 +#: admin/systems/goto/chooser.tpl:16 addons/goto/class_gotomasses.inc:366 +msgid "Create" +msgstr "创建" + +#: admin/devices/class_divListDevices.inc:94 +#: admin/devices/class_divListDevices.inc:131 +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/systems/goto/gotoLpdEnable.tpl:27 +#: admin/systems/goto/gotoLpdEnable.tpl:63 +msgid "Device" +msgstr "设备" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "edit" +msgstr "编辑" + +#: admin/devices/class_divListDevices.inc:156 +#: admin/applications/class_divListApplication.inc:186 +#: admin/mimetypes/class_divListMimeTypes.inc:186 +msgid "Edit this entry" +msgstr "编辑这条记录" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:136 +msgid "delete" +msgstr "删除" + +#: admin/devices/class_divListDevices.inc:163 +#: admin/applications/class_divListApplication.inc:202 +#: admin/mimetypes/class_divListMimeTypes.inc:201 +msgid "Delete this entry" +msgstr "删除这个条目" + +#: admin/devices/class_divListDevices.inc:205 +#, fuzzy +msgid "Number of listed devices" +msgstr "部门名称" + +#: admin/devices/class_divListDevices.inc:206 +#: admin/applications/class_divListApplication.inc:243 +#: admin/mimetypes/class_divListMimeTypes.inc:244 +#, fuzzy +msgid "Number of listed departments" +msgstr "部门名称" + +#: admin/devices/remove.tpl:6 +#, fuzzy +msgid "" +"This may be used by several users/groups. Please double check if your really " +"want to do this since there is no way for GOsa to get your data back." +msgstr "" +"这可能被好几个组使用。请再次检查您是否要这么做,因为 GOsa 没有办法将您的数据" +"找回。" + +#: admin/devices/remove.tpl:9 admin/applications/remove.tpl:9 +#: admin/mimetypes/remove.tpl:9 addons/goto/remove.tpl:9 +msgid "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." +msgstr "所以,如果您确定,请按“删除”继续,否则按“取消”退出。" + +#: admin/devices/deviceGeneric.tpl:2 admin/devices/paste_deviceGeneric.tpl:2 +#: admin/devices/class_deviceGeneric.inc:257 +msgid "Devices" +msgstr "设备" + +#: admin/devices/deviceGeneric.tpl:29 admin/devices/class_deviceGeneric.inc:93 +#: admin/devices/class_deviceGeneric.inc:262 admin/applications/generic.tpl:33 +#: admin/applications/class_applicationGeneric.inc:608 +#: admin/mimetypes/generic.tpl:34 admin/mimetypes/paste_generic.tpl:21 +#: admin/mimetypes/class_mimetypeGeneric.inc:726 +#: admin/systems/services/shares/class_goShareServer.inc:400 +#: admin/systems/services/nfs/class_servNfs.inc:207 +#: admin/systems/services/nfs/servnfs.tpl:19 +#: admin/systems/goto/workstation.tpl:19 +#: admin/systems/goto/ArpNewDevice.tpl:17 +#: admin/systems/goto/class_printGeneric.inc:931 +#: admin/systems/goto/class_workstationGeneric.inc:708 +#: admin/systems/goto/class_terminalGeneric.inc:666 +#: admin/systems/goto/printer.tpl:16 admin/systems/goto/terminal.tpl:19 +#: addons/goto/class_gotomasses.inc:917 +#: personal/environment/class_logonManagementDialog.inc:111 +#: personal/environment/logonManagement.tpl:17 +msgid "Description" +msgstr "描述" + +#: admin/devices/deviceGeneric.tpl:38 +#, fuzzy +msgid "Device type" +msgstr "设备名称" + +#: admin/devices/deviceGeneric.tpl:42 +#, fuzzy +msgid "Choose the device type" +msgstr "选择一个电话类型" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "Serial number" +msgstr "系列号" + +#: admin/devices/deviceGeneric.tpl:53 +msgid "(iSerial)" +msgstr "(iSerial)" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "Vendor-ID" +msgstr "供应商-ID" + +#: admin/devices/deviceGeneric.tpl:63 +msgid "(idVendor)" +msgstr "(idVendor)" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "Product-ID" +msgstr "产品-ID" + +#: admin/devices/deviceGeneric.tpl:72 +msgid "(idProduct)" +msgstr "(idProduct)" + +#: admin/devices/main.inc:49 admin/devices/main.inc:51 +#, fuzzy +msgid "Hotplug device management" +msgstr "热插拔管理" + +#: admin/devices/class_deviceGeneric.inc:29 +msgid "Digital camera" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:30 +#, fuzzy +msgid "USB stick" +msgstr "置顶" + +#: admin/devices/class_deviceGeneric.inc:31 +msgid "CD/DVD drive" +msgstr "" + +#: admin/devices/class_deviceGeneric.inc:98 +#: admin/devices/class_deviceGeneric.inc:100 +#, fuzzy +msgid "iSerial" +msgstr "(iSerial)" + +#: admin/devices/class_deviceGeneric.inc:103 +#: admin/devices/class_deviceGeneric.inc:264 +#: admin/systems/goto/class_gotoLpdEnabled.inc:51 +#, fuzzy +msgid "Serial" +msgstr "(iSerial)" + +#: admin/devices/class_deviceGeneric.inc:106 +#, fuzzy +msgid "Vendor ID" +msgstr "供应商-ID" + +#: admin/devices/class_deviceGeneric.inc:159 +#: admin/applications/class_applicationGeneric.inc:264 +#: admin/applications/class_applicationGeneric.inc:338 +#: admin/applications/class_applicationGeneric.inc:370 +#: admin/applications/class_applicationGeneric.inc:375 +#: admin/applications/class_applicationGeneric.inc:380 +#: admin/applications/class_applicationGeneric.inc:384 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: admin/systems/services/kiosk/class_goKioskService.inc:161 +#: admin/systems/services/kiosk/class_goKioskService.inc:164 +#: admin/systems/services/kiosk/class_goKioskService.inc:234 +#: admin/systems/services/shares/class_goShareServer.inc:98 +#: admin/systems/services/shares/class_goShareServer.inc:233 +#: admin/systems/services/nfs/class_servNfs.inc:43 +#: admin/systems/services/nfs/class_servNfs.inc:46 +#: admin/systems/goto/class_printGeneric.inc:435 +#: admin/systems/goto/class_printGeneric.inc:482 +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#: admin/systems/goto/class_printGeneric.inc:1008 +#: admin/systems/goto/class_printGeneric.inc:1019 +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:234 +#: admin/systems/goto/class_workstationStartup.inc:247 +#: admin/systems/goto/class_workstationStartup.inc:324 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#: addons/goto/class_gotoLogView.inc:57 addons/goto/class_gotoLogView.inc:175 +#: addons/goto/class_gotomasses.inc:174 addons/goto/class_gotomasses.inc:524 +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:691 +#: addons/goto/class_gotomasses.inc:735 addons/goto/class_gotomasses.inc:739 +#: addons/goto/class_gotomasses.inc:775 addons/goto/class_gotomasses.inc:816 +#: personal/environment/class_environment.inc:591 +#: personal/environment/class_environment.inc:673 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#: personal/environment/class_environment.inc:841 +#: personal/environment/class_environment.inc:892 +#: personal/environment/class_environment.inc:988 +msgid "Error" +msgstr "错误" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Device generic" +msgstr "服务器名称" + +#: admin/devices/class_deviceGeneric.inc:252 +#, fuzzy +msgid "Hotplug" +msgstr "热插拔设备" + +#: admin/devices/class_deviceGeneric.inc:263 +#: admin/systems/services/shares/class_goShareServer.inc:401 +#: admin/systems/services/nfs/class_servNfs.inc:193 +#: admin/systems/services/nfs/servnfs.tpl:56 +#: admin/systems/goto/terminalService.tpl:48 +#: admin/systems/goto/terminalService.tpl:138 +#: admin/systems/goto/workstationService.tpl:54 +#: admin/systems/goto/workstationService.tpl:156 +#: admin/systems/goto/gotoLpdEnable.tpl:53 +msgid "Type" +msgstr "类型" + +#: admin/devices/class_deviceGeneric.inc:265 +#, fuzzy +msgid "Vendor" +msgstr "供应商-ID" + +#: admin/devices/class_deviceGeneric.inc:266 +#, fuzzy +msgid "Device ID" +msgstr "设备" + +#: admin/devices/class_deviceManagement.inc:7 +#: personal/environment/class_environment.inc:1783 +#: personal/environment/environment.tpl:293 +msgid "Hotplug devices" +msgstr "热插拔设备" + +#: admin/devices/class_deviceManagement.inc:8 +#, fuzzy +msgid "Manage hotplug devices" +msgstr "添加热插拔设备" + +#: admin/devices/class_deviceManagement.inc:246 +#: admin/applications/class_applicationManagement.inc:352 +#: admin/mimetypes/class_mimetypeManagement.inc:360 +#: addons/goto/class_gotomasses.inc:230 +#, fuzzy +msgid "Permission" +msgstr "允许" + +#: admin/devices/class_deviceManagement.inc:263 +#: admin/devices/class_deviceManagement.inc:345 +#, fuzzy +msgid "device" +msgstr "设备" + +#: admin/devices/class_deviceManagement.inc:296 +#: admin/devices/class_deviceManagement.inc:352 +#: admin/devices/class_deviceManagement.inc:381 +#: admin/applications/class_applicationManagement.inc:401 +#: admin/applications/class_applicationManagement.inc:456 +#: admin/applications/class_applicationManagement.inc:487 +#: admin/mimetypes/class_mimetypeManagement.inc:412 +#: admin/mimetypes/class_mimetypeManagement.inc:466 +#: admin/mimetypes/class_mimetypeManagement.inc:496 +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#: personal/environment/class_environment.inc:583 +#, fuzzy +msgid "Permission error" +msgstr "允许" + +#: admin/applications/remove.tpl:6 admin/mimetypes/remove.tpl:6 +msgid "" +"This may be used by several groups. Please double check if your really want " +"to do this since there is no way for GOsa to get your data back." +msgstr "" +"这可能被好几个组使用。请再次检查您是否要这么做,因为 GOsa 没有办法将您的数据" +"找回。" + +#: admin/applications/release_select.tpl:2 +#: admin/mimetypes/release_select.tpl:2 +msgid "Branches" +msgstr "分支" + +#: admin/applications/release_select.tpl:8 +#: admin/mimetypes/release_select.tpl:8 +msgid "Current release" +msgstr "当前版本" + +#: admin/applications/class_applicationParameters.inc:53 +msgid "Remove options" +msgstr "删除选项" + +#: admin/applications/class_applicationParameters.inc:53 +#: admin/applications/class_applicationParameters.inc:55 +#, fuzzy +msgid "parameter" +msgstr "参数" + +#: admin/applications/class_applicationParameters.inc:55 +msgid "Create options" +msgstr "创建选项" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Variable" +msgstr "变量" + +#: admin/applications/class_applicationParameters.inc:99 +msgid "Default value" +msgstr "缺省值" + +#: admin/applications/class_applicationParameters.inc:131 +msgid "Add option" +msgstr "添加选项" + +#: admin/applications/class_applicationParameters.inc:236 +msgid "Parameter" +msgstr "参数" + +#: admin/applications/class_applicationParameters.inc:237 +#, fuzzy +msgid "Parameter configuration" +msgstr "下载配置" + +#: admin/applications/class_applicationParameters.inc:245 +#, fuzzy +msgid "Application parameter settings" +msgstr "应用程序设置" + +#: admin/applications/generic.tpl:7 admin/applications/generic.tpl:10 +#: admin/applications/class_divListApplication.inc:51 +#: admin/applications/class_applicationGeneric.inc:561 +msgid "Application name" +msgstr "应用程序名称" + +#: admin/applications/generic.tpl:15 +msgid "Display name" +msgstr "显示名称" + +#: admin/applications/generic.tpl:19 +#: admin/applications/class_applicationGeneric.inc:566 +msgid "Application name to be displayed (i.e. below icons)" +msgstr "要显示的应用程序名称(在图标下)" + +#: admin/applications/generic.tpl:28 +msgid "Path and/or binary name of application" +msgstr "应用程序的路径和/或二进制名称" + +#: admin/applications/generic.tpl:45 admin/mimetypes/generic.tpl:47 +msgid "Choose subtree to place application in" +msgstr "选择放置应用程序的子树" + +#: admin/applications/generic.tpl:52 admin/mimetypes/generic.tpl:53 +#: admin/systems/goto/workstation.tpl:43 admin/systems/goto/printer.tpl:35 +#: admin/systems/goto/terminal.tpl:36 +msgid "Select a base" +msgstr "选择一个位置" + +#: admin/applications/generic.tpl:66 +#: admin/applications/class_applicationGeneric.inc:611 +#: admin/mimetypes/generic.tpl:67 +#: admin/mimetypes/class_mimetypeGeneric.inc:730 +msgid "Icon" +msgstr "图标" + +#: admin/applications/generic.tpl:82 admin/mimetypes/generic.tpl:84 +msgid "Update" +msgstr "更新" + +#: admin/applications/generic.tpl:82 +msgid "Reload picture from LDAP" +msgstr "从 LDAP 重新加载图片" + +#: admin/applications/generic.tpl:85 +msgid "Remove picture" +msgstr "删除图片" + +#: admin/applications/generic.tpl:85 +#, fuzzy +msgid "Remove picture from LDAP" +msgstr "从 LDAP 重新加载图片" + +#: admin/applications/generic.tpl:96 +#: admin/systems/goto/class_gotoLpdEnabled.inc:156 +#: admin/systems/goto/gotoLpdEnable.tpl:79 +#: admin/systems/ppd/printerPPDDialog.tpl:28 +msgid "Options" +msgstr "选项" + +#: admin/applications/generic.tpl:103 +#: admin/applications/class_applicationGeneric.inc:614 +msgid "Only executable for members" +msgstr "只允许成员执行" + +#: admin/applications/generic.tpl:108 +#: admin/applications/class_applicationGeneric.inc:618 +msgid "Replace user configuration on startup" +msgstr "替换启动时用户配置" + +#: admin/applications/generic.tpl:114 +#: admin/applications/class_applicationGeneric.inc:615 +msgid "Place icon on members desktop" +msgstr "在成员桌面放置图标" + +#: admin/applications/generic.tpl:119 +#: admin/applications/class_applicationGeneric.inc:617 +msgid "Place entry in members startmenu" +msgstr "替换成员启动菜单条目" + +#: admin/applications/generic.tpl:124 +#: admin/applications/class_applicationGeneric.inc:616 +msgid "Place entry in members launch bar" +msgstr "在成员的启动条放置条目" + +#: admin/applications/generic.tpl:134 +#: personal/environment/logonManagement.tpl:55 +msgid "Script" +msgstr "脚本" + +#: admin/applications/generic.tpl:139 addons/goto/goto_import_file.tpl:84 +#: addons/goto/class_gotomasses.inc:375 +#: addons/goto/class_goto_import_file.inc:29 +#: addons/goto/class_goto_import_file.inc:89 +#: addons/goto/class_goto_import_file.inc:131 +#: personal/environment/logonManagement.tpl:65 +msgid "Import" +msgstr "导入" + +#: admin/applications/generic.tpl:144 +msgid "Download" +msgstr "下载" + +#: admin/applications/class_applicationManagement.inc:25 +#: personal/environment/class_environment.inc:10 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: admin/applications/class_divListApplication.inc:25 +msgid "List of Applications" +msgstr "应用程序列表" + +#: admin/applications/class_divListApplication.inc:26 +msgid "This table displays all applications in the selected tree." +msgstr "这个表显示在所选树下的所有应用程序。" + +#: admin/applications/class_divListApplication.inc:58 +#: personal/environment/hotplugDialog.tpl:43 +msgid "Display users matching" +msgstr "显示匹配的用户" + +#: admin/applications/class_divListApplication.inc:199 +#: admin/mimetypes/class_divListMimeTypes.inc:198 +msgid "Freezed" +msgstr "" + +#: admin/applications/class_divListApplication.inc:242 +#, fuzzy +msgid "Number of listed applications" +msgstr "使用的应用程序" + +#: admin/applications/main.inc:48 admin/applications/main.inc:50 +msgid "Application management" +msgstr "应用程序管理" + +#: admin/applications/class_applicationGeneric.inc:95 +msgid "no example" +msgstr "没有示例" + +#: admin/applications/class_applicationGeneric.inc:264 +#, fuzzy, php-format +msgid "Cannot remove application - it is still in use by these objects: %s" +msgstr "您不能删除 asterisk 数据库扩展,它仍被这些对象 '%s' 使用。" + +#: admin/applications/class_applicationGeneric.inc:370 +#, fuzzy +msgid "no read permission" +msgstr "允许" + +#: admin/applications/class_applicationGeneric.inc:375 +msgid "cannot resize image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:380 +msgid "cannot convert image" +msgstr "" + +#: admin/applications/class_applicationGeneric.inc:384 +#, fuzzy, php-format +msgid "cannot save image to '%s'" +msgstr "无法保存文件 '%s'。" + +#: admin/applications/class_applicationGeneric.inc:413 +#, fuzzy +msgid "Execute path" +msgstr "执行" + +#: admin/applications/class_applicationGeneric.inc:598 +#, fuzzy +msgid "Application generic" +msgstr "应用程序名称" + +#: admin/applications/class_applicationGeneric.inc:612 +#, fuzzy +msgid "Script content" +msgstr "变量内容" + +#: admin/mimetypes/class_mimetypeManagement.inc:24 +#: admin/mimetypes/class_mimetypeGeneric.inc:721 +#, fuzzy +msgid "Mime types" +msgstr "Mime-type" + +#: admin/mimetypes/class_mimetypeManagement.inc:25 +#, fuzzy +msgid "Manage mime types" +msgstr "管理操作系统类型" + +#: admin/mimetypes/class_mimetypeManagement.inc:378 +#: admin/mimetypes/class_mimetypeManagement.inc:459 +#: admin/mimetypes/generic.tpl:12 +#: admin/mimetypes/class_divListMimeTypes.inc:51 +#: admin/mimetypes/class_divListMimeTypes.inc:116 +#: admin/mimetypes/class_divListMimeTypes.inc:152 +#: admin/mimetypes/paste_generic.tpl:13 +#, fuzzy +msgid "Mime type" +msgstr "Mime-type" + +#: admin/mimetypes/generic.tpl:16 admin/mimetypes/paste_generic.tpl:16 +#, fuzzy +msgid "Please enter a name for the mime type here" +msgstr "请为这个会议输入一个名称。" + +#: admin/mimetypes/generic.tpl:22 +#: admin/mimetypes/class_mimetypeGeneric.inc:725 +#, fuzzy +msgid "Mime group" +msgstr "主要用户组" + +#: admin/mimetypes/generic.tpl:26 +#, fuzzy +msgid "Categorize this mime type" +msgstr "这个子树的分类" + +#: admin/mimetypes/generic.tpl:38 +#, fuzzy +msgid "Please specify a description" +msgstr "请提供一个有效的脚本名。" + +#: admin/mimetypes/generic.tpl:69 admin/mimetypes/generic.tpl:72 +#, fuzzy +msgid "Mime icon" +msgstr "Mime" + +#: admin/mimetypes/generic.tpl:85 +msgid "Update mime type icon" +msgstr "" + +#: admin/mimetypes/generic.tpl:99 +msgid "Left click" +msgstr "" + +#: admin/mimetypes/generic.tpl:104 +#: admin/mimetypes/class_mimetypeGeneric.inc:731 +#, fuzzy +msgid "File patterns" +msgstr "过滤器" + +#: admin/mimetypes/generic.tpl:110 +#, fuzzy +msgid "Please specify a new file pattern" +msgstr "请输入一个名字。" + +#: admin/mimetypes/generic.tpl:113 +msgid "Add a new file pattern" +msgstr "" + +#: admin/mimetypes/generic.tpl:129 admin/mimetypes/generic.tpl:189 +#, fuzzy +msgid "Enter an application name here" +msgstr "应用程序名称" + +#: admin/mimetypes/generic.tpl:132 admin/mimetypes/generic.tpl:193 +#, fuzzy +msgid "Add application" +msgstr "应用程序" + +#: admin/mimetypes/generic.tpl:143 +msgid "Embedding" +msgstr "" + +#: admin/mimetypes/generic.tpl:156 +msgid "Show file in embedded viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:163 +msgid "Show file in external viewer" +msgstr "" + +#: admin/mimetypes/generic.tpl:170 +msgid "Ask whether to save to local disk" +msgstr "" + +#: admin/mimetypes/class_divListMimeTypes.inc:27 +#: admin/mimetypes/class_divListMimeTypes.inc:28 +#, fuzzy +msgid "List of defined mime types" +msgstr "预定义黑名单列表" + +#: admin/mimetypes/class_divListMimeTypes.inc:58 +#, fuzzy +msgid "Display mime types matching" +msgstr "显示匹配的硒鼓类型" + +#: admin/mimetypes/class_divListMimeTypes.inc:243 +#, fuzzy +msgid "Number of listed mimetypes" +msgstr "预定义黑名单列表" + +#: admin/mimetypes/paste_generic.tpl:24 +#, fuzzy +msgid "Please specify a description for this mime type here" +msgstr "请为这个附件指定一个有效名称。" + +#: admin/mimetypes/main.inc:48 admin/mimetypes/main.inc:50 +#, fuzzy +msgid "Mimetype management" +msgstr "系统管理" + +#: admin/mimetypes/class_mimetypeGeneric.inc:535 +#, fuzzy +msgid "File pattern" +msgstr "过滤器" + +#: admin/mimetypes/class_mimetypeGeneric.inc:716 +#, fuzzy +msgid "Mime type generic" +msgstr "Mime-type" + +#: admin/mimetypes/class_mimetypeGeneric.inc:729 +#, fuzzy +msgid "Left click action" +msgstr "创建应用程序" + +#: admin/mimetypes/class_mimetypeGeneric.inc:732 +#, fuzzy +msgid "Embedded applications" +msgstr "使用的应用程序" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +msgid "Print Service" +msgstr "打印服务" + +#: admin/systems/services/cups/goCupsServer.tpl:1 +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +#, fuzzy +msgid "enabled" +msgstr "禁用" + +#: admin/systems/services/cups/class_goCupsServer.inc:27 +#: admin/systems/services/cups/class_goCupsServer.inc:48 +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/goto/info.tpl:124 +msgid "Print service" +msgstr "打印服务" + +#: admin/systems/services/cups/class_goCupsServer.inc:68 +#, fuzzy +msgid "Cups" +msgstr "上" + +#: admin/systems/services/cups/class_goCupsServer.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/services/shares/class_goShareServer.inc:390 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/cups/class_goCupsServer.inc:77 +#: admin/systems/services/syslog/class_goLogDBServer.inc:101 +#, fuzzy +msgid "Start" +msgstr "启动" + +#: admin/systems/services/cups/class_goCupsServer.inc:78 +#: admin/systems/services/syslog/class_goLogDBServer.inc:102 +msgid "Stop" +msgstr "停止" + +#: admin/systems/services/cups/class_goCupsServer.inc:79 +#: admin/systems/services/syslog/class_goLogDBServer.inc:103 +#, fuzzy +msgid "Restart" +msgstr "重试" + +#: admin/systems/services/kiosk/class_goKioskService.inc:34 +#: admin/systems/services/kiosk/class_goKioskService.inc:69 +#: admin/systems/services/kiosk/class_goKioskService.inc:206 +#, fuzzy +msgid "Kiosk profile service" +msgstr "Kiosk profile 设置" + +#: admin/systems/services/kiosk/class_goKioskService.inc:154 +#: personal/environment/class_environment.inc:1784 +#: personal/environment/environment.tpl:124 +#: personal/environment/environment.tpl:160 +msgid "Kiosk profile" +msgstr "Kiosk profile" + +#: admin/systems/services/kiosk/class_goKioskService.inc:269 +msgid "Kiosk" +msgstr "" + +#: admin/systems/services/kiosk/class_goKioskService.inc:270 +#: admin/systems/services/kiosk/goKioskService.tpl:1 +msgid "Kiosk profile management" +msgstr "Kiosk profile 管理" + +#: admin/systems/services/kiosk/goKioskService.tpl:16 +#, fuzzy +msgid "Server path" +msgstr "服务器名称" + +#: admin/systems/services/kiosk/goKioskService.tpl:23 +#: addons/goto/goto_import_file.tpl:24 +msgid "Browse" +msgstr "浏览" + +#: admin/systems/services/ldap/goLdapServer.tpl:1 +#: admin/systems/services/ldap/class_goLdapServer.inc:30 +#: admin/systems/services/ldap/class_goLdapServer.inc:68 +#, fuzzy +msgid "LDAP service" +msgstr "LDAP 服务" + +#: admin/systems/services/ldap/goLdapServer.tpl:2 +msgid "LDAP URI" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:35 +msgid "fill-in-your-servers-dns-name" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:128 +#: admin/systems/services/ldap/class_goLdapServer.inc:129 +msgid "Ldap" +msgstr "" + +#: admin/systems/services/ldap/class_goLdapServer.inc:137 +#, fuzzy +msgid "Ldap base" +msgstr "LDAP 服务器" + +#: admin/systems/services/ntp/goNtpServer.tpl:2 +#, fuzzy +msgid "Time server" +msgstr "主服务器" + +#: admin/systems/services/ntp/class_goNtpServer.inc:28 +#: admin/systems/services/ntp/class_goNtpServer.inc:74 +#, fuzzy +msgid "Time service (NTP)" +msgstr "时间服务" + +#: admin/systems/services/ntp/class_goNtpServer.inc:114 +#, fuzzy +msgid "Time service" +msgstr "时间服务" + +#: admin/systems/services/ntp/class_goNtpServer.inc:115 +#, fuzzy +msgid "Time service - NTP" +msgstr "时间服务" + +#: admin/systems/services/ntp/class_goNtpServer.inc:123 +#, fuzzy +msgid "Ntp source" +msgstr "源" + +#: admin/systems/services/terminal/goTerminalServer.tpl:4 +#: admin/systems/services/terminal/class_goTerminalServer.inc:26 +#: admin/systems/services/terminal/class_goTerminalServer.inc:76 +#: admin/systems/services/terminal/class_goTerminalServer.inc:164 +#: admin/systems/services/terminal/class_goTerminalServer.inc:165 +#: admin/systems/goto/class_terminalService.inc:679 +#, fuzzy +msgid "Terminal service" +msgstr "终端服务" + +#: admin/systems/services/terminal/goTerminalServer.tpl:8 +#: admin/systems/services/terminal/class_goTerminalServer.inc:173 +msgid "Temporary disable login" +msgstr "临时禁用登录" + +#: admin/systems/services/terminal/goTerminalServer.tpl:13 +msgid "Supported session types" +msgstr "" + +#: admin/systems/services/shares/goShareServer.tpl:1 +#: admin/systems/goto/class_terminalStartup.inc:543 +#: admin/systems/goto/class_workstationStartup.inc:1021 +#: admin/systems/goto/terminalStartup.tpl:91 +#: admin/systems/goto/workstationStartup.tpl:209 +#: personal/environment/class_environment.inc:1782 +#: personal/environment/environment.tpl:212 +msgid "Shares" +msgstr "共享" + +#: admin/systems/services/shares/class_goShareServer.inc:31 +#: admin/systems/services/shares/class_goShareServer.inc:157 +#: admin/systems/services/shares/class_goShareServer.inc:389 +#, fuzzy +msgid "File service (Shares)" +msgstr "文件服务器" + +#: admin/systems/services/shares/class_goShareServer.inc:233 +#, fuzzy +msgid "share" +msgstr "共享" + +#: admin/systems/services/shares/class_goShareServer.inc:390 +#, fuzzy +msgid "File service - Shares" +msgstr "文件服务器" + +#: admin/systems/services/shares/class_goShareServer.inc:399 +msgid "Apple mounts" +msgstr "" + +#: admin/systems/services/shares/class_goShareServer.inc:402 +#, fuzzy +msgid "Charset" +msgstr "芯片组" + +#: admin/systems/services/shares/class_goShareServer.inc:403 +#: admin/systems/services/nfs/class_servNfs.inc:179 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Path" +msgstr "路径" + +#: admin/systems/services/shares/class_goShareServer.inc:404 +#: admin/systems/services/nfs/class_servNfs.inc:215 +#: admin/systems/services/nfs/servnfs.tpl:121 +msgid "Option" +msgstr "选项" + +#: admin/systems/services/shares/class_goShareServer.inc:405 +#: admin/systems/services/nfs/class_servNfs.inc:211 +#: admin/systems/services/nfs/servnfs.tpl:29 +msgid "Volume" +msgstr "卷" + +#: admin/systems/services/nfs/class_servNfs.inc:184 +msgid "'Path / Volume' must be of format 'server:port'!" +msgstr "" + +#: admin/systems/services/nfs/class_servNfs.inc:188 +msgid "'Path / Volume' must contain at least one '/'!" +msgstr "" + +#: admin/systems/services/nfs/servnfs.tpl:1 +msgid "Edit share" +msgstr "编辑共享" + +#: admin/systems/services/nfs/servnfs.tpl:2 +msgid "NFS setup" +msgstr "NFS 设置" + +#: admin/systems/services/nfs/servnfs.tpl:39 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:201 +#: addons/goto/events/class_EventTargetAddList.inc:238 +#: personal/environment/environment.tpl:135 +msgid "Server" +msgstr "服务器" + +#: admin/systems/services/nfs/servnfs.tpl:69 +msgid "Auto-mount share on Apple systems" +msgstr "自动挂载共享到苹果系统" + +#: admin/systems/services/nfs/servnfs.tpl:109 +msgid "Codepage" +msgstr "代码页" + +#: admin/systems/services/syslog/goSyslogServer.tpl:1 +msgid "Syslog Service" +msgstr "Syslog 服务" + +#: admin/systems/services/syslog/class_goSyslogServer.inc:68 +#: admin/systems/services/syslog/class_goSyslogServer.inc:69 +#, fuzzy +msgid "Logging service" +msgstr "Logging DB 用户" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:31 +#: admin/systems/services/syslog/class_goLogDBServer.inc:59 +#, fuzzy +msgid "Syslog service database" +msgstr "日志服务器" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:69 +#: admin/systems/goto/class_printGeneric.inc:908 +#: addons/goto/events/class_EventTargetAddUsersList.inc:171 +msgid "User" +msgstr "用户" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:72 +#: admin/systems/services/syslog/class_goLogDBServer.inc:105 +#: admin/systems/services/syslog/goLogDBServer.tpl:20 +msgid "Password" +msgstr "口令" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:75 +#: admin/systems/services/syslog/class_goLogDBServer.inc:106 +#: admin/systems/services/syslog/goLogDBServer.tpl:4 +#, fuzzy +msgid "Database" +msgstr "粘贴" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:92 +#: admin/systems/services/syslog/class_goLogDBServer.inc:93 +msgid "Logging database" +msgstr "日志数据库" + +#: admin/systems/services/syslog/class_goLogDBServer.inc:104 +#, fuzzy +msgid "Admin" +msgstr "管理员" + +#: admin/systems/services/syslog/goLogDBServer.tpl:1 +#, fuzzy +msgid "Logging database information" +msgstr "日志数据库" + +#: admin/systems/services/syslog/goLogDBServer.tpl:12 +msgid "Logging DB user" +msgstr "Logging DB 用户" + +#: admin/systems/goto/workstation.tpl:1 admin/systems/goto/terminal.tpl:1 +msgid "Properties" +msgstr "属性" + +#: admin/systems/goto/workstation.tpl:8 +msgid "Workstation template" +msgstr "工作站模板" + +#: admin/systems/goto/workstation.tpl:10 +#: admin/systems/goto/class_workstationGeneric.inc:707 +msgid "Workstation name" +msgstr "工作站名称" + +#: admin/systems/goto/workstation.tpl:27 +#: admin/systems/goto/class_printGeneric.inc:932 +#: admin/systems/goto/class_workstationGeneric.inc:709 +msgid "Location" +msgstr "位置" + +#: admin/systems/goto/workstation.tpl:38 admin/systems/goto/terminal.tpl:31 +msgid "Choose subtree to place group in" +msgstr "选择来放置组的子树" + +#: admin/systems/goto/workstation.tpl:87 admin/systems/goto/workstation.tpl:90 +#: admin/systems/goto/terminal.tpl:109 admin/systems/goto/terminal.tpl:112 +msgid "Inherit time server attributes" +msgstr "继承时间服务器属性" + +#: admin/systems/goto/workstation.tpl:160 +#, fuzzy +msgid "Inherit all values from group" +msgstr "组列表" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:3 +#: personal/environment/selectPrinterDialog.tpl:5 +#: personal/environment/selectPrinterDialog.tpl:10 +msgid "Select printer to add" +msgstr "选择要添加的打印机" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:8 +msgid "Select entries to add" +msgstr "选择要添加的条目" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:22 +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:18 +#: personal/environment/selectPrinterDialog.tpl:24 +#: personal/environment/hotplugDialog.tpl:24 +msgid "Filters" +msgstr "过滤器" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +msgid "Select to search within subtrees" +msgstr "选择在子树中查询" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:31 +#: personal/environment/selectPrinterDialog.tpl:42 +#, fuzzy +msgid "Search in subtrees" +msgstr "在子树中查找" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:38 +msgid "Display members of department" +msgstr "显示成员的部门" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:41 +#: personal/environment/selectPrinterDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "选择一个部门来做查询" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:50 +msgid "Display members matching" +msgstr "显示匹配的成员" + +#: admin/systems/goto/selectUserToPrinterDialog.tpl:55 +msgid "Regular expression for matching member names" +msgstr "匹配成员名的正则表达式" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:49 +msgid "USB" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:50 +msgid "Parallel port" +msgstr "" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:53 +#, fuzzy +msgid "Software" +msgstr "立即更新" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:54 +#, fuzzy +msgid "Hardware" +msgstr "重新扫描硬件" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:56 +#, fuzzy +msgid "Even" +msgstr "环境设置" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:57 +#, fuzzy +msgid "Odd" +msgstr "添加" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:60 +#: admin/systems/goto/class_gotoLpdEnabled.inc:61 +#: admin/systems/goto/class_gotoLpdEnabled.inc:62 +#: admin/systems/goto/class_gotoLpdEnabled.inc:63 +#: admin/systems/goto/class_gotoLpdEnabled.inc:64 +#: admin/systems/goto/class_gotoLpdEnabled.inc:65 +#: admin/systems/goto/class_gotoLpdEnabled.inc:66 +#: admin/systems/goto/class_gotoLpdEnabled.inc:67 +#, fuzzy +msgid "bit/s" +msgstr "比特" + +#: admin/systems/goto/class_gotoLpdEnabled.inc:153 +#: admin/systems/goto/terminalService.tpl:58 +#: admin/systems/goto/workstationService.tpl:66 +#: admin/systems/goto/gotoLpdEnable.tpl:71 +msgid "Port" +msgstr "端口" + +#: admin/systems/goto/ArpNewDevice.tpl:1 +msgid "Integrating unknown devices" +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:3 +msgid "" +"The current device has been detected by the ARP monitor used by GOsa. You " +"can integrate this device into your running DHCP/DNS infrastructure by " +"submitting this form. The device entry will disappear from the list of the " +"systems and move to the DNS/DHCP configuration." +msgstr "" + +#: admin/systems/goto/ArpNewDevice.tpl:9 +#, fuzzy +msgid "DNS name" +msgstr "名称" + +#: admin/systems/goto/class_printGeneric.inc:106 +#: admin/systems/goto/class_printGeneric.inc:968 +#, fuzzy +msgid "Internal error" +msgstr "终端服务器" + +#: admin/systems/goto/class_printGeneric.inc:106 +#, fuzzy, php-format +msgid "" +"Cannot determine a valid department for this object. Setting base to '%s'!" +msgstr "无法从对象 dn 中提取一个有效的 base,设置 base 为 '%s'。" + +#: admin/systems/goto/class_printGeneric.inc:262 +#: admin/systems/goto/class_printGeneric.inc:270 +#: admin/systems/goto/class_printGeneric.inc:275 +#: admin/systems/goto/class_printGeneric.inc:324 +#: admin/systems/goto/class_printGeneric.inc:340 +#: admin/systems/goto/class_printGeneric.inc:343 +msgid "Add printer extension" +msgstr "添加打印机扩展" + +#: admin/systems/goto/class_printGeneric.inc:263 +#, fuzzy +msgid "" +"Could not initialize printer tab, parameter parent was missing while " +"construction." +msgstr "在构建时缺少 parent 参数,无法初始化打印机页面。" + +#: admin/systems/goto/class_printGeneric.inc:271 +msgid "This is a workstation template, printer tab is disabled." +msgstr "这是一个工作站模板,打印机页被禁用。" + +#: admin/systems/goto/class_printGeneric.inc:276 +msgid "This is a terminal template, printer tab is disabled." +msgstr "这是一个终端模板,打印机页被禁用。" + +#: admin/systems/goto/class_printGeneric.inc:317 +#: admin/systems/goto/class_printGeneric.inc:325 +#: admin/systems/goto/class_printGeneric.inc:333 +#: admin/systems/goto/class_printGeneric.inc:336 +#: admin/systems/goto/class_printGeneric.inc:341 +#: admin/systems/goto/class_printGeneric.inc:344 +#, fuzzy +msgid "printer" +msgstr "打印机" + +#: admin/systems/goto/class_printGeneric.inc:325 +#, fuzzy +msgid "" +"You can't enable it while 'cn' is not present in entry. Possibly you are " +"currently creating a new terminal template." +msgstr "" +"这个对象已经禁用打印机插件。您不能在 'cn' 不存在于条目中时启用它。可能您正在" +"创建一个新的终端模板" + +#: admin/systems/goto/class_printGeneric.inc:332 +#: admin/systems/goto/class_printGeneric.inc:335 +msgid "Remove printer extension" +msgstr "删除打印机扩展" + +#: admin/systems/goto/class_printGeneric.inc:513 +#, php-format +msgid "Your currently selected PPD file '%s' doesn't exist." +msgstr "您当前选择的 PPD 文件 '%s' 不存在。" + +#: admin/systems/goto/class_printGeneric.inc:518 +#, fuzzy +msgid "Not defined" +msgstr "未定义" + +#: admin/systems/goto/class_printGeneric.inc:521 +#: admin/systems/ppd/class_printerPPDDialog.inc:97 +msgid "Can't get ppd informations." +msgstr "无法获取 ppd 信息。" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_printGeneric.inc:536 +#, fuzzy, php-format +msgid "This printer belongs to %s. You can't rename this printer." +msgstr "该打印机属于终端 %s。您不能重命名该打印机。" + +#: admin/systems/goto/class_printGeneric.inc:534 +#: admin/systems/goto/class_terminalStartup.inc:180 +#: admin/systems/goto/class_terminalInfo.inc:68 +#: admin/systems/goto/class_terminalGeneric.inc:230 +#, fuzzy +msgid "terminal" +msgstr "终端" + +#: admin/systems/goto/class_printGeneric.inc:536 +#: admin/systems/goto/class_workstationGeneric.inc:226 +#: admin/systems/goto/class_workstationStartup.inc:285 +#, fuzzy +msgid "workstation" +msgstr "工作站" + +#: admin/systems/goto/class_printGeneric.inc:583 +#: admin/systems/goto/class_printGeneric.inc:590 +#, fuzzy +msgid "Object is no printer!" +msgstr "网络打印机" + +#: admin/systems/goto/class_printGeneric.inc:680 +#: admin/systems/goto/printer.tpl:54 +msgid "Printer URL" +msgstr "打印机 URL" + +#: admin/systems/goto/class_printGeneric.inc:903 +#: admin/systems/goto/class_printGeneric.inc:905 +#: addons/goto/events/class_EventTargetAddUsersList.inc:173 +msgid "Group" +msgstr "组" + +#: admin/systems/goto/class_printGeneric.inc:921 +#, fuzzy +msgid "Print generic" +msgstr "打印服务" + +#: admin/systems/goto/class_printGeneric.inc:926 +#: admin/systems/goto/terminalService.tpl:245 +#: personal/environment/environment.tpl:338 +#: personal/environment/environment.tpl:374 +msgid "Printer" +msgstr "打印机" + +#: admin/systems/goto/class_printGeneric.inc:933 +msgid "LabeledURL" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:934 +#, fuzzy +msgid "Printer PPD" +msgstr "打印机" + +#: admin/systems/goto/class_printGeneric.inc:935 +#: admin/systems/goto/printer.tpl:82 +msgid "Permissions" +msgstr "允许" + +#: admin/systems/goto/class_printGeneric.inc:951 +#: admin/systems/goto/class_printGeneric.inc:973 +#, fuzzy +msgid "printer user" +msgstr "打印机" + +#: admin/systems/goto/class_printGeneric.inc:968 +#, php-format +msgid "Illegal member type '%s'!" +msgstr "" + +#: admin/systems/goto/class_printGeneric.inc:1008 +#, fuzzy, php-format +msgid "'%s' is already used!" +msgstr "该名称已经被使用。" + +#: admin/systems/goto/class_printGeneric.inc:1019 +#, fuzzy, php-format +msgid "'%s' does not exist!" +msgstr "PPD 管理员:给出的路径 '%s' 不存在。" + +#: admin/systems/goto/class_selectUserToPrinterDialog.inc:147 +msgid "Please select a printer or press cancel." +msgstr "请选择一个打印机或者取消。" + +#: admin/systems/goto/class_terminalStartup.inc:135 +#, fuzzy, php-format +msgid "" +"Command '%s', specified as systemKernelsHook for plugin '%s' doesn't seem to " +"exist." +msgstr "命令 '%s',作为插件 '%s' 的 KERNELS hook 好像并不存在。" + +#: admin/systems/goto/class_terminalStartup.inc:223 +#: admin/systems/goto/class_workstationStartup.inc:432 +#: personal/environment/class_environment.inc:675 +#: personal/environment/class_environment.inc:677 +#: personal/environment/class_environment.inc:688 +#, fuzzy +msgid "Mount point" +msgstr "挂载点" + +#: admin/systems/goto/class_terminalStartup.inc:372 +#: admin/systems/goto/class_workstationStartup.inc:750 +#, fuzzy +msgid "Fatal error" +msgstr "终端服务器" + +#: admin/systems/goto/class_terminalStartup.inc:533 +#: admin/systems/goto/class_workstationStartup.inc:1007 +msgid "Startup" +msgstr "启动" + +#: admin/systems/goto/class_terminalStartup.inc:534 +#, fuzzy +msgid "Terminal startup" +msgstr "终端模板" + +#: admin/systems/goto/class_terminalStartup.inc:542 +#: admin/systems/goto/class_workstationStartup.inc:1016 +#, fuzzy +msgid "Ldap server" +msgstr "LDAP 服务器" + +#: admin/systems/goto/class_terminalStartup.inc:544 +#: admin/systems/goto/class_workstationStartup.inc:1020 +msgid "Kernel modules" +msgstr "" + +#: admin/systems/goto/class_terminalStartup.inc:545 +#: admin/systems/goto/class_workstationStartup.inc:1017 +#: admin/systems/goto/terminalStartup.tpl:40 +#: admin/systems/goto/workstationStartup.tpl:9 +msgid "Boot kernel" +msgstr "启动内核" + +#: admin/systems/goto/class_terminalStartup.inc:546 +#: admin/systems/goto/class_workstationStartup.inc:1018 +#, fuzzy +msgid "Kernel parameter" +msgstr "检查参数" + +#: admin/systems/goto/class_terminalInfo.inc:50 +#: admin/systems/goto/class_terminalInfo.inc:204 +msgid "present" +msgstr "可用的" + +#: admin/systems/goto/class_terminalInfo.inc:77 +#: admin/systems/goto/class_terminalService.inc:121 +#: admin/systems/goto/class_workstationStartup.inc:1295 +#: admin/systems/goto/class_workstationStartup.inc:1297 +#: admin/systems/goto/class_workstationService.inc:78 +#: admin/systems/ppd/class_printerPPDDialog.inc:54 +#: admin/systems/ppd/class_printerPPDDialog.inc:121 +#: personal/environment/class_environment.inc:234 +#, fuzzy +msgid "Configuration error" +msgstr "配置文件" + +#: admin/systems/goto/class_terminalInfo.inc:83 +#: admin/systems/goto/class_terminalInfo.inc:179 +msgid "unknown status" +msgstr "未知状态" + +#: admin/systems/goto/class_terminalInfo.inc:92 +msgid "This is a virtual terminal which has no properties to show here." +msgstr "这是一个虚拟终端,没有属性可以显示。" + +#: admin/systems/goto/class_terminalInfo.inc:106 +msgid "online" +msgstr "在线" + +#: admin/systems/goto/class_terminalInfo.inc:168 +msgid "running" +msgstr "运行" + +#: admin/systems/goto/class_terminalInfo.inc:171 +msgid "not running" +msgstr "没有运行" + +#: admin/systems/goto/class_terminalInfo.inc:174 +msgid "not defined" +msgstr "未定义" + +#: admin/systems/goto/class_terminalInfo.inc:196 +msgid "offline" +msgstr "离线" + +#: admin/systems/goto/class_terminalInfo.inc:251 +#, fuzzy +msgid "System info" +msgstr "系统信息" + +#: admin/systems/goto/class_terminalInfo.inc:252 +#, fuzzy +msgid "System informations" +msgstr "系统信息" + +#: admin/systems/goto/class_terminalService.inc:128 +#: admin/systems/goto/class_terminalService.inc:129 +#: admin/systems/goto/class_terminalService.inc:130 +#: admin/systems/goto/class_terminalService.inc:131 +#: admin/systems/goto/class_workstationService.inc:88 +#: admin/systems/goto/class_workstationService.inc:89 +#: admin/systems/goto/class_workstationService.inc:90 +#: admin/systems/goto/class_workstationService.inc:91 +msgid "bit" +msgstr "比特" + +#: admin/systems/goto/class_terminalService.inc:177 +msgid "XDMCP" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:178 +msgid "LDM" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:179 +msgid "Shell" +msgstr "Shell" + +#: admin/systems/goto/class_terminalService.inc:180 +#, fuzzy +msgid "Telnet" +msgstr "删除" + +#: admin/systems/goto/class_terminalService.inc:181 +msgid "Windows RDP" +msgstr "Windows RDP" + +#: admin/systems/goto/class_terminalService.inc:204 +#: admin/systems/goto/class_workstationService.inc:144 +msgid "automatic" +msgstr "自动" + +#: admin/systems/goto/class_terminalService.inc:267 +#: admin/systems/goto/class_workstationService.inc:194 +msgid "Bit" +msgstr "字节" + +#: admin/systems/goto/class_terminalService.inc:314 +msgid "This 'dn' has no terminal features." +msgstr "这个 'dn' 没有终端功能。" + +#: admin/systems/goto/class_terminalService.inc:372 +#, fuzzy +msgid "Unsupported" +msgstr "USB 支持" + +#: admin/systems/goto/class_terminalService.inc:414 +#: admin/systems/goto/class_workstationService.inc:309 +msgid "Choose the phone located at the current terminal" +msgstr "在当前终端中选择电话" + +#: admin/systems/goto/class_terminalService.inc:495 +#: admin/systems/goto/class_terminalService.inc:500 +#, fuzzy +msgid "VSync range" +msgstr "VSync" + +#: admin/systems/goto/class_terminalService.inc:508 +#: admin/systems/goto/class_terminalService.inc:513 +#, fuzzy +msgid "HSync range" +msgstr "HSync" + +#: admin/systems/goto/class_terminalService.inc:539 +msgid "" +"Remote desktop settings contains servers that do not support the selected " +"connection method." +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:603 +#: admin/systems/goto/workstationService.tpl:157 +#: admin/systems/goto/class_workstationService.inc:85 +msgid "unknown" +msgstr "未知" + +#: admin/systems/goto/class_terminalService.inc:678 +#: admin/systems/goto/class_workstationService.inc:484 +#, fuzzy +msgid "Service" +msgstr "服务" + +#: admin/systems/goto/class_terminalService.inc:688 +#: admin/systems/goto/class_workstationService.inc:493 +#, fuzzy +msgid "Monitor" +msgstr "显示器大小" + +#: admin/systems/goto/class_terminalService.inc:689 +#, fuzzy +msgid "Method" +msgstr "方法" + +#: admin/systems/goto/class_terminalService.inc:690 +#: admin/systems/goto/terminalService.tpl:173 +msgid "Remote desktop" +msgstr "远程桌面" + +#: admin/systems/goto/class_terminalService.inc:691 +#: admin/systems/goto/class_workstationService.inc:494 +#, fuzzy +msgid "Gfx driver" +msgstr "新驱动" + +#: admin/systems/goto/class_terminalService.inc:692 +#: admin/systems/goto/class_workstationService.inc:495 +#, fuzzy +msgid "Gfx resolution" +msgstr "分辨率" + +#: admin/systems/goto/class_terminalService.inc:693 +#: admin/systems/goto/class_workstationService.inc:496 +#, fuzzy +msgid "Gfx color depth" +msgstr "颜色深度" + +#: admin/systems/goto/class_terminalService.inc:694 +#: admin/systems/goto/terminalService.tpl:150 +#: admin/systems/goto/workstationService.tpl:170 +#: admin/systems/goto/class_workstationService.inc:393 +#: admin/systems/goto/class_workstationService.inc:395 +#: admin/systems/goto/class_workstationService.inc:400 +#: admin/systems/goto/class_workstationService.inc:497 +msgid "HSync" +msgstr "HSync" + +#: admin/systems/goto/class_terminalService.inc:695 +#: admin/systems/goto/terminalService.tpl:158 +#: admin/systems/goto/workstationService.tpl:181 +#: admin/systems/goto/class_workstationService.inc:376 +#: admin/systems/goto/class_workstationService.inc:378 +#: admin/systems/goto/class_workstationService.inc:383 +#: admin/systems/goto/class_workstationService.inc:498 +msgid "VSync" +msgstr "VSync" + +#: admin/systems/goto/class_terminalService.inc:696 +msgid "Auto-Sync" +msgstr "" + +#: admin/systems/goto/class_terminalService.inc:697 +#: admin/systems/goto/class_workstationService.inc:500 +#, fuzzy +msgid "Scanner enabled" +msgstr "保存打印机失败" + +#: admin/systems/goto/class_terminalService.inc:698 +#: admin/systems/goto/class_terminalService.inc:704 +#, fuzzy +msgid "Printer enabled" +msgstr "打印机名称" + +#: admin/systems/goto/class_terminalService.inc:699 +#: admin/systems/goto/class_workstationService.inc:501 +#, fuzzy +msgid "Keyboard model" +msgstr "选择键盘类型" + +#: admin/systems/goto/class_terminalService.inc:700 +#: admin/systems/goto/class_workstationService.inc:502 +#, fuzzy +msgid "Keyboard layout" +msgstr "选择键盘布局" + +#: admin/systems/goto/class_terminalService.inc:701 +#: admin/systems/goto/class_workstationService.inc:503 +#, fuzzy +msgid "Keyboard variant" +msgstr "选择键盘变种" + +#: admin/systems/goto/class_terminalService.inc:702 +#: admin/systems/goto/class_workstationService.inc:504 +#, fuzzy +msgid "Mouse type" +msgstr "电话类型" + +#: admin/systems/goto/class_terminalService.inc:703 +#: admin/systems/goto/class_workstationService.inc:505 +#, fuzzy +msgid "Mouse port" +msgstr "挂载点" + +#: admin/systems/goto/class_terminalService.inc:705 +#: admin/systems/goto/terminalService.tpl:76 +#: admin/systems/goto/workstationService.tpl:86 +#: admin/systems/goto/class_workstationService.inc:506 +msgid "Telephone hardware" +msgstr "电话硬件" + +#: admin/systems/goto/info.tpl:6 +msgid "System information" +msgstr "系统信息" + +#: admin/systems/goto/info.tpl:12 +msgid "CPU" +msgstr "CPU" + +#: admin/systems/goto/info.tpl:15 +msgid "Memory" +msgstr "内存" + +#: admin/systems/goto/info.tpl:18 +msgid "Boot MAC" +msgstr "MAC 地址" + +#: admin/systems/goto/info.tpl:21 +msgid "USB support" +msgstr "USB 支持" + +#: admin/systems/goto/info.tpl:24 admin/systems/goto/info.tpl:92 +msgid "System status" +msgstr "系统状态" + +#: admin/systems/goto/info.tpl:28 +msgid "Inventory number" +msgstr "存货编号" + +#: admin/systems/goto/info.tpl:32 +msgid "Last login" +msgstr "最后登录" + +#: admin/systems/goto/info.tpl:43 +msgid "Network devices" +msgstr "网络设备" + +#: admin/systems/goto/info.tpl:52 +msgid "IDE devices" +msgstr "IDE 设备" + +#: admin/systems/goto/info.tpl:61 +msgid "SCSI devices" +msgstr "SCSI 设备" + +#: admin/systems/goto/info.tpl:69 +msgid "Floppy device" +msgstr "软驱" + +#: admin/systems/goto/info.tpl:73 +msgid "CDROM device" +msgstr "光驱" + +#: admin/systems/goto/info.tpl:78 admin/systems/goto/terminalService.tpl:95 +#: admin/systems/goto/workstationService.tpl:107 +msgid "Graphic device" +msgstr "显卡" + +#: admin/systems/goto/info.tpl:82 +msgid "Audio device" +msgstr "声卡" + +#: admin/systems/goto/info.tpl:98 +msgid "Up since" +msgstr "Up since" + +#: admin/systems/goto/info.tpl:101 +msgid "CPU load" +msgstr "CPU 占用率" + +#: admin/systems/goto/info.tpl:104 +msgid "Memory usage" +msgstr "内存使用" + +#: admin/systems/goto/info.tpl:107 +msgid "Swap usage" +msgstr "Swap 使用" + +#: admin/systems/goto/info.tpl:121 +msgid "SSH service" +msgstr "SSH 服务" + +#: admin/systems/goto/info.tpl:127 +msgid "Scan service" +msgstr "扫描服务" + +#: admin/systems/goto/info.tpl:130 +msgid "Sound service" +msgstr "声音服务" + +#: admin/systems/goto/info.tpl:133 +msgid "GUI" +msgstr "GUI" + +#: admin/systems/goto/class_workstationGeneric.inc:299 +#: admin/systems/goto/class_workstationGeneric.inc:309 +#: addons/goto/events/class_DaemonEvent_update.inc:29 +#: addons/goto/events/class_DaemonEvent_update.inc:30 +#, fuzzy +msgid "Software update" +msgstr "立即更新" + +#: admin/systems/goto/class_workstationGeneric.inc:303 +#: admin/systems/goto/class_workstationGeneric.inc:311 +#: addons/goto/events/class_DaemonEvent_localboot.inc:28 +#: addons/goto/events/class_DaemonEvent_localboot.inc:29 +msgid "Force localboot" +msgstr "强制本地启动" + +#: admin/systems/goto/class_workstationGeneric.inc:307 +#: admin/systems/goto/class_terminalGeneric.inc:271 +#: addons/goto/events/class_DaemonEvent_wakeup.inc:29 +msgid "Wake up" +msgstr "唤醒" + +#: admin/systems/goto/class_workstationGeneric.inc:500 +msgid "A valid LDAP server assignement is missing!" +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:510 +#, fuzzy +msgid "Software deployment" +msgstr "系统类型" + +#: admin/systems/goto/class_workstationGeneric.inc:511 +msgid "This host is currently installing. If you want to save it, press 'OK'." +msgstr "" + +#: admin/systems/goto/class_workstationGeneric.inc:699 +#, fuzzy +msgid "Workstation generic" +msgstr "工作站名称" + +#: admin/systems/goto/class_workstationGeneric.inc:704 +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: addons/goto/class_target_list.inc:203 +#: addons/goto/events/class_EventTargetAddList.inc:249 +msgid "Workstation" +msgstr "工作站" + +#: admin/systems/goto/class_workstationGeneric.inc:711 +#, fuzzy +msgid "Goto mode" +msgstr "到目录" + +#: admin/systems/goto/class_workstationGeneric.inc:714 +#: admin/systems/goto/class_terminalGeneric.inc:676 +#, fuzzy +msgid "Root password" +msgstr "设置口令" + +#: admin/systems/goto/class_workstationGeneric.inc:715 +#, fuzzy +msgid "Create FAI CD" +msgstr "创建" + +#: admin/systems/goto/gencd_frame.tpl:2 +msgid "Your browser does not supprt iframes." +msgstr "您的浏览器不支持 iframes。" + +#: admin/systems/goto/terminalService.tpl:4 +#: admin/systems/goto/workstationService.tpl:4 +msgid "Keyboard" +msgstr "键盘" + +#: admin/systems/goto/terminalService.tpl:7 +#: admin/systems/goto/workstationService.tpl:7 +#: admin/systems/ppd/printerPPDDialog.tpl:10 +msgid "Model" +msgstr "模型" + +#: admin/systems/goto/terminalService.tpl:10 +#: admin/systems/goto/workstationService.tpl:11 +msgid "Choose keyboard model" +msgstr "选择键盘类型" + +#: admin/systems/goto/terminalService.tpl:17 +#: admin/systems/goto/workstationService.tpl:19 +msgid "Layout" +msgstr "布局" + +#: admin/systems/goto/terminalService.tpl:20 +#: admin/systems/goto/workstationService.tpl:23 +msgid "Choose keyboard layout" +msgstr "选择键盘布局" + +#: admin/systems/goto/terminalService.tpl:27 +#: admin/systems/goto/workstationService.tpl:31 +msgid "Variant" +msgstr "Variant" + +#: admin/systems/goto/terminalService.tpl:30 +#: admin/systems/goto/workstationService.tpl:35 +msgid "Choose keyboard variant" +msgstr "选择键盘变种" + +#: admin/systems/goto/terminalService.tpl:45 +#: admin/systems/goto/workstationService.tpl:51 +msgid "Mouse" +msgstr "鼠标" + +#: admin/systems/goto/terminalService.tpl:51 +#: admin/systems/goto/workstationService.tpl:58 +msgid "Choose mouse type" +msgstr "选择鼠标类型" + +#: admin/systems/goto/terminalService.tpl:61 +#: admin/systems/goto/workstationService.tpl:70 +msgid "Choose mouse port" +msgstr "选择鼠标端口" + +#: admin/systems/goto/terminalService.tpl:79 +#: admin/systems/goto/workstationService.tpl:89 +msgid "Telephone" +msgstr "电话" + +#: admin/systems/goto/terminalService.tpl:98 +#: admin/systems/goto/workstationService.tpl:110 +#: admin/systems/goto/printer.tpl:66 +msgid "Driver" +msgstr "驱动" + +#: admin/systems/goto/terminalService.tpl:101 +#: admin/systems/goto/workstationService.tpl:114 +msgid "Choose graphic driver that is needed by the installed graphic board" +msgstr "选择安装的显卡需要的显卡驱动" + +#: admin/systems/goto/terminalService.tpl:108 +#: admin/systems/goto/workstationService.tpl:122 +#: personal/environment/class_environment.inc:1786 +#: personal/environment/environment.tpl:183 +msgid "Resolution" +msgstr "分辨率" + +#: admin/systems/goto/terminalService.tpl:111 +#: admin/systems/goto/workstationService.tpl:126 +msgid "Choose screen resolution used in graphic mode" +msgstr "选择图形模式的屏幕分辨率" + +#: admin/systems/goto/terminalService.tpl:118 +#: admin/systems/goto/workstationService.tpl:134 +msgid "Color depth" +msgstr "颜色深度" + +#: admin/systems/goto/terminalService.tpl:121 +#: admin/systems/goto/workstationService.tpl:138 +msgid "Choose colordepth used in graphic mode" +msgstr "选择图形模式的色彩深度" + +#: admin/systems/goto/terminalService.tpl:135 +#: admin/systems/goto/workstationService.tpl:153 +msgid "Display device" +msgstr "显示设备" + +#: admin/systems/goto/terminalService.tpl:147 +#: admin/systems/goto/workstationService.tpl:167 +msgid "Use DDC for automatic detection" +msgstr "使用 DDC 用于自动检测" + +#: admin/systems/goto/terminalService.tpl:154 +#: admin/systems/goto/workstationService.tpl:175 +msgid "Horizontal refresh frequency for installed monitor" +msgstr "安装的显示器的水平刷新率" + +#: admin/systems/goto/terminalService.tpl:162 +#: admin/systems/goto/workstationService.tpl:186 +msgid "Vertical refresh frequency for installed monitor" +msgstr "安装的显示器的水平垂直刷新率" + +#: admin/systems/goto/terminalService.tpl:177 +msgid "Connect method" +msgstr "连接方法" + +#: admin/systems/goto/terminalService.tpl:180 +msgid "Choose method to connect to terminal server" +msgstr "选择连接终端服务器的方法" + +#: admin/systems/goto/terminalService.tpl:184 +#: admin/systems/goto/terminalStartup.tpl:14 +#: admin/systems/goto/workstationStartup.tpl:36 +#: addons/goto/class_gotomasses.inc:400 +#, fuzzy +msgid "Reload" +msgstr "读" + +#: admin/systems/goto/terminalService.tpl:191 +msgid "Terminal server" +msgstr "终端服务器" + +#: admin/systems/goto/terminalService.tpl:202 +msgid "Select specific terminal server to use" +msgstr "选择要用的终端服务器" + +#: admin/systems/goto/terminalService.tpl:208 +msgid "Add selected server" +msgstr "" + +#: admin/systems/goto/terminalService.tpl:212 +#, fuzzy +msgid "Remove selected server" +msgstr "删除图片" + +#: admin/systems/goto/terminalService.tpl:233 +#: admin/systems/goto/workstationService.tpl:201 +msgid "Scan device" +msgstr "扫描设备" + +#: admin/systems/goto/terminalService.tpl:235 +#: admin/systems/goto/workstationService.tpl:204 +msgid "Select to start SANE scan service on terminal" +msgstr "选择在终端启动 SANE 扫描服务" + +#: admin/systems/goto/terminalService.tpl:237 +#: admin/systems/goto/workstationService.tpl:207 +msgid "Provide scan services" +msgstr "提供扫描服务" + +#: admin/systems/goto/gotoLpdEnable.tpl:12 +#: admin/systems/goto/gotoLpdEnable.tpl:48 +#, fuzzy +msgid "Enable printer settings" +msgstr "打印机设置" + +#: admin/systems/goto/gotoLpdEnable.tpl:87 +#, fuzzy +msgid "Write only" +msgstr "私人电话" + +#: admin/systems/goto/gotoLpdEnable.tpl:100 +#, fuzzy +msgid "Bit rate" +msgstr "创建" + +#: admin/systems/goto/gotoLpdEnable.tpl:110 +#, fuzzy +msgid "Flow control" +msgstr "访问选项" + +#: admin/systems/goto/gotoLpdEnable.tpl:120 +#, fuzzy +msgid "Parity" +msgstr "优先级" + +#: admin/systems/goto/gotoLpdEnable.tpl:130 +#, fuzzy +msgid "Bits" +msgstr "字节" + +#: admin/systems/goto/class_workstationStartup.inc:234 +#, fuzzy, php-format +msgid "FAI mirror '%s' is not available - setting to mirror 'auto'!" +msgstr "选择的 kiosk profile '%s' 不存在,设置当前 profile 为 'none'。" + +#: admin/systems/goto/class_workstationStartup.inc:247 +#, fuzzy, php-format +msgid "" +"FAI release '%s' is not available on mirror '%s' - setting to release '%s'!" +msgstr "选择的 kiosk profile '%s' 不存在,设置当前 profile 为 'none'。" + +#: admin/systems/goto/class_workstationStartup.inc:266 +msgid "Please select a 'FAI server' or remove the 'FAI classes'." +msgstr "请选择一个“自动化安装(FAI)服务器”或者删除“自动化安装(FAI)类”。" + +#: admin/systems/goto/class_workstationStartup.inc:324 +#, fuzzy +msgid "" +"There is already a profile containing a partition table in your " +"configuration!" +msgstr "在您的选择中已经有一个 profile 包含分区表设置。" + +#: admin/systems/goto/class_workstationStartup.inc:629 +msgid "Not available in current setup" +msgstr "当前安装不可用" + +#: admin/systems/goto/class_workstationStartup.inc:1008 +#, fuzzy +msgid "System startup" +msgstr "系统状态" + +#: admin/systems/goto/class_workstationStartup.inc:1023 +msgid "FAI classes" +msgstr "自动化安装(FAI)类" + +#: admin/systems/goto/class_workstationStartup.inc:1024 +#, fuzzy +msgid "Debian mirror" +msgstr "数据库镜像" + +#: admin/systems/goto/class_workstationStartup.inc:1025 +#, fuzzy +msgid "Debian release" +msgstr "当前版本" + +#: admin/systems/goto/class_workstationStartup.inc:1027 +msgid "FAI status flag" +msgstr "" + +#: admin/systems/goto/class_workstationStartup.inc:1297 +msgid "'repositoryBranchHook' returned no result!" +msgstr "" + +#: admin/systems/goto/gencd.tpl:2 +msgid "CD-Install-Image generation" +msgstr "创建 CD 安装镜像" + +#: admin/systems/goto/gencd.tpl:5 +msgid "" +"This option enables you to generate FAI install CD images for the selected " +"workstation. The procedure may take about 10 minutes to complete, so please " +"be patient after pressing the 'Create ISO-Image' button." +msgstr "" +"这个选项使您能够为选择的工作站创建 FAI 安装光盘镜像。这个过程可能需要 10 分" +"钟,所以请在按下“创建 ISO 镜像”后耐心等待。" + +#: admin/systems/goto/gencd.tpl:9 +msgid "Create ISO-Image" +msgstr "创建 ISO 镜像" + +#: admin/systems/goto/class_workstationService.inc:485 +#, fuzzy +msgid "Workstation service" +msgstr "工作站名称" + +#: admin/systems/goto/class_workstationService.inc:499 +#, fuzzy +msgid "Use DDC" +msgstr "用户 ID" + +#: admin/systems/goto/terminalStartup.tpl:1 +#: admin/systems/goto/workstationStartup.tpl:4 +msgid "Boot parameters" +msgstr "启动参数" + +#: admin/systems/goto/terminalStartup.tpl:7 +#: admin/systems/goto/workstationStartup.tpl:29 +msgid "LDAP server" +msgstr "LDAP 服务器" + +#: admin/systems/goto/terminalStartup.tpl:12 +#: admin/systems/goto/workstationStartup.tpl:34 +#, fuzzy +msgid "inherit from group" +msgstr "组列表" + +#: admin/systems/goto/terminalStartup.tpl:51 +#: admin/systems/goto/workstationStartup.tpl:20 +msgid "Custom options" +msgstr "定制选项" + +#: admin/systems/goto/terminalStartup.tpl:55 +#: admin/systems/goto/workstationStartup.tpl:24 +msgid "" +"Enter any parameters that should be passed to the kernel as append line " +"during bootup" +msgstr "输入任意将在启动过程中作为附加行传递给内核的参数" + +#: admin/systems/goto/terminalStartup.tpl:70 +#: admin/systems/goto/workstationStartup.tpl:188 +msgid "Kernel modules (format: name parameters)" +msgstr "内核模块(格式: 名称 参数)" + +#: admin/systems/goto/terminalStartup.tpl:73 +#: admin/systems/goto/workstationStartup.tpl:191 +msgid "Add additional modules to load on startup" +msgstr "添加在启动中要加载的模块" + +#: admin/systems/goto/terminalStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:227 +msgid "Mountpoint" +msgstr "挂载点" + +#: admin/systems/goto/SelectDeviceType.tpl:3 +msgid "" +"This system has no system type configured. Please choose a system type for " +"this object and an optional inheritance group. Press the 'continue' button " +"to proceed." +msgstr "" + +#: admin/systems/goto/SelectDeviceType.tpl:10 +msgid "" +"Please select a system type and an optional bundle of predefined settings to " +"be inherited." +msgstr "请选择一个系统类型以及一个要继承的可选的预定义设置。" + +#: admin/systems/goto/SelectDeviceType.tpl:12 +#, fuzzy +msgid "" +"Please select a system type and a bundle of predefined settings to be " +"inherited." +msgstr "请选择一个系统类型以及一个要继承的可选的预定义设置。" + +#: admin/systems/goto/SelectDeviceType.tpl:23 +#: admin/systems/goto/SelectDeviceType.tpl:24 +msgid "System type" +msgstr "系统类型" + +#: admin/systems/goto/SelectDeviceType.tpl:36 +msgid "Choose an object group as template" +msgstr "选择一个对象组作为模板" + +#: admin/systems/goto/SelectDeviceType.tpl:37 +#: addons/goto/class_target_list.inc:205 addons/goto/goto_import_file.tpl:40 +#: addons/goto/events/class_EventTargetAddList.inc:259 +msgid "Object group" +msgstr "对象组" + +#: admin/systems/goto/SelectDeviceType.tpl:39 +#: addons/goto/class_gotoLogView.inc:87 +msgid "none" +msgstr "无" + +#: admin/systems/goto/SelectDeviceType.tpl:51 +msgid "Continue" +msgstr "继续" + +#: admin/systems/goto/class_SelectDeviceType.inc:39 +#: admin/systems/goto/class_terminalGeneric.inc:656 +#: admin/systems/goto/class_terminalGeneric.inc:662 +msgid "Terminal" +msgstr "终端" + +#: admin/systems/goto/class_SelectDeviceType.inc:41 +#: admin/systems/goto/chooser.tpl:10 +msgid "Windows workstation" +msgstr "Windows 工作站" + +#: admin/systems/goto/workstationStartup.tpl:64 +#, fuzzy +msgid "" +"FAI Object assignment disabled. You can't use this feature until FAI is " +"activated." +msgstr "直到激活 FAI,您不能使用这个插件。" + +#: admin/systems/goto/workstationStartup.tpl:66 +msgid "GOsa support daemon not configured" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:67 +msgid "FAI settings cannot be modified" +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:70 +msgid "Check if the GOsa support daemon (gosa-si) is running." +msgstr "" + +#: admin/systems/goto/workstationStartup.tpl:71 +#, fuzzy +msgid "retry" +msgstr "编辑记录" + +#: admin/systems/goto/workstationStartup.tpl:79 +#: admin/systems/goto/workstationStartup.tpl:119 +msgid "FAI server" +msgstr "自动化安装服务器" + +#: admin/systems/goto/workstationStartup.tpl:109 +#: admin/systems/goto/workstationStartup.tpl:158 +msgid "Assigned FAI classes" +msgstr "分配的 FAI ç±»" + +#: admin/systems/goto/workstationStartup.tpl:142 +msgid "set" +msgstr "设置" + +#: admin/systems/goto/class_terminalGeneric.inc:657 +#, fuzzy +msgid "Terminal generic" +msgstr "终端服务" + +#: admin/systems/goto/class_terminalGeneric.inc:670 +#, fuzzy +msgid "Syslog server enabled" +msgstr "日志服务器" + +#: admin/systems/goto/class_terminalGeneric.inc:675 +#, fuzzy +msgid "Ntp server settings" +msgstr "用户设置" + +#: admin/systems/goto/printer.tpl:5 +msgid "General" +msgstr "普通" + +#: admin/systems/goto/printer.tpl:8 +msgid "Printer name" +msgstr "打印机名称" + +#: admin/systems/goto/printer.tpl:30 +msgid "Choose subtree to place user in" +msgstr "将用户放到所选择子树中" + +#: admin/systems/goto/printer.tpl:43 +msgid "Details" +msgstr "详细" + +#: admin/systems/goto/printer.tpl:46 +msgid "Printer location" +msgstr "打印机位置" + +#: admin/systems/goto/printer.tpl:89 +msgid "Users which are allowed to use this printer" +msgstr "允许使用该打印机的用户" + +#: admin/systems/goto/printer.tpl:91 +msgid "Users" +msgstr "用户" + +#: admin/systems/goto/printer.tpl:96 admin/systems/goto/printer.tpl:120 +msgid "Add user" +msgstr "添加用户" + +#: admin/systems/goto/printer.tpl:99 admin/systems/goto/printer.tpl:123 +msgid "Add group" +msgstr "添加组" + +#: admin/systems/goto/printer.tpl:113 +msgid "Users which are allowed to administrate this printer" +msgstr "允许管理该打印机的用户" + +#: admin/systems/goto/printer.tpl:115 +msgid "Admins" +msgstr "管理员" + +#: admin/systems/goto/chooser.tpl:1 +msgid "Choose the kind of system component you want to create" +msgstr "选择要创建系统组件类型" + +#: admin/systems/goto/chooser.tpl:4 +msgid "" +"Linux terminals and workstations are autocreated on bootup. For this reason " +"you're only be able to create templates for a specific tree. Servers are " +"normally automatically added too, but in some special cases you may need to " +"create a faked server entry to provide GOsa with some informations. Other " +"network components may be used for Nagios setups to create component " +"dependencies." +msgstr "" +"Linux 终端和工作站在启动时被自动创建。因此您只能为指定的树创建模板。服务器一" +"般也被自动添加,但是在一些特殊情况下,您可能需要创建一个伪服务器条目来提供 " +"GOsa 一些信息。其他网络组件可能用于 Nagios 安装来创建组件依赖。" + +#: admin/systems/goto/chooser.tpl:7 +msgid "Linux thin client template" +msgstr "Linux 瘦客户机模板" + +#: admin/systems/goto/chooser.tpl:8 +msgid "Linux workstation template" +msgstr "Linux 工作站模板" + +#: admin/systems/goto/chooser.tpl:9 +msgid "Linux Server" +msgstr "Linux 服务器" + +#: admin/systems/goto/chooser.tpl:11 +msgid "Network printer" +msgstr "网络打印机" + +#: admin/systems/goto/chooser.tpl:12 +msgid "Phone" +msgstr "电话" + +#: admin/systems/goto/chooser.tpl:13 +msgid "Other network component" +msgstr "其他网络组件" + +#: admin/systems/goto/terminal.tpl:8 +msgid "Terminal template" +msgstr "终端模板" + +#: admin/systems/goto/terminal.tpl:10 +msgid "Terminal name" +msgstr "终端名称" + +#: admin/systems/goto/terminal.tpl:178 +#, fuzzy +msgid "Inherit all" +msgstr "中间名" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:6 +msgid "Select objects to add" +msgstr "选择要添加的对象" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:28 +msgid "Display objects matching" +msgstr "显示匹配对象" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:32 +msgid "Regular expression for matching object names" +msgstr "匹配对象名的正则表达式" + +#: admin/systems/ppd/printerPPDSelectionDialog.tpl:44 +msgid "Close" +msgstr "关闭" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#: admin/systems/ppd/class_ppdManager.inc:148 +#: admin/systems/ppd/class_ppdManager.inc:150 +#, fuzzy +msgid "PPD manager error" +msgstr "LDAP 管理" + +#: admin/systems/ppd/class_ppdManager.inc:16 +#, fuzzy, php-format +msgid "The specified path '%s' does not exist." +msgstr "PPD 管理员:给出的路径 '%s' 不存在。" + +#: admin/systems/ppd/class_ppdManager.inc:148 +#, fuzzy, php-format +msgid "Specified PPD file '%s' cannot be opened for reading." +msgstr "给出的 ppd 文件 '%s' 无法打开读取。" + +#: admin/systems/ppd/class_ppdManager.inc:150 +#, fuzzy, php-format +msgid "The temporary file '%s' cannot be opened for writing." +msgstr "请求的 tmp 文件 '%s' 无法以写方式打开。" + +#: admin/systems/ppd/class_ppdManager.inc:176 +#: admin/systems/ppd/class_ppdManager.inc:313 +#, php-format +msgid "" +"Parsing PPD file %s failed - line too long. Trailing characters have been " +"ignored" +msgstr "解析 PPD 文件 %s 失败──行太长。截断的字符被忽略。" + +#: admin/systems/ppd/class_ppdManager.inc:184 +msgid "Nested groups are not supported!" +msgstr "不支持嵌套组!" + +#: admin/systems/ppd/class_ppdManager.inc:188 +msgid "Group name not unique!" +msgstr "组名不唯一!" + +#: admin/systems/ppd/class_ppdManager.inc:194 +#: admin/systems/ppd/class_ppdManager.inc:224 +msgid "Symbol values are not supported yet!" +msgstr "尚不支持符号值!" + +#: admin/systems/ppd/class_ppdManager.inc:218 +msgid "Nested options are not supported!" +msgstr "不支持嵌套选项!" + +#: admin/systems/ppd/class_ppdManager.inc:243 +msgid "PickMany is not supported yet!" +msgstr "尚不支持 PickMany!" + +#: admin/systems/ppd/class_ppdManager.inc:334 +#, php-format +msgid "Parsing PPD file %s failed - no information found." +msgstr "解析 PPD 文件 %s 失败──未找到信息。" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:223 +#: admin/systems/ppd/class_printerPPDDialog.inc:240 +#: admin/systems/ppd/class_printerPPDDialog.inc:248 +#: admin/systems/ppd/class_printerPPDDialog.inc:272 +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#: admin/systems/ppd/class_printerPPDDialog.inc:313 +#: admin/systems/ppd/class_printerPPDDialog.inc:327 +#: admin/systems/ppd/class_printerPPDDialog.inc:337 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#: admin/systems/ppd/class_printerPPDDialog.inc:551 +#: admin/systems/ppd/class_printerPPDDialog.inc:554 +#: admin/systems/ppd/class_printerPPDDialog.inc:557 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:75 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:100 +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, fuzzy +msgid "PPD error" +msgstr "LDAP 服务器" + +#: admin/systems/ppd/class_printerPPDDialog.inc:72 +#, fuzzy, php-format +msgid "Cannot open PPD '%s'!" +msgstr "无法打开文件 '%s'。" + +#: admin/systems/ppd/class_printerPPDDialog.inc:122 +#, php-format +msgid "Cannot open PPD path '%s' for reading and writing!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDDialog.inc:141 +#: admin/systems/ppd/class_printerPPDDialog.inc:341 +#: addons/goto/class_goto_import_file.inc:29 +#, fuzzy +msgid "file is empty" +msgstr "删除这个条目" + +#: admin/systems/ppd/class_printerPPDDialog.inc:290 +#, fuzzy, php-format +msgid "Cannot parse PPD '%s'!" +msgstr "无法打开文件 '%s'。" + +#: admin/systems/ppd/class_printerPPDDialog.inc:316 +#, fuzzy +msgid "Overwrite existing PPD" +msgstr "覆盖已经存在的条目" + +#: admin/systems/ppd/class_printerPPDDialog.inc:317 +#, fuzzy +msgid "" +"There is already a ppd file for this kind of printer. Do you want to " +"overwrite it?" +msgstr "这种打印机类型已经有一个 ppd 文件。" + +#: admin/systems/ppd/class_printerPPDDialog.inc:465 +msgid "Section" +msgstr "节" + +#: admin/systems/ppd/class_printerPPDDialog.inc:525 +#: admin/systems/ppd/class_printerPPDDialog.inc:528 +msgid "True" +msgstr "真" + +#: admin/systems/ppd/class_printerPPDDialog.inc:526 +#: admin/systems/ppd/class_printerPPDDialog.inc:529 +msgid "False" +msgstr "假" + +#: admin/systems/ppd/class_printerPPDDialog.inc:534 +#, fuzzy, php-format +msgid "PPD type '%s' is not supported!" +msgstr "尚不支持 PickMany!" + +#: admin/systems/ppd/class_printerPPDDialog.inc:571 +msgid "" +"Please select a valid ppd file or use 'Cancel' to go back to printer " +"configuration." +msgstr "请选择一个有效的 ppd 文件或者点击“取消”来返回打印机配置。" + +#: admin/systems/ppd/remove_ppd.tpl:9 +msgid "The ppd file will be removed from the server and can not be restored." +msgstr "服务器中的 ppd 文件将被删除并且不能被恢复。" + +#: admin/systems/ppd/printerPPDDialog.tpl:1 +msgid "Printer driver" +msgstr "打印机驱动" + +#: admin/systems/ppd/printerPPDDialog.tpl:12 +msgid "Select" +msgstr "选择" + +#: admin/systems/ppd/printerPPDDialog.tpl:16 +msgid "New driver" +msgstr "新驱动" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:120 +#, php-format +msgid "Cannot locate vendor '%s' in available PPDs!" +msgstr "" + +#: admin/systems/ppd/class_printerPPDSelectionDialog.inc:129 +msgid "Printer ppd selection." +msgstr "打印机 ppd 选择。" + +#: addons/goto/class_target_list.inc:58 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: addons/goto/class_target_list.inc:59 addons/goto/class_target_list.inc:60 +#, fuzzy +msgid "Available targets" +msgstr "可用的应用程序" + +#: addons/goto/class_target_list.inc:69 +msgid "Object name" +msgstr "对象名称" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Select to see object groups" +msgstr "选择一个对象组" + +#: addons/goto/class_target_list.inc:72 +#, fuzzy +msgid "Show object groups" +msgstr "对象组" + +#: addons/goto/class_target_list.inc:73 +msgid "Select to see servers" +msgstr "选择显示服务器" + +#: addons/goto/class_target_list.inc:73 +msgid "Show servers" +msgstr "显示服务器" + +#: addons/goto/class_target_list.inc:74 +msgid "Select to see workstations" +msgstr "选择查看工作站" + +#: addons/goto/class_target_list.inc:74 +msgid "Show workstations" +msgstr "显示工作站" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Select to see incoming objects" +msgstr "选择在子树中查询" + +#: addons/goto/class_target_list.inc:75 +#, fuzzy +msgid "Show new objects" +msgstr "成员对象" + +#: addons/goto/class_target_list.inc:80 +msgid "Select to search for a specific IP range only" +msgstr "" + +#: addons/goto/class_target_list.inc:80 +msgid "Match IP range" +msgstr "" + +#: addons/goto/class_target_list.inc:83 +msgid "Regular expression for matching group names" +msgstr "用于匹配组名的正则表达式" + +#: addons/goto/class_target_list.inc:84 +msgid "IP range start" +msgstr "" + +#: addons/goto/class_target_list.inc:85 +msgid "IP range end" +msgstr "" + +#: addons/goto/class_target_list.inc:250 addons/goto/class_target_list.inc:254 +#, fuzzy +msgid "IP range" +msgstr "VSync" + +#: addons/goto/goto_import_file.tpl:1 +#, fuzzy +msgid "Import jobs" +msgstr "导入" + +#: addons/goto/goto_import_file.tpl:3 +msgid "" +"You can import a list of jobs into the GOsa job queue. This should be a " +"semicolon seperated list of items in the following format:" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "timestamp" +msgstr "过期" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "MAC-address" +msgstr "住址" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "job type" +msgstr "电话类型" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "object group" +msgstr "对象组" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "import base" +msgstr "导入" + +#: addons/goto/goto_import_file.tpl:5 +msgid "full hostname" +msgstr "" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "IP-address" +msgstr "住址" + +#: addons/goto/goto_import_file.tpl:5 +#, fuzzy +msgid "DHCP group" +msgstr "添加组" + +#: addons/goto/goto_import_file.tpl:9 +msgid "Example" +msgstr "" + +#: addons/goto/goto_import_file.tpl:21 +#, fuzzy +msgid "Select list to import" +msgstr "选择要添加的打印机" + +#: addons/goto/goto_import_file.tpl:37 +#: addons/goto/events/DaemonEvent_update.tpl:51 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:51 +#: addons/goto/events/DaemonEvent_halt.tpl:51 +#: addons/goto/events/DaemonEvent_wakeup.tpl:51 +#: addons/goto/events/DaemonEvent_reboot.tpl:51 +#: addons/goto/events/DaemonEvent_notify.tpl:85 +#: addons/goto/events/DaemonEvent_rescan.tpl:51 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:51 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:51 +#: addons/goto/events/DaemonEvent_faireboot.tpl:51 +#: addons/goto/events/DaemonEvent_localboot.tpl:51 +#: addons/goto/events/DaemonEvent_memcheck.tpl:51 +#: addons/goto/events/DaemonEvent_activate.tpl:51 +#: addons/goto/events/DaemonEvent_lock.tpl:51 +#: addons/goto/events/DaemonEvent_reinstall.tpl:55 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:51 +#, fuzzy +msgid "Timestamp" +msgstr "过期" + +#: addons/goto/goto_import_file.tpl:38 +#: addons/goto/class_goto_import_file.inc:168 +#, fuzzy +msgid "MAC" +msgstr "ACL" + +#: addons/goto/goto_import_file.tpl:39 +#: addons/goto/class_goto_import_file.inc:171 +#, fuzzy +msgid "Event" +msgstr "环境设置" + +#: addons/goto/goto_import_file.tpl:42 +msgid "FQDN" +msgstr "" + +#: addons/goto/goto_import_file.tpl:43 +msgid "IP" +msgstr "" + +#: addons/goto/goto_import_file.tpl:44 +msgid "DHCP" +msgstr "" + +#: addons/goto/class_gotoLogView.inc:113 +msgid "File" +msgstr "文件" + +#: addons/goto/class_gotoLogView.inc:115 +#, fuzzy +msgid "Date" +msgstr "粘贴" + +#: addons/goto/class_gotoLogView.inc:202 +#, fuzzy +msgid "Log view" +msgstr "登录名" + +#: addons/goto/class_gotoLogView.inc:203 +#, fuzzy +msgid "GOto log view" +msgstr "到目录" + +#: addons/goto/class_gotomasses.inc:26 +#, fuzzy +msgid "Deployment status" +msgstr "系统状态" + +#: addons/goto/class_gotomasses.inc:27 addons/goto/main.inc:66 +#, fuzzy +msgid "System deployment status" +msgstr "系统类型" + +#: addons/goto/class_gotomasses.inc:270 +#, php-format +msgid "The following jobs couldn't be deleted, they have to be aborted: %s" +msgstr "" + +#: addons/goto/class_gotomasses.inc:360 +#, fuzzy +msgid "This menu allows you to remove and change the properties of GOsa tasks." +msgstr "这个菜单允许您创建,删除和修改仓库设置。" + +#: addons/goto/class_gotomasses.inc:361 +#, fuzzy +msgid "List of queued jobs" +msgstr "设备列表" + +#: addons/goto/class_gotomasses.inc:380 +#, fuzzy +msgid "Resume" +msgstr "重新安装" + +#: addons/goto/class_gotomasses.inc:381 +#, fuzzy +msgid "Pause" +msgstr "粘贴" + +#: addons/goto/class_gotomasses.inc:382 +#, fuzzy +msgid "Abort" +msgstr "端口" + +#: addons/goto/class_gotomasses.inc:408 +#: addons/goto/events/DaemonEvent_update.tpl:47 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:47 +#: addons/goto/events/DaemonEvent_halt.tpl:47 +#: addons/goto/events/DaemonEvent_wakeup.tpl:47 +#: addons/goto/events/DaemonEvent_reboot.tpl:47 +#: addons/goto/events/DaemonEvent_notify.tpl:81 +#: addons/goto/events/DaemonEvent_rescan.tpl:47 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:47 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:47 +#: addons/goto/events/DaemonEvent_faireboot.tpl:47 +#: addons/goto/events/class_DaemonEvent_notify.inc:77 +#: addons/goto/events/class_DaemonEvent_notify.inc:78 +#: addons/goto/events/class_DaemonEvent_notify.inc:103 +#: addons/goto/events/DaemonEvent_localboot.tpl:47 +#: addons/goto/events/DaemonEvent_memcheck.tpl:47 +#: addons/goto/events/DaemonEvent_activate.tpl:47 +#: addons/goto/events/DaemonEvent_lock.tpl:47 +#: addons/goto/events/DaemonEvent_reinstall.tpl:51 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:47 +#, fuzzy +msgid "Target" +msgstr "芯片组" + +#: addons/goto/class_gotomasses.inc:409 +msgid "Task" +msgstr "任务" + +#: addons/goto/class_gotomasses.inc:411 +#: addons/goto/events/DaemonEvent_update.tpl:9 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:9 +#: addons/goto/events/DaemonEvent_halt.tpl:9 +#: addons/goto/events/DaemonEvent_wakeup.tpl:9 +#: addons/goto/events/DaemonEvent_reboot.tpl:9 +#: addons/goto/events/DaemonEvent_notify.tpl:28 +#: addons/goto/events/DaemonEvent_rescan.tpl:9 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:9 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:9 +#: addons/goto/events/DaemonEvent_faireboot.tpl:9 +#: addons/goto/events/DaemonEvent_localboot.tpl:9 +#: addons/goto/events/DaemonEvent_memcheck.tpl:9 +#: addons/goto/events/DaemonEvent_lock.tpl:9 +#: addons/goto/events/DaemonEvent_reinstall.tpl:9 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:9 +#, fuzzy +msgid "Schedule" +msgstr "PHPscheduleit" + +#: addons/goto/class_gotomasses.inc:413 +#: addons/goto/events/DaemonEvent_update.tpl:39 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:39 +#: addons/goto/events/DaemonEvent_halt.tpl:39 +#: addons/goto/events/DaemonEvent_wakeup.tpl:39 +#: addons/goto/events/DaemonEvent_reboot.tpl:39 +#: addons/goto/events/DaemonEvent_notify.tpl:73 +#: addons/goto/events/DaemonEvent_rescan.tpl:39 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:39 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:39 +#: addons/goto/events/DaemonEvent_faireboot.tpl:39 +#: addons/goto/events/DaemonEvent_localboot.tpl:39 +#: addons/goto/events/DaemonEvent_memcheck.tpl:39 +#: addons/goto/events/DaemonEvent_activate.tpl:39 +#: addons/goto/events/DaemonEvent_lock.tpl:39 +#: addons/goto/events/DaemonEvent_reinstall.tpl:43 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:39 +msgid "Status" +msgstr "状态" + +#: addons/goto/class_gotomasses.inc:441 +#, fuzzy +msgid "Pause job" +msgstr "粘贴" + +#: addons/goto/class_gotomasses.inc:448 +#, fuzzy +msgid "Resume job" +msgstr "重新安装" + +#: addons/goto/class_gotomasses.inc:455 +#, fuzzy +msgid "Execute now" +msgstr "执行" + +#: addons/goto/class_gotomasses.inc:462 +#, fuzzy +msgid "View logs" +msgstr "可用的应用程序" + +#: addons/goto/class_gotomasses.inc:477 +#, fuzzy +msgid "Abort job" +msgstr "中间名" + +#: addons/goto/class_gotomasses.inc:521 +#, fuzzy +msgid "Waiting" +msgstr "警告" + +#: addons/goto/class_gotomasses.inc:527 +#, fuzzy +msgid "Processed" +msgstr "属性" + +#: addons/goto/class_gotomasses.inc:542 +#, fuzzy +msgid "Detection" +msgstr "节" + +#: addons/goto/class_gotomasses.inc:550 +#, fuzzy +msgid "in progress" +msgstr "属性" + +#: addons/goto/class_gotomasses.inc:563 +msgid "immediately" +msgstr "" + +#: addons/goto/class_gotomasses.inc:655 addons/goto/class_gotomasses.inc:735 +#: addons/goto/class_gotomasses.inc:775 +#, fuzzy, php-format +msgid "Cannot update queue entry: %s" +msgstr "未知 FAIstate %s" + +#: addons/goto/class_gotomasses.inc:691 +#, php-format +msgid "Cannot update queue entries." +msgstr "" + +#: addons/goto/class_gotomasses.inc:740 +#, php-format +msgid "Required class '%s' cannot be found: job not aborted!" +msgstr "" + +#: addons/goto/class_gotomasses.inc:816 +#, fuzzy, php-format +msgid "Cannot load queue entries: %s" +msgstr "未知 FAIstate %s" + +#: addons/goto/class_gotomasses.inc:910 addons/goto/class_gotomasses.inc:916 +#, fuzzy +msgid "System deployment" +msgstr "系统管理" + +#: addons/goto/class_gotomasses.inc:911 +msgid "Provide a mechanism to automatically activate systems" +msgstr "" + +#: addons/goto/log_view.tpl:7 +#, fuzzy +msgid "Available logs" +msgstr "可用的应用程序" + +#: addons/goto/log_view.tpl:12 +#, fuzzy +msgid "Selected log" +msgstr "选择" + +#: addons/goto/log_view.tpl:17 +#, fuzzy +msgid "No logs for this host available!" +msgstr "文件可用。" + +#: addons/goto/events/class_DaemonEvent_lock.inc:29 +#: addons/goto/events/class_DaemonEvent_lock.inc:30 +#, fuzzy +msgid "Lock" +msgstr "锁定" + +#: addons/goto/events/DaemonEvent_update.tpl:18 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:18 +#: addons/goto/events/DaemonEvent_halt.tpl:18 +#: addons/goto/events/DaemonEvent_wakeup.tpl:18 +#: addons/goto/events/DaemonEvent_reboot.tpl:18 +#: addons/goto/events/DaemonEvent_rescan.tpl:18 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:18 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:18 +#: addons/goto/events/DaemonEvent_faireboot.tpl:18 +#: addons/goto/events/DaemonEvent_localboot.tpl:18 +#: addons/goto/events/DaemonEvent_memcheck.tpl:18 +#: addons/goto/events/DaemonEvent_activate.tpl:18 +#: addons/goto/events/DaemonEvent_lock.tpl:18 +#: addons/goto/events/DaemonEvent_reinstall.tpl:18 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:18 +#, fuzzy +msgid "System list" +msgstr "系统分析" + +#: addons/goto/events/DaemonEvent_update.tpl:35 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:35 +#: addons/goto/events/DaemonEvent_halt.tpl:35 +#: addons/goto/events/DaemonEvent_wakeup.tpl:35 +#: addons/goto/events/DaemonEvent_reboot.tpl:35 +#: addons/goto/events/DaemonEvent_notify.tpl:69 +#: addons/goto/events/DaemonEvent_rescan.tpl:35 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:35 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:35 +#: addons/goto/events/DaemonEvent_faireboot.tpl:35 +#: addons/goto/events/DaemonEvent_localboot.tpl:35 +#: addons/goto/events/DaemonEvent_memcheck.tpl:35 +#: addons/goto/events/DaemonEvent_activate.tpl:35 +#: addons/goto/events/DaemonEvent_lock.tpl:35 +#: addons/goto/events/DaemonEvent_reinstall.tpl:35 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:35 +#, fuzzy +msgid "ID" +msgstr "GID" + +#: addons/goto/events/DaemonEvent_update.tpl:43 +#: addons/goto/events/DaemonEvent_reload_ldap_config.tpl:43 +#: addons/goto/events/DaemonEvent_halt.tpl:43 +#: addons/goto/events/DaemonEvent_wakeup.tpl:43 +#: addons/goto/events/DaemonEvent_reboot.tpl:43 +#: addons/goto/events/DaemonEvent_notify.tpl:77 +#: addons/goto/events/DaemonEvent_rescan.tpl:43 +#: addons/goto/events/DaemonEvent_goto_reload.tpl:43 +#: addons/goto/events/DaemonEvent_sysinfo.tpl:43 +#: addons/goto/events/DaemonEvent_faireboot.tpl:43 +#: addons/goto/events/DaemonEvent_localboot.tpl:43 +#: addons/goto/events/DaemonEvent_memcheck.tpl:43 +#: addons/goto/events/DaemonEvent_activate.tpl:43 +#: addons/goto/events/DaemonEvent_lock.tpl:43 +#: addons/goto/events/DaemonEvent_reinstall.tpl:47 +#: addons/goto/events/DaemonEvent_installation_activation.tpl:43 +#, fuzzy +msgid "Result" +msgstr "分辨率" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:37 +#, fuzzy +msgid "GOto reload" +msgstr "到目录" + +#: addons/goto/events/class_DaemonEvent_goto_reload.inc:38 +#, fuzzy +msgid "Reload GOto settings" +msgstr "Posix 设置" + +#: addons/goto/events/class_DaemonEvent_activate.inc:29 +#: addons/goto/events/class_DaemonEvent_activate.inc:30 +#, fuzzy +msgid "Unlock" +msgstr "锁定" + +#: addons/goto/events/class_DaemonEvent_faireboot.inc:28 +#: addons/goto/events/class_DaemonEvent_faireboot.inc:29 +#, fuzzy +msgid "Abort installation" +msgstr "工作站" + +#: addons/goto/events/target_list.tpl:5 +msgid "Apply" +msgstr "应用" + +#: addons/goto/events/target_list.tpl:6 +msgid "Cancel" +msgstr "取消" + +#: addons/goto/events/DaemonEvent_notify.tpl:7 +#, fuzzy +msgid "Message settings" +msgstr "用户设置" + +#: addons/goto/events/DaemonEvent_notify.tpl:10 +#, fuzzy +msgid "Sender" +msgstr "服务器" + +#: addons/goto/events/DaemonEvent_notify.tpl:14 +#: addons/goto/events/class_DaemonEvent_notify.inc:94 +#, fuzzy +msgid "Subject" +msgstr "选择" + +#: addons/goto/events/DaemonEvent_notify.tpl:18 +#: addons/goto/events/class_DaemonEvent_notify.inc:97 +msgid "Message" +msgstr "信息" + +#: addons/goto/events/DaemonEvent_notify.tpl:37 +#, fuzzy +msgid "Target users" +msgstr "共享" + +#: addons/goto/events/DaemonEvent_notify.tpl:44 +#, fuzzy +msgid "Target groups" +msgstr "共享" + +#: addons/goto/events/class_DaemonEvent.inc:119 +#, fuzzy +msgid "This job has no template!" +msgstr "这个 'dn' 没有终端功能。" + +#: addons/goto/events/class_DaemonEvent.inc:135 +#, fuzzy, php-format +msgid "Create '%s' job" +msgstr "创建新 FAI 对象" + +#: addons/goto/events/class_DaemonEvent.inc:234 +msgid "Add" +msgstr "添加" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_release_db.inc:31 +#, fuzzy +msgid "Reload fai release db" +msgstr "用户登录失败。LDAP 服务器返回 '%s'。" + +#: addons/goto/events/class_DaemonEvent_wakeup.inc:30 +#, fuzzy +msgid "Wake system" +msgstr "系统" + +#: addons/goto/events/class_DaemonEvent_activate_new.inc:40 +#: addons/goto/events/class_DaemonEvent_activate_new.inc:41 +#, fuzzy +msgid "Activate new" +msgstr "活动" + +#: addons/goto/events/class_EventTargetAddList.inc:51 +#: addons/goto/events/class_EventTargetAddUsersList.inc:45 +#, fuzzy +msgid "Targets" +msgstr "共享" + +#: addons/goto/events/class_EventTargetAddList.inc:55 +msgid "" +"This dialog shows all available targets for the event. Check the targets you " +"want to add and use the 'Apply' button." +msgstr "" + +#: addons/goto/events/class_EventTargetAddList.inc:66 +#: addons/goto/events/class_EventTargetAddUsersList.inc:60 +#, fuzzy +msgid "System / Department" +msgstr "部门" + +#: addons/goto/events/class_EventTargetAddList.inc:73 +#, fuzzy +msgid "Display server" +msgstr "显示设备" + +#: addons/goto/events/class_EventTargetAddList.inc:74 +#, fuzzy +msgid "Display workstation" +msgstr "Windows 工作站" + +#: addons/goto/events/class_EventTargetAddList.inc:75 +#, fuzzy +msgid "Display object groups" +msgstr "显示匹配对象" + +#: addons/goto/events/class_EventTargetAddList.inc:76 +msgid "Filter by IP range" +msgstr "" + +#: addons/goto/events/timestamp_select.tpl:3 +#, fuzzy +msgid "Year" +msgstr "查找" + +#: addons/goto/events/timestamp_select.tpl:4 +#, fuzzy +msgid "Month" +msgstr "月" + +#: addons/goto/events/timestamp_select.tpl:5 +#, fuzzy +msgid "Day" +msgstr "五月" + +#: addons/goto/events/timestamp_select.tpl:7 +msgid "Hour" +msgstr "小时" + +#: addons/goto/events/timestamp_select.tpl:8 +#, fuzzy +msgid "Minute" +msgstr "打印机" + +#: addons/goto/events/timestamp_select.tpl:9 +#, fuzzy +msgid "Second" +msgstr "节" + +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:28 +#: addons/goto/events/class_DaemonEvent_reload_ldap_config.inc:29 +msgid "Reload LDAP config" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_notify.inc:46 +#: addons/goto/events/class_DaemonEvent_notify.inc:47 +#, fuzzy +msgid "Send message" +msgstr "挂起邮件" + +#: addons/goto/events/class_DaemonEvent_notify.inc:100 +#, fuzzy +msgid "From" +msgstr "从" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:49 +msgid "" +"This dialog shows all available targets for your event, check the targets " +"you want to add and use the 'Use' button to accept." +msgstr "" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:65 +#, fuzzy +msgid "Display users" +msgstr "显示设备" + +#: addons/goto/events/class_EventTargetAddUsersList.inc:66 +#, fuzzy +msgid "Display groups" +msgstr "显示匹配对象" + +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:30 +#: addons/goto/events/class_DaemonEvent_recreate_fai_server_db.inc:31 +msgid "Reload fai server db" +msgstr "" + +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:28 +#: addons/goto/events/class_DaemonEvent_installation_activation.inc:29 +#, fuzzy +msgid "Installation activation" +msgstr "Windows 工作站" + +#: addons/goto/events/DaemonEvent_activate.tpl:9 +#, fuzzy +msgid "Time schedule" +msgstr "计划更新" + +#: addons/goto/events/DaemonEvent_reinstall.tpl:39 +#, fuzzy +msgid "Progress" +msgstr "属性" + +#: addons/goto/class_goto_import_file.inc:90 +msgid "" +"Selected entries will be skipped because of errors. Do you want to proceed?" +msgstr "" + +#: addons/goto/class_goto_import_file.inc:131 +#, php-format +msgid "Import complete: %s events successfully send, %s failed" +msgstr "" + +#: personal/environment/class_environment.inc:9 +#: personal/environment/class_environment.inc:433 +#: personal/environment/class_environment.inc:434 +#: personal/environment/class_environment.inc:442 +#: personal/environment/class_environment.inc:443 +#: personal/environment/class_environment.inc:446 +#: personal/environment/class_environment.inc:447 +#: personal/environment/class_environment.inc:450 +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:473 +#: personal/environment/class_environment.inc:474 +#: personal/environment/class_environment.inc:478 +#: personal/environment/class_environment.inc:479 +#: personal/environment/class_environment.inc:482 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1766 +msgid "Environment" +msgstr "环境设置" + +#: personal/environment/class_environment.inc:139 +#, fuzzy, php-format +msgid "Device '%s' is not available anymore. It will be removed!" +msgstr "没有可用的 mysql 扩展,请检查您的 php 设置。" + +#: personal/environment/class_environment.inc:212 +msgid "auto" +msgstr "自动" + +#: personal/environment/class_environment.inc:234 +#, fuzzy, php-format +msgid "Cannot open file '%s'!" +msgstr "无法打开文件 '%s'。" + +#: personal/environment/class_environment.inc:271 +#: personal/environment/class_environment.inc:272 +msgid "disabled" +msgstr "禁用" + +#: personal/environment/class_environment.inc:307 +#, php-format +msgid "" +"Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk " +"profile will be disabled!" +msgstr "" + +#: personal/environment/class_environment.inc:360 +#, fuzzy, php-format +msgid "Profile server '%s' is not available anymore. Switched to server '%s'." +msgstr "选择的 kiosk profile '%s' 不存在,设置当前 profile 为 'none'。" + +#: personal/environment/class_environment.inc:364 +#, fuzzy, php-format +msgid "" +"Profile server '%s' is not available anymore. Kiosk profile will be disabled." +msgstr "选择的 kiosk profile '%s' 不存在,设置当前 profile 为 'none'。" + +#: personal/environment/class_environment.inc:451 +#: personal/environment/class_environment.inc:483 +#: personal/environment/class_environment.inc:1148 +msgid "POSIX" +msgstr "" + +#: personal/environment/class_environment.inc:583 +#: personal/environment/environment.tpl:246 +msgid "Logon scripts" +msgstr "登录脚本" + +#: personal/environment/class_environment.inc:673 +#, fuzzy +msgid "Share" +msgstr "共享" + +#: personal/environment/class_environment.inc:763 +#: personal/environment/environment.tpl:257 +#: personal/environment/environment.tpl:303 +msgid "Used by all users" +msgstr "" + +#: personal/environment/class_environment.inc:766 +#: personal/environment/environment.tpl:259 +#: personal/environment/environment.tpl:305 +msgid "Used by some users" +msgstr "" + +#: personal/environment/class_environment.inc:779 +#: personal/environment/class_environment.inc:780 +#: personal/environment/class_environment.inc:789 +#: personal/environment/class_environment.inc:790 +msgid "Reset password hash" +msgstr "重置口令" + +#: personal/environment/class_environment.inc:794 +msgid "Delete share entry" +msgstr "删除共享条目" + +#: personal/environment/class_environment.inc:988 +msgid "Cannot set default printer flag for groups!" +msgstr "" + +#: personal/environment/class_environment.inc:1141 +#: personal/environment/class_environment.inc:1711 +#: personal/environment/class_environment.inc:1780 +#, fuzzy +msgid "Profile quota" +msgstr "Profil quota" + +#: personal/environment/class_environment.inc:1148 +#, fuzzy +msgid "environment" +msgstr "环境设置" + +#: personal/environment/class_environment.inc:1329 +msgid "group share" +msgstr "组共享" + +#: personal/environment/class_environment.inc:1363 +msgid "Administrator" +msgstr "管理员" + +#: personal/environment/class_environment.inc:1368 +msgid "Default printer" +msgstr "缺省打印机" + +#: personal/environment/class_environment.inc:1767 +#, fuzzy +msgid "Environment settings" +msgstr "用户环境设置" + +#: personal/environment/class_environment.inc:1771 +msgid "My account" +msgstr "我的账号" + +#: personal/environment/class_environment.inc:1775 +msgid "Command to extend the list of possible screen resolutions" +msgstr "" + +#: personal/environment/class_environment.inc:1779 +#, fuzzy +msgid "Profile server" +msgstr "文件服务器" + +#: personal/environment/class_environment.inc:1781 +#: personal/environment/environment.tpl:41 +#: personal/environment/environment.tpl:106 +msgid "Cache profile localy" +msgstr "本地缓存 profile" + +#: personal/environment/class_environment.inc:1785 +#: personal/environment/environment.tpl:174 +msgid "Resolution changeable during session" +msgstr "会话间允许修改分辨率" + +#: personal/environment/class_environment.inc:1787 +#: personal/environment/logonManagement.tpl:56 +msgid "Logon script" +msgstr "登录脚本" + +#: personal/environment/environment.tpl:3 +msgid "The environment extension is currently disabled." +msgstr "环境变量扩展当前被禁用。" + +#: personal/environment/environment.tpl:11 +msgid "Profiles" +msgstr "Profiles" + +#: personal/environment/environment.tpl:14 +#: personal/environment/environment.tpl:207 +#: personal/environment/environment.tpl:288 +msgid "Environment managment settings" +msgstr "环境变量管理设置" + +#: personal/environment/environment.tpl:22 +#: personal/environment/environment.tpl:55 +msgid "Use profile managment" +msgstr "用户 profile 管理" + +#: personal/environment/environment.tpl:26 +#: personal/environment/environment.tpl:65 +msgid "Profil path" +msgstr "Profil path" + +#: personal/environment/environment.tpl:36 +#: personal/environment/environment.tpl:95 +msgid "MB" +msgstr "MB" + +#: personal/environment/environment.tpl:47 +msgid "Profile managment" +msgstr "Profile 管理" + +#: personal/environment/environment.tpl:62 +msgid "Profile server managment" +msgstr "Profile 服务器管理" + +#: personal/environment/environment.tpl:89 +msgid "Profil quota" +msgstr "Profil quota" + +#: personal/environment/environment.tpl:120 +msgid "Kiosk profile settings" +msgstr "Kiosk profile 设置" + +#: personal/environment/environment.tpl:145 +#, fuzzy +msgid "Profile" +msgstr "Profiles" + +#: personal/environment/environment.tpl:164 +msgid "Manage" +msgstr "管理" + +#: personal/environment/environment.tpl:222 +msgid "User used to connect to the share" +msgstr "用户习惯连接这个共享" + +#: personal/environment/environment.tpl:225 +msgid "Select a share" +msgstr "选择一个共享" + +#: personal/environment/environment.tpl:233 +msgid "Mount path" +msgstr "挂载路径" + +#: personal/environment/environment.tpl:248 +#: personal/environment/logonManagement.tpl:1 +#: personal/environment/logonManagement.tpl:5 +msgid "Logon script management" +msgstr "登录脚本管理" + +#: personal/environment/environment.tpl:295 +msgid "Hotplug device settings" +msgstr "热插拔设备设置" + +#: personal/environment/environment.tpl:342 +msgid "" +"Using this option will overwrite the complete printer settings for all " +"currently edited objects!" +msgstr "" + +#: personal/environment/environment.tpl:343 +#: personal/environment/environment.tpl:376 +msgid "Printer settings" +msgstr "打印机设置" + +#: personal/environment/environment.tpl:360 +#: personal/environment/environment.tpl:393 +msgid "Toggle admin" +msgstr "切换管理员" + +#: personal/environment/environment.tpl:363 +#: personal/environment/environment.tpl:396 +msgid "Toggle default" +msgstr "切换缺省" + +#: personal/environment/class_logonManagementDialog.inc:107 +#: personal/environment/logonManagement.tpl:10 +#, fuzzy +msgid "Script name" +msgstr "脚本名称" + +#: personal/environment/main.inc:134 +msgid "User environment settings" +msgstr "用户环境设置" + +#: personal/environment/class_selectPrinterDialog.inc:107 +#, fuzzy +msgid "Please select a printer!" +msgstr "请选择一个有效文件。" + +#: personal/environment/class_hotplugDialog.inc:64 +#, fuzzy +msgid "Please select a hotplug device!" +msgstr "请选择一个有效文件。" + +#: personal/environment/selectPrinterDialog.tpl:1 +#, fuzzy +msgid "Add printer devices" +msgstr "添加打印设备" + +#: personal/environment/selectPrinterDialog.tpl:48 +msgid "Display printers matching" +msgstr "显示匹配的打印机" + +#: personal/environment/selectPrinterDialog.tpl:53 +msgid "Regular expression for matching printer names" +msgstr "匹配打印机名的正则表达式" + +#: personal/environment/logonManagement.tpl:8 +msgid "Logon script settings" +msgstr "登录脚本设置" + +#: personal/environment/logonManagement.tpl:24 +msgid "Priority" +msgstr "优先级" + +#: personal/environment/logonManagement.tpl:34 +msgid "Logon script flags" +msgstr "登录脚本标志" + +#: personal/environment/logonManagement.tpl:38 +#, fuzzy +msgid "Last script" +msgstr "最后脚本" + +#: personal/environment/logonManagement.tpl:44 +msgid "Script can be replaced by user" +msgstr "可以被用户替换的脚本" + +#: personal/environment/hotplugDialog.tpl:1 +msgid "Add hotplug devices" +msgstr "添加热插拔设备" + +#: personal/environment/hotplugDialog.tpl:5 +msgid "Hotplug management" +msgstr "热插拔管理" + +#: personal/environment/hotplugDialog.tpl:10 +msgid "Select hotplug device to add" +msgstr "选择添加一个热插拔设备" + +#: personal/environment/hotplugDialog.tpl:34 +msgid "Choose the department the search will be based on" +msgstr "选择一个部门来做查询" + +#: personal/environment/hotplugDialog.tpl:48 +msgid "Regular expression for matching hotplugs" +msgstr "用于匹配热插拔的正则表达式" + +#, fuzzy +#~ msgid "System mass deployment" +#~ msgstr "系统管理" + +#~ msgid "Spool server" +#~ msgstr "Spool 服务器" + +#, fuzzy +#~ msgid "GOsa configuration %s/%s is not readable. Aborted." +#~ msgstr "GOsa 配置 %s/gosa.conf 不可读取。退出。" + +#~ msgid "Directory '%s' specified as compile directory is not accessible!" +#~ msgstr "目录 '%s' 作为编译目录无法访问!" + +#, fuzzy +#~ msgid "Password method" +#~ msgstr "口令存储" + +#~ msgid "" +#~ "The passwords you've entered as 'New password' and 'Repeated new " +#~ "password' do not match." +#~ msgstr "您输入的“新口令”和“重复新口令”不匹配。" + +#~ msgid "New password" +#~ msgstr "新口令" + +#~ msgid "The password used as new and current are too similar." +#~ msgstr "输入的新口令和当前口令非常相似。" + +#~ msgid "The password used as new is to short." +#~ msgstr "输入的新口令太短了。" + +#~ msgid "Current password" +#~ msgstr "当前口令" + +#~ msgid "Please check the username/password combination." +#~ msgstr "请检查用户名/口令。" + +#~ msgid "You have no permissions to change your password." +#~ msgstr "您无权修改您的口令。" + +#~ msgid "External password changer reported a problem: " +#~ msgstr "外部口令更改程序报告错误:" + +#~ msgid "Session will not be encrypted." +#~ msgstr "会话不会被加密。" + +#~ msgid "Enter SSL session" +#~ msgstr "进入 SSL 会话" + +#, fuzzy +#~ msgid "PHP configuration" +#~ msgstr "PHP 安装检查" + +#~ msgid "" +#~ "FATAL: Register globals is on. GOsa will refuse to login unless this is " +#~ "fixed by an administrator." +#~ msgstr "致命错误:全局注册已打开。GOsa 将拒绝登录直到被管理修正。" + +#, fuzzy +#~ msgid "Password change" +#~ msgstr "不允许修改口令" + +#, fuzzy +#~ msgid "Your password is about to expire, please change your password!" +#~ msgstr "您的口令就要过期,请修改您的口令" + +#, fuzzy +#~ msgid "Plugin" +#~ msgstr "于" + +#, fuzzy +#~ msgid "FATAL: Cannot find any plugin definitions for plugin '%s'!" +#~ msgstr "警告: 没有发现针对插件 '%s' 的任何插件定义!" + +#, fuzzy +#~ msgid "Smarty" +#~ msgstr "总结" + +#, fuzzy +#~ msgid "Session is not encrypted!" +#~ msgstr "会话不会被加密。" + +#, fuzzy +#~ msgid "Smarty error" +#~ msgstr "PHP 错误" + +#, fuzzy +#~ msgid "Your LDAP setup contains old schema definitions:" +#~ msgstr "您 LDAP 的设置包含老的 schema 定义。请重新执行安装。" + +#~ msgid "Please specify a valid username!" +#~ msgstr "请输入一个有效的用户名!" + +#~ msgid "Please specify your password!" +#~ msgstr "请输入您的口令!" + +#, fuzzy +#~ msgid "Authentication error" +#~ msgstr "Nagios 鉴权" + +#, fuzzy +#~ msgid "Account locked. Please contact your system administrator!" +#~ msgstr "账户锁定。请联系管理员。" + +#~ msgid "" +#~ "Your browser has cookies disabled. Please enable cookies and reload this " +#~ "page before logging in!" +#~ msgstr "" +#~ "您的浏览器已经禁用 cookies。请启用 cookies 并在登录前重新加载本页面!" + +#~ msgid "Help browser" +#~ msgstr "帮助浏览器" + +#~ msgid "There is no helpfile specified for this class" +#~ msgstr "此类没有帮助文件" + +#~ msgid "previous" +#~ msgstr "上一个" + +#~ msgid "next" +#~ msgstr "下一个" + +#~ msgid "Helpdir '%s' is not accessible, can't read any helpfiles." +#~ msgstr "帮助目录 '%s' 不能访问,无法读取任何帮助文件。" + +#~ msgid "Session conflict detected" +#~ msgstr "检测道会话冲突" + +#, fuzzy +#~ msgid "" +#~ "Probably there's another active instance of your session. Multiple window " +#~ "operation is technical not possible and heavily depends on the browser " +#~ "you're using. Usage of different browsers at a time (i.e. IE and Mozilla) " +#~ "is possible. Pressing the Logout button will close this session." +#~ msgstr "" +#~ "可能已经存在另外一个您的活动的会话。多窗口操作在技术上不可能并且和严重依赖" +#~ "您使用浏览器。使用不同的浏览器(如 IE 和 Mozilla)是可能的。按“退出”按钮关" +#~ "闭此会话。" + +#~ msgid "" +#~ "Ignoring this message will change/destroy the data you're currently " +#~ "editing, so please close multiple windows and log in again." +#~ msgstr "" +#~ "忽略这条信息将会修改/破坏您当前编辑的数据,所以请关闭多个窗口并重新登录。" + +#~ msgid "Logout" +#~ msgstr "退出" + +#~ msgid "Locking conflict detected" +#~ msgstr "检测到锁定冲突" + +#~ msgid "" +#~ "If this lock detection is false, the other person has obviously closed " +#~ "the webbrowser during the edit operation. You may want to take over the " +#~ "lock by pressing the 'Edit anyway' button." +#~ msgstr "" +#~ "如果锁检查失败,明显的是另外的人在进行编辑操作时关闭了浏览器。您可以通过" +#~ "按“仍然编辑”按钮来接管这个锁文件。" + +#~ msgid "Object" +#~ msgstr "对象" + +#, fuzzy +#~ msgid "There is no snapshot available that could be restored" +#~ msgstr "没有可用的 mysql 扩展,请检查您的 php 设置。" + +#, fuzzy +#~ msgid "Creating object snapshots" +#~ msgstr "创建新对象组" + +#, fuzzy +#~ msgid "Your GOsa session has been closed!" +#~ msgstr "您的 GOsa 会话已经过期!" + +#, fuzzy +#~ msgid "Change your password" +#~ msgstr "修改口令" + +#, fuzzy +#~ msgid "Success" +#~ msgstr "访问" + +#~ msgid "Directory" +#~ msgstr "目录" + +#~ msgid "Username" +#~ msgstr "用户名" + +#, fuzzy +#~ msgid "New password repeated" +#~ msgstr "新口令" + +#, fuzzy +#~ msgid "Password strength" +#~ msgstr "口令存储" + +#, fuzzy +#~ msgid "Change" +#~ msgstr "频道" + +#, fuzzy +#~ msgid "Click here to change your password" +#~ msgstr "点击这里来修改您的口令" + +#, fuzzy +#~ msgid "Your password has expired. Please choose a new one!" +#~ msgstr "您的口令已经过期 !! 选择一个新口令" + +#, fuzzy +#~ msgid "Old password" +#~ msgstr "旧口令" + +#, fuzzy +#~ msgid "Verify password" +#~ msgstr "口令确认" + +#~ msgid "Change password" +#~ msgstr "修改口令" + +#, fuzzy +#~ msgid "Login screen" +#~ msgstr "登录脚本" + +#, fuzzy +#~ msgid "" +#~ "Please use your username and your password to log into the site " +#~ "administration system." +#~ msgstr "请用您的用户名和口令登录" + +#~ msgid "Sign in" +#~ msgstr "登录" + +#~ msgid "Click here to log in" +#~ msgstr "点击这里登录" + +#~ msgid "Information" +#~ msgstr "提示信息" + +#, fuzzy +#~ msgid "New ACL" +#~ msgstr "新" + +#, fuzzy +#~ msgid "ACL type" +#~ msgstr "分类类型" + +#, fuzzy +#~ msgid "Select an acl type" +#~ msgstr "选择一个位置" + +#, fuzzy +#~ msgid "Additional filter options" +#~ msgstr "应用程序设置" + +#~ msgid "Members" +#~ msgstr "成员" + +#, fuzzy +#~ msgid "List of available ACL categories" +#~ msgstr "可用软件包列表" + +#, fuzzy +#~ msgid "ACL for this object" +#~ msgstr "检查 iconv 支持" + +#, fuzzy +#~ msgid "Available roles" +#~ msgstr "可用的应用程序" + +#~ msgid "" +#~ "You are currently editing a database entry. Do you want to dismiss the " +#~ "changes?" +#~ msgstr "您正在编辑一个数据项。您确认要丢弃当前的修改么?" + +#~ msgid "Main" +#~ msgstr "首页" + +#~ msgid "Help" +#~ msgstr "帮助" + +#~ msgid "Sign out" +#~ msgstr "退出" + +#~ msgid "Signed in:" +#~ msgstr "登录:" + +#~ msgid "Ok" +#~ msgstr "好" + +#~ msgid "" +#~ "The size limit option makes LDAP operations faster and saves the LDAP " +#~ "server from getting too much load. The easiest way to handle big " +#~ "databases without long timeouts would be to limit your search to smaller " +#~ "values and use filters to get the entries you are looking for." +#~ msgstr "" +#~ "大小限制选项会让 LDAP 操作更快,以免使 LDAP 服务器过载。最简单让大数据库处" +#~ "理不发成长时间超时的办法是,将查询缩小到更少并且使用过滤器。" + +#~ msgid "Please choose the way to react for this session" +#~ msgstr "请选择响应这个会话的方法" + +#~ msgid "ignore this error and show all entries the LDAP server returns" +#~ msgstr "忽略错误并显示 LDAP 服务器返回的所有条目" + +#~ msgid "" +#~ "ignore this error and show all entries that fit into the defined " +#~ "sizelimit and let me use filters instead" +#~ msgstr "忽略错误并显示在定义限制长度内的所有条目,并让我使用过滤器。" + +#~ msgid "Set" +#~ msgstr "设置" + +#, fuzzy +#~ msgid "Copy & paste wizard" +#~ msgstr "拷贝和粘贴精灵" + +#~ msgid "" +#~ "Some values need to be unique in the complete directory while some " +#~ "combinations make no sense. GOsa shows the relevant attributes. Please " +#~ "maintain the values below to fullfill the policies." +#~ msgstr "" +#~ "有的变量需要在整个目录中保持唯一,而有的组合没有意义。GOsa 显示有关属性。" +#~ "请按照这个原则维护其取值。" + +#~ msgid "Save" +#~ msgstr "保存" + +#, fuzzy +#~ msgid "Cancel all" +#~ msgstr "取消" + +#~ msgid "Operation complete" +#~ msgstr "操作完成" + +#~ msgid "Finish" +#~ msgstr "完成" + +#~ msgid "Your GOsa session has expired!" +#~ msgstr "您的 GOsa 会话已经过期!" + +#~ msgid "" +#~ "The last interaction with the GOsa web interface has been some time ago " +#~ "in the past. For security reasons, the session has been closed. To " +#~ "continue with administrative tasks, please sign in again." +#~ msgstr "" +#~ "上一次操作 GOsa 界面是在很长时间之前。出于安全上的考虑,已经关闭了连接。要" +#~ "继续执行管理任务,请重新登录。" + +#~ msgid "Sign in again" +#~ msgstr "重新登录" + +#~ msgid "GOsa help viewer" +#~ msgstr "GOsa 帮助浏览器" + +#~ msgid "Index" +#~ msgstr "索引" + +#~ msgid "Search" +#~ msgstr "查找" + +#, fuzzy +#~ msgid "Please select the preferred language" +#~ msgstr "请选择一个打印机或者取消。" + +#, fuzzy +#~ msgid "Please select your preferred language here" +#~ msgstr "首选语种" + +#, fuzzy +#~ msgid "Checking PHP version" +#~ msgstr "检查 PHP 版本 (>=4.1.0)" + +#, fuzzy +#~ msgid "mbstring" +#~ msgstr "Samba 设置" + +#, fuzzy +#~ msgid "MySQL" +#~ msgstr "LDAP 错误:" + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to communicate with several supported databases." +#~ msgstr "需要 MySQL 支持来从数据库中读取 GOfax 报告。" + +#, fuzzy +#~ msgid "" +#~ "GOsa requires this module to show printers that are not defined within " +#~ "the LDAP." +#~ msgstr "需要 MySQL 支持来从数据库中读取 GOfax 报告。" + +#, fuzzy +#~ msgid "" +#~ "register_globals is a PHP mechanism to register all global variables to " +#~ "be accessible from scripts without changing the scope. This may be a " +#~ "security risk." +#~ msgstr "" +#~ "register_globals 是 PHP 的一个不必修改范围就可以从脚本中访问所有全局变量的" +#~ "机制。这可能存在安全风险。GOsa 在两种情况下都可以运行。" + +#, fuzzy +#~ msgid "" +#~ "Search for 'register_globals' in your php.ini and switch it to 'Off'." +#~ msgstr "检查 register_globals 是否设置为 'off'" + +#, fuzzy +#~ msgid "" +#~ "Setting this value to one day will prevent loosing session and cookies " +#~ "before they really timeout." +#~ msgstr "" +#~ "PHP 用这个值来进行垃圾回收,删除旧的会话。设置这个值为一天,将会防止在真正" +#~ "超时之前的会话和 cookie 丢失。" + +#, fuzzy +#~ msgid "" +#~ "In Order to use GOsa without any trouble, the session.auto_register " +#~ "option in your php.ini should be set to 'Off'." +#~ msgstr "" +#~ "为了在是使用 GOsa 中不遇到麻烦,您的 php.ini 中 session.auto_register 选项" +#~ "必须设置为 'Off'。" + +#, fuzzy +#~ msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." +#~ msgstr "" +#~ "为了在是使用 GOsa 中不遇到麻烦,您的 php.ini 中 session.auto_register 选项" +#~ "必须设置为 'Off'。" + +#, fuzzy +#~ msgid "" +#~ "GOsa needs at least 32MB of memory. Setting it below this limit may cause " +#~ "errors that are not reproducable! Increase it for larger setups." +#~ msgstr "GOsa 需要至少 16MB 内存,太少会导致无法预料的错误!将其设置为更大。" + +#, fuzzy +#~ msgid "" +#~ "This option influences the PHP output handling. Turn this Option off, to " +#~ "increase performance." +#~ msgstr "这个选项影响输出处理。关闭这个选项,可以提高性能。" + +#, fuzzy +#~ msgid "The Execution time should be at least 30 seconds." +#~ msgstr "执行时间应该至少 30 秒,因为一些动作可能会花很多时间。" + +#, fuzzy +#~ msgid "" +#~ "Increase the server security by setting expose_php to 'off'. PHP won't " +#~ "send any information about the server you are running in this case." +#~ msgstr "" +#~ "将 expose_php 设置为“off”可以增强服务器安全性。PHP 将不会发送任何有关正运" +#~ "行着的服务器的信息。" + +#, fuzzy +#~ msgid "On" +#~ msgstr "打开" + +#~ msgid "" +#~ "Increase your server security by setting magic_quotes_gpc to 'on'. PHP " +#~ "will escape all quotes in strings in this case." +#~ msgstr "" +#~ "将 magic_quotes_gpc 设置为 'on' 会增加服务器安全性。这种情况下 PHP 会将字" +#~ "符串中所有引号编码。" + +#, fuzzy +#~ msgid "" +#~ "Increase your server performance by setting magic_quotes_gpc to 'off'." +#~ msgstr "" +#~ "将 magic_quotes_gpc 设置为 'on' 会增加服务器安全性。这种情况下 PHP 会将字" +#~ "符串中所有引号编码。" + +#, fuzzy +#~ msgid "Configuration writeable" +#~ msgstr "配置文件" + +#, fuzzy +#~ msgid "The configuration file can't be written" +#~ msgstr "查看配置信息" + +#, fuzzy +#~ msgid "Schema specific settings" +#~ msgstr "Samba 设置" + +#, fuzzy +#~ msgid "Check status" +#~ msgstr "具有状态" + +#, fuzzy +#~ msgid "Schema check failed" +#~ msgstr "保存电话失败" + +#, fuzzy +#~ msgid "Setup error" +#~ msgstr "PHP 错误" + +#, fuzzy +#~ msgid "Completed" +#~ msgstr "不完整" + +#, fuzzy +#~ msgid "Next" +#~ msgstr "下一个" + +#, fuzzy +#~ msgid "Samba management" +#~ msgstr "系统管理" + +#, fuzzy +#~ msgid "Mailsystem management" +#~ msgstr "系统管理" + +#, fuzzy +#~ msgid "FAX system administration" +#~ msgstr "用户管理" + +#, fuzzy +#~ msgid "Asterisk administration" +#~ msgstr "用户管理" + +#, fuzzy +#~ msgid "System inventory" +#~ msgstr "删除 inventory" + +#, fuzzy +#~ msgid "System-/Configmanagement" +#~ msgstr "系统管理" + +#~ msgid "Addressbook" +#~ msgstr "地址簿" + +#, fuzzy +#~ msgid "Get notifications or send feedback" +#~ msgstr "主机通知命令" + +#, fuzzy +#~ msgid "Please specify a valid email address." +#~ msgstr "请输入一个有效的 iSerial。" + +#~ msgid "No" +#~ msgstr "否" + +#~ msgid "Yes" +#~ msgstr "是" + +#, fuzzy +#~ msgid "LDAP setup" +#~ msgstr "LDAP 服务器" + +#, fuzzy +#~ msgid "LDAP connection setup" +#~ msgstr "断开" + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' failed!" +#~ msgstr "为服务器 '%s' 插入新宏失败。" + +#, fuzzy +#~ msgid "Bind as user '%s' failed!" +#~ msgstr "为服务器 '%s' 插入新宏失败。" + +#, fuzzy +#~ msgid "Anonymous bind to server '%s' succeeded." +#~ msgstr "为服务器 '%s' 插入新宏失败。" + +#, fuzzy +#~ msgid "Please specify user and password!" +#~ msgstr "请输入您的口令!" + +#, fuzzy +#~ msgid "Bind as user '%s' to server '%s' succeeded!" +#~ msgstr "无法在主服务器 '%s' 上选择数据库 '%s'。" + +#, fuzzy +#~ msgid "Language setup" +#~ msgstr "语言" + +#, fuzzy +#~ msgid "Automatic" +#~ msgstr "自动" + +#, fuzzy +#~ msgid "GOsa setup wizard" +#~ msgstr "GOsa 帮助浏览器" + +#, fuzzy +#~ msgid "Setup" +#~ msgstr "设置" + +#, fuzzy +#~ msgid "Create your configuration file" +#~ msgstr "配置文件" + +#~ msgid "Download configuration" +#~ msgstr "下载配置" + +#, fuzzy +#~ msgid "Status: " +#~ msgstr "状态" + +#, fuzzy +#~ msgid "Theme" +#~ msgstr "模板" + +#, fuzzy +#~ msgid "Apache" +#~ msgstr "缓存" + +#, fuzzy +#~ msgid "People and group storage" +#~ msgstr "People dn attribute" + +#, fuzzy +#~ msgid "People DN attribute" +#~ msgstr "People dn attribute" + +#, fuzzy +#~ msgid "Group storage subtree" +#~ msgstr "忽略子树" + +#, fuzzy +#~ msgid "Automatic UIDs" +#~ msgstr "自动" + +#, fuzzy +#~ msgid "Number base for people/groups" +#~ msgstr "用户/组起始 ID" + +#, fuzzy +#~ msgid "Password settings" +#~ msgstr "用户设置" + +#, fuzzy +#~ msgid "Password encryption algorithm" +#~ msgstr "加密算法" + +#, fuzzy +#~ msgid "Password restrictions" +#~ msgstr "口令过期截止日" + +#, fuzzy +#~ msgid "Password change hook" +#~ msgstr "不允许修改口令" + +#, fuzzy +#~ msgid "Use account expiration" +#~ msgstr "账号过期于" + +#~ msgid "" +#~ "GOsa supports several encryption types for your passwords. Normally this " +#~ "is adjustable via user templates, but you can specify a default method to " +#~ "be used here, too." +#~ msgstr "" +#~ "GOsa 支持好几种口令加密算法。通常可以通过用户模板调整算法,但是在这里您可" +#~ "以定义一个缺省方法。" + +#, fuzzy +#~ msgid "" +#~ "GOsa always acts as admin and manages access rights internally. This is a " +#~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " +#~ "For this to work, we need the admin DN and the corresponding password." +#~ msgstr "" +#~ "GOsa 总是作为 LDAP 管理员,并且管理内部权限。这是一个临时方案直到 " +#~ "OpenLDAP 目录 ACI 被完全实现。为了让其实现,我们需要管理员 DN 和正确的口" +#~ "令。" + +#~ msgid "" +#~ "Some basic LDAP parameters are tunable and affect the locations where " +#~ "GOsa saves people and groups, including the way accounts get created. " +#~ "Check the values below if the fit your needs." +#~ msgstr "" +#~ "有的基本的 LDAP 参数是可调的,并影响位置Gosa 保存用户和组的地方。包括账号" +#~ "创建的方式。点击下面的值如果它们不符合您的需要。" + +#, fuzzy +#~ msgid "" +#~ "GOsa has modular support for several mail methods. These methods provide " +#~ "interfaces to users mailboxes and general handling for quotas. You can " +#~ "choose the dummy plugin to leave all your mail settings untouched." +#~ msgstr "" +#~ "GOsa 通过模组支持几种邮件方法。这些方法提供用户邮箱的界面以及管理用户空" +#~ "间。您可以选择选择 dummy 插件以保持您的邮件设置不被更改。" + +#~ msgid "Samba settings" +#~ msgstr "Samba 设置" + +#, fuzzy +#~ msgid "Samba SID" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "RID base" +#~ msgstr "数据库" + +#, fuzzy +#~ msgid "Workstation container" +#~ msgstr "工作站名称" + +#, fuzzy +#~ msgid "Timezone" +#~ msgstr "用户时区" + +#, fuzzy +#~ msgid "Please choose your preferred timezone here" +#~ msgstr "首选语种" + +#, fuzzy +#~ msgid "Additional GOsa settings" +#~ msgstr "应用程序设置" + +#, fuzzy +#~ msgid "Enable DNS extension" +#~ msgstr "删除打印机扩展" + +#, fuzzy +#~ msgid "Enable DHCP extension" +#~ msgstr "删除打印机扩展" + +#, fuzzy +#~ msgid "Enable mime type management" +#~ msgstr "系统管理" + +#, fuzzy +#~ msgid "Enable FAI release management" +#~ msgstr "Asterisk 管理" + +#, fuzzy +#~ msgid "Enable user netatalk plugin" +#~ msgstr "管理 netatalk 账号" + +#, fuzzy +#~ msgid "Government mode" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Logging options" +#~ msgstr "未知" + +#, fuzzy +#~ msgid "Syslog" +#~ msgstr "系统日志" + +#~ msgid "Mail settings" +#~ msgstr "邮件选项" + +#~ msgid "Mail method" +#~ msgstr "邮件方法" + +#, fuzzy +#~ msgid "Vacation templates" +#~ msgstr "工作站模板" + +#, fuzzy +#~ msgid "GOsa core settings" +#~ msgstr "用户设置" + +#, fuzzy +#~ msgid "Disable primary group filter" +#~ msgstr "显示用户组" + +#, fuzzy +#~ msgid "Display summary in listings" +#~ msgstr "显示匹配的宏" + +#, fuzzy +#~ msgid "Honour administrative units" +#~ msgstr "组管理" + +#, fuzzy +#~ msgid "Smarty compile directory" +#~ msgstr "用户主目录" + +#, fuzzy +#~ msgid "Path for PPD storage" +#~ msgstr "口令存储" + +#, fuzzy +#~ msgid "Path for kiosk profile storage" +#~ msgstr "Kiosk profile 设置" + +#, fuzzy +#~ msgid "Override sudo role ou" +#~ msgstr "! 未知 id" + +#, fuzzy +#~ msgid "Mail queue script" +#~ msgstr "邮件队列" + +#, fuzzy +#~ msgid "Notification script" +#~ msgstr "主机通知周期" + +#, fuzzy +#~ msgid "Enable edit locking" +#~ msgstr "启用邮件扫描" + +#, fuzzy +#~ msgid "Login attribute" +#~ msgstr "电话属性" + +#, fuzzy +#~ msgid "Enforce encrypted connections" +#~ msgstr "封锁加密归档" + +#, fuzzy +#~ msgid "Warn if session is not encrypted" +#~ msgstr "会话不会被加密。" + +#, fuzzy +#~ msgid "Remember dialog filter settings" +#~ msgstr "通用队列设置" + +#, fuzzy +#~ msgid "Session lifetime" +#~ msgstr "检测道会话冲突" + +#, fuzzy +#~ msgid "Debugging" +#~ msgstr "启用 debug" + +#, fuzzy +#~ msgid "Show PHP errors" +#~ msgstr "PHP 错误" + +#, fuzzy +#~ msgid "Maximum LDAP query time" +#~ msgstr "最大文件大小" + +#, fuzzy +#~ msgid "Debug level" +#~ msgstr "日志级别" + +#, fuzzy +#~ msgid "Disabled" +#~ msgstr "禁用" + +#, fuzzy +#~ msgid "Enabled" +#~ msgstr "禁用" + +#, fuzzy +#~ msgid "GOsa settings 1/3" +#~ msgstr "用户设置" + +#, fuzzy +#~ msgid "GOsa generic settings" +#~ msgstr "用户设置" + +#, fuzzy +#~ msgid "The specified value for '%s' must be a numeric value" +#~ msgstr "指定 '%s' 的值必须是数字类型。" + +#, fuzzy +#~ msgid "Uid base must be numeric" +#~ msgstr "超时必须填数字" + +#, fuzzy +#~ msgid "The given password minimum length is not numeric." +#~ msgstr "Sieve 端口应为数字。" + +#, fuzzy +#~ msgid "The given password differ value is not numeric." +#~ msgstr "Sieve 端口应为数字。" + +#, fuzzy +#~ msgid "GOsa settings 2/3" +#~ msgstr "用户设置" + +#, fuzzy +#~ msgid "Customize special parameters" +#~ msgstr "检查参数" + +#, fuzzy +#~ msgid "GOsa settings 3/3" +#~ msgstr "用户设置" + +#, fuzzy +#~ msgid "Session lifetime must be a numeric value!" +#~ msgstr "需要的分值必须是数字。" + +#, fuzzy +#~ msgid "Maximum LDAP query time must be a numeric value!" +#~ msgstr "需要的分值必须是数字。" + +#, fuzzy +#~ msgid "Write configuration file" +#~ msgstr "配置文件" + +#, fuzzy +#~ msgid "Finish - write the configuration file" +#~ msgstr "需要 XML 功能来解析配置文件。" + +#, fuzzy +#~ msgid "" +#~ "Your configuration file is currently world readable. Please update the " +#~ "file permissions!" +#~ msgstr "GOsa 配置 %s/gosa.conf 不可读取。退出。" + +#, fuzzy +#~ msgid "The configuration is currently not readable or it does not exists." +#~ msgstr "GOsa 配置 %s/gosa.conf 不可读取。退出。" + +#, fuzzy +#~ msgid "" +#~ "After downloading and placing the file under %s, please make sure that " +#~ "the user the webserver is running with is able to read %s, while other " +#~ "users shouldn't. You may want to execute these commands to achieve this " +#~ "requirement:" +#~ msgstr "" +#~ "将文件保存在 GOsa 配置文件目录中,确认 Web 服务器运行的账号能够读取 gosa." +#~ "conf,其他用户则无权访问。您可以执行如下命令来实现:" + +#, fuzzy +#~ msgid "To continue..." +#~ msgstr "安装继续..." + +#~ msgid "Organization" +#~ msgstr "组织/公司" + +#~ msgid "Mail address" +#~ msgstr "邮件地址" + +#, fuzzy +#~ msgid "Features" +#~ msgstr "功能" + +#, fuzzy +#~ msgid "Check again" +#~ msgstr "检查" + +#, fuzzy +#~ msgid "Move selected workstations" +#~ msgstr "选择查看工作站" + +#, fuzzy +#~ msgid "Show changes" +#~ msgstr "显示软件包" + +#, fuzzy +#~ msgid "Move selected users into this people tree" +#~ msgstr "创建使用该模板的用户" + +#, fuzzy +#~ msgid "Create a new GOsa administrator account" +#~ msgstr "创建 netatalk 账号" + +#~ msgid "User ID" +#~ msgstr "用户 ID" + +#, fuzzy +#~ msgid "Password (again)" +#~ msgstr "口令存储" + +#, fuzzy +#~ msgid "Current" +#~ msgstr "当前版本" + +#, fuzzy +#~ msgid "After migration" +#~ msgstr "用户管理" + +#, fuzzy +#~ msgid "Refresh" +#~ msgstr "参考" + +#, fuzzy +#~ msgid "Welcome" +#~ msgstr "欢迎 %s!" + +#, fuzzy +#~ msgid "The welcome message" +#~ msgstr "解除挂起的邮件" + +#, fuzzy +#~ msgid "Welcome to GOsa setup wizard" +#~ msgstr "欢迎进入 Gosa 安装程序!" + +#, fuzzy +#~ msgid "PHP setup configuration" +#~ msgstr "PHP 安装检查" + +#, fuzzy +#~ msgid "show information" +#~ msgstr "个人信息" + +#, fuzzy +#~ msgid "LDAP connection" +#~ msgstr "断开" + +#~ msgid "Location name" +#~ msgstr "位置名称" + +#, fuzzy +#~ msgid "Connection URL" +#~ msgstr "连接 URL" + +#, fuzzy +#~ msgid "TLS connection" +#~ msgstr "连接" + +#, fuzzy +#~ msgid "Authentication" +#~ msgstr "Nagios 鉴权" + +#~ msgid "Admin DN" +#~ msgstr "管理员 DN" + +#, fuzzy +#~ msgid "Select user" +#~ msgstr "删除用户" + +#~ msgid "Admin password" +#~ msgstr "管理员口令" + +#, fuzzy +#~ msgid "Schema based settings" +#~ msgstr "Samba 设置" + +#, fuzzy +#~ msgid "Current status" +#~ msgstr "当前版本" + +#, fuzzy +#~ msgid "LDAP inspection" +#~ msgstr "PHP 安装检查" + +#, fuzzy +#~ msgid "Checking for root object" +#~ msgstr "检查 iconv 支持" + +#, fuzzy +#~ msgid "Checking for invisible departments" +#~ msgstr "检查 iconv 支持" + +#, fuzzy +#~ msgid "Checking for invisible users" +#~ msgstr "检查 iconv 支持" + +#, fuzzy +#~ msgid "Checking for super administrator" +#~ msgstr "检查一些附加程序" + +#, fuzzy +#~ msgid "Checking for users outside the people tree" +#~ msgstr "检查 cups 模块" + +#, fuzzy +#~ msgid "Checking for groups outside the groups tree" +#~ msgstr "检查 cups 模块" + +#, fuzzy +#~ msgid "Checking for duplicated UID numbers" +#~ msgstr "检查函数 %s" + +#, fuzzy +#~ msgid "Checking for duplicate GID numbers" +#~ msgstr "检查函数 %s" + +#, fuzzy +#~ msgid "Checking for old style USB devices" +#~ msgstr "检查 iconv 支持" + +#, fuzzy +#~ msgid "Checking for old services that have to be migrated" +#~ msgstr "检查 cups 模块" + +#, fuzzy +#~ msgid "Checking for old style application menus" +#~ msgstr "检查函数 %s" + +#, fuzzy +#~ msgid "LDAP query failed" +#~ msgstr "Mysql 查询失败。" + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'uidNumber'." +#~ msgstr "发现记录类型 '%s' 有重复。" + +#, fuzzy +#~ msgid "Found %s duplicate values for attribute 'gidNumber'." +#~ msgstr "发现记录类型 '%s' 有重复。" + +#~ msgid "Failed" +#~ msgstr "失败" + +#, fuzzy +#~ msgid "Move" +#~ msgstr "模式" + +#, fuzzy +#~ msgid "Migration error" +#~ msgstr "创建" + +#, fuzzy +#~ msgid "Cannot migrate department '%s':" +#~ msgstr "转到根部门" + +#, fuzzy +#~ msgid "Input error" +#~ msgstr "PHP 错误" + +#, fuzzy +#~ msgid "Password error" +#~ msgstr "口令过期截止日" + +#, fuzzy +#~ msgid "Provided passwords do not match!" +#~ msgstr "输入的新口令和重复口令不匹配!" + +#, fuzzy +#~ msgid "Specify a valid user ID!" +#~ msgstr "请输入一个有效的用户名!" + +#, fuzzy +#~ msgid "Adding an administrative user failed: object '%s' already exists!" +#~ msgstr "为对象 '%s' 设置动作状态(FAIstate) 失败,值为 '%s'。" + +#, fuzzy +#~ msgid "Cannot move users to the requested department!" +#~ msgstr "选择放置部门的子树" + +#, fuzzy +#~ msgid "to" +#~ msgstr "停止" + +#, fuzzy +#~ msgid "Copy '%s' to '%s' failed:" +#~ msgstr "移动 '%s' 到 '%s'" + +#, fuzzy +#~ msgid "Updating '%s' failed: %s" +#~ msgstr "Logging DB 用户" + +#, fuzzy +#~ msgid "License" +#~ msgstr "行" + +#~ msgid "Unknown" +#~ msgstr "未知" + +#, fuzzy +#~ msgid "Select to list objects of type '%s'." +#~ msgstr "选择要添加的对象" + +#, fuzzy +#~ msgid "Select to list objects containig '%s'." +#~ msgstr "选择查看包含用户的组" + +#, fuzzy +#~ msgid "Select to list objects that have '%s' enabled" +#~ msgstr "选择要添加的对象" + +#, fuzzy +#~ msgid "You have no permission to delete this object!" +#~ msgstr "您无权删除这个部门。" + +#, fuzzy +#~ msgid "You have no permission to delete the object:" +#~ msgstr "您无权删除这个部门。" + +#, fuzzy +#~ msgid "You have no permission to delete these objects:" +#~ msgstr "您无权删除这个部门。" + +#, fuzzy +#~ msgid "You have no permission to create this object!" +#~ msgstr "您无权删除这个部门。" + +#, fuzzy +#~ msgid "You have no permission to create the object:" +#~ msgstr "您无权删除这个部门。" + +#, fuzzy +#~ msgid "You have no permission to create these objects:" +#~ msgstr "您无权删除这个部门。" + +#, fuzzy +#~ msgid "You have no permission to modify this object!" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "You have no permission to modify the object:" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "You have no permission to modify these objects:" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "You have no permission to view this object!" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "You have no permission to view the object:" +#~ msgstr "您无权在此 'Base' 下创建一个电话" + +#, fuzzy +#~ msgid "You have no permission to view these objects:" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "You have no permission to move this object!" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "You have no permission to move the object:" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "You have no permission to move these objects:" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "Connection information" +#~ msgstr "个人信息" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "无法连接到数据库!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "无法选择数据库!" + +#, fuzzy +#~ msgid "Cannot query %s database!" +#~ msgstr "无法选择数据库!" + +#, fuzzy +#~ msgid "The field '%s' contains a reserved keyword!" +#~ msgstr "“传真”字段包含一个无效电话号码" + +#, fuzzy +#~ msgid "Command specified as %s hook for plugin '%s' does not exist!" +#~ msgstr "命令 '%s',作为插件 '%s' 的 CHECK hook 好像并不存在。" + +#, fuzzy +#~ msgid "'%s' command is invalid!" +#~ msgstr "指定的 branch 名称无效。" + +#, fuzzy +#~ msgid "'%s' command (%s) is invalid!" +#~ msgstr "指定的 branch 名称无效。" + +#, fuzzy +#~ msgid "Cannot execute '%s' command!" +#~ msgstr "无法选择数据库!" + +#, fuzzy +#~ msgid "Cannot execute '%s' command (%s)!" +#~ msgstr "无法选择数据库!" + +#, fuzzy +#~ msgid "Value for '%s' is too large!" +#~ msgstr "'UID' 赋值太小。" + +#, fuzzy +#~ msgid "Value for '%s' is too small!" +#~ msgstr "'UID' 赋值太小。" + +#, fuzzy +#~ msgid "There is already an entry with this '%s' attribute in the system!" +#~ msgstr "数据库中已经有同样登录名的用户。" + +#, fuzzy +#~ msgid "The required field '%s' is empty!" +#~ msgstr "需要的“姓名”字段没有设置" + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters" +#~ msgstr "“姓名”字段包含无效字符。" + +#, fuzzy +#~ msgid "'%s' are not allowed!" +#~ msgstr "不允许修改口令" + +#, fuzzy +#~ msgid "The Field '%s' contains invalid characters!" +#~ msgstr "“姓名”字段包含无效字符。" + +#, fuzzy +#~ msgid "Missing %s PHP extension!" +#~ msgstr "删除打印机扩展" + +#, fuzzy +#~ msgid "Add %s" +#~ msgstr "添加" + +#, fuzzy +#~ msgid "Delete %s" +#~ msgstr "删除" + +#, fuzzy +#~ msgid "Set %s" +#~ msgstr "设置" + +#, fuzzy +#~ msgid "Edit..." +#~ msgstr "编辑" + +#, fuzzy +#~ msgid "Edit %s..." +#~ msgstr "编辑用户" + +#, fuzzy +#~ msgid "This account has no valid %s extensions!" +#~ msgstr "该账户没有有效的 Gosa 扩展。" + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "这个账户已经启用 posix 功能。要禁用请点击下面按钮。" + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings enabled. To disable them, you'll need to " +#~ "remove the %s settings first!" +#~ msgstr "" +#~ "这个账户已经启用 unix 功能。要禁用,您需要先删除 samba / 环境变量账户。" + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "这个账户已经启用 posix 功能。要启用请点击下面按钮。" + +#, fuzzy +#~ msgid "" +#~ "This account has %s settings disabled. To enable them, you'll need to add " +#~ "the %s settings first!" +#~ msgstr "" +#~ "这个账户已经启用 unix 功能。要禁用,您需要先删除 samba / 环境变量账户。" + +#, fuzzy +#~ msgid "" +#~ "This account has %s features settings. To disable them, you'll need to " +#~ "add the %s settings first!" +#~ msgstr "" +#~ "这个账户已经启用 unix 功能。要禁用,您需要先删除 samba / 环境变量账户。" + +#, fuzzy +#~ msgid "Add %s settings" +#~ msgstr "应用程序设置" + +#, fuzzy +#~ msgid "Remove %s settings" +#~ msgstr "Posix 设置" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "点击下面的“编辑”按钮修改该对话框内的信息" + +#~ msgid "January" +#~ msgstr "一月" + +#~ msgid "February" +#~ msgstr "二月" + +#~ msgid "March" +#~ msgstr "三月" + +#~ msgid "April" +#~ msgstr "四月" + +#~ msgid "May" +#~ msgstr "五月" + +#~ msgid "June" +#~ msgstr "六月" + +#~ msgid "July" +#~ msgstr "七月" + +#~ msgid "August" +#~ msgstr "八月" + +#~ msgid "September" +#~ msgstr "九月" + +#~ msgid "October" +#~ msgstr "十月" + +#~ msgid "November" +#~ msgstr "十一月" + +#~ msgid "December" +#~ msgstr "十二月" + +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "姓" + +#, fuzzy +#~ msgid "Monday" +#~ msgstr "月" + +#, fuzzy +#~ msgid "Wednesday" +#~ msgstr "星期三" + +#, fuzzy +#~ msgid "read operation" +#~ msgstr "邮件选项" + +#, fuzzy +#~ msgid "modify operation" +#~ msgstr "个人信息" + +#, fuzzy +#~ msgid "delete operation" +#~ msgstr "选择查看工作站" + +#, fuzzy +#~ msgid "search operation" +#~ msgstr "账号过期于" + +#, fuzzy +#~ msgid "authentication" +#~ msgstr "Nagios 鉴权" + +#, fuzzy +#~ msgid "LDAP %s failed!" +#~ msgstr "Mysql 查询失败。" + +#, fuzzy +#~ msgid "LDAP operation failed!" +#~ msgstr "Mysql 查询失败。" + +#, fuzzy +#~ msgid "Upload failed: %s" +#~ msgstr "Logging DB 用户" + +#, fuzzy +#~ msgid "This '%s' is still in use." +#~ msgstr "这个共享不能被删除,因为仍然被 %d 个用户使用:" + +#, fuzzy +#~ msgid "This '%s' is still in use by these objects: %s" +#~ msgstr "这个共享不能被删除,因为仍然被 %d 个用户使用:" + +#, fuzzy +#~ msgid "Cannot open file '%s' for reading!" +#~ msgstr "无法打开文件 '%s'。" + +#, fuzzy +#~ msgid "Cannot open file '%s' for writing!" +#~ msgstr "无法打开文件 '%s'。" + +#, fuzzy +#~ msgid "Cannot delete file '%s'!" +#~ msgstr "无法打开文件 '%s'。" + +#, fuzzy +#~ msgid "Cannot create folder '%s'!" +#~ msgstr "转到根部门" + +#, fuzzy +#~ msgid "Cannot delete folder '%s'!" +#~ msgstr "无法打开文件 '%s'。" + +#, fuzzy +#~ msgid "Checking for %s support" +#~ msgstr "检查 iconv 支持" + +#~ msgid "Delete process has been canceled by plugin '%s': %s" +#~ msgstr "删除进程被插件 '%s' 取消: %s" + +#~ msgid "ACL" +#~ msgstr "ACL" + +#~ msgid "References" +#~ msgstr "参考" + +#, fuzzy +#~ msgid "Cannot not parse XML!" +#~ msgstr "太多用户,无法分配一个可用的 ID!" + +#, fuzzy +#~ msgid "Cannot send abort event for entry %s!" +#~ msgstr "无法创建文件 '%s'。" + +#~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." +#~ msgstr "致命错误:连接 LDAP 错误。服务器返回 '%s'。" + +#, fuzzy +#~ msgid "Username / UID is not unique inside the LDAP tree!" +#~ msgstr "用户名 / UID 不唯一。请检查您的 LDAP 数据库。" + +#, fuzzy +#~ msgid "" +#~ "Username / UID is not unique inside the LDAP tree. Please contact your " +#~ "Administrator." +#~ msgstr "用户名 / UID 不唯一。请检查您的 LDAP 数据库。" + +#, fuzzy +#~ msgid "" +#~ "Cannot create locking information in LDAP tree. Please contact your " +#~ "administrator!" +#~ msgstr "无法获得 LDAP 数据库的锁信息。检查 gosa.conf 中的 'config' 条目!" + +#, fuzzy +#~ msgid "LDAP server returned: %s" +#~ msgstr "LDAP 服务器" + +#, fuzzy +#~ msgid "" +#~ "Found multiple locks for object to be locked. This should not happen - " +#~ "cleaning up multiple references." +#~ msgstr "发现要锁定的对象由多个锁。这虽然不可能──清除多个引用。" + +#~ msgid "The size limit of %d entries is exceed!" +#~ msgstr "超过了 %d 个条目的大小限制!" + +#~ msgid "" +#~ "Set the new size limit to %s and show me this message if the limit still " +#~ "exceeds" +#~ msgstr "设置新的大小限制为 %s 并且如果限制依然超出还显示这条信息。" + +#~ msgid "Configure" +#~ msgstr "配置" + +#~ msgid "incomplete" +#~ msgstr "不完整" + +#~ msgid "Continue anyway" +#~ msgstr "仍然继续" + +#~ msgid "Edit anyway" +#~ msgstr "仍然编辑" + +#, fuzzy +#~ msgid "You're going to edit the LDAP entry/entries %s" +#~ msgstr "您将要拷贝条目 '%s'。" + +#~ msgid "Entries per page" +#~ msgstr "每页条目数" + +#~ msgid "Apply filter" +#~ msgstr "应用过滤器" + +#~ msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" +#~ msgstr "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +#~ msgid "GOsa development snapshot (Rev %s)" +#~ msgstr "GOsa 开发版(版本 %s)" + +#, fuzzy +#~ msgid "Cannot write to revision file!" +#~ msgstr "无法创建文件 '%s'。" + +#, fuzzy +#~ msgid "'base_hook' is not available. Using default base!" +#~ msgstr "警告: nextIdHook不可用。使用缺省 base。" + +#, fuzzy +#~ msgid "LDAP warning" +#~ msgstr "LDAP 管理" + +#, fuzzy +#~ msgid "Cannot get schema information from server. No schema check possible!" +#~ msgstr "不能从服务器得到 schema 信息。无法对 schema 检查!" + +#, fuzzy +#~ msgid "Class(es) available" +#~ msgstr "文件可用。" + +#~ msgid "German" +#~ msgstr "德语" + +#~ msgid "French" +#~ msgstr "法语" + +#~ msgid "Italian" +#~ msgstr "意大利语" + +#~ msgid "Spanish" +#~ msgstr "西班牙语" + +#~ msgid "English" +#~ msgstr "英语" + +#~ msgid "Dutch" +#~ msgstr "荷兰语" + +#~ msgid "Polish" +#~ msgstr "波兰语" + +#, fuzzy +#~ msgid "Chinese" +#~ msgstr "芯片组" + +#, fuzzy +#~ msgid "Vietnamese" +#~ msgstr "名" + +#~ msgid "Russian" +#~ msgstr "俄语" + +#~ msgid "" +#~ "Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to " +#~ "exist." +#~ msgstr "命令 '%s',作为插件 '%s' 的 POSTMODIFY 好像并不存在。" + +#, fuzzy +#~ msgid "You're about to delete the snapshot '%s'." +#~ msgstr "您将要删除宏 '%s'。" + +#, fuzzy +#~ msgid "Remove snapshot" +#~ msgstr "删除记录" + +#~ msgid "XML error in gosa.conf: %s at line %d" +#~ msgstr "XML 出错于 gosa.conf: %s ,行 %d" + +#, fuzzy +#~ msgid "Cannot bind to LDAP. Please contact the system administrator." +#~ msgstr "无法绑定 LDAP。请联系系统管理员。" + +#, fuzzy +#~ msgid "SID and/or RIDBASE missing in the configuration!" +#~ msgstr "您的配置文件缺少 SID 和/或 RIDBASE!" + +#, fuzzy +#~ msgid "Configuration" +#~ msgstr "配置文件" + +#, fuzzy +#~ msgid "Copy and paste failed!" +#~ msgstr "拷贝和粘贴精灵" + +#, fuzzy +#~ msgid "Cannot set permission for '%s'" +#~ msgstr "无法创建文件 '%s'。" + +#, fuzzy +#~ msgid "No write permission in '%s'" +#~ msgstr "无法创建文件 '%s'。" + +#~ msgid "Paste" +#~ msgstr "粘贴" + +#, fuzzy +#~ msgid "Cannot paste" +#~ msgstr "无法粘贴" + +#, fuzzy +#~ msgid "You are not allowed to create a snapshot for %s." +#~ msgstr "您无权删除这个用户!" + +#, fuzzy +#~ msgid "You are not allowed to restore a snapshot for %s." +#~ msgstr "您无权删除这个用户!" + +#, fuzzy +#~ msgid "Restore" +#~ msgstr "仓库" + +#, fuzzy +#~ msgid "Create snapshot" +#~ msgstr "创建 nagios 账户" + +#, fuzzy +#~ msgid "Create a new snapshot from this object" +#~ msgstr "创建新 FAI 对象" + +#~ msgid "cut" +#~ msgstr "剪切" + +#~ msgid "Cut this entry" +#~ msgstr "剪切条目" + +#~ msgid "copy" +#~ msgstr "复制" + +#~ msgid "Copy this entry" +#~ msgstr "拷贝条目" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "复制" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "剪切" + +#, fuzzy +#~ msgid "Logging failed: %s" +#~ msgstr "Logging DB 用户" + +#, fuzzy +#~ msgid "Specified objectType is empty or invalid!" +#~ msgstr "指定的 branch 名称无效。" + +#, fuzzy +#~ msgid "MySQL error" +#~ msgstr "LDAP 错误:" + +#, fuzzy +#~ msgid "Cannot add location to the database!" +#~ msgstr "无法连接到数据库!" + +#~ msgid "Go to root department" +#~ msgstr "转到根部门" + +#~ msgid "Root" +#~ msgstr "æ ¹" + +#~ msgid "Go up one department" +#~ msgstr "向上跳转一个部门" + +#~ msgid "Up" +#~ msgstr "上" + +#~ msgid "Go to users department" +#~ msgstr "转到用户部门" + +#~ msgid "Reload list" +#~ msgstr "重新加载列表" + +#, fuzzy +#~ msgid "Choose a base" +#~ msgstr "选择一个位置" + +#, fuzzy +#~ msgid "Use" +#~ msgstr "用户" + +#, fuzzy +#~ msgid "Filter entries with this syntax" +#~ msgstr "用这个语法过滤条目" + +#, fuzzy +#~ msgid "Certificate is empty!" +#~ msgstr "证书" + +#, fuzzy +#~ msgid "No valid certificate loaded!" +#~ msgstr "无有效证书加载" + +#~ msgid "XML error in guide.xml: %s at line %d" +#~ msgstr "XML 出错于 guide.xml: %s ,行 %d" + +#~ msgid "No help available for this plugin." +#~ msgstr "此插件没有可用帮助信息。" + +#~ msgid "%s results for your search with the keyword %s" +#~ msgstr "%s 结果当您查找关键字 %s" + +#~ msgid "%s%% hit rate in file %s" +#~ msgstr "%s%% 点击率于文件 %s" + +#, fuzzy +#~ msgid "Manage access control lists" +#~ msgstr "访问选项" + +#, fuzzy +#~ msgid "All categories" +#~ msgstr "添加分类" + +#, fuzzy +#~ msgid "One level" +#~ msgstr "日志级别" + +#, fuzzy +#~ msgid "Current object" +#~ msgstr "创建新 FAI 对象" + +#, fuzzy +#~ msgid "Complete subtree" +#~ msgstr "忽略子树" + +#~ msgid "Groups" +#~ msgstr "用户组" + +#~ msgid "Down" +#~ msgstr "关闭" + +#, fuzzy +#~ msgid "category ACL" +#~ msgstr "分类" + +#, fuzzy +#~ msgid "Show/hide advanced settings" +#~ msgstr "高级电话设置" + +#, fuzzy +#~ msgid "Remove objects" +#~ msgstr "成员对象" + +#~ msgid "read" +#~ msgstr "读" + +#~ msgid "write" +#~ msgstr "写" + +#, fuzzy +#~ msgid "Complete object" +#~ msgstr "成员对象" + +#, fuzzy +#~ msgid "Unkown ACL type '%s'!" +#~ msgstr "未知 FAIstate %s" + +#, fuzzy +#~ msgid "Unknown entry '%s'!" +#~ msgstr "未知 FAIstate %s" + +#, fuzzy +#~ msgid "Role: %s" +#~ msgstr "角色" + +#, fuzzy +#~ msgid "unknown role" +#~ msgstr "! 未知 id" + +#, fuzzy +#~ msgid "Access control list" +#~ msgstr "访问选项" + +#, fuzzy +#~ msgid "ACL roles" +#~ msgstr "MAC 地址" + +#, fuzzy +#~ msgid "Role name" +#~ msgstr "重命名" + +#, fuzzy +#~ msgid "Role description" +#~ msgstr "单元描述" + +#, fuzzy +#~ msgid "You are currently editing mutliple entries." +#~ msgstr "您无权删除这个部门。" + +#, fuzzy +#~ msgid "Password reset" +#~ msgstr "口令过期截止日" + +#, fuzzy +#~ msgid "The user password was resetted, please set a new password value!" +#~ msgstr "您的口令已经过期 !! 选择一个新口令" + +#~ msgid "while operating on '%s' using LDAP server '%s'" +#~ msgstr "当操作 '%s' 使用 LDAP 服务器 '%s' 时" + +#~ msgid "while operating on LDAP server %s" +#~ msgstr "当操作 LDAP 服务器 '%s' 时" + +#~ msgid "" +#~ "This is not a valid DN: '%s'. A block for import should begin with " +#~ "'dn: ...' in line %s" +#~ msgstr "这不是一条有效的 DN: '%s'。导入数据应该以 'dn:...' 开始于行 %s" + +#~ msgid "" +#~ "Error while importing dn: '%s', please check your LDIF from line %s on!" +#~ msgstr "导入 dn: '%s' 时错误,请从行 %s 开始检查您的 LDIF!" + +#~ msgid "" +#~ "Generating this page caused the PHP interpreter to raise some errors!" +#~ msgstr "生成这个页面导致 PHP 解析器发生一些错误!" + +#, fuzzy +#~ msgid "Send bugreport" +#~ msgstr "发送者" + +#~ msgid "Toggle information" +#~ msgstr "切换信息" + +#~ msgid "PHP error" +#~ msgstr "PHP 错误" + +#~ msgid "class" +#~ msgstr "ç±»" + +#~ msgid "function" +#~ msgstr "功能" + +#~ msgid "static" +#~ msgstr "静态" + +#~ msgid "method" +#~ msgstr "方法" + +#~ msgid "Trace" +#~ msgstr "跟踪" + +#~ msgid "Line" +#~ msgstr "行" + +#~ msgid "Arguments" +#~ msgstr "参数" + +#, fuzzy +#~ msgid "Please fix the above error and reload the page." +#~ msgstr "请看一下 GOsa 日志文件。" + +#, fuzzy +#~ msgid "ACL management" +#~ msgstr "管理" + +#, fuzzy +#~ msgid "ACL Templates" +#~ msgstr "模板" + +#, fuzzy +#~ msgid "" +#~ "This includes all system and setup informations. Please double check if " +#~ "your really want to do this since there is no way for GOsa to get your " +#~ "data back." +#~ msgstr "" +#~ "这包含所有系统和设置信息。请再次检查您是否要这么做,因为 GOsa 没有办法将您" +#~ "的数据找回。" + +#~ msgid "" +#~ "Best thing to do before performing this action would be to save the " +#~ "current contents of your LDAP tree in a file. So - if you've done so - " +#~ "press 'Delete' to continue or 'Cancel' to abort." +#~ msgstr "" +#~ "最好在执行这个操作之前,保存当前 LDAP 树中的内容到一个文件。所以,如果您已" +#~ "经这么做了,按“删除”继续或者按“取消”退出。" + +#, fuzzy +#~ msgid "List of acls" +#~ msgstr "宏列表" + +#~ msgid "Summary" +#~ msgstr "总结" + +#, fuzzy +#~ msgid "Display acls matching" +#~ msgstr "显示匹配的宏" + +#~ msgid "Role" +#~ msgstr "角色" + +#, fuzzy +#~ msgid "Edit acl role" +#~ msgstr "编辑宏" + +#, fuzzy +#~ msgid "Edit acl" +#~ msgstr "编辑宏" + +#, fuzzy +#~ msgid "Delete acl" +#~ msgstr "删除宏" + +#, fuzzy +#~ msgid "ACL role" +#~ msgstr "MAC 地址" + +#, fuzzy +#~ msgid "Access control roles" +#~ msgstr "访问选项" + +#, fuzzy +#~ msgid "Edit AC roles" +#~ msgstr "MAC 地址" + +#, fuzzy +#~ msgid "Reset ACL" +#~ msgstr "删除" + +#, fuzzy +#~ msgid "ACL for these objects: %s" +#~ msgstr "创建新 FAI 对象" + +#, fuzzy +#~ msgid "Edit category ACL" +#~ msgstr "编辑分类" + +#, fuzzy +#~ msgid "Reset category ACL" +#~ msgstr "分类" + +#, fuzzy +#~ msgid "Object in use" +#~ msgstr "对象名称" + +#, fuzzy +#~ msgid "This role cannot be removed while it is in use by these objects:" +#~ msgstr "这个共享不能被删除,因为仍然被 %d 个用户使用:" + +#~ msgid "" +#~ "To change the user password use the fields below. The changes take effect " +#~ "immediately. Please memorize the new password, because the user wouldn't " +#~ "be able to login without it." +#~ msgstr "用下面的字段修改用口令。修改即时生效。请记住新密码,否则无法登录。" + +#~ msgid "" +#~ "Changing the password affects your authentification on mail, proxy, samba " +#~ "and unix services." +#~ msgstr "修改口令将影响邮件,代理,samba,unix等的登录。" + +#~ msgid "Repeat new password" +#~ msgstr "重复新口令" + +#, fuzzy +#~ msgid "Strength" +#~ msgstr "街道" + +#~ msgid "Set password" +#~ msgstr "设置口令" + +#~ msgid "User administration" +#~ msgstr "用户管理" + +#~ msgid "" +#~ "This includes all account data, system access rules, imap settings, etc. " +#~ "for this user. Please double check if your really want to do this since " +#~ "there is no way for GOsa to get your data back." +#~ msgstr "" +#~ "这包含该用户所有账号数据,系统访问规则,imap 设置等等。请再次检查您是否要" +#~ "这么做,因为 GOsa 没有办法将您的数据找回。" + +#~ msgid "Creating a new user using templates" +#~ msgstr "用模板创建一个新用户" + +#~ msgid "" +#~ "Creating a new user can be assisted by using templates. Many database " +#~ "records will be filled automatically. Choose 'none' to skip the usage of " +#~ "templates." +#~ msgstr "" +#~ "可以使用模板来辅助新用户的创建。很多数据记录可以被自动填充。选择“无”来跳过" +#~ "模板选择。" + +#~ msgid "Template" +#~ msgstr "模板" + +#~ msgid "Last name" +#~ msgstr "姓" + +#~ msgid "First name" +#~ msgstr "名" + +#, fuzzy +#~ msgid "Manage users" +#~ msgstr "域用户" + +#, fuzzy +#~ msgid "Infrastructure error" +#~ msgstr "PHP 错误" + +#, fuzzy +#~ msgid "You have no permission to change this users password!" +#~ msgstr "您无权修改您的口令。" + +#, fuzzy +#~ msgid "You have no permission to modify object '%s'!" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "You have no permission to use this template!" +#~ msgstr "您无权删除这个黑名单。" + +#, fuzzy +#~ msgid "user" +#~ msgstr "用户" + +#, fuzzy +#~ msgid "You have no permission to change the lock status for this user!" +#~ msgstr "您无权修改您的口令。" + +#~ msgid "Given name" +#~ msgstr "名" + +#, fuzzy +#~ msgid "Applying a template" +#~ msgstr "模板" + +#~ msgid "List of users" +#~ msgstr "用户列表" + +#, fuzzy +#~ msgid "Show %s" +#~ msgstr "显示组" + +#, fuzzy +#~ msgid "templates" +#~ msgstr "模板" + +#, fuzzy +#~ msgid "GOsa object" +#~ msgstr "对象" + +#, fuzzy +#~ msgid "functional users" +#~ msgstr "显示用户" + +#~ msgid "Posix" +#~ msgstr "Posix" + +#, fuzzy +#~ msgid "POSIX users" +#~ msgstr "Posix 设置" + +#~ msgid "Mail" +#~ msgstr "邮件" + +#, fuzzy +#~ msgid "mail users" +#~ msgstr "域用户" + +#~ msgid "Samba" +#~ msgstr "Samba" + +#, fuzzy +#~ msgid "samba users" +#~ msgstr "域用户" + +#~ msgid "Proxy" +#~ msgstr "代理" + +#, fuzzy +#~ msgid "proxy users" +#~ msgstr "显示代理用户" + +#, fuzzy +#~ msgid "Apply template" +#~ msgstr "模板" + +#~ msgid "GOsa" +#~ msgstr "GOsa" + +#~ msgid "Edit generic properties" +#~ msgstr "编辑通用属性" + +#~ msgid "Edit UNIX properties" +#~ msgstr "编辑 UNIX 属性" + +#~ msgid "Edit environment properties" +#~ msgstr "编辑环境属性" + +#~ msgid "Edit mail properties" +#~ msgstr "编辑邮件属性" + +#~ msgid "Edit phone properties" +#~ msgstr "编辑电话属性" + +#~ msgid "Fax" +#~ msgstr "传真" + +#~ msgid "Edit fax properies" +#~ msgstr "编辑传真属性" + +#~ msgid "Edit samba properties" +#~ msgstr "编辑 samba 属性" + +#~ msgid "Netatalk" +#~ msgstr "Netatalk" + +#~ msgid "Edit netatalk properties" +#~ msgstr "编辑 netatalk 属性" + +#~ msgid "Create user from template" +#~ msgstr "从模板创建用户" + +#~ msgid "Create user with this template" +#~ msgstr "创建使用该模板的用户" + +#, fuzzy +#~ msgid "inactive" +#~ msgstr "活动" + +#~ msgid "active" +#~ msgstr "活动" + +#~ msgid "password" +#~ msgstr "口令" + +#, fuzzy +#~ msgid "Not allowed" +#~ msgstr "不允许修改口令" + +#~ msgid "Delete user" +#~ msgstr "删除用户" + +#, fuzzy +#~ msgid "Number of listed users" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Cannot find group SID in your configuration!" +#~ msgstr "无法在 LDAP 或您的配置文件中查找这个组 SID。" + +#~ msgid "Samba group" +#~ msgstr "Samba 组" + +#~ msgid "Domain admins" +#~ msgstr "域管理员" + +#~ msgid "Domain users" +#~ msgstr "域用户" + +#~ msgid "Domain guests" +#~ msgstr "域名 guests" + +#~ msgid "Special group (%d)" +#~ msgstr "特殊组 (%d)" + +#~ msgid "full access" +#~ msgstr "完全访问权限" + +#~ msgid "allow access to these hosts" +#~ msgstr "允许访问这些主机" + +#~ msgid "! unknown id" +#~ msgstr "! 未知 id" + +#, fuzzy +#~ msgid "Cannot find any SID for '%s'!" +#~ msgstr "无法创建文件 '%s'。" + +#, fuzzy +#~ msgid "Cannot find any RIDBASE for '%s'!" +#~ msgstr "无法创建文件 '%s'。" + +#, fuzzy +#~ msgid "Cannot allocate a free ID!" +#~ msgstr "太多用户,无法分配一个可用的 ID!" + +#, fuzzy +#~ msgid "Generic group settings" +#~ msgstr "组设置" + +#, fuzzy +#~ msgid "Samba group type" +#~ msgstr "Samba 组" + +#, fuzzy +#~ msgid "Samba domain name" +#~ msgstr "Samba 主目录" + +#~ msgid "System trust" +#~ msgstr "信赖的系统" + +#, fuzzy +#~ msgid "Phone pickup group" +#~ msgstr "成员属于电话应答组" + +#, fuzzy +#~ msgid "Nagios group" +#~ msgstr "Nagios 账号" + +#, fuzzy +#~ msgid "Group member" +#~ msgstr "组成员" + +#~ msgid "Group administration" +#~ msgstr "组管理" + +#~ msgid "" +#~ "This may be a primary user group. Please double check if you really want " +#~ "to do this since there is no way for GOsa to get your data back." +#~ msgstr "" +#~ "这可能是一个主要的用户组。请再次检查您是否要这么做,因为 GOsa 没有办法将您" +#~ "的数据找回。" + +#~ msgid "Select systems to add" +#~ msgstr "选择要添加的系统" + +#~ msgid "Display systems of department" +#~ msgstr "显示部门的系统" + +#~ msgid "Display systems matching" +#~ msgstr "显示匹配的系统" + +#~ msgid "Regular expression for matching addresses" +#~ msgstr "匹配地址的正则表达式" + +#~ msgid "Group settings" +#~ msgstr "组设置" + +#~ msgid "Group name" +#~ msgstr "组名" + +#~ msgid "Posix name of the group" +#~ msgstr "组的 posix 名称" + +#~ msgid "Normally IDs are autogenerated, select to specify manually" +#~ msgstr "一般 ID 是自动创建的,要手工设置请选择" + +#~ msgid "Force GID" +#~ msgstr "强制 GID" + +#~ msgid "Forced ID number" +#~ msgstr "强制 ID 编号" + +#, fuzzy +#~ msgid "group" +#~ msgstr "组" + +#~ msgid "Select users to add" +#~ msgstr "选择要添加的用户" + +#~ msgid "Search within subtree" +#~ msgstr "在子树中查找" + +#~ msgid "Display users of department" +#~ msgstr "显示部门的用户" + +#~ msgid "Regular expression for matching user names" +#~ msgstr "匹配用户名的正则表达式" + +#~ msgid "List of groups" +#~ msgstr "组列表" + +#~ msgid "Select to see groups that are primary groups of users" +#~ msgstr "选择查看用户的主要组" + +#, fuzzy +#~ msgid "primary groups" +#~ msgstr "主要用户组" + +#, fuzzy +#~ msgid "samba groups mappings" +#~ msgstr "显示匹配的组" + +#, fuzzy +#~ msgid "samba groups" +#~ msgstr "Samba 组" + +#, fuzzy +#~ msgid "application settings" +#~ msgstr "应用程序" + +#, fuzzy +#~ msgid "application groups" +#~ msgstr "显示应用程序组" + +#, fuzzy +#~ msgid "mail settings" +#~ msgstr "邮件选项" + +#, fuzzy +#~ msgid "mail groups" +#~ msgstr "显示邮件组" + +#~ msgid "Select to see normal groups that have only functional aspects" +#~ msgstr "选择查看实用的普通组" + +#, fuzzy +#~ msgid "functional groups" +#~ msgstr "显示实用组" + +#~ msgid "User name of which groups are shown" +#~ msgstr "显示属于该组的用户名" + +#, fuzzy +#~ msgid "Number of listed groups" +#~ msgstr "组名称" + +#~ msgid "Descriptive text for this group" +#~ msgstr "组的描述文字" + +#~ msgid "Select to create a samba conform group" +#~ msgstr "选择创建一个 samba 确认组" + +#~ msgid "in domain" +#~ msgstr "于域" + +#~ msgid "Members are in a phone pickup group" +#~ msgstr "成员属于电话应答组" + +#~ msgid "Members are in a nagios group" +#~ msgstr "成员属于 nagios 组" + +#~ msgid "Trust mode" +#~ msgstr "信赖模式" + +#~ msgid "Group members" +#~ msgstr "组成员" + +#, fuzzy +#~ msgid "In all groups" +#~ msgstr "显示邮件组" + +#, fuzzy +#~ msgid "Not in all groups" +#~ msgstr "显示邮件组" + +#, fuzzy +#~ msgid "Locality" +#~ msgstr "位置" + +#~ msgid "Administrative settings" +#~ msgstr "管理设置" + +#, fuzzy +#~ msgid "Domain Component" +#~ msgstr "域管理员" + +#, fuzzy +#~ msgid "Cannot find an unused tag for this administrative unit!" +#~ msgstr "致命错误:无法找到一个未使用的标志来标记管理单元!" + +#~ msgid "Tagging '%s'." +#~ msgstr "标记 '%s'。" + +#~ msgid "Moving '%s' to '%s'" +#~ msgstr "移动 '%s' 到 '%s'" + +#~ msgid "FAILED to copy %s, aborting operation" +#~ msgstr "拷贝 %s 失败,退出操作" + +#~ msgid "Departments" +#~ msgstr "部门" + +#~ msgid "Department name" +#~ msgstr "部门名称" + +#~ msgid "Category" +#~ msgstr "分类" + +#~ msgid "State" +#~ msgstr "州/省" + +#~ msgid "Address" +#~ msgstr "住址" + +#~ msgid "Object '%s' is already tagged" +#~ msgstr "对象 '%s' 已经做标记" + +#~ msgid "Adding tag (%s) to object '%s'" +#~ msgstr "添加标识(%s)到对象 '%s'" + +#~ msgid "Removing tag from object '%s'" +#~ msgstr "从对象 '%s' 删除标记" + +#~ msgid "List of departments" +#~ msgstr "部门列表" + +#, fuzzy +#~ msgid "Regular expression for matching department names" +#~ msgstr "匹配附件名称的正则表达式" + +#, fuzzy +#~ msgid "Country name" +#~ msgstr "国家" + +#, fuzzy +#~ msgid "Name of country to create" +#~ msgstr "要创建子树的名称" + +#~ msgid "Descriptive text for department" +#~ msgstr "部门描述文件" + +#~ msgid "Choose subtree to place department in" +#~ msgstr "选择放置部门的子树" + +#~ msgid "Tag department as an independent administrative unit" +#~ msgstr "将部门标记为独立的管理单元" + +#~ msgid "Processing the requested operation" +#~ msgstr "处理请求的操作" + +#~ msgid "" +#~ "Your browser doesn't support iframes, please use this link to perform the " +#~ "requested operation." +#~ msgstr "您的浏览器不支持 iframe,请使用这个链接来执行请求的操作。" + +#, fuzzy +#~ msgid "You are currently moving/renaming this department." +#~ msgstr "您无权删除这个部门。" + +#~ msgid "Department management" +#~ msgstr "部门管理" + +#~ msgid "" +#~ "This includes 'all' accounts, systems, etc. in this subtree. Please " +#~ "double check if your really want to do this since there is no way for " +#~ "GOsa to get your data back." +#~ msgstr "" +#~ "在这个子树中包含了所有账号,系统等等。请再次检查您是否要这么做,因为 GOsa " +#~ "没有办法将您的数据找回。" + +#, fuzzy +#~ msgid "Name of organization" +#~ msgstr "组织/公司" + +#, fuzzy +#~ msgid "Name of organization to create" +#~ msgstr "要创建子树的名称" + +#~ msgid "Category for this subtree" +#~ msgstr "这个子树的分类" + +#~ msgid "State where this subtree is located" +#~ msgstr "这个子树位于的状态" + +#~ msgid "Location of this subtree" +#~ msgstr "这个子树的位置" + +#~ msgid "Postal address of this subtree" +#~ msgstr "这个子树的地址" + +#~ msgid "Base telephone number of this subtree" +#~ msgstr "这个子树的电话号码" + +#~ msgid "Base facsimile telephone number of this subtree" +#~ msgstr "这个子树的传真号码" + +#, fuzzy +#~ msgid "Name of locality to create" +#~ msgstr "要创建子树的名称" + +#, fuzzy +#~ msgid "Manage Departments" +#~ msgstr "部门" + +#~ msgid "Country" +#~ msgstr "国家" + +#~ msgid "Name of department" +#~ msgstr "部门名称" + +#~ msgid "Name of subtree to create" +#~ msgstr "要创建子树的名称" + +#, fuzzy +#~ msgid "Organization name" +#~ msgstr "组织/公司" + +#~ msgid "Postal address" +#~ msgstr "地址" + +#~ msgid "Phone number" +#~ msgstr "电话号码" + +#~ msgid "Object groups" +#~ msgstr "对象组" + +#, fuzzy +#~ msgid "Manage object groups" +#~ msgstr "对象组名称" + +#, fuzzy +#~ msgid "Windows Install" +#~ msgstr "Windows 工作站" + +#~ msgid "" +#~ "Please double check if you really want to do this since there is no way " +#~ "for GOsa to get your data back." +#~ msgstr "请再次检查您是否要这么做,因为 GOsa 没有办法将您的数据找回。" + +#~ msgid "Please enter the new object group name" +#~ msgstr "请输入新对象组名称" + +#~ msgid "Phone queue" +#~ msgstr "电话队列" + +#, fuzzy +#~ msgid "Systems" +#~ msgstr "系统" + +#~ msgid "FAI summary" +#~ msgstr "自动化安装说明" + +#~ msgid "Terminals" +#~ msgstr "终端" + +#~ msgid "departments" +#~ msgstr "部门" + +#, fuzzy +#~ msgid "people" +#~ msgstr "显示人员" + +#~ msgid "groups" +#~ msgstr "组" + +#~ msgid "servers" +#~ msgstr "服务器" + +#~ msgid "workstations" +#~ msgstr "工作站" + +#~ msgid "terminals" +#~ msgstr "终端" + +#~ msgid "printers" +#~ msgstr "打印机" + +#~ msgid "phones" +#~ msgstr "电话" + +#~ msgid "applications" +#~ msgstr "应用程序" + +#~ msgid "too many different objects!" +#~ msgstr "太多不同对象!" + +#~ msgid "users" +#~ msgstr "用户" + +#, fuzzy +#~ msgid "winstations" +#~ msgstr "Windows 工作站" + +#~ msgid "Non existing dn:" +#~ msgstr "不存在的 dn:" + +#, fuzzy +#~ msgid "You can combine two different object types at maximum, only!" +#~ msgstr "您最多只能组合两个不同的对象类!" + +#, fuzzy +#~ msgid "Object group generic" +#~ msgstr "对象组" + +#, fuzzy +#~ msgid "Sytem trust" +#~ msgstr "信赖的系统" + +#, fuzzy +#~ msgid "Member" +#~ msgstr "成员" + +#~ msgid "Name of the group" +#~ msgstr "组名称" + +#~ msgid "Member objects" +#~ msgstr "成员对象" + +#~ msgid "List of object groups" +#~ msgstr "对象组列表" + +#, fuzzy +#~ msgid "user groups" +#~ msgstr "组" + +#, fuzzy +#~ msgid "nested groups" +#~ msgstr "对象组" + +#, fuzzy +#~ msgid "department groups" +#~ msgstr "部门" + +#, fuzzy +#~ msgid "server groups" +#~ msgstr "服务器" + +#, fuzzy +#~ msgid "workstation groups" +#~ msgstr "工作站" + +#, fuzzy +#~ msgid "windows workstation groups" +#~ msgstr "显示工作站" + +#, fuzzy +#~ msgid "terminal groups" +#~ msgstr "显示邮件组" + +#, fuzzy +#~ msgid "printer groups" +#~ msgstr "主要用户组" + +#, fuzzy +#~ msgid "phone groups" +#~ msgstr "显示组" + +#, fuzzy +#~ msgid "Number of listed object groups" +#~ msgstr "对象组名称" + +#~ msgid "Display objects of department" +#~ msgstr "选择查看部门对象" + +#~ msgid "UNIX" +#~ msgstr "UNIX" + +#~ msgid "FAX" +#~ msgstr "传真" + +#~ msgid "FTP" +#~ msgstr "FTP" + +#~ msgid "Thin Client" +#~ msgstr "瘦客户机" + +#~ msgid "Contents" +#~ msgstr "内容" + +#~ msgid "This object has no relationship to other objects." +#~ msgstr "这个对象和其他对象没有关系。" + +#~ msgid "Welcome %s!" +#~ msgstr "欢迎 %s!" + +#~ msgid "" +#~ "This is the GOsa main menu. You can select your tasks from the menu on " +#~ "the left, or by choosing one of the pictograms below. All changes apply " +#~ "directly to your companies LDAP server." +#~ msgstr "" +#~ "这是 Gosa 主菜单。您可以从左侧的菜单中选择,或者点击下面的图标。所有改变都" +#~ "将直接修改您公司的 LDAP 服务器。" + +#~ msgid "" +#~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " +#~ "get back to the pictogram view." +#~ msgstr "选择上方左侧的“退出”按钮断开链接,选择“首页”回到图标程序界面。" + +#~ msgid "The GOsa team" +#~ msgstr "GOsa 团队" + +#~ msgid "Select groups to add" +#~ msgstr "选择要添加的组" + +#~ msgid "Display groups of department" +#~ msgstr "显示部门的组" + +#~ msgid "Display groups matching" +#~ msgstr "显示匹配的组" + +#~ msgid "Display groups of user" +#~ msgstr "显示用户组" + +#, fuzzy +#~ msgid "Edit users POSIX settings" +#~ msgstr "Posix 设置" + +#~ msgid "expired" +#~ msgstr "过期" + +#~ msgid "grace time active" +#~ msgstr "时间限制激活" + +#, fuzzy +#~ msgid "password not changeable" +#~ msgstr "活动,口令不可更改" + +#, fuzzy +#~ msgid "password expired" +#~ msgstr "活动,口令过期" + +#~ msgid "unconfigured" +#~ msgstr "未配置" + +#~ msgid "Password can't be changed up to %s days after last change" +#~ msgstr "自上次更改以来 %s 天,不能修改口令" + +#~ msgid "Password must be changed after %s days" +#~ msgstr "口令必须在 %s 天之后更改" + +#, fuzzy +#~ msgid "Disable account after %s days of inactivity after password expiry" +#~ msgstr "口令过期 %s 天后,禁用账号" + +#, fuzzy +#~ msgid "Warn user %s days before password expiry" +#~ msgstr "在口令过期 %s 天之前警告用户" + +#~ msgid "Group of user" +#~ msgstr "用户组" + +#~ msgid "Home directory" +#~ msgstr "用户主目录" + +#~ msgid "UID" +#~ msgstr "UID" + +#, fuzzy +#~ msgid "shadowMin" +#~ msgstr "显示终端" + +#, fuzzy +#~ msgid "shadowWarning" +#~ msgstr "显示分区" + +#, fuzzy +#~ msgid "shadowInactive" +#~ msgstr "显示打印机" + +#, fuzzy +#~ msgid "POSIX account" +#~ msgstr "GLPI 账号" + +#, fuzzy +#~ msgid "Group ID" +#~ msgstr "组" + +#, fuzzy +#~ msgid "Force password change on login" +#~ msgstr "不允许修改口令" + +#, fuzzy +#~ msgid "Shadow min" +#~ msgstr "显示终端" + +#, fuzzy +#~ msgid "Shadow warning" +#~ msgstr "显示分区" + +#, fuzzy +#~ msgid "Shadow inactive" +#~ msgstr "显示打印机" + +#, fuzzy +#~ msgid "Shadow expire" +#~ msgstr "显示人员" + +#, fuzzy +#~ msgid "System trust model" +#~ msgstr "信赖的系统" + +#, fuzzy +#~ msgid "POSIX settings" +#~ msgstr "Posix 设置" + +#~ msgid "User must change password on first login" +#~ msgstr "用户必须在第一次登录修改口令" + +#~ msgid "Password expires on" +#~ msgstr "口令过期截止日" + +#~ msgid "Posix settings" +#~ msgstr "Posix 设置" + +#~ msgid "Force UID/GID" +#~ msgstr "指定 UID/GID" + +#~ msgid "Group membership" +#~ msgstr "组成员身份" + +#~ msgid "(Warning: more than 16 groups are not supported by NFS!)" +#~ msgstr "(警告:NFS不支持超过 16 个组!)" + +#~ msgid "Primary group" +#~ msgstr "主要用户组" + +#~ msgid "Account" +#~ msgstr "账户" + +#~ msgid "" +#~ "To change your personal password use the fields below. The changes take " +#~ "effect immediately. Please memorize the new password, because you " +#~ "wouldn't be able to login without it." +#~ msgstr "" +#~ "用下面的表格更改个人口令。口令更改即时生效。请记住新口令,忘记口令将无法登" +#~ "录。" + +#~ msgid "Clear fields" +#~ msgstr "清除字段" + +#, fuzzy +#~ msgid "Change user password" +#~ msgstr "修改口令" + +#~ msgid "You need to specify your current password in order to proceed." +#~ msgstr "您需要输入当前口令才能继续。" + +#~ msgid "The password you've entered as 'New password' is empty." +#~ msgstr "输入的“新口令”为空。" + +#, fuzzy +#~ msgid "External password changer reported a problem: %s." +#~ msgstr "外部口令更改程序报告错误:" + +#~ msgid "" +#~ "The password you've entered as your current password doesn't match the " +#~ "real one." +#~ msgstr "您输入的当前口令不正确。" + +#, fuzzy +#~ msgid "You have no permission to change your password." +#~ msgstr "您无权修改您的口令。" + +#, fuzzy +#~ msgid "User password" +#~ msgstr "清除口令" + +#~ msgid "" +#~ "You've successfully changed your password. Remember to change all " +#~ "programms configured to use it as well." +#~ msgstr "您已经成功更改口令。还要记住更改相关程序设定。" + +#~ msgid "Password change not allowed" +#~ msgstr "不允许修改口令" + +#, fuzzy +#~ msgid "You have no permission to change your password at this time" +#~ msgstr "您无权修改您的口令。" + +#~ msgid "Personal picture" +#~ msgstr "个人图片" + +#~ msgid "" +#~ "You have changed the method your password is stored in the ldap database. " +#~ "For that reason you've to enter your password at this point again. GOsa " +#~ "will then encode it with the selected method." +#~ msgstr "" +#~ "您已经修改了口令在 LDAP 数据库中存储的方法。因此您需要再输入您的口令。" +#~ "GOsa 将会按照您选择的方法重新编码。" + +#, fuzzy +#~ msgid "You have no permission to set your password!" +#~ msgstr "您无权修改您的口令。" + +#~ msgid "Generic user information" +#~ msgstr "用户一般信息" + +#~ msgid "Certificates" +#~ msgstr "证书" + +#~ msgid "Standard certificate" +#~ msgstr "标准证书" + +#~ msgid "S/MIME certificate" +#~ msgstr "S/MIME 证书" + +#~ msgid "PKCS12 certificate" +#~ msgstr "PKCS12 证书" + +#~ msgid "Certificate serial number" +#~ msgstr "证书系列号" + +#, fuzzy +#~ msgid "Edit organizational user settings" +#~ msgstr "应用程序设置" + +#~ msgid "female" +#~ msgstr "女" + +#~ msgid "male" +#~ msgstr "男" + +#~ msgid "" +#~ "(Some types of certificates are currently not supported and may be " +#~ "displayed as 'invalid'.)" +#~ msgstr "(目前有的种类的证书不支持,可能显示为“无效”)" + +#~ msgid "Certificate is valid from %s to %s and is currently %s." +#~ msgstr "证书从 %s 到 %s 是有效的,当前为 %s。" + +#~ msgid "valid" +#~ msgstr "有效" + +#~ msgid "invalid" +#~ msgstr "无效" + +#~ msgid "No certificate installed" +#~ msgstr "未安装证书" + +#, fuzzy +#~ msgid "The selected password method is no longer available." +#~ msgstr "此应用程序不再可用。" + +#, fuzzy +#~ msgid "The selected password method requires initial configuration!" +#~ msgstr "此应用程序不再可用。" + +#~ msgid "Homepage" +#~ msgstr "个人主页" + +#~ msgid "Mobile" +#~ msgstr "手机" + +#~ msgid "Pager" +#~ msgstr "呼机" + +#, fuzzy +#~ msgid "Cannot open certificate!" +#~ msgstr "无法打开指定证书!" + +#~ msgid "Unit" +#~ msgstr "单元" + +#~ msgid "House identifier" +#~ msgstr "家庭角色" + +#~ msgid "Vocation" +#~ msgstr "行业" + +#~ msgid "Last delivery" +#~ msgstr "最后传递" + +#~ msgid "Unit description" +#~ msgstr "单元描述" + +#~ msgid "Functional title" +#~ msgstr "单位职称" + +#~ msgid "Public visible" +#~ msgstr "公开" + +#~ msgid "Street" +#~ msgstr "街道" + +#~ msgid "Postal code" +#~ msgstr "邮编" + +#, fuzzy +#~ msgid "Generic user settings" +#~ msgstr "通用队列设置" + +#~ msgid "Surname" +#~ msgstr "姓" + +#, fuzzy +#~ msgid "User identification" +#~ msgstr "用户信息" + +#~ msgid "Personal title" +#~ msgstr "个人称谓" + +#~ msgid "Academic title" +#~ msgstr "学位头衔" + +#~ msgid "Date of birth" +#~ msgstr "生日" + +#, fuzzy +#~ msgid "Gender" +#~ msgstr "发送者" + +#, fuzzy +#~ msgid "Preferred language" +#~ msgstr "首选语种" + +#~ msgid "User picture" +#~ msgstr "用户图片" + +#, fuzzy +#~ msgid "Department number" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Employee number" +#~ msgstr "员工类别" + +#~ msgid "Employee type" +#~ msgstr "员工类别" + +#, fuzzy +#~ msgid "Room number" +#~ msgstr "电话号码" + +#, fuzzy +#~ msgid "Telefon number" +#~ msgstr "电话号码" + +#, fuzzy +#~ msgid "Pager number" +#~ msgstr "电话号码" + +#, fuzzy +#~ msgid "Mobile number" +#~ msgstr "电话号码" + +#, fuzzy +#~ msgid "Fax number" +#~ msgstr "系列号" + +#~ msgid "Home postal address" +#~ msgstr "住宅地址" + +#, fuzzy +#~ msgid "Home phone number" +#~ msgstr "电话号码" + +#, fuzzy +#~ msgid "User password method" +#~ msgstr "口令存储" + +#, fuzzy +#~ msgid "User certificates" +#~ msgstr "编辑证书" + +#~ msgid "User settings" +#~ msgstr "用户设置" + +#~ msgid "Clear password" +#~ msgstr "清除口令" + +#~ msgid "Set new password" +#~ msgstr "设置新密码" + +#~ msgid "Personal information" +#~ msgstr "个人信息" + +#~ msgid "Preferred langage" +#~ msgstr "首选语种" + +#~ msgid "Password storage" +#~ msgstr "口令存储" + +#~ msgid "Edit certificates" +#~ msgstr "编辑证书" + +#~ msgid "Organizational information" +#~ msgstr "组织信息" + +#~ msgid "Department No." +#~ msgstr "部门编号" + +#~ msgid "Employee No." +#~ msgstr "员工编号" + +#~ msgid "Room No." +#~ msgstr "房间号" + +#~ msgid "Change picture" +#~ msgstr "更换图片" + +#~ msgid "Template name" +#~ msgstr "模板名称" + +#~ msgid "Sex" +#~ msgstr "性别" + +#~ msgid "Please use the phone tab" +#~ msgstr "请使用电话页面" + +#, fuzzy +#~ msgid "Start import" +#~ msgstr "启动" + +#, fuzzy +#~ msgid "Printer service enabled" +#~ msgstr "打印服务" + +#~ msgid "show chooser" +#~ msgstr "显示选择" + +#~ msgid "direct" +#~ msgstr "直接" + +#~ msgid "load balanced" +#~ msgstr "负载均衡" diff --git a/trunk/gosa-plugins/goto/personal/environment/class_environment.inc b/trunk/gosa-plugins/goto/personal/environment/class_environment.inc new file mode 100644 index 000000000..c6f82a34a --- /dev/null +++ b/trunk/gosa-plugins/goto/personal/environment/class_environment.inc @@ -0,0 +1,1793 @@ +attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + + /* Check : Are we currently editing a group or user dialog */ + if((isset($this->attrs['cn'][0]))&&(!isset($this->attrs['uid'][0]))){ + $suffix="Group"; + $this->uid = $this->attrs['cn'][0]; + $this->attrs['uid'] = $this->attrs['cn'][0]; + $this->OrigCn = $this->attrs['cn'][0]; + }else{ + $suffix="User"; + } + + /* Get all Printer assignments */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=gotoPrinter)(goto".$suffix."Printer=".$this->uid."))",array("*")); + while($printer = $ldap->fetch()){ + $this->gotoPrinter[$printer['cn'][0]]=$printer; + $this->gotoPrinter[$printer['cn'][0]]['mode']="user"; + } + $ldap->search("(&(objectClass=gotoPrinter)(goto".$suffix."AdminPrinter=".$this->uid."))",array("*")); + while($printer = $ldap->fetch()){ + $this->gotoPrinter[$printer['cn'][0]]=$printer; + $this->gotoPrinter[$printer['cn'][0]]['mode']="admin"; + } + + + /* Prepare hotplugs */ + if(isset($this->attrs['gotoHotplugDeviceDN']) && is_array($this->attrs['gotoHotplugDeviceDN'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + for($i = 0 ; $i < $this->attrs['gotoHotplugDeviceDN']['count'] ; $i ++){ + $ldap->cat($this->attrs['gotoHotplugDeviceDN'][$i]); + if($ldap->count()){ + $attrs = $ldap->fetch(); + + if(isset($attrs['gotoHotplugDevice'][0])){ + $tmp = preg_split("/\|/",$attrs['gotoHotplugDevice'][0]); + $tmp2 = array(); + $tmp2['name'] = $attrs['cn'][0]; + $tmp2['description'] = $tmp[0]; + $tmp2['id'] = $tmp[1]; + $tmp2['produkt'] = $tmp[2]; + $tmp2['vendor'] = $tmp[3]; + $tmp2['dn'] = $attrs['dn']; + $this->gotoHotplugDevices[] = $tmp2; + } + }else{ + msg_dialog::display(_("Warning"), sprintf(_("Device '%s' is not available anymore. It will be removed!"), $this->attrs['gotoHotplugDeviceDN'][$i]), WARNING_DIALOG); + } + } + } + + + /* prepare LogonScripts */ + if((isset($this->attrs['gotoLogonScript']))&&(is_array($this->attrs['gotoLogonScript']))){ + unset($this->attrs['gotoLogonScript']['count']); + foreach($this->attrs['gotoLogonScript'] as $device){ + $tmp = $tmp2 = array(); + $tmp = split("\|",$device); + $tmp2['LogonName'] = $tmp[0]; + $tmp2['LogonPriority'] = $tmp[2]; + if(preg_match("/O/i",$tmp[1])){ + $tmp2['LogonOverload'] = "O"; + }else{ + $tmp2['LogonOverload'] = ""; + } + if(preg_match("/L/i",$tmp[1])){ + $tmp2['LogonLast'] = "L"; + }else{ + $tmp2['LogonLast'] = ""; + } + $tmp2['LogonData'] = base64_decode($tmp[3]); + $tmp2['LogonDescription'] = $tmp[4]; + $this->gotoLogonScripts[$tmp[0]]=$tmp2; + } + } + + /* Prepare Shares */ + if((isset($this->attrs['gotoShare']))&&(is_array($this->attrs['gotoShare']))){ + unset($this->attrs['gotoShare']['count']); + foreach($this->attrs['gotoShare'] as $share){ + $tmp = $tmp2 = array(); + $tmp = split("\|",$share); + $tmp2['server'] =$tmp[0]; + $tmp2['name'] =$tmp[1]; + + /* Decode base64 if needed */ + if (!preg_match('%/%', $tmp[2])){ + $tmp2['mountPoint'] =base64_decode($tmp[2]); + } else { + $tmp2['mountPoint'] =$tmp[2]; + } + + if(isset($tmp[3])){ + $tmp2['PwdHash'] =$tmp[3]; + }else{ + $tmp2['PwdHash'] =""; + } + if(isset($tmp[4])){ + $tmp2['Username'] =$tmp[4]; + }else{ + $tmp2['Username'] =""; + } + $this->gotoShares[$tmp[1]."|".$tmp[0]]=$tmp2; + } + } + + for($i = 0 ; $i < strlen($this->gotoProfileFlags) ; $i ++){ + $chr = $this->gotoProfileFlags[$i]; + $name = "gotoProfileFlag".$chr; + $this->$name=$chr; + } + + if((!empty($this->gotoProfileServer))||($this->gotoProfileFlagC=="C")){ + $this->useProfile = true; + }else{ + $this->useProfile = false; + } + + /* Set resolutions */ + $this->gotoXResolutions = array("auto"=>_("auto"), + "640x480" => "640x480", + "800x600" => "800x600", + "1024x768" => "1024x768", + "1152x864" => "1152x864", + "1280x768" => "1280x768", + "1280x1024" => "1280x1024"); + + if($this->config->get_cfg_value("resolutions") != ""){ + $file = $this->config->get_cfg_value("resolutions"); + + if(is_readable($file)){ + $str = file_get_contents($file); + $lines = split("\n",$str); + foreach($lines as $line){ + $line = trim($line); + if(!empty($line)){ + $this->gotoXResolutions[$line]=$line; + } + } + //natcasesort($this->gotoXResolutions); + }else{ + msg_dialog::display(_("Configuration error"), sprintf(_("Cannot open file '%s'!"), $file), WARNING_DIALOG); + } + } + + $this->gotoProfileServers= $config->getShareServerList() ; + $this->gotoShareSelections= $config->getShareList(true); + $this->gotoAvailableShares= $config->getShareList(false); + + /* Ensure that a currently selected server will stay selected, even if the list of profile servers + is empty due to insufficient permissions. + */ + if(count($this->gotoProfileServers) && !empty($this->gotoProfileServer)){ + + /* The currently selected profile server is outdated/no longer available */ + if(!isset($this->gotoProfileServers[$this->gotoProfileServer])){ + + }else{ + $c = $this->gotoProfileServers[$this->gotoProfileServer]; + if(!preg_match("/r/",$c['ACL'])){ + + /* We are not allowed to read to currently selected server. + But to ensure that the selection will be kept after saving the account, we + override the current ACL tag. + */ + $this->gotoProfileServers[$this->gotoProfileServer]['ACL'] .= "r"; + } + } + } + $this->update_kiosk_profiles(); + } + + + function update_kiosk_profiles() + { + $this->gotoKioskProfile_Server = preg_replace("/^.*:\/\/([^\/]*).*$/","\\1",$this->gotoKioskProfile); + $this->gotoKioskProfile_Profile= preg_replace("/^.*\//","",$this->gotoKioskProfile); + + $tmp1 = array("none" => array(_("disabled"))); + $tmp2 = array("none" => _("disabled")); + $tmp3 = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=goEnvironmentServer)(gotoKioskProfile=*)(cn=*))",array("cn","gotoKioskProfile")); + $cnt = 0; + $ui = get_userinfo(); + while($attrs = $ldap->fetch()){ + $acl = $ui->get_permissions($attrs['dn'],"server/goKioskService",""); + for($i = 0 ; $i < $attrs['gotoKioskProfile']['count'] ; $i ++){ + if(preg_match("/r/",$acl) || $this->gotoKioskProfile_Server == $attrs['cn'][0]){ + $name = preg_replace("/^.*\//","",$attrs['gotoKioskProfile'][$i]); + $tmp1[$attrs['cn'][0]][] = $name; + $tmp3[$attrs['cn'][0]][$name] = $attrs['gotoKioskProfile'][$i]; + $tmp2[$attrs['cn'][0]]= $attrs['cn'][0]; + $cnt ++; + } + } + } + + if($cnt && $this->config->search("environment","kioskpath",array('menu','tabs'))){ + $this->kiosk_enabled = TRUE; + } + + $this->gotoKioskProfiles['BY_SERVER'] = $tmp1; + $this->gotoKioskProfiles['SERVERS'] = $tmp2; + $this->gotoKioskProfiles['MAP'] = $tmp3; + + $error = false; + if(!isset($this->gotoKioskProfiles['SERVERS'][$this->gotoKioskProfile_Server])){ + $error = true; + }elseif(!in_array($this->gotoKioskProfile_Profile, $this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){ + $error = true; + } + if($error && !empty($this->gotoKioskProfile)){ + msg_dialog::display(_("Warning"), sprintf(_("Kiosk profile '%s' located on server '%s' is not available anymore. Kiosk profile will be disabled!"), $this->gotoKioskProfile_Profile, $this->gotoKioskProfile_Server), WARNING_DIALOG); + $this->gotoKioskProfile_Server ="none"; + $this->gotoKioskProfile_Profile=""; + }elseif(empty($this->gotoKioskProfile)){ + $this->gotoKioskProfile_Server ="none"; + $this->gotoKioskProfile_Profile=""; + } + } + + + /* Detect type of edited object (user|group)*/ + function detect_grouptype() + { + if((!isset($this->parent))&&(!$this->is_account)){ + $this->is_group = false; + }elseif((isset($this->parent))&&(!isset($this->parent->by_object['posixAccount']))){ + $this->is_group = true; + }else{ + $this->is_group = false; + } + } + + + function execute() + { + + /* Call parent execute */ + plugin::execute(); + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + if(isset($this->parent->by_object['user']) || (isset($this->attrs['objectClass']) &&in_array("gosaAccount",$this->attrs['objectClass']))){ + new log("view","users/".get_class($this),$this->dn); + }else{ + new log("view","groups/".get_class($this),$this->dn); + } + } + + /* Are we editing from MyAccount and not editing a user */ + $WriteOnly = (!isset($this->parent)|| !$this->parent) && !session::is_set('edit'); + + /* Check profile server */ + if($this->acl_is_writeable("gotoProfileServer",$WriteOnly)){ + + if(!empty($this->gotoProfileServer) && !isset($this->gotoProfileServers[$this->gotoProfileServer])){ + + + if(count($this->gotoProfileServers)){ + + /* Get First Profile */ + $new = key($this->gotoProfileServers); + + /* Another profile server found */ + msg_dialog::display(_("Warning"), sprintf(_("Profile server '%s' is not available anymore. Switched to server '%s'."), $this->gotoProfileServer, $new), WARNING_DIALOG); + }else{ + + /* No other profile servers found */ + msg_dialog::display(_("Warning"), sprintf(_("Profile server '%s' is not available anymore. Kiosk profile will be disabled."), $this->gotoProfileServer), WARNING_DIALOG); + $this->gotoProfileServer = "none"; + } + } + } + + $this->detect_grouptype(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $smarty->assign("kiosk_enabled",$this->kiosk_enabled); + $display= ""; + + $smarty->assign("is_group",$this->is_group); + + /* Prepare all variables for smarty */ + foreach($this->attributes as $s_attr){ + /* Set value*/ + $smarty->assign($s_attr,$this->$s_attr); + + /* Set checkbox state*/ + if(empty($this->$s_attr)){ + $smarty->assign($s_attr."CHK",""); + }else{ + $smarty->assign($s_attr."CHK"," checked "); + } + + /* Prepare ACL settings*/ + $smarty->assign($s_attr."ACL",$this->getacl($s_attr,$WriteOnly)); + } + + /* Is accout enabled | are we editing from usermenu or admin menu + All these tab management is done here + */ + + + /* Working from Usermenu an the Account is currently disbled + * this->parent : is only set if we are working in a list of tabs + * is_account : is only true if the needed objectClass is given + */ + if((!isset($this->parent))&&(!$this->is_account)){ + /* We are currently editing this tab from usermenu, but this account is not enabled */ + $smarty->assign("is_account",$this->is_account); + /* Load template */ + $display .= $smarty->fetch(get_template_path('environment.tpl', TRUE)); + /* Avoid the "You are currently editing ...." message when you leave this tab */ + $display .= back_to_main(); + /* Display our message to the user */ + return $display; + + + /* We are currently editing from group tabs, because + * $this->parent is set + * posixAccount is not set, so we are not in usertabs. + */ + }elseif((isset($this->parent))&&(!isset($this->parent->by_object['posixAccount']))){ + $smarty->assign("is_account","true"); + $this->uid = $this->cn; + $this->attrs['uid'] = $this->cn; + + /* Change state if needed */ + if (isset($_POST['modify_state'])){ + if(($this->acl_is_createable() && !$this->is_account) || + ($this->acl_is_removeable() && $this->is_account)){ + $this->is_account= !$this->is_account; + } + } + /* Group Dialog with enabled environment options */ + if ($this->is_account){ + $display= $this->show_enable_header(msgPool::removeFeaturesButton(_("Environment")), + msgPool::featuresEnabled(_("Environment"))); + } else { + + /* Environment is disabled + If theres is no posixAccount enabled, you won't be able to enable + environment extensions + */ + if((isset($this->parent->by_object['group']))||(isset($this->attrs['objectClass']))&&((in_array("posixAccount",$this->attrs['objectClass'])))){ + $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")), + msgPool::featuresDisabled(_("Environment"))); + return $display; + }elseif((isset($this->parent->by_object['ogroup']))){ + $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")), + msgPool::featuresDisabled(_("Environment"))); + return $display; + }else{ + $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")), + msgPool::featuresDisabled(_("Environment"), _("POSIX")), TRUE); + return $display; + } + } + }else{ + /* Editing from Usermenu + * Tell smarty that this accoutn is enabled + */ + $smarty->assign("is_account","true"); + + /* Change state if needed */ + if (isset($_POST['modify_state'])){ + if(($this->acl_is_createable() && !$this->is_account) || + ($this->acl_is_removeable() && $this->is_account)){ + $this->is_account= !$this->is_account; + } + } + + if(isset($this->parent)){ + + // 3. Account enabled . Editing from adminmenu + if ($this->is_account){ + $display= $this->show_enable_header(msgPool::removeFeaturesButton(_("Environment")), + msgPool::featuresEnabled(_("Environment"))); + } else { + + if($this->parent->by_object['posixAccount']->is_account==true){ + $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")), + msgPool::featuresDisabled(_("Environment"))); + return $display; + }else{ + $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Environment")), + msgPool::featuresDisabled(_("Environment"), _("POSIX")), TRUE); + return $display; + } + } + } + } + + /* Reset header toggle */ + if($this->multiple_support_active){ + $display = ""; + } + + /* Account is Account : is_accounbt=true. + * Else we won't reach this. + */ + + /* Prepare all variables for smarty */ + foreach($this->attributes as $s_attr){ + /* Set value*/ + $smarty->assign($s_attr,$this->$s_attr); + + /* Set checkbox state*/ + if(empty($this->$s_attr)){ + $smarty->assign($s_attr."CHK",""); + }else{ + $smarty->assign($s_attr."CHK"," checked "); + } + + /* Prepare ACL settings*/ + $smarty->assign($s_attr."ACL",$this->getacl($s_attr,$WriteOnly)); + } + + foreach(array("gotoHotplugDevice","gotoProfileFlagC","gotoProfileFlagL") as $s_attr){ + $smarty->assign($s_attr."ACL",$this->getacl($s_attr,$WriteOnly)); + } + + if($WriteOnly) { + $smarty->assign("gotoPrinterACL","r"); + }else{ + $smarty->assign("gotoPrinterACL","rw"); + } + + + $smarty->assign("useProfile",$this->useProfile); + if(empty($this->useProfile) && !$this->multiple_support_active){ + $smarty->assign("useProfileCHK",""); + $smarty->assign("gotoProfileServerACL" , preg_replace("/w/","",$this->getacl("gotoProfileServer",$WriteOnly))); + $smarty->assign("gotoProfileQuotaACL" , preg_replace("/w/","",$this->getacl("gotoProfileQuota",$WriteOnly))); + $smarty->assign("gotoProfileFlagCACL" , preg_replace("/w/","",$this->getacl("gotoProfileFlagC",$WriteOnly))); + }else{ + $smarty->assign("useProfileCHK"," checked "); + } + + $smarty->assign("gotoProfileServerWriteable", $this->acl_is_writeable("gotoProfileServer",$WriteOnly)); + $smarty->assign("gotoProfileACL", $this->getacl("gotoProfileServer",$WriteOnly).$this->getacl("gotoProfileQuota",$WriteOnly)); + + /* HANDLE Profile Settings here + * Assign available Quota and resolution settings + * Get all available profile server + * Get cache checkbox + * Assign this all to Smarty + */ + + if(empty($this->gotoProfileFlagL)){ + $smarty->assign("gotoProfileFlagLCHK"," "); + }else{ + $smarty->assign("gotoProfileFlagLCHK"," checked "); + } + + if(empty($this->gotoProfileFlagC)){ + $smarty->assign("gotoProfileFlagCCHK"," "); + }else{ + $smarty->assign("gotoProfileFlagCCHK"," checked "); + } + + + $smarty->assign("gotoXResolutions" , $this->gotoXResolutions); + $smarty->assign("gotoXResolutionKeys" , array_flip($this->gotoXResolutions)); + + $smarty->assign("gotoProfileServers",$this->gotoProfileServers); + if(!is_array($this->gotoProfileServers)){ + $this->gotoProfileServers =array(); + } + + /* Handle kiosk profiles*/ + $smarty->assign("kiosk_servers" , $this->gotoKioskProfiles['SERVERS']); + $smarty->assign("kiosk_server" , $this->gotoKioskProfile_Server); + $smarty->assign("kiosk_profiles" , $this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server]); + $smarty->assign("kiosk_profile" , $this->gotoKioskProfile_Profile); + + + /* Logonscript Management + * Get available LogonScripts (possibly grey out (or mark) these script that are defined for the group) + * Perform add Delete edit Posts + */ + + /* Dialog Save */ + if(isset($_POST['LogonSave'])){ + + if(!$this->acl_is_writeable("gotoLogonScript")){ + msg_dialog::display(_("Permission error"), msgPool::permModify(_("Logon scripts")), ERROR_DIALOG); + unset($this->dialog); + $this->dialog=FALSE; + $this->is_dialog=false; + }else{ + $this->dialog->save_object(); + if(count($this->dialog->check())!=0){ + foreach($this->dialog->check() as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $tmp = $this->dialog->save(); + unset($this->dialog); + $this->dialog=FALSE; + $this->is_dialog=false; + + if($this->multiple_support_active){ + $tmp['UsedByAllUsers'] = TRUE; + } + $this->gotoLogonScripts[$tmp['LogonName']]=$tmp; + } + } + } + + + /* Dialog Quit without saving */ + if(isset($_POST['LogonCancel'])){ + $this->is_dialog= false; + unset($this->dialog); + $this->dialog= FALSE; + } + + /* Check Edit Del New Posts for a selected LogonScript */ + if($this->acl_is_writeable("gotoLogonScript") && + (isset($_POST['gotoLogonScriptNew'])) || isset($_POST['gotoLogonScriptEdit']) ||isset($_POST['gotoLogonScriptDel'])){ + + /* New Logon Script: Open an edit dialog, we don't need a $_POST['gotoLogonScript'] here. + * In this case we create a new Logon Script. + */ + if(isset($_POST['gotoLogonScriptNew'])){ + $this->is_dialog = true; + $this->dialog = new logonManagementDialog($this->config,$this->dn); + } + + /* If we receive a Delete request and there is a Script selected in the selectbox, delete this one. + * We only can delete if there is an entry selected. + */ + if((isset($_POST['gotoLogonScriptDel']))&&(isset($_POST['gotoLogonScript']))){ + unset($this->gotoLogonScripts[$_POST['gotoLogonScript']]); + } + + /* In this case we want to edit an existing entry, we open a new Dialog to allow editing. + * There must be an entry selected to perform edit request. + */ + if((isset($_POST['gotoLogonScriptEdit']))&&(isset($_POST['gotoLogonScript']))){ + $is_entry = $this->gotoLogonScripts[$_POST['gotoLogonScript']]; + $this->is_dialog = true; + $this->dialog = new logonManagementDialog($this->config,$this->dn,$is_entry); + } + } + + /* Append List to smarty*/ + if($this->multiple_support_active){ + $smarty->assign("gotoLogonScripts", $this->gotoLogonScripts); + $smarty->assign("gotoLogonScriptKeysCnt",count($this->gotoLogonScripts)); + }else{ + $ls = $this->printOutLogonScripts(); + $smarty->assign("gotoLogonScripts", $ls); + $smarty->assign("gotoLogonScriptKeys",array_flip($ls)); + $smarty->assign("gotoLogonScriptKeysCnt",count($ls)); + } + + /* In this section server shares will be defined + * A user can select one of the given shares and a mount point + * and attach this combination to his setup. + */ + + $smarty->assign("gotoShareSelections", $this->gotoShareSelections); + if(!is_array($this->gotoShareSelections)){ + $this->gotoShareSelections = array(); + } + $smarty->assign("gotoShareSelectionKeys", array_flip($this->gotoShareSelections)); + + /* if $_POST['gotoShareAdd'] is set, we will try to add a new entry + * This entry will be, a combination of mountPoint and sharedefinitions + */ + if(isset($_POST['gotoShareAdd']) && $this->acl_is_writeable("gotoShare")){ + + /* We assign a share to this user, if we don't know where to mount the share */ + if(!isset($_POST['gotoShareSelection']) || get_post('gotoShareSelection') == ""){ + msg_dialog::display(_("Error"), msgPool::invalid(_("Share")), ERROR_DIALOG); + }elseif((!isset($_POST['gotoShareMountPoint']))||(empty($_POST['gotoShareMountPoint']))||(preg_match("/[\|]/i",$_POST['gotoShareMountPoint']))){ + msg_dialog::display(_("Error"), msgPool::invalid(_("Mount point")), ERROR_DIALOG); + }elseif(preg_match('/ /', $_POST['gotoShareMountPoint'])){ + msg_dialog::display(_("Error"), msgPool::invalid(_("Mount point"), "/[^\s]/"), ERROR_DIALOG); + }elseif(!( + preg_match("/^\//",$_POST['gotoShareMountPoint']) || + preg_match("/^~/",$_POST['gotoShareMountPoint']) || + preg_match("/^\$HOME/",$_POST['gotoShareMountPoint']) || + preg_match("/^.HOME/",$_POST['gotoShareMountPoint']) || + preg_match("/^\$USER/",$_POST['gotoShareMountPoint']) || + preg_match("/^.USER/",$_POST['gotoShareMountPoint']) || + preg_match("/^%/",$_POST['gotoShareMountPoint']) + ) + ){ + msg_dialog::display(_("Error"), msgPool::invalid(_("Mount point")), ERROR_DIALOG); + }else{ + $a_share = $this->gotoAvailableShares[$_POST['gotoShareSelection']]; + $s_mount = $_POST['gotoShareMountPoint']; + $s_user = $_POST['ShareUser']; + /* Preparing the new assignment */ + $this->gotoShares[$a_share['name']."|".$a_share['server']]=$a_share; + $this->gotoShares[$a_share['name']."|".$a_share['server']]['Username']=$s_user; + $this->gotoShares[$a_share['name']."|".$a_share['server']]['PwdHash']=""; + $this->gotoShares[$a_share['name']."|".$a_share['server']]['mountPoint']=$s_mount; + + if($this->multiple_support_active){ + $this->gotoShares[$a_share['name']."|".$a_share['server']]['UsedByAllUsers']= TRUE; + } + } + } + + /* if the Post gotoShareDel is set, someone asked GOsa to delete the selected entry (if there is one selected) + * If there is no defined share selected, we will abort the deletion without any message + */ + $once = true; + if($this->acl_is_writeable("gotoShare")){ + foreach($_POST as $name => $value){ + if((preg_match("/^gotoShareDel_/",$name)) && ($once)){ + $once = false; + $key = preg_replace("/^gotoShareDel_/","",$name); + $key = preg_replace("/_+[xy]$/","",$key); + $key = base64_decode($key); + if(isset($this->gotoShares[$key])) { + unset($this->gotoShares[$key]); + } + + /* Remove corresponding password entry, too. This is a workaround + to get rid of old-style entries. */ + $key= preg_replace("/\|/", "|!", $key); + if(isset($this->gotoShares[$key])) { + unset($this->gotoShares[$key]); + } + } + if((preg_match("/^gotoShareResetPwd_/",$name)) && ($once)){ + $once = false; + $key = preg_replace("/^gotoShareResetPwd_/","",$name); + $key = preg_replace("/_+[xy]$/","",$key); + $key = base64_decode($key); + $this->gotoShares[$key]['PwdHash'] = ""; + if(preg_match("/^!/",$this->gotoShares[$key]['server'])){ + unset($this->gotoShares[$key]); + } + } + } + } + $divlistShares = new divSelectBox("gotoShares"); + $divlistShares->SetHeight(100); + + + $tmp = array(); + if($this->acl_is_readable("gotoShare")){ + $tmp = $this->printOutAssignedShares(); + } + + + foreach($tmp as $key => $value){ + $img = ""; + + /* Skip apssword only entries */ + if( empty($this->gotoShares[$key]['server']) && + empty($this->gotoShares[$key]['name']) && + empty($this->gotoShares[$key]['mountPoint']) && + empty($this->gotoShares[$key]['Username'])){ + continue; + } + + $color = ""; + if($this->multiple_support_active){ + if($this->gotoShares[$key]['UsedByAllUsers']){ + $value .= " ("._("Used by all users").")"; + }else{ + $color = "color: #999999;"; + $value .= " ("._("Used by some users").")"; + } + } + + /* Check if entry starts with an ! */ + if(preg_match("/^!/",$this->gotoShares[$key]['server'])){ + + /* If we are currently editing groups environment, skip those ! entries */ + if($this->is_group) continue; + + /* Create pwd reset images */ + if($this->gotoShares[$key]['PwdHash'] != ""){ + $img.= ""; + } + $field1 = array("string" => "".$value."" , "attach" => "style='".$color."'"); + $field2 = array("string" => $img , "attach" => "style='border-right:0px;'"); + }else{ + + /* Create pwd reset img && delete image */ + if($this->gotoShares[$key]['PwdHash'] != ""){ + $img.= ""; + $img.= " "; + } + $img.= ""; + $field1 = array("string" => $value , "attach" => "style='".$color."'"); + $field2 = array("string" => $img , "attach" => "style='border-right:0px;'"); + } + $divlistShares->AddEntry(array($field1,$field2)); + } + $smarty->assign("divlistShares",$divlistShares->DrawList()); + + /* Hotplug devices will be handled here + * There are 3 possible methods for this feature + * Create a new Hotplug, A Dialog will open where you can specify some hotplug information + * Delete will erase an entry, the entry must be selcted in the ListBox first + * Editing an entry will open a dialog where the informations about the selcted entry can be changed + */ + + /* We have to delete the selected hotplug from the list*/ + if((isset($_POST['gotoHotplugDeviceDel']))&&(isset($_POST['gotoHotplugDevice_post'])) && $this->acl_is_writeable("gotoHotplugDevice")){ + if($this->acl_is_writeable("gotoHotplugDevice")){ + foreach($_POST['gotoHotplugDevice_post'] as $name){ + unset($this->gotoHotplugDevices[$name]); + } + } + } + + /* There are already defined hotplugs from other users we could use */ + if(isset($_POST['gotoHotplugDeviceUse']) && $this->acl_is_writeable("gotoHotplugDevice")){ + $tmp =array(); + foreach($this->gotoHotplugDevices as $plugs){ + $tmp[] = $plugs['name']; + } + $this->dialog = new hotplugDialog($this->config,$tmp); + $this->is_dialog = true; + } + + /* Dialog Aborted */ + if(isset($_POST['HotPlugCancel'])){ + unset($this->dialog); + $this->dialog= FALSE; + $this->is_dialog = false; + } + + /* Dialod saved */ + if(isset($_POST['HotPlugSave'])){ + + $this->dialog->save_object(); + if(count($this->dialog->check())!=0){ + foreach($this->dialog->check() as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $this->dialog->save_object(); + $a_tmp = $this->dialog->save(); + + if(is_array($a_tmp)){ + foreach($a_tmp as $name => $hotplug){ + if($this->multiple_support_active){ + $hotplug['UsedByAllUsers'] = TRUE; + } + $this->gotoHotplugDevices[$name]= $hotplug; + } + } + unset($this->dialog); + $this->dialog= FALSE; + $this->is_dialog = false; + } + } + + if($this->multiple_support_active){ + $smarty->assign("gotoHotplugDevices",$this->gotoHotplugDevices); + }else{ + $smarty->assign("gotoHotplugDevices",$this->printOutHotPlugDevices()); + $smarty->assign("gotoHotplugDeviceKeys",array_flip($this->printOutHotPlugDevices())); + } + + /* Printer Assignment will managed below + * A printer can be assigned in two different ways and two different types + * There are 2 types of users assigned to a printer : user and admin + * They only differ in the member attribute they will be assigned to. user: gotoUserPrinter admin: gotoadminPrinter + * The different types of assigning a user are : 1 assigning a user to a printer 2. assigning a group to a printer + */ + + /* First handle Add Post. Open a dialog that allows us to select a printer or two */ + if(isset($_POST['gotoPrinterAdd'])){ + + $this->is_dialog=true; + $this->dialog = new selectPrinterDialog($this->config,$this->dn,$this->gotoPrinter); + } + + if(isset($_POST['PrinterCancel'])){ + $this->is_dialog=false; + unset($this->dialog); + $this->dialog=FALSE; + } + + if(isset($_POST['PrinterSave'])){ + if(count($this->dialog->check())!=0){ + $tmp = $this->dialog->check(); + foreach($tmp as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $this->dialog->save_object(); + $tmp = $this->dialog->save(); + $tmp2= $this->dialog->getPrinter(true); + + foreach($tmp as $pname){ + $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$tmp2[$pname]['dn'],"printer"); + $printerObj->set_acl_base($tmp2[$pname]['dn']); + + $type = false; + + if($this->is_group){ + if($this->dn == "new"){ + $type = "AddGroup"; + }elseif(isset($this->NewDeletedPrinters[$pname])){ + $type = "AddGroup"; + }elseif($printerObj->by_object['printgeneric']->AddMember("AddGroup",$this->dn)){ + $type = "AddGroup"; + } + }else{ + if($this->multiple_support_active){ + $type = "AddUser"; + }elseif(isset($this->NewDeletedPrinters[$pname])){ + $type = "AddUser"; + }elseif($printerObj->by_object['printgeneric']->AddMember("AddUser",$this->dn)){ + $type = "AddUser"; + } + } + + if($type){ + $this->gotoPrinter[$pname]=$tmp2[$pname]; + $this->gotoPrinter[$pname]['mode']="user"; + $this->add_del_printer_member_was_called = true; + + $this->NewAddedPrinters[$pname] = $pname; + if(isset($this->NewDeletedPrinters[$pname])){ + unset($this->NewDeletedPrinters[$pname]); + } + } + } + + $this->is_dialog=false; + unset($this->dialog); + $this->dialog =FALSE; + } + } + + if((isset($_POST['gotoPrinterDel']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){ + $printer = $_POST['gotoPrinterSel']; + foreach($printer as $pname){ + + $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$this->gotoPrinter[$pname]['dn'],"printer"); + $printerObj->set_acl_base($this->gotoPrinter[$pname]['dn']); + + $type = false; + if($this->is_group){ + if(isset($this->NewAddedPrinters[$pname])){ + $type = "Group"; + }elseif($printerObj->by_object['printgeneric']->DelMember("AddGroup",$this->cn)){ + $type = "Group"; + } + }else{ + if(isset($this->NewAddedPrinters[$pname])){ + $type = "User"; + }elseif($printerObj->by_object['printgeneric']->DelMember("AddUser",$this->uid)){ + $type = "User"; + } + } + if($type){ + $this->add_del_printer_member_was_called = true; + unset($this->gotoPrinter[$pname]); + + $this->NewDeletedPrinters[$pname] = $pname; + if(isset($this->NewAddedPrinters[$pname])){ + UNSET($this->NewAddedPrinters[$pname]); + } + } + } + } + + if((isset($_POST['gotoPrinterEdit']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){ + $printers = $_POST['gotoPrinterSel']; + $this->add_del_printer_member_was_called = true; + foreach($printers as $printer){ + if($this->gotoPrinter[$printer]['mode']=="user"){ + $this->gotoPrinter[$printer]['mode']="admin"; + }else{ + $this->gotoPrinter[$printer]['mode']="user"; + } + } + } + + if((isset($_POST['gotoPrinterDefault']))&&(isset($_POST['gotoPrinterSel']))&&(!empty($_POST['gotoPrinterSel']))){ + if($this->is_group){ + msg_dialog::display(_("Error"), _("Cannot set default printer flag for groups!"), ERROR_DIALOG); + }else{ + if ($this->gosaDefaultPrinter == $_POST['gotoPrinterSel'][0]){ + $this->gosaDefaultPrinter= ""; + } else { + $this->gosaDefaultPrinter= $_POST['gotoPrinterSel'][0]; + } + } + } + + $smarty->assign("gotoPrinter",$this->printOutPrinterDevices()); + + /* General behavior */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + $disp =$this->dialog->execute(); + return($disp); + } + + /* Assign used attributes for multiple edit */ + foreach(array("gotoPrinter","kiosk_server","gotoProfileFlagL","gotoXResolution", + "useProfile","gotoProfileServer","gotoProfileQuota","gotoProfileFlagC") as $box){ + $ubox ="use_".$box; + if(in_array($box,$this->multi_boxes)){ + $smarty->assign($ubox,TRUE); + }else{ + $smarty->assign($ubox,FALSE); + } + } + + /* Als smarty vars are set. Get smarty template and generate output */ + $smarty->assign("multiple_support",$this->multiple_support_active); + $display.= $smarty->fetch(get_template_path('environment.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + function remove_from_parent() + { + /* only if it was an account*/ + if (!$this->initially_was_account){ + return; + } + + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Remove and write to LDAP */ + plugin::remove_from_parent(); + + /* Don't save our template variables */ + $skip = array("uid","gotoLogonScripts","gotoPrinter","gotoShares","gotoHotplugDevices" ); + + /* Skip all these attributes */ + foreach($skip as $del){ + unset($this->attrs[$del]); + } + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,$this->attributes, "Save"); + + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if($this->is_group){ + new log("remove","groups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove",array("uid" => $this->uid)); + } + + + /* Save data to object */ + function save_object() + { + /* Get all Posted vars + * Setup checkboxes + */ + $WriteOnly = (!isset($this->parent)|| !$this->parent) && !session::is_set('edit'); + if(isset($_POST['iamposted'])){ + + $PACL = $this->getacl("gotoProfileServer",$WriteOnly).$this->getacl("gotoProfileQuota",$WriteOnly); + + if(isset($_POST['kiosk_server'])){ + $tmp = $_POST['kiosk_server']; + if(isset($this->gotoKioskProfiles['SERVERS'][$tmp])){ + $this->gotoKioskProfile_Server = $_POST['kiosk_server']; + } + } + if(isset($_POST['kiosk_profile'])){ + $tmp = $_POST['kiosk_profile']; + if(in_array($tmp,$this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){ + $this->gotoKioskProfile_Profile = $_POST['kiosk_profile']; + } + } + + if(preg_match("/w/",$PACL)){ + if(isset($_POST['useProfile'])){ + $this->useProfile = true; + }else{ + $this->useProfile = false; + } + } + + if($this->acl_is_writeable("gotoProfileFlagC")){ + if(isset($_POST['gotoProfileFlagC'])){ + $this->gotoProfileFlagC = $_POST['gotoProfileFlagC']; + }else{ + $this->gotoProfileFlagC = false; + } + } + + if($this->acl_is_writeable("gotoProfileFlagL")){ + if(isset($_POST['gotoProfileFlagL'])){ + $this->gotoProfileFlagL = $_POST['gotoProfileFlagL']; + }else{ + $this->gotoProfileFlagL = false; + } + } + + plugin::save_object(); + foreach($this->attributes as $s_attr){ + if((!isset($_POST[$s_attr])) || + in_array($s_attr,array("gosaDefaultPrinter","gotoShares","gotoHotplugDevices","gotoPrinter","gotoLogonScripts","uid"))) continue; + if(!$this->acl_is_writeable($s_attr)){ + continue; + }else{ + if(isset($_POST[$s_attr])){ + $this->$s_attr = $_POST[$s_attr]; + }else{ + $this->$s_attr = false; + } + } + } + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + $this->detect_grouptype(); + + if(preg_match("/[^0-9]/",$this->gotoProfileQuota)) { + $message[] = msgPool::invalid(_("Profile quota"),$this->gotoProfileQuota,"/[0-9]/") ; + } + if(!isset($this->attrs['objectClass'])){ + $this->attrs['objectClass']=array(); + } + if(!$this->is_group){ + if((!((in_array("posixAccount",$this->attrs['objectClass']))||($this->parent->by_object['posixAccount']->is_account==true)))&&(!$this->is_group)){ + $message[]= msgPool::featuresDisabled(_("environment"),_("POSIX")); + } + } + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* If group was renamed, all printer settings get lost + */ + /* only save changed variables ....*/ + if ($this->gotoKioskProfile_Server != "none"){ + $method = $this->gotoKioskProfiles['MAP'][$this->gotoKioskProfile_Server][$this->gotoKioskProfile_Profile]; + $this->gotoKioskProfile= $method; + }else{ + $this->gotoKioskProfile= array(); + } + + plugin::save(); + $ldap= $this->config->get_ldap_link(); + + $realyUsedAttrs= array(); + + /* Save already used objectClasses */ + $ocs = $this->attrs['objectClass']; + unset($ocs['count']); + $this->attrs = array(); + $this->attrs['objectClass']= gosa_array_merge($ocs,$this->objectclasses); + + /* 1. Search all printers that have our uid/cn as member + * 2. Delete this uid/cn from every single entry and save it again. + * 2.1 There are different types of members: Users / Groups, this will be defined in $suffix + * 2.2 And each type has two modes, Admin (e.g. 'gotoUserAdminPrinter') and Normal + */ + + $this->detect_grouptype(); + + if($this->add_del_printer_member_was_called){ + + $types = array( "gotoUserPrinter" => "AddUser", + "gotoGroupPrinter" => "AddGroup", + "gotoUserAdminPrinter" => "AddAdminUser", + "gotoGroupAdminPrinter" => "AddAdminGroup"); + + if($this->is_group){ + $s_suffix = "Group"; + $useVar = "cn"; + }else{ + $useVar = "uid"; + $s_suffix = "User"; + } + + /* Remove old entries */ + $ldap->cd($this->config->current['BASE']);; + $ldap->search("(&(objectClass=gotoPrinter)(goto".$s_suffix."Printer=".$this->$useVar."))",array("*")); + while($attr = $ldap->fetch()){ + $printerObj = NULL; + $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$attr['dn'],"printer"); + $printerObj->set_acl_base($attr['dn']); + $printerObj->by_object['printgeneric']->DelMember($types["goto".$s_suffix."Printer"],$this->$useVar); + $printerObj->by_object['printgeneric']->save(); + } + + $ldap->cd($this->config->current['BASE']);; + $ldap->search("(&(objectClass=gotoPrinter)(goto".$s_suffix."AdminPrinter=".$this->$useVar."))",array("*")); + while($attr = $ldap->fetch()){ + $printerObj = NULL; + $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$attr['dn'],"printer"); + $printerObj->set_acl_base($attr['dn']); + $printerObj->by_object['printgeneric']->DelMember($types["goto".$s_suffix."AdminPrinter"],$this->$useVar); + $printerObj->by_object['printgeneric']->save(); + } + + foreach($this->gotoPrinter as $printer){ + $printerObj = NULL; + $printerObj = new printtabs($this->config,$this->config->data['TABS']['PRINTTABS'],$printer['dn'],"printer"); + $printerObj->set_acl_base($printer['dn']); + + + if($printer['mode'] == "admin") { + $attribute = "goto".$s_suffix."AdminPrinter"; + }else{ + $attribute = "goto".$s_suffix."Printer"; + } + + $printerObj->by_object['printgeneric']->AddMember($types[$attribute],$this->dn); + $printerObj->by_object['printgeneric']->save(); + } + } + + /* Prepare HotPlug devices */ + $this->attrs['gotoHotplugDeviceDN'] = array(); + foreach($this->gotoHotplugDevices as $name => $device){ + $this->attrs['gotoHotplugDeviceDN'][]= $device['dn']; + } + + /* Prepare LogonScripts */ + $this->attrs['gotoLogonScript'] = array(); + foreach($this->gotoLogonScripts as $name => $script){ + $this->attrs['gotoLogonScript'][] = $script['LogonName']."|". + $script['LogonOverload'].$script['LogonLast']."|". + $script['LogonPriority']."|". + base64_encode($script['LogonData'])."|". + $script['LogonDescription']; + } + + /* Prepare Shares */ + $this->attrs['gotoShare']=array(); + foreach($this->gotoShares as $name => $share){ + $mntp= $share['mountPoint']; + if (!preg_match('=^[a-z0-9+\._/%-]+$=i', $mntp)){ + $mntp= base64_encode($mntp); + } + $this->attrs['gotoShare'][] =$share['server']."|".$share['name']."|".$mntp."|".$share['PwdHash']."|".$share['Username']; + } + + + if($this->gotoXResolution == "auto") $this->gotoXResolution =""; + $saveThis = array("gotoProfileQuota","gotoXResolution","gotoProfileServer","gotoKioskProfile","gosaDefaultPrinter"); + + foreach($saveThis as $tosave){ + if(!empty($this->$tosave)){ + $this->attrs[$tosave]=$this->$tosave; + }else{ + $this->attrs[$tosave]=array(); + } + } + + /* Prepare Flags */ + $this->attrs['gotoProfileFlags'] = array($this->gotoProfileFlagC.$this->gotoProfileFlagL); + if(empty($this->attrs['gotoProfileFlags'][0])){ + $this->attrs['gotoProfileFlags']=array(); + } + + if($this->useProfile == false){ + $this->attrs['gotoProfileFlags'] = preg_replace("/C/i","",$this->attrs['gotoProfileFlags']); + $this->attrs['gotoProfileServer']= array(); + } + + $ldap->cat ($this->dn, array('dn')); + if ($ldap->fetch()){ + $mode= "modify"; + } else { + $mode= "add"; + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + } + + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->$mode($this->attrs); + + $cat = "users"; + if($this->is_group){ + $cat = "groups"; + } + + /* Log last action */ + if($this->initially_was_account){ + new log("modify",$cat."/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create",$cat."/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + $this->handle_post_events($mode,array("uid"=>$this->uid)); + } + + /* Generate ListBox frindly output for the defined shares + * Possibly Add or remove an attribute here, + */ + function printOutAssignedShares() + { + $a_return = array(); + if(is_array($this->gotoShares)){ + foreach($this->gotoShares as $share){ + if(preg_match("/^!/",$share['server'])){ + $a_return[$share['name']."|".$share['server']]= preg_replace("/^!/","",$share['server'])."://".$share['name']." - "._("group share"); + }else{ + $a_return[$share['name']."|".$share['server']]= $share['server']."://".$share['name']." on ".$share['mountPoint']." as ".$share['Username']; + } + } + natcasesort($a_return); + } + return($a_return); + } + + /* Generate ListBox frindly output for the definedhotplugs + * Possibly Add or remove an attribute here, + */ + function printOutHotPlugDevices() + { + $a_return= array(); + if(is_array($this->gotoHotplugDevices)){ + foreach($this->gotoHotplugDevices as $key=>$device){ + $a_return[$key] = $device['name']." - ".$device['id']; + } + } + return($a_return); + } + + /* Generates ListBox frienly output of used printer devices + * Append ' - admin' if printer is used in admin mode + */ + function printOutPrinterDevices() + { + $a_return = array(); + + if(is_array($this->gotoPrinter)){ + foreach($this->gotoPrinter as $printer){ + if($printer['mode'] == 'admin'){ + $a_return[$printer['cn'][0]]= $printer['cn'][0]." - "._("Administrator"); + }else{ + $a_return[$printer['cn'][0]]= $printer['cn'][0]; + } + if ($printer['cn'][0] == $this->gosaDefaultPrinter){ + $a_return[$printer['cn'][0]].=" - "._("Default printer"); + } + } + } + asort($a_return); + return($a_return); + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + $class= get_class($this); + $o_source = new $class($this->config,$source['dn']); + foreach($this->CopyPasteVars as $attr){ + $this->$attr = $o_source->$attr; + } + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + $this->uid = $_POST['cn']; + } + } + + + /* Generates ListBox frienly output of used logonscripts + */ + function printOutLogonScripts() + { + $a_return = array(); + if(is_array($this->gotoLogonScripts)){ + foreach($this->gotoLogonScripts as $script){ + $a_return[$script['LogonName']]= $script['LogonPriority']." - ".$script['LogonName']; + } + } + return($a_return); + } + + + function multiple_execute() + { + /* Reset header toggle */ + $this->is_account = TRUE; + return($this->execute()); + } + + + /* Initialize plugin with given atribute arrays + */ + function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + + /* Prepare Shares */ + if((isset($this->multi_attrs_all['gotoShare']))&&(is_array($this->multi_attrs_all['gotoShare']))){ + unset($this->multi_attrs_all['gotoShare']['count']); + foreach($this->multi_attrs_all['gotoShare'] as $share){ + $tmp = $tmp2 = array(); + $tmp = split("\|",$share); + $tmp2['server'] =$tmp[0]; + $tmp2['name'] =$tmp[1]; + + /* Decode base64 if needed */ + if (!preg_match('%/%', $tmp[2])){ + $tmp2['mountPoint'] =base64_decode($tmp[2]); + } else { + $tmp2['mountPoint'] =$tmp[2]; + } + + if(isset($tmp[3])){ + $tmp2['PwdHash'] =$tmp[3]; + }else{ + $tmp2['PwdHash'] =""; + } + if(isset($tmp[4])){ + $tmp2['Username'] =$tmp[4]; + }else{ + $tmp2['Username'] =""; + } + $tmp2['UsedByAllUsers'] = FALSE; + $this->gotoShares[$tmp[1]."|".$tmp[0]]=$tmp2; + } + } + + /* Prepare Shares */ + if((isset($this->multi_attrs['gotoShare']))&&(is_array($this->multi_attrs['gotoShare']))){ + unset($this->multi_attrs['gotoShare']['count']); + foreach($this->multi_attrs['gotoShare'] as $share){ + $tmp = $tmp2 = array(); + $tmp = split("\|",$share); + $tmp2['server'] =$tmp[0]; + $tmp2['name'] =$tmp[1]; + + /* Decode base64 if needed */ + if (!preg_match('%/%', $tmp[2])){ + $tmp2['mountPoint'] =base64_decode($tmp[2]); + } else { + $tmp2['mountPoint'] =$tmp[2]; + } + + if(isset($tmp[3])){ + $tmp2['PwdHash'] =$tmp[3]; + }else{ + $tmp2['PwdHash'] =""; + } + if(isset($tmp[4])){ + $tmp2['Username'] =$tmp[4]; + }else{ + $tmp2['Username'] =""; + } + $tmp2['UsedByAllUsers'] = TRUE; + $this->gotoShares[$tmp[1]."|".$tmp[0]]=$tmp2; + } + } + + + /* prepare LogonScripts */ + if((isset($this->multi_attrs_all['gotoLogonScript']))&&(is_array($this->multi_attrs_all['gotoLogonScript']))){ + unset($this->multi_attrs_all['gotoLogonScript']['count']); + foreach($this->multi_attrs_all['gotoLogonScript'] as $device){ + $tmp = $tmp2 = array(); + $tmp = split("\|",$device); + $tmp2['LogonName'] = $tmp[0]; + $tmp2['LogonPriority'] = $tmp[2]; + if(preg_match("/O/i",$tmp[1])){ + $tmp2['LogonOverload'] = "O"; + }else{ + $tmp2['LogonOverload'] = ""; + } + if(preg_match("/L/i",$tmp[1])){ + $tmp2['LogonLast'] = "L"; + }else{ + $tmp2['LogonLast'] = ""; + } + $tmp2['LogonData'] = base64_decode($tmp[3]); + $tmp2['LogonDescription'] = $tmp[4]; + $tmp2['UsedByAllUsers'] = FALSE; + $this->gotoLogonScripts[$tmp[0]]=$tmp2; + } + } + + /* prepare LogonScripts */ + if((isset($this->multi_attrs['gotoLogonScript']))&&(is_array($this->multi_attrs['gotoLogonScript']))){ + unset($this->multi_attrs['gotoLogonScript']['count']); + foreach($this->multi_attrs['gotoLogonScript'] as $device){ + $tmp = $tmp2 = array(); + $tmp = split("\|",$device); + $tmp2['LogonName'] = $tmp[0]; + $tmp2['LogonPriority'] = $tmp[2]; + if(preg_match("/O/i",$tmp[1])){ + $tmp2['LogonOverload'] = "O"; + }else{ + $tmp2['LogonOverload'] = ""; + } + if(preg_match("/L/i",$tmp[1])){ + $tmp2['LogonLast'] = "L"; + }else{ + $tmp2['LogonLast'] = ""; + } + $tmp2['LogonData'] = base64_decode($tmp[3]); + $tmp2['LogonDescription'] = $tmp[4]; + $tmp2['UsedByAllUsers'] = TRUE; + $this->gotoLogonScripts[$tmp[0]]=$tmp2; + } + } + + /* Prepare hotplugs */ + if(isset($this->multi_attrs_all['gotoHotplugDeviceDN']) && is_array($this->multi_attrs_all['gotoHotplugDeviceDN'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + for($i = 0 ; $i < $this->multi_attrs_all['gotoHotplugDeviceDN']['count'] ; $i ++){ + $ldap->cat($this->multi_attrs_all['gotoHotplugDeviceDN'][$i]); + if($ldap->count()){ + $multi_attrs_all = $ldap->fetch(); + + if(isset($multi_attrs_all['gotoHotplugDevice'][0])){ + $tmp = preg_split("/\|/",$multi_attrs_all['gotoHotplugDevice'][0]); + $tmp2 = array(); + $tmp2['name'] = $multi_attrs_all['cn'][0]; + $tmp2['description'] = $tmp[0]; + $tmp2['id'] = $tmp[1]; + $tmp2['produkt'] = $tmp[2]; + $tmp2['vendor'] = $tmp[3]; + $tmp2['dn'] = $multi_attrs_all['dn']; + $tmp2['UsedByAllUsers'] = FALSE; + $this->gotoHotplugDevices[$tmp2['dn']] = $tmp2; + } + } + } + } + + /* Prepare hotplugs */ + if(isset($this->multi_attrs['gotoHotplugDeviceDN']) && is_array($this->multi_attrs['gotoHotplugDeviceDN'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + for($i = 0 ; $i < $this->multi_attrs['gotoHotplugDeviceDN']['count'] ; $i ++){ + $ldap->cat($this->multi_attrs['gotoHotplugDeviceDN'][$i]); + if($ldap->count()){ + $multi_attrs = $ldap->fetch(); + + if(isset($multi_attrs['gotoHotplugDevice'][0])){ + $tmp = preg_split("/\|/",$multi_attrs['gotoHotplugDevice'][0]); + $tmp2 = array(); + $tmp2['name'] = $multi_attrs['cn'][0]; + $tmp2['description'] = $tmp[0]; + $tmp2['id'] = $tmp[1]; + $tmp2['produkt'] = $tmp[2]; + $tmp2['vendor'] = $tmp[3]; + $tmp2['dn'] = $multi_attrs['dn']; + $tmp2['UsedByAllUsers'] = TRUE; + $this->gotoHotplugDevices[$tmp2['dn']] = $tmp2; + } + } + } + } + $this->gotoHotplugDevices = array_values($this->gotoHotplugDevices); + for($i = 0 ; $i < strlen($this->gotoProfileFlags) ; $i ++){ + $chr = $this->gotoProfileFlags[$i]; + $name = "gotoProfileFlag".$chr; + $this->$name=$chr; + } + $this->update_kiosk_profiles(); + $this->gotoKioskProfile= preg_replace("/^.*\//i","",$this->gotoKioskProfile); + + if((!empty($this->gotoProfileServer))||($this->gotoProfileFlagC=="C")){ + $this->useProfile = true; + }else{ + $this->useProfile = false; + } + + } + + + function set_multi_edit_values($attrs) + { + $shares = $this->gotoShares; + $scripts= $this->gotoLogonScripts; + $plugs= $this->gotoHotplugDevices; + plugin::set_multi_edit_values($attrs); + + $this->gotoShares = $shares; + $this->gotoLogonScripts = $scripts; + $this->gotoHotplugDevices = $plugs; + + foreach($attrs['gotoShares'] as $name => $share){ + if($share['UsedByAllUsers'] == TRUE){ + $this->gotoShares[$name] = $share; + } + } + foreach($this->gotoShares as $name => $share){ + if(!isset($attrs['gotoShares'][$name])){ + unset($this->gotoShares[$name]); + } + } + foreach($attrs['gotoLogonScripts'] as $name => $script){ + if($script['UsedByAllUsers'] == TRUE){ + $this->gotoLogonScripts[$name] = $script; + } + } + foreach($this->gotoLogonScripts as $name => $script){ + if(!isset($attrs['gotoLogonScripts'][$name])){ + unset($this->gotoLogonScripts[$name]); + } + } + $tmp = array(); + foreach($this->gotoHotplugDevices as $entry){ + $tmp[$entry['dn']] = $entry; + } + + foreach($attrs['gotoHotplugDevices'] as $name => $plug){ + if($plug['UsedByAllUsers'] == TRUE){ + $tmp[$plug['dn']] = $plug; + } + } + foreach($tmp as $name => $plug){ + $found = false; + foreach($attrs['gotoHotplugDevices'] as $test){ + if($test['dn'] == $name){ + $found = true; + } + } + if(!$found){ + unset($tmp[$name]); + } + } + } + + + /* Return selected values for multiple edit */ + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + $ret['gotoShares'] = $this->gotoShares; + $ret['gotoLogonScripts'] = $this->gotoLogonScripts; + $ret['gotoHotplugDevices'] = $this->gotoHotplugDevices; + + if(in_array("gotoPrinter",$this->multi_boxes)){ + $ret['gotoPrinter'] = $this->gotoPrinter; + $ret['gotoPrinterSel'] = $this->gotoPrinterSel; + $ret['gosaDefaultPrinter'] = $this->gosaDefaultPrinter; + + /* Force printer reset */ + $ret['add_del_printer_member_was_called'] = TRUE; + } + + if(in_array("gotoProfileFlagL",$this->multi_boxes)){ + $ret['gotoProfileFlagL'] = $this->gotoProfileFlagL; + } + + if(in_array("useProfile",$this->multi_boxes)){ + $ret['useProfile']=$this->useProfile; + if(in_array("gotoProfileServer",$this->multi_boxes)){ + $ret['gotoProfileServer']=$this->gotoProfileServer; + } + if(in_array("gotoProfileQuota",$this->multi_boxes)){ + $ret['gotoProfileQuota']=$this->gotoProfileQuota; + } + if(in_array("gotoProfileFlagC",$this->multi_boxes)){ + $ret['gotoProfileFlagC'] = $this->gotoProfileFlagC; + } + } + if(in_array("gotoXResolution",$this->multi_boxes)){ + $ret['gotoXResolution'] = $this->gotoXResolution; + } + if(in_array("kiosk_server",$this->multi_boxes)){ + $ret['gotoKioskProfile_Server'] = $this->gotoKioskProfile_Server; + $ret['gotoKioskProfile_Profile'] = $this->gotoKioskProfile_Profile; + } + return($ret); + } + + + function multiple_check() + { + $message = plugin::multiple_check(); + $this->detect_grouptype(); + + if(preg_match("/[^0-9]/",$this->gotoProfileQuota) && in_array("gotoProfileQuota",$this->multi_boxes)) { + $message[] = msgPool::invalid(_("Profile quota"),$this->gotoProfileQuota,"/[0-9]/") ; + } + return($message); + } + + + function multiple_save_object() + { + if(isset($_POST['environment_multiple_posted'])){ + plugin::multiple_save_object(); + + if(isset($_POST['useProfile'])){ + $this->useProfile = true; + }else{ + $this->useProfile = false; + } + if(isset($_POST['gotoProfileFlagC'])){ + $this->gotoProfileFlagC = $_POST['gotoProfileFlagC']; + }else{ + $this->gotoProfileFlagC = false; + } + + if(isset($_POST['gotoProfileFlagL'])){ + $this->gotoProfileFlagL = $_POST['gotoProfileFlagL']; + }else{ + $this->gotoProfileFlagL = false; + } + + foreach(array("gotoProfileFlagL","gotoPrinter","kiosk_server","gotoXResolution", + "useProfile","gotoProfileServer","gotoProfileQuota","gotoProfileFlagC") as $attr){ + $uattr = "use_".$attr; + if(isset($_POST[$uattr])){ + $this->multi_boxes[] = $attr; + } + } + if(isset($_POST['kiosk_server'])){ + $tmp = $_POST['kiosk_server']; + if(isset($this->gotoKioskProfiles['SERVERS'][$tmp])){ + $this->gotoKioskProfile_Server = $_POST['kiosk_server']; + } + } + if(isset($_POST['kiosk_profile'])){ + $tmp = $_POST['kiosk_profile']; + if(in_array($tmp,$this->gotoKioskProfiles['BY_SERVER'][$this->gotoKioskProfile_Server])){ + $this->gotoKioskProfile_Profile = $_POST['kiosk_profile']; + } + } + + } + } + + /* Return plugin informations for acl handling +#FIXME these ACLs should work for groups too */ + static function plInfo() + { + return (array("plShortName" => _("Environment"), + "plDescription" => _("Environment settings"), // Description + "plSelfModify" => TRUE, + "plDepends" => array("user", "posixAccount"), // This plugin depends on + "plPriority" => 3, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users", + "groups"), + "plOptions" => array("resolution_hook" => array("type" => "string", + "description" => _("Command to extend the list of possible screen resolutions"))), + + "plProvidedAcls" => array( + + "gotoProfileServer" => _("Profile server") , + "gotoProfileQuota" => _("Profile quota") , + "gotoProfileFlagC" => _("Cache profile localy") , + "gotoShare" => _("Shares"), + "gotoHotplugDevice" => _("Hotplug devices"), + "gotoKioskProfile" => _("Kiosk profile") , + "gotoProfileFlagL" => _("Resolution changeable during session") , + "gotoXResolution" => _("Resolution") , + "gotoLogonScript" => _("Logon script")) + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/personal/environment/class_hotplugDialog.inc b/trunk/gosa-plugins/goto/personal/environment/class_hotplugDialog.inc new file mode 100644 index 000000000..7719fdb06 --- /dev/null +++ b/trunk/gosa-plugins/goto/personal/environment/class_hotplugDialog.inc @@ -0,0 +1,119 @@ +skipThese = $skipThese; + $this->config = $config; + $this->depselect = session::get('CurrentMainBase'); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + if(isset($_POST['dialogissubmitted'])){ + $this->regex=$_POST['regexHot']; + $this->depselect = $_POST['depselectHot']; + } + + if((isset($_GET['search']))&&(!empty($_GET['search']))){ + $this->regex=$_GET['search']."*"; + $this->regex=preg_replace("/\*\*/","*",$this->regex); + } + + $this->deplist=$this->config->idepartments; + + $this->hotplugDevices = $this->getHotplugs(); + $smarty->assign("regexHot" ,$this->regex); + $smarty->assign("deplistHot" ,$this->deplist); + $smarty->assign("depselectHot",$this->depselect); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("deplist", $this->config->idepartments); + + + $smarty->assign("hotplugDevices",$this->hotplugDevices); + $smarty->assign("hotplugDeviceKeys",array_flip($this->hotplugDevices)); + $display.= $smarty->fetch(get_template_path('hotplugDialog.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + function check(){ + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(empty($_POST['hotplugName'])){ + $message[] = _("Please select a hotplug device!"); + } + return $message; + } + + + /* Save to LDAP */ + function save() + { + $entries = array(); + foreach($_POST['hotplugName'] as $name){ + $entries[$name] = $this->hotplugDeviceList[$name]; + } + + return $entries; + } + + function getHotplugs() + { + $ldap= $this->config->get_ldap_link(); + $ldap->cd(get_ou('deviceRDN').$this->depselect); + $ldap->search("(&(objectClass=gotoDevice)(|(cn=".$this->regex.")(description=".$this->regex.")))",array("gotoHotplugDevice","cn","dn")); + + $a_return = array(); + $this->hotplugDeviceList = array(); + while($attr = $ldap->fetch()){ + + if(isset($attr['gotoHotplugDevice'][0])){ + + $hot_plug = $attr['gotoHotplugDevice'][0]; + $tmp = preg_split("/\|/",$hot_plug); + $tmp2 = array(); + + if(in_array($attr['cn'][0],$this->skipThese)){ + continue; + } + + $tmp2['name'] = $attr['cn'][0]; + $tmp2['description'] = $tmp[0]; + $tmp2['id'] = $tmp[1]; + $tmp2['produkt'] = $tmp[2]; + $tmp2['vendor'] = $tmp[3]; + $tmp2['dn'] = $attr['dn']; + + $a_return[$attr['cn'][0]]= $attr['cn'][0]." [".$tmp[0]."] ".$tmp[1]; + + $this->hotplugDeviceList[$attr['cn'][0]]=$tmp2; + } + } + uksort($a_return,"strnatcasecmp"); + return($a_return); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/personal/environment/class_logonManagementDialog.inc b/trunk/gosa-plugins/goto/personal/environment/class_logonManagementDialog.inc new file mode 100644 index 000000000..5110ab25a --- /dev/null +++ b/trunk/gosa-plugins/goto/personal/environment/class_logonManagementDialog.inc @@ -0,0 +1,134 @@ +LogonName = $data['LogonName']; + $this->LogonPriority = $data['LogonPriority']; + $this->LogonOverload = $data['LogonOverload']; + $this->LogonLast = $data['LogonLast']; + $this->LogonData = $data['LogonData']; + $this->LogonDescription = $data['LogonDescription']; + $this->nameIsEditable = false; + $this->real_LogonName = $data['LogonName']; + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + $smarty= get_smarty(); + $display= ""; + + if((isset($_POST['StartImport']))&&(isset($_FILES['importFile']))){ + $this->LogonData = file_get_contents($_FILES['importFile']['tmp_name']); + @unlink($_FILES['importFile']['tmp_name']); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + if($this->$attr){ + $smarty->assign($attr."CHK"," checked "); + }else{ + $smarty->assign($attr."CHK",""); + } + } + $prios=array(1,2,3,4,5,6,7,8,9,10); + $smarty->assign("LogonPrioritys",$prios); + $smarty->assign("LogonPriorityKeys",$prios); + + if(!$this->nameIsEditable){ + $smarty->assign("LogonNameACL"," disabled "); + }else{ + $smarty->assign("LogonNameACL",""); + } + + + $display.= $smarty->fetch(get_template_path('logonManagement.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + function save_object() + { + if(isset($_POST['dialogissubmitted'])){ + foreach($this->attributes as $attr){ + + if(!$this->nameIsEditable && $attr == 'LogonName'){ + continue; + } + if(isset($_POST[$attr])){ + $this->$attr = stripslashes($_POST[$attr]); + } + } + + foreach(array("LogonLast","LogonOverload") as $checkBoxes){ + if(isset($_POST[$checkBoxes])){ + $this->$checkBoxes = stripslashes($_POST[$checkBoxes]); + }else{ + $this->$checkBoxes = ""; + } + + } + } + } + + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(preg_match("/[^a-zA-Z]/",$this->LogonName)){ + $message[] = msgPool::invalid(_("Name"),$this->LogonName,"/[a-zA-Z]/"); + } + + if(empty($this->LogonName)){ + $message[] = msgPool::required(_("Script name")); + } + + if(preg_match("/[^a-z0-9,\.-;:_\(\)!\? ]/i",$this->LogonDescription)){ + $message[] = msgPool::required(_("Description"),$this->LogonDescription,"/[a-z0-9,\.-;:_\(\)!\? ]/i"); + } + + return $message; + } + + + function save() + { + $a_return= array(); + foreach($this->attributes as $attr){ + $a_return[$attr]=$this->$attr; + } + + if(!$this->nameIsEditable){ + $a_return['LogonName']=$this->real_LogonName; + } + + return($a_return); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/personal/environment/class_selectPrinterDialog.inc b/trunk/gosa-plugins/goto/personal/environment/class_selectPrinterDialog.inc new file mode 100644 index 000000000..71023aa93 --- /dev/null +++ b/trunk/gosa-plugins/goto/personal/environment/class_selectPrinterDialog.inc @@ -0,0 +1,159 @@ +AlreadyAssigned = $alreadyused; + plugin::plugin ($config, $dn); + + /* Get all departments within this subtree */ + $base = $this->config->current['BASE']; + + /* Add base */ + $tmp = array(); + $tmp[] = array("dn"=>$this->config->current['BASE']); + $tmp= array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $this->module, $base, + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); + + $deps = array(); + foreach($tmp as $tm){ + $deps[$tm['dn']] = $tm['dn']; + } + + + /* Load possible departments */ + $ui= get_userinfo(); + $this->ui = $ui; + $tdeps= $ui->get_module_departments("printer"); + $ids = $this->config->idepartments; + $first = ""; + $found = FALSE; + $res = array(); + foreach($ids as $dep => $name){ + if(isset($deps[$dep]) && in_array_ics($dep, $tdeps)){ + $res[$dep] = $ids[$dep]; //$tdeps[$dep]; + } + } + $this->deplist = $res; + $this->depselect = key($res); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + if(isset($_POST['dialogissubmitted'])){ + foreach(array('regexPrinter' => 'regex','depselectPrinter'=>'depselect') as $attr => $name){ + if(isset($_POST[$attr])){ + $this->$name =$_POST[$attr]; + } + } + } + + if(isset($_POST['subtrees'])){ + $this->subtreesearch= TRUE; + } else { + $this->subtreesearch= FALSE; + } + + if((isset($_GET['search']))&&(!empty($_GET['search']))){ + $this->regex=$_GET['search']."*"; + $this->regex=preg_replace("/\*\*/","*",$this->regex); + } + + $printer_list = $this->getPrinter(); + asort($printer_list); + + $smarty->assign("regexPrinter" ,$this->regex); + $smarty->assign("deplistPrinter" ,$this->deplist); + $smarty->assign("depselectPrinter",$this->depselect); + $smarty->assign("gotoPrinters",$printer_list); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("subtrees", $this->subtreesearch?"checked":""); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("deplist", $this->config->idepartments); + + $display.= $smarty->fetch(get_template_path('selectPrinterDialog.tpl', TRUE,dirname(__FILE__))); + return($display); + } + + function check(){ + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(empty($_POST['gotoPrinter'])){ + $message[] = _("Please select a printer!"); + } + return $message; + } + + /* Save to LDAP */ + function save() + { + return($_POST['gotoPrinter']); + } + + /* This function generates the Printerlist + * All printers are returned that match regex and and depselect + */ + function getPrinter($detailed = false) + { + $a_return=array(); + + + $filter = "(&(objectClass=gotoPrinter)(cn=".$this->regex."))"; + $module = $this->module; + $base = $this->depselect; + $attrs = array("cn","description"); + + if ($this->subtreesearch){ + $res = get_list($filter,$module,$base,$attrs, GL_SIZELIMIT | GL_SUBSEARCH); + } else { + $base= get_ou('printerRDN').$base; + $res = get_list($filter,$module,$base,$attrs, GL_SIZELIMIT ); + } + + foreach($res as $printer) { + $acl = $this->ui->get_permissions($printer['dn'],"printer/printgeneric","gotoUserPrinter");; + if(!preg_match("/w/",$acl)){ + continue; + } + if(isset($this->AlreadyAssigned[$printer['cn'][0]])) continue; + if($detailed ==true){ + $a_return[$printer['cn'][0]] = $printer; + }else{ + if(isset($printer['description'][0])){ + $a_return[$printer['cn'][0]] = $printer['cn'][0]." - ".$printer['description'][0]; + }else{ + $a_return[$printer['cn'][0]] = $printer['cn'][0]; + } + } + } + return($a_return); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/personal/environment/environment.tpl b/trunk/gosa-plugins/goto/personal/environment/environment.tpl new file mode 100644 index 000000000..1e27d4846 --- /dev/null +++ b/trunk/gosa-plugins/goto/personal/environment/environment.tpl @@ -0,0 +1,416 @@ +{if $is_account ne 'true'} + + {t}The environment extension is currently disabled.{/t} +{else} + + + + +

+ + {t}Profiles{/t} +

+ + + + + + +
+ + +{if $multiple_support} + + {render acl=$gotoProfileACL checkbox=$multiple_support checked=$use_useProfile} + {t}Use profile managment{/t} + {/render} +
+ {render acl=$gotoProfileServerACL checkbox=$multiple_support checked=$use_gotoProfileServer} + {t}Profil path{/t} + + {/render} +
+ {render acl=$gotoProfileQuotaACL checkbox=$multiple_support checked=$use_gotoProfileQuota} + {t}MB{/t} + {/render} +
+ {render acl=$gotoProfileFlagCACL checkbox=$multiple_support checked=$use_gotoProfileFlagC} +   + {t}Cache profile localy{/t} + {/render} + +{else} + + + + + + + + + + + +
+{render acl=$gotoProfileACL} + +{/render} + + +
  + + + + + + + + + + + + + +
+ + +{render acl=$gotoProfileServerACL} + +{if $gotoProfileServerWriteable} + +{else} + +{/if} +{/render} +
+ +
+
+
+{render acl=$gotoProfileQuotaACL} + {t}MB{/t} +{/render} +
+
+
+{render acl=$gotoProfileFlagCACL} +   +{/render} + +
+
+ +{/if} + +
+ + + +{if $kiosk_enabled } + + + + + + + + {else} + + + + +{/if} + + + + + + + +
+ +
+{if $multiple_support} + +{/if} + {t}Server{/t} +{render acl=$gotoKioskProfileACL} + +{/render} + + {if $kiosk_server != "none"} + {t}Profile{/t} +{render acl=$gotoKioskProfileACL} + +{/render} + {else} +   + {/if} +
+ + + + +
+
+{render acl=$gotoProfileFlagLACL checkbox=$multiple_support checked=$use_gotoProfileFlagL} + +{/render} + +
+{if $multiple_support} + +{/if} + + +{render acl=$gotoXResolutionACL} + +{/render} +
+ + + + + + +
+ +

 

+ + + + + + +
+

+   + +

+ + + + +
+ +{render acl=$gotoShareACL} + {$divlistShares} +{/render} +{render acl=$gotoShareACL} + @ +{/render} +{render acl=$gotoShareACL} + +{/render} + : +{render acl=$gotoShareACL} + +{/render} +{render acl=$gotoShareACL} + +{/render} + +
+
+

+   + +

+ + + + +
+{render acl=$gotoLogonScriptACL} + +{/render} + +
+{render acl=$gotoLogonScriptACL} + +{/render} +{render acl=$gotoLogonScriptACL} + +{/render} +{render acl=$gotoLogonScriptACL} + +{/render} +
+
+ +

 

+ + + + + + +
+

+   + +

+ + + + + + + +
+{render acl=$gotoHotplugDeviceACL} + +{/render} +
+{render acl=$gotoHotplugDeviceACL} + +{/render} +{render acl=$gotoHotplugDeviceACL} + +{/render} +
+
+ + +{if $multiple_support} + +

+ +   + +

+ + + +{else} + +

+   + +

+ + + + +
+{render acl=$gotoPrinterACL} + +{/render} +
+{render acl=$gotoPrinterACL} + +{/render} +{render acl=$gotoPrinterACL} + +{/render} +{render acl=$gotoPrinterACL} + +{/render} +{render acl=$gosaDefaultPrinterACL} + +{/render} +
+ +{/if} + +
+{if $multiple_support} + +{/if} + +{/if} + diff --git a/trunk/gosa-plugins/goto/personal/environment/hotplugDialog.tpl b/trunk/gosa-plugins/goto/personal/environment/hotplugDialog.tpl new file mode 100644 index 000000000..689ea74bd --- /dev/null +++ b/trunk/gosa-plugins/goto/personal/environment/hotplugDialog.tpl @@ -0,0 +1,70 @@ +

 {t}Add hotplug devices{/t}

+ + + + + + + + + + +
+
+

+ +

+
+
+

+
+

+
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + +
+   + +
+ + + + + +
+ + + +
+ {$apply} +
+
+ +

 

+ +

+ + +

+ diff --git a/trunk/gosa-plugins/goto/personal/environment/logonManagement.tpl b/trunk/gosa-plugins/goto/personal/environment/logonManagement.tpl new file mode 100644 index 000000000..647516ca6 --- /dev/null +++ b/trunk/gosa-plugins/goto/personal/environment/logonManagement.tpl @@ -0,0 +1,84 @@ +

 {t}Logon script management{/t}

+ + + + + + + + +
+ + + + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ + + + + + + +
+ + +
+ + +
+
+

 

+ + + + +
+

 {t}Script{/t}

+ + + + + + + +
+ +
+ + +
+
+ +

 

+

+ + +

+ + + diff --git a/trunk/gosa-plugins/goto/personal/environment/main.inc b/trunk/gosa-plugins/goto/personal/environment/main.inc new file mode 100644 index 000000000..141322066 --- /dev/null +++ b/trunk/gosa-plugins/goto/personal/environment/main.inc @@ -0,0 +1,139 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('environment'); + session::un_set('edit'); + +}else{ + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + session::un_set ('edit'); + session::un_set ('environment'); + } + + /* Create mail object on demand */ + if (!session::is_set('environment') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $environment= new environment ($config, $ui->dn); + $environment->enable_CSN_check(); + $environment->set_acl_category('users'); + $environment->set_acl_base($ui->dn); + session::set('environment',$environment); + } + $environment = session::get('environment'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $environment->save_object (); + } + + /* Enter edit mode? */ + if (isset($_POST['edit']) || isset($_POST['delete_lock'])){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $environment->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $environment->save (); + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Remove object */ + session::un_set ('environment'); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + if($lock_msg){ + $display = $lock_msg; + }else{ + $display = $environment->execute(); + } + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('environment',$environment); + } + + $info= ""; + /* Show page footer depending on the mode */ + if (!$environment->in_dialog && !$environment->dialog && $environment->is_account && empty($lock_msg)){ + $display.= "

"; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + $info= "\"\" ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/environment"))){ + $info.= "\"\" ".msgPool::clickEditToChange(); + $display.= "\n"; + } + $display.= "\n"; + } + $display.= "

\n"; + } + + /* Page header*/ + $display= print_header(get_template_path('plugins/goto/images/plugin.png'), _("User environment settings"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/goto/personal/environment/selectPrinterDialog.tpl b/trunk/gosa-plugins/goto/personal/environment/selectPrinterDialog.tpl new file mode 100644 index 000000000..02bb97bab --- /dev/null +++ b/trunk/gosa-plugins/goto/personal/environment/selectPrinterDialog.tpl @@ -0,0 +1,72 @@ +

 {t}Add printer devices{/t}

+ + + + + + + + +
+
+

+ +

+
+
+

+
+

+
+
+
+

[F]{t}Filters{/t}

+
+
+ + {$alphabet} +
+ + + + +
+   + +
+ + +
+ {t}Search in subtrees{/t} +
+ + + + + +
+ + + +
+ {$apply} +
+
+ +

 

+

+ + +

+ diff --git a/trunk/gosa-plugins/goto/plugin.dsc b/trunk/gosa-plugins/goto/plugin.dsc new file mode 100644 index 000000000..88dc49692 --- /dev/null +++ b/trunk/gosa-plugins/goto/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = goto +description = "GOto desktop management plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = systems diff --git a/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/class_goKrbServer.inc b/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/class_goKrbServer.inc new file mode 100644 index 000000000..5f153e67e --- /dev/null +++ b/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/class_goKrbServer.inc @@ -0,0 +1,399 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goKrbServer"); + var $attributes = array("goKrbRealm"); + var $StatusFlag = "goKrbServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goKrbServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $goKrbServerStatus= ""; + var $cn = ""; + var $goKrbRealm = ""; + var $view_logged = FALSE; + + var $policies = array(); + var $id = -1; + var $macAddress = "" ; + + + /*! \brief Initializes the kerberos service + @param Object GOsa configuration object. + @param String The object dn we are currently editing. + @param Object The parent object. + */ + public function goKrbServer(&$config,$dn,$parent) + { + goService::goService($config,$dn); + $this->DisplayName = _("Kerberos service"); + $this->parent = $parent; + + /* Detect macAddress of this device + */ + $this->macAddress = ""; + if(isset($this->parent->parent->netConfigDNS->macAddress)){ + $this->macAddress = &$this->parent->parent->netConfigDNS->macAddress; + } + + /* Get configured policies + */ + if(!empty($this->macAddress) && $this->is_account){ + $o = new gosaSupportDaemon(); + $tmp = $o->krb5_list_policies($this->macAddress); + if($o->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + }else{ + $this->policies = array(); + foreach($tmp as $policy){ + $this->policies[] = array("NAME" => $policy,"STATUS" => "LOADED","DATA" => array()); + } + } + } + } + + + /*! \brief Create HTML output + @return String HMTL output. + */ + public function execute() + { + $smarty = get_smarty(); + + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /******* + Display sub dialogs + *******/ + + /* CANCEL Policy dialog + */ + if(isset($_POST['cancel_policy'])){ + $this->dialog = NULL; + } + + /* SAVE Policy dialog + */ + if($this->dialog instanceof krb5_policy && isset($_POST['save_policy'])){ + $this->dialog->save_object(); + $msgs = $this->dialog->check(); + if(count($msgs)){ + msg_dialog::displayChecks($msgs); + }else{ + $this->AddPolicy($this->id,$this->dialog->save()); + $this->dialog = NULL; + } + } + + /* DISPLAY policy dialog + */ + if($this->dialog instanceof krb5_policy){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + /******* + Create HTML output for this plugin + *******/ + + $tmp = $this->plinfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + $divlist = new divSelectBox("Kerberos Policies"); + $action = ""; + $action .= ""; + foreach($this->policies as $key => $policy){ + if($policy['STATUS'] == "REMOVED") continue; + + $actions = preg_replace("/%id/",$key,$action); + $field1 = array("string" => $policy['NAME']); + $field3 = array("string" => $actions, + "attach"=>"style='width:40px; text-align:right; border:0px;'"); + + $divlist->AddEntry(array($field1,$field3)); + } + + $smarty->assign("divlist",$divlist->DrawList()); + return($smarty->fetch(get_template_path("goKrbServer.tpl",TRUE,dirname(__FILE__)))); + } + + + /* \brief Return serice informations, which will be shown in the service overview. + @return Array Some service information. + */ + public function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Kerberos service (kadmin access informations)"); + $fields['AllowEdit'] = true; + return($fields); + } + + + /*! \brief Checks if all given values are valid + @return Array An array containing all error messages. + */ + public function check() + { + $message = plugin::check(); + if (empty($this->goKrbRealm)){ + $message[]= msgPool::required(_("Realm")); + } + if(count($this->policies) && (empty($this->macAddress) || !tests::is_mac($this->macAddress))){ + $message[] = _("In order to save policy changes, the server requires a valid mac address."); + } + return($message); + } + + + /*! \brief Adds or updated a given policy. + @param Integer ID The policy to update, or -1 if it is a new one. + @param Array The policy settings. + */ + public function AddPolicy($id,$policy) + { + if($id != -1 && $this->policies[$id]['NAME'] == $policy['NAME']){ + + /* Policy was edited + */ + if($this->policies[$id]['STATUS'] == "LOADED"){ + $policy['STATUS'] = "EDITED"; + }else{ + $policy['STATUS'] = $this->policies[$id]['STATUS']; + } + $this->policies[$this->id] = $policy; + + }elseif($id != -1 && $this->policies[$id]['NAME'] != $policy['NAME']){ + + /* Policy was renamed, remove old and add new policy + */ + $this->RemovePolicy($id); + $this->AddPolicy(-1,$policy); + }else{ + + /* Policy was added + */ + $name = $policy['NAME']; + + /* Check if there is already a policy with this name + which was removed before + */ + foreach($this->policies as $pid => $entry){ + if($entry['NAME'] == $name && $entry['STATUS'] == "REMOVED"){ + $id = $pid; + break; + } + } + + /* Update existing policy or create new one + */ + if(isset($this->policies[$id])){ + $policy['STATUS'] = "EDITED"; + $this->policies[$id] = $policy; + }else{ + $policy['STATUS'] = "ADDED"; + $this->policies[] = $policy; + } + } + } + + + /*! \brief Returns all used policy names. + @return Array A list of used policy names. + */ + public function getPolicyNames() + { + $ret = array(); + foreach($this->policies as $policy){ + if($policy['STATUS'] == "REMOVED") continue; + $ret[] = $policy['NAME']; + } + return($ret); + } + + + /*! \brief Marks a policy as remvoed + @param Integer the Id of the policy to remove + */ + public function RemovePolicy($id) + { + /* Load policy information, if not done before + */ + if($this->policies[$id]['STATUS'] == "LOADED" && empty($this->policies[$id]['DATA'])){ + $o = new gosaSupportDaemon(); + $this->policies[$id]['DATA'] = $o->krb5_get_policy($this->macAddress,$this->policies[$id]['NAME']); + } + if($this->policies[$id]['DATA']['POLICY_REFCNT']){ + msg_dialog::display(_("Remove"),msgPool::stillInUse(_("Policy")),ERROR_DIALOG) ; + }else{ + if($this->policies[$id]['STATUS'] == "ADDED"){ + unset($this->policies[$id]); + }else{ + $this->policies[$id]['STATUS'] = "REMOVED"; + } + } + } + + + /*! \brief Save POSTed html variables + */ + public function save_object() + { + if(isset($_POST['goKrbServerPosted'])){ + plugin::save_object(); + + /* Add new Policy requested + */ + if(isset($_POST['policy_add'])){ + $this->dialog = new krb5_policy($this->config,array(),$this); + $this->id = -1; + } + + /* Walk through POSTs an check for image-button posts + */ + foreach($_POST as $name => $value){ + + /* Remove policy requested + */ + if(preg_match("/^policy_del/",$name)){ + $id = preg_replace("/^policy_del_([0-9]*)_.*/i","\\1",$name); + if(isset($this->policies[$id])){ + $this->RemovePolicy($id); + } + break; + } + + /* Edit Policy requested + */ + if(preg_match("/^policy_edit/",$name)){ + $id = preg_replace("/^policy_edit_([0-9]*)_.*/i","\\1",$name); + if(isset($this->policies[$id])){ + + /* Load policy information, if not done before + */ + if($this->policies[$id]['STATUS'] == "LOADED" && empty($this->policies[$id]['DATA'])){ + $o = new gosaSupportDaemon(); + $this->policies[$id]['DATA'] = $o->krb5_get_policy($this->macAddress,$this->policies[$id]['NAME']); + } + + /* Open dialog */ + $this->id = $id; + $this->dialog = new krb5_policy($this->config,$this->policies[$id], $this); + } + break; + } + } + } + } + + + /*! \brief Save changes to ldap + */ + public function save() + { + goService::save(); + + /* Send policy changes back to the si daemon + */ + $actions = array("del" => array(),"add_edit" => array()); + foreach($this->policies as $policy){ + + /* Unset not used vars */ + if(isset($policy['DATA']['MASK'])) unset($policy['DATA']['MASK']); + if(isset($policy['DATA']['POLICY_REFCNT'])) unset($policy['DATA']['POLICY_REFCNT']); + + switch($policy['STATUS']){ + case "REMOVED" : $actions['del'] [] = $policy;break; + case "ADDED" : + case "EDITED" : $actions['add_edit'] [] = $policy;break; + } + } + + $o = new gosaSupportDaemon(); + $policies = $o->krb5_list_policies($this->macAddress); + + /* Send remove policy event + */ + foreach($actions['del'] as $policy){ + if(!in_array($policy['NAME'],$policies)) continue; + if(!$o->krb5_del_policy($this->macAddress,$policy['NAME'])){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + } + } + + /* Send add new/edit policy event + */ + foreach($actions['add_edit'] as $policy){ + if(in_array($policy['NAME'],$policies)){ + if(!$o->krb5_set_policy($this->macAddress,$policy['NAME'],$policy['DATA'])){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + } + }else{ + if(!$o->krb5_add_policy($this->macAddress,$policy['NAME'],$policy['DATA'])){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + } + } + } + } + + + /*! \brief Return plugin informations for acl handling + @return Array ACL infos. + */ + static function plInfo() + { + return (array( + "plShortName" => _("Kerberos"), + "plDescription" => _("Kerberos access information")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 95, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "goKrbPolicy" => _("Policies"), + "goKrbRealm" => _("Realm")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/class_password-methods-heimdal.inc b/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/class_password-methods-heimdal.inc new file mode 100644 index 000000000..6e59f90aa --- /dev/null +++ b/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/class_password-methods-heimdal.inc @@ -0,0 +1,420 @@ +"initial" , + "1"=>"forwardable" , + "2"=>"proxiable" , + "3"=>"renewable" , + "4"=>"postdate" , + "5"=>"server" , + "6"=>"client" , + "7"=>"invalid" , + "8"=>"require-preauth" , + "9"=>"change-pw" , + "10"=>"require-hwauth" , + "11"=>"ok-as-delegate" , + "12"=>"user-to-user" , + "13"=>"immutable"); + var $krb5KDCFlags = 123; + + var $dn = "new"; + var $parent_dn = "new"; + var $attributes = array("krb5MaxLife","krb5MaxRenew","krb5KDCFlags", + "krb5ValidStart","krb5ValidEnd","krb5PasswordEnd"); + var $attrs = array(); + var $is_account = FALSE; + + function passwordMethodheimdal(&$config,$dn = "new") + { + $this->config= $config; + $this->parent_dn = $dn; + + $this->is_account = FALSE; + $this->krb5MaxLife = 86400; + $this->krb5MaxRenew = 604800; + $this->krb5ValidStart = date("Ymd",time())."0000Z"; + $this->krb5ValidEnd = date("Ymd",time())."0000Z"; + $this->krb5PasswordEnd= date("Ymd",time())."0000Z"; + + if(!is_object($config)){ + return; + } + + + /* Load existing entries */ + if($dn != "new"){ + $ldap = $this->config->get_ldap_link(); + + $ldap->cd($dn); + $ldap->ls("objectClass=krb5Principal",$dn,array("*")); + if($ldap->count()==1){ + $this->is_account = TRUE; + $this->attrs = $ldap->fetch(); + $this->dn = $this->attrs['dn']; + foreach($this->attributes as $attr){ + if(isset($this->attrs[$attr][0])){ + $this->$attr = $this->attrs[$attr][0]; + }else{ + $this->$attr = ""; + } + } + $date_values = array("krb5ValidStart","krb5ValidEnd","krb5PasswordEnd"); + foreach($date_values as $date_val){ + $clear = $date_val."_clear"; + if(empty($this->$date_val)){ + $this->$clear = TRUE; + }else{ + $this->$clear = FALSE; + } + } + }elseif($ldap->count() >= 2){ + new msg_dialog(_("Heimdal"),sprintf(_("Error loading heimdal configuration, more than one configuration entry was found for '%s'."),$this->parent_dn)); + } + } + } + + + function is_available() + { + global $config; + + /* If we have a running SI-Server which support kerberos support + skip this ldap based method. + Only method can win. + */ + if(class_available("passwordMethodMIT")){ + $tmp = new passwordMethodMIT($config); + if($tmp->is_available()) return(FALSE); + } + + $cmd = ""; + if($this->config->get_cfg_value("heimdal_keygen") != ""){ + $cmd = $this->config->get_cfg_value("heimdal_keygen"); + if(!check_command($cmd)){ + new msg_dialog(_("Heimdal"), msgPool::cmdinvalid("HEIMDAL_KEYGEN",$cmd,_("Heimdal")),WARNING_DIALOG); + } + } + if(isset($config->data['SERVERS']['KERBEROS']['REALM']) && check_command($cmd)){ + return TRUE; + }else{ + return FALSE; + } + } + + + function generate_hash($pwd) + { + $mode= "kerberos"; + if ($this->config->get_cfg_value("useSaslForKerberos") == "true"){ + $mode= "sasl"; + } + + return "{".$mode."}".$this->attrs['uid'][0]."@".$cfg= $this->config->data['SERVERS']['KERBEROS']['REALM']; + } + + + function remove_from_parent() + { + if($this->is_account && $this->dn != "new"){ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("dn")); + if($ldap->count()){ + $ldap->rmdir($this->dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + } + } + } + + + function set_password($password) + { + #TODO + # Add or modify kerberos entry below $this->dn + # See https://oss.gonicus.de/labs/gosa/ticket/223 + # Order: create entries, then call the heimdal_keygen hook with the realm (returned by generate_hash) + # to let it add the missing kerberos keys. + + global $config; + $cmd = ""; + if($this->config->get_cfg_value("heimdal_keygen") != ""){ + $cmd = $this->config->get_cfg_value("heimdal_keygen"); + if(!check_command($cmd)){ + new msg_dialog(_("Heimdal"), msgPool::cmdinvalid("HEIMDAL_KEYGEN",$cmd,_("Heimdal")),WARNING_DIALOG); + } + } + if ($cmd != ""){ + + /* Display in error message */ + $cmdd = $cmd." '".$this->generate_hash($password)."' 'PASSWORD'"; + + /* Execute command and check return value */ + $cmd = $cmd." '".$this->generate_hash($password)."' '".$password."'" ; + exec($cmd,$out,$res); + if($res != 0){ + new msg_dialog(_("Heimdal"), msgPool::cmdexecfailed("HEIMDAL_KEYGEN",$cmd,_("Heimdal")),WARNING_DIALOG); + } + } + return(TRUE); + } + + + function get_hash_name() + { + $mode= "kerberos"; + if ($this->config->get_cfg_value("useSaslForKerberos") == "true"){ + $mode= "sasl"; + } + return "$mode"; + } + + + function is_configurable() + { + return TRUE; + } + + + function configure() + { + $this->save_object(); + + /* Cancel heimdal options */ + if (isset($_POST['pw_abort'])){ + return ""; + } + + /* Cancel heimdal options */ + if (isset($_POST['pw_save'])){ + $msgs = $this->check(); + if(count($msgs)){ + foreach($msgs as $msg){ + msg_dialog::display(_("Heimdal"),$msg,WARNING_DIALOG); + } + }else{ + $this->display = FALSE; + return ""; + } + } + + $years = array(); + $start = date("Y")-1; + for($i = $start; $i < ($start +20) ; $i++){ + $years[$i] = $i; + } + $month= array(); + for($i = 1; $i <= 12 ; $i++){ + $month[str_pad($i,2,"0",STR_PAD_LEFT)] = $i; + } + $days= array(); + for($i = 1; $i <= 31 ; $i++){ + $days[str_pad($i,2,"0",STR_PAD_LEFT)] = $i; + } + $hours= array(); + for($i = 0; $i <= 23 ; $i++){ + $hours[str_pad($i,2,"0",STR_PAD_LEFT)] = $i; + } + $minutes= array(); + for($i = 0; $i <= 59 ; $i++){ + $minutes[str_pad($i,2,"0",STR_PAD_LEFT)] = $i; + } + + + $smarty = get_smarty(); + $smarty->assign("years",$years); + $smarty->assign("month",$month); + $smarty->assign("days",$days); + $smarty->assign("hours",$hours); + $smarty->assign("minutes",$minutes); + + $date_values = array("krb5ValidStart","krb5ValidEnd","krb5PasswordEnd"); + foreach($date_values as $date_val){ + $clear = $date_val."_clear"; + $smarty->assign($date_val."_clear",$this->$clear); + $smarty->assign($date_val."_y",substr($this->$date_val,0,4)); + $smarty->assign($date_val."_m",substr($this->$date_val,4,2)); + $smarty->assign($date_val."_d",substr($this->$date_val,6,2)); + $smarty->assign($date_val."_h",substr($this->$date_val,8,2)); + $smarty->assign($date_val."_i",substr($this->$date_val,10,2)); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr ,$this->$attr); + } + foreach($this->flag_list as $key => $name){ + $val = pow(2,$key); + if($this->krb5KDCFlags & $val){ + $smarty->assign("krb5KDCFlags_".$key,TRUE); + }else{ + $smarty->assign("krb5KDCFlags_".$key,FALSE); + } + } + + return($smarty->fetch(get_template_path("pwd_heimdal.tpl"))); + } + + + function save_object() + { + if(isset($_POST['pwd_heimdal_posted'])){ + + $date_values = array("krb5ValidStart","krb5ValidEnd","krb5PasswordEnd"); + foreach($date_values as $date_value){ + $clear = $date_value."_clear"; + if(isset($_POST[$date_value."_clear"])){ + $this->$clear = TRUE; + }else{ + $this->$clear = FALSE; + $str = ""; + foreach(array("y","m","d","h","i") as $val){ + if(isset($_POST[$date_value."_".$val])){ + $str .= $_POST[$date_value."_".$val]; + } + } + $this->$date_value = $str."Z"; + } + } + + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = get_post($attr); + } + } + + $int = ""; + foreach($this->flag_list as $key => $name){ + $post = "krb5KDCFlags_".$key; + if(isset($_POST[$post])){ + $int |= pow(2,$key); + } + } + $this->krb5KDCFlags = $int; + } + } + + function check() + { + $message = array(); + if(!is_numeric($this->krb5MaxLife) && !empty($this->krb5MaxLife)){ + $message[] = msgPool::invalid(_("Max life"),$this->krb5MaxLife,"/[0-9]/"); + } + if(!is_numeric($this->krb5MaxRenew) && !empty($this->krb5MaxRenew)){ + $message[] = msgPool::invalid(_("Max renew"),$this->krb5MaxRenew,"/[0-9]/"); + } + if(!$this->krb5ValidStart_clear && !$this->chk_times($this->krb5ValidStart)){ + $message[] = msgPool::invalid(_("Valid start"),$this->krb5ValidStart,"/[0-9]/"); + } + if(!$this->krb5ValidEnd_clear && !$this->chk_times($this->krb5ValidEnd)){ + $message[] = msgPool::invalid(_("Valid end"),$this->krb5ValidEnd,"/[0-9]/"); + } + if(!$this->krb5PasswordEnd_clear && !$this->chk_times($this->krb5PasswordEnd)){ + $message[] = msgPool::invalid(_("Valid password"),$this->krb5PasswordEnd,"/[0-9]/"); + } + return($message); + } + + + function chk_times($str) + { + if(preg_match("/^([0-9]){12,12}[a-z]$/i",$str)){ + return(true); + } + return(false); + } + + + function save($dn) + { + $realm = $this->config->data['SERVERS']['KERBEROS']['REALM']; + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($dn); + $ldap->cat($dn,array('uid')); + $attrs = $ldap->fetch(); + if(isset($attrs['uid'][0])){ + + $uid = $attrs['uid'][0]; + $name = $uid."@".strtoupper($realm); + $dn = "krb5PrincipalName=".$name.",".$dn; + + $data = array(); + $data['krb5PrincipalName'] = $name; + $data['objectClass'] = array("top","account","krb5Principal","krb5KDCEntry"); + $data['krb5PrincipalName'] =$name; + $data['uid'] = $uid; + $data['krb5KeyVersionNumber'] = rand(100000,99999999); + + if($this->is_account){ + foreach($this->attributes as $attr){ + $data[$attr] = array(); + } + } + + /* Append Flags */ + $data['krb5KDCFlags'] = $this->krb5KDCFlags; + if(!empty($this->krb5MaxLife)){ + $data['krb5MaxLife'] = $this->krb5MaxLife; + } + if(!empty($this->krb5MaxRenew)){ + $data['krb5MaxRenew'] = $this->krb5MaxRenew; + } + if(!$this->krb5ValidStart_clear){ + $data['krb5ValidStart'] = $this->krb5ValidStart; + } + if(!$this->krb5ValidEnd_clear){ + $data['krb5ValidEnd'] = $this->krb5ValidEnd; + } + if(!$this->krb5PasswordEnd_clear){ + $data['krb5PasswordEnd']= $this->krb5PasswordEnd; + } + + /* Add / Updated data */ + $ldap->cd($dn); + if(!$this->is_account){ + $ldap->add($data); + }else{ + $ldap->modify($data); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, 0, get_class())); + } + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/goKrbServer.tpl b/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/goKrbServer.tpl new file mode 100644 index 000000000..843ea9d3b --- /dev/null +++ b/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/goKrbServer.tpl @@ -0,0 +1,37 @@ +

{t}Kerberos kadmin access{/t}

+ + + + + + + + +
+ + + + + +
{t}Kerberos Realms{/t}
+
+

{t}Policies{/t}

+ + + + +
+ {render acl=$goKrbPolicyACL} + {$divlist} + {/render} +
+ +
+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/pwd_heimdal.tpl b/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/pwd_heimdal.tpl new file mode 100644 index 000000000..bdc58f6b7 --- /dev/null +++ b/trunk/gosa-plugins/heimdal/admin/systems/services/kerberos/pwd_heimdal.tpl @@ -0,0 +1,201 @@ + + + + + + +
+

{t}Heimdal options{/t}

+ {t}Use empty values for infinite{/t} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+   +
+ {t}infinite{/t} + {t}Hour{/t} + {t}Minute{/t} + {t}Day{/t} + {t}Month{/t} + {t}Year{/t} +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+
+

Flags

+ + + + + +
+initial
+forwardable
+proxiable
+renewable
+postdate
+server
+client
+
+invalid
+require-preauth
+change-pw
+require-hwauth
+ok-as-delegate
+user-to-user
+immutable
+
+
+ +

+

+ +   + +

diff --git a/trunk/gosa-plugins/heimdal/contrib/hdb.ldif b/trunk/gosa-plugins/heimdal/contrib/hdb.ldif new file mode 100644 index 000000000..965dfff9d --- /dev/null +++ b/trunk/gosa-plugins/heimdal/contrib/hdb.ldif @@ -0,0 +1,18 @@ +dn: cn=hdb,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: hdb +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.1 NAME 'krb5PrincipalName' DESC 'The unparsed Kerberos principal name' EQUALITY caseExactIA5Match SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.2 NAME 'krb5KeyVersionNumber' EQUALITY integerMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.3 NAME 'krb5MaxLife' EQUALITY integerMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.4 NAME 'krb5MaxRenew' EQUALITY integerMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.5 NAME 'krb5KDCFlags' EQUALITY integerMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.6 NAME 'krb5EncryptionType' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.7 NAME 'krb5ValidStart' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.8 NAME 'krb5ValidEnd' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.9 NAME 'krb5PasswordEnd' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.10 NAME 'krb5Key' DESC 'Encoded ASN1 Key as an octet string' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.11 NAME 'krb5PrincipalRealm' DESC 'Distinguished name of krb5Realm entry' SUP distinguishedName ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.12 NAME 'krb5RealmName' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} ) +olcObjectClasses: ( 1.3.6.1.4.1.5322.10.2.1 NAME 'krb5Principal' SUP top AUXILIARY MUST ( krb5PrincipalName ) MAY ( cn $ krb5PrincipalRealm ) ) +olcObjectClasses: ( 1.3.6.1.4.1.5322.10.2.2 NAME 'krb5KDCEntry' SUP krb5Principal AUXILIARY MUST ( krb5KeyVersionNumber ) MAY ( krb5ValidStart $ krb5ValidEnd $ krb5PasswordEnd $ krb5MaxLife $ krb5MaxRenew $ krb5KDCFlags $ krb5EncryptionType $ krb5Key ) ) +olcObjectClasses: ( 1.3.6.1.4.1.5322.10.2.3 NAME 'krb5Realm' SUP top AUXILIARY MUST ( krb5RealmName ) ) diff --git a/trunk/gosa-plugins/heimdal/contrib/hdb.schema b/trunk/gosa-plugins/heimdal/contrib/hdb.schema new file mode 100644 index 000000000..6e5c0f7fd --- /dev/null +++ b/trunk/gosa-plugins/heimdal/contrib/hdb.schema @@ -0,0 +1,139 @@ +# Definitions for a Kerberos V KDC schema +# +# $Id: hdb.schema 14958 2005-04-25 17:33:40Z lha $ +# +# This version is compatible with OpenLDAP 1.8 +# +# OID Base is iso(1) org(3) dod(6) internet(1) private(4) enterprise(1) padl(5322) kdcSchema(10) +# +# Syntaxes are under 1.3.6.1.4.1.5322.10.0 +# Attributes types are under 1.3.6.1.4.1.5322.10.1 +# Object classes are under 1.3.6.1.4.1.5322.10.2 + +# Syntax definitions + +#krb5KDCFlagsSyntax SYNTAX ::= { +# WITH SYNTAX INTEGER +#-- initial(0), -- require as-req +#-- forwardable(1), -- may issue forwardable +#-- proxiable(2), -- may issue proxiable +#-- renewable(3), -- may issue renewable +#-- postdate(4), -- may issue postdatable +#-- server(5), -- may be server +#-- client(6), -- may be client +#-- invalid(7), -- entry is invalid +#-- require-preauth(8), -- must use preauth +#-- change-pw(9), -- change password service +#-- require-hwauth(10), -- must use hwauth +#-- ok-as-delegate(11), -- as in TicketFlags +#-- user-to-user(12), -- may use user-to-user auth +#-- immutable(13) -- may not be deleted +# ID { 1.3.6.1.4.1.5322.10.0.1 } +#} + +#krb5PrincipalNameSyntax SYNTAX ::= { +# WITH SYNTAX OCTET STRING +#-- String representations of distinguished names as per RFC1510 +# ID { 1.3.6.1.4.1.5322.10.0.2 } +#} + +# Attribute type definitions + +attributetype ( 1.3.6.1.4.1.5322.10.1.1 + NAME 'krb5PrincipalName' + DESC 'The unparsed Kerberos principal name' + EQUALITY caseExactIA5Match + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.2 + NAME 'krb5KeyVersionNumber' + EQUALITY integerMatch + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.3 + NAME 'krb5MaxLife' + EQUALITY integerMatch + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.4 + NAME 'krb5MaxRenew' + EQUALITY integerMatch + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.5 + NAME 'krb5KDCFlags' + EQUALITY integerMatch + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.6 + NAME 'krb5EncryptionType' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.7 + NAME 'krb5ValidStart' + EQUALITY generalizedTimeMatch + ORDERING generalizedTimeOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.8 + NAME 'krb5ValidEnd' + EQUALITY generalizedTimeMatch + ORDERING generalizedTimeOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.9 + NAME 'krb5PasswordEnd' + EQUALITY generalizedTimeMatch + ORDERING generalizedTimeOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 + SINGLE-VALUE ) + +# this is temporary; keys will eventually +# be child entries or compound attributes. +attributetype ( 1.3.6.1.4.1.5322.10.1.10 + NAME 'krb5Key' + DESC 'Encoded ASN1 Key as an octet string' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.11 + NAME 'krb5PrincipalRealm' + DESC 'Distinguished name of krb5Realm entry' + SUP distinguishedName ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.12 + NAME 'krb5RealmName' + EQUALITY octetStringMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} ) + +# Object class definitions + +objectclass ( 1.3.6.1.4.1.5322.10.2.1 + NAME 'krb5Principal' + SUP top + AUXILIARY + MUST ( krb5PrincipalName ) + MAY ( cn $ krb5PrincipalRealm ) ) + +objectclass ( 1.3.6.1.4.1.5322.10.2.2 + NAME 'krb5KDCEntry' + SUP krb5Principal + AUXILIARY + MUST ( krb5KeyVersionNumber ) + MAY ( krb5ValidStart $ krb5ValidEnd $ krb5PasswordEnd $ + krb5MaxLife $ krb5MaxRenew $ krb5KDCFlags $ + krb5EncryptionType $ krb5Key ) ) + +objectclass ( 1.3.6.1.4.1.5322.10.2.3 + NAME 'krb5Realm' + SUP top + AUXILIARY + MUST ( krb5RealmName ) ) + diff --git a/trunk/gosa-plugins/heimdal/help/guide.xml b/trunk/gosa-plugins/heimdal/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/heimdal/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/heimdal/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..1110d6c9c --- /dev/null +++ b/trunk/gosa-plugins/heimdal/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,189 @@ +# translation of messages.po to Deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2008-06-12 09:08+0200\n" +"Last-Translator: Jan Wenzel \n" +"Language-Team: German \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:5 +msgid "Heimdal options" +msgstr "Heimdal Optionen" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:6 +msgid "Use empty values for infinite" +msgstr "Verwende leeres Feld für unbegrenzt" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:10 +msgid "Ticket max life" +msgstr "Maximale Lebensdauer der Tickets" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:18 +msgid "Ticket max renew" +msgstr "Maximale Erneuerung der Tickets" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:32 +msgid "infinite" +msgstr "unbegrenzt" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:34 +msgid "Hour" +msgstr "Stunde" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:36 +msgid "Minute" +msgstr "Minute" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:38 +msgid "Day" +msgstr "Tag" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:40 +msgid "Month" +msgstr "Monat" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:42 +msgid "Year" +msgstr "Jahr" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:47 +msgid "Valid ticket start time" +msgstr "Gültigkeitsbeginn der Tickets" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:87 +msgid "Valid ticket end time" +msgstr "Gültigkeitsende der Tickets" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:127 +msgid "Password end" +msgstr "Passwort Ende" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:198 +msgid "Save" +msgstr "Speichern" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:200 +msgid "Cancel" +msgstr "Abbrechen" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "Kerberos-Dienst" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:358 +#: admin/systems/services/kerberos/class_goKrbServer.inc:367 +#: admin/systems/services/kerberos/class_goKrbServer.inc:371 +msgid "Service infrastructure" +msgstr "Dienst-Infrastruktur" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:165 +msgid "Kerberos service (kadmin access informations)" +msgstr "Kerberos Dienst (kadmin Zugangs-Informationen)" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:178 +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +msgid "Realm" +msgstr "Realm" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:181 +msgid "" +"In order to save policy changes, the server requires a valid mac address." +msgstr "" +"Um Änderungen der Richtlinien zu speichern, benötigt der Server eine gültige " +"Mac-Adresse." + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Remove" +msgstr "Entfernen" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Policy" +msgstr "Richtlinie" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:384 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Kerberos access information" +msgstr "Kerberos Zugangs-Information" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:393 +#: admin/systems/services/kerberos/goKrbServer.tpl:16 +msgid "Policies" +msgstr "Richtlinien" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:127 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:177 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:189 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:226 +msgid "Heimdal" +msgstr "Heimdal" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#, php-format +msgid "" +"Error loading heimdal configuration, more than one configuration entry was " +"found for '%s'." +msgstr "" +"Fehler beim Laden der Heimdal-Konfiguration, es wurde mehr als ein " +"Konfigurationseintrag für '%s' gefunden." + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:157 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:413 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:333 +msgid "Max life" +msgstr "Max Gültigkeit" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:336 +msgid "Max renew" +msgstr "Max Erneuerung" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:339 +msgid "Valid start" +msgstr "Gültigkeitsbeginn" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:342 +msgid "Valid end" +msgstr "Gültigkeitsende" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:345 +msgid "Valid password" +msgstr "Gültigkeitspasswort" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Kerberos-Zugang via kadmin" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +msgid "Kerberos Realms" +msgstr "Kerberos Bereiche" + +#~ msgid "Admin user" +#~ msgstr "Administrator" + +#~ msgid "Admin" +#~ msgstr "Administrator" diff --git a/trunk/gosa-plugins/heimdal/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/heimdal/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..c299986d0 --- /dev/null +++ b/trunk/gosa-plugins/heimdal/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,212 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:5 +#, fuzzy +msgid "Heimdal options" +msgstr "mujer" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:6 +msgid "Use empty values for infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:10 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:18 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:32 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:34 +msgid "Hour" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:36 +#, fuzzy +msgid "Minute" +msgstr "Impresora" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:38 +#, fuzzy +msgid "Day" +msgstr "Mayo" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:40 +#, fuzzy +msgid "Month" +msgstr "mes" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:42 +msgid "Year" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:47 +msgid "Valid ticket start time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:87 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:127 +#, fuzzy +msgid "Password end" +msgstr "Contraseña" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:198 +msgid "Save" +msgstr "Guardar" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:200 +msgid "Cancel" +msgstr "Cancelar" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "Servicio Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:358 +#: admin/systems/services/kerberos/class_goKrbServer.inc:367 +#: admin/systems/services/kerberos/class_goKrbServer.inc:371 +msgid "Service infrastructure" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:165 +msgid "Kerberos service (kadmin access informations)" +msgstr "Servicio Kerberos (información acceso kadmin)" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:178 +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +msgid "Realm" +msgstr "Dominio" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:181 +msgid "" +"In order to save policy changes, the server requires a valid mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Remove" +msgstr "Eliminar" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:384 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Kerberos access information" +msgstr "Acceso a información Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:393 +#: admin/systems/services/kerberos/goKrbServer.tpl:16 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:127 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:177 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:189 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:226 +#, fuzzy +msgid "Heimdal" +msgstr "mujer" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#, php-format +msgid "" +"Error loading heimdal configuration, more than one configuration entry was " +"found for '%s'." +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:157 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:413 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:333 +msgid "Max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:336 +msgid "Max renew" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:339 +msgid "Valid start" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:342 +msgid "Valid end" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:345 +#, fuzzy +msgid "Valid password" +msgstr "contraseña" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realms" +msgstr "Kerberos" + +#~ msgid "Admin user" +#~ msgstr "Usuario administrador" + +#~ msgid "Admin" +#~ msgstr "Administrador" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Por favor introduzca un valor numérico para TTL." + +#~ msgid "The specified kerberos password is empty." +#~ msgstr "No ha introducido ninguna contraseña kerberos." + +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "No ha introducido ningún administrador kerberos." + +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "No ha introducido ningún dominio kerberos." + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Eliminar extensión de entorno" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "No se puede subir la imagen a %s." diff --git a/trunk/gosa-plugins/heimdal/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/heimdal/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..53127c6e9 --- /dev/null +++ b/trunk/gosa-plugins/heimdal/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,177 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2008-08-12 13:55+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:5 +msgid "Heimdal options" +msgstr "Options Heimdal" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:6 +msgid "Use empty values for infinite" +msgstr "Utiliser une valeur nulle pour infini" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:10 +msgid "Ticket max life" +msgstr "Le délai de vie maximum du ticket" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:18 +msgid "Ticket max renew" +msgstr "Le délai maximum de renouvellement" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:32 +msgid "infinite" +msgstr "infini" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:34 +msgid "Hour" +msgstr "Heure" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:36 +msgid "Minute" +msgstr "Minutes" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:38 +msgid "Day" +msgstr "Jour" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:40 +msgid "Month" +msgstr "Moi" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:42 +msgid "Year" +msgstr "Année" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:47 +msgid "Valid ticket start time" +msgstr "Date de validité de départ pour le ticket" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:87 +msgid "Valid ticket end time" +msgstr "Date de validité de fin pour le ticket" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:127 +msgid "Password end" +msgstr "Fin du mot de passe" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:198 +msgid "Save" +msgstr "Enregistrer" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:200 +msgid "Cancel" +msgstr "Annuler" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "Service Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:358 +#: admin/systems/services/kerberos/class_goKrbServer.inc:367 +#: admin/systems/services/kerberos/class_goKrbServer.inc:371 +msgid "Service infrastructure" +msgstr "Service d'infrastructure" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:165 +msgid "Kerberos service (kadmin access informations)" +msgstr "Service Kerberos ( information accès kadmin )" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:178 +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +msgid "Realm" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:181 +msgid "" +"In order to save policy changes, the server requires a valid mac address." +msgstr "" +"Pour pouvoir changer la police de sécurité, le serveur nécessite un adresse " +"mac valide." + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Remove" +msgstr "Enlever" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Policy" +msgstr "Police" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:384 +msgid "Kerberos" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Kerberos access information" +msgstr "Information d'accès Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:393 +#: admin/systems/services/kerberos/goKrbServer.tpl:16 +msgid "Policies" +msgstr "Politiques d'accès" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:127 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:177 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:189 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:226 +msgid "Heimdal" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#, php-format +msgid "" +"Error loading heimdal configuration, more than one configuration entry was " +"found for '%s'." +msgstr "" +"Il y a une erreur lors du chargement de la configuration Heimdal, plus d'un " +"entrée de configuration à été trouvée pour '%s'." + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:157 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:413 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:333 +msgid "Max life" +msgstr "Délai de vie max" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:336 +msgid "Max renew" +msgstr "Délai de renouvellement maximum" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:339 +msgid "Valid start" +msgstr "Valide à partir de " + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:342 +msgid "Valid end" +msgstr "Valide jusqu'a" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:345 +msgid "Valid password" +msgstr "Mot de passe valide" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Accès kadmin Kerberos" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +msgid "Kerberos Realms" +msgstr "Realm Kerberos" diff --git a/trunk/gosa-plugins/heimdal/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/heimdal/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..2c7b84511 --- /dev/null +++ b/trunk/gosa-plugins/heimdal/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,218 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:5 +#, fuzzy +msgid "Heimdal options" +msgstr "Terminali" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:6 +msgid "Use empty values for infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:10 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:18 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:32 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:34 +#, fuzzy +msgid "Hour" +msgstr "ora" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:36 +#, fuzzy +msgid "Minute" +msgstr "Stampante" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:38 +#, fuzzy +msgid "Day" +msgstr "giorno" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:40 +#, fuzzy +msgid "Month" +msgstr "mese" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:42 +#, fuzzy +msgid "Year" +msgstr "Cerca" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:47 +msgid "Valid ticket start time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:87 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:127 +#, fuzzy +msgid "Password end" +msgstr "Password" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:198 +msgid "Save" +msgstr "Salva" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:200 +msgid "Cancel" +msgstr "Annulla" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +#, fuzzy +msgid "Kerberos service" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:358 +#: admin/systems/services/kerberos/class_goKrbServer.inc:367 +#: admin/systems/services/kerberos/class_goKrbServer.inc:371 +#, fuzzy +msgid "Service infrastructure" +msgstr "Seleziona per mostrare le applicazioni" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:165 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Informazioni personali" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:178 +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#, fuzzy +msgid "Realm" +msgstr "Cognome" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:181 +msgid "" +"In order to save policy changes, the server requires a valid mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:384 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#, fuzzy +msgid "Kerberos access information" +msgstr "Informazioni personali" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:393 +#: admin/systems/services/kerberos/goKrbServer.tpl:16 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:127 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:177 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:189 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:226 +#, fuzzy +msgid "Heimdal" +msgstr "Terminali" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#, php-format +msgid "" +"Error loading heimdal configuration, more than one configuration entry was " +"found for '%s'." +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:157 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:413 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:333 +msgid "Max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:336 +msgid "Max renew" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:339 +msgid "Valid start" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:342 +msgid "Valid end" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:345 +#, fuzzy +msgid "Valid password" +msgstr "Password" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realms" +msgstr "Kerberos" + +#, fuzzy +#~ msgid "Admin" +#~ msgstr "DN dell'amministratore" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "The specified kerberos password is empty." +#~ msgstr "La password immessa come 'Nuova password' è vuota" + +#, fuzzy +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "La password immessa come 'Nuova password' è vuota" + +#, fuzzy +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "La password immessa come 'Nuova password' è vuota" + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Questa identità non ha le estensioni per la posta" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "Questa identità non ha le estensioni per la posta" diff --git a/trunk/gosa-plugins/heimdal/locale/messages.po b/trunk/gosa-plugins/heimdal/locale/messages.po new file mode 100644 index 000000000..e410170a2 --- /dev/null +++ b/trunk/gosa-plugins/heimdal/locale/messages.po @@ -0,0 +1,175 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:5 +msgid "Heimdal options" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:6 +msgid "Use empty values for infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:10 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:18 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:32 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:34 +msgid "Hour" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:36 +msgid "Minute" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:38 +msgid "Day" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:40 +msgid "Month" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:42 +msgid "Year" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:47 +msgid "Valid ticket start time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:87 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:127 +msgid "Password end" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:198 +msgid "Save" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:200 +msgid "Cancel" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:358 +#: admin/systems/services/kerberos/class_goKrbServer.inc:367 +#: admin/systems/services/kerberos/class_goKrbServer.inc:371 +msgid "Service infrastructure" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:165 +msgid "Kerberos service (kadmin access informations)" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:178 +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +msgid "Realm" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:181 +msgid "" +"In order to save policy changes, the server requires a valid mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Remove" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:384 +msgid "Kerberos" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Kerberos access information" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Services" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:393 +#: admin/systems/services/kerberos/goKrbServer.tpl:16 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:127 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:177 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:189 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:226 +msgid "Heimdal" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#, php-format +msgid "" +"Error loading heimdal configuration, more than one configuration entry was " +"found for '%s'." +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:157 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:413 +msgid "LDAP error" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:333 +msgid "Max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:336 +msgid "Max renew" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:339 +msgid "Valid start" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:342 +msgid "Valid end" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:345 +msgid "Valid password" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +msgid "Kerberos Realms" +msgstr "" diff --git a/trunk/gosa-plugins/heimdal/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/heimdal/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..07535fca6 --- /dev/null +++ b/trunk/gosa-plugins/heimdal/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,224 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:5 +#, fuzzy +msgid "Heimdal options" +msgstr "Serieel" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:6 +msgid "Use empty values for infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:10 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:18 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:32 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:34 +#, fuzzy +msgid "Hour" +msgstr "uur" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:36 +#, fuzzy +msgid "Minute" +msgstr "Printer" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:38 +#, fuzzy +msgid "Day" +msgstr "dag" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:40 +#, fuzzy +msgid "Month" +msgstr "maand" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:42 +#, fuzzy +msgid "Year" +msgstr "Zoeken" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:47 +msgid "Valid ticket start time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:87 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:127 +#, fuzzy +msgid "Password end" +msgstr "Wachtwoord" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:198 +msgid "Save" +msgstr "Opslaan" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:200 +msgid "Cancel" +msgstr "Annuleren" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +#, fuzzy +msgid "Kerberos service" +msgstr "Kerberos server" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:358 +#: admin/systems/services/kerberos/class_goKrbServer.inc:367 +#: admin/systems/services/kerberos/class_goKrbServer.inc:371 +#, fuzzy +msgid "Service infrastructure" +msgstr "Zoek binnen subtree" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:165 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Kerberos kadmin toegang" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:178 +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#, fuzzy +msgid "Realm" +msgstr "RAM" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:181 +msgid "" +"In order to save policy changes, the server requires a valid mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:384 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#, fuzzy +msgid "Kerberos access information" +msgstr "Kerberos kadmin toegang" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:393 +#: admin/systems/services/kerberos/goKrbServer.tpl:16 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:127 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:177 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:189 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:226 +#, fuzzy +msgid "Heimdal" +msgstr "Serieel" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#, php-format +msgid "" +"Error loading heimdal configuration, more than one configuration entry was " +"found for '%s'." +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:157 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:413 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:333 +msgid "Max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:336 +msgid "Max renew" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:339 +msgid "Valid start" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:342 +msgid "Valid end" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:345 +#, fuzzy +msgid "Valid password" +msgstr "Oud wachtwoord" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Kerberos kadmin toegang" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realms" +msgstr "Kerberos Realm" + +#~ msgid "Admin user" +#~ msgstr "Beheerder" + +#, fuzzy +#~ msgid "Admin" +#~ msgstr "Beheerders" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Geef a.u.b. een nummerieke waarde op voor TTL." + +#~ msgid "The specified kerberos password is empty." +#~ msgstr "Het opgegeven kerberos wachtwoord is leeg." + +#, fuzzy +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "Het opgegeven kerberos wachtwoord is leeg." + +#, fuzzy +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "Het opgegeven kerberos wachtwoord is leeg." + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Verwijder omgevingsmogelijkheden" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "Dit account heeft E-mail mogelijkheden uitgeschakeld." diff --git a/trunk/gosa-plugins/heimdal/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/heimdal/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..dc406b949 --- /dev/null +++ b/trunk/gosa-plugins/heimdal/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,214 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:5 +#, fuzzy +msgid "Heimdal options" +msgstr "kobieta" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:6 +msgid "Use empty values for infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:10 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:18 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:32 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:34 +#, fuzzy +msgid "Hour" +msgstr "godzina" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:36 +#, fuzzy +msgid "Minute" +msgstr "Drukarka" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:38 +#, fuzzy +msgid "Day" +msgstr "dzień" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:40 +#, fuzzy +msgid "Month" +msgstr "miesiąc" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:42 +#, fuzzy +msgid "Year" +msgstr "Szukaj" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:47 +msgid "Valid ticket start time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:87 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:127 +#, fuzzy +msgid "Password end" +msgstr "Hasło" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:198 +msgid "Save" +msgstr "Zapisz" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:200 +msgid "Cancel" +msgstr "Anuluj" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "Usługa Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:358 +#: admin/systems/services/kerberos/class_goKrbServer.inc:367 +#: admin/systems/services/kerberos/class_goKrbServer.inc:371 +#, fuzzy +msgid "Service infrastructure" +msgstr "Szukaj wewnątrz tego poddrzewa" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:165 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Informacje dostępowe Kerberos kadmin" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:178 +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +msgid "Realm" +msgstr "Dziedzina" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:181 +msgid "" +"In order to save policy changes, the server requires a valid mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Remove" +msgstr "Usuń" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:384 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#, fuzzy +msgid "Kerberos access information" +msgstr "Informacje dostępowe Kerberos kadmin" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:393 +#: admin/systems/services/kerberos/goKrbServer.tpl:16 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:127 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:177 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:189 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:226 +#, fuzzy +msgid "Heimdal" +msgstr "kobieta" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#, php-format +msgid "" +"Error loading heimdal configuration, more than one configuration entry was " +"found for '%s'." +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:157 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:413 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:333 +msgid "Max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:336 +msgid "Max renew" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:339 +msgid "Valid start" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:342 +msgid "Valid end" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:345 +#, fuzzy +msgid "Valid password" +msgstr "Stare hasło" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Dostęp do Kerberos kadmin" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realms" +msgstr "Dziedzina Kerberos" + +#~ msgid "Admin user" +#~ msgstr "Użytkownik administracyjny" + +#~ msgid "Admin" +#~ msgstr "Admin" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Proszę podać liczbę jako wartość dla ttl." + +#~ msgid "The specified kerberos password is empty." +#~ msgstr "Podane hasło kerberos jest puste." + +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "Podany administrator kerberos jest pusty." + +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "Podana dziedzina kerberos jest pusta." + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Usuń rozszerzenie środowiska" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "To konto nie posiada rozszerzeń pocztowych" diff --git a/trunk/gosa-plugins/heimdal/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/heimdal/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..c92c99a7b --- /dev/null +++ b/trunk/gosa-plugins/heimdal/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,221 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:5 +#, fuzzy +msgid "Heimdal options" +msgstr "Email" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:6 +msgid "Use empty values for infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:10 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:18 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:32 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:34 +#, fuzzy +msgid "Hour" +msgstr "час" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:36 +#, fuzzy +msgid "Minute" +msgstr "Принтер" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:38 +#, fuzzy +msgid "Day" +msgstr "день" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:40 +#, fuzzy +msgid "Month" +msgstr "месяц" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:42 +#, fuzzy +msgid "Year" +msgstr "Поиск" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:47 +msgid "Valid ticket start time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:87 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:127 +#, fuzzy +msgid "Password end" +msgstr "Пароль" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:198 +msgid "Save" +msgstr "Сохранить" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:200 +msgid "Cancel" +msgstr "Отмена" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +#, fuzzy +msgid "Kerberos service" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:358 +#: admin/systems/services/kerberos/class_goKrbServer.inc:367 +#: admin/systems/services/kerberos/class_goKrbServer.inc:371 +#, fuzzy +msgid "Service infrastructure" +msgstr "Искать в поддеревьях" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:165 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Личная информация" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:178 +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#, fuzzy +msgid "Realm" +msgstr "Имя сервера" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:181 +msgid "" +"In order to save policy changes, the server requires a valid mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Remove" +msgstr "Удалить" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:384 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#, fuzzy +msgid "Kerberos access information" +msgstr "Личная информация" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:393 +#: admin/systems/services/kerberos/goKrbServer.tpl:16 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:127 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:177 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:189 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:226 +#, fuzzy +msgid "Heimdal" +msgstr "Email" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#, php-format +msgid "" +"Error loading heimdal configuration, more than one configuration entry was " +"found for '%s'." +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:157 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:413 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:333 +msgid "Max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:336 +msgid "Max renew" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:339 +msgid "Valid start" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:342 +msgid "Valid end" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:345 +#, fuzzy +msgid "Valid password" +msgstr "Пароль" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realms" +msgstr "Kerberos" + +#, fuzzy +#~ msgid "Admin user" +#~ msgstr "Пользователи домена" + +#, fuzzy +#~ msgid "Admin" +#~ msgstr "DN администратора" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "The specified kerberos password is empty." +#~ msgstr "Значение поля \"Файлы\" некорректно." + +#, fuzzy +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "Значение поля \"Файлы\" некорректно." + +#, fuzzy +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "Значение поля \"Файлы\" некорректно." + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Удалить параметры" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "В этой учетной записи нет почтовых расширений." diff --git a/trunk/gosa-plugins/heimdal/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/heimdal/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d6c8dca66 --- /dev/null +++ b/trunk/gosa-plugins/heimdal/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,220 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:5 +#, fuzzy +msgid "Heimdal options" +msgstr "串行" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:6 +msgid "Use empty values for infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:10 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:18 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:32 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:34 +msgid "Hour" +msgstr "小时" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:36 +#, fuzzy +msgid "Minute" +msgstr "打印机" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:38 +#, fuzzy +msgid "Day" +msgstr "五月" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:40 +#, fuzzy +msgid "Month" +msgstr "月" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:42 +#, fuzzy +msgid "Year" +msgstr "查找" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:47 +msgid "Valid ticket start time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:87 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:127 +#, fuzzy +msgid "Password end" +msgstr "口令" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:198 +msgid "Save" +msgstr "保存" + +#: admin/systems/services/kerberos/pwd_heimdal.tpl:200 +msgid "Cancel" +msgstr "取消" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +#, fuzzy +msgid "Kerberos service" +msgstr "Kerberos 服务器" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:358 +#: admin/systems/services/kerberos/class_goKrbServer.inc:367 +#: admin/systems/services/kerberos/class_goKrbServer.inc:371 +#, fuzzy +msgid "Service infrastructure" +msgstr "在子树中查找" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:165 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Kerberos kadmin 访问" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:178 +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#, fuzzy +msgid "Realm" +msgstr "Ram" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:181 +msgid "" +"In order to save policy changes, the server requires a valid mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Remove" +msgstr "删除" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:265 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:384 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#, fuzzy +msgid "Kerberos access information" +msgstr "个人信息" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:393 +#: admin/systems/services/kerberos/goKrbServer.tpl:16 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:127 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:177 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:189 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:226 +#, fuzzy +msgid "Heimdal" +msgstr "串行" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:104 +#, php-format +msgid "" +"Error loading heimdal configuration, more than one configuration entry was " +"found for '%s'." +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:157 +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:413 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:333 +msgid "Max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:336 +msgid "Max renew" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:339 +msgid "Valid start" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:342 +msgid "Valid end" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-heimdal.inc:345 +#, fuzzy +msgid "Valid password" +msgstr "旧口令" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Kerberos kadmin 访问" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realms" +msgstr "Kerberos Realm" + +#~ msgid "Admin user" +#~ msgstr "管理员" + +#, fuzzy +#~ msgid "Admin" +#~ msgstr "管理员" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "请为 ttl 提供一个数值。" + +#~ msgid "The specified kerberos password is empty." +#~ msgstr "提供的 kerberos 口令为空。" + +#, fuzzy +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "提供的 kerberos 口令为空。" + +#, fuzzy +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "提供的 kerberos 口令为空。" + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "删除环境变量扩展" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "这个账号没有邮件扩展。" diff --git a/trunk/gosa-plugins/heimdal/plugin.dsc b/trunk/gosa-plugins/heimdal/plugin.dsc new file mode 100644 index 000000000..1500a532a --- /dev/null +++ b/trunk/gosa-plugins/heimdal/plugin.dsc @@ -0,0 +1,8 @@ +[gosa-plugin] +name = heimdal +description = "Heimdal kerberos management plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +conflicts = mit-krb5 +depends = systems diff --git a/trunk/gosa-plugins/kolab/admin/systems/services/kolab/class_servKolab.inc b/trunk/gosa-plugins/kolab/admin/systems/services/kolab/class_servKolab.inc new file mode 100644 index 000000000..4ba3dd9d0 --- /dev/null +++ b/trunk/gosa-plugins/kolab/admin/systems/services/kolab/class_servKolab.inc @@ -0,0 +1,467 @@ +hostname = preg_replace('/^cn=([^,]+),.*$/', '\1', $dn); + $this->dn = "k=kolab,".$config->current['BASE']; + + /* Load variables, if given*/ + plugin::plugin($config, $this->dn); + + /* Copy needed attributes */ + foreach($this->attributes as $val) { + $name = preg_replace('/_/', '-', $val); + if (isset($this->attrs["$name"][0])) { + $this->$val = $this->attrs["$name"][0]; + } + } + + /* Toggle relayhost */ + $this->postfix_mxrelayenabled = preg_match('/^\[/', $this->postfix_relayhost); + $this->postfix_relayhost = preg_replace("/[\[\]]/","",$this->postfix_relayhost); + + /* Is this Server a member of the Kolab extension or not ?*/ + if(isset($this->attrs['kolabHost'])) { + $this->kolabHost= $this->attrs['kolabHost']; + unset($this->kolabHost['count']); + } + $this->is_account = false; + $this->initially_was_account = false; + foreach($this->kolabHost as $host){ + if($this->hostname == $host){ + $this->is_account = true; + $this->initially_was_account = true; + } + } + + /* Get list of configured domains + */ + $this->postfix_mydestination = array(); + if(isset($this->attrs['postfix-mydestination'])){ + for($i=0; $i < $this->attrs['postfix-mydestination']['count']; $i++){ + $this->postfix_mydestination[] = $this->attrs['postfix-mydestination'][$i]; + } + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /*************** + Variable initialisation + ***************/ + + $smarty = get_smarty(); + $display = ""; + $ldap = $this->config->get_ldap_link(); + + + /* Assemble free/busy string */ + $edit = sprintf('', + $this->kolabFreeBusyFuture); + $fbfuture = sprintf(_("Include data from %s days in the past when creating free/busy lists"), $edit); + + /* Assemble quota string */ + $edit = sprintf('', + $this->cyrus_quotawarn); + $quotastr = sprintf(_("Warn users when using more than %s%% of their mail quota"), $edit); + + /*************** + Assign informations to smarty + ***************/ + + /* Set relayhost and if we have MX lookup enabled*/ + if($this->postfix_mxrelayenabled) { + $smarty->assign("RelayMxSupportCheck"," checked "); + } else { + $smarty->assign("RelayMxSupportCheck",""); + } + + /* Set acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + /* Initialize all attributes, that were submitted */ + foreach($this->attributes as $val) + { + /* Tell smarty which variables we are useing */ + $smarty->assign($val, $this->$val); + if (($this->$val != "FALSE") && !empty($this->$val)){ + $smarty->assign($val."Check", "checked"); + } else { + $smarty->assign($val."Check", ""); + } + } + + $smarty->assign("fbfuture", $fbfuture); + $smarty->assign("quotastr", $quotastr); + + /* Create mail domain divlist (postfix_mydestination) + */ + $divlist = new divSelectBox("fuse"); + $divlist->setHeight(100); + foreach($this->postfix_mydestination as $key => $domain){ + $f1 = array("string" => $domain); + $f2 = array("string" => "", + "attach" => "style='border-right:0px; width: 20px;'"); + $divlist->AddEntry(array($f1,$f2)); + } + $smarty->assign("mdDiv",$divlist->DrawList()); + + /* Load Template */ + $display.=$smarty->fetch(get_template_path('servkolab.tpl', TRUE,dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + + /* Remove status flag, it is not a memeber of + this->attributes, so ensure that it is deleted too */ + if(!empty($this->StatusFlag)){ + $this->attrs[$this->StatusFlag] = array(); + } + + + /* Only walk through following code, if this host + was a member of the kolab hosts, else skip this */ + if(!$this->initially_was_account){ + return; + } + + /* !!! Don't use "cn" in this function + hostname -> the initial name of the host + cn -> is the new name of the host, in case that it was renamed. + */ + + $ldap = $this->config->get_ldap_link(); + $this->dn = "k=kolab,".$this->config->current['BASE']; + + /* We can't simply remove the whole entry, it is possible that there are + some other hosts assigned to this object. + So, first of all check if we are the last host entry within the host + : Remove k=kolab entry + if we aren't alone, only remove host name from hosts entry and save */ + /* Are we alone? Remove complete entry... */ + + /* Check if we are definitly in kolabHosts */ + if(!in_array_ics($this->hostname,$this->kolabHost)) { + return; + } + + /* Integration check, not translated because they can't pop up at all, only for debug */ + if(count($this->kolabHost) == 0){ + msg_dialog::display(_("Internal error"), _("Kolab account does not exist!"), ERROR_DIALOG); + return; + } + if(!isset($this->hostname) || (empty($this->hostname))){ + msg_dialog::display(_("Error"), msgPool::required(_("hostname")), ERROR_DIALOG); + } + + /* Our hostname is in kolabHosts and there is a only one entry + = we are the last host entry, delete k=kolab entry */ + if (count($this->kolabHost) == 1){ + + /* Remove complete entry */ + $ldap->rmdir ($this->dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + } else { + + /* Only modify kolabHost */ + $hosts= array(); + foreach ($this->kolabHost as $host){ + if($host != $this->hostname){ + $hosts[]= $host; + } + } + $attrs= array('kolabHost' => $hosts); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + } + + new log("remove","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove"); + } + + + function save_object() + { + if (isset($_POST['kolabtab'])){ + plugin::save_object(); + + /* Domain name added/removed + */ + foreach($_POST as $name => $value){ + if(preg_match("/^remove_domain_/",$name)){ + $id = preg_replace("/^remove_domain_([0-9]*)_.*$/","\\1",$name); + if(isset($this->postfix_mydestination[$id])){ + unset($this->postfix_mydestination[$id]); + } + break; + } + } + if(isset($_POST['add_domain_name']) && isset($_POST['new_domain_name'])){ + $new_domain = trim(get_post('new_domain_name')); + if(!empty($new_domain) && tests::is_domain($new_domain)){ + $this->postfix_mydestination[] = $new_domain; + } + } + + /* Map attrinutes + */ + foreach($this->attributes as $attr){ + if(($this->acl_is_writeable(preg_replace("/_/","",$attr))) && (isset($_POST[$attr]))){ + $this->$attr = $_POST[$attr]; + } + } + + /* Save checkboxes */ + foreach (array( "postfix_enable_virus_scan", "postfix_allow_unauthenticated", + "cyrus_imap", "cyrus_pop3", "cyrus_imaps", + "cyrus_pop3s", "cyrus_sieve", "apache_allow_unauthenticated_fb", + "proftpd_ftp", "apache_http") as $cb){ + + if($this->acl_is_writeable(preg_replace("/_/","",$cb))){ + if (isset($_POST[$cb])){ + $this->$cb= "TRUE"; + } else { + $this->$cb= "FALSE"; + } + } + } + + /* Toggell relay check */ + if($this->acl_is_writeable("postfixmxrelayenabled")){ + $this->postfix_mxrelayenabled= isset($_POST['RelayMxSupport']); + } + } + + } + + + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(mailMethod::get_current_method($this->config) != "mailMethodKolab22" && count($this->postfix_mydestination) != 1){ +# $message[] = _("Only kolab version >= 2.2 is able to handle multiple mail domains. Please provide only one mail domain."); + } + + if(($this->kolabFreeBusyFuture=="")) { + $message[] = msgPool::required(_("Future days")); + }elseif(!tests::is_uid($this->kolabFreeBusyFuture) || $this->kolabFreeBusyFuture < 0){ + $message[] = msgPool::invalid(_("Future days"),$this->kolabFreeBusyFuture,"/[0-9]/"); + } + + if(!is_int((int)($this->cyrus_quotawarn))) { + $message[] = msgPool::required(_("Quota")); + }elseif($this->cyrus_quotawarn>100){ + $message[] = _("Please choose a value between 1 and 100 for Quota settings."); + }elseif($this->cyrus_quotawarn < 1){ + $message[] = msgPool::toosmall(_("Quota"),1); + } + + if(empty($this->postfix_mynetworks)) { + $message[] = msgPool::required(_("Privileged networks")); + } + + if(!count($this->postfix_mydestination)){ + $message[] = msgPool::required(_("Mail domains")." (postfix-mydestination)" ); + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* Set ldap connection */ + $ldap = $this->config->get_ldap_link(); + + /* Open current dn*/ + $this->dn = "k=kolab,".$this->config->current['BASE']; + + /* Adapt relayhost */ + $this->postfix_relayhost= preg_replace('/[\[\]]/', '', $this->postfix_relayhost); + if ($this->postfix_mxrelayenabled && $this->postfix_relayhost != ""){ + $this->postfix_relayhost= "[".$this->postfix_relayhost."]"; + } + + /* Check if this server was renamed, in this case we have to remove old cn first*/ + if($this->hostname != $this->cn){ + $tmp = array(); + if(in_array_ics($this->hostname,$this->kolabHost)){ + foreach($this->kolabHost as $host){ + if($host != $this->hostname){ + $tmp[] = $host; + } + } + $this->kolabHost = $tmp; + } + } + + /* Add ourselves to the list of kolabHost's if needed */ + if (!in_array_ics($this->cn,$this->kolabHost)){ + $this->kolabHost[]= $this->cn; + } + + /* Call parents save to prepare $this->attrs */ + plugin::save(); + + /* Save or modify? */ + $ldap->cat($this->dn, array('dn')); + if (!$ldap->fetch()){ + $mode= "add"; + } else { + $mode= "modify"; + } + + /* Do attribute conversion */ + foreach ($this->attrs as $key => $value){ + if (preg_match('/_/', $key)){ + $old_key= $key; + $key= preg_replace('/_/', '-', $key); + $this->attrs[$key]= $value; + unset($this->attrs[$old_key]); + } + } + /* Add kolab hosts */ + $this->attrs['kolabHost']= $this->kolabHost; + + /* Perform LDAP action */ + $ldap->cd($this->dn); + $this->cleanup();; + $ldap->$mode($this->attrs); + + if($mode == "add"){ + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account) { + if ($this->is_modified) { + $this->handle_post_events("modify"); + } + } else { + $this->handle_post_events("add"); + } + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Kolab mail service"); + #$fields['AllowEdit'] = true; + return($fields); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Kolab"), + "plDescription" => _("Kolab mail service")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 85, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "postfixmydomain" => _("Postfix mydomain") , + "postfixmydestination" => _("My destination") , + "cyrusadmins" => _("Cyrus admins") , + + "cyruspop3" => _("POP3 service") , + "cyruspop3s" => _("POP3/SSL service") , + + "cyrusimap" => _("IMAP service") , + "cyrusimaps" => _("IMAP/SSL service") , + + "cyrussieve" => _("Sieve service") , + "proftpdftp" => _("FTP FreeBusy service") , + "apachehttp" => _("HTTP FreeBusy service") , + "postfixenablevirusscan" => _("Enable virus scan") , + + "cyrusquotawarn" => _("Quota settings"), + + "apacheallowunauthenticatedfb" => _("Allow unauthenticated free busy"), + "kolabFreeBusyFuture" => _("kolabFreeBusyFuture") , + + "postfixmynetworks" => _("SMTP privileged networks") , + "postfixmxrelayenabled" => _("Enable MX lookup for relayhost"), + "postfixrelayhost" => _("Relayhost") , + "postfixallowunauthenticated" => _("Accept Internet Mail")) + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/kolab/admin/systems/services/kolab/servkolab.tpl b/trunk/gosa-plugins/kolab/admin/systems/services/kolab/servkolab.tpl new file mode 100644 index 000000000..834a943dd --- /dev/null +++ b/trunk/gosa-plugins/kolab/admin/systems/services/kolab/servkolab.tpl @@ -0,0 +1,253 @@ + + + + + +
+ + + + + + + + + + + + + + + +
{t}Generic{/t}
{t}Postfix mydomain{/t} + +{render acl=$postfixmydomainACL} + +{/render} +
{t}Cyrus admins{/t} + +{render acl=$cyrusadminsACL} + +{/render} +
{t}Mail domains{/t} ({t}Postfix mydestination{/t})
+{render acl=$postfixmydestinationACL} + {$mdDiv} +{/render} +{render acl=$postfixmydestinationACL} + +{/render} +{render acl=$postfixmydestinationACL} + +{/render} +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{t}Services{/t}
+{render acl=$cyruspop3ACL} + +{/render} + + +
+{render acl=$cyruspop3sACL} + +{/render} + + +
+{render acl=$cyrusimapACL} + +{/render} + + +
+{render acl=$cyrusimapsACL} + +{/render} + + +
+{render acl=$cyrussieveACL} + +{/render} + + +
+{render acl=$proftpdftpACL} + +{/render} + + +
+{render acl=$apachehttpACL} + +{/render} + + +
+{render acl=$postfixenablevirusscanACL} + +{/render} + + +
+ +

 

+
+ + + + + + + + +
+ {t}Quota settings{/t} +
+{render acl=$cyrusquotawarnACL} + {$quotastr} +{/render} +
+ +
+ + + + + + + + + + + +
+ {t}Free/Busy settings{/t} +
+{render acl=$apacheallowunauthenticatedfbACL} + {t}Allow unauthenticated downloading of Free/Busy information{/t} +{/render} +
+{render acl=$kolabFreeBusyFutureACL} + {$fbfuture} +{/render} +
+ +

 

+
+ + + + + + + +
+ {t}SMTP privileged networks{/t} +
+
+{render acl=$postfixmynetworksACL} + +{/render} +
+ ( {t}Enter multiple values, seperated with{/t} , ) +
+ + +

 

+
+ + + + + + + + + + + + +
+ {t}SMTP smarthost/relayhost{/t} +
+{render acl=$postfixrelayhostACL} + +{/render} + +
+   +{render acl=$postfixrelayhostACL} + +{/render} +
+ + +

 

+
+ + + + + + + + + +
+ {t}Accept Internet Mail{/t} +
+{render acl=$postfixallowunauthenticatedACL} + +{/render} + +
+ + +
+ + + +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/kolab/contrib/kolab2.ldif b/trunk/gosa-plugins/kolab/contrib/kolab2.ldif new file mode 100644 index 000000000..720f88b2a --- /dev/null +++ b/trunk/gosa-plugins/kolab/contrib/kolab2.ldif @@ -0,0 +1,61 @@ +dn: cn=kolab2,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: kolab2 +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.1 NAME ( 'k' 'kolab' ) DESC 'Kolab attribute' SUP name ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.2 NAME 'kolabDeleteflag' DESC 'Per host deletion status' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.3 NAME 'alias' DESC 'RFC1274: RFC822 Mailbox' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.2.1.4 NAME 'kolabEncryptedPassword' DESC 'base64 encoded public key encrypted Password' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.5 NAME ( 'fqhostname' 'fqdnhostname' ) DESC 'Fully qualified Hostname including full domain component' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.6 NAME 'kolabHost' DESC 'Multivalued -- list of hostnames in a Kolab setup' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.1 NAME 'kolabHomeServer' DESC 'server which keeps the users mailbox' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.2 NAME 'unrestrictedMailSize' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.3 NAME 'kolabDelegate' DESC 'Kolab user allowed to act as delegates - RFC822 Mailbox/Alias' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.4 NAME ( 'kolabInvitationPolicy' 'kolabResourceAction' ) DESC 'defines how to respond to invitations' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.5 NAME 'kolabFreeBusyFuture' DESC 'time in days for fb data towards the future' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.6 NAME 'kolabFreeBusyPast' DESC 'time in days for fb data towards the past' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.7 NAME 'kolabHomeMTA' DESC 'fqdn of default MTA' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.8 NAME 'kolabVacationBeginDateTime' DESC 'Begin date of vacation' EQUALITY generalizedTimeMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.9 NAME 'kolabVacationEndDateTime' DESC 'End date of vacation' EQUALITY generalizedTimeMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.10 NAME 'kolabVacationResendInterval' DESC 'Vacation notice interval in days' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.11 NAME 'kolabVacationAddress' DESC 'Email address for vacation to response upon' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.12 NAME 'kolabVacationReplyToUCE' DESC 'Enable vacation notices to UCE' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.13 NAME 'kolabVacationReactDomain' DESC 'Multivalued -- Email domain for vacation to response upon' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.14 NAME 'kolabForwardAddress' DESC 'Forward email to this address' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.15 NAME 'kolabForwardKeepCopy' DESC 'Keep copy when forwarding' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.16 NAME 'kolabForwardUCE' DESC 'Enable forwarding of mails known as UCE' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19419.1.1.1.17 NAME 'kolabComment' DESC 'multi-value comment' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.7 NAME 'kolabFolderType' DESC 'type of a kolab folder' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.501 NAME 'postfix-mydomain' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.502 NAME 'postfix-relaydomains' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.503 NAME 'postfix-mydestination' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.504 NAME 'postfix-mynetworks' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.505 NAME 'postfix-relayhost' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.506 NAME 'postfix-transport' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.507 NAME 'postfix-enable-virus-scan' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.508 NAME 'postfix-allow-unauthenticated' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.509 NAME 'postfix-virtual' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.510 NAME 'postfix-relayport' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.601 NAME 'cyrus-autocreatequota' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.602 NAME 'cyrus-admins' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.603 NAME 'cyrus-imap' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.604 NAME 'cyrus-pop3' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.605 NAME 'cyrus-userquota' DESC 'Mailbox hard quota limit in MB' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.606 NAME 'cyrus-imaps' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.607 NAME 'cyrus-pop3s' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.608 NAME 'cyrus-sieve' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.609 NAME 'cyrus-quotawarn' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.701 NAME 'apache-http' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.702 NAME 'apache-allow-unauthenticated-fb' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.750 NAME 'kolabfilter-verify-from-header' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.751 NAME 'kolabfilter-allow-sender-header' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.752 NAME 'kolabfilter-reject-forged-from-header' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.901 NAME 'proftpd-defaultquota' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.902 NAME 'proftpd-ftp' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) +olcAttributeTypes: ( 1.3.6.1.4.1.19414.2.1.903 NAME 'proftpd-userPassword' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcObjectClasses: ( 1.3.6.1.4.1.19414.2.2.1 NAME 'kolab' DESC 'Kolab server configuration' SUP top STRUCTURAL MUST k MAY ( kolabHost $ postfix-mydomain $ postfix-relaydomains $ postfix-mydestination $ postfix-mynetworks $ postfix-relayhost $ postfix-relayport $ postfix-transport $ postfix-virtual $ postfix-enable-virus-scan $ postfix-allow-unauthenticated $ cyrus-quotawarn $ cyrus-autocreatequota $ cyrus-admins $ cyrus-imap $ cyrus-pop3 $ cyrus-imaps $ cyrus-pop3s $ cyrus-sieve $ apache-http $ apache-allow-unauthenticated-fb $ kolabfilter-verify-from-header $ kolabfilter-allow-sender-header $ kolabfilter-reject-forged-from-header $ proftpd-ftp $ proftpd-defaultquota $ kolabFreeBusyFuture $ kolabFreeBusyPast $ uid $ userPassword ) ) +olcObjectClasses: ( 1.3.6.1.4.1.19414.2.2.9 NAME 'kolabSharedFolder' DESC 'Kolab public shared folder' SUP top AUXILIARY MUST cn MAY ( acl $ alias $ cyrus-userquota $ kolabHomeServer $ kolabFolderType $ kolabDeleteflag ) ) +olcObjectClasses: ( 1.3.6.1.4.1.5322.13.1.1 NAME 'kolabNamedObject' SUP top STRUCTURAL MAY (cn $ ou) ) +olcObjectClasses: ( 1.3.6.1.4.1.19414.3.2.2 NAME 'kolabInetOrgPerson' DESC 'Kolab Internet Organizational Person' SUP top AUXILIARY MAY ( c $ alias $ kolabHomeServer $ kolabHomeMTA $ unrestrictedMailSize $ kolabDelegate $ kolabEncryptedPassword $ cyrus-userquota $ kolabInvitationPolicy $ kolabFreeBusyFuture $ calFBURL $ kolabVacationBeginDateTime $ kolabVacationEndDateTime $ kolabVacationResendInterval $ kolabVacationAddress $ kolabVacationReplyToUCE $ kolabVacationReactDomain $ kolabForwardAddress $ kolabForwardKeepCopy $ kolabForwardUCE $ kolabDeleteflag $ kolabComment ) ) +olcObjectClasses: ( 1.3.6.1.4.1.19414.3.2.3 NAME 'kolabOrganization' DESC 'RFC2256: a Kolab organization' SUP organization STRUCTURAL MAY ( c $ mail $ kolabDeleteflag $ alias ) ) +olcObjectClasses: ( 1.3.6.1.4.1.19414.3.2.4 NAME 'kolabOrganizationalUnit' DESC 'a Kolab organizational unit' SUP organizationalUnit STRUCTURAL MAY ( c $ mail $ kolabDeleteflag $ alias ) ) +olcObjectClasses: ( 1.3.6.1.4.1.19414.3.2.5 NAME 'kolabGroupOfNames' DESC 'Kolab group of names (DNs) derived from RFC2256' SUP top AUXILIARY MAY ( mail $ kolabDeleteflag ) ) diff --git a/trunk/gosa-plugins/kolab/contrib/kolab2.schema b/trunk/gosa-plugins/kolab/contrib/kolab2.schema new file mode 100644 index 000000000..29b00528c --- /dev/null +++ b/trunk/gosa-plugins/kolab/contrib/kolab2.schema @@ -0,0 +1,680 @@ +# $Id: kolab2.schema,v 1.27 2007/10/17 17:57:13 thomas Exp $ +# (c) 2003, 2004 Tassilo Erlewein +# (c) 2003-2007 Martin Konold +# (c) 2003 Achim Frank +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# The name of the author may not be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# This schema highly depends on the core.schema, cosine.schema and the inetorgperson.schema +# as provided by 3rd parties like OpenLDAP. +# +# slapd.conf then looks like +# include /kolab/etc/openldap/schema/core.schema +# include /kolab/etc/openldap/schema/cosine.schema +# include /kolab/etc/openldap/schema/inetorgperson.schema +# include /kolab/etc/openldap/schema/rfc2739.schema +# include /kolab/etc/openldap/schema/kolab2.schema + +# +#################### +# kolab attributes # +#################### + +# helper attribute to make the kolab root easily findable in +# a big ldap directory +attributetype ( 1.3.6.1.4.1.19414.2.1.1 + NAME ( 'k' 'kolab' ) + DESC 'Kolab attribute' + SUP name ) + +# kolabDeleteflag used to be a boolean but describes with Kolab 2 +# the fqdn of the server which is requested to delete this objects +# in its local store +attributetype ( 1.3.6.1.4.1.19414.2.1.2 + NAME 'kolabDeleteflag' + DESC 'Per host deletion status' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# alias used to provide alternative rfc822 email addresses for kolab users +attributetype ( 1.3.6.1.4.1.19414.2.1.3 + NAME 'alias' + DESC 'RFC1274: RFC822 Mailbox' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# kolabEncryptedPassword is an asymmetrically (RSA) encrypted copy of the +# cleartext password. This is required in order to pass the password from +# the maintainance/administration application to the kolabHomeServer running the +# resource handler application in a secure manner. +# Actually this attribute is deprecated as of Kolab 2.1. Instead we grant the +# calendar user dn: cn=calendar,cn=internal,dc=yourcompany,dc=com access to +# the respective calendar folder using IMAP ACLs. +attributetype ( 1.3.6.1.4.1.19419.2.1.4 + NAME 'kolabEncryptedPassword' + DESC 'base64 encoded public key encrypted Password' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +# hostname including the domain name like kolab-master.yourcompany.com +attributetype ( 1.3.6.1.4.1.19414.2.1.5 + NAME ( 'fqhostname' 'fqdnhostname' ) + DESC 'Fully qualified Hostname including full domain component' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# fqdn of all hosts in a multi-location or cluster setup +attributetype ( 1.3.6.1.4.1.19414.2.1.6 + NAME 'kolabHost' + DESC 'Multivalued -- list of hostnames in a Kolab setup' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# fqdn of the server containg the actual user mailbox +attributetype ( 1.3.6.1.4.1.19419.1.1.1.1 + NAME 'kolabHomeServer' + DESC 'server which keeps the users mailbox' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# flag for allowing unrestriced length of mails +attributetype ( 1.3.6.1.4.1.19419.1.1.1.2 + NAME 'unrestrictedMailSize' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +# Specifies the email delegates. +# An email delegate can send email on behalf of the account +# which means using the "from" of the account. +# Delegates are specified by the syntax of rfc822 email addresses. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.3 + NAME 'kolabDelegate' + DESC 'Kolab user allowed to act as delegates - RFC822 Mailbox/Alias' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# For user, group and resource Kolab accounts +# Describes how to respond to invitations +# We keep the attribute as a string, but actually it can only have one +# of the following values: +# +# ACT_ALWAYS_ACCEPT +# ACT_ALWAYS_REJECT +# ACT_REJECT_IF_CONFLICTS +# ACT_MANUAL_IF_CONFLICTS +# ACT_MANUAL +# In addition one of these values may be prefixed with a primary email +# address followed by a colon like +# user@domain.tld: ACT_ALWAYS_ACCEPT +attributetype ( 1.3.6.1.4.1.19419.1.1.1.4 + NAME ( 'kolabInvitationPolicy' 'kolabResourceAction' ) + DESC 'defines how to respond to invitations' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# time span from now to the future used for the free busy data +# measured in days +attributetype ( 1.3.6.1.4.1.19419.1.1.1.5 + NAME 'kolabFreeBusyFuture' + DESC 'time in days for fb data towards the future' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + +# time span from now to the past used for the free busy data +# measured in days +attributetype ( 1.3.6.1.4.1.19419.1.1.1.6 + NAME 'kolabFreeBusyPast' + DESC 'time in days for fb data towards the past' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + +# fqdn of the server as the default SMTP MTA +# not used in Kolab 2 currently as in Kolab 2 the +# default MTA is equivalent to the kolabHomeServer +attributetype ( 1.3.6.1.4.1.19419.1.1.1.7 + NAME 'kolabHomeMTA' + DESC 'fqdn of default MTA' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} + SINGLE-VALUE ) + +# Begin date of Kolab vacation period. Sender will +# be notified every kolabVacationResendIntervall days +# that recipient is absent until kolabVacationEnd. +# Values in this syntax are encoded as printable strings, +# represented as specified in X.208. +# Note that the time zone must be specified. +# For Kolab we limit ourself to GMT +# YYYYMMDDHHMMZ e.g. 200512311458Z. +# see also: rfc 2252. +# Currently this attribute is not used in Kolab. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.8 + NAME 'kolabVacationBeginDateTime' + DESC 'Begin date of vacation' + EQUALITY generalizedTimeMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 + SINGLE-VALUE ) + +# End date of Kolab vacation period. Sender will +# be notified every kolabVacationResendIntervall days +# that recipient is absent starting from kolabVacationBeginDateTime. +# Values in this syntax are encoded as printable strings, +# represented as specified in X.208. +# Note that the time zone must be specified. +# For Kolab we limit ourself to GMT +# YYYYMMDDHHMMZ e.g. 200601012258Z. +# see also: rfc 2252. +# Currently this attribute is not used in Kolab. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.9 + NAME 'kolabVacationEndDateTime' + DESC 'End date of vacation' + EQUALITY generalizedTimeMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 + SINGLE-VALUE ) + +# Intervall in days after which senders get +# another vacation message. +# Currently this attribute is not used in Kolab. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.10 + NAME 'kolabVacationResendInterval' + DESC 'Vacation notice interval in days' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + +# Email recipient addresses which are handled by the +# vacation script. There can be multiple kolabVacationAddress +# entries for each kolabInetOrgPerson. +# Default is the primary email address and all +# email aliases of the kolabInetOrgPerson. +# Currently this attribute is not used in Kolab. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.11 + NAME 'kolabVacationAddress' + DESC 'Email address for vacation to response upon' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# Enable sending vacation notices in reaction +# unsolicited commercial email. +# Default is no. +# Currently this attribute is not used in Kolab. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.12 + NAME 'kolabVacationReplyToUCE' + DESC 'Enable vacation notices to UCE' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +# Email recipient domains which are handled by the +# vacation script. There can be multiple kolabVacationReactDomain +# entries for each kolabInetOrgPerson +# Default is to handle all domains. +# Currently this attribute is not used in Kolab. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.13 + NAME 'kolabVacationReactDomain' + DESC 'Multivalued -- Email domain for vacation to response upon' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# Forward all incoming emails except UCE if kolabForwardUCE +# is not set to this email address. +# There can be multiple kolabForwardAddress entries for +# each kolabInetOrgPerson. +# Currently this attribute is not used in Kolab. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.14 + NAME 'kolabForwardAddress' + DESC 'Forward email to this address' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# Keep local copy when forwarding emails to list of +# kolabForwardAddress. +# Default is no. +# Currently this attribute is not used in Kolab. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.15 + NAME 'kolabForwardKeepCopy' + DESC 'Keep copy when forwarding' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +# Enable forwarding of UCE. +# Default is yes. +# Currently this attribute is not used in Kolab. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.16 + NAME 'kolabForwardUCE' + DESC 'Enable forwarding of mails known as UCE' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +# comment when creating or deleting a kolab object +# a comment might be appropriate. This is most useful +# for tracability when users get moved to the graveyard +# instead of being really deleted. Every entry must be prefixed +# with an ISO 8601 date string e.g 200604301458Z. All times must +# be in zulu timezone. +attributetype ( 1.3.6.1.4.1.19419.1.1.1.17 + NAME 'kolabComment' + DESC 'multi-value comment' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} ) + +# describes the allowed or disallowed smtp addresses for +# recipients. If this attribute is not set for a user no +# kolab recipient policy does apply. +# example entries: +# .tld - allow mail to every recipient for this tld +# domain.tld - allow mail to everyone in domain.tld +# .domain.tld - allow mail to everyone in domain.tld and its subdomains +# user@domain.tld - allow mail to explicit user@domain.tld +# user@ - allow mail to this user but any domain +# -.tld - disallow mail to every recipient for this tld +# -domain.tld - disallow mail to everyone in domain.tld +# -.domain.tld - disallow mail to everyone in domain.tld and its subdomains +# -user@domain.tld - disallow mail to explicit user@domain.tld +# -user@ - disallow mail to this user but any domain +attributetype ( 1.3.6.1.4.1.19419.1.1.1.18 + NAME 'kolabAllowSMTPRecipient' + DESC 'SMTP address allowed for destination (multi-valued)' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{512} ) + +# kolabFolderType describes the kind of Kolab folder +# as defined in the kolab format specification. +# We will annotate all folders with an entry +# /vendor/kolab/folder-type containing the attribute +# value.shared set to: [.]. +# The can be: mail, event, journal, task, note, +# or contact. The for a mail folder can be +# inbox, drafts, sentitems, or junkemail (this one holds +# spam mails). For the other s, it can only be +# default, or not set. For other types of folders +# supported by the clients, these should be prefixed with +# "k-" for KMail, "h-" for Horde and "o-" for Outlook, and +# look like for example "kolab.o-voicemail". Other third-party +# clients shall use the "x-" prefix. +# We then use the ANNOTATEMORE IMAP extension to +# associate the folder type with a folder. +attributetype ( 1.3.6.1.4.1.19414.2.1.7 + NAME 'kolabFolderType' + DESC 'type of a kolab folder' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} + SINGLE-VALUE ) + +###################### +# postfix attributes # +###################### + +attributetype ( 1.3.6.1.4.1.19414.2.1.501 + NAME 'postfix-mydomain' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.502 + NAME 'postfix-relaydomains' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.503 + NAME 'postfix-mydestination' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.504 + NAME 'postfix-mynetworks' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.505 + NAME 'postfix-relayhost' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.506 + NAME 'postfix-transport' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.507 + NAME 'postfix-enable-virus-scan' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.508 + NAME 'postfix-allow-unauthenticated' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.509 + NAME 'postfix-virtual' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.510 + NAME 'postfix-relayport' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +########################## +# cyrus imapd attributes # +########################## + +attributetype ( 1.3.6.1.4.1.19414.2.1.601 + NAME 'cyrus-autocreatequota' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.602 + NAME 'cyrus-admins' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# enable plain imap without ssl +attributetype ( 1.3.6.1.4.1.19414.2.1.603 + NAME 'cyrus-imap' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE ) + +# enable legacy pop3 +attributetype ( 1.3.6.1.4.1.19414.2.1.604 + NAME 'cyrus-pop3' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +# user specific quota on the cyrus imap server +attributetype ( 1.3.6.1.4.1.19414.2.1.605 + NAME 'cyrus-userquota' + DESC 'Mailbox hard quota limit in MB' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +# cyrus imapd access control list +# acls work with users and groups +#attributetype ( 1.3.6.1.4.1.19414.2.1.651 +# NAME 'acl' +# EQUALITY caseIgnoreIA5Match +# SUBSTR caseIgnoreIA5SubstringsMatch +# SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +# enable secure imap +attributetype ( 1.3.6.1.4.1.19414.2.1.606 + NAME 'cyrus-imaps' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +# enable secure pop3 +attributetype ( 1.3.6.1.4.1.19414.2.1.607 + NAME 'cyrus-pop3s' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +# enable sieve support (required for forward and vacation services) +attributetype ( 1.3.6.1.4.1.19414.2.1.608 + NAME 'cyrus-sieve' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +# installation wide percentage which determines when to send a +# warning to the user +attributetype ( 1.3.6.1.4.1.19414.2.1.609 + NAME 'cyrus-quotawarn' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +############################# +# apache and php attributes # +############################# + +# enable plain http (no ssl) +attributetype ( 1.3.6.1.4.1.19414.2.1.701 + NAME 'apache-http' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +# Allow freebusy download without authenticating first +attributetype ( 1.3.6.1.4.1.19414.2.1.702 + NAME 'apache-allow-unauthenticated-fb' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +########################## +# kolabfilter attributes # +########################## + +# enable trustable From: +attributetype ( 1.3.6.1.4.1.19414.2.1.750 + NAME 'kolabfilter-verify-from-header' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +# should Sender header be allowed instead of From +# when present? +attributetype ( 1.3.6.1.4.1.19414.2.1.751 + NAME 'kolabfilter-allow-sender-header' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +# Should reject messages with From headers that dont match +# the envelope? Default is to rewrite the header +attributetype ( 1.3.6.1.4.1.19414.2.1.752 + NAME 'kolabfilter-reject-forged-from-header' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +# Enable the Kolab Policy Daemon. If false or not +# set don't use the Kolab Policy Daemon +attributetype ( 1.3.6.1.4.1.19414.2.1.800 + NAME 'kolabPolicyDaemon' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +###################################################### +# proftpd attributes (unused since Kolab Server 2.2) # +###################################################### + +attributetype ( 1.3.6.1.4.1.19414.2.1.901 + NAME 'proftpd-defaultquota' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.902 + NAME 'proftpd-ftp' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 ) + +attributetype ( 1.3.6.1.4.1.19414.2.1.903 + NAME 'proftpd-userPassword' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +######################## +# kolab object classes # +######################## + +# main kolab server configuration +# storing global values and user specific default values +# like kolabFreeBusyFuture and kolabFreeBusyPast +objectclass ( 1.3.6.1.4.1.19414.2.2.1 + NAME 'kolab' + DESC 'Kolab server configuration' + SUP top STRUCTURAL + MUST k + MAY ( kolabHost $ + postfix-mydomain $ + postfix-relaydomains $ + postfix-mydestination $ + postfix-mynetworks $ + postfix-relayhost $ + postfix-relayport $ + postfix-transport $ + postfix-virtual $ + postfix-enable-virus-scan $ + postfix-allow-unauthenticated $ + cyrus-quotawarn $ + cyrus-autocreatequota $ + cyrus-admins $ + cyrus-imap $ + cyrus-pop3 $ + cyrus-imaps $ + cyrus-pop3s $ + cyrus-sieve $ + apache-http $ + apache-allow-unauthenticated-fb $ + kolabfilter-verify-from-header $ + kolabfilter-allow-sender-header $ + kolabfilter-reject-forged-from-header $ + kolabPolicyDaemon $ + proftpd-ftp $ + proftpd-defaultquota $ + kolabFreeBusyFuture $ + kolabFreeBusyPast $ + uid $ + userPassword ) ) + +# public folders are typically visible to everyone subscribed to +# the server without the need for an extra login. Subfolders are +# defined using the hiarchy seperator '/' e.g. "sf/sub1". Please note +# that the term public folder is prefered to shared folder because +# normal user mailboxes can also share folders using acls. +objectclass ( 1.3.6.1.4.1.19414.2.2.9 + NAME 'kolabSharedFolder' + DESC 'Kolab public shared folder' + SUP top AUXILIARY + MUST cn + MAY ( acl $ + alias $ + cyrus-userquota $ + kolabHomeServer $ + kolabFolderType $ + kolabDeleteflag ) ) + +# kolabNamedObject is used as a plain node for the LDAP tree. +# In contrast to unix filesystem directories LDAP nodes can +# and often do also have contents/attributes. We use the +# kolabNamedObject in order to put some structure in the +# LDAP directory tree. +objectclass ( 1.3.6.1.4.1.5322.13.1.1 + NAME 'kolabNamedObject' + SUP top STRUCTURAL + MAY (cn $ ou) ) + +# kolab account +# we use an auxiliary in order to ease integration +# with existing inetOrgPerson objects +# Please note that userPassword is a may +# attribute in the schema but is mandatory for +# Kolab +objectclass ( 1.3.6.1.4.1.19414.3.2.2 + NAME 'kolabInetOrgPerson' + DESC 'Kolab Internet Organizational Person' + SUP top AUXILIARY + MAY ( c $ + alias $ + kolabHomeServer $ + kolabHomeMTA $ + unrestrictedMailSize $ + kolabDelegate $ + kolabEncryptedPassword $ + cyrus-userquota $ + kolabInvitationPolicy $ + kolabFreeBusyFuture $ + calFBURL $ + kolabVacationBeginDateTime $ + kolabVacationEndDateTime $ + kolabVacationResendInterval $ + kolabVacationAddress $ + kolabVacationReplyToUCE $ + kolabVacationReactDomain $ + kolabForwardAddress $ + kolabForwardKeepCopy $ + kolabForwardUCE $ + kolabAllowSMTPRecipient $ + kolabDeleteflag $ + kolabComment ) ) + +# kolab organization with country support +objectclass ( 1.3.6.1.4.1.19414.3.2.3 + NAME 'kolabOrganization' + DESC 'RFC2256: a Kolab organization' + SUP organization STRUCTURAL + MAY ( c $ + mail $ + kolabDeleteflag $ + alias ) ) + +# kolab organizational unit with country support +objectclass ( 1.3.6.1.4.1.19414.3.2.4 + NAME 'kolabOrganizationalUnit' + DESC 'a Kolab organizational unit' + SUP organizationalUnit STRUCTURAL + MAY ( c $ + mail $ + kolabDeleteflag $ + alias ) ) + +# kolab groupOfNames with extra kolabDeleteflag and the required +# attribute mail. +# The mail attribute for kolab objects of the type kolabGroupOfNames +# is not arbitrary but MUST be a single attribute of the form +# of an valid SMTP address with the CN as the local part. +# E.g cn@kolabdomain (e.g. employees@mydomain.com). The +# mail attribute MUST be globally unique. +objectclass ( 1.3.6.1.4.1.19414.3.2.5 + NAME 'kolabGroupOfNames' + DESC 'Kolab group of names (DNs) derived from RFC2256' + SUP top AUXILIARY + MAY ( mail $ + kolabDeleteflag $ + member ) ) diff --git a/trunk/gosa-plugins/kolab/contrib/rfc2739.ldif b/trunk/gosa-plugins/kolab/contrib/rfc2739.ldif new file mode 100644 index 000000000..44e908f74 --- /dev/null +++ b/trunk/gosa-plugins/kolab/contrib/rfc2739.ldif @@ -0,0 +1,12 @@ +dn: cn=rfc2739,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: rfc2739 +olcAttributeTypes: ( 1.2.840.113556.1.4.478 NAME 'calCalURI' DESC 'RFC2739: URI of entire default calendar' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE userApplications ) +olcAttributeTypes: (1.2.840.113556.1.4.479 NAME 'calFBURL' DESC 'RFC2739: URI to the users default freebusy data' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE userApplications ) +olcAttributeTypes: (1.2.840.113556.1.4.480 NAME 'calCAPURI' DESC 'RFC2739: URI used to communicate with the users calendar' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE userApplications ) +olcAttributeTypes: (1.2.840.113556.1.4.481 NAME 'calCalAdrURI' DESC 'RFC2739: URI for event equests destination' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE userApplications ) +olcAttributeTypes: (1.2.840.113556.1.4.482 NAME 'calOtherCalURIs' DESC 'RFC2739: multi-value URI for snapshots of other calendars' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE userApplications ) +olcAttributeTypes: (1.2.840.113556.1.4.483 NAME 'calOtherFBURLs' DESC 'RFC2739: multi-value URI for other free/busy data' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE userApplications ) +olcAttributeTypes: (1.2.840.113556.1.4.484 NAME 'calOtherCAPURIs' DESC 'RFC2739: multi-value URI to other calendars' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE userApplications ) +olcAttributeTypes: (1.2.840.113556.1.4.485 NAME 'calOtherCalAdrURIs' DESC 'RFC2739: multi-value URI to other request destinations' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE userApplications ) +olcObjectClasses: (1.2.840.113556.1.5.87 NAME 'calEntry' DESC 'RFC2739: Calendar Entry' SUP top AUXILIARY MAY ( calCalURI $ calFBURL $ calOtherCalURIs $ calOtherFBURLs $ calCAPURI $ calOtherCAPURIs ) ) diff --git a/trunk/gosa-plugins/kolab/contrib/rfc2739.schema b/trunk/gosa-plugins/kolab/contrib/rfc2739.schema new file mode 100644 index 000000000..668628e96 --- /dev/null +++ b/trunk/gosa-plugins/kolab/contrib/rfc2739.schema @@ -0,0 +1,134 @@ +# (c) 2004 Martin Konold + +# This schema is derived from RFC 2739 and may act as a substitute +# when used with OpenLDAP as the original schema from RFC 2739 +# is syntactically not accepted by OpenLDAP 2.2.14 +# +# Copyright (C) The Internet Society (2000). All Rights Reserved. +# +# This document and translations of it may be copied and furnished to +# others, and derivative works that comment on or otherwise explain it +# or assist in its implementation may be prepared, copied, published +# and distributed, in whole or in part, without restriction of any +# kind, provided that the above copyright notice and this paragraph are +# included on all such copies and derivative works. However, this +# document itself may not be modified in any way, such as by removing +# the copyright notice or references to the Internet Society or other +# Internet organizations, except as needed for the purpose of +# developing Internet standards in which case the procedures for +# copyrights defined in the Internet Standards process must be +# followed, or as required to translate it into languages other than +# English. +# +# The limited permissions granted above are perpetual and will not be +# revoked by the Internet Society or its successors or assigns. +# +# This document and the information contained herein is provided on an +# "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING +# TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING +# BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION +# HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF +# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +# slapd.conf then looks like +# include /kolab/etc/openldap/schema/core.schema +# include /kolab/etc/openldap/schema/cosine.schema +# include /kolab/local/etc/openldap/schema/inetorgperson.schema +# include /kolab/local/etc/openldap/schema/rfc2739.schema +# include /kolab/local/etc/openldap/schema/kolab2.schema + +# +################################ +# rfc 2739 calendar attributes # +################################ + +# contains the URI to a snapshot of the user's entire +# default calendar +attributetype ( 1.2.840.113556.1.4.478 + NAME 'calCalURI' + DESC 'RFC2739: URI of entire default calendar' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + USAGE userApplications ) + +# contains the URI to the user's default +# busy time data +attributetype (1.2.840.113556.1.4.479 + NAME 'calFBURL' + DESC 'RFC2739: URI to the users default freebusy data' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + USAGE userApplications ) + +# contains a URI that can be used to communicate with +# the user's calendar +attributetype (1.2.840.113556.1.4.480 + NAME 'calCAPURI' + DESC 'RFC2739: URI used to communicate with the users calendar' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + USAGE userApplications ) + +# contains a URI that points to the location to which event +# requests should be sent for that user +attributetype (1.2.840.113556.1.4.481 + NAME 'calCalAdrURI' + DESC 'RFC2739: URI for event equests destination' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + USAGE userApplications ) + +# multi-valued property containing URIs to snapshots of +# other calendars that the user may have +attributetype (1.2.840.113556.1.4.482 + NAME 'calOtherCalURIs' + DESC 'RFC2739: multi-value URI for snapshots of other calendars' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + USAGE userApplications ) + +# multi-valued property containing URIs to snapshots of other +# free/busy data that the user may have +attributetype (1.2.840.113556.1.4.483 + NAME 'calOtherFBURLs' + DESC 'RFC2739: multi-value URI for other free/busy data' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + USAGE userApplications ) + +# multi-valued property containing URI to other calendars that +# the user may have +attributetype (1.2.840.113556.1.4.484 + NAME 'calOtherCAPURIs' + DESC 'RFC2739: multi-value URI to other calendars' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + USAGE userApplications ) + +# URIs to other locations that a user may want +# event requests sent to +attributetype (1.2.840.113556.1.4.485 + NAME 'calOtherCalAdrURIs' + DESC 'RFC2739: multi-value URI to other request destinations' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + USAGE userApplications ) + +objectclass (1.2.840.113556.1.5.87 + NAME 'calEntry' + DESC 'RFC2739: Calendar Entry' + SUP top AUXILIARY + MAY ( calCalURI $ + calFBURL $ + calOtherCalURIs $ + calOtherFBURLs $ + calCAPURI $ + calOtherCAPURIs ) ) diff --git a/trunk/gosa-plugins/kolab/help/guide.xml b/trunk/gosa-plugins/kolab/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/kolab/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/kolab/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..c35897430 --- /dev/null +++ b/trunk/gosa-plugins/kolab/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,428 @@ +# translation of messages.po to deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:52+0100\n" +"PO-Revision-Date: 2008-12-19 08:56+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/systems/services/kolab/servkolab.tpl:6 +msgid "Generic" +msgstr "Allgemein" + +#: admin/systems/services/kolab/servkolab.tpl:9 +#: admin/systems/services/kolab/class_servKolab.inc:438 +msgid "Postfix mydomain" +msgstr "Postfix 'mydomain'" + +#: admin/systems/services/kolab/servkolab.tpl:18 +#: admin/systems/services/kolab/class_servKolab.inc:440 +msgid "Cyrus admins" +msgstr "Cyrus Administratoren" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#: admin/systems/services/kolab/class_servKolab.inc:327 +msgid "Mail domains" +msgstr "Mail-Domänen" + +#: admin/systems/services/kolab/servkolab.tpl:27 +msgid "Postfix mydestination" +msgstr "Postfix 'mydestination'" + +#: admin/systems/services/kolab/servkolab.tpl:43 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/kolab/servkolab.tpl:52 +#: admin/systems/services/kolab/class_servKolab.inc:442 +msgid "POP3 service" +msgstr "POP3-Dienst" + +#: admin/systems/services/kolab/servkolab.tpl:62 +#: admin/systems/services/kolab/class_servKolab.inc:443 +msgid "POP3/SSL service" +msgstr "POP3/SSL-Dienst" + +#: admin/systems/services/kolab/servkolab.tpl:72 +#: admin/systems/services/kolab/class_servKolab.inc:445 +msgid "IMAP service" +msgstr "IMAP-Dienst" + +#: admin/systems/services/kolab/servkolab.tpl:82 +#: admin/systems/services/kolab/class_servKolab.inc:446 +msgid "IMAP/SSL service" +msgstr "IMAP/SSL-Dienst" + +#: admin/systems/services/kolab/servkolab.tpl:92 +#: admin/systems/services/kolab/class_servKolab.inc:448 +msgid "Sieve service" +msgstr "Sieve-Dienst" + +#: admin/systems/services/kolab/servkolab.tpl:102 +msgid "FTP FreeBusy service (legacy, not interoperable with Kolab2 FreeBusy)" +msgstr "FTP Frei/Belegt-Dienst (alt, inkompatibel mit Kolab 2)" + +#: admin/systems/services/kolab/servkolab.tpl:112 +msgid "HTTP FreeBusy service (legacy)" +msgstr "HTTP Frei/Belegt-Dienst (alt)" + +#: admin/systems/services/kolab/servkolab.tpl:122 +msgid "Amavis email scanning (virus/spam)" +msgstr "Email scannen (Virus/Spam)" + +#: admin/systems/services/kolab/servkolab.tpl:133 +#: admin/systems/services/kolab/class_servKolab.inc:453 +msgid "Quota settings" +msgstr "Kontingent-Einstellungen" + +#: admin/systems/services/kolab/servkolab.tpl:151 +msgid "Free/Busy settings" +msgstr "Frei/Belegt-Einstellungen" + +#: admin/systems/services/kolab/servkolab.tpl:157 +msgid "Allow unauthenticated downloading of Free/Busy information" +msgstr "Erlaube nicht-authentifiziertes Herunterladen von Frei/Belegt-Informationen" + +#: admin/systems/services/kolab/servkolab.tpl:175 +#: admin/systems/services/kolab/class_servKolab.inc:458 +msgid "SMTP privileged networks" +msgstr "SMTP privilegierte Netzwerke" + +#: admin/systems/services/kolab/servkolab.tpl:180 +msgid "Hosts/networks allowed to relay" +msgstr "Rechner/Netzwerke, denen Weiterleitung erlaubt ist" + +#: admin/systems/services/kolab/servkolab.tpl:185 +msgid "Enter multiple values, seperated with" +msgstr "Eingabe mehrerer Werte, getrennt durch" + +#: admin/systems/services/kolab/servkolab.tpl:198 +msgid "SMTP smarthost/relayhost" +msgstr "SMTP smarthost/relayhost" + +#: admin/systems/services/kolab/servkolab.tpl:206 +#: admin/systems/services/kolab/class_servKolab.inc:459 +msgid "Enable MX lookup for relayhost" +msgstr "Aktiviere MX lookup für relayhost" + +#: admin/systems/services/kolab/servkolab.tpl:211 +msgid "Host used to relay mails" +msgstr "Host für Mail Relay" + +#: admin/systems/services/kolab/servkolab.tpl:227 +#: admin/systems/services/kolab/class_servKolab.inc:461 +msgid "Accept Internet Mail" +msgstr "Akzeptiere Internet-Mail" + +#: admin/systems/services/kolab/servkolab.tpl:235 +msgid "Accept mail from other domains over non-authenticated SMTP" +msgstr "Akzeptiere Mails von anderen Domänen über nicht-authentifiziertes SMTP" + +#: admin/systems/services/kolab/class_servKolab.inc:107 +#, php-format +msgid "Include data from %s days in the past when creating free/busy lists" +msgstr "" +"Berücksichtige %s Tage in der Vergangenheit beim Erstellen von Frei/Belegt-" +"Listen" + +#: admin/systems/services/kolab/class_servKolab.inc:112 +#, php-format +msgid "Warn users when using more than %s%% of their mail quota" +msgstr "Warne Benutzer, wenn sie mehr als %s%% ihres Mail-Kontigentes benutzen" + +#: admin/systems/services/kolab/class_servKolab.inc:154 +msgid "Remove" +msgstr "Entfernen" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +msgid "Internal error" +msgstr "Interner Fehler" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +msgid "Kolab account does not exist!" +msgstr "Kolab-Konto existiert nicht!" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Error" +msgstr "Fehler" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +msgid "hostname" +msgstr "Hostname" + +#: admin/systems/services/kolab/class_servKolab.inc:217 +#: admin/systems/services/kolab/class_servKolab.inc:233 +#: admin/systems/services/kolab/class_servKolab.inc:402 +#: personal/connectivity/kolab/class_kolabAccount.inc:339 +#: personal/connectivity/kolab/class_kolabAccount.inc:476 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/systems/services/kolab/class_servKolab.inc:309 +#: admin/systems/services/kolab/class_servKolab.inc:311 +msgid "Future days" +msgstr "Tage in der Zukunft" + +#: admin/systems/services/kolab/class_servKolab.inc:315 +#: admin/systems/services/kolab/class_servKolab.inc:319 +msgid "Quota" +msgstr "Kontingent" + +#: admin/systems/services/kolab/class_servKolab.inc:317 +msgid "Please choose a value between 1 and 100 for Quota settings." +msgstr "Bitte wählen Sie einen Kontingent-Wert zwischen 1 und 100." + +#: admin/systems/services/kolab/class_servKolab.inc:323 +msgid "Privileged networks" +msgstr "Privilegierte Netzwerke" + +#: admin/systems/services/kolab/class_servKolab.inc:419 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Kolab mail service" +msgstr "Kolab Mail-Dienst" + +#: admin/systems/services/kolab/class_servKolab.inc:429 +#: personal/connectivity/kolab/class_kolabAccount.inc:5 +#: personal/connectivity/kolab/class_kolabAccount.inc:512 +msgid "Kolab" +msgstr "Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:439 +msgid "My destination" +msgstr "Mein Ziel" + +#: admin/systems/services/kolab/class_servKolab.inc:449 +msgid "FTP FreeBusy service" +msgstr "FTP Frei/Belegt-Dienst" + +#: admin/systems/services/kolab/class_servKolab.inc:450 +msgid "HTTP FreeBusy service" +msgstr "HTTP Frei/Belegt-Dienst" + +#: admin/systems/services/kolab/class_servKolab.inc:451 +msgid "Enable virus scan" +msgstr "Virus-Scan aktivieren" + +#: admin/systems/services/kolab/class_servKolab.inc:455 +msgid "Allow unauthenticated free busy" +msgstr "Erlaube nicht-authentifiziertes Herunterladen von Frei/Belegt-Informationen" + +#: admin/systems/services/kolab/class_servKolab.inc:456 +msgid "kolabFreeBusyFuture" +msgstr "Kolab Frei/Belegt Ausblick" + +#: admin/systems/services/kolab/class_servKolab.inc:460 +msgid "Relayhost" +msgstr "Relay Host" + +#: personal/connectivity/kolab/class_kolabAccount.inc:6 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Mail address" +msgstr "Mail-Adresse" + +#: personal/connectivity/kolab/class_kolabAccount.inc:204 +msgid "Always accept" +msgstr "Immer annehmen" + +#: personal/connectivity/kolab/class_kolabAccount.inc:205 +msgid "Always reject" +msgstr "Immer ablehnen" + +#: personal/connectivity/kolab/class_kolabAccount.inc:206 +msgid "Reject if conflicts" +msgstr "Im Konfliktfall ablehnen" + +#: personal/connectivity/kolab/class_kolabAccount.inc:207 +msgid "Manual if conflicts" +msgstr "Im Konfliktfall manuell bearbeiten" + +#: personal/connectivity/kolab/class_kolabAccount.inc:208 +msgid "Manual" +msgstr "Manuell" + +#: personal/connectivity/kolab/class_kolabAccount.inc:256 +msgid "Anonymous" +msgstr "Anonym" + +#: personal/connectivity/kolab/class_kolabAccount.inc:351 +#: personal/connectivity/kolab/class_kolabAccount.inc:354 +msgid "Free Busy future" +msgstr "Frei/Belegt Ausblick" + +#: personal/connectivity/kolab/class_kolabAccount.inc:359 +#: personal/connectivity/kolab/class_kolabAccount.inc:362 +msgid "Free Busy url" +msgstr "Frei/Belegt URL" + +#: personal/connectivity/kolab/class_kolabAccount.inc:376 +#, php-format +msgid "The invitation policy entry for address '%s' is not valid." +msgstr "Die Einladungs-Richtlinie für die Adresse '%s' ist ungültig." + +#: personal/connectivity/kolab/class_kolabAccount.inc:384 +#, php-format +msgid "There's no mail user with address '%s' for your invitation policy!" +msgstr "" +"Es gibt keinen Mail Benutzer mit der Adresse %s für Ihre Einladungs-" +"Richtlinie!" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +msgid "Kolab account settings" +msgstr "Kolab Konto-Einstellungen" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/kolab/class_kolabAccount.inc:517 +msgid "My account" +msgstr "Mein Konto" + +#: personal/connectivity/kolab/class_kolabAccount.inc:522 +msgid "Free busy future" +msgstr "Frei/Belegt Ausblick" + +#: personal/connectivity/kolab/class_kolabAccount.inc:523 +msgid "Mail size restriction" +msgstr "Beschränkung der Nachrichtengröße" + +#: personal/connectivity/kolab/class_kolabAccount.inc:524 +msgid "Free busy information" +msgstr "Frei/Belegt-Information" + +#: personal/connectivity/kolab/class_kolabAccount.inc:525 +#: personal/connectivity/kolab/kolab.tpl:51 +#: personal/connectivity/kolab/kolab.tpl:63 +msgid "Delegations" +msgstr "Stellvertreter" + +#: personal/connectivity/kolab/class_kolabAccount.inc:526 +#: personal/connectivity/kolab/kolab.tpl:119 +msgid "Invitation policy" +msgstr "Einladungs-Richtlinie" + +#: personal/connectivity/kolab/kolab.tpl:3 +#: personal/connectivity/kolab/kolab.tpl:43 +msgid "Kolab account" +msgstr "Kolab-Konto" + +#: personal/connectivity/kolab/kolab.tpl:4 +msgid "" +"The kolab account is currently disabled. It's features can be adjusted if " +"you add a mail account." +msgstr "" +"Das Kolab-Konto ist aktuell deaktiviert. Die Einstellungen können angepasst " +"werden, wenn Sie ein Postfach hinzufügen." + +#: personal/connectivity/kolab/kolab.tpl:83 +msgid "Mail size" +msgstr "Mailgröße" + +#: personal/connectivity/kolab/kolab.tpl:87 +msgid "No mail size restriction for this account" +msgstr "Keine Beschränkung der Mailgröße für dieses Konto" + +#: personal/connectivity/kolab/kolab.tpl:95 +msgid "Free Busy information" +msgstr "Frei/Belegt-Information" + +#: personal/connectivity/kolab/kolab.tpl:98 +msgid "URL" +msgstr "URL" + +#: personal/connectivity/kolab/kolab.tpl:107 +msgid "Future" +msgstr "Zukunft" + +#: personal/connectivity/kolab/kolab.tpl:112 +msgid "days" +msgstr "Tage" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:95 +#: personal/mail/kolab/class_mail-methods-kolab.inc:103 +#: personal/mail/kolab/class_mail-methods-kolab.inc:104 +msgid "Unspecified" +msgstr "Nicht angegeben" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:96 +msgid "Mails" +msgstr "Mails" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:97 +msgid "Tasks" +msgstr "Aufgaben" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:98 +msgid "Journals" +msgstr "Journal" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:99 +msgid "Calendar" +msgstr "Kalendar" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:100 +msgid "Contacts" +msgstr "Kontakte" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:101 +msgid "Notes" +msgstr "Notizen" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:105 +msgid "Inbox" +msgstr "Posteingang" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:106 +msgid "Drafts" +msgstr "Entwürfe" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:107 +msgid "Sent" +msgstr "Gesendet" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:108 +msgid "SPAM" +msgstr "Werbung" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:110 +#: personal/mail/kolab/class_mail-methods-kolab.inc:111 +#: personal/mail/kolab/class_mail-methods-kolab.inc:112 +#: personal/mail/kolab/class_mail-methods-kolab.inc:113 +#: personal/mail/kolab/class_mail-methods-kolab.inc:114 +msgid "Default" +msgstr "Standard" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:129 +msgid "Mail settings cannot be removed while there are delegations configured!" +msgstr "" +"Die Mail-Einstellungen können nicht entfernt werden solange Vertretungen " +"vorhanden sind!" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:227 +msgid "Waiting for kolab to remove mail properties..." +msgstr "Warte darauf, daß Kolab die Mail-Einstellungen entfernt..." + +#: personal/mail/kolab/class_mail-methods-kolab.inc:230 +msgid "Please remove the mail settings first!" +msgstr "Bitte entfernen Sie zunächst die Mail-Einstellungen!" + diff --git a/trunk/gosa-plugins/kolab/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/kolab/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..8eab74b53 --- /dev/null +++ b/trunk/gosa-plugins/kolab/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,487 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:52+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/systems/services/kolab/servkolab.tpl:6 +msgid "Generic" +msgstr "Genérico" + +#: admin/systems/services/kolab/servkolab.tpl:9 +#: admin/systems/services/kolab/class_servKolab.inc:438 +msgid "Postfix mydomain" +msgstr "Postfix mydomain" + +#: admin/systems/services/kolab/servkolab.tpl:18 +#: admin/systems/services/kolab/class_servKolab.inc:440 +msgid "Cyrus admins" +msgstr "Administradores Cyrus" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#: admin/systems/services/kolab/class_servKolab.inc:327 +#, fuzzy +msgid "Mail domains" +msgstr "en dominio" + +#: admin/systems/services/kolab/servkolab.tpl:27 +msgid "Postfix mydestination" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:43 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/kolab/servkolab.tpl:52 +#: admin/systems/services/kolab/class_servKolab.inc:442 +msgid "POP3 service" +msgstr "Servicio POP3" + +#: admin/systems/services/kolab/servkolab.tpl:62 +#: admin/systems/services/kolab/class_servKolab.inc:443 +msgid "POP3/SSL service" +msgstr "Servicio POP3/SSL" + +#: admin/systems/services/kolab/servkolab.tpl:72 +#: admin/systems/services/kolab/class_servKolab.inc:445 +msgid "IMAP service" +msgstr "Servicio IMAP" + +#: admin/systems/services/kolab/servkolab.tpl:82 +#: admin/systems/services/kolab/class_servKolab.inc:446 +msgid "IMAP/SSL service" +msgstr "Servicio IMAP/SSL" + +#: admin/systems/services/kolab/servkolab.tpl:92 +#: admin/systems/services/kolab/class_servKolab.inc:448 +msgid "Sieve service" +msgstr "Servicio Sieve" + +#: admin/systems/services/kolab/servkolab.tpl:102 +msgid "FTP FreeBusy service (legacy, not interoperable with Kolab2 FreeBusy)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:112 +msgid "HTTP FreeBusy service (legacy)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:122 +msgid "Amavis email scanning (virus/spam)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:133 +#: admin/systems/services/kolab/class_servKolab.inc:453 +msgid "Quota settings" +msgstr "Configuración de cuotas" + +#: admin/systems/services/kolab/servkolab.tpl:151 +msgid "Free/Busy settings" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:157 +msgid "Allow unauthenticated downloading of Free/Busy information" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:175 +#: admin/systems/services/kolab/class_servKolab.inc:458 +msgid "SMTP privileged networks" +msgstr "Redes privilegiadas SMTP" + +#: admin/systems/services/kolab/servkolab.tpl:180 +msgid "Hosts/networks allowed to relay" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:185 +msgid "Enter multiple values, seperated with" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:198 +msgid "SMTP smarthost/relayhost" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:206 +#: admin/systems/services/kolab/class_servKolab.inc:459 +msgid "Enable MX lookup for relayhost" +msgstr "Permitir búsquedas MX para los relayhost" + +#: admin/systems/services/kolab/servkolab.tpl:211 +msgid "Host used to relay mails" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:227 +#: admin/systems/services/kolab/class_servKolab.inc:461 +msgid "Accept Internet Mail" +msgstr "Aceptar Correo Electrónico de internet" + +#: admin/systems/services/kolab/servkolab.tpl:235 +msgid "Accept mail from other domains over non-authenticated SMTP" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:107 +#, php-format +msgid "Include data from %s days in the past when creating free/busy lists" +msgstr "" +"Incluye información desde hace '%s' días cuando cree listas de presencia" + +#: admin/systems/services/kolab/class_servKolab.inc:112 +#, php-format +msgid "Warn users when using more than %s%% of their mail quota" +msgstr "" +"Avisar a los usuarios de que están usando mas de %s%% de su cuota de correo" + +#: admin/systems/services/kolab/class_servKolab.inc:154 +msgid "Remove" +msgstr "Eliminar" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Internal error" +msgstr "Insertar separador" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Kolab account does not exist!" +msgstr "Configuración cuenta Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Error" +msgstr "Error" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +msgid "hostname" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:217 +#: admin/systems/services/kolab/class_servKolab.inc:233 +#: admin/systems/services/kolab/class_servKolab.inc:402 +#: personal/connectivity/kolab/class_kolabAccount.inc:339 +#: personal/connectivity/kolab/class_kolabAccount.inc:476 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: admin/systems/services/kolab/class_servKolab.inc:309 +#: admin/systems/services/kolab/class_servKolab.inc:311 +msgid "Future days" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:315 +#: admin/systems/services/kolab/class_servKolab.inc:319 +msgid "Quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:317 +msgid "Please choose a value between 1 and 100 for Quota settings." +msgstr "" +"Por favor introduzca un valor entre 1 y 100 para el parámetro de cuota." + +#: admin/systems/services/kolab/class_servKolab.inc:323 +#, fuzzy +msgid "Privileged networks" +msgstr "Redes privilegiadas SMTP" + +#: admin/systems/services/kolab/class_servKolab.inc:419 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Kolab mail service" +msgstr "Añadir el servicio Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:429 +#: personal/connectivity/kolab/class_kolabAccount.inc:5 +#: personal/connectivity/kolab/class_kolabAccount.inc:512 +msgid "Kolab" +msgstr "Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:439 +msgid "My destination" +msgstr "Mis destinos" + +#: admin/systems/services/kolab/class_servKolab.inc:449 +msgid "FTP FreeBusy service" +msgstr "Servicio de presencia FTP" + +#: admin/systems/services/kolab/class_servKolab.inc:450 +msgid "HTTP FreeBusy service" +msgstr "Servicio de presencia HTTP" + +#: admin/systems/services/kolab/class_servKolab.inc:451 +msgid "Enable virus scan" +msgstr "Activar antivirus" + +#: admin/systems/services/kolab/class_servKolab.inc:455 +msgid "Allow unauthenticated free busy" +msgstr "Permite disponibilidad no autentificada" + +#: admin/systems/services/kolab/class_servKolab.inc:456 +msgid "kolabFreeBusyFuture" +msgstr "kolabFreeBusyFuture" + +#: admin/systems/services/kolab/class_servKolab.inc:460 +msgid "Relayhost" +msgstr "Relayhost" + +#: personal/connectivity/kolab/class_kolabAccount.inc:6 +msgid "This does something" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Mail address" +msgstr "Dirección correo electrónico" + +#: personal/connectivity/kolab/class_kolabAccount.inc:204 +msgid "Always accept" +msgstr "Aceptar siempre" + +#: personal/connectivity/kolab/class_kolabAccount.inc:205 +msgid "Always reject" +msgstr "Denegar siempre" + +#: personal/connectivity/kolab/class_kolabAccount.inc:206 +msgid "Reject if conflicts" +msgstr "Denegar si hay conflictos" + +#: personal/connectivity/kolab/class_kolabAccount.inc:207 +msgid "Manual if conflicts" +msgstr "Preguntar si hay conflictos" + +#: personal/connectivity/kolab/class_kolabAccount.inc:208 +msgid "Manual" +msgstr "Manual" + +#: personal/connectivity/kolab/class_kolabAccount.inc:256 +msgid "Anonymous" +msgstr "Anónimo" + +#: personal/connectivity/kolab/class_kolabAccount.inc:351 +#: personal/connectivity/kolab/class_kolabAccount.inc:354 +#, fuzzy +msgid "Free Busy future" +msgstr "Disponibilidad futura" + +#: personal/connectivity/kolab/class_kolabAccount.inc:359 +#: personal/connectivity/kolab/class_kolabAccount.inc:362 +#, fuzzy +msgid "Free Busy url" +msgstr "Disponibilidad futura" + +#: personal/connectivity/kolab/class_kolabAccount.inc:376 +#, php-format +msgid "The invitation policy entry for address '%s' is not valid." +msgstr "" +"La entrada de política de invitación para la dirección '%s' no es valida." + +#: personal/connectivity/kolab/class_kolabAccount.inc:384 +#, php-format +msgid "There's no mail user with address '%s' for your invitation policy!" +msgstr "" +"¡No hay ningún usuario con cuenta de correo '%s' para su política de " +"invitación!" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +msgid "Kolab account settings" +msgstr "Configuración cuenta Kolab" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/kolab/class_kolabAccount.inc:517 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/connectivity/kolab/class_kolabAccount.inc:522 +msgid "Free busy future" +msgstr "Disponibilidad futura" + +#: personal/connectivity/kolab/class_kolabAccount.inc:523 +msgid "Mail size restriction" +msgstr "Restricciones al tamaño de mensaje" + +#: personal/connectivity/kolab/class_kolabAccount.inc:524 +msgid "Free busy information" +msgstr "Información de disponibilidad" + +#: personal/connectivity/kolab/class_kolabAccount.inc:525 +#: personal/connectivity/kolab/kolab.tpl:51 +#: personal/connectivity/kolab/kolab.tpl:63 +msgid "Delegations" +msgstr "Delegaciones" + +#: personal/connectivity/kolab/class_kolabAccount.inc:526 +#: personal/connectivity/kolab/kolab.tpl:119 +msgid "Invitation policy" +msgstr "Política de invitación" + +#: personal/connectivity/kolab/kolab.tpl:3 +#: personal/connectivity/kolab/kolab.tpl:43 +msgid "Kolab account" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:4 +msgid "" +"The kolab account is currently disabled. It's features can be adjusted if " +"you add a mail account." +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:83 +msgid "Mail size" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:87 +msgid "No mail size restriction for this account" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:95 +msgid "Free Busy information" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:98 +msgid "URL" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:107 +msgid "Future" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:112 +msgid "days" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:95 +#: personal/mail/kolab/class_mail-methods-kolab.inc:103 +#: personal/mail/kolab/class_mail-methods-kolab.inc:104 +msgid "Unspecified" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:96 +#, fuzzy +msgid "Mails" +msgstr "Correo Electrónico" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:97 +msgid "Tasks" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:98 +msgid "Journals" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:99 +msgid "Calendar" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:100 +#, fuzzy +msgid "Contacts" +msgstr "Contenidos" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:101 +msgid "Notes" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:105 +msgid "Inbox" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:106 +msgid "Drafts" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:107 +msgid "Sent" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:108 +msgid "SPAM" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:110 +#: personal/mail/kolab/class_mail-methods-kolab.inc:111 +#: personal/mail/kolab/class_mail-methods-kolab.inc:112 +#: personal/mail/kolab/class_mail-methods-kolab.inc:113 +#: personal/mail/kolab/class_mail-methods-kolab.inc:114 +#, fuzzy +msgid "Default" +msgstr "Eliminar" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:129 +msgid "Mail settings cannot be removed while there are delegations configured!" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:227 +msgid "Waiting for kolab to remove mail properties..." +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:230 +#, fuzzy +msgid "Please remove the mail settings first!" +msgstr "Seleccione para ver que grupos tienen configuración de correo" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "hombre" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Future days in Free/Busy settings must be set." +#~ msgstr "En la configuración de presencia se debe poner días futuros." + +#~ msgid "Future days in Free/Busy settings must be a positive value." +#~ msgstr "" +#~ "En la configuración de presencia, Días futuros debe ser un número " +#~ "positivo." + +#~ msgid "The given Quota settings value must be a number." +#~ msgstr "El valor introducido como cuota debe ser un número." + +#~ msgid "Future days must be a value." +#~ msgstr "Días futuros debe ser un valor" + +#~ msgid "No SMTP privileged networks set." +#~ msgstr "No se han indicado redes privilegiadas SMTP." + +#~ msgid "Removing of user/kolab account with dn '%s' failed." +#~ msgstr "Ha fallado al eliminar la cuenta usuario/Kolab con dn '%s'." + +#~ msgid "Saving of user/kolab account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la eliminación de la cuenta de usuario/Kolab con dn '%s'." + +#~ msgid "Removing host entry from system server/kolab with dn '%s' failed." +#~ msgstr "Ha fallado la eliminación del servidor Kolab con dn '%s'." + +#~ msgid "Saving system server/kolab with dn '%s' failed." +#~ msgstr "Ha fallado la grabación del servidor del objeto Kolab con dn '%s'" + +#, fuzzy +#~ msgid "Cannot add invalid mail address!" +#~ msgstr "Esta intentando añadir una dirección de correo no valida" + +#~ msgid "The value specified as Free Busy future needs to be an integer." +#~ msgstr "" +#~ "El valor especificado como disponibilidad futura debe ser un entero." + +#~ msgid "The value specified as Free Busy Information URL is invalid." +#~ msgstr "" +#~ "Ha introducido una URL no válida como valor información de disponibilidad." diff --git a/trunk/gosa-plugins/kolab/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/kolab/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..994370d0f --- /dev/null +++ b/trunk/gosa-plugins/kolab/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,427 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:52+0100\n" +"PO-Revision-Date: 2008-12-21 11:59+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/services/kolab/servkolab.tpl:6 +msgid "Generic" +msgstr "Informations" + +#: admin/systems/services/kolab/servkolab.tpl:9 +#: admin/systems/services/kolab/class_servKolab.inc:438 +msgid "Postfix mydomain" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:18 +#: admin/systems/services/kolab/class_servKolab.inc:440 +msgid "Cyrus admins" +msgstr "Administrateur Cyrus" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#: admin/systems/services/kolab/class_servKolab.inc:327 +msgid "Mail domains" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:27 +msgid "Postfix mydestination" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:43 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/kolab/servkolab.tpl:52 +#: admin/systems/services/kolab/class_servKolab.inc:442 +msgid "POP3 service" +msgstr "Service POP3" + +#: admin/systems/services/kolab/servkolab.tpl:62 +#: admin/systems/services/kolab/class_servKolab.inc:443 +msgid "POP3/SSL service" +msgstr "Service POP3/SSL" + +#: admin/systems/services/kolab/servkolab.tpl:72 +#: admin/systems/services/kolab/class_servKolab.inc:445 +msgid "IMAP service" +msgstr "Service IMAP" + +#: admin/systems/services/kolab/servkolab.tpl:82 +#: admin/systems/services/kolab/class_servKolab.inc:446 +msgid "IMAP/SSL service" +msgstr "Service IMAP/SSL" + +#: admin/systems/services/kolab/servkolab.tpl:92 +#: admin/systems/services/kolab/class_servKolab.inc:448 +msgid "Sieve service" +msgstr "Service sieve" + +#: admin/systems/services/kolab/servkolab.tpl:102 +msgid "FTP FreeBusy service (legacy, not interoperable with Kolab2 FreeBusy)" +msgstr "" +"Service des options de disponibilités par FTP (ancien, pas compatible avec " +"les options de disponibilités de Kolab2)" + +#: admin/systems/services/kolab/servkolab.tpl:112 +msgid "HTTP FreeBusy service (legacy)" +msgstr "Service d'option de disponibilité par HTTP (ancien)" + +#: admin/systems/services/kolab/servkolab.tpl:122 +msgid "Amavis email scanning (virus/spam)" +msgstr "Scan des messages par Amavis (antivirus/antispam)" + +#: admin/systems/services/kolab/servkolab.tpl:133 +#: admin/systems/services/kolab/class_servKolab.inc:453 +msgid "Quota settings" +msgstr "Préférences des quotas" + +#: admin/systems/services/kolab/servkolab.tpl:151 +msgid "Free/Busy settings" +msgstr "Préférences des options de disponibilités" + +#: admin/systems/services/kolab/servkolab.tpl:157 +msgid "Allow unauthenticated downloading of Free/Busy information" +msgstr "" +"Permettre le téléchargement des informations de disponibilités de manière " +"anonyme" + +#: admin/systems/services/kolab/servkolab.tpl:175 +#: admin/systems/services/kolab/class_servKolab.inc:458 +msgid "SMTP privileged networks" +msgstr "Réseaux SMTP privilégiés" + +#: admin/systems/services/kolab/servkolab.tpl:180 +msgid "Hosts/networks allowed to relay" +msgstr "Machines/Réseaux qui peuvent relayer des messages" + +#: admin/systems/services/kolab/servkolab.tpl:185 +msgid "Enter multiple values, seperated with" +msgstr "Entrez des valeurs multiples, séparés avec" + +#: admin/systems/services/kolab/servkolab.tpl:198 +msgid "SMTP smarthost/relayhost" +msgstr "Relais SMTP" + +#: admin/systems/services/kolab/servkolab.tpl:206 +#: admin/systems/services/kolab/class_servKolab.inc:459 +msgid "Enable MX lookup for relayhost" +msgstr "Vérification de l'enregistrement MX pour le serveur relais" + +#: admin/systems/services/kolab/servkolab.tpl:211 +msgid "Host used to relay mails" +msgstr "Machine utilisée pour relayer les mails" + +#: admin/systems/services/kolab/servkolab.tpl:227 +#: admin/systems/services/kolab/class_servKolab.inc:461 +msgid "Accept Internet Mail" +msgstr "Accepter le courrier électronique venant d'internet" + +#: admin/systems/services/kolab/servkolab.tpl:235 +msgid "Accept mail from other domains over non-authenticated SMTP" +msgstr "Accepter les messages sur du SMTP non authentifié venant d'autre domaines" + +#: admin/systems/services/kolab/class_servKolab.inc:107 +#, php-format +msgid "Include data from %s days in the past when creating free/busy lists" +msgstr "" +"Inclure les données des %s jours précédents lors de la création d'une liste " +"de disponibilités" + +#: admin/systems/services/kolab/class_servKolab.inc:112 +#, php-format +msgid "Warn users when using more than %s%% of their mail quota" +msgstr "" +"Avertissez les utilisateurs quand ils utilisent plus de %s%% de leur quota " +"de messagerie" + +#: admin/systems/services/kolab/class_servKolab.inc:154 +msgid "Remove" +msgstr "Supprimer" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +msgid "Internal error" +msgstr "Erreur interne" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +msgid "Kolab account does not exist!" +msgstr "Le compte kolab ,'existe pas !" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Error" +msgstr "Erreur" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +msgid "hostname" +msgstr "Nom de l'hôte" + +#: admin/systems/services/kolab/class_servKolab.inc:217 +#: admin/systems/services/kolab/class_servKolab.inc:233 +#: admin/systems/services/kolab/class_servKolab.inc:402 +#: personal/connectivity/kolab/class_kolabAccount.inc:339 +#: personal/connectivity/kolab/class_kolabAccount.inc:476 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/systems/services/kolab/class_servKolab.inc:309 +#: admin/systems/services/kolab/class_servKolab.inc:311 +msgid "Future days" +msgstr "Jours dans le futur" + +#: admin/systems/services/kolab/class_servKolab.inc:315 +#: admin/systems/services/kolab/class_servKolab.inc:319 +msgid "Quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:317 +msgid "Please choose a value between 1 and 100 for Quota settings." +msgstr "Veuillez choisir un nombre entre 1 et 100 pour les quotas." + +#: admin/systems/services/kolab/class_servKolab.inc:323 +msgid "Privileged networks" +msgstr "Réseaux privilégiés" + +#: admin/systems/services/kolab/class_servKolab.inc:419 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Kolab mail service" +msgstr "Service de messagerie Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:429 +#: personal/connectivity/kolab/class_kolabAccount.inc:5 +#: personal/connectivity/kolab/class_kolabAccount.inc:512 +msgid "Kolab" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:439 +msgid "My destination" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:449 +msgid "FTP FreeBusy service" +msgstr "Service d'option de disponibilité par FTP" + +#: admin/systems/services/kolab/class_servKolab.inc:450 +msgid "HTTP FreeBusy service" +msgstr "Service d'option de disponibilité par HTTP" + +#: admin/systems/services/kolab/class_servKolab.inc:451 +msgid "Enable virus scan" +msgstr "Activer la vérification antivirus de la messagerie" + +#: admin/systems/services/kolab/class_servKolab.inc:455 +msgid "Allow unauthenticated free busy" +msgstr "" +"Permettre le téléchargement des informations de disponibilités de manière " +"anonyme" + +#: admin/systems/services/kolab/class_servKolab.inc:456 +msgid "kolabFreeBusyFuture" +msgstr "Nombre de jours dans le futur pour les options de disponibilités" + +#: admin/systems/services/kolab/class_servKolab.inc:460 +msgid "Relayhost" +msgstr "Système relais" + +#: personal/connectivity/kolab/class_kolabAccount.inc:6 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Mail address" +msgstr "Adresse de messagerie" + +#: personal/connectivity/kolab/class_kolabAccount.inc:204 +msgid "Always accept" +msgstr "Toujours accepter" + +#: personal/connectivity/kolab/class_kolabAccount.inc:205 +msgid "Always reject" +msgstr "Toujours rejeter" + +#: personal/connectivity/kolab/class_kolabAccount.inc:206 +msgid "Reject if conflicts" +msgstr "Rejeter si il y a conflit" + +#: personal/connectivity/kolab/class_kolabAccount.inc:207 +msgid "Manual if conflicts" +msgstr "Manuel si il y a conflit" + +#: personal/connectivity/kolab/class_kolabAccount.inc:208 +msgid "Manual" +msgstr "Manuel" + +#: personal/connectivity/kolab/class_kolabAccount.inc:256 +msgid "Anonymous" +msgstr "Anonyme" + +#: personal/connectivity/kolab/class_kolabAccount.inc:351 +#: personal/connectivity/kolab/class_kolabAccount.inc:354 +msgid "Free Busy future" +msgstr "Nombre de jours dans le futur à calculer pour l'option de disponibilité" + +#: personal/connectivity/kolab/class_kolabAccount.inc:359 +#: personal/connectivity/kolab/class_kolabAccount.inc:362 +msgid "Free Busy url" +msgstr "Url pour l'option de disponibilité" + +#: personal/connectivity/kolab/class_kolabAccount.inc:376 +#, php-format +msgid "The invitation policy entry for address '%s' is not valid." +msgstr "La politique d'invitation pour l'adresse '%s' n'est pas valide." + +#: personal/connectivity/kolab/class_kolabAccount.inc:384 +#, php-format +msgid "There's no mail user with address '%s' for your invitation policy!" +msgstr "" +"Il n'y a pas d'utilisateur avec l'adresse de messagerie '%s' pour votre " +"politique d'invitation !" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +msgid "Kolab account settings" +msgstr "Paramètres du compte Kolab" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +msgid "Connectivity addon" +msgstr "Connectivité" + +#: personal/connectivity/kolab/class_kolabAccount.inc:517 +msgid "My account" +msgstr "Mon Compte" + +#: personal/connectivity/kolab/class_kolabAccount.inc:522 +msgid "Free busy future" +msgstr "Nombre de jours futur à calculer pour l'option de disponibilité" + +#: personal/connectivity/kolab/class_kolabAccount.inc:523 +msgid "Mail size restriction" +msgstr "Restriction de taille des messages" + +#: personal/connectivity/kolab/class_kolabAccount.inc:524 +msgid "Free busy information" +msgstr "Information de disponibilité" + +#: personal/connectivity/kolab/class_kolabAccount.inc:525 +#: personal/connectivity/kolab/kolab.tpl:51 +#: personal/connectivity/kolab/kolab.tpl:63 +msgid "Delegations" +msgstr "Délégations" + +#: personal/connectivity/kolab/class_kolabAccount.inc:526 +#: personal/connectivity/kolab/kolab.tpl:119 +msgid "Invitation policy" +msgstr "Politique d'invitation" + +#: personal/connectivity/kolab/kolab.tpl:3 +#: personal/connectivity/kolab/kolab.tpl:43 +msgid "Kolab account" +msgstr "Compte Kolab" + +#: personal/connectivity/kolab/kolab.tpl:4 +msgid "" +"The kolab account is currently disabled. It's features can be adjusted if " +"you add a mail account." +msgstr "" +"L'extension Kolab est désactivée. Ces paramètres peuvent être ajustés si " +"vous ajoutez un compte de messagerie." + +#: personal/connectivity/kolab/kolab.tpl:83 +msgid "Mail size" +msgstr "Quota de messagerie" + +#: personal/connectivity/kolab/kolab.tpl:87 +msgid "No mail size restriction for this account" +msgstr "Pas de taille maximale pour l'envoi de messages" + +#: personal/connectivity/kolab/kolab.tpl:95 +msgid "Free Busy information" +msgstr "Information de disponibilité" + +#: personal/connectivity/kolab/kolab.tpl:98 +msgid "URL" +msgstr "URL" + +#: personal/connectivity/kolab/kolab.tpl:107 +msgid "Future" +msgstr "Futur" + +#: personal/connectivity/kolab/kolab.tpl:112 +msgid "days" +msgstr "jours" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:95 +#: personal/mail/kolab/class_mail-methods-kolab.inc:103 +#: personal/mail/kolab/class_mail-methods-kolab.inc:104 +msgid "Unspecified" +msgstr "Non spécifié" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:96 +msgid "Mails" +msgstr "Messagerie" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:97 +msgid "Tasks" +msgstr "Tâches" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:98 +msgid "Journals" +msgstr "Journaux" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:99 +msgid "Calendar" +msgstr "Calendrier" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:100 +msgid "Contacts" +msgstr "Carnet d'adresses" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:101 +msgid "Notes" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:105 +msgid "Inbox" +msgstr "Boite de réception" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:106 +msgid "Drafts" +msgstr "Brouillons" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:107 +msgid "Sent" +msgstr "Messages Envoyés" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:108 +msgid "SPAM" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:110 +#: personal/mail/kolab/class_mail-methods-kolab.inc:111 +#: personal/mail/kolab/class_mail-methods-kolab.inc:112 +#: personal/mail/kolab/class_mail-methods-kolab.inc:113 +#: personal/mail/kolab/class_mail-methods-kolab.inc:114 +msgid "Default" +msgstr "Défaut" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:129 +msgid "Mail settings cannot be removed while there are delegations configured!" +msgstr "Les paramètres de la messagerie de peuvent pas être supprimé quand des délégations sont actives !" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:227 +msgid "Waiting for kolab to remove mail properties..." +msgstr "En attente de kolab pour la suppression des paramètres de messagerie..." + +#: personal/mail/kolab/class_mail-methods-kolab.inc:230 +msgid "Please remove the mail settings first!" +msgstr "Veuillez d'abord supprimer les paramètres de messagerie !" + diff --git a/trunk/gosa-plugins/kolab/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/kolab/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..85c7d1bd4 --- /dev/null +++ b/trunk/gosa-plugins/kolab/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,468 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:52+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/systems/services/kolab/servkolab.tpl:6 +msgid "Generic" +msgstr "Generale" + +#: admin/systems/services/kolab/servkolab.tpl:9 +#: admin/systems/services/kolab/class_servKolab.inc:438 +#, fuzzy +msgid "Postfix mydomain" +msgstr "nel dominio" + +#: admin/systems/services/kolab/servkolab.tpl:18 +#: admin/systems/services/kolab/class_servKolab.inc:440 +msgid "Cyrus admins" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#: admin/systems/services/kolab/class_servKolab.inc:327 +#, fuzzy +msgid "Mail domains" +msgstr "nel dominio" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#, fuzzy +msgid "Postfix mydestination" +msgstr "Impostazioni Unix" + +#: admin/systems/services/kolab/servkolab.tpl:43 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/kolab/servkolab.tpl:52 +#: admin/systems/services/kolab/class_servKolab.inc:442 +msgid "POP3 service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:62 +#: admin/systems/services/kolab/class_servKolab.inc:443 +msgid "POP3/SSL service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:72 +#: admin/systems/services/kolab/class_servKolab.inc:445 +msgid "IMAP service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:82 +#: admin/systems/services/kolab/class_servKolab.inc:446 +msgid "IMAP/SSL service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:92 +#: admin/systems/services/kolab/class_servKolab.inc:448 +msgid "Sieve service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:102 +msgid "FTP FreeBusy service (legacy, not interoperable with Kolab2 FreeBusy)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:112 +msgid "HTTP FreeBusy service (legacy)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:122 +msgid "Amavis email scanning (virus/spam)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:133 +#: admin/systems/services/kolab/class_servKolab.inc:453 +msgid "Quota settings" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:151 +msgid "Free/Busy settings" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:157 +msgid "Allow unauthenticated downloading of Free/Busy information" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:175 +#: admin/systems/services/kolab/class_servKolab.inc:458 +msgid "SMTP privileged networks" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:180 +msgid "Hosts/networks allowed to relay" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:185 +msgid "Enter multiple values, seperated with" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:198 +msgid "SMTP smarthost/relayhost" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:206 +#: admin/systems/services/kolab/class_servKolab.inc:459 +msgid "Enable MX lookup for relayhost" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:211 +msgid "Host used to relay mails" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:227 +#: admin/systems/services/kolab/class_servKolab.inc:461 +msgid "Accept Internet Mail" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:235 +msgid "Accept mail from other domains over non-authenticated SMTP" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:107 +#, php-format +msgid "Include data from %s days in the past when creating free/busy lists" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:112 +#, php-format +msgid "Warn users when using more than %s%% of their mail quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:154 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Kolab account does not exist!" +msgstr "Account Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Error" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +msgid "hostname" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:217 +#: admin/systems/services/kolab/class_servKolab.inc:233 +#: admin/systems/services/kolab/class_servKolab.inc:402 +#: personal/connectivity/kolab/class_kolabAccount.inc:339 +#: personal/connectivity/kolab/class_kolabAccount.inc:476 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/systems/services/kolab/class_servKolab.inc:309 +#: admin/systems/services/kolab/class_servKolab.inc:311 +#, fuzzy +msgid "Future days" +msgstr "Futuro" + +#: admin/systems/services/kolab/class_servKolab.inc:315 +#: admin/systems/services/kolab/class_servKolab.inc:319 +msgid "Quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:317 +msgid "Please choose a value between 1 and 100 for Quota settings." +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:323 +msgid "Privileged networks" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:419 +#: admin/systems/services/kolab/class_servKolab.inc:430 +#, fuzzy +msgid "Kolab mail service" +msgstr "Utenti di Dominio" + +#: admin/systems/services/kolab/class_servKolab.inc:429 +#: personal/connectivity/kolab/class_kolabAccount.inc:5 +#: personal/connectivity/kolab/class_kolabAccount.inc:512 +msgid "Kolab" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:439 +#, fuzzy +msgid "My destination" +msgstr "Destinazione" + +#: admin/systems/services/kolab/class_servKolab.inc:449 +#, fuzzy +msgid "FTP FreeBusy service" +msgstr "Server" + +#: admin/systems/services/kolab/class_servKolab.inc:450 +#, fuzzy +msgid "HTTP FreeBusy service" +msgstr "Server" + +#: admin/systems/services/kolab/class_servKolab.inc:451 +msgid "Enable virus scan" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:455 +msgid "Allow unauthenticated free busy" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:456 +msgid "kolabFreeBusyFuture" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:460 +#, fuzzy +msgid "Relayhost" +msgstr "Rimuovi" + +#: personal/connectivity/kolab/class_kolabAccount.inc:6 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Mail address" +msgstr "Indirizzo principale" + +#: personal/connectivity/kolab/class_kolabAccount.inc:204 +msgid "Always accept" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:205 +msgid "Always reject" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:206 +msgid "Reject if conflicts" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:207 +msgid "Manual if conflicts" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:208 +msgid "Manual" +msgstr "Manuale" + +#: personal/connectivity/kolab/class_kolabAccount.inc:256 +msgid "Anonymous" +msgstr "Anonimo" + +#: personal/connectivity/kolab/class_kolabAccount.inc:351 +#: personal/connectivity/kolab/class_kolabAccount.inc:354 +#, fuzzy +msgid "Free Busy future" +msgstr "Server" + +#: personal/connectivity/kolab/class_kolabAccount.inc:359 +#: personal/connectivity/kolab/class_kolabAccount.inc:362 +#, fuzzy +msgid "Free Busy url" +msgstr "Server" + +#: personal/connectivity/kolab/class_kolabAccount.inc:376 +#, php-format +msgid "The invitation policy entry for address '%s' is not valid." +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:384 +#, php-format +msgid "There's no mail user with address '%s' for your invitation policy!" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +#, fuzzy +msgid "Kolab account settings" +msgstr "Account Kolab" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/kolab/class_kolabAccount.inc:517 +msgid "My account" +msgstr "Identità" + +#: personal/connectivity/kolab/class_kolabAccount.inc:522 +msgid "Free busy future" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:523 +#, fuzzy +msgid "Mail size restriction" +msgstr "Opzioni di posta dell'identità" + +#: personal/connectivity/kolab/class_kolabAccount.inc:524 +#, fuzzy +msgid "Free busy information" +msgstr "Informazioni generali" + +#: personal/connectivity/kolab/class_kolabAccount.inc:525 +#: personal/connectivity/kolab/kolab.tpl:51 +#: personal/connectivity/kolab/kolab.tpl:63 +msgid "Delegations" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:526 +#: personal/connectivity/kolab/kolab.tpl:119 +msgid "Invitation policy" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:3 +#: personal/connectivity/kolab/kolab.tpl:43 +msgid "Kolab account" +msgstr "Account Kolab" + +#: personal/connectivity/kolab/kolab.tpl:4 +msgid "" +"The kolab account is currently disabled. It's features can be adjusted if " +"you add a mail account." +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:83 +msgid "Mail size" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:87 +msgid "No mail size restriction for this account" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:95 +msgid "Free Busy information" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:98 +msgid "URL" +msgstr "URL" + +#: personal/connectivity/kolab/kolab.tpl:107 +msgid "Future" +msgstr "Futuro" + +#: personal/connectivity/kolab/kolab.tpl:112 +msgid "days" +msgstr "giorni" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:95 +#: personal/mail/kolab/class_mail-methods-kolab.inc:103 +#: personal/mail/kolab/class_mail-methods-kolab.inc:104 +msgid "Unspecified" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:96 +#, fuzzy +msgid "Mails" +msgstr "Posta" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:97 +msgid "Tasks" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:98 +msgid "Journals" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:99 +msgid "Calendar" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:100 +#, fuzzy +msgid "Contacts" +msgstr "Contenuti" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:101 +msgid "Notes" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:105 +msgid "Inbox" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:106 +msgid "Drafts" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:107 +msgid "Sent" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:108 +msgid "SPAM" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:110 +#: personal/mail/kolab/class_mail-methods-kolab.inc:111 +#: personal/mail/kolab/class_mail-methods-kolab.inc:112 +#: personal/mail/kolab/class_mail-methods-kolab.inc:113 +#: personal/mail/kolab/class_mail-methods-kolab.inc:114 +#, fuzzy +msgid "Default" +msgstr "Rimuovi" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:129 +msgid "Mail settings cannot be removed while there are delegations configured!" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:227 +msgid "Waiting for kolab to remove mail properties..." +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:230 +#, fuzzy +msgid "Please remove the mail settings first!" +msgstr "Seleziona per mostrare i gruppi che hanno configurata la posta" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "maschio" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "Removing of user/kolab account with dn '%s' failed." +#~ msgstr "Elimina estensioni Samba" + +#, fuzzy +#~ msgid "Saving of user/kolab account with dn '%s' failed." +#~ msgstr "Account Kolab" + +#, fuzzy +#~ msgid "Removing host entry from system server/kolab with dn '%s' failed." +#~ msgstr "Elimina estensioni telefoniche" + +#, fuzzy +#~ msgid "Saving system server/kolab with dn '%s' failed." +#~ msgstr "Account Kolab" + +#, fuzzy +#~ msgid "Cannot add invalid mail address!" +#~ msgstr "Stai cercando di aggungere un indirizzo di posta non valido" diff --git a/trunk/gosa-plugins/kolab/locale/messages.po b/trunk/gosa-plugins/kolab/locale/messages.po new file mode 100644 index 000000000..f9c957752 --- /dev/null +++ b/trunk/gosa-plugins/kolab/locale/messages.po @@ -0,0 +1,414 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:52+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/kolab/servkolab.tpl:6 +msgid "Generic" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:9 +#: admin/systems/services/kolab/class_servKolab.inc:438 +msgid "Postfix mydomain" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:18 +#: admin/systems/services/kolab/class_servKolab.inc:440 +msgid "Cyrus admins" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#: admin/systems/services/kolab/class_servKolab.inc:327 +msgid "Mail domains" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:27 +msgid "Postfix mydestination" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:43 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Services" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:52 +#: admin/systems/services/kolab/class_servKolab.inc:442 +msgid "POP3 service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:62 +#: admin/systems/services/kolab/class_servKolab.inc:443 +msgid "POP3/SSL service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:72 +#: admin/systems/services/kolab/class_servKolab.inc:445 +msgid "IMAP service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:82 +#: admin/systems/services/kolab/class_servKolab.inc:446 +msgid "IMAP/SSL service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:92 +#: admin/systems/services/kolab/class_servKolab.inc:448 +msgid "Sieve service" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:102 +msgid "FTP FreeBusy service (legacy, not interoperable with Kolab2 FreeBusy)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:112 +msgid "HTTP FreeBusy service (legacy)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:122 +msgid "Amavis email scanning (virus/spam)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:133 +#: admin/systems/services/kolab/class_servKolab.inc:453 +msgid "Quota settings" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:151 +msgid "Free/Busy settings" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:157 +msgid "Allow unauthenticated downloading of Free/Busy information" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:175 +#: admin/systems/services/kolab/class_servKolab.inc:458 +msgid "SMTP privileged networks" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:180 +msgid "Hosts/networks allowed to relay" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:185 +msgid "Enter multiple values, seperated with" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:198 +msgid "SMTP smarthost/relayhost" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:206 +#: admin/systems/services/kolab/class_servKolab.inc:459 +msgid "Enable MX lookup for relayhost" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:211 +msgid "Host used to relay mails" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:227 +#: admin/systems/services/kolab/class_servKolab.inc:461 +msgid "Accept Internet Mail" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:235 +msgid "Accept mail from other domains over non-authenticated SMTP" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:107 +#, php-format +msgid "Include data from %s days in the past when creating free/busy lists" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:112 +#, php-format +msgid "Warn users when using more than %s%% of their mail quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:154 +msgid "Remove" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +msgid "Internal error" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +msgid "Kolab account does not exist!" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Error" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +msgid "hostname" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:217 +#: admin/systems/services/kolab/class_servKolab.inc:233 +#: admin/systems/services/kolab/class_servKolab.inc:402 +#: personal/connectivity/kolab/class_kolabAccount.inc:339 +#: personal/connectivity/kolab/class_kolabAccount.inc:476 +msgid "LDAP error" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:309 +#: admin/systems/services/kolab/class_servKolab.inc:311 +msgid "Future days" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:315 +#: admin/systems/services/kolab/class_servKolab.inc:319 +msgid "Quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:317 +msgid "Please choose a value between 1 and 100 for Quota settings." +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:323 +msgid "Privileged networks" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:419 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Kolab mail service" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:429 +#: personal/connectivity/kolab/class_kolabAccount.inc:5 +#: personal/connectivity/kolab/class_kolabAccount.inc:512 +msgid "Kolab" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:439 +msgid "My destination" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:449 +msgid "FTP FreeBusy service" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:450 +msgid "HTTP FreeBusy service" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:451 +msgid "Enable virus scan" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:455 +msgid "Allow unauthenticated free busy" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:456 +msgid "kolabFreeBusyFuture" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:460 +msgid "Relayhost" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:6 +msgid "This does something" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Mail address" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:204 +msgid "Always accept" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:205 +msgid "Always reject" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:206 +msgid "Reject if conflicts" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:207 +msgid "Manual if conflicts" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:208 +msgid "Manual" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:256 +msgid "Anonymous" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:351 +#: personal/connectivity/kolab/class_kolabAccount.inc:354 +msgid "Free Busy future" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:359 +#: personal/connectivity/kolab/class_kolabAccount.inc:362 +msgid "Free Busy url" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:376 +#, php-format +msgid "The invitation policy entry for address '%s' is not valid." +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:384 +#, php-format +msgid "There's no mail user with address '%s' for your invitation policy!" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +msgid "Kolab account settings" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:517 +msgid "My account" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:522 +msgid "Free busy future" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:523 +msgid "Mail size restriction" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:524 +msgid "Free busy information" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:525 +#: personal/connectivity/kolab/kolab.tpl:51 +#: personal/connectivity/kolab/kolab.tpl:63 +msgid "Delegations" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:526 +#: personal/connectivity/kolab/kolab.tpl:119 +msgid "Invitation policy" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:3 +#: personal/connectivity/kolab/kolab.tpl:43 +msgid "Kolab account" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:4 +msgid "" +"The kolab account is currently disabled. It's features can be adjusted if " +"you add a mail account." +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:83 +msgid "Mail size" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:87 +msgid "No mail size restriction for this account" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:95 +msgid "Free Busy information" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:98 +msgid "URL" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:107 +msgid "Future" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:112 +msgid "days" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:95 +#: personal/mail/kolab/class_mail-methods-kolab.inc:103 +#: personal/mail/kolab/class_mail-methods-kolab.inc:104 +msgid "Unspecified" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:96 +msgid "Mails" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:97 +msgid "Tasks" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:98 +msgid "Journals" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:99 +msgid "Calendar" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:100 +msgid "Contacts" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:101 +msgid "Notes" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:105 +msgid "Inbox" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:106 +msgid "Drafts" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:107 +msgid "Sent" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:108 +msgid "SPAM" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:110 +#: personal/mail/kolab/class_mail-methods-kolab.inc:111 +#: personal/mail/kolab/class_mail-methods-kolab.inc:112 +#: personal/mail/kolab/class_mail-methods-kolab.inc:113 +#: personal/mail/kolab/class_mail-methods-kolab.inc:114 +msgid "Default" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:129 +msgid "Mail settings cannot be removed while there are delegations configured!" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:227 +msgid "Waiting for kolab to remove mail properties..." +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:230 +msgid "Please remove the mail settings first!" +msgstr "" diff --git a/trunk/gosa-plugins/kolab/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/kolab/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..cd1ccd1d6 --- /dev/null +++ b/trunk/gosa-plugins/kolab/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,508 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:52+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/kolab/servkolab.tpl:6 +msgid "Generic" +msgstr "Algemeen" + +#: admin/systems/services/kolab/servkolab.tpl:9 +#: admin/systems/services/kolab/class_servKolab.inc:438 +msgid "Postfix mydomain" +msgstr "Postfix mydomain" + +#: admin/systems/services/kolab/servkolab.tpl:18 +#: admin/systems/services/kolab/class_servKolab.inc:440 +msgid "Cyrus admins" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#: admin/systems/services/kolab/class_servKolab.inc:327 +#, fuzzy +msgid "Mail domains" +msgstr "in domein" + +#: admin/systems/services/kolab/servkolab.tpl:27 +msgid "Postfix mydestination" +msgstr "Postfix mydestination" + +#: admin/systems/services/kolab/servkolab.tpl:43 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/kolab/servkolab.tpl:52 +#: admin/systems/services/kolab/class_servKolab.inc:442 +msgid "POP3 service" +msgstr "POP3 service" + +#: admin/systems/services/kolab/servkolab.tpl:62 +#: admin/systems/services/kolab/class_servKolab.inc:443 +msgid "POP3/SSL service" +msgstr "POP3/SSL service" + +#: admin/systems/services/kolab/servkolab.tpl:72 +#: admin/systems/services/kolab/class_servKolab.inc:445 +msgid "IMAP service" +msgstr "IMAP Service" + +#: admin/systems/services/kolab/servkolab.tpl:82 +#: admin/systems/services/kolab/class_servKolab.inc:446 +msgid "IMAP/SSL service" +msgstr "IMAP/SSL service" + +#: admin/systems/services/kolab/servkolab.tpl:92 +#: admin/systems/services/kolab/class_servKolab.inc:448 +msgid "Sieve service" +msgstr "Sieve service" + +#: admin/systems/services/kolab/servkolab.tpl:102 +msgid "FTP FreeBusy service (legacy, not interoperable with Kolab2 FreeBusy)" +msgstr "" +"FTP Free/Busy service (vervallen, niet compatibel met Kolab2 Free/Busy)" + +#: admin/systems/services/kolab/servkolab.tpl:112 +msgid "HTTP FreeBusy service (legacy)" +msgstr "HTTP Free/Busy service (vervallen)" + +#: admin/systems/services/kolab/servkolab.tpl:122 +msgid "Amavis email scanning (virus/spam)" +msgstr "Amavis email scannen (virus/anti-spam)" + +#: admin/systems/services/kolab/servkolab.tpl:133 +#: admin/systems/services/kolab/class_servKolab.inc:453 +msgid "Quota settings" +msgstr "Quota instellingen" + +#: admin/systems/services/kolab/servkolab.tpl:151 +msgid "Free/Busy settings" +msgstr "Free/Busy instellingen" + +#: admin/systems/services/kolab/servkolab.tpl:157 +msgid "Allow unauthenticated downloading of Free/Busy information" +msgstr "Sta ongeauthoriseerd downloaden van Free/Busy informatie toe" + +#: admin/systems/services/kolab/servkolab.tpl:175 +#: admin/systems/services/kolab/class_servKolab.inc:458 +msgid "SMTP privileged networks" +msgstr "SMTP toegestane netwerken" + +#: admin/systems/services/kolab/servkolab.tpl:180 +msgid "Hosts/networks allowed to relay" +msgstr "Hosts/netwerken die E-mail mogen ralayen" + +#: admin/systems/services/kolab/servkolab.tpl:185 +msgid "Enter multiple values, seperated with" +msgstr "Voor meerdere waardes in, gescheiden door" + +#: admin/systems/services/kolab/servkolab.tpl:198 +msgid "SMTP smarthost/relayhost" +msgstr "SMTP smarthost/relayhost" + +#: admin/systems/services/kolab/servkolab.tpl:206 +#: admin/systems/services/kolab/class_servKolab.inc:459 +msgid "Enable MX lookup for relayhost" +msgstr "Sta MX record opzoeken voor relayhost toe" + +#: admin/systems/services/kolab/servkolab.tpl:211 +msgid "Host used to relay mails" +msgstr "Host die gebruikt wordt om E-mails te relayen" + +#: admin/systems/services/kolab/servkolab.tpl:227 +#: admin/systems/services/kolab/class_servKolab.inc:461 +msgid "Accept Internet Mail" +msgstr "Accepteer Internet E-mail" + +#: admin/systems/services/kolab/servkolab.tpl:235 +msgid "Accept mail from other domains over non-authenticated SMTP" +msgstr "Accepteer E-mail van andere domeinen over niet geauthenticeerde SMTP" + +#: admin/systems/services/kolab/class_servKolab.inc:107 +#, php-format +msgid "Include data from %s days in the past when creating free/busy lists" +msgstr "" +"Gebruik data van %s dagen geleden wanneer free/busy lijsten worden aangemaakt" + +#: admin/systems/services/kolab/class_servKolab.inc:112 +#, php-format +msgid "Warn users when using more than %s%% of their mail quota" +msgstr "" +"Waarschuw gebruikers wanneer meer dan %s%% van hun E-mail quota gebruikt " +"wordt" + +#: admin/systems/services/kolab/class_servKolab.inc:154 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Internal error" +msgstr "Terminal server" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Kolab account does not exist!" +msgstr "Kolab account" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Error" +msgstr "Fout" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +msgid "hostname" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:217 +#: admin/systems/services/kolab/class_servKolab.inc:233 +#: admin/systems/services/kolab/class_servKolab.inc:402 +#: personal/connectivity/kolab/class_kolabAccount.inc:339 +#: personal/connectivity/kolab/class_kolabAccount.inc:476 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: admin/systems/services/kolab/class_servKolab.inc:309 +#: admin/systems/services/kolab/class_servKolab.inc:311 +#, fuzzy +msgid "Future days" +msgstr "Toekomstig" + +#: admin/systems/services/kolab/class_servKolab.inc:315 +#: admin/systems/services/kolab/class_servKolab.inc:319 +msgid "Quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:317 +msgid "Please choose a value between 1 and 100 for Quota settings." +msgstr "Kies a.u.b. een waarde tussen 1 en 100 voor de Quota instellingen." + +#: admin/systems/services/kolab/class_servKolab.inc:323 +#, fuzzy +msgid "Privileged networks" +msgstr "SMTP toegestane netwerken" + +#: admin/systems/services/kolab/class_servKolab.inc:419 +#: admin/systems/services/kolab/class_servKolab.inc:430 +#, fuzzy +msgid "Kolab mail service" +msgstr "Voeg Kolab service toe" + +#: admin/systems/services/kolab/class_servKolab.inc:429 +#: personal/connectivity/kolab/class_kolabAccount.inc:5 +#: personal/connectivity/kolab/class_kolabAccount.inc:512 +msgid "Kolab" +msgstr "Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:439 +#, fuzzy +msgid "My destination" +msgstr "Doel" + +#: admin/systems/services/kolab/class_servKolab.inc:449 +#, fuzzy +msgid "FTP FreeBusy service" +msgstr "HTTP Free/Busy service (vervallen)" + +#: admin/systems/services/kolab/class_servKolab.inc:450 +#, fuzzy +msgid "HTTP FreeBusy service" +msgstr "HTTP Free/Busy service (vervallen)" + +#: admin/systems/services/kolab/class_servKolab.inc:451 +msgid "Enable virus scan" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:455 +#, fuzzy +msgid "Allow unauthenticated free busy" +msgstr "Sta ongeauthoriseerd downloaden van Free/Busy informatie toe" + +#: admin/systems/services/kolab/class_servKolab.inc:456 +msgid "kolabFreeBusyFuture" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:460 +#, fuzzy +msgid "Relayhost" +msgstr "Lijst herladen" + +#: personal/connectivity/kolab/class_kolabAccount.inc:6 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Mail address" +msgstr "E-mail adres" + +#: personal/connectivity/kolab/class_kolabAccount.inc:204 +msgid "Always accept" +msgstr "Altijd accepteren" + +#: personal/connectivity/kolab/class_kolabAccount.inc:205 +msgid "Always reject" +msgstr "Altijd afwijzen" + +#: personal/connectivity/kolab/class_kolabAccount.inc:206 +msgid "Reject if conflicts" +msgstr "Afwijzen bij conflicten" + +#: personal/connectivity/kolab/class_kolabAccount.inc:207 +msgid "Manual if conflicts" +msgstr "Handmatig bij conflicten" + +#: personal/connectivity/kolab/class_kolabAccount.inc:208 +msgid "Manual" +msgstr "Handmatig" + +#: personal/connectivity/kolab/class_kolabAccount.inc:256 +msgid "Anonymous" +msgstr "Anoniem" + +#: personal/connectivity/kolab/class_kolabAccount.inc:351 +#: personal/connectivity/kolab/class_kolabAccount.inc:354 +#, fuzzy +msgid "Free Busy future" +msgstr "Free Busy informatie" + +#: personal/connectivity/kolab/class_kolabAccount.inc:359 +#: personal/connectivity/kolab/class_kolabAccount.inc:362 +#, fuzzy +msgid "Free Busy url" +msgstr "Free Busy informatie" + +#: personal/connectivity/kolab/class_kolabAccount.inc:376 +#, php-format +msgid "The invitation policy entry for address '%s' is not valid." +msgstr "Het uitnodigingsbeleid invoer voor adres '%s' is niet geldig" + +#: personal/connectivity/kolab/class_kolabAccount.inc:384 +#, php-format +msgid "There's no mail user with address '%s' for your invitation policy!" +msgstr "Er is geen E-mail gebruiker met adres '%s' voor uw uitwisselingsbeleid" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +#, fuzzy +msgid "Kolab account settings" +msgstr "Kolab account" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +#, fuzzy +msgid "Connectivity addon" +msgstr "Verbindingen" + +#: personal/connectivity/kolab/class_kolabAccount.inc:517 +msgid "My account" +msgstr "Mijn account" + +#: personal/connectivity/kolab/class_kolabAccount.inc:522 +msgid "Free busy future" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:523 +#, fuzzy +msgid "Mail size restriction" +msgstr "Mail distributielijst" + +#: personal/connectivity/kolab/class_kolabAccount.inc:524 +#, fuzzy +msgid "Free busy information" +msgstr "Free Busy informatie" + +#: personal/connectivity/kolab/class_kolabAccount.inc:525 +#: personal/connectivity/kolab/kolab.tpl:51 +#: personal/connectivity/kolab/kolab.tpl:63 +msgid "Delegations" +msgstr "Delegaties" + +#: personal/connectivity/kolab/class_kolabAccount.inc:526 +#: personal/connectivity/kolab/kolab.tpl:119 +msgid "Invitation policy" +msgstr "Uitnodigingsbeleid" + +#: personal/connectivity/kolab/kolab.tpl:3 +#: personal/connectivity/kolab/kolab.tpl:43 +msgid "Kolab account" +msgstr "Kolab account" + +#: personal/connectivity/kolab/kolab.tpl:4 +msgid "" +"The kolab account is currently disabled. It's features can be adjusted if " +"you add a mail account." +msgstr "" +"Het kolab account is uitgeschakeld. U kunt opties aanpassen indien u een e-" +"mail account toevoegd." + +#: personal/connectivity/kolab/kolab.tpl:83 +msgid "Mail size" +msgstr "E-mail grootte" + +#: personal/connectivity/kolab/kolab.tpl:87 +msgid "No mail size restriction for this account" +msgstr "Geen E-mail grootte restrictie voor dit account" + +#: personal/connectivity/kolab/kolab.tpl:95 +msgid "Free Busy information" +msgstr "Free Busy informatie" + +#: personal/connectivity/kolab/kolab.tpl:98 +msgid "URL" +msgstr "URL" + +#: personal/connectivity/kolab/kolab.tpl:107 +msgid "Future" +msgstr "Toekomstig" + +#: personal/connectivity/kolab/kolab.tpl:112 +msgid "days" +msgstr "dagen" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:95 +#: personal/mail/kolab/class_mail-methods-kolab.inc:103 +#: personal/mail/kolab/class_mail-methods-kolab.inc:104 +msgid "Unspecified" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:96 +#, fuzzy +msgid "Mails" +msgstr "E-mail" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:97 +#, fuzzy +msgid "Tasks" +msgstr "Taak" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:98 +msgid "Journals" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:99 +msgid "Calendar" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:100 +#, fuzzy +msgid "Contacts" +msgstr "Inhoud" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:101 +msgid "Notes" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:105 +msgid "Inbox" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:106 +msgid "Drafts" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:107 +msgid "Sent" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:108 +msgid "SPAM" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:110 +#: personal/mail/kolab/class_mail-methods-kolab.inc:111 +#: personal/mail/kolab/class_mail-methods-kolab.inc:112 +#: personal/mail/kolab/class_mail-methods-kolab.inc:113 +#: personal/mail/kolab/class_mail-methods-kolab.inc:114 +#, fuzzy +msgid "Default" +msgstr "Verwijderen" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:129 +msgid "Mail settings cannot be removed while there are delegations configured!" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:227 +msgid "Waiting for kolab to remove mail properties..." +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:230 +#, fuzzy +msgid "Please remove the mail settings first!" +msgstr "Selecteer om groepen te zien die E-mail instellingen hebben" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "man" + +#~ msgid "Add" +#~ msgstr "Toevoegen" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Future days in Free/Busy settings must be set." +#~ msgstr "Toekomstige dagen moet ingesteld zijn in de Free/Busy instellingen." + +#~ msgid "Future days in Free/Busy settings must be a positive value." +#~ msgstr "" +#~ "Toekomstige dagen moet een positieve waarde bevatten in de Free/Busy " +#~ "instellingen." + +#~ msgid "The given Quota settings value must be a number." +#~ msgstr "De opgegeven Quota instellingen moeten nummeriek zijn." + +#~ msgid "Future days must be a value." +#~ msgstr "Toekomstige dagen moet een waarde bevatten." + +#~ msgid "No SMTP privileged networks set." +#~ msgstr "Er zijn geen netwerken met SMTP privileges ingesteld" + +#, fuzzy +#~ msgid "Removing of user/kolab account with dn '%s' failed." +#~ msgstr "Het verwijderen van het algemene gebruikers account is mislukt" + +#, fuzzy +#~ msgid "Saving of user/kolab account with dn '%s' failed." +#~ msgstr "Het opslaan van het Kolab account is mislukt" + +#, fuzzy +#~ msgid "Removing host entry from system server/kolab with dn '%s' failed." +#~ msgstr "Het verwijderen van de server van het Kolab object is mislukt" + +#, fuzzy +#~ msgid "Saving system server/kolab with dn '%s' failed." +#~ msgstr "Het opslaan van de server in het Kolab object is mislukt" + +#, fuzzy +#~ msgid "Cannot add invalid mail address!" +#~ msgstr "U probeert een ongeldig E-mail adres toe te voegen" + +#, fuzzy +#~ msgid "Primary mail address already in use by another user!" +#~ msgstr "Primair E-mail adres voor deze gedeelde map" + +#~ msgid "The value specified as Free Busy future needs to be an integer." +#~ msgstr "" +#~ "De waarde opgegeven als Free Busy toekomst dient een integer te zijn" + +#~ msgid "The value specified as Free Busy Information URL is invalid." +#~ msgstr "" +#~ "De opgegeven waarde voor de Free Busy informatie URL is niet geldig." diff --git a/trunk/gosa-plugins/kolab/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/kolab/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..fa8c39581 --- /dev/null +++ b/trunk/gosa-plugins/kolab/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,487 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:52+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/systems/services/kolab/servkolab.tpl:6 +msgid "Generic" +msgstr "Ogólne" + +#: admin/systems/services/kolab/servkolab.tpl:9 +#: admin/systems/services/kolab/class_servKolab.inc:438 +msgid "Postfix mydomain" +msgstr "Postfix mydomain" + +#: admin/systems/services/kolab/servkolab.tpl:18 +#: admin/systems/services/kolab/class_servKolab.inc:440 +msgid "Cyrus admins" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#: admin/systems/services/kolab/class_servKolab.inc:327 +#, fuzzy +msgid "Mail domains" +msgstr "w domenie" + +#: admin/systems/services/kolab/servkolab.tpl:27 +msgid "Postfix mydestination" +msgstr "Postfix mydestination" + +#: admin/systems/services/kolab/servkolab.tpl:43 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/kolab/servkolab.tpl:52 +#: admin/systems/services/kolab/class_servKolab.inc:442 +msgid "POP3 service" +msgstr "Usługa POP3" + +#: admin/systems/services/kolab/servkolab.tpl:62 +#: admin/systems/services/kolab/class_servKolab.inc:443 +msgid "POP3/SSL service" +msgstr "Usługa POP3/SSL" + +#: admin/systems/services/kolab/servkolab.tpl:72 +#: admin/systems/services/kolab/class_servKolab.inc:445 +msgid "IMAP service" +msgstr "Usługa IMAP" + +#: admin/systems/services/kolab/servkolab.tpl:82 +#: admin/systems/services/kolab/class_servKolab.inc:446 +msgid "IMAP/SSL service" +msgstr "Usługa IMAP/SSL" + +#: admin/systems/services/kolab/servkolab.tpl:92 +#: admin/systems/services/kolab/class_servKolab.inc:448 +msgid "Sieve service" +msgstr "Usługa Sieve" + +#: admin/systems/services/kolab/servkolab.tpl:102 +msgid "FTP FreeBusy service (legacy, not interoperable with Kolab2 FreeBusy)" +msgstr "Usługa FTP FreeBusy (przestarzała, nie działa z FreeBusy w Kolab2)" + +#: admin/systems/services/kolab/servkolab.tpl:112 +msgid "HTTP FreeBusy service (legacy)" +msgstr "Usługa HTTP FreeBusy (przestarzała)" + +#: admin/systems/services/kolab/servkolab.tpl:122 +msgid "Amavis email scanning (virus/spam)" +msgstr "Skanowanie poczty (wirus/spam)" + +#: admin/systems/services/kolab/servkolab.tpl:133 +#: admin/systems/services/kolab/class_servKolab.inc:453 +msgid "Quota settings" +msgstr "Ustawienia Quota" + +#: admin/systems/services/kolab/servkolab.tpl:151 +msgid "Free/Busy settings" +msgstr "Ustawienia wolny / zajęty" + +#: admin/systems/services/kolab/servkolab.tpl:157 +msgid "Allow unauthenticated downloading of Free/Busy information" +msgstr "Zezwól na nieautoryzowane pobieranie informacji Free/Busy" + +#: admin/systems/services/kolab/servkolab.tpl:175 +#: admin/systems/services/kolab/class_servKolab.inc:458 +msgid "SMTP privileged networks" +msgstr "uprzywilejowane sieci SMTP" + +#: admin/systems/services/kolab/servkolab.tpl:180 +msgid "Hosts/networks allowed to relay" +msgstr "Hosty/sieci uprawnione do przekazywania" + +#: admin/systems/services/kolab/servkolab.tpl:185 +msgid "Enter multiple values, seperated with" +msgstr "Wprowadź kilka wartości oddzielonych" + +#: admin/systems/services/kolab/servkolab.tpl:198 +msgid "SMTP smarthost/relayhost" +msgstr "SMTP smarthost/relayhost" + +#: admin/systems/services/kolab/servkolab.tpl:206 +#: admin/systems/services/kolab/class_servKolab.inc:459 +msgid "Enable MX lookup for relayhost" +msgstr "Włącz sprawdzanie MX dla relayhosta" + +#: admin/systems/services/kolab/servkolab.tpl:211 +msgid "Host used to relay mails" +msgstr "Host użyty do przekazywania poczty" + +#: admin/systems/services/kolab/servkolab.tpl:227 +#: admin/systems/services/kolab/class_servKolab.inc:461 +msgid "Accept Internet Mail" +msgstr "Zezwalaj na pocztę z internetu" + +#: admin/systems/services/kolab/servkolab.tpl:235 +msgid "Accept mail from other domains over non-authenticated SMTP" +msgstr "Akceptuj pocztę z innych domen przez nie-autentykowane SMTP" + +#: admin/systems/services/kolab/class_servKolab.inc:107 +#, php-format +msgid "Include data from %s days in the past when creating free/busy lists" +msgstr "Dołącz dane sprzed %s dni podczas tworzenia listy free/busy" + +#: admin/systems/services/kolab/class_servKolab.inc:112 +#, php-format +msgid "Warn users when using more than %s%% of their mail quota" +msgstr "Ostrzeż użytkowników jeśli używają więcej niż %s%% quoty na pocztę" + +#: admin/systems/services/kolab/class_servKolab.inc:154 +msgid "Remove" +msgstr "Usuń" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Kolab account does not exist!" +msgstr "Ustawienia konta Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Error" +msgstr "Błąd" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +msgid "hostname" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:217 +#: admin/systems/services/kolab/class_servKolab.inc:233 +#: admin/systems/services/kolab/class_servKolab.inc:402 +#: personal/connectivity/kolab/class_kolabAccount.inc:339 +#: personal/connectivity/kolab/class_kolabAccount.inc:476 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/systems/services/kolab/class_servKolab.inc:309 +#: admin/systems/services/kolab/class_servKolab.inc:311 +#, fuzzy +msgid "Future days" +msgstr "Przyszłość" + +#: admin/systems/services/kolab/class_servKolab.inc:315 +#: admin/systems/services/kolab/class_servKolab.inc:319 +msgid "Quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:317 +msgid "Please choose a value between 1 and 100 for Quota settings." +msgstr "Proszę wybrać wartość pomiędzy 1 a 100 dla ustawień Quota." + +#: admin/systems/services/kolab/class_servKolab.inc:323 +#, fuzzy +msgid "Privileged networks" +msgstr "uprzywilejowane sieci SMTP" + +#: admin/systems/services/kolab/class_servKolab.inc:419 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Kolab mail service" +msgstr "Usługa poczty Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:429 +#: personal/connectivity/kolab/class_kolabAccount.inc:5 +#: personal/connectivity/kolab/class_kolabAccount.inc:512 +msgid "Kolab" +msgstr "Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:439 +msgid "My destination" +msgstr "Mój cel" + +#: admin/systems/services/kolab/class_servKolab.inc:449 +msgid "FTP FreeBusy service" +msgstr "Usługa FTP FreeBusy" + +#: admin/systems/services/kolab/class_servKolab.inc:450 +msgid "HTTP FreeBusy service" +msgstr "Usługa HTTP FreeBusy" + +#: admin/systems/services/kolab/class_servKolab.inc:451 +msgid "Enable virus scan" +msgstr "Włącz skanowanie antyfirusowe" + +#: admin/systems/services/kolab/class_servKolab.inc:455 +#, fuzzy +msgid "Allow unauthenticated free busy" +msgstr "Zezwól na nieautoryzowane pobieranie informacji Free/Busy" + +#: admin/systems/services/kolab/class_servKolab.inc:456 +msgid "kolabFreeBusyFuture" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:460 +msgid "Relayhost" +msgstr "Host przekazujący" + +#: personal/connectivity/kolab/class_kolabAccount.inc:6 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Mail address" +msgstr "Adres email" + +#: personal/connectivity/kolab/class_kolabAccount.inc:204 +msgid "Always accept" +msgstr "Zawsze akceptuj" + +#: personal/connectivity/kolab/class_kolabAccount.inc:205 +msgid "Always reject" +msgstr "Zawsze odrzuć" + +#: personal/connectivity/kolab/class_kolabAccount.inc:206 +msgid "Reject if conflicts" +msgstr "Odmów jeśli koliduje" + +#: personal/connectivity/kolab/class_kolabAccount.inc:207 +msgid "Manual if conflicts" +msgstr "Ustaw ręcznie jeśli koliduje" + +#: personal/connectivity/kolab/class_kolabAccount.inc:208 +msgid "Manual" +msgstr "Ręczne" + +#: personal/connectivity/kolab/class_kolabAccount.inc:256 +msgid "Anonymous" +msgstr "Anonimowy" + +#: personal/connectivity/kolab/class_kolabAccount.inc:351 +#: personal/connectivity/kolab/class_kolabAccount.inc:354 +#, fuzzy +msgid "Free Busy future" +msgstr "Free busy przyszłość" + +#: personal/connectivity/kolab/class_kolabAccount.inc:359 +#: personal/connectivity/kolab/class_kolabAccount.inc:362 +#, fuzzy +msgid "Free Busy url" +msgstr "Free busy przyszłość" + +#: personal/connectivity/kolab/class_kolabAccount.inc:376 +#, php-format +msgid "The invitation policy entry for address '%s' is not valid." +msgstr "Polityka zapraszania dla adresu '%s' jest nieprawidłowa." + +#: personal/connectivity/kolab/class_kolabAccount.inc:384 +#, php-format +msgid "There's no mail user with address '%s' for your invitation policy!" +msgstr "Brak użytkownika pocztowego o adresie '%s' dla polityki zapraszania!" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +msgid "Kolab account settings" +msgstr "Ustawienia konta Kolab" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/kolab/class_kolabAccount.inc:517 +msgid "My account" +msgstr "Moje konto " + +#: personal/connectivity/kolab/class_kolabAccount.inc:522 +msgid "Free busy future" +msgstr "Free busy przyszłość" + +#: personal/connectivity/kolab/class_kolabAccount.inc:523 +msgid "Mail size restriction" +msgstr "Ograniczenia rozmiaru wiadomości" + +#: personal/connectivity/kolab/class_kolabAccount.inc:524 +msgid "Free busy information" +msgstr "Informacja FreeBusy" + +#: personal/connectivity/kolab/class_kolabAccount.inc:525 +#: personal/connectivity/kolab/kolab.tpl:51 +#: personal/connectivity/kolab/kolab.tpl:63 +msgid "Delegations" +msgstr "Delegacje" + +#: personal/connectivity/kolab/class_kolabAccount.inc:526 +#: personal/connectivity/kolab/kolab.tpl:119 +msgid "Invitation policy" +msgstr "Polityka zapraszania" + +#: personal/connectivity/kolab/kolab.tpl:3 +#: personal/connectivity/kolab/kolab.tpl:43 +msgid "Kolab account" +msgstr "Konto Kolab" + +#: personal/connectivity/kolab/kolab.tpl:4 +msgid "" +"The kolab account is currently disabled. It's features can be adjusted if " +"you add a mail account." +msgstr "" +"To konto kolab jest obecnie wyłączone. Parametry konta można zmieniać po " +"dodaniu konta pocztowego." + +#: personal/connectivity/kolab/kolab.tpl:83 +msgid "Mail size" +msgstr "Rozmiar poczty" + +#: personal/connectivity/kolab/kolab.tpl:87 +msgid "No mail size restriction for this account" +msgstr "Brak ograniczeń co do wielkości poczty dla tego konta" + +#: personal/connectivity/kolab/kolab.tpl:95 +msgid "Free Busy information" +msgstr "Informacja FreeBusy" + +#: personal/connectivity/kolab/kolab.tpl:98 +msgid "URL" +msgstr "URL" + +#: personal/connectivity/kolab/kolab.tpl:107 +msgid "Future" +msgstr "Przyszłość" + +#: personal/connectivity/kolab/kolab.tpl:112 +msgid "days" +msgstr "dni" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:95 +#: personal/mail/kolab/class_mail-methods-kolab.inc:103 +#: personal/mail/kolab/class_mail-methods-kolab.inc:104 +msgid "Unspecified" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:96 +#, fuzzy +msgid "Mails" +msgstr "Poczta" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:97 +#, fuzzy +msgid "Tasks" +msgstr "Zadanie" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:98 +msgid "Journals" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:99 +msgid "Calendar" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:100 +#, fuzzy +msgid "Contacts" +msgstr "Zawartość" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:101 +msgid "Notes" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:105 +msgid "Inbox" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:106 +msgid "Drafts" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:107 +msgid "Sent" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:108 +msgid "SPAM" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:110 +#: personal/mail/kolab/class_mail-methods-kolab.inc:111 +#: personal/mail/kolab/class_mail-methods-kolab.inc:112 +#: personal/mail/kolab/class_mail-methods-kolab.inc:113 +#: personal/mail/kolab/class_mail-methods-kolab.inc:114 +#, fuzzy +msgid "Default" +msgstr "Usuń" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:129 +msgid "Mail settings cannot be removed while there are delegations configured!" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:227 +msgid "Waiting for kolab to remove mail properties..." +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:230 +#, fuzzy +msgid "Please remove the mail settings first!" +msgstr "Zaznacz aby zobaczyć grupy które zawierają ustawienia poczty" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "mężczyzna" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Future days in Free/Busy settings must be set." +#~ msgstr "Przyszłe dni w ustawieniach Free/Busy muszą być liczbą." + +#~ msgid "Future days in Free/Busy settings must be a positive value." +#~ msgstr "Przyszłe dni w ustawieniach Free/Busy muszą być liczbą dodanią." + +#~ msgid "The given Quota settings value must be a number." +#~ msgstr "Podane parametry Quota muszą być liczbą." + +#~ msgid "Future days must be a value." +#~ msgstr "Przyszłe dni muszą być liczbą." + +#~ msgid "No SMTP privileged networks set." +#~ msgstr "Nie ustawiono uprawnionych sieci SMTP" + +#, fuzzy +#~ msgid "Removing of user/kolab account with dn '%s' failed." +#~ msgstr "Usuwanie konta ogólnego użytkownika nieudane" + +#, fuzzy +#~ msgid "Saving of user/kolab account with dn '%s' failed." +#~ msgstr "Zapisywanie konta Kolab nieudane" + +#, fuzzy +#~ msgid "Removing host entry from system server/kolab with dn '%s' failed." +#~ msgstr "Usuwanie serwera z obiektu Kolab nieudane" + +#, fuzzy +#~ msgid "Saving system server/kolab with dn '%s' failed." +#~ msgstr "Zapisywanie serwera do obiektu Kolan nieudane" + +#, fuzzy +#~ msgid "Cannot add invalid mail address!" +#~ msgstr "Próbujesz dodać nieprawidłowy adres email" + +#, fuzzy +#~ msgid "Primary mail address already in use by another user!" +#~ msgstr "Adres podstawowy dla tego współdzielonego folderu" + +#~ msgid "The value specified as Free Busy future needs to be an integer." +#~ msgstr "Wartość podana jako przyszłość FreeBusy musi być liczbą." + +#~ msgid "The value specified as Free Busy Information URL is invalid." +#~ msgstr "Wartość podana jako informacyjny URL FreeBusy jest nieprawidłowa." diff --git a/trunk/gosa-plugins/kolab/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/kolab/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..549156a1e --- /dev/null +++ b/trunk/gosa-plugins/kolab/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,490 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:52+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/systems/services/kolab/servkolab.tpl:6 +msgid "Generic" +msgstr "Общее" + +#: admin/systems/services/kolab/servkolab.tpl:9 +#: admin/systems/services/kolab/class_servKolab.inc:438 +#, fuzzy +msgid "Postfix mydomain" +msgstr "в домене" + +#: admin/systems/services/kolab/servkolab.tpl:18 +#: admin/systems/services/kolab/class_servKolab.inc:440 +msgid "Cyrus admins" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#: admin/systems/services/kolab/class_servKolab.inc:327 +#, fuzzy +msgid "Mail domains" +msgstr "в домене" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#, fuzzy +msgid "Postfix mydestination" +msgstr "Атрибуты UNIX" + +#: admin/systems/services/kolab/servkolab.tpl:43 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/kolab/servkolab.tpl:52 +#: admin/systems/services/kolab/class_servKolab.inc:442 +#, fuzzy +msgid "POP3 service" +msgstr "Служба печати" + +#: admin/systems/services/kolab/servkolab.tpl:62 +#: admin/systems/services/kolab/class_servKolab.inc:443 +#, fuzzy +msgid "POP3/SSL service" +msgstr "Служба SSH" + +#: admin/systems/services/kolab/servkolab.tpl:72 +#: admin/systems/services/kolab/class_servKolab.inc:445 +#, fuzzy +msgid "IMAP service" +msgstr "LDAP-сервер" + +#: admin/systems/services/kolab/servkolab.tpl:82 +#: admin/systems/services/kolab/class_servKolab.inc:446 +#, fuzzy +msgid "IMAP/SSL service" +msgstr "Служба SSH" + +#: admin/systems/services/kolab/servkolab.tpl:92 +#: admin/systems/services/kolab/class_servKolab.inc:448 +#, fuzzy +msgid "Sieve service" +msgstr "Служба SSH" + +#: admin/systems/services/kolab/servkolab.tpl:102 +msgid "FTP FreeBusy service (legacy, not interoperable with Kolab2 FreeBusy)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:112 +msgid "HTTP FreeBusy service (legacy)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:122 +msgid "Amavis email scanning (virus/spam)" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:133 +#: admin/systems/services/kolab/class_servKolab.inc:453 +#, fuzzy +msgid "Quota settings" +msgstr "Настройки Samba" + +#: admin/systems/services/kolab/servkolab.tpl:151 +#, fuzzy +msgid "Free/Busy settings" +msgstr "Настройки факса" + +#: admin/systems/services/kolab/servkolab.tpl:157 +msgid "Allow unauthenticated downloading of Free/Busy information" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:175 +#: admin/systems/services/kolab/class_servKolab.inc:458 +msgid "SMTP privileged networks" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:180 +msgid "Hosts/networks allowed to relay" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:185 +msgid "Enter multiple values, seperated with" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:198 +msgid "SMTP smarthost/relayhost" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:206 +#: admin/systems/services/kolab/class_servKolab.inc:459 +msgid "Enable MX lookup for relayhost" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:211 +msgid "Host used to relay mails" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:227 +#: admin/systems/services/kolab/class_servKolab.inc:461 +msgid "Accept Internet Mail" +msgstr "" + +#: admin/systems/services/kolab/servkolab.tpl:235 +msgid "Accept mail from other domains over non-authenticated SMTP" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:107 +#, php-format +msgid "Include data from %s days in the past when creating free/busy lists" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:112 +#, php-format +msgid "Warn users when using more than %s%% of their mail quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:154 +msgid "Remove" +msgstr "Удалить" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Internal error" +msgstr "Терминал-сервер" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Kolab account does not exist!" +msgstr "Моя учетная запись" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Error" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +msgid "hostname" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:217 +#: admin/systems/services/kolab/class_servKolab.inc:233 +#: admin/systems/services/kolab/class_servKolab.inc:402 +#: personal/connectivity/kolab/class_kolabAccount.inc:339 +#: personal/connectivity/kolab/class_kolabAccount.inc:476 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/systems/services/kolab/class_servKolab.inc:309 +#: admin/systems/services/kolab/class_servKolab.inc:311 +msgid "Future days" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:315 +#: admin/systems/services/kolab/class_servKolab.inc:319 +msgid "Quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:317 +msgid "Please choose a value between 1 and 100 for Quota settings." +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:323 +msgid "Privileged networks" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:419 +#: admin/systems/services/kolab/class_servKolab.inc:430 +#, fuzzy +msgid "Kolab mail service" +msgstr "Добавить сервис DNS" + +#: admin/systems/services/kolab/class_servKolab.inc:429 +#: personal/connectivity/kolab/class_kolabAccount.inc:5 +#: personal/connectivity/kolab/class_kolabAccount.inc:512 +msgid "Kolab" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:439 +#, fuzzy +msgid "My destination" +msgstr "Назначение" + +#: admin/systems/services/kolab/class_servKolab.inc:449 +#, fuzzy +msgid "FTP FreeBusy service" +msgstr "Звук" + +#: admin/systems/services/kolab/class_servKolab.inc:450 +#, fuzzy +msgid "HTTP FreeBusy service" +msgstr "Звук" + +#: admin/systems/services/kolab/class_servKolab.inc:451 +msgid "Enable virus scan" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:455 +msgid "Allow unauthenticated free busy" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:456 +msgid "kolabFreeBusyFuture" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:460 +#, fuzzy +msgid "Relayhost" +msgstr "Набор правил" + +#: personal/connectivity/kolab/class_kolabAccount.inc:6 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +#, fuzzy +msgid "Mail address" +msgstr "MAC-адрес" + +#: personal/connectivity/kolab/class_kolabAccount.inc:204 +msgid "Always accept" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:205 +msgid "Always reject" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:206 +#, fuzzy +msgid "Reject if conflicts" +msgstr "В" + +#: personal/connectivity/kolab/class_kolabAccount.inc:207 +msgid "Manual if conflicts" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:208 +#, fuzzy +msgid "Manual" +msgstr "Январь" + +#: personal/connectivity/kolab/class_kolabAccount.inc:256 +msgid "Anonymous" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:351 +#: personal/connectivity/kolab/class_kolabAccount.inc:354 +#, fuzzy +msgid "Free Busy future" +msgstr "Общая информация о пользователе" + +#: personal/connectivity/kolab/class_kolabAccount.inc:359 +#: personal/connectivity/kolab/class_kolabAccount.inc:362 +#, fuzzy +msgid "Free Busy url" +msgstr "Общая информация о пользователе" + +#: personal/connectivity/kolab/class_kolabAccount.inc:376 +#, php-format +msgid "The invitation policy entry for address '%s' is not valid." +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:384 +#, php-format +msgid "There's no mail user with address '%s' for your invitation policy!" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +#, fuzzy +msgid "Kolab account settings" +msgstr "Моя учетная запись" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/kolab/class_kolabAccount.inc:517 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/connectivity/kolab/class_kolabAccount.inc:522 +msgid "Free busy future" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:523 +#, fuzzy +msgid "Mail size restriction" +msgstr "Почтовые настройки пользователя" + +#: personal/connectivity/kolab/class_kolabAccount.inc:524 +#, fuzzy +msgid "Free busy information" +msgstr "Общая информация о пользователе" + +#: personal/connectivity/kolab/class_kolabAccount.inc:525 +#: personal/connectivity/kolab/kolab.tpl:51 +#: personal/connectivity/kolab/kolab.tpl:63 +#, fuzzy +msgid "Delegations" +msgstr "Назначение" + +#: personal/connectivity/kolab/class_kolabAccount.inc:526 +#: personal/connectivity/kolab/kolab.tpl:119 +msgid "Invitation policy" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:3 +#: personal/connectivity/kolab/kolab.tpl:43 +#, fuzzy +msgid "Kolab account" +msgstr "Моя учетная запись" + +#: personal/connectivity/kolab/kolab.tpl:4 +msgid "" +"The kolab account is currently disabled. It's features can be adjusted if " +"you add a mail account." +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:83 +#, fuzzy +msgid "Mail size" +msgstr "Размер квоты" + +#: personal/connectivity/kolab/kolab.tpl:87 +msgid "No mail size restriction for this account" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:95 +#, fuzzy +msgid "Free Busy information" +msgstr "Общая информация о пользователе" + +#: personal/connectivity/kolab/kolab.tpl:98 +msgid "URL" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:107 +msgid "Future" +msgstr "" + +#: personal/connectivity/kolab/kolab.tpl:112 +#, fuzzy +msgid "days" +msgstr "день" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:95 +#: personal/mail/kolab/class_mail-methods-kolab.inc:103 +#: personal/mail/kolab/class_mail-methods-kolab.inc:104 +msgid "Unspecified" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:96 +#, fuzzy +msgid "Mails" +msgstr "Почта" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:97 +msgid "Tasks" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:98 +msgid "Journals" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:99 +msgid "Calendar" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:100 +#, fuzzy +msgid "Contacts" +msgstr "Контакт" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:101 +msgid "Notes" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:105 +msgid "Inbox" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:106 +msgid "Drafts" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:107 +msgid "Sent" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:108 +msgid "SPAM" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:110 +#: personal/mail/kolab/class_mail-methods-kolab.inc:111 +#: personal/mail/kolab/class_mail-methods-kolab.inc:112 +#: personal/mail/kolab/class_mail-methods-kolab.inc:113 +#: personal/mail/kolab/class_mail-methods-kolab.inc:114 +#, fuzzy +msgid "Default" +msgstr "Удалить" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:129 +msgid "Mail settings cannot be removed while there are delegations configured!" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:227 +msgid "Waiting for kolab to remove mail properties..." +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:230 +#, fuzzy +msgid "Please remove the mail settings first!" +msgstr "" +"Выберите, чтобы просмотреть список групп, которым доступны функции эл. почты" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "мужской" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#, fuzzy +#~ msgid "Removing of user/kolab account with dn '%s' failed." +#~ msgstr "Удалить учетную запись Samba" + +#, fuzzy +#~ msgid "Saving of user/kolab account with dn '%s' failed." +#~ msgstr "Моя учетная запись" + +#, fuzzy +#~ msgid "Removing host entry from system server/kolab with dn '%s' failed." +#~ msgstr "Удалить телефонный аккаунт" + +#, fuzzy +#~ msgid "Saving system server/kolab with dn '%s' failed." +#~ msgstr "Моя учетная запись" + +#, fuzzy +#~ msgid "Cannot add invalid mail address!" +#~ msgstr "Вы пытаетесь добавить некорректный адрес электронной почты " + +#, fuzzy +#~ msgid "Primary mail address already in use by another user!" +#~ msgstr "Основной адрес эл. почты для этой общей папки" + +#, fuzzy +#~ msgid "The value specified as Free Busy Information URL is invalid." +#~ msgstr "Значение поля \"Файлы\" некорректно." diff --git a/trunk/gosa-plugins/kolab/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/kolab/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..76e0a667d --- /dev/null +++ b/trunk/gosa-plugins/kolab/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,495 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:52+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/services/kolab/servkolab.tpl:6 +msgid "Generic" +msgstr "通用配置" + +#: admin/systems/services/kolab/servkolab.tpl:9 +#: admin/systems/services/kolab/class_servKolab.inc:438 +msgid "Postfix mydomain" +msgstr "Postfix 'mydomain'" + +#: admin/systems/services/kolab/servkolab.tpl:18 +#: admin/systems/services/kolab/class_servKolab.inc:440 +msgid "Cyrus admins" +msgstr "Cyrus 管理员" + +#: admin/systems/services/kolab/servkolab.tpl:27 +#: admin/systems/services/kolab/class_servKolab.inc:327 +#, fuzzy +msgid "Mail domains" +msgstr "于域" + +#: admin/systems/services/kolab/servkolab.tpl:27 +msgid "Postfix mydestination" +msgstr "Postfix mydestination" + +#: admin/systems/services/kolab/servkolab.tpl:43 +#: admin/systems/services/kolab/class_servKolab.inc:430 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/kolab/servkolab.tpl:52 +#: admin/systems/services/kolab/class_servKolab.inc:442 +msgid "POP3 service" +msgstr "POP3 服务" + +#: admin/systems/services/kolab/servkolab.tpl:62 +#: admin/systems/services/kolab/class_servKolab.inc:443 +msgid "POP3/SSL service" +msgstr "POP3/SSL 服务器" + +#: admin/systems/services/kolab/servkolab.tpl:72 +#: admin/systems/services/kolab/class_servKolab.inc:445 +msgid "IMAP service" +msgstr "IMAP 服务" + +#: admin/systems/services/kolab/servkolab.tpl:82 +#: admin/systems/services/kolab/class_servKolab.inc:446 +msgid "IMAP/SSL service" +msgstr "IMAP/SSL 服务" + +#: admin/systems/services/kolab/servkolab.tpl:92 +#: admin/systems/services/kolab/class_servKolab.inc:448 +msgid "Sieve service" +msgstr "Sieve 服务" + +#: admin/systems/services/kolab/servkolab.tpl:102 +msgid "FTP FreeBusy service (legacy, not interoperable with Kolab2 FreeBusy)" +msgstr "FTP FreeBusy 服务 (过时的,不能和 Kolab2 FreeBusy 互操作)" + +#: admin/systems/services/kolab/servkolab.tpl:112 +msgid "HTTP FreeBusy service (legacy)" +msgstr "HTTP FreeBusy 服务(旧)" + +#: admin/systems/services/kolab/servkolab.tpl:122 +msgid "Amavis email scanning (virus/spam)" +msgstr "Amavis 邮件扫描 (病毒/垃圾邮件)" + +#: admin/systems/services/kolab/servkolab.tpl:133 +#: admin/systems/services/kolab/class_servKolab.inc:453 +msgid "Quota settings" +msgstr "Quota 设置" + +#: admin/systems/services/kolab/servkolab.tpl:151 +msgid "Free/Busy settings" +msgstr "Free/Busy 设置" + +#: admin/systems/services/kolab/servkolab.tpl:157 +msgid "Allow unauthenticated downloading of Free/Busy information" +msgstr "允许不登录下载 Free/Busy 信息" + +#: admin/systems/services/kolab/servkolab.tpl:175 +#: admin/systems/services/kolab/class_servKolab.inc:458 +msgid "SMTP privileged networks" +msgstr "SMTP 授权网络" + +#: admin/systems/services/kolab/servkolab.tpl:180 +msgid "Hosts/networks allowed to relay" +msgstr "允许中继的主机/网络" + +#: admin/systems/services/kolab/servkolab.tpl:185 +msgid "Enter multiple values, seperated with" +msgstr "输入多个值,分隔符为" + +#: admin/systems/services/kolab/servkolab.tpl:198 +msgid "SMTP smarthost/relayhost" +msgstr "SMTP smarthost/relayhost" + +#: admin/systems/services/kolab/servkolab.tpl:206 +#: admin/systems/services/kolab/class_servKolab.inc:459 +msgid "Enable MX lookup for relayhost" +msgstr "启用中继主机的 MX 查找" + +#: admin/systems/services/kolab/servkolab.tpl:211 +msgid "Host used to relay mails" +msgstr "中继邮件使用的主机" + +#: admin/systems/services/kolab/servkolab.tpl:227 +#: admin/systems/services/kolab/class_servKolab.inc:461 +msgid "Accept Internet Mail" +msgstr "允许 Internet 邮件" + +#: admin/systems/services/kolab/servkolab.tpl:235 +msgid "Accept mail from other domains over non-authenticated SMTP" +msgstr "允许从其他未认证 SMTP 发送邮件" + +#: admin/systems/services/kolab/class_servKolab.inc:107 +#, php-format +msgid "Include data from %s days in the past when creating free/busy lists" +msgstr "当创建 free/busy 列表,包含自过去 %s 天以来的信息" + +#: admin/systems/services/kolab/class_servKolab.inc:112 +#, php-format +msgid "Warn users when using more than %s%% of their mail quota" +msgstr "当用户邮件空间占用超过 %s%% 时警告用户" + +#: admin/systems/services/kolab/class_servKolab.inc:154 +msgid "Remove" +msgstr "删除" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Internal error" +msgstr "终端服务器" + +#: admin/systems/services/kolab/class_servKolab.inc:203 +#, fuzzy +msgid "Kolab account does not exist!" +msgstr "Kolab 账号" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Error" +msgstr "错误" + +#: admin/systems/services/kolab/class_servKolab.inc:207 +msgid "hostname" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:217 +#: admin/systems/services/kolab/class_servKolab.inc:233 +#: admin/systems/services/kolab/class_servKolab.inc:402 +#: personal/connectivity/kolab/class_kolabAccount.inc:339 +#: personal/connectivity/kolab/class_kolabAccount.inc:476 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/systems/services/kolab/class_servKolab.inc:309 +#: admin/systems/services/kolab/class_servKolab.inc:311 +#, fuzzy +msgid "Future days" +msgstr "功能" + +#: admin/systems/services/kolab/class_servKolab.inc:315 +#: admin/systems/services/kolab/class_servKolab.inc:319 +msgid "Quota" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:317 +msgid "Please choose a value between 1 and 100 for Quota settings." +msgstr "请选择一个介于 1 到 100 的数字作为 Quota 设置。" + +#: admin/systems/services/kolab/class_servKolab.inc:323 +#, fuzzy +msgid "Privileged networks" +msgstr "SMTP 授权网络" + +#: admin/systems/services/kolab/class_servKolab.inc:419 +#: admin/systems/services/kolab/class_servKolab.inc:430 +#, fuzzy +msgid "Kolab mail service" +msgstr "添加 Kolab 服务" + +#: admin/systems/services/kolab/class_servKolab.inc:429 +#: personal/connectivity/kolab/class_kolabAccount.inc:5 +#: personal/connectivity/kolab/class_kolabAccount.inc:512 +msgid "Kolab" +msgstr "Kolab" + +#: admin/systems/services/kolab/class_servKolab.inc:439 +#, fuzzy +msgid "My destination" +msgstr "目标" + +#: admin/systems/services/kolab/class_servKolab.inc:449 +#, fuzzy +msgid "FTP FreeBusy service" +msgstr "HTTP FreeBusy 服务(旧)" + +#: admin/systems/services/kolab/class_servKolab.inc:450 +#, fuzzy +msgid "HTTP FreeBusy service" +msgstr "HTTP FreeBusy 服务(旧)" + +#: admin/systems/services/kolab/class_servKolab.inc:451 +#, fuzzy +msgid "Enable virus scan" +msgstr "启用邮件扫描" + +#: admin/systems/services/kolab/class_servKolab.inc:455 +#, fuzzy +msgid "Allow unauthenticated free busy" +msgstr "允许不登录下载 Free/Busy 信息" + +#: admin/systems/services/kolab/class_servKolab.inc:456 +msgid "kolabFreeBusyFuture" +msgstr "" + +#: admin/systems/services/kolab/class_servKolab.inc:460 +#, fuzzy +msgid "Relayhost" +msgstr "发行" + +#: personal/connectivity/kolab/class_kolabAccount.inc:6 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/kolab/class_kolabAccount.inc:171 +msgid "Mail address" +msgstr "邮件地址" + +#: personal/connectivity/kolab/class_kolabAccount.inc:204 +msgid "Always accept" +msgstr "总是接受" + +#: personal/connectivity/kolab/class_kolabAccount.inc:205 +msgid "Always reject" +msgstr "总是拒绝" + +#: personal/connectivity/kolab/class_kolabAccount.inc:206 +msgid "Reject if conflicts" +msgstr "如果冲突拒绝" + +#: personal/connectivity/kolab/class_kolabAccount.inc:207 +msgid "Manual if conflicts" +msgstr "如果冲突手工解决" + +#: personal/connectivity/kolab/class_kolabAccount.inc:208 +msgid "Manual" +msgstr "手工解决" + +#: personal/connectivity/kolab/class_kolabAccount.inc:256 +msgid "Anonymous" +msgstr "匿名" + +#: personal/connectivity/kolab/class_kolabAccount.inc:351 +#: personal/connectivity/kolab/class_kolabAccount.inc:354 +#, fuzzy +msgid "Free Busy future" +msgstr "自由使用的信息" + +#: personal/connectivity/kolab/class_kolabAccount.inc:359 +#: personal/connectivity/kolab/class_kolabAccount.inc:362 +#, fuzzy +msgid "Free Busy url" +msgstr "自由使用的信息" + +#: personal/connectivity/kolab/class_kolabAccount.inc:376 +#, php-format +msgid "The invitation policy entry for address '%s' is not valid." +msgstr "地址 '%s' 的邀请策略条目无效。" + +#: personal/connectivity/kolab/class_kolabAccount.inc:384 +#, php-format +msgid "There's no mail user with address '%s' for your invitation policy!" +msgstr "没有针对您邀请策略的地址为 '%s' 的用户!" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +#, fuzzy +msgid "Kolab account settings" +msgstr "Kolab 账号" + +#: personal/connectivity/kolab/class_kolabAccount.inc:513 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/kolab/class_kolabAccount.inc:517 +msgid "My account" +msgstr "我的账号" + +#: personal/connectivity/kolab/class_kolabAccount.inc:522 +msgid "Free busy future" +msgstr "" + +#: personal/connectivity/kolab/class_kolabAccount.inc:523 +#, fuzzy +msgid "Mail size restriction" +msgstr "邮件传递列表" + +#: personal/connectivity/kolab/class_kolabAccount.inc:524 +#, fuzzy +msgid "Free busy information" +msgstr "自由使用的信息" + +#: personal/connectivity/kolab/class_kolabAccount.inc:525 +#: personal/connectivity/kolab/kolab.tpl:51 +#: personal/connectivity/kolab/kolab.tpl:63 +msgid "Delegations" +msgstr "代理人" + +#: personal/connectivity/kolab/class_kolabAccount.inc:526 +#: personal/connectivity/kolab/kolab.tpl:119 +msgid "Invitation policy" +msgstr "邀请策略" + +#: personal/connectivity/kolab/kolab.tpl:3 +#: personal/connectivity/kolab/kolab.tpl:43 +msgid "Kolab account" +msgstr "Kolab 账号" + +#: personal/connectivity/kolab/kolab.tpl:4 +msgid "" +"The kolab account is currently disabled. It's features can be adjusted if " +"you add a mail account." +msgstr "当前 kolab 账号已经禁用。如果您添加一个邮件账号,可以调整这个功能。" + +#: personal/connectivity/kolab/kolab.tpl:83 +msgid "Mail size" +msgstr "邮件大小" + +#: personal/connectivity/kolab/kolab.tpl:87 +msgid "No mail size restriction for this account" +msgstr "该账号邮件大小不受限制" + +#: personal/connectivity/kolab/kolab.tpl:95 +msgid "Free Busy information" +msgstr "自由使用的信息" + +#: personal/connectivity/kolab/kolab.tpl:98 +msgid "URL" +msgstr "URL" + +#: personal/connectivity/kolab/kolab.tpl:107 +msgid "Future" +msgstr "功能" + +#: personal/connectivity/kolab/kolab.tpl:112 +msgid "days" +msgstr "天" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:95 +#: personal/mail/kolab/class_mail-methods-kolab.inc:103 +#: personal/mail/kolab/class_mail-methods-kolab.inc:104 +msgid "Unspecified" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:96 +#, fuzzy +msgid "Mails" +msgstr "邮件" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:97 +#, fuzzy +msgid "Tasks" +msgstr "任务" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:98 +msgid "Journals" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:99 +msgid "Calendar" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:100 +#, fuzzy +msgid "Contacts" +msgstr "内容" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:101 +msgid "Notes" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:105 +msgid "Inbox" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:106 +msgid "Drafts" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:107 +msgid "Sent" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:108 +msgid "SPAM" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:110 +#: personal/mail/kolab/class_mail-methods-kolab.inc:111 +#: personal/mail/kolab/class_mail-methods-kolab.inc:112 +#: personal/mail/kolab/class_mail-methods-kolab.inc:113 +#: personal/mail/kolab/class_mail-methods-kolab.inc:114 +#, fuzzy +msgid "Default" +msgstr "删除" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:129 +msgid "Mail settings cannot be removed while there are delegations configured!" +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:227 +msgid "Waiting for kolab to remove mail properties..." +msgstr "" + +#: personal/mail/kolab/class_mail-methods-kolab.inc:230 +#, fuzzy +msgid "Please remove the mail settings first!" +msgstr "选择查看配置了邮件设置的组" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "男" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Future days in Free/Busy settings must be set." +#~ msgstr "Free/Busy 设置中的未来日期必须设置。" + +#~ msgid "Future days in Free/Busy settings must be a positive value." +#~ msgstr "Free/Busy 设置中的未来日子必须是一个正数。" + +#~ msgid "The given Quota settings value must be a number." +#~ msgstr "提供的 Quota 设置必须是一个数字。" + +#~ msgid "Future days must be a value." +#~ msgstr "未来日子必须是一个值。" + +#~ msgid "No SMTP privileged networks set." +#~ msgstr "没有设置 SMTP 授权网络。" + +#~ msgid "Removing of user/kolab account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#~ msgid "Saving of user/kolab account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Removing host entry from system server/kolab with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving system server/kolab with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Cannot add invalid mail address!" +#~ msgstr "您正在添加一个无效邮件地址" + +#, fuzzy +#~ msgid "Primary mail address already in use by another user!" +#~ msgstr "此共享目录的主要邮件地址" + +#~ msgid "The value specified as Free Busy future needs to be an integer." +#~ msgstr "Free Busy 功能设定的值必须是个整数。" + +#~ msgid "The value specified as Free Busy Information URL is invalid." +#~ msgstr "提供的 Free Busy 信息 URL 无效。" diff --git a/trunk/gosa-plugins/kolab/personal/connectivity/kolab/class_kolabAccount.inc b/trunk/gosa-plugins/kolab/personal/connectivity/kolab/class_kolabAccount.inc new file mode 100644 index 000000000..696f2b358 --- /dev/null +++ b/trunk/gosa-plugins/kolab/personal/connectivity/kolab/class_kolabAccount.inc @@ -0,0 +1,675 @@ +attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + + /* Pull arrays */ + foreach(array("kolabDelegate", "kolabInvitationPolicy") as $attr){ + if (isset($this->attrs["$attr"]["count"])){ + $tmp = array(); + for ($i= 0; $i<$this->attrs["$attr"]["count"]; $i++){ + $tmp[]=$this->attrs["$attr"][$i]; + } + $this->$attr = $tmp; + } + } + + /* Get Boolean value */ + $this->unrestrictedMailSize = FALSE; + if(isset($this->attrs['unrestrictedMailSize'][0]) && preg_match("/true/i",$this->attrs['unrestrictedMailSize'][0])){ + $this->unrestrictedMailSize = TRUE; + } + + /* If this one is empty, preset with ACT_MANUAL for anonymous users */ + if (count ($this->kolabInvitationPolicy) == 0){ + $this->kolabInvitationPolicy= array("ACT_MANUAL"); + } + + /* Check is account state */ + $this->is_account = false; + if(count($this->kolabDelegate)){ + $this->is_account = true; + } + foreach(array("calFBURL") as $attr){ + if(!empty($this->$attr)){ + $this->is_account = true; + } + } + + /* Transfer account states for this union */ + if (isset($this->parent->by_object['mailAccount']) && $this->parent->by_object['mailAccount']->is_account){ + $this->mail_Account = true; + }elseif( isset($this->attrs) && isset($this->attrs['kolabHomeServer'])){ + $this->mail_Account= true; + }else{ + $this->is_account = false; + $this->mail_Account = false; + } + } + + + /*! \brief Create thml output + */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Show tab dialog headers */ + $display= ""; + + /* Show main page */ + $smarty= get_smarty(); + + /* Load attributes */ + foreach($this->attributes as $val){ + $smarty->assign("$val", $this->$val); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $acl => $description){ + $smarty->assign($acl."ACL",$this->getacl($acl,$this->ReadOnly)); + $smarty->assign($acl."_W", $this->acl_is_writeable($acl,$this->ReadOnly)); + } + $smarty->assign("is_account" , $this->is_account); + + if($this->ReadOnly){ + $smarty->assign("is_removeable",false); + $smarty->assign("is_createable",false); + }else{ + $smarty->assign("is_removeable",$this->acl_is_removeable()); + $smarty->assign("is_createable",$this->acl_is_createable()); + } + + /* Check for invitation action */ + $nr= 0; + + foreach($_POST as $name => $value){ + if(preg_match("/add_inv_/",$name)){ + $this->kolabInvitationPolicy[]= ": ACT_MANUAL"; + } + } + foreach($_POST as $name => $value){ + if(preg_match("/del_inv_/",$name)){ + + $id = preg_replace("/del_inv_/","",$name); + $id = preg_replace("/_(x|y)$/","",$id); + + $new= array(); + foreach ($this->kolabInvitationPolicy as $entry){ + if (!preg_match("/^".$this->imapping[$id].":/", $entry)){ + $new[]= $entry; + } + } + $this->kolabInvitationPolicy= $new; + } + } + + /* Unify addresses */ + $new= array(); + foreach($this->kolabInvitationPolicy as $value){ + $address= preg_replace('/^([^:]+:).*$/', '\1', $value); + $new[$address]= $value; + } + $this->kolabInvitationPolicy= array(); + foreach($new as $value){ + $this->kolabInvitationPolicy[]= $value; + } + + /* Add delegation */ + if (isset($_POST['add_delegation'])){ + if ($_POST['delegate_address'] != ""){ + + /* Valid email address specified? */ + $address= $_POST['delegate_address']; + $valid= FALSE; + if (!tests::is_email($address)){ + if (!tests::is_email($address, TRUE)){ + msg_dialog::display(_("Error"), msgPool::invalid(_("Mail address"), "","", "your-domain@your-domain.com")); + } + } else { + +# $ldap= $this->config->get_ldap_link(); +# $ldap->cd ($this->config->current['BASE']); +# $ldap->search('(mail='.$address.')',array("mail")); +# if ($ldap->count() == 0){ +# msg_dialog::display(_("Error"), msgPool::duplicated(_("Primary mail address"))); +# } else { + $valid= TRUE; +# } + } + + if ($valid){ + /* Add it */ + if ($this->acl_is_writeable("kolabDelegate")){ + $this->addDelegate ($address); + $this->is_modified= TRUE; + } + + } + } + } + + /* Delete forward email addresses */ + if ((isset($_POST['delete_delegation'])) && (isset($_POST['delegate_list']))){ + if (count($_POST['delegate_list']) && $this->acl_is_writeable("kolabDelegate")){ + $this->delDelegate ($_POST['delegate_list']); + } + } + + /* Assemble policies */ + $policies= array( 'ACT_ALWAYS_ACCEPT' => _("Always accept"), + 'ACT_ALWAYS_REJECT' => _("Always reject"), + 'ACT_REJECT_IF_CONFLICTS' => _("Reject if conflicts"), + 'ACT_MANUAL_IF_CONFLICTS' => _("Manual if conflicts"), + 'ACT_MANUAL' => _("Manual")); + $smarty->assign('policies', $policies); + + /* Adjust checkbox */ + if ($this->unrestrictedMailSize){ + $smarty->assign('unrestrictedMailSizeState', "checked"); + } else { + $smarty->assign('unrestrictedMailSizeState', ""); + } + + /* Transfer delegation list */ + if (!count($this->kolabDelegate)){ + /* Smarty will produce and tidy don't like that, so tell smarty to create no option (array();)*/ + $smarty->assign("kolabDelegate", array()); + } else { + $smarty->assign("kolabDelegate", $this->kolabDelegate); + } + + $smarty->assign("mail_account",$this->mail_Account); + + /* Create InvitationPolicy table */ + $invitation= ""; + $this->imapping= array(); + $nr= 0; + $changeState = ""; + foreach ($this->kolabInvitationPolicy as $entry){ + + if($this->acl_is_writeable("kolabInvitationPolicy")){ + $changeState .= "changeState('address".$nr."'); \n changeState('policy".$nr."'); \n + changeState('add".$nr."'); \n changeState('remove".$nr."'); \n"; + } + + if(!$this->acl_is_writeable("kolabInvitationPolicy") && !$this->multiple_support_active){ + $dis = " disabled "; + }else{ + if($this->is_account || $this->multiple_support_active){ + $dis = " "; + }else{ + $dis = " disabled "; + } + } + $invitation.= ""; + + if(!$this->acl_is_readable("kolabInvitationPolicy")) { + } + + /* The default entry does not have colons... */ + if (!preg_match('/:/', $entry)){ + $invitation.= _("Anonymous"); + $name= ""; + $mode= $entry; + } else { + $name= preg_replace('/:.*$/', '', $entry); + $mode= preg_replace('/^[^:]*: */', '', $entry); + + if(!$this->acl_is_readable("kolabInvitationPolicy")){ + $name=''; + } + $invitation.= ""; + } + $invitation.= ""; + + /* Add mode switch */ + $invitation.= ""; + } + if ($nr != 0) { + $button.= ""; + } + + $invitation.= "  + $button + \n"; + $this->imapping[$nr]= $name; + $nr++; + } + $smarty->assign("invitation", $invitation); + $smarty->assign("changeState", $changeState); + $smarty->assign("kolabState",$this->is_account); + + + $smarty->assign("multiple_support",$this->multiple_support_active); + foreach($this->attributes as $attr){ + $smarty->assign("use_".$attr,in_array($attr,$this->multi_boxes)); + } + foreach(array("kolabState") as $attr){ + $smarty->assign("use_".$attr,in_array($attr,$this->multi_boxes)); + } + + if($this->multiple_support_active){ + } + + + $display.= $smarty->fetch (get_template_path('kolab.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + if(!$this->initially_was_account){ + return; + } + + /* Optionally execute a command after we're done */ + plugin::remove_from_parent(); + + if(!in_array("kolabInetOrgPerson",$this->attrs['objectClass'])){ + $this->attrs['objectClass'][] = "kolabInetOrgPerson"; + } + + $ldap = $this->config->get_ldap_linK(); + $ldap->cd($this->config->current['BASE']); + $ldap->cd ($this->dn); + $ldap->modify($this->attrs); + + /* Log last action */ + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + $this->handle_post_events('remove',array("uid" => $this->uid)); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + } + + + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* FBFuture is in days... */ + if ($this->kolabFreeBusyFuture == ""){ + $message[]= msgPool::required(_("Free Busy future")); + } + if(!preg_match('/^[0-9]+$/', $this->kolabFreeBusyFuture)){ + $message[]= msgPool::invalid(_("Free Busy future"), $this->kolabFreeBusyFuture, "/^[0-9]+$/"); + } + + /* Check for URL scheme... */ + if(empty($this->calFBURL)){ + $message[]= msgPool::required(_("Free Busy url")); + } + if(!preg_match("/^http+(s)*:\/\//",$this->calFBURL)){ + $message[]= msgPool::invalid(_("Free Busy url"), $this->calFBURL, "/^http+(s)*:\/\//"); + } + + /* Check invitation policy for existing mail addresses */ + foreach($this->kolabInvitationPolicy as $policy){ + + /* Ignore anonymous string */ + if (!preg_match('/:/', $policy)){ + continue; + } + + $address= preg_replace('/^([^:]+).*$/', '\1', $policy); + if (!tests::is_email($address)){ + if (!tests::is_email($address, TRUE)){ + $message[]= sprintf(_("The invitation policy entry for address '%s' is not valid."), $address); + } + } else { + + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->config->current['BASE']); + $ldap->search('(mail='.$address.')',array("mail")); + if ($ldap->count() == 0){ + $message[]= sprintf(_("There's no mail user with address '%s' for your invitation policy!"), $address); + } else { + $valid= TRUE; + } + } + } + + return ($message); + } + + /* Save data to object */ + function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + + if(isset($_POST["kolabState"])){ + if($this->acl_is_createable()){ + $this->is_account = true; + } + }else{ + if($this->acl_is_removeable()){ + $this->is_account = false; + } + } + if ($this->acl_is_writeable("unrestrictedMailSize")){ + if (isset($_POST['unrestrictedMailSize']) && $_POST['unrestrictedMailSize'] == 1){ + $this->unrestrictedMailSize= 1; + } else { + $this->unrestrictedMailSize= 0; + } + } + } + + plugin::save_object(); + + /* Save changes done in invitation policies */ + if($this->acl_is_writeable("kolabInvitationPolicy")){ + + $nr= 0; + $this->kolabInvitationPolicy= array(); + while (isset($_POST["policy$nr"])){ + + /* Anonymous? */ + if (!isset($_POST["address$nr"])){ + $this->kolabInvitationPolicy[]= $_POST["policy$nr"]; + } else { + $this->kolabInvitationPolicy[]= $_POST["address$nr"].": ".$_POST["policy$nr"]; + } + + $nr++; + } + + /* If this one is empty, preset with ACT_MANUAL for anonymous users */ + if (count ($this->kolabInvitationPolicy) == 0){ + $this->kolabInvitationPolicy= array("ACT_MANUAL"); + } + } + } + + + /* Save to LDAP */ + function save() + { + /* Check mailmethod before doing something useful */ + plugin::save(); + + /* Transfer arrays */ + $this->attrs['kolabDelegate']= $this->kolabDelegate; + $this->attrs['kolabInvitationPolicy']= $this->kolabInvitationPolicy; + + /* unrestrictedMailSize is boolean */ + if($this->attrs['unrestrictedMailSize']){ + $this->attrs['unrestrictedMailSize'] = "TRUE"; + }else{ + $this->attrs['unrestrictedMailSize'] = "FALSE"; + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + } + + + /* Add entry to delegation list */ + function addDelegate($address) + { + $this->kolabDelegate[]= $address; + $this->kolabDelegate= array_unique ($this->kolabDelegate); + + sort ($this->kolabDelegate); + reset ($this->kolabDelegate); + $this->is_modified= TRUE; + } + + function delDelegate($addresses) + { + $this->kolabDelegate= array_remove_entries ($addresses, $this->kolabDelegate); + $this->is_modified= TRUE; + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Kolab"), + "plDescription" => _("Kolab account settings")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 20, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + "kolabFreeBusyFuture" => _("Free busy future"), + "unrestrictedMailSize" => _("Mail size restriction"), + "calFBURL" => _("Free busy information"), + "kolabDelegate" => _("Delegations"), + "kolabInvitationPolicy" => _("Invitation policy")) + )); + } + + + /*! \brief Enable multiple edit support. \ + Also sets $this->mail_account to TRUE, which simulates \ + a valid mail extension. + */ + public function enable_multiple_support() + { + plugin::enable_multiple_support(); + $this->mail_Account = TRUE; + } + + + /*! \brief Save html POSTs in multiple edit. + */ + public function multiple_save_object() + { + if (isset($_POST['connectivityTab'])){ + plugin::multiple_save_object(); + if(isset($_POST['use_kolabState'])){ + $this->multi_boxes[] = "kolabState"; + } + $this->save_object(); + } + } + + + /*! \brief Returns all modified values. \ + All selected an modified values will be returned \ + in an array. + @return array Returns an array containing all attribute modifications + */ + public function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("kolabState",$this->multi_boxes)){ + $ret['is_account'] = $this->is_account; + } + return($ret); + } + + /*! \brief Sets modified attributes in mutliple edit. \ + All collected values from "get_multi_edit_values()" \ + will be applied to this plugin. + @param array An array containing modified attributes returned by get_multi_edit_values(); + */ + public function set_multi_edit_values($values) + { + plugin::set_multi_edit_values($values); + if(isset($values['is_account'])){ + $this->is_account = $values['is_account']; + } + } + + + /*! \brief Initialize multiple edit ui for this plugin. \ + This function sets plugin defaults in multiple edit. + @param array Attributes used in all object + @param array All used attributes. + */ + public function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + if(isset($attrs['objectClass']) && in_array("kolabInetOrgPerson",$attrs['objectClass'])){ + $this->is_account = TRUE; + } + + /* Pull arrays */ + foreach(array("kolabDelegate", "kolabInvitationPolicy") as $attr){ + if (isset($this->multi_attrs["$attr"]["count"])){ + $tmp = array(); + for ($i= 0; $i<$this->multi_attrs["$attr"]["count"]; $i++){ + $tmp[]=$this->multi_attrs["$attr"][$i]; + } + $this->$attr = $tmp; + } + } + + /* If this one is empty, preset with ACT_MANUAL for anonymous users */ + if (count ($this->kolabInvitationPolicy) == 0){ + $this->kolabInvitationPolicy= array("ACT_MANUAL"); + } + } + + /* Adapt from template, using 'dn' */ + function adapt_from_template($dn, $skip= array()) + { + plugin::adapt_from_template($dn, $skip); + + /* Setting uid to default */ + if(isset($this->attrs['uid'][0]) && !in_array("uid", $skip)){ + $this->uid = $this->attrs['uid'][0]; + } + + /* Pull arrays */ + foreach(array("kolabDelegate", "kolabInvitationPolicy") as $attr){ + + if (in_array($attr, $skip)){ + continue; + } + + if (isset($this->attrs["$attr"]["count"])){ + $tmp = array(); + for ($i= 0; $i<$this->attrs["$attr"]["count"]; $i++){ + $tmp[]=$this->attrs["$attr"][$i]; + } + $this->$attr = $tmp; + } + } + + /* If this one is empty, preset with ACT_MANUAL for anonymous users */ + if (count ($this->kolabInvitationPolicy) == 0){ + $this->kolabInvitationPolicy= array("ACT_MANUAL"); + } + + /* Get Boolean value */ + $this->unrestrictedMailSize = FALSE; + if(isset($this->attrs['unrestrictedMailSize'][0]) && preg_match("/true/i",$this->attrs['unrestrictedMailSize'][0])){ + $this->unrestrictedMailSize = TRUE; + } + + /* Check is account state */ + $this->is_account = false; + if(count($this->kolabDelegate)){ + $this->is_account = true; + } + foreach(array("calFBURL") as $attr){ + if(!empty($this->$attr)){ + $this->is_account = true; + } + } + } + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + $this->is_account = FALSE; + + if(isset($source['kolabDelegate']) || isset($source['calFBURL'])){ + $this->is_account = TRUE; + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/kolab/personal/connectivity/kolab/kolab.tpl b/trunk/gosa-plugins/kolab/personal/connectivity/kolab/kolab.tpl new file mode 100644 index 000000000..81b3a32b6 --- /dev/null +++ b/trunk/gosa-plugins/kolab/personal/connectivity/kolab/kolab.tpl @@ -0,0 +1,134 @@ + +{if !$mail_account} +

{t}Kolab account{/t}

+ {t}The kolab account is currently disabled. It's features can be adjusted if you add a mail account.{/t} +{else} + +

+{if $multiple_support} + + + + +{else} + +{/if} + +{t}Kolab account{/t}

+ + + + + + +
+ +{if $multiple_support} + +
+ +
+ +   + + +{else} +
+ {render acl=$kolabDelegateACL} + + {/render} +
+ {render acl=$kolabDelegateACL} + + {/render} + {render acl=$kolabDelegateACL} +   + {/render} + {render acl=$kolabDelegateACL} + + {/render} +{/if} + +

{t}Mail size{/t}

+{render acl=$unrestrictedMailSizeACL checkbox=$multiple_support checked=$use_unrestrictedMailSize} +   + {t}No mail size restriction for this account{/t} +{/render} +
+   + + +

{t}Free Busy information{/t}

+ + + + + + + + + +
+{render acl=$calFBURLACL checkbox=$multiple_support checked=$use_calFBURL} + +{/render} +
+{render acl=$kolabFreeBusyFutureACL checkbox=$multiple_support checked=$use_kolabFreeBusyFuture} + + {t}days{/t} +{/render} +
+ + +

{t}Invitation policy{/t}

+{if $multiple_support} + +{/if} +{render acl=$kolabInvitationPolicyACL} + + {$invitation} +
+{/render} + + +
+ +{/if} diff --git a/trunk/gosa-plugins/kolab/personal/mail/kolab/class_mail-methods-kolab.inc b/trunk/gosa-plugins/kolab/personal/mail/kolab/class_mail-methods-kolab.inc new file mode 100644 index 000000000..adc7e4bb0 --- /dev/null +++ b/trunk/gosa-plugins/kolab/personal/mail/kolab/class_mail-methods-kolab.inc @@ -0,0 +1,287 @@ + "kolabDeleteflag", + "kolabFolderType" => "kolabFolderType", + "alias" => "gosaMailAlternateAddress", + "cyrus-userquota" => "gosaMailQuota", + "kolabHomeServer" => "gosaMailServer"); + + protected $user_prefix = 'user.'; + protected $share_prefix = 'shared\\.'; + + /* Account ID creation */ + protected $user_id = "%prefix%%uattrib%"; + protected $share_id = "%prefix%%cn%@%domain%"; + + protected $userObjectClasses = array("kolabInetOrgPerson"); + protected $shareObjectClasses = array("kolabSharedFolder"); + + /* Handle account removal like a master/slave kolab setup. + * The kolabDeleteflag will be added for each server. + */ + protected $masterSlave = TRUE; + + protected $acl_map = array( + "lrsw" => "read", + "lrswp" => "post", + "p" => "external post", + "lrswip" => "append", + "lrswipcd" => "write", + "lrswipcda"=> "admin", + "lrswipkxtecda"=> "full-admin", + " " => "none"); + public function fixAttributesOnLoad() + { + mailMethodCyrus::fixAttributesOnLoad(); + } + + public function fixAttributesOnStore() + { + mailMethod::fixAttributesOnStore(); + $this->build_account_id(); + $this->parent->attrs['kolabDeleteflag'] = array(); + + /* The folderType is set by ::setFolderType(...) */ + $this->parent->attrs['kolabFolderType'] = array(); + if($this->type == "group"){ + $this->parent->attrs['gosaSharedFolderTarget'] = "kolab+shared.".$this->parent->mail; + } + } + + public function fixAttributesOnRemove() + { + mailMethod::fixAttributesOnRemove(); + foreach($this->attributes as $source => $dest){ + $this->attrs[$dest] = array(); + $this->attrs[$source] = array(); + } + if($this->type == "user"){ + $ocs = $this->userObjectClasses; + }else{ + $ocs = $this->shareObjectClasses; + } + $this->parent->attrs['objectClass'] = array_merge( $this->parent->attrs['objectClass'],$ocs); + $this->parent->attrs['objectClass'] = array_unique($this->parent->attrs['objectClass']); + $this->parent->attrs['gosaSharedFolderTarget'] =array(); + + + /* If the mail setup includes Master and Slave Kolab Server, then we have to remove the + * mailAccount from server, by adding a kolabDeleteflag for each server. + * */ + if($this->masterSlave){ + $this->parent->attrs['kolabDeleteflag'] = array(); + foreach($this->getKolabHost() as $md){ + $this->parent->attrs['kolabDeleteflag'][] = $md; + } + }else{ + $this->parent->attrs['kolabDeleteflag'] = $this->parent->gosaMailServer; + } + if($this->folderTypesEnabled()){ + $this->parent->attrs['kolabFolderType'] =array(); + } + } + + + /* \brief Some method require special folder types, "kolab" for example. + !! Those values are dummy values, the base class doesn't use folder types; + @return Array Return folder types. + */ + public function getAvailableFolderTypes() + { + $ret = array(); + $ret['CAT'][''] = _("Unspecified"); + $ret['CAT']['mail']= _("Mails"); + $ret['CAT']['task']= _("Tasks"); + $ret['CAT']['journal']= _("Journals"); + $ret['CAT']['event']= _("Calendar"); + $ret['CAT']['contact']= _("Contacts"); + $ret['CAT']['note']= _("Notes"); + + $ret['SUB_CAT'][''][''] = _("Unspecified"); + $ret['SUB_CAT']['mail'][''] = _("Unspecified"); + $ret['SUB_CAT']['mail']['inbox'] = _("Inbox"); + $ret['SUB_CAT']['mail']['drafts'] = _("Drafts"); + $ret['SUB_CAT']['mail']['sentitems'] = _("Sent"); + $ret['SUB_CAT']['mail']['junkemail'] = _("SPAM"); + + $ret['SUB_CAT']['task']['default'] = _("Default"); + $ret['SUB_CAT']['journal']['default'] = _("Default"); + $ret['SUB_CAT']['event']['default'] = _("Default"); + $ret['SUB_CAT']['contact']['default'] = _("Default"); + $ret['SUB_CAT']['note']['default'] = _("Default"); + + return($ret); + } + + + /*! \brief Checks whether this account is removeable or not. + There may be some dependencies left, eg. kolab. + */ + public function accountRemoveable(&$reason = "") + { + if(isset($this->parent->attrs)){ + $checkArray = array("kolabInvitationPolicy","unrestrictedMailSize", "calFBURL","kolabDelegate","kolabFreeBusyFuture"); + foreach($checkArray as $index){ + if(isset($this->parent->attrs[$index])){ + $reason = _("Mail settings cannot be removed while there are delegations configured!"); + return(false); + } + } + } + return(true); + } + + + + /* \brief Returns the selected folder type. + !! Those values are dummy values, the base class doesn't use folder types; + @return Array The folde type. + */ + public function getFolderType($default) + { + if($this->enableFolderTypes && isset($this->parent->attrs['kolabFolderType'][0])){ + $type = $this->parent->attrs['kolabFolderType'][0]; + if(strpos($type,".")){ + list($cat,$sub) = split("\.",$this->parent->attrs['kolabFolderType'][0]); + }else{ + $sub = ""; + $cat = $type; + } + + return(array("CAT" => $cat, "SUB_CAT" => $sub)); + }else{ + return($default); + } + } + + + /* \brief Returns the selected folder type. + !! Those values are dummy values, the base class doesn't use folder types; + @return Array The folde type. + */ + public function setFolderType($type) + { + + $type_str = trim($type['CAT'].".".$type['SUB_CAT']); + $type_str = trim($type_str,"."); + $attrs = array(); + if(empty($type_str)){ + $attrs['kolabFolderType'] = array(); + }else{ + $attrs['kolabFolderType'] = $type_str; + } + + $ldap = $this->config->get_ldap_link(); + $ldap->cd ($this->parent->dn); + $ldap->modify($attrs); + if($ldap->success()){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Successful", + "MAIL: Set folderType to '".$type_str."'"); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Failed: ".$ldap->get_error(), + "MAIL: Set folderType to '".$type_str."'"); + } + } + + + public function setQuota($number) + { + mailMethod::setQuota($number); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Skipped, part of kolabd!", + "Set account quota on server '".$this->MailServer); + return(TRUE); + } + + public function setFolderACLs($permissions) + { + mailMethod::setFolderACLs($permissions); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Skipped, part of kolabd!", + "Setting folder ACLs!",""); + return(TRUE); + } + + public function updateMailbox() + { + mailMethod::updateMailbox(); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Skipped, part of kolabd!", + "Add/Update account on server :".$this->MailServer); + return(TRUE); + } + + public function deleteMailbox() + { + mailMethod::deleteMailbox(); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Skipped, part of kolabd!", + "Setting Quota"); + return(TRUE); + } + + + public function allow_remove(&$reason) + { + if(isset($this->parent->attrs)){ + if(in_array_ics("kolabDeleteflag",array_keys($this->parent->attrs))){ + $reason = _("Waiting for kolab to remove mail properties..."); + return(FALSE); + }elseif(in_array("gosaMailAccount",$this->parent->attrs['objectClass'])){ + $reason = _("Please remove the mail settings first!"); + return(FALSE); + } + } + return(TRUE); + } + + + + /*! \brief Returns all kolabHost entries from the k=kolab object. + @return See \brief + */ + public function getKolabHost() + { + $host = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=kolab)(k=kolab)(kolabHost=*))",array("kolabHost")); + + if($ldap->count() == 1){ + $attrs = $ldap->fetch(); + for($i=0; $i <$attrs['kolabHost']['count']; $i ++ ){ + $host[] = $attrs['kolabHost'][$i]; + } + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Found: ".trim(implode($host,", "),", ")."", + "Revceiving 'Mail hosts for kolab22'."); + }elseif($ldap->count() == 0){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "No mailHost entries found. Check k=kolab and mailHost", + "Revceiving 'Mail hosts for kolab22'."); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Found more than one kolab configuration object. Giving up.", + "Revceiving 'Mail hosts for kolab22'."); + } + + return($host); + } +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/kolab/personal/mail/kolab/class_mail-methods-kolab22.inc b/trunk/gosa-plugins/kolab/personal/mail/kolab/class_mail-methods-kolab22.inc new file mode 100644 index 000000000..3742b7adb --- /dev/null +++ b/trunk/gosa-plugins/kolab/personal/mail/kolab/class_mail-methods-kolab22.inc @@ -0,0 +1,105 @@ + "read", +// "lrsp" => "post", +// "lrsip" => "append", +// "lrswipkxte" => "write", +// "lrxte" => "delete", +// "lrswipkxtecda" => "admin", +// " " => "none"); +"none" => "none", +"post" => "post", +"read" => "read", +"read/post" => "read/post", +"append" => "append", +"write" => "write", +"read anon" => "read anon", +"read anon/post" => "read anon/post", +"read hidden" => "read hidden", +"read hidden/post" => "read hidden/post", +"all" => "all"); + + protected $default_acls = array("__anyone__" => "none", "__member__" => "write"); + + + /*! \brief Returns configured acls + */ + public function getFolderACLs($ldap_acls) + { + $this->reset_error(); + $imap_acls = mailMethodKolab::getFolderACLs(array()); + + foreach($imap_acls as $user => $acl){ + if(!isset($ldap_acls[$user])){ + $ldap_acls[$user] = $acl; + }else{ + // Ldap attributes come first in kolab22. + } + } + + /* Merge given ACL with acl mapping + This ensures that no ACL will accidentally overwritten by gosa. + */ + foreach($ldap_acls as $user => $acl){ + if(!isset($this->acl_mapping[$acl])){ + $this->acl_mapping[$acl] = $acl; + } + } + + return($ldap_acls); + } + + + /*! \brief Returns a list of configured mail domains + @return Array A list of mail domains + */ + public function getMailDomains() + { + $domains = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=kolab)(k=kolab)(postfix-mydestination=*))",array("postfix-mydestination")); + + if($ldap->count() == 1){ + $attrs = $ldap->fetch(); + for($i=0; $i <$attrs['postfix-mydestination']['count']; $i ++ ){ + $domains[] = $attrs['postfix-mydestination'][$i]; + } + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Found: ".trim(implode($domains,", "),", ")."", + "Revceiving 'Mail domains for kolab22'."); + }elseif($ldap->count() == 0){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "No domains found. Check k=kolab and postfix-mydestination", + "Revceiving 'Mail domains for kolab22'."); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Found more than one kolab configuration object. Giving up.", + "Revceiving 'Mail domains for kolab22'."); + } + + return($domains); + } +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/kolab/plugin.dsc b/trunk/gosa-plugins/kolab/plugin.dsc new file mode 100644 index 000000000..7e4775ec7 --- /dev/null +++ b/trunk/gosa-plugins/kolab/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = kolab +description = "Kolab2 management plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = mail diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_csvimport.inc b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_csvimport.inc new file mode 100644 index 000000000..a4d8738ce --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_csvimport.inc @@ -0,0 +1,507 @@ +config= &$config; + + $this->ui = get_userinfo(); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","all/".get_class($this),$this->dn); + } + + /* initiate smarty */ + $smarty= get_smarty(); + $smarty->assign("selectedattrs",array(0=>"")); + $smarty->assign("data",array(0=>"")); + $smarty->assign("head",array(0=>"")); + $smarty->assign("sorted",0); + $smarty->assign("fileup",0); + + /* Get the LDAP link, to generate the Export */ + $ldap = $this->config->get_ldap_link(); + + $arrtemplates = array(); + $tempvar =0; + + /* Array to fill in Formfields */ + $arrtemplates[$tempvar] = "None"; + if(!is_array($this->csvinfo)){ + $this->csvinfo=array(); + } + + /* Set Usertemplate information and get all Attribute from userclass */ + unset ($this->csvinfo['arrtemplates']); + unset ($this->csvinfo['arrtempls']); + + /* Generate Template Array, Attribute Array */ + if(!isset($this->csvinfo['arrtempls'])){ + + /* Generating attributes */ + $attrs = @get_class_vars("user"); + $this->csvinfo['attr'] = $attrs['attributes']; + + /* Attach the choise none to discard a csv col */ + $new = array(); + $new[0]="none"; + $new[1]="userPassword"; + for($c = 0; $c < count($this->csvinfo['attr']);$c++){ + $new[$c+2]=$this->csvinfo['attr'][$c]; + } + + $this->csvinfo['attr'] = $new; + + /* Search all Templates */ + $this->csvinfo['templates'] = $ldap->search("(objectClass=gosaUserTemplate)",array("*")); + + /* Array to handle selected Form fiels */ + $this->csvinfo['arrtempls'][$tempvar]['name'] = ""; + $this->csvinfo['arrtempls'][$tempvar]['dn'] = ""; + + $this->csvinfo['arrtemplates'][]="None"; + + while($temp = $ldap->fetch($this->csvinfo['templates'])){ + $tempvar ++; + $this->csvinfo['arrtemplates'][$tempvar] = $temp['sn'][0]." - ".$this->config->idepartments[preg_replace("/^[^,]+,".get_people_ou()."/i", "", $temp['dn'])]; + $this->csvinfo['arrtempls'] [$tempvar]['name'] = $temp['sn'][0]; + $this->csvinfo['arrtempls'] [$tempvar]['dn'] = $temp['dn']; + } + } + + $arr_temp = array_flip($this->csvinfo['attr']); + $this->csvinfo['arr_selected']= array($arr_temp['uid'],$arr_temp['sn'],$arr_temp['givenName'],$arr_temp['userPassword']); + + $smarty->assign("templates",$this->csvinfo['arrtemplates']); + $smarty->assign("attrs",$this->csvinfo['attr']); + + /* Check permissions for import */ + $acl = $this->ui->get_permissions($this->config->current['BASE'],"all/all"); + if(!preg_match("/w/",$acl)){ + if(isset($_POST['userfile']) || isset($_POST['sorted']) || isset($_POST['fileup'])){ + msg_dialog::display(_("Permission error"), _("You've no permission to import CSV files."), ERROR_DIALOG); + } + return ($smarty->fetch (get_template_path('contentcsv.tpl', TRUE))); + } + + /* If the given dat from the csv File are sorted by the attributes */ + if(isset($_POST['sorted'])) { + + /* Template Handling */ + $smarty->assign("fileup",TRUE); + $smarty->assign("sorted",TRUE); + + for($i = 0 ; $i < $this->csvinfo['rows'];$i++){ + /* Preparing given Data */ + $this->csvinfo['sorteddata'][$i]=array(); + + /* Go through every col */ + for($a = 0; $a <= ($this->csvinfo['cols']); $a ++) { + /* Append a status col at last, to show possibly errors */ + if($a==($this->csvinfo['cols'])){ + $this->csvinfo['sorteddata'][$i]["status"]="-"; + } else { + $cc = ($i * ($this->csvinfo['cols']))+$a; + + /* If theres a Attribut given for this col */ + if(!empty($_POST[('row'.($a))])) { + $this->csvinfo['sorteddata'][$i][$this->csvinfo['attr'][$_POST[('row'.($a))]]]=$this->csvinfo['data'][($cc)]; + } + } + } + } + + /* aleast one entry */ + $rowcnt=0; + if(isset($this->csvinfo['sorteddata'])){ + $rowcnt ++; + + /* Set the col count */ + $tblcolcount= count ($this->csvinfo['cols']); + + /* entrie count */ + $tbl_entries= count ($this->csvinfo['count']); + + /* row count */ + $tbl_rows = $tbl_entries / $tblcolcount; + + /* No error occurred */ + $failing = FALSE; + + /* For every row */ + for($i = 0; $i < $this->csvinfo['rows']; $i++){ + + /* Get elemenet */ + $dat = $this->csvinfo['sorteddata'][$i]; + + /* If not all needed vars set .... */ + if( ( empty($dat['sn']))||( empty($dat['givenName']))||( empty($dat['uid']))|| + (!isset($dat['sn']))||(!isset($dat['givenName']))||(!isset($dat['uid']))){ + + /* Output Error */ + msg_dialog::display(_("Error"), _("Need at least 'sn', 'givenName' and 'uid' to create users."), ERROR_DIALOG); + } else { + + /* Register usertab to trigger edit dialog */ + $this->usertab= new usertabs($this->config, $this->config->data['TABS']['USERTABS'], 'new'); + $keys = array_keys($dat); + + + /* Set all submitted vars */ + if(is_array($keys)) + foreach($keys as $key) { + if($key != "status"){ + $this->usertab->$key = $dat[$key]; + } + } + + /* Initialize template */ + if($this->csvinfo['tplid']!=0){ + $this->usertab->adapt_from_template($this->csvinfo['arrtempls'][$this->csvinfo['tplid']]['dn']); + $this->usertab->save_object(); + } else { + + /* Reset vars */ + if(is_array($keys)) + foreach($keys as $key) { + if($key != "status"){ + $this->usertab->by_object['user']->$key = $dat[$key]; + } + } + } + + // Setting user Password + if((isset($dat['userPassword']))&&(!empty($dat['userPassword']))) + $password = $dat['userPassword']; + else + { + $rand_str=""; + $feed = "0123456789abcdefghijklmnopqrstuvwxyz"; + for ($i=0; $i < 8; $i++) + { + $rand_str .= substr($feed, rand(0, strlen($feed)-1), 1); + } + $password = $rand_str; + } + + /* Insert in the LDAP tree */ + if(count($this->usertab->check())) { + msg_dialog::displayChecks($this->usertab->check()); + $this->csvinfo['sorteddata'][$i]['status']=""._("failed").""; + $failing = $i+1; + break; + } else { + $this->csvinfo['sorteddata'][$i]['status']=_("ok"); + $this->usertab->save(); + change_password($this->usertab->dn,$password); + } + } + } + + $pointsbefore = FALSE; + $pointsafter = FALSE; + + /* Get Attributs for Tableheadline */ + $this->csvinfo['colsstr'] = array(); + for($i =0; $i <= $this->csvinfo['cols']; $i++) { + if(!empty($_POST[('row'.$i)])){ + $this->csvinfo['colsstr'][$i] = $this->csvinfo['attr'][$_POST[('row'.$i)]]; + } + } + + /*Create array with data for the template */ + if($failing == FALSE){ + + $dataouts= array(); + for($i =1; $i <= $this->csvinfo['shownrowscount']; $i++) { + if(is_array($this->csvinfo['sorteddata'][($i-1)])){ + foreach($this->csvinfo['sorteddata'][($i-1)] as $dat){ + $dataouts[]=$dat; + } + } + } + + if($this->csvinfo['rows']> $this->csvinfo['shownrowscount']){ + $pointsafter = TRUE; + } + } else { + $pointsbefore = TRUE; + $pointsafter = TRUE; + + $begin = $failing -3; + + if($begin <0) { + $begin =0; + $pointsbefore = FALSE; + } + + $end = $failing + 2; + + if($end > $this->csvinfo['rows']) { + $end = $this->csvinfo['rows']+1; + $pointsafter = FALSE; + } + $this->csvinfo['shownrowscount']=$end - $begin; + + if($this->csvinfo['shownrowscount']> $this->csvinfo['rows'])$this->csvinfo['shownrowscount']=$this->csvinfo['rows']; + + $dataouts = array(); + for($i =$begin; $i <= $end; $i++) { + if(is_array($this->csvinfo['sorteddata'][($i-1)])){ + foreach($this->csvinfo['sorteddata'][($i-1)] as $dat){ + $dataouts[]=$dat; + } + } + } + } + $tmparr2 = $this->csvinfo['colsstr']; + $tmparr2[]=_("status"); + + /* Error? */ + if ($failing){ + msg_dialog::display(_("Error"), sprintf(_("Cannot insert entry '%s'!"), $failing), ERROR_DIALOG); + } + $smarty->assign("error",$failing); + + /* Set vars to smarty */ + $smarty->assign("cols",count($tmparr2)); + $smarty->assign("anz" ,$this->csvinfo['count']); + $smarty->assign("rows",$this->csvinfo['shownrowscount']); + + + $cnt = 0 ; + $tmp2 = $tmp3 = array(); + if(is_array($dataouts)) + foreach($dataouts as $tmp){ + $tmp2[] = $tmp; + $cnt ++ ; + if($cnt >= count($tmparr2)){ + $tmp3[] = $tmp2; + $tmp2= array(); + $cnt = 0; + } + } + $smarty->assign("head",$tmparr2); + $smarty->assign("data",$tmp3); + + /* Set other vars */ + $smarty->assign("i",1); + $smarty->assign("ie",0); + $smarty->assign("tplid",$this->csvinfo['tplid']); + + $smarty->assign("pointsafter",$pointsafter); + $smarty->assign("pointsbefore",$pointsbefore); + } else { + /* Set Template ID */ + $tplid = $_POST['tplid']; + + + $smarty->assign("tpl",$arrtemplates[$tplid]); + msg_dialog::display(_("Information"), _("Nothing to import!"), INFO_DIALOG); + } + + /* If theres a File uploaded */ + } else { + /* Check if theres a file uploaded */ + if(!empty($_FILES['userfile']['name'])){ + + $handle = NULL; + + if((!isset($_FILES['userfile']['name']))||(!isset($_POST['fileup']))) + { + msg_dialog::display(_("Error"), sprintf(_("Cannot read uploaded file: %s"), _("file not found")), ERROR_DIALOG); + $smarty->assign("LDIFError",TRUE); + } + elseif(!$_FILES['userfile']['size'] > 0 ) + { + msg_dialog::display(_("Error"), sprintf(_("Cannot read uploaded file: %s"), _("file is empty")), ERROR_DIALOG); + $smarty->assign("LDIFError",TRUE); + } + /* Is there a tmp file, which we can use ? */ + elseif(!file_exists($_FILES['userfile']['tmp_name'])) + { + msg_dialog::display(_("Error"), sprintf(_("Cannot read uploaded file: %s"), _("file not found")), ERROR_DIALOG); + $smarty->assign("LDIFError",TRUE); + } + elseif(!$handle = @fopen($_FILES['userfile']['tmp_name'],"r")) + { + msg_dialog::display(_("Error"), sprintf(_("Cannot read uploaded file: %s"), _("file not readable")), ERROR_DIALOG); + $smarty->assign("LDIFError",TRUE); + } + else + { + $smarty->assign("fileup",TRUE); + $str = ""; + + + /* Reading content */ + while(!feof($handle)) { + $str .= fread($handle,1024); + } + + $lines = split("\n",$str); + $anz = 0; + $rest = 0; + $data = array(); + + /* check colum count */ + if(is_array($lines)) + foreach($lines as $line) { + /* continue if theres a comment */ + if(substr(trim($line),0,1)=="#"){ + continue; + } + + $line= str_replace ("\t","",$line); + $cells = split(",",$line ) ; + + if(count($cells)> $anz ){ + $anz = count($cells); + } + } + + /* At least one entry */ + if($anz >1) { + + /* Generate array with outpu info */ + if(is_array($lines)) + foreach($lines as $line) { + $rest = 0; + $cnt = 0; + + /* dont use comments or empty lines */ + if((substr(trim($line),0,1)=="#")||(empty($line))){ + continue; + } + + /* replace \t to , */ + $line= str_replace ("\t" ,"" ,$line); + + /* get all elements */ + $cells = split(",",$line ) ; + + /* attach all elements to data array */ + if(is_array($cells)) + foreach($cells as $cell) { + if(!empty($cell)) { + $cnt++; + $data[]=trim($cell); + } + } + + /* cell count less than anz, attach some empty fields */ + if(($cnt != $anz)&&(!empty($cnt))) { + $rest = $anz - $cnt; + for($i = 0 ; $i < $rest ; $i ++){ + $data[] = " "; + } + } + } + + unset($this->csvinfo['sorteddata']); + unset($this->csvinfo['colsstr']); + unset($this->csvinfo['sorteddata']); + + $this->csvinfo['cols'] = $anz; + $this->csvinfo['data'] = array(); + $this->csvinfo['data'] = $data; + $this->csvinfo['count'] = count($this->csvinfo['data']); + + if($this->csvinfo['count']> (6* $this->csvinfo['cols'])) { + /* only show 6 rows in ouptuttablei */ + $datouttemp = array_chunk($this->csvinfo['data'],(6* $this->csvinfo['cols'])); + $this->csvinfo['dataout']=$datouttemp[0]; + $this->csvinfo['shownrowscount'] = 6; + } else { + $this->csvinfo['shownrowscount'] = (count($this->csvinfo['data']))/$this->csvinfo['cols']; + $this->csvinfo['dataout']= $this->csvinfo['data']; + } + + $this->csvinfo['tplid'] = $_POST['template']; + $this->csvinfo['templatestr'] = $this->csvinfo['arrtemplates' ][$this->csvinfo['tplid']]; + $this->csvinfo['count'] = count($this->csvinfo['data']); + $this->csvinfo['rows'] = (count($this->csvinfo['data'])/$anz); + + $i = 0; + $tmp = $tmp2= array(); + if(is_array($this->csvinfo['dataout'])) + foreach($this->csvinfo['dataout'] as $dat){ + $tmp[]= $dat; + $i++; + if($i >=$this->csvinfo['cols']){ + $i = 0; + $tmp2[] = $tmp; + $tmp = array(); + } + + } + + /* Set Templateid */ + $smarty->assign("tplid",$this->csvinfo['tplid']); + + /* Set Template */ + $smarty->assign("tpl",$this->csvinfo['templatestr']); + + /* Temp var 1 */ + $smarty->assign("ia",1); + + /* Temp var 2 */ + $smarty->assign("i",0); + + /* Num rows */ + $smarty->assign("rows",$this->csvinfo['shownrowscount']); + + + for($i = 0 ; $i < $anz; $i ++) + $this->csvinfo['arr_selected'][]="0"; + + $smarty->assign("selectedattrs",$this->csvinfo['arr_selected']); + + /* Entrie count5 */ + $smarty->assign("anz",$this->csvinfo['cols']); + + /* Array with data */ + $smarty->assign("data",$tmp2); + + @fclose($handle); + } else { + $smarty->assign("tpl",$this->csvinfo['attr'][$_POST['template']]); + $smarty->assign("LDIFError",TRUE); + $smarty->assign("fileup",FALSE); + msg_dialog::display(_("Error"), _("Cannot find CSV data in the selected file!"), ERROR_DIALOG); + } + } + } + } + + /* Show main page */ + return ($smarty->fetch (get_template_path('contentcsv.tpl', TRUE))); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_export.inc b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_export.inc new file mode 100644 index 000000000..8bed2866a --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_export.inc @@ -0,0 +1,125 @@ +config= &$config; + $this->ui = get_userinfo(); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","all/".get_class($this),$this->dn); + } + + /* Set government mode */ + $smarty= get_smarty(); + + $smarty->assign ("govmode", $this->config->get_cfg_value("honourIvbbAttributes")); + $smarty->assign("LDIFError",FALSE); + + $smarty->assign("type",FALSE); + $smarty->assign("depselectivbb",""); + + // fill in old vars in the Export form + if((isset($_POST['single']))&&(isset($_POST['sfrmgetsingle']))){ + $smarty->assign("single",$_POST['single']); + $smarty->assign("type","single"); + $dn = $_POST['single']; + } + if((isset($_POST['selfull']))&&(isset($_POST['sfrmgetfull']))){ + $smarty->assign("depselectfull",$_POST['selfull']); + $smarty->assign("type","full"); + $dn = $_POST['selfull']; + } else { + $smarty->assign("depselectfull", ""); + } + if((isset($_POST['selivbb']))&&(isset($_POST['sfrmgetivbb']))){ + $smarty->assign("depselectivbb",$_POST['selivbb']); + $smarty->assign("type","ivbb"); + $dn = $_POST['selivbb']; + } else { + $smarty->assign("depselectivbb", ""); + } + + // Set values for optionlist in form + $bases = array(); + $acl_bases = $this->ui->get_module_departments("all"); + foreach($this->config->idepartments as $base_dn => $name){ + if(in_array_ics($base_dn,$acl_bases)){ + $bases[$base_dn] = $name; + } + } + $smarty->assign("deplist", $bases); + + // Get the LDAP link, to generate the Export + $ldap = $this->config->get_ldap_link(); + + if ($this->config->get_cfg_value('honourIvbbAttributes') == 'true'){ + $smarty->assign ("govmode", $this->config->get_cfg_value("honourIvbbAttributes")); + $smarty->assign("LDIFError",FALSE); + } + + if(isset($dn)) + { + if(!($ldap->dn_exists($dn) && $dn != "")){ + $smarty->assign("LDIFError",TRUE); + msg_dialog::display(_("Error"), _("Cannot export selected entries!"), ERROR_DIALOG); + } + } + + /* check alcs for given dn */ + $acls =""; + if(isset($dn)){ + $acls = $this->ui->get_permissions($dn,"all/all"); + } + if((!preg_match("/r/",$acls)) && (isset($dn))){ + + /* Show error msg */ + msg_dialog::display(_("Permission error"), sprintf(_("You have no permission to export '%s'!"),LDAP::fix($dn)), ERROR_DIALOG); + + /* Show main page */ + $smarty->assign("LDIFError",TRUE); + $smarty->assign("para",""); + }else{ + + // Export a single LDAP entry + if(isset($_POST['sfrmgetsingle'])) + { + $smarty->assign("para","?ivbb=2&dn=".base64_encode($_POST['single'])); + } + elseif(isset($_POST['sfrmgetfull'])) + { + $smarty->assign("para","?ivbb=3&dn=".base64_encode($_POST['selfull'])); + } + elseif(isset($_POST['sfrmgetivbb'])) + { + $smarty->assign("para","?ivbb=4&dn=".base64_encode($_POST['selivbb'])); + } + } + + /* Show main page */ + return ($smarty->fetch (get_template_path('contentexport.tpl', TRUE))); + } +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_exportxls.inc b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_exportxls.inc new file mode 100644 index 000000000..8af43592e --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_exportxls.inc @@ -0,0 +1,136 @@ +config= &$config; + + $this->ui = get_userinfo(); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","all/".get_class($this),$this->dn); + } + + $dn = $this->config->current['BASE']; + + /* Set government mode */ + $smarty= get_smarty(); + $smarty->assign("type",FALSE); + $smarty->assign("depselectivbb",""); + + if(!isset($_POST['selfull'])) $_POST['selfull'] = "Somehow not posted"; + + /* Check permissions for export */ + // fill in old vars in the Export form + if((isset($_POST['single']))&&(isset($_POST['sfrmgetsingle']))){ + $smarty->assign("single",$_POST['single']); + $smarty->assign("type","single"); + $a=$_POST['single']; + $b=$_POST['selfull']; + + } + if((isset($_POST['selfull']))&&(isset($_POST['sfrmgetfull']))){ + $smarty->assign("depselectfull",$_POST['selfull']); + $smarty->assign("type","full"); + $dn = $_POST['selfull']; + } else { + $smarty->assign("depselectfull", ""); + } + if((isset($_POST['selivbb']))&&(isset($_POST['sfrmgetivbb']))){ + $smarty->assign("depselectivbb",$_POST['selivbb']); + $smarty->assign("type","ivbb"); + $dn = $_POST['selivbb']; + } else { + $smarty->assign("depselectivbb", ""); + } + + // Set values for optionlist in form + $bases = array(); + $acl_bases = $this->ui->get_module_departments("all"); + foreach($this->config->idepartments as $base_dn => $name){ + if(in_array_ics($base_dn,$acl_bases)){ + $bases[$base_dn] = $name; + } + } + $smarty->assign("deplist", $bases); + $smarty->assign("choicelist",array( get_people_ou() =>"users" , + get_groups_ou() =>"groups" , + get_ou('systemRDN') =>"computers", + get_ou('serverRDN') =>"servers", + "dc=addressbook," =>"addressbook")); + + // Get the LDAP link, to generate the Export + $ldap = $this->config->get_ldap_link(); + + $smarty->assign ("govmode", $this->config->get_cfg_value("honourIvbbAttributes")); + $smarty->assign("LDIFError",FALSE); + + if(isset($dn)) + { + if(!($ldap->dn_exists($dn) && $dn != "")){ + $smarty->assign("LDIFError",TRUE); + msg_dialog::display(_("Error"), _("Cannot export selected entries!"), ERROR_DIALOG); + } + } + + /* check alcs for given dn */ + $acls =""; + if(isset($dn)){ + $acls = $this->ui->get_permissions($dn,"all/all"); + } + + if(!preg_match("/r/",$acls) && (isset($_POST['sfrmgetsingle']) || isset($_POST['sfrmgetfull']) || isset($_POST['sfrmgetivbb']))){ + + /* Show error msg */ + msg_dialog::display(_("Permission error"), sprintf(_("You have no permission to export '%s'!"),LDAP::fix($dn)), ERROR_DIALOG); + + /* Show main page */ + $smarty->assign("LDIFError",TRUE); + $smarty->assign("para",""); + }else{ + + // Export a single LDAP entry + if(isset($_POST['sfrmgetsingle'])) + { + $smarty->assign("para","?ivbb=2&d=".base64_encode($_POST['single'])."&n=".base64_encode($_POST['selfull'])); + } + elseif(isset($_POST['sfrmgetfull'])) + { + $smarty->assign("para","?ivbb=3&dn=".base64_encode($_POST['selfull'])); + } + elseif(isset($_POST['sfrmgetivbb'])) + { + $smarty->assign("para","?ivbb=4&dn=".base64_encode($_POST['selivbb'])); + } + } + + /* Show main page */ + return ($smarty->fetch (get_template_path('contentexportxls.tpl', TRUE))); + } + +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_import.inc b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_import.inc new file mode 100644 index 000000000..ac2a81085 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_import.inc @@ -0,0 +1,130 @@ +config= &$config; + + $this->ui = get_userinfo(); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","all/".get_class($this),$this->dn); + } + + /* Set government mode */ + $smarty= get_smarty(); + + // Get the LDAP link, to generate the Export + $ldap = $this->config->get_ldap_link(); + + $smarty->assign("LDIFError",FALSE); + $smarty->assign("type",FALSE); + + /* Get acls */ + $acl = $this->ui->get_permissions($this->config->current['BASE'],"all/all"); + + /* Import requested check file and acls */ + if((isset($_FILES['userfile']['name']))&&(isset($_POST['fileup']))){ + + /* Check acls */ + if(!preg_match("/w/",$acl)){ + msg_dialog::display(_("Permission error"), _("You need full write access to the LDAP tree to import data!"), ERROR_DIALOG); + }else{ + + $smarty->assign("type","importfile"); + $handle = NULL; + + // Check if there is a file submitted + if(!$_FILES['userfile']['size'] > 0 ) + { + msg_dialog::display(_("Error"), sprintf(_("Cannot read uploaded file: %s"), _("file is empty")), ERROR_DIALOG); + $smarty->assign("LDIFError",TRUE); + } + + // Is there a tmp file, which we can use ? + elseif(!file_exists($_FILES['userfile']['tmp_name'])) + { + msg_dialog::display(_("Error"), sprintf(_("Cannot read uploaded file: %s"), _("file not found")), ERROR_DIALOG); + $smarty->assign("LDIFError",TRUE); + + } + + // Can we open the tmp file, for reading + elseif(!$handle = @fopen($_FILES['userfile']['tmp_name'],"r")) + { + msg_dialog::display(_("Error"), sprintf(_("Cannot read uploaded file: %s"), _("file not readable")), ERROR_DIALOG); + $smarty->assign("LDIFError",TRUE); + } + else + { + // Everything just fine :) + $str = ""; + + // Reading content + while(!feof($handle)) + { + $str .= fread($handle,1024); + } + @fclose($handle); + + // Should we use Overwrite ? + if(!empty($_POST['overwrite'])) $overwrite = true; else $overwrite = false;; + if(!empty($_POST['cleanup'])) $cleanup = true; else $cleanup = false; + + $ErrorStr=""; + $check = $ldap->import_complete_ldif($str,$ErrorStr,$overwrite,$cleanup); + + if($check == INSERT_OK ){ + $smarty->assign("LDIFError",FALSE); + } else { + $smarty->assign("LDIFError",TRUE); + } + + switch($check) + { + case INSERT_OK: + break; + + case ALREADY_EXISTING_ENTRY: + msg_dialog::display(_("LDAP error"), $ErrorStr, ERROR_DIALOG); + break; + + case UNKNOWN_TOKEN_IN_LDIF_FILE: + msg_dialog::display(_("LDAP error"), $ErrorStr, ERROR_DIALOG); + break; + + default: + msg_dialog::display(_("Internal error"), sprintf(_("Undefined flag '%s'!"), $check), ERROR_DIALOG); + break; + } + } + } + } + return ($smarty->fetch (get_template_path('contentimport.tpl', TRUE))); + } +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_ldif.inc b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_ldif.inc new file mode 100644 index 000000000..bd255e625 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/class_ldif.inc @@ -0,0 +1,53 @@ +ldif= new ldiftab($config, $config->data['TABS']['LDIFTAB'], ""); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Show main page */ + return ($this->ldif->execute()); + } + + /* Return plugin informations for acl handling + #FIXME You can only read attributes within this report plugin */ + static function plInfo() + { + return (array( + "plShortName" => _("Ldap manager"), + "plDescription" => _("Ldap manager")." ("._("import")."/"._("export").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 1, + "plSection" => array("addon"), + "plCategory" => array("ldapmanager" => array("objectClass" => "none", "description" => _("Ldap manager"))), + + "plProvidedAcls" => array() + )); + } + + + +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentcsv.tpl b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentcsv.tpl new file mode 100644 index 000000000..f3b318b8a --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentcsv.tpl @@ -0,0 +1,118 @@ +

+ {t}The CSV import plugin provides methods to generate user accounts from a file containing Comma Seperated Values. The administrator can decide which columns should be transfered to which attribute. Note that you must have at least the UID, GIVENNAME and SURENAME set.{/t} +

+

 

+ +{if $fileup != TRUE} + + + + + + + + + + +
+ + + + +
+ + + +
+{elseif $sorted != FALSE} + + +
+ {if $error == FALSE} + {t}All entries have been written to the LDAP database successfully.{/t} + {else} + {t}Oups. There was an error during the import of your data.{/t} + {/if} + +{t}Here is the status report for the import:{/t} +
+
+ + + + + {foreach from=$head item=h} + + {/foreach} + + {if $pointsbefore == TRUE} + + + + {/if} + + {foreach from=$data item=row key=key} + + {foreach from=$data[$key] item=col key=key2} + + {/foreach} + + {/foreach} + {if $pointsafter == TRUE} + + + + {/if} + +
+ {$h} +
+ ... +
+ {$data[$key][$key2]} +
+ ... +
+ +{else} +
{t}Selected Template{/t}: {$tpl} +
+
+ + + {foreach from=$data[0] item=item key=key} + + {/foreach} + + {foreach from=$data item=val key=key} + + {foreach from=$data[$key] item=val2 key=key2} + + {/foreach} + + {/foreach} + +
+ +
+ {$data[$key][$key2]}  +
+ + +{/if} +

+{if $fileup != TRUE} + +{else} +{if $sorted == FALSE} + +{else} + +{/if} +{/if} +

+ diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentexport.tpl b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentexport.tpl new file mode 100644 index 000000000..641abcabe --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentexport.tpl @@ -0,0 +1,73 @@ +{if $LDIFError != FALSE || $type == FALSE} +

+ {t}The LDIF export plugin provides methods to download a complete snapshot of the running LDAP directory as ldif. You may save these files for backup purpose or when initializing a new server.{/t} +

+

 

+ + + + + + + + + + + + + +{if $govmode eq "true"} + + + + + +{/if} +
+ + + + + +
+ + + + + +
+ + + + + +
+ + +{else} + + +
+

{t}Export successful{/t}

+
+ +
+ +
+{/if} +

+   +

+ + diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentexportxls.tpl b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentexportxls.tpl new file mode 100644 index 000000000..fd16a4ce1 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentexportxls.tpl @@ -0,0 +1,76 @@ +{if $LDIFError != FALSE || $type == FALSE} +

+ {t}The XLS export plugin provides methods to download a complete snapshot of the running LDAP directory as xls. You may save these files for documentation.{/t} +

+

 

+ + + + + + + + + + + + + +{if $govmode eq "true"} + + + + + +{/if} +
+ + + {**} + + + +
+ + + + + +
+ + + + + +
+ + +{else} + + +
+

{t}Export successful{/t}

+
+ +
+ +
+{/if} +

+   +

+ + diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentimport.tpl b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentimport.tpl new file mode 100644 index 000000000..5f730c754 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/contentimport.tpl @@ -0,0 +1,52 @@ +{if $type == FALSE || $LDIFError != FALSE} +

+ {t}The LDIF import plugin provides methods to upload a set of entries to your running LDAP directory as ldif. You may use this to add new or modify existing entries. Remember that GOsa will not check your ldifs for GOsa conformance.{/t} +

+ +

 

+ + + + + + + + + + + + + +
+ + + + + +
+   + + + {t}Modify existing objects, keep untouched attributes{/t}
+ {t}Overwrite existing objects, all not listed attributes will be removed{/t} +
+   + + + +
+{else} + +
+

{t}Import successful{/t}

+
+ +
+ +
+ +{/if} +

+ +

+ diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/main.inc b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/main.inc new file mode 100644 index 000000000..0edc38068 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/main.inc @@ -0,0 +1,54 @@ +set_acl_category("logview"); + session::set('ldif',$ldif); + } + $ldif = session::get('ldif'); + + /* Execute formular */ + $display= $ldif->execute (); + $display.= "\n"; + + /* Page header*/ + $display= print_header(get_template_path('plugins/ldapmanager/images/ldif.png'), _("LDAP manager")).$display; + + /* Store changes in session */ + session::set('ldif',$ldif); +} +?> diff --git a/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/tabs_ldif.inc b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/tabs_ldif.inc new file mode 100644 index 000000000..2f6b70f0d --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/addons/ldapmanager/tabs_ldif.inc @@ -0,0 +1,24 @@ + diff --git a/trunk/gosa-plugins/ldapmanager/help/guide.xml b/trunk/gosa-plugins/ldapmanager/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/ldapmanager/html/getldif.php b/trunk/gosa-plugins/ldapmanager/html/getldif.php new file mode 100644 index 000000000..96111afa9 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/html/getldif.php @@ -0,0 +1,110 @@ +get_ldap_link(); + + $display = ""; + + if($mode == 2){ // Single Entry Export ! + $dn = base64_decode($_GET['dn']); + $display = $ldap->gen_one_entry($dn); + echo $display; + } + elseif($mode == 3){ // Full LDIF Export ! + $dn = base64_decode($_GET['dn']); + $display = $ldap->gen_ldif($dn); + echo $display; + } + elseif($mode == 4){ // IVBB LDIF Export + $dn = base64_decode($_GET['dn']); + $display= $ldap->gen_ldif($dn,"(objectClass=ivbbentry)",array( + "GouvernmentOrganizationalUnit","houseIdentifier","vocation", + "ivbbLastDeliveryCollective","gouvernmentOrganizationalPersonLocality", + "gouvernmentOrganizationalUnitDescription","gouvernmentOrganizationalUnitSubjectArea", + "functionalTitle","role","certificateSerialNumber","userCertificate","publicVisible", + "telephoneNumber","seeAlso","description","title","x121Address","registeredAddress", + "destinationIndicator","preferredDeliveryMethod","telexNumber","teletexTerminalIdentifier", + "telephoneNumber","internationaliSDNNumber","facsimileTelephoneNumber","street", + "postOfficeBox","postalCode","postalAddress","physicalDeliveryOfficeName","ou", + "st","l","audio","businessCategory","carLicense","departmentNumber","displayName", + "employeeNumber","employeeType","givenName","homePhone","homePostalAddress", + "initials","jpegPhoto","labeledURI","mail","manager","mobile","o","pager","photo", + "roomNumber","secretary","userCertificate","x500uniqueIdentifier","preferredLanguage", + "userSMIMECertificate","userPKCS12")); + + echo $display; + } +} + + +/* Basic setup, remove eventually registered sessions */ +@require_once ("../include/php_setup.inc"); +@require_once ("functions.inc"); +error_reporting (E_ALL | E_STRICT); +session::start(); +session::set('errorsAlreadyPosted',array()); + +/* Logged in? Simple security check */ +if (!session::is_set('ui')){ + new log("security","all/all","",array(),"Error: getldif.php called without session") ; + header ("Location: index.php"); + exit; +} +$ui= session::get("ui"); +$config= session::get('config'); + +/* Check ACL's */ +$dn = base64_decode($_GET['dn']); +$acl = $ui->get_permissions($dn,"ldapmanager/ldifexport"); +if(!preg_match("/r/",$acl)){ + msg_dialog::display(_("Permission error"),_("You have no permission to create LDAP dumps!"),FATAL_ERROR_DIALOG); + exit(); +} + + +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: no-cache"); +header("Pragma: no-cache"); +header("Cache-Control: post-check=0, pre-check=0"); + +header("Content-type: text/plain"); + + +switch ($_GET['ivbb']){ + case 2: dump_ldap (2); + break; + + case 3: dump_ldap (3); + break; + + case 4: dump_ldap (4); + break; + + default: + echo _("Error in ivbb parameter!"); +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/ldapmanager/html/getxls.php b/trunk/gosa-plugins/ldapmanager/html/getxls.php new file mode 100644 index 000000000..8455d77c0 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/html/getxls.php @@ -0,0 +1,519 @@ +get_ldap_link(); + $display = ""; + + + if($mode == 2){ // Single Entry Export ! + + /* Get required attributes */ + $d = base64_decode($_GET['d']); + $n = base64_decode($_GET['n']); + + /* Create dn to search entries in */ + $dn=$d.$n; + + /* Create some strings */ + $date=date('dS \of F Y '); + $fname = tempnam("/tmp", "demo.xls"); + + /* Create xls workbench */ + $workbook= new writeexcel_workbook($fname); + + /* Create some styles to generate xls */ + $title_title= $workbook->addformat(array( + bold => 1, + color => 'green', + size => 11, + underline => 2, + font => 'Helvetica' + )); + + $title_bold= $workbook->addformat(array( + bold => 1, + color => 'black', + size => 10, + font => 'Helvetica' + )); + + # Create a format for the phone numbers + $f_phone = $workbook->addformat(); + $f_phone->set_align('left'); + $f_phone->set_num_format('\0#'); + + + /* If the switch reaches default (it should not), + this will be set to false, so nothig will be created ... */ + $save = true; + + /* Check which type of data was requested */ + switch ($d){ + + + /* PEOPLE + Get all peoples from this $dn + and put them into the xls work sheet */ + case get_people_ou() : + + $user = $ldap->gen_xls($dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); + $intitul = array(_("Birthday").":", _("Sex").":", _("Surname")."/"._("Given name").":",_("Language").":"); + + // name of the xls file + $name_section = _("Users"); + $worksheet = $workbook->addworksheet(_("Users")); + $worksheet->set_column('A:B', 51); + + $user_nbr = count($user); + $worksheet->write('A1',sprintf(_("User list of %s on %s"),$n,$date),$title_title); + $r=3; + for($i=1;$i<$user_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,_("User ID").": ".$user[$i][0],$title_bold); + + for($j=1;$j<5;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j-1]); + $user[$i][$j]=utf8_decode ($user[$i][$j]); + $worksheet->write('B'.$r,$user[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + break; + + + /* GROUPS + Get all groups from th $dn + and put them into the xls work sheet */ + case get_groups_ou(): + + /* Get group data */ + $groups = $ldap->gen_xls($dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1); + $intitul = array(_("Members").":"); + + //name of the xls file + $name_section=_("Groups"); + + $worksheet = $workbook->addworksheet(_("Groups")); + $worksheet->set_column('A:B', 51); + + //count number of groups + $groups_nbr=count($groups); + $worksheet->write('A1', sprintf(_("Groups of %s on %s"), $n, $date),$title_title); + $r=3; + for($i=1;$i<$groups_nbr;$i++) + { + $worksheet->write('A'.$r++,_("User ID").": ".$groups[$i][0][0],$title_bold); + for($j=1;$j<=2;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j-1]); + for($k=0;$k<= $groups[$i][$j]['count'];$k++) + { + $worksheet->write('B'.$r,$groups[$i][$j][$k]); + $r++; + } + } + } + break; + + + /* SYSTEMS + Get all systems from th $dn + and put them into the xls work sheet */ + case get_ou('systemRDN'): + + $name_section=_("Servers"); + $computers= $ldap->gen_xls($dn,"(&(objectClass=*)(cn=*))",array("cn","description","uid")); + + $intitul=array(_("Description").":",_("User ID").":"); + $worksheet = $workbook->addworksheet(_("Computers")); + $worksheet->set_column('A:B', 32); + + //count number of computers + $computers_nbr=count($computers); + $r=1; + for($i=1;$i<$computers_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,_("Common name").": ".$computers[$i][0],$title_bold); + for($j=1;$j<3;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j-1]); + $computers[$i][$j]=utf8_decode ($computers[$i][$j]); + $worksheet->write('B'.$r,$computers[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + break; + + /* SYSTEMS + Get all systems from th $dn + and put them into the xls work sheet */ + case get_ou('serverRDN'): $servers= $ldap->gen_xls($dn,"(objectClass=*)",array("cn")); + $intitul=array(_("Server name").":"); + + //name of the xls file + $name_section=_("Servers"); + + $worksheet = $workbook->addworksheet(_("Servers")); + $worksheet->set_column('A:B', 51); + + //count number of servers + $servers_nbr=count($servers); + $worksheet->write('A1',sprintf(_("Servers of %s on %s"), $n, $date),$title_title); + $r=3; + $worksheet->write('A'.$r++,_("Servers").": ",$title_bold); + for($i=1;$i<$servers_nbr;$i++) + { + for($j=0;$j<1;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j]); + $servers[$i][$j]=utf8_decode ($servers[$i][$j]); + $worksheet->write('B'.$r,$servers[$i][$j]); + } + } + break; + + case "dc=addressbook,": //data about addressbook + + /* ADDRESSBOOK + Get all addressbook entries from $dn + and put them into the xls work sheet */ + + $address= $ldap->gen_xls($dn,"(objectClass=*)", + array("cn","displayName","facsimileTelephoneNumber","givenName", + "homePhone","homePostalAddress","initials","l","mail","mobile", + "o","ou","pager","telephoneNumber","postalAddress", + "postalCode","sn","st","title")); + + $intitul= array(_("Common name").":",_("Display name").":",_("Fax").":", + _("Name")."/"._("Given name").":",_("Home phone").":", + _("Home postal address").":",_("Initials").":",_("Location").":", + _("Mail address").":",_("Mobile phone").":",_("City").":", + _("Postal address").":",_("Pager").":",_("Phone number").":", + _("Address").":",_("Postal code").":",_("Surname").":", + _("State").":",_("Function").":"); + + //name of the xls file + $name_section=_("Adressbook"); + + $worksheet = $workbook->addworksheet(_("Servers")); + $worksheet->set_column('A:B', 51); + + //count number of entries + $address_nbr=count($address); + $worksheet->write('A1',sprintf(_("Adressbook of %s on %s"),$n, $date),$title_title); + $r=3; + for($i=1;$i<$address_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,_("Common Name").": ".$address[$i][0],$title_bold); + for($j=1;$j<19;$j++) + { + $r++; + $worksheet->write('A'.$r,$intitul[$j]); + $address[$i][$j]=utf8_decode ($address[$i][$j]); + $worksheet->write('B'.$r,$address[$i][$j],$f_phone); + } + $worksheet->write('A'.$r++,""); + } + + break; + default: + + $save = false; + echo "Specified parameter '".$d."' was not found in switch-case."; + } + + if($save){ + $workbook->close(); + } + + // We'll be outputting a xls + header('Content-type: application/x-msexcel'); + + // It will be called demo.xls + header('Content-Disposition: attachment; filename=xls_export_'.$name_section.".xls"); + + // The source is in original.xls + readfile($fname); + unlink ($fname); + } + elseif($mode == 3){ // Full Export ! + $dn = base64_decode($_GET['dn']); + + //data about users + $user= $ldap->gen_xls( get_people_ou().$dn,"(objectClass=*)",array("uid","dateOfBirth","gender","givenName","preferredLanguage")); + $user_intitul=array(_("Day of birth").":",_("Sex").":",_("Surname")."/"._("Given name").":",_("Language").":"); + //data about groups + $groups= $ldap->gen_xls(get_groups_ou().$dn,"(objectClass=*)",array("cn","memberUid"),TRUE,1); + $groups_intitul=array(_("Members").":"); + //data about computers + $computers= $ldap->gen_xls("ou=computers,".$dn,"(objectClass=*)",array("cn","description","uid")); + $computers_intitul=array(_("Description").":",_("UID").":"); + //data about servers + $servers= $ldap->gen_xls(get_ou('serverRDN').$dn,"(objectClass=*)",array("cn")); + $servers_intitul=array(_("Name").":"); + //data about addressbook + $address= $ldap->gen_xls("dc=addressbook,".$dn,"(objectClass=*)", + array("cn","displayName","facsimileTelephoneNumber","givenName","homePhone","homePostalAddress", + "initials","l","mail","mobile","o","ou","pager","telephoneNumber","postalAddress", + "postalCode","sn","st","title")); + $address_intitul= + array("cn",_("Display name").":",_("Fax").":",_("Surname")."/"._("Given name").":", + _("Phone number").":",_("Postal address").":",_("Initials").":",_("City").":", + _("Email address").":",_("Mobile").":",_("Organization").":",_("Organizational unit").":", + _("Pager").":",_("Phone number").":",_("Postal address").":",_("Postal Code").":", + _("Surname").":",_("State").":",_("Title").":"); + + //name of the xls file + $name_section=_("Full"); + $date=date('dS \of F Y '); + $fname = tempnam("/tmp", "demo.xls"); + $workbook = new writeexcel_workbook($fname); + $worksheet = $workbook->addworksheet(_("Users")); + $worksheet2 = $workbook->addworksheet(_("Groups")); + $worksheet3 = $workbook->addworksheet(_("Servers")); + $worksheet4 =$workbook->addworksheet(_("Computers")); + $worksheet5 = $workbook->addworksheet(_("Adressbook")); + + $worksheet->set_column('A:B', 51); + $worksheet2->set_column('A:B', 51); + $worksheet3->set_column('A:B', 51); + $worksheet4->set_column('A:B', 51); + $worksheet5->set_column('A:B', 51); + + $title_title= $workbook->addformat(array( + bold => 1, + color => 'green', + size => 11, + font => 'Helvetica' + )); + + $title_bold = $workbook->addformat(array( + bold => 1, + color => 'black', + size => 10, + font => 'Helvetica' + )); + +# Create a format for the phone numbers + $f_phone = $workbook->addformat(); + $f_phone->set_align('left'); + $f_phone->set_num_format('\0#'); + + //count number of users + $user_nbr=count($user); + $worksheet->write('A1',sprintf(_("User list of %s on %s"), $dn, $date),$title_title); + $r=3; + for($i=1;$i<$user_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet->write('A'.$r++,_("User ID").": ".$user[$i][0],$title_bold); + for($j=1;$j<5;$j++) + { + $r++; + $worksheet->write('A'.$r,$user_intitul[$j-1]); + $user[$i][$j]=utf8_decode ($user[$i][$j]); + $worksheet->write('B'.$r,$user[$i][$j]); + } + $worksheet->write('A'.$r++,""); + } + + //count number of groups + $groups_nbr=count($groups); + $worksheet2->write('A1',sprintf(_("Groups of %s on %s"), $dn, $date),$title_title); + $r=3; + for($i=1;$i<$groups_nbr;$i++) + { + $worksheet2->write('A'.$r++,_("User ID").": ".$groups[$i][0][0],$title_bold); + for($j=1;$j<=2;$j++) + { + $r++; + $worksheet2->write('A'.$r,$group_intitul[$j-1]); + for($k=0;$k<= $groups[$i][$j]['count'];$k++) + { + $worksheet2->write('B'.$r,$groups[$i][$j][$k]); + $r++; + } + } + } + + //count number of servers + $servers_nbr=count($servers); + $worksheet3->write('A1',sprintf(_("Servers of %s on %s"),$dn,$date),$title_title); + $r=3; + $worksheet3->write('A'.$r++,_("Servers").": ",$title_bold); + for($i=1;$i<$servers_nbr;$i++) + { + for($j=0;$j<1;$j++) + { + $r++; + $worksheet3->write('A'.$r,$servers_intitul[$j]); + $servers[$i][$j]=utf8_decode ($servers[$i][$j]); + $worksheet3->write('B'.$r,$servers[$i][$j]); + } + } + + //count number of computers + $computers_nbr=count($computers); + $worksheet4->write('A1',sprintf(_("Computers of %s on %s"),$dn,$date),$title_title); + $r=3; + for($i=1;$i<$computers_nbr;$i++) + { + if($i>1) + $worksheet->write('A'.$r++,""); + $worksheet4->write('A'.$r++,_("Common name").": ".$computers[$i][0],$title_bold); + for($j=1;$j<3;$j++) + { + $r++; + $worksheet4->write('A'.$r,$computers_intitul[$j-1]); + $computers[$i][$j]=utf8_decode ($computers[$i][$j]); + $worksheet4->write('B'.$r,$computers[$i][$j]); + } + $worksheet4->write('A'.$r++,""); + } + + //count number of entries + $address_nbr=count($address); + $worksheet5->write('A1',sprintf(_("Adressbook of %s on %s"),$dn, $date),$title_title); + + $r=3; + for($i=1;$i<$address_nbr;$i++) + { + if($i>1) + $worksheet5->write('A'.$r++,""); + $worksheet5->write('A'.$r++,_("Common name").": ".$address[$i][0],$title_bold); + for($j=1;$j<19;$j++) + { + $r++; + $worksheet5->write('A'.$r,$address_intitul[$j]); + $address[$i][$j]=utf8_decode ($address[$i][$j]); + $worksheet5->write('B'.$r,$address[$i][$j],$f_phone); + } + $worksheet5->write('A'.$r++,""); + } + $workbook->close(); + + + // We'll be outputting a xls + header('Content-type: application/x-msexcel'); + + // It will be called demo.xls + header('Content-Disposition: attachment; filename='.$name_section.".xls"); + + readfile($fname); + + unlink ($fname); + } + elseif($mode == 4){ // IVBB LDIF Export + $dn = base64_decode($_GET['dn']); + /*$display= $ldap->gen_ldif($dn,"(objectClass=ivbbentry)",array( + "GouvernmentOrganizationalUnit","houseIdentifier","vocation", + "ivbbLastDeliveryCollective","gouvernmentOrganizationalPersonLocality", + "gouvernmentOrganizationalUnitDescription","gouvernmentOrganizationalUnitSubjectArea", + "functionalTitle","role","certificateSerialNumber","userCertificate","publicVisible", + "telephoneNumber","seeAlso","description","title","x121Address","registeredAddress", + "destinationIndicator","preferredDeliveryMethod","telexNumber","teletexTerminalIdentifier", + "telephoneNumber","internationaliSDNNumber","facsimileTelephoneNumber","street", + "postOfficeBox","postalCode","postalAddress","physicalDeliveryOfficeName","ou", + "st","l","audio","businessCategory","carLicense","departmentNumber","displayName", + "employeeNumber","employeeType","givenName","homePhone","homePostalAddress", + "initials","jpegPhoto","labeledURI","mail","manager","mobile","o","pager","photo", + "roomNumber","secretary","userCertificate","x500uniqueIdentifier","preferredLanguage", + "userSMIMECertificate","userPKCS12"));*/ + + echo $display; + } +} + + +/* Basic setup, remove eventually registered sessions */ +@require_once ("../include/php_setup.inc"); +@require_once ("functions.inc"); +session::start(); +session::set('errorsAlreadyPosted',array()); + +/* Logged in? Simple security check */ +if (!session::is_set('ui')){ + new log("security","all/all","",array(),"Error: getxls.php called without session") ; + header ("Location: index.php"); + exit; +} +$ui = session::get('ui'); +$config = session::get('config'); + + +/* Check ACL's */ +$dn =""; +if(isset($_GET['n'])){ + $dn = base64_decode($_GET['n']); +}elseif(isset($_GET['dn'])){ + $dn = base64_decode($_GET['dn']); +} +$acl = $ui->get_permissions($dn,"ldapmanager/xlsexport"); +if(!preg_match("/r/",$acl)){ + msg_dialog::display(_("Permission error"),_("You have no permission to do LDAP exports!"),FATAL_ERROR_DIALOG); + exit(); +} + +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: no-cache"); +header("Pragma: no-cache"); +header("Cache-Control: post-check=0, pre-check=0"); + +header("Content-type: text/plain"); + +switch ($_GET['ivbb']){ + case 2: dump_ldap (2); + break; + + case 3: dump_ldap (3); + break; + + case 4: dump_ldap (4); + break; + + default: + echo "Error in ivbb parameter. Request aborted."; +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/ldapmanager/html/images/ldif.png b/trunk/gosa-plugins/ldapmanager/html/images/ldif.png new file mode 100644 index 0000000000000000000000000000000000000000..d7bcd7877d0dba816140103fd4826e6f1d89bf92 GIT binary patch literal 1411 zcmV-}1$_F6P){$;Us^USk1R>N&5D!8sO=D;p$TntaX|u_0lG&Y^ z=g*&SlFW?DmJOTiK)>+i_uiY`dEfVbZ)ScwQYnQnLlW;9xMyIy280l?zP`SF2odu6 zyg4y3aa;EE^duG*7B057wmymw!8Fa%=;-LM92^`xl1L;TuT-ow2#({xFbwPz^n5kP zDvOJd9UTyn2ncjMvM-a#9Fvx15p6>$g>t!!mX;)n#T6uzEodbEo6n^AT2LqyKs$iP z*Vor+?gSqL1R^9jf9ezxhJZ??kbJoh@oaX(sI+ZcEH5v!fjxUNh{a+^(Fd;);+&Zcuoe+5E#VjI*XxQF&bxYKN@xN9ua4ZX97!bn1 z<|5dzDSrF=E#wO(?r%#p_-S6J0Y?cu*a0jp-NvQy2`C5%1z7s&Td|HpV|NW$`qujC zXXm^Rpvd$1?#D4KuR2hjFTk_~;Fbw+@b}zOlNhK}I1UdFd&ZwQ`7~z4Q!wKKON&wX zQ8dvU2B^&DxNsxq8Gq@_6-?#buR8FfWU8GqASCKQ*;2T(T3zI7;|;h)rBRoGhxR)d zpP557bhMVyc3-y9;_J`AC$ApCdbxsXh{vKtqp=wP>d!zd7G>@hbOyA6&?5W>^feGh zh>&MMK)5X-5mpEgl_vwCDW`=HZYD%%%V}-G*j71RDBQs>zy8MMG=aoBbj(4e{1_Su zVF>Uat)8s$0+r(z=g)hKHRl<8|I;NZrxol2&+T|Qt;N%nH8Mc&DLKCPzV}D{v+rKS zG@gVR+nsWnGa&wD4Fhk#^(K?hROPfG41EoVaF){~UNfBKG{1loMlb{Xo<5VwG<7*$ zES6xn*MR>)Hak0qy?fgbjYhXs=C1sI-XW@N2VdV8`9DX?viVg!XMhhFY+zL>$8q0u z-Mo40?!{_wOZNj1JiVvw-^-hAj#}_0-4%!1k3{%9q+7}U{{E{ME`0Md{eVBJ7+^`k z$mFvtBDhZxN@)E&pFV-m{f+k4MP;&Wt=3+6*m=-CS{&uj>(Ziro z;Sui_7Nq5A2ct!L-FBI1O1*VV5QV-sc?AX;Fc>t(;;R@42n@7qn{(Vm`~$J}+1Hnq RDz^Xt002ovPDHLkV1gkZi~Rrq literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/ldapmanager/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/ldapmanager/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..023a47048 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,551 @@ +# translation of messages.po to deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2008-12-03 15:10+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: html/getldif.php:82 html/getxls.php:493 +#: addons/ldapmanager/class_import.inc:52 +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_csvimport.inc:105 +#: addons/ldapmanager/class_export.inc:96 +msgid "Permission error" +msgstr "Berechtigungsfehler" + +#: html/getldif.php:82 +msgid "You have no permission to create LDAP dumps!" +msgstr "Sie sind nicht berechtigt, um LDAP-Abzüge zu erstellen!" + +#: html/getldif.php:107 +msgid "Error in ivbb parameter!" +msgstr "Fehler in ivbb Parameter!" + +#: html/getxls.php:88 +msgid "Birthday" +msgstr "Geburtstag" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Sex" +msgstr "Geschlecht" + +#: html/getxls.php:88 html/getxls.php:229 html/getxls.php:283 +#: html/getxls.php:299 html/getxls.php:303 +msgid "Surname" +msgstr "Nachname" + +#: html/getxls.php:88 html/getxls.php:225 html/getxls.php:283 +#: html/getxls.php:299 +msgid "Given name" +msgstr "Vorname" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Language" +msgstr "Sprache" + +#: html/getxls.php:91 html/getxls.php:92 html/getxls.php:310 +msgid "Users" +msgstr "Benutzer" + +#: html/getxls.php:96 html/getxls.php:343 +#, php-format +msgid "User list of %s on %s" +msgstr "Benutzerliste von %s auf %s" + +#: html/getxls.php:102 html/getxls.php:137 html/getxls.php:160 +#: html/getxls.php:349 html/getxls.php:366 +msgid "User ID" +msgstr "Benutzer-ID" + +#: html/getxls.php:123 html/getxls.php:286 +msgid "Members" +msgstr "Mitglieder" + +#: html/getxls.php:126 html/getxls.php:128 html/getxls.php:311 +msgid "Groups" +msgstr "Gruppen" + +#: html/getxls.php:133 html/getxls.php:362 +#, php-format +msgid "Groups of %s on %s" +msgstr "Gruppen von %s auf %s" + +#: html/getxls.php:157 html/getxls.php:190 html/getxls.php:192 +#: html/getxls.php:199 html/getxls.php:235 html/getxls.php:312 +#: html/getxls.php:383 +msgid "Servers" +msgstr "Server" + +#: html/getxls.php:160 html/getxls.php:289 +msgid "Description" +msgstr "Beschreibung" + +#: html/getxls.php:161 html/getxls.php:313 +msgid "Computers" +msgstr "Computer" + +#: html/getxls.php:171 html/getxls.php:224 html/getxls.php:403 +#: html/getxls.php:423 +msgid "Common name" +msgstr "Allgemeiner Name" + +#: html/getxls.php:187 +msgid "Server name" +msgstr "Servername" + +#: html/getxls.php:197 html/getxls.php:381 +#, php-format +msgid "Servers of %s on %s" +msgstr "Server von %s auf %s" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Display name" +msgstr "Anzeigename" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Fax" +msgstr "Fax" + +#: html/getxls.php:225 html/getxls.php:292 +msgid "Name" +msgstr "Name" + +#: html/getxls.php:225 +msgid "Home phone" +msgstr "Telefonnummer (privat)" + +#: html/getxls.php:226 +msgid "Home postal address" +msgstr "Private Adresse" + +#: html/getxls.php:226 html/getxls.php:300 +msgid "Initials" +msgstr "Initialen" + +#: html/getxls.php:226 +msgid "Location" +msgstr "Ort" + +#: html/getxls.php:227 +msgid "Mail address" +msgstr "Mail-Adresse" + +#: html/getxls.php:227 +msgid "Mobile phone" +msgstr "Mobiltelefon" + +#: html/getxls.php:227 html/getxls.php:300 +msgid "City" +msgstr "Stadt" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Postal address" +msgstr "Adresse" + +#: html/getxls.php:228 html/getxls.php:302 +msgid "Pager" +msgstr "Pager" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Phone number" +msgstr "Telefonnummer" + +#: html/getxls.php:229 +msgid "Address" +msgstr "Adresse" + +#: html/getxls.php:229 +msgid "Postal code" +msgstr "Postleitzahl" + +#: html/getxls.php:230 html/getxls.php:303 +msgid "State" +msgstr "Land" + +#: html/getxls.php:230 +msgid "Function" +msgstr "Funktion" + +#: html/getxls.php:233 html/getxls.php:314 +msgid "Adressbook" +msgstr "Adressbuch" + +#: html/getxls.php:240 html/getxls.php:416 +#, php-format +msgid "Adressbook of %s on %s" +msgstr "Adressbuch von %s auf %s" + +#: html/getxls.php:246 +msgid "Common Name" +msgstr "Allgemeiner Name" + +#: html/getxls.php:283 +msgid "Day of birth" +msgstr "Geburtsdatum" + +#: html/getxls.php:289 +msgid "UID" +msgstr "UID" + +#: html/getxls.php:301 +msgid "Email address" +msgstr "Email-Adresse" + +#: html/getxls.php:301 +msgid "Mobile" +msgstr "Mobiltelefon" + +#: html/getxls.php:301 +msgid "Organization" +msgstr "Organisation" + +#: html/getxls.php:301 +msgid "Organizational unit" +msgstr "Organisationseinheit" + +#: html/getxls.php:302 +msgid "Postal Code" +msgstr "Postleitzahl" + +#: html/getxls.php:303 +msgid "Title" +msgstr "Titel" + +#: html/getxls.php:306 +msgid "Full" +msgstr "Voll" + +#: html/getxls.php:397 +#, php-format +msgid "Computers of %s on %s" +msgstr "Computer von %s auf %s" + +#: html/getxls.php:493 +msgid "You have no permission to do LDAP exports!" +msgstr "Sie haben keine Berechtigung, um aus dem LDAP zu exportieren!" + +#: addons/ldapmanager/class_import.inc:6 +#: addons/ldapmanager/class_csvimport.inc:6 +msgid "LDIF export" +msgstr "LDIF exportieren" + +#: addons/ldapmanager/class_import.inc:7 addons/ldapmanager/class_ldif.inc:7 +#: addons/ldapmanager/class_exportxls.inc:7 +#: addons/ldapmanager/class_csvimport.inc:7 +#: addons/ldapmanager/class_export.inc:7 +msgid "This does something" +msgstr "Dies tut etwas" + +#: addons/ldapmanager/class_import.inc:52 +msgid "You need full write access to the LDAP tree to import data!" +msgstr "Sie benötigen Vollzugriff auf den LDAP-Baum, um Daten zu importieren!" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_csvimport.inc:165 +#: addons/ldapmanager/class_csvimport.inc:285 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#: addons/ldapmanager/class_csvimport.inc:494 +#: addons/ldapmanager/class_export.inc:84 +msgid "Error" +msgstr "Fehler" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#, php-format +msgid "Cannot read uploaded file: %s" +msgstr "Kann hochgeladene Datei nicht lesen: %s" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_csvimport.inc:340 +msgid "file is empty" +msgstr "Die Datei ist leer" + +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:346 +msgid "file not found" +msgstr "Die Datei wurde nicht gefunden" + +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:351 +msgid "file not readable" +msgstr "Die Datei ist nicht lesbar" + +#: addons/ldapmanager/class_import.inc:110 +#: addons/ldapmanager/class_import.inc:114 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: addons/ldapmanager/class_import.inc:118 +msgid "Internal error" +msgstr "Interner Fehler" + +#: addons/ldapmanager/class_import.inc:118 +#, php-format +msgid "Undefined flag '%s'!" +msgstr "Undefiniertes Flag '%s'!" + +#: addons/ldapmanager/contentimport.tpl:3 +msgid "" +"The LDIF import plugin provides methods to upload a set of entries to your " +"running LDAP directory as ldif. You may use this to add new or modify " +"existing entries. Remember that GOsa will not check your ldifs for GOsa " +"conformance." +msgstr "" +"Dieses Modul ermöglicht es Ihnen, einen Satz von Einträgen als LDIF in Ihre " +"laufende LDAP-Datenbank zu importieren. Sie können diese Funktion " +"beispielsweise zum Hinzufügen oder Aktualisieren existierender Einträge " +"nutzen. Beachten Sie dabei bitte, dass GOsa die LDIF-Datei nicht auf " +"Konformität prüft." + +#: addons/ldapmanager/contentimport.tpl:10 +msgid "Import LDIF File" +msgstr "Importiere LDIF Datei" + +#: addons/ldapmanager/contentimport.tpl:15 +#: addons/ldapmanager/contentcsv.tpl:14 +msgid "Browse" +msgstr "Durchsuchen" + +#: addons/ldapmanager/contentimport.tpl:24 +msgid "Modify existing objects, keep untouched attributes" +msgstr "Überschreibe vorhandene Objekte, behalte unbetroffene Attribute" + +#: addons/ldapmanager/contentimport.tpl:25 +msgid "Overwrite existing objects, all not listed attributes will be removed" +msgstr "" +"Überschreibe vorhandene Objekte, entferne dabei alle nicht aufgeführten " +"Attribute" + +#: addons/ldapmanager/contentimport.tpl:34 +msgid "Remove existing entries first" +msgstr "Enferne zunächst bereits existierende Einträge" + +#: addons/ldapmanager/contentimport.tpl:41 +msgid "Import successful" +msgstr "Import erfolgreich" + +#: addons/ldapmanager/contentimport.tpl:50 +#: addons/ldapmanager/contentcsv.tpl:109 addons/ldapmanager/contentcsv.tpl:112 +msgid "Import" +msgstr "Importieren" + +#: addons/ldapmanager/contentexportxls.tpl:3 +msgid "" +"The XLS export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as xls. You may save these files for " +"documentation." +msgstr "" +"Dieses Modul ermöglicht Ihnen den Download der kompletten momentan " +"verwendeten LDAP-Datenbank als xls-Datei. Die übertragenen Dateien können " +"beispielsweise zur Dokumentation/Übersicht verwendet werden." + +#: addons/ldapmanager/contentexportxls.tpl:10 +#: addons/ldapmanager/contentexport.tpl:10 +msgid "Export single entry" +msgstr "Exportiere einzelnen Eintrag" + +#: addons/ldapmanager/contentexportxls.tpl:14 +msgid "Choose the data you want to Export" +msgstr "Wählen Sie die Daten, die exportiert werden sollen" + +#: addons/ldapmanager/contentexportxls.tpl:19 +#: addons/ldapmanager/contentexportxls.tpl:32 +#: addons/ldapmanager/contentexportxls.tpl:47 +#: addons/ldapmanager/contentexport.tpl:16 +#: addons/ldapmanager/contentexport.tpl:29 +#: addons/ldapmanager/contentexport.tpl:44 +msgid "Export" +msgstr "Export" + +#: addons/ldapmanager/contentexportxls.tpl:24 +msgid "Export complete XLS for" +msgstr "Exportiere vollständige XLS-Datei für" + +#: addons/ldapmanager/contentexportxls.tpl:27 +#: addons/ldapmanager/contentexportxls.tpl:42 +#: addons/ldapmanager/contentexport.tpl:24 +#: addons/ldapmanager/contentexport.tpl:39 +msgid "Choose the department you want to Export" +msgstr "Wählen Sie die Abteilung, die exportiert werden soll" + +#: addons/ldapmanager/contentexportxls.tpl:39 +#: addons/ldapmanager/contentexport.tpl:36 +msgid "Export IVBB LDIF for" +msgstr "Exportiere IVBB LDIF für" + +#: addons/ldapmanager/contentexportxls.tpl:58 +#: addons/ldapmanager/contentexport.tpl:55 +msgid "Export successful" +msgstr "Export erfolgreich" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the complete LDAP database to a xls file" +msgstr "" +"Hier klicken, um die gesamte LDAP-Datenbank in eine xls-Datei zu exportieren." + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the LDAP Export to a xls file" +msgstr "Hier klicken, um die exportierten Daten in eine xls-Datei zu speichern" + +#: addons/ldapmanager/class_ldif.inc:6 addons/ldapmanager/main.inc:49 +msgid "LDAP manager" +msgstr "LDAP-Manager" + +#: addons/ldapmanager/class_ldif.inc:35 addons/ldapmanager/class_ldif.inc:36 +#: addons/ldapmanager/class_ldif.inc:41 +msgid "Ldap manager" +msgstr "LDAP-Manager" + +#: addons/ldapmanager/class_ldif.inc:36 +msgid "import" +msgstr "Import" + +#: addons/ldapmanager/class_ldif.inc:36 +msgid "export" +msgstr "Export" + +#: addons/ldapmanager/contentexport.tpl:3 +msgid "" +"The LDIF export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as ldif. You may save these files for backup " +"purpose or when initializing a new server." +msgstr "" +"Dieses Modul ermöglicht Ihnen den Download der kompletten momentan " +"verwendeten LDAP-Datenbank. Die übertragenen Dateien können beispielsweise " +"zur Datensicherung oder zur Einrichtung eines neuen Servers benutzt werden." + +#: addons/ldapmanager/contentexport.tpl:21 +msgid "Export complete LDIF for" +msgstr "Exportiere vollständige LDIF-Datei für" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the complete LDAP database to a file" +msgstr "" +"Hier klicken, um die gesamte LDAP-Datenbank in eine Datei zu exportieren." + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the LDAP Export " +msgstr "Hier klicken, um die exportierten Daten in eine Datei zu speichern" + +#: addons/ldapmanager/class_exportxls.inc:6 +msgid "XLS import" +msgstr "XLS-Import" + +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_export.inc:84 +msgid "Cannot export selected entries!" +msgstr "Kann die gewählten Einträge nicht exportieren!" + +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_export.inc:96 +#, php-format +msgid "You have no permission to export '%s'!" +msgstr "Sie haben keine Berechtigung, um '%s' zu exportieren!" + +#: addons/ldapmanager/contentcsv.tpl:2 +msgid "" +"The CSV import plugin provides methods to generate user accounts from a file " +"containing Comma Seperated Values. The administrator can decide which " +"columns should be transfered to which attribute. Note that you must have at " +"least the UID, GIVENNAME and SURENAME set." +msgstr "" +"Das CSV Import Plugin stellt Methoden bereit, um Benutzerkonten aus einer " +"CSV Datei zu generieren. Der Administrator kann die Zuordnung zwischen " +"Spalte und Benutzerattribut frei wählen. Es müssen jedoch mindestens die " +"Attribute UID, GIVENNAME und SURENAME gesetzt sein." + +#: addons/ldapmanager/contentcsv.tpl:10 +msgid "Select CSV file to import" +msgstr "Auswahl der zu importierenden CSV Datei" + +#: addons/ldapmanager/contentcsv.tpl:19 +msgid "Select template" +msgstr "Auswahl der Vorlage" + +#: addons/ldapmanager/contentcsv.tpl:34 +msgid "All entries have been written to the LDAP database successfully." +msgstr "Alle Einträge wurden erfolgreich in die LDAP-Datenbank geschrieben." + +#: addons/ldapmanager/contentcsv.tpl:36 +msgid "Oups. There was an error during the import of your data." +msgstr "Es gab einen Fehler während des Importvorgangs Ihrer Daten." + +#: addons/ldapmanager/contentcsv.tpl:39 +msgid "Here is the status report for the import:" +msgstr "Statusreport des Imports:" + +#: addons/ldapmanager/contentcsv.tpl:80 +msgid "Selected Template" +msgstr "Gewählte Vorlage" + +#: addons/ldapmanager/class_csvimport.inc:105 +msgid "You've no permission to import CSV files." +msgstr "Sie haben keine Berechtigung, um CSV Dateien zu importieren." + +#: addons/ldapmanager/class_csvimport.inc:165 +msgid "Need at least 'sn', 'givenName' and 'uid' to create users." +msgstr "Benötige mindestens 'sn', 'givenName' und 'uid' um Benutzer anzulegen." + +#: addons/ldapmanager/class_csvimport.inc:213 +msgid "failed" +msgstr "Fehlgeschlagen" + +#: addons/ldapmanager/class_csvimport.inc:217 +msgid "ok" +msgstr "ok" + +#: addons/ldapmanager/class_csvimport.inc:281 +msgid "status" +msgstr "Status" + +#: addons/ldapmanager/class_csvimport.inc:285 +#, php-format +msgid "Cannot insert entry '%s'!" +msgstr "Kann Eintrag '%s' nicht einfügen!" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Information" +msgstr "Information" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Nothing to import!" +msgstr "Nichts zu importieren!" + +#: addons/ldapmanager/class_csvimport.inc:494 +msgid "Cannot find CSV data in the selected file!" +msgstr "Kann keine CSV-Daten in der gewählten Datei finden!" + +#: addons/ldapmanager/class_export.inc:6 +msgid "CSV import" +msgstr "CSV-Import" + +#~ msgid "Ldap manger" +#~ msgstr "LDAP-Manager" diff --git a/trunk/gosa-plugins/ldapmanager/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/ldapmanager/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..886b36b08 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,557 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: html/getldif.php:82 html/getxls.php:493 +#: addons/ldapmanager/class_import.inc:52 +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_csvimport.inc:105 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy +msgid "Permission error" +msgstr "Permisos" + +#: html/getldif.php:82 +#, fuzzy +msgid "You have no permission to create LDAP dumps!" +msgstr "No tiene permisos para eliminar este departamento." + +#: html/getldif.php:107 +#, fuzzy +msgid "Error in ivbb parameter!" +msgstr "Parametros del Kernel" + +#: html/getxls.php:88 +msgid "Birthday" +msgstr "" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Sex" +msgstr "Sexo" + +#: html/getxls.php:88 html/getxls.php:229 html/getxls.php:283 +#: html/getxls.php:299 html/getxls.php:303 +#, fuzzy +msgid "Surname" +msgstr "Apellidos" + +#: html/getxls.php:88 html/getxls.php:225 html/getxls.php:283 +#: html/getxls.php:299 +msgid "Given name" +msgstr "Nombre de pila" + +#: html/getxls.php:88 html/getxls.php:283 +#, fuzzy +msgid "Language" +msgstr "Selección de idiomas" + +#: html/getxls.php:91 html/getxls.php:92 html/getxls.php:310 +msgid "Users" +msgstr "Usuarios" + +#: html/getxls.php:96 html/getxls.php:343 +#, php-format +msgid "User list of %s on %s" +msgstr "" + +#: html/getxls.php:102 html/getxls.php:137 html/getxls.php:160 +#: html/getxls.php:349 html/getxls.php:366 +msgid "User ID" +msgstr "Identificador (ID) de usuario" + +#: html/getxls.php:123 html/getxls.php:286 +msgid "Members" +msgstr "Miembros" + +#: html/getxls.php:126 html/getxls.php:128 html/getxls.php:311 +msgid "Groups" +msgstr "Grupos" + +#: html/getxls.php:133 html/getxls.php:362 +#, fuzzy, php-format +msgid "Groups of %s on %s" +msgstr "Grupo de usuarios" + +#: html/getxls.php:157 html/getxls.php:190 html/getxls.php:192 +#: html/getxls.php:199 html/getxls.php:235 html/getxls.php:312 +#: html/getxls.php:383 +#, fuzzy +msgid "Servers" +msgstr "Servidor" + +#: html/getxls.php:160 html/getxls.php:289 +msgid "Description" +msgstr "Descripción" + +#: html/getxls.php:161 html/getxls.php:313 +#, fuzzy +msgid "Computers" +msgstr "Completado" + +#: html/getxls.php:171 html/getxls.php:224 html/getxls.php:403 +#: html/getxls.php:423 +#, fuzzy +msgid "Common name" +msgstr "Nombre del Rol" + +#: html/getxls.php:187 +#, fuzzy +msgid "Server name" +msgstr "Servidor" + +#: html/getxls.php:197 html/getxls.php:381 +#, php-format +msgid "Servers of %s on %s" +msgstr "" + +#: html/getxls.php:224 html/getxls.php:299 +#, fuzzy +msgid "Display name" +msgstr "Mostrar las acl que coincidan con" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Fax" +msgstr "Fax" + +#: html/getxls.php:225 html/getxls.php:292 +msgid "Name" +msgstr "Nombre" + +#: html/getxls.php:225 +#, fuzzy +msgid "Home phone" +msgstr "Número de teléfono personal" + +#: html/getxls.php:226 +msgid "Home postal address" +msgstr "Dirección Postal personal" + +#: html/getxls.php:226 html/getxls.php:300 +msgid "Initials" +msgstr "" + +#: html/getxls.php:226 +msgid "Location" +msgstr "Localización" + +#: html/getxls.php:227 +msgid "Mail address" +msgstr "Dirección correo electrónico" + +#: html/getxls.php:227 +#, fuzzy +msgid "Mobile phone" +msgstr "Teléfono móvil" + +#: html/getxls.php:227 html/getxls.php:300 +msgid "City" +msgstr "" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Postal address" +msgstr "Código Postal" + +#: html/getxls.php:228 html/getxls.php:302 +msgid "Pager" +msgstr "Buscapersonas" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +#, fuzzy +msgid "Phone number" +msgstr "Número de teléfono personal" + +#: html/getxls.php:229 +msgid "Address" +msgstr "Dirección" + +#: html/getxls.php:229 +msgid "Postal code" +msgstr "Código Postal" + +#: html/getxls.php:230 html/getxls.php:303 +msgid "State" +msgstr "Provincia" + +#: html/getxls.php:230 +#, fuzzy +msgid "Function" +msgstr "Función" + +#: html/getxls.php:233 html/getxls.php:314 +#, fuzzy +msgid "Adressbook" +msgstr "Libreta direcciones" + +#: html/getxls.php:240 html/getxls.php:416 +#, fuzzy, php-format +msgid "Adressbook of %s on %s" +msgstr "Libreta direcciones" + +#: html/getxls.php:246 +msgid "Common Name" +msgstr "" + +#: html/getxls.php:283 +#, fuzzy +msgid "Day of birth" +msgstr "Fecha de nacimiento" + +#: html/getxls.php:289 +msgid "UID" +msgstr "UID" + +#: html/getxls.php:301 +#, fuzzy +msgid "Email address" +msgstr "Dirección correo electrónico" + +#: html/getxls.php:301 +msgid "Mobile" +msgstr "Móvil" + +#: html/getxls.php:301 +msgid "Organization" +msgstr "Organización" + +#: html/getxls.php:301 +#, fuzzy +msgid "Organizational unit" +msgstr "Organización" + +#: html/getxls.php:302 +#, fuzzy +msgid "Postal Code" +msgstr "Código Postal" + +#: html/getxls.php:303 +msgid "Title" +msgstr "" + +#: html/getxls.php:306 +msgid "Full" +msgstr "" + +#: html/getxls.php:397 +#, php-format +msgid "Computers of %s on %s" +msgstr "" + +#: html/getxls.php:493 +#, fuzzy +msgid "You have no permission to do LDAP exports!" +msgstr "No tiene permisos para eliminar este departamento." + +#: addons/ldapmanager/class_import.inc:6 +#: addons/ldapmanager/class_csvimport.inc:6 +msgid "LDIF export" +msgstr "" + +#: addons/ldapmanager/class_import.inc:7 addons/ldapmanager/class_ldif.inc:7 +#: addons/ldapmanager/class_exportxls.inc:7 +#: addons/ldapmanager/class_csvimport.inc:7 +#: addons/ldapmanager/class_export.inc:7 +msgid "This does something" +msgstr "" + +#: addons/ldapmanager/class_import.inc:52 +msgid "You need full write access to the LDAP tree to import data!" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_csvimport.inc:165 +#: addons/ldapmanager/class_csvimport.inc:285 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#: addons/ldapmanager/class_csvimport.inc:494 +#: addons/ldapmanager/class_export.inc:84 +msgid "Error" +msgstr "Error" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#, fuzzy, php-format +msgid "Cannot read uploaded file: %s" +msgstr "No puedo crear el fichero '%s'." + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_csvimport.inc:340 +#, fuzzy +msgid "file is empty" +msgstr "Eliminar esta entrada" + +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:346 +msgid "file not found" +msgstr "" + +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:351 +msgid "file not readable" +msgstr "" + +#: addons/ldapmanager/class_import.inc:110 +#: addons/ldapmanager/class_import.inc:114 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: addons/ldapmanager/class_import.inc:118 +#, fuzzy +msgid "Internal error" +msgstr "Insertar separador" + +#: addons/ldapmanager/class_import.inc:118 +#, php-format +msgid "Undefined flag '%s'!" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:3 +msgid "" +"The LDIF import plugin provides methods to upload a set of entries to your " +"running LDAP directory as ldif. You may use this to add new or modify " +"existing entries. Remember that GOsa will not check your ldifs for GOsa " +"conformance." +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:10 +msgid "Import LDIF File" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:15 +#: addons/ldapmanager/contentcsv.tpl:14 +msgid "Browse" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:24 +msgid "Modify existing objects, keep untouched attributes" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:25 +msgid "Overwrite existing objects, all not listed attributes will be removed" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:34 +msgid "Remove existing entries first" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:41 +msgid "Import successful" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:50 +#: addons/ldapmanager/contentcsv.tpl:109 addons/ldapmanager/contentcsv.tpl:112 +msgid "Import" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:3 +msgid "" +"The XLS export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as xls. You may save these files for " +"documentation." +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:10 +#: addons/ldapmanager/contentexport.tpl:10 +msgid "Export single entry" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:14 +msgid "Choose the data you want to Export" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:19 +#: addons/ldapmanager/contentexportxls.tpl:32 +#: addons/ldapmanager/contentexportxls.tpl:47 +#: addons/ldapmanager/contentexport.tpl:16 +#: addons/ldapmanager/contentexport.tpl:29 +#: addons/ldapmanager/contentexport.tpl:44 +msgid "Export" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:24 +msgid "Export complete XLS for" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:27 +#: addons/ldapmanager/contentexportxls.tpl:42 +#: addons/ldapmanager/contentexport.tpl:24 +#: addons/ldapmanager/contentexport.tpl:39 +msgid "Choose the department you want to Export" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:39 +#: addons/ldapmanager/contentexport.tpl:36 +msgid "Export IVBB LDIF for" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:58 +#: addons/ldapmanager/contentexport.tpl:55 +msgid "Export successful" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the complete LDAP database to a xls file" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the LDAP Export to a xls file" +msgstr "" + +#: addons/ldapmanager/class_ldif.inc:6 addons/ldapmanager/main.inc:49 +msgid "LDAP manager" +msgstr "" + +#: addons/ldapmanager/class_ldif.inc:35 addons/ldapmanager/class_ldif.inc:36 +#: addons/ldapmanager/class_ldif.inc:41 +msgid "Ldap manager" +msgstr "" + +#: addons/ldapmanager/class_ldif.inc:36 +msgid "import" +msgstr "" + +#: addons/ldapmanager/class_ldif.inc:36 +msgid "export" +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:3 +msgid "" +"The LDIF export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as ldif. You may save these files for backup " +"purpose or when initializing a new server." +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:21 +msgid "Export complete LDIF for" +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the complete LDAP database to a file" +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the LDAP Export " +msgstr "" + +#: addons/ldapmanager/class_exportxls.inc:6 +msgid "XLS import" +msgstr "" + +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_export.inc:84 +#, fuzzy +msgid "Cannot export selected entries!" +msgstr "Copiar los objetos seleccionados" + +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy, php-format +msgid "You have no permission to export '%s'!" +msgstr "No tiene permisos para cambiar su contraseña." + +#: addons/ldapmanager/contentcsv.tpl:2 +msgid "" +"The CSV import plugin provides methods to generate user accounts from a file " +"containing Comma Seperated Values. The administrator can decide which " +"columns should be transfered to which attribute. Note that you must have at " +"least the UID, GIVENNAME and SURENAME set." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:10 +msgid "Select CSV file to import" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:19 +msgid "Select template" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:34 +msgid "All entries have been written to the LDAP database successfully." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:36 +msgid "Oups. There was an error during the import of your data." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:39 +msgid "Here is the status report for the import:" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:80 +msgid "Selected Template" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:105 +#, fuzzy +msgid "You've no permission to import CSV files." +msgstr "No tiene permisos para eliminar este departamento." + +#: addons/ldapmanager/class_csvimport.inc:165 +msgid "Need at least 'sn', 'givenName' and 'uid' to create users." +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:213 +msgid "failed" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:217 +msgid "ok" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:281 +msgid "status" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:285 +#, fuzzy, php-format +msgid "Cannot insert entry '%s'!" +msgstr "No se puede grabar el archivo '%s'." + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Information" +msgstr "Información" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Nothing to import!" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:494 +msgid "Cannot find CSV data in the selected file!" +msgstr "" + +#: addons/ldapmanager/class_export.inc:6 +msgid "CSV import" +msgstr "" + +#, fuzzy +#~ msgid "Surename" +#~ msgstr "Apellidos" + +#~ msgid "Back" +#~ msgstr "Atrás" diff --git a/trunk/gosa-plugins/ldapmanager/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/ldapmanager/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..de13129f3 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,543 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2008-12-21 12:02+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: html/getldif.php:82 html/getxls.php:493 +#: addons/ldapmanager/class_import.inc:52 +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_csvimport.inc:105 +#: addons/ldapmanager/class_export.inc:96 +msgid "Permission error" +msgstr "Erreur de permission" + +#: html/getldif.php:82 +msgid "You have no permission to create LDAP dumps!" +msgstr "" +"Vous n'avez pas les droits nécessaires pour créer des sauvegarde de " +"l'annuaire !" + +#: html/getldif.php:107 +msgid "Error in ivbb parameter!" +msgstr "Erreur dans le paramètre ivbb !" + +#: html/getxls.php:88 +msgid "Birthday" +msgstr "Anniversaire" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Sex" +msgstr "Sexe" + +#: html/getxls.php:88 html/getxls.php:229 html/getxls.php:283 +#: html/getxls.php:299 html/getxls.php:303 +msgid "Surname" +msgstr "Nom de famille" + +#: html/getxls.php:88 html/getxls.php:225 html/getxls.php:283 +#: html/getxls.php:299 +msgid "Given name" +msgstr "Prénom" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Language" +msgstr "Langue" + +#: html/getxls.php:91 html/getxls.php:92 html/getxls.php:310 +msgid "Users" +msgstr "Utilisateurs" + +#: html/getxls.php:96 html/getxls.php:343 +#, php-format +msgid "User list of %s on %s" +msgstr "Liste des utilisateurs de %s dans %s" + +#: html/getxls.php:102 html/getxls.php:137 html/getxls.php:160 +#: html/getxls.php:349 html/getxls.php:366 +msgid "User ID" +msgstr "ID de l'utilisateur" + +#: html/getxls.php:123 html/getxls.php:286 +msgid "Members" +msgstr "Membres" + +#: html/getxls.php:126 html/getxls.php:128 html/getxls.php:311 +msgid "Groups" +msgstr "Groupes" + +#: html/getxls.php:133 html/getxls.php:362 +#, php-format +msgid "Groups of %s on %s" +msgstr "Groupe de %s dans %s" + +#: html/getxls.php:157 html/getxls.php:190 html/getxls.php:192 +#: html/getxls.php:199 html/getxls.php:235 html/getxls.php:312 +#: html/getxls.php:383 +msgid "Servers" +msgstr "Serveurs" + +#: html/getxls.php:160 html/getxls.php:289 +msgid "Description" +msgstr "" + +#: html/getxls.php:161 html/getxls.php:313 +msgid "Computers" +msgstr "Ordinateurs" + +#: html/getxls.php:171 html/getxls.php:224 html/getxls.php:403 +#: html/getxls.php:423 +msgid "Common name" +msgstr "Nom commun" + +#: html/getxls.php:187 +msgid "Server name" +msgstr "Nom du serveur" + +#: html/getxls.php:197 html/getxls.php:381 +#, php-format +msgid "Servers of %s on %s" +msgstr "Serveur de %s dans %s" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Display name" +msgstr "Nom d'affichage" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Fax" +msgstr "Fax" + +#: html/getxls.php:225 html/getxls.php:292 +msgid "Name" +msgstr "Nom" + +#: html/getxls.php:225 +msgid "Home phone" +msgstr "Téléphone privé" + +#: html/getxls.php:226 +msgid "Home postal address" +msgstr "Adresse postale personnelle" + +#: html/getxls.php:226 html/getxls.php:300 +msgid "Initials" +msgstr "Initiales" + +#: html/getxls.php:226 +msgid "Location" +msgstr "Lieu" + +#: html/getxls.php:227 +msgid "Mail address" +msgstr "Adresse de messagerie" + +#: html/getxls.php:227 +msgid "Mobile phone" +msgstr "Téléphone portable" + +#: html/getxls.php:227 html/getxls.php:300 +msgid "City" +msgstr "Ville" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Postal address" +msgstr "Adresse postale" + +#: html/getxls.php:228 html/getxls.php:302 +msgid "Pager" +msgstr "Bip" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Phone number" +msgstr "Numéro de téléphone" + +#: html/getxls.php:229 +msgid "Address" +msgstr "Adresse" + +#: html/getxls.php:229 +msgid "Postal code" +msgstr "Code postal" + +#: html/getxls.php:230 html/getxls.php:303 +msgid "State" +msgstr "Département" + +#: html/getxls.php:230 +msgid "Function" +msgstr "Fonction" + +#: html/getxls.php:233 html/getxls.php:314 +msgid "Adressbook" +msgstr "Carnet d'adresses" + +#: html/getxls.php:240 html/getxls.php:416 +#, php-format +msgid "Adressbook of %s on %s" +msgstr "Carnet d'adresses de %s dans %s" + +#: html/getxls.php:246 +msgid "Common Name" +msgstr "Nom commun" + +#: html/getxls.php:283 +msgid "Day of birth" +msgstr "Date de naissance" + +#: html/getxls.php:289 +msgid "UID" +msgstr "" + +#: html/getxls.php:301 +msgid "Email address" +msgstr "Adresse de messagerie" + +#: html/getxls.php:301 +msgid "Mobile" +msgstr "GSM" + +#: html/getxls.php:301 +msgid "Organization" +msgstr "Entreprise" + +#: html/getxls.php:301 +msgid "Organizational unit" +msgstr "Unité organisationelle" + +#: html/getxls.php:302 +msgid "Postal Code" +msgstr "Code postal" + +#: html/getxls.php:303 +msgid "Title" +msgstr "Titre" + +#: html/getxls.php:306 +msgid "Full" +msgstr "Complet" + +#: html/getxls.php:397 +#, php-format +msgid "Computers of %s on %s" +msgstr "Ordinateurs de %s dans %s" + +#: html/getxls.php:493 +msgid "You have no permission to do LDAP exports!" +msgstr "Vous n'avez pas l'autorisation d'exporter l'annuaire !" + +#: addons/ldapmanager/class_import.inc:6 +#: addons/ldapmanager/class_csvimport.inc:6 +msgid "LDIF export" +msgstr "Exportation LDIF" + +#: addons/ldapmanager/class_import.inc:7 addons/ldapmanager/class_ldif.inc:7 +#: addons/ldapmanager/class_exportxls.inc:7 +#: addons/ldapmanager/class_csvimport.inc:7 +#: addons/ldapmanager/class_export.inc:7 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: addons/ldapmanager/class_import.inc:52 +msgid "You need full write access to the LDAP tree to import data!" +msgstr "" +"Vous avez besoin d'un accès complet à tout les objets, pour exécuter la " +"commande d'importation !" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_csvimport.inc:165 +#: addons/ldapmanager/class_csvimport.inc:285 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#: addons/ldapmanager/class_csvimport.inc:494 +#: addons/ldapmanager/class_export.inc:84 +msgid "Error" +msgstr "Erreur" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#, php-format +msgid "Cannot read uploaded file: %s" +msgstr "Impossible de lire le fichier importé : '%s'" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_csvimport.inc:340 +msgid "file is empty" +msgstr "le fichier est vide." + +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:346 +msgid "file not found" +msgstr "le fichier n'a pas été trouvé" + +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:351 +msgid "file not readable" +msgstr "le fichier n'est pas lisible" + +#: addons/ldapmanager/class_import.inc:110 +#: addons/ldapmanager/class_import.inc:114 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: addons/ldapmanager/class_import.inc:118 +msgid "Internal error" +msgstr "Erreur interne" + +#: addons/ldapmanager/class_import.inc:118 +#, php-format +msgid "Undefined flag '%s'!" +msgstr "Marqueur indéfini '%s' !" + +#: addons/ldapmanager/contentimport.tpl:3 +msgid "" +"The LDIF import plugin provides methods to upload a set of entries to your " +"running LDAP directory as ldif. You may use this to add new or modify " +"existing entries. Remember that GOsa will not check your ldifs for GOsa " +"conformance." +msgstr "" +"L'extension d'importation au format LDIF permet d'importer une série " +"d'entrées au format ldif dans l'annuaire. Vous pouvez utiliser cette " +"fonctionnalité pour ajouter de nouvelles entrées ou modifier des entrées " +"existantes. Rappelez vous que GOsa ne vérifiera pas vos ldifs par rapport au " +"schéma utilisés par GOsa." + +#: addons/ldapmanager/contentimport.tpl:10 +msgid "Import LDIF File" +msgstr "Importation d'un fichier LDIF" + +#: addons/ldapmanager/contentimport.tpl:15 +#: addons/ldapmanager/contentcsv.tpl:14 +msgid "Browse" +msgstr "Parcourir" + +#: addons/ldapmanager/contentimport.tpl:24 +msgid "Modify existing objects, keep untouched attributes" +msgstr "Modifier les objets existants, laisse les attributs non modifiés" + +#: addons/ldapmanager/contentimport.tpl:25 +msgid "Overwrite existing objects, all not listed attributes will be removed" +msgstr "Récrire les objets existants, tout les attributs non listés seront enlevés" + +#: addons/ldapmanager/contentimport.tpl:34 +msgid "Remove existing entries first" +msgstr "Enlève d'abord les entrées existantes" + +#: addons/ldapmanager/contentimport.tpl:41 +msgid "Import successful" +msgstr "Importation réussie" + +#: addons/ldapmanager/contentimport.tpl:50 +#: addons/ldapmanager/contentcsv.tpl:109 addons/ldapmanager/contentcsv.tpl:112 +msgid "Import" +msgstr "Importer" + +#: addons/ldapmanager/contentexportxls.tpl:3 +msgid "" +"The XLS export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as xls. You may save these files for " +"documentation." +msgstr "" +"L'extension d'exportation au format XLS permet d'exporter une copie complète " +"de l'annuaire LDAP au format XLS. Ces fichiers peuvent être utilisés à des " +"fins de documentation." + +#: addons/ldapmanager/contentexportxls.tpl:10 +#: addons/ldapmanager/contentexport.tpl:10 +msgid "Export single entry" +msgstr "Exporter une seule entrée" + +#: addons/ldapmanager/contentexportxls.tpl:14 +msgid "Choose the data you want to Export" +msgstr "Choisissez les données que vous voulez exporter" + +#: addons/ldapmanager/contentexportxls.tpl:19 +#: addons/ldapmanager/contentexportxls.tpl:32 +#: addons/ldapmanager/contentexportxls.tpl:47 +#: addons/ldapmanager/contentexport.tpl:16 +#: addons/ldapmanager/contentexport.tpl:29 +#: addons/ldapmanager/contentexport.tpl:44 +msgid "Export" +msgstr "Exporter" + +#: addons/ldapmanager/contentexportxls.tpl:24 +msgid "Export complete XLS for" +msgstr "Exporter un fichier XLS complet pour " + +#: addons/ldapmanager/contentexportxls.tpl:27 +#: addons/ldapmanager/contentexportxls.tpl:42 +#: addons/ldapmanager/contentexport.tpl:24 +#: addons/ldapmanager/contentexport.tpl:39 +msgid "Choose the department you want to Export" +msgstr "Choisissez le département que vous voulez exporter" + +#: addons/ldapmanager/contentexportxls.tpl:39 +#: addons/ldapmanager/contentexport.tpl:36 +msgid "Export IVBB LDIF for" +msgstr "Exporter un LDIF IVBB pour" + +#: addons/ldapmanager/contentexportxls.tpl:58 +#: addons/ldapmanager/contentexport.tpl:55 +msgid "Export successful" +msgstr "Exportation réussie" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the complete LDAP database to a xls file" +msgstr "Cliquez ici pour sauvegarder l'annuaire LDAP au complet dans un fichier xls" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the LDAP Export to a xls file" +msgstr "Cliquez ici pour sauver l'exportation de l'annaire LDAP comme un fichier xls" + +#: addons/ldapmanager/class_ldif.inc:6 addons/ldapmanager/main.inc:49 +msgid "LDAP manager" +msgstr "Gérer l'annuaire" + +#: addons/ldapmanager/class_ldif.inc:35 addons/ldapmanager/class_ldif.inc:36 +#: addons/ldapmanager/class_ldif.inc:41 +msgid "Ldap manager" +msgstr "Gérer l'annuaire LDAP" + +#: addons/ldapmanager/class_ldif.inc:36 +msgid "import" +msgstr "importer" + +#: addons/ldapmanager/class_ldif.inc:36 +msgid "export" +msgstr "exporter" + +#: addons/ldapmanager/contentexport.tpl:3 +msgid "" +"The LDIF export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as ldif. You may save these files for backup " +"purpose or when initializing a new server." +msgstr "" +"L'extension d'exportation au format LDIF permet de télécharger une copie " +"complète de l'annuaire LDAP au format ldif. Ces fichiers peuvent être " +"utilisés à des fins de sauvegarde ou lors de la mise en place d'un nouveau " +"serveur." + +#: addons/ldapmanager/contentexport.tpl:21 +msgid "Export complete LDIF for" +msgstr "Exporter un fichier LDIF complet pour " + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the complete LDAP database to a file" +msgstr "Cliquez ici pour sauvegarder l'annuaire LDAP dans un fichier" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the LDAP Export " +msgstr "Cliquez ici pour exporter l'annuaire LDAP " + +#: addons/ldapmanager/class_exportxls.inc:6 +msgid "XLS import" +msgstr "Importer un fichier XLS" + +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_export.inc:84 +msgid "Cannot export selected entries!" +msgstr "Impossible d'exporter les entrées séléctionnées !" + +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_export.inc:96 +#, php-format +msgid "You have no permission to export '%s'!" +msgstr "Vous n'avez pas l'autorisation d'exporter '%s' !" + +#: addons/ldapmanager/contentcsv.tpl:2 +msgid "" +"The CSV import plugin provides methods to generate user accounts from a file " +"containing Comma Seperated Values. The administrator can decide which " +"columns should be transfered to which attribute. Note that you must have at " +"least the UID, GIVENNAME and SURENAME set." +msgstr "" +"L'extension CSV permet de générer des comptes utilisateurs depuis un fichier " +"contenant des valeurs séparées par des virgules. L'administrateur peut " +"choisir quelle colonne doivent être transférées vers quel attribut. Notez " +"que vous devez au moins avoir le UID, GIVENNAME et SURENAME fournis." + +#: addons/ldapmanager/contentcsv.tpl:10 +msgid "Select CSV file to import" +msgstr "Sélectionnez le fichier CSV à importer" + +#: addons/ldapmanager/contentcsv.tpl:19 +msgid "Select template" +msgstr "Sélectionnez le modèle" + +#: addons/ldapmanager/contentcsv.tpl:34 +msgid "All entries have been written to the LDAP database successfully." +msgstr "Toutes les entrées on été écrites correctement dans l'arbre LDAP." + +#: addons/ldapmanager/contentcsv.tpl:36 +msgid "Oups. There was an error during the import of your data." +msgstr "Oups. Il à eu une erreur lors de l'importation de vos données." + +#: addons/ldapmanager/contentcsv.tpl:39 +msgid "Here is the status report for the import:" +msgstr "Voici le rapport de votre importation de données :" + +#: addons/ldapmanager/contentcsv.tpl:80 +msgid "Selected Template" +msgstr "Modèle sélectionné" + +#: addons/ldapmanager/class_csvimport.inc:105 +msgid "You've no permission to import CSV files." +msgstr "Vous n'avez pas les droits nécessaires pour effectuer des importations CSV." + +#: addons/ldapmanager/class_csvimport.inc:165 +msgid "Need at least 'sn', 'givenName' and 'uid' to create users." +msgstr "J'ai besoin d'un 'sn','givenName' et 'uid' pour créer des utilisateurs." + +#: addons/ldapmanager/class_csvimport.inc:213 +msgid "failed" +msgstr "échec" + +#: addons/ldapmanager/class_csvimport.inc:217 +msgid "ok" +msgstr "ok" + +#: addons/ldapmanager/class_csvimport.inc:281 +msgid "status" +msgstr "statut" + +#: addons/ldapmanager/class_csvimport.inc:285 +#, php-format +msgid "Cannot insert entry '%s'!" +msgstr "Impossible d'insèrer l'entrée '%s' !" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Information" +msgstr "Information" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Nothing to import!" +msgstr "Rien à importer !" + +#: addons/ldapmanager/class_csvimport.inc:494 +msgid "Cannot find CSV data in the selected file!" +msgstr "Impossible de trouver des données CSV dans le fichier selectionné !" + +#: addons/ldapmanager/class_export.inc:6 +msgid "CSV import" +msgstr "Importation CSV" + diff --git a/trunk/gosa-plugins/ldapmanager/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/ldapmanager/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ee0fa8381 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,554 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: html/getldif.php:82 html/getxls.php:493 +#: addons/ldapmanager/class_import.inc:52 +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_csvimport.inc:105 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy +msgid "Permission error" +msgstr "Permessi" + +#: html/getldif.php:82 +#, fuzzy +msgid "You have no permission to create LDAP dumps!" +msgstr "Non hai il permesso di cambiare la tua password." + +#: html/getldif.php:107 +#, fuzzy +msgid "Error in ivbb parameter!" +msgstr "Parametro" + +#: html/getxls.php:88 +msgid "Birthday" +msgstr "" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Sex" +msgstr "Sesso" + +#: html/getxls.php:88 html/getxls.php:229 html/getxls.php:283 +#: html/getxls.php:299 html/getxls.php:303 +msgid "Surname" +msgstr "Cognome" + +#: html/getxls.php:88 html/getxls.php:225 html/getxls.php:283 +#: html/getxls.php:299 +msgid "Given name" +msgstr "Nome" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Language" +msgstr "Lingua" + +#: html/getxls.php:91 html/getxls.php:92 html/getxls.php:310 +msgid "Users" +msgstr "Utenti" + +#: html/getxls.php:96 html/getxls.php:343 +#, php-format +msgid "User list of %s on %s" +msgstr "Lista degli utenti di %s su %s" + +#: html/getxls.php:102 html/getxls.php:137 html/getxls.php:160 +#: html/getxls.php:349 html/getxls.php:366 +msgid "User ID" +msgstr "" + +#: html/getxls.php:123 html/getxls.php:286 +msgid "Members" +msgstr "Membri" + +#: html/getxls.php:126 html/getxls.php:128 html/getxls.php:311 +msgid "Groups" +msgstr "Gruppi di utenti" + +#: html/getxls.php:133 html/getxls.php:362 +#, php-format +msgid "Groups of %s on %s" +msgstr "Gruppi di %s su %s" + +#: html/getxls.php:157 html/getxls.php:190 html/getxls.php:192 +#: html/getxls.php:199 html/getxls.php:235 html/getxls.php:312 +#: html/getxls.php:383 +#, fuzzy +msgid "Servers" +msgstr "Server" + +#: html/getxls.php:160 html/getxls.php:289 +msgid "Description" +msgstr "Descrizione" + +#: html/getxls.php:161 html/getxls.php:313 +msgid "Computers" +msgstr "Computer" + +#: html/getxls.php:171 html/getxls.php:224 html/getxls.php:403 +#: html/getxls.php:423 +msgid "Common name" +msgstr "Nome comune" + +#: html/getxls.php:187 +#, fuzzy +msgid "Server name" +msgstr "Server" + +#: html/getxls.php:197 html/getxls.php:381 +#, php-format +msgid "Servers of %s on %s" +msgstr "Server di %s su %s" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Display name" +msgstr "Mostra il nome" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Fax" +msgstr "Fax" + +#: html/getxls.php:225 html/getxls.php:292 +msgid "Name" +msgstr "Cognome" + +#: html/getxls.php:225 +msgid "Home phone" +msgstr "Telefono privato" + +#: html/getxls.php:226 +msgid "Home postal address" +msgstr "" + +#: html/getxls.php:226 html/getxls.php:300 +msgid "Initials" +msgstr "Iniziali" + +#: html/getxls.php:226 +msgid "Location" +msgstr "Località" + +#: html/getxls.php:227 +msgid "Mail address" +msgstr "Indirizzo principale" + +#: html/getxls.php:227 +msgid "Mobile phone" +msgstr "Cellulare" + +#: html/getxls.php:227 html/getxls.php:300 +msgid "City" +msgstr "Città" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Postal address" +msgstr "CAP" + +#: html/getxls.php:228 html/getxls.php:302 +msgid "Pager" +msgstr "Pager" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Phone number" +msgstr "Numero di telefono" + +#: html/getxls.php:229 +msgid "Address" +msgstr "Indirizzo" + +#: html/getxls.php:229 +msgid "Postal code" +msgstr "CAP" + +#: html/getxls.php:230 html/getxls.php:303 +msgid "State" +msgstr "Stato" + +#: html/getxls.php:230 +msgid "Function" +msgstr "Funzione" + +#: html/getxls.php:233 html/getxls.php:314 +msgid "Adressbook" +msgstr "Rubrica" + +#: html/getxls.php:240 html/getxls.php:416 +#, php-format +msgid "Adressbook of %s on %s" +msgstr "Rubrica di %s su %s" + +#: html/getxls.php:246 +msgid "Common Name" +msgstr "Nome comune" + +#: html/getxls.php:283 +msgid "Day of birth" +msgstr "Data di nascita" + +#: html/getxls.php:289 +msgid "UID" +msgstr "UID" + +#: html/getxls.php:301 +msgid "Email address" +msgstr "Indirizzo principale" + +#: html/getxls.php:301 +msgid "Mobile" +msgstr "Cellulare" + +#: html/getxls.php:301 +msgid "Organization" +msgstr "Organizzazione" + +#: html/getxls.php:301 +msgid "Organizational unit" +msgstr "Unità del'organizzazione" + +#: html/getxls.php:302 +msgid "Postal Code" +msgstr "CAP" + +#: html/getxls.php:303 +msgid "Title" +msgstr "Titolo" + +#: html/getxls.php:306 +msgid "Full" +msgstr "" + +#: html/getxls.php:397 +#, php-format +msgid "Computers of %s on %s" +msgstr "Computer di %s su %s" + +#: html/getxls.php:493 +#, fuzzy +msgid "You have no permission to do LDAP exports!" +msgstr "Non hai il permesso di cambiare la tua password." + +#: addons/ldapmanager/class_import.inc:6 +#: addons/ldapmanager/class_csvimport.inc:6 +msgid "LDIF export" +msgstr "Esporta in LDIF" + +#: addons/ldapmanager/class_import.inc:7 addons/ldapmanager/class_ldif.inc:7 +#: addons/ldapmanager/class_exportxls.inc:7 +#: addons/ldapmanager/class_csvimport.inc:7 +#: addons/ldapmanager/class_export.inc:7 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: addons/ldapmanager/class_import.inc:52 +msgid "You need full write access to the LDAP tree to import data!" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_csvimport.inc:165 +#: addons/ldapmanager/class_csvimport.inc:285 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#: addons/ldapmanager/class_csvimport.inc:494 +#: addons/ldapmanager/class_export.inc:84 +msgid "Error" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#, fuzzy, php-format +msgid "Cannot read uploaded file: %s" +msgstr "Rimuovi" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_csvimport.inc:340 +#, fuzzy +msgid "file is empty" +msgstr "Rimuovi" + +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:346 +#, fuzzy +msgid "file not found" +msgstr "Cognome" + +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:351 +msgid "file not readable" +msgstr "" + +#: addons/ldapmanager/class_import.inc:110 +#: addons/ldapmanager/class_import.inc:114 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: addons/ldapmanager/class_import.inc:118 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: addons/ldapmanager/class_import.inc:118 +#, php-format +msgid "Undefined flag '%s'!" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:3 +msgid "" +"The LDIF import plugin provides methods to upload a set of entries to your " +"running LDAP directory as ldif. You may use this to add new or modify " +"existing entries. Remember that GOsa will not check your ldifs for GOsa " +"conformance." +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:10 +msgid "Import LDIF File" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:15 +#: addons/ldapmanager/contentcsv.tpl:14 +msgid "Browse" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:24 +msgid "Modify existing objects, keep untouched attributes" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:25 +msgid "Overwrite existing objects, all not listed attributes will be removed" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:34 +#, fuzzy +msgid "Remove existing entries first" +msgstr "Rimuovi le estensioni di posta" + +#: addons/ldapmanager/contentimport.tpl:41 +msgid "Import successful" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:50 +#: addons/ldapmanager/contentcsv.tpl:109 addons/ldapmanager/contentcsv.tpl:112 +msgid "Import" +msgstr "Importa" + +#: addons/ldapmanager/contentexportxls.tpl:3 +msgid "" +"The XLS export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as xls. You may save these files for " +"documentation." +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:10 +#: addons/ldapmanager/contentexport.tpl:10 +msgid "Export single entry" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:14 +msgid "Choose the data you want to Export" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:19 +#: addons/ldapmanager/contentexportxls.tpl:32 +#: addons/ldapmanager/contentexportxls.tpl:47 +#: addons/ldapmanager/contentexport.tpl:16 +#: addons/ldapmanager/contentexport.tpl:29 +#: addons/ldapmanager/contentexport.tpl:44 +msgid "Export" +msgstr "Esporta" + +#: addons/ldapmanager/contentexportxls.tpl:24 +msgid "Export complete XLS for" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:27 +#: addons/ldapmanager/contentexportxls.tpl:42 +#: addons/ldapmanager/contentexport.tpl:24 +#: addons/ldapmanager/contentexport.tpl:39 +msgid "Choose the department you want to Export" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:39 +#: addons/ldapmanager/contentexport.tpl:36 +msgid "Export IVBB LDIF for" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:58 +#: addons/ldapmanager/contentexport.tpl:55 +msgid "Export successful" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the complete LDAP database to a xls file" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the LDAP Export to a xls file" +msgstr "" + +#: addons/ldapmanager/class_ldif.inc:6 addons/ldapmanager/main.inc:49 +msgid "LDAP manager" +msgstr "Amministrazione LDAP" + +#: addons/ldapmanager/class_ldif.inc:35 addons/ldapmanager/class_ldif.inc:36 +#: addons/ldapmanager/class_ldif.inc:41 +#, fuzzy +msgid "Ldap manager" +msgstr "Amministrazione LDAP" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "import" +msgstr "Importa" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "export" +msgstr "Esporta" + +#: addons/ldapmanager/contentexport.tpl:3 +msgid "" +"The LDIF export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as ldif. You may save these files for backup " +"purpose or when initializing a new server." +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:21 +msgid "Export complete LDIF for" +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the complete LDAP database to a file" +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the LDAP Export " +msgstr "" + +#: addons/ldapmanager/class_exportxls.inc:6 +#, fuzzy +msgid "XLS import" +msgstr "Importa da formato CSV" + +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_export.inc:84 +#, fuzzy +msgid "Cannot export selected entries!" +msgstr "Gruppo di oggetti" + +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy, php-format +msgid "You have no permission to export '%s'!" +msgstr "Non hai il permesso di cambiare la tua password." + +#: addons/ldapmanager/contentcsv.tpl:2 +msgid "" +"The CSV import plugin provides methods to generate user accounts from a file " +"containing Comma Seperated Values. The administrator can decide which " +"columns should be transfered to which attribute. Note that you must have at " +"least the UID, GIVENNAME and SURENAME set." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:10 +msgid "Select CSV file to import" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:19 +msgid "Select template" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:34 +msgid "All entries have been written to the LDAP database successfully." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:36 +msgid "Oups. There was an error during the import of your data." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:39 +msgid "Here is the status report for the import:" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:80 +msgid "Selected Template" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:105 +#, fuzzy +msgid "You've no permission to import CSV files." +msgstr "Non hai il permesso di cambiare la tua password." + +#: addons/ldapmanager/class_csvimport.inc:165 +msgid "Need at least 'sn', 'givenName' and 'uid' to create users." +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:213 +msgid "failed" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:217 +msgid "ok" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:281 +msgid "status" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:285 +#, fuzzy, php-format +msgid "Cannot insert entry '%s'!" +msgstr "Rimuovi" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Information" +msgstr "Informazioni" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Nothing to import!" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:494 +msgid "Cannot find CSV data in the selected file!" +msgstr "" + +#: addons/ldapmanager/class_export.inc:6 +msgid "CSV import" +msgstr "Importa da formato CSV" + +#, fuzzy +#~ msgid "Ldap manger" +#~ msgstr "Amministrazione LDAP" + +#~ msgid "Surename" +#~ msgstr "Cognome" + +#~ msgid "Back" +#~ msgstr "Indietro" + +#, fuzzy +#~ msgid "Ldap manager addon" +#~ msgstr "Amministrazione LDAP" diff --git a/trunk/gosa-plugins/ldapmanager/locale/messages.po b/trunk/gosa-plugins/ldapmanager/locale/messages.po new file mode 100644 index 000000000..d98b3fae6 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/locale/messages.po @@ -0,0 +1,524 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/getldif.php:82 html/getxls.php:493 +#: addons/ldapmanager/class_import.inc:52 +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_csvimport.inc:105 +#: addons/ldapmanager/class_export.inc:96 +msgid "Permission error" +msgstr "" + +#: html/getldif.php:82 +msgid "You have no permission to create LDAP dumps!" +msgstr "" + +#: html/getldif.php:107 +msgid "Error in ivbb parameter!" +msgstr "" + +#: html/getxls.php:88 +msgid "Birthday" +msgstr "" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Sex" +msgstr "" + +#: html/getxls.php:88 html/getxls.php:229 html/getxls.php:283 +#: html/getxls.php:299 html/getxls.php:303 +msgid "Surname" +msgstr "" + +#: html/getxls.php:88 html/getxls.php:225 html/getxls.php:283 +#: html/getxls.php:299 +msgid "Given name" +msgstr "" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Language" +msgstr "" + +#: html/getxls.php:91 html/getxls.php:92 html/getxls.php:310 +msgid "Users" +msgstr "" + +#: html/getxls.php:96 html/getxls.php:343 +#, php-format +msgid "User list of %s on %s" +msgstr "" + +#: html/getxls.php:102 html/getxls.php:137 html/getxls.php:160 +#: html/getxls.php:349 html/getxls.php:366 +msgid "User ID" +msgstr "" + +#: html/getxls.php:123 html/getxls.php:286 +msgid "Members" +msgstr "" + +#: html/getxls.php:126 html/getxls.php:128 html/getxls.php:311 +msgid "Groups" +msgstr "" + +#: html/getxls.php:133 html/getxls.php:362 +#, php-format +msgid "Groups of %s on %s" +msgstr "" + +#: html/getxls.php:157 html/getxls.php:190 html/getxls.php:192 +#: html/getxls.php:199 html/getxls.php:235 html/getxls.php:312 +#: html/getxls.php:383 +msgid "Servers" +msgstr "" + +#: html/getxls.php:160 html/getxls.php:289 +msgid "Description" +msgstr "" + +#: html/getxls.php:161 html/getxls.php:313 +msgid "Computers" +msgstr "" + +#: html/getxls.php:171 html/getxls.php:224 html/getxls.php:403 +#: html/getxls.php:423 +msgid "Common name" +msgstr "" + +#: html/getxls.php:187 +msgid "Server name" +msgstr "" + +#: html/getxls.php:197 html/getxls.php:381 +#, php-format +msgid "Servers of %s on %s" +msgstr "" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Display name" +msgstr "" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Fax" +msgstr "" + +#: html/getxls.php:225 html/getxls.php:292 +msgid "Name" +msgstr "" + +#: html/getxls.php:225 +msgid "Home phone" +msgstr "" + +#: html/getxls.php:226 +msgid "Home postal address" +msgstr "" + +#: html/getxls.php:226 html/getxls.php:300 +msgid "Initials" +msgstr "" + +#: html/getxls.php:226 +msgid "Location" +msgstr "" + +#: html/getxls.php:227 +msgid "Mail address" +msgstr "" + +#: html/getxls.php:227 +msgid "Mobile phone" +msgstr "" + +#: html/getxls.php:227 html/getxls.php:300 +msgid "City" +msgstr "" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Postal address" +msgstr "" + +#: html/getxls.php:228 html/getxls.php:302 +msgid "Pager" +msgstr "" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Phone number" +msgstr "" + +#: html/getxls.php:229 +msgid "Address" +msgstr "" + +#: html/getxls.php:229 +msgid "Postal code" +msgstr "" + +#: html/getxls.php:230 html/getxls.php:303 +msgid "State" +msgstr "" + +#: html/getxls.php:230 +msgid "Function" +msgstr "" + +#: html/getxls.php:233 html/getxls.php:314 +msgid "Adressbook" +msgstr "" + +#: html/getxls.php:240 html/getxls.php:416 +#, php-format +msgid "Adressbook of %s on %s" +msgstr "" + +#: html/getxls.php:246 +msgid "Common Name" +msgstr "" + +#: html/getxls.php:283 +msgid "Day of birth" +msgstr "" + +#: html/getxls.php:289 +msgid "UID" +msgstr "" + +#: html/getxls.php:301 +msgid "Email address" +msgstr "" + +#: html/getxls.php:301 +msgid "Mobile" +msgstr "" + +#: html/getxls.php:301 +msgid "Organization" +msgstr "" + +#: html/getxls.php:301 +msgid "Organizational unit" +msgstr "" + +#: html/getxls.php:302 +msgid "Postal Code" +msgstr "" + +#: html/getxls.php:303 +msgid "Title" +msgstr "" + +#: html/getxls.php:306 +msgid "Full" +msgstr "" + +#: html/getxls.php:397 +#, php-format +msgid "Computers of %s on %s" +msgstr "" + +#: html/getxls.php:493 +msgid "You have no permission to do LDAP exports!" +msgstr "" + +#: addons/ldapmanager/class_import.inc:6 +#: addons/ldapmanager/class_csvimport.inc:6 +msgid "LDIF export" +msgstr "" + +#: addons/ldapmanager/class_import.inc:7 addons/ldapmanager/class_ldif.inc:7 +#: addons/ldapmanager/class_exportxls.inc:7 +#: addons/ldapmanager/class_csvimport.inc:7 +#: addons/ldapmanager/class_export.inc:7 +msgid "This does something" +msgstr "" + +#: addons/ldapmanager/class_import.inc:52 +msgid "You need full write access to the LDAP tree to import data!" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_csvimport.inc:165 +#: addons/ldapmanager/class_csvimport.inc:285 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#: addons/ldapmanager/class_csvimport.inc:494 +#: addons/ldapmanager/class_export.inc:84 +msgid "Error" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#, php-format +msgid "Cannot read uploaded file: %s" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_csvimport.inc:340 +msgid "file is empty" +msgstr "" + +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:346 +msgid "file not found" +msgstr "" + +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:351 +msgid "file not readable" +msgstr "" + +#: addons/ldapmanager/class_import.inc:110 +#: addons/ldapmanager/class_import.inc:114 +msgid "LDAP error" +msgstr "" + +#: addons/ldapmanager/class_import.inc:118 +msgid "Internal error" +msgstr "" + +#: addons/ldapmanager/class_import.inc:118 +#, php-format +msgid "Undefined flag '%s'!" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:3 +msgid "" +"The LDIF import plugin provides methods to upload a set of entries to your " +"running LDAP directory as ldif. You may use this to add new or modify " +"existing entries. Remember that GOsa will not check your ldifs for GOsa " +"conformance." +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:10 +msgid "Import LDIF File" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:15 +#: addons/ldapmanager/contentcsv.tpl:14 +msgid "Browse" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:24 +msgid "Modify existing objects, keep untouched attributes" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:25 +msgid "Overwrite existing objects, all not listed attributes will be removed" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:34 +msgid "Remove existing entries first" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:41 +msgid "Import successful" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:50 +#: addons/ldapmanager/contentcsv.tpl:109 addons/ldapmanager/contentcsv.tpl:112 +msgid "Import" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:3 +msgid "" +"The XLS export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as xls. You may save these files for " +"documentation." +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:10 +#: addons/ldapmanager/contentexport.tpl:10 +msgid "Export single entry" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:14 +msgid "Choose the data you want to Export" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:19 +#: addons/ldapmanager/contentexportxls.tpl:32 +#: addons/ldapmanager/contentexportxls.tpl:47 +#: addons/ldapmanager/contentexport.tpl:16 +#: addons/ldapmanager/contentexport.tpl:29 +#: addons/ldapmanager/contentexport.tpl:44 +msgid "Export" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:24 +msgid "Export complete XLS for" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:27 +#: addons/ldapmanager/contentexportxls.tpl:42 +#: addons/ldapmanager/contentexport.tpl:24 +#: addons/ldapmanager/contentexport.tpl:39 +msgid "Choose the department you want to Export" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:39 +#: addons/ldapmanager/contentexport.tpl:36 +msgid "Export IVBB LDIF for" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:58 +#: addons/ldapmanager/contentexport.tpl:55 +msgid "Export successful" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the complete LDAP database to a xls file" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the LDAP Export to a xls file" +msgstr "" + +#: addons/ldapmanager/class_ldif.inc:6 addons/ldapmanager/main.inc:49 +msgid "LDAP manager" +msgstr "" + +#: addons/ldapmanager/class_ldif.inc:35 addons/ldapmanager/class_ldif.inc:36 +#: addons/ldapmanager/class_ldif.inc:41 +msgid "Ldap manager" +msgstr "" + +#: addons/ldapmanager/class_ldif.inc:36 +msgid "import" +msgstr "" + +#: addons/ldapmanager/class_ldif.inc:36 +msgid "export" +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:3 +msgid "" +"The LDIF export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as ldif. You may save these files for backup " +"purpose or when initializing a new server." +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:21 +msgid "Export complete LDIF for" +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the complete LDAP database to a file" +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the LDAP Export " +msgstr "" + +#: addons/ldapmanager/class_exportxls.inc:6 +msgid "XLS import" +msgstr "" + +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_export.inc:84 +msgid "Cannot export selected entries!" +msgstr "" + +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_export.inc:96 +#, php-format +msgid "You have no permission to export '%s'!" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:2 +msgid "" +"The CSV import plugin provides methods to generate user accounts from a file " +"containing Comma Seperated Values. The administrator can decide which " +"columns should be transfered to which attribute. Note that you must have at " +"least the UID, GIVENNAME and SURENAME set." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:10 +msgid "Select CSV file to import" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:19 +msgid "Select template" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:34 +msgid "All entries have been written to the LDAP database successfully." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:36 +msgid "Oups. There was an error during the import of your data." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:39 +msgid "Here is the status report for the import:" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:80 +msgid "Selected Template" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:105 +msgid "You've no permission to import CSV files." +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:165 +msgid "Need at least 'sn', 'givenName' and 'uid' to create users." +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:213 +msgid "failed" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:217 +msgid "ok" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:281 +msgid "status" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:285 +#, php-format +msgid "Cannot insert entry '%s'!" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Information" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Nothing to import!" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:494 +msgid "Cannot find CSV data in the selected file!" +msgstr "" + +#: addons/ldapmanager/class_export.inc:6 +msgid "CSV import" +msgstr "" diff --git a/trunk/gosa-plugins/ldapmanager/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/ldapmanager/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e05e2efeb --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,573 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/getldif.php:82 html/getxls.php:493 +#: addons/ldapmanager/class_import.inc:52 +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_csvimport.inc:105 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy +msgid "Permission error" +msgstr "Rechten" + +#: html/getldif.php:82 +#, fuzzy +msgid "You have no permission to create LDAP dumps!" +msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#: html/getldif.php:107 +#, fuzzy +msgid "Error in ivbb parameter!" +msgstr "Controleer parameter" + +#: html/getxls.php:88 +msgid "Birthday" +msgstr "Geboortedatum" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Sex" +msgstr "Geslacht" + +#: html/getxls.php:88 html/getxls.php:229 html/getxls.php:283 +#: html/getxls.php:299 html/getxls.php:303 +msgid "Surname" +msgstr "Achternaam" + +#: html/getxls.php:88 html/getxls.php:225 html/getxls.php:283 +#: html/getxls.php:299 +msgid "Given name" +msgstr "Naam" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Language" +msgstr "Taal" + +#: html/getxls.php:91 html/getxls.php:92 html/getxls.php:310 +msgid "Users" +msgstr "Gebruikers" + +#: html/getxls.php:96 html/getxls.php:343 +#, php-format +msgid "User list of %s on %s" +msgstr "Gebruikerslijst van %s in %s " + +#: html/getxls.php:102 html/getxls.php:137 html/getxls.php:160 +#: html/getxls.php:349 html/getxls.php:366 +msgid "User ID" +msgstr "Gebruikers ID" + +#: html/getxls.php:123 html/getxls.php:286 +msgid "Members" +msgstr "Groepsleden" + +#: html/getxls.php:126 html/getxls.php:128 html/getxls.php:311 +msgid "Groups" +msgstr "Groepen" + +#: html/getxls.php:133 html/getxls.php:362 +#, php-format +msgid "Groups of %s on %s" +msgstr "Groepen van %s in %s" + +#: html/getxls.php:157 html/getxls.php:190 html/getxls.php:192 +#: html/getxls.php:199 html/getxls.php:235 html/getxls.php:312 +#: html/getxls.php:383 +msgid "Servers" +msgstr "Servers" + +#: html/getxls.php:160 html/getxls.php:289 +msgid "Description" +msgstr "Omschrijving" + +#: html/getxls.php:161 html/getxls.php:313 +msgid "Computers" +msgstr "Computers" + +#: html/getxls.php:171 html/getxls.php:224 html/getxls.php:403 +#: html/getxls.php:423 +msgid "Common name" +msgstr "Algemene naam" + +#: html/getxls.php:187 +msgid "Server name" +msgstr "Servernaam" + +#: html/getxls.php:197 html/getxls.php:381 +#, php-format +msgid "Servers of %s on %s" +msgstr "Servers van %s in %s" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Display name" +msgstr "Getoonde naam" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Fax" +msgstr "Fax" + +#: html/getxls.php:225 html/getxls.php:292 +msgid "Name" +msgstr "Naam" + +#: html/getxls.php:225 +msgid "Home phone" +msgstr "Telefoon Privé" + +#: html/getxls.php:226 +msgid "Home postal address" +msgstr "Adres thuis" + +#: html/getxls.php:226 html/getxls.php:300 +msgid "Initials" +msgstr "Initialen" + +#: html/getxls.php:226 +msgid "Location" +msgstr "Plaats" + +#: html/getxls.php:227 +msgid "Mail address" +msgstr "E-mail adres" + +#: html/getxls.php:227 +msgid "Mobile phone" +msgstr "GSM nummer" + +#: html/getxls.php:227 html/getxls.php:300 +msgid "City" +msgstr "Plaats" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Postal address" +msgstr "Adres thuis" + +#: html/getxls.php:228 html/getxls.php:302 +msgid "Pager" +msgstr "Pieper" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Phone number" +msgstr "Telefoonnummer" + +#: html/getxls.php:229 +msgid "Address" +msgstr "Adres" + +#: html/getxls.php:229 +msgid "Postal code" +msgstr "Postcode" + +#: html/getxls.php:230 html/getxls.php:303 +msgid "State" +msgstr "Provincie" + +#: html/getxls.php:230 +msgid "Function" +msgstr "Functie" + +#: html/getxls.php:233 html/getxls.php:314 +msgid "Adressbook" +msgstr "Adresboek" + +#: html/getxls.php:240 html/getxls.php:416 +#, php-format +msgid "Adressbook of %s on %s" +msgstr "Adresboek van %s in %s" + +#: html/getxls.php:246 +msgid "Common Name" +msgstr "Algemene naam" + +#: html/getxls.php:283 +msgid "Day of birth" +msgstr "Geboortedatum" + +#: html/getxls.php:289 +msgid "UID" +msgstr "UID" + +#: html/getxls.php:301 +msgid "Email address" +msgstr "E-mail adres" + +#: html/getxls.php:301 +msgid "Mobile" +msgstr "GSM" + +#: html/getxls.php:301 +msgid "Organization" +msgstr "Organisatie" + +#: html/getxls.php:301 +msgid "Organizational unit" +msgstr "Afdeling" + +#: html/getxls.php:302 +msgid "Postal Code" +msgstr "Postcode" + +#: html/getxls.php:303 +msgid "Title" +msgstr "Titel" + +#: html/getxls.php:306 +msgid "Full" +msgstr "Volledig" + +#: html/getxls.php:397 +#, php-format +msgid "Computers of %s on %s" +msgstr "Computers van %s in %s" + +#: html/getxls.php:493 +#, fuzzy +msgid "You have no permission to do LDAP exports!" +msgstr "" +"U heeft geen toestemming om een gebruiker aan te maken onder deze 'Basis'." + +#: addons/ldapmanager/class_import.inc:6 +#: addons/ldapmanager/class_csvimport.inc:6 +msgid "LDIF export" +msgstr "LDIF export" + +#: addons/ldapmanager/class_import.inc:7 addons/ldapmanager/class_ldif.inc:7 +#: addons/ldapmanager/class_exportxls.inc:7 +#: addons/ldapmanager/class_csvimport.inc:7 +#: addons/ldapmanager/class_export.inc:7 +msgid "This does something" +msgstr "Dit doet iets" + +#: addons/ldapmanager/class_import.inc:52 +msgid "You need full write access to the LDAP tree to import data!" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_csvimport.inc:165 +#: addons/ldapmanager/class_csvimport.inc:285 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#: addons/ldapmanager/class_csvimport.inc:494 +#: addons/ldapmanager/class_export.inc:84 +msgid "Error" +msgstr "Fout" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#, fuzzy, php-format +msgid "Cannot read uploaded file: %s" +msgstr "Kan bestand '%s' niet aanmaken." + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_csvimport.inc:340 +#, fuzzy +msgid "file is empty" +msgstr "Het opgegeven bestand is leeg." + +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:346 +#, fuzzy +msgid "file not found" +msgstr "Bestandsnaam" + +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:351 +msgid "file not readable" +msgstr "" + +#: addons/ldapmanager/class_import.inc:110 +#: addons/ldapmanager/class_import.inc:114 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: addons/ldapmanager/class_import.inc:118 +#, fuzzy +msgid "Internal error" +msgstr "Terminal server" + +#: addons/ldapmanager/class_import.inc:118 +#, php-format +msgid "Undefined flag '%s'!" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:3 +msgid "" +"The LDIF import plugin provides methods to upload a set of entries to your " +"running LDAP directory as ldif. You may use this to add new or modify " +"existing entries. Remember that GOsa will not check your ldifs for GOsa " +"conformance." +msgstr "" +"De LDIF import module biedt mogelijkheden om gegevens binnen uw draaiende " +"LDAP database te importeren als een LDIF bestand. U kunt deze " +"functionaliteit gebruiken om gegevens toe te voegen of veranderen. Let op, " +"GOsa zal uw LDIF bestanden niet controleren op GOsa conformiteit!" + +#: addons/ldapmanager/contentimport.tpl:10 +msgid "Import LDIF File" +msgstr "Importeer LDIF bestand" + +#: addons/ldapmanager/contentimport.tpl:15 +#: addons/ldapmanager/contentcsv.tpl:14 +msgid "Browse" +msgstr "Doorzoek" + +#: addons/ldapmanager/contentimport.tpl:24 +#, fuzzy +msgid "Modify existing objects, keep untouched attributes" +msgstr "Verander bestaand atribuut" + +#: addons/ldapmanager/contentimport.tpl:25 +msgid "Overwrite existing objects, all not listed attributes will be removed" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:34 +#, fuzzy +msgid "Remove existing entries first" +msgstr "Het verwijderen van DNS regels is mislukt" + +#: addons/ldapmanager/contentimport.tpl:41 +msgid "Import successful" +msgstr "Import was succesvol" + +#: addons/ldapmanager/contentimport.tpl:50 +#: addons/ldapmanager/contentcsv.tpl:109 addons/ldapmanager/contentcsv.tpl:112 +msgid "Import" +msgstr "Importeren" + +#: addons/ldapmanager/contentexportxls.tpl:3 +msgid "" +"The XLS export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as xls. You may save these files for " +"documentation." +msgstr "" +"De XLS export module biedt mogelijkheden om de complete inhoud van uw LDAP " +"database te downloaden als een xls (Excel) bestand. U kunt deze bestanden " +"voor documentatie doeleinden opslaan." + +#: addons/ldapmanager/contentexportxls.tpl:10 +#: addons/ldapmanager/contentexport.tpl:10 +msgid "Export single entry" +msgstr "Exporteer een enkel record" + +#: addons/ldapmanager/contentexportxls.tpl:14 +msgid "Choose the data you want to Export" +msgstr "Selecteer de data die u wilt exporteren" + +#: addons/ldapmanager/contentexportxls.tpl:19 +#: addons/ldapmanager/contentexportxls.tpl:32 +#: addons/ldapmanager/contentexportxls.tpl:47 +#: addons/ldapmanager/contentexport.tpl:16 +#: addons/ldapmanager/contentexport.tpl:29 +#: addons/ldapmanager/contentexport.tpl:44 +msgid "Export" +msgstr "Exporteer" + +#: addons/ldapmanager/contentexportxls.tpl:24 +msgid "Export complete XLS for" +msgstr "Exporteer een compleet XLS voor" + +#: addons/ldapmanager/contentexportxls.tpl:27 +#: addons/ldapmanager/contentexportxls.tpl:42 +#: addons/ldapmanager/contentexport.tpl:24 +#: addons/ldapmanager/contentexport.tpl:39 +msgid "Choose the department you want to Export" +msgstr "Selecteer de afdeling die u wilt exporteren" + +#: addons/ldapmanager/contentexportxls.tpl:39 +#: addons/ldapmanager/contentexport.tpl:36 +msgid "Export IVBB LDIF for" +msgstr "Exporteer IVBB LDIF voor" + +#: addons/ldapmanager/contentexportxls.tpl:58 +#: addons/ldapmanager/contentexport.tpl:55 +msgid "Export successful" +msgstr "Export was succesvol" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the complete LDAP database to a xls file" +msgstr "Klik hier om de complete LDAP database op te slaan in een xls-bestand." + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the LDAP Export to a xls file" +msgstr "Klik hier om de LDAP export op te slaan in een xls-bestand." + +#: addons/ldapmanager/class_ldif.inc:6 addons/ldapmanager/main.inc:49 +msgid "LDAP manager" +msgstr "LDAP beheer" + +#: addons/ldapmanager/class_ldif.inc:35 addons/ldapmanager/class_ldif.inc:36 +#: addons/ldapmanager/class_ldif.inc:41 +#, fuzzy +msgid "Ldap manager" +msgstr "LDAP beheer" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "import" +msgstr "Importeren" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "export" +msgstr "Exporteer" + +#: addons/ldapmanager/contentexport.tpl:3 +msgid "" +"The LDIF export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as ldif. You may save these files for backup " +"purpose or when initializing a new server." +msgstr "" +"De LDIF export module biedt mogelijkheden om de complete inhoud van uw LDAP " +"database te downloaden als een LDIF bestand. U kunt deze bestanden voor " +"backup doeleinden opslaan of gebruiken voor het initialiseren van een nieuwe " +"server." + +#: addons/ldapmanager/contentexport.tpl:21 +msgid "Export complete LDIF for" +msgstr "Exporteer een complete LDIF voor" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the complete LDAP database to a file" +msgstr "Klik hier om de complete LDAP database op te slaan in een bestand." + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the LDAP Export " +msgstr "Klik hier om de LDAP export op te slaan in een bestand." + +#: addons/ldapmanager/class_exportxls.inc:6 +msgid "XLS import" +msgstr "XLS import" + +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_export.inc:84 +#, fuzzy +msgid "Cannot export selected entries!" +msgstr "Nieuw FAI object aanmaken" + +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy, php-format +msgid "You have no permission to export '%s'!" +msgstr "U heeft geen toestemming om LDAP gegevens te exporteren." + +#: addons/ldapmanager/contentcsv.tpl:2 +msgid "" +"The CSV import plugin provides methods to generate user accounts from a file " +"containing Comma Seperated Values. The administrator can decide which " +"columns should be transfered to which attribute. Note that you must have at " +"least the UID, GIVENNAME and SURENAME set." +msgstr "" +"De CSV import module bevat mothodes om gebruikers accounts aan te maken " +"vanuit een bestand met komma gescheiden waardes. De beheerder kan bepalen " +"welke kolommen vertaald moeten worden naar welke atributen. Merk op dat u " +"tenminste het UID, GIVENNAME en SURNAME atribuut dient in te stellen." + +#: addons/ldapmanager/contentcsv.tpl:10 +msgid "Select CSV file to import" +msgstr "Selecteer het te importeren CSV bestand" + +#: addons/ldapmanager/contentcsv.tpl:19 +msgid "Select template" +msgstr "Selecteer sjabloon" + +#: addons/ldapmanager/contentcsv.tpl:34 +msgid "All entries have been written to the LDAP database successfully." +msgstr "Alle gegevens zijn succesvol naar de LDAP database weggeschreven." + +#: addons/ldapmanager/contentcsv.tpl:36 +msgid "Oups. There was an error during the import of your data." +msgstr "Oeps. Er is een fout opgetreden bij het importeren van uw data." + +#: addons/ldapmanager/contentcsv.tpl:39 +msgid "Here is the status report for the import:" +msgstr "Hier is het statusraport voor de import:" + +#: addons/ldapmanager/contentcsv.tpl:80 +msgid "Selected Template" +msgstr "Geselecteerd Sjabloon" + +#: addons/ldapmanager/class_csvimport.inc:105 +#, fuzzy +msgid "You've no permission to import CSV files." +msgstr "U heeft geen toestemming om CSV gegevens te importeren." + +#: addons/ldapmanager/class_csvimport.inc:165 +#, fuzzy +msgid "Need at least 'sn', 'givenName' and 'uid' to create users." +msgstr "'sn', 'givenName' en 'uid' zijn nodig om een gebruiker aan te maken" + +#: addons/ldapmanager/class_csvimport.inc:213 +msgid "failed" +msgstr "mislukt" + +#: addons/ldapmanager/class_csvimport.inc:217 +msgid "ok" +msgstr "okee" + +#: addons/ldapmanager/class_csvimport.inc:281 +msgid "status" +msgstr "status" + +#: addons/ldapmanager/class_csvimport.inc:285 +#, fuzzy, php-format +msgid "Cannot insert entry '%s'!" +msgstr "Onbekende FAI status %s" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Information" +msgstr "Informatie" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Nothing to import!" +msgstr "Er is niets te importeren!" + +#: addons/ldapmanager/class_csvimport.inc:494 +msgid "Cannot find CSV data in the selected file!" +msgstr "" + +#: addons/ldapmanager/class_export.inc:6 +msgid "CSV import" +msgstr "CSV import" + +#, fuzzy +#~ msgid "Ldap manger" +#~ msgstr "LDAP beheer" + +#~ msgid "Surename" +#~ msgstr "Achternaam" + +#~ msgid "Back" +#~ msgstr "Terug" + +#, fuzzy +#~ msgid "Ldap manager addon" +#~ msgstr "LDAP beheer" diff --git a/trunk/gosa-plugins/ldapmanager/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/ldapmanager/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..31b061ece --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,564 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: html/getldif.php:82 html/getxls.php:493 +#: addons/ldapmanager/class_import.inc:52 +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_csvimport.inc:105 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy +msgid "Permission error" +msgstr "Uprawnienia" + +#: html/getldif.php:82 +#, fuzzy +msgid "You have no permission to create LDAP dumps!" +msgstr "Brak uprawnień do usunięcia tego departamentu." + +#: html/getldif.php:107 +#, fuzzy +msgid "Error in ivbb parameter!" +msgstr "Parametr kernela" + +#: html/getxls.php:88 +msgid "Birthday" +msgstr "Urodziny" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Sex" +msgstr "Płeć" + +#: html/getxls.php:88 html/getxls.php:229 html/getxls.php:283 +#: html/getxls.php:299 html/getxls.php:303 +msgid "Surname" +msgstr "Nazwisko" + +#: html/getxls.php:88 html/getxls.php:225 html/getxls.php:283 +#: html/getxls.php:299 +msgid "Given name" +msgstr "Imię" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Language" +msgstr "Język" + +#: html/getxls.php:91 html/getxls.php:92 html/getxls.php:310 +msgid "Users" +msgstr "Użytkownicy" + +#: html/getxls.php:96 html/getxls.php:343 +#, php-format +msgid "User list of %s on %s" +msgstr "Lista użytkowników %s na %s" + +#: html/getxls.php:102 html/getxls.php:137 html/getxls.php:160 +#: html/getxls.php:349 html/getxls.php:366 +msgid "User ID" +msgstr "Identyfikator użytkownika" + +#: html/getxls.php:123 html/getxls.php:286 +msgid "Members" +msgstr "Członkowie" + +#: html/getxls.php:126 html/getxls.php:128 html/getxls.php:311 +msgid "Groups" +msgstr "Grupy" + +#: html/getxls.php:133 html/getxls.php:362 +#, php-format +msgid "Groups of %s on %s" +msgstr "Grupy %s na %s" + +#: html/getxls.php:157 html/getxls.php:190 html/getxls.php:192 +#: html/getxls.php:199 html/getxls.php:235 html/getxls.php:312 +#: html/getxls.php:383 +msgid "Servers" +msgstr "Serwery" + +#: html/getxls.php:160 html/getxls.php:289 +msgid "Description" +msgstr "Opis" + +#: html/getxls.php:161 html/getxls.php:313 +msgid "Computers" +msgstr "Komputery" + +#: html/getxls.php:171 html/getxls.php:224 html/getxls.php:403 +#: html/getxls.php:423 +msgid "Common name" +msgstr "Nazwa potoczna" + +#: html/getxls.php:187 +msgid "Server name" +msgstr "Nazwa serwera" + +#: html/getxls.php:197 html/getxls.php:381 +#, php-format +msgid "Servers of %s on %s" +msgstr "Serwery %s na %s" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Display name" +msgstr "Wyświetl nazwę" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Fax" +msgstr "Fax" + +#: html/getxls.php:225 html/getxls.php:292 +msgid "Name" +msgstr "Imię" + +#: html/getxls.php:225 +msgid "Home phone" +msgstr "Telefon domowy" + +#: html/getxls.php:226 +msgid "Home postal address" +msgstr "Adres domowy" + +#: html/getxls.php:226 html/getxls.php:300 +msgid "Initials" +msgstr "Inicjały" + +#: html/getxls.php:226 +msgid "Location" +msgstr "Lokalizacja" + +#: html/getxls.php:227 +msgid "Mail address" +msgstr "Adres email" + +#: html/getxls.php:227 +msgid "Mobile phone" +msgstr "Telefon komórkowy" + +#: html/getxls.php:227 html/getxls.php:300 +msgid "City" +msgstr "Miasto" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Postal address" +msgstr "Adres pocztowy" + +#: html/getxls.php:228 html/getxls.php:302 +msgid "Pager" +msgstr "Pager" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Phone number" +msgstr "Numer telefonu" + +#: html/getxls.php:229 +msgid "Address" +msgstr "Adres" + +#: html/getxls.php:229 +msgid "Postal code" +msgstr "Kod pocztowy" + +#: html/getxls.php:230 html/getxls.php:303 +msgid "State" +msgstr "Stan" + +#: html/getxls.php:230 +msgid "Function" +msgstr "Funkcja" + +#: html/getxls.php:233 html/getxls.php:314 +msgid "Adressbook" +msgstr "Książka adresowa" + +#: html/getxls.php:240 html/getxls.php:416 +#, php-format +msgid "Adressbook of %s on %s" +msgstr "Książka adresowa %s na %s" + +#: html/getxls.php:246 +msgid "Common Name" +msgstr "Zwykła nazwa" + +#: html/getxls.php:283 +msgid "Day of birth" +msgstr "Data urodzenia" + +#: html/getxls.php:289 +msgid "UID" +msgstr "UID" + +#: html/getxls.php:301 +msgid "Email address" +msgstr "Adres email" + +#: html/getxls.php:301 +msgid "Mobile" +msgstr "Komórka" + +#: html/getxls.php:301 +msgid "Organization" +msgstr "Organizacja" + +#: html/getxls.php:301 +msgid "Organizational unit" +msgstr "Jednostka organizacyjna" + +#: html/getxls.php:302 +msgid "Postal Code" +msgstr "Kod Pocztowy" + +#: html/getxls.php:303 +msgid "Title" +msgstr "Tytuł" + +#: html/getxls.php:306 +msgid "Full" +msgstr "Pełne" + +#: html/getxls.php:397 +#, php-format +msgid "Computers of %s on %s" +msgstr "Komputery %s na %s" + +#: html/getxls.php:493 +#, fuzzy +msgid "You have no permission to do LDAP exports!" +msgstr "Brak uprawnień do wysyłania wiadomości!" + +#: addons/ldapmanager/class_import.inc:6 +#: addons/ldapmanager/class_csvimport.inc:6 +msgid "LDIF export" +msgstr "export LDIF" + +#: addons/ldapmanager/class_import.inc:7 addons/ldapmanager/class_ldif.inc:7 +#: addons/ldapmanager/class_exportxls.inc:7 +#: addons/ldapmanager/class_csvimport.inc:7 +#: addons/ldapmanager/class_export.inc:7 +msgid "This does something" +msgstr "To robi coś" + +#: addons/ldapmanager/class_import.inc:52 +msgid "You need full write access to the LDAP tree to import data!" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_csvimport.inc:165 +#: addons/ldapmanager/class_csvimport.inc:285 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#: addons/ldapmanager/class_csvimport.inc:494 +#: addons/ldapmanager/class_export.inc:84 +msgid "Error" +msgstr "Błąd" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#, fuzzy, php-format +msgid "Cannot read uploaded file: %s" +msgstr "Nie można stworzyć pliku '%s'." + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_csvimport.inc:340 +#, fuzzy +msgid "file is empty" +msgstr "Wybrany plik jest pusty" + +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:346 +#, fuzzy +msgid "file not found" +msgstr "Właściciel pliku" + +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:351 +msgid "file not readable" +msgstr "" + +#: addons/ldapmanager/class_import.inc:110 +#: addons/ldapmanager/class_import.inc:114 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: addons/ldapmanager/class_import.inc:118 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: addons/ldapmanager/class_import.inc:118 +#, php-format +msgid "Undefined flag '%s'!" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:3 +msgid "" +"The LDIF import plugin provides methods to upload a set of entries to your " +"running LDAP directory as ldif. You may use this to add new or modify " +"existing entries. Remember that GOsa will not check your ldifs for GOsa " +"conformance." +msgstr "" +"Import LDIF umożliwia wprowadzenie zestawu wpisów do działającego katalogu " +"LDAP jako ldif. Można użyć tej funkcjonalności aby dodać nowe lub " +"zmodyfikować isniejące wpisy. Pamiętaj, że GOsa nie sprawdza zgodności ldif " +"z systemem GOsa." + +#: addons/ldapmanager/contentimport.tpl:10 +msgid "Import LDIF File" +msgstr "Importuj plik LDIF" + +#: addons/ldapmanager/contentimport.tpl:15 +#: addons/ldapmanager/contentcsv.tpl:14 +msgid "Browse" +msgstr "Przeglądaj" + +#: addons/ldapmanager/contentimport.tpl:24 +msgid "Modify existing objects, keep untouched attributes" +msgstr " Zmień istniejące obiekty, zachowaj nienaruszone atrybuty" + +#: addons/ldapmanager/contentimport.tpl:25 +msgid "Overwrite existing objects, all not listed attributes will be removed" +msgstr "" +"Nadpisz istniejące obiekty, wszystkie wyświetlone atrybuty zostaną usunięte" + +#: addons/ldapmanager/contentimport.tpl:34 +msgid "Remove existing entries first" +msgstr "Najpierw usuń istniejące wpisy" + +#: addons/ldapmanager/contentimport.tpl:41 +msgid "Import successful" +msgstr "Import powiódł się" + +#: addons/ldapmanager/contentimport.tpl:50 +#: addons/ldapmanager/contentcsv.tpl:109 addons/ldapmanager/contentcsv.tpl:112 +msgid "Import" +msgstr "Import" + +#: addons/ldapmanager/contentexportxls.tpl:3 +msgid "" +"The XLS export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as xls. You may save these files for " +"documentation." +msgstr "" +"Dodatek export XLS umożliwia ściąganie snapshot'u działającego katalogu LDAP " +"jalo xls. Można zapisać te pliki dla dokumentacji." + +#: addons/ldapmanager/contentexportxls.tpl:10 +#: addons/ldapmanager/contentexport.tpl:10 +msgid "Export single entry" +msgstr "Eksportuj pojedynczy wpis" + +#: addons/ldapmanager/contentexportxls.tpl:14 +msgid "Choose the data you want to Export" +msgstr "Wybierz dane które chcesz eksportować" + +#: addons/ldapmanager/contentexportxls.tpl:19 +#: addons/ldapmanager/contentexportxls.tpl:32 +#: addons/ldapmanager/contentexportxls.tpl:47 +#: addons/ldapmanager/contentexport.tpl:16 +#: addons/ldapmanager/contentexport.tpl:29 +#: addons/ldapmanager/contentexport.tpl:44 +msgid "Export" +msgstr "Export" + +#: addons/ldapmanager/contentexportxls.tpl:24 +msgid "Export complete XLS for" +msgstr "Eksportuj kompletny XLS dla" + +#: addons/ldapmanager/contentexportxls.tpl:27 +#: addons/ldapmanager/contentexportxls.tpl:42 +#: addons/ldapmanager/contentexport.tpl:24 +#: addons/ldapmanager/contentexport.tpl:39 +msgid "Choose the department you want to Export" +msgstr "Wybierz departament, który chcesz eksportować" + +#: addons/ldapmanager/contentexportxls.tpl:39 +#: addons/ldapmanager/contentexport.tpl:36 +msgid "Export IVBB LDIF for" +msgstr "Eksportuj IVBB LDIF dla" + +#: addons/ldapmanager/contentexportxls.tpl:58 +#: addons/ldapmanager/contentexport.tpl:55 +msgid "Export successful" +msgstr "Eksport zakończony powodzeniem" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the complete LDAP database to a xls file" +msgstr "Kliknij tutaj aby zapisać kompletną bazę LDAP do pliku xls" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the LDAP Export to a xls file" +msgstr "Kliknij tutaj aby zapisać Eksport LDAP do pliku xls" + +#: addons/ldapmanager/class_ldif.inc:6 addons/ldapmanager/main.inc:49 +msgid "LDAP manager" +msgstr "Menedżer LDAP" + +#: addons/ldapmanager/class_ldif.inc:35 addons/ldapmanager/class_ldif.inc:36 +#: addons/ldapmanager/class_ldif.inc:41 +#, fuzzy +msgid "Ldap manager" +msgstr "Menedżer LDAP" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "import" +msgstr "Import" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "export" +msgstr "Export" + +#: addons/ldapmanager/contentexport.tpl:3 +msgid "" +"The LDIF export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as ldif. You may save these files for backup " +"purpose or when initializing a new server." +msgstr "" +"Dodatek eksport LDIF zapewnia metody do sciągnięcia snapshot'u działającego " +"katalogu LDAP jako ldif. Można zapisać te pliki dla celów bezpieczeństwa lub " +"podczas inicjalizacji nowego serwera." + +#: addons/ldapmanager/contentexport.tpl:21 +msgid "Export complete LDIF for" +msgstr "Eksportuj kompletny LDIF dla" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the complete LDAP database to a file" +msgstr "Kliknij tutaj aby zapisać kompletną bazę LDAP do pliku" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the LDAP Export " +msgstr "Kliknij tutaj aby zapisać Eksport LDAP" + +#: addons/ldapmanager/class_exportxls.inc:6 +msgid "XLS import" +msgstr "Import XLS" + +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_export.inc:84 +#, fuzzy +msgid "Cannot export selected entries!" +msgstr "Utwórz obiekty" + +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy, php-format +msgid "You have no permission to export '%s'!" +msgstr "Brak uprawnień do eksportowania bazy LDAP." + +#: addons/ldapmanager/contentcsv.tpl:2 +msgid "" +"The CSV import plugin provides methods to generate user accounts from a file " +"containing Comma Seperated Values. The administrator can decide which " +"columns should be transfered to which attribute. Note that you must have at " +"least the UID, GIVENNAME and SURENAME set." +msgstr "" +"Dodatek imoprt CSV zapewnia metody do wygenerowania kont użytkowników z " +"pliku zawierającego wartości oddzielone przecinkami. Administrator może " +"zdecydować które kolumny powinny być zmapowane na jakie atrybuty. Proszę " +"zauważyć że trzeba zmapować conajmniej zestaw UID, GIVENNAME i SURENAME." + +#: addons/ldapmanager/contentcsv.tpl:10 +msgid "Select CSV file to import" +msgstr "Wybierz plik CSV do importu" + +#: addons/ldapmanager/contentcsv.tpl:19 +msgid "Select template" +msgstr "Wybierz Szablon" + +#: addons/ldapmanager/contentcsv.tpl:34 +msgid "All entries have been written to the LDAP database successfully." +msgstr "Wszystkie elementy zostały prawidłowo zapisane w bazie LDAP." + +#: addons/ldapmanager/contentcsv.tpl:36 +msgid "Oups. There was an error during the import of your data." +msgstr "Ups. Wystąpił błąd podczas importu danych." + +#: addons/ldapmanager/contentcsv.tpl:39 +msgid "Here is the status report for the import:" +msgstr "Raport z importu:" + +#: addons/ldapmanager/contentcsv.tpl:80 +msgid "Selected Template" +msgstr "Wybrany Szablon" + +#: addons/ldapmanager/class_csvimport.inc:105 +#, fuzzy +msgid "You've no permission to import CSV files." +msgstr "Brak uprawnień do wykonania importu CSV." + +#: addons/ldapmanager/class_csvimport.inc:165 +#, fuzzy +msgid "Need at least 'sn', 'givenName' and 'uid' to create users." +msgstr "Potrzeba 'sn', 'givenName' oraz 'uid' do utworzenia użytkownika." + +#: addons/ldapmanager/class_csvimport.inc:213 +msgid "failed" +msgstr "błąd" + +#: addons/ldapmanager/class_csvimport.inc:217 +msgid "ok" +msgstr "ok" + +#: addons/ldapmanager/class_csvimport.inc:281 +msgid "status" +msgstr "status" + +#: addons/ldapmanager/class_csvimport.inc:285 +#, fuzzy, php-format +msgid "Cannot insert entry '%s'!" +msgstr "Nieznany wpis '%s'!" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Information" +msgstr "Informacja" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Nothing to import!" +msgstr "Nic do importowania!" + +#: addons/ldapmanager/class_csvimport.inc:494 +msgid "Cannot find CSV data in the selected file!" +msgstr "" + +#: addons/ldapmanager/class_export.inc:6 +msgid "CSV import" +msgstr "import CVS" + +#, fuzzy +#~ msgid "Ldap manger" +#~ msgstr "Menedżer LDAP" + +#~ msgid "Surename" +#~ msgstr "Nazwisko" + +#~ msgid "Back" +#~ msgstr "Wróć" + +#, fuzzy +#~ msgid "Ldap manager addon" +#~ msgstr "Menedżer LDAP" diff --git a/trunk/gosa-plugins/ldapmanager/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/ldapmanager/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d70edcc16 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,591 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: html/getldif.php:82 html/getxls.php:493 +#: addons/ldapmanager/class_import.inc:52 +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_csvimport.inc:105 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy +msgid "Permission error" +msgstr "Права для членов группы" + +#: html/getldif.php:82 +#, fuzzy +msgid "You have no permission to create LDAP dumps!" +msgstr "У вас недостаточно прав для удаления этого подразделения." + +#: html/getldif.php:107 +#, fuzzy +msgid "Error in ivbb parameter!" +msgstr "Изменить параметры" + +#: html/getxls.php:88 +msgid "Birthday" +msgstr "" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Sex" +msgstr "Пол" + +#: html/getxls.php:88 html/getxls.php:229 html/getxls.php:283 +#: html/getxls.php:299 html/getxls.php:303 +#, fuzzy +msgid "Surname" +msgstr "Имя сервера" + +#: html/getxls.php:88 html/getxls.php:225 html/getxls.php:283 +#: html/getxls.php:299 +msgid "Given name" +msgstr "Имя" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Language" +msgstr "Язык" + +#: html/getxls.php:91 html/getxls.php:92 html/getxls.php:310 +msgid "Users" +msgstr "Пользователи" + +#: html/getxls.php:96 html/getxls.php:343 +#, fuzzy, php-format +msgid "User list of %s on %s" +msgstr "Список пользователей" + +#: html/getxls.php:102 html/getxls.php:137 html/getxls.php:160 +#: html/getxls.php:349 html/getxls.php:366 +msgid "User ID" +msgstr "Идентификатор пользователя" + +#: html/getxls.php:123 html/getxls.php:286 +#, fuzzy +msgid "Members" +msgstr "Включаемые объекты" + +#: html/getxls.php:126 html/getxls.php:128 html/getxls.php:311 +msgid "Groups" +msgstr "Группы" + +#: html/getxls.php:133 html/getxls.php:362 +#, fuzzy, php-format +msgid "Groups of %s on %s" +msgstr "Группа пользователя" + +#: html/getxls.php:157 html/getxls.php:190 html/getxls.php:192 +#: html/getxls.php:199 html/getxls.php:235 html/getxls.php:312 +#: html/getxls.php:383 +msgid "Servers" +msgstr "Серверы" + +#: html/getxls.php:160 html/getxls.php:289 +msgid "Description" +msgstr "Описание" + +#: html/getxls.php:161 html/getxls.php:313 +#, fuzzy +msgid "Computers" +msgstr "не полный" + +#: html/getxls.php:171 html/getxls.php:224 html/getxls.php:403 +#: html/getxls.php:423 +#, fuzzy +msgid "Common name" +msgstr "Местоположение" + +#: html/getxls.php:187 +msgid "Server name" +msgstr "Имя сервера" + +#: html/getxls.php:197 html/getxls.php:381 +#, fuzzy, php-format +msgid "Servers of %s on %s" +msgstr "Серверы" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Display name" +msgstr "Отображаемое имя" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Fax" +msgstr "Факс" + +#: html/getxls.php:225 html/getxls.php:292 +msgid "Name" +msgstr "Фамилия" + +#: html/getxls.php:225 +msgid "Home phone" +msgstr "Домашний телефон" + +#: html/getxls.php:226 +msgid "Home postal address" +msgstr "" + +#: html/getxls.php:226 html/getxls.php:300 +msgid "Initials" +msgstr "Отчество" + +#: html/getxls.php:226 +msgid "Location" +msgstr "Местоположение" + +#: html/getxls.php:227 +#, fuzzy +msgid "Mail address" +msgstr "MAC-адрес" + +#: html/getxls.php:227 +#, fuzzy +msgid "Mobile phone" +msgstr "Домашний телефон" + +#: html/getxls.php:227 html/getxls.php:300 +msgid "City" +msgstr "Город" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +#, fuzzy +msgid "Postal address" +msgstr "Почтовый индекс" + +#: html/getxls.php:228 html/getxls.php:302 +msgid "Pager" +msgstr "Пейджер" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +#, fuzzy +msgid "Phone number" +msgstr "Телефонные номера" + +#: html/getxls.php:229 +msgid "Address" +msgstr "Адрес" + +#: html/getxls.php:229 +msgid "Postal code" +msgstr "Почтовый индекс" + +#: html/getxls.php:230 html/getxls.php:303 +msgid "State" +msgstr "Адм. единица" + +#: html/getxls.php:230 +#, fuzzy +msgid "Function" +msgstr "Действие" + +#: html/getxls.php:233 html/getxls.php:314 +#, fuzzy +msgid "Adressbook" +msgstr "Адресная книга" + +#: html/getxls.php:240 html/getxls.php:416 +#, fuzzy, php-format +msgid "Adressbook of %s on %s" +msgstr "Адресная книга" + +#: html/getxls.php:246 +#, fuzzy +msgid "Common Name" +msgstr "Местоположение" + +#: html/getxls.php:283 +#, fuzzy +msgid "Day of birth" +msgstr "Дата рождения" + +#: html/getxls.php:289 +msgid "UID" +msgstr "UID" + +#: html/getxls.php:301 +#, fuzzy +msgid "Email address" +msgstr "Основной адрес" + +#: html/getxls.php:301 +msgid "Mobile" +msgstr "Мобильный" + +#: html/getxls.php:301 +msgid "Organization" +msgstr "Организация" + +#: html/getxls.php:301 +#, fuzzy +msgid "Organizational unit" +msgstr "Организация" + +#: html/getxls.php:302 +#, fuzzy +msgid "Postal Code" +msgstr "Почтовый индекс" + +#: html/getxls.php:303 +#, fuzzy +msgid "Title" +msgstr "Файлы" + +#: html/getxls.php:306 +msgid "Full" +msgstr "" + +#: html/getxls.php:397 +#, fuzzy, php-format +msgid "Computers of %s on %s" +msgstr "не полный" + +#: html/getxls.php:493 +#, fuzzy +msgid "You have no permission to do LDAP exports!" +msgstr "У вас недостаточно прав для создания пользователя в этой ветке." + +#: addons/ldapmanager/class_import.inc:6 +#: addons/ldapmanager/class_csvimport.inc:6 +msgid "LDIF export" +msgstr "Экспорт в LDIF" + +#: addons/ldapmanager/class_import.inc:7 addons/ldapmanager/class_ldif.inc:7 +#: addons/ldapmanager/class_exportxls.inc:7 +#: addons/ldapmanager/class_csvimport.inc:7 +#: addons/ldapmanager/class_export.inc:7 +msgid "This does something" +msgstr "Что-то будет" + +#: addons/ldapmanager/class_import.inc:52 +msgid "You need full write access to the LDAP tree to import data!" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_csvimport.inc:165 +#: addons/ldapmanager/class_csvimport.inc:285 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#: addons/ldapmanager/class_csvimport.inc:494 +#: addons/ldapmanager/class_export.inc:84 +msgid "Error" +msgstr "" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#, fuzzy, php-format +msgid "Cannot read uploaded file: %s" +msgstr "Удалить" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_csvimport.inc:340 +#, fuzzy +msgid "file is empty" +msgstr "Значение поля \"Файлы\" некорректно." + +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:346 +#, fuzzy +msgid "file not found" +msgstr "Имя сервера" + +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:351 +msgid "file not readable" +msgstr "" + +#: addons/ldapmanager/class_import.inc:110 +#: addons/ldapmanager/class_import.inc:114 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: addons/ldapmanager/class_import.inc:118 +#, fuzzy +msgid "Internal error" +msgstr "Терминал-сервер" + +#: addons/ldapmanager/class_import.inc:118 +#, fuzzy, php-format +msgid "Undefined flag '%s'!" +msgstr "не определена" + +#: addons/ldapmanager/contentimport.tpl:3 +#, fuzzy +msgid "" +"The LDIF import plugin provides methods to upload a set of entries to your " +"running LDAP directory as ldif. You may use this to add new or modify " +"existing entries. Remember that GOsa will not check your ldifs for GOsa " +"conformance." +msgstr "" +"Модуль экспорта в LDIF позволяет получать полный образ текущего каталога " +"LDAPв формате ldif. Эти образы можно сохранять как резервные копии или " +"использовать при инициализации нового сервера." + +#: addons/ldapmanager/contentimport.tpl:10 +msgid "Import LDIF File" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:15 +#: addons/ldapmanager/contentcsv.tpl:14 +msgid "Browse" +msgstr "Просмотр" + +#: addons/ldapmanager/contentimport.tpl:24 +msgid "Modify existing objects, keep untouched attributes" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:25 +msgid "Overwrite existing objects, all not listed attributes will be removed" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:34 +#, fuzzy +msgid "Remove existing entries first" +msgstr "Удалить сервис DNS" + +#: addons/ldapmanager/contentimport.tpl:41 +#, fuzzy +msgid "Import successful" +msgstr "Импорт успешен." + +#: addons/ldapmanager/contentimport.tpl:50 +#: addons/ldapmanager/contentcsv.tpl:109 addons/ldapmanager/contentcsv.tpl:112 +msgid "Import" +msgstr "Импортировать" + +#: addons/ldapmanager/contentexportxls.tpl:3 +#, fuzzy +msgid "" +"The XLS export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as xls. You may save these files for " +"documentation." +msgstr "" +"Модуль экспорта в LDIF позволяет получать полный образ текущего каталога " +"LDAPв формате ldif. Эти образы можно сохранять как резервные копии или " +"использовать при инициализации нового сервера." + +#: addons/ldapmanager/contentexportxls.tpl:10 +#: addons/ldapmanager/contentexport.tpl:10 +msgid "Export single entry" +msgstr "Экспорт объекта" + +#: addons/ldapmanager/contentexportxls.tpl:14 +#, fuzzy +msgid "Choose the data you want to Export" +msgstr "Выбрать подразделение для экспорта" + +#: addons/ldapmanager/contentexportxls.tpl:19 +#: addons/ldapmanager/contentexportxls.tpl:32 +#: addons/ldapmanager/contentexportxls.tpl:47 +#: addons/ldapmanager/contentexport.tpl:16 +#: addons/ldapmanager/contentexport.tpl:29 +#: addons/ldapmanager/contentexport.tpl:44 +msgid "Export" +msgstr "Экспорт" + +#: addons/ldapmanager/contentexportxls.tpl:24 +msgid "Export complete XLS for" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:27 +#: addons/ldapmanager/contentexportxls.tpl:42 +#: addons/ldapmanager/contentexport.tpl:24 +#: addons/ldapmanager/contentexport.tpl:39 +msgid "Choose the department you want to Export" +msgstr "Выбрать подразделение для экспорта" + +#: addons/ldapmanager/contentexportxls.tpl:39 +#: addons/ldapmanager/contentexport.tpl:36 +msgid "Export IVBB LDIF for" +msgstr "" + +#: addons/ldapmanager/contentexportxls.tpl:58 +#: addons/ldapmanager/contentexport.tpl:55 +#, fuzzy +msgid "Export successful" +msgstr "Экспорт успешен." + +#: addons/ldapmanager/contentexportxls.tpl:62 +#, fuzzy +msgid "Click here to save the complete LDAP database to a xls file" +msgstr "Щелкните здесь, чтобы сохранить образ базы данных LDAP в файл" + +#: addons/ldapmanager/contentexportxls.tpl:62 +#, fuzzy +msgid "Click here to save the LDAP Export to a xls file" +msgstr "Щелкните здесь, чтобы сохранить результаты экспорта" + +#: addons/ldapmanager/class_ldif.inc:6 addons/ldapmanager/main.inc:49 +#, fuzzy +msgid "LDAP manager" +msgstr "Экспорт в LDIF" + +#: addons/ldapmanager/class_ldif.inc:35 addons/ldapmanager/class_ldif.inc:36 +#: addons/ldapmanager/class_ldif.inc:41 +#, fuzzy +msgid "Ldap manager" +msgstr "Экспорт в LDIF" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "import" +msgstr "Импортировать" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "export" +msgstr "Экспорт" + +#: addons/ldapmanager/contentexport.tpl:3 +#, fuzzy +msgid "" +"The LDIF export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as ldif. You may save these files for backup " +"purpose or when initializing a new server." +msgstr "" +"Модуль экспорта в LDIF позволяет получать полный образ текущего каталога " +"LDAPв формате ldif. Эти образы можно сохранять как резервные копии или " +"использовать при инициализации нового сервера." + +#: addons/ldapmanager/contentexport.tpl:21 +msgid "Export complete LDIF for" +msgstr "" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the complete LDAP database to a file" +msgstr "Щелкните здесь, чтобы сохранить образ базы данных LDAP в файл" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the LDAP Export " +msgstr "Щелкните здесь, чтобы сохранить результаты экспорта" + +#: addons/ldapmanager/class_exportxls.inc:6 +#, fuzzy +msgid "XLS import" +msgstr "Импортировать" + +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_export.inc:84 +#, fuzzy +msgid "Cannot export selected entries!" +msgstr "Включаемые объекты" + +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy, php-format +msgid "You have no permission to export '%s'!" +msgstr "У вас недостаточно прав для удаления этого подразделения." + +#: addons/ldapmanager/contentcsv.tpl:2 +msgid "" +"The CSV import plugin provides methods to generate user accounts from a file " +"containing Comma Seperated Values. The administrator can decide which " +"columns should be transfered to which attribute. Note that you must have at " +"least the UID, GIVENNAME and SURENAME set." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:10 +msgid "Select CSV file to import" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:19 +#, fuzzy +msgid "Select template" +msgstr "Создать шаблон" + +#: addons/ldapmanager/contentcsv.tpl:34 +msgid "All entries have been written to the LDAP database successfully." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:36 +msgid "Oups. There was an error during the import of your data." +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:39 +msgid "Here is the status report for the import:" +msgstr "" + +#: addons/ldapmanager/contentcsv.tpl:80 +#, fuzzy +msgid "Selected Template" +msgstr "Выберите режим терминала" + +#: addons/ldapmanager/class_csvimport.inc:105 +#, fuzzy +msgid "You've no permission to import CSV files." +msgstr "У вас недостаточно прав для удаления этого подразделения." + +#: addons/ldapmanager/class_csvimport.inc:165 +msgid "Need at least 'sn', 'givenName' and 'uid' to create users." +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:213 +#, fuzzy +msgid "failed" +msgstr "Ошибка" + +#: addons/ldapmanager/class_csvimport.inc:217 +msgid "ok" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:281 +#, fuzzy +msgid "status" +msgstr "Состояние" + +#: addons/ldapmanager/class_csvimport.inc:285 +#, fuzzy, php-format +msgid "Cannot insert entry '%s'!" +msgstr "состояние неизвестно" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Information" +msgstr "Информация" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Nothing to import!" +msgstr "" + +#: addons/ldapmanager/class_csvimport.inc:494 +msgid "Cannot find CSV data in the selected file!" +msgstr "" + +#: addons/ldapmanager/class_export.inc:6 +#, fuzzy +msgid "CSV import" +msgstr "Импортировать" + +#, fuzzy +#~ msgid "Ldap manger" +#~ msgstr "Экспорт в LDIF" + +#, fuzzy +#~ msgid "Surename" +#~ msgstr "Имя сервера" + +#~ msgid "Back" +#~ msgstr "Назад" + +#, fuzzy +#~ msgid "Ldap manager addon" +#~ msgstr "Экспорт в LDIF" diff --git a/trunk/gosa-plugins/ldapmanager/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/ldapmanager/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..80725b614 --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,564 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:32+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: html/getldif.php:82 html/getxls.php:493 +#: addons/ldapmanager/class_import.inc:52 +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_csvimport.inc:105 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy +msgid "Permission error" +msgstr "允许" + +#: html/getldif.php:82 +#, fuzzy +msgid "You have no permission to create LDAP dumps!" +msgstr "您无权删除这个部门。" + +#: html/getldif.php:107 +#, fuzzy +msgid "Error in ivbb parameter!" +msgstr "检查参数" + +#: html/getxls.php:88 +msgid "Birthday" +msgstr "生日" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Sex" +msgstr "性别" + +#: html/getxls.php:88 html/getxls.php:229 html/getxls.php:283 +#: html/getxls.php:299 html/getxls.php:303 +msgid "Surname" +msgstr "姓" + +#: html/getxls.php:88 html/getxls.php:225 html/getxls.php:283 +#: html/getxls.php:299 +msgid "Given name" +msgstr "名" + +#: html/getxls.php:88 html/getxls.php:283 +msgid "Language" +msgstr "语言" + +#: html/getxls.php:91 html/getxls.php:92 html/getxls.php:310 +msgid "Users" +msgstr "用户" + +#: html/getxls.php:96 html/getxls.php:343 +#, php-format +msgid "User list of %s on %s" +msgstr "%s 用户列表于 %s" + +#: html/getxls.php:102 html/getxls.php:137 html/getxls.php:160 +#: html/getxls.php:349 html/getxls.php:366 +msgid "User ID" +msgstr "用户 ID" + +#: html/getxls.php:123 html/getxls.php:286 +msgid "Members" +msgstr "成员" + +#: html/getxls.php:126 html/getxls.php:128 html/getxls.php:311 +msgid "Groups" +msgstr "用户组" + +#: html/getxls.php:133 html/getxls.php:362 +#, php-format +msgid "Groups of %s on %s" +msgstr "%s 的用户组于 %s 上" + +#: html/getxls.php:157 html/getxls.php:190 html/getxls.php:192 +#: html/getxls.php:199 html/getxls.php:235 html/getxls.php:312 +#: html/getxls.php:383 +msgid "Servers" +msgstr "服务器" + +#: html/getxls.php:160 html/getxls.php:289 +msgid "Description" +msgstr "描述" + +#: html/getxls.php:161 html/getxls.php:313 +msgid "Computers" +msgstr "计算机" + +#: html/getxls.php:171 html/getxls.php:224 html/getxls.php:403 +#: html/getxls.php:423 +msgid "Common name" +msgstr "常用名" + +#: html/getxls.php:187 +msgid "Server name" +msgstr "服务器名称" + +#: html/getxls.php:197 html/getxls.php:381 +#, php-format +msgid "Servers of %s on %s" +msgstr "%s服务器于%s" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Display name" +msgstr "显示名称" + +#: html/getxls.php:224 html/getxls.php:299 +msgid "Fax" +msgstr "传真" + +#: html/getxls.php:225 html/getxls.php:292 +msgid "Name" +msgstr "名称" + +#: html/getxls.php:225 +msgid "Home phone" +msgstr "住宅电话" + +#: html/getxls.php:226 +msgid "Home postal address" +msgstr "住宅地址" + +#: html/getxls.php:226 html/getxls.php:300 +msgid "Initials" +msgstr "中间名" + +#: html/getxls.php:226 +msgid "Location" +msgstr "位置" + +#: html/getxls.php:227 +msgid "Mail address" +msgstr "邮件地址" + +#: html/getxls.php:227 +msgid "Mobile phone" +msgstr "移动电话" + +#: html/getxls.php:227 html/getxls.php:300 +msgid "City" +msgstr "城市" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Postal address" +msgstr "地址" + +#: html/getxls.php:228 html/getxls.php:302 +msgid "Pager" +msgstr "呼机" + +#: html/getxls.php:228 html/getxls.php:300 html/getxls.php:302 +msgid "Phone number" +msgstr "电话号码" + +#: html/getxls.php:229 +msgid "Address" +msgstr "住址" + +#: html/getxls.php:229 +msgid "Postal code" +msgstr "邮编" + +#: html/getxls.php:230 html/getxls.php:303 +msgid "State" +msgstr "州/省" + +#: html/getxls.php:230 +msgid "Function" +msgstr "功能" + +#: html/getxls.php:233 html/getxls.php:314 +msgid "Adressbook" +msgstr "地址簿" + +#: html/getxls.php:240 html/getxls.php:416 +#, php-format +msgid "Adressbook of %s on %s" +msgstr "%s 的地址簿,于 %s" + +#: html/getxls.php:246 +msgid "Common Name" +msgstr "常用名" + +#: html/getxls.php:283 +msgid "Day of birth" +msgstr "生日" + +#: html/getxls.php:289 +msgid "UID" +msgstr "UID" + +#: html/getxls.php:301 +msgid "Email address" +msgstr "邮件地址" + +#: html/getxls.php:301 +msgid "Mobile" +msgstr "手机" + +#: html/getxls.php:301 +msgid "Organization" +msgstr "组织/公司" + +#: html/getxls.php:301 +msgid "Organizational unit" +msgstr "组织/公司部门" + +#: html/getxls.php:302 +msgid "Postal Code" +msgstr "邮编" + +#: html/getxls.php:303 +msgid "Title" +msgstr "称谓" + +#: html/getxls.php:306 +msgid "Full" +msgstr "全部" + +#: html/getxls.php:397 +#, php-format +msgid "Computers of %s on %s" +msgstr "%s计算机于%s" + +#: html/getxls.php:493 +#, fuzzy +msgid "You have no permission to do LDAP exports!" +msgstr "您无权查看和编辑 ACL。" + +#: addons/ldapmanager/class_import.inc:6 +#: addons/ldapmanager/class_csvimport.inc:6 +msgid "LDIF export" +msgstr "LDIF 导出" + +#: addons/ldapmanager/class_import.inc:7 addons/ldapmanager/class_ldif.inc:7 +#: addons/ldapmanager/class_exportxls.inc:7 +#: addons/ldapmanager/class_csvimport.inc:7 +#: addons/ldapmanager/class_export.inc:7 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: addons/ldapmanager/class_import.inc:52 +#, fuzzy +msgid "You need full write access to the LDAP tree to import data!" +msgstr "您无权执行这个方法!" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_csvimport.inc:165 +#: addons/ldapmanager/class_csvimport.inc:285 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#: addons/ldapmanager/class_csvimport.inc:494 +#: addons/ldapmanager/class_export.inc:84 +msgid "Error" +msgstr "错误" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:340 +#: addons/ldapmanager/class_csvimport.inc:346 +#: addons/ldapmanager/class_csvimport.inc:351 +#, fuzzy, php-format +msgid "Cannot read uploaded file: %s" +msgstr "无法创建文件 '%s'。" + +#: addons/ldapmanager/class_import.inc:61 +#: addons/ldapmanager/class_csvimport.inc:340 +#, fuzzy +msgid "file is empty" +msgstr "选择的文件为空。" + +#: addons/ldapmanager/class_import.inc:68 +#: addons/ldapmanager/class_csvimport.inc:335 +#: addons/ldapmanager/class_csvimport.inc:346 +#, fuzzy +msgid "file not found" +msgstr "文件" + +#: addons/ldapmanager/class_import.inc:76 +#: addons/ldapmanager/class_csvimport.inc:351 +msgid "file not readable" +msgstr "" + +#: addons/ldapmanager/class_import.inc:110 +#: addons/ldapmanager/class_import.inc:114 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: addons/ldapmanager/class_import.inc:118 +#, fuzzy +msgid "Internal error" +msgstr "终端服务器" + +#: addons/ldapmanager/class_import.inc:118 +#, php-format +msgid "Undefined flag '%s'!" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:3 +msgid "" +"The LDIF import plugin provides methods to upload a set of entries to your " +"running LDAP directory as ldif. You may use this to add new or modify " +"existing entries. Remember that GOsa will not check your ldifs for GOsa " +"conformance." +msgstr "" +"该 LDIF 导入插件提供上传一个 ldif 格式的数据集到正在运行的 LDAP 目录中的方" +"法。您可以用这个功能添加或更改记录。注意 GOsa 将不会检查您的 ldif 文档格式。" + +#: addons/ldapmanager/contentimport.tpl:10 +msgid "Import LDIF File" +msgstr "导入 LDIF 文件" + +#: addons/ldapmanager/contentimport.tpl:15 +#: addons/ldapmanager/contentcsv.tpl:14 +msgid "Browse" +msgstr "浏览" + +#: addons/ldapmanager/contentimport.tpl:24 +#, fuzzy +msgid "Modify existing objects, keep untouched attributes" +msgstr "修改已经存在的属性" + +#: addons/ldapmanager/contentimport.tpl:25 +msgid "Overwrite existing objects, all not listed attributes will be removed" +msgstr "" + +#: addons/ldapmanager/contentimport.tpl:34 +#, fuzzy +msgid "Remove existing entries first" +msgstr "删除 DNS 记录失败" + +#: addons/ldapmanager/contentimport.tpl:41 +msgid "Import successful" +msgstr "导入成功" + +#: addons/ldapmanager/contentimport.tpl:50 +#: addons/ldapmanager/contentcsv.tpl:109 addons/ldapmanager/contentcsv.tpl:112 +msgid "Import" +msgstr "导入" + +#: addons/ldapmanager/contentexportxls.tpl:3 +msgid "" +"The XLS export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as xls. You may save these files for " +"documentation." +msgstr "" +"该 XLS 导出插件提供将运行中的 LDAP 目录整体导出为 xls 的功能。您可以保存这些" +"文件用于文档。" + +#: addons/ldapmanager/contentexportxls.tpl:10 +#: addons/ldapmanager/contentexport.tpl:10 +msgid "Export single entry" +msgstr "导出单条记录" + +#: addons/ldapmanager/contentexportxls.tpl:14 +msgid "Choose the data you want to Export" +msgstr "选择您要导出的数据" + +#: addons/ldapmanager/contentexportxls.tpl:19 +#: addons/ldapmanager/contentexportxls.tpl:32 +#: addons/ldapmanager/contentexportxls.tpl:47 +#: addons/ldapmanager/contentexport.tpl:16 +#: addons/ldapmanager/contentexport.tpl:29 +#: addons/ldapmanager/contentexport.tpl:44 +msgid "Export" +msgstr "导出" + +#: addons/ldapmanager/contentexportxls.tpl:24 +msgid "Export complete XLS for" +msgstr "导出整个 XLS" + +#: addons/ldapmanager/contentexportxls.tpl:27 +#: addons/ldapmanager/contentexportxls.tpl:42 +#: addons/ldapmanager/contentexport.tpl:24 +#: addons/ldapmanager/contentexport.tpl:39 +msgid "Choose the department you want to Export" +msgstr "选择要导出的部门" + +#: addons/ldapmanager/contentexportxls.tpl:39 +#: addons/ldapmanager/contentexport.tpl:36 +msgid "Export IVBB LDIF for" +msgstr "导出 IVBB LDIF" + +#: addons/ldapmanager/contentexportxls.tpl:58 +#: addons/ldapmanager/contentexport.tpl:55 +msgid "Export successful" +msgstr "导出成功" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the complete LDAP database to a xls file" +msgstr "点击这里保存整个 LDAP 数据库为一个 xls 文件" + +#: addons/ldapmanager/contentexportxls.tpl:62 +msgid "Click here to save the LDAP Export to a xls file" +msgstr "点击这里保存 LDAP 导出为一个 xls 文件" + +#: addons/ldapmanager/class_ldif.inc:6 addons/ldapmanager/main.inc:49 +msgid "LDAP manager" +msgstr "LDAP 管理" + +#: addons/ldapmanager/class_ldif.inc:35 addons/ldapmanager/class_ldif.inc:36 +#: addons/ldapmanager/class_ldif.inc:41 +#, fuzzy +msgid "Ldap manager" +msgstr "LDAP 管理" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "import" +msgstr "导入" + +#: addons/ldapmanager/class_ldif.inc:36 +#, fuzzy +msgid "export" +msgstr "导出" + +#: addons/ldapmanager/contentexport.tpl:3 +msgid "" +"The LDIF export plugin provides methods to download a complete snapshot of " +"the running LDAP directory as ldif. You may save these files for backup " +"purpose or when initializing a new server." +msgstr "" +"该 LDIF 导出插件提供将运行中的 LDAP 目录整体导出为 ldif 的功能。您可以保存这" +"些文件用于备份或者初始化一个新服务器。" + +#: addons/ldapmanager/contentexport.tpl:21 +msgid "Export complete LDIF for" +msgstr "导出整个 LDIF " + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the complete LDAP database to a file" +msgstr "点击这里保存整个 LDAP 数据库到一个文件" + +#: addons/ldapmanager/contentexport.tpl:59 +msgid "Click here to save the LDAP Export " +msgstr "点击这里保存 LDAP 导出" + +#: addons/ldapmanager/class_exportxls.inc:6 +msgid "XLS import" +msgstr "导入 XLS" + +#: addons/ldapmanager/class_exportxls.inc:93 +#: addons/ldapmanager/class_export.inc:84 +#, fuzzy +msgid "Cannot export selected entries!" +msgstr "选择要添加的对象" + +#: addons/ldapmanager/class_exportxls.inc:106 +#: addons/ldapmanager/class_export.inc:96 +#, fuzzy, php-format +msgid "You have no permission to export '%s'!" +msgstr "您无权进行 LDAP 导出。" + +#: addons/ldapmanager/contentcsv.tpl:2 +msgid "" +"The CSV import plugin provides methods to generate user accounts from a file " +"containing Comma Seperated Values. The administrator can decide which " +"columns should be transfered to which attribute. Note that you must have at " +"least the UID, GIVENNAME and SURENAME set." +msgstr "" +"该 CVS 导入插件提供一个从逗号分隔格式文件创建用户账号的功能。管理员可以决定哪" +"一个列被导入到哪一个属性。注意必须包含 UID, GIVENNAME 和 SURENAME 字段" + +#: addons/ldapmanager/contentcsv.tpl:10 +msgid "Select CSV file to import" +msgstr "选择要导入的 CSV 文件" + +#: addons/ldapmanager/contentcsv.tpl:19 +msgid "Select template" +msgstr "选择模板" + +#: addons/ldapmanager/contentcsv.tpl:34 +msgid "All entries have been written to the LDAP database successfully." +msgstr "所有记录成功写入 LDAP 数据库。" + +#: addons/ldapmanager/contentcsv.tpl:36 +msgid "Oups. There was an error during the import of your data." +msgstr "哎哟! 导入过程中遇到一个错误。" + +#: addons/ldapmanager/contentcsv.tpl:39 +msgid "Here is the status report for the import:" +msgstr "这里是导入过程的状态报告:" + +#: addons/ldapmanager/contentcsv.tpl:80 +msgid "Selected Template" +msgstr "所选模板" + +#: addons/ldapmanager/class_csvimport.inc:105 +#, fuzzy +msgid "You've no permission to import CSV files." +msgstr "您无权执行 CSV 导入。" + +#: addons/ldapmanager/class_csvimport.inc:165 +#, fuzzy +msgid "Need at least 'sn', 'givenName' and 'uid' to create users." +msgstr "需要 'sn', 'givenName' 和 'uid' 来创建用户。" + +#: addons/ldapmanager/class_csvimport.inc:213 +msgid "failed" +msgstr "失败" + +#: addons/ldapmanager/class_csvimport.inc:217 +msgid "ok" +msgstr "ok" + +#: addons/ldapmanager/class_csvimport.inc:281 +msgid "status" +msgstr "状态" + +#: addons/ldapmanager/class_csvimport.inc:285 +#, fuzzy, php-format +msgid "Cannot insert entry '%s'!" +msgstr "未知 FAIstate %s" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Information" +msgstr "提示信息" + +#: addons/ldapmanager/class_csvimport.inc:323 +msgid "Nothing to import!" +msgstr "没有数据导入!" + +#: addons/ldapmanager/class_csvimport.inc:494 +msgid "Cannot find CSV data in the selected file!" +msgstr "" + +#: addons/ldapmanager/class_export.inc:6 +msgid "CSV import" +msgstr "CSV 导入" + +#, fuzzy +#~ msgid "Ldap manger" +#~ msgstr "LDAP 管理" + +#~ msgid "Surename" +#~ msgstr "姓" + +#~ msgid "Back" +#~ msgstr "返回" + +#, fuzzy +#~ msgid "Ldap manager addon" +#~ msgstr "LDAP 管理" diff --git a/trunk/gosa-plugins/ldapmanager/plugin.dsc b/trunk/gosa-plugins/ldapmanager/plugin.dsc new file mode 100644 index 000000000..ecffdca7c --- /dev/null +++ b/trunk/gosa-plugins/ldapmanager/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = ldapmanager +description = "Simple LDAP backup and insertion tasks" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ + diff --git a/trunk/gosa-plugins/log/addons/logview/class_gosa_logview.inc b/trunk/gosa-plugins/log/addons/logview/class_gosa_logview.inc new file mode 100644 index 000000000..0c6b0e515 --- /dev/null +++ b/trunk/gosa-plugins/log/addons/logview/class_gosa_logview.inc @@ -0,0 +1,427 @@ +config= &$config; + $this->ui = get_userinfo(); + $this->location = $this->config->current['BASE']; + + /* Restore last filter settings */ + $logview = session::get('logview'); + foreach(array("action","server","time","regex") as $attr){ + if(isset($logview['gosa_log'][$attr])){ + $this->$attr = $logview['gosa_log'][$attr]; + } + } + + $tz = timezone::get_default_timezone(); + $this->timezone_offset = $tz['value'] * 60 * 60 ; + + $ldap = $this->config->get_ldap_link(); + $ldap->search("(&(objectClass=person)(uid=*))",array("uid","dn")); + while($attrs = $ldap->fetch()){ + $this->uid_map[$attrs['dn']] = $attrs['uid'][0]; + } + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","gosa_logging/".get_class($this),$this->dn); + } + + /* Time interval */ + $date_select = array( + "0" => _("one hour"), "1" => _("6 hours"), + "2" => _("12 hours"), "3" => _("24 hours"), + "4" => _("2 days"), "5" => _("one week"), + "6" => _("2 weeks"), "7" => _("one month")); + + + $time = time(); + $date_select_ = array( + "0" => $time - 3600, + "1" => $time - 21600, + "2" => $time - 43200, + "3" => $time - 86400, + "4" => $time - 172800, + "5" => $time - 604800, + "6" => $time - 1209600, + "7" => $time - 2419200); + + $smarty= get_smarty(); + $smarty->assign("search_result", ""); + $smarty->assign("plug", "?plug=".validate($_GET['plug'])); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("time_image", get_template_path('plugins/log/images/time.png')); + $smarty->assign("server_image", get_template_path('plugins/systems/images/server.png')); + $smarty->assign("log_image", get_template_path('plugins/logview/images/log_warning.png')); + $smarty->assign("ruleset_image", get_template_path('images/lists/edit.png')); + $smarty->assign("launchimage", get_template_path('images/launch.png')); + $smarty->assign("date_select", $date_select); + $smarty->assign("actions", array()); + $smarty->assign("direction", "up"); + $smarty->assign("mode0", ""); + $smarty->assign("mode1", ""); + $smarty->assign("mode2", ""); + $smarty->assign("mode3", ""); + $smarty->assign("mode4", ""); + $smarty->assign("mode5", ""); + $smarty->assign("mode6", ""); + + /* Assign select option content */ + foreach( array("server", "action", "time", "regex") as $type){ + $smarty->assign("$type", $this->$type); + } + + /**** + * Check if defined servers + * and mysql extension + ****/ + if (!isset($this->config->data['SERVERS']['LOGGING']) || !count($this->config->data['SERVERS']['LOGGING'])){ + msg_dialog::display(_("Warning"), msgPool::noserver("GOsa log"), WARNING_DIALOG); + $smarty->assign("servers", array()); + return ($smarty->fetch (get_template_path('gosa_log_contents.tpl', TRUE))); + } + + if(!is_callable("mysql_connect")){ + msg_dialog::display(_("Configuration error"), sprintf(_("Missing %s PHP extension!"), "mysql"), WARNING_DIALOG); + $smarty->assign("servers", array()); + return ($smarty->fetch (get_template_path('gosa_log_contents.tpl', TRUE))); + } + + /**** + * Get Configurations + ****/ + $list_of_servers = $this->config->data['SERVERS']['LOGGING']; + $servers = array(); + foreach($list_of_servers as $servername => $data){ + $servers[$servername] = $servername; + } + $smarty->assign("servers", $servers); + + /* Set a default server, if there is currently no valid server selected */ + if(empty($this->server) || !in_array($this->server,$servers)){ + $this->server = key($servers); + } + + /**** + * Connect to currently selected server + ****/ + $cfg = $list_of_servers[$this->server]; + + $link = @mysql_pconnect($this->server, $cfg['USER'], $cfg['PWD']); + if ($link === FALSE){ + msg_dialog::display(_("Error"), msgPool::dbconnect($this->server,@mysql_error(),"GOsa LOG"), ERROR_DIALOG); + new log("debug","gosa_logging","dbconnect",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('gosa_log_contents.tpl', TRUE))); + } + + /* check if log database is available */ + if (! @mysql_select_db($cfg['DB'])){ + msg_dialog::display(_("Error"), msgPool::dbselect($cfg['DB'],@mysql_error(), "GOsa LOG"), ERROR_DIALOG); + new log("debug","gosa_logging","selectdb",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('gosa_log_contents.tpl', TRUE))); + } + + + /**** + * Get location_id. + ****/ + + if($this->location_id == -1){ + $actions = array("!ALL" => _("All")); + $query = "SELECT id FROM gosa_locations WHERE location='".mysql_escape_string($this->location)."';"; + $res = @mysql_query($query); + if($res){ + $attrs = @mysql_fetch_assoc($res); + if(isset($attrs['id'])){ + $this->location_id = $attrs['id']; + } + } + } + + /**** + * Get all action types + ****/ + + $actions = array("!ALL" => _("All")); + $query = "SELECT distinct(action) FROM gosa_log WHERE location_id='".$this->location_id."'; "; + $res = @mysql_query($query); + while($attrs = @mysql_fetch_assoc($res)){ + $actions[$attrs['action']] = $attrs['action']; + } + + + /**** + * Check Acls + ****/ + + $ui = get_userinfo(); + $dn = $list_of_servers[$this->server]['DN']; + $acls = $ui->get_permissions($dn,"server/gosaLogServer","viewEntries"); + + if(!preg_match("/r/",$acls)){ + $res = " + + "._("You have insufficient permissions to view syslog entries.")." + + "; + + /* Show main page */ + $smarty->assign("range_selector", ""); + $smarty->assign("search_result", $res); + return ($smarty->fetch (get_template_path('gosa_log_contents.tpl', TRUE))); + } + + /* Prepare order setting */ + if ($this->sort_direction == "down"){ + $desc= "DESC"; + $sort_sign = "\/"; + } else { + $desc= ""; + $sort_sign = "/\"; + } + + /**** + * Query stuff + ****/ + + /* Check for required tables + */ + $query = "SHOW TABLES;"; + $res = @mysql_query($query,$link); + $tables = array(); + while($attrs = @mysql_fetch_row($res)){ + $tables[] = $attrs[0]; + } + $error = FALSE; + foreach(array("gosa_log","gosa_locations") as $required){ + if(!in_array($required,$tables)){ + msg_dialog::display(_("Error"), + sprintf(_("Missing logging table (%s.%s) update your GOsa logging database schema."), + $cfg['DB'],$required), ERROR_DIALOG); + $error = TRUE; + } + } + if(!$error){ + + /* Get start time */ + $start = $date_select_[$this->time]; + + /* Prepare search filter */ + $sql_regex =trim(preg_replace("/\*/","%",$this->regex)); + $sql_regex = "%".trim($sql_regex,"%")."%"; + + /* Create search filter */ + $query_base= "FROM gosa_log WHERE timestamp >= $start "; + + /* Append action filter */ + if($this->action != "!ALL"){ + $query_base .=" AND action like '".$this->action."' "; + } + + /* Append search filter */ + if($sql_regex != "%%"){ + $query_base .=" AND ( result like '".$sql_regex."' OR user like '".$sql_regex."') "; + } + + /* Appen location */ + $query_base .= " AND location_id='".$this->location_id."' "; + + /* Get number of entries */ + $query= "SELECT COUNT(`user`) ".$query_base.";"; + $result = mysql_query($query); + if(!$result){ + new log("debug","gosa_logging","",array(),@mysql_error()); + } + $line= mysql_fetch_array($result, MYSQL_ASSOC); + $count= $line['COUNT(`user`)']; + if ($count > 25){ + $smarty->assign("range_selector", range_selector($count, $this->start, $this->range,"EntriesPerPage")); + } else { + $smarty->assign("range_selector", ""); + } + + /* Query results that will be displayed */ + $query= "SELECT * ".$query_base." ORDER BY ".$this->fields[$this->sort]." ".$desc." LIMIT ".$this->start.",".$this->range.";"; + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__, $query, "Database query"); + $result = @mysql_query($query); + + if(!$result){ + msg_dialog::display(_("Error"), msgPool::dbquery("gosa_log",@mysql_error(), "GOsa LOG"), ERROR_DIALOG); + new log("debug","gosa_logging","querydb",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('gosa_log_contents.tpl', TRUE))); + } + + /* Display results */ + $mod= 0; + + /* Add entries to result str */ + $res = ""; + while ($line = mysql_fetch_array($result, MYSQL_ASSOC)){ + + /* Toggle background color */ + if ( ($mod++) & 1){ + $col= "background-color: #ECECEC;"; + } else { + $col= "background-color: #F5F5F5;"; + } + + $base = ", ".substr($this->config->current['BASE'],0,5)."..."; + + if(isset($this->uid_map[$line['user']])){ + $user = $this->uid_map[$line['user']]; + }else{ + $user = preg_replace("/,".preg_quote($this->config->current['BASE'], '/')."/",$base,$line['user']); + } + $object = preg_replace("/,".preg_quote($this->config->current['BASE'], '/')."/",$base,$line['object']); + + $res.=" \n"; + $res.=" ".$line['action'].""; + $res.=" ".date("H:i:s d.m.Y",($line['timestamp'] + $this->timezone_offset)).""; + $res.=" ".preg_replace("/,/",", ",$user).""; + $res.=" ".$line['objecttype'].""; + $res.=" ".preg_replace("/,/",", ",LDAP::fix($object)).""; + $res.=" ".$line['result'].""; + $res.=" \n"; + } + } + @mysql_close($link); + $smarty->assign("mode".$this->sort, $sort_sign); + $smarty->assign("search_result", $res); + + $smarty->assign("regex", $this->regex); + $smarty->assign("server",$this->server); + $smarty->assign("servers",$servers); + $smarty->assign("action",$this->action); + $smarty->assign("actions",$actions); + $smarty->assign("date_select", $date_select); + + $smarty->assign("direction", $this->sort_direction); + + /* Show main page */ + return ($smarty->fetch (get_template_path('gosa_log_contents.tpl', TRUE))); + } + + + function save_object() + { + /* Get submitted range */ + if(isset($_POST['EntriesPerPage'])){ + if(is_numeric($_POST['EntriesPerPage'])){ + $this->range = $_POST['EntriesPerPage']; + } + } + + /* Get actual select boxe values */ + $logfilter_changed = FALSE; + foreach( array("server", "action","time","regex") as $type){ + if(isset($_POST[$type])){ + if($type == "server" && $this->server != $_POST['server']){ + $this->location_id = -1; + } + $this->$type = $_POST[$type]; + } + } + + /* Filter regex values */ + if ($this->regex == ""){ + $this->regex= '*'; + } else { + $new = preg_replace('/\*\**/', '*', $this->regex); + $this->regex= $new; + } + + /* Set start value */ + if (isset($_GET['start'])){ + $this->start= (int)$_GET['start']; + } + + /* Reset page number if filter has changed */ + if ($logfilter_changed > 0){ + $this->start= 0; + } + + /* Adapt sorting */ + if (isset($_GET['sort'])){ + + if($_GET['direction'] == "up"){ + $this->sort_direction = "down"; + }else{ + $this->sort_direction = "up"; + } + + $this->sort= (int)$_GET['sort']; + if ($this->sort < 0 || $this->sort > count($this->fields)){ + $this->sort= 0; + } + } + + /* Save attributes in Sessiob, so we are able to recontruct filter on plugin reload */ + $logview = session::get('logview'); + $logview['gosa_log'] = array(); + + foreach(array("action","server","time","regex") as $attr){ + $logview['gosa_log'][$attr] = $this->$attr; + } + session::set('logview',$logview); + } + + + /* Return plugin informations for acl handling + #FIXME You can only read attributes within this report plugin + static function plInfo() + { + return (array( + "plShortName" => _("Log view"), + "plDescription" => _("Log view addon"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("addon"), + "plCategory" => array("logview" => array("objectClass" => "none", "description" => _("System logs"))), + + "plProvidedAcls" => array() + )); + } + */ +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/log/addons/logview/class_logview.inc b/trunk/gosa-plugins/log/addons/logview/class_logview.inc new file mode 100644 index 000000000..75f6ed3d3 --- /dev/null +++ b/trunk/gosa-plugins/log/addons/logview/class_logview.inc @@ -0,0 +1,425 @@ +config= &$config; + + /* Get global filter config */ + if (!session::is_set("logfilter")){ + $logfilter= array( + "time" => "1", + "log_level" => "!All", + "host" => "!All", + "regex" => "*"); + + session::set("logfilter", $logfilter); + } + + $this->ui = get_userinfo(); + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","logview/".get_class($this),$this->dn); + } + + $logfilter= session::get("logfilter"); + $smarty= get_smarty(); + $smarty->assign("search_result", ""); + $smarty->assign("plug", "?plug=".validate($_GET['plug'])); + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("time_image", get_template_path('plugins/log/images/time.png')); + $smarty->assign("server_image", get_template_path('plugins/systems/images/server.png')); + $smarty->assign("log_image", get_template_path('plugins/logview/images/log_warning.png')); + $smarty->assign("ruleset_image", get_template_path('images/lists/edit.png')); + $smarty->assign("launchimage", get_template_path('images/launch.png')); + $smarty->assign("hostlist", $this->hostlist); + $smarty->assign("loglevellist", $this->loglevellist); + $smarty->assign("tilist", $this->tilist); + $smarty->assign("mode0", ""); + $smarty->assign("mode1", ""); + $smarty->assign("mode2", ""); + $smarty->assign("mode3", ""); + + /* Assign select option content */ + foreach( array("host", "log_level", "time", "regex") as $type){ + $smarty->assign("$type", $logfilter[$type]); + } + + /* Test connection to log database */ + if (!isset($this->config->data['SERVERS']['LOG'])){ + msg_dialog::display(_("Warning"), msgPool::noserver("syslog"), WARNING_DIALOG); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + + }elseif(!is_callable("mysql_connect")){ + msg_dialog::display(_("Configuration error"), sprintf(_("Missing %s PHP extension!"), "mysql"), WARNING_DIALOG); + new log("debug","logview","Missing MYSQL extension."); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + + }else{ + + /* Cehck connection informations */ + $cfg= $this->config->data['SERVERS']['LOG']; + + /* Open link to database and check if it is valid */ + $link = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']); + if ($link === FALSE){ + msg_dialog::display(_("Error"), msgPool::dbconnect($cfg['SERVER'],@mysql_error(),"Log view"), ERROR_DIALOG); + new log("debug","log view","dbconnect",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + + /* check of log database is available */ + if (! @mysql_select_db($cfg["DB"])){ + msg_dialog::display(_("Error"), msgPool::dbselect($cfg["DB"],@mysql_error(),"Log view"), ERROR_DIALOG); + new log("debug","log view","dbselect",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + + /* Get Host list, if still empty */ + if(count($this->hostlist) == 0){ + + /* Query database and check results */ + $query= "SELECT DISTINCT host FROM golog LIMIT 200;"; + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__, $query, "Database query"); + $result = @mysql_query($query); + if ($result === false){ + msg_dialog::display(_("Error"), msgPool::dbquery("golog",@mysql_error(),"Log view"), ERROR_DIALOG); + new log("debug","log view","dbquery",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + + /* Add hostnames to list */ + while ($line = mysql_fetch_array($result, MYSQL_ASSOC)){ + $this->hostlist[$line['host']]= $line['host']; + } + $this->hostlist['!All']= _("All"); + ksort($this->hostlist); + $smarty->assign("hostlist", $this->hostlist); + } + + /* Get log level list */ + if(count($this->loglevellist) == 0){ + + /* Try to get all used log level types */ + $query= "SELECT DISTINCT log_level FROM golog LIMIT 200;"; + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__, $query, "Database query"); + $result = @mysql_query($query); + if ($result === false){ + msg_dialog::display(_("Error"), msgPool::dbquery("golog",@mysql_error(),"Log view"), ERROR_DIALOG); + new log("debug","log view","dbquery",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + + /* Add each etry to log level list */ + while ($line = mysql_fetch_array($result, MYSQL_ASSOC)){ + $this->loglevellist[$line['log_level']]= $line['log_level']; + } + $this->loglevellist['!All']= _("All"); + ksort($this->loglevellist); + $smarty->assign("loglevellist", $this->loglevellist); + } + } + + /* Set list of available time sequences */ + if(count($this->tilist) == 0){ + + /* Time interval */ + $this->tilist= array("0" => _("one hour"), "1" => _("6 hours"), + "2" => _("12 hours"), "3" => _("24 hours"), + "4" => _("2 days"), "5" => _("one week"), + "6" => _("2 weeks"), "7" => _("one month")); + $smarty->assign("tilist", $this->tilist); + } + + $smarty->assign("regex", $logfilter['regex']); + + + /* Get acls */ + + $tmp_cat_bases = $this->ui->get_module_departments("logview"); + $all_acls = ""; + foreach($tmp_cat_bases as $acl_base){ + $all_acls .= $this->ui->get_permissions($acl_base,"logview/logview"); + } + if(count($tmp_cat_bases) == 0 || !preg_match("/r/",$all_acls)){ + $res = " + + ".msgPool::permView()." + + "; + + /* Show main page */ + $smarty->assign("range_selector", ""); + $smarty->assign("search_result", $res); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + + /* Query stuff */ + $res= ""; + $cfg = $this->config->data['SERVERS']['LOG']; + $tmp = set_error_handler('dummy_error_handler'); + $link = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']); + set_error_handler($tmp); + + /* Test connection object && create up query string */ + if ($link === FALSE){ + msg_dialog::display(_("Error"), msgPool::dbconnect($cfg['SERVER'],@mysql_error(),"Log view"), ERROR_DIALOG); + new log("debug","log view","dbconnect",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } else { + if (! @mysql_select_db($cfg["DB"])){ + msg_dialog::display(_("Error"), msgPool::dbselect($cfg["DB"],@mysql_error(),"Log view"), ERROR_DIALOG); + new log("debug","log view","dbselect",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } else { + + @timezone::get_default_timezone(); + + /* Assemble time query */ + switch ($logfilter['time']){ + case '0': + $start= date ("YmdHis", time() - 3600); + break; + ;; + case '1': + $start= date ("YmdHis", time() - 21600); + break; + ;; + case '2': + $start= date ("YmdHis", time() - 43200); + break; + ;; + case '3': + $start= date ("YmdHis", time() - 86400); + break; + ;; + case '4': + $start= date ("YmdHis", time() - 172800); + break; + ;; + case '5': + $start= date ("YmdHis", time() - 604800); + break; + ;; + case '6': + $start= date ("YmdHis", time() - 1209600); + break; + ;; + case '7': + $start= date ("YmdHis", time() - 2419200); + break; + ;; + } + + /* Assemble log level query */ + if ($logfilter['log_level'] == '!All'){ + $ll= ""; + } else { + $ll= "AND log_level='".$logfilter['log_level']."'"; + } + if ($logfilter['host'] == '!All'){ + $hf= ""; + } else { + $hf= "AND host='".$logfilter['host']."'"; + } + + /* Order setting */ + if ($this->sort_direction == "down"){ + $desc= "DESC"; + $sort_sign = "\\/"; + } else { + $desc= ""; + $sort_sign = "/\\"; + } + $end= date ("YmdHis"); + $query_base= " FROM + golog + WHERE + message like '".preg_replace("/\*/","%",$logfilter['regex'])."' + $ll + $hf + AND + time_stamp <= $end AND time_stamp >= $start"; + + /* Get number of entries */ + $query= "SELECT COUNT(*)".$query_base.";"; + $result = @mysql_query($query); + if(!$result){ + msg_dialog::display(_("Error"), msgPool::dbquery("golog",@mysql_error(),"Log view"), ERROR_DIALOG); + new log("debug","log view","dbquery",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + $line= mysql_fetch_array($result, MYSQL_ASSOC); + $count= $line['COUNT(*)']; + if ($count > 25){ + $smarty->assign("range_selector", range_selector($count, $this->start, $this->range,"EntriesPerPage")); + } else { + $smarty->assign("range_selector", ""); + } + + /* Query results */ + $query= "SELECT *".$query_base." ORDER BY ".$this->fields[$this->sort]." $desc LIMIT ".$this->start.",".$this->range.";"; + @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__, $query, "Database query"); + $result = @mysql_query($query); + if(!$result){ + msg_dialog::display(_("Error"), msgPool::dbquery("golog",@mysql_error(),"Log view"), ERROR_DIALOG); + new log("debug","log view","dbquery",array(),@mysql_error()); + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + /* Display results */ + $mod= 0; + + /* Add entries to result str */ + while ($line = mysql_fetch_array($result, MYSQL_ASSOC)){ + + /* Toggle background color */ + if ( ($mod++) & 1){ + $col= "background-color: #ECECEC;"; + } else { + $col= "background-color: #F5F5F5;"; + } + + $res.=" \n"; + $res.=" + \"".$line['log_level']."\" + "; + $res.=" ". + $line['host']." + "; + $res.=" ". + $line['time_stamp']." + "; + $res .= "". + $line['message']." + "; + $res.=" \n"; + } + mysql_close($link); + $smarty->assign("mode".$this->sort, $sort_sign); + $smarty->assign("host", $logfilter['host']); + $smarty->assign("log_level", $logfilter['log_level']); + + $smarty->assign("search_result", $res); + } + } + + /* Show main page */ + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + + + function save_object() + { + /* Get submitted range */ + if(isset($_POST['EntriesPerPage'])){ + if(is_numeric($_POST['EntriesPerPage'])){ + $this->range = $_POST['EntriesPerPage']; + } + } + + /* Save data */ + $logfilter= session::get("logfilter"); + + /* Get actual select boxe values */ + $logfilter_changed = 0; + foreach( array("host", "time", "log_level", "regex") as $type){ + + /* Set new value and test if value has changed */ + $last[$type] = $logfilter[$type]; + if (isset($_POST[$type])){ + $logfilter[$type]= $_POST[$type]; + } + + if ($last[$type] != $logfilter[$type]){ + $logfilter_changed = 1; + } + } + + /* Filter regex values */ + if ($logfilter['regex'] == ""){ + $logfilter['regex']= '%'; + } else { + $new = preg_replace('/\*\**/', '*', $logfilter['regex']); + $logfilter['regex']= $new; + } + + /* Store filter values */ + session::set("logfilter", $logfilter); + + /* Set start value */ + if (isset($_GET['start'])){ + $this->start= (int)$_GET['start']; + } + + /* Reset page number if filter has changed */ + if ($logfilter_changed > 0){ + $this->start= 0; + } + + /* Adapt sorting */ + if (isset($_GET['sort'])){ + if ($this->sort == (int)$_GET['sort']){ + if ($this->sort_direction == "down"){ + $this->sort_direction= "up"; + } else { + $this->sort_direction= "down"; + } + } + $this->sort= (int)$_GET['sort']; + if ($this->sort < 0 || $this->sort > 3){ + $this->sort= 0; + } + } + } + + + /* Return plugin informations for acl handling + #FIXME You can only read attributes within this report plugin */ + static function plInfo() + { + return (array( + "plShortName" => _("Log view"), + "plDescription" => _("Log view addon"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("addon"), + "plCategory" => array("logview" => array("objectClass" => "none", "description" => _("System logs"))), + + "plProvidedAcls" => array() + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/log/addons/logview/contents.tpl b/trunk/gosa-plugins/log/addons/logview/contents.tpl new file mode 100644 index 000000000..754adc4a7 --- /dev/null +++ b/trunk/gosa-plugins/log/addons/logview/contents.tpl @@ -0,0 +1,105 @@ +
+

[F]{t}Filter{/t}

+
+
+ + + + + + + + + + + + +
+ + + + + + + + + +
  + +
  + +
+
+   + + + + + + + + + + +
  + +
 
+
+   + + + + + + +
+ +
+
+
+ +
+ +{if $search_result ne ""} + + + + + + + + {$search_result} +
{t}Level{/t} {$mode0}{t}Hostname{/t} {$mode1}{t}Date{/t} {$mode2}{t}Message{/t} {$mode3}
+ + + + + +
{$range_selector}
+ +{else} + {t}Search returned no results...{/t} +{/if} + + + diff --git a/trunk/gosa-plugins/log/addons/logview/gosa_log_contents.tpl b/trunk/gosa-plugins/log/addons/logview/gosa_log_contents.tpl new file mode 100644 index 000000000..5d71d8103 --- /dev/null +++ b/trunk/gosa-plugins/log/addons/logview/gosa_log_contents.tpl @@ -0,0 +1,107 @@ +
+

[F]{t}Filter{/t}

+
+
+ + + + + + + + + + + + +
+ + + + + + + + + +
  + +
  + +
+
+   + + + + + + + + + + +
  + +
 
+
+   + + + + + + +
+ +
+
+
+ +
+ +{if $search_result ne ""} + + + + + + + + + + {$search_result} +
{t}Action{/t} {$mode0}{t}Date{/t} {$mode1}{t}User{/t} {$mode2}{t}Object type{/t} {$mode3}{t}Object{/t} {$mode4}{t}Message{/t} {$mode5}
+ + + + + +
{$range_selector}
+ +{else} + {t}Search returned no results...{/t} +{/if} + + + diff --git a/trunk/gosa-plugins/log/addons/logview/main.inc b/trunk/gosa-plugins/log/addons/logview/main.inc new file mode 100644 index 000000000..13a811a7b --- /dev/null +++ b/trunk/gosa-plugins/log/addons/logview/main.inc @@ -0,0 +1,54 @@ +data['TABS']['LOGTABS'],"")); + } + $log_tabs = session::get('log_tabs'); + + /* Execute formular */ +# $display= $log_tabs->save_object(); + $display= $log_tabs->execute (); + $display.= "\n"; + + /* Page header*/ + $display= print_header(get_template_path('plugins/log/images/plugin.png'), _("System log view")).$display; + + /* Store changes in session */ + session::set('log_tabs',$log_tabs); +} +?> diff --git a/trunk/gosa-plugins/log/addons/logview/tabs_log.inc b/trunk/gosa-plugins/log/addons/logview/tabs_log.inc new file mode 100644 index 000000000..bb855d28b --- /dev/null +++ b/trunk/gosa-plugins/log/addons/logview/tabs_log.inc @@ -0,0 +1,24 @@ + diff --git a/trunk/gosa-plugins/log/admin/systems/services/log/class_gosaLogServer.inc b/trunk/gosa-plugins/log/admin/systems/services/log/class_gosaLogServer.inc new file mode 100644 index 000000000..ee9ec4425 --- /dev/null +++ b/trunk/gosa-plugins/log/admin/systems/services/log/class_gosaLogServer.inc @@ -0,0 +1,108 @@ +DisplayName = _("GOsa MySQL logging service"); + } + + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + return($smarty->fetch(get_template_path("gosaLogServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("GOsa MySQL logging service"); + #$fields['AllowEdit'] = true; + #$fields['AllowStart'] = FALSE; + #$fields['AllowStop'] = FALSE; + #$fields['AllowRestart'] = FALSE; + return($fields); + } + + + function check() + { + $message = plugin::check(); + if (empty($this->goLogDBUser)){ + $message[]= msgPool::required(_("User")); + } + if (empty($this->goLogDBPassword)){ + $message[]= msgPool::required(_("Password")); + } + if (empty($this->goLogDB)){ + $message[]= msgPool::required(_("Database")); + } + return($message); + } + + + function save_object() + { + if(isset($_POST['gosaLogServerPosted'])){ + plugin::save_object(); + } + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("GOsa logging service"), + "plDescription" => _("GOsa logging service")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 98, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "goLogDB" => _("Database"), + "goLogDBUser" => _("User"), + "goLogDBPassword" => _("Password"), + "viewEntries" => _("Allow view of entries on this server")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/log/admin/systems/services/log/gosaLogServer.tpl b/trunk/gosa-plugins/log/admin/systems/services/log/gosaLogServer.tpl new file mode 100644 index 000000000..9c062390a --- /dev/null +++ b/trunk/gosa-plugins/log/admin/systems/services/log/gosaLogServer.tpl @@ -0,0 +1,35 @@ +

{t}GOsa logging database{/t}

+ + + + + + + + + + + + + +
{t}Database{/t}{$must} +{render acl=$goLogDBACL} + +{/render} +
{t}Database user{/t}{$must} +{render acl=$goLogDBUserACL} + +{/render} +
{t}Password{/t}{$must} +{render acl=$goLogDBPasswordACL} + +{/render} +
+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/log/contrib/goconfig.ldif b/trunk/gosa-plugins/log/contrib/goconfig.ldif new file mode 100644 index 000000000..7e1797512 --- /dev/null +++ b/trunk/gosa-plugins/log/contrib/goconfig.ldif @@ -0,0 +1,7 @@ +dn: cn=goconfig,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: goconfig +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.10.8 NAME 'goLogcheckIgnoreMatch' DESC 'Contains a regular expression to ignore' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.10.9 NAME 'goLogcheckMatch' DESC 'Contains a regular expression to ignore' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.10098.1.1.10.10 NAME 'goLogcheckCategory' DESC 'Contains a regular expression to ignore' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) +olcObjectClasses: (1.3.6.1.4.1.10098.1.2.2.2 NAME 'goLogcheckObject' SUP top STRUCTURAL DESC 'Logcheck rule container (v2.4)' MUST ( cn $ goLogcheckCategory ) MAY ( goLogcheckMatch $ goLogcheckIgnoreMatch )) diff --git a/trunk/gosa-plugins/log/contrib/goconfig.schema b/trunk/gosa-plugins/log/contrib/goconfig.schema new file mode 100644 index 000000000..64fbf8498 --- /dev/null +++ b/trunk/gosa-plugins/log/contrib/goconfig.schema @@ -0,0 +1,43 @@ +## +## +## goconfig.schema - Needed by the GONICUS System Administator +## +## Version 030719 +## +## +## Maintainer: Lars Scheiter (scheiter@GONICUS.de) +## Cajus Pollmeier (pollmeier@GONICUS.de) +## +## + + +# Attributes for the GONICUS server extensions + +# Syntax: regex +attributetype ( 1.3.6.1.4.1.10098.1.1.10.8 NAME 'goLogcheckIgnoreMatch' + DESC 'Contains a regular expression to ignore' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +# Syntax: regex +attributetype ( 1.3.6.1.4.1.10098.1.1.10.9 NAME 'goLogcheckMatch' + DESC 'Contains a regular expression to ignore' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +# Syntax: value +attributetype ( 1.3.6.1.4.1.10098.1.1.10.10 NAME 'goLogcheckCategory' + DESC 'Contains a regular expression to ignore' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE) + +## +## Objectclasses +## + +# Logging object +objectclass (1.3.6.1.4.1.10098.1.2.2.2 NAME 'goLogcheckObject' SUP top STRUCTURAL + DESC 'Logcheck rule container (v2.4)' + MUST ( cn $ goLogcheckCategory ) + MAY ( goLogcheckMatch $ goLogcheckIgnoreMatch )) + diff --git a/trunk/gosa-plugins/log/contrib/golog.sql b/trunk/gosa-plugins/log/contrib/golog.sql new file mode 100644 index 000000000..d5b5f6b32 --- /dev/null +++ b/trunk/gosa-plugins/log/contrib/golog.sql @@ -0,0 +1,14 @@ + +create database gomon; +use gomon; + +create table golog ( + time_stamp DATETIME, + host VARCHAR(50), + message VARCHAR(255), + log_level VARCHAR(15), + matched_dn VARCHAR(255), + matched_ts DATETIME + ); + +GRANT INSERT,SELECT,DELETE ON gomon.golog TO gomon@localhost IDENTIFIED BY 'somemysqlpass'; diff --git a/trunk/gosa-plugins/log/contrib/logging.sql b/trunk/gosa-plugins/log/contrib/logging.sql new file mode 100644 index 000000000..8ddf9dace --- /dev/null +++ b/trunk/gosa-plugins/log/contrib/logging.sql @@ -0,0 +1,41 @@ + +CREATE DATABASE `gosa_log`; +USE `gosa_log`; + +DROP TABLE IF EXISTS `gosa_locations`; +CREATE TABLE `gosa_locations` ( + `id` int(11) NOT NULL auto_increment, + `location` text NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; + +DROP TABLE IF EXISTS `gosa_log`; +CREATE TABLE `gosa_log` ( + `id` int(10) unsigned NOT NULL auto_increment, + `timestamp` int(10) NOT NULL, + `user` text NOT NULL, + `action` varchar(255) NOT NULL, + `objecttype` varchar(255) NOT NULL, + `object` text NOT NULL, + `changes` blob NOT NULL, + `result` varchar(255) NOT NULL, + `location_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `action` (`action`), + KEY `timestamp` (`timestamp`), + KEY `objecttype` (`objecttype`), + KEY `result` (`result`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + + +-- %HOST% The name of the source host (e.g. locahost,vserver-01,% WHERE % allows all) +-- %USER% The username +-- %PWD% The password for the new user + +-- CREATE USER '%USER%'@'%HOST%' IDENTIFIED BY '%PWD%'; + +-- GRANT SELECT , INSERT , UPDATE , DELETE +-- ON `gosa_log`.* +-- TO '%USER%'@'%HOST%' +-- IDENTIFIED BY '%PWD%'; + diff --git a/trunk/gosa-plugins/log/help/guide.xml b/trunk/gosa-plugins/log/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/log/html/images/log_warning.png b/trunk/gosa-plugins/log/html/images/log_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..8d72794dd0f14442b856ab4aca6b23edcb8c5d4f GIT binary patch literal 829 zcmV-D1H$}?P)jvIz;=F|l)Tfu#R@`}pnKt1pLs{9;(n$ilD%sP3ob z5{N#40AgW40PcUk872uT3CD{##4~fM*fB72@iH(lGBW)C^qTwIokPLT_pJ%jhyFD=RTG z&23J4dhNqQpl}mN4j_Qw2C%X-6pGvEGBAjWGcbHS3N{f1FfubRO2{zCIcPAvzIUP! zW&l6{A-urGz{4y6bk*lGAWt)31%G)MSOh;ZFtRf6z=Qw-2yOt-wZHzqyUN1I^@o9h znFHv8|7b1%2J*Kb4F5hoV)*-?0q#720D>Fv{WC+y%PU`-Bm^!oFtD&QFfcJ9G=t0n z8Tj`n!{hUR7`}aE=z&QA1P~M41%DW(KRw5A{_AU?3s`_&`S%5Z{{u1WSBB3o{xCc^ z$#5R1b^=TvKmfrF_|M4j=KDK_ju#h!Y@h=ectH^h#X$CdHU@@AXMu6|mZ1X}jc;K3 z00IbZz~6sBSF7>N@gfEZ!fSzcZqk#7F~ zx7F6xNmf-=4LNY&;Lpd8AI<;#`O`+A)M1#KKYt*B1`uEXD1``7@-9f-00000NkvXX Hu0mjfd9P)B literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/log/html/images/plugin.png b/trunk/gosa-plugins/log/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..e19bad6e576b94991c5d59ab1b6d0bd2afcfe6ed GIT binary patch literal 2216 zcmV;Z2v_%sP)YzEAqfc|Aptg3blti{TPl%? zRn0kRcjO=NW?M=B*6OqPi!$i~U0 zh_Yc3bO?m(s=a&nzPMw@j-3q+4UtNd5|f>roV<1H*s;Iv-@pG&05>@zdWmR=tYgcT zEzbr5fffDz{U9e`7zSo%XDed7di81-b7PL=z()Y4Sxy`QeoYio0{Sj3t&YY>aY zz+?IjfNQ8N*f)XrohHk4e z8hd-@%o+6d_97SzLen%<0+`pr!UDRxyRmiaRxnppV01N5Gk^B%Sv@pv3=x0}oFQbmCE&r*`HebV)^6PYxV zm9fJ1?c34S)rFb)Eb@gsLVg_=E?mHg6DMFtRaF(z=`_^Q4qey9GMUWXIKZ5Qo8ndO zfRd0(8aBCrN*4N~27dI~huFMkIaWq$@y|;`_+IB)?Afyi`}XaFLSthi+S=MMGczL( zs;;gEl|H0WDI^jJmL*41oapQ8`!WtNA5n$kc)JLQEb{rh*v_3h@!3!czyI5R(B1WQ zd}Bi`B4Ho&sxUqqor6`J!M1JNaP;U=xo%)!Kx`54?@az~7ct@E^?DseK#tjL7M-1) zc>chL2(DZYvuL3@pkr!xDtukG;U5Lq2(h;Eab3xbq&_l`*8gHH5fUQh`C_oi>Rrs zK`NO-Q*#r~w9Hg(O)WCn42EwEqrJUd#_5GLT$)SrBYrE6jtw2i7#U0_rlro$&&|Vv zCHEK|9mU$UYjI=v2CiSfE>&n_XrqG&xae3g#R@cQS<8ni4TvQ(_}AbRTIyQJ844$n z&zTmyx>v3%m<4bPBI80qW?aqa;I%<1&E+!s{Oac@ml;EyGdw)3CYB??&N+yH1$prJ z_&5Sy4Yhs?sjMjy%4Bm$8)?!$Fi#F{Yz!huvijoM7kqP>#iqt4Xl{)O^TRliMP6g0 zW0;tna8i2Zobu0_OM?q8CpjPz5>1{vcMdN;xgNj#`z_SfhVj(~H@sF3%Y$wVL^Jrs zPdDS#sZ%`r{19opCZ{GPfAV>`2Y<((c_qCac_$9B^!Vtk3YoHCm^gg+9UM6DJN)Xq zMI7o);2)QZINhH@L$wF{o_z?d!5n`6=Rd(M3m!=P7bhy zM8|T$E3dqa-Me?={g=Oug^UT0*MsHZAU^*1BfR>vHseM*RkN22_8fqN2ymz*<4c;m z=df2HG6zWv@wVInUH9OH-7iQ#^ZFlNLoSzF>IgW`0asZBT3cH16Y7i7CqF=twExFn z{|3K(;|+|Cje@XbNo)a*azGMBt(rf4?m1*W{S*UFKZ8fp2ATj|K6nt{dFE+MJ@EuS zIDJ}r9Y%9=GYH%&@b$cU^5P~{ZDuBgy1M1a7zWHzq}Bd|qiGc_DH!$j5o$AT!Rzy4 zVq)U|5^|ganpQFw-8c^;HipFE_wdw9FQMv_PvEDAZFu}~Bn}5EOE)^|YQzO>|tE!|dx3#Uq#Y-2NgQ`M` zm!lkDZ{;RBzOEKNBBi7@bYn=Y463iWE9t0? zR&$aA;s7M$$;4}1y*h|>4{t^`J`FRM1!%U7oPiv5lJP_my2wW$eUEA%1c6=5^!NYQs0+GvQ`CM*6M7qgjQjQGz*Lg2w!BROOc4gqdc=TJHsDqB7 zAMZl2-VgVaPa#hU9E(QbwXF$0pC2tGp@M0O{*#FW{Qdw{t{Q|wA!?CFD4;7aMH=UA zr_bxSVR|~wruM+xj&QH9HYTil?sECKXc>-1qqply)%xUUKVXl5B-(|G7qQ_7&!efQ z2VQa}+0l-{_ui$X^}~)$o4&$tG~~MKWz{e;21Z71V*UDdOvGaF2Lj~aw7hA%a%DhP zc84gn5)R6!nsv39F#=Tq965d*9Ylml^uPO#RFiUykVMkyh4MYHR3ZDUjzve+;^g?< zv~Y4c$pOn+bR}N4EQHu(42%$s7lUD>%fh}mL3@wo5X_0WIg5aOTmev#bhaM=ctazR zkg-L;(-HS4*vt;zZVqNj!zx{0000z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ0tk-OlK0J5%RKl$ZR3;ww?F;)|LyPp{~b%O z|F4;N;{T)X|No!=@b7=_n*0AntmpmbQ|+4%(+3bhFwFt#S%>~lz4GP%%b)-Mzy0<9 z|2rVQaR1}~lQ-Y}zyIz3{~Moy{Ez?tcb@(9U(jgUe=e!E0FYjQ0Af~6+AF~D@Be-$ zKXs0HBO!+WK*4`N40JgICl5OV7au3XZ=gVVMk2$p1N#`f0|FR+i3u`X*?!4`iPd%{ zKmalQ|NAe1ONvh*(n6f!7f|8PzYzQbgh6~DE=x~j*u7~TgR!$0!yBN0tez|bpQ?nw zzdwHi00M~V|DV713MxVj94t&=4Ium-N`nk32Ws90)LbxaIm2H~JBIyFzB1hZ_>)1- zQ4u)mHn@KXrNb@l;1LLNzvXFu8`v-;%OBXP>XH_!1_{qp1 z1N0W#uRjbo58h@Fmf!~&pa2j+OhAHx5h(HI^=F1RU;hG~$iVOxi0?mmz+i804-Vv= z)7ly4rg$-M{QAnk%k-at_3Kv#P8Ogo|Nk=p1P}`-k$ipkmBBK|h=B!Y^@pGT8912# zGZggCWw>_y0K>c!w-|UuC4k=f&+y|v3j;SVGlN5{1;g>RXF+B^00=p1Y;hc1zbQ2o}7Ka@ZijS zP?FvN5I{`N_eFz~=gKLE8UFqF4K{?EnSlZ5QigAzelmOpdXERl28o0G{rBq+hD8-? zK(;3WgZcwN05OAD-=1!|@sHD4;rO1L2I^`e49c?nK(8<`tlDs$;p&-(4Cdx?KxZ>B zoH~4$p(=6?!|NySCjd211nC6`Ae79+tK1s^%zg8X4W$GkLUb8a{{6>r^WHm# zWs6RO4EO-G8J?K{0*DbkQ*ny7fKwRIAbTKI07divfBzqV0u1D5kh7810|XcV^d_H1 Tk^AtW00000NkvXXu0mjfSz_lE literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/log/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/log/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..af2809aa3 --- /dev/null +++ b/trunk/gosa-plugins/log/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,242 @@ +# translation of messages.po to Deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:33+0100\n" +"PO-Revision-Date: 2008-04-03 14:22+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: admin/systems/services/log/class_gosaLogServer.inc:27 +#: admin/systems/services/log/class_gosaLogServer.inc:55 +msgid "GOsa MySQL logging service" +msgstr "GOsa MySQL-Protokoll-Dienst" + +#: admin/systems/services/log/class_gosaLogServer.inc:68 +#: admin/systems/services/log/class_gosaLogServer.inc:101 +#: addons/logview/gosa_log_contents.tpl:84 +msgid "User" +msgstr "Benutzer" + +#: admin/systems/services/log/class_gosaLogServer.inc:71 +#: admin/systems/services/log/class_gosaLogServer.inc:102 +#: admin/systems/services/log/gosaLogServer.tpl:20 +msgid "Password" +msgstr "Passwort" + +#: admin/systems/services/log/class_gosaLogServer.inc:74 +#: admin/systems/services/log/class_gosaLogServer.inc:100 +#: admin/systems/services/log/gosaLogServer.tpl:4 +msgid "Database" +msgstr "Datenbank" + +#: admin/systems/services/log/class_gosaLogServer.inc:91 +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "GOsa logging service" +msgstr "GOsa Protokoll-Dienst" + +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/log/class_gosaLogServer.inc:103 +msgid "Allow view of entries on this server" +msgstr "Erlaube Anzeigen von Einträgen auf diesem Server" + +#: admin/systems/services/log/gosaLogServer.tpl:1 +msgid "GOsa logging database" +msgstr "GOsa Protokoll-Datenbank" + +#: admin/systems/services/log/gosaLogServer.tpl:12 +msgid "Database user" +msgstr "Datenbank-Benutzer" + +#: addons/logview/gosa_log_contents.tpl:2 addons/logview/contents.tpl:2 +msgid "Filter" +msgstr "Filter" + +#: addons/logview/gosa_log_contents.tpl:11 addons/logview/contents.tpl:11 +msgid "Show hosts" +msgstr "Zeige Rechner" + +#: addons/logview/gosa_log_contents.tpl:20 +#: addons/logview/gosa_log_contents.tpl:82 +msgid "Action" +msgstr "Aktion" + +#: addons/logview/gosa_log_contents.tpl:38 addons/logview/contents.tpl:38 +msgid "Time interval" +msgstr "Zeit-Intervall" + +#: addons/logview/gosa_log_contents.tpl:47 addons/logview/contents.tpl:47 +msgid "Search for" +msgstr "Suche nach" + +#: addons/logview/gosa_log_contents.tpl:48 addons/logview/contents.tpl:48 +msgid "Enter string to search for" +msgstr "Zu suchende Zeichenkette" + +#: addons/logview/gosa_log_contents.tpl:60 addons/logview/contents.tpl:60 +msgid "Ruleset" +msgstr "Regelsatz" + +#: addons/logview/gosa_log_contents.tpl:62 addons/logview/contents.tpl:62 +msgid "Edit" +msgstr "Bearbeiten" + +#: addons/logview/gosa_log_contents.tpl:68 addons/logview/contents.tpl:68 +msgid "Search" +msgstr "Suchen" + +#: addons/logview/gosa_log_contents.tpl:83 addons/logview/contents.tpl:84 +msgid "Date" +msgstr "Datum" + +#: addons/logview/gosa_log_contents.tpl:85 +msgid "Object type" +msgstr "Objekttyp" + +#: addons/logview/gosa_log_contents.tpl:86 +msgid "Object" +msgstr "Objekt" + +#: addons/logview/gosa_log_contents.tpl:87 addons/logview/contents.tpl:85 +msgid "Message" +msgstr "Nachricht" + +#: addons/logview/gosa_log_contents.tpl:99 addons/logview/contents.tpl:97 +msgid "Search returned no results..." +msgstr "Die Suche verlief ergebnislos..." + +#: addons/logview/class_logview.inc:6 addons/logview/class_logview.inc:418 +#: addons/logview/class_gosa_logview.inc:6 +msgid "System logs" +msgstr "Systemprotokolle" + +#: addons/logview/class_logview.inc:7 addons/logview/class_gosa_logview.inc:7 +msgid "This does something" +msgstr "Dies tut etwas" + +#: addons/logview/class_logview.inc:79 +#: addons/logview/class_gosa_logview.inc:118 +msgid "Warning" +msgstr "Warnung" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +msgid "Configuration error" +msgstr "Konfigurationsfehler" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, php-format +msgid "Missing %s PHP extension!" +msgstr "Fehlende %s PHP-Erweiterung!" + +#: addons/logview/class_logview.inc:95 addons/logview/class_logview.inc:102 +#: addons/logview/class_logview.inc:115 addons/logview/class_logview.inc:137 +#: addons/logview/class_logview.inc:195 addons/logview/class_logview.inc:200 +#: addons/logview/class_logview.inc:277 addons/logview/class_logview.inc:294 +#: addons/logview/class_gosa_logview.inc:149 +#: addons/logview/class_gosa_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:235 +#: addons/logview/class_gosa_logview.inc:286 +msgid "Error" +msgstr "Fehler" + +#: addons/logview/class_logview.inc:124 addons/logview/class_logview.inc:146 +#: addons/logview/class_gosa_logview.inc:167 +#: addons/logview/class_gosa_logview.inc:182 +msgid "All" +msgstr "Alle" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "one hour" +msgstr "eine Stunde" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "6 hours" +msgstr "6 Stunden" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "12 hours" +msgstr "12 Stunden" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "24 hours" +msgstr "24 Stunden" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "2 days" +msgstr "2 Tage" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "one week" +msgstr "eine Woche" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "2 weeks" +msgstr "2 Wochen" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "one month" +msgstr "ein Monat" + +#: addons/logview/class_logview.inc:412 +msgid "Log view" +msgstr "Protokollanzeige" + +#: addons/logview/class_logview.inc:413 +msgid "Log view addon" +msgstr "Protokollanzeige-Erweiterung" + +#: addons/logview/main.inc:49 +msgid "System log view" +msgstr "Systemprotokolle" + +#: addons/logview/class_gosa_logview.inc:201 +msgid "You have insufficient permissions to view syslog entries." +msgstr "" +"Sie haben keine ausreichenden Zugriffsrechte, um das Systemprotokoll " +"einzusehen." + +#: addons/logview/class_gosa_logview.inc:236 +#, php-format +msgid "Missing logging table (%s.%s) update your GOsa logging database schema." +msgstr "" +"Fehlende Protokollierungstabelle (%s.%s). Aktualisieren Sie Ihr GOsa " +"Protokolldatenbank-Schema." + +#: addons/logview/contents.tpl:20 +msgid "Log level" +msgstr "Priorität" + +#: addons/logview/contents.tpl:82 +msgid "Level" +msgstr "Level" + +#: addons/logview/contents.tpl:83 +msgid "Hostname" +msgstr "Hostname" diff --git a/trunk/gosa-plugins/log/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/log/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..9401fb98f --- /dev/null +++ b/trunk/gosa-plugins/log/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,255 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:33+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/systems/services/log/class_gosaLogServer.inc:27 +#: admin/systems/services/log/class_gosaLogServer.inc:55 +#, fuzzy +msgid "GOsa MySQL logging service" +msgstr "servicio de registro de GOsa" + +#: admin/systems/services/log/class_gosaLogServer.inc:68 +#: admin/systems/services/log/class_gosaLogServer.inc:101 +#: addons/logview/gosa_log_contents.tpl:84 +msgid "User" +msgstr "Usuario" + +#: admin/systems/services/log/class_gosaLogServer.inc:71 +#: admin/systems/services/log/class_gosaLogServer.inc:102 +#: admin/systems/services/log/gosaLogServer.tpl:20 +msgid "Password" +msgstr "Contraseña" + +#: admin/systems/services/log/class_gosaLogServer.inc:74 +#: admin/systems/services/log/class_gosaLogServer.inc:100 +#: admin/systems/services/log/gosaLogServer.tpl:4 +msgid "Database" +msgstr "Bases de datos" + +#: admin/systems/services/log/class_gosaLogServer.inc:91 +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "GOsa logging service" +msgstr "servicio de registro de GOsa" + +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/log/class_gosaLogServer.inc:103 +msgid "Allow view of entries on this server" +msgstr "Permitir vista de entradas en este servidor" + +#: admin/systems/services/log/gosaLogServer.tpl:1 +msgid "GOsa logging database" +msgstr "" + +#: admin/systems/services/log/gosaLogServer.tpl:12 +msgid "Database user" +msgstr "Usuario de base de datos" + +#: addons/logview/gosa_log_contents.tpl:2 addons/logview/contents.tpl:2 +msgid "Filter" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:11 addons/logview/contents.tpl:11 +msgid "Show hosts" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:20 +#: addons/logview/gosa_log_contents.tpl:82 +msgid "Action" +msgstr "Acción" + +#: addons/logview/gosa_log_contents.tpl:38 addons/logview/contents.tpl:38 +msgid "Time interval" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:47 addons/logview/contents.tpl:47 +msgid "Search for" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:48 addons/logview/contents.tpl:48 +msgid "Enter string to search for" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:60 addons/logview/contents.tpl:60 +msgid "Ruleset" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:62 addons/logview/contents.tpl:62 +msgid "Edit" +msgstr "Editar" + +#: addons/logview/gosa_log_contents.tpl:68 addons/logview/contents.tpl:68 +msgid "Search" +msgstr "Buscar" + +#: addons/logview/gosa_log_contents.tpl:83 addons/logview/contents.tpl:84 +msgid "Date" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:85 +#, fuzzy +msgid "Object type" +msgstr "Objeto" + +#: addons/logview/gosa_log_contents.tpl:86 +msgid "Object" +msgstr "Objeto" + +#: addons/logview/gosa_log_contents.tpl:87 addons/logview/contents.tpl:85 +msgid "Message" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:99 addons/logview/contents.tpl:97 +msgid "Search returned no results..." +msgstr "" + +#: addons/logview/class_logview.inc:6 addons/logview/class_logview.inc:418 +#: addons/logview/class_gosa_logview.inc:6 +msgid "System logs" +msgstr "" + +#: addons/logview/class_logview.inc:7 addons/logview/class_gosa_logview.inc:7 +msgid "This does something" +msgstr "" + +#: addons/logview/class_logview.inc:79 +#: addons/logview/class_gosa_logview.inc:118 +msgid "Warning" +msgstr "Aviso" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy +msgid "Configuration error" +msgstr "Se puede escribir en la configuración" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Eliminar extensión de impresión" + +#: addons/logview/class_logview.inc:95 addons/logview/class_logview.inc:102 +#: addons/logview/class_logview.inc:115 addons/logview/class_logview.inc:137 +#: addons/logview/class_logview.inc:195 addons/logview/class_logview.inc:200 +#: addons/logview/class_logview.inc:277 addons/logview/class_logview.inc:294 +#: addons/logview/class_gosa_logview.inc:149 +#: addons/logview/class_gosa_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:235 +#: addons/logview/class_gosa_logview.inc:286 +msgid "Error" +msgstr "Error" + +#: addons/logview/class_logview.inc:124 addons/logview/class_logview.inc:146 +#: addons/logview/class_gosa_logview.inc:167 +#: addons/logview/class_gosa_logview.inc:182 +msgid "All" +msgstr "" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "one hour" +msgstr "" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "6 hours" +msgstr "" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "12 hours" +msgstr "" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "24 hours" +msgstr "" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "2 days" +msgstr "" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "one week" +msgstr "" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "2 weeks" +msgstr "" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "one month" +msgstr "" + +#: addons/logview/class_logview.inc:412 +msgid "Log view" +msgstr "" + +#: addons/logview/class_logview.inc:413 +msgid "Log view addon" +msgstr "" + +#: addons/logview/main.inc:49 +msgid "System log view" +msgstr "" + +#: addons/logview/class_gosa_logview.inc:201 +msgid "You have insufficient permissions to view syslog entries." +msgstr "" + +#: addons/logview/class_gosa_logview.inc:236 +#, php-format +msgid "Missing logging table (%s.%s) update your GOsa logging database schema." +msgstr "" + +#: addons/logview/contents.tpl:20 +msgid "Log level" +msgstr "" + +#: addons/logview/contents.tpl:82 +msgid "Level" +msgstr "" + +#: addons/logview/contents.tpl:83 +msgid "Hostname" +msgstr "" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#, fuzzy +#~ msgid "No %s servers defined!" +#~ msgstr "Servidor de registro de sistema activado" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "¡No puedo conectar al servidor de base de datos postgresql!." + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "No se puede añadir la cuenta a la base de datos Kerberos" diff --git a/trunk/gosa-plugins/log/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/log/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..082033070 --- /dev/null +++ b/trunk/gosa-plugins/log/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,234 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:33+0100\n" +"PO-Revision-Date: 2008-06-08 14:13+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/services/log/class_gosaLogServer.inc:27 +#: admin/systems/services/log/class_gosaLogServer.inc:55 +msgid "GOsa MySQL logging service" +msgstr "Service de journaux systèmes GOsa MySQL" + +#: admin/systems/services/log/class_gosaLogServer.inc:68 +#: admin/systems/services/log/class_gosaLogServer.inc:101 +#: addons/logview/gosa_log_contents.tpl:84 +msgid "User" +msgstr "Utilisateur" + +#: admin/systems/services/log/class_gosaLogServer.inc:71 +#: admin/systems/services/log/class_gosaLogServer.inc:102 +#: admin/systems/services/log/gosaLogServer.tpl:20 +msgid "Password" +msgstr "Mot de passe" + +#: admin/systems/services/log/class_gosaLogServer.inc:74 +#: admin/systems/services/log/class_gosaLogServer.inc:100 +#: admin/systems/services/log/gosaLogServer.tpl:4 +msgid "Database" +msgstr "Base de données" + +#: admin/systems/services/log/class_gosaLogServer.inc:91 +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "GOsa logging service" +msgstr "Service de journaux systèmes GOsa" + +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/log/class_gosaLogServer.inc:103 +msgid "Allow view of entries on this server" +msgstr "Permet la visualisation d'entrées sur ce serveur" + +#: admin/systems/services/log/gosaLogServer.tpl:1 +msgid "GOsa logging database" +msgstr "Base de données des journaux systèmes GOsa" + +#: admin/systems/services/log/gosaLogServer.tpl:12 +msgid "Database user" +msgstr "Utilisateur de la base de donées" + +#: addons/logview/gosa_log_contents.tpl:2 addons/logview/contents.tpl:2 +msgid "Filter" +msgstr "Filtre" + +#: addons/logview/gosa_log_contents.tpl:11 addons/logview/contents.tpl:11 +msgid "Show hosts" +msgstr "Afficher les machines" + +#: addons/logview/gosa_log_contents.tpl:20 +#: addons/logview/gosa_log_contents.tpl:82 +msgid "Action" +msgstr "Action" + +#: addons/logview/gosa_log_contents.tpl:38 addons/logview/contents.tpl:38 +msgid "Time interval" +msgstr "Intervalle de temps" + +#: addons/logview/gosa_log_contents.tpl:47 addons/logview/contents.tpl:47 +msgid "Search for" +msgstr "Recherche de" + +#: addons/logview/gosa_log_contents.tpl:48 addons/logview/contents.tpl:48 +msgid "Enter string to search for" +msgstr "Entrée la chaîne de caractères à rechercher" + +#: addons/logview/gosa_log_contents.tpl:60 addons/logview/contents.tpl:60 +msgid "Ruleset" +msgstr "Ensemble de règles" + +#: addons/logview/gosa_log_contents.tpl:62 addons/logview/contents.tpl:62 +msgid "Edit" +msgstr "Editer" + +#: addons/logview/gosa_log_contents.tpl:68 addons/logview/contents.tpl:68 +msgid "Search" +msgstr "Recherche" + +#: addons/logview/gosa_log_contents.tpl:83 addons/logview/contents.tpl:84 +msgid "Date" +msgstr "Date" + +#: addons/logview/gosa_log_contents.tpl:85 +msgid "Object type" +msgstr "Type de l'objet" + +#: addons/logview/gosa_log_contents.tpl:86 +msgid "Object" +msgstr "Objet" + +#: addons/logview/gosa_log_contents.tpl:87 addons/logview/contents.tpl:85 +msgid "Message" +msgstr "Message" + +#: addons/logview/gosa_log_contents.tpl:99 addons/logview/contents.tpl:97 +msgid "Search returned no results..." +msgstr "La recherche n'a renvoyé aucun résultat..." + +#: addons/logview/class_logview.inc:6 addons/logview/class_logview.inc:418 +#: addons/logview/class_gosa_logview.inc:6 +msgid "System logs" +msgstr "Journaux systèmes" + +#: addons/logview/class_logview.inc:7 addons/logview/class_gosa_logview.inc:7 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: addons/logview/class_logview.inc:79 +#: addons/logview/class_gosa_logview.inc:118 +msgid "Warning" +msgstr "Avertissement" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +msgid "Configuration error" +msgstr "Erreur de configuration" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, php-format +msgid "Missing %s PHP extension!" +msgstr "Extension PHP %s manquante !" + +#: addons/logview/class_logview.inc:95 addons/logview/class_logview.inc:102 +#: addons/logview/class_logview.inc:115 addons/logview/class_logview.inc:137 +#: addons/logview/class_logview.inc:195 addons/logview/class_logview.inc:200 +#: addons/logview/class_logview.inc:277 addons/logview/class_logview.inc:294 +#: addons/logview/class_gosa_logview.inc:149 +#: addons/logview/class_gosa_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:235 +#: addons/logview/class_gosa_logview.inc:286 +msgid "Error" +msgstr "Erreur" + +#: addons/logview/class_logview.inc:124 addons/logview/class_logview.inc:146 +#: addons/logview/class_gosa_logview.inc:167 +#: addons/logview/class_gosa_logview.inc:182 +msgid "All" +msgstr "Tout" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "one hour" +msgstr "une heure" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "6 hours" +msgstr "6 heures" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "12 hours" +msgstr "12 heures" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "24 hours" +msgstr "24 heures" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "2 days" +msgstr "2 jours" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "one week" +msgstr "une semaine" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "2 weeks" +msgstr "2 semaines" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "one month" +msgstr "un mois" + +#: addons/logview/class_logview.inc:412 +msgid "Log view" +msgstr "Visualisation des journaux systèmes" + +#: addons/logview/class_logview.inc:413 +msgid "Log view addon" +msgstr "Extension de visualisation des journaux systèmes" + +#: addons/logview/main.inc:49 +msgid "System log view" +msgstr "Affichage des journaux système" + +#: addons/logview/class_gosa_logview.inc:201 +msgid "You have insufficient permissions to view syslog entries." +msgstr "" +"Vous n'avez pas l'autorisation pour voir les entrées des journaux systèmes." + +#: addons/logview/class_gosa_logview.inc:236 +#, php-format +msgid "Missing logging table (%s.%s) update your GOsa logging database schema." +msgstr "" +"La table journaux systèmes (%s.%s) est manquante, mettez à jour vos schéma " +"de base de données pour l'application des journaux systèmes de GOsa." + +#: addons/logview/contents.tpl:20 +msgid "Log level" +msgstr "Niveaux des journaux systèmes" + +#: addons/logview/contents.tpl:82 +msgid "Level" +msgstr "Niveau" + +#: addons/logview/contents.tpl:83 +msgid "Hostname" +msgstr "Nom d'hôte" diff --git a/trunk/gosa-plugins/log/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/log/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..3e2856902 --- /dev/null +++ b/trunk/gosa-plugins/log/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,264 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:33+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/systems/services/log/class_gosaLogServer.inc:27 +#: admin/systems/services/log/class_gosaLogServer.inc:55 +#, fuzzy +msgid "GOsa MySQL logging service" +msgstr "Utenti di Dominio" + +#: admin/systems/services/log/class_gosaLogServer.inc:68 +#: admin/systems/services/log/class_gosaLogServer.inc:101 +#: addons/logview/gosa_log_contents.tpl:84 +msgid "User" +msgstr "" + +#: admin/systems/services/log/class_gosaLogServer.inc:71 +#: admin/systems/services/log/class_gosaLogServer.inc:102 +#: admin/systems/services/log/gosaLogServer.tpl:20 +msgid "Password" +msgstr "Password" + +#: admin/systems/services/log/class_gosaLogServer.inc:74 +#: admin/systems/services/log/class_gosaLogServer.inc:100 +#: admin/systems/services/log/gosaLogServer.tpl:4 +#, fuzzy +msgid "Database" +msgstr "Database" + +#: admin/systems/services/log/class_gosaLogServer.inc:91 +#: admin/systems/services/log/class_gosaLogServer.inc:92 +#, fuzzy +msgid "GOsa logging service" +msgstr "Utenti di Dominio" + +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/log/class_gosaLogServer.inc:103 +#, fuzzy +msgid "Allow view of entries on this server" +msgstr "Permetti la connessione al Terminal Server" + +#: admin/systems/services/log/gosaLogServer.tpl:1 +#, fuzzy +msgid "GOsa logging database" +msgstr "Database" + +#: admin/systems/services/log/gosaLogServer.tpl:12 +#, fuzzy +msgid "Database user" +msgstr "Database" + +#: addons/logview/gosa_log_contents.tpl:2 addons/logview/contents.tpl:2 +msgid "Filter" +msgstr "Filtro" + +#: addons/logview/gosa_log_contents.tpl:11 addons/logview/contents.tpl:11 +msgid "Show hosts" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:20 +#: addons/logview/gosa_log_contents.tpl:82 +msgid "Action" +msgstr "Azione" + +#: addons/logview/gosa_log_contents.tpl:38 addons/logview/contents.tpl:38 +msgid "Time interval" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:47 addons/logview/contents.tpl:47 +msgid "Search for" +msgstr "Cerca" + +#: addons/logview/gosa_log_contents.tpl:48 addons/logview/contents.tpl:48 +msgid "Enter string to search for" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:60 addons/logview/contents.tpl:60 +msgid "Ruleset" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:62 addons/logview/contents.tpl:62 +msgid "Edit" +msgstr "Modifica" + +#: addons/logview/gosa_log_contents.tpl:68 addons/logview/contents.tpl:68 +msgid "Search" +msgstr "Cerca" + +#: addons/logview/gosa_log_contents.tpl:83 addons/logview/contents.tpl:84 +msgid "Date" +msgstr "Data" + +#: addons/logview/gosa_log_contents.tpl:85 +#, fuzzy +msgid "Object type" +msgstr "Nome dell'oggetto" + +#: addons/logview/gosa_log_contents.tpl:86 +msgid "Object" +msgstr "Oggetto" + +#: addons/logview/gosa_log_contents.tpl:87 addons/logview/contents.tpl:85 +msgid "Message" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:99 addons/logview/contents.tpl:97 +msgid "Search returned no results..." +msgstr "" + +#: addons/logview/class_logview.inc:6 addons/logview/class_logview.inc:418 +#: addons/logview/class_gosa_logview.inc:6 +msgid "System logs" +msgstr "Log di sitema" + +#: addons/logview/class_logview.inc:7 addons/logview/class_gosa_logview.inc:7 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: addons/logview/class_logview.inc:79 +#: addons/logview/class_gosa_logview.inc:118 +msgid "Warning" +msgstr "Attenzione" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy +msgid "Configuration error" +msgstr "File di configurazione" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Elimina foto" + +#: addons/logview/class_logview.inc:95 addons/logview/class_logview.inc:102 +#: addons/logview/class_logview.inc:115 addons/logview/class_logview.inc:137 +#: addons/logview/class_logview.inc:195 addons/logview/class_logview.inc:200 +#: addons/logview/class_logview.inc:277 addons/logview/class_logview.inc:294 +#: addons/logview/class_gosa_logview.inc:149 +#: addons/logview/class_gosa_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:235 +#: addons/logview/class_gosa_logview.inc:286 +msgid "Error" +msgstr "" + +#: addons/logview/class_logview.inc:124 addons/logview/class_logview.inc:146 +#: addons/logview/class_gosa_logview.inc:167 +#: addons/logview/class_gosa_logview.inc:182 +msgid "All" +msgstr "" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "one hour" +msgstr "" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "6 hours" +msgstr "" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "12 hours" +msgstr "" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "24 hours" +msgstr "" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "2 days" +msgstr "" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "one week" +msgstr "" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "2 weeks" +msgstr "" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "one month" +msgstr "" + +#: addons/logview/class_logview.inc:412 +#, fuzzy +msgid "Log view" +msgstr "Utenti di Dominio" + +#: addons/logview/class_logview.inc:413 +#, fuzzy +msgid "Log view addon" +msgstr "Dominio" + +#: addons/logview/main.inc:49 +msgid "System log view" +msgstr "" + +#: addons/logview/class_gosa_logview.inc:201 +#, fuzzy +msgid "You have insufficient permissions to view syslog entries." +msgstr "Non hai il permesso di cambiare la tua password." + +#: addons/logview/class_gosa_logview.inc:236 +#, php-format +msgid "Missing logging table (%s.%s) update your GOsa logging database schema." +msgstr "" + +#: addons/logview/contents.tpl:20 +msgid "Log level" +msgstr "" + +#: addons/logview/contents.tpl:82 +msgid "Level" +msgstr "" + +#: addons/logview/contents.tpl:83 +msgid "Hostname" +msgstr "" + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "No %s servers defined!" +#~ msgstr "Mostra server" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Impossibile connettersi al server del database!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Impossibile selezionare il database!" + +#~ msgid "Database query failed!" +#~ msgstr "La query al database è fallita!" diff --git a/trunk/gosa-plugins/log/locale/messages.po b/trunk/gosa-plugins/log/locale/messages.po new file mode 100644 index 000000000..733aa0053 --- /dev/null +++ b/trunk/gosa-plugins/log/locale/messages.po @@ -0,0 +1,233 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:33+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/log/class_gosaLogServer.inc:27 +#: admin/systems/services/log/class_gosaLogServer.inc:55 +msgid "GOsa MySQL logging service" +msgstr "" + +#: admin/systems/services/log/class_gosaLogServer.inc:68 +#: admin/systems/services/log/class_gosaLogServer.inc:101 +#: addons/logview/gosa_log_contents.tpl:84 +msgid "User" +msgstr "" + +#: admin/systems/services/log/class_gosaLogServer.inc:71 +#: admin/systems/services/log/class_gosaLogServer.inc:102 +#: admin/systems/services/log/gosaLogServer.tpl:20 +msgid "Password" +msgstr "" + +#: admin/systems/services/log/class_gosaLogServer.inc:74 +#: admin/systems/services/log/class_gosaLogServer.inc:100 +#: admin/systems/services/log/gosaLogServer.tpl:4 +msgid "Database" +msgstr "" + +#: admin/systems/services/log/class_gosaLogServer.inc:91 +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "GOsa logging service" +msgstr "" + +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "Services" +msgstr "" + +#: admin/systems/services/log/class_gosaLogServer.inc:103 +msgid "Allow view of entries on this server" +msgstr "" + +#: admin/systems/services/log/gosaLogServer.tpl:1 +msgid "GOsa logging database" +msgstr "" + +#: admin/systems/services/log/gosaLogServer.tpl:12 +msgid "Database user" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:2 addons/logview/contents.tpl:2 +msgid "Filter" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:11 addons/logview/contents.tpl:11 +msgid "Show hosts" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:20 +#: addons/logview/gosa_log_contents.tpl:82 +msgid "Action" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:38 addons/logview/contents.tpl:38 +msgid "Time interval" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:47 addons/logview/contents.tpl:47 +msgid "Search for" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:48 addons/logview/contents.tpl:48 +msgid "Enter string to search for" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:60 addons/logview/contents.tpl:60 +msgid "Ruleset" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:62 addons/logview/contents.tpl:62 +msgid "Edit" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:68 addons/logview/contents.tpl:68 +msgid "Search" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:83 addons/logview/contents.tpl:84 +msgid "Date" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:85 +msgid "Object type" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:86 +msgid "Object" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:87 addons/logview/contents.tpl:85 +msgid "Message" +msgstr "" + +#: addons/logview/gosa_log_contents.tpl:99 addons/logview/contents.tpl:97 +msgid "Search returned no results..." +msgstr "" + +#: addons/logview/class_logview.inc:6 addons/logview/class_logview.inc:418 +#: addons/logview/class_gosa_logview.inc:6 +msgid "System logs" +msgstr "" + +#: addons/logview/class_logview.inc:7 addons/logview/class_gosa_logview.inc:7 +msgid "This does something" +msgstr "" + +#: addons/logview/class_logview.inc:79 +#: addons/logview/class_gosa_logview.inc:118 +msgid "Warning" +msgstr "" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +msgid "Configuration error" +msgstr "" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, php-format +msgid "Missing %s PHP extension!" +msgstr "" + +#: addons/logview/class_logview.inc:95 addons/logview/class_logview.inc:102 +#: addons/logview/class_logview.inc:115 addons/logview/class_logview.inc:137 +#: addons/logview/class_logview.inc:195 addons/logview/class_logview.inc:200 +#: addons/logview/class_logview.inc:277 addons/logview/class_logview.inc:294 +#: addons/logview/class_gosa_logview.inc:149 +#: addons/logview/class_gosa_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:235 +#: addons/logview/class_gosa_logview.inc:286 +msgid "Error" +msgstr "" + +#: addons/logview/class_logview.inc:124 addons/logview/class_logview.inc:146 +#: addons/logview/class_gosa_logview.inc:167 +#: addons/logview/class_gosa_logview.inc:182 +msgid "All" +msgstr "" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "one hour" +msgstr "" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "6 hours" +msgstr "" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "12 hours" +msgstr "" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "24 hours" +msgstr "" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "2 days" +msgstr "" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "one week" +msgstr "" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "2 weeks" +msgstr "" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "one month" +msgstr "" + +#: addons/logview/class_logview.inc:412 +msgid "Log view" +msgstr "" + +#: addons/logview/class_logview.inc:413 +msgid "Log view addon" +msgstr "" + +#: addons/logview/main.inc:49 +msgid "System log view" +msgstr "" + +#: addons/logview/class_gosa_logview.inc:201 +msgid "You have insufficient permissions to view syslog entries." +msgstr "" + +#: addons/logview/class_gosa_logview.inc:236 +#, php-format +msgid "Missing logging table (%s.%s) update your GOsa logging database schema." +msgstr "" + +#: addons/logview/contents.tpl:20 +msgid "Log level" +msgstr "" + +#: addons/logview/contents.tpl:82 +msgid "Level" +msgstr "" + +#: addons/logview/contents.tpl:83 +msgid "Hostname" +msgstr "" diff --git a/trunk/gosa-plugins/log/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/log/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..5291fc5d5 --- /dev/null +++ b/trunk/gosa-plugins/log/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,267 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:33+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/log/class_gosaLogServer.inc:27 +#: admin/systems/services/log/class_gosaLogServer.inc:55 +#, fuzzy +msgid "GOsa MySQL logging service" +msgstr "Log DB gebruiker" + +#: admin/systems/services/log/class_gosaLogServer.inc:68 +#: admin/systems/services/log/class_gosaLogServer.inc:101 +#: addons/logview/gosa_log_contents.tpl:84 +msgid "User" +msgstr "Gebruiker" + +#: admin/systems/services/log/class_gosaLogServer.inc:71 +#: admin/systems/services/log/class_gosaLogServer.inc:102 +#: admin/systems/services/log/gosaLogServer.tpl:20 +msgid "Password" +msgstr "Wachtwoord" + +#: admin/systems/services/log/class_gosaLogServer.inc:74 +#: admin/systems/services/log/class_gosaLogServer.inc:100 +#: admin/systems/services/log/gosaLogServer.tpl:4 +msgid "Database" +msgstr "Database" + +#: admin/systems/services/log/class_gosaLogServer.inc:91 +#: admin/systems/services/log/class_gosaLogServer.inc:92 +#, fuzzy +msgid "GOsa logging service" +msgstr "Log DB gebruiker" + +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/log/class_gosaLogServer.inc:103 +#, fuzzy +msgid "Allow view of entries on this server" +msgstr "Sta inloggen op de Terminal Server toe" + +#: admin/systems/services/log/gosaLogServer.tpl:1 +#, fuzzy +msgid "GOsa logging database" +msgstr "Log database" + +#: admin/systems/services/log/gosaLogServer.tpl:12 +#, fuzzy +msgid "Database user" +msgstr "Databases" + +#: addons/logview/gosa_log_contents.tpl:2 addons/logview/contents.tpl:2 +msgid "Filter" +msgstr "Filter" + +#: addons/logview/gosa_log_contents.tpl:11 addons/logview/contents.tpl:11 +msgid "Show hosts" +msgstr "Toon computers" + +#: addons/logview/gosa_log_contents.tpl:20 +#: addons/logview/gosa_log_contents.tpl:82 +msgid "Action" +msgstr "Actie" + +#: addons/logview/gosa_log_contents.tpl:38 addons/logview/contents.tpl:38 +msgid "Time interval" +msgstr "Tijd interval" + +#: addons/logview/gosa_log_contents.tpl:47 addons/logview/contents.tpl:47 +msgid "Search for" +msgstr "Zoek naar" + +#: addons/logview/gosa_log_contents.tpl:48 addons/logview/contents.tpl:48 +msgid "Enter string to search for" +msgstr "Voer de te zoeken string in" + +#: addons/logview/gosa_log_contents.tpl:60 addons/logview/contents.tpl:60 +msgid "Ruleset" +msgstr "Ruleset" + +#: addons/logview/gosa_log_contents.tpl:62 addons/logview/contents.tpl:62 +msgid "Edit" +msgstr "Bewerken" + +#: addons/logview/gosa_log_contents.tpl:68 addons/logview/contents.tpl:68 +msgid "Search" +msgstr "Zoeken" + +#: addons/logview/gosa_log_contents.tpl:83 addons/logview/contents.tpl:84 +msgid "Date" +msgstr "Datum" + +#: addons/logview/gosa_log_contents.tpl:85 +#, fuzzy +msgid "Object type" +msgstr "Objectnaam" + +#: addons/logview/gosa_log_contents.tpl:86 +msgid "Object" +msgstr "Object" + +#: addons/logview/gosa_log_contents.tpl:87 addons/logview/contents.tpl:85 +msgid "Message" +msgstr "Bericht" + +#: addons/logview/gosa_log_contents.tpl:99 addons/logview/contents.tpl:97 +msgid "Search returned no results..." +msgstr "De zoekopdracht gaf geen resultaten terug..." + +#: addons/logview/class_logview.inc:6 addons/logview/class_logview.inc:418 +#: addons/logview/class_gosa_logview.inc:6 +msgid "System logs" +msgstr "Systeem logs" + +#: addons/logview/class_logview.inc:7 addons/logview/class_gosa_logview.inc:7 +msgid "This does something" +msgstr "Dit doet iets" + +#: addons/logview/class_logview.inc:79 +#: addons/logview/class_gosa_logview.inc:118 +msgid "Warning" +msgstr "Waarschuwing" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy +msgid "Configuration error" +msgstr "Configuratie bestand" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Verwijder printer mogelijkheden" + +#: addons/logview/class_logview.inc:95 addons/logview/class_logview.inc:102 +#: addons/logview/class_logview.inc:115 addons/logview/class_logview.inc:137 +#: addons/logview/class_logview.inc:195 addons/logview/class_logview.inc:200 +#: addons/logview/class_logview.inc:277 addons/logview/class_logview.inc:294 +#: addons/logview/class_gosa_logview.inc:149 +#: addons/logview/class_gosa_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:235 +#: addons/logview/class_gosa_logview.inc:286 +msgid "Error" +msgstr "Fout" + +#: addons/logview/class_logview.inc:124 addons/logview/class_logview.inc:146 +#: addons/logview/class_gosa_logview.inc:167 +#: addons/logview/class_gosa_logview.inc:182 +msgid "All" +msgstr "Alle" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "one hour" +msgstr "1 uur" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "6 hours" +msgstr "6 uur" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "12 hours" +msgstr "12 uur" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "24 hours" +msgstr "24 uur" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "2 days" +msgstr "2 dagen" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "one week" +msgstr "1 week" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "2 weeks" +msgstr "2 weken" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "one month" +msgstr "1 maand" + +#: addons/logview/class_logview.inc:412 +#, fuzzy +msgid "Log view" +msgstr "Log DB gebruiker" + +#: addons/logview/class_logview.inc:413 +#, fuzzy +msgid "Log view addon" +msgstr "Omlaag verplaatsen" + +#: addons/logview/main.inc:49 +msgid "System log view" +msgstr "Systeem log weergave" + +#: addons/logview/class_gosa_logview.inc:201 +#, fuzzy +msgid "You have insufficient permissions to view syslog entries." +msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." + +#: addons/logview/class_gosa_logview.inc:236 +#, php-format +msgid "Missing logging table (%s.%s) update your GOsa logging database schema." +msgstr "" + +#: addons/logview/contents.tpl:20 +msgid "Log level" +msgstr "Log prioriteit" + +#: addons/logview/contents.tpl:82 +msgid "Level" +msgstr "Prioriteit" + +#: addons/logview/contents.tpl:83 +msgid "Hostname" +msgstr "Computernaam" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#, fuzzy +#~ msgid "No %s servers defined!" +#~ msgstr "Geen LOG servers gedefiniëerd!" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Kan niet verbinden met de database server!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "De opgegeven database kon niet geselecteerd worden!" + +#~ msgid "Database query failed!" +#~ msgstr "De database zoekopdracht is mislukt" diff --git a/trunk/gosa-plugins/log/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/log/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..538912a58 --- /dev/null +++ b/trunk/gosa-plugins/log/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,262 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:33+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/systems/services/log/class_gosaLogServer.inc:27 +#: admin/systems/services/log/class_gosaLogServer.inc:55 +#, fuzzy +msgid "GOsa MySQL logging service" +msgstr "Usługa Logowania" + +#: admin/systems/services/log/class_gosaLogServer.inc:68 +#: admin/systems/services/log/class_gosaLogServer.inc:101 +#: addons/logview/gosa_log_contents.tpl:84 +msgid "User" +msgstr "Użytkownik" + +#: admin/systems/services/log/class_gosaLogServer.inc:71 +#: admin/systems/services/log/class_gosaLogServer.inc:102 +#: admin/systems/services/log/gosaLogServer.tpl:20 +msgid "Password" +msgstr "Hasło" + +#: admin/systems/services/log/class_gosaLogServer.inc:74 +#: admin/systems/services/log/class_gosaLogServer.inc:100 +#: admin/systems/services/log/gosaLogServer.tpl:4 +msgid "Database" +msgstr "Baza" + +#: admin/systems/services/log/class_gosaLogServer.inc:91 +#: admin/systems/services/log/class_gosaLogServer.inc:92 +#, fuzzy +msgid "GOsa logging service" +msgstr "Usługa Logowania" + +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/log/class_gosaLogServer.inc:103 +#, fuzzy +msgid "Allow view of entries on this server" +msgstr "Zezwól na logowanie do serwera terminali" + +#: admin/systems/services/log/gosaLogServer.tpl:1 +#, fuzzy +msgid "GOsa logging database" +msgstr "Baza logowania" + +#: admin/systems/services/log/gosaLogServer.tpl:12 +#, fuzzy +msgid "Database user" +msgstr "Bazy danych" + +#: addons/logview/gosa_log_contents.tpl:2 addons/logview/contents.tpl:2 +msgid "Filter" +msgstr "Filtr" + +#: addons/logview/gosa_log_contents.tpl:11 addons/logview/contents.tpl:11 +msgid "Show hosts" +msgstr "Pokaż hosty" + +#: addons/logview/gosa_log_contents.tpl:20 +#: addons/logview/gosa_log_contents.tpl:82 +msgid "Action" +msgstr "Akcja" + +#: addons/logview/gosa_log_contents.tpl:38 addons/logview/contents.tpl:38 +msgid "Time interval" +msgstr "Interwał czasowy" + +#: addons/logview/gosa_log_contents.tpl:47 addons/logview/contents.tpl:47 +msgid "Search for" +msgstr "Szukaj dla" + +#: addons/logview/gosa_log_contents.tpl:48 addons/logview/contents.tpl:48 +msgid "Enter string to search for" +msgstr "Proszę podać szukany ciąg znaków" + +#: addons/logview/gosa_log_contents.tpl:60 addons/logview/contents.tpl:60 +msgid "Ruleset" +msgstr "Reguły" + +#: addons/logview/gosa_log_contents.tpl:62 addons/logview/contents.tpl:62 +msgid "Edit" +msgstr "Edytuj" + +#: addons/logview/gosa_log_contents.tpl:68 addons/logview/contents.tpl:68 +msgid "Search" +msgstr "Szukaj" + +#: addons/logview/gosa_log_contents.tpl:83 addons/logview/contents.tpl:84 +msgid "Date" +msgstr "Data" + +#: addons/logview/gosa_log_contents.tpl:85 +#, fuzzy +msgid "Object type" +msgstr "Nazwa obiektu" + +#: addons/logview/gosa_log_contents.tpl:86 +msgid "Object" +msgstr "Obiekt" + +#: addons/logview/gosa_log_contents.tpl:87 addons/logview/contents.tpl:85 +msgid "Message" +msgstr "Wiadomość" + +#: addons/logview/gosa_log_contents.tpl:99 addons/logview/contents.tpl:97 +msgid "Search returned no results..." +msgstr "Wyszukiwanie nie zwróciło żadnych wyników..." + +#: addons/logview/class_logview.inc:6 addons/logview/class_logview.inc:418 +#: addons/logview/class_gosa_logview.inc:6 +msgid "System logs" +msgstr "Logi systemowe" + +#: addons/logview/class_logview.inc:7 addons/logview/class_gosa_logview.inc:7 +msgid "This does something" +msgstr "To robi coś" + +#: addons/logview/class_logview.inc:79 +#: addons/logview/class_gosa_logview.inc:118 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy +msgid "Configuration error" +msgstr "Plik konfiguracyjny" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Rozszerzenie inwentarza" + +#: addons/logview/class_logview.inc:95 addons/logview/class_logview.inc:102 +#: addons/logview/class_logview.inc:115 addons/logview/class_logview.inc:137 +#: addons/logview/class_logview.inc:195 addons/logview/class_logview.inc:200 +#: addons/logview/class_logview.inc:277 addons/logview/class_logview.inc:294 +#: addons/logview/class_gosa_logview.inc:149 +#: addons/logview/class_gosa_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:235 +#: addons/logview/class_gosa_logview.inc:286 +msgid "Error" +msgstr "Błąd" + +#: addons/logview/class_logview.inc:124 addons/logview/class_logview.inc:146 +#: addons/logview/class_gosa_logview.inc:167 +#: addons/logview/class_gosa_logview.inc:182 +msgid "All" +msgstr "Wszystkie" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "one hour" +msgstr "jedna godzina" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "6 hours" +msgstr "6 godzin" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "12 hours" +msgstr "12 godzin" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "24 hours" +msgstr "24 godziny" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "2 days" +msgstr "2 dni" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "one week" +msgstr "jeden tydzień" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "2 weeks" +msgstr "2 tygodnie" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "one month" +msgstr "jeden miesiąc" + +#: addons/logview/class_logview.inc:412 +#, fuzzy +msgid "Log view" +msgstr "Usługa logowania" + +#: addons/logview/class_logview.inc:413 +#, fuzzy +msgid "Log view addon" +msgstr "Przesuń w dół" + +#: addons/logview/main.inc:49 +msgid "System log view" +msgstr "Podgląd logu systemowego" + +#: addons/logview/class_gosa_logview.inc:201 +#, fuzzy +msgid "You have insufficient permissions to view syslog entries." +msgstr "Brak uprawnień do usunięcia tej bloklisty." + +#: addons/logview/class_gosa_logview.inc:236 +#, php-format +msgid "Missing logging table (%s.%s) update your GOsa logging database schema." +msgstr "" + +#: addons/logview/contents.tpl:20 +msgid "Log level" +msgstr "Poziom logu" + +#: addons/logview/contents.tpl:82 +msgid "Level" +msgstr "Poziom" + +#: addons/logview/contents.tpl:83 +msgid "Hostname" +msgstr "Nazwa hosta" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#, fuzzy +#~ msgid "No %s servers defined!" +#~ msgstr "Nie zdefiniowano serwerów logowania!" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Nie można połączyć się z serwerem baz danych!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Nie można wybrać bazy danych!" + +#~ msgid "Database query failed!" +#~ msgstr "Zapytanie do bazy danych nieudane" diff --git a/trunk/gosa-plugins/log/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/log/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..fd56b2c31 --- /dev/null +++ b/trunk/gosa-plugins/log/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,263 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:33+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/systems/services/log/class_gosaLogServer.inc:27 +#: admin/systems/services/log/class_gosaLogServer.inc:55 +#, fuzzy +msgid "GOsa MySQL logging service" +msgstr "Служба печати" + +#: admin/systems/services/log/class_gosaLogServer.inc:68 +#: admin/systems/services/log/class_gosaLogServer.inc:101 +#: addons/logview/gosa_log_contents.tpl:84 +msgid "User" +msgstr "Пользователь" + +#: admin/systems/services/log/class_gosaLogServer.inc:71 +#: admin/systems/services/log/class_gosaLogServer.inc:102 +#: admin/systems/services/log/gosaLogServer.tpl:20 +msgid "Password" +msgstr "Пароль" + +#: admin/systems/services/log/class_gosaLogServer.inc:74 +#: admin/systems/services/log/class_gosaLogServer.inc:100 +#: admin/systems/services/log/gosaLogServer.tpl:4 +#, fuzzy +msgid "Database" +msgstr "Базы данных" + +#: admin/systems/services/log/class_gosaLogServer.inc:91 +#: admin/systems/services/log/class_gosaLogServer.inc:92 +#, fuzzy +msgid "GOsa logging service" +msgstr "Служба печати" + +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/log/class_gosaLogServer.inc:103 +#, fuzzy +msgid "Allow view of entries on this server" +msgstr "Разрешить вход на терминальный сервер" + +#: admin/systems/services/log/gosaLogServer.tpl:1 +#, fuzzy +msgid "GOsa logging database" +msgstr "база пользователя" + +#: admin/systems/services/log/gosaLogServer.tpl:12 +#, fuzzy +msgid "Database user" +msgstr "Базы данных" + +#: addons/logview/gosa_log_contents.tpl:2 addons/logview/contents.tpl:2 +msgid "Filter" +msgstr "Фильтр" + +#: addons/logview/gosa_log_contents.tpl:11 addons/logview/contents.tpl:11 +msgid "Show hosts" +msgstr "Показать хосты" + +#: addons/logview/gosa_log_contents.tpl:20 +#: addons/logview/gosa_log_contents.tpl:82 +msgid "Action" +msgstr "Действие" + +#: addons/logview/gosa_log_contents.tpl:38 addons/logview/contents.tpl:38 +msgid "Time interval" +msgstr "Интервал времени" + +#: addons/logview/gosa_log_contents.tpl:47 addons/logview/contents.tpl:47 +msgid "Search for" +msgstr "Поиск" + +#: addons/logview/gosa_log_contents.tpl:48 addons/logview/contents.tpl:48 +msgid "Enter string to search for" +msgstr "Введите строку для поиска" + +#: addons/logview/gosa_log_contents.tpl:60 addons/logview/contents.tpl:60 +msgid "Ruleset" +msgstr "Набор правил" + +#: addons/logview/gosa_log_contents.tpl:62 addons/logview/contents.tpl:62 +msgid "Edit" +msgstr "Изменить" + +#: addons/logview/gosa_log_contents.tpl:68 addons/logview/contents.tpl:68 +msgid "Search" +msgstr "Поиск" + +#: addons/logview/gosa_log_contents.tpl:83 addons/logview/contents.tpl:84 +msgid "Date" +msgstr "Дата" + +#: addons/logview/gosa_log_contents.tpl:85 +#, fuzzy +msgid "Object type" +msgstr "Имя объекта" + +#: addons/logview/gosa_log_contents.tpl:86 +msgid "Object" +msgstr "Объект" + +#: addons/logview/gosa_log_contents.tpl:87 addons/logview/contents.tpl:85 +msgid "Message" +msgstr "Сообщение" + +#: addons/logview/gosa_log_contents.tpl:99 addons/logview/contents.tpl:97 +msgid "Search returned no results..." +msgstr "Не найдено..." + +#: addons/logview/class_logview.inc:6 addons/logview/class_logview.inc:418 +#: addons/logview/class_gosa_logview.inc:6 +msgid "System logs" +msgstr "Системные журналы" + +#: addons/logview/class_logview.inc:7 addons/logview/class_gosa_logview.inc:7 +msgid "This does something" +msgstr "Что-то будет" + +#: addons/logview/class_logview.inc:79 +#: addons/logview/class_gosa_logview.inc:118 +msgid "Warning" +msgstr "Предупреждение" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy +msgid "Configuration error" +msgstr "Настроить" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "Удалить параметры" + +#: addons/logview/class_logview.inc:95 addons/logview/class_logview.inc:102 +#: addons/logview/class_logview.inc:115 addons/logview/class_logview.inc:137 +#: addons/logview/class_logview.inc:195 addons/logview/class_logview.inc:200 +#: addons/logview/class_logview.inc:277 addons/logview/class_logview.inc:294 +#: addons/logview/class_gosa_logview.inc:149 +#: addons/logview/class_gosa_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:235 +#: addons/logview/class_gosa_logview.inc:286 +msgid "Error" +msgstr "" + +#: addons/logview/class_logview.inc:124 addons/logview/class_logview.inc:146 +#: addons/logview/class_gosa_logview.inc:167 +#: addons/logview/class_gosa_logview.inc:182 +msgid "All" +msgstr "Все" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "one hour" +msgstr "один час" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "6 hours" +msgstr "6 часов" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "12 hours" +msgstr "12 часов" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "24 hours" +msgstr "24 часа" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "2 days" +msgstr "2 дня" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "one week" +msgstr "одна неделя" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "2 weeks" +msgstr "2 недели" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "one month" +msgstr "один месяц" + +#: addons/logview/class_logview.inc:412 +#, fuzzy +msgid "Log view" +msgstr "Служба печати" + +#: addons/logview/class_logview.inc:413 +#, fuzzy +msgid "Log view addon" +msgstr "Домен" + +#: addons/logview/main.inc:49 +msgid "System log view" +msgstr "Просмотр системного журнала" + +#: addons/logview/class_gosa_logview.inc:201 +#, fuzzy +msgid "You have insufficient permissions to view syslog entries." +msgstr "У вас недостаточно прав для удаления этого стоп-листа." + +#: addons/logview/class_gosa_logview.inc:236 +#, php-format +msgid "Missing logging table (%s.%s) update your GOsa logging database schema." +msgstr "" + +#: addons/logview/contents.tpl:20 +msgid "Log level" +msgstr "Уровень информативности" + +#: addons/logview/contents.tpl:82 +msgid "Level" +msgstr "Уровень" + +#: addons/logview/contents.tpl:83 +msgid "Hostname" +msgstr "Имя системы" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#, fuzzy +#~ msgid "No %s servers defined!" +#~ msgstr "Не указан сервер журналов." + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Невозможно подключиться к серверу базы данных!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "Невозможно выбрать базу данных!" + +#~ msgid "Database query failed!" +#~ msgstr "Невозможно выполнить запрос к базе данных!" diff --git a/trunk/gosa-plugins/log/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/log/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f33bff63a --- /dev/null +++ b/trunk/gosa-plugins/log/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,264 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:33+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/services/log/class_gosaLogServer.inc:27 +#: admin/systems/services/log/class_gosaLogServer.inc:55 +#, fuzzy +msgid "GOsa MySQL logging service" +msgstr "Syslog 服务" + +#: admin/systems/services/log/class_gosaLogServer.inc:68 +#: admin/systems/services/log/class_gosaLogServer.inc:101 +#: addons/logview/gosa_log_contents.tpl:84 +msgid "User" +msgstr "用户" + +#: admin/systems/services/log/class_gosaLogServer.inc:71 +#: admin/systems/services/log/class_gosaLogServer.inc:102 +#: admin/systems/services/log/gosaLogServer.tpl:20 +msgid "Password" +msgstr "口令" + +#: admin/systems/services/log/class_gosaLogServer.inc:74 +#: admin/systems/services/log/class_gosaLogServer.inc:100 +#: admin/systems/services/log/gosaLogServer.tpl:4 +msgid "Database" +msgstr "数据库" + +#: admin/systems/services/log/class_gosaLogServer.inc:91 +#: admin/systems/services/log/class_gosaLogServer.inc:92 +#, fuzzy +msgid "GOsa logging service" +msgstr "Syslog 服务" + +#: admin/systems/services/log/class_gosaLogServer.inc:92 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/log/class_gosaLogServer.inc:103 +#, fuzzy +msgid "Allow view of entries on this server" +msgstr "允许登录到终端服务器" + +#: admin/systems/services/log/gosaLogServer.tpl:1 +#, fuzzy +msgid "GOsa logging database" +msgstr "日志数据库" + +#: admin/systems/services/log/gosaLogServer.tpl:12 +msgid "Database user" +msgstr "数据库用户" + +#: addons/logview/gosa_log_contents.tpl:2 addons/logview/contents.tpl:2 +msgid "Filter" +msgstr "过滤器" + +#: addons/logview/gosa_log_contents.tpl:11 addons/logview/contents.tpl:11 +msgid "Show hosts" +msgstr "显示主机" + +#: addons/logview/gosa_log_contents.tpl:20 +#: addons/logview/gosa_log_contents.tpl:82 +msgid "Action" +msgstr "行动" + +#: addons/logview/gosa_log_contents.tpl:38 addons/logview/contents.tpl:38 +msgid "Time interval" +msgstr "时间间隔" + +#: addons/logview/gosa_log_contents.tpl:47 addons/logview/contents.tpl:47 +msgid "Search for" +msgstr "查询" + +#: addons/logview/gosa_log_contents.tpl:48 addons/logview/contents.tpl:48 +msgid "Enter string to search for" +msgstr "输入要查询的字符串" + +#: addons/logview/gosa_log_contents.tpl:60 addons/logview/contents.tpl:60 +msgid "Ruleset" +msgstr "规则集" + +#: addons/logview/gosa_log_contents.tpl:62 addons/logview/contents.tpl:62 +msgid "Edit" +msgstr "编辑" + +#: addons/logview/gosa_log_contents.tpl:68 addons/logview/contents.tpl:68 +msgid "Search" +msgstr "查找" + +#: addons/logview/gosa_log_contents.tpl:83 addons/logview/contents.tpl:84 +msgid "Date" +msgstr "日期" + +#: addons/logview/gosa_log_contents.tpl:85 +#, fuzzy +msgid "Object type" +msgstr "对象名称" + +#: addons/logview/gosa_log_contents.tpl:86 +msgid "Object" +msgstr "对象" + +#: addons/logview/gosa_log_contents.tpl:87 addons/logview/contents.tpl:85 +msgid "Message" +msgstr "信息" + +#: addons/logview/gosa_log_contents.tpl:99 addons/logview/contents.tpl:97 +msgid "Search returned no results..." +msgstr "查无结果..." + +#: addons/logview/class_logview.inc:6 addons/logview/class_logview.inc:418 +#: addons/logview/class_gosa_logview.inc:6 +msgid "System logs" +msgstr "系统日志" + +#: addons/logview/class_logview.inc:7 addons/logview/class_gosa_logview.inc:7 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: addons/logview/class_logview.inc:79 +#: addons/logview/class_gosa_logview.inc:118 +msgid "Warning" +msgstr "警告" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy +msgid "Configuration error" +msgstr "配置文件" + +#: addons/logview/class_logview.inc:83 +#: addons/logview/class_gosa_logview.inc:123 +#, fuzzy, php-format +msgid "Missing %s PHP extension!" +msgstr "删除打印机扩展" + +#: addons/logview/class_logview.inc:95 addons/logview/class_logview.inc:102 +#: addons/logview/class_logview.inc:115 addons/logview/class_logview.inc:137 +#: addons/logview/class_logview.inc:195 addons/logview/class_logview.inc:200 +#: addons/logview/class_logview.inc:277 addons/logview/class_logview.inc:294 +#: addons/logview/class_gosa_logview.inc:149 +#: addons/logview/class_gosa_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:235 +#: addons/logview/class_gosa_logview.inc:286 +msgid "Error" +msgstr "错误" + +#: addons/logview/class_logview.inc:124 addons/logview/class_logview.inc:146 +#: addons/logview/class_gosa_logview.inc:167 +#: addons/logview/class_gosa_logview.inc:182 +msgid "All" +msgstr "全部" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "one hour" +msgstr "1 小时" + +#: addons/logview/class_logview.inc:156 +#: addons/logview/class_gosa_logview.inc:71 +msgid "6 hours" +msgstr "6 小时" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "12 hours" +msgstr "12 小时" + +#: addons/logview/class_logview.inc:157 +#: addons/logview/class_gosa_logview.inc:72 +msgid "24 hours" +msgstr "24 小时" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "2 days" +msgstr "2 天" + +#: addons/logview/class_logview.inc:158 +#: addons/logview/class_gosa_logview.inc:73 +msgid "one week" +msgstr "1 星期" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "2 weeks" +msgstr "2 星期" + +#: addons/logview/class_logview.inc:159 +#: addons/logview/class_gosa_logview.inc:74 +msgid "one month" +msgstr "1 个月" + +#: addons/logview/class_logview.inc:412 +#, fuzzy +msgid "Log view" +msgstr "日志级别" + +#: addons/logview/class_logview.inc:413 +#, fuzzy +msgid "Log view addon" +msgstr "向下移动" + +#: addons/logview/main.inc:49 +msgid "System log view" +msgstr "系统日志显示" + +#: addons/logview/class_gosa_logview.inc:201 +#, fuzzy +msgid "You have insufficient permissions to view syslog entries." +msgstr "您无权查看和编辑 ACL。" + +#: addons/logview/class_gosa_logview.inc:236 +#, php-format +msgid "Missing logging table (%s.%s) update your GOsa logging database schema." +msgstr "" + +#: addons/logview/contents.tpl:20 +msgid "Log level" +msgstr "日志级别" + +#: addons/logview/contents.tpl:82 +msgid "Level" +msgstr "级别" + +#: addons/logview/contents.tpl:83 +msgid "Hostname" +msgstr "主机名" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#, fuzzy +#~ msgid "No %s servers defined!" +#~ msgstr "没有定义日志主机!" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "无法连接到数据库!" + +#, fuzzy +#~ msgid "Cannot select %s database!" +#~ msgstr "无法选择数据库!" + +#~ msgid "Database query failed!" +#~ msgstr "数据库查询失败!" diff --git a/trunk/gosa-plugins/log/plugin.dsc b/trunk/gosa-plugins/log/plugin.dsc new file mode 100644 index 000000000..52e4603dc --- /dev/null +++ b/trunk/gosa-plugins/log/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = log +description = "Syslog and GOsa logging plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = systems diff --git a/trunk/gosa-plugins/mail/addons/mailqueue/class_mailqueue.inc b/trunk/gosa-plugins/mail/addons/mailqueue/class_mailqueue.inc new file mode 100644 index 000000000..47612b903 --- /dev/null +++ b/trunk/gosa-plugins/mail/addons/mailqueue/class_mailqueue.inc @@ -0,0 +1,370 @@ +config = &$config; + $this->si_queue = new si_mailqueue($this->config); + $this->getServer(); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","mailqueue/".get_class($this),$this->dn); + } + + $smarty= get_smarty(); + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $desc){ + $smarty->assign($name."ACL",$this->getacl($name)); + $smarty->assign($name."_W",$this->acl_is_writeable($name)); + } + $error =false; + + /****************** + Handle options + ******************/ + + $action = $server = $entry = ""; + $types = array( + "all_del" => "del", + "all_hold" => "hold", + "all_unhold" => "unhold", + "all_requeue" => "requeue"); + foreach($_POST as $name => $value){ + foreach($types as $type => $target){ + if(preg_match("/^".$type."/",$name) && $this->acl_is_writeable($target."All")){ + $entry = $this->list_get_selected_items(); + $action = $target; + break; + } + } + if(!empty($action)) break; + } + + $types = array("del","hold","unhold","header","requeue"); + foreach($_POST as $name => $value){ + foreach($types as $type){ + if(preg_match("/^".$type."__/",$name) && $this->acl_is_writeable($type)){ + $action = $type; + $server = preg_replace("/^".$type."__[^_]*__([^_]*)_.*/","\\1",$name); + $entry[$server][] = preg_replace("/^".$type."__([^_]*)__.*/","\\1",$name); + break; + } + } + if(!empty($action)) break; + } + + /* Send action for given mail id */ + if(in_array($action,array("del","hold","unhold","requeue"))){ + foreach($entry as $server => $entries){ + $this->si_queue->send_queue_action($entries,$server,$action); + } + } + + + /****************** + Display mail header + ******************/ + + if($action == "header"){ + $server = key($entry); + $entry = $entry[$server]; + + /* Create table which displays the header informations */ + $data = $this->si_queue->header($entry,$server); + $data = preg_replace("/([^\s]*:)/","\n\\1",$data); + $this->disp_header = $data; + if($this->si_queue->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->si_queue->get_error()),ERROR_DIALOG); + $this->disp_header = FALSE; + } + } + + /* Back is posted from the header display page */ + if(isset($_POST['back'])){ + $this->disp_header = false; + } + + /* If there is a header in disp_header, then display it */ + if($this->disp_header){ + $smarty->assign("header",$this->disp_header); + return ($smarty->fetch (get_template_path('header.tpl', TRUE))); + } + + + /****************** + Query mailqueues + ******************/ + + $entries = array(); + if($this->acl_is_readable("query")){ + $within_minutes = -1; + if($this->Time != "nolimit"){ + $within_minutes = 60*60*$this->Time; + } + + if($this->Server == "all"){ + $entries = array(); + foreach($this->ServerList as $mac => $name){ + if(!tests::is_mac($mac)) continue; + $entries = array_merge($entries,$this->si_queue->query_mailqueue($mac,$this->Search,$within_minutes)); + if($this->si_queue->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->si_queue->get_error()),ERROR_DIALOG); + } + } + }else{ + $entries = $this->si_queue->query_mailqueue($this->Server,$this->Search,$within_minutes); + if($this->si_queue->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->si_queue->get_error()),ERROR_DIALOG); + } + } + } + + /* Sort entries + */ + $data = array(); + foreach($entries as $entry){ + $data[uniqid($entry[$this->OrderBy])] = $entry; + } + + /* Sort entries by given direction + */ + if($this->SortType == "down"){ + uksort($data, 'strnatcasecmp'); + }else{ + uksort($data, 'strnatcasecmp'); + $data = array_reverse($data); + } + + $count = count($data); + $entries = array_slice($data,$this->Page,$this->range); + + /* Add ServerName to results + */ + foreach($entries as $key => $data){ + $entries[$key]['ServerName'] = $this->ServerList[$data['Server']]; + } + + /****************** + create html output + ******************/ + + $smarty->assign("query_allowed",$this->acl_is_readable("query")); + $smarty->assign("all_ok" , count($entries)); + $smarty->assign("entries" , $entries); + $smarty->assign("plug" , "?plug=".$_GET['plug']); + + $smarty->assign("r_stats" , $this->getStats()); + $smarty->assign("stats" , array_flip($this->getStats())); + + $smarty->assign("stat" , $this->Stat); + $smarty->assign("p_server" , $this->Server); + $smarty->assign("p_servers" , $this->ServerList); + $smarty->assign("p_serverKeys" , array_flip($this->ServerList)); + $smarty->assign("p_time" , $this->Time); + $smarty->assign("p_times" , $this->getTimes()); + $smarty->assign("p_timeKeys" , array_flip($this->getTimes())); + $smarty->assign("search_for" , $this->Search); + $smarty->assign("range_selector", range_selector($count, $this->Page, $this->range,"EntriesPerPage")); + $smarty->assign("OrderBy" , $this->OrderBy); + + /* Display sort arrow */ + if($this->SortType == "up"){ + $smarty->assign("SortType",""._("up").""); + }else{ + $smarty->assign("SortType",""._("down").""); + } + + return ($smarty->fetch (get_template_path('contents.tpl', TRUE))); + } + + + /* return selectable server + */ + function getServer() + { + $ret= array("all"=>_("All")); + + /* First of all, detect all servers that supports the mailqueue extension + -If this fails, the mailqueue(s) can't be queried. + */ + $hosts = $this->si_queue->get_hosts_with_module("mailqueue_com"); + $this->si_error = $this->si_queue->is_error(); + if(!count($hosts)){ + return(array()); + } + + /* Create search filter and try to resolv mac to hostname + */ + $filter = ""; + foreach($hosts as $mac){ + $filter .= "(macAddress=".$mac.")"; + } + $filter = "(&(objectClass=GOhard)(|".$filter."))"; + $res = get_list($filter,"no_acls",$this->config->current['BASE'], + array("cn","macAddress"),GL_SUBSEARCH | GL_NO_ACL_CHECK); + + /* Create result array + */ + foreach($hosts as $mac){ + $found = FALSE; + foreach($res as $entry){ + if(preg_match("/^".preg_quote($mac, '/')."$/i",$entry['macAddress'][0])){ + $ret[$mac] = $entry['cn'][0]; + $found = TRUE; + break; + } + } + if(!$found){ + $ret[$mac] = $mac; + } + } + $this->ServerList = $ret; + } + + + /* Return selectable times*/ + function getTimes() + { + $ret = array(); + $ret['nolimit']=_("no limit"); + foreach(array(1,2,4,8,12,24,36,48) as $i){ + if($i == 1){ + $ret[$i] = $i." "._("hour"); + }else{ + $ret[$i] = $i." "._("hours"); + } + } + return($ret); + } + + + /* Save post values*/ + function save_object($save_current= FALSE) + { + /* Update amount of entries displayed */ + if(isset($_POST['EntriesPerPage'])){ + $this->range = $_POST['EntriesPerPage']; + } + + if(isset($_POST['p_server']) && isset($this->ServerList[$_POST['p_server']])){ + $this->Server = $_POST['p_server']; + } + + if(isset($_POST['p_time'])){ + $this->Time = $_POST['p_time']; + } + if(isset($_POST['search_for'])){ + $this->Search = $_POST['search_for']; + } + if(isset($_POST['Stat'])){ + $this->Stat = $_POST['Stat']; + } + if((isset($_GET['start']))&&(is_numeric($_GET['start']))&&($_GET['start']>=0)){ + $this->Page = $_GET['start']; + } + + if((isset($_GET['sort']))&&(!empty($_GET['sort']))){ + $old = $this->OrderBy; + $this->OrderBy = $_GET['sort']; + if($this->OrderBy == $old) + { + if($this->SortType== "up"){ + $this->SortType = "down"; + }else{ + $this->SortType = "up"; + } + } + } + + } + + /* Return stats */ + function getStats() + { + return(array( + "all" =>_("All"), + "hold" =>_("Hold"), + "unhold" =>_("Un hold"), + "active" =>_("Active"), + "nonactive" =>_("Not active") + )); + } + + /* Return plugin informations for acl handling + #FIXME You can only read attributes within this report plugin */ + static function plInfo() + { + return (array( + "plShortName" => _("Mail queue"), + "plDescription" => _("Mail queue addon"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 1, + "plSection" => array("addon"), + "plCategory" => array("mailqueue" => array("objectClass" => "none", "description" => _("Mail queue addon"))), + + "plProvidedAcls" => array( + "unholdAll" => _("Unhold all messages"), + "holdAll" => _("Hold all messages"), + "delAll" => _("Delete all messages"), + "requeueAll" => _("Requeue all messages"), + "unhold" => _("Unhold message"), + "hold" => _("Hold message"), + "del" => _("Delete message"), + "requeue" => _("Requeue message"), + "query" => _("Gathering queue data"), + "header" => _("Get header information") + ) + )); + } + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^selected_*/",$name)){ + $server = preg_replace("/^selected_.*_/","",$name) ; + $ids[$server][] = preg_replace("/^selected_([^_]*)_.*$/","\\1",$name); + } + } + return($ids); + } + + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/addons/mailqueue/class_si_mailqueue.inc b/trunk/gosa-plugins/mail/addons/mailqueue/class_si_mailqueue.inc new file mode 100644 index 000000000..3eb055bde --- /dev/null +++ b/trunk/gosa-plugins/mail/addons/mailqueue/class_si_mailqueue.inc @@ -0,0 +1,146 @@ +config = $config; + gosaSupportDaemon::__construct($config); + $this->target = "00:01:6c:9d:b9:fa"; + } + + + /*! \brief Returns TRUE or FALSE, whether the plugin is enabled or disabled . + @return Boolean s.a. + */ + public function enabled() + { + return(TRUE); + } + + + /*! \brief Returns a list of all mail queue entries + @return Array s.a. + */ + public function query_mailqueue($server,$search_str,$time) + { + $attrs = array("Size","Recipient","Sender","Arrival","MailID","Hold","Active","Status","Server"); + + /* Prepare search filter + */ + $search_str = preg_replace("/\\\\\*/",".*",preg_quote($search_str, '/')); + + /* Query mailqueue + */ + $ids = array(); + $res = $this->send_data("gosa_mailqueue_query",$server,array(),TRUE); + $items = array(); + if(isset($res['XML'][0])){ + foreach($res['XML'][0] as $name => $entry){ + + if(preg_match("/^ANSWER[0-9]*$/",$name)){ + $attrs = array( + "MSG_SIZE" => "Size", + "MSG_STATUS" => "Status", + "RECIPIENT" => "Recipient", + "SENDER" => "Sender", + "ARRIVAL_TIME" => "Arrival", + "MSG_ID" => "MailID"); + $val = array(); + foreach($attrs as $source => $dest){ + $val[$dest] = $entry[0][$source][0]['VALUE']; + } + $ids[] = $val['MailID']; + $attrs = array( + "MSG_HOLD" => "Hold", + "MSG_ACTIVE" => "Active"); + foreach($attrs as $source => $dest){ + if(isset($entry[0][$source][0]['VALUE'])){ + $val[$dest] = $entry[0][$source][0]['VALUE']; + }else{ + $val[$dest] = FALSE; + } + } + + $val['Server'] = $server; + $val['Arrival'] = strtotime($val['Arrival']); + + /* Check arrival time. + */ + if($time != -1 && !empty($val['Arrival'])){ + if( ! ($val['Arrival'] > (time() - $time))){ + continue; + } + } + + /* Check if search string matches + */ + $found = FALSE; + foreach($val as $name => $value){ + if(preg_match("/^".$search_str."$/",$value)){ + $found =TRUE; + break; + } + } + if($found){ + $items[] = $val; + } + } + } + } + return($items); + } + + + public function header($msg_id, $server) + { + $data = array(); + $data['msg_id'] = $msg_id; + $res = $this->send_data("gosa_mailqueue_header",$server,$data,TRUE); + if(isset($res['XML'][0]['MSG_HEADER'][0]['VALUE'])){ + return($res['XML'][0]['MSG_HEADER'][0]['VALUE']); + } + return(""); + } + + + /*! \brief Returns a list of all mail queue entries + @return Array s.a. + */ + public function send_queue_action($msg_ids,$server, $action) + { + $data = array(); + + /* Check given msg_ids, must be array. + */ + if(!is_array($msg_ids)){ + trigger_error("Invalid msg_id given. Array expected."); + return(FALSE); + } + + /* Check triggered action + */ + $allowed_actions = array("hold","unhold","requeue","del"); + if(!in_array($action,$allowed_actions)){ + trigger_error("Unknown queue action triggered '".$action."'. Request aborted."); + return(FALSE); + } + + $data['msg_id'] = $msg_ids; + + $this->send_data("gosa_mailqueue_".$action,$server,$data,FALSE); + // There is no answer for this requests + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/addons/mailqueue/contents.tpl b/trunk/gosa-plugins/mail/addons/mailqueue/contents.tpl new file mode 100644 index 000000000..73d88529f --- /dev/null +++ b/trunk/gosa-plugins/mail/addons/mailqueue/contents.tpl @@ -0,0 +1,159 @@ +
 
+
+

[F]Filter

+
+
+
+ + + + + +
+ {t}Search{/t} +  {t}Search for{/t} + +  in + + +  {t}within the last{/t}  + +   + +   + {if $delAll_W} + + {/if} + {if $holdAll_W} + + {/if} + {if $unholdAll_W} + + {/if} + {if $requeueAll_W} + + {/if} +
+
+
+
+ +{if !$query_allowed} + {msgPool type=permView} +{else} + +{if $all_ok != true} +{t}Search returned no results{/t}... +{else} + + + + + + + + + + + + + + +{counter start=0 assign=i start=1} +{foreach from=$entries item=val key=key} + + {if ($i%2)== 0 } + + {else} + + {/if} + + + + + + + + + + + {counter} +{/foreach} +
+ {t}ID{/t} {if $OrderBy == "MailID"} {$SortType}{/if}{t}Server{/t} {if $OrderBy == "Server"} {$SortType}{/if}{t}Size{/t} {if $OrderBy == "Size"} {$SortType}{/if}{t}Arrival{/t} {if $OrderBy == "Arrival"} {$SortType}{/if}{t}Sender{/t} {if $OrderBy == "Sender"} {$SortType}{/if}{t}Recipient{/t} {if $OrderBy == "Recipient"}{$SortType}{/if}{t}Status{/t} {if $OrderBy == "Status"} {$SortType}{/if} 
+ {if $entries[$key].Active == true} + {t}Active{/t} + {/if} + {$entries[$key].MailID}{$entries[$key].ServerName}{$entries[$key].Size}{$entries[$key].Arrival|date_format:"%d.%m.%Y %H:%M:%S"}{$entries[$key].Sender}{$entries[$key].Recipient}{$entries[$key].Status} + {if $del_W} + + {else} +  + {/if} + {if $entries[$key].Hold == true} + + {if $unhold_W} + + {else} +  + {/if} + {else} + {if $hold_W} + + {else} +  + {/if} + {/if} + {if $requeue_W} + + {else} +  + {/if} + {if $header_W} + + {else} +  + {/if} +
+ + + + + +
{$range_selector}
+

 

+ +{/if} +{/if} + + + diff --git a/trunk/gosa-plugins/mail/addons/mailqueue/header.tpl b/trunk/gosa-plugins/mail/addons/mailqueue/header.tpl new file mode 100644 index 000000000..f5aaab53a --- /dev/null +++ b/trunk/gosa-plugins/mail/addons/mailqueue/header.tpl @@ -0,0 +1,7 @@ +
{$header}
+
+ +

 

+
+ +
diff --git a/trunk/gosa-plugins/mail/addons/mailqueue/main.inc b/trunk/gosa-plugins/mail/addons/mailqueue/main.inc new file mode 100644 index 000000000..3d9373875 --- /dev/null +++ b/trunk/gosa-plugins/mail/addons/mailqueue/main.inc @@ -0,0 +1,61 @@ +set_acl_category("mailqueue"); + + /* Check root dn and user dn for acl informations */ + $mailqueue->set_acl_base($config->current['BASE']); + if($mailqueue->getacl("") == ""){ + $mailqueue->set_acl_base($ui->dn); + } + session::set('mailqueue',$mailqueue); + } + $mailqueue = session::get('mailqueue'); + + /* Execute formular */ + $mailqueue->save_object(); + $display= $mailqueue->execute (); + $display.= "\n"; + + /* Page header*/ + $display= print_header(get_template_path('plugins/mail/images/mailqueue.png'), _("Mail queue")).$display; + + /* Store changes in session */ + session::set('mailqueue',$mailqueue); +} +?> diff --git a/trunk/gosa-plugins/mail/admin/groups/mail/class_groupMail.inc b/trunk/gosa-plugins/mail/admin/groups/mail/class_groupMail.inc new file mode 100644 index 000000000..ee636c8e3 --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/groups/mail/class_groupMail.inc @@ -0,0 +1,1304 @@ + '', "SUB_CAT" => ''); + + var $quotaUsage = -1; // -1 Means undefined + + /* Internal */ + var $AclTypes = array(); + var $members = array(); // Group members + var $mailusers = array(); // Group member with mail account + var $folder_acls = array(); + var $MailMethod = NULL; + var $forward_dialog = FALSE; + var $remove_folder_from_imap = true; + var $view_logged = FALSE; + var $mailDomainPart = ""; + + /* attribute list for save action */ + var $attributes= array( "mail", "gosaMailServer", "gosaMailQuota", "gosaMailMaxSize", + "gosaMailAlternateAddress", "gosaMailForwardingAddress", + "gosaMailDeliveryMode", "gosaSpamSortLevel", "gosaSpamMailbox", + "acl","gosaSharedFolderTarget", "gosaVacationMessage"); + + var $objectclasses= array("gosaMailAccount"); + var $multiple_support = FALSE; // Not tested yet + + var $uid = ""; + var $cn =""; + var $orig_cn = ""; + var $show_effective_memeber = FALSE; + + function __construct (&$config, $dn= NULL, $ui= NULL) + { + plugin::plugin($config, $dn); + + /* Get attributes from parent object + */ + foreach(array("uid","cn") as $attr){ + if(isset($this->parent->by_object['group']) && isset($this->parent->by_object['group']->$attr)){ + $this->$attr = &$this->parent->by_object['group']->$attr; + }elseif(isset($this->attrs[$attr])){ + $this->$attr = $this->attrs[$attr][0]; + } + } + $this->orig_cn = $this->uid = $this->cn; + + /* Intialize the used mailMethod + */ + $tmp = new mailMethod($config,$this,"group"); + $this->mailMethod = $tmp->get_method(); + $this->mailMethod->fixAttributesOnLoad(); + $this->mailDomainParts = $this->mailMethod->getMailDomains(); + $this->AvailableFolderTypes = $this->mailMethod->getAvailableFolderTypes(); + $this->MailBoxes = array(); + + /* Remember account status + */ + $this->initially_was_account = $this->is_account; + + /* Load folder_acls with defaults. + anyone -- The default acl, will be written to ldap. + member -- The ACL used for the members. + */ + $this->folder_acls = $this->mailMethod->getDefaultACLs(); + + /* Load acls + The most used acl will be used as member acl, this + shortens the listed acls. + This may be merged/overwritten by the mail methods. + */ + $ldap = $this->config->get_ldap_link(); + if(isset($this->attrs['acl'])){ + for($i = 0; $i < $this->attrs['acl']['count'] ; $i++){ + $str = trim($this->attrs['acl'][$i]); + + /* Be carefull here, since kolab22 uses spaces in the acls (herbert read anon/post) + */ + $name = trim(preg_replace("/^([^\s]*).*$/","\\1",$str)); + $acl = trim(preg_replace("/^[^\s]*+\s/","",$str)); + if($name == "anyone") $name = "__anyone__"; + $this->folder_acls[$name] = $acl; + } + } + + /* Initialize configured values + */ + if($this->is_account){ + if($this->mailMethod->connect() && $this->mailMethod->account_exists()){ + + /* Read quota */ + $this->gosaMailQuota = $this->mailMethod->getQuota($this->gosaMailQuota); + $this->quotaUsage = $this->mailMethod->getQuotaUsage($this->quotaUsage); + if($this->mailMethod->is_error()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot read quota settings: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + + /* Read mailboxes */ + $this->MailBoxes = $this->mailMethod->getMailboxList($this->MailBoxes); + if($this->mailMethod->is_error()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot get list of mailboxes: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + + /* Receive folder types */ + $this->FolderType = $this->mailMethod->getFolderType($this->FolderType); + if($this->mailMethod->is_error()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot receive folder types: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + + /* Receive permissions */ + $this->folder_acls = $this->mailMethod->getFolderACLs($this->folder_acls); + if($this->mailMethod->is_error()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot receive folder permissions: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + + }elseif(!$this->mailMethod->is_connected()){ + msg_dialog::display(_("Mail error"), sprintf(_("Mail method cannot connect: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + }elseif(!$this->mailMethod->account_exists()){ + msg_dialog::display(_("Mail error"), sprintf(_("Mailbox '%s' doesn't exists on mail server: %s"), + $this->mailMethod->get_account_id(),$this->gosaMailServer), ERROR_DIALOG); + } + + /* If the doamin part is selectable, we have to split the mail address + */ + if(!(!$this->mailMethod->isModifyableMail() && $this->is_account)){ + if($this->mailMethod->domainSelectionEnabled() || $this->mailMethod->mailEqualsCN()){ + $this->mailDomainPart = preg_replace("/^[^@]*+@/","",$this->mail); + $this->mail = preg_replace("/@.*$/","\\1",$this->mail); + if(!in_array($this->mailDomainPart,$this->mailDomainParts)){ + $this->mailDomainParts[] = $this->mailDomainPart; + } + } + } + + /* Load attributes containing arrays */ + foreach (array("gosaMailAlternateAddress", "gosaMailForwardingAddress") as $val){ + $this->$val= array(); + if (isset($this->attrs["$val"]["count"])){ + for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){ + array_push($this->$val, $this->attrs["$val"][$i]); + } + } + } + } + + /* Disconnect mailMethod. Connect on demand later. + */ + $this->mailMethod->disconnect(); + $this->AclTypes = $this->mailMethod->getAclTypes(); + + /* Summarize most used ACLs as member acl + */ + if(count($this->folder_acls) > 2){ + $acl_usage = array(); + $most_acl = $this->folder_acls['__member__']; + $most_cnt = 0; + $member = $this->get_member(); + foreach($this->folder_acls as $user => $acl){ + if(preg_match("/^__/",$user)) continue; + if(!in_array($user,$member['mail'])) continue; + if(!isset($acl_usage[$acl])) $acl_usage[$acl]=0; + $acl_usage[$acl] ++; + if($acl_usage[$acl] > $most_cnt){ + $most_cnt = $acl_usage[$acl]; + $most_acl = $acl; + } + } + $this->folder_acls['__member__'] = $most_acl; + foreach($this->folder_acls as $name => $acl){ + if(preg_match("/^__/",$name)) continue; + if($acl == $most_acl && in_array($name,$member['mail'])){ + unset($this->folder_acls[$name]); + } + } + } + + /* Get global filter config */ + if (!session::is_set("gmailfilter")){ + $ui= get_userinfo(); + $base= get_base_from_people($ui->dn); + $gmailfilter= array( "depselect" => $base, + "muser" => "", + "regex" => "*"); + session::set("gmailfilter", $gmailfilter); + } + } + + + /*! \brief Returns all group members once with 'dn' and once with 'mail'. + This function is used to summarize ACLs by member acls. + @return Array Containing all members, with mail and dn + */ + function get_member() + { + $member = array('all' => array(), 'mail' => array()); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + if(isset($this->parent->by_object['group'])){ + foreach($this->parent->by_object['group']->memberUid as $uid){ + $dn = $this->parent->by_object['group']->dnMapping[$uid]; + $member['all'][$uid] = $uid; + if($ldap->object_match_filter($dn,"(&(objectClass=gosaMailAccount)(".$this->mailMethod->getUAttrib()."=*))")){ + $ldap->cat($dn); + $attrs = $ldap->fetch(); + $member['mail'][$uid] = $attrs[$this->mailMethod->getUAttrib()][0]; + } + } + }else{ + if(!isset($this->attrs['memberUid'])) return($member); + $uattrib = $this->mailMethod->getUAttrib(); + $users = get_list("(&(objectClass=person)(objectClass=gosaAccount)(uid=*))", + "users",$this->config->current['BASE'], + array("uid","objectClass",$uattrib),GL_SUBSEARCH | GL_NO_ACL_CHECK); + foreach($users as $user){ + $member['all'][$user['uid'][0]] = $user['dn']; + if(isset($user[$uattrib]) + && in_array("gosaMailAccount",$user['objectClass']) + && (in_array($user['uid'][0], $this->attrs['memberUid']))){ + $member['mail'][$user['uid'][0]] = $user[$uattrib][0]; + } + } + } + return($member); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","groups/".get_class($this),$this->dn); + } + + /**************** + Account status + ****************/ + + if(!$this->multiple_support_active){ + + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable() && $this->mailMethod->accountRemoveAble()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable() && $this->mailMethod->accountCreateable()){ + $this->is_account= TRUE; + } + } + + if ($this->is_account){ + $reason = ""; + if(!$this->mailMethod->accountRemoveable($reason)){ + $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Mail")),$reason ,TRUE,TRUE); + }else{ + $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Mail")),msgPool:: + featuresEnabled(_("Mail"))); + } + } else { + $reason = ""; + if(!$this->mailMethod->accountCreateable($reason)){ + $display= $this->show_disable_header(msgPool::addFeaturesButton(_("Mail")),$reason ,TRUE,TRUE); + }else{ + $display= $this->show_disable_header(msgPool::addFeaturesButton(_("Mail")),msgPool:: + featuresDisabled(_("Mail"))); + + /* Show checkbox that allows us to remove imap entry too*/ + if($this->initially_was_account){ + $c = ""; + if($this->remove_folder_from_imap){ + $c= " checked "; + } + $display .= "

Shared folder delete options

+ "; + $display .= _("Remove the shared folder and all its contents after saving this account"); + } + } + return ($display); + } + } + + + /**************** + Preset mail attribute + ****************/ + if(empty($this->mail) && $this->mailMethod->mailEqualsCN() && !$this->initially_was_account){ + if($this->mailMethod->domainSelectionEnabled()){ + $this->mail = &$this->parent->by_object['group']->cn; + } + } + + + /**************** + Forward addresses + ****************/ + if (isset($_POST['add_local_forwarder'])){ + $this->forward_dialog= TRUE; + $this->dialog= TRUE; + } + if (isset($_POST['add_locals_cancel'])){ + $this->forward_dialog= FALSE; + $this->dialog= FALSE; + } + if (isset($_POST['add_locals_finish'])){ + if (isset($_POST['local_list'])){ + if($this->acl_is_writeable("gosaMailForwardingAddress")){ + foreach ($_POST['local_list'] as $val){ + if (!in_array ($val, $this->gosaMailAlternateAddress) && + $val != $this->mail){ + $this->addForwarder($val); + $this->is_modified= TRUE; + } + } + } + $this->forward_dialog= FALSE; + $this->dialog= FALSE; + } else { + msg_dialog::display(_("Error"), _("Please select an entry!"), ERROR_DIALOG); + } + } + + if (isset($_POST['add_forwarder'])){ + if ($_POST['forward_address'] != ""){ + $address= $_POST['forward_address']; + $valid= FALSE; + if (!tests::is_email($address)){ + if (!tests::is_email($address, TRUE)){ + if ($this->is_template){ + $valid= TRUE; + } else { + msg_dialog::display(_("Error"), msgPool::invalid(_("Mail address"), + "","","your-address@your-domain.com"),ERROR_DIALOG); + } + } + } elseif ($address == $this->mail + || in_array($address, $this->gosaMailAlternateAddress)) { + msg_dialog::display(_("Error"),_("Cannot add primary address to the list of forwarders!") , ERROR_DIALOG); + } else { + $valid= TRUE; + } + if ($valid){ + if($this->acl_is_writeable("gosaMailForwardingAddress")){ + $this->addForwarder ($address); + $this->is_modified= TRUE; + } + } + } + } + if (isset($_POST['delete_forwarder'])){ + $this->delForwarder ($_POST['forwarder_list']); + } + if ($this->forward_dialog){ + return($this->display_forward_dialog()); + } + + + /**************** + Alternate addresses + ****************/ + + if (isset($_POST['add_alternate'])){ + $valid= FALSE; + if (!tests::is_email($_POST['alternate_address'])){ + if ($this->is_template){ + if (!(tests::is_email($_POST['alternate_address'], TRUE))){ + msg_dialog::display(_("Error"),msgPool::invalid(_("Mail address"), + "","","your-domain@your-domain.com"), ERROR_DIALOG); + } else { + $valid= TRUE; + } + } else { + msg_dialog::display(_("Error"),msgPool::invalid(_("Mail address"), + "","","your-domain@your-domain.com"), ERROR_DIALOG); + } + } else { + $valid= TRUE; + } + if ($valid && ($user= $this->addAlternate ($_POST['alternate_address'])) != ""){ + $ui= get_userinfo(); + if ($user != $ui->username){ + msg_dialog::display(_("Error"), msgPool::duplicated(_("Mail address"))." ". + sprintf(_("Address is already in use by user '%s'."), $user), ERROR_DIALOG); + } + } + } + if (isset($_POST['delete_alternate']) && isset($_POST['alternates_list'])){ + $this->delAlternate ($_POST['alternates_list']); + } + + + /**************** + SMARTY- Assign smarty variables + ****************/ + + /* Load templating engine */ + $smarty= get_smarty(); + $smarty->assign("initially_was_account", $this->initially_was_account); + $smarty->assign("isModifyableMail", $this->mailMethod->isModifyableMail()); + $smarty->assign("isModifyableServer", $this->mailMethod->isModifyableServer()); + $smarty->assign("mailEqualsCN", $this->mailMethod->mailEqualsCN()); + $smarty->assign("folder_acls" , $this->postable_acls()); + $smarty->assign("AclTypes" , $this->AclTypes); + $smarty->assign("Effective", $this->get_effective_member_acls()); + $smarty->assign("show_effective_memeber", $this->show_effective_memeber); + + $smarty->assign("quotaEnabled", $this->mailMethod->quotaEnabled()); + if($this->mailMethod->quotaEnabled()){ + $smarty->assign("gosaMailQuota",$this->gosaMailQuota); + $smarty->assign("quotaUsage", mailMethod::quota_to_image($this->quotaUsage,$this->gosaMailQuota)); + } + + $smarty->assign("MailDomains", $this->mailDomainParts); + $smarty->assign("MailDomain" , $this->mailDomainPart); + $smarty->assign("MailServers", $this->mailMethod->getMailServers()); + $smarty->assign("allowSieveManagement", $this->mailMethod->allowSieveManagement()); + + $smarty->assign("domainSelectionEnabled", $this->mailMethod->domainSelectionEnabled()); + $smarty->assign("folderTypesEnabled",$this->mailMethod->folderTypesEnabled()); + $smarty->assign("AvailableFolderTypes", $this->AvailableFolderTypes); + $smarty->assign("FolderType", $this->FolderType); + + if (is_numeric($this->gosaMailQuota) && $this->gosaMailQuota != 0){ + if($this->acl_is_readable("gosaMailQuota")){ + $smarty->assign("quotausage", progressbar(round(($this->quotaUsage * 100)/ $this->gosaMailQuota),100,15,true)); + $smarty->assign("quotadefined", "true"); + }else{ + $smarty->assign("quotadefined", "true"); + $smarty->assign("quotausage", "-"); + } + } else { + $smarty->assign("quotadefined", "false"); + } + + /* Assign acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation) { + $smarty->assign($name."ACL",$this->getacl($name)); + } + foreach($this->attributes as $name){ + $smarty->assign($name,$this->$name); + } + + + + $smarty->assign("mailServers", $this->mailMethod->getMailServers()); + if (preg_match("/I/", $this->gosaMailDeliveryMode)) { + $smarty->assign("only_local", "checked"); + }else{ + $smarty->assign("only_local", ""); + } + + + /****** + Multi edit support + ******/ + foreach($this->attributes as $attr){ + if(in_array($attr,$this->multi_boxes)){ + $smarty->assign("use_".$attr,TRUE); + }else{ + $smarty->assign("use_".$attr,FALSE); + } + } + + /* Multiple support handling */ + foreach(array("kolabFolderType") as $attr){ + if(in_array($attr,$this->multi_boxes)){ + $smarty->assign("use_".$attr,TRUE); + }else{ + $smarty->assign("use_".$attr,FALSE); + } + } + + $smarty->assign("Forward_all",$this->gosaMailForwardingAddress); + $smarty->assign("Forward_some",$this->gosaMailForwardingAddress_Some); + $smarty->assign("multiple_support",$this->multiple_support_active); + + $display.= $smarty->fetch (get_template_path('mail.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + + /* remove object from parent */ + function remove_from_parent() + { + if(!$this->initially_was_account){ + return; + } + + /* If domain part was selectable, contruct mail address */ + if($this->mailMethod->domainSelectionEnabled() || $this->mailMethod->mailEqualsCN()){ + $this->mail = $this->mail."@".$this->mailDomainPart; + } + + /* Remove GOsa attributes */ + plugin::remove_from_parent(); + + /* Zero arrays */ + $this->attrs['gosaMailAlternateAddress'] = array(); + $this->attrs['gosaMailForwardingAddress']= array(); + $this->attrs['gosaSharedFolderTarget']= array(); + + $this->mailMethod->fixAttributesOnRemove(); + $this->cleanup(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->modify ($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + new log("remove","groups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + + /* Let the mailMethod remove this mailbox, e.g. from imap and + update shared folder membership, ACL may need to be updated. + */ + if (!$this->is_template && $this->remove_folder_from_imap){ + + if(!$this->mailMethod->connect()){ + msg_dialog::display(_("Mail error"), sprintf(_("Mail method cannot connect: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + }else{ + if(!$this->mailMethod->deleteMailbox()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot remove mailbox: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + if(!$this->mailMethod->updateSharedFolder()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot update shared folder permissions: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + } + } + $this->mailMethod->disconnect(); + + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove"); + } + + + /* Save data to object */ + function save_object() + { + /* Check if user wants to remove the shared folder from imap too + */ + if($this->initially_was_account && !$this->is_account){ + if(isset($_POST['remove_folder_from_imap'])){ + $this->remove_folder_from_imap = true; + }else{ + $this->remove_folder_from_imap = false; + } + } + if (isset($_POST['mailedit'])){ + + if(isset($_POST['show_effective_memeber'])){ + $this->show_effective_memeber = !$this->show_effective_memeber; + } + + $mail = $this->mail; + $server = $this->gosaMailServer; + plugin::save_object(); + + if(!$this->mailMethod->isModifyableServer() && $this->initially_was_account){ + $this->gosaMailServer = $server; + } + if(!$this->mailMethod->isModifyableMail() && $this->initially_was_account){ + $this->mail = $mail; + }else{ + + if($this->mailMethod->mailEqualsCN()){ + $this->mail = &$this->parent->by_object['group']->cn; + if(isset($_POST['MailDomain'])){ + $this->mailDomainPart = get_post('MailDomain'); + } + } + + /* Get posted mail domain part, if necessary + */ + if($this->mailMethod->domainSelectionEnabled() && isset($_POST['MailDomain'])){ + if(in_array(get_post('MailDomain'), $this->mailDomainParts)){ + $this->mailDomainPart = get_post('MailDomain'); + } + } + } + + /* Get folder type + */ + if($this->mailMethod->folderTypesEnabled()){ + if(isset($_POST['FolderTypeCAT'])){ + $this->FolderType['CAT'] = get_post('FolderTypeCAT'); + } + if(isset($_POST['FolderTypeSUB_CAT'])){ + $this->FolderType['SUB_CAT'] = get_post('FolderTypeSUB_CAT'); + } + } + + /* Handle posted ACL changes. + Add/del member acls. + */ + if(isset($_POST['mail_acls_posted'])){ + $new_acls = array(); + foreach(array("__anyone__","__member__") as $attr){ + $pname = base64_encode($attr); + if(get_post('acl_value_'.$pname)){ + $new_acls[$attr] = get_post('acl_value_'.$pname); + }else{ + $new_acls[$attr] = $this->folder_acls[$attr]; + } + } + + foreach($this->folder_acls as $user => $acl){ + $pname = base64_encode($user); + if($user == "__member__" || $user == "__anyone__") continue; + if(isset($_POST['remove_acl_user_'.$pname])){ + }elseif(isset($_POST['acl_user_'.$pname])){ + if($user != get_post('acl_user_'.$pname)){ + $new_acls[get_post('acl_user_'.$pname)] = get_post('acl_value_'.$pname); + }else{ + $new_acls[$user] = get_post('acl_value_'.$pname); + } + }else{ + $new_acls[$user] = $acl; + } + } + if(isset($_POST['add_acl_user'])){ + $new_acls[_('New')] = $this->folder_acls['__anyone__']; + } + $this->folder_acls = $new_acls; + } + + /* Handle GOsa mail delivery flags. + */ + + /* Assemble mail delivery mode + The mode field in ldap consists of values between braces, this must + be called when 'mail' is set, because checkboxes may not be set when + we're in some other dialog. + + Example for gosaMailDeliveryMode [LR ] + L - Local delivery + R - Reject when exceeding mailsize limit + S - Use spam filter + V - Use vacation message + C - Use custom sieve script + I - Only insider delivery */ + $tmp= preg_replace("/[^a-z]/i","",$this->gosaMailDeliveryMode); + if($this->acl_is_writeable("gosaMailDeliveryModeL")){ + if(!preg_match("/L/",$tmp) && !isset($_POST['drop_own_mails'])){ + $tmp.="L"; + }elseif(preg_match("/L/",$tmp) && isset($_POST['drop_own_mails'])){ + $tmp = preg_replace("/L/","",$tmp); + } + } + + $opts = array( + "R" => "use_mailsize_limit", + "S" => "use_spam_filter", + "V" => "use_vacation", + "C" => "own_script", + "I" => "only_local"); + + foreach($opts as $flag => $post){ + if($this->acl_is_writeable("gosaMailDeliveryMode".$flag)){ + if(!preg_match("/".$flag."/",$tmp) && isset($_POST[$post])){ + $tmp.= $flag; + }elseif(preg_match("/".$flag."/",$tmp) && !isset($_POST[$post])){ + $tmp = preg_replace("/".$flag."/","",$tmp); + } + } + } + + $tmp= "[$tmp]"; + if ($this->gosaMailDeliveryMode != $tmp){ + $this->is_modified= TRUE; + } + $this->gosaMailDeliveryMode= $tmp; + } + } + + + /* Save data to LDAP, depending on is_account we save or delete */ + function save() + { + $ldap= $this->config->get_ldap_link(); + + /* If domain part was selectable, contruct mail address */ + if(!(!$this->mailMethod->isModifyableMail() && $this->initially_was_account)){ + + if($this->mailMethod->domainSelectionEnabled() || $this->mailMethod->mailEqualsCN()){ + $this->mail = $this->mail."@".$this->mailDomainPart; + } + } + + /* Enforce lowercase mail address and trim whitespaces + */ + $this->mail = trim(strtolower($this->mail)); + + + /* Create acls + */ + $this->acl = array("anyone ".$this->folder_acls['__anyone__']); + $member = $this->get_member(); + $new_folder_acls = array("anyone" => $this->folder_acls['__anyone__']); + foreach($member['mail'] as $uid => $mail){ + + /* Do not save overridden acls */ + if(isset($this->folder_acls[$mail])){ + continue; + } + + $this->acl[] = $mail." ".$this->folder_acls['__member__']; + $new_folder_acls[$mail]=$this->folder_acls['__member__']; + } + foreach($this->folder_acls as $user => $acls){ + if(preg_match("/^__/",$user)) continue; + $this->acl[] = $user." ".$acls; + $new_folder_acls[$user]=$acls; + } + $this->folder_acls = $new_folder_acls; + $this->acl = array_unique($this->acl); + + /* Call parents save to prepare $this->attrs */ + plugin::save(); + + /* Save arrays */ + $this->attrs['gosaMailAlternateAddress'] = $this->gosaMailAlternateAddress; + $this->attrs['gosaMailForwardingAddress']= $this->gosaMailForwardingAddress; + + /* Map method attributes */ + $this->mailMethod->fixAttributesOnStore(); + + /* Save data to LDAP */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + if($this->initially_was_account){ + new log("modify","groups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","groups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + /* Do imap/sieve actions, + */ + $this->mailMethod->connect(); + if(!$this->mailMethod->is_connected()){ + msg_dialog::display(_("Mail error"), sprintf(_("Mail method cannot connect: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + }else{ + if(!$this->mailMethod->updateMailbox()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot update mailbox: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + if(!$this->mailMethod->setQuota($this->gosaMailQuota)){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot write quota settings: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + /* Save Folder Types, if available + */ + if($this->mailMethod->folderTypesEnabled()){ + $this->mailMethod->setFolderType($this->FolderType); + } + if(!$this->mailMethod->setFolderACLs($this->folder_acls)){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot update shared folder permissions: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + } + $this->mailMethod->disconnect(); + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify"); + } + } else { + $this->handle_post_events("add"); + } + } + + + + /* Check formular input */ + function check() + { + if(!$this->is_account) return array(); + $ldap= $this->config->get_ldap_link(); + + + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Ensure that this group isn't renamed if the mailMethod enforces cn mailAttributes + */ + if($this->mailMethod->mailEqualsCN() && $this->initially_was_account){ + if($this->cn != $this->orig_cn){ + $message[] = sprintf(_("The group 'cn' has changed. It can't be changed due to the fact that mail method '%s' relies on it!") + ,get_class($this->mailMethod)); + } + } + + if(empty($this->gosaMailServer)){ + $message[]= msgPool::noserver(_("Mail")); + } + + /* Mail address checks */ + if(!(!$this->mailMethod->isModifyableMail() && $this->initially_was_account)){ + $mail = $this->mail; + if($this->mailMethod->domainSelectionEnabled() || $this->mailMethod->mailEqualsCN()){ + $mail.= "@".$this->mailDomainPart; + } + if (empty($mail)){ + $message[]= msgPool::required(_("Primary address")); + }elseif (!tests::is_email($mail)){ + $message[]= msgPool::invalid(_("Mail address"),"","","your-address@your-domain.com"); + } + } + + /* Check quota */ + if ($this->gosaMailQuota != '' && $this->acl_is_writeable("gosaMailQuota")){ + if (!is_numeric($this->gosaMailQuota)) { + $message[]= msgPool::invalid(_("Quota size"),$this->gosaMailQuota,"/[0-9]/"); + } else { + $this->gosaMailQuota= (int) $this->gosaMailQuota; + } + } + + /* Check if this mail address is already in use */ + $ldap->cd($this->config->current['BASE']); + $filter = "(&(!(objectClass=gosaUserTemplate))(!(cn=".$this->cn."))". + "(objectClass=gosaMailAccount)". + "(|(mail=".$mail.")(alias=".$mail.")(gosaMailAlternateAddress=".$mail.")))"; + $ldap->search($filter,array("cn")); + if ($ldap->count() != 0){ + $message[]= msgPool::duplicated(_("Mail address")); + } + + /* Check rejectsize for integer */ + if ($this->gosaMailMaxSize != '' && $this->acl_is_writeable("gosaMailQuota")){ + if (!is_numeric($this->gosaMailMaxSize)){ + $message[]= msgPool::invalid(_("Mail max size")); + } else { + $this->gosaMailMaxSize= (int) $this->gosaMailMaxSize; + } + } + + /* Need gosaMailMaxSize if use_mailsize_limit is checked */ + if (is_integer(strpos($this->gosaMailDeliveryMode, "reject")) && $this->gosaMailMaxSize == ""){ + $message[]= _("You need to set the maximum mail size in order to reject anything."); + } + + if(empty($this->gosaMailServer)){ + $message[] = msgPool::required(_("Mail server")); + } + + return ($message); + } + + /* Adapt from template, using 'dn' */ + function adapt_from_template($dn, $skip= array()) + { + plugin::adapt_from_template($dn, $skip); + + foreach (array("gosaMailAlternateAddress", "gosaMailForwardingAddress") as $val){ + + if (in_array($val, $skip)){ + continue; + } + + $this->$val= array(); + if (isset($this->attrs["$val"]["count"])){ + for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){ + $value= $this->attrs["$val"][$i]; + foreach (array("sn", "givenName", "uid") as $repl){ + if (preg_match("/%$repl/i", $value)){ + $value= preg_replace ("/%$repl/i", $this->parent->$repl, $value); + } + } + array_push($this->$val, $value); + } + } + } + } + + + + function make_name($attrs) + { + $name= ""; + if (isset($attrs['sn'][0])){ + $name= $attrs['sn'][0]; + } + if (isset($attrs['givenName'][0])){ + if ($name != ""){ + $name.= ", ".$attrs['givenName'][0]; + } else { + $name.= $attrs['givenName'][0]; + } + } + if ($name != ""){ + $name.= " "; + } + + return ($name); + } + + function getCopyDialog() + { + if(!$this->is_account) return(""); + + $smarty = get_smarty(); + $smarty->assign("gosaMailAlternateAddress",$this->gosaMailAlternateAddress); + $smarty->assign("gosaMailForwardingAddress",$this->gosaMailForwardingAddress); + $smarty->assign("mail",$this->mail); + $display= $smarty->fetch (get_template_path('paste_mail.tpl', TRUE, dirname(__FILE__))); + $ret = array(); + $ret['string'] = $display; + $ret['status'] = ""; + return($ret); + } + + function saveCopyDialog() + { + if(!$this->is_account) return; + + /* Perform ADD / REMOVE ... for mail alternate / mail forwarding addresses + */ + $this->execute(); + if(isset($_POST['mail'])){ + $this->mail = $_POST['mail']; + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Reset alternate mail addresses */ + $this->gosaMailAlternateAddress = array(); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Mail"), + "plDescription" => _("Group mail"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 10, + "plSection" => array("administration"), + "plCategory" => array("groups"), + "plProvidedAcls"=> array( + "mail" => _("Mail address"), + "gosaMailQuota" => _("Quota size"), + "gosaMailServer" => _("Mail server"), + "kolabFolderType" => _("Folder type")." ("._("Kolab").")", + "gosaMailAlternateAddress" => _("Alternate addresses"), + "gosaMailForwardingAddress" => _("Forwarding addresses"), + "gosaMailDeliveryModeI" => _("Only local"), + "acl" => _("Permissions")) + )); + } + + + /* Remove given ACL for given member (uid,mail) .. + */ + function removeUserAcl($index ) + { + if(isset($this->imapacl[$index])){ + unset($this->imapacl[$index]); + } + } + + function multiple_execute() + { + return($this->execute()); + } + + + function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + + $this->gosaMailForwardingAddress = array(); + if(isset($attrs['gosaMailForwardingAddress'])){ + for($i = 0 ; $i < $attrs['gosaMailForwardingAddress']['count'] ; $i++){ + $this->gosaMailForwardingAddress[] = $attrs['gosaMailForwardingAddress'][$i]; + } + } + + $this->gosaMailForwardingAddress_Some = array(); + if(isset($all['gosaMailForwardingAddress'])){ + for($i = 0 ; $i < $all['gosaMailForwardingAddress']['count'] ; $i++){ + if(!in_array($all['gosaMailForwardingAddress'][$i],$this->gosaMailForwardingAddress)){ + $this->gosaMailForwardingAddress_Some[] = $all['gosaMailForwardingAddress'][$i]; + } + } + } + } + + function multiple_save_object() + { + if(isset($_POST['multiple_mail_group_posted'])){ + plugin::multiple_save_object(); + + foreach(array("kolabFolderType") as $attr){ + if(isset($_POST['use_'.$attr])){ + $this->multi_boxes[] = $attr; + } + } + + /* Add special kolab attributes */ + if(preg_match("/olab/i",$this->config->get_cfg_value("mailmethod"))){ + if(isset($_POST['kolabFolderTypeType']) && $this->acl_is_writeable("kolabFolderType")){ + $this->kolabFolderTypeType = get_post("kolabFolderTypeType"); + $this->kolabFolderTypeSubType = get_post("kolabFolderTypeSubType"); + } + } + + /* Collect data and re-assign it to the imapacl array */ + if ($this->acl_is_writeable("acl")){ + $this->imapacl= array(); + $this->imapacl['%members%']= $_POST['member_permissions']; + $this->imapacl['anyone']= $_POST['default_permissions']; + foreach ($this->indexed_user as $nr => $user){ + if (!isset($_POST["user_$nr"])){ + continue; + } + if ($_POST["user_$nr"] != $user || + $_POST["perm_$nr"] != $this->indexed_acl[$nr]){ + $this->is_modified= TRUE; + } + $this->imapacl[$_POST["user_$nr"]]= $_POST["perm_$nr"]; + } + } + } + } + + + /* Return selected values for multiple edit */ + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + $ret['Forward_some'] = $this->gosaMailForwardingAddress_Some; + $ret['Forward_all'] = $this->gosaMailForwardingAddress; + if(in_array('kolabFolderType',$this->multi_boxes)){ + $ret['kolabFolderTypeType'] = $this->kolabFolderTypeType; + $ret['kolabFolderTypeSubType'] = $this->kolabFolderTypeSubType; + } + if(in_array("acl",$this->multi_boxes)){ + $ret['imapacl'] = $this->imapacl; + } + return($ret); + } + + function set_multi_edit_values($attrs) + { + $forward = array(); + foreach($attrs['Forward_some'] as $addr){ + if(in_array($addr,$this->gosaMailForwardingAddress)){ + $forward[] = $addr; + } + } + foreach($attrs['Forward_all'] as $addr){ + $forward[] = $addr; + } + plugin::set_multi_edit_values($attrs); + $this->gosaMailForwardingAddress = $forward; + } + + + /*! \brief Displays a dialog that allows mail address selection. + */ + function display_forward_dialog() + { + restore_error_handler(); + + $smarty = get_smarty(); + $ldap= $this->config->get_ldap_link(); + + /* Save data */ + $mailfilter= session::get("mailfilter"); + foreach( array("depselect", "muser", "regex") as $type){ + if (isset($_POST[$type])){ + $mailfilter[$type]= $_POST[$type]; + } + } + if (isset($_GET['search'])){ + $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*"; + if ($s == "**"){ + $s= "*"; + } + $mailfilter['regex']= $s; + } + session::set("mailfilter", $mailfilter); + + /* Get actual list */ + $mailusers= array (); + if ($mailfilter['regex'] != '*' && $mailfilter['regex'] != ""){ + $regex= $mailfilter['regex']; + $filter= "(|(mail=$regex)(gosaMailAlternateAddress=$regex))"; + } else { + $filter= ""; + } + if ($mailfilter['muser'] != ""){ + $user= $mailfilter['muser']; + $filter= "$filter(|(uid=$user)(cn=$user)(givenName=$user)(sn=$user))"; + } + + /* Add already present people to the filter */ + $exclude= ""; + foreach ($this->gosaMailForwardingAddress as $mail){ + $exclude.= "(mail=$mail)"; + } + if ($exclude != ""){ + $filter.= "(!(|$exclude))"; + } + $res= get_list("(&(objectClass=gosaMailAccount)$filter)", "users", $mailfilter['depselect'], + array("sn", "mail", "givenName"), GL_SIZELIMIT | GL_SUBSEARCH); + $ldap->cd($mailfilter['depselect']); + $ldap->search ("(&(objectClass=gosaMailAccount)$filter)", array("sn", "mail", "givenName")); + while ($attrs= $ldap->fetch()){ + if(preg_match('/%/', $attrs['mail'][0])){ + continue; + } + $name= $this->make_name($attrs); + $mailusers[$attrs['mail'][0]]= $name."<". + $attrs['mail'][0].">"; + } + natcasesort ($mailusers); + reset ($mailusers); + + /* Show dialog */ + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("usearch_image", get_template_path('images/lists/search-user.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("mailusers", $mailusers); + if (isset($_POST['depselect'])){ + $smarty->assign("depselect", $_POST['depselect']); + } + $smarty->assign("deplist", $this->config->idepartments); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("hint", print_sizelimit_warning()); + foreach( array("depselect", "muser", "regex") as $type){ + $smarty->assign("$type", $mailfilter[$type]); + } + $smarty->assign("hint", print_sizelimit_warning()); + $display= $smarty->fetch (get_template_path('mail_locals.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + + /*! \brief Add given mail address to the list of forwarders. + */ + function addForwarder($address) + { + if(empty($address)) continue; + $this->gosaMailForwardingAddress[]= $address; + $this->gosaMailForwardingAddress= array_unique($this->gosaMailForwardingAddress); + + /* Update multiple edit values too */ + if($this->multiple_support_active){ + $this->gosaMailForwardingAddress_Some= + array_remove_entries (array($address),$this->gosaMailForwardingAddress_Some); + } + + sort ($this->gosaMailForwardingAddress); + reset ($this->gosaMailForwardingAddress); + $this->is_modified= TRUE; + } + + + /*! \brief Removes the given mail address from the forwarders + */ + function delForwarder($addresses) + { + if(empty($address)) continue; + $this->gosaMailForwardingAddress= array_remove_entries ($addresses, + $this->gosaMailForwardingAddress); + + /* Update multiple edit values too */ + if($this->multiple_support_active){ + $this->gosaMailForwardingAddress_Some = array_remove_entries ($addresses, + $this->gosaMailForwardingAddress_Some); + } + $this->is_modified= TRUE; + } + + + /*! \brief Add given mail address to the list of alternate adresses , + . check if this mal address is used, skip adding in this case + */ + function addAlternate($address) + { + if(empty($address)) continue; + $ldap= $this->config->get_ldap_link(); + + $address= strtolower($address); + + /* Is this address already assigned in LDAP? */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaMailAccount)(|(mail=$address)". + "(gosaMailAlternateAddress=$address)))"); + + if ($ldap->count() > 0){ + $attrs= $ldap->fetch (); + return ($attrs["uid"][0]); + } + + /* Add to list of alternates */ + if (!in_array($address, $this->gosaMailAlternateAddress)){ + $this->gosaMailAlternateAddress[]= $address; + } + + sort ($this->gosaMailAlternateAddress); + reset ($this->gosaMailAlternateAddress); + $this->is_modified= TRUE; + + return (""); + } + + + /*! \brief Removes the given mail address from the alternate addresses + */ + function delAlternate($addresses) + { + if(empty($address)) continue; + $this->gosaMailAlternateAddress= array_remove_entries ($addresses, + $this->gosaMailAlternateAddress); + $this->is_modified= TRUE; + } + + + function postable_acls() + { + $ret = array(); + foreach($this->folder_acls as $name => $acl){ + $ret[$name] = array("name" => $name,"acl" => $acl,"post_name" => base64_encode($name)); + } + return($ret); + } + + + function get_effective_member_acls() + { + $tmp = array(); + $member = $this->get_member(); + foreach($member['mail'] as $uid => $mail){ + + /* Do not save overridden acls */ + if(isset($this->folder_acls[$mail])){ + continue; + } + + + $tmp[$mail] = $this->folder_acls['__member__']; + } + return($tmp); + } + + + function allow_remove() + { + $resason = ""; + if(!$this->mailMethod->allow_remove($reason)){ + return($reason); + } + return(""); + } +} + + // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/admin/groups/mail/mail.tpl b/trunk/gosa-plugins/mail/admin/groups/mail/mail.tpl new file mode 100644 index 000000000..f1fac33ba --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/groups/mail/mail.tpl @@ -0,0 +1,253 @@ + + + + + +{if !$multiple_support} + +{/if} + +
+

 {t}Generic{/t}

+ + + + + + + + + + + + +{if $quotaEnabled} + + + + + + + + +{/if} + +{if $folderTypesEnabled && !$multiple_support} + + + + + {/if} +
{$must} + {if !$isModifyableMail && $initially_was_account} + + {else} + {if $domainSelectionEnabled} + {render acl=$mailACL} + + {/render} + @ + {else} + {if $mailEqualsCN} + + @ + {else} + {render acl=$mailACL} + + {/render} + {/if} + {/if} + {/if} +
+ {if !$isModifyableServer && $initially_was_account} + + {else} +{render acl=$gosaMailServerACL} + +{/render} + {/if} +
  +
{t}Quota usage{/t}{$quotaUsage}
+{render acl=$gosaMailQuotaACL} + MB + {/render} +
+ {t}Folder type{/t} + + + + +
+
+

+ {t}Alternative addresses{/t} +

+ +{render acl=$gosaMailAlternateAddressACL} + +{/render} +
+{render acl=$gosaMailAlternateAddressACL} + +{/render} + +{render acl=$gosaMailAlternateAddressACL} +   +{/render} + +{render acl=$gosaMailAlternateAddressACL} + +{/render} +
+ +

 

+ +{if !$multiple_support} + + + + + +
+

+ {t}IMAP shared folders{/t} +

+ + + {foreach from=$folder_acls item=item key=user} + + {if $user == "__anyone__"} + + {elseif $user == "__member__"} + + {else} + + {/if} + + + {if $user == "__member__" && $show_effective_memeber} + {foreach from=$Effective item=i key=k} + + {/foreach} + {/if} + {/foreach} + + + + + +
+ + +{render acl=$aclACL} + + {if !($user == "__anyone__" || $user == "__member__")} + + {/if} +{/render} + {if $user == "__member__"} + {if $show_effective_memeber} + + {else} + + {/if} + {/if} +
  {$k}
+
+{/if} + +

 

+ +

 {t}Advanced mail options{/t}

+ + + + +
+{render acl=$gosaMailDeliveryModeIACL} + +{/render} + {t}User is only allowed to send and receive local mails{/t} +
+ +
+

+ + {t}Forward messages to non group members{/t} +

+ +{render acl=$gosaMailForwardingAddressACL} + +{/render} + +
+ +{render acl=$gosaMailForwardingAddressACL} + +{/render} +{render acl=$gosaMailForwardingAddressACL} +   +{/render} +{render acl=$gosaMailForwardingAddressACL} +   +{/render} +{render acl=$gosaMailForwardingAddressACL} + +{/render} + +
+ + + + +{if $multiple_support} + +{/if} diff --git a/trunk/gosa-plugins/mail/admin/groups/mail/mail_admins.tpl b/trunk/gosa-plugins/mail/admin/groups/mail/mail_admins.tpl new file mode 100644 index 000000000..766eba369 --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/groups/mail/mail_admins.tpl @@ -0,0 +1,40 @@ + + + + + + + + +
+ +
+ +
+ +
+
+ +
+
+ +
+ : + + + {if $javascript ne "true"} + + {/if} +
+ +

+ +   + +

diff --git a/trunk/gosa-plugins/mail/admin/groups/mail/mail_locals.tpl b/trunk/gosa-plugins/mail/admin/groups/mail/mail_locals.tpl new file mode 100644 index 000000000..14a01ba2f --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/groups/mail/mail_locals.tpl @@ -0,0 +1,69 @@ + + + + + +
+
+

+
+

+
+
+

+ +

+
+
+
+

+ [F] + {t}Filters{/t} +

+
+
+ + {$alphabet} +
+ + + + +
+   + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ {$apply} +
+
+ +

+ +   + +

diff --git a/trunk/gosa-plugins/mail/admin/groups/mail/paste_mail.tpl b/trunk/gosa-plugins/mail/admin/groups/mail/paste_mail.tpl new file mode 100644 index 000000000..b8644252f --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/groups/mail/paste_mail.tpl @@ -0,0 +1,56 @@ +

{t}Mail settings{/t}

+ + + + + + +
+ + + + + +
+ {$must} + + +
+
+ + + + + +
+ {t}Alternative addresses{/t} + +
+ +   + +
+ {t}Forward messages to non group members{/t} + +
+ +   +   + +
+
+
+ + + diff --git a/trunk/gosa-plugins/mail/admin/ogroups/mail/class_mailogroup.inc b/trunk/gosa-plugins/mail/admin/ogroups/mail/class_mailogroup.inc new file mode 100644 index 000000000..e626b0780 --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/ogroups/mail/class_mailogroup.inc @@ -0,0 +1,204 @@ +config= $config; + + /* Save initial account state */ + $this->initially_was_account= $this->is_account; + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","ogroups/".get_class($this),$this->dn); + } + + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Show tab dialog headers */ + if ($this->parent !== NULL){ + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove mail account"), + msgPool::featuresEnabled(_("mail group"))); + } else { + $display= $this->show_enable_header(_("Create mail account"), + msgPool::featuresDisabled(_("mail group"))); + return ($display); + } + } + + /* Initialize templating engine */ + $smarty= get_smarty(); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl("mail")); + } + + /* Assign mail attribute */ + $smarty->assign("mail", $this->mail); + + /* Show main page */ + return ($display.$smarty->fetch (get_template_path('mail.tpl', TRUE,dirname(__FILE__)))); + } + + + /* Check formular input */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if ($this->is_account){ + $ldap= $this->config->get_ldap_link(); + + /* Check if mail address is valid */ + if (!tests::is_email($this->mail) || $this->mail == ""){ + $message[]= msgPool::invalid(_("Mail address"),"","",_("your-name@your-domain.com")); + } + + /* Check if mail address is already in use */ + $ldap->cd($this->config->current['BASE']); + $ldap->search ("(&(!(objectClass=gosaUserTemplate))(|(mail=".$this->mail.")(gosaMailAlternateAddress=".$this->mail."))(!(cn=".$this->cn.")))", array("uid")); + if ($ldap->count() != 0){ + $message[]= msgPool::duplicated(_("Mail address")); + } + } + + return ($message); + } + + + function save() + { + $ldap= $this->config->get_ldap_link(); + + /* Call parents save to prepare $this->attrs */ + plugin::save(); + + /* Save data to LDAP */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if($this->initially_was_account){ + new log("modify","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify"); + } + } else { + $this->handle_post_events("add"); + } + } + + + /* remove object from parent */ + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Remove and write to LDAP */ + plugin::remove_from_parent(); + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + new log("remove","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + } + + + function getCopyDialog() + { + $str = ""; + $smarty = get_smarty(); + $smarty->assign("mail", $this->mail); + $str = $smarty->fetch(get_template_path("paste_mail.tpl",TRUE,dirname(__FILE__))); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['mail'])){ + $this->mail = $_POST['mail']; + } + } + + + static function plInfo() + { + return (array( + "plShortName" => _("Mail"), + "plDescription" => _("Mail group"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 4, + "plSection" => array("administration"), + "plCategory" => array("ogroups"), + "plProvidedAcls"=> array( + "mail" => _("Mail address")) + )); + } + + + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/admin/ogroups/mail/mail.tpl b/trunk/gosa-plugins/mail/admin/ogroups/mail/mail.tpl new file mode 100644 index 000000000..a28d0ac04 --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/ogroups/mail/mail.tpl @@ -0,0 +1,27 @@ + + + + + + + +
+

{t}Mail distribution list{/t}

+ + + + + +
{$must} +{render acl=$mailACL} + +{/render} +
+
+ + + diff --git a/trunk/gosa-plugins/mail/admin/ogroups/mail/paste_mail.tpl b/trunk/gosa-plugins/mail/admin/ogroups/mail/paste_mail.tpl new file mode 100644 index 000000000..737d707ef --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/ogroups/mail/paste_mail.tpl @@ -0,0 +1,14 @@ + + + + + +
+ {$must} + + +
+ + diff --git a/trunk/gosa-plugins/mail/admin/systems/services/imap/class_goImapServer.inc b/trunk/gosa-plugins/mail/admin/systems/services/imap/class_goImapServer.inc new file mode 100644 index 000000000..7652c26fb --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/imap/class_goImapServer.inc @@ -0,0 +1,229 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goImapServer"); + + /* This class can't be assigned twice so it conflicts with itsself */ + + var $DisplayName = ""; + var $dn = NULL; + var $StatusFlag = "goImapServerStatus"; + var $attributes = array("goImapName","goImapConnect","goImapAdmin","goImapPassword", + "goImapSieveServer","goImapSievePort", + "cyrusImap","cyrusImapSSL","cyrusPop3","cyrusPop3SSL"); + + var $cn = ""; + + var $goImapName = ""; + var $goImapConnect = ""; + var $goImapAdmin = ""; + var $goImapPassword = ""; + + var $goImapSieveServer = ""; + var $goImapSievePort = ""; + var $goImapServerStatus = ""; + + var $cyrusImap = false; + var $cyrusImapSSL = false; + var $cyrusPop3 = false; + var $cyrusPop3SSL = false; + var $is_account = false; + var $view_logged =FALSE; + + var $acl; + + var $Actions = array(); + var $conflicts = array("goImapServer","kolab"); + + function goImapServer(&$config,$dn) + { + goService::goService($config,$dn); + + $this->DisplayName = _("IMAP/POP3 service"); + + $this->Actions = array( SERVICE_STOPPED=>SERVICE_STOPPED, + SERVICE_STARTED => SERVICE_STARTED, + SERVICE_RESTARTED=>SERVICE_RESTARTED, + "repair_database"=>_("Repair database")); + + } + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /* set new status */ + if(isset($_POST['ExecAction'])){ + if(isset($this->Actions[$_POST['action']])){ + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation) { + if(preg_match("/^".$_POST['action']."$/i",$name)){ + if($this->acl_is_writeable($name)){ + $this->setStatus($_POST['action']); + } + } + } + + } + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $smarty->assign("Actions",$this->Actions); + $smarty->assign("is_new",$this->dn); + $smarty->assign("is_acc",$this->initially_was_account); + return($smarty->fetch(get_template_path("goImapServer.tpl",TRUE,dirname(__FILE__)))); + } + + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("IMAP/POP3 (Cyrus) service"); + #$fields['AllowRemove']= true; + #$fields['AllowEdit'] = true; + return($fields); + } + + function check() + { + $message = plugin::check(); + if(empty($this->goImapName)){ + $message[] = msgPool::required(_("Server identifier")); + } + + if(empty($this->goImapConnect)){ + $message[] = msgPool::required(_("Connect URL")); + }elseif(!preg_match('/^\{[^:]+:[0-9]*\/.*\}$/', $this->goImapConnect)){ + $message[]= msgPool::invalid(_("Connect URL"),"","","{server-name:port/options}"); + } + + if(empty($this->goImapSieveServer)){ + $message[] = msgPool::required(_("Sieve connect URL")); + }elseif(!preg_match('/^\{[^:]+:[0-9]*\/(no|)tls\}$/', $this->goImapSieveServer)){ + $message[]= msgPool::invalid(_("Sieve connect URL"),"","","{server-name:port/options}"." ". + sprintf(_("Valid options are: %s"),"tls,notls")); + } + + if(empty($this->goImapAdmin)){ + $message[] = msgPool::required(_("Admin user")); + } + if(empty($this->goImapPassword)){ + $message[] = msgPool::required(_("Password")); + } + +# if(empty($this->goImapSievePort)){ +# $message[] = msgPool::required(_("Sieve port")); +# }elseif (!preg_match('/^[0-9]+$/', $this->goImapSievePort)){ +# $message[]= msgPool::invalid(_("Sieve port"),$this->goImapSievePort,"/[0-9]/"); +# } + + return ($message); + } + + + function save_object() + { + if(isset($_POST['goImapServerPosted'])){ + plugin::save_object(); + + foreach(array("cyrusImap","cyrusImapSSL","cyrusPop3","cyrusPop3SSL") as $checkbox) { + + if($this->acl_is_writeable($checkbox)){ + if(!isset($_POST[$checkbox])){ + $this->$checkbox = false; + }else{ + $this->$checkbox = true; + } + } + } + $this->goImapConnect = trim($this->goImapConnect); + $this->goImapSieveServer = trim($this->goImapSieveServer); + } + } + + + /* Save service */ + function save() + { + + plugin::save(); + + $this->attrs['goImapSievePort'] = preg_replace("/^\{[^:]+:([0-9]*)\/.*$/","\\1",$this->goImapSieveServer); + + /* Check if this is a new entry ... add/modify */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if($this->initially_was_account){ + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("modify"); + }else{ + $this->handle_post_events("add"); + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("IMAP/POP3"), + "plDescription" => _("IMAP/POP3")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 94, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + + "start" => _("Start"), + "stop" => _("Stop"), + "restart" => _("Restart"), + "repair_database" => _("Repair database"), + + "goImapName" =>_("Server identifier"), + "goImapConnect" =>_("Connect URL"), + "goImapAdmin" =>_("Admin user"), + "goImapPassword" =>_("Admin password"), +// "goImapSievePort" =>_("Sieve port"), + "goImapSieveServer"=>_("Sieve connect URL"), + "cyrusImap" =>_("Start IMAP service"), + "cyrusImapSSL" =>_("Start IMAP SSL service"), + "cyrusPop3" =>_("Start POP3 service"), + "cyrusPop3SSL" =>_("Start POP3 SSL service")) + )); + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/admin/systems/services/imap/goImapServer.tpl b/trunk/gosa-plugins/mail/admin/systems/services/imap/goImapServer.tpl new file mode 100644 index 000000000..e0f0b849f --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/imap/goImapServer.tpl @@ -0,0 +1,120 @@ +

{t}Generic{/t}

+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}Server identifier{/t}{$must} + +{render acl=$goImapNameACL} + +{/render} +
{t}Connect URL{/t}{$must} + +{render acl=$goImapConnectACL} + +{/render} +
{t}Admin user{/t}{$must} + +{render acl=$goImapAdminACL} + +{/render} +
{t}Password{/t}{$must} + +{render acl=$goImapPasswordACL} + +{/render} +
{t}Sieve connect URL{/t}{$must} + +{render acl=$goImapSieveServerACL} + +{/render} +
+
+ + + + + + + + + + + + + + + + + +
+{render acl=$cyrusImapACL} + +{/render} + {t}Start IMAP service{/t} +
+{render acl=$cyrusImapSSLACL} + +{/render} + {t}Start IMAP SSL service{/t} +
+{render acl=$cyrusPop3ACL} + +{/render} + {t}Start POP3 service{/t} +
+{render acl=$cyrusPop3SSLACL} + +{/render} + {t}Start POP3 SSL service{/t} +
+
+

 

+
+

Action

+{if $is_new == "new"} + {t}The server must be saved before you can use the status flag.{/t} +{elseif !$is_acc} + {t}The service must be saved before you can use the status flag.{/t} +{/if} +
+ + + +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/mail/admin/systems/services/mail/class_goMailServer.inc b/trunk/gosa-plugins/mail/admin/systems/services/mail/class_goMailServer.inc new file mode 100644 index 000000000..210d8cfdd --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/mail/class_goMailServer.inc @@ -0,0 +1,724 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goMailServer"); + + /* This class can't be assigned twice so it conflicts with itsself */ + var $DisplayName = ""; + var $dn = NULL; + var $StatusFlag = "goMailServerStatus"; + var $attributes = array("description","postfixHeaderSizeLimit", + "postfixMailboxSizeLimit","postfixMessageSizeLimit", + "postfixMyDestinations","postfixMyDomain","postfixMyhostname", + "postfixMyNetworks","postfixRelayhost","postfixTransportTable", + "postfixSenderRestrictions","postfixRecipientRestrictions"); + + var $goMailServerStatus ; + var $postfixHeaderSizeLimit = 0; + var $postfixMailboxSizeLimit = 0; + var $postfixMessageSizeLimit = 0; + var $postfixMyDestinations = array(); + var $postfixMyDomain = ""; + var $postfixMyhostname = ""; + var $postfixMyNetworks = array(); + var $postfixRelayhost = ""; + var $postfixTransportTable = array(); + var $postfixSenderRestrictions = array(); + var $postfixRecipientRestrictions = array(); + var $description = ""; + var $RestrictionFilters = array(); + var $TransportProtocols = array(); + var $Actions = array(); + var $cn = ""; + var $conflicts = array("goMailServer","kolab"); + var $view_logged =FALSE; + + function goMailServer(&$config,$dn) + { + goService::goService($config,$dn); + $this->DisplayName = _("Mail smtp service (Postfix)"); + + $this->Actions = array( SERVICE_STOPPED=>SERVICE_STOPPED, + SERVICE_STARTED => SERVICE_STARTED, + SERVICE_RESTARTED=>SERVICE_RESTARTED); + + /* Fill RestrictionFilters TransportProtocols from external hooks */ + $str = $this->config->data['TABS']['SERVERSERVICE']; + $this->TransportProtocols =array("smtp"=>"SMTP"); + $this->RestrictionFilters = array("FILTER"=>"FILTER"); + foreach(array("POSTFIXRESTRICTIONFILTERS"=>"RestrictionFilters", + "POSTFIXPROTOCOLS" =>"TransportProtocols") as $file => $var){ + if($this->config->get_cfg_value($file) != ""){ + $file = $this->config->get_cfg_value($file); + if((isset($file)) && is_readable($file)){ + $tmp = file_get_contents($file); + $tmp2= split("\n",$tmp); + foreach($tmp2 as $entry){ + if(empty($entry)) continue; + if(preg_match("/:/",$entry)){ + $tmp3 = split(":",$entry); + $r = $this->$var; + $r[$tmp3[0]]=$tmp3[1]; + $this->$var = $r; + }else{ + $r = $this->$var; + $r[$entry] =$entry; + $this->$var = $r; + } + } + } + } + } + + + /* Get postfix my networks */ + $this->postfixMyNetworks = array(); + $tmp = array(); + if(isset($this->attrs['postfixMyNetworks'][0])){ + $tmp = split(",",$this->attrs['postfixMyNetworks'][0]); + foreach($tmp as $str){ + if(!empty($str)){ + $this->postfixMyNetworks[base64_encode($str)] = $str; + } + } + } + + + /* Create full name */ + if(isset($this->attrs['postfixMyDomain'][0])){ + $this->postfixMyhostname .= ".".$this->attrs['postfixMyDomain'][0]; + } + + + /* Get postfix my domains */ + $this->postfixMyDestinations = array(); + if(isset($this->attrs['postfixMyDestinations'][0])){ + unset($this->attrs['postfixMyDestinations']['count']); + foreach($this->attrs['postfixMyDestinations'] as $str){ + $this->postfixMyDestinations[base64_encode($str)] = $str; + } + } + + + /* Get transport tables */ + $tmp = array(); + $this->postfixTransportTable = array(); + if(isset($this->attrs['postfixTransportTable'])){ + $tmp = array(); + unset($this->attrs['postfixTransportTable']['count']); + foreach($this->attrs['postfixTransportTable'] as $entry){ + + //0: offshore.vip.ms-europa.lhsystems.com smtp:172.28.0.2 + + $Number = preg_replace('/^([^:]+):.*$/', '\\1', $entry); + $Rest = trim(preg_replace("/^[0-9]*:/","",$entry)); + + $Protocol_Destination = preg_replace("/^.*\ /","",$Rest); + $Source = preg_replace("/\ .*$/","",$Rest); + + $Protocol = preg_replace ('/^([^:]+):.*$/', '\\1' ,trim($Protocol_Destination)); + $Destination = preg_replace ('/^[^:]+:(.*)$/', '\\1' ,trim($Protocol_Destination)); + + $Destination = preg_replace ("/[\[\]]/","",$Destination); + + $tmp[$Number]['src'] = $Source; + $tmp[$Number]['dst'] = $Destination; + $tmp[$Number]['prt'] = $Protocol; + } + ksort($tmp); + foreach($tmp as $entry){ + $this->postfixTransportTable[] = $entry; + } + } + + + /* Get sender restrictions */ + $tmp = array(); + $this->postfixSenderRestrictions = array(); + if(isset($this->attrs['postfixSenderRestrictions'])){ + unset($this->attrs['postfixSenderRestrictions']['count']); + foreach($this->attrs['postfixSenderRestrictions'] as $entry){ + $nr = preg_replace("/:.*$/","",$entry); + $rest= trim(preg_replace("/^[^:]+:/","",$entry)); + $src = preg_replace("/ .*$/","",$rest); + $rest= preg_replace("/^[^ ]+ /","",$rest); + $dst = preg_replace("/^.* /","",$rest); + $prt = preg_replace("/ .*$/","",$rest); + + $tmp[$nr]['src'] = $src; + $tmp[$nr]['dst'] = $dst; + $tmp[$nr]['filter'] = $prt; + } + ksort($tmp); + foreach($tmp as $entry){ + $this->postfixSenderRestrictions[] = $entry; + } + } + + + /* Get sender restrictions */ + $tmp = array(); + $this->postfixRecipientRestrictions = array(); + if(isset($this->attrs['postfixRecipientRestrictions'])){ + unset($this->attrs['postfixRecipientRestrictions']['count']); + foreach($this->attrs['postfixRecipientRestrictions'] as $entry){ + $nr = preg_replace("/:.*$/","",$entry); + $rest= trim(preg_replace("/^[^:]+:/","",$entry)); + $src = preg_replace("/ .*$/","",$rest); + $rest= preg_replace("/^[^ ]+ /","",$rest); + $dst = preg_replace("/^.* /","",$rest); + $prt = preg_replace("/ .*$/","",$rest); + + $tmp[$nr]['src'] = $src; + $tmp[$nr]['dst'] = $dst; + $tmp[$nr]['filter'] = $prt; + } + ksort($tmp); + foreach($tmp as $entry){ + $this->postfixRecipientRestrictions[] = $entry; + } + } + + } + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $delAr = array( + "TranslationDel_"=>"TranslationDel", + "SenderRestrictDel_"=>"SenderRestrictDel", + "RecipientRestrictDel_"=>"RecipientRestrictDel"); + + $once = true; + $s_action = ""; + $s_entry = ""; + + /* Check posts for some intruductions */ + foreach($_POST as $name => $value){ + foreach($delAr as $preg => $type){ + if((preg_match("/^".$preg."/",$name)) && ($once)){ + $once = false; + $s_action = $type; + $s_entry = preg_replace("/^".$preg."/","",$name); + $s_entry = preg_replace("/_[xy]$/","",$s_entry); + } + } + + + if(preg_match("/^TranslationUp_/",$name) && $once && ($this->acl_is_writeablei("postfixTransportTableACL"))){ + $once = false; + $key = preg_replace("/^TranslationUp_/","",$name); + $key = preg_replace("/_[xy]$/","",$key); + $this->postfixTransportTable = $this->ArrayUp($key,$this->postfixTransportTable) ; + } + if(preg_match("/^TranslationDown_/",$name) && $once && ($this->acl_is_writeable("postfixTransportTableACL"))){ + $once = false; + $key = preg_replace("/^TranslationDown_/","",$name); + $key = preg_replace("/_[xy]$/","",$key); + $this->postfixTransportTable = $this->ArrayDown($key,$this->postfixTransportTable) ; + } + if(preg_match("/^SenderRestrictUp_/",$name) && $once && ($this->acl_is_writeable("postfixSenderRestrictionsACL"))){ + $once = false; + $key = preg_replace("/^SenderRestrictUp_/","",$name); + $key = preg_replace("/_[xy]$/","",$key); + $this->postfixSenderRestrictions = $this->ArrayUp($key,$this->postfixSenderRestrictions) ; + } + if(preg_match("/^SenderRestrictDown_/",$name) && $once && ($this->acl_is_writeable("postfixSenderRestrictionsACL"))){ + $once = false; + $key = preg_replace("/^SenderRestrictDown_/","",$name); + $key = preg_replace("/_[xy]$/","",$key); + $this->postfixSenderRestrictions = $this->ArrayDown($key,$this->postfixSenderRestrictions) ; + } + if(preg_match("/^RecipientRestrictUp_/",$name) && $once && ($this->acl_is_writeable("postfixRecipientRestrictionsACL"))){ + $once = false; + $key = preg_replace("/^RecipientRestrictUp_/","",$name); + $key = preg_replace("/_[xy]$/","",$key); + $this->postfixRecipientRestrictions = $this->ArrayUp($key,$this->postfixRecipientRestrictions) ; + } + if(preg_match("/^RecipientRestrictDown_/",$name) && $once && ($this->acl_is_writeable("postfixRecipientRestrictionsACL"))){ + $once = false; + $key = preg_replace("/^RecipientRestrictDown_/","",$name); + $key = preg_replace("/_[xy]$/","",$key); + $this->postfixRecipientRestrictions = $this->ArrayDown($key,$this->postfixRecipientRestrictions) ; + } + } + + + /* Add delete my network entry */ + if((isset($_POST['AddpostfixMyNetworks'])) && (!empty($_POST['NewString_postfixMyNetworks']))){ + $str = $_POST['NewString_postfixMyNetworks']; + $this->postfixMyNetworks[base64_encode($str)] = $str; + } + + if((isset($_POST['DelpostfixMyNetworks'])) && isset($_POST['Select_postfixMyNetworks']) &&(count($_POST['Select_postfixMyNetworks']))){ + foreach($_POST['Select_postfixMyNetworks'] as $str ){ + unset($this->postfixMyNetworks[$str]); + } + } + + + /* Add delete my domain entry */ + if($this->acl_is_writeable("postfixMyDestinations")){ + if((isset($_POST['AddpostfixMyDestinations'])) && (!empty($_POST['NewString_postfixMyDestinations']))){ + $str = $_POST['NewString_postfixMyDestinations']; + $this->postfixMyDestinations[base64_encode($str)] = $str; + } + + if((isset($_POST['DelpostfixMyDestinations'])) && isset($_POST['Select_postfixMyDestinations']) &&(count($_POST['Select_postfixMyDestinations']))){ + foreach($_POST['Select_postfixMyDestinations'] as $str ){ + unset($this->postfixMyDestinations[$str]); + } + } + } + + + /* Add sender restriction */ + if($this->acl_is_writeable("postfixSenderRestrictions")){ + if(($s_action == "SenderRestrictDel") && (isset($this->postfixSenderRestrictions[$s_entry]))){ + unset($this->postfixSenderRestrictions[$s_entry]); + } + + if(isset($_POST['AddpostfixSenderRestrictions'])){ + $src = $_POST['Source_postfixSenderRestrictions']; + $dst = $_POST['Destination_postfixSenderRestrictions']; + $Filter = $_POST['SenderRestrictionFilter']; + $tmp['src'] = $src; + $tmp['dst'] = $dst; + $tmp['filter'] = $Filter; + $this->postfixSenderRestrictions[] = $tmp; + } + } + + + /* Add sender restriction */ + if($this->acl_is_writeable("postfixRecipientRestrictions")){ + if(($s_action == "RecipientRestrictDel") && (isset($this->postfixRecipientRestrictions[$s_entry]))){ + unset($this->postfixRecipientRestrictions[$s_entry]); + } + + if(isset($_POST['AddpostfixRecipientRestrictions'])){ + $src = $_POST['Source_postfixRecipientRestrictions']; + $dst = $_POST['Destination_postfixRecipientRestrictions']; + $Filter = $_POST['RecipientRestrictionFilter']; + $tmp['src'] = $src; + $tmp['dst'] = $dst; + $tmp['filter'] = $Filter; + $this->postfixRecipientRestrictions[] = $tmp; + } + } + + /* Handle transports */ + if($this->acl_is_writeable("postfixTransportTable")){ + if(($s_action == "TranslationDel") && (isset($this->postfixTransportTable[$s_entry]))){ + unset($this->postfixTransportTable[$s_entry]); + } + + if(isset($_POST['AddpostfixTransportTable'])){ + $src = trim($_POST['Source_postfixTransportTable']); + $dst = trim($_POST['Destination_postfixTransportTable']); + $prt = trim($_POST['TransportProtocol']); + + if((!empty($src)) && (!empty($dst))){ + if(preg_match("/:/",$dst)){ + $tmp = split("\:",$dst); + $port = trim($tmp[1]); + $ip = trim($tmp[0]); + + if((tests::is_ip($ip)) && (is_numeric($port))){ + $dst = "[".$ip."]:".$port; + } + } + if(tests::is_ip($dst)){ + $dst = "[".$dst."]"; + } + $tmp2 ['src'] = $src; + $tmp2 ['dst'] = $dst; + $tmp2 ['prt'] = $prt; + + $this->postfixTransportTable[] = $tmp2; + } + } + } + + /* Set attributes */ + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + + /* Create divList for translation tables */ + $divTranslation = new divSelectBox("TransportProtocols"); + $divTranslation->SetHeight(90); + foreach($this->postfixTransportTable as $key => $entry){ + $img = ""; + + if($key != 0 && $this->acl_is_writeable("postfixTransportTable")){ + $img.= " "; + }else{ + $img.= ""; + } + if(($key+1) < count($this->postfixTransportTable) && $this->acl_is_writeable("postfixTransportTable")){ + $img.= " "; + }else{ + $img.= ""; + } + + if($this->acl_is_writeable("postfixTransportTable")){ + $img.= " "; + } + $field1 = array("string"=> $entry['src']); + $field2 = array("string"=> $entry['dst']); + $field3 = array("string"=> $entry['prt'],"attach"=>"style='width:120px;'"); + $field4 = array("string"=> $img, "attach"=>"style='border-right:0px;width:40px;'"); + $divTranslation->AddEntry(array($field1,$field2,$field3,$field4,)); + } + $smarty->assign("Div_postfixTransportTable" ,$divTranslation->DrawList()); + + + /* Create divList for sender restrictions */ + $DivSenderRestrict = new divSelectBox("postfixSenderRestrictions"); + $DivSenderRestrict->SetHeight(90); + foreach($this->postfixSenderRestrictions as $key => $entry){ + $img =""; + + if($key != 0 && $this->acl_is_writeable("postfixSenderRestrictions")){ + $img.= " "; + }else{ + $img.= ""; + } + if(($key+1) < count($this->postfixSenderRestrictions) && $this->acl_is_writeable("postfixSenderRestrictions")){ + $img.= " "; + }else{ + $img.= ""; + } + + if($this->acl_is_writeable("postfixSenderRestrictions")){ + $img.= " "; + } + + $field1 = array("string"=> $entry['src']); + $field2 = array("string"=> $entry['dst']); + $field3 = array("string"=> $entry['filter'],"attach"=>"style='width:100px;'"); + $field4 = array("string"=> $img, "attach"=>"style='border-right:0px;width:40px;'"); + $DivSenderRestrict->AddEntry(array($field1,$field2,$field3,$field4,)); + } + $smarty->assign("Div_postfixSenderRestrictions" ,$DivSenderRestrict->DrawList()); + + + /* Create divList for translation tables */ + $DivRecipientRestrict = new divSelectBox("postfixRecipientRestrictions"); + $DivRecipientRestrict->SetHeight(90); + + foreach($this->postfixRecipientRestrictions as $key => $entry){ + $img = ""; + if($key != 0 && $this->acl_is_writeable("postfixRecipientRestrictions")){ + $img.= " "; + }else{ + $img.= ""; + } + if(($key+1) < count($this->postfixRecipientRestrictions) && $this->acl_is_writeable("postfixRecipientRestrictions")){ + $img.= " "; + }else{ + $img.= ""; + } + + if($this->acl_is_writeable("postfixRecipientRestrictions")){ + $img.= " "; + } + $field1 = array("string"=> $entry['src']); + $field2 = array("string"=> $entry['dst']); + $field3 = array("string"=> $entry['filter'],"attach"=>"style='width:100px;'"); + $field4 = array("string"=> $img, "attach"=>"style='border-right:0px;width:40px;'"); + $DivRecipientRestrict->AddEntry(array($field1,$field2,$field3,$field4,)); + } + $smarty->assign("Div_postfixRecipientRestrictions" ,$DivRecipientRestrict->DrawList()); + + + /* set new status */ + if(isset($_POST['ExecAction'])){ + if(isset($this->Actions[$_POST['action']])){ + $this->setStatus($_POST['action']); + } + } + + + $smarty->assign("is_new", $this->dn); + $smarty->assign("is_acc", $this->initially_was_account); + $smarty->assign("TransportProtocols", $this->TransportProtocols); + $smarty->assign("Actions", $this->Actions); + $smarty->assign("RestrictionFilters", $this->RestrictionFilters); + $smarty->assign("postfixTransportTable" , $this->getTransports()); + $smarty->assign("postfixSenderRestrictions" , $this->getSenderRestrictions()); + $smarty->assign("postfixRecipientRestrictions" ,$this->getRecipientRestrictions()); + + return($smarty->fetch(get_template_path("goMailServer.tpl",TRUE,dirname(__FILE__)))); + } + + + /* return transports formated for select box */ + function getTransports() + { + $ret = array(); + foreach($this->postfixTransportTable as $key => $vals){ + $ret[$key] = $vals['src']." -> ".$vals['prt'].":".$vals['dst']; + } + return($ret); + } + + + /* return sender restriction formated for select box */ + function getSenderRestrictions() + { + $ret = array(); + foreach($this->postfixSenderRestrictions as $key => $vals){ + $ret[$key] = $vals['src']." ".$vals['filter']." ".$vals['dst']; + } + return($ret); + } + + + /* return recipient restriction formated for select box */ + function getRecipientRestrictions() + { + $ret = array(); + foreach($this->postfixRecipientRestrictions as $key => $vals){ + $ret[$key] = $vals['src']." ".$vals['filter']." ".$vals['dst']; + } + return($ret); + } + + + /* Return list entry */ + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Mail smtp service (Postfix)"); + #$fields['AllowEdit'] = true; + return($fields); + } + + + function save() + { + $this->postfixMyDomain = preg_replace("/^[^\.]+\./","",$this->postfixMyhostname); + $this->postfixMyhostname = preg_replace("/\..*$/","",$this->postfixMyhostname); + + plugin::save(); + + /* Fix transport table*/ + $i = 0 ; + $this->attrs['postfixTransportTable'] = array(); + foreach($this->postfixTransportTable as $key => $entry){ + $this->attrs['postfixTransportTable'][] = $i.": ".$entry['src']." ".$entry['prt'].":".$entry['dst']; + $i ++; + } + + + /* Fix sender restrictions */ + $i = 0; + $this->attrs['postfixSenderRestrictions'] =array(); + foreach($this->postfixSenderRestrictions as $key => $entry){ + $this->attrs['postfixSenderRestrictions'][] = $i.": ".$entry['src']." ".$entry['filter']." ".$entry['dst']; + $i ++; + } + + + /* Fix recipient restrictions */ + $i = 0; + $this->attrs['postfixRecipientRestrictions'] =array(); + foreach($this->postfixRecipientRestrictions as $key => $entry){ + $this->attrs['postfixRecipientRestrictions'][] = $i.": ".$entry['src']." ".$entry['filter']." ".$entry['dst']; + $i ++; + } + + + /* Fix mydomains */ + $this->attrs['postfixMyDestinations'] = array(); + foreach($this->postfixMyDestinations as $entry){ + $this->attrs['postfixMyDestinations'][] =$entry; + } + + + /* Fix mydomains */ + if(count($this->postfixMyNetworks)){ + $this->attrs['postfixMyNetworks'] = ""; + foreach($this->postfixMyNetworks as $entry){ + $this->attrs['postfixMyNetworks'] .=$entry.","; + } + $this->attrs['postfixMyNetworks'] = preg_replace("/,$/","",$this->attrs['postfixMyNetworks']); + }else{ + $this->attrs['postfixMyNetworks'] = array(); + } + + + /* Check if this is a new entry ... add/modify */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + if($this->initially_was_account){ + $this->handle_post_events("modify"); + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + $this->handle_post_events("add"); + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + } + + + function check() + { + $message =plugin::check(); + if(!is_numeric($this->postfixHeaderSizeLimit)){ + $message[] = msgPool::invalid(_("Header size limit",$this->postfixHeaderSizeLimit,"/[0-9]/")); + } + if(!is_numeric($this->postfixMailboxSizeLimit)){ + $message[] = msgPool::invalid(_("Mailbox size limit",$this->postfixMailboxSizeLimit,"/[0-9]/")); + } + if(!is_numeric($this->postfixMessageSizeLimit)){ + $message[] = msgPool::invalid(_("Message size limit",$this->postfixMessageSizeLimit,"/[0-9]/")); + } + return $message; + } + + + /* Combine new array */ + function combineArrays($ar0,$ar1,$ar2) + { + $ret = array(); + if(is_array($ar0)) + foreach($ar0 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar1)) + foreach($ar1 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar2)) + foreach($ar2 as $ar => $a){ + $ret[]=$a; + } + return($ret); + } + + + function getpos($atr,$attrs) + { + $i = 0; + foreach($attrs as $attr => $name) { + $i++; + if($attr == $atr){ + return($i); + } + } + + return(-1); + } + + + /* TRansports the geiven Arraykey one position up*/ + function ArrayUp($atr,$attrs) + { + $ret = $attrs; + $pos = $this->getpos($atr,$attrs) ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == 1))){ + $before = array_slice($attrs,0,($pos-2)); + $mitte = array_reverse(array_slice($attrs,($pos-2),2)); + $unten = array_slice($attrs,$pos); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + + /* TRansports the geiven Arraykey one position up*/ + function ArrayDown($atr,$attrs) + { + $ret = $attrs; + $pos = $this->getpos($atr,$attrs) ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == $cn))){ + $before = array_slice($attrs,0,($pos-1)); + $mitte = array_reverse(array_slice($attrs,($pos-1),2)); + $unten = array_slice($attrs,($pos+1)); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + function save_object() + { + plugin::save_object(); + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + $source_o = new goMailServer($this->config,$source['dn']); + foreach(array("postfixMyDomain","postfixMyhostname","postfixMyNetworks","postfixTransportTable","postfixSenderRestrictions","postfixRecipientRestrictions","postfixMyDestinations") as $attr){ + $this->$attr = $source_o->$attr; + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Mail smtp (Postfix)"), + "plDescription" => _("Mail smtp - Postfix")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 98, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "postfixMyhostname" => _("Visible full qualified hostname"), + "description" => _("Description"), + "postfixHeaderSizeLimit" => _("Header size limit"), + "postfixMailboxSizeLimit" => _("Max mailbox size"), + "postfixMessageSizeLimit" => _("Max message size"), + "postfixMyDestinations" => _("Domains to accept mail for"), + "postfixMyNetworks" => _("Local networks"), + "postfixRelayhost" => _("Relay host"), + "postfixTransportTable" => _("Transport table"), + "postfixSenderRestrictions" => _("Restrictions for sender"), + "postfixRecipientRestrictions"=> _("Restrictions for recipient")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/admin/systems/services/mail/goMailServer.tpl b/trunk/gosa-plugins/mail/admin/systems/services/mail/goMailServer.tpl new file mode 100644 index 000000000..a95b9ad32 --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/mail/goMailServer.tpl @@ -0,0 +1,225 @@ +

{t}Generic{/t}

+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
{t}Visible full qualified hostname{/t} + +{render acl=$postfixMyhostnameACL} + +{/render} +
{t}Max mail header size{/t} + +{render acl=$postfixMyhostnameACL} +  {t}KB{/t} +{/render} +
{t}Max mailbox size{/t} + +{render acl=$postfixMailboxSizeLimitACL} +  {t}KB{/t} +{/render}
{t}Max message size{/t} + +{render acl=$postfixMessageSizeLimitACL} +  {t}KB{/t} +{/render} +
{t}Relay host{/t} + +{render acl=$postfixRelayhostACL} + +{/render} +
+
+ + + + +
+ {t}Local networks{/t}
+{render acl=$postfixMyNetworksACL} + +{/render} +{render acl=$postfixMyNetworksACL} + +{/render} +{render acl=$postfixMyNetworksACL} + +{/render} +{render acl=$postfixMyNetworksACL} + +{/render} +
+
+

 

+

{t}Domains and routing{/t}

+
+ + + + +
+ {t}Domains to accept mail for{/t}
+{render acl=$postfixMyDestinationsACL} + +{render acl=$postfixMyDestinationsACL} + +{/render} +{render acl=$postfixMyDestinationsACL} + +{/render} +{render acl=$postfixMyDestinationsACL} + +{/render} +
+
+ + + + +
+ {t}Transports{/t}
+{render acl=$postfixTransportTableACL} + {$Div_postfixTransportTable} +{/render} + +{render acl=$postfixTransportTableACL} + +{/render} +{render acl=$postfixTransportTableACL} + +{/render} +{render acl=$postfixTransportTableACL} + +{/render} +{render acl=$postfixTransportTableACL} + +{/render} +
+
+

 

+

{t}Restrictions{/t}

+
+ + + + +
+ {t}Restrictions for sender{/t}
+{render acl=$postfixSenderRestrictionsACL} + {$Div_postfixSenderRestrictions} +{/render} +{render acl=$postfixSenderRestrictionsACL} + +{/render} +{render acl=$postfixSenderRestrictionsACL} + +{/render} +{render acl=$postfixSenderRestrictionsACL} + +{/render} +{render acl=$postfixSenderRestrictionsACL} + +{/render} +
+
+ + + + +
+ {t}Restrictions for recipient{/t}
+{render acl=$postfixRecipientRestrictionsACL} + {$Div_postfixRecipientRestrictions} +{/render} +{render acl=$postfixRecipientRestrictionsACL} + +{/render} +{render acl=$postfixRecipientRestrictionsACL} + +{/render} +{render acl=$postfixRecipientRestrictionsACL} + +{/render} +{render acl=$postfixRecipientRestrictionsACL} + +{/render} +
+
+ +

 

+
+

Action

+{if $is_new == "new"} + {t}The server must be saved before you can use the status flag.{/t} +{elseif !$is_acc} + {t}The service must be saved before you can use the status flag.{/t} +{/if} +
+ + + +

 

+
+ +   + +

+ diff --git a/trunk/gosa-plugins/mail/admin/systems/services/spam/class_goSpamServer.inc b/trunk/gosa-plugins/mail/admin/systems/services/spam/class_goSpamServer.inc new file mode 100644 index 000000000..2967a40e9 --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/spam/class_goSpamServer.inc @@ -0,0 +1,353 @@ +DisplayName = _("Spamassassin"); + + /* Get userinfo & acls */ + $this->ui = get_userinfo(); + + /* Get Flags */ + foreach($this->Flags as $flag){ + $var = "saFlags".$flag; + if(preg_match("/".$flag."/",$this->saFlags)){ + $this->$var = TRUE; + } + } + + /* Get trusted networks */ + $this->TrustedNetworks = array(); + if(isset($this->attrs['saTrustedNetworks']) && is_array($this->attrs['saTrustedNetworks'])){ + $var = $this->attrs['saTrustedNetworks']; + for($i = 0 ; $i < $var['count'] ; $i ++ ){ + $var2 = $this->attrs['saTrustedNetworks'][$i]; + $this->TrustedNetworks[ $var2 ] = $var2; + } + } + + /* Get rules */ + $this->Rules = array(); + if(isset($this->attrs['saRule']) && is_array($this->attrs['saRule'])){ + $var = $this->attrs['saRule']; + for($i = 0 ; $i < $var['count'] ; $i ++ ){ + $var2 = $this->attrs['saRule'][$i]; + $name = preg_replace("/:.*$/","",$var2); + $value= base64_decode(preg_replace("/^.*:/","",$var2)); + $this->Rules[ $name ] = $value; + } + } + } + + + function execute() + { + $display =""; + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /* If displayed, it is ever true*/ + $this->is_account =true; + + /* Get acls */ + $tmp = $this->plinfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + /* Add new trusted network */ + if(isset($_POST['AddNewTrust']) && ($this->acl_is_writeable("saTrustedNetworks"))){ + $this->AddTrust($_POST['NewTrustName']); + } + + /* Delete selected trusted network */ + if(isset($_POST['DelTrust']) && ($this->acl_is_writeable("saTrustedNetworks"))){ + $this->DelTrust($_POST['TrustedNetworks']); + } + + /* Add a new rule */ + if(isset($_POST['AddRule']) && $this->acl_is_writeable("saRule")){ + $this->dialog = new goSpamServerRule($this->config,$this->dn); + } + + /* Cancel adding/editing specified rule */ + if(isset($_POST['CancelRule'])){ + $this->dialog = FALSE; + } + + /* Handle post to delete rules */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^editRule_/",$name) && $once && $this->acl_is_readable("saRule")){ + $once = false; + $entry = preg_replace("/^editRule_/","",$name); + $entry = preg_replace("/_(x|y)$/","",$entry); + $rule = $this->Rules[$entry]; + $name = $entry; + $this->dialog = new goSpamServerRule($this->config,$this->dn,$name,$rule); + } + if(preg_match("/^delRule_/",$name) && $once && $this->acl_is_writeable("saRule")){ + $once = false; + $entry = preg_replace("/^delRule_/","",$name); + $entry = preg_replace("/_(x|y)$/","",$entry); + unset($this->Rules[$entry]); + } + } + + /* Save rules */ + if(isset($_POST['SaveRule'])){ + $this->dialog->save_object(); + $msgs = $this->dialog->check(); + if(count($msgs)){ + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }elseif($this->acl_is_writeable("saRule")){ + $ret = $this->dialog->save(); + if((!empty($ret['orig_name'])) && isset($this->Rules[$ret['orig_name']])){ + unset($this->Rules[$ret['orig_name']]); + } + $this->Rules[$ret['name']] = $ret['rule']; + $this->dialog = FALSE; + } + } + + /* Display dialog if available */ + if($this->dialog && $this->dialog->config){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + /* Assign smarty vars */ + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + /* Assign checkbox states */ + foreach($this->Flags as $Flag){ + $var = "saFlags".$Flag; + $smarty->assign("saFlags".$Flag."ACL", $this->getacl($Flag)); + if($this->$var){ + $smarty->assign("saFlags".$Flag."CHK"," checked " ); + }else{ + $smarty->assign("saFlags".$Flag."CHK",""); + } + } + + /* Create divlist */ + $DivRules = new divSelectBox("SpamRules"); + $DivRules->SetHeight(130); + + if(!$this->acl_is_writeable("saTrustedNetworks")){ + $actions = ""; + }else{ + $actions = ""; + if($this->acl_is_writeable("saRule")){ + $actions.= ""; + } + } + + foreach($this->Rules as $key => $net){ + $field1 = array("string" => $key ); + $field2 = array("string" => sprintf($actions,$key,$key) , "attach" => "style='border-right:0px;width:36px;'"); + $DivRules->AddEntry(array($field1,$field2)); + } + $smarty->assign("divRules",$DivRules->DrawList()); + $smarty->assign("TrustedNetworks",$this->TrustedNetworks); + + /* Create Spam score select box entries */ + $tmp = array(); + for($i = 0 ; $i <= 20 ; $i ++ ){ + $tmp[$i] = $i; + } + $smarty->assign("SpamScore",$tmp); + + return($display.$smarty->fetch(get_template_path("goSpamServer.tpl",TRUE,dirname(__FILE__)))); + } + + + /* Add $post to list of configured trusted */ + function AddTrust($post) + { + if(!empty($post)){ + if(tests::is_ip($post) || tests::is_domain($post) || (tests::is_ip_with_subnetmask($post))){ + $this->TrustedNetworks[$post] = $post; + }else{ + msg_dialog::display(_("Error"), msgPool::invalid(_("Trusted network")), ERROR_DIALOG); + } + } + } + + + /* Delete trusted network */ + function DelTrust($posts) + { + foreach($posts as $post){ + if(isset($this->TrustedNetworks[$post])){ + unset($this->TrustedNetworks[$post]); + } + } + } + + function save() + { + if(!$this->is_account) return; + plugin::save(); + + /* Create Flags */ + $this->attrs['saFlags'] = array(); + foreach($this->Flags as $flag){ + $var = "saFlags".$flag; + if($this->$var){ + $this->attrs['saFlags'].=$flag; + } + } + + /* Create trusted network entries */ + $this->attrs['saTrustedNetworks'] = array(); + foreach($this->TrustedNetworks as $net){ + $this->attrs['saTrustedNetworks'][] = $net; + } + + /* Rules */ + $this->attrs['saRule'] = array(); + foreach($this->Rules as $name => $rule){ + $this->attrs['saRule'][] = $name.":".base64_encode($rule); + } + + /* Check if this is a new entry ... add/modify */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if($this->initially_was_account){ + $this->handle_post_events("modify"); + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + $this->handle_post_events("add"); + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + function check() + { + $message = plugin::check(); + + /* Check if required score is numeric */ + if(!is_numeric($this->saRequiredScore)){ + $message[] = msgPool::invalid(_("Score"),$this->saRequiredScore,"/[0-9]/"); + } + + return($message); + } + + + function save_object() + { + if(isset($_POST['goSpamServer'])){ + + plugin::save_object(); + + /* Check flags */ + foreach($this->Flags as $flag){ + $var = "saFlags".$flag; + + if($this->acl_is_writeable($var)){ + if(isset($_POST[$var])){ + $this->$var = TRUE; + }else{ + $this->$var = FALSE; + } + } + } + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Spamassassin"), + "plDescription" => _("Spamassassin")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 89, + "plSection" => array("administration"), + "plCategory" => array("server"), + "plProvidedAcls"=> array( + + "saRewriteHeader" => _("Rewrite header"), + "saTrustedNetworks" => _("Trusted networks"), + "saRequiredScore" => _("Required score"), + "saRule" => _("Rules"), + + "saFlagB" => _("Enable use of bayes filtering"), + "saFlagb" => _("Enabled bayes auto learning"), + "saFlagC" => _("Enable RBL checks"), + "saFlagR" => _("Enable use of Razor"), + "saFlagD" => _("Enable use of DDC"), + "saFlagP" => _("Enable use of Pyzor")) + )); + } + + /* For newer service management dialogs */ + function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Spamassassin"); + #$fields['AllowEdit'] = true; + return($fields); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/admin/systems/services/spam/class_goSpamServerRule.inc b/trunk/gosa-plugins/mail/admin/systems/services/spam/class_goSpamServerRule.inc new file mode 100644 index 000000000..c8eed5d4e --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/spam/class_goSpamServerRule.inc @@ -0,0 +1,61 @@ +name = $this->orig_name= $name; + $this->rule = $rule; + } + + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + return($smarty->fetch(get_template_path("goSpamServerRule.tpl",TRUE,dirname(__FILE__)))); + } + + function save_object() + { + plugin::save_object(); + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + } + + + function save() + { + $ret =array(); + $ret['orig_name'] = $this->orig_name; + $ret['name'] = $this->name; + $ret['rule'] = $this->rule; + return($ret); + } + + function check() + { + $messages = plugin::check(); + return($messages); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/admin/systems/services/spam/goSpamServer.tpl b/trunk/gosa-plugins/mail/admin/systems/services/spam/goSpamServer.tpl new file mode 100644 index 000000000..386633181 --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/spam/goSpamServer.tpl @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + +

Spam tagging

+ + + + + + + + + + +
+ {t}Rewrite header{/t} + +{render acl=$saRewriteHeaderACL} + +{/render} +
+ {t}Required score{/t} + +{render acl=$saRequiredScoreACL} + +{/render} +
+ +

Trusted networks

+ + + + + +
+{render acl=$saTrustedNetworksACL} +
+{/render} +{render acl=$saTrustedNetworksACL} +   +{/render} +{render acl=$saTrustedNetworksACL} + +{/render} +{render acl=$saTrustedNetworksACL} + +{/render} +
+ +
+

 

+
+

Flags

+ + + + + +
+{render acl=$saFlagsBACL} +  {t}Enable use of bayes filtering{/t}
+{/render} +{render acl=$saFlagsbACL} +  {t}Enable bayes auto learning{/t}
+{/render} +{render acl=$saFlagsCACL} +  {t}Enable RBL checks{/t} +{/render} +
+
+ + + + +
+{render acl=$saFlagsRACL} +  {t}Enable use of Razor{/t}
+{/render} +{render acl=$saFlagsDACL} +  {t}Enable use of DDC{/t}
+{/render} +{render acl=$saFlagsPACL} +  {t}Enable use of Pyzor{/t} +{/render} +
+ +
+

 

+

Rules

+ + + + + +
+ {$divRules}
+{render acl=$saTrustedNetworksACL} + +{/render} +
+ +
+ + +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/mail/admin/systems/services/spam/goSpamServerRule.tpl b/trunk/gosa-plugins/mail/admin/systems/services/spam/goSpamServerRule.tpl new file mode 100644 index 000000000..1be76cb8a --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/spam/goSpamServerRule.tpl @@ -0,0 +1,25 @@ +

Edit spam rule

+ + + + + + + + + +
+ {t}Name{/t} + + +
+ {t}Rule{/t} + +
+

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/mail/admin/systems/services/virus/class_goVirusServer.inc b/trunk/gosa-plugins/mail/admin/systems/services/virus/class_goVirusServer.inc new file mode 100644 index 000000000..a8ca48572 --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/virus/class_goVirusServer.inc @@ -0,0 +1,250 @@ +DisplayName = _("Anti virus"); + + /* Get userinfo & acls */ + $this->ui = get_userinfo(); + + /* Get Flags */ + foreach($this->Flags as $flag){ + $var = "avFlags".$flag; + if(preg_match("/".$flag."/",$this->avFlags)){ + $this->$var = TRUE; + } + } + } + + + function execute() + { + $smarty = get_smarty(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + + /* Set acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation) { + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $display = ""; + $smarty->assign("servtabs",FALSE); + $this->is_account = true; + + /* Assign smarty vars */ + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + /* Assign checkbox states */ + foreach($this->Flags as $Flag){ + $var = "avFlags".$Flag; + if($this->$var){ + $smarty->assign("avFlags".$Flag."CHK"," checked " ); + }else{ + $smarty->assign("avFlags".$Flag."CHK",""); + } + } + + /* Assign value for max thread select box */ + $tmp = array(); + for($i = 1 ; $i <= 20 ; $i ++){ + $tmp[$i] = $i; + } + $smarty->assign("ThreadValues",$tmp); + + if($this->avFlagsA){ + $smarty->assign("avFlagsAState" , "" ); + }else{ + $smarty->assign("avFlagsAState" , " disabled " ); + } + + return($display.$smarty->fetch(get_template_path("goVirusServer.tpl",TRUE,dirname(__FILE__)))); + } + + + function save() + { + if(!$this->is_account) return; + + /* Create Flags */ + $this->avFlags = ""; + foreach($this->Flags as $flag){ + $var = "avFlags".$flag; + if($this->$var){ + $this->avFlags .=$flag; + } + } + + plugin::save(); + + if(!$this->avFlagsA){ + $arr = array("avArchiveMaxFileSize","avArchiveMaxRecursion","avArchiveMaxCompressionRatio"); + foreach($arr as $attr){ + $this->attrs[$attr] = array(); + } + $this->attrs['avFlags'] = preg_replace("/E/","",$this->attrs['avFlags']); + } + + /* Check if this is a new entry ... add/modify */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if($this->initially_was_account){ + $this->handle_post_events("modify"); + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + $this->handle_post_events("add"); + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + function check() + { + $message = plugin::check(); + + $mustBeNumeric = array( + "avMaxDirectoryRecursions" =>_("Maximum directory recursions"), + "avMaxThreads" =>_("Maximum threads"), + "avArchiveMaxFileSize" =>_("Maximum file size"), + "avArchiveMaxRecursion" =>_("Maximum recursions"), + "avArchiveMaxCompressionRatio" =>_("Maximum compression ratio"), + "avChecksPerDay" =>_("Checks per day")); + + foreach($mustBeNumeric as $key => $trans){ + if(!is_numeric($this->$key)){ + $message[] = msgPool::invalid($trans,$this->$key,"/[0-9]/"); + } + } + + foreach(array("avUser"=>_("Database user"),"avHttpProxyURL"=>_("Http proxy URL"),"avDatabaseMirror"=>_("Database mirror")) as $attr => $name){ + if(!preg_match("/^[a-z0-9:_\-\.\/]*$/",$this->$attr)){ + $message[] = msgPool::invalid($name,$this->$attr,"/[a-z0-9:_\-\.\/]/"); + } + } + + return($message); + } + + + function save_object() + { + if(isset($_POST['goVirusServer'])){ + plugin::save_object(); + foreach($this->Flags as $flag){ + + $var = "avFlags".$flag; + if($this->acl_is_writeable($var)){ + if(isset($_POST[$var])){ + $this->$var = TRUE; + }else{ + $this->$var = FALSE; + } + } + } + } + } + + + /* For newer service management dialogs */ + function getListEntry() + { + $fields = goService::getListEntry(); + #$fields['AllowEdit'] = true; + $fields['Message'] = _("Anti virus"); + return($fields); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Anti virus"), + "plDescription" => _("Anti virus")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 96, + "plSection" => array("administration"), + "plCategory" => array("server"), + "plProvidedAcls"=> array( + + "start" => _("Start"), + "stop" => _("Stop"), + "restart" => _("Restart"), + + "avFlagsD" =>_("Enable debugging"), + "avFlagsS" =>_("Enable mail scanning"), + "avFlagsA" =>_("Enable scanning of archives"), + "avFlagsE" =>_("Block encrypted archives"), + + "avMaxThreads" =>_("Maximum threads"), + "avMaxDirectoryRecursions" =>_("Maximum directory recursions"), + "avUser" =>_("Anti virus user"), + "avArchiveMaxFileSize" =>_("Maximum file size"), + "avArchiveMaxRecursion" =>_("Maximum recursions"), + "avArchiveMaxCompressionRatio" =>_("Maximum compression ratio"), + "avDatabaseMirror" =>_("Database mirror"), + "avChecksPerDay" =>_("Checks per day"), + "avHttpProxyURL" =>_("Http proxy URL")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/admin/systems/services/virus/goVirusServer.tpl b/trunk/gosa-plugins/mail/admin/systems/services/virus/goVirusServer.tpl new file mode 100644 index 000000000..b49533388 --- /dev/null +++ b/trunk/gosa-plugins/mail/admin/systems/services/virus/goVirusServer.tpl @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + +
+

{t}Generic virus filtering{/t}

+
+ + + + + + + + + + + + + + + + + +
+ {t}Database user{/t} + +{render acl=$avUserACL} + +{/render} +
+ {t}Database mirror{/t} + +{render acl=$avDatabaseMirrorACL} + +{/render} +
+ {t}Http proxy URL{/t} + +{render acl=$avHttpProxyURLACL} + +{/render} +
+ {t}Maximum threads{/t} + +{render acl=$avMaxThreadsACL} + +{/render} +
+ +
+ + + + + + + + + + + + + + + + +
+ {t}Max directory recursions{/t} + +{render acl=$avMaxDirectoryRecursionsACL} + +{/render} +
+ {t}Checks per day{/t} + +{render acl=$avChecksPerDayACL} + +{/render} +
+{render acl=$avFlagsDACL} + +{/render} + {t}Enable debugging{/t} +
+{render acl=$avFlagsSACL} + +{/render} + {t}Enable mail scanning{/t} +
+
+

 

+

{t}Archive scanning{/t}

+
+ + + + + + + +
+{render acl=$avFlagsAACL} + +{/render} + {t}Enable scanning of archives{/t} +
+{render acl=$avFlagsEACL} + +{/render} + {t}Block encrypted archives{/t} +
+ +
+ + + + + + + + + + + + + +
{t}Maximum file size{/t} + +{render acl=$avArchiveMaxFileSizeACL} + +{/render} +
{t}Maximum recursion{/t} + +{render acl=$avArchiveMaxRecursionACL} + +{/render} +
{t}Maximum compression ratio{/t} + +{render acl=$avArchiveMaxCompressionRatioACL} + +{/render} +
+ +
+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/mail/contrib/goAgent.pl b/trunk/gosa-plugins/mail/contrib/goAgent.pl new file mode 100644 index 000000000..41b991e24 --- /dev/null +++ b/trunk/gosa-plugins/mail/contrib/goAgent.pl @@ -0,0 +1,225 @@ +#!/usr/bin/perl +# +# Igor Muratov +# +# Find changes at LDAP and put this to filesystem +# +# +# Igor Muratov +# 20041004 +# - Added rebuildVirtual function +# +# Igor Muratov +# 20040617: +# - Changed search fiter to exclude gosaUserTemplate entries +# +# Simon Liebold : +# 20040617: +# - Changed $TS_FILE-location +# +# $Id: goAgent.pl,v 1.4 2004/11/19 21:46:56 migor-guest Exp $ +# + +use strict; +use Net::LDAP; + +my $LDAP_HOST='localhost'; +my $LDAP_PORT='389'; +my $LDAP_BASE='dc=example,dc=com'; +#my $LDAP_USER='cn=admin,dc=example,dc=com'; +#my $LDAP_PASS='secret'; + +my $HOME_DIR='/home'; +my $TS_FILE='/tmp/gosa_timestamp'; +my $KEYS_DIR='/etc/openssh/authorized_keys2'; +my $MAIL_DIR='/var/spool/mail'; +my $VLOCAL='/etc/postfix/virtual_local'; +my $VFORWARD='/etc/postfix/virtual_forward'; +my ($ldap, $mesg, $entry); +my $virtuals = 0; + +# Anonymous bind to LDAP +sub anonBind +{ + my $ldap = Net::LDAP->new( $LDAP_HOST, port => $LDAP_PORT ); + my $mesg = $ldap->bind(); + $mesg->code && die $mesg->error; + return $ldap; +} + +# Bind as LDAP user +#sub userBind +#{ +# my $ldap = Net::LDAP->new( $LDAP_HOST, port => $LDAP_PORT ); +# my $mesg = $ldap->bind($LDAP_USER, password=>$LDAP_PASS); +# $mesg->code && die $mesg->error; +# return $ldap; +#} + +# Read timestamp +sub getTS +{ + open(F, "< $TS_FILE"); + my $ts = ; + chop $ts; + $ts ||= "19700101000000Z"; + return $ts; +} + +# save timestamp +sub putTS +{ + my $ts = `date -u '+%Y%m%d%H%M%SZ'`; + open(F, "> $TS_FILE"); + print F $ts; +} + +sub rebuildVirtuals +{ + print "Rebuild virtuals table for postfix\n"; + $mesg = $ldap->search( + base => $LDAP_BASE, + filter => "(&(objectClass=gosaMailAccount)(gosaMailDeliveryMode=[*L*])(|(mail=*)(gosaMailAlternateAddress=*)))", + attrs => [ + 'mail', + 'uid', + 'gosaMailForwardingAddress', + 'memberUid' + ], + ); + + # Work if changes is present + open(VIRT, "> $VLOCAL"); + foreach my $entry ($mesg->all_entries) + { + foreach my $addr ($entry->get_value('mail')) + { + print VIRT "$addr\t"; + print VIRT join(",", ( + $entry->get_value("uid"), + $entry->get_value("gosaMailForwardingAddress"), + $entry->get_value("memberUid"), + )); + print VIRT "\n"; + } + } + close(VIRT); + `postmap $VLOCAL`; + + $mesg = $ldap->search( + base => $LDAP_BASE, + filter => "(&(objectClass=gosaMailAccount)(!(gosaMailDeliveryMode=[*L*]))(|(mail=*)(gosaMailAlternateAddress=*)))", + attrs => [ + 'gosaMailForwardingAddress', + ], + ); + + # Work if changes is present + open(VIRT, "> $VFORWARD"); + foreach my $entry ($mesg->all_entries) + { + foreach my $addr ($entry->get_value('mail')) + { + print VIRT "$addr\t"; + print VIRT join(",", ( + $entry->get_value("gosaMailForwardingAddress"), + )); + print VIRT "\n"; + } + } + close(VIRT); + `postmap $VFORWARD`; +} + +sub posixAccount +{ + my $entry = shift; + my $uid = ($entry->get_value('uid'))[0]; + my $home = ($entry->get_value('homeDirectory'))[0]; + my $uidNumber = ($entry->get_value('uidNumber'))[0]; + my $gidNumber = ($entry->get_value('gidNumber'))[0]; + + print "Update posixAccount: $uid\n"; + `install -dD -m0701 -o$uidNumber:$gidNumber $home`; + #`install -d -m0700 -o$uidNumber:$gidNumber $home/.ssh`; + #`install -d -m0751 -o$uidNumber:$gidNumber $home/.public_html`; + print "\tEntry ".$entry->dn()." updated\n"; +} + +# Get ssh keys and place to system directory +sub strongAuthenticationUser +{ + my $entry = shift; + my $uid = ($entry->get_value('uid'))[0]; + open(KEYS, "> $KEYS_DIR/$uid"); + print KEYS $_ foreach ($entry->get_value('userCertificate;binary')); +} + +# Create mailbox if need +sub inetLocalMailRecipient +{ + my $entry = shift; + my $uid = ($entry->get_value('uid'))[0]; + my $mail = ($entry->get_value('mailLocalAddress'))[0]; + my $addr = ($entry->get_value('mailRoutingAddress'))[0]; + my $uidNumber = ($entry->get_value('uidNumber'))[0]; + my $mailbox = "$MAIL_DIR/$uid"; + + print "Update inetLocalMailRecipient: $mail\n"; + if( $uid eq $addr ) + { + if( -f "$mailbox" ) + { + print "Warning: mailbox $mailbox alredy exists. No changes.\n"; + } else { + `install -m660 -o$uidNumber -gmail /dev/null $mailbox`; + } + } + print "\tEntry ".$entry->dn()." updated\n"; +} + +sub disassemble +{ + my $entry = shift; + + foreach my $attr ($entry->get_value('objectClass')) + { + if( $attr eq "posixAccount" ) { + posixAccount($entry); + } elsif( $attr eq "inetLocalMailRecipient" ) { + inetLocalMailRecipient($entry); + } elsif( $attr eq "strongAuthenticationUser" ) { + strongAuthenticationUser($entry); + } elsif( $attr eq "gosaMailAccount" ) { + $virtuals++; + } + } +} + +# +# Start main process +# + +# Read timestamp from file +my $ts = getTS; + +$ldap = anonBind; +$mesg = $ldap->search( + base => $LDAP_BASE, + filter => "(&(modifyTimestamp>=$ts)(!(objectClass=gosaUserTemplate)))" +); + +# Put timestamp to file +putTS; + +# Work if changes is present +if($mesg->count > 0) +{ + print "Processing records modified after $ts\n\n"; + + foreach my $entry ($mesg->all_entries) + { + disassemble($entry); + } + rebuildVirtuals if $virtuals; +} diff --git a/trunk/gosa-plugins/mail/contrib/sieve_vacation/IMAP/Sieve.pm b/trunk/gosa-plugins/mail/contrib/sieve_vacation/IMAP/Sieve.pm new file mode 100644 index 000000000..ec108083c --- /dev/null +++ b/trunk/gosa-plugins/mail/contrib/sieve_vacation/IMAP/Sieve.pm @@ -0,0 +1,401 @@ +# $Id: Sieve.pm,v 0.4.9b 2001/06/15 19:25:00 alain Exp $ + +package IMAP::Sieve; + +use strict; +use Carp; +use IO::Select; +use IO::Socket; +use IO::Socket::INET; +#use Text::ParseWords qw(parse_line); +use Cwd; + +use vars qw($VERSION); + +$VERSION = '0.4.9b'; + +sub new { + my $class = shift; + my $self = {}; + bless $self, $class; + if ((scalar(@_) % 2) != 0) { + croak "$class called with incorrect number of arguments"; + } + while (@_) { + my $key = shift(@_); + my $value = shift(@_); + $self->{$key} = $value; + } + $self->{'CLASS'} = $class; + $self->_initialize; + return $self; +} + +sub _initialize { + my $self = shift; + my ($len,$userpass,$encode); + if (!defined($self->{'Server'})) { + croak "$self->{'CLASS'} not initialized properly : Server parameter missing"; + } + if (!defined($self->{'Port'})) { + $self->{'Port'} = 2000; # default sieve port; + } + if (!defined($self->{'Login'})) { + croak "$self->{'CLASS'} not initialized properly : Login parameter missing"; + } + if (!defined($self->{'Password'})) { + croak "$self->{'CLASS'} not initialized properly : Password parameter missing"; + } + if (!defined($self->{'Proxy'})) { + $self->{'Proxy'} = ''; # Proxy; + } + if (defined($self->{'SSL'})) { + my $cwd= cwd; + my %ssl_defaults = ( + 'SSL_use_cert' => 0, + 'SSL_verify_mode' => 0x00, + 'SSL_key_file' => $cwd."/certs/client-key.pem", + 'SSL_cert_file' => $cwd."/certs/client-cert.pem", + 'SSL_ca_path' => $cwd."/certs", + 'SSL_ca_file' => $cwd."/certs/ca-cert.pem", + ); + my @ssl_options; + my $ssl_key; + my $key; + foreach $ssl_key (keys(%ssl_defaults)) { + if (!defined($self->{$ssl_key})) { + $self->{$ssl_key} = $ssl_defaults{$ssl_key}; + } + } + foreach $ssl_key (keys(%{$self})) { + if ($ssl_key =~ /^SSL_/) { + push @ssl_options, $ssl_key,$self->{$ssl_key}; + } + } + my $SSL_try="use IO::Socket::SSL"; + eval $SSL_try; + if (!eval {$self->{'Socket'} = + IO::Socket::SSL->new(PeerAddr => $self->{'Server'}, + PeerPort => $self->{'Port'}, + Proto => 'tcp', + Reuse => 1, + Timeout => 5, + @ssl_options);}) { + $self->_error("initialize", "couldn't establish a sieve SSL connection to",$self->{'Server'}, "[$!]","path=$cwd"); + delete $self->{'Socket'}; + return; + } + } + else { + + if (!eval {$self->{'Socket'} = IO::Socket::INET->new(PeerAddr => $self->{'Server'}, + PeerPort => $self->{'Port'}, + Proto => 'tcp', + Reuse => 1); }) + { + $self->_error("initialize", "could'nt establish a Sieve connection to",$self->{'Server'}); + return; + } + } # if SSL + + my $fh = $self->{'Socket'}; + $_ = $self->_read; #get banner + my $try=$_; + if (!/timsieved/i) { + $self->close; + $self->_error("initialize","bad response from",$self->{'Server'},$try); + return; + } + chomp; + if (/\r$/) { + chop; + } + if (/IMPLEMENTATION/) { + $self->{'Implementation'}=$1 if /^"IMPLEMENTATION" +"(.*)"/; + #version 2 of cyrus imap/timsieved + # get capability + # get OK as well + $_=$self->_read; + while (!/^OK/) { + $self->{'Capability'}=$1 if /^"SASL" +"(.*)"/; + $self->{'Sieve'}=$1 if /^"SIEVE" +"(.*)"/; + $_ = $self->_read; +## $_=$self->_read; + } + } + else { + $self->{'Capability'}=$_; + } + $userpass = "$self->{'Proxy'}\x00".$self->{'Login'}."\x00".$self->{'Password'}; + $encode=encode_base64($userpass); + $len=length($encode); + print $fh "AUTHENTICATE \"PLAIN\" {$len+}\r\n"; + + print $fh "$encode\r\n"; + + $_ = $self->_read; + $try=$_; + if ($try=~/NO/) { + $self->close; + $self->_error("Login incorrect while connecting to $self->{'Server'}", $try); + return; + } elsif (/OK/) { + $self->{'Error'}= "No Errors"; + return; + } else { + #croak "$self->{'CLASS'}: Unknown error -- $_"; + $self->_error("Unknown error",$try); + return; + } + $self->{'Error'}="No Errors"; + return; +} +sub encode_base64 ($;$) +{ + my $res = ""; + my $eol = $_[1]; + $eol = "\n" unless defined $eol; + pos($_[0]) = 0; # ensure start at the beginning + while ($_[0] =~ /(.{1,45})/gs) { + $res .= substr(pack('u', $1), 1); + chop($res); + } + $res =~ tr|` -_|AA-Za-z0-9+/|; # `# help emacs + # fix padding at the end + my $padding = (3 - length($_[0]) % 3) % 3; + $res =~ s/.{$padding}$/'=' x $padding/e if $padding; + # break encoded string into lines of no more than 76 characters each + if (length $eol) { + $res =~ s/(.{1,76})/$1$eol/g; + } + $res; +} + + +sub _error { + my $self = shift; + my $func = shift; + my @error = @_; + + $self->{'Error'} = join(" ",$self->{'CLASS'}, "[", $func, "]:", @error); +} + +sub _read { + my $self = shift; + my $buffer =""; + my $char = ""; + my $bytes= 1; + while ($bytes == 1) { + $bytes = sysread $self->{'Socket'},$char,1; + if ($bytes == 0) { + if (length ($buffer) != 0) { + return $buffer; + } + else { + return; + } + } + else { + if (($char eq "\n") or ($char eq "\r")) { + if (length($buffer) ==0) { + # remove any cr or nl leftover + } + else { + return $buffer; + } + } + else { + $buffer.=$char; + } + } + } +} + + +sub close { + my $self = shift; + if (!defined($self->{'Socket'})) { + return 0; + } + my $fh =$self->{'Socket'}; + print $fh "LOGOUT\r\n"; + close($self->{'Socket'}); + delete $self->{'Socket'}; +} + +sub putscript { + my $self = shift; + my $len; + + if (scalar(@_) != 2) { + $self->_error("putscript", "incorrect number of arguments"); + return 1; + } + + my $scriptname = shift; + my $script = shift; + + if (!defined($self->{'Socket'})) { + $self->_error("putscript", "no connection open to", $self->{'Server'}); + return 1; + } + $len=length($script); + my $fh = $self->{'Socket'}; + print $fh "PUTSCRIPT \"$scriptname\" {$len+}\r\n"; + print $fh "$script\r\n"; + $_ = $self->_read; + if (/^OK/) { + $self->{'Error'} = 'No Errors'; + return 0; + } else { + $self->_error("putscript", "couldn't save script", $scriptname, ":", $_); + return 1; + } +} + +sub deletescript { + my $self = shift; + + if (scalar(@_) != 1) { + $self->_error("deletescript", "incorrect number of arguments"); + return 1; + } + my $script = shift; + if (!defined($self->{'Socket'})) { + $self->_error("deletescript", "no connection open to", $self->{'Server'}); + return 1; + } + my $fh = $self->{'Socket'}; + print $fh "DELETESCRIPT \"$script\"\r\n"; + $_ = $self->_read; + if (/^OK/) { + $self->{'Error'} = 'No Errors'; + return 0; + } else { + $self->_error("deletescript", "couldn't delete", $script, ":", $_); + return 1; + } +} +sub getscript { # returns a string + my $self = shift; + my $allscript; + + if (scalar(@_) != 1) { + $self->_error("getscript", "incorrect number of arguments"); + return 1; + } + my $script = shift; + if (!defined($self->{'Socket'})) { + $self->_error("getscript", "no connection open to", $self->{'Server'}); + return 1; + } + my $fh = $self->{'Socket'}; + print $fh "GETSCRIPT \"$script\"\r\n"; + $_ = $self->_read; + if (/^{.*}/) { $_ = $self->_read; } # remove file size line + + # should probably use the file size to calculate how much to read in + while ((!/^OK/) && (!/^NO/)) { + $_.="\n" if $_ !~/\n.*$/; # replace newline that _read removes + $allscript.=$_; + $_ = $self->_read; + } + if (/^OK/) { + return $allscript; + } else { + $self->_error("getscript", "couldn't get script", $script, ":", $_); + return; + } +} + +sub setactive { + my $self = shift; + + if (scalar(@_) != 1) { + $self->_error("setactive", "incorrect number of arguments"); + return 1; + } + my $script = shift; + if (!defined($self->{'Socket'})) { + $self->_error("setactive", "no connection open to", $self->{'Server'}); + return 1; + } + my $fh = $self->{'Socket'}; + print $fh "SETACTIVE \"$script\"\r\n"; + $_ = $self->_read; + if (/^OK/) { + $self->{'Error'} = "No Errors"; + return 0; + } else { + $self->_error("setactive", "couldn't set as active", $script, ":", $_); + return 1; + } +} + + +sub noop { + my $self = shift; + my ($id, $acl); + + if (!defined($self->{'Socket'})) { + $self->_error("noop", "no connection open to", $self->{'Server'}); + return 1; + } + my $fh = $self->{'Socket'}; + print $fh "NOOP\r\n"; + $_ = $self->_read; + if (!/^OK/) { + $self->_error("noop", "couldn't do noop" + ); + return 1; + } + $self->{'Error'} = 'No Errors'; + return 0; +} + + +sub listscripts { + my $self = shift; + my (@scripts); + + if (!defined($self->{'Socket'})) { + $self->_error("listscripts", "no connection open to", $self->{'Server'}); + return; + } + + #send the command + $self->{'Socket'}->print ("LISTSCRIPTS\r\n"); + + # While we have more to read + while (defined ($_ = $self->_read)) { + + # Exit the loop if we're at the end of the text + last if (m/^OK.*/); + + # Select the stuff between the quotes (without the asterisk) + # m/^"([^"]+?)\*?"\r?$/; + # Select including the asterisk (to determine the default script) +# m/^"([^"]+?\*?)"\r?$/; + $_=~s/"//g; + # Get the name of the script + push @scripts, $_; + } + + if (/^OK/) { + return @scripts; + } else { + + + + } + if (/^OK/) { + return @scripts; + } else { + $self->_error("list", "couldn't get list for", ":", $_); + return; + } +} + +1; +__END__ + diff --git a/trunk/gosa-plugins/mail/contrib/sieve_vacation/update-vacation.pl b/trunk/gosa-plugins/mail/contrib/sieve_vacation/update-vacation.pl new file mode 100644 index 000000000..aeef96495 --- /dev/null +++ b/trunk/gosa-plugins/mail/contrib/sieve_vacation/update-vacation.pl @@ -0,0 +1,600 @@ +#!/usr/bin/perl -w -I/usr/local/lib/perl +# +# This code is part of GOsa (https://gosa.gonicus.de) +# Copyright (C) 2007 Frank Moeller +# +# 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 + +use strict; +use IMAP::Sieve; +use XML::Simple; +use Data::Dumper; +use Net::LDAP; +use URI; +use utf8; +use Getopt::Std; +use Date::Format; +use vars qw/ %opt /; + +# +# Definitions +# +my $gosa_config = "/etc/gosa/gosa.conf"; +my $opt_string = 'l:hs'; +my $location = ""; +my $today_gmt = time (); +my $today = $today_gmt + 3600; +my $server_attribute = ""; +my $alternate_address_attribute = ""; +my $gosa_sieve_script_name = "gosa"; +my $simple_bind_dn = ""; +my $simple_bind_dn_pwd = ""; +my $gosa_sieve_script_status = "FALSE"; +my $gosa_sieve_spam_header = "Sort mails with higher spam level"; +my ($ss,$mm,$hh,$day,$month,$year,$zone); + +# +# Templates +# +my $gosa_sieve_header = "\#\#\#GOSA\nrequire\ \[\"fileinto\",\ \"reject\",\ \"vacation\"\]\;\n\n"; +my $vacation_header_template = "\# Begin vacation message"; +my $vacation_footer_template = "\# End vacation message"; + +# +# Placeholder +# +my $start_date_ph = "##STARTDATE##"; +my $stop_date_ph = "##STOPDATE##"; + +# +# Usage +# +sub usage { + die "Usage:\nperl $0 [option]\n + \twithout any option $0 uses the default location\n + \tOptions: + \t\t-l <\"location name\">\tuse special location + \t\t-s\t\t\tshow all locations + \t\t-h\t\t\tthis help \n"; +} + +# +# Config import +# +sub read_config { + my $input = shift || die "need config file: $!"; + my $stream = ""; + open ( FILE, "< $input" ) or die "Error opening file $input: $! \n"; + { + local $/ = undef; + $stream = ; + } + close ( FILE ); + return $stream; +} + +# +# XML parser +# +sub parseconfig { + my $c_location = shift; + my $xmldata = shift; + chomp $c_location; + chomp $xmldata; + my $data = $xmldata; + my $xml = new XML::Simple (); + my $c_data = $xml -> XMLin( $xmldata); + my $config = {}; + my $config_base; + my $ldap_admin; + my $ldap_admin_pwd; + my $url; + my $mailMethod; + #print Dumper ($c_data->{main}->{location}->{config}); + if ( $c_data->{main}->{location}->{config} ) { + #print "IF\n"; + $config_base = $c_data->{main}->{location}->{config}; + $url = $c_data->{main}->{location}->{referral}->{url}; + $ldap_admin = $c_data->{main}->{location}->{referral}->{admin}; + $ldap_admin_pwd = $c_data->{main}->{location}->{referral}->{password}; + $mailMethod = $c_data->{main}->{location}->{mailMethod}; + } else { + #print "ELSE\n"; + $config_base = $c_data->{main}->{location}->{$c_location}->{config}; + $url = $c_data->{main}->{location}->{$c_location}->{referral}->{url}; + $ldap_admin = $c_data->{main}->{location}->{$c_location}->{referral}->{admin}; + $ldap_admin_pwd = $c_data->{main}->{location}->{$c_location}->{referral}->{password}; + $mailMethod = $c_data->{main}->{location}->{$c_location}->{mailMethod}; + } + print "$config_base -- $url -- $ldap_admin -- $ldap_admin_pwd -- $mailMethod\n"; + $config->{config_base} = $config_base; + $config->{url} = $url; + $config->{mailMethod} = $mailMethod; + $config->{ldap_admin} = $ldap_admin; + $config->{ldap_admin_pwd} = $ldap_admin_pwd; + + return $config; +} + +# +# Get default location +# +sub get_default_location { + my $xmldata = shift; + my $xml = new XML::Simple ( RootName=>'conf' ); + my $c_data = $xml -> XMLin( $xmldata ); + my $default = $c_data->{main}->{default}; + + return $default; +} + +# +# List all location +# +sub list_locations { + my $xmldata = shift; + my $xml = new XML::Simple ( RootName=>'conf' ); + my $c_data = $xml -> XMLin( $xmldata ); + my $default = get_default_location ( $xmldata ); + $default = $default . " (default)"; + my @locations = ( $default ); + my $data_ref = $c_data->{main}->{location}; + my @keys = keys ( %{$data_ref} ); + @locations = (@locations, @keys); + + return @locations; +} + +# +# LDAP error handling +# +sub ldap_error { + my ($from, $mesg) = @_; + print "Return code: ", $mesg->code; + print "\tMessage: ", $mesg->error_name; + print " :", $mesg->error_text; + print "MessageID: ", $mesg->mesg_id; + print "\tDN: ", $mesg->dn; +} + + +# +# LDAP search +# +sub ldap_search { + my $url = shift; + my $searchString = shift; + my $scope = shift; + my $base = shift; + my $attrs = shift; + my $bind_dn = shift; + my $bind_dn_pwd = shift; + + if ( $base eq "NULL" ) { + $base = ""; + } + my $ldap = Net::LDAP->new( $url ) or die "$@"; + if ( ( ! ( $bind_dn ) ) || ( ! ( $bind_dn_pwd ) ) ) { + $ldap->bind; + } else { + $ldap->bind ( $bind_dn, password => $bind_dn_pwd ); + } + + my $result = $ldap->search ( base => "$base", + scope => "$scope", + filter => "$searchString", + attrs => $attrs + ); + if ( $result->code ) { + ldap_error ( "Searching", $result ); + } + + $ldap->unbind; + + return $result; +} + +# +# Retrieve LDAP server +# +sub get_ldap_server { + my $url = shift; + + my $uri = URI->new($url); + + my $scheme = $uri->scheme; + my $host = $uri->host; + my $port = $uri->port; + #print "$scheme - $host - $port\n"; + my $server = $scheme . "://" . $host . ":" . $port; + + return $server; +} + +# +# Retrieve LDAP base +# +sub get_ldap_base { + my $url = shift; + my $config_base = shift; + my $bind_dn = shift; + my $bind_dn_pwd = shift; + my $filter = "(objectClass=*)"; + my $init_base = "NULL"; + my $scope = "base"; + my $attributes = [ 'namingcontexts' ]; + my $entry = {}; + my $base = ""; + + $config_base =~ s/\,\ +/\,/g; + #print $url."\n"; + #print $config_base."\n"; + my $result = ldap_search ( $url, $filter, $scope, $init_base, $attributes, $bind_dn, $bind_dn_pwd ); + my @entries = $result->entries; + my $noe = @entries; + #print $noe."\n"; + foreach $entry ( @entries ) { + my $tmp = $entry->get_value ( 'namingcontexts' ); + #print $tmp."\n"; + $tmp =~ s/\,\ +/\,/g; + if ( $config_base =~ m/$tmp/ ) { + $base = $entry->get_value ( 'namingcontexts' ); + } + } + + return $base; +} + +# +# SIEVE functions +# +sub opensieve { + my $admin = shift; + my $pass = shift; + my $user = shift; + my $server = shift; + my $port = shift; + + #print ( "##### Proxy => $user, Server => $server, Login => $admin, Password => $pass, Port => $port ####\n" ); + + my $sieve = IMAP::Sieve->new ( 'Proxy' => $user, 'Server' => $server, 'Login' => $admin, 'Password' => $pass, 'Port' => $port ); + return $sieve; +} + +sub closesieve { + my $sieve = shift; + + if ($sieve) {$sieve->close}; +} + +sub listscripts { + my $sieve = shift; + + my @scripts = $sieve->listscripts; + my $script_list = join("\n",@scripts)."\n"; + #print $script_list; + return $script_list; +} + +sub getscript { + my $sieve = shift; + my $script = shift; + my $scriptfile; + chomp $script; + #print "$sieve\n"; + #print "$script\n"; + + $scriptfile = $sieve->getscript($script); + return $scriptfile; +} + +sub putscript { + my $sieve = shift; + my $scriptname = shift; + my $script = shift; + #print "$sieve\n"; + #print "$scriptname\n"; + #print "$script\n"; + + my $res=$sieve->putscript($scriptname,$script); + if ($res) {print $sieve->{'Error'}} + return; +} + +sub setactive { + my $sieve = shift; + my $script = shift; + + my $res=$sieve->setactive($script); + if ($res) { print $sieve->{'Error'};} + return; +} + +# +# main () +# +# read options +getopts( "$opt_string", \%opt ); + +# read GOsa config +my $input_stream = read_config ( $gosa_config ); + +# get location +if ( $opt{l} ) { + $location = $opt{l}; +} elsif ( $opt{h} ) { + usage (); + exit (0); +} elsif ( $opt{s} ) { + my $loc; + my $counter = 1; + my @locations = list_locations ( $input_stream ); + print "\nConfigured Locations: \n"; + print "---------------------\n"; + foreach $loc ( @locations ) { + print $counter . ". " . $loc . "\n"; + $counter++; + } + print "\n\n"; + exit (0); +} else { + $location = get_default_location ( $input_stream ); +} + +# parse config +my $config = parseconfig ( $location, $input_stream ); +my $ldap_url = get_ldap_server ( $config->{url} ); +my $gosa_config_base = $config->{config_base}; +my $bind_dn = $config->{ldap_admin}; +my $bind_dn_pwd = $config->{ldap_admin_pwd}; +my $mailMethod = $config->{mailMethod}; +utf8::encode($ldap_url); +utf8::encode($gosa_config_base); +utf8::encode($mailMethod); + +# default mailMethod = kolab +if ( $mailMethod =~ m/kolab/i ) { + $server_attribute = "kolabHomeServer"; + $alternate_address_attribute = "alias"; +} elsif ( $mailMethod =~ m/cyrus/i ) { + $server_attribute = "gosaMailServer"; + $alternate_address_attribute = "gosaMailAlternateAddress"; +} else { + exit (0); +} + +# determine LDAP base +my $ldap_base = get_ldap_base ( $ldap_url, $gosa_config_base, $simple_bind_dn, $simple_bind_dn_pwd ); + +# retrieve user informations with activated vacation feature +my $filter = "(&(objectClass=gosaMailAccount)(gosaMailDeliveryMode=*V*)(!(gosaMailDeliveryMode=*C*)))"; +my $list_of_attributes = [ 'uid', 'mail', $alternate_address_attribute, 'gosaVacationMessage', 'gosaVacationStart', 'gosaVacationStop', $server_attribute ]; +my $search_scope = "sub"; +my $result = ldap_search ( $ldap_url, $filter, $search_scope, $ldap_base, $list_of_attributes, $simple_bind_dn, $simple_bind_dn_pwd ); + +my @entries = $result->entries; +my $noe = @entries; +#print "NOE = $noe\n"; +my $entry = {}; +foreach $entry ( @entries ) { + # INITIALISATIONS + $gosa_sieve_script_status = "FALSE"; + my @sieve_scripts = ""; + my $script_name = ""; + my $sieve_script = ""; + my $sieve_vacation = ""; + # END INITIALISATIONS + my $uid_v = $entry->get_value ( 'uid' ); + #print "$uid_v\n"; + my $mail_v = $entry->get_value ( 'mail' ); + my @mailalternate = $entry->get_value ( $alternate_address_attribute ); + my $vacation = $entry->get_value ( 'gosaVacationMessage' ); + my $start_v = $entry->get_value ( 'gosaVacationStart' ); + my $stop_v = $entry->get_value ( 'gosaVacationStop' ); + my $server_v = $entry->get_value ( $server_attribute ); + + # temp. hack to compensate old gosa server name style + #if ( $server_v =~ m/^imap\:\/\//i ) { + # $server_v =~ s/^imap\:\/\///; + #} + if ( ! ( $uid_v ) ) { + $uid_v = ""; + } + if ( ! ( $mail_v ) ) { + $mail_v = ""; + } + my @mailAddress = ($mail_v); + my $alias = ""; + foreach $alias ( @mailalternate ) { + push @mailAddress, $alias; + } + my $addresses = ""; + foreach $alias ( @mailAddress ) { + $addresses .= "\"" . $alias . "\", "; + } + $addresses =~ s/\ *$//; + $addresses =~ s/\,$//; + if ( ! ( $vacation ) ) { + $vacation = ""; + } + + if ( ! ( $start_v ) ) { + $start_v = 0; + next; + } + #print time2str("%d.%m.%Y", $start_v)."\n"; + my $start_date_string = time2str("%d.%m.%Y", $start_v)."\n"; + + if ( ! ( $stop_v ) ) { + $stop_v = 0; + next; + } + #print time2str("%d.%m.%Y", $stop_v)."\n"; + my $stop_date_string = time2str("%d.%m.%Y", $stop_v)."\n"; + + chomp $start_date_string; + chomp $stop_date_string; + $vacation =~ s/$start_date_ph/$start_date_string/g; + $vacation =~ s/$stop_date_ph/$stop_date_string/g; + + if ( ! ( $server_v ) ) { + $server_v = ""; + next; + } + #print $uid_v . " | " . + # $addresses . " | " . + # "\n"; + + my ($sieve_user, $tmp) = split ( /\@/, $mail_v ); + + print "today = $today\nstart = $start_v\nstop = $stop_v\n"; + my $real_stop = $stop_v + 86400; + if ( ( $today >= $start_v ) && ( $today < $real_stop ) ) { + print "activating vacation for user $uid_v\n"; + + my $srv_filter = "(&(goImapName=$server_v)(objectClass=goImapServer))"; + my $srv_list_of_attributes = [ 'goImapSieveServer', 'goImapSievePort', 'goImapAdmin', 'goImapPassword' ]; + my $srv_result = ldap_search ( $ldap_url, $srv_filter, $search_scope, $ldap_base, $srv_list_of_attributes, $bind_dn, $bind_dn_pwd ); + my @srv_entries = $srv_result->entries; + my $srv_entry = {}; + my $noe = @srv_entries; + if ( $noe == 0 ) { + printf STDERR "Error: no $server_attribute defined! Aboarting..."; + } elsif ( $noe > 1 ) { + printf STDERR "Error: multiple $server_attribute defined! Aboarting..."; + } else { + my $goImapSieveServer = $srv_entries[0]->get_value ( 'goImapSieveServer' ); + my $goImapSievePort = $srv_entries[0]->get_value ( 'goImapSievePort' ); + my $goImapAdmin = $srv_entries[0]->get_value ( 'goImapAdmin' ); + my $goImapPassword = $srv_entries[0]->get_value ( 'goImapPassword' ); + if ( ( $goImapSieveServer ) && ( $goImapSievePort ) && ( $goImapAdmin ) && ( $goImapPassword ) ) { +# if ( ! ( $sieve_user = $uid_v ) ) { +# $sieve_user = $uid_v; +# } + #my $sieve = opensieve ( $goImapAdmin, $goImapPassword, $sieve_user, $goImapSieveServer, $goImapSievePort); + my $sieve = opensieve ( $goImapAdmin, $goImapPassword, $uid_v, $goImapSieveServer, $goImapSievePort); + @sieve_scripts = listscripts ( $sieve ); + #print Dumper (@sieve_scripts); + $script_name = ""; + if ( @sieve_scripts ) { + foreach $script_name ( @sieve_scripts ) { + if ( $script_name =~ m/$gosa_sieve_script_name/ ) { + $gosa_sieve_script_status = "TRUE"; + } + } + if ( $gosa_sieve_script_status eq "TRUE" ) { + print "retrieving and modifying gosa sieve script for user $uid_v\n"; + # requirements + $sieve_script = getscript( $sieve, $gosa_sieve_script_name ); + #print "$sieve_script\n"; + if ( ! ( $sieve_script ) ) { + print "No Sieve Script! Creating New One!\n"; + $sieve_script = $gosa_sieve_header; + } + if ( $sieve_script =~ m/require.*\[.*["|'] *vacation *["|'].*\]/ ) { + print "require vacation ok\n"; + } else { + print "require vacation not ok\n"; + print "modifying require statement\n"; + $sieve_script =~ s/require(.*\[.*)\]/require$1\, "vacation"\]/; + } + if ( ! ( $sieve_script =~ m/$vacation_header_template/ ) ) { + print "no match header template\n"; + $sieve_vacation = $vacation_header_template . + "\n" . + "vacation :addresses [$addresses]\n" . + "\"" . + $vacation . + "\n\"\;" . + "\n" . + $vacation_footer_template . + "\n\n"; + } + #print ( "$sieve_vacation\n" ); + #print ( "$sieve_script\n" ); + # including vacation message + if ( $sieve_script =~ m/$gosa_sieve_spam_header/ ) { + #print "MATCH\n"; + $sieve_script =~ s/($gosa_sieve_spam_header[^{}]*{[^{}]*})/$1\n\n$sieve_vacation/; + } else { + $sieve_script =~ s/require(.*\[.*\]\;)/require$1\n\n$sieve_vacation/; + } + #print ( "START SIEVE $sieve_script\nSTOP SIEVE" ); + # uploading new sieve script + putscript( $sieve, $gosa_sieve_script_name, $sieve_script ); + # activating new sieve script + setactive( $sieve, $gosa_sieve_script_name ); + } else { + print "no gosa script available for user $uid_v, creating new one"; + $sieve_script = $gosa_sieve_header . "\n\n" . $sieve_vacation; + # uploading new sieve script + putscript( $sieve, $gosa_sieve_script_name, $sieve_script ); + # activating new sieve script + setactive( $sieve, $gosa_sieve_script_name ); + } + } + closesieve ( $sieve ); + } + } + } elsif ( $today >= $real_stop ) { + print "deactivating vacation for user $uid_v\n"; + + my $srv_filter = "(&(goImapName=$server_v)(objectClass=goImapServer))"; + my $srv_list_of_attributes = [ 'goImapSieveServer', 'goImapSievePort', 'goImapAdmin', 'goImapPassword' ]; + my $srv_result = ldap_search ( $ldap_url, $srv_filter, $search_scope, $ldap_base, $srv_list_of_attributes, $bind_dn, $bind_dn_pwd ); + my @srv_entries = $srv_result->entries; + my $srv_entry = {}; + my $noe = @srv_entries; + if ( $noe == 0 ) { + printf STDERR "Error: no $server_attribute defined! Aboarting..."; + } elsif ( $noe > 1 ) { + printf STDERR "Error: multiple $server_attribute defined! Aboarting..."; + } else { + my $goImapSieveServer = $srv_entries[0]->get_value ( 'goImapSieveServer' ); + my $goImapSievePort = $srv_entries[0]->get_value ( 'goImapSievePort' ); + my $goImapAdmin = $srv_entries[0]->get_value ( 'goImapAdmin' ); + my $goImapPassword = $srv_entries[0]->get_value ( 'goImapPassword' ); + if ( ( $goImapSieveServer ) && ( $goImapSievePort ) && ( $goImapAdmin ) && ( $goImapPassword ) ) { + #my $sieve = opensieve ( $goImapAdmin, $goImapPassword, $sieve_user, $goImapSieveServer, $goImapSievePort); + my $sieve = opensieve ( $goImapAdmin, $goImapPassword, $uid_v, $goImapSieveServer, $goImapSievePort); + @sieve_scripts = listscripts ( $sieve ); + $script_name = ""; + if ( @sieve_scripts ) { + foreach $script_name ( @sieve_scripts ) { + if ( $script_name =~ m/$gosa_sieve_script_name/ ) { + $gosa_sieve_script_status = "TRUE"; + } + } + if ( $gosa_sieve_script_status eq "TRUE" ) { + # removing vacation part + $sieve_script = getscript( $sieve, $gosa_sieve_script_name ); + if ( $sieve_script ) { + #print "OLD SIEVE SCRIPT:\n$sieve_script\n\n"; + $sieve_script =~ s/$vacation_header_template[^#]*$vacation_footer_template//; + #print "NEW SIEVE SCRIPT:\n$sieve_script\n\n"; + # uploading new sieve script + putscript( $sieve, $gosa_sieve_script_name, $sieve_script ); + # activating new sieve script + setactive( $sieve, $gosa_sieve_script_name ); + } + } + } + closesieve ( $sieve ); + } + } + } else { + print "no vacation process necessary for user $uid_v\n"; + } +} diff --git a/trunk/gosa-plugins/mail/contrib/vacation_example.txt b/trunk/gosa-plugins/mail/contrib/vacation_example.txt new file mode 100644 index 000000000..58cad1555 --- /dev/null +++ b/trunk/gosa-plugins/mail/contrib/vacation_example.txt @@ -0,0 +1,9 @@ +DESC: Funny message +I am currently out at a job interview and will reply to you if I fail +to get the position. Be prepared for my mood. In urgent cases you can +reach me on the cell phone via %mobile or write a snail mail to: + +%homePostalAddress + +Greetings, +%givenName %sn diff --git a/trunk/gosa-plugins/mail/help/guide.xml b/trunk/gosa-plugins/mail/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/mail/html/images/alternatemail.png b/trunk/gosa-plugins/mail/html/images/alternatemail.png new file mode 100644 index 0000000000000000000000000000000000000000..62b0534335930094ed7f6681eb3a5e97faeee097 GIT binary patch literal 893 zcmV-@1A_dCP)}2+1vYXCkb|xBghq?jgH)kndni=I zN~s~Igdp}(!4@JZSy*bC9weq=A(drFH(6(!-R5I6-E}sZ|NQ@d4^=_@diVE!@9>_0 z|Iz8wS2apme>kih@%`Y%dVS|z-zVRmKmR%h0QujH=gwVIgMbaFs`N%zSL%>u#oNne zS6EnBd1-BJ=X(I&-vTaP%!-tw{N$ZOh&;uAV~s>#r2o(-mRVi zVE-jxbo7T5=lt13BJ!GLB@XY|V}=YvgCq%{lw)JVLntJpyW5K1zFj&B;3EJK#>Q^8 zFveerL_&khrA%@;0R8g@j+SpTkF z(a#Sa?0LSguPts_@juM~Kq&_y45d;PiXtNv64BfHa2I2IaB%PoQ49ihPY|#~2otJR z4~4=89H$D;^TF5ydZXcka}G)w2w_O4Tcgov_!-7nQe=!39H*M0lm({Q3|)`F^L)(C z+L)QKvA$kIwfZXnfDnoxpoqm(bad$Z2?_e8$;om0$o?m3rB;4UZrP62$rjqJR&;e* zaNTW8Pv>CUWu#IGFb4R3@Ov{FDHhjc32(uilctaSq|82H2l=K6djd;$me8B*gQjX| zX^BDCH5f)5O-(Wgq3}F{tt}6>T}n$hgin?udolX|>I>A{7<1-R73)aDcp#14Q-6oN|O`xM3E z1|}!x{i&(>iG2Q-HyLA}X0xXp0Fa%EQyDG|r{YQ+$N6!LZ;oT8I)kKdV#fup-kh)H za?5kBTmP)l@UII38kx+;{EwZ;*u+<2LHtnPt49{@F8~6dI4aui?4{RpD?hKU)V^el zeRt)`2kZZIIzc=t8mg`iCCtRJPOCGudT-T>+1)|M{l`bt?c_I?FTa=jue<*Sg&dcB TVkZV700000NkvXXu0mjfihQmb literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/envelope.png b/trunk/gosa-plugins/mail/html/images/envelope.png new file mode 100644 index 0000000000000000000000000000000000000000..6053eeda485dd88f281622827bc505cb2228d613 GIT binary patch literal 843 zcmV-R1GM~!P)7i%#SmZWL_8>OlS$A0T*I}7K#N+si-01rnI1&Y(%Ii6coCsyNVbW zrDhfXXg3wDP(d;<#1JW(MLIN1!Zf6L%%qcM#_?rl-n_Z*-tW3-EUmxa@`H1}?{Lmx z_@6m{{`;tuG}_f=zQMV8x!LTz&3W+6)YM4@0LH%oFI@OBECd}6hxJoKLwzsUcKpdo z#brxNo3HHbbbbKf{f*$_#k?jZS&Xr#HI2Q~+Z%uG(4nU?>2w520lLoMIMs=*t@?)m zijNUYPyf`XlscA3Sg+f5;`s1zCe+&-g|0J5sZgtV2!#yn-)~25-!8ui;C%pKGc!Lw zL8M-@tkC%2V9(+H{zTliW6*UC0HBlt=Y+Mj3Zl_4giyG2DOadeetYT4mA6V75sfC3 zk&llYIdJ0O!Tz{y#~*?LKuU!mAe75>n5KbHNW;iTc8ExgkB@(%X+qF_#;_g)#Oieq z8yhv0N_BW12hoG;?KX!}3Q`h+fG{}N6NyB+UL>NlMnoH>QavXniA*MjRLX+qaV#tp zF+X2Kwc0?v-U0vwfrJne-Q8gf45Xe90x_yzzy7&Adh}$&_r;0fVLN77CQ_+xWV1=Q zu8-N-0*b{7`uY+e0yr0YpGnJcb_`=r=hEh8^_P41+-x?RfKmX!kWP1FZ0rC$uY+VV z3Qc2ZwK{0G0{{$4saG`sID7WE?|J--<>j&@dZ1MZ3D<2SlZj(sAPv*hA%q0y0yl4N z2D#kQYP0FT_b>;$yWU)}xc%$MNdH(*PZW(t2Zo{VX(u$BK9-luw79tLtgV&44uW7h zpFdYJ9S->P){*>&B?)ZLwMXJ+T|>!9?VKfcSS%H`hxn9i$EiZ_criJu>d zB@`#Tl$gLnL}-N(!J82gH!I@qmDX(Xmp4rkKnGDwuvJBjKZv0T>p>hfP}JN#?C9 zWD}i?kDo@Jnu!?w`+$qt+hS#*@zx|(?F631hs<52=L(w2T7%D@dZ`y7JrrQ1T>RWs z^7%aaTyhDu>nyE~V^}F4-;SuP5Abz!zpB;hnC^?~ECFptUZM|czRxL~ksGQ*C-D6y z=G4?JkeH6w@7es)VzzODv92^q8QAtJy1&1lzOEM1*q|+UnX!p$%CZuaN(B}c-hqg) z`D{{3_lKm}bXi`m(ASp(c4k$p>o{?b#3vsq+up!+J%)#m1KYFy0m04Vsx9b~aR2}S M07*qoM6N<$f?x&&GXMYp literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/mailq_header.png b/trunk/gosa-plugins/mail/html/images/mailq_header.png new file mode 100644 index 0000000000000000000000000000000000000000..0d826bbf3ce4cfa5fa6bbbd1a926b6897af14c35 GIT binary patch literal 936 zcmV;Z16TZsP)WFU8GbZ8({Xk{QrNlj4iWF>9@00Rt3L_t(|+GUeXXk29& zg`e;5&Ye3m$)rilq(+TRjHFsqtJYRfCrS&Ix=_=FE~G_-ZURN?!j-FR6bT3-h+PyB zOSDqdU^c~IwYVs)MTHbvL#9nSA%8PXCYiZ&@AtV#6Iwm1m&4)kayUouAAB(~e&p=M z+5X&?*b4_Vr=o@Gj$O zBslfcWhSQzU!ER5{N@I)0B#f)S_eNI8#^+P-}~Io4&pc>VKiG?Q&UF{R~@=8Q*; z)ID80p3h%8_uWbT@rkil|C|wz3+K2#w+etmaQW&Ydmd@!?|&93%vDfIgL43M=F(i8 z$mG8nJ>M=~e)rTTJ>A`d>4aQQLRw8l=v_?ybvkvDRp^y*j5W#f04pJbb1R+2OuH4+n1DsMw z;eoX{Yr$Et4&f;Tg3GcQM+?#Nt^6-m2A9OWDWCD+D%Fq-TvVlkH zwt*Co4Gc}Gb-uyZq>_g1Ev|Cx^{0nq{+aD7Pqgq}TgK6t^k@t``Z^nUZFdWE7fJTcZ~^P_~g$Ar_1t(_O17!jE7bVa72-%9@Utiogutc>>qyr(D?t> zxPi&Z$?kK1%)T`>Tiu^Y2fF~Owc4*8t>$cgXYSLE`#b0E)c*?=RUdD@rmGhK0000< KMNUMnLSTaJnX07# literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/mailq_hold.png b/trunk/gosa-plugins/mail/html/images/mailq_hold.png new file mode 100644 index 0000000000000000000000000000000000000000..2083104f4e8648a638ee25971fac7d6fe9fcb6c5 GIT binary patch literal 750 zcmV4Q*j(U-|zk5-MVgV>NXddw1Kt|Vj+cvL_$LJ6a-OF5nR%Tpx%4%rGFrL z>XL6g^wNtDwL}mxFsG@AxH9oa!)9yU?M`pr-F@%v!CGvS`aB-aIeb3n@F6&0;)4qk zV0Xi@qkuyIdzEL!H`}3vQu|kKZKNX1+j}@selSf#!}o7X*yX>J>q6mj?ha zvG^Ce+T+1S)^7T=Y78lga-YNpW+ZS@=GLWat318s0*y%g!;0Yv>WMOH6^Bc#T_sxv5- z8UO%PkU%IO>6Q4&5TG$qf*nj?O%_|FY~6iS#{%BI8S==C7CmaL?9P8o@m zgx0sGqTb`3Z8AtrBaY)BwYh`&6)hdIChvvF@}#P&dKIhp?u%AKI5y;VAG*;V6y?K> z`<3O3Ce|~hUDMD;g5{~FL2hkPRaL$28v#I36!A;>WLW1SJ%sX60*4aYNc&l8F2HYW g0m!MUTKdEP1!R-^n*?dI<^TWy07*qoM6N<$f;Pum0RR91 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/mailq_unhold.png b/trunk/gosa-plugins/mail/html/images/mailq_unhold.png new file mode 100644 index 0000000000000000000000000000000000000000..d07edf37f8d46929af7873b7291c743ead1dbd25 GIT binary patch literal 829 zcmV-D1H$}?P)-o!xFS*-hNt1k;x6YFb4J3%S%%#2$o5MG!rBDF~tMA)Y)I z6~tb|lRY_52-boif~2Q{&_k8ls!36Fr42S|XtukqyE{pS% zkLP;@dsOAjEgPa~;;0Oz>&vr>Cdi+thiGp@V z82?LcS|9!3zP$RFLFLS?B0^p*F_N##J7u8A3OG%r49<87;SbzPiz>iJ`z zuPlDOsQ^Z&Pn|0i@+aPzu@Ol8AYydbVrB}?ex;er2lzom5XKxDPjcshO4m9Jyi!qD zROR%KHY$1P^`nkGmdxgTMCt+?r%i-)gmw(IQ1zBV=&Uj(zhz82JjHKc9P(q+2|7-Hv$3tv{NdRQR zMo3-OfC!CZwW+YQz|w+-Z|`X`o=?$S0U`SF31X=sTJHEU)#k{KFx~^6n}?-;VI^R@ z7hpyHn$%|FrU}{|DL~48?|#PIJp6hu#!eVg34^T-(ROPqXR3?xhI`x>#=jtg8v6&m zoqkxKe6vC5w|IKE&BTz$LB~S|H4?qXLSC=j*8tkIKCIW}s}mz5rJQ5!!0%sN2cS6c z-!^}DLh271Yh%6Z=TS6wzVZvR3#BkIdS$BYOdQ&uL5N4rggB0=u5Pk)yR}yAUOQD3 zzh84**Ly^D?Cmc`{ltL}(&>F~9V}Rxp@Dv6?TvuDwQwu&TMLEW_45Vw=P$17dXHTr z!0ha-b+7mAn5Rldgw$n0EJft6iZ3c`6sq?O&2b!W@xyUT#SL z`@XIae}8|~M^8Qd5cj=ZRlR)O(--yRAP`=xwS_%wZ*LEr{~tU(J%8RcG&DRgB_t#c z^q-aF%F60M2TFZ?eR_I28jV&_QStEbP*PF?PCOnDq^<3K<^cf#etv!k1R^dj zuB@!Ayu3U*I=Zv7v#F^mB_$;|I5;;qmrN!DkGZ+Ijg5_ukB^Ryj;^k*o}M1aO+!ON zTU*=7$tg886~rMB2q+Y)qN1Xqp&>FdGB!3gAt3?8q|@meTi@NE_<01Oo}g;|149D> zL!Q3~c^-=i3PW=klgfHQ@U(PvIywUl zMkWSb_9cVRor%F=a*8lD16V8$i`yqFD;oe3&TSaZtL@IKAIPuo&u<(qC@3fbG|@rf z#nsKlq=6D5wG>nf>TR1KRM!z&1_-TVgm!vmZ6kOwkbGlfBe83g)Z9jDqx=n^j5U)f zEnjIZT_dfnt!;pgZt^ha3t*7d0qCFX7-Dw}FMi#pv#YC%LZMKp)SjN6UiwO3UmtCZ zMWeI&C)Wl54EDg}%HY)6(6@;pCU+FTTppd_ew$t$158Yh&2Yhs(WjT`GfRvKCSz)r zF}FSrV9t)uEKjnylk@9SfVt(Vxiuz}ISp9Ym;ta?W@lNmtc6+j%G}%>i?cC5KhI{f z7XXW##ibPvhqJV_w7k5$y1L5ca@RLD!M|*7Zf5?*duK%?I1k7 zeEb53p@KrfM?^%$B_yPe%gUZmR6c(}RYODH$ixJG!}0bLFK=YvOB4o|m7QNx*W60( zrcN?hYux`rZhr^t?ELugWA|Uwe%S_X#~Wj2Y+!HNhHySE@Bv~{2eG>%e@g!(u`Lpx zdD8+eDu$9mnDi1=PrZ;AgC@CO?InI34A|1O^scsvm$(ydd;6iStSCxSE-&Ka_#bye zaWBoQci4B(jK|d)GBtDr3xfXJaH(DEGQ)w>M?>}B^YV9J z%+Hw=%Ry>g6gj)QX+);;Uk{H{-nCw-FmO;SrzwP-tM*DXpkm9ZIjj9w&W9id-lB38yGbjaPWw^rR)GI}#HM`dvSv^}?#+FXm(Xyhls!f7_|3 z)>bEuR&32*dhCtV$$RsGgp8^maXamJD>?9x)*H%He~|#WYKWr_>v5h(%+x$+NxKkO zNijzwr35Xmp(}$pNm{?ctA@7*&-8uDJhHYv@6~}RTkXbOr=1T}H6UfaXI+mHT|g($ zX`C5_09z?MY3BsgLQN3k&1jAZFGq~1g&G91+2P8TCsK}P9!}DC7gdY@tJVNp`C0wJ zO8n}~+h-9i#rpnFgI+kcQGsdkrd>x*ypVYOuCA;_MCfoJ@!_(9kjLw6d6o5hHAtUZmR+A;C#xwXRli&ch1R~@{ zbBkL0&FKiguuNDx?200}O{U33iXms5tM)1kM$l@>F~wHxZu+K-BE_o?-7Ti6m$*KE_ihK9ttvdrF*`z-PlwRZ!+lQ54cY*(7WXF*+GwAv||SiFa0z z^dJp(d;YBWpXOl#1uxC)VYhBzAl)>$xNBH-jDzE~w9_a_7nlq5tTa3<^wp!1{yoT4 Wv07mPrnD3^J;V%VX^b~?4*Lh3SRSPS literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/plugin.png b/trunk/gosa-plugins/mail/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..332af4d921d901c04bddc6563d3e43765e85f3ec GIT binary patch literal 955 zcmV;s14R6ZP)P;H$;u ztj6W9$mX!d;IPT(vB~GM$m6og=eEh>xX$Ug&*{9;>%GzFz0vEw((Av|?7-6Jz|-r& z)ak+0>%r9Q#MI}+*X_mE?Z(&b#@Fu0)aJ+8?#S8h$=UA8+V9KR>&@Km&)etE-SE%e z@X_D#(%|va;PKSr^48+;*5dNl;qKVv^V#I`+2!-u<@DO&>e}P&+vfD#=JVa;?B3(* z-stt;>Gk00^x^38;p+9`>-OaA_T}yNU?C&^ z{r&#_{r>;{{{R2~|DKMM0{{R32y{|TQve4D5fVgaXeY(~asU7Uu}MThRCwC$l-XMW zVHiiVD_fKjvZhi*k~Nh~B3iVdvJ@i9l%?k1Z}4J-jEk;vZoc<CI*c91h3Ms_Nia;2#$e6wb1nTQ-3oF)rV~Zf|Cxeg;`&nsMme73$E@C!5INPf9|2{Kg{v<#1(=F zkyANWoNeh@F;{-tGeU4nB(TU6Oxvp%R<%zHc#DCa5rPm+%eTVq^{MH@*Mx|`FG>RX0Tl4Gj?he6Yn`@0M0B0}=M?j{z?g$WM07Pj>Wco-L zlt}xAAm1eGUP1B$K~~(^)&;>!gVgqR>ZPCF4T4vk8=JrQI+UW{cGGwvK+#gzlSY3f z?FpAq6oN`2bWy5|pmY%`R3OM*K2_@@sXkriAV`)mQk0Vr)G(6NAizk22jl*HWB;vV d|K1b+4d04hxLh8^4!8gS002ovPDHLkV1j-^COZHC literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/shared_folder.png b/trunk/gosa-plugins/mail/html/images/shared_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..8f69e2b998bb897869c8582b3fdd7836ae098a5e GIT binary patch literal 868 zcmV-q1DpJbP)^ywm&f$DH=SVyN;bVc}BS((D+0z{BHu6T{yRkFhPJMm-6JYH@Ts(d9%OCyn zp_s@_iYw_!aV2wAjHky%|7hP?K;{1V7w^eD^KgLWX`9*8mEe$mYDrq;o1343WFrJ< ziVx3#_aJ9D#x1_s6sYSyxa;VN1Md&STK3^Q?_8P~xOTSgo!$$n&uQ}NxKx4TK*5Bh zoyXJ4E^|}Bzir3y(GR|V{m^4k$+19^*c*H4*@jEoIA4AdUrP$V8>$x6O7KukCbLXp z^M&aCSKf%U_eLk@3m}025TI+ji5e&AY5JH(-9@<~5nr`g8Y^F}{^fkNDG+XM-I_Hm zEXTp)l0kr3bI4j1g6tt=93VgmujL_aSfuBE_zlPaC;;9_=bn8-!+RTbsMj_8J{3)s zv1=-}dV@fHk>cMWOfyW-w}o0~zCSs&@`sb*cLg9fKQ+_XvGcj7p6H2mL{uWWii*bd z^m%T&Mp=`mS+QqXsm+iq%}{h3k_eW%b3chM@1;=A-b$=xjFgGL3LsI=sU%ZN)Y{?* zuRxW+alovCWkUTayKXr1X#qW?QS`^AQZp}fL`&iA|G`IguH~@YR zC<+Jx-k={lp)9M^Z-4aZk=I_eg+)AXBg-3}Y}2BqLX$W_vviI}q6tjfjj`^bSn#o$ zw3xjUFRGnS9y;97-dZQC6+CVQm$s2(#S&POLt{e=cQ1@&SIpB%%kqkBs*+p$^X}Z- zgz;nkjy0d-DIc=@Gx7ic11?EK zK~y-)P14J2Ty+4&@$c_(UvuwFG83EFOsjbrTboKks%fnyX^Da&RU&pL1y{v|pd$VS zx>3}X8#n4gYN-zdp^Ku5n!#fLb%8(KM9)nCIx)tJLEY&ABh;KH6Tn`IeMy>P*Ii;Qj~Q zuH$Dvn_lj?E00eO?|pbWbO7!?U#@NGaOV8WZkPDQ#1! zREWwIROw?>2-GF(Yl^+mbHWLnQ`^OjGuj%s@Q!7tI&8-a{FET@C5;F^{ceSf9WmZh zU?f_AhK(u2Y~~-~;N-K^ZY;4_-)-vL;FJ5OrpC`iNsCBZq&$Tkv~jS1jEn3yUtp_!pt3fMXD z1ljI9T1tcx6t@bV7C>R<=fFwy0DeWsKUO(3w?UQa#4wCf-BzbVtR5#WrcAUgb6wR$7QV5bb1~8I; zQVUz*!$bR{BVC{bM4>=glf=ODHwsh++D=RhrV3_2c00000NkvXXu0mjf D4B@Ro literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/sieve_add_new_top.png b/trunk/gosa-plugins/mail/html/images/sieve_add_new_top.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd14e5e7df737018c63257c7820c799a571adec GIT binary patch literal 930 zcmV;T16}-yP)d-C?4G4G9>^2120KL zK~y-)O^r=x9AyB8pYLaOcd|dp>}t|vBSG7w$ss0?#jFNXS@p3D2Z;^usb zV@HPMfyr~Py!z%_*AI^ki_u)&@6Y%VK+|v2@(tD1Um4vvhZi09=daIS{%3jR6Dir! zxtvYUvGXsFy)bjJaA-uejG)xa+XMZIp>7D;F}{)1c0Q$V{BLAb%oMGm*>5ha+!m5c zdUWcYr^jYKx^Up&@RKb+MhP$xd|!f2Tk%*{V#*bq#UK<1gODhVFW~%{t8|?BWQr_3dGO!9a{3F)AnU4o|N2Y#Mf$4m4>6f3& zbwAsi$@e5IOOiAV>g!8*+iT=?NN@c-iJ$^olJcTt`I!%en=K67U;S%Iw(ovE>+k&j zW#D^mqZ#8iB2pUOICYTs&Wti%SVDyh&`Mw`g014SJaPIpx}7whx97`0Zm&N;rMw_C z!fi&>_Ckb}CD&CTm&?KWXINPq+!VXD9PaQL^8I}%BDA*9046pfql0iD+aPHP_NpOK zSRmS(N2N;OW}praGebBhU&l5+xlES1pKc%l;>OCxz2CmOoZg*l_eKj0+v{{{pSb)5 zG9|&!;Z`&3_P>PFS42yRP=cN9ime5JduOrb-YLC%cJ_nAgZ-9F*`yxcLMGP`p#vm& z;3awd?Aruxm3H7$uho%4rZhkt$4xJyxwd@YIF5rCK^(OpE7lcT%42W=^) zPMm6MsU-qXfYeg&`^dym4vkNuy7GjrHtnt~Rx&{x84?MFQksqqTk7SzYh1l@4W%XH z;}g}ZSFUB0mI!5m5X4~sMq!9B225;_Qc$hc(UuPW1tx!2qmG^3G5`Po07*qoM6N<$ Ef-x?tEdT%j literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/sieve_add_test.png b/trunk/gosa-plugins/mail/html/images/sieve_add_test.png new file mode 100644 index 0000000000000000000000000000000000000000..ec67203ff55906923fe585c86b124778c2406f9d GIT binary patch literal 895 zcmV-_1AzRAP)g;9V0Xh6Kntg0}M$- zK~y-)Wzt)Slw};p@$d7z&%5)^!EtAX*;!|{5K(bs6=jK~bjidbkqnBW8|fxcx`>Wm zbS+U7MA2P01qC8u7C}TI6haoe)~dOp?bZuKHYTT=Ktn*_u+f-7u+j3#F1^kmc*vRiYVNbOrRDctsZv#U1Ic7`wARa6 zSFe>haa57dkK=kFj+V3=ACTW$L-T{MDCyB z^w~vDJU(RVfvxCrja1|tWF1(zL}x+TZ53aH9x9?Zl1qlC>b=msP#LxQu8$IuR&+Zb ze!Il0B4nHQH5Nr^0!{ecnvSc9al5)wQH~pN5BqFnGjmjbE`sg4;2R?W%xWfRu>tlC)I&FvI%59eKEaP-d zbWKn#Jj{KEpJ6N&XE5kGYVq=Ko%NVsbKEelB-x=z32!9NTBDCxo#*((N6hXUqM8=X zw!+?ZjNC*XN_dbX*n#Lb`c%z#z zBO`=?W@N;`Fch&^RBiy4{#t3BJ@aM4P!eI7AOxZBf;P|uXbn2lNGWKwJ1A4R{{oD_ VQ#Zs>3H$&6002ovPDHLkV1kZDm+$}p literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/sieve_del_object.png b/trunk/gosa-plugins/mail/html/images/sieve_del_object.png new file mode 100644 index 0000000000000000000000000000000000000000..f5cb2b8b9128f0c6135942d53f1843e5f4d3f65b GIT binary patch literal 691 zcmV;k0!;mhP)_Ox2j_4W_xGK1 z&k^j_wWmF)vFU}WG2=oq7Czqa#GqYoQmn}0?~Tlt&G%29q&r&4Ve-+8Y~5d0RscDn zSGofrYZXfa4Ir=KX92P$a6AZ!*0!T&Yd4nE`vFQ){k@AJAYwpQ7(zzN?E4T3LDdG! z+HV54=|~`;l^RWu%0o8-OhaIX4WbdKX;8A&YY)J-wUmI;P_DpM&L#6pQMELVs|f;+ zgCl*!%mj{hIw!ELimW+cD^LntR{#+rVS|u}V9Pq+f0U?I6xL3?^9l{!)KWpof@U+o zG);QC!kA$Y0%Gwvw(ApBIndS4FDU7%gxzE!ZerPjY6B_`hz5j1&>IPuN(mOmN0?g< zboqZkF`M34OK<6m)2XgAgFbm>P?X>Y5R1atpr9`bFW=?daz2}5KPAWKm+n4TEu`12 zKR+A_*_?-nsw)0z*ke zK~y-)rIR~MR6!JmzccsV-Mh=eN`OFkEI~n0(85QA*a(G2!Gh3OU}9sUG258fY(-*} zhJs=nEi|#Dz{W_WjgP1?v5-WGibUj{)kRozANP*MUY3POqkl4)$(flifBut$)><6L zVQ_E|PXd_Rmf_V4(psanMzq%XUsAZQ1)2Z_Xm9@sOaQrJ03MxaG>V996vNUmaHBlZ z(PBvkM8t7*Htnbfz%^xAWK+q46EhZz5s$~WxKqJM?dkr3`l@mh*M-Vm2Cox#t5)FV zGQ1i-1H|%xp`jtRNeh|G`>(4^CoEhIU2QhDW&h48csbHX^3#(|2Svf@jk5r@PY4AR zDDc|`DznbpJ5iP<9&LGVdLh*VWnQrY?P#CRAYdz$DTKly<{yui%{;%`0NB9iVt_`B z5@XMmdxmK#QyfQy_chvPmSE6E8DL3<>Xy#KCobO~RU&B39MHcB(C$ZfWpb?U)X1&# zz0DZz8k6(C2nG#oOPEdOIMUuwzQ5-}$IK6SH^)D zuwva57*+~;+WrCna8@S9mlsoe8{4}M)>QlO`vhEJA!)^d>q_O@boRgw06?dg-;6IO ztj^tsjyIK-`k4D}j^$jrC`Hq-qXSRb)o(8zrkqH3RqL_obVm9_$Z4;48tC-^g<<+v cDgIM`0Ai=fV?mv2MF0Q*07*qoM6N<$g4_!@RR910 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/html/images/sieve_move_object_up.png b/trunk/gosa-plugins/mail/html/images/sieve_move_object_up.png new file mode 100644 index 0000000000000000000000000000000000000000..4699e69b112b2583263f060a822c9133acba89cb GIT binary patch literal 662 zcmV;H0%`q;P)R#C^hyZrB(m{0wYO8 zK~y-)rISlYlu;DNfA@RLe3*}6EM@G4kEF~VE=DjRXiNwxqJm72$`(@LCWv5YkqdDh z*kDj?!d*n$+C>rVTtq=)ZIT3q2%U$Y-^{(Ig@ZF1y79o_UO4x0{^$SyD-mHQVX?zd zTbG>Zu}i79i5tU#@6)RkE9KS6tJ`-_(a@EA)zd!^k3|aIAxEYFELFu;vgb!XzbqzcksIB+NWHl?kK`EiWrZ6HfrVW^~x!dKJ z?YhLnll_k$G#!ef^BNIB0a_p&5ZaE7IWgoVi@4U1f*K(BBR!v*$sdIfb(Yh)u8#-Gm z`0!=n@50Rc8A~ZdnEyCAcm==#6r!{G$CDuq5nZz)vOz*C7~S4)_Xu0~S%X3WBu(W^3vc6GTYeq*$%c*rXrM=mBB7%tU4@JG&u|{`Mi~s-t07*qoM6N<$f=0q4VgLXD literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/mail/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mail/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..cb3172c77 --- /dev/null +++ b/trunk/gosa-plugins/mail/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,2224 @@ +# translation of messages.po to deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 09:00+0100\n" +"PO-Revision-Date: 2008-12-19 09:04+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/ogroups/mail/mail.tpl:7 +msgid "Mail distribution list" +msgstr "Mail-Verteilerliste" + +#: admin/ogroups/mail/mail.tpl:10 admin/groups/mail/mail.tpl:7 +#: admin/groups/mail/paste_mail.tpl:8 +#: admin/groups/mail/class_groupMail.inc:838 personal/mail/copypaste.tpl:7 +#: personal/mail/generic.tpl:9 personal/mail/class_mailAccount.inc:1086 +msgid "Primary address" +msgstr "Primäre Adresse" + +#: admin/ogroups/mail/mail.tpl:13 +msgid "Primary mail address for this distribution list" +msgstr "Primäre Mail-Adresse der Verteilerliste" + +#: admin/ogroups/mail/class_mailogroup.inc:50 +msgid "Remove mail account" +msgstr "Mail-Konto entfernen" + +#: admin/ogroups/mail/class_mailogroup.inc:51 +#: admin/ogroups/mail/class_mailogroup.inc:54 +msgid "mail group" +msgstr "Mail-Gruppe" + +#: admin/ogroups/mail/class_mailogroup.inc:53 +msgid "Create mail account" +msgstr "Neues Mail-Konto erzeugen" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +#: admin/ogroups/mail/class_mailogroup.inc:93 +#: admin/ogroups/mail/class_mailogroup.inc:194 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: admin/groups/mail/class_groupMail.inc:840 +#: admin/groups/mail/class_groupMail.inc:971 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: personal/mail/class_mailAccount.inc:1090 +#: personal/mail/class_mailAccount.inc:1094 +#: personal/mail/class_mailAccount.inc:1105 +#: personal/mail/class_mailAccount.inc:1420 +msgid "Mail address" +msgstr "Mail-Adresse" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +msgid "your-name@your-domain.com" +msgstr "Ihr-Name@ihre-domain.com" + +#: admin/ogroups/mail/class_mailogroup.inc:120 +#: admin/ogroups/mail/class_mailogroup.inc:157 +#: admin/systems/services/imap/class_goImapServer.inc:190 +#: admin/systems/services/spam/class_goSpamServer.inc:277 +#: admin/systems/services/virus/class_goVirusServer.inc:154 +#: admin/systems/services/mail/class_goMailServer.inc:582 +#: admin/groups/mail/class_groupMail.inc:531 +#: admin/groups/mail/class_groupMail.inc:760 +#: personal/mail/class_mailAccount.inc:915 +#: personal/mail/class_mailAccount.inc:982 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/ogroups/mail/class_mailogroup.inc:186 +#: admin/ogroups/mail/paste_mail.tpl:4 +#: admin/groups/mail/class_groupMail.inc:276 +#: admin/groups/mail/class_groupMail.inc:278 +#: admin/groups/mail/class_groupMail.inc:279 +#: admin/groups/mail/class_groupMail.inc:284 +#: admin/groups/mail/class_groupMail.inc:286 +#: admin/groups/mail/class_groupMail.inc:287 +#: admin/groups/mail/class_groupMail.inc:828 +#: admin/groups/mail/class_groupMail.inc:963 +#: personal/mail/class_mailAccount.inc:50 +#: personal/mail/class_mailAccount.inc:239 +#: personal/mail/class_mailAccount.inc:247 +#: personal/mail/class_mailAccount.inc:249 +#: personal/mail/class_mailAccount.inc:254 +#: personal/mail/class_mailAccount.inc:256 +#: personal/mail/class_mailAccount.inc:1074 +#: personal/mail/class_mailAccount.inc:1264 +#: personal/mail/class_mailAccount.inc:1410 +msgid "Mail" +msgstr "Mail" + +#: admin/ogroups/mail/class_mailogroup.inc:187 +msgid "Mail group" +msgstr "Mail-Gruppe" + +#: admin/ogroups/mail/paste_mail.tpl:7 +msgid "Please enter a mail address" +msgstr "Bitte geben Sie eine Mail-Adresse ein" + +#: admin/systems/services/imap/class_goImapServer.inc:48 +msgid "IMAP/POP3 service" +msgstr "IMAP/POP3-Dienst" + +#: admin/systems/services/imap/class_goImapServer.inc:53 +#: admin/systems/services/imap/class_goImapServer.inc:212 +msgid "Repair database" +msgstr "Datenbank reparieren" + +#: admin/systems/services/imap/class_goImapServer.inc:100 +msgid "IMAP/POP3 (Cyrus) service" +msgstr "IMAP/POP3 (Cyrus) Dienst" + +#: admin/systems/services/imap/class_goImapServer.inc:110 +#: admin/systems/services/imap/class_goImapServer.inc:214 +#: admin/systems/services/imap/goImapServer.tpl:7 +msgid "Server identifier" +msgstr "Serverbezeichnung" + +#: admin/systems/services/imap/class_goImapServer.inc:114 +#: admin/systems/services/imap/class_goImapServer.inc:116 +#: admin/systems/services/imap/class_goImapServer.inc:215 +#: admin/systems/services/imap/goImapServer.tpl:16 +msgid "Connect URL" +msgstr "Verbindungs-URL" + +#: admin/systems/services/imap/class_goImapServer.inc:120 +#: admin/systems/services/imap/class_goImapServer.inc:122 +#: admin/systems/services/imap/class_goImapServer.inc:219 +#: admin/systems/services/imap/goImapServer.tpl:43 +msgid "Sieve connect URL" +msgstr "SIEVE-Verbindungs-URL" + +#: admin/systems/services/imap/class_goImapServer.inc:123 +#, php-format +msgid "Valid options are: %s" +msgstr "Gültige Optionen sind: %s" + +#: admin/systems/services/imap/class_goImapServer.inc:127 +#: admin/systems/services/imap/class_goImapServer.inc:216 +#: admin/systems/services/imap/goImapServer.tpl:25 +msgid "Admin user" +msgstr "Administrator" + +#: admin/systems/services/imap/class_goImapServer.inc:130 +#: admin/systems/services/imap/goImapServer.tpl:34 +msgid "Password" +msgstr "Passwort" + +#: admin/systems/services/imap/class_goImapServer.inc:199 +#: admin/systems/services/imap/class_goImapServer.inc:200 +msgid "IMAP/POP3" +msgstr "IMAP/POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:200 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/imap/class_goImapServer.inc:209 +#: admin/systems/services/virus/class_goVirusServer.inc:228 +msgid "Start" +msgstr "Start" + +#: admin/systems/services/imap/class_goImapServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:229 +#: personal/mail/sieve/class_sieveManagement.inc:501 +#: personal/mail/sieve/class_sieveManagement.inc:719 +#: personal/mail/sieve/templates/object_container.tpl:30 +#: personal/mail/sieve/templates/element_stop.tpl:4 +msgid "Stop" +msgstr "Beenden" + +#: admin/systems/services/imap/class_goImapServer.inc:211 +#: admin/systems/services/virus/class_goVirusServer.inc:230 +msgid "Restart" +msgstr "Neustart" + +#: admin/systems/services/imap/class_goImapServer.inc:217 +msgid "Admin password" +msgstr "Administrator-Passwort:" + +#: admin/systems/services/imap/class_goImapServer.inc:220 +#: admin/systems/services/imap/goImapServer.tpl:61 +msgid "Start IMAP service" +msgstr "IMAP-Dienst starten" + +#: admin/systems/services/imap/class_goImapServer.inc:221 +#: admin/systems/services/imap/goImapServer.tpl:70 +msgid "Start IMAP SSL service" +msgstr "IMAP/SSL-Dienst starten" + +#: admin/systems/services/imap/class_goImapServer.inc:222 +#: admin/systems/services/imap/goImapServer.tpl:79 +msgid "Start POP3 service" +msgstr "POP3-Dienst starten" + +#: admin/systems/services/imap/class_goImapServer.inc:223 +#: admin/systems/services/imap/goImapServer.tpl:88 +msgid "Start POP3 SSL service" +msgstr "POP3/SSL-Dienst starten" + +#: admin/systems/services/imap/goImapServer.tpl:1 +#: admin/systems/services/mail/goMailServer.tpl:1 admin/groups/mail/mail.tpl:4 +#: personal/mail/generic.tpl:5 +msgid "Generic" +msgstr "Allgemein" + +#: admin/systems/services/imap/goImapServer.tpl:99 +#: admin/systems/services/mail/goMailServer.tpl:204 +msgid "The server must be saved before you can use the status flag." +msgstr "" +"Der Server muss gespeichert werden bevor Sie das Status-Flag verwenden " +"können." + +#: admin/systems/services/imap/goImapServer.tpl:101 +#: admin/systems/services/mail/goMailServer.tpl:206 +msgid "The service must be saved before you can use the status flag." +msgstr "" +"Der Dienst muss gespeichert werden bevor Sie den Status-Flag verwenden " +"können." + +#: admin/systems/services/imap/goImapServer.tpl:104 +#: admin/systems/services/mail/goMailServer.tpl:209 +msgid "Set new status" +msgstr "Setze neuen Status" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Set status" +msgstr "Status setzen" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Execute" +msgstr "Ausführen" + +#: admin/systems/services/spam/goSpamServerRule.tpl:6 +msgid "Name" +msgstr "Name" + +#: admin/systems/services/spam/goSpamServerRule.tpl:14 +msgid "Rule" +msgstr "Regel" + +#: admin/systems/services/spam/class_goSpamServer.inc:42 +#: admin/systems/services/spam/class_goSpamServer.inc:320 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/spam/class_goSpamServer.inc:347 +msgid "Spamassassin" +msgstr "Spamassassin" + +#: admin/systems/services/spam/class_goSpamServer.inc:143 +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#: admin/groups/mail/class_groupMail.inc:341 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:360 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: personal/mail/sieve/class_sieveManagement.inc:201 +#: personal/mail/sieve/class_sieveManagement.inc:206 +#: personal/mail/sieve/class_sieveManagement.inc:212 +#: personal/mail/sieve/class_sieveManagement.inc:218 +#: personal/mail/sieve/class_sieveManagement.inc:429 +#: personal/mail/sieve/class_My_Tree.inc:660 +#: personal/mail/class_mailAccount.inc:311 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:329 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: addons/mailqueue/class_mailqueue.inc:110 +#: addons/mailqueue/class_mailqueue.inc:144 +#: addons/mailqueue/class_mailqueue.inc:150 +msgid "Error" +msgstr "Fehler" + +#: admin/systems/services/spam/class_goSpamServer.inc:216 +msgid "Trusted network" +msgstr "Vertrauenswürdiges Netzwerk" + +#: admin/systems/services/spam/class_goSpamServer.inc:287 +msgid "Score" +msgstr "Ergebnis" + +#: admin/systems/services/spam/class_goSpamServer.inc:329 +#: admin/systems/services/spam/goSpamServer.tpl:8 +msgid "Rewrite header" +msgstr "Nachrichtenkopf bearbeiten" + +#: admin/systems/services/spam/class_goSpamServer.inc:330 +msgid "Trusted networks" +msgstr "gesicherte Netzwerke" + +#: admin/systems/services/spam/class_goSpamServer.inc:331 +#: admin/systems/services/spam/goSpamServer.tpl:18 +msgid "Required score" +msgstr "Benötigter Wert" + +#: admin/systems/services/spam/class_goSpamServer.inc:332 +msgid "Rules" +msgstr "Regeln" + +#: admin/systems/services/spam/class_goSpamServer.inc:334 +#: admin/systems/services/spam/goSpamServer.tpl:69 +msgid "Enable use of bayes filtering" +msgstr "Bayes-Filterung verwenden" + +#: admin/systems/services/spam/class_goSpamServer.inc:335 +msgid "Enabled bayes auto learning" +msgstr "Bayes lernt automatisch" + +#: admin/systems/services/spam/class_goSpamServer.inc:336 +#: admin/systems/services/spam/goSpamServer.tpl:75 +msgid "Enable RBL checks" +msgstr "RBL prüfen" + +#: admin/systems/services/spam/class_goSpamServer.inc:337 +#: admin/systems/services/spam/goSpamServer.tpl:86 +msgid "Enable use of Razor" +msgstr "Razor verwenden" + +#: admin/systems/services/spam/class_goSpamServer.inc:338 +#: admin/systems/services/spam/goSpamServer.tpl:89 +msgid "Enable use of DDC" +msgstr "DDC verwenden" + +#: admin/systems/services/spam/class_goSpamServer.inc:339 +#: admin/systems/services/spam/goSpamServer.tpl:92 +msgid "Enable use of Pyzor" +msgstr "Pyzor verwenden" + +#: admin/systems/services/spam/goSpamServer.tpl:22 +msgid "Select required score to tag mail as spam" +msgstr "Wählen Sie den gewünschten Wert, ab dem Mail als Spam gekennzeichnet wird." + +#: admin/systems/services/spam/goSpamServer.tpl:48 +#: admin/systems/services/mail/goMailServer.tpl:73 +#: admin/systems/services/mail/goMailServer.tpl:104 +msgid "Remove" +msgstr "Entfernen" + +#: admin/systems/services/spam/goSpamServer.tpl:72 +msgid "Enable bayes auto learning" +msgstr "Bayes lernt automatisch" + +#: admin/systems/services/virus/class_goVirusServer.inc:45 +#: admin/systems/services/virus/class_goVirusServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:219 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +msgid "Anti virus" +msgstr "Anti-Virus" + +#: admin/systems/services/virus/class_goVirusServer.inc:163 +#: admin/systems/services/virus/class_goVirusServer.inc:238 +msgid "Maximum directory recursions" +msgstr "Maximale Verzeichnis-Tiefe" + +#: admin/systems/services/virus/class_goVirusServer.inc:164 +#: admin/systems/services/virus/class_goVirusServer.inc:237 +#: admin/systems/services/virus/goVirusServer.tpl:43 +msgid "Maximum threads" +msgstr "Maximale Prozesszahl" + +#: admin/systems/services/virus/class_goVirusServer.inc:165 +#: admin/systems/services/virus/class_goVirusServer.inc:240 +#: admin/systems/services/virus/goVirusServer.tpl:134 +msgid "Maximum file size" +msgstr "Maximale Dateigröße" + +#: admin/systems/services/virus/class_goVirusServer.inc:166 +#: admin/systems/services/virus/class_goVirusServer.inc:241 +msgid "Maximum recursions" +msgstr "Maximale Rekursions-Tiefe" + +#: admin/systems/services/virus/class_goVirusServer.inc:167 +#: admin/systems/services/virus/class_goVirusServer.inc:242 +#: admin/systems/services/virus/goVirusServer.tpl:152 +msgid "Maximum compression ratio" +msgstr "Maximales Kompressions-Verhältnis" + +#: admin/systems/services/virus/class_goVirusServer.inc:168 +#: admin/systems/services/virus/class_goVirusServer.inc:244 +#: admin/systems/services/virus/goVirusServer.tpl:71 +msgid "Checks per day" +msgstr "Prüfungen am Tag" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/goVirusServer.tpl:13 +msgid "Database user" +msgstr "Datenbank-Benutzer" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:245 +#: admin/systems/services/virus/goVirusServer.tpl:33 +msgid "Http proxy URL" +msgstr "URL des HTTP-Proxy" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:243 +#: admin/systems/services/virus/goVirusServer.tpl:23 +msgid "Database mirror" +msgstr "Datenbank-Spiegelserver" + +#: admin/systems/services/virus/class_goVirusServer.inc:232 +#: admin/systems/services/virus/goVirusServer.tpl:84 +msgid "Enable debugging" +msgstr "Aktiviere Debugging" + +#: admin/systems/services/virus/class_goVirusServer.inc:233 +#: admin/systems/services/virus/goVirusServer.tpl:92 +msgid "Enable mail scanning" +msgstr "Mail-Scanner aktivieren" + +#: admin/systems/services/virus/class_goVirusServer.inc:234 +#: admin/systems/services/virus/goVirusServer.tpl:117 +msgid "Enable scanning of archives" +msgstr "Aktiviere Prüfung von Archiven" + +#: admin/systems/services/virus/class_goVirusServer.inc:235 +#: admin/systems/services/virus/goVirusServer.tpl:125 +msgid "Block encrypted archives" +msgstr "Lehne verschlüsselte Archive ab" + +#: admin/systems/services/virus/class_goVirusServer.inc:239 +msgid "Anti virus user" +msgstr "Anti-Virus Benutzer" + +#: admin/systems/services/virus/goVirusServer.tpl:5 +msgid "Generic virus filtering" +msgstr "Allgemeiner Virus-Filter" + +#: admin/systems/services/virus/goVirusServer.tpl:47 +msgid "Select number of maximal threads" +msgstr "Wählen Sie die maximale Anzahl von Prozessen" + +#: admin/systems/services/virus/goVirusServer.tpl:61 +msgid "Max directory recursions" +msgstr "Maximale Verzeichnis-Tiefe" + +#: admin/systems/services/virus/goVirusServer.tpl:101 +msgid "Archive scanning" +msgstr "Überprüfe Archive" + +#: admin/systems/services/virus/goVirusServer.tpl:143 +msgid "Maximum recursion" +msgstr "Maximale Rekursionstiefe" + +#: admin/systems/services/mail/class_goMailServer.inc:45 +#: admin/systems/services/mail/class_goMailServer.inc:512 +msgid "Mail smtp service (Postfix)" +msgstr "Mail-SMTP Dienst (Postfix)" + +#: admin/systems/services/mail/class_goMailServer.inc:600 +#: admin/systems/services/mail/class_goMailServer.inc:711 +msgid "Header size limit" +msgstr "Kopfgrössenbeschränkung" + +#: admin/systems/services/mail/class_goMailServer.inc:603 +msgid "Mailbox size limit" +msgstr "Maximale Größe der Mailbox" + +#: admin/systems/services/mail/class_goMailServer.inc:606 +msgid "Message size limit" +msgstr "Maximale Größe der Nachricht" + +#: admin/systems/services/mail/class_goMailServer.inc:700 +msgid "Mail smtp (Postfix)" +msgstr "Mail-SMTP (Postfix)" + +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Mail smtp - Postfix" +msgstr "Mail-SMTP - Postfix" + +#: admin/systems/services/mail/class_goMailServer.inc:709 +#: admin/systems/services/mail/goMailServer.tpl:7 +msgid "Visible full qualified hostname" +msgstr "Voll-Qualifizierter Hostname sichtbar" + +#: admin/systems/services/mail/class_goMailServer.inc:710 +msgid "Description" +msgstr "Beschreibung" + +#: admin/systems/services/mail/class_goMailServer.inc:712 +#: admin/systems/services/mail/goMailServer.tpl:26 +msgid "Max mailbox size" +msgstr "Maximale Größe der Mailbox" + +#: admin/systems/services/mail/class_goMailServer.inc:713 +#: admin/systems/services/mail/goMailServer.tpl:35 +msgid "Max message size" +msgstr "Maximale Nachrichten-Größe" + +#: admin/systems/services/mail/class_goMailServer.inc:714 +#: admin/systems/services/mail/goMailServer.tpl:91 +msgid "Domains to accept mail for" +msgstr "Domänen, für die Mail angenommen wird" + +#: admin/systems/services/mail/class_goMailServer.inc:715 +#: admin/systems/services/mail/goMailServer.tpl:60 +msgid "Local networks" +msgstr "Lokale Netzwerke" + +#: admin/systems/services/mail/class_goMailServer.inc:716 +#: admin/systems/services/mail/goMailServer.tpl:45 +msgid "Relay host" +msgstr "Relay host" + +#: admin/systems/services/mail/class_goMailServer.inc:717 +msgid "Transport table" +msgstr "Transport-Tabelle" + +#: admin/systems/services/mail/class_goMailServer.inc:718 +#: admin/systems/services/mail/goMailServer.tpl:149 +msgid "Restrictions for sender" +msgstr "Einschränkungen für den Sender" + +#: admin/systems/services/mail/class_goMailServer.inc:719 +#: admin/systems/services/mail/goMailServer.tpl:175 +msgid "Restrictions for recipient" +msgstr "Einschränkungen für Empfänger" + +#: admin/systems/services/mail/goMailServer.tpl:11 +msgid "The full qualified host name." +msgstr "Der Voll-Qualifizierte Hostname." + +#: admin/systems/services/mail/goMailServer.tpl:16 +msgid "Max mail header size" +msgstr "Maximale Größe der Mail-Kopfzeilen" + +#: admin/systems/services/mail/goMailServer.tpl:21 +msgid "This value specifies the maximal header size." +msgstr "Dieser Wert legt die maximale Größe der Kopfzeilen fest." + +#: admin/systems/services/mail/goMailServer.tpl:21 +#: admin/systems/services/mail/goMailServer.tpl:31 +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "KB" +msgstr "KB" + +#: admin/systems/services/mail/goMailServer.tpl:31 +msgid "Defines the maximal size of mail box." +msgstr "Setzt die maximale Größe der Mailbox." + +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "Specify the maximal size of a message." +msgstr "Setzt die maximale Größe einer Nachricht." + +#: admin/systems/services/mail/goMailServer.tpl:50 +msgid "Relay messages to following host:" +msgstr "Leite Nachrichten zu folgendem Host:" + +#: admin/systems/services/mail/goMailServer.tpl:62 +msgid "Postfix networks" +msgstr "Postfix-Netzwerke" + +#: admin/systems/services/mail/goMailServer.tpl:83 +msgid "Domains and routing" +msgstr "Domänen und Weiterleitung" + +#: admin/systems/services/mail/goMailServer.tpl:93 +msgid "Postfix is responsible for the following domains:" +msgstr "Postfix ist verantwortlich für die folgenden Domänen:" + +#: admin/systems/services/mail/goMailServer.tpl:114 +msgid "Transports" +msgstr "Transporte" + +#: admin/systems/services/mail/goMailServer.tpl:123 +msgid "Select a transport protocol." +msgstr "Wählen Sie ein Transport-Protokoll." + +#: admin/systems/services/mail/goMailServer.tpl:141 +msgid "Restrictions" +msgstr "Einschränkungen" + +#: admin/systems/services/mail/goMailServer.tpl:157 +#: admin/systems/services/mail/goMailServer.tpl:183 +msgid "Restriction filter" +msgstr "Einschränkungsmuster" + +#: admin/groups/mail/mail.tpl:35 personal/mail/generic.tpl:30 +#: addons/mailqueue/contents.tpl:73 +msgid "Server" +msgstr "Server" + +#: admin/groups/mail/mail.tpl:42 personal/mail/generic.tpl:37 +msgid "Specify the mail server where the user will be hosted on" +msgstr "Wählen Sie den Mail-Server, auf dem dieses Konto angelegt werden soll" + +#: admin/groups/mail/mail.tpl:56 personal/mail/generic.tpl:53 +msgid "Quota usage" +msgstr "Kontingent-Nutzung" + +#: admin/groups/mail/mail.tpl:60 admin/groups/mail/class_groupMail.inc:847 +#: admin/groups/mail/class_groupMail.inc:972 personal/mail/generic.tpl:57 +#: personal/mail/class_mailAccount.inc:1113 +#: personal/mail/class_mailAccount.inc:1270 +#: personal/mail/class_mailAccount.inc:1422 +msgid "Quota size" +msgstr "Kontingent-Größe" + +#: admin/groups/mail/mail.tpl:73 admin/groups/mail/class_groupMail.inc:974 +msgid "Folder type" +msgstr "Ordner-Typ" + +#: admin/groups/mail/mail.tpl:91 +msgid "Reload" +msgstr "Aktualisieren" + +#: admin/groups/mail/mail.tpl:102 admin/groups/mail/paste_mail.tpl:23 +#: personal/mail/copypaste.tpl:25 personal/mail/generic.tpl:73 +msgid "Alternative addresses" +msgstr "Alternative Adressen" + +#: admin/groups/mail/mail.tpl:107 admin/groups/mail/paste_mail.tpl:24 +#: personal/mail/copypaste.tpl:55 personal/mail/generic.tpl:76 +msgid "List of alternative mail addresses" +msgstr "Liste alternativer Mail-Adressen" + +#: admin/groups/mail/mail.tpl:136 +msgid "IMAP shared folders" +msgstr "Geteilter Ordner" + +#: admin/groups/mail/mail.tpl:143 +msgid "Default permission" +msgstr "Standard-Berechtigungen" + +#: admin/groups/mail/mail.tpl:145 +msgid "Member permission" +msgstr "Mitglieder-Berechtigungen" + +#: admin/groups/mail/mail.tpl:163 +msgid "Hide" +msgstr "Verstecken" + +#: admin/groups/mail/mail.tpl:165 +msgid "Show" +msgstr "Zeigen" + +#: admin/groups/mail/mail.tpl:187 personal/mail/generic.tpl:303 +msgid "Advanced mail options" +msgstr "Erweiterte Mail-Einstellungen" + +#: admin/groups/mail/mail.tpl:193 personal/mail/generic.tpl:309 +msgid "Select if user can only send and receive inside his own domain" +msgstr "" +"Wählen Sie dies, wenn der Benutzer Mails nur innerhalb seiner Domäne senden " +"und empfangen darf" + +#: admin/groups/mail/mail.tpl:195 personal/mail/generic.tpl:311 +msgid "User is only allowed to send and receive local mails" +msgstr "Der Benutzer darf nur lokale Mails senden und empfangen" + +#: admin/groups/mail/mail.tpl:204 admin/groups/mail/paste_mail.tpl:34 +msgid "Forward messages to non group members" +msgstr "Weiterleiten der Nachrichten an nicht-Gruppenmitglieder" + +#: admin/groups/mail/mail.tpl:213 +msgid "Used in all groups" +msgstr "Verwendet in allen Gruppen" + +#: admin/groups/mail/mail.tpl:216 +msgid "Not used in all groups" +msgstr "Nicht verwendet in allen Gruppen" + +#: admin/groups/mail/mail.tpl:234 admin/groups/mail/paste_mail.tpl:42 +#: personal/mail/copypaste.tpl:44 personal/mail/generic.tpl:290 +#: personal/mail/generic.tpl:293 +msgid "Add local" +msgstr "Lokale hinzufügen" + +#: admin/groups/mail/paste_mail.tpl:1 personal/mail/copypaste.tpl:1 +#: personal/mail/class_mailAccount.inc:1411 +msgid "Mail settings" +msgstr "Mail-Einstellungen" + +#: admin/groups/mail/paste_mail.tpl:12 +msgid "Primary mail address for this shared folder" +msgstr "Primäre Mail-Adresse dieses geteilten Ordners" + +#: admin/groups/mail/mail_locals.tpl:6 personal/mail/mail_locals.tpl:7 +msgid "Select addresses to add" +msgstr "Wählen Sie die hinzuzufügenden Adressen" + +#: admin/groups/mail/mail_locals.tpl:22 personal/mail/mail_locals.tpl:25 +msgid "Filters" +msgstr "Filter" + +#: admin/groups/mail/mail_locals.tpl:32 +msgid "Display addresses of department" +msgstr "Zeige die Adressen der Abteilung" + +#: admin/groups/mail/mail_locals.tpl:33 personal/mail/mail_locals.tpl:38 +msgid "Choose the department the search will be based on" +msgstr "Wählen Sie die Abteilung, auf die die Suchfunktion angewandt wird" + +#: admin/groups/mail/mail_locals.tpl:42 +msgid "Display addresses matching" +msgstr "Zeige die Adressen, auf die das Folgende passt" + +#: admin/groups/mail/mail_locals.tpl:45 personal/mail/mail_locals.tpl:52 +msgid "Regular expression for matching addresses" +msgstr "Regulärer Ausdruck zum Erkennen von Mail-Adressen" + +#: admin/groups/mail/mail_locals.tpl:52 personal/mail/mail_locals.tpl:60 +msgid "Display addresses of user" +msgstr "Zeige Adressen des Benutzers" + +#: admin/groups/mail/mail_locals.tpl:55 personal/mail/mail_locals.tpl:64 +msgid "User name of which addresses are shown" +msgstr "Benutzername, dessen Adressen angezeigt werden" + +#: admin/groups/mail/mail_admins.tpl:4 +msgid "Folder administrators" +msgstr "Ordner-Administratoren" + +#: admin/groups/mail/mail_admins.tpl:24 +msgid "Select a specific department" +msgstr "Wählen Sie eine bestimmte Abteilung" + +#: admin/groups/mail/mail_admins.tpl:30 +msgid "Choose" +msgstr "Wählen" + +#: admin/groups/mail/class_groupMail.inc:111 +#: admin/groups/mail/class_groupMail.inc:118 +#: admin/groups/mail/class_groupMail.inc:125 +#: admin/groups/mail/class_groupMail.inc:132 +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:140 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:547 +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:773 +#: admin/groups/mail/class_groupMail.inc:777 +#: admin/groups/mail/class_groupMail.inc:781 +#: admin/groups/mail/class_groupMail.inc:790 +#: personal/mail/class_mailAccount.inc:147 +#: personal/mail/class_mailAccount.inc:154 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:162 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:928 +#: personal/mail/class_mailAccount.inc:996 +#: personal/mail/class_mailAccount.inc:1000 +#: personal/mail/class_mailAccount.inc:1004 +#: personal/mail/class_mailAccount.inc:1018 +msgid "Mail error" +msgstr "Mail-Fehler" + +#: admin/groups/mail/class_groupMail.inc:111 +#: personal/mail/class_mailAccount.inc:147 +#, php-format +msgid "Cannot read quota settings: %s" +msgstr "Kontingent-Einstellungen können nicht gelesen werden: %s" + +#: admin/groups/mail/class_groupMail.inc:118 +#: personal/mail/class_mailAccount.inc:154 +#, php-format +msgid "Cannot get list of mailboxes: %s" +msgstr "Postfach-Liste kann nicht bezogen werden: %s" + +#: admin/groups/mail/class_groupMail.inc:125 +#, php-format +msgid "Cannot receive folder types: %s" +msgstr "Kann Ordner-Typen nicht ermitteln: %s" + +#: admin/groups/mail/class_groupMail.inc:132 +#, php-format +msgid "Cannot receive folder permissions: %s" +msgstr "Kann Ordner-Berechtigungen nicht ermitteln: %s" + +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:773 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:996 +#, php-format +msgid "Mail method cannot connect: %s" +msgstr "Mail-Methode kann nicht verbinden: %s" + +#: admin/groups/mail/class_groupMail.inc:140 +#: personal/mail/class_mailAccount.inc:162 +#, php-format +msgid "Mailbox '%s' doesn't exists on mail server: %s" +msgstr "Postfach '%s' existiert auf dem Mail-Server nicht: %s" + +#: admin/groups/mail/class_groupMail.inc:297 +msgid "" +"Remove shared folder from mail server database when entry gets removed in " +"LDAP" +msgstr "" +"Entferne Shared Folder aus der Datenbank des Mail-Servers, wenn der Eintrag " +"aus dem LDAP entfernt wird." + +#: admin/groups/mail/class_groupMail.inc:298 +msgid "Remove the shared folder and all its contents after saving this account" +msgstr "Entferne nach dem Speichern dieses Kontos den Shared Folder mitsamt Inhalt." + +#: admin/groups/mail/class_groupMail.inc:341 +#: personal/mail/class_mailAccount.inc:311 +msgid "Please select an entry!" +msgstr "Bitte wählen Sie einen Eintrag!" + +#: admin/groups/mail/class_groupMail.inc:360 +#: personal/mail/class_mailAccount.inc:329 +msgid "Cannot add primary address to the list of forwarders!" +msgstr "Kann die primäre Adresse nicht in die Liste der Weiterleitungen aufnehmen!" + +#: admin/groups/mail/class_groupMail.inc:405 +#: personal/mail/class_mailAccount.inc:372 +#, php-format +msgid "Address is already in use by user '%s'." +msgstr "Die Adresse wird bereits von Benutzer '%s' verwendet." + +#: admin/groups/mail/class_groupMail.inc:547 +#: personal/mail/class_mailAccount.inc:928 +#, php-format +msgid "Cannot remove mailbox: %s" +msgstr "Kann das Postfach nicht entfernen: %s" + +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:790 +#, php-format +msgid "Cannot update shared folder permissions: %s" +msgstr "Berechtigungen für Gruppen-Ordner können nicht aktualisiert werden: %s" + +#: admin/groups/mail/class_groupMail.inc:649 +msgid "New" +msgstr "Neu" + +#: admin/groups/mail/class_groupMail.inc:777 +#: personal/mail/class_mailAccount.inc:1000 +#, php-format +msgid "Cannot update mailbox: %s" +msgstr "Kann das Postfach nicht aktualisieren: '%s'" + +#: admin/groups/mail/class_groupMail.inc:781 +#: personal/mail/class_mailAccount.inc:1004 +#, php-format +msgid "Cannot write quota settings: %s" +msgstr "Kann Kontingent-Einstellungen nicht sichern: %s" + +#: admin/groups/mail/class_groupMail.inc:822 +#, php-format +msgid "" +"The group 'cn' has changed. It can't be changed due to the fact that mail " +"method '%s' relies on it!" +msgstr "Der 'cn' der Gruppe wurde geändert. Er kann nicht geändert werden, weil die Mail-Methode '%s' davon abhängt!" + +#: admin/groups/mail/class_groupMail.inc:856 +#: personal/mail/class_mailAccount.inc:1434 +msgid "Mail max size" +msgstr "Maximale Mailgröße" + +#: admin/groups/mail/class_groupMail.inc:864 +msgid "You need to set the maximum mail size in order to reject anything." +msgstr "Sie müssen die maximale Mail-Größe angeben, um Mails abzuweisen." + +#: admin/groups/mail/class_groupMail.inc:868 +#: admin/groups/mail/class_groupMail.inc:973 +#: personal/mail/class_mailAccount.inc:1421 +msgid "Mail server" +msgstr "Mail-Server" + +#: admin/groups/mail/class_groupMail.inc:964 +msgid "Group mail" +msgstr "Gruppenmail" + +#: admin/groups/mail/class_groupMail.inc:974 +msgid "Kolab" +msgstr "Kolab" + +#: admin/groups/mail/class_groupMail.inc:975 +msgid "Alternate addresses" +msgstr "Weitere Adressen" + +#: admin/groups/mail/class_groupMail.inc:976 +msgid "Forwarding addresses" +msgstr "Weiterleitungs-Adressen" + +#: admin/groups/mail/class_groupMail.inc:977 +msgid "Only local" +msgstr "Nur lokal" + +#: admin/groups/mail/class_groupMail.inc:978 +msgid "Permissions" +msgstr "Berechtigungen" + +#: personal/mail/copypaste.tpl:13 personal/mail/generic.tpl:267 +msgid "Forward messages to" +msgstr "Nachrichten weiterleiten an" + +#: personal/mail/generic.tpl:115 personal/mail/class_mailAccount.inc:1442 +msgid "Use custom sieve script" +msgstr "Eigenes Sieve-Skript verwenden" + +#: personal/mail/generic.tpl:115 +msgid "disables all Mail options!" +msgstr "schaltet alle übrigen Mail-Einstellungen aus!" + +#: personal/mail/generic.tpl:123 +msgid "Sieve Management" +msgstr "Sieve Verwaltung" + +#: personal/mail/generic.tpl:144 +msgid "Select if you want to forward mails without getting own copies of them" +msgstr "" +"Wählen Sie diese Einstellung, wenn Mails lediglich weitergeleitet werden " +"sollen, ohne eine lokale Kopie zu speichern." + +#: personal/mail/generic.tpl:144 +msgid "No delivery to own mailbox" +msgstr "Keine Zustellung in eigenes Postfach" + +#: personal/mail/generic.tpl:151 +msgid "Select to automatically response with the vacation message defined below" +msgstr "" +"Wählen Sie dies, um automatisch eine Urlaubsmeldung mit dem unten angebenen " +"Text zu versenden." + +#: personal/mail/generic.tpl:153 +msgid "Activate vacation message" +msgstr "Urlaubsbenachrichtigung aktivieren" + +#: personal/mail/generic.tpl:161 +msgid "from" +msgstr "von" + +#: personal/mail/generic.tpl:185 +msgid "till" +msgstr "bis" + +#: personal/mail/generic.tpl:214 +msgid "Select if you want to filter this mails through spamassassin" +msgstr "Wählen Sie dies, um Mails von Spamassassin filtern zu lassen" + +#: personal/mail/generic.tpl:216 +msgid "Move mails tagged with spam level greater than" +msgstr "Verschiebe Mails mit einem SPAM-Level größer als" + +#: personal/mail/generic.tpl:219 +msgid "Choose spam level - smaller values are more sensitive" +msgstr "Wählen sie den 'SPAM'-Level - kleinere Werte reagieren empfindlicher auf SPAM" + +#: personal/mail/generic.tpl:223 +msgid "to folder" +msgstr "in den Ordner" + +#: personal/mail/generic.tpl:235 +msgid "Reject mails bigger than" +msgstr "Mails abweisen, die größer sind als" + +#: personal/mail/generic.tpl:238 +msgid "MB" +msgstr "MB" + +#: personal/mail/generic.tpl:245 +#: personal/mail/sieve/class_sieveManagement.inc:502 +#: personal/mail/sieve/class_sieveManagement.inc:720 +#: personal/mail/sieve/templates/element_vacation.tpl:44 +#: personal/mail/sieve/templates/object_container.tpl:31 +#: personal/mail/class_mailAccount.inc:1425 +msgid "Vacation message" +msgstr "Urlaubsbenachrichtigung" + +#: personal/mail/generic.tpl:261 +#: personal/mail/sieve/templates/import_script.tpl:12 +#: personal/mail/sieve/templates/edit_frame_base.tpl:7 +msgid "Import" +msgstr "Importieren" + +#: personal/mail/mail_locals.tpl:35 +msgid "Select department" +msgstr "Wählen Sie die Abteilung" + +#: personal/mail/sieve/class_sieveElement_Vacation.inc:148 +msgid "Alternative sender address must be a valid email addresses." +msgstr "Weitere Absender-Adresse muss eine gültige Email-Adresse sein." + +#: personal/mail/sieve/class_sieveManagement.inc:114 +#: personal/mail/sieve/class_sieveManagement.inc:242 +msgid "Parse failed" +msgstr "Einlesen fehlgeschlagen" + +#: personal/mail/sieve/class_sieveManagement.inc:118 +#: personal/mail/sieve/class_sieveManagement.inc:246 +msgid "Parse successful" +msgstr "Einlesen erfolgreich" + +#: personal/mail/sieve/class_sieveManagement.inc:156 +#, php-format +msgid "The specified mail server '%s' does not exist within the GOsa configuration." +msgstr "" +"Der angegebene Mail-Server '%s' wurde nicht in Ihrer GOsa-Konfiguration " +"gefunden." + +#: personal/mail/sieve/class_sieveManagement.inc:201 +msgid "No script name specified!" +msgstr "Kein Skriptname angegeben!" + +#: personal/mail/sieve/class_sieveManagement.inc:206 +msgid "Please use only lowercase script names!" +msgstr "Bitte verwenden Sie ausschliesslich Kleinbuchstaben für den Skriptnamen!" + +#: personal/mail/sieve/class_sieveManagement.inc:212 +msgid "Please use only alphabetical characters in script names!" +msgstr "Bitte verwenden Sie ausschliesslich Kleinbuchstaben für den Skriptnamen!" + +#: personal/mail/sieve/class_sieveManagement.inc:218 +msgid "Script name already in use!" +msgstr "Der angegebene Skriptname wird bereits verwendet!" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:349 +#: personal/mail/sieve/class_sieveManagement.inc:398 +#: personal/mail/sieve/class_sieveManagement.inc:402 +#: personal/mail/sieve/class_sieveManagement.inc:433 +#: personal/mail/sieve/class_sieveManagement.inc:519 +#: personal/mail/sieve/class_sieveManagement.inc:770 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#: personal/mail/sieve/class_sieveManagement.inc:1043 +msgid "SIEVE error" +msgstr "Sieve-Fehler" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#, php-format +msgid "Cannot log into SIEVE server: %s" +msgstr "Die Anmeldung am Sieve-Server ist fehlgeschlagen: '%s'" + +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/class_mail-methods-cyrus.inc:468 +#, php-format +msgid "Cannot retrieve SIEVE script: %s" +msgstr "Kann Sieve-Skript nicht beziehen: %s" + +#: personal/mail/sieve/class_sieveManagement.inc:349 +#, php-format +msgid "Cannot remove SIEVE script: %s" +msgstr "Kann Sieve-Skript nicht entfernen: %s" + +#: personal/mail/sieve/class_sieveManagement.inc:395 +msgid "Edited" +msgstr "Bearbeitet" + +#: personal/mail/sieve/class_sieveManagement.inc:429 +msgid "Uploaded script is empty!" +msgstr "Das hochgeladene Skript ist leer!" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +msgid "Internal error" +msgstr "Interner Fehler" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, php-format +msgid "Cannot access temporary file '%s'!" +msgstr "Kann nicht auf temporäre Datei '%s' zugreifen!" + +#: personal/mail/sieve/class_sieveManagement.inc:433 +#, php-format +msgid "Cannot open temporary file '%s'!" +msgstr "Kann temporäre Datei '%s' nicht öffnen!" + +#: personal/mail/sieve/class_sieveManagement.inc:493 +#: personal/mail/sieve/class_sieveManagement.inc:496 +#: personal/mail/sieve/class_sieveManagement.inc:711 +#: personal/mail/sieve/class_sieveManagement.inc:714 +#: personal/mail/sieve/templates/element_keep.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:22 +#: personal/mail/sieve/templates/object_container.tpl:25 +msgid "Keep" +msgstr "Behalten" + +#: personal/mail/sieve/class_sieveManagement.inc:494 +#: personal/mail/sieve/class_sieveManagement.inc:712 +#: personal/mail/sieve/templates/element_comment.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:23 +msgid "Comment" +msgstr "Kommentar" + +#: personal/mail/sieve/class_sieveManagement.inc:495 +#: personal/mail/sieve/class_sieveManagement.inc:713 +msgid "File into" +msgstr "Ablegen unter" + +#: personal/mail/sieve/class_sieveManagement.inc:497 +#: personal/mail/sieve/class_sieveManagement.inc:715 +#: personal/mail/sieve/templates/element_discard.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:26 +msgid "Discard" +msgstr "Verwerfen" + +#: personal/mail/sieve/class_sieveManagement.inc:498 +#: personal/mail/sieve/class_sieveManagement.inc:716 +#: personal/mail/sieve/templates/element_redirect.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:27 +msgid "Redirect" +msgstr "Umleiten" + +#: personal/mail/sieve/class_sieveManagement.inc:499 +#: personal/mail/sieve/class_sieveManagement.inc:717 +#: personal/mail/sieve/templates/object_container.tpl:28 +msgid "Reject" +msgstr "Ablehnen" + +#: personal/mail/sieve/class_sieveManagement.inc:500 +#: personal/mail/sieve/class_sieveManagement.inc:718 +#: personal/mail/sieve/templates/object_container.tpl:29 +#: personal/mail/sieve/templates/element_require.tpl:12 +msgid "Require" +msgstr "Benötigt" + +#: personal/mail/sieve/class_sieveManagement.inc:503 +#: personal/mail/sieve/class_sieveManagement.inc:721 +#: personal/mail/sieve/templates/object_container.tpl:32 +#: personal/mail/sieve/class_sieveElement_If.inc:836 +msgid "If" +msgstr "Wenn" + +#: personal/mail/sieve/class_sieveManagement.inc:519 +msgid "Cannot add new element!" +msgstr "Kann neues Element nicht einfügen!" + +#: personal/mail/sieve/class_sieveManagement.inc:562 +#: personal/mail/sieve/class_sieveManagement.inc:756 +#: personal/mail/sieve/templates/element_else.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:33 +#: personal/mail/sieve/class_sieveElement_If.inc:840 +msgid "Else" +msgstr "Sonst" + +#: personal/mail/sieve/class_sieveManagement.inc:564 +#: personal/mail/sieve/class_sieveManagement.inc:758 +#: personal/mail/sieve/class_sieveManagement.inc:763 +#: personal/mail/sieve/templates/element_elsif.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:34 +#: personal/mail/sieve/class_sieveElement_If.inc:838 +msgid "Else If" +msgstr "Sonst Wenn" + +#: personal/mail/sieve/class_sieveManagement.inc:589 +#: personal/mail/sieve/templates/element_address.tpl:15 +#: personal/mail/sieve/templates/element_address.tpl:113 +msgid "Address" +msgstr "Adresse" + +#: personal/mail/sieve/class_sieveManagement.inc:590 +#: personal/mail/sieve/templates/element_header.tpl:16 +#: personal/mail/sieve/templates/element_header.tpl:106 +msgid "Header" +msgstr "Kopfzeilen" + +#: personal/mail/sieve/class_sieveManagement.inc:591 +#: personal/mail/sieve/templates/element_envelope.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:105 +msgid "Envelope" +msgstr "Umschlag" + +#: personal/mail/sieve/class_sieveManagement.inc:592 +#: personal/mail/sieve/templates/element_size.tpl:4 +#: addons/mailqueue/contents.tpl:74 +msgid "Size" +msgstr "Größe" + +#: personal/mail/sieve/class_sieveManagement.inc:593 +#: personal/mail/sieve/templates/element_exists.tpl:8 +msgid "Exists" +msgstr "Vorhanden" + +#: personal/mail/sieve/class_sieveManagement.inc:594 +#: personal/mail/sieve/templates/element_allof.tpl:10 +msgid "All of" +msgstr "Alle" + +#: personal/mail/sieve/class_sieveManagement.inc:595 +#: personal/mail/sieve/templates/element_anyof.tpl:10 +msgid "Any of" +msgstr "Einer von" + +#: personal/mail/sieve/class_sieveManagement.inc:596 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "True" +msgstr "wahr" + +#: personal/mail/sieve/class_sieveManagement.inc:597 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "False" +msgstr "falsch" + +#: personal/mail/sieve/class_sieveManagement.inc:634 +#: addons/mailqueue/class_mailqueue.inc:321 addons/mailqueue/contents.tpl:93 +msgid "Active" +msgstr "Aktiv" + +#: personal/mail/sieve/class_sieveManagement.inc:635 +msgid "This script is marked as active" +msgstr "Dieses Skript ist als aktiv markiert" + +#: personal/mail/sieve/class_sieveManagement.inc:640 +msgid "Script length" +msgstr "Skript-Länge" + +#: personal/mail/sieve/class_sieveManagement.inc:644 +msgid "Remove script" +msgstr "Skript entfernen" + +#: personal/mail/sieve/class_sieveManagement.inc:653 +msgid "Activate script" +msgstr "Skript aktivieren" + +#: personal/mail/sieve/class_sieveManagement.inc:657 +msgid "Edit script" +msgstr "Skript bearbeiten" + +#: personal/mail/sieve/class_sieveManagement.inc:672 +#, php-format +msgid "Can't log into SIEVE server. Server says '%s'." +msgstr "Die Anmeldung am SIEVE-Server ist fehlgeschlagen. Die Meldung war '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:770 +msgid "Cannot insert element at the requested position!" +msgstr "Kann Element nicht in die gewünschte Position einfügen!" + +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#: personal/mail/class_mail-methods-cyrus.inc:556 +#, php-format +msgid "Cannot store SIEVE script: %s" +msgstr "Kann Sieve-Skript nicht speichern: %s" + +#: personal/mail/sieve/class_sieveManagement.inc:1045 +msgid "Failed to save sieve script" +msgstr "Fehler beim Speichern des Sieve-Skriptes" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:24 +msgid "Please specify a valid email address." +msgstr "Bitte geben Sie eine gültige E-Mail-Adresse ein." + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:35 +msgid "Place a mail address here" +msgstr "Bitte geben Sie eine Mail-Adresse an" + +#: personal/mail/sieve/class_sieveElement_Comment.inc:21 +msgid "Your comment here" +msgstr "Hier folgt Ihr Kommentar" + +#: personal/mail/sieve/templates/add_element.tpl:1 +msgid "Add a new element" +msgstr "Füge ein neues Element ein" + +#: personal/mail/sieve/templates/add_element.tpl:2 +msgid "Please select the type of element you want to add" +msgstr "Bitte wählen Sie den Typ des Elements, das Sie hinzufügen möchten" + +#: personal/mail/sieve/templates/add_element.tpl:11 +#: personal/mail/sieve/templates/select_test_type.tpl:11 +msgid "Continue" +msgstr "Fortsetzen" + +#: personal/mail/sieve/templates/add_element.tpl:13 +msgid "Abort" +msgstr "Abbrechen" + +#: personal/mail/sieve/templates/element_discard.tpl:9 +msgid "Discard message" +msgstr "Verwerfe Nachricht" + +#: personal/mail/sieve/templates/element_if.tpl:4 +#: personal/mail/sieve/class_sieveElement_If.inc:834 +msgid "Condition" +msgstr "Bedingung" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_address.tpl:116 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_header.tpl:109 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_envelope.tpl:108 +msgid "Not" +msgstr "Nicht" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_anyof.tpl:7 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "Inverse match" +msgstr "Umgekehrte Übereinstimmung" + +#: personal/mail/sieve/templates/import_script.tpl:1 +msgid "Import sieve script" +msgstr "Sieve-Skript importieren" + +#: personal/mail/sieve/templates/import_script.tpl:2 +msgid "" +"Please select the sieve script you want to import. Use the import button to " +"import the script or the cancel button to abort." +msgstr "" +"Bitte wählen Sie das zu importierende Sieve-Skript. Verwenden Sie den Import-" +"Knopf um das Skript zu importieren oder den Abbrechen-Knopf um abzubrechen." + +#: personal/mail/sieve/templates/import_script.tpl:5 +msgid "Script to import" +msgstr "Zu importierendes Skript" + +#: personal/mail/sieve/templates/element_address.tpl:18 +#: personal/mail/sieve/templates/element_header.tpl:19 +#: personal/mail/sieve/templates/element_vacation.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:19 +msgid "Normal view" +msgstr "Normale Ansicht" + +#: personal/mail/sieve/templates/element_address.tpl:25 +#: personal/mail/sieve/templates/element_header.tpl:26 +#: personal/mail/sieve/templates/element_envelope.tpl:26 +msgid "Match type" +msgstr "Art der Übereinstimmung" + +#: personal/mail/sieve/templates/element_address.tpl:28 +#: personal/mail/sieve/templates/element_address.tpl:51 +#: personal/mail/sieve/templates/element_address.tpl:61 +#: personal/mail/sieve/templates/element_address.tpl:72 +#: personal/mail/sieve/templates/element_address.tpl:121 +#: personal/mail/sieve/templates/element_address.tpl:126 +#: personal/mail/sieve/templates/element_header.tpl:29 +#: personal/mail/sieve/templates/element_header.tpl:52 +#: personal/mail/sieve/templates/element_header.tpl:63 +#: personal/mail/sieve/templates/element_header.tpl:114 +#: personal/mail/sieve/templates/element_header.tpl:119 +#: personal/mail/sieve/templates/element_boolean.tpl:5 +#: personal/mail/sieve/templates/element_envelope.tpl:29 +#: personal/mail/sieve/templates/element_envelope.tpl:52 +#: personal/mail/sieve/templates/element_envelope.tpl:63 +#: personal/mail/sieve/templates/element_envelope.tpl:113 +#: personal/mail/sieve/templates/element_envelope.tpl:118 +msgid "Boolean value" +msgstr "Boolscher Wert" + +#: personal/mail/sieve/templates/element_address.tpl:36 +#: personal/mail/sieve/templates/element_header.tpl:37 +#: personal/mail/sieve/templates/element_envelope.tpl:37 +msgid "Invert test" +msgstr "Test umkehren" + +#: personal/mail/sieve/templates/element_address.tpl:40 +#: personal/mail/sieve/templates/element_header.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +msgid "Yes" +msgstr "ja" + +#: personal/mail/sieve/templates/element_address.tpl:42 +#: personal/mail/sieve/templates/element_header.tpl:43 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "No" +msgstr "nein" + +#: personal/mail/sieve/templates/element_address.tpl:48 +msgid "Part of address that should be used" +msgstr "Zu verwendender Teil der Adresse" + +#: personal/mail/sieve/templates/element_address.tpl:58 +#: personal/mail/sieve/templates/element_header.tpl:49 +#: personal/mail/sieve/templates/element_envelope.tpl:49 +msgid "Comparator" +msgstr "Vergleichsoperator" + +#: personal/mail/sieve/templates/element_address.tpl:69 +#: personal/mail/sieve/templates/element_envelope.tpl:60 +msgid "Operator" +msgstr "Operator" + +#: personal/mail/sieve/templates/element_address.tpl:85 +#: personal/mail/sieve/templates/element_header.tpl:77 +#: personal/mail/sieve/templates/element_envelope.tpl:76 +msgid "Address fields to include" +msgstr "Zu beinhaltende Adressfelder" + +#: personal/mail/sieve/templates/element_address.tpl:89 +#: personal/mail/sieve/templates/element_header.tpl:81 +#: personal/mail/sieve/templates/element_envelope.tpl:80 +msgid "Values to match for" +msgstr "Zutreffende Werte" + +#: personal/mail/sieve/templates/element_address.tpl:118 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_header.tpl:111 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:110 +msgid "-" +msgstr "-" + +#: personal/mail/sieve/templates/element_address.tpl:138 +#: personal/mail/sieve/templates/element_header.tpl:131 +#: personal/mail/sieve/templates/element_vacation.tpl:47 +#: personal/mail/sieve/templates/element_envelope.tpl:130 +msgid "Expert view" +msgstr "Expertenansicht" + +#: personal/mail/sieve/templates/element_fileinto.tpl:4 +msgid "Move mail into folder" +msgstr "Verschiebe Nachricht in Ordner" + +#: personal/mail/sieve/templates/element_fileinto.tpl:8 +msgid "Select from list" +msgstr "Wählen Sie aus der Liste" + +#: personal/mail/sieve/templates/element_fileinto.tpl:10 +msgid "Manual selection" +msgstr "Manuelle Auswahl" + +#: personal/mail/sieve/templates/element_fileinto.tpl:18 +msgid "Folder" +msgstr "Ordner" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +msgid "Move this object up one position" +msgstr "Verschiebe dieses Objekt um eine Position nach oben" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Up" +msgstr "Auf" + +#: personal/mail/sieve/templates/object_container_clear.tpl:9 +#: personal/mail/sieve/templates/object_container.tpl:9 +msgid "Move up" +msgstr "Nach oben bewegen" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +msgid "Move this object down one position" +msgstr "Verschiebe dieses Objekt um eine Position nach unten" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Down" +msgstr "Ab" + +#: personal/mail/sieve/templates/object_container_clear.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:13 +msgid "Move down" +msgstr "Nach unten bewegen" + +#: personal/mail/sieve/templates/object_container_clear.tpl:16 +msgid "Remove this object" +msgstr "Dieses Objekt entfernen" + +#: personal/mail/sieve/templates/object_container_clear.tpl:17 +#: personal/mail/sieve/templates/object_container.tpl:17 +msgid "Remove element" +msgstr "Element entfernen" + +#: personal/mail/sieve/templates/create_script.tpl:2 +msgid "" +"Please enter the name for the new script below. Script names must consist of " +"lower case characters only." +msgstr "" +"Bitte geben Sie den Namen für das neue Skript unten ein. Skriptnamen dürfen " +"ausschliesslich aus Kleinbuchstaben bestehen." + +#: personal/mail/sieve/templates/create_script.tpl:8 +msgid "Script name" +msgstr "Skriptname" + +#: personal/mail/sieve/templates/select_test_type.tpl:1 +msgid "Select the type of test you want to add" +msgstr "Wählen Sie die Art des Tests, den Sie hinzufügen möchten" + +#: personal/mail/sieve/templates/select_test_type.tpl:3 +msgid "Available test types" +msgstr "Verfügbare Testarten" + +#: personal/mail/sieve/templates/element_comment.tpl:8 +msgid "Edit" +msgstr "Bearbeiten" + +#: personal/mail/sieve/templates/element_header.tpl:60 +msgid "operator" +msgstr "Operator" + +#: personal/mail/sieve/templates/element_keep.tpl:9 +msgid "Keep message" +msgstr "Nachricht behalten" + +#: personal/mail/sieve/templates/element_redirect.tpl:18 +msgid "Redirect mail to following recipients" +msgstr "Leite Mail an die folgenden Empfänger um" + +#: personal/mail/sieve/templates/element_vacation.tpl:13 +msgid "Vacation Message" +msgstr "Urlaubsnachricht" + +#: personal/mail/sieve/templates/element_vacation.tpl:21 +msgid "Release interval" +msgstr "Freigabe-Intervall" + +#: personal/mail/sieve/templates/element_vacation.tpl:25 +msgid "days" +msgstr "Tage" + +#: personal/mail/sieve/templates/element_vacation.tpl:30 +msgid "Alternative sender addresses" +msgstr "Alternative Absender-Adressen" + +#: personal/mail/sieve/templates/element_boolean.tpl:4 +msgid "Bool" +msgstr "Schalter" + +#: personal/mail/sieve/templates/element_boolean.tpl:8 +msgid "update" +msgstr "aktualisieren" + +#: personal/mail/sieve/templates/remove_script.tpl:2 +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Warning" +msgstr "Warnung" + +#: personal/mail/sieve/templates/remove_script.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Bitte überprüfen Sie genau, was Sie tun. GOsa hat keine Möglichkeit, die " +"Daten wiederherzustellen." + +#: personal/mail/sieve/templates/remove_script.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"script in a file. So - if you've done so - press 'Delete' to continue or " +"'Cancel' to abort." +msgstr "" +"Eine Sicherung des Skripts bietet sich an. Wenn Sie dies erledigt haben, " +"drücken Sie 'Entfernen' um Fortzufahren oder 'Abbrechen', um den Vorgang " +"abzubrechen." + +#: personal/mail/sieve/templates/object_test_container.tpl:6 +msgid "Add object" +msgstr "Objekt hinzufügen" + +#: personal/mail/sieve/templates/object_test_container.tpl:10 +#: personal/mail/sieve/templates/object_container.tpl:16 +msgid "Remove object" +msgstr "Objekt entfernen" + +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Move object up one position" +msgstr "Verschiebe dieses Objekt um eine Position nach oben" + +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Move object down one position" +msgstr "Verschiebe dieses Objekt um eine Position nach unten" + +#: personal/mail/sieve/templates/object_container.tpl:21 +msgid "choose element" +msgstr "Wähle Element" + +#: personal/mail/sieve/templates/object_container.tpl:24 +msgid "Fileinto" +msgstr "Ablegen unter" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:42 +msgid "Add new" +msgstr "Neu hinzufügen" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add a new object above this one." +msgstr "Füge ein neues Objekt oberhalb ein." + +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add element above" +msgstr "Füge Element oberhalb ein" + +#: personal/mail/sieve/templates/object_container.tpl:42 +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add a new object below this one." +msgstr "Füge ein neues Objekt unterhalb ein." + +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add element below" +msgstr "Füge Element unterhalb ein" + +#: personal/mail/sieve/templates/element_size.tpl:16 +msgid "Select match type" +msgstr "Wählen Sie eine Art der Übereinstimmung" + +#: personal/mail/sieve/templates/element_size.tpl:20 +msgid "Select value unit" +msgstr "Wählen Sie die Werteinheit" + +#: personal/mail/sieve/templates/element_stop.tpl:9 +msgid "Stop execution here" +msgstr "Beende Ausführung hier" + +#: personal/mail/sieve/templates/element_reject.tpl:14 +msgid "Reject mail" +msgstr "Mail ablehnen" + +#: personal/mail/sieve/templates/element_reject.tpl:17 +msgid "This is a multiline text element" +msgstr "Dies ist ein mehrzeiliges Text-Element" + +#: personal/mail/sieve/templates/element_reject.tpl:19 +msgid "This is stored as single string" +msgstr "Dies wird als einzelne Zeichenkette gespeichert" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:6 +msgid "Export" +msgstr "Export" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:12 +msgid "View structured" +msgstr "Strukturierte Ansicht" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:14 +msgid "View source" +msgstr "Zeige Quelltext" + +#: personal/mail/sieve/templates/management.tpl:1 +msgid "List of sieve scripts" +msgstr "Liste der Sieve-Skripte" + +#: personal/mail/sieve/templates/management.tpl:5 +msgid "" +"Connection to the sieve server could not be established, the " +"authentification attribute is empty." +msgstr "" +"Die Verbindung zum Sieve-Server konnte nicht hergestellt werden, das " +"Authentifizierungsattribut ist leer." + +#: personal/mail/sieve/templates/management.tpl:6 +msgid "Please verify that the attributes uid and mail are not empty and try again." +msgstr "" +"Bitte überprüfen Sie, dass die Attribute uid und mail nicht leer sind und " +"versuchen Sie es erneut." + +#: personal/mail/sieve/templates/management.tpl:12 +msgid "Connection to the sieve server could not be established." +msgstr "Die Verbindung zum Sieve-Server konnte nicht hergestellt werden." + +#: personal/mail/sieve/templates/management.tpl:15 +msgid "Possibly the sieve account has not been created yet." +msgstr "Wahrscheinlich wurde das Sieve-Konto noch nicht erstellt." + +#: personal/mail/sieve/templates/management.tpl:19 +msgid "" +"Be careful. All your changes will be saved directly to sieve, if you use the " +"save button below." +msgstr "" +"Bitte seien Sie vorsichtig. Alle Änderungen werden direkt für Sieve " +"übernommen, wenn Sie den 'Speichern'-Knopf drücken." + +#: personal/mail/sieve/templates/management.tpl:22 +msgid "Create new script" +msgstr "Neues Skript erstellen" + +#: personal/mail/sieve/class_sieveElement_Require.inc:73 +msgid "Please specify at least one valid requirement." +msgstr "Bitte geben Sie mindestens eine gültige Bedingung an." + +#: personal/mail/sieve/class_sieveElement_Reject.inc:21 +msgid "Invalid character found, quotes are not allowed in a reject message." +msgstr "" +"Ungültiges Zeichen gefunden, Hochkommata sind in der Ablehnungsmeldung nicht " +"erlaubt." + +#: personal/mail/sieve/class_sieveElement_Reject.inc:37 +msgid "Your reject text here" +msgstr "Ihr Ablehnungstext" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +msgid "Complete address" +msgstr "Vollständige Adresse" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Default" +msgstr "Standard" + +#: personal/mail/sieve/class_sieveElement_If.inc:28 +msgid "Domain part" +msgstr "Domänen-Teil" + +#: personal/mail/sieve/class_sieveElement_If.inc:29 +msgid "Local part" +msgstr "Lokaler Teil" + +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Case insensitive" +msgstr "Groß-/Kleinschreibung ignorieren" + +#: personal/mail/sieve/class_sieveElement_If.inc:34 +msgid "Case sensitive" +msgstr "Groß-/Kleinschreibung beachten" + +#: personal/mail/sieve/class_sieveElement_If.inc:35 +msgid "Numeric" +msgstr "Numerisch" + +#: personal/mail/sieve/class_sieveElement_If.inc:39 +msgid "is" +msgstr "ist" + +#: personal/mail/sieve/class_sieveElement_If.inc:40 +msgid "regex" +msgstr "Regulärer Ausdruck" + +#: personal/mail/sieve/class_sieveElement_If.inc:41 +msgid "contains" +msgstr "enthält" + +#: personal/mail/sieve/class_sieveElement_If.inc:42 +msgid "matches" +msgstr "trifft zu" + +#: personal/mail/sieve/class_sieveElement_If.inc:43 +msgid "count" +msgstr "Anzahl" + +#: personal/mail/sieve/class_sieveElement_If.inc:44 +msgid "value is" +msgstr "Wert ist" + +#: personal/mail/sieve/class_sieveElement_If.inc:48 +msgid "less than" +msgstr "kleiner als" + +#: personal/mail/sieve/class_sieveElement_If.inc:49 +msgid "less or equal" +msgstr "kleiner oder gleich" + +#: personal/mail/sieve/class_sieveElement_If.inc:50 +msgid "equals" +msgstr "gleich" + +#: personal/mail/sieve/class_sieveElement_If.inc:51 +msgid "greater or equal" +msgstr "größer oder gleich" + +#: personal/mail/sieve/class_sieveElement_If.inc:52 +#: personal/mail/sieve/class_sieveElement_If.inc:726 +#: personal/mail/sieve/class_sieveElement_If.inc:1059 +msgid "greater than" +msgstr "größer als" + +#: personal/mail/sieve/class_sieveElement_If.inc:53 +msgid "not equal" +msgstr "ungleich" + +#: personal/mail/sieve/class_sieveElement_If.inc:102 +msgid "Can't save empty tests." +msgstr "Kann leere Tests nicht speichern." + +#: personal/mail/sieve/class_sieveElement_If.inc:446 +msgid "emtpy" +msgstr "leer" + +#: personal/mail/sieve/class_sieveElement_If.inc:447 +msgid "empty" +msgstr "leer" + +#: personal/mail/sieve/class_sieveElement_If.inc:493 +msgid "Nothing specified right now" +msgstr "Bisher noch nichts angegeben" + +#: personal/mail/sieve/class_sieveElement_If.inc:595 +msgid "Invalid type of address part." +msgstr "Ungültiger Typ des Adressteils." + +#: personal/mail/sieve/class_sieveElement_If.inc:605 +msgid "Invalid match type given." +msgstr "Ungültiger Treffertyp angegeben." + +#: personal/mail/sieve/class_sieveElement_If.inc:621 +msgid "Invalid operator given." +msgstr "Ungültiger Operator übergeben." + +#: personal/mail/sieve/class_sieveElement_If.inc:638 +msgid "Please specify a valid operator." +msgstr "Bitte wählen Sie einen gültigen Operator." + +#: personal/mail/sieve/class_sieveElement_If.inc:654 +msgid "Invalid character found in address attribute. Quotes are not allowed here." +msgstr "" +"Ungültiges Zeichen im Adressattribut gefunden. Anführungszeichen sind nicht " +"erlaubt." + +#: personal/mail/sieve/class_sieveElement_If.inc:669 +msgid "Invalid character found in value attribute. Quotes are not allowed here." +msgstr "" +"Ungültiges Zeichen im Wertattribut gefunden. Anführungszeichen sind nicht " +"erlaubt." + +#: personal/mail/sieve/class_sieveElement_If.inc:727 +#: personal/mail/sieve/class_sieveElement_If.inc:1060 +msgid "lower than" +msgstr "weniger als" + +#: personal/mail/sieve/class_sieveElement_If.inc:729 +#: personal/mail/sieve/class_sieveElement_If.inc:1062 +msgid "Megabyte" +msgstr "Megabyte" + +#: personal/mail/sieve/class_sieveElement_If.inc:730 +#: personal/mail/sieve/class_sieveElement_If.inc:1063 +msgid "Kilobyte" +msgstr "Kilobyte" + +#: personal/mail/sieve/class_sieveElement_If.inc:731 +#: personal/mail/sieve/class_sieveElement_If.inc:1064 +msgid "Bytes" +msgstr "Bytes" + +#: personal/mail/sieve/class_sieveElement_If.inc:745 +msgid "Please select a valid match type in the list box below." +msgstr "Bitte wählen Sie eine gültige Art der Übereinstimmung in der Liste unterhalb." + +#: personal/mail/sieve/class_sieveElement_If.inc:759 +msgid "Only numeric values are allowed here." +msgstr "Es sind lediglich numerische Werte zugelassen." + +#: personal/mail/sieve/class_sieveElement_If.inc:769 +msgid "No valid unit selected" +msgstr "Keine gültige Einheit ausgewählt" + +#: personal/mail/sieve/class_sieveElement_If.inc:876 +msgid "Empty" +msgstr "leer" + +#: personal/mail/sieve/class_sieveElement_If.inc:1134 +#: personal/mail/sieve/class_sieveElement_If.inc:1164 +msgid "Click here to add a new test" +msgstr "Hier klicken, um einen neuen Test hinzuzufügen" + +#: personal/mail/sieve/class_sieveElement_If.inc:1176 +msgid "Unhandled switch type" +msgstr "Unbehandelter Weichentyp" + +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Cannot remove last element!" +msgstr "Kann letztes Element nicht entfernen!" + +#: personal/mail/sieve/class_My_Tree.inc:658 +msgid "Require must be the first command in the script." +msgstr "Require muss das erste Kommando im Skript sein." + +#: personal/mail/class_mailAccount.inc:51 +#: addons/mailqueue/class_mailqueue.inc:7 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/mail/class_mailAccount.inc:635 +#: personal/mail/class_mail-methods.inc:131 +#: personal/mail/class_mail-methods.inc:462 +msgid "Configuration error" +msgstr "Konfigurationsfehler" + +#: personal/mail/class_mailAccount.inc:635 +#, php-format +msgid "No DESC tag in vacation template '%s'!" +msgstr "Kein DESC-Tag in der Abwesenheits-Vorlage '%s'!" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +msgid "Permission error" +msgstr "Berechtigungsfehler" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +msgid "You have no permission to modify these addresses!" +msgstr "Sie haben keine Berechtigung, diese Adressen zu verändern!" + +#: personal/mail/class_mailAccount.inc:755 +#: personal/mail/class_mailAccount.inc:758 +msgid "unknown" +msgstr "unbekannt" + +#: personal/mail/class_mailAccount.inc:1122 +#: personal/mail/class_mailAccount.inc:1130 +#: personal/mail/class_mailAccount.inc:1279 +msgid "Mail reject size" +msgstr "Maximale Mailgröße" + +#: personal/mail/class_mailAccount.inc:1134 +#: personal/mail/class_mailAccount.inc:1286 +msgid "Spam folder" +msgstr "Ordner für Spam" + +#: personal/mail/class_mailAccount.inc:1140 +#: personal/mail/class_mailAccount.inc:1291 +msgid "Vacation interval" +msgstr "Urlaubsbenachrichtigungs-Intervall" + +#: personal/mail/class_mailAccount.inc:1415 +msgid "My account" +msgstr "Mein Konto" + +#: personal/mail/class_mailAccount.inc:1424 +msgid "Add vacation information" +msgstr "Urlaubsinformationen hinzufügen" + +#: personal/mail/class_mailAccount.inc:1427 +msgid "Use spam filter" +msgstr "Verwende Spam-Filter" + +#: personal/mail/class_mailAccount.inc:1428 +msgid "Spam level" +msgstr "Spam-Level" + +#: personal/mail/class_mailAccount.inc:1429 +msgid "Spam mail box" +msgstr "Spam-Postfach" + +#: personal/mail/class_mailAccount.inc:1431 +msgid "Sieve management" +msgstr "Sieve Verwaltung" + +#: personal/mail/class_mailAccount.inc:1433 +msgid "Reject due to mailsize" +msgstr "Aufgrund der Mail-Größe abweisen" + +#: personal/mail/class_mailAccount.inc:1436 +#: personal/mail/class_mailAccount.inc:1441 +msgid "Forwarding address" +msgstr "Weiterleitungs-Adresse" + +#: personal/mail/class_mailAccount.inc:1437 +msgid "Local delivery" +msgstr "Lokale Zustellung" + +#: personal/mail/class_mailAccount.inc:1438 +msgid "No delivery to own mailbox " +msgstr "Keine Zustellung in eigenes Postfach" + +#: personal/mail/class_mailAccount.inc:1439 +msgid "Mail alternative addresses" +msgstr "Weitere Adressen" + +#: personal/mail/main.inc:138 +msgid "User mail settings" +msgstr "Benutzer Mail-Einstellungen" + +#: personal/mail/class_mail-methods.inc:132 +#, php-format +msgid "The configured mail attribute '%s' is unsupported!" +msgstr "Das eingestellte Mail-Attribut '%s' wird nicht unterstützt!" + +#: personal/mail/class_mail-methods.inc:463 +#, php-format +msgid "Mail method '%s' is unknown!" +msgstr "Mail-Methode '%s' ist unbekannt!" + +#: personal/mail/class_mail-methods.inc:689 +#: personal/mail/class_mail-methods.inc:690 +msgid "None" +msgstr "Keine" + +#: personal/mail/class_mail-methods.inc:779 +msgid "Unknown" +msgstr "Unbekannt" + +#: personal/mail/class_mail-methods.inc:781 +msgid "Unlimited" +msgstr "Ohne Beschränkung" + +#: personal/mail/class_mail-methods-cyrus.inc:39 +msgid "There are no IMAP compatible mail servers defined!" +msgstr "Es sind keine IMAP-kompatible Mail-Server definiert!" + +#: personal/mail/class_mail-methods-cyrus.inc:44 +msgid "Mail server for this account is invalid!" +msgstr "Der Mail-Server für dieses Konto ist ungültig!" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +msgid "IMAP error" +msgstr "IMAP-Fehler" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, php-format +msgid "Cannot modify IMAP mailbox quota: %s" +msgstr "Kann das IMAP-Postfach nicht verändern: '%s'" + +#: personal/mail/class_mail-methods-cyrus.inc:354 +#: personal/mail/class_mail-methods-cyrus.inc:391 +msgid "The module imap_getacl is not implemented!" +msgstr "Die Funktion imap_getacl ist nicht implementiert!" + +#: personal/mail/class_mail-methods-cyrus.inc:563 +#, php-format +msgid "Cannot activate SIEVE script: %s" +msgstr "Kann das Sieve-Skript nicht aktivieren: %s" + +#: addons/mailqueue/class_mailqueue.inc:6 +#: addons/mailqueue/class_mailqueue.inc:331 addons/mailqueue/main.inc:56 +msgid "Mail queue" +msgstr "Mail-Warteschlange" + +#: addons/mailqueue/class_mailqueue.inc:205 +msgid "up" +msgstr "auf" + +#: addons/mailqueue/class_mailqueue.inc:207 +msgid "down" +msgstr "ab" + +#: addons/mailqueue/class_mailqueue.inc:218 +#: addons/mailqueue/class_mailqueue.inc:318 +msgid "All" +msgstr "Alle" + +#: addons/mailqueue/class_mailqueue.inc:262 +msgid "no limit" +msgstr "keine Beschränkung" + +#: addons/mailqueue/class_mailqueue.inc:265 +msgid "hour" +msgstr "Stunde" + +#: addons/mailqueue/class_mailqueue.inc:267 +msgid "hours" +msgstr "Stunden" + +#: addons/mailqueue/class_mailqueue.inc:319 +msgid "Hold" +msgstr "Vorhalten" + +#: addons/mailqueue/class_mailqueue.inc:320 +msgid "Un hold" +msgstr "Vorhalten aufheben" + +#: addons/mailqueue/class_mailqueue.inc:322 +msgid "Not active" +msgstr "inaktiv" + +#: addons/mailqueue/class_mailqueue.inc:332 +#: addons/mailqueue/class_mailqueue.inc:337 +msgid "Mail queue addon" +msgstr "Mail-Warteschlangen-Erweiterung" + +#: addons/mailqueue/class_mailqueue.inc:340 +msgid "Unhold all messages" +msgstr "Alle Nachrichten aus der Warteschleife durchstellen" + +#: addons/mailqueue/class_mailqueue.inc:341 addons/mailqueue/contents.tpl:38 +msgid "Hold all messages" +msgstr "Alle Nachrichten vorhalten" + +#: addons/mailqueue/class_mailqueue.inc:342 +msgid "Delete all messages" +msgstr "Alle Nachrichten entfernen" + +#: addons/mailqueue/class_mailqueue.inc:343 addons/mailqueue/contents.tpl:48 +msgid "Requeue all messages" +msgstr "Alle Nachrichten wieder einreihen" + +#: addons/mailqueue/class_mailqueue.inc:344 +msgid "Unhold message" +msgstr "Nachricht aus der Warteschleife durchstellen" + +#: addons/mailqueue/class_mailqueue.inc:345 addons/mailqueue/contents.tpl:120 +msgid "Hold message" +msgstr "Nachricht vorhalten" + +#: addons/mailqueue/class_mailqueue.inc:346 +msgid "Delete message" +msgstr "Entferne Nachricht" + +#: addons/mailqueue/class_mailqueue.inc:347 +msgid "Requeue message" +msgstr "Nachricht wieder einreihen" + +#: addons/mailqueue/class_mailqueue.inc:348 +msgid "Gathering queue data" +msgstr "Erfasse Inhalt der Warteschlange" + +#: addons/mailqueue/class_mailqueue.inc:349 +msgid "Get header information" +msgstr "Hole Kopfzeilen" + +#: addons/mailqueue/contents.tpl:10 addons/mailqueue/contents.tpl:28 +msgid "Search" +msgstr "Suchen" + +#: addons/mailqueue/contents.tpl:11 +msgid "Search for" +msgstr "Suche nach" + +#: addons/mailqueue/contents.tpl:12 +msgid "Please enter a search string here." +msgstr "Bitte geben Sie einen Such-String ein." + +#: addons/mailqueue/contents.tpl:14 +msgid "Select a server" +msgstr "Wählen Sie einen Server" + +#: addons/mailqueue/contents.tpl:18 +msgid "with status" +msgstr "mit Status" + +#: addons/mailqueue/contents.tpl:23 +msgid "within the last" +msgstr "innerhalb der letzten" + +#: addons/mailqueue/contents.tpl:33 +msgid "Remove all messages" +msgstr "Entferne alle Nachrichten" + +#: addons/mailqueue/contents.tpl:34 +msgid "Remove all messages from selected servers queue" +msgstr "Entferne alle Nachrichten aus der Warteschlange des gewählten Servers" + +#: addons/mailqueue/contents.tpl:39 +msgid "Hold all messages in selected servers queue" +msgstr "Alle Nachrichten in der Warteschlange des gewählten Servers vorhalten" + +#: addons/mailqueue/contents.tpl:43 +msgid "Release all messages" +msgstr "Alle Nachrichten freigeben" + +#: addons/mailqueue/contents.tpl:44 +msgid "Release all messages in selected servers queue" +msgstr "Alle Nachrichten in der Warteschlange des gewählten Servers freigeben" + +#: addons/mailqueue/contents.tpl:49 +msgid "Requeue all messages in selected servers queue" +msgstr "Alle Nachrichten in der Warteschlange des gewählten Servers wieder einreihen" + +#: addons/mailqueue/contents.tpl:63 +msgid "Search returned no results" +msgstr "Die Suche verlief ergebnislos..." + +#: addons/mailqueue/contents.tpl:72 +msgid "ID" +msgstr "ID" + +#: addons/mailqueue/contents.tpl:75 +msgid "Arrival" +msgstr "Ankunft" + +#: addons/mailqueue/contents.tpl:76 +msgid "Sender" +msgstr "Absender" + +#: addons/mailqueue/contents.tpl:77 +msgid "Recipient" +msgstr "Empfänger" + +#: addons/mailqueue/contents.tpl:78 +msgid "Status" +msgstr "Status" + +#: addons/mailqueue/contents.tpl:105 +msgid "delete" +msgstr "Entfernen" + +#: addons/mailqueue/contents.tpl:105 +msgid "Delete this message" +msgstr "Diese Nachricht entfernen" + +#: addons/mailqueue/contents.tpl:113 +msgid "unhold" +msgstr "Vorhalten aufheben" + +#: addons/mailqueue/contents.tpl:113 +msgid "Release message" +msgstr "Nachricht freigeben" + +#: addons/mailqueue/contents.tpl:120 +msgid "hold" +msgstr "vorhalten" + +#: addons/mailqueue/contents.tpl:127 +msgid "requeue" +msgstr "wieder einreihen" + +#: addons/mailqueue/contents.tpl:127 +msgid "Requeue this message" +msgstr "Diese Nachricht wieder einreihen" + +#: addons/mailqueue/contents.tpl:133 +msgid "header" +msgstr "Kopfzeilen" + +#: addons/mailqueue/contents.tpl:134 +msgid "Display header of this message" +msgstr "Zeige Kopfzeilen dieser Nachricht" + diff --git a/trunk/gosa-plugins/mail/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mail/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..421247f7d --- /dev/null +++ b/trunk/gosa-plugins/mail/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,2551 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 09:00+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/ogroups/mail/mail.tpl:7 +msgid "Mail distribution list" +msgstr "" + +#: admin/ogroups/mail/mail.tpl:10 admin/groups/mail/mail.tpl:7 +#: admin/groups/mail/paste_mail.tpl:8 +#: admin/groups/mail/class_groupMail.inc:838 personal/mail/copypaste.tpl:7 +#: personal/mail/generic.tpl:9 personal/mail/class_mailAccount.inc:1086 +msgid "Primary address" +msgstr "" + +#: admin/ogroups/mail/mail.tpl:13 +msgid "Primary mail address for this distribution list" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:50 +msgid "Remove mail account" +msgstr "Eliminar cuenta de correo" + +#: admin/ogroups/mail/class_mailogroup.inc:51 +#: admin/ogroups/mail/class_mailogroup.inc:54 +msgid "mail group" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:53 +msgid "Create mail account" +msgstr "Crear cuenta de correo" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +#: admin/ogroups/mail/class_mailogroup.inc:93 +#: admin/ogroups/mail/class_mailogroup.inc:194 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: admin/groups/mail/class_groupMail.inc:840 +#: admin/groups/mail/class_groupMail.inc:971 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: personal/mail/class_mailAccount.inc:1090 +#: personal/mail/class_mailAccount.inc:1094 +#: personal/mail/class_mailAccount.inc:1105 +#: personal/mail/class_mailAccount.inc:1420 +msgid "Mail address" +msgstr "Dirección correo electrónico" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +msgid "your-name@your-domain.com" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:120 +#: admin/ogroups/mail/class_mailogroup.inc:157 +#: admin/systems/services/imap/class_goImapServer.inc:190 +#: admin/systems/services/spam/class_goSpamServer.inc:277 +#: admin/systems/services/virus/class_goVirusServer.inc:154 +#: admin/systems/services/mail/class_goMailServer.inc:582 +#: admin/groups/mail/class_groupMail.inc:531 +#: admin/groups/mail/class_groupMail.inc:760 +#: personal/mail/class_mailAccount.inc:915 +#: personal/mail/class_mailAccount.inc:982 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio IMAP" + +#: admin/ogroups/mail/class_mailogroup.inc:186 +#: admin/ogroups/mail/paste_mail.tpl:4 +#: admin/groups/mail/class_groupMail.inc:276 +#: admin/groups/mail/class_groupMail.inc:278 +#: admin/groups/mail/class_groupMail.inc:279 +#: admin/groups/mail/class_groupMail.inc:284 +#: admin/groups/mail/class_groupMail.inc:286 +#: admin/groups/mail/class_groupMail.inc:287 +#: admin/groups/mail/class_groupMail.inc:828 +#: admin/groups/mail/class_groupMail.inc:963 +#: personal/mail/class_mailAccount.inc:50 +#: personal/mail/class_mailAccount.inc:239 +#: personal/mail/class_mailAccount.inc:247 +#: personal/mail/class_mailAccount.inc:249 +#: personal/mail/class_mailAccount.inc:254 +#: personal/mail/class_mailAccount.inc:256 +#: personal/mail/class_mailAccount.inc:1074 +#: personal/mail/class_mailAccount.inc:1264 +#: personal/mail/class_mailAccount.inc:1410 +msgid "Mail" +msgstr "Correo Electrónico" + +#: admin/ogroups/mail/class_mailogroup.inc:187 +msgid "Mail group" +msgstr "" + +#: admin/ogroups/mail/paste_mail.tpl:7 +msgid "Please enter a mail address" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:48 +msgid "IMAP/POP3 service" +msgstr "Servicio IMAP/POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:53 +#: admin/systems/services/imap/class_goImapServer.inc:212 +msgid "Repair database" +msgstr "Reparar Base de datos" + +#: admin/systems/services/imap/class_goImapServer.inc:100 +msgid "IMAP/POP3 (Cyrus) service" +msgstr "Servicio IMAP/POP3 (Cyrus)" + +#: admin/systems/services/imap/class_goImapServer.inc:110 +#: admin/systems/services/imap/class_goImapServer.inc:214 +#: admin/systems/services/imap/goImapServer.tpl:7 +msgid "Server identifier" +msgstr "Identificador de servidor" + +#: admin/systems/services/imap/class_goImapServer.inc:114 +#: admin/systems/services/imap/class_goImapServer.inc:116 +#: admin/systems/services/imap/class_goImapServer.inc:215 +#: admin/systems/services/imap/goImapServer.tpl:16 +msgid "Connect URL" +msgstr "URL de conexión" + +#: admin/systems/services/imap/class_goImapServer.inc:120 +#: admin/systems/services/imap/class_goImapServer.inc:122 +#: admin/systems/services/imap/class_goImapServer.inc:219 +#: admin/systems/services/imap/goImapServer.tpl:43 +#, fuzzy +msgid "Sieve connect URL" +msgstr "URL de conexión" + +#: admin/systems/services/imap/class_goImapServer.inc:123 +#, php-format +msgid "Valid options are: %s" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:127 +#: admin/systems/services/imap/class_goImapServer.inc:216 +#: admin/systems/services/imap/goImapServer.tpl:25 +msgid "Admin user" +msgstr "Usuario administrador" + +#: admin/systems/services/imap/class_goImapServer.inc:130 +#: admin/systems/services/imap/goImapServer.tpl:34 +msgid "Password" +msgstr "Contraseña" + +#: admin/systems/services/imap/class_goImapServer.inc:199 +#: admin/systems/services/imap/class_goImapServer.inc:200 +msgid "IMAP/POP3" +msgstr "IMAP/POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:200 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/imap/class_goImapServer.inc:209 +#: admin/systems/services/virus/class_goVirusServer.inc:228 +msgid "Start" +msgstr "Inicio" + +#: admin/systems/services/imap/class_goImapServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:229 +#: personal/mail/sieve/class_sieveManagement.inc:501 +#: personal/mail/sieve/class_sieveManagement.inc:719 +#: personal/mail/sieve/templates/object_container.tpl:30 +#: personal/mail/sieve/templates/element_stop.tpl:4 +msgid "Stop" +msgstr "Parada" + +#: admin/systems/services/imap/class_goImapServer.inc:211 +#: admin/systems/services/virus/class_goVirusServer.inc:230 +msgid "Restart" +msgstr "Reiniciar" + +#: admin/systems/services/imap/class_goImapServer.inc:217 +msgid "Admin password" +msgstr "Contraseña de administrador" + +#: admin/systems/services/imap/class_goImapServer.inc:220 +#: admin/systems/services/imap/goImapServer.tpl:61 +msgid "Start IMAP service" +msgstr "Iniciar servicio IMAP" + +#: admin/systems/services/imap/class_goImapServer.inc:221 +#: admin/systems/services/imap/goImapServer.tpl:70 +msgid "Start IMAP SSL service" +msgstr "Iniciar servicio IMAP/SSL" + +#: admin/systems/services/imap/class_goImapServer.inc:222 +#: admin/systems/services/imap/goImapServer.tpl:79 +msgid "Start POP3 service" +msgstr "Iniciar servicio POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:223 +#: admin/systems/services/imap/goImapServer.tpl:88 +msgid "Start POP3 SSL service" +msgstr "Iniciar servicio POP3/SSL" + +#: admin/systems/services/imap/goImapServer.tpl:1 +#: admin/systems/services/mail/goMailServer.tpl:1 admin/groups/mail/mail.tpl:4 +#: personal/mail/generic.tpl:5 +msgid "Generic" +msgstr "Genérico" + +#: admin/systems/services/imap/goImapServer.tpl:99 +#: admin/systems/services/mail/goMailServer.tpl:204 +msgid "The server must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:101 +#: admin/systems/services/mail/goMailServer.tpl:206 +msgid "The service must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:104 +#: admin/systems/services/mail/goMailServer.tpl:209 +msgid "Set new status" +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Set status" +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Execute" +msgstr "Ejecute" + +#: admin/systems/services/spam/goSpamServerRule.tpl:6 +msgid "Name" +msgstr "Nombre" + +#: admin/systems/services/spam/goSpamServerRule.tpl:14 +msgid "Rule" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:42 +#: admin/systems/services/spam/class_goSpamServer.inc:320 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/spam/class_goSpamServer.inc:347 +msgid "Spamassassin" +msgstr "Spamassassin" + +#: admin/systems/services/spam/class_goSpamServer.inc:143 +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#: admin/groups/mail/class_groupMail.inc:341 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:360 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: personal/mail/sieve/class_sieveManagement.inc:201 +#: personal/mail/sieve/class_sieveManagement.inc:206 +#: personal/mail/sieve/class_sieveManagement.inc:212 +#: personal/mail/sieve/class_sieveManagement.inc:218 +#: personal/mail/sieve/class_sieveManagement.inc:429 +#: personal/mail/sieve/class_My_Tree.inc:660 +#: personal/mail/class_mailAccount.inc:311 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:329 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: addons/mailqueue/class_mailqueue.inc:110 +#: addons/mailqueue/class_mailqueue.inc:144 +#: addons/mailqueue/class_mailqueue.inc:150 +msgid "Error" +msgstr "Error" + +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#, fuzzy +msgid "Trusted network" +msgstr "Redes de confianza" + +#: admin/systems/services/spam/class_goSpamServer.inc:287 +msgid "Score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:329 +#: admin/systems/services/spam/goSpamServer.tpl:8 +msgid "Rewrite header" +msgstr "Reescribir cabecera" + +#: admin/systems/services/spam/class_goSpamServer.inc:330 +msgid "Trusted networks" +msgstr "Redes de confianza" + +#: admin/systems/services/spam/class_goSpamServer.inc:331 +#: admin/systems/services/spam/goSpamServer.tpl:18 +msgid "Required score" +msgstr "Puntuación mínima" + +#: admin/systems/services/spam/class_goSpamServer.inc:332 +msgid "Rules" +msgstr "Reglas" + +#: admin/systems/services/spam/class_goSpamServer.inc:334 +#: admin/systems/services/spam/goSpamServer.tpl:69 +msgid "Enable use of bayes filtering" +msgstr "Activar el uso de filtros bayesianos" + +#: admin/systems/services/spam/class_goSpamServer.inc:335 +msgid "Enabled bayes auto learning" +msgstr "Activar autoaprendizaje de filtros bayesianos" + +#: admin/systems/services/spam/class_goSpamServer.inc:336 +#: admin/systems/services/spam/goSpamServer.tpl:75 +msgid "Enable RBL checks" +msgstr "Activas comprobaciones RBL" + +#: admin/systems/services/spam/class_goSpamServer.inc:337 +#: admin/systems/services/spam/goSpamServer.tpl:86 +msgid "Enable use of Razor" +msgstr "Activar usar Razor" + +#: admin/systems/services/spam/class_goSpamServer.inc:338 +#: admin/systems/services/spam/goSpamServer.tpl:89 +msgid "Enable use of DDC" +msgstr "Activar uso de DDC" + +#: admin/systems/services/spam/class_goSpamServer.inc:339 +#: admin/systems/services/spam/goSpamServer.tpl:92 +msgid "Enable use of Pyzor" +msgstr "Activar uso de Pyzor" + +#: admin/systems/services/spam/goSpamServer.tpl:22 +msgid "Select required score to tag mail as spam" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:48 +#: admin/systems/services/mail/goMailServer.tpl:73 +#: admin/systems/services/mail/goMailServer.tpl:104 +msgid "Remove" +msgstr "Eliminar" + +#: admin/systems/services/spam/goSpamServer.tpl:72 +msgid "Enable bayes auto learning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:45 +#: admin/systems/services/virus/class_goVirusServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:219 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +msgid "Anti virus" +msgstr "Antivirus" + +#: admin/systems/services/virus/class_goVirusServer.inc:163 +#: admin/systems/services/virus/class_goVirusServer.inc:238 +msgid "Maximum directory recursions" +msgstr "Recursividad máxima de directorios" + +#: admin/systems/services/virus/class_goVirusServer.inc:164 +#: admin/systems/services/virus/class_goVirusServer.inc:237 +#: admin/systems/services/virus/goVirusServer.tpl:43 +msgid "Maximum threads" +msgstr "Número de hilos máximos" + +#: admin/systems/services/virus/class_goVirusServer.inc:165 +#: admin/systems/services/virus/class_goVirusServer.inc:240 +#: admin/systems/services/virus/goVirusServer.tpl:134 +msgid "Maximum file size" +msgstr "Tamaño máximo del archivo" + +#: admin/systems/services/virus/class_goVirusServer.inc:166 +#: admin/systems/services/virus/class_goVirusServer.inc:241 +msgid "Maximum recursions" +msgstr "Recursividad máxima" + +#: admin/systems/services/virus/class_goVirusServer.inc:167 +#: admin/systems/services/virus/class_goVirusServer.inc:242 +#: admin/systems/services/virus/goVirusServer.tpl:152 +msgid "Maximum compression ratio" +msgstr "Relación de compresión máxima" + +#: admin/systems/services/virus/class_goVirusServer.inc:168 +#: admin/systems/services/virus/class_goVirusServer.inc:244 +#: admin/systems/services/virus/goVirusServer.tpl:71 +msgid "Checks per day" +msgstr "Comprobaciones por día" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/goVirusServer.tpl:13 +msgid "Database user" +msgstr "Usuario de base de datos" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:245 +#: admin/systems/services/virus/goVirusServer.tpl:33 +msgid "Http proxy URL" +msgstr "URL de proxy HTTP" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:243 +#: admin/systems/services/virus/goVirusServer.tpl:23 +msgid "Database mirror" +msgstr "Espejo de base de datos" + +#: admin/systems/services/virus/class_goVirusServer.inc:232 +#: admin/systems/services/virus/goVirusServer.tpl:84 +msgid "Enable debugging" +msgstr "Activar depuración" + +#: admin/systems/services/virus/class_goVirusServer.inc:233 +#: admin/systems/services/virus/goVirusServer.tpl:92 +msgid "Enable mail scanning" +msgstr "Activar comprobación de correo" + +#: admin/systems/services/virus/class_goVirusServer.inc:234 +#: admin/systems/services/virus/goVirusServer.tpl:117 +msgid "Enable scanning of archives" +msgstr "Activar comprobación de archivos" + +#: admin/systems/services/virus/class_goVirusServer.inc:235 +#: admin/systems/services/virus/goVirusServer.tpl:125 +msgid "Block encrypted archives" +msgstr "Bloquear archivos codificados" + +#: admin/systems/services/virus/class_goVirusServer.inc:239 +msgid "Anti virus user" +msgstr "Usuario antivirus" + +#: admin/systems/services/virus/goVirusServer.tpl:5 +msgid "Generic virus filtering" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:47 +msgid "Select number of maximal threads" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:61 +msgid "Max directory recursions" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:101 +msgid "Archive scanning" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:143 +msgid "Maximum recursion" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:45 +#: admin/systems/services/mail/class_goMailServer.inc:512 +msgid "Mail smtp service (Postfix)" +msgstr "Servicio SMTP de Correo Electrónico (Postfix)" + +#: admin/systems/services/mail/class_goMailServer.inc:600 +#: admin/systems/services/mail/class_goMailServer.inc:711 +msgid "Header size limit" +msgstr "Tamaño limite de cabecera" + +#: admin/systems/services/mail/class_goMailServer.inc:603 +#, fuzzy +msgid "Mailbox size limit" +msgstr "Tamaño máximo del buzón de correo electrónico" + +#: admin/systems/services/mail/class_goMailServer.inc:606 +#, fuzzy +msgid "Message size limit" +msgstr "Tamaño limite de cabecera" + +#: admin/systems/services/mail/class_goMailServer.inc:700 +msgid "Mail smtp (Postfix)" +msgstr "SMTP de Correo Electrónico (Postfix)" + +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Mail smtp - Postfix" +msgstr "SMTP de Correo Electrónico - Postfix" + +#: admin/systems/services/mail/class_goMailServer.inc:709 +#: admin/systems/services/mail/goMailServer.tpl:7 +msgid "Visible full qualified hostname" +msgstr "Ver el nombre de dominio cualificado (fqdn)" + +#: admin/systems/services/mail/class_goMailServer.inc:710 +msgid "Description" +msgstr "Descripción" + +#: admin/systems/services/mail/class_goMailServer.inc:712 +#: admin/systems/services/mail/goMailServer.tpl:26 +msgid "Max mailbox size" +msgstr "Tamaño máximo del buzón de correo electrónico" + +#: admin/systems/services/mail/class_goMailServer.inc:713 +#: admin/systems/services/mail/goMailServer.tpl:35 +msgid "Max message size" +msgstr "Máximo tamaño de mensaje" + +#: admin/systems/services/mail/class_goMailServer.inc:714 +#: admin/systems/services/mail/goMailServer.tpl:91 +msgid "Domains to accept mail for" +msgstr "Dominios de los que se aceptara correo" + +#: admin/systems/services/mail/class_goMailServer.inc:715 +#: admin/systems/services/mail/goMailServer.tpl:60 +msgid "Local networks" +msgstr "Redes locales" + +#: admin/systems/services/mail/class_goMailServer.inc:716 +#: admin/systems/services/mail/goMailServer.tpl:45 +msgid "Relay host" +msgstr "Servidor de reenvío (relay)" + +#: admin/systems/services/mail/class_goMailServer.inc:717 +msgid "Transport table" +msgstr "Tabla de transporte" + +#: admin/systems/services/mail/class_goMailServer.inc:718 +#: admin/systems/services/mail/goMailServer.tpl:149 +msgid "Restrictions for sender" +msgstr "Restricciones de envío" + +#: admin/systems/services/mail/class_goMailServer.inc:719 +#: admin/systems/services/mail/goMailServer.tpl:175 +msgid "Restrictions for recipient" +msgstr "Restricciones de recepción" + +#: admin/systems/services/mail/goMailServer.tpl:11 +msgid "The full qualified host name." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:16 +msgid "Max mail header size" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:21 +msgid "This value specifies the maximal header size." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:21 +#: admin/systems/services/mail/goMailServer.tpl:31 +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "KB" +msgstr "Kb" + +#: admin/systems/services/mail/goMailServer.tpl:31 +msgid "Defines the maximal size of mail box." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "Specify the maximal size of a message." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:50 +msgid "Relay messages to following host:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:62 +msgid "Postfix networks" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:83 +msgid "Domains and routing" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:93 +msgid "Postfix is responsible for the following domains:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:114 +msgid "Transports" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:123 +msgid "Select a transport protocol." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:141 +msgid "Restrictions" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:157 +#: admin/systems/services/mail/goMailServer.tpl:183 +msgid "Restriction filter" +msgstr "" + +#: admin/groups/mail/mail.tpl:35 personal/mail/generic.tpl:30 +#: addons/mailqueue/contents.tpl:73 +msgid "Server" +msgstr "Servidor" + +#: admin/groups/mail/mail.tpl:42 personal/mail/generic.tpl:37 +msgid "Specify the mail server where the user will be hosted on" +msgstr "" + +#: admin/groups/mail/mail.tpl:56 personal/mail/generic.tpl:53 +msgid "Quota usage" +msgstr "" + +#: admin/groups/mail/mail.tpl:60 admin/groups/mail/class_groupMail.inc:847 +#: admin/groups/mail/class_groupMail.inc:972 personal/mail/generic.tpl:57 +#: personal/mail/class_mailAccount.inc:1113 +#: personal/mail/class_mailAccount.inc:1270 +#: personal/mail/class_mailAccount.inc:1422 +msgid "Quota size" +msgstr "Tamaño de cuota" + +#: admin/groups/mail/mail.tpl:73 admin/groups/mail/class_groupMail.inc:974 +#, fuzzy +msgid "Folder type" +msgstr "Tipo de ratón" + +#: admin/groups/mail/mail.tpl:91 +msgid "Reload" +msgstr "Recargar" + +#: admin/groups/mail/mail.tpl:102 admin/groups/mail/paste_mail.tpl:23 +#: personal/mail/copypaste.tpl:25 personal/mail/generic.tpl:73 +msgid "Alternative addresses" +msgstr "" + +#: admin/groups/mail/mail.tpl:107 admin/groups/mail/paste_mail.tpl:24 +#: personal/mail/copypaste.tpl:55 personal/mail/generic.tpl:76 +msgid "List of alternative mail addresses" +msgstr "" + +#: admin/groups/mail/mail.tpl:136 +msgid "IMAP shared folders" +msgstr "" + +#: admin/groups/mail/mail.tpl:143 +msgid "Default permission" +msgstr "" + +#: admin/groups/mail/mail.tpl:145 +msgid "Member permission" +msgstr "" + +#: admin/groups/mail/mail.tpl:163 +msgid "Hide" +msgstr "" + +#: admin/groups/mail/mail.tpl:165 +#, fuzzy +msgid "Show" +msgstr "Mostrar %s" + +#: admin/groups/mail/mail.tpl:187 personal/mail/generic.tpl:303 +msgid "Advanced mail options" +msgstr "" + +#: admin/groups/mail/mail.tpl:193 personal/mail/generic.tpl:309 +msgid "Select if user can only send and receive inside his own domain" +msgstr "" + +#: admin/groups/mail/mail.tpl:195 personal/mail/generic.tpl:311 +msgid "User is only allowed to send and receive local mails" +msgstr "" + +#: admin/groups/mail/mail.tpl:204 admin/groups/mail/paste_mail.tpl:34 +msgid "Forward messages to non group members" +msgstr "" + +#: admin/groups/mail/mail.tpl:213 +#, fuzzy +msgid "Used in all groups" +msgstr "Mostrar grupos funcionales" + +#: admin/groups/mail/mail.tpl:216 +#, fuzzy +msgid "Not used in all groups" +msgstr "Mostrar grupos funcionales" + +#: admin/groups/mail/mail.tpl:234 admin/groups/mail/paste_mail.tpl:42 +#: personal/mail/copypaste.tpl:44 personal/mail/generic.tpl:290 +#: personal/mail/generic.tpl:293 +msgid "Add local" +msgstr "" + +#: admin/groups/mail/paste_mail.tpl:1 personal/mail/copypaste.tpl:1 +#: personal/mail/class_mailAccount.inc:1411 +msgid "Mail settings" +msgstr "Parámetros de correo" + +#: admin/groups/mail/paste_mail.tpl:12 +msgid "Primary mail address for this shared folder" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:6 personal/mail/mail_locals.tpl:7 +msgid "Select addresses to add" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:22 personal/mail/mail_locals.tpl:25 +msgid "Filters" +msgstr "Filtros" + +#: admin/groups/mail/mail_locals.tpl:32 +msgid "Display addresses of department" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:33 personal/mail/mail_locals.tpl:38 +msgid "Choose the department the search will be based on" +msgstr "Escoja el departamento base de la búsqueda" + +#: admin/groups/mail/mail_locals.tpl:42 +msgid "Display addresses matching" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:45 personal/mail/mail_locals.tpl:52 +msgid "Regular expression for matching addresses" +msgstr "Expresiones regulares para buscar direcciones" + +#: admin/groups/mail/mail_locals.tpl:52 personal/mail/mail_locals.tpl:60 +msgid "Display addresses of user" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:55 personal/mail/mail_locals.tpl:64 +msgid "User name of which addresses are shown" +msgstr "" + +#: admin/groups/mail/mail_admins.tpl:4 +msgid "Folder administrators" +msgstr "" + +#: admin/groups/mail/mail_admins.tpl:24 +msgid "Select a specific department" +msgstr "" + +#: admin/groups/mail/mail_admins.tpl:30 +msgid "Choose" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:111 +#: admin/groups/mail/class_groupMail.inc:118 +#: admin/groups/mail/class_groupMail.inc:125 +#: admin/groups/mail/class_groupMail.inc:132 +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:140 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:547 +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:773 +#: admin/groups/mail/class_groupMail.inc:777 +#: admin/groups/mail/class_groupMail.inc:781 +#: admin/groups/mail/class_groupMail.inc:790 +#: personal/mail/class_mailAccount.inc:147 +#: personal/mail/class_mailAccount.inc:154 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:162 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:928 +#: personal/mail/class_mailAccount.inc:996 +#: personal/mail/class_mailAccount.inc:1000 +#: personal/mail/class_mailAccount.inc:1004 +#: personal/mail/class_mailAccount.inc:1018 +#, fuzzy +msgid "Mail error" +msgstr "Servidor de correo" + +#: admin/groups/mail/class_groupMail.inc:111 +#: personal/mail/class_mailAccount.inc:147 +#, fuzzy, php-format +msgid "Cannot read quota settings: %s" +msgstr "¡No se puede escribir en el archivo de revisión!" + +#: admin/groups/mail/class_groupMail.inc:118 +#: personal/mail/class_mailAccount.inc:154 +#, fuzzy, php-format +msgid "Cannot get list of mailboxes: %s" +msgstr "No puedo crear el fichero '%s'." + +#: admin/groups/mail/class_groupMail.inc:125 +#, fuzzy, php-format +msgid "Cannot receive folder types: %s" +msgstr "No se pueden modificar los permisos para '%s'" + +#: admin/groups/mail/class_groupMail.inc:132 +#, fuzzy, php-format +msgid "Cannot receive folder permissions: %s" +msgstr "No se pueden modificar los permisos para '%s'" + +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:773 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:996 +#, php-format +msgid "Mail method cannot connect: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:140 +#: personal/mail/class_mailAccount.inc:162 +#, php-format +msgid "Mailbox '%s' doesn't exists on mail server: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:297 +msgid "" +"Remove shared folder from mail server database when entry gets removed in " +"LDAP" +msgstr "" +"Cuando la entrada sea eliminada de LDAP se eliminara la carpeta compartida " +"del servidor de correo." + +#: admin/groups/mail/class_groupMail.inc:298 +msgid "Remove the shared folder and all its contents after saving this account" +msgstr "" +"Despues de grabar esta cuenta se eliminara la carpeta compartida y todo su " +"contenido" + +#: admin/groups/mail/class_groupMail.inc:341 +#: personal/mail/class_mailAccount.inc:311 +#, fuzzy +msgid "Please select an entry!" +msgstr "Por favor seleccione un servidor de correo valido." + +#: admin/groups/mail/class_groupMail.inc:360 +#: personal/mail/class_mailAccount.inc:329 +#, fuzzy +msgid "Cannot add primary address to the list of forwarders!" +msgstr "" +"Esta intentando añadir una dirección de correo no valida a la lista de " +"reenvío." + +#: admin/groups/mail/class_groupMail.inc:405 +#: personal/mail/class_mailAccount.inc:372 +#, fuzzy, php-format +msgid "Address is already in use by user '%s'." +msgstr "" +"La dirección de correo que esta intentando añadir, ya esta usada por otro " +"usuario" + +#: admin/groups/mail/class_groupMail.inc:547 +#: personal/mail/class_mailAccount.inc:928 +#, fuzzy, php-format +msgid "Cannot remove mailbox: %s" +msgstr "No puedo crear el fichero '%s'." + +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:790 +#, fuzzy, php-format +msgid "Cannot update shared folder permissions: %s" +msgstr "No se pueden modificar los permisos para '%s'" + +#: admin/groups/mail/class_groupMail.inc:649 +#, fuzzy +msgid "New" +msgstr "Nueva ACL" + +#: admin/groups/mail/class_groupMail.inc:777 +#: personal/mail/class_mailAccount.inc:1000 +#, fuzzy, php-format +msgid "Cannot update mailbox: %s" +msgstr "No puedo crear el fichero '%s'." + +#: admin/groups/mail/class_groupMail.inc:781 +#: personal/mail/class_mailAccount.inc:1004 +#, fuzzy, php-format +msgid "Cannot write quota settings: %s" +msgstr "¡No se puede escribir en el archivo de revisión!" + +#: admin/groups/mail/class_groupMail.inc:822 +#, php-format +msgid "" +"The group 'cn' has changed. It can't be changed due to the fact that mail " +"method '%s' relies on it!" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:856 +#: personal/mail/class_mailAccount.inc:1434 +msgid "Mail max size" +msgstr "Tamaño máximo del mensaje" + +#: admin/groups/mail/class_groupMail.inc:864 +msgid "You need to set the maximum mail size in order to reject anything." +msgstr "" +"Necesita introducir un valor máximo de tamaño de mensajes para poder " +"rechazar mensajes." + +#: admin/groups/mail/class_groupMail.inc:868 +#: admin/groups/mail/class_groupMail.inc:973 +#: personal/mail/class_mailAccount.inc:1421 +msgid "Mail server" +msgstr "Servidor de correo" + +#: admin/groups/mail/class_groupMail.inc:964 +msgid "Group mail" +msgstr "Grupo de correo" + +#: admin/groups/mail/class_groupMail.inc:974 +msgid "Kolab" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:975 +msgid "Alternate addresses" +msgstr "Direcciones alternativas" + +#: admin/groups/mail/class_groupMail.inc:976 +msgid "Forwarding addresses" +msgstr "Direcciones de reenvío" + +#: admin/groups/mail/class_groupMail.inc:977 +msgid "Only local" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:978 +msgid "Permissions" +msgstr "Permisos" + +#: personal/mail/copypaste.tpl:13 personal/mail/generic.tpl:267 +msgid "Forward messages to" +msgstr "" + +#: personal/mail/generic.tpl:115 personal/mail/class_mailAccount.inc:1442 +msgid "Use custom sieve script" +msgstr "Usar 'script Sieve' propios" + +#: personal/mail/generic.tpl:115 +msgid "disables all Mail options!" +msgstr "" + +#: personal/mail/generic.tpl:123 +msgid "Sieve Management" +msgstr "" + +#: personal/mail/generic.tpl:144 +msgid "Select if you want to forward mails without getting own copies of them" +msgstr "" + +#: personal/mail/generic.tpl:144 +msgid "No delivery to own mailbox" +msgstr "" + +#: personal/mail/generic.tpl:151 +msgid "" +"Select to automatically response with the vacation message defined below" +msgstr "" + +#: personal/mail/generic.tpl:153 +msgid "Activate vacation message" +msgstr "" + +#: personal/mail/generic.tpl:161 +msgid "from" +msgstr "desde" + +#: personal/mail/generic.tpl:185 +msgid "till" +msgstr "" + +#: personal/mail/generic.tpl:214 +msgid "Select if you want to filter this mails through spamassassin" +msgstr "" + +#: personal/mail/generic.tpl:216 +msgid "Move mails tagged with spam level greater than" +msgstr "" + +#: personal/mail/generic.tpl:219 +msgid "Choose spam level - smaller values are more sensitive" +msgstr "" + +#: personal/mail/generic.tpl:223 +msgid "to folder" +msgstr "" + +#: personal/mail/generic.tpl:235 +msgid "Reject mails bigger than" +msgstr "" + +#: personal/mail/generic.tpl:238 +msgid "MB" +msgstr "Mb" + +#: personal/mail/generic.tpl:245 +#: personal/mail/sieve/class_sieveManagement.inc:502 +#: personal/mail/sieve/class_sieveManagement.inc:720 +#: personal/mail/sieve/templates/element_vacation.tpl:44 +#: personal/mail/sieve/templates/object_container.tpl:31 +#: personal/mail/class_mailAccount.inc:1425 +msgid "Vacation message" +msgstr "Mensaje de ausencia" + +#: personal/mail/generic.tpl:261 +#: personal/mail/sieve/templates/import_script.tpl:12 +#: personal/mail/sieve/templates/edit_frame_base.tpl:7 +msgid "Import" +msgstr "" + +#: personal/mail/mail_locals.tpl:35 +msgid "Select department" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Vacation.inc:148 +msgid "Alternative sender address must be a valid email addresses." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:114 +#: personal/mail/sieve/class_sieveManagement.inc:242 +msgid "Parse failed" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:118 +#: personal/mail/sieve/class_sieveManagement.inc:246 +msgid "Parse successful" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:156 +#, php-format +msgid "" +"The specified mail server '%s' does not exist within the GOsa configuration." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:201 +msgid "No script name specified!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:206 +#, fuzzy +msgid "Please use only lowercase script names!" +msgstr "Por favor introduzca un nombre de script valido." + +#: personal/mail/sieve/class_sieveManagement.inc:212 +msgid "Please use only alphabetical characters in script names!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:218 +#, fuzzy +msgid "Script name already in use!" +msgstr "El nombre introducido ya esta siendo usado" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:349 +#: personal/mail/sieve/class_sieveManagement.inc:398 +#: personal/mail/sieve/class_sieveManagement.inc:402 +#: personal/mail/sieve/class_sieveManagement.inc:433 +#: personal/mail/sieve/class_sieveManagement.inc:519 +#: personal/mail/sieve/class_sieveManagement.inc:770 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#: personal/mail/sieve/class_sieveManagement.inc:1043 +msgid "SIEVE error" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#, php-format +msgid "Cannot log into SIEVE server: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/class_mail-methods-cyrus.inc:468 +#, php-format +msgid "Cannot retrieve SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:349 +#, php-format +msgid "Cannot remove SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:395 +msgid "Edited" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:429 +msgid "Uploaded script is empty!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy +msgid "Internal error" +msgstr "Insertar separador" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy, php-format +msgid "Cannot access temporary file '%s'!" +msgstr "No puedo crear el fichero '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:433 +#, fuzzy, php-format +msgid "Cannot open temporary file '%s'!" +msgstr "No puedo crear el fichero '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:493 +#: personal/mail/sieve/class_sieveManagement.inc:496 +#: personal/mail/sieve/class_sieveManagement.inc:711 +#: personal/mail/sieve/class_sieveManagement.inc:714 +#: personal/mail/sieve/templates/element_keep.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:22 +#: personal/mail/sieve/templates/object_container.tpl:25 +msgid "Keep" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:494 +#: personal/mail/sieve/class_sieveManagement.inc:712 +#: personal/mail/sieve/templates/element_comment.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:23 +msgid "Comment" +msgstr "Comentario" + +#: personal/mail/sieve/class_sieveManagement.inc:495 +#: personal/mail/sieve/class_sieveManagement.inc:713 +msgid "File into" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:497 +#: personal/mail/sieve/class_sieveManagement.inc:715 +#: personal/mail/sieve/templates/element_discard.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:26 +msgid "Discard" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:498 +#: personal/mail/sieve/class_sieveManagement.inc:716 +#: personal/mail/sieve/templates/element_redirect.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:27 +msgid "Redirect" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:499 +#: personal/mail/sieve/class_sieveManagement.inc:717 +#: personal/mail/sieve/templates/object_container.tpl:28 +msgid "Reject" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:500 +#: personal/mail/sieve/class_sieveManagement.inc:718 +#: personal/mail/sieve/templates/object_container.tpl:29 +#: personal/mail/sieve/templates/element_require.tpl:12 +msgid "Require" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:503 +#: personal/mail/sieve/class_sieveManagement.inc:721 +#: personal/mail/sieve/templates/object_container.tpl:32 +#: personal/mail/sieve/class_sieveElement_If.inc:836 +msgid "If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:519 +msgid "Cannot add new element!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:562 +#: personal/mail/sieve/class_sieveManagement.inc:756 +#: personal/mail/sieve/templates/element_else.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:33 +#: personal/mail/sieve/class_sieveElement_If.inc:840 +msgid "Else" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:564 +#: personal/mail/sieve/class_sieveManagement.inc:758 +#: personal/mail/sieve/class_sieveManagement.inc:763 +#: personal/mail/sieve/templates/element_elsif.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:34 +#: personal/mail/sieve/class_sieveElement_If.inc:838 +msgid "Else If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:589 +#: personal/mail/sieve/templates/element_address.tpl:15 +#: personal/mail/sieve/templates/element_address.tpl:113 +msgid "Address" +msgstr "Dirección" + +#: personal/mail/sieve/class_sieveManagement.inc:590 +#: personal/mail/sieve/templates/element_header.tpl:16 +#: personal/mail/sieve/templates/element_header.tpl:106 +msgid "Header" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:591 +#: personal/mail/sieve/templates/element_envelope.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:105 +msgid "Envelope" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:592 +#: personal/mail/sieve/templates/element_size.tpl:4 +#: addons/mailqueue/contents.tpl:74 +msgid "Size" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:593 +#: personal/mail/sieve/templates/element_exists.tpl:8 +msgid "Exists" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:594 +#: personal/mail/sieve/templates/element_allof.tpl:10 +msgid "All of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:595 +#: personal/mail/sieve/templates/element_anyof.tpl:10 +msgid "Any of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:596 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "True" +msgstr "Verdadero" + +#: personal/mail/sieve/class_sieveManagement.inc:597 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "False" +msgstr "Falso" + +#: personal/mail/sieve/class_sieveManagement.inc:634 +#: addons/mailqueue/class_mailqueue.inc:321 addons/mailqueue/contents.tpl:93 +msgid "Active" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:635 +msgid "This script is marked as active" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:640 +msgid "Script length" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:644 +msgid "Remove script" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:653 +msgid "Activate script" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:657 +msgid "Edit script" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:672 +#, php-format +msgid "Can't log into SIEVE server. Server says '%s'." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:770 +msgid "Cannot insert element at the requested position!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#: personal/mail/class_mail-methods-cyrus.inc:556 +#, php-format +msgid "Cannot store SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1045 +msgid "Failed to save sieve script" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:24 +msgid "Please specify a valid email address." +msgstr "Por favor indique una dirección de correo válida." + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:35 +msgid "Place a mail address here" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Comment.inc:21 +msgid "Your comment here" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:1 +msgid "Add a new element" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:2 +msgid "Please select the type of element you want to add" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:11 +#: personal/mail/sieve/templates/select_test_type.tpl:11 +msgid "Continue" +msgstr "Continuar" + +#: personal/mail/sieve/templates/add_element.tpl:13 +msgid "Abort" +msgstr "Cancelar" + +#: personal/mail/sieve/templates/element_discard.tpl:9 +msgid "Discard message" +msgstr "" + +#: personal/mail/sieve/templates/element_if.tpl:4 +#: personal/mail/sieve/class_sieveElement_If.inc:834 +msgid "Condition" +msgstr "" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_address.tpl:116 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_header.tpl:109 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_envelope.tpl:108 +msgid "Not" +msgstr "" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_anyof.tpl:7 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "Inverse match" +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:1 +msgid "Import sieve script" +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:2 +msgid "" +"Please select the sieve script you want to import. Use the import button to " +"import the script or the cancel button to abort." +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:5 +msgid "Script to import" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:18 +#: personal/mail/sieve/templates/element_header.tpl:19 +#: personal/mail/sieve/templates/element_vacation.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:19 +msgid "Normal view" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:25 +#: personal/mail/sieve/templates/element_header.tpl:26 +#: personal/mail/sieve/templates/element_envelope.tpl:26 +msgid "Match type" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:28 +#: personal/mail/sieve/templates/element_address.tpl:51 +#: personal/mail/sieve/templates/element_address.tpl:61 +#: personal/mail/sieve/templates/element_address.tpl:72 +#: personal/mail/sieve/templates/element_address.tpl:121 +#: personal/mail/sieve/templates/element_address.tpl:126 +#: personal/mail/sieve/templates/element_header.tpl:29 +#: personal/mail/sieve/templates/element_header.tpl:52 +#: personal/mail/sieve/templates/element_header.tpl:63 +#: personal/mail/sieve/templates/element_header.tpl:114 +#: personal/mail/sieve/templates/element_header.tpl:119 +#: personal/mail/sieve/templates/element_boolean.tpl:5 +#: personal/mail/sieve/templates/element_envelope.tpl:29 +#: personal/mail/sieve/templates/element_envelope.tpl:52 +#: personal/mail/sieve/templates/element_envelope.tpl:63 +#: personal/mail/sieve/templates/element_envelope.tpl:113 +#: personal/mail/sieve/templates/element_envelope.tpl:118 +msgid "Boolean value" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:36 +#: personal/mail/sieve/templates/element_header.tpl:37 +#: personal/mail/sieve/templates/element_envelope.tpl:37 +msgid "Invert test" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:40 +#: personal/mail/sieve/templates/element_header.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +msgid "Yes" +msgstr "Si" + +#: personal/mail/sieve/templates/element_address.tpl:42 +#: personal/mail/sieve/templates/element_header.tpl:43 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "No" +msgstr "No" + +#: personal/mail/sieve/templates/element_address.tpl:48 +msgid "Part of address that should be used" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:58 +#: personal/mail/sieve/templates/element_header.tpl:49 +#: personal/mail/sieve/templates/element_envelope.tpl:49 +msgid "Comparator" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:69 +#: personal/mail/sieve/templates/element_envelope.tpl:60 +msgid "Operator" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:85 +#: personal/mail/sieve/templates/element_header.tpl:77 +#: personal/mail/sieve/templates/element_envelope.tpl:76 +msgid "Address fields to include" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:89 +#: personal/mail/sieve/templates/element_header.tpl:81 +#: personal/mail/sieve/templates/element_envelope.tpl:80 +msgid "Values to match for" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:118 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_header.tpl:111 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:110 +msgid "-" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:138 +#: personal/mail/sieve/templates/element_header.tpl:131 +#: personal/mail/sieve/templates/element_vacation.tpl:47 +#: personal/mail/sieve/templates/element_envelope.tpl:130 +msgid "Expert view" +msgstr "" + +#: personal/mail/sieve/templates/element_fileinto.tpl:4 +msgid "Move mail into folder" +msgstr "" + +#: personal/mail/sieve/templates/element_fileinto.tpl:8 +msgid "Select from list" +msgstr "" + +#: personal/mail/sieve/templates/element_fileinto.tpl:10 +msgid "Manual selection" +msgstr "" + +#: personal/mail/sieve/templates/element_fileinto.tpl:18 +msgid "Folder" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +msgid "Move this object up one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Up" +msgstr "Arriba" + +#: personal/mail/sieve/templates/object_container_clear.tpl:9 +#: personal/mail/sieve/templates/object_container.tpl:9 +msgid "Move up" +msgstr "Mover arriba" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +msgid "Move this object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Down" +msgstr "Abajo" + +#: personal/mail/sieve/templates/object_container_clear.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:13 +msgid "Move down" +msgstr "Mover abajo" + +#: personal/mail/sieve/templates/object_container_clear.tpl:16 +msgid "Remove this object" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:17 +#: personal/mail/sieve/templates/object_container.tpl:17 +msgid "Remove element" +msgstr "" + +#: personal/mail/sieve/templates/create_script.tpl:2 +msgid "" +"Please enter the name for the new script below. Script names must consist of " +"lower case characters only." +msgstr "" + +#: personal/mail/sieve/templates/create_script.tpl:8 +msgid "Script name" +msgstr "" + +#: personal/mail/sieve/templates/select_test_type.tpl:1 +msgid "Select the type of test you want to add" +msgstr "" + +#: personal/mail/sieve/templates/select_test_type.tpl:3 +msgid "Available test types" +msgstr "" + +#: personal/mail/sieve/templates/element_comment.tpl:8 +msgid "Edit" +msgstr "Editar" + +#: personal/mail/sieve/templates/element_header.tpl:60 +msgid "operator" +msgstr "" + +#: personal/mail/sieve/templates/element_keep.tpl:9 +msgid "Keep message" +msgstr "" + +#: personal/mail/sieve/templates/element_redirect.tpl:18 +msgid "Redirect mail to following recipients" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:13 +msgid "Vacation Message" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:21 +msgid "Release interval" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:25 +msgid "days" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:30 +msgid "Alternative sender addresses" +msgstr "" + +#: personal/mail/sieve/templates/element_boolean.tpl:4 +msgid "Bool" +msgstr "" + +#: personal/mail/sieve/templates/element_boolean.tpl:8 +msgid "update" +msgstr "" + +#: personal/mail/sieve/templates/remove_script.tpl:2 +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Warning" +msgstr "Aviso" + +#: personal/mail/sieve/templates/remove_script.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: personal/mail/sieve/templates/remove_script.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"script in a file. So - if you've done so - press 'Delete' to continue or " +"'Cancel' to abort." +msgstr "" + +#: personal/mail/sieve/templates/object_test_container.tpl:6 +msgid "Add object" +msgstr "" + +#: personal/mail/sieve/templates/object_test_container.tpl:10 +#: personal/mail/sieve/templates/object_container.tpl:16 +msgid "Remove object" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Move object up one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Move object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:21 +msgid "choose element" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:24 +msgid "Fileinto" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:42 +msgid "Add new" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add a new object above this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add element above" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:42 +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add a new object below this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add element below" +msgstr "" + +#: personal/mail/sieve/templates/element_size.tpl:16 +msgid "Select match type" +msgstr "" + +#: personal/mail/sieve/templates/element_size.tpl:20 +msgid "Select value unit" +msgstr "" + +#: personal/mail/sieve/templates/element_stop.tpl:9 +msgid "Stop execution here" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:14 +msgid "Reject mail" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:17 +msgid "This is a multiline text element" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:19 +msgid "This is stored as single string" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:6 +msgid "Export" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:12 +msgid "View structured" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:14 +msgid "View source" +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:1 +msgid "List of sieve scripts" +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:5 +msgid "" +"Connection to the sieve server could not be established, the " +"authentification attribute is empty." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:6 +msgid "" +"Please verify that the attributes uid and mail are not empty and try again." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:12 +msgid "Connection to the sieve server could not be established." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:15 +msgid "Possibly the sieve account has not been created yet." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:19 +msgid "" +"Be careful. All your changes will be saved directly to sieve, if you use the " +"save button below." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:22 +msgid "Create new script" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Require.inc:73 +msgid "Please specify at least one valid requirement." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:21 +msgid "Invalid character found, quotes are not allowed in a reject message." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:37 +msgid "Your reject text here" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +msgid "Complete address" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Default" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:28 +msgid "Domain part" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:29 +msgid "Local part" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Case insensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:34 +msgid "Case sensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:35 +msgid "Numeric" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:39 +msgid "is" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:40 +msgid "regex" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:41 +msgid "contains" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:42 +msgid "matches" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:43 +msgid "count" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:44 +msgid "value is" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:48 +msgid "less than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:49 +msgid "less or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:50 +msgid "equals" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:51 +msgid "greater or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:52 +#: personal/mail/sieve/class_sieveElement_If.inc:726 +#: personal/mail/sieve/class_sieveElement_If.inc:1059 +msgid "greater than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:53 +msgid "not equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:102 +msgid "Can't save empty tests." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:446 +msgid "emtpy" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:447 +msgid "empty" +msgstr "vacío" + +#: personal/mail/sieve/class_sieveElement_If.inc:493 +msgid "Nothing specified right now" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:595 +msgid "Invalid type of address part." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:605 +msgid "Invalid match type given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:621 +msgid "Invalid operator given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:638 +msgid "Please specify a valid operator." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:654 +msgid "" +"Invalid character found in address attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:669 +msgid "" +"Invalid character found in value attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:727 +#: personal/mail/sieve/class_sieveElement_If.inc:1060 +msgid "lower than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:729 +#: personal/mail/sieve/class_sieveElement_If.inc:1062 +msgid "Megabyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:730 +#: personal/mail/sieve/class_sieveElement_If.inc:1063 +msgid "Kilobyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:731 +#: personal/mail/sieve/class_sieveElement_If.inc:1064 +msgid "Bytes" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:745 +msgid "Please select a valid match type in the list box below." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:759 +msgid "Only numeric values are allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:769 +msgid "No valid unit selected" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:876 +msgid "Empty" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:1134 +#: personal/mail/sieve/class_sieveElement_If.inc:1164 +msgid "Click here to add a new test" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:1176 +msgid "Unhandled switch type" +msgstr "" + +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Cannot remove last element!" +msgstr "" + +#: personal/mail/sieve/class_My_Tree.inc:658 +msgid "Require must be the first command in the script." +msgstr "" + +#: personal/mail/class_mailAccount.inc:51 +#: addons/mailqueue/class_mailqueue.inc:7 +msgid "This does something" +msgstr "" + +#: personal/mail/class_mailAccount.inc:635 +#: personal/mail/class_mail-methods.inc:131 +#: personal/mail/class_mail-methods.inc:462 +#, fuzzy +msgid "Configuration error" +msgstr "Se puede escribir en la configuración" + +#: personal/mail/class_mailAccount.inc:635 +#, fuzzy, php-format +msgid "No DESC tag in vacation template '%s'!" +msgstr "En el archivo de ausencia no existe la etiqueta 'DESC':" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "Permission error" +msgstr "Permisos" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "You have no permission to modify these addresses!" +msgstr "No tiene permisos para eliminar este departamento." + +#: personal/mail/class_mailAccount.inc:755 +#: personal/mail/class_mailAccount.inc:758 +#, fuzzy +msgid "unknown" +msgstr "Desconocido" + +#: personal/mail/class_mailAccount.inc:1122 +#: personal/mail/class_mailAccount.inc:1130 +#: personal/mail/class_mailAccount.inc:1279 +#, fuzzy +msgid "Mail reject size" +msgstr "Tamaño máximo del mensaje" + +#: personal/mail/class_mailAccount.inc:1134 +#: personal/mail/class_mailAccount.inc:1286 +#, fuzzy +msgid "Spam folder" +msgstr "Nivel de spam" + +#: personal/mail/class_mailAccount.inc:1140 +#: personal/mail/class_mailAccount.inc:1291 +#, fuzzy +msgid "Vacation interval" +msgstr "Mensaje de ausencia" + +#: personal/mail/class_mailAccount.inc:1415 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/mail/class_mailAccount.inc:1424 +msgid "Add vacation information" +msgstr "Añadir información de ausencia" + +#: personal/mail/class_mailAccount.inc:1427 +msgid "Use spam filter" +msgstr "Usar filtro antispam" + +#: personal/mail/class_mailAccount.inc:1428 +msgid "Spam level" +msgstr "Nivel de spam" + +#: personal/mail/class_mailAccount.inc:1429 +msgid "Spam mail box" +msgstr "Tamaño de la carpeta de spam" + +#: personal/mail/class_mailAccount.inc:1431 +msgid "Sieve management" +msgstr "Administración Sieve" + +#: personal/mail/class_mailAccount.inc:1433 +msgid "Reject due to mailsize" +msgstr "rechazar correos mayores que" + +#: personal/mail/class_mailAccount.inc:1436 +#: personal/mail/class_mailAccount.inc:1441 +msgid "Forwarding address" +msgstr "Direcciones de reenvío" + +#: personal/mail/class_mailAccount.inc:1437 +msgid "Local delivery" +msgstr "Entrega local" + +#: personal/mail/class_mailAccount.inc:1438 +msgid "No delivery to own mailbox " +msgstr "No recibir en su propia cuenta" + +#: personal/mail/class_mailAccount.inc:1439 +msgid "Mail alternative addresses" +msgstr "Direcciones alternativas" + +#: personal/mail/main.inc:138 +msgid "User mail settings" +msgstr "Parametros del correo del usuario" + +#: personal/mail/class_mail-methods.inc:132 +#, php-format +msgid "The configured mail attribute '%s' is unsupported!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:463 +#, php-format +msgid "Mail method '%s' is unknown!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:689 +#: personal/mail/class_mail-methods.inc:690 +#, fuzzy +msgid "None" +msgstr "ninguno" + +#: personal/mail/class_mail-methods.inc:779 +msgid "Unknown" +msgstr "Desconocido" + +#: personal/mail/class_mail-methods.inc:781 +msgid "Unlimited" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:39 +msgid "There are no IMAP compatible mail servers defined!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:44 +msgid "Mail server for this account is invalid!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy +msgid "IMAP error" +msgstr "Servicio IMAP" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, php-format +msgid "Cannot modify IMAP mailbox quota: %s" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:354 +#: personal/mail/class_mail-methods-cyrus.inc:391 +msgid "The module imap_getacl is not implemented!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:563 +#, php-format +msgid "Cannot activate SIEVE script: %s" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:6 +#: addons/mailqueue/class_mailqueue.inc:331 addons/mailqueue/main.inc:56 +msgid "Mail queue" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:205 +msgid "up" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:207 +msgid "down" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:218 +#: addons/mailqueue/class_mailqueue.inc:318 +msgid "All" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:262 +msgid "no limit" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:265 +msgid "hour" +msgstr "hora" + +#: addons/mailqueue/class_mailqueue.inc:267 +msgid "hours" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:319 +msgid "Hold" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:320 +msgid "Un hold" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:322 +msgid "Not active" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:332 +#: addons/mailqueue/class_mailqueue.inc:337 +msgid "Mail queue addon" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:340 +msgid "Unhold all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:341 addons/mailqueue/contents.tpl:38 +msgid "Hold all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:342 +msgid "Delete all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:343 addons/mailqueue/contents.tpl:48 +msgid "Requeue all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:344 +msgid "Unhold message" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:345 addons/mailqueue/contents.tpl:120 +msgid "Hold message" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:346 +msgid "Delete message" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:347 +msgid "Requeue message" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:348 +msgid "Gathering queue data" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:349 +msgid "Get header information" +msgstr "" + +#: addons/mailqueue/contents.tpl:10 addons/mailqueue/contents.tpl:28 +msgid "Search" +msgstr "Buscar" + +#: addons/mailqueue/contents.tpl:11 +msgid "Search for" +msgstr "" + +#: addons/mailqueue/contents.tpl:12 +msgid "Please enter a search string here." +msgstr "" + +#: addons/mailqueue/contents.tpl:14 +msgid "Select a server" +msgstr "" + +#: addons/mailqueue/contents.tpl:18 +msgid "with status" +msgstr "" + +#: addons/mailqueue/contents.tpl:23 +msgid "within the last" +msgstr "" + +#: addons/mailqueue/contents.tpl:33 +msgid "Remove all messages" +msgstr "" + +#: addons/mailqueue/contents.tpl:34 +msgid "Remove all messages from selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:39 +msgid "Hold all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:43 +msgid "Release all messages" +msgstr "" + +#: addons/mailqueue/contents.tpl:44 +msgid "Release all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:49 +msgid "Requeue all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:63 +msgid "Search returned no results" +msgstr "" + +#: addons/mailqueue/contents.tpl:72 +msgid "ID" +msgstr "" + +#: addons/mailqueue/contents.tpl:75 +msgid "Arrival" +msgstr "" + +#: addons/mailqueue/contents.tpl:76 +msgid "Sender" +msgstr "" + +#: addons/mailqueue/contents.tpl:77 +msgid "Recipient" +msgstr "" + +#: addons/mailqueue/contents.tpl:78 +msgid "Status" +msgstr "Estado" + +#: addons/mailqueue/contents.tpl:105 +msgid "delete" +msgstr "eliminar" + +#: addons/mailqueue/contents.tpl:105 +msgid "Delete this message" +msgstr "" + +#: addons/mailqueue/contents.tpl:113 +msgid "unhold" +msgstr "" + +#: addons/mailqueue/contents.tpl:113 +msgid "Release message" +msgstr "" + +#: addons/mailqueue/contents.tpl:120 +msgid "hold" +msgstr "" + +#: addons/mailqueue/contents.tpl:127 +msgid "requeue" +msgstr "" + +#: addons/mailqueue/contents.tpl:127 +msgid "Requeue this message" +msgstr "" + +#: addons/mailqueue/contents.tpl:133 +msgid "header" +msgstr "" + +#: addons/mailqueue/contents.tpl:134 +msgid "Display header of this message" +msgstr "" + +#, fuzzy +#~ msgid "Cannot connect mail method: %s" +#~ msgstr "No puedo crear el fichero '%s'." + +#, fuzzy +#~ msgid "Cannot remove mailbox: %s." +#~ msgstr "No puedo crear el fichero '%s'." + +#, fuzzy +#~ msgid "Cannot update mailbox: %s." +#~ msgstr "No puedo crear el fichero '%s'." + +#, fuzzy +#~ msgid "Cannot write quota settings: %s." +#~ msgstr "¡No se puede escribir en el archivo de revisión!" + +#, fuzzy +#~ msgid "Cannot connect mail method! Error was: %s." +#~ msgstr "No puedo crear el fichero '%s'." + +#, fuzzy +#~ msgid "Cannot remove mailbox! Error was: %s." +#~ msgstr "No puedo crear el fichero '%s'." + +#, fuzzy +#~ msgid "Cannot update mailbox! Error was: %s." +#~ msgstr "No puedo crear el fichero '%s'." + +#, fuzzy +#~ msgid "Specify the mail server where the user will be hosted on" +#~ msgstr "Escoja el departamento base de la búsqueda" + +#~ msgid "not defined" +#~ msgstr "sin definirse" + +#~ msgid "read" +#~ msgstr "leer" + +#~ msgid "post" +#~ msgstr "enviar" + +#~ msgid "external post" +#~ msgstr "envío externo" + +#~ msgid "append" +#~ msgstr "añadir" + +#~ msgid "write" +#~ msgstr "escribir" + +#~ msgid "admin" +#~ msgstr "Administrador" + +#, fuzzy +#~ msgid "mail" +#~ msgstr "Correo Electrónico" + +#, fuzzy +#~ msgid "forward address" +#~ msgstr "Direcciones de reenvío" + +#, fuzzy +#~ msgid "Cannot forward to users own mail address!" +#~ msgstr "Esta intentando añadir una dirección de correo no valida" + +#, fuzzy +#~ msgid "Alternate address" +#~ msgstr "Direcciones alternativas" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#, fuzzy +#~ msgid "Mails" +#~ msgstr "Correo Electrónico" + +#, fuzzy +#~ msgid "Tasks" +#~ msgstr "Días para tareas OX" + +#, fuzzy +#~ msgid "Notes" +#~ msgstr "Ninguno" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "Grupo de correo" + +#~ msgid "" +#~ "Please choose valid permission settings. Default permission can't be " +#~ "emtpy." +#~ msgstr "" +#~ "Por favor seleccione una configuración valida de permisos. No se puede " +#~ "dejar en blanco los permisos por defecto." + +#, fuzzy +#~ msgid "" +#~ "Mail settings cannot be removed while there are delegations configured!" +#~ msgstr "" +#~ "Esta cuenta no puede ser eliminada mientras haya delegaciones " +#~ "configuradas. Elimine primero las delegaciones." + +#, fuzzy +#~ msgid "Waiting for kolab to remove mail properties..." +#~ msgstr "Esperando que Kolab elimine las características de correo." + +#, fuzzy +#~ msgid "" +#~ "Please remove the mail settings first to allow kolab to call its remove " +#~ "methods!" +#~ msgstr "" +#~ "Por favor elimine la cuenta de correo primero, para permitir que Kolab " +#~ "active su sistema de eliminación." + +#, fuzzy +#~ msgid "You have no permission to submit a '%s' command!" +#~ msgstr "No tiene permisos para cambiar su contraseña." + +#~ msgid "Sieve port" +#~ msgstr "Puerto Sieve" + +#~ msgid "There is no mail method '%s' specified in your gosa.conf available." +#~ msgstr "No hay método de correo %s configurado en su 'gosa.conf'." + +#~ msgid "" +#~ "Adding your one of your own addresses to the forwarders makes no sense." +#~ msgstr "" +#~ "Añadir una de sus propias cuentas de correo a la lista de reenvío no " +#~ "tiene sentido." + +#, fuzzy +#~ msgid "alternate address" +#~ msgstr "Direcciones alternativas" + +#~ msgid "Delete" +#~ msgstr "Eliminar" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "This 'dn' has no valid mail extensions." +#~ msgstr "Esta 'dn' no tiene extensiones validas de correo." + +#~ msgid "" +#~ "This account has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Esta cuenta tiene la extensión de de correo activas. Puede desactivarlas " +#~ "pulsando aquí." + +#~ msgid "" +#~ "This account has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Esta cuenta tiene la extensión de correo desactivada.Puede activarla " +#~ "pulsando aquí." + +#, fuzzy +#~ msgid "You're trying to add an invalid email address " +#~ msgstr "" +#~ "Esta intentando añadir una dirección de correo no valida a la lista de " +#~ "reenvío." + +#~ msgid "" +#~ "You're trying to add an invalid email address to the list of alternate " +#~ "addresses." +#~ msgstr "" +#~ "Esta intentando añadir una dirección de correo no valida a la lista de " +#~ "direcciones alternativas" + +#~ msgid "The address you're trying to add is already used by user" +#~ msgstr "" +#~ "La dirección de correo que esta intentando añadir, ya esta usada por otro " +#~ "usuario" + +#~ msgid "The required field 'Primary address' is not set." +#~ msgstr "No ha introducido el campo obligatorio'Cuenta Principal'." + +#~ msgid "Please enter a valid email addres in 'Primary address' field." +#~ msgstr "" +#~ "Por favor introduzca una dirección valida de correo electrónico en el " +#~ "campo 'Cuenta Principal'." + +#~ msgid "The primary address you've entered is already in use." +#~ msgstr "La cuenta principal que ha introducido ya esta en uso." + +#~ msgid "Value in 'Quota size' is not valid." +#~ msgstr "El valor de 'Tamaño de Cuota' no es valido." + +#~ msgid "Please specify a vaild mail size for mails to be rejected." +#~ msgstr "" +#~ "Por favor introduzca un valor válido de tamaño máximo de mensajes que " +#~ "serán rechazados." + +#~ msgid "Please specify a numeric value for header size limit." +#~ msgstr "" +#~ "Por favor introduzca un valor numérico para tamaño máximo de cabecera." + +#~ msgid "Please specify a numeric value for mailbox size limit." +#~ msgstr "Por favor introduzca un valor numérico para tamaño máximo de buzón." + +#~ msgid "Please specify a numeric value for message size limit." +#~ msgstr "" +#~ "Por favor introduzca un valor numérico para tamaño máximo de mensaje." + +#~ msgid "Specified value is not a valid 'trusted network' value." +#~ msgstr "El valor introducido no es un valor válido de 'red de confianza'." + +#~ msgid "Required score must be a numeric value." +#~ msgstr "Puntuación mínima debe ser un valor numérico." + +#~ msgid "Please specify a server identifier." +#~ msgstr "Por favor introduzca un identificador de servidor." + +#~ msgid "Please specify a connect url." +#~ msgstr "Por favor introduzca una url de conexión." + +#~ msgid "Please specify an admin user." +#~ msgstr "Por favor introduzca un usuario administrador." + +#~ msgid "Please specify a password for the admin user." +#~ msgstr "Por favor introduzca una contraseña de Administrador." + +#~ msgid "The imap connect string needs to be in the form '%s'." +#~ msgstr "La cadena de conexión imap necesita estar en la forma '%s'." + +#~ msgid "The sieve port needs to be numeric." +#~ msgstr "El puerto sieve necesita ser un numero." + +#~ msgid "The specified value for '%s' must be a numeric value." +#~ msgstr "El valor introducido para '%s' debe ser una valor numérico." + +#~ msgid "Please specify a valid value for '%s'." +#~ msgstr "Por favor introduzca un valor para '%s' valido." + +#~ msgid "Back" +#~ msgstr "Atrás" + +#~ msgid "This account has no mail extensions." +#~ msgstr "Esta cuenta no tiene la extensión de correo." + +#~ msgid "January" +#~ msgstr "Enero" + +#~ msgid "February" +#~ msgstr "Febrero" + +#~ msgid "March" +#~ msgstr "Marzo" + +#~ msgid "April" +#~ msgstr "Abril" + +#~ msgid "May" +#~ msgstr "Mayo" + +#~ msgid "June" +#~ msgstr "Junio" + +#~ msgid "July" +#~ msgstr "Julio" + +#~ msgid "August" +#~ msgstr "Agosto" + +#~ msgid "September" +#~ msgstr "Septiembre" + +#~ msgid "October" +#~ msgstr "Octubre" + +#~ msgid "November" +#~ msgstr "Noviembre" + +#~ msgid "December" +#~ msgstr "Diciembre" + +#~ msgid "Removing of user/mail account with dn '%s' failed." +#~ msgstr "No se ha podido borrar la cuenta de usuario/correo con dn '%s'." + +#~ msgid "Saving of user/mail account with dn '%s' failed." +#~ msgstr "No se ha podido guardar la cuenta de usuario/correo con dn '%s'." + +#~ msgid "" +#~ "There is no valid mailserver specified, please add one in the system " +#~ "setup." +#~ msgstr "" +#~ "No se ha configurado ningún servidor de correo válido, por favor añada " +#~ "uno en la configuración de sistemas." + +#~ msgid "You specified Spam settings, but there is no Folder specified." +#~ msgstr "" +#~ "Has seleccionado características antispam sin haber seleccionado ninguna " +#~ "carpeta." + +#~ msgid "Time interval to show vacation message is not valid." +#~ msgstr "" +#~ "No es válido el intervalo de fechas para mostrar el mensaje de ausencia." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Pulse en el botón - Editar - para cambiar la información en esta ventana" + +#~ msgid "Saving of server services/anti virus with dn '%s' failed." +#~ msgstr "Ha fallado la grabación del servicio antivirus con dn '%s'." + +#~ msgid "Saving of server services/spamassassin with dn '%s' failed." +#~ msgstr "Ha fallado la grabación del servicio spamassassin con dn '%s'." + +#~ msgid "Saving server services/mail with dn '%s' failed." +#~ msgstr "Ha fallado la grabación de servicio de correo con dn '%s'" + +#~ msgid "Removing of groups/mail with dn '%s' failed." +#~ msgstr "Ha fallado la eliminación de correo/grupos con dn '%s'." + +#~ msgid "Saving of groups/mail with dn '%s' failed." +#~ msgstr "Ha fallado la grabación de correo/grupos con dn '%s'." diff --git a/trunk/gosa-plugins/mail/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mail/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..15ad5d7f2 --- /dev/null +++ b/trunk/gosa-plugins/mail/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,2231 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 09:00+0100\n" +"PO-Revision-Date: 2008-12-21 12:31+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/ogroups/mail/mail.tpl:7 +msgid "Mail distribution list" +msgstr "Liste de distribution" + +#: admin/ogroups/mail/mail.tpl:10 admin/groups/mail/mail.tpl:7 +#: admin/groups/mail/paste_mail.tpl:8 +#: admin/groups/mail/class_groupMail.inc:838 personal/mail/copypaste.tpl:7 +#: personal/mail/generic.tpl:9 personal/mail/class_mailAccount.inc:1086 +msgid "Primary address" +msgstr "Adresse principale" + +#: admin/ogroups/mail/mail.tpl:13 +msgid "Primary mail address for this distribution list" +msgstr "Adresse de messagerie principale pour cette liste de distribution" + +#: admin/ogroups/mail/class_mailogroup.inc:50 +msgid "Remove mail account" +msgstr "Supprimer le compte de messagerie" + +#: admin/ogroups/mail/class_mailogroup.inc:51 +#: admin/ogroups/mail/class_mailogroup.inc:54 +msgid "mail group" +msgstr "messagerie de groupe" + +#: admin/ogroups/mail/class_mailogroup.inc:53 +msgid "Create mail account" +msgstr "Créer un compte de messagerie" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +#: admin/ogroups/mail/class_mailogroup.inc:93 +#: admin/ogroups/mail/class_mailogroup.inc:194 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: admin/groups/mail/class_groupMail.inc:840 +#: admin/groups/mail/class_groupMail.inc:971 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: personal/mail/class_mailAccount.inc:1090 +#: personal/mail/class_mailAccount.inc:1094 +#: personal/mail/class_mailAccount.inc:1105 +#: personal/mail/class_mailAccount.inc:1420 +msgid "Mail address" +msgstr "Adresse de messagerie" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +msgid "your-name@your-domain.com" +msgstr "votre-nom@votre-domaine.com" + +#: admin/ogroups/mail/class_mailogroup.inc:120 +#: admin/ogroups/mail/class_mailogroup.inc:157 +#: admin/systems/services/imap/class_goImapServer.inc:190 +#: admin/systems/services/spam/class_goSpamServer.inc:277 +#: admin/systems/services/virus/class_goVirusServer.inc:154 +#: admin/systems/services/mail/class_goMailServer.inc:582 +#: admin/groups/mail/class_groupMail.inc:531 +#: admin/groups/mail/class_groupMail.inc:760 +#: personal/mail/class_mailAccount.inc:915 +#: personal/mail/class_mailAccount.inc:982 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/ogroups/mail/class_mailogroup.inc:186 +#: admin/ogroups/mail/paste_mail.tpl:4 +#: admin/groups/mail/class_groupMail.inc:276 +#: admin/groups/mail/class_groupMail.inc:278 +#: admin/groups/mail/class_groupMail.inc:279 +#: admin/groups/mail/class_groupMail.inc:284 +#: admin/groups/mail/class_groupMail.inc:286 +#: admin/groups/mail/class_groupMail.inc:287 +#: admin/groups/mail/class_groupMail.inc:828 +#: admin/groups/mail/class_groupMail.inc:963 +#: personal/mail/class_mailAccount.inc:50 +#: personal/mail/class_mailAccount.inc:239 +#: personal/mail/class_mailAccount.inc:247 +#: personal/mail/class_mailAccount.inc:249 +#: personal/mail/class_mailAccount.inc:254 +#: personal/mail/class_mailAccount.inc:256 +#: personal/mail/class_mailAccount.inc:1074 +#: personal/mail/class_mailAccount.inc:1264 +#: personal/mail/class_mailAccount.inc:1410 +msgid "Mail" +msgstr "Messagerie" + +#: admin/ogroups/mail/class_mailogroup.inc:187 +msgid "Mail group" +msgstr "Messagerie de groupe" + +#: admin/ogroups/mail/paste_mail.tpl:7 +msgid "Please enter a mail address" +msgstr "Veuillez entrer une adresse de messagerie" + +#: admin/systems/services/imap/class_goImapServer.inc:48 +msgid "IMAP/POP3 service" +msgstr "Service IMAP/POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:53 +#: admin/systems/services/imap/class_goImapServer.inc:212 +msgid "Repair database" +msgstr "Réparer la base de données" + +#: admin/systems/services/imap/class_goImapServer.inc:100 +msgid "IMAP/POP3 (Cyrus) service" +msgstr "Service IMAP/POP3 (Cyrus)" + +#: admin/systems/services/imap/class_goImapServer.inc:110 +#: admin/systems/services/imap/class_goImapServer.inc:214 +#: admin/systems/services/imap/goImapServer.tpl:7 +msgid "Server identifier" +msgstr "Identifiant du serveur" + +#: admin/systems/services/imap/class_goImapServer.inc:114 +#: admin/systems/services/imap/class_goImapServer.inc:116 +#: admin/systems/services/imap/class_goImapServer.inc:215 +#: admin/systems/services/imap/goImapServer.tpl:16 +msgid "Connect URL" +msgstr "URL de connexion" + +#: admin/systems/services/imap/class_goImapServer.inc:120 +#: admin/systems/services/imap/class_goImapServer.inc:122 +#: admin/systems/services/imap/class_goImapServer.inc:219 +#: admin/systems/services/imap/goImapServer.tpl:43 +msgid "Sieve connect URL" +msgstr "URL de connexion au serveur sieve" + +#: admin/systems/services/imap/class_goImapServer.inc:123 +#, php-format +msgid "Valid options are: %s" +msgstr "Les options valides sont : %s" + +#: admin/systems/services/imap/class_goImapServer.inc:127 +#: admin/systems/services/imap/class_goImapServer.inc:216 +#: admin/systems/services/imap/goImapServer.tpl:25 +msgid "Admin user" +msgstr "Administrateur" + +#: admin/systems/services/imap/class_goImapServer.inc:130 +#: admin/systems/services/imap/goImapServer.tpl:34 +msgid "Password" +msgstr "Mot de passe" + +#: admin/systems/services/imap/class_goImapServer.inc:199 +#: admin/systems/services/imap/class_goImapServer.inc:200 +msgid "IMAP/POP3" +msgstr "IMAP/POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:200 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/imap/class_goImapServer.inc:209 +#: admin/systems/services/virus/class_goVirusServer.inc:228 +msgid "Start" +msgstr "Démarrage" + +#: admin/systems/services/imap/class_goImapServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:229 +#: personal/mail/sieve/class_sieveManagement.inc:501 +#: personal/mail/sieve/class_sieveManagement.inc:719 +#: personal/mail/sieve/templates/object_container.tpl:30 +#: personal/mail/sieve/templates/element_stop.tpl:4 +msgid "Stop" +msgstr "Arrêter" + +#: admin/systems/services/imap/class_goImapServer.inc:211 +#: admin/systems/services/virus/class_goVirusServer.inc:230 +msgid "Restart" +msgstr "Redémarrer" + +#: admin/systems/services/imap/class_goImapServer.inc:217 +msgid "Admin password" +msgstr "Mot de passe administrateur" + +#: admin/systems/services/imap/class_goImapServer.inc:220 +#: admin/systems/services/imap/goImapServer.tpl:61 +msgid "Start IMAP service" +msgstr "Démarrer le service IMAP" + +#: admin/systems/services/imap/class_goImapServer.inc:221 +#: admin/systems/services/imap/goImapServer.tpl:70 +msgid "Start IMAP SSL service" +msgstr "Démarrer le service IMAP/SSL" + +#: admin/systems/services/imap/class_goImapServer.inc:222 +#: admin/systems/services/imap/goImapServer.tpl:79 +msgid "Start POP3 service" +msgstr "Démarre le service POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:223 +#: admin/systems/services/imap/goImapServer.tpl:88 +msgid "Start POP3 SSL service" +msgstr "Démarrer le service POP3/SSL" + +#: admin/systems/services/imap/goImapServer.tpl:1 +#: admin/systems/services/mail/goMailServer.tpl:1 admin/groups/mail/mail.tpl:4 +#: personal/mail/generic.tpl:5 +msgid "Generic" +msgstr "Informations" + +#: admin/systems/services/imap/goImapServer.tpl:99 +#: admin/systems/services/mail/goMailServer.tpl:204 +msgid "The server must be saved before you can use the status flag." +msgstr "" +"Le serveur doit être sauvé avant que vous puissiez utiliser le marqueur de " +"statut." + +#: admin/systems/services/imap/goImapServer.tpl:101 +#: admin/systems/services/mail/goMailServer.tpl:206 +msgid "The service must be saved before you can use the status flag." +msgstr "" +"Le service doit être sauvé avant que vous puissiez utiliser le marqueur de " +"statut." + +#: admin/systems/services/imap/goImapServer.tpl:104 +#: admin/systems/services/mail/goMailServer.tpl:209 +msgid "Set new status" +msgstr "Activer un nouveau statut" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Set status" +msgstr "Activer le statut" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Execute" +msgstr "Exécuter" + +#: admin/systems/services/spam/goSpamServerRule.tpl:6 +msgid "Name" +msgstr "Nom" + +#: admin/systems/services/spam/goSpamServerRule.tpl:14 +msgid "Rule" +msgstr "Règle" + +#: admin/systems/services/spam/class_goSpamServer.inc:42 +#: admin/systems/services/spam/class_goSpamServer.inc:320 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/spam/class_goSpamServer.inc:347 +msgid "Spamassassin" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:143 +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#: admin/groups/mail/class_groupMail.inc:341 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:360 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: personal/mail/sieve/class_sieveManagement.inc:201 +#: personal/mail/sieve/class_sieveManagement.inc:206 +#: personal/mail/sieve/class_sieveManagement.inc:212 +#: personal/mail/sieve/class_sieveManagement.inc:218 +#: personal/mail/sieve/class_sieveManagement.inc:429 +#: personal/mail/sieve/class_My_Tree.inc:660 +#: personal/mail/class_mailAccount.inc:311 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:329 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: addons/mailqueue/class_mailqueue.inc:110 +#: addons/mailqueue/class_mailqueue.inc:144 +#: addons/mailqueue/class_mailqueue.inc:150 +msgid "Error" +msgstr "Erreur" + +#: admin/systems/services/spam/class_goSpamServer.inc:216 +msgid "Trusted network" +msgstr "Réseaux de confiance" + +#: admin/systems/services/spam/class_goSpamServer.inc:287 +msgid "Score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:329 +#: admin/systems/services/spam/goSpamServer.tpl:8 +msgid "Rewrite header" +msgstr "Récrire l'entête" + +#: admin/systems/services/spam/class_goSpamServer.inc:330 +msgid "Trusted networks" +msgstr "Réseaux de confiance" + +#: admin/systems/services/spam/class_goSpamServer.inc:331 +#: admin/systems/services/spam/goSpamServer.tpl:18 +msgid "Required score" +msgstr "Score requis" + +#: admin/systems/services/spam/class_goSpamServer.inc:332 +msgid "Rules" +msgstr "Règles" + +#: admin/systems/services/spam/class_goSpamServer.inc:334 +#: admin/systems/services/spam/goSpamServer.tpl:69 +msgid "Enable use of bayes filtering" +msgstr "Activer l'utilisation de la méthode de filtrage bayesienne" + +#: admin/systems/services/spam/class_goSpamServer.inc:335 +msgid "Enabled bayes auto learning" +msgstr "Activer l'apprentissage automatique pour la méthode bayesienne" + +#: admin/systems/services/spam/class_goSpamServer.inc:336 +#: admin/systems/services/spam/goSpamServer.tpl:75 +msgid "Enable RBL checks" +msgstr "Activer les vérification RBL" + +#: admin/systems/services/spam/class_goSpamServer.inc:337 +#: admin/systems/services/spam/goSpamServer.tpl:86 +msgid "Enable use of Razor" +msgstr "Activer l'utilisation de Razor" + +#: admin/systems/services/spam/class_goSpamServer.inc:338 +#: admin/systems/services/spam/goSpamServer.tpl:89 +msgid "Enable use of DDC" +msgstr "Activer l'utilisation de DDC" + +#: admin/systems/services/spam/class_goSpamServer.inc:339 +#: admin/systems/services/spam/goSpamServer.tpl:92 +msgid "Enable use of Pyzor" +msgstr "Activer l'utilisation de Pyzor" + +#: admin/systems/services/spam/goSpamServer.tpl:22 +msgid "Select required score to tag mail as spam" +msgstr "Sélectionner le score requis pour marquer ce message comme étant un spam" + +#: admin/systems/services/spam/goSpamServer.tpl:48 +#: admin/systems/services/mail/goMailServer.tpl:73 +#: admin/systems/services/mail/goMailServer.tpl:104 +msgid "Remove" +msgstr "Supprimer" + +#: admin/systems/services/spam/goSpamServer.tpl:72 +msgid "Enable bayes auto learning" +msgstr "Activer l'apprentissage automatique pour la méthode bayesienne" + +#: admin/systems/services/virus/class_goVirusServer.inc:45 +#: admin/systems/services/virus/class_goVirusServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:219 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +msgid "Anti virus" +msgstr "Antivirus" + +#: admin/systems/services/virus/class_goVirusServer.inc:163 +#: admin/systems/services/virus/class_goVirusServer.inc:238 +msgid "Maximum directory recursions" +msgstr "Nombre maximal de récursions" + +#: admin/systems/services/virus/class_goVirusServer.inc:164 +#: admin/systems/services/virus/class_goVirusServer.inc:237 +#: admin/systems/services/virus/goVirusServer.tpl:43 +msgid "Maximum threads" +msgstr "Nombre de processus maximum" + +#: admin/systems/services/virus/class_goVirusServer.inc:165 +#: admin/systems/services/virus/class_goVirusServer.inc:240 +#: admin/systems/services/virus/goVirusServer.tpl:134 +msgid "Maximum file size" +msgstr "Taille maximum des fichiers" + +#: admin/systems/services/virus/class_goVirusServer.inc:166 +#: admin/systems/services/virus/class_goVirusServer.inc:241 +msgid "Maximum recursions" +msgstr "Nombre maximum de récursions" + +#: admin/systems/services/virus/class_goVirusServer.inc:167 +#: admin/systems/services/virus/class_goVirusServer.inc:242 +#: admin/systems/services/virus/goVirusServer.tpl:152 +msgid "Maximum compression ratio" +msgstr "Ratio maximum de compression" + +#: admin/systems/services/virus/class_goVirusServer.inc:168 +#: admin/systems/services/virus/class_goVirusServer.inc:244 +#: admin/systems/services/virus/goVirusServer.tpl:71 +msgid "Checks per day" +msgstr "Vérifications par jour" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/goVirusServer.tpl:13 +msgid "Database user" +msgstr "Base de données utilisateur" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:245 +#: admin/systems/services/virus/goVirusServer.tpl:33 +msgid "Http proxy URL" +msgstr "URL du proxy http" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:243 +#: admin/systems/services/virus/goVirusServer.tpl:23 +msgid "Database mirror" +msgstr "Base de données mirroir" + +#: admin/systems/services/virus/class_goVirusServer.inc:232 +#: admin/systems/services/virus/goVirusServer.tpl:84 +msgid "Enable debugging" +msgstr "Activer le deboguage" + +#: admin/systems/services/virus/class_goVirusServer.inc:233 +#: admin/systems/services/virus/goVirusServer.tpl:92 +msgid "Enable mail scanning" +msgstr "Activer la vérification antivirus de la messagerie" + +#: admin/systems/services/virus/class_goVirusServer.inc:234 +#: admin/systems/services/virus/goVirusServer.tpl:117 +msgid "Enable scanning of archives" +msgstr "Activer la vérification des archives" + +#: admin/systems/services/virus/class_goVirusServer.inc:235 +#: admin/systems/services/virus/goVirusServer.tpl:125 +msgid "Block encrypted archives" +msgstr "Bloquer les archives encryptées" + +#: admin/systems/services/virus/class_goVirusServer.inc:239 +msgid "Anti virus user" +msgstr "Utilisateur de l'antivirus" + +#: admin/systems/services/virus/goVirusServer.tpl:5 +msgid "Generic virus filtering" +msgstr "Filtrage antivirus générique" + +#: admin/systems/services/virus/goVirusServer.tpl:47 +msgid "Select number of maximal threads" +msgstr "Sélectionnez le nombre maximal de processus" + +#: admin/systems/services/virus/goVirusServer.tpl:61 +msgid "Max directory recursions" +msgstr "Nombre maximum de récursions dans les répertoires" + +#: admin/systems/services/virus/goVirusServer.tpl:101 +msgid "Archive scanning" +msgstr "Vérification des archives" + +#: admin/systems/services/virus/goVirusServer.tpl:143 +msgid "Maximum recursion" +msgstr "Récursions maximum" + +#: admin/systems/services/mail/class_goMailServer.inc:45 +#: admin/systems/services/mail/class_goMailServer.inc:512 +msgid "Mail smtp service (Postfix)" +msgstr "Serveur de messagerie (SMTP)" + +#: admin/systems/services/mail/class_goMailServer.inc:600 +#: admin/systems/services/mail/class_goMailServer.inc:711 +msgid "Header size limit" +msgstr "Taille maximale des entêtes" + +#: admin/systems/services/mail/class_goMailServer.inc:603 +msgid "Mailbox size limit" +msgstr "Taille maximale des comptes de messagerie" + +#: admin/systems/services/mail/class_goMailServer.inc:606 +msgid "Message size limit" +msgstr "Taille maximale des messages" + +#: admin/systems/services/mail/class_goMailServer.inc:700 +msgid "Mail smtp (Postfix)" +msgstr "Serveur SMTP (Postfix)" + +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Mail smtp - Postfix" +msgstr "Serveur smtp - Postfix" + +#: admin/systems/services/mail/class_goMailServer.inc:709 +#: admin/systems/services/mail/goMailServer.tpl:7 +msgid "Visible full qualified hostname" +msgstr "Nom complet qualifié visible" + +#: admin/systems/services/mail/class_goMailServer.inc:710 +msgid "Description" +msgstr "Description" + +#: admin/systems/services/mail/class_goMailServer.inc:712 +#: admin/systems/services/mail/goMailServer.tpl:26 +msgid "Max mailbox size" +msgstr "Taille maximale des comptes de messagerie" + +#: admin/systems/services/mail/class_goMailServer.inc:713 +#: admin/systems/services/mail/goMailServer.tpl:35 +msgid "Max message size" +msgstr "Taille maximale des messages" + +#: admin/systems/services/mail/class_goMailServer.inc:714 +#: admin/systems/services/mail/goMailServer.tpl:91 +msgid "Domains to accept mail for" +msgstr "Domaine desquels accepter des messages" + +#: admin/systems/services/mail/class_goMailServer.inc:715 +#: admin/systems/services/mail/goMailServer.tpl:60 +msgid "Local networks" +msgstr "Réseau local" + +#: admin/systems/services/mail/class_goMailServer.inc:716 +#: admin/systems/services/mail/goMailServer.tpl:45 +msgid "Relay host" +msgstr "Hôte relais" + +#: admin/systems/services/mail/class_goMailServer.inc:717 +msgid "Transport table" +msgstr "Table des transports" + +#: admin/systems/services/mail/class_goMailServer.inc:718 +#: admin/systems/services/mail/goMailServer.tpl:149 +msgid "Restrictions for sender" +msgstr "Restrictions pour l'envoyeur" + +#: admin/systems/services/mail/class_goMailServer.inc:719 +#: admin/systems/services/mail/goMailServer.tpl:175 +msgid "Restrictions for recipient" +msgstr "Restrictions pour les destinataires" + +#: admin/systems/services/mail/goMailServer.tpl:11 +msgid "The full qualified host name." +msgstr "Le nom complet qualifié de l'hôte." + +#: admin/systems/services/mail/goMailServer.tpl:16 +msgid "Max mail header size" +msgstr "Taille maximum des entêtes des messages" + +#: admin/systems/services/mail/goMailServer.tpl:21 +msgid "This value specifies the maximal header size." +msgstr "Cette valeur spécifie la taille maximum de l'entête des messages." + +#: admin/systems/services/mail/goMailServer.tpl:21 +#: admin/systems/services/mail/goMailServer.tpl:31 +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "KB" +msgstr "KB" + +#: admin/systems/services/mail/goMailServer.tpl:31 +msgid "Defines the maximal size of mail box." +msgstr "Défini la taille maximale du compte de messagerie." + +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "Specify the maximal size of a message." +msgstr "Spécifiez la taille maximale d'un message." + +#: admin/systems/services/mail/goMailServer.tpl:50 +msgid "Relay messages to following host:" +msgstr "Relayer les messages vers l'hôte suivant :" + +#: admin/systems/services/mail/goMailServer.tpl:62 +msgid "Postfix networks" +msgstr "Réseau postfix" + +#: admin/systems/services/mail/goMailServer.tpl:83 +msgid "Domains and routing" +msgstr "Domaines et routages" + +#: admin/systems/services/mail/goMailServer.tpl:93 +msgid "Postfix is responsible for the following domains:" +msgstr "Postfix est responsable pour les domaines suivants :" + +#: admin/systems/services/mail/goMailServer.tpl:114 +msgid "Transports" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:123 +msgid "Select a transport protocol." +msgstr "Sélectionner un protocole de transport" + +#: admin/systems/services/mail/goMailServer.tpl:141 +msgid "Restrictions" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:157 +#: admin/systems/services/mail/goMailServer.tpl:183 +msgid "Restriction filter" +msgstr "Filtre de restriction" + +#: admin/groups/mail/mail.tpl:35 personal/mail/generic.tpl:30 +#: addons/mailqueue/contents.tpl:73 +msgid "Server" +msgstr "Serveur" + +#: admin/groups/mail/mail.tpl:42 personal/mail/generic.tpl:37 +msgid "Specify the mail server where the user will be hosted on" +msgstr "Indiquez le serveur de messagerie de l'utilisateur" + +#: admin/groups/mail/mail.tpl:56 personal/mail/generic.tpl:53 +msgid "Quota usage" +msgstr "Utilisation des Quota" + +#: admin/groups/mail/mail.tpl:60 admin/groups/mail/class_groupMail.inc:847 +#: admin/groups/mail/class_groupMail.inc:972 personal/mail/generic.tpl:57 +#: personal/mail/class_mailAccount.inc:1113 +#: personal/mail/class_mailAccount.inc:1270 +#: personal/mail/class_mailAccount.inc:1422 +msgid "Quota size" +msgstr "Taille du Quota" + +#: admin/groups/mail/mail.tpl:73 admin/groups/mail/class_groupMail.inc:974 +msgid "Folder type" +msgstr "Type de dossier" + +#: admin/groups/mail/mail.tpl:91 +msgid "Reload" +msgstr "Recharger" + +#: admin/groups/mail/mail.tpl:102 admin/groups/mail/paste_mail.tpl:23 +#: personal/mail/copypaste.tpl:25 personal/mail/generic.tpl:73 +msgid "Alternative addresses" +msgstr "Adresses alternatives" + +#: admin/groups/mail/mail.tpl:107 admin/groups/mail/paste_mail.tpl:24 +#: personal/mail/copypaste.tpl:55 personal/mail/generic.tpl:76 +msgid "List of alternative mail addresses" +msgstr "Liste des adresses de messagerie alternatives" + +#: admin/groups/mail/mail.tpl:136 +msgid "IMAP shared folders" +msgstr "Dossier partagé IMAP" + +#: admin/groups/mail/mail.tpl:143 +msgid "Default permission" +msgstr "Permission par défaut" + +#: admin/groups/mail/mail.tpl:145 +msgid "Member permission" +msgstr "Permission des membres" + +#: admin/groups/mail/mail.tpl:163 +msgid "Hide" +msgstr "Cacher" + +#: admin/groups/mail/mail.tpl:165 +msgid "Show" +msgstr "Afficher" + +#: admin/groups/mail/mail.tpl:187 personal/mail/generic.tpl:303 +msgid "Advanced mail options" +msgstr "Options de messagerie avancées" + +#: admin/groups/mail/mail.tpl:193 personal/mail/generic.tpl:309 +msgid "Select if user can only send and receive inside his own domain" +msgstr "" +"Sélectionnez si vous voulez que les utilisateurs puissent envoyer et " +"recevoir des messages uniquement dans son propre domaine" + +#: admin/groups/mail/mail.tpl:195 personal/mail/generic.tpl:311 +msgid "User is only allowed to send and receive local mails" +msgstr "" +"Les utilisateurs ne sont autorisés qu'à envoyer et recevoir des messages " +"locaux" + +#: admin/groups/mail/mail.tpl:204 admin/groups/mail/paste_mail.tpl:34 +msgid "Forward messages to non group members" +msgstr "Transférer les messages vers un membre n'appartenant pas au groupe" + +#: admin/groups/mail/mail.tpl:213 +msgid "Used in all groups" +msgstr "Utiliser dans tout les groupes." + +#: admin/groups/mail/mail.tpl:216 +msgid "Not used in all groups" +msgstr "Pas utilisé dans tout les groupes" + +#: admin/groups/mail/mail.tpl:234 admin/groups/mail/paste_mail.tpl:42 +#: personal/mail/copypaste.tpl:44 personal/mail/generic.tpl:290 +#: personal/mail/generic.tpl:293 +msgid "Add local" +msgstr "Ajouter en local" + +#: admin/groups/mail/paste_mail.tpl:1 personal/mail/copypaste.tpl:1 +#: personal/mail/class_mailAccount.inc:1411 +msgid "Mail settings" +msgstr "Paramètres de messagerie" + +#: admin/groups/mail/paste_mail.tpl:12 +msgid "Primary mail address for this shared folder" +msgstr "Adresse de messagerie principale pour ce répertoire partagé" + +#: admin/groups/mail/mail_locals.tpl:6 personal/mail/mail_locals.tpl:7 +msgid "Select addresses to add" +msgstr "Sélectionner les adresses à ajouter" + +#: admin/groups/mail/mail_locals.tpl:22 personal/mail/mail_locals.tpl:25 +msgid "Filters" +msgstr "Filtres" + +#: admin/groups/mail/mail_locals.tpl:32 +msgid "Display addresses of department" +msgstr "Afficher les adresses du département" + +#: admin/groups/mail/mail_locals.tpl:33 personal/mail/mail_locals.tpl:38 +msgid "Choose the department the search will be based on" +msgstr "Sélectionner le département où sera effectuée la recherche" + +#: admin/groups/mail/mail_locals.tpl:42 +msgid "Display addresses matching" +msgstr "Afficher les adresses correspondantes" + +#: admin/groups/mail/mail_locals.tpl:45 personal/mail/mail_locals.tpl:52 +msgid "Regular expression for matching addresses" +msgstr "Expression régulière pour sélectionner les adresses correspondantes" + +#: admin/groups/mail/mail_locals.tpl:52 personal/mail/mail_locals.tpl:60 +msgid "Display addresses of user" +msgstr "Afficher les adresses de l'utilisateur" + +#: admin/groups/mail/mail_locals.tpl:55 personal/mail/mail_locals.tpl:64 +msgid "User name of which addresses are shown" +msgstr "Utilisateur dont on montre les adresses" + +#: admin/groups/mail/mail_admins.tpl:4 +msgid "Folder administrators" +msgstr "Administrateurs du dossier" + +#: admin/groups/mail/mail_admins.tpl:24 +msgid "Select a specific department" +msgstr "Sélectionner un département" + +#: admin/groups/mail/mail_admins.tpl:30 +msgid "Choose" +msgstr "Choisir" + +#: admin/groups/mail/class_groupMail.inc:111 +#: admin/groups/mail/class_groupMail.inc:118 +#: admin/groups/mail/class_groupMail.inc:125 +#: admin/groups/mail/class_groupMail.inc:132 +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:140 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:547 +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:773 +#: admin/groups/mail/class_groupMail.inc:777 +#: admin/groups/mail/class_groupMail.inc:781 +#: admin/groups/mail/class_groupMail.inc:790 +#: personal/mail/class_mailAccount.inc:147 +#: personal/mail/class_mailAccount.inc:154 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:162 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:928 +#: personal/mail/class_mailAccount.inc:996 +#: personal/mail/class_mailAccount.inc:1000 +#: personal/mail/class_mailAccount.inc:1004 +#: personal/mail/class_mailAccount.inc:1018 +msgid "Mail error" +msgstr "Erreur du serveur de messagerie" + +#: admin/groups/mail/class_groupMail.inc:111 +#: personal/mail/class_mailAccount.inc:147 +#, php-format +msgid "Cannot read quota settings: %s" +msgstr "Impossible de lire les paramètres de quota : %s" + +#: admin/groups/mail/class_groupMail.inc:118 +#: personal/mail/class_mailAccount.inc:154 +#, php-format +msgid "Cannot get list of mailboxes: %s" +msgstr "Impossible d'obtenir la liste des comptes de messagerie : %s" + +#: admin/groups/mail/class_groupMail.inc:125 +#, php-format +msgid "Cannot receive folder types: %s" +msgstr "Impossible d'obtenir les types de dossiers: %s" + +#: admin/groups/mail/class_groupMail.inc:132 +#, php-format +msgid "Cannot receive folder permissions: %s" +msgstr "Impossible d'obtenir les permissions du dossier : %s" + +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:773 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:996 +#, php-format +msgid "Mail method cannot connect: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:140 +#: personal/mail/class_mailAccount.inc:162 +#, php-format +msgid "Mailbox '%s' doesn't exists on mail server: %s" +msgstr "Le compte de messagerie '%s' n'existe pas sur le serveur de messagerie : %s" + +#: admin/groups/mail/class_groupMail.inc:297 +msgid "" +"Remove shared folder from mail server database when entry gets removed in " +"LDAP" +msgstr "" +"Enlever le dossier partagé du serveur de messagerie quand l'entrée est " +"enlevée de l'annuaire LDAP" + +#: admin/groups/mail/class_groupMail.inc:298 +msgid "Remove the shared folder and all its contents after saving this account" +msgstr "" +"Effacer le dossier partagé et tout son contenu après avoir sauvegardé ce " +"compte" + +#: admin/groups/mail/class_groupMail.inc:341 +#: personal/mail/class_mailAccount.inc:311 +msgid "Please select an entry!" +msgstr "Veuillez sélectionner une entrée !" + +#: admin/groups/mail/class_groupMail.inc:360 +#: personal/mail/class_mailAccount.inc:329 +msgid "Cannot add primary address to the list of forwarders!" +msgstr "" +"Impossible d'ajouter l'adresse de messagerie principale à la liste des " +"transfert!" + +#: admin/groups/mail/class_groupMail.inc:405 +#: personal/mail/class_mailAccount.inc:372 +#, php-format +msgid "Address is already in use by user '%s'." +msgstr "L'adresse entrée est déjà utilisée par l'utilisateur '%s'." + +#: admin/groups/mail/class_groupMail.inc:547 +#: personal/mail/class_mailAccount.inc:928 +#, php-format +msgid "Cannot remove mailbox: %s" +msgstr "Impossible de supprimer le compte de messagerie : %s" + +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:790 +#, php-format +msgid "Cannot update shared folder permissions: %s" +msgstr "Impossible de mettre à jour les permissions sur le dossier partagé: %s" + +#: admin/groups/mail/class_groupMail.inc:649 +msgid "New" +msgstr "Nouveau" + +#: admin/groups/mail/class_groupMail.inc:777 +#: personal/mail/class_mailAccount.inc:1000 +#, php-format +msgid "Cannot update mailbox: %s" +msgstr "Impossible de mettre à jour le compte de messagerie : %s" + +#: admin/groups/mail/class_groupMail.inc:781 +#: personal/mail/class_mailAccount.inc:1004 +#, php-format +msgid "Cannot write quota settings: %s" +msgstr "Impossible d'écrire les quotas : %s" + +#: admin/groups/mail/class_groupMail.inc:822 +#, php-format +msgid "" +"The group 'cn' has changed. It can't be changed due to the fact that mail " +"method '%s' relies on it!" +msgstr "Le 'cn' du group a été changé. Il ne peut pas changer car la méthode de messagerie '%s' est dépendante de ce 'cn' !" + +#: admin/groups/mail/class_groupMail.inc:856 +#: personal/mail/class_mailAccount.inc:1434 +msgid "Mail max size" +msgstr "Taille maximale du message" + +#: admin/groups/mail/class_groupMail.inc:864 +msgid "You need to set the maximum mail size in order to reject anything." +msgstr "" +"Il est nécessaire d'indiquer une taille maximale des messages afin de " +"pouvoir en rejeter certains." + +#: admin/groups/mail/class_groupMail.inc:868 +#: admin/groups/mail/class_groupMail.inc:973 +#: personal/mail/class_mailAccount.inc:1421 +msgid "Mail server" +msgstr "Serveur de messagerie" + +#: admin/groups/mail/class_groupMail.inc:964 +msgid "Group mail" +msgstr "Messagerie de groupe" + +#: admin/groups/mail/class_groupMail.inc:974 +msgid "Kolab" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:975 +msgid "Alternate addresses" +msgstr "Adresses alternatives" + +#: admin/groups/mail/class_groupMail.inc:976 +msgid "Forwarding addresses" +msgstr "Transférer les messages vers" + +#: admin/groups/mail/class_groupMail.inc:977 +msgid "Only local" +msgstr "Seulement en local" + +#: admin/groups/mail/class_groupMail.inc:978 +msgid "Permissions" +msgstr "Permissions" + +#: personal/mail/copypaste.tpl:13 personal/mail/generic.tpl:267 +msgid "Forward messages to" +msgstr "Transférer les messages vers" + +#: personal/mail/generic.tpl:115 personal/mail/class_mailAccount.inc:1442 +msgid "Use custom sieve script" +msgstr "Utiliser des scripts sieve personnalisés" + +#: personal/mail/generic.tpl:115 +msgid "disables all Mail options!" +msgstr "désactive toutes les options de messagerie !" + +#: personal/mail/generic.tpl:123 +msgid "Sieve Management" +msgstr "Gestion de Sieve" + +#: personal/mail/generic.tpl:144 +msgid "Select if you want to forward mails without getting own copies of them" +msgstr "" +"Sélectionnez ceci si vous souhaitez relayer les messages sans garder de " +"copie de ceux-ci" + +#: personal/mail/generic.tpl:144 +msgid "No delivery to own mailbox" +msgstr "Aucune distribution des messages dans la boite de l'utilisateur" + +#: personal/mail/generic.tpl:151 +msgid "Select to automatically response with the vacation message defined below" +msgstr "" +"Indiquez la réponse automatique en remplissant le message d'absence ci-" +"dessous" + +#: personal/mail/generic.tpl:153 +msgid "Activate vacation message" +msgstr "Activer la notification d'absence" + +#: personal/mail/generic.tpl:161 +msgid "from" +msgstr "de" + +#: personal/mail/generic.tpl:185 +msgid "till" +msgstr "jusqu'au" + +#: personal/mail/generic.tpl:214 +msgid "Select if you want to filter this mails through spamassassin" +msgstr "Sélectionner ceci si vous voulez que spamassassin filtre les mails" + +#: personal/mail/generic.tpl:216 +msgid "Move mails tagged with spam level greater than" +msgstr "Déplacer les messages ayant un niveau de spam supérieur à" + +#: personal/mail/generic.tpl:219 +msgid "Choose spam level - smaller values are more sensitive" +msgstr "" +"Sélectionnez le niveau de spam - une valeur basse implique une plus grande " +"sélectivité" + +#: personal/mail/generic.tpl:223 +msgid "to folder" +msgstr "vers le dossier" + +#: personal/mail/generic.tpl:235 +msgid "Reject mails bigger than" +msgstr "Rejeter les messages plus gros que" + +#: personal/mail/generic.tpl:238 +msgid "MB" +msgstr "MB" + +#: personal/mail/generic.tpl:245 +#: personal/mail/sieve/class_sieveManagement.inc:502 +#: personal/mail/sieve/class_sieveManagement.inc:720 +#: personal/mail/sieve/templates/element_vacation.tpl:44 +#: personal/mail/sieve/templates/object_container.tpl:31 +#: personal/mail/class_mailAccount.inc:1425 +msgid "Vacation message" +msgstr "Message d'absence" + +#: personal/mail/generic.tpl:261 +#: personal/mail/sieve/templates/import_script.tpl:12 +#: personal/mail/sieve/templates/edit_frame_base.tpl:7 +msgid "Import" +msgstr "Importer" + +#: personal/mail/mail_locals.tpl:35 +msgid "Select department" +msgstr "Sélectionner un département" + +#: personal/mail/sieve/class_sieveElement_Vacation.inc:148 +msgid "Alternative sender address must be a valid email addresses." +msgstr "L'adresse d'envoi alternative doit être une adresse valide." + +#: personal/mail/sieve/class_sieveManagement.inc:114 +#: personal/mail/sieve/class_sieveManagement.inc:242 +msgid "Parse failed" +msgstr "L'analyse à échouée" + +#: personal/mail/sieve/class_sieveManagement.inc:118 +#: personal/mail/sieve/class_sieveManagement.inc:246 +msgid "Parse successful" +msgstr "L'analyse à réussi" + +#: personal/mail/sieve/class_sieveManagement.inc:156 +#, php-format +msgid "The specified mail server '%s' does not exist within the GOsa configuration." +msgstr "" +"Le serveur de messagerie spécifié '%s' n'existe pas dans la configuration de " +"GOsa." + +#: personal/mail/sieve/class_sieveManagement.inc:201 +msgid "No script name specified!" +msgstr "Aucun nom de script fourni !" + +#: personal/mail/sieve/class_sieveManagement.inc:206 +msgid "Please use only lowercase script names!" +msgstr "Veuillez seulement utiliser des nom de script en miniscules !" + +#: personal/mail/sieve/class_sieveManagement.inc:212 +msgid "Please use only alphabetical characters in script names!" +msgstr "Seul des caractères alphabétiques sont permis dans le nom des scripts !" + +#: personal/mail/sieve/class_sieveManagement.inc:218 +msgid "Script name already in use!" +msgstr "Le nom du script est déjà utilisé !" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:349 +#: personal/mail/sieve/class_sieveManagement.inc:398 +#: personal/mail/sieve/class_sieveManagement.inc:402 +#: personal/mail/sieve/class_sieveManagement.inc:433 +#: personal/mail/sieve/class_sieveManagement.inc:519 +#: personal/mail/sieve/class_sieveManagement.inc:770 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#: personal/mail/sieve/class_sieveManagement.inc:1043 +msgid "SIEVE error" +msgstr "Erreur Sieve" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#, php-format +msgid "Cannot log into SIEVE server: %s" +msgstr "Impossible de se connecter au serveur SIEVE. Le serveur répond '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/class_mail-methods-cyrus.inc:468 +#, php-format +msgid "Cannot retrieve SIEVE script: %s" +msgstr "Impossible de récupérer le script SIEVE : %s" + +#: personal/mail/sieve/class_sieveManagement.inc:349 +#, php-format +msgid "Cannot remove SIEVE script: %s" +msgstr "Impossible d'éffacer le script SIEVE : %s" + +#: personal/mail/sieve/class_sieveManagement.inc:395 +msgid "Edited" +msgstr "Édité" + +#: personal/mail/sieve/class_sieveManagement.inc:429 +msgid "Uploaded script is empty!" +msgstr "Le script téléchargé est vide !" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +msgid "Internal error" +msgstr "Erreur interne" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, php-format +msgid "Cannot access temporary file '%s'!" +msgstr "Impossible d'accèder au fichier temporaire '%s' !" + +#: personal/mail/sieve/class_sieveManagement.inc:433 +#, php-format +msgid "Cannot open temporary file '%s'!" +msgstr "Impossible d'ouvrir le fichier temporaire '%s' !" + +#: personal/mail/sieve/class_sieveManagement.inc:493 +#: personal/mail/sieve/class_sieveManagement.inc:496 +#: personal/mail/sieve/class_sieveManagement.inc:711 +#: personal/mail/sieve/class_sieveManagement.inc:714 +#: personal/mail/sieve/templates/element_keep.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:22 +#: personal/mail/sieve/templates/object_container.tpl:25 +msgid "Keep" +msgstr "Garder" + +#: personal/mail/sieve/class_sieveManagement.inc:494 +#: personal/mail/sieve/class_sieveManagement.inc:712 +#: personal/mail/sieve/templates/element_comment.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:23 +msgid "Comment" +msgstr "Commentaires" + +#: personal/mail/sieve/class_sieveManagement.inc:495 +#: personal/mail/sieve/class_sieveManagement.inc:713 +msgid "File into" +msgstr "Classer dans" + +#: personal/mail/sieve/class_sieveManagement.inc:497 +#: personal/mail/sieve/class_sieveManagement.inc:715 +#: personal/mail/sieve/templates/element_discard.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:26 +msgid "Discard" +msgstr "Effacer" + +#: personal/mail/sieve/class_sieveManagement.inc:498 +#: personal/mail/sieve/class_sieveManagement.inc:716 +#: personal/mail/sieve/templates/element_redirect.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:27 +msgid "Redirect" +msgstr "Rediriger" + +#: personal/mail/sieve/class_sieveManagement.inc:499 +#: personal/mail/sieve/class_sieveManagement.inc:717 +#: personal/mail/sieve/templates/object_container.tpl:28 +msgid "Reject" +msgstr "Rejeter" + +#: personal/mail/sieve/class_sieveManagement.inc:500 +#: personal/mail/sieve/class_sieveManagement.inc:718 +#: personal/mail/sieve/templates/object_container.tpl:29 +#: personal/mail/sieve/templates/element_require.tpl:12 +msgid "Require" +msgstr "Requis" + +#: personal/mail/sieve/class_sieveManagement.inc:503 +#: personal/mail/sieve/class_sieveManagement.inc:721 +#: personal/mail/sieve/templates/object_container.tpl:32 +#: personal/mail/sieve/class_sieveElement_If.inc:836 +msgid "If" +msgstr "si" + +#: personal/mail/sieve/class_sieveManagement.inc:519 +msgid "Cannot add new element!" +msgstr "L'ajout d'un nouvel élément à échoué." + +#: personal/mail/sieve/class_sieveManagement.inc:562 +#: personal/mail/sieve/class_sieveManagement.inc:756 +#: personal/mail/sieve/templates/element_else.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:33 +#: personal/mail/sieve/class_sieveElement_If.inc:840 +msgid "Else" +msgstr "Alors" + +#: personal/mail/sieve/class_sieveManagement.inc:564 +#: personal/mail/sieve/class_sieveManagement.inc:758 +#: personal/mail/sieve/class_sieveManagement.inc:763 +#: personal/mail/sieve/templates/element_elsif.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:34 +#: personal/mail/sieve/class_sieveElement_If.inc:838 +msgid "Else If" +msgstr "Si alors" + +#: personal/mail/sieve/class_sieveManagement.inc:589 +#: personal/mail/sieve/templates/element_address.tpl:15 +#: personal/mail/sieve/templates/element_address.tpl:113 +msgid "Address" +msgstr "Adresse" + +#: personal/mail/sieve/class_sieveManagement.inc:590 +#: personal/mail/sieve/templates/element_header.tpl:16 +#: personal/mail/sieve/templates/element_header.tpl:106 +msgid "Header" +msgstr "Entête" + +#: personal/mail/sieve/class_sieveManagement.inc:591 +#: personal/mail/sieve/templates/element_envelope.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:105 +msgid "Envelope" +msgstr "Enveloppe" + +#: personal/mail/sieve/class_sieveManagement.inc:592 +#: personal/mail/sieve/templates/element_size.tpl:4 +#: addons/mailqueue/contents.tpl:74 +msgid "Size" +msgstr "Taille" + +#: personal/mail/sieve/class_sieveManagement.inc:593 +#: personal/mail/sieve/templates/element_exists.tpl:8 +msgid "Exists" +msgstr "Existe" + +#: personal/mail/sieve/class_sieveManagement.inc:594 +#: personal/mail/sieve/templates/element_allof.tpl:10 +msgid "All of" +msgstr "Tout" + +#: personal/mail/sieve/class_sieveManagement.inc:595 +#: personal/mail/sieve/templates/element_anyof.tpl:10 +msgid "Any of" +msgstr "n'importe lequel de " + +#: personal/mail/sieve/class_sieveManagement.inc:596 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "True" +msgstr "Vrai" + +#: personal/mail/sieve/class_sieveManagement.inc:597 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "False" +msgstr "Faux" + +#: personal/mail/sieve/class_sieveManagement.inc:634 +#: addons/mailqueue/class_mailqueue.inc:321 addons/mailqueue/contents.tpl:93 +msgid "Active" +msgstr "Actif" + +#: personal/mail/sieve/class_sieveManagement.inc:635 +msgid "This script is marked as active" +msgstr "Ce script est marqué actif" + +#: personal/mail/sieve/class_sieveManagement.inc:640 +msgid "Script length" +msgstr "Longueur du script" + +#: personal/mail/sieve/class_sieveManagement.inc:644 +msgid "Remove script" +msgstr "Effacer un script" + +#: personal/mail/sieve/class_sieveManagement.inc:653 +msgid "Activate script" +msgstr "Activer un script" + +#: personal/mail/sieve/class_sieveManagement.inc:657 +msgid "Edit script" +msgstr "Éditer un script" + +#: personal/mail/sieve/class_sieveManagement.inc:672 +#, php-format +msgid "Can't log into SIEVE server. Server says '%s'." +msgstr "Impossible de se connecter au serveur SIEVE. Le serveur répond '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:770 +msgid "Cannot insert element at the requested position!" +msgstr "Impossible d'ajouter l'élément spécifié à la position choisie !" + +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#: personal/mail/class_mail-methods-cyrus.inc:556 +#, php-format +msgid "Cannot store SIEVE script: %s" +msgstr "Impossible de stocker le script SIEVE : %s" + +#: personal/mail/sieve/class_sieveManagement.inc:1045 +msgid "Failed to save sieve script" +msgstr "Impossible de sauver le script sieve" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:24 +msgid "Please specify a valid email address." +msgstr "Veuillez indiquer une adresse de messagerie valide." + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:35 +msgid "Place a mail address here" +msgstr "Veuillez entrer une adresse de messagerie ici" + +#: personal/mail/sieve/class_sieveElement_Comment.inc:21 +msgid "Your comment here" +msgstr "Votre commentaire ici" + +#: personal/mail/sieve/templates/add_element.tpl:1 +msgid "Add a new element" +msgstr "Ajouter un nouvel élément" + +#: personal/mail/sieve/templates/add_element.tpl:2 +msgid "Please select the type of element you want to add" +msgstr "Veuillez sélectionner le type d'élément que vous voulez ajouter" + +#: personal/mail/sieve/templates/add_element.tpl:11 +#: personal/mail/sieve/templates/select_test_type.tpl:11 +msgid "Continue" +msgstr "Continuer" + +#: personal/mail/sieve/templates/add_element.tpl:13 +msgid "Abort" +msgstr "Annuler" + +#: personal/mail/sieve/templates/element_discard.tpl:9 +msgid "Discard message" +msgstr "Effacer le message" + +#: personal/mail/sieve/templates/element_if.tpl:4 +#: personal/mail/sieve/class_sieveElement_If.inc:834 +msgid "Condition" +msgstr "" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_address.tpl:116 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_header.tpl:109 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_envelope.tpl:108 +msgid "Not" +msgstr "Non" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_anyof.tpl:7 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "Inverse match" +msgstr "Correspondance inversée" + +#: personal/mail/sieve/templates/import_script.tpl:1 +msgid "Import sieve script" +msgstr "Importez un script sieve" + +#: personal/mail/sieve/templates/import_script.tpl:2 +msgid "" +"Please select the sieve script you want to import. Use the import button to " +"import the script or the cancel button to abort." +msgstr "" +"Veuillez sélectionner le script sieve que vous voulez importer. Utilisez le " +"bouton 'importer' pour importer le script et le bouton 'annuler' pour " +"annuler l'opération." + +#: personal/mail/sieve/templates/import_script.tpl:5 +msgid "Script to import" +msgstr "Script à importer" + +#: personal/mail/sieve/templates/element_address.tpl:18 +#: personal/mail/sieve/templates/element_header.tpl:19 +#: personal/mail/sieve/templates/element_vacation.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:19 +msgid "Normal view" +msgstr "Vue normale" + +#: personal/mail/sieve/templates/element_address.tpl:25 +#: personal/mail/sieve/templates/element_header.tpl:26 +#: personal/mail/sieve/templates/element_envelope.tpl:26 +msgid "Match type" +msgstr "Type de correspondance" + +#: personal/mail/sieve/templates/element_address.tpl:28 +#: personal/mail/sieve/templates/element_address.tpl:51 +#: personal/mail/sieve/templates/element_address.tpl:61 +#: personal/mail/sieve/templates/element_address.tpl:72 +#: personal/mail/sieve/templates/element_address.tpl:121 +#: personal/mail/sieve/templates/element_address.tpl:126 +#: personal/mail/sieve/templates/element_header.tpl:29 +#: personal/mail/sieve/templates/element_header.tpl:52 +#: personal/mail/sieve/templates/element_header.tpl:63 +#: personal/mail/sieve/templates/element_header.tpl:114 +#: personal/mail/sieve/templates/element_header.tpl:119 +#: personal/mail/sieve/templates/element_boolean.tpl:5 +#: personal/mail/sieve/templates/element_envelope.tpl:29 +#: personal/mail/sieve/templates/element_envelope.tpl:52 +#: personal/mail/sieve/templates/element_envelope.tpl:63 +#: personal/mail/sieve/templates/element_envelope.tpl:113 +#: personal/mail/sieve/templates/element_envelope.tpl:118 +msgid "Boolean value" +msgstr "Valeur booléenne" + +#: personal/mail/sieve/templates/element_address.tpl:36 +#: personal/mail/sieve/templates/element_header.tpl:37 +#: personal/mail/sieve/templates/element_envelope.tpl:37 +msgid "Invert test" +msgstr "Test inversé" + +#: personal/mail/sieve/templates/element_address.tpl:40 +#: personal/mail/sieve/templates/element_header.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +msgid "Yes" +msgstr "Oui" + +#: personal/mail/sieve/templates/element_address.tpl:42 +#: personal/mail/sieve/templates/element_header.tpl:43 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "No" +msgstr "Non" + +#: personal/mail/sieve/templates/element_address.tpl:48 +msgid "Part of address that should be used" +msgstr "Partie de l'adresse qui doit être utilisée" + +#: personal/mail/sieve/templates/element_address.tpl:58 +#: personal/mail/sieve/templates/element_header.tpl:49 +#: personal/mail/sieve/templates/element_envelope.tpl:49 +msgid "Comparator" +msgstr "Comparaison" + +#: personal/mail/sieve/templates/element_address.tpl:69 +#: personal/mail/sieve/templates/element_envelope.tpl:60 +msgid "Operator" +msgstr "Opérateur" + +#: personal/mail/sieve/templates/element_address.tpl:85 +#: personal/mail/sieve/templates/element_header.tpl:77 +#: personal/mail/sieve/templates/element_envelope.tpl:76 +msgid "Address fields to include" +msgstr "Adresses à ajouter " + +#: personal/mail/sieve/templates/element_address.tpl:89 +#: personal/mail/sieve/templates/element_header.tpl:81 +#: personal/mail/sieve/templates/element_envelope.tpl:80 +msgid "Values to match for" +msgstr "Valeur de correspondances" + +#: personal/mail/sieve/templates/element_address.tpl:118 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_header.tpl:111 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:110 +msgid "-" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:138 +#: personal/mail/sieve/templates/element_header.tpl:131 +#: personal/mail/sieve/templates/element_vacation.tpl:47 +#: personal/mail/sieve/templates/element_envelope.tpl:130 +msgid "Expert view" +msgstr "Mode expert" + +#: personal/mail/sieve/templates/element_fileinto.tpl:4 +msgid "Move mail into folder" +msgstr "Bouger les messages vers le dossier" + +#: personal/mail/sieve/templates/element_fileinto.tpl:8 +msgid "Select from list" +msgstr "Sélectionnez depuis la liste" + +#: personal/mail/sieve/templates/element_fileinto.tpl:10 +msgid "Manual selection" +msgstr "Sélection manuelle" + +#: personal/mail/sieve/templates/element_fileinto.tpl:18 +msgid "Folder" +msgstr "Dossier" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +msgid "Move this object up one position" +msgstr "Monter cet objet d'une position" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Up" +msgstr "Au dessus" + +#: personal/mail/sieve/templates/object_container_clear.tpl:9 +#: personal/mail/sieve/templates/object_container.tpl:9 +msgid "Move up" +msgstr "En haut" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +msgid "Move this object down one position" +msgstr "Descendre cet objet d'une position" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Down" +msgstr "En bas" + +#: personal/mail/sieve/templates/object_container_clear.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:13 +msgid "Move down" +msgstr "En bas" + +#: personal/mail/sieve/templates/object_container_clear.tpl:16 +msgid "Remove this object" +msgstr "Supprimer cet objet" + +#: personal/mail/sieve/templates/object_container_clear.tpl:17 +#: personal/mail/sieve/templates/object_container.tpl:17 +msgid "Remove element" +msgstr "Supprimer cet élément" + +#: personal/mail/sieve/templates/create_script.tpl:2 +msgid "" +"Please enter the name for the new script below. Script names must consist of " +"lower case characters only." +msgstr "" +"Veuillez entrer le nom du nouveau script ci dessous. Les nom de scripts sont " +"composé de caractères en minuscule uniquement." + +#: personal/mail/sieve/templates/create_script.tpl:8 +msgid "Script name" +msgstr "Nom du script" + +#: personal/mail/sieve/templates/select_test_type.tpl:1 +msgid "Select the type of test you want to add" +msgstr "Sélectionner le type de test que vous voulez ajouter" + +#: personal/mail/sieve/templates/select_test_type.tpl:3 +msgid "Available test types" +msgstr "Type de tests disponibles" + +#: personal/mail/sieve/templates/element_comment.tpl:8 +msgid "Edit" +msgstr "Editer" + +#: personal/mail/sieve/templates/element_header.tpl:60 +msgid "operator" +msgstr "opérateur" + +#: personal/mail/sieve/templates/element_keep.tpl:9 +msgid "Keep message" +msgstr "Garder le message" + +#: personal/mail/sieve/templates/element_redirect.tpl:18 +msgid "Redirect mail to following recipients" +msgstr "Rediriger les messages vers les personnes suivantes" + +#: personal/mail/sieve/templates/element_vacation.tpl:13 +msgid "Vacation Message" +msgstr "Message d'absence" + +#: personal/mail/sieve/templates/element_vacation.tpl:21 +msgid "Release interval" +msgstr "Intervalle de temps" + +#: personal/mail/sieve/templates/element_vacation.tpl:25 +msgid "days" +msgstr "jours" + +#: personal/mail/sieve/templates/element_vacation.tpl:30 +msgid "Alternative sender addresses" +msgstr "Adresses alternatives pour l'envoi" + +#: personal/mail/sieve/templates/element_boolean.tpl:4 +msgid "Bool" +msgstr "Booléen" + +#: personal/mail/sieve/templates/element_boolean.tpl:8 +msgid "update" +msgstr "mise à Jour" + +#: personal/mail/sieve/templates/remove_script.tpl:2 +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Warning" +msgstr "Avertissement" + +#: personal/mail/sieve/templates/remove_script.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Veuillez vous assurez que vous voulez effectuer cette opération. Toutes les " +"données seront perdues étant donné qu'il est impossible pour GOsa de " +"récupérer vos données." + +#: personal/mail/sieve/templates/remove_script.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"script in a file. So - if you've done so - press 'Delete' to continue or " +"'Cancel' to abort." +msgstr "" +"La meilleure chose à faire avant de réaliser cette action serait de sauver " +"le script dans un fichier. Donc - si vous avez fait cela - appuyez sur " +"'Delete' pour continuer ou 'Annuler' pour abandonner." + +#: personal/mail/sieve/templates/object_test_container.tpl:6 +msgid "Add object" +msgstr "Ajouter un objet" + +#: personal/mail/sieve/templates/object_test_container.tpl:10 +#: personal/mail/sieve/templates/object_container.tpl:16 +msgid "Remove object" +msgstr "Enlever un objet" + +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Move object up one position" +msgstr "Bouger l'objet d'un position vers le haut" + +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Move object down one position" +msgstr "Bouger l'objet d'une position vers le bas" + +#: personal/mail/sieve/templates/object_container.tpl:21 +msgid "choose element" +msgstr "choisir un élément" + +#: personal/mail/sieve/templates/object_container.tpl:24 +msgid "Fileinto" +msgstr "Classer dans" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:42 +msgid "Add new" +msgstr "Ajouter un nouveau" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add a new object above this one." +msgstr "Ajouter un objet au dessus de celui-ci." + +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add element above" +msgstr "Ajouter un élément au dessus" + +#: personal/mail/sieve/templates/object_container.tpl:42 +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add a new object below this one." +msgstr "Ajouter un objet en dessous de celui ci." + +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add element below" +msgstr "Ajouter un élément en dessous" + +#: personal/mail/sieve/templates/element_size.tpl:16 +msgid "Select match type" +msgstr "Sélectionnez le type de correspondance" + +#: personal/mail/sieve/templates/element_size.tpl:20 +msgid "Select value unit" +msgstr "Choisir l'unité de valeur " + +#: personal/mail/sieve/templates/element_stop.tpl:9 +msgid "Stop execution here" +msgstr "Arrêter l'exécution ici" + +#: personal/mail/sieve/templates/element_reject.tpl:14 +msgid "Reject mail" +msgstr "Rejeter les messages" + +#: personal/mail/sieve/templates/element_reject.tpl:17 +msgid "This is a multiline text element" +msgstr "C'est un élément de texte multiligne" + +#: personal/mail/sieve/templates/element_reject.tpl:19 +msgid "This is stored as single string" +msgstr "Ceci est stocké comme une simple chaîne de caractère" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:6 +msgid "Export" +msgstr "Exporter" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:12 +msgid "View structured" +msgstr "Vue structurée" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:14 +msgid "View source" +msgstr "Voir la source" + +#: personal/mail/sieve/templates/management.tpl:1 +msgid "List of sieve scripts" +msgstr "Liste des scripts sieve" + +#: personal/mail/sieve/templates/management.tpl:5 +msgid "" +"Connection to the sieve server could not be established, the " +"authentification attribute is empty." +msgstr "" +"La connexion au serveur sieve n'a pas pu être établie, l'attribut " +"d'authentification est vide." + +#: personal/mail/sieve/templates/management.tpl:6 +msgid "Please verify that the attributes uid and mail are not empty and try again." +msgstr "" +"Veuillez vérifier que les attributs uid et mail ne sont pas vide et " +"réessayer." + +#: personal/mail/sieve/templates/management.tpl:12 +msgid "Connection to the sieve server could not be established." +msgstr "La connexion au serveur sieve ne peut pas être établie." + +#: personal/mail/sieve/templates/management.tpl:15 +msgid "Possibly the sieve account has not been created yet." +msgstr "Probablement que le compte sieve n'a pas encore été crée." + +#: personal/mail/sieve/templates/management.tpl:19 +msgid "" +"Be careful. All your changes will be saved directly to sieve, if you use the " +"save button below." +msgstr "" +"Faites attention. Tout les changement seront sauvés immédiatement lorsque " +"vous cliquerez sur le bouton sauver." + +#: personal/mail/sieve/templates/management.tpl:22 +msgid "Create new script" +msgstr "Création d'un nouveau script" + +#: personal/mail/sieve/class_sieveElement_Require.inc:73 +msgid "Please specify at least one valid requirement." +msgstr "Veuillez spécifié au moins un paramètre valide." + +#: personal/mail/sieve/class_sieveElement_Reject.inc:21 +msgid "Invalid character found, quotes are not allowed in a reject message." +msgstr "" +"Caractère non valide trouvé, les guillemets ne sont pas permis dans un " +"message de rejet." + +#: personal/mail/sieve/class_sieveElement_Reject.inc:37 +msgid "Your reject text here" +msgstr "Votre texte de rejet ici" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +msgid "Complete address" +msgstr "Adresse complète" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Default" +msgstr "Défaut" + +#: personal/mail/sieve/class_sieveElement_If.inc:28 +msgid "Domain part" +msgstr "Domaine internet" + +#: personal/mail/sieve/class_sieveElement_If.inc:29 +msgid "Local part" +msgstr "Partie locale" + +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Case insensitive" +msgstr "Insensible majuscule, minuscule" + +#: personal/mail/sieve/class_sieveElement_If.inc:34 +msgid "Case sensitive" +msgstr "Sensible majuscule, minuscule" + +#: personal/mail/sieve/class_sieveElement_If.inc:35 +msgid "Numeric" +msgstr "Numérique" + +#: personal/mail/sieve/class_sieveElement_If.inc:39 +msgid "is" +msgstr "est" + +#: personal/mail/sieve/class_sieveElement_If.inc:40 +msgid "regex" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:41 +msgid "contains" +msgstr "contient" + +#: personal/mail/sieve/class_sieveElement_If.inc:42 +msgid "matches" +msgstr "correspond" + +#: personal/mail/sieve/class_sieveElement_If.inc:43 +msgid "count" +msgstr "nombre" + +#: personal/mail/sieve/class_sieveElement_If.inc:44 +msgid "value is" +msgstr "la valeur est" + +#: personal/mail/sieve/class_sieveElement_If.inc:48 +msgid "less than" +msgstr "moins de " + +#: personal/mail/sieve/class_sieveElement_If.inc:49 +msgid "less or equal" +msgstr "plus petit ou égal" + +#: personal/mail/sieve/class_sieveElement_If.inc:50 +msgid "equals" +msgstr "égal" + +#: personal/mail/sieve/class_sieveElement_If.inc:51 +msgid "greater or equal" +msgstr "plus grand ou égal" + +#: personal/mail/sieve/class_sieveElement_If.inc:52 +#: personal/mail/sieve/class_sieveElement_If.inc:726 +#: personal/mail/sieve/class_sieveElement_If.inc:1059 +msgid "greater than" +msgstr "plus grand que" + +#: personal/mail/sieve/class_sieveElement_If.inc:53 +msgid "not equal" +msgstr "pas égal" + +#: personal/mail/sieve/class_sieveElement_If.inc:102 +msgid "Can't save empty tests." +msgstr "Impossible de sauver des tests vides." + +#: personal/mail/sieve/class_sieveElement_If.inc:446 +msgid "emtpy" +msgstr "vide" + +#: personal/mail/sieve/class_sieveElement_If.inc:447 +msgid "empty" +msgstr "vide" + +#: personal/mail/sieve/class_sieveElement_If.inc:493 +msgid "Nothing specified right now" +msgstr "Rien de spécifié pour l'instant" + +#: personal/mail/sieve/class_sieveElement_If.inc:595 +msgid "Invalid type of address part." +msgstr "Type non valide dans la partie adresse." + +#: personal/mail/sieve/class_sieveElement_If.inc:605 +msgid "Invalid match type given." +msgstr "Type non valide pour la recherche" + +#: personal/mail/sieve/class_sieveElement_If.inc:621 +msgid "Invalid operator given." +msgstr "Type non valide comme opérateur." + +#: personal/mail/sieve/class_sieveElement_If.inc:638 +msgid "Please specify a valid operator." +msgstr "Veuillez spécifier un opérateur valide." + +#: personal/mail/sieve/class_sieveElement_If.inc:654 +msgid "Invalid character found in address attribute. Quotes are not allowed here." +msgstr "Caractère non valide dans l'adresse. Les guillemets sont interdits ici." + +#: personal/mail/sieve/class_sieveElement_If.inc:669 +msgid "Invalid character found in value attribute. Quotes are not allowed here." +msgstr "" +"Caractère non valide trouvé dans l'attribut. Les guillemets ne sont pas " +"permis ici." + +#: personal/mail/sieve/class_sieveElement_If.inc:727 +#: personal/mail/sieve/class_sieveElement_If.inc:1060 +msgid "lower than" +msgstr "plus petit que" + +#: personal/mail/sieve/class_sieveElement_If.inc:729 +#: personal/mail/sieve/class_sieveElement_If.inc:1062 +msgid "Megabyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:730 +#: personal/mail/sieve/class_sieveElement_If.inc:1063 +msgid "Kilobyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:731 +#: personal/mail/sieve/class_sieveElement_If.inc:1064 +msgid "Bytes" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:745 +msgid "Please select a valid match type in the list box below." +msgstr "" +"Veuillez sélectionner un type de correspondance valide dans la liste ci " +"dessous." + +#: personal/mail/sieve/class_sieveElement_If.inc:759 +msgid "Only numeric values are allowed here." +msgstr "Seul des chiffres sont permis ici." + +#: personal/mail/sieve/class_sieveElement_If.inc:769 +msgid "No valid unit selected" +msgstr "Pas d'unité valide sélectionnée" + +#: personal/mail/sieve/class_sieveElement_If.inc:876 +msgid "Empty" +msgstr "Vide" + +#: personal/mail/sieve/class_sieveElement_If.inc:1134 +#: personal/mail/sieve/class_sieveElement_If.inc:1164 +msgid "Click here to add a new test" +msgstr "Cliquez ici pour vous ajouter un nouveau test" + +#: personal/mail/sieve/class_sieveElement_If.inc:1176 +msgid "Unhandled switch type" +msgstr "Type de switch non pris en charge" + +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Cannot remove last element!" +msgstr "Impossible d'enlever le dernier élément !" + +#: personal/mail/sieve/class_My_Tree.inc:658 +msgid "Require must be the first command in the script." +msgstr "Require doit être la première commande de ce script." + +#: personal/mail/class_mailAccount.inc:51 +#: addons/mailqueue/class_mailqueue.inc:7 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/mail/class_mailAccount.inc:635 +#: personal/mail/class_mail-methods.inc:131 +#: personal/mail/class_mail-methods.inc:462 +msgid "Configuration error" +msgstr "Erreur de configuration" + +#: personal/mail/class_mailAccount.inc:635 +#, php-format +msgid "No DESC tag in vacation template '%s'!" +msgstr "Pas de drapeau DESC dans le message d'absence '%s' !" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +msgid "Permission error" +msgstr "Erreur de permissions" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +msgid "You have no permission to modify these addresses!" +msgstr "Vous n'avez pas les droits nécessaires pour modifier ces adresses !" + +#: personal/mail/class_mailAccount.inc:755 +#: personal/mail/class_mailAccount.inc:758 +msgid "unknown" +msgstr "inconnu" + +#: personal/mail/class_mailAccount.inc:1122 +#: personal/mail/class_mailAccount.inc:1130 +#: personal/mail/class_mailAccount.inc:1279 +msgid "Mail reject size" +msgstr "Taille maximale autorisée du message" + +#: personal/mail/class_mailAccount.inc:1134 +#: personal/mail/class_mailAccount.inc:1286 +msgid "Spam folder" +msgstr "Dossier spam" + +#: personal/mail/class_mailAccount.inc:1140 +#: personal/mail/class_mailAccount.inc:1291 +msgid "Vacation interval" +msgstr "Intervalle du message d'absence" + +#: personal/mail/class_mailAccount.inc:1415 +msgid "My account" +msgstr "Mon Compte" + +#: personal/mail/class_mailAccount.inc:1424 +msgid "Add vacation information" +msgstr "Ajouter un message d'absence" + +#: personal/mail/class_mailAccount.inc:1427 +msgid "Use spam filter" +msgstr "Utiliser le filtre antispam" + +#: personal/mail/class_mailAccount.inc:1428 +msgid "Spam level" +msgstr "Niveau de spam" + +#: personal/mail/class_mailAccount.inc:1429 +msgid "Spam mail box" +msgstr "Boite spam de votre messagerie" + +#: personal/mail/class_mailAccount.inc:1431 +msgid "Sieve management" +msgstr "Gestion de Sieve" + +#: personal/mail/class_mailAccount.inc:1433 +msgid "Reject due to mailsize" +msgstr "Rejeter a cause de la taille" + +#: personal/mail/class_mailAccount.inc:1436 +#: personal/mail/class_mailAccount.inc:1441 +msgid "Forwarding address" +msgstr "Adresse de renvoi" + +#: personal/mail/class_mailAccount.inc:1437 +msgid "Local delivery" +msgstr "Distribution locale" + +#: personal/mail/class_mailAccount.inc:1438 +msgid "No delivery to own mailbox " +msgstr "Aucune distribution des messages dans la boite de l'utilisateur" + +#: personal/mail/class_mailAccount.inc:1439 +msgid "Mail alternative addresses" +msgstr "Adresses alternatives" + +#: personal/mail/main.inc:138 +msgid "User mail settings" +msgstr "Configuration du compte de messagerie de l'utilisateur" + +#: personal/mail/class_mail-methods.inc:132 +#, php-format +msgid "The configured mail attribute '%s' is unsupported!" +msgstr "L'attribut de messagerie '%s' n'est pas supporté !" + +#: personal/mail/class_mail-methods.inc:463 +#, php-format +msgid "Mail method '%s' is unknown!" +msgstr "Le méthode de messagerie '%s' est inconnue !" + +#: personal/mail/class_mail-methods.inc:689 +#: personal/mail/class_mail-methods.inc:690 +msgid "None" +msgstr "Aucun" + +#: personal/mail/class_mail-methods.inc:779 +msgid "Unknown" +msgstr "Inconnu" + +#: personal/mail/class_mail-methods.inc:781 +msgid "Unlimited" +msgstr "Illimités" + +#: personal/mail/class_mail-methods-cyrus.inc:39 +msgid "There are no IMAP compatible mail servers defined!" +msgstr "Il n'y a aucun serveur IMAP compatibles définis !" + +#: personal/mail/class_mail-methods-cyrus.inc:44 +msgid "Mail server for this account is invalid!" +msgstr "Le serveur de messagerie pour ce compte est non valide !" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +msgid "IMAP error" +msgstr "Erreur IMAP :" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, php-format +msgid "Cannot modify IMAP mailbox quota: %s" +msgstr "" +"Impossible de modifier le quota de la boite de messagerie IMAP. Le serveur " +"répond %s." + +#: personal/mail/class_mail-methods-cyrus.inc:354 +#: personal/mail/class_mail-methods-cyrus.inc:391 +msgid "The module imap_getacl is not implemented!" +msgstr "Le module imap_getacl n'est pas implémenté !" + +#: personal/mail/class_mail-methods-cyrus.inc:563 +#, php-format +msgid "Cannot activate SIEVE script: %s" +msgstr "Impossible d'activer le script SIEVE : %s" + +#: addons/mailqueue/class_mailqueue.inc:6 +#: addons/mailqueue/class_mailqueue.inc:331 addons/mailqueue/main.inc:56 +msgid "Mail queue" +msgstr "Queue du serveur de messagerie" + +#: addons/mailqueue/class_mailqueue.inc:205 +msgid "up" +msgstr "au dessus" + +#: addons/mailqueue/class_mailqueue.inc:207 +msgid "down" +msgstr "en dessous" + +#: addons/mailqueue/class_mailqueue.inc:218 +#: addons/mailqueue/class_mailqueue.inc:318 +msgid "All" +msgstr "Tout" + +#: addons/mailqueue/class_mailqueue.inc:262 +msgid "no limit" +msgstr "pas de limites" + +#: addons/mailqueue/class_mailqueue.inc:265 +msgid "hour" +msgstr "heure" + +#: addons/mailqueue/class_mailqueue.inc:267 +msgid "hours" +msgstr "heures" + +#: addons/mailqueue/class_mailqueue.inc:319 +msgid "Hold" +msgstr "Mettre en attente" + +#: addons/mailqueue/class_mailqueue.inc:320 +msgid "Un hold" +msgstr "Enlever de la file d'attente" + +#: addons/mailqueue/class_mailqueue.inc:322 +msgid "Not active" +msgstr "Pas actif" + +#: addons/mailqueue/class_mailqueue.inc:332 +#: addons/mailqueue/class_mailqueue.inc:337 +msgid "Mail queue addon" +msgstr "Extension de queue du serveur de messagerie" + +#: addons/mailqueue/class_mailqueue.inc:340 +msgid "Unhold all messages" +msgstr "Enlever tout les messages de la file d'attente" + +#: addons/mailqueue/class_mailqueue.inc:341 addons/mailqueue/contents.tpl:38 +msgid "Hold all messages" +msgstr "Mettre en attente tout les messages" + +#: addons/mailqueue/class_mailqueue.inc:342 +msgid "Delete all messages" +msgstr "Effacer tout les messages" + +#: addons/mailqueue/class_mailqueue.inc:343 addons/mailqueue/contents.tpl:48 +msgid "Requeue all messages" +msgstr "Remettre tout les messages dans la queue" + +#: addons/mailqueue/class_mailqueue.inc:344 +msgid "Unhold message" +msgstr "Enlever le message de la file d'attente" + +#: addons/mailqueue/class_mailqueue.inc:345 addons/mailqueue/contents.tpl:120 +msgid "Hold message" +msgstr "Mettre en attente" + +#: addons/mailqueue/class_mailqueue.inc:346 +msgid "Delete message" +msgstr "Supprimer ce message" + +#: addons/mailqueue/class_mailqueue.inc:347 +msgid "Requeue message" +msgstr "Remettre tout les messages dans la file d'attente" + +#: addons/mailqueue/class_mailqueue.inc:348 +msgid "Gathering queue data" +msgstr "Obtention des données de la file d'attente" + +#: addons/mailqueue/class_mailqueue.inc:349 +msgid "Get header information" +msgstr "Obtention des entêtes des messages" + +#: addons/mailqueue/contents.tpl:10 addons/mailqueue/contents.tpl:28 +msgid "Search" +msgstr "Recherche" + +#: addons/mailqueue/contents.tpl:11 +msgid "Search for" +msgstr "Recherche de" + +#: addons/mailqueue/contents.tpl:12 +msgid "Please enter a search string here." +msgstr "Veuillez indiquer une chaîne de caractères a rechercher." + +#: addons/mailqueue/contents.tpl:14 +msgid "Select a server" +msgstr "Sélectionnez un serveur" + +#: addons/mailqueue/contents.tpl:18 +msgid "with status" +msgstr "avec les statuts" + +#: addons/mailqueue/contents.tpl:23 +msgid "within the last" +msgstr "pendant la dernière" + +#: addons/mailqueue/contents.tpl:33 +msgid "Remove all messages" +msgstr "Enlever tout les messages" + +#: addons/mailqueue/contents.tpl:34 +msgid "Remove all messages from selected servers queue" +msgstr "Enlever tout les messages des queues sélectionnées" + +#: addons/mailqueue/contents.tpl:39 +msgid "Hold all messages in selected servers queue" +msgstr "Mettre en attente tout les messages dans les queues sélectionnées" + +#: addons/mailqueue/contents.tpl:43 +msgid "Release all messages" +msgstr "Libérer tout les messages" + +#: addons/mailqueue/contents.tpl:44 +msgid "Release all messages in selected servers queue" +msgstr "Libérer tout les messages dans les queues sélectionnées" + +#: addons/mailqueue/contents.tpl:49 +msgid "Requeue all messages in selected servers queue" +msgstr "Remettre tout les messages dans les queues sélectionnées" + +#: addons/mailqueue/contents.tpl:63 +msgid "Search returned no results" +msgstr "La recherche n'a renvoyé aucun résultat" + +#: addons/mailqueue/contents.tpl:72 +msgid "ID" +msgstr "ID" + +#: addons/mailqueue/contents.tpl:75 +msgid "Arrival" +msgstr "Arrivée" + +#: addons/mailqueue/contents.tpl:76 +msgid "Sender" +msgstr "Expéditeur" + +#: addons/mailqueue/contents.tpl:77 +msgid "Recipient" +msgstr "Destinataire" + +#: addons/mailqueue/contents.tpl:78 +msgid "Status" +msgstr "Statut" + +#: addons/mailqueue/contents.tpl:105 +msgid "delete" +msgstr "supprimer" + +#: addons/mailqueue/contents.tpl:105 +msgid "Delete this message" +msgstr "Supprimer ce message" + +#: addons/mailqueue/contents.tpl:113 +msgid "unhold" +msgstr "enlever de la file d'attente" + +#: addons/mailqueue/contents.tpl:113 +msgid "Release message" +msgstr "Enlever le message de la file d'attente" + +#: addons/mailqueue/contents.tpl:120 +msgid "hold" +msgstr "mettre dans la file d'attente" + +#: addons/mailqueue/contents.tpl:127 +msgid "requeue" +msgstr "remettre dans la queue" + +#: addons/mailqueue/contents.tpl:127 +msgid "Requeue this message" +msgstr "Remettre ce message dans la queue" + +#: addons/mailqueue/contents.tpl:133 +msgid "header" +msgstr "entête" + +#: addons/mailqueue/contents.tpl:134 +msgid "Display header of this message" +msgstr "Afficher l'entête de ce message" + diff --git a/trunk/gosa-plugins/mail/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mail/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..81eb1c57b --- /dev/null +++ b/trunk/gosa-plugins/mail/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,2697 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 09:00+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/ogroups/mail/mail.tpl:7 +msgid "Mail distribution list" +msgstr "" + +#: admin/ogroups/mail/mail.tpl:10 admin/groups/mail/mail.tpl:7 +#: admin/groups/mail/paste_mail.tpl:8 +#: admin/groups/mail/class_groupMail.inc:838 personal/mail/copypaste.tpl:7 +#: personal/mail/generic.tpl:9 personal/mail/class_mailAccount.inc:1086 +msgid "Primary address" +msgstr "Indirizzo principale" + +#: admin/ogroups/mail/mail.tpl:13 +msgid "Primary mail address for this distribution list" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:50 +msgid "Remove mail account" +msgstr "Rimuovi le estensioni di posta" + +#: admin/ogroups/mail/class_mailogroup.inc:51 +#: admin/ogroups/mail/class_mailogroup.inc:54 +#, fuzzy +msgid "mail group" +msgstr "Gruppo primario" + +#: admin/ogroups/mail/class_mailogroup.inc:53 +msgid "Create mail account" +msgstr "Crea estensioni di posta" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +#: admin/ogroups/mail/class_mailogroup.inc:93 +#: admin/ogroups/mail/class_mailogroup.inc:194 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: admin/groups/mail/class_groupMail.inc:840 +#: admin/groups/mail/class_groupMail.inc:971 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: personal/mail/class_mailAccount.inc:1090 +#: personal/mail/class_mailAccount.inc:1094 +#: personal/mail/class_mailAccount.inc:1105 +#: personal/mail/class_mailAccount.inc:1420 +msgid "Mail address" +msgstr "Indirizzo principale" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +msgid "your-name@your-domain.com" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:120 +#: admin/ogroups/mail/class_mailogroup.inc:157 +#: admin/systems/services/imap/class_goImapServer.inc:190 +#: admin/systems/services/spam/class_goSpamServer.inc:277 +#: admin/systems/services/virus/class_goVirusServer.inc:154 +#: admin/systems/services/mail/class_goMailServer.inc:582 +#: admin/groups/mail/class_groupMail.inc:531 +#: admin/groups/mail/class_groupMail.inc:760 +#: personal/mail/class_mailAccount.inc:915 +#: personal/mail/class_mailAccount.inc:982 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/ogroups/mail/class_mailogroup.inc:186 +#: admin/ogroups/mail/paste_mail.tpl:4 +#: admin/groups/mail/class_groupMail.inc:276 +#: admin/groups/mail/class_groupMail.inc:278 +#: admin/groups/mail/class_groupMail.inc:279 +#: admin/groups/mail/class_groupMail.inc:284 +#: admin/groups/mail/class_groupMail.inc:286 +#: admin/groups/mail/class_groupMail.inc:287 +#: admin/groups/mail/class_groupMail.inc:828 +#: admin/groups/mail/class_groupMail.inc:963 +#: personal/mail/class_mailAccount.inc:50 +#: personal/mail/class_mailAccount.inc:239 +#: personal/mail/class_mailAccount.inc:247 +#: personal/mail/class_mailAccount.inc:249 +#: personal/mail/class_mailAccount.inc:254 +#: personal/mail/class_mailAccount.inc:256 +#: personal/mail/class_mailAccount.inc:1074 +#: personal/mail/class_mailAccount.inc:1264 +#: personal/mail/class_mailAccount.inc:1410 +msgid "Mail" +msgstr "Posta" + +#: admin/ogroups/mail/class_mailogroup.inc:187 +#, fuzzy +msgid "Mail group" +msgstr "Gruppo primario" + +#: admin/ogroups/mail/paste_mail.tpl:7 +#, fuzzy +msgid "Please enter a mail address" +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/systems/services/imap/class_goImapServer.inc:48 +msgid "IMAP/POP3 service" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:53 +#: admin/systems/services/imap/class_goImapServer.inc:212 +#, fuzzy +msgid "Repair database" +msgstr "Database" + +#: admin/systems/services/imap/class_goImapServer.inc:100 +#, fuzzy +msgid "IMAP/POP3 (Cyrus) service" +msgstr "Server" + +#: admin/systems/services/imap/class_goImapServer.inc:110 +#: admin/systems/services/imap/class_goImapServer.inc:214 +#: admin/systems/services/imap/goImapServer.tpl:7 +msgid "Server identifier" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:114 +#: admin/systems/services/imap/class_goImapServer.inc:116 +#: admin/systems/services/imap/class_goImapServer.inc:215 +#: admin/systems/services/imap/goImapServer.tpl:16 +msgid "Connect URL" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:120 +#: admin/systems/services/imap/class_goImapServer.inc:122 +#: admin/systems/services/imap/class_goImapServer.inc:219 +#: admin/systems/services/imap/goImapServer.tpl:43 +#, fuzzy +msgid "Sieve connect URL" +msgstr "Connessione" + +#: admin/systems/services/imap/class_goImapServer.inc:123 +#, fuzzy, php-format +msgid "Valid options are: %s" +msgstr "Opzioni di posta" + +#: admin/systems/services/imap/class_goImapServer.inc:127 +#: admin/systems/services/imap/class_goImapServer.inc:216 +#: admin/systems/services/imap/goImapServer.tpl:25 +msgid "Admin user" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:130 +#: admin/systems/services/imap/goImapServer.tpl:34 +msgid "Password" +msgstr "Password" + +#: admin/systems/services/imap/class_goImapServer.inc:199 +#: admin/systems/services/imap/class_goImapServer.inc:200 +msgid "IMAP/POP3" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:200 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/imap/class_goImapServer.inc:209 +#: admin/systems/services/virus/class_goVirusServer.inc:228 +#, fuzzy +msgid "Start" +msgstr "Avvio" + +#: admin/systems/services/imap/class_goImapServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:229 +#: personal/mail/sieve/class_sieveManagement.inc:501 +#: personal/mail/sieve/class_sieveManagement.inc:719 +#: personal/mail/sieve/templates/object_container.tpl:30 +#: personal/mail/sieve/templates/element_stop.tpl:4 +msgid "Stop" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:211 +#: admin/systems/services/virus/class_goVirusServer.inc:230 +#, fuzzy +msgid "Restart" +msgstr "Riprova" + +#: admin/systems/services/imap/class_goImapServer.inc:217 +msgid "Admin password" +msgstr "Password dell'amministratore" + +#: admin/systems/services/imap/class_goImapServer.inc:220 +#: admin/systems/services/imap/goImapServer.tpl:61 +msgid "Start IMAP service" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:221 +#: admin/systems/services/imap/goImapServer.tpl:70 +msgid "Start IMAP SSL service" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:222 +#: admin/systems/services/imap/goImapServer.tpl:79 +msgid "Start POP3 service" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:223 +#: admin/systems/services/imap/goImapServer.tpl:88 +msgid "Start POP3 SSL service" +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:1 +#: admin/systems/services/mail/goMailServer.tpl:1 admin/groups/mail/mail.tpl:4 +#: personal/mail/generic.tpl:5 +msgid "Generic" +msgstr "Generale" + +#: admin/systems/services/imap/goImapServer.tpl:99 +#: admin/systems/services/mail/goMailServer.tpl:204 +msgid "The server must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:101 +#: admin/systems/services/mail/goMailServer.tpl:206 +msgid "The service must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:104 +#: admin/systems/services/mail/goMailServer.tpl:209 +#, fuzzy +msgid "Set new status" +msgstr "Stato" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +#, fuzzy +msgid "Set status" +msgstr "Stato" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Execute" +msgstr "Esegui" + +#: admin/systems/services/spam/goSpamServerRule.tpl:6 +msgid "Name" +msgstr "Cognome" + +#: admin/systems/services/spam/goSpamServerRule.tpl:14 +#, fuzzy +msgid "Rule" +msgstr "Ruolo" + +#: admin/systems/services/spam/class_goSpamServer.inc:42 +#: admin/systems/services/spam/class_goSpamServer.inc:320 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/spam/class_goSpamServer.inc:347 +msgid "Spamassassin" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:143 +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#: admin/groups/mail/class_groupMail.inc:341 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:360 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: personal/mail/sieve/class_sieveManagement.inc:201 +#: personal/mail/sieve/class_sieveManagement.inc:206 +#: personal/mail/sieve/class_sieveManagement.inc:212 +#: personal/mail/sieve/class_sieveManagement.inc:218 +#: personal/mail/sieve/class_sieveManagement.inc:429 +#: personal/mail/sieve/class_My_Tree.inc:660 +#: personal/mail/class_mailAccount.inc:311 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:329 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: addons/mailqueue/class_mailqueue.inc:110 +#: addons/mailqueue/class_mailqueue.inc:144 +#: addons/mailqueue/class_mailqueue.inc:150 +msgid "Error" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#, fuzzy +msgid "Trusted network" +msgstr "Impostazioni Unix" + +#: admin/systems/services/spam/class_goSpamServer.inc:287 +msgid "Score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:329 +#: admin/systems/services/spam/goSpamServer.tpl:8 +#, fuzzy +msgid "Rewrite header" +msgstr "leggere" + +#: admin/systems/services/spam/class_goSpamServer.inc:330 +#, fuzzy +msgid "Trusted networks" +msgstr "Impostazioni Unix" + +#: admin/systems/services/spam/class_goSpamServer.inc:331 +#: admin/systems/services/spam/goSpamServer.tpl:18 +msgid "Required score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:332 +#, fuzzy +msgid "Rules" +msgstr "Ruolo" + +#: admin/systems/services/spam/class_goSpamServer.inc:334 +#: admin/systems/services/spam/goSpamServer.tpl:69 +msgid "Enable use of bayes filtering" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:335 +msgid "Enabled bayes auto learning" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:336 +#: admin/systems/services/spam/goSpamServer.tpl:75 +msgid "Enable RBL checks" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:337 +#: admin/systems/services/spam/goSpamServer.tpl:86 +msgid "Enable use of Razor" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:338 +#: admin/systems/services/spam/goSpamServer.tpl:89 +msgid "Enable use of DDC" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:339 +#: admin/systems/services/spam/goSpamServer.tpl:92 +msgid "Enable use of Pyzor" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:22 +msgid "Select required score to tag mail as spam" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:48 +#: admin/systems/services/mail/goMailServer.tpl:73 +#: admin/systems/services/mail/goMailServer.tpl:104 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/systems/services/spam/goSpamServer.tpl:72 +msgid "Enable bayes auto learning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:45 +#: admin/systems/services/virus/class_goVirusServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:219 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +msgid "Anti virus" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:163 +#: admin/systems/services/virus/class_goVirusServer.inc:238 +msgid "Maximum directory recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:164 +#: admin/systems/services/virus/class_goVirusServer.inc:237 +#: admin/systems/services/virus/goVirusServer.tpl:43 +msgid "Maximum threads" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:165 +#: admin/systems/services/virus/class_goVirusServer.inc:240 +#: admin/systems/services/virus/goVirusServer.tpl:134 +#, fuzzy +msgid "Maximum file size" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/virus/class_goVirusServer.inc:166 +#: admin/systems/services/virus/class_goVirusServer.inc:241 +msgid "Maximum recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:167 +#: admin/systems/services/virus/class_goVirusServer.inc:242 +#: admin/systems/services/virus/goVirusServer.tpl:152 +msgid "Maximum compression ratio" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:168 +#: admin/systems/services/virus/class_goVirusServer.inc:244 +#: admin/systems/services/virus/goVirusServer.tpl:71 +#, fuzzy +msgid "Checks per day" +msgstr "Parametro" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/goVirusServer.tpl:13 +#, fuzzy +msgid "Database user" +msgstr "Database" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:245 +#: admin/systems/services/virus/goVirusServer.tpl:33 +msgid "Http proxy URL" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:243 +#: admin/systems/services/virus/goVirusServer.tpl:23 +#, fuzzy +msgid "Database mirror" +msgstr "Database" + +#: admin/systems/services/virus/class_goVirusServer.inc:232 +#: admin/systems/services/virus/goVirusServer.tpl:84 +msgid "Enable debugging" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:233 +#: admin/systems/services/virus/goVirusServer.tpl:92 +msgid "Enable mail scanning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:234 +#: admin/systems/services/virus/goVirusServer.tpl:117 +msgid "Enable scanning of archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:235 +#: admin/systems/services/virus/goVirusServer.tpl:125 +msgid "Block encrypted archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:239 +#, fuzzy +msgid "Anti virus user" +msgstr "Dispositivi del client" + +#: admin/systems/services/virus/goVirusServer.tpl:5 +#, fuzzy +msgid "Generic virus filtering" +msgstr "Impostazioni generali delle code" + +#: admin/systems/services/virus/goVirusServer.tpl:47 +#, fuzzy +msgid "Select number of maximal threads" +msgstr "Seleziona il numero da aggiungere" + +#: admin/systems/services/virus/goVirusServer.tpl:61 +msgid "Max directory recursions" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:101 +msgid "Archive scanning" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:143 +msgid "Maximum recursion" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:45 +#: admin/systems/services/mail/class_goMailServer.inc:512 +#, fuzzy +msgid "Mail smtp service (Postfix)" +msgstr "Server" + +#: admin/systems/services/mail/class_goMailServer.inc:600 +#: admin/systems/services/mail/class_goMailServer.inc:711 +msgid "Header size limit" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:603 +#, fuzzy +msgid "Mailbox size limit" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/mail/class_goMailServer.inc:606 +#, fuzzy +msgid "Message size limit" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/mail/class_goMailServer.inc:700 +msgid "Mail smtp (Postfix)" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Mail smtp - Postfix" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:709 +#: admin/systems/services/mail/goMailServer.tpl:7 +msgid "Visible full qualified hostname" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:710 +msgid "Description" +msgstr "Descrizione" + +#: admin/systems/services/mail/class_goMailServer.inc:712 +#: admin/systems/services/mail/goMailServer.tpl:26 +msgid "Max mailbox size" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:713 +#: admin/systems/services/mail/goMailServer.tpl:35 +#, fuzzy +msgid "Max message size" +msgstr "Inoltra i messaggi a" + +#: admin/systems/services/mail/class_goMailServer.inc:714 +#: admin/systems/services/mail/goMailServer.tpl:91 +msgid "Domains to accept mail for" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:715 +#: admin/systems/services/mail/goMailServer.tpl:60 +msgid "Local networks" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:716 +#: admin/systems/services/mail/goMailServer.tpl:45 +#, fuzzy +msgid "Relay host" +msgstr "Rimuovi" + +#: admin/systems/services/mail/class_goMailServer.inc:717 +msgid "Transport table" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:718 +#: admin/systems/services/mail/goMailServer.tpl:149 +msgid "Restrictions for sender" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:719 +#: admin/systems/services/mail/goMailServer.tpl:175 +msgid "Restrictions for recipient" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:11 +msgid "The full qualified host name." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:16 +msgid "Max mail header size" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:21 +msgid "This value specifies the maximal header size." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:21 +#: admin/systems/services/mail/goMailServer.tpl:31 +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "KB" +msgstr "KB" + +#: admin/systems/services/mail/goMailServer.tpl:31 +msgid "Defines the maximal size of mail box." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "Specify the maximal size of a message." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:50 +msgid "Relay messages to following host:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:62 +#, fuzzy +msgid "Postfix networks" +msgstr "Impostazioni Unix" + +#: admin/systems/services/mail/goMailServer.tpl:83 +#, fuzzy +msgid "Domains and routing" +msgstr "Amministratori di Dominio" + +#: admin/systems/services/mail/goMailServer.tpl:93 +msgid "Postfix is responsible for the following domains:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:114 +msgid "Transports" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:123 +msgid "Select a transport protocol." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:141 +#, fuzzy +msgid "Restrictions" +msgstr "Azione" + +#: admin/systems/services/mail/goMailServer.tpl:157 +#: admin/systems/services/mail/goMailServer.tpl:183 +#, fuzzy +msgid "Restriction filter" +msgstr "Cerca" + +#: admin/groups/mail/mail.tpl:35 personal/mail/generic.tpl:30 +#: addons/mailqueue/contents.tpl:73 +msgid "Server" +msgstr "Server" + +#: admin/groups/mail/mail.tpl:42 personal/mail/generic.tpl:37 +msgid "Specify the mail server where the user will be hosted on" +msgstr "Specifica il server di posta per l'utente" + +#: admin/groups/mail/mail.tpl:56 personal/mail/generic.tpl:53 +msgid "Quota usage" +msgstr "Utilizzo quota" + +#: admin/groups/mail/mail.tpl:60 admin/groups/mail/class_groupMail.inc:847 +#: admin/groups/mail/class_groupMail.inc:972 personal/mail/generic.tpl:57 +#: personal/mail/class_mailAccount.inc:1113 +#: personal/mail/class_mailAccount.inc:1270 +#: personal/mail/class_mailAccount.inc:1422 +msgid "Quota size" +msgstr "Dimensione quota" + +#: admin/groups/mail/mail.tpl:73 admin/groups/mail/class_groupMail.inc:974 +#, fuzzy +msgid "Folder type" +msgstr "Filtro" + +#: admin/groups/mail/mail.tpl:91 +#, fuzzy +msgid "Reload" +msgstr "leggere" + +#: admin/groups/mail/mail.tpl:102 admin/groups/mail/paste_mail.tpl:23 +#: personal/mail/copypaste.tpl:25 personal/mail/generic.tpl:73 +msgid "Alternative addresses" +msgstr "Indirizzi alternativi" + +#: admin/groups/mail/mail.tpl:107 admin/groups/mail/paste_mail.tpl:24 +#: personal/mail/copypaste.tpl:55 personal/mail/generic.tpl:76 +msgid "List of alternative mail addresses" +msgstr "Lista degli indirizzi alternativi" + +#: admin/groups/mail/mail.tpl:136 +msgid "IMAP shared folders" +msgstr "Cartelle condivise IMAP" + +#: admin/groups/mail/mail.tpl:143 +msgid "Default permission" +msgstr "Permessi predefiniti" + +#: admin/groups/mail/mail.tpl:145 +msgid "Member permission" +msgstr "Permessi dei membri" + +#: admin/groups/mail/mail.tpl:163 +#, fuzzy +msgid "Hide" +msgstr "leggere" + +#: admin/groups/mail/mail.tpl:165 +#, fuzzy +msgid "Show" +msgstr "Mostra gruppi" + +#: admin/groups/mail/mail.tpl:187 personal/mail/generic.tpl:303 +msgid "Advanced mail options" +msgstr "Opzioni di posta avanzate" + +#: admin/groups/mail/mail.tpl:193 personal/mail/generic.tpl:309 +msgid "Select if user can only send and receive inside his own domain" +msgstr "" +"Seleziona se l'utente può mandare e ricevere mail solo all'interno del " +"proprio dominio" + +#: admin/groups/mail/mail.tpl:195 personal/mail/generic.tpl:311 +msgid "User is only allowed to send and receive local mails" +msgstr "L'utente è abilitato a mandare e ricevere solo mail locali" + +#: admin/groups/mail/mail.tpl:204 admin/groups/mail/paste_mail.tpl:34 +msgid "Forward messages to non group members" +msgstr "Inoltra i messaggi ai membri esterni al gruppo" + +#: admin/groups/mail/mail.tpl:213 +#, fuzzy +msgid "Used in all groups" +msgstr "Inserisci la URI del server LDAP" + +#: admin/groups/mail/mail.tpl:216 +#, fuzzy +msgid "Not used in all groups" +msgstr "Mostra gruppi funzionali" + +#: admin/groups/mail/mail.tpl:234 admin/groups/mail/paste_mail.tpl:42 +#: personal/mail/copypaste.tpl:44 personal/mail/generic.tpl:290 +#: personal/mail/generic.tpl:293 +msgid "Add local" +msgstr "Aggiungi localmente" + +#: admin/groups/mail/paste_mail.tpl:1 personal/mail/copypaste.tpl:1 +#: personal/mail/class_mailAccount.inc:1411 +#, fuzzy +msgid "Mail settings" +msgstr "Opzioni di posta dell'identità" + +#: admin/groups/mail/paste_mail.tpl:12 +msgid "Primary mail address for this shared folder" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:6 personal/mail/mail_locals.tpl:7 +msgid "Select addresses to add" +msgstr "Seleziona gli indirizzi da aggiungere" + +#: admin/groups/mail/mail_locals.tpl:22 personal/mail/mail_locals.tpl:25 +msgid "Filters" +msgstr "Filtri" + +#: admin/groups/mail/mail_locals.tpl:32 +msgid "Display addresses of department" +msgstr "Mostra l'indirizzo del dipartimento" + +#: admin/groups/mail/mail_locals.tpl:33 personal/mail/mail_locals.tpl:38 +msgid "Choose the department the search will be based on" +msgstr "Scegli il dipartimento di base per la ricerca" + +#: admin/groups/mail/mail_locals.tpl:42 +msgid "Display addresses matching" +msgstr "Mostra gli indirizzi che corrispondono" + +#: admin/groups/mail/mail_locals.tpl:45 personal/mail/mail_locals.tpl:52 +msgid "Regular expression for matching addresses" +msgstr "Espressione regolare per selezionare l'indirizzo" + +#: admin/groups/mail/mail_locals.tpl:52 personal/mail/mail_locals.tpl:60 +msgid "Display addresses of user" +msgstr "Mostra l'indirizzo dell'utente" + +#: admin/groups/mail/mail_locals.tpl:55 personal/mail/mail_locals.tpl:64 +msgid "User name of which addresses are shown" +msgstr "Nome dell'utente del quale mostrare gli indirizzi" + +#: admin/groups/mail/mail_admins.tpl:4 +msgid "Folder administrators" +msgstr "Amministratori cartella" + +#: admin/groups/mail/mail_admins.tpl:24 +msgid "Select a specific department" +msgstr "Selezione un dipartimento" + +#: admin/groups/mail/mail_admins.tpl:30 +msgid "Choose" +msgstr "Scegli" + +#: admin/groups/mail/class_groupMail.inc:111 +#: admin/groups/mail/class_groupMail.inc:118 +#: admin/groups/mail/class_groupMail.inc:125 +#: admin/groups/mail/class_groupMail.inc:132 +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:140 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:547 +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:773 +#: admin/groups/mail/class_groupMail.inc:777 +#: admin/groups/mail/class_groupMail.inc:781 +#: admin/groups/mail/class_groupMail.inc:790 +#: personal/mail/class_mailAccount.inc:147 +#: personal/mail/class_mailAccount.inc:154 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:162 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:928 +#: personal/mail/class_mailAccount.inc:996 +#: personal/mail/class_mailAccount.inc:1000 +#: personal/mail/class_mailAccount.inc:1004 +#: personal/mail/class_mailAccount.inc:1018 +#, fuzzy +msgid "Mail error" +msgstr "Server" + +#: admin/groups/mail/class_groupMail.inc:111 +#: personal/mail/class_mailAccount.inc:147 +#, fuzzy, php-format +msgid "Cannot read quota settings: %s" +msgstr "Rimuovi" + +#: admin/groups/mail/class_groupMail.inc:118 +#: personal/mail/class_mailAccount.inc:154 +#, fuzzy, php-format +msgid "Cannot get list of mailboxes: %s" +msgstr "Rimuovi" + +#: admin/groups/mail/class_groupMail.inc:125 +#, fuzzy, php-format +msgid "Cannot receive folder types: %s" +msgstr "Cartelle condivise IMAP" + +#: admin/groups/mail/class_groupMail.inc:132 +#, fuzzy, php-format +msgid "Cannot receive folder permissions: %s" +msgstr "Cartelle condivise IMAP" + +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:773 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:996 +#, php-format +msgid "Mail method cannot connect: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:140 +#: personal/mail/class_mailAccount.inc:162 +#, php-format +msgid "Mailbox '%s' doesn't exists on mail server: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:297 +msgid "" +"Remove shared folder from mail server database when entry gets removed in " +"LDAP" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:298 +msgid "Remove the shared folder and all its contents after saving this account" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:341 +#: personal/mail/class_mailAccount.inc:311 +#, fuzzy +msgid "Please select an entry!" +msgstr "Prego inserire un numero di telefono valido!" + +#: admin/groups/mail/class_groupMail.inc:360 +#: personal/mail/class_mailAccount.inc:329 +#, fuzzy +msgid "Cannot add primary address to the list of forwarders!" +msgstr "" +"Stai tentandi di aggiungere un indirizzo di posta non valido alla lista " +"degli inoltri" + +#: admin/groups/mail/class_groupMail.inc:405 +#: personal/mail/class_mailAccount.inc:372 +#, fuzzy, php-format +msgid "Address is already in use by user '%s'." +msgstr "L'indirizzo che stai cercando di aggiungere gi in uso" + +#: admin/groups/mail/class_groupMail.inc:547 +#: personal/mail/class_mailAccount.inc:928 +#, fuzzy, php-format +msgid "Cannot remove mailbox: %s" +msgstr "Rimuovi" + +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:790 +#, fuzzy, php-format +msgid "Cannot update shared folder permissions: %s" +msgstr "Cartelle condivise IMAP" + +#: admin/groups/mail/class_groupMail.inc:649 +#, fuzzy +msgid "New" +msgstr "Modifica contatto" + +#: admin/groups/mail/class_groupMail.inc:777 +#: personal/mail/class_mailAccount.inc:1000 +#, fuzzy, php-format +msgid "Cannot update mailbox: %s" +msgstr "Rimuovi" + +#: admin/groups/mail/class_groupMail.inc:781 +#: personal/mail/class_mailAccount.inc:1004 +#, fuzzy, php-format +msgid "Cannot write quota settings: %s" +msgstr "Rimuovi" + +#: admin/groups/mail/class_groupMail.inc:822 +#, php-format +msgid "" +"The group 'cn' has changed. It can't be changed due to the fact that mail " +"method '%s' relies on it!" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:856 +#: personal/mail/class_mailAccount.inc:1434 +#, fuzzy +msgid "Mail max size" +msgstr "Inoltra i messaggi a" + +#: admin/groups/mail/class_groupMail.inc:864 +msgid "You need to set the maximum mail size in order to reject anything." +msgstr "Devi specificare la dimensione massima delle mail da rigettare." + +#: admin/groups/mail/class_groupMail.inc:868 +#: admin/groups/mail/class_groupMail.inc:973 +#: personal/mail/class_mailAccount.inc:1421 +#, fuzzy +msgid "Mail server" +msgstr "Server" + +#: admin/groups/mail/class_groupMail.inc:964 +#, fuzzy +msgid "Group mail" +msgstr "Nome gruppo" + +#: admin/groups/mail/class_groupMail.inc:974 +msgid "Kolab" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:975 +#, fuzzy +msgid "Alternate addresses" +msgstr "Indirizzi alternativi" + +#: admin/groups/mail/class_groupMail.inc:976 +#, fuzzy +msgid "Forwarding addresses" +msgstr "Indirizzo principale" + +#: admin/groups/mail/class_groupMail.inc:977 +#, fuzzy +msgid "Only local" +msgstr "Aggiungi localmente" + +#: admin/groups/mail/class_groupMail.inc:978 +msgid "Permissions" +msgstr "Permessi" + +#: personal/mail/copypaste.tpl:13 personal/mail/generic.tpl:267 +msgid "Forward messages to" +msgstr "Inoltra i messaggi a" + +#: personal/mail/generic.tpl:115 personal/mail/class_mailAccount.inc:1442 +msgid "Use custom sieve script" +msgstr "Usa uno script di sieve personalizzato" + +#: personal/mail/generic.tpl:115 +msgid "disables all Mail options!" +msgstr "disabilita tutte le opzioni di posta!" + +#: personal/mail/generic.tpl:123 +#, fuzzy +msgid "Sieve Management" +msgstr "Dirigenza" + +#: personal/mail/generic.tpl:144 +msgid "Select if you want to forward mails without getting own copies of them" +msgstr "" +"Seleziona se intendi inoltrare le mail senza mantenerne una copia locale" + +#: personal/mail/generic.tpl:144 +msgid "No delivery to own mailbox" +msgstr "Non recapitare nella propria mailbox" + +#: personal/mail/generic.tpl:151 +msgid "" +"Select to automatically response with the vacation message defined below" +msgstr "Seleziona per rispondere automaticamente con il messaggio seguente" + +#: personal/mail/generic.tpl:153 +msgid "Activate vacation message" +msgstr "Attiva la risposta automatica" + +#: personal/mail/generic.tpl:161 +#, fuzzy +msgid "from" +msgstr "e" + +#: personal/mail/generic.tpl:185 +msgid "till" +msgstr "" + +#: personal/mail/generic.tpl:214 +msgid "Select if you want to filter this mails through spamassassin" +msgstr "Seleziona se intendi filtrare le tue mail con Spamassassin" + +#: personal/mail/generic.tpl:216 +msgid "Move mails tagged with spam level greater than" +msgstr "Muovi mail marcate con un livello di Spam superiore a" + +#: personal/mail/generic.tpl:219 +#, fuzzy +msgid "Choose spam level - smaller values are more sensitive" +msgstr "" +"Scegli il livello si Spam - valori più bassi indicano maggiore sensibilità" + +#: personal/mail/generic.tpl:223 +msgid "to folder" +msgstr "nella cartella" + +#: personal/mail/generic.tpl:235 +msgid "Reject mails bigger than" +msgstr "Rifiuta mail più grandi di" + +#: personal/mail/generic.tpl:238 +msgid "MB" +msgstr "Mb" + +#: personal/mail/generic.tpl:245 +#: personal/mail/sieve/class_sieveManagement.inc:502 +#: personal/mail/sieve/class_sieveManagement.inc:720 +#: personal/mail/sieve/templates/element_vacation.tpl:44 +#: personal/mail/sieve/templates/object_container.tpl:31 +#: personal/mail/class_mailAccount.inc:1425 +msgid "Vacation message" +msgstr "Messaggio di di risposta automatica" + +#: personal/mail/generic.tpl:261 +#: personal/mail/sieve/templates/import_script.tpl:12 +#: personal/mail/sieve/templates/edit_frame_base.tpl:7 +msgid "Import" +msgstr "Importa" + +#: personal/mail/mail_locals.tpl:35 +#, fuzzy +msgid "Select department" +msgstr "Imposta dipartimento" + +#: personal/mail/sieve/class_sieveElement_Vacation.inc:148 +#, fuzzy +msgid "Alternative sender address must be a valid email addresses." +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/mail/sieve/class_sieveManagement.inc:114 +#: personal/mail/sieve/class_sieveManagement.inc:242 +#, fuzzy +msgid "Parse failed" +msgstr "Nome applicazione" + +#: personal/mail/sieve/class_sieveManagement.inc:118 +#: personal/mail/sieve/class_sieveManagement.inc:246 +#, fuzzy +msgid "Parse successful" +msgstr "Setup completato" + +#: personal/mail/sieve/class_sieveManagement.inc:156 +#, php-format +msgid "" +"The specified mail server '%s' does not exist within the GOsa configuration." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:201 +msgid "No script name specified!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:206 +#, fuzzy +msgid "Please use only lowercase script names!" +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/mail/sieve/class_sieveManagement.inc:212 +#, fuzzy +msgid "Please use only alphabetical characters in script names!" +msgstr "Non hai il permesso di cambiare la tua password." + +#: personal/mail/sieve/class_sieveManagement.inc:218 +#, fuzzy +msgid "Script name already in use!" +msgstr "L'indirizzo principale inserito è già in uso." + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:349 +#: personal/mail/sieve/class_sieveManagement.inc:398 +#: personal/mail/sieve/class_sieveManagement.inc:402 +#: personal/mail/sieve/class_sieveManagement.inc:433 +#: personal/mail/sieve/class_sieveManagement.inc:519 +#: personal/mail/sieve/class_sieveManagement.inc:770 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#, fuzzy +msgid "SIEVE error" +msgstr "Errore PHP" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#, fuzzy, php-format +msgid "Cannot log into SIEVE server: %s" +msgstr "Accesso al server LDAP fallito. La ragione è: %s." + +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/class_mail-methods-cyrus.inc:468 +#, php-format +msgid "Cannot retrieve SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:349 +#, php-format +msgid "Cannot remove SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:395 +#, fuzzy +msgid "Edited" +msgstr "Modifica" + +#: personal/mail/sieve/class_sieveManagement.inc:429 +msgid "Uploaded script is empty!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy, php-format +msgid "Cannot access temporary file '%s'!" +msgstr "Rimuovi" + +#: personal/mail/sieve/class_sieveManagement.inc:433 +#, fuzzy, php-format +msgid "Cannot open temporary file '%s'!" +msgstr "Rimuovi" + +#: personal/mail/sieve/class_sieveManagement.inc:493 +#: personal/mail/sieve/class_sieveManagement.inc:496 +#: personal/mail/sieve/class_sieveManagement.inc:711 +#: personal/mail/sieve/class_sieveManagement.inc:714 +#: personal/mail/sieve/templates/element_keep.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:22 +#: personal/mail/sieve/templates/object_container.tpl:25 +msgid "Keep" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:494 +#: personal/mail/sieve/class_sieveManagement.inc:712 +#: personal/mail/sieve/templates/element_comment.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:23 +#, fuzzy +msgid "Comment" +msgstr "Contenuti" + +#: personal/mail/sieve/class_sieveManagement.inc:495 +#: personal/mail/sieve/class_sieveManagement.inc:713 +#, fuzzy +msgid "File into" +msgstr "Cognome" + +#: personal/mail/sieve/class_sieveManagement.inc:497 +#: personal/mail/sieve/class_sieveManagement.inc:715 +#: personal/mail/sieve/templates/element_discard.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:26 +#, fuzzy +msgid "Discard" +msgstr "Dispositivi" + +#: personal/mail/sieve/class_sieveManagement.inc:498 +#: personal/mail/sieve/class_sieveManagement.inc:716 +#: personal/mail/sieve/templates/element_redirect.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:27 +#, fuzzy +msgid "Redirect" +msgstr "modifica" + +#: personal/mail/sieve/class_sieveManagement.inc:499 +#: personal/mail/sieve/class_sieveManagement.inc:717 +#: personal/mail/sieve/templates/object_container.tpl:28 +#, fuzzy +msgid "Reject" +msgstr "Rimuovi" + +#: personal/mail/sieve/class_sieveManagement.inc:500 +#: personal/mail/sieve/class_sieveManagement.inc:718 +#: personal/mail/sieve/templates/object_container.tpl:29 +#: personal/mail/sieve/templates/element_require.tpl:12 +msgid "Require" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:503 +#: personal/mail/sieve/class_sieveManagement.inc:721 +#: personal/mail/sieve/templates/object_container.tpl:32 +#: personal/mail/sieve/class_sieveElement_If.inc:836 +#, fuzzy +msgid "If" +msgstr "Unix" + +#: personal/mail/sieve/class_sieveManagement.inc:519 +#, fuzzy +msgid "Cannot add new element!" +msgstr "Dispositivi del client" + +#: personal/mail/sieve/class_sieveManagement.inc:562 +#: personal/mail/sieve/class_sieveManagement.inc:756 +#: personal/mail/sieve/templates/element_else.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:33 +#: personal/mail/sieve/class_sieveElement_If.inc:840 +#, fuzzy +msgid "Else" +msgstr "Scegli" + +#: personal/mail/sieve/class_sieveManagement.inc:564 +#: personal/mail/sieve/class_sieveManagement.inc:758 +#: personal/mail/sieve/class_sieveManagement.inc:763 +#: personal/mail/sieve/templates/element_elsif.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:34 +#: personal/mail/sieve/class_sieveElement_If.inc:838 +msgid "Else If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:589 +#: personal/mail/sieve/templates/element_address.tpl:15 +#: personal/mail/sieve/templates/element_address.tpl:113 +msgid "Address" +msgstr "Indirizzo" + +#: personal/mail/sieve/class_sieveManagement.inc:590 +#: personal/mail/sieve/templates/element_header.tpl:16 +#: personal/mail/sieve/templates/element_header.tpl:106 +#, fuzzy +msgid "Header" +msgstr "leggere" + +#: personal/mail/sieve/class_sieveManagement.inc:591 +#: personal/mail/sieve/templates/element_envelope.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:105 +msgid "Envelope" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:592 +#: personal/mail/sieve/templates/element_size.tpl:4 +#: addons/mailqueue/contents.tpl:74 +msgid "Size" +msgstr "Dimensione" + +#: personal/mail/sieve/class_sieveManagement.inc:593 +#: personal/mail/sieve/templates/element_exists.tpl:8 +#, fuzzy +msgid "Exists" +msgstr "Modifica" + +#: personal/mail/sieve/class_sieveManagement.inc:594 +#: personal/mail/sieve/templates/element_allof.tpl:10 +msgid "All of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:595 +#: personal/mail/sieve/templates/element_anyof.tpl:10 +msgid "Any of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:596 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +#, fuzzy +msgid "True" +msgstr "Futuro" + +#: personal/mail/sieve/class_sieveManagement.inc:597 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +#, fuzzy +msgid "False" +msgstr "femmina" + +#: personal/mail/sieve/class_sieveManagement.inc:634 +#: addons/mailqueue/class_mailqueue.inc:321 addons/mailqueue/contents.tpl:93 +#, fuzzy +msgid "Active" +msgstr "Privato" + +#: personal/mail/sieve/class_sieveManagement.inc:635 +msgid "This script is marked as active" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:640 +#, fuzzy +msgid "Script length" +msgstr "Mostra terminali" + +#: personal/mail/sieve/class_sieveManagement.inc:644 +#, fuzzy +msgid "Remove script" +msgstr "Elimina contatto" + +#: personal/mail/sieve/class_sieveManagement.inc:653 +#, fuzzy +msgid "Activate script" +msgstr "Privato" + +#: personal/mail/sieve/class_sieveManagement.inc:657 +#, fuzzy +msgid "Edit script" +msgstr "Modifica contatto" + +#: personal/mail/sieve/class_sieveManagement.inc:672 +#, php-format +msgid "Can't log into SIEVE server. Server says '%s'." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:770 +msgid "Cannot insert element at the requested position!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#: personal/mail/class_mail-methods-cyrus.inc:556 +#, php-format +msgid "Cannot store SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1045 +#, fuzzy +msgid "Failed to save sieve script" +msgstr "Usa uno script di sieve personalizzato" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:24 +#, fuzzy +msgid "Please specify a valid email address." +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:35 +#, fuzzy +msgid "Place a mail address here" +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/mail/sieve/class_sieveElement_Comment.inc:21 +msgid "Your comment here" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:1 +#, fuzzy +msgid "Add a new element" +msgstr "Dispositivi del client" + +#: personal/mail/sieve/templates/add_element.tpl:2 +#, fuzzy +msgid "Please select the type of element you want to add" +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/mail/sieve/templates/add_element.tpl:11 +#: personal/mail/sieve/templates/select_test_type.tpl:11 +msgid "Continue" +msgstr "Continua" + +#: personal/mail/sieve/templates/add_element.tpl:13 +msgid "Abort" +msgstr "" + +#: personal/mail/sieve/templates/element_discard.tpl:9 +#, fuzzy +msgid "Discard message" +msgstr "Elimina questo record" + +#: personal/mail/sieve/templates/element_if.tpl:4 +#: personal/mail/sieve/class_sieveElement_If.inc:834 +#, fuzzy +msgid "Condition" +msgstr "Connessione" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_address.tpl:116 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_header.tpl:109 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_envelope.tpl:108 +#, fuzzy +msgid "Not" +msgstr "nessuno" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_anyof.tpl:7 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "Inverse match" +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:1 +#, fuzzy +msgid "Import sieve script" +msgstr "Mostra stampanti" + +#: personal/mail/sieve/templates/import_script.tpl:2 +msgid "" +"Please select the sieve script you want to import. Use the import button to " +"import the script or the cancel button to abort." +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:5 +#, fuzzy +msgid "Script to import" +msgstr "Script path" + +#: personal/mail/sieve/templates/element_address.tpl:18 +#: personal/mail/sieve/templates/element_header.tpl:19 +#: personal/mail/sieve/templates/element_vacation.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:19 +#, fuzzy +msgid "Normal view" +msgstr "CAP" + +#: personal/mail/sieve/templates/element_address.tpl:25 +#: personal/mail/sieve/templates/element_header.tpl:26 +#: personal/mail/sieve/templates/element_envelope.tpl:26 +#, fuzzy +msgid "Match type" +msgstr "Oggetto corrispondente" + +#: personal/mail/sieve/templates/element_address.tpl:28 +#: personal/mail/sieve/templates/element_address.tpl:51 +#: personal/mail/sieve/templates/element_address.tpl:61 +#: personal/mail/sieve/templates/element_address.tpl:72 +#: personal/mail/sieve/templates/element_address.tpl:121 +#: personal/mail/sieve/templates/element_address.tpl:126 +#: personal/mail/sieve/templates/element_header.tpl:29 +#: personal/mail/sieve/templates/element_header.tpl:52 +#: personal/mail/sieve/templates/element_header.tpl:63 +#: personal/mail/sieve/templates/element_header.tpl:114 +#: personal/mail/sieve/templates/element_header.tpl:119 +#: personal/mail/sieve/templates/element_boolean.tpl:5 +#: personal/mail/sieve/templates/element_envelope.tpl:29 +#: personal/mail/sieve/templates/element_envelope.tpl:52 +#: personal/mail/sieve/templates/element_envelope.tpl:63 +#: personal/mail/sieve/templates/element_envelope.tpl:113 +#: personal/mail/sieve/templates/element_envelope.tpl:118 +msgid "Boolean value" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:36 +#: personal/mail/sieve/templates/element_header.tpl:37 +#: personal/mail/sieve/templates/element_envelope.tpl:37 +#, fuzzy +msgid "Invert test" +msgstr "Elimina foto" + +#: personal/mail/sieve/templates/element_address.tpl:40 +#: personal/mail/sieve/templates/element_header.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#, fuzzy +msgid "Yes" +msgstr "Sistemi" + +#: personal/mail/sieve/templates/element_address.tpl:42 +#: personal/mail/sieve/templates/element_header.tpl:43 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +#, fuzzy +msgid "No" +msgstr "nessuno" + +#: personal/mail/sieve/templates/element_address.tpl:48 +msgid "Part of address that should be used" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:58 +#: personal/mail/sieve/templates/element_header.tpl:49 +#: personal/mail/sieve/templates/element_envelope.tpl:49 +#, fuzzy +msgid "Comparator" +msgstr "Computer" + +#: personal/mail/sieve/templates/element_address.tpl:69 +#: personal/mail/sieve/templates/element_envelope.tpl:60 +#, fuzzy +msgid "Operator" +msgstr "Computer" + +#: personal/mail/sieve/templates/element_address.tpl:85 +#: personal/mail/sieve/templates/element_header.tpl:77 +#: personal/mail/sieve/templates/element_envelope.tpl:76 +msgid "Address fields to include" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:89 +#: personal/mail/sieve/templates/element_header.tpl:81 +#: personal/mail/sieve/templates/element_envelope.tpl:80 +msgid "Values to match for" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:118 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_header.tpl:111 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:110 +msgid "-" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:138 +#: personal/mail/sieve/templates/element_header.tpl:131 +#: personal/mail/sieve/templates/element_vacation.tpl:47 +#: personal/mail/sieve/templates/element_envelope.tpl:130 +#, fuzzy +msgid "Expert view" +msgstr "nella cartella" + +#: personal/mail/sieve/templates/element_fileinto.tpl:4 +#, fuzzy +msgid "Move mail into folder" +msgstr "nella cartella" + +#: personal/mail/sieve/templates/element_fileinto.tpl:8 +#, fuzzy +msgid "Select from list" +msgstr "Rimuovi" + +#: personal/mail/sieve/templates/element_fileinto.tpl:10 +#, fuzzy +msgid "Manual selection" +msgstr "Lingua" + +#: personal/mail/sieve/templates/element_fileinto.tpl:18 +#, fuzzy +msgid "Folder" +msgstr "Filtro" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#, fuzzy +msgid "Move this object up one position" +msgstr "Oggetti membri" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Up" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:9 +#: personal/mail/sieve/templates/object_container.tpl:9 +msgid "Move up" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +msgid "Move this object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +#: personal/mail/sieve/templates/object_container.tpl:12 +#, fuzzy +msgid "Down" +msgstr "Dominio" + +#: personal/mail/sieve/templates/object_container_clear.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:13 +#, fuzzy +msgid "Move down" +msgstr "Dominio" + +#: personal/mail/sieve/templates/object_container_clear.tpl:16 +#, fuzzy +msgid "Remove this object" +msgstr "Oggetti membri" + +#: personal/mail/sieve/templates/object_container_clear.tpl:17 +#: personal/mail/sieve/templates/object_container.tpl:17 +#, fuzzy +msgid "Remove element" +msgstr "Elimina contatto" + +#: personal/mail/sieve/templates/create_script.tpl:2 +msgid "" +"Please enter the name for the new script below. Script names must consist of " +"lower case characters only." +msgstr "" + +#: personal/mail/sieve/templates/create_script.tpl:8 +#, fuzzy +msgid "Script name" +msgstr "Script path" + +#: personal/mail/sieve/templates/select_test_type.tpl:1 +#, fuzzy +msgid "Select the type of test you want to add" +msgstr "Selezioni utenti da aggiungere" + +#: personal/mail/sieve/templates/select_test_type.tpl:3 +#, fuzzy +msgid "Available test types" +msgstr "Applicazioni disponibili" + +#: personal/mail/sieve/templates/element_comment.tpl:8 +msgid "Edit" +msgstr "Modifica" + +#: personal/mail/sieve/templates/element_header.tpl:60 +msgid "operator" +msgstr "" + +#: personal/mail/sieve/templates/element_keep.tpl:9 +#, fuzzy +msgid "Keep message" +msgstr "Elimina questo record" + +#: personal/mail/sieve/templates/element_redirect.tpl:18 +msgid "Redirect mail to following recipients" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:13 +#, fuzzy +msgid "Vacation Message" +msgstr "Messaggio di di risposta automatica" + +#: personal/mail/sieve/templates/element_vacation.tpl:21 +#, fuzzy +msgid "Release interval" +msgstr "Rimuovi" + +#: personal/mail/sieve/templates/element_vacation.tpl:25 +msgid "days" +msgstr "giorni" + +#: personal/mail/sieve/templates/element_vacation.tpl:30 +#, fuzzy +msgid "Alternative sender addresses" +msgstr "Indirizzi alternativi" + +#: personal/mail/sieve/templates/element_boolean.tpl:4 +msgid "Bool" +msgstr "" + +#: personal/mail/sieve/templates/element_boolean.tpl:8 +#, fuzzy +msgid "update" +msgstr "Aggiorna" + +#: personal/mail/sieve/templates/remove_script.tpl:2 +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Warning" +msgstr "Attenzione" + +#: personal/mail/sieve/templates/remove_script.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: personal/mail/sieve/templates/remove_script.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"script in a file. So - if you've done so - press 'Delete' to continue or " +"'Cancel' to abort." +msgstr "" + +#: personal/mail/sieve/templates/object_test_container.tpl:6 +#, fuzzy +msgid "Add object" +msgstr "Oggetto corrispondente" + +#: personal/mail/sieve/templates/object_test_container.tpl:10 +#: personal/mail/sieve/templates/object_container.tpl:16 +#, fuzzy +msgid "Remove object" +msgstr "Oggetti membri" + +#: personal/mail/sieve/templates/object_container.tpl:8 +#, fuzzy +msgid "Move object up one position" +msgstr "Oggetti membri" + +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Move object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:21 +#, fuzzy +msgid "choose element" +msgstr "Elimina contatto" + +#: personal/mail/sieve/templates/object_container.tpl:24 +#, fuzzy +msgid "Fileinto" +msgstr "Cognome" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:42 +#, fuzzy +msgid "Add new" +msgstr "Modifica contatto" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add a new object above this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add element above" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:42 +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add a new object below this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add element below" +msgstr "" + +#: personal/mail/sieve/templates/element_size.tpl:16 +#, fuzzy +msgid "Select match type" +msgstr "Rimuovi" + +#: personal/mail/sieve/templates/element_size.tpl:20 +#, fuzzy +msgid "Select value unit" +msgstr "Imposta dipartimento" + +#: personal/mail/sieve/templates/element_stop.tpl:9 +msgid "Stop execution here" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:14 +#, fuzzy +msgid "Reject mail" +msgstr "Rifiuta mail più grandi di" + +#: personal/mail/sieve/templates/element_reject.tpl:17 +msgid "This is a multiline text element" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:19 +#, fuzzy +msgid "This is stored as single string" +msgstr "Questo fa qualcosa" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:6 +msgid "Export" +msgstr "Esporta" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:12 +msgid "View structured" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:14 +#, fuzzy +msgid "View source" +msgstr "Servizi" + +#: personal/mail/sieve/templates/management.tpl:1 +#, fuzzy +msgid "List of sieve scripts" +msgstr "Lista degli utenti" + +#: personal/mail/sieve/templates/management.tpl:5 +msgid "" +"Connection to the sieve server could not be established, the " +"authentification attribute is empty." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:6 +msgid "" +"Please verify that the attributes uid and mail are not empty and try again." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:12 +msgid "Connection to the sieve server could not be established." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:15 +msgid "Possibly the sieve account has not been created yet." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:19 +msgid "" +"Be careful. All your changes will be saved directly to sieve, if you use the " +"save button below." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:22 +#, fuzzy +msgid "Create new script" +msgstr "Crea in" + +#: personal/mail/sieve/class_sieveElement_Require.inc:73 +#, fuzzy +msgid "Please specify at least one valid requirement." +msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#: personal/mail/sieve/class_sieveElement_Reject.inc:21 +msgid "Invalid character found, quotes are not allowed in a reject message." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:37 +msgid "Your reject text here" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#, fuzzy +msgid "Complete address" +msgstr "incompleto" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#: personal/mail/sieve/class_sieveElement_If.inc:33 +#, fuzzy +msgid "Default" +msgstr "Stampante predefinita" + +#: personal/mail/sieve/class_sieveElement_If.inc:28 +#, fuzzy +msgid "Domain part" +msgstr "Utenti di Dominio" + +#: personal/mail/sieve/class_sieveElement_If.inc:29 +msgid "Local part" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Case insensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:34 +msgid "Case sensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:35 +msgid "Numeric" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:39 +msgid "is" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:40 +#, fuzzy +msgid "regex" +msgstr "reset" + +#: personal/mail/sieve/class_sieveElement_If.inc:41 +#, fuzzy +msgid "contains" +msgstr "Azioni" + +#: personal/mail/sieve/class_sieveElement_If.inc:42 +#, fuzzy +msgid "matches" +msgstr "Annulla" + +#: personal/mail/sieve/class_sieveElement_If.inc:43 +#, fuzzy +msgid "count" +msgstr "Sicurezza" + +#: personal/mail/sieve/class_sieveElement_If.inc:44 +#, fuzzy +msgid "value is" +msgstr "valido" + +#: personal/mail/sieve/class_sieveElement_If.inc:48 +#, fuzzy +msgid "less than" +msgstr "Benvenuto %s!" + +#: personal/mail/sieve/class_sieveElement_If.inc:49 +msgid "less or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:50 +#, fuzzy +msgid "equals" +msgstr "Dettagli" + +#: personal/mail/sieve/class_sieveElement_If.inc:51 +msgid "greater or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:52 +#: personal/mail/sieve/class_sieveElement_If.inc:726 +#: personal/mail/sieve/class_sieveElement_If.inc:1059 +msgid "greater than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:53 +#, fuzzy +msgid "not equal" +msgstr "incompleto" + +#: personal/mail/sieve/class_sieveElement_If.inc:102 +#, fuzzy +msgid "Can't save empty tests." +msgstr "Rimuovi" + +#: personal/mail/sieve/class_sieveElement_If.inc:446 +#, fuzzy +msgid "emtpy" +msgstr "Riprova" + +#: personal/mail/sieve/class_sieveElement_If.inc:447 +#, fuzzy +msgid "empty" +msgstr "Riprova" + +#: personal/mail/sieve/class_sieveElement_If.inc:493 +msgid "Nothing specified right now" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:595 +msgid "Invalid type of address part." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:605 +#, fuzzy +msgid "Invalid match type given." +msgstr "L'uid contiene dei caratteri invalidi!" + +#: personal/mail/sieve/class_sieveElement_If.inc:621 +#, fuzzy +msgid "Invalid operator given." +msgstr "L'uid contiene dei caratteri invalidi!" + +#: personal/mail/sieve/class_sieveElement_If.inc:638 +#, fuzzy +msgid "Please specify a valid operator." +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/mail/sieve/class_sieveElement_If.inc:654 +msgid "" +"Invalid character found in address attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:669 +msgid "" +"Invalid character found in value attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:727 +#: personal/mail/sieve/class_sieveElement_If.inc:1060 +msgid "lower than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:729 +#: personal/mail/sieve/class_sieveElement_If.inc:1062 +msgid "Megabyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:730 +#: personal/mail/sieve/class_sieveElement_If.inc:1063 +msgid "Kilobyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:731 +#: personal/mail/sieve/class_sieveElement_If.inc:1064 +#, fuzzy +msgid "Bytes" +msgstr "Sistemi" + +#: personal/mail/sieve/class_sieveElement_If.inc:745 +#, fuzzy +msgid "Please select a valid match type in the list box below." +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/mail/sieve/class_sieveElement_If.inc:759 +msgid "Only numeric values are allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:769 +msgid "No valid unit selected" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:876 +#, fuzzy +msgid "Empty" +msgstr "Riprova" + +#: personal/mail/sieve/class_sieveElement_If.inc:1134 +#: personal/mail/sieve/class_sieveElement_If.inc:1164 +#, fuzzy +msgid "Click here to add a new test" +msgstr "Clicca qui per connetterti" + +#: personal/mail/sieve/class_sieveElement_If.inc:1176 +msgid "Unhandled switch type" +msgstr "" + +#: personal/mail/sieve/class_My_Tree.inc:245 +#, fuzzy +msgid "Cannot remove last element!" +msgstr "Elimina contatto" + +#: personal/mail/sieve/class_My_Tree.inc:658 +msgid "Require must be the first command in the script." +msgstr "" + +#: personal/mail/class_mailAccount.inc:51 +#: addons/mailqueue/class_mailqueue.inc:7 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/mail/class_mailAccount.inc:635 +#: personal/mail/class_mail-methods.inc:131 +#: personal/mail/class_mail-methods.inc:462 +#, fuzzy +msgid "Configuration error" +msgstr "File di configurazione" + +#: personal/mail/class_mailAccount.inc:635 +#, fuzzy, php-format +msgid "No DESC tag in vacation template '%s'!" +msgstr "Manca il DESC tag nel messaggio di risposta automatica:" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "Permission error" +msgstr "Permessi" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "You have no permission to modify these addresses!" +msgstr "Non hai il permesso di cambiare la tua password." + +#: personal/mail/class_mailAccount.inc:755 +#: personal/mail/class_mailAccount.inc:758 +msgid "unknown" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1122 +#: personal/mail/class_mailAccount.inc:1130 +#: personal/mail/class_mailAccount.inc:1279 +#, fuzzy +msgid "Mail reject size" +msgstr "Inoltra i messaggi a" + +#: personal/mail/class_mailAccount.inc:1134 +#: personal/mail/class_mailAccount.inc:1286 +#, fuzzy +msgid "Spam folder" +msgstr "nella cartella" + +#: personal/mail/class_mailAccount.inc:1140 +#: personal/mail/class_mailAccount.inc:1291 +#, fuzzy +msgid "Vacation interval" +msgstr "Messaggio di di risposta automatica" + +#: personal/mail/class_mailAccount.inc:1415 +msgid "My account" +msgstr "Identità" + +#: personal/mail/class_mailAccount.inc:1424 +#, fuzzy +msgid "Add vacation information" +msgstr "Informazioni organizzazione" + +#: personal/mail/class_mailAccount.inc:1427 +msgid "Use spam filter" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1428 +msgid "Spam level" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1429 +msgid "Spam mail box" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1431 +#, fuzzy +msgid "Sieve management" +msgstr "Dirigenza" + +#: personal/mail/class_mailAccount.inc:1433 +#, fuzzy +msgid "Reject due to mailsize" +msgstr "Rifiuta mail più grandi di" + +#: personal/mail/class_mailAccount.inc:1436 +#: personal/mail/class_mailAccount.inc:1441 +#, fuzzy +msgid "Forwarding address" +msgstr "Indirizzo principale" + +#: personal/mail/class_mailAccount.inc:1437 +#, fuzzy +msgid "Local delivery" +msgstr "Ultimo recapito" + +#: personal/mail/class_mailAccount.inc:1438 +#, fuzzy +msgid "No delivery to own mailbox " +msgstr "Non recapitare nella propria mailbox" + +#: personal/mail/class_mailAccount.inc:1439 +#, fuzzy +msgid "Mail alternative addresses" +msgstr "Indirizzi alternativi" + +#: personal/mail/main.inc:138 +msgid "User mail settings" +msgstr "Opzioni di posta dell'identità" + +#: personal/mail/class_mail-methods.inc:132 +#, php-format +msgid "The configured mail attribute '%s' is unsupported!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:463 +#, php-format +msgid "Mail method '%s' is unknown!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:689 +#: personal/mail/class_mail-methods.inc:690 +#, fuzzy +msgid "None" +msgstr "nessuno" + +#: personal/mail/class_mail-methods.inc:779 +msgid "Unknown" +msgstr "" + +#: personal/mail/class_mail-methods.inc:781 +#, fuzzy +msgid "Unlimited" +msgstr "non definito" + +#: personal/mail/class_mail-methods-cyrus.inc:39 +msgid "There are no IMAP compatible mail servers defined!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:44 +msgid "Mail server for this account is invalid!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy +msgid "IMAP error" +msgstr "Errore LDAP" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, php-format +msgid "Cannot modify IMAP mailbox quota: %s" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:354 +#: personal/mail/class_mail-methods-cyrus.inc:391 +msgid "The module imap_getacl is not implemented!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:563 +#, php-format +msgid "Cannot activate SIEVE script: %s" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:6 +#: addons/mailqueue/class_mailqueue.inc:331 addons/mailqueue/main.inc:56 +msgid "Mail queue" +msgstr "Coda della posta" + +#: addons/mailqueue/class_mailqueue.inc:205 +msgid "up" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:207 +#, fuzzy +msgid "down" +msgstr "Dominio" + +#: addons/mailqueue/class_mailqueue.inc:218 +#: addons/mailqueue/class_mailqueue.inc:318 +msgid "All" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:262 +msgid "no limit" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:265 +msgid "hour" +msgstr "ora" + +#: addons/mailqueue/class_mailqueue.inc:267 +#, fuzzy +msgid "hours" +msgstr "ora" + +#: addons/mailqueue/class_mailqueue.inc:319 +msgid "Hold" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:320 +msgid "Un hold" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:322 +msgid "Not active" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:332 +#: addons/mailqueue/class_mailqueue.inc:337 +#, fuzzy +msgid "Mail queue addon" +msgstr "Coda della posta" + +#: addons/mailqueue/class_mailqueue.inc:340 +#, fuzzy +msgid "Unhold all messages" +msgstr "Inoltra i messaggi a" + +#: addons/mailqueue/class_mailqueue.inc:341 addons/mailqueue/contents.tpl:38 +#, fuzzy +msgid "Hold all messages" +msgstr "Inoltra i messaggi a" + +#: addons/mailqueue/class_mailqueue.inc:342 +#, fuzzy +msgid "Delete all messages" +msgstr "Elimina questo record" + +#: addons/mailqueue/class_mailqueue.inc:343 addons/mailqueue/contents.tpl:48 +msgid "Requeue all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:344 +#, fuzzy +msgid "Unhold message" +msgstr "Home Page" + +#: addons/mailqueue/class_mailqueue.inc:345 addons/mailqueue/contents.tpl:120 +#, fuzzy +msgid "Hold message" +msgstr "Home Page" + +#: addons/mailqueue/class_mailqueue.inc:346 +#, fuzzy +msgid "Delete message" +msgstr "Elimina questo record" + +#: addons/mailqueue/class_mailqueue.inc:347 +#, fuzzy +msgid "Requeue message" +msgstr "Rimuovi" + +#: addons/mailqueue/class_mailqueue.inc:348 +msgid "Gathering queue data" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:349 +#, fuzzy +msgid "Get header information" +msgstr "Informazioni generali" + +#: addons/mailqueue/contents.tpl:10 addons/mailqueue/contents.tpl:28 +msgid "Search" +msgstr "Cerca" + +#: addons/mailqueue/contents.tpl:11 +msgid "Search for" +msgstr "Cerca" + +#: addons/mailqueue/contents.tpl:12 +#, fuzzy +msgid "Please enter a search string here." +msgstr "Prego inserire un numero di telefono valido!" + +#: addons/mailqueue/contents.tpl:14 +#, fuzzy +msgid "Select a server" +msgstr "Rimuovi" + +#: addons/mailqueue/contents.tpl:18 +msgid "with status" +msgstr "" + +#: addons/mailqueue/contents.tpl:23 +msgid "within the last" +msgstr "" + +#: addons/mailqueue/contents.tpl:33 +msgid "Remove all messages" +msgstr "" + +#: addons/mailqueue/contents.tpl:34 +msgid "Remove all messages from selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:39 +msgid "Hold all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:43 +msgid "Release all messages" +msgstr "" + +#: addons/mailqueue/contents.tpl:44 +msgid "Release all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:49 +msgid "Requeue all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:63 +msgid "Search returned no results" +msgstr "" + +#: addons/mailqueue/contents.tpl:72 +#, fuzzy +msgid "ID" +msgstr "UID" + +#: addons/mailqueue/contents.tpl:75 +#, fuzzy +msgid "Arrival" +msgstr "Aprile" + +#: addons/mailqueue/contents.tpl:76 +msgid "Sender" +msgstr "" + +#: addons/mailqueue/contents.tpl:77 +#, fuzzy +msgid "Recipient" +msgstr "Descrizione" + +#: addons/mailqueue/contents.tpl:78 +msgid "Status" +msgstr "Stato" + +#: addons/mailqueue/contents.tpl:105 +msgid "delete" +msgstr "elimina" + +#: addons/mailqueue/contents.tpl:105 +#, fuzzy +msgid "Delete this message" +msgstr "Elimina questo record" + +#: addons/mailqueue/contents.tpl:113 +msgid "unhold" +msgstr "" + +#: addons/mailqueue/contents.tpl:113 +#, fuzzy +msgid "Release message" +msgstr "Rimuovi" + +#: addons/mailqueue/contents.tpl:120 +#, fuzzy +msgid "hold" +msgstr "metodo" + +#: addons/mailqueue/contents.tpl:127 +#, fuzzy +msgid "requeue" +msgstr "Numero di telefono" + +#: addons/mailqueue/contents.tpl:127 +msgid "Requeue this message" +msgstr "" + +#: addons/mailqueue/contents.tpl:133 +#, fuzzy +msgid "header" +msgstr "leggere" + +#: addons/mailqueue/contents.tpl:134 +#, fuzzy +msgid "Display header of this message" +msgstr "Mostra utenti che corrispondono a" + +#, fuzzy +#~ msgid "Cannot connect mail method: %s" +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot remove mailbox: %s." +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot update mailbox: %s." +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot write quota settings: %s." +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot connect mail method! Error was: %s." +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot remove mailbox! Error was: %s." +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Cannot update mailbox! Error was: %s." +#~ msgstr "Rimuovi" + +#, fuzzy +#~ msgid "Specify the mail server where the user will be hosted on" +#~ msgstr "Specifica il server di posta per l'utente" + +#~ msgid "not defined" +#~ msgstr "non definito" + +#~ msgid "read" +#~ msgstr "leggere" + +#~ msgid "post" +#~ msgstr "spedire" + +#~ msgid "external post" +#~ msgstr "spedire esterno" + +#~ msgid "append" +#~ msgstr "appendere" + +#~ msgid "write" +#~ msgstr "scrivere" + +#, fuzzy +#~ msgid "admin" +#~ msgstr "DN dell'amministratore" + +#, fuzzy +#~ msgid "mail" +#~ msgstr "Posta" + +#, fuzzy +#~ msgid "forward address" +#~ msgstr "Indirizzo principale" + +#, fuzzy +#~ msgid "Cannot forward to users own mail address!" +#~ msgstr "Stai cercando di aggungere un indirizzo di posta non valido" + +#, fuzzy +#~ msgid "Alternate address" +#~ msgstr "Indirizzi alternativi" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#, fuzzy +#~ msgid "Mails" +#~ msgstr "Posta" + +#, fuzzy +#~ msgid "Tasks" +#~ msgstr "classe" + +#, fuzzy +#~ msgid "Journals" +#~ msgstr "ora" + +#, fuzzy +#~ msgid "Contacts" +#~ msgstr "Contatto" + +#, fuzzy +#~ msgid "Notes" +#~ msgstr "nessuno" + +#, fuzzy +#~ msgid "Drafts" +#~ msgstr "Data" + +#, fuzzy +#~ msgid "Sent items" +#~ msgstr "Stato" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "Nome gruppo" + +#~ msgid "Mail options" +#~ msgstr "Opzioni di posta" + +#, fuzzy +#~ msgid "You have no permission to submit a '%s' command!" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "There is no mail method '%s' specified in your gosa.conf available." +#~ msgstr "Il metodo di posta '%s' non è definito in gosa.conf" + +#~ msgid "" +#~ "Adding your one of your own addresses to the forwarders makes no sense." +#~ msgstr "Aggiungere il tuo indirizzo alla lista delgi inoltri non ha senso." + +#, fuzzy +#~ msgid "alternate address" +#~ msgstr "Indirizzi alternativi" + +#~ msgid "Delete" +#~ msgstr "Rimuovi" + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Apply" +#~ msgstr "Applica" + +#~ msgid "" +#~ "This account has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "Questa identià possiede estensioni di posta." + +#~ msgid "" +#~ "This account has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "Questa identità non possiede estensioni di posta." + +#, fuzzy +#~ msgid "You're trying to add an invalid email address " +#~ msgstr "" +#~ "Stai tentandi di aggiungere un indirizzo di posta non valido alla lista " +#~ "degli inoltri" + +#~ msgid "" +#~ "You're trying to add an invalid email address to the list of alternate " +#~ "addresses." +#~ msgstr "" +#~ "Stai cercando di aggungere un indirizzo di posta non valido alla lista " +#~ "degli indirizzi alternativi." + +#~ msgid "The address you're trying to add is already used by user" +#~ msgstr "L'indirizzo che stai cercando di aggiungere gi in uso" + +#~ msgid "The required field 'Primary address' is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#~ msgid "Please enter a valid email addres in 'Primary address' field." +#~ msgstr "" +#~ "Prego inserire un indirizzo email valido nel campo 'Indirizzo principale'" + +#~ msgid "The primary address you've entered is already in use." +#~ msgstr "L'indirizzo principale inserito è già in uso." + +#~ msgid "Value in 'Quota size' is not valid." +#~ msgstr "Il valore di 'Dimensione quota' non è valido" + +#~ msgid "Please specify a vaild mail size for mails to be rejected." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please specify a numeric value for header size limit." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please specify a numeric value for mailbox size limit." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please specify a numeric value for message size limit." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "Please specify a server identifier." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please specify a connect url." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please specify an admin user." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please specify a password for the admin user." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Please specify a valid value for '%s'." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "" +#~ "This group has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "Questa identià possiede estensioni di posta." + +#, fuzzy +#~ msgid "" +#~ "This group has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "Questa identità non possiede estensioni di posta." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "" +#~ "Inserire un indirizzo di posta valido nel campo 'Indirizzo principale'." + +#~ msgid "Back" +#~ msgstr "Indietro" + +#, fuzzy +#~ msgid "Mailqueue" +#~ msgstr "Coda della posta" + +#, fuzzy +#~ msgid "Mailqueue addon" +#~ msgstr "Coda della posta" + +#~ msgid "This account has no mail extensions." +#~ msgstr "Questa identità non ha le estensioni per la posta" + +#~ msgid "January" +#~ msgstr "Gennaio" + +#~ msgid "February" +#~ msgstr "Febbraio" + +#~ msgid "March" +#~ msgstr "Marzo" + +#~ msgid "April" +#~ msgstr "Aprile" + +#~ msgid "May" +#~ msgstr "Maggio" + +#~ msgid "June" +#~ msgstr "Giugno" + +#~ msgid "July" +#~ msgstr "Luglio" + +#~ msgid "August" +#~ msgstr "Agosto" + +#~ msgid "September" +#~ msgstr "Settembre" + +#~ msgid "October" +#~ msgstr "Ottobre" + +#~ msgid "November" +#~ msgstr "Novembre" + +#~ msgid "December" +#~ msgstr "Dicembre" + +#, fuzzy +#~ msgid "Removing of user/mail account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "Saving of user/mail account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " +#~ "questo dialogo" + +#, fuzzy +#~ msgid "Saving of object group/mail with dn '%s' failed." +#~ msgstr "Account Kolab" + +#, fuzzy +#~ msgid "Removing of object group/mail with dn '%s' failed." +#~ msgstr "Elimina estensioni Unix" + +#, fuzzy +#~ msgid "Saving of server services/anti virus with dn '%s' failed." +#~ msgstr "Crea estensioni telefoniche" + +#, fuzzy +#~ msgid "Saving of server services/spamassassin with dn '%s' failed." +#~ msgstr "Crea estensioni telefoniche" + +#, fuzzy +#~ msgid "Saving server services/mail with dn '%s' failed." +#~ msgstr "Crea estensioni telefoniche" + +#, fuzzy +#~ msgid "Removing of groups/mail with dn '%s' failed." +#~ msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "Saving of groups/mail with dn '%s' failed." +#~ msgstr "Opzioni di posta dell'identità" diff --git a/trunk/gosa-plugins/mail/locale/messages.po b/trunk/gosa-plugins/mail/locale/messages.po new file mode 100644 index 000000000..cc4bb5165 --- /dev/null +++ b/trunk/gosa-plugins/mail/locale/messages.po @@ -0,0 +1,2188 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 09:00+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/ogroups/mail/mail.tpl:7 +msgid "Mail distribution list" +msgstr "" + +#: admin/ogroups/mail/mail.tpl:10 admin/groups/mail/mail.tpl:7 +#: admin/groups/mail/paste_mail.tpl:8 +#: admin/groups/mail/class_groupMail.inc:838 personal/mail/copypaste.tpl:7 +#: personal/mail/generic.tpl:9 personal/mail/class_mailAccount.inc:1086 +msgid "Primary address" +msgstr "" + +#: admin/ogroups/mail/mail.tpl:13 +msgid "Primary mail address for this distribution list" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:50 +msgid "Remove mail account" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:51 +#: admin/ogroups/mail/class_mailogroup.inc:54 +msgid "mail group" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:53 +msgid "Create mail account" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +#: admin/ogroups/mail/class_mailogroup.inc:93 +#: admin/ogroups/mail/class_mailogroup.inc:194 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: admin/groups/mail/class_groupMail.inc:840 +#: admin/groups/mail/class_groupMail.inc:971 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: personal/mail/class_mailAccount.inc:1090 +#: personal/mail/class_mailAccount.inc:1094 +#: personal/mail/class_mailAccount.inc:1105 +#: personal/mail/class_mailAccount.inc:1420 +msgid "Mail address" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +msgid "your-name@your-domain.com" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:120 +#: admin/ogroups/mail/class_mailogroup.inc:157 +#: admin/systems/services/imap/class_goImapServer.inc:190 +#: admin/systems/services/spam/class_goSpamServer.inc:277 +#: admin/systems/services/virus/class_goVirusServer.inc:154 +#: admin/systems/services/mail/class_goMailServer.inc:582 +#: admin/groups/mail/class_groupMail.inc:531 +#: admin/groups/mail/class_groupMail.inc:760 +#: personal/mail/class_mailAccount.inc:915 +#: personal/mail/class_mailAccount.inc:982 +msgid "LDAP error" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:186 +#: admin/ogroups/mail/paste_mail.tpl:4 +#: admin/groups/mail/class_groupMail.inc:276 +#: admin/groups/mail/class_groupMail.inc:278 +#: admin/groups/mail/class_groupMail.inc:279 +#: admin/groups/mail/class_groupMail.inc:284 +#: admin/groups/mail/class_groupMail.inc:286 +#: admin/groups/mail/class_groupMail.inc:287 +#: admin/groups/mail/class_groupMail.inc:828 +#: admin/groups/mail/class_groupMail.inc:963 +#: personal/mail/class_mailAccount.inc:50 +#: personal/mail/class_mailAccount.inc:239 +#: personal/mail/class_mailAccount.inc:247 +#: personal/mail/class_mailAccount.inc:249 +#: personal/mail/class_mailAccount.inc:254 +#: personal/mail/class_mailAccount.inc:256 +#: personal/mail/class_mailAccount.inc:1074 +#: personal/mail/class_mailAccount.inc:1264 +#: personal/mail/class_mailAccount.inc:1410 +msgid "Mail" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:187 +msgid "Mail group" +msgstr "" + +#: admin/ogroups/mail/paste_mail.tpl:7 +msgid "Please enter a mail address" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:48 +msgid "IMAP/POP3 service" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:53 +#: admin/systems/services/imap/class_goImapServer.inc:212 +msgid "Repair database" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:100 +msgid "IMAP/POP3 (Cyrus) service" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:110 +#: admin/systems/services/imap/class_goImapServer.inc:214 +#: admin/systems/services/imap/goImapServer.tpl:7 +msgid "Server identifier" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:114 +#: admin/systems/services/imap/class_goImapServer.inc:116 +#: admin/systems/services/imap/class_goImapServer.inc:215 +#: admin/systems/services/imap/goImapServer.tpl:16 +msgid "Connect URL" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:120 +#: admin/systems/services/imap/class_goImapServer.inc:122 +#: admin/systems/services/imap/class_goImapServer.inc:219 +#: admin/systems/services/imap/goImapServer.tpl:43 +msgid "Sieve connect URL" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:123 +#, php-format +msgid "Valid options are: %s" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:127 +#: admin/systems/services/imap/class_goImapServer.inc:216 +#: admin/systems/services/imap/goImapServer.tpl:25 +msgid "Admin user" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:130 +#: admin/systems/services/imap/goImapServer.tpl:34 +msgid "Password" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:199 +#: admin/systems/services/imap/class_goImapServer.inc:200 +msgid "IMAP/POP3" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:200 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Services" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:209 +#: admin/systems/services/virus/class_goVirusServer.inc:228 +msgid "Start" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:229 +#: personal/mail/sieve/class_sieveManagement.inc:501 +#: personal/mail/sieve/class_sieveManagement.inc:719 +#: personal/mail/sieve/templates/object_container.tpl:30 +#: personal/mail/sieve/templates/element_stop.tpl:4 +msgid "Stop" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:211 +#: admin/systems/services/virus/class_goVirusServer.inc:230 +msgid "Restart" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:217 +msgid "Admin password" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:220 +#: admin/systems/services/imap/goImapServer.tpl:61 +msgid "Start IMAP service" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:221 +#: admin/systems/services/imap/goImapServer.tpl:70 +msgid "Start IMAP SSL service" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:222 +#: admin/systems/services/imap/goImapServer.tpl:79 +msgid "Start POP3 service" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:223 +#: admin/systems/services/imap/goImapServer.tpl:88 +msgid "Start POP3 SSL service" +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:1 +#: admin/systems/services/mail/goMailServer.tpl:1 admin/groups/mail/mail.tpl:4 +#: personal/mail/generic.tpl:5 +msgid "Generic" +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:99 +#: admin/systems/services/mail/goMailServer.tpl:204 +msgid "The server must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:101 +#: admin/systems/services/mail/goMailServer.tpl:206 +msgid "The service must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:104 +#: admin/systems/services/mail/goMailServer.tpl:209 +msgid "Set new status" +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Set status" +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Execute" +msgstr "" + +#: admin/systems/services/spam/goSpamServerRule.tpl:6 +msgid "Name" +msgstr "" + +#: admin/systems/services/spam/goSpamServerRule.tpl:14 +msgid "Rule" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:42 +#: admin/systems/services/spam/class_goSpamServer.inc:320 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/spam/class_goSpamServer.inc:347 +msgid "Spamassassin" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:143 +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#: admin/groups/mail/class_groupMail.inc:341 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:360 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: personal/mail/sieve/class_sieveManagement.inc:201 +#: personal/mail/sieve/class_sieveManagement.inc:206 +#: personal/mail/sieve/class_sieveManagement.inc:212 +#: personal/mail/sieve/class_sieveManagement.inc:218 +#: personal/mail/sieve/class_sieveManagement.inc:429 +#: personal/mail/sieve/class_My_Tree.inc:660 +#: personal/mail/class_mailAccount.inc:311 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:329 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: addons/mailqueue/class_mailqueue.inc:110 +#: addons/mailqueue/class_mailqueue.inc:144 +#: addons/mailqueue/class_mailqueue.inc:150 +msgid "Error" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:216 +msgid "Trusted network" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:287 +msgid "Score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:329 +#: admin/systems/services/spam/goSpamServer.tpl:8 +msgid "Rewrite header" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:330 +msgid "Trusted networks" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:331 +#: admin/systems/services/spam/goSpamServer.tpl:18 +msgid "Required score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:332 +msgid "Rules" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:334 +#: admin/systems/services/spam/goSpamServer.tpl:69 +msgid "Enable use of bayes filtering" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:335 +msgid "Enabled bayes auto learning" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:336 +#: admin/systems/services/spam/goSpamServer.tpl:75 +msgid "Enable RBL checks" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:337 +#: admin/systems/services/spam/goSpamServer.tpl:86 +msgid "Enable use of Razor" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:338 +#: admin/systems/services/spam/goSpamServer.tpl:89 +msgid "Enable use of DDC" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:339 +#: admin/systems/services/spam/goSpamServer.tpl:92 +msgid "Enable use of Pyzor" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:22 +msgid "Select required score to tag mail as spam" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:48 +#: admin/systems/services/mail/goMailServer.tpl:73 +#: admin/systems/services/mail/goMailServer.tpl:104 +msgid "Remove" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:72 +msgid "Enable bayes auto learning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:45 +#: admin/systems/services/virus/class_goVirusServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:219 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +msgid "Anti virus" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:163 +#: admin/systems/services/virus/class_goVirusServer.inc:238 +msgid "Maximum directory recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:164 +#: admin/systems/services/virus/class_goVirusServer.inc:237 +#: admin/systems/services/virus/goVirusServer.tpl:43 +msgid "Maximum threads" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:165 +#: admin/systems/services/virus/class_goVirusServer.inc:240 +#: admin/systems/services/virus/goVirusServer.tpl:134 +msgid "Maximum file size" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:166 +#: admin/systems/services/virus/class_goVirusServer.inc:241 +msgid "Maximum recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:167 +#: admin/systems/services/virus/class_goVirusServer.inc:242 +#: admin/systems/services/virus/goVirusServer.tpl:152 +msgid "Maximum compression ratio" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:168 +#: admin/systems/services/virus/class_goVirusServer.inc:244 +#: admin/systems/services/virus/goVirusServer.tpl:71 +msgid "Checks per day" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/goVirusServer.tpl:13 +msgid "Database user" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:245 +#: admin/systems/services/virus/goVirusServer.tpl:33 +msgid "Http proxy URL" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:243 +#: admin/systems/services/virus/goVirusServer.tpl:23 +msgid "Database mirror" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:232 +#: admin/systems/services/virus/goVirusServer.tpl:84 +msgid "Enable debugging" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:233 +#: admin/systems/services/virus/goVirusServer.tpl:92 +msgid "Enable mail scanning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:234 +#: admin/systems/services/virus/goVirusServer.tpl:117 +msgid "Enable scanning of archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:235 +#: admin/systems/services/virus/goVirusServer.tpl:125 +msgid "Block encrypted archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:239 +msgid "Anti virus user" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:5 +msgid "Generic virus filtering" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:47 +msgid "Select number of maximal threads" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:61 +msgid "Max directory recursions" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:101 +msgid "Archive scanning" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:143 +msgid "Maximum recursion" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:45 +#: admin/systems/services/mail/class_goMailServer.inc:512 +msgid "Mail smtp service (Postfix)" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:600 +#: admin/systems/services/mail/class_goMailServer.inc:711 +msgid "Header size limit" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:603 +msgid "Mailbox size limit" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:606 +msgid "Message size limit" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:700 +msgid "Mail smtp (Postfix)" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Mail smtp - Postfix" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:709 +#: admin/systems/services/mail/goMailServer.tpl:7 +msgid "Visible full qualified hostname" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:710 +msgid "Description" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:712 +#: admin/systems/services/mail/goMailServer.tpl:26 +msgid "Max mailbox size" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:713 +#: admin/systems/services/mail/goMailServer.tpl:35 +msgid "Max message size" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:714 +#: admin/systems/services/mail/goMailServer.tpl:91 +msgid "Domains to accept mail for" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:715 +#: admin/systems/services/mail/goMailServer.tpl:60 +msgid "Local networks" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:716 +#: admin/systems/services/mail/goMailServer.tpl:45 +msgid "Relay host" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:717 +msgid "Transport table" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:718 +#: admin/systems/services/mail/goMailServer.tpl:149 +msgid "Restrictions for sender" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:719 +#: admin/systems/services/mail/goMailServer.tpl:175 +msgid "Restrictions for recipient" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:11 +msgid "The full qualified host name." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:16 +msgid "Max mail header size" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:21 +msgid "This value specifies the maximal header size." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:21 +#: admin/systems/services/mail/goMailServer.tpl:31 +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "KB" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:31 +msgid "Defines the maximal size of mail box." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "Specify the maximal size of a message." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:50 +msgid "Relay messages to following host:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:62 +msgid "Postfix networks" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:83 +msgid "Domains and routing" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:93 +msgid "Postfix is responsible for the following domains:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:114 +msgid "Transports" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:123 +msgid "Select a transport protocol." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:141 +msgid "Restrictions" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:157 +#: admin/systems/services/mail/goMailServer.tpl:183 +msgid "Restriction filter" +msgstr "" + +#: admin/groups/mail/mail.tpl:35 personal/mail/generic.tpl:30 +#: addons/mailqueue/contents.tpl:73 +msgid "Server" +msgstr "" + +#: admin/groups/mail/mail.tpl:42 personal/mail/generic.tpl:37 +msgid "Specify the mail server where the user will be hosted on" +msgstr "" + +#: admin/groups/mail/mail.tpl:56 personal/mail/generic.tpl:53 +msgid "Quota usage" +msgstr "" + +#: admin/groups/mail/mail.tpl:60 admin/groups/mail/class_groupMail.inc:847 +#: admin/groups/mail/class_groupMail.inc:972 personal/mail/generic.tpl:57 +#: personal/mail/class_mailAccount.inc:1113 +#: personal/mail/class_mailAccount.inc:1270 +#: personal/mail/class_mailAccount.inc:1422 +msgid "Quota size" +msgstr "" + +#: admin/groups/mail/mail.tpl:73 admin/groups/mail/class_groupMail.inc:974 +msgid "Folder type" +msgstr "" + +#: admin/groups/mail/mail.tpl:91 +msgid "Reload" +msgstr "" + +#: admin/groups/mail/mail.tpl:102 admin/groups/mail/paste_mail.tpl:23 +#: personal/mail/copypaste.tpl:25 personal/mail/generic.tpl:73 +msgid "Alternative addresses" +msgstr "" + +#: admin/groups/mail/mail.tpl:107 admin/groups/mail/paste_mail.tpl:24 +#: personal/mail/copypaste.tpl:55 personal/mail/generic.tpl:76 +msgid "List of alternative mail addresses" +msgstr "" + +#: admin/groups/mail/mail.tpl:136 +msgid "IMAP shared folders" +msgstr "" + +#: admin/groups/mail/mail.tpl:143 +msgid "Default permission" +msgstr "" + +#: admin/groups/mail/mail.tpl:145 +msgid "Member permission" +msgstr "" + +#: admin/groups/mail/mail.tpl:163 +msgid "Hide" +msgstr "" + +#: admin/groups/mail/mail.tpl:165 +msgid "Show" +msgstr "" + +#: admin/groups/mail/mail.tpl:187 personal/mail/generic.tpl:303 +msgid "Advanced mail options" +msgstr "" + +#: admin/groups/mail/mail.tpl:193 personal/mail/generic.tpl:309 +msgid "Select if user can only send and receive inside his own domain" +msgstr "" + +#: admin/groups/mail/mail.tpl:195 personal/mail/generic.tpl:311 +msgid "User is only allowed to send and receive local mails" +msgstr "" + +#: admin/groups/mail/mail.tpl:204 admin/groups/mail/paste_mail.tpl:34 +msgid "Forward messages to non group members" +msgstr "" + +#: admin/groups/mail/mail.tpl:213 +msgid "Used in all groups" +msgstr "" + +#: admin/groups/mail/mail.tpl:216 +msgid "Not used in all groups" +msgstr "" + +#: admin/groups/mail/mail.tpl:234 admin/groups/mail/paste_mail.tpl:42 +#: personal/mail/copypaste.tpl:44 personal/mail/generic.tpl:290 +#: personal/mail/generic.tpl:293 +msgid "Add local" +msgstr "" + +#: admin/groups/mail/paste_mail.tpl:1 personal/mail/copypaste.tpl:1 +#: personal/mail/class_mailAccount.inc:1411 +msgid "Mail settings" +msgstr "" + +#: admin/groups/mail/paste_mail.tpl:12 +msgid "Primary mail address for this shared folder" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:6 personal/mail/mail_locals.tpl:7 +msgid "Select addresses to add" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:22 personal/mail/mail_locals.tpl:25 +msgid "Filters" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:32 +msgid "Display addresses of department" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:33 personal/mail/mail_locals.tpl:38 +msgid "Choose the department the search will be based on" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:42 +msgid "Display addresses matching" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:45 personal/mail/mail_locals.tpl:52 +msgid "Regular expression for matching addresses" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:52 personal/mail/mail_locals.tpl:60 +msgid "Display addresses of user" +msgstr "" + +#: admin/groups/mail/mail_locals.tpl:55 personal/mail/mail_locals.tpl:64 +msgid "User name of which addresses are shown" +msgstr "" + +#: admin/groups/mail/mail_admins.tpl:4 +msgid "Folder administrators" +msgstr "" + +#: admin/groups/mail/mail_admins.tpl:24 +msgid "Select a specific department" +msgstr "" + +#: admin/groups/mail/mail_admins.tpl:30 +msgid "Choose" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:111 +#: admin/groups/mail/class_groupMail.inc:118 +#: admin/groups/mail/class_groupMail.inc:125 +#: admin/groups/mail/class_groupMail.inc:132 +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:140 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:547 +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:773 +#: admin/groups/mail/class_groupMail.inc:777 +#: admin/groups/mail/class_groupMail.inc:781 +#: admin/groups/mail/class_groupMail.inc:790 +#: personal/mail/class_mailAccount.inc:147 +#: personal/mail/class_mailAccount.inc:154 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:162 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:928 +#: personal/mail/class_mailAccount.inc:996 +#: personal/mail/class_mailAccount.inc:1000 +#: personal/mail/class_mailAccount.inc:1004 +#: personal/mail/class_mailAccount.inc:1018 +msgid "Mail error" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:111 +#: personal/mail/class_mailAccount.inc:147 +#, php-format +msgid "Cannot read quota settings: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:118 +#: personal/mail/class_mailAccount.inc:154 +#, php-format +msgid "Cannot get list of mailboxes: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:125 +#, php-format +msgid "Cannot receive folder types: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:132 +#, php-format +msgid "Cannot receive folder permissions: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:773 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:996 +#, php-format +msgid "Mail method cannot connect: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:140 +#: personal/mail/class_mailAccount.inc:162 +#, php-format +msgid "Mailbox '%s' doesn't exists on mail server: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:297 +msgid "" +"Remove shared folder from mail server database when entry gets removed in " +"LDAP" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:298 +msgid "Remove the shared folder and all its contents after saving this account" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:341 +#: personal/mail/class_mailAccount.inc:311 +msgid "Please select an entry!" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:360 +#: personal/mail/class_mailAccount.inc:329 +msgid "Cannot add primary address to the list of forwarders!" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:405 +#: personal/mail/class_mailAccount.inc:372 +#, php-format +msgid "Address is already in use by user '%s'." +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:547 +#: personal/mail/class_mailAccount.inc:928 +#, php-format +msgid "Cannot remove mailbox: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:790 +#, php-format +msgid "Cannot update shared folder permissions: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:649 +msgid "New" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:777 +#: personal/mail/class_mailAccount.inc:1000 +#, php-format +msgid "Cannot update mailbox: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:781 +#: personal/mail/class_mailAccount.inc:1004 +#, php-format +msgid "Cannot write quota settings: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:822 +#, php-format +msgid "" +"The group 'cn' has changed. It can't be changed due to the fact that mail " +"method '%s' relies on it!" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:856 +#: personal/mail/class_mailAccount.inc:1434 +msgid "Mail max size" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:864 +msgid "You need to set the maximum mail size in order to reject anything." +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:868 +#: admin/groups/mail/class_groupMail.inc:973 +#: personal/mail/class_mailAccount.inc:1421 +msgid "Mail server" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:964 +msgid "Group mail" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:974 +msgid "Kolab" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:975 +msgid "Alternate addresses" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:976 +msgid "Forwarding addresses" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:977 +msgid "Only local" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:978 +msgid "Permissions" +msgstr "" + +#: personal/mail/copypaste.tpl:13 personal/mail/generic.tpl:267 +msgid "Forward messages to" +msgstr "" + +#: personal/mail/generic.tpl:115 personal/mail/class_mailAccount.inc:1442 +msgid "Use custom sieve script" +msgstr "" + +#: personal/mail/generic.tpl:115 +msgid "disables all Mail options!" +msgstr "" + +#: personal/mail/generic.tpl:123 +msgid "Sieve Management" +msgstr "" + +#: personal/mail/generic.tpl:144 +msgid "Select if you want to forward mails without getting own copies of them" +msgstr "" + +#: personal/mail/generic.tpl:144 +msgid "No delivery to own mailbox" +msgstr "" + +#: personal/mail/generic.tpl:151 +msgid "" +"Select to automatically response with the vacation message defined below" +msgstr "" + +#: personal/mail/generic.tpl:153 +msgid "Activate vacation message" +msgstr "" + +#: personal/mail/generic.tpl:161 +msgid "from" +msgstr "" + +#: personal/mail/generic.tpl:185 +msgid "till" +msgstr "" + +#: personal/mail/generic.tpl:214 +msgid "Select if you want to filter this mails through spamassassin" +msgstr "" + +#: personal/mail/generic.tpl:216 +msgid "Move mails tagged with spam level greater than" +msgstr "" + +#: personal/mail/generic.tpl:219 +msgid "Choose spam level - smaller values are more sensitive" +msgstr "" + +#: personal/mail/generic.tpl:223 +msgid "to folder" +msgstr "" + +#: personal/mail/generic.tpl:235 +msgid "Reject mails bigger than" +msgstr "" + +#: personal/mail/generic.tpl:238 +msgid "MB" +msgstr "" + +#: personal/mail/generic.tpl:245 +#: personal/mail/sieve/class_sieveManagement.inc:502 +#: personal/mail/sieve/class_sieveManagement.inc:720 +#: personal/mail/sieve/templates/element_vacation.tpl:44 +#: personal/mail/sieve/templates/object_container.tpl:31 +#: personal/mail/class_mailAccount.inc:1425 +msgid "Vacation message" +msgstr "" + +#: personal/mail/generic.tpl:261 +#: personal/mail/sieve/templates/import_script.tpl:12 +#: personal/mail/sieve/templates/edit_frame_base.tpl:7 +msgid "Import" +msgstr "" + +#: personal/mail/mail_locals.tpl:35 +msgid "Select department" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Vacation.inc:148 +msgid "Alternative sender address must be a valid email addresses." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:114 +#: personal/mail/sieve/class_sieveManagement.inc:242 +msgid "Parse failed" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:118 +#: personal/mail/sieve/class_sieveManagement.inc:246 +msgid "Parse successful" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:156 +#, php-format +msgid "" +"The specified mail server '%s' does not exist within the GOsa configuration." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:201 +msgid "No script name specified!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:206 +msgid "Please use only lowercase script names!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:212 +msgid "Please use only alphabetical characters in script names!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:218 +msgid "Script name already in use!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:349 +#: personal/mail/sieve/class_sieveManagement.inc:398 +#: personal/mail/sieve/class_sieveManagement.inc:402 +#: personal/mail/sieve/class_sieveManagement.inc:433 +#: personal/mail/sieve/class_sieveManagement.inc:519 +#: personal/mail/sieve/class_sieveManagement.inc:770 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#: personal/mail/sieve/class_sieveManagement.inc:1043 +msgid "SIEVE error" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#, php-format +msgid "Cannot log into SIEVE server: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/class_mail-methods-cyrus.inc:468 +#, php-format +msgid "Cannot retrieve SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:349 +#, php-format +msgid "Cannot remove SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:395 +msgid "Edited" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:429 +msgid "Uploaded script is empty!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +msgid "Internal error" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, php-format +msgid "Cannot access temporary file '%s'!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:433 +#, php-format +msgid "Cannot open temporary file '%s'!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:493 +#: personal/mail/sieve/class_sieveManagement.inc:496 +#: personal/mail/sieve/class_sieveManagement.inc:711 +#: personal/mail/sieve/class_sieveManagement.inc:714 +#: personal/mail/sieve/templates/element_keep.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:22 +#: personal/mail/sieve/templates/object_container.tpl:25 +msgid "Keep" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:494 +#: personal/mail/sieve/class_sieveManagement.inc:712 +#: personal/mail/sieve/templates/element_comment.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:23 +msgid "Comment" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:495 +#: personal/mail/sieve/class_sieveManagement.inc:713 +msgid "File into" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:497 +#: personal/mail/sieve/class_sieveManagement.inc:715 +#: personal/mail/sieve/templates/element_discard.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:26 +msgid "Discard" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:498 +#: personal/mail/sieve/class_sieveManagement.inc:716 +#: personal/mail/sieve/templates/element_redirect.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:27 +msgid "Redirect" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:499 +#: personal/mail/sieve/class_sieveManagement.inc:717 +#: personal/mail/sieve/templates/object_container.tpl:28 +msgid "Reject" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:500 +#: personal/mail/sieve/class_sieveManagement.inc:718 +#: personal/mail/sieve/templates/object_container.tpl:29 +#: personal/mail/sieve/templates/element_require.tpl:12 +msgid "Require" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:503 +#: personal/mail/sieve/class_sieveManagement.inc:721 +#: personal/mail/sieve/templates/object_container.tpl:32 +#: personal/mail/sieve/class_sieveElement_If.inc:836 +msgid "If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:519 +msgid "Cannot add new element!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:562 +#: personal/mail/sieve/class_sieveManagement.inc:756 +#: personal/mail/sieve/templates/element_else.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:33 +#: personal/mail/sieve/class_sieveElement_If.inc:840 +msgid "Else" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:564 +#: personal/mail/sieve/class_sieveManagement.inc:758 +#: personal/mail/sieve/class_sieveManagement.inc:763 +#: personal/mail/sieve/templates/element_elsif.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:34 +#: personal/mail/sieve/class_sieveElement_If.inc:838 +msgid "Else If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:589 +#: personal/mail/sieve/templates/element_address.tpl:15 +#: personal/mail/sieve/templates/element_address.tpl:113 +msgid "Address" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:590 +#: personal/mail/sieve/templates/element_header.tpl:16 +#: personal/mail/sieve/templates/element_header.tpl:106 +msgid "Header" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:591 +#: personal/mail/sieve/templates/element_envelope.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:105 +msgid "Envelope" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:592 +#: personal/mail/sieve/templates/element_size.tpl:4 +#: addons/mailqueue/contents.tpl:74 +msgid "Size" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:593 +#: personal/mail/sieve/templates/element_exists.tpl:8 +msgid "Exists" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:594 +#: personal/mail/sieve/templates/element_allof.tpl:10 +msgid "All of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:595 +#: personal/mail/sieve/templates/element_anyof.tpl:10 +msgid "Any of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:596 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "True" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:597 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "False" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:634 +#: addons/mailqueue/class_mailqueue.inc:321 addons/mailqueue/contents.tpl:93 +msgid "Active" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:635 +msgid "This script is marked as active" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:640 +msgid "Script length" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:644 +msgid "Remove script" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:653 +msgid "Activate script" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:657 +msgid "Edit script" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:672 +#, php-format +msgid "Can't log into SIEVE server. Server says '%s'." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:770 +msgid "Cannot insert element at the requested position!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#: personal/mail/class_mail-methods-cyrus.inc:556 +#, php-format +msgid "Cannot store SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1045 +msgid "Failed to save sieve script" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:24 +msgid "Please specify a valid email address." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:35 +msgid "Place a mail address here" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Comment.inc:21 +msgid "Your comment here" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:1 +msgid "Add a new element" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:2 +msgid "Please select the type of element you want to add" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:11 +#: personal/mail/sieve/templates/select_test_type.tpl:11 +msgid "Continue" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:13 +msgid "Abort" +msgstr "" + +#: personal/mail/sieve/templates/element_discard.tpl:9 +msgid "Discard message" +msgstr "" + +#: personal/mail/sieve/templates/element_if.tpl:4 +#: personal/mail/sieve/class_sieveElement_If.inc:834 +msgid "Condition" +msgstr "" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_address.tpl:116 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_header.tpl:109 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_envelope.tpl:108 +msgid "Not" +msgstr "" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_anyof.tpl:7 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "Inverse match" +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:1 +msgid "Import sieve script" +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:2 +msgid "" +"Please select the sieve script you want to import. Use the import button to " +"import the script or the cancel button to abort." +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:5 +msgid "Script to import" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:18 +#: personal/mail/sieve/templates/element_header.tpl:19 +#: personal/mail/sieve/templates/element_vacation.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:19 +msgid "Normal view" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:25 +#: personal/mail/sieve/templates/element_header.tpl:26 +#: personal/mail/sieve/templates/element_envelope.tpl:26 +msgid "Match type" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:28 +#: personal/mail/sieve/templates/element_address.tpl:51 +#: personal/mail/sieve/templates/element_address.tpl:61 +#: personal/mail/sieve/templates/element_address.tpl:72 +#: personal/mail/sieve/templates/element_address.tpl:121 +#: personal/mail/sieve/templates/element_address.tpl:126 +#: personal/mail/sieve/templates/element_header.tpl:29 +#: personal/mail/sieve/templates/element_header.tpl:52 +#: personal/mail/sieve/templates/element_header.tpl:63 +#: personal/mail/sieve/templates/element_header.tpl:114 +#: personal/mail/sieve/templates/element_header.tpl:119 +#: personal/mail/sieve/templates/element_boolean.tpl:5 +#: personal/mail/sieve/templates/element_envelope.tpl:29 +#: personal/mail/sieve/templates/element_envelope.tpl:52 +#: personal/mail/sieve/templates/element_envelope.tpl:63 +#: personal/mail/sieve/templates/element_envelope.tpl:113 +#: personal/mail/sieve/templates/element_envelope.tpl:118 +msgid "Boolean value" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:36 +#: personal/mail/sieve/templates/element_header.tpl:37 +#: personal/mail/sieve/templates/element_envelope.tpl:37 +msgid "Invert test" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:40 +#: personal/mail/sieve/templates/element_header.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +msgid "Yes" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:42 +#: personal/mail/sieve/templates/element_header.tpl:43 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "No" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:48 +msgid "Part of address that should be used" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:58 +#: personal/mail/sieve/templates/element_header.tpl:49 +#: personal/mail/sieve/templates/element_envelope.tpl:49 +msgid "Comparator" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:69 +#: personal/mail/sieve/templates/element_envelope.tpl:60 +msgid "Operator" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:85 +#: personal/mail/sieve/templates/element_header.tpl:77 +#: personal/mail/sieve/templates/element_envelope.tpl:76 +msgid "Address fields to include" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:89 +#: personal/mail/sieve/templates/element_header.tpl:81 +#: personal/mail/sieve/templates/element_envelope.tpl:80 +msgid "Values to match for" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:118 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_header.tpl:111 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:110 +msgid "-" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:138 +#: personal/mail/sieve/templates/element_header.tpl:131 +#: personal/mail/sieve/templates/element_vacation.tpl:47 +#: personal/mail/sieve/templates/element_envelope.tpl:130 +msgid "Expert view" +msgstr "" + +#: personal/mail/sieve/templates/element_fileinto.tpl:4 +msgid "Move mail into folder" +msgstr "" + +#: personal/mail/sieve/templates/element_fileinto.tpl:8 +msgid "Select from list" +msgstr "" + +#: personal/mail/sieve/templates/element_fileinto.tpl:10 +msgid "Manual selection" +msgstr "" + +#: personal/mail/sieve/templates/element_fileinto.tpl:18 +msgid "Folder" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +msgid "Move this object up one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Up" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:9 +#: personal/mail/sieve/templates/object_container.tpl:9 +msgid "Move up" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +msgid "Move this object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Down" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:13 +msgid "Move down" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:16 +msgid "Remove this object" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:17 +#: personal/mail/sieve/templates/object_container.tpl:17 +msgid "Remove element" +msgstr "" + +#: personal/mail/sieve/templates/create_script.tpl:2 +msgid "" +"Please enter the name for the new script below. Script names must consist of " +"lower case characters only." +msgstr "" + +#: personal/mail/sieve/templates/create_script.tpl:8 +msgid "Script name" +msgstr "" + +#: personal/mail/sieve/templates/select_test_type.tpl:1 +msgid "Select the type of test you want to add" +msgstr "" + +#: personal/mail/sieve/templates/select_test_type.tpl:3 +msgid "Available test types" +msgstr "" + +#: personal/mail/sieve/templates/element_comment.tpl:8 +msgid "Edit" +msgstr "" + +#: personal/mail/sieve/templates/element_header.tpl:60 +msgid "operator" +msgstr "" + +#: personal/mail/sieve/templates/element_keep.tpl:9 +msgid "Keep message" +msgstr "" + +#: personal/mail/sieve/templates/element_redirect.tpl:18 +msgid "Redirect mail to following recipients" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:13 +msgid "Vacation Message" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:21 +msgid "Release interval" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:25 +msgid "days" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:30 +msgid "Alternative sender addresses" +msgstr "" + +#: personal/mail/sieve/templates/element_boolean.tpl:4 +msgid "Bool" +msgstr "" + +#: personal/mail/sieve/templates/element_boolean.tpl:8 +msgid "update" +msgstr "" + +#: personal/mail/sieve/templates/remove_script.tpl:2 +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Warning" +msgstr "" + +#: personal/mail/sieve/templates/remove_script.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" + +#: personal/mail/sieve/templates/remove_script.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"script in a file. So - if you've done so - press 'Delete' to continue or " +"'Cancel' to abort." +msgstr "" + +#: personal/mail/sieve/templates/object_test_container.tpl:6 +msgid "Add object" +msgstr "" + +#: personal/mail/sieve/templates/object_test_container.tpl:10 +#: personal/mail/sieve/templates/object_container.tpl:16 +msgid "Remove object" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Move object up one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Move object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:21 +msgid "choose element" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:24 +msgid "Fileinto" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:42 +msgid "Add new" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add a new object above this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add element above" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:42 +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add a new object below this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add element below" +msgstr "" + +#: personal/mail/sieve/templates/element_size.tpl:16 +msgid "Select match type" +msgstr "" + +#: personal/mail/sieve/templates/element_size.tpl:20 +msgid "Select value unit" +msgstr "" + +#: personal/mail/sieve/templates/element_stop.tpl:9 +msgid "Stop execution here" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:14 +msgid "Reject mail" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:17 +msgid "This is a multiline text element" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:19 +msgid "This is stored as single string" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:6 +msgid "Export" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:12 +msgid "View structured" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:14 +msgid "View source" +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:1 +msgid "List of sieve scripts" +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:5 +msgid "" +"Connection to the sieve server could not be established, the " +"authentification attribute is empty." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:6 +msgid "" +"Please verify that the attributes uid and mail are not empty and try again." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:12 +msgid "Connection to the sieve server could not be established." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:15 +msgid "Possibly the sieve account has not been created yet." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:19 +msgid "" +"Be careful. All your changes will be saved directly to sieve, if you use the " +"save button below." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:22 +msgid "Create new script" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Require.inc:73 +msgid "Please specify at least one valid requirement." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:21 +msgid "Invalid character found, quotes are not allowed in a reject message." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:37 +msgid "Your reject text here" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +msgid "Complete address" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Default" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:28 +msgid "Domain part" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:29 +msgid "Local part" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Case insensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:34 +msgid "Case sensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:35 +msgid "Numeric" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:39 +msgid "is" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:40 +msgid "regex" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:41 +msgid "contains" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:42 +msgid "matches" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:43 +msgid "count" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:44 +msgid "value is" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:48 +msgid "less than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:49 +msgid "less or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:50 +msgid "equals" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:51 +msgid "greater or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:52 +#: personal/mail/sieve/class_sieveElement_If.inc:726 +#: personal/mail/sieve/class_sieveElement_If.inc:1059 +msgid "greater than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:53 +msgid "not equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:102 +msgid "Can't save empty tests." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:446 +msgid "emtpy" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:447 +msgid "empty" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:493 +msgid "Nothing specified right now" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:595 +msgid "Invalid type of address part." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:605 +msgid "Invalid match type given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:621 +msgid "Invalid operator given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:638 +msgid "Please specify a valid operator." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:654 +msgid "" +"Invalid character found in address attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:669 +msgid "" +"Invalid character found in value attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:727 +#: personal/mail/sieve/class_sieveElement_If.inc:1060 +msgid "lower than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:729 +#: personal/mail/sieve/class_sieveElement_If.inc:1062 +msgid "Megabyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:730 +#: personal/mail/sieve/class_sieveElement_If.inc:1063 +msgid "Kilobyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:731 +#: personal/mail/sieve/class_sieveElement_If.inc:1064 +msgid "Bytes" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:745 +msgid "Please select a valid match type in the list box below." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:759 +msgid "Only numeric values are allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:769 +msgid "No valid unit selected" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:876 +msgid "Empty" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:1134 +#: personal/mail/sieve/class_sieveElement_If.inc:1164 +msgid "Click here to add a new test" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:1176 +msgid "Unhandled switch type" +msgstr "" + +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Cannot remove last element!" +msgstr "" + +#: personal/mail/sieve/class_My_Tree.inc:658 +msgid "Require must be the first command in the script." +msgstr "" + +#: personal/mail/class_mailAccount.inc:51 +#: addons/mailqueue/class_mailqueue.inc:7 +msgid "This does something" +msgstr "" + +#: personal/mail/class_mailAccount.inc:635 +#: personal/mail/class_mail-methods.inc:131 +#: personal/mail/class_mail-methods.inc:462 +msgid "Configuration error" +msgstr "" + +#: personal/mail/class_mailAccount.inc:635 +#, php-format +msgid "No DESC tag in vacation template '%s'!" +msgstr "" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +msgid "Permission error" +msgstr "" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +msgid "You have no permission to modify these addresses!" +msgstr "" + +#: personal/mail/class_mailAccount.inc:755 +#: personal/mail/class_mailAccount.inc:758 +msgid "unknown" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1122 +#: personal/mail/class_mailAccount.inc:1130 +#: personal/mail/class_mailAccount.inc:1279 +msgid "Mail reject size" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1134 +#: personal/mail/class_mailAccount.inc:1286 +msgid "Spam folder" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1140 +#: personal/mail/class_mailAccount.inc:1291 +msgid "Vacation interval" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1415 +msgid "My account" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1424 +msgid "Add vacation information" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1427 +msgid "Use spam filter" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1428 +msgid "Spam level" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1429 +msgid "Spam mail box" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1431 +msgid "Sieve management" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1433 +msgid "Reject due to mailsize" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1436 +#: personal/mail/class_mailAccount.inc:1441 +msgid "Forwarding address" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1437 +msgid "Local delivery" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1438 +msgid "No delivery to own mailbox " +msgstr "" + +#: personal/mail/class_mailAccount.inc:1439 +msgid "Mail alternative addresses" +msgstr "" + +#: personal/mail/main.inc:138 +msgid "User mail settings" +msgstr "" + +#: personal/mail/class_mail-methods.inc:132 +#, php-format +msgid "The configured mail attribute '%s' is unsupported!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:463 +#, php-format +msgid "Mail method '%s' is unknown!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:689 +#: personal/mail/class_mail-methods.inc:690 +msgid "None" +msgstr "" + +#: personal/mail/class_mail-methods.inc:779 +msgid "Unknown" +msgstr "" + +#: personal/mail/class_mail-methods.inc:781 +msgid "Unlimited" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:39 +msgid "There are no IMAP compatible mail servers defined!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:44 +msgid "Mail server for this account is invalid!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +msgid "IMAP error" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, php-format +msgid "Cannot modify IMAP mailbox quota: %s" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:354 +#: personal/mail/class_mail-methods-cyrus.inc:391 +msgid "The module imap_getacl is not implemented!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:563 +#, php-format +msgid "Cannot activate SIEVE script: %s" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:6 +#: addons/mailqueue/class_mailqueue.inc:331 addons/mailqueue/main.inc:56 +msgid "Mail queue" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:205 +msgid "up" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:207 +msgid "down" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:218 +#: addons/mailqueue/class_mailqueue.inc:318 +msgid "All" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:262 +msgid "no limit" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:265 +msgid "hour" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:267 +msgid "hours" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:319 +msgid "Hold" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:320 +msgid "Un hold" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:322 +msgid "Not active" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:332 +#: addons/mailqueue/class_mailqueue.inc:337 +msgid "Mail queue addon" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:340 +msgid "Unhold all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:341 addons/mailqueue/contents.tpl:38 +msgid "Hold all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:342 +msgid "Delete all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:343 addons/mailqueue/contents.tpl:48 +msgid "Requeue all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:344 +msgid "Unhold message" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:345 addons/mailqueue/contents.tpl:120 +msgid "Hold message" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:346 +msgid "Delete message" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:347 +msgid "Requeue message" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:348 +msgid "Gathering queue data" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:349 +msgid "Get header information" +msgstr "" + +#: addons/mailqueue/contents.tpl:10 addons/mailqueue/contents.tpl:28 +msgid "Search" +msgstr "" + +#: addons/mailqueue/contents.tpl:11 +msgid "Search for" +msgstr "" + +#: addons/mailqueue/contents.tpl:12 +msgid "Please enter a search string here." +msgstr "" + +#: addons/mailqueue/contents.tpl:14 +msgid "Select a server" +msgstr "" + +#: addons/mailqueue/contents.tpl:18 +msgid "with status" +msgstr "" + +#: addons/mailqueue/contents.tpl:23 +msgid "within the last" +msgstr "" + +#: addons/mailqueue/contents.tpl:33 +msgid "Remove all messages" +msgstr "" + +#: addons/mailqueue/contents.tpl:34 +msgid "Remove all messages from selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:39 +msgid "Hold all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:43 +msgid "Release all messages" +msgstr "" + +#: addons/mailqueue/contents.tpl:44 +msgid "Release all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:49 +msgid "Requeue all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:63 +msgid "Search returned no results" +msgstr "" + +#: addons/mailqueue/contents.tpl:72 +msgid "ID" +msgstr "" + +#: addons/mailqueue/contents.tpl:75 +msgid "Arrival" +msgstr "" + +#: addons/mailqueue/contents.tpl:76 +msgid "Sender" +msgstr "" + +#: addons/mailqueue/contents.tpl:77 +msgid "Recipient" +msgstr "" + +#: addons/mailqueue/contents.tpl:78 +msgid "Status" +msgstr "" + +#: addons/mailqueue/contents.tpl:105 +msgid "delete" +msgstr "" + +#: addons/mailqueue/contents.tpl:105 +msgid "Delete this message" +msgstr "" + +#: addons/mailqueue/contents.tpl:113 +msgid "unhold" +msgstr "" + +#: addons/mailqueue/contents.tpl:113 +msgid "Release message" +msgstr "" + +#: addons/mailqueue/contents.tpl:120 +msgid "hold" +msgstr "" + +#: addons/mailqueue/contents.tpl:127 +msgid "requeue" +msgstr "" + +#: addons/mailqueue/contents.tpl:127 +msgid "Requeue this message" +msgstr "" + +#: addons/mailqueue/contents.tpl:133 +msgid "header" +msgstr "" + +#: addons/mailqueue/contents.tpl:134 +msgid "Display header of this message" +msgstr "" diff --git a/trunk/gosa-plugins/mail/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mail/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..302a1a072 --- /dev/null +++ b/trunk/gosa-plugins/mail/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,2788 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 09:00+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/ogroups/mail/mail.tpl:7 +msgid "Mail distribution list" +msgstr "Mail distributielijst" + +#: admin/ogroups/mail/mail.tpl:10 admin/groups/mail/mail.tpl:7 +#: admin/groups/mail/paste_mail.tpl:8 +#: admin/groups/mail/class_groupMail.inc:838 personal/mail/copypaste.tpl:7 +#: personal/mail/generic.tpl:9 personal/mail/class_mailAccount.inc:1086 +msgid "Primary address" +msgstr "Primair adres" + +#: admin/ogroups/mail/mail.tpl:13 +msgid "Primary mail address for this distribution list" +msgstr "Primair E-mail adres voor deze distributielijst" + +#: admin/ogroups/mail/class_mailogroup.inc:50 +msgid "Remove mail account" +msgstr "E-mail account verwijderen" + +#: admin/ogroups/mail/class_mailogroup.inc:51 +#: admin/ogroups/mail/class_mailogroup.inc:54 +#, fuzzy +msgid "mail group" +msgstr "Primaire groep" + +#: admin/ogroups/mail/class_mailogroup.inc:53 +msgid "Create mail account" +msgstr "E-mail account aanmaken" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +#: admin/ogroups/mail/class_mailogroup.inc:93 +#: admin/ogroups/mail/class_mailogroup.inc:194 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: admin/groups/mail/class_groupMail.inc:840 +#: admin/groups/mail/class_groupMail.inc:971 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: personal/mail/class_mailAccount.inc:1090 +#: personal/mail/class_mailAccount.inc:1094 +#: personal/mail/class_mailAccount.inc:1105 +#: personal/mail/class_mailAccount.inc:1420 +msgid "Mail address" +msgstr "E-mail adres" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +msgid "your-name@your-domain.com" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:120 +#: admin/ogroups/mail/class_mailogroup.inc:157 +#: admin/systems/services/imap/class_goImapServer.inc:190 +#: admin/systems/services/spam/class_goSpamServer.inc:277 +#: admin/systems/services/virus/class_goVirusServer.inc:154 +#: admin/systems/services/mail/class_goMailServer.inc:582 +#: admin/groups/mail/class_groupMail.inc:531 +#: admin/groups/mail/class_groupMail.inc:760 +#: personal/mail/class_mailAccount.inc:915 +#: personal/mail/class_mailAccount.inc:982 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: admin/ogroups/mail/class_mailogroup.inc:186 +#: admin/ogroups/mail/paste_mail.tpl:4 +#: admin/groups/mail/class_groupMail.inc:276 +#: admin/groups/mail/class_groupMail.inc:278 +#: admin/groups/mail/class_groupMail.inc:279 +#: admin/groups/mail/class_groupMail.inc:284 +#: admin/groups/mail/class_groupMail.inc:286 +#: admin/groups/mail/class_groupMail.inc:287 +#: admin/groups/mail/class_groupMail.inc:828 +#: admin/groups/mail/class_groupMail.inc:963 +#: personal/mail/class_mailAccount.inc:50 +#: personal/mail/class_mailAccount.inc:239 +#: personal/mail/class_mailAccount.inc:247 +#: personal/mail/class_mailAccount.inc:249 +#: personal/mail/class_mailAccount.inc:254 +#: personal/mail/class_mailAccount.inc:256 +#: personal/mail/class_mailAccount.inc:1074 +#: personal/mail/class_mailAccount.inc:1264 +#: personal/mail/class_mailAccount.inc:1410 +msgid "Mail" +msgstr "E-mail" + +#: admin/ogroups/mail/class_mailogroup.inc:187 +#, fuzzy +msgid "Mail group" +msgstr "Primaire groep" + +#: admin/ogroups/mail/paste_mail.tpl:7 +#, fuzzy +msgid "Please enter a mail address" +msgstr "Geef a.u.b. een geldige naam op" + +#: admin/systems/services/imap/class_goImapServer.inc:48 +#, fuzzy +msgid "IMAP/POP3 service" +msgstr "IMAP Service" + +#: admin/systems/services/imap/class_goImapServer.inc:53 +#: admin/systems/services/imap/class_goImapServer.inc:212 +#, fuzzy +msgid "Repair database" +msgstr "gebruiker database" + +#: admin/systems/services/imap/class_goImapServer.inc:100 +#, fuzzy +msgid "IMAP/POP3 (Cyrus) service" +msgstr "IMAP Service" + +#: admin/systems/services/imap/class_goImapServer.inc:110 +#: admin/systems/services/imap/class_goImapServer.inc:214 +#: admin/systems/services/imap/goImapServer.tpl:7 +msgid "Server identifier" +msgstr "Server identificatie" + +#: admin/systems/services/imap/class_goImapServer.inc:114 +#: admin/systems/services/imap/class_goImapServer.inc:116 +#: admin/systems/services/imap/class_goImapServer.inc:215 +#: admin/systems/services/imap/goImapServer.tpl:16 +msgid "Connect URL" +msgstr "Verbindingings URL" + +#: admin/systems/services/imap/class_goImapServer.inc:120 +#: admin/systems/services/imap/class_goImapServer.inc:122 +#: admin/systems/services/imap/class_goImapServer.inc:219 +#: admin/systems/services/imap/goImapServer.tpl:43 +#, fuzzy +msgid "Sieve connect URL" +msgstr "Verbindingings URL" + +#: admin/systems/services/imap/class_goImapServer.inc:123 +#, fuzzy, php-format +msgid "Valid options are: %s" +msgstr "E-mail opties" + +#: admin/systems/services/imap/class_goImapServer.inc:127 +#: admin/systems/services/imap/class_goImapServer.inc:216 +#: admin/systems/services/imap/goImapServer.tpl:25 +msgid "Admin user" +msgstr "Beheerder" + +#: admin/systems/services/imap/class_goImapServer.inc:130 +#: admin/systems/services/imap/goImapServer.tpl:34 +msgid "Password" +msgstr "Wachtwoord" + +#: admin/systems/services/imap/class_goImapServer.inc:199 +#: admin/systems/services/imap/class_goImapServer.inc:200 +#, fuzzy +msgid "IMAP/POP3" +msgstr "IMAP Service" + +#: admin/systems/services/imap/class_goImapServer.inc:200 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/imap/class_goImapServer.inc:209 +#: admin/systems/services/virus/class_goVirusServer.inc:228 +#, fuzzy +msgid "Start" +msgstr "Opstarten" + +#: admin/systems/services/imap/class_goImapServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:229 +#: personal/mail/sieve/class_sieveManagement.inc:501 +#: personal/mail/sieve/class_sieveManagement.inc:719 +#: personal/mail/sieve/templates/object_container.tpl:30 +#: personal/mail/sieve/templates/element_stop.tpl:4 +msgid "Stop" +msgstr "Stop" + +#: admin/systems/services/imap/class_goImapServer.inc:211 +#: admin/systems/services/virus/class_goVirusServer.inc:230 +#, fuzzy +msgid "Restart" +msgstr "Opnieuw proberen" + +#: admin/systems/services/imap/class_goImapServer.inc:217 +msgid "Admin password" +msgstr "Beheerders wachtwoord" + +#: admin/systems/services/imap/class_goImapServer.inc:220 +#: admin/systems/services/imap/goImapServer.tpl:61 +#, fuzzy +msgid "Start IMAP service" +msgstr "IMAP Service" + +#: admin/systems/services/imap/class_goImapServer.inc:221 +#: admin/systems/services/imap/goImapServer.tpl:70 +#, fuzzy +msgid "Start IMAP SSL service" +msgstr "IMAP/SSL service" + +#: admin/systems/services/imap/class_goImapServer.inc:222 +#: admin/systems/services/imap/goImapServer.tpl:79 +#, fuzzy +msgid "Start POP3 service" +msgstr "POP3 service" + +#: admin/systems/services/imap/class_goImapServer.inc:223 +#: admin/systems/services/imap/goImapServer.tpl:88 +#, fuzzy +msgid "Start POP3 SSL service" +msgstr "POP3/SSL service" + +#: admin/systems/services/imap/goImapServer.tpl:1 +#: admin/systems/services/mail/goMailServer.tpl:1 admin/groups/mail/mail.tpl:4 +#: personal/mail/generic.tpl:5 +msgid "Generic" +msgstr "Algemeen" + +#: admin/systems/services/imap/goImapServer.tpl:99 +#: admin/systems/services/mail/goMailServer.tpl:204 +msgid "The server must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:101 +#: admin/systems/services/mail/goMailServer.tpl:206 +msgid "The service must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:104 +#: admin/systems/services/mail/goMailServer.tpl:209 +#, fuzzy +msgid "Set new status" +msgstr "Systeem status" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +#, fuzzy +msgid "Set status" +msgstr "Systeem status" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Execute" +msgstr "Commando" + +#: admin/systems/services/spam/goSpamServerRule.tpl:6 +msgid "Name" +msgstr "Naam" + +#: admin/systems/services/spam/goSpamServerRule.tpl:14 +#, fuzzy +msgid "Rule" +msgstr "Funktie" + +#: admin/systems/services/spam/class_goSpamServer.inc:42 +#: admin/systems/services/spam/class_goSpamServer.inc:320 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/spam/class_goSpamServer.inc:347 +msgid "Spamassassin" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:143 +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#: admin/groups/mail/class_groupMail.inc:341 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:360 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: personal/mail/sieve/class_sieveManagement.inc:201 +#: personal/mail/sieve/class_sieveManagement.inc:206 +#: personal/mail/sieve/class_sieveManagement.inc:212 +#: personal/mail/sieve/class_sieveManagement.inc:218 +#: personal/mail/sieve/class_sieveManagement.inc:429 +#: personal/mail/sieve/class_My_Tree.inc:660 +#: personal/mail/class_mailAccount.inc:311 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:329 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: addons/mailqueue/class_mailqueue.inc:110 +#: addons/mailqueue/class_mailqueue.inc:144 +#: addons/mailqueue/class_mailqueue.inc:150 +msgid "Error" +msgstr "Fout" + +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#, fuzzy +msgid "Trusted network" +msgstr "Posix instellingen" + +#: admin/systems/services/spam/class_goSpamServer.inc:287 +msgid "Score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:329 +#: admin/systems/services/spam/goSpamServer.tpl:8 +#, fuzzy +msgid "Rewrite header" +msgstr "header" + +#: admin/systems/services/spam/class_goSpamServer.inc:330 +#, fuzzy +msgid "Trusted networks" +msgstr "Posix instellingen" + +#: admin/systems/services/spam/class_goSpamServer.inc:331 +#: admin/systems/services/spam/goSpamServer.tpl:18 +msgid "Required score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:332 +#, fuzzy +msgid "Rules" +msgstr "Funktie" + +#: admin/systems/services/spam/class_goSpamServer.inc:334 +#: admin/systems/services/spam/goSpamServer.tpl:69 +msgid "Enable use of bayes filtering" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:335 +msgid "Enabled bayes auto learning" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:336 +#: admin/systems/services/spam/goSpamServer.tpl:75 +msgid "Enable RBL checks" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:337 +#: admin/systems/services/spam/goSpamServer.tpl:86 +msgid "Enable use of Razor" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:338 +#: admin/systems/services/spam/goSpamServer.tpl:89 +msgid "Enable use of DDC" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:339 +#: admin/systems/services/spam/goSpamServer.tpl:92 +msgid "Enable use of Pyzor" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:22 +msgid "Select required score to tag mail as spam" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:48 +#: admin/systems/services/mail/goMailServer.tpl:73 +#: admin/systems/services/mail/goMailServer.tpl:104 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/systems/services/spam/goSpamServer.tpl:72 +msgid "Enable bayes auto learning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:45 +#: admin/systems/services/virus/class_goVirusServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:219 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +msgid "Anti virus" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:163 +#: admin/systems/services/virus/class_goVirusServer.inc:238 +msgid "Maximum directory recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:164 +#: admin/systems/services/virus/class_goVirusServer.inc:237 +#: admin/systems/services/virus/goVirusServer.tpl:43 +msgid "Maximum threads" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:165 +#: admin/systems/services/virus/class_goVirusServer.inc:240 +#: admin/systems/services/virus/goVirusServer.tpl:134 +#, fuzzy +msgid "Maximum file size" +msgstr "E-mail grootte" + +#: admin/systems/services/virus/class_goVirusServer.inc:166 +#: admin/systems/services/virus/class_goVirusServer.inc:241 +msgid "Maximum recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:167 +#: admin/systems/services/virus/class_goVirusServer.inc:242 +#: admin/systems/services/virus/goVirusServer.tpl:152 +msgid "Maximum compression ratio" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:168 +#: admin/systems/services/virus/class_goVirusServer.inc:244 +#: admin/systems/services/virus/goVirusServer.tpl:71 +#, fuzzy +msgid "Checks per day" +msgstr "Controleer parameter" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/goVirusServer.tpl:13 +#, fuzzy +msgid "Database user" +msgstr "Databases" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:245 +#: admin/systems/services/virus/goVirusServer.tpl:33 +msgid "Http proxy URL" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:243 +#: admin/systems/services/virus/goVirusServer.tpl:23 +#, fuzzy +msgid "Database mirror" +msgstr "Database" + +#: admin/systems/services/virus/class_goVirusServer.inc:232 +#: admin/systems/services/virus/goVirusServer.tpl:84 +msgid "Enable debugging" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:233 +#: admin/systems/services/virus/goVirusServer.tpl:92 +msgid "Enable mail scanning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:234 +#: admin/systems/services/virus/goVirusServer.tpl:117 +msgid "Enable scanning of archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:235 +#: admin/systems/services/virus/goVirusServer.tpl:125 +msgid "Block encrypted archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:239 +#, fuzzy +msgid "Anti virus user" +msgstr "Voeg DNS service toe" + +#: admin/systems/services/virus/goVirusServer.tpl:5 +#, fuzzy +msgid "Generic virus filtering" +msgstr "Algemene wachtrij instellingen" + +#: admin/systems/services/virus/goVirusServer.tpl:47 +#, fuzzy +msgid "Select number of maximal threads" +msgstr "Selecteer de toe te voegen nummers" + +#: admin/systems/services/virus/goVirusServer.tpl:61 +msgid "Max directory recursions" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:101 +msgid "Archive scanning" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:143 +msgid "Maximum recursion" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:45 +#: admin/systems/services/mail/class_goMailServer.inc:512 +#, fuzzy +msgid "Mail smtp service (Postfix)" +msgstr "Mail server" + +#: admin/systems/services/mail/class_goMailServer.inc:600 +#: admin/systems/services/mail/class_goMailServer.inc:711 +msgid "Header size limit" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:603 +#, fuzzy +msgid "Mailbox size limit" +msgstr "E-mail grootte" + +#: admin/systems/services/mail/class_goMailServer.inc:606 +#, fuzzy +msgid "Message size limit" +msgstr "Bericht" + +#: admin/systems/services/mail/class_goMailServer.inc:700 +msgid "Mail smtp (Postfix)" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Mail smtp - Postfix" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:709 +#: admin/systems/services/mail/goMailServer.tpl:7 +msgid "Visible full qualified hostname" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:710 +msgid "Description" +msgstr "Omschrijving" + +#: admin/systems/services/mail/class_goMailServer.inc:712 +#: admin/systems/services/mail/goMailServer.tpl:26 +#, fuzzy +msgid "Max mailbox size" +msgstr "E-mail grootte" + +#: admin/systems/services/mail/class_goMailServer.inc:713 +#: admin/systems/services/mail/goMailServer.tpl:35 +#, fuzzy +msgid "Max message size" +msgstr "Bericht" + +#: admin/systems/services/mail/class_goMailServer.inc:714 +#: admin/systems/services/mail/goMailServer.tpl:91 +msgid "Domains to accept mail for" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:715 +#: admin/systems/services/mail/goMailServer.tpl:60 +msgid "Local networks" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:716 +#: admin/systems/services/mail/goMailServer.tpl:45 +#, fuzzy +msgid "Relay host" +msgstr "Lijst herladen" + +#: admin/systems/services/mail/class_goMailServer.inc:717 +#, fuzzy +msgid "Transport table" +msgstr "Overdrachtstijd" + +#: admin/systems/services/mail/class_goMailServer.inc:718 +#: admin/systems/services/mail/goMailServer.tpl:149 +#, fuzzy +msgid "Restrictions for sender" +msgstr "Secties voor deze versie" + +#: admin/systems/services/mail/class_goMailServer.inc:719 +#: admin/systems/services/mail/goMailServer.tpl:175 +msgid "Restrictions for recipient" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:11 +msgid "The full qualified host name." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:16 +#, fuzzy +msgid "Max mail header size" +msgstr "E-mail grootte" + +#: admin/systems/services/mail/goMailServer.tpl:21 +#, fuzzy +msgid "This value specifies the maximal header size." +msgstr "De waarde die opgegeven is voor de naam wordt al gebruikt." + +#: admin/systems/services/mail/goMailServer.tpl:21 +#: admin/systems/services/mail/goMailServer.tpl:31 +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "KB" +msgstr "KB" + +#: admin/systems/services/mail/goMailServer.tpl:31 +msgid "Defines the maximal size of mail box." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "Specify the maximal size of a message." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:50 +msgid "Relay messages to following host:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:62 +#, fuzzy +msgid "Postfix networks" +msgstr "Posix instellingen" + +#: admin/systems/services/mail/goMailServer.tpl:83 +#, fuzzy +msgid "Domains and routing" +msgstr "Windows beheerders" + +#: admin/systems/services/mail/goMailServer.tpl:93 +msgid "Postfix is responsible for the following domains:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:114 +#, fuzzy +msgid "Transports" +msgstr "Overdrachtstijd" + +#: admin/systems/services/mail/goMailServer.tpl:123 +msgid "Select a transport protocol." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:141 +#, fuzzy +msgid "Restrictions" +msgstr "Secties" + +#: admin/systems/services/mail/goMailServer.tpl:157 +#: admin/systems/services/mail/goMailServer.tpl:183 +msgid "Restriction filter" +msgstr "" + +#: admin/groups/mail/mail.tpl:35 personal/mail/generic.tpl:30 +#: addons/mailqueue/contents.tpl:73 +msgid "Server" +msgstr "Server" + +#: admin/groups/mail/mail.tpl:42 personal/mail/generic.tpl:37 +msgid "Specify the mail server where the user will be hosted on" +msgstr "Specificeer de mailserver waarop het account opgeslagen wordt" + +#: admin/groups/mail/mail.tpl:56 personal/mail/generic.tpl:53 +msgid "Quota usage" +msgstr "Quota gebruik" + +#: admin/groups/mail/mail.tpl:60 admin/groups/mail/class_groupMail.inc:847 +#: admin/groups/mail/class_groupMail.inc:972 personal/mail/generic.tpl:57 +#: personal/mail/class_mailAccount.inc:1113 +#: personal/mail/class_mailAccount.inc:1270 +#: personal/mail/class_mailAccount.inc:1422 +msgid "Quota size" +msgstr "Quota grootte" + +#: admin/groups/mail/mail.tpl:73 admin/groups/mail/class_groupMail.inc:974 +#, fuzzy +msgid "Folder type" +msgstr "Filter" + +#: admin/groups/mail/mail.tpl:91 +#, fuzzy +msgid "Reload" +msgstr "Lezen" + +#: admin/groups/mail/mail.tpl:102 admin/groups/mail/paste_mail.tpl:23 +#: personal/mail/copypaste.tpl:25 personal/mail/generic.tpl:73 +msgid "Alternative addresses" +msgstr "Alternatieve adressen" + +#: admin/groups/mail/mail.tpl:107 admin/groups/mail/paste_mail.tpl:24 +#: personal/mail/copypaste.tpl:55 personal/mail/generic.tpl:76 +msgid "List of alternative mail addresses" +msgstr "Lijst met alternatieve E-mail adressen" + +#: admin/groups/mail/mail.tpl:136 +msgid "IMAP shared folders" +msgstr "IMAP gedeelde mappen" + +#: admin/groups/mail/mail.tpl:143 +msgid "Default permission" +msgstr "Algemene rechten" + +#: admin/groups/mail/mail.tpl:145 +msgid "Member permission" +msgstr "Groepslid rechten" + +#: admin/groups/mail/mail.tpl:163 +#, fuzzy +msgid "Hide" +msgstr "header" + +#: admin/groups/mail/mail.tpl:165 +#, fuzzy +msgid "Show" +msgstr "Toon groepen" + +#: admin/groups/mail/mail.tpl:187 personal/mail/generic.tpl:303 +msgid "Advanced mail options" +msgstr "Geavanceerde E-mail opties" + +#: admin/groups/mail/mail.tpl:193 personal/mail/generic.tpl:309 +msgid "Select if user can only send and receive inside his own domain" +msgstr "" +"Selecteer om alleen binnen het eigen domein E-mail te laten ontvangen en " +"versturen" + +#: admin/groups/mail/mail.tpl:195 personal/mail/generic.tpl:311 +msgid "User is only allowed to send and receive local mails" +msgstr "De gebruiker mag alleen lokale E-mails versturen en ontvangen" + +#: admin/groups/mail/mail.tpl:204 admin/groups/mail/paste_mail.tpl:34 +msgid "Forward messages to non group members" +msgstr "Stuur berichten door naar niet groepsleden" + +#: admin/groups/mail/mail.tpl:213 +#, fuzzy +msgid "Used in all groups" +msgstr "Geef a.u.b. een groep op." + +#: admin/groups/mail/mail.tpl:216 +#, fuzzy +msgid "Not used in all groups" +msgstr "Toon functionele groepen" + +#: admin/groups/mail/mail.tpl:234 admin/groups/mail/paste_mail.tpl:42 +#: personal/mail/copypaste.tpl:44 personal/mail/generic.tpl:290 +#: personal/mail/generic.tpl:293 +msgid "Add local" +msgstr "Lokaal toevoegen" + +#: admin/groups/mail/paste_mail.tpl:1 personal/mail/copypaste.tpl:1 +#: personal/mail/class_mailAccount.inc:1411 +msgid "Mail settings" +msgstr "E-mail instellingen" + +#: admin/groups/mail/paste_mail.tpl:12 +msgid "Primary mail address for this shared folder" +msgstr "Primair E-mail adres voor deze gedeelde map" + +#: admin/groups/mail/mail_locals.tpl:6 personal/mail/mail_locals.tpl:7 +msgid "Select addresses to add" +msgstr "Selecteer de toe te voegen adressen" + +#: admin/groups/mail/mail_locals.tpl:22 personal/mail/mail_locals.tpl:25 +msgid "Filters" +msgstr "Filters" + +#: admin/groups/mail/mail_locals.tpl:32 +msgid "Display addresses of department" +msgstr "Toon adressen van afdeling" + +#: admin/groups/mail/mail_locals.tpl:33 personal/mail/mail_locals.tpl:38 +msgid "Choose the department the search will be based on" +msgstr "Selecteer de afdeling waarbinnen gezocht zal worden" + +#: admin/groups/mail/mail_locals.tpl:42 +msgid "Display addresses matching" +msgstr "Toon overeenkomende adressen" + +#: admin/groups/mail/mail_locals.tpl:45 personal/mail/mail_locals.tpl:52 +msgid "Regular expression for matching addresses" +msgstr "Reguliere expresie voor overeenkomende adressen" + +#: admin/groups/mail/mail_locals.tpl:52 personal/mail/mail_locals.tpl:60 +msgid "Display addresses of user" +msgstr "Toon adressen van gebruiker" + +#: admin/groups/mail/mail_locals.tpl:55 personal/mail/mail_locals.tpl:64 +msgid "User name of which addresses are shown" +msgstr "Gebruikersnaam van wie de adressen getoond worden" + +#: admin/groups/mail/mail_admins.tpl:4 +msgid "Folder administrators" +msgstr "Map beheerders" + +#: admin/groups/mail/mail_admins.tpl:24 +msgid "Select a specific department" +msgstr "Selecteer een specifieke afdeling" + +#: admin/groups/mail/mail_admins.tpl:30 +msgid "Choose" +msgstr "Kies" + +#: admin/groups/mail/class_groupMail.inc:111 +#: admin/groups/mail/class_groupMail.inc:118 +#: admin/groups/mail/class_groupMail.inc:125 +#: admin/groups/mail/class_groupMail.inc:132 +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:140 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:547 +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:773 +#: admin/groups/mail/class_groupMail.inc:777 +#: admin/groups/mail/class_groupMail.inc:781 +#: admin/groups/mail/class_groupMail.inc:790 +#: personal/mail/class_mailAccount.inc:147 +#: personal/mail/class_mailAccount.inc:154 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:162 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:928 +#: personal/mail/class_mailAccount.inc:996 +#: personal/mail/class_mailAccount.inc:1000 +#: personal/mail/class_mailAccount.inc:1004 +#: personal/mail/class_mailAccount.inc:1018 +#, fuzzy +msgid "Mail error" +msgstr "Mail server" + +#: admin/groups/mail/class_groupMail.inc:111 +#: personal/mail/class_mailAccount.inc:147 +#, fuzzy, php-format +msgid "Cannot read quota settings: %s" +msgstr "Kan bestand '%s' niet aanmaken." + +#: admin/groups/mail/class_groupMail.inc:118 +#: personal/mail/class_mailAccount.inc:154 +#, fuzzy, php-format +msgid "Cannot get list of mailboxes: %s" +msgstr "Kan de IMAP mailbox niet verwijderen. De server meldt: '%s'." + +#: admin/groups/mail/class_groupMail.inc:125 +#, fuzzy, php-format +msgid "Cannot receive folder types: %s" +msgstr "IMAP gedeelde mappen" + +#: admin/groups/mail/class_groupMail.inc:132 +#, fuzzy, php-format +msgid "Cannot receive folder permissions: %s" +msgstr "IMAP gedeelde mappen" + +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:773 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:996 +#, php-format +msgid "Mail method cannot connect: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:140 +#: personal/mail/class_mailAccount.inc:162 +#, php-format +msgid "Mailbox '%s' doesn't exists on mail server: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:297 +#, fuzzy +msgid "" +"Remove shared folder from mail server database when entry gets removed in " +"LDAP" +msgstr "Kan de gebruiker niet verwijderen uit de kerberos database." + +#: admin/groups/mail/class_groupMail.inc:298 +msgid "Remove the shared folder and all its contents after saving this account" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:341 +#: personal/mail/class_mailAccount.inc:311 +#, fuzzy +msgid "Please select an entry!" +msgstr "Selecteer a.u.b. een geldig mailserver" + +#: admin/groups/mail/class_groupMail.inc:360 +#: personal/mail/class_mailAccount.inc:329 +#, fuzzy +msgid "Cannot add primary address to the list of forwarders!" +msgstr "" +"U probeert een ongeldig email adres toe te voegen aan de doorstuurlijst." + +#: admin/groups/mail/class_groupMail.inc:405 +#: personal/mail/class_mailAccount.inc:372 +#, fuzzy, php-format +msgid "Address is already in use by user '%s'." +msgstr "" +"Het adres dat u probeert toe te voegen wordt al gebruikt door gebruiker" + +#: admin/groups/mail/class_groupMail.inc:547 +#: personal/mail/class_mailAccount.inc:928 +#, fuzzy, php-format +msgid "Cannot remove mailbox: %s" +msgstr "Kan de IMAP mailbox niet verwijderen. De server meldt: '%s'." + +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:790 +#, fuzzy, php-format +msgid "Cannot update shared folder permissions: %s" +msgstr "IMAP gedeelde mappen" + +#: admin/groups/mail/class_groupMail.inc:649 +#, fuzzy +msgid "New" +msgstr "Gebruiker toevoegen" + +#: admin/groups/mail/class_groupMail.inc:777 +#: personal/mail/class_mailAccount.inc:1000 +#, fuzzy, php-format +msgid "Cannot update mailbox: %s" +msgstr "Kan de IMAP mailbox niet aanmaken. De IMAP server meldt: '%s'." + +#: admin/groups/mail/class_groupMail.inc:781 +#: personal/mail/class_mailAccount.inc:1004 +#, fuzzy, php-format +msgid "Cannot write quota settings: %s" +msgstr "Kan bestand '%s' niet aanmaken." + +#: admin/groups/mail/class_groupMail.inc:822 +#, php-format +msgid "" +"The group 'cn' has changed. It can't be changed due to the fact that mail " +"method '%s' relies on it!" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:856 +#: personal/mail/class_mailAccount.inc:1434 +#, fuzzy +msgid "Mail max size" +msgstr "E-mail grootte" + +#: admin/groups/mail/class_groupMail.inc:864 +msgid "You need to set the maximum mail size in order to reject anything." +msgstr "" +"U moet de maximale E-mail grootte instellen om uberhaupt iets af te kunnen " +"afwijzen." + +#: admin/groups/mail/class_groupMail.inc:868 +#: admin/groups/mail/class_groupMail.inc:973 +#: personal/mail/class_mailAccount.inc:1421 +msgid "Mail server" +msgstr "Mail server" + +#: admin/groups/mail/class_groupMail.inc:964 +#, fuzzy +msgid "Group mail" +msgstr "Groepnaam" + +#: admin/groups/mail/class_groupMail.inc:974 +msgid "Kolab" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:975 +#, fuzzy +msgid "Alternate addresses" +msgstr "Alternatieve adressen" + +#: admin/groups/mail/class_groupMail.inc:976 +#, fuzzy +msgid "Forwarding addresses" +msgstr "Primair adres" + +#: admin/groups/mail/class_groupMail.inc:977 +#, fuzzy +msgid "Only local" +msgstr "Lokaal toevoegen" + +#: admin/groups/mail/class_groupMail.inc:978 +msgid "Permissions" +msgstr "Rechten" + +#: personal/mail/copypaste.tpl:13 personal/mail/generic.tpl:267 +msgid "Forward messages to" +msgstr "Stuur berichten door naar" + +#: personal/mail/generic.tpl:115 personal/mail/class_mailAccount.inc:1442 +msgid "Use custom sieve script" +msgstr "Gebruik een eigen sieve script" + +#: personal/mail/generic.tpl:115 +msgid "disables all Mail options!" +msgstr "schakelt alle E-mail opties uit!" + +#: personal/mail/generic.tpl:123 +#, fuzzy +msgid "Sieve Management" +msgstr "Beheer" + +#: personal/mail/generic.tpl:144 +msgid "Select if you want to forward mails without getting own copies of them" +msgstr "" +"Selecteer indien u E-mail door wil sturen zonder zelf kopieën te ontvangen" + +#: personal/mail/generic.tpl:144 +msgid "No delivery to own mailbox" +msgstr "Geen aflevering in eigen mailbox" + +#: personal/mail/generic.tpl:151 +msgid "" +"Select to automatically response with the vacation message defined below" +msgstr "" +"Selecteer om automatisch te reageren met het onderstaande afwezigheidsbericht" + +#: personal/mail/generic.tpl:153 +msgid "Activate vacation message" +msgstr "Activeer afwezigheidsbericht" + +#: personal/mail/generic.tpl:161 +#, fuzzy +msgid "from" +msgstr "willekeurig" + +#: personal/mail/generic.tpl:185 +msgid "till" +msgstr "" + +#: personal/mail/generic.tpl:214 +msgid "Select if you want to filter this mails through spamassassin" +msgstr "Selecteer indien u E-mail berichten wilt filteren m.b.v. spamassassin" + +#: personal/mail/generic.tpl:216 +msgid "Move mails tagged with spam level greater than" +msgstr "Verplaats E-mails met spam nivo groter dan" + +#: personal/mail/generic.tpl:219 +#, fuzzy +msgid "Choose spam level - smaller values are more sensitive" +msgstr "Selecteer een spam nivo - kleinere waardes zijn gevoeliger" + +#: personal/mail/generic.tpl:223 +msgid "to folder" +msgstr "naar map" + +#: personal/mail/generic.tpl:235 +msgid "Reject mails bigger than" +msgstr "Wijs E-mail af indien groter dan" + +#: personal/mail/generic.tpl:238 +msgid "MB" +msgstr "MB" + +#: personal/mail/generic.tpl:245 +#: personal/mail/sieve/class_sieveManagement.inc:502 +#: personal/mail/sieve/class_sieveManagement.inc:720 +#: personal/mail/sieve/templates/element_vacation.tpl:44 +#: personal/mail/sieve/templates/object_container.tpl:31 +#: personal/mail/class_mailAccount.inc:1425 +msgid "Vacation message" +msgstr "Afwezigheidsbericht" + +#: personal/mail/generic.tpl:261 +#: personal/mail/sieve/templates/import_script.tpl:12 +#: personal/mail/sieve/templates/edit_frame_base.tpl:7 +msgid "Import" +msgstr "Importeren" + +#: personal/mail/mail_locals.tpl:35 +#, fuzzy +msgid "Select department" +msgstr "Selecteer om afdelingen te zien" + +#: personal/mail/sieve/class_sieveElement_Vacation.inc:148 +#, fuzzy +msgid "Alternative sender address must be a valid email addresses." +msgstr "Geef a.u.b. een geldige scriptnaam op." + +#: personal/mail/sieve/class_sieveManagement.inc:114 +#: personal/mail/sieve/class_sieveManagement.inc:242 +#, fuzzy +msgid "Parse failed" +msgstr "mislukt" + +#: personal/mail/sieve/class_sieveManagement.inc:118 +#: personal/mail/sieve/class_sieveManagement.inc:246 +#, fuzzy +msgid "Parse successful" +msgstr "Import was succesvol" + +#: personal/mail/sieve/class_sieveManagement.inc:156 +#, php-format +msgid "" +"The specified mail server '%s' does not exist within the GOsa configuration." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:201 +msgid "No script name specified!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:206 +#, fuzzy +msgid "Please use only lowercase script names!" +msgstr "Geef a.u.b. een geldige scriptnaam op." + +#: personal/mail/sieve/class_sieveManagement.inc:212 +#, fuzzy +msgid "Please use only alphabetical characters in script names!" +msgstr "Alleen nummerieke waardes zijn toegestaan in geldigheidsduur" + +#: personal/mail/sieve/class_sieveManagement.inc:218 +#, fuzzy +msgid "Script name already in use!" +msgstr "De opgegeven naam wordt al gebruikt." + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:349 +#: personal/mail/sieve/class_sieveManagement.inc:398 +#: personal/mail/sieve/class_sieveManagement.inc:402 +#: personal/mail/sieve/class_sieveManagement.inc:433 +#: personal/mail/sieve/class_sieveManagement.inc:519 +#: personal/mail/sieve/class_sieveManagement.inc:770 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#, fuzzy +msgid "SIEVE error" +msgstr "Fout" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#, fuzzy, php-format +msgid "Cannot log into SIEVE server: %s" +msgstr "Kan niet op de SIEVE server inloggen. De server meldt: '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/class_mail-methods-cyrus.inc:468 +#, php-format +msgid "Cannot retrieve SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:349 +#, php-format +msgid "Cannot remove SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:395 +#, fuzzy +msgid "Edited" +msgstr "Bewerken" + +#: personal/mail/sieve/class_sieveManagement.inc:429 +msgid "Uploaded script is empty!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy +msgid "Internal error" +msgstr "Terminal server" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy, php-format +msgid "Cannot access temporary file '%s'!" +msgstr "Kan bestand '%s' niet aanmaken." + +#: personal/mail/sieve/class_sieveManagement.inc:433 +#, fuzzy, php-format +msgid "Cannot open temporary file '%s'!" +msgstr "Kan bestand '%s' niet openen." + +#: personal/mail/sieve/class_sieveManagement.inc:493 +#: personal/mail/sieve/class_sieveManagement.inc:496 +#: personal/mail/sieve/class_sieveManagement.inc:711 +#: personal/mail/sieve/class_sieveManagement.inc:714 +#: personal/mail/sieve/templates/element_keep.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:22 +#: personal/mail/sieve/templates/object_container.tpl:25 +msgid "Keep" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:494 +#: personal/mail/sieve/class_sieveManagement.inc:712 +#: personal/mail/sieve/templates/element_comment.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:23 +msgid "Comment" +msgstr "Opmerking" + +#: personal/mail/sieve/class_sieveManagement.inc:495 +#: personal/mail/sieve/class_sieveManagement.inc:713 +#, fuzzy +msgid "File into" +msgstr "Bestandsnaam" + +#: personal/mail/sieve/class_sieveManagement.inc:497 +#: personal/mail/sieve/class_sieveManagement.inc:715 +#: personal/mail/sieve/templates/element_discard.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:26 +#, fuzzy +msgid "Discard" +msgstr "Schijven" + +#: personal/mail/sieve/class_sieveManagement.inc:498 +#: personal/mail/sieve/class_sieveManagement.inc:716 +#: personal/mail/sieve/templates/element_redirect.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:27 +#, fuzzy +msgid "Redirect" +msgstr "direkt" + +#: personal/mail/sieve/class_sieveManagement.inc:499 +#: personal/mail/sieve/class_sieveManagement.inc:717 +#: personal/mail/sieve/templates/object_container.tpl:28 +#, fuzzy +msgid "Reject" +msgstr "Selecteer" + +#: personal/mail/sieve/class_sieveManagement.inc:500 +#: personal/mail/sieve/class_sieveManagement.inc:718 +#: personal/mail/sieve/templates/object_container.tpl:29 +#: personal/mail/sieve/templates/element_require.tpl:12 +msgid "Require" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:503 +#: personal/mail/sieve/class_sieveManagement.inc:721 +#: personal/mail/sieve/templates/object_container.tpl:32 +#: personal/mail/sieve/class_sieveElement_If.inc:836 +#, fuzzy +msgid "If" +msgstr "NI" + +#: personal/mail/sieve/class_sieveManagement.inc:519 +#, fuzzy +msgid "Cannot add new element!" +msgstr "Voeg DNS service toe" + +#: personal/mail/sieve/class_sieveManagement.inc:562 +#: personal/mail/sieve/class_sieveManagement.inc:756 +#: personal/mail/sieve/templates/element_else.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:33 +#: personal/mail/sieve/class_sieveElement_If.inc:840 +#, fuzzy +msgid "Else" +msgstr "nee" + +#: personal/mail/sieve/class_sieveManagement.inc:564 +#: personal/mail/sieve/class_sieveManagement.inc:758 +#: personal/mail/sieve/class_sieveManagement.inc:763 +#: personal/mail/sieve/templates/element_elsif.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:34 +#: personal/mail/sieve/class_sieveElement_If.inc:838 +msgid "Else If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:589 +#: personal/mail/sieve/templates/element_address.tpl:15 +#: personal/mail/sieve/templates/element_address.tpl:113 +msgid "Address" +msgstr "Adres" + +#: personal/mail/sieve/class_sieveManagement.inc:590 +#: personal/mail/sieve/templates/element_header.tpl:16 +#: personal/mail/sieve/templates/element_header.tpl:106 +#, fuzzy +msgid "Header" +msgstr "header" + +#: personal/mail/sieve/class_sieveManagement.inc:591 +#: personal/mail/sieve/templates/element_envelope.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:105 +msgid "Envelope" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:592 +#: personal/mail/sieve/templates/element_size.tpl:4 +#: addons/mailqueue/contents.tpl:74 +msgid "Size" +msgstr "Grootte" + +#: personal/mail/sieve/class_sieveManagement.inc:593 +#: personal/mail/sieve/templates/element_exists.tpl:8 +#, fuzzy +msgid "Exists" +msgstr "Bestaande" + +#: personal/mail/sieve/class_sieveManagement.inc:594 +#: personal/mail/sieve/templates/element_allof.tpl:10 +#, fuzzy +msgid "All of" +msgstr "Alle" + +#: personal/mail/sieve/class_sieveManagement.inc:595 +#: personal/mail/sieve/templates/element_anyof.tpl:10 +msgid "Any of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:596 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "True" +msgstr "Ja" + +#: personal/mail/sieve/class_sieveManagement.inc:597 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "False" +msgstr "Nee" + +#: personal/mail/sieve/class_sieveManagement.inc:634 +#: addons/mailqueue/class_mailqueue.inc:321 addons/mailqueue/contents.tpl:93 +msgid "Active" +msgstr "Actief" + +#: personal/mail/sieve/class_sieveManagement.inc:635 +msgid "This script is marked as active" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:640 +#, fuzzy +msgid "Script length" +msgstr "Variabele inhoud" + +#: personal/mail/sieve/class_sieveManagement.inc:644 +#, fuzzy +msgid "Remove script" +msgstr "Verwijder DNS service" + +#: personal/mail/sieve/class_sieveManagement.inc:653 +#, fuzzy +msgid "Activate script" +msgstr "Laatste script" + +#: personal/mail/sieve/class_sieveManagement.inc:657 +#, fuzzy +msgid "Edit script" +msgstr "Laatste script" + +#: personal/mail/sieve/class_sieveManagement.inc:672 +#, php-format +msgid "Can't log into SIEVE server. Server says '%s'." +msgstr "Kan niet op de SIEVE server inloggen. De server meldt: '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:770 +msgid "Cannot insert element at the requested position!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#: personal/mail/class_mail-methods-cyrus.inc:556 +#, php-format +msgid "Cannot store SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1045 +#, fuzzy +msgid "Failed to save sieve script" +msgstr "Gebruik een eigen sieve script" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:24 +#, fuzzy +msgid "Please specify a valid email address." +msgstr "Geef a.u.b. een geldige scriptnaam op." + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:35 +#, fuzzy +msgid "Place a mail address here" +msgstr "Geef a.u.b. een geldige naam op" + +#: personal/mail/sieve/class_sieveElement_Comment.inc:21 +msgid "Your comment here" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:1 +#, fuzzy +msgid "Add a new element" +msgstr "Voeg DNS service toe" + +#: personal/mail/sieve/templates/add_element.tpl:2 +#, fuzzy +msgid "Please select the type of element you want to add" +msgstr "Selecteer a.u.b. een geldig bestand." + +#: personal/mail/sieve/templates/add_element.tpl:11 +#: personal/mail/sieve/templates/select_test_type.tpl:11 +msgid "Continue" +msgstr "Doorgaan" + +#: personal/mail/sieve/templates/add_element.tpl:13 +#, fuzzy +msgid "Abort" +msgstr "Poort" + +#: personal/mail/sieve/templates/element_discard.tpl:9 +#, fuzzy +msgid "Discard message" +msgstr "Verwijder dit bericht" + +#: personal/mail/sieve/templates/element_if.tpl:4 +#: personal/mail/sieve/class_sieveElement_If.inc:834 +#, fuzzy +msgid "Condition" +msgstr "Max. verbindingsduur" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_address.tpl:116 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_header.tpl:109 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_envelope.tpl:108 +#, fuzzy +msgid "Not" +msgstr "Nee" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_anyof.tpl:7 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "Inverse match" +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:1 +#, fuzzy +msgid "Import sieve script" +msgstr "Importeer script" + +#: personal/mail/sieve/templates/import_script.tpl:2 +msgid "" +"Please select the sieve script you want to import. Use the import button to " +"import the script or the cancel button to abort." +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:5 +#, fuzzy +msgid "Script to import" +msgstr "Inlogscript" + +#: personal/mail/sieve/templates/element_address.tpl:18 +#: personal/mail/sieve/templates/element_header.tpl:19 +#: personal/mail/sieve/templates/element_vacation.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:19 +#, fuzzy +msgid "Normal view" +msgstr "Postcode" + +#: personal/mail/sieve/templates/element_address.tpl:25 +#: personal/mail/sieve/templates/element_header.tpl:26 +#: personal/mail/sieve/templates/element_envelope.tpl:26 +#, fuzzy +msgid "Match type" +msgstr "Authorisatietype" + +#: personal/mail/sieve/templates/element_address.tpl:28 +#: personal/mail/sieve/templates/element_address.tpl:51 +#: personal/mail/sieve/templates/element_address.tpl:61 +#: personal/mail/sieve/templates/element_address.tpl:72 +#: personal/mail/sieve/templates/element_address.tpl:121 +#: personal/mail/sieve/templates/element_address.tpl:126 +#: personal/mail/sieve/templates/element_header.tpl:29 +#: personal/mail/sieve/templates/element_header.tpl:52 +#: personal/mail/sieve/templates/element_header.tpl:63 +#: personal/mail/sieve/templates/element_header.tpl:114 +#: personal/mail/sieve/templates/element_header.tpl:119 +#: personal/mail/sieve/templates/element_boolean.tpl:5 +#: personal/mail/sieve/templates/element_envelope.tpl:29 +#: personal/mail/sieve/templates/element_envelope.tpl:52 +#: personal/mail/sieve/templates/element_envelope.tpl:63 +#: personal/mail/sieve/templates/element_envelope.tpl:113 +#: personal/mail/sieve/templates/element_envelope.tpl:118 +#, fuzzy +msgid "Boolean value" +msgstr "Standaard waarde" + +#: personal/mail/sieve/templates/element_address.tpl:36 +#: personal/mail/sieve/templates/element_header.tpl:37 +#: personal/mail/sieve/templates/element_envelope.tpl:37 +#, fuzzy +msgid "Invert test" +msgstr "Geheugentest" + +#: personal/mail/sieve/templates/element_address.tpl:40 +#: personal/mail/sieve/templates/element_header.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +msgid "Yes" +msgstr "Ja" + +#: personal/mail/sieve/templates/element_address.tpl:42 +#: personal/mail/sieve/templates/element_header.tpl:43 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "No" +msgstr "Nee" + +#: personal/mail/sieve/templates/element_address.tpl:48 +msgid "Part of address that should be used" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:58 +#: personal/mail/sieve/templates/element_header.tpl:49 +#: personal/mail/sieve/templates/element_envelope.tpl:49 +#, fuzzy +msgid "Comparator" +msgstr "Computers" + +#: personal/mail/sieve/templates/element_address.tpl:69 +#: personal/mail/sieve/templates/element_envelope.tpl:60 +#, fuzzy +msgid "Operator" +msgstr "Computers" + +#: personal/mail/sieve/templates/element_address.tpl:85 +#: personal/mail/sieve/templates/element_header.tpl:77 +#: personal/mail/sieve/templates/element_envelope.tpl:76 +msgid "Address fields to include" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:89 +#: personal/mail/sieve/templates/element_header.tpl:81 +#: personal/mail/sieve/templates/element_envelope.tpl:80 +msgid "Values to match for" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:118 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_header.tpl:111 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:110 +msgid "-" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:138 +#: personal/mail/sieve/templates/element_header.tpl:131 +#: personal/mail/sieve/templates/element_vacation.tpl:47 +#: personal/mail/sieve/templates/element_envelope.tpl:130 +#, fuzzy +msgid "Expert view" +msgstr "Vertrouwensmodus" + +#: personal/mail/sieve/templates/element_fileinto.tpl:4 +#, fuzzy +msgid "Move mail into folder" +msgstr "naar map" + +#: personal/mail/sieve/templates/element_fileinto.tpl:8 +#, fuzzy +msgid "Select from list" +msgstr "Selecteer sjabloon" + +#: personal/mail/sieve/templates/element_fileinto.tpl:10 +#, fuzzy +msgid "Manual selection" +msgstr "Taal" + +#: personal/mail/sieve/templates/element_fileinto.tpl:18 +#, fuzzy +msgid "Folder" +msgstr "Filter" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#, fuzzy +msgid "Move this object up one position" +msgstr "Lidmaatschap objecten" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Up" +msgstr "Omhoog" + +#: personal/mail/sieve/templates/object_container_clear.tpl:9 +#: personal/mail/sieve/templates/object_container.tpl:9 +msgid "Move up" +msgstr "Omhoog verplaatsen" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +msgid "Move this object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Down" +msgstr "Omlaag" + +#: personal/mail/sieve/templates/object_container_clear.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:13 +msgid "Move down" +msgstr "Omlaag verplaatsen" + +#: personal/mail/sieve/templates/object_container_clear.tpl:16 +#, fuzzy +msgid "Remove this object" +msgstr "Lidmaatschap objecten" + +#: personal/mail/sieve/templates/object_container_clear.tpl:17 +#: personal/mail/sieve/templates/object_container.tpl:17 +#, fuzzy +msgid "Remove element" +msgstr "Record verwijderen" + +#: personal/mail/sieve/templates/create_script.tpl:2 +msgid "" +"Please enter the name for the new script below. Script names must consist of " +"lower case characters only." +msgstr "" + +#: personal/mail/sieve/templates/create_script.tpl:8 +#, fuzzy +msgid "Script name" +msgstr "Scriptnaam" + +#: personal/mail/sieve/templates/select_test_type.tpl:1 +#, fuzzy +msgid "Select the type of test you want to add" +msgstr "Selecteer de toe te voegen regels" + +#: personal/mail/sieve/templates/select_test_type.tpl:3 +#, fuzzy +msgid "Available test types" +msgstr "Beschikbare programma's" + +#: personal/mail/sieve/templates/element_comment.tpl:8 +msgid "Edit" +msgstr "Bewerken" + +#: personal/mail/sieve/templates/element_header.tpl:60 +msgid "operator" +msgstr "" + +#: personal/mail/sieve/templates/element_keep.tpl:9 +#, fuzzy +msgid "Keep message" +msgstr "Verwijder dit bericht" + +#: personal/mail/sieve/templates/element_redirect.tpl:18 +msgid "Redirect mail to following recipients" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:13 +#, fuzzy +msgid "Vacation Message" +msgstr "Afwezigheidsbericht" + +#: personal/mail/sieve/templates/element_vacation.tpl:21 +#, fuzzy +msgid "Release interval" +msgstr "Tijd interval" + +#: personal/mail/sieve/templates/element_vacation.tpl:25 +msgid "days" +msgstr "dagen" + +#: personal/mail/sieve/templates/element_vacation.tpl:30 +#, fuzzy +msgid "Alternative sender addresses" +msgstr "Alternatieve adressen" + +#: personal/mail/sieve/templates/element_boolean.tpl:4 +msgid "Bool" +msgstr "Bool" + +#: personal/mail/sieve/templates/element_boolean.tpl:8 +#, fuzzy +msgid "update" +msgstr "Bijwerken" + +#: personal/mail/sieve/templates/remove_script.tpl:2 +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Warning" +msgstr "Waarschuwing" + +#: personal/mail/sieve/templates/remove_script.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Verzeker u ervan dat u dit daadwerkelijk wil doorvoeren, aangezien het " +"onmogelijk is voor GOsa om de data terug te halen." + +#: personal/mail/sieve/templates/remove_script.tpl:10 +#, fuzzy +msgid "" +"Best thing to do before performing this action would be to save the current " +"script in a file. So - if you've done so - press 'Delete' to continue or " +"'Cancel' to abort." +msgstr "" +"Het is aan te raden de huidige inhoud van uw LDAP database op te slaan " +"alvorens u doorgaat. Indien u dat gedaan heeft drukt u op 'Verwijderen' om " +"door te gaan of op 'Annuleren' om te annuleren." + +#: personal/mail/sieve/templates/object_test_container.tpl:6 +#, fuzzy +msgid "Add object" +msgstr "Zoek op" + +#: personal/mail/sieve/templates/object_test_container.tpl:10 +#: personal/mail/sieve/templates/object_container.tpl:16 +#, fuzzy +msgid "Remove object" +msgstr "Lidmaatschap objecten" + +#: personal/mail/sieve/templates/object_container.tpl:8 +#, fuzzy +msgid "Move object up one position" +msgstr "Lidmaatschap objecten" + +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Move object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:21 +#, fuzzy +msgid "choose element" +msgstr "Record verwijderen" + +#: personal/mail/sieve/templates/object_container.tpl:24 +#, fuzzy +msgid "Fileinto" +msgstr "Bestand" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:42 +#, fuzzy +msgid "Add new" +msgstr "Gebruiker toevoegen" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add a new object above this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add element above" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:42 +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add a new object below this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add element below" +msgstr "" + +#: personal/mail/sieve/templates/element_size.tpl:16 +#, fuzzy +msgid "Select match type" +msgstr "Selecteer een basis" + +#: personal/mail/sieve/templates/element_size.tpl:20 +#, fuzzy +msgid "Select value unit" +msgstr "Selecteer om afdelingen te zien" + +#: personal/mail/sieve/templates/element_stop.tpl:9 +msgid "Stop execution here" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:14 +#, fuzzy +msgid "Reject mail" +msgstr "Wijs E-mail af indien groter dan" + +#: personal/mail/sieve/templates/element_reject.tpl:17 +msgid "This is a multiline text element" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:19 +#, fuzzy +msgid "This is stored as single string" +msgstr "Dit doet iets" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:6 +msgid "Export" +msgstr "Exporteer" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:12 +msgid "View structured" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:14 +#, fuzzy +msgid "View source" +msgstr "Audio service" + +#: personal/mail/sieve/templates/management.tpl:1 +#, fuzzy +msgid "List of sieve scripts" +msgstr "Lijst met scripts" + +#: personal/mail/sieve/templates/management.tpl:5 +msgid "" +"Connection to the sieve server could not be established, the " +"authentification attribute is empty." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:6 +msgid "" +"Please verify that the attributes uid and mail are not empty and try again." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:12 +msgid "Connection to the sieve server could not be established." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:15 +msgid "Possibly the sieve account has not been created yet." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:19 +#, fuzzy +msgid "" +"Be careful. All your changes will be saved directly to sieve, if you use the " +"save button below." +msgstr "" +"Let op bij het bewerken van record types met deze dialoog. Alle " +"veranderingen worden onmiddelijk opgeslagen zodra u de opslaan knop gebruikt." + +#: personal/mail/sieve/templates/management.tpl:22 +#, fuzzy +msgid "Create new script" +msgstr "Maak nieuwe gebruiker aan" + +#: personal/mail/sieve/class_sieveElement_Require.inc:73 +#, fuzzy +msgid "Please specify at least one valid requirement." +msgstr "Geef a.u.b. een geldige naam op voor deze bijlage." + +#: personal/mail/sieve/class_sieveElement_Reject.inc:21 +msgid "Invalid character found, quotes are not allowed in a reject message." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:37 +msgid "Your reject text here" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#, fuzzy +msgid "Complete address" +msgstr "Subonderdelen negeren" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#: personal/mail/sieve/class_sieveElement_If.inc:33 +#, fuzzy +msgid "Default" +msgstr "standaard" + +#: personal/mail/sieve/class_sieveElement_If.inc:28 +#, fuzzy +msgid "Domain part" +msgstr "Windows gebruikers" + +#: personal/mail/sieve/class_sieveElement_If.inc:29 +msgid "Local part" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Case insensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:34 +msgid "Case sensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:35 +msgid "Numeric" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:39 +msgid "is" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:40 +#, fuzzy +msgid "regex" +msgstr "sluiten" + +#: personal/mail/sieve/class_sieveElement_If.inc:41 +#, fuzzy +msgid "contains" +msgstr "Acties" + +#: personal/mail/sieve/class_sieveElement_If.inc:42 +#, fuzzy +msgid "matches" +msgstr "Cache" + +#: personal/mail/sieve/class_sieveElement_If.inc:43 +#, fuzzy +msgid "count" +msgstr "Account" + +#: personal/mail/sieve/class_sieveElement_If.inc:44 +#, fuzzy +msgid "value is" +msgstr "geldig" + +#: personal/mail/sieve/class_sieveElement_If.inc:48 +#, fuzzy +msgid "less than" +msgstr "Minder Dan geluidsbestand" + +#: personal/mail/sieve/class_sieveElement_If.inc:49 +msgid "less or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:50 +#, fuzzy +msgid "equals" +msgstr "Details" + +#: personal/mail/sieve/class_sieveElement_If.inc:51 +msgid "greater or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:52 +#: personal/mail/sieve/class_sieveElement_If.inc:726 +#: personal/mail/sieve/class_sieveElement_If.inc:1059 +#, fuzzy +msgid "greater than" +msgstr "Opties aanmaken" + +#: personal/mail/sieve/class_sieveElement_If.inc:53 +#, fuzzy +msgid "not equal" +msgstr "geen voorbeeld" + +#: personal/mail/sieve/class_sieveElement_If.inc:102 +#, fuzzy +msgid "Can't save empty tests." +msgstr "Kan bestand '%s' niet opslaan." + +#: personal/mail/sieve/class_sieveElement_If.inc:446 +#, fuzzy +msgid "emtpy" +msgstr "leeg" + +#: personal/mail/sieve/class_sieveElement_If.inc:447 +msgid "empty" +msgstr "leeg" + +#: personal/mail/sieve/class_sieveElement_If.inc:493 +msgid "Nothing specified right now" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:595 +msgid "Invalid type of address part." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:605 +msgid "Invalid match type given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:621 +msgid "Invalid operator given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:638 +#, fuzzy +msgid "Please specify a valid operator." +msgstr "Geef a.u.b. een geldige id op." + +#: personal/mail/sieve/class_sieveElement_If.inc:654 +msgid "" +"Invalid character found in address attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:669 +#, fuzzy +msgid "" +"Invalid character found in value attribute. Quotes are not allowed here." +msgstr "Ongeldig karakter in programmanaam. Alleen a-Z 0-9 zijn toegestaan." + +#: personal/mail/sieve/class_sieveElement_If.inc:727 +#: personal/mail/sieve/class_sieveElement_If.inc:1060 +msgid "lower than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:729 +#: personal/mail/sieve/class_sieveElement_If.inc:1062 +msgid "Megabyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:730 +#: personal/mail/sieve/class_sieveElement_If.inc:1063 +msgid "Kilobyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:731 +#: personal/mail/sieve/class_sieveElement_If.inc:1064 +#, fuzzy +msgid "Bytes" +msgstr "ja" + +#: personal/mail/sieve/class_sieveElement_If.inc:745 +#, fuzzy +msgid "Please select a valid match type in the list box below." +msgstr "Selecteer a.u.b. een geldig mailserver" + +#: personal/mail/sieve/class_sieveElement_If.inc:759 +#, fuzzy +msgid "Only numeric values are allowed here." +msgstr "Alleen nummerieke karakters zijn toegestaan in het nummer veld." + +#: personal/mail/sieve/class_sieveElement_If.inc:769 +#, fuzzy +msgid "No valid unit selected" +msgstr "Geen geldig certificaat geladen" + +#: personal/mail/sieve/class_sieveElement_If.inc:876 +#, fuzzy +msgid "Empty" +msgstr "leeg" + +#: personal/mail/sieve/class_sieveElement_If.inc:1134 +#: personal/mail/sieve/class_sieveElement_If.inc:1164 +#, fuzzy +msgid "Click here to add a new test" +msgstr "Klik hier om in te loggen" + +#: personal/mail/sieve/class_sieveElement_If.inc:1176 +msgid "Unhandled switch type" +msgstr "" + +#: personal/mail/sieve/class_My_Tree.inc:245 +#, fuzzy +msgid "Cannot remove last element!" +msgstr "Record verwijderen" + +#: personal/mail/sieve/class_My_Tree.inc:658 +msgid "Require must be the first command in the script." +msgstr "" + +#: personal/mail/class_mailAccount.inc:51 +#: addons/mailqueue/class_mailqueue.inc:7 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/mail/class_mailAccount.inc:635 +#: personal/mail/class_mail-methods.inc:131 +#: personal/mail/class_mail-methods.inc:462 +#, fuzzy +msgid "Configuration error" +msgstr "Configuratie bestand" + +#: personal/mail/class_mailAccount.inc:635 +#, fuzzy, php-format +msgid "No DESC tag in vacation template '%s'!" +msgstr "Er is geen DESC variabele aanwezig in het afwezigheidsbestand:" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "Permission error" +msgstr "Rechten" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "You have no permission to modify these addresses!" +msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#: personal/mail/class_mailAccount.inc:755 +#: personal/mail/class_mailAccount.inc:758 +#, fuzzy +msgid "unknown" +msgstr "Onbekend" + +#: personal/mail/class_mailAccount.inc:1122 +#: personal/mail/class_mailAccount.inc:1130 +#: personal/mail/class_mailAccount.inc:1279 +#, fuzzy +msgid "Mail reject size" +msgstr "E-mail grootte" + +#: personal/mail/class_mailAccount.inc:1134 +#: personal/mail/class_mailAccount.inc:1286 +#, fuzzy +msgid "Spam folder" +msgstr "naar map" + +#: personal/mail/class_mailAccount.inc:1140 +#: personal/mail/class_mailAccount.inc:1291 +#, fuzzy +msgid "Vacation interval" +msgstr "Afwezigheidsbericht" + +#: personal/mail/class_mailAccount.inc:1415 +msgid "My account" +msgstr "Mijn account" + +#: personal/mail/class_mailAccount.inc:1424 +#, fuzzy +msgid "Add vacation information" +msgstr "Organisatie informatie" + +#: personal/mail/class_mailAccount.inc:1427 +msgid "Use spam filter" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1428 +#, fuzzy +msgid "Spam level" +msgstr "Log prioriteit" + +#: personal/mail/class_mailAccount.inc:1429 +#, fuzzy +msgid "Spam mail box" +msgstr "E-mail grootte" + +#: personal/mail/class_mailAccount.inc:1431 +#, fuzzy +msgid "Sieve management" +msgstr "Beheer" + +#: personal/mail/class_mailAccount.inc:1433 +#, fuzzy +msgid "Reject due to mailsize" +msgstr "Wijs E-mail af indien groter dan" + +#: personal/mail/class_mailAccount.inc:1436 +#: personal/mail/class_mailAccount.inc:1441 +#, fuzzy +msgid "Forwarding address" +msgstr "Primair adres" + +#: personal/mail/class_mailAccount.inc:1437 +#, fuzzy +msgid "Local delivery" +msgstr "Laatste levering" + +#: personal/mail/class_mailAccount.inc:1438 +#, fuzzy +msgid "No delivery to own mailbox " +msgstr "Geen aflevering in eigen mailbox" + +#: personal/mail/class_mailAccount.inc:1439 +#, fuzzy +msgid "Mail alternative addresses" +msgstr "Alternatieve adressen" + +#: personal/mail/main.inc:138 +msgid "User mail settings" +msgstr "Gebruikers E-mail instellingen" + +#: personal/mail/class_mail-methods.inc:132 +#, php-format +msgid "The configured mail attribute '%s' is unsupported!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:463 +#, php-format +msgid "Mail method '%s' is unknown!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:689 +#: personal/mail/class_mail-methods.inc:690 +#, fuzzy +msgid "None" +msgstr "geen" + +#: personal/mail/class_mail-methods.inc:779 +msgid "Unknown" +msgstr "Onbekend" + +#: personal/mail/class_mail-methods.inc:781 +#, fuzzy +msgid "Unlimited" +msgstr "geen limiet" + +#: personal/mail/class_mail-methods-cyrus.inc:39 +msgid "There are no IMAP compatible mail servers defined!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:44 +#, fuzzy +msgid "Mail server for this account is invalid!" +msgstr "Geen E-mail grootte restrictie voor dit account" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy +msgid "IMAP error" +msgstr "LDAP fout:" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy, php-format +msgid "Cannot modify IMAP mailbox quota: %s" +msgstr "Kan de IMAP mailbox niet verwijderen. De server meldt: '%s'." + +#: personal/mail/class_mail-methods-cyrus.inc:354 +#: personal/mail/class_mail-methods-cyrus.inc:391 +msgid "The module imap_getacl is not implemented!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:563 +#, php-format +msgid "Cannot activate SIEVE script: %s" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:6 +#: addons/mailqueue/class_mailqueue.inc:331 addons/mailqueue/main.inc:56 +msgid "Mail queue" +msgstr "Mail wachtrij" + +#: addons/mailqueue/class_mailqueue.inc:205 +msgid "up" +msgstr "omhoog" + +#: addons/mailqueue/class_mailqueue.inc:207 +msgid "down" +msgstr "omlaag" + +#: addons/mailqueue/class_mailqueue.inc:218 +#: addons/mailqueue/class_mailqueue.inc:318 +msgid "All" +msgstr "Alle" + +#: addons/mailqueue/class_mailqueue.inc:262 +msgid "no limit" +msgstr "geen limiet" + +#: addons/mailqueue/class_mailqueue.inc:265 +msgid "hour" +msgstr "uur" + +#: addons/mailqueue/class_mailqueue.inc:267 +msgid "hours" +msgstr "uren" + +#: addons/mailqueue/class_mailqueue.inc:319 +msgid "Hold" +msgstr "Wacht" + +#: addons/mailqueue/class_mailqueue.inc:320 +msgid "Un hold" +msgstr "Uit de wacht" + +#: addons/mailqueue/class_mailqueue.inc:322 +msgid "Not active" +msgstr "Niet actief" + +#: addons/mailqueue/class_mailqueue.inc:332 +#: addons/mailqueue/class_mailqueue.inc:337 +#, fuzzy +msgid "Mail queue addon" +msgstr "Mail wachtrij" + +#: addons/mailqueue/class_mailqueue.inc:340 +#, fuzzy +msgid "Unhold all messages" +msgstr "Plaats alle berichten in wachtstand" + +#: addons/mailqueue/class_mailqueue.inc:341 addons/mailqueue/contents.tpl:38 +msgid "Hold all messages" +msgstr "Plaats alle berichten in wachtstand" + +#: addons/mailqueue/class_mailqueue.inc:342 +#, fuzzy +msgid "Delete all messages" +msgstr "Geef alle berichten vrij" + +#: addons/mailqueue/class_mailqueue.inc:343 addons/mailqueue/contents.tpl:48 +msgid "Requeue all messages" +msgstr "Plaats alle berichten opnieuw in wachtrij" + +#: addons/mailqueue/class_mailqueue.inc:344 +#, fuzzy +msgid "Unhold message" +msgstr "Bericht in wachtstand plaatsen" + +#: addons/mailqueue/class_mailqueue.inc:345 addons/mailqueue/contents.tpl:120 +msgid "Hold message" +msgstr "Bericht in wachtstand plaatsen" + +#: addons/mailqueue/class_mailqueue.inc:346 +#, fuzzy +msgid "Delete message" +msgstr "Verwijder dit bericht" + +#: addons/mailqueue/class_mailqueue.inc:347 +#, fuzzy +msgid "Requeue message" +msgstr "Herplaats dit bericht" + +#: addons/mailqueue/class_mailqueue.inc:348 +msgid "Gathering queue data" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:349 +#, fuzzy +msgid "Get header information" +msgstr "Algemene gebruikersinformatie" + +#: addons/mailqueue/contents.tpl:10 addons/mailqueue/contents.tpl:28 +msgid "Search" +msgstr "Zoeken" + +#: addons/mailqueue/contents.tpl:11 +msgid "Search for" +msgstr "Zoek naar" + +#: addons/mailqueue/contents.tpl:12 +msgid "Please enter a search string here." +msgstr "Geef hier a.u.b. een zoekwaarde op." + +#: addons/mailqueue/contents.tpl:14 +msgid "Select a server" +msgstr "Selecteer een server" + +#: addons/mailqueue/contents.tpl:18 +msgid "with status" +msgstr "met status" + +#: addons/mailqueue/contents.tpl:23 +msgid "within the last" +msgstr "binnen de laatste" + +#: addons/mailqueue/contents.tpl:33 +msgid "Remove all messages" +msgstr "Verwijder alle berichten" + +#: addons/mailqueue/contents.tpl:34 +msgid "Remove all messages from selected servers queue" +msgstr "Verwijder alle berichten uit de wachtrij van de geselecteerde server" + +#: addons/mailqueue/contents.tpl:39 +msgid "Hold all messages in selected servers queue" +msgstr "" +"Plaats alle berichten in de geselecteerde server wachtrij in de wachtstand" + +#: addons/mailqueue/contents.tpl:43 +msgid "Release all messages" +msgstr "Geef alle berichten vrij" + +#: addons/mailqueue/contents.tpl:44 +msgid "Release all messages in selected servers queue" +msgstr "Geef alle berichten in de geselecteerde server wachtrij vrij" + +#: addons/mailqueue/contents.tpl:49 +msgid "Requeue all messages in selected servers queue" +msgstr "Plaats alle berichten in de geselecteerde server opnieuw in wachtrij" + +#: addons/mailqueue/contents.tpl:63 +msgid "Search returned no results" +msgstr "De zoekopdracht gaf geen resultaten terug" + +#: addons/mailqueue/contents.tpl:72 +msgid "ID" +msgstr "ID" + +#: addons/mailqueue/contents.tpl:75 +msgid "Arrival" +msgstr "Aankomst" + +#: addons/mailqueue/contents.tpl:76 +msgid "Sender" +msgstr "Afzender" + +#: addons/mailqueue/contents.tpl:77 +msgid "Recipient" +msgstr "Ontvanger" + +#: addons/mailqueue/contents.tpl:78 +msgid "Status" +msgstr "Status" + +#: addons/mailqueue/contents.tpl:105 +msgid "delete" +msgstr "Verwijder" + +#: addons/mailqueue/contents.tpl:105 +msgid "Delete this message" +msgstr "Verwijder dit bericht" + +#: addons/mailqueue/contents.tpl:113 +msgid "unhold" +msgstr "uit wachtstand" + +#: addons/mailqueue/contents.tpl:113 +msgid "Release message" +msgstr "Bericht vrijgeven" + +#: addons/mailqueue/contents.tpl:120 +msgid "hold" +msgstr "wachtstand" + +#: addons/mailqueue/contents.tpl:127 +msgid "requeue" +msgstr "herplaatsen" + +#: addons/mailqueue/contents.tpl:127 +msgid "Requeue this message" +msgstr "Herplaats dit bericht" + +#: addons/mailqueue/contents.tpl:133 +msgid "header" +msgstr "header" + +#: addons/mailqueue/contents.tpl:134 +#, fuzzy +msgid "Display header of this message" +msgstr "Toon de header van dit bericht" + +#, fuzzy +#~ msgid "Cannot connect mail method: %s" +#~ msgstr "Kan bestand '%s' niet openen." + +#, fuzzy +#~ msgid "Cannot remove mailbox: %s." +#~ msgstr "Kan de IMAP mailbox niet verwijderen. De server meldt: '%s'." + +#, fuzzy +#~ msgid "Cannot update mailbox: %s." +#~ msgstr "Kan de IMAP mailbox niet aanmaken. De IMAP server meldt: '%s'." + +#, fuzzy +#~ msgid "Cannot write quota settings: %s." +#~ msgstr "Kan bestand '%s' niet aanmaken." + +#, fuzzy +#~ msgid "Cannot get list of mailboxes! Error was: %s." +#~ msgstr "Kan de IMAP mailbox niet verwijderen. De server meldt: '%s'." + +#, fuzzy +#~ msgid "Cannot connect mail method! Error was: %s." +#~ msgstr "Kan bestand '%s' niet openen." + +#, fuzzy +#~ msgid "Cannot remove mailbox! Error was: %s." +#~ msgstr "Kan de IMAP mailbox niet verwijderen. De server meldt: '%s'." + +#, fuzzy +#~ msgid "Cannot update mailbox! Error was: %s." +#~ msgstr "Kan de IMAP mailbox niet aanmaken. De IMAP server meldt: '%s'." + +#, fuzzy +#~ msgid "Specify the mail server where the user will be hosted on" +#~ msgstr "Specificeer de mailserver waarop het account opgeslagen wordt" + +#~ msgid "Select mail server to place user on" +#~ msgstr "Selecteer de mail server waarop de gebruiker ondergebracht wordt" + +#~ msgid "not defined" +#~ msgstr "niet gedefiniëerd" + +#~ msgid "read" +#~ msgstr "alleen lezen" + +#~ msgid "post" +#~ msgstr "afleveren & lezen" + +#~ msgid "external post" +#~ msgstr "alleen afleveren" + +#~ msgid "append" +#~ msgstr "afleveren, lezen & kopieren" + +#~ msgid "write" +#~ msgstr "afleveren, lezen & schrijven" + +#, fuzzy +#~ msgid "admin" +#~ msgstr "Beheerders" + +#, fuzzy +#~ msgid "mail" +#~ msgstr "E-mail" + +#, fuzzy +#~ msgid "forward address" +#~ msgstr "Primair adres" + +#, fuzzy +#~ msgid "Cannot forward to users own mail address!" +#~ msgstr "U probeert een ongeldig E-mail adres toe te voegen" + +#, fuzzy +#~ msgid "Alternate address" +#~ msgstr "Alternatieve adressen" + +#~ msgid "Add" +#~ msgstr "Toevoegen" + +#, fuzzy +#~ msgid "Unspecified" +#~ msgstr "niet gedefiniëerd" + +#, fuzzy +#~ msgid "Mails" +#~ msgstr "E-mail" + +#, fuzzy +#~ msgid "Tasks" +#~ msgstr "Taak" + +#, fuzzy +#~ msgid "Journals" +#~ msgstr "uren" + +#~ msgid "Contacts" +#~ msgstr "Contacten" + +#, fuzzy +#~ msgid "Notes" +#~ msgstr "Nee" + +#, fuzzy +#~ msgid "Inbox" +#~ msgstr "Index" + +#, fuzzy +#~ msgid "Drafts" +#~ msgstr "Datum" + +#, fuzzy +#~ msgid "Sent items" +#~ msgstr "Systeem status" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "Groepnaam" + +#~ msgid "" +#~ "Please choose valid permission settings. Default permission can't be " +#~ "emtpy." +#~ msgstr "" +#~ "Kies a.u.b. geldige permissie instellingen. Standaard permissies kunnen " +#~ "niet leeg zijn." + +#~ msgid "Mail options" +#~ msgstr "E-mail opties" + +#, fuzzy +#~ msgid "Waiting for kolab to remove mail properties..." +#~ msgstr "" +#~ "Bezig met wachten op het verwijderen van alle mail eigenschappen door " +#~ "Kolab" + +#, fuzzy +#~ msgid "" +#~ "Please remove the mail settings first to allow kolab to call its remove " +#~ "methods!" +#~ msgstr "" +#~ "Verwijder a.u.b. eerst het mail account, zodat kolab haar verwijder " +#~ "procedure kan starten." + +#, fuzzy +#~ msgid "You have no permission to submit a '%s' command!" +#~ msgstr "" +#~ "U heeft geen toestemming om een gebruiker aan te maken onder deze 'Basis'." + +#, fuzzy +#~ msgid "No mail servers specified!" +#~ msgstr "Geen LOG servers gedefiniëerd!" + +#~ msgid "Sieve port" +#~ msgstr "Sieve poort" + +#~ msgid "There is no mail method '%s' specified in your gosa.conf available." +#~ msgstr "" +#~ "De E-mail methode '%s' opgegeven in uw gosa.conf is niet beschikbaar." + +#~ msgid "" +#~ "Adding your one of your own addresses to the forwarders makes no sense." +#~ msgstr "" +#~ "Het toevoegen van een van uw eigen adressen aan de lijst met doorstuur " +#~ "adressen is niet logisch." + +#, fuzzy +#~ msgid "alternate address" +#~ msgstr "Alternatieve adressen" + +#~ msgid "Delete" +#~ msgstr "Verwijderen" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#~ msgid "This 'dn' has no valid mail extensions." +#~ msgstr "Deze 'dn' heeft geen geldige E-mail mogelijkheden." + +#~ msgid "" +#~ "This account has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Dit account heeft E-mail mogelijkheden ingeschakeld. U kunt deze " +#~ "uitschakelen door de knop hieronder te gebruiken." + +#~ msgid "" +#~ "This account has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Dit account heeft geen E-mail mogelijkheden. U kunt deze inschakelen door " +#~ "de knop hieronder te gebruiken." + +#, fuzzy +#~ msgid "You're trying to add an invalid email address " +#~ msgstr "" +#~ "U probeert een ongeldig email adres toe te voegen aan de doorstuurlijst." + +#~ msgid "" +#~ "You're trying to add an invalid email address to the list of alternate " +#~ "addresses." +#~ msgstr "" +#~ "U probeert een ongeldig E-mail adres toe te voegen aan de lijst met " +#~ "alternatieve adressen." + +#~ msgid "The address you're trying to add is already used by user" +#~ msgstr "" +#~ "Het adres dat u probeert toe te voegen wordt al gebruikt door gebruiker" + +#~ msgid "The required field 'Primary address' is not set." +#~ msgstr "Het vereiste veld 'Primair adres' is leeg." + +#~ msgid "Please enter a valid email addres in 'Primary address' field." +#~ msgstr "Geef a.u.b. een geldig email adres op in het 'Primair adres' veld." + +#~ msgid "The primary address you've entered is already in use." +#~ msgstr "Het primaire adres dat u opgegeven heeft wordt al gebruikt." + +#~ msgid "Value in 'Quota size' is not valid." +#~ msgstr "De waarde opgegeven bij 'Quota grootte' is niet geldig." + +#~ msgid "Please specify a vaild mail size for mails to be rejected." +#~ msgstr "" +#~ "Geef a.u.b. een geldige E-mail grootte op voor af te wijzen E-mails." + +#, fuzzy +#~ msgid "Please specify a numeric value for header size limit." +#~ msgstr "Geef a.u.b. een nummerieke waarde op voor opnieuw proberen." + +#, fuzzy +#~ msgid "Please specify a numeric value for mailbox size limit." +#~ msgstr "Geef a.u.b. een nummerieke waarde op voor verval." + +#, fuzzy +#~ msgid "Please specify a numeric value for message size limit." +#~ msgstr "Geef a.u.b. een nummerieke waarde op voor verval." + +#, fuzzy +#~ msgid "Required score must be a numeric value." +#~ msgstr "Toekomstige dagen moet een waarde bevatten." + +#, fuzzy +#~ msgid "Please specify a server identifier." +#~ msgstr "Geef a.u.b. een geldige id op." + +#, fuzzy +#~ msgid "Please specify a connect url." +#~ msgstr "Geef a.u.b. een naam op." + +#, fuzzy +#~ msgid "Please specify an admin user." +#~ msgstr "Geef a.u.b. een naam op." + +#, fuzzy +#~ msgid "Please specify a password for the admin user." +#~ msgstr "Geef a.u.b. een geldig telefoonnummer op." + +#~ msgid "The imap connect string needs to be in the form '%s'." +#~ msgstr "De imap verbindings string dient in eruit te zien als '%s'." + +#~ msgid "The sieve port needs to be numeric." +#~ msgstr "De sieve poort dient nummeriek te zijn." + +#, fuzzy +#~ msgid "The specified value for '%s' must be a numeric value." +#~ msgstr "De sieve poort dient nummeriek te zijn." + +#, fuzzy +#~ msgid "Please specify a valid value for '%s'." +#~ msgstr "Geef a.u.b. een geldige waarde op voor 'url'." + +#~ msgid "" +#~ "This group has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Deze groep heeft E-mail mogelijkheden ingeschakeld. U kunt deze " +#~ "uitschakelen door de knop hieronder te gebruiken." + +#~ msgid "" +#~ "This group has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Deze groep heeft geen E-mail mogelijkheden. U kunt deze inschakelen door " +#~ "de knop hieronder te gebruiken." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "Geef a.u.b. een geldig E-mail adres voor het 'Primair adres' op." + +#~ msgid "Back" +#~ msgstr "Terug" + +#, fuzzy +#~ msgid "Mailqueue" +#~ msgstr "Mail wachtrij" + +#, fuzzy +#~ msgid "Mailqueue addon" +#~ msgstr "Mail wachtrij" + +#~ msgid "This account has no mail extensions." +#~ msgstr "Dit account heeft E-mail mogelijkheden uitgeschakeld." + +#~ msgid "January" +#~ msgstr "Januari" + +#~ msgid "February" +#~ msgstr "Februari" + +#~ msgid "March" +#~ msgstr "Maart" + +#~ msgid "April" +#~ msgstr "April" + +#~ msgid "May" +#~ msgstr "Mei" + +#~ msgid "June" +#~ msgstr "Juni" + +#~ msgid "July" +#~ msgstr "Juli" + +#~ msgid "August" +#~ msgstr "Augustus" + +#~ msgid "September" +#~ msgstr "September" + +#~ msgid "October" +#~ msgstr "Oktober" + +#~ msgid "November" +#~ msgstr "November" + +#~ msgid "December" +#~ msgstr "December" + +#, fuzzy +#~ msgid "Removing of user/mail account with dn '%s' failed." +#~ msgstr "Het verwijderen van het E-mail account is mislukt" + +#, fuzzy +#~ msgid "Saving of user/mail account with dn '%s' failed." +#~ msgstr "Het opslaan van het E-mail account is mislukt" + +#~ msgid "" +#~ "There is no valid mailserver specified, please add one in the system " +#~ "setup." +#~ msgstr "" +#~ "Er is geen geldige mailserver gespecificeerd. Voeg er a.u.b. een toe in " +#~ "de systeem instellingen." + +#~ msgid "You specified Spam settings, but there is no Folder specified." +#~ msgstr "" +#~ "U heeft Spam instellingen opgegeven, maar geen mailfolder opgegeven." + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Gebruik de 'Bewerk' knop hieronder om de informatie in deze dialoog te " +#~ "veranderen" + +#, fuzzy +#~ msgid "Saving of object group/mail with dn '%s' failed." +#~ msgstr "Het opslaan van de objectgroep is mislukt" + +#, fuzzy +#~ msgid "Removing of object group/mail with dn '%s' failed." +#~ msgstr "Het verwijderen van de objectgroep is mislukt" + +#, fuzzy +#~ msgid "Saving of server services/anti virus with dn '%s' failed." +#~ msgstr "Het opslaan van het server service object is mislukt" + +#, fuzzy +#~ msgid "Saving of server services/spamassassin with dn '%s' failed." +#~ msgstr "Het opslaan van het server service object is mislukt" + +#, fuzzy +#~ msgid "Saving server services/mail with dn '%s' failed." +#~ msgstr "Het opslaan van het server service object is mislukt" + +#, fuzzy +#~ msgid "Removing of groups/mail with dn '%s' failed." +#~ msgstr "Het verwijderen van de groeps E-mail instellingen is mislukt" + +#, fuzzy +#~ msgid "Saving of groups/mail with dn '%s' failed." +#~ msgstr "Het opslaan van de groep E-mail instellingen is mislukt" diff --git a/trunk/gosa-plugins/mail/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mail/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f5a15ffff --- /dev/null +++ b/trunk/gosa-plugins/mail/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,2729 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 09:00+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/ogroups/mail/mail.tpl:7 +msgid "Mail distribution list" +msgstr "Pocztowa lista dystrybucyjna" + +#: admin/ogroups/mail/mail.tpl:10 admin/groups/mail/mail.tpl:7 +#: admin/groups/mail/paste_mail.tpl:8 +#: admin/groups/mail/class_groupMail.inc:838 personal/mail/copypaste.tpl:7 +#: personal/mail/generic.tpl:9 personal/mail/class_mailAccount.inc:1086 +msgid "Primary address" +msgstr "Adres podstawowy" + +#: admin/ogroups/mail/mail.tpl:13 +msgid "Primary mail address for this distribution list" +msgstr "Adres podstawowy dla tej listy dystrybucyjnej" + +#: admin/ogroups/mail/class_mailogroup.inc:50 +msgid "Remove mail account" +msgstr "Usuń konto pocztowe" + +#: admin/ogroups/mail/class_mailogroup.inc:51 +#: admin/ogroups/mail/class_mailogroup.inc:54 +#, fuzzy +msgid "mail group" +msgstr "Grupa pocztowa" + +#: admin/ogroups/mail/class_mailogroup.inc:53 +msgid "Create mail account" +msgstr "Stwórz konto pocztowe" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +#: admin/ogroups/mail/class_mailogroup.inc:93 +#: admin/ogroups/mail/class_mailogroup.inc:194 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: admin/groups/mail/class_groupMail.inc:840 +#: admin/groups/mail/class_groupMail.inc:971 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: personal/mail/class_mailAccount.inc:1090 +#: personal/mail/class_mailAccount.inc:1094 +#: personal/mail/class_mailAccount.inc:1105 +#: personal/mail/class_mailAccount.inc:1420 +msgid "Mail address" +msgstr "Adres email" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +msgid "your-name@your-domain.com" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:120 +#: admin/ogroups/mail/class_mailogroup.inc:157 +#: admin/systems/services/imap/class_goImapServer.inc:190 +#: admin/systems/services/spam/class_goSpamServer.inc:277 +#: admin/systems/services/virus/class_goVirusServer.inc:154 +#: admin/systems/services/mail/class_goMailServer.inc:582 +#: admin/groups/mail/class_groupMail.inc:531 +#: admin/groups/mail/class_groupMail.inc:760 +#: personal/mail/class_mailAccount.inc:915 +#: personal/mail/class_mailAccount.inc:982 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/ogroups/mail/class_mailogroup.inc:186 +#: admin/ogroups/mail/paste_mail.tpl:4 +#: admin/groups/mail/class_groupMail.inc:276 +#: admin/groups/mail/class_groupMail.inc:278 +#: admin/groups/mail/class_groupMail.inc:279 +#: admin/groups/mail/class_groupMail.inc:284 +#: admin/groups/mail/class_groupMail.inc:286 +#: admin/groups/mail/class_groupMail.inc:287 +#: admin/groups/mail/class_groupMail.inc:828 +#: admin/groups/mail/class_groupMail.inc:963 +#: personal/mail/class_mailAccount.inc:50 +#: personal/mail/class_mailAccount.inc:239 +#: personal/mail/class_mailAccount.inc:247 +#: personal/mail/class_mailAccount.inc:249 +#: personal/mail/class_mailAccount.inc:254 +#: personal/mail/class_mailAccount.inc:256 +#: personal/mail/class_mailAccount.inc:1074 +#: personal/mail/class_mailAccount.inc:1264 +#: personal/mail/class_mailAccount.inc:1410 +msgid "Mail" +msgstr "Poczta" + +#: admin/ogroups/mail/class_mailogroup.inc:187 +msgid "Mail group" +msgstr "Grupa pocztowa" + +#: admin/ogroups/mail/paste_mail.tpl:7 +#, fuzzy +msgid "Please enter a mail address" +msgstr "Proszę podać prawidłową nazwę." + +#: admin/systems/services/imap/class_goImapServer.inc:48 +msgid "IMAP/POP3 service" +msgstr "Usługa IMAP/POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:53 +#: admin/systems/services/imap/class_goImapServer.inc:212 +msgid "Repair database" +msgstr "Napraw bazę" + +#: admin/systems/services/imap/class_goImapServer.inc:100 +#, fuzzy +msgid "IMAP/POP3 (Cyrus) service" +msgstr "Usługa IMAP/POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:110 +#: admin/systems/services/imap/class_goImapServer.inc:214 +#: admin/systems/services/imap/goImapServer.tpl:7 +msgid "Server identifier" +msgstr "Identyfikator serwera" + +#: admin/systems/services/imap/class_goImapServer.inc:114 +#: admin/systems/services/imap/class_goImapServer.inc:116 +#: admin/systems/services/imap/class_goImapServer.inc:215 +#: admin/systems/services/imap/goImapServer.tpl:16 +msgid "Connect URL" +msgstr "Połączeniowy URL" + +#: admin/systems/services/imap/class_goImapServer.inc:120 +#: admin/systems/services/imap/class_goImapServer.inc:122 +#: admin/systems/services/imap/class_goImapServer.inc:219 +#: admin/systems/services/imap/goImapServer.tpl:43 +#, fuzzy +msgid "Sieve connect URL" +msgstr "Połączeniowy URL" + +#: admin/systems/services/imap/class_goImapServer.inc:123 +#, fuzzy, php-format +msgid "Valid options are: %s" +msgstr "Opcje poczty" + +#: admin/systems/services/imap/class_goImapServer.inc:127 +#: admin/systems/services/imap/class_goImapServer.inc:216 +#: admin/systems/services/imap/goImapServer.tpl:25 +msgid "Admin user" +msgstr "Użytkownik administracyjny" + +#: admin/systems/services/imap/class_goImapServer.inc:130 +#: admin/systems/services/imap/goImapServer.tpl:34 +msgid "Password" +msgstr "Hasło" + +#: admin/systems/services/imap/class_goImapServer.inc:199 +#: admin/systems/services/imap/class_goImapServer.inc:200 +#, fuzzy +msgid "IMAP/POP3" +msgstr "Usługa IMAP/POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:200 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/imap/class_goImapServer.inc:209 +#: admin/systems/services/virus/class_goVirusServer.inc:228 +msgid "Start" +msgstr "Start" + +#: admin/systems/services/imap/class_goImapServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:229 +#: personal/mail/sieve/class_sieveManagement.inc:501 +#: personal/mail/sieve/class_sieveManagement.inc:719 +#: personal/mail/sieve/templates/object_container.tpl:30 +#: personal/mail/sieve/templates/element_stop.tpl:4 +msgid "Stop" +msgstr "Zatrzymaj" + +#: admin/systems/services/imap/class_goImapServer.inc:211 +#: admin/systems/services/virus/class_goVirusServer.inc:230 +msgid "Restart" +msgstr "Restart" + +#: admin/systems/services/imap/class_goImapServer.inc:217 +msgid "Admin password" +msgstr "Hasło Administratora" + +#: admin/systems/services/imap/class_goImapServer.inc:220 +#: admin/systems/services/imap/goImapServer.tpl:61 +msgid "Start IMAP service" +msgstr "Uruchom usługę IMAP" + +#: admin/systems/services/imap/class_goImapServer.inc:221 +#: admin/systems/services/imap/goImapServer.tpl:70 +msgid "Start IMAP SSL service" +msgstr "Uruchom usługę IMAP SSL" + +#: admin/systems/services/imap/class_goImapServer.inc:222 +#: admin/systems/services/imap/goImapServer.tpl:79 +msgid "Start POP3 service" +msgstr "Uruchom usługę POP3" + +#: admin/systems/services/imap/class_goImapServer.inc:223 +#: admin/systems/services/imap/goImapServer.tpl:88 +msgid "Start POP3 SSL service" +msgstr "Uruchom usługę POP3 SSL" + +#: admin/systems/services/imap/goImapServer.tpl:1 +#: admin/systems/services/mail/goMailServer.tpl:1 admin/groups/mail/mail.tpl:4 +#: personal/mail/generic.tpl:5 +msgid "Generic" +msgstr "Ogólne" + +#: admin/systems/services/imap/goImapServer.tpl:99 +#: admin/systems/services/mail/goMailServer.tpl:204 +msgid "The server must be saved before you can use the status flag." +msgstr "Serwer musi zostać zapisany zanim można użyć flag statusu." + +#: admin/systems/services/imap/goImapServer.tpl:101 +#: admin/systems/services/mail/goMailServer.tpl:206 +msgid "The service must be saved before you can use the status flag." +msgstr "Usługa musi zostać zapisana zanim można użyć flag statusu." + +#: admin/systems/services/imap/goImapServer.tpl:104 +#: admin/systems/services/mail/goMailServer.tpl:209 +msgid "Set new status" +msgstr "Ustaw nowy status" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Set status" +msgstr "Ustaw status" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Execute" +msgstr "Uruchom" + +#: admin/systems/services/spam/goSpamServerRule.tpl:6 +msgid "Name" +msgstr "Imię" + +#: admin/systems/services/spam/goSpamServerRule.tpl:14 +#, fuzzy +msgid "Rule" +msgstr "Pełniona funkcja" + +#: admin/systems/services/spam/class_goSpamServer.inc:42 +#: admin/systems/services/spam/class_goSpamServer.inc:320 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/spam/class_goSpamServer.inc:347 +msgid "Spamassassin" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:143 +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#: admin/groups/mail/class_groupMail.inc:341 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:360 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: personal/mail/sieve/class_sieveManagement.inc:201 +#: personal/mail/sieve/class_sieveManagement.inc:206 +#: personal/mail/sieve/class_sieveManagement.inc:212 +#: personal/mail/sieve/class_sieveManagement.inc:218 +#: personal/mail/sieve/class_sieveManagement.inc:429 +#: personal/mail/sieve/class_My_Tree.inc:660 +#: personal/mail/class_mailAccount.inc:311 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:329 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: addons/mailqueue/class_mailqueue.inc:110 +#: addons/mailqueue/class_mailqueue.inc:144 +#: addons/mailqueue/class_mailqueue.inc:150 +msgid "Error" +msgstr "Błąd" + +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#, fuzzy +msgid "Trusted network" +msgstr "Sieci Postfix" + +#: admin/systems/services/spam/class_goSpamServer.inc:287 +msgid "Score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:329 +#: admin/systems/services/spam/goSpamServer.tpl:8 +#, fuzzy +msgid "Rewrite header" +msgstr "nagłówek" + +#: admin/systems/services/spam/class_goSpamServer.inc:330 +#, fuzzy +msgid "Trusted networks" +msgstr "Sieci Postfix" + +#: admin/systems/services/spam/class_goSpamServer.inc:331 +#: admin/systems/services/spam/goSpamServer.tpl:18 +msgid "Required score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:332 +#, fuzzy +msgid "Rules" +msgstr "Pełniona funkcja" + +#: admin/systems/services/spam/class_goSpamServer.inc:334 +#: admin/systems/services/spam/goSpamServer.tpl:69 +msgid "Enable use of bayes filtering" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:335 +msgid "Enabled bayes auto learning" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:336 +#: admin/systems/services/spam/goSpamServer.tpl:75 +msgid "Enable RBL checks" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:337 +#: admin/systems/services/spam/goSpamServer.tpl:86 +#, fuzzy +msgid "Enable use of Razor" +msgstr "Włącz skanowanie antyfirusowe" + +#: admin/systems/services/spam/class_goSpamServer.inc:338 +#: admin/systems/services/spam/goSpamServer.tpl:89 +msgid "Enable use of DDC" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:339 +#: admin/systems/services/spam/goSpamServer.tpl:92 +#, fuzzy +msgid "Enable use of Pyzor" +msgstr "Włącz skanowanie antyfirusowe" + +#: admin/systems/services/spam/goSpamServer.tpl:22 +msgid "Select required score to tag mail as spam" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:48 +#: admin/systems/services/mail/goMailServer.tpl:73 +#: admin/systems/services/mail/goMailServer.tpl:104 +msgid "Remove" +msgstr "Usuń" + +#: admin/systems/services/spam/goSpamServer.tpl:72 +msgid "Enable bayes auto learning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:45 +#: admin/systems/services/virus/class_goVirusServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:219 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +msgid "Anti virus" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:163 +#: admin/systems/services/virus/class_goVirusServer.inc:238 +msgid "Maximum directory recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:164 +#: admin/systems/services/virus/class_goVirusServer.inc:237 +#: admin/systems/services/virus/goVirusServer.tpl:43 +msgid "Maximum threads" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:165 +#: admin/systems/services/virus/class_goVirusServer.inc:240 +#: admin/systems/services/virus/goVirusServer.tpl:134 +msgid "Maximum file size" +msgstr "Maksymalny rozmiar pliku" + +#: admin/systems/services/virus/class_goVirusServer.inc:166 +#: admin/systems/services/virus/class_goVirusServer.inc:241 +msgid "Maximum recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:167 +#: admin/systems/services/virus/class_goVirusServer.inc:242 +#: admin/systems/services/virus/goVirusServer.tpl:152 +msgid "Maximum compression ratio" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:168 +#: admin/systems/services/virus/class_goVirusServer.inc:244 +#: admin/systems/services/virus/goVirusServer.tpl:71 +#, fuzzy +msgid "Checks per day" +msgstr "Sprawdź parametr" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/goVirusServer.tpl:13 +#, fuzzy +msgid "Database user" +msgstr "Bazy danych" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:245 +#: admin/systems/services/virus/goVirusServer.tpl:33 +msgid "Http proxy URL" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:243 +#: admin/systems/services/virus/goVirusServer.tpl:23 +#, fuzzy +msgid "Database mirror" +msgstr "Mirror Debiana" + +#: admin/systems/services/virus/class_goVirusServer.inc:232 +#: admin/systems/services/virus/goVirusServer.tpl:84 +msgid "Enable debugging" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:233 +#: admin/systems/services/virus/goVirusServer.tpl:92 +#, fuzzy +msgid "Enable mail scanning" +msgstr "Włącz skanowanie antyfirusowe" + +#: admin/systems/services/virus/class_goVirusServer.inc:234 +#: admin/systems/services/virus/goVirusServer.tpl:117 +msgid "Enable scanning of archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:235 +#: admin/systems/services/virus/goVirusServer.tpl:125 +msgid "Block encrypted archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:239 +#, fuzzy +msgid "Anti virus user" +msgstr "Dodan nową usługę" + +#: admin/systems/services/virus/goVirusServer.tpl:5 +#, fuzzy +msgid "Generic virus filtering" +msgstr "Ogólne ustawienia użytkownika" + +#: admin/systems/services/virus/goVirusServer.tpl:47 +#, fuzzy +msgid "Select number of maximal threads" +msgstr "Wybierz numery do dodania" + +#: admin/systems/services/virus/goVirusServer.tpl:61 +msgid "Max directory recursions" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:101 +msgid "Archive scanning" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:143 +msgid "Maximum recursion" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:45 +#: admin/systems/services/mail/class_goMailServer.inc:512 +#, fuzzy +msgid "Mail smtp service (Postfix)" +msgstr "Usługa pocztowa (SMTP)" + +#: admin/systems/services/mail/class_goMailServer.inc:600 +#: admin/systems/services/mail/class_goMailServer.inc:711 +msgid "Header size limit" +msgstr "Linit rozmiaru nagłówka" + +#: admin/systems/services/mail/class_goMailServer.inc:603 +#, fuzzy +msgid "Mailbox size limit" +msgstr "Max rozmiar skrzynki" + +#: admin/systems/services/mail/class_goMailServer.inc:606 +#, fuzzy +msgid "Message size limit" +msgstr "Linit rozmiaru nagłówka" + +#: admin/systems/services/mail/class_goMailServer.inc:700 +msgid "Mail smtp (Postfix)" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Mail smtp - Postfix" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:709 +#: admin/systems/services/mail/goMailServer.tpl:7 +msgid "Visible full qualified hostname" +msgstr "Widoczna pełna nazwa hosta." + +#: admin/systems/services/mail/class_goMailServer.inc:710 +msgid "Description" +msgstr "Opis" + +#: admin/systems/services/mail/class_goMailServer.inc:712 +#: admin/systems/services/mail/goMailServer.tpl:26 +msgid "Max mailbox size" +msgstr "Max rozmiar skrzynki" + +#: admin/systems/services/mail/class_goMailServer.inc:713 +#: admin/systems/services/mail/goMailServer.tpl:35 +msgid "Max message size" +msgstr "Max rozmiar wiadomości" + +#: admin/systems/services/mail/class_goMailServer.inc:714 +#: admin/systems/services/mail/goMailServer.tpl:91 +msgid "Domains to accept mail for" +msgstr "Domeny dla których akceptować pocztę" + +#: admin/systems/services/mail/class_goMailServer.inc:715 +#: admin/systems/services/mail/goMailServer.tpl:60 +msgid "Local networks" +msgstr "Sieci lokalne" + +#: admin/systems/services/mail/class_goMailServer.inc:716 +#: admin/systems/services/mail/goMailServer.tpl:45 +msgid "Relay host" +msgstr "Host przekazujący" + +#: admin/systems/services/mail/class_goMailServer.inc:717 +msgid "Transport table" +msgstr "tabela transportów" + +#: admin/systems/services/mail/class_goMailServer.inc:718 +#: admin/systems/services/mail/goMailServer.tpl:149 +msgid "Restrictions for sender" +msgstr "Ograniczenia dla nadawcy" + +#: admin/systems/services/mail/class_goMailServer.inc:719 +#: admin/systems/services/mail/goMailServer.tpl:175 +msgid "Restrictions for recipient" +msgstr "Ograniczenia dla odbiorcy" + +#: admin/systems/services/mail/goMailServer.tpl:11 +msgid "The full qualified host name." +msgstr "Pełna nazwa hosta." + +#: admin/systems/services/mail/goMailServer.tpl:16 +msgid "Max mail header size" +msgstr "Max rozmiar nagłówków poczty" + +#: admin/systems/services/mail/goMailServer.tpl:21 +msgid "This value specifies the maximal header size." +msgstr "Ta wartość określa maksymalny rozmiar nagłówków." + +#: admin/systems/services/mail/goMailServer.tpl:21 +#: admin/systems/services/mail/goMailServer.tpl:31 +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "KB" +msgstr "KB" + +#: admin/systems/services/mail/goMailServer.tpl:31 +msgid "Defines the maximal size of mail box." +msgstr "Określa maksymalny rozmiar skrzynki." + +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "Specify the maximal size of a message." +msgstr "Podaj maksymalny rozmiar wiadomości." + +#: admin/systems/services/mail/goMailServer.tpl:50 +msgid "Relay messages to following host:" +msgstr "Przekazuj wiadomości do następujących hostów:" + +#: admin/systems/services/mail/goMailServer.tpl:62 +msgid "Postfix networks" +msgstr "Sieci Postfix" + +#: admin/systems/services/mail/goMailServer.tpl:83 +msgid "Domains and routing" +msgstr "Domeny i routing" + +#: admin/systems/services/mail/goMailServer.tpl:93 +msgid "Postfix is responsible for the following domains:" +msgstr "Postfix jest odpowiedzialny za następujące domeny:" + +#: admin/systems/services/mail/goMailServer.tpl:114 +msgid "Transports" +msgstr "Transporty" + +#: admin/systems/services/mail/goMailServer.tpl:123 +msgid "Select a transport protocol." +msgstr "Wybierz protokół transportu." + +#: admin/systems/services/mail/goMailServer.tpl:141 +msgid "Restrictions" +msgstr "Ograniczenia" + +#: admin/systems/services/mail/goMailServer.tpl:157 +#: admin/systems/services/mail/goMailServer.tpl:183 +msgid "Restriction filter" +msgstr "Filtr ograniczeń" + +#: admin/groups/mail/mail.tpl:35 personal/mail/generic.tpl:30 +#: addons/mailqueue/contents.tpl:73 +msgid "Server" +msgstr "Serwer" + +#: admin/groups/mail/mail.tpl:42 personal/mail/generic.tpl:37 +msgid "Specify the mail server where the user will be hosted on" +msgstr "Wybierz serwer poczty który będzie przechowywał skrzynkę użytkownika" + +#: admin/groups/mail/mail.tpl:56 personal/mail/generic.tpl:53 +msgid "Quota usage" +msgstr "Użycie Quoty" + +#: admin/groups/mail/mail.tpl:60 admin/groups/mail/class_groupMail.inc:847 +#: admin/groups/mail/class_groupMail.inc:972 personal/mail/generic.tpl:57 +#: personal/mail/class_mailAccount.inc:1113 +#: personal/mail/class_mailAccount.inc:1270 +#: personal/mail/class_mailAccount.inc:1422 +msgid "Quota size" +msgstr "Rozmiar Quoty" + +#: admin/groups/mail/mail.tpl:73 admin/groups/mail/class_groupMail.inc:974 +#, fuzzy +msgid "Folder type" +msgstr "Filtr" + +#: admin/groups/mail/mail.tpl:91 +#, fuzzy +msgid "Reload" +msgstr "Odczyt" + +#: admin/groups/mail/mail.tpl:102 admin/groups/mail/paste_mail.tpl:23 +#: personal/mail/copypaste.tpl:25 personal/mail/generic.tpl:73 +msgid "Alternative addresses" +msgstr "Adresy alternatywne" + +#: admin/groups/mail/mail.tpl:107 admin/groups/mail/paste_mail.tpl:24 +#: personal/mail/copypaste.tpl:55 personal/mail/generic.tpl:76 +msgid "List of alternative mail addresses" +msgstr "Lista alternatywnych adresów pocztowych" + +#: admin/groups/mail/mail.tpl:136 +msgid "IMAP shared folders" +msgstr "Współdzielone foldery IMAP" + +#: admin/groups/mail/mail.tpl:143 +msgid "Default permission" +msgstr "Domyślne uprawnienia" + +#: admin/groups/mail/mail.tpl:145 +msgid "Member permission" +msgstr "Uprawnienia członków" + +#: admin/groups/mail/mail.tpl:163 +#, fuzzy +msgid "Hide" +msgstr "nagłówek" + +#: admin/groups/mail/mail.tpl:165 +#, fuzzy +msgid "Show" +msgstr "Pokaż grupy" + +#: admin/groups/mail/mail.tpl:187 personal/mail/generic.tpl:303 +msgid "Advanced mail options" +msgstr "Zaawansowane opcje poczty" + +#: admin/groups/mail/mail.tpl:193 personal/mail/generic.tpl:309 +msgid "Select if user can only send and receive inside his own domain" +msgstr "" +"Wybierz jeśli użytkownik może odbierać i wysyłać w obrębie własnej domeny" + +#: admin/groups/mail/mail.tpl:195 personal/mail/generic.tpl:311 +msgid "User is only allowed to send and receive local mails" +msgstr "Użytkownik może tylko wysyłać i odbierać lokalną pocztę" + +#: admin/groups/mail/mail.tpl:204 admin/groups/mail/paste_mail.tpl:34 +msgid "Forward messages to non group members" +msgstr "Przekaż wiadomości do członków bez grupy" + +#: admin/groups/mail/mail.tpl:213 +#, fuzzy +msgid "Used in all groups" +msgstr "Proszę podać grupę" + +#: admin/groups/mail/mail.tpl:216 +#, fuzzy +msgid "Not used in all groups" +msgstr "Pokaż grupy funkcjonalne" + +#: admin/groups/mail/mail.tpl:234 admin/groups/mail/paste_mail.tpl:42 +#: personal/mail/copypaste.tpl:44 personal/mail/generic.tpl:290 +#: personal/mail/generic.tpl:293 +msgid "Add local" +msgstr "Dodaj lokalne" + +#: admin/groups/mail/paste_mail.tpl:1 personal/mail/copypaste.tpl:1 +#: personal/mail/class_mailAccount.inc:1411 +msgid "Mail settings" +msgstr "Ustawienia pocztowe" + +#: admin/groups/mail/paste_mail.tpl:12 +msgid "Primary mail address for this shared folder" +msgstr "Adres podstawowy dla tego współdzielonego folderu" + +#: admin/groups/mail/mail_locals.tpl:6 personal/mail/mail_locals.tpl:7 +msgid "Select addresses to add" +msgstr "Wybierz adresy do dodania" + +#: admin/groups/mail/mail_locals.tpl:22 personal/mail/mail_locals.tpl:25 +msgid "Filters" +msgstr "Filtry" + +#: admin/groups/mail/mail_locals.tpl:32 +msgid "Display addresses of department" +msgstr "Wyświetl adresy departamentu" + +#: admin/groups/mail/mail_locals.tpl:33 personal/mail/mail_locals.tpl:38 +msgid "Choose the department the search will be based on" +msgstr "Wybierz departament na którym wyszukiwanie będzie bazować" + +#: admin/groups/mail/mail_locals.tpl:42 +msgid "Display addresses matching" +msgstr "Wyświetl adresy pasujące" + +#: admin/groups/mail/mail_locals.tpl:45 personal/mail/mail_locals.tpl:52 +msgid "Regular expression for matching addresses" +msgstr "Wyrażenie regularne dla dopasowania adresów" + +#: admin/groups/mail/mail_locals.tpl:52 personal/mail/mail_locals.tpl:60 +msgid "Display addresses of user" +msgstr "Wyświetl adresy użytkowników" + +#: admin/groups/mail/mail_locals.tpl:55 personal/mail/mail_locals.tpl:64 +msgid "User name of which addresses are shown" +msgstr "Nazwa użytkownika którego adresy są pokazane" + +#: admin/groups/mail/mail_admins.tpl:4 +msgid "Folder administrators" +msgstr "Administratorzy foldera" + +#: admin/groups/mail/mail_admins.tpl:24 +msgid "Select a specific department" +msgstr "Wybierz departament" + +#: admin/groups/mail/mail_admins.tpl:30 +msgid "Choose" +msgstr "Wybierz" + +#: admin/groups/mail/class_groupMail.inc:111 +#: admin/groups/mail/class_groupMail.inc:118 +#: admin/groups/mail/class_groupMail.inc:125 +#: admin/groups/mail/class_groupMail.inc:132 +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:140 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:547 +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:773 +#: admin/groups/mail/class_groupMail.inc:777 +#: admin/groups/mail/class_groupMail.inc:781 +#: admin/groups/mail/class_groupMail.inc:790 +#: personal/mail/class_mailAccount.inc:147 +#: personal/mail/class_mailAccount.inc:154 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:162 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:928 +#: personal/mail/class_mailAccount.inc:996 +#: personal/mail/class_mailAccount.inc:1000 +#: personal/mail/class_mailAccount.inc:1004 +#: personal/mail/class_mailAccount.inc:1018 +#, fuzzy +msgid "Mail error" +msgstr "Serwer pocztowy" + +#: admin/groups/mail/class_groupMail.inc:111 +#: personal/mail/class_mailAccount.inc:147 +#, fuzzy, php-format +msgid "Cannot read quota settings: %s" +msgstr "Nie można stworzyć pliku '%s'." + +#: admin/groups/mail/class_groupMail.inc:118 +#: personal/mail/class_mailAccount.inc:154 +#, fuzzy, php-format +msgid "Cannot get list of mailboxes: %s" +msgstr "Nie można usunąć konta IMAP. Odpowiedź serwera '%s'." + +#: admin/groups/mail/class_groupMail.inc:125 +#, fuzzy, php-format +msgid "Cannot receive folder types: %s" +msgstr "Współdzielone foldery IMAP" + +#: admin/groups/mail/class_groupMail.inc:132 +#, fuzzy, php-format +msgid "Cannot receive folder permissions: %s" +msgstr "Współdzielone foldery IMAP" + +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:773 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:996 +#, php-format +msgid "Mail method cannot connect: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:140 +#: personal/mail/class_mailAccount.inc:162 +#, php-format +msgid "Mailbox '%s' doesn't exists on mail server: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:297 +#, fuzzy +msgid "" +"Remove shared folder from mail server database when entry gets removed in " +"LDAP" +msgstr "Nie można usunąć użytkownika z bazy Kerberos." + +#: admin/groups/mail/class_groupMail.inc:298 +msgid "Remove the shared folder and all its contents after saving this account" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:341 +#: personal/mail/class_mailAccount.inc:311 +#, fuzzy +msgid "Please select an entry!" +msgstr "Proszę wybrać prawidłowy serwer pocztowy." + +#: admin/groups/mail/class_groupMail.inc:360 +#: personal/mail/class_mailAccount.inc:329 +#, fuzzy +msgid "Cannot add primary address to the list of forwarders!" +msgstr "Próbujesz dodać błędny adres email do listy przekazywanych." + +#: admin/groups/mail/class_groupMail.inc:405 +#: personal/mail/class_mailAccount.inc:372 +#, fuzzy, php-format +msgid "Address is already in use by user '%s'." +msgstr "Adres który próbujesz dodać jest już używany" + +#: admin/groups/mail/class_groupMail.inc:547 +#: personal/mail/class_mailAccount.inc:928 +#, fuzzy, php-format +msgid "Cannot remove mailbox: %s" +msgstr "Nie można usunąć konta IMAP. Odpowiedź serwera '%s'." + +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:790 +#, fuzzy, php-format +msgid "Cannot update shared folder permissions: %s" +msgstr "Współdzielone foldery IMAP" + +#: admin/groups/mail/class_groupMail.inc:649 +#, fuzzy +msgid "New" +msgstr "Dodaj użytkownika" + +#: admin/groups/mail/class_groupMail.inc:777 +#: personal/mail/class_mailAccount.inc:1000 +#, fuzzy, php-format +msgid "Cannot update mailbox: %s" +msgstr "Nie można utworzyć konta IMAP. Odpowiedź serwera '%s'." + +#: admin/groups/mail/class_groupMail.inc:781 +#: personal/mail/class_mailAccount.inc:1004 +#, fuzzy, php-format +msgid "Cannot write quota settings: %s" +msgstr "Nie można stworzyć pliku '%s'." + +#: admin/groups/mail/class_groupMail.inc:822 +#, php-format +msgid "" +"The group 'cn' has changed. It can't be changed due to the fact that mail " +"method '%s' relies on it!" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:856 +#: personal/mail/class_mailAccount.inc:1434 +msgid "Mail max size" +msgstr "Max rozmiar poczty" + +#: admin/groups/mail/class_groupMail.inc:864 +msgid "You need to set the maximum mail size in order to reject anything." +msgstr "Należy ustawić maksymalny rozmiar poczty aby odrzucać cokolwiek." + +#: admin/groups/mail/class_groupMail.inc:868 +#: admin/groups/mail/class_groupMail.inc:973 +#: personal/mail/class_mailAccount.inc:1421 +msgid "Mail server" +msgstr "Serwer pocztowy" + +#: admin/groups/mail/class_groupMail.inc:964 +msgid "Group mail" +msgstr "Grupa poczta" + +#: admin/groups/mail/class_groupMail.inc:974 +msgid "Kolab" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:975 +msgid "Alternate addresses" +msgstr "Adresy alternatywne" + +#: admin/groups/mail/class_groupMail.inc:976 +msgid "Forwarding addresses" +msgstr "Adresy przekazywane" + +#: admin/groups/mail/class_groupMail.inc:977 +#, fuzzy +msgid "Only local" +msgstr "Dodaj lokalne" + +#: admin/groups/mail/class_groupMail.inc:978 +msgid "Permissions" +msgstr "Uprawnienia" + +#: personal/mail/copypaste.tpl:13 personal/mail/generic.tpl:267 +msgid "Forward messages to" +msgstr "Przekaż wiadomości do" + +#: personal/mail/generic.tpl:115 personal/mail/class_mailAccount.inc:1442 +msgid "Use custom sieve script" +msgstr "Użyj własnego skryptu SIEVE" + +#: personal/mail/generic.tpl:115 +msgid "disables all Mail options!" +msgstr "Wyłącza wszystkie opcje poczty!" + +#: personal/mail/generic.tpl:123 +#, fuzzy +msgid "Sieve Management" +msgstr "Zarządzanie" + +#: personal/mail/generic.tpl:144 +msgid "Select if you want to forward mails without getting own copies of them" +msgstr "Zaznacz jeśli chcesz przekazywać pocztę bez zachowania kopii" + +#: personal/mail/generic.tpl:144 +msgid "No delivery to own mailbox" +msgstr "Nie dostarczaj do własnej skrzynki" + +#: personal/mail/generic.tpl:151 +msgid "" +"Select to automatically response with the vacation message defined below" +msgstr "Zaznacz aby automatycznie wysyłać autoodpowiedź zdefiniowaną poniżej" + +#: personal/mail/generic.tpl:153 +msgid "Activate vacation message" +msgstr "Włącz autoresponder" + +#: personal/mail/generic.tpl:161 +#, fuzzy +msgid "from" +msgstr "losowy" + +#: personal/mail/generic.tpl:185 +msgid "till" +msgstr "" + +#: personal/mail/generic.tpl:214 +msgid "Select if you want to filter this mails through spamassassin" +msgstr "Zaznacz jeśli chcesz filtrować wiadomości przez spamassasin" + +#: personal/mail/generic.tpl:216 +msgid "Move mails tagged with spam level greater than" +msgstr "Przenieś pocztę oznakowaną poziomem spamu większym niż" + +#: personal/mail/generic.tpl:219 +#, fuzzy +msgid "Choose spam level - smaller values are more sensitive" +msgstr "Wybierz poziom spamu - mniejsze wartości są bardziej czułe" + +#: personal/mail/generic.tpl:223 +msgid "to folder" +msgstr "do folferu" + +#: personal/mail/generic.tpl:235 +msgid "Reject mails bigger than" +msgstr "Odrzuć pocztę większą niż" + +#: personal/mail/generic.tpl:238 +msgid "MB" +msgstr "MB" + +#: personal/mail/generic.tpl:245 +#: personal/mail/sieve/class_sieveManagement.inc:502 +#: personal/mail/sieve/class_sieveManagement.inc:720 +#: personal/mail/sieve/templates/element_vacation.tpl:44 +#: personal/mail/sieve/templates/object_container.tpl:31 +#: personal/mail/class_mailAccount.inc:1425 +msgid "Vacation message" +msgstr "Treść autorespondera" + +#: personal/mail/generic.tpl:261 +#: personal/mail/sieve/templates/import_script.tpl:12 +#: personal/mail/sieve/templates/edit_frame_base.tpl:7 +msgid "Import" +msgstr "Import" + +#: personal/mail/mail_locals.tpl:35 +#, fuzzy +msgid "Select department" +msgstr "Wybierz aby zobaczyć departamenty" + +#: personal/mail/sieve/class_sieveElement_Vacation.inc:148 +#, fuzzy +msgid "Alternative sender address must be a valid email addresses." +msgstr "Proszę podać prawidłową nazwę skryptu." + +#: personal/mail/sieve/class_sieveManagement.inc:114 +#: personal/mail/sieve/class_sieveManagement.inc:242 +#, fuzzy +msgid "Parse failed" +msgstr "błąd" + +#: personal/mail/sieve/class_sieveManagement.inc:118 +#: personal/mail/sieve/class_sieveManagement.inc:246 +#, fuzzy +msgid "Parse successful" +msgstr "Import powiódł się" + +#: personal/mail/sieve/class_sieveManagement.inc:156 +#, php-format +msgid "" +"The specified mail server '%s' does not exist within the GOsa configuration." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:201 +msgid "No script name specified!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:206 +#, fuzzy +msgid "Please use only lowercase script names!" +msgstr "Proszę podać prawidłową nazwę skryptu." + +#: personal/mail/sieve/class_sieveManagement.inc:212 +#, fuzzy +msgid "Please use only alphabetical characters in script names!" +msgstr "Tylko liczby są dozwolone w okresie życia" + +#: personal/mail/sieve/class_sieveManagement.inc:218 +#, fuzzy +msgid "Script name already in use!" +msgstr "Ta nazwa jest już w użyciu." + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:349 +#: personal/mail/sieve/class_sieveManagement.inc:398 +#: personal/mail/sieve/class_sieveManagement.inc:402 +#: personal/mail/sieve/class_sieveManagement.inc:433 +#: personal/mail/sieve/class_sieveManagement.inc:519 +#: personal/mail/sieve/class_sieveManagement.inc:770 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#, fuzzy +msgid "SIEVE error" +msgstr "Błąd" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#, fuzzy, php-format +msgid "Cannot log into SIEVE server: %s" +msgstr "Nie można zalogować się do serwera SIEVE. Odpowiedź serwera '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/class_mail-methods-cyrus.inc:468 +#, php-format +msgid "Cannot retrieve SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:349 +#, php-format +msgid "Cannot remove SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:395 +#, fuzzy +msgid "Edited" +msgstr "Edytuj" + +#: personal/mail/sieve/class_sieveManagement.inc:429 +msgid "Uploaded script is empty!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy, php-format +msgid "Cannot access temporary file '%s'!" +msgstr "Nie można stworzyć pliku '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:433 +#, fuzzy, php-format +msgid "Cannot open temporary file '%s'!" +msgstr "Nie można otworzyć pliku '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:493 +#: personal/mail/sieve/class_sieveManagement.inc:496 +#: personal/mail/sieve/class_sieveManagement.inc:711 +#: personal/mail/sieve/class_sieveManagement.inc:714 +#: personal/mail/sieve/templates/element_keep.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:22 +#: personal/mail/sieve/templates/object_container.tpl:25 +msgid "Keep" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:494 +#: personal/mail/sieve/class_sieveManagement.inc:712 +#: personal/mail/sieve/templates/element_comment.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:23 +msgid "Comment" +msgstr "Komentarz" + +#: personal/mail/sieve/class_sieveManagement.inc:495 +#: personal/mail/sieve/class_sieveManagement.inc:713 +#, fuzzy +msgid "File into" +msgstr "Właściciel pliku" + +#: personal/mail/sieve/class_sieveManagement.inc:497 +#: personal/mail/sieve/class_sieveManagement.inc:715 +#: personal/mail/sieve/templates/element_discard.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:26 +#, fuzzy +msgid "Discard" +msgstr "Dyski" + +#: personal/mail/sieve/class_sieveManagement.inc:498 +#: personal/mail/sieve/class_sieveManagement.inc:716 +#: personal/mail/sieve/templates/element_redirect.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:27 +#, fuzzy +msgid "Redirect" +msgstr "bezpośredni" + +#: personal/mail/sieve/class_sieveManagement.inc:499 +#: personal/mail/sieve/class_sieveManagement.inc:717 +#: personal/mail/sieve/templates/object_container.tpl:28 +#, fuzzy +msgid "Reject" +msgstr "Wybierz" + +#: personal/mail/sieve/class_sieveManagement.inc:500 +#: personal/mail/sieve/class_sieveManagement.inc:718 +#: personal/mail/sieve/templates/object_container.tpl:29 +#: personal/mail/sieve/templates/element_require.tpl:12 +msgid "Require" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:503 +#: personal/mail/sieve/class_sieveManagement.inc:721 +#: personal/mail/sieve/templates/object_container.tpl:32 +#: personal/mail/sieve/class_sieveElement_If.inc:836 +#, fuzzy +msgid "If" +msgstr "NI" + +#: personal/mail/sieve/class_sieveManagement.inc:519 +#, fuzzy +msgid "Cannot add new element!" +msgstr "Dodaj nowy wzorzec pliku" + +#: personal/mail/sieve/class_sieveManagement.inc:562 +#: personal/mail/sieve/class_sieveManagement.inc:756 +#: personal/mail/sieve/templates/element_else.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:33 +#: personal/mail/sieve/class_sieveElement_If.inc:840 +#, fuzzy +msgid "Else" +msgstr "fałsz" + +#: personal/mail/sieve/class_sieveManagement.inc:564 +#: personal/mail/sieve/class_sieveManagement.inc:758 +#: personal/mail/sieve/class_sieveManagement.inc:763 +#: personal/mail/sieve/templates/element_elsif.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:34 +#: personal/mail/sieve/class_sieveElement_If.inc:838 +msgid "Else If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:589 +#: personal/mail/sieve/templates/element_address.tpl:15 +#: personal/mail/sieve/templates/element_address.tpl:113 +msgid "Address" +msgstr "Adres" + +#: personal/mail/sieve/class_sieveManagement.inc:590 +#: personal/mail/sieve/templates/element_header.tpl:16 +#: personal/mail/sieve/templates/element_header.tpl:106 +#, fuzzy +msgid "Header" +msgstr "nagłówek" + +#: personal/mail/sieve/class_sieveManagement.inc:591 +#: personal/mail/sieve/templates/element_envelope.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:105 +msgid "Envelope" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:592 +#: personal/mail/sieve/templates/element_size.tpl:4 +#: addons/mailqueue/contents.tpl:74 +msgid "Size" +msgstr "Rozmiar" + +#: personal/mail/sieve/class_sieveManagement.inc:593 +#: personal/mail/sieve/templates/element_exists.tpl:8 +#, fuzzy +msgid "Exists" +msgstr "Istniejące" + +#: personal/mail/sieve/class_sieveManagement.inc:594 +#: personal/mail/sieve/templates/element_allof.tpl:10 +#, fuzzy +msgid "All of" +msgstr "Wszystkie" + +#: personal/mail/sieve/class_sieveManagement.inc:595 +#: personal/mail/sieve/templates/element_anyof.tpl:10 +msgid "Any of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:596 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "True" +msgstr "Tak" + +#: personal/mail/sieve/class_sieveManagement.inc:597 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "False" +msgstr "Nie" + +#: personal/mail/sieve/class_sieveManagement.inc:634 +#: addons/mailqueue/class_mailqueue.inc:321 addons/mailqueue/contents.tpl:93 +msgid "Active" +msgstr "Aktywne" + +#: personal/mail/sieve/class_sieveManagement.inc:635 +msgid "This script is marked as active" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:640 +#, fuzzy +msgid "Script length" +msgstr "Zawartość skryptu" + +#: personal/mail/sieve/class_sieveManagement.inc:644 +#, fuzzy +msgid "Remove script" +msgstr "Usuń usługę" + +#: personal/mail/sieve/class_sieveManagement.inc:653 +#, fuzzy +msgid "Activate script" +msgstr "Ostatni skrypt" + +#: personal/mail/sieve/class_sieveManagement.inc:657 +#, fuzzy +msgid "Edit script" +msgstr "Ostatni skrypt" + +#: personal/mail/sieve/class_sieveManagement.inc:672 +#, php-format +msgid "Can't log into SIEVE server. Server says '%s'." +msgstr "Nie można zalogować się do serwera SIEVE. Odpowiedź serwera '%s'." + +#: personal/mail/sieve/class_sieveManagement.inc:770 +msgid "Cannot insert element at the requested position!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#: personal/mail/class_mail-methods-cyrus.inc:556 +#, php-format +msgid "Cannot store SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1045 +#, fuzzy +msgid "Failed to save sieve script" +msgstr "Użyj własnego skryptu SIEVE" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:24 +#, fuzzy +msgid "Please specify a valid email address." +msgstr "Proszę podać prawidłową nazwę skryptu." + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:35 +#, fuzzy +msgid "Place a mail address here" +msgstr "Proszę podać prawidłową nazwę." + +#: personal/mail/sieve/class_sieveElement_Comment.inc:21 +msgid "Your comment here" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:1 +#, fuzzy +msgid "Add a new element" +msgstr "Dodaj nowy wzorzec pliku" + +#: personal/mail/sieve/templates/add_element.tpl:2 +#, fuzzy +msgid "Please select the type of element you want to add" +msgstr "Proszę wybrać prawidłowy plik" + +#: personal/mail/sieve/templates/add_element.tpl:11 +#: personal/mail/sieve/templates/select_test_type.tpl:11 +msgid "Continue" +msgstr "Kontynuuj" + +#: personal/mail/sieve/templates/add_element.tpl:13 +#, fuzzy +msgid "Abort" +msgstr "Port" + +#: personal/mail/sieve/templates/element_discard.tpl:9 +#, fuzzy +msgid "Discard message" +msgstr "Usuń tą wiadomosc" + +#: personal/mail/sieve/templates/element_if.tpl:4 +#: personal/mail/sieve/class_sieveElement_If.inc:834 +#, fuzzy +msgid "Condition" +msgstr "Połączenie" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_address.tpl:116 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_header.tpl:109 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_envelope.tpl:108 +#, fuzzy +msgid "Not" +msgstr "Nie" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_anyof.tpl:7 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "Inverse match" +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:1 +#, fuzzy +msgid "Import sieve script" +msgstr "Importuj skrypt" + +#: personal/mail/sieve/templates/import_script.tpl:2 +msgid "" +"Please select the sieve script you want to import. Use the import button to " +"import the script or the cancel button to abort." +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:5 +#, fuzzy +msgid "Script to import" +msgstr "Priorytet skryptu" + +#: personal/mail/sieve/templates/element_address.tpl:18 +#: personal/mail/sieve/templates/element_header.tpl:19 +#: personal/mail/sieve/templates/element_vacation.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:19 +#, fuzzy +msgid "Normal view" +msgstr "Kod Pocztowy" + +#: personal/mail/sieve/templates/element_address.tpl:25 +#: personal/mail/sieve/templates/element_header.tpl:26 +#: personal/mail/sieve/templates/element_envelope.tpl:26 +#, fuzzy +msgid "Match type" +msgstr "Typ autoryzacji" + +#: personal/mail/sieve/templates/element_address.tpl:28 +#: personal/mail/sieve/templates/element_address.tpl:51 +#: personal/mail/sieve/templates/element_address.tpl:61 +#: personal/mail/sieve/templates/element_address.tpl:72 +#: personal/mail/sieve/templates/element_address.tpl:121 +#: personal/mail/sieve/templates/element_address.tpl:126 +#: personal/mail/sieve/templates/element_header.tpl:29 +#: personal/mail/sieve/templates/element_header.tpl:52 +#: personal/mail/sieve/templates/element_header.tpl:63 +#: personal/mail/sieve/templates/element_header.tpl:114 +#: personal/mail/sieve/templates/element_header.tpl:119 +#: personal/mail/sieve/templates/element_boolean.tpl:5 +#: personal/mail/sieve/templates/element_envelope.tpl:29 +#: personal/mail/sieve/templates/element_envelope.tpl:52 +#: personal/mail/sieve/templates/element_envelope.tpl:63 +#: personal/mail/sieve/templates/element_envelope.tpl:113 +#: personal/mail/sieve/templates/element_envelope.tpl:118 +#, fuzzy +msgid "Boolean value" +msgstr "Domyślna wartość" + +#: personal/mail/sieve/templates/element_address.tpl:36 +#: personal/mail/sieve/templates/element_header.tpl:37 +#: personal/mail/sieve/templates/element_envelope.tpl:37 +#, fuzzy +msgid "Invert test" +msgstr "Test pamięci" + +#: personal/mail/sieve/templates/element_address.tpl:40 +#: personal/mail/sieve/templates/element_header.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +msgid "Yes" +msgstr "Tak" + +#: personal/mail/sieve/templates/element_address.tpl:42 +#: personal/mail/sieve/templates/element_header.tpl:43 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "No" +msgstr "Nie" + +#: personal/mail/sieve/templates/element_address.tpl:48 +msgid "Part of address that should be used" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:58 +#: personal/mail/sieve/templates/element_header.tpl:49 +#: personal/mail/sieve/templates/element_envelope.tpl:49 +#, fuzzy +msgid "Comparator" +msgstr "Komputery" + +#: personal/mail/sieve/templates/element_address.tpl:69 +#: personal/mail/sieve/templates/element_envelope.tpl:60 +#, fuzzy +msgid "Operator" +msgstr "Komputery" + +#: personal/mail/sieve/templates/element_address.tpl:85 +#: personal/mail/sieve/templates/element_header.tpl:77 +#: personal/mail/sieve/templates/element_envelope.tpl:76 +msgid "Address fields to include" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:89 +#: personal/mail/sieve/templates/element_header.tpl:81 +#: personal/mail/sieve/templates/element_envelope.tpl:80 +msgid "Values to match for" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:118 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_header.tpl:111 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:110 +msgid "-" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:138 +#: personal/mail/sieve/templates/element_header.tpl:131 +#: personal/mail/sieve/templates/element_vacation.tpl:47 +#: personal/mail/sieve/templates/element_envelope.tpl:130 +#, fuzzy +msgid "Expert view" +msgstr "Tryb zaufania" + +#: personal/mail/sieve/templates/element_fileinto.tpl:4 +#, fuzzy +msgid "Move mail into folder" +msgstr "do folferu" + +#: personal/mail/sieve/templates/element_fileinto.tpl:8 +#, fuzzy +msgid "Select from list" +msgstr "Wybierz Szablon" + +#: personal/mail/sieve/templates/element_fileinto.tpl:10 +#, fuzzy +msgid "Manual selection" +msgstr "Język" + +#: personal/mail/sieve/templates/element_fileinto.tpl:18 +#, fuzzy +msgid "Folder" +msgstr "Filtr" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#, fuzzy +msgid "Move this object up one position" +msgstr "Usuń obiekt" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Up" +msgstr "Góra" + +#: personal/mail/sieve/templates/object_container_clear.tpl:9 +#: personal/mail/sieve/templates/object_container.tpl:9 +msgid "Move up" +msgstr "Przesuń w górę" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +msgid "Move this object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Down" +msgstr "W dół" + +#: personal/mail/sieve/templates/object_container_clear.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:13 +msgid "Move down" +msgstr "Przesuń w dół" + +#: personal/mail/sieve/templates/object_container_clear.tpl:16 +#, fuzzy +msgid "Remove this object" +msgstr "Usuń obiekt" + +#: personal/mail/sieve/templates/object_container_clear.tpl:17 +#: personal/mail/sieve/templates/object_container.tpl:17 +#, fuzzy +msgid "Remove element" +msgstr "Usuń pozycję" + +#: personal/mail/sieve/templates/create_script.tpl:2 +msgid "" +"Please enter the name for the new script below. Script names must consist of " +"lower case characters only." +msgstr "" + +#: personal/mail/sieve/templates/create_script.tpl:8 +#, fuzzy +msgid "Script name" +msgstr "Nazwa skryptu" + +#: personal/mail/sieve/templates/select_test_type.tpl:1 +#, fuzzy +msgid "Select the type of test you want to add" +msgstr "Wybierz elementy do dodania" + +#: personal/mail/sieve/templates/select_test_type.tpl:3 +#, fuzzy +msgid "Available test types" +msgstr "Dostępni członkowie" + +#: personal/mail/sieve/templates/element_comment.tpl:8 +msgid "Edit" +msgstr "Edytuj" + +#: personal/mail/sieve/templates/element_header.tpl:60 +msgid "operator" +msgstr "" + +#: personal/mail/sieve/templates/element_keep.tpl:9 +#, fuzzy +msgid "Keep message" +msgstr "Usuń tą wiadomosc" + +#: personal/mail/sieve/templates/element_redirect.tpl:18 +#, fuzzy +msgid "Redirect mail to following recipients" +msgstr "Ograniczenia dla odbiorcy" + +#: personal/mail/sieve/templates/element_vacation.tpl:13 +#, fuzzy +msgid "Vacation Message" +msgstr "Treść autorespondera" + +#: personal/mail/sieve/templates/element_vacation.tpl:21 +#, fuzzy +msgid "Release interval" +msgstr "Interwał czasowy" + +#: personal/mail/sieve/templates/element_vacation.tpl:25 +msgid "days" +msgstr "dni" + +#: personal/mail/sieve/templates/element_vacation.tpl:30 +#, fuzzy +msgid "Alternative sender addresses" +msgstr "Adresy alternatywne" + +#: personal/mail/sieve/templates/element_boolean.tpl:4 +msgid "Bool" +msgstr "Bool" + +#: personal/mail/sieve/templates/element_boolean.tpl:8 +#, fuzzy +msgid "update" +msgstr "Aktualizuj" + +#: personal/mail/sieve/templates/remove_script.tpl:2 +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: personal/mail/sieve/templates/remove_script.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Proszę upewnić się, że faktycznie chcesz wykonać tą operację. Nie ma " +"możliwości odwrócenia tego procesu." + +#: personal/mail/sieve/templates/remove_script.tpl:10 +#, fuzzy +msgid "" +"Best thing to do before performing this action would be to save the current " +"script in a file. So - if you've done so - press 'Delete' to continue or " +"'Cancel' to abort." +msgstr "" +"Przed wykonaniem tej operacji zaleca się wykonanie kopii bezpieczeństwa " +"drzewa LDAP. Naciśnij 'Usuń' aby kontynuować, lub 'Anuluj' aby przerwać." + +#: personal/mail/sieve/templates/object_test_container.tpl:6 +#, fuzzy +msgid "Add object" +msgstr "ACLe dla tego obiektu" + +#: personal/mail/sieve/templates/object_test_container.tpl:10 +#: personal/mail/sieve/templates/object_container.tpl:16 +msgid "Remove object" +msgstr "Usuń obiekt" + +#: personal/mail/sieve/templates/object_container.tpl:8 +#, fuzzy +msgid "Move object up one position" +msgstr "Przenieś obiekty" + +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Move object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:21 +#, fuzzy +msgid "choose element" +msgstr "Usuń pozycję" + +#: personal/mail/sieve/templates/object_container.tpl:24 +#, fuzzy +msgid "Fileinto" +msgstr "Plik" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:42 +#, fuzzy +msgid "Add new" +msgstr "Dodaj użytkownika" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add a new object above this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add element above" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:42 +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add a new object below this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add element below" +msgstr "" + +#: personal/mail/sieve/templates/element_size.tpl:16 +#, fuzzy +msgid "Select match type" +msgstr "Wybierz typ ACL" + +#: personal/mail/sieve/templates/element_size.tpl:20 +#, fuzzy +msgid "Select value unit" +msgstr "Wybierz aby zobaczyć departamenty" + +#: personal/mail/sieve/templates/element_stop.tpl:9 +msgid "Stop execution here" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:14 +#, fuzzy +msgid "Reject mail" +msgstr "Odrzuć z powodu rozmiaru wiadomości" + +#: personal/mail/sieve/templates/element_reject.tpl:17 +msgid "This is a multiline text element" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:19 +#, fuzzy +msgid "This is stored as single string" +msgstr "To robi coś" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:6 +msgid "Export" +msgstr "Export" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:12 +msgid "View structured" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:14 +#, fuzzy +msgid "View source" +msgstr "Źródło ntp" + +#: personal/mail/sieve/templates/management.tpl:1 +#, fuzzy +msgid "List of sieve scripts" +msgstr "Lista skryptów" + +#: personal/mail/sieve/templates/management.tpl:5 +msgid "" +"Connection to the sieve server could not be established, the " +"authentification attribute is empty." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:6 +msgid "" +"Please verify that the attributes uid and mail are not empty and try again." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:12 +msgid "Connection to the sieve server could not be established." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:15 +msgid "Possibly the sieve account has not been created yet." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:19 +#, fuzzy +msgid "" +"Be careful. All your changes will be saved directly to sieve, if you use the " +"save button below." +msgstr "" +"Proszę uważać podczas edycji typów rekordu w tym dialogu. Wszystkie zmiany " +"zostaną zapisane natychmiast po naciśnięciu przycisku zachowaj." + +#: personal/mail/sieve/templates/management.tpl:22 +#, fuzzy +msgid "Create new script" +msgstr "Utwórz nowego użytkownika" + +#: personal/mail/sieve/class_sieveElement_Require.inc:73 +#, fuzzy +msgid "Please specify at least one valid requirement." +msgstr "Proszę podać conajmniej jeden wzorzec pliku." + +#: personal/mail/sieve/class_sieveElement_Reject.inc:21 +msgid "Invalid character found, quotes are not allowed in a reject message." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:37 +msgid "Your reject text here" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#, fuzzy +msgid "Complete address" +msgstr "Pełne poddrzewo" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#: personal/mail/sieve/class_sieveElement_If.inc:33 +#, fuzzy +msgid "Default" +msgstr "domyślny" + +#: personal/mail/sieve/class_sieveElement_If.inc:28 +#, fuzzy +msgid "Domain part" +msgstr "Użytkownicy domeny" + +#: personal/mail/sieve/class_sieveElement_If.inc:29 +msgid "Local part" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Case insensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:34 +msgid "Case sensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:35 +msgid "Numeric" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:39 +msgid "is" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:40 +#, fuzzy +msgid "regex" +msgstr "resetuj" + +#: personal/mail/sieve/class_sieveElement_If.inc:41 +#, fuzzy +msgid "contains" +msgstr "Akcje" + +#: personal/mail/sieve/class_sieveElement_If.inc:42 +#, fuzzy +msgid "matches" +msgstr "Cache" + +#: personal/mail/sieve/class_sieveElement_If.inc:43 +#, fuzzy +msgid "count" +msgstr "Konto" + +#: personal/mail/sieve/class_sieveElement_If.inc:44 +#, fuzzy +msgid "value is" +msgstr "prawidłowy" + +#: personal/mail/sieve/class_sieveElement_If.inc:48 +#, fuzzy +msgid "less than" +msgstr "Dźwięk 'mniej niż'" + +#: personal/mail/sieve/class_sieveElement_If.inc:49 +msgid "less or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:50 +#, fuzzy +msgid "equals" +msgstr "Szczegóły" + +#: personal/mail/sieve/class_sieveElement_If.inc:51 +msgid "greater or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:52 +#: personal/mail/sieve/class_sieveElement_If.inc:726 +#: personal/mail/sieve/class_sieveElement_If.inc:1059 +#, fuzzy +msgid "greater than" +msgstr "Utwórz opcje" + +#: personal/mail/sieve/class_sieveElement_If.inc:53 +#, fuzzy +msgid "not equal" +msgstr "brak przykładu" + +#: personal/mail/sieve/class_sieveElement_If.inc:102 +#, fuzzy +msgid "Can't save empty tests." +msgstr "Nie można zapisać pliku '%s'." + +#: personal/mail/sieve/class_sieveElement_If.inc:446 +#, fuzzy +msgid "emtpy" +msgstr "pusto" + +#: personal/mail/sieve/class_sieveElement_If.inc:447 +msgid "empty" +msgstr "pusto" + +#: personal/mail/sieve/class_sieveElement_If.inc:493 +msgid "Nothing specified right now" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:595 +msgid "Invalid type of address part." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:605 +msgid "Invalid match type given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:621 +msgid "Invalid operator given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:638 +#, fuzzy +msgid "Please specify a valid operator." +msgstr "Proszę podać prawidłowe id." + +#: personal/mail/sieve/class_sieveElement_If.inc:654 +msgid "" +"Invalid character found in address attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:669 +#, fuzzy +msgid "" +"Invalid character found in value attribute. Quotes are not allowed here." +msgstr "Nieprawidłowe znaki w nazwie aplikacji. Dozwolone są tylko a-z 0-9." + +#: personal/mail/sieve/class_sieveElement_If.inc:727 +#: personal/mail/sieve/class_sieveElement_If.inc:1060 +msgid "lower than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:729 +#: personal/mail/sieve/class_sieveElement_If.inc:1062 +msgid "Megabyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:730 +#: personal/mail/sieve/class_sieveElement_If.inc:1063 +msgid "Kilobyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:731 +#: personal/mail/sieve/class_sieveElement_If.inc:1064 +#, fuzzy +msgid "Bytes" +msgstr "tak" + +#: personal/mail/sieve/class_sieveElement_If.inc:745 +#, fuzzy +msgid "Please select a valid match type in the list box below." +msgstr "Proszę wybrać prawidłowy serwer pocztowy." + +#: personal/mail/sieve/class_sieveElement_If.inc:759 +#, fuzzy +msgid "Only numeric values are allowed here." +msgstr "Tylko cyfry są dozwolone w polu Numer." + +#: personal/mail/sieve/class_sieveElement_If.inc:769 +#, fuzzy +msgid "No valid unit selected" +msgstr "Nie załadowano prawidłowego certyfikatu" + +#: personal/mail/sieve/class_sieveElement_If.inc:876 +#, fuzzy +msgid "Empty" +msgstr "pusto" + +#: personal/mail/sieve/class_sieveElement_If.inc:1134 +#: personal/mail/sieve/class_sieveElement_If.inc:1164 +#, fuzzy +msgid "Click here to add a new test" +msgstr "Kliknij tutaj aby się zalogować" + +#: personal/mail/sieve/class_sieveElement_If.inc:1176 +msgid "Unhandled switch type" +msgstr "" + +#: personal/mail/sieve/class_My_Tree.inc:245 +#, fuzzy +msgid "Cannot remove last element!" +msgstr "Usuń pozycję" + +#: personal/mail/sieve/class_My_Tree.inc:658 +msgid "Require must be the first command in the script." +msgstr "" + +#: personal/mail/class_mailAccount.inc:51 +#: addons/mailqueue/class_mailqueue.inc:7 +msgid "This does something" +msgstr "To robi coś" + +#: personal/mail/class_mailAccount.inc:635 +#: personal/mail/class_mail-methods.inc:131 +#: personal/mail/class_mail-methods.inc:462 +#, fuzzy +msgid "Configuration error" +msgstr "Plik konfiguracyjny" + +#: personal/mail/class_mailAccount.inc:635 +#, fuzzy, php-format +msgid "No DESC tag in vacation template '%s'!" +msgstr "Brak znacznika DESC w pliku autorespondera" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "Permission error" +msgstr "Uprawnienia" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "You have no permission to modify these addresses!" +msgstr "Brak uprawnień do usunięcia tego departamentu." + +#: personal/mail/class_mailAccount.inc:755 +#: personal/mail/class_mailAccount.inc:758 +#, fuzzy +msgid "unknown" +msgstr "Nieznane" + +#: personal/mail/class_mailAccount.inc:1122 +#: personal/mail/class_mailAccount.inc:1130 +#: personal/mail/class_mailAccount.inc:1279 +#, fuzzy +msgid "Mail reject size" +msgstr "Max rozmiar poczty" + +#: personal/mail/class_mailAccount.inc:1134 +#: personal/mail/class_mailAccount.inc:1286 +#, fuzzy +msgid "Spam folder" +msgstr "do folferu" + +#: personal/mail/class_mailAccount.inc:1140 +#: personal/mail/class_mailAccount.inc:1291 +#, fuzzy +msgid "Vacation interval" +msgstr "Treść autorespondera" + +#: personal/mail/class_mailAccount.inc:1415 +msgid "My account" +msgstr "Moje konto " + +#: personal/mail/class_mailAccount.inc:1424 +msgid "Add vacation information" +msgstr "Dodaj informacje autorespondera" + +#: personal/mail/class_mailAccount.inc:1427 +msgid "Use spam filter" +msgstr "Użyj filtra spamu" + +#: personal/mail/class_mailAccount.inc:1428 +msgid "Spam level" +msgstr "Poziom spamu" + +#: personal/mail/class_mailAccount.inc:1429 +msgid "Spam mail box" +msgstr "Skrzynpa spamowa" + +#: personal/mail/class_mailAccount.inc:1431 +#, fuzzy +msgid "Sieve management" +msgstr "Zarządzanie" + +#: personal/mail/class_mailAccount.inc:1433 +msgid "Reject due to mailsize" +msgstr "Odrzuć z powodu rozmiaru wiadomości" + +#: personal/mail/class_mailAccount.inc:1436 +#: personal/mail/class_mailAccount.inc:1441 +msgid "Forwarding address" +msgstr "Adresy przekazywane" + +#: personal/mail/class_mailAccount.inc:1437 +msgid "Local delivery" +msgstr "Lokalne dostarczanie" + +#: personal/mail/class_mailAccount.inc:1438 +#, fuzzy +msgid "No delivery to own mailbox " +msgstr "Nie dostarczaj do własnej skrzynki" + +#: personal/mail/class_mailAccount.inc:1439 +msgid "Mail alternative addresses" +msgstr "Adresy alternatywne" + +#: personal/mail/main.inc:138 +msgid "User mail settings" +msgstr "Ustawienia poczty użytkownika" + +#: personal/mail/class_mail-methods.inc:132 +#, php-format +msgid "The configured mail attribute '%s' is unsupported!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:463 +#, php-format +msgid "Mail method '%s' is unknown!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:689 +#: personal/mail/class_mail-methods.inc:690 +#, fuzzy +msgid "None" +msgstr "żaden" + +#: personal/mail/class_mail-methods.inc:779 +msgid "Unknown" +msgstr "Nieznane" + +#: personal/mail/class_mail-methods.inc:781 +#, fuzzy +msgid "Unlimited" +msgstr "bez limitu" + +#: personal/mail/class_mail-methods-cyrus.inc:39 +msgid "There are no IMAP compatible mail servers defined!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:44 +#, fuzzy +msgid "Mail server for this account is invalid!" +msgstr "Brak ograniczeń co do wielkości poczty dla tego konta" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy +msgid "IMAP error" +msgstr "błąd LDAP:" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy, php-format +msgid "Cannot modify IMAP mailbox quota: %s" +msgstr "Nie można usunąć konta IMAP. Odpowiedź serwera '%s'." + +#: personal/mail/class_mail-methods-cyrus.inc:354 +#: personal/mail/class_mail-methods-cyrus.inc:391 +msgid "The module imap_getacl is not implemented!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:563 +#, php-format +msgid "Cannot activate SIEVE script: %s" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:6 +#: addons/mailqueue/class_mailqueue.inc:331 addons/mailqueue/main.inc:56 +msgid "Mail queue" +msgstr "Kolejka pocztowa" + +#: addons/mailqueue/class_mailqueue.inc:205 +msgid "up" +msgstr "góra" + +#: addons/mailqueue/class_mailqueue.inc:207 +msgid "down" +msgstr "dół" + +#: addons/mailqueue/class_mailqueue.inc:218 +#: addons/mailqueue/class_mailqueue.inc:318 +msgid "All" +msgstr "Wszystkie" + +#: addons/mailqueue/class_mailqueue.inc:262 +msgid "no limit" +msgstr "bez limitu" + +#: addons/mailqueue/class_mailqueue.inc:265 +msgid "hour" +msgstr "godzina" + +#: addons/mailqueue/class_mailqueue.inc:267 +msgid "hours" +msgstr "godzin" + +#: addons/mailqueue/class_mailqueue.inc:319 +msgid "Hold" +msgstr "Wstrzymaj" + +#: addons/mailqueue/class_mailqueue.inc:320 +msgid "Un hold" +msgstr "Wznów" + +#: addons/mailqueue/class_mailqueue.inc:322 +msgid "Not active" +msgstr "Nieaktywne" + +#: addons/mailqueue/class_mailqueue.inc:332 +#: addons/mailqueue/class_mailqueue.inc:337 +#, fuzzy +msgid "Mail queue addon" +msgstr "Kolejka pocztowa" + +#: addons/mailqueue/class_mailqueue.inc:340 +#, fuzzy +msgid "Unhold all messages" +msgstr "Wstrzymaj wszystkie wiadomości" + +#: addons/mailqueue/class_mailqueue.inc:341 addons/mailqueue/contents.tpl:38 +msgid "Hold all messages" +msgstr "Wstrzymaj wszystkie wiadomości" + +#: addons/mailqueue/class_mailqueue.inc:342 +#, fuzzy +msgid "Delete all messages" +msgstr "Wznów wszystkie wiadomości" + +#: addons/mailqueue/class_mailqueue.inc:343 addons/mailqueue/contents.tpl:48 +msgid "Requeue all messages" +msgstr "Przekolejkuj wszystkie wiadomości" + +#: addons/mailqueue/class_mailqueue.inc:344 +#, fuzzy +msgid "Unhold message" +msgstr "Wstrzymaj wiadomość" + +#: addons/mailqueue/class_mailqueue.inc:345 addons/mailqueue/contents.tpl:120 +msgid "Hold message" +msgstr "Wstrzymaj wiadomość" + +#: addons/mailqueue/class_mailqueue.inc:346 +#, fuzzy +msgid "Delete message" +msgstr "Usuń tą wiadomosc" + +#: addons/mailqueue/class_mailqueue.inc:347 +#, fuzzy +msgid "Requeue message" +msgstr "Rekolejkuj tą wiadomość" + +#: addons/mailqueue/class_mailqueue.inc:348 +msgid "Gathering queue data" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:349 +#, fuzzy +msgid "Get header information" +msgstr "Ogólne informacje o użytkowniku" + +#: addons/mailqueue/contents.tpl:10 addons/mailqueue/contents.tpl:28 +msgid "Search" +msgstr "Szukaj" + +#: addons/mailqueue/contents.tpl:11 +msgid "Search for" +msgstr "Szukaj dla" + +#: addons/mailqueue/contents.tpl:12 +msgid "Please enter a search string here." +msgstr "Proszę podać tutaj szukany ciąg znaków." + +#: addons/mailqueue/contents.tpl:14 +msgid "Select a server" +msgstr "Wybierz serwer" + +#: addons/mailqueue/contents.tpl:18 +msgid "with status" +msgstr "ze statusem" + +#: addons/mailqueue/contents.tpl:23 +msgid "within the last" +msgstr "W ciągu ostatnich" + +#: addons/mailqueue/contents.tpl:33 +msgid "Remove all messages" +msgstr "Usuń wszystkie wiadomości" + +#: addons/mailqueue/contents.tpl:34 +msgid "Remove all messages from selected servers queue" +msgstr "Usuń wszystkie wiadomości z wybranej kolejki serwerów" + +#: addons/mailqueue/contents.tpl:39 +msgid "Hold all messages in selected servers queue" +msgstr "Wstrzymaj wszystkie wiadomości w wybranej kolejce serwerów" + +#: addons/mailqueue/contents.tpl:43 +msgid "Release all messages" +msgstr "Wznów wszystkie wiadomości" + +#: addons/mailqueue/contents.tpl:44 +msgid "Release all messages in selected servers queue" +msgstr "Wznów wszystkie wiadomości w wybranej kolejce serwerów" + +#: addons/mailqueue/contents.tpl:49 +msgid "Requeue all messages in selected servers queue" +msgstr "Przekolejkuj wszystkie wiadomości w wybranej kolejce serwera" + +#: addons/mailqueue/contents.tpl:63 +msgid "Search returned no results" +msgstr "Wyszukiwanie nie zwróciło danych" + +#: addons/mailqueue/contents.tpl:72 +msgid "ID" +msgstr "ID" + +#: addons/mailqueue/contents.tpl:75 +msgid "Arrival" +msgstr "Dotarcie" + +#: addons/mailqueue/contents.tpl:76 +msgid "Sender" +msgstr "Nadawca" + +#: addons/mailqueue/contents.tpl:77 +msgid "Recipient" +msgstr "Odbiorca" + +#: addons/mailqueue/contents.tpl:78 +msgid "Status" +msgstr "Status" + +#: addons/mailqueue/contents.tpl:105 +msgid "delete" +msgstr "Usuń" + +#: addons/mailqueue/contents.tpl:105 +msgid "Delete this message" +msgstr "Usuń tą wiadomosc" + +#: addons/mailqueue/contents.tpl:113 +msgid "unhold" +msgstr "wznów" + +#: addons/mailqueue/contents.tpl:113 +msgid "Release message" +msgstr "Wznów wiadomość" + +#: addons/mailqueue/contents.tpl:120 +msgid "hold" +msgstr "wstrzymaj" + +#: addons/mailqueue/contents.tpl:127 +msgid "requeue" +msgstr "rekolejkuj" + +#: addons/mailqueue/contents.tpl:127 +msgid "Requeue this message" +msgstr "Rekolejkuj tą wiadomość" + +#: addons/mailqueue/contents.tpl:133 +msgid "header" +msgstr "nagłówek" + +#: addons/mailqueue/contents.tpl:134 +#, fuzzy +msgid "Display header of this message" +msgstr "Wyświetl nagłówek tej wiadomości" + +#, fuzzy +#~ msgid "Cannot connect mail method: %s" +#~ msgstr "Nie można otworzyć pliku '%s'." + +#, fuzzy +#~ msgid "Cannot remove mailbox: %s." +#~ msgstr "Nie można usunąć konta IMAP. Odpowiedź serwera '%s'." + +#, fuzzy +#~ msgid "Cannot update mailbox: %s." +#~ msgstr "Nie można utworzyć konta IMAP. Odpowiedź serwera '%s'." + +#, fuzzy +#~ msgid "Cannot write quota settings: %s." +#~ msgstr "Nie można stworzyć pliku '%s'." + +#, fuzzy +#~ msgid "Cannot get list of mailboxes! Error was: %s." +#~ msgstr "Nie można usunąć konta IMAP. Odpowiedź serwera '%s'." + +#, fuzzy +#~ msgid "Cannot connect mail method! Error was: %s." +#~ msgstr "Nie można otworzyć pliku '%s'." + +#, fuzzy +#~ msgid "Cannot remove mailbox! Error was: %s." +#~ msgstr "Nie można usunąć konta IMAP. Odpowiedź serwera '%s'." + +#, fuzzy +#~ msgid "Cannot update mailbox! Error was: %s." +#~ msgstr "Nie można utworzyć konta IMAP. Odpowiedź serwera '%s'." + +#, fuzzy +#~ msgid "Specify the mail server where the user will be hosted on" +#~ msgstr "" +#~ "Wybierz serwer poczty który będzie przechowywał skrzynkę użytkownika" + +#~ msgid "Select mail server to place user on" +#~ msgstr "Wybierz serwer pocztowy dla użytkownika" + +#~ msgid "not defined" +#~ msgstr "nie zdefiniowane" + +#~ msgid "read" +#~ msgstr "czytanie" + +#~ msgid "post" +#~ msgstr "wysyłanie" + +#~ msgid "external post" +#~ msgstr "wysyłanie zewnętrzne" + +#~ msgid "append" +#~ msgstr "dołączanie" + +#~ msgid "write" +#~ msgstr "zapisywanie" + +#, fuzzy +#~ msgid "admin" +#~ msgstr "Admin" + +#, fuzzy +#~ msgid "mail" +#~ msgstr "Poczta" + +#, fuzzy +#~ msgid "forward address" +#~ msgstr "Adresy przekazywane" + +#, fuzzy +#~ msgid "Cannot forward to users own mail address!" +#~ msgstr "Próbujesz dodać nieprawidłowy adres email" + +#, fuzzy +#~ msgid "Alternate address" +#~ msgstr "Adresy alternatywne" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#, fuzzy +#~ msgid "Unspecified" +#~ msgstr "niezdefiniowany" + +#, fuzzy +#~ msgid "Mails" +#~ msgstr "Poczta" + +#, fuzzy +#~ msgid "Tasks" +#~ msgstr "Zadanie" + +#, fuzzy +#~ msgid "Journals" +#~ msgstr "godzin" + +#~ msgid "Contacts" +#~ msgstr "Kontakty" + +#, fuzzy +#~ msgid "Notes" +#~ msgstr "Nie" + +#, fuzzy +#~ msgid "Inbox" +#~ msgstr "Indeks" + +#, fuzzy +#~ msgid "Drafts" +#~ msgstr "Data" + +#, fuzzy +#~ msgid "Sent items" +#~ msgstr "Ustaw status" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "Grupa poczta" + +#~ msgid "" +#~ "Please choose valid permission settings. Default permission can't be " +#~ "emtpy." +#~ msgstr "" +#~ "Proszę wybrać prawidłowe ustawienia. Domyślne ustawienia nie mogą być " +#~ "puste." + +#~ msgid "Mail options" +#~ msgstr "Opcje poczty" + +#, fuzzy +#~ msgid "Waiting for kolab to remove mail properties..." +#~ msgstr "Oczekiwanie aż kolab usunie właściwości poczty." + +#, fuzzy +#~ msgid "" +#~ "Please remove the mail settings first to allow kolab to call its remove " +#~ "methods!" +#~ msgstr "" +#~ "Proszę najpierw usunąć konto pocztowe, aby umożliwić kolab usuwanie " +#~ "swoimi metodami." + +#, fuzzy +#~ msgid "You have no permission to submit a '%s' command!" +#~ msgstr "Brak uprawnień do wysyłania wiadomości!" + +#, fuzzy +#~ msgid "No mail servers specified!" +#~ msgstr "Nie zdefiniowano serwerów logowania!" + +#~ msgid "Sieve port" +#~ msgstr "Port Sieve" + +#~ msgid "There is no mail method '%s' specified in your gosa.conf available." +#~ msgstr "Nie ma takiego trybu poczty '%s' podanego w Twoim pliku gosa.conf." + +#~ msgid "" +#~ "Adding your one of your own addresses to the forwarders makes no sense." +#~ msgstr "Dodawanie swojego własnego adresu do przekierowanych nie ma sensu." + +#, fuzzy +#~ msgid "alternate address" +#~ msgstr "Adresy alternatywne" + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#, fuzzy +#~ msgid "You are going to remove the sieve script '%s' from your mail server." +#~ msgstr "" +#~ "Brak uprawnień do usunięcia obiektu '%s' z listy członków drukarki '%s'." + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "This 'dn' has no valid mail extensions." +#~ msgstr "Podany 'dn' nie posiada prawidłowych rozszerzeń Pocztowych." + +#~ msgid "" +#~ "This account has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "To konto posiada rozszerzenia poczty. Można je wyłączyć klikając poniżej." + +#~ msgid "" +#~ "This account has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "To konto nie posiada rozszerzenia poczty. Można je włączyć klikając " +#~ "poniżej." + +#, fuzzy +#~ msgid "You're trying to add an invalid email address " +#~ msgstr "Próbujesz dodać błędny adres email do listy przekazywanych." + +#~ msgid "" +#~ "You're trying to add an invalid email address to the list of alternate " +#~ "addresses." +#~ msgstr "" +#~ "Próbujesz dodać nieprawidłowy adres email do listy adresów alternatywnych." + +#~ msgid "The address you're trying to add is already used by user" +#~ msgstr "Adres który próbujesz dodać jest już używany" + +#~ msgid "The required field 'Primary address' is not set." +#~ msgstr "Wymaganie pole 'Podstawowy adres' jest puste." + +#~ msgid "Please enter a valid email addres in 'Primary address' field." +#~ msgstr "Proszę podać prawidłowy adres email w polu 'Podstawowy adres'." + +#~ msgid "The primary address you've entered is already in use." +#~ msgstr "Podstawowy adres który podano jest już w użyciu." + +#~ msgid "Value in 'Quota size' is not valid." +#~ msgstr "Wartość 'Rozmiar Quota' jest nieprawidłowa" + +#~ msgid "Please specify a vaild mail size for mails to be rejected." +#~ msgstr "Proszę podać prawidłowy rozmiar poczty która ma być odrzucana." + +#~ msgid "Please specify a numeric value for header size limit." +#~ msgstr "Proszę podać liczbę jako wartość limitu nagłówków wiadomości." + +#~ msgid "Please specify a numeric value for mailbox size limit." +#~ msgstr "Proszę podać liczbę jako wartość limitu skrzynki pocztowej." + +#~ msgid "Please specify a numeric value for message size limit." +#~ msgstr "Proszę podać liczbę jako wartość limitu rozmiaru wiadomosci." + +#, fuzzy +#~ msgid "Required score must be a numeric value." +#~ msgstr "Przyszłe dni muszą być liczbą." + +#~ msgid "Please specify a server identifier." +#~ msgstr "Proszę podać identyfikator serwera." + +#~ msgid "Please specify a connect url." +#~ msgstr "Proszę podać URL połączenia." + +#~ msgid "Please specify an admin user." +#~ msgstr "Proszę podać nazwę administatora" + +#~ msgid "Please specify a password for the admin user." +#~ msgstr "Proszę podać hasło użytkownika administracyjnego." + +#~ msgid "The imap connect string needs to be in the form '%s'." +#~ msgstr "Parametr URI połączenia imap musi byc w formacie '%s'." + +#~ msgid "The sieve port needs to be numeric." +#~ msgstr "Port sieve musi być liczbą." + +#, fuzzy +#~ msgid "The specified value for '%s' must be a numeric value." +#~ msgstr "Port sieve musi być liczbą." + +#, fuzzy +#~ msgid "Please specify a valid value for '%s'." +#~ msgstr "Proszę podać prawidłową wartość dla 'url'." + +#~ msgid "" +#~ "This group has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Ta grupa posiada rozszerzenia poczty. Można je wyłączyć klikając poniżej." + +#~ msgid "" +#~ "This group has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "Ta grupa nie posiada rozszerzenia poczty. Można je włączyć klikając " +#~ "poniżej." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "Proszę podać prawidłowy adres email w polu 'Podstawowy adres'" + +#~ msgid "Back" +#~ msgstr "Wróć" + +#, fuzzy +#~ msgid "Mailqueue" +#~ msgstr "Kolejka pocztowa" + +#, fuzzy +#~ msgid "Mailqueue addon" +#~ msgstr "Kolejka pocztowa" + +#~ msgid "This account has no mail extensions." +#~ msgstr "To konto nie posiada rozszerzeń pocztowych" + +#~ msgid "January" +#~ msgstr "Styczeń" + +#~ msgid "February" +#~ msgstr "Luty" + +#~ msgid "March" +#~ msgstr "Marzec" + +#~ msgid "April" +#~ msgstr "Kwiecień" + +#~ msgid "May" +#~ msgstr "Maj" + +#~ msgid "June" +#~ msgstr "Czerwiec" + +#~ msgid "July" +#~ msgstr "Lipiec" + +#~ msgid "August" +#~ msgstr "Sierpień" + +#~ msgid "September" +#~ msgstr "Wrzesień" + +#~ msgid "October" +#~ msgstr "Październik" + +#~ msgid "November" +#~ msgstr "Listopad" + +#~ msgid "December" +#~ msgstr "Grudzień" + +#, fuzzy +#~ msgid "Removing of user/mail account with dn '%s' failed." +#~ msgstr "Usuwanie konta pocztowego nieudane" + +#, fuzzy +#~ msgid "Saving of user/mail account with dn '%s' failed." +#~ msgstr "Zapisywanie konta pocztowego nieudane" + +#~ msgid "" +#~ "There is no valid mailserver specified, please add one in the system " +#~ "setup." +#~ msgstr "" +#~ "Brak poprawnego serwera pocztowego, proszę go dodać w ustawieniach " +#~ "systemu." + +#~ msgid "You specified Spam settings, but there is no Folder specified." +#~ msgstr "Podano parametry Spamu, ale nie wybrano folderu." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Kliknij przycisk 'Edytuj' poniżej, aby zmienić informacje w tym oknie" + +#~ msgid "Saving of object group/mail with dn '%s' failed." +#~ msgstr "Zapisywanie grupy/poczty z dn '%s' nieudane." + +#~ msgid "Removing of object group/mail with dn '%s' failed." +#~ msgstr "Usuwanie grupy/poczty z dn '%s' nieudane." + +#, fuzzy +#~ msgid "Saving of server services/anti virus with dn '%s' failed." +#~ msgstr "Zapisywanie usługi serwera nieudane" + +#, fuzzy +#~ msgid "Saving of server services/spamassassin with dn '%s' failed." +#~ msgstr "Zapisywanie usługi serwera nieudane" + +#, fuzzy +#~ msgid "Saving server services/mail with dn '%s' failed." +#~ msgstr "Zapisywanie usługi serwera nieudane" + +#, fuzzy +#~ msgid "Removing of groups/mail with dn '%s' failed." +#~ msgstr "Usuwanie ustawień poczty grupy nieudane" + +#, fuzzy +#~ msgid "Saving of groups/mail with dn '%s' failed." +#~ msgstr "Zapisywanie ustawień poczty grupy nieudane" diff --git a/trunk/gosa-plugins/mail/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mail/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..290ef9f6e --- /dev/null +++ b/trunk/gosa-plugins/mail/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,2759 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 09:00+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/ogroups/mail/mail.tpl:7 +msgid "Mail distribution list" +msgstr "" + +#: admin/ogroups/mail/mail.tpl:10 admin/groups/mail/mail.tpl:7 +#: admin/groups/mail/paste_mail.tpl:8 +#: admin/groups/mail/class_groupMail.inc:838 personal/mail/copypaste.tpl:7 +#: personal/mail/generic.tpl:9 personal/mail/class_mailAccount.inc:1086 +msgid "Primary address" +msgstr "Основной адрес" + +#: admin/ogroups/mail/mail.tpl:13 +#, fuzzy +msgid "Primary mail address for this distribution list" +msgstr "Основной адрес эл. почты для этой общей папки" + +#: admin/ogroups/mail/class_mailogroup.inc:50 +msgid "Remove mail account" +msgstr "Удалить настройки эл. почты" + +#: admin/ogroups/mail/class_mailogroup.inc:51 +#: admin/ogroups/mail/class_mailogroup.inc:54 +#, fuzzy +msgid "mail group" +msgstr "Основная группа" + +#: admin/ogroups/mail/class_mailogroup.inc:53 +msgid "Create mail account" +msgstr "Создать настройки запись эл. почты" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +#: admin/ogroups/mail/class_mailogroup.inc:93 +#: admin/ogroups/mail/class_mailogroup.inc:194 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: admin/groups/mail/class_groupMail.inc:840 +#: admin/groups/mail/class_groupMail.inc:971 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: personal/mail/class_mailAccount.inc:1090 +#: personal/mail/class_mailAccount.inc:1094 +#: personal/mail/class_mailAccount.inc:1105 +#: personal/mail/class_mailAccount.inc:1420 +#, fuzzy +msgid "Mail address" +msgstr "MAC-адрес" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +msgid "your-name@your-domain.com" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:120 +#: admin/ogroups/mail/class_mailogroup.inc:157 +#: admin/systems/services/imap/class_goImapServer.inc:190 +#: admin/systems/services/spam/class_goSpamServer.inc:277 +#: admin/systems/services/virus/class_goVirusServer.inc:154 +#: admin/systems/services/mail/class_goMailServer.inc:582 +#: admin/groups/mail/class_groupMail.inc:531 +#: admin/groups/mail/class_groupMail.inc:760 +#: personal/mail/class_mailAccount.inc:915 +#: personal/mail/class_mailAccount.inc:982 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/ogroups/mail/class_mailogroup.inc:186 +#: admin/ogroups/mail/paste_mail.tpl:4 +#: admin/groups/mail/class_groupMail.inc:276 +#: admin/groups/mail/class_groupMail.inc:278 +#: admin/groups/mail/class_groupMail.inc:279 +#: admin/groups/mail/class_groupMail.inc:284 +#: admin/groups/mail/class_groupMail.inc:286 +#: admin/groups/mail/class_groupMail.inc:287 +#: admin/groups/mail/class_groupMail.inc:828 +#: admin/groups/mail/class_groupMail.inc:963 +#: personal/mail/class_mailAccount.inc:50 +#: personal/mail/class_mailAccount.inc:239 +#: personal/mail/class_mailAccount.inc:247 +#: personal/mail/class_mailAccount.inc:249 +#: personal/mail/class_mailAccount.inc:254 +#: personal/mail/class_mailAccount.inc:256 +#: personal/mail/class_mailAccount.inc:1074 +#: personal/mail/class_mailAccount.inc:1264 +#: personal/mail/class_mailAccount.inc:1410 +msgid "Mail" +msgstr "Почта" + +#: admin/ogroups/mail/class_mailogroup.inc:187 +#, fuzzy +msgid "Mail group" +msgstr "Основная группа" + +#: admin/ogroups/mail/paste_mail.tpl:7 +#, fuzzy +msgid "Please enter a mail address" +msgstr "Введите корректный серийный номер" + +#: admin/systems/services/imap/class_goImapServer.inc:48 +#, fuzzy +msgid "IMAP/POP3 service" +msgstr "LDAP-сервер" + +#: admin/systems/services/imap/class_goImapServer.inc:53 +#: admin/systems/services/imap/class_goImapServer.inc:212 +#, fuzzy +msgid "Repair database" +msgstr "Базы данных" + +#: admin/systems/services/imap/class_goImapServer.inc:100 +#, fuzzy +msgid "IMAP/POP3 (Cyrus) service" +msgstr "LDAP-сервер" + +#: admin/systems/services/imap/class_goImapServer.inc:110 +#: admin/systems/services/imap/class_goImapServer.inc:214 +#: admin/systems/services/imap/goImapServer.tpl:7 +#, fuzzy +msgid "Server identifier" +msgstr "Номер дома" + +#: admin/systems/services/imap/class_goImapServer.inc:114 +#: admin/systems/services/imap/class_goImapServer.inc:116 +#: admin/systems/services/imap/class_goImapServer.inc:215 +#: admin/systems/services/imap/goImapServer.tpl:16 +#, fuzzy +msgid "Connect URL" +msgstr "Подключение" + +#: admin/systems/services/imap/class_goImapServer.inc:120 +#: admin/systems/services/imap/class_goImapServer.inc:122 +#: admin/systems/services/imap/class_goImapServer.inc:219 +#: admin/systems/services/imap/goImapServer.tpl:43 +#, fuzzy +msgid "Sieve connect URL" +msgstr "Подключение" + +#: admin/systems/services/imap/class_goImapServer.inc:123 +#, fuzzy, php-format +msgid "Valid options are: %s" +msgstr "Почтовые настройки" + +#: admin/systems/services/imap/class_goImapServer.inc:127 +#: admin/systems/services/imap/class_goImapServer.inc:216 +#: admin/systems/services/imap/goImapServer.tpl:25 +#, fuzzy +msgid "Admin user" +msgstr "Пользователи домена" + +#: admin/systems/services/imap/class_goImapServer.inc:130 +#: admin/systems/services/imap/goImapServer.tpl:34 +msgid "Password" +msgstr "Пароль" + +#: admin/systems/services/imap/class_goImapServer.inc:199 +#: admin/systems/services/imap/class_goImapServer.inc:200 +#, fuzzy +msgid "IMAP/POP3" +msgstr "LDAP-сервер" + +#: admin/systems/services/imap/class_goImapServer.inc:200 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/imap/class_goImapServer.inc:209 +#: admin/systems/services/virus/class_goVirusServer.inc:228 +#, fuzzy +msgid "Start" +msgstr "Запуск" + +#: admin/systems/services/imap/class_goImapServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:229 +#: personal/mail/sieve/class_sieveManagement.inc:501 +#: personal/mail/sieve/class_sieveManagement.inc:719 +#: personal/mail/sieve/templates/object_container.tpl:30 +#: personal/mail/sieve/templates/element_stop.tpl:4 +msgid "Stop" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:211 +#: admin/systems/services/virus/class_goVirusServer.inc:230 +#, fuzzy +msgid "Restart" +msgstr "Повторить" + +#: admin/systems/services/imap/class_goImapServer.inc:217 +msgid "Admin password" +msgstr "Пароль администратора" + +#: admin/systems/services/imap/class_goImapServer.inc:220 +#: admin/systems/services/imap/goImapServer.tpl:61 +#, fuzzy +msgid "Start IMAP service" +msgstr "LDAP-сервер" + +#: admin/systems/services/imap/class_goImapServer.inc:221 +#: admin/systems/services/imap/goImapServer.tpl:70 +#, fuzzy +msgid "Start IMAP SSL service" +msgstr "Служба SSH" + +#: admin/systems/services/imap/class_goImapServer.inc:222 +#: admin/systems/services/imap/goImapServer.tpl:79 +#, fuzzy +msgid "Start POP3 service" +msgstr "Служба печати" + +#: admin/systems/services/imap/class_goImapServer.inc:223 +#: admin/systems/services/imap/goImapServer.tpl:88 +#, fuzzy +msgid "Start POP3 SSL service" +msgstr "Служба SSH" + +#: admin/systems/services/imap/goImapServer.tpl:1 +#: admin/systems/services/mail/goMailServer.tpl:1 admin/groups/mail/mail.tpl:4 +#: personal/mail/generic.tpl:5 +msgid "Generic" +msgstr "Общее" + +#: admin/systems/services/imap/goImapServer.tpl:99 +#: admin/systems/services/mail/goMailServer.tpl:204 +msgid "The server must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:101 +#: admin/systems/services/mail/goMailServer.tpl:206 +msgid "The service must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:104 +#: admin/systems/services/mail/goMailServer.tpl:209 +#, fuzzy +msgid "Set new status" +msgstr "Состояние системы" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +#, fuzzy +msgid "Set status" +msgstr "Состояние системы" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Execute" +msgstr "Выполнить" + +#: admin/systems/services/spam/goSpamServerRule.tpl:6 +msgid "Name" +msgstr "Фамилия" + +#: admin/systems/services/spam/goSpamServerRule.tpl:14 +#, fuzzy +msgid "Rule" +msgstr "Роль" + +#: admin/systems/services/spam/class_goSpamServer.inc:42 +#: admin/systems/services/spam/class_goSpamServer.inc:320 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/spam/class_goSpamServer.inc:347 +msgid "Spamassassin" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:143 +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#: admin/groups/mail/class_groupMail.inc:341 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:360 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: personal/mail/sieve/class_sieveManagement.inc:201 +#: personal/mail/sieve/class_sieveManagement.inc:206 +#: personal/mail/sieve/class_sieveManagement.inc:212 +#: personal/mail/sieve/class_sieveManagement.inc:218 +#: personal/mail/sieve/class_sieveManagement.inc:429 +#: personal/mail/sieve/class_My_Tree.inc:660 +#: personal/mail/class_mailAccount.inc:311 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:329 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: addons/mailqueue/class_mailqueue.inc:110 +#: addons/mailqueue/class_mailqueue.inc:144 +#: addons/mailqueue/class_mailqueue.inc:150 +msgid "Error" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#, fuzzy +msgid "Trusted network" +msgstr "Атрибуты UNIX" + +#: admin/systems/services/spam/class_goSpamServer.inc:287 +msgid "Score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:329 +#: admin/systems/services/spam/goSpamServer.tpl:8 +#, fuzzy +msgid "Rewrite header" +msgstr "Отправитель" + +#: admin/systems/services/spam/class_goSpamServer.inc:330 +#, fuzzy +msgid "Trusted networks" +msgstr "Атрибуты UNIX" + +#: admin/systems/services/spam/class_goSpamServer.inc:331 +#: admin/systems/services/spam/goSpamServer.tpl:18 +msgid "Required score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:332 +#, fuzzy +msgid "Rules" +msgstr "Роль" + +#: admin/systems/services/spam/class_goSpamServer.inc:334 +#: admin/systems/services/spam/goSpamServer.tpl:69 +msgid "Enable use of bayes filtering" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:335 +msgid "Enabled bayes auto learning" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:336 +#: admin/systems/services/spam/goSpamServer.tpl:75 +msgid "Enable RBL checks" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:337 +#: admin/systems/services/spam/goSpamServer.tpl:86 +msgid "Enable use of Razor" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:338 +#: admin/systems/services/spam/goSpamServer.tpl:89 +msgid "Enable use of DDC" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:339 +#: admin/systems/services/spam/goSpamServer.tpl:92 +msgid "Enable use of Pyzor" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:22 +msgid "Select required score to tag mail as spam" +msgstr "" + +#: admin/systems/services/spam/goSpamServer.tpl:48 +#: admin/systems/services/mail/goMailServer.tpl:73 +#: admin/systems/services/mail/goMailServer.tpl:104 +msgid "Remove" +msgstr "Удалить" + +#: admin/systems/services/spam/goSpamServer.tpl:72 +msgid "Enable bayes auto learning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:45 +#: admin/systems/services/virus/class_goVirusServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:219 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +msgid "Anti virus" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:163 +#: admin/systems/services/virus/class_goVirusServer.inc:238 +msgid "Maximum directory recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:164 +#: admin/systems/services/virus/class_goVirusServer.inc:237 +#: admin/systems/services/virus/goVirusServer.tpl:43 +msgid "Maximum threads" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:165 +#: admin/systems/services/virus/class_goVirusServer.inc:240 +#: admin/systems/services/virus/goVirusServer.tpl:134 +#, fuzzy +msgid "Maximum file size" +msgstr "Размер квоты" + +#: admin/systems/services/virus/class_goVirusServer.inc:166 +#: admin/systems/services/virus/class_goVirusServer.inc:241 +msgid "Maximum recursions" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:167 +#: admin/systems/services/virus/class_goVirusServer.inc:242 +#: admin/systems/services/virus/goVirusServer.tpl:152 +msgid "Maximum compression ratio" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:168 +#: admin/systems/services/virus/class_goVirusServer.inc:244 +#: admin/systems/services/virus/goVirusServer.tpl:71 +#, fuzzy +msgid "Checks per day" +msgstr "Изменить параметры" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/goVirusServer.tpl:13 +#, fuzzy +msgid "Database user" +msgstr "Базы данных" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:245 +#: admin/systems/services/virus/goVirusServer.tpl:33 +msgid "Http proxy URL" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:243 +#: admin/systems/services/virus/goVirusServer.tpl:23 +#, fuzzy +msgid "Database mirror" +msgstr "Базы данных" + +#: admin/systems/services/virus/class_goVirusServer.inc:232 +#: admin/systems/services/virus/goVirusServer.tpl:84 +msgid "Enable debugging" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:233 +#: admin/systems/services/virus/goVirusServer.tpl:92 +msgid "Enable mail scanning" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:234 +#: admin/systems/services/virus/goVirusServer.tpl:117 +msgid "Enable scanning of archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:235 +#: admin/systems/services/virus/goVirusServer.tpl:125 +msgid "Block encrypted archives" +msgstr "" + +#: admin/systems/services/virus/class_goVirusServer.inc:239 +#, fuzzy +msgid "Anti virus user" +msgstr "Добавить сервис DNS" + +#: admin/systems/services/virus/goVirusServer.tpl:5 +#, fuzzy +msgid "Generic virus filtering" +msgstr "Общая информация о пользователе" + +#: admin/systems/services/virus/goVirusServer.tpl:47 +#, fuzzy +msgid "Select number of maximal threads" +msgstr "Выбрать номера для добавления" + +#: admin/systems/services/virus/goVirusServer.tpl:61 +msgid "Max directory recursions" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:101 +msgid "Archive scanning" +msgstr "" + +#: admin/systems/services/virus/goVirusServer.tpl:143 +msgid "Maximum recursion" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:45 +#: admin/systems/services/mail/class_goMailServer.inc:512 +#, fuzzy +msgid "Mail smtp service (Postfix)" +msgstr "Сервер" + +#: admin/systems/services/mail/class_goMailServer.inc:600 +#: admin/systems/services/mail/class_goMailServer.inc:711 +msgid "Header size limit" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:603 +#, fuzzy +msgid "Mailbox size limit" +msgstr "Размер квоты" + +#: admin/systems/services/mail/class_goMailServer.inc:606 +#, fuzzy +msgid "Message size limit" +msgstr "Сообщение" + +#: admin/systems/services/mail/class_goMailServer.inc:700 +msgid "Mail smtp (Postfix)" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Mail smtp - Postfix" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:709 +#: admin/systems/services/mail/goMailServer.tpl:7 +msgid "Visible full qualified hostname" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:710 +msgid "Description" +msgstr "Описание" + +#: admin/systems/services/mail/class_goMailServer.inc:712 +#: admin/systems/services/mail/goMailServer.tpl:26 +#, fuzzy +msgid "Max mailbox size" +msgstr "Размер квоты" + +#: admin/systems/services/mail/class_goMailServer.inc:713 +#: admin/systems/services/mail/goMailServer.tpl:35 +#, fuzzy +msgid "Max message size" +msgstr "Сообщение" + +#: admin/systems/services/mail/class_goMailServer.inc:714 +#: admin/systems/services/mail/goMailServer.tpl:91 +msgid "Domains to accept mail for" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:715 +#: admin/systems/services/mail/goMailServer.tpl:60 +msgid "Local networks" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:716 +#: admin/systems/services/mail/goMailServer.tpl:45 +#, fuzzy +msgid "Relay host" +msgstr "Набор правил" + +#: admin/systems/services/mail/class_goMailServer.inc:717 +#, fuzzy +msgid "Transport table" +msgstr "Время передачи" + +#: admin/systems/services/mail/class_goMailServer.inc:718 +#: admin/systems/services/mail/goMailServer.tpl:149 +#, fuzzy +msgid "Restrictions for sender" +msgstr "Местоположение ветки" + +#: admin/systems/services/mail/class_goMailServer.inc:719 +#: admin/systems/services/mail/goMailServer.tpl:175 +msgid "Restrictions for recipient" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:11 +msgid "The full qualified host name." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:16 +#, fuzzy +msgid "Max mail header size" +msgstr "Размер квоты" + +#: admin/systems/services/mail/goMailServer.tpl:21 +#, fuzzy +msgid "This value specifies the maximal header size." +msgstr "Группа с таким именем уже существует." + +#: admin/systems/services/mail/goMailServer.tpl:21 +#: admin/systems/services/mail/goMailServer.tpl:31 +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "KB" +msgstr "Kb" + +#: admin/systems/services/mail/goMailServer.tpl:31 +msgid "Defines the maximal size of mail box." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "Specify the maximal size of a message." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:50 +msgid "Relay messages to following host:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:62 +#, fuzzy +msgid "Postfix networks" +msgstr "Атрибуты UNIX" + +#: admin/systems/services/mail/goMailServer.tpl:83 +#, fuzzy +msgid "Domains and routing" +msgstr "Администраторы домена" + +#: admin/systems/services/mail/goMailServer.tpl:93 +msgid "Postfix is responsible for the following domains:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:114 +#, fuzzy +msgid "Transports" +msgstr "Время передачи" + +#: admin/systems/services/mail/goMailServer.tpl:123 +msgid "Select a transport protocol." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:141 +#, fuzzy +msgid "Restrictions" +msgstr "Действие" + +#: admin/systems/services/mail/goMailServer.tpl:157 +#: admin/systems/services/mail/goMailServer.tpl:183 +#, fuzzy +msgid "Restriction filter" +msgstr "Поиск" + +#: admin/groups/mail/mail.tpl:35 personal/mail/generic.tpl:30 +#: addons/mailqueue/contents.tpl:73 +msgid "Server" +msgstr "Сервер" + +#: admin/groups/mail/mail.tpl:42 personal/mail/generic.tpl:37 +msgid "Specify the mail server where the user will be hosted on" +msgstr "Выберите почтовый сервер для учетной записи пользователя" + +#: admin/groups/mail/mail.tpl:56 personal/mail/generic.tpl:53 +msgid "Quota usage" +msgstr "Использование квоты" + +#: admin/groups/mail/mail.tpl:60 admin/groups/mail/class_groupMail.inc:847 +#: admin/groups/mail/class_groupMail.inc:972 personal/mail/generic.tpl:57 +#: personal/mail/class_mailAccount.inc:1113 +#: personal/mail/class_mailAccount.inc:1270 +#: personal/mail/class_mailAccount.inc:1422 +msgid "Quota size" +msgstr "Размер квоты" + +#: admin/groups/mail/mail.tpl:73 admin/groups/mail/class_groupMail.inc:974 +#, fuzzy +msgid "Folder type" +msgstr "Фильтр" + +#: admin/groups/mail/mail.tpl:91 +#, fuzzy +msgid "Reload" +msgstr "чтение" + +#: admin/groups/mail/mail.tpl:102 admin/groups/mail/paste_mail.tpl:23 +#: personal/mail/copypaste.tpl:25 personal/mail/generic.tpl:73 +#, fuzzy +msgid "Alternative addresses" +msgstr "Альтернативные адреса" + +#: admin/groups/mail/mail.tpl:107 admin/groups/mail/paste_mail.tpl:24 +#: personal/mail/copypaste.tpl:55 personal/mail/generic.tpl:76 +msgid "List of alternative mail addresses" +msgstr "Список альтернативных адресов эл. почты" + +#: admin/groups/mail/mail.tpl:136 +msgid "IMAP shared folders" +msgstr "Общие папки IMAP" + +#: admin/groups/mail/mail.tpl:143 +msgid "Default permission" +msgstr "Права по умолчанию" + +#: admin/groups/mail/mail.tpl:145 +msgid "Member permission" +msgstr "Права для членов группы" + +#: admin/groups/mail/mail.tpl:163 +#, fuzzy +msgid "Hide" +msgstr "Отправитель" + +#: admin/groups/mail/mail.tpl:165 +#, fuzzy +msgid "Show" +msgstr "Показать группы" + +#: admin/groups/mail/mail.tpl:187 personal/mail/generic.tpl:303 +msgid "Advanced mail options" +msgstr "Дополнительные почтовые настройки" + +#: admin/groups/mail/mail.tpl:193 personal/mail/generic.tpl:309 +msgid "Select if user can only send and receive inside his own domain" +msgstr "" +"Выберите, может ли пользователь отправлять и получать сообщения только " +"внутри своего домена" + +#: admin/groups/mail/mail.tpl:195 personal/mail/generic.tpl:311 +msgid "User is only allowed to send and receive local mails" +msgstr "Пользователь может отправлять и получать почту только локально" + +#: admin/groups/mail/mail.tpl:204 admin/groups/mail/paste_mail.tpl:34 +msgid "Forward messages to non group members" +msgstr "Пересылать сообщения не членам группы" + +#: admin/groups/mail/mail.tpl:213 +#, fuzzy +msgid "Used in all groups" +msgstr "Введите адрес сервера" + +#: admin/groups/mail/mail.tpl:216 +#, fuzzy +msgid "Not used in all groups" +msgstr "Показать обычные группы" + +#: admin/groups/mail/mail.tpl:234 admin/groups/mail/paste_mail.tpl:42 +#: personal/mail/copypaste.tpl:44 personal/mail/generic.tpl:290 +#: personal/mail/generic.tpl:293 +msgid "Add local" +msgstr "Добавить локально" + +#: admin/groups/mail/paste_mail.tpl:1 personal/mail/copypaste.tpl:1 +#: personal/mail/class_mailAccount.inc:1411 +#, fuzzy +msgid "Mail settings" +msgstr "Почтовые настройки пользователя" + +#: admin/groups/mail/paste_mail.tpl:12 +msgid "Primary mail address for this shared folder" +msgstr "Основной адрес эл. почты для этой общей папки" + +#: admin/groups/mail/mail_locals.tpl:6 personal/mail/mail_locals.tpl:7 +msgid "Select addresses to add" +msgstr "Выберите адреса для добавления" + +#: admin/groups/mail/mail_locals.tpl:22 personal/mail/mail_locals.tpl:25 +msgid "Filters" +msgstr "Фильтры" + +#: admin/groups/mail/mail_locals.tpl:32 +msgid "Display addresses of department" +msgstr "Показать адреса подразделения" + +#: admin/groups/mail/mail_locals.tpl:33 personal/mail/mail_locals.tpl:38 +msgid "Choose the department the search will be based on" +msgstr "Выбрать раздел, для которого будет осуществлен поиск" + +#: admin/groups/mail/mail_locals.tpl:42 +msgid "Display addresses matching" +msgstr "Показать подходяшие адреса" + +#: admin/groups/mail/mail_locals.tpl:45 personal/mail/mail_locals.tpl:52 +msgid "Regular expression for matching addresses" +msgstr "Регулярное выражение для поиска адреса" + +#: admin/groups/mail/mail_locals.tpl:52 personal/mail/mail_locals.tpl:60 +msgid "Display addresses of user" +msgstr "Показать адреса пользователя" + +#: admin/groups/mail/mail_locals.tpl:55 personal/mail/mail_locals.tpl:64 +msgid "User name of which addresses are shown" +msgstr "Имя пользователя, адрес которого показан" + +#: admin/groups/mail/mail_admins.tpl:4 +msgid "Folder administrators" +msgstr "Администраторы папки" + +#: admin/groups/mail/mail_admins.tpl:24 +msgid "Select a specific department" +msgstr "Выберите подразделение." + +#: admin/groups/mail/mail_admins.tpl:30 +msgid "Choose" +msgstr "Выбрать" + +#: admin/groups/mail/class_groupMail.inc:111 +#: admin/groups/mail/class_groupMail.inc:118 +#: admin/groups/mail/class_groupMail.inc:125 +#: admin/groups/mail/class_groupMail.inc:132 +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:140 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:547 +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:773 +#: admin/groups/mail/class_groupMail.inc:777 +#: admin/groups/mail/class_groupMail.inc:781 +#: admin/groups/mail/class_groupMail.inc:790 +#: personal/mail/class_mailAccount.inc:147 +#: personal/mail/class_mailAccount.inc:154 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:162 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:928 +#: personal/mail/class_mailAccount.inc:996 +#: personal/mail/class_mailAccount.inc:1000 +#: personal/mail/class_mailAccount.inc:1004 +#: personal/mail/class_mailAccount.inc:1018 +#, fuzzy +msgid "Mail error" +msgstr "Сервер" + +#: admin/groups/mail/class_groupMail.inc:111 +#: personal/mail/class_mailAccount.inc:147 +#, fuzzy, php-format +msgid "Cannot read quota settings: %s" +msgstr "Не могу открыть файл на сервере." + +#: admin/groups/mail/class_groupMail.inc:118 +#: personal/mail/class_mailAccount.inc:154 +#, fuzzy, php-format +msgid "Cannot get list of mailboxes: %s" +msgstr "Не удается удалить почтовый ящик IMAP. Ответ сервера: '%s'." + +#: admin/groups/mail/class_groupMail.inc:125 +#, fuzzy, php-format +msgid "Cannot receive folder types: %s" +msgstr "Общие папки IMAP" + +#: admin/groups/mail/class_groupMail.inc:132 +#, fuzzy, php-format +msgid "Cannot receive folder permissions: %s" +msgstr "Общие папки IMAP" + +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:773 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:996 +#, php-format +msgid "Mail method cannot connect: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:140 +#: personal/mail/class_mailAccount.inc:162 +#, php-format +msgid "Mailbox '%s' doesn't exists on mail server: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:297 +#, fuzzy +msgid "" +"Remove shared folder from mail server database when entry gets removed in " +"LDAP" +msgstr "Не удается удалить пользователя из базы данных Kerberos." + +#: admin/groups/mail/class_groupMail.inc:298 +msgid "Remove the shared folder and all its contents after saving this account" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:341 +#: personal/mail/class_mailAccount.inc:311 +#, fuzzy +msgid "Please select an entry!" +msgstr "Введите корректный серийный номер" + +#: admin/groups/mail/class_groupMail.inc:360 +#: personal/mail/class_mailAccount.inc:329 +#, fuzzy +msgid "Cannot add primary address to the list of forwarders!" +msgstr "" +"Вы пытаетесь добавить некорректный адрес электронной почты к списку тех, " +"кому должны пересылаться сообщения." + +#: admin/groups/mail/class_groupMail.inc:405 +#: personal/mail/class_mailAccount.inc:372 +#, fuzzy, php-format +msgid "Address is already in use by user '%s'." +msgstr "Добавляемый вами адрес уже используется пользователем" + +#: admin/groups/mail/class_groupMail.inc:547 +#: personal/mail/class_mailAccount.inc:928 +#, fuzzy, php-format +msgid "Cannot remove mailbox: %s" +msgstr "Не удается удалить почтовый ящик IMAP. Ответ сервера: '%s'." + +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:790 +#, fuzzy, php-format +msgid "Cannot update shared folder permissions: %s" +msgstr "Общие папки IMAP" + +#: admin/groups/mail/class_groupMail.inc:649 +#, fuzzy +msgid "New" +msgstr "Пользователи домена" + +#: admin/groups/mail/class_groupMail.inc:777 +#: personal/mail/class_mailAccount.inc:1000 +#, fuzzy, php-format +msgid "Cannot update mailbox: %s" +msgstr "Не удается создать почтовый ящик IMAP. Ответ сервера: \"%s\"." + +#: admin/groups/mail/class_groupMail.inc:781 +#: personal/mail/class_mailAccount.inc:1004 +#, fuzzy, php-format +msgid "Cannot write quota settings: %s" +msgstr "Удалить" + +#: admin/groups/mail/class_groupMail.inc:822 +#, php-format +msgid "" +"The group 'cn' has changed. It can't be changed due to the fact that mail " +"method '%s' relies on it!" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:856 +#: personal/mail/class_mailAccount.inc:1434 +#, fuzzy +msgid "Mail max size" +msgstr "Размер квоты" + +#: admin/groups/mail/class_groupMail.inc:864 +msgid "You need to set the maximum mail size in order to reject anything." +msgstr "Помните, что указывать нужно максимальный допустимый размер сообщений." + +#: admin/groups/mail/class_groupMail.inc:868 +#: admin/groups/mail/class_groupMail.inc:973 +#: personal/mail/class_mailAccount.inc:1421 +#, fuzzy +msgid "Mail server" +msgstr "Сервер" + +#: admin/groups/mail/class_groupMail.inc:964 +#, fuzzy +msgid "Group mail" +msgstr "Группа" + +#: admin/groups/mail/class_groupMail.inc:974 +msgid "Kolab" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:975 +#, fuzzy +msgid "Alternate addresses" +msgstr "Альтернативные адреса" + +#: admin/groups/mail/class_groupMail.inc:976 +#, fuzzy +msgid "Forwarding addresses" +msgstr "Основной адрес" + +#: admin/groups/mail/class_groupMail.inc:977 +#, fuzzy +msgid "Only local" +msgstr "Добавить локально" + +#: admin/groups/mail/class_groupMail.inc:978 +#, fuzzy +msgid "Permissions" +msgstr "Права для членов группы" + +#: personal/mail/copypaste.tpl:13 personal/mail/generic.tpl:267 +msgid "Forward messages to" +msgstr "Перенаправлять сообщения" + +#: personal/mail/generic.tpl:115 personal/mail/class_mailAccount.inc:1442 +msgid "Use custom sieve script" +msgstr "Использовать другой сценарий SIEVE" + +#: personal/mail/generic.tpl:115 +msgid "disables all Mail options!" +msgstr "отключает все почтовые настройки!" + +#: personal/mail/generic.tpl:123 +#, fuzzy +msgid "Sieve Management" +msgstr "Название" + +#: personal/mail/generic.tpl:144 +msgid "Select if you want to forward mails without getting own copies of them" +msgstr "Выберите, нужно ли оставлять копии перенаправляемых сообщений" + +#: personal/mail/generic.tpl:144 +msgid "No delivery to own mailbox" +msgstr "Не оставлять копии в своем почтовом ящике" + +#: personal/mail/generic.tpl:151 +msgid "" +"Select to automatically response with the vacation message defined below" +msgstr "Выберите, чтобы включить автоответчик с сообщением, указанным ниже" + +#: personal/mail/generic.tpl:153 +msgid "Activate vacation message" +msgstr "Включить автоответчик" + +#: personal/mail/generic.tpl:161 +#, fuzzy +msgid "from" +msgstr "и" + +#: personal/mail/generic.tpl:185 +msgid "till" +msgstr "" + +#: personal/mail/generic.tpl:214 +#, fuzzy +msgid "Select if you want to filter this mails through spamassassin" +msgstr "Выберите, нужно ли фильтровать сообщения с помощью SpamAssassin" + +#: personal/mail/generic.tpl:216 +msgid "Move mails tagged with spam level greater than" +msgstr "Перемещать сообщения с меткой рекламы больше" + +#: personal/mail/generic.tpl:219 +#, fuzzy +msgid "Choose spam level - smaller values are more sensitive" +msgstr "" +"Выберите метку рекламы - чем меньше значение, тем чувствительнее фильтр" + +#: personal/mail/generic.tpl:223 +msgid "to folder" +msgstr "в папку" + +#: personal/mail/generic.tpl:235 +msgid "Reject mails bigger than" +msgstr "Отклонять сообщения размером больше" + +#: personal/mail/generic.tpl:238 +msgid "MB" +msgstr "Мб" + +#: personal/mail/generic.tpl:245 +#: personal/mail/sieve/class_sieveManagement.inc:502 +#: personal/mail/sieve/class_sieveManagement.inc:720 +#: personal/mail/sieve/templates/element_vacation.tpl:44 +#: personal/mail/sieve/templates/object_container.tpl:31 +#: personal/mail/class_mailAccount.inc:1425 +msgid "Vacation message" +msgstr "Сообщение автоответчика" + +#: personal/mail/generic.tpl:261 +#: personal/mail/sieve/templates/import_script.tpl:12 +#: personal/mail/sieve/templates/edit_frame_base.tpl:7 +msgid "Import" +msgstr "Импортировать" + +#: personal/mail/mail_locals.tpl:35 +#, fuzzy +msgid "Select department" +msgstr "Выберите подразделение" + +#: personal/mail/sieve/class_sieveElement_Vacation.inc:148 +#, fuzzy +msgid "Alternative sender address must be a valid email addresses." +msgstr "Введите корректное имя пользователя!" + +#: personal/mail/sieve/class_sieveManagement.inc:114 +#: personal/mail/sieve/class_sieveManagement.inc:242 +#, fuzzy +msgid "Parse failed" +msgstr "Ошибка" + +#: personal/mail/sieve/class_sieveManagement.inc:118 +#: personal/mail/sieve/class_sieveManagement.inc:246 +#, fuzzy +msgid "Parse successful" +msgstr "Импорт успешен." + +#: personal/mail/sieve/class_sieveManagement.inc:156 +#, php-format +msgid "" +"The specified mail server '%s' does not exist within the GOsa configuration." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:201 +msgid "No script name specified!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:206 +#, fuzzy +msgid "Please use only lowercase script names!" +msgstr "Введите корректное имя пользователя!" + +#: personal/mail/sieve/class_sieveManagement.inc:212 +#, fuzzy +msgid "Please use only alphabetical characters in script names!" +msgstr "Вам не разрешено менять пароль." + +#: personal/mail/sieve/class_sieveManagement.inc:218 +#, fuzzy +msgid "Script name already in use!" +msgstr "Указанное имя уже используется." + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:349 +#: personal/mail/sieve/class_sieveManagement.inc:398 +#: personal/mail/sieve/class_sieveManagement.inc:402 +#: personal/mail/sieve/class_sieveManagement.inc:433 +#: personal/mail/sieve/class_sieveManagement.inc:519 +#: personal/mail/sieve/class_sieveManagement.inc:770 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#, fuzzy +msgid "SIEVE error" +msgstr "Ошибка LDAP:" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#, fuzzy, php-format +msgid "Cannot log into SIEVE server: %s" +msgstr "Невозможно зарегистрироваться на сервере SIEVE. Ответ сервера: \"%s\"." + +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/class_mail-methods-cyrus.inc:468 +#, php-format +msgid "Cannot retrieve SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:349 +#, php-format +msgid "Cannot remove SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:395 +#, fuzzy +msgid "Edited" +msgstr "Изменить" + +#: personal/mail/sieve/class_sieveManagement.inc:429 +msgid "Uploaded script is empty!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy +msgid "Internal error" +msgstr "Терминал-сервер" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy, php-format +msgid "Cannot access temporary file '%s'!" +msgstr "Удалить" + +#: personal/mail/sieve/class_sieveManagement.inc:433 +#, fuzzy, php-format +msgid "Cannot open temporary file '%s'!" +msgstr "Удалить" + +#: personal/mail/sieve/class_sieveManagement.inc:493 +#: personal/mail/sieve/class_sieveManagement.inc:496 +#: personal/mail/sieve/class_sieveManagement.inc:711 +#: personal/mail/sieve/class_sieveManagement.inc:714 +#: personal/mail/sieve/templates/element_keep.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:22 +#: personal/mail/sieve/templates/object_container.tpl:25 +msgid "Keep" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:494 +#: personal/mail/sieve/class_sieveManagement.inc:712 +#: personal/mail/sieve/templates/element_comment.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:23 +#, fuzzy +msgid "Comment" +msgstr "Контакт" + +#: personal/mail/sieve/class_sieveManagement.inc:495 +#: personal/mail/sieve/class_sieveManagement.inc:713 +#, fuzzy +msgid "File into" +msgstr "Имя сервера" + +#: personal/mail/sieve/class_sieveManagement.inc:497 +#: personal/mail/sieve/class_sieveManagement.inc:715 +#: personal/mail/sieve/templates/element_discard.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:26 +#, fuzzy +msgid "Discard" +msgstr "Устройства" + +#: personal/mail/sieve/class_sieveManagement.inc:498 +#: personal/mail/sieve/class_sieveManagement.inc:716 +#: personal/mail/sieve/templates/element_redirect.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:27 +#, fuzzy +msgid "Redirect" +msgstr "напрямую" + +#: personal/mail/sieve/class_sieveManagement.inc:499 +#: personal/mail/sieve/class_sieveManagement.inc:717 +#: personal/mail/sieve/templates/object_container.tpl:28 +#, fuzzy +msgid "Reject" +msgstr "Удалить" + +#: personal/mail/sieve/class_sieveManagement.inc:500 +#: personal/mail/sieve/class_sieveManagement.inc:718 +#: personal/mail/sieve/templates/object_container.tpl:29 +#: personal/mail/sieve/templates/element_require.tpl:12 +msgid "Require" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:503 +#: personal/mail/sieve/class_sieveManagement.inc:721 +#: personal/mail/sieve/templates/object_container.tpl:32 +#: personal/mail/sieve/class_sieveElement_If.inc:836 +#, fuzzy +msgid "If" +msgstr "Unix" + +#: personal/mail/sieve/class_sieveManagement.inc:519 +#, fuzzy +msgid "Cannot add new element!" +msgstr "Добавить сервис DNS" + +#: personal/mail/sieve/class_sieveManagement.inc:562 +#: personal/mail/sieve/class_sieveManagement.inc:756 +#: personal/mail/sieve/templates/element_else.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:33 +#: personal/mail/sieve/class_sieveElement_If.inc:840 +#, fuzzy +msgid "Else" +msgstr "Выбрать" + +#: personal/mail/sieve/class_sieveManagement.inc:564 +#: personal/mail/sieve/class_sieveManagement.inc:758 +#: personal/mail/sieve/class_sieveManagement.inc:763 +#: personal/mail/sieve/templates/element_elsif.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:34 +#: personal/mail/sieve/class_sieveElement_If.inc:838 +msgid "Else If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:589 +#: personal/mail/sieve/templates/element_address.tpl:15 +#: personal/mail/sieve/templates/element_address.tpl:113 +msgid "Address" +msgstr "Адрес" + +#: personal/mail/sieve/class_sieveManagement.inc:590 +#: personal/mail/sieve/templates/element_header.tpl:16 +#: personal/mail/sieve/templates/element_header.tpl:106 +#, fuzzy +msgid "Header" +msgstr "Отправитель" + +#: personal/mail/sieve/class_sieveManagement.inc:591 +#: personal/mail/sieve/templates/element_envelope.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:105 +msgid "Envelope" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:592 +#: personal/mail/sieve/templates/element_size.tpl:4 +#: addons/mailqueue/contents.tpl:74 +msgid "Size" +msgstr "Размер" + +#: personal/mail/sieve/class_sieveManagement.inc:593 +#: personal/mail/sieve/templates/element_exists.tpl:8 +#, fuzzy +msgid "Exists" +msgstr "Изменить" + +#: personal/mail/sieve/class_sieveManagement.inc:594 +#: personal/mail/sieve/templates/element_allof.tpl:10 +#, fuzzy +msgid "All of" +msgstr "Все" + +#: personal/mail/sieve/class_sieveManagement.inc:595 +#: personal/mail/sieve/templates/element_anyof.tpl:10 +msgid "Any of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:596 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +#, fuzzy +msgid "True" +msgstr "Улица" + +#: personal/mail/sieve/class_sieveManagement.inc:597 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +#, fuzzy +msgid "False" +msgstr "женский" + +#: personal/mail/sieve/class_sieveManagement.inc:634 +#: addons/mailqueue/class_mailqueue.inc:321 addons/mailqueue/contents.tpl:93 +#, fuzzy +msgid "Active" +msgstr "Личный" + +#: personal/mail/sieve/class_sieveManagement.inc:635 +msgid "This script is marked as active" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:640 +#, fuzzy +msgid "Script length" +msgstr "Путь к сценариям" + +#: personal/mail/sieve/class_sieveManagement.inc:644 +#, fuzzy +msgid "Remove script" +msgstr "Удалить сервис DNS" + +#: personal/mail/sieve/class_sieveManagement.inc:653 +#, fuzzy +msgid "Activate script" +msgstr "Личный" + +#: personal/mail/sieve/class_sieveManagement.inc:657 +#, fuzzy +msgid "Edit script" +msgstr "Пользователи домена" + +#: personal/mail/sieve/class_sieveManagement.inc:672 +#, php-format +msgid "Can't log into SIEVE server. Server says '%s'." +msgstr "Невозможно зарегистрироваться на сервере SIEVE. Ответ сервера: \"%s\"." + +#: personal/mail/sieve/class_sieveManagement.inc:770 +msgid "Cannot insert element at the requested position!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#: personal/mail/class_mail-methods-cyrus.inc:556 +#, php-format +msgid "Cannot store SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1045 +#, fuzzy +msgid "Failed to save sieve script" +msgstr "Использовать другой сценарий SIEVE" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:24 +#, fuzzy +msgid "Please specify a valid email address." +msgstr "Введите корректное имя пользователя!" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:35 +#, fuzzy +msgid "Place a mail address here" +msgstr "Введите корректный серийный номер" + +#: personal/mail/sieve/class_sieveElement_Comment.inc:21 +msgid "Your comment here" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:1 +#, fuzzy +msgid "Add a new element" +msgstr "Добавить сервис DNS" + +#: personal/mail/sieve/templates/add_element.tpl:2 +#, fuzzy +msgid "Please select the type of element you want to add" +msgstr "Введите корректный серийный номер" + +#: personal/mail/sieve/templates/add_element.tpl:11 +#: personal/mail/sieve/templates/select_test_type.tpl:11 +msgid "Continue" +msgstr "Продолжить" + +#: personal/mail/sieve/templates/add_element.tpl:13 +#, fuzzy +msgid "Abort" +msgstr "Порт" + +#: personal/mail/sieve/templates/element_discard.tpl:9 +#, fuzzy +msgid "Discard message" +msgstr "Удалить" + +#: personal/mail/sieve/templates/element_if.tpl:4 +#: personal/mail/sieve/class_sieveElement_If.inc:834 +#, fuzzy +msgid "Condition" +msgstr "Подключение" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_address.tpl:116 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_header.tpl:109 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_envelope.tpl:108 +#, fuzzy +msgid "Not" +msgstr "нет" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_anyof.tpl:7 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "Inverse match" +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:1 +#, fuzzy +msgid "Import sieve script" +msgstr "Показать хосты" + +#: personal/mail/sieve/templates/import_script.tpl:2 +msgid "" +"Please select the sieve script you want to import. Use the import button to " +"import the script or the cancel button to abort." +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:5 +#, fuzzy +msgid "Script to import" +msgstr "Путь к сценариям" + +#: personal/mail/sieve/templates/element_address.tpl:18 +#: personal/mail/sieve/templates/element_header.tpl:19 +#: personal/mail/sieve/templates/element_vacation.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:19 +#, fuzzy +msgid "Normal view" +msgstr "Почтовый индекс" + +#: personal/mail/sieve/templates/element_address.tpl:25 +#: personal/mail/sieve/templates/element_header.tpl:26 +#: personal/mail/sieve/templates/element_envelope.tpl:26 +#, fuzzy +msgid "Match type" +msgstr "Соответствующий объект" + +#: personal/mail/sieve/templates/element_address.tpl:28 +#: personal/mail/sieve/templates/element_address.tpl:51 +#: personal/mail/sieve/templates/element_address.tpl:61 +#: personal/mail/sieve/templates/element_address.tpl:72 +#: personal/mail/sieve/templates/element_address.tpl:121 +#: personal/mail/sieve/templates/element_address.tpl:126 +#: personal/mail/sieve/templates/element_header.tpl:29 +#: personal/mail/sieve/templates/element_header.tpl:52 +#: personal/mail/sieve/templates/element_header.tpl:63 +#: personal/mail/sieve/templates/element_header.tpl:114 +#: personal/mail/sieve/templates/element_header.tpl:119 +#: personal/mail/sieve/templates/element_boolean.tpl:5 +#: personal/mail/sieve/templates/element_envelope.tpl:29 +#: personal/mail/sieve/templates/element_envelope.tpl:52 +#: personal/mail/sieve/templates/element_envelope.tpl:63 +#: personal/mail/sieve/templates/element_envelope.tpl:113 +#: personal/mail/sieve/templates/element_envelope.tpl:118 +#, fuzzy +msgid "Boolean value" +msgstr "По умолчанию" + +#: personal/mail/sieve/templates/element_address.tpl:36 +#: personal/mail/sieve/templates/element_header.tpl:37 +#: personal/mail/sieve/templates/element_envelope.tpl:37 +#, fuzzy +msgid "Invert test" +msgstr "Память" + +#: personal/mail/sieve/templates/element_address.tpl:40 +#: personal/mail/sieve/templates/element_header.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#, fuzzy +msgid "Yes" +msgstr "Системы" + +#: personal/mail/sieve/templates/element_address.tpl:42 +#: personal/mail/sieve/templates/element_header.tpl:43 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +#, fuzzy +msgid "No" +msgstr "нет" + +#: personal/mail/sieve/templates/element_address.tpl:48 +msgid "Part of address that should be used" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:58 +#: personal/mail/sieve/templates/element_header.tpl:49 +#: personal/mail/sieve/templates/element_envelope.tpl:49 +#, fuzzy +msgid "Comparator" +msgstr "не полный" + +#: personal/mail/sieve/templates/element_address.tpl:69 +#: personal/mail/sieve/templates/element_envelope.tpl:60 +#, fuzzy +msgid "Operator" +msgstr "не полный" + +#: personal/mail/sieve/templates/element_address.tpl:85 +#: personal/mail/sieve/templates/element_header.tpl:77 +#: personal/mail/sieve/templates/element_envelope.tpl:76 +msgid "Address fields to include" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:89 +#: personal/mail/sieve/templates/element_header.tpl:81 +#: personal/mail/sieve/templates/element_envelope.tpl:80 +msgid "Values to match for" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:118 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_header.tpl:111 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:110 +msgid "-" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:138 +#: personal/mail/sieve/templates/element_header.tpl:131 +#: personal/mail/sieve/templates/element_vacation.tpl:47 +#: personal/mail/sieve/templates/element_envelope.tpl:130 +#, fuzzy +msgid "Expert view" +msgstr "Режим" + +#: personal/mail/sieve/templates/element_fileinto.tpl:4 +#, fuzzy +msgid "Move mail into folder" +msgstr "в папку" + +#: personal/mail/sieve/templates/element_fileinto.tpl:8 +#, fuzzy +msgid "Select from list" +msgstr "Создать шаблон" + +#: personal/mail/sieve/templates/element_fileinto.tpl:10 +#, fuzzy +msgid "Manual selection" +msgstr "Язык" + +#: personal/mail/sieve/templates/element_fileinto.tpl:18 +#, fuzzy +msgid "Folder" +msgstr "Фильтр" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#, fuzzy +msgid "Move this object up one position" +msgstr "Включаемые объекты" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Up" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:9 +#: personal/mail/sieve/templates/object_container.tpl:9 +msgid "Move up" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +msgid "Move this object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +#: personal/mail/sieve/templates/object_container.tpl:12 +#, fuzzy +msgid "Down" +msgstr "Домен" + +#: personal/mail/sieve/templates/object_container_clear.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:13 +#, fuzzy +msgid "Move down" +msgstr "Домен" + +#: personal/mail/sieve/templates/object_container_clear.tpl:16 +#, fuzzy +msgid "Remove this object" +msgstr "Включаемые объекты" + +#: personal/mail/sieve/templates/object_container_clear.tpl:17 +#: personal/mail/sieve/templates/object_container.tpl:17 +#, fuzzy +msgid "Remove element" +msgstr "Удалить объект" + +#: personal/mail/sieve/templates/create_script.tpl:2 +msgid "" +"Please enter the name for the new script below. Script names must consist of " +"lower case characters only." +msgstr "" + +#: personal/mail/sieve/templates/create_script.tpl:8 +#, fuzzy +msgid "Script name" +msgstr "Список" + +#: personal/mail/sieve/templates/select_test_type.tpl:1 +#, fuzzy +msgid "Select the type of test you want to add" +msgstr "Выбрать пользователей для добавления" + +#: personal/mail/sieve/templates/select_test_type.tpl:3 +#, fuzzy +msgid "Available test types" +msgstr "Доступные приложения" + +#: personal/mail/sieve/templates/element_comment.tpl:8 +msgid "Edit" +msgstr "Изменить" + +#: personal/mail/sieve/templates/element_header.tpl:60 +msgid "operator" +msgstr "" + +#: personal/mail/sieve/templates/element_keep.tpl:9 +#, fuzzy +msgid "Keep message" +msgstr "Удалить" + +#: personal/mail/sieve/templates/element_redirect.tpl:18 +msgid "Redirect mail to following recipients" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:13 +#, fuzzy +msgid "Vacation Message" +msgstr "Сообщение автоответчика" + +#: personal/mail/sieve/templates/element_vacation.tpl:21 +#, fuzzy +msgid "Release interval" +msgstr "Интервал времени" + +#: personal/mail/sieve/templates/element_vacation.tpl:25 +#, fuzzy +msgid "days" +msgstr "день" + +#: personal/mail/sieve/templates/element_vacation.tpl:30 +#, fuzzy +msgid "Alternative sender addresses" +msgstr "Альтернативные адреса" + +#: personal/mail/sieve/templates/element_boolean.tpl:4 +msgid "Bool" +msgstr "" + +#: personal/mail/sieve/templates/element_boolean.tpl:8 +#, fuzzy +msgid "update" +msgstr "Обновить" + +#: personal/mail/sieve/templates/remove_script.tpl:2 +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Warning" +msgstr "Предупреждение" + +#: personal/mail/sieve/templates/remove_script.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "" +"Подумайте еще раз, действительно ли вам нужно удаление, так как GOsa не " +"сможет отменить результаты этой операции." + +#: personal/mail/sieve/templates/remove_script.tpl:10 +#, fuzzy +msgid "" +"Best thing to do before performing this action would be to save the current " +"script in a file. So - if you've done so - press 'Delete' to continue or " +"'Cancel' to abort." +msgstr "" +"Лучше всего перед удалением сохранить резервную копию текущего дерева LDAP в " +"файл. Если вы сделали это и действительно хотите выполнить удаление, нажмите " +"Удалить, иначе нажмите Отмена." + +#: personal/mail/sieve/templates/object_test_container.tpl:6 +#, fuzzy +msgid "Add object" +msgstr "Соответствующий объект" + +#: personal/mail/sieve/templates/object_test_container.tpl:10 +#: personal/mail/sieve/templates/object_container.tpl:16 +#, fuzzy +msgid "Remove object" +msgstr "Включаемые объекты" + +#: personal/mail/sieve/templates/object_container.tpl:8 +#, fuzzy +msgid "Move object up one position" +msgstr "Включаемые объекты" + +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Move object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:21 +#, fuzzy +msgid "choose element" +msgstr "Удалить объект" + +#: personal/mail/sieve/templates/object_container.tpl:24 +#, fuzzy +msgid "Fileinto" +msgstr "Файлы" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:42 +#, fuzzy +msgid "Add new" +msgstr "Пользователи домена" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add a new object above this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add element above" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:42 +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add a new object below this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add element below" +msgstr "" + +#: personal/mail/sieve/templates/element_size.tpl:16 +#, fuzzy +msgid "Select match type" +msgstr "Выберите, чтобы просмотреть серверы" + +#: personal/mail/sieve/templates/element_size.tpl:20 +#, fuzzy +msgid "Select value unit" +msgstr "Выберите подразделение" + +#: personal/mail/sieve/templates/element_stop.tpl:9 +msgid "Stop execution here" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:14 +#, fuzzy +msgid "Reject mail" +msgstr "Отклонять сообщения размером больше" + +#: personal/mail/sieve/templates/element_reject.tpl:17 +msgid "This is a multiline text element" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:19 +#, fuzzy +msgid "This is stored as single string" +msgstr "Что-то будет" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:6 +msgid "Export" +msgstr "Экспорт" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:12 +msgid "View structured" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:14 +#, fuzzy +msgid "View source" +msgstr "Звук" + +#: personal/mail/sieve/templates/management.tpl:1 +#, fuzzy +msgid "List of sieve scripts" +msgstr "Список пользователей" + +#: personal/mail/sieve/templates/management.tpl:5 +msgid "" +"Connection to the sieve server could not be established, the " +"authentification attribute is empty." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:6 +msgid "" +"Please verify that the attributes uid and mail are not empty and try again." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:12 +msgid "Connection to the sieve server could not be established." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:15 +msgid "Possibly the sieve account has not been created yet." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:19 +msgid "" +"Be careful. All your changes will be saved directly to sieve, if you use the " +"save button below." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:22 +#, fuzzy +msgid "Create new script" +msgstr "Создание нового объекта в" + +#: personal/mail/sieve/class_sieveElement_Require.inc:73 +#, fuzzy +msgid "Please specify at least one valid requirement." +msgstr "Укажите корректный номер телефона." + +#: personal/mail/sieve/class_sieveElement_Reject.inc:21 +msgid "Invalid character found, quotes are not allowed in a reject message." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:37 +msgid "Your reject text here" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#, fuzzy +msgid "Complete address" +msgstr "не полный" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#: personal/mail/sieve/class_sieveElement_If.inc:33 +#, fuzzy +msgid "Default" +msgstr "по умолчанию" + +#: personal/mail/sieve/class_sieveElement_If.inc:28 +#, fuzzy +msgid "Domain part" +msgstr "Пользователи домена" + +#: personal/mail/sieve/class_sieveElement_If.inc:29 +msgid "Local part" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Case insensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:34 +msgid "Case sensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:35 +#, fuzzy +msgid "Numeric" +msgstr "Ноябрь" + +#: personal/mail/sieve/class_sieveElement_If.inc:39 +msgid "is" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:40 +#, fuzzy +msgid "regex" +msgstr "сброс" + +#: personal/mail/sieve/class_sieveElement_If.inc:41 +#, fuzzy +msgid "contains" +msgstr "Действия" + +#: personal/mail/sieve/class_sieveElement_If.inc:42 +#, fuzzy +msgid "matches" +msgstr "Отмена" + +#: personal/mail/sieve/class_sieveElement_If.inc:43 +#, fuzzy +msgid "count" +msgstr "Учетная запись" + +#: personal/mail/sieve/class_sieveElement_If.inc:44 +#, fuzzy +msgid "value is" +msgstr "По умолчанию" + +#: personal/mail/sieve/class_sieveElement_If.inc:48 +#, fuzzy +msgid "less than" +msgstr "Добро пожаловать %s!" + +#: personal/mail/sieve/class_sieveElement_If.inc:49 +msgid "less or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:50 +msgid "equals" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:51 +msgid "greater or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:52 +#: personal/mail/sieve/class_sieveElement_If.inc:726 +#: personal/mail/sieve/class_sieveElement_If.inc:1059 +#, fuzzy +msgid "greater than" +msgstr "Создать параметры" + +#: personal/mail/sieve/class_sieveElement_If.inc:53 +#, fuzzy +msgid "not equal" +msgstr "не полный" + +#: personal/mail/sieve/class_sieveElement_If.inc:102 +#, fuzzy +msgid "Can't save empty tests." +msgstr "Удалить" + +#: personal/mail/sieve/class_sieveElement_If.inc:446 +#, fuzzy +msgid "emtpy" +msgstr "Шаблон" + +#: personal/mail/sieve/class_sieveElement_If.inc:447 +#, fuzzy +msgid "empty" +msgstr "Шаблон" + +#: personal/mail/sieve/class_sieveElement_If.inc:493 +msgid "Nothing specified right now" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:595 +msgid "Invalid type of address part." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:605 +#, fuzzy +msgid "Invalid match type given." +msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#: personal/mail/sieve/class_sieveElement_If.inc:621 +#, fuzzy +msgid "Invalid operator given." +msgstr "Значение поля \"Имя\" содержит недопустимые символы." + +#: personal/mail/sieve/class_sieveElement_If.inc:638 +#, fuzzy +msgid "Please specify a valid operator." +msgstr "Введите корректное имя пользователя!" + +#: personal/mail/sieve/class_sieveElement_If.inc:654 +#, fuzzy +msgid "" +"Invalid character found in address attribute. Quotes are not allowed here." +msgstr "Введите корректное имя пользователя!" + +#: personal/mail/sieve/class_sieveElement_If.inc:669 +msgid "" +"Invalid character found in value attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:727 +#: personal/mail/sieve/class_sieveElement_If.inc:1060 +msgid "lower than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:729 +#: personal/mail/sieve/class_sieveElement_If.inc:1062 +msgid "Megabyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:730 +#: personal/mail/sieve/class_sieveElement_If.inc:1063 +msgid "Kilobyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:731 +#: personal/mail/sieve/class_sieveElement_If.inc:1064 +#, fuzzy +msgid "Bytes" +msgstr "Системы" + +#: personal/mail/sieve/class_sieveElement_If.inc:745 +#, fuzzy +msgid "Please select a valid match type in the list box below." +msgstr "Введите корректный серийный номер" + +#: personal/mail/sieve/class_sieveElement_If.inc:759 +msgid "Only numeric values are allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:769 +msgid "No valid unit selected" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:876 +#, fuzzy +msgid "Empty" +msgstr "Шаблон" + +#: personal/mail/sieve/class_sieveElement_If.inc:1134 +#: personal/mail/sieve/class_sieveElement_If.inc:1164 +#, fuzzy +msgid "Click here to add a new test" +msgstr "Нажмите на эту кнопку, чтобы войти в систему" + +#: personal/mail/sieve/class_sieveElement_If.inc:1176 +msgid "Unhandled switch type" +msgstr "" + +#: personal/mail/sieve/class_My_Tree.inc:245 +#, fuzzy +msgid "Cannot remove last element!" +msgstr "Удалить объект" + +#: personal/mail/sieve/class_My_Tree.inc:658 +msgid "Require must be the first command in the script." +msgstr "" + +#: personal/mail/class_mailAccount.inc:51 +#: addons/mailqueue/class_mailqueue.inc:7 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/mail/class_mailAccount.inc:635 +#: personal/mail/class_mail-methods.inc:131 +#: personal/mail/class_mail-methods.inc:462 +#, fuzzy +msgid "Configuration error" +msgstr "Настроить" + +#: personal/mail/class_mailAccount.inc:635 +#, fuzzy, php-format +msgid "No DESC tag in vacation template '%s'!" +msgstr "В файле сообщения автоответчика отсутствует тег DESC:" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "Permission error" +msgstr "Права для членов группы" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "You have no permission to modify these addresses!" +msgstr "У вас недостаточно прав для удаления этого подразделения." + +#: personal/mail/class_mailAccount.inc:755 +#: personal/mail/class_mailAccount.inc:758 +#, fuzzy +msgid "unknown" +msgstr "состояние неизвестно" + +#: personal/mail/class_mailAccount.inc:1122 +#: personal/mail/class_mailAccount.inc:1130 +#: personal/mail/class_mailAccount.inc:1279 +#, fuzzy +msgid "Mail reject size" +msgstr "Размер квоты" + +#: personal/mail/class_mailAccount.inc:1134 +#: personal/mail/class_mailAccount.inc:1286 +#, fuzzy +msgid "Spam folder" +msgstr "в папку" + +#: personal/mail/class_mailAccount.inc:1140 +#: personal/mail/class_mailAccount.inc:1291 +#, fuzzy +msgid "Vacation interval" +msgstr "Сообщение автоответчика" + +#: personal/mail/class_mailAccount.inc:1415 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/mail/class_mailAccount.inc:1424 +#, fuzzy +msgid "Add vacation information" +msgstr "Информация об организации" + +#: personal/mail/class_mailAccount.inc:1427 +msgid "Use spam filter" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1428 +#, fuzzy +msgid "Spam level" +msgstr "Уровень информативности" + +#: personal/mail/class_mailAccount.inc:1429 +#, fuzzy +msgid "Spam mail box" +msgstr "Размер квоты" + +#: personal/mail/class_mailAccount.inc:1431 +#, fuzzy +msgid "Sieve management" +msgstr "Название" + +#: personal/mail/class_mailAccount.inc:1433 +#, fuzzy +msgid "Reject due to mailsize" +msgstr "Отклонять сообщения размером больше" + +#: personal/mail/class_mailAccount.inc:1436 +#: personal/mail/class_mailAccount.inc:1441 +#, fuzzy +msgid "Forwarding address" +msgstr "Основной адрес" + +#: personal/mail/class_mailAccount.inc:1437 +#, fuzzy +msgid "Local delivery" +msgstr "Последняя доставка" + +#: personal/mail/class_mailAccount.inc:1438 +#, fuzzy +msgid "No delivery to own mailbox " +msgstr "Не оставлять копии в своем почтовом ящике" + +#: personal/mail/class_mailAccount.inc:1439 +#, fuzzy +msgid "Mail alternative addresses" +msgstr "Альтернативные адреса" + +#: personal/mail/main.inc:138 +msgid "User mail settings" +msgstr "Почтовые настройки пользователя" + +#: personal/mail/class_mail-methods.inc:132 +#, php-format +msgid "The configured mail attribute '%s' is unsupported!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:463 +#, php-format +msgid "Mail method '%s' is unknown!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:689 +#: personal/mail/class_mail-methods.inc:690 +#, fuzzy +msgid "None" +msgstr "нет" + +#: personal/mail/class_mail-methods.inc:779 +#, fuzzy +msgid "Unknown" +msgstr "состояние неизвестно" + +#: personal/mail/class_mail-methods.inc:781 +#, fuzzy +msgid "Unlimited" +msgstr "не определена" + +#: personal/mail/class_mail-methods-cyrus.inc:39 +msgid "There are no IMAP compatible mail servers defined!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:44 +msgid "Mail server for this account is invalid!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy +msgid "IMAP error" +msgstr "Ошибка LDAP:" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy, php-format +msgid "Cannot modify IMAP mailbox quota: %s" +msgstr "Не удается удалить почтовый ящик IMAP. Ответ сервера: '%s'." + +#: personal/mail/class_mail-methods-cyrus.inc:354 +#: personal/mail/class_mail-methods-cyrus.inc:391 +msgid "The module imap_getacl is not implemented!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:563 +#, php-format +msgid "Cannot activate SIEVE script: %s" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:6 +#: addons/mailqueue/class_mailqueue.inc:331 addons/mailqueue/main.inc:56 +#, fuzzy +msgid "Mail queue" +msgstr "Сервер" + +#: addons/mailqueue/class_mailqueue.inc:205 +msgid "up" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:207 +#, fuzzy +msgid "down" +msgstr "Домен" + +#: addons/mailqueue/class_mailqueue.inc:218 +#: addons/mailqueue/class_mailqueue.inc:318 +msgid "All" +msgstr "Все" + +#: addons/mailqueue/class_mailqueue.inc:262 +msgid "no limit" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:265 +msgid "hour" +msgstr "час" + +#: addons/mailqueue/class_mailqueue.inc:267 +#, fuzzy +msgid "hours" +msgstr "час" + +#: addons/mailqueue/class_mailqueue.inc:319 +msgid "Hold" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:320 +msgid "Un hold" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:322 +msgid "Not active" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:332 +#: addons/mailqueue/class_mailqueue.inc:337 +#, fuzzy +msgid "Mail queue addon" +msgstr "Сервер" + +#: addons/mailqueue/class_mailqueue.inc:340 +#, fuzzy +msgid "Unhold all messages" +msgstr "Перенаправлять сообщения" + +#: addons/mailqueue/class_mailqueue.inc:341 addons/mailqueue/contents.tpl:38 +#, fuzzy +msgid "Hold all messages" +msgstr "Перенаправлять сообщения" + +#: addons/mailqueue/class_mailqueue.inc:342 +#, fuzzy +msgid "Delete all messages" +msgstr "Удалить" + +#: addons/mailqueue/class_mailqueue.inc:343 addons/mailqueue/contents.tpl:48 +msgid "Requeue all messages" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:344 +#, fuzzy +msgid "Unhold message" +msgstr "Домашняя страница" + +#: addons/mailqueue/class_mailqueue.inc:345 addons/mailqueue/contents.tpl:120 +#, fuzzy +msgid "Hold message" +msgstr "Домашняя страница" + +#: addons/mailqueue/class_mailqueue.inc:346 +#, fuzzy +msgid "Delete message" +msgstr "Удалить" + +#: addons/mailqueue/class_mailqueue.inc:347 +#, fuzzy +msgid "Requeue message" +msgstr "Сообщение о состоянии" + +#: addons/mailqueue/class_mailqueue.inc:348 +msgid "Gathering queue data" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:349 +#, fuzzy +msgid "Get header information" +msgstr "Общая информация о пользователе" + +#: addons/mailqueue/contents.tpl:10 addons/mailqueue/contents.tpl:28 +msgid "Search" +msgstr "Поиск" + +#: addons/mailqueue/contents.tpl:11 +msgid "Search for" +msgstr "Поиск" + +#: addons/mailqueue/contents.tpl:12 +#, fuzzy +msgid "Please enter a search string here." +msgstr "Введите корректный серийный номер" + +#: addons/mailqueue/contents.tpl:14 +#, fuzzy +msgid "Select a server" +msgstr "Выберите, чтобы просмотреть серверы" + +#: addons/mailqueue/contents.tpl:18 +#, fuzzy +msgid "with status" +msgstr "Состояние" + +#: addons/mailqueue/contents.tpl:23 +msgid "within the last" +msgstr "" + +#: addons/mailqueue/contents.tpl:33 +msgid "Remove all messages" +msgstr "" + +#: addons/mailqueue/contents.tpl:34 +msgid "Remove all messages from selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:39 +msgid "Hold all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:43 +msgid "Release all messages" +msgstr "" + +#: addons/mailqueue/contents.tpl:44 +msgid "Release all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:49 +msgid "Requeue all messages in selected servers queue" +msgstr "" + +#: addons/mailqueue/contents.tpl:63 +#, fuzzy +msgid "Search returned no results" +msgstr "Не найдено..." + +#: addons/mailqueue/contents.tpl:72 +#, fuzzy +msgid "ID" +msgstr "UID" + +#: addons/mailqueue/contents.tpl:75 +#, fuzzy +msgid "Arrival" +msgstr "Апрель" + +#: addons/mailqueue/contents.tpl:76 +msgid "Sender" +msgstr "Отправитель" + +#: addons/mailqueue/contents.tpl:77 +#, fuzzy +msgid "Recipient" +msgstr "Описание" + +#: addons/mailqueue/contents.tpl:78 +msgid "Status" +msgstr "Состояние" + +#: addons/mailqueue/contents.tpl:105 +#, fuzzy +msgid "delete" +msgstr "Удалить" + +#: addons/mailqueue/contents.tpl:105 +#, fuzzy +msgid "Delete this message" +msgstr "Удалить" + +#: addons/mailqueue/contents.tpl:113 +msgid "unhold" +msgstr "" + +#: addons/mailqueue/contents.tpl:113 +#, fuzzy +msgid "Release message" +msgstr "Сообщение о состоянии" + +#: addons/mailqueue/contents.tpl:120 +#, fuzzy +msgid "hold" +msgstr "Почтовые настройки" + +#: addons/mailqueue/contents.tpl:127 +#, fuzzy +msgid "requeue" +msgstr "Номер телефона" + +#: addons/mailqueue/contents.tpl:127 +msgid "Requeue this message" +msgstr "" + +#: addons/mailqueue/contents.tpl:133 +#, fuzzy +msgid "header" +msgstr "Отправитель" + +#: addons/mailqueue/contents.tpl:134 +#, fuzzy +msgid "Display header of this message" +msgstr "Показать совпадения номеров" + +#, fuzzy +#~ msgid "Cannot connect mail method: %s" +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Cannot remove mailbox: %s." +#~ msgstr "Не удается удалить почтовый ящик IMAP. Ответ сервера: '%s'." + +#, fuzzy +#~ msgid "Cannot update mailbox: %s." +#~ msgstr "Не удается создать почтовый ящик IMAP. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Cannot write quota settings: %s." +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Cannot get list of mailboxes! Error was: %s." +#~ msgstr "Не удается удалить почтовый ящик IMAP. Ответ сервера: '%s'." + +#, fuzzy +#~ msgid "Cannot connect mail method! Error was: %s." +#~ msgstr "Удалить" + +#, fuzzy +#~ msgid "Cannot remove mailbox! Error was: %s." +#~ msgstr "Не удается удалить почтовый ящик IMAP. Ответ сервера: '%s'." + +#, fuzzy +#~ msgid "Cannot update mailbox! Error was: %s." +#~ msgstr "Не удается создать почтовый ящик IMAP. Ответ сервера: \"%s\"." + +#, fuzzy +#~ msgid "Specify the mail server where the user will be hosted on" +#~ msgstr "Выберите почтовый сервер для учетной записи пользователя" + +#~ msgid "Select mail server to place user on" +#~ msgstr "Выберите почтовый сервер для пользователя" + +#~ msgid "not defined" +#~ msgstr "не определена" + +#~ msgid "read" +#~ msgstr "чтение" + +#~ msgid "post" +#~ msgstr "отправка" + +#~ msgid "external post" +#~ msgstr "отправка (внешн.)" + +#~ msgid "append" +#~ msgstr "добавление" + +#~ msgid "write" +#~ msgstr "запись" + +#, fuzzy +#~ msgid "admin" +#~ msgstr "DN администратора" + +#, fuzzy +#~ msgid "mail" +#~ msgstr "Почта" + +#, fuzzy +#~ msgid "forward address" +#~ msgstr "Основной адрес" + +#, fuzzy +#~ msgid "Cannot forward to users own mail address!" +#~ msgstr "Вы пытаетесь добавить некорректный адрес электронной почты " + +#, fuzzy +#~ msgid "Alternate address" +#~ msgstr "Альтернативные адреса" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#, fuzzy +#~ msgid "Mails" +#~ msgstr "Почта" + +#, fuzzy +#~ msgid "Tasks" +#~ msgstr "Выберите тип мыши" + +#, fuzzy +#~ msgid "Journals" +#~ msgstr "час" + +#, fuzzy +#~ msgid "Contacts" +#~ msgstr "Контакт" + +#, fuzzy +#~ msgid "Notes" +#~ msgstr "нет" + +#, fuzzy +#~ msgid "Drafts" +#~ msgstr "Дата" + +#, fuzzy +#~ msgid "Sent items" +#~ msgstr "Состояние системы" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "Группа" + +#~ msgid "Mail options" +#~ msgstr "Почтовые настройки" + +#, fuzzy +#~ msgid "You have no permission to submit a '%s' command!" +#~ msgstr "У вас недостаточно прав для создания пользователя в этой ветке." + +#, fuzzy +#~ msgid "No mail servers specified!" +#~ msgstr "Не указан сервер журналов." + +#, fuzzy +#~ msgid "Sieve port" +#~ msgstr "Сервер" + +#~ msgid "There is no mail method '%s' specified in your gosa.conf available." +#~ msgstr "Метод '%s' не описан в вашем файле конфигурации." + +#~ msgid "" +#~ "Adding your one of your own addresses to the forwarders makes no sense." +#~ msgstr "" +#~ "Добавление своего единственного адреса к списку пересылки не имеет смысла." + +#, fuzzy +#~ msgid "alternate address" +#~ msgstr "Альтернативные адреса" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#~ msgid "This 'dn' has no valid mail extensions." +#~ msgstr "Для этого DN нет корректных почтовых расширений." + +#~ msgid "" +#~ "This account has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи есть настройки электронной почты. Вы можете удалить " +#~ "их, щелкнув ниже." + +#~ msgid "" +#~ "This account has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи нет настроек электронной почты. Вы можете добавить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "You're trying to add an invalid email address " +#~ msgstr "" +#~ "Вы пытаетесь добавить некорректный адрес электронной почты к списку тех, " +#~ "кому должны пересылаться сообщения." + +#~ msgid "" +#~ "You're trying to add an invalid email address to the list of alternate " +#~ "addresses." +#~ msgstr "" +#~ "Вы пытаетесь добавить некорректный адрес электронной почты к списку " +#~ "альтернативных адресов." + +#~ msgid "The address you're trying to add is already used by user" +#~ msgstr "Добавляемый вами адрес уже используется пользователем" + +#~ msgid "The required field 'Primary address' is not set." +#~ msgstr "Обязательное поле \"Основной адрес\" не заполнено." + +#~ msgid "Please enter a valid email addres in 'Primary address' field." +#~ msgstr "Введите корректное значение в поле \"Основной адрес\"." + +#~ msgid "The primary address you've entered is already in use." +#~ msgstr "Введенный вами адрес уже используется." + +#~ msgid "Value in 'Quota size' is not valid." +#~ msgstr "Значение поля \"Квота\" некорректно." + +#~ msgid "Please specify a vaild mail size for mails to be rejected." +#~ msgstr "Укажите корректный размер сообщений, которые будут отклоняться." + +#, fuzzy +#~ msgid "Please specify a numeric value for header size limit." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please specify a numeric value for mailbox size limit." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please specify a numeric value for message size limit." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please specify a server identifier." +#~ msgstr "Введите корректное имя пользователя!" + +#, fuzzy +#~ msgid "Please specify a connect url." +#~ msgstr "Введите корректное имя пользователя!" + +#, fuzzy +#~ msgid "Please specify an admin user." +#~ msgstr "Введите корректное имя пользователя!" + +#, fuzzy +#~ msgid "Please specify a password for the admin user." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "Please specify a valid value for '%s'." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "" +#~ "This group has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи есть настройки электронной почты. Вы можете удалить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "" +#~ "This group has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи нет настроек электронной почты. Вы можете добавить " +#~ "их, щелкнув ниже." + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "Введите корректное значение в поле \"Основной адрес\"." + +#~ msgid "Back" +#~ msgstr "Назад" + +#, fuzzy +#~ msgid "Mailqueue" +#~ msgstr "Сервер" + +#, fuzzy +#~ msgid "Mailqueue addon" +#~ msgstr "Сервер" + +#~ msgid "This account has no mail extensions." +#~ msgstr "В этой учетной записи нет почтовых расширений." + +#~ msgid "January" +#~ msgstr "Январь" + +#~ msgid "February" +#~ msgstr "Февраль" + +#~ msgid "March" +#~ msgstr "Март" + +#~ msgid "April" +#~ msgstr "Апрель" + +#~ msgid "May" +#~ msgstr "Май" + +#~ msgid "June" +#~ msgstr "Июнь" + +#~ msgid "July" +#~ msgstr "Июль" + +#~ msgid "August" +#~ msgstr "Август" + +#~ msgid "September" +#~ msgstr "Сентябрь" + +#~ msgid "October" +#~ msgstr "Октябрь" + +#~ msgid "November" +#~ msgstr "Ноябрь" + +#~ msgid "December" +#~ msgstr "Декабрь" + +#, fuzzy +#~ msgid "Removing of user/mail account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" + +#, fuzzy +#~ msgid "Saving of user/mail account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." + +#, fuzzy +#~ msgid "Saving of object group/mail with dn '%s' failed." +#~ msgstr "Моя учетная запись" + +#, fuzzy +#~ msgid "Removing of object group/mail with dn '%s' failed." +#~ msgstr "Атрибуты UNIX" + +#, fuzzy +#~ msgid "Saving of server services/anti virus with dn '%s' failed." +#~ msgstr "Атрибуты UNIX" + +#, fuzzy +#~ msgid "Saving of server services/spamassassin with dn '%s' failed." +#~ msgstr "Атрибуты UNIX" + +#, fuzzy +#~ msgid "Saving server services/mail with dn '%s' failed." +#~ msgstr "Атрибуты UNIX" + +#, fuzzy +#~ msgid "Removing of groups/mail with dn '%s' failed." +#~ msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "Saving of groups/mail with dn '%s' failed." +#~ msgstr "Почтовые настройки пользователя" diff --git a/trunk/gosa-plugins/mail/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mail/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..fadd20a63 --- /dev/null +++ b/trunk/gosa-plugins/mail/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,2728 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 09:00+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/ogroups/mail/mail.tpl:7 +msgid "Mail distribution list" +msgstr "邮件传递列表" + +#: admin/ogroups/mail/mail.tpl:10 admin/groups/mail/mail.tpl:7 +#: admin/groups/mail/paste_mail.tpl:8 +#: admin/groups/mail/class_groupMail.inc:838 personal/mail/copypaste.tpl:7 +#: personal/mail/generic.tpl:9 personal/mail/class_mailAccount.inc:1086 +msgid "Primary address" +msgstr "主要地址" + +#: admin/ogroups/mail/mail.tpl:13 +msgid "Primary mail address for this distribution list" +msgstr "此分配列表的主要邮件地址" + +#: admin/ogroups/mail/class_mailogroup.inc:50 +msgid "Remove mail account" +msgstr "删除邮件账号" + +#: admin/ogroups/mail/class_mailogroup.inc:51 +#: admin/ogroups/mail/class_mailogroup.inc:54 +#, fuzzy +msgid "mail group" +msgstr "显示邮件组" + +#: admin/ogroups/mail/class_mailogroup.inc:53 +msgid "Create mail account" +msgstr "创建邮件账号" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +#: admin/ogroups/mail/class_mailogroup.inc:93 +#: admin/ogroups/mail/class_mailogroup.inc:194 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: admin/groups/mail/class_groupMail.inc:840 +#: admin/groups/mail/class_groupMail.inc:971 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: personal/mail/class_mailAccount.inc:1090 +#: personal/mail/class_mailAccount.inc:1094 +#: personal/mail/class_mailAccount.inc:1105 +#: personal/mail/class_mailAccount.inc:1420 +msgid "Mail address" +msgstr "邮件地址" + +#: admin/ogroups/mail/class_mailogroup.inc:86 +msgid "your-name@your-domain.com" +msgstr "" + +#: admin/ogroups/mail/class_mailogroup.inc:120 +#: admin/ogroups/mail/class_mailogroup.inc:157 +#: admin/systems/services/imap/class_goImapServer.inc:190 +#: admin/systems/services/spam/class_goSpamServer.inc:277 +#: admin/systems/services/virus/class_goVirusServer.inc:154 +#: admin/systems/services/mail/class_goMailServer.inc:582 +#: admin/groups/mail/class_groupMail.inc:531 +#: admin/groups/mail/class_groupMail.inc:760 +#: personal/mail/class_mailAccount.inc:915 +#: personal/mail/class_mailAccount.inc:982 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/ogroups/mail/class_mailogroup.inc:186 +#: admin/ogroups/mail/paste_mail.tpl:4 +#: admin/groups/mail/class_groupMail.inc:276 +#: admin/groups/mail/class_groupMail.inc:278 +#: admin/groups/mail/class_groupMail.inc:279 +#: admin/groups/mail/class_groupMail.inc:284 +#: admin/groups/mail/class_groupMail.inc:286 +#: admin/groups/mail/class_groupMail.inc:287 +#: admin/groups/mail/class_groupMail.inc:828 +#: admin/groups/mail/class_groupMail.inc:963 +#: personal/mail/class_mailAccount.inc:50 +#: personal/mail/class_mailAccount.inc:239 +#: personal/mail/class_mailAccount.inc:247 +#: personal/mail/class_mailAccount.inc:249 +#: personal/mail/class_mailAccount.inc:254 +#: personal/mail/class_mailAccount.inc:256 +#: personal/mail/class_mailAccount.inc:1074 +#: personal/mail/class_mailAccount.inc:1264 +#: personal/mail/class_mailAccount.inc:1410 +msgid "Mail" +msgstr "邮件" + +#: admin/ogroups/mail/class_mailogroup.inc:187 +#, fuzzy +msgid "Mail group" +msgstr "显示邮件组" + +#: admin/ogroups/mail/paste_mail.tpl:7 +msgid "Please enter a mail address" +msgstr "请输入一个邮件地址" + +#: admin/systems/services/imap/class_goImapServer.inc:48 +#, fuzzy +msgid "IMAP/POP3 service" +msgstr "IMAP 服务" + +#: admin/systems/services/imap/class_goImapServer.inc:53 +#: admin/systems/services/imap/class_goImapServer.inc:212 +#, fuzzy +msgid "Repair database" +msgstr "Glpi 数据库" + +#: admin/systems/services/imap/class_goImapServer.inc:100 +#, fuzzy +msgid "IMAP/POP3 (Cyrus) service" +msgstr "POP3 服务" + +#: admin/systems/services/imap/class_goImapServer.inc:110 +#: admin/systems/services/imap/class_goImapServer.inc:214 +#: admin/systems/services/imap/goImapServer.tpl:7 +msgid "Server identifier" +msgstr "服务器标识" + +#: admin/systems/services/imap/class_goImapServer.inc:114 +#: admin/systems/services/imap/class_goImapServer.inc:116 +#: admin/systems/services/imap/class_goImapServer.inc:215 +#: admin/systems/services/imap/goImapServer.tpl:16 +msgid "Connect URL" +msgstr "连接 URL" + +#: admin/systems/services/imap/class_goImapServer.inc:120 +#: admin/systems/services/imap/class_goImapServer.inc:122 +#: admin/systems/services/imap/class_goImapServer.inc:219 +#: admin/systems/services/imap/goImapServer.tpl:43 +#, fuzzy +msgid "Sieve connect URL" +msgstr "连接 URL" + +#: admin/systems/services/imap/class_goImapServer.inc:123 +#, fuzzy, php-format +msgid "Valid options are: %s" +msgstr "邮件选项" + +#: admin/systems/services/imap/class_goImapServer.inc:127 +#: admin/systems/services/imap/class_goImapServer.inc:216 +#: admin/systems/services/imap/goImapServer.tpl:25 +msgid "Admin user" +msgstr "管理员" + +#: admin/systems/services/imap/class_goImapServer.inc:130 +#: admin/systems/services/imap/goImapServer.tpl:34 +msgid "Password" +msgstr "口令" + +#: admin/systems/services/imap/class_goImapServer.inc:199 +#: admin/systems/services/imap/class_goImapServer.inc:200 +msgid "IMAP/POP3" +msgstr "" + +#: admin/systems/services/imap/class_goImapServer.inc:200 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/imap/class_goImapServer.inc:209 +#: admin/systems/services/virus/class_goVirusServer.inc:228 +#, fuzzy +msgid "Start" +msgstr "启动" + +#: admin/systems/services/imap/class_goImapServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:229 +#: personal/mail/sieve/class_sieveManagement.inc:501 +#: personal/mail/sieve/class_sieveManagement.inc:719 +#: personal/mail/sieve/templates/object_container.tpl:30 +#: personal/mail/sieve/templates/element_stop.tpl:4 +msgid "Stop" +msgstr "停止" + +#: admin/systems/services/imap/class_goImapServer.inc:211 +#: admin/systems/services/virus/class_goVirusServer.inc:230 +#, fuzzy +msgid "Restart" +msgstr "重试" + +#: admin/systems/services/imap/class_goImapServer.inc:217 +msgid "Admin password" +msgstr "管理员口令" + +#: admin/systems/services/imap/class_goImapServer.inc:220 +#: admin/systems/services/imap/goImapServer.tpl:61 +#, fuzzy +msgid "Start IMAP service" +msgstr "IMAP 服务" + +#: admin/systems/services/imap/class_goImapServer.inc:221 +#: admin/systems/services/imap/goImapServer.tpl:70 +#, fuzzy +msgid "Start IMAP SSL service" +msgstr "IMAP/SSL 服务" + +#: admin/systems/services/imap/class_goImapServer.inc:222 +#: admin/systems/services/imap/goImapServer.tpl:79 +#, fuzzy +msgid "Start POP3 service" +msgstr "POP3 服务" + +#: admin/systems/services/imap/class_goImapServer.inc:223 +#: admin/systems/services/imap/goImapServer.tpl:88 +#, fuzzy +msgid "Start POP3 SSL service" +msgstr "POP3/SSL 服务器" + +#: admin/systems/services/imap/goImapServer.tpl:1 +#: admin/systems/services/mail/goMailServer.tpl:1 admin/groups/mail/mail.tpl:4 +#: personal/mail/generic.tpl:5 +msgid "Generic" +msgstr "通用配置" + +#: admin/systems/services/imap/goImapServer.tpl:99 +#: admin/systems/services/mail/goMailServer.tpl:204 +msgid "The server must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:101 +#: admin/systems/services/mail/goMailServer.tpl:206 +msgid "The service must be saved before you can use the status flag." +msgstr "" + +#: admin/systems/services/imap/goImapServer.tpl:104 +#: admin/systems/services/mail/goMailServer.tpl:209 +#, fuzzy +msgid "Set new status" +msgstr "系统状态" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +#, fuzzy +msgid "Set status" +msgstr "系统状态" + +#: admin/systems/services/imap/goImapServer.tpl:110 +#: admin/systems/services/mail/goMailServer.tpl:215 +msgid "Execute" +msgstr "执行" + +#: admin/systems/services/spam/goSpamServerRule.tpl:6 +msgid "Name" +msgstr "名称" + +#: admin/systems/services/spam/goSpamServerRule.tpl:14 +msgid "Rule" +msgstr "规则" + +#: admin/systems/services/spam/class_goSpamServer.inc:42 +#: admin/systems/services/spam/class_goSpamServer.inc:320 +#: admin/systems/services/spam/class_goSpamServer.inc:321 +#: admin/systems/services/spam/class_goSpamServer.inc:347 +msgid "Spamassassin" +msgstr "Spamassassin" + +#: admin/systems/services/spam/class_goSpamServer.inc:143 +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#: admin/groups/mail/class_groupMail.inc:341 +#: admin/groups/mail/class_groupMail.inc:354 +#: admin/groups/mail/class_groupMail.inc:360 +#: admin/groups/mail/class_groupMail.inc:389 +#: admin/groups/mail/class_groupMail.inc:395 +#: admin/groups/mail/class_groupMail.inc:404 +#: personal/mail/sieve/class_sieveManagement.inc:201 +#: personal/mail/sieve/class_sieveManagement.inc:206 +#: personal/mail/sieve/class_sieveManagement.inc:212 +#: personal/mail/sieve/class_sieveManagement.inc:218 +#: personal/mail/sieve/class_sieveManagement.inc:429 +#: personal/mail/sieve/class_My_Tree.inc:660 +#: personal/mail/class_mailAccount.inc:311 +#: personal/mail/class_mailAccount.inc:323 +#: personal/mail/class_mailAccount.inc:329 +#: personal/mail/class_mailAccount.inc:358 +#: personal/mail/class_mailAccount.inc:363 +#: personal/mail/class_mailAccount.inc:371 +#: addons/mailqueue/class_mailqueue.inc:110 +#: addons/mailqueue/class_mailqueue.inc:144 +#: addons/mailqueue/class_mailqueue.inc:150 +msgid "Error" +msgstr "错误" + +#: admin/systems/services/spam/class_goSpamServer.inc:216 +#, fuzzy +msgid "Trusted network" +msgstr "SMTP 授权网络" + +#: admin/systems/services/spam/class_goSpamServer.inc:287 +msgid "Score" +msgstr "" + +#: admin/systems/services/spam/class_goSpamServer.inc:329 +#: admin/systems/services/spam/goSpamServer.tpl:8 +msgid "Rewrite header" +msgstr "重写信头" + +#: admin/systems/services/spam/class_goSpamServer.inc:330 +#, fuzzy +msgid "Trusted networks" +msgstr "SMTP 授权网络" + +#: admin/systems/services/spam/class_goSpamServer.inc:331 +#: admin/systems/services/spam/goSpamServer.tpl:18 +msgid "Required score" +msgstr "需要的分数" + +#: admin/systems/services/spam/class_goSpamServer.inc:332 +#, fuzzy +msgid "Rules" +msgstr "规则" + +#: admin/systems/services/spam/class_goSpamServer.inc:334 +#: admin/systems/services/spam/goSpamServer.tpl:69 +msgid "Enable use of bayes filtering" +msgstr "启用 bayes 过滤" + +#: admin/systems/services/spam/class_goSpamServer.inc:335 +#, fuzzy +msgid "Enabled bayes auto learning" +msgstr "启用 bayes 自动学习" + +#: admin/systems/services/spam/class_goSpamServer.inc:336 +#: admin/systems/services/spam/goSpamServer.tpl:75 +msgid "Enable RBL checks" +msgstr "启用 RBL 检查" + +#: admin/systems/services/spam/class_goSpamServer.inc:337 +#: admin/systems/services/spam/goSpamServer.tpl:86 +msgid "Enable use of Razor" +msgstr "启用 Razor 的使用" + +#: admin/systems/services/spam/class_goSpamServer.inc:338 +#: admin/systems/services/spam/goSpamServer.tpl:89 +msgid "Enable use of DDC" +msgstr "启用 DDC 的使用" + +#: admin/systems/services/spam/class_goSpamServer.inc:339 +#: admin/systems/services/spam/goSpamServer.tpl:92 +#, fuzzy +msgid "Enable use of Pyzor" +msgstr "启用 Pyzer 的使用" + +#: admin/systems/services/spam/goSpamServer.tpl:22 +msgid "Select required score to tag mail as spam" +msgstr "选择将邮件标记为垃圾邮件需要的分值" + +#: admin/systems/services/spam/goSpamServer.tpl:48 +#: admin/systems/services/mail/goMailServer.tpl:73 +#: admin/systems/services/mail/goMailServer.tpl:104 +msgid "Remove" +msgstr "删除" + +#: admin/systems/services/spam/goSpamServer.tpl:72 +msgid "Enable bayes auto learning" +msgstr "启用 bayes 自动学习" + +#: admin/systems/services/virus/class_goVirusServer.inc:45 +#: admin/systems/services/virus/class_goVirusServer.inc:210 +#: admin/systems/services/virus/class_goVirusServer.inc:219 +#: admin/systems/services/virus/class_goVirusServer.inc:220 +msgid "Anti virus" +msgstr "反病毒" + +#: admin/systems/services/virus/class_goVirusServer.inc:163 +#: admin/systems/services/virus/class_goVirusServer.inc:238 +msgid "Maximum directory recursions" +msgstr "最大目录递归" + +#: admin/systems/services/virus/class_goVirusServer.inc:164 +#: admin/systems/services/virus/class_goVirusServer.inc:237 +#: admin/systems/services/virus/goVirusServer.tpl:43 +msgid "Maximum threads" +msgstr "最大线程数" + +#: admin/systems/services/virus/class_goVirusServer.inc:165 +#: admin/systems/services/virus/class_goVirusServer.inc:240 +#: admin/systems/services/virus/goVirusServer.tpl:134 +msgid "Maximum file size" +msgstr "最大文件大小" + +#: admin/systems/services/virus/class_goVirusServer.inc:166 +#: admin/systems/services/virus/class_goVirusServer.inc:241 +msgid "Maximum recursions" +msgstr "最大递归数" + +#: admin/systems/services/virus/class_goVirusServer.inc:167 +#: admin/systems/services/virus/class_goVirusServer.inc:242 +#: admin/systems/services/virus/goVirusServer.tpl:152 +msgid "Maximum compression ratio" +msgstr "最大压缩率" + +#: admin/systems/services/virus/class_goVirusServer.inc:168 +#: admin/systems/services/virus/class_goVirusServer.inc:244 +#: admin/systems/services/virus/goVirusServer.tpl:71 +msgid "Checks per day" +msgstr "每天检查次数" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/goVirusServer.tpl:13 +msgid "Database user" +msgstr "数据库用户" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:245 +#: admin/systems/services/virus/goVirusServer.tpl:33 +msgid "Http proxy URL" +msgstr "Http 代理 URL" + +#: admin/systems/services/virus/class_goVirusServer.inc:176 +#: admin/systems/services/virus/class_goVirusServer.inc:243 +#: admin/systems/services/virus/goVirusServer.tpl:23 +msgid "Database mirror" +msgstr "数据库镜像" + +#: admin/systems/services/virus/class_goVirusServer.inc:232 +#: admin/systems/services/virus/goVirusServer.tpl:84 +msgid "Enable debugging" +msgstr "启用 debug" + +#: admin/systems/services/virus/class_goVirusServer.inc:233 +#: admin/systems/services/virus/goVirusServer.tpl:92 +msgid "Enable mail scanning" +msgstr "启用邮件扫描" + +#: admin/systems/services/virus/class_goVirusServer.inc:234 +#: admin/systems/services/virus/goVirusServer.tpl:117 +msgid "Enable scanning of archives" +msgstr "启用归档扫描" + +#: admin/systems/services/virus/class_goVirusServer.inc:235 +#: admin/systems/services/virus/goVirusServer.tpl:125 +msgid "Block encrypted archives" +msgstr "封锁加密归档" + +#: admin/systems/services/virus/class_goVirusServer.inc:239 +#, fuzzy +msgid "Anti virus user" +msgstr "反病毒" + +#: admin/systems/services/virus/goVirusServer.tpl:5 +msgid "Generic virus filtering" +msgstr "通用病毒过滤" + +#: admin/systems/services/virus/goVirusServer.tpl:47 +msgid "Select number of maximal threads" +msgstr "选择最大线程数" + +#: admin/systems/services/virus/goVirusServer.tpl:61 +msgid "Max directory recursions" +msgstr "最大目录递归" + +#: admin/systems/services/virus/goVirusServer.tpl:101 +msgid "Archive scanning" +msgstr "文档扫描" + +#: admin/systems/services/virus/goVirusServer.tpl:143 +msgid "Maximum recursion" +msgstr "最大递归" + +#: admin/systems/services/mail/class_goMailServer.inc:45 +#: admin/systems/services/mail/class_goMailServer.inc:512 +msgid "Mail smtp service (Postfix)" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:600 +#: admin/systems/services/mail/class_goMailServer.inc:711 +msgid "Header size limit" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:603 +#, fuzzy +msgid "Mailbox size limit" +msgstr "邮件大小" + +#: admin/systems/services/mail/class_goMailServer.inc:606 +#, fuzzy +msgid "Message size limit" +msgstr "信息" + +#: admin/systems/services/mail/class_goMailServer.inc:700 +msgid "Mail smtp (Postfix)" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:701 +msgid "Mail smtp - Postfix" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:709 +#: admin/systems/services/mail/goMailServer.tpl:7 +msgid "Visible full qualified hostname" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:710 +msgid "Description" +msgstr "描述" + +#: admin/systems/services/mail/class_goMailServer.inc:712 +#: admin/systems/services/mail/goMailServer.tpl:26 +#, fuzzy +msgid "Max mailbox size" +msgstr "邮件大小" + +#: admin/systems/services/mail/class_goMailServer.inc:713 +#: admin/systems/services/mail/goMailServer.tpl:35 +#, fuzzy +msgid "Max message size" +msgstr "信息" + +#: admin/systems/services/mail/class_goMailServer.inc:714 +#: admin/systems/services/mail/goMailServer.tpl:91 +msgid "Domains to accept mail for" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:715 +#: admin/systems/services/mail/goMailServer.tpl:60 +msgid "Local networks" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:716 +#: admin/systems/services/mail/goMailServer.tpl:45 +#, fuzzy +msgid "Relay host" +msgstr "重新加载列表" + +#: admin/systems/services/mail/class_goMailServer.inc:717 +#, fuzzy +msgid "Transport table" +msgstr "传送时间" + +#: admin/systems/services/mail/class_goMailServer.inc:718 +#: admin/systems/services/mail/goMailServer.tpl:149 +msgid "Restrictions for sender" +msgstr "" + +#: admin/systems/services/mail/class_goMailServer.inc:719 +#: admin/systems/services/mail/goMailServer.tpl:175 +msgid "Restrictions for recipient" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:11 +msgid "The full qualified host name." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:16 +#, fuzzy +msgid "Max mail header size" +msgstr "最大文件大小" + +#: admin/systems/services/mail/goMailServer.tpl:21 +#, fuzzy +msgid "This value specifies the maximal header size." +msgstr "指定为“名称”的值已经在使用了。" + +#: admin/systems/services/mail/goMailServer.tpl:21 +#: admin/systems/services/mail/goMailServer.tpl:31 +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "KB" +msgstr "KB" + +#: admin/systems/services/mail/goMailServer.tpl:31 +msgid "Defines the maximal size of mail box." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:40 +msgid "Specify the maximal size of a message." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:50 +msgid "Relay messages to following host:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:62 +#, fuzzy +msgid "Postfix networks" +msgstr "Posix 设置" + +#: admin/systems/services/mail/goMailServer.tpl:83 +#, fuzzy +msgid "Domains and routing" +msgstr "域管理员" + +#: admin/systems/services/mail/goMailServer.tpl:93 +msgid "Postfix is responsible for the following domains:" +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:114 +#, fuzzy +msgid "Transports" +msgstr "传送时间" + +#: admin/systems/services/mail/goMailServer.tpl:123 +msgid "Select a transport protocol." +msgstr "" + +#: admin/systems/services/mail/goMailServer.tpl:141 +#, fuzzy +msgid "Restrictions" +msgstr "节" + +#: admin/systems/services/mail/goMailServer.tpl:157 +#: admin/systems/services/mail/goMailServer.tpl:183 +msgid "Restriction filter" +msgstr "" + +#: admin/groups/mail/mail.tpl:35 personal/mail/generic.tpl:30 +#: addons/mailqueue/contents.tpl:73 +msgid "Server" +msgstr "服务器" + +#: admin/groups/mail/mail.tpl:42 personal/mail/generic.tpl:37 +msgid "Specify the mail server where the user will be hosted on" +msgstr "描述该用户账号所要创建于的邮件服务器" + +#: admin/groups/mail/mail.tpl:56 personal/mail/generic.tpl:53 +msgid "Quota usage" +msgstr "使用 Quota" + +#: admin/groups/mail/mail.tpl:60 admin/groups/mail/class_groupMail.inc:847 +#: admin/groups/mail/class_groupMail.inc:972 personal/mail/generic.tpl:57 +#: personal/mail/class_mailAccount.inc:1113 +#: personal/mail/class_mailAccount.inc:1270 +#: personal/mail/class_mailAccount.inc:1422 +msgid "Quota size" +msgstr "Quota 大小" + +#: admin/groups/mail/mail.tpl:73 admin/groups/mail/class_groupMail.inc:974 +#, fuzzy +msgid "Folder type" +msgstr "过滤器" + +#: admin/groups/mail/mail.tpl:91 +#, fuzzy +msgid "Reload" +msgstr "读" + +#: admin/groups/mail/mail.tpl:102 admin/groups/mail/paste_mail.tpl:23 +#: personal/mail/copypaste.tpl:25 personal/mail/generic.tpl:73 +msgid "Alternative addresses" +msgstr "替代地址" + +#: admin/groups/mail/mail.tpl:107 admin/groups/mail/paste_mail.tpl:24 +#: personal/mail/copypaste.tpl:55 personal/mail/generic.tpl:76 +msgid "List of alternative mail addresses" +msgstr "替代邮件地址列表" + +#: admin/groups/mail/mail.tpl:136 +msgid "IMAP shared folders" +msgstr "IMAP 共享目录" + +#: admin/groups/mail/mail.tpl:143 +msgid "Default permission" +msgstr "缺省权限" + +#: admin/groups/mail/mail.tpl:145 +msgid "Member permission" +msgstr "成员权限" + +#: admin/groups/mail/mail.tpl:163 +#, fuzzy +msgid "Hide" +msgstr "邮件头" + +#: admin/groups/mail/mail.tpl:165 +#, fuzzy +msgid "Show" +msgstr "显示组" + +#: admin/groups/mail/mail.tpl:187 personal/mail/generic.tpl:303 +msgid "Advanced mail options" +msgstr "高级邮件选项" + +#: admin/groups/mail/mail.tpl:193 personal/mail/generic.tpl:309 +msgid "Select if user can only send and receive inside his own domain" +msgstr "选择如果用户只能发送和接收本域内邮件" + +#: admin/groups/mail/mail.tpl:195 personal/mail/generic.tpl:311 +msgid "User is only allowed to send and receive local mails" +msgstr "用户只能发送和接收本地邮件" + +#: admin/groups/mail/mail.tpl:204 admin/groups/mail/paste_mail.tpl:34 +msgid "Forward messages to non group members" +msgstr "转发邮件到非组成员" + +#: admin/groups/mail/mail.tpl:213 +#, fuzzy +msgid "Used in all groups" +msgstr "请输入一个组。" + +#: admin/groups/mail/mail.tpl:216 +#, fuzzy +msgid "Not used in all groups" +msgstr "显示实用组" + +#: admin/groups/mail/mail.tpl:234 admin/groups/mail/paste_mail.tpl:42 +#: personal/mail/copypaste.tpl:44 personal/mail/generic.tpl:290 +#: personal/mail/generic.tpl:293 +msgid "Add local" +msgstr "添加本地" + +#: admin/groups/mail/paste_mail.tpl:1 personal/mail/copypaste.tpl:1 +#: personal/mail/class_mailAccount.inc:1411 +msgid "Mail settings" +msgstr "邮件选项" + +#: admin/groups/mail/paste_mail.tpl:12 +msgid "Primary mail address for this shared folder" +msgstr "此共享目录的主要邮件地址" + +#: admin/groups/mail/mail_locals.tpl:6 personal/mail/mail_locals.tpl:7 +msgid "Select addresses to add" +msgstr "选择地址添加" + +#: admin/groups/mail/mail_locals.tpl:22 personal/mail/mail_locals.tpl:25 +msgid "Filters" +msgstr "过滤器" + +#: admin/groups/mail/mail_locals.tpl:32 +msgid "Display addresses of department" +msgstr "显示部门地址" + +#: admin/groups/mail/mail_locals.tpl:33 personal/mail/mail_locals.tpl:38 +msgid "Choose the department the search will be based on" +msgstr "选择一个部门来做查询" + +#: admin/groups/mail/mail_locals.tpl:42 +msgid "Display addresses matching" +msgstr "显示匹配地址" + +#: admin/groups/mail/mail_locals.tpl:45 personal/mail/mail_locals.tpl:52 +msgid "Regular expression for matching addresses" +msgstr "匹配地址的正则表达式" + +#: admin/groups/mail/mail_locals.tpl:52 personal/mail/mail_locals.tpl:60 +msgid "Display addresses of user" +msgstr "显示用户地址" + +#: admin/groups/mail/mail_locals.tpl:55 personal/mail/mail_locals.tpl:64 +msgid "User name of which addresses are shown" +msgstr "显示属于该地址的用户" + +#: admin/groups/mail/mail_admins.tpl:4 +msgid "Folder administrators" +msgstr "目录管理员" + +#: admin/groups/mail/mail_admins.tpl:24 +msgid "Select a specific department" +msgstr "选择一个特定的部门" + +#: admin/groups/mail/mail_admins.tpl:30 +msgid "Choose" +msgstr "选择" + +#: admin/groups/mail/class_groupMail.inc:111 +#: admin/groups/mail/class_groupMail.inc:118 +#: admin/groups/mail/class_groupMail.inc:125 +#: admin/groups/mail/class_groupMail.inc:132 +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:140 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:547 +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:773 +#: admin/groups/mail/class_groupMail.inc:777 +#: admin/groups/mail/class_groupMail.inc:781 +#: admin/groups/mail/class_groupMail.inc:790 +#: personal/mail/class_mailAccount.inc:147 +#: personal/mail/class_mailAccount.inc:154 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:162 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:928 +#: personal/mail/class_mailAccount.inc:996 +#: personal/mail/class_mailAccount.inc:1000 +#: personal/mail/class_mailAccount.inc:1004 +#: personal/mail/class_mailAccount.inc:1018 +#, fuzzy +msgid "Mail error" +msgstr "邮件服务器" + +#: admin/groups/mail/class_groupMail.inc:111 +#: personal/mail/class_mailAccount.inc:147 +#, fuzzy, php-format +msgid "Cannot read quota settings: %s" +msgstr "无法创建文件 '%s'。" + +#: admin/groups/mail/class_groupMail.inc:118 +#: personal/mail/class_mailAccount.inc:154 +#, fuzzy, php-format +msgid "Cannot get list of mailboxes: %s" +msgstr "无法删除 IMAP 邮箱。服务器返回 '%s'。" + +#: admin/groups/mail/class_groupMail.inc:125 +#, fuzzy, php-format +msgid "Cannot receive folder types: %s" +msgstr "IMAP 共享目录" + +#: admin/groups/mail/class_groupMail.inc:132 +#, fuzzy, php-format +msgid "Cannot receive folder permissions: %s" +msgstr "IMAP 共享目录" + +#: admin/groups/mail/class_groupMail.inc:137 +#: admin/groups/mail/class_groupMail.inc:543 +#: admin/groups/mail/class_groupMail.inc:773 +#: personal/mail/class_mailAccount.inc:159 +#: personal/mail/class_mailAccount.inc:924 +#: personal/mail/class_mailAccount.inc:996 +#, php-format +msgid "Mail method cannot connect: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:140 +#: personal/mail/class_mailAccount.inc:162 +#, php-format +msgid "Mailbox '%s' doesn't exists on mail server: %s" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:297 +msgid "" +"Remove shared folder from mail server database when entry gets removed in " +"LDAP" +msgstr "当条目从 LDAP 中删除后,从邮件服务器数据库中删除共享目录" + +#: admin/groups/mail/class_groupMail.inc:298 +msgid "Remove the shared folder and all its contents after saving this account" +msgstr "在保存完毕该账号后,删除共享目录和其中所有内容" + +#: admin/groups/mail/class_groupMail.inc:341 +#: personal/mail/class_mailAccount.inc:311 +#, fuzzy +msgid "Please select an entry!" +msgstr "请选择一个有效的邮件服务器。" + +#: admin/groups/mail/class_groupMail.inc:360 +#: personal/mail/class_mailAccount.inc:329 +#, fuzzy +msgid "Cannot add primary address to the list of forwarders!" +msgstr "您正在尝试向转发列表添加一条无效邮件地址。" + +#: admin/groups/mail/class_groupMail.inc:405 +#: personal/mail/class_mailAccount.inc:372 +#, fuzzy, php-format +msgid "Address is already in use by user '%s'." +msgstr "您正在添加的地址已经被用户使用" + +#: admin/groups/mail/class_groupMail.inc:547 +#: personal/mail/class_mailAccount.inc:928 +#, fuzzy, php-format +msgid "Cannot remove mailbox: %s" +msgstr "无法删除 IMAP 邮箱。服务器返回 '%s'。" + +#: admin/groups/mail/class_groupMail.inc:551 +#: admin/groups/mail/class_groupMail.inc:790 +#, fuzzy, php-format +msgid "Cannot update shared folder permissions: %s" +msgstr "IMAP 共享目录" + +#: admin/groups/mail/class_groupMail.inc:649 +#, fuzzy +msgid "New" +msgstr "添加用户" + +#: admin/groups/mail/class_groupMail.inc:777 +#: personal/mail/class_mailAccount.inc:1000 +#, fuzzy, php-format +msgid "Cannot update mailbox: %s" +msgstr "无法创建 IMAP 邮箱。服务器返回 '%s'。" + +#: admin/groups/mail/class_groupMail.inc:781 +#: personal/mail/class_mailAccount.inc:1004 +#, fuzzy, php-format +msgid "Cannot write quota settings: %s" +msgstr "无法创建文件 '%s'。" + +#: admin/groups/mail/class_groupMail.inc:822 +#, php-format +msgid "" +"The group 'cn' has changed. It can't be changed due to the fact that mail " +"method '%s' relies on it!" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:856 +#: personal/mail/class_mailAccount.inc:1434 +#, fuzzy +msgid "Mail max size" +msgstr "邮件大小" + +#: admin/groups/mail/class_groupMail.inc:864 +msgid "You need to set the maximum mail size in order to reject anything." +msgstr "为了退信,您需要设定最大的邮件大小。" + +#: admin/groups/mail/class_groupMail.inc:868 +#: admin/groups/mail/class_groupMail.inc:973 +#: personal/mail/class_mailAccount.inc:1421 +msgid "Mail server" +msgstr "邮件服务器" + +#: admin/groups/mail/class_groupMail.inc:964 +#, fuzzy +msgid "Group mail" +msgstr "组名" + +#: admin/groups/mail/class_groupMail.inc:974 +msgid "Kolab" +msgstr "" + +#: admin/groups/mail/class_groupMail.inc:975 +#, fuzzy +msgid "Alternate addresses" +msgstr "替代地址" + +#: admin/groups/mail/class_groupMail.inc:976 +#, fuzzy +msgid "Forwarding addresses" +msgstr "转发邮件到" + +#: admin/groups/mail/class_groupMail.inc:977 +#, fuzzy +msgid "Only local" +msgstr "添加本地" + +#: admin/groups/mail/class_groupMail.inc:978 +msgid "Permissions" +msgstr "允许" + +#: personal/mail/copypaste.tpl:13 personal/mail/generic.tpl:267 +msgid "Forward messages to" +msgstr "转发邮件到" + +#: personal/mail/generic.tpl:115 personal/mail/class_mailAccount.inc:1442 +msgid "Use custom sieve script" +msgstr "定制过滤脚本" + +#: personal/mail/generic.tpl:115 +msgid "disables all Mail options!" +msgstr "禁用所有邮件选项!" + +#: personal/mail/generic.tpl:123 +#, fuzzy +msgid "Sieve Management" +msgstr "管理" + +#: personal/mail/generic.tpl:144 +msgid "Select if you want to forward mails without getting own copies of them" +msgstr "如果您想转发邮件而且不想保留拷贝的话,请选择" + +#: personal/mail/generic.tpl:144 +msgid "No delivery to own mailbox" +msgstr "不要发送到本人邮箱" + +#: personal/mail/generic.tpl:151 +msgid "" +"Select to automatically response with the vacation message defined below" +msgstr "选择用下面定义的假期信息作为自动回复" + +#: personal/mail/generic.tpl:153 +msgid "Activate vacation message" +msgstr "启用假期信息" + +#: personal/mail/generic.tpl:161 +msgid "from" +msgstr "从" + +#: personal/mail/generic.tpl:185 +msgid "till" +msgstr "至" + +#: personal/mail/generic.tpl:214 +msgid "Select if you want to filter this mails through spamassassin" +msgstr "选择用 spamassassin 过滤邮件" + +#: personal/mail/generic.tpl:216 +msgid "Move mails tagged with spam level greater than" +msgstr "过滤邮件当 spam 级别超过" + +#: personal/mail/generic.tpl:219 +#, fuzzy +msgid "Choose spam level - smaller values are more sensitive" +msgstr "选择 spam 级别 ─ 越小越敏感" + +#: personal/mail/generic.tpl:223 +msgid "to folder" +msgstr "到目录" + +#: personal/mail/generic.tpl:235 +msgid "Reject mails bigger than" +msgstr "拒绝邮件大小超过" + +#: personal/mail/generic.tpl:238 +msgid "MB" +msgstr "MB" + +#: personal/mail/generic.tpl:245 +#: personal/mail/sieve/class_sieveManagement.inc:502 +#: personal/mail/sieve/class_sieveManagement.inc:720 +#: personal/mail/sieve/templates/element_vacation.tpl:44 +#: personal/mail/sieve/templates/object_container.tpl:31 +#: personal/mail/class_mailAccount.inc:1425 +msgid "Vacation message" +msgstr "假期信息" + +#: personal/mail/generic.tpl:261 +#: personal/mail/sieve/templates/import_script.tpl:12 +#: personal/mail/sieve/templates/edit_frame_base.tpl:7 +msgid "Import" +msgstr "导入" + +#: personal/mail/mail_locals.tpl:35 +msgid "Select department" +msgstr "选择类别" + +#: personal/mail/sieve/class_sieveElement_Vacation.inc:148 +msgid "Alternative sender address must be a valid email addresses." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:114 +#: personal/mail/sieve/class_sieveManagement.inc:242 +#, fuzzy +msgid "Parse failed" +msgstr "失败" + +#: personal/mail/sieve/class_sieveManagement.inc:118 +#: personal/mail/sieve/class_sieveManagement.inc:246 +#, fuzzy +msgid "Parse successful" +msgstr "导入成功" + +#: personal/mail/sieve/class_sieveManagement.inc:156 +#, php-format +msgid "" +"The specified mail server '%s' does not exist within the GOsa configuration." +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:201 +msgid "No script name specified!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:206 +#, fuzzy +msgid "Please use only lowercase script names!" +msgstr "请提供一个有效的脚本名。" + +#: personal/mail/sieve/class_sieveManagement.inc:212 +#, fuzzy +msgid "Please use only alphabetical characters in script names!" +msgstr "数字字段只允许填数字。" + +#: personal/mail/sieve/class_sieveManagement.inc:218 +#, fuzzy +msgid "Script name already in use!" +msgstr "该名称已经被使用。" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:349 +#: personal/mail/sieve/class_sieveManagement.inc:398 +#: personal/mail/sieve/class_sieveManagement.inc:402 +#: personal/mail/sieve/class_sieveManagement.inc:433 +#: personal/mail/sieve/class_sieveManagement.inc:519 +#: personal/mail/sieve/class_sieveManagement.inc:770 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#, fuzzy +msgid "SIEVE error" +msgstr "错误" + +#: personal/mail/sieve/class_sieveManagement.inc:302 +#: personal/mail/sieve/class_sieveManagement.inc:345 +#: personal/mail/sieve/class_sieveManagement.inc:1030 +#, fuzzy, php-format +msgid "Cannot log into SIEVE server: %s" +msgstr "无法登录到 SIEVE 服务器。服务器返回 '%s'。" + +#: personal/mail/sieve/class_sieveManagement.inc:309 +#: personal/mail/class_mail-methods-cyrus.inc:468 +#, php-format +msgid "Cannot retrieve SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:349 +#, php-format +msgid "Cannot remove SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:395 +#, fuzzy +msgid "Edited" +msgstr "编辑" + +#: personal/mail/sieve/class_sieveManagement.inc:429 +msgid "Uploaded script is empty!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy +msgid "Internal error" +msgstr "终端服务器" + +#: personal/mail/sieve/class_sieveManagement.inc:431 +#, fuzzy, php-format +msgid "Cannot access temporary file '%s'!" +msgstr "无法创建文件 '%s'。" + +#: personal/mail/sieve/class_sieveManagement.inc:433 +#, fuzzy, php-format +msgid "Cannot open temporary file '%s'!" +msgstr "无法打开文件 '%s'。" + +#: personal/mail/sieve/class_sieveManagement.inc:493 +#: personal/mail/sieve/class_sieveManagement.inc:496 +#: personal/mail/sieve/class_sieveManagement.inc:711 +#: personal/mail/sieve/class_sieveManagement.inc:714 +#: personal/mail/sieve/templates/element_keep.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:22 +#: personal/mail/sieve/templates/object_container.tpl:25 +msgid "Keep" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:494 +#: personal/mail/sieve/class_sieveManagement.inc:712 +#: personal/mail/sieve/templates/element_comment.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:23 +msgid "Comment" +msgstr "注释" + +#: personal/mail/sieve/class_sieveManagement.inc:495 +#: personal/mail/sieve/class_sieveManagement.inc:713 +#, fuzzy +msgid "File into" +msgstr "文件" + +#: personal/mail/sieve/class_sieveManagement.inc:497 +#: personal/mail/sieve/class_sieveManagement.inc:715 +#: personal/mail/sieve/templates/element_discard.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:26 +#, fuzzy +msgid "Discard" +msgstr "Discs" + +#: personal/mail/sieve/class_sieveManagement.inc:498 +#: personal/mail/sieve/class_sieveManagement.inc:716 +#: personal/mail/sieve/templates/element_redirect.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:27 +#, fuzzy +msgid "Redirect" +msgstr "直接" + +#: personal/mail/sieve/class_sieveManagement.inc:499 +#: personal/mail/sieve/class_sieveManagement.inc:717 +#: personal/mail/sieve/templates/object_container.tpl:28 +#, fuzzy +msgid "Reject" +msgstr "对象" + +#: personal/mail/sieve/class_sieveManagement.inc:500 +#: personal/mail/sieve/class_sieveManagement.inc:718 +#: personal/mail/sieve/templates/object_container.tpl:29 +#: personal/mail/sieve/templates/element_require.tpl:12 +#, fuzzy +msgid "Require" +msgstr "需要的分数" + +#: personal/mail/sieve/class_sieveManagement.inc:503 +#: personal/mail/sieve/class_sieveManagement.inc:721 +#: personal/mail/sieve/templates/object_container.tpl:32 +#: personal/mail/sieve/class_sieveElement_If.inc:836 +msgid "If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:519 +msgid "Cannot add new element!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:562 +#: personal/mail/sieve/class_sieveManagement.inc:756 +#: personal/mail/sieve/templates/element_else.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:33 +#: personal/mail/sieve/class_sieveElement_If.inc:840 +#, fuzzy +msgid "Else" +msgstr "假" + +#: personal/mail/sieve/class_sieveManagement.inc:564 +#: personal/mail/sieve/class_sieveManagement.inc:758 +#: personal/mail/sieve/class_sieveManagement.inc:763 +#: personal/mail/sieve/templates/element_elsif.tpl:4 +#: personal/mail/sieve/templates/object_container.tpl:34 +#: personal/mail/sieve/class_sieveElement_If.inc:838 +msgid "Else If" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:589 +#: personal/mail/sieve/templates/element_address.tpl:15 +#: personal/mail/sieve/templates/element_address.tpl:113 +msgid "Address" +msgstr "住址" + +#: personal/mail/sieve/class_sieveManagement.inc:590 +#: personal/mail/sieve/templates/element_header.tpl:16 +#: personal/mail/sieve/templates/element_header.tpl:106 +#, fuzzy +msgid "Header" +msgstr "邮件头" + +#: personal/mail/sieve/class_sieveManagement.inc:591 +#: personal/mail/sieve/templates/element_envelope.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:105 +msgid "Envelope" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:592 +#: personal/mail/sieve/templates/element_size.tpl:4 +#: addons/mailqueue/contents.tpl:74 +msgid "Size" +msgstr "大小" + +#: personal/mail/sieve/class_sieveManagement.inc:593 +#: personal/mail/sieve/templates/element_exists.tpl:8 +#, fuzzy +msgid "Exists" +msgstr "现存" + +#: personal/mail/sieve/class_sieveManagement.inc:594 +#: personal/mail/sieve/templates/element_allof.tpl:10 +#, fuzzy +msgid "All of" +msgstr "全部" + +#: personal/mail/sieve/class_sieveManagement.inc:595 +#: personal/mail/sieve/templates/element_anyof.tpl:10 +msgid "Any of" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:596 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "True" +msgstr "真" + +#: personal/mail/sieve/class_sieveManagement.inc:597 +#: personal/mail/sieve/class_sieveElement_If.inc:915 +msgid "False" +msgstr "假" + +#: personal/mail/sieve/class_sieveManagement.inc:634 +#: addons/mailqueue/class_mailqueue.inc:321 addons/mailqueue/contents.tpl:93 +msgid "Active" +msgstr "活动" + +#: personal/mail/sieve/class_sieveManagement.inc:635 +msgid "This script is marked as active" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:640 +#, fuzzy +msgid "Script length" +msgstr "脚本路径" + +#: personal/mail/sieve/class_sieveManagement.inc:644 +#, fuzzy +msgid "Remove script" +msgstr "导入脚本" + +#: personal/mail/sieve/class_sieveManagement.inc:653 +#, fuzzy +msgid "Activate script" +msgstr "最后脚本" + +#: personal/mail/sieve/class_sieveManagement.inc:657 +#, fuzzy +msgid "Edit script" +msgstr "最后脚本" + +#: personal/mail/sieve/class_sieveManagement.inc:672 +#, php-format +msgid "Can't log into SIEVE server. Server says '%s'." +msgstr "无法登录到 SIEVE 服务器。服务器返回 '%s'。" + +#: personal/mail/sieve/class_sieveManagement.inc:770 +msgid "Cannot insert element at the requested position!" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1043 +#: personal/mail/class_mail-methods-cyrus.inc:556 +#, php-format +msgid "Cannot store SIEVE script: %s" +msgstr "" + +#: personal/mail/sieve/class_sieveManagement.inc:1045 +#, fuzzy +msgid "Failed to save sieve script" +msgstr "定制过滤脚本" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:24 +#, fuzzy +msgid "Please specify a valid email address." +msgstr "请输入一个有效的 iSerial。" + +#: personal/mail/sieve/class_sieveElement_Redirect.inc:35 +#, fuzzy +msgid "Place a mail address here" +msgstr "请输入一个邮件地址" + +#: personal/mail/sieve/class_sieveElement_Comment.inc:21 +msgid "Your comment here" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:1 +msgid "Add a new element" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:2 +msgid "Please select the type of element you want to add" +msgstr "" + +#: personal/mail/sieve/templates/add_element.tpl:11 +#: personal/mail/sieve/templates/select_test_type.tpl:11 +msgid "Continue" +msgstr "继续" + +#: personal/mail/sieve/templates/add_element.tpl:13 +#, fuzzy +msgid "Abort" +msgstr "端口" + +#: personal/mail/sieve/templates/element_discard.tpl:9 +#, fuzzy +msgid "Discard message" +msgstr "挂起邮件" + +#: personal/mail/sieve/templates/element_if.tpl:4 +#: personal/mail/sieve/class_sieveElement_If.inc:834 +#, fuzzy +msgid "Condition" +msgstr "连接" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_address.tpl:116 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_header.tpl:109 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_envelope.tpl:108 +#, fuzzy +msgid "Not" +msgstr "否" + +#: personal/mail/sieve/templates/element_anyof.tpl:5 +#: personal/mail/sieve/templates/element_anyof.tpl:7 +#: personal/mail/sieve/templates/element_allof.tpl:5 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_exists.tpl:10 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:11 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "Inverse match" +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:1 +#, fuzzy +msgid "Import sieve script" +msgstr "导入脚本" + +#: personal/mail/sieve/templates/import_script.tpl:2 +msgid "" +"Please select the sieve script you want to import. Use the import button to " +"import the script or the cancel button to abort." +msgstr "" + +#: personal/mail/sieve/templates/import_script.tpl:5 +#, fuzzy +msgid "Script to import" +msgstr "脚本路径" + +#: personal/mail/sieve/templates/element_address.tpl:18 +#: personal/mail/sieve/templates/element_header.tpl:19 +#: personal/mail/sieve/templates/element_vacation.tpl:16 +#: personal/mail/sieve/templates/element_envelope.tpl:19 +msgid "Normal view" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:25 +#: personal/mail/sieve/templates/element_header.tpl:26 +#: personal/mail/sieve/templates/element_envelope.tpl:26 +#, fuzzy +msgid "Match type" +msgstr "认证类型" + +#: personal/mail/sieve/templates/element_address.tpl:28 +#: personal/mail/sieve/templates/element_address.tpl:51 +#: personal/mail/sieve/templates/element_address.tpl:61 +#: personal/mail/sieve/templates/element_address.tpl:72 +#: personal/mail/sieve/templates/element_address.tpl:121 +#: personal/mail/sieve/templates/element_address.tpl:126 +#: personal/mail/sieve/templates/element_header.tpl:29 +#: personal/mail/sieve/templates/element_header.tpl:52 +#: personal/mail/sieve/templates/element_header.tpl:63 +#: personal/mail/sieve/templates/element_header.tpl:114 +#: personal/mail/sieve/templates/element_header.tpl:119 +#: personal/mail/sieve/templates/element_boolean.tpl:5 +#: personal/mail/sieve/templates/element_envelope.tpl:29 +#: personal/mail/sieve/templates/element_envelope.tpl:52 +#: personal/mail/sieve/templates/element_envelope.tpl:63 +#: personal/mail/sieve/templates/element_envelope.tpl:113 +#: personal/mail/sieve/templates/element_envelope.tpl:118 +#, fuzzy +msgid "Boolean value" +msgstr "缺省值" + +#: personal/mail/sieve/templates/element_address.tpl:36 +#: personal/mail/sieve/templates/element_header.tpl:37 +#: personal/mail/sieve/templates/element_envelope.tpl:37 +#, fuzzy +msgid "Invert test" +msgstr "内存测试" + +#: personal/mail/sieve/templates/element_address.tpl:40 +#: personal/mail/sieve/templates/element_header.tpl:41 +#: personal/mail/sieve/templates/element_envelope.tpl:41 +msgid "Yes" +msgstr "是" + +#: personal/mail/sieve/templates/element_address.tpl:42 +#: personal/mail/sieve/templates/element_header.tpl:43 +#: personal/mail/sieve/templates/element_envelope.tpl:43 +msgid "No" +msgstr "否" + +#: personal/mail/sieve/templates/element_address.tpl:48 +msgid "Part of address that should be used" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:58 +#: personal/mail/sieve/templates/element_header.tpl:49 +#: personal/mail/sieve/templates/element_envelope.tpl:49 +#, fuzzy +msgid "Comparator" +msgstr "计算机" + +#: personal/mail/sieve/templates/element_address.tpl:69 +#: personal/mail/sieve/templates/element_envelope.tpl:60 +msgid "Operator" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:85 +#: personal/mail/sieve/templates/element_header.tpl:77 +#: personal/mail/sieve/templates/element_envelope.tpl:76 +msgid "Address fields to include" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:89 +#: personal/mail/sieve/templates/element_header.tpl:81 +#: personal/mail/sieve/templates/element_envelope.tpl:80 +msgid "Values to match for" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:118 +#: personal/mail/sieve/templates/element_allof.tpl:7 +#: personal/mail/sieve/templates/element_header.tpl:111 +#: personal/mail/sieve/templates/element_exists.tpl:12 +#: personal/mail/sieve/templates/element_size.tpl:13 +#: personal/mail/sieve/templates/element_envelope.tpl:110 +msgid "-" +msgstr "" + +#: personal/mail/sieve/templates/element_address.tpl:138 +#: personal/mail/sieve/templates/element_header.tpl:131 +#: personal/mail/sieve/templates/element_vacation.tpl:47 +#: personal/mail/sieve/templates/element_envelope.tpl:130 +msgid "Expert view" +msgstr "" + +#: personal/mail/sieve/templates/element_fileinto.tpl:4 +#, fuzzy +msgid "Move mail into folder" +msgstr "到目录" + +#: personal/mail/sieve/templates/element_fileinto.tpl:8 +#, fuzzy +msgid "Select from list" +msgstr "选择模板" + +#: personal/mail/sieve/templates/element_fileinto.tpl:10 +#, fuzzy +msgid "Manual selection" +msgstr "邮件选项" + +#: personal/mail/sieve/templates/element_fileinto.tpl:18 +#, fuzzy +msgid "Folder" +msgstr "过滤器" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +msgid "Move this object up one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:8 +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Up" +msgstr "上" + +#: personal/mail/sieve/templates/object_container_clear.tpl:9 +#: personal/mail/sieve/templates/object_container.tpl:9 +msgid "Move up" +msgstr "向上移动" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +msgid "Move this object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container_clear.tpl:12 +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Down" +msgstr "关闭" + +#: personal/mail/sieve/templates/object_container_clear.tpl:13 +#: personal/mail/sieve/templates/object_container.tpl:13 +msgid "Move down" +msgstr "向下移动" + +#: personal/mail/sieve/templates/object_container_clear.tpl:16 +#, fuzzy +msgid "Remove this object" +msgstr "删除电话账号" + +#: personal/mail/sieve/templates/object_container_clear.tpl:17 +#: personal/mail/sieve/templates/object_container.tpl:17 +#, fuzzy +msgid "Remove element" +msgstr "删除记录" + +#: personal/mail/sieve/templates/create_script.tpl:2 +msgid "" +"Please enter the name for the new script below. Script names must consist of " +"lower case characters only." +msgstr "" + +#: personal/mail/sieve/templates/create_script.tpl:8 +#, fuzzy +msgid "Script name" +msgstr "脚本名称" + +#: personal/mail/sieve/templates/select_test_type.tpl:1 +#, fuzzy +msgid "Select the type of test you want to add" +msgstr "选择要添加的条目" + +#: personal/mail/sieve/templates/select_test_type.tpl:3 +#, fuzzy +msgid "Available test types" +msgstr "变量属性" + +#: personal/mail/sieve/templates/element_comment.tpl:8 +msgid "Edit" +msgstr "编辑" + +#: personal/mail/sieve/templates/element_header.tpl:60 +msgid "operator" +msgstr "" + +#: personal/mail/sieve/templates/element_keep.tpl:9 +#, fuzzy +msgid "Keep message" +msgstr "解除挂起的邮件" + +#: personal/mail/sieve/templates/element_redirect.tpl:18 +msgid "Redirect mail to following recipients" +msgstr "" + +#: personal/mail/sieve/templates/element_vacation.tpl:13 +#, fuzzy +msgid "Vacation Message" +msgstr "假期信息" + +#: personal/mail/sieve/templates/element_vacation.tpl:21 +#, fuzzy +msgid "Release interval" +msgstr "时间间隔" + +#: personal/mail/sieve/templates/element_vacation.tpl:25 +msgid "days" +msgstr "天" + +#: personal/mail/sieve/templates/element_vacation.tpl:30 +#, fuzzy +msgid "Alternative sender addresses" +msgstr "替代地址" + +#: personal/mail/sieve/templates/element_boolean.tpl:4 +msgid "Bool" +msgstr "布尔值" + +#: personal/mail/sieve/templates/element_boolean.tpl:8 +#, fuzzy +msgid "update" +msgstr "更新" + +#: personal/mail/sieve/templates/remove_script.tpl:2 +#: personal/mail/sieve/class_My_Tree.inc:245 +msgid "Warning" +msgstr "警告" + +#: personal/mail/sieve/templates/remove_script.tpl:6 +msgid "" +"Please double check if your really want to do this since there is no way for " +"GOsa to get your data back." +msgstr "请再次检查您是否要这么做,因为 GOsa 将没有办法将您的数据找回。" + +#: personal/mail/sieve/templates/remove_script.tpl:10 +#, fuzzy +msgid "" +"Best thing to do before performing this action would be to save the current " +"script in a file. So - if you've done so - press 'Delete' to continue or " +"'Cancel' to abort." +msgstr "" +"最好在执行这个操作之前,保存当前 LDAP 树中的内容到一个文件。所以,如果您已经" +"这么做了,按“删除”继续或者按“取消”退出。" + +#: personal/mail/sieve/templates/object_test_container.tpl:6 +#, fuzzy +msgid "Add object" +msgstr "自动化安装(FAI)对象树" + +#: personal/mail/sieve/templates/object_test_container.tpl:10 +#: personal/mail/sieve/templates/object_container.tpl:16 +#, fuzzy +msgid "Remove object" +msgstr "成员对象" + +#: personal/mail/sieve/templates/object_container.tpl:8 +msgid "Move object up one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:12 +msgid "Move object down one position" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:21 +msgid "choose element" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:24 +#, fuzzy +msgid "Fileinto" +msgstr "文件" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:42 +#, fuzzy +msgid "Add new" +msgstr "添加用户" + +#: personal/mail/sieve/templates/object_container.tpl:38 +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add a new object above this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:40 +msgid "Add element above" +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:42 +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add a new object below this one." +msgstr "" + +#: personal/mail/sieve/templates/object_container.tpl:44 +msgid "Add element below" +msgstr "" + +#: personal/mail/sieve/templates/element_size.tpl:16 +#, fuzzy +msgid "Select match type" +msgstr "选择模板" + +#: personal/mail/sieve/templates/element_size.tpl:20 +#, fuzzy +msgid "Select value unit" +msgstr "选择类别" + +#: personal/mail/sieve/templates/element_stop.tpl:9 +msgid "Stop execution here" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:14 +#, fuzzy +msgid "Reject mail" +msgstr "拒绝邮件大小超过" + +#: personal/mail/sieve/templates/element_reject.tpl:17 +msgid "This is a multiline text element" +msgstr "" + +#: personal/mail/sieve/templates/element_reject.tpl:19 +#, fuzzy +msgid "This is stored as single string" +msgstr "******" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:6 +msgid "Export" +msgstr "导出" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:12 +msgid "View structured" +msgstr "" + +#: personal/mail/sieve/templates/edit_frame_base.tpl:14 +msgid "View source" +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:1 +#, fuzzy +msgid "List of sieve scripts" +msgstr "脚本列表" + +#: personal/mail/sieve/templates/management.tpl:5 +msgid "" +"Connection to the sieve server could not be established, the " +"authentification attribute is empty." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:6 +msgid "" +"Please verify that the attributes uid and mail are not empty and try again." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:12 +msgid "Connection to the sieve server could not be established." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:15 +msgid "Possibly the sieve account has not been created yet." +msgstr "" + +#: personal/mail/sieve/templates/management.tpl:19 +#, fuzzy +msgid "" +"Be careful. All your changes will be saved directly to sieve, if you use the " +"save button below." +msgstr "小心使用这个对话框修改记录类型。当按下保存键时,所有修改马上被保存。" + +#: personal/mail/sieve/templates/management.tpl:22 +#, fuzzy +msgid "Create new script" +msgstr "创建新用户" + +#: personal/mail/sieve/class_sieveElement_Require.inc:73 +#, fuzzy +msgid "Please specify at least one valid requirement." +msgstr "请输入一个有效的用户名!" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:21 +msgid "Invalid character found, quotes are not allowed in a reject message." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_Reject.inc:37 +msgid "Your reject text here" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#, fuzzy +msgid "Complete address" +msgstr "邮件地址" + +#: personal/mail/sieve/class_sieveElement_If.inc:27 +#: personal/mail/sieve/class_sieveElement_If.inc:33 +#, fuzzy +msgid "Default" +msgstr "缺省" + +#: personal/mail/sieve/class_sieveElement_If.inc:28 +#, fuzzy +msgid "Domain part" +msgstr "域" + +#: personal/mail/sieve/class_sieveElement_If.inc:29 +msgid "Local part" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:33 +msgid "Case insensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:34 +msgid "Case sensitive" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:35 +msgid "Numeric" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:39 +msgid "is" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:40 +#, fuzzy +msgid "regex" +msgstr "重置" + +#: personal/mail/sieve/class_sieveElement_If.inc:41 +#, fuzzy +msgid "contains" +msgstr "动作" + +#: personal/mail/sieve/class_sieveElement_If.inc:42 +#, fuzzy +msgid "matches" +msgstr "分支" + +#: personal/mail/sieve/class_sieveElement_If.inc:43 +#, fuzzy +msgid "count" +msgstr "账户" + +#: personal/mail/sieve/class_sieveElement_If.inc:44 +#, fuzzy +msgid "value is" +msgstr "有效" + +#: personal/mail/sieve/class_sieveElement_If.inc:48 +msgid "less than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:49 +msgid "less or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:50 +#, fuzzy +msgid "equals" +msgstr "详细" + +#: personal/mail/sieve/class_sieveElement_If.inc:51 +msgid "greater or equal" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:52 +#: personal/mail/sieve/class_sieveElement_If.inc:726 +#: personal/mail/sieve/class_sieveElement_If.inc:1059 +#, fuzzy +msgid "greater than" +msgstr "创建选项" + +#: personal/mail/sieve/class_sieveElement_If.inc:53 +#, fuzzy +msgid "not equal" +msgstr "没有示例" + +#: personal/mail/sieve/class_sieveElement_If.inc:102 +#, fuzzy +msgid "Can't save empty tests." +msgstr "无法保存文件 '%s'。" + +#: personal/mail/sieve/class_sieveElement_If.inc:446 +#, fuzzy +msgid "emtpy" +msgstr "空" + +#: personal/mail/sieve/class_sieveElement_If.inc:447 +msgid "empty" +msgstr "空" + +#: personal/mail/sieve/class_sieveElement_If.inc:493 +msgid "Nothing specified right now" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:595 +msgid "Invalid type of address part." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:605 +msgid "Invalid match type given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:621 +msgid "Invalid operator given." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:638 +#, fuzzy +msgid "Please specify a valid operator." +msgstr "请输入一个有效的 iSerial。" + +#: personal/mail/sieve/class_sieveElement_If.inc:654 +msgid "" +"Invalid character found in address attribute. Quotes are not allowed here." +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:669 +#, fuzzy +msgid "" +"Invalid character found in value attribute. Quotes are not allowed here." +msgstr "应用程序名称中包含无效的字符。只允许 a-z 0-9。" + +#: personal/mail/sieve/class_sieveElement_If.inc:727 +#: personal/mail/sieve/class_sieveElement_If.inc:1060 +msgid "lower than" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:729 +#: personal/mail/sieve/class_sieveElement_If.inc:1062 +msgid "Megabyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:730 +#: personal/mail/sieve/class_sieveElement_If.inc:1063 +msgid "Kilobyte" +msgstr "" + +#: personal/mail/sieve/class_sieveElement_If.inc:731 +#: personal/mail/sieve/class_sieveElement_If.inc:1064 +#, fuzzy +msgid "Bytes" +msgstr "是" + +#: personal/mail/sieve/class_sieveElement_If.inc:745 +#, fuzzy +msgid "Please select a valid match type in the list box below." +msgstr "请选择一个有效的邮件服务器。" + +#: personal/mail/sieve/class_sieveElement_If.inc:759 +#, fuzzy +msgid "Only numeric values are allowed here." +msgstr "数字字段只允许填数字。" + +#: personal/mail/sieve/class_sieveElement_If.inc:769 +#, fuzzy +msgid "No valid unit selected" +msgstr "无有效证书加载" + +#: personal/mail/sieve/class_sieveElement_If.inc:876 +#, fuzzy +msgid "Empty" +msgstr "空" + +#: personal/mail/sieve/class_sieveElement_If.inc:1134 +#: personal/mail/sieve/class_sieveElement_If.inc:1164 +#, fuzzy +msgid "Click here to add a new test" +msgstr "点击这里登录" + +#: personal/mail/sieve/class_sieveElement_If.inc:1176 +msgid "Unhandled switch type" +msgstr "" + +#: personal/mail/sieve/class_My_Tree.inc:245 +#, fuzzy +msgid "Cannot remove last element!" +msgstr "删除记录" + +#: personal/mail/sieve/class_My_Tree.inc:658 +msgid "Require must be the first command in the script." +msgstr "" + +#: personal/mail/class_mailAccount.inc:51 +#: addons/mailqueue/class_mailqueue.inc:7 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/mail/class_mailAccount.inc:635 +#: personal/mail/class_mail-methods.inc:131 +#: personal/mail/class_mail-methods.inc:462 +#, fuzzy +msgid "Configuration error" +msgstr "配置文件" + +#: personal/mail/class_mailAccount.inc:635 +#, fuzzy, php-format +msgid "No DESC tag in vacation template '%s'!" +msgstr "假期文件没有 DESC 标签:" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "Permission error" +msgstr "允许" + +#: personal/mail/class_mailAccount.inc:664 +#: personal/mail/class_mailAccount.inc:677 +#: personal/mail/class_mailAccount.inc:708 +#: personal/mail/class_mailAccount.inc:721 +#, fuzzy +msgid "You have no permission to modify these addresses!" +msgstr "您无权删除这个部门。" + +#: personal/mail/class_mailAccount.inc:755 +#: personal/mail/class_mailAccount.inc:758 +#, fuzzy +msgid "unknown" +msgstr "未知" + +#: personal/mail/class_mailAccount.inc:1122 +#: personal/mail/class_mailAccount.inc:1130 +#: personal/mail/class_mailAccount.inc:1279 +#, fuzzy +msgid "Mail reject size" +msgstr "邮件大小" + +#: personal/mail/class_mailAccount.inc:1134 +#: personal/mail/class_mailAccount.inc:1286 +#, fuzzy +msgid "Spam folder" +msgstr "到目录" + +#: personal/mail/class_mailAccount.inc:1140 +#: personal/mail/class_mailAccount.inc:1291 +#, fuzzy +msgid "Vacation interval" +msgstr "假期信息" + +#: personal/mail/class_mailAccount.inc:1415 +msgid "My account" +msgstr "我的账号" + +#: personal/mail/class_mailAccount.inc:1424 +#, fuzzy +msgid "Add vacation information" +msgstr "组织信息" + +#: personal/mail/class_mailAccount.inc:1427 +msgid "Use spam filter" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1428 +#, fuzzy +msgid "Spam level" +msgstr "日志级别" + +#: personal/mail/class_mailAccount.inc:1429 +msgid "Spam mail box" +msgstr "" + +#: personal/mail/class_mailAccount.inc:1431 +#, fuzzy +msgid "Sieve management" +msgstr "系统管理" + +#: personal/mail/class_mailAccount.inc:1433 +#, fuzzy +msgid "Reject due to mailsize" +msgstr "拒绝邮件大小超过" + +#: personal/mail/class_mailAccount.inc:1436 +#: personal/mail/class_mailAccount.inc:1441 +#, fuzzy +msgid "Forwarding address" +msgstr "主要地址" + +#: personal/mail/class_mailAccount.inc:1437 +#, fuzzy +msgid "Local delivery" +msgstr "最后传递" + +#: personal/mail/class_mailAccount.inc:1438 +#, fuzzy +msgid "No delivery to own mailbox " +msgstr "不要发送到本人邮箱" + +#: personal/mail/class_mailAccount.inc:1439 +#, fuzzy +msgid "Mail alternative addresses" +msgstr "替代地址" + +#: personal/mail/main.inc:138 +msgid "User mail settings" +msgstr "用户邮件选项" + +#: personal/mail/class_mail-methods.inc:132 +#, php-format +msgid "The configured mail attribute '%s' is unsupported!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:463 +#, php-format +msgid "Mail method '%s' is unknown!" +msgstr "" + +#: personal/mail/class_mail-methods.inc:689 +#: personal/mail/class_mail-methods.inc:690 +#, fuzzy +msgid "None" +msgstr "无" + +#: personal/mail/class_mail-methods.inc:779 +msgid "Unknown" +msgstr "未知" + +#: personal/mail/class_mail-methods.inc:781 +#, fuzzy +msgid "Unlimited" +msgstr "无限" + +#: personal/mail/class_mail-methods-cyrus.inc:39 +msgid "There are no IMAP compatible mail servers defined!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:44 +#, fuzzy +msgid "Mail server for this account is invalid!" +msgstr "该账号邮件大小不受限制" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy +msgid "IMAP error" +msgstr "LDAP 错误:" + +#: personal/mail/class_mail-methods-cyrus.inc:218 +#, fuzzy, php-format +msgid "Cannot modify IMAP mailbox quota: %s" +msgstr "无法删除 IMAP 邮箱。服务器返回 '%s'。" + +#: personal/mail/class_mail-methods-cyrus.inc:354 +#: personal/mail/class_mail-methods-cyrus.inc:391 +msgid "The module imap_getacl is not implemented!" +msgstr "" + +#: personal/mail/class_mail-methods-cyrus.inc:563 +#, php-format +msgid "Cannot activate SIEVE script: %s" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:6 +#: addons/mailqueue/class_mailqueue.inc:331 addons/mailqueue/main.inc:56 +msgid "Mail queue" +msgstr "邮件队列" + +#: addons/mailqueue/class_mailqueue.inc:205 +msgid "up" +msgstr "上" + +#: addons/mailqueue/class_mailqueue.inc:207 +msgid "down" +msgstr "下" + +#: addons/mailqueue/class_mailqueue.inc:218 +#: addons/mailqueue/class_mailqueue.inc:318 +msgid "All" +msgstr "全部" + +#: addons/mailqueue/class_mailqueue.inc:262 +msgid "no limit" +msgstr "无限" + +#: addons/mailqueue/class_mailqueue.inc:265 +msgid "hour" +msgstr "小时" + +#: addons/mailqueue/class_mailqueue.inc:267 +msgid "hours" +msgstr "小时" + +#: addons/mailqueue/class_mailqueue.inc:319 +msgid "Hold" +msgstr "挂起" + +#: addons/mailqueue/class_mailqueue.inc:320 +msgid "Un hold" +msgstr "解除挂起" + +#: addons/mailqueue/class_mailqueue.inc:322 +msgid "Not active" +msgstr "不活动" + +#: addons/mailqueue/class_mailqueue.inc:332 +#: addons/mailqueue/class_mailqueue.inc:337 +#, fuzzy +msgid "Mail queue addon" +msgstr "邮件队列" + +#: addons/mailqueue/class_mailqueue.inc:340 +#, fuzzy +msgid "Unhold all messages" +msgstr "挂起所有邮件" + +#: addons/mailqueue/class_mailqueue.inc:341 addons/mailqueue/contents.tpl:38 +msgid "Hold all messages" +msgstr "挂起所有邮件" + +#: addons/mailqueue/class_mailqueue.inc:342 +#, fuzzy +msgid "Delete all messages" +msgstr "解除所有邮件" + +#: addons/mailqueue/class_mailqueue.inc:343 addons/mailqueue/contents.tpl:48 +msgid "Requeue all messages" +msgstr "所有邮件重入队列" + +#: addons/mailqueue/class_mailqueue.inc:344 +#, fuzzy +msgid "Unhold message" +msgstr "挂起邮件" + +#: addons/mailqueue/class_mailqueue.inc:345 addons/mailqueue/contents.tpl:120 +msgid "Hold message" +msgstr "挂起邮件" + +#: addons/mailqueue/class_mailqueue.inc:346 +#, fuzzy +msgid "Delete message" +msgstr "删除这条信息" + +#: addons/mailqueue/class_mailqueue.inc:347 +#, fuzzy +msgid "Requeue message" +msgstr "将此邮件重入队列" + +#: addons/mailqueue/class_mailqueue.inc:348 +msgid "Gathering queue data" +msgstr "" + +#: addons/mailqueue/class_mailqueue.inc:349 +#, fuzzy +msgid "Get header information" +msgstr "用户一般信息" + +#: addons/mailqueue/contents.tpl:10 addons/mailqueue/contents.tpl:28 +msgid "Search" +msgstr "查找" + +#: addons/mailqueue/contents.tpl:11 +msgid "Search for" +msgstr "查询" + +#: addons/mailqueue/contents.tpl:12 +msgid "Please enter a search string here." +msgstr "请在这里输入一个查询字符串。" + +#: addons/mailqueue/contents.tpl:14 +msgid "Select a server" +msgstr "选择一个服务器" + +#: addons/mailqueue/contents.tpl:18 +msgid "with status" +msgstr "具有状态" + +#: addons/mailqueue/contents.tpl:23 +msgid "within the last" +msgstr "在最近的" + +#: addons/mailqueue/contents.tpl:33 +msgid "Remove all messages" +msgstr "删除所有邮件" + +#: addons/mailqueue/contents.tpl:34 +msgid "Remove all messages from selected servers queue" +msgstr "从所选服务器队列中删除所有邮件" + +#: addons/mailqueue/contents.tpl:39 +msgid "Hold all messages in selected servers queue" +msgstr "从所选服务器队列中挂起所有邮件" + +#: addons/mailqueue/contents.tpl:43 +msgid "Release all messages" +msgstr "解除所有邮件" + +#: addons/mailqueue/contents.tpl:44 +msgid "Release all messages in selected servers queue" +msgstr "从所选服务器队列中解除所有邮件" + +#: addons/mailqueue/contents.tpl:49 +msgid "Requeue all messages in selected servers queue" +msgstr "所选服务器队列所有邮件重入队列" + +#: addons/mailqueue/contents.tpl:63 +msgid "Search returned no results" +msgstr "查无结果" + +#: addons/mailqueue/contents.tpl:72 +msgid "ID" +msgstr "ID" + +#: addons/mailqueue/contents.tpl:75 +msgid "Arrival" +msgstr "到达" + +#: addons/mailqueue/contents.tpl:76 +msgid "Sender" +msgstr "发送者" + +#: addons/mailqueue/contents.tpl:77 +msgid "Recipient" +msgstr "收件人" + +#: addons/mailqueue/contents.tpl:78 +msgid "Status" +msgstr "状态" + +#: addons/mailqueue/contents.tpl:105 +msgid "delete" +msgstr "删除" + +#: addons/mailqueue/contents.tpl:105 +msgid "Delete this message" +msgstr "删除这条信息" + +#: addons/mailqueue/contents.tpl:113 +msgid "unhold" +msgstr "释放" + +#: addons/mailqueue/contents.tpl:113 +msgid "Release message" +msgstr "解除挂起的邮件" + +#: addons/mailqueue/contents.tpl:120 +msgid "hold" +msgstr "挂起" + +#: addons/mailqueue/contents.tpl:127 +msgid "requeue" +msgstr "重入队列" + +#: addons/mailqueue/contents.tpl:127 +msgid "Requeue this message" +msgstr "将此邮件重入队列" + +#: addons/mailqueue/contents.tpl:133 +msgid "header" +msgstr "邮件头" + +#: addons/mailqueue/contents.tpl:134 +#, fuzzy +msgid "Display header of this message" +msgstr "显示此邮件邮件头" + +#, fuzzy +#~ msgid "Cannot connect mail method: %s" +#~ msgstr "无法打开文件 '%s'。" + +#, fuzzy +#~ msgid "Cannot remove mailbox: %s." +#~ msgstr "无法删除 IMAP 邮箱。服务器返回 '%s'。" + +#, fuzzy +#~ msgid "Cannot update mailbox: %s." +#~ msgstr "无法创建 IMAP 邮箱。服务器返回 '%s'。" + +#, fuzzy +#~ msgid "Cannot write quota settings: %s." +#~ msgstr "无法创建文件 '%s'。" + +#, fuzzy +#~ msgid "Cannot get list of mailboxes! Error was: %s." +#~ msgstr "无法删除 IMAP 邮箱。服务器返回 '%s'。" + +#, fuzzy +#~ msgid "Cannot connect mail method! Error was: %s." +#~ msgstr "无法打开文件 '%s'。" + +#, fuzzy +#~ msgid "Cannot remove mailbox! Error was: %s." +#~ msgstr "无法删除 IMAP 邮箱。服务器返回 '%s'。" + +#, fuzzy +#~ msgid "Cannot update mailbox! Error was: %s." +#~ msgstr "无法创建 IMAP 邮箱。服务器返回 '%s'。" + +#, fuzzy +#~ msgid "Specify the mail server where the user will be hosted on" +#~ msgstr "描述该用户账号所要创建于的邮件服务器" + +#~ msgid "Select mail server to place user on" +#~ msgstr "选择放置用户的邮件服务器" + +#~ msgid "not defined" +#~ msgstr "未定义" + +#~ msgid "read" +#~ msgstr "读" + +#~ msgid "post" +#~ msgstr "贴" + +#~ msgid "external post" +#~ msgstr "外部粘贴" + +#~ msgid "append" +#~ msgstr "附加" + +#~ msgid "write" +#~ msgstr "写" + +#, fuzzy +#~ msgid "admin" +#~ msgstr "管理员" + +#, fuzzy +#~ msgid "mail" +#~ msgstr "邮件" + +#, fuzzy +#~ msgid "forward address" +#~ msgstr "主要地址" + +#, fuzzy +#~ msgid "Cannot forward to users own mail address!" +#~ msgstr "您正在添加一个无效邮件地址" + +#, fuzzy +#~ msgid "Alternate address" +#~ msgstr "替代地址" + +#~ msgid "Add" +#~ msgstr "添加" + +#, fuzzy +#~ msgid "Unspecified" +#~ msgstr "未定义" + +#, fuzzy +#~ msgid "Mails" +#~ msgstr "邮件" + +#, fuzzy +#~ msgid "Tasks" +#~ msgstr "任务" + +#, fuzzy +#~ msgid "Journals" +#~ msgstr "小时" + +#~ msgid "Contacts" +#~ msgstr "联系" + +#, fuzzy +#~ msgid "Notes" +#~ msgstr "否" + +#, fuzzy +#~ msgid "Inbox" +#~ msgstr "索引" + +#, fuzzy +#~ msgid "Drafts" +#~ msgstr "日期" + +#, fuzzy +#~ msgid "Sent items" +#~ msgstr "系统状态" + +#, fuzzy +#~ msgid "Junk mail" +#~ msgstr "组名" + +#~ msgid "" +#~ "Please choose valid permission settings. Default permission can't be " +#~ "emtpy." +#~ msgstr "请选择一个有效的权限设置。缺省权限不能为空。" + +#~ msgid "Mail options" +#~ msgstr "邮件选项" + +#, fuzzy +#~ msgid "" +#~ "Mail settings cannot be removed while there are delegations configured!" +#~ msgstr "这个账号不能被删除因为还有代理人配置。先删除这些代理人。" + +#, fuzzy +#~ msgid "Waiting for kolab to remove mail properties..." +#~ msgstr "等待 kolab 来删除邮件属性。" + +#, fuzzy +#~ msgid "" +#~ "Please remove the mail settings first to allow kolab to call its remove " +#~ "methods!" +#~ msgstr "请先删除邮件账号,以允许 kolab 调用自己的删除方法。" + +#, fuzzy +#~ msgid "You have no permission to submit a '%s' command!" +#~ msgstr "您无权查看和编辑 ACL。" + +#, fuzzy +#~ msgid "No mail servers specified!" +#~ msgstr "没有定义日志主机!" + +#~ msgid "Sieve port" +#~ msgstr "Sieve 端口" + +#~ msgid "There is no mail method '%s' specified in your gosa.conf available." +#~ msgstr "在您的 gosa.conf 中,没有邮件方法 '%s'。" + +#~ msgid "" +#~ "Adding your one of your own addresses to the forwarders makes no sense." +#~ msgstr "添加您自己的一个邮件地址到转发地址没有任何意义。" + +#, fuzzy +#~ msgid "alternate address" +#~ msgstr "替代地址" + +#~ msgid "Delete" +#~ msgstr "删除" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Apply" +#~ msgstr "应用" + +#~ msgid "This 'dn' has no valid mail extensions." +#~ msgstr "这个 'dn' 没有有效邮件扩展。" + +#~ msgid "" +#~ "This account has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "这个账户邮件功能已启用。您可以点击下面的按钮禁用。" + +#~ msgid "" +#~ "This account has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "这个账户邮件功能已禁用。您可以点击下面的按钮来启用。" + +#, fuzzy +#~ msgid "You're trying to add an invalid email address " +#~ msgstr "您正在尝试向转发列表添加一条无效邮件地址。" + +#~ msgid "" +#~ "You're trying to add an invalid email address to the list of alternate " +#~ "addresses." +#~ msgstr "您正在添加一个无效的邮件地址到替代地址列表。" + +#~ msgid "The address you're trying to add is already used by user" +#~ msgstr "您正在添加的地址已经被用户使用" + +#~ msgid "The required field 'Primary address' is not set." +#~ msgstr "要求的字段“主要地址”没有设置。" + +#~ msgid "Please enter a valid email addres in 'Primary address' field." +#~ msgstr "请在“主要地址”栏输入一个有效邮件地址。" + +#~ msgid "The primary address you've entered is already in use." +#~ msgstr "您输入的主要地址已经在使用了。" + +#~ msgid "Value in 'Quota size' is not valid." +#~ msgstr "'Quota 大小' 的值无效。" + +#~ msgid "Please specify a vaild mail size for mails to be rejected." +#~ msgstr "请指定一个将要被退回的邮件大小。" + +#, fuzzy +#~ msgid "Please specify a numeric value for header size limit." +#~ msgstr "请为重试提供一个数值。" + +#, fuzzy +#~ msgid "Please specify a numeric value for mailbox size limit." +#~ msgstr "请为过期时间提供一个数值。" + +#, fuzzy +#~ msgid "Please specify a numeric value for message size limit." +#~ msgstr "请为过期时间提供一个数值。" + +#~ msgid "Specified value is not a valid 'trusted network' value." +#~ msgstr "给出的值不是一个有效的 '可信网络'。" + +#~ msgid "Required score must be a numeric value." +#~ msgstr "需要的分值必须是数字。" + +#, fuzzy +#~ msgid "Please specify a server identifier." +#~ msgstr "请输入一个有效的 iSerial。" + +#, fuzzy +#~ msgid "Please specify a connect url." +#~ msgstr "请输入一个名字。" + +#, fuzzy +#~ msgid "Please specify an admin user." +#~ msgstr "请输入一个名字。" + +#, fuzzy +#~ msgid "Please specify a password for the admin user." +#~ msgstr "请给出一个有效电话号码。" + +#~ msgid "The imap connect string needs to be in the form '%s'." +#~ msgstr "Imap 连接字符串格式应该为 '%s' 。" + +#~ msgid "The sieve port needs to be numeric." +#~ msgstr "Sieve 端口应为数字。" + +#~ msgid "The specified value for '%s' must be a numeric value." +#~ msgstr "指定 '%s' 的值必须是数字类型。" + +#, fuzzy +#~ msgid "Please specify a valid value for '%s'." +#~ msgstr "请为“URL”提供一个有效的值。" + +#~ msgid "" +#~ "This group has mail features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "这个组启用了邮件功能。您可以点击下面按钮来禁用。" + +#~ msgid "" +#~ "This group has mail features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "这个组禁用了邮件功能。您可以点击下面按钮来启用。" + +#~ msgid "Please enter a valid email address in 'Primary address' field." +#~ msgstr "请在“主邮件地址”中输入一个有效的邮件地址。" + +#~ msgid "Back" +#~ msgstr "返回" + +#, fuzzy +#~ msgid "Mailqueue" +#~ msgstr "邮件队列" + +#, fuzzy +#~ msgid "Mailqueue addon" +#~ msgstr "邮件队列" + +#~ msgid "This account has no mail extensions." +#~ msgstr "这个账号没有邮件扩展。" + +#~ msgid "January" +#~ msgstr "一月" + +#~ msgid "February" +#~ msgstr "二月" + +#~ msgid "March" +#~ msgstr "三月" + +#~ msgid "April" +#~ msgstr "四月" + +#~ msgid "May" +#~ msgstr "五月" + +#~ msgid "June" +#~ msgstr "六月" + +#~ msgid "July" +#~ msgstr "七月" + +#~ msgid "August" +#~ msgstr "八月" + +#~ msgid "September" +#~ msgstr "九月" + +#~ msgid "October" +#~ msgstr "十月" + +#~ msgid "November" +#~ msgstr "十一月" + +#~ msgid "December" +#~ msgstr "十二月" + +#, fuzzy +#~ msgid "Removing of user/mail account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of user/mail account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#~ msgid "" +#~ "There is no valid mailserver specified, please add one in the system " +#~ "setup." +#~ msgstr "没有指定有效的邮件服务器,请通过系统设置添加一个。" + +#~ msgid "You specified Spam settings, but there is no Folder specified." +#~ msgstr "您定义了 Spam 设置,但是没有指定目录。" + +#~ msgid "Time interval to show vacation message is not valid." +#~ msgstr "显示假期信息的时间间隔无效。" + +#~ msgid "Ok" +#~ msgstr "好" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "点击下面的“编辑”按钮修改该对话框内的信息" + +#, fuzzy +#~ msgid "Saving of object group/mail with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Removing of object group/mail with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#~ msgid "Saving of server services/anti virus with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 服务器服务/反病毒失败。" + +#~ msgid "Saving of server services/spamassassin with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 服务器服务/spamassassin 失败。" + +#, fuzzy +#~ msgid "Saving server services/mail with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 服务器服务/spamassassin 失败。" + +#, fuzzy +#~ msgid "Removing of groups/mail with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of groups/mail with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" diff --git a/trunk/gosa-plugins/mail/personal/mail/class_mail-methods-cyrus.inc b/trunk/gosa-plugins/mail/personal/mail/class_mail-methods-cyrus.inc new file mode 100644 index 000000000..8816e39fb --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/class_mail-methods-cyrus.inc @@ -0,0 +1,572 @@ +config->data['SERVERS']['IMAP'])){ + $this->ServerList = $this->config->data['SERVERS']['IMAP']; + } + } + + + public function connect() + { + mailMethod::connect(); + + if(!count($this->ServerList)){ + $this->error = _("There are no IMAP compatible mail servers defined!"); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, + "IMAP: No mail servers configured, check systems->server->service->imap.",""); + return(FALSE); + }elseif (!isset($this->ServerList[$this->MailServer])){ + $this->error = _("Mail server for this account is invalid!"); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, + "IMAP: The selected mail server '".$this->MailServer."' is invalid.",""); + return(FALSE); + } else { + $cfg= $this->ServerList[$this->MailServer]; + } + + /* For some reason, hiding errors with @ does not wor here... */ + if(!isset($cfg['connect'])) $cfg['connect']=""; + if(!isset($cfg['admin'])) $cfg['admin']=""; + if(!isset($cfg['password'])) $cfg['password']=""; + + /* Setting connect timeout to 10 seconds, + else the GOsa UI may freeze for 60 seconds. + (PHP default is 'default_socket_timeout = 60') */ + imap_timeout(1, 10 ); + $this->imap_handle = @imap_open($cfg['connect'], $cfg['admin'], $cfg['password'], OP_HALFOPEN); + + /* Mailbox reachable? */ + if ($this->imap_handle === FALSE){ + $this->error = imap_last_error(); + + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"Failed :".imap_last_error(), + "IMAP: ".$cfg['admin']."@".$cfg['connect']); + + return (FALSE); + $this->connected = FALSE; + } + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"successful", + "IMAP: ".$cfg['admin']."@".$cfg['connect']); + $this->connected = TRUE; + + return (TRUE); + } + + + public function account_exists() + { + if(!$this->is_connected() || !$this->imap_handle){ + trigger_error("Method not connected, catch error."); + return(array()); + } + + /* Get server config */ + $cfg= $this->ServerList[$this->MailServer]; + $list = @imap_listmailbox($this->imap_handle, $cfg["connect"], $this->account_id); + $res = is_array($list) && count($list); + if($res){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","IMAP: Account exists in imap server."); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","IMAP: Account seems NOT to exists in imap server."); + } + return($res); + } + + public function disconnect() + { + mailMethod::disconnect(); + if($this->is_connected()){ + @imap_close ($this->imap_handle); + } + } + + + public function is_connected() + { + $ret = mailMethod::is_connected(); + return($ret && $this->imap_handle); + } + + protected function loadQuota() + { + if(!$this->quotaEnabled()) return(TRUE); + if(!$this->is_connected() || !$this->imap_handle){ + trigger_error("Method not connected, catch error."); + return(FALSE); + } + + $this->reset_error(); + + /* Load quota settings */ + $result = array("quotaUsage"=>"","gosaMailQuota"=>""); + $quota_value = @imap_get_quota($this->imap_handle, $this->account_id); + + /* Reset error queue, imap_qet_quota() will fail if the quota wasn't set yet. + */ + imap_errors(); + + if(is_array($quota_value) && count($quota_value)) { + if (isset($quota_value["STORAGE"]) && is_array($quota_value["STORAGE"])){ + + /* use for PHP >= 4.3 */ + if($quota_value["STORAGE"]['limit'] == 2147483647){ + $result['quotaUsage']= (int) ($quota_value["STORAGE"]['usage'] / 1024); + $result['gosaMailQuota']= ""; + }else{ + $result['quotaUsage']= (int) ($quota_value["STORAGE"]['usage'] / 1024); + $result['gosaMailQuota']= (int) ($quota_value["STORAGE"]['limit'] / 1024); + } + } else { + + /* backward icompatible */ + if($quota_value['usage'] == 2147483647){ + $result['quotaUsage']= (int) ($quota_value['usage'] / 1024); + $result['gosaMailQuota']= ""; + }else{ + $result['quotaUsage']= (int) ($quota_value['usage'] / 1024); + $result['gosaMailQuota']= (int) ($quota_value['limit'] / 1024); + } + } + } + $this->quotaValue = $result['gosaMailQuota']; + $this->quotaUsage = $result['quotaUsage']; + + /* Write debug output */ + if(is_array($quota_value)){ + if($this->quotaValue == ""){ + $quota = "(".$this->quotaUsage." / unlimited)"; + }else{ + $quota = "(".$this->quotaUsage." / ".$this->quotaValue.")"; + } + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $quota , + "IMAP: Successfully received account quota"); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, imap_last_error() , + "IMAP: Failed to receive account quota"); + } + } + + public function getQuota($quota) + { + mailMethod::getQuota($quota); + if(!$this->quota_loaded){ + $this->quota_loaded = TRUE; + $this->loadQuota(); + } + return($this->quotaValue); + } + + public function getQuotaUsage() + { + mailMethod::getQuotaUsage(); + if(!$this->quota_loaded){ + $this->quota_loaded = TRUE; + $this->loadQuota(); + } + return($this->quotaUsage); + } + + public function setQuota($number) + { + mailMethod::setQuota($number); + + if(!$this->quotaEnabled()) return(TRUE); + if(!$this->is_connected() || !$this->imap_handle){ + trigger_error("Method not connected, catch error."); + return(FALSE); + } + + $this->build_account_id(); + + /* Workaround for the php imap extension */ + if (($this->quotaValue == "") || ($this->quotaValue== "2147483647")){ + $this->quotaValue= "2147483647"; + }elseif($this->quotaValue > 0){ + $this->quotaValue = $this->quotaValue *1024; + } + $debug_number = $this->quotaValue." KB"; + if($this->quotaValue == "2147483647"){ + $debug_number .= "Unlimited"; + } + + if (!imap_set_quota($this->imap_handle, $this->account_id, $this->quotaValue)){ + msg_dialog::display(_("IMAP error"), sprintf(_("Cannot modify IMAP mailbox quota: %s"), + '

'.imap_last_error().''), ERROR_DIALOG); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "".$this->account_id.": (".$debug_number.")" , + "IMAP: Set account quota on server '".$this->MailServer."' ".imap_last_error().""); + return (FALSE); + } + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "".$this->account_id.": (".$debug_number.")" , + "IMAP: Set account quota on server :".$this->MailServer); + return (TRUE); + } + + + public function updateMailbox() + { + mailMethod::updateMailbox(); + + if(!$this->is_connected() || !$this->imap_handle){ + trigger_error("Method not connected, catch error."); + return(FALSE); + } + + $this->build_account_id (); + if($this->is_connected()){ + $cfg= $this->ServerList[$this->MailServer]; + $list = imap_listmailbox($this->imap_handle, $cfg["connect"], $this->account_id); + if ($list === FALSE){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "".$this->account_id."" , + "IMAP: Add/Update account on server :".$this->MailServer); + if (!imap_createmailbox($this->imap_handle, $cfg["connect"]. $this->account_id)){ + $this->error = imap_last_error(); + return(FALSE); + } + } + } + return(TRUE); + } + + + public function deleteMailbox() + { + mailMethod::deleteMailbox(); + + if(!$this->is_connected() || !$this->imap_handle){ + trigger_error("Method not connected, catch error."); + return(FALSE); + } + + $this->build_account_id (); + + $cfg= $this->ServerList[$this->MailServer]; + @imap_setacl ($this->imap_handle, $this->account_id, $cfg["admin"], "lrswipcda"); + if (!imap_deletemailbox($this->imap_handle, $cfg["connect"].$this->account_id)){ + $this->error = imap_last_error(); + return (FALSE); + } + return (TRUE); + } + + + public function getMailboxList() + { + mailMethod::getMailboxList(); + + if(!$this->is_connected() || !$this->imap_handle){ + trigger_error("Method not connected, catch error."); + return(array()); + } + + $result = array(); + + /* Get server config */ + $cfg= $this->ServerList[$this->MailServer]; + + /* Create search string + And prepare replacements + */ + if(preg_match("/\@/",$this->account_id)){ + $search = preg_replace("/\@/","/*@",$this->account_id); + $with_domain = TRUE; + }else{ + $search = $this->account_id."/*"; + $with_domain = FALSE; + } + $folder = $this->account_id; + if(preg_match("/\@/",$folder)){ + $folder = preg_replace("/\@.*$/","",$folder); + } + + /* Contact imap server */ + $list = @imap_listmailbox($this->imap_handle, $cfg["connect"], $this->account_id); + $list2 = @imap_listmailbox($this->imap_handle, $cfg["connect"], $search); + + /* Create list of returned folder names */ + if (is_array($list)){ + + /* Merge in subfolders */ + if(is_array($list2)){ + $list = array_merge($list,$list2); + } + + foreach ($list as $val){ + $str = trim(preg_replace("/^\{[^\}]*+\}/","",$val)); + if($with_domain){ + $str = trim(preg_replace("/\@.*$/","",$str)); + } + $str = preg_replace ("/^.*".preg_quote($folder, '/')."/","INBOX", + mb_convert_encoding($str, "UTF-8", "UTF7-IMAP")); + $result[] = $str; + } + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim(implode($result,", "),", "), + "IMAP: Received mailbox folders."); + $this->error = imap_last_error(); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,imap_last_error(), + "IMAP: Cannot receive mailbox folders."); + $this->error = imap_last_error(); + return(array()); + } + + /* Append "INBOX" to the folder array if result is empty and request comes from user dialog */ + if(!count($result)){ + $result[] = "INBOX"; + } + + return($result); + } + + + /*! \brief Returns configured acls + */ + public function getFolderACLs($folder_acls) + { + $this->reset_error(); + + /* imap_getacl available? */ + if (!function_exists('imap_getacl')){ + $this->error = _("The module imap_getacl is not implemented!"); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"The imap_getacl module is missing!", + "IMAP: Cannot set folder acls."); + return($folder_acls); + } + + /* Get ACLs and merge them with the already given acls (ldap) + */ + $this->build_account_id(); + $acls = imap_getacl ($this->imap_handle, $this->account_id); + foreach($acls as $user => $acl){ + if($user == "anyone") $user = "__anyone__"; // Map to internal placeholder + $folder_acls[$user] = $acl; + } + + /* Merge given ACL with acl mapping + This ensures that no ACL will accidentally overwritten by gosa. + */ + foreach($folder_acls as $user => $acl){ + if(!isset($this->acl_mapping[$acl])){ + $this->acl_mapping[$acl] = $acl; + } + } + + return($folder_acls); + } + + + + /*! \brief Write ACLs back to imap or what ever + */ + public function setFolderACLs($permissions) + { + $this->reset_error(); + + /* imap_getacl available? */ + if (!function_exists('imap_getacl')){ + $this->error = _("The module imap_getacl is not implemented!"); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"The imap_getacl module is missing!", + "IMAP: Cannot set folder acls."); + return(FALSE); + } + + /* Get list of subfolders */ + $folders= $this->getMailboxList(); + foreach ($folders as $subfolder){ + $folder_id = $this->create_folder_id($subfolder); + + /* Remove all acl's for this folder */ + $users= @imap_getacl ($this->imap_handle, $folder_id); + + if(is_array($users)){ + foreach ($users as $userid => $perms){ + $userid = strtolower($userid); + imap_setacl ($this->imap_handle, $folder_id, $userid, ""); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$folder_id." -> ".$userid, + "IMAP: Removing folder permissions."); + } + } + } + + /* Set permissions for this folder */ + foreach($folders as $subfolder){ + $folder_id = $this->create_folder_id($subfolder); + + foreach ($permissions as $user => $acl){ + imap_setacl ($this->imap_handle, $folder_id, $user, $acl); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$folder_id." -> ".$user.": ".$acl, + "IMAP: Setting new folder permissions."); + } + } + return(TRUE); + } + + + public function saveSieveSettings() + { + mailMethod::saveSieveSettings(); + + /* Map attribute from parent class + */ + $mail = $this->parent->mail; + $gosaMailDeliveryMode = $this->parent->gosaMailDeliveryMode; + $gosaMailAlternateAddress = $this->parent->gosaMailAlternateAddress; + $gosaMailMaxSize = $this->parent->gosaMailMaxSize; + $gosaSpamMailbox = $this->parent->gosaSpamMailbox; + $gosaSpamSortLevel = $this->parent->gosaSpamSortLevel; + $gosaVacationMessage = $this->parent->gosaVacationMessage; + + /* Try to login into sieve + */ + $cfg = $this->ServerList[$this->MailServer]; + $sieve= new sieve($cfg["sieve_server"], $cfg["sieve_port"], $this->getUAttribValue(), + $cfg["password"], $cfg["admin"],$cfg["sieve_option"]); + if (!$sieve->sieve_login()){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$sieve->error_raw ,"SIEVE: login failed."); + $this->error = $sieve->error_raw; + return(FALSE); + } + + /* Build spamlevel. Spamassassin tags mails with "*" for each integer + point of spam. So a spam level of 5.3 gets "*****" which can be + checked easily by spam filters */ + $spamlevel= str_pad("",(int) $gosaSpamSortLevel,"*"); + + /* Get current sieve script named 'gosa'. + Check if it valid ("###GOSA" must be the first string). + If it is valid just replace it, if it is NOT valid + create a backup of the old + */ + $script= ""; + if($sieve->sieve_listscripts()){ + if (in_array("gosa", $sieve->response)){ + if(!$sieve->sieve_getscript("gosa")){ + $this->error = sprintf(_("Cannot retrieve SIEVE script: %s"),to_string($sieve->error_raw)); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$sieve->error_raw , + "SIEVE: Connot read 'gosa' sieve script."); + $this->error = $sieve->error_raw; + return(FALSE); + } + + $is_valid_script = FALSE; + foreach ($sieve->response as $line){ + if(empty($line)) continue; + if (preg_match ("/^###GOSA/", $line) && strlen($script) == 0){ + $is_valid_script = TRUE; + } + $line= rtrim($line); + $script .= $line; + } + + if($is_valid_script || strlen($script) == 0 || empty($script)){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"" , + "SIEVE: Sieve script 'gosa' was a valid GOsa script and will be replaced."); + }else{ + $new_name = "non_gosa_".date("Ymd_H-i-s"); + $sieve->sieve_sendscript($new_name, $script); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->sieve->error_raw , + "SIEVE: Non GOsa sieve script. Creating backup of the current sieve script '".$new_name."'."); + } + } + } + + + /***** + Build up new sieve script here. + *****/ + + /* Only create a new one, if it is not empty */ + $script= ""; + if (is_integer(strpos($gosaMailDeliveryMode, "R")) || + is_integer(strpos($gosaMailDeliveryMode, "C")) || + !is_integer(strpos($gosaMailDeliveryMode, "L")) || + is_integer(strpos($gosaMailDeliveryMode, "V")) || + is_integer(strpos($gosaMailDeliveryMode, "S"))){ + + $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-header.txt"))); + eval ("\$script.=\"$text\";"); + } + + /* Add anti-spam code */ + if (is_integer(strpos($gosaMailDeliveryMode, "S"))){ + $spambox= $gosaSpamMailbox; + $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-spam.txt"))); + eval ("\$script.=\"$text\";"); + } + + /* Add "reject due to mailsize" code, message is currently not + adjustable through GOsa. */ + if (is_integer(strpos($gosaMailDeliveryMode, "R"))){ + $maxsize= $gosaMailMaxSize; + $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-mailsize.txt"))); + eval ("\$script.=\"$text\";"); + } + + /* Add vacation information */ + if (is_integer(strpos($gosaMailDeliveryMode, "V"))){ + + /* Sieve wants all destination addresses for the + vacation message, so we've to assemble them from + mail and mailAlternateAddress */ + $addrlist= "\"".$mail."\""; + foreach ($gosaMailAlternateAddress as $val){ + $addrlist .= ", \"$val\""; + } + $vacmsg= $gosaVacationMessage; + $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-vacation.txt"))); + eval ("\$script.=\"$text\";"); + } + + /* If no local delivery is wanted, tell the script to discard the mail */ + if (!is_integer(strpos($gosaMailDeliveryMode, "L"))){ + $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-discard.txt"))); + eval ("\$script.=\"$text\";"); + } + + /**** + Sieve script build complete + ****/ + + /* Upload script and make it the default one */ + if (!$sieve->sieve_sendscript("gosa", $script)){ + $this->error = sprintf(_("Cannot store SIEVE script: %s"), to_string($sieve->error_raw)); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "Error was: ".to_string($sieve->error_raw) , + "SIEVE: Writing new Sieve script failed!"); + return(FALSE); + } + + if(!$sieve->sieve_setactivescript("gosa")){ + $this->error = sprintf(_("Cannot activate SIEVE script: %s"), to_string($sieve->error_raw)); + return(FALSE); + } + + $sieve->sieve_logout(); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/class_mail-methods-sendmail-cyrus.inc b/trunk/gosa-plugins/mail/personal/mail/class_mail-methods-sendmail-cyrus.inc new file mode 100644 index 000000000..70908a385 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/class_mail-methods-sendmail-cyrus.inc @@ -0,0 +1,58 @@ +parent->attrs['gosaMailForwardingAddress'])){ + $newForwarder= array(); + for($i = 0; $i < $this->parent->attrs['gosaMailForwardingAddress']['count']; $i++){ + $addr = $this->parent->attrs['gosaMailForwardingAddress'][$i]; + if (!preg_match('/^\\\\/', $addr)){ + $newForwarder[]= $addr; + } + } + $newForwarder['count'] = count($newForwarder); + $this->parent->attrs['gosaMailForwardingAddress'] = $newForwarder; + } + } + + public function fixAttributesOnStore() + { + mailMethodCyrus::fixAttributesOnStore(); + + /* Add local user if checked */ + $uattrib = $this->getUAttrib(); + if (preg_match("/L/", $mailObject->gosaMailDeliveryMode)) { + if(!isset($this->parent->attrs['gosaMailForwardingAddress'])){ + $this->parent->attrs['gosaMailForwardingAddress'] = array(); + } + $this->parent->attrs['gosaMailForwardingAddress'][]= "\\".$this->parent->$uattrib; + } + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/class_mail-methods.inc b/trunk/gosa-plugins/mail/personal/mail/class_mail-methods.inc new file mode 100644 index 000000000..cab732874 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/class_mail-methods.inc @@ -0,0 +1,803 @@ + "user." or "user/" (Depending on cyrusUseSlashes=FALSE/TRUE) + %CN% => "technik" (The groups cn) + %UID% => "herbert" (The users uid) + %MAIL% => "herbert@domain.de"(The mail address) + %DOMAIN% => "domain.de" (The domain part of the specified mail) + %MAILPART% => "herbert" (The mail address without domain) + %UATTRIB% => "herbert"/"herbert@domains.de" + (Configured in gosa.conf mailAttribute="mail"/"uid") + */ + protected $user_id = "%PREFIX%%UATTRIB%"; + protected $share_id = "%PREFIX%%UATTRIB%"; + + /* Create accounts in cyrus style with '/' instead of '.' */ + protected $cyrusUseSlashes= FALSE; + + /* The atribute mapping for this class Source --> Destination */ + protected $attributes = array(); + protected $userObjectClasses = array(); + protected $shareObjectClasses = array(); + + /* Enabled mail domain selection. If enabled getMailDomains must the domain parts */ + protected $enableDomainSelection= FALSE; + protected $enableQuota = TRUE; + protected $enableSieveManager = FALSE; + protected $enableVacationRange = TRUE; + protected $enableFolderTypes = FALSE; + + /* Default values */ + protected $quotaValue = 0; + protected $quotaUsage = 0; + + /* Method internal */ + protected $type = "user"; + protected $account_id = ""; + protected $initial_account_id = ""; + protected $connected = FALSE; + protected $error = ""; + protected $parent = NULL; + protected $MailServer = ""; + + protected $default_acls = array("__anyone__" => "p", "__member__" => "lrswp"); + + protected $acl_map = array( + "lrsw" => "read", + "lrswp" => "post", + "p" => "external post", + "lrswip" => "append", + "lrswipcd" => "write", + "lrswipcda"=> "admin", + " " => "none"); + + protected $acl_mapping = array(); + + + /*! \brief Constructs the mail class + @param Object Config The GOsa configuration object + @param Object Plugin The initator + @param String Open "user" or "group" account. + */ + function __construct(&$config, &$parent, $type = "user") + { + $this->parent = $parent; + $this->config = $config; + + /* Create a refernce to the mail selected server + */ + if(isset($this->parent->gosaMailServer)){ + $this->MailServer = &$this->parent->gosaMailServer; + }else{ + trigger_error("mailMethod with invalid parent object initialized."); + } + + if(!in_array($this->type,array("user","group"))){ + trigger_error("Unknown mail class type used '".$type."'."); + }else{ + $this->type = $type; + } + + } + + + /*! \brief Intialize attributes and config settings. + */ + protected function init() + { + /* Get config value for cyrusUseSlashes + */ + if ($this->config->get_cfg_value("cyrusUseSlashes") == "true"){ + $this->cyrusUseSlashes = TRUE; + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "","MAIL: cyrusUseSlashes: Enabled"); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "","MAIL: cyrusUseSlashes: Disabled"); + } + + /* Check if the mail account identification attribute + is overridden in the configuration file + */ + if($this->config->get_cfg_value("mailAttribute","mail") != ""){ + $new_uattrib= strtolower($this->config->get_cfg_value("mailAttribute")); + if(in_array($new_uattrib,array("mail","uid"))){ + $this->uattrib = $new_uattrib; + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "".$new_uattrib."", + "MAIL: Unsupported 'mailAttribute' in gosa configuration specified"); + msg_dialog::display(_("Configuration error"), + sprintf(_("The configured mail attribute '%s' is unsupported!"), $new_uattrib), ERROR_DIALOG); + } + } + + /* Create ACL map */ + foreach($this->acl_map as $acl => $name){ + $this->acl_mapping[$acl] = _($name); + } + + /* Check if we have an individual user/folder creation syntax + */ + $tmp = $this->config->get_cfg_value("mailUserCreation"); + if(!empty($tmp)){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "".$tmp."", + "MAIL: User creation set to"); + $this->user_id = $tmp; + } + $tmp = $this->config->get_cfg_value("mailFolderCreation"); + if(!empty($tmp)){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "".$tmp."", + "MAIL: Shared folder creation set to"); + $this->share_id = $tmp; + } + + $this->build_account_id(); + $this->initial_account_id = $this->account_id; + } + + + public function fixAttributesOnLoad() + { + foreach($this->attributes as $source => $dest){ + if(isset($this->parent->attrs[$source])){ + $this->parent->attrs[$dest] = $this->parent->attrs[$source]; + } + if(isset($this->parent->$source)){ + $this->parent->$dest = $this->parent->$source; + } + if(isset($this->parent->attrs[$source][0])){ + $this->parent->saved_attributes[$source] = $this->parent->attrs[$source][0]; + } + } + } + + + public function mailEqualsCN() + { + return($this->mailEqualsCN); + } + + + public function fixAttributesOnRemove() + { + /* Remove objectClasses + */ + if($this->type == "user"){ + $this->parent->attrs['objectClass'] = + array_remove_entries_ics($this->userObjectClasses, $this->parent->attrs['objectClass']); + }else{ + $this->parent->attrs['objectClass'] = + array_remove_entries_ics($this->shareObjectClasses, $this->parent->attrs['objectClass']); + } + foreach($this->attributes as $source => $dest){ + $this->attrs[$dest] = array(); + $this->attrs[$source] = array(); + } + } + + public function fixAttributesOnStore() + { + foreach($this->attributes as $source => $dest){ + if(isset($this->parent->attrs[$dest])){ + $this->parent->attrs[$source] = $this->parent->attrs[$dest ]; + } + if(isset($this->parent->$dest)){ + $this->parent->$source = $this->parent->$dest; + } + } + + if($this->type == "user"){ + $ocs = $this->userObjectClasses; + }else{ + $ocs = $this->shareObjectClasses; + } + foreach($ocs as $oc){ + if(!in_array($oc, $this->parent->attrs['objectClass'])){ + $this->parent->attrs['objectClass'][] = $oc; + } + } + } + + + /*! \brief Connect services like imap. + Not necessary for the base class. + @return Boolean True if this method is connected else false. + */ + public function connect() + { + $this->reset_error(); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","MAIL: Connect method: ".get_class($this)); + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","MAIL: Current server: ".$this->MailServer); + + $this->connected = TRUE; + return(TRUE); + } + + + /*! \brief Returns the connection status of this method. + @return Boolean True if this method is connected else false. + */ + public function is_connected() + { + return($this->connected); + } + + + /*! \brief Disconnect this method. Close services like imap connection. + Not necessary for the base class. + */ + public function disconnect() + { + $this->reset_error(); + if($this->is_connected()){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"","MAIL: Disconnect method: ".get_class($this)); + $this->connected =FALSE; + } + } + + + /*! \brief Returns true the current object represents a valid account + (Some methods may check imap accounts here.) + @return Boolean TRUE if this is a valid account else FALSE + */ + public function account_exists() + { + $this->reset_error(); + return(TRUE); + } + + + /*! \brief Returns the last error occurred + @return String The last error message. + */ + public function get_error(){ + return($this->error); + } + + + public function isModifyableMail() + { + return($this->modifyableMail); + } + + + public function isModifyableServer() + { + return($this->modifyableServer); + } + + + /*! \brief Returns TRUE if the action caused an error. + @return Boolean TRUE on error else FALSE + */ + public function is_error(){ + return($this->error != ""); + } + + + /*! \brief Resets the error message. + */ + public function reset_error(){ + $this->error = ""; + } + + + public function get_account_id() + { + $this->build_account_id(); + return($this->account_id); + } + + /*! \brief Create a new account id, like 'user/name@domain.com'. + */ + protected function build_account_id() + { + /* Build account identicator */ + if($this->type == "user"){ + $prefix = $this->user_prefix; + $acc_string = $this->user_id; + }else{ + $prefix = $this->share_prefix; + $acc_string = $this->share_id; + } + + /* Create account prefix and respect "cyrusUseSlashes" + Do not replace escaped dots for cyrusUseSlashes. + */ + $uattrib = $this->uattrib; + if($this->cyrusUseSlashes){ + $prefix = preg_replace('/([^\\\\])\./',"\\1/",$prefix); + $acc_string = preg_replace('/([^\\\\])\./',"\\1/",$acc_string); + } + $prefix = preg_replace("/\\\\([\.\/])/","\\1",$prefix); + $acc_string = preg_replace("/\\\\([\.\/])/","\\1",$acc_string); + + $domain = $mailpart = ""; + $mail = $this->parent->mail; + if(preg_match("/\@/",$mail)){ + list($mailpart,$domain) = split("\@",$mail); + } + + /* Create account_id + */ + $from = array("/%cn%/i","/%uid%/i","/%prefix%/i","/%uattrib%/i","/%domain%/i","/%mailpart%/i","/%mail%/i"); + $to = array($this->parent->cn,$this->parent->uid,$prefix,$this->parent->$uattrib, $domain, $mailpart,$mail); + $acc_id = trim(strtolower(preg_replace($from,$to,$acc_string))); + + /* Check for not replaced pattern. + */ + if(preg_match("/%/",$acc_id)){ + $notr = preg_replace("/^[^%]*/","",$acc_id); + if(!empty($notr)){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"Warning", + sprintf("MAIL: WARNING unknown pattern in account creation string '%s' near '%s'", $acc_id, $notr)); + + /* Remove incomprehensible patterns */ + $acc_id = preg_replace("/%[^%]+%/","",$acc_id); + } + } + + + if($this->account_id != $acc_id){ + $this->account_id = $acc_id; + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"", "MAIL: AccountID generated: ".$acc_id.""); + } + } + + + /*! \brief Creates a valid folder id for a given folder name. + e.g. $folder_id = "INBOX/test" && $this->account_id = "share/mailbox@domain.de" + will result in "share/mailbox/test@domain.de" + This function is mainly used to read and write folder permissions. + @return String A valid folder id + */ + public function create_folder_id($folder, $type = "") + { + + if(!empty($folder)){ + $folder = trim(preg_replace("/^INBOX[\.\/]*/i","",$folder)); + } + if(!empty($folder)){ + $folder = "/".$folder; + } + + /* Build account identicator */ + if($this->type == "user"){ + $prefix = $this->user_prefix; + $acc_string = $this->user_id; + }else{ + $prefix = $this->share_prefix; + $acc_string = $this->share_id; + } + + /* Create account prefix and respect "cyrusUseSlashes" + Do not replace escaped dots for cyrusUseSlashes. + */ + $uattrib = $this->uattrib; + if($this->cyrusUseSlashes){ + $prefix = preg_replace('/([^\\\\])\./',"\\1/",$prefix); + $acc_string = preg_replace('/([^\\\\])\./',"\\1/",$acc_string); + } + $prefix = preg_replace("/\\\\([\.\/])/","\\1",$prefix); + $acc_string = preg_replace("/\\\\([\.\/])/","\\1",$acc_string); + + $domain = $mailpart = ""; + $mail = $this->parent->mail; + if(preg_match("/\@/",$mail)){ + list($mailpart,$domain) = split("\@",$mail); + } + + /* Create account_id + */ + $from = array("/%cn%/i","/%uid%/i","/%prefix%/i","/%uattrib%/i","/%domain%/i","/%mailpart%/i","/%mail%/i"); + $to = array($this->parent->cn,$this->parent->uid,$prefix,$this->parent->$uattrib, $domain, $mailpart,$mail); + $acc_id = trim(strtolower(preg_replace($from,$to,$acc_string))); + + /* Check for not replaced pattern. + */ + if(preg_match("/%/",$acc_id)){ + $notr = preg_replace("/^[^%]*/","",$acc_id); + if(!empty($notr)){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"Warning", + sprintf("MAIL: WARNING unknown pattern in account creation string '%s' near '%s'", $acc_id, $notr)); + + /* Remove incomprehensible patterns */ + $acc_id = preg_replace("/%[^%]+%/","",$acc_id); + } + } + + if(preg_match("/\@/",$acc_id)){ + list($mail,$domain) = split("\@",$acc_id); + $str = trim($mail . $folder . "@" . $domain); + }else{ + $str = trim($acc_id . $folder); + } + return($str) ; + } + + + /*! \brief Returns the configured mail method for the given parent object, + initialized and read for use. + @return mailMethod The configured mailMethod. + */ + public function get_method() + { + $methods = mailMethod::get_methods(); + if ($this->config->get_cfg_value("mailmethod") != ""){ + $method= $this->config->get_cfg_value("mailmethod"); + $cls = get_correct_class_name("mailMethod$method"); + if(isset($methods[$cls])){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"", "MAIL: Selected mailMethod: ".$cls.""); + $tmp = new $cls($this->config,$this->parent,$this->type); + $tmp->init(); + return($tmp); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "","MAIL: Invalid mailMethod defined: ".$cls. + " falling back to ".get_class($this).""); + + /* Print out configuration errors directly, we can't catch them everywhere. + */ + msg_dialog::display(_("Configuration error"), + sprintf(_("Mail method '%s' is unknown!"), $method), ERROR_DIALOG); + } + } + + /* If no valued mailMethod could be detected, return the base class. + */ + $this->init(); + return($this); + } + + + /*! \brief Saves sieve settings + */ + public function saveSieveSettings() + { + $this->reset_error(); + return(TRUE); + } + + + /*! \brief Creates or Updates the mailAccount represented by this class. + */ + public function updateMailbox() + { + $this->reset_error(); + return(TRUE); + } + + + /*! \brief Update shared folder dependencies + */ + public function updateSharedFolder() + { + $this->reset_error(); + return(TRUE); + } + + + /*! \brief Removes the mailbox represented by this class, + and update shared folder ACLs . + */ + public function deleteMailbox() + { + $this->reset_error(); + + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "".$this->account_id."" , + "MAIL: Remove account from server :".$this->MailServer); + + return(TRUE); + } + + + /*! \brief Returns the used mail attribute (mail,uid) + @param String One out of 'mail','uid' + */ + public function getUAttrib() + { + return($this->uattrib); + } + + + /*! \brief Returns the used mail attribute (mail,uid) + @param String One out of 'mail','uid' + */ + public function getUAttribValue() + { + $uattrib = $this->getUAttrib(); + return($this->parent->$uattrib); + } + + + /*! \brief Returns whether the quota settings are enabled or not + @return Boolean TRUE if enabled else FALSE + */ + public function quotaEnabled() + { + return($this->enableQuota); + } + + + /*! \brief Returns the used quota + @return Integer Quota used. + */ + public function getQuotaUsage() + { + return(-1); + } + + + /*! \brief Returns the quota restrictions. + @return Integer Quota restrictions. + */ + public function getQuota($quotaValue) + { + return($quotaValue); + } + + + /*! \brief Sets the mail quota + */ + public function setQuota($number) + { + if(!is_numeric($number)){ + $number = (int) $number; + if(!$number){ + $number = 0; + } + } + $this->quotaValue = $number; + return(TRUE); + } + + + /*! \brief Returns true whether the domain is selectable or not + */ + public function domainSelectionEnabled() + { + return($this->enableDomainSelection); + } + + + /*! \brief Returns a list of configured mail domains + @return Array A list of mail domains + */ + public function getMailDomains() + { + return(array("Unconfigured")); + } + + + /*! \brief Returns the used Spamlevels for this mailmethod + */ + public function getSpamLevels() + { + $spamlevel= array(); + for ($i= 0; $i<21; $i++){ + $spamlevel[]= $i; + } + return($spamlevel); + } + + + /*! \brief Returns the list of configured mailbox folders + @return Array The mailbox folders. + */ + public function getMailboxList() + { + return(array("INBOX")); + } + + + /*! \brief Returns whether the vacation range is selectable or not + @return Boolean TRUE, FALSE + */ + public function vacationRangeEnabled() + { + return($this->enableVacationRange); + } + + + /*! \brief Returns true if the sieveManagement is allowed + @return Boolean TRUE, FALSE + */ + public function allowSieveManagement() + { + return($this->enableSieveManager); + } + + + /*! \brief Checks dependencies to other GOsa plugins. + */ + public function accountCreateable(&$reason = ""){ + return(TRUE); + } + + + /*! \brief Checks whether this account is removeable or not. + There may be some dependencies left, eg. kolab. + */ + public function accountRemoveable(&$reason = ""){ + return(TRUE); + } + + + /*! \brief Returns all mail servers configured in GOsa + that are useable with this mailMethod. + @return Array All useable mail servers. + */ + public function getMailServers() + { + $mailserver = array(); + $ui = get_userinfo(); + foreach ($this->config->data['SERVERS']['IMAP'] as $key => $val){ + if( $this->MailServer == $key || + preg_match("/r/",$ui->get_permissions($val['server_dn'],"server/goImapServer",""))){ + $mailserver[]= $key; + } + } + return($mailserver); + } + + + /*! \brief Returns the available mailMethods + @return Array A list of all avaialable mailMethods_ + */ + static protected function get_methods() + { + global $class_mapping; + $available = array(); + foreach($class_mapping as $class => $path){ + if($class == "mailMethod") continue; + if(preg_match("/^mailMethod/",$class)){ + $available[$class] = $class; + } + } + return($available); + } + + + /* \brief Some method require special folder types, "kolab" for example. + !! Those values are dummy values, the base class doesn't use folder types; + @return Array Return folder types. + */ + public function getAvailableFolderTypes() + { + $ret = array(); + $ret['CAT'][''] = _("None"); + $ret['SUB_CAT'][''][''] = _("None"); + return($ret); + } + + + /* \brief Returns the selected folder type. + !! Those values are dummy values, the base class doesn't use folder types; + @return Array The folde type. + */ + public function getFolderType($default) + { + return($default); + } + + + /* \brief Returns the selected folder type. + !! Those values are dummy values, the base class doesn't use folder types; + @return Array The folde type. + */ + public function setFolderType($type) + { + return(TRUE) ; + } + + + /*! \brief Returns configured acls + */ + public function getFolderACLs($folder_acls) + { + /* Merge given ACL with acl mapping + This ensures that no ACL will accidentally overwritten by gosa. + */ + foreach($folder_acls as $user => $acl){ + if(!isset($this->acl_mapping[$acl])){ + $this->acl_mapping[$acl] = $acl; + } + } + + return($folder_acls); + } + + + /*! \brief Write ACLs back to imap or what ever + */ + public function setFolderACLs($array) + { + return(TRUE); + } + + + /*! \brief Returns a list of all possible acls. + @return Array ACLs. + */ + public function getAclTypes() + { + return( $this->acl_mapping); + } + + public function folderTypesEnabled() + { + return($this->enableFolderTypes); + } + + public function allow_remove(&$reason) + { + return(TRUE); + } + + + /*! \brief Returns the configured mailMethod + @return String the configured mail method or "" + */ + static public function get_current_method($config) + { + global $class_mapping; + $method= $config->get_cfg_value("mailmethod"); + $cls = get_correct_class_name("mailMethod$method"); + foreach($class_mapping as $class => $path){ + if($class == $cls){ + return($class); + } + } + return(""); + } + + + static function quota_to_image($use,$quota) + { + if($use == -1){ + return("  "._("Unknown")); + }elseif(empty($quota)){ + return("  "._("Unlimited")); + }else{ + $usage =round(($use/$quota) * 100); + return(""); + } + } + + + /*! \brief Returns the default sharedFolder ACLs for this method. + @return Array Returns an array containg acls for __member__ and __anyone__ + */ + public function getDefaultACLs() + { + $tmp = $this->default_acls; + if(!isset($tmp['__member__'])) $tmp['__member__'] = " "; + if(!isset($tmp['__anyone__'])) $tmp['__anyone__'] = " "; + return($tmp); + } +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/class_mailAccount.inc b/trunk/gosa-plugins/mail/personal/mail/class_mailAccount.inc new file mode 100644 index 000000000..958770a58 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/class_mailAccount.inc @@ -0,0 +1,1450 @@ + + \version 2.6.2 + \date 03.12.2007 + + This class provides the functionality to read and write all attributes + relevant for gosaMailAccounts from/to the LDAP. + It does syntax checking and displays the formulars required. + Special handling like sieve or imap actions will be implemented + by the mailMethods. + + +Functions : + + - mailAccount (&$config, $dn= NULL) + - execute() + - save_object() + - get_vacation_templates() + - addForwarder($address) + - delForwarder($addresses) + - addAlternate($address) + - delAlternate($addresses) + - prepare_vacation_template($contents) + - display_forward_dialog() + - remove_from_parent() + - save() + - check() + - adapt_from_template($dn, $skip= array()) + - getCopyDialog() + - saveCopyDialog() + - PrepareForCopyPaste($source) + - get_multi_edit_values() + - multiple_check() + - set_multi_edit_values($values) + - init_multiple_support($attrs,$all) + - get_multi_init_values() + - multiple_execute() + - multiple_save_object() + - make_name($attrs) + - plInfo() + + + */ + +class mailAccount extends plugin +{ + /* Definitions */ + var $plHeadline = "Mail"; + var $plDescription = "This does something"; + var $view_logged = FALSE; + var $is_account = FALSE; + var $initially_was_account = FALSE; + + /* GOsa mail attributes */ + var $mail = ""; + var $gosaVacationStart = 0; + var $gosaVacationStop = 0; + var $gosaMailAlternateAddress = array(); + var $gosaMailForwardingAddress = array(); + var $gosaMailDeliveryMode = "[L ]"; + var $gosaMailServer = ""; + var $gosaMailQuota = ""; + var $gosaMailMaxSize = ""; + var $gosaVacationMessage = ""; + var $gosaSpamSortLevel = ""; + var $gosaSpamMailbox = ""; + + /* The methods defaults */ + var $quotaUsage = -1; // Means unknown + + var $mailMethod = NULL; + var $MailDomain = ""; + var $sieveManagementUsed = FALSE; + var $vacationTemplates = array(); + var $sieve_management = NULL; + var $forward_dialog = FALSE; + var $initial_uid = ""; + var $mailDomainPart = ""; + var $mailDomainParts = array(); + var $MailBoxes = array("INBOX"); + + /* Used LDAP attributes && classes */ + var $attributes= array( + "mail", "gosaMailServer","gosaMailQuota", "gosaMailMaxSize","gosaMailForwardingAddress", + "gosaMailDeliveryMode", "gosaSpamSortLevel", "gosaSpamMailbox","gosaMailAlternateAddress", + "gosaVacationStart","gosaVacationStop", "gosaVacationMessage", "gosaMailAlternateAddress", + "gosaMailForwardingAddress"); + var $objectclasses= array("gosaMailAccount"); + + var $multiple_support = TRUE; + + var $uid = ""; + var $cn = ""; + + + /*! \brief Initialize the mailAccount + */ + function __construct (&$config, $dn= NULL) + { + plugin::plugin($config,$dn); + + /* Get attributes from parent object + */ + foreach(array("uid","cn") as $attr){ + if(isset($this->parent->by_object['group']) && isset($this->parent->by_object['group']->$attr)){ + $this->$attr = &$this->parent->by_object['group']->$attr; + }elseif(isset($this->attrs[$attr])){ + $this->$attr = $this->attrs[$attr][0]; + } + } + + /* Intialize the used mailMethod + */ + $tmp = new mailMethod($config,$this); + $this->mailMethod = $tmp->get_method(); + $this->mailMethod->fixAttributesOnLoad(); + $this->mailDomainParts = $this->mailMethod->getMailDomains(); + $this->SpamLevels = $this->mailMethod->getSpamLevels(); + + /* Remember account status + */ + $this->initially_was_account = $this->is_account; + + /* Initialize vacation settings, if enabled. + */ + if(empty($this->gosaVacationStart) && $this->mailMethod->vacationRangeEnabled()){ + $this->gosaVacationStart = time(); + $this->gosaVacationStop = time(); + } + + /* Read vacation templates + */ + $this->vacationTemplates = $this->get_vacation_templates(); + + /* Initialize configured values + */ + if($this->is_account){ + + if($this->mailMethod->connect() && $this->mailMethod->account_exists()){ + + /* Read quota */ + $this->gosaMailQuota = $this->mailMethod->getQuota($this->gosaMailQuota); + $this->quotaUsage = $this->mailMethod->getQuotaUsage($this->quotaUsage); + if($this->mailMethod->is_error()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot read quota settings: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + + /* Read mailboxes */ + $this->MailBoxes = $this->mailMethod->getMailboxList($this->MailBoxes); + if($this->mailMethod->is_error()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot get list of mailboxes: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + + }elseif(!$this->mailMethod->is_connected()){ + msg_dialog::display(_("Mail error"), sprintf(_("Mail method cannot connect: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + }elseif(!$this->mailMethod->account_exists()){ + msg_dialog::display(_("Mail error"), sprintf(_("Mailbox '%s' doesn't exists on mail server: %s"), + $this->mailMethod->get_account_id(),$this->gosaMailServer), ERROR_DIALOG); + } + + /* If the doamin part is selectable, we have to split the mail address + */ + if(!(!$this->mailMethod->isModifyableMail() && $this->is_account)){ + if($this->mailMethod->domainSelectionEnabled()){ + $this->mailDomainPart = preg_replace("/^[^@]*+@/","",$this->mail); + $this->mail = preg_replace("/@.*$/","\\1",$this->mail); + if(!in_array($this->mailDomainPart,$this->mailDomainParts)){ + $this->mailDomainParts[] = $this->mailDomainPart; + } + } + } + + /* Load attributes containing arrays */ + foreach (array("gosaMailAlternateAddress", "gosaMailForwardingAddress") as $val){ + $this->$val= array(); + if (isset($this->attrs["$val"]["count"])){ + for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){ + array_push($this->$val, $this->attrs["$val"][$i]); + } + } + } + } + + /* Intialize sieveManagement if necessary */ + if($this->mailMethod->allowSieveManagement()){ + $this->mailboxList = &$this->MailBoxes; + $this->sieve_management = new sieveManagement($this->config,$this->dn,$this,$this->mailMethod->getUAttrib()); + } + + /* Get global filter config used in add local forward + */ + if (!session::is_set("mailfilter")){ + $ui= get_userinfo(); + $base= get_base_from_people($ui->dn); + $mailfilter= array( "depselect" => $base, + "muser" => "", + "regex" => "*"); + session::set("mailfilter", $mailfilter); + } + + /* Disconnect mailMethod. Connect on demand later. + */ + $this->mailMethod->disconnect(); + } + + + function execute() + { + + /* Call parent execute */ + $display = plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + + /**************** + Account status + ****************/ + + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable() && $this->mailMethod->accountRemoveAble()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable() && $this->mailMethod->accountCreateable()){ + $this->is_account= TRUE; + } + } + if(!$this->multiple_support_active){ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("Mail")).""; + $display.= back_to_main(); + return ($display); + } + if ($this->parent !== NULL){ + if ($this->is_account){ + $reason = ""; + if(!$this->mailMethod->accountRemoveable($reason)){ + $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Mail")),$reason ,TRUE,TRUE); + }else{ + $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Mail")),msgPool::featuresEnabled(_("Mail"))); + } + } else { + $reason = ""; + if(!$this->mailMethod->accountCreateable($reason)){ + $display= $this->show_disable_header(msgPool::addFeaturesButton(_("Mail")),$reason ,TRUE,TRUE); + }else{ + $display= $this->show_disable_header(msgPool::addFeaturesButton(_("Mail")),msgPool::featuresDisabled(_("Mail"))); + } + return ($display); + } + } + } + + /**************** + Sieve Management Dialog + ****************/ + if($this->mailMethod->allowSieveManagement()){ + if(isset($_POST['sieveManagement']) + && preg_match("/C/",$this->gosaMailDeliveryMode) + && $this->acl_is_writeable("sieveManagement") + && $this->mailMethod->allowSieveManagement()) { + $this->dialog = $this->sieve_management; + } + if(isset($_POST['sieve_cancel'])){ + $this->dialog = FALSE; + } + if(isset($_POST['sieve_finish'])){ + $this->sieve_management = $this->dialog; + $this->dialog = FALSE; + } + if(is_object($this->dialog)){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + } + + /**************** + Forward addresses + ****************/ + if (isset($_POST['add_local_forwarder'])){ + $this->forward_dialog= TRUE; + $this->dialog= TRUE; + } + if (isset($_POST['add_locals_cancel'])){ + $this->forward_dialog= FALSE; + $this->dialog= FALSE; + } + if (isset($_POST['add_locals_finish'])){ + if (isset($_POST['local_list'])){ + if($this->acl_is_writeable("gosaMailForwardingAddress")){ + foreach ($_POST['local_list'] as $val){ + if (!in_array ($val, $this->gosaMailAlternateAddress) && + $val != $this->mail){ + $this->addForwarder($val); + $this->is_modified= TRUE; + } + } + } + $this->forward_dialog= FALSE; + $this->dialog= FALSE; + } else { + msg_dialog::display(_("Error"), _("Please select an entry!"), ERROR_DIALOG); + } + } + if (isset($_POST['add_forwarder'])){ + if ($_POST['forward_address'] != ""){ + $address= $_POST['forward_address']; + $valid= FALSE; + if (!tests::is_email($address)){ + if (!tests::is_email($address, TRUE)){ + if ($this->is_template){ + $valid= TRUE; + } else { + msg_dialog::display(_("Error"), msgPool::invalid(_("Mail address"), + "","","your-address@your-domain.com"),ERROR_DIALOG); + } + } + } elseif ($address == $this->mail + || in_array($address, $this->gosaMailAlternateAddress)) { + msg_dialog::display(_("Error"),_("Cannot add primary address to the list of forwarders!") , ERROR_DIALOG); + } else { + $valid= TRUE; + } + if ($valid){ + if($this->acl_is_writeable("gosaMailForwardingAddress")){ + $this->addForwarder ($address); + $this->is_modified= TRUE; + } + } + } + } + if (isset($_POST['delete_forwarder'])){ + $this->delForwarder ($_POST['forwarder_list']); + } + if ($this->forward_dialog){ + return($this->display_forward_dialog()); + } + + + /**************** + Alternate addresses + ****************/ + + if (isset($_POST['add_alternate'])){ + $valid= FALSE; + if (!tests::is_email($_POST['alternate_address'])){ + if ($this->is_template){ + if (!(tests::is_email($_POST['alternate_address'], TRUE))){ + msg_dialog::display(_("Error"),msgPool::invalid(_("Mail address"),"","","your-domain@your-domain.com"),ERROR_DIALOG); + } else { + $valid= TRUE; + } + } else { + msg_dialog::display(_("Error"),msgPool::invalid(_("Mail address"),"","","your-domain@your-domain.com"),ERROR_DIALOG); + } + } else { + $valid= TRUE; + } + if ($valid && ($user= $this->addAlternate ($_POST['alternate_address'])) != ""){ + $ui= get_userinfo(); + if ($user != $ui->username){ + msg_dialog::display(_("Error"), msgPool::duplicated(_("Mail address"))." ". + sprintf(_("Address is already in use by user '%s'."), $user), ERROR_DIALOG); + } + } + } + if (isset($_POST['delete_alternate']) && isset($_POST['alternates_list'])){ + $this->delAlternate ($_POST['alternates_list']); + } + + /**************** + SMARTY- Assign smarty variables + ****************/ + $smarty = get_smarty(); + $smarty->assign("initially_was_account", $this->initially_was_account); + $smarty->assign("isModifyableMail" , $this->mailMethod->isModifyableMail()); + $smarty->assign("isModifyableServer", $this->mailMethod->isModifyableServer()); + $smarty->assign("mailEqualsCN", $this->mailMethod->mailEqualsCN()); + + $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $transl){ + $smarty->assign("$name"."ACL", $this->getacl($name,$SkipWrite)); + } + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + $smarty->assign("quotaEnabled", $this->mailMethod->quotaEnabled()); + if($this->mailMethod->quotaEnabled()){ + $smarty->assign("quotaUsage", mailMethod::quota_to_image($this->quotaUsage,$this->gosaMailQuota)); + $smarty->assign("gosaMailQuota",$this->gosaMailQuota); + } + $smarty->assign("domainSelectionEnabled", $this->mailMethod->domainSelectionEnabled()); + $smarty->assign("MailDomains", $this->mailDomainParts); + $smarty->assign("MailDomain" , $this->mailDomainPart); + $smarty->assign("MailServers", $this->mailMethod->getMailServers()); + $smarty->assign("allowSieveManagement", $this->mailMethod->allowSieveManagement()); + $smarty->assign("own_script", $this->sieveManagementUsed); + + /* _Multiple users vars_ */ + foreach($this->attributes as $attr){ + $u_attr = "use_".$attr; + $smarty->assign($u_attr,in_array($attr,$this->multi_boxes)); + } + foreach(array("only_local","gosaMailForwardingAddress","use_mailsize_limit","drop_own_mails","use_vacation","use_spam_filter") as $attr){ + $u_attr = "use_".$attr; + $smarty->assign($u_attr,in_array($attr,$this->multi_boxes)); + } + + + /**************** + SMARTY- Assign flags + ****************/ + + $types = array( + "V"=>"use_vacation", + "S"=>"use_spam_filter", + "R"=>"use_mailsize_limit", + "I"=>"drop_own_mails", + "C"=>"own_script"); + foreach($types as $option => $varname){ + if (preg_match("/".$option."/", $this->gosaMailDeliveryMode)) { + $smarty->assign($varname, "checked"); + } else { + $smarty->assign($varname, ""); + } + } + if (!preg_match("/L/", $this->gosaMailDeliveryMode)) { + $smarty->assign("only_local", "checked"); + } else { + $smarty->assign("only_local", ""); + } + + + /**************** + Smarty- Vacation settings + ****************/ + $smarty->assign("rangeEnabled", FALSE); + $smarty->assign("template", ""); + if (count($this->vacationTemplates)){ + $smarty->assign("show_templates", "true"); + $smarty->assign("vacationtemplates", $this->vacationTemplates); + if (isset($_POST['vacation_template'])){ + $smarty->assign("template", $_POST['vacation_template']); + } + } else { + $smarty->assign("show_templates", "false"); + } + + /* Vacation range assigments + */ + if($this->mailMethod->vacationRangeEnabled()){ + $smarty->assign("rangeEnabled", TRUE); + if($this->gosaVacationStop ==0){ + $date= getdate(time()); + $date["mday"]++; + }else{ + $date= getdate($this->gosaVacationStop); + } + $smarty->assign("end_day", $date["mday"]); + $smarty->assign("end_month", $date["mon"]-1); + $smarty->assign("end_year", $date["year"]); + + if($this->gosaVacationStart == 0){ + $date= getdate(time()); + }else{ + $date= getdate($this->gosaVacationStart); + } + $smarty->assign("start_day", $date["mday"]); + $smarty->assign("start_month", $date["mon"]-1); + $smarty->assign("start_year", $date["year"]); + $days= array(); + for($d= 1; $d<32; $d++){ + $days[$d]= $d; + } + $years= array(); + for($y= $date['year']-10; $y<$date['year']+10; $y++){ + $years[]= $y; + } + $months= msgPool::months(); + $smarty->assign("months", $months); + $smarty->assign("years", $years); + $smarty->assign("days", $days); + } + + /* fill filter settings + */ + $smarty->assign("spamlevel", $this->SpamLevels); + $smarty->assign("spambox" , $this->MailBoxes); + + $smarty->assign("multiple_support",$this->multiple_support_active); + return($display.$smarty->fetch(get_template_path("generic.tpl",TRUE,dirname(__FILE__)))); + } + + + + /* Save data to object */ + function save_object() + { + if (isset($_POST['mailTab'])){ + + /* Save ldap attributes */ + $mail = $this->mail; + $server = $this->gosaMailServer; + plugin::save_object(); + + if(!$this->mailMethod->isModifyableServer() && $this->initially_was_account){ + $this->gosaMailServer = $server; + } + + if(!$this->mailMethod->isModifyableMail() && $this->initially_was_account){ + $this->mail = $mail; + }else{ + + /* Get posted mail domain part, if necessary + */ + if($this->mailMethod->domainSelectionEnabled() && isset($_POST['MailDomain'])){ + if(in_array(get_post('MailDomain'), $this->mailDomainParts)){ + $this->mailDomainPart = get_post('MailDomain'); + } + } + } + + /* Import vacation message? + */ + if (isset($_POST["import_vacation"]) && isset($this->vacationTemplates[$_POST["vacation_template"]])){ + if($this->multiple_support_active){ + $contents = ltrim(preg_replace("/^DESC:.*$/m","",file_get_contents($_POST["vacation_template"]))); + }else{ + $contents = $this->prepare_vacation_template(file_get_contents($_POST["vacation_template"])); + } + $this->gosaVacationMessage= htmlspecialchars($contents); + } + + /* Handle flags + */ + if(isset($_POST['own_script'])){ + if(!preg_match("/C/",$this->gosaMailDeliveryMode)){ + $str= preg_replace("/[\[\]]/","",$this->gosaMailDeliveryMode); + $this->gosaMailDeliveryMode = "[".$str."C]"; + } + }else{ + + /* Assemble mail delivery mode + The mode field in ldap consists of values between braces, this must + be called when 'mail' is set, because checkboxes may not be set when + we're in some other dialog. + + Example for gosaMailDeliveryMode [LR ] + L - Local delivery + R - Reject when exceeding mailsize limit + S - Use spam filter + V - Use vacation message + C - Use custm sieve script + I - Only insider delivery */ + + $tmp= preg_replace("/[^a-z]/i","",$this->gosaMailDeliveryMode); + + + /* Handle delivery flags */ + if($this->acl_is_writeable("gosaMailDeliveryModeL")){ + if(!preg_match("/L/",$tmp) && !isset($_POST['only_local'])){ + $tmp.="L"; + }elseif(preg_match("/L/",$tmp) && isset($_POST['only_local'])){ + $tmp = preg_replace("/L/","",$tmp); + } + } + $opts = array( + "R" => "use_mailsize_limit", + "S" => "use_spam_filter", + "V" => "use_vacation", + "C" => "own_script", + "I" => "drop_own_mails"); + + foreach($opts as $flag => $post){ + if($this->acl_is_writeable("gosaMailDeliveryMode".$flag)){ + if(!preg_match("/".$flag."/",$tmp) && isset($_POST[$post])){ + $tmp.= $flag; + }elseif(preg_match("/".$flag."/",$tmp) && !isset($_POST[$post])){ + $tmp = preg_replace("/".$flag."/","",$tmp); + } + } + } + + $tmp= "[$tmp]"; + if ($this->gosaMailDeliveryMode != $tmp){ + $this->is_modified= TRUE; + } + $this->gosaMailDeliveryMode= $tmp; + + /* Get start/stop values for vacation scope of application + */ + if($this->mailMethod->vacationRangeEnabled()){ + if($this->acl_is_writeable("gosaVacationMessage") && preg_match("/V/",$this->gosaMailDeliveryMode)){ + if(isset($_POST['gosaVacationStart'])){ + $this->gosaVacationStart = $_POST['gosaVacationStart']; + } + if(isset($_POST['gosaVacationStop'])){ + $this->gosaVacationStop = $_POST['gosaVacationStop']; + } + } + } + } + } + } + + + /*! \brief Parse vacation templates and build up an array + containing 'filename' => 'description'. + Used to fill vacation dropdown box. + @return Array All useable vacation templates. + */ + function get_vacation_templates() + { + $vct = array(); + if ($this->config->get_cfg_value("vacationTemplateDirectory") != ""){ + $dir= $this->config->get_cfg_value("vacationTemplateDirectory"); + if (is_dir($dir) && is_readable($dir)){ + $dh = opendir($dir); + while($file = readdir($dh)){ + $description= ""; + if (is_file($dir."/".$file)){ + $fh = fopen($dir."/".$file, "r"); + $line= fgets($fh, 256); + if (!preg_match('/^DESC:/', $line)){ + msg_dialog::display(_("Configuration error"), sprintf(_("No DESC tag in vacation template '%s'!"), $file), ERROR_DIALOG); + }else{ + $description= trim(preg_replace('/^DESC:\s*/', '', $line)); + } + fclose ($fh); + } + if ($description != ""){ + $vct["$dir/$file"]= $description; + } + } + closedir($dh); + } + } + return($vct); + } + + + /*! \brief Adds the given mail address to the list of mail forwarders + */ + function addForwarder($address) + { + if(empty($address)) return; + if($this->acl_is_writeable("gosaMailForwardingAddress")){ + $this->gosaMailForwardingAddress[]= $address; + $this->gosaMailForwardingAddress= array_unique ($this->gosaMailForwardingAddress); + sort ($this->gosaMailForwardingAddress); + reset ($this->gosaMailForwardingAddress); + $this->is_modified= TRUE; + }else{ + msg_dialog::display(_("Permission error"), _("You have no permission to modify these addresses!"), ERROR_DIALOG); + } + } + + + /*! \brief Removes the given mail address from the list of mail forwarders + */ + function delForwarder($addresses) + { + if($this->acl_is_writeable("gosaMailForwardingAddress")){ + $this->gosaMailForwardingAddress= array_remove_entries ($addresses, $this->gosaMailForwardingAddress); + $this->is_modified= TRUE; + }else{ + msg_dialog::display(_("Permission error"), _("You have no permission to modify these addresses!"), ERROR_DIALOG); + } + } + + + /*! \brief Add given mail address to the list of alternate adresses , + . check if this mal address is used, skip adding in this case + */ + function addAlternate($address) + { + if(empty($address)) return; + if($this->acl_is_writeable("gosaMailAlternateAddress")){ + $ldap= $this->config->get_ldap_link(); + $address= strtolower($address); + + /* Is this address already assigned in LDAP? */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(!(objectClass=gosaUserTemplate))(objectClass=gosaMailAccount)(|(mail=$address)". + "(alias=$address)(gosaMailAlternateAddress=$address)))", array("uid")); + if ($ldap->count() > 0){ + $attrs= $ldap->fetch (); + return ($attrs["uid"][0]); + } + if (!in_array($address, $this->gosaMailAlternateAddress)){ + $this->gosaMailAlternateAddress[]= $address; + $this->is_modified= TRUE; + } + sort ($this->gosaMailAlternateAddress); + reset ($this->gosaMailAlternateAddress); + return (""); + }else{ + msg_dialog::display(_("Permission error"), _("You have no permission to modify these addresses!"), ERROR_DIALOG); + } + } + + + /*! \brief Removes the given mail address from the alternate addresses list + */ + function delAlternate($addresses) + { + if($this->acl_is_writeable("gosaMailAlternateAddress")){ + $this->gosaMailAlternateAddress= array_remove_entries ($addresses,$this->gosaMailAlternateAddress); + $this->is_modified= TRUE; + }else{ + msg_dialog::display(_("Permission error"), _("You have no permission to modify these addresses!"), ERROR_DIALOG); + } + } + + + /*! \brief Prepare importet vacation string. \ + . Replace placeholder like %givenName a.s.o. + @param string Vacation string + @return string Completed vacation string + */ + private function prepare_vacation_template($contents) + { + /* Replace attributes */ + $attrs = array(); + $obj = NULL; + if(isset($this->parent->by_object['user'])){ + $attrs = $this->parent->by_object['user']->attributes; + $obj = $this->parent->by_object['user']; + }else{ + $obj = new user($this->config,$this->dn); + $attrs = $obj->attributes; + } + if($obj){ + + /* Replace vacation start and end time */ + if($this->mailMethod->vacationRangeEnabled()){ + if(preg_match("/%start/",$contents)){ + $contents = preg_replace("/%start/",date("d.m.Y",$this->gosaVacationStart),$contents); + } + if(preg_match("/%end/",$contents)){ + $contents = preg_replace("/%end/",date("d.m.Y",$this->gosaVacationStop),$contents); + } + }else{ + if(preg_match("/%start/",$contents)){ + $contents = preg_replace("/%start/", _("unknown"),$contents); + } + if(preg_match("/%end/",$contents)){ + $contents = preg_replace("/%end/", _("unknown"), $contents); + } + } + + foreach ($attrs as $val){ + if(preg_match("/dateOfBirth/",$val)){ + if($obj->use_dob){ + $contents= preg_replace("/%$val/",date("Y-d-m",$obj->dateOfBirth),$contents); + } + }else { + $contents= preg_replace("/%$val/", + $obj->$val, $contents); + } + + } + } + $contents = ltrim(preg_replace("/^DESC:.*$/m","",$contents),"\n "); + return($contents); + } + + + /*! \brief Displays a dialog that allows mail address selection. + */ + function display_forward_dialog() + { + restore_error_handler(); + + $smarty = get_smarty(); + $ldap= $this->config->get_ldap_link(); + + /* Save data */ + $mailfilter= session::get("mailfilter"); + foreach( array("depselect", "muser", "regex") as $type){ + if (isset($_POST[$type])){ + $mailfilter[$type]= $_POST[$type]; + } + } + if (isset($_GET['search'])){ + $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*"; + if ($s == "**"){ + $s= "*"; + } + $mailfilter['regex']= $s; + } + session::set("mailfilter", $mailfilter); + + /* Get actual list */ + $mailusers= array (); + if ($mailfilter['regex'] != '*' && $mailfilter['regex'] != ""){ + $regex= $mailfilter['regex']; + $filter= "(|(mail=$regex)(gosaMailAlternateAddress=$regex))"; + } else { + $filter= ""; + } + if ($mailfilter['muser'] != ""){ + $user= $mailfilter['muser']; + $filter= "$filter(|(uid=$user)(cn=$user)(givenName=$user)(sn=$user))"; + } + + /* Add already present people to the filter */ + $exclude= ""; + foreach ($this->gosaMailForwardingAddress as $mail){ + $exclude.= "(mail=$mail)"; + } + if ($exclude != ""){ + $filter.= "(!(|$exclude))"; + } + $res= get_list("(&(objectClass=gosaMailAccount)$filter)", "users", $mailfilter['depselect'], + array("sn", "mail", "givenName"), GL_SIZELIMIT | GL_SUBSEARCH); + $ldap->cd($mailfilter['depselect']); + $ldap->search ("(&(objectClass=gosaMailAccount)$filter)", array("sn", "mail", "givenName")); + while ($attrs= $ldap->fetch()){ + if(preg_match('/%/', $attrs['mail'][0])){ + continue; + } + $name= $this->make_name($attrs); + $mailusers[$attrs['mail'][0]]= $name."<". + $attrs['mail'][0].">"; + } + natcasesort ($mailusers); + reset ($mailusers); + + /* Show dialog */ + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("usearch_image", get_template_path('images/lists/search-user.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("infoimage", get_template_path('images/info.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("mailusers", $mailusers); + if (isset($_POST['depselect'])){ + $smarty->assign("depselect", $_POST['depselect']); + } + $smarty->assign("deplist", $this->config->idepartments); + $smarty->assign("apply", apply_filter()); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("hint", print_sizelimit_warning()); + foreach( array("depselect", "muser", "regex") as $type){ + $smarty->assign("$type", $mailfilter[$type]); + } + $smarty->assign("hint", print_sizelimit_warning()); + $display= $smarty->fetch (get_template_path('mail_locals.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + + /*! \brief Removes the mailAccount extension from ldap + */ + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + /* If domain part was selectable, contruct mail address */ + if($this->mailMethod->domainSelectionEnabled()){ + $this->mail = $this->mail."@".$this->mailDomainPart; + } + + /* Update sharedFolder dependencies. + Open each shared folder and remove this account. + Then Save the group to ensure that all necessary + actions will be taken (imap acls updated aso.). + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaMailAccount)(memberUid=".$this->uid."))",array("dn")); + while($attrs = $ldap->fetch()){ + $grp = new grouptabs($this->config, $this->config->data['TABS']['GROUPTABS'], $attrs['dn']); + if(isset($grp->by_object['mailgroup']) && isset($grp->by_object['group'])){ + $grp->by_object['group']->removeUser($this->uid); + + /* Do not save the complete group! This will quit the complete membership + */ + $grp->by_object['mailgroup']->save(); + } + } + + /* Remove GOsa attributes */ + plugin::remove_from_parent(); + + /* Zero arrays */ + $this->attrs['gosaMailAlternateAddress'] = array(); + $this->attrs['gosaMailForwardingAddress']= array(); + + + $this->mailMethod->fixAttributesOnRemove(); + $this->cleanup(); + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,$this->attributes, "Save"); + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->modify ($this->attrs); + + /* Add "view" to logging class */ + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Let the mailMethod remove this mailbox, e.g. from imap and + update shared folder membership, ACL may need to be updated. + */ + if (!$this->is_template){ + + if(!$this->mailMethod->connect()){ + msg_dialog::display(_("Mail error"), sprintf(_("Mail method cannot connect: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + }else{ + if(!$this->mailMethod->deleteMailbox()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot remove mailbox: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + } + } + $this->mailMethod->disconnect(); + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove",array("uid" => $this->uid)); + } + + + /*! \brief Save the mailAccount settings to the ldap database. + */ + function save() + { + $ldap= $this->config->get_ldap_link(); + + /* If domain part was selectable, contruct mail address */ + if(!(!$this->mailMethod->isModifyableMail() && $this->initially_was_account)){ + + if($this->mailMethod->domainSelectionEnabled()){ + $this->mail = $this->mail."@".$this->mailDomainPart; + } + + /* Enforce lowercase mail address and trim whitespaces + */ + $this->mail = trim(strtolower($this->mail)); + } + + + /* Call parents save to prepare $this->attrs */ + plugin::save(); + + /* Save arrays */ + $this->attrs['gosaMailAlternateAddress'] = $this->gosaMailAlternateAddress; + $this->attrs['gosaMailForwardingAddress']= $this->gosaMailForwardingAddress; + + if(!$this->mailMethod->vacationRangeEnabled()){ + $this->attrs['gosaVacationStart'] = $this->attrs['gosaVacationStop'] = array(); + }elseif (!preg_match('/V/', $this->gosaMailDeliveryMode)){ + unset($this->attrs['gosaVacationStart']); + unset($this->attrs['gosaVacationStop']); + } + + /* Map method attributes */ + $this->mailMethod->fixAttributesOnStore(); + + /* Save data to LDAP */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + /* Only do IMAP actions if we are not a template */ + if (!$this->is_template){ + $this->mailMethod->connect(); + if(!$this->mailMethod->is_connected()){ + msg_dialog::display(_("Mail error"), sprintf(_("Mail method cannot connect: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + }else{ + if(!$this->mailMethod->updateMailbox()){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot update mailbox: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + if(!$this->mailMethod->setQuota($this->gosaMailQuota)){ + msg_dialog::display(_("Mail error"), sprintf(_("Cannot write quota settings: %s"), + $this->mailMethod->get_error()), ERROR_DIALOG); + } + + if (!is_integer(strpos($this->gosaMailDeliveryMode, "C"))){ + + /* Do not write sieve settings if this account is new and + doesn't seem to exist. + */ + if(!$this->initially_was_account && !$this->mailMethod->account_exists()){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, + "Skipping sieve settings, the account doesn't seem to be created already.
",""); + }else{ + if(!$this->mailMethod->saveSieveSettings()){ + msg_dialog::display(_("Mail error"), $this->mailMethod->get_error(), ERROR_DIALOG); + } + } + }else{ + echo "Check sieve management here"; + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, + "User uses an own sieve script, skipping sieve update.".$str."",""); + } + } + } + $this->mailMethod->disconnect(); + + /* Update sharedFolder dependencies. + Open each shared folder and remove this account. + Then Save the group to ensure that all necessary + actions will be taken (imap acls updated aso.). + */ + if(!$this->initially_was_account){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=posixGroup)(objectClass=gosaMailAccount)(memberUid=".$this->uid."))",array("dn")); + while($attrs = $ldap->fetch()){ + $grp = new grouptabs($this->config, $this->config->data['TABS']['GROUPTABS'], $attrs['dn']); + if(isset($grp->by_object['mailgroup'])){ + /* Do not save the complete group! This will quit the complete membership + */ + $grp->by_object['mailgroup']->save(); + } + } + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify", array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add", array("uid" => $this->uid)); + } + } + + + /*! \brief Check given values + */ + function check() + { + if(!$this->is_account){ + return(array()); + } + + $ldap= $this->config->get_ldap_link(); + + /* Call common method to give check the hook */ + $message= plugin::check(); + + if(empty($this->gosaMailServer)){ + $message[]= msgPool::noserver(_("Mail")); + } + + /* Mail address checks */ + $mail = $this->mail; + if(!(!$this->mailMethod->isModifyableMail() && $this->initially_was_account)){ + + if($this->mailMethod->domainSelectionEnabled()){ + $mail.= "@".$this->mailDomainPart; + } + + if (empty($mail)){ + $message[]= msgPool::required(_("Primary address")); + } + if ($this->is_template){ + if (!tests::is_email($mail, TRUE)){ + $message[]= msgPool::invalid(_("Mail address"),"","","%givenName.%sn@your-domain.com"); + } + } else { + if (!tests::is_email($mail)){ + $message[]= msgPool::invalid(_("Mail address"),"","","your-address@your-domain.com"); + } + } + + /* Check if this mail address is already in use */ + $ldap->cd($this->config->current['BASE']); + $filter = "(&(!(objectClass=gosaUserTemplate))(!(uid=".$this->uid."))". + "(objectClass=gosaMailAccount)". + "(|(mail=".$mail.")(alias=".$mail.")(gosaMailAlternateAddress=".$mail.")))"; + $ldap->search($filter,array("uid")); + if ($ldap->count() != 0){ + $message[]= msgPool::duplicated(_("Mail address")); + } + } + + + /* Check quota */ + if ($this->gosaMailQuota != '' && $this->acl_is_writeable("gosaMailQuota")){ + if (!is_numeric($this->gosaMailQuota)) { + $message[]= msgPool::invalid(_("Quota size"),$this->gosaMailQuota,"/^[0-9]*/"); + } else { + $this->gosaMailQuota= (int) $this->gosaMailQuota; + } + } + + /* Check rejectsize for integer */ + if ($this->gosaMailMaxSize != '' && $this->acl_is_writeable("gosaMailMaxSize")){ + if (!is_numeric($this->gosaMailMaxSize)){ + $message[]= msgPool::invalid(_("Mail reject size"),$this->gosaMailMaxSize,"/^[0-9]*/"); + } else { + $this->gosaMailMaxSize= (int) $this->gosaMailMaxSize; + } + } + + /* Need gosaMailMaxSize if use_mailsize_limit is checked */ + if (is_integer(strpos($this->gosaMailDeliveryMode, "R")) && $this->gosaMailMaxSize == ""){ + $message[]= msgPool::required(_("Mail reject size")); + } + + if((preg_match("/S/", $this->gosaMailDeliveryMode))&&(empty($this->gosaSpamMailbox))) { + $message[]= msgPool::required(_("Spam folder")); + } + + if ($this->mailMethod->vacationRangeEnabled() + && preg_match('/V/', $this->gosaMailDeliveryMode) + && $this->gosaVacationStart > $this->gosaVacationStop){ + $message[]= msgPool::invalid(_("Vacation interval")); + } + return($message); + } + + + /*! \brief Adapt from template, using 'dn' + */ + function adapt_from_template($dn, $skip= array()) + { + plugin::adapt_from_template($dn, $skip); + + foreach (array("gosaMailAlternateAddress", "gosaMailForwardingAddress") as $val){ + + if (in_array($val, $skip)){ + continue; + } + + $this->$val= array(); + if (isset($this->attrs["$val"]["count"])){ + for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){ + $value= $this->attrs["$val"][$i]; + foreach (array("sn", "givenName", "uid") as $repl){ + if (preg_match("/%$repl/i", $value)){ + $value= preg_replace ("/%$repl/i", $this->parent->$repl, $value); + } + } + array_push($this->$val, strtolower(rewrite($value))); + } + } + } + $this->mail= strtolower(rewrite($this->mail)); + } + + + /*! \brief Creates the mail part for the copy & paste dialog + */ + function getCopyDialog() + { + if(!$this->is_account) return(""); + $smarty = get_smarty(); + $smarty->assign("mail",$this->mail); + $smarty->assign("gosaMailAlternateAddress",$this->gosaMailAlternateAddress); + $smarty->assign("gosaMailForwardingAddress",$this->gosaMailForwardingAddress); + $str = $smarty->fetch(get_template_path("copypaste.tpl",TRUE, dirname(__FILE__))); + + $ret = array(); + $ret['status'] = ""; + $ret['string'] = $str; + return($ret); + } + + + /*! \brief save_object for copy&paste vars + */ + function saveCopyDialog() + { + if(!$this->is_account) return; + + /* Execute to save mailAlternateAddress && gosaMailForwardingAddress */ + $this->execute(); + if(isset($_POST['mail'])){ + $this->mail = $_POST['mail']; + } + } + + + /*! \brief Prepare this account to be copied + */ + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Reset alternate mail addresses */ + $this->gosaMailAlternateAddress = array(); + } + + + /*! \brief Prepare this class the be useable when editing multiple users at once + */ + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("gosaMailQuota",$this->multi_boxes)){ + $ret['gosaMailQuota'] = $this->gosaMailQuota; + } + $flag_add = $flag_remove = array(); + $tmp= preg_replace("/[^a-z]/i","",$this->gosaMailDeliveryMode); + $opts = array( + "R" => "use_mailsize_limit", + "S" => "use_spam_filter", + "L" => "only_local", + "V" => "use_vacation", + "C" => "own_script", + "I" => "drop_own_mails"); + foreach($opts as $flag => $post){ + if(in_array($post, $this->multi_boxes)){ + if(preg_match("/".$flag."/",$tmp)){ + $flag_add[] = $flag; + }else{ + $flag_remove[] = $flag; + } + } + } + $ret['flag_add'] = $flag_add; + $ret['flag_remove'] = $flag_remove; + + if($this->mailMethod->vacationRangeEnabled()){ + if(in_array("V",$flag_add)){ + $ret['gosaVacationStart'] = $this->gosaVacationStart = $_POST['gosaVacationStart']; + $ret['gosaVacationStop'] = $this->gosaVacationStop = $_POST['gosaVacationStop']; + } + } + return($ret); + } + + + /*! \brief Check given input for multiple user edit + */ + function multiple_check() + { + $message = plugin::multiple_check(); + + if(empty($this->gosaMailServer) && in_array("gosaMailServer",$this->multi_boxes)){ + $message[]= msgPool::noserver(_("Mail")); + } + + /* Check quota */ + if ($this->gosaMailQuota != '' && in_array("gosaMailQuota",$this->multi_boxes)){ + if (!is_numeric($this->gosaMailQuota)) { + $message[]= msgPool::invalid(_("Quota size"),$this->gosaMailQuota,"/^[0-9]*/"); + } else { + $this->gosaMailQuota= (int) $this->gosaMailQuota; + } + } + + /* Check rejectsize for integer */ + if ($this->gosaMailMaxSize != '' && in_array("gosaMailMaxSize",$this->multi_boxes)){ + if (!is_numeric($this->gosaMailMaxSize)){ + $message[]= msgPool::invalid(_("Mail reject size"),$this->gosaMailMaxSize,"/^[0-9]*/"); + } else { + $this->gosaMailMaxSize= (int) $this->gosaMailMaxSize; + } + } + + if(empty($this->gosaSpamMailbox) && in_array("gosaSpamMailbox",$this->multi_boxes)){ + $message[]= msgPool::required(_("Spam folder")); + } + + if ($this->mailMethod->vacationRangeEnabled() && in_array("use_vacation",$this->multi_boxes) && + preg_match('/V/', $this->gosaMailDeliveryMode) && $this->gosaVacationStart > $this->gosaVacationStop){ + $message[]= msgPool::invalid(_("Vacation interval")); + } + return($message); + } + + + /*! \brief ... + */ + function set_multi_edit_values($values) + { + plugin::set_multi_edit_values($values); + $tmp= preg_replace("/[^a-z]/i","",$this->gosaMailDeliveryMode); + if(isset($values['flag_add'])){ + foreach($values['flag_add'] as $flag){ + if(!preg_match("/".$flag."/",$tmp)){ + $tmp .= $flag; + } + } + } + if(isset($values['flag_remove'])){ + foreach($values['flag_remove'] as $flag){ + if(preg_match("/".$flag."/",$tmp)){ + $tmp = preg_replace("/".$flag."/","",$tmp); + } + } + } + $this->gosaMailDeliveryMode = "[".$tmp."]"; + + /* Set vacation message and replace placeholder like %givenName + */ + if(isset($values['gosaVacationMessage'])){ + $this->gosaVacationMessage = $this->prepare_vacation_template($values['gosaVacationMessage']); + } + } + + + /*! \brief Initialize plugin to be used as multiple edit class. + */ + function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + if(isset($this->multi_attrs['gosaMailQuota'])){ + $this->gosaMailQuota = $this->multi_attrs['gosaMailQuota']; + } + } + + + /*! \brief + */ + function get_multi_init_values() + { + $attrs = plugin::get_multi_init_values(); + $attrs['gosaMailQuota'] = $this->gosaMailQuota; + return($attrs); + } + + + /*! \brief Display multiple edit dialog + */ + function multiple_execute() + { + return($this->execute()); + } + + + /*! \brief Save posts from multiple edit dialog + */ + function multiple_save_object() + { + plugin::multiple_save_object(); + + $this->save_object(); + foreach(array("only_local","gosaMailForwardingAddress","use_mailsize_limit","drop_own_mails","use_vacation","use_spam_filter") as $attr){ + if(isset($_POST["use_".$attr])){ + $this->multi_boxes[] = $attr; + } + } + } + + + /*! \brief Creates the user names for the add_local_forward dialog + */ + function make_name($attrs) + { + $name= ""; + if (isset($attrs['sn'][0])){ + $name= $attrs['sn'][0]; + } + if (isset($attrs['givenName'][0])){ + if ($name != ""){ + $name.= ", ".$attrs['givenName'][0]; + } else { + $name.= $attrs['givenName'][0]; + } + } + if ($name != ""){ + $name.= " "; + } + + return ($name); + } + + + function allow_remove() + { + $resason = ""; + if(!$this->mailMethod->allow_remove($reason)){ + return($reason); + } + return(""); + } + + + + /*! \brief ACL settings + */ + static function plInfo() + { + return (array( + "plShortName" => _("Mail"), + "plDescription" => _("Mail settings"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), // This plugin depends on + "plPriority" => 4, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + "mail" => _("Mail address"), + "gosaMailServer" => _("Mail server"), + "gosaMailQuota" => _("Quota size"), + + "gosaMailDeliveryModeV" => _("Add vacation information"), // This is flag of gosaMailDeliveryMode + "gosaVacationMessage" => _("Vacation message"), + + "gosaMailDeliveryModeS" => _("Use spam filter"), // This is flag of gosaMailDeliveryMode + "gosaSpamSortLevel" => _("Spam level"), + "gosaSpamMailbox" => _("Spam mail box"), + + "sieveManagement" => _("Sieve management"), + + "gosaMailDeliveryModeR" => _("Reject due to mailsize"), // This is flag of gosaMailDeliveryMode + "gosaMailMaxSize" => _("Mail max size"), + + "gosaMailForwardingAddress" => _("Forwarding address"), + "gosaMailDeliveryModeL" => _("Local delivery"), // This is flag of gosaMailDeliveryMode + "gosaMailDeliveryModeI" => _("No delivery to own mailbox "), // This is flag of gosaMailDeliveryMode + "gosaMailAlternateAddress" => _("Mail alternative addresses"), + + "gosaMailForwardingAddress" => _("Forwarding address"), + "gosaMailDeliveryModeC" => _("Use custom sieve script")) // This is flag of gosaMailDeliveryMode + )); + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/copypaste.tpl b/trunk/gosa-plugins/mail/personal/mail/copypaste.tpl new file mode 100644 index 000000000..ead480817 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/copypaste.tpl @@ -0,0 +1,70 @@ +

{t}Mail settings{/t}

+ + + + + + + + + +
+ + + + + + + + +
{$must}
+

+ +

+
+
+ + + + +
+

+ + +

+
+
+ + + + +
+ +
+ +   +   + +
+
+ + + + +
+ +
+ + + +
+
+
+
diff --git a/trunk/gosa-plugins/mail/personal/mail/generic.tpl b/trunk/gosa-plugins/mail/personal/mail/generic.tpl new file mode 100644 index 000000000..e186fd789 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/generic.tpl @@ -0,0 +1,343 @@ + + + + + + + + + + + + +
+ +

 {t}Generic{/t}

+ +{if !$multiple_support} + + + + + + + + +{/if} + + + + +{if $quotaEnabled} + + + + + + + + +{/if} +
{$must} + {if !$isModifyableMail && $initially_was_account} + + {else} + {if $domainSelectionEnabled} + {render acl=$mailACL} + + {/render} + @ + {else} + {render acl=$mailACL} + + {/render} + {/if} + {/if} +
+ {if !$isModifyableServer && $initially_was_account} + + {else} + +{render acl=$gosaMailServerACL} + +{/render} + {/if} +
  +
{t}Quota usage{/t}{$quotaUsage}
+{render acl=$gosaMailQuotaACL checkbox=$multiple_support checked=$use_gosaMailQuota} + MB + {/render} +
+
+   + +{if !$multiple_support} +

+{render acl=$gosaMailAlternateAddressACL} + +
+{render acl=$gosaMailAlternateAddressACL} + +{/render} +{render acl=$gosaMailAlternateAddressACL} + +{/render} +{render acl=$gosaMailAlternateAddressACL} + +{/render} +{/if} +
+

 

+ + + + +{if $allowSieveManagement} + + + +{/if} +
+{render acl=$gosaMailDeliveryModeCACL} + {t}Use custom sieve script{/t} ({t}disables all Mail options!{/t}) +{/render} +
+{render acl=$sieveManagementACL} + +{/render} +
+
+

 

+
+ + + + + + + + + + +
+{render acl=$gosaMailDeliveryModeIACL checkbox=$multiple_support checked=$use_drop_own_mails} + {t}No delivery to own mailbox{/t} +{/render} +
+ +{render acl=$gosaMailDeliveryModeVACL checkbox=$multiple_support checked=$use_use_vacation} + {t}Activate vacation message{/t} +{/render} + +
+ +{if $rangeEnabled} + + + + + + + + + +
{t}from{/t} +{render acl=$gosaVacationMessageACL} + +{/render} +{render acl=$gosaVacationMessageACL} + +{/render} +{render acl=$gosaVacationMessageACL} + +{/render} + +
{t}till{/t} +{render acl=$gosaVacationMessageACL} + +{/render} +{render acl=$gosaVacationMessageACL} + +{/render} +{render acl=$gosaVacationMessageACL} + +{/render} + +
+{/if} +
  +{render acl=$gosaMailDeliveryModeSACL checkbox=$multiple_support checked=$use_use_spam_filter} + +{/render} + +{render acl=$gosaSpamSortLevelACL checkbox=$multiple_support checked=$use_gosaSpamSortLevel} + +{/render} + +{render acl=$gosaSpamMailboxACL checkbox=$multiple_support checked=$use_gosaSpamMailbox} + +{/render} +
+{render acl=$gosaMailDeliveryModeRACL checkbox=$multiple_support checked=$use_use_mailsize_limit} + +{/render} + +{render acl=$gosaMailMaxSizeACL checkbox=$multiple_support checked=$use_gosaMailMaxSize} + {t}MB{/t} +{/render} +
+

+ +

+{render acl=$gosaVacationMessageACL checkbox=$multiple_support checked=$use_gosaVacationMessage} + +{/render} +
+ +{if $show_templates eq "true"} + {render acl=$gosaVacationMessageACL} + + {/render} + {render acl=$gosaVacationMessageACL} + + {/render} +{/if} +
+

+ +

+ +{if $multiple_support} + +{/if} + +{render acl=$gosaMailForwardingAddressACL} + +{/render} +
+{render acl=$gosaMailForwardingAddressACL} + +{/render} +{render acl=$gosaMailForwardingAddressACL} +   +{/render} +{render acl=$gosaMailForwardingAddressACL} +   +{/render} +{render acl=$gosaMailForwardingAddressACL} + +{/render} +
+

 

+ +

 {t}Advanced mail options{/t}

+ + + + +
+{render acl=$gosaMailDeliveryModeLACL checkbox=$multiple_support checked=$use_only_local} + +{/render} + {t}User is only allowed to send and receive local mails{/t} +
+ + + + + diff --git a/trunk/gosa-plugins/mail/personal/mail/mail_locals.tpl b/trunk/gosa-plugins/mail/personal/mail/mail_locals.tpl new file mode 100644 index 000000000..686c7395f --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/mail_locals.tpl @@ -0,0 +1,81 @@ + + + + + +
+
+

+ + + {$hint} + +
+

+
+
+

+ +

+
+
+
+

+ [F] + {t}Filters{/t} +

+
+
+ + {$alphabet} +
+ + + + +
+ +   + +
+ + + + + + +
+ + + +
+ + + + + + +
+ {t}Display addresses of user{/t} + + +
+ {$apply} +
+
+ +

+ +   + +

+ diff --git a/trunk/gosa-plugins/mail/personal/mail/main.inc b/trunk/gosa-plugins/mail/personal/mail/main.inc new file mode 100644 index 000000000..db39f469b --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/main.inc @@ -0,0 +1,143 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('mailAccount'); + session::un_set('edit'); + +}else{ + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + session::un_set ('edit'); + session::un_set ('mailAccount'); + } + + /* Create mail object on demand */ + if (!session::is_set('mailAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $mailAccount= new mailAccount ($config, $ui->dn); + $mailAccount->enable_CSN_check(); + $mailAccount->set_acl_base($ui->dn); + $mailAccount->set_acl_category("users"); + session::set('mailAccount',$mailAccount); + } + $mailAccount = session::get('mailAccount'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $mailAccount->save_object (); + } + + /* Enter edit mode? */ + if (isset($_POST['edit']) && preg_match("/r/",$ui->get_permissions($ui->dn,"users/mailAccount"))){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $mailAccount->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $mailAccount->save (); + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Remove object */ + session::un_set ('mailAccount'); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + if($lock_msg){ + $display.= $lock_msg; + }else{ + $display.= $mailAccount->execute (); + } + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('mailAccount',$mailAccount); + } + + $info= ""; + /* Show page footer depending on the mode */ + if (!$mailAccount->forward_dialog && $mailAccount->is_account && empty($lock_msg)){ + $display.= "

"; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + $info= "\"\" ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + + $info.= "\"\" ".msgPool::clickEditToChange(); + + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/mailAccount"))){ + $display.= "\n"; + } + + $display.= "\n"; + } + $display.= "

\n"; + } + + /* Page header*/ + $display= print_header(get_template_path('plugins/mail/images/plugin.png'), _("User mail settings"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve-discard.txt b/trunk/gosa-plugins/mail/personal/mail/sieve-discard.txt new file mode 100644 index 000000000..8ac4db68a --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve-discard.txt @@ -0,0 +1,3 @@ +# Do not deliver to own mailbox +discard; + diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve-header.txt b/trunk/gosa-plugins/mail/personal/mail/sieve-header.txt new file mode 100644 index 000000000..5222282e5 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve-header.txt @@ -0,0 +1,3 @@ +###GOSA +require ["fileinto", "reject", "vacation"]; + diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve-mailsize.txt b/trunk/gosa-plugins/mail/personal/mail/sieve-mailsize.txt new file mode 100644 index 000000000..de639c26c --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve-mailsize.txt @@ -0,0 +1,17 @@ +# Reject mails with bigger size +if size :over {$maxsize}M{ + reject text: +Dear sender, + +the mail you sent to our mailsystem has been rejected due +to a user configured maximum mail size ($maxsize MB). + +Either ask the user to remove the sizelimit, or send smaller pieces. + +Thank you, + the mailserver +. + ; + discard; +} + diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve-spam.txt b/trunk/gosa-plugins/mail/personal/mail/sieve-spam.txt new file mode 100644 index 000000000..63392d011 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve-spam.txt @@ -0,0 +1,5 @@ +# Sort mails with higher spam level +if header :contains "X-Spam-Level" "$spamlevel" { + fileinto "$spambox"; +} + diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve-vacation.txt b/trunk/gosa-plugins/mail/personal/mail/sieve-vacation.txt new file mode 100644 index 000000000..3aed3a916 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve-vacation.txt @@ -0,0 +1,4 @@ +# Vacation message +vacation :addresses [$addrlist] +"$vacmsg" ; + diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Parser.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Parser.inc new file mode 100644 index 000000000..ac99301a6 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Parser.inc @@ -0,0 +1,78 @@ +registeredExtensions_ = array(); + $this->parent = $parent; + } + + function execute() + { + $ret = $this->dumpParseTree(); + return($ret); + } + + + /* Check if there are errors, collect them and return them */ + function check() + { + return($this->tree_->check()); + } + + + /* Initiate parser, but use some other + * classes, that are rewritten. + */ + function parse($script) + { + $script = preg_replace("/^###GOSA/","",$script); + + $this->registeredExtensions_ = array(); + $this->status_text = "incomplete"; + $this->script_ = $script; + $this->tree_ = new My_Tree(@Scanner::scriptStart(),$this); + $this->tree_->setDumpFunc(array(&$this, 'dumpToken_')); + $this->scanner_ = new My_Scanner($this->script_); + $this->scanner_->setCommentFunc(array($this, 'comment_')); + + if ($this->commands_($this->tree_->getRoot()) && + $this->scanner_->nextTokenIs('script-end')) + { + $this->scanner_->nextToken(); + return $this->success_('success'); + } + + return $this->status_; + } + + + function get_sieve_script() + { + return("###GOSA\n".$this->tree_->get_sieve_script()); + } + + + function save_object() + { + $this->tree_->save_object(); + } + + + function dumpParseTree() + { + return $this->tree_->execute(); + } +} +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Scanner.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Scanner.inc new file mode 100644 index 000000000..878927a5f --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Scanner.inc @@ -0,0 +1,69 @@ +token_match_ as $class => $regex) + { + if (preg_match('/^'. $regex .'/', mb_substr($script, $pos), $match)) + { + $length = mb_strlen($match[0]); + + if ($class != 'whitespace') + { + array_push($this->tokens_, array( + 'class' => $class, + 'text' => chop(mb_substr($script, $pos, $length)), + 'line' => $line, + )); + } + if ($class == 'unknown') + { + return; + } + + $pos += $length; + $line += mb_substr_count($match[0], "\n"); + break; + } + } + } + array_push($this->tokens_, array( + 'class' => 'script-end', + 'text' => 'script-end', + 'line' => $line, + )); + } + + var $commentFn_ = null; + var $tokenPos_ = 0; + var $tokens_ = array(); + var $token_match_ = array ( + 'left-bracket' => '\[', + 'right-bracket' => '\]', + 'block-start' => '\{', + 'block-end' => '\}', + 'left-parant' => '\(', + 'right-parant' => '\)', + 'comma' => ',', + 'semicolon' => ';', + 'whitespace' => '[ \r\n\t]+', + 'tag' => ':[[:alpha:]_][[:alnum:]_]*(?=\b)', + 'quoted-string' => '"(?:\\[\\"]|[^\x00"])*"', + 'number' => '[[:digit:]]+(?:[KMG])?(?=\b)', + 'comment' => '(?:\/\*(?:[^\*]|\*(?=[^\/]))*\*\/|#[^\r\n]*\r?\n)', +# 'multi-line' => 'text:[ \t]*(?:#[^\r\n]*)?\r?\n(\.[^\r\n]+\r?\n|[^\.]*\r?\n)*\.\r?\n', + 'multi-line' => 'text:[^;]*', + 'identifier' => '[[:alpha:]_][[:alnum:]_]*(?=\b)', + 'unknown token' => '[^ \r\n\t]+' + ); +} + +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Tree.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Tree.inc new file mode 100644 index 000000000..b1b061e39 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_My_Tree.inc @@ -0,0 +1,782 @@ +parent = $parent; + $this->_construct($root); + } + + + function execute() + { + return($this->dump()); + } + + + /* Create a html interface for the current sieve filter + */ + function dump() + { + /************** + * Handle new elements + **************/ + + /* Only parse the tokens once */ + if(!count($this->pap)){ + $this->dump_ = ""; + $this->mode_stack = array(); + $this->pap = array(); + $this->doDump_(0, '', true); + + /* Add left elements */ + if(count($this->mode_stack)){ + foreach($this->mode_stack as $element){ + $this->handle_elements( $element,preg_replace("/[^0-9]/","",microtime())); + } + } + } + + /* Create html results */ + $smarty = get_smarty(); + + $block_indent_start = $smarty->fetch(get_template_path("templates/block_indent_start.tpl",TRUE,dirname(__FILE__))); + $block_indent_stop = $smarty->fetch(get_template_path("templates/block_indent_stop.tpl",TRUE,dirname(__FILE__))); + + $this -> dump_ = ""; + $ends = array(); + $ends_complete_block = array(); + + foreach($this->pap as $key => $object){ + if(is_object($object)){ + + $end = $this->get_block_end($key,false); + $end2 = $this->get_block_end($key); + if($end != $key && in_array(get_class($object),array("sieve_if"))){ + $ends_complete_block[$end2] = $end2; + $this->dump_ .= "
"; + $this->dump_ .= "
"; + } + if(isset($ends[$key])){ + $this->dump_ .= $block_indent_stop; + } + $this->dump_ .= preg_replace("/>/",">\n",$object->execute()); + if($end != $key && in_array(get_class($object),array("sieve_if","sieve_else","sieve_elsif"))) { + $ends[$end] = $end; + $this->dump_ .= $block_indent_start; + } + + if(isset($ends_complete_block[$key])){ + $this->dump_ .= "
"; + $this->dump_ .= "
"; + } + } + } + + return($this->dump_); + } + + + /* This function walks through the object tree generated by the "Parse" class. + * All Commands will be resolved and grouped. So the Commands and their + * parameter are combined. Like "IF" and ":comparator"... + */ + function doDump_($node_id, $prefix, $last,$num = 1) + { + /* Indicates that current comman will only be valid for a single line. + * this command type will be removed from mode_stack after displaying it. + */ + $rewoke_last = FALSE; + + /* Get node */ + $node = $this->nodes_[$node_id]; + + /* Get last element class and type */ + $last_class = ""; + $last_type = ""; + if(count($this->mode_stack)){ + $key = key($this->mode_stack); + $tmp = array_reverse($this->mode_stack[$key]['ELEMENTS']); + $last_class = $tmp[key($tmp)]['class']; + + if(isset($this->mode_stack[$key]['TYPE'])){ + $last_type = $this->mode_stack[$key]['TYPE']; + } + } + + /* This closes the last mode */ + if($node['class'] == "block-start"){ + $tmp = array_pop($this->mode_stack); + $this->handle_elements($tmp,$node_id); + $this->handle_elements(array("TYPE" => "block_start"),preg_replace("/[^0-9]/","",microtime())); + } + + /* This closes the last mode */ + if($node['class'] == "block-end"){ + $tmp = array_pop($this->mode_stack); + $this->handle_elements($tmp,$node_id); + $this->handle_elements(array("TYPE" => "block_end"),preg_replace("/[^0-9]/","",microtime())); + } + + /* Semicolon indicates a new command */ + if($node['class'] == "semicolon"){ + $tmp =array_pop($this->mode_stack); + $this->handle_elements($tmp,$node_id); + } + + /* We can't handle comments within if tag right now */ + if(!in_array_ics($last_type,array("if","elsif"))){ + + /* Comments require special attention. + * We do not want to create a single comment element + * foreach each "#comment" string found in the script. + * Sometimes comments are used like this + * # This is a comment + * # and it still is a comment + * # ... + * So we combine them to one single comment. + */ + if($last_class != "comment" && $node['class'] == "comment"){ + $tmp =array_pop($this->mode_stack); + $this->handle_elements($tmp,$node_id); + $this->mode_stack[] = array("TYPE" => $node['class']); + } + + if($last_class == "comment" && $node['class'] != "comment"){ + $tmp =array_pop($this->mode_stack); + $this->handle_elements($tmp,$node_id); + } + } + + /* Handle identifiers */ + $identifiers = array("else","if","elsif","end","reject","redirect","vacation","keep","discard","fileinto","require","stop"); + if($node['class'] == "identifier" && in_array($node['text'],$identifiers)){ + $this->mode_stack[] = array("TYPE" => $node['text']); + } + + if(!($last_type == "if" && $node['class'] == "comment")){ + /* Add current node to current command stack */ + end($this->mode_stack); + $key = key($this->mode_stack); + $this->mode_stack[$key]['ELEMENTS'][] = $node; + } + + /* Remove last mode from mode stack, cause it was only valid for a single line */ + if($rewoke_last){ + $tmp =array_pop($this->mode_stack); + $this->handle_elements($tmp,$node_id); + } + + /* If this is a sub element, just call this for all childs */ + if(isset($this->childs_[$node_id])){ + $childs = $this->childs_[$node_id]; + for ($i=0; $idoDump_($childs[$i], "", $num); + } + } + } + + + /* Create a class for each resolved object. + * And append this class to a list of objects. + */ + function handle_elements($data,$id) + { + if(!isset($data['TYPE'])){ + return; + } + $type = $data['TYPE']; + + $class_name= "sieve_".$type ; + if(class_exists($class_name)){ + $this->pap[] = new $class_name($data,$id,$this); + }else{ + echo "Missing : ".$class_name.""."
"; + } + } + + function save_object() + { + reset($this->pap); + foreach($this->pap as $key => $obj){ + + if(in_array(get_class($obj),array("sieve_if", + "sieve_elsif", + "sieve_vacation", + "sieve_comment", + "sieve_reject", + "sieve_fileinto", + "sieve_require", + "sieve_redirect"))){ + + + if(isset($this->pap[$key]) && method_exists($this->pap[$key],"save_object")){ + $this->pap[$key]->save_object(); + } + } + } + } + + + /* Remove the object at the given position */ + function remove_object($key_id) + { + if(count($this->pap) == 1){ + msg_dialog::display(_("Warning"), _("Cannot remove last element!"), ERROR_DIALOG); + return; + } + + if(!isset($this->pap[$key_id])){ + trigger_error("Can't remove element with object_id=".$key_id.", there is no object with this identifier. Remove aborted."); + return(false); + } + + $class = get_class($this->pap[$key_id]); + if(in_array($class,array("sieve_if","sieve_elsif","sieve_else"))){ + $block_start= $key_id; + $block_end = $this->get_block_end($key_id); + + for($i = $block_start ; $i <= $block_end ; $i ++ ){ + unset($this->pap[$i]); + } + }else{ + unset($this->pap[$key_id]); + } + $tmp = array(); + foreach($this->pap as $element){ + $tmp[] = $element; + } + $this->pap = $tmp; + } + + + /* This function moves a given element to another position. + * Single elements like "keep;" will simply be moved one posisition down/up. + * Multiple elements like if-elsif-else will be moved as block. + * + * $key_id specified the element that should be moved. + * $direction specifies to move elements "up" or "down" + */ + function move_up_down($key_id,$direction = "down") + { + + /* Get the current element to decide what to move. */ + $e_class = get_class($this->pap[$key_id]); + + if(in_array($e_class,array("sieve_if"))){ + $block_start= $key_id; + $block_end = $this->get_block_end($key_id); + + /* Depending on the direction move up down */ + if($direction == "down"){ + $next_free = $this->_get_next_free_move_slot($block_end,$direction); + }else{ + $next_free = $this->_get_next_free_move_slot($block_start,$direction); + } + + /* Move the given block */ + $this->move_multiple_elements($block_start,$block_end,$next_free); + } + + if(in_array($e_class,array( "sieve_stop", + "sieve_keep", + "sieve_require", + "sieve_comment", + "sieve_vacation", + "sieve_stop", + "sieve_reject", + "sieve_fileinto", + "sieve_redirect", + "sieve_discard"))){ + $this->move_single_element($key_id,$this->_get_next_free_move_slot($key_id,$direction)); + } + } + + + /* Move the given block to position */ + function move_multiple_elements($start,$end,$to) + { + /* Use class names for testing */ + $data = $this->pap; + + /* Get block to move */ + $block_to_move = array_slice($data,$start, ($end - $start +1)); + + /* We want do move this block up */ + if($end > $to){ + + /* Get start block */ + $start_block = array_slice($data,0,$to); + + /* Get Get all elements between the block to move + * and next free position + */ + $block_to_free = array_slice($data,$to ,$start - $to ); + $block_to_end = array_slice($data,$end+1); + $new = array(); + foreach($start_block as $block){ + $new[] = $block; + } + foreach($block_to_move as $block){ + $new[] = $block; + } + foreach($block_to_free as $block){ + $new[] = $block; + } + foreach($block_to_end as $block){ + $new[] = $block; + } + $old = $this->pap; + $this->pap = $new; + } + + + /* We want to move this block down. */ + if($to > $end){ + + /* Get start block */ + $start_block = array_slice($data,0,$start); + + /* Get Get all elements between the block to move + * and next free position + */ + $block_to_free = array_slice($data,$end +1,($to - $end )); + + /* Get the rest + */ + $block_to_end = array_slice($data,$to+1); + + $new = array(); + foreach($start_block as $block){ + $new[] = $block; + } + foreach($block_to_free as $block){ + $new[] = $block; + } + foreach($block_to_move as $block){ + $new[] = $block; + } + foreach($block_to_end as $block){ + $new[] = $block; + } + $old = $this->pap; + $this->pap = $new; + } + } + + + /* This function returns the id of the element + * where the current block ends + */ + function get_block_end($start,$complete = TRUE) + { + /* Only execute if this is a really a block element. + * Block elements is only sieve_if + */ + if(in_array(get_class($this->pap[$start]),array("sieve_if","sieve_elsif","sieve_else"))){ + + $class = get_class($this->pap[$start]); + $next_class = get_class($this->pap[$start+1]); + $block_depth = 0; + + $end = FALSE; + + while(!$end && $start < count($this->pap)){ + + if($class == "sieve_block_start"){ + $block_depth ++; + } + + if($class == "sieve_block_end"){ + $block_depth --; + } + + if($complete){ + if( $block_depth == 0 && + $class == "sieve_block_end" && + !in_array($next_class,array("sieve_else","sieve_elsif"))){ + $end = TRUE; + $start --; + } + }else{ + + if( $block_depth == 0 && + $class == "sieve_block_end" ){ + $end = TRUE; + $start --; + } + } + + $start ++; + $class = get_class($this->pap[$start]); + + if(isset($this->pap[$start+1])){ + $next_class = get_class($this->pap[$start+1]); + }else{ + $next_class =""; + } + } + } + return($start); + } + + + /* This function moves the single element at + * position $from to position $to. + */ + function move_single_element($from,$to) + { + if($from == $to) { + return; + } + + $ret = array(); + $tmp = $this->pap; + + $begin = array(); + $middle = array(); + $end = array(); + $element = $this->pap[$from]; + + if($from > $to ){ + + /* Get all element in fron to element to move */ + if($from != 0){ + $begin = array_slice($tmp,0,$to); + } + + /* Get all elements between */ + $middle = array_slice($tmp,$to , ($from - ($to) )); + + /* Get the rest */ + $end = array_slice($tmp,$from+1); + + foreach($begin as $data){ + $ret[] = $data; + } + $ret[] = $element; + foreach($middle as $data){ + $ret[] = $data; + } + foreach($end as $data){ + $ret[] = $data; + } + $this->pap = $ret; + } + if($from < $to ){ + + /* Get all element in fron to element to move */ + if($from != 0){ + $begin = array_slice($tmp,0,$from); + } + + /* Get all elements between */ + $middle = array_slice($tmp,$from+1 , ($to - ($from))); + + /* Get the rest */ + $end = array_slice($tmp,$to+1); + + foreach($begin as $data){ + $ret[] = $data; + } + foreach($middle as $data){ + $ret[] = $data; + } + $ret[] = $element; + foreach($end as $data){ + $ret[] = $data; + } + $this->pap = $ret; + } + } + + + /* Returns the next free position where we + * can add a new sinle element + * $key_id = Current position + * $direction = Forward or backward. + */ + function _get_next_free_move_slot($key_id,$direction,$include_self = FALSE) + { + $last_class = ""; + $current_class =""; + $next_class = ""; + + /* After this elements we can add new elements + * without having any trouble. + */ + $allowed_to_add_after = array("sieve_keep", + "sieve_require", + "sieve_stop", + "sieve_reject", + "sieve_fileinto", + "sieve_redirect", + "sieve_discard", + "sieve_comment", + "sieve_block_start" + ); + + /* Before this elements we can add new elements + * without having any trouble. + */ + $allowed_to_add_before = array("sieve_keep", + "sieve_require", + "sieve_stop", + "sieve_reject", + "sieve_fileinto", + "sieve_comment", + "sieve_redirect", + "sieve_discard", + "sieve_if", + "sieve_block_end" + ); + + if($direction == "down"){ + + $test = $this->pap; + while($key_id < count($test)){ + if(($key_id+1) == count($test)) { + return($key_id); + } + + if(!$include_self){ + $key_id ++; + } + $include_self = FALSE; + $current_class = get_class($test[$key_id]); + if(in_array($current_class, $allowed_to_add_after)){ + return($key_id); + } + } + }else{ + + $test = $this->pap; + if($key_id == 0) { + return($key_id); + } + if(!$include_self){ + $key_id --; + } + while($key_id >=0 ){ + $current_class = get_class($test[$key_id]); + if(in_array($current_class, $allowed_to_add_before)){ + return($key_id); + } + $key_id --; + } + return(0); + } + } + + + /* Need to be reviewed */ + function get_sieve_script() + { + $tmp =""; + if(count($this->pap)){ + $buffer = ""; + foreach($this->pap as $part) { + if(get_class($part) == "sieve_block_end"){ + $buffer = substr($buffer,0,strlen($buffer)-(strlen(SIEVE_INDENT_TAB))); + } + $tmp2 = $part->get_sieve_script_part(); + + $tmp3 = split("\n",$tmp2); + foreach($tmp3 as $str){ + $str2 = trim($str); + + /* If the current line only contains an '.' + * we must skip the line indent. + * The text: statement uses a single '.' to mark the text end. + * This '.' must be the only char in the current line, no + * whitespaces are allowed here. + */ + if($str2 == "."){ + $tmp.=$str."\n"; + }else{ + $tmp.= $buffer.$str."\n"; + } + } + if(get_class($part) == "sieve_block_start"){ + $buffer .= SIEVE_INDENT_TAB; + } + } + } + if(!preg_match("/Generated by GOsa - Gonicus System Administrator/",$tmp)){ +# $tmp = "#Generated by GOsa - Gonicus System Administrator \n ".$tmp; + } + return($tmp); + } + + function check() + { + $msgs = array(); + + /* Some logical checks. + * like : only sieve_comment can appear before require. + */ + + /* Ensure that there are no command before require + * - Get id of last require tag + * - Collect object types in from of this tag. + * - Check if there are tags collected that are not allowed + */ + $last_found_at = -1; + $objs = array(); + foreach($this->pap as $key => $obj){ + if(get_class($obj) == "sieve_require"){ + $last_found_at = $key; + } + } + foreach($this->pap as $key => $obj){ + if($key == $last_found_at) break; + if(!in_array(get_class($obj),array("sieve_comment","sieve_require"))){ + $objs[] = get_class($obj); + } + } + if(count($objs) && $last_found_at != -1){ + $str = _("Require must be the first command in the script."); + $msgs[] = $str; + msg_dialog::display(_("Error"), $str, ERROR_DIALOG); + } + + foreach($this->pap as $obj){ + $o_msgs = $obj->check(); + foreach($o_msgs as $o_msg){ + $msgs[] = $o_msg; + } + } + return($msgs); + } + + + /* We are forced to add a new require. + * This function is called by the + * sieveElement_Classes->parent->add_require() + */ + function add_require($str) + { + $require_id = -1; + foreach($this->pap as $key => $obj){ + if(get_class($obj) == "sieve_require"){ + $require_id = $key; + } + } + + /* No require found, add one */ + if($require_id == -1){ + $require = new sieve_require(NULL,preg_replace("/[^0-9]/","",microtime()),$this); + $require -> Add_Require($str); + $new = array(); + $new[] = $require; + foreach($this->pap as $obj){ + $new[] = $obj; + } + $this->pap = $new; + } else { + $this->pap[$require_id]->Add_Require($str); + } + } +} + + +/* Create valid sieve string/string-list + * out of a given array + */ +function sieve_create_strings($data,$force_string = FALSE) +{ + $ret = ""; + if(is_array($data)){ + if(count($data) == 1){ + $ret = "\""; + foreach($data as $dat){ + $ret .=$dat; + } + $ret.="\""; + }else{ + foreach($data as $dat){ + $ret.= "\""; + $ret.=$dat; + $ret.="\", "; + } + $ret = preg_replace("/,$/","",trim($ret)); + $ret = "[".$ret."]"; + } +# $ret = preg_replace("/\"\"/","\"",$ret); + }else{ + + $Multiline = preg_match("/\n/",$data); + $data = preg_replace("/\r/","",$data);; + + if($Multiline && !$force_string){ + $ret = "text: \r\n".$data."\r\n.\r\n"; + }else{ + $ret = "\"".$data."\""; + $ret = preg_replace("/\"\"/","\"",$ret); + } + } + $ret = preg_replace("/\n/","\r\n",$ret); + + return($ret); +} + +/* This checks if there is a string at the current position + * in the token array. + * If there is a string list at the current position, + * this function will return a complete list of all + * strings used in this list. + * It also returns an offset of the last token position + */ +function sieve_get_strings($data,$id) +{ + $ret = array(); + if($data[$id]['class'] == "left-bracket"){ + while(isset($data[$id]) && $data[$id]['class'] != "right-bracket" && $id < count($data)){ + + if($data[$id]['class'] == "quoted-string"){ + $text = $data[$id]['text']; + $text= preg_replace("/^\"/","",$text); + $text= preg_replace("/\"$/","",$text); + $ret[] = $text; + } + + $id ++; + } + }elseif($data[$id]['class'] == "quoted-string"){ + $text = $data[$id]['text']; + $text= preg_replace("/^\"/","",$text); + $text= preg_replace("/\"$/","",$text); + $ret[] = $text; + }elseif($data[$id]['class'] == "number"){ + $ret[] = $data[$id]['text']; + }elseif($data[$id]['class'] == "multi-line"){ + $str = trim(preg_replace("/^text:/","",$data[$id]['text'])); + $str = trim(preg_replace("/\.$/","",$str)); + $ret[] = $str; + } + + return(array("OFFSET" => $id, "STRINGS" => $ret)); +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_parser.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_parser.inc new file mode 100644 index 000000000..5326c2b37 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_parser.inc @@ -0,0 +1,365 @@ +registeredExtensions_ = array(); + $this->status_text = "incomplete"; + + $this->script_ = $script; + $this->tree_ = new Tree(Scanner::scriptStart()); + $this->tree_->setDumpFunc(array(&$this, 'dumpToken_')); + $this->scanner_ = new Scanner($this->script_); + $this->scanner_->setCommentFunc(array($this, 'comment_')); + + if ($this->commands_($this->tree_->getRoot()) && + $this->scanner_->nextTokenIs('script-end')) + { + return $this->success_('success'); + } + + return $this->status_; + } + + function dumpParseTree() + { + return $this->tree_->dump(); + } + + function dumpToken_(&$token) + { + if (is_array($token)) + { + $str = "<" . $token['text'] . "> "; + foreach ($token as $k => $v) + { + $str .= " $k:$v"; + } + return $str; + } + + return strval($token); + } + + function getPrevTokenText_($parent_id) + { + $childs = $this->tree_->getChilds($parent_id); + + for ($i=count($childs); $i>0; --$i) + { + $prev = $this->tree_->getNode($childs[$i-1]); + + if (in_array($prev['text'], array('{', '(', ','))) + { + // use command owning a block or list + $prev = $this->tree_->getNode($parent_id); + } + + if ($prev['class'] != 'comment') + { + return $prev['text']; + } + } + + $prev = $this->tree_->getNode($parent_id); + return $prev['text']; + } + + function getSemantics_($token_text) + { + $semantics = new Semantics($token_text); + $semantics->setExtensionFuncs(array(&$this, 'registerExtension_'), array(&$this, 'isExtensionRegistered_')); + return $semantics; + } + + function registerExtension_($extension) + { + array_push($this->registeredExtensions_, str_replace('"', '', $extension)); + } + + function isExtensionRegistered_($extension) + { + return (in_array($extension, $this->registeredExtensions_) ? true : false); + } + + function success_($text = null) + { + if ($text != null) + { + $this->status_text = $text; + } + + return $this->status_ = true; + } + + function error_($text, $token = null) + { + if ($token != null) + { + $text = 'line '. $token['line'] .': '. $token['class'] . " where $text expected near ". $token['text']; + } + + $this->status_text = $text; + return $this->status_ = false; + } + + function done_() + { + $this->status_ = true; + return false; + } + + /******************************************************************************* + * methods for recursive descent start below + */ + + function comment_($token) + { + $this->tree_->addChild($token); + } + + function commands_($parent_id) + { + while ($this->command_($parent_id)) + ; + + return $this->status_; + } + + function command_($parent_id) + { + if (!$this->scanner_->nextTokenIs('identifier')) + { + if ($this->scanner_->nextTokenIs(array('block-end', 'script-end'))) + { + return $this->done_(); + } + return $this->error_('identifier', $this->scanner_->peekNextToken()); + } + + // Get and check a command token + $token = $this->scanner_->nextToken(); + $semantics = $this->getSemantics_($token['text']); + if (!$semantics->validCommand($this->getPrevTokenText_($parent_id), $token['line'])) + { + return $this->error_($semantics->message); + } + + // Process eventual arguments + $this_node = $this->tree_->addChildTo($parent_id, $token); + if ($this->arguments_($this_node, $semantics) == false) + { + return false; + } + + $token = $this->scanner_->nextToken(); + if ($token['class'] != 'semicolon') + { + if (!$semantics->validToken($token['class'], $token['text'], $token['line'])) + { + return $this->error_($semantics->message); + } + + if ($token['class'] == 'block-start') + { + $this->tree_->addChildTo($this_node, $token); + $ret = $this->block_($this_node, $semantics); + return $ret; + } + + return $this->error_('semicolon', $token); + } + + $this->tree_->addChildTo($this_node, $token); + return $this->success_(); + } + + function arguments_($parent_id, &$semantics) + { + while ($this->argument_($parent_id, $semantics)) + ; + + if ($this->status_ == true) + { + $this->testlist_($parent_id, $semantics); + } + + return $this->status_; + } + + function argument_($parent_id, &$semantics) + { + if ($this->scanner_->nextTokenIs(array('number', 'tag'))) + { + // Check if semantics allow a number or tag + $token = $this->scanner_->nextToken(); + if (!$semantics->validToken($token['class'], $token['text'], $token['line'])) + { + return $this->error_($semantics->message); + } + + $this->tree_->addChildTo($parent_id, $token); + return $this->success_(); + } + + return $this->stringlist_($parent_id, $semantics); + } + + function stringlist_($parent_id, &$semantics) + { + if (!$this->scanner_->nextTokenIs('left-bracket')) + { + return $this->string_($parent_id, $semantics); + } + + $token = $this->scanner_->nextToken(); + if (!$semantics->startStringList($token['line'])) + { + return $this->error_($semantics->message); + } + $this->tree_->addChildTo($parent_id, $token); + + while ($token['class'] != 'right-bracket') + { + if (!$this->string_($parent_id, $semantics)) + { + return $this->status_; + } + + $token = $this->scanner_->nextToken(); + + if ($token['class'] != 'comma' && $token['class'] != 'right-bracket') + { + return $this->error_('comma or closing bracket', $token); + } + + $this->tree_->addChildTo($parent_id, $token); + } + + $semantics->endStringList(); + return $this->success_(); + } + + function string_($parent_id, &$semantics) + { + if (!$this->scanner_->nextTokenIs(array('quoted-string', 'multi-line'))) + { + return $this->done_(); + } + + $token = $this->scanner_->nextToken(); + if (!$semantics->validToken('string', $token['text'], $token['line'])) + { + return $this->error_($semantics->message); + } + + $this->tree_->addChildTo($parent_id, $token); + return $this->success_(); + } + + function testlist_($parent_id, &$semantics) + { + if (!$this->scanner_->nextTokenIs('left-parant')) + { + return $this->test_($parent_id, $semantics); + } + + $token = $this->scanner_->nextToken(); + if (!$semantics->validToken($token['class'], $token['text'], $token['line'])) + { + return $this->error_($semantics->message); + } + $this->tree_->addChildTo($parent_id, $token); + + while ($token['class'] != 'right-parant') + { + if (!$this->test_($parent_id, $semantics)) + { + return $this->status_; + } + + $token = $this->scanner_->nextToken(); + + if ($token['class'] != 'comma' && $token['class'] != 'right-parant') + { + return $this->error_('comma or closing paranthesis', $token); + } + + $this->tree_->addChildTo($parent_id, $token); + } + + return $this->success_(); + } + + function test_($parent_id, &$semantics) + { + if (!$this->scanner_->nextTokenIs('identifier')) + { + // There is no test + return $this->done_(); + } + + // Check if semantics allow an identifier + $token = $this->scanner_->nextToken(); + if (!$semantics->validToken($token['class'], $token['text'], $token['line'])) + { + return $this->error_($semantics->message); + } + + // Get semantics for this test command + $this_semantics = $this->getSemantics_($token['text']); + if (!$this_semantics->validCommand($this->getPrevTokenText_($parent_id), $token['line'])) + { + return $this->error_($this_semantics->message); + } + + $this_node = $this->tree_->addChildTo($parent_id, $token); + + // Consume eventual argument tokens + if (!$this->arguments_($this_node, $this_semantics)) + { + return false; + } + + // Check if arguments were all there + $token = $this->scanner_->peekNextToken(); + if (!$this_semantics->done($token['class'], $token['text'], $token['line'])) + { + return $this->error_($this_semantics->message); + } + + return true; + } + + function block_($parent_id, &$semantics) + { + if ($this->commands_($parent_id, $semantics)) + { + $token = $this->scanner_->nextToken(); + + if ($token['class'] != 'block-end') + { + return $this->error_('closing curly brace', $token); + } + + $this->tree_->addChildTo($parent_id, $token); + return $this->success_(); + } + return $this->status_; + } +} + +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_scanner.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_scanner.inc new file mode 100644 index 000000000..3e22bb1d0 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_scanner.inc @@ -0,0 +1,140 @@ +_construct($script); + } + + function _construct(&$script) + { + if ($script === null) + { + return; + } + + $this->tokenize($script); + } + + function setCommentFunc($callback) + { + if ($callback == null || is_callable($callback)) + { + $this->commentFn_ = $callback; + } + } + + function tokenize(&$script) + { + $pos = 0; + $line = 1; + $script_length = mb_strlen($script); + + while ($pos < $script_length) + { + foreach ($this->token_match_ as $class => $regex) + { + if (preg_match('/^'. $regex .'/', mb_substr($script, $pos), $match)) + { + $length = mb_strlen($match[0]); + + if ($class != 'whitespace') + { + array_push($this->tokens_, array( + 'class' => $class, + 'text' => chop(mb_substr($script, $pos, $length)), + 'line' => $line, + )); + } + if ($class == 'unknown') + { + return; + } + + $pos += $length; + $line += mb_substr_count($match[0], "\n"); + break; + } + } + } + + array_push($this->tokens_, array( + 'class' => 'script-end', + 'text' => 'script-end', + 'line' => $line, + )); + } + + function nextTokenIs($class) + { + $offset = 0; + do + { + $next = $this->tokens_[$this->tokenPos_ + $offset++]['class']; + } + while ($next == 'comment'); + + if (is_array($class)) + { + return in_array($next, $class); + } + else if (is_string($class)) + { + return (strcmp($next, $class) == 0); + } + return false; + } + + function peekNextToken() + { + return $this->tokens_[$this->tokenPos_]; + } + + function nextToken() + { + $token = $this->tokens_[$this->tokenPos_++]; + while ($token['class'] == 'comment') + { + if ($this->commentFn_ != null) + { + call_user_func($this->commentFn_, $token); + } + $token = $this->tokens_[$this->tokenPos_++]; + } + return $token; + } + + function scriptStart() + { + return array( + 'class' => 'script-start', + 'text' => 'script-start', + 'line' => 1, + ); + } + + var $commentFn_ = null; + var $tokenPos_ = 0; + var $tokens_ = array(); + var $token_match_ = array ( + 'left-bracket' => '\[', + 'right-bracket' => '\]', + 'block-start' => '\{', + 'block-end' => '\}', + 'left-parant' => '\(', + 'right-parant' => '\)', + 'comma' => ',', + 'semicolon' => ';', + 'whitespace' => '[ \r\n\t]+', + 'tag' => ':[[:alpha:]_][[:alnum:]_]*(?=\b)', + 'quoted-string' => '"(?:\\[\\"]|[^\x00"])*"', + 'number' => '[[:digit:]]+(?:[KMG])?(?=\b)', + 'comment' => '(?:\/\*(?:[^\*]|\*(?=[^\/]))*\*\/|#[^\r\n]*\r?\n)', + 'multi-line' => 'text:[ \t]*(?:#[^\r\n]*)?\r?\n(\.[^\r\n]+\r?\n|[^\.]*\r?\n)*\.\r?\n', + 'identifier' => '[[:alpha:]_][[:alnum:]_]*(?=\b)', + 'unknown token' => '[^ \r\n\t]+' + ); +} + +?> \ No newline at end of file diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_semantics.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_semantics.inc new file mode 100644 index 000000000..1c00051c0 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_semantics.inc @@ -0,0 +1,613 @@ +command_ = $command; + $this->unknown = false; + switch ($command) + { + + /******************** + * control commands + */ + case 'require': + /* require */ + $this->s_ = array( + 'valid_after' => '(script-start|require)', + 'arguments' => array( + array('class' => 'string', 'list' => true, 'name' => 'require-string', 'occurrences' => '1', 'call' => 'setRequire_', 'values' => array( + array('occurrences' => '+', 'regex' => '"'. $this->requireStrings_ .'"'), + array('occurrences' => '+', 'regex' => '"comparator-i;(octet|ascii-casemap|ascii-numeric)"') + )) + ) + ); + break; + + case 'if': + /* if */ + $this->s_ = array( + 'valid_after' => str_replace('(', '(script-start|', $this->nonTestCommands_), + 'arguments' => array( + array('class' => 'identifier', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => $this->testCommands_, 'name' => 'test') + )), + array('class' => 'block-start', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '{', 'name' => 'block') + )) + ) + ); + break; + + case 'elsif': + /* elsif */ + $this->s_ = array( + 'valid_after' => '(if|elsif)', + 'arguments' => array( + array('class' => 'identifier', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => $this->testCommands_, 'name' => 'test') + )), + array('class' => 'block-start', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '{', 'name' => 'block') + )) + ) + ); + break; + + case 'else': + /* else */ + $this->s_ = array( + 'valid_after' => '(if|elsif)', + 'arguments' => array( + array('class' => 'block-start', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '{', 'name' => 'block') + )) + ) + ); + break; + + + /******************* + * action commands + */ + case 'discard': + case 'keep': + case 'stop': + /* discard / keep / stop */ + $this->s_ = array( + 'valid_after' => str_replace('(', '(script-start|', $this->nonTestCommands_) + ); + break; + + case 'fileinto': + /* fileinto [":copy"] */ + $this->s_ = array( + 'requires' => 'fileinto', + 'valid_after' => $this->nonTestCommands_, + 'arguments' => array( + array('class' => 'tag', 'occurrences' => '?', 'values' => array( + array('occurrences' => '?', 'regex' => ':copy', 'requires' => 'copy', 'name' => 'copy') + )), + array('class' => 'string', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '".*"', 'name' => 'folder') + )) + ) + ); + break; + + case 'mark': + case 'unmark': + /* mark / unmark */ + $this->s_ = array( + 'requires' => 'imapflags', + 'valid_after' => $this->nonTestCommands_ + ); + break; + + case 'redirect': + /* redirect [":copy"] */ + $this->s_ = array( + 'valid_after' => str_replace('(', '(script-start|', $this->nonTestCommands_), + 'arguments' => array( + array('class' => 'tag', 'occurrences' => '?', 'values' => array( + array('occurrences' => '?', 'regex' => ':copy', 'requires' => 'copy', 'name' => 'size-type') + )), + array('class' => 'string', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '".*"', 'name' => 'address') + )) + ) + ); + break; + + case 'reject': + /* reject */ + $this->s_ = array( + 'requires' => 'reject', + 'valid_after' => $this->nonTestCommands_, + 'arguments' => array( + array('class' => 'string', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '("|).*("|)', 'name' => 'reason') + )) + ) + ); + break; + + case 'setflag': + case 'addflag': + case 'removeflag': + /* setflag */ + /* addflag */ + /* removeflag */ + $this->s_ = array( + 'requires' => 'imapflags', + 'valid_after' =>$this->nonTestCommands_, + 'arguments' => array( + array('class' => 'string', 'list' => true, 'occurrences' => '1', 'values' => array( + array('occurrences' => '+', 'regex' => '".*"', 'name' => 'key') + )) + ) + ); + break; + + case 'vacation': + /* vacation [":days" number] [":addresses" string-list] [":subject" string] [":mime"] */ + $this->s_ = array( + 'requires' => 'vacation', + 'valid_after' => $this->nonTestCommands_, + 'arguments' => array( + array('class' => 'tag', 'occurrences' => '*', 'values' => array( + array('occurrences' => '?', 'regex' => ':days', 'name' => 'days', + 'add' => array( + array('class' => 'number', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '.*', 'name' => 'period') + )) + ) + ), + array('occurrences' => '?', 'regex' => ':addresses', 'name' => 'addresses', + 'add' => array( + array('class' => 'string', 'list' => true, 'occurrences' => '1', 'values' => array( + array('occurrences' => '+', 'regex' => '".*"', 'name' => 'address') + )) + ) + ), + array('occurrences' => '?', 'regex' => ':subject', 'name' => 'subject', + 'add' => array( + array('class' => 'string', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '".*"', 'name' => 'subject') + )) + ) + ), + array('occurrences' => '?', 'regex' => ':mime', 'name' => 'mime') + )), + array('class' => 'string', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '.*', 'name' => 'reason') + )) + ) + ); + break; + + + /***************** + * test commands + */ + case 'address': + /* address [address-part: tag] [comparator: tag] [match-type: tag] */ + $this->s_ = array( + 'valid_after' => $this->testsValidAfter_, + 'arguments' => array( + array('class' => 'tag', 'occurrences' => '*', 'post-call' => 'checkTags_', 'values' => array( + array('occurrences' => '?', 'regex' => ':(is|contains|matches|count|value|regex)', 'call' => 'setMatchType_', 'name' => 'match-type'), + array('occurrences' => '?', 'regex' => ':(all|localpart|domain|user|detail)', 'call' => 'checkAddrPart_', 'name' => 'address-part'), + array('occurrences' => '?', 'regex' => ':comparator', 'name' => 'comparator', + 'add' => array( + array('class' => 'string', 'occurrences' => '1', 'call' => 'setComparator_', 'values' => array( + array('occurrences' => '1', 'regex' => '"i;(octet|ascii-casemap)"', 'name' => 'comparator-string'), + array('occurrences' => '1', 'regex' => '"i;ascii-numeric"', 'requires' => 'comparator-i;ascii-numeric', 'name' => 'comparator-string') + )) + ) + ) + )), + array('class' => 'string', 'list' => true, 'occurrences' => '1', 'values' => array( + array('occurrences' => '+', 'regex' => '".*"', 'name' => 'header') + )), + array('class' => 'string', 'list' => true, 'occurrences' => '1', 'values' => array( + array('occurrences' => '+', 'regex' => '".*"', 'name' => 'key') + )) + ) + ); + break; + + case 'allof': + case 'anyof': + /* allof + anyof */ + $this->s_ = array( + 'valid_after' => $this->testsValidAfter_, + 'arguments' => array( + array('class' => 'left-parant', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '\(', 'name' => 'test-list') + )), + array('class' => 'identifier', 'occurrences' => '+', 'values' => array( + array('occurrences' => '+', 'regex' => $this->testCommands_, 'name' => 'test') + )) + ) + ); + break; + + case 'envelope': + /* envelope [address-part: tag] [comparator: tag] [match-type: tag] */ + $this->s_ = array( + 'requires' => 'envelope', + 'valid_after' => $this->testsValidAfter_, + 'arguments' => array( + array('class' => 'tag', 'occurrences' => '*', 'post-call' => 'checkTags_', 'values' => array( + array('occurrences' => '?', 'regex' => ':(is|contains|matches|count|value|regex)', 'call' => 'setMatchType_', 'name' => 'match-type'), + array('occurrences' => '?', 'regex' => ':(all|localpart|domain|user|detail)', 'call' => 'checkAddrPart_', 'name' => 'address-part'), + array('occurrences' => '?', 'regex' => ':comparator', 'name' => 'comparator', + 'add' => array( + array('class' => 'string', 'occurrences' => '1', 'call' => 'setComparator_', 'values' => array( + array('occurrences' => '1', 'regex' => '"i;(octet|ascii-casemap)"', 'name' => 'comparator-string'), + array('occurrences' => '1', 'regex' => '"i;ascii-numeric"', 'requires' => 'comparator-i;ascii-numeric', 'name' => 'comparator-string') + )) + ) + ) + )), + array('class' => 'string', 'list' => true, 'occurrences' => '1', 'values' => array( + array('occurrences' => '+', 'regex' => '".*"', 'name' => 'envelope-part') + )), + array('class' => 'string', 'list' => true, 'occurrences' => '1', 'values' => array( + array('occurrences' => '+', 'regex' => '".*"', 'name' => 'key') + )) + ) + ); + break; + + case 'exists': + /* exists */ + $this->s_ = array( + 'valid_after' => $this->testsValidAfter_, + 'arguments' => array( + array('class' => 'string', 'list' => true, 'occurrences' => '1', 'values' => array( + array('occurrences' => '+', 'regex' => '".*"', 'name' => 'header') + )) + ) + ); + break; + + case 'header': + /* header [comparator: tag] [match-type: tag] */ + $this->s_ = array( + 'valid_after' => $this->testsValidAfter_, + 'arguments' => array( + array('class' => 'tag', 'occurrences' => '*', 'post-call' => 'checkTags_', 'values' => array( + array('occurrences' => '?', 'regex' => ':(is|contains|matches|count|value|regex)', 'call' => 'setMatchType_', 'name' => 'match-type'), + array('occurrences' => '?', 'regex' => ':comparator', 'name' => 'comparator', + 'add' => array( + array('class' => 'string', 'occurrences' => '1', 'call' => 'setComparator_', 'values' => array( + array('occurrences' => '1', 'regex' => '"i;(octet|ascii-casemap)"', 'name' => 'comparator-string'), + array('occurrences' => '1', 'regex' => '"i;ascii-numeric"', 'requires' => 'comparator-i;ascii-numeric', 'name' => 'comparator-string') + )) + ) + ) + )), + array('class' => 'string', 'list' => true, 'occurrences' => '1', 'values' => array( + array('occurrences' => '+', 'regex' => '".*"', 'name' => 'header') + )), + array('class' => 'string', 'list' => true, 'occurrences' => '1', 'values' => array( + array('occurrences' => '+', 'regex' => '".*"', 'name' => 'key') + )) + ) + ); + break; + + case 'not': + /* not */ + $this->s_ = array( + 'valid_after' => $this->testsValidAfter_, + 'arguments' => array( + array('class' => 'identifier', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => $this->testCommands_, 'name' => 'test') + )) + ) + ); + break; + + case 'size': + /* size <":over" / ":under"> */ + $this->s_ = array( + 'valid_after' => $this->testsValidAfter_, + 'arguments' => array( + array('class' => 'tag', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => ':(over|under)', 'name' => 'size-type') + )), + array('class' => 'number', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '.*', 'name' => 'limit') + )) + ) + ); + break; + + case 'true': + case 'false': + /* true / false */ + $this->s_ = array( + 'valid_after' => $this->testsValidAfter_ + ); + break; + + + /******************** + * unknown commands + */ + default: + $this->unknown = true; + } + } + + function setExtensionFuncs($setFn, $checkFn) + { + if (is_callable($setFn) && is_callable($checkFn)) + { + $this->registerExtensionFn_ = $setFn; + $this->isExtensionRegisteredFn_ = $checkFn; + } + } + + function setRequire_($extension) + { + call_user_func($this->registerExtensionFn_, $extension); + return true; + } + + function wasRequired_($extension) + { + return call_user_func($this->isExtensionRegisteredFn_, $extension); + } + + function setMatchType_($text) + { + // Do special processing for relational test extension + if ($text == ':count' || $text == ':value') + { + if (!$this->wasRequired_('relational')) + { + $this->message = 'missing require for match-type '. $text; + return false; + } + + array_unshift($this->s_['arguments'], + array('class' => 'string', 'occurrences' => '1', 'values' => array( + array('occurrences' => '1', 'regex' => '"(lt|le|eq|ge|gt|ne)"', 'name' => 'relation-string'), + )) + ); + } + // Do special processing for regex match-type extension + else if ($text == ':regex' && !$this->wasRequired_('regex')) + { + $this->message = 'missing require for match-type '. $text; + return false; + } + $this->matchType_ = $text; + return true; + } + + function setComparator_($text) + { + $this->comparator_ = $text; + return true; + } + + function checkAddrPart_($text) + { + if ($text == ':user' || $text == ':detail') + { + if (!$this->wasRequired_('subaddress')) + { + $this->message = 'missing require for tag '. $text; + return false; + } + } + return true; + } + + function checkTags_() + { + if (isset($this->matchType_) && + $this->matchType_ == ':count' && + $this->comparator_ != '"i;ascii-numeric"') + { + $this->message = 'match-type :count needs comparator i;ascii-numeric'; + return false; + } + return true; + } + + function validCommand($prev, $line) + { + // Check if command is known + if ($this->unknown) + { + $this->message = 'line '. $line .': unknown command "'. $this->command_ .'"'; + return false; + } + + // Check if the command needs to be required + if (isset($this->s_['requires']) && !$this->wasRequired_($this->s_['requires'])) + { + $this->message = 'line '. $line .': missing require for command "'. $this->command_ .'"'; + return false; + } + + // Check if command may appear here + if (!ereg($this->s_['valid_after'], $prev)) + { +# $this->message = 'line '. $line .': "'. $this->command_ .'" may not appear after "'. $prev .'"'; +# return false; + } + + return true; + } + + function validClass_($class, $id) + { + // Check if command expects any arguments + if (!isset($this->s_['arguments'])) + { + $this->message = $id .' where semicolon expected'; + return false; + } + + foreach ($this->s_['arguments'] as $arg) + { + if ($class == $arg['class']) + { + return true; + } + + // Is the argument required + if ($arg['occurrences'] != '?' && $arg['occurrences'] != '*') + { + $this->message = $id .' where '. $arg['class'] .' expected'; + return false; + } + + if (isset($arg['post-call']) && + !call_user_func(array(&$this, $arg['post-call']))) + { + return false; + } + array_shift($this->s_['arguments']); + } + + $this->message = 'unexpected '. $id; + return false; + } + + function startStringList($line) + { + if (!$this->validClass_('string', 'string')) + { + $this->message = 'line '. $line .': '. $this->message; + return false; + } + else if (!isset($this->s_['arguments'][0]['list'])) + { + $this->message = 'line '. $line .': '. 'left bracket where '. $this->s_['arguments'][0]['class'] .' expected'; + return false; + } + + $this->s_['arguments'][0]['occurrences'] = '+'; + return true; + } + + function endStringList() + { + array_shift($this->s_['arguments']); + } + + function validToken($class, &$text, &$line) + { + $name = $class . ($class != $text ? " $text" : ''); + + // Make sure the argument has a valid class + if (!$this->validClass_($class, $name)) + { + $this->message = 'line '. $line .': '. $this->message; + return false; + } + + $arg = &$this->s_['arguments'][0]; + foreach ($arg['values'] as $val) + { + if (preg_match('/^'. $val['regex'] .'$/m', $text)) + { + // Check if the argument value needs a 'require' + if (isset($val['requires']) && !$this->wasRequired_($val['requires'])) + { + $this->message = 'line '. $line .': missing require for '. $val['name'] .' '. $text; + return false; + } + + // Check if a possible value of this argument may occur + if ($val['occurrences'] == '?' || $val['occurrences'] == '1') + { + $val['occurrences'] = '0'; + } + else if ($val['occurrences'] == '+') + { + $val['occurrences'] = '*'; + } + else if ($val['occurrences'] == '0') + { + $this->message = 'line '. $line .': too many '. $val['name'] .' '. $class .'s near '. $text; + return false; + } + + // Call extra processing function if defined + if (isset($val['call']) && !call_user_func(array(&$this, $val['call']), $text) || + isset($arg['call']) && !call_user_func(array(&$this, $arg['call']), $text)) + { + $this->message = 'line '. $line .': '. $this->message; + return false; + } + + // Set occurrences appropriately + if ($arg['occurrences'] == '?' || $arg['occurrences'] == '1') + { + array_shift($this->s_['arguments']); + } + else + { + $arg['occurrences'] = '*'; + } + + // Add argument(s) expected to follow right after this one + if (isset($val['add'])) + { + while ($add_arg = array_pop($val['add'])) + { + array_unshift($this->s_['arguments'], $add_arg); + } + } + + return true; + } + } + + $this->message = 'line '. $line .': unexpected '. $name; + return false; + } + + function done($class, $text, $line) + { + if (isset($this->s_['arguments'])) + { + foreach ($this->s_['arguments'] as $arg) + { + if ($arg['occurrences'] == '+' || $arg['occurrences'] == '1') + { + $this->message = 'line '. $line .': '. $class .' '. $text .' where '. $arg['class'] .' expected'; + return false; + } + } + } + return true; + } +} + +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieve.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieve.inc new file mode 100644 index 000000000..5594b7749 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieve.inc @@ -0,0 +1,632 @@ + + * + * See the enclosed file COPYING for license information (GPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/gpl.html. + */ + +// TODO before next release: remove ::status() and dependencies + + +define ("F_NO", 0); +define ("F_OK", 1); +define ("F_DATA", 2); +define ("F_HEAD", 3); + +define ("EC_NOT_LOGGED_IN", 0); +define ("EC_QUOTA", 10); +define ("EC_NOSCRIPTS", 20); +define ("EC_UNKNOWN", 255); +/* + + SIEVE-PHP.LIB VERSION 0.0.8 + + (C) 2001 Dan Ellis. + + PLEASE READ THE README FILE FOR MORE INFORMATION. + + Basically, this is the first re-release. Things are much better than before. + +Notes: +This program/libary has bugs. +. This was quickly hacked out, so please let me know what is wrong and if you feel ambitious submit +a patch :). + +Todo: +. Provide better error diagnostics. (mostly done with ver 0.0.5) +. Allow other auth mechanisms besides plain (in progress) +. Have timing mechanism when port problems arise. (not done yet) +. Maybe add the NOOP function. (not done yet) +. Other top secret stuff.... (some done, believe me?) + +Dan Ellis (danellis@rushmore.com) + +This program is released under the GNU Public License. + +You should have received a copy of the GNU Public +License along with this package; if not, write to the +Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + +See CHANGES for updates since last release + +Contributers of patches: +Atif Ghaffar +Andrew Sterling Hanenkamp + */ + + +class sieve +{ + var $host; + var $port; + var $user; + var $pass; + var $auth_types; /* a comma seperated list of allowed auth types, in order of preference */ + var $auth_in_use; /* type of authentication attempted */ + + var $line; + var $fp; + var $retval; + var $tmpfile; + var $fh; + var $len; + var $script; + + var $loggedin; + var $capabilities; + var $error; + var $error_raw; + var $responses; + var $options = ""; + + //maybe we should add an errorlvl that the user will pass to new sieve = sieve(,,,,E_WARN) + //so we can decide how to handle certain errors?!? + + //also add a connection type, like PLAIN, MD5, etc... + + + function get_response() + { + if($this->loggedin == false or feof($this->fp)){ + $this->error = EC_NOT_LOGGED_IN; + $this->error_raw = "You are not logged in."; + return false; + } + + unset($this->response); + unset($this->error); + unset($this->error_raw); + + $this->line=fgets($this->fp,1024); + $this->token = split(" ", $this->line, 2); + + if($this->token[0] == "NO"){ + /* we need to try and extract the error code from here. There are two possibilites: one, that it will take the form of: + NO ("yyyyy") "zzzzzzz" or, two, NO {yyyyy} "zzzzzzzzzzz" */ + $this->x = 0; + list($this->ltoken, $this->mtoken, $this->rtoken) = split(" ", $this->line." ", 3); + if($this->mtoken[0] == "{"){ + while($this->mtoken[$this->x] != "}" or $this->err_len < 1){ + $this->err_len = substr($this->mtoken, 1, $this->x); + $this->x++; + } +#print "
Trying to receive $this->err_len bytes for result
"; + $this->line = fgets($this->fp,$this->err_len); + $this->error_raw[]=substr($this->line, 0, strlen($this->line) -2); //we want to be nice and strip crlf's + $this->err_recv = strlen($this->line); + + /* Ensure max loop of 1000, to keep the ui from freezing */ + $max = 1000; + $cur = 0; + + while($this->err_recv < ($this->err_len) && ($cur < $max)){ + + $cur ++; + $this->line = fgets($this->fp,4096); + $this->err_recv += strlen($this->line); + $this->error_raw[]=preg_replace("/\r\n/","",$this->line); //we want to be nice and strip crlf' + } + } /* end if */ + elseif($this->mtoken[0] == "("){ + switch($this->mtoken){ + case "(\"QUOTA\")": + $this->error = EC_QUOTA; + $this->error_raw=$this->rtoken; + break; + default: + $this->error = EC_UNKNOWN; + $this->error_raw=$this->rtoken; + break; + } /* end switch */ + } /* end elseif */ + else{ + $this->error = EC_UNKNOWN; + $this->error_raw = $this->line; + } + return false; + + } /* end if */ + elseif(substr($this->token[0],0,-2) == "OK"){ + return true; + } /* end elseif */ + elseif($this->token[0][0] == "{"){ + + /* Unable wild assumption: that the only function that gets here is the get_script(), doesn't really matter though */ + + /* the first line is the len field {xx}, which we don't care about at this point */ + $this->line = fgets($this->fp,1024); + while(substr($this->line,0,2) != "OK" and substr($this->line,0,2) != "NO"){ + $this->response[]=$this->line; + $this->line = fgets($this->fp, 1024); + } + if(substr($this->line,0,2) == "OK") + return true; + else + return false; + } /* end elseif */ + elseif($this->token[0][0] == "\""){ + + /* I'm going under the _assumption_ that the only function that will get here is the listscripts(). + I could very well be mistaken here, if I am, this part needs some rework */ + + $this->found_script=false; + + while(substr($this->line,0,2) != "OK" and substr($this->line,0,2) != "NO"){ + $this->found_script=true; + list($this->ltoken, $this->rtoken) = explode(" ", $this->line." ",2); + //hmmm, a bug in php, if there is no space on explode line, a warning is generated... + + if(strcmp(rtrim($this->rtoken), "ACTIVE")==0){ + $this->response["ACTIVE"] = substr(rtrim($this->ltoken),1,-1); + } + else + $this->response[] = substr(rtrim($this->ltoken),1,-1); + $this->line = fgets($this->fp, 1024); + } /* end while */ + + return true; + + } /* end elseif */ + else{ + $this->error = EC_UNKNOWN; + $this->error_raw = $this->line; + print "UNKNOWN ERROR (Please report this line to danellis@rushmore.com to include in future releases): $this->line
"; + return false; + } /* end else */ + } /* end get_response() */ + + function sieve($host, $port, $user, $pass, $auth="",$options ="", $auth_types="PLAIN DIGEST-MD5") + { + $this->host=$host; + $this->port=$port; + $this->user=$user; + $this->pass=$pass; + if(!strcmp($auth, "")) /* If there is no auth user, we deem the user itself to be the auth'd user */ + $this->auth = $this->user; + else + $this->auth = $auth; + $this->auth_types=$auth_types; /* Allowed authentication types */ + $this->fp=0; + $this->line=""; + $this->retval=""; + $this->tmpfile=""; + $this->fh=0; + $this->len=0; + $this->capabilities=""; + $this->loggedin=false; + $this->error= ""; + $this->error_raw=""; + $this->options = $options; + + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->error_raw, + "SIEVE: Host: $host:$port. Options: $options - Auth Types: $auth_types "); + } + + function parse_for_quotes($string) + { + /* This function tokenizes a line of input by quote marks and returns them as an array */ + + $start = -1; + $index = 0; + + for($ptr = 0; $ptr < strlen($string); $ptr++){ + if($string[$ptr] == '"' and $string[$ptr] != '\\'){ + if($start == -1){ + $start = $ptr; + } /* end if */ + else{ + $token[$index++] = substr($string, $start + 1, $ptr - $start - 1); + $found = true; + $start = -1; + } /* end else */ + + } /* end if */ + + } /* end for */ + + if(isset($token)) + return $token; + else + return false; + } /* end function */ + + function status($string) + { + //this should probably be replaced by a smarter parser. + + /* Need to remove this and all dependencies from the class */ + + switch (substr($string, 0,2)){ + case "NO": + return F_NO; //there should be some function to extract the error code from this line + //NO ("quota") "You are oly allowed x number of scripts" + break; + case "OK": + return F_OK; + break; + default: + switch ($string[0]){ + case "{": + //do parse here for {}'s maybe modify parse_for_quotes to handle any parse delimiter? + return F_HEAD; + break; + default: + return F_DATA; + break; + } /* end switch */ + } /* end switch */ + } /* end status() */ + + function sieve_login() + { + + $this->fp=@fsockopen($this->host,$this->port,$err_id,$err_str); + if($this->fp == false){ + + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->error_raw, + "SIEVE: Socket connection failed. (".$this->host.":".$this->port.")"); + + $this->error_raw = $err_str; + return false; + } + + $this->line=fgets($this->fp,1024); + + //Hack for older versions of Sieve Server. They do not respond with the Cyrus v2. standard + //response. They repsond as follows: "Cyrus timsieved v1.0.0" "SASL={PLAIN,........}" + //So, if we see IMLEMENTATION in the first line, then we are done. + + if(ereg("IMPLEMENTATION",$this->line)) + { + //we're on the Cyrus V2 sieve server + while(sieve::status($this->line) == F_DATA){ + + $this->item = sieve::parse_for_quotes($this->line); + + if(strcmp($this->item[0], "IMPLEMENTATION") == 0) + $this->capabilities["implementation"] = $this->item[1]; + + elseif(strcmp($this->item[0], "SIEVE") == 0 or strcmp($this->item[0], "SASL") == 0){ + + if(strcmp($this->item[0], "SIEVE") == 0){ + $this->cap_type="modules"; + }else{ + $this->cap_type="auth"; + } + + $this->modules = split(" ", $this->item[1]); + if(is_array($this->modules)){ + foreach($this->modules as $this->module) + $this->capabilities[$this->cap_type][$this->module]=true; + } /* end if */ + elseif(is_string($this->modules)) + $this->capabilites[$this->cap_type][$this->modules]=true; + } + else{ + $this->capabilities["unknown"][]=$this->line; + } + $this->line=fgets($this->fp,1024); + + }// end while + } + else + { + //we're on the older Cyrus V1. server + //this version does not support module reporting. We only have auth types. + $this->cap_type="auth"; + + //break apart at the "Cyrus timsieve...." "SASL={......}" + $this->item = sieve::parse_for_quotes($this->line); + + $this->capabilities["implementation"] = $this->item[0]; + + //we should have "SASL={..........}" now. Break out the {xx,yyy,zzzz} + $this->modules = substr($this->item[1], strpos($this->item[1], "{"),strlen($this->item[1])-1); + + //then split again at the ", " stuff. + $this->modules = split($this->modules, ", "); + + //fill up our $this->modules property + if(is_array($this->modules)){ + foreach($this->modules as $this->module) + $this->capabilities[$this->cap_type][$this->module]=true; + } /* end if */ + elseif(is_string($this->modules)) + $this->capabilites[$this->cap_type][$this->module]=true; + } + + + + + if(sieve::status($this->line) == F_NO){ //here we should do some returning of error codes? + $this->error=EC_UNKNOWN; + + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$this->error_raw, + "SIEVE: Unknown sieve response, giving up."); + + $this->error_raw = "Server not allowing connections."; + return false; + } + + /* Loop through each allowed authentication type and see if the server allows the type */ + foreach(split(" ",$this->auth_types) as $auth_type) + { + if ($this->capabilities["auth"][$auth_type]) + { + /* We found an auth type that is allowed. */ + $this->auth_in_use = $auth_type; + break; + } + } + + /* Fill error message if no auth types are present */ + if (!isset($this->capabilities["auth"])){ + $this->error=EC_UNKNOWN; + $this->error_raw = "No authentication methods found - please check your sieve setup for missing sasl modules"; + return false; + } + + /* DEBUG */ + $imp = ""; + if(isset($this->capabilities['implementation'])){ + $imp = $this->capabilities['implementation']; + } + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,$imp, + "SIEVE: Socket connection established. "); + + /* call our authentication program */ + return sieve::authenticate(); + + } + + function sieve_logout() + { + if($this->loggedin==false) + return false; + + fputs($this->fp,"LOGOUT\r\n"); + fclose($this->fp); + + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"", + "SIEVE: Logout!"); + + $this->loggedin=false; + return true; + } + + function sieve_sendscript($scriptname, $script) + { + if($this->loggedin==false) + return false; + $this->script=stripslashes($script); + $len=strlen($this->script); + fputs($this->fp, "PUTSCRIPT \"$scriptname\" {".$len."+}\r\n"); + fputs($this->fp, "$this->script\r\n"); + + if(sieve::get_response()){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"", + "SIEVE: Script '".$scriptname."' successfully send!"); + return(TRUE); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw), + "SIEVE: Script couldn't be send!"); + return(FALSE); + } + } + + //it appears the timsieved does not honor the NUMBER type. see lex.c in timsieved src. + //don't expect this function to work yet. I might have messed something up here, too. + function sieve_havespace($scriptname, $scriptsize) + { + if($this->loggedin==false) + return false; + fputs($this->fp, "HAVESPACE \"$scriptname\" $scriptsize\r\n"); + return sieve::get_response(); + + } + + function sieve_setactivescript($scriptname) + { + if($this->loggedin==false) + return false; + + fputs($this->fp, "SETACTIVE \"$scriptname\"\r\n"); + + if(sieve::get_response()){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"", + "SIEVE: Set active script '".$scriptname."' was successful!"); + return(TRUE); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw), + "SIEVE: Set active script '".$scriptname."' failed!"); + return(FALSE); + } + } + + function sieve_getscript($scriptname) + { + unset($this->script); + if($this->loggedin==false) + return false; + + fputs($this->fp, "GETSCRIPT \"$scriptname\"\r\n"); + + if(sieve::get_response()){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"", + "SIEVE: Get script '".$scriptname."' was successful!"); + return(TRUE); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw), + "SIEVE: Get script '".$scriptname."' failed!"); + return(FALSE); + } + } + + + function sieve_deletescript($scriptname) + { + if($this->loggedin==false) + return false; + + fputs($this->fp, "DELETESCRIPT \"$scriptname\"\r\n"); + + if(sieve::get_response()){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"", + "SIEVE: Delete script '".$scriptname."' was successful!"); + return(TRUE); + }else{ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw), + "SIEVE: Delete script '".$scriptname."' failed!"); + return(FALSE); + } + } + + + function sieve_listscripts() + { + fputs($this->fp, "LISTSCRIPTS\r\n"); + sieve::get_response(); //should always return true, even if there are no scripts... + if(isset($this->found_script) and $this->found_script){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, implode($this->response,", "), + "SIEVE: List scripts was successful!"); + return true; + }else{ + $this->error=EC_NOSCRIPTS; //sieve::getresponse has no way of telling wether a script was found... + $this->error_raw="No scripts found for this account."; + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, $this->error_raw, + "SIEVE: List scripts returned no scripts"); + return false; + } + } + + function sieve_alive() + { + if(!isset($this->fp) or $this->fp==0){ + $this->error = EC_NOT_LOGGED_IN; + return false; + } + elseif(feof($this->fp)){ + $this->error = EC_NOT_LOGGED_IN; + return false; + } + else + return true; + } + + + function authenticate() + { + + /* Check if a TLS bases connection is required + */ + if($this->options == "tls"){ + + /* Check if PHP supports TLS encryption for sockets + */ + if(function_exists("stream_socket_enable_crypto")){ + + /* Initiate TLS and get response + */ + if (@ fputs ($this->fp, "STARTTLS\r\n") === false) { + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"couldn't send data to socket.", + "SIEVE: TLS couldn't be initiated. "); + $this->error_raw = "fputs() returned 'false'"; return (false); + } + @ $linha = fgets ($this->fp, 1024); + if ($linha === false) { + $this->error_raw = "fgets() returned 'false'"; + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"couldn't read data from socket.", + "SIEVE: TLS couldn't be initiated. "); + return (false); + } + if (! preg_match ("/\\s*OK\\s/i", $linha)) { + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"server returned '".trim ($linha)."' instead of 'OK'", + "SIEVE: TLS couldn't be initiated. "); + $this->error_raw = "expected an 'OK', but server replied: '" . trim ($linha) . "'"; + return (false); + } + if (! @ stream_socket_enable_crypto ($this->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) { + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, + "The socket doesn't seem to support STREAM_CRYPTO_METHOD_TLS_CLIENT", + "SIEVE: TLS couldn't be initiated. "); + $this->error_raw = "stream_socket_enable_crypto() returned 'false'"; + return (false); + } + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"", + "SIEVE: TLS successfully initiated. "); + } + } + + switch ($this->auth_in_use) { + + case "PLAIN": + { + $auth=base64_encode("$this->user\0$this->auth\0$this->pass"); + + $this->len=strlen($auth); + fputs($this->fp, "AUTHENTICATE \"PLAIN\" {".$this->len."+}\r\n"); + fputs($this->fp, "$auth\r\n"); + + $this->line=fgets($this->fp,1024); + while(sieve::status($this->line) == F_DATA) + $this->line=fgets($this->fp,1024); + + if(sieve::status($this->line) == F_NO){ + $this->error_raw = $this->line; + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,trim($this->error_raw), + "SIEVE: Authentication for '".$this->user."-".$this->auth_in_use."' failed."); + + return false; + } + + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"", + "SIEVE: Authentication for '".$this->user."-".$this->auth_in_use."' was successful."); + $this->loggedin=true; + return true; + }break; + + default: + { + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__,"Unsupported authentication method '".$this->auth_in_use."'!", + "SIEVE: Authentication for '".$this->user."' with type '".$this->auth_in_use."' failed."); + + $this->error_raw = "Unsupported authentication method '".$this->auth_in_use."'!"; + return false; + } break; + + }//end switch + + + }//end authenticate() + + +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Block_End.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Block_End.inc new file mode 100644 index 000000000..3bd0b0436 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Block_End.inc @@ -0,0 +1,32 @@ +object_id = $object_id; + } + + function execute() + { + $smarty = get_smarty(); + return($smarty->fetch(get_template_path("templates/element_block_end.tpl",TRUE,dirname(__FILE__)))); + } + function check() + { + return(array()); + } + + function get_sieve_script_part() + { + return("}"); + } + function save_object() + { + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Block_Start.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Block_Start.inc new file mode 100644 index 000000000..e001cdc58 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Block_Start.inc @@ -0,0 +1,33 @@ +object_id = $object_id; + } + + function execute() + { + $smarty = get_smarty(); + return($smarty->fetch(get_template_path("templates/element_block_start.tpl",TRUE,dirname(__FILE__)))); + } + + function check() + { + return(array()); + } + + function save_object() + { + } + + function get_sieve_script_part() + { + return("{"); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Comment.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Comment.inc new file mode 100644 index 000000000..deaa4f312 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Comment.inc @@ -0,0 +1,84 @@ +data."*/"; + return($str); + } + + function sieve_comment($data,$object_id) + { + $this->object_id = $object_id; + + if($data === NULL){ + $data = array('ELEMENTS' => array(array('class' => "quoted-string" ,"text" => "/*"._("Your comment here")."*/"))); + } + + foreach($data['ELEMENTS'] as $node){ + + $text = $node['text']; + + /* Convert \t to spaces */ + $text = preg_replace("#\t#"," ",$text); + + /* Remove comment indicator '#' but keep spaces */ + $text = preg_replace("/^([ ]*)\#/","\\1",$text); + + /* Remove comment indicator '/ *' */ + $text = preg_replace("#\/\*#","",$text); + + /* Remove comment indicator '* /' */ + $text = preg_replace("#\*\/#","",$text); + + $this->data .= $text."\n"; + } + $this->data = rtrim($this->data)."\n"; + } + + function check() + { + return(array()) ; + } + + function save_object() + { + if(isset($_POST['comment_'.$this->object_id])){ + $cm = stripslashes( $_POST['comment_'.$this->object_id]); + $cm = preg_replace("/\*\//","* /",$cm); + $this->data = $cm; + } + + if(isset($_POST['toggle_small_'.$this->object_id])){ + $this->small = !$this->small; + } + } + + function execute() + { + $smarty = get_smarty(); + $smarty->assign("ID", $this->object_id); + $smarty->assign("Small", $this->small); + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + $Comment = $this->data; + + if($this->small){ + $Comment = nl2br(preg_replace("/ /"," ",$Comment)); + } + + /* Create html object */ + $smarty->assign("Comment",$Comment); + $smarty->assign("ID",$this->object_id); + $object = $smarty->fetch(get_template_path("templates/element_comment.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + return($str); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Discard.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Discard.inc new file mode 100644 index 000000000..1ee28ad43 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Discard.inc @@ -0,0 +1,40 @@ +object_id = $object_id; + } + + function get_sieve_script_part() + { + return("discard;"); + } + function check() + { + return(array()) ; + } + + + function save_object() + { + + } + + function execute() + { + $smarty = get_smarty(); + $smarty->assign("ID", $this->object_id); + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + $object = $smarty->fetch(get_template_path("templates/element_discard.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + return($str); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Else_Elsif.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Else_Elsif.inc new file mode 100644 index 000000000..c02e12360 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Else_Elsif.inc @@ -0,0 +1,43 @@ +object_id = $object_id; + } + + function save_object() + { + } + + function execute() + { + $smarty = get_smarty(); + $smarty->assign("ID", $this->object_id); + $object_container = $smarty->fetch(get_template_path("templates/object_container_clear.tpl",TRUE,dirname(__FILE__))); + $object= $smarty->fetch(get_template_path("templates/element_else.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + return($str); + } + + function get_sieve_script_part() + { + return("else"); + } +} + +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Fileinto.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Fileinto.inc new file mode 100644 index 000000000..dc3923f41 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Fileinto.inc @@ -0,0 +1,104 @@ +get_mail_boxes(); + + if(isset($_POST['fileinto_'.$this->object_id])){ + $mb = stripslashes($_POST['fileinto_'.$this->object_id]); + + /* Depending on the user mode we only accept + * existing mailboxes + */ + if($this->user_mode){ + $this->data = $mb; + }else{ + if(in_array_ics($mb,$mbs)){ + $this->data = $mb; + } + } + + /* Check Mode */ + if(isset($_POST['user_mode_'.$this->object_id])){ + $this->user_mode = !$this->user_mode; + } + } + } + + function sieve_fileinto($data,$object_id,$parent) + { + $this->object_id = $object_id; + $this->parent = $parent; + $this->parent->add_require("fileinto"); + + $mbs = $this->get_mail_boxes(); + + /* Set the default mailbox */ + if($data === NULL){ + $data = array('ELEMENTS' => array(array('class' => "quoted-string" ,"text" => $mbs[key($mbs)]))); + } + + /* Load element contents, should normaly be only one string + * but if we found more than one, just append the following strings. + */ + for($i = 0 ; $i < count($data['ELEMENTS']) ; $i++){ + $tmp = sieve_get_strings($data['ELEMENTS'],$i); + $i = $i + $tmp['OFFSET']; + foreach($tmp['STRINGS'] as $str){ + $this->data .= $str; + } + } + + /* Set user mode to active, so we are able to insert + * the destination mail folder manually + */ + if(!in_array_ics($this->data,$mbs)){ + $this->user_mode = TRUE; + } + } + + function get_sieve_script_part() + { + $tmp = ""; + $tmp.= "\"".$this->data."\", "; + $tmp = preg_replace("/,$/","",trim($tmp)); + $tmp = preg_replace ("/\"\"/","\"",$tmp); + return("fileinto ".$tmp.";"); + } + + function execute() + { + $smarty = get_smarty(); + $smarty->assign("Selected",htmlentities($this->data)); + $smarty->assign("Boxes", $this->get_mail_boxes()); + $smarty->assign("User_Mode", $this->user_mode); + $smarty->assign("ID", $this->object_id); + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + $object= $smarty->fetch(get_template_path("templates/element_fileinto.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + + return($str); + } + + function check() + { + return(array()); + } + + function get_mail_boxes() + { + $list = $this->parent->parent->parent->parent->mailboxList; + return($list); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_If.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_If.inc new file mode 100644 index 000000000..8098eaf6a --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_If.inc @@ -0,0 +1,1469 @@ +parent = $parent; + $this->object_id = $object_id; + + /* Possible address parts we can select */ + $this->address_parts = array( + ":all" => _("Complete address")." ("._("Default").")", + ":domain" => _("Domain part") , + ":localpart" => _("Local part")); + + /* comparator type */ + $this->comparators = array( + "i;ascii-casemap" => _("Case insensitive")." ("._("Default").")", + "i;octet" => _("Case sensitive"), + "i;ascii-numeric" => _("Numeric")); + + /* Match types */ + $this->match_types = array( + ":is" => _("is"), + ":regex" => _("regex"), + ":contains" => _("contains"), + ":matches" => _("matches"), + ":count" => _("count"), + ":value" => _("value is")); + + /* Operators */ + $this->operators = array( + "lt" => _("less than"), + "le" => _("less or equal"), + "eq" => _("equals"), + "ge" => _("greater or equal"), + "gt" => _("greater than"), + "ne" => _("not equal")); + + /* Skip parsing if this element is new */ + if($elements !== NULL){ + + /* Remove comments from tests */ + $tmp = array(); + foreach($elements['ELEMENTS'] as $ele){ + if($ele['class'] != "comment"){ + $tmp[] = $ele; + } + } + $elements['ELEMENTS'] = $tmp; + + if($elements!==NULL){ + $this->elements = $elements; + $this->_parsed = $this->_parse($elements['ELEMENTS'],1); + } + } + } + + + /* Returns the sieve script for this + * if/else tag. + */ + function get_sieve_script_part() + { + $tmp = $this->TYPE." ".$this->get_sieve_script_part_recursive($parsed = NULL,$id = 1,$obj_id=1); + return($tmp); + } + + + /* Return error msgs */ + function check() + { + $check = $this->check_recursive(); + return($check); + } + + + /* Recursivly fetch all error msgs */ + function check_recursive($parsed = NULL,$id = 1,$obj_id=1) + { + $ret = array(); + if($parsed === NULL){ + $parsed = $this->_parsed; + } + + if($parsed === NULL) { + return(array(_("Can't save empty tests."))); + } + + /* Walk through all elements */ + foreach($parsed as $key => $data){ + + /* Create elements */ + switch($key) + { + /******************* + * Allof / Anyof + *******************/ + case "anyof" : + case "allof" : + { + foreach($data as $key2 => $dat){ + if(($key2 === "Inverse") && ($key2 == "Inverse")){ + continue; + } + $msgs = $this->check_recursive($dat, ($id +1),$key2); + + foreach($msgs as $msg){ + $ret[] = $msg; + } + } + break; + } + + /******************* + * True / False + *******************/ + + case "true" : + case "false" : + { + /* Can't fail anyway */ + break; + } + + /******************* + * Default + *******************/ + + default: + { + if(isset($data['LastError']) && !empty($data['LastError'])){ + $ret[] = $data['LastError']; + } + } + } + } + return($ret); + } + + + /* Recursivly create a sieve script out of the given + * tags and tokens provided by $parsed. + * $id specifies the depth of the current element. + * $obj_id is the current tag-id handled by this function + */ + function get_sieve_script_part_recursive($parsed = NULL,$id = 1,$obj_id=1) + { + $script =""; + if($parsed === NULL){ + $parsed = $this->_parsed; + } + + + if(!is_array($parsed)){ + return; + } + + /* Walk through all elements */ + foreach($parsed as $key => $data){ + + /* Create Inverse Tag */ + if(is_array($data) && isset($data['Inverse']) && $data['Inverse']){ + $Inverse = TRUE; + }else{ + $Inverse = FALSE; + } + + /* Create elements */ + switch($key) + { + + /******************* + * True / False + *******************/ + + case "true" : + case "false" : + { + /* Invert this test if required */ + if($Inverse){ + $script .= "not "; + } + $script .= $key; + break; + } + + + /******************* + * Address + *******************/ + + case "address" : + { + /* [not] address + [address-part: tag] + [comparator: tag] + [match-type: tag] + + + */ + + /* Invert this test if required */ + if($Inverse){ + $script .= "not "; + } + + $script .="address "; + + /* Add address part tag */ + if(!empty($data['Address_Part']) && $data['Address_Part'] != ":all"){ + $script .= $data['Address_Part']." "; + } + + /* Add comparator */ + if(!empty($data['Comparator']) && $data['Comparator'] != ""){ + $script .= preg_replace('/\"\"/',"\"", ":comparator \"".$data['Comparator']."\" "); + } + + /* Add match type */ + $script .= $data['Match_type']." "; + + /* Add special match type for count and value */ + if(in_array($data['Match_type'], array(":value",":count")) && !empty($data['Match_type_value'])) { + $script .= sieve_create_strings($data['Match_type_value'])." "; + } + + $script .= sieve_create_strings($data['Key_List']); + $script .= " "; + $script .= sieve_create_strings($data['Value_List']); + break; + } + + + /******************* + * Header + *******************/ + + case "header" : + { + /* [not] header + [comparator: tag] + [match-type: tag] + + + */ + + /* Invert ? */ + if($Inverse){ + $script .= "not "; + } + + $script .="header "; + + /* Add address part tag */ + if(!empty($data['Address_Part']) && $data['Address_Part'] != ":all"){ + $script .= $data['Address_Part']." "; + } + + /* Add comparator */ + if(!empty($data['Comparator']) && $data['Comparator'] != ""){ + $script .= preg_replace('/\"\"/',"\"", ":comparator \"".$data['Comparator']."\" "); + } + + /* Add match type */ + $script .= $data['Match_type']." "; + + /* Add special match type for count and value */ + if(in_array($data['Match_type'], array(":value",":count")) && !empty($data['Match_type_value'])) { + $script .= sieve_create_strings($data['Match_type_value'])." "; + } + + $script .= sieve_create_strings($data['Key_List']); + $script .= " "; + $script .= sieve_create_strings($data['Value_List']); + break; + } + + + /******************* + * Envelope + *******************/ + + case "envelope" : + { + /* [not] envelope + [address-part: tag] + [comparator: tag] + [match-type: tag] + + + */ + + /* Invert */ + if($Inverse){ + $script .= "not "; + } + + $script .="envelope "; + + /* Add address part tag */ + if(!empty($data['Address_Part']) && $data['Address_Part'] != ":all"){ + $script .= $data['Address_Part']." "; + } + + /* Add comparator */ + if(!empty($data['Comparator']) && $data['Comparator'] != ""){ + $script .= preg_replace('/\"\"/',"\"", ":comparator \"".$data['Comparator']."\" "); + } + + /* Add match type */ + $script .= $data['Match_type']." "; + + /* Add special match type for count and value */ + if(in_array($data['Match_type'], array(":value",":count")) && !empty($data['Match_type_value'])) { + $script .= sieve_create_strings($data['Match_type_value'])." "; + } + + $script .= sieve_create_strings($data['Key_List']); + $script .= " "; + $script .= sieve_create_strings($data['Value_List']); + break; + } + + + /******************* + * Exists + *******************/ + case "exists" : + { + /* [not] exists + + */ + + /* Invert ? */ + if($Inverse){ + $script .= "not "; + } + + $script .= "exists ".sieve_create_strings($data['Values']); + break; + } + + + /******************* + * Size + *******************/ + case "size" : + { + /* [not] size + <":over" / ":under"> + + */ + + /* Invert ? */ + if($Inverse){ + $script .= "not "; + } + + /* Add size test */ + $script .="size "; + $script .=$data['Match_type']." "; + foreach($data['Value_List'] as $val){ + $script .= $val." "; + } + break; + } + + + /******************* + * Allof + *******************/ + case "anyof" : + case "allof" : + { + /* allof + anyof */ + + + /* Add spaces, to indent the code.*/ + $block = "\n"; + for($i = 0 ; $i < $id ; $i ++){ + $block .= SIEVE_INDENT_TAB; + } + + /* Add allof/anyof tag */ + if($Inverse){ + $script .= "not "; + } + $script.= $key." ( "; + + /* Add each test parameter */ + foreach($data as $key2 => $dat){ + if(($key2 === "Inverse") && ($key2 == "Inverse")){ + continue; + } + $script.= $block.$this->get_sieve_script_part_recursive($dat, ($id +1),$key2).", "; + } + + /* Remove last _,_ and close the tag */ + $script = preg_replace("/,$/","",trim($script)); + $script.= $block.")"; + break ; + } + + default : + { + $script .= "THERE IS SOME IMPLEMENTATION MISSING FOR SIEVE SCRIPT CREATION :".$key; + } + } + } + return($script); + } + + + function add_test($data,$type) + { + switch($type) + { + case "header" : + case "address" : + case "envelope" : + { + /* Add to Tree */ + $values = array( "Inverse" => FALSE, + "Comparator" => "", + "Expert" => FALSE, + "LastError" => "", + "Match_type" => ":contains", + "Match_type_value"=> "", + "Key_List" => array(_("emtpy")), + "Value_List" => array(_("empty"))) ; + if($type == "address"){ + $values["Address_Part"] = ":all"; + } + $data[$type]=$values; + + $this->parent->add_require("relational"); + if($type == "envelope"){ + $this->parent->add_require("envelope"); + } + + + break; + } + case "allof" : + case "anyof" : + { + $data[$type] = array("Inverse" => FALSE); + break; + } + case "size" : + { + $tmp= array( + "Inverse" => FALSE, + "Match_type" => ":over", + "Value_List" => array("1M")); + + $tmp['LastError'] = ""; + $data[$type] = $tmp; + break; + } + case "true": + { + $data['true'] = "true"; + $data['true']['LastError'] = ""; + break; + } + case "false": + { + $data['false'] = "false"; + $data['false']['LastError'] = ""; + break; + } + case "exists" : + { + $data['exists'] = array('Inverse' => FALSE, + 'Values' => array(_("Nothing specified right now")), + 'LastError' => ""); + break; + } + default : echo "Still buggy ";exit; + } + + return($data); + } + + + /* Ensure that all changes made on the ui + * will be saved. + */ + function save_object() + { + + if(isset($_POST['add_type']) && isset($_POST["test_type_to_add_".$this->object_id])){ + $this->_parsed = $this->add_test($this->_parsed,$_POST["test_type_to_add_".$this->object_id]); + } + + $tmp = $this->save_object_recursive($parsed = NULL,$id = 1,$obj_id=1); + $this->_parsed = $tmp; + } + + + /* Recursivly save all ui changes for the + * tags and tokens provided by $parsed. + * $id specifies the depth of the current element. + * $obj_id is the current tag-id handled by this function + */ + function save_object_recursive($parsed = NULL,$id = 1,$obj_id=1) + { + /* Variable initialization */ + $ret =""; + if($parsed === NULL){ + $parsed = $this->_parsed; + } + + if(!is_array($parsed)) { + return; + } + + /* Walk through all elements */ + foreach($parsed as $key => $data){ + + /* Id used to have unique html names */ + $element_id = $this->object_id."_".$id."_".$obj_id; + + foreach($_POST as $name => $value){ + if(preg_match("/Remove_Test_Object_".$element_id."_(x|y)/",$name)) { + return(false); + } + } + + + if(isset($_POST['add_type']) && isset($_POST["test_type_to_add_".$element_id])){ + $parsed[$key][] = $this->add_test(array(),$_POST["test_type_to_add_".$element_id]); + } + + /* Create elements */ + switch($key) + { + /******************* + * Address + *******************/ + + case "envelope" : + case "header" : + case "address" : + { + /* [not] address + [address-part: tag] + [comparator: tag] + [match-type: tag] + + + */ + + /* Possible address parts we can select */ + $address_parts = $this->address_parts; + $comparators = $this->comparators; + $match_types = $this->match_types; + $operators = $this->operators; + + $parsed[$key]['LastError'] = ""; + + /* Toggle Inverse ? */ + if(isset($_POST['toggle_inverse_'.$element_id])){ + $parsed[$key]['Inverse'] = !$parsed[$key]['Inverse']; + } + + /* Check if we want to toggle the expert mode */ + if(isset($_POST['Toggle_Expert_'.$element_id])){ + $parsed[$key]['Expert'] = !$parsed[$key]['Expert']; + } + + /* Get address part */ + if(isset($_POST['address_part_'.$element_id])){ + $ap = $_POST['address_part_'.$element_id]; + + if(!isset($address_parts[$ap])){ + $parsed[$key]['LastError'] = _("Invalid type of address part.") ; + } + $parsed[$key]['Address_Part'] = $ap; + } + + /* Check if match type has changed */ + if(isset($_POST['matchtype_'.$element_id])){ + $mt = $_POST['matchtype_'.$element_id]; + + if(!isset($match_types[$mt])){ + $parsed[$key]['LastError'] = _("Invalid match type given."); + } + if($mt == ":regex"){ + $this->parent->add_require("regex"); + } + if($mt == ":count"){ + $this->parent->add_require("comparator-i;ascii-numeric"); + } + $parsed[$key]['Match_type'] = $mt; + } + + /* Get the comparator tag, if posted */ + if(isset($_POST['comparator_'.$element_id])){ + $cp = $_POST['comparator_'.$element_id]; + + if(!isset($comparators[$cp])){ + $parsed[$key]['LastError'] = _("Invalid operator given."); + } + $parsed[$key]['Comparator'] = $cp; + + if($cp == "i;ascii-numeric"){ + $this->parent->add_require("comparator-i;ascii-numeric"); + } + } + + /* In case of :count and :value match types + * we have a special match operator we should save. + */ + if(in_array($parsed[$key]['Match_type'],array(":value",":count"))){ + if(isset($_POST['operator_'.$element_id])){ + $op = $_POST['operator_'.$element_id]; + + if(!isset($operators[$op])){ + $parsed[$key]['LastError'] = _("Please specify a valid operator."); + } + $parsed[$key]['Match_type_value'] = $op; + } + } + + /* Get the address fields we should check, they are seperated by , */ + if(isset($_POST['keys_'.$element_id])){ + $vls = stripslashes($_POST['keys_'.$element_id]); + $tmp = array(); + + $tmp2 = split(",",$vls); + foreach($tmp2 as $val){ + $tmp[] = trim($val); + + if(preg_match("/\"/",$val)){ + $parsed[$key]['LastError'] = _("Invalid character found in address attribute. Quotes are not allowed here."); + } + } + $parsed[$key]['Key_List'] = $tmp; + } + + /* Get the values should check for, they are seperated by , */ + if(isset($_POST['values_'.$element_id])){ + $vls = stripslashes($_POST['values_'.$element_id]); + $tmp = array(); + + $tmp2 = split(",",$vls); + foreach($tmp2 as $val){ + $tmp[] = trim($val); + if(preg_match("/\"/",$val)){ + $parsed[$key]['LastError'] = _("Invalid character found in value attribute. Quotes are not allowed here."); + } + } + $parsed[$key]['Value_List'] = $tmp; + } + break; + } + + /******************* + * TRUE FALSE + *******************/ + + case "true" : + case "false" : + { + $name = 'boolean_'.$element_id; + if(isset($_POST[$name])){ + $key2 = $_POST[$name]; + + if($key != $key2) { + $parsed = array($key2 => $key2); + } + } + break; + } + + /******************* + * Exists + *******************/ + + case "exists" : + { + /* Toggle Inverse ? */ + if(isset($_POST['toggle_inverse_'.$element_id])){ + $parsed[$key]['Inverse'] = !$parsed[$key]['Inverse']; + } + + /* get list of match values */ + if(isset($_POST['Values_'.$element_id])){ + $vls = stripslashes($_POST['Values_'.$element_id]); + $tmp = array(); + + $tmp2 = split(",",$vls); + foreach($tmp2 as $val){ + $tmp[] = "\"".trim(preg_replace("/\"/","",$val))."\""; + } + $parsed['exists']['Values'] = $tmp; + } + break; + } + + /******************* + * Size + *******************/ + + case "size" : + { + $Match_types = array( ":over" => _("greater than") , + ":under" => _("lower than")); + + $Units = array( "M" => _("Megabyte"), + "K" => _("Kilobyte"), + "" => _("Bytes")); + + /* Toggle Inverse ? */ + if(isset($_POST['toggle_inverse_'.$element_id])){ + $parsed[$key]['Inverse'] = !$parsed[$key]['Inverse']; + } + + /* Reset error */ + $parsed[$key]['LastError'] =""; + + /* Get match type */ + if(isset($_POST['Match_type_'.$element_id])){ + $mt = $_POST['Match_type_'.$element_id]; + if(!isset($Match_types[$mt])){ + $parsed[$key]['LastError'] = _("Please select a valid match type in the list box below."); + } + $parsed[$key]['Match_type'] = $mt; + } + + /* Get old values */ + $value = preg_replace("/[^0-9]*$/","",$parsed[$key]['Value_List'][0]); + $unit = preg_replace("/^[0-9]*/","",$parsed[$key]['Value_List'][0]); + + /* Get value */ + if(isset($_POST['Value_'.$element_id])){ + $vl = $_POST['Value_'.$element_id]; + + if(!(is_numeric($vl) && preg_match("/^[0-9]*$/",$vl))){ + $parsed[$key]['LastError'] = _("Only numeric values are allowed here."); + } + $value = preg_replace("/[^0-9]/","",$vl); + } + + /* Get unit */ + if(isset($_POST['Value_Unit_'.$element_id])){ + $ut = $_POST['Value_Unit_'.$element_id]; + + if(!isset($Units[$ut])){ + $parsed[$key]['LastError'] = _("No valid unit selected"); + } + $unit = $ut; + } + $parsed[$key]['Value_List'] = array(); + $parsed[$key]['Value_List'][0] = $value.$unit; + break; + } + + /******************* + * Allof + *******************/ + + case "allof" : + { + if(isset($_POST['toggle_inverse_'.$element_id])){ + $parsed[$key]['Inverse'] = !$parsed[$key]['Inverse']; + } + foreach($data as $key2 => $dat){ + if(($key2 === "Inverse") && ($key2 == "Inverse")){ + continue; + } + $tmp_data = $this->save_object_recursive($dat, ($id +1),$key2."-".$obj_id); + if($tmp_data != false){ + $parsed[$key][$key2] = $tmp_data; + }else{ + unset( $parsed[$key][$key2]); + } + } + break ; + } + + /******************* + * Anyof + *******************/ + + case "anyof" : + { + if(isset($_POST['toggle_inverse_'.$element_id])){ + $parsed[$key]['Inverse'] = !$parsed[$key]['Inverse']; + } + foreach($data as $key2 => $dat){ + if(($key2 === "Inverse") && ($key2 == "Inverse")){ + continue; + } + $tmp_data = $this->save_object_recursive($dat, ($id +1),$key2."-".$obj_id); + if($tmp_data != false){ + $parsed[$key][$key2] = $tmp_data; + }else{ + unset( $parsed[$key][$key2]); + } + } + break ; + } + } + } + return($parsed); + } + + + /* Return html element for IF */ + function execute() + { + /* Create title */ + $name = ""; + $name .= ""._("Condition").""; + if($this->TYPE == "if"){ + $name .= " - "._("If"); + }elseif($this->TYPE == "elsif"){ + $name .= " - "._("Else If"); + }else{ + $name .= " - "._("Else"); + } + + $smarty = get_smarty(); + $smarty->assign("ID", $this->object_id); + + /* Get navigation element container */ + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + + $smarty->assign("Name", $name); + $smarty->assign("Contents", $this->get_as_html()); + + if($this->TYPE == "if"){ + $object = $smarty->fetch(get_template_path("templates/element_if.tpl",TRUE,dirname(__FILE__))); + }else{ + $object = $smarty->fetch(get_template_path("templates/element_elsif.tpl",TRUE,dirname(__FILE__))); + } + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + return($str); + } + + + /* Returns all elements as html */ + function get_as_html($parsed = NULL,$id = 1,$obj_id=1) + { + $ret =""; + if($parsed === NULL){ + $parsed = $this->_parsed; + } + + if((!is_array($parsed)) || !count($parsed)) { + $smarty = get_smarty(); + $smarty->assign("ID",$this->object_id); + $smarty->assign("DisplayAdd",TRUE); + $smarty->assign("DisplayDel",FALSE); + $str = $smarty->fetch(get_template_path("templates/object_test_container.tpl",TRUE,dirname(__FILE__))); + $ret .= preg_replace("/%%OBJECT_CONTENT%%/",_("Empty"),$str); + return($ret); + } + + /* Walk through all elements */ + foreach($parsed as $key => $data){ + + /* Create Inverse Tag */ + if(is_array($data) && isset($data['Inverse']) && $data['Inverse']){ + $Inverse = TRUE; + }else{ + $Inverse = FALSE; + } + + /* Id used to have unique html names */ + $element_id = $this->object_id."_".$id."_".$obj_id; + + /* Create elements */ + switch($key) + { + + /******************* + * TRUE FALSE + *******************/ + + case "true" : + case "false" : + { + /* Inverse element if required */ + if($Inverse){ + if($key == "true"){ + $key = "false"; + }else{ + $key = "true"; + } + } + + /* Get template */ + $smarty = get_smarty(); + $smarty->assign("values" , array("false" => _("False"), "true" => _("True"))); + $smarty->assign("selected" , $key); + $smarty->assign("ID" , $element_id); + $ret .= $smarty->fetch(get_template_path("templates/element_boolean.tpl",TRUE,dirname(__FILE__))); + break; + } + + + /******************* + * Header + *******************/ + + case "header": + { + $address_parts = $this->address_parts; + $comparators = $this->comparators; + $match_types = $this->match_types; + $operators = $this->operators; + + $smarty = get_smarty(); + $smarty->assign("comparators",$comparators); + $smarty->assign("match_types",$match_types); + $smarty->assign("operators",$operators); + $smarty->assign("LastError",$data['LastError']); + $smarty->assign("match_type", $data['Match_type']); + $smarty->assign("operator" , preg_replace("/\"/","",$data['Match_type_value'])); + $smarty->assign("comparator", preg_replace("/\"/","",$data['Comparator'])); + + $keys = ""; + foreach($data['Key_List'] as $key){ + $keys .= $key.", "; + } + $keys = preg_replace("/,$/","",trim($keys)); + + $values = ""; + foreach($data['Value_List'] as $key){ + $values .= $key.", "; + } + $values = preg_replace("/,$/","",trim($values)); + + $smarty->assign("keys",$keys); + $smarty->assign("Inverse",$Inverse); + $smarty->assign("values",$values); + $smarty->assign("Expert", $data['Expert']); + + $smarty->assign("ID" , $element_id); + $ret .= $smarty->fetch(get_template_path("templates/element_header.tpl",TRUE,dirname(__FILE__))); + break; + } + + + /******************* + * Envelope + *******************/ + + case "envelope": + { + $address_parts = $this->address_parts; + $comparators = $this->comparators; + $match_types = $this->match_types; + $operators = $this->operators; + + $smarty = get_smarty(); + $smarty->assign("Inverse",$Inverse); + $smarty->assign("comparators",$comparators); + $smarty->assign("Expert", $data['Expert']); + $smarty->assign("match_types",$match_types); + $smarty->assign("operators",$operators); + $smarty->assign("LastError",$data['LastError']); + $smarty->assign("match_type", $data['Match_type']); + $smarty->assign("operator" , preg_replace("/\"/","",$data['Match_type_value'])); + $smarty->assign("comparator", preg_replace("/\"/","",$data['Comparator'])); + + $keys = ""; + foreach($data['Key_List'] as $key){ + $keys .= $key.", "; + } + $keys = preg_replace("/,$/","",trim($keys)); + + $values = ""; + foreach($data['Value_List'] as $key){ + $values .= $key.", "; + } + $values = preg_replace("/,$/","",trim($values)); + $smarty->assign("keys",$keys); + $smarty->assign("values",$values); + + $smarty->assign("ID" , $element_id); + $ret .= $smarty->fetch(get_template_path("templates/element_envelope.tpl",TRUE,dirname(__FILE__))); + break; + } + + + /******************* + * Address + *******************/ + + case "address" : + { + $address_parts = $this->address_parts; + $comparators = $this->comparators; + $match_types = $this->match_types; + $operators = $this->operators; + + $smarty = get_smarty(); + $smarty->assign("Inverse",$Inverse); + $smarty->assign("address_parts",$address_parts); + $smarty->assign("comparators",$comparators); + $smarty->assign("match_types",$match_types); + $smarty->assign("LastError",$data['LastError']); + $smarty->assign("operators",$operators); + $smarty->assign("match_type", $data['Match_type']); + $smarty->assign("operator" , preg_replace("/\"/","",$data['Match_type_value'])); + $smarty->assign("comparator", preg_replace("/\"/","",$data['Comparator'])); + $smarty->assign("address_part", $data['Address_Part']); + $smarty->assign("Expert", $data['Expert']); + + $keys = ""; + foreach($data['Key_List'] as $key){ + $keys .= $key.", "; + } + $keys = preg_replace("/,$/","",trim($keys)); + + $values = ""; + foreach($data['Value_List'] as $key){ + $values .= $key.", "; + } + $values = preg_replace("/,$/","",trim($values)); + + $smarty->assign("keys",$keys); + $smarty->assign("values", $values); + $smarty->assign("ID" , $element_id); + $str = $smarty->fetch(get_template_path("templates/element_address.tpl",TRUE,dirname(__FILE__))); + $ret .= $str; + break; + } + + + /******************* + * Size + *******************/ + + case "size" : + { + $Match_types = array( ":over" => _("greater than") , + ":under" => _("lower than")); + + $Units = array( "M" => _("Megabyte"), + "K" => _("Kilobyte"), + "" => _("Bytes")); + + $Match_type = $data['Match_type']; + $Value = preg_replace("/[^0-9]/","",$data['Value_List'][0]); + $Value_Unit = preg_replace("/[0-9]/","",$data['Value_List'][0]); + + $LastError = ""; + if(isset($data['LastError'])){ + $LastError = $data['LastError']; + } + + $smarty = get_smarty(); + $smarty->assign("Inverse",$Inverse); + $smarty->assign("LastError",$LastError); + $smarty->assign("Match_types",$Match_types); + $smarty->assign("Units",$Units); + $smarty->assign("Match_type",$Match_type); + $smarty->assign("Value",$Value); + $smarty->assign("Value_Unit",$Value_Unit); + $smarty->assign("ID" , $element_id); + $ret .= $smarty->fetch(get_template_path("templates/element_size.tpl",TRUE,dirname(__FILE__))); + break; + } + + /******************* + * Exists + *******************/ + + case "exists" : + { + $LastError = ""; + if(isset($data['LastError'])){ + $LastError = $data['LastError']; + } + + $Values = ""; + foreach($data['Values'] as $val){ + $Values .= $val.", "; + } + $Values = preg_replace("/,$/","",trim($Values)); + + $smarty = get_smarty(); + $smarty->assign("LastError",$LastError); + $smarty->assign("Values",$Values); + $smarty->assign("Inverse",$Inverse); + $smarty->assign("ID" , $element_id); + $ret .= $smarty->fetch(get_template_path("templates/element_exists.tpl",TRUE,dirname(__FILE__))); + break; + } + + + /******************* + * All of + *******************/ + + case "allof" : + { + $Contents = ""; + foreach($data as $key => $dat){ + if(($key === "Inverse") && ($key == "Inverse")){ + continue; + } + $Contents .= $this->get_as_html($dat, ($id +1),$key."-".$obj_id); + } + + $smarty = get_smarty(); + $smarty->assign("ID" , $element_id); + $smarty->assign("DisplayAdd",TRUE); + $smarty->assign("DisplayDel",FALSE); + $cont_tmp = $smarty->fetch(get_template_path("templates/object_test_container.tpl",TRUE,dirname(__FILE__))); + $cont_tmp = preg_replace("/%%OBJECT_CONTENT%%/",""._("Click here to add a new test")."",$cont_tmp); + + $smarty->assign("Inverse",$Inverse); + $smarty->assign("Contents",$cont_tmp.$Contents); + $smarty->assign("ID" , $element_id); + $allof_tmp = $smarty->fetch(get_template_path("templates/element_allof.tpl",TRUE,dirname(__FILE__))); + + $ret = $allof_tmp; + break ; + } + + + /******************* + * Any of + *******************/ + + case "anyof" : + { + $Contents = ""; + foreach($data as $key => $dat){ + if(($key === "Inverse") && ($key == "Inverse")){ + continue; + } + $Contents .= $this->get_as_html($dat, ($id +1),$key."-".$obj_id); + } + $smarty = get_smarty(); + $smarty->assign("ID" , $element_id); + $smarty->assign("DisplayAdd",TRUE); + $smarty->assign("DisplayDel",FALSE); + $cont_tmp = $smarty->fetch(get_template_path("templates/object_test_container.tpl",TRUE,dirname(__FILE__))); + $cont_tmp = preg_replace("/%%OBJECT_CONTENT%%/",_("Click here to add a new test"),$cont_tmp); + + $smarty->assign("Inverse",$Inverse); + $smarty->assign("Contents",$cont_tmp.$Contents); + $allof_tmp = $smarty->fetch(get_template_path("templates/element_anyof.tpl",TRUE,dirname(__FILE__))); + + $ret = $allof_tmp; + + break ; + } + default : + { + trigger_error(_("Unhandled switch type")); + } + } + } + + if(!isset($smarty)){ + $smarty =get_smarty(); + } + + $smarty->assign("ID",$element_id); + $smarty->assign("DisplayAdd",FALSE); + $smarty->assign("DisplayDel",TRUE); + $str = $smarty->fetch(get_template_path("templates/object_test_container.tpl",TRUE,dirname(__FILE__))); + $ret = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($ret,"\\"),$str); + return($ret); + } + + + /* Parse given token identified by $data[$id] + * and return the parsed tokens. + */ + function _parse($data,$id = 0) + { + $av_match_type = array(); + foreach($this->match_types as $name => $description){ + $av_match_type[] = $name; + } + $av_match_type[] = ":over"; + $av_match_type[] = ":under"; + + + + $av_methods= array("address","allof","anyof","exists","false","header","not","size","true","envelope"); + $type = $data[$id]['text']; + $tmp = array(); + + /* Is there an identifier named 'not' to inverse this filter ? */ + $Inverse = FALSE; + if($data[$id]['class'] == "identifier" && $data[$id]['text'] == "not"){ + $Inverse = TRUE; + $id ++; + $type = $data[$id]['text']; + } + + switch($type) + { + + /**************** + * Parse - Envelope / Header / Address + ****************/ + + case "envelope" : + case "header": + case "address" : + { + /* Address matches are struckture as follows : + [not] + address + [address-part: tag] all|localpart|domain|user|detail + [comparator: tag] i;octet i;ascii-casemap i;ascii-numeric + [match-type: tag] is|contains|matches|count|value + + + */ + + + $part = "(:all|:localpart|:domain)"; + $operator = "(:regex|:contains|:is|:matches|:count|:value)"; + $value_op = "(lt|le|eq|ge|gt|ne)"; + + $Address_Part = ""; + $Comparator = ""; + $Match_type = ""; + $Match_type_value = ""; + + $Key_List = array(); + $Value_List = array(); + + for($i = 0 ; $i < count($data) ; $i ++){ + + /* Get next node */ + $node = $data[$i]; + + /* Check address part definition */ + if($node['class'] == "tag" && preg_match("/".$part."/i",$node['text'])){ + $Address_Part = $node['text']; + } + + /* Check for match type */ + elseif($node['class'] == "tag" && preg_match("/".$operator."/i",$node['text'])){ + $Match_type = $node['text']; + + /* Get value operator */ + if(in_array($Match_type,array(":value",":count"))){ + $i ++; + $node = $data[$i]; + + if($node['class'] == "quoted-string" && preg_match("/".$value_op."/",$node['text'])){ + $Match_type_value = $node['text']; + } + } + } + + /* Check for a comparator */ + elseif($node['class'] == "tag" && preg_match("/comparator/",$node['text'])){ + $i ++; + $node = $data[$i]; + $Comparator = $node['text']; + } + + /* Check for Key_List */ + elseif(count(sieve_get_strings($data,$i))){ + $tmp2 = sieve_get_strings($data,$i); + $i = $tmp2['OFFSET']; + + if(!count($Key_List)){ + $Key_List = $tmp2['STRINGS']; + }else{ + $Value_List = $tmp2['STRINGS']; + } + } + + } + + + /* Add to Tree */ + $values = array( "Inverse" => $Inverse, + "Comparator" => $Comparator, + "Expert" => FALSE, + "Match_type" => $Match_type, + "Match_type_value"=> $Match_type_value, + "Key_List" => $Key_List, + "Value_List" => $Value_List) ; + if($type == "address"){ + $values["Address_Part"] = $Address_Part; + } + $tmp[$type] = $values; + $tmp[$type]['LastError'] = ""; + break; + } + + + /**************** + * Parse - Size + ****************/ + + case "size": + { + + $ops = "(:over|:under)"; + + $Match_type = ""; + + for($i = $id ; $i < count($data); $i++){ + + /* Get current node */ + $node = $data[$i]; + + /* Get tag (under / over) */ + if($node['class'] == "tag" && preg_match("/".$ops."/",$node['text'])){ + $Match_type = $node['text']; + } + + /* Get Value_List, the value that we want to match for */ + elseif(count(sieve_get_strings($data,$i))){ + $tmp2 = sieve_get_strings($data,$i); + $i = $tmp2['OFFSET']; + + $Value_List = $tmp2['STRINGS']; + } + } + + $tmp[$type]= array( "Inverse" => $Inverse, + "Match_type" => $Match_type, + "Value_List" => $Value_List); + $tmp[$type]['LastError'] = ""; + break; + } + + + /**************** + * Parse - True / False + ****************/ + + case "true": + { + $tmp['true'] = "true"; + $tmp['true']['LastError'] = ""; + break; + } + case "false": + { + $tmp['false'] = "false"; + $tmp['false']['LastError'] = ""; + break; + } + + + /**************** + * Parse - Exists + ****************/ + + case "exists": + { + + /* Skip first values, [if,not,exists] */ + $node = $data[$id]; + while(in_array($node['text'],array("if","not","exists"))){ + $id ++; + $node = $data[$id]; + } + + /* Get values */ + $tmp2 = sieve_get_strings($data,$id); + + + $tmp['exists'] = array('Inverse' => $Inverse, + 'Values' => $tmp2['STRINGS']); + $tmp[$type]['LastError'] = ""; + break; + } + + + /**************** + * Parse - Allof + ****************/ + + case "allof" : + { + /* Get parameter and recursivly call this method + * for each parameter + */ + $id ++; + $tmp2 = $this->get_parameter($data,$id); + + foreach($tmp2 as $parameter){ + $tmp['allof'][] = $this->_parse($parameter); + } + $tmp['allof']['Inverse'] = $Inverse; + break; + } + + + /**************** + * Parse - Anyof + ****************/ + + case "anyof" : + { + /* Get parameter and recursivly call this method + * for each parameter + */ + $id ++; + $tmp2 = $this->get_parameter($data,$id); + + foreach($tmp2 as $parameter){ + $tmp['anyof'][] = $this->_parse($parameter); + } + $tmp['anyof']['Inverse'] = $Inverse; + break; + } + default : $tmp[$id] = $type; + } + + return($tmp); + } + + + function get_parameter($data,$id) + { + $par = array(); + $open_brakets = 0; + $next = NULL; + $num = 0; + for($i = $id ; $i < count($data) ; $i++ ){ + if(in_array($data[$i]['class'],array("left-parant","left-bracket"))){ + $open_brakets ++; + } + if($data[$i]['class'] == "comma" && $open_brakets == 1){ + $num ++; + } + if(!in_array($data[$i]['class'],array("comma","left-parant","right-parant")) || $open_brakets >1 ){ + $par[$num][] = $data[$i]; + } + if(in_array($data[$i]['class'],array("right-parant","right-bracket"))){ + $open_brakets --; + } + } + return($par); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Keep.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Keep.inc new file mode 100644 index 000000000..3e1d58e1c --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Keep.inc @@ -0,0 +1,38 @@ +object_id = $object_id; + } + + function save_object() + { + } + + function check() + { + return(array()); + } + + function execute() + { + $smarty = get_smarty(); + $smarty->assign("ID", $this->object_id); + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + $object = $smarty->fetch(get_template_path("templates/element_keep.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/", addcslashes($object,"\\"),$object_container); + return($str); + } + function get_sieve_script_part() + { + return("keep;"); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Redirect.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Redirect.inc new file mode 100644 index 000000000..bbb2d4bf1 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Redirect.inc @@ -0,0 +1,69 @@ +object_id])){ + $rt = stripslashes($_POST['redirect_to_'.$this->object_id]); + + $rt = trim($rt); + $this->data = $rt; + } + } + + + function check() + { + $msgs = array(); + + if(!tests::is_email($this->data)){ + $msgs[] =_("Please specify a valid email address."); + } + + return($msgs); + } + + function sieve_redirect($data,$object_id) + { + $this->object_id = $object_id; + + if($data === NULL){ + $data = array('ELEMENTS' => array(array('class' => "quoted-string" ,"text" => _("Place a mail address here")))); + } + + for($i = 0 ; $i < count($data['ELEMENTS']) ; $i++){ + $tmp = sieve_get_strings($data['ELEMENTS'],$i); + $i = $i + $tmp['OFFSET']; + foreach($tmp['STRINGS'] as $str){ + $this->data .= $str; + } + } + } + + + function get_sieve_script_part() + { + return("redirect ".sieve_create_strings($this->data).";"); + } + + + function execute() + { + $values = htmlentities($this->data); + $smarty = get_smarty(); + $smarty->assign("ID", $this->object_id); + $smarty->assign("Destinations" , $values); + $smarty->assign("LastError" , $this->check()); + $smarty->assign("LastErrorCnt" , count($this->check())); + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + $object= $smarty->fetch(get_template_path("templates/element_redirect.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + return($str); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Reject.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Reject.inc new file mode 100644 index 000000000..3f0726011 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Reject.inc @@ -0,0 +1,76 @@ +object_id])){ + $msg = stripslashes($_POST['reject_message_'.$this->object_id]); + $this->data = $msg; + } + } + + function check() + { + $msgs = array(); + if(preg_match("/\"/",$this->data)){ + $msgs [] = _("Invalid character found, quotes are not allowed in a reject message."); + } + return($msgs); + } + + function sieve_reject($data,$object_id,$parent) + { + $this->object_id = $object_id; + $this->parent = $parent; + $this->parent->add_require("reject"); + + /* If the given data is emtpy + * (This is the case when we add new elements in the ui) + * Set a default text. + */ + if($data === NULL){ + $this->data = _("Your reject text here"); + }else{ + + for($i = 0 ; $i < count($data['ELEMENTS']) ; $i++){ + $tmp = sieve_get_strings($data['ELEMENTS'],$i); + $i = $i + $tmp['OFFSET']; + foreach($tmp['STRINGS'] as $str){ + $this->data .= $str; + } + } + } + } + + function get_sieve_script_part() + { + return("reject ".sieve_create_strings($this->data).";"); + } + + function execute() + { + /* check if this will be a + * - single string "" + * - or a multi line text: ... ; + */ + $Multiline = preg_match("/\n/",$this->data); + + $smarty = get_smarty(); + $smarty->assign("ID", $this->object_id); + $smarty->assign("Message",$this->data); + $smarty->assign("Multiline",$Multiline); + $smarty->assign("LastError" , $this->check()); + $smarty->assign("LastErrorCnt" , count($this->check())); + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + $object= $smarty->fetch(get_template_path("templates/element_reject.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + return($str); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Require.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Require.inc new file mode 100644 index 000000000..a9b689034 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Require.inc @@ -0,0 +1,109 @@ +parent = $parent; + $this->object_id = $object_id; + if($data !== NULL){ + + for($i = 0 ; $i < count($data['ELEMENTS']) ; $i++){ + $tmp = sieve_get_strings($data['ELEMENTS'],$i); + $i = $i + $tmp['OFFSET']; + foreach($tmp['STRINGS'] as $str){ + $this->data[]= $str; + } + } + } + } + + + /* Add a new require statement and ensure + * that it is not specified twice + */ + function Add_Require($str) + { + $current = array(); + foreach($this->data as $dat){ + $current[] = $dat; + } + if(!in_array($str,$current)){ + $this->data[] = $str; + } + $this->data = array_unique($this->data); + $this->skip_save_object = TRUE; + } + + function save_object() + { + if($this->skip_save_object){ + $this->skip_save_object = FALSE; + return; + } + + /* Get the values should check for, they are seperated by , */ + if(isset($_POST['require_'.$this->object_id])){ + $vls = stripslashes($_POST['require_'.$this->object_id]); + $tmp = array(); + + $tmp2 = split(",",$vls); + foreach($tmp2 as $val){ + + $val = trim($val); + + if(empty($val)) continue; + + $tmp[] = $val; + } + $this->data = $tmp; + } + } + + function check() + { + $msgs = array(); + + if(!count($this->data)){ + $msgs[] = _("Please specify at least one valid requirement."); + } + return($msgs); + } + + function get_sieve_script_part() + { + if(count($this->data)){ + $tmp = sieve_create_strings($this->data); + return("require ".$tmp.";\n"); + }else{ + return(""); + } + } + + function execute() + { + $Require = ""; + foreach($this->data as $key){ + $Require .= $key.", "; + } + $Require = preg_replace("/,$/","",trim($Require)); + + $smarty = get_smarty(); + $smarty->assign("Require",$Require); + $tmp = $this->check(); + $smarty->assign("LastError",$tmp); + $smarty->assign("LastErrorCnt",count($tmp)); + $smarty->assign("ID", $this->object_id); + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + $object= $smarty->fetch(get_template_path("templates/element_require.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + return($str); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Stop.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Stop.inc new file mode 100644 index 000000000..9acc72bd9 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Stop.inc @@ -0,0 +1,39 @@ +object_id = $object_id; + } + + function save_object() + { + } + + function check() + { + return(array()); + } + + function execute() + { + $smarty = get_smarty(); + $smarty->assign("ID", $this->object_id); + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + $object= $smarty->fetch(get_template_path("templates/element_stop.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + return($str); + } + + function get_sieve_script_part() + { + return("stop; \n"); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Vacation.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Vacation.inc new file mode 100644 index 000000000..1af166e9d --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveElement_Vacation.inc @@ -0,0 +1,179 @@ +parent = $parent; + $this->object_id = $object_id; + $this->parent->add_require("vacation"); + + /* Usage: vacation [":days" number] [":subject" string] + [":from" string] [":addresses" string-list] + [":mime"] [":handle" string] */ + + /* Not all attribute types are supported by the sieve class right now */ + $known_attrs = array(":days",":subject",":from",":mime",":handle"); + + /* skip if empty */ + if(($data === NULL) || !is_array($data)) return; + + /* Walk through elements */ + $p= count($data['ELEMENTS']); + for ($i= 0; $i < $p; $i++){ + + /* get current element */ + $node = $data['ELEMENTS'][$i]; + + /* Check if tag is in the specified list of attributes */ + if($node['class'] == "tag" && in_array($node['text'],$known_attrs)){ + + $var = preg_replace("/\:/","",$node['text']); + $this->$var = $data['ELEMENTS'][$i+1]['text']; + $i ++; + } + + /* Check for addresses */ + if($node['class'] == "tag" && $node['text'] == ":addresses") { + $this->addresses = array(); + $i ++; + + /* Multiple or single address given */ + if($data['ELEMENTS'][$i]['class'] == "left-bracket"){ + while($data['ELEMENTS'][$i]['class'] != "right-bracket" && ($i < count($data['ELEMENTS']))){ + $i ++; + if($data['ELEMENTS'][$i]['class'] == "quoted-string"){ + $this->addresses[] = preg_replace("/\"/i","",$data['ELEMENTS'][$i]['text']); + } + } + }else{ + $this->addresses[] = preg_replace("/\"/i","",$data['ELEMENTS'][$i]['text']); + } + } + + /* Add the vacation message */ + if(in_array($node['class'],array("quoted-string","multi-line"))){ + + $tmp = sieve_get_strings($data['ELEMENTS'],$i); + $strs= $tmp['STRINGS']; + + $data = ""; + foreach($strs as $str){ + $data .= $str; + } + $this->reason = $data; + } + } + } + + function get_sieve_script_part() + { + $str = "vacation "; + if($this->days){ + $str.= ":days ".$this->days; + } + + if(count($this->addresses)){ + $str .= ":addresses ".sieve_create_strings($this->addresses); + if($this->subject){ + $str.= ":subject ".sieve_create_strings($this->subject); + } + } + if($this->mime){ + $str.= ":mime ".sieve_create_strings($this->mime); + } + + /* Append reason and ensure that this will be + * handled as multiline text element + * by adding a "\n" new line + */ + $str .= "\n ".sieve_create_strings($this->reason."\n"); + return($str." ; \n"); + } + + function save_object() + { + /* Get release date */ + if(isset($_POST['vacation_release_'.$this->object_id])){ + $this->days = stripslashes($_POST['vacation_release_'.$this->object_id]); + } + + /* Check if we want to toggle the expert mode */ + if(isset($_POST['Toggle_Expert_'.$this->object_id])){ + $this->Expert = !$this->Expert; + } + + /* Get release date */ + if(isset($_POST['vacation_receiver_'.$this->object_id])){ + $vr = stripslashes ($_POST['vacation_receiver_'.$this->object_id]); + $tmp = array(); + $tmp2 = split(",",$vr); + foreach($tmp2 as $val){ + $ad = trim($val); + if(!empty($ad)){ + $tmp[] = $ad; + } + } + $this->addresses = $tmp; + } + + /* Get reason */ + if(isset($_POST['vacation_reason_'.$this->object_id])){ + $vr = stripslashes ($_POST['vacation_reason_'.$this->object_id]); + $this->reason = trim($vr); + } + } + + function check() + { + $msgs = array(); + $err = FALSE; + foreach($this->addresses as $addr){ + if(!tests::is_email($addr)){ + $err = true; + } + } + if($err){ + $msgs[] = _("Alternative sender address must be a valid email addresses."); + } + return($msgs); + } + + function execute() + { + $Addresses = ""; + foreach($this->addresses as $key){ + $Addresses .= $key.", "; + } + $Addresses = preg_replace("/,$/","",trim($Addresses)); + + $smarty = get_smarty(); + $smarty->assign("LastError",$this->check()); + $smarty->assign("LastErrorCnt",count($this->check())); + $smarty->assign("Reason",$this->reason); + $smarty->assign("Addresses",$Addresses); + $smarty->assign("Subject",$this->subject); + $smarty->assign("Days",$this->days); + $smarty->assign("ID",$this->object_id); + $smarty->assign("Expert",$this->Expert); + + $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); + $object= $smarty->fetch(get_template_path("templates/element_vacation.tpl",TRUE,dirname(__FILE__))); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); + return($str); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveManagement.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveManagement.inc new file mode 100644 index 000000000..c4c76b70b --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_sieveManagement.inc @@ -0,0 +1,1055 @@ + + + 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 sieve management class displays a list of sieve + * scripts for the given mail account. + * The account is identified by the parents uid attribute. + * + * $config The config object + * $dn The object edited + * $parent The parent object that provides the uid attribute + */ +class sieveManagement extends plugin +{ + var $parent = NULL; + var $scripts= array(); + var $uattrib = "uid"; + var $current_script = -1; + var $current_handler = NULL; + var $script_to_delete =-1; + var $sieve_handle = NULL; + var $Script_Error = ""; + var $Sieve_Error = ""; + var $create_script = FALSE; + + /* To add new elements we need to know + * Where to add the element -> add_new_id + * Whould we add above or below this id -> add_above_below + * What kind of element should we add -> add_element_type + */ + var $add_new_element = FALSE; + var $add_new_id = -1; + var $add_above_below = "below"; + var $add_element_type = "sieve_comment"; + + /* If this variable is TRUE, this indicates that we have the + * import dialog opened. + */ + var $Import_Script = FALSE; + + /* Initialize the class and load all sieve scripts + * try to parse them and display errors + */ + function sieveManagement(&$config,$dn,&$parent,$uattrib) + { + /* Check given parameter */ + if(!isset($parent->$uattrib)){ + trigger_error("Sieve Management implementation error. Parameter 4 (".$uattrib.") must be part of the given parent element (".get_class($parent).")."); + } + + $this->uattrib = $uattrib; + $this->parent = &$parent; + plugin::plugin($config,$dn); + + /* Get sieve, if this fail abort class initialization */ + if(!$this->sieve_handle = $this->get_sieve()){ + return; + } + + + /* Get all sieve scripts names */ + if($this->sieve_handle->sieve_listscripts()){ + if (is_array($this->sieve_handle->response)){ + foreach($this->sieve_handle->response as $key => $name){ + + $data = array(); + $data['NAME'] = $name; + + if($key == "ACTIVE" && $key === "ACTIVE"){ + $data['ACTIVE'] = TRUE; + }else{ + $data['ACTIVE'] = FALSE; + } + $this->scripts[] = $data; + } + } + } + + /* Get script contents */ + foreach($this->scripts as $key => $script){ + $p = new My_Parser($this); + $this->sieve_handle->sieve_getscript($script['NAME']); + + $script = ""; + foreach($this->sieve_handle->response as $line){ + $script.=$line; + } + + $this->scripts[$key]['IS_NEW'] = FALSE;; + $this->scripts[$key]['SCRIPT'] = $script; + $this->scripts[$key]['ORIG_SCRIPT'] = $script; + $this->scripts[$key]['MSG'] = ""; + $ret = $p->parse($script); + if(!$ret){ + $this->scripts[$key]['STATUS'] = FALSE; + $this->scripts[$key]['MODE'] = "Source"; + $this->scripts[$key]['MSG'] = _("Parse failed")."".$p->status_text.""; + }else{ + $this->scripts[$key]['STATUS'] = TRUE; + $this->scripts[$key]['MODE'] = "Structured"; + $this->scripts[$key]['MSG'] = _("Parse successful"); + } + $this->scripts[$key]['PARSER'] = $p; + $this->scripts[$key]['EDITED'] = FALSE; + } + $this->sieve_handle = $this->sieve_handle; + } + + + /* Return a sieve class handle, + * false if login fails + */ + function get_sieve() + { + + /* Connect to sieve class and try to get all available sieve scripts */ + if(isset($this->config->data['SERVERS']['IMAP'][$this->parent->gosaMailServer])){ + $cfg= $this->config->data['SERVERS']['IMAP'][$this->parent->gosaMailServer]; + $this->Sieve_Error = ""; + + $uattrib = $this->uattrib; + + /* Log into the mail server */ + $this->sieve_handle= new sieve( + $cfg["sieve_server"], + $cfg["sieve_port"], + $this->parent->$uattrib, + $cfg["password"], + $cfg["admin"], + $cfg["sieve_option"]); + + /* Try to login */ + if (!@$this->sieve_handle->sieve_login()){ + $this->Sieve_Error = $this->sieve_handle->error_raw; + return(FALSE); + } + return($this->sieve_handle); + }else{ + $this->Sieve_Error = sprintf(_("The specified mail server '%s' does not exist within the GOsa configuration."), + $this->parent->gosaMailServer); + return(FALSE); + } + } + + + /* Handle sieve list + */ + function execute() + { + /*************** + * Create a new Script + ***************/ + + /* Force opening the add script dialog */ + if(isset($_POST['create_new_script'])){ + $this->create_script = TRUE; + } + + /* Close add script dialog, without adding a new one */ + if(isset($_POST['create_script_cancel'])){ + $this->create_script = FALSE; + } + + /* Display create script dialog + * handle posts, display warnings if specified + * name is not useable. + * Create a new script with given name + */ + if($this->create_script){ + + /* Set initial name or used posted name if available */ + $name = ""; + if(isset($_POST['NewScriptName'])){ + $name = trim($_POST['NewScriptName']); + } + + /* Check given name */ + $err = false; + + /* Is given name in lower case characters ? */ + if(isset($_POST['create_script_save'])){ + if(!strlen($name)){ + $err =true; + msg_dialog::display(_("Error"), _("No script name specified!"), ERROR_DIALOG); + } + /* Is given name in lower case characters ? */ + if($name != strtolower($name)){ + $err =true; + msg_dialog::display(_("Error"), _("Please use only lowercase script names!"), ERROR_DIALOG); + } + + /* Only chars are allowed here */ + if(preg_match("/[^a-z]/i",$name)){ + $err =true; + msg_dialog::display(_("Error"), _("Please use only alphabetical characters in script names!"), ERROR_DIALOG); + } + + $tmp = $this->get_used_script_names(); + if(in_array_ics($name,$tmp)){ + $err =true; + msg_dialog::display(_("Error"), _("Script name already in use!"), ERROR_DIALOG); + } + } + + /* Create script if everything is ok */ + if($this->create_script && isset($_POST['create_script_save']) && !$err){ + + /* Close dialog */ + $this->create_script = FALSE; + + /* Script contents to use */ + $script = "/*New script */". + "stop;"; + + /* Create a new parser and initialize default values */ + $p = new My_Parser($this); + $ret = $p->parse($script); + $sc['SCRIPT'] = $script; + $sc['ORIG_SCRIPT'] = $script; + $sc['IS_NEW'] = TRUE; + $sc['MSG'] = ""; + if(!$ret){ + $sc['STATUS'] = FALSE; + $sc['MODE'] = "Source"; + $sc['MSG'] = _("Parse failed")."".$p->status_text.""; + }else{ + $sc['STATUS'] = TRUE; + $sc['MODE'] = "Structured"; + $sc['MSG'] = _("Parse successful"); + } + $sc['PARSER'] = $p; + $sc['EDITED'] = TRUE; + $sc['ACTIVE'] = FALSE; + $sc['NAME'] = $name; + + /* Add script */ + $this->scripts[$name] = $sc; + }else{ + + /* Display dialog to enter new script name */ + $smarty = get_smarty(); + $smarty->assign("NewScriptName",$name); + return($smarty->fetch(get_template_path("templates/create_script.tpl",TRUE,dirname(__FILE__)))); + } + } + + + /************* + * Handle several posts + *************/ + + $once = TRUE; + foreach($_POST as $name => $value){ + + /* Edit script requested */ + if(preg_match("/^editscript_/",$name) && $once && !$this->current_handler){ + $script = preg_replace("/^editscript_/","",$name); + $script = preg_replace("/_(x|y)/","",$script); + $once = FALSE; + + $this->current_script = $script; + $this->current_handler = $this->scripts[$script]['PARSER']; + $this->scripts[$script]['SCRIPT_BACKUP'] = $this->scripts[$script]['SCRIPT']; + } + + /* remove script requested */ + if($this->parent->acl_is_writeable("sieveManagement") && preg_match("/^delscript_/",$name) && $once && !$this->current_handler){ + $script = preg_replace("/^delscript_/","",$name); + $script = preg_replace("/_(x|y)/","",$script); + $once = FALSE; + $this->script_to_delete = $script; + } + + /* Activate script */ + if($this->parent->acl_is_writeable("sieveManagement") && preg_match("/^active_script_/",$name) && $once && !$this->current_handler){ + $script = preg_replace("/^active_script_/","",$name); + $script = preg_replace("/_(x|y)/","",$script); + $once = FALSE; + + /* We can only activate existing scripts */ + if(!$this->scripts[$script]['IS_NEW']){ + + /* Get sieve */ + if(!$this->sieve_handle = $this->get_sieve()){ + msg_dialog::display(_("SIEVE error"), sprintf(_("Cannot log into SIEVE server: %s"), '

'.to_string($this->Sieve_Error).''), ERROR_DIALOG); + } + + /* Try to activate the given script and update + * class script array. + */ + if(!$this->sieve_handle->sieve_setactivescript($this->scripts[$script]['NAME'])){ + msg_dialog::display(_("SIEVE error"), sprintf(_("Cannot retrieve SIEVE script: %s"), '

'.to_string($this->sieve_handler->error_raw).''), ERROR_DIALOG); + }else{ + foreach($this->scripts as $key => $data){ + if($key == $script){ + $this->scripts[$key]['ACTIVE'] = TRUE; + }else{ + $this->scripts[$key]['ACTIVE'] = FALSE; + } + } + } + } + } + } + + + /************* + * Remove script handling + *************/ + + /* Remove aborted */ + if(isset($_POST['delete_cancel'])){ + $this->script_to_delete = -1; + } + + /* Remove confirmed */ + if($this->parent->acl_is_writeable("sieveManagement") && isset($_POST['delete_script_confirm'])){ + + $script = $this->scripts[$this->script_to_delete]; + + /* Just remove from array if it is a new script */ + if($script['IS_NEW']){ + unset($this->scripts[$this->script_to_delete]); + }else{ + + /* Get sieve */ + if(!$this->sieve_handle = $this->get_sieve()){ + msg_dialog::display(_("SIEVE error"), sprintf(_("Cannot log into SIEVE server: %s"), '

'.to_string($this->Sieve_Error).''), ERROR_DIALOG); + } + + if(!$this->sieve_handle->sieve_deletescript($this->scripts[$this->script_to_delete]['NAME'])){ + msg_dialog::display(_("SIEVE error"), sprintf(_("Cannot remove SIEVE script: %s"), '

'.to_string($this->sieve_handler->error_raw).''), ERROR_DIALOG); + }else{ + unset($this->scripts[$this->script_to_delete]); + } + } + $this->script_to_delete = -1; + } + + /* Display confirm dialog */ + if($this->script_to_delete != -1){ + $smarty = get_smarty(); + $smarty->assign("Warning",msgPool::deleteInfo($this->scripts[$this->script_to_delete]['NAME'])); + return($smarty->fetch(get_template_path("templates/remove_script.tpl",TRUE,dirname(__FILE__)))); + } + + + /************** + * Save script changes + **************/ + + /* Abort saving */ + if(isset($_POST['cancel_sieve_changes'])){ + $tmp = $this->scripts[$this->current_script]['SCRIPT_BACKUP']; + $this->scripts[$this->current_script]['SCRIPT'] = $tmp; + $this->scripts[$this->current_script]['PARSER']->parse($tmp); + $this->current_handler = NULL; + } + + /* Save currently edited sieve script. */ + if($this->parent->acl_is_writeable("sieveManagement") && + isset($_POST['save_sieve_changes']) && + is_object($this->current_handler)){ + $chk = $this->current_handler->check(); + if(!count($chk)){ + + $sc = $this->scripts[$this->current_script]['SCRIPT']; + $p = new My_Parser($this); + if($p -> parse($sc)){ + + if($this->scripts[$this->current_script]['MODE'] == "Source-Only"){ + $this->scripts[$this->current_script]['MODE'] = "Source"; + } + + $this->scripts[$this->current_script]['PARSER'] = $p; + $this->scripts[$this->current_script]['EDITED'] = TRUE; + $this->scripts[$this->current_script]['STATUS'] = TRUE; + $this->scripts[$this->current_script]['MSG'] = _("Edited"); + $this->current_handler = NULL; + }else{ + msg_dialog::display(_("SIEVE error"), $p->status_text, ERROR_DIALOG); + } + }else{ + foreach($chk as $msgs){ + msg_dialog::display(_("SIEVE error"), $msgs, ERROR_DIALOG); + } + } + } + + + /************* + * Display edit dialog + *************/ + + /* Display edit dialog, depending on Mode display different uis + */ + if($this->current_handler){ + + if(isset($_POST['Import_Script'])){ + $this->Import_Script = TRUE; + } + + if(isset($_POST['Import_Script_Cancel'])){ + $this->Import_Script = FALSE; + } + + if(isset($_POST['Import_Script_Save']) && isset($_FILES['Script_To_Import'])){ + + $file = $_FILES['Script_To_Import']; + + if($file['size'] == 0){ + msg_dialog::display(_("Error"), _("Uploaded script is empty!"), ERROR_DIALOG); + }elseif(!file_exists($file['tmp_name'])){ + msg_dialog::display(_("Internal error"), sprintf(_("Cannot access temporary file '%s'!"), $file['tmp_name']), ERROR_DIALOG); + }elseif(!is_readable ($file['tmp_name'])){ + msg_dialog::display(_("SIEVE error"), sprintf(_("Cannot open temporary file '%s'!"), $file['tmp_name']), ERROR_DIALOG); + }else{ + + + + $contents = file_get_contents($file['tmp_name']); + + $this->scripts[$this->current_script]['SCRIPT'] = $contents; + if(!$this->current_handler->parse($contents)){ + $this->scripts[$this->current_script]['MODE'] = "Source"; + }else{ + $this->scripts[$this->current_script]['MODE'] = "Structured"; + } + $this->Script_Error = ""; + $this->Import_Script = FALSE; + } + } + + if($this->Import_Script){ + $smarty = get_smarty(); + $str = $smarty->fetch(get_template_path("templates/import_script.tpl",TRUE,dirname(__FILE__))); + return($str); + } + + + /* Create dump of current sieve script */ + if(isset($_POST['Save_Copy'])){ + + /* force download dialog */ + header("Content-type: application/tiff\n"); + if (preg_match('/MSIE 5.5/', $HTTP_USER_AGENT) || + preg_match('/MSIE 6.0/', $HTTP_USER_AGENT)) { + header('Content-Disposition: filename="dump.script"'); + } else { + header('Content-Disposition: attachment; filename="dump.script"'); + } + header("Content-transfer-encoding: binary\n"); + 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: no-cache"); + header("Pragma: no-cache"); + header("Cache-Control: post-check=0, pre-check=0"); + echo $this->scripts[$this->current_script]['SCRIPT']; + exit(); + } + + + /**** + * Add new element to ui + ****/ + + /* Abort add dialog */ + if(isset($_POST['select_new_element_type_cancel'])){ + $this->add_new_element = FALSE; + } + + /* Add a new element */ + if($this->add_new_element){ + + $element_types= array( + "sieve_keep" => _("Keep"), + "sieve_comment" => _("Comment"), + "sieve_fileinto" => _("File into"), + "sieve_keep" => _("Keep"), + "sieve_discard" => _("Discard"), + "sieve_redirect" => _("Redirect"), + "sieve_reject" => _("Reject"), + "sieve_require" => _("Require"), + "sieve_stop" => _("Stop"), + "sieve_vacation" => _("Vacation message"), + "sieve_if" => _("If")); + + + /* Element selected */ + if(isset($_POST['element_type']) && isset($element_types[$_POST['element_type']]) + || isset($_POST['element_type']) &&in_array($_POST['element_type'],array("sieve_else","sieve_elsif"))){ + $this->add_element_type = $_POST['element_type']; + } + + /* Create new element and add it to + * the selected position + */ + if(isset($_POST['select_new_element_type'])){ + if($this->add_new_element_to_current_script($this->add_element_type,$this->add_new_id,$this->add_above_below)){ + $this->add_new_element = FALSE; + }else{ + msg_dialog::display(_("SIEVE error"), _("Cannot add new element!") , ERROR_DIALOG); + } + } + } + + /* Only display select dialog if it is necessary */ + if($this->add_new_element){ + $smarty = get_smarty(); + + $add_else_elsif = FALSE; + + /* Check if we should add else/elsif to the select box + * or not. We can't add else twice!. + */ + if($this->add_above_below == "below"){ + + /* Get posistion of the current element + */ + foreach($this->current_handler->tree_->pap as $key => $obj){ + + if($obj->object_id == $this->add_new_id && in_array(get_class($obj),array("sieve_if","sieve_elsif"))){ + + /* Get block start/end */ + $end_id = $this->current_handler->tree_->get_block_end($key); + $else_found = FALSE; + $elsif_found = FALSE; + + /* Check if there is already an else in this block + */ + for($i = $key ; $i < $end_id ; $i ++){ + if(get_class($this->current_handler->tree_->pap[$i]) == "sieve_else"){ + $else_found = TRUE; + } + if(get_class($this->current_handler->tree_->pap[$i]) == "sieve_elsif"){ + $elsif_found = TRUE; + } + } + + /* Only allow adding 'else' if there is currently + * no 'else' statement. And don't allow adding + * 'else' before 'elseif' + */ + if(!$else_found && (!(get_class($obj) == "sieve_if" && $elsif_found))){ + $element_types['sieve_else'] = _("Else"); + } + $element_types['sieve_elsif'] = _("Else If"); + } + } + } + + $smarty->assign("element_types",$element_types ); + $smarty->assign("element_type",$this->add_element_type); + $str = $smarty->fetch(get_template_path("templates/add_element.tpl",TRUE,dirname(__FILE__))); + return($str); + } + + + + /**************** + * Handle test posts + ****************/ + + /* handle some special posts from test elements + */ + foreach($_POST as $name => $value){ + if(preg_match("/^Add_Test_Object_/",$name)) { + $name = preg_replace("/^Add_Test_Object_/","",$name); + $name = preg_replace("/_(x|y)$/","",$name); + + $test_types_to_add = array( + "address" =>_("Address"), + "header" =>_("Header"), + "envelope"=>_("Envelope"), + "size" =>_("Size"), + "exists" =>_("Exists"), + "allof" =>_("All of"), + "anyof" =>_("Any of"), + "true" =>_("True"), + "false" =>_("False")); + + $smarty = get_smarty(); + $smarty->assign("ID",$name); + $smarty->assign("test_types_to_add",$test_types_to_add); + $ret = $smarty->fetch(get_template_path("templates/select_test_type.tpl",TRUE,dirname(__FILE__))); + return($ret); + } + } + + $current = $this->scripts[$this->current_script]; + + /* Create html results */ + $smarty = get_smarty(); + $smarty->assign("Mode",$current['MODE']); + if($current['MODE'] == "Structured"){ + $smarty->assign("Contents",$this->current_handler->tree_->execute()); + }else{ + $smarty->assign("Contents",$current['SCRIPT']); + } + $smarty->assign("Script_Error",$this->Script_Error); + $ret = $smarty->fetch(get_template_path("templates/edit_frame_base.tpl",TRUE,dirname(__FILE__))); + return($ret); + } + + + /* Create list of available sieve scripts + */ + $List = new divSelectBox("sieveManagement"); + foreach($this->scripts as $key => $script){ + + $edited = $script['EDITED']; + $active = $script['ACTIVE']; + + $field1 = array("string" => " ", + "attach" => "style='width:20px;'"); + if($active){ + $field1 = array("string" => ""._("Active")."", + "attach" => "style='width:20px;'"); + } + $field2 = array("string" => $script['NAME']); + $field3 = array("string" => $script['MSG']); + $field4 = array("string" => _("Script length").": ".strlen($script['SCRIPT'])); + + if($this->parent->acl_is_writeable("sieveManagement")){ + $del = ""; + }else{ + $del = " "; + } + + if($active || $script['IS_NEW'] || !$this->parent->acl_is_writeable("sieveManagement")){ + $activate = " "; + }else{ + $activate = ""; + } + + $field6 = array("string" => $activate."".$del, + "attach" => "style='border-right:0px; width:70px;'"); + $List->AddEntry(array($field1,$field2,$field3,$field4,$field6)); + } + + $List->SetHeight(400); + + /* If the uattrib is empty (Attribute to use for authentification with sieve) + * Display a message that the connection can't be established. + */ + $uattrib = $this->uattrib; + $smarty = get_smarty(); + + if(!$this->get_sieve()){ + $smarty->assign("Sieve_Error",sprintf( + _("Can't log into SIEVE server. Server says '%s'."), + to_string($this->Sieve_Error))); + }else{ + $smarty->assign("Sieve_Error",""); + } + + $smarty->assign("uattrib_empty",empty($this->parent->$uattrib)); + $smarty->assign("List",$List->DrawList()); + return($smarty->fetch(get_template_path("templates/management.tpl",TRUE,dirname(__FILE__)))); + } + + + /* Add a new element to the currently opened script editor. + * The insert position is specified by + */ + function add_new_element_to_current_script($type,$id,$position) + { + /* Test given data */ + if(!in_array_ics($position,array("above","below"))){ + trigger_error("Can't add new element with \$position=".$position.". Only 'above','below' are allowed here."); + return(FALSE); + } + if(!is_numeric($id)){ + trigger_error("Can't add new element, given id is not numeric."); + return(FALSE); + } + if(!class_available($type)){ + if(!empty($type)){ + trigger_error("Can't add new element, given \$class=".$class." does not exists."); + } + return(FALSE); + } + if(!is_object($this->current_handler) || get_class($this->current_handler) != "My_Parser"){ + trigger_error("Can't add new element, there is no valid script editor opened."); + return(FALSE); + } + + /* These element types are allowed to be added here */ + $element_types= array( + "sieve_keep" => _("Keep"), + "sieve_comment" => _("Comment"), + "sieve_fileinto" => _("File into"), + "sieve_keep" => _("Keep"), + "sieve_discard" => _("Discard"), + "sieve_redirect" => _("Redirect"), + "sieve_reject" => _("Reject"), + "sieve_require" => _("Require"), + "sieve_stop" => _("Stop"), + "sieve_vacation" => _("Vacation message"), + "sieve_if" => _("If")); + + /* Check if we should add else/elsif to the select box + * or not. We can't add else twice!. + */ + + /* Get posistion of the current element + */ + foreach($this->current_handler->tree_->pap as $key => $obj){ + + if($obj->object_id == $id && in_array(get_class($obj),array("sieve_if","sieve_elsif"))){ + + /* Get block start/end */ + $end_id = $this->current_handler->tree_->get_block_end($key); + $else_found = FALSE; + $elsif_found = FALSE; + + /* Check if there is already an else in this block + */ + for($i = $key ; $i < $end_id ; $i ++){ + if(get_class($this->current_handler->tree_->pap[$i]) == "sieve_else"){ + $else_found = TRUE; + } + if(get_class($this->current_handler->tree_->pap[$i]) == "sieve_elsif"){ + $elsif_found = TRUE; + } + } + + if($this->add_above_below == "below"){ + + /* Only allow adding 'else' if there is currently + * no 'else' statement. And don't allow adding + * 'else' before 'elseif' + */ + if(!$else_found && (!(get_class($obj) == "sieve_if" && $elsif_found))){ + $element_types['sieve_else'] = _("Else"); + } + $element_types['sieve_elsif'] = _("Else If"); + }else{ + + /* Allow adding elsif above elsif */ + if(in_array(get_class($obj),array("sieve_elsif"))){ + $element_types['sieve_elsif'] = _("Else If"); + } + } + } + } + + if(!isset($element_types[$type])){ + msg_dialog::display(_("SIEVE error"), _("Cannot insert element at the requested position!") , ERROR_DIALOG); + return; + } + + + /* Create elements we should add + * -Some element require also surrounding block elements + */ + $parent = $this->current_handler->tree_; + if($this->add_element_type == "sieve_if"){ + $ele[] = new $this->add_element_type(NULL, preg_replace("/[^0-9]/","",microtime()),$parent); + $ele[] = new sieve_block_start(NULL,preg_replace("/[^0-9]/","",microtime()),$parent); + $ele[] = new sieve_block_end(NULL,preg_replace("/[^0-9]/","",microtime()),$parent); + }elseif($this->add_element_type == "sieve_else"){ + $ele[] = new sieve_block_end(NULL,preg_replace("/[^0-9]/","",microtime()),$parent); + $ele[] = new $this->add_element_type(NULL, preg_replace("/[^0-9]/","",microtime()),$parent); + $ele[] = new sieve_block_start(NULL,preg_replace("/[^0-9]/","",microtime()),$parent); + }elseif($this->add_element_type == "sieve_elsif"){ + $ele[] = new sieve_block_end(NULL,preg_replace("/[^0-9]/","",microtime()),$parent); + $ele[] = new $this->add_element_type(NULL, preg_replace("/[^0-9]/","",microtime()),$parent); + $ele[] = new sieve_block_start(NULL,preg_replace("/[^0-9]/","",microtime()),$parent); + }elseif($this->add_element_type == "sieve_vacation"){ + + /* Automatically add addresses to sieve alternate addresses */ + $data = NULL; + $tmp = new $this->add_element_type($data, preg_replace("/[^0-9]/","",microtime()),$parent); + if(isset($this->parent->gosaMailAlternateAddress)){ + $tmp->addresses = $this->parent->gosaMailAlternateAddress; + } + $ele[] = $tmp ; + }else{ + $ele[] = new $this->add_element_type(NULL, preg_replace("/[^0-9]/","",microtime()),$parent); + } + + /* Get index of the element identified by object_id == $id; + */ + $index = -1; + $data = $this->current_handler->tree_->pap; + foreach($data as $key => $obj){ + if($obj->object_id == $id && $index==-1){ + $index = $key; + } + } + + /* Tell to user that we couldn't find the given object + * so we can't add an element. + */ + if($index == -1 ){ + trigger_error("Can't add new element, specified \$id=".$id." could not be found in object tree."); + return(FALSE); + } + + /* We have found the specified object_id + * and want to detect the next free position + * to insert the new element. + */ + if($position == "above"){ + $direction ="up"; + $next_free = $this->current_handler->tree_->_get_next_free_move_slot($index,$direction,TRUE); + }else{ + $direction = "down"; + $next_free = $this->current_handler->tree_->_get_next_free_move_slot($index,$direction,TRUE); + } + /* This is extremly necessary, cause some objects + * updates the tree objects ... Somehow i should change this ... + */ + $data = $this->current_handler->tree_->pap; + $start = $end = array(); + + if($position == "above"){ + $start = array_slice($data,0,$next_free); + $end = array_slice($data,$next_free); + }else{ + $start = array_slice($data,0,$next_free+1); + $end = array_slice($data,$next_free+1); + } + + $new = array(); + foreach($start as $obj){ + $new[] = $obj; + } + foreach($ele as $el){ + $new[] = $el; + } + foreach($end as $obj){ + $new[] = $obj; + } + $data= $new; + $this->current_handler->tree_->pap = $data; + return(TRUE); + } + + + + function save_object() + { + if($this->current_handler){ + + if(isset($_GET['Add_Object_Top_ID'])){ + $this->add_new_element = TRUE; + $this->add_new_id = $_GET['Add_Object_Top_ID']; + $this->add_above_below = "above"; + } + + if(isset($_GET['Add_Object_Bottom_ID'])){ + $this->add_new_element = TRUE; + $this->add_new_id = $_GET['Add_Object_Bottom_ID']; + $this->add_above_below = "below"; + } + + if(isset($_GET['Remove_Object_ID'])){ + $found_id = -1; + foreach($this->current_handler->tree_->pap as $key => $element){ + if($element->object_id == $_GET['Remove_Object_ID']){ + $found_id = $key; + } + } + if($found_id != -1 ){ + $this->current_handler->tree_->remove_object($found_id); + } + } + + if(isset($_GET['Move_Up_Object_ID'])){ + $found_id = -1; + foreach($this->current_handler->tree_->pap as $key => $element){ + if($element->object_id == $_GET['Move_Up_Object_ID']){ + $found_id = $key; + } + } + if($found_id != -1 ){ + $this->current_handler->tree_->move_up_down($found_id,"up"); + } + } + + if(isset($_GET['Move_Down_Object_ID'])){ + $found_id = -1; + foreach($this->current_handler->tree_->pap as $key => $element){ + if($element->object_id == $_GET['Move_Down_Object_ID']){ + $found_id = $key; + } + } + if($found_id != -1 ){ + $this->current_handler->tree_->move_up_down($found_id,"down"); + } + } + + + /* Check if there is an add object requested + */ + $data = $this->current_handler->tree_->pap; + $once = TRUE; + foreach($_POST as $name => $value){ + foreach($data as $key => $obj){ + if(isset($obj->object_id) && preg_match("/^Add_Object_Top_".$obj->object_id."_/",$name) && $once){ + $once = FALSE; + $this->add_element_type = $_POST['element_type_'.$obj->object_id]; + $this->add_new_element = FALSE; + $this->add_new_id = $obj->object_id; + $this->add_above_below = "above"; + $this->add_new_element_to_current_script($this->add_element_type,$this->add_new_id,$this->add_above_below); + } + if(isset($obj->object_id) && preg_match("/^Add_Object_Bottom_".$obj->object_id."_/",$name) && $once){ + $once = FALSE; + $this->add_element_type = $_POST['element_type_'.$obj->object_id]; + $this->add_new_element = FALSE; + $this->add_new_id = $obj->object_id; + $this->add_above_below = "below"; + $this->add_new_element_to_current_script($this->add_element_type,$this->add_new_id,$this->add_above_below); + } + + if(isset($obj->object_id) && preg_match("/^Remove_Object_".$obj->object_id."_/",$name) && $once){ + $once = FALSE; + $this->current_handler->tree_->remove_object($key); + } + if(isset($obj->object_id) && preg_match("/^Move_Up_Object_".$obj->object_id."_/",$name) && $once){ + $this->current_handler->tree_->move_up_down($key,"up"); + $once = FALSE; + } + if(isset($obj->object_id) && preg_match("/^Move_Down_Object_".$obj->object_id."_/",$name) && $once){ + $this->current_handler->tree_->move_up_down($key,"down"); + $once = FALSE; + } + } + } + + /* Skip Mode changes and Parse tests + * if we are currently in a subdialog + */ + + $this->current_handler->save_object(); + $Mode = $this->scripts[$this->current_script]['MODE']; + $skip_mode_change = false; + if(in_array($Mode,array("Source-Only","Source"))){ + if(isset($_POST['script_contents'])){ + $sc = stripslashes($_POST['script_contents']); + $this->scripts[$this->current_script]['SCRIPT'] = $sc; + $p = new My_Parser($this); + if($p -> parse($sc)){ + $this->Script_Error = ""; + } else { + $this->Script_Error = $p->status_text; + $skip_mode_change = TRUE; + } + } + } + if(in_array($Mode,array("Structured"))){ + $sc = $this->current_handler->get_sieve_script(); + $this->scripts[$this->current_script]['SCRIPT'] = $sc; + $p = new My_Parser($this); + if($p -> parse($sc)){ + $this->Script_Error = ""; + } else { + $this->Script_Error = $p->status_text; + $skip_mode_change = TRUE; + } + } + if(!$skip_mode_change){ + if($this->scripts[$this->current_script]['MODE'] != "Source-Only"){ + $old_mode = $this->scripts[$this->current_script]['MODE']; + if(isset($_POST['View_Source'])){ + $this->scripts[$this->current_script]['MODE'] = "Source"; + } + if(isset($_POST['View_Structured'])){ + $this->scripts[$this->current_script]['MODE'] = "Structured"; + } + $new_mode = $this->scripts[$this->current_script]['MODE']; + + if($old_mode != $new_mode){ + + $sc = $this->scripts[$this->current_script]['SCRIPT']; + $p = new My_Parser($this); + + if($p -> parse($sc)){ + $this->current_handler->parse($sc); + $this->Script_Error = ""; + } else { + $this->Script_Error = $p->status_text; + } + } + } + } + } + } + + + function get_used_script_names() + { + $ret = array(); + foreach($this->scripts as $script){ + $ret[] = $script['NAME']; + } + return($ret); + } + + + + function save() + { + /* Get sieve */ + if(!$this->sieve_handle = $this->get_sieve()){ + msg_dialog::display(_("SIEVE error"), sprintf(_("Cannot log into SIEVE server: %s"), '

'.to_string($this->Sieve_Error).''), ERROR_DIALOG); + return; + } + + $everything_went_fine = TRUE; + + foreach($this->scripts as $key => $script){ + if($script['EDITED']){ + $data = $this->scripts[$key]['SCRIPT']; + if(!$this->sieve_handle->sieve_sendscript($script['NAME'], addcslashes ($data,"\\"))){ + new log("modify","users/mailAccount".get_class($this),$script['NAME'],"Failed to save sieve script named '".$script['NAME']."': ".to_string($this->sieve_handle->error_raw)); + + $everything_went_fine = FALSE; + msg_dialog::display(_("SIEVE error"), sprintf(_("Cannot store SIEVE script: %s"), '

'.to_string($this->sieve_handle->error_raw).''), ERROR_DIALOG); + $this->scripts[$key]['MSG'] = "". + _("Failed to save sieve script").": ". + to_string($this->sieve_handle->error_raw). + ""; + } + } + } + return($everything_went_fine); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/class_tree.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/class_tree.inc new file mode 100644 index 000000000..d4bdfc764 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/class_tree.inc @@ -0,0 +1,153 @@ +_construct($root); + } + + function _construct(&$root) + { + $this->childs_ = array(); + $this->parents_ = array(); + $this->nodes_ = array(); + $this->maxId_ = 0; + + $this->parents_[0] = null; + $this->nodes_[0] = $root; + } + + function addChild(&$child) + { + return $this->addChildTo($this->maxId_, $child); + } + + function addChildTo($parent_id, &$child) + { + if (!is_int($parent_id) || + !isset($this->nodes_[$parent_id])) + { + return null; + } + + if (!isset($this->childs_[$parent_id])) + { + $this->childs_[$parent_id] = array(); + } + + $child_id = ++$this->maxId_; + $this->nodes_[$child_id] = $child; + $this->parents_[$child_id] = $parent_id; + array_push($this->childs_[$parent_id], $child_id); + + return $child_id; + } + + function getRoot() + { + if (!isset($this->nodes_[0])) + { + return null; + } + + return 0; + } + + function getParent($node_id) + { + if (!is_int($node_id) || + !isset($this->nodes_[$node_id])) + { + return null; + } + + return $this->parents_[$node_id]; + } + + function getChilds($node_id) + { + if (!is_int($node_id) || + !isset($this->nodes_[$node_id])) + { + return null; + } + + if (!isset($this->childs_[$node_id])) + { + return array(); + } + + return $this->childs_[$node_id]; + } + + function getNode($node_id) + { + if (!is_int($node_id) || + !isset($this->nodes_[$node_id])) + { + return null; + } + + return $this->nodes_[$node_id]; + } + + function setDumpFunc($callback) + { + if ($callback === NULL || is_callable($callback)) + { + $this->dumpFn_ = $callback; + } + } + + function dump() + { + $this->dump_ = "tree\n"; + $this->doDump_(0, '', true); + return $this->dump_; + } + + function doDump_($node_id, $prefix, $last) + { + if ($last) + { + $infix = '`--- '; + $child_prefix = $prefix . ' '; + } + else + { + $infix = '|--- '; + $child_prefix = $prefix . '| '; + } + + $node = $this->nodes_[$node_id]; + if ($this->dumpFn_ !== NULL) + { + $this->dump_ .= $prefix . $infix . call_user_func($this->dumpFn_, $node) . "\n"; + } + else + { + $this->dump_ .= "$prefix$infix$node\n"; + } + + if (isset($this->childs_[$node_id])) + { + $childs = $this->childs_[$node_id]; + $last_child = count($childs); + + for ($i=1; $i <= $last_child; ++$i) + { + $this->doDump_($childs[$i-1], $child_prefix, ($i == $last_child ? true : false)); + } + } + } +} + +?> diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/libsieve.inc b/trunk/gosa-plugins/mail/personal/mail/sieve/libsieve.inc new file mode 100644 index 000000000..3b94e4975 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/libsieve.inc @@ -0,0 +1,8 @@ + diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/add_element.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/add_element.tpl new file mode 100644 index 000000000..d98c52986 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/add_element.tpl @@ -0,0 +1,14 @@ +

{t}Add a new element{/t}

+{t}Please select the type of element you want to add{/t} +
+ + +

 

+
+
+ +   + +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/block_indent_start.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/block_indent_start.tpl new file mode 100644 index 000000000..482f637d7 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/block_indent_start.tpl @@ -0,0 +1,12 @@ + + + + + + + +
+   + + + +
 
+
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/block_indent_stop.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/block_indent_stop.tpl new file mode 100644 index 000000000..857aa6893 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/block_indent_stop.tpl @@ -0,0 +1,5 @@ +
+
 
+
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/create_script.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/create_script.tpl new file mode 100644 index 000000000..4d66ca061 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/create_script.tpl @@ -0,0 +1,21 @@ +

Create a new sieve script

+{t}Please enter the name for the new script below. Script names must consist of lower case characters only.{/t} + +
+
+

 

+
+{t}Script name{/t} +
+
+ +
+ +   + +
+ diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/edit_frame_base.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/edit_frame_base.tpl new file mode 100644 index 000000000..0984fc4e5 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/edit_frame_base.tpl @@ -0,0 +1,42 @@ + + + + + + + + +
+ + + + + {if $Mode != "Source-Only"} + + {if $Mode == "Source"} + + {else} + + {/if} + {/if} +
+ + {if $Script_Error != ""} +
+ {$Script_Error} +
+ {/if} + + + {if $Mode == "Structured"} + {$Contents} + {else} + + {/if} + +
+
+ +   + +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_address.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_address.tpl new file mode 100644 index 000000000..ea6580f35 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_address.tpl @@ -0,0 +1,142 @@ +{if $Expert} + {if $LastError != ""} + + + + +
+ {$LastError} +
+ {/if} + + + + + + +
+ {t}Address{/t} + + +
+ + + + + + + + + + + + + + + + + + {if $match_type == ":count" || $match_type == ":value"} + + + + + {/if} + + + +
+ {t}Match type{/t} + + + +
+ {t}Invert test{/t}? + + {if $Inverse} + + {else} + + {/if} +
+ {t}Part of address that should be used{/t} + + +
+ {t}Comparator{/t} + + +
+ {t}Operator{/t} + + +
 
+ + + + + +
+ {t}Address fields to include{/t}
+ +
+ {t}Values to match for{/t}
+ +
+ {else} + + {if $LastError != ""} + + + + +
+ {$LastError} +
+ {/if} + + + + {if $match_type == ":count" || $match_type == ":value"} + + + + + +
+ {else} + + {/if} + {t}Address{/t} + + {if $Inverse} + + {else} + + {/if} +   + + + {if $match_type == ":count" || $match_type == ":value"} + + {/if} + + + + + + +
+ {/if} diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_allof.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_allof.tpl new file mode 100644 index 000000000..024c011e7 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_allof.tpl @@ -0,0 +1,16 @@ + + + + + +
+ {if $Inverse} + + {else} + + {/if} +
+ {t}All of{/t} +
+ {$Contents} +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_anyof.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_anyof.tpl new file mode 100644 index 000000000..f6e1b2203 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_anyof.tpl @@ -0,0 +1,16 @@ + + + + + +
+ {if $Inverse} + + {else} + + {/if} +
+ {t}Any of{/t} +
+ {$Contents} +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_block_end.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_block_end.tpl new file mode 100644 index 000000000..41c3a2c0b --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_block_end.tpl @@ -0,0 +1,5 @@ + diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_block_start.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_block_start.tpl new file mode 100644 index 000000000..526162453 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_block_start.tpl @@ -0,0 +1,12 @@ + diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_boolean.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_boolean.tpl new file mode 100644 index 000000000..44f5f7b52 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_boolean.tpl @@ -0,0 +1,12 @@ + + + + +
+ {t}Bool{/t} + + +
+
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_comment.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_comment.tpl new file mode 100644 index 000000000..ba6ac0438 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_comment.tpl @@ -0,0 +1,23 @@ + + + + + + + + +
+ {t}Comment{/t} + + {if $Small} + + {else} + + {/if} +
+ {if $Small} + {$Comment} + {else} + + {/if} +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_discard.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_discard.tpl new file mode 100644 index 000000000..e26f77a3a --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_discard.tpl @@ -0,0 +1,12 @@ + + + + + + + +
+ {t}Discard{/t} +
+ {t}Discard message{/t} +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_else.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_else.tpl new file mode 100644 index 000000000..739fd0550 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_else.tpl @@ -0,0 +1,7 @@ + + + + +
+ {t}Else{/t} +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_elsif.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_elsif.tpl new file mode 100644 index 000000000..4da7c47fc --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_elsif.tpl @@ -0,0 +1,8 @@ + + + + +
+ {t}Else If{/t} + {$Contents} +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_envelope.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_envelope.tpl new file mode 100644 index 000000000..f0bcb67f0 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_envelope.tpl @@ -0,0 +1,134 @@ + + {if $Expert} + {if $LastError != ""} + + + + +
+ {$LastError} +
+ {/if} + + + + + + +
+ {t}Envelope{/t} + + +
+ + + + + + + + + + + + + + {if $match_type == ":count" || $match_type == ":value"} + + + + + {/if} + + + +
+ {t}Match type{/t} + + + +
+ {t}Invert test{/t}? + + {if $Inverse} + + {else} + + {/if} +
+ {t}Comparator{/t} + + +
+ {t}Operator{/t} + + +
 
+ + + + + +
+ {t}Address fields to include{/t}
+ +
+ {t}Values to match for{/t}
+ +
+ + {else} + {if $LastError != ""} + + + + +
+ {$LastError} +
+ {/if} + + + {if $match_type == ":count" || $match_type == ":value"} + + + + + +
+ {else} + + {/if} + + + {t}Envelope{/t} + + {if $Inverse} + + {else} + + {/if} +   + + + {if $match_type == ":count" || $match_type == ":value"} + + {/if} + + + + + + +
+ {/if} diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_exists.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_exists.tpl new file mode 100644 index 000000000..29882d3f4 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_exists.tpl @@ -0,0 +1,20 @@ + + + + + +
+ {if $LastError != ""} + {$LastError} +
+ {/if} + {t}Exists{/t} + {if $Inverse} + + {else} + + {/if} + +
+ +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_fileinto.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_fileinto.tpl new file mode 100644 index 000000000..c6ae998e0 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_fileinto.tpl @@ -0,0 +1,30 @@ + + + + + + + + + + +
+ {t}Move mail into folder{/t} + + {if $User_Mode} + + {else} + + {/if} +
+ + {t}Folder{/t} + {if $User_Mode} + + {else} + + {/if} + +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_header.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_header.tpl new file mode 100644 index 000000000..8dcd30989 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_header.tpl @@ -0,0 +1,136 @@ + {if $Expert} + {if $LastError != ""} + + + + +
+ {$LastError} +
+ {/if} + + + + + + + +
+ {t}Header{/t} + + +
+ + + + + + + + + + + + + + {if $match_type == ":count" || $match_type == ":value"} + + + + + {/if} + + + + +
+ {t}Match type{/t} + + + +
+ {t}Invert test{/t}? + + {if $Inverse} + + {else} + + {/if} +
+ {t}Comparator{/t} + + +
+ {t}operator{/t} + + +
 
+ + + + + +
+ {t}Address fields to include{/t}
+ +
+ {t}Values to match for{/t}
+ +
+ + {else} + {if $LastError != ""} + + + + +
+ {$LastError} +
+ {/if} + + + + + {if $match_type == ":count" || $match_type == ":value"} + + + + + + +
+ {else} + + {/if} + {t}Header{/t} + + {if $Inverse} + + {else} + + {/if} +   + + + {if $match_type == ":count" || $match_type == ":value"} + + {/if} + + + + + + +
+ {/if} diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_if.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_if.tpl new file mode 100644 index 000000000..98f9b4a5d --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_if.tpl @@ -0,0 +1,8 @@ + + + + +
+ {t}Condition{/t} + {$Contents} +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_keep.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_keep.tpl new file mode 100644 index 000000000..f3c5d8608 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_keep.tpl @@ -0,0 +1,12 @@ + + + + + + + +
+ {t}Keep{/t} +
+ {t}Keep message{/t} +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_redirect.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_redirect.tpl new file mode 100644 index 000000000..778ff1a50 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_redirect.tpl @@ -0,0 +1,22 @@ + + {foreach from=$LastError item=val key=key} + + + + + {/foreach} + + + + + + +
+
{$LastError[$key]}
+ +
+ {t}Redirect{/t} +
+ {t}Redirect mail to following recipients{/t}
+ +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_reject.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_reject.tpl new file mode 100644 index 000000000..3b4d84d6a --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_reject.tpl @@ -0,0 +1,28 @@ + + +{foreach from=$LastError item=val key=key} + + + + + {/foreach} + + + + + + +
+
{$LastError[$key]}
+ +
+ {t}Reject mail{/t} +   + {if $Multiline} + + {else} + + {/if} +
+ +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_require.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_require.tpl new file mode 100644 index 000000000..3a3f261f3 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_require.tpl @@ -0,0 +1,21 @@ + + {foreach from=$LastError item=val key=key} + + + + + {/foreach} + + + + + + +
+
{$LastError[$key]}
+
+ {t}Require{/t} +
+ +
+ diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_size.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_size.tpl new file mode 100644 index 000000000..a8e234693 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_size.tpl @@ -0,0 +1,25 @@ + + + + +
+ {t}Size{/t} + {if $LastError != ""} + {$LastError} +
+ {/if} + + {if $Inverse} + + {else} + + {/if} + + + + +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_stop.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_stop.tpl new file mode 100644 index 000000000..975f10bda --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_stop.tpl @@ -0,0 +1,12 @@ + + + + + + + +
+ {t}Stop{/t}
+
+ {t}Stop execution here{/t} +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_vacation.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_vacation.tpl new file mode 100644 index 000000000..174148790 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/element_vacation.tpl @@ -0,0 +1,56 @@ + + + {foreach from=$LastError item=val key=key} + + + + {/foreach} + {if $Expert} + + + + + + + + + + + + + + + + {else} + + + + + + + + {/if} +
+
{$LastError[$key]}
+
+ {t}Vacation Message{/t} + + +
+ {t}Release interval{/t}  + + +  {t}days{/t} +
+ {t}Alternative sender addresses{/t} + + +
+ +
+ {t}Vacation message{/t} + + +
+ +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/import_script.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/import_script.tpl new file mode 100644 index 000000000..ea80adefb --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/import_script.tpl @@ -0,0 +1,15 @@ +

{t}Import sieve script{/t}

+{t}Please select the sieve script you want to import. Use the import button to import the script or the cancel button to abort.{/t} +
+
+{t}Script to import{/t}  + +
+
+

 

+
+
+ +   + +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/management.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/management.tpl new file mode 100644 index 000000000..c2628468c --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/management.tpl @@ -0,0 +1,27 @@ +

{t}List of sieve scripts{/t}

+ + {$List} + +

+ +   + +

diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_container.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_container.tpl new file mode 100644 index 000000000..537a66a84 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_container.tpl @@ -0,0 +1,54 @@ + + + + + + + + + +
+   + + + {t}Move up{/t} +     + + {t}Move down{/t} +     + + {t}Remove element{/t} +     + + + + + + + +
+ + %%OBJECT_CONTENT%% +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_container_clear.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_container_clear.tpl new file mode 100644 index 000000000..b9d4de490 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_container_clear.tpl @@ -0,0 +1,28 @@ + + + + + + + + + +
+   + + + {t}Move up{/t} + + + {t}Move down{/t} + + + {t}Remove element{/t} + +
+ + %%OBJECT_CONTENT%% +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_test_container.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_test_container.tpl new file mode 100644 index 000000000..01ef58138 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/object_test_container.tpl @@ -0,0 +1,17 @@ + + + + + +
+ {if $DisplayAdd} + + {/if} + {if $DisplayDel} + + {/if} + + %%OBJECT_CONTENT%% +
diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/remove_script.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/remove_script.tpl new file mode 100644 index 000000000..7dbca7ca8 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/remove_script.tpl @@ -0,0 +1,17 @@ +
+ {t}Warning{/t} +
+

+ {$Warning}
+ {t}Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+ +

+ {t}Best thing to do before performing this action would be to save the current script in a file. So - if you've done so - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ +   + +

diff --git a/trunk/gosa-plugins/mail/personal/mail/sieve/templates/select_test_type.tpl b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/select_test_type.tpl new file mode 100644 index 000000000..1c21d1f73 --- /dev/null +++ b/trunk/gosa-plugins/mail/personal/mail/sieve/templates/select_test_type.tpl @@ -0,0 +1,14 @@ +

{t}Select the type of test you want to add{/t}

+ +{t}Available test types{/t} :  + + +

 

+
+
+ +   + +
diff --git a/trunk/gosa-plugins/mail/plugin.dsc b/trunk/gosa-plugins/mail/plugin.dsc new file mode 100644 index 000000000..278c1d153 --- /dev/null +++ b/trunk/gosa-plugins/mail/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = mail +description = "Mail management base plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = systems diff --git a/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_goKrbServer.inc b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_goKrbServer.inc new file mode 100644 index 000000000..70ae2244f --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_goKrbServer.inc @@ -0,0 +1,400 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* This plugin only writes its objectClass */ + var $objectclasses = array("goKrbServer"); + var $attributes = array("goKrbRealm"); + var $StatusFlag = "goKrbServerStatus"; + + /* This class can't be assigned twice so it conflicts with itsself */ + var $conflicts = array("goKrbServer"); + + var $DisplayName = ""; + var $dn = NULL; + var $goKrbServerStatus= ""; + var $cn = ""; + var $goKrbRealm = ""; + var $view_logged = FALSE; + + var $policies = array(); + var $id = -1; + var $macAddress = "" ; + + + /*! \brief Initializes the kerberos service + @param Object GOsa configuration object. + @param String The object dn we are currently editing. + @param Object The parent object. + */ + public function goKrbServer(&$config,$dn,$parent) + { + goService::goService($config,$dn); + $this->DisplayName = _("Kerberos service"); + $this->parent = $parent; + + /* Detect macAddress of this device + */ + $this->macAddress = ""; + if(isset($this->parent->parent->netConfigDNS->macAddress)){ + $this->macAddress = &$this->parent->parent->netConfigDNS->macAddress; + } + + /* Get configured policies + */ + if(!empty($this->macAddress) && $this->is_account){ + $o = new gosaSupportDaemon(); + $tmp = $o->krb5_list_policies($this->macAddress); + if($o->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + }else{ + $this->policies = array(); + foreach($tmp as $policy){ + $this->policies[] = array("NAME" => $policy,"STATUS" => "LOADED","DATA" => array()); + } + } + } + } + + + /*! \brief Create HTML output + @return String HMTL output. + */ + public function execute() + { + $smarty = get_smarty(); + $smarty->assign("MIT_KRB", class_available("passwordMethodMIT")); + + if(!$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /******* + Display sub dialogs + *******/ + + /* CANCEL Policy dialog + */ + if(isset($_POST['cancel_policy'])){ + $this->dialog = NULL; + } + + /* SAVE Policy dialog + */ + if($this->dialog instanceof krb5_policy && isset($_POST['save_policy'])){ + $this->dialog->save_object(); + $msgs = $this->dialog->check(); + if(count($msgs)){ + msg_dialog::displayChecks($msgs); + }else{ + $this->AddPolicy($this->id,$this->dialog->save()); + $this->dialog = NULL; + } + } + + /* DISPLAY policy dialog + */ + if($this->dialog instanceof krb5_policy){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + /******* + Create HTML output for this plugin + *******/ + + $tmp = $this->plinfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + $divlist = new divSelectBox("Kerberos Policies"); + $action = ""; + $action .= ""; + foreach($this->policies as $key => $policy){ + if($policy['STATUS'] == "REMOVED") continue; + + $actions = preg_replace("/%id/",$key,$action); + $field1 = array("string" => $policy['NAME']); + $field3 = array("string" => $actions, + "attach"=>"style='width:40px; text-align:right; border:0px;'"); + + $divlist->AddEntry(array($field1,$field3)); + } + + $smarty->assign("divlist",$divlist->DrawList()); + return($smarty->fetch(get_template_path("goKrbServer.tpl",TRUE,dirname(__FILE__)))); + } + + + /* \brief Return serice informations, which will be shown in the service overview. + @return Array Some service information. + */ + public function getListEntry() + { + $fields = goService::getListEntry(); + $fields['Message'] = _("Kerberos service (kadmin access informations)"); + #$fields['AllowEdit'] = true; + return($fields); + } + + + /*! \brief Checks if all given values are valid + @return Array An array containing all error messages. + */ + public function check() + { + $message = plugin::check(); + if (empty($this->goKrbRealm)){ + $message[]= msgPool::required(_("Realm")); + } + if(count($this->policies) && (empty($this->macAddress) || !tests::is_mac($this->macAddress))){ + $message[] = _("Cannot apply policy changes! The defined kerberos server has no mac address."); + } + return($message); + } + + + /*! \brief Adds or updated a given policy. + @param Integer ID The policy to update, or -1 if it is a new one. + @param Array The policy settings. + */ + public function AddPolicy($id,$policy) + { + if($id != -1 && $this->policies[$id]['NAME'] == $policy['NAME']){ + + /* Policy was edited + */ + if($this->policies[$id]['STATUS'] == "LOADED"){ + $policy['STATUS'] = "EDITED"; + }else{ + $policy['STATUS'] = $this->policies[$id]['STATUS']; + } + $this->policies[$this->id] = $policy; + + }elseif($id != -1 && $this->policies[$id]['NAME'] != $policy['NAME']){ + + /* Policy was renamed, remove old and add new policy + */ + $this->RemovePolicy($id); + $this->AddPolicy(-1,$policy); + }else{ + + /* Policy was added + */ + $name = $policy['NAME']; + + /* Check if there is already a policy with this name + which was removed before + */ + foreach($this->policies as $pid => $entry){ + if($entry['NAME'] == $name && $entry['STATUS'] == "REMOVED"){ + $id = $pid; + break; + } + } + + /* Update existing policy or create new one + */ + if(isset($this->policies[$id])){ + $policy['STATUS'] = "EDITED"; + $this->policies[$id] = $policy; + }else{ + $policy['STATUS'] = "ADDED"; + $this->policies[] = $policy; + } + } + } + + + /*! \brief Returns all used policy names. + @return Array A list of used policy names. + */ + public function getPolicyNames() + { + $ret = array(); + foreach($this->policies as $policy){ + if($policy['STATUS'] == "REMOVED") continue; + $ret[] = $policy['NAME']; + } + return($ret); + } + + + /*! \brief Marks a policy as remvoed + @param Integer the Id of the policy to remove + */ + public function RemovePolicy($id) + { + /* Load policy information, if not done before + */ + if($this->policies[$id]['STATUS'] == "LOADED" && empty($this->policies[$id]['DATA'])){ + $o = new gosaSupportDaemon(); + $this->policies[$id]['DATA'] = $o->krb5_get_policy($this->macAddress,$this->policies[$id]['NAME']); + } + if($this->policies[$id]['DATA']['POLICY_REFCNT']){ + msg_dialog::display(_("Remove"),msgPool::stillInUse(_("Policy")),ERROR_DIALOG) ; + }else{ + if($this->policies[$id]['STATUS'] == "ADDED"){ + unset($this->policies[$id]); + }else{ + $this->policies[$id]['STATUS'] = "REMOVED"; + } + } + } + + + /*! \brief Save POSTed html variables + */ + public function save_object() + { + if(isset($_POST['goKrbServerPosted'])){ + plugin::save_object(); + + /* Add new Policy requested + */ + if(isset($_POST['policy_add']) && class_available("krb5_policy")){ + $this->dialog = new krb5_policy($this->config,array(),$this); + $this->id = -1; + } + + /* Walk through POSTs an check for image-button posts + */ + foreach($_POST as $name => $value){ + + /* Remove policy requested + */ + if(preg_match("/^policy_del/",$name)){ + $id = preg_replace("/^policy_del_([0-9]*)_.*/i","\\1",$name); + if(isset($this->policies[$id])){ + $this->RemovePolicy($id); + } + break; + } + + /* Edit Policy requested + */ + if(preg_match("/^policy_edit/",$name)){ + $id = preg_replace("/^policy_edit_([0-9]*)_.*/i","\\1",$name); + if(isset($this->policies[$id])){ + + /* Load policy information, if not done before + */ + if($this->policies[$id]['STATUS'] == "LOADED" && empty($this->policies[$id]['DATA'])){ + $o = new gosaSupportDaemon(); + $this->policies[$id]['DATA'] = $o->krb5_get_policy($this->macAddress,$this->policies[$id]['NAME']); + } + + /* Open dialog */ + $this->id = $id; + $this->dialog = new krb5_policy($this->config,$this->policies[$id], $this); + } + break; + } + } + } + } + + + /*! \brief Save changes to ldap + */ + public function save() + { + goService::save(); + + /* Send policy changes back to the si daemon + */ + $actions = array("del" => array(),"add_edit" => array()); + foreach($this->policies as $policy){ + + /* Unset not used vars */ + if(isset($policy['DATA']['MASK'])) unset($policy['DATA']['MASK']); + if(isset($policy['DATA']['POLICY_REFCNT'])) unset($policy['DATA']['POLICY_REFCNT']); + + switch($policy['STATUS']){ + case "REMOVED" : $actions['del'] [] = $policy;break; + case "ADDED" : + case "EDITED" : $actions['add_edit'] [] = $policy;break; + } + } + + $o = new gosaSupportDaemon(); + $policies = $o->krb5_list_policies($this->macAddress); + + /* Send remove policy event + */ + foreach($actions['del'] as $policy){ + if(!in_array($policy['NAME'],$policies)) continue; + if(!$o->krb5_del_policy($this->macAddress,$policy['NAME'])){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + } + } + + /* Send add new/edit policy event + */ + foreach($actions['add_edit'] as $policy){ + if(in_array($policy['NAME'],$policies)){ + if(!$o->krb5_set_policy($this->macAddress,$policy['NAME'],$policy['DATA'])){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + } + }else{ + if(!$o->krb5_add_policy($this->macAddress,$policy['NAME'],$policy['DATA'])){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + } + } + } + } + + + /*! \brief Return plugin informations for acl handling + @return Array ACL infos. + */ + static function plInfo() + { + return (array( + "plShortName" => _("Kerberos"), + "plDescription" => _("Kerberos access information")." ("._("Services").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 95, + "plSection" => array("administration"), + "plCategory" => array("server"), + + "plProvidedAcls"=> array( + "goKrbPolicy" => _("Policies"), + "goKrbRealm" => _("Realm")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_krb5_policy.inc b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_krb5_policy.inc new file mode 100644 index 000000000..b3e5b6d92 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_krb5_policy.inc @@ -0,0 +1,171 @@ +config = $config; + $this->parent = $parent; + if(count($entry)){ + $this->is_new =FALSE; + $this->name = $entry['NAME']; + $this->data = $entry['DATA']; + }else{ + $this->data['MASK'] = 0; + $this->data['POLICY_REFCNT'] = 0; + $this->data['PW_HISTORY_NUM'] = 5; + $this->data['PW_MAX_LIFE'] = 604800; + $this->data['PW_MIN_CLASSES'] = 3; + $this->data['PW_MIN_LENGTH'] = 6; + $this->data['PW_MIN_LIFE'] = 36000; + } + $this->init_name = $this->name; + } + + + /*! \brief Returns a HTML ui which allows + configuring this policy + @return String a HTML interface. + */ + public function execute() + { + $display = plugin::execute(); + $smarty = get_smarty(); + + $smarty->assign("name",$this->name); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->data[$attr]); + } + + $smarty->assign("POLICY_REFCNT", sprintf(""._("This policy is referenced %d times.")."", $this->data["POLICY_REFCNT"])); + return($smarty->fetch(get_template_path("krb5_policy.tpl",TRUE,dirname(__FILE__)))); + } + + + /*! \brief Saves the HTML posted variables + */ + public function save_object() + { + if(isset($_POST['Policy_Posted'])){ + if(isset($_POST['name'])){ + $this->name = get_post("name"); + } + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->data[$attr] = get_post($attr); + } + } + } + } + + + /*! \brief Checks the given input + @return Array Containing errors about incorrect values. + */ + public function check() + { + $message = array(); + $names = $this->parent->getPolicyNames(); + if($this->name != $this->init_name && in_array($this->name,$names)){ + $message[] = msgPool::duplicated(_("Policy name")); + } + if(empty($this->name)){ + $message[] = msgPool::required(_("Policy name")); + } + + if(!preg_match("/^[a-z0-9\@\.\-_]*$/i",$this->name)){ + $message[] = msgPool::invalid(_("Policy name"),$this->name,"/[a-z0-9]/i"); + } + + /* Check password history */ + if(!is_numeric($this->data['PW_HISTORY_NUM'])){ + $message[] = msgPool::invalid(_("Password history size")); + }elseif($this->data['PW_HISTORY_NUM'] <= 0){ + $message[] = msgPool::toosmall(_("Password history size")); + } + + /* Check password minimum length */ + if(!is_numeric($this->data['PW_MIN_LENGTH'])){ + $message[] = msgPool::invalid(_("Minimum password length")); + }elseif($this->data['PW_MIN_LENGTH'] <= 0){ + $message[] = msgPool::toosmall(_("Minimum password length")); + } + + /* Check password different character classes */ + if(!is_numeric($this->data['PW_MIN_CLASSES'])){ + $message[] = msgPool::invalid(_("Required different characters")); + }elseif($this->data['PW_MIN_CLASSES'] <= 0){ + $message[] = msgPool::toosmall(_("Required different characters")); + }elseif($this->data['PW_MIN_CLASSES'] > $this->data['PW_MIN_LENGTH']){ + $message[] = sprintf(_("The value specified for '%s' must be smaller than the value specified for '%s'!"), + _("Required different characters"),_("Minimum password length")); + } + + /* Check password min lifetime */ + if(!is_numeric($this->data['PW_MIN_LIFE'])){ + $message[] = msgPool::invalid(_("Minimum password lifetime")); + }elseif($this->data['PW_MIN_LIFE'] <= 0){ + $message[] = msgPool::toosmall(_("Minimum password lifetime")); + } + + /* Check password lifetime */ + if(!is_numeric($this->data['PW_MAX_LIFE'])){ + $message[] = msgPool::invalid(_("Password lifetime")); + }elseif($this->data['PW_MAX_LIFE'] <= 0){ + $message[] = msgPool::toosmall(_("Password lifetime")); + }elseif($this->data['PW_MAX_LIFE'] < $this->data['PW_MIN_LIFE']){ + $message[] = sprintf(_("The value specified for '%s' must be smaller than the value specified for '%s'!"), + _("Minimum password lifetime"),_("Password lifetime")); + } + + return($message); + } + + + /*! \brief Returns object data of the currently edited policy + @return Array A multidimensional array containing policy informations. + */ + public function save() + { + $ret = array(); + $ret['NAME'] = $this->name; + $ret['DATA'] = $this->data; + return($ret); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_krb_host_keys.inc b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_krb_host_keys.inc new file mode 100644 index 000000000..350da6ec1 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_krb_host_keys.inc @@ -0,0 +1,472 @@ +cn). + + The keys can be created and removed. + A running "GOsa support Daemon" with a krb5 module is required. +*/ +class krbHostKeys extends plugin +{ + + public $config; + private $object; + private $o_queue; + private $goKrbRealm = "disabled"; + private $kerberos_support= FALSE; + + private $pwd_handle = NULL; + private $server_list = array(); + private $last_list = array(); // The last array created for the smarty template + + private $init_namingAttr = ""; + private $namingAttr = ""; + private $is_service_key = FALSE; + private $confirm_box = NULL; + + /*! \brief Initalizes the kerberos host/service key generation. + (See class comment for more information) + @param Object The GOsa configuration class. + @param Object The parent class (e.g. servgeneric) // $parent->cn MUST be set. + */ + public function __construct($config,&$object) + { + + /* Initialize this plugin + */ + plugin::plugin($config, NULL); + $this->object = $object; + + $this->acl_category = &$this->object->acl_category; + $this->acl_base = &$this->object->acl_base; + + /* Instantiate si class, to be able to communicate with the support daemon. + */ + $this->o_queue = new gosaSupportDaemon(); + + /* Create principal name, to detect whether there is a valid host key or not + */ + if(!isset($this->object->cn)){ + trigger_error("Cannot initialize kerberos key service, invalid parent object given (Paramter 2).". + " Should be of class 'plugin' with accessible class member variable 'cn'."); + }else{ + $this->init_namingAttr = $this->namingAttr = $this->object->cn; + $this->init(); + } + } + + + /*! \brief Reloads the list of available principals. + */ + public function reload_principals() + { + if($this->kerberos_support){ + foreach($this->server_list as $mac => $data){ + $principals = $this->pwd_handle->load_principals_for_server($mac); + $this->server_list[$mac]['PRINCIPALS'] = $principals; + } + } + } + + + /*! \brief Load/reload all key settings for the current host ($this->object). + This reloads the list of all kerberos realms and which keys + are set for the current host. + */ + private function init() + { + /* Check if the SI based kerberos method is available + */ + $this->kerberos_support = FALSE; + if(class_available("passwordMethodMIT")){ + + /* Update the naming attribute. + */ + $this->namingAttr = $this->object->cn; + + /* Create password handle, it has already a working principal parsing + */ + $this->pwd_handle = new passwordMethodMIT($this->config); + if(!$this->pwd_handle->is_available()){ + return; + } + + /* Check class initialation */ + if(!($this->pwd_handle instanceOf passwordMethodMIT)){ + trigger_error("Could not initialize kerberos password method 'passwordMethodMIT'."); + return; + } + $this->pwd_handle->clear_cache(); + + /* Get a list of all kerberos servers, defined in ldap + and get a list of principals they are providing. + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=goServer)(objectClass=goKrbServer))",array("goKrbRealm","cn","description","macAddress")); + $this->server_list = array(); + while($attrs = $ldap->fetch()){ + if(!isset($attrs['macAddress'][0])) continue; + if(!isset($attrs['description'][0])) $attrs['description'][0] =""; + + /* Get all required informations for each realm + */ + $mac = $attrs['macAddress'][0]; + $realm = $attrs['goKrbRealm'][0]; + $cn = $attrs['cn'][0]; + $principals = $this->pwd_handle->load_principals_for_server($mac); + + /* Create a list of all realms and their attributes. + */ + $this->server_list[$mac]['CN'] = $cn; + $this->server_list[$mac]['MAC'] = $mac; + $this->server_list[$mac]['REALM'] = $realm; + $this->server_list[$mac]['PRINCIPALS'] = $principals; + + /* Set first realm as selected. + */ + if($this->goKrbRealm == ""){ + $this->goKrbRealm = $attrs['goKrbRealm'][0]; + } + } + + if(isset($this->server_list) && count($this->server_list) && $this->o_queue->is_connected()){ + $this->kerberos_support = TRUE; + } + } + } + + + /*! \brief Create the HTML output used in the host generic dialogs + or in server-services. + It also checks if the host cn has changed and asks the user + if he want to update the keys to the current host name. + */ + public function execute_by_prefix($prefix, $service_plugin =FALSE) + { + /* Skip if there is no kerberos support available + */ + if(!$this->kerberos_support || !$this->acl_is_readable("0")) return(""); + + /* Check if naming context has changed, + in this case ask user if he wants to update the keys. + */ + if($this->object->cn != $this->namingAttr){ + + /* The confirm dialog was shown. Check if OK was pressed. + */ + if(is_object($this->confirm_box) && $this->confirm_box instanceof msg_dialog){ + if($this->confirm_box->is_confirmed()){ + + /* Walk through each server and check which keys have to be updated. + */ + foreach($this->server_list as $server => $data){ + foreach($data['PRINCIPALS'] as $p_name){ + if(preg_match("/\/".preg_quote($this->namingAttr, '/')."\@/",$p_name)){ + $pre = preg_replace("/\/.*$/","/",$p_name); + $this->delete_key($server, $pre.$this->namingAttr."@".$data['REALM']); + $this->create_key($server, $pre.$this->object->cn."@".$data['REALM']); + } + } + } + } + $this->init(); + $this->confirm_box = NULL; + }else{ + + /* The host name has changed, check if there are kerberos key which have to be updated + */ + $found = array(); + $this->reload_principals(); + foreach($this->server_list as $server => $data){ + foreach($data['PRINCIPALS'] as $p_name){ + + /* Collect all principals for the current host. + */ + if(preg_match("/\/".preg_quote($this->namingAttr, '/')."\@/",$p_name)){ + $pre = preg_replace("/\/.*$/","/",$p_name); + $found[] = "".$pre.$this->namingAttr."@".$data['REALM']." ". + _("updated to"). + " ".$pre.$this->object->cn."@".$data['REALM'].""; + } + } + } + + /* If there is at leat one key that have to updated, then display a confirm dialog. + */ + if(count($found)){ + $this->confirm_box = new msg_dialog(_("Kerberos"),sprintf(_("The principal name of this system has changed. Do you want to update your principals? The affected principals are listed below: %s"),"
".msgPool::buildList($found)),OK_CANCEL_DIALOG); + }else{ + $this->init(); + } + } + } + + /* Create a divlist to list all key settings. + */ + $divlist = new divSelectBox("Kerberos_Host/Service_Keys"); + $divlist->SetHeight(100); + $princ_id = 0; // Used in posts + + $this->last_list[$prefix] = array(); + + /* Create actions */ + $new = " +  +  "; + $rec =" +  + + "; + + /* Check ACLs */ + if(!$this->acl_is_writeable("0")){ + $new = $rec = ""; + } + + + foreach($this->server_list as $mac => $server){ + + /* Recreate/Remove actions */ + $realm = $server['REALM']; + + /* Check if the given prefix is configured for a realm + If it is configured display the recreate and remove button + if not display the create button. + */ + $found = FALSE; + + // The master principal is specified by the $prefix parameter of this function. + $master_princ = $prefix.$this->namingAttr."@".$realm; + + foreach($server['PRINCIPALS'] as $id => $princ){ + if(preg_match("/^".preg_quote($master_princ, '/')."$/i",$princ)){ + $found = TRUE; + break; + } + } + + /* Display buttons to "create" or to "remove/recreate" wheteher the prefix esists or not + */ + $princ_id ++; + $this->last_list[$prefix][$princ_id]['REALM'] = $realm; + $this->last_list[$prefix][$princ_id]['MAC'] = $mac; + $this->last_list[$prefix][$princ_id]['NAME'] = $master_princ; + + $field1 = array('string' => $realm ); + $field2 = array('string' => $master_princ); + if($found){ + $field3 = array('string' => _("installed")); + $field4 = array('string' => preg_replace("/%ID%/",$princ_id,$rec),"attach" => "style='border:0px;'"); + $this->last_list[$prefix][$princ_id]['USED'] = TRUE; + }else{ + $field3 = array('string' => "-"); + $field4 = array('string' => preg_replace("/%ID%/",$princ_id,$new),"attach" => "style='border:0px;'"); + $this->last_list[$prefix][$princ_id]['USED'] = FALSE; + } + + $divlist->AddEntry(array($field1,$field2,$field3,$field4)); + + /* Get all additionally configured service host keys, this are all keys that + do not match the master_princ. + */ + if(!$service_plugin){ + foreach($server['PRINCIPALS'] as $id => $princ){ + if(preg_match("/".preg_quote("/".$this->namingAttr."@", '/')."/i",$princ) && + !preg_match("/^".preg_quote($prefix, '/')."/",$princ)){ + + /* Display buttons to "create" or to "remove/recreate" wheteher the prefix esists or not + */ + $princ_id ++; + + $this->last_list[$prefix][$princ_id]['USED'] = TRUE; + $this->last_list[$prefix][$princ_id]['REALM'] = $realm; + $this->last_list[$prefix][$princ_id]['MAC'] = $mac; + $this->last_list[$prefix][$princ_id]['NAME'] = $princ; + + $field1 = array('string' => $realm ); + $field2 = array('string' => $princ); + $field3 = array('string' => _("installed")); + $field4 = array('string' => preg_replace("/%ID%/",$princ_id,$rec),"attach" => "style='border:0px;'"); + $divlist->AddEntry(array($field1,$field2,$field3,$field4)); + } + } + } + } + + $smarty = get_smarty(); + $smarty->assign("list",$divlist->DrawList()); + $smarty->assign("server_list" ,$this->server_list); + $smarty->assign("service_plugin" ,$service_plugin); + $smarty->assign("is_service_key" , $this->is_service_key); + return($smarty->fetch (get_template_path('krb_host_keys.tpl', TRUE,dirname(__FILE__)))); + } + + + /*! \brief This function creates a new host/service key for the given server and principal name + @param String The servers mac address. (Must be available in $this->server_list) + @param $name The new principal name. (e.g. ldap/some.host@REALM.FASEL) + @retrun Boolean TRUE on success else FALSE. + */ + public function create_key($id,$name) + { + $this->o_queue->krb5_add_principal($id,$name,array()); + if($this->o_queue->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($this->o_queue->get_error()),ERROR_DIALOG); + return(FALSE); + } + return(TRUE); + } + + + /*! \brief This function recreates a host/service key for the given server and principal name. + It remove the old key first and then tries to create a new one. + @param String The servers mac address. (Must be available in $this->server_list) + @param $name The new principal name. (e.g. ldap/some.host@REALM.FASEL) + @retrun Boolean TRUE on success else FALSE. + */ + public function recreate_key($id,$name) + { + if($this->delete_key($id,$name)){ + if($this->create_key($id,$name)){ + return(TRUE); + } + } + return(FALSE); + } + + + /*! \brief This function removes a host/service key for the given server and principal name. + @param String The servers mac address. (Must be available in $this->server_list) + @param $name The new principal name. (e.g. ldap/some.host@REALM.FASEL) + @retrun Boolean TRUE on success else FALSE. + */ + public function delete_key($id,$name) + { + $this->o_queue->krb5_del_principal($id, $name); + if($this->o_queue->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($this->o_queue->get_error()),ERROR_DIALOG); + return(FALSE); + } + return(TRUE); + } + + + /*! \brief This function acts on the HTML posts and ensures that our + delete/create/recreate are executed. + */ + public function save_object_by_prefix($prefix) + { + if(!isset($this->last_list[$prefix])) return; // No posts for us + + if(!$this->acl_is_writeable("0")) return; // No permissions to change anything + + foreach($_POST as $name => $value){ + if(preg_match("/^create_/",$name)){ + $id = preg_replace("/^create_([0-9]*)_.*$/","\\1",$name); + if(isset($this->last_list[$prefix][$id])){ + $data = $this->last_list[$prefix][$id]; + $this->create_key($data['MAC'],$data['NAME']); + $this->init(); + } + break; + } + if(preg_match("/^recreate_/",$name)){ + $id = preg_replace("/^recreate_([0-9]*)_.*$/","\\1",$name); + if(isset($this->last_list[$prefix][$id])){ + $data = $this->last_list[$prefix][$id]; + $this->recreate_key($data['MAC'],$data['NAME']); + $this->init(); + } + break; + } + if(preg_match("/^remove_/",$name)){ + $id = preg_replace("/^remove_([0-9]*)_.*$/","\\1",$name); + if(isset($this->last_list[$prefix][$id])){ + $data = $this->last_list[$prefix][$id]; + $this->delete_key($data['MAC'],$data['NAME']); + $this->init(); + } + break; + } + } + } + + + /*! \brief Removes all key settings for the given host ($this->object->cn) + */ + public function remove_from_parent_by_prefix($prefix) + { + if(!$this->kerberos_support) return; + foreach($this->server_list as $server => $data){ + foreach($data['PRINCIPALS'] as $p_name){ + + /* Detect all principals for the current host. + */ + if(preg_match("/".preg_quote($prefix.$this->namingAttr, '/')."\@/",$p_name)){ + $this->delete_key($server, $p_name); + } + } + } + } + + + /*! \brief Ensures that a service plugin suitable HTML output is generated. + @param Boolean TRUE enables servie plugin output, FALSE diables it. + */ + public function ServiceKey($bool = TRUE) + { + $this->is_service_key = $bool; + } + + + /*! \brief Return plugin informations for acl handling + @return Array ACL infos. + */ + static function plInfo() + { + return (array( + "plShortName" => _("Kerberos key"), + "plDescription" => _("Kerberos host key"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 2, + "plSection" => array("administration"), + "plCategory" => array("server","workstation","terminal"), + + "plProvidedAcls"=> array() + )); + + + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_password-methods-MIT.inc b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_password-methods-MIT.inc new file mode 100644 index 000000000..f41b11425 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/class_password-methods-MIT.inc @@ -0,0 +1,682 @@ +0x00000001 , // Pohibit postdated tickets + "DISALLOW_FORWARDABLE" =>0x00000002 , // Prohibit forwardable tickets + "DISALLOW_TGT_BASED" =>0x00000004 , // Disallow Ticket-Granting Service + "DISALLOW_RENEWABLE" =>0x00000008 , // Prohibit renewable tickets + "DISALLOW_PROXIABLE" =>0x00000010 , // Disallow proxiable tickets + "DISALLOW_DUP_SKEY" =>0x00000020 , // Disallow user to user authentification + "DISALLOW_ALL_TIX" =>0x00000040 , // Forbid ticket issuance + "REQUIRES_PRE_AUTH" =>0x00000080 , // Preauthentication required + "REQUIRES_HW_AUTH" =>0x00000100 , // Hardware preauthentication + "REQUIRES_PWCHANGE" =>0x00000200 , // Force a password change + "UNKNOWN_0x00000400" =>0x00000400 , // ? + "UNKNOWN_0x00000800" =>0x00000800 , // ? + "DISALLOW_SVR" =>0x00001000 , // Prohibit issuance of service tickets + "PWCHANGE_SERVICE" =>0x00002000 , // Password change service + "SUPPORT_DESMD5" =>0x00004000 , // ? + "NEW_PRINC" =>0x00008000 ); // ? + + var $used_flags = 128; // Flags, see below + + var $readonly = array( + "FAIL_AUTH_COUNT", // The number of failed logins + "KVNO", // Key version number + "LAST_FAILED", // Last failed login time + "LAST_PWD_CHANGE", // Password last change time + "LAST_SUCCESS", // Last successful login + "MOD_DATE"); // Last modification time + + var $FAIL_AUTH_COUNT = 0; + var $KVNO = ""; + var $LAST_FAILED = 0; + var $LAST_PWD_CHANGE = 0; + var $LAST_SUCCESS = 0; + var $MOD_DATE = 0; + + var $POLICY = "_none_"; + var $POLICIES = array(); // Policies provided by the corrently selected realm/server + + public function is_locked($config,$dn = "") + { + return(FALSE); + } + + public function lock_account($config,$dn = "") + { + return(FALSE); + } + + public function unlock_account($config,$dn = "") + { + return(FALSE); + } + + public function __construct(&$config,$dn = "new") + { + $this->config= $config; + $this->parent_dn = $dn; + + /* No config object given, this may be the case + if there is only a is_available() request triggered. + */ + if(!is_object($config)){ + return; + } + + /* Keep the cached valued and skip loading principals + from si until this method gets configured. + */ + $skip_si_access = TRUE; + if($dn != "new" && $dn != ""){ + session::un_set("MIT_CACHE"); + session::un_set("MIT_PRINCIPAL_CACHE"); + session::un_set("MIT_POLICY_CACHE"); + $this->clear_cache(); + $skip_si_access = FALSE; + } + + /* Get a list of all kerberos servers, defined in ldap + and get a list of principals they are providing. + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=goServer)(objectClass=goKrbServer))",array("goKrbRealm","cn","description","macAddress")); + $this->server_list = array(); + while($attrs = $ldap->fetch()){ + if(!isset($attrs['macAddress'][0])) continue; + if(!isset($attrs['description'][0])) $attrs['description'][0] =""; + + if($skip_si_access){ + $principals = array(); + }else{ + $principals = $this->load_principals_for_server($attrs['macAddress'][0]); + } + + /* Create Realm/Server/Principal mapping. + */ + foreach($principals as $principal){ + $this->map["PRINCIPAL_SERVER"][$principal] = $attrs['cn'][0]; + $this->map["PRINCIPAL_REALM"] [$principal] = $attrs['goKrbRealm'][0]; + } + $this->map["SERVER_REALM"][$attrs['cn'][0]] = $attrs['goKrbRealm'][0]; + $this->map["REALM_SERVER"][$attrs['goKrbRealm'][0]] = $attrs['cn'][0]; + + /* Set first realm as selected. + */ + if($this->goKrbRealm == ""){ + $this->goKrbRealm = $attrs['goKrbRealm'][0]; + } + + /* Create Server list + */ + $this->server_list[$attrs['cn'][0]] = array("macAddress" => $attrs['macAddress'][0], + "description"=> $attrs['description'][0], + "dn" => $attrs['dn'], + "principals" => $principals, + "goKrbRealm" => $attrs['goKrbRealm'][0], + "cn" => $attrs['cn'][0]); + } + + /* If this methods is initialized with a valid object dn then + load the object data from ldap and the SI daemon && initialize this class. + */ + $this->is_new = TRUE; + if(!$skip_si_access){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($dn); + $ldap->cat($dn); + $this->attrs = $ldap->fetch(); + + /* Set initial pwd hash which take effect if no password method was set yet. + Will be overwritten by the following lines, if the user has already a valid principal. + */ + $this->principal = $this->attrs['uid'][0]."@".$this->goKrbRealm; + + if(isset($this->attrs['userPassword']) && preg_match("/^\{".$this->get_hash_name()."\}/",$this->attrs['userPassword'][0])){ + + /* Extract principal name out of userPassword attribute + */ + $p_name = preg_replace("/^\{".$this->get_hash_name()."\}/","",$this->attrs['userPassword'][0]); + + /* Try to detect server our principal is configured on + */ + if(isset($this->map['PRINCIPAL_SERVER'][$p_name])){ + $server= $this->map['PRINCIPAL_SERVER'][$p_name]; + $this->goKrbRealm = $this->map['SERVER_REALM'][$server]; + $this->principal = $p_name; + + /* Load policies */ + $server_name = $this->map['REALM_SERVER'][$this->goKrbRealm]; + $server_mac = $this->server_list[$server_name]['macAddress']; + $this->POLICIES = $this->load_policies_for_server($server_mac); + + /* Load principal */ + $this->load_principal($this->server_list[$server]['macAddress'],$p_name); + $this->is_new = FALSE; + } + } + } + } + + + public static function clear_cache() + { + session::un_set("MIT_CACHE"); + session::un_set("MIT_PRINCIPAL_CACHE"); + session::un_set("MIT_POLICY_CACHE"); + } + + + /*! \brief Load a specific principal from the si daemon + and initialize this plugin with it. + @param String The macAddress of the kerberos server. + @param String The name of the principal to load. + */ + public function load_principal($server,$name) + { + $o = new gosaSupportDaemon(); + $tmp = array(); + $tmp = $o->krb5_get_principal($server,$name); + + if($o->is_error()){ + $this->si_error = TRUE; + $this->si_error_msg = sprintf(_("Cannot load principal '%s', from server '%s'!"),$name,$server).": 
".$o->get_error(); + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + }else{ + + /* Load flags + */ + if(isset($tmp['ATTRIBUTES'])){ + $this->used_flags = $tmp['ATTRIBUTES']; + } + + /* Load readonly attributes + */ + foreach($this->readonly as $attr){ + if(isset($tmp[$attr])){ + $this->$attr = $tmp[$attr]; + } + } + + /* Load modifyable attributes + */ + foreach($this->values as $attr){ + if(isset($tmp[$attr])){ + $this->$attr = $tmp[$attr]; + } + } + + /* Update time checkboxes + */ + $date_values = array("PW_EXPIRATION","PRINC_EXPIRE_TIME"); + foreach($date_values as $value){ + if(!empty($this->$value)){ + $clear = $value."_clear"; + $this->$clear = FALSE; + } + } + } + } + + + /*! \brief Get the list of all configured principals for a given server. + @param String The servers mac address. + @return Array A list with all principals + The results will cached. + */ + public function load_principals_for_server($server) + { + if(!session::is_set("MIT_PRINCIPAL_CACHE")){ + session::set("MIT_PRINCIPAL_CACHE",array()); + } + $cache = session::get("MIT_PRINCIPAL_CACHE"); + if(!isset($cache[$server])){ + $o = new gosaSupportDaemon(); + if($o->is_configured()){ + $tmp = $o->krb5_list_principals($server); + if($o->is_error()){ + $this->si_error = TRUE; + $this->si_error_msg = sprintf(_("Cannot load principals from server '%s'!"),$server).": 
".$o->get_error(); + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + return(array()); + }else{ + $cache[$server] = $tmp; + } + } + session::set("MIT_PRINCIPAL_CACHE",$cache); + } + return($cache[$server]); + } + + + /*! \brief get list of all configured policies + for a given server. + The results will cached. + */ + public function load_policies_for_server($server) + { + if(!session::is_set("MIT_POLICY_CACHE")){ + session::set("MIT_POLICY_CACHE",array()); + } + $cache = session::get("MIT_POLICY_CACHE"); + if(!isset($cache[$server])){ + $o = new gosaSupportDaemon(); + $tmp = $o->krb5_list_policies($server); + if($o->is_error()){ + $this->si_error = TRUE; + $this->si_error_msg = sprintf(_("Cannot load policies from server '%s'!"),$server).": 
".$o->get_error(); + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + return(array()); + }else{ + $cache[$server] = array(); + $cache[$server]["_none_"] = _("none"); + foreach($tmp as $policy){ + $cache[$server][$policy] = $policy; + } + ksort($cache[$server]); + } + session::set("MIT_POLICY_CACHE",$cache); + } + return($cache[$server]); + } + + + /*! \brief Check if this password method is useable. + This is the case if there is a si server running and at least one server configured. + kerberos support. + */ + public function is_available() + { + + $o = new gosaSupportDaemon(FALSE); + + if(count($this->server_list) && $o->connect() && $o->is_configured()){ + return TRUE; + } + return(FALSE); + } + + + /*! \brief Create the password hash. In this case: {kerberos/sasl}name@RELAM + @param String The password -in this case unusued. + @return String The generated hash + */ + public function generate_hash($pwd = "") + { + $mode= "kerberos"; + if ($this->config->get_cfg_value("useSaslForKerberos") == "true"){ + $mode= "sasl"; + } + return "{".$mode."}".$this->attrs['uid'][0]."@".$this->goKrbRealm; + } + + + public function create_template_hash($attrs) + { + return($this->generate_hash()); + } + + + /*! \brief Removes this principal. + */ + public function remove_from_parent() + { + if(!empty($this->principal) && $this->goKrbRealm){ + $server = $this->map['REALM_SERVER'][$this->goKrbRealm]; + $o = new gosaSupportDaemon(); + if(!$o->krb5_del_principal($this->server_list[$server]['macAddress'],$this->principal)){ + $this->si_error = TRUE; + $this->si_error_msg = $o->get_error(); + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + } + } + } + + + /*! \brief Set a new password for this principal + @param String The new password. + */ + public function set_password($password) + { + if(!empty($this->principal) && $this->goKrbRealm){ + $server = $this->map['REALM_SERVER'][$this->goKrbRealm]; + $o = new gosaSupportDaemon(); + if(!$o->krb5_set_password($this->server_list[$server]['macAddress'],$this->principal,$password)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + return(FALSE); + } + } + return(TRUE); + } + + + /*! \brief Return the hash name of this mehtod, e.g. to identify methods. + @return String The hash used by this method. + */ + public function get_hash_name() + { + $mode= "kerberos"; + if ($this->config->get_cfg_value("useSaslForKerberos") == "true"){ + $mode= "sasl"; + } + return "$mode"; + } + + + /*! \brief Returns TRUE if this method is configurable else FALSE + @retrun Boolena TRUE if configurable, else FALSE. + */ + public function is_configurable() + { + return TRUE; + } + + + /*! \brief Additional info displayed in the users password method drop down. + @retunr String Additional password method info. + */ + public function get_description() + { + return(_("Daemon based")); + } + + + /*! \brief Display a HTML based configuration dialog for this plugin + @return String HTML. + */ + public function configure() + { + $this->save_object(); + + $years = array(); + $start = date("Y")-1; + for($i = $start; $i < ($start +20) ; $i++){ + $years[$i] = $i; + } + $month= array(); + for($i = 1; $i <= 12 ; $i++){ + $month[str_pad($i,2,"0",STR_PAD_LEFT)] = $i; + } + $days= array(); + for($i = 1; $i <= 31 ; $i++){ + $days[str_pad($i,2,"0",STR_PAD_LEFT)] = $i; + } + $hours= array(); + for($i = 0; $i <= 23 ; $i++){ + $hours[str_pad($i,2,"0",STR_PAD_LEFT)] = $i; + } + $minutes= array(); + for($i = 0; $i <= 59 ; $i++){ + $minutes[str_pad($i,2,"0",STR_PAD_LEFT)] = $i; + } + + + /* Cancel heimdal options */ + if (isset($_POST['pw_abort']) || $this->display == FALSE){ + $this->display = FALSE; + return(""); + } + + /* Cancel heimdal options */ + if (isset($_POST['pw_save'])){ + $msgs = $this->check(); + if(count($msgs)){ + foreach($msgs as $msg){ + msg_dialog::display(_("Kerberos"),$msg,WARNING_DIALOG); + } + }else{ + $this->display = FALSE; + return ""; + } + } + + $smarty = get_smarty(); + $smarty->assign("si_error",$this->si_error); + $smarty->assign("si_error_msg",$this->si_error_msg); + $smarty->assign("years",$years); + $smarty->assign("month",$month); + $smarty->assign("days",$days); + $smarty->assign("hours",$hours); + $smarty->assign("minutes",$minutes); + $smarty->assign("server_list",$this->server_list); + $smarty->assign("POLICY" ,$this->POLICY); + $smarty->assign("goKrbRealm" , $this->goKrbRealm); + $server_name = $this->map['REALM_SERVER'][$this->goKrbRealm]; + $server_mac = $this->server_list[$server_name]['macAddress']; + $this->POLICIES = $this->load_policies_for_server($server_mac); + $smarty->assign("POLICIES" ,$this->POLICIES); + + foreach($this->values as $attr){ + $smarty->assign($attr ,$this->$attr); + } + foreach($this->readonly as $attr){ + $smarty->assign($attr ,$this->$attr); + } + foreach($this->flags as $attr => $hex){ + $smarty->assign($attr, ($this->used_flags & $hex )); + } + + $date_values = array("PRINC_EXPIRE_TIME","PW_EXPIRATION"); + foreach($date_values as $date_val){ + $clear = $date_val."_clear"; + $smarty->assign($date_val."_clear",$this->$clear); + $smarty->assign($date_val."_y",date("Y",$this->$date_val)); + $smarty->assign($date_val."_m",date("m",$this->$date_val)); + $smarty->assign($date_val."_d",date("d",$this->$date_val)); + $smarty->assign($date_val."_h",date("h",$this->$date_val)); + $smarty->assign($date_val."_i",date("i",$this->$date_val)); + } + + return($smarty->fetch(get_template_path("pwd_kerberos_mit.tpl",TRUE,dirname(__FILE__)))); + } + + + /*! \brief Saves all relevant HTML posts for this plugin + */ + public function save_object() + { + /* If the communication with the si server failed, + you are able to retry to connect to the server. + Here we hanlde those requests. + */ + if(isset($_POST['retry_si'])){ + $this->si_error= FALSE; + $this->si_error_msg= ""; + session::un_set("MIT_PRINCIPAL_CACHE"); + session::un_set("MIT_POLICY_CACHE"); + $this->__construct($this->config,$this->parent_dn); + } + + /* Only handle posts for this plugin, it its content was posted + */ + if(isset($_POST['pwd_heimdal_posted'])){ + + if(isset($_POST['goKrbRealm'])){ + $this->goKrbRealm = get_post("goKrbRealm"); + } + + $this->used_flags = 0; + foreach($this->flags as $attr => $hex){ + if(isset($_POST[$attr])){ + $this->used_flags |= $hex; + } + } + + foreach(array("MAX_LIFE","MAX_RENEWABLE_LIFE","POLICY") as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = get_post($attr); + } + } + + $date_values = array("PW_EXPIRATION","PRINC_EXPIRE_TIME"); + foreach($date_values as $date_value){ + $clear = $date_value."_clear"; + if(isset($_POST[$date_value."_clear"])){ + $this->$clear = TRUE; + }else{ + $this->$clear = FALSE; + $this->$date_value = gmmktime( + $_POST[$date_value."_h"], + $_POST[$date_value."_i"], + 0, + $_POST[$date_value."_m"], + $_POST[$date_value."_d"], + $_POST[$date_value."_y"]); + } + } + } + } + + + /*! \brief Checks the values specified in the configuration dialog. + @return Array Containing all error messages. + */ + public function check() + { + $message = array(); + + if(!preg_match("/^[0-9]*$/",$this->MAX_LIFE)){ + $message[] = msgPool::invalid(_("Ticket max life"),$this->MAX_LIFE,"/[0-9]/"); + } + if(!preg_match("/^[0-9]*$/",$this->MAX_RENEWABLE_LIFE)){ + $message[] = msgPool::invalid(_("Ticket max renew"),$this->MAX_RENEWABLE_LIFE,"/[0-9]/"); + } + return($message); + } + + + /*! \brief Adapt account settings from given dn + */ + public function adapt_from_template ($dn) + { + $source = new passwordMethodMIT($this->config,$dn); + $attrs = array("PRINC_EXPIRE_TIME","PW_EXPIRATION","POLICY","MAX_LIFE","MAX_RENEWABLE_LIFE","MASK","used_flags"); + foreach($attrs as $attr){ + $this->$attr = $source->$attr; + } + } + + + /*! \brief Saves changes back to the SI daemon. + */ + public function save($dn) + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($dn); + $ldap->cat($dn,array('uid')); + $attrs = $ldap->fetch(); + + if(isset($attrs['uid'][0])){ + + /* Get servers mac */ + $server_name = $this->map['REALM_SERVER'][$this->goKrbRealm]; + $server_mac = $this->server_list[$server_name]['macAddress']; + + $uid = $attrs['uid'][0]; + $principal = $uid."@".strtoupper($this->goKrbRealm); + $policy = $this->POLICY; + + /* Collect flags */ + $flags = array(); + $entry = array(); + + $entry['ATTRIBUTES'] = $this->used_flags; + + /* Append other values */ + foreach($this->values as $attr){ + if($attr == "POLICY") continue; + $entry[$attr] = $this->$attr; + } + + /* Prepare entry to be saved */ + if($policy != "_none_"){ + $entry['POLICY'] = $policy; + } + + /* Set date values + */ + $date_values = array("PW_EXPIRATION","PRINC_EXPIRE_TIME"); + foreach($date_values as $value){ + $clear = $value."_clear"; + if($this->$clear){ + $entry[$value] = 0; + } + } + + + /* Save principal changes */ + $o = new gosaSupportDaemon(); + if(in_array($principal,$this->server_list[$server_name]['principals'])){ + $this->is_new = FALSE; + } + + if($this->is_new){ + $o->krb5_add_principal($server_mac,$principal,$entry); + }else{ + $o->krb5_set_principal($server_mac,$principal,$entry); + } + if($o->is_error()){ + $this->si_error = TRUE; + $this->si_error_msg = $o->get_error(); + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o->get_error()),ERROR_DIALOG); + } + } + } + + + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/goKrbServer.tpl b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/goKrbServer.tpl new file mode 100644 index 000000000..df9dcb017 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/goKrbServer.tpl @@ -0,0 +1,41 @@ +

{t}Kerberos kadmin access{/t}

+ + + + + +{if $MIT_KRB} + + + +{/if} +
+ + + + {render acl=$goKrbRealmACL} + + {/render} + +
{t}Kerberos Realm{/t}{$must}
+
+

{t}Policies{/t}

+ + + + +
+ {render acl=$goKrbPolicyACL} + {$divlist} + {/render} +
+ +
+ +

 

+
+ +   + +
+ diff --git a/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/krb5_policy.tpl b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/krb5_policy.tpl new file mode 100644 index 000000000..866a90567 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/krb5_policy.tpl @@ -0,0 +1,49 @@ +

{t}Policy settings{/t}

+ + + + + + + + +
+ + + + + + + + + + + + + + + + + +
{t}Policy name{/t}{$must}
{t}Minimum password length{/t}
{t}Required different characters{/t}
{t}Password history size{/t}
+
+ + + + + + + + + +
+
{t}Minimum password lifetime{/t} {t}seconds{/t}
{t}Password lifetime{/t} {t}seconds{/t}
+

{$POLICY_REFCNT}
+ +

 

+ +
+ +   + +
diff --git a/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/krb_host_keys.tpl b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/krb_host_keys.tpl new file mode 100644 index 000000000..8fd276227 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/krb_host_keys.tpl @@ -0,0 +1,13 @@ +{if !$service_plugin} +

 

+{/if} +

{t}Kerberos keys{/t}

+ +
+{$list} +
+{if $service_plugin} +

 

+{/if} + + diff --git a/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/pwd_kerberos_mit.tpl b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/pwd_kerberos_mit.tpl new file mode 100644 index 000000000..d7c4f32f4 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/admin/systems/services/kerberos/pwd_kerberos_mit.tpl @@ -0,0 +1,246 @@ + +{if $si_error} + +

{t}Kerberos options{/t}

+

+ {msgPool type=siError p1=$si_error_msg} +

+ +
+
+ +

+

+ +

+{else} + + + + + + +
+

{t}Kerberos options{/t}

+ + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+

 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ {t}infinite{/t} + {t}Hour{/t} + {t}Minute{/t} + {t}Day{/t} + {t}Month{/t} + {t}Year{/t} +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+

 

+

{t}Status{/t}

+ + + + + + + + + + + + + + + + + + + + + + + + + +
{t}Failed logins{/t}{if !$FAIL_AUTH_COUNT} {t}none{/t} {else} {$FAIL_AUTH_COUNT} {/if}
{t}Key version number{/t}{$KVNO}
{t}Last failed login{/t}{if !$LAST_FAILED} {t}none{/t} {else} {$LAST_FAILED|date_format:"%d.%m.%Y %H:%m:%S"} {/if}
{t}Last password change{/t}{if !$LAST_PWD_CHANGE} {t}none{/t} {else} {$LAST_PWD_CHANGE|date_format:"%d.%m.%Y %H:%m:%S"} {/if}
{t}Last successful login{/t}{if !$LAST_SUCCESS} {t}none{/t} {else} {$LAST_SUCCESS|date_format:"%d.%m.%Y %H:%m:%S"} {/if}
{t}Last modification date{/t}{if !$MOD_DATE} {t}none{/t} {else} {$MOD_DATE|date_format:"%d.%m.%Y %H:%m:%S"} {/if}
+ + +
+

Flags

+ + + + +
+{t}Prohibit issuance of service tickets{/t}
+{t}Prohibit forwardable tickets{/t}
+{t}Disallow proxiable tickets{/t}
+{t}Prohibit renewable tickets{/t}
+{t}Pohibit postdated tickets{/t}
+{t}Disallow Ticket-Granting Service{/t}
+{t}Password change service{/t}
+{t}Preauthentication required{/t}
+{t}Force a password change{/t}
+{t}Hardware preauthentication{/t}
+{t}Disallow user to user authentification{/t}
+{t}Forbid ticket issuance{/t}
+
+
+ +

+

+ +   + +

+ +{/if} diff --git a/trunk/gosa-plugins/mit-krb5/contrib/hdb.ldif b/trunk/gosa-plugins/mit-krb5/contrib/hdb.ldif new file mode 100644 index 000000000..965dfff9d --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/contrib/hdb.ldif @@ -0,0 +1,18 @@ +dn: cn=hdb,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: hdb +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.1 NAME 'krb5PrincipalName' DESC 'The unparsed Kerberos principal name' EQUALITY caseExactIA5Match SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.2 NAME 'krb5KeyVersionNumber' EQUALITY integerMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.3 NAME 'krb5MaxLife' EQUALITY integerMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.4 NAME 'krb5MaxRenew' EQUALITY integerMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.5 NAME 'krb5KDCFlags' EQUALITY integerMatch SINGLE-VALUE SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.6 NAME 'krb5EncryptionType' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.7 NAME 'krb5ValidStart' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.8 NAME 'krb5ValidEnd' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.9 NAME 'krb5PasswordEnd' EQUALITY generalizedTimeMatch ORDERING generalizedTimeOrderingMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.10 NAME 'krb5Key' DESC 'Encoded ASN1 Key as an octet string' SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.11 NAME 'krb5PrincipalRealm' DESC 'Distinguished name of krb5Realm entry' SUP distinguishedName ) +olcAttributeTypes: ( 1.3.6.1.4.1.5322.10.1.12 NAME 'krb5RealmName' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} ) +olcObjectClasses: ( 1.3.6.1.4.1.5322.10.2.1 NAME 'krb5Principal' SUP top AUXILIARY MUST ( krb5PrincipalName ) MAY ( cn $ krb5PrincipalRealm ) ) +olcObjectClasses: ( 1.3.6.1.4.1.5322.10.2.2 NAME 'krb5KDCEntry' SUP krb5Principal AUXILIARY MUST ( krb5KeyVersionNumber ) MAY ( krb5ValidStart $ krb5ValidEnd $ krb5PasswordEnd $ krb5MaxLife $ krb5MaxRenew $ krb5KDCFlags $ krb5EncryptionType $ krb5Key ) ) +olcObjectClasses: ( 1.3.6.1.4.1.5322.10.2.3 NAME 'krb5Realm' SUP top AUXILIARY MUST ( krb5RealmName ) ) diff --git a/trunk/gosa-plugins/mit-krb5/contrib/hdb.schema b/trunk/gosa-plugins/mit-krb5/contrib/hdb.schema new file mode 100644 index 000000000..6e5c0f7fd --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/contrib/hdb.schema @@ -0,0 +1,139 @@ +# Definitions for a Kerberos V KDC schema +# +# $Id: hdb.schema 14958 2005-04-25 17:33:40Z lha $ +# +# This version is compatible with OpenLDAP 1.8 +# +# OID Base is iso(1) org(3) dod(6) internet(1) private(4) enterprise(1) padl(5322) kdcSchema(10) +# +# Syntaxes are under 1.3.6.1.4.1.5322.10.0 +# Attributes types are under 1.3.6.1.4.1.5322.10.1 +# Object classes are under 1.3.6.1.4.1.5322.10.2 + +# Syntax definitions + +#krb5KDCFlagsSyntax SYNTAX ::= { +# WITH SYNTAX INTEGER +#-- initial(0), -- require as-req +#-- forwardable(1), -- may issue forwardable +#-- proxiable(2), -- may issue proxiable +#-- renewable(3), -- may issue renewable +#-- postdate(4), -- may issue postdatable +#-- server(5), -- may be server +#-- client(6), -- may be client +#-- invalid(7), -- entry is invalid +#-- require-preauth(8), -- must use preauth +#-- change-pw(9), -- change password service +#-- require-hwauth(10), -- must use hwauth +#-- ok-as-delegate(11), -- as in TicketFlags +#-- user-to-user(12), -- may use user-to-user auth +#-- immutable(13) -- may not be deleted +# ID { 1.3.6.1.4.1.5322.10.0.1 } +#} + +#krb5PrincipalNameSyntax SYNTAX ::= { +# WITH SYNTAX OCTET STRING +#-- String representations of distinguished names as per RFC1510 +# ID { 1.3.6.1.4.1.5322.10.0.2 } +#} + +# Attribute type definitions + +attributetype ( 1.3.6.1.4.1.5322.10.1.1 + NAME 'krb5PrincipalName' + DESC 'The unparsed Kerberos principal name' + EQUALITY caseExactIA5Match + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.2 + NAME 'krb5KeyVersionNumber' + EQUALITY integerMatch + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.3 + NAME 'krb5MaxLife' + EQUALITY integerMatch + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.4 + NAME 'krb5MaxRenew' + EQUALITY integerMatch + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.5 + NAME 'krb5KDCFlags' + EQUALITY integerMatch + SINGLE-VALUE + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.6 + NAME 'krb5EncryptionType' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.7 + NAME 'krb5ValidStart' + EQUALITY generalizedTimeMatch + ORDERING generalizedTimeOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.8 + NAME 'krb5ValidEnd' + EQUALITY generalizedTimeMatch + ORDERING generalizedTimeOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 + SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.9 + NAME 'krb5PasswordEnd' + EQUALITY generalizedTimeMatch + ORDERING generalizedTimeOrderingMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 + SINGLE-VALUE ) + +# this is temporary; keys will eventually +# be child entries or compound attributes. +attributetype ( 1.3.6.1.4.1.5322.10.1.10 + NAME 'krb5Key' + DESC 'Encoded ASN1 Key as an octet string' + SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.11 + NAME 'krb5PrincipalRealm' + DESC 'Distinguished name of krb5Realm entry' + SUP distinguishedName ) + +attributetype ( 1.3.6.1.4.1.5322.10.1.12 + NAME 'krb5RealmName' + EQUALITY octetStringMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} ) + +# Object class definitions + +objectclass ( 1.3.6.1.4.1.5322.10.2.1 + NAME 'krb5Principal' + SUP top + AUXILIARY + MUST ( krb5PrincipalName ) + MAY ( cn $ krb5PrincipalRealm ) ) + +objectclass ( 1.3.6.1.4.1.5322.10.2.2 + NAME 'krb5KDCEntry' + SUP krb5Principal + AUXILIARY + MUST ( krb5KeyVersionNumber ) + MAY ( krb5ValidStart $ krb5ValidEnd $ krb5PasswordEnd $ + krb5MaxLife $ krb5MaxRenew $ krb5KDCFlags $ + krb5EncryptionType $ krb5Key ) ) + +objectclass ( 1.3.6.1.4.1.5322.10.2.3 + NAME 'krb5Realm' + SUP top + AUXILIARY + MUST ( krb5RealmName ) ) + diff --git a/trunk/gosa-plugins/mit-krb5/help/guide.xml b/trunk/gosa-plugins/mit-krb5/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/mit-krb5/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mit-krb5/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..eb0fab004 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,364 @@ +# translation of messages.po to deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2008-12-03 15:12+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "Kerberos-Dienst" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:359 +#: admin/systems/services/kerberos/class_goKrbServer.inc:368 +#: admin/systems/services/kerberos/class_goKrbServer.inc:372 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:236 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:292 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:320 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:382 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:397 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:673 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:343 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:376 +msgid "Service infrastructure" +msgstr "Dienst-Infrastruktur" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:166 +msgid "Kerberos service (kadmin access informations)" +msgstr "Kerberos Dienst (kadmin Zugangs-Informationen)" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:179 +#: admin/systems/services/kerberos/class_goKrbServer.inc:395 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:25 +msgid "Realm" +msgstr "Realm" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:182 +msgid "" +"Cannot apply policy changes! The defined kerberos server has no mac address." +msgstr "" +"Kann die Richtlinienänderungen nicht anwenden! Der verwendete Kerberos-" +"Server hat keine MAC-Adresse." + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +msgid "Remove" +msgstr "Entfernen" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:41 +msgid "Policy" +msgstr "Richtlinie" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:477 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Kerberos access information" +msgstr "Kerberos Zugangs-Information" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Services" +msgstr "Dienste" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#: admin/systems/services/kerberos/goKrbServer.tpl:19 +msgid "Policies" +msgstr "Richtlinien" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:235 +#, php-format +msgid "Cannot load principal '%s', from server '%s'!" +msgstr "Kann Principal '%s' nicht von Server '%s' beziehen!" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:291 +#, php-format +msgid "Cannot load principals from server '%s'!" +msgstr "Kann die Liste der Principals nicht von Server '%s' beziehen!" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:319 +#, php-format +msgid "Cannot load policies from server '%s'!" +msgstr "Kann die Liste der Richtlinien nicht von Server '%s' beziehen!" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:324 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:177 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:185 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:189 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:193 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:197 +msgid "none" +msgstr "keine" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:432 +msgid "Daemon based" +msgstr "Dienst basierend" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:591 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:57 +msgid "Ticket max life" +msgstr "Maximale Ticketlebensdauer" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:594 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:65 +msgid "Ticket max renew" +msgstr "Maximale Ticket-Erneuerbarkeit" + +#: admin/systems/services/kerberos/krb5_policy.tpl:1 +msgid "Policy settings" +msgstr "Richtlinien-Einstellungen" + +#: admin/systems/services/kerberos/krb5_policy.tpl:7 +#: admin/systems/services/kerberos/class_krb5_policy.inc:103 +#: admin/systems/services/kerberos/class_krb5_policy.inc:106 +#: admin/systems/services/kerberos/class_krb5_policy.inc:110 +msgid "Policy name" +msgstr "Richtlinien-Name" + +#: admin/systems/services/kerberos/krb5_policy.tpl:11 +#: admin/systems/services/kerberos/class_krb5_policy.inc:122 +#: admin/systems/services/kerberos/class_krb5_policy.inc:124 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Minimum password length" +msgstr "Minimale Passwortlänge" + +#: admin/systems/services/kerberos/krb5_policy.tpl:15 +#: admin/systems/services/kerberos/class_krb5_policy.inc:129 +#: admin/systems/services/kerberos/class_krb5_policy.inc:131 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Required different characters" +msgstr "Anzahl der unterschiedlichen Zeichen" + +#: admin/systems/services/kerberos/krb5_policy.tpl:19 +#: admin/systems/services/kerberos/class_krb5_policy.inc:115 +#: admin/systems/services/kerberos/class_krb5_policy.inc:117 +msgid "Password history size" +msgstr "Größe der Passwort-Historie" + +#: admin/systems/services/kerberos/krb5_policy.tpl:28 +#: admin/systems/services/kerberos/class_krb5_policy.inc:139 +#: admin/systems/services/kerberos/class_krb5_policy.inc:141 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Minimum password lifetime" +msgstr "Minimale Passwort-Lebenszeit" + +#: admin/systems/services/kerberos/krb5_policy.tpl:29 +#: admin/systems/services/kerberos/krb5_policy.tpl:33 +msgid "seconds" +msgstr "Sekunden" + +#: admin/systems/services/kerberos/krb5_policy.tpl:32 +#: admin/systems/services/kerberos/class_krb5_policy.inc:146 +#: admin/systems/services/kerberos/class_krb5_policy.inc:148 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Password lifetime" +msgstr "Passwort-Lebenszeit" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:73 +#, php-format +msgid "This policy is referenced %d times." +msgstr "Diese Richtlinie wird %d mal verwendet." + +#: admin/systems/services/kerberos/class_krb5_policy.inc:133 +#: admin/systems/services/kerberos/class_krb5_policy.inc:150 +#, php-format +msgid "" +"The value specified for '%s' must be smaller than the value specified for '%" +"s'!" +msgstr "Der für '%s' angegebene Wert muss kleiner als der für '%s' sein!" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:213 +msgid "updated to" +msgstr "aktualisiert nach" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +#, php-format +msgid "" +"The principal name of this system has changed. Do you want to update your " +"principals? The affected principals are listed below: %s" +msgstr "" +"Der Prinzipal-Name dieses Systems hat sich geändert. Soll er aktualisiert " +"werden? Die betroffenen Prinzipale:" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:239 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:240 +msgid "Create key" +msgstr "Schlüssel anlegen" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:246 +msgid "Recreate key" +msgstr "Schlüssel auffrischen" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:248 +msgid "Remove key" +msgstr "Schlüssel entfernen" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:287 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:317 +msgid "installed" +msgstr "installiert" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:457 +msgid "Kerberos key" +msgstr "Kerberos-Schlüssel" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:458 +msgid "Kerberos host key" +msgstr "Kerberos-Host-Schlüssel" + +#: admin/systems/services/kerberos/krb_host_keys.tpl:4 +msgid "Kerberos keys" +msgstr "Kerberos-Schlüssel" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Kerberos-Zugang via kadmin" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +msgid "Kerberos Realm" +msgstr "Kerberos Realm" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:4 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:21 +msgid "Kerberos options" +msgstr "Kerberos Einstellungen" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:8 +msgid "Retry" +msgstr "Wiederholen" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:14 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:243 +msgid "Cancel" +msgstr "Abbrechen" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:77 +msgid "infinite" +msgstr "unendlich" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:79 +msgid "Hour" +msgstr "Stunde" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:81 +msgid "Minute" +msgstr "Minute" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:83 +msgid "Day" +msgstr "Tag" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:85 +msgid "Month" +msgstr "Monat" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:87 +msgid "Year" +msgstr "Jahr" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:92 +msgid "Valid ticket end time" +msgstr "Gültigkeitsende des Tickets" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:132 +msgid "Password expires" +msgstr "Passwort läuft ab" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:173 +msgid "Status" +msgstr "Status" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:176 +msgid "Failed logins" +msgstr "Fehlgeschlagene Anmeldungen" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:180 +msgid "Key version number" +msgstr "Schlüssel Versionsnummer" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:184 +msgid "Last failed login" +msgstr "Letzte fehlgeschlagene Anmeldung" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:188 +msgid "Last password change" +msgstr "Letzte Passwortänderung" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:192 +msgid "Last successful login" +msgstr "Letzte erfolgreiche Anmeldung" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:196 +msgid "Last modification date" +msgstr "Letzte Änderung" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:209 +msgid "Prohibit issuance of service tickets" +msgstr "Ausgeben von Dienst-Tickets verbieten" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:211 +msgid "Prohibit forwardable tickets" +msgstr "Ticketweiterleitung verbieten" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:213 +msgid "Disallow proxiable tickets" +msgstr "Proxyable-Ticekts verbieten" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:215 +msgid "Prohibit renewable tickets" +msgstr "Erneuerbare Tickets verbieten" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:217 +msgid "Pohibit postdated tickets" +msgstr "Zurückdatierte Tickets verbieten" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:219 +msgid "Disallow Ticket-Granting Service" +msgstr "Ticket-Granting-Dienst verbieten" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:221 +msgid "Password change service" +msgstr "Passwort-Änderungs-Dienst" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:223 +msgid "Preauthentication required" +msgstr "Benötige Vor-Authentifizierung" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:225 +msgid "Force a password change" +msgstr "Erzwinge Passwortänderung" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:227 +msgid "Hardware preauthentication" +msgstr "Hardware-Vorauthentifizierung" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:229 +msgid "Disallow user to user authentification" +msgstr "Verbiete Benutzer-Benutzer-Authentifizierung" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:231 +msgid "Forbid ticket issuance" +msgstr "Ticketausgabe verbieten" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:241 +msgid "Save" +msgstr "Sichern" diff --git a/trunk/gosa-plugins/mit-krb5/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mit-krb5/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e4c8724d7 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,411 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "Servicio Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:359 +#: admin/systems/services/kerberos/class_goKrbServer.inc:368 +#: admin/systems/services/kerberos/class_goKrbServer.inc:372 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:236 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:292 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:320 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:382 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:397 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:673 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:343 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:376 +msgid "Service infrastructure" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:166 +msgid "Kerberos service (kadmin access informations)" +msgstr "Servicio Kerberos (información acceso kadmin)" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:179 +#: admin/systems/services/kerberos/class_goKrbServer.inc:395 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:25 +msgid "Realm" +msgstr "Dominio" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:182 +msgid "" +"Cannot apply policy changes! The defined kerberos server has no mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +msgid "Remove" +msgstr "Eliminar" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:41 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:477 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Kerberos access information" +msgstr "Acceso a información Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Services" +msgstr "Servicios" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#: admin/systems/services/kerberos/goKrbServer.tpl:19 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:235 +#, php-format +msgid "Cannot load principal '%s', from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:291 +#, php-format +msgid "Cannot load principals from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:319 +#, php-format +msgid "Cannot load policies from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:324 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:177 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:185 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:189 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:193 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:197 +msgid "none" +msgstr "ninguno" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:432 +msgid "Daemon based" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:591 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:57 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:594 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:65 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:1 +msgid "Policy settings" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:7 +#: admin/systems/services/kerberos/class_krb5_policy.inc:103 +#: admin/systems/services/kerberos/class_krb5_policy.inc:106 +#: admin/systems/services/kerberos/class_krb5_policy.inc:110 +msgid "Policy name" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:11 +#: admin/systems/services/kerberos/class_krb5_policy.inc:122 +#: admin/systems/services/kerberos/class_krb5_policy.inc:124 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Minimum password length" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:15 +#: admin/systems/services/kerberos/class_krb5_policy.inc:129 +#: admin/systems/services/kerberos/class_krb5_policy.inc:131 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Required different characters" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:19 +#: admin/systems/services/kerberos/class_krb5_policy.inc:115 +#: admin/systems/services/kerberos/class_krb5_policy.inc:117 +msgid "Password history size" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:28 +#: admin/systems/services/kerberos/class_krb5_policy.inc:139 +#: admin/systems/services/kerberos/class_krb5_policy.inc:141 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Minimum password lifetime" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:29 +#: admin/systems/services/kerberos/krb5_policy.tpl:33 +msgid "seconds" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:32 +#: admin/systems/services/kerberos/class_krb5_policy.inc:146 +#: admin/systems/services/kerberos/class_krb5_policy.inc:148 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +#, fuzzy +msgid "Password lifetime" +msgstr "Contraseña" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:73 +#, php-format +msgid "This policy is referenced %d times." +msgstr "" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:133 +#: admin/systems/services/kerberos/class_krb5_policy.inc:150 +#, php-format +msgid "" +"The value specified for '%s' must be smaller than the value specified for '%" +"s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:213 +msgid "updated to" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +#, php-format +msgid "" +"The principal name of this system has changed. Do you want to update your " +"principals? The affected principals are listed below: %s" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:239 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:240 +#, fuzzy +msgid "Create key" +msgstr "Crear" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:246 +msgid "Recreate key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:248 +#, fuzzy +msgid "Remove key" +msgstr "Eliminar" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:287 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:317 +msgid "installed" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:457 +#, fuzzy +msgid "Kerberos key" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:458 +#, fuzzy +msgid "Kerberos host key" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/krb_host_keys.tpl:4 +#, fuzzy +msgid "Kerberos keys" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realm" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:4 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:21 +#, fuzzy +msgid "Kerberos options" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:8 +msgid "Retry" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:14 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:243 +msgid "Cancel" +msgstr "Cancelar" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:77 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:79 +msgid "Hour" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:81 +#, fuzzy +msgid "Minute" +msgstr "Impresora" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:83 +#, fuzzy +msgid "Day" +msgstr "Mayo" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:85 +#, fuzzy +msgid "Month" +msgstr "mes" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:87 +msgid "Year" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:92 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:132 +#, fuzzy +msgid "Password expires" +msgstr "Contraseña" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:173 +msgid "Status" +msgstr "Estado" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:176 +msgid "Failed logins" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:180 +msgid "Key version number" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:184 +msgid "Last failed login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:188 +msgid "Last password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:192 +msgid "Last successful login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:196 +msgid "Last modification date" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:209 +msgid "Prohibit issuance of service tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:211 +msgid "Prohibit forwardable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:213 +msgid "Disallow proxiable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:215 +msgid "Prohibit renewable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:217 +msgid "Pohibit postdated tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:219 +msgid "Disallow Ticket-Granting Service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:221 +msgid "Password change service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:223 +msgid "Preauthentication required" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:225 +msgid "Force a password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:227 +msgid "Hardware preauthentication" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:229 +msgid "Disallow user to user authentification" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:231 +msgid "Forbid ticket issuance" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:241 +msgid "Save" +msgstr "Guardar" + +#, fuzzy +#~ msgid "Heimdal" +#~ msgstr "mujer" + +#, fuzzy +#~ msgid "Heimdal options" +#~ msgstr "mujer" + +#, fuzzy +#~ msgid "Password end" +#~ msgstr "Contraseña" + +#~ msgid "Admin user" +#~ msgstr "Usuario administrador" + +#~ msgid "Admin" +#~ msgstr "Administrador" + +#, fuzzy +#~ msgid "Valid password" +#~ msgstr "contraseña" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Por favor introduzca un valor numérico para TTL." + +#~ msgid "The specified kerberos password is empty." +#~ msgstr "No ha introducido ninguna contraseña kerberos." + +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "No ha introducido ningún administrador kerberos." + +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "No ha introducido ningún dominio kerberos." + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Eliminar extensión de entorno" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "No se puede subir la imagen a %s." diff --git a/trunk/gosa-plugins/mit-krb5/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mit-krb5/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b78cfbf55 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,359 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2008-12-03 23:12+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "Service Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:359 +#: admin/systems/services/kerberos/class_goKrbServer.inc:368 +#: admin/systems/services/kerberos/class_goKrbServer.inc:372 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:236 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:292 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:320 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:382 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:397 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:673 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:343 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:376 +msgid "Service infrastructure" +msgstr "Service d'infrastructure" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:166 +msgid "Kerberos service (kadmin access informations)" +msgstr "Service Kerberos ( accès information kadmin )" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:179 +#: admin/systems/services/kerberos/class_goKrbServer.inc:395 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:25 +msgid "Realm" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:182 +msgid "" +"Cannot apply policy changes! The defined kerberos server has no mac address." +msgstr "" +"Impossible d'appliquer les changement de polices de sécurité ! Le serveur " +"Kerberos défini n'a pas d'adresse MAC." + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +msgid "Remove" +msgstr "Enlever" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:41 +msgid "Policy" +msgstr "Polices de sécurité" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:477 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +msgid "Kerberos" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Kerberos access information" +msgstr "Information d'accès Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Services" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#: admin/systems/services/kerberos/goKrbServer.tpl:19 +msgid "Policies" +msgstr "polices de sécurité" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:235 +#, php-format +msgid "Cannot load principal '%s', from server '%s'!" +msgstr "Impossible de charger le principal '%s', depuis le serveur '%s' !" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:291 +#, php-format +msgid "Cannot load principals from server '%s'!" +msgstr "Impossible de charger le principal depuis '%s' !" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:319 +#, php-format +msgid "Cannot load policies from server '%s'!" +msgstr "Impossible de charger les polices de sécurité depuis '%s' !" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:324 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:177 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:185 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:189 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:193 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:197 +msgid "none" +msgstr "aucun" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:432 +msgid "Daemon based" +msgstr "Basé sur un service" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:591 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:57 +msgid "Ticket max life" +msgstr "Durée de vie maximum du ticket" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:594 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:65 +msgid "Ticket max renew" +msgstr "Durée de renouvellement maximum du ticket" + +#: admin/systems/services/kerberos/krb5_policy.tpl:1 +msgid "Policy settings" +msgstr "Paramètres de polices de sécurité" + +#: admin/systems/services/kerberos/krb5_policy.tpl:7 +#: admin/systems/services/kerberos/class_krb5_policy.inc:103 +#: admin/systems/services/kerberos/class_krb5_policy.inc:106 +#: admin/systems/services/kerberos/class_krb5_policy.inc:110 +msgid "Policy name" +msgstr "Nom de la police de sécurité" + +#: admin/systems/services/kerberos/krb5_policy.tpl:11 +#: admin/systems/services/kerberos/class_krb5_policy.inc:122 +#: admin/systems/services/kerberos/class_krb5_policy.inc:124 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Minimum password length" +msgstr "Taille minimum du mot de passe" + +#: admin/systems/services/kerberos/krb5_policy.tpl:15 +#: admin/systems/services/kerberos/class_krb5_policy.inc:129 +#: admin/systems/services/kerberos/class_krb5_policy.inc:131 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Required different characters" +msgstr "Necéssite des caractères différents" + +#: admin/systems/services/kerberos/krb5_policy.tpl:19 +#: admin/systems/services/kerberos/class_krb5_policy.inc:115 +#: admin/systems/services/kerberos/class_krb5_policy.inc:117 +msgid "Password history size" +msgstr "Historique des tailles de mot de passe" + +#: admin/systems/services/kerberos/krb5_policy.tpl:28 +#: admin/systems/services/kerberos/class_krb5_policy.inc:139 +#: admin/systems/services/kerberos/class_krb5_policy.inc:141 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Minimum password lifetime" +msgstr "Dureé de vie minimum du mot de passe" + +#: admin/systems/services/kerberos/krb5_policy.tpl:29 +#: admin/systems/services/kerberos/krb5_policy.tpl:33 +msgid "seconds" +msgstr "secondes" + +#: admin/systems/services/kerberos/krb5_policy.tpl:32 +#: admin/systems/services/kerberos/class_krb5_policy.inc:146 +#: admin/systems/services/kerberos/class_krb5_policy.inc:148 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Password lifetime" +msgstr "Durée de vie du mot de passe" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:73 +#, php-format +msgid "This policy is referenced %d times." +msgstr "Cette politique de sécurité est référencée %d fois." + +#: admin/systems/services/kerberos/class_krb5_policy.inc:133 +#: admin/systems/services/kerberos/class_krb5_policy.inc:150 +#, php-format +msgid "" +"The value specified for '%s' must be smaller than the value specified for '%" +"s'!" +msgstr "" +"La valeur spécifiée pour '%s' doit être plus petite que la valeur spécifiée " +"pour '%s' !" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:213 +msgid "updated to" +msgstr "mise à jour pour" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +#, php-format +msgid "" +"The principal name of this system has changed. Do you want to update your " +"principals? The affected principals are listed below: %s" +msgstr "" +"Le nom du principal à changé pour ce système. Voulez vous mettre à jour vos " +"principaux ? Les principaux affectés sont : %s" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:239 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:240 +msgid "Create key" +msgstr "Créer un clefs" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:246 +msgid "Recreate key" +msgstr "Récréer une clefs" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:248 +msgid "Remove key" +msgstr "Enlever un clefs" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:287 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:317 +msgid "installed" +msgstr "installé" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:457 +msgid "Kerberos key" +msgstr "Clé Kerberos" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:458 +msgid "Kerberos host key" +msgstr "Clé Kerberos de l'hôte" + +#: admin/systems/services/kerberos/krb_host_keys.tpl:4 +msgid "Kerberos keys" +msgstr "Clés Kerberos" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Accès kadmin Kerberos" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +msgid "Kerberos Realm" +msgstr "Realm Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:4 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:21 +msgid "Kerberos options" +msgstr "Options Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:8 +msgid "Retry" +msgstr "Réessayer" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:14 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:243 +msgid "Cancel" +msgstr "Annuler" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:77 +msgid "infinite" +msgstr "Infini" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:79 +msgid "Hour" +msgstr "Heure" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:81 +msgid "Minute" +msgstr "Minute" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:83 +msgid "Day" +msgstr "Jour" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:85 +msgid "Month" +msgstr "Mois" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:87 +msgid "Year" +msgstr "Année" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:92 +msgid "Valid ticket end time" +msgstr "Date de validité de fin pour le ticket" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:132 +msgid "Password expires" +msgstr "Expiration du mot de passe" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:173 +msgid "Status" +msgstr "Statut" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:176 +msgid "Failed logins" +msgstr "Connections échouées" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:180 +msgid "Key version number" +msgstr "Numéro de version de la clef" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:184 +msgid "Last failed login" +msgstr "Dernière connexion échouée" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:188 +msgid "Last password change" +msgstr "Dernier changement de mot de passe" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:192 +msgid "Last successful login" +msgstr "Dernière connexion réussie" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:196 +msgid "Last modification date" +msgstr "Dernière date de modification" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:209 +msgid "Prohibit issuance of service tickets" +msgstr "Interdire l'emission de tickets de services" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:211 +msgid "Prohibit forwardable tickets" +msgstr "Interdire les tickets transférables" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:213 +msgid "Disallow proxiable tickets" +msgstr "Interdire les tickets proxiables" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:215 +msgid "Prohibit renewable tickets" +msgstr "Interdire les tickets renouvelables" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:217 +msgid "Pohibit postdated tickets" +msgstr "Interdire les tickets ayant une date dans le futur" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:219 +msgid "Disallow Ticket-Granting Service" +msgstr "Service D'interdiction d'émission de ticket" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:221 +msgid "Password change service" +msgstr "Service de changement de mot de passe" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:223 +msgid "Preauthentication required" +msgstr "Pré authentification requise" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:225 +msgid "Force a password change" +msgstr "Forcer un changement de mot de passe" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:227 +msgid "Hardware preauthentication" +msgstr "Pré authentification hardware" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:229 +msgid "Disallow user to user authentification" +msgstr "Interdire l'authentification utilisateur à utilisateur" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:231 +msgid "Forbid ticket issuance" +msgstr "Interdire l'emission de tickets" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:241 +msgid "Save" +msgstr "Enregistrer" diff --git a/trunk/gosa-plugins/mit-krb5/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mit-krb5/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d7d305eb9 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,417 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +#, fuzzy +msgid "Kerberos service" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:359 +#: admin/systems/services/kerberos/class_goKrbServer.inc:368 +#: admin/systems/services/kerberos/class_goKrbServer.inc:372 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:236 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:292 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:320 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:382 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:397 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:673 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:343 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:376 +#, fuzzy +msgid "Service infrastructure" +msgstr "Seleziona per mostrare le applicazioni" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:166 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Informazioni personali" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:179 +#: admin/systems/services/kerberos/class_goKrbServer.inc:395 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:25 +#, fuzzy +msgid "Realm" +msgstr "Cognome" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:182 +msgid "" +"Cannot apply policy changes! The defined kerberos server has no mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:41 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:477 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +#, fuzzy +msgid "Kerberos access information" +msgstr "Informazioni personali" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Services" +msgstr "Servizi" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#: admin/systems/services/kerberos/goKrbServer.tpl:19 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:235 +#, php-format +msgid "Cannot load principal '%s', from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:291 +#, php-format +msgid "Cannot load principals from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:319 +#, php-format +msgid "Cannot load policies from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:324 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:177 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:185 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:189 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:193 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:197 +msgid "none" +msgstr "nessuno" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:432 +msgid "Daemon based" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:591 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:57 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:594 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:65 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:1 +msgid "Policy settings" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:7 +#: admin/systems/services/kerberos/class_krb5_policy.inc:103 +#: admin/systems/services/kerberos/class_krb5_policy.inc:106 +#: admin/systems/services/kerberos/class_krb5_policy.inc:110 +msgid "Policy name" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:11 +#: admin/systems/services/kerberos/class_krb5_policy.inc:122 +#: admin/systems/services/kerberos/class_krb5_policy.inc:124 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Minimum password length" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:15 +#: admin/systems/services/kerberos/class_krb5_policy.inc:129 +#: admin/systems/services/kerberos/class_krb5_policy.inc:131 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Required different characters" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:19 +#: admin/systems/services/kerberos/class_krb5_policy.inc:115 +#: admin/systems/services/kerberos/class_krb5_policy.inc:117 +msgid "Password history size" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:28 +#: admin/systems/services/kerberos/class_krb5_policy.inc:139 +#: admin/systems/services/kerberos/class_krb5_policy.inc:141 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Minimum password lifetime" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:29 +#: admin/systems/services/kerberos/krb5_policy.tpl:33 +msgid "seconds" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:32 +#: admin/systems/services/kerberos/class_krb5_policy.inc:146 +#: admin/systems/services/kerberos/class_krb5_policy.inc:148 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +#, fuzzy +msgid "Password lifetime" +msgstr "Password" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:73 +#, php-format +msgid "This policy is referenced %d times." +msgstr "" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:133 +#: admin/systems/services/kerberos/class_krb5_policy.inc:150 +#, php-format +msgid "" +"The value specified for '%s' must be smaller than the value specified for '%" +"s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:213 +msgid "updated to" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +#, php-format +msgid "" +"The principal name of this system has changed. Do you want to update your " +"principals? The affected principals are listed below: %s" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:239 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:240 +#, fuzzy +msgid "Create key" +msgstr "Creare" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:246 +msgid "Recreate key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:248 +#, fuzzy +msgid "Remove key" +msgstr "Rimuovi" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:287 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:317 +msgid "installed" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:457 +#, fuzzy +msgid "Kerberos key" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:458 +#, fuzzy +msgid "Kerberos host key" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/krb_host_keys.tpl:4 +#, fuzzy +msgid "Kerberos keys" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realm" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:4 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:21 +#, fuzzy +msgid "Kerberos options" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:8 +msgid "Retry" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:14 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:243 +msgid "Cancel" +msgstr "Annulla" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:77 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:79 +#, fuzzy +msgid "Hour" +msgstr "ora" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:81 +#, fuzzy +msgid "Minute" +msgstr "Stampante" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:83 +#, fuzzy +msgid "Day" +msgstr "giorno" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:85 +#, fuzzy +msgid "Month" +msgstr "mese" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:87 +#, fuzzy +msgid "Year" +msgstr "Cerca" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:92 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:132 +#, fuzzy +msgid "Password expires" +msgstr "Password" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:173 +msgid "Status" +msgstr "Stato" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:176 +msgid "Failed logins" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:180 +msgid "Key version number" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:184 +msgid "Last failed login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:188 +msgid "Last password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:192 +msgid "Last successful login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:196 +msgid "Last modification date" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:209 +msgid "Prohibit issuance of service tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:211 +msgid "Prohibit forwardable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:213 +msgid "Disallow proxiable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:215 +msgid "Prohibit renewable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:217 +msgid "Pohibit postdated tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:219 +msgid "Disallow Ticket-Granting Service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:221 +msgid "Password change service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:223 +msgid "Preauthentication required" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:225 +msgid "Force a password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:227 +msgid "Hardware preauthentication" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:229 +msgid "Disallow user to user authentification" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:231 +msgid "Forbid ticket issuance" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:241 +msgid "Save" +msgstr "Salva" + +#, fuzzy +#~ msgid "Heimdal" +#~ msgstr "Terminali" + +#, fuzzy +#~ msgid "Heimdal options" +#~ msgstr "Terminali" + +#, fuzzy +#~ msgid "Password end" +#~ msgstr "Password" + +#, fuzzy +#~ msgid "Admin" +#~ msgstr "DN dell'amministratore" + +#, fuzzy +#~ msgid "Valid password" +#~ msgstr "Password" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "The specified kerberos password is empty." +#~ msgstr "La password immessa come 'Nuova password' è vuota" + +#, fuzzy +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "La password immessa come 'Nuova password' è vuota" + +#, fuzzy +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "La password immessa come 'Nuova password' è vuota" + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Questa identità non ha le estensioni per la posta" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "Questa identità non ha le estensioni per la posta" diff --git a/trunk/gosa-plugins/mit-krb5/locale/messages.po b/trunk/gosa-plugins/mit-krb5/locale/messages.po new file mode 100644 index 000000000..9a0e72863 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/locale/messages.po @@ -0,0 +1,355 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:359 +#: admin/systems/services/kerberos/class_goKrbServer.inc:368 +#: admin/systems/services/kerberos/class_goKrbServer.inc:372 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:236 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:292 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:320 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:382 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:397 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:673 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:343 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:376 +msgid "Service infrastructure" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:166 +msgid "Kerberos service (kadmin access informations)" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:179 +#: admin/systems/services/kerberos/class_goKrbServer.inc:395 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:25 +msgid "Realm" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:182 +msgid "" +"Cannot apply policy changes! The defined kerberos server has no mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +msgid "Remove" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:41 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:477 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +msgid "Kerberos" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Kerberos access information" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Services" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#: admin/systems/services/kerberos/goKrbServer.tpl:19 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:235 +#, php-format +msgid "Cannot load principal '%s', from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:291 +#, php-format +msgid "Cannot load principals from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:319 +#, php-format +msgid "Cannot load policies from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:324 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:177 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:185 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:189 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:193 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:197 +msgid "none" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:432 +msgid "Daemon based" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:591 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:57 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:594 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:65 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:1 +msgid "Policy settings" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:7 +#: admin/systems/services/kerberos/class_krb5_policy.inc:103 +#: admin/systems/services/kerberos/class_krb5_policy.inc:106 +#: admin/systems/services/kerberos/class_krb5_policy.inc:110 +msgid "Policy name" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:11 +#: admin/systems/services/kerberos/class_krb5_policy.inc:122 +#: admin/systems/services/kerberos/class_krb5_policy.inc:124 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Minimum password length" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:15 +#: admin/systems/services/kerberos/class_krb5_policy.inc:129 +#: admin/systems/services/kerberos/class_krb5_policy.inc:131 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Required different characters" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:19 +#: admin/systems/services/kerberos/class_krb5_policy.inc:115 +#: admin/systems/services/kerberos/class_krb5_policy.inc:117 +msgid "Password history size" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:28 +#: admin/systems/services/kerberos/class_krb5_policy.inc:139 +#: admin/systems/services/kerberos/class_krb5_policy.inc:141 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Minimum password lifetime" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:29 +#: admin/systems/services/kerberos/krb5_policy.tpl:33 +msgid "seconds" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:32 +#: admin/systems/services/kerberos/class_krb5_policy.inc:146 +#: admin/systems/services/kerberos/class_krb5_policy.inc:148 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Password lifetime" +msgstr "" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:73 +#, php-format +msgid "This policy is referenced %d times." +msgstr "" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:133 +#: admin/systems/services/kerberos/class_krb5_policy.inc:150 +#, php-format +msgid "" +"The value specified for '%s' must be smaller than the value specified for '%" +"s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:213 +msgid "updated to" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +#, php-format +msgid "" +"The principal name of this system has changed. Do you want to update your " +"principals? The affected principals are listed below: %s" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:239 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:240 +msgid "Create key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:246 +msgid "Recreate key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:248 +msgid "Remove key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:287 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:317 +msgid "installed" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:457 +msgid "Kerberos key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:458 +msgid "Kerberos host key" +msgstr "" + +#: admin/systems/services/kerberos/krb_host_keys.tpl:4 +msgid "Kerberos keys" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +msgid "Kerberos Realm" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:4 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:21 +msgid "Kerberos options" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:8 +msgid "Retry" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:14 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:243 +msgid "Cancel" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:77 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:79 +msgid "Hour" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:81 +msgid "Minute" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:83 +msgid "Day" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:85 +msgid "Month" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:87 +msgid "Year" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:92 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:132 +msgid "Password expires" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:173 +msgid "Status" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:176 +msgid "Failed logins" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:180 +msgid "Key version number" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:184 +msgid "Last failed login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:188 +msgid "Last password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:192 +msgid "Last successful login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:196 +msgid "Last modification date" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:209 +msgid "Prohibit issuance of service tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:211 +msgid "Prohibit forwardable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:213 +msgid "Disallow proxiable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:215 +msgid "Prohibit renewable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:217 +msgid "Pohibit postdated tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:219 +msgid "Disallow Ticket-Granting Service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:221 +msgid "Password change service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:223 +msgid "Preauthentication required" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:225 +msgid "Force a password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:227 +msgid "Hardware preauthentication" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:229 +msgid "Disallow user to user authentification" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:231 +msgid "Forbid ticket issuance" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:241 +msgid "Save" +msgstr "" diff --git a/trunk/gosa-plugins/mit-krb5/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mit-krb5/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..7e9b0ee3f --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,423 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +#, fuzzy +msgid "Kerberos service" +msgstr "Kerberos server" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:359 +#: admin/systems/services/kerberos/class_goKrbServer.inc:368 +#: admin/systems/services/kerberos/class_goKrbServer.inc:372 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:236 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:292 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:320 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:382 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:397 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:673 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:343 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:376 +#, fuzzy +msgid "Service infrastructure" +msgstr "Zoek binnen subtree" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:166 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Kerberos kadmin toegang" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:179 +#: admin/systems/services/kerberos/class_goKrbServer.inc:395 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:25 +#, fuzzy +msgid "Realm" +msgstr "RAM" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:182 +msgid "" +"Cannot apply policy changes! The defined kerberos server has no mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:41 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:477 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +#, fuzzy +msgid "Kerberos access information" +msgstr "Kerberos kadmin toegang" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Services" +msgstr "Services" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#: admin/systems/services/kerberos/goKrbServer.tpl:19 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:235 +#, php-format +msgid "Cannot load principal '%s', from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:291 +#, php-format +msgid "Cannot load principals from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:319 +#, php-format +msgid "Cannot load policies from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:324 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:177 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:185 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:189 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:193 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:197 +msgid "none" +msgstr "geen" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:432 +msgid "Daemon based" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:591 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:57 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:594 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:65 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:1 +msgid "Policy settings" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:7 +#: admin/systems/services/kerberos/class_krb5_policy.inc:103 +#: admin/systems/services/kerberos/class_krb5_policy.inc:106 +#: admin/systems/services/kerberos/class_krb5_policy.inc:110 +msgid "Policy name" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:11 +#: admin/systems/services/kerberos/class_krb5_policy.inc:122 +#: admin/systems/services/kerberos/class_krb5_policy.inc:124 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Minimum password length" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:15 +#: admin/systems/services/kerberos/class_krb5_policy.inc:129 +#: admin/systems/services/kerberos/class_krb5_policy.inc:131 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Required different characters" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:19 +#: admin/systems/services/kerberos/class_krb5_policy.inc:115 +#: admin/systems/services/kerberos/class_krb5_policy.inc:117 +msgid "Password history size" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:28 +#: admin/systems/services/kerberos/class_krb5_policy.inc:139 +#: admin/systems/services/kerberos/class_krb5_policy.inc:141 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Minimum password lifetime" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:29 +#: admin/systems/services/kerberos/krb5_policy.tpl:33 +msgid "seconds" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:32 +#: admin/systems/services/kerberos/class_krb5_policy.inc:146 +#: admin/systems/services/kerberos/class_krb5_policy.inc:148 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +#, fuzzy +msgid "Password lifetime" +msgstr "Wachtwoord" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:73 +#, php-format +msgid "This policy is referenced %d times." +msgstr "" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:133 +#: admin/systems/services/kerberos/class_krb5_policy.inc:150 +#, php-format +msgid "" +"The value specified for '%s' must be smaller than the value specified for '%" +"s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:213 +msgid "updated to" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +#, php-format +msgid "" +"The principal name of this system has changed. Do you want to update your " +"principals? The affected principals are listed below: %s" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:239 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:240 +#, fuzzy +msgid "Create key" +msgstr "Aanmaken" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:246 +msgid "Recreate key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:248 +#, fuzzy +msgid "Remove key" +msgstr "Verwijderen" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:287 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:317 +msgid "installed" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:457 +#, fuzzy +msgid "Kerberos key" +msgstr "Kerberos Realm" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:458 +#, fuzzy +msgid "Kerberos host key" +msgstr "Kerberos Realm" + +#: admin/systems/services/kerberos/krb_host_keys.tpl:4 +#, fuzzy +msgid "Kerberos keys" +msgstr "Kerberos Realm" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Kerberos kadmin toegang" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realm" +msgstr "Kerberos Realm" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:4 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:21 +#, fuzzy +msgid "Kerberos options" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:8 +msgid "Retry" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:14 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:243 +msgid "Cancel" +msgstr "Annuleren" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:77 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:79 +#, fuzzy +msgid "Hour" +msgstr "uur" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:81 +#, fuzzy +msgid "Minute" +msgstr "Printer" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:83 +#, fuzzy +msgid "Day" +msgstr "dag" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:85 +#, fuzzy +msgid "Month" +msgstr "maand" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:87 +#, fuzzy +msgid "Year" +msgstr "Zoeken" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:92 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:132 +#, fuzzy +msgid "Password expires" +msgstr "Wachtwoord" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:173 +msgid "Status" +msgstr "Status" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:176 +msgid "Failed logins" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:180 +msgid "Key version number" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:184 +msgid "Last failed login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:188 +msgid "Last password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:192 +msgid "Last successful login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:196 +msgid "Last modification date" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:209 +msgid "Prohibit issuance of service tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:211 +msgid "Prohibit forwardable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:213 +msgid "Disallow proxiable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:215 +msgid "Prohibit renewable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:217 +msgid "Pohibit postdated tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:219 +msgid "Disallow Ticket-Granting Service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:221 +msgid "Password change service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:223 +msgid "Preauthentication required" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:225 +msgid "Force a password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:227 +msgid "Hardware preauthentication" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:229 +msgid "Disallow user to user authentification" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:231 +msgid "Forbid ticket issuance" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:241 +msgid "Save" +msgstr "Opslaan" + +#, fuzzy +#~ msgid "Heimdal" +#~ msgstr "Serieel" + +#, fuzzy +#~ msgid "Heimdal options" +#~ msgstr "Serieel" + +#, fuzzy +#~ msgid "Password end" +#~ msgstr "Wachtwoord" + +#~ msgid "Admin user" +#~ msgstr "Beheerder" + +#, fuzzy +#~ msgid "Admin" +#~ msgstr "Beheerders" + +#, fuzzy +#~ msgid "Valid password" +#~ msgstr "Oud wachtwoord" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Geef a.u.b. een nummerieke waarde op voor TTL." + +#~ msgid "The specified kerberos password is empty." +#~ msgstr "Het opgegeven kerberos wachtwoord is leeg." + +#, fuzzy +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "Het opgegeven kerberos wachtwoord is leeg." + +#, fuzzy +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "Het opgegeven kerberos wachtwoord is leeg." + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Verwijder omgevingsmogelijkheden" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "Dit account heeft E-mail mogelijkheden uitgeschakeld." diff --git a/trunk/gosa-plugins/mit-krb5/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mit-krb5/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e2893dc10 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,413 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +msgid "Kerberos service" +msgstr "Usługa Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:359 +#: admin/systems/services/kerberos/class_goKrbServer.inc:368 +#: admin/systems/services/kerberos/class_goKrbServer.inc:372 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:236 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:292 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:320 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:382 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:397 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:673 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:343 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:376 +#, fuzzy +msgid "Service infrastructure" +msgstr "Szukaj wewnątrz tego poddrzewa" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:166 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Informacje dostępowe Kerberos kadmin" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:179 +#: admin/systems/services/kerberos/class_goKrbServer.inc:395 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:25 +msgid "Realm" +msgstr "Dziedzina" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:182 +msgid "" +"Cannot apply policy changes! The defined kerberos server has no mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +msgid "Remove" +msgstr "Usuń" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:41 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:477 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +#, fuzzy +msgid "Kerberos access information" +msgstr "Informacje dostępowe Kerberos kadmin" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Services" +msgstr "Usługi" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#: admin/systems/services/kerberos/goKrbServer.tpl:19 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:235 +#, php-format +msgid "Cannot load principal '%s', from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:291 +#, php-format +msgid "Cannot load principals from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:319 +#, php-format +msgid "Cannot load policies from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:324 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:177 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:185 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:189 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:193 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:197 +msgid "none" +msgstr "żaden" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:432 +msgid "Daemon based" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:591 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:57 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:594 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:65 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:1 +msgid "Policy settings" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:7 +#: admin/systems/services/kerberos/class_krb5_policy.inc:103 +#: admin/systems/services/kerberos/class_krb5_policy.inc:106 +#: admin/systems/services/kerberos/class_krb5_policy.inc:110 +msgid "Policy name" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:11 +#: admin/systems/services/kerberos/class_krb5_policy.inc:122 +#: admin/systems/services/kerberos/class_krb5_policy.inc:124 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Minimum password length" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:15 +#: admin/systems/services/kerberos/class_krb5_policy.inc:129 +#: admin/systems/services/kerberos/class_krb5_policy.inc:131 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Required different characters" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:19 +#: admin/systems/services/kerberos/class_krb5_policy.inc:115 +#: admin/systems/services/kerberos/class_krb5_policy.inc:117 +msgid "Password history size" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:28 +#: admin/systems/services/kerberos/class_krb5_policy.inc:139 +#: admin/systems/services/kerberos/class_krb5_policy.inc:141 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Minimum password lifetime" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:29 +#: admin/systems/services/kerberos/krb5_policy.tpl:33 +msgid "seconds" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:32 +#: admin/systems/services/kerberos/class_krb5_policy.inc:146 +#: admin/systems/services/kerberos/class_krb5_policy.inc:148 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +#, fuzzy +msgid "Password lifetime" +msgstr "Hasło" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:73 +#, php-format +msgid "This policy is referenced %d times." +msgstr "" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:133 +#: admin/systems/services/kerberos/class_krb5_policy.inc:150 +#, php-format +msgid "" +"The value specified for '%s' must be smaller than the value specified for '%" +"s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:213 +msgid "updated to" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +#, php-format +msgid "" +"The principal name of this system has changed. Do you want to update your " +"principals? The affected principals are listed below: %s" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:239 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:240 +#, fuzzy +msgid "Create key" +msgstr "Utwórz" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:246 +msgid "Recreate key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:248 +#, fuzzy +msgid "Remove key" +msgstr "Usuń" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:287 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:317 +msgid "installed" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:457 +#, fuzzy +msgid "Kerberos key" +msgstr "Dziedzina Kerberos" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:458 +#, fuzzy +msgid "Kerberos host key" +msgstr "Dziedzina Kerberos" + +#: admin/systems/services/kerberos/krb_host_keys.tpl:4 +#, fuzzy +msgid "Kerberos keys" +msgstr "Dziedzina Kerberos" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Dostęp do Kerberos kadmin" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realm" +msgstr "Dziedzina Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:4 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:21 +#, fuzzy +msgid "Kerberos options" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:8 +msgid "Retry" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:14 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:243 +msgid "Cancel" +msgstr "Anuluj" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:77 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:79 +#, fuzzy +msgid "Hour" +msgstr "godzina" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:81 +#, fuzzy +msgid "Minute" +msgstr "Drukarka" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:83 +#, fuzzy +msgid "Day" +msgstr "dzień" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:85 +#, fuzzy +msgid "Month" +msgstr "miesiąc" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:87 +#, fuzzy +msgid "Year" +msgstr "Szukaj" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:92 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:132 +#, fuzzy +msgid "Password expires" +msgstr "Hasło" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:173 +msgid "Status" +msgstr "Status" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:176 +msgid "Failed logins" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:180 +msgid "Key version number" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:184 +msgid "Last failed login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:188 +msgid "Last password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:192 +msgid "Last successful login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:196 +msgid "Last modification date" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:209 +msgid "Prohibit issuance of service tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:211 +msgid "Prohibit forwardable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:213 +msgid "Disallow proxiable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:215 +msgid "Prohibit renewable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:217 +msgid "Pohibit postdated tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:219 +msgid "Disallow Ticket-Granting Service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:221 +msgid "Password change service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:223 +msgid "Preauthentication required" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:225 +msgid "Force a password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:227 +msgid "Hardware preauthentication" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:229 +msgid "Disallow user to user authentification" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:231 +msgid "Forbid ticket issuance" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:241 +msgid "Save" +msgstr "Zapisz" + +#, fuzzy +#~ msgid "Heimdal" +#~ msgstr "kobieta" + +#, fuzzy +#~ msgid "Heimdal options" +#~ msgstr "kobieta" + +#, fuzzy +#~ msgid "Password end" +#~ msgstr "Hasło" + +#~ msgid "Admin user" +#~ msgstr "Użytkownik administracyjny" + +#~ msgid "Admin" +#~ msgstr "Admin" + +#, fuzzy +#~ msgid "Valid password" +#~ msgstr "Stare hasło" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Proszę podać liczbę jako wartość dla ttl." + +#~ msgid "The specified kerberos password is empty." +#~ msgstr "Podane hasło kerberos jest puste." + +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "Podany administrator kerberos jest pusty." + +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "Podana dziedzina kerberos jest pusta." + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Usuń rozszerzenie środowiska" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "To konto nie posiada rozszerzeń pocztowych" diff --git a/trunk/gosa-plugins/mit-krb5/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mit-krb5/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b71e9e928 --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,420 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +#, fuzzy +msgid "Kerberos service" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:359 +#: admin/systems/services/kerberos/class_goKrbServer.inc:368 +#: admin/systems/services/kerberos/class_goKrbServer.inc:372 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:236 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:292 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:320 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:382 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:397 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:673 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:343 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:376 +#, fuzzy +msgid "Service infrastructure" +msgstr "Искать в поддеревьях" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:166 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Личная информация" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:179 +#: admin/systems/services/kerberos/class_goKrbServer.inc:395 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:25 +#, fuzzy +msgid "Realm" +msgstr "Имя сервера" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:182 +msgid "" +"Cannot apply policy changes! The defined kerberos server has no mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +msgid "Remove" +msgstr "Удалить" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:41 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:477 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +#, fuzzy +msgid "Kerberos access information" +msgstr "Личная информация" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Services" +msgstr "Сервисы" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#: admin/systems/services/kerberos/goKrbServer.tpl:19 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:235 +#, php-format +msgid "Cannot load principal '%s', from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:291 +#, php-format +msgid "Cannot load principals from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:319 +#, php-format +msgid "Cannot load policies from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:324 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:177 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:185 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:189 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:193 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:197 +msgid "none" +msgstr "нет" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:432 +msgid "Daemon based" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:591 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:57 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:594 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:65 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:1 +msgid "Policy settings" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:7 +#: admin/systems/services/kerberos/class_krb5_policy.inc:103 +#: admin/systems/services/kerberos/class_krb5_policy.inc:106 +#: admin/systems/services/kerberos/class_krb5_policy.inc:110 +msgid "Policy name" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:11 +#: admin/systems/services/kerberos/class_krb5_policy.inc:122 +#: admin/systems/services/kerberos/class_krb5_policy.inc:124 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Minimum password length" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:15 +#: admin/systems/services/kerberos/class_krb5_policy.inc:129 +#: admin/systems/services/kerberos/class_krb5_policy.inc:131 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Required different characters" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:19 +#: admin/systems/services/kerberos/class_krb5_policy.inc:115 +#: admin/systems/services/kerberos/class_krb5_policy.inc:117 +msgid "Password history size" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:28 +#: admin/systems/services/kerberos/class_krb5_policy.inc:139 +#: admin/systems/services/kerberos/class_krb5_policy.inc:141 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Minimum password lifetime" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:29 +#: admin/systems/services/kerberos/krb5_policy.tpl:33 +msgid "seconds" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:32 +#: admin/systems/services/kerberos/class_krb5_policy.inc:146 +#: admin/systems/services/kerberos/class_krb5_policy.inc:148 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +#, fuzzy +msgid "Password lifetime" +msgstr "Пароль" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:73 +#, php-format +msgid "This policy is referenced %d times." +msgstr "" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:133 +#: admin/systems/services/kerberos/class_krb5_policy.inc:150 +#, php-format +msgid "" +"The value specified for '%s' must be smaller than the value specified for '%" +"s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:213 +msgid "updated to" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +#, php-format +msgid "" +"The principal name of this system has changed. Do you want to update your " +"principals? The affected principals are listed below: %s" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:239 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:240 +#, fuzzy +msgid "Create key" +msgstr "Создать" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:246 +msgid "Recreate key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:248 +#, fuzzy +msgid "Remove key" +msgstr "Удалить" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:287 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:317 +msgid "installed" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:457 +#, fuzzy +msgid "Kerberos key" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:458 +#, fuzzy +msgid "Kerberos host key" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/krb_host_keys.tpl:4 +#, fuzzy +msgid "Kerberos keys" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realm" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:4 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:21 +#, fuzzy +msgid "Kerberos options" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:8 +msgid "Retry" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:14 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:243 +msgid "Cancel" +msgstr "Отмена" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:77 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:79 +#, fuzzy +msgid "Hour" +msgstr "час" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:81 +#, fuzzy +msgid "Minute" +msgstr "Принтер" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:83 +#, fuzzy +msgid "Day" +msgstr "день" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:85 +#, fuzzy +msgid "Month" +msgstr "месяц" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:87 +#, fuzzy +msgid "Year" +msgstr "Поиск" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:92 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:132 +#, fuzzy +msgid "Password expires" +msgstr "Пароль" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:173 +msgid "Status" +msgstr "Состояние" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:176 +msgid "Failed logins" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:180 +msgid "Key version number" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:184 +msgid "Last failed login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:188 +msgid "Last password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:192 +msgid "Last successful login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:196 +msgid "Last modification date" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:209 +msgid "Prohibit issuance of service tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:211 +msgid "Prohibit forwardable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:213 +msgid "Disallow proxiable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:215 +msgid "Prohibit renewable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:217 +msgid "Pohibit postdated tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:219 +msgid "Disallow Ticket-Granting Service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:221 +msgid "Password change service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:223 +msgid "Preauthentication required" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:225 +msgid "Force a password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:227 +msgid "Hardware preauthentication" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:229 +msgid "Disallow user to user authentification" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:231 +msgid "Forbid ticket issuance" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:241 +msgid "Save" +msgstr "Сохранить" + +#, fuzzy +#~ msgid "Heimdal" +#~ msgstr "Email" + +#, fuzzy +#~ msgid "Heimdal options" +#~ msgstr "Email" + +#, fuzzy +#~ msgid "Password end" +#~ msgstr "Пароль" + +#, fuzzy +#~ msgid "Admin user" +#~ msgstr "Пользователи домена" + +#, fuzzy +#~ msgid "Admin" +#~ msgstr "DN администратора" + +#, fuzzy +#~ msgid "Valid password" +#~ msgstr "Пароль" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "Укажите корректный номер телефона." + +#, fuzzy +#~ msgid "The specified kerberos password is empty." +#~ msgstr "Значение поля \"Файлы\" некорректно." + +#, fuzzy +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "Значение поля \"Файлы\" некорректно." + +#, fuzzy +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "Значение поля \"Файлы\" некорректно." + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "Удалить параметры" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "В этой учетной записи нет почтовых расширений." diff --git a/trunk/gosa-plugins/mit-krb5/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/mit-krb5/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f965cd40d --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,419 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:58 +#, fuzzy +msgid "Kerberos service" +msgstr "Kerberos 服务器" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:74 +#: admin/systems/services/kerberos/class_goKrbServer.inc:359 +#: admin/systems/services/kerberos/class_goKrbServer.inc:368 +#: admin/systems/services/kerberos/class_goKrbServer.inc:372 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:236 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:292 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:320 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:382 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:397 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:673 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:343 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:376 +#, fuzzy +msgid "Service infrastructure" +msgstr "在子树中查找" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:166 +#, fuzzy +msgid "Kerberos service (kadmin access informations)" +msgstr "Kerberos kadmin 访问" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:179 +#: admin/systems/services/kerberos/class_goKrbServer.inc:395 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:25 +#, fuzzy +msgid "Realm" +msgstr "Ram" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:182 +msgid "" +"Cannot apply policy changes! The defined kerberos server has no mac address." +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +msgid "Remove" +msgstr "删除" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:266 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:41 +msgid "Policy" +msgstr "" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:385 +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:477 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +msgid "Kerberos" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +#, fuzzy +msgid "Kerberos access information" +msgstr "个人信息" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:386 +msgid "Services" +msgstr "服务" + +#: admin/systems/services/kerberos/class_goKrbServer.inc:394 +#: admin/systems/services/kerberos/goKrbServer.tpl:19 +msgid "Policies" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:235 +#, php-format +msgid "Cannot load principal '%s', from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:291 +#, php-format +msgid "Cannot load principals from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:319 +#, php-format +msgid "Cannot load policies from server '%s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:324 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:177 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:185 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:189 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:193 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:197 +msgid "none" +msgstr "无" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:432 +msgid "Daemon based" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:591 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:57 +msgid "Ticket max life" +msgstr "" + +#: admin/systems/services/kerberos/class_password-methods-MIT.inc:594 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:65 +msgid "Ticket max renew" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:1 +msgid "Policy settings" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:7 +#: admin/systems/services/kerberos/class_krb5_policy.inc:103 +#: admin/systems/services/kerberos/class_krb5_policy.inc:106 +#: admin/systems/services/kerberos/class_krb5_policy.inc:110 +msgid "Policy name" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:11 +#: admin/systems/services/kerberos/class_krb5_policy.inc:122 +#: admin/systems/services/kerberos/class_krb5_policy.inc:124 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Minimum password length" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:15 +#: admin/systems/services/kerberos/class_krb5_policy.inc:129 +#: admin/systems/services/kerberos/class_krb5_policy.inc:131 +#: admin/systems/services/kerberos/class_krb5_policy.inc:134 +msgid "Required different characters" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:19 +#: admin/systems/services/kerberos/class_krb5_policy.inc:115 +#: admin/systems/services/kerberos/class_krb5_policy.inc:117 +msgid "Password history size" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:28 +#: admin/systems/services/kerberos/class_krb5_policy.inc:139 +#: admin/systems/services/kerberos/class_krb5_policy.inc:141 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +msgid "Minimum password lifetime" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:29 +#: admin/systems/services/kerberos/krb5_policy.tpl:33 +msgid "seconds" +msgstr "" + +#: admin/systems/services/kerberos/krb5_policy.tpl:32 +#: admin/systems/services/kerberos/class_krb5_policy.inc:146 +#: admin/systems/services/kerberos/class_krb5_policy.inc:148 +#: admin/systems/services/kerberos/class_krb5_policy.inc:151 +#, fuzzy +msgid "Password lifetime" +msgstr "口令" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:73 +#, php-format +msgid "This policy is referenced %d times." +msgstr "" + +#: admin/systems/services/kerberos/class_krb5_policy.inc:133 +#: admin/systems/services/kerberos/class_krb5_policy.inc:150 +#, php-format +msgid "" +"The value specified for '%s' must be smaller than the value specified for '%" +"s'!" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:213 +msgid "updated to" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:222 +#, php-format +msgid "" +"The principal name of this system has changed. Do you want to update your " +"principals? The affected principals are listed below: %s" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:239 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:240 +#, fuzzy +msgid "Create key" +msgstr "创建" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:246 +msgid "Recreate key" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:248 +#, fuzzy +msgid "Remove key" +msgstr "删除" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:287 +#: admin/systems/services/kerberos/class_krb_host_keys.inc:317 +msgid "installed" +msgstr "" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:457 +#, fuzzy +msgid "Kerberos key" +msgstr "Kerberos Realm" + +#: admin/systems/services/kerberos/class_krb_host_keys.inc:458 +#, fuzzy +msgid "Kerberos host key" +msgstr "Kerberos Realm" + +#: admin/systems/services/kerberos/krb_host_keys.tpl:4 +#, fuzzy +msgid "Kerberos keys" +msgstr "Kerberos Realm" + +#: admin/systems/services/kerberos/goKrbServer.tpl:1 +msgid "Kerberos kadmin access" +msgstr "Kerberos kadmin 访问" + +#: admin/systems/services/kerberos/goKrbServer.tpl:8 +#, fuzzy +msgid "Kerberos Realm" +msgstr "Kerberos Realm" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:4 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:21 +#, fuzzy +msgid "Kerberos options" +msgstr "Kerberos" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:8 +msgid "Retry" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:14 +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:243 +msgid "Cancel" +msgstr "取消" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:77 +msgid "infinite" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:79 +msgid "Hour" +msgstr "小时" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:81 +#, fuzzy +msgid "Minute" +msgstr "打印机" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:83 +#, fuzzy +msgid "Day" +msgstr "五月" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:85 +#, fuzzy +msgid "Month" +msgstr "月" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:87 +#, fuzzy +msgid "Year" +msgstr "查找" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:92 +msgid "Valid ticket end time" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:132 +#, fuzzy +msgid "Password expires" +msgstr "口令" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:173 +msgid "Status" +msgstr "状态" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:176 +msgid "Failed logins" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:180 +msgid "Key version number" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:184 +msgid "Last failed login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:188 +msgid "Last password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:192 +msgid "Last successful login" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:196 +msgid "Last modification date" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:209 +msgid "Prohibit issuance of service tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:211 +msgid "Prohibit forwardable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:213 +msgid "Disallow proxiable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:215 +msgid "Prohibit renewable tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:217 +msgid "Pohibit postdated tickets" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:219 +msgid "Disallow Ticket-Granting Service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:221 +msgid "Password change service" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:223 +msgid "Preauthentication required" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:225 +msgid "Force a password change" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:227 +msgid "Hardware preauthentication" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:229 +msgid "Disallow user to user authentification" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:231 +msgid "Forbid ticket issuance" +msgstr "" + +#: admin/systems/services/kerberos/pwd_kerberos_mit.tpl:241 +msgid "Save" +msgstr "保存" + +#, fuzzy +#~ msgid "Heimdal" +#~ msgstr "串行" + +#, fuzzy +#~ msgid "Heimdal options" +#~ msgstr "串行" + +#, fuzzy +#~ msgid "Password end" +#~ msgstr "口令" + +#~ msgid "Admin user" +#~ msgstr "管理员" + +#, fuzzy +#~ msgid "Admin" +#~ msgstr "管理员" + +#, fuzzy +#~ msgid "Valid password" +#~ msgstr "旧口令" + +#, fuzzy +#~ msgid "Please specify a numeric value for %s." +#~ msgstr "请为 ttl 提供一个数值。" + +#~ msgid "The specified kerberos password is empty." +#~ msgstr "提供的 kerberos 口令为空。" + +#, fuzzy +#~ msgid "The specified kerberos admin is empty." +#~ msgstr "提供的 kerberos 口令为空。" + +#, fuzzy +#~ msgid "The specified kerberos realm is empty." +#~ msgstr "提供的 kerberos 口令为空。" + +#, fuzzy +#~ msgid "Tried to remove heimdal extension." +#~ msgstr "删除环境变量扩展" + +#, fuzzy +#~ msgid "Could not add or update heimdal extensions." +#~ msgstr "这个账号没有邮件扩展。" diff --git a/trunk/gosa-plugins/mit-krb5/plugin.dsc b/trunk/gosa-plugins/mit-krb5/plugin.dsc new file mode 100644 index 000000000..3417d11bb --- /dev/null +++ b/trunk/gosa-plugins/mit-krb5/plugin.dsc @@ -0,0 +1,8 @@ +[gosa-plugin] +name = mit-krb5 +description = "MIT kerberos management plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +conflicts = heimdal +depends = systems diff --git a/trunk/gosa-plugins/nagios/README.nagios b/trunk/gosa-plugins/nagios/README.nagios new file mode 100644 index 000000000..5878e4059 --- /dev/null +++ b/trunk/gosa-plugins/nagios/README.nagios @@ -0,0 +1,20 @@ +To use the nagios plugin + +1) Add the nagios schema to your schema directory + +2) Remove the comment in front of nagiosAccount in gosa.conf + + + + + + +Benoit Mortier +Guillaume Delecourt +OpenSides October-November 2005 + + + diff --git a/trunk/gosa-plugins/nagios/contrib/goNagios.pl b/trunk/gosa-plugins/nagios/contrib/goNagios.pl new file mode 100755 index 000000000..754681dbc --- /dev/null +++ b/trunk/gosa-plugins/nagios/contrib/goNagios.pl @@ -0,0 +1,391 @@ +#!/usr/bin/perl -w + + +# Copyright (C) 2005 Guillaume Delecourt +# Copyright (C) 2005 Vincent Senave +# +# +# 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. +# +# + +use Net::LDAP; +use Getopt::Std; +use Net::LDAP::Schema; +use Net::LDAP::LDIF; +use Data::Dumper; +use MIME::Lite; +use Sys::Syslog; +use Switch; +use strict; + +# Variables a config + +my $admindef="admin"; + +my $cgi_file="cgi.cfg"; +my $contacts_file="contacts.cfg"; +my $contacts_groups_file="contactgroups.cfg"; + +my $TS_FILE='/tmp/gosa_timestamp'; +my %Options; +my $nb_user=0; +my $nb_groupe=0; + +my ($i,$file,$ldap,@nagiosmail, + $line,$text,$mesg,$entry,$userlist1,$userlist2,$userlist3,$userlist4, + $userlist5,$userlist6,$userlist7,$msg,@groupname,@groupmembers,@contactlias, + @groupdescription,@servicenotificationoptions,@servicenotificationperiod, + @hostnotificationoptions,@hostnotificationperiod,$stdout, + $usercontact,$members,@contactname,@nagiosalias,$j,@entries +); + +# Les parametres de connexion proviennent du fichier smbldap-bind.conf +my $gosa_bind_conf="/etc/gosa_bind.conf"; +my $gosa_ldap_conf="/etc/gosaldap.conf"; +my %config_bind = &read_conf($gosa_bind_conf); +my %config = &read_conf($gosa_ldap_conf); + +my $peopleou=$config{peopleou}; +my $groupeou=$config{groupeou}; +my $base=$config{base}; +my $scope=$config{scope};# par defaut +my $server=$config{server}; + +my $admin=$config_bind{masterDN}; +my $password=$config_bind{masterPw}; + + + $stdout.="\n\nSearch new Nagios attribute in user list\n"; + $stdout.="-"x55;$stdout.="\n"; + #my $ts = getTS; + +# $ldap = &anonBind; +# $mesg = $ldap->search( +# base => $LDAP_BASE, +# filter => "(&(modifyTimestamp>=$ts)(!(objectClass=gosaUserTemplate)))" +# ); + + # Put timestamp to file + #putTS; + + # Work if changes is present + #if($mesg->count > 0) + #{ + #$stdout.="Processing records modified after $ts\n\n"; + $ldap = Net::LDAP->new($server); + $mesg = $ldap->bind($admin,password=>$password) or syslog('error',$mesg->err) && print $mesg->code && die $mesg->error; + + + + #Partie pour l'objectClass NAgios Contact + $mesg = $ldap->search(filter=>"(&(objectClass~=nagiosContact))", base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + $i=0; + foreach $entry (@entries) { + $stdout.="\nContact $i : \nName\t\t\t";$contactname[$i]=$entry->get_value('uid');$stdout.=$contactname[$i]; + $stdout.="\n\n\tmail:\t\t\t\t";$nagiosmail[$i]=$entry->get_value('NagiosMail');$stdout.=$nagiosmail[$i]; + $stdout.="\n\talias:\t\t\t\t";$nagiosalias[$i]=$entry->get_value('NagiosAlias');$stdout.=$nagiosalias[$i]; + $stdout.="\n\tHostNotificationPeriod:\t\t";$hostnotificationperiod[$i]=$entry->get_value('HostNotificationPeriod');$stdout.=$hostnotificationperiod[$i]; + $stdout.="\n\tServiceNotificationPeriod:\t";$servicenotificationperiod[$i]=$entry->get_value('ServiceNotificationPeriod');$stdout.=$servicenotificationperiod[$i]; + $stdout.="\n\tHostNotificationOptions:\t";$hostnotificationoptions[$i]=$entry->get_value('HostNotificationOptions');$stdout.=$hostnotificationoptions[$i]; + $stdout.="\n\tServiceNotificationOptions:\t";$servicenotificationoptions[$i]=$entry->get_value('ServiceNotificationOptions');$stdout.=$servicenotificationoptions[$i]; + $stdout.="\n"." "x15;$stdout.="-"x20;$stdout.=" "x 15; + $usercontact.=$entry->get_value('uid')." ,"; + $i++; + } + $nb_user=$i; + + + #Partie pour l'objectClass NAgios Group + $mesg = $ldap->search(filter=>"(&(objectClass~=nagiosContactGroup))", base=>$groupeou,scope=>$scope); + @entries = $mesg->entries; + $i=0; + foreach $entry (@entries) { + $stdout.="\nGroupe $i : \nName\t\t";$groupname[$i]=$entry->get_value('cn');$stdout.=$groupname[$i]; + $stdout.="\n\n\talias:\t\t";$groupdescription[$i]=$entry->get_value('description');$stdout.=$groupdescription[$i]; + $stdout.="\n\tmembers:\t"; + $j=0; + foreach $members($entry->get_value('memberUid')) + { + $stdout.=$members." "; + $groupmembers[$i][$j]=$members; + $j++; + } + $stdout.="\n"." "x15;$stdout.="-"x20;$stdout.=" "x 15; + $i++; + } + $nb_groupe=$i; + + $userlist1.=$admindef; + + #Partie pour l'objectClass NagiosAuth + $stdout.="\n\n\n\n\nAuthorization for the different Information in Nagios\n"."-" x 53;$stdout.="\n"; + $mesg = $ldap->search(filter=>"(&(objectClass~=nagiosAuth)(AuthorizedSystemInformation~=checked))", base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + $stdout.="\nSystem infos :\t\t"; + foreach $entry (@entries) { + $stdout.= $entry->get_value('uid')."\t"; + $userlist1.=$entry->get_value('uid')." ,"; + } + $userlist1.=$admindef; + + $mesg = $ldap->search(filter=>"(&(objectClass~=nagiosAuth)(AuthorizedConfigurationInformation~=checked))", base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + $stdout.="\nConfiguration infos :\t"; + foreach $entry (@entries) { + $stdout.= $entry->get_value('uid')."\t"; + $userlist2.=$entry->get_value('uid')." , "; + } + $userlist2.=$admindef; + + $mesg = $ldap->search(filter=>"(&(objectClass~=nagiosAuth)(AuthorizedSystemCommands~=checked))", base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + $stdout.="\nSystem commands : \t"; + foreach $entry (@entries) { + $stdout.= $entry->get_value('uid')."\t"; + $userlist3.=$entry->get_value('uid')." , "; + } + $userlist3.=$admindef; + + $mesg = $ldap->search(filter=>"(&(objectClass~=nagiosAuth)(AuthorizedAllServices~=checked))", base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + $stdout.="\nAll services :\t\t"; + foreach $entry (@entries) { + $stdout.= $entry->get_value('uid')."\t"; + $userlist4.=$entry->get_value('uid')." ,"; + } + $userlist4.=$admindef; + + $mesg = $ldap->search(filter=>"(&(objectClass~=nagiosAuth)(AuthorizedAllHosts~=checked))", base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + $stdout.="\nAll hosts :\t\t"; + foreach $entry (@entries) { + $stdout.= $entry->get_value('uid')."\t"; + $userlist5.=$entry->get_value('uid').","; + } + $userlist5.=$admindef; + + + $mesg = $ldap->search(filter=>"(&(objectClass~=nagiosAuth)(AuthorizedAllServiceCommands~=checked))", base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + $stdout.="\nAll services commands :\t"; + foreach $entry (@entries) { + $stdout.= $entry->get_value('uid')."\t"; + $userlist6.=$entry->get_value('uid').","; + } + $userlist6.=$admindef; + + $mesg = $ldap->search(filter=>"(&(objectClass~=nagiosAuth)(AuthorizedAllHostCommands~=checked))",base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + $stdout.="\nAll host commands :\t"; + foreach $entry (@entries) { + $stdout.= $entry->get_value('uid')."\t"; + $userlist7.=$entry->get_value('uid').","; + } + $userlist7.=$admindef; + + + &modiffile_cgi($cgi_file); + &modiffile_contact($contacts_file); + &modiffile_group($contacts_groups_file); + + $ldap->unbind; + $stdout.="\n"; + switch($config{stdout}) + { + case "mail" {&mail()} + case "log" {&writelog()} + case "normal" {print $stdout} + } + exit(0); + +sub modiffile_contact() +{ + $file=$_[0]; + my $text=""; + open(FH,"$file") || die "Probleme d'ouverture du fichier $file"; + $stdout.="\n\n"; $stdout.=" "x10;$stdout.="-"x25;$stdout.=" "x10; + $stdout.="\n\n$nb_user utilisateur(s) ajouté(s) dans le fichier $file\n"; + for($i=0;$i<$nb_user;$i++) + { + $text.="\n\ndefine contact{\n"; + $text.="\n\tcontact_name \t\t\t".$contactname[$i]; + $text.="\n\talias \t\t\t\t".$nagiosalias[$i]; + $text.="\n\thost_notification_period \t".$hostnotificationperiod[$i]; + $text.="\n\thost_notification_options \t".$hostnotificationoptions[$i]; + $text.="\n\tservice_notification_period \t".$servicenotificationperiod[$i]; + $text.="\n\tservice_notification_options \t".$servicenotificationoptions[$i]; + $text.="\n\temail \t\t\t\t".$nagiosmail[$i]; + $text.="\n}\n\n"; + } + close(FH); + open(FH,"> $file") || die "Probleme d'ouverture du fichier $file"; + print FH "$text"; + close(FH); + +} + +sub modiffile_group() +{ + $file=$_[0]; + $text=""; + $j=0; + $i=0; + open(FH,"$file") || die "Probleme d'ouverture du fichier $file"; + $stdout.="\n\n"; $stdout.=" "x10;$stdout.="-"x25;$stdout.=" "x10; + $stdout.="\n\n$nb_groupe groupe(s) ajouté(s) dans le fichier $file\n"; + for($i=0;$i<$nb_groupe;$i++) + { + $text.="\n\ndefine contact{\n"; + $text.="\n\tcontactgroup_name \t".$groupname[$i]; + $text.="\n\talias \t\t\t".$groupdescription[$i]; + $text.="\n\tmembers \t\t"; + while(defined($groupmembers[$i][$j])) + { + $text.=$groupmembers[$i][$j]." "; + $j++; + } + $text.="\n}\n\n"; + } + + close(FH); + open(FH,"> $file") || die "Probleme d'ouverture du fichier $file"; + print FH "$text"; + close(FH); + +} + +sub modiffile_cgi() +{ + $file=$_[0]; + $text=""; + open(FH,"$file") || die "Probleme d'ouverture du fichier $file"; + while() + { + $line=$_; + #$stdout.="$line"; + if($line =~ /^authorized_for_system_information=*/i){$text.="authorized_for_system_information=".$userlist1} + elsif($line =~ /^authorized_for_configuration_information=*/i){$text.="authorized_for_configuration_information=".$userlist2} + elsif($line =~ /^authorized_for_system_commands=*/i){$text.="authorized_for_system_commands=".$userlist3} + elsif($line =~ /^authorized_for_all_services=*/i){$text.="authorized_for_all_services=".$userlist4."\n"} + elsif($line =~ /^authorized_for_all_hosts=*/i){$text.="authorized_for_all_hosts=".$userlist5} + elsif($line =~ /^authorized_for_all_service_commands=*/i){$text.="authorized_for_all_host_commands=".$userlist6."\n"} + elsif($line =~ /^authorized_for_all_host_commands=*/i){$text.="authorized_for_all_service_commands=".$userlist7} + else {$text.=$line}; + } + close(FH); + open(FH,"> $file") || die "Probleme d'ouverture du fichier $file"; + print FH "$text"; + close(FH); + +} + +sub read_conf() +{ + my %conf; + open (CONFIGFILE, "$_[0]") || die "Unable to open $_[0] for reading !\n"; + while () { + chomp($_); + ## throw away comments + next if ( /^\s*#/ || /^\s*$/ || /^\s*\;/); + ## check for a param = value + my ($parameter,$value)=read_parameter($_); + $value = &subst_configvar($value,\%conf); + $conf{$parameter}=$value; + } + close (CONFIGFILE); + return(%conf); +} + + + + +sub read_parameter +{ + my $line=shift; + ## check for a param = value + if ($_=~/=/) { + my ($param,$val); + if ($_=~/"/) { + #my ($param,$val) = ($_=~/(.*)\s*=\s*"(.*)"/); + ($param,$val) = /\s*(.*?)\s*=\s*"(.*)"/; + } elsif ($_=~/'/) { + ($param,$val) = /\s*(.*?)\s*=\s*'(.*)'/; + } else { + ($param,$val) = /\s*(.*?)\s*=\s*(.*)/; + } + return ($param,$val); + } +} + +sub subst_configvar +{ + my $value = shift; + my $vars = shift; + + $value =~ s/\$\{([^}]+)\}/$vars->{$1} ? $vars->{$1} : $1/eg; + return $value; +} + +sub mail +{ + +if($config{email}eq ""){$config{email}="root"} + +$msg = MIME::Lite->new( + From => 'monperl@opensides.be', + To => $config{email}, + Subject => "Plugin Nagios Gosa", + Data => $stdout + ); + + +$msg->send; +} + +sub writelog +{ + open(F, "> $config{logfile}"); + print F $stdout; + close(F); +} + +# Read timestamp +sub getTS +{ + open(F, "< $TS_FILE"); + my $ts = ; + chop $ts; + $ts ||= "19700101000000Z"; + return $ts; +} + +# save timestamp +sub putTS +{ + my $ts = `date -u '+%Y%m%d%H%M%SZ'`; + open(F, "> $TS_FILE"); + $stdout.= F $ts; +} + +#connexion anonyme +sub anonBind +{ + my $ldap = Net::LDAP->new( $server); + my $mesg = $ldap->bind(); + $mesg->code && die $mesg->error; + return $ldap; +} diff --git a/trunk/gosa-plugins/nagios/contrib/nagios.ldif b/trunk/gosa-plugins/nagios/contrib/nagios.ldif new file mode 100644 index 000000000..94a53b797 --- /dev/null +++ b/trunk/gosa-plugins/nagios/contrib/nagios.ldif @@ -0,0 +1,25 @@ +dn: cn=nagios,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: nagios +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.31 NAME 'NagiosMail' DESC 'short name used to identify the contact' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.32 NAME 'NagiosPager' DESC 'pager number for the contact' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.33 NAME 'NagiosAlias' DESC 'longer name or description for the contact' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.34 NAME 'ServiceNotificationPeriod' DESC 'time period during wich the contact can be notified' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.35 NAME 'HostNotificationPeriod' DESC 'time period during which the contact can be notified' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.36 NAME 'ServiceNotificationOptions' DESC 'define the service states for which notifications can be sent out' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.37 NAME 'HostNotificationOptions' DESC 'define the service states for which notifications can be sent out' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.38 NAME 'ServiceNotificationCommands' DESC 'commands used to notify the contact' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.39 NAME 'HostNotificationCommands' DESC 'commands used to notify the contact' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.40 NAME 'AuthorizedSystemInformation' DESC 'users who can view system/process information' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.41 NAME 'AuthorizedConfigurationInformation' DESC 'users who can view configuration information' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.42 NAME 'AuthorizedSystemCommands' DESC 'users who can issue system/process commands' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.43 NAME 'AuthorizedAllServices' DESC 'users who can view status and configuration information' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.44 NAME 'AuthorizedAllHosts' DESC 'users who can view status and configuration information' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.45 NAME 'AuthorizedAllServiceCommands' DESC 'users who can issue commands for all services' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.46 NAME 'AuthorizedAllHostCommands' DESC 'users who can issue commands for all hosts' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.47 NAME 'ContactGroupName' DESC 'name used to identify the contact group' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.48 NAME 'ContactGroupAlias' DESC 'description used to identify the contact group' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.1.49 NAME 'ContactGroupMembers' DESC 'a list of the short names of contacts' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcObjectClasses: ( 1.3.6.1.4.1.22262.1.1.1.1.1 NAME 'nagiosAuth' SUP top AUXILIARY DESC 'nagiosAuth' MAY ( AuthorizedSystemInformation $ AuthorizedConfigurationInformation $ AuthorizedSystemCommands $ AuthorizedAllServices $ AuthorizedAllHosts $ AuthorizedAllServiceCommands $ AuthorizedAllHostCommands ) ) +olcObjectClasses: ( 1.3.6.1.4.1.22262.1.1.1.1.4 NAME 'nagiosContact' SUP top AUXILIARY DESC 'Contact' MUST ( uid $ NagiosAlias $ ServiceNotificationPeriod $ HostNotificationPeriod $ ServiceNotificationOptions $ HostNotificationOptions ) MAY ( ServiceNotificationCommands $ HostNotificationCommands $ NagiosMail $ NagiosPager )) +olcObjectClasses: ( 1.3.6.1.4.1.22262.1.1.1.1.6 NAME 'nagiosContactGroup' SUP top AUXILIARY DESC 'ContactGroup' MAY ( ContactGroupName $ ContactGroupAlias $ ContactGroupMembers )) diff --git a/trunk/gosa-plugins/nagios/contrib/nagios.schema b/trunk/gosa-plugins/nagios/contrib/nagios.schema new file mode 100644 index 000000000..caa56afff --- /dev/null +++ b/trunk/gosa-plugins/nagios/contrib/nagios.schema @@ -0,0 +1,183 @@ +# +## schema file for OpenLDAP 2.x +## Schema for storing Nagios User Configuration in LDAP +## OIDs are owned by OpenSides +## +## number from 1 to 30 are for objectclasses +## attributeype start at 31 +# +# $Id: nagios.schema,v 1.5 2005/09/09 10:31:55 guiguidoc Exp $ +# +# nagios/contacts.cfg +# +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.31 NAME 'NagiosMail' + DESC 'short name used to identify the contact' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.32 NAME 'NagiosPager' + DESC 'pager number for the contact' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.33 NAME 'NagiosAlias' + DESC 'longer name or description for the contact' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.34 NAME 'ServiceNotificationPeriod' + DESC 'time period during wich the contact can be notified' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.35 NAME 'HostNotificationPeriod' + DESC 'time period during which the contact can be notified' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.36 NAME 'ServiceNotificationOptions' + DESC 'define the service states for which notifications can be sent out' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.37 NAME 'HostNotificationOptions' + DESC 'define the service states for which notifications can be sent out' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.38 NAME 'ServiceNotificationCommands' + DESC 'commands used to notify the contact' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.39 NAME 'HostNotificationCommands' + DESC 'commands used to notify the contact' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26) + +# +# nagios/cgi.cfg +# +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.40 NAME 'AuthorizedSystemInformation' + DESC 'users who can view system/process information' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.41 NAME 'AuthorizedConfigurationInformation' + DESC 'users who can view configuration information' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.42 NAME 'AuthorizedSystemCommands' + DESC 'users who can issue system/process commands' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.43 NAME 'AuthorizedAllServices' + DESC 'users who can view status and configuration information' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.44 NAME 'AuthorizedAllHosts' + DESC 'users who can view status and configuration information' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.45 NAME 'AuthorizedAllServiceCommands' + DESC 'users who can issue commands for all services' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.46 NAME 'AuthorizedAllHostCommands' + DESC 'users who can issue commands for all hosts' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +# +# nagios/contactgroups.cfg +# + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.47 NAME 'ContactGroupName' + DESC 'name used to identify the contact group' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.48 NAME 'ContactGroupAlias' + DESC 'description used to identify the contact group' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.1.49 NAME 'ContactGroupMembers' + DESC 'a list of the short names of contacts' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +# +# all objectclass +# + +objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.1 NAME 'nagiosAuth' SUP top AUXILIARY + DESC 'nagiosAuth' + MAY ( AuthorizedSystemInformation $ AuthorizedConfigurationInformation $ + AuthorizedSystemCommands $ AuthorizedAllServices $ AuthorizedAllHosts $ + AuthorizedAllServiceCommands $ AuthorizedAllHostCommands ) ) + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.2 NAME 'nagiosHost' SUP top AUXILIARY +# DESC 'Host' + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.3 NAME 'nagiosService' SUP top AUXILIARY +# DESC 'Service' + +objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.4 NAME 'nagiosContact' SUP top AUXILIARY + DESC 'Contact' + MUST ( uid $ NagiosAlias $ ServiceNotificationPeriod $ HostNotificationPeriod $ + ServiceNotificationOptions $ HostNotificationOptions ) + MAY ( ServiceNotificationCommands $ HostNotificationCommands $ NagiosMail $ NagiosPager )) + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.5 NAME 'nagiosHostGroup' SUP top AUXILIARY +# DESC 'HostGroup' + +objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.6 NAME 'nagiosContactGroup' SUP top AUXILIARY + DESC 'ContactGroup' + MAY ( ContactGroupName $ ContactGroupAlias $ ContactGroupMembers )) + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.7 NAME 'nagiosTimePeriod' SUP top AUXILIARY +# DESC 'TimePeriod' + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.8 NAME 'nagiosCommand' SUP top AUXILIARY +# DESC 'Command' + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.9 NAME 'nagiosServiceDependency' SUP top AUXILIARY +# DESC 'ServiceDependency' + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.10 NAME 'nagiosServiceEscalation' SUP top AUXILIARY +# DESC 'ServiceEscalation' + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.11 NAME 'nagiosHostDependency' SUP top AUXILIARY +# DESC 'HostDependency' + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.12 NAME 'nagiosHostEscalation' SUP top AUXILIARY +# DESC 'HostEscalation' + +#objectclass ( 1.3.6.1.4.1.22262.1.1.1.1.13 NAME 'nagiosHostGroupEscalation' SUP top AUXILIARY +# DESC 'HostGroupEscalation' + diff --git a/trunk/gosa-plugins/nagios/help/guide.xml b/trunk/gosa-plugins/nagios/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/nagios/html/images/plugin.png b/trunk/gosa-plugins/nagios/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..b636ff0e63d6eafa5864387d44848a632cf7561c GIT binary patch literal 4804 zcmV;#57MTC=~BHxfPPp&qS!$U+mRECu_eW{V#yLgQsm4~!&ykqaQ5!$eR=)fy|>QE zkNbKXQV@(FaRCQ)?z>gzRMlDQ+$Zd66Hol@Pd4{G@T(IKefGp)!-m{l>NmpwzvkPR z2y}YBdH3Bvy|Q`t+#f8Q|F17v)h%|97Jz}tCx(xI;-7!>!>6D4D=$1XB8Mj;d8W7v zsyL3gZVh*@NpJP=KHNXxclmkacRxE~I3NhPyH}OV+)~B=dVPf-zIy&Am%j7&|88&f z`kUJu&}>LfeBnR+?%(JZS^}l>$A>7>6th# zh&f)SNHP_Xz2omWNUzV|Yuv#d5ejd}CPpT&Tr&B0zkTMNGr#${PrH>@0K)!9fBmoi z@@K#F&%W^dJ|B#$GBV&YKHBuP^-Zm$DK5C6>WI|f?x^ncBIdY=>u|Ft2ZjsZHz?X3 z4AO3iw_E5)tCBnxUL?`VR7~9YK$=^URdo<|^T~mA9cUo!0eqklCCTX6g&P~~jXSUY zZ=kCOPyfBY@rfsg=$7tgiL$I%T3W&^kz8Ma}dfhI)GVzyAwHdqrQ=b7&e&s7)mN+^* zcyhQEyfS2QbI{6iiDXDOYa0#@0&b*j%My|sBH{^)S}`@aALB2G!k=+MfbEDM^gL7I7FdU~3hH*YbR z_jvNbCT6vUiwMKRLsTh&D8q5B&!;$)aL9_H zkY+R!>seV*(=@Cyv%*YDGb^lKN0rQ~Bvz)a^?B{>`b`}uE0>~jFOzExc$q}YgqF!Y zCDn2p%(s5eyrWfF>QJlU-+g6Wuih?Hz>gk1s>{pEIyX1x+HXO{zxV2f-dRN5%mJ0u z>GRm4shSdAB+-=6VtXB?rMZ`tX|HtIy@7~3MdgS(CPo0%1dWckAfm`Fmu(12tzvjZ zStUY@%uGi{+5rbrN<91Qvn(tuFflQ~){)H|jEuG;-8HCE!cwB_$35-yuzujdjbwm1 zRT5H_uu8CG*sdK!cPI*XQ5O}p3_*j5reKl;5f`-YA^L6t+{{(VqBIR9Rh8tvgDrE1 ze)?f!V`Geuk4s8vYp&dPFgHZFwp2+~l~z=NLLAxhbX)Yz%|yVGSaP!jsS>HG$}HU@ z0T(DL7fQD%NfSbJHFZ}MRNOr6@o}pOOEZ{fSJ=P9fDyJP;)GEf`h0d zXx~!$>vzG$DHFWcarUp?;?m_SeEQQbpknMkogJA8s!9lfg~e5hqM)ow*3%(Mcf@3e zhY5(|Zn%M&lPagI97|3r9ow~oxW1YA>ro;HMLG` z;^u%0N%qb`ph{v1OXgHXlB#k`W!kGk0^GP;$o$5d4UhD6a;(ANV6;4s>NvS3Pe7qV8s8V@BUzxxgb69lP+>IdylQKK-P{pz7|pyQ!*zaCdRp{`mXfS4#!& zUAbbb2S2YPBTy%8Vu)!|dIWWIM|&yKOVQk1t#Yb_Rb|pt_Eo5#TgELB2NlZ7xw~pC zbrZ+hb38Xa&(ZxtGY_~s%NvO^x0<}UdW0TLM2xGAPtctE9~>Kp3vZp{%6nIN?8HMH zI50_`=PWNT^Y+#2T)*-TSr+N6Z*aDEipA?K4zE|tOa#W_D))`7Fg7S;QE_)Vy~KM< zIagOk=#_y~IaNWeO1r(#Hs*Z?gYnUcclp%g0nsLoFgiR)w^t&v$!8u_9+|tqf4_2^ zRU5;#!CQ@Ap*Qy(4iB!QI6wXAtJ@J+RZvj`^hJBM_ffliH*?spPwb$Mq6dIFuY+o^fY`Cgr~|pv%ma@< zdcw}XbxB9tl|4OjS^sS1NklNkbhGs!S6UC)HQQ9N1h^4YQ?mh*8GT>rU?Z}i&m7*Q z(}_HG>a-0HHq^}7KN@VH8TH)R*Ew_coPF|zU(#k-^6>bq{p7uAEvvnrPV38@fCx|S zzeN@UQ`3hy@!)ZO?bp7@8*iNBb06Es!STF*4Kq$Y`~cm;xPPomTbH))YJ#H}9$Hv7 z)Q3StBSPABrxP9=xI!KSQ`3hT8*TznmWgLi4s!k7H~Ed<_$FWa^}oj9=}CG;;>c)0 z&N@XYdpCeUP&}x}ePgTU?soQSCO^D(!hZkTzh__l>R09W{@b@rL=1Pke7z_C=-=P5 z(UG>aa<%t^UOIo zo^j_|hq5d&AjUsm;Uzf~#SX9b@IbA`K%VC`8V%f?EDGbp%G|9^KYG{K)!mtyia=C6 z3oh4J+g6r^UB59aNS(?9l2Y1E>OrJen%$Y5m$gpM)|s@ZNEEjk^cUh;K<*U#`n={$ zRb_`h+qk<+udM9G%{#Wbz9IA7wz<`{ik%GrF;mGi{Oaa$-R$=C(!~qDy3y4Tg1Y;5 zPTy~S?#-WRRc`vNjUlb_am|8wjH)&KVmu4@oII@EUZIyRzNM=hT@NAD#P{;^b3c1a zyPIqJ)(!WiZd-Ae-RYJh5CddU=<0qhE$&0Tl$bxtt zMY4$9^e4#{&&UHK3--#(KjKW@kdfgLD~f`ZwN-*3YhAO8_MB+mwt&@UxkXl^$hMV* zI#$u3o7vrg4-r;h=J?>eyz=so>`dNZWOzi1qOdJqs~xkm8>b--NuHHf6-b|C ze**$p6v={EBZ|gMn9ZKC&CV@7sBbe|b*$UnRClMB0t+@}i}^`)9kAS8K`}4|6%AZ{ z>Fd^8dRL`(D&}q~`7jTD?q3_86lZ%pz{22jY!=sS(k|<8)uG$nG}j*D!M2M9nJk8;xwGh3|^yu?JPVv901(PZRh zg;at>p^SCfuvY>>Jc}ZE6w9KZeRYx;(R@O@zGe_HFc-&7Q1QM)+rm{r1wq96r6eh< z$`%&xQm)TSYkbl^#GZaM7V8n6yRbGp3Xq6<1SaQXqi6i(R+*?SaO?b^kO#8+A=6!W5JX^oV}pgoMHUwqSzTSlF`_zIChwb@ zsnCeR()HIFD}KfklPf$vvCP$=|Bu>orI{$?}HPA!JJpYFui|l%m(OPNxGPy70+nTB&QRq1IUba82!+qZ66 zGSjuSHBzx|Ss2%VfQyk-%P4#DmM9`*S#88w6pPW(=#m97!MSz&rl1YBbbgrF7!iUe)T>MMu_u3o>z@yDJg=oZa;=Ynco zz8oLh$B`pPFf$}j&xul(8{HxGGv9k{AZop+7$7QWP=XpWkA94UQ->HBZ1UdC8w`&f zAWFTEI-GA8;CA7OyDMGpUcJWh!X1`Z)@U||>cbIGy>~8%I0p_t!1Pqb(W6Hx%YyN# z8G<@dzygRV9%}EkJ9Uo$LGY+Z3~J@(DtV(Rnhn^g=fB9G{NVSc*@$-a`Ycn2A0UWH z5Vx%w>9!f}=(M!PA2eI)vOL$5B5T?4!!xwoZHekuyTCo;0p$M2K4P~oevifPe_tGI z;_wN?O`>9ny1-@ui@Nvf5#8NYkQl_4uDzyHLyO#gd)C@BFX-sRVLC&P+n@dTySlc# z$jl?pkcD7@ejxMui1?2F1dUnH+6%`SRO=L#(W<6r{2MJkDSKga7&N{eSDD)00V7 zdzq~--y&w2jLn=f!5C<^q;+V<`ZaJwMDS#6^|c1=#qm1lk=z#hXECyW z|CIRtDRZFQ?8v1nS8Qo`kXEZDmdvi+E@b)U%h#ctN2CnB_WQu zhyVC@Q?dHeQ%^m0O8`di`}D7#_{_ih&(A+HHgw|H0F7Kc1Q8KIv@U+{oYuAr`FU>W z&x_a3zVpsOy)I3fCDAIuUG*2eIWk01Q-Kl~RH zN1i=BH90oeYGqr0a@e)@|F_NWd2*mvBxdK9y0cebzH$52|L}wE(&d+c?*Vi7u1SGu zv~`-0-v=_p-c$MuYVKIsC3S8A?*JEo<*m2xJJhdy`OCqf31lDi{x6_;{Wlir0lja2 e^P77F^?v{grC~b4VZE~e0000, 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2008-04-03 16:12+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: personal/nagios/class_nagiosAccount.inc:18 +#: personal/nagios/class_nagiosAccount.inc:105 +#: personal/nagios/class_nagiosAccount.inc:114 +#: personal/nagios/class_nagiosAccount.inc:116 +#: personal/nagios/class_nagiosAccount.inc:273 +msgid "Nagios" +msgstr "Nagios" + +#: personal/nagios/class_nagiosAccount.inc:19 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/nagios/class_nagiosAccount.inc:173 +#: personal/nagios/class_nagiosAccount.inc:258 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/nagios/class_nagiosAccount.inc:194 +#: personal/nagios/class_nagiosAccount.inc:284 personal/nagios/nagios.tpl:8 +msgid "Alias" +msgstr "Alias" + +#: personal/nagios/class_nagiosAccount.inc:197 +#: personal/nagios/class_nagiosAccount.inc:201 +#: personal/nagios/class_nagiosAccount.inc:205 +msgid "Mail" +msgstr "Mail" + +#: personal/nagios/class_nagiosAccount.inc:274 +msgid "Nagios account settings" +msgstr "Nagios-Konto-Einstellungen" + +#: personal/nagios/class_nagiosAccount.inc:278 +msgid "My account" +msgstr "Mein Konto" + +#: personal/nagios/class_nagiosAccount.inc:285 personal/nagios/nagios.tpl:17 +msgid "Mail address" +msgstr "Mail-Adresse" + +#: personal/nagios/class_nagiosAccount.inc:286 personal/nagios/nagios.tpl:27 +msgid "Host notification period" +msgstr "Frequenz der Host-Meldungen" + +#: personal/nagios/class_nagiosAccount.inc:287 personal/nagios/nagios.tpl:40 +msgid "Service notification period" +msgstr "Frequenz der Dienst-Meldungen" + +#: personal/nagios/class_nagiosAccount.inc:288 personal/nagios/nagios.tpl:66 +msgid "Host notification options" +msgstr "Optionen der Host-Meldungen" + +#: personal/nagios/class_nagiosAccount.inc:289 personal/nagios/nagios.tpl:53 +msgid "Service notification options" +msgstr "Optionen der Dienst-Meldungen" + +#: personal/nagios/class_nagiosAccount.inc:290 +msgid "Pager number" +msgstr "Pagernummer" + +#: personal/nagios/class_nagiosAccount.inc:292 personal/nagios/nagios.tpl:90 +msgid "Service notification commands" +msgstr "Befehle für Dienst-Meldungen" + +#: personal/nagios/class_nagiosAccount.inc:293 personal/nagios/nagios.tpl:100 +msgid "Host notification commands" +msgstr "Befehle für Host-Meldungen" + +#: personal/nagios/class_nagiosAccount.inc:294 +msgid "View system informations" +msgstr "System-Informationen anzeigen" + +#: personal/nagios/class_nagiosAccount.inc:295 +msgid "View configuration information" +msgstr "Konfiguration anzeigen" + +#: personal/nagios/class_nagiosAccount.inc:296 +msgid "Trigger system commands" +msgstr "Auslösen aller System-Befehle" + +#: personal/nagios/class_nagiosAccount.inc:297 +msgid "View all services" +msgstr "Alle Dienste anzeigen" + +#: personal/nagios/class_nagiosAccount.inc:298 +msgid "View all hosts" +msgstr "Alle Systeme anzeigen" + +#: personal/nagios/class_nagiosAccount.inc:299 +msgid "Trigger all service commands" +msgstr "Auslösen aller Dienst-Befehle" + +#: personal/nagios/class_nagiosAccount.inc:300 +msgid "Trigger all host commands" +msgstr "Auslösen aller Host-Befehle" + +#: personal/nagios/nagios.tpl:5 +msgid "Nagios Account" +msgstr "Nagios-Konto" + +#: personal/nagios/nagios.tpl:79 +msgid "Pager" +msgstr "Pager" + +#: personal/nagios/nagios.tpl:115 +msgid "Nagios authentification" +msgstr "Nagios Authentifikation" + +#: personal/nagios/nagios.tpl:121 +msgid "view system informations" +msgstr "System-Informationen anzeigen" + +#: personal/nagios/nagios.tpl:130 +msgid "view configuration information" +msgstr "Konfiguration anzeigen" + +#: personal/nagios/nagios.tpl:139 +msgid "trigger system commands" +msgstr "Alle System-Befehle ausführen" + +#: personal/nagios/nagios.tpl:148 +msgid "view all services" +msgstr "Alle Dienste anzeigen" + +#: personal/nagios/nagios.tpl:157 +msgid "view all hosts" +msgstr "Alle Systeme anzeigen" + +#: personal/nagios/nagios.tpl:166 +msgid "trigger all service commands" +msgstr "Alle Dienst-Befehle ausführen" + +#: personal/nagios/nagios.tpl:175 +msgid "trigger all host commands" +msgstr "Alle Host-Befehle ausführen" + +#: personal/nagios/main.inc:136 +msgid "Nagios settings" +msgstr "Nagios-Einstellungen" diff --git a/trunk/gosa-plugins/nagios/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/nagios/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..14cf8650b --- /dev/null +++ b/trunk/gosa-plugins/nagios/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,214 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/nagios/class_nagiosAccount.inc:18 +#: personal/nagios/class_nagiosAccount.inc:105 +#: personal/nagios/class_nagiosAccount.inc:114 +#: personal/nagios/class_nagiosAccount.inc:116 +#: personal/nagios/class_nagiosAccount.inc:273 +msgid "Nagios" +msgstr "Nagios" + +#: personal/nagios/class_nagiosAccount.inc:19 +msgid "This does something" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:173 +#: personal/nagios/class_nagiosAccount.inc:258 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/nagios/class_nagiosAccount.inc:194 +#: personal/nagios/class_nagiosAccount.inc:284 personal/nagios/nagios.tpl:8 +msgid "Alias" +msgstr "Alias" + +#: personal/nagios/class_nagiosAccount.inc:197 +#: personal/nagios/class_nagiosAccount.inc:201 +#: personal/nagios/class_nagiosAccount.inc:205 +msgid "Mail" +msgstr "Correo Electrónico" + +#: personal/nagios/class_nagiosAccount.inc:274 +msgid "Nagios account settings" +msgstr "Parámetros de cuenta Nagios" + +#: personal/nagios/class_nagiosAccount.inc:278 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/nagios/class_nagiosAccount.inc:285 personal/nagios/nagios.tpl:17 +msgid "Mail address" +msgstr "Dirección correo electrónico" + +#: personal/nagios/class_nagiosAccount.inc:286 personal/nagios/nagios.tpl:27 +msgid "Host notification period" +msgstr "Periodo de Notificación de máquina" + +#: personal/nagios/class_nagiosAccount.inc:287 personal/nagios/nagios.tpl:40 +msgid "Service notification period" +msgstr "Periodo de Notificación de Servicio" + +#: personal/nagios/class_nagiosAccount.inc:288 personal/nagios/nagios.tpl:66 +msgid "Host notification options" +msgstr "Opciones de Notificación de máquina" + +#: personal/nagios/class_nagiosAccount.inc:289 personal/nagios/nagios.tpl:53 +msgid "Service notification options" +msgstr "Opciones de Notificación de Servicio" + +#: personal/nagios/class_nagiosAccount.inc:290 +msgid "Pager number" +msgstr "Número del busca" + +#: personal/nagios/class_nagiosAccount.inc:292 personal/nagios/nagios.tpl:90 +msgid "Service notification commands" +msgstr "Comandos de Notificación de Servicio" + +#: personal/nagios/class_nagiosAccount.inc:293 personal/nagios/nagios.tpl:100 +msgid "Host notification commands" +msgstr "Comandos de Notificación de máquina" + +#: personal/nagios/class_nagiosAccount.inc:294 +msgid "View system informations" +msgstr "Ver la información de sistemas" + +#: personal/nagios/class_nagiosAccount.inc:295 +msgid "View configuration information" +msgstr "Ver la información de configuración" + +#: personal/nagios/class_nagiosAccount.inc:296 +msgid "Trigger system commands" +msgstr "Activar comandos de sistema" + +#: personal/nagios/class_nagiosAccount.inc:297 +msgid "View all services" +msgstr "Ver todos los servicios" + +#: personal/nagios/class_nagiosAccount.inc:298 +msgid "View all hosts" +msgstr "Ver todas las máquinas" + +#: personal/nagios/class_nagiosAccount.inc:299 +msgid "Trigger all service commands" +msgstr "Activar todos los comandos de servicio" + +#: personal/nagios/class_nagiosAccount.inc:300 +msgid "Trigger all host commands" +msgstr "Activar todos los comandos de máquina" + +#: personal/nagios/nagios.tpl:5 +msgid "Nagios Account" +msgstr "" + +#: personal/nagios/nagios.tpl:79 +msgid "Pager" +msgstr "Buscapersonas" + +#: personal/nagios/nagios.tpl:115 +msgid "Nagios authentification" +msgstr "" + +#: personal/nagios/nagios.tpl:121 +msgid "view system informations" +msgstr "" + +#: personal/nagios/nagios.tpl:130 +msgid "view configuration information" +msgstr "" + +#: personal/nagios/nagios.tpl:139 +msgid "trigger system commands" +msgstr "" + +#: personal/nagios/nagios.tpl:148 +msgid "view all services" +msgstr "" + +#: personal/nagios/nagios.tpl:157 +msgid "view all hosts" +msgstr "" + +#: personal/nagios/nagios.tpl:166 +msgid "trigger all service commands" +msgstr "" + +#: personal/nagios/nagios.tpl:175 +msgid "trigger all host commands" +msgstr "" + +#: personal/nagios/main.inc:136 +msgid "Nagios settings" +msgstr "Parámetros de Nagios" + +#~ msgid "This account has no nagios extensions." +#~ msgstr "Esta cuenta no tiene extensión nagios." + +#~ msgid "Remove nagios account" +#~ msgstr "Eliminar cuenta Nagios" + +#~ msgid "" +#~ "This account has nagios features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Esta cuenta tiene la extensión Nagios activa. Puede desactivarla pulsando " +#~ "a continuación." + +#~ msgid "Create nagios account" +#~ msgstr "Crear cuenta Nagios" + +#~ msgid "" +#~ "This account has nagios features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Esta cuenta tiene la extensión Nagios desactivada.Puede activarla " +#~ "pulsando aqui." + +#~ msgid "Saving of user/nagios account with dn '%s' failed." +#~ msgstr "Ha fallado al grabar la cuenta de usuario/Nagios con dn '%s'." + +#~ msgid "The required field 'NagiosAlias' is not set." +#~ msgstr "" +#~ "No se ha asignado ningún valor al campo requerido 'Alias de Nagios'." + +#~ msgid "The required field 'NagiosMail' is not set." +#~ msgstr "" +#~ "No se ha asignado ningún valor al campo requerido 'Correo de Nagios'." + +#~ msgid "Please enter a valid email address in 'NagiosMail' field." +#~ msgstr "" +#~ "Por favor introduzca una dirección válida de correo electrónico en el " +#~ "campo 'Cuenta Nagios'." + +#~ msgid "Removing of user/nagios account with dn '%s' failed." +#~ msgstr "Ha fallado al eliminar la cuenta Nagios con dn '%s'." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Pulse en el botón - Editar - para cambiar la información en esta ventana" + +#~ msgid "Edit" +#~ msgstr "Editar" diff --git a/trunk/gosa-plugins/nagios/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/nagios/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..939ab2057 --- /dev/null +++ b/trunk/gosa-plugins/nagios/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,155 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2008-06-08 15:33+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/nagios/class_nagiosAccount.inc:18 +#: personal/nagios/class_nagiosAccount.inc:105 +#: personal/nagios/class_nagiosAccount.inc:114 +#: personal/nagios/class_nagiosAccount.inc:116 +#: personal/nagios/class_nagiosAccount.inc:273 +msgid "Nagios" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:19 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/nagios/class_nagiosAccount.inc:173 +#: personal/nagios/class_nagiosAccount.inc:258 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/nagios/class_nagiosAccount.inc:194 +#: personal/nagios/class_nagiosAccount.inc:284 personal/nagios/nagios.tpl:8 +msgid "Alias" +msgstr "Alias de l'utilisateur" + +#: personal/nagios/class_nagiosAccount.inc:197 +#: personal/nagios/class_nagiosAccount.inc:201 +#: personal/nagios/class_nagiosAccount.inc:205 +msgid "Mail" +msgstr "Adresse de messagerie" + +#: personal/nagios/class_nagiosAccount.inc:274 +msgid "Nagios account settings" +msgstr "Paramètres Nagios" + +#: personal/nagios/class_nagiosAccount.inc:278 +msgid "My account" +msgstr "Mon Compte" + +#: personal/nagios/class_nagiosAccount.inc:285 personal/nagios/nagios.tpl:17 +msgid "Mail address" +msgstr "Adresse de messagerie" + +#: personal/nagios/class_nagiosAccount.inc:286 personal/nagios/nagios.tpl:27 +msgid "Host notification period" +msgstr "Période de notification pour les systèmes" + +#: personal/nagios/class_nagiosAccount.inc:287 personal/nagios/nagios.tpl:40 +msgid "Service notification period" +msgstr "Période de notification pour les services" + +#: personal/nagios/class_nagiosAccount.inc:288 personal/nagios/nagios.tpl:66 +msgid "Host notification options" +msgstr "Options pour la notification des systèmes" + +#: personal/nagios/class_nagiosAccount.inc:289 personal/nagios/nagios.tpl:53 +msgid "Service notification options" +msgstr "Options pour la période de notification pour les services" + +#: personal/nagios/class_nagiosAccount.inc:290 +msgid "Pager number" +msgstr "Numéro de bip" + +#: personal/nagios/class_nagiosAccount.inc:292 personal/nagios/nagios.tpl:90 +msgid "Service notification commands" +msgstr "Commandes pour la notification des services" + +#: personal/nagios/class_nagiosAccount.inc:293 personal/nagios/nagios.tpl:100 +msgid "Host notification commands" +msgstr "Commandes pour la notification des systèmes" + +#: personal/nagios/class_nagiosAccount.inc:294 +msgid "View system informations" +msgstr "Voir les informations sur le système" + +#: personal/nagios/class_nagiosAccount.inc:295 +msgid "View configuration information" +msgstr "Voir les informations de configuration" + +#: personal/nagios/class_nagiosAccount.inc:296 +msgid "Trigger system commands" +msgstr "Permettre les commandes systèmes" + +#: personal/nagios/class_nagiosAccount.inc:297 +msgid "View all services" +msgstr "Voir tout les services" + +#: personal/nagios/class_nagiosAccount.inc:298 +msgid "View all hosts" +msgstr "Voir tout les hôtes" + +#: personal/nagios/class_nagiosAccount.inc:299 +msgid "Trigger all service commands" +msgstr "Permettre les commandes sur tout les services" + +#: personal/nagios/class_nagiosAccount.inc:300 +msgid "Trigger all host commands" +msgstr "Permettre les commandes sur tout les hôtes" + +#: personal/nagios/nagios.tpl:5 +msgid "Nagios Account" +msgstr "Compte Nagios" + +#: personal/nagios/nagios.tpl:79 +msgid "Pager" +msgstr "Bip" + +#: personal/nagios/nagios.tpl:115 +msgid "Nagios authentification" +msgstr "Authentification nagios" + +#: personal/nagios/nagios.tpl:121 +msgid "view system informations" +msgstr "voir les informations sur le système" + +#: personal/nagios/nagios.tpl:130 +msgid "view configuration information" +msgstr "voir les informations de configuration" + +#: personal/nagios/nagios.tpl:139 +msgid "trigger system commands" +msgstr "Permettre les commandes systèmes" + +#: personal/nagios/nagios.tpl:148 +msgid "view all services" +msgstr "Voir tout les services" + +#: personal/nagios/nagios.tpl:157 +msgid "view all hosts" +msgstr "Voir tout les hôtes" + +#: personal/nagios/nagios.tpl:166 +msgid "trigger all service commands" +msgstr "Permettre les commandes sur tout les services" + +#: personal/nagios/nagios.tpl:175 +msgid "trigger all host commands" +msgstr "permettre les commandes sur tout les hôtes" + +#: personal/nagios/main.inc:136 +msgid "Nagios settings" +msgstr "Paramètres Nagios" diff --git a/trunk/gosa-plugins/nagios/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/nagios/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..c3cd48f0d --- /dev/null +++ b/trunk/gosa-plugins/nagios/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,231 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/nagios/class_nagiosAccount.inc:18 +#: personal/nagios/class_nagiosAccount.inc:105 +#: personal/nagios/class_nagiosAccount.inc:114 +#: personal/nagios/class_nagiosAccount.inc:116 +#: personal/nagios/class_nagiosAccount.inc:273 +msgid "Nagios" +msgstr "Nagios" + +#: personal/nagios/class_nagiosAccount.inc:19 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/nagios/class_nagiosAccount.inc:173 +#: personal/nagios/class_nagiosAccount.inc:258 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/nagios/class_nagiosAccount.inc:194 +#: personal/nagios/class_nagiosAccount.inc:284 personal/nagios/nagios.tpl:8 +#, fuzzy +msgid "Alias" +msgstr "Italiano" + +#: personal/nagios/class_nagiosAccount.inc:197 +#: personal/nagios/class_nagiosAccount.inc:201 +#: personal/nagios/class_nagiosAccount.inc:205 +msgid "Mail" +msgstr "Posta" + +#: personal/nagios/class_nagiosAccount.inc:274 +#, fuzzy +msgid "Nagios account settings" +msgstr "Opzioni di posta dell'identità" + +#: personal/nagios/class_nagiosAccount.inc:278 +msgid "My account" +msgstr "Identità" + +#: personal/nagios/class_nagiosAccount.inc:285 personal/nagios/nagios.tpl:17 +msgid "Mail address" +msgstr "Indirizzo principale" + +#: personal/nagios/class_nagiosAccount.inc:286 personal/nagios/nagios.tpl:27 +#, fuzzy +msgid "Host notification period" +msgstr "Opzioni applicazione" + +#: personal/nagios/class_nagiosAccount.inc:287 personal/nagios/nagios.tpl:40 +#, fuzzy +msgid "Service notification period" +msgstr "Opzioni applicazione" + +#: personal/nagios/class_nagiosAccount.inc:288 personal/nagios/nagios.tpl:66 +#, fuzzy +msgid "Host notification options" +msgstr "Opzioni applicazione" + +#: personal/nagios/class_nagiosAccount.inc:289 personal/nagios/nagios.tpl:53 +#, fuzzy +msgid "Service notification options" +msgstr "Opzioni applicazione" + +#: personal/nagios/class_nagiosAccount.inc:290 +#, fuzzy +msgid "Pager number" +msgstr "Numero di telefono" + +#: personal/nagios/class_nagiosAccount.inc:292 personal/nagios/nagios.tpl:90 +#, fuzzy +msgid "Service notification commands" +msgstr "Opzioni applicazione" + +#: personal/nagios/class_nagiosAccount.inc:293 personal/nagios/nagios.tpl:100 +#, fuzzy +msgid "Host notification commands" +msgstr "Opzioni applicazione" + +#: personal/nagios/class_nagiosAccount.inc:294 +#, fuzzy +msgid "View system informations" +msgstr "Informazioni organizzazione" + +#: personal/nagios/class_nagiosAccount.inc:295 +#, fuzzy +msgid "View configuration information" +msgstr "Informazioni organizzazione" + +#: personal/nagios/class_nagiosAccount.inc:296 +#, fuzzy +msgid "Trigger system commands" +msgstr "Informazioni organizzazione" + +#: personal/nagios/class_nagiosAccount.inc:297 +#, fuzzy +msgid "View all services" +msgstr "Dispositivi del client" + +#: personal/nagios/class_nagiosAccount.inc:298 +msgid "View all hosts" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:299 +#, fuzzy +msgid "Trigger all service commands" +msgstr "Dispositivi del client" + +#: personal/nagios/class_nagiosAccount.inc:300 +msgid "Trigger all host commands" +msgstr "" + +#: personal/nagios/nagios.tpl:5 +#, fuzzy +msgid "Nagios Account" +msgstr "Contatto" + +#: personal/nagios/nagios.tpl:79 +msgid "Pager" +msgstr "Pager" + +#: personal/nagios/nagios.tpl:115 +msgid "Nagios authentification" +msgstr "" + +#: personal/nagios/nagios.tpl:121 +#, fuzzy +msgid "view system informations" +msgstr "Informazioni organizzazione" + +#: personal/nagios/nagios.tpl:130 +#, fuzzy +msgid "view configuration information" +msgstr "Informazioni organizzazione" + +#: personal/nagios/nagios.tpl:139 +msgid "trigger system commands" +msgstr "" + +#: personal/nagios/nagios.tpl:148 +msgid "view all services" +msgstr "" + +#: personal/nagios/nagios.tpl:157 +msgid "view all hosts" +msgstr "" + +#: personal/nagios/nagios.tpl:166 +msgid "trigger all service commands" +msgstr "" + +#: personal/nagios/nagios.tpl:175 +msgid "trigger all host commands" +msgstr "" + +#: personal/nagios/main.inc:136 +#, fuzzy +msgid "Nagios settings" +msgstr "Opzioni di posta dell'identità" + +#, fuzzy +#~ msgid "This account has no nagios extensions." +#~ msgstr "Questa identità non ha le estensioni per la posta" + +#, fuzzy +#~ msgid "Remove nagios account" +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "" +#~ "This account has nagios features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "Questa identià possiede estensioni di posta." + +#, fuzzy +#~ msgid "Create nagios account" +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "" +#~ "This account has nagios features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "Questa identità non possiede estensioni di posta." + +#, fuzzy +#~ msgid "Saving of user/nagios account with dn '%s' failed." +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "The required field 'NagiosAlias' is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "The required field 'NagiosMail' is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "Please enter a valid email address in 'NagiosMail' field." +#~ msgstr "" +#~ "Inserire un indirizzo di posta valido nel campo 'Indirizzo principale'." + +#, fuzzy +#~ msgid "Removing of user/nagios account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " +#~ "questo dialogo" + +#~ msgid "Edit" +#~ msgstr "Modifica" diff --git a/trunk/gosa-plugins/nagios/locale/messages.po b/trunk/gosa-plugins/nagios/locale/messages.po new file mode 100644 index 000000000..eebcd3cd8 --- /dev/null +++ b/trunk/gosa-plugins/nagios/locale/messages.po @@ -0,0 +1,157 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/nagios/class_nagiosAccount.inc:18 +#: personal/nagios/class_nagiosAccount.inc:105 +#: personal/nagios/class_nagiosAccount.inc:114 +#: personal/nagios/class_nagiosAccount.inc:116 +#: personal/nagios/class_nagiosAccount.inc:273 +msgid "Nagios" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:19 +msgid "This does something" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:173 +#: personal/nagios/class_nagiosAccount.inc:258 +msgid "LDAP error" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:194 +#: personal/nagios/class_nagiosAccount.inc:284 personal/nagios/nagios.tpl:8 +msgid "Alias" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:197 +#: personal/nagios/class_nagiosAccount.inc:201 +#: personal/nagios/class_nagiosAccount.inc:205 +msgid "Mail" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:274 +msgid "Nagios account settings" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:278 +msgid "My account" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:285 personal/nagios/nagios.tpl:17 +msgid "Mail address" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:286 personal/nagios/nagios.tpl:27 +msgid "Host notification period" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:287 personal/nagios/nagios.tpl:40 +msgid "Service notification period" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:288 personal/nagios/nagios.tpl:66 +msgid "Host notification options" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:289 personal/nagios/nagios.tpl:53 +msgid "Service notification options" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:290 +msgid "Pager number" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:292 personal/nagios/nagios.tpl:90 +msgid "Service notification commands" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:293 personal/nagios/nagios.tpl:100 +msgid "Host notification commands" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:294 +msgid "View system informations" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:295 +msgid "View configuration information" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:296 +msgid "Trigger system commands" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:297 +msgid "View all services" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:298 +msgid "View all hosts" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:299 +msgid "Trigger all service commands" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:300 +msgid "Trigger all host commands" +msgstr "" + +#: personal/nagios/nagios.tpl:5 +msgid "Nagios Account" +msgstr "" + +#: personal/nagios/nagios.tpl:79 +msgid "Pager" +msgstr "" + +#: personal/nagios/nagios.tpl:115 +msgid "Nagios authentification" +msgstr "" + +#: personal/nagios/nagios.tpl:121 +msgid "view system informations" +msgstr "" + +#: personal/nagios/nagios.tpl:130 +msgid "view configuration information" +msgstr "" + +#: personal/nagios/nagios.tpl:139 +msgid "trigger system commands" +msgstr "" + +#: personal/nagios/nagios.tpl:148 +msgid "view all services" +msgstr "" + +#: personal/nagios/nagios.tpl:157 +msgid "view all hosts" +msgstr "" + +#: personal/nagios/nagios.tpl:166 +msgid "trigger all service commands" +msgstr "" + +#: personal/nagios/nagios.tpl:175 +msgid "trigger all host commands" +msgstr "" + +#: personal/nagios/main.inc:136 +msgid "Nagios settings" +msgstr "" diff --git a/trunk/gosa-plugins/nagios/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/nagios/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..0b3f54405 --- /dev/null +++ b/trunk/gosa-plugins/nagios/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,221 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/nagios/class_nagiosAccount.inc:18 +#: personal/nagios/class_nagiosAccount.inc:105 +#: personal/nagios/class_nagiosAccount.inc:114 +#: personal/nagios/class_nagiosAccount.inc:116 +#: personal/nagios/class_nagiosAccount.inc:273 +msgid "Nagios" +msgstr "Nagios" + +#: personal/nagios/class_nagiosAccount.inc:19 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/nagios/class_nagiosAccount.inc:173 +#: personal/nagios/class_nagiosAccount.inc:258 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/nagios/class_nagiosAccount.inc:194 +#: personal/nagios/class_nagiosAccount.inc:284 personal/nagios/nagios.tpl:8 +msgid "Alias" +msgstr "Alias" + +#: personal/nagios/class_nagiosAccount.inc:197 +#: personal/nagios/class_nagiosAccount.inc:201 +#: personal/nagios/class_nagiosAccount.inc:205 +msgid "Mail" +msgstr "E-mail" + +#: personal/nagios/class_nagiosAccount.inc:274 +#, fuzzy +msgid "Nagios account settings" +msgstr "Nagios instellingen" + +#: personal/nagios/class_nagiosAccount.inc:278 +msgid "My account" +msgstr "Mijn account" + +#: personal/nagios/class_nagiosAccount.inc:285 personal/nagios/nagios.tpl:17 +msgid "Mail address" +msgstr "E-mail adres" + +#: personal/nagios/class_nagiosAccount.inc:286 personal/nagios/nagios.tpl:27 +msgid "Host notification period" +msgstr "Host notificatie periode" + +#: personal/nagios/class_nagiosAccount.inc:287 personal/nagios/nagios.tpl:40 +msgid "Service notification period" +msgstr "Service notificatie periode" + +#: personal/nagios/class_nagiosAccount.inc:288 personal/nagios/nagios.tpl:66 +msgid "Host notification options" +msgstr "Host notificatie opties" + +#: personal/nagios/class_nagiosAccount.inc:289 personal/nagios/nagios.tpl:53 +msgid "Service notification options" +msgstr "Service notificatie opties" + +#: personal/nagios/class_nagiosAccount.inc:290 +#, fuzzy +msgid "Pager number" +msgstr "Telefoonnummer" + +#: personal/nagios/class_nagiosAccount.inc:292 personal/nagios/nagios.tpl:90 +msgid "Service notification commands" +msgstr "Service notificatie commando's" + +#: personal/nagios/class_nagiosAccount.inc:293 personal/nagios/nagios.tpl:100 +msgid "Host notification commands" +msgstr "Host notificatie commando's" + +#: personal/nagios/class_nagiosAccount.inc:294 +#, fuzzy +msgid "View system informations" +msgstr "systeem informatie bekijken" + +#: personal/nagios/class_nagiosAccount.inc:295 +#, fuzzy +msgid "View configuration information" +msgstr "configuratie informatie bekijken" + +#: personal/nagios/class_nagiosAccount.inc:296 +#, fuzzy +msgid "Trigger system commands" +msgstr "systeem commando's activeren" + +#: personal/nagios/class_nagiosAccount.inc:297 +#, fuzzy +msgid "View all services" +msgstr "alle services bekijken" + +#: personal/nagios/class_nagiosAccount.inc:298 +#, fuzzy +msgid "View all hosts" +msgstr "alle hosts bekijken" + +#: personal/nagios/class_nagiosAccount.inc:299 +#, fuzzy +msgid "Trigger all service commands" +msgstr "alle service commando's activeren" + +#: personal/nagios/class_nagiosAccount.inc:300 +#, fuzzy +msgid "Trigger all host commands" +msgstr "alle host commando's activeren" + +#: personal/nagios/nagios.tpl:5 +msgid "Nagios Account" +msgstr "Nagios account" + +#: personal/nagios/nagios.tpl:79 +msgid "Pager" +msgstr "Pieper" + +#: personal/nagios/nagios.tpl:115 +msgid "Nagios authentification" +msgstr "Nagios authenticatie" + +#: personal/nagios/nagios.tpl:121 +msgid "view system informations" +msgstr "systeem informatie bekijken" + +#: personal/nagios/nagios.tpl:130 +msgid "view configuration information" +msgstr "configuratie informatie bekijken" + +#: personal/nagios/nagios.tpl:139 +msgid "trigger system commands" +msgstr "systeem commando's activeren" + +#: personal/nagios/nagios.tpl:148 +msgid "view all services" +msgstr "alle services bekijken" + +#: personal/nagios/nagios.tpl:157 +msgid "view all hosts" +msgstr "alle hosts bekijken" + +#: personal/nagios/nagios.tpl:166 +msgid "trigger all service commands" +msgstr "alle service commando's activeren" + +#: personal/nagios/nagios.tpl:175 +msgid "trigger all host commands" +msgstr "alle host commando's activeren" + +#: personal/nagios/main.inc:136 +msgid "Nagios settings" +msgstr "Nagios instellingen" + +#~ msgid "This account has no nagios extensions." +#~ msgstr "Dit account heeft nagios mogelijkheden uitgeschakeld." + +#~ msgid "Remove nagios account" +#~ msgstr "Nagios account verwijderen" + +#~ msgid "" +#~ "This account has nagios features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Dit account heeft Nagios mogelijkheden ingeschakeld. U kunt deze " +#~ "uitschakelen door de knop hieronder te gebruiken." + +#~ msgid "Create nagios account" +#~ msgstr "Nagios account aanmaken" + +#~ msgid "" +#~ "This account has nagios features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Dit account heeft geen Nagios mogelijkheden. U kunt deze inschakelen door " +#~ "de knop hieronder te gebruiken." + +#, fuzzy +#~ msgid "Saving of user/nagios account with dn '%s' failed." +#~ msgstr "Het opslaan van het Nagios account is mislukt" + +#~ msgid "The required field 'NagiosAlias' is not set." +#~ msgstr "Het vereiste veld 'NagiosAlias' is leeg." + +#~ msgid "The required field 'NagiosMail' is not set." +#~ msgstr "Het vereiste veld 'NagiosMail' is leeg." + +#~ msgid "Please enter a valid email address in 'NagiosMail' field." +#~ msgstr "Geef a.u.b. een geldig E-mail adres voor het 'NagiosMail' veld op." + +#, fuzzy +#~ msgid "Removing of user/nagios account with dn '%s' failed." +#~ msgstr "Het verwijderen van het Nagios account is mislukt" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Gebruik de 'Bewerk' knop hieronder om de informatie in deze dialoog te " +#~ "veranderen" + +#~ msgid "Edit" +#~ msgstr "Bewerken" diff --git a/trunk/gosa-plugins/nagios/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/nagios/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..8d389e820 --- /dev/null +++ b/trunk/gosa-plugins/nagios/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,207 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/nagios/class_nagiosAccount.inc:18 +#: personal/nagios/class_nagiosAccount.inc:105 +#: personal/nagios/class_nagiosAccount.inc:114 +#: personal/nagios/class_nagiosAccount.inc:116 +#: personal/nagios/class_nagiosAccount.inc:273 +msgid "Nagios" +msgstr "Nagios" + +#: personal/nagios/class_nagiosAccount.inc:19 +msgid "This does something" +msgstr "To robi coś" + +#: personal/nagios/class_nagiosAccount.inc:173 +#: personal/nagios/class_nagiosAccount.inc:258 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/nagios/class_nagiosAccount.inc:194 +#: personal/nagios/class_nagiosAccount.inc:284 personal/nagios/nagios.tpl:8 +msgid "Alias" +msgstr "Alias" + +#: personal/nagios/class_nagiosAccount.inc:197 +#: personal/nagios/class_nagiosAccount.inc:201 +#: personal/nagios/class_nagiosAccount.inc:205 +msgid "Mail" +msgstr "Poczta" + +#: personal/nagios/class_nagiosAccount.inc:274 +msgid "Nagios account settings" +msgstr "Ustawienia konta nagios" + +#: personal/nagios/class_nagiosAccount.inc:278 +msgid "My account" +msgstr "Moje konto " + +#: personal/nagios/class_nagiosAccount.inc:285 personal/nagios/nagios.tpl:17 +msgid "Mail address" +msgstr "Adres email" + +#: personal/nagios/class_nagiosAccount.inc:286 personal/nagios/nagios.tpl:27 +msgid "Host notification period" +msgstr "Okres powiadamiania o hoście" + +#: personal/nagios/class_nagiosAccount.inc:287 personal/nagios/nagios.tpl:40 +msgid "Service notification period" +msgstr "Okres powiadamiania o usłudze" + +#: personal/nagios/class_nagiosAccount.inc:288 personal/nagios/nagios.tpl:66 +msgid "Host notification options" +msgstr "Opcje powiadamiania o hoście" + +#: personal/nagios/class_nagiosAccount.inc:289 personal/nagios/nagios.tpl:53 +msgid "Service notification options" +msgstr "Opcje powiadamiania o usłudze" + +#: personal/nagios/class_nagiosAccount.inc:290 +msgid "Pager number" +msgstr "Numer pagera" + +#: personal/nagios/class_nagiosAccount.inc:292 personal/nagios/nagios.tpl:90 +msgid "Service notification commands" +msgstr "Polecenia powiadamiania o usłudze" + +#: personal/nagios/class_nagiosAccount.inc:293 personal/nagios/nagios.tpl:100 +msgid "Host notification commands" +msgstr "Polecenia powiadamiania o hoście" + +#: personal/nagios/class_nagiosAccount.inc:294 +msgid "View system informations" +msgstr "Pokaż informacje o systemie" + +#: personal/nagios/class_nagiosAccount.inc:295 +msgid "View configuration information" +msgstr "Pokaż konfigurację" + +#: personal/nagios/class_nagiosAccount.inc:296 +msgid "Trigger system commands" +msgstr "Przełącz polecenia systemowe" + +#: personal/nagios/class_nagiosAccount.inc:297 +msgid "View all services" +msgstr "Pokaż wszystkie usługi" + +#: personal/nagios/class_nagiosAccount.inc:298 +msgid "View all hosts" +msgstr "Pokaż wszystkie hosty" + +#: personal/nagios/class_nagiosAccount.inc:299 +msgid "Trigger all service commands" +msgstr "Przełącz wszystkie polecenia usługi" + +#: personal/nagios/class_nagiosAccount.inc:300 +msgid "Trigger all host commands" +msgstr "Przełącz wszystkie polecenia hosta" + +#: personal/nagios/nagios.tpl:5 +msgid "Nagios Account" +msgstr "Konto Nagios" + +#: personal/nagios/nagios.tpl:79 +msgid "Pager" +msgstr "Pager" + +#: personal/nagios/nagios.tpl:115 +msgid "Nagios authentification" +msgstr "Autentykacja Nagios" + +#: personal/nagios/nagios.tpl:121 +msgid "view system informations" +msgstr "pokaż informacje o systemie" + +#: personal/nagios/nagios.tpl:130 +msgid "view configuration information" +msgstr "Pokaż konfigurację" + +#: personal/nagios/nagios.tpl:139 +msgid "trigger system commands" +msgstr "przełącz polecenia systemu" + +#: personal/nagios/nagios.tpl:148 +msgid "view all services" +msgstr "pokaż wszystkie usługi" + +#: personal/nagios/nagios.tpl:157 +msgid "view all hosts" +msgstr "pokaż wszystkie hosty" + +#: personal/nagios/nagios.tpl:166 +msgid "trigger all service commands" +msgstr "przełącz wszystkie polecenia usługi" + +#: personal/nagios/nagios.tpl:175 +msgid "trigger all host commands" +msgstr "przełącz wszystkie polecenia hosta" + +#: personal/nagios/main.inc:136 +msgid "Nagios settings" +msgstr "Ustawienia nagios" + +#~ msgid "This account has no nagios extensions." +#~ msgstr "To konto nie posiada rozszerzenia nagios" + +#~ msgid "Remove nagios account" +#~ msgstr "Usuń konto nagios" + +#~ msgid "" +#~ "This account has nagios features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "" +#~ "To konto posiada rozszerzenia rozszerzenia nagios. Można je wyłączyć " +#~ "klikając poniżej." + +#~ msgid "Create nagios account" +#~ msgstr "Utwórz konto nagios" + +#~ msgid "" +#~ "This account has nagios features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "To konto nie posiada rozszerzenia nagios. Można je włączyć klikając " +#~ "poniżej" + +#~ msgid "Saving of user/nagios account with dn '%s' failed." +#~ msgstr "Zapisywanie konta nagios z dn '%s' nieudane." + +#~ msgid "The required field 'NagiosAlias' is not set." +#~ msgstr "Wymagane pole 'NagiosAlias' nie jest wypełnione" + +#~ msgid "The required field 'NagiosMail' is not set." +#~ msgstr "Wymagane pole 'NagiosMail' nie jest wypełnione" + +#~ msgid "Please enter a valid email address in 'NagiosMail' field." +#~ msgstr "Proszę podać poprawny adres email w polu 'NagiosMail'" + +#~ msgid "Removing of user/nagios account with dn '%s' failed." +#~ msgstr "Usuwanie konta nagios z dn '%s' nieudane." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Kliknij przycisk 'Edytuj' poniżej, aby zmienić informacje w tym oknie" + +#~ msgid "Edit" +#~ msgstr "Edytuj" diff --git a/trunk/gosa-plugins/nagios/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/nagios/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..78e0ed98b --- /dev/null +++ b/trunk/gosa-plugins/nagios/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,235 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/nagios/class_nagiosAccount.inc:18 +#: personal/nagios/class_nagiosAccount.inc:105 +#: personal/nagios/class_nagiosAccount.inc:114 +#: personal/nagios/class_nagiosAccount.inc:116 +#: personal/nagios/class_nagiosAccount.inc:273 +msgid "Nagios" +msgstr "" + +#: personal/nagios/class_nagiosAccount.inc:19 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/nagios/class_nagiosAccount.inc:173 +#: personal/nagios/class_nagiosAccount.inc:258 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/nagios/class_nagiosAccount.inc:194 +#: personal/nagios/class_nagiosAccount.inc:284 personal/nagios/nagios.tpl:8 +#, fuzzy +msgid "Alias" +msgstr "женский" + +#: personal/nagios/class_nagiosAccount.inc:197 +#: personal/nagios/class_nagiosAccount.inc:201 +#: personal/nagios/class_nagiosAccount.inc:205 +msgid "Mail" +msgstr "Почта" + +#: personal/nagios/class_nagiosAccount.inc:274 +#, fuzzy +msgid "Nagios account settings" +msgstr "Почтовые настройки пользователя" + +#: personal/nagios/class_nagiosAccount.inc:278 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/nagios/class_nagiosAccount.inc:285 personal/nagios/nagios.tpl:17 +#, fuzzy +msgid "Mail address" +msgstr "MAC-адрес" + +#: personal/nagios/class_nagiosAccount.inc:286 personal/nagios/nagios.tpl:27 +#, fuzzy +msgid "Host notification period" +msgstr "Параметры приложения" + +#: personal/nagios/class_nagiosAccount.inc:287 personal/nagios/nagios.tpl:40 +#, fuzzy +msgid "Service notification period" +msgstr "Параметры приложения" + +#: personal/nagios/class_nagiosAccount.inc:288 personal/nagios/nagios.tpl:66 +#, fuzzy +msgid "Host notification options" +msgstr "Параметры приложения" + +#: personal/nagios/class_nagiosAccount.inc:289 personal/nagios/nagios.tpl:53 +#, fuzzy +msgid "Service notification options" +msgstr "Параметры приложения" + +#: personal/nagios/class_nagiosAccount.inc:290 +#, fuzzy +msgid "Pager number" +msgstr "Телефонные номера" + +#: personal/nagios/class_nagiosAccount.inc:292 personal/nagios/nagios.tpl:90 +#, fuzzy +msgid "Service notification commands" +msgstr "Параметры приложения" + +#: personal/nagios/class_nagiosAccount.inc:293 personal/nagios/nagios.tpl:100 +#, fuzzy +msgid "Host notification commands" +msgstr "Параметры приложения" + +#: personal/nagios/class_nagiosAccount.inc:294 +#, fuzzy +msgid "View system informations" +msgstr "Системная информация" + +#: personal/nagios/class_nagiosAccount.inc:295 +#, fuzzy +msgid "View configuration information" +msgstr "Информация об организации" + +#: personal/nagios/class_nagiosAccount.inc:296 +#, fuzzy +msgid "Trigger system commands" +msgstr "Системная информация" + +#: personal/nagios/class_nagiosAccount.inc:297 +#, fuzzy +msgid "View all services" +msgstr "Предоставлять службу сканирования" + +#: personal/nagios/class_nagiosAccount.inc:298 +#, fuzzy +msgid "View all hosts" +msgstr "Предоставлять службу сканирования" + +#: personal/nagios/class_nagiosAccount.inc:299 +#, fuzzy +msgid "Trigger all service commands" +msgstr "Предоставлять службу сканирования" + +#: personal/nagios/class_nagiosAccount.inc:300 +msgid "Trigger all host commands" +msgstr "" + +#: personal/nagios/nagios.tpl:5 +#, fuzzy +msgid "Nagios Account" +msgstr "Контакт" + +#: personal/nagios/nagios.tpl:79 +msgid "Pager" +msgstr "Пейджер" + +#: personal/nagios/nagios.tpl:115 +#, fuzzy +msgid "Nagios authentification" +msgstr "Рабочая станция Windows" + +#: personal/nagios/nagios.tpl:121 +#, fuzzy +msgid "view system informations" +msgstr "Системная информация" + +#: personal/nagios/nagios.tpl:130 +#, fuzzy +msgid "view configuration information" +msgstr "Информация об организации" + +#: personal/nagios/nagios.tpl:139 +msgid "trigger system commands" +msgstr "" + +#: personal/nagios/nagios.tpl:148 +#, fuzzy +msgid "view all services" +msgstr "Предоставлять службу сканирования" + +#: personal/nagios/nagios.tpl:157 +msgid "view all hosts" +msgstr "" + +#: personal/nagios/nagios.tpl:166 +msgid "trigger all service commands" +msgstr "" + +#: personal/nagios/nagios.tpl:175 +msgid "trigger all host commands" +msgstr "" + +#: personal/nagios/main.inc:136 +#, fuzzy +msgid "Nagios settings" +msgstr "Почтовые настройки пользователя" + +#, fuzzy +#~ msgid "This account has no nagios extensions." +#~ msgstr "В этой учетной записи нет почтовых расширений." + +#, fuzzy +#~ msgid "Remove nagios account" +#~ msgstr "Удалить настройки эл. почты" + +#, fuzzy +#~ msgid "" +#~ "This account has nagios features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "" +#~ "В этой учетной записи есть настройки электронной почты. Вы можете удалить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "Create nagios account" +#~ msgstr "Создать настройки запись эл. почты" + +#, fuzzy +#~ msgid "" +#~ "This account has nagios features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "В этой учетной записи нет настроек электронной почты. Вы можете добавить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "Saving of user/nagios account with dn '%s' failed." +#~ msgstr "Создать настройки запись эл. почты" + +#, fuzzy +#~ msgid "The required field 'NagiosAlias' is not set." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "The required field 'NagiosMail' is not set." +#~ msgstr "Обязательное поле \"Имя\" не заполнено." + +#, fuzzy +#~ msgid "Please enter a valid email address in 'NagiosMail' field." +#~ msgstr "Введите корректное значение в поле \"Основной адрес\"." + +#, fuzzy +#~ msgid "Removing of user/nagios account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." + +#~ msgid "Edit" +#~ msgstr "Изменить" diff --git a/trunk/gosa-plugins/nagios/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/nagios/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d47edd9a4 --- /dev/null +++ b/trunk/gosa-plugins/nagios/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,216 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/nagios/class_nagiosAccount.inc:18 +#: personal/nagios/class_nagiosAccount.inc:105 +#: personal/nagios/class_nagiosAccount.inc:114 +#: personal/nagios/class_nagiosAccount.inc:116 +#: personal/nagios/class_nagiosAccount.inc:273 +msgid "Nagios" +msgstr "Nagios" + +#: personal/nagios/class_nagiosAccount.inc:19 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/nagios/class_nagiosAccount.inc:173 +#: personal/nagios/class_nagiosAccount.inc:258 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/nagios/class_nagiosAccount.inc:194 +#: personal/nagios/class_nagiosAccount.inc:284 personal/nagios/nagios.tpl:8 +msgid "Alias" +msgstr "别名" + +#: personal/nagios/class_nagiosAccount.inc:197 +#: personal/nagios/class_nagiosAccount.inc:201 +#: personal/nagios/class_nagiosAccount.inc:205 +msgid "Mail" +msgstr "邮件" + +#: personal/nagios/class_nagiosAccount.inc:274 +#, fuzzy +msgid "Nagios account settings" +msgstr "Nagios 设置" + +#: personal/nagios/class_nagiosAccount.inc:278 +msgid "My account" +msgstr "我的账号" + +#: personal/nagios/class_nagiosAccount.inc:285 personal/nagios/nagios.tpl:17 +msgid "Mail address" +msgstr "邮件地址" + +#: personal/nagios/class_nagiosAccount.inc:286 personal/nagios/nagios.tpl:27 +msgid "Host notification period" +msgstr "主机通知周期" + +#: personal/nagios/class_nagiosAccount.inc:287 personal/nagios/nagios.tpl:40 +msgid "Service notification period" +msgstr "服务通知周期" + +#: personal/nagios/class_nagiosAccount.inc:288 personal/nagios/nagios.tpl:66 +msgid "Host notification options" +msgstr "主机通知选项" + +#: personal/nagios/class_nagiosAccount.inc:289 personal/nagios/nagios.tpl:53 +msgid "Service notification options" +msgstr "服务通知选项" + +#: personal/nagios/class_nagiosAccount.inc:290 +#, fuzzy +msgid "Pager number" +msgstr "电话号码" + +#: personal/nagios/class_nagiosAccount.inc:292 personal/nagios/nagios.tpl:90 +msgid "Service notification commands" +msgstr "服务通知命令" + +#: personal/nagios/class_nagiosAccount.inc:293 personal/nagios/nagios.tpl:100 +msgid "Host notification commands" +msgstr "主机通知命令" + +#: personal/nagios/class_nagiosAccount.inc:294 +#, fuzzy +msgid "View system informations" +msgstr "查看系统信息" + +#: personal/nagios/class_nagiosAccount.inc:295 +#, fuzzy +msgid "View configuration information" +msgstr "查看配置信息" + +#: personal/nagios/class_nagiosAccount.inc:296 +#, fuzzy +msgid "Trigger system commands" +msgstr "触发系统命令" + +#: personal/nagios/class_nagiosAccount.inc:297 +#, fuzzy +msgid "View all services" +msgstr "查看所有服务" + +#: personal/nagios/class_nagiosAccount.inc:298 +#, fuzzy +msgid "View all hosts" +msgstr "查看所有主机" + +#: personal/nagios/class_nagiosAccount.inc:299 +#, fuzzy +msgid "Trigger all service commands" +msgstr "触发所有服务命令" + +#: personal/nagios/class_nagiosAccount.inc:300 +#, fuzzy +msgid "Trigger all host commands" +msgstr "触发所有主机命令" + +#: personal/nagios/nagios.tpl:5 +msgid "Nagios Account" +msgstr "Nagios 账号" + +#: personal/nagios/nagios.tpl:79 +msgid "Pager" +msgstr "呼机" + +#: personal/nagios/nagios.tpl:115 +msgid "Nagios authentification" +msgstr "Nagios 鉴权" + +#: personal/nagios/nagios.tpl:121 +msgid "view system informations" +msgstr "查看系统信息" + +#: personal/nagios/nagios.tpl:130 +msgid "view configuration information" +msgstr "查看配置信息" + +#: personal/nagios/nagios.tpl:139 +msgid "trigger system commands" +msgstr "触发系统命令" + +#: personal/nagios/nagios.tpl:148 +msgid "view all services" +msgstr "查看所有服务" + +#: personal/nagios/nagios.tpl:157 +msgid "view all hosts" +msgstr "查看所有主机" + +#: personal/nagios/nagios.tpl:166 +msgid "trigger all service commands" +msgstr "触发所有服务命令" + +#: personal/nagios/nagios.tpl:175 +msgid "trigger all host commands" +msgstr "触发所有主机命令" + +#: personal/nagios/main.inc:136 +msgid "Nagios settings" +msgstr "Nagios 设置" + +#~ msgid "This account has no nagios extensions." +#~ msgstr "这个账户尚未包含 nagios 扩展。 " + +#~ msgid "Remove nagios account" +#~ msgstr "删除 nagios 账户" + +#~ msgid "" +#~ "This account has nagios features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "该账号已经启用 nagios 功能。您可以点击下面按钮禁用。" + +#~ msgid "Create nagios account" +#~ msgstr "创建 nagios 账户" + +#~ msgid "" +#~ "This account has nagios features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "这个账户 nagios 功能已禁用。您可以点击下面的按钮来启用。" + +#, fuzzy +#~ msgid "Saving of user/nagios account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#~ msgid "The required field 'NagiosAlias' is not set." +#~ msgstr "必须的字段 'NagiosAlias' 没有设置。" + +#~ msgid "The required field 'NagiosMail' is not set." +#~ msgstr "需要的字段 'NagiosMail' 没有设置。" + +#~ msgid "Please enter a valid email address in 'NagiosMail' field." +#~ msgstr "请在 'NagiosMail' 字段输入一个有效的邮件地址。" + +#, fuzzy +#~ msgid "Removing of user/nagios account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#~ msgid "Ok" +#~ msgstr "好" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "点击下面的“编辑”按钮修改该对话框内的信息" + +#~ msgid "Edit" +#~ msgstr "编辑" diff --git a/trunk/gosa-plugins/nagios/personal/nagios/class_nagiosAccount.inc b/trunk/gosa-plugins/nagios/personal/nagios/class_nagiosAccount.inc new file mode 100644 index 000000000..0d50aac78 --- /dev/null +++ b/trunk/gosa-plugins/nagios/personal/nagios/class_nagiosAccount.inc @@ -0,0 +1,308 @@ + + \author Benoit Mortier + \author Vincent Seynhaeve + \version 1.00 + \date 25.09.2005 + + This class provides the functionality to read and write all attributes + relevant for nagiosAccount from/to the LDAP. It does syntax checking + and displays the formulars required. + */ + +class nagiosAccount extends plugin +{ + /* Definitions */ + var $plHeadline= "Nagios"; + var $plDescription= "This does something"; + + /* plugin specific values */ + var $NagiosAlias = ""; + var $NagiosPager = ""; + var $NagiosMail = ""; + + var $HostNotificationOptions = ""; + var $HostNotificationPeriod = ""; + var $ServiceNotificationPeriod = ""; + var $ServiceNotitificationPeriod = ""; + var $HostNotificationCommands = ""; + var $ServiceNotificationCommands = ""; + var $HostNotitificationOptions = ""; + var $ServiceNotificationOptions = ""; + + var $AuthorizedAllHosts = "unchecked"; + var $AuthorizedAllServices = "unchecked"; + var $AuthorizedSystemCommands = "unchecked"; + var $AuthorizedAllHostCommands = "unchecked"; + var $AuthorizedAllServiceCommands = "unchecked"; + var $AuthorizedConfigurationInformation = "unchecked"; + var $AuthorizedSystemInformation = "unchecked"; + + /* attribute list for save action */ + + var $attributes= array("NagiosAlias", "NagiosPager", "NagiosMail", "HostNotificationPeriod", + "ServiceNotificationPeriod", "HostNotificationCommands", "ServiceNotificationCommands", + "HostNotificationOptions", "ServiceNotificationOptions", "AuthorizedAllHosts", "AuthorizedAllServices", + "AuthorizedSystemCommands", "AuthorizedAllHostCommands", "AuthorizedAllServiceCommands", + "AuthorizedConfigurationInformation", "AuthorizedSystemInformation"); + + var $is_chk_box = array("AuthorizedAllHosts","AuthorizedAllServices","AuthorizedSystemCommands", + "AuthorizedAllHostCommands","AuthorizedAllServiceCommands", + "AuthorizedConfigurationInformation","AuthorizedSystemInformation"); + + var $objectclasses= array("nagiosContact","nagiosAuth"); + + var $uid = ""; + var $view_logged = FALSE; + + /* constructor, if 'dn' is set, the node loads the given + 'dn' from LDAP */ + function nagiosAccount (&$config, $dn= NULL) + { + /* Configuration is fine, allways */ + $this->config= $config; + + plugin::plugin ($config, $dn); + + /* Setting uid to default */ + if(isset($this->attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + + /* Save initial account state */ + $this->initially_was_account= $this->is_account; + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Load templating engine */ + $smarty= get_smarty(); + $display= ""; + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + + /* Do we represent a valid account? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\"src=\"images/small-error.png\" ". + msgPool::noValidextension(_("Nagios")).""; + + $display.= back_to_main(); + return ($display); + } + + /* Show tab dialog headers */ + if ($this->parent !== NULL){ + if ($this->is_account){ + $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Nagios")), msgPool::featuresEnabled(_("Nagios"))); + } else { + $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Nagios")), msgPool::featuresDisabled(_("Nagios"))); + return($display); + } + } + + /* Assign acls */ + $tmp = $this->plInfo(); + $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + foreach($tmp['plProvidedAcls'] as $acl => $desc){ + $smarty->assign($acl."ACL",$this->getacl($acl,$SkipWrite)); + } + + /* Assign attributes an ACL to smarty */ + foreach($this->attributes as $val) { + $smarty->assign("$val", $this->$val); + if(in_array($val,$this->is_chk_box)){ + if($this->$val == "checked"){ + $smarty->assign($val."CHK", " checked "); + }else{ + $smarty->assign($val."CHK", ""); + } + } + } + $smarty->assign('ServiceNotificationOptionsValues' ,array("d,u,r,v"=>"d,u,r,v" ,"d,u,r"=>"d,u,r" ,"d,u"=>"d,u")); + $smarty->assign('HostNotificationOptionsValues' ,array("w,u,c,r"=>"w,u,c,r" ,"w,u,c"=>"w,u,c" ,"c,w"=>"c,w")); + $smarty->assign('ServiceNotificationPeriodValues' ,array("24x7"=>"24x7" ,"24x5"=>"24x5" ,"8x5"=>"8x5")); + $smarty->assign('HostNotificationPeriodValues' ,array("24x7"=>"24x7" ,"24x5"=>"24x5" ,"8x5"=>"8x5")); + $display.= $smarty->fetch (get_template_path('nagios.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + /* Save to LDAP */ + function save() + { + $ldap= $this->config->get_ldap_link(); + + /* Call parents save to prepare $this->attrs */ + plugin::save(); + + /* Adapt attributes if needed */ + //$method= new $this->method($this->config); + //$id= $method->uattrib; + //$method->fixAttributesOnStore($this); + + /* Write back to ldap */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add", array("uid" => $this->uid)); + } + } + + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + $ldap= $this->config->get_ldap_link(); + /* must: mail */ + if ($this->NagiosAlias == ""){ + $message[]= msgPool::required(_("Alias")); + } + if ($this->NagiosMail == ""){ + $message[]= msgPool::required(_("Mail")); + } + if ($this->is_template){ + if (!tests::is_email($this->NagiosMail, TRUE)){ + $message[]= msgPool::invalid(_("Mail"),"","","%givenName.%dn@your-domain.com"); + } + } else { + if (!tests::is_email($this->NagiosMail)){ + $message[]= msgPool::invalid(_("Mail"),"","","your-domain@your-domain.com"); + } + } + return($message); + } + + + /* Use Save_object for every Post handling */ + function save_object() + { + if (isset($_POST['nagiosTab'])){ + /* Save ldap attributes */ + plugin::save_object(); + + /* Specialhandling for checkboxes */ + foreach($this->is_chk_box as $val){ + if($this->acl_is_writeable($val)){ + if(isset($_POST[$val])){ + $this->$val = "checked"; + }else{ + $this->$val = "unchecked"; + } + } + } + } + } + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Remove and write to LDAP */ + plugin::remove_from_parent(); + + /* Adapt attributes if needed */ + // $method= new $this->method($this->config); + // $method->fixAttributesOnRemove($this); + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + new log("view","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* remove the entry from LDAP */ + unset ($this->attrs['uid']); + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove',array("uid" => $this->uid)); + } + + + + static function plInfo() + { + return (array( + "plShortName" => _("Nagios"), + "plDescription" => _("Nagios account settings"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 8, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + + "NagiosAlias" => _("Alias"), + "NagiosMail" => _("Mail address"), + "HostNotificationPeriod" => _("Host notification period"), + "ServiceNotificationPeriod" => _("Service notification period"), + "HostNotificationOptions" => _("Host notification options"), + "ServiceNotificationOptions" => _("Service notification options"), + "NagiosPager" => _("Pager number"), + + "ServiceNotificationCommands" => _("Service notification commands"), + "HostNotificationCommands" => _("Host notification commands"), + "AuthorizedSystemInformation" => _("View system informations"), + "AuthorizedConfigurationInformation"=> _("View configuration information"), + "AuthorizedSystemCommands" => _("Trigger system commands"), + "AuthorizedAllServices" => _("View all services"), + "AuthorizedAllHosts" => _("View all hosts"), + "AuthorizedAllServiceCommands" => _("Trigger all service commands"), + "AuthorizedAllHostCommands" => _("Trigger all host commands")) + + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: + +?> diff --git a/trunk/gosa-plugins/nagios/personal/nagios/main.inc b/trunk/gosa-plugins/nagios/personal/nagios/main.inc new file mode 100644 index 000000000..319bd0aec --- /dev/null +++ b/trunk/gosa-plugins/nagios/personal/nagios/main.inc @@ -0,0 +1,141 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('nagiosAccount'); + session::un_set('edit'); + +}else{ + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + session::un_set ('edit'); + session::un_set ('nagiosAccount'); + } + + /* Create mail object on demand */ + if (!session::is_set('nagiosAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $nagiosAccount= new nagiosAccount ($config, $ui->dn); + $nagiosAccount->enable_CSN_check(); + $nagiosAccount->set_acl_base($ui->dn); + $nagiosAccount->set_acl_category("users"); + session::set('nagiosAccount',$nagiosAccount); + } + $nagiosAccount = session::get('nagiosAccount'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $nagiosAccount->save_object (); + } + + /* Enter edit mode? */ + if (isset($_POST['edit'])){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $nagiosAccount->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $nagiosAccount->save (); + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Remove object */ + session::un_set ('nagiosAccount'); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + if($lock_msg){ + $display.= $lock_msg; + }else{ + $display.= $nagiosAccount->execute (); + } + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('nagiosAccount',$nagiosAccount); + } + + $info= ""; + /* Show page footer depending on the mode */ + if ($nagiosAccount->is_account && empty($lock_msg)){ + $display.= "

"; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + $info= "\"\" ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/nagiosAccount"))){ + $info.= "\"\" ".msgPool::clickEditToChange(); + $display.= "\n"; + } + $display.= "\n"; + } + $display.= "

\n"; + } + + /* Page header*/ + $display= print_header(get_template_path('plugins/nagios/images/plugin.png'), _("Nagios settings"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/nagios/personal/nagios/nagios.tpl b/trunk/gosa-plugins/nagios/personal/nagios/nagios.tpl new file mode 100644 index 000000000..e77529add --- /dev/null +++ b/trunk/gosa-plugins/nagios/personal/nagios/nagios.tpl @@ -0,0 +1,192 @@ + + + + + + +
+

+  {t}Nagios Account{/t}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$must} +{render acl=$NagiosAliasACL} + +{/render} +
{$must} +{render acl=$NagiosMailACL} + +{/render} +
+ {$must} + +{render acl=$HostNotificationPeriodACL} + +{/render} +
+ {$must} + +{render acl=$ServiceNotificationPeriodACL} + +{/render} +
+ {$must} + +{render acl=$ServiceNotificationOptionsACL} + +{/render} +
+ {$must} + +{render acl=$HostNotificationOptionsACL} + +{/render} +
+ + +{render acl=$NagiosPagerACL} + +{/render} +
+ + +{render acl=$ServiceNotificationCommandsACL} + +{/render} +
+ + +{render acl=$HostNotificationCommandsACL} + +{/render} +
+
+   + +

+  {t}Nagios authentification{/t} +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+{render acl=$AuthorizedSystemInformationACL} + {t}view system informations{/t} +{/render} +
+{render acl=$AuthorizedConfigurationInformationACL} + {t}view configuration information{/t} +{/render} +
+{render acl=$AuthorizedSystemCommandsACL} + {t}trigger system commands{/t} +{/render} +
+{render acl=$AuthorizedAllServicesACL} + {t}view all services{/t} +{/render} +
+{render acl=$AuthorizedAllHostsACL} + {t}view all hosts{/t} +{/render} +
+{render acl=$AuthorizedAllServiceCommandsACL} + {t}trigger all service commands{/t} +{/render} +
+{render acl=$AuthorizedAllHostCommandsACL} + {t}trigger all host commands{/t} +{/render} +
+
+ + + + + + diff --git a/trunk/gosa-plugins/nagios/plugin.dsc b/trunk/gosa-plugins/nagios/plugin.dsc new file mode 100644 index 000000000..2b12f7155 --- /dev/null +++ b/trunk/gosa-plugins/nagios/plugin.dsc @@ -0,0 +1,6 @@ +[gosa-plugin] +name = nagios +description = "Nagios account settings management" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ diff --git a/trunk/gosa-plugins/netatalk/contrib/apple.schema.README b/trunk/gosa-plugins/netatalk/contrib/apple.schema.README new file mode 100644 index 000000000..e0e3f9a98 --- /dev/null +++ b/trunk/gosa-plugins/netatalk/contrib/apple.schema.README @@ -0,0 +1,50 @@ + +Heya, + +as we don't want to run into licensing issues the apple.schema is not included +here. In case you want to manage your apple users' homedirectories with GOsa +please copy the apple.schema file from your MacOSX installation into the +schema-directory of your openldap installation and include it in the slapd- +configuration. Usually you'll have to change a few objectclasses as some +attribute-types are missing. + +For example to use the apple.schema from osx 10.4 you'll have to +- remove the objectclass authAuthorityObject +- remove the objectclass apple-acl +- remove the following attributes from all ObjectClasses: + - acctFlags + - pwdLastSet + - logonTime + - logoffTime + - kickoffTime + - homeDrive + - scriptPath + - profilePath + - userWorkstations + - smbHome + - rid + - primaryGroupID +- uncomment the apple-user-homeDirectory attribute +- add the apple-user-homeDirectory attribute to the apple-user objectclass + +YMMV depending on the version of the apple.schema. As far as I can remember the +apple.schema from 10.2 does not include all neccessary attributes and object- +classes, so you probably want to use a more recent one. + + +As I actually don't have the time to provide a complete howto I've googled for +a howto - probably http://www.spack.org/wiki/AppleOsxIntegrationWithOpenLdap +will give you some hints how to setup your apple. + +The netatalk plugin was developed by Gina Haeussge and Bernd +Zeimetz for use at the Darmstadt University of Technology, +Department of Architecture. + +In case you have any questions or find any bugs feel free to contact me at +. + + +Best regards, + + +Bernd Zeimetz diff --git a/trunk/gosa-plugins/netatalk/help/guide.xml b/trunk/gosa-plugins/netatalk/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/netatalk/html/images/plugin.png b/trunk/gosa-plugins/netatalk/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..19ab9246abd2fed9dc0da95da1fa74fcf2ffab57 GIT binary patch literal 3642 zcmV-A4#n|_P)ta_azZVpwb zId%G(6C19)vDs{19D+a!^~#JFhsBQVee%y+vvf73Z|+vj5}`%p({;^+wBkgWvVR5ix_h)&|&ZnQ`>tFqA06zTDPjcBiFQr`oO#Fna z?UkNr%U^RUoc+4>y#9=JeDGs~OCD|i@LJ&0-nCA;=A1XY=9C+*c>}xlEHO9VM`dLx zAR;uH!k>NiGwj*3m$mEGbH!EHaBvCwgTb5nI$^CX3J_mblo}p&W>~6 zCE~y2s~9IYZkS?jzTo*6yR`-X3#-Q-nm3y4eEbQ%`<*)h_`^@%#LV%VXt(=gU$^ui z8#nV60E~U8%$S=mIQ^70Oii!ebO3jZ7ZF62x%mML?E<$V0TM)oG8WwO#T!{%ILx`{ zUC8BET+LFupsL2rB)N6W!^?iK5q)e7keSgfDynFR3JB^&!328!$Wo{J9|2@}Kt(Y# z217cCAn8PwH`)HkLwx(L+W@%ieOD23&(dP=2t$);!bGb<2trvION%|C#W8@xLc9En zqOt_Qi2-<2F@#>PqTMcW?v(+EKouiTeeZFW7TQcrPjTisr{SD}7=nO+W`Tzu{5Dlp zvh9L5bH&xa!Qx^;RUPSh5y1?;^5t83=IJLmcHMeDaLo;5c}}dV5v5X)B8FgQ6s1ua zph<h%xdnU;8^Axc6?>9XG?fuDlMHHK}5Cgy&-oA{u0s5e;Mn zK!qsK?N+oq%K+*W0})gOr$SX38Uk4($Av(@h*XluDgw>W;O=jJg%|hzh(@Ey+1oB= zsZH{jC8`d&EdpkObEz3nbyP7?sjPt7<3k_@#8CtcaSBL^Ks2G#t7vyByiX4i6;gr= z>J;Z9v5Hh>q^cri8R?f0HSyH>z~bzFzW1%<{Y&2dZcaGyH2VDkR$Fd1%mGONBE&dK zTdD|UmCoaaTTChyBNWkyG1-RH5ik;frA|rk0wOr4s7qauI&jX25llVKdr&_D0Fe2> zp55Cy_~LE=uDtfcm_S*jSlXDfFr<(fK4j_lS)O=a8yZK(FS8+<5vvr@6any}N;IL} zDOu{2@sE7#L-g+q(D|{9xO^Jme0xl0cw|hGPC!KmGr=EEp-CjjB zsg2g!qeIFiPJiV0Zsvm@{Ub~>76uuI4h|TU6;+k!6Kkne0mN86VffOH%z?_F)2rwX zBBp|Kf=0u6693JRXgH@dR!yVMrT(N!_tiOKx69Ly-3`ENPdl5?Xi*GGYzUxsy#Qr2 z+C8H)Fqqs*J|PrE#s2voHmBuvZ0kkXgpFc;V21L1Bsa2F?UWeNDQq04IVXXsu3Sg7+GdF5QnV_<;+WCVz&lr0*_tXbrnaHhd@+bbq)vJwiQ1CX2^}VJT?c-& zugmUzU0!>_6d{8O!vW4g6o@E_5J>=>XbnW^7X=6R?*QQJ^Dkxd){`kqD5B6SU{DHG z1x^hmCR#-!)*5dy>3Xz?Ma9&Jrm4Een*VB;MMM;{>c||R?miD3E^%3p4eOdT8=fFS zC4#F2C&~L!6&D4QBxT+lu|Ht`;9dZ>UGz>G6EHsygDQpF`!uRjsI1m^F~rg^u_ULK z^eWalmlnJ>lpxGf4-}EHO02apDm0pbegXRq6->6^nAJ){z*HbArdlVZVki!!5>Hij zS(tkcfGww<&FpNX*Q+~Q8*04ad`1WvRg{s!$Y{|Y5mO>@S!<&pTA#%*RfNQtqQcX1Yg&;9OIsV^Goy+W<|pZJqo z+4h#V(e0%C5EEjwB&`CG+UwCkBZi_eVxmL^wOHpsnpXgi3MO?pLNeZGju0F^co3yR zk*H7!rZtT$jm+gN&F#gxfHoY556`Di4?$QYR(%@H2{vy%83nvcHdYZ3NjZSlrCF15 z)K#ofMTs>7h6OM&<_HR*l8g_I;2qwl>nsa|%%cvxQ+#l^kpAwRqFS=?w2OHEXP-oC z85Bt#${G{wdf;o^^~GOhsAr_R~E>r8*5rR)eP6g*{S#yf>lX$;+8Gt4Lc`MZmfb|=<(9E;C z9jO6WQaI-T6~qaH0X+BYvot5CXtbuWG9|7?#U!RS9EJ;;)Jm8rqL2lL8~1)QXZDBN znSJU9tUKvcR?Wiyni)k6TcHIUhC!p5@=aaN+ zfWZLf4z_u2&n|ZFe1eC+`)}NT_t*K*AKbzvmtReLsluXyq%J{4D90m!3bBrW3zoR= zJ>GkiNcYf-6umCbJ@znudq&o35gHAqkK4eS&BrsnejUeb+(2Whl_;TFcd|+8%6_|U zAq5B@XXd(=5XHo>099|z#xZ~ZI3_TGy*{L(D*FCAjx@Ek8cHf}kEi{AbLww|_)t*4($ zRam`LmE}RLvM;X#2srO>Ll9o^s${EIlg+FrOZ_MwB!zwkW0g+==9HiJ%&UVDk6 z)1^DVKvfi}f3GT38!XNp1YqvaEOUpF)P^kQxS7qYo7v2o^&45gVGC!S_f}qi{@Z9x z=aeOMyD%tX>WwU^-!O@zrF^pE%k*wJKt< zWYFo*J-k3~X_0DBQ1p6ajR~H4Xn}|CxSf+uK7;E&{`<@vzm>HcHZ!?u4dOz|xeNv+ zbUM&)LmAVWpx!E|mv8kVCY8Jt0TDd4gsOueN^nZ>NlHWJ2tf%U(JFYsiKUH7pTOZ2 zM@DNhW9`P(cn40CR5n`B$anGZ9gt<7D}MQxKr?#1WN=lb6nAwBXX^ZZyw4p&2pf$g*Y6`%DSJ z5wa8kA5w0pOOp?ccP@E6)Mu}$+U7ZI-n;)mWI8ox}RWW3l~vWjtkUkmAK%j}`&Fx@ zOf@_c4P~O?Mx&Jrt%lOd(`aVU%%GLQ#Mqe3)0k?&ss^lT!m1p$Y?|hrpSuKr@BGJ| zEF2!t$RO0fGoMBnjd_4R1h|%mV^_gDe(^m3?A-AbyPw^e zwr<8bKSrVPBzBrc+7(GH%zy4(0Q%#+Fi>OJjn4$Wg`=)Sa{oBsaa?euqSk)pdaTI>(&?{Keo zxaB*(834jUr_Zj(@7wXCJOAS5g}sm6VP=iyN-xCud&OLtTmHma;Gg~uf99(tM1%FE{7T~A9WE_7@A)-21Jg|Rm``zD-gYJ&e z3-Y7*n)SEG9DDuGYTl#yn)OS-{q^;ABGUX>OnTG+nAtq=DbnuDn}BP6Rudo90epi* zqc(8vO6T)G72W^M@yEbfz;@FASXt3AQlX=Hh{#!_2<$PlawT*97qs?qBND>cod5s; M07*qoM6N<$f>1B{lmGw# literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/netatalk/html/images/select_netatalk.png b/trunk/gosa-plugins/netatalk/html/images/select_netatalk.png new file mode 100644 index 0000000000000000000000000000000000000000..e5897202d604176052fc394b226fde59042f6604 GIT binary patch literal 828 zcmV-C1H=4@P)8V7 z#Es~xQlTm>*j3abTC3K!LO~R3N+N-@HimJU^iFdhb7$_&|GS6_EnVbn&f?=7&gLlA zruTrGfK!(Py=uk-r>>kWwgL}>*aRy0FMuK!_dWFfYcIXHZ4cQ06-cS@N`jq_kBg5F z9>IyKvjA9x5JXXyz4Geb=k%D8p>rKAuaXhwS4sE4qkufZEn8xcG9k+lUgoDDLt!6;sn2J zIDP!Y&wAlvPL$=WUvG%5#Sc7WA?f^mhI_{E;9MvO6GyLS5u${oz%w2K!HQ7m+)3s` zi!DQ=p%_pe-LOwTOL%(wBU}oXcx(TUC=4q`qjQZEeUJ_(6%uV2ylQ|TF!Z8J1cNmi z*H?M&(>4=tOcHhrHjWrJj0j4m$ILI^Q!bbAlmVsCPHU<)A3uN#)3eN-JVH=gN2M`H zwJ}W8p68h-9%FWT3WsCs_Gh_m(-zRH3$)OhO4(zuSz&DBHtJU!lm^=^7zhe}`!Znv zfrIpQnKT!)L+C^fEd)+!biM8uqt{ibHhgMzMGy!|8tP5M$gttF4WqPMErv(O=x0#( zKvzL4iN$8BdFRAJZD?q`XM5eGm&Khli91mohfy3acG7q$T<(8+^gB^B?^--FAH}n+ zIG$Tf, 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2008-04-03 14:23+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: personal/netatalk/class_netatalk.inc:36 +#: personal/netatalk/class_netatalk.inc:372 +msgid "Netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:37 +msgid "Manage netatalk account" +msgstr "Netatalk-Konto verwalten" + +#: personal/netatalk/class_netatalk.inc:176 +#: personal/netatalk/class_netatalk.inc:184 +#: personal/netatalk/class_netatalk.inc:185 +#: personal/netatalk/class_netatalk.inc:190 +#: personal/netatalk/class_netatalk.inc:191 +#: personal/netatalk/class_netatalk.inc:193 +#: personal/netatalk/class_netatalk.inc:194 +#: personal/netatalk/class_netatalk.inc:196 +#: personal/netatalk/class_netatalk.inc:197 +msgid "netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:191 +msgid "POSIX" +msgstr "POSIX" + +#: personal/netatalk/class_netatalk.inc:194 +msgid "netatalk or NFS share" +msgstr "Netatalk- oder NFS-Freigabe" + +#: personal/netatalk/class_netatalk.inc:228 +#: personal/netatalk/class_netatalk.inc:382 personal/netatalk/netatalk.tpl:4 +msgid "Share" +msgstr "Freigabe" + +#: personal/netatalk/class_netatalk.inc:292 +#: personal/netatalk/class_netatalk.inc:357 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/netatalk/class_netatalk.inc:376 +msgid "My account" +msgstr "Mein Konto" + +#: personal/netatalk/class_netatalk.inc:381 +msgid "User home path" +msgstr "Benutzer Basisverzeichnis" + +#: personal/netatalk/main.inc:131 +msgid "Netatalk settings" +msgstr "Netatalk-Einstellungen" + +#: personal/netatalk/netatalk.tpl:16 +msgid "Path" +msgstr "Pfad" diff --git a/trunk/gosa-plugins/netatalk/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/netatalk/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..1b7fd6803 --- /dev/null +++ b/trunk/gosa-plugins/netatalk/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,122 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/netatalk/class_netatalk.inc:36 +#: personal/netatalk/class_netatalk.inc:372 +msgid "Netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:37 +msgid "Manage netatalk account" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:176 +#: personal/netatalk/class_netatalk.inc:184 +#: personal/netatalk/class_netatalk.inc:185 +#: personal/netatalk/class_netatalk.inc:190 +#: personal/netatalk/class_netatalk.inc:191 +#: personal/netatalk/class_netatalk.inc:193 +#: personal/netatalk/class_netatalk.inc:194 +#: personal/netatalk/class_netatalk.inc:196 +#: personal/netatalk/class_netatalk.inc:197 +#, fuzzy +msgid "netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:191 +msgid "POSIX" +msgstr "POSIX" + +#: personal/netatalk/class_netatalk.inc:194 +msgid "netatalk or NFS share" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:228 +#: personal/netatalk/class_netatalk.inc:382 personal/netatalk/netatalk.tpl:4 +msgid "Share" +msgstr "Recurso compartido" + +#: personal/netatalk/class_netatalk.inc:292 +#: personal/netatalk/class_netatalk.inc:357 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/netatalk/class_netatalk.inc:376 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/netatalk/class_netatalk.inc:381 +msgid "User home path" +msgstr "Ruta del directorio del usuario" + +#: personal/netatalk/main.inc:131 +msgid "Netatalk settings" +msgstr "Parámetros de Netatalk" + +#: personal/netatalk/netatalk.tpl:16 +msgid "Path" +msgstr "Ruta" + +#~ msgid "This account has no netatalk extensions." +#~ msgstr "Esta cuenta no tiene extensión Netatalk" + +#~ msgid "Remove netatalk account" +#~ msgstr "Eliminar cuenta Netatalk" + +#~ msgid "" +#~ "This account has netatalk features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Esta cuenta tiene la extensión Netatalk activa. Puede desactivarla " +#~ "pulsando a continuación." + +#~ msgid "Create netatalk account" +#~ msgstr "Crear cuenta Netatalk" + +#~ msgid "" +#~ "This account has netatalk features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Esta cuenta tiene la extensión Netatalk desactivada. Puede activarla " +#~ "pulsando aqui." + +#~ msgid "You must select a share to use." +#~ msgstr "Debe seleccionar la carpeta compartida que desea usar" + +#~ msgid "Saving of user/netatalk account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la grabación de la cuenta de usuario/Netatalk con dn '%s'." + +#~ msgid "Removing of user/netatalk account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la eliminación de la cuenta de usuario/Netatalk con dn '%s'." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Pulse en el botón - Editar - para cambiar la información en esta ventana" + +#~ msgid "Edit" +#~ msgstr "Editar" diff --git a/trunk/gosa-plugins/netatalk/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/netatalk/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e08f12bd9 --- /dev/null +++ b/trunk/gosa-plugins/netatalk/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,70 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2008-06-08 15:34+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/netatalk/class_netatalk.inc:36 +#: personal/netatalk/class_netatalk.inc:372 +msgid "Netatalk" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:37 +msgid "Manage netatalk account" +msgstr "Gèrer un compte Netatalk" + +#: personal/netatalk/class_netatalk.inc:176 +#: personal/netatalk/class_netatalk.inc:184 +#: personal/netatalk/class_netatalk.inc:185 +#: personal/netatalk/class_netatalk.inc:190 +#: personal/netatalk/class_netatalk.inc:191 +#: personal/netatalk/class_netatalk.inc:193 +#: personal/netatalk/class_netatalk.inc:194 +#: personal/netatalk/class_netatalk.inc:196 +#: personal/netatalk/class_netatalk.inc:197 +msgid "netatalk" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:191 +msgid "POSIX" +msgstr "UNIX" + +#: personal/netatalk/class_netatalk.inc:194 +msgid "netatalk or NFS share" +msgstr "Partage netatalk ou NFS" + +#: personal/netatalk/class_netatalk.inc:228 +#: personal/netatalk/class_netatalk.inc:382 personal/netatalk/netatalk.tpl:4 +msgid "Share" +msgstr "Partage" + +#: personal/netatalk/class_netatalk.inc:292 +#: personal/netatalk/class_netatalk.inc:357 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/netatalk/class_netatalk.inc:376 +msgid "My account" +msgstr "Mon Compte" + +#: personal/netatalk/class_netatalk.inc:381 +msgid "User home path" +msgstr "Chemin du répertoire personnel" + +#: personal/netatalk/main.inc:131 +msgid "Netatalk settings" +msgstr "Configuration Netatalk" + +#: personal/netatalk/netatalk.tpl:16 +msgid "Path" +msgstr "Chemin" diff --git a/trunk/gosa-plugins/netatalk/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/netatalk/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ff00ee69a --- /dev/null +++ b/trunk/gosa-plugins/netatalk/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,119 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/netatalk/class_netatalk.inc:36 +#: personal/netatalk/class_netatalk.inc:372 +msgid "Netatalk" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:37 +#, fuzzy +msgid "Manage netatalk account" +msgstr "Crea estensioni telefoniche" + +#: personal/netatalk/class_netatalk.inc:176 +#: personal/netatalk/class_netatalk.inc:184 +#: personal/netatalk/class_netatalk.inc:185 +#: personal/netatalk/class_netatalk.inc:190 +#: personal/netatalk/class_netatalk.inc:191 +#: personal/netatalk/class_netatalk.inc:193 +#: personal/netatalk/class_netatalk.inc:194 +#: personal/netatalk/class_netatalk.inc:196 +#: personal/netatalk/class_netatalk.inc:197 +msgid "netatalk" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:191 +msgid "POSIX" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:194 +msgid "netatalk or NFS share" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:228 +#: personal/netatalk/class_netatalk.inc:382 personal/netatalk/netatalk.tpl:4 +#, fuzzy +msgid "Share" +msgstr "reset" + +#: personal/netatalk/class_netatalk.inc:292 +#: personal/netatalk/class_netatalk.inc:357 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/netatalk/class_netatalk.inc:376 +msgid "My account" +msgstr "Identità" + +#: personal/netatalk/class_netatalk.inc:381 +#, fuzzy +msgid "User home path" +msgstr "Telefono privato" + +#: personal/netatalk/main.inc:131 +#, fuzzy +msgid "Netatalk settings" +msgstr "Mostra workstation" + +#: personal/netatalk/netatalk.tpl:16 +msgid "Path" +msgstr "" + +#, fuzzy +#~ msgid "This account has no netatalk extensions." +#~ msgstr "Questa identità non ha le estensioni per la posta" + +#, fuzzy +#~ msgid "Remove netatalk account" +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "" +#~ "This account has netatalk features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "Questa identià possiede estensioni di posta." + +#, fuzzy +#~ msgid "Create netatalk account" +#~ msgstr "Crea estensioni di posta" + +#, fuzzy +#~ msgid "" +#~ "This account has netatalk features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "Questa identità non possiede estensioni di posta." + +#, fuzzy +#~ msgid "Saving of user/netatalk account with dn '%s' failed." +#~ msgstr "Crea estensioni telefoniche" + +#, fuzzy +#~ msgid "Removing of user/netatalk account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " +#~ "questo dialogo" + +#~ msgid "Edit" +#~ msgstr "Modifica" diff --git a/trunk/gosa-plugins/netatalk/locale/messages.po b/trunk/gosa-plugins/netatalk/locale/messages.po new file mode 100644 index 000000000..180cc72c5 --- /dev/null +++ b/trunk/gosa-plugins/netatalk/locale/messages.po @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/netatalk/class_netatalk.inc:36 +#: personal/netatalk/class_netatalk.inc:372 +msgid "Netatalk" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:37 +msgid "Manage netatalk account" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:176 +#: personal/netatalk/class_netatalk.inc:184 +#: personal/netatalk/class_netatalk.inc:185 +#: personal/netatalk/class_netatalk.inc:190 +#: personal/netatalk/class_netatalk.inc:191 +#: personal/netatalk/class_netatalk.inc:193 +#: personal/netatalk/class_netatalk.inc:194 +#: personal/netatalk/class_netatalk.inc:196 +#: personal/netatalk/class_netatalk.inc:197 +msgid "netatalk" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:191 +msgid "POSIX" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:194 +msgid "netatalk or NFS share" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:228 +#: personal/netatalk/class_netatalk.inc:382 personal/netatalk/netatalk.tpl:4 +msgid "Share" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:292 +#: personal/netatalk/class_netatalk.inc:357 +msgid "LDAP error" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:376 +msgid "My account" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:381 +msgid "User home path" +msgstr "" + +#: personal/netatalk/main.inc:131 +msgid "Netatalk settings" +msgstr "" + +#: personal/netatalk/netatalk.tpl:16 +msgid "Path" +msgstr "" diff --git a/trunk/gosa-plugins/netatalk/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/netatalk/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b752db2a0 --- /dev/null +++ b/trunk/gosa-plugins/netatalk/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,123 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/netatalk/class_netatalk.inc:36 +#: personal/netatalk/class_netatalk.inc:372 +msgid "Netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:37 +msgid "Manage netatalk account" +msgstr "Netatalk account beheren" + +#: personal/netatalk/class_netatalk.inc:176 +#: personal/netatalk/class_netatalk.inc:184 +#: personal/netatalk/class_netatalk.inc:185 +#: personal/netatalk/class_netatalk.inc:190 +#: personal/netatalk/class_netatalk.inc:191 +#: personal/netatalk/class_netatalk.inc:193 +#: personal/netatalk/class_netatalk.inc:194 +#: personal/netatalk/class_netatalk.inc:196 +#: personal/netatalk/class_netatalk.inc:197 +#, fuzzy +msgid "netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:191 +msgid "POSIX" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:194 +msgid "netatalk or NFS share" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:228 +#: personal/netatalk/class_netatalk.inc:382 personal/netatalk/netatalk.tpl:4 +msgid "Share" +msgstr "Share" + +#: personal/netatalk/class_netatalk.inc:292 +#: personal/netatalk/class_netatalk.inc:357 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/netatalk/class_netatalk.inc:376 +msgid "My account" +msgstr "Mijn account" + +#: personal/netatalk/class_netatalk.inc:381 +#, fuzzy +msgid "User home path" +msgstr "Profielpad" + +#: personal/netatalk/main.inc:131 +msgid "Netatalk settings" +msgstr "Netatalk instellingen" + +#: personal/netatalk/netatalk.tpl:16 +msgid "Path" +msgstr "Pad" + +#~ msgid "This account has no netatalk extensions." +#~ msgstr "Dit account heeft Netatalk mogelijkheden uitgeschakeld." + +#~ msgid "Remove netatalk account" +#~ msgstr "Netatalk account verwijderen" + +#~ msgid "" +#~ "This account has netatalk features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Dit account heeft Netatalkl mogelijkheden ingeschakeld. U kunt deze " +#~ "uitschakelen door de knop hieronder te gebruiken." + +#~ msgid "Create netatalk account" +#~ msgstr "Netatalk account aanmaken" + +#~ msgid "" +#~ "This account has netatalk features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "Dit account heeft geen Netatalk mogelijkheden. U kunt deze inschakelen " +#~ "door de knop hieronder te gebruiken." + +#~ msgid "You must select a share to use." +#~ msgstr "U moet een te gebruiken share selecteren" + +#, fuzzy +#~ msgid "Saving of user/netatalk account with dn '%s' failed." +#~ msgstr "Het opslaan van het Netatalk account is mislukt" + +#, fuzzy +#~ msgid "Removing of user/netatalk account with dn '%s' failed." +#~ msgstr "Het verwijderen van het Netatalk account is mislukt" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Gebruik de 'Bewerk' knop hieronder om de informatie in deze dialoog te " +#~ "veranderen" + +#~ msgid "Edit" +#~ msgstr "Bewerken" diff --git a/trunk/gosa-plugins/netatalk/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/netatalk/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..273c5f10b --- /dev/null +++ b/trunk/gosa-plugins/netatalk/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,116 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/netatalk/class_netatalk.inc:36 +#: personal/netatalk/class_netatalk.inc:372 +msgid "Netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:37 +msgid "Manage netatalk account" +msgstr "Zarządzaj kontem Netatalk" + +#: personal/netatalk/class_netatalk.inc:176 +#: personal/netatalk/class_netatalk.inc:184 +#: personal/netatalk/class_netatalk.inc:185 +#: personal/netatalk/class_netatalk.inc:190 +#: personal/netatalk/class_netatalk.inc:191 +#: personal/netatalk/class_netatalk.inc:193 +#: personal/netatalk/class_netatalk.inc:194 +#: personal/netatalk/class_netatalk.inc:196 +#: personal/netatalk/class_netatalk.inc:197 +#, fuzzy +msgid "netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:191 +msgid "POSIX" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:194 +msgid "netatalk or NFS share" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:228 +#: personal/netatalk/class_netatalk.inc:382 personal/netatalk/netatalk.tpl:4 +msgid "Share" +msgstr "Udział" + +#: personal/netatalk/class_netatalk.inc:292 +#: personal/netatalk/class_netatalk.inc:357 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/netatalk/class_netatalk.inc:376 +msgid "My account" +msgstr "Moje konto " + +#: personal/netatalk/class_netatalk.inc:381 +#, fuzzy +msgid "User home path" +msgstr "Ścieżka do profilu" + +#: personal/netatalk/main.inc:131 +msgid "Netatalk settings" +msgstr "Ustawienia Netatalk" + +#: personal/netatalk/netatalk.tpl:16 +msgid "Path" +msgstr "Ścieżka" + +#~ msgid "This account has no netatalk extensions." +#~ msgstr "To konto nie posiada rozszerzeń Netatalk" + +#~ msgid "Remove netatalk account" +#~ msgstr "Usuń konto Netatalk" + +#~ msgid "" +#~ "This account has netatalk features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "" +#~ "To konto ma włączone cechu Netatalk. Można je wyłączyć klikając poniżej." + +#~ msgid "Create netatalk account" +#~ msgstr "Utwórz konto Netatalk" + +#~ msgid "" +#~ "This account has netatalk features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "To konto ma wyłączone cechy Netatalk. Można je włączyć klikając poniżej." + +#~ msgid "You must select a share to use." +#~ msgstr "Trzeba wybrać udział do użycia." + +#~ msgid "Saving of user/netatalk account with dn '%s' failed." +#~ msgstr "Zapisywanie konta netatalk z dn '%s' nieudane." + +#~ msgid "Removing of user/netatalk account with dn '%s' failed." +#~ msgstr "Usuwanie konta netatalk z dn '%s' nieudane." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Kliknij przycisk 'Edytuj' poniżej, aby zmienić informacje w tym oknie" + +#~ msgid "Edit" +#~ msgstr "Edytuj" diff --git a/trunk/gosa-plugins/netatalk/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/netatalk/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..fc92ebaa5 --- /dev/null +++ b/trunk/gosa-plugins/netatalk/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,120 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/netatalk/class_netatalk.inc:36 +#: personal/netatalk/class_netatalk.inc:372 +msgid "Netatalk" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:37 +#, fuzzy +msgid "Manage netatalk account" +msgstr "Создать телефонный аккаунт" + +#: personal/netatalk/class_netatalk.inc:176 +#: personal/netatalk/class_netatalk.inc:184 +#: personal/netatalk/class_netatalk.inc:185 +#: personal/netatalk/class_netatalk.inc:190 +#: personal/netatalk/class_netatalk.inc:191 +#: personal/netatalk/class_netatalk.inc:193 +#: personal/netatalk/class_netatalk.inc:194 +#: personal/netatalk/class_netatalk.inc:196 +#: personal/netatalk/class_netatalk.inc:197 +msgid "netatalk" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:191 +msgid "POSIX" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:194 +msgid "netatalk or NFS share" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:228 +#: personal/netatalk/class_netatalk.inc:382 personal/netatalk/netatalk.tpl:4 +#, fuzzy +msgid "Share" +msgstr "сброс" + +#: personal/netatalk/class_netatalk.inc:292 +#: personal/netatalk/class_netatalk.inc:357 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/netatalk/class_netatalk.inc:376 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/netatalk/class_netatalk.inc:381 +#, fuzzy +msgid "User home path" +msgstr "Домашний телефон" + +#: personal/netatalk/main.inc:131 +#, fuzzy +msgid "Netatalk settings" +msgstr "Сетевые настройки" + +#: personal/netatalk/netatalk.tpl:16 +msgid "Path" +msgstr "" + +#, fuzzy +#~ msgid "This account has no netatalk extensions." +#~ msgstr "В этой учетной записи нет почтовых расширений." + +#, fuzzy +#~ msgid "Remove netatalk account" +#~ msgstr "Удалить настройки эл. почты" + +#, fuzzy +#~ msgid "" +#~ "This account has netatalk features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "" +#~ "В этой учетной записи есть настройки электронной почты. Вы можете удалить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "Create netatalk account" +#~ msgstr "Создать настройки запись эл. почты" + +#, fuzzy +#~ msgid "" +#~ "This account has netatalk features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "" +#~ "В этой учетной записи нет настроек электронной почты. Вы можете добавить " +#~ "их, щелкнув ниже." + +#, fuzzy +#~ msgid "Saving of user/netatalk account with dn '%s' failed." +#~ msgstr "Создать телефонный аккаунт" + +#, fuzzy +#~ msgid "Removing of user/netatalk account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." + +#~ msgid "Edit" +#~ msgstr "Изменить" diff --git a/trunk/gosa-plugins/netatalk/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/netatalk/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..2930995a8 --- /dev/null +++ b/trunk/gosa-plugins/netatalk/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,117 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/netatalk/class_netatalk.inc:36 +#: personal/netatalk/class_netatalk.inc:372 +msgid "Netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:37 +msgid "Manage netatalk account" +msgstr "管理 netatalk 账号" + +#: personal/netatalk/class_netatalk.inc:176 +#: personal/netatalk/class_netatalk.inc:184 +#: personal/netatalk/class_netatalk.inc:185 +#: personal/netatalk/class_netatalk.inc:190 +#: personal/netatalk/class_netatalk.inc:191 +#: personal/netatalk/class_netatalk.inc:193 +#: personal/netatalk/class_netatalk.inc:194 +#: personal/netatalk/class_netatalk.inc:196 +#: personal/netatalk/class_netatalk.inc:197 +#, fuzzy +msgid "netatalk" +msgstr "Netatalk" + +#: personal/netatalk/class_netatalk.inc:191 +msgid "POSIX" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:194 +msgid "netatalk or NFS share" +msgstr "" + +#: personal/netatalk/class_netatalk.inc:228 +#: personal/netatalk/class_netatalk.inc:382 personal/netatalk/netatalk.tpl:4 +msgid "Share" +msgstr "共享" + +#: personal/netatalk/class_netatalk.inc:292 +#: personal/netatalk/class_netatalk.inc:357 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/netatalk/class_netatalk.inc:376 +msgid "My account" +msgstr "我的账号" + +#: personal/netatalk/class_netatalk.inc:381 +#, fuzzy +msgid "User home path" +msgstr "Profile path" + +#: personal/netatalk/main.inc:131 +msgid "Netatalk settings" +msgstr "Netatalk 设置" + +#: personal/netatalk/netatalk.tpl:16 +msgid "Path" +msgstr "路径" + +#~ msgid "This account has no netatalk extensions." +#~ msgstr "这个账号没有 netatalk 扩展。" + +#~ msgid "Remove netatalk account" +#~ msgstr "删除 netatalk 账号" + +#~ msgid "" +#~ "This account has netatalk features enabled. You can disable them by " +#~ "clicking below." +#~ msgstr "这个账户 netatalk 功能已启用。您可以点击下面的按钮禁用。" + +#~ msgid "Create netatalk account" +#~ msgstr "创建 netatalk 账号" + +#~ msgid "" +#~ "This account has netatalk features disabled. You can enable them by " +#~ "clicking below." +#~ msgstr "这个账户 netatalk 功能已禁用。您可以点击下面的按钮来启用。" + +#~ msgid "You must select a share to use." +#~ msgstr "您必须选择一个要使用的共享" + +#, fuzzy +#~ msgid "Saving of user/netatalk account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Removing of user/netatalk account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#~ msgid "Ok" +#~ msgstr "好" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "点击下面的“编辑”按钮修改该对话框内的信息" + +#~ msgid "Edit" +#~ msgstr "编辑" diff --git a/trunk/gosa-plugins/netatalk/personal/netatalk/class_netatalk.inc b/trunk/gosa-plugins/netatalk/personal/netatalk/class_netatalk.inc new file mode 100644 index 000000000..c09a13a9e --- /dev/null +++ b/trunk/gosa-plugins/netatalk/personal/netatalk/class_netatalk.inc @@ -0,0 +1,389 @@ + + Copyright (C) 2006 Bernd Zeimetz + + 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 + */ + +/*! \brief netatalk plugin + \author Gina Haeussge + \author Bernd Zeimetz + \version 0.1 + \date 21.3.2006 + + This class provides the functionality to read and write all attributes + relevant for netatalk from/to the LDAP. It does syntax checking + and displays the formulars required. + */ + +class netatalk extends plugin { + + /* Definitions */ + var $plHeadline = "Netatalk"; + var $plDescription = "Manage netatalk account"; + + var $view_logged = FALSE; + + /* Plugin specific values */ + var $apple_user_homepath_raw = ""; + var $apple_user_homeurl_raw = ""; + var $apple_user_homeurl_xml = ""; + var $apple_user_homeurl = ""; + var $apple_user_homeDirectory = ""; + var $apple_user_share = ""; + var $shares = array(); + var $shares_settings = array(); + var $selectedshare = ""; + var $mountDirectory = "/Network/Servers"; + + /* Attributes to save to LDAP */ + var $attributes = array ("apple_user_homeurl", "apple_user_homeDirectory"); + var $CopyPasteVars= array("apple_user_homeurl", "apple_user_homeDirectory", + "apple_user_share","shares_settings","apple_user_homepath_raw", + "apple_user_homeurl_raw","apple_user_homeurl_xml","apple_user_homeurl", + "selectedshare","mountDirectory"); + + /* Attributes to use in smarty template */ + var $smarty_attributes = array ("apple_user_homepath_raw", "shares", "selectedshare"); + + /* Attributes to save from $_POST */ + var $post_attributes = array ("netatalkShare" => "apple_user_share", + "netatalkUserHomepath" => "apple_user_homepath_raw"); + + /* Objectclasses */ + var $objectclasses = array ("apple-user"); + var $uid =""; + + /* The constructor just saves a copy of the config. You may add what ever you need. */ + function netatalk(&$config, $dn = NULL) + { + + /* Include config object */ + $this->config = $config; + plugin::plugin($config, $dn); + + /* set user id */ + if(isset($this->attrs['uid'])){ + $this->uid = $this->attrs['uid'][0]; + } + + /* Netatalk attribute include '-' and we can't handle thos attribute names. + Copy all thos attribute into a useable name. + */ + foreach($this->attributes as $val) { + $name = str_replace('_', '-', $val); + if (isset($this->attrs[$name][0])) { + $this->$val = $this->attrs[$name][0]; + } + } + + /* Extract homepath value + */ + if (strlen($this->apple_user_homeDirectory) >0) { + $this->apple_user_homepath_raw = + substr($this->apple_user_homeDirectory, strrpos($this->apple_user_homeDirectory, '/') + 1 ); + } + + /* get share list an set default values */ + $this->get_netatalk_shares(); + $this->apple_user_share = $this->selectedshare; + + /* Save initial account state */ + $this->initially_was_account = $this->is_account; + } + + + + /* Get netatalk shares */ + function get_netatalk_shares() + { + /* Get netatalk shares */ + $this->shares = array(); + $ldap = $this->config->get_ldap_link(); + + if($this->dn === "new" || $this->dn === NULL) { + $base = session::get('CurrentMainBase'); + } else { + $base = preg_replace("/^[^,]+,".preg_quote(get_people_ou(), '/')."/","",$this->dn); + } + + $ldap->cd($base); + $ldap->search ("(&(objectClass=mount)(|(mountType=url)(mountType=nfs))(cn=*))"); + + while ($attrs = $ldap->fetch()){ + $tmp = split(":", $attrs["cn"][0]); + $host = trim($tmp[0]); + $dir = trim($tmp[1]); + $mountType = trim($attrs["mountType"][0]); + if ($mountType == "url") { + $mountTypeReal = "netatalk"; + } else { + $mountTypeReal = $mountType; + } + $share = $attrs["cn"][0]. " (" . $mountTypeReal . ")"; + $this->shares[$share] = $share; + $this->shares_settings[$share]["mountType"]=$mountType; + $this->shares_settings[$share]["dir"]=$dir; + $this->shares_settings[$share]["host"]=$host; + + $oldShare=substr($this->apple_user_homeDirectory, 0, strrpos($this->apple_user_homeDirectory, '/')); + $newShare=($this->mountDirectory . "/". $host . $dir ); + if (strcmp($oldShare, $newShare)==0) { + $this->selectedshare = $share; + } + } + asort($this->shares); + } + + + /* Execute the plugin, produce the output. */ + function execute() + { + plugin :: execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Use the smarty templating engine here... */ + $smarty = get_smarty(); + $display = ""; + + /* Do we need to flip is_account state? */ + if (isset ($_POST['modify_state'])) { + $this->is_account = !$this->is_account; + } + + /* Do we represent a valid account? */ + if (!$this->is_account && $this->parent === NULL) { + $display = "\"\"src=\"images/small-error.png\" ". + msgPool::noValidExtension(_("netatalk")).""; + $display .= back_to_main(); + return ($display); + } + + /* Show tab dialog headers */ + if ($this->parent !== NULL) { + if ($this->is_account) { + $display = $this->show_disable_header(msgPool::removeFeaturesButton(_("netatalk")), + msgPool::featuresEnabled(_("netatalk"))); + } else { + $errmsg=""; + $obj = $this->parent->by_object['posixAccount']; + if (!($obj->is_account) ) { + $display = $this->show_enable_header(msgPool::addFeaturesButton(_("netatalk")), + msgPool::featuresDisabled(_("netatalk"), _("POSIX")), TRUE); + } elseif (count($this->shares)== 0) { + $display = $this->show_enable_header(msgPool::addFeaturesButton(_("netatalk")), + msgPool::featuresDisabled(_("netatalk"), _("netatalk or NFS share")), TRUE); + } else { + $display = $this->show_enable_header(msgPool::addFeaturesButton(_("netatalk")), + msgPool::featuresDisabled(_("netatalk"))); + } + return ($display); + } + } + + /* Assign attributes + */ + foreach ($this->smarty_attributes as $val) { + $smarty->assign("$val", $this-> $val); + } + + /* Assign ACLs + */ + $tmp = $this->plInfo(); + $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + foreach($tmp['plProvidedAcls'] as $name => $desc){ + $smarty->assign($name."ACL",$this->getacl($name,$SkipWrite)); + } + + /* Let smarty fetch and process the page. */ + $display .= ($smarty->fetch(get_template_path('netatalk.tpl', TRUE, dirname(__FILE__)))); + return ($display); + } + + + /* Check if we have correct data */ + function check() + { + $message = array (); + if (strlen($this->apple_user_share) == 0) { + $message[] = msgPool::required(_("Share")); + } + return ($message); + } + + + /* Save to LDAP */ + function save() + { + + /* remove a / at the end of the homepath, we neither need it there nor + * do we want to check for it later. + */ + if(substr($this->apple_user_homepath_raw, -1, 1) === '/') { + $this->apple_user_homepath_raw=substr($this->apple_user_homepath_raw, 0, -1); + } + + $mountType=$this->shares_settings[$this->apple_user_share]["mountType"]; + $dir=$this->shares_settings[$this->apple_user_share]["dir"]; + $host=$this->shares_settings[$this->apple_user_share]["host"]; + + /* Convert raw data to wished format */ + if ($this->is_account) { + if($mountType=="url") { + $this->apple_user_homeurl_xml = 'afp://'.$host.$dir . ''. + $this->apple_user_homepath_raw.''; + $this->apple_user_homeurl = base64_encode($this->apple_user_homeurl_xml); + } else { + $this->apple_user_homeurl = ""; + } + $this->apple_user_homeDirectory = $this->mountDirectory . '/' . $host . + $dir . '/' . $this->apple_user_homepath_raw; + } else { + $this->apple_user_homeurl = ""; + $this->apple_user_homeDirectory = ""; + } + + $ldap = $this->config->get_ldap_link(); + plugin :: save(); + + /* Transform variable names from '_' to '-'. + */ + foreach ($this->attributes as $val) { + unset($this->attrs[$val]); + $name = str_replace('_', '-', $val); + if ($this->$val != "") { + $this->attrs[$name] = $this->$val; + } else { + $this->attrs[$name] = array(); + } + } + + /* Write back to ldap */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify($this->attrs); + + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account) { + if ($this->is_modified) { + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + } + + + /* Use Save_object for every Post handling + */ + function save_object() + { + if (isset ($_POST['netatalkTab'])) { + /* Save ldap attributes */ + plugin :: save_object(); + + foreach($this->post_attributes as $acl => $val) { + if(!preg_match("/w/",$this->getacl($acl))) continue; + if (isset ($_POST[$val])) { + $this->$val = $_POST[$val]; + } else { + $this->$val = ""; + } + } + $this->apple_user_homeurl_raw = 'afp://' . $this->apple_user_share; + } + } + + + function remove_from_parent() + { + + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account) { + return; + } + + /* include global link_info */ + $ldap = $this->config->get_ldap_link(); + + /* Remove and write to LDAP */ + plugin :: remove_from_parent(); + $this->cleanup(); + + /* Attribute name conversion "_" to "-" */ + foreach($this->attributes as $val){ + unset($this->attrs[$val]); + $name = preg_replace("/_/","-",$val); + $this->attrs[$name] = array(); + } + + @ DEBUG(DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $this->attributes, "Save"); + $ldap->cd($this->dn); + + $ldap->modify($this->attrs); + + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* remove the entry from LDAP */ + unset ($this->attrs['uid']); + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove', array("uid" => $this->uid)); + } + + + /* Return plugin informations for acl handling*/ + static function plInfo() + { + return (array( + "plDescription" => _("Netatalk"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 6, + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + "netatalkUserHomepath" => _("User home path"), + "netatalkShare" => _("Share")) + )); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/netatalk/personal/netatalk/main.inc b/trunk/gosa-plugins/netatalk/personal/netatalk/main.inc new file mode 100644 index 000000000..8fd464a4c --- /dev/null +++ b/trunk/gosa-plugins/netatalk/personal/netatalk/main.inc @@ -0,0 +1,136 @@ + + Copyright (C) 2006 Bernd Zeimetz + + 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 + */ + +/* Remove locks created by this plugin +*/ +$lock_msg=""; +if ($remove_lock || isset ($_POST['edit_cancel'])){ + if(session::is_set('netatalk') && session::is_set('edit')){ + del_lock($ui->dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('netatalk'); + session::un_set('edit'); + +}else{ + + /* Reset requested? */ + if (isset ($_POST['edit_cancel'])) { + session::un_set('edit'); + session::un_set('netatalk'); + } + + /* Create netatalk object on demand */ + if (!session::is_set('netatalk') || (isset ($_GET['reset']) && $_GET['reset'] == 1)) { + $netatalk = new netatalk($config, $ui->dn); + $netatalk->enable_CSN_check(); + $netatalk->set_acl_base($ui->dn); + $netatalk->set_acl_category("users"); + session::set('netatalk',$netatalk); + } + $netatalk = session::get('netatalk'); + + /* save changes back to object */ + if (session::is_set('edit')) { + $netatalk->save_object(); + } + + /* Enter edit mode? */ + if (isset ($_POST['edit'])) { + + /* Check locking */ + if (($username = get_lock($ui->dn)) != "") { + session::set('back_plugin',$plug); + $lock_msg = gen_locked_message ($username, $ui->dn); + } + + /* Lock the current entry */ + add_lock($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + + /* save changes to LDAP and disable edit mode */ + if (isset ($_POST['edit_finish'])) { + + /* Perform checks */ + $message = $netatalk->check(); + + /* No errors, save object */ + if (count($message) == 0) { + $netatalk->save(); + del_lock($ui->dn); + session::un_set('edit'); + + /* Remove object */ + session::un_set('netatalk'); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + if(!empty($lock_msg)){ + $display = $lock_msg; + }else{ + $display.= $netatalk->execute (); + } + + + /* Store changes in session */ + if (session::is_set('edit')) { + session::set('netatalk',$netatalk); + } + + $info = ""; + /* Show page footer depending on the mode */ + if ($netatalk->is_account) { + $display .= "

"; + + /* Are we in edit mode? */ + if (session::is_set('edit')) { + $display .= "\n"; + $display .= " "; + $display .= "\n"; + $info = "\"\" ".$ui->dn." "; + } else { + $info = "\"\" ".$ui->dn." "; + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/netatalk"))){ + $info .= "\"\" ".msgPool::clickEditToChange(); + $display .= "\n"; + } + + $display .= "\n"; + } + $display .= "

\n"; + } + + /* Page header*/ + $display = print_header(get_template_path('plugins/netatalk/images/plugin.png'), _("Netatalk settings"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/netatalk/personal/netatalk/netatalk.tpl b/trunk/gosa-plugins/netatalk/personal/netatalk/netatalk.tpl new file mode 100644 index 000000000..c5bcc8ecc --- /dev/null +++ b/trunk/gosa-plugins/netatalk/personal/netatalk/netatalk.tpl @@ -0,0 +1,33 @@ + + + + + + + + +
+ + + +{render acl=$netatalkShareACL} + +{/render} +
+ + +{render acl=$netatalkUserHomepathACL} + +{/render} +
+ + + + + diff --git a/trunk/gosa-plugins/netatalk/plugin.dsc b/trunk/gosa-plugins/netatalk/plugin.dsc new file mode 100644 index 000000000..a67711391 --- /dev/null +++ b/trunk/gosa-plugins/netatalk/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = netatalk +description = "Apple account management" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = "systems" diff --git a/trunk/gosa-plugins/opengroupware/help/guide.xml b/trunk/gosa-plugins/opengroupware/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/opengroupware/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opengroupware/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..4653e2891 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,81 @@ +# translation of messages.po to +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2008-04-04 09:30+0200\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: personal/connectivity/opengroupware/opengw.tpl:1 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:338 +msgid "Opengroupware" +msgstr "Opengroupware" + +#: personal/connectivity/opengroupware/opengw.tpl:8 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:348 +msgid "Location team" +msgstr "Örtliches Team" + +#: personal/connectivity/opengroupware/opengw.tpl:21 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:349 +msgid "Template user" +msgstr "Benutzer-Vorlage" + +#: personal/connectivity/opengroupware/opengw.tpl:33 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:350 +msgid "Locked" +msgstr "Gesperrt" + +#: personal/connectivity/opengroupware/opengw.tpl:48 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:351 +msgid "Teams" +msgstr "Teams" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:6 +msgid "Opengroupware account" +msgstr "Opengroupware-Konto" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:7 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:167 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +msgid "Configuration error" +msgstr "Konfigurations-Fehler" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +msgid "Open Groupware database" +msgstr "Opengroupware-Datenbank" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +msgid "Open Groupware" +msgstr "Open Groupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +msgid "Open groupware account settings" +msgstr "Opengroupware Konto-Einstellungen" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:343 +msgid "My account" +msgstr "Mein Konto" diff --git a/trunk/gosa-plugins/opengroupware/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opengroupware/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e6d0bbfd8 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,88 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/connectivity/opengroupware/opengw.tpl:1 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:338 +msgid "Opengroupware" +msgstr "Cuenta OpenGroupware" + +#: personal/connectivity/opengroupware/opengw.tpl:8 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:348 +msgid "Location team" +msgstr "Equipo de localización" + +#: personal/connectivity/opengroupware/opengw.tpl:21 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:349 +msgid "Template user" +msgstr "Plantilla de usuario" + +#: personal/connectivity/opengroupware/opengw.tpl:33 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:350 +msgid "Locked" +msgstr "Bloqueado" + +#: personal/connectivity/opengroupware/opengw.tpl:48 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:351 +msgid "Teams" +msgstr "Equipos" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:6 +msgid "Opengroupware account" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:7 +msgid "This does something" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:167 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Configuration error" +msgstr "Se puede escribir en la configuración" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#, fuzzy +msgid "Open Groupware database" +msgstr "Cuenta OpenGroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Open Groupware" +msgstr "Cuenta OpenGroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +msgid "Open groupware account settings" +msgstr "Activar la configuración de la Cuenta OpenGroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:343 +msgid "My account" +msgstr "Mi cuenta" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "Configuración de la base de datos de FAX" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "¡No puedo conectar al servidor de base de datos postgresql!." diff --git a/trunk/gosa-plugins/opengroupware/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opengroupware/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b658b292a --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,74 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2008-06-08 15:35+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/connectivity/opengroupware/opengw.tpl:1 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:338 +msgid "Opengroupware" +msgstr "" + +#: personal/connectivity/opengroupware/opengw.tpl:8 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:348 +msgid "Location team" +msgstr "Emplacement de l'équipe" + +#: personal/connectivity/opengroupware/opengw.tpl:21 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:349 +msgid "Template user" +msgstr "Modèle d'utilisateur" + +#: personal/connectivity/opengroupware/opengw.tpl:33 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:350 +msgid "Locked" +msgstr "Verrouillé" + +#: personal/connectivity/opengroupware/opengw.tpl:48 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:351 +msgid "Teams" +msgstr "Equipes" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:6 +msgid "Opengroupware account" +msgstr "Compte Opengroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:7 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:167 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +msgid "Configuration error" +msgstr "Erreur de configuration" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +msgid "Open Groupware database" +msgstr "Base de données Opengroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +msgid "Open Groupware" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +msgid "Open groupware account settings" +msgstr "Préférences du compte Opengroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +msgid "Connectivity addon" +msgstr "Connectivité" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:343 +msgid "My account" +msgstr "Mon Compte" diff --git a/trunk/gosa-plugins/opengroupware/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opengroupware/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..10d07b007 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,92 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/connectivity/opengroupware/opengw.tpl:1 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:338 +#, fuzzy +msgid "Opengroupware" +msgstr "Estenzioni PHPGroupware" + +#: personal/connectivity/opengroupware/opengw.tpl:8 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:348 +#, fuzzy +msgid "Location team" +msgstr "Nome locazione" + +#: personal/connectivity/opengroupware/opengw.tpl:21 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:349 +#, fuzzy +msgid "Template user" +msgstr "Template" + +#: personal/connectivity/opengroupware/opengw.tpl:33 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:350 +msgid "Locked" +msgstr "" + +#: personal/connectivity/opengroupware/opengw.tpl:48 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:351 +msgid "Teams" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:6 +#, fuzzy +msgid "Opengroupware account" +msgstr "Estenzioni PHPGroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:7 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:167 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Configuration error" +msgstr "File di configurazione" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#, fuzzy +msgid "Open Groupware database" +msgstr "Estenzioni PHPGroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Open Groupware" +msgstr "Estenzioni PHPGroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +#, fuzzy +msgid "Open groupware account settings" +msgstr "Estenzioni PHPGroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:343 +msgid "My account" +msgstr "Identità" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "Scarica il file di configurazione" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Impossibile connettersi al server del database!" diff --git a/trunk/gosa-plugins/opengroupware/locale/messages.po b/trunk/gosa-plugins/opengroupware/locale/messages.po new file mode 100644 index 000000000..c61244e7b --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/locale/messages.po @@ -0,0 +1,76 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/opengroupware/opengw.tpl:1 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:338 +msgid "Opengroupware" +msgstr "" + +#: personal/connectivity/opengroupware/opengw.tpl:8 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:348 +msgid "Location team" +msgstr "" + +#: personal/connectivity/opengroupware/opengw.tpl:21 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:349 +msgid "Template user" +msgstr "" + +#: personal/connectivity/opengroupware/opengw.tpl:33 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:350 +msgid "Locked" +msgstr "" + +#: personal/connectivity/opengroupware/opengw.tpl:48 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:351 +msgid "Teams" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:6 +msgid "Opengroupware account" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:7 +msgid "This does something" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:167 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +msgid "Configuration error" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +msgid "Open Groupware database" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +msgid "Open Groupware" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +msgid "Open groupware account settings" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:343 +msgid "My account" +msgstr "" diff --git a/trunk/gosa-plugins/opengroupware/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opengroupware/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..394485e7a --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,92 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/opengroupware/opengw.tpl:1 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:338 +msgid "Opengroupware" +msgstr "OpenGroupware" + +#: personal/connectivity/opengroupware/opengw.tpl:8 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:348 +msgid "Location team" +msgstr "Teamlocatie" + +#: personal/connectivity/opengroupware/opengw.tpl:21 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:349 +msgid "Template user" +msgstr "Sjabloongebruiker" + +#: personal/connectivity/opengroupware/opengw.tpl:33 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:350 +msgid "Locked" +msgstr "Geblokkeerd" + +#: personal/connectivity/opengroupware/opengw.tpl:48 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:351 +msgid "Teams" +msgstr "Teams" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:6 +msgid "Opengroupware account" +msgstr "OpenGroupware account" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:7 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:167 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Configuration error" +msgstr "Configuratie bestand" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#, fuzzy +msgid "Open Groupware database" +msgstr "OpenGroupware account" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Open Groupware" +msgstr "OpenGroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +#, fuzzy +msgid "Open groupware account settings" +msgstr "OpenGroupware account" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +#, fuzzy +msgid "Connectivity addon" +msgstr "Verbindingen" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:343 +msgid "My account" +msgstr "Mijn account" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "FAX database" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Kan niet verbinden met de database server!" diff --git a/trunk/gosa-plugins/opengroupware/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opengroupware/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..1fda0bd95 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,86 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/connectivity/opengroupware/opengw.tpl:1 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:338 +msgid "Opengroupware" +msgstr "Opengroupware" + +#: personal/connectivity/opengroupware/opengw.tpl:8 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:348 +msgid "Location team" +msgstr "Zespół lokacji" + +#: personal/connectivity/opengroupware/opengw.tpl:21 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:349 +msgid "Template user" +msgstr "Szablon użytkownika" + +#: personal/connectivity/opengroupware/opengw.tpl:33 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:350 +msgid "Locked" +msgstr "Zablokowane" + +#: personal/connectivity/opengroupware/opengw.tpl:48 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:351 +msgid "Teams" +msgstr "Zespoły" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:6 +msgid "Opengroupware account" +msgstr "Konto Opengroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:7 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:167 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Configuration error" +msgstr "Plik konfiguracyjny" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#, fuzzy +msgid "Open Groupware database" +msgstr "Konto Opengroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Open Groupware" +msgstr "Opengroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +msgid "Open groupware account settings" +msgstr "Ustawienia Konta Opengroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:343 +msgid "My account" +msgstr "Moje konto " + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "Konfiguracja bazy FAX" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Nie można połączyć się z serwerem baz danych!" diff --git a/trunk/gosa-plugins/opengroupware/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opengroupware/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..5caa92710 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,91 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/connectivity/opengroupware/opengw.tpl:1 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:338 +#, fuzzy +msgid "Opengroupware" +msgstr "Учетная запись Groupware" + +#: personal/connectivity/opengroupware/opengw.tpl:8 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:348 +#, fuzzy +msgid "Location team" +msgstr "Местоположение" + +#: personal/connectivity/opengroupware/opengw.tpl:21 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:349 +#, fuzzy +msgid "Template user" +msgstr "Шаблон" + +#: personal/connectivity/opengroupware/opengw.tpl:33 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:350 +msgid "Locked" +msgstr "" + +#: personal/connectivity/opengroupware/opengw.tpl:48 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:351 +msgid "Teams" +msgstr "" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:6 +#, fuzzy +msgid "Opengroupware account" +msgstr "Учетная запись Groupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:7 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:167 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Configuration error" +msgstr "Настроить" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#, fuzzy +msgid "Open Groupware database" +msgstr "Учетная запись Groupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Open Groupware" +msgstr "Учетная запись Groupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +#, fuzzy +msgid "Open groupware account settings" +msgstr "Учетная запись Groupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:343 +msgid "My account" +msgstr "Моя учетная запись" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "Базы данных" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Невозможно подключиться к серверу базы данных!" diff --git a/trunk/gosa-plugins/opengroupware/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opengroupware/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..84c6c0d4c --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,90 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:34+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/connectivity/opengroupware/opengw.tpl:1 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:338 +msgid "Opengroupware" +msgstr "Opengroupware" + +#: personal/connectivity/opengroupware/opengw.tpl:8 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:348 +msgid "Location team" +msgstr "本地组" + +#: personal/connectivity/opengroupware/opengw.tpl:21 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:349 +msgid "Template user" +msgstr "模板用户" + +#: personal/connectivity/opengroupware/opengw.tpl:33 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:350 +msgid "Locked" +msgstr "锁定" + +#: personal/connectivity/opengroupware/opengw.tpl:48 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:351 +msgid "Teams" +msgstr "团队" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:6 +msgid "Opengroupware account" +msgstr "Opengroupware 账号" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:7 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:167 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Configuration error" +msgstr "配置文件" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:172 +#, fuzzy +msgid "Open Groupware database" +msgstr "Opengroupware 账号" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:180 +#, fuzzy +msgid "Open Groupware" +msgstr "Opengroupware" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +#, fuzzy +msgid "Open groupware account settings" +msgstr "Opengroupware 账号" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:339 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/opengroupware/class_opengwAccount.inc:343 +msgid "My account" +msgstr "我的账号" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "传真数据库" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "无法连接到数据库!" diff --git a/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_opengw.inc b/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_opengw.inc new file mode 100644 index 000000000..de50ef936 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_opengw.inc @@ -0,0 +1,547 @@ +ogo = new pgre_sql($username,$password,$host,$db); + + if($this->ogo->is_connected){ + $this->validLocationTeam = $this->ogo->GetLocationTeam(); + $this->validTemplateUser = $this->ogo->GetTemplateUser(); + $this->validTeams = $this->ogo->GetTeams(); + $this->connected = true; + }else{ + $this->validLocationTeam = array();//$this->ogo->GetLocationTeam(); + $this->validTemplateUser = array();//$this->ogo->GetTemplateUser(); + $this->validTeams = array();//$this->ogo->GetTeams(); + $this->connected = false; + } + } + + function SetInfos($infos) + { + if(isset($infos['name'])) { + $infos['name1'] = $infos['name']; + } + $this->info = $infos; + } + + function GetInfos($uid) + { + $ret = array(); + $qry = "SELECT is_person,is_account,is_intra_account,is_extra_account, + number,owner_id,object_version,company_id,template_user_id,is_locked, + name,firstname,description,salutation,login,degree,birthday,sex + FROM person WHERE login='".$uid."';"; + $res = $this->ogo->FetchAllRows($this->ogo->Query($qry)); + $ret = $res[0]; + + $qry = "SELECT street,zip,zipcity,country,state FROM address WHERE company_id = ".$ret['company_id']." limit 1;"; + $res = $this->ogo->FetchAllRows($this->ogo->Query($qry)); + $ret = array_merge($ret,$res[0]); + + $qry = "SELECT company_id FROM company_assignment + WHERE (sub_company_id=".$ret['company_id'].") + AND company_id IN + (SELECT company_id FROM team WHERE (is_team=1) + AND + company_id NOT IN (SELECT company_id FROM team WHERE is_location_team=1));"; + $res = $this->ogo->FetchAllRows($this->ogo->Query($qry)); + if(is_array($res)){ + foreach($res as $r){ + $ret['TeamIDis'][]=$r['company_id']; + } + }else{ + $ret['TeamIDis']=array(); + } + + $qry = "SELECT value_string from company_value WHERE company_id=".$ret['company_id'].";"; + $res = $this->ogo->FetchAllRows($this->ogo->Query($qry)); + $ret = array_merge($ret,$res[0]); + + $qry ="SELECT company_id FROM company_assignment + WHERE (sub_company_id=".$ret['company_id'].") + AND company_id IN (SELECT company_id FROM team WHERE (is_location_team=1));"; + $res = $this->ogo->FetchAllRows($this->ogo->Query($qry)); + $ret['LocationTeamID'] = $res[0]['company_id']; + + return($ret); + } + + function Perform($option) + { + if(!in_array($option,array("ADD","EDIT","REMOVE"))){ + $this->LastError = sprintf("Option '%s' is not allowed, possible options are 'ADD' 'EDIT' 'REMOVE'.",$option); + return(false); + }else{ + $this->option = $option; + if(($this->option == "EDIT")||($this->option=="ADD")){ + + /* Static variables */ + if(!isset($this->info['is_person'])){ + $this->info['is_person'] = 1; + } + + if(!isset($this->is_account)){ + $this->info['is_account'] = 1; + } + + if(!isset($this->info['is_intra_account'])){ + $this->info['is_intra_account'] = 1; + } + + if(!isset($this->info['is_extra_account'])){ + $this->info['is_extra_account'] = 0; + } + + if(!isset($this->info['owner_id'])){ + $this->info['owner_id'] = 10000; + } + + if(!isset($this->info['is_team'])){ + $this->info['is_team'] = 0; + } + + $this->InfoOK = $this->checkInfos(); + + if($this->InfoOK){ + $qry = "SELECT * FROM person WHERE login='".$this->info['login']."';"; + $ist = $this->ogo->FetchAllRows($this->ogo->Query($qry)); + + if($this->option == "ADD"){ + if($this->CheckExistence()){ + $this->LastError="Can't add entry already exists."; + return(false); + }else{ + $this->info['db_status'] = "inserted"; + $this->info['object_version'] = 1; + return($this->ADD()); + } + }else{ + if(!$this->CheckExistence()){ + $this->LastError="Can't edit entry, entry doesn't exists."; + return(false); + }else{ + $this->info['db_status'] = "updated"; + $this->info['object_version'] = $ist[0]['object_version']++; + return($this->EDIT()); + } + } + }else{ + return($this->InfoOK); + } + } + if($this->option == "REMOVE"){ + + if((!isset($this->info['login']))||(empty($this->info['login']))){ + $this->LastError = "Require login to detect existence"; + return(false); + }else{ + + if($this->CheckExistence()){ + return($this->REMOVE()); + }else{ + $this->LastError="Can't remove non existing entry"; + return(false); + } + } + } + } + } + + function CheckExistence() + { + /* Check if thios entry already exists */ + $qry = "SELECT login,name FROM person WHERE login='".$this->info['login']."';"; + $ist = $this->ogo->FetchAllRows($this->ogo->Query($qry)); + if($ist){ + return(true); + }else{ + return(false); + } + } + + function checkInfos() + { + foreach($this->MUST as $name){ + if((!isset($this->info[$name]))||(empty($this->info[$name]))){ + $this->LastError = sprintf("Must attribute '%s' wasn't set.",$name); + return(false); + } + } + + foreach($this->MAY as $name){ + if((!isset($this->info[$name]))||(empty($this->info[$name]))){ + $this->info[$name] = false; + } + } + + $tmp = array(false,"",0); + foreach($this->validLocationTeam as $id){ + $tmp[]= $id['company_id']; + } + if(!in_array($this->info['LocationTeamID'],$tmp)){ + $this->LastError = "Given 'Location Team' is invalid."; + return(false); + } + + $tmp = array(); + foreach($this->validTemplateUser as $id){ + $tmp[]= $id['company_id']; + } + if(!in_array($this->info['template_user_id'],$tmp)){ + $this->LastError = "Given 'Template User ID' is invalid."; + return(false); + } + + + $tmp = array(); + foreach($this->validTeams as $id){ + $tmp[]= $id['company_id']; + } + if(is_array($this->info['TeamIDis'])){ + foreach($this->info['TeamIDis'] as $id){ + if(!in_array($id,$tmp)){ + $this->LastError = sprintf("Given 'Team ID':%s is invalid.",$id); + return(false); + } + } + } + return(true); + } + + function REMOVE() + { + $qry = "SELECT * FROM person WHERE login='".$this->info['login']."';"; + $ist = $this->ogo->FetchAllRows($this->ogo->Query($qry)); + if((!$ist)||(!isset($ist[0]['company_id']))||($ist[0]['company_id']<=0)){ + $this->LastError(sprintf("Can't get company id for login %s",$this->info['login'])); + return(false); + }else{ + + $company_id = $ist[0]['company_id']; + + $qry = "UPDATE person SET login='SKY".$company_id.$this->info['login']."', is_account=0, is_intra_account=0 WHERE company_id=".$company_id.";"; + $this->ogo->Query($qry); + /* + $this->ogo->Query("DELETE FROM telephone WHERE company_id=".$company_id.";"); + $this->ogo->Query("DELETE FROM address WHERE company_id=".$company_id.";"); + $this->ogo->Query("DELETE FROM company_info WHERE company_id=".$company_id.";"); + $this->ogo->Query("DELETE FROM company_value WHERE company_id=".$company_id.";"); + $this->ogo->Query("DELETE FROM company_assignment WHERE sub_company_id=".$company_id.";"); + $this->ogo->Query("DELETE FROM person WHERE company_id=".$company_id.";"); + $this->ogo->Query("DELETE FROM staff WHERE company_id=".$company_id.";"); + */ + return(true); + } + } + + function ADD() + { + /* + Entry settings for personm table + */ + $arr = array( "company_id","object_version","owner_id","template_user_id", + "is_person","is_account","is_intra_account","is_extra_account", + "number","description","is_locked","login","name","name","firstname", + "salutation","degree","birthday","sex","db_status","password"); + $this->info['company_id'] = $this->ogo->gen_id(); + $this->info['userID'] = "OGo".$this->info['company_id']; + foreach($arr as $attr){ + if($attr == "number"){ + $add_user[$attr] = $this->info['userID']; + }else{ + $add_user[$attr] = $this->info[$attr]; + } + } + $QUERY[] = gen_syntax($add_user,"person","ADD",false); + + + /* + Entry for staff table + */ + $arr = array("staff_id","company_id","description","login","is_team","is_account","db_status"); + $this->info['staff_id'] = $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_staff[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_staff,"staff","ADD",false); + + + /* + Create entries for company nfo + */ + $arr = array("company_info_id","company_id","db_status"); + $this->info['company_info_id'] = $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_company_info[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_company_info,"company_info","ADD",false); + + + /* + Create entries for company value + */ + $arr = array("db_status","value_string","attribute","company_id","company_value_id"); + $this->info['attribute'] = "email1"; + $this->info['company_value_id'] = $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_company_value[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_company_value,"company_value","ADD",false); + + + /* + address entries + */ + $arr = array("company_id","address_id","street","zip","country","zipcity","state","db_status","name1","type"); + foreach(array("private","mailing","location") as $type){ + + $this->info['address_id'] = $this->ogo->gen_id(); + $this->info['type'] = $type; + foreach($arr as $attr){ + $add_address[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_address,"address","ADD",false); + } + + + /* + telephone entries + */ + $arr = array("telephone_id","object_version","company_id","number","type","db_status"); + foreach(array("01_tel","02_tel","03_tel_funk","05_tel_private","10_fax","fax_private") as $type){ + $this->info['type'] = $type; + $this->info['telephone_id'] = $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_telephone[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_telephone,"telephone","ADD",false); + } + + /* + company_assignment entries (Location Team) + */ + $this->info['old_company_id'] = $this->info['company_id']; + $this->info['sub_company_id'] = $this->info['old_company_id']; + + $this->info['company_assignment_id']= $this->ogo->gen_id(); + $this->info['company_id'] = $this->info['LocationTeamID']; + $arr = array("company_assignment_id","company_id","sub_company_id","db_status"); + foreach($arr as $attr){ + $add_company_assignment[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_company_assignment,"company_assignment","ADD",false); + + + /* + company_assignment entries (Teams) + */ + $arr = array("company_assignment_id","company_id","sub_company_id","db_status"); + foreach($this->info['TeamIDis'] as $TeamID){ + + $this->info['company_id'] = $TeamID; + $this->info['sub_company_id'] = $this->info['old_company_id']; + $this->info['company_assignment_id']= $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_company_assignment[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_company_assignment,"company_assignment","ADD",false); + } + + $remove_all = false; + foreach($QUERY as $q ){ + if(!$this->ogo->Query($q)){ + $remove_all = true; + break; + } + } + + if($remove_all== true){ + $this->ogo->Query("DELETE FROM telephone WHERE company_id=".$this->info['company_id'].";"); + $this->ogo->Query("DELETE FROM address WHERE company_id=".$this->info['company_id'].";"); + $this->ogo->Query("DELETE FROM company_assignment WHERE company_id=".$this->info['company_id'].";"); + $this->ogo->Query("DELETE FROM company_info WHERE company_id=".$this->info['company_id'].";"); + $this->ogo->Query("DELETE FROM company_value WHERE company_id=".$this->info['company_id'].";"); + $this->ogo->Query("DELETE FROM staff WHERE company_id=".$this->info['company_id'].";"); + $this->ogo->Query("DELETE FROM person WHERE company_id=".$this->info['company_id'].";"); + $this->LastError="Query failed, removed all added entries"; + return(false); + } + return(true); + } + + + function EDIT() + { + $qry = "SELECT * FROM person WHERE login='".$this->info['login']."';"; + $ist = $this->ogo->FetchAllRows($this->ogo->Query($qry)); + /* + Entry settings for personm table + */ + $arr = array( "company_id","object_version","owner_id", + "template_user_id","is_person","is_account","is_intra_account", + "is_extra_account","number","description","is_locked","login","name", + "firstname","salutation","degree","birthday","sex","db_status","password"); + $this->info['company_id'] = $ist[0]['company_id']; + $this->info['userID'] = "OGo".$this->info['company_id']; + foreach($arr as $attr){ + if($attr == "number"){ + $add_user[$attr] = $this->info['userID']; + }else{ + $add_user[$attr] = $this->info[$attr]; + } + } + $QUERY[] = gen_syntax($add_user,"person","EDIT",$ist); + + + /* + Entry for staff table + */ + $arr = array("staff_id","company_id","description","login","is_team","is_account","db_status"); + $this->info['staff_id'] = $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_staff[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_staff,"staff","EDIT",$ist); + + + /* + Create entries for company nfo + */ + $arr = array("company_info_id","company_id","db_status"); + $this->info['company_info_id'] = $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_company_info[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_company_info,"company_info","EDIT",$ist); + + + /* + Create entries for company value + */ + $QUERY[] = "DELETE FROM company_value WHERE company_id=".$ist[0]['company_id']." AND attribute='mail1';"; + $arr = array("db_status","value_string","attribute","company_id","company_value_id"); + $this->info['attribute'] = "email1"; + $this->info['company_value_id'] = $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_company_value[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_company_value,"company_value","ADD",false); + + + /* + address entries + */ + $QUERY[] = "DELETE FROM address WHERE company_id=".$ist[0]['company_id'].";"; + $this->info['company_id'] = $ist[0]['company_id']; + $arr = array("company_id","address_id","street","zip","country","zipcity","state","db_status","name1","type"); + foreach(array("private","mailing","location") as $type){ + $this->info['type'] = $type; + $this->info['address_id'] = $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_address[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_address,"address","ADD",false); + } + + + /* + telephone entries + */ + $QUERY[] = "DELETE FROM telephone WHERE company_id=".$ist[0]['company_id'].";"; + $this->info['company_id'] = $ist[0]['company_id']; + $arr = array("telephone_id","object_version","company_id","number","type","db_status"); + foreach(array("01_tel","02_tel","03_tel_funk","05_tel_private","10_fax","fax_private") as $type){ + $this->info['type'] = $type; + $this->info['telephone_id'] = $this->ogo->gen_id(); + foreach($arr as $attr){ + $add_telephone[$attr] = $this->info[$attr]; + } + + $QUERY[] = gen_syntax($add_telephone,"telephone","ADD",false); + } + + + /* + company_assignment entries (Location Team) + */ + $this->info['old_company_id'] = $this->info['company_id']; + + /* First remove location team */ + $QUERY[] = "DELETE FROM company_assignment WHERE (sub_company_id=".$ist[0]['company_id'].") AND + company_id in (SELECT company_id FROM team WHERE is_location_team=1);"; + + $this->info['sub_company_id'] = $ist[0]['company_id']; + $this->info['company_assignment_id']= $this->ogo->gen_id(); + $this->info['company_id'] = $this->info['LocationTeamID']; + $arr = array("company_assignment_id","company_id","sub_company_id","db_status"); + foreach($arr as $attr){ + $add_company_assignment[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_company_assignment,"company_assignment","ADD",false); + + + /* + company_assignment entries (Teams) + */ + /* First remove location team */ + $QUERY[] = "DELETE FROM company_assignment + WHERE + (sub_company_id=".$ist[0]['company_id'].") + AND + company_id IN + (SELECT company_id FROM team WHERE (is_team=1) AND company_id NOT IN + (SELECT company_id FROM team WHERE is_location_team=1));"; + + $arr = array("company_assignment_id","company_id","sub_company_id","db_status"); + + if(is_array($this->info['TeamIDis'])){ + foreach($this->info['TeamIDis'] as $TeamID){ + $this->info['company_id'] = $TeamID; + $this->info['sub_company_id'] = $ist[0]['company_id']; + $this->info['company_assignment_id']= $this->ogo->gen_id(); + $add_company_assignment = array(); + foreach($arr as $attr){ + $add_company_assignment[$attr] = $this->info[$attr]; + } + $QUERY[] = gen_syntax($add_company_assignment,"company_assignment","ADD",false); + } + } + $remove_all = false; + + foreach($QUERY as $q ){ + if(!$this->ogo-> Query($q)){ + print $q; + $remove_all = true; + break; + } + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_opengwAccount.inc b/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_opengwAccount.inc new file mode 100644 index 000000000..e7d440c31 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_opengwAccount.inc @@ -0,0 +1,356 @@ +ldap */ + var $attrsToUse = array( "salutation" =>"vocation", + "name" =>"sn", + "firstname" =>"givenName", + "login" =>"uid", + "degree" =>"academicTitle", + "birthday" =>"dateOfBirth", + "sex" =>"gender", + "street" =>"street", + "zip" =>"postalCode", + "value_string"=>"mail", + "number" =>"telephoneNumber" + ); + + var $serverCon = false; + var $handle = NULL; + var $is_account = false; + var $initialy_was_account = false; + var $OGWPassword = ""; + var $ReadOnly = false; + var $view_logged = FALSE; + var $uid = ""; + + function opengwAccount (&$config, $dn= NULL) + { + plugin::plugin ($config, $dn); + + /* Setting uid to default */ + if(isset($this->attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + + $this->info=array(); + + /* is no account and was no account */ + $this->initialy_was_account = false; + $this->is_account = false; + + /* Get configurations */ + if($this->config->search("opengwAccount", 'USERNAME',array('tabs'))){ + $atr = array(); + $atr['LOGIN'] = $this->config->search("opengwAccount", 'USERNAME',array('tabs')); + $atr['PASSWORD']= $this->config->search("opengwAccount", 'PASSWORD',array('tabs')); + $atr['SERVER'] = $this->config->search("opengwAccount", 'DATAHOST',array('tabs')); + $atr['DB'] = $this->config->search("opengwAccount", 'DATABASE',array('tabs')); + $this->serverCon = $atr; + }elseif(isset($this->config->data['SERVERS']['OPENGROUPWARE'])){ + $this->serverCon = $this->config->data['SERVERS']['OPENGROUPWARE']; + }else{ + $this->serverCon = array(); + } + + /* check if datebase funktions are available, and if database configurations are available */ + if(is_callable("pg_connect") && count($this->serverCon)){ + + $this->handle = new ogw($this->serverCon['LOGIN'],$this->serverCon['PASSWORD'],$this->serverCon['SERVER'],$this->serverCon['DB']); + + /* Check if current configuration allows database connection */ + if($this->handle->connected){ + + /* Set login name, to check if this is_account */ + if(isset($this->attrs['uid'][0])){ + $this->handle->info['login'] = $this->attrs['uid'][0]; + }else{ + $this->handle->info['login'] = ""; + } + + /* If this is account get data from database first */ + if($this->handle->CheckExistence()){ + $this->info = $this->handle->GetInfos($this->attrs['uid'][0]); + + /* This is an account */ + $this->initialy_was_account = true; + $this->is_account= true; + }else{ + /* this is no account */ + $this->initialy_was_account = false; + $this->is_account= false; + + /* Selectable in GOsa */ + $this->info['template_user_id'] = 0; + $this->info['is_locked'] = 0; + $this->info['LocationTeamID'] = 0; + $this->info['TeamIDis'] = array(); + } + + /* Set settings from ldap */ + foreach($this->attrsToUse as $name=>$attr){ + if(isset($this->attrs[$attr][0])){ + $this->info[$name] = $this->attrs[$attr][0]; + }else{ + $this->info[$name] = false; + } + } + + /* Description is displayed as 'Nickname' */ + $this->info['description'] = $this->info['login']; + + if($this->info['sex'] == "F"){ + $this->info['sex'] = "female"; + }else{ + $this->info['sex'] = "male"; + } + + } + + /* Transmit data back to ogw handle */ + $this->handle->SetInfos($this->info); + } + } + + function execute() + { + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Show tab dialog headers */ + $display= ""; + $smarty= get_smarty(); + + $smarty->assign("serverCon",count($this->serverCon)); + $smarty->assign("validTeams",""); + $smarty->assign("is_account", " "); + $smarty->assign("OGWstate"," disabled "); + $smarty->assign("validLocationTeam",array(" ")); + $smarty->assign("validLocationTeams",array(" ")); + $smarty->assign("LocationTeam",0); + $smarty->assign("validTemplateUser",array(" ")); + $smarty->assign("validTemplateUsers",array(" ")); + $smarty->assign("TemplateUser",0); + $smarty->assign("is_lockedCHK", " "); + $smarty->assign("is_locked", " "); + + /* set default values */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $acl => $desc){ + $smarty->assign($acl."ACL",$this->getacl($acl,$this->ReadOnly)); + } + + if((!$this->ReadOnly)&&(($this->is_account && $this->acl_is_removeable()) || (!$this->is_account && $this->acl_is_createable()))) { + $smarty->assign('opengwAccountACL', ""); + }else{ + $smarty->assign('opengwAccountACL', " disabled "); + } + + if(count($this->serverCon)) + + /* Check database extension */ + if(!is_callable("pg_connect") && count($this->serverCon)){ + msg_dialog::display(_("Configuration error"), msgPool::missingext("postgresql"), ERROR_DIALOG); + }elseif(count($this->serverCon)){ + + /* Check if config exists */ + if($this->config->search("opengwAccount", 'DATABASE',array('tabs')) == ""){ + msg_dialog::display(_("Configuration error"), msgPool::noserver(_("Open Groupware database")), ERROR_DIALOG); + }else{ + + /* Create handle */ + $this->handle = new ogw($this->serverCon['LOGIN'],$this->serverCon['PASSWORD'],$this->serverCon['SERVER'],$this->serverCon['DB']); + + /* Check if we are successfully connected to db */ + if(!$this->handle->connected){ + msg_dialog::display(_("Configuration error"), msgPool::dbconnect(_("Open Groupware")), ERROR_DIALOG); + }else{ + + /* Assign LocationTeams */ + $tmp = array(""=>"none"); + foreach($this->handle->validLocationTeam as $id){ + $tmp[$id['company_id']] = $id['description']; + } + $smarty->assign("validLocationTeam",$tmp); + $smarty->assign("validLocationTeams",array_flip($tmp)); + $smarty->assign("LocationTeam",$this->info['LocationTeamID']); + + /* Assign TemplateUsers*/ + $tmp = array(); + foreach($this->handle->validTemplateUser as $id){ + $tmp[$id['company_id']] = $id['name']; + } + $smarty->assign("validTemplateUser",$tmp); + $smarty->assign("validTemplateUsers",array_flip($tmp)); + $smarty->assign("TemplateUser",$this->info['template_user_id']); + + /* Create Team membership */ + $str = ""; + if($this->is_account){ + $dis = ""; + }else{ + $dis = " disabled "; + } + + if($this->acl_is_readable("Teams")){ + foreach($this->handle->validTeams as $id){ + if(in_array($id['company_id'],$this->info['TeamIDis'])){ + $str .= "".$id['description']."
"; + }else{ + $str .= "".$id['description']."
"; + } + } + } + $smarty->assign("validTeams",$str); + + /* Assign ogw checkbox */ + if($this->is_account){ + $smarty->assign("OGWstate",""); + $smarty->assign("is_account", " checked "); + }else{ + $smarty->assign("is_account", " "); + $smarty->assign("OGWstate"," disabled "); + } + + /* Assign lock status */ + if($this->info['is_locked']){ + $smarty->assign("is_lockedCHK", " checked "); + }else{ + $smarty->assign("is_lockedCHK", " "); + } + $smarty->assign("is_locked", $this->info['is_locked']); + + } + } + } + $display.= $smarty->fetch (get_template_path('opengw.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + /* remove database entries */ + if($this->initialy_was_account){ + $this->handle = new ogw($this->serverCon['LOGIN'],$this->serverCon['PASSWORD'],$this->serverCon['SERVER'],$this->serverCon['DB']); + $this->handle->SetInfos($this->info); + $this->handle->Perform("REMOVE"); + + new log("remove","users/".get_class($this),$this->dn); + } + } + + + /* Save data to object */ + function save_object() + { + /* get post data */ + if($this->is_account){ + + /* Get selected team chkboxes */ + $this->info['TeamIDis'] = array(); + if($this->acl_is_writeable("Teams")) { + foreach($_POST as $name => $value ){ + if(preg_match("/team_/i",$name)){ + if(!in_array($value,$this->info['TeamIDis'])){ + $this->info['TeamIDis'][]=$value; + } + } + } + } + + + /* Get location Team*/ + if(isset($_POST['LocationTeam']) && $this->acl_is_writeable("LocationTeam")){ + $this->info['LocationTeamID'] = $_POST['LocationTeam']; + } + + /* Get template user */ + if(isset($_POST['TemplateUser']) && $this->acl_is_writeable("TemplateUser") ){ + $this->info['template_user_id'] = $_POST['TemplateUser']; + } + + /* get lock status */ + if($this->acl_is_writeable("Locked")){ + if(isset($_POST['is_locked'])){ + $this->info['is_locked'] = $_POST['is_locked']; + }else{ + $this->info['is_locked'] = 0; + } + } + } + + /* change account status */ + if(isset($_POST['is_account'])){ + if($this->acl_is_createable()){ + $this->is_account = $_POST['is_account']; + } + }else{ + if($this->acl_is_removeable()){ + $this->is_account = false;//$_POST['is_account']; + } + } + } + + + /* Save to LDAP */ + function save() + { + /* Save data */ + $this->handle = new ogw($this->serverCon['LOGIN'],$this->serverCon['PASSWORD'],$this->serverCon['SERVER'],$this->serverCon['DB']); + $this->handle->SetInfos($this->info); + $this->handle->checkInfos(); + if($this->initialy_was_account){ + $this->handle->Perform("EDIT"); + new log("modify","users/".get_class($this),$this->dn); + }else{ + $this->handle->Perform("ADD"); + new log("create","users/".get_class($this),$this->dn); + } + } + + + function PrepareForCopyPaste($src){ + // Nothing to do, because this object can't be copied ... yet + } + + + /* Return plugin informations for acl handling + #FIXME This is only an enable/disable checkbox for this account, there is possibly a better solution available later */ + static function plInfo() + { + return (array( + "plShortName" => _("Opengroupware"), + "plDescription" => _("Open groupware account settings")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 26, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + "LocationTeam" => _("Location team"), + "TemplateUser" => _("Template user"), + "Locked" => _("Locked"), + "Teams" => _("Teams")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_pgsql_opengw.inc b/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_pgsql_opengw.inc new file mode 100644 index 000000000..313fe3e65 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/class_pgsql_opengw.inc @@ -0,0 +1,160 @@ +user = $user; + $this->pwd = $pwd; + $this->server = $server; + $this->db = $db; + + if($this->_connect()){ + $this->is_connected = true; + }else{ + $this->is_connected = false; + } + } + + function _connect() + { + error_reporting(E_ALL | E_STRICT); + if(is_callable("pg_connect")){ + if(empty($this->pwd)){ + $this->handle = @pg_connect("dbname=".$this->db." host=".$this->server." user=".$this->user); + }else{ + $this->handle = @pg_connect("dbname=".$this->db." host=".$this->server." user=".$this->user." password=".$this->pwd); + } + if(!$this->handle){ + $this->handle = false; + } + }else{ + $this->handle = false; + } + return($this->handle); + } + + function Query($a_query) + { + if(is_array($a_query)){ + foreach($a_query as $nr => $query){ + return($this->_query($query)); + } + }else{ + return($this->_query($a_query)); + } + } + + function _query($query) + { + return(pg_query($this->handle,$query)); + } + + function FetchAllRows($res) + { + return(pg_fetch_all($res)) ; + } + + function gen_id() + { + $tmp = $this->_query("select nextval('key_generator');"); + $tmp = ($this->FetchAllRows($tmp)); + return($tmp[0]['nextval']); + } + + + function GetTemplateUser(){ + $data = array(); + $qry = "SELECT description,name,company_id FROM company WHERE is_template_user=1;"; + $res = $this->_query($qry); + $tmp = $this->FetchAllRows($res); + foreach($tmp as $attr){ + $data[$attr['name']] = $attr; + } + return $data; + } + function GetLocationTeam(){ + $data = array(); + $qry = "SELECT description,name,company_id FROM team WHERE is_location_team=1;"; + $res = $this->_query($qry); + $tmp = $this->FetchAllRows($res); + if(is_array($tmp)){ + foreach($tmp as $attr){ + $data[$attr['description']] = $attr; + } + } + return $data; + } + function GetTeams(){ + $data = array(); + $qry = "SELECT description,name,company_id FROM team + WHERE (is_team=1) AND company_id + NOT IN (SELECT company_id FROM company WHERE is_location_team=1);"; + $res = $this->_query($qry); + $tmp = $this->FetchAllRows($res); + foreach($tmp as $attr){ + $data[$attr['description']] = $attr; + } + return $data; + } +} + + +function gen_syntax($array,$tablename,$act,$ist) +{ + if($act == "EDIT"){ + $str = "UPDATE ".$tablename." SET "; + $company_id = $ist[0]['company_id']; + + foreach($array as $name => $value){ + if((empty($value))&&(!preg_match("/^is_/i",$name))) continue; + + if((empty($value))&&(preg_match("/^is_/i",$name))){ + $value= 0; + } + + if(!is_numeric($value)){ + $str.= " ".$name."='".$value."', "; + }else{ + $str.= " ".$name."=".$value.", "; + } + } + $str = preg_replace("/, $/","",$str); + $str .= " WHERE company_id=".$company_id.";\n"; + return $str; + } + if($act == "ADD"){ + $str = "INSERT into ".$tablename." ("; + $attrs = ""; + $values = ""; + foreach($array as $name => $attribute){ + if((empty($attribute))&&(!preg_match("/^is_/i",$name))) continue; + + if((empty($attribute))&&(preg_match("/^is_/i",$name))){ + $attribute= 0; + } + + if(is_numeric($attribute)){ + $attrs .= $name.", "; + $values .= $attribute.", "; + }else{ + $attrs .= $name.", "; + $values .= "'".$attribute."', "; + } + } + $attrs = preg_replace("/, $/","",$attrs); + $values= preg_replace("/, $/","",$values); + $str .= $attrs." ) \nVALUES\n (".$values.");\n"; + return $str; + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/opengw.tpl b/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/opengw.tpl new file mode 100644 index 000000000..568741719 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/personal/connectivity/opengroupware/opengw.tpl @@ -0,0 +1,59 @@ +

 {t}Opengroupware{/t}

+ + + + + +
+ + + + + + + + + + + + + +
+ {t}Location team{/t}   + +{render acl=$LocationTeamACL} + +{/render} +
+ {t}Template user{/t}   + +{render acl=$TemplateUserACL} + +{/render} +
+ {t}Locked{/t}   + +{render acl=$LockedACL} + +{/render} +
+
+ + + + + +
+ {t}Teams{/t}   + +{render acl=$TeamsACL} + {$validTeams} +{/render} +
+
diff --git a/trunk/gosa-plugins/opengroupware/plugin.dsc b/trunk/gosa-plugins/opengroupware/plugin.dsc new file mode 100644 index 000000000..df6a6c989 --- /dev/null +++ b/trunk/gosa-plugins/opengroupware/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = opengroupware +description = "Opengroupware integration" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = connectivity, mail diff --git a/trunk/gosa-plugins/openxchange/README.openxchange b/trunk/gosa-plugins/openxchange/README.openxchange new file mode 100644 index 000000000..ce6eabb5e --- /dev/null +++ b/trunk/gosa-plugins/openxchange/README.openxchange @@ -0,0 +1,437 @@ +### Small tutorial for use GOsa with open-xchange ### + +Once installed open-xchange (http://www.open-xchange.org) and php4-pgsql +module we must do some changes to get open-xchange running with GOsa. + +- php.ini must have extension=pg_sql.so + +- The webserver must have access to the Postgresql server. + +- In the connectivity section of gosa.conf must have something like this: + + + + +We suppose that openxchage is installed in /usr/local/openxchange, +and the base for GOsa ldap tree is dc=example,dc=org + + +- Make changes to admintools.conf (/usr/local/openxchange/etc/admintools.conf): + +OXBASE="dc=example,dc=org" +OX_LEAF="$OXBASE" +# Where are the OX Users +USER_BASEDN="ou=people,$OX_LEAF" +# Where are the OX Groups +GROUP_BASEDN="ou=groups,$OX_LEAF" +# Where are the OX Resources +RESOURCES_BASEDN="ou=Resources,ou=ResourceObjects,ou=OxObjects,$OX_LEAF" +# Where are the OX Resource Groups +RESOURCE_GROUPS_BASEDN="ou=ResourceGroups,ou=ResourceObjects,ou=OxObjects,$OX_LEAF" +# Where is the Global Adressbook +GLOBAL_ADDRESSBOOKDN="o=AddressBook,ou=OxObjects,$OX_LEAF" +# where are the adressbook admins +GLOBAL_ADDRESSBOOK_ADMINSDN="cn=AddressAdmins,ou=OxObjects,$GLOBAL_ADDRESSBOOKDN" + +- Make changes in login.pm (usually in /usr/lib/cgi-bin/login.pm): +my $ldap_userBase = 'ou=Users,ou=OxObjects,'; +to +my $ldap_userBase = 'ou=people,'; + +- Put the Base in ldap.conf (/usr/local/openxchange/etc/groupware/ldap.conf) +BASE dc=example,dc=org + +- If you are using as GOsa accountPrimaryAttribute "uid", You must change in ldap.properties +(/usr/local/openxchange/etc/groupware/ldap.properties): + + +com.openexchange.groupware.ldap.OXUserObjectAttributeuserCountryName=userCountry + to +com.openexchange.groupware.ldap.OXUserObjectAttributeuserCountryName=st + +com.openexchange.groupware.ldap.OXUserObjectAttributeimapServerName=imapServer + to +com.openexchange.groupware.ldap.OXUserObjectAttributeimapServerName=gosaMailServer + +com.openexchange.groupware.ldap.OXUserObjectAttributesmtpServerName=smtpServer + to +com.openexchange.groupware.ldap.OXUserObjectAttributesmtpServerName=gosaMailServer + +com.openexchange.groupware.ldap.userBaseDN=ou\u003DUsers,ou\u003DOxObjects +to +com.openexchange.groupware.ldap.userBaseDN=ou\u003Dpeople + + + +- If you are using as GOsa accountPrimaryAttribute "cn", the ldap.properties +(/usr/local/openxchange/etc/groupware/ldap.properties) +configuration of open-xchange must be like this: + +com.openexchange.groupware.ldap.inetOrgPersonAttributebusinessCategoryName=businessCategory + +com.openexchange.groupware.ldap.inetOrgPersonAttributecnName=cn + +com.openexchange.groupware.ldap.OXUserObjectAttributeCountryName=c + +com.openexchange.groupware.ldap.inetOrgPersonAttributedescriptionName=description + +com.openexchange.groupware.ldap.inetOrgPersonAttributedisplayNameName=displayName + +com.openexchange.groupware.ldap.inetOrgPersonAttributeemployeeNumberName=employeeNumber + +com.openexchange.groupware.ldap.inetOrgPersonAttributeemployeeTypeName=employeeType + +com.openexchange.groupware.ldap.OXUserObjectAttributecoName=co + +com.openexchange.groupware.ldap.inetOrgPersonAttributehomePhoneName=homePhone + +com.openexchange.groupware.ldap.inetOrgPersonAttributehomePostalAddressName=homePostalAddress + +com.openexchange.groupware.ldap.OXUserObjectAttributeInfoName=info + +com.openexchange.groupware.ldap.inetOrgPersonAttributeinitialsName=initials + +com.openexchange.groupware.ldap.inetOrgPersonAttributeinternationaliSDNNumberName=internationaliSDNNumber + +com.openexchange.groupware.ldap.OXUserObjectAttributeIPPhoneName=IPPhone + +com.openexchange.groupware.ldap.OXUserObjectAttributeotherfacsimiletelephonenumberName=otherfacsimiletelephonenumber + +com.openexchange.groupware.ldap.inetOrgPersonAttributeroomNumberName=roomNumber + +com.openexchange.groupware.ldap.inetOrgPersonAttributetelexNumberName=telexNumber + +com.openexchange.groupware.ldap.inetOrgPersonAttributeuidName=uid + +com.openexchange.groupware.ldap.inetOrgPersonClassName=inetOrgPerson + +com.openexchange.groupware.ldap.OXUserObjectAttributebirthDayName=birthDay + +com.openexchange.groupware.ldap.OXUserObjectAttributeDistributionListName=OXUserDistributionList + +com.openexchange.groupware.ldap.OXUserObjectAttributeAnniversaryName=OXUserAnniversary + +com.openexchange.groupware.ldap.OXUserObjectAttributeBranchesName=OXUserBranches + +com.openexchange.groupware.ldap.OXUserObjectAttributeCategoriesName=OXUserCategories + +com.openexchange.groupware.ldap.OXUserObjectAttributeChildrenName=OXUserChildren + +com.openexchange.groupware.ldap.OXUserObjectAttributeCityName=OXUserCity + +com.openexchange.groupware.ldap.OXUserObjectAttributeCommentName=OXUserComment + +com.openexchange.groupware.ldap.OXUserObjectAttributeComRegName=OXUserComReg + +com.openexchange.groupware.ldap.OXUserObjectAttributeEmail2Name=OXUserEmail2 + +com.openexchange.groupware.ldap.OXUserObjectAttributeEmail3Name=OXUserEmail3 + +com.openexchange.groupware.ldap.OXUserObjectAttributeInstantMessenger2Name=OXUserInstantMessenger2 + +com.openexchange.groupware.ldap.OXUserObjectAttributeInstantMessengerName=OXUserInstantMessenger + +com.openexchange.groupware.ldap.OXUserObjectAttributeMaritalStatusName=OXUserMaritalStatus + +com.openexchange.groupware.ldap.OXUserObjectAttributeNickNameName=OXUserNickName + +com.openexchange.groupware.ldap.OXUserObjectAttributeOtherCityName=OXUserOtherCity + +com.openexchange.groupware.ldap.OXUserObjectAttributeOtherCountryName=OXUserOtherCountry + +com.openexchange.groupware.ldap.OXUserObjectAttributeOtherPostalCodeName=OXUserOtherPostalCode + +com.openexchange.groupware.ldap.OXUserObjectAttributeOtherStateName=OXUserOtherState + +com.openexchange.groupware.ldap.OXUserObjectAttributeOtherStreetName=OXUserOtherStreet + +com.openexchange.groupware.ldap.OXUserObjectAttributePositionName=OXUserPosition + +com.openexchange.groupware.ldap.OXUserObjectAttributePostalCodeName=OXUserPostalCode + +com.openexchange.groupware.ldap.OXUserObjectAttributeProfessionName=OXUserProfession + +com.openexchange.groupware.ldap.OXUserObjectAttributeSalesVolumeName=OXUserSalesVolume + +com.openexchange.groupware.ldap.OXUserObjectAttributeSpouseNameName=OXUserSpouseName + +com.openexchange.groupware.ldap.OXUserObjectAttributeStateName=OXUserState + +com.openexchange.groupware.ldap.OXUserObjectAttributesuffixName=OXUserSuffix + +com.openexchange.groupware.ldap.OXUserObjectAttributeTaxIDName=OXUserTaxID + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleAssistantName=OXUserTeleAssistant + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleBusiness2Name=OXUserTeleBusiness2 + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleCallbackName=OXUserTeleCallback + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleCarName=OXUserTeleCar + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleCompanyName=OXUserTeleCompany + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleFax2Name=OXUserTeleFax2 + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleHome2Name=OXUserTeleHome2 + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleMobile2Name=OXUserTeleMobile2 + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleOtherName=OXUserTeleOther + +com.openexchange.groupware.ldap.OXUserObjectAttributeTelePrimaryName=OXUserTelePrimary + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleRadioName=OXUserTeleRadio + +com.openexchange.groupware.ldap.OXUserObjectAttributeTeleTTYName=OXUserTeleTTY + +com.openexchange.groupware.ldap.OXUserObjectAttributeurlName=url + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef01Name=OXUserUserUndef01 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef02Name=OXUserUserUndef02 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef03Name=OXUserUserUndef03 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef04Name=OXUserUserUndef04 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef05Name=OXUserUserUndef05 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef06Name=OXUserUserUndef06 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef07Name=OXUserUserUndef07 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef08Name=OXUserUserUndef08 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef09Name=OXUserUserUndef09 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef10Name=OXUserUserUndef10 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef11Name=OXUserUserUndef11 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef12Name=OXUserUserUndef12 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef13Name=OXUserUserUndef13 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef14Name=OXUserUserUndef14 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef15Name=OXUserUserUndef15 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef16Name=OXUserUserUndef16 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef17Name=OXUserUserUndef17 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef18Name=OXUserUserUndef18 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef19Name=OXUserUserUndef19 + +com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef20Name=OXUserUserUndef20 + +com.openexchange.groupware.ldap.OXUserObjectClassName=OXUserObject + +com.openexchange.groupware.ldap.AllContactUIDSearch=(&(objectClass\u003DinetOrgPerson)(objectClass\u003DOXUserObject)) + +!com.openexchange.groupware.ldap.AllContactUIDSearchScope=1 + +com.openexchange.groupware.ldap.credentialsBaseDN=[credentialsBaseDN] + +com.openexchange.groupware.ldap.credentialsDN=cn\u003D[uid],[userBaseDN],[credentialsBaseDN] + +com.openexchange.groupware.ldap.groupOfNamesAttributememberName=member + +com.openexchange.groupware.ldap.AddressAdminsDN=cn\u003DAddressAdmins,[globalAddressBookBaseDN] + +com.openexchange.groupware.ldap.globalAddressBookBaseDN=o\u003DAddressBook + +com.openexchange.groupware.ldap.GlobalAddressBookEntryDN=cn\u003D[contactid],[globalAddressBookBaseDN] + +com.openexchange.groupware.ldap.InternalUsersForeSureNameUIDPatternSearchFilter=(&(objectClass\u003DinetOrgPerson)(objectClass\u003DOXUserObject)(|(sn\u003D[pattern])(givenname\u003D[pattern])(cn\u003D[pattern]))(mailEnabled\u003Dok)) + +com.openexchange.groupware.ldap.InternalUsersStartingLetterSearchFilter=(&(objectClass\u003DinetOrgPerson)(objectClass\u003DOXUserObject)(sn\u003D[letter]*)(mailEnabled\u003Dok)) + +com.openexchange.groupware.ldap.UserAddressBookEntryDN=cn\u003D[contactid],[UserAddressBookDN] + +com.openexchange.groupware.ldap.localDomainsBaseDN=ou\u003DDNSObjects,ou\u003DAdminObjects + +com.openexchange.groupware.ldap.OXVDomainAttributedomainNameName=domainName + +com.openexchange.groupware.ldap.LocalDomainsSearchFilter=(&(objectClass\u003DOXVDomainObject)(MTALocaldomain\u003Dtrue)) + +com.openexchange.groupware.ldap.OXIMAPFolderAttributefnName=fn + +com.openexchange.groupware.ldap.sharedFolderBaseDN=ou\u003DSharedFolder + +com.openexchange.groupware.ldap.SharedFolderSearchFilter=(&(objectclass\u003DOXIMAPFolderObject)(mailenabled\u003Dok)) + +!com.openexchange.groupware.ldap.sharedFolderSearchScope=1 + +com.openexchange.groupware.ldap.OXResourceGroupAttributeresourceGroupAvailableName=resourceGroupAvailable + +com.openexchange.groupware.ldap.OXResourceGroupAttributeresourceGroupMemberName=resourceGroupMember + +com.openexchange.groupware.ldap.OXResourceGroupAttributeresourceGroupNameName=resourceGroupName + +com.openexchange.groupware.ldap.ResourceGroupDN=resourceGroupName\u003D[group],[resourceGroupBaseDN] + +com.openexchange.groupware.ldap.ResourceGroupPatternSearchFilter=(&(objectclass\u003DOXResourceGroupObject)(resourceGroupName\u003D[pattern])) + +com.openexchange.groupware.ldap.ResourceGroupSearchFilter=(objectclass\u003DOXResourceGroupObject) + +!com.openexchange.groupware.ldap.ResourceGroupSearchScope=1 + +com.openexchange.groupware.ldap.OXResourceAttributeresourceNameName=resourceName + +#Where are the resources? +com.openexchange.groupware.ldap.resourceBaseDN=ou\u003DResources,ou\u003DResourceObjects + +com.openexchange.groupware.ldap.ResourceDN=resourceName\u003D[resource],[resourceBaseDN] + +#Where are the resource groups? +com.openexchange.groupware.ldap.resourceGroupBaseDN=ou\u003DResourceGroups,ou\u003DResourceObjects + +#Searches resources with the a pattern. +com.openexchange.groupware.ldap.ResourcePatternSearchFilter=(&(objectclass\u003DOXResourceObject)(resourceName\u003D[pattern])) + +!com.openexchange.groupware.ldap.ResourceSearchScope=1 + +com.openexchange.groupware.ldap.DNForDefaultMail=cn\u003Dmailadmin,[userBaseDN] + +com.openexchange.groupware.ldap.Factory.AuthenticationSupport=com.openexchange.groupware.ldap.DefaultAuthenticationSupport + +com.openexchange.groupware.ldap.Factory.ContactSupport=com.openexchange.groupware.ldap.DefaultContactSupport + +com.openexchange.groupware.ldap.Factory.MailSupport=com.openexchange.groupware.ldap.DefaultMailSupport + +com.openexchange.groupware.ldap.Factory.ResourcesHandle=com.openexchange.groupware.ldap.DefaultResourcesHandle + +#Class, that implementes UserGroupHandle, ResourcesHandle +com.openexchange.groupware.ldap.Factory.UserGroupHandle=com.openexchange.groupware.ldap.DefaultUserGroupHandle + +#Where to search for groups? +com.openexchange.groupware.ldap.groupBaseDN=ou\u003DGroups + +#Complete dn of a group. +com.openexchange.groupware.ldap.GroupDN=cn\u003D[gid],[groupBaseDN] + +com.openexchange.groupware.ldap.GroupSearchFilter=(objectclass\u003DposixGroup) + +#Searches all groups for the user +com.openexchange.groupware.ldap.GroupsForUserSearchFilter=(&(objectclass\u003DposixGroup)(memberUid\u003D[uid])) + +com.openexchange.groupware.ldap.GroupsPatternSearchFilter=(&(objectclass\u003DposixGroup)(cn\u003D[pattern])) + +!com.openexchange.groupware.ldap.GroupSearchScope=1 + +com.openexchange.groupware.ldap.inetOrgPersonAttributefacsimileName=facsimileTelephoneNumber + +com.openexchange.groupware.ldap.inetOrgPersonAttributegivenNameName=givenName + +com.openexchange.groupware.ldap.inetOrgPersonAttributelabeledURIName=labeledURI + +com.openexchange.groupware.ldap.inetOrgPersonAttributelName=l + +com.openexchange.groupware.ldap.inetOrgPersonAttributemailName=mail + +com.openexchange.groupware.ldap.inetOrgPersonAttributemobileName=mobile + +com.openexchange.groupware.ldap.inetOrgPersonAttributeoName=o + +com.openexchange.groupware.ldap.inetOrgPersonAttributeouName=ou + +com.openexchange.groupware.ldap.inetOrgPersonAttributepagerName=pager + +com.openexchange.groupware.ldap.inetOrgPersonAttributepostalCodeName=postalCode + +com.openexchange.groupware.ldap.inetOrgPersonAttributepreferredLanguageName=preferredLanguage + +com.openexchange.groupware.ldap.inetOrgPersonAttributesnName=sn + +com.openexchange.groupware.ldap.inetOrgPersonAttributestName=st + +com.openexchange.groupware.ldap.inetOrgPersonAttributestreetName=street + +com.openexchange.groupware.ldap.inetOrgPersonAttributetelephoneNumberName=telephoneNumber + +com.openexchange.groupware.ldap.inetOrgPersonAttributetitleName=title + +com.openexchange.groupware.ldap.OXUserObjectAttributealiasName=alias + +com.openexchange.groupware.ldap.OXUserObjectAttributeappointmentDaysName=OXAppointmentDays + +com.openexchange.groupware.ldap.OXUserObjectAttributeimapServerName=gosaMailServer + +com.openexchange.groupware.ldap.OXUserObjectAttributemailDomainName=mailDomain + +com.openexchange.groupware.ldap.OXUserObjectAttributesmtpServerName=gosaMailServer + +com.openexchange.groupware.ldap.OXUserObjectAttributetaskDaysName=OXTaskDays + +com.openexchange.groupware.ldap.OXUserObjectAttributetimeZoneName=OXTimeZone + +com.openexchange.groupware.ldap.OXUserObjectAttributeuserCountryName=st + +com.openexchange.groupware.ldap.OXUserObjectAttributevaddressName=vaddress + +com.openexchange.groupware.ldap.posixAccountAttributecnName=cn + +com.openexchange.groupware.ldap.posixAccountAttributeuidName=uid + +com.openexchange.groupware.ldap.posixGroupAttributecnName=cn + +com.openexchange.groupware.ldap.posixGroupAttributememberUidName=memberUid + +com.openexchange.groupware.ldap.UserAddressBookDN=ou\u003Daddr,cn\u003D[uid],[userBaseDN] + +com.openexchange.groupware.ldap.UserAttributeOpenLDAPaciName=OpenLDAPaci + +com.openexchange.groupware.ldap.userBaseDN=ou\u003Dpeople + +#DN to the user object +com.openexchange.groupware.ldap.UserDN=cn\u003D[uid],[userBaseDN] + +com.openexchange.groupware.ldap.UsersCNPatternSearchFilter=(&(objectclass\u003DposixAccount)(objectClass\u003DinetOrgPerson)(|(cn\u003D[pattern])(givenName\u003D[pattern])(cn\u003D[pattern]))) + +com.openexchange.groupware.ldap.UserSearchFilter=(&(cn\u003D[uid])(objectClass\u003DOXUserObject)) + +!com.openexchange.groupware.ldap.UserSearchScope=1 + +com.openexchange.groupware.ldap.UsersForeSureNamePatternSearchFilter=(&(objectclass\u003DposixAccount)(|(givenName\u003D[pattern])(sn\u003D[pattern]))) + +com.openexchange.groupware.ldap.UsersForeSureNameUIDPatternSearchFilter=(&(objectclass\u003DposixAccount)(objectClass\u003DinetOrgPerson)(|(givenName\u003D[pattern])(sn\u003D[pattern])(cn\u003D[pattern]))) + +com.openexchange.groupware.ldap.UsersPatternSearchFilter=(&(objectclass\u003DposixAccount)(cn\u003D[pattern])) + +#Define the objectClasses an user object should belong to if you are performing pattern searches. +com.openexchange.groupware.ldap.UsersPatternSearchObjectClasses=posixAccount,inetOrgPerson,OXUserObject + +com.openexchange.groupware.ldap.GlobalAddressBookSearchScope=1 + +com.openexchange.groupware.ldap.inetOrgPersonAttributejpegPhotoName=jpegPhoto + +com.openexchange.groupware.ldap.OXUserObjectAttributeDayViewEndTimeName=OXDayViewEndTime + +com.openexchange.groupware.ldap.OXUserObjectAttributeDayViewStartTimeName=OXDayViewStartTime + +com.openexchange.groupware.ldap.OXUserObjectAttributeDayViewIntervalName=OXDayViewInterval + +!com.openexchange.groupware.ldap.LocalDomainsSearchScope=1 + + + + + + +This configuration is based in documentation gets from +http://www.open-xchange.org/oxwiki/ + +TODO: +- more testing +- check cn configuration +- check addressbook +- subtree support + diff --git a/trunk/gosa-plugins/openxchange/contrib/openxchange.ldif b/trunk/gosa-plugins/openxchange/contrib/openxchange.ldif new file mode 100644 index 000000000..dea51186e --- /dev/null +++ b/trunk/gosa-plugins/openxchange/contrib/openxchange.ldif @@ -0,0 +1,121 @@ +dn: cn=openxchange,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: openxchange +olcAttributeTypes: ( 1.1.2.1.1.1 NAME ( 'mailEnabled' ) DESC 'Is the user enabled or not, for pam_ldap,postfix etc. filtering...' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.2 NAME ( 'alias' ) DESC 'email alias' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) +olcAttributeTypes: ( 1.1.2.1.1.3 NAME ( 'imapServer' ) DESC 'Users Imap Server' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.4 NAME ( 'imapPort' ) DESC 'Users Imap Server Port' SUP ipServicePort ) +olcAttributeTypes: ( 1.1.2.1.1.5 NAME ( 'sievePort' ) DESC 'Users SIEVE Server Port' SUP ipServicePort ) +olcAttributeTypes: ( 1.1.2.1.1.6 NAME ( 'smtpServer' ) DESC 'Users SMTP Server' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.7 NAME ( 'smtpPort' ) DESC 'Users SMTP Server Port' SUP ipServicePort ) +olcAttributeTypes: ( 1.1.2.1.1.8 NAME ( 'relClientCert' ) DESC 'Users Certificate for Ip Service like SMTP or IMAP' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.9 NAME ( 'userCountry' ) DESC 'Users country code' SUP name SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.10 NAME ( 'loginDestination' ) DESC 'Users Destination - Groupware , Webmail, Config ...' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.11 NAME ( 'birthDay' ) DESC 'Users birthday' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.12 NAME ( 'colocRouteAddr' ) DESC 'route mail to this address' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.13 NAME ( 'reject' ) DESC 'Should contain the mailaddys to reject' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.1.2.1.1.14 NAME ( 'lnetMailAccess' ) DESC 'Is the user able to send mail to the inet' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.15 NAME ( 'OXGroupwareStyle' ) DESC 'Groupware Style' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.16 NAME ( 'OXWebmailStyle' ) DESC 'Webmail Style' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.17 NAME 'OXGroupID' DESC 'GIDs of the secondary Groups of the User' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27) +olcAttributeTypes: ( 1.1.2.1.1.18 NAME ( 'OXAppointmentDays' ) DESC 'Days to display new appointments' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.19 NAME ( 'OXTaskDays' ) DESC 'Days to display new tasks' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.20 NAME ( 'OXTimeZone' ) EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.21 NAME ( 'groupwareServer' ) EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.22 NAME ( 'groupwareServerPort' ) SUP ipServicePort ) +olcAttributeTypes: ( 1.1.2.1.1.23 NAME ( 'webmailServer' ) EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.24 NAME ( 'webmailServerPort' ) SUP ipServicePort ) +olcAttributeTypes: ( 1.1.2.1.1.25 NAME ( 'DBServer' ) EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.26 NAME ( 'DBServerPort' ) SUP ipServicePort SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.27 NAME ( 'DBServerType' ) EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.29 NAME ( 'resourceGroupName' ) SUP name SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.30 NAME ( 'resourceGroupMember' ) DESC 'resource that is member of a resource group' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) +olcAttributeTypes: ( 1.1.2.1.1.31 NAME ( 'resourceGroupAvailable' ) DESC 'Ressource group available in OX' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.32 NAME ( 'resourceGroupDescription' ) SUP description SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.33 NAME ( 'resourceName' ) SUP name SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.34 NAME ( 'resourceAvailable' ) DESC 'Ressource available in OX' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.35 NAME ( 'resourceDescription' ) SUP description SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.36 NAME ( 'mailDomain' ) EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.37 NAME ( 'vaddress' ) DESC 'vadress' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcAttributeTypes: ( 1.1.2.1.1.38 NAME ( 'MTALocaldomain' ) EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.39 NAME ( 'mailDeliveryProgram' ) EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) +olcAttributeTypes: ( 1.1.2.1.1.40 NAME ( 'deliverToUID' ) DESC 'direct mail delivery' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) +olcAttributeTypes: ( 1.1.2.1.1.41 NAME ( 'fn' ) SUP name ) +olcAttributeTypes: ( 1.1.2.1.1.42 NAME ( 'smtpDomainTransportNexthop' ) DESC 'contain transport:[nexthop] mail routing information' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.43 NAME ( 'smtpDomain' ) DESC 'contain host/domain name, used with smtpDomainTransportNexthop' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) +olcAttributeTypes: ( 1.1.2.1.1.44 NAME ( 'IPPhone' ) DESC 'User IPPhone Address in Outlook' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.45 NAME ( 'url' ) DESC 'Users business Homepage' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.46 NAME ( 'otherpager' ) DESC 'Users Business pager' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.47 NAME ( 'otherfacsimiletelephonenumber' ) DESC 'Users Home fax number' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.48 NAME ( 'middleName' ) DESC 'Users middlename' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.49 NAME ( 'conferenceInformation' ) DESC 'Users n3tmeeting Info' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.50 NAME ( 'OXUserPosition' ) DESC 'Users position' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.51 NAME ( 'OXUserSalesVolume' ) DESC 'Users sales volume' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.52 NAME ( 'OXUserCity' ) DESC 'Users City' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.53 NAME ( 'OXUserTaxID' ) DESC 'Users Tax ID' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.54 NAME ( 'OXUserComReg' ) DESC 'Users Commercial Register' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.55 NAME ( 'OXUserBranches' ) DESC 'Users Branches' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.56 NAME ( 'OXUserAssistant' ) DESC 'Users Assistant' SUP manager ) +olcAttributeTypes: ( 1.1.2.1.1.57 NAME ( 'OXUserCategories' ) DESC 'Users Categories' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.58 NAME ( 'OXUserOtherStreet' ) DESC 'Users alternative Street' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.59 NAME ( 'OXUserOtherPostalCode' ) DESC 'Users alternative postal code' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.60 NAME ( 'OXUserOtherCity' ) DESC 'Users alternative city' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.61 NAME ( 'OXUserOtherState' ) DESC 'Users alternative State' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.62 NAME ( 'OXUserOtherCountry' ) DESC 'Users alternative Country' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.63 NAME ( 'OXUserTeleAssistant' ) DESC 'Users Assistant TelephoneNumber' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.64 NAME ( 'OXUserTeleBusiness2' ) DESC 'Users alternative business phone number' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.65 NAME ( 'OXUserTeleCallback' ) DESC 'Users Callback' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.66 NAME ( 'OXUserTeleCar' ) DESC 'Users Car Phone Number' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.67 NAME ( 'OXUserTeleCompany' ) DESC 'Users Company Phone' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.68 NAME ( 'OXUserTeleHome2' ) DESC 'Users 2nd. Home Phone ' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.69 NAME ( 'OXUserTeleMobile2' ) DESC 'Users 2nd mobile number' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.70 NAME ( 'OXUserTeleOther' ) DESC 'Users other Phone' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.71 NAME ( 'OXUserTeleFax2' ) DESC 'Users 2nd Telefax Number' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.72 NAME ( 'OXUserTelePrimary' ) DESC 'Users primary Phone' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.73 NAME ( 'OXUserTeleRadio' ) DESC 'Users Radio' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.74 NAME ( 'OXUserTeleTTY' ) DESC 'Users TTY/tdd ' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.75 NAME ( 'OXUserInstantMessenger' ) DESC 'Users IM' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.76 NAME ( 'OXUserInstantmessenger2' ) DESC 'Users 2nd IM' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.77 NAME ( 'OXUserEmail2' ) DESC 'Users 2nd Email' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.78 NAME ( 'OXUserEmail3' ) DESC 'Users 3rd Email' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.79 NAME ( 'OXUserUserUndef01' ) DESC 'Users custom field 01' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.80 NAME ( 'OXUserUserUndef02' ) DESC 'Users custom field 02' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.81 NAME ( 'OXUserUserUndef03' ) DESC 'Users custom field 03' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.82 NAME ( 'OXUserUserUndef04' ) DESC 'Users custom field 04' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.83 NAME ( 'OXUserUserUndef05' ) DESC 'Users custom field 05' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.84 NAME ( 'OXUserUserUndef06' ) DESC 'Users custom field 06' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.85 NAME ( 'OXUserUserUndef07' ) DESC 'Users custom field 07' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.86 NAME ( 'OXUserUserUndef08' ) DESC 'Users custom field 08' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.87 NAME ( 'OXUserUserUndef09' ) DESC 'Users custom field 09' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.88 NAME ( 'OXUserUserUndef10' ) DESC 'Users custom field 10' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.89 NAME ( 'OXUserUserUndef11' ) DESC 'Users custom field 11' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.90 NAME ( 'OXUserUserUndef12' ) DESC 'Users custom field 12' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.91 NAME ( 'OXUserUserUndef13' ) DESC 'Users custom field 13' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.92 NAME ( 'OXUserUserUndef14' ) DESC 'Users custom field 14' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.93 NAME ( 'OXUserUserUndef15' ) DESC 'Users custom field 15' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.94 NAME ( 'OXUserUserUndef16' ) DESC 'Users custom field 16' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.95 NAME ( 'OXUserUserUndef17' ) DESC 'Users custom field 17' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.96 NAME ( 'OXUserUserUndef18' ) DESC 'Users custom field 18' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.97 NAME ( 'OXUserUserUndef19' ) DESC 'Users custom field 19' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.98 NAME ( 'OXUserUserUndef20' ) DESC 'Users custom field 20' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.99 NAME ( 'OXUserSuffix' ) DESC 'Users Suffix Name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.100 NAME ( 'OXUserPostalCode' ) DESC 'Users Postal Code address' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.101 NAME ( 'OXUserState' ) DESC 'Users State Name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.102 NAME ( 'OXUserMaritalStatus' ) DESC 'Users marital status' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.103 NAME ( 'OXUserChildren' ) DESC 'The number of users children ' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.104 NAME ( 'OXUserProfession' ) DESC 'The Users profession' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.105 NAME ( 'OXUserNickName' ) DESC 'Users Nick Name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.106 NAME ( 'OXUserSpouseName' ) DESC 'Users Spouse Name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.107 NAME ( 'OXUserAnniversary' ) DESC 'Any user anniversary' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.108 NAME ( 'OXUserComment' ) DESC 'A comment about the Users' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.109 NAME ( 'OXUserDistributionList' ) DESC 'uid for the distribution List in the Databse' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.110 NAME ( 'OXDayviewInterval' ) DESC 'interval for displaying ox appointments on the dayview' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.1.2.1.1.111 NAME ( 'OXDayviewStartTime' ) DESC 'starttime for displaying ox appointments on the dayview' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.112 NAME ( 'OXDayviewEndTime' ) DESC 'endtime for displaying ox appointments on the dayview' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +olcAttributeTypes: ( 1.1.2.1.1.113 NAME ( 'domainName' ) DESC 'The name of domain' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) +olcObjectClasses: ( 1.1.2.2.1.1 NAME 'OXUserObject' SUP top AUXILIARY DESC 'Additional Objectclass for OX User' MAY ( alias $ imapServer $ imapPort $ sievePort $ mailDomain $ smtpServer $ smtpPort $ groupwareServer $ groupwareServerPort $ webmailServer $ webmailServerPort $ DBServer $ DBServerPort $ DBServerType $ reject $ relClientCert $ userCountry $ loginDestination $ birthDay $ colocRouteAddr $ mailEnabled $ lnetMailAccess $ vaddress $ IPPhone $ url $ otherpager $ otherfacsimiletelephonenumber $ homephone $ c $ info $ middleName $ co $ conferenceInformation $ telexNumber $ OXGroupwareStyle $ OXWebmailStyle $ OXGroupID $ OXAppointmentDays $ OXTaskDays $ OXDayViewInterval $ OXDayViewStartTime $ OXDayViewEndTime $ OXTimeZone $ OXUserSuffix $ OXUserPostalCode $ OXUserCity $ OXUserState $ OXUserMaritalStatus $ OXUserChildren $ OXUserProfession $ OXUserNickName $ OXUserSpouseName $ OXUserAnniversary $ OXUserComment $ OXUserPosition $ OXUserSalesVolume $ OXUserTaxID $ OXUserComReg $ OXUserBranches $ OXUserAssistant $ OXUserCategories $ OXUserOtherStreet $ OXUserOtherPostalCode $ OXUserOtherCity $ OXUserOtherState $ OXUserOtherCountry $ OXUserTeleAssistant $ OXUserTeleBusiness2 $ OXUserTeleCallback $ OXUserTeleCar $ OXUserTeleCompany $ OXUserTeleHome2 $ OXUserTeleMobile2 $ OXUserTeleOther $ OXUserTeleFax2 $ OXUserTelePrimary $ OXUserTeleRadio $ OXUserTeleTTY $ OXUserInstantMessenger $ OXUserInstantmessenger2 $ OXUserEmail2 $ OXUserEmail3 $ OXUserUserUndef01 $ OXUserUserUndef02 $ OXUserUserUndef03 $ OXUserUserUndef04 $ OXUserUserUndef05 $ OXUserUserUndef06 $ OXUserUserUndef07 $ OXUserUserUndef08 $ OXUserUserUndef09 $ OXUserUserUndef10 $ OXUserUserUndef11 $ OXUserUserUndef12 $ OXUserUserUndef13 $ OXUserUserUndef14 $ OXUserUserUndef15 $ OXUserUserUndef16 $ OXUserUserUndef17 $ OXUserUserUndef18 $ OXUserUserUndef19 $ OXUserUserUndef20 $ OXUserDistributionList )) +olcObjectClasses: ( 1.1.2.2.1.2 NAME 'OXResourceGroupObject' SUP top STRUCTURAL DESC 'Additional Objectclass for OX ResourceGroup' MAY ( resourceGroupName $ resourceGroupMember $ resourceGroupAvailable $ resourceGroupDescription )) +olcObjectClasses: ( 1.1.2.2.1.3 NAME 'OXResourceObject' SUP top STRUCTURAL DESC 'Additional Objectclass for OX Resource' MAY ( resourceName $ resourceAvailable $ resourceDescription )) +olcObjectClasses: ( 1.1.2.2.1.4 NAME 'OXVDomainObject' SUP top STRUCTURAL DESC 'virtual domains, can be used for lookups for MTA' MUST ( MTALocaldomain $ domainName )) +olcObjectClasses: ( 1.1.2.2.1.5 NAME 'OXIMAPFolderObject' SUP top STRUCTURAL DESC 'Shared IMAP Folder' MUST fn MAY ( mailDeliveryProgram $ description $ mailEnabled $ deliverToUID)) +olcObjectClasses: ( 1.1.2.2.1.6 NAME 'OXMailTransportObject' SUP top STRUCTURAL DESC 'Transport maps in LDAP' MUST ( smtpDomainTransportNexthop $ smtpDomain $ cn ) MAY description ) diff --git a/trunk/gosa-plugins/openxchange/contrib/openxchange.schema b/trunk/gosa-plugins/openxchange/contrib/openxchange.schema new file mode 100644 index 000000000..e32e837d4 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/contrib/openxchange.schema @@ -0,0 +1,714 @@ +# +# OPEN X CHANGE ORG - SCHEMA 0.1 +# +attributetype ( 1.1.2.1.1.1 NAME ( 'mailEnabled' ) + DESC 'Is the user enabled or not, for pam_ldap,postfix etc. filtering...' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.2 NAME ( 'alias' ) + DESC 'email alias' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) + +attributetype ( 1.1.2.1.1.3 NAME ( 'imapServer' ) + DESC 'Users Imap Server' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.4 NAME ( 'imapPort' ) + DESC 'Users Imap Server Port' + SUP ipServicePort ) + +attributetype ( 1.1.2.1.1.5 NAME ( 'sievePort' ) + DESC 'Users SIEVE Server Port' + SUP ipServicePort ) + +attributetype ( 1.1.2.1.1.6 NAME ( 'smtpServer' ) + DESC 'Users SMTP Server' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.7 NAME ( 'smtpPort' ) + DESC 'Users SMTP Server Port' + SUP ipServicePort ) + +attributetype ( 1.1.2.1.1.8 NAME ( 'relClientCert' ) + DESC 'Users Certificate for Ip Service like SMTP or IMAP' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.9 NAME ( 'userCountry' ) + DESC 'Users country code' + SUP name SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.10 NAME ( 'loginDestination' ) + DESC 'Users Destination - Groupware , Webmail, Config ...' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.11 NAME ( 'birthDay' ) + DESC 'Users birthday' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.12 NAME ( 'colocRouteAddr' ) + DESC 'route mail to this address' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.13 NAME ( 'reject' ) + DESC 'Should contain the mailaddys to reject' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +attributetype ( 1.1.2.1.1.14 NAME ( 'lnetMailAccess' ) + DESC 'Is the user able to send mail to the inet' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.15 NAME ( 'OXGroupwareStyle' ) + DESC 'Groupware Style' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.16 NAME ( 'OXWebmailStyle' ) + DESC 'Webmail Style' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.17 NAME 'OXGroupID' + DESC 'GIDs of the secondary Groups of the User' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27) + +attributetype ( 1.1.2.1.1.18 NAME ( 'OXAppointmentDays' ) + DESC 'Days to display new appointments' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + + +attributetype ( 1.1.2.1.1.19 NAME ( 'OXTaskDays' ) + DESC 'Days to display new tasks' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.20 NAME ( 'OXTimeZone' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.21 NAME ( 'groupwareServer' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.22 NAME ( 'groupwareServerPort' ) + SUP ipServicePort ) + +attributetype ( 1.1.2.1.1.23 NAME ( 'webmailServer' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.24 NAME ( 'webmailServerPort' ) + SUP ipServicePort ) + +attributetype ( 1.1.2.1.1.25 NAME ( 'DBServer' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.26 NAME ( 'DBServerPort' ) + SUP ipServicePort SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.27 NAME ( 'DBServerType' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.29 NAME ( 'resourceGroupName' ) + SUP name SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.30 NAME ( 'resourceGroupMember' ) + DESC 'resource that is member of a resource group' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) + +attributetype ( 1.1.2.1.1.31 NAME ( 'resourceGroupAvailable' ) + DESC 'Ressource group available in OX' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.32 NAME ( 'resourceGroupDescription' ) + SUP description SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.33 NAME ( 'resourceName' ) + SUP name SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.34 NAME ( 'resourceAvailable' ) + DESC 'Ressource available in OX' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.35 NAME ( 'resourceDescription' ) + SUP description SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.36 NAME ( 'mailDomain' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.37 NAME ( 'vaddress' ) + DESC 'vadress' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +attributetype ( 1.1.2.1.1.38 NAME ( 'MTALocaldomain' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.39 NAME ( 'mailDeliveryProgram' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) + +attributetype ( 1.1.2.1.1.40 NAME ( 'deliverToUID' ) + DESC 'direct mail delivery' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} ) + +attributetype ( 1.1.2.1.1.41 NAME ( 'fn' ) SUP name ) + +attributetype ( 1.1.2.1.1.42 NAME ( 'smtpDomainTransportNexthop' ) + DESC 'contain transport:[nexthop] mail routing information' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.43 NAME ( 'smtpDomain' ) + DESC 'contain host/domain name, used with smtpDomainTransportNexthop' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) + + + +########### Special Attributes for new Contact Handling (OL) ############################### + +attributetype ( 1.1.2.1.1.44 NAME ( 'IPPhone' ) + DESC 'User IPPhone Address in Outlook' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.45 NAME ( 'url' ) + DESC 'Users business Homepage' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.46 NAME ( 'otherpager' ) + DESC 'Users Business pager' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.47 NAME ( 'otherfacsimiletelephonenumber' ) + DESC 'Users Home fax number' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.48 NAME ( 'middleName' ) + DESC 'Users middlename' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.49 NAME ( 'conferenceInformation' ) + DESC 'Users n3tmeeting Info' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +########### END - Special Attributes for new Contact Handling (OL) ############################### + +########### Special Attributes for new Contact Handling (OX) ############################## + +attributetype ( 1.1.2.1.1.50 NAME ( 'OXUserPosition' ) + DESC 'Users position' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.51 NAME ( 'OXUserSalesVolume' ) + DESC 'Users sales volume' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.52 NAME ( 'OXUserCity' ) + DESC 'Users City' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.53 NAME ( 'OXUserTaxID' ) + DESC 'Users Tax ID' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.54 NAME ( 'OXUserComReg' ) + DESC 'Users Commercial Register' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.55 NAME ( 'OXUserBranches' ) + DESC 'Users Branches' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.56 NAME ( 'OXUserAssistant' ) + DESC 'Users Assistant' + SUP manager ) + +attributetype ( 1.1.2.1.1.57 NAME ( 'OXUserCategories' ) + DESC 'Users Categories' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.58 NAME ( 'OXUserOtherStreet' ) + DESC 'Users alternative Street' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.59 NAME ( 'OXUserOtherPostalCode' ) + DESC 'Users alternative postal code' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.60 NAME ( 'OXUserOtherCity' ) + DESC 'Users alternative city' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.61 NAME ( 'OXUserOtherState' ) + DESC 'Users alternative State' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.62 NAME ( 'OXUserOtherCountry' ) + DESC 'Users alternative Country' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.63 NAME ( 'OXUserTeleAssistant' ) + DESC 'Users Assistant TelephoneNumber' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.64 NAME ( 'OXUserTeleBusiness2' ) + DESC 'Users alternative business phone number' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.65 NAME ( 'OXUserTeleCallback' ) + DESC 'Users Callback' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.66 NAME ( 'OXUserTeleCar' ) + DESC 'Users Car Phone Number' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.67 NAME ( 'OXUserTeleCompany' ) + DESC 'Users Company Phone' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.68 NAME ( 'OXUserTeleHome2' ) + DESC 'Users 2nd. Home Phone ' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.69 NAME ( 'OXUserTeleMobile2' ) + DESC 'Users 2nd mobile number' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.70 NAME ( 'OXUserTeleOther' ) + DESC 'Users other Phone' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.71 NAME ( 'OXUserTeleFax2' ) + DESC 'Users 2nd Telefax Number' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.72 NAME ( 'OXUserTelePrimary' ) + DESC 'Users primary Phone' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.73 NAME ( 'OXUserTeleRadio' ) + DESC 'Users Radio' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.74 NAME ( 'OXUserTeleTTY' ) + DESC 'Users TTY/tdd ' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.75 NAME ( 'OXUserInstantMessenger' ) + DESC 'Users IM' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.76 NAME ( 'OXUserInstantmessenger2' ) + DESC 'Users 2nd IM' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.77 NAME ( 'OXUserEmail2' ) + DESC 'Users 2nd Email' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.78 NAME ( 'OXUserEmail3' ) + DESC 'Users 3rd Email' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.79 NAME ( 'OXUserUserUndef01' ) + DESC 'Users custom field 01' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.80 NAME ( 'OXUserUserUndef02' ) + DESC 'Users custom field 02' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.81 NAME ( 'OXUserUserUndef03' ) + DESC 'Users custom field 03' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.82 NAME ( 'OXUserUserUndef04' ) + DESC 'Users custom field 04' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.83 NAME ( 'OXUserUserUndef05' ) + DESC 'Users custom field 05' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.84 NAME ( 'OXUserUserUndef06' ) + DESC 'Users custom field 06' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.85 NAME ( 'OXUserUserUndef07' ) + DESC 'Users custom field 07' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.86 NAME ( 'OXUserUserUndef08' ) + DESC 'Users custom field 08' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.87 NAME ( 'OXUserUserUndef09' ) + DESC 'Users custom field 09' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.88 NAME ( 'OXUserUserUndef10' ) + DESC 'Users custom field 10' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.89 NAME ( 'OXUserUserUndef11' ) + DESC 'Users custom field 11' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.90 NAME ( 'OXUserUserUndef12' ) + DESC 'Users custom field 12' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.91 NAME ( 'OXUserUserUndef13' ) + DESC 'Users custom field 13' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.92 NAME ( 'OXUserUserUndef14' ) + DESC 'Users custom field 14' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.93 NAME ( 'OXUserUserUndef15' ) + DESC 'Users custom field 15' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.94 NAME ( 'OXUserUserUndef16' ) + DESC 'Users custom field 16' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.95 NAME ( 'OXUserUserUndef17' ) + DESC 'Users custom field 17' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.96 NAME ( 'OXUserUserUndef18' ) + DESC 'Users custom field 18' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.97 NAME ( 'OXUserUserUndef19' ) + DESC 'Users custom field 19' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.98 NAME ( 'OXUserUserUndef20' ) + DESC 'Users custom field 20' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.99 NAME ( 'OXUserSuffix' ) + DESC 'Users Suffix Name' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.100 NAME ( 'OXUserPostalCode' ) + DESC 'Users Postal Code address' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.101 NAME ( 'OXUserState' ) + DESC 'Users State Name' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.102 NAME ( 'OXUserMaritalStatus' ) + DESC 'Users marital status' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.103 NAME ( 'OXUserChildren' ) + DESC 'The number of users children ' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +attributetype ( 1.1.2.1.1.104 NAME ( 'OXUserProfession' ) + DESC 'The Users profession' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.105 NAME ( 'OXUserNickName' ) + DESC 'Users Nick Name' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.106 NAME ( 'OXUserSpouseName' ) + DESC 'Users Spouse Name' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.107 NAME ( 'OXUserAnniversary' ) + DESC 'Any user anniversary' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.108 NAME ( 'OXUserComment' ) + DESC 'A comment about the Users' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.109 NAME ( 'OXUserDistributionList' ) + DESC 'uid for the distribution List in the Databse' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + + +########### ADDED FOR OX GROUPWARE DAYVIEW ############ +attributetype ( 1.1.2.1.1.110 NAME ( 'OXDayviewInterval' ) + DESC 'interval for displaying ox appointments on the dayview' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.1.2.1.1.111 NAME ( 'OXDayviewStartTime' ) + DESC 'starttime for displaying ox appointments on the dayview' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) + +attributetype ( 1.1.2.1.1.112 NAME ( 'OXDayviewEndTime' ) + DESC 'endtime for displaying ox appointments on the dayview' + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) +####################################################### + + +### ADDED FOR VDOMAINOBJECT ### + +attributetype ( 1.1.2.1.1.113 NAME ( 'domainName' ) + DESC 'The name of domain' + EQUALITY caseIgnoreIA5Match + SUBSTR caseIgnoreIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) + +############################### + + + +######################################################################### + + + +# +# Here we go with the OX Objects ... +# + +objectclass ( 1.1.2.2.1.1 NAME 'OXUserObject' SUP top AUXILIARY + DESC 'Additional Objectclass for OX User' + MAY ( alias $ imapServer $ imapPort $ sievePort $ mailDomain $ smtpServer $ smtpPort $ + groupwareServer $ groupwareServerPort $ webmailServer $ webmailServerPort $ + DBServer $ DBServerPort $ DBServerType $ reject $ relClientCert $ userCountry $ + loginDestination $ birthDay $ colocRouteAddr $ mailEnabled $ lnetMailAccess $ vaddress $ + IPPhone $ url $ otherpager $ otherfacsimiletelephonenumber $ homephone $ + c $ info $ middleName $ co $ conferenceInformation $ telexNumber $ + OXGroupwareStyle $ OXWebmailStyle $ OXGroupID $ OXAppointmentDays $ OXTaskDays $ OXDayViewInterval $ OXDayViewStartTime $ OXDayViewEndTime $ OXTimeZone $ + OXUserSuffix $ OXUserPostalCode $ OXUserCity $ OXUserState $ OXUserMaritalStatus $ OXUserChildren $ OXUserProfession $ + OXUserNickName $ OXUserSpouseName $ OXUserAnniversary $ OXUserComment $ + OXUserPosition $ OXUserSalesVolume $ OXUserTaxID $ OXUserComReg $ OXUserBranches $ + OXUserAssistant $ OXUserCategories $ OXUserOtherStreet $ OXUserOtherPostalCode $ OXUserOtherCity $ + OXUserOtherState $ OXUserOtherCountry $ OXUserTeleAssistant $ OXUserTeleBusiness2 $ OXUserTeleCallback $ + OXUserTeleCar $ OXUserTeleCompany $ OXUserTeleHome2 $ OXUserTeleMobile2 $ OXUserTeleOther $ OXUserTeleFax2 $ + OXUserTelePrimary $ OXUserTeleRadio $ OXUserTeleTTY $ OXUserInstantMessenger $ OXUserInstantmessenger2 $ + OXUserEmail2 $ OXUserEmail3 $ OXUserUserUndef01 $ OXUserUserUndef02 $ OXUserUserUndef03 $ OXUserUserUndef04 $ + OXUserUserUndef05 $ OXUserUserUndef06 $ OXUserUserUndef07 $ OXUserUserUndef08 $ OXUserUserUndef09 $ + OXUserUserUndef10 $ OXUserUserUndef11 $ OXUserUserUndef12 $ OXUserUserUndef13 $ OXUserUserUndef14 $ + OXUserUserUndef15 $ OXUserUserUndef16 $ OXUserUserUndef17 $ OXUserUserUndef18 $ OXUserUserUndef19 $ + OXUserUserUndef20 $ OXUserDistributionList + )) + +objectclass ( 1.1.2.2.1.2 NAME 'OXResourceGroupObject' SUP top STRUCTURAL + DESC 'Additional Objectclass for OX ResourceGroup' + MAY ( resourceGroupName $ resourceGroupMember $ resourceGroupAvailable $ resourceGroupDescription )) + + +objectclass ( 1.1.2.2.1.3 NAME 'OXResourceObject' SUP top STRUCTURAL + DESC 'Additional Objectclass for OX Resource' + MAY ( resourceName $ resourceAvailable $ resourceDescription )) + +objectclass ( 1.1.2.2.1.4 NAME 'OXVDomainObject' SUP top STRUCTURAL + DESC 'virtual domains, can be used for lookups for MTA' + MUST ( MTALocaldomain $ domainName )) + +objectclass ( 1.1.2.2.1.5 NAME 'OXIMAPFolderObject' SUP top STRUCTURAL + DESC 'Shared IMAP Folder' + MUST fn + MAY ( mailDeliveryProgram $ description $ mailEnabled $ + deliverToUID)) + +objectclass ( 1.1.2.2.1.6 NAME 'OXMailTransportObject' SUP top STRUCTURAL + DESC 'Transport maps in LDAP' + MUST ( smtpDomainTransportNexthop $ smtpDomain $ cn ) + MAY description ) diff --git a/trunk/gosa-plugins/openxchange/help/guide.xml b/trunk/gosa-plugins/openxchange/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/openxchange/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/openxchange/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d6c9d20ca --- /dev/null +++ b/trunk/gosa-plugins/openxchange/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,132 @@ +# translation of messages.po to +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2008-04-04 09:30+0200\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:24 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:438 +msgid "Open-Xchange" +msgstr "Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:25 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Error" +msgstr "Fehler" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +msgid "Open-Xchange database" +msgstr "Open-Xchange Datenbank" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:197 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:310 +msgid "Configuration error" +msgstr "Konfigurations-Fehler" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:207 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:220 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:330 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:339 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +msgid "Open-Xchange account name" +msgstr "Open-Xchange Konto-Name" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Cannot save Open-Xchange account!" +msgstr "Kann Open-Xchange Konto nicht speichern!" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +msgid "Open-Xchange account settings" +msgstr "Open-Xchange Konto-Einstellungen" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:443 +msgid "My account" +msgstr "Mein Konto" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:448 +msgid "OXAppointmentDays" +msgstr "OX-Tage für Termin" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:449 +msgid "OXTaskDays" +msgstr "OX-Tage für Aufgabe" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:450 +msgid "OXTimeZone" +msgstr "OX-Zeitzone" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "Open-Xchange Account" +msgstr "Open-Xchange Konto" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "" +"disabled, no Postgresql support detected. Or the specified database can't be " +"reached" +msgstr "" +"deaktiviert, keine PostgreSQL-Unterstützung erkannt. Oder die angegebene " +"Datenbank kann nicht erreicht werden" + +#: personal/connectivity/openxchange/oxchange.tpl:18 +msgid "Open-Xchange account" +msgstr "Open-Xchange Konto" + +#: personal/connectivity/openxchange/oxchange.tpl:29 +msgid "Remember" +msgstr "Erinnern" + +#: personal/connectivity/openxchange/oxchange.tpl:33 +msgid "Appointment Days" +msgstr "Tage für Termin" + +#: personal/connectivity/openxchange/oxchange.tpl:39 +#: personal/connectivity/openxchange/oxchange.tpl:49 +msgid "days" +msgstr "Tage" + +#: personal/connectivity/openxchange/oxchange.tpl:42 +msgid "Task Days" +msgstr "Tage für Aufgabe" + +#: personal/connectivity/openxchange/oxchange.tpl:61 +msgid "User Information" +msgstr "Benutzerinformation" + +#: personal/connectivity/openxchange/oxchange.tpl:65 +msgid "User Timezone" +msgstr "Zeitzone des Benutzers" diff --git a/trunk/gosa-plugins/openxchange/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/openxchange/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..4618e86c5 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,156 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:24 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:438 +msgid "Open-Xchange" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:25 +msgid "This does something" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Error" +msgstr "Error" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#, fuzzy +msgid "Open-Xchange database" +msgstr "Activar la configuración de cuenta de Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:197 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:310 +#, fuzzy +msgid "Configuration error" +msgstr "Se puede escribir en la configuración" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:207 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:220 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:330 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:339 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#, fuzzy +msgid "Open-Xchange account name" +msgstr "Activar la configuración de cuenta de Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Cannot save Open-Xchange account!" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Open-Xchange account settings" +msgstr "Activar la configuración de cuenta de Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:443 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:448 +msgid "OXAppointmentDays" +msgstr "Días de recordatorio OX" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:449 +msgid "OXTaskDays" +msgstr "Días para tareas OX" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:450 +msgid "OXTimeZone" +msgstr "Zona de uso horario del usuario OX" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "Open-Xchange Account" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "" +"disabled, no Postgresql support detected. Or the specified database can't be " +"reached" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:18 +msgid "Open-Xchange account" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:29 +msgid "Remember" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:33 +msgid "Appointment Days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:39 +#: personal/connectivity/openxchange/oxchange.tpl:49 +msgid "days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:42 +msgid "Task Days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:61 +msgid "User Information" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:65 +msgid "User Timezone" +msgstr "" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "¡No puedo conectar al servidor de base de datos postgresql!." + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "Configuración de la base de datos de FAX" + +#~ msgid "Removing of user/oxchange addressbook account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la eliminación de la cuenta de libreta de direcciones de " +#~ "usuario/open-xchange con dn '%s'." + +#~ msgid "Saving of user/oxchange account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la grabación de la cuenta de usuario/open-xchange con dn '%s'." + +#~ msgid "Creating of user/oxchange account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la creación de la cuenta de usuario/open-xchange con dn '%s'." + +#, fuzzy +#~ msgid "Open-Xchange account name is invalid!" +#~ msgstr "Activar la configuración de cuenta de Open-Xchange" diff --git a/trunk/gosa-plugins/openxchange/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/openxchange/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..4e64223ed --- /dev/null +++ b/trunk/gosa-plugins/openxchange/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,125 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2008-06-08 15:36+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:24 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:438 +msgid "Open-Xchange" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:25 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Error" +msgstr "Erreur" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +msgid "Open-Xchange database" +msgstr "Base de données Open Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:197 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:310 +msgid "Configuration error" +msgstr "Erreur de configuration" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:207 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:220 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:330 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:339 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +msgid "Open-Xchange account name" +msgstr "Nom du compte Open Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Cannot save Open-Xchange account!" +msgstr "Impossible de sauver le compte Open Xchange !" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +msgid "Open-Xchange account settings" +msgstr "Paramètres du compte Open Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +msgid "Connectivity addon" +msgstr "Connectivité" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:443 +msgid "My account" +msgstr "Mon Compte" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:448 +msgid "OXAppointmentDays" +msgstr "Rendez vous" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:449 +msgid "OXTaskDays" +msgstr "Tâches" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:450 +msgid "OXTimeZone" +msgstr "Fuseau Horaire de l'utilisateur" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "Open-Xchange Account" +msgstr "Compte Open-Xchange" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "" +"disabled, no Postgresql support detected. Or the specified database can't be " +"reached" +msgstr "" +"désactivé, le support pour Postgresql est manquant. Ou la base de données " +"spécifiée ne peut pas être contactée" + +#: personal/connectivity/openxchange/oxchange.tpl:18 +msgid "Open-Xchange account" +msgstr "Compte Open Xchange" + +#: personal/connectivity/openxchange/oxchange.tpl:29 +msgid "Remember" +msgstr "Se souvenir" + +#: personal/connectivity/openxchange/oxchange.tpl:33 +msgid "Appointment Days" +msgstr "Rendez vous" + +#: personal/connectivity/openxchange/oxchange.tpl:39 +#: personal/connectivity/openxchange/oxchange.tpl:49 +msgid "days" +msgstr "jours" + +#: personal/connectivity/openxchange/oxchange.tpl:42 +msgid "Task Days" +msgstr "Tâches" + +#: personal/connectivity/openxchange/oxchange.tpl:61 +msgid "User Information" +msgstr "Information Utilisateur" + +#: personal/connectivity/openxchange/oxchange.tpl:65 +msgid "User Timezone" +msgstr "Zone Horaire de l'utilisateur" diff --git a/trunk/gosa-plugins/openxchange/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/openxchange/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..97fe7e9a0 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,155 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:24 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:438 +msgid "Open-Xchange" +msgstr "Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:25 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Error" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#, fuzzy +msgid "Open-Xchange database" +msgstr "Opzioni di posta dell'identità" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:197 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:310 +#, fuzzy +msgid "Configuration error" +msgstr "File di configurazione" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:207 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:220 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:330 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:339 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#, fuzzy +msgid "Open-Xchange account name" +msgstr "Opzioni di posta dell'identità" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +#, fuzzy +msgid "Cannot save Open-Xchange account!" +msgstr "Opzioni di posta dell'identità" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Open-Xchange account settings" +msgstr "Opzioni di posta dell'identità" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:443 +msgid "My account" +msgstr "Identità" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:448 +msgid "OXAppointmentDays" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:449 +msgid "OXTaskDays" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:450 +msgid "OXTimeZone" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "Open-Xchange Account" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "" +"disabled, no Postgresql support detected. Or the specified database can't be " +"reached" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:18 +msgid "Open-Xchange account" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:29 +msgid "Remember" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:33 +msgid "Appointment Days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:39 +#: personal/connectivity/openxchange/oxchange.tpl:49 +msgid "days" +msgstr "giorni" + +#: personal/connectivity/openxchange/oxchange.tpl:42 +msgid "Task Days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:61 +msgid "User Information" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:65 +msgid "User Timezone" +msgstr "" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Impossibile connettersi al server del database!" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "Scarica il file di configurazione" + +#, fuzzy +#~ msgid "Removing of user/oxchange addressbook account with dn '%s' failed." +#~ msgstr "Elimina estensioni telefoniche" + +#, fuzzy +#~ msgid "Saving of user/oxchange account with dn '%s' failed." +#~ msgstr "Elimina estensioni telefoniche" + +#, fuzzy +#~ msgid "Creating of user/oxchange account with dn '%s' failed." +#~ msgstr "Elimina estensioni telefoniche" + +#, fuzzy +#~ msgid "Open-Xchange account name is invalid!" +#~ msgstr "Opzioni di posta dell'identità" diff --git a/trunk/gosa-plugins/openxchange/locale/messages.po b/trunk/gosa-plugins/openxchange/locale/messages.po new file mode 100644 index 000000000..a4345cc53 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/locale/messages.po @@ -0,0 +1,125 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:24 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:438 +msgid "Open-Xchange" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:25 +msgid "This does something" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Error" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +msgid "Open-Xchange database" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:197 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:310 +msgid "Configuration error" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:207 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:220 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:330 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:339 +msgid "LDAP error" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +msgid "Open-Xchange account name" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Cannot save Open-Xchange account!" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +msgid "Open-Xchange account settings" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:443 +msgid "My account" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:448 +msgid "OXAppointmentDays" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:449 +msgid "OXTaskDays" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:450 +msgid "OXTimeZone" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "Open-Xchange Account" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "" +"disabled, no Postgresql support detected. Or the specified database can't be " +"reached" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:18 +msgid "Open-Xchange account" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:29 +msgid "Remember" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:33 +msgid "Appointment Days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:39 +#: personal/connectivity/openxchange/oxchange.tpl:49 +msgid "days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:42 +msgid "Task Days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:61 +msgid "User Information" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:65 +msgid "User Timezone" +msgstr "" diff --git a/trunk/gosa-plugins/openxchange/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/openxchange/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..aeba30652 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,164 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:24 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:438 +msgid "Open-Xchange" +msgstr "Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:25 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Error" +msgstr "Fout" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#, fuzzy +msgid "Open-Xchange database" +msgstr "Open-Xchange account" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:197 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:310 +#, fuzzy +msgid "Configuration error" +msgstr "Configuratie bestand" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:207 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:220 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:330 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:339 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#, fuzzy +msgid "Open-Xchange account name" +msgstr "Open-Xchange account" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +#, fuzzy +msgid "Cannot save Open-Xchange account!" +msgstr "Open-Xchange account" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Open-Xchange account settings" +msgstr "Open-Xchange account" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Connectivity addon" +msgstr "Verbindingen" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:443 +msgid "My account" +msgstr "Mijn account" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:448 +#, fuzzy +msgid "OXAppointmentDays" +msgstr "Afspraken" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:449 +#, fuzzy +msgid "OXTaskDays" +msgstr "Taken" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:450 +#, fuzzy +msgid "OXTimeZone" +msgstr "Tijdzone" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "Open-Xchange Account" +msgstr "Open-Xchange Account" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "" +"disabled, no Postgresql support detected. Or the specified database can't be " +"reached" +msgstr "" +"Uitgeschakeld. Er is geen Postgresql ondersteuning gedetecteerd of de " +"opgegeven database kon niet bereikt worden" + +#: personal/connectivity/openxchange/oxchange.tpl:18 +msgid "Open-Xchange account" +msgstr "Open-Xchange account" + +#: personal/connectivity/openxchange/oxchange.tpl:29 +msgid "Remember" +msgstr "Onthouden" + +#: personal/connectivity/openxchange/oxchange.tpl:33 +msgid "Appointment Days" +msgstr "Afspraken" + +#: personal/connectivity/openxchange/oxchange.tpl:39 +#: personal/connectivity/openxchange/oxchange.tpl:49 +msgid "days" +msgstr "dagen" + +#: personal/connectivity/openxchange/oxchange.tpl:42 +msgid "Task Days" +msgstr "Taken" + +#: personal/connectivity/openxchange/oxchange.tpl:61 +msgid "User Information" +msgstr "Gebruikersinformatie" + +#: personal/connectivity/openxchange/oxchange.tpl:65 +msgid "User Timezone" +msgstr "Tijdzone" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Kan niet verbinden met de database server!" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "FAX database" + +#, fuzzy +#~ msgid "Removing of user/oxchange addressbook account with dn '%s' failed." +#~ msgstr "Het verwijderen van het Open-Xchange adresboek is mislukt" + +#, fuzzy +#~ msgid "Saving of user/oxchange account with dn '%s' failed." +#~ msgstr "Het opslaan van het Open-Xchange account is mislukt" + +#, fuzzy +#~ msgid "Creating of user/oxchange account with dn '%s' failed." +#~ msgstr "Het opslaan van het Open-Xchange account is mislukt" + +#, fuzzy +#~ msgid "Open-Xchange account name is invalid!" +#~ msgstr "Open-Xchange account" diff --git a/trunk/gosa-plugins/openxchange/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/openxchange/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..7d1ad5c11 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,156 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:24 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:438 +msgid "Open-Xchange" +msgstr "Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:25 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Error" +msgstr "Błąd" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#, fuzzy +msgid "Open-Xchange database" +msgstr "konto Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:197 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:310 +#, fuzzy +msgid "Configuration error" +msgstr "Plik konfiguracyjny" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:207 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:220 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:330 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:339 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#, fuzzy +msgid "Open-Xchange account name" +msgstr "konto Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +#, fuzzy +msgid "Cannot save Open-Xchange account!" +msgstr "konto Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Open-Xchange account settings" +msgstr "Ustawienia konta Open xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:443 +msgid "My account" +msgstr "Moje konto " + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:448 +#, fuzzy +msgid "OXAppointmentDays" +msgstr "Dni spotkania" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:449 +#, fuzzy +msgid "OXTaskDays" +msgstr "Dni robocze" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:450 +#, fuzzy +msgid "OXTimeZone" +msgstr "Strefa czasowa użytkownika" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "Open-Xchange Account" +msgstr "Konto Open-Xchange" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "" +"disabled, no Postgresql support detected. Or the specified database can't be " +"reached" +msgstr "" +"wyłączone, nie wykryto wsparcia dia PostgreSQL, lub podana baza nie jest " +"osiągalna" + +#: personal/connectivity/openxchange/oxchange.tpl:18 +msgid "Open-Xchange account" +msgstr "konto Open-Xchange" + +#: personal/connectivity/openxchange/oxchange.tpl:29 +msgid "Remember" +msgstr "Pamiętaj" + +#: personal/connectivity/openxchange/oxchange.tpl:33 +msgid "Appointment Days" +msgstr "Dni spotkania" + +#: personal/connectivity/openxchange/oxchange.tpl:39 +#: personal/connectivity/openxchange/oxchange.tpl:49 +msgid "days" +msgstr "dni" + +#: personal/connectivity/openxchange/oxchange.tpl:42 +msgid "Task Days" +msgstr "Dni robocze" + +#: personal/connectivity/openxchange/oxchange.tpl:61 +msgid "User Information" +msgstr "Informacja o użytkowniku" + +#: personal/connectivity/openxchange/oxchange.tpl:65 +msgid "User Timezone" +msgstr "Strefa czasowa użytkownika" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Nie można połączyć się z serwerem baz danych!" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "Konfiguracja bazy FAX" + +#~ msgid "Removing of user/oxchange addressbook account with dn '%s' failed." +#~ msgstr "Usuwanie konta oxchange z dn '%s' nieudane." + +#~ msgid "Saving of user/oxchange account with dn '%s' failed." +#~ msgstr "Zapisywanie konta oxchange z dn '%s' nieudane." + +#~ msgid "Creating of user/oxchange account with dn '%s' failed." +#~ msgstr "Tworzenie konta oxchange z dn '%s' nieudane." + +#, fuzzy +#~ msgid "Open-Xchange account name is invalid!" +#~ msgstr "konto Open-Xchange" diff --git a/trunk/gosa-plugins/openxchange/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/openxchange/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..0ee1c4765 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,158 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:24 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:438 +msgid "Open-Xchange" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:25 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Error" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#, fuzzy +msgid "Open-Xchange database" +msgstr "Удалить телефонный аккаунт" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:197 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:310 +#, fuzzy +msgid "Configuration error" +msgstr "Настроить" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:207 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:220 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:330 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:339 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#, fuzzy +msgid "Open-Xchange account name" +msgstr "Удалить телефонный аккаунт" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +#, fuzzy +msgid "Cannot save Open-Xchange account!" +msgstr "Удалить телефонный аккаунт" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Open-Xchange account settings" +msgstr "Удалить телефонный аккаунт" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:443 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:448 +msgid "OXAppointmentDays" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:449 +msgid "OXTaskDays" +msgstr "" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:450 +msgid "OXTimeZone" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "Open-Xchange Account" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "" +"disabled, no Postgresql support detected. Or the specified database can't be " +"reached" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:18 +#, fuzzy +msgid "Open-Xchange account" +msgstr "Удалить телефонный аккаунт" + +#: personal/connectivity/openxchange/oxchange.tpl:29 +#, fuzzy +msgid "Remember" +msgstr "Декабрь" + +#: personal/connectivity/openxchange/oxchange.tpl:33 +msgid "Appointment Days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:39 +#: personal/connectivity/openxchange/oxchange.tpl:49 +#, fuzzy +msgid "days" +msgstr "день" + +#: personal/connectivity/openxchange/oxchange.tpl:42 +msgid "Task Days" +msgstr "" + +#: personal/connectivity/openxchange/oxchange.tpl:61 +#, fuzzy +msgid "User Information" +msgstr "Информация" + +#: personal/connectivity/openxchange/oxchange.tpl:65 +msgid "User Timezone" +msgstr "" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "Невозможно подключиться к серверу базы данных!" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "Базы данных" + +#, fuzzy +#~ msgid "Removing of user/oxchange addressbook account with dn '%s' failed." +#~ msgstr "Удалить телефонный аккаунт" + +#, fuzzy +#~ msgid "Saving of user/oxchange account with dn '%s' failed." +#~ msgstr "Удалить телефонный аккаунт" + +#, fuzzy +#~ msgid "Creating of user/oxchange account with dn '%s' failed." +#~ msgstr "Удалить телефонный аккаунт" + +#, fuzzy +#~ msgid "Open-Xchange account name is invalid!" +#~ msgstr "Удалить телефонный аккаунт" diff --git a/trunk/gosa-plugins/openxchange/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/openxchange/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..36bff3ea3 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,160 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:24 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:438 +msgid "Open-Xchange" +msgstr "Open-Xchange" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:25 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:189 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:302 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +msgid "Error" +msgstr "错误" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:193 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:306 +#, fuzzy +msgid "Open-Xchange database" +msgstr "Open-Xchange 账号" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:197 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:310 +#, fuzzy +msgid "Configuration error" +msgstr "配置文件" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:207 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:220 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:330 +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:339 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:290 +#, fuzzy +msgid "Open-Xchange account name" +msgstr "Open-Xchange 账号" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:428 +#, fuzzy +msgid "Cannot save Open-Xchange account!" +msgstr "Open-Xchange 账号" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Open-Xchange account settings" +msgstr "Open-Xchange 账号" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:439 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:443 +msgid "My account" +msgstr "我的账号" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:448 +#, fuzzy +msgid "OXAppointmentDays" +msgstr "约会日期" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:449 +#, fuzzy +msgid "OXTaskDays" +msgstr "任务日期" + +#: personal/connectivity/openxchange/class_oxchangeAccount.inc:450 +#, fuzzy +msgid "OXTimeZone" +msgstr "用户时区" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "Open-Xchange Account" +msgstr "Open-Xchange 账号" + +#: personal/connectivity/openxchange/oxchange.tpl:2 +msgid "" +"disabled, no Postgresql support detected. Or the specified database can't be " +"reached" +msgstr "已禁用,没有检测到 Postgresql 支持。或者指定的数据库无法访问" + +#: personal/connectivity/openxchange/oxchange.tpl:18 +msgid "Open-Xchange account" +msgstr "Open-Xchange 账号" + +#: personal/connectivity/openxchange/oxchange.tpl:29 +msgid "Remember" +msgstr "记住" + +#: personal/connectivity/openxchange/oxchange.tpl:33 +msgid "Appointment Days" +msgstr "约会日期" + +#: personal/connectivity/openxchange/oxchange.tpl:39 +#: personal/connectivity/openxchange/oxchange.tpl:49 +msgid "days" +msgstr "天" + +#: personal/connectivity/openxchange/oxchange.tpl:42 +msgid "Task Days" +msgstr "任务日期" + +#: personal/connectivity/openxchange/oxchange.tpl:61 +msgid "User Information" +msgstr "用户信息" + +#: personal/connectivity/openxchange/oxchange.tpl:65 +msgid "User Timezone" +msgstr "用户时区" + +#, fuzzy +#~ msgid "Cannot connect to %s database!" +#~ msgstr "无法连接到数据库!" + +#, fuzzy +#~ msgid "%s database configuration is missing!" +#~ msgstr "传真数据库" + +#, fuzzy +#~ msgid "Removing of user/oxchange addressbook account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of user/oxchange account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Creating of user/oxchange account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Open-Xchange account name is invalid!" +#~ msgstr "Open-Xchange 账号" diff --git a/trunk/gosa-plugins/openxchange/personal/connectivity/openxchange/class_oxchangeAccount.inc b/trunk/gosa-plugins/openxchange/personal/connectivity/openxchange/class_oxchangeAccount.inc new file mode 100644 index 000000000..6977ca77c --- /dev/null +++ b/trunk/gosa-plugins/openxchange/personal/connectivity/openxchange/class_oxchangeAccount.inc @@ -0,0 +1,455 @@ +parent = &$parent; + for ($i=0;$iconfig->data['TABS']['CONNECTIVITY']);$i++){ + if($this->config->data['TABS']['CONNECTIVITY'][$i]['CLASS']=='oxchangeAccount') { + $this->oxconf=$this->config->data['TABS']['CONNECTIVITY'][$i]; + break; + } + } + + $zones = timezone::_get_tz_zones(); + $this->timezones= array_keys($zones['TIMEZONES']); + + /* Setting uid to default */ + if(isset($this->attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + + $this->dnmode= $this->config->get_cfg_value("accountPrimaryAttribute"); + if(isset($this->attrs[$this->dnmode][0])){ + $this->dnModeValue = $this->attrs[$this->dnmode][0]; + } + } + + function execute() + { + /* Call parent execute */ + //plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + $display=""; + + /* Show main page */ + $smarty= get_smarty(); + + if (function_exists("pg_connect")){ + $smarty->assign("pg", true); + }else{ + $smarty->assign("pg", false); + } + + /* Load attributes */ + foreach($this->attributes as $val){ + $smarty->assign("$val", $this->$val); + } + if ($this->is_account){ + $smarty->assign("oxchangeState", "checked"); + $smarty->assign("oxState", ""); + } else { + $smarty->assign("oxchangeState", ""); + $smarty->assign("oxState", "disabled"); + } + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $key => $desc){ + $smarty->assign($key."ACL",$this->getacl($key,$this->ReadOnly)); + $smarty->assign($key."_W",$this->acl_is_writeable($key)); + } + + if((!$this->ReadOnly) && (($this->is_account && $this->acl_is_removeable()) || (!$this->is_account && $this->acl_is_createable())) ){ + $smarty->assign('oxchangeAccountACL', ""); + }else{ + $smarty->assign('oxchangeAccountACL', " disabled "); + } + + $smarty->assign("timezones", $this->timezones); + + + if ($this->parent !== NULL){ + $smarty->assign("tabbed", 1); + }else{ + $smarty->assign("tabbed", 0); + } + + /* Trying to open a Postgresql Database Server */ + if (function_exists("pg_connect")){ + if(isset($this->oxconf["PGUSER"]) and isset($this->oxconf["PGHOST"]) and isset($this->oxconf["PGDBNAME"]) and isset($this->oxconf["PGPASSWD"])){ + $pgcon = @pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]); + if (! $pgcon){ + $smarty->assign("pg", false); + } + }else{ + $smarty->assign("pg", false); + } + }else{ + $smarty->assign("pg", false); + } + + $display.= $smarty->fetch (get_template_path('oxchange.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + if(!$this->acl_is_removeable() || !$this->initially_was_account) return; + $this->attrs[$this->dnmode][0] = $this->dnModeValue; + $sqldeluser=array( + "delete from prg_notes where (user_right like '".$this->attrs[$this->dnmode][0]."') and (group_right like 's')", + "delete from prg_documents_read where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_documents_mod where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_docufolders_read where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_docufolders_mod where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_date_rights where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_date_notification where (member_uid like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_dates_members where (member_uid like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_knowledge_read where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_knowledge_mod where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_knowledge_folder_read where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_knowledge_folder_mod where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_pin_board_read where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_pin_board_mod where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_bookmarks_read where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_bookmarks_mod where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_bookmarks_folder_read where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_bookmarks_folder_mod where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_tasks_rights where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_tasks_notification where (member_uid like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_tasks_members where (member_uid like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_projects_rights where (user_right like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_projects_notification where (member_uid like '".$this->attrs[$this->dnmode][0]."')", + "delete from prg_projects_members where (member_uid like '".$this->attrs[$this->dnmode][0]."')", + "delete from oxfolder_permissions where (entity like '".$this->attrs[$this->dnmode][0]."') AND ((role = 256) OR (role = 1024))", + "delete from oxfolder_standardfolders where owner like '".$this->attrs[$this->dnmode][0]."'", + "delete from prg_forum_read where user_right = '".$this->attrs[$this->dnmode][0]."'", + "delete from prg_forum_mod where user_right = '".$this->attrs[$this->dnmode][0]."'", + "delete from prg_forum_abo where user_right = '".$this->attrs[$this->dnmode][0]."'", + "delete from prg_forum_seen where username = '".$this->attrs[$this->dnmode][0]."'", + "delete from sys_holiday where (userid like '".$this->attrs[$this->dnmode][0]."')", + "delete from usr_holiday where (userid like '".$this->attrs[$this->dnmode][0]."')"); + + /* Trying to open a Postgresql Database Server */ + if (function_exists("pg_connect")){ + if(isset($this->oxconf["PGUSER"]) and + isset($this->oxconf["PGHOST"]) and + isset($this->oxconf["PGDBNAME"]) and + isset($this->oxconf["PGPASSWD"])){ + $pgcon = @pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]); + if (! $pgcon){ + msg_dialog::display(_("Error"), msgPool::dbconnect(_("Open-Xchange"),@pg_last_error($pgcon)), ERROR_DIALOG); + return; + } + }else{ + msg_dialog::display(_("Error"), msgPool::noserver(_("Open-Xchange database")), ERROR_DIALOG); + return; + } + }else{ + msg_dialog::display(_("Configuration error"),msgPool::missingext("postgresql"), ERROR_DIALOG); + return; + } + + plugin::remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + + if($ldap->dn_exists("ou=addr,".$this->dn)){ + $ldap->rmdir_recursive("ou=addr,".$this->dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + } + + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->postremove(array("uid" => $this->uid)); + + /* Finally remove data from postgresql server */ + foreach ($sqldeluser as $sqls){ + @pg_exec($pgcon,$sqls); + } + pg_close(); + } + + /* Save data to object */ + function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + if (isset($_POST['oxchange'])){ + if (!$this->is_account && $_POST['oxchange'] == "B") { + if($this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + + /* Get objects */ + foreach(array("OXTimeZone","OXTaskDays","OXAppointmentDays") as $name) { + if($this->acl_is_writeable($name) && isset($_POST[$name])){ + $this->$name = $_POST[$name]; + } + } + + if (isset($_POST["oxchangeStatus"])){ + $this->oxchangeStatus = "disabled"; + } else { + $this->oxchangeStatus = "enabled"; + } + } + + + /* Save to LDAP */ + function save() + { + $needupdate=TRUE; + $istemplate=FALSE; + + /*First at all, we must check if this is new or is updated */ + /*Also check is we have a template, if is a template, is a new user */ + if (isset($this->attrs['objectClass'])){ + foreach ($this->attrs['objectClass'] as $object){ + if($object=="OXUserObject") $needupdate=FALSE; + if($object=="gosaUserTemplate") $istemplate=TRUE; + } + } + + /* Detect accounts uid + */ + if(!isset($this->attrs[$this->dnmode][0])){ + $uid = $this->parent->by_object['user']->uid; + }else{ + $uid=$this->attrs[$this->dnmode][0]; + } + + if (trim($uid) == "") { + msg_dialog::display(_("Error"), msgPool::invalid(_("Open-Xchange account name")), ERROR_DIALOG); + return; + } + + if ($istemplate) $needupdate=TRUE; + + if($needupdate){ + /* Trying to open a Postgresql Database Server */ + if (function_exists("pg_connect")){ + if(isset($this->oxconf["PGUSER"]) and isset($this->oxconf["PGHOST"]) and isset($this->oxconf["PGDBNAME"]) and isset($this->oxconf["PGPASSWD"])){ + $pgcon = @pg_connect("host=".$this->oxconf["PGHOST"]." user=".$this->oxconf["PGUSER"]." password=".$this->oxconf["PGPASSWD"]." dbname=".$this->oxconf["PGDBNAME"]); + if (! $pgcon){ + msg_dialog::display(_("Error"), msgPool::dbconnect(_("Open-Xchange"),@pg_last_error($pgcon)), ERROR_DIALOG); + return; + } + }else{ + msg_dialog::display(_("Error"), msgPool::noserver(_("Open-Xchange database")), ERROR_DIALOG); + return; + } + }else{ + msg_dialog::display(_("Configuration error"),msgPool::missingext("postgresql"), ERROR_DIALOG); + return; + } + } + + plugin::save(); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->postcreate(array("uid" => $this->uid)); + + if($needupdate){ + $ldap->create_missing_trees("ou=addr,".$this->dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Finally save data to postgresql server */ + pg_set_client_encoding ("UNICODE"); + $nv = "SELECT nextval ('serial_id')"; + $ot = "insert into oxfolder_tree (fuid, parent, fname, module, type, owner, creator, creating_date, created_from, changing_date, changed_from) VALUES (%d, 1, '%s', '%s', 'private', '%s', '%s', 'now', 'System', 'now', 'System')"; + $op = "INSERT INTO oxfolder_permissions (puid, pid, role, entity, sealed, fp, orp, owp, odp) VALUES (%d, %d, 32768, '%s', 0, 128, 128, 128, 128)"; + $os = "insert into oxfolder_standardfolders (owner,module_calendar,module_contact,module_task) VALUES ('%s',%d,%d,%d)"; + $ugr= "INSERT INTO usr_general_rights SELECT creating_date, created_from, changing_date, changed_from,text('%s'), addr_u, addr_r, addr_d, cont_u, cont_r, cont_d, data_u, data_r, data_d, serie_u, serie_r, serie_d, task_u, task_r, task_d, refer, proj_u, proj_r, proj_d, dfolder_u, dfolder_r, dfolder_d, doc_u, doc_r, doc_d, knowl_u, knowl_r, knowl_d, bfolder_u, bfolder_r, bfolder_d, bookm_u, bookm_r, bookm_d, pin_u, pin_r, pin_d, forum_n, fentrie_n, setup, pin_public, internal, int_groups, kfolder_u, kfolder_r, kfolder_d, webmail FROM sys_gen_rights_template WHERE login LIKE 'default_template'"; + + $error = FALSE; + $res=@pg_exec($pgcon,$nv); + + if(!$res){ + $error = TRUE; + }else{ + $calendarid=pg_fetch_row($res); + pg_freeresult($res); + + $q=sprintf($ot,$calendarid[0],'My Appointments','calendar',$uid,$uid); + @pg_exec($pgcon,$q); + } + + $res=@pg_exec($pgcon,$nv); + + if(!$res){ + $error = TRUE; + }else{ + $nid=pg_fetch_row($res); + pg_freeresult($res); + + $q=sprintf($op,$nid[0],$calendarid[0],$uid); + @pg_exec($pgcon,$q); + } + + $res=@pg_exec($pgcon,$nv); + if(!$res){ + $error = TRUE; + }else{ + $contactsid=pg_fetch_row($res); + pg_freeresult($res); + + $q=sprintf($ot,$contactsid[0],'My Contacts','contact',$uid,$uid); + @pg_exec($pgcon,$q); + } + + $res=@pg_exec($pgcon,$nv); + if(!$res){ + $error = TRUE; + }else{ + $nid=pg_fetch_row($res); + pg_freeresult($res); + + $q=sprintf($op,$nid[0],$contactsid[0],$uid); + @pg_exec($pgcon,$q); + } + + $res=@pg_exec($pgcon,$nv); + if(!$res){ + $error = TRUE; + }else{ + $tasksid=pg_fetch_row($res); + pg_freeresult($res); + + $q=sprintf($ot,$tasksid[0],'My Tasks','task',$uid,$uid); + @pg_exec($pgcon,$q); + } + + $res=@pg_exec($pgcon,$nv); + if(!$res){ + $error = TRUE; + }else{ + $nid=pg_fetch_row($res); + pg_freeresult($res); + + $q=sprintf($op,$nid[0],$tasksid[0],$uid); + @pg_exec($pgcon,$q); + + $q=sprintf($os,$uid,$calendarid[0],$contactsid[0],$tasksid[0]); + @pg_exec($pgcon,$q); + + $q=sprintf($ugr,$uid); + @pg_exec($pgcon,$q); + } + + @pg_close($pgcon); + + if($error){ + msg_dialog::display(_("Error"), _("Cannot save Open-Xchange account!"), ERROR_DIALOG); + } + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Open-Xchange"), + "plDescription" => _("Open-Xchange account settings")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 27, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + "OXAppointmentDays" => _("OXAppointmentDays"), + "OXTaskDays" => _("OXTaskDays"), + "OXTimeZone" => _("OXTimeZone")) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/openxchange/personal/connectivity/openxchange/oxchange.tpl b/trunk/gosa-plugins/openxchange/personal/connectivity/openxchange/oxchange.tpl new file mode 100644 index 000000000..2bd204907 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/personal/connectivity/openxchange/oxchange.tpl @@ -0,0 +1,84 @@ +{if !$pg} +

{t}Open-Xchange Account{/t} - {t}disabled, no Postgresql support detected. Or the specified database can't be reached{/t}

+{else} +

+ +{t}Open-Xchange account{/t}

+ + + + + + + + + + +
+ + + + + + + + + + + + +
+ {t}Remember{/t} +
+ +{render acl=$OXAppointmentDaysACL} + +{/render} + {t}days{/t}
+ +{render acl=$OXTaskDaysACL} + +{/render} + + {t}days{/t} +
+
+   + + + + + + + + + + + + + +
+ {t}User Information{/t} +
+ +{render acl=$OXTimeZoneACL} + +{/render} + +
+
+{/if} diff --git a/trunk/gosa-plugins/openxchange/plugin.dsc b/trunk/gosa-plugins/openxchange/plugin.dsc new file mode 100644 index 000000000..26dade3b5 --- /dev/null +++ b/trunk/gosa-plugins/openxchange/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = openxchange +description = "Open-Xchange account plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = connectivity, mail diff --git a/trunk/gosa-plugins/opsi/admin/opsi/class_opsi.inc b/trunk/gosa-plugins/opsi/admin/opsi/class_opsi.inc new file mode 100644 index 000000000..b0ea92bdf --- /dev/null +++ b/trunk/gosa-plugins/opsi/admin/opsi/class_opsi.inc @@ -0,0 +1,502 @@ +. + */ + + +/******** + + public function __construct($config) + public function enabled() + function get_hosts_for_system_management() + private function xml_to_array($xml,$alternative_method = FALSE) + public function send_action($type,$hostId,$mac) + public function list_clients( $hostId = "") + public function add_client($hostId,$macaddress,$notes,$description) + public function modify_client($hostId,$mac,$notes,$description) + public function get_netboot_products($host = "") + public function get_local_products($host = "") + public function get_product_properties($productId,$hostId = "") + public function set_product_properties($productId,$cfg,$hostId = "") + public function add_product_to_client($productId,$hostId) + public function del_product_from_client($productId,$hostId) + public function get_client_hardware($hostId) + public function get_client_software($hostId) + public function del_client($hostId) + public function job_opsi_install_client($hostId,$mac) + + ********/ + + +/*! \brief This is the opsi base class, it handles + . gosa daemon requests and prepares data for opsi plugins. + */ +class opsi extends gosaSupportDaemon +{ + private $config = NULL; + protected $use_alternative_xml_parse_method = TRUE; + protected $target = ""; + + /*! \brief Create opsi object. + @param + @return + */ + public function __construct($config) + { + $this->config = $config; + gosaSupportDaemon::__construct($config); + + /* Detect the target opsi host + */ + $tmp= $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp) && class_available("faiManagement")){ + $opsi_hosts = $this->get_hosts_with_module("opsi_com"); + + /* Just use the first result of the opsi hosts + */ + if(count($opsi_hosts) == 1 && isset($opsi_hosts[0])){ + $this->target = $opsi_hosts[0]; + }elseif(count($opsi_hosts) > 1){ + $this->target = $opsi_hosts[0]; + msg_dialog::display(_("Opsi"),sprintf(_("More than one Opsi server were found, using the first result '%s'."),$this->target)); + } + } + } + + + public function enabled() + { + $tmp= $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp) && class_available("faiManagement") && !empty($this->target)){ + return(TRUE); + } + return(FALSE); + } + + + /****************** + Opsi handling + ******************/ + + function get_hosts_for_system_management() + { + $res = $this->list_clients(); + $data = array(); + $ui = get_userinfo(); + foreach($res as $entry){ + if(!isset($entry['MAC'][0]['VALUE'])) $entry['MAC'][0]['VALUE'] = ""; + $obj = array( + "dn" => "opsi:=".$entry['NAME'][0]['VALUE'].",".get_ou("sambaMachineAccountRDN").$this->config->current['BASE'], + "objectClass" => array("gosa_opsi_client"), + "cn" => array(0 => $entry['NAME'][0]['VALUE']), + "macAddress" => array(0 => $entry['MAC'][0]['VALUE']), + "opsi_notes" => array(0 => $entry['NOTES'][0]['VALUE'])); + + /* Check permissions */ + $opsi_acl = $ui->get_permissions($obj['dn'],"opsi/opsiGeneric"); + if(preg_match("/r/",$opsi_acl)){ + if(!empty($entry['DESCRIPTION'][0]['VALUE'])){ + $obj["description"]= array(); + $obj["description"][0]= $entry['DESCRIPTION'][0]['VALUE']; + } + $data[] = $obj; + } + } + + return($data); + } + + + /*! \brief Maps all xml to array conversion to an alternative method + then used in the parent class 'gosaSupportDaemon'. + The alternative method is able to handle more complex data. + */ + private function xml_to_array($xml,$alternative_method = FALSE) + { + return(gosaSupportDaemon::xml_to_array($xml,TRUE)); + } + + + /*! \brief Trigger an event like wake or install for a specific hostId. + */ + public function send_action($type,$hostId,$mac) + { + switch($type){ + case 'install' : $this->job_opsi_install_client($hostId,$mac); break; + default : trigger_error('Unknown type '.$type.'.'); + } + } + + + public function job_opsi_activate_client($id,$mac) + { + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + $o_queue = new gosaSupportDaemon(); + if(isset($events['TRIGGERED']['DaemonEvent_activate'])){ + $evt = $events['TRIGGERED']['DaemonEvent_activate']; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $tmp->add_targets(array($mac)); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + + + + /****************** + SI Communication functions + ******************/ + + + + /*! \brief Returns a list of all opsi clients. + @param + @return + */ + public function list_clients( $hostId = "") + { + $data = array(); + $res = $this->send_data("gosa_opsi_list_clients",$this->target,$data,TRUE); + $items = array(); + if(isset($res['XML'][0]['ITEM'])){ + $items = $res['XML'][0]['ITEM']; + } + return($items); + } + + + /*! \brief Adds a new opsi client. + @param + @return + */ + public function add_client($hostId,$macaddress,$notes,$description) + { + $data = array("hostId" => $hostId,"macaddress" => $macaddress); + + if(empty($hostId)){ + trigger_error("No valid host id given, check parameter 1."); + return; + } + + /* Add optional attributes */ + foreach(array("notes","description") as $attr) { + if(!empty($$attr)){ + $data[$attr] = $$attr; + } + } + + /* Query SI server */ + $res = $this->send_data("gosa_opsi_add_client",$this->target,$data,TRUE); + } + + + /*! \brief Modify an opsi client. + @param + @return + */ + public function modify_client($hostId,$mac,$notes,$description) + { + $data = array("hostId" => $hostId,"mac" => $mac); + + if(empty($hostId)){ + trigger_error("No valid host id given, check parameter 1."); + return; + } + + /* Add optional attributes */ + foreach(array("notes","description") as $attr) { + $data[$attr] = $$attr; + } + + /* Query SI server */ + $res = $this->send_data("gosa_opsi_modify_client",$this->target,$data,TRUE); + } + + + + /*! \brief Returns a list of netboot products. + @param + @return + */ + public function get_netboot_products($host = "") + { + /* Append host attribute to query data + */ + $data = array(); + if(!empty($host)){ + $data['hostId'] = trim($host); + } + + $res = $this->send_data("gosa_opsi_get_netboot_products",$this->target,$data,TRUE); + $items = array(); + if(isset($res['XML'][0]['ITEM'])){ + foreach($res['XML'][0]['ITEM'] as $entry){ + $e = array("DESC" => $entry['DESCRIPTION'][0]['VALUE'], + "NAME" => $entry['PRODUCTID'][0]['VALUE']); + $items[$entry['PRODUCTID'][0]['VALUE']] = $e; + } + } + return($items); + } + + + /*! \brief Returns a list of all local products. + @param + @return + */ + public function get_local_products($host = "") + { + /* Append host attribute to query data + */ + $data = array(); + if(!empty($host)){ + $data['hostId'] = trim($host); + } + + $res = $this->send_data("gosa_opsi_get_local_products",$this->target,$data,TRUE); + $items = array(); + if(isset($res['XML'][0]['ITEM'])){ + foreach($res['XML'][0]['ITEM'] as $entry){ + $e = array("DESC" => $entry['DESCRIPTION'][0]['VALUE'], + "NAME" => $entry['PRODUCTID'][0]['VALUE']); + $items[$entry['PRODUCTID'][0]['VALUE']] = $e; + } + } + return($items); + } + + + /*! \brief Returns a list of all product properties. \ + . Additionally you can specify the host parameter to \ + . get host specific product properties + @param + @return + */ + public function get_product_properties($productId,$hostId = "") + { + $data = array("productId" => $productId); + + /* Append host attribute to query data + */ + if(!empty($hostId)){ + $data['hostId'] = trim($hostId); + } + + /* Check parameter */ + if(empty($productId)){ + trigger_error("No valid product id given, check parameter 1."); + return(array()); + } + + /* Query SI server */ + $res = $this->send_data("gosa_opsi_get_product_properties",$this->target,$data,TRUE); + $items = array(); + if(isset($res['XML'][0]['ITEM'])){ + foreach($res['XML'][0]['ITEM'] as $entry){ + foreach($entry as $name => $val){ + + foreach(array("DESCRIPTION","DEFAULT") as $attr){ + $items[$name][$attr] = ""; + if(isset($val[0][$attr])){ + $items[$name][$attr] = $val[0][$attr][0]['VALUE']; + } + } + $items[$name]['VALUE'] = array(); + if(isset($val['0']['VALUE'])){ + foreach($val['0']['VALUE'] as $value){ + $items[$name]['VALUE'][] = $value['VALUE']; + } + } + $items[$name]['VALUE_CNT'] = count($items[$name]['VALUE']); + } + } + } + return($items); + } + + + /*! \brief Set product properties, globally or per host. + @param + @return + */ + public function set_product_properties($productId,$cfg,$hostId = "") + { + $data = array("productId" => $productId); + + /* Append host attribute to query data + */ + if(!empty($hostId)){ + $data['hostId'] = trim($hostId); + } + + /* Check parameter */ + if(empty($productId)){ + trigger_error("No valid product id given, check parameter 1."); + return(array()); + } + + if(!count($cfg)) return; + + /* Add properties */ + $data['item'] = array(); + foreach($cfg as $name => $value){ + $data['item'][] = "".$name."".$value['DEFAULT'].""; + } + + /* Query SI server */ + $res = $this->send_data("gosa_opsi_set_product_properties",$this->target,$data,TRUE); + } + + + /*! \brief Adds a given product to a client. + @param + @return + */ + public function add_product_to_client($productId,$hostId) + { + $data = array("productId" => $productId,"hostId" => $hostId); + + /* Check parameter */ + if(empty($productId)){ + trigger_error("No valid product id given, check parameter 1."); + return; + } + if(empty($hostId)){ + trigger_error("No valid host id given, check parameter 2."); + return; + } + + /* Query SI server */ + $res = $this->send_data("gosa_opsi_add_product_to_client",$this->target,$data,TRUE); + } + + + /*! \brief Removes a given product from a client. + @param + @return + */ + public function del_product_from_client($productId,$hostId) + { + $data = array("productId" => $productId,"hostId" => $hostId); + + /* Check parameter */ + if(empty($productId)){ + trigger_error("No valid product id given, check parameter 1."); + return; + } + if(empty($hostId)){ + trigger_error("No valid host id given, check parameter 2."); + return; + } + + /* Query SI server */ + $res = $this->send_data("gosa_opsi_del_product_from_client",$this->target,$data,TRUE); + } + + + /*! \brief Returns the clients hardware setup. + @param + @return + */ + public function get_client_hardware($hostId) + { + $data = array("hostId" => $hostId); + + /* Check parameter */ + if(empty($hostId)){ + trigger_error("No valid host id given, check parameter 1."); + return; + } + + /* Query SI server */ + $res = $this->send_data("gosa_opsi_get_client_hardware",$this->target,$data,TRUE); + if(isset($res['XML'][0]['ITEM'])){ + return($res['XML'][0]['ITEM']); + } + return(array()); + } + + + /*! \brief Returns the clients software setup. + @param + @return + */ + public function get_client_software($hostId) + { + $data = array("hostId" => $hostId); + + /* Check parameter */ + if(empty($hostId)){ + trigger_error("No valid host id given, check parameter 1."); + return; + } + + /* Query SI server */ + $res = $this->send_data("gosa_opsi_get_client_software",$this->target,$data,TRUE); + if(isset($res['XML'][0]['ITEM'])){ + return($res['XML'][0]['ITEM']); + } + return(array()); + } + + + + /*! \brief Deletes the given opsi client. + @param + @return + */ + public function del_client($hostId) + { + $data = array("hostId" => $hostId); + + /* Check parameter */ + if(empty($hostId)){ + trigger_error("No valid host id given, check parameter 1."); + return; + } + + /* Query SI server */ + $res = $this->send_data("gosa_opsi_del_client",$this->target,$data,TRUE); + if(isset($res['XML'][0]['ITEM'])){ + return($res['XML'][0]['ITEM']); + } + return(array()); + } + + + /*! \brief Triggers install/reinstall of an opsi client. + @param + @return + */ + public function job_opsi_install_client($hostId,$mac) + { + $data = array("hostId" => $hostId,"macaddress"=>$mac); + + /* Check parameter */ + if(empty($hostId)){ + trigger_error("No valid host id given, check parameter 1."); + return; + } + + /* Query SI server */ + $this->send_data("job_opsi_install_client",$this->target,$data,TRUE); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/opsi/admin/opsi/class_opsiProperties.inc b/trunk/gosa-plugins/opsi/admin/opsi/class_opsiProperties.inc new file mode 100644 index 000000000..f44cce8bf --- /dev/null +++ b/trunk/gosa-plugins/opsi/admin/opsi/class_opsiProperties.inc @@ -0,0 +1,120 @@ + 'value')) + @param String The host id if necessary + */ + public function __construct($config,$product,$cfg = array() ,$hostId = "") + { + $this->config = $config; + $this->product = $product; + $this->cfg = $cfg; + $this->hostId = $hostId; + } + + + /*! \brief Display html dialog which allows to + configure the properties + @return String HTML content + */ + public function execute() + { + $ui =get_userinfo(); + $acl = $ui->get_permissions($this->config->current['BASE'],"opsi/opsiProperties",""); + $smarty = get_smarty(); + $smarty->assign("ACL",$acl); + $smarty->assign("cfg",$this->cfg); + $smarty->assign("cfg_count",count($this->cfg)); + return($smarty->fetch(get_template_path("properties.tpl",TRUE,dirname(__FILE__)))); + } + + + /*! \brief Save the posted property updates + */ + public function save_object() + { + $ui =get_userinfo(); + $acl = $ui->get_permissions($this->config->current['BASE'],"opsi/opsiProperties",""); + if(preg_match("/w/",$acl)){ + foreach($this->cfg as $name => $value){ + if(isset($_POST['value_'.$name])){ + $this->cfg[$name]['DEFAULT'] = validate(get_post('value_'.$name)); + } + } + } + } + + + /*! \brief Sets the current config array. + */ + public function set_cfg($cfg) + { + $this->cfg = $cfg; + } + + + /*! \brief Returns the current product config + @return Array. + */ + public function get_cfg() + { + return($this->cfg); + } + + + /*! \brief Returns the ID of the product. + @param String Product ID + */ + public function get_product() + { + return($this->product); + } + + + /*! \brief Sets the current product ID, + The name is only used to remember the currently edited product. + */ + public function set_product($name) + { + $this->product = $name; + } + + + /*! \brief Retuns the hostId. + */ + public function get_hostId() + { + return($this->hostId); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Products"), + "plDescription" => _("Product properties"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 10, + "plSection" => array("administration"), + "plCategory" => array("opsi"), + "plProvidedAcls"=> array( + ) + )); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/opsi/admin/opsi/class_opsigeneric.inc b/trunk/gosa-plugins/opsi/admin/opsi/class_opsigeneric.inc new file mode 100644 index 000000000..911507fac --- /dev/null +++ b/trunk/gosa-plugins/opsi/admin/opsi/class_opsigeneric.inc @@ -0,0 +1,726 @@ +opsi = new opsi($config); + $this->config = $config; + + /* Check if we are are part of a windows workstation + */ + $this->parent = $parent; + if($parent instanceof wingeneric){ + $this->standalone = FALSE; + } + + /* Get hostId + */ + if($hostId != "new"){ + if(preg_match("/^opsi:/",$hostId)){ + $this->hostId = preg_replace("/^opsi:=([^,]*),.*$/","\\1",$hostId); + }elseif($this->parent instanceof wingeneric){ + $this->hostId = $this->parent->cn; + $this->hostId = preg_replace('/\$$/',"",$this->hostId); + } + } + + /* Try to plugin */ + $this->init(); + } + + + /*! \brief Try to load opsi client informations from the + gosa support daemon. + */ + private function init() + { + $err = FALSE; + $this->init_failed = FALSE; + $this->initially_was_account = FALSE; + + /* We are a standalone plugin. + */ + if($this->standalone ) { + $this->is_account = TRUE; + } + + /* Try to load client infos from the gosa support daemon + */ + if(!empty($this->hostId)){ + + $list = $this->opsi->list_clients($this->hostId); + $err |= $this->opsi->is_error(); + + /* Walk through all returned opsi clients and try to detect + one that matches our hostId. + #FIXME Implement an opsi method which returns infos for only one opsi client, not all. + */ + foreach($list as $entry){ + if(preg_match("/^".preg_quote($this->hostId, '/')."$/i",$entry['NAME'][0]['VALUE'])){ + $this->initially_was_account = TRUE; + $this->is_account = TRUE; + foreach(array( + "is_installed" => "LASTSEEN", + "description" => "DESCRIPTION", + "mac" => "MAC", + "note" => "NOTES") as $des => $src){ + $des2 = "initial_".$des; + $this->$des2 = $this->$des = $entry[$src][0]['VALUE']; + } + break; + } + } + } + + /* Read informations about available netboot products. + If not already done, before. + */ + if(!$err && !count($this->a_availableNetbootProducts)){ + $this->a_availableNetbootProducts = $this->opsi->get_netboot_products(); + ksort($this->a_availableNetbootProducts); + $err |= $this->opsi->is_error(); + } + + /* Read informations about available netboot products. + If not already done, before. + */ + if(!$err && !count($this->a_availableLocalProducts)) { + $this->a_availableLocalProducts = $this->opsi->get_local_products(); + ksort($this->a_availableLocalProducts); + $err |= $this->opsi->is_error(); + } + + /* Get products selected by this host. + */ + if(!$err && !empty($this->hostId)) { + $tmp = array_keys($this->opsi->get_netboot_products($this->hostId)); + $err |= $this->opsi->is_error(); + if(count($tmp) && !$err && !isset($this->a_availableNetbootProducts[$this->s_selectedNetbootProduct]['CFG'])){ + $this->s_selectedNetbootProduct = $tmp[0]; + + /* Read configuration for "Netboot Products" */ + if(isset($this->a_availableNetbootProducts[$this->s_selectedNetbootProduct])){ + $CFG = $this->opsi->get_product_properties($this->s_selectedNetbootProduct,$this->hostId); + $this->a_availableNetbootProducts[$this->s_selectedNetbootProduct]['CFG'] = $CFG; + } + } + $err |= $this->opsi->is_error(); + } + + /* Get all selected local products + */ + if(!$err && !empty($this->hostId) && !count($this->a_selectedLocalProducts)) { + $tmp = $this->opsi->get_local_products($this->hostId); + $err |= $this->opsi->is_error(); + $this->a_selectedLocalProducts = $tmp; + } + + /* Load product configuration for all already selected products. + */ + if(!$err && !empty($this->hostId)) { + foreach($this->a_selectedLocalProducts as $name => $data){ + if(!$err && !isset($this->a_selectedLocalProducts[$name]['CFG'])){ + $CFG = $this->opsi->get_product_properties($name,$this->hostId); + $err |= $this->opsi->is_error(); + $this->a_selectedLocalProducts[$name]['CFG'] = $CFG; + } + } + } + + /* Check if everything went fine else reset everything and display a retry button + */ + if($err){ + $this->init_failed = TRUE; + + }else{ + + /* Remember initial settings */ + $this->a_initial_selectedLocalProducts = $this->a_selectedLocalProducts; + $this->s_initial_selectedNetbootProduct = $this->s_selectedNetbootProduct; + $this->a_initial_availableNetbootProducts = $this->a_availableNetbootProducts; + + /* Ensure that a valid netboot is selected product is. + */ + if(empty($this->s_selectedNetbootProduct)){ + $this->s_selectedNetbootProduct = key($this->a_availableNetbootProducts); + } + } + } + + + /*! \brief Check given data. + @return Array Returns an array with all issues. + */ + public function check() + { + $messages = plugin::check(); + + if(empty($this->hostId)){ + $messages[] = msgPool::required(_("Name")); + }elseif(!preg_match("/\./",$this->hostId)){ + + /* The hostId must contain a domain part + */ + $messages[] = msgPool::invalid(_("Name"),$this->hostId,"", + _("The field 'Name' must contain a domain part!")); + }elseif(preg_match("/[^a-z0-9\.\-_]/",$this->hostId)){ + $messages[] = msgPool::invalid(_("Name"),$this->hostId,"/[a-z0-9\.\-_]/"); + } + + /* Ensure that the mac address is valid + */ + if(!tests::is_mac($this->mac) || empty($this->mac)){ + $messages[] = msgPool::invalid(_("MAC address"),$this->mac,"","00:0C:7F:31:33:F1"); + } + return($messages); + } + + + /*! \brief Create the html ui of this plugin + @return String HTML content. + */ + public function execute() + { + $display =""; + + /* The pluign initialization failed due to communication problems with the gosa daemon. + A retry button will be displayed here. + */ + if($this->init_failed){ + $smarty = get_smarty(); + $smarty->assign("standalone ", $this->standalone ); + $smarty->assign("init_failed",TRUE); + $smarty->assign("message",$this->opsi->get_error()); + return($smarty->fetch(get_template_path("generic.tpl",TRUE,dirname(__FILE__)))); + } + + + /* If we are not a stand alone opsi client, we must be a samba client + which has the opsi tab enabled. + Check if the opsi is added or removed and display state buttons. + */ + if(!$this->standalone ){ + + /* Do we need to flip is_account state? */ + if(isset($_POST['modify_state'])){ + if($this->is_account && $this->acl_is_removeable()){ + $this->is_account= FALSE; + }elseif(!$this->is_account && $this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + if($this->is_account){ + $display = $this->show_disable_header(msgPool::removeFeaturesButton(_("OPSI")), + msgPool::featuresEnabled(_("OPSI"))); + }else{ + $display = $this->show_enable_header(msgPool::addFeaturesButton(_("OPSI")), + msgPool::featuresDisabled(_("OPSI"))); + return($display); + } + } + + /* Check if we have a sub dialog opened + */ + if(is_object($this->dialog)){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + /* Create HTML output of this plugin + */ + $smarty = get_smarty(); + $smarty->assign("standalone", $this->standalone ); + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + /* Assign ACLs */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $smarty->assign("is_installed", $this->is_installed); + $smarty->assign("init_failed",FALSE); + $divSLP = new divSelectBox(); + $divALP = new divSelectBox(); + + /* Create list of available local products + */ + foreach($this->a_availableLocalProducts as $name => $data){ + if(isset($this->a_selectedLocalProducts[$name])) continue; + + $add_tab = array("string" => ""); + $name_tab = array("string" => $name); + $desc_tab = array("string" => "
".$data['DESC']."
", + "attach" => "title='".$data['DESC']."' style='border-right:0px;'"); + + if($this->acl_is_writeable("localProduct")){ + $divALP->AddEntry(array($add_tab,$name_tab,$desc_tab)); + }else{ + $divALP->AddEntry(array($name_tab,$desc_tab)); + } + } + + /* Create list of selected local products + */ + ksort($this->a_selectedLocalProducts); + if($this->acl_is_readable("localProduct")){ + foreach($this->a_selectedLocalProducts as $name => $data){ + + $name_tab = array("string" => $name); + $desc_tab = array( + "string" => "
".$data['DESC']."
", + "attach" => "title='".$data['DESC']."'"); + + /* Only display edit button, if there is something to edit + */ + $edit = " "; + if(count($data['CFG'])){ + $edit = ""; + } + $del = ""; + + $opt_tab = array("string" => $edit.$del, + "attach" => "style='border-right:0px; width: 40px; text-align:right;'"); + + if($this->acl_is_writeable("localProduct")){ + $divSLP->AddEntry(array($name_tab,$desc_tab,$opt_tab)); + }else{ + $divSLP->AddEntry(array($name_tab,$desc_tab)); + } + } + } + + /* Check if netboot product is configurable + */ + $cfg_able =FALSE; + if(isset($this->a_availableNetbootProducts[$this->s_selectedNetbootProduct]['CFG'])){ + $cfg_able = count($this->a_availableNetbootProducts[$this->s_selectedNetbootProduct]['CFG']); + $cfg_able &= $this->acl_is_readable("netbootProduct"); + } + + $smarty->assign("netboot_configurable",$cfg_able); + $smarty->assign("hostId", $this->hostId); + $smarty->assign("divSLP", $divSLP->DrawList()); + $smarty->assign("divALP", $divALP->DrawList()); + $smarty->assign("SNP", $this->s_selectedNetbootProduct); + $smarty->assign("ANP", $this->a_availableNetbootProducts); + return($display.$smarty->fetch(get_template_path("generic.tpl",TRUE,dirname(__FILE__)))); + } + + + /*! \brief Save modifications using the gosa support daemon. + */ + public function save() + { + + /* Check if we have to create a new opsi client + or just have to save client modifications. + */ + if(!$this->initially_was_account && $this->is_account){ + $res = $this->opsi->add_client($this->hostId,$this->mac,$this->note,$this->description); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + }else{ + + /* Update client modifcations. + -Only if necessary + */ + if($this->note != $this->initial_note || + $this->description != $this->initial_description || + $this->mac != $this->initial_mac){ + $this->opsi->modify_client($this->hostId,$this->mac,$this->note,$this->description); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + } + } + + + /*********** + Detect local netboot product changes + - Check which products were removed. + - Check which products were added. + ***********/ + + + /* Detect which products were removed an which added. + */ + $del = array_diff_assoc($this->a_initial_selectedLocalProducts,$this->a_selectedLocalProducts); + $add = array_diff_assoc($this->a_selectedLocalProducts,$this->a_initial_selectedLocalProducts); + + /* Remove products from client + */ + foreach($del as $name => $data){ + $this->opsi->del_product_from_client($name,$this->hostId); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + } + + /* Add products to client + And set the product properties. + */ + foreach($add as $name => $data){ + $this->opsi->add_product_to_client($name,$this->hostId); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + if(!empty($data['CFG'])){ + $this->opsi->set_product_properties($name,$data['CFG'],$this->hostId); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + } + } + + /* Save local product properties + */ + foreach($this->a_selectedLocalProducts as $name => $data){ + if(isset($del[$name]) || isset($add[$name])) continue; + + /* Update product properties if there are changes + */ + $diffs = $this->get_config_changes($data['CFG'],$this->a_initial_selectedLocalProducts[$name]['CFG']); + if(count($diffs)){ + $this->opsi->set_product_properties($name,$diffs,$this->hostId); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + } + } + + /********* + Detect Netboot product changes + - Check if another netboot product was selected. + - Check if the product properties were changes. + *********/ + + /* Update used netboot product. + */ + if($this->s_selectedNetbootProduct != $this->s_initial_selectedNetbootProduct){ + if(!empty($this->s_initial_selectedNetbootProduct)){ + $this->opsi->del_product_from_client($this->s_initial_selectedNetbootProduct,$this->hostId); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + } + $this->opsi->add_product_to_client($this->s_selectedNetbootProduct,$this->hostId); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + } + + /* Check if we have to update the netboot product properties + This is the case, if this product is newly selected. + Or if there was at least one configuration attribute modified. + */ + $cfg_1 = $cfg_2 = array(); + if(isset($this->a_availableNetbootProducts[$this->s_selectedNetbootProduct]['CFG'])){ + $cfg_1 = $this->a_availableNetbootProducts[$this->s_selectedNetbootProduct]['CFG']; + } + if(isset($this->a_initial_availableNetbootProducts[$this->s_selectedNetbootProduct]['CFG'])){ + $cfg_2 = $this->a_initial_availableNetbootProducts[$this->s_selectedNetbootProduct]['CFG']; + } + $diffs = $this->get_config_changes($cfg_1,$cfg_2); + $to_update = array(); + if( !$this->initially_was_account || + $this->s_selectedNetbootProduct != $this->s_initial_selectedNetbootProduct){ + $to_update = $this->a_availableNetbootProducts[$this->s_selectedNetbootProduct]['CFG']; + }elseif(count($diffs)){ + $to_update = $diffs; + } + + if(count($to_update)){ + $name = $this->s_selectedNetbootProduct; + $this->opsi->set_product_properties($name,$to_update,$this->hostId); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + } + } + + + public function get_config_changes($c1,$c2) + { + /* Get key which are not present in both entries + */ + $res = array(); + foreach($c2 as $name => $value){ + if(!isset($c1[$name]) || $c1[$name]['DEFAULT'] != $c2[$name]['DEFAULT']){ + $res[$name] = $c2[$name]; + } + } + foreach($c1 as $name => $value){ + if(!isset($c2[$name]) || $c2[$name]['DEFAULT'] != $c1[$name]['DEFAULT']){ + $res[$name] = $c1[$name]; + } + } + return($res); + } + + + /*! \brief Removes the opsi client + */ + public function remove_from_parent() + { + $this->opsi->del_client($this->hostId); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + return; + } + } + + + /*! \brief Save html posts + */ + public function save_object() + { + /* Init failed; reinit is triggered here. + */ + if(isset($_POST['reinit']) && $this->init_failed){ + $this->init(); + } + + /* Property are currently edited, close the dialog. + */ + if(isset($_POST['cancel_properties']) && is_object($this->dialog)){ + $this->dialog = NULL; + } + + /* Save product property changes + */ + if(isset($_POST['save_properties']) && ($this->dialog instanceof opsiProperties)){ + $this->dialog->save_object(); + $pro = $this->dialog->get_product(); + $CFG = $this->dialog->get_cfg(); + if(isset($this->a_selectedLocalProducts[$pro])){ + if($this->acl_is_writeable("localProduct")){ + $this->a_selectedLocalProducts[$pro]['CFG'] = $CFG; + } + $this->dialog = NULL; + }elseif($this->s_selectedNetbootProduct == $pro){ + if($this->acl_is_writeable("netbootProduct")){ + $this->a_availableNetbootProducts[$pro]['CFG'] = $CFG; + } + $this->dialog = NULL; + }else{ + trigger_error("Fatal, unknown product was configured."); + } + } + + /* Save html post + */ + if(isset($_POST['opsiGeneric_posted'])){ + + plugin::save_object(); + + /* Get hostId + */ + if(isset($_POST['hostId']) && $this->standalone && $this->acl_is_writeable("hostId")){ + $this->hostId = get_post('hostId'); + } + + /* Send actions like 'install' or 'wake' to the si server + */ + if($this->acl_is_writeable("triggerAction") && + isset($_POST['opsi_action']) && + isset($_POST['opsi_trigger_action']) && + $this->standalone ){ + $action = $_POST['opsi_action']; + if($action == "install"){ + $this->install_client(); + } + if($action == "wake"){ + $this->wake_client(); + } + } + + /* Get selected netboot product. + */ + if(isset($_POST['opsi_netboot_product']) && $this->acl_is_writeable("netbootProduct")){ + $SNP = trim($_POST['opsi_netboot_product']); + if(isset($this->a_availableNetbootProducts[$SNP])){ + if(!isset($this->a_availableNetbootProducts[$SNP]['CFG'])){ + $CFG = $this->opsi->get_product_properties($SNP); + $this->a_availableNetbootProducts[$SNP]['CFG'] = $CFG; + if($this->opsi->is_error()){ + $this->init_failed = TRUE; + return; + } + } + $this->s_selectedNetbootProduct = $SNP; + } + } + + /* Add/remove/edit local products + */ + foreach($_POST as $name => $value){ + + /* Check if netboot product configuration is requested + */ + if(preg_match("/^configure_netboot/",$name) && $this->acl_is_readable("netbootProduct")){ + $pro = $this->s_selectedNetbootProduct; + $cfg = $this->a_availableNetbootProducts[$pro]['CFG']; + $this->dialog = new opsiProperties($this->config,$pro,$cfg,$this->hostId); + break; + } + + /* Add product + */ + if(preg_match("/^add_lp_/",$name) && $this->acl_is_writeable("localProduct")){ + $product = preg_replace("/^add_lp_(.*)_.$/","\\1",$name); + if(isset($this->a_availableLocalProducts[$product]) && !isset($this->a_selectedLocalProducts[$product])){ + $this->a_selectedLocalProducts[$product] = $this->a_availableLocalProducts[$product]; + $CFG = $this->opsi->get_product_properties($product); + if($this->opsi->is_error()){ + $this->init_failed = TRUE; + return; + } + $this->a_selectedLocalProducts[$product]['CFG'] = $CFG; + } + break; + } + + /* Delete product + */ + if(preg_match("/^del_lp_/",$name) && $this->acl_is_writeable("localProduct")){ + $product = preg_replace("/^del_lp_(.*)_.$/","\\1",$name); + if(isset($this->a_selectedLocalProducts[$product])){ + unset($this->a_selectedLocalProducts[$product]); + } + break; + } + + /* Edit a product + */ + if(preg_match("/^edit_lp_/",$name) && $this->acl_is_readable("localProduct")){ + $product = preg_replace("/^edit_lp_(.*)_.$/","\\1",$name); + $this->dialog = new opsiProperties($this->config, + $product,$this->a_selectedLocalProducts[$product]['CFG'],$this->hostId); + break; + } + } + } + } + + + /* Triggers client installation + */ + function install_client() + { + $this->opsi->send_action("install",$this->hostId,$this->mac); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + } + } + + + /* Wake up client + */ + function wake_client() + { + /* Check if we are able to communicate with the GOsa supprot daemon + */ + if(class_available("gosaSupportDaemon")){ + $o = new gosaSupportDaemon(); + if($o->connect() && class_available("DaemonEvent_wakeup")){ + $evt = new DaemonEvent_wakeup($this->config); + $evt->add_targets(array($this->mac)); + $o->append($evt); + } + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("OPSI generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 1, + "plSection" => array("administration"), + "plCategory" => array("opsi" => array("description" => _("Opsi"), + "objectClass" => "dummy_class_opsi")), + + "plProvidedAcls"=> array( + "hostId" => _("Name"), + "mac" => _("MAC address"), + "description" => _("Description"), + "note" => _("Note"), + "netbootProduct" => _("Netboot product"), + "localProduct" => _("Local product"), + "triggerAction" => _("Action")) + )); + } +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/opsi/admin/opsi/class_opsiware.inc b/trunk/gosa-plugins/opsi/admin/opsi/class_opsiware.inc new file mode 100644 index 000000000..75909c441 --- /dev/null +++ b/trunk/gosa-plugins/opsi/admin/opsi/class_opsiware.inc @@ -0,0 +1,61 @@ +config = $config; + $this->opsi = new opsi($config); + $this->hostId = preg_replace("/^opsi:=([^,]*),.*$/","\\1",$hostId); + $this->init(); + } + + private function init() + { + if($this->type == 0){ + $this->info = $this->opsi->get_client_hardware($this->hostId); + $err = $this->opsi->is_error(); + }else{ + $this->info = $this->opsi->get_client_software($this->hostId); + $err = $this->opsi->is_error(); + } + $this->init_failed = $err; + } + + + public function execute() + { + if(isset($_POST['reinit']) && $this->init_failed){ + $this->init(); + } + $smarty = get_smarty(); + $smarty->assign("init_failed",$this->init_failed); + if($this->init_failed){ + $smarty->assign("type", $this->type); + $smarty->assign("message",$this->opsi->get_error()); + return($smarty->fetch(get_template_path("opsiware.tpl",TRUE,dirname(__FILE__)))); + } + $smarty->assign("type", $this->type); + $smarty->assign("info", $this->info); + return($smarty->fetch(get_template_path("opsiware.tpl",TRUE,dirname(__FILE__)))); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/opsi/admin/opsi/generic.tpl b/trunk/gosa-plugins/opsi/admin/opsi/generic.tpl new file mode 100644 index 000000000..139b4e2e0 --- /dev/null +++ b/trunk/gosa-plugins/opsi/admin/opsi/generic.tpl @@ -0,0 +1,134 @@ + +

  {t}OPSI host{/t}

+ +{if $init_failed} + +{msgPool type=siError p=$message} + + + +{else} + + + + + + + + + + + + + + + + +
+ + {if $standalone} + + + + + + + + + {else} + + + + + + + + + {/if} + + + + +
{t}Name{/t} +{render acl=$hostIdACL} + +{/render} +
{t}MAC address{/t}{$must} +{render acl=$macACL} + +{/render} +
{t}Name{/t} +{render acl=$hostIdACL} + +{/render} +
{t}MAC address{/t}{$must} +{render acl=$macACL} + +{/render} +
{t}Netboot product{/t} +{render acl=$netbootProductACL } + +{/render} +   + {if $netboot_configurable} + + {else} + + {/if} +
+
+ + + + + + + + + +
{t}Description{/t} +{render acl=$descriptionACL} + +{/render} +
{t}Notes{/t} +{render acl=$descriptionACL} + +{/render} +
+
+

 

+

  {t}Installed products{/t}

+{render acl=$localProductACL} + {$divSLP} +{/render} +

{t}Available products{/t}

+{render acl=$localProductACL} + {$divALP} +{/render} +
+

 


+ {if $standalone} +

 {t}Action{/t}

+ +{render acl=$triggerActionACL} + +{/render} + {/if} +
+ +{/if} diff --git a/trunk/gosa-plugins/opsi/admin/opsi/opsi_tabs.inc b/trunk/gosa-plugins/opsi/admin/opsi/opsi_tabs.inc new file mode 100644 index 000000000..fc013d7a7 --- /dev/null +++ b/trunk/gosa-plugins/opsi/admin/opsi/opsi_tabs.inc @@ -0,0 +1,9 @@ + diff --git a/trunk/gosa-plugins/opsi/admin/opsi/opsiware.tpl b/trunk/gosa-plugins/opsi/admin/opsi/opsiware.tpl new file mode 100644 index 000000000..9e57fd1eb --- /dev/null +++ b/trunk/gosa-plugins/opsi/admin/opsi/opsiware.tpl @@ -0,0 +1,23 @@ +{if $init_failed} +

{t}Information{/t}

+ {msgPool type=siError p=$message} + +{else} + {if $type == 0} +

 {t}Hardware information{/t}

+ {else} +

 {t}Software information{/t}

+ {/if} + + {foreach from=$info item=item key=key} +
+

{t}Device{/t} { $key+1 }

+ {foreach from=$item key=name item=value} +
{$name}: 
+
{$value.0.VALUE} 
+
+ {/foreach} +
+
+ {/foreach} +{/if} diff --git a/trunk/gosa-plugins/opsi/admin/opsi/properties.tpl b/trunk/gosa-plugins/opsi/admin/opsi/properties.tpl new file mode 100644 index 000000000..9f4c62325 --- /dev/null +++ b/trunk/gosa-plugins/opsi/admin/opsi/properties.tpl @@ -0,0 +1,41 @@ +

{t}OPSI product properties{/t}

+ + +{if $cfg_count == 0} +
+{t}This OPSI product has no options.{/t} +
+
+ +{else} + + +{foreach from=$cfg item=item key=key} + + + + +{/foreach} +
{$key} +{render acl=$ACL} + {if $item.VALUE_CNT} + + {else} + + {/if} +{/render} +
+ +{/if} +

 

+
+{if $cfg_count != 0} + +   +{/if} + +
diff --git a/trunk/gosa-plugins/opsi/admin/opsi/tabs_prodconfig.inc b/trunk/gosa-plugins/opsi/admin/opsi/tabs_prodconfig.inc new file mode 100644 index 000000000..9004f30a8 --- /dev/null +++ b/trunk/gosa-plugins/opsi/admin/opsi/tabs_prodconfig.inc @@ -0,0 +1,6 @@ + diff --git a/trunk/gosa-plugins/opsi/help/guide.xml b/trunk/gosa-plugins/opsi/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/opsi/html/images/client_generic.png b/trunk/gosa-plugins/opsi/html/images/client_generic.png new file mode 100644 index 0000000000000000000000000000000000000000..83e5b318b8eb3b0e32a36e7e3c3b83c03b327179 GIT binary patch literal 753 zcmVaBcr+v(tkjD zqpPTkuDXgK5UPtXg1j*bf}$cSZxnaYi(r$)mYU|=T)yp9ch1hQD@CXFy?fyKJbd{+ zUts5uimtwkH~YpWp9iDK{^4ly>cinNTYX2@F5aEvK6(Ati;*mwUN%@buCZ`jV^b@P z^$spGOT*djLOX<^pr?b@hs*OIwGq&{w(F77O7a`tDAog^gjdi->>JwOx`L83_HfptQlaU68Y zVGRTcok5WW@RD4#mEpIF#N3Y%rzH)iy@WG~1{9HkF^2S-0mVeIxUi_FqTz`>H^AS} z;Mcc(ubmbFUZ;YpQV~^U5Y!eAd} z8SCo#l7UjzQfQ|ITB^Hn=l=OKZMCAVVJ4nKY*7QJYp@jCh3OSuijRGKxo1F8pz~7K zv;x6rZ81DHBO99LpAY`WC|)$2t-3&;OJp% zRbcZMHUnx}PMt1us4y!8#YH?E76GL;9u6xHyOoE{%tMs{m)lOfjcx54+~yy+t844M z`vhn?K$Qqo69^x8nv2GgE1c(|5eiTdr0*MK~=4E)!r= z2vn88BvRxu1i^t|{N3Z*_cE)o5CD*Z8uvSVM>=X7ngd>sr`%>XtDqcG*|ltB=J#AU j^!eN5=+JurlN-Q4SIze!Frs|m00000NkvXXu0mjfdKgzl literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/opsi/html/images/hardware_info.png b/trunk/gosa-plugins/opsi/html/images/hardware_info.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c34a1a764d3f131a5e95731aa125bca4ec313b GIT binary patch literal 879 zcmV-#1CacQP){j9{ToF8XZZ8y55upYzZw7hW$+Rb5pI0_`t75K_wOY# zFtC06`STychYxQV{{3TTICpLl13&<=pqdBL{1;@HlZdEbt&*CogQ%1M!?R~Ujeq_6 zC-V5gqi6;O#>dDy00M}Ki3!5^^XDHB|F;qn;n{9uuery?Q^!G3Re*t+nSnuAl%2uO z-PTr0USa$1-@kQ17Qp~O0I>iy0iFKWNKlZwT0=|RUrs@gnURT+;oElxhMzydj$-)p zn}LCwo0-Ac+g6*InPtb>6Q`mW82=swx`qKDfLM5W*=K2L$|Wl+3otP=Gcx=HD*pZp zBn1IKe?jd75^U^@3=SSvQcTPoTTUH4ll<@Bzf}MM#3C;*5Ui#q$OKgb2FySnP#?oD zpkW}BSb+ThK(G7-@)?1&y{8cmFAv|c^XC`*1_&Ug*I(W+T>W(!tdS8MC=mSbACM2y z3=C#w7KkA%K+Qay3=G=J3=FFepd?1CcEqaIR%Az-~Tc&d;}Wu;R^$U0MM3q zAA$b<12K#h=yW!q0oSg4XIQmj*ON7?r_Oo(`rKN80Al&|>)WqOR}bf}U8D2L&`hUU zLr;P6&3guh&tD;d$jbu?eFla{4}LLh-mv$@%H@;hJ$SHx5m5FP$QJ+s!~*dvGsE}q z-&%KU+Wq{^YpdznrrKKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}0006QNklMaEI0(t>$UA53fNRdH-U}&qvAgvV5iqIML(eat*-qXSu zn$m@x)!m#AzsosCRF#pD5#>LsSS$*v%JA^8?zevT5d0}7NrIpl8z3S8h)C`2oWojM zm!b|(??43aJw7gDRIvwJYS7=!y8s?+Ks@%C_}f>u#^1t5o{lF^$wb*&lDz@-xVTJa zeVplMuV|lM<Eq$RgS7Iq&;Y9N!I0u^!8o~a&f~taFCh*yMAQKvH z^fht!axcdA;nEcIp+vF}v9b}8T|UIQ?tVgB0fjK||0bwxJAR}NV?3R00p{#OlJpL_ zWE0!ag}8M@%Rm#V1^`oAOEmUKWoo)0!s80|DhC-7i zNdsD&Gc-goRxEfB^+;flCWe>0bi?c@z%A!$jQe00000NkvXX Hu0mjf9o;P* literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/opsi/html/images/netboot_package.png b/trunk/gosa-plugins/opsi/html/images/netboot_package.png new file mode 100644 index 0000000000000000000000000000000000000000..5819d52d2bbc0032b50b2914a0c1df5d13ba8a30 GIT binary patch literal 3249 zcmV;i3{LZjP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}0005ZNkl_u5D^-UhWu~*dxLph6cJXd6`H1@>pGgItrtL`K-Xlw2hgtrN-0FH zE*OTfMy~W8#_9)3sf{wsn}BJWEEWsCoSkuT@f$O2A%A?HJ_EK@bFt zMkC(5eTRtf;`uWU_8!pu`kjwwE3mQzL9mg*CU6;Wa`KwdaKOVtfnKl2bUI~!e~%B1 z_k24)C%6oDlpu=c=O&2Yc^EQc6IsJ6XlcS^EJ^0n{Gaip=wOXW7DI$>w z%jJ@AI849a-`zxjOeRA#8f7+{5sSr0CX-l}h39!377w?ENxyketJN3`2H3VuI-RCa zDBw5_@pzn<$H!a1RtDK@mV7=>yWOVS?J^#Z84ib3Diw5HzZ;m(=TxgzeBWm_n;{|; zi$!v|9Fxi9ZlGK)Q!15ME|(~!&@_!uD1>EMIF7R$ux*<}B7tRDhzN#ZtVdecbwq?{ jG$RP%|I648MpQ0JDT=sMLJ1L4 zBB&G&C|6XDy+Ci}3fw3Ps)Upihc*=_4h4ydLod0|5P|>+p;U@!Qd~Q+*Sp?b@9ymG z?9Ai$K7XAzvv1cbkx*30Fa7f7n|W{E@Av(CvoBRzYx+Dl4{}Q2l)x#0Qv#<1p1S2A z1;~`>14s|jhiJ++A2KO(OzYcm&#tMr-+AYw`T68bS~hNf!i3B zcl`d1SCg?h18#9~iLIVT7*!7rl9#{>$t;L{opu*nn2qTC_kKj=F?c59@dX1;=}KNF zL_G8^*s&!3cI!rlYz}cHkF^DxY6A;W7GeNAIcqHi7vt|(AA{D4_^GE!aZeU_`Z}f* z>2Y336H!?L<}W2iRV>!U{mDGl!ic^g_p}|5B$Z7tg_zWMBw!-}8bizi=sgCig^Yp- zS)+4;XFUWHIUdj|o77A|E9J&3`WSBxhwiB{F>DM!h=f3Ft&84*w4?;I)rrR|=+
  • hk)Ex606pag!7Q%otVh@~X^#rsHB`>yQM0XQE7J^VBQf?Bfq4*cc0E9yLlMGZ& zjaKXdj{y!@If-q39On)xtH()o(w4k}$UGfqRu&H^;yf7P0p2)1ynmm*xVf3E=7|TK z92n?h>qc4@wnA37fJlLmX5A9Zl82t)>toGIy_F>pGZ2n3H$g>TTVLl5EFQ!%#x1u| z%t?$3iF+Fw*6L36alOFR%96&K#J~r!GCF$gdVnWuX6X>XX90f;g<;5Hg#RGg^}ulw z3mDTY0i1vqt0z{4?ttfOW7G(02%T}KLyWv30$5ptRh$$k?QZLG9bs&@8&IR!@LTa>QvmlF))p9<1A8`)(v>dVxJ*nr3N7A5;p6m%sR@=RU6~_Y+ zgaHcBag8x+1`ip2=2LWBM#XB!d7%bIm+EAJW~x=py4@34Pdp_AMAwc766*pKgV$rx zYY2u}4-M^*5mzC$9u~D^(pGezEA$#Vx#NYTf#pd^VOEv^zz85GY_d9wW)Gm}@!4wS zA18RkqtgJyib*0nR%MUHX=GWQCW<4;HfExWRY`vna6|L26 zqH^4)p1Zn&u0h0i_ksQWJy?F8f3iV!%c%5P5?zaAnk8_O_oUYAldNp>K=Q-tBR(Y{ zw7jyCR3Qu*kAcHyGy#PWI=Q)C(P~s8+fZ`z2ttkrGF8YakBvrycjI2Khg#pEcI$|9 zrPJwT#?5*SivRg*@?~6(fIWl*fdALA3V(;)xpRk4NG@Ky$U44~(;kSAg^37L2ygtDWC)%+ zcaFoRI8|gliX$o%3axs*9t+?Eygl5qAk#hOm(Z&e0S$?ucgJ}E&-|^etr&+{8s|Yw zpxtgOLx91wT1Px-5Qf~Bar)&U?z`A0FoDbLFW-EVDwTcuWOtXt?#HjcKKnFBi??pw zig604PUS*F4h!}u z6!$$1_}jN{p9L7Tyu8etW~EZ0gM$N8B&MJ0aM!r7Ybs0|;ZZ1ZnB@E%Y`J z zcD6rJ-CkEMEiKc=xefjDcV70VXG$Nv_QTh{iQ!d^rWEh%dC26oYuCQ~(o5g?*2?P2 z*B6&oHWwEcr;wuMR;xLK{F>}_yZ-#bygyf-Q!}$O1fU$MnzSLtKa@J{w)wFX8_>0C z)dY51M}tN;=ruY)H$cAJuhpt||N8g8{Q36#?^lSZpC(|uu_UqxnS*>9mn}#QVkYfF z_AoEvIYK~Wg2i65pjs7IR#wW0`SRM@+Wd1{TVGmV+t^sbP2^vQPnpO6dGzt4hY$a~ zv$wZb-`(9k+}YWw!}BKD!j$xfu3KpWp8R7+p2dQo)P$Z$pn2l6Z-#(X&@zW`*``Iv nf`9hy^nW!tC2&gMbKd?7ecwYeIQ*-#00000NkvXXu0mjf_F+u3 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/opsi/html/images/product.png b/trunk/gosa-plugins/opsi/html/images/product.png new file mode 100644 index 0000000000000000000000000000000000000000..6a9adc13ce726f6e31379c706b7e8bd15a0615c7 GIT binary patch literal 595 zcmV-Z0<8UsP)z2EII1t zv6KTi=X_hKK;(-m!mIc1))F1wys>JuP=N?_93LETG$)Z2s+CVG8ad~v*X!JW@Tjn9 zS=DNFJCTS`tJM$@L{fyuD!ed|4t00hQ!Hd{3XvP`6Unh?iIKZwe*?6m2Y+rRsR(~KxVwhoOPt~oD={ULo4FI{Hm{&4 zDw?9BEBfM4dStQ&u;0GSIPYKddEciAM|~QkWZTkMEQw6Pi#=S}(eQ;zi(!&7QtyCT z03mJ#&voXiUq7LS0w{VFD-vSC*yGFIG#~P?TY>Az0R~SE)W4wZZ{h`YN?rZ9ai}^4 z@-c;Fy~36a6$g9)C-fAVXm>sE+!|oZcKIm=i6gn1-oi4!;WSKPm%>zBK{66$^&meP zRQ2&X;MtE>N}j^{L4c;PipnZo@d88fI88epxV}TWv7MOSxY&PoXtoA;^17TIe^t(` zY)G_b4Zj@1c6Vuu=DC#KA-fmBcOhYP5Y|p}pEtEH2tn>*t2(?^^a<*cNI)Uoyv#{+ z7SsHU8BxFnPh=4U>vv%73lgT}T92R_EVHrg(AK;}i%|qy!oGw9aE&u~T4y~VBx7oT zry*UEOvw1{ejfLxs__N^*cy~o@J%##dCb*rOdj^?rVKDYw;2US6UNkNi1~~rR#1G; zHr!tms&pol-ud6h0*5KCTRB-S^vTLPiuAUDd&%=Rt>ZfXoIgEf-`)w}VNU=6002ov JPDHLkV1h&NDdPYD literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/opsi/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opsi/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..13ef45968 --- /dev/null +++ b/trunk/gosa-plugins/opsi/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,166 @@ +# translation of messages.po to deutsch +# translation of messages.po to +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2008-12-19 08:44+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/opsi/properties.tpl:1 +msgid "OPSI product properties" +msgstr "OPSI Produkteigenschaften" + +#: admin/opsi/properties.tpl:6 +msgid "This OPSI product has no options." +msgstr "Dieses OPSI Produkt hat keine Optionen." + +#: admin/opsi/generic.tpl:2 +msgid "OPSI host" +msgstr "OPSI-Client" + +#: admin/opsi/generic.tpl:8 admin/opsi/opsiware.tpl:4 +msgid "Retry" +msgstr "Wiederholen" + +#: admin/opsi/generic.tpl:18 admin/opsi/generic.tpl:35 +#: admin/opsi/class_opsigeneric.inc:211 admin/opsi/class_opsigeneric.inc:216 +#: admin/opsi/class_opsigeneric.inc:219 admin/opsi/class_opsigeneric.inc:713 +msgid "Name" +msgstr "Name" + +#: admin/opsi/generic.tpl:26 admin/opsi/generic.tpl:43 +#: admin/opsi/class_opsigeneric.inc:225 admin/opsi/class_opsigeneric.inc:714 +msgid "MAC address" +msgstr "MAC-Adresse" + +#: admin/opsi/generic.tpl:52 admin/opsi/class_opsigeneric.inc:717 +msgid "Netboot product" +msgstr "Netboot-Produkt" + +#: admin/opsi/generic.tpl:64 admin/opsi/generic.tpl:67 +msgid "Configure product" +msgstr "Produkt bearbeiten" + +#: admin/opsi/generic.tpl:76 admin/opsi/class_opsigeneric.inc:715 +msgid "Description" +msgstr "Beschreibung" + +#: admin/opsi/generic.tpl:84 +msgid "Notes" +msgstr "Notizen" + +#: admin/opsi/generic.tpl:101 +msgid "Installed products" +msgstr "Installierte Produkte" + +#: admin/opsi/generic.tpl:106 +msgid "Available products" +msgstr "Verfügbare Produkte" + +#: admin/opsi/generic.tpl:116 admin/opsi/class_opsigeneric.inc:719 +msgid "Action" +msgstr "Aktion" + +#: admin/opsi/generic.tpl:120 +msgid "Reinstall" +msgstr "Neu-Installation" + +#: admin/opsi/generic.tpl:122 +msgid "Install" +msgstr "Installieren" + +#: admin/opsi/generic.tpl:124 +msgid "Wake" +msgstr "Aufwecken" + +#: admin/opsi/generic.tpl:127 +msgid "Execute" +msgstr "Ausführen" + +#: admin/opsi/class_opsi.inc:75 admin/opsi/class_opsigeneric.inc:709 +msgid "Opsi" +msgstr "OPSI" + +#: admin/opsi/class_opsi.inc:75 +#, php-format +msgid "More than one Opsi server were found, using the first result '%s'." +msgstr "Es ist mehr als ein OPSI server verfügbar, verwende '%s'." + +#: admin/opsi/class_opsi.inc:155 +msgid "Service infrastructure" +msgstr "Dienst-Infrastruktur" + +#: admin/opsi/class_opsigeneric.inc:217 +msgid "The field 'Name' must contain a domain part!" +msgstr "Das Feld 'Name' muß einen Domänen-Anteil enthalten!" + +#: admin/opsi/class_opsigeneric.inc:265 admin/opsi/class_opsigeneric.inc:266 +#: admin/opsi/class_opsigeneric.inc:268 admin/opsi/class_opsigeneric.inc:269 +msgid "OPSI" +msgstr "OPSI" + +#: admin/opsi/class_opsigeneric.inc:376 admin/opsi/class_opsigeneric.inc:389 +#: admin/opsi/class_opsigeneric.inc:413 admin/opsi/class_opsigeneric.inc:424 +#: admin/opsi/class_opsigeneric.inc:430 admin/opsi/class_opsigeneric.inc:447 +#: admin/opsi/class_opsigeneric.inc:465 admin/opsi/class_opsigeneric.inc:471 +#: admin/opsi/class_opsigeneric.inc:500 admin/opsi/class_opsigeneric.inc:532 +#: admin/opsi/class_opsigeneric.inc:677 +msgid "Error" +msgstr "Fehler" + +#: admin/opsi/class_opsigeneric.inc:703 +msgid "Generic" +msgstr "Allgemein" + +#: admin/opsi/class_opsigeneric.inc:704 +msgid "OPSI generic" +msgstr "Allgemein" + +#: admin/opsi/class_opsigeneric.inc:716 +msgid "Note" +msgstr "Notiz" + +#: admin/opsi/class_opsigeneric.inc:718 +msgid "Local product" +msgstr "Lokales Produkt" + +#: admin/opsi/opsiware.tpl:2 +msgid "Information" +msgstr "Information" + +#: admin/opsi/opsiware.tpl:7 +msgid "Hardware information" +msgstr "Hardware-Informationen" + +#: admin/opsi/opsiware.tpl:9 +msgid "Software information" +msgstr "Software-Informationen" + +#: admin/opsi/opsiware.tpl:14 +msgid "Device" +msgstr "Gerät" + +#: admin/opsi/class_opsiProperties.inc:107 +msgid "Products" +msgstr "Produkte" + +#: admin/opsi/class_opsiProperties.inc:108 +msgid "Product properties" +msgstr "Produkteigenschaften" + diff --git a/trunk/gosa-plugins/opsi/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/opsi/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..918e2b63d --- /dev/null +++ b/trunk/gosa-plugins/opsi/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,168 @@ +# translation of messages.po to french +# translation of messages.po to +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +# Benoit Mortier , 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:35+0100\n" +"PO-Revision-Date: 2008-12-21 12:35+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/opsi/properties.tpl:1 +msgid "OPSI product properties" +msgstr "Propriétés des produits OPSI" + +#: admin/opsi/properties.tpl:6 +msgid "This OPSI product has no options." +msgstr "Ce produit OPSI n'a pas d'options." + +#: admin/opsi/generic.tpl:2 +msgid "OPSI host" +msgstr "Client OPSI" + +#: admin/opsi/generic.tpl:8 admin/opsi/opsiware.tpl:4 +msgid "Retry" +msgstr "Réessayer" + +#: admin/opsi/generic.tpl:18 admin/opsi/generic.tpl:35 +#: admin/opsi/class_opsigeneric.inc:211 admin/opsi/class_opsigeneric.inc:216 +#: admin/opsi/class_opsigeneric.inc:219 admin/opsi/class_opsigeneric.inc:713 +msgid "Name" +msgstr "Nom" + +#: admin/opsi/generic.tpl:26 admin/opsi/generic.tpl:43 +#: admin/opsi/class_opsigeneric.inc:225 admin/opsi/class_opsigeneric.inc:714 +msgid "MAC address" +msgstr "Adresse MAC" + +#: admin/opsi/generic.tpl:52 admin/opsi/class_opsigeneric.inc:717 +msgid "Netboot product" +msgstr "Produit Netboot" + +#: admin/opsi/generic.tpl:64 admin/opsi/generic.tpl:67 +msgid "Configure product" +msgstr "Configurer le produit" + +#: admin/opsi/generic.tpl:76 admin/opsi/class_opsigeneric.inc:715 +msgid "Description" +msgstr "" + +#: admin/opsi/generic.tpl:84 +msgid "Notes" +msgstr "" + +#: admin/opsi/generic.tpl:101 +msgid "Installed products" +msgstr "Produits installés" + +#: admin/opsi/generic.tpl:106 +msgid "Available products" +msgstr "Produits disponibles" + +#: admin/opsi/generic.tpl:116 admin/opsi/class_opsigeneric.inc:719 +msgid "Action" +msgstr "" + +#: admin/opsi/generic.tpl:120 +msgid "Reinstall" +msgstr "Réinstaller" + +#: admin/opsi/generic.tpl:122 +msgid "Install" +msgstr "Installer" + +#: admin/opsi/generic.tpl:124 +msgid "Wake" +msgstr "Réveiller" + +#: admin/opsi/generic.tpl:127 +msgid "Execute" +msgstr "Exécuter" + +#: admin/opsi/class_opsi.inc:75 admin/opsi/class_opsigeneric.inc:709 +msgid "Opsi" +msgstr "" + +#: admin/opsi/class_opsi.inc:75 +#, php-format +msgid "More than one Opsi server were found, using the first result '%s'." +msgstr "Plus d'un serveur Opsi on été trouvés, j'utilise le premier '%s'." + +#: admin/opsi/class_opsi.inc:155 +msgid "Service infrastructure" +msgstr "Infrastructure de service" + +#: admin/opsi/class_opsigeneric.inc:217 +msgid "The field 'Name' must contain a domain part!" +msgstr "Le champ 'nom' doit contenir le nom complet incluant le domaine !" + +#: admin/opsi/class_opsigeneric.inc:265 admin/opsi/class_opsigeneric.inc:266 +#: admin/opsi/class_opsigeneric.inc:268 admin/opsi/class_opsigeneric.inc:269 +msgid "OPSI" +msgstr "" + +#: admin/opsi/class_opsigeneric.inc:376 admin/opsi/class_opsigeneric.inc:389 +#: admin/opsi/class_opsigeneric.inc:413 admin/opsi/class_opsigeneric.inc:424 +#: admin/opsi/class_opsigeneric.inc:430 admin/opsi/class_opsigeneric.inc:447 +#: admin/opsi/class_opsigeneric.inc:465 admin/opsi/class_opsigeneric.inc:471 +#: admin/opsi/class_opsigeneric.inc:500 admin/opsi/class_opsigeneric.inc:532 +#: admin/opsi/class_opsigeneric.inc:677 +msgid "Error" +msgstr "Erreur" + +#: admin/opsi/class_opsigeneric.inc:703 +msgid "Generic" +msgstr "Informations" + +#: admin/opsi/class_opsigeneric.inc:704 +msgid "OPSI generic" +msgstr "Informations OPSI" + +#: admin/opsi/class_opsigeneric.inc:716 +msgid "Note" +msgstr "" + +#: admin/opsi/class_opsigeneric.inc:718 +msgid "Local product" +msgstr "Produit local" + +#: admin/opsi/opsiware.tpl:2 +msgid "Information" +msgstr "Information" + +#: admin/opsi/opsiware.tpl:7 +msgid "Hardware information" +msgstr "Information Hardware" + +#: admin/opsi/opsiware.tpl:9 +msgid "Software information" +msgstr "Informations Logiciels" + +#: admin/opsi/opsiware.tpl:14 +msgid "Device" +msgstr "Périphériques" + +#: admin/opsi/class_opsiProperties.inc:107 +msgid "Products" +msgstr "Produits" + +#: admin/opsi/class_opsiProperties.inc:108 +msgid "Product properties" +msgstr "Propriétés du produit" + diff --git a/trunk/gosa-plugins/opsi/plugin.dsc b/trunk/gosa-plugins/opsi/plugin.dsc new file mode 100644 index 000000000..ed26997e6 --- /dev/null +++ b/trunk/gosa-plugins/opsi/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = opsi +description = "opsi plugin for managing system deployment" +version = 2.6.4 +author = "Fabian Hickert " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = goto diff --git a/trunk/gosa-plugins/phpgw/contrib/phpgwaccount.ldif b/trunk/gosa-plugins/phpgw/contrib/phpgwaccount.ldif new file mode 100644 index 000000000..06c30904e --- /dev/null +++ b/trunk/gosa-plugins/phpgw/contrib/phpgwaccount.ldif @@ -0,0 +1,10 @@ +dn: cn=phpgwaccount,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: phpgwaccount +olcAttributeTypes: ( 1.3.6.1.4.1.9554.1 NAME 'phpgwAccountLastLogin' DESC 'timestamp of last login' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.9554.2 NAME 'phpgwAccountLastLoginFrom' DESC 'IP address as a dotted decimal, eg. 192.168.1.1, omitting leading zeros' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} ) +olcAttributeTypes: ( 1.3.6.1.4.1.9554.3 NAME 'phpgwLastPasswdChange' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.9554.4 NAME 'phpgwAccountType' DESC 'Single-char u/g for user/group' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.9554.5 NAME 'phpgwAccountStatus' DESC 'Single-char A/L for active/inactive' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.9554.6 NAME 'phpgwAccountExpires' DESC 'timestamp for account expiration' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcObjectClasses: ( 1.3.6.1.4.1.9554.0 NAME 'phpgwAccount' SUP top AUXILIARY DESC 'Abstraction of an account with phpgw attributes' MAY ( phpgwAccountLastLogin $ phpgwAccountLastLoginFrom $ phpgwLastPasswdChange $ phpgwAccountType $ phpgwAccountStatus $ phpgwAccountExpires) ) diff --git a/trunk/gosa-plugins/phpgw/contrib/phpgwaccount.schema b/trunk/gosa-plugins/phpgw/contrib/phpgwaccount.schema new file mode 100644 index 000000000..3edd26394 --- /dev/null +++ b/trunk/gosa-plugins/phpgw/contrib/phpgwaccount.schema @@ -0,0 +1,79 @@ +# $Id egroupware : phpgwaccount.schema,v 1.0 2000/07/29 01:53:16 milosch Exp $ + +# (C) 2001-2004 Miles Lott +# Redistribution and use in original text and binary forms, with or +# without modification, are permitted provided that the following +# conditions are met: +# +# 1. Redistributions of this schema and/or documentation must retain +# the above copyright notice, this list of conditions and the +# following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# lastlogin +attributetype ( 1.3.6.1.4.1.9554.1 + NAME 'phpgwAccountLastLogin' + DESC 'timestamp of last login' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + +# lastloginfrom +attributetype ( 1.3.6.1.4.1.9554.2 + NAME 'phpgwAccountLastLoginFrom' + DESC 'IP address as a dotted decimal, eg. 192.168.1.1, omitting leading zeros' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} ) + +# lastpasswdchange +attributetype ( 1.3.6.1.4.1.9554.3 + NAME 'phpgwLastPasswdChange' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + +# accounttype +attributetype ( 1.3.6.1.4.1.9554.4 + NAME 'phpgwAccountType' + DESC 'Single-char u/g for user/group' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + SINGLE-VALUE ) + +# status +attributetype ( 1.3.6.1.4.1.9554.5 + NAME 'phpgwAccountStatus' + DESC 'Single-char A/L for active/inactive' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 + SINGLE-VALUE ) + +# expires +attributetype ( 1.3.6.1.4.1.9554.6 + NAME 'phpgwAccountExpires' + DESC 'timestamp for account expiration' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 + SINGLE-VALUE ) + +# Objectclass definition for phpgwAccount +objectclass ( 1.3.6.1.4.1.9554.0 NAME 'phpgwAccount' SUP top AUXILIARY + DESC 'Abstraction of an account with phpgw attributes' + MAY ( phpgwAccountLastLogin $ phpgwAccountLastLoginFrom $ phpgwLastPasswdChange $ phpgwAccountType $ phpgwAccountStatus $ phpgwAccountExpires) ) + diff --git a/trunk/gosa-plugins/phpgw/help/guide.xml b/trunk/gosa-plugins/phpgw/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/phpgw/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpgw/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..4c9aa009b --- /dev/null +++ b/trunk/gosa-plugins/phpgw/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,55 @@ +# translation of messages.po to Deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2008-04-03 14:24+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:5 +msgid "PHPGroupware" +msgstr "phpGroupware" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:6 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:85 +#: personal/connectivity/phpgw/class_phpgwAccount.inc:141 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:160 +msgid "PHP GW" +msgstr "PHP GW" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +msgid "PHP GW account settings" +msgstr "PHP GW Konto-Einstellungen" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:165 +msgid "My account" +msgstr "Mein Konto" + +#: personal/connectivity/phpgw/phpgw.tpl:5 +msgid "PHPGroupware account" +msgstr "phpGroupware-Konto" diff --git a/trunk/gosa-plugins/phpgw/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpgw/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..bba68d8e5 --- /dev/null +++ b/trunk/gosa-plugins/phpgw/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,60 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:5 +msgid "PHPGroupware" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:6 +msgid "This does something" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:85 +#: personal/connectivity/phpgw/class_phpgwAccount.inc:141 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:160 +msgid "PHP GW" +msgstr "PHP GW" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +msgid "PHP GW account settings" +msgstr "Configuración de la cuenta PHP GW" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:165 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/connectivity/phpgw/phpgw.tpl:5 +msgid "PHPGroupware account" +msgstr "" + +#~ msgid "Removing of user/PHPgw account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la eliminación de la cuenta de usuario/PHPgw con dn '%s'." + +#~ msgid "Saving of user/PHPgw account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la eliminación de la cuenta de usuario/PHPgw con dn '%s'." diff --git a/trunk/gosa-plugins/phpgw/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpgw/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..fa93d375a --- /dev/null +++ b/trunk/gosa-plugins/phpgw/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,48 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2008-06-08 15:37+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:5 +msgid "PHPGroupware" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:6 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:85 +#: personal/connectivity/phpgw/class_phpgwAccount.inc:141 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:160 +msgid "PHP GW" +msgstr "PHP Groupware" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +msgid "PHP GW account settings" +msgstr "Préférences de PHP Groupware" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +msgid "Connectivity addon" +msgstr "Connectivité" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:165 +msgid "My account" +msgstr "Mon Compte" + +#: personal/connectivity/phpgw/phpgw.tpl:5 +msgid "PHPGroupware account" +msgstr "Compte PHPGroupware" diff --git a/trunk/gosa-plugins/phpgw/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpgw/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..86c9c9106 --- /dev/null +++ b/trunk/gosa-plugins/phpgw/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,60 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:5 +msgid "PHPGroupware" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:6 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:85 +#: personal/connectivity/phpgw/class_phpgwAccount.inc:141 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:160 +msgid "PHP GW" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +#, fuzzy +msgid "PHP GW account settings" +msgstr "Impostazioni FAX" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:165 +msgid "My account" +msgstr "Identità" + +#: personal/connectivity/phpgw/phpgw.tpl:5 +msgid "PHPGroupware account" +msgstr "Estenzioni PHPGroupware" + +#, fuzzy +#~ msgid "Removing of user/PHPgw account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "Saving of user/PHPgw account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" diff --git a/trunk/gosa-plugins/phpgw/locale/messages.po b/trunk/gosa-plugins/phpgw/locale/messages.po new file mode 100644 index 000000000..13187fdfc --- /dev/null +++ b/trunk/gosa-plugins/phpgw/locale/messages.po @@ -0,0 +1,50 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:5 +msgid "PHPGroupware" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:6 +msgid "This does something" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:85 +#: personal/connectivity/phpgw/class_phpgwAccount.inc:141 +msgid "LDAP error" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:160 +msgid "PHP GW" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +msgid "PHP GW account settings" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:165 +msgid "My account" +msgstr "" + +#: personal/connectivity/phpgw/phpgw.tpl:5 +msgid "PHPGroupware account" +msgstr "" diff --git a/trunk/gosa-plugins/phpgw/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpgw/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..6fe74e324 --- /dev/null +++ b/trunk/gosa-plugins/phpgw/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,64 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:5 +msgid "PHPGroupware" +msgstr "PHPGroupware" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:6 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:85 +#: personal/connectivity/phpgw/class_phpgwAccount.inc:141 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:160 +msgid "PHP GW" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +#, fuzzy +msgid "PHP GW account settings" +msgstr "Groep instellingen" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +#, fuzzy +msgid "Connectivity addon" +msgstr "Verbindingen" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:165 +msgid "My account" +msgstr "Mijn account" + +#: personal/connectivity/phpgw/phpgw.tpl:5 +msgid "PHPGroupware account" +msgstr "PHPGroupware account" + +#, fuzzy +#~ msgid "Removing of user/PHPgw account with dn '%s' failed." +#~ msgstr "Het verwijderen van het PHPGroupware account is mislukt" + +#, fuzzy +#~ msgid "Saving of user/PHPgw account with dn '%s' failed." +#~ msgstr "Het opslaan van het PHPGroupware account is mislukt" diff --git a/trunk/gosa-plugins/phpgw/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpgw/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..03d657c9d --- /dev/null +++ b/trunk/gosa-plugins/phpgw/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:5 +msgid "PHPGroupware" +msgstr "PHPGroupware" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:6 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:85 +#: personal/connectivity/phpgw/class_phpgwAccount.inc:141 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:160 +msgid "PHP GW" +msgstr "PHP GW" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +msgid "PHP GW account settings" +msgstr "Ustawienia konta PHP GW" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:165 +msgid "My account" +msgstr "Moje konto " + +#: personal/connectivity/phpgw/phpgw.tpl:5 +msgid "PHPGroupware account" +msgstr "Konto PHPGroupware" + +#~ msgid "Removing of user/PHPgw account with dn '%s' failed." +#~ msgstr "Usuwanie konta PHPgw z dn '%s' nieudane." + +#~ msgid "Saving of user/PHPgw account with dn '%s' failed." +#~ msgstr "Zapisywanie konta PHPgw z dn '%s' nieudane." diff --git a/trunk/gosa-plugins/phpgw/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpgw/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f94849684 --- /dev/null +++ b/trunk/gosa-plugins/phpgw/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,59 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:5 +msgid "PHPGroupware" +msgstr "PHPGroupware" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:6 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:85 +#: personal/connectivity/phpgw/class_phpgwAccount.inc:141 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:160 +msgid "PHP GW" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +#, fuzzy +msgid "PHP GW account settings" +msgstr "Настройки Samba" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:165 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/connectivity/phpgw/phpgw.tpl:5 +msgid "PHPGroupware account" +msgstr "Учетная запись Groupware" + +#, fuzzy +#~ msgid "Removing of user/PHPgw account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" + +#, fuzzy +#~ msgid "Saving of user/PHPgw account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" diff --git a/trunk/gosa-plugins/phpgw/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpgw/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..beb26d00c --- /dev/null +++ b/trunk/gosa-plugins/phpgw/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,62 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:5 +msgid "PHPGroupware" +msgstr "PHPGroupware" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:6 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:85 +#: personal/connectivity/phpgw/class_phpgwAccount.inc:141 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:160 +msgid "PHP GW" +msgstr "" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +#, fuzzy +msgid "PHP GW account settings" +msgstr "电话设置" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:161 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/phpgw/class_phpgwAccount.inc:165 +msgid "My account" +msgstr "我的账号" + +#: personal/connectivity/phpgw/phpgw.tpl:5 +msgid "PHPGroupware account" +msgstr "PHPGroupware 账号" + +#, fuzzy +#~ msgid "Removing of user/PHPgw account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of user/PHPgw account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" diff --git a/trunk/gosa-plugins/phpgw/personal/connectivity/phpgw/class_phpgwAccount.inc b/trunk/gosa-plugins/phpgw/personal/connectivity/phpgw/class_phpgwAccount.inc new file mode 100644 index 000000000..b4fd138f1 --- /dev/null +++ b/trunk/gosa-plugins/phpgw/personal/connectivity/phpgw/class_phpgwAccount.inc @@ -0,0 +1,226 @@ +attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + } + + function execute() + { + /* Call parent execute */ +// plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Show tab dialog headers */ + $display= ""; + + /* Show main page */ + $smarty= get_smarty(); + + /* Load attributes */ + foreach($this->attributes as $val){ + $smarty->assign("$val", $this->$val); + } + if ($this->is_account){ + $smarty->assign("phpgwState", "checked"); + } else { + $smarty->assign("phpgwState", ""); + } + + $smarty->assign('phpgwAccountACL', $this->getacl("",$this->ReadOnly)); + $smarty->assign("multiple_support",$this->multiple_support_active); + $smarty->assign("use_phpgw",in_array("phpgw",$this->multi_boxes)); + $display.= $smarty->fetch (get_template_path('phpgw.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + if($this->acl_is_removeable()){ + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + plugin::remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove',array("uid" => $this->uid)); + } + } + + + /* Save data to object */ + function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + if (isset($_POST['phpgw'])){ + if (!$this->is_account && $_POST['phpgw'] == "B"){ + if($this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + + plugin::save_object(); + if (isset($_POST["phpgwStatus"])){ + $this->phpgwStatus = "disabled"; + } else { + $this->phpgwStatus = "enabled"; + } + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("PHP GW"), + "plDescription" => _("PHP GW account settings")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 24, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array() + )); + } + + + function multiple_save_object() + { + if (isset($_POST['connectivityTab'])){ + plugin::multiple_save_object(); + + /* Do we need to flip is_account state? */ + if(isset($_POST['use_phpgw'])){ + $this->multi_boxes[] = "phpgw"; + if (isset($_POST['connectivityTab'])){ + if (isset($_POST['phpgw'])){ + if (!$this->is_account && $_POST['phpgw'] == "B"){ + if($this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + } + } + } + + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("phpgw",$this->multi_boxes)){ + $ret['is_account'] = $this->is_account; + } + return($ret); + } + + function set_multi_edit_values($values) + { + plugin::set_multi_edit_values($values); + if(isset($values['is_account'])){ + $this->is_account = $values['is_account']; + } + } + + function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + if(isset($attrs['objectClass']) && in_array("phpgwAccount",$attrs['objectClass'])){ + $this->is_account = TRUE; + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/phpgw/personal/connectivity/phpgw/phpgw.tpl b/trunk/gosa-plugins/phpgw/personal/connectivity/phpgw/phpgw.tpl new file mode 100644 index 000000000..a63cddaa2 --- /dev/null +++ b/trunk/gosa-plugins/phpgw/personal/connectivity/phpgw/phpgw.tpl @@ -0,0 +1,7 @@ +

    +{render acl=$phpgwAccountACL checkbox=$multiple_support checked=$use_phpgw} + +{/render} + {t}PHPGroupware account{/t} + +

    diff --git a/trunk/gosa-plugins/phpgw/plugin.dsc b/trunk/gosa-plugins/phpgw/plugin.dsc new file mode 100644 index 000000000..db32d5fe8 --- /dev/null +++ b/trunk/gosa-plugins/phpgw/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = phpgw +description = "PHP Groupware connectivity plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = connectivity, mail diff --git a/trunk/gosa-plugins/phpscheduleit/README.phpscheduleit b/trunk/gosa-plugins/phpscheduleit/README.phpscheduleit new file mode 100644 index 000000000..d8ca99f9d --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/README.phpscheduleit @@ -0,0 +1,10 @@ +To use the phpscheduleit connectivity extension + +1) Add the schema phpscheduleit.schema in your schema directory + +2) Remove the comment in front of phpscheduleitAccount in gosa.conf + + + +Guillaume Delecourt +OpenSides November 2005 diff --git a/trunk/gosa-plugins/phpscheduleit/contrib/phpscheduleit.ldif b/trunk/gosa-plugins/phpscheduleit/contrib/phpscheduleit.ldif new file mode 100644 index 000000000..28c7e502f --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/contrib/phpscheduleit.ldif @@ -0,0 +1,5 @@ +dn: cn=phpscheduleit,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: phpscheduleit +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.3.1 NAME 'phpscheduleitAccountLogin' DESC 'PHPscheduleit Account Login' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcObjectClasses: ( 1.3.6.1.4.1.22262.1.1.2.3.1 NAME 'phpscheduleitAccount' SUP top AUXILIARY DESC 'PHPscheduleit Account' MAY ( phpscheduleitAccountLogin )) diff --git a/trunk/gosa-plugins/phpscheduleit/contrib/phpscheduleit.schema b/trunk/gosa-plugins/phpscheduleit/contrib/phpscheduleit.schema new file mode 100644 index 000000000..b7450ba60 --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/contrib/phpscheduleit.schema @@ -0,0 +1,23 @@ +# +## schema file for OpenLDAP 2.x +## Schema for storing PHPscheduleit User Configuration in LDAP +## OIDs are owned by OpenSides +## +## number from 1 to 50 are for objectclasses +## attributeype start at 50 +# +# $Id: phpscheduleit.schema,v 1.1 2005/11/02 16:48:16 guiguidoc Exp $ +# + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.3.1 NAME 'phpscheduleitAccountLogin' + DESC 'PHPscheduleit Account Login' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +# +# all objectclass +# + +objectclass ( 1.3.6.1.4.1.22262.1.1.2.3.1 NAME 'phpscheduleitAccount' SUP top AUXILIARY + DESC 'PHPscheduleit Account' + MAY ( phpscheduleitAccountLogin )) \ No newline at end of file diff --git a/trunk/gosa-plugins/phpscheduleit/help/guide.xml b/trunk/gosa-plugins/phpscheduleit/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/phpscheduleit/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpscheduleit/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ef741f5d6 --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,55 @@ +# translation of messages.po to Deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2008-04-03 16:03+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: personal/connectivity/phpscheduleit/phpscheduleit.tpl:3 +msgid "PHPscheduleit account" +msgstr "PHPscheduleit-Konto" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:27 +msgid "PHPscheduleit" +msgstr "PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:28 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:86 +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:143 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:163 +msgid "PHP Schedule it" +msgstr "PHP Schedule It" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +msgid "PHP Schedule it settings" +msgstr "PHP Schedule It Einstellungen" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:168 +msgid "My account" +msgstr "Mein Konto" diff --git a/trunk/gosa-plugins/phpscheduleit/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpscheduleit/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e458c555c --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,60 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/connectivity/phpscheduleit/phpscheduleit.tpl:3 +msgid "PHPscheduleit account" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:27 +msgid "PHPscheduleit" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:28 +msgid "This does something" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:86 +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:143 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:163 +msgid "PHP Schedule it" +msgstr "PHP Schedule it" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +msgid "PHP Schedule it settings" +msgstr "Configuración PHP Schedule it" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:168 +msgid "My account" +msgstr "Mi cuenta" + +#~ msgid "Removing of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la eliminación de la cuenta usuario/PHPscheduleit con dn '%s'." + +#~ msgid "Saving of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la grabación de la cuenta de usuario/PHPscheduleit con dn '%s'." diff --git a/trunk/gosa-plugins/phpscheduleit/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpscheduleit/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..a88349ef6 --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,48 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2008-06-08 15:37+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/connectivity/phpscheduleit/phpscheduleit.tpl:3 +msgid "PHPscheduleit account" +msgstr "Compte PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:27 +msgid "PHPscheduleit" +msgstr "Compte PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:28 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:86 +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:143 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:163 +msgid "PHP Schedule it" +msgstr "Compte PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +msgid "PHP Schedule it settings" +msgstr "Paramètres de PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +msgid "Connectivity addon" +msgstr "Connectivité" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:168 +msgid "My account" +msgstr "Mon Compte" diff --git a/trunk/gosa-plugins/phpscheduleit/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpscheduleit/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d96271e2b --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,63 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/connectivity/phpscheduleit/phpscheduleit.tpl:3 +#, fuzzy +msgid "PHPscheduleit account" +msgstr "Estenzioni PHPGroupware" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:27 +#, fuzzy +msgid "PHPscheduleit" +msgstr "Estenzioni PHPGroupware" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:28 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:86 +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:143 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:163 +#, fuzzy +msgid "PHP Schedule it" +msgstr "Estenzioni PHPGroupware" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +#, fuzzy +msgid "PHP Schedule it settings" +msgstr "Estenzioni PHPGroupware" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:168 +msgid "My account" +msgstr "Identità" + +#, fuzzy +#~ msgid "Removing of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "Estenzioni PHPGroupware" + +#, fuzzy +#~ msgid "Saving of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "Estenzioni PHPGroupware" diff --git a/trunk/gosa-plugins/phpscheduleit/locale/messages.po b/trunk/gosa-plugins/phpscheduleit/locale/messages.po new file mode 100644 index 000000000..dba61f3e7 --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/locale/messages.po @@ -0,0 +1,50 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/phpscheduleit/phpscheduleit.tpl:3 +msgid "PHPscheduleit account" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:27 +msgid "PHPscheduleit" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:28 +msgid "This does something" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:86 +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:143 +msgid "LDAP error" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:163 +msgid "PHP Schedule it" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +msgid "PHP Schedule it settings" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:168 +msgid "My account" +msgstr "" diff --git a/trunk/gosa-plugins/phpscheduleit/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpscheduleit/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..25447978b --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,65 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/phpscheduleit/phpscheduleit.tpl:3 +msgid "PHPscheduleit account" +msgstr "PHPScheduleIt account" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:27 +msgid "PHPscheduleit" +msgstr "PHPScheduleIt" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:28 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:86 +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:143 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:163 +#, fuzzy +msgid "PHP Schedule it" +msgstr "PHPScheduleIt" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +#, fuzzy +msgid "PHP Schedule it settings" +msgstr "PHPScheduleIt" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +#, fuzzy +msgid "Connectivity addon" +msgstr "Verbindingen" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:168 +msgid "My account" +msgstr "Mijn account" + +#, fuzzy +#~ msgid "Removing of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "Het verwijderen van het PHPScheduleIt account is mislukt" + +#, fuzzy +#~ msgid "Saving of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "Het opslaan van het PHPScheduleIt account is mislukt" diff --git a/trunk/gosa-plugins/phpscheduleit/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpscheduleit/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d1fc62f9f --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/connectivity/phpscheduleit/phpscheduleit.tpl:3 +msgid "PHPscheduleit account" +msgstr "konto PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:27 +msgid "PHPscheduleit" +msgstr "PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:28 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:86 +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:143 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:163 +msgid "PHP Schedule it" +msgstr "PHP schedule it" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +msgid "PHP Schedule it settings" +msgstr "Ustawienia PHP schedule it" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:168 +msgid "My account" +msgstr "Moje konto " + +#~ msgid "Removing of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "Usuwanie konta PHPscheduleit z dn '%s' nieudane." + +#~ msgid "Saving of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "Zapisywanie konta PHPscheduleit z dn '%s' nieudane." diff --git a/trunk/gosa-plugins/phpscheduleit/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpscheduleit/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e808608f0 --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,62 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/connectivity/phpscheduleit/phpscheduleit.tpl:3 +#, fuzzy +msgid "PHPscheduleit account" +msgstr "Учетная запись Groupware" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:27 +#, fuzzy +msgid "PHPscheduleit" +msgstr "Учетная запись Groupware" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:28 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:86 +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:143 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:163 +#, fuzzy +msgid "PHP Schedule it" +msgstr "Учетная запись Groupware" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +#, fuzzy +msgid "PHP Schedule it settings" +msgstr "Учетная запись Groupware" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:168 +msgid "My account" +msgstr "Моя учетная запись" + +#, fuzzy +#~ msgid "Removing of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "Учетная запись Groupware" + +#, fuzzy +#~ msgid "Saving of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "Учетная запись Groupware" diff --git a/trunk/gosa-plugins/phpscheduleit/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/phpscheduleit/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f248d59c0 --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,63 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/connectivity/phpscheduleit/phpscheduleit.tpl:3 +msgid "PHPscheduleit account" +msgstr "PHPscheduleit 账号" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:27 +msgid "PHPscheduleit" +msgstr "PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:28 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:86 +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:143 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:163 +#, fuzzy +msgid "PHP Schedule it" +msgstr "PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +#, fuzzy +msgid "PHP Schedule it settings" +msgstr "PHPscheduleit" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:164 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc:168 +msgid "My account" +msgstr "我的账号" + +#, fuzzy +#~ msgid "Removing of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of user/PHPscheduleit account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" diff --git a/trunk/gosa-plugins/phpscheduleit/personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc b/trunk/gosa-plugins/phpscheduleit/personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc new file mode 100644 index 000000000..553d39c93 --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/personal/connectivity/phpscheduleit/class_phpscheduleitAccount.inc @@ -0,0 +1,179 @@ +is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Show tab dialog headers */ + $display= ""; + + /* Show main page */ + $smarty= get_smarty(); + + if ($this->is_account){ + $smarty->assign("phpscheduleitState", "checked"); + } else { + $smarty->assign("phpscheduleitState", ""); + $smarty->assign("wstate", "disabled"); + } + + if((!$this->ReadOnly) && (($this->is_account && $this->acl_is_removeable()) || (!$this->is_account && $this->acl_is_createable()))) { + $smarty->assign('gosaphpscheduleitACL', ""); + }else{ + $smarty->assign('gosaphpscheduleitACL', " disabled "); + } + + $display.= $smarty->fetch (get_template_path('phpscheduleit.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if ($this->acl_is_removeable()){ + + plugin::remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + if($this->is_account){ + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove',array("uid" => $this->uid)); + } + } + + + /* Save data to object */ + function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + if (isset($_POST['phpscheduleit'])){ + if (!$this->is_account && $_POST['phpscheduleit'] == "B"){ + if($this->acl_is_createable()) { + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + + plugin::save_object(); + if (isset($_POST["phpscheduleitStatus"])){ + $this->pptpStatus = "disabled"; + } else { + $this->pptpStatus = "enabled"; + } + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + + } + + + /* Return plugin informations for acl handling + #FIXME This is only an enable/disable checkbox for this account, there is possibly a better solution available later */ + static function plInfo() + { + return (array( + "plShortName" => _("PHP Schedule it"), + "plDescription" => _("PHP Schedule it settings")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 29, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + + "plOptions" => array(), + + "plProvidedAcls" => array() + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/phpscheduleit/personal/connectivity/phpscheduleit/phpscheduleit.tpl b/trunk/gosa-plugins/phpscheduleit/personal/connectivity/phpscheduleit/phpscheduleit.tpl new file mode 100644 index 000000000..7e5510c3f --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/personal/connectivity/phpscheduleit/phpscheduleit.tpl @@ -0,0 +1,4 @@ +

    + + {t}PHPscheduleit account{/t} +

    diff --git a/trunk/gosa-plugins/phpscheduleit/plugin.dsc b/trunk/gosa-plugins/phpscheduleit/plugin.dsc new file mode 100644 index 000000000..4e79c7309 --- /dev/null +++ b/trunk/gosa-plugins/phpscheduleit/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = phpscheduleit +description = "PHP scheduleit connectivity plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = connectivity diff --git a/trunk/gosa-plugins/pptp/contrib/README.pptp b/trunk/gosa-plugins/pptp/contrib/README.pptp new file mode 100644 index 000000000..556e274f4 --- /dev/null +++ b/trunk/gosa-plugins/pptp/contrib/README.pptp @@ -0,0 +1,13 @@ +To use the pptp connectivity extension + +1) Add the pptp.schema to your schema directory + +2) Remove the comment in front of pptpAccount in gosa.conf + + + +Guillaume Delecourt +OpenSides November 2005 + + + diff --git a/trunk/gosa-plugins/pptp/contrib/pptp.ldif b/trunk/gosa-plugins/pptp/contrib/pptp.ldif new file mode 100644 index 000000000..86c97e15a --- /dev/null +++ b/trunk/gosa-plugins/pptp/contrib/pptp.ldif @@ -0,0 +1,8 @@ +dn: cn=pptp,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: pptp +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.2.1 NAME 'pptpAccount' DESC 'PPTP Server Account' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.2.2 NAME 'pptpAccountLogin' DESC 'PPTP Server Account Login' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.2.3 NAME 'pptpAccountPassword' DESC 'PPTP Server Account Password' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.22262.1.1.1.2.4 NAME 'pptpAccountServerIP' DESC 'PPTP Server Account Server IP' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcObjectClasses: ( 1.3.6.1.4.1.22262.1.1.2.2.1 NAME 'pptpServerAccount' SUP top AUXILIARY DESC 'PPTP Server Account' MAY ( pptpAccount )) diff --git a/trunk/gosa-plugins/pptp/contrib/pptp.schema b/trunk/gosa-plugins/pptp/contrib/pptp.schema new file mode 100644 index 000000000..bf580c4f6 --- /dev/null +++ b/trunk/gosa-plugins/pptp/contrib/pptp.schema @@ -0,0 +1,42 @@ +# +## schema file for OpenLDAP 2.x +## Schema for storing PPTP User Configuration in LDAP +## OIDs are owned by OpenSides +## +## number from 1 to 50 are for objectclasses +## attributeype start at 50 +# +# $Id: pptp.schema,v 1.5 2005/11/02 16:47:22 guiguidoc Exp $ +# +attributetype ( 1.3.6.1.4.1.22262.1.1.1.2.1 NAME 'pptpAccount' + DESC 'PPTP Server Account' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.2.2 NAME 'pptpAccountLogin' + DESC 'PPTP Server Account Login' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.2.3 NAME 'pptpAccountPassword' + DESC 'PPTP Server Account Password' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.22262.1.1.1.2.4 NAME 'pptpAccountServerIP' + DESC 'PPTP Server Account Server IP' + EQUALITY caseIgnoreIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +# +# all objectclass +# + +objectclass ( 1.3.6.1.4.1.22262.1.1.2.2.1 NAME 'pptpServerAccount' SUP top AUXILIARY + DESC 'PPTP Server Account' + MAY ( pptpAccount )) + diff --git a/trunk/gosa-plugins/pptp/help/guide.xml b/trunk/gosa-plugins/pptp/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/pptp/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pptp/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..0f9e924c9 --- /dev/null +++ b/trunk/gosa-plugins/pptp/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,49 @@ +# translation of messages.po to Deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2008-04-03 16:13+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: personal/connectivity/pptp/class_pptpAccount.inc:26 +#: personal/connectivity/pptp/class_pptpAccount.inc:177 +msgid "PPTP" +msgstr "PPTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:27 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/pptp/class_pptpAccount.inc:102 +#: personal/connectivity/pptp/class_pptpAccount.inc:158 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#: personal/connectivity/pptp/pptp.tpl:3 +msgid "PPTP account" +msgstr "PPTP-Konto" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/pptp/class_pptpAccount.inc:182 +msgid "My account" +msgstr "Mein Konto" diff --git a/trunk/gosa-plugins/pptp/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pptp/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..721a23122 --- /dev/null +++ b/trunk/gosa-plugins/pptp/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,52 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/connectivity/pptp/class_pptpAccount.inc:26 +#: personal/connectivity/pptp/class_pptpAccount.inc:177 +msgid "PPTP" +msgstr "PPTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:27 +msgid "This does something" +msgstr "" + +#: personal/connectivity/pptp/class_pptpAccount.inc:102 +#: personal/connectivity/pptp/class_pptpAccount.inc:158 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#: personal/connectivity/pptp/pptp.tpl:3 +msgid "PPTP account" +msgstr "Cuenta PPTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/pptp/class_pptpAccount.inc:182 +msgid "My account" +msgstr "Mi cuenta" + +#~ msgid "Removing of user/PPTP account with dn '%s' failed." +#~ msgstr "Ha fallado la eliminación de la cuenta de usuario/PPTP con dn '%s'." + +#~ msgid "Saving of user/PPTP account with dn '%s' failed." +#~ msgstr "Ha fallado la grabación de la cuenta de usuario/PPTP con dn '%s'." diff --git a/trunk/gosa-plugins/pptp/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pptp/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..7b4c421ca --- /dev/null +++ b/trunk/gosa-plugins/pptp/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,42 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2008-06-08 15:38+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/connectivity/pptp/class_pptpAccount.inc:26 +#: personal/connectivity/pptp/class_pptpAccount.inc:177 +msgid "PPTP" +msgstr "Compte PPTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:27 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/pptp/class_pptpAccount.inc:102 +#: personal/connectivity/pptp/class_pptpAccount.inc:158 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#: personal/connectivity/pptp/pptp.tpl:3 +msgid "PPTP account" +msgstr "Compte PPTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +msgid "Connectivity addon" +msgstr "Connectivité" + +#: personal/connectivity/pptp/class_pptpAccount.inc:182 +msgid "My account" +msgstr "Mon Compte" diff --git a/trunk/gosa-plugins/pptp/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pptp/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b5d692566 --- /dev/null +++ b/trunk/gosa-plugins/pptp/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,54 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/connectivity/pptp/class_pptpAccount.inc:26 +#: personal/connectivity/pptp/class_pptpAccount.inc:177 +msgid "PPTP" +msgstr "" + +#: personal/connectivity/pptp/class_pptpAccount.inc:27 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/pptp/class_pptpAccount.inc:102 +#: personal/connectivity/pptp/class_pptpAccount.inc:158 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#: personal/connectivity/pptp/pptp.tpl:3 +#, fuzzy +msgid "PPTP account" +msgstr "Estenzioni FTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/pptp/class_pptpAccount.inc:182 +msgid "My account" +msgstr "Identità" + +#, fuzzy +#~ msgid "Removing of user/PPTP account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "Saving of user/PPTP account with dn '%s' failed." +#~ msgstr "Estenzioni FTP" diff --git a/trunk/gosa-plugins/pptp/locale/messages.po b/trunk/gosa-plugins/pptp/locale/messages.po new file mode 100644 index 000000000..0030112dd --- /dev/null +++ b/trunk/gosa-plugins/pptp/locale/messages.po @@ -0,0 +1,44 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/pptp/class_pptpAccount.inc:26 +#: personal/connectivity/pptp/class_pptpAccount.inc:177 +msgid "PPTP" +msgstr "" + +#: personal/connectivity/pptp/class_pptpAccount.inc:27 +msgid "This does something" +msgstr "" + +#: personal/connectivity/pptp/class_pptpAccount.inc:102 +#: personal/connectivity/pptp/class_pptpAccount.inc:158 +msgid "LDAP error" +msgstr "" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#: personal/connectivity/pptp/pptp.tpl:3 +msgid "PPTP account" +msgstr "" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/pptp/class_pptpAccount.inc:182 +msgid "My account" +msgstr "" diff --git a/trunk/gosa-plugins/pptp/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pptp/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ab8cc3713 --- /dev/null +++ b/trunk/gosa-plugins/pptp/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,57 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/pptp/class_pptpAccount.inc:26 +#: personal/connectivity/pptp/class_pptpAccount.inc:177 +msgid "PPTP" +msgstr "PPTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:27 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/pptp/class_pptpAccount.inc:102 +#: personal/connectivity/pptp/class_pptpAccount.inc:158 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#: personal/connectivity/pptp/pptp.tpl:3 +msgid "PPTP account" +msgstr "PPTP account" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#, fuzzy +msgid "Connectivity addon" +msgstr "Verbindingen" + +#: personal/connectivity/pptp/class_pptpAccount.inc:182 +msgid "My account" +msgstr "Mijn account" + +#, fuzzy +#~ msgid "Removing of user/PPTP account with dn '%s' failed." +#~ msgstr "Het verwijderen van het PPTP account is mislukt" + +#, fuzzy +#~ msgid "Saving of user/PPTP account with dn '%s' failed." +#~ msgstr "Het opslaan van het PPTP account is mislukt" diff --git a/trunk/gosa-plugins/pptp/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pptp/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..875a61f42 --- /dev/null +++ b/trunk/gosa-plugins/pptp/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,50 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/connectivity/pptp/class_pptpAccount.inc:26 +#: personal/connectivity/pptp/class_pptpAccount.inc:177 +msgid "PPTP" +msgstr "PPTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:27 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/pptp/class_pptpAccount.inc:102 +#: personal/connectivity/pptp/class_pptpAccount.inc:158 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#: personal/connectivity/pptp/pptp.tpl:3 +msgid "PPTP account" +msgstr "Konto PPTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/pptp/class_pptpAccount.inc:182 +msgid "My account" +msgstr "Moje konto " + +#~ msgid "Removing of user/PPTP account with dn '%s' failed." +#~ msgstr "Usuwanie konta PPTP z dn '%s' nieudane." + +#~ msgid "Saving of user/PPTP account with dn '%s' failed." +#~ msgstr "Zapisywanie konta PPTP z dn '%s' nieudane." diff --git a/trunk/gosa-plugins/pptp/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pptp/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..578043505 --- /dev/null +++ b/trunk/gosa-plugins/pptp/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,53 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/connectivity/pptp/class_pptpAccount.inc:26 +#: personal/connectivity/pptp/class_pptpAccount.inc:177 +msgid "PPTP" +msgstr "" + +#: personal/connectivity/pptp/class_pptpAccount.inc:27 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/pptp/class_pptpAccount.inc:102 +#: personal/connectivity/pptp/class_pptpAccount.inc:158 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#: personal/connectivity/pptp/pptp.tpl:3 +#, fuzzy +msgid "PPTP account" +msgstr "Аккаунт FTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/pptp/class_pptpAccount.inc:182 +msgid "My account" +msgstr "Моя учетная запись" + +#, fuzzy +#~ msgid "Removing of user/PPTP account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" + +#, fuzzy +#~ msgid "Saving of user/PPTP account with dn '%s' failed." +#~ msgstr "Аккаунт FTP" diff --git a/trunk/gosa-plugins/pptp/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pptp/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..0bb607f0d --- /dev/null +++ b/trunk/gosa-plugins/pptp/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,55 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:36+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/connectivity/pptp/class_pptpAccount.inc:26 +#: personal/connectivity/pptp/class_pptpAccount.inc:177 +msgid "PPTP" +msgstr "PPTP" + +#: personal/connectivity/pptp/class_pptpAccount.inc:27 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/pptp/class_pptpAccount.inc:102 +#: personal/connectivity/pptp/class_pptpAccount.inc:158 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#: personal/connectivity/pptp/pptp.tpl:3 +msgid "PPTP account" +msgstr "PPTP 账号" + +#: personal/connectivity/pptp/class_pptpAccount.inc:178 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/pptp/class_pptpAccount.inc:182 +msgid "My account" +msgstr "我的账号" + +#, fuzzy +#~ msgid "Removing of user/PPTP account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of user/PPTP account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" diff --git a/trunk/gosa-plugins/pptp/personal/connectivity/pptp/class_pptpAccount.inc b/trunk/gosa-plugins/pptp/personal/connectivity/pptp/class_pptpAccount.inc new file mode 100644 index 000000000..ebbf600a6 --- /dev/null +++ b/trunk/gosa-plugins/pptp/personal/connectivity/pptp/class_pptpAccount.inc @@ -0,0 +1,192 @@ +attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + } + + function execute() + { + /* Call parent execute */ + // plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Show tab dialog headers */ + $display= ""; + + /* Show main page */ + $smarty= get_smarty(); + + if ($this->is_account){ + $smarty->assign("pptpState", "checked"); + } else { + $smarty->assign("pptpState", ""); + $smarty->assign("wstate", "disabled"); + } + + if((!$this->ReadOnly) && (($this->is_account && $this->acl_is_removeable()) || (!$this->is_account && $this->acl_is_createable()))) { + $smarty->assign('gosapptpACL', ""); + }else{ + $smarty->assign('gosapptpACL', " disabled "); + } + + $display.= $smarty->fetch (get_template_path('pptp.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + if($this->acl_is_removeable()){ + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + plugin::remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove',array("uid" => $this->uid)); + } + } + + + /* Save data to object */ + function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + if (isset($_POST['pptp'])){ + if (!$this->is_account && $_POST['pptp'] == "B"){ + if($this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + + plugin::save_object(); + if (isset($_POST["pptpStatus"])){ + $this->pptpStatus = "disabled"; + } else { + $this->pptpStatus = "enabled"; + } + } + + + /* Save to LDAP */ + function save() + { + if($this->acl_is_createable()){ + plugin::save(); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + } + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("PPTP"), + "plDescription" => _("PPTP account")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 28, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array() + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/pptp/personal/connectivity/pptp/pptp.tpl b/trunk/gosa-plugins/pptp/personal/connectivity/pptp/pptp.tpl new file mode 100644 index 000000000..15d28a792 --- /dev/null +++ b/trunk/gosa-plugins/pptp/personal/connectivity/pptp/pptp.tpl @@ -0,0 +1,4 @@ +

    + + {t}PPTP account{/t} +

    diff --git a/trunk/gosa-plugins/pptp/plugin.dsc b/trunk/gosa-plugins/pptp/plugin.dsc new file mode 100644 index 000000000..f934136ce --- /dev/null +++ b/trunk/gosa-plugins/pptp/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = pptp +description = "PPTP connectivity plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = connectivity diff --git a/trunk/gosa-plugins/pureftpd/contrib/pureftpd.ldif b/trunk/gosa-plugins/pureftpd/contrib/pureftpd.ldif new file mode 100644 index 000000000..2f0bbe1f4 --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/contrib/pureftpd.ldif @@ -0,0 +1,13 @@ +dn: cn=pureftpd,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: pureftpd +olcAttributeTypes: ( 1.3.6.1.4.1.6981.11.3.1 NAME 'FTPQuotaFiles' DESC 'Quota (in number of files) for an FTP user' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.6981.11.3.2 NAME 'FTPQuotaMBytes' DESC 'Quota (in megabytes) for an FTP user' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.6981.11.3.3 NAME 'FTPUploadRatio' DESC 'Ratio (compared with FTPRatioDown) for uploaded files' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.6981.11.3.4 NAME 'FTPDownloadRatio' DESC 'Ratio (compared with FTPRatioUp) for downloaded files' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.6981.11.3.5 NAME 'FTPUploadBandwidth' DESC 'Bandwidth (in KB/s) to limit upload speeds to' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.6981.11.3.6 NAME 'FTPDownloadBandwidth' DESC 'Bandwidth (in KB/s) to limit download speeds to' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.6981.11.3.7 NAME 'FTPStatus' DESC 'Account status: enabled or disabled' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.6981.11.3.8 NAME 'FTPuid' DESC 'System uid (overrides uidNumber if present)' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcAttributeTypes: ( 1.3.6.1.4.1.6981.11.3.9 NAME 'FTPgid' DESC 'System uid (overrides gidNumber if present)' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) +olcObjectClasses: ( 1.3.6.1.4.1.6981.11.2.3 NAME 'PureFTPdUser' SUP top AUXILIARY DESC 'PureFTPd user with optional quota, throttling, and ratio' MAY ( FTPStatus $ FTPQuotaFiles $ FTPQuotaMBytes $ FTPUploadRatio $ FTPDownloadRatio $ FTPUploadBandwidth $ FTPDownloadBandwidth $ FTPuid $ FTPgid ) ) diff --git a/trunk/gosa-plugins/pureftpd/contrib/pureftpd.schema b/trunk/gosa-plugins/pureftpd/contrib/pureftpd.schema new file mode 100644 index 000000000..1cf95ea8b --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/contrib/pureftpd.schema @@ -0,0 +1,64 @@ +# $Id: pureftpd.schema,v 1.2 2004/02/04 15:25:01 cajus Exp $ +# +# pureftpd.schema +# +# Pure-FTPd User LDAP Schema +# See README.LDAP in the Pure-FTPd documentation for more information. +# +# Written 2002-01-24 by Ben Gertzfield +# + +## Pure-FTPd-related LDAP attributes + +attributetype ( 1.3.6.1.4.1.6981.11.3.1 NAME 'FTPQuotaFiles' + DESC 'Quota (in number of files) for an FTP user' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.6981.11.3.2 NAME 'FTPQuotaMBytes' + DESC 'Quota (in megabytes) for an FTP user' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.6981.11.3.3 NAME 'FTPUploadRatio' + DESC 'Ratio (compared with FTPRatioDown) for uploaded files' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.6981.11.3.4 NAME 'FTPDownloadRatio' + DESC 'Ratio (compared with FTPRatioUp) for downloaded files' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.6981.11.3.5 NAME 'FTPUploadBandwidth' + DESC 'Bandwidth (in KB/s) to limit upload speeds to' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.6981.11.3.6 NAME 'FTPDownloadBandwidth' + DESC 'Bandwidth (in KB/s) to limit download speeds to' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.6981.11.3.7 NAME 'FTPStatus' + DESC 'Account status: enabled or disabled' + EQUALITY caseIgnoreIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.6981.11.3.8 NAME 'FTPuid' + DESC 'System uid (overrides uidNumber if present)' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +attributetype ( 1.3.6.1.4.1.6981.11.3.9 NAME 'FTPgid' + DESC 'System uid (overrides gidNumber if present)' + EQUALITY integerMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) + +## New Pure-FTPd object type + +objectclass ( 1.3.6.1.4.1.6981.11.2.3 NAME 'PureFTPdUser' SUP top AUXILIARY + DESC 'PureFTPd user with optional quota, throttling, and ratio' + MAY ( FTPStatus $ FTPQuotaFiles $ FTPQuotaMBytes $ FTPUploadRatio $ + FTPDownloadRatio $ FTPUploadBandwidth $ FTPDownloadBandwidth $ + FTPuid $ FTPgid ) ) diff --git a/trunk/gosa-plugins/pureftpd/help/guide.xml b/trunk/gosa-plugins/pureftpd/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/pureftpd/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pureftpd/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d04fd7aab --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,148 @@ +# translation of messages.po to Deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-04-03 14:25+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:6 +msgid "FTP" +msgstr "FTP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:7 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:139 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:241 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:191 +#: personal/connectivity/pureftpd/pureftpd.tpl:21 +msgid "Upload bandwidth" +msgstr "Upload-Bandbreite" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:194 +#: personal/connectivity/pureftpd/pureftpd.tpl:29 +msgid "Download bandwidth" +msgstr "Download-Bandbreite" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:198 +msgid "Quota file" +msgstr "Kontingent-Datei" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:201 +msgid "Quota size" +msgstr "Kontingent-Größe" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:204 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:272 +msgid "Upload ratio" +msgstr "Upload-Verhältnis" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:207 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:274 +msgid "Download ratio" +msgstr "Download-Verhältnis" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:261 +msgid "Ftp" +msgstr "FTP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +msgid "Pure ftp account" +msgstr "PureFTP-Konto" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:266 +msgid "My account" +msgstr "Mein Konto" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:271 +msgid "Quota files" +msgstr "Kontingent-Dateien" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:273 +msgid "Quota MBytes" +msgstr "Kontingent-Größe" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:275 +msgid "Upload bandwith" +msgstr "Upload-Bandbreite" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:276 +msgid "Download bandwith" +msgstr "Download-Bandbreite" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:277 +msgid "Status" +msgstr "Status" + +#: personal/connectivity/pureftpd/pureftpd.tpl:6 +msgid "FTP account" +msgstr "FTP Konto" + +#: personal/connectivity/pureftpd/pureftpd.tpl:17 +msgid "Bandwidth" +msgstr "Bandbreite" + +#: personal/connectivity/pureftpd/pureftpd.tpl:26 +#: personal/connectivity/pureftpd/pureftpd.tpl:34 +msgid "kb/s" +msgstr "kb/s" + +#: personal/connectivity/pureftpd/pureftpd.tpl:45 +msgid "Quota" +msgstr "Kontingent" + +#: personal/connectivity/pureftpd/pureftpd.tpl:49 +msgid "Files" +msgstr "Dateien" + +#: personal/connectivity/pureftpd/pureftpd.tpl:57 +msgid "Size" +msgstr "Größe" + +#: personal/connectivity/pureftpd/pureftpd.tpl:62 +msgid "MB" +msgstr "MB" + +#: personal/connectivity/pureftpd/pureftpd.tpl:73 +msgid "Ratio" +msgstr "Verhältnis" + +#: personal/connectivity/pureftpd/pureftpd.tpl:77 +msgid "Uploaded / downloaded files" +msgstr "Hoch- / heruntergeladene Dateien" + +#: personal/connectivity/pureftpd/pureftpd.tpl:95 +msgid "Miscellaneous" +msgstr "Verschiedenes" + +#: personal/connectivity/pureftpd/pureftpd.tpl:100 +msgid "Check to disable FTP Access" +msgstr "Wählen Sie diese Option, um FTP-Zugriff zu deaktivieren" + +#: personal/connectivity/pureftpd/pureftpd.tpl:102 +msgid "Temporary disable FTP access" +msgstr "Temporäres Abschalten des FTP-Zugriffs" diff --git a/trunk/gosa-plugins/pureftpd/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pureftpd/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ceb8de1d3 --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,173 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:6 +msgid "FTP" +msgstr "FTP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:7 +msgid "This does something" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:139 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:241 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:191 +#: personal/connectivity/pureftpd/pureftpd.tpl:21 +msgid "Upload bandwidth" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:194 +#: personal/connectivity/pureftpd/pureftpd.tpl:29 +msgid "Download bandwidth" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:198 +#, fuzzy +msgid "Quota file" +msgstr "Cuota de ficheros" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:201 +#, fuzzy +msgid "Quota size" +msgstr "Cuota de ficheros" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:204 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:272 +msgid "Upload ratio" +msgstr "Relación de subida" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:207 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:274 +msgid "Download ratio" +msgstr "Relación de descarga" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:261 +msgid "Ftp" +msgstr "Ftp" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +msgid "Pure ftp account" +msgstr "Cuenta Pure ftp" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:266 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:271 +msgid "Quota files" +msgstr "Cuota de ficheros" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:273 +msgid "Quota MBytes" +msgstr "Cuota en Mbytes" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:275 +msgid "Upload bandwith" +msgstr "Ancho de banda de subida" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:276 +msgid "Download bandwith" +msgstr "Ancho de banda de descarga" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:277 +msgid "Status" +msgstr "Estado" + +#: personal/connectivity/pureftpd/pureftpd.tpl:6 +msgid "FTP account" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:17 +msgid "Bandwidth" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:26 +#: personal/connectivity/pureftpd/pureftpd.tpl:34 +msgid "kb/s" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:45 +msgid "Quota" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:49 +msgid "Files" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:57 +msgid "Size" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:62 +msgid "MB" +msgstr "Mb" + +#: personal/connectivity/pureftpd/pureftpd.tpl:73 +msgid "Ratio" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:77 +msgid "Uploaded / downloaded files" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:95 +msgid "Miscellaneous" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:100 +msgid "Check to disable FTP Access" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:102 +msgid "Temporary disable FTP access" +msgstr "" + +#~ msgid "Removing of user/pureftpd account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la eliminación de la cuenta de usuario/pureftpd con dn '%s'." + +#~ msgid "Value specified as 'Upload ratio' is not valid." +#~ msgstr "El valor especificado en 'Relación de subida'no es válido." + +#~ msgid "Saving of user/pureftpd account with dn '%s' failed." +#~ msgstr "" +#~ "Ha fallado la eliminación de la cuenta de usuario/pureftpd con dn '%s'." + +#~ msgid "Value specified as 'Upload bandwidth' is not valid." +#~ msgstr "El valor especificado en 'Ancho de Banda de subida' no es válido." + +#~ msgid "Value specified as 'Download bandwidth' is not valid." +#~ msgstr "El valor especificado en 'Ancho de Banda de descarga' no es válido." + +#~ msgid "Value specified as 'Quota files' is not valid." +#~ msgstr "El valor especificado como 'Cuota de Archivos' no es válido." + +#~ msgid "Value specified as 'Quota size' is not valid." +#~ msgstr "El valor especificado como 'Cuota de Tamaño' no es válido." + +#~ msgid "Value specified as 'Download ratio' is not valid." +#~ msgstr "El valor especificado en 'Relación de descarga' no es válido." diff --git a/trunk/gosa-plugins/pureftpd/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pureftpd/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b913f7564 --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,141 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-07-24 01:32+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:6 +msgid "FTP" +msgstr "FTP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:7 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:139 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:241 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:191 +#: personal/connectivity/pureftpd/pureftpd.tpl:21 +msgid "Upload bandwidth" +msgstr "Bande passante montante" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:194 +#: personal/connectivity/pureftpd/pureftpd.tpl:29 +msgid "Download bandwidth" +msgstr "Bande passante descendante" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:198 +msgid "Quota file" +msgstr "Taille du nombre de fichiers" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:201 +msgid "Quota size" +msgstr "Taille du Quota" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:204 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:272 +msgid "Upload ratio" +msgstr "Ratio de Téléchargerment (montée)" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:207 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:274 +msgid "Download ratio" +msgstr "Ratio de téléchargement (descente)" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:261 +msgid "Ftp" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +msgid "Pure ftp account" +msgstr "Compte Pure ftp" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +msgid "Connectivity addon" +msgstr "Connectivité" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:266 +msgid "My account" +msgstr "Mon Compte" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:271 +msgid "Quota files" +msgstr "Taille du Quota pour les fichiers" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:273 +msgid "Quota MBytes" +msgstr "Taille du Quota en MBytes" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:275 +msgid "Upload bandwith" +msgstr "Bande passante montante" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:276 +msgid "Download bandwith" +msgstr "Bande passante descendante" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:277 +msgid "Status" +msgstr "Statut" + +#: personal/connectivity/pureftpd/pureftpd.tpl:6 +msgid "FTP account" +msgstr "Compte FTP" + +#: personal/connectivity/pureftpd/pureftpd.tpl:17 +msgid "Bandwidth" +msgstr "Bande passante" + +#: personal/connectivity/pureftpd/pureftpd.tpl:26 +#: personal/connectivity/pureftpd/pureftpd.tpl:34 +msgid "kb/s" +msgstr "kb/sec" + +#: personal/connectivity/pureftpd/pureftpd.tpl:45 +msgid "Quota" +msgstr "Quota" + +#: personal/connectivity/pureftpd/pureftpd.tpl:49 +msgid "Files" +msgstr "Fichiers" + +#: personal/connectivity/pureftpd/pureftpd.tpl:57 +msgid "Size" +msgstr "Taille" + +#: personal/connectivity/pureftpd/pureftpd.tpl:62 +msgid "MB" +msgstr "MB" + +#: personal/connectivity/pureftpd/pureftpd.tpl:73 +msgid "Ratio" +msgstr "Ratio" + +#: personal/connectivity/pureftpd/pureftpd.tpl:77 +msgid "Uploaded / downloaded files" +msgstr "Données envoyées / reçues" + +#: personal/connectivity/pureftpd/pureftpd.tpl:95 +msgid "Miscellaneous" +msgstr "Divers" + +#: personal/connectivity/pureftpd/pureftpd.tpl:100 +msgid "Check to disable FTP Access" +msgstr "Cliquez ici pour désactivez l'accès FTP" + +#: personal/connectivity/pureftpd/pureftpd.tpl:102 +msgid "Temporary disable FTP access" +msgstr "Désactiver temporairement l'accès FTP" diff --git a/trunk/gosa-plugins/pureftpd/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pureftpd/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..37e175384 --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,178 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:6 +msgid "FTP" +msgstr "FTP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:7 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:139 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:241 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:191 +#: personal/connectivity/pureftpd/pureftpd.tpl:21 +msgid "Upload bandwidth" +msgstr "Banda di upload" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:194 +#: personal/connectivity/pureftpd/pureftpd.tpl:29 +msgid "Download bandwidth" +msgstr "Banda di download" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:198 +#, fuzzy +msgid "Quota file" +msgstr "Dimensione quota" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:201 +#, fuzzy +msgid "Quota size" +msgstr "Dimensione quota" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:204 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:272 +#, fuzzy +msgid "Upload ratio" +msgstr "Banda di upload" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:207 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:274 +#, fuzzy +msgid "Download ratio" +msgstr "Scarica il file di configurazione" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:261 +#, fuzzy +msgid "Ftp" +msgstr "Tipo" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +#, fuzzy +msgid "Pure ftp account" +msgstr "Crea estensioni FAX" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:266 +msgid "My account" +msgstr "Identità" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:271 +#, fuzzy +msgid "Quota files" +msgstr "Dimensione quota" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:273 +#, fuzzy +msgid "Quota MBytes" +msgstr "Dimensione quota" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:275 +#, fuzzy +msgid "Upload bandwith" +msgstr "Banda di upload" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:276 +#, fuzzy +msgid "Download bandwith" +msgstr "Banda di download" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:277 +msgid "Status" +msgstr "Stato" + +#: personal/connectivity/pureftpd/pureftpd.tpl:6 +msgid "FTP account" +msgstr "Estenzioni FTP" + +#: personal/connectivity/pureftpd/pureftpd.tpl:17 +msgid "Bandwidth" +msgstr "Banda" + +#: personal/connectivity/pureftpd/pureftpd.tpl:26 +#: personal/connectivity/pureftpd/pureftpd.tpl:34 +msgid "kb/s" +msgstr "kb/s" + +#: personal/connectivity/pureftpd/pureftpd.tpl:45 +msgid "Quota" +msgstr "Quota" + +#: personal/connectivity/pureftpd/pureftpd.tpl:49 +msgid "Files" +msgstr "File" + +#: personal/connectivity/pureftpd/pureftpd.tpl:57 +msgid "Size" +msgstr "Dimensione" + +#: personal/connectivity/pureftpd/pureftpd.tpl:62 +msgid "MB" +msgstr "Mb" + +#: personal/connectivity/pureftpd/pureftpd.tpl:73 +msgid "Ratio" +msgstr "Rapporto" + +#: personal/connectivity/pureftpd/pureftpd.tpl:77 +msgid "Uploaded / downloaded files" +msgstr "File in upload / File in download" + +#: personal/connectivity/pureftpd/pureftpd.tpl:95 +msgid "Miscellaneous" +msgstr "Misc" + +#: personal/connectivity/pureftpd/pureftpd.tpl:100 +msgid "Check to disable FTP Access" +msgstr "Seleziona per disabilitale l'accesso FTP" + +#: personal/connectivity/pureftpd/pureftpd.tpl:102 +msgid "Temporary disable FTP access" +msgstr "Disabilita temporaneamente l'accesso FTP" + +#, fuzzy +#~ msgid "Removing of user/pureftpd account with dn '%s' failed." +#~ msgstr "Elimina estensioni telefoniche" + +#, fuzzy +#~ msgid "Value specified as 'Upload ratio' is not valid." +#~ msgstr "Il valore specificato per l'UID non è valido." + +#, fuzzy +#~ msgid "Saving of user/pureftpd account with dn '%s' failed." +#~ msgstr "Elimina estensioni telefoniche" + +#, fuzzy +#~ msgid "Value specified as 'Quota files' is not valid." +#~ msgstr "Il valore specificato per l'UID non è valido." + +#, fuzzy +#~ msgid "Value specified as 'Quota size' is not valid." +#~ msgstr "Il valore di 'Dimensione quota' non è valido" + +#, fuzzy +#~ msgid "Value specified as 'Download ratio' is not valid." +#~ msgstr "Il valore specificato per il GID non è valido." diff --git a/trunk/gosa-plugins/pureftpd/locale/messages.po b/trunk/gosa-plugins/pureftpd/locale/messages.po new file mode 100644 index 000000000..c48d02113 --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/locale/messages.po @@ -0,0 +1,143 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:6 +msgid "FTP" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:7 +msgid "This does something" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:139 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:241 +msgid "LDAP error" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:191 +#: personal/connectivity/pureftpd/pureftpd.tpl:21 +msgid "Upload bandwidth" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:194 +#: personal/connectivity/pureftpd/pureftpd.tpl:29 +msgid "Download bandwidth" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:198 +msgid "Quota file" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:201 +msgid "Quota size" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:204 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:272 +msgid "Upload ratio" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:207 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:274 +msgid "Download ratio" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:261 +msgid "Ftp" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +msgid "Pure ftp account" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:266 +msgid "My account" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:271 +msgid "Quota files" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:273 +msgid "Quota MBytes" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:275 +msgid "Upload bandwith" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:276 +msgid "Download bandwith" +msgstr "" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:277 +msgid "Status" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:6 +msgid "FTP account" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:17 +msgid "Bandwidth" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:26 +#: personal/connectivity/pureftpd/pureftpd.tpl:34 +msgid "kb/s" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:45 +msgid "Quota" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:49 +msgid "Files" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:57 +msgid "Size" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:62 +msgid "MB" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:73 +msgid "Ratio" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:77 +msgid "Uploaded / downloaded files" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:95 +msgid "Miscellaneous" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:100 +msgid "Check to disable FTP Access" +msgstr "" + +#: personal/connectivity/pureftpd/pureftpd.tpl:102 +msgid "Temporary disable FTP access" +msgstr "" diff --git a/trunk/gosa-plugins/pureftpd/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pureftpd/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..49328e7a8 --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,188 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:6 +msgid "FTP" +msgstr "Ftp" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:7 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:139 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:241 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:191 +#: personal/connectivity/pureftpd/pureftpd.tpl:21 +msgid "Upload bandwidth" +msgstr "Verstuur bandbreedte" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:194 +#: personal/connectivity/pureftpd/pureftpd.tpl:29 +msgid "Download bandwidth" +msgstr "Ontvangst bandbreedte" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:198 +#, fuzzy +msgid "Quota file" +msgstr "Quota grootte" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:201 +#, fuzzy +msgid "Quota size" +msgstr "Quota grootte" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:204 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:272 +#, fuzzy +msgid "Upload ratio" +msgstr "Uploaden" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:207 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:274 +#, fuzzy +msgid "Download ratio" +msgstr "Systeem configuratie" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:261 +#, fuzzy +msgid "Ftp" +msgstr "FS type" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +#, fuzzy +msgid "Pure ftp account" +msgstr "Fax account aanmaken" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +#, fuzzy +msgid "Connectivity addon" +msgstr "Verbindingen" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:266 +msgid "My account" +msgstr "Mijn account" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:271 +#, fuzzy +msgid "Quota files" +msgstr "Quota grootte" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:273 +#, fuzzy +msgid "Quota MBytes" +msgstr "Quota grootte" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:275 +#, fuzzy +msgid "Upload bandwith" +msgstr "Verstuur bandbreedte" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:276 +#, fuzzy +msgid "Download bandwith" +msgstr "Ontvangst bandbreedte" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:277 +msgid "Status" +msgstr "Status" + +#: personal/connectivity/pureftpd/pureftpd.tpl:6 +msgid "FTP account" +msgstr "FTP account" + +#: personal/connectivity/pureftpd/pureftpd.tpl:17 +msgid "Bandwidth" +msgstr "Bandbreedte" + +#: personal/connectivity/pureftpd/pureftpd.tpl:26 +#: personal/connectivity/pureftpd/pureftpd.tpl:34 +msgid "kb/s" +msgstr "kb/sec" + +#: personal/connectivity/pureftpd/pureftpd.tpl:45 +msgid "Quota" +msgstr "Quota" + +#: personal/connectivity/pureftpd/pureftpd.tpl:49 +msgid "Files" +msgstr "Bestanden" + +#: personal/connectivity/pureftpd/pureftpd.tpl:57 +msgid "Size" +msgstr "Grootte" + +#: personal/connectivity/pureftpd/pureftpd.tpl:62 +msgid "MB" +msgstr "MB" + +#: personal/connectivity/pureftpd/pureftpd.tpl:73 +msgid "Ratio" +msgstr "Verhouding" + +#: personal/connectivity/pureftpd/pureftpd.tpl:77 +msgid "Uploaded / downloaded files" +msgstr "Verstuurde / Ontvangen bestanden" + +#: personal/connectivity/pureftpd/pureftpd.tpl:95 +msgid "Miscellaneous" +msgstr "Terminal Service diverse" + +#: personal/connectivity/pureftpd/pureftpd.tpl:100 +msgid "Check to disable FTP Access" +msgstr "Selecteer om Ftp toegang uit te schakelen" + +#: personal/connectivity/pureftpd/pureftpd.tpl:102 +msgid "Temporary disable FTP access" +msgstr "Schakel FTP toegang tijdelijk uit" + +#, fuzzy +#~ msgid "Removing of user/pureftpd account with dn '%s' failed." +#~ msgstr "Het verwijderen van het pureftpd account is mislukt" + +#, fuzzy +#~ msgid "Value specified as 'Upload ratio' is not valid." +#~ msgstr "De opgegeven waarde voor 'Verstuur Bandbreedte' is niet geldig." + +#, fuzzy +#~ msgid "Saving of user/pureftpd account with dn '%s' failed." +#~ msgstr "Het opslaan van het pureftpd account is mislukt" + +#~ msgid "Value specified as 'Upload bandwidth' is not valid." +#~ msgstr "De opgegeven waarde voor 'Verstuur Bandbreedte' is niet geldig." + +#~ msgid "Value specified as 'Download bandwidth' is not valid." +#~ msgstr "De opgegeven waarde voor 'Ontvangst bandbreedte' is niet geldig." + +#, fuzzy +#~ msgid "Value specified as 'Quota files' is not valid." +#~ msgstr "De opgegeven waarde voor 'Bestanden' is niet geldig." + +#, fuzzy +#~ msgid "Value specified as 'Quota size' is not valid." +#~ msgstr "De opgegeven waarde voor 'Grootte' is niet geldig." + +#, fuzzy +#~ msgid "Value specified as 'Download ratio' is not valid." +#~ msgstr "De opgegeven waarde voor 'Ontvangst bandbreedte' is niet geldig." diff --git a/trunk/gosa-plugins/pureftpd/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pureftpd/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..10d44e750 --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,169 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:6 +msgid "FTP" +msgstr "FTP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:7 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:139 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:241 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:191 +#: personal/connectivity/pureftpd/pureftpd.tpl:21 +msgid "Upload bandwidth" +msgstr "Przepustowość wysyłania" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:194 +#: personal/connectivity/pureftpd/pureftpd.tpl:29 +msgid "Download bandwidth" +msgstr "Przepustowość ściągania" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:198 +#, fuzzy +msgid "Quota file" +msgstr " Quota pliki" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:201 +#, fuzzy +msgid "Quota size" +msgstr " Quota pliki" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:204 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:272 +msgid "Upload ratio" +msgstr "Przepustowość wysyłania" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:207 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:274 +msgid "Download ratio" +msgstr "Skala ściągania" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:261 +msgid "Ftp" +msgstr "FTP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +msgid "Pure ftp account" +msgstr "Konto Pure-ftp" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:266 +msgid "My account" +msgstr "Moje konto " + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:271 +msgid "Quota files" +msgstr " Quota pliki" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:273 +msgid "Quota MBytes" +msgstr "Quota rozmiaru (MB)" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:275 +msgid "Upload bandwith" +msgstr "Przepustowość wysyłania" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:276 +msgid "Download bandwith" +msgstr "Przepustowość ściągania" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:277 +msgid "Status" +msgstr "Status" + +#: personal/connectivity/pureftpd/pureftpd.tpl:6 +msgid "FTP account" +msgstr "Konto FTP" + +#: personal/connectivity/pureftpd/pureftpd.tpl:17 +msgid "Bandwidth" +msgstr "Przepustowość" + +#: personal/connectivity/pureftpd/pureftpd.tpl:26 +#: personal/connectivity/pureftpd/pureftpd.tpl:34 +msgid "kb/s" +msgstr "kb/s" + +#: personal/connectivity/pureftpd/pureftpd.tpl:45 +msgid "Quota" +msgstr "Quota" + +#: personal/connectivity/pureftpd/pureftpd.tpl:49 +msgid "Files" +msgstr "Pliko" + +#: personal/connectivity/pureftpd/pureftpd.tpl:57 +msgid "Size" +msgstr "Rozmiar" + +#: personal/connectivity/pureftpd/pureftpd.tpl:62 +msgid "MB" +msgstr "MB" + +#: personal/connectivity/pureftpd/pureftpd.tpl:73 +msgid "Ratio" +msgstr "Proporcja" + +#: personal/connectivity/pureftpd/pureftpd.tpl:77 +msgid "Uploaded / downloaded files" +msgstr "Pliki wysłane / ściągnięte" + +#: personal/connectivity/pureftpd/pureftpd.tpl:95 +msgid "Miscellaneous" +msgstr "Różne" + +#: personal/connectivity/pureftpd/pureftpd.tpl:100 +msgid "Check to disable FTP Access" +msgstr "Zaznacz aby wyłączyć dostęp do FTP" + +#: personal/connectivity/pureftpd/pureftpd.tpl:102 +msgid "Temporary disable FTP access" +msgstr "Tymczasowo wyłącz dostęp do FTP" + +#~ msgid "Removing of user/pureftpd account with dn '%s' failed." +#~ msgstr "Usuwanie konta pureftpd z dn '%s' nieudane." + +#~ msgid "Value specified as 'Upload ratio' is not valid." +#~ msgstr "Wartość podana jako 'Skala wysyłania' jest nieprawidłowa" + +#~ msgid "Saving of user/pureftpd account with dn '%s' failed." +#~ msgstr "Zapisywanie konta pureftpd z dn '%s' nieudane." + +#~ msgid "Value specified as 'Upload bandwidth' is not valid." +#~ msgstr "Wartość podana jako 'Przepustowość wysyłania' jest nieprawidłowa" + +#~ msgid "Value specified as 'Download bandwidth' is not valid." +#~ msgstr "Wartość podana jako 'Przepustowość ściągania' jest nieprawidłowa." + +#~ msgid "Value specified as 'Quota files' is not valid." +#~ msgstr "Wartość podana jako 'Quota Plików' jest nieprawidłowa" + +#~ msgid "Value specified as 'Quota size' is not valid." +#~ msgstr "Wartość podana jako 'Quota rozmiaru' jest nieprawidłowa." + +#~ msgid "Value specified as 'Download ratio' is not valid." +#~ msgstr "Wartość podana jako 'Skala ściągania' jest nieprawidłowa." diff --git a/trunk/gosa-plugins/pureftpd/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pureftpd/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e8fde16f9 --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,183 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:6 +msgid "FTP" +msgstr "FTP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:7 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:139 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:241 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:191 +#: personal/connectivity/pureftpd/pureftpd.tpl:21 +msgid "Upload bandwidth" +msgstr "Пропускная способность (на сервер)" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:194 +#: personal/connectivity/pureftpd/pureftpd.tpl:29 +msgid "Download bandwidth" +msgstr "Пропускная способность (с сервера)" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:198 +#, fuzzy +msgid "Quota file" +msgstr "Размер квоты" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:201 +#, fuzzy +msgid "Quota size" +msgstr "Размер квоты" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:204 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:272 +#, fuzzy +msgid "Upload ratio" +msgstr "Загрузка процессора" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:207 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:274 +#, fuzzy +msgid "Download ratio" +msgstr "Системная информация" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:261 +#, fuzzy +msgid "Ftp" +msgstr "Тип" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +#, fuzzy +msgid "Pure ftp account" +msgstr "Создать настройки факса" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:266 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:271 +#, fuzzy +msgid "Quota files" +msgstr "Размер квоты" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:273 +#, fuzzy +msgid "Quota MBytes" +msgstr "Размер квоты" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:275 +#, fuzzy +msgid "Upload bandwith" +msgstr "Пропускная способность (на сервер)" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:276 +#, fuzzy +msgid "Download bandwith" +msgstr "Пропускная способность (с сервера)" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:277 +msgid "Status" +msgstr "Состояние" + +#: personal/connectivity/pureftpd/pureftpd.tpl:6 +msgid "FTP account" +msgstr "Аккаунт FTP" + +#: personal/connectivity/pureftpd/pureftpd.tpl:17 +msgid "Bandwidth" +msgstr "Пропускная способность" + +#: personal/connectivity/pureftpd/pureftpd.tpl:26 +#: personal/connectivity/pureftpd/pureftpd.tpl:34 +msgid "kb/s" +msgstr "Кб/с" + +#: personal/connectivity/pureftpd/pureftpd.tpl:45 +msgid "Quota" +msgstr "Квота" + +#: personal/connectivity/pureftpd/pureftpd.tpl:49 +msgid "Files" +msgstr "Файлы" + +#: personal/connectivity/pureftpd/pureftpd.tpl:57 +msgid "Size" +msgstr "Размер" + +#: personal/connectivity/pureftpd/pureftpd.tpl:62 +msgid "MB" +msgstr "Мб" + +#: personal/connectivity/pureftpd/pureftpd.tpl:73 +msgid "Ratio" +msgstr "Отношение" + +#: personal/connectivity/pureftpd/pureftpd.tpl:77 +msgid "Uploaded / downloaded files" +msgstr "Загрузка на сервер / с сервера" + +#: personal/connectivity/pureftpd/pureftpd.tpl:95 +msgid "Miscellaneous" +msgstr "Разное" + +#: personal/connectivity/pureftpd/pureftpd.tpl:100 +msgid "Check to disable FTP Access" +msgstr "Отметьте, чтобы отключить доступ к FTP" + +#: personal/connectivity/pureftpd/pureftpd.tpl:102 +msgid "Temporary disable FTP access" +msgstr "Временно отключить доступ к FTP" + +#, fuzzy +#~ msgid "Removing of user/pureftpd account with dn '%s' failed." +#~ msgstr "Удалить телефонный аккаунт" + +#, fuzzy +#~ msgid "Value specified as 'Upload ratio' is not valid." +#~ msgstr "Значение поля \"Пропускная способность (на сервер)\" некорректно." + +#, fuzzy +#~ msgid "Saving of user/pureftpd account with dn '%s' failed." +#~ msgstr "Удалить телефонный аккаунт" + +#~ msgid "Value specified as 'Upload bandwidth' is not valid." +#~ msgstr "Значение поля \"Пропускная способность (на сервер)\" некорректно." + +#~ msgid "Value specified as 'Download bandwidth' is not valid." +#~ msgstr "Значение поля \"Пропускная способность (с сервера)\" некорректно." + +#, fuzzy +#~ msgid "Value specified as 'Quota files' is not valid." +#~ msgstr "Значение поля \"Размер\" некорректно." + +#, fuzzy +#~ msgid "Value specified as 'Quota size' is not valid." +#~ msgstr "Значение поля \"Размер\" некорректно." + +#, fuzzy +#~ msgid "Value specified as 'Download ratio' is not valid." +#~ msgstr "Значение поля \"Пропускная способность (с сервера)\" некорректно." diff --git a/trunk/gosa-plugins/pureftpd/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/pureftpd/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..3da29998c --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,186 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:6 +msgid "FTP" +msgstr "FTP" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:7 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:139 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:241 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:191 +#: personal/connectivity/pureftpd/pureftpd.tpl:21 +msgid "Upload bandwidth" +msgstr "上传带宽" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:194 +#: personal/connectivity/pureftpd/pureftpd.tpl:29 +msgid "Download bandwidth" +msgstr "下载带宽" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:198 +#, fuzzy +msgid "Quota file" +msgstr "Quota 大小" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:201 +#, fuzzy +msgid "Quota size" +msgstr "Quota 大小" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:204 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:272 +#, fuzzy +msgid "Upload ratio" +msgstr "上传" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:207 +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:274 +#, fuzzy +msgid "Download ratio" +msgstr "下载配置" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:261 +#, fuzzy +msgid "Ftp" +msgstr "文件系统类型" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +#, fuzzy +msgid "Pure ftp account" +msgstr "创建传真账号" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:262 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:266 +msgid "My account" +msgstr "我的账号" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:271 +#, fuzzy +msgid "Quota files" +msgstr "Quota 大小" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:273 +#, fuzzy +msgid "Quota MBytes" +msgstr "Quota 大小" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:275 +#, fuzzy +msgid "Upload bandwith" +msgstr "上传带宽" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:276 +#, fuzzy +msgid "Download bandwith" +msgstr "下载带宽" + +#: personal/connectivity/pureftpd/class_pureftpdAccount.inc:277 +msgid "Status" +msgstr "状态" + +#: personal/connectivity/pureftpd/pureftpd.tpl:6 +msgid "FTP account" +msgstr "FTP 账号" + +#: personal/connectivity/pureftpd/pureftpd.tpl:17 +msgid "Bandwidth" +msgstr "带宽" + +#: personal/connectivity/pureftpd/pureftpd.tpl:26 +#: personal/connectivity/pureftpd/pureftpd.tpl:34 +msgid "kb/s" +msgstr "kb/s" + +#: personal/connectivity/pureftpd/pureftpd.tpl:45 +msgid "Quota" +msgstr "Quota" + +#: personal/connectivity/pureftpd/pureftpd.tpl:49 +msgid "Files" +msgstr "文件" + +#: personal/connectivity/pureftpd/pureftpd.tpl:57 +msgid "Size" +msgstr "大小" + +#: personal/connectivity/pureftpd/pureftpd.tpl:62 +msgid "MB" +msgstr "MB" + +#: personal/connectivity/pureftpd/pureftpd.tpl:73 +msgid "Ratio" +msgstr "比率" + +#: personal/connectivity/pureftpd/pureftpd.tpl:77 +msgid "Uploaded / downloaded files" +msgstr "上传/下载文件" + +#: personal/connectivity/pureftpd/pureftpd.tpl:95 +msgid "Miscellaneous" +msgstr "杂项" + +#: personal/connectivity/pureftpd/pureftpd.tpl:100 +msgid "Check to disable FTP Access" +msgstr "检查禁用 FTP 访问" + +#: personal/connectivity/pureftpd/pureftpd.tpl:102 +msgid "Temporary disable FTP access" +msgstr "临时禁用 FTP 访问" + +#, fuzzy +#~ msgid "Removing of user/pureftpd account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Value specified as 'Upload ratio' is not valid." +#~ msgstr "提供的“上传带宽”值无效。" + +#, fuzzy +#~ msgid "Saving of user/pureftpd account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#~ msgid "Value specified as 'Upload bandwidth' is not valid." +#~ msgstr "提供的“上传带宽”值无效。" + +#~ msgid "Value specified as 'Download bandwidth' is not valid." +#~ msgstr "提供的“下载带宽”值无效。" + +#, fuzzy +#~ msgid "Value specified as 'Quota files' is not valid." +#~ msgstr "提供的“文件”值无效。" + +#, fuzzy +#~ msgid "Value specified as 'Quota size' is not valid." +#~ msgstr "提供的“大小”值无效。" + +#, fuzzy +#~ msgid "Value specified as 'Download ratio' is not valid." +#~ msgstr "提供的“下载带宽”值无效。" diff --git a/trunk/gosa-plugins/pureftpd/personal/connectivity/pureftpd/class_pureftpdAccount.inc b/trunk/gosa-plugins/pureftpd/personal/connectivity/pureftpd/class_pureftpdAccount.inc new file mode 100644 index 000000000..3410cedfa --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/personal/connectivity/pureftpd/class_pureftpdAccount.inc @@ -0,0 +1,328 @@ +attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + } + + function execute() + { + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Show tab dialog headers */ + $display= ""; + + /* Show main page */ + $smarty= get_smarty(); + + /* Load attributes */ + foreach($this->attributes as $val){ + $smarty->assign("$val", $this->$val); + } + + + $tmp = $this->plInfo(); + $changeState = ""; + if($this->multiple_support_active){ + + /* We do not need the attribute grey out in multiple edit */ + foreach($tmp['plProvidedAcls'] as $key => $desc){ + $smarty->assign($key."ACL", $this->getacl($key,$this->ReadOnly)); + } + if ($this->is_account){ + $smarty->assign("pureftpdState", "checked"); + }else{ + $smarty->assign("pureftpdState", ""); + } + $smarty->assign("fstate", ""); + $smarty->assign("changeState",""); + + }else{ + foreach($tmp['plProvidedAcls'] as $key => $desc){ + $smarty->assign($key."ACL", $this->getacl($key,$this->ReadOnly)); + $smarty->assign($key."_W", $this->acl_is_writeable($key,$this->ReadOnly)); + + if($this->acl_is_writeable($key)){ + $changeState.= " changeState('".$key."'); \n"; + } + } + $smarty->assign("changeState",$changeState); + + + $smarty->assign("fstate", ""); + if ($this->is_account){ + $smarty->assign("pureftpdState", "checked"); + $smarty->assign("fstate", ""); + } else { + $smarty->assign("pureftpdState", ""); + if(session::get('js')==1){ + if($this->acl!="#none#") + $smarty->assign("fstate", "disabled"); + }else{ + $smarty->assign("fstate", ""); + } + } + } + + foreach($this->attributes as $attr){ + if(in_array($attr,$this->multi_boxes)){ + $smarty->assign("use_".$attr,TRUE); + }else{ + $smarty->assign("use_".$attr,FALSE); + } + } + $smarty->assign("use_pureftpd",in_array("pureftpd",$this->multi_boxes)); + $smarty->assign("multiple_support",$this->multiple_support_active); + $smarty->assign("FTPStatus", ($this->FTPStatus == "disabled") ? "checked" : ""); + $smarty->assign('pureftpdACL', $this->getacl("",$this->ReadOnly)); + $display.= $smarty->fetch (get_template_path('pureftpd.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if ((!$this->initially_was_account) || (!$this->acl_is_removeable())){ + return; + } + + plugin::remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove',array("uid" => $this->uid)); + } + + + /* Save data to object */ + function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + if (isset($_POST['pureftpd'])){ + if (!$this->is_account && $_POST['pureftpd'] == "B"){ + $this->is_account= TRUE; + } + } else { + $this->is_account= FALSE; + } + + plugin::save_object(); + + $old= $this->FTPStatus; + if (isset($_POST["FTPStatus"])){ + $this->FTPStatus = "disabled"; + } else { + $this->FTPStatus = "enabled"; + } + $this->is_modified= ($old != $this->FTPStatus)?TRUE:$this->is_modified; + + /* Ensure that these vars are numeric. Values starting with 0 like '0123' cause ldap errors */ + foreach(array("FTPQuotaFiles","FTPQuotaMBytes","FTPUploadRatio","FTPDownloadRatio", + "FTPUploadBandwidth","FTPDownloadBandwidth") as $testVar){ + if(!empty($this->$testVar)){ + $this->$testVar = (int) ($this->$testVar); + } + } + } + } + + + /* Check values */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Check for positive integer values */ + if ($this->is_account){ + + if($this->acl_is_writeable("FTPUploadBandwidth") && preg_match("/[^0-9]/",$this->FTPUploadBandwidth)){ + $message[]= msgPool::invalid(_("Upload bandwidth"), $this->uid, "/^[0-9]+$/"); + } + if($this->acl_is_writeable("FTPDownloadBandwidth") && preg_match("/[^0-9]/",$this->FTPDownloadBandwidth)){ + $message[]= msgPool::invalid(_("Download bandwidth"), $this->uid, "/^[0-9]+$/"); + } + + if($this->acl_is_writeable("FTPQuotaFiles") && preg_match("/[^0-9]/",$this->FTPQuotaFiles)){ + $message[]= msgPool::invalid(_("Quota file"), $this->uid, "/^[0-9]+$/"); + } + if($this->acl_is_writeable("FTPQuotaMBytes") && preg_match("/[^0-9]/",$this->FTPQuotaMBytes)){ + $message[]= msgPool::invalid(_("Quota size"), $this->uid, "/^[0-9]+$/"); + } + if($this->acl_is_writeable("FTPUploadRatio") && preg_match("/[^0-9]/",$this->FTPUploadRatio)){ + $message[]= msgPool::invalid(_("Upload ratio"), $this->uid, "/^[0-9]+$/"); + } + if($this->acl_is_writeable("FTPDownloadRatio") && preg_match("/[^0-9]/",$this->FTPDownloadRatio)){ + $message[]= msgPool::invalid(_("Download ratio"), $this->uid, "/^[0-9]+$/"); + } + } + + return $message; + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $key => $desc){ + if(!$this->acl_is_writeable($key)){ + unset($this->attrs[$key]); + } + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + + } + + + /* Return plugin informations for acl handling + #FIME There possibly some attributes that can be combined to one acl. */ + static function plInfo() + { + return (array( + "plShortName" => _("Ftp"), + "plDescription" => _("Pure ftp account")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 22, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + "FTPQuotaFiles" => _("Quota files"), + "FTPUploadRatio" => _("Upload ratio"), + "FTPQuotaMBytes" => _("Quota MBytes"), + "FTPDownloadRatio" => _("Download ratio"), + "FTPUploadBandwidth" => _("Upload bandwith"), + "FTPDownloadBandwidth" => _("Download bandwith"), + "FTPStatus" => _("Status")) + )); + } + + function multiple_save_object() + { + if (isset($_POST['connectivityTab'])){ + plugin::multiple_save_object(); + if(isset($_POST['use_pureftpd'])){ + $this->multi_boxes[] = "pureftpd"; + } + $this->save_object(); + } + } + + function get_multi_init_values() + { + $ret = plugin::get_multi_init_values(); + $ret['is_account'] = $this->is_account; + return($ret); + } + + function init_multiple_support($attrs,$attr) + { + plugin::init_multiple_support($attrs,$attr); + + if(isset($attrs['is_account'])){ + $this->is_account = $attrs['is_account']; + } + } + + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("pureftpd",$this->multi_boxes)){ + $ret['is_account'] = $this->is_account; + } + return($ret); + } + + function set_multi_edit_values($values) + { + plugin::set_multi_edit_values($values); + if(isset($values['is_account'])){ + $this->is_account = $values['is_account']; + } + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/pureftpd/personal/connectivity/pureftpd/pureftpd.tpl b/trunk/gosa-plugins/pureftpd/personal/connectivity/pureftpd/pureftpd.tpl new file mode 100644 index 000000000..5558f54ad --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/personal/connectivity/pureftpd/pureftpd.tpl @@ -0,0 +1,114 @@ +

    + {render acl=$pureftpdACL checkbox=$multiple_support checked=$use_pureftpd} + + {/render} + {t}FTP account{/t} +

    + + + + + + + + + + + + + +
    + + + + + + + + + + + + +
    + {t}Bandwidth{/t} +
    {t}Upload bandwidth{/t} +{render acl=$FTPUploadBandwidthACL checkbox=$multiple_support checked=$use_FTPUploadBandwidth} + +{/render} + {t}kb/s{/t}
    {t}Download bandwidth{/t} +{render acl=$FTPDownloadBandwidthACL checkbox=$multiple_support checked=$use_FTPDownloadBandwidth} + +{/render} + {t}kb/s{/t}
    +
    +   + + + + + + + + + + + + + +
    + {t}Quota{/t} +
    {t}Files{/t} +{render acl=$FTPQuotaFilesACL checkbox=$multiple_support checked=$use_FTPQuotaFiles} + +{/render} +
    {t}Size{/t} +{render acl=$FTPQuotaMBytesACL checkbox=$multiple_support checked=$use_FTPQuotaMBytes} + +{/render} + {t}MB{/t} +
    +
    + + + + + + + + +
    + {t}Ratio{/t} +
    {t}Uploaded / downloaded files{/t} + +{render acl=$FTPUploadRatioACL checkbox=$multiple_support checked=$use_FTPUploadRatio} + +{/render} + / +{render acl=$FTPDownloadRatioACL checkbox=$multiple_support checked=$use_FTPDownloadRatio} + +{/render} +
    +
    + + + + + + +
    + {t}Miscellaneous{/t} +
    +{render acl=$FTPStatusACL checkbox=$multiple_support checked=$use_FTPStatus} + +{/render} +{t}Temporary disable FTP access{/t}
    +
    + + + diff --git a/trunk/gosa-plugins/pureftpd/plugin.dsc b/trunk/gosa-plugins/pureftpd/plugin.dsc new file mode 100644 index 000000000..4348070c5 --- /dev/null +++ b/trunk/gosa-plugins/pureftpd/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = pureftpd +description = "PureFTPD connectivity plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = connectivity diff --git a/trunk/gosa-plugins/samba/admin/systems/samba/class_winGeneric.inc b/trunk/gosa-plugins/samba/admin/systems/samba/class_winGeneric.inc new file mode 100644 index 000000000..e88b9ebe5 --- /dev/null +++ b/trunk/gosa-plugins/samba/admin/systems/samba/class_winGeneric.inc @@ -0,0 +1,323 @@ +netConfigDNS = new termDNS($this->config,$this,$this->objectclasses); + $this->netConfigDNS->objectclasses=array("ipHost","ieee802Device"); + $this->netConfigDNS->MACisMust = FALSE; + $this->netConfigDNS->IPisMust = TRUE; + + /* Set base */ + if ($this->dn == "new"){ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + $this->cn= ""; + } else { + $this->base= preg_replace ("/^[^,]+,".preg_quote(get_winstations_ou(), '/')."/", "", $this->dn); + } + + $this->cn= preg_replace("/\\\$\$/","",$this->cn); + + /* Save dn for later references */ + $this->orig_dn= $this->dn; + $this->orig_base= $this->base; + $this->orig_cn= $this->cn; + } + + + function set_acl_base($base) + { + plugin::set_acl_base($base); + $this->netConfigDNS->set_acl_base($base); + } + + + function set_acl_category($cat) + { + plugin::set_acl_category($cat); + $this->netConfigDNS->set_acl_category($cat); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","winworkstation/".get_class($this),$this->dn); + } + + + /* Do we represent a valid phone? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("network")).""; + return($display); + } + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* A new base was selected, check if it is a valid one */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $smarty->assign("bases" , $this->get_allowed_bases()); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + /* Assign attributes */ + foreach ($this->attributes as $attr){ + $smarty->assign("$attr", $this->$attr); + } + + $smarty->assign("base_select", $this->base); + + /* Show main page */ + $str = $this->netConfigDNS->execute(); + if(is_object($this->netConfigDNS->dialog)){ + return($str); + } + $smarty->assign("netconfig", $str); + return($smarty->fetch (get_template_path('wingeneric.tpl', TRUE,dirname(__FILE__)))); + } + + function remove_from_parent() + { + $this->netConfigDNS->remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + $ldap->rmdir($this->dn); + new log("remove","winworkstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + $this->handle_post_events("remove"); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } + } + + + /* Save data to object */ + function save_object() + { + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + $this->netConfigDNS->save_object(); + + /* Set new base if allowed */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + $message= array_merge($message, $this->netConfigDNS->check()); + $this->dn= "cn=".$this->uid.",".get_ou('sambaMachineAccountRDN').$this->base; + + if(!$this->acl_is_createable()){ + $message[]= msgPool::permCreate(); + } + + if ($this->orig_dn != $this->dn){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->base); + $ldap->search ("(cn=".$this->cn.")", array("cn")); + if ($ldap->count() != 0){ + while ($attrs= $ldap->fetch()){ + if(preg_match("/cn=dhcp,/",$attrs['dn'])){ + continue; + } + if ($attrs['dn'] != $this->orig_dn){ + $message[]= msgPool::duplicated(_("Name")); + break; + } + } + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + /* Remove all empty values */ + if ($this->orig_dn == 'new'){ + $attrs= array(); + foreach ($this->attrs as $key => $val){ + if (is_array($val) && count($val) == 0){ + continue; + } + $attrs[$key]= $val; + } + $this->attrs= $attrs; + } + + if(($this->gosaUnitTag) && (!in_array_ics("gosaAdministrativeUnitTag",$this->attrs['objectClass']))){ + $this->attrs['objectClass'][] = "gosaAdministrativeUnitTag"; + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + if ($this->orig_dn == 'new'){ + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + new log("create","winworkstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("add"); + } else { + if ($this->orig_dn != $this->dn){ + $this->move($this->orig_dn, $this->dn); + } + + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + new log("modify","winworkstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("modify"); + } + + $this->netConfigDNS->cn = preg_replace("/\\\$\$/","",$this->cn); + $this->netConfigDNS->save(); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->postcreate(); + } + + /* Return plugin informations for acl handling + #FIXME FAIscript seams to ununsed within this class... */ + static function plInfo() + { + return (array( + "plShortName" => _("Win generic"), + "plDescription" => _("Windows workstation generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("winworkstation" => array("description" => _("Win workstation"), + "objectClass" => "gotoWorkstation")), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "base" => _("Base"), + "description" => _("Description")) + )); + } + + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/samba/admin/systems/samba/tabs_winstation.inc b/trunk/gosa-plugins/samba/admin/systems/samba/tabs_winstation.inc new file mode 100644 index 000000000..a1dc10ed8 --- /dev/null +++ b/trunk/gosa-plugins/samba/admin/systems/samba/tabs_winstation.inc @@ -0,0 +1,45 @@ +addSpecialTabs(); + } + + function save_object($save_current= FALSE) + { + tabs::save_object($save_current); + } + + + function save($ignore_account= FALSE) + { + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + + /* add $ to end of name if mising */ + $baseobject= $this->by_object['wingeneric']; + if(!preg_match("/\\\$\$/",$baseobject->cn)){ + $baseobject->cn .= "$"; + } + + /* Save this system with uid and NOT cn */ + $this->dn= "uid=$baseobject->uid,".get_winstations_ou().$baseobject->base; + $baseobject->dn= $this->dn; + + foreach ($this->by_object as $key => $obj){ + $this->by_object[$key]->dn= $this->dn; + } + + tabs::save(); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/samba/admin/systems/samba/wingeneric.tpl b/trunk/gosa-plugins/samba/admin/systems/samba/wingeneric.tpl new file mode 100644 index 000000000..d7ac659c4 --- /dev/null +++ b/trunk/gosa-plugins/samba/admin/systems/samba/wingeneric.tpl @@ -0,0 +1,56 @@ + + + + + +
    + + + + + + + + + + + + +
    {$must} +{render acl=$cnACL} + +{/render} +
     
    {$must} +{render acl=$baseACL} + +{/render} + +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} +
    +
    + + + + + +
    +{render acl=$descriptionACL} + +{/render} +
    +
    + +

     

    + +{$netconfig} + + + diff --git a/trunk/gosa-plugins/samba/contrib/fix_munged b/trunk/gosa-plugins/samba/contrib/fix_munged new file mode 100755 index 000000000..405d345af --- /dev/null +++ b/trunk/gosa-plugins/samba/contrib/fix_munged @@ -0,0 +1,95 @@ +#!/usr/bin/php + + * + * Copyright (C) 2006 GONICUS GmbH + * + * 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 + * + * Contact information: GONICUS GmbH + * Moehnestrasse 11-17 + * D-59755 Arnsberg + * Germany + * tel: ++49 2932 916 0 + * fax: ++49 2932 916 230 + * email: info@GONICUS.de + * http://www.GONICUS.de + * */ + +/* Modify these settings to your needs */ +$ldap_host= "localhost"; +$ldap_port= "389"; +$ldap_base= "dc=gonicus,dc=de"; +$ldap_admin= "cn=ldapadmin,".$ldap_base; +$ldap_password= "tester"; + +/* Internal Settings */ +$ldap_protocol= "3"; +$filter= "(&(objectClass=sambaSamAccount)(sambaMungedDial=*))"; +$attributes= array("dn","sambaMungedDial"); + +print("This script will try to convert all ldap entries that have the sambaMungedDial-Attribute set, into the new \n". + "format that win2003sp1 and later requires. If an entry is already in the new format, it is not touched. \n". + "BEWARE: This script is not widely tested yet, so use it at your own risk! Be sure to backup your complete LDAP \n". + "before running.\n". + "Do you want to continue (y/n)?\n"); + +$handle= fopen("php://stdin","r"); +$input=(fgets($handle,16)); +fclose($handle); +if(substr(strtolower($input),0,1)!="y") { + exit(1); +} +/* Connect to server */ +$connection= ldap_connect($ldap_host,$ldap_port) + or die ('Could not connect to server '.$ldap_host."\n!"); +ldap_set_option($connection, LDAP_OPT_PROTOCOL_VERSION, $ldap_protocol); +ldap_bind($connection,$ldap_admin,$ldap_password) + or die ('Could not bind to server '.$ldap_host."!\n"); + +$results= ldap_get_entries($connection, ldap_search($connection, $ldap_base, $filter, $attributes)); + +$count= 0; + +if(array_key_exists('count', $results)) { + $count= $results['count']; +} + +if($count > 0) { + print('We found '.$count.' matching '.(($count==1)?'entry':'entries').".\n"); +} + +for($i=0; $i<$count; $i++) { + $entry= $results[$i]; + print('Converting '.$entry['dn'].'...'); + $mungedDial = new sambaMungedDial(); + $mungedDial->load($entry['sambamungeddial'][0]); + $modify['sambaMungedDial'][0]= $mungedDial->getMunged(); + if(ldap_modify($connection,$entry['dn'],$modify)) { + print("done.\n"); + } else { + print("failed.\n"); + } +} + +ldap_close($connection); +?> + diff --git a/trunk/gosa-plugins/samba/contrib/goSamba.pl b/trunk/gosa-plugins/samba/contrib/goSamba.pl new file mode 100755 index 000000000..ef7b210b4 --- /dev/null +++ b/trunk/gosa-plugins/samba/contrib/goSamba.pl @@ -0,0 +1,162 @@ +#!/usr/bin/perl + + +# Copyright (C) 2005 Guillaume Delecourt +# +# 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. +# +# + +use Net::LDAP; +use Getopt::Std; +use Net::LDAP::Schema; +use Net::LDAP::LDIF; + +# Variables a config +$admin="cn=ldapadmin,dc=example,dc=be"; +$password=""; +$peopleou="ou=People,dc=example,dc=be"; +$base="dc=example,dc=be"; +$scope="one"; # par defaut +$dump_file="myldaptree.ldif"; +$server="localhost"; + + +my %Options; + +my $ok = getopts('?', \%Options); + +#Verifying if help is needed +if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) { + &help(); +} + +print "We backup the whole tree before every operation\n"; +&dump(); + +$comm=$ARGV[0]; + +if($comm eq "del" && @ARGV >1 ) +{ + print "You asked to delete attribute : "; + $i=1; + while($ARGV[$i] ne "") + { + print $ARGV[$i]." "; + $i++; + } + print "\n"; + $ldap = Net::LDAP->new($server); + $ldap->bind($admin,password=>$password); + + + print "ldap connection" .$ldap; + + $mesg = $ldap->search(filter=>"(objectClass=*)",base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + + foreach $entry (@entries) { + $i=1; + print $entry->dn()."\n"; + while($ARGV[$i] ne "") + { + if($ARGV[$i] eq "obj"){$obj=1;$i++;next} + if($obj==1) + { + $mesg = $ldap->modify($entry->dn(), delete => {"ObjectClass"=>"$ARGV[$i]"}); + print "\t objectClass: ".$ARGV[$i]; + } + else + { + $mesg = $ldap->modify($entry->dn(), delete => [$ARGV[$i]]); + print "\t attribut: ".$ARGV[$i]; + } + $obj=0; + $i++; + } + + print "\n"; + } + $ldap->unbind; + exit(0); +} +elsif($comm eq "gosa" && @ARGV ==1) +{ + print "Add GOsa attribute for the following users\n"; + print "---------------------------------------------\n"; + $ldap = Net::LDAP->new($server); + $ldap->bind($admin,password=>$password); + $mesg = $ldap->search(filter=>"&(!(objectClass~=gosaAccount))", base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + + foreach $entry (@entries) { + $mesg = $ldap->modify($entry->dn(), add => { "ObjectClass" => "gosaAccount"}); + $mesg = $ldap->modify($entry->dn(), add => { "ObjectClass" => "organizationalPerson"}); + $mesg = $ldap->modify($entry->dn(), add => { "ObjectClass" => "Person"}); + print $entry->dn(); + print "\n"; + } + $ldap->unbind; + exit(0); +} +elsif($comm eq "modif" && @ARGV >1) +{ + print "Modifications asked\n"; + print "------------------------\n"; + $ldap = Net::LDAP->new($server); + $ldap->bind($admin,password=>$password); + + $mesg = $ldap->search(filter=>"(objectClass=*)",base=>$peopleou,scope=>$scope); + @entries = $mesg->entries; + foreach $entry (@entries) { + $mesg = $ldap->modify($entry->dn(), replace => { "$ARGV[1]" => "$ARGV[2]" } ); + print $entry->dn()."\n\tattribut $ARGV[1] modifié avec la valeur $ARGV[2]\n"; + } + $ldap->unbind; + exit(0); +} +elsif($comm eq "dump" && @ARGV ==1) +{ + &dump(); +} +else +{ + &help(); +} + +sub help() +{ + print_banner; + print "Usage: $0 [-?] command\n"; + print "\t-? show this help message\n"; + print "\tgosa -> add GOsa attributes for the whole the people branch !\n"; + print "\tdel attribut -> Remove an attribute for the whole people branch !\n"; + print "\tmodif -> to modify the attribute\n"; + print "\tdump to dump the whole ldap tree\n"; + exit (1); +} + +sub dump() +{ + $ldap = Net::LDAP->new($server) or die "$@"; + $ldap->bind($admin,password=>$password); + my $ldif = Net::LDAP::LDIF->new($dump_file,'w') ; + $mesg = $ldap->search ( + base => "$base", + filter => "(objectclass=*)" + ); + $ldif->write_entry($mesg->entries) ; + $ldap->unbind; +} diff --git a/trunk/gosa-plugins/samba/help/guide.xml b/trunk/gosa-plugins/samba/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/samba/html/images/plugin.png b/trunk/gosa-plugins/samba/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..04ea3ad4b5c2212a18197688b54bc7775d07beb0 GIT binary patch literal 4762 zcmV;L5@qd)P)hk5+MY}7=j?+yz|auaQ7guy!;Z|w!Qw2W8SYEfBXrAVSw)k zA84G#zTw&VK!dHtTEjQLc_oiO{-|8AV8Io$XV1R)$Rp<++tt;X&F9-hqfxh`qhsM~ zuWcGww{G1pUhVJy@3YT3dwA6&t5|WyGJf-$-!ggfWKyZr2QvJf$S!hthMj`!jB6;;&qGGnkWqKzv-r1&MOoO?AWoLjT<*&j3JI=j4^K*r@^ymaYllQwT2KnO!Bm0@Uj zFG0g6pU>ks&H=zt6j7_y=9ZII7;Dp9{1jRAFEgYfqXtsDwU#MuVby{iYu;Q z@#4h?=Iih8=Z-t>pja$YC=~eF&+fW()259-|C<3Y#$b#|op#!3Ua{DzN~JR2``*7Y zd-hxVuU@^H+i$;}N~OY#88i6yx4*;OxpT0_Af!CdZ`ZCtZn)uxL{Uh4dj}6b_~7Ta zY}xYLkAz_6%vo>I88c?m*EgLdOFmt_0mtM9D7A&y8{N*q0 zp|X4TZu{6{PuM7mthLr^t*y1zu37WEJ@(jR?IVvoVy(4yY<%2aeDTHh{PWMZD_5Rp z`}(F&pIGe=qtbB{j-yaY9#F?oq*Bh40@1p4>sGG*)-}wTb2tFE|MYfVdg&z|dg!5K zrEJ2?Q>RYl%rnoxaU86Li7oxyn&;^6@8{NAZv~*Ey`Ag7|9vWz3YAKk*4CD-A7uel zu~>XVgAf258O8c0YYpdLZ~OG#sn+P}=^>vl@c848;`@QT`IcKxz542_KKy>@?Cj*zpZ+w{ zr_W%@Jz!=j;~J(E4J!9^Ec zL}y1kp4VU^gZq9!6h+CS@!_cx5YHCC`yLe5LF0#rZAHY|1(>jg2Es6;(P#h(ImA&& zqY?1s%P&U?fwh)OrTWJYR#fuAf-g)PmIdkUBTEBih3r}9imoK}FO09;q79k~SLLG$^5-DJ; zZ6#Zy3yHlfPQAgt;7e?AeoD3dLfQ)snUsq$me|C^ag4Sa9crRDBGv}ib-3@|d+F=z zWBc~)S8dp^K`dIdXbTAsgzp7F04!Ou`2#q!gs)v9!NcXP@qr{KD7rKhK7<&8JqxE3e@?^rwu;6HnMdagX~xZ@ZY z7+~ABZ2+u!{zZz#BF1Q3*G)h)0l1EX~Vfls5+pslT)Yp(fcez)oogb>YeD&l#b-MxGFWMJgo064&PrBbQo$tRz@ zC=A04Kxbzct*x#2zK>E8DI{9PNGXv*AOuJOu>>V0>2wAuCC1nTgrJQs~H|@U6A!uC7jm z5QJffwF)65GL{G#CwW37K2gTvI1(upj^hGNdIN+J#KJ*aL1aQAqlvU7vJj~>zAI?> z5xU_s`|!gLS+(p#p68wWUWOkE0M~UVcr^{s)m6k=2*MC+T_6dS3B#=gYZBVkRwB{J zX3b-;7+kcDVe~c3o_@^WM&e49z_a+Z22w+|*hkbemrB=kx@XTlV32a$Bi^s^0FG1& z-K^!M6c}U4WHMB$RiY?twoBre10FWUU>t=~E;0ro1xel&AYHVs()#L;vEzFP>ktM4 zQx7qf2;+q~VL)O3>-6?Nip}I$f8rN$@@>S`GG4XT@__(MlmXUSlyWd8LK}nUdDLn( za=9#VwuM|Si?wdzeGA%Xl+;Km5KmEY2gG06 z9nO8>Y&-l;hF|%DxKX&cP87Qb8l%_@6bjkyQmM@Ncm>CC>6uh#;i5kL(Z|@a{b}|$ z&L@i7NV{=Du~HzV#3C^=Lna<36^`Ns4n{-l`;`CsBBKLC=onhF;9776WK%F!n9IQ4 z5S)l~(Pd|8hscyz>|6FO{E3KjE{%*JY|SBZEo6iut}T(A zY}9MCb#$=w)LDG$RDqj*fo%Is+Qf^DkBv}n%tUK2Mx(VR)*53Bo=!8l`ag7e8)<|o z{ILphXavDJ+4 zoJB1>nv|najz9_pN)g+LN&fR_T%z(GsvDjoY=Cw^`-#_Gn=nTjsObV5H}}(7+zhQP ztS!HcV?azKa{)qua>31klLnar=_aqc?Kr#Hp)%3gfP%;Gzp$oqN4NGK(GL1$@WzuB z5)DwBIBZrQ`%9}?H#CVrN`~d%3TZ^Ls+XSH#RVi>BkgBOk*|iVAp*A@gfdLUtnsLnOJ=k4P zdlifaG6EZb2q3D0li~2*3cJT%Vz9IbC1aGd_)^iES%(NV5DX203o<7VvBdfo#~R$Y zxe9=C1pA6JIrA*V+JUDSX#vmoX|o3nrwK+*81EheKyrTqz)Wm(1J>?ibge}?0@*C? zMF0d~eXtF%qqMdw=J&l!B{-6r-+{IfMrh{RCo!9c@V4}^e_M)u!vW>kAh2`d zQbu_L{FR+H+$Q0c2@%6 zP!WK)M-u%OT2D-Z&-x(hU>eC0(gYCKkYbplr~Ho4bhE2;GAfl~>$kp-I;@*)ODk=n z#IZd;XHv%w$i;LyaQLMSsCBU6z6wwLM~1JhoKAUU53htZ%H9~ciE3OoiP0vWpYXnN z5+K55=Y+`){vpN-R^TDXc~E%@oOV$8=2b=91knH;fQFph&EZpCCYFn^ww+DoX>8o! zuw@W-4CZN!pF>zbooV?BOO6`kjFUF8;u$mtOJeBJh?YuYcL6~p~*NCg<{kD z9Q3|)L1rP{2I;JN@F0MmLsmet79WF;Bn8M4m{Q^uBS17Sd~8!Sq}>u7ZE5aUe=?7+ zGc@*(5thaXD=}UvkF5%J*ZNrV>>1p2SCMH)@8suK{fMQ<{SGWlbqg$*l%hMDjW<@N zS|3FVi;+qAI5|kQN^-dtWHrye0fRs0{E2Iuez)~E0ASUx;G{X+E<%>J=ICoplcl8@ zY;}@Tsy(Q8J%+w#?FFKG>U}cWzngG;46jtiFIVs@CBm9d5EVeQ109f>!_>o4JoAkn zIy=gG<3>iF*va7UYc0jXl=kVNA5yE-Nku6XF3PdEB2B#_85%8BeN+3(-UrQ@2Ug%8 zF1)(=(_+yq`ot%BcF=s|>DAw*wN>1bHU<+X=VYm{LV;Cuc6(%lC+v@YJ^8K{dQLv}&tCT*WVy2&!emAVm;&fGmKSL|1prg5Fn#zkXi!Y`OWNKc9X1c$&fAv#Wg6u3hzI zKPdUf-t(DrFY_i0jAM~=G%HDS9nc1L>Kg#qorgSG7%#jksjbgROq&q4M;bF(5_Mal zIcOZf%d5lfUHm^ZvcEXNYKg9IsS42%uIYit+?;8^|_DPhnR32EKFg z_#eM|UfZ2d-F3_TOU`^AYPE!UCN5GUATOX`lZ&4m&;k?~MA+U#0UTtZrgXf1++oD& z3@v>w`J*8-zecLpAlu4_mMp??u*yLYlWn~I>W0jBN6H}?6JdKLPAY^*Uxleo`K7(le( z*G9;z5T9fvo!?CRxvuEPGbN8)=hBRrZ%(hzr7W}o25{!(6U&PE*hMa zL`4$W0Fg+Y2&1U(M&FF#|WCGwbrJ2g=nxMjj>7QL8WO=53=C+-e&=H zb!%^T$Ce~q%ps})nG6xmK}8XR9eH;E7O*BfFq5?hDN_Ks&%UAiPhOsSX(NQR16CsmjnUO4abdv5O#tbpW$K^`$y{b(AZ>n$s!QJm4z?(&I$SLEXr2OHI*SGHsOGBgm z^-AO6hVQQSM!mt%*BNaZOScYg_II;Qkh{bU2_j`4*-vg&)L=!gc1Xg&;i;e zWtJ5Q0F?$O3!;tWYXRaN|D5su|0^LrroRU`{HZ*&{dsR!=fZ5;3|ewyq@1y&{166J z5SVm^hTqA)^+kq;EsePH=+c!R6~MqsSXvLUj; oux!z5QaNt>{Iw&scbn(`0Nqy1FiCjNqW}N^07*qoM6N<$f+2`FEdT%j literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/samba/html/images/terminal_server.png b/trunk/gosa-plugins/samba/html/images/terminal_server.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ef81c608c703f52f2d4d5bf3e00c6aba4b9df8 GIT binary patch literal 733 zcmV<30wVp1P)Yh#uD{ryLFZFMC%`RgSgfBA$vn|E31Od z5F(65HKWmtX4cT}kGa>2eDlSJlx0yVF$P3wk`-Rf4CC4`m@0z_yw?*ZO-U8*1k6-c2$%NoMH@WC6*ZfY+6yka(O7MJt?0wGN-&IkTJyJj}LVYRf_M0oc5 zfXoWr+;Dn2pq(~|2+n&D#i}TxhHlv*Q%jm!R?C!!AKapAA#SeFzpDBEhg0%yO5Frh z74JL%Dk`WzQDl@=&c;T;%j-GcKK_RyPkH{wn8!a~P`A+Qbt%gZS!VIx0bo_YhlmqJ zj777IIvQd~c=X)`O%thu#bh051#cR>C~nEX8k;0lk+A>KCKyAOT9VXYR0u?(545dk zK5v=V4dY3dH+#DLf-&~VPfw4xx3||n-+pJQc?ZtnT#IuK=N#VaG7a9RG_9j<;q2_} zLe|#S9_;S!ewOEX<-LzF#)bZurt<$`7JdjJV2qK=%ggJ-!^5v%*UkJ3?# P00000NkvXXu0mjfm?>k_ literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/samba/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/samba/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b75ebc003 --- /dev/null +++ b/trunk/gosa-plugins/samba/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,402 @@ +# translation of messages.po to deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-12-03 15:08+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/systems/samba/wingeneric.tpl:6 +msgid "Machine name" +msgstr "Name des Systems" + +#: admin/systems/samba/wingeneric.tpl:17 +#: admin/systems/samba/class_winGeneric.inc:314 +msgid "Base" +msgstr "Basis" + +#: admin/systems/samba/wingeneric.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Wählen Sie den Teilbaum, in den die Gruppe eingepflegt werden soll" + +#: admin/systems/samba/wingeneric.tpl:26 +msgid "Select a base" +msgstr "Wählen Sie eine Basis" + +#: admin/systems/samba/wingeneric.tpl:35 +#: admin/systems/samba/class_winGeneric.inc:315 +msgid "Description" +msgstr "Beschreibung" + +#: admin/systems/samba/class_winGeneric.inc:102 +msgid "network" +msgstr "Netzwerk" + +#: admin/systems/samba/class_winGeneric.inc:169 +#: admin/systems/samba/class_winGeneric.inc:292 +#: personal/samba/class_sambaAccount.inc:737 +#: personal/samba/class_sambaAccount.inc:1104 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/systems/samba/class_winGeneric.inc:228 +#: admin/systems/samba/class_winGeneric.inc:313 +msgid "Name" +msgstr "Name" + +#: admin/systems/samba/class_winGeneric.inc:304 +msgid "Win generic" +msgstr "Windows (Allgemein)" + +#: admin/systems/samba/class_winGeneric.inc:305 +msgid "Windows workstation generic" +msgstr "Windows-Arbeitsstation (Allgemein)" + +#: admin/systems/samba/class_winGeneric.inc:310 +msgid "Win workstation" +msgstr "Windows Arbeitsstation" + +#: personal/samba/samba3.tpl:6 personal/samba/samba2.tpl:6 +msgid "Generic" +msgstr "Allgemein" + +#: personal/samba/samba3.tpl:13 personal/samba/samba3.tpl:105 +#: personal/samba/class_sambaAccount.inc:762 +#: personal/samba/class_sambaAccount.inc:1264 +msgid "Home directory" +msgstr "Basisverzeichnis" + +#: personal/samba/samba3.tpl:26 personal/samba/class_sambaAccount.inc:1212 +msgid "Domain" +msgstr "Domäne" + +#: personal/samba/samba3.tpl:43 personal/samba/samba2.tpl:37 +msgid "Script path" +msgstr "Anmeldeskript" + +#: personal/samba/samba3.tpl:51 personal/samba/samba3.tpl:118 +#: personal/samba/samba2.tpl:45 personal/samba/class_sambaAccount.inc:763 +#: personal/samba/class_sambaAccount.inc:1265 +msgid "Profile path" +msgstr "Profil-Pfad" + +#: personal/samba/samba3.tpl:65 +msgid "Terminal Server" +msgstr "Terminal-Server" + +#: personal/samba/samba3.tpl:102 personal/samba/class_sambaAccount.inc:1215 +msgid "Allow login on terminal server" +msgstr "Anmeldung am Terminalserver zulassen" + +#: personal/samba/samba3.tpl:138 personal/samba/class_sambaAccount.inc:1216 +msgid "Inherit client config" +msgstr "Client-Konfiguration übernehmen" + +#: personal/samba/samba3.tpl:141 +msgid "Initial program" +msgstr "Startprogramm" + +#: personal/samba/samba3.tpl:149 +msgid "Working directory" +msgstr "Arbeitsverzeichnis" + +#: personal/samba/samba3.tpl:166 +msgid "Timeout settings (in minutes)" +msgstr "Zeitlimit (in Minuten)" + +#: personal/samba/samba3.tpl:182 personal/samba/class_sambaAccount.inc:770 +#: personal/samba/class_sambaAccount.inc:1272 +msgid "Connection" +msgstr "Verbinden" + +#: personal/samba/samba3.tpl:196 personal/samba/class_sambaAccount.inc:771 +#: personal/samba/class_sambaAccount.inc:1273 +msgid "Disconnection" +msgstr "Trennen" + +#: personal/samba/samba3.tpl:210 personal/samba/class_sambaAccount.inc:772 +#: personal/samba/class_sambaAccount.inc:1274 +msgid "IDLE" +msgstr "Leerlauf" + +#: personal/samba/samba3.tpl:226 +msgid "Client devices" +msgstr "Client-Geräte" + +#: personal/samba/samba3.tpl:233 +msgid "Connect client drives at logon" +msgstr "Client-Laufwerke beim Anmelden verbinden" + +#: personal/samba/samba3.tpl:241 +msgid "Connect client printers at logon" +msgstr "Client-Drucker beim Anmelden verbinden" + +#: personal/samba/samba3.tpl:249 +msgid "Default to main client printer" +msgstr "Standard-Drucker vom Client wählen" + +#: personal/samba/samba3.tpl:259 +msgid "Miscellaneous" +msgstr "Verschiedenes" + +#: personal/samba/samba3.tpl:263 +msgid "Shadowing" +msgstr "Spiegeln" + +#: personal/samba/samba3.tpl:274 +msgid "On broken or timed out" +msgstr "Bei Trennung oder abgelaufenem Zeitlimit" + +#: personal/samba/samba3.tpl:284 +msgid "Reconnect if disconnected" +msgstr "Wiederherstellen falls unterbrochen" + +#: personal/samba/samba3.tpl:301 personal/samba/samba2.tpl:59 +msgid "Access options" +msgstr "Zugriffsoptionen" + +#: personal/samba/samba3.tpl:309 personal/samba/samba2.tpl:67 +msgid "Allow user to change password from client" +msgstr "Der Benutzer darf das Passwort vom Client aus ändern" + +#: personal/samba/samba3.tpl:314 personal/samba/samba2.tpl:72 +#: personal/samba/class_sambaAccount.inc:1218 +msgid "Login from windows client requires no password" +msgstr "Die Anmeldung vom Windows-Client erfordert kein Passwort" + +#: personal/samba/samba3.tpl:319 personal/samba/class_sambaAccount.inc:1219 +msgid "Lock samba account" +msgstr "Samba-Konto sperren" + +#: personal/samba/samba3.tpl:324 personal/samba/samba2.tpl:87 +msgid "Password expires on" +msgstr "Passwort läuft ab am" + +#: personal/samba/samba3.tpl:344 personal/samba/class_sambaAccount.inc:1222 +msgid "Limit Logon Time" +msgstr "Limitiere Logon Zeit" + +#: personal/samba/samba3.tpl:364 personal/samba/class_sambaAccount.inc:1223 +msgid "Limit Logoff Time" +msgstr "Limitiere Logoff Zeit" + +#: personal/samba/samba3.tpl:385 +msgid "Account expires after" +msgstr "Konto läuft ab am" + +#: personal/samba/samba3.tpl:408 +msgid "Samba logon times" +msgstr "Samba Anmeldezähler" + +#: personal/samba/samba3.tpl:408 +msgid "Edit settings..." +msgstr "Einstellungen bearbeiten..." + +#: personal/samba/samba3.tpl:416 +msgid "Allow connection from these workstations only" +msgstr "Erlaube Verbindungen nur von diesen Arbeitsstationen" + +#: personal/samba/samba3.tpl:427 +msgid "Used by all users" +msgstr "Verwendet von allen Benutzern" + +#: personal/samba/samba3.tpl:430 +msgid "Used by some users" +msgstr "Verwendet von einigen Benutzern" + +#: personal/samba/sambaLogonHours.tpl:22 +msgid "Specify the hours this user is allowed to log in" +msgstr "Wählen Sie die Stunden, in denen der Benutzer angemeldet sein darf" + +#: personal/samba/sambaLogonHours.tpl:28 +msgid "Hour" +msgstr "Stunde" + +#: personal/samba/samba2.tpl:13 +msgid "Samba home" +msgstr "Samba-Basisverzeichnis" + +#: personal/samba/samba2.tpl:77 +msgid "Temporary disable samba account" +msgstr "Vorübergehende Deaktivierung des Samba-Zugriffs" + +#: personal/samba/class_sambaAccount.inc:24 +#: personal/samba/class_sambaAccount.inc:217 +#: personal/samba/class_sambaAccount.inc:229 +#: personal/samba/class_sambaAccount.inc:230 +#: personal/samba/class_sambaAccount.inc:239 +#: personal/samba/class_sambaAccount.inc:240 +#: personal/samba/class_sambaAccount.inc:242 +#: personal/samba/class_sambaAccount.inc:243 +#: personal/samba/class_sambaAccount.inc:1199 +msgid "Samba" +msgstr "Samba" + +#: personal/samba/class_sambaAccount.inc:25 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/samba/class_sambaAccount.inc:243 +msgid "POSIX" +msgstr "POSIX" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Error" +msgstr "Fehler" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Please select an entry!" +msgstr "Bitte wählen Sie einen Eintrag!" + +#: personal/samba/class_sambaAccount.inc:535 +msgid "disabled" +msgstr "deaktiviert" + +#: personal/samba/class_sambaAccount.inc:536 +msgid "input on, notify on" +msgstr "Eingabe EIN, Benachrichtigen EIN" + +#: personal/samba/class_sambaAccount.inc:537 +msgid "input on, notify off" +msgstr "Eingabe EIN, Benachrichtigen AUS" + +#: personal/samba/class_sambaAccount.inc:538 +msgid "input off, notify on" +msgstr "Eingabe AUS, Benachrichtigen EIN" + +#: personal/samba/class_sambaAccount.inc:539 +msgid "input off, nofify off" +msgstr "Eingabe AUS, Benachrichtigen AUS" + +#: personal/samba/class_sambaAccount.inc:541 +msgid "disconnect" +msgstr "trennen" + +#: personal/samba/class_sambaAccount.inc:542 +msgid "reset" +msgstr "zurücksetzen" + +#: personal/samba/class_sambaAccount.inc:544 +msgid "from any client" +msgstr "von jedem Client" + +#: personal/samba/class_sambaAccount.inc:545 +msgid "from previous client only" +msgstr "nur von vorherigem Client" + +#: personal/samba/class_sambaAccount.inc:755 +msgid "Home drive" +msgstr "Basis-Laufwerk" + +#: personal/samba/class_sambaAccount.inc:758 +msgid "Home path" +msgstr "Basis-Pfad" + +#: personal/samba/class_sambaAccount.inc:781 +msgid "The windows usermanager allows eight clients at maximum!" +msgstr "Die Benutzerverwaltung von Windows erlaubt höchstens acht Clients!" + +#: personal/samba/class_sambaAccount.inc:970 +#: personal/samba/class_sambaAccount.inc:994 +msgid "Warning" +msgstr "Warnung" + +#: personal/samba/class_sambaAccount.inc:970 +msgid "Undefined Samba SID detected. Please fix this problem manually!" +msgstr "" +"Undefinierte Samba SID festgestellt. Bitte beheben Sie dieses Problem " +"manuell!" + +#: personal/samba/class_sambaAccount.inc:994 +msgid "" +"Cannot convert primary group to samba group: group cannot be identified!" +msgstr "" +"Kann primäre Gruppe nicht in Samba-Gruppe überführen: die Gruppe kann nicht " +"identifiziert werden!" + +#: personal/samba/class_sambaAccount.inc:1200 personal/samba/main.inc:136 +msgid "Samba settings" +msgstr "Samba-Einstellungen" + +#: personal/samba/class_sambaAccount.inc:1204 +msgid "My account" +msgstr "Mein Konto" + +#: personal/samba/class_sambaAccount.inc:1210 +msgid "Generic home directory" +msgstr "Allgemeines Basisverzeichnis" + +#: personal/samba/class_sambaAccount.inc:1211 +msgid "Generic samba home drive" +msgstr "Allgemeines Samba Basis-Laufwerk" + +#: personal/samba/class_sambaAccount.inc:1213 +msgid "Generic script path" +msgstr "Allgemeiner Skript-Pfad" + +#: personal/samba/class_sambaAccount.inc:1214 +msgid "Generic profile path" +msgstr "Allgemeiner Profil-Pfad" + +#: personal/samba/class_sambaAccount.inc:1217 +msgid "Allow user to change password" +msgstr "Benutzer darf sein Passwort ändern" + +#: personal/samba/class_sambaAccount.inc:1220 +msgid "Account expires" +msgstr "Konto läuft ab" + +#: personal/samba/class_sambaAccount.inc:1221 +msgid "Password expires" +msgstr "Passwort läuft ab" + +#: personal/samba/class_sambaAccount.inc:1224 +msgid "Logon hours" +msgstr "Anmeldezeiten" + +#: personal/samba/class_sambaAccount.inc:1225 +msgid "Allow connection from" +msgstr "Erlaube Verbindung von" + +#: personal/samba/class_sambaAccount.inc:1284 +msgid "" +"The windows user manager only allows eight clients. You've specified more " +"than eight." +msgstr "" +"Die Benutzerverwaltung von Windows erlaubt höchstens acht Clients. Sie haben " +"mehr als acht angegeben." + +#: personal/samba/samba3_workstations.tpl:6 +msgid "Select workstations to add" +msgstr "Wählen Sie die hinzuzufügenden Arbeitsstationen" + +#: personal/samba/samba3_workstations.tpl:20 +msgid "Filters" +msgstr "Filter" + +#: personal/samba/samba3_workstations.tpl:26 +msgid "Display workstations of department" +msgstr "Zeige die Arbeitsstationen der Abteilung" + +#: personal/samba/samba3_workstations.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Wählen Sie die Abteilung, auf die die Suchfunktion angewandt wird" + +#: personal/samba/samba3_workstations.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Regulärer Ausdruck zum Erkennen von Mail-Adressen" diff --git a/trunk/gosa-plugins/samba/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/samba/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..cb6620e38 --- /dev/null +++ b/trunk/gosa-plugins/samba/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,402 @@ +# translation of messages.po to spanish +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Alejandro Escanero Blanco , 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-12-08 17:37+0100\n" +"Last-Translator: Alejandro Escanero Blanco \n" +"Language-Team: spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/samba/wingeneric.tpl:6 +msgid "Machine name" +msgstr "Nombre de maquina" + +#: admin/systems/samba/wingeneric.tpl:17 +#: admin/systems/samba/class_winGeneric.inc:314 +msgid "Base" +msgstr "Base" + +#: admin/systems/samba/wingeneric.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Elija lugar del árbol para colocar el grupo" + +#: admin/systems/samba/wingeneric.tpl:26 +msgid "Select a base" +msgstr "Seleccione una base" + +#: admin/systems/samba/wingeneric.tpl:35 +#: admin/systems/samba/class_winGeneric.inc:315 +msgid "Description" +msgstr "Descripción" + +#: admin/systems/samba/class_winGeneric.inc:102 +msgid "network" +msgstr "red" + +#: admin/systems/samba/class_winGeneric.inc:169 +#: admin/systems/samba/class_winGeneric.inc:292 +#: personal/samba/class_sambaAccount.inc:737 +#: personal/samba/class_sambaAccount.inc:1104 +msgid "LDAP error" +msgstr "Error LDAP" + +#: admin/systems/samba/class_winGeneric.inc:228 +#: admin/systems/samba/class_winGeneric.inc:313 +msgid "Name" +msgstr "Nombre" + +#: admin/systems/samba/class_winGeneric.inc:304 +msgid "Win generic" +msgstr "Sistema Windows genérico" + +#: admin/systems/samba/class_winGeneric.inc:305 +msgid "Windows workstation generic" +msgstr "Estación de trabajo Windows genérica" + +#: admin/systems/samba/class_winGeneric.inc:310 +msgid "Win workstation" +msgstr "Estación de trabajo Windows" + +#: personal/samba/samba3.tpl:6 personal/samba/samba2.tpl:6 +msgid "Generic" +msgstr "Genérico" + +#: personal/samba/samba3.tpl:13 personal/samba/samba3.tpl:105 +#: personal/samba/class_sambaAccount.inc:762 +#: personal/samba/class_sambaAccount.inc:1264 +msgid "Home directory" +msgstr "Directorio de usuario" + +#: personal/samba/samba3.tpl:26 personal/samba/class_sambaAccount.inc:1212 +msgid "Domain" +msgstr "Dominio" + +#: personal/samba/samba3.tpl:43 personal/samba/samba2.tpl:37 +msgid "Script path" +msgstr "Ruta del Script" + +#: personal/samba/samba3.tpl:51 personal/samba/samba3.tpl:118 +#: personal/samba/samba2.tpl:45 personal/samba/class_sambaAccount.inc:763 +#: personal/samba/class_sambaAccount.inc:1265 +msgid "Profile path" +msgstr "Ruta del Perfil" + +#: personal/samba/samba3.tpl:65 +msgid "Terminal Server" +msgstr "Servidor de terminal" + +#: personal/samba/samba3.tpl:102 personal/samba/class_sambaAccount.inc:1215 +msgid "Allow login on terminal server" +msgstr "Permitir inicio de sesión en el servidor de terminal" + +#: personal/samba/samba3.tpl:138 personal/samba/class_sambaAccount.inc:1216 +msgid "Inherit client config" +msgstr "Configuración predeterminada de cliente" + +#: personal/samba/samba3.tpl:141 +msgid "Initial program" +msgstr "Programa inicial" + +#: personal/samba/samba3.tpl:149 +msgid "Working directory" +msgstr "Directorio de trabajo" + +#: personal/samba/samba3.tpl:166 +msgid "Timeout settings (in minutes)" +msgstr "Tiempo de desconexión (en minutos)" + +#: personal/samba/samba3.tpl:182 personal/samba/class_sambaAccount.inc:770 +#: personal/samba/class_sambaAccount.inc:1272 +msgid "Connection" +msgstr "Conexión" + +#: personal/samba/samba3.tpl:196 personal/samba/class_sambaAccount.inc:771 +#: personal/samba/class_sambaAccount.inc:1273 +msgid "Disconnection" +msgstr "Desconexión" + +#: personal/samba/samba3.tpl:210 personal/samba/class_sambaAccount.inc:772 +#: personal/samba/class_sambaAccount.inc:1274 +msgid "IDLE" +msgstr "IDLE" + +#: personal/samba/samba3.tpl:226 +msgid "Client devices" +msgstr "Dispositivos clientes" + +#: personal/samba/samba3.tpl:233 +msgid "Connect client drives at logon" +msgstr "Conectar las unidades clientes al iniciar sesión" + +#: personal/samba/samba3.tpl:241 +msgid "Connect client printers at logon" +msgstr "Conectar las impresoras clientes al iniciar sesión" + +#: personal/samba/samba3.tpl:249 +msgid "Default to main client printer" +msgstr "Impresora principal predeterminada del cliente" + +#: personal/samba/samba3.tpl:259 +msgid "Miscellaneous" +msgstr "Varios" + +#: personal/samba/samba3.tpl:263 +msgid "Shadowing" +msgstr "Ocultamiento" + +#: personal/samba/samba3.tpl:274 +msgid "On broken or timed out" +msgstr "Desconexión o tiempo excedido" + +#: personal/samba/samba3.tpl:284 +msgid "Reconnect if disconnected" +msgstr "Conectar si se desconecta" + +#: personal/samba/samba3.tpl:301 personal/samba/samba2.tpl:59 +msgid "Access options" +msgstr "Opciones de acceso" + +#: personal/samba/samba3.tpl:309 personal/samba/samba2.tpl:67 +msgid "Allow user to change password from client" +msgstr "Permitir al usuario cambiar contraseñas desde el cliente" + +#: personal/samba/samba3.tpl:314 personal/samba/samba2.tpl:72 +#: personal/samba/class_sambaAccount.inc:1218 +msgid "Login from windows client requires no password" +msgstr "El inicio de sesión en windows no necesita contraseña" + +#: personal/samba/samba3.tpl:319 personal/samba/class_sambaAccount.inc:1219 +msgid "Lock samba account" +msgstr "Bloquear cuenta samba" + +#: personal/samba/samba3.tpl:324 personal/samba/samba2.tpl:87 +msgid "Password expires on" +msgstr "La contraseña caduca en" + +#: personal/samba/samba3.tpl:344 personal/samba/class_sambaAccount.inc:1222 +msgid "Limit Logon Time" +msgstr "Tiempo máximo de inicio de sesión" + +#: personal/samba/samba3.tpl:364 personal/samba/class_sambaAccount.inc:1223 +msgid "Limit Logoff Time" +msgstr "Tiempo máximo de cierre de sesión" + +#: personal/samba/samba3.tpl:385 +msgid "Account expires after" +msgstr "La cuenta caducará después de" + +#: personal/samba/samba3.tpl:408 +msgid "Samba logon times" +msgstr "Intentos de inicio de sesión de Samba" + +#: personal/samba/samba3.tpl:408 +msgid "Edit settings..." +msgstr "Editar configuración..." + +#: personal/samba/samba3.tpl:416 +msgid "Allow connection from these workstations only" +msgstr "Permitir la conexión solo desde estas estaciones de trabajo" + +#: personal/samba/samba3.tpl:427 +msgid "Used by all users" +msgstr "Usado por todos los usuarios" + +#: personal/samba/samba3.tpl:430 +msgid "Used by some users" +msgstr "Usado por algunos usuarios" + +#: personal/samba/sambaLogonHours.tpl:22 +msgid "Specify the hours this user is allowed to log in" +msgstr "" +"Introducir las horas en que este usuario tendrá permiso de inicio de sesión" + +#: personal/samba/sambaLogonHours.tpl:28 +msgid "Hour" +msgstr "Hora" + +#: personal/samba/samba2.tpl:13 +msgid "Samba home" +msgstr "Directorio Samba" + +#: personal/samba/samba2.tpl:77 +msgid "Temporary disable samba account" +msgstr "Desactivar temporalmente la cuenta samba" + +#: personal/samba/class_sambaAccount.inc:24 +#: personal/samba/class_sambaAccount.inc:217 +#: personal/samba/class_sambaAccount.inc:229 +#: personal/samba/class_sambaAccount.inc:230 +#: personal/samba/class_sambaAccount.inc:239 +#: personal/samba/class_sambaAccount.inc:240 +#: personal/samba/class_sambaAccount.inc:242 +#: personal/samba/class_sambaAccount.inc:243 +#: personal/samba/class_sambaAccount.inc:1199 +msgid "Samba" +msgstr "Samba" + +#: personal/samba/class_sambaAccount.inc:25 +msgid "This does something" +msgstr "Esto hace algo" + +#: personal/samba/class_sambaAccount.inc:243 +msgid "POSIX" +msgstr "POSIX" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Error" +msgstr "Error" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Please select an entry!" +msgstr "¡Por favor seleccione una entrada!" + +#: personal/samba/class_sambaAccount.inc:535 +msgid "disabled" +msgstr "desactivado" + +#: personal/samba/class_sambaAccount.inc:536 +msgid "input on, notify on" +msgstr "entrada activada, notificación activada" + +#: personal/samba/class_sambaAccount.inc:537 +msgid "input on, notify off" +msgstr "entrada activada, notificación desactivada" + +#: personal/samba/class_sambaAccount.inc:538 +msgid "input off, notify on" +msgstr "entrada desactivada, notificación activada" + +#: personal/samba/class_sambaAccount.inc:539 +msgid "input off, nofify off" +msgstr "entrada desactivada, notificación desactivada" + +#: personal/samba/class_sambaAccount.inc:541 +msgid "disconnect" +msgstr "desconectar" + +#: personal/samba/class_sambaAccount.inc:542 +msgid "reset" +msgstr "Borrar" + +#: personal/samba/class_sambaAccount.inc:544 +msgid "from any client" +msgstr "desde cualquier cliente" + +#: personal/samba/class_sambaAccount.inc:545 +msgid "from previous client only" +msgstr "solo desde el cliente anterior" + +#: personal/samba/class_sambaAccount.inc:755 +msgid "Home drive" +msgstr "Unidad inicial" + +#: personal/samba/class_sambaAccount.inc:758 +msgid "Home path" +msgstr "Ruta inicial" + +#: personal/samba/class_sambaAccount.inc:781 +msgid "The windows usermanager allows eight clients at maximum!" +msgstr "" +"¡El administrador de usuarios de windows solo permite ocho clientes como " +"máximo!" + +#: personal/samba/class_sambaAccount.inc:970 +#: personal/samba/class_sambaAccount.inc:994 +msgid "Warning" +msgstr "Aviso" + +#: personal/samba/class_sambaAccount.inc:970 +msgid "Undefined Samba SID detected. Please fix this problem manually!" +msgstr "" +"Se ha detectado un SID Samba sin definir. ¡Por favor solucione este problema " +"manualmente!" + +#: personal/samba/class_sambaAccount.inc:994 +msgid "" +"Cannot convert primary group to samba group: group cannot be identified!" +msgstr "" +"No se puede convertir un grupo primario a grupo samba: ¡El grupo no puede " +"ser identificado!" + +#: personal/samba/class_sambaAccount.inc:1200 personal/samba/main.inc:136 +msgid "Samba settings" +msgstr "Parametros de samba" + +#: personal/samba/class_sambaAccount.inc:1204 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/samba/class_sambaAccount.inc:1210 +msgid "Generic home directory" +msgstr "Directorio predeterminado de usuario" + +#: personal/samba/class_sambaAccount.inc:1211 +msgid "Generic samba home drive" +msgstr "Unidad predeterminada de usuario samba" + +#: personal/samba/class_sambaAccount.inc:1213 +msgid "Generic script path" +msgstr "Ruta predeterminada del Script" + +#: personal/samba/class_sambaAccount.inc:1214 +msgid "Generic profile path" +msgstr "Ruta predeterminada del Perfil" + +#: personal/samba/class_sambaAccount.inc:1217 +msgid "Allow user to change password" +msgstr "Permitir al usuario cambiar su contraseña" + +#: personal/samba/class_sambaAccount.inc:1220 +msgid "Account expires" +msgstr "La cuenta expirará después de" + +#: personal/samba/class_sambaAccount.inc:1221 +msgid "Password expires" +msgstr "La contraseña expira en" + +#: personal/samba/class_sambaAccount.inc:1224 +msgid "Logon hours" +msgstr "Horario de inicio de sesión" + +#: personal/samba/class_sambaAccount.inc:1225 +msgid "Allow connection from" +msgstr "Permitir la conexión desde" + +#: personal/samba/class_sambaAccount.inc:1284 +msgid "" +"The windows user manager only allows eight clients. You've specified more " +"than eight." +msgstr "" +"El administrador de usuarios de windows solo permite ocho clientes. Ha " +"especificado mas de ocho." + +#: personal/samba/samba3_workstations.tpl:6 +msgid "Select workstations to add" +msgstr "Selecciones estaciones de trabajo para añadir" + +#: personal/samba/samba3_workstations.tpl:20 +msgid "Filters" +msgstr "Filtros" + +#: personal/samba/samba3_workstations.tpl:26 +msgid "Display workstations of department" +msgstr "Mostrar estaciones de trabajo del departamento" + +#: personal/samba/samba3_workstations.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Escoja el departamento base de la búsqueda" + +#: personal/samba/samba3_workstations.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Expresión regular para buscar direcciones" diff --git a/trunk/gosa-plugins/samba/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/samba/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d47de3bb4 --- /dev/null +++ b/trunk/gosa-plugins/samba/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,399 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-12-03 23:18+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/samba/wingeneric.tpl:6 +msgid "Machine name" +msgstr "Nom de la machine" + +#: admin/systems/samba/wingeneric.tpl:17 +#: admin/systems/samba/class_winGeneric.inc:314 +msgid "Base" +msgstr "" + +#: admin/systems/samba/wingeneric.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Sélectionnez la branche où sera placée le groupe" + +#: admin/systems/samba/wingeneric.tpl:26 +msgid "Select a base" +msgstr "Sélectionnez une base" + +#: admin/systems/samba/wingeneric.tpl:35 +#: admin/systems/samba/class_winGeneric.inc:315 +msgid "Description" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:102 +msgid "network" +msgstr "réseau" + +#: admin/systems/samba/class_winGeneric.inc:169 +#: admin/systems/samba/class_winGeneric.inc:292 +#: personal/samba/class_sambaAccount.inc:737 +#: personal/samba/class_sambaAccount.inc:1104 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/systems/samba/class_winGeneric.inc:228 +#: admin/systems/samba/class_winGeneric.inc:313 +msgid "Name" +msgstr "Nom" + +#: admin/systems/samba/class_winGeneric.inc:304 +msgid "Win generic" +msgstr "Informations Windows" + +#: admin/systems/samba/class_winGeneric.inc:305 +msgid "Windows workstation generic" +msgstr "Station de travail Windows générique" + +#: admin/systems/samba/class_winGeneric.inc:310 +msgid "Win workstation" +msgstr "Station de travail Windows" + +#: personal/samba/samba3.tpl:6 personal/samba/samba2.tpl:6 +msgid "Generic" +msgstr "Informations" + +#: personal/samba/samba3.tpl:13 personal/samba/samba3.tpl:105 +#: personal/samba/class_sambaAccount.inc:762 +#: personal/samba/class_sambaAccount.inc:1264 +msgid "Home directory" +msgstr "Répertoire Home" + +#: personal/samba/samba3.tpl:26 personal/samba/class_sambaAccount.inc:1212 +msgid "Domain" +msgstr "Domaine" + +#: personal/samba/samba3.tpl:43 personal/samba/samba2.tpl:37 +msgid "Script path" +msgstr "Chemin du Script" + +#: personal/samba/samba3.tpl:51 personal/samba/samba3.tpl:118 +#: personal/samba/samba2.tpl:45 personal/samba/class_sambaAccount.inc:763 +#: personal/samba/class_sambaAccount.inc:1265 +msgid "Profile path" +msgstr "Chemin du Profile" + +#: personal/samba/samba3.tpl:65 +msgid "Terminal Server" +msgstr "Serveur de terminaux" + +#: personal/samba/samba3.tpl:102 personal/samba/class_sambaAccount.inc:1215 +msgid "Allow login on terminal server" +msgstr "Permet la connexion sur un serveur de terminaux" + +#: personal/samba/samba3.tpl:138 personal/samba/class_sambaAccount.inc:1216 +msgid "Inherit client config" +msgstr "Hérite de la configuration du client" + +#: personal/samba/samba3.tpl:141 +msgid "Initial program" +msgstr "Programme initial" + +#: personal/samba/samba3.tpl:149 +msgid "Working directory" +msgstr "Répertoire de travail" + +#: personal/samba/samba3.tpl:166 +msgid "Timeout settings (in minutes)" +msgstr "Configuration du temps d'attente (en minutes)" + +#: personal/samba/samba3.tpl:182 personal/samba/class_sambaAccount.inc:770 +#: personal/samba/class_sambaAccount.inc:1272 +msgid "Connection" +msgstr "Connexion" + +#: personal/samba/samba3.tpl:196 personal/samba/class_sambaAccount.inc:771 +#: personal/samba/class_sambaAccount.inc:1273 +msgid "Disconnection" +msgstr "Déconnexion" + +#: personal/samba/samba3.tpl:210 personal/samba/class_sambaAccount.inc:772 +#: personal/samba/class_sambaAccount.inc:1274 +msgid "IDLE" +msgstr "En attente" + +#: personal/samba/samba3.tpl:226 +msgid "Client devices" +msgstr "Périphériques clients" + +#: personal/samba/samba3.tpl:233 +msgid "Connect client drives at logon" +msgstr "Connecter les lecteurs clients à l'identification" + +#: personal/samba/samba3.tpl:241 +msgid "Connect client printers at logon" +msgstr "Connecter les imprimantes clients à l'identification" + +#: personal/samba/samba3.tpl:249 +msgid "Default to main client printer" +msgstr "Imprimante par défaut" + +#: personal/samba/samba3.tpl:259 +msgid "Miscellaneous" +msgstr "Divers" + +#: personal/samba/samba3.tpl:263 +msgid "Shadowing" +msgstr "Masquer" + +#: personal/samba/samba3.tpl:274 +msgid "On broken or timed out" +msgstr "Sur interrompu ou temps d'attente dépassé" + +#: personal/samba/samba3.tpl:284 +msgid "Reconnect if disconnected" +msgstr "Reconnexion si déconnecté" + +#: personal/samba/samba3.tpl:301 personal/samba/samba2.tpl:59 +msgid "Access options" +msgstr "Options d'accès" + +#: personal/samba/samba3.tpl:309 personal/samba/samba2.tpl:67 +msgid "Allow user to change password from client" +msgstr "" +"Autoriser les utilisateurs à changer de mot de passe à partir d'une station " +"cliente" + +#: personal/samba/samba3.tpl:314 personal/samba/samba2.tpl:72 +#: personal/samba/class_sambaAccount.inc:1218 +msgid "Login from windows client requires no password" +msgstr "" +"L'identification sur une station windows ne nécessite pas de mot de passe" + +#: personal/samba/samba3.tpl:319 personal/samba/class_sambaAccount.inc:1219 +msgid "Lock samba account" +msgstr "Verrouiller le compte Samba" + +#: personal/samba/samba3.tpl:324 personal/samba/samba2.tpl:87 +msgid "Password expires on" +msgstr "Le mot de passe expirera le" + +#: personal/samba/samba3.tpl:344 personal/samba/class_sambaAccount.inc:1222 +msgid "Limit Logon Time" +msgstr "Limiter les temps d'accès" + +#: personal/samba/samba3.tpl:364 personal/samba/class_sambaAccount.inc:1223 +msgid "Limit Logoff Time" +msgstr "Limiter les heures de déconnections" + +#: personal/samba/samba3.tpl:385 +msgid "Account expires after" +msgstr "Le compte expire après" + +#: personal/samba/samba3.tpl:408 +msgid "Samba logon times" +msgstr "Heures d'accès à Samba" + +#: personal/samba/samba3.tpl:408 +msgid "Edit settings..." +msgstr "Editer les paramètres..." + +#: personal/samba/samba3.tpl:416 +msgid "Allow connection from these workstations only" +msgstr "Permet la connections depuis ces stations seulement" + +#: personal/samba/samba3.tpl:427 +msgid "Used by all users" +msgstr "Utilisé par tout les utilisateurs" + +#: personal/samba/samba3.tpl:430 +msgid "Used by some users" +msgstr "Utilisé par certains utilisateurs" + +#: personal/samba/sambaLogonHours.tpl:22 +msgid "Specify the hours this user is allowed to log in" +msgstr "Indiquez les heures auquel l'utilisateur est autorisé à se connecter" + +#: personal/samba/sambaLogonHours.tpl:28 +msgid "Hour" +msgstr "Heure" + +#: personal/samba/samba2.tpl:13 +msgid "Samba home" +msgstr "Répertoire de l'utilisateur samba" + +#: personal/samba/samba2.tpl:77 +msgid "Temporary disable samba account" +msgstr "Désactiver temporairement le compte Samba" + +#: personal/samba/class_sambaAccount.inc:24 +#: personal/samba/class_sambaAccount.inc:217 +#: personal/samba/class_sambaAccount.inc:229 +#: personal/samba/class_sambaAccount.inc:230 +#: personal/samba/class_sambaAccount.inc:239 +#: personal/samba/class_sambaAccount.inc:240 +#: personal/samba/class_sambaAccount.inc:242 +#: personal/samba/class_sambaAccount.inc:243 +#: personal/samba/class_sambaAccount.inc:1199 +msgid "Samba" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:25 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/samba/class_sambaAccount.inc:243 +msgid "POSIX" +msgstr "UNIX" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Error" +msgstr "Erreur" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Please select an entry!" +msgstr "Veuillez sélectionner une entrée !" + +#: personal/samba/class_sambaAccount.inc:535 +msgid "disabled" +msgstr "désactivé" + +#: personal/samba/class_sambaAccount.inc:536 +msgid "input on, notify on" +msgstr "entrée activée, notification activée" + +#: personal/samba/class_sambaAccount.inc:537 +msgid "input on, notify off" +msgstr "entrée activée, notification désactivée" + +#: personal/samba/class_sambaAccount.inc:538 +msgid "input off, notify on" +msgstr "entrée désactivée, notification activée" + +#: personal/samba/class_sambaAccount.inc:539 +msgid "input off, nofify off" +msgstr "entrée désactivée, notification désactivée" + +#: personal/samba/class_sambaAccount.inc:541 +msgid "disconnect" +msgstr "déconnecté" + +#: personal/samba/class_sambaAccount.inc:542 +msgid "reset" +msgstr "remise à zéro" + +#: personal/samba/class_sambaAccount.inc:544 +msgid "from any client" +msgstr "de n'importe quel client" + +#: personal/samba/class_sambaAccount.inc:545 +msgid "from previous client only" +msgstr "du client précédent seulement" + +#: personal/samba/class_sambaAccount.inc:755 +msgid "Home drive" +msgstr "Répertoire Home" + +#: personal/samba/class_sambaAccount.inc:758 +msgid "Home path" +msgstr "Chemin du répertoire personnel" + +#: personal/samba/class_sambaAccount.inc:781 +msgid "The windows usermanager allows eight clients at maximum!" +msgstr "" +"Le gestionnaire d'utilisateurs windows accepte seulement huit clients. Vous " +"en avez spécifiés plus de huit." + +#: personal/samba/class_sambaAccount.inc:970 +#: personal/samba/class_sambaAccount.inc:994 +msgid "Warning" +msgstr "Avertissement" + +#: personal/samba/class_sambaAccount.inc:970 +msgid "Undefined Samba SID detected. Please fix this problem manually!" +msgstr "" +"Détection d'un SID Samba non défini. Veuillez fixer ceci manuellement !" + +#: personal/samba/class_sambaAccount.inc:994 +msgid "" +"Cannot convert primary group to samba group: group cannot be identified!" +msgstr "" +"Impossible de convertir le groupe primaire en un groupe primaire samba : le " +"groupe ne peut être identifié !" + +#: personal/samba/class_sambaAccount.inc:1200 personal/samba/main.inc:136 +msgid "Samba settings" +msgstr "Configuration Samba" + +#: personal/samba/class_sambaAccount.inc:1204 +msgid "My account" +msgstr "Mon Compte" + +#: personal/samba/class_sambaAccount.inc:1210 +msgid "Generic home directory" +msgstr "Répertoire Home de base" + +#: personal/samba/class_sambaAccount.inc:1211 +msgid "Generic samba home drive" +msgstr "Lecteur réseau par défaut" + +#: personal/samba/class_sambaAccount.inc:1213 +msgid "Generic script path" +msgstr "Chemin du script par défaut" + +#: personal/samba/class_sambaAccount.inc:1214 +msgid "Generic profile path" +msgstr "Chemin par défaut du profil" + +#: personal/samba/class_sambaAccount.inc:1217 +msgid "Allow user to change password" +msgstr "Autoriser les utilisateurs à changer de mot de passe" + +#: personal/samba/class_sambaAccount.inc:1220 +msgid "Account expires" +msgstr "Le compte expire" + +#: personal/samba/class_sambaAccount.inc:1221 +msgid "Password expires" +msgstr "Le mot de passe expirera le" + +#: personal/samba/class_sambaAccount.inc:1224 +msgid "Logon hours" +msgstr "Heure de connexions" + +#: personal/samba/class_sambaAccount.inc:1225 +msgid "Allow connection from" +msgstr "Permettre la connexion depuis" + +#: personal/samba/class_sambaAccount.inc:1284 +msgid "" +"The windows user manager only allows eight clients. You've specified more " +"than eight." +msgstr "" +"Le gestionnaire d'utilisateurs windows accepte seulement huit clients. Vous " +"en avez spécifiés plus de huit." + +#: personal/samba/samba3_workstations.tpl:6 +msgid "Select workstations to add" +msgstr "Sélectionner les stations à ajouter" + +#: personal/samba/samba3_workstations.tpl:20 +msgid "Filters" +msgstr "Filtres" + +#: personal/samba/samba3_workstations.tpl:26 +msgid "Display workstations of department" +msgstr "Afficher les stations d'un département" + +#: personal/samba/samba3_workstations.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Sélectionner le département où sera effectuée la recherche" + +#: personal/samba/samba3_workstations.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Expression régulière pour sélectionner les adresses correspondantes" diff --git a/trunk/gosa-plugins/samba/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/samba/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f898a36fd --- /dev/null +++ b/trunk/gosa-plugins/samba/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,529 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/systems/samba/wingeneric.tpl:6 +msgid "Machine name" +msgstr "" + +#: admin/systems/samba/wingeneric.tpl:17 +#: admin/systems/samba/class_winGeneric.inc:314 +msgid "Base" +msgstr "Base" + +#: admin/systems/samba/wingeneric.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Scegli il subtree dove mettere il gruppo" + +#: admin/systems/samba/wingeneric.tpl:26 +#, fuzzy +msgid "Select a base" +msgstr "Rimuovi" + +#: admin/systems/samba/wingeneric.tpl:35 +#: admin/systems/samba/class_winGeneric.inc:315 +msgid "Description" +msgstr "Descrizione" + +#: admin/systems/samba/class_winGeneric.inc:102 +msgid "network" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:169 +#: admin/systems/samba/class_winGeneric.inc:292 +#: personal/samba/class_sambaAccount.inc:737 +#: personal/samba/class_sambaAccount.inc:1104 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/systems/samba/class_winGeneric.inc:228 +#: admin/systems/samba/class_winGeneric.inc:313 +msgid "Name" +msgstr "Cognome" + +#: admin/systems/samba/class_winGeneric.inc:304 +#, fuzzy +msgid "Win generic" +msgstr "Stampante" + +#: admin/systems/samba/class_winGeneric.inc:305 +#, fuzzy +msgid "Windows workstation generic" +msgstr "Mostra workstation" + +#: admin/systems/samba/class_winGeneric.inc:310 +#, fuzzy +msgid "Win workstation" +msgstr "Amministrazione" + +#: personal/samba/samba3.tpl:6 personal/samba/samba2.tpl:6 +msgid "Generic" +msgstr "Generale" + +#: personal/samba/samba3.tpl:13 personal/samba/samba3.tpl:105 +#: personal/samba/class_sambaAccount.inc:762 +#: personal/samba/class_sambaAccount.inc:1264 +msgid "Home directory" +msgstr "Home directory" + +#: personal/samba/samba3.tpl:26 personal/samba/class_sambaAccount.inc:1212 +msgid "Domain" +msgstr "Dominio" + +#: personal/samba/samba3.tpl:43 personal/samba/samba2.tpl:37 +msgid "Script path" +msgstr "Script path" + +#: personal/samba/samba3.tpl:51 personal/samba/samba3.tpl:118 +#: personal/samba/samba2.tpl:45 personal/samba/class_sambaAccount.inc:763 +#: personal/samba/class_sambaAccount.inc:1265 +msgid "Profile path" +msgstr "Path del profilo" + +#: personal/samba/samba3.tpl:65 +msgid "Terminal Server" +msgstr "Terminal Server" + +#: personal/samba/samba3.tpl:102 personal/samba/class_sambaAccount.inc:1215 +msgid "Allow login on terminal server" +msgstr "Permetti la connessione al Terminal Server" + +#: personal/samba/samba3.tpl:138 personal/samba/class_sambaAccount.inc:1216 +msgid "Inherit client config" +msgstr "Eredita la configurazione del client" + +#: personal/samba/samba3.tpl:141 +msgid "Initial program" +msgstr "Programma iniziale" + +#: personal/samba/samba3.tpl:149 +msgid "Working directory" +msgstr "Cartella di lavoro" + +#: personal/samba/samba3.tpl:166 +msgid "Timeout settings (in minutes)" +msgstr "Timeout (in minuti)" + +#: personal/samba/samba3.tpl:182 personal/samba/class_sambaAccount.inc:770 +#: personal/samba/class_sambaAccount.inc:1272 +msgid "Connection" +msgstr "Connessione" + +#: personal/samba/samba3.tpl:196 personal/samba/class_sambaAccount.inc:771 +#: personal/samba/class_sambaAccount.inc:1273 +msgid "Disconnection" +msgstr "Disconnessione " + +#: personal/samba/samba3.tpl:210 personal/samba/class_sambaAccount.inc:772 +#: personal/samba/class_sambaAccount.inc:1274 +msgid "IDLE" +msgstr "" + +#: personal/samba/samba3.tpl:226 +msgid "Client devices" +msgstr "Dispositivi del client" + +#: personal/samba/samba3.tpl:233 +msgid "Connect client drives at logon" +msgstr "Connetti i drive del client alla connessione" + +#: personal/samba/samba3.tpl:241 +msgid "Connect client printers at logon" +msgstr "Connetti le stampanti del client alla connessione" + +#: personal/samba/samba3.tpl:249 +msgid "Default to main client printer" +msgstr "" + +#: personal/samba/samba3.tpl:259 +msgid "Miscellaneous" +msgstr "Misc" + +#: personal/samba/samba3.tpl:263 +msgid "Shadowing" +msgstr "" + +#: personal/samba/samba3.tpl:274 +msgid "On broken or timed out" +msgstr "" + +#: personal/samba/samba3.tpl:284 +msgid "Reconnect if disconnected" +msgstr "" + +#: personal/samba/samba3.tpl:301 personal/samba/samba2.tpl:59 +msgid "Access options" +msgstr "Opzioni di accesso" + +#: personal/samba/samba3.tpl:309 personal/samba/samba2.tpl:67 +msgid "Allow user to change password from client" +msgstr "Permetti all'utente di cambiare la propria password da un client" + +#: personal/samba/samba3.tpl:314 personal/samba/samba2.tpl:72 +#: personal/samba/class_sambaAccount.inc:1218 +msgid "Login from windows client requires no password" +msgstr "L'accesso ai client Windows non richiede password" + +#: personal/samba/samba3.tpl:319 personal/samba/class_sambaAccount.inc:1219 +msgid "Lock samba account" +msgstr "Blocca l'account samba" + +#: personal/samba/samba3.tpl:324 personal/samba/samba2.tpl:87 +msgid "Password expires on" +msgstr "La password spira il" + +#: personal/samba/samba3.tpl:344 personal/samba/class_sambaAccount.inc:1222 +msgid "Limit Logon Time" +msgstr "Limita il tempo per la connessione" + +#: personal/samba/samba3.tpl:364 personal/samba/class_sambaAccount.inc:1223 +msgid "Limit Logoff Time" +msgstr "Limita il tempo per la disconnessione" + +#: personal/samba/samba3.tpl:385 +msgid "Account expires after" +msgstr "L'account spira dopo" + +#: personal/samba/samba3.tpl:408 +#, fuzzy +msgid "Samba logon times" +msgstr "Gruppo Samba" + +#: personal/samba/samba3.tpl:408 +#, fuzzy +msgid "Edit settings..." +msgstr "Opzioni di posta dell'identità" + +#: personal/samba/samba3.tpl:416 +msgid "Allow connection from these workstations only" +msgstr "Permetti la connessione solo da queste workstation" + +#: personal/samba/samba3.tpl:427 +msgid "Used by all users" +msgstr "" + +#: personal/samba/samba3.tpl:430 +msgid "Used by some users" +msgstr "" + +#: personal/samba/sambaLogonHours.tpl:22 +#, fuzzy +msgid "Specify the hours this user is allowed to log in" +msgstr "Specifica il server di posta per l'utente" + +#: personal/samba/sambaLogonHours.tpl:28 +#, fuzzy +msgid "Hour" +msgstr "ora" + +#: personal/samba/samba2.tpl:13 +msgid "Samba home" +msgstr "Home di Samba" + +#: personal/samba/samba2.tpl:77 +msgid "Temporary disable samba account" +msgstr "Disabilita temporaneamente l'account Samba" + +#: personal/samba/class_sambaAccount.inc:24 +#: personal/samba/class_sambaAccount.inc:217 +#: personal/samba/class_sambaAccount.inc:229 +#: personal/samba/class_sambaAccount.inc:230 +#: personal/samba/class_sambaAccount.inc:239 +#: personal/samba/class_sambaAccount.inc:240 +#: personal/samba/class_sambaAccount.inc:242 +#: personal/samba/class_sambaAccount.inc:243 +#: personal/samba/class_sambaAccount.inc:1199 +msgid "Samba" +msgstr "Samba" + +#: personal/samba/class_sambaAccount.inc:25 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/samba/class_sambaAccount.inc:243 +msgid "POSIX" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Error" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Please select an entry!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:535 +msgid "disabled" +msgstr "disabilitato" + +#: personal/samba/class_sambaAccount.inc:536 +msgid "input on, notify on" +msgstr "input on, notifica on" + +#: personal/samba/class_sambaAccount.inc:537 +msgid "input on, notify off" +msgstr "input on, notifica off" + +#: personal/samba/class_sambaAccount.inc:538 +msgid "input off, notify on" +msgstr "input off, notifica on" + +#: personal/samba/class_sambaAccount.inc:539 +msgid "input off, nofify off" +msgstr "input off, notifica off" + +#: personal/samba/class_sambaAccount.inc:541 +msgid "disconnect" +msgstr "disconnetti" + +#: personal/samba/class_sambaAccount.inc:542 +msgid "reset" +msgstr "reset" + +#: personal/samba/class_sambaAccount.inc:544 +msgid "from any client" +msgstr "da qualsiasi client " + +#: personal/samba/class_sambaAccount.inc:545 +msgid "from previous client only" +msgstr "solo dal client precedente" + +#: personal/samba/class_sambaAccount.inc:755 +#, fuzzy +msgid "Home drive" +msgstr "Home directory" + +#: personal/samba/class_sambaAccount.inc:758 +#, fuzzy +msgid "Home path" +msgstr "Telefono privato" + +#: personal/samba/class_sambaAccount.inc:781 +msgid "The windows usermanager allows eight clients at maximum!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:970 +#: personal/samba/class_sambaAccount.inc:994 +msgid "Warning" +msgstr "Attenzione" + +#: personal/samba/class_sambaAccount.inc:970 +msgid "Undefined Samba SID detected. Please fix this problem manually!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:994 +msgid "" +"Cannot convert primary group to samba group: group cannot be identified!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1200 personal/samba/main.inc:136 +msgid "Samba settings" +msgstr "Impostazioni Samba" + +#: personal/samba/class_sambaAccount.inc:1204 +msgid "My account" +msgstr "Identità" + +#: personal/samba/class_sambaAccount.inc:1210 +#, fuzzy +msgid "Generic home directory" +msgstr "Home directory" + +#: personal/samba/class_sambaAccount.inc:1211 +msgid "Generic samba home drive" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1213 +#, fuzzy +msgid "Generic script path" +msgstr "Script path" + +#: personal/samba/class_sambaAccount.inc:1214 +#, fuzzy +msgid "Generic profile path" +msgstr "Path del profilo" + +#: personal/samba/class_sambaAccount.inc:1217 +#, fuzzy +msgid "Allow user to change password" +msgstr "Permetti all'utente di cambiare la propria password da un client" + +#: personal/samba/class_sambaAccount.inc:1220 +#, fuzzy +msgid "Account expires" +msgstr "L'account spira dopo" + +#: personal/samba/class_sambaAccount.inc:1221 +#, fuzzy +msgid "Password expires" +msgstr "La password spira il" + +#: personal/samba/class_sambaAccount.inc:1224 +#, fuzzy +msgid "Logon hours" +msgstr "ora" + +#: personal/samba/class_sambaAccount.inc:1225 +#, fuzzy +msgid "Allow connection from" +msgstr "Permetti la connessione solo da queste workstation" + +#: personal/samba/class_sambaAccount.inc:1284 +msgid "" +"The windows user manager only allows eight clients. You've specified more " +"than eight." +msgstr "" + +#: personal/samba/samba3_workstations.tpl:6 +msgid "Select workstations to add" +msgstr "Selezione le workstation da aggiungere" + +#: personal/samba/samba3_workstations.tpl:20 +msgid "Filters" +msgstr "Filtri" + +#: personal/samba/samba3_workstations.tpl:26 +msgid "Display workstations of department" +msgstr "Mostra le workstation del dipartimento" + +#: personal/samba/samba3_workstations.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Scegli il dipartimento di base per la ricerca" + +#: personal/samba/samba3_workstations.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Espressione regolare per selezionare l'indirizzo" + +#~ msgid "Choose subtree to place terminal in" +#~ msgstr "Scegli il subtree dove mettere i terminali" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Delete" +#~ msgstr "Rimuovi" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Apply" +#~ msgstr "Applica" + +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "giorno" + +#, fuzzy +#~ msgid "Monday" +#~ msgstr "giorno" + +#, fuzzy +#~ msgid "Tuesday" +#~ msgstr "giorno" + +#, fuzzy +#~ msgid "Thursday" +#~ msgstr "ora" + +#, fuzzy +#~ msgid "Friday" +#~ msgstr "giorno" + +#, fuzzy +#~ msgid "Saturday" +#~ msgstr "Stato" + +#~ msgid "This account has no samba extensions." +#~ msgstr "Questa identità non possiede estensioni Samba." + +#~ msgid "Remove samba account" +#~ msgstr "Elimina estensioni Samba" + +#~ msgid "" +#~ "This account has samba features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "Questa identià possiede estensioni Samba." + +#~ msgid "Create samba account" +#~ msgstr "Crea estensioni Samba" + +#~ msgid "" +#~ "This account has samba features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "Questa identità non possiede estensioni Samba." + +#~ msgid "" +#~ "This account has samba features disabled. Posix features are needed for " +#~ "samba accounts, enable them first." +#~ msgstr "" +#~ "Questa identità non possiede estensioni Samba. Per poterle creare occorre " +#~ "creare prima le estensioni Unix." + +#~ msgid "January" +#~ msgstr "Gennaio" + +#~ msgid "February" +#~ msgstr "Febbraio" + +#~ msgid "March" +#~ msgstr "Marzo" + +#~ msgid "April" +#~ msgstr "Aprile" + +#~ msgid "May" +#~ msgstr "Maggio" + +#~ msgid "June" +#~ msgstr "Giugno" + +#~ msgid "July" +#~ msgstr "Luglio" + +#~ msgid "August" +#~ msgstr "Agosto" + +#~ msgid "September" +#~ msgstr "Settembre" + +#~ msgid "October" +#~ msgstr "Ottobre" + +#~ msgid "November" +#~ msgstr "Novembre" + +#~ msgid "December" +#~ msgstr "Dicembre" + +#, fuzzy +#~ msgid "Removing of user/samba account with dn '%s' failed." +#~ msgstr "Elimina estensioni Samba" + +#~ msgid "The value specified as '%s' contains invalid characters!" +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" + +#, fuzzy +#~ msgid "Saving of user/samba account with dn '%s' failed." +#~ msgstr "Account Kolab" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " +#~ "questo dialogo" + +#~ msgid "Edit" +#~ msgstr "Modifica" diff --git a/trunk/gosa-plugins/samba/locale/messages.po b/trunk/gosa-plugins/samba/locale/messages.po new file mode 100644 index 000000000..c86546192 --- /dev/null +++ b/trunk/gosa-plugins/samba/locale/messages.po @@ -0,0 +1,391 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/samba/wingeneric.tpl:6 +msgid "Machine name" +msgstr "" + +#: admin/systems/samba/wingeneric.tpl:17 +#: admin/systems/samba/class_winGeneric.inc:314 +msgid "Base" +msgstr "" + +#: admin/systems/samba/wingeneric.tpl:20 +msgid "Choose subtree to place group in" +msgstr "" + +#: admin/systems/samba/wingeneric.tpl:26 +msgid "Select a base" +msgstr "" + +#: admin/systems/samba/wingeneric.tpl:35 +#: admin/systems/samba/class_winGeneric.inc:315 +msgid "Description" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:102 +msgid "network" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:169 +#: admin/systems/samba/class_winGeneric.inc:292 +#: personal/samba/class_sambaAccount.inc:737 +#: personal/samba/class_sambaAccount.inc:1104 +msgid "LDAP error" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:228 +#: admin/systems/samba/class_winGeneric.inc:313 +msgid "Name" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:304 +msgid "Win generic" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:305 +msgid "Windows workstation generic" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:310 +msgid "Win workstation" +msgstr "" + +#: personal/samba/samba3.tpl:6 personal/samba/samba2.tpl:6 +msgid "Generic" +msgstr "" + +#: personal/samba/samba3.tpl:13 personal/samba/samba3.tpl:105 +#: personal/samba/class_sambaAccount.inc:762 +#: personal/samba/class_sambaAccount.inc:1264 +msgid "Home directory" +msgstr "" + +#: personal/samba/samba3.tpl:26 personal/samba/class_sambaAccount.inc:1212 +msgid "Domain" +msgstr "" + +#: personal/samba/samba3.tpl:43 personal/samba/samba2.tpl:37 +msgid "Script path" +msgstr "" + +#: personal/samba/samba3.tpl:51 personal/samba/samba3.tpl:118 +#: personal/samba/samba2.tpl:45 personal/samba/class_sambaAccount.inc:763 +#: personal/samba/class_sambaAccount.inc:1265 +msgid "Profile path" +msgstr "" + +#: personal/samba/samba3.tpl:65 +msgid "Terminal Server" +msgstr "" + +#: personal/samba/samba3.tpl:102 personal/samba/class_sambaAccount.inc:1215 +msgid "Allow login on terminal server" +msgstr "" + +#: personal/samba/samba3.tpl:138 personal/samba/class_sambaAccount.inc:1216 +msgid "Inherit client config" +msgstr "" + +#: personal/samba/samba3.tpl:141 +msgid "Initial program" +msgstr "" + +#: personal/samba/samba3.tpl:149 +msgid "Working directory" +msgstr "" + +#: personal/samba/samba3.tpl:166 +msgid "Timeout settings (in minutes)" +msgstr "" + +#: personal/samba/samba3.tpl:182 personal/samba/class_sambaAccount.inc:770 +#: personal/samba/class_sambaAccount.inc:1272 +msgid "Connection" +msgstr "" + +#: personal/samba/samba3.tpl:196 personal/samba/class_sambaAccount.inc:771 +#: personal/samba/class_sambaAccount.inc:1273 +msgid "Disconnection" +msgstr "" + +#: personal/samba/samba3.tpl:210 personal/samba/class_sambaAccount.inc:772 +#: personal/samba/class_sambaAccount.inc:1274 +msgid "IDLE" +msgstr "" + +#: personal/samba/samba3.tpl:226 +msgid "Client devices" +msgstr "" + +#: personal/samba/samba3.tpl:233 +msgid "Connect client drives at logon" +msgstr "" + +#: personal/samba/samba3.tpl:241 +msgid "Connect client printers at logon" +msgstr "" + +#: personal/samba/samba3.tpl:249 +msgid "Default to main client printer" +msgstr "" + +#: personal/samba/samba3.tpl:259 +msgid "Miscellaneous" +msgstr "" + +#: personal/samba/samba3.tpl:263 +msgid "Shadowing" +msgstr "" + +#: personal/samba/samba3.tpl:274 +msgid "On broken or timed out" +msgstr "" + +#: personal/samba/samba3.tpl:284 +msgid "Reconnect if disconnected" +msgstr "" + +#: personal/samba/samba3.tpl:301 personal/samba/samba2.tpl:59 +msgid "Access options" +msgstr "" + +#: personal/samba/samba3.tpl:309 personal/samba/samba2.tpl:67 +msgid "Allow user to change password from client" +msgstr "" + +#: personal/samba/samba3.tpl:314 personal/samba/samba2.tpl:72 +#: personal/samba/class_sambaAccount.inc:1218 +msgid "Login from windows client requires no password" +msgstr "" + +#: personal/samba/samba3.tpl:319 personal/samba/class_sambaAccount.inc:1219 +msgid "Lock samba account" +msgstr "" + +#: personal/samba/samba3.tpl:324 personal/samba/samba2.tpl:87 +msgid "Password expires on" +msgstr "" + +#: personal/samba/samba3.tpl:344 personal/samba/class_sambaAccount.inc:1222 +msgid "Limit Logon Time" +msgstr "" + +#: personal/samba/samba3.tpl:364 personal/samba/class_sambaAccount.inc:1223 +msgid "Limit Logoff Time" +msgstr "" + +#: personal/samba/samba3.tpl:385 +msgid "Account expires after" +msgstr "" + +#: personal/samba/samba3.tpl:408 +msgid "Samba logon times" +msgstr "" + +#: personal/samba/samba3.tpl:408 +msgid "Edit settings..." +msgstr "" + +#: personal/samba/samba3.tpl:416 +msgid "Allow connection from these workstations only" +msgstr "" + +#: personal/samba/samba3.tpl:427 +msgid "Used by all users" +msgstr "" + +#: personal/samba/samba3.tpl:430 +msgid "Used by some users" +msgstr "" + +#: personal/samba/sambaLogonHours.tpl:22 +msgid "Specify the hours this user is allowed to log in" +msgstr "" + +#: personal/samba/sambaLogonHours.tpl:28 +msgid "Hour" +msgstr "" + +#: personal/samba/samba2.tpl:13 +msgid "Samba home" +msgstr "" + +#: personal/samba/samba2.tpl:77 +msgid "Temporary disable samba account" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:24 +#: personal/samba/class_sambaAccount.inc:217 +#: personal/samba/class_sambaAccount.inc:229 +#: personal/samba/class_sambaAccount.inc:230 +#: personal/samba/class_sambaAccount.inc:239 +#: personal/samba/class_sambaAccount.inc:240 +#: personal/samba/class_sambaAccount.inc:242 +#: personal/samba/class_sambaAccount.inc:243 +#: personal/samba/class_sambaAccount.inc:1199 +msgid "Samba" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:25 +msgid "This does something" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:243 +msgid "POSIX" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Error" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Please select an entry!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:535 +msgid "disabled" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:536 +msgid "input on, notify on" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:537 +msgid "input on, notify off" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:538 +msgid "input off, notify on" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:539 +msgid "input off, nofify off" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:541 +msgid "disconnect" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:542 +msgid "reset" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:544 +msgid "from any client" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:545 +msgid "from previous client only" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:755 +msgid "Home drive" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:758 +msgid "Home path" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:781 +msgid "The windows usermanager allows eight clients at maximum!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:970 +#: personal/samba/class_sambaAccount.inc:994 +msgid "Warning" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:970 +msgid "Undefined Samba SID detected. Please fix this problem manually!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:994 +msgid "" +"Cannot convert primary group to samba group: group cannot be identified!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1200 personal/samba/main.inc:136 +msgid "Samba settings" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1204 +msgid "My account" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1210 +msgid "Generic home directory" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1211 +msgid "Generic samba home drive" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1213 +msgid "Generic script path" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1214 +msgid "Generic profile path" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1217 +msgid "Allow user to change password" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1220 +msgid "Account expires" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1221 +msgid "Password expires" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1224 +msgid "Logon hours" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1225 +msgid "Allow connection from" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1284 +msgid "" +"The windows user manager only allows eight clients. You've specified more " +"than eight." +msgstr "" + +#: personal/samba/samba3_workstations.tpl:6 +msgid "Select workstations to add" +msgstr "" + +#: personal/samba/samba3_workstations.tpl:20 +msgid "Filters" +msgstr "" + +#: personal/samba/samba3_workstations.tpl:26 +msgid "Display workstations of department" +msgstr "" + +#: personal/samba/samba3_workstations.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "" + +#: personal/samba/samba3_workstations.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "" diff --git a/trunk/gosa-plugins/samba/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/samba/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..5ae2b3da8 --- /dev/null +++ b/trunk/gosa-plugins/samba/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,408 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005,2006,2007,2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-06-09 17:22+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/samba/wingeneric.tpl:6 +msgid "Machine name" +msgstr "Machinenaam" + +#: admin/systems/samba/wingeneric.tpl:17 +#: admin/systems/samba/class_winGeneric.inc:314 +msgid "Base" +msgstr "Basis" + +#: admin/systems/samba/wingeneric.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Selecteer de subtree waaronder deze groep geplaatst wordt" + +#: admin/systems/samba/wingeneric.tpl:26 +msgid "Select a base" +msgstr "Selecteer een basis" + +#: admin/systems/samba/wingeneric.tpl:35 +#: admin/systems/samba/class_winGeneric.inc:315 +msgid "Description" +msgstr "Omschrijving" + +#: admin/systems/samba/class_winGeneric.inc:102 +msgid "network" +msgstr "netwerk" + +#: admin/systems/samba/class_winGeneric.inc:169 +#: admin/systems/samba/class_winGeneric.inc:292 +#: personal/samba/class_sambaAccount.inc:737 +#: personal/samba/class_sambaAccount.inc:1104 +msgid "LDAP error" +msgstr "LDAP fout" + +#: admin/systems/samba/class_winGeneric.inc:228 +#: admin/systems/samba/class_winGeneric.inc:313 +msgid "Name" +msgstr "Naam" + +#: admin/systems/samba/class_winGeneric.inc:304 +msgid "Win generic" +msgstr "Windows algemeen" + +#: admin/systems/samba/class_winGeneric.inc:305 +msgid "Windows workstation generic" +msgstr "Windows werkstation algemeen" + +#: admin/systems/samba/class_winGeneric.inc:310 +msgid "Win workstation" +msgstr "Windows werkstation" + +#: personal/samba/samba3.tpl:6 personal/samba/samba2.tpl:6 +msgid "Generic" +msgstr "Algemeen" + +#: personal/samba/samba3.tpl:13 personal/samba/samba3.tpl:105 +#: personal/samba/class_sambaAccount.inc:762 +#: personal/samba/class_sambaAccount.inc:1264 +msgid "Home directory" +msgstr "Persoonlijke map" + +#: personal/samba/samba3.tpl:26 personal/samba/class_sambaAccount.inc:1212 +msgid "Domain" +msgstr "Domein" + +#: personal/samba/samba3.tpl:43 personal/samba/samba2.tpl:37 +msgid "Script path" +msgstr "Inlogscript" + +#: personal/samba/samba3.tpl:51 personal/samba/samba3.tpl:118 +#: personal/samba/samba2.tpl:45 personal/samba/class_sambaAccount.inc:763 +#: personal/samba/class_sambaAccount.inc:1265 +msgid "Profile path" +msgstr "Profielpad" + +#: personal/samba/samba3.tpl:65 +msgid "Terminal Server" +msgstr "Terminal Server" + +#: personal/samba/samba3.tpl:102 personal/samba/class_sambaAccount.inc:1215 +msgid "Allow login on terminal server" +msgstr "Sta inloggen op de Terminal Server toe" + +#: personal/samba/samba3.tpl:138 personal/samba/class_sambaAccount.inc:1216 +msgid "Inherit client config" +msgstr "Client configuratie voor initieel programma overnemen" + +#: personal/samba/samba3.tpl:141 +msgid "Initial program" +msgstr "Initiëel programma" + +#: personal/samba/samba3.tpl:149 +msgid "Working directory" +msgstr "Werkmap" + +#: personal/samba/samba3.tpl:166 +msgid "Timeout settings (in minutes)" +msgstr "Terminal Service timeouts (in minuten)" + +#: personal/samba/samba3.tpl:182 personal/samba/class_sambaAccount.inc:770 +#: personal/samba/class_sambaAccount.inc:1272 +msgid "Connection" +msgstr "Max. verbindingsduur" + +#: personal/samba/samba3.tpl:196 personal/samba/class_sambaAccount.inc:771 +#: personal/samba/class_sambaAccount.inc:1273 +msgid "Disconnection" +msgstr "Max. verbrekingsduur" + +#: personal/samba/samba3.tpl:210 personal/samba/class_sambaAccount.inc:772 +#: personal/samba/class_sambaAccount.inc:1274 +msgid "IDLE" +msgstr "Max. inactiviteitsduur" + +#: personal/samba/samba3.tpl:226 +msgid "Client devices" +msgstr "Terminal Service client apparaten" + +#: personal/samba/samba3.tpl:233 +msgid "Connect client drives at logon" +msgstr "Verbindt client schijven bij inloggen" + +#: personal/samba/samba3.tpl:241 +msgid "Connect client printers at logon" +msgstr "Verbindt client printers bij inloggen" + +#: personal/samba/samba3.tpl:249 +msgid "Default to main client printer" +msgstr "Standaard printer als client printer" + +#: personal/samba/samba3.tpl:259 +msgid "Miscellaneous" +msgstr "Terminal Service diverse" + +#: personal/samba/samba3.tpl:263 +msgid "Shadowing" +msgstr "Schaduwen van andere sessie" + +#: personal/samba/samba3.tpl:274 +msgid "On broken or timed out" +msgstr "Bij verbroken verbinding of timeout" + +#: personal/samba/samba3.tpl:284 +msgid "Reconnect if disconnected" +msgstr "Herstel sessie indien verbroken" + +#: personal/samba/samba3.tpl:301 personal/samba/samba2.tpl:59 +msgid "Access options" +msgstr "Toegangsopties" + +#: personal/samba/samba3.tpl:309 personal/samba/samba2.tpl:67 +msgid "Allow user to change password from client" +msgstr "Gebruiker mag zijn wachtwoord vanaf een werkstation wijzigen" + +#: personal/samba/samba3.tpl:314 personal/samba/samba2.tpl:72 +#: personal/samba/class_sambaAccount.inc:1218 +msgid "Login from windows client requires no password" +msgstr "Inloggen op Windows werkstation zonder wachtwoord toestaan" + +#: personal/samba/samba3.tpl:319 personal/samba/class_sambaAccount.inc:1219 +msgid "Lock samba account" +msgstr "Blokkeer Samba/Windows account" + +#: personal/samba/samba3.tpl:324 personal/samba/samba2.tpl:87 +msgid "Password expires on" +msgstr "Wachtwoord verloopt op" + +#: personal/samba/samba3.tpl:344 personal/samba/class_sambaAccount.inc:1222 +msgid "Limit Logon Time" +msgstr "Stel laatste inlogtijd in op" + +#: personal/samba/samba3.tpl:364 personal/samba/class_sambaAccount.inc:1223 +msgid "Limit Logoff Time" +msgstr "Stel laatste uitlogtijd in op" + +#: personal/samba/samba3.tpl:385 +msgid "Account expires after" +msgstr "Het account verloopt op" + +#: personal/samba/samba3.tpl:408 +msgid "Samba logon times" +msgstr "Samba inlog tijdstippen" + +#: personal/samba/samba3.tpl:408 +msgid "Edit settings..." +msgstr "Instellingen bewerken..." + +#: personal/samba/samba3.tpl:416 +msgid "Allow connection from these workstations only" +msgstr "Sta alleen verbindingen vanaf deze werkstations toe" + +#: personal/samba/samba3.tpl:427 +msgid "Used by all users" +msgstr "Gebruikt door alle gebruikers" + +#: personal/samba/samba3.tpl:430 +msgid "Used by some users" +msgstr "Gebruikt door sommige gebruikers" + +#: personal/samba/sambaLogonHours.tpl:22 +msgid "Specify the hours this user is allowed to log in" +msgstr "Specificeer de uren waarop de gebruiker in mag loggen" + +#: personal/samba/sambaLogonHours.tpl:28 +msgid "Hour" +msgstr "Uur" + +#: personal/samba/samba2.tpl:13 +msgid "Samba home" +msgstr "Samba home" + +#: personal/samba/samba2.tpl:77 +msgid "Temporary disable samba account" +msgstr "Schakel het Samba/Windows account tijdelijk uit" + +#: personal/samba/class_sambaAccount.inc:24 +#: personal/samba/class_sambaAccount.inc:217 +#: personal/samba/class_sambaAccount.inc:229 +#: personal/samba/class_sambaAccount.inc:230 +#: personal/samba/class_sambaAccount.inc:239 +#: personal/samba/class_sambaAccount.inc:240 +#: personal/samba/class_sambaAccount.inc:242 +#: personal/samba/class_sambaAccount.inc:243 +#: personal/samba/class_sambaAccount.inc:1199 +msgid "Samba" +msgstr "Samba" + +#: personal/samba/class_sambaAccount.inc:25 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/samba/class_sambaAccount.inc:243 +msgid "POSIX" +msgstr "POSIX" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Error" +msgstr "FOUT" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Please select an entry!" +msgstr "Selecteer a.u.b. een regel!" + +#: personal/samba/class_sambaAccount.inc:535 +msgid "disabled" +msgstr "gedeactiveerd" + +#: personal/samba/class_sambaAccount.inc:536 +msgid "input on, notify on" +msgstr "invoer met notificatie" + +#: personal/samba/class_sambaAccount.inc:537 +msgid "input on, notify off" +msgstr "invoer zonder notificatie" + +#: personal/samba/class_sambaAccount.inc:538 +msgid "input off, notify on" +msgstr "geen invoer met notificatie" + +#: personal/samba/class_sambaAccount.inc:539 +msgid "input off, nofify off" +msgstr "geen invoer zonder notificatie" + +#: personal/samba/class_sambaAccount.inc:541 +msgid "disconnect" +msgstr "verbreken" + +#: personal/samba/class_sambaAccount.inc:542 +msgid "reset" +msgstr "herstellen" + +#: personal/samba/class_sambaAccount.inc:544 +msgid "from any client" +msgstr "vanaf elke client" + +#: personal/samba/class_sambaAccount.inc:545 +msgid "from previous client only" +msgstr "alleen vanaf vorige client" + +#: personal/samba/class_sambaAccount.inc:755 +#, fuzzy +msgid "Home drive" +msgstr "Persoonlijke map" + +#: personal/samba/class_sambaAccount.inc:758 +#, fuzzy +msgid "Home path" +msgstr "Telefoon Privé" + +#: personal/samba/class_sambaAccount.inc:781 +msgid "The windows usermanager allows eight clients at maximum!" +msgstr "Het Windows gebruikersbeheer programma staat slechts acht clients toe!" + +#: personal/samba/class_sambaAccount.inc:970 +#: personal/samba/class_sambaAccount.inc:994 +msgid "Warning" +msgstr "Waarschuwing" + +#: personal/samba/class_sambaAccount.inc:970 +msgid "Undefined Samba SID detected. Please fix this problem manually!" +msgstr "" +"Er is een ongedefinieerd SambaSID geselecteerd. Repareer dit probleem a.u.b. " +"handmatig!" + +#: personal/samba/class_sambaAccount.inc:994 +msgid "" +"Cannot convert primary group to samba group: group cannot be identified!" +msgstr "" +"Kan primaire groep niet in een samba groep omzetten: group kan niet " +"geidentificeerd worden" + +#: personal/samba/class_sambaAccount.inc:1200 personal/samba/main.inc:136 +msgid "Samba settings" +msgstr "Samba Instellingen" + +#: personal/samba/class_sambaAccount.inc:1204 +msgid "My account" +msgstr "Mijn account" + +#: personal/samba/class_sambaAccount.inc:1210 +msgid "Generic home directory" +msgstr "Algemene persoonlijke map" + +#: personal/samba/class_sambaAccount.inc:1211 +msgid "Generic samba home drive" +msgstr "Algemeen persoonlijk schijfstation" + +#: personal/samba/class_sambaAccount.inc:1213 +msgid "Generic script path" +msgstr "Algemeen scriptpad" + +#: personal/samba/class_sambaAccount.inc:1214 +msgid "Generic profile path" +msgstr "Windows werkstation" + +#: personal/samba/class_sambaAccount.inc:1217 +msgid "Allow user to change password" +msgstr "Gebruiker mag het wachtwoord wijzigen" + +#: personal/samba/class_sambaAccount.inc:1220 +msgid "Account expires" +msgstr "Account verloopt op" + +#: personal/samba/class_sambaAccount.inc:1221 +msgid "Password expires" +msgstr "Algemeen profielpad" + +#: personal/samba/class_sambaAccount.inc:1224 +msgid "Logon hours" +msgstr "Inlog tijden" + +#: personal/samba/class_sambaAccount.inc:1225 +msgid "Allow connection from" +msgstr "Sta verbinding toe vanaf" + +#: personal/samba/class_sambaAccount.inc:1284 +msgid "" +"The windows user manager only allows eight clients. You've specified more " +"than eight." +msgstr "" +"Het Windows gebruikersbeheer programma staat slechts acht clients toe. U " +"heeft er meer dan acht opgegeven." + +#: personal/samba/samba3_workstations.tpl:6 +msgid "Select workstations to add" +msgstr "Selecteer toe te voegen werkstations" + +#: personal/samba/samba3_workstations.tpl:20 +msgid "Filters" +msgstr "Filters" + +#: personal/samba/samba3_workstations.tpl:26 +msgid "Display workstations of department" +msgstr "Toon werkstations van afdeling" + +#: personal/samba/samba3_workstations.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Selecteer de afdeling waarbinnen gezocht zal worden" + +#: personal/samba/samba3_workstations.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Reguliere expresie voor overeenkomende adressen" + +#~ msgid "Choose subtree to place terminal in" +#~ msgstr "Selecteer de subtree waar de terminal onder geplaatst zal worden" + +#~ msgid "Workstation name" +#~ msgstr "Werkstation naam" diff --git a/trunk/gosa-plugins/samba/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/samba/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..6b92d5c3a --- /dev/null +++ b/trunk/gosa-plugins/samba/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,549 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/systems/samba/wingeneric.tpl:6 +msgid "Machine name" +msgstr "Nazwa maszyny" + +#: admin/systems/samba/wingeneric.tpl:17 +#: admin/systems/samba/class_winGeneric.inc:314 +msgid "Base" +msgstr "Kontener" + +#: admin/systems/samba/wingeneric.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Wybierz poddrzewo do umieszczenia grupy" + +#: admin/systems/samba/wingeneric.tpl:26 +msgid "Select a base" +msgstr "Wybierz bazę" + +#: admin/systems/samba/wingeneric.tpl:35 +#: admin/systems/samba/class_winGeneric.inc:315 +msgid "Description" +msgstr "Opis" + +#: admin/systems/samba/class_winGeneric.inc:102 +msgid "network" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:169 +#: admin/systems/samba/class_winGeneric.inc:292 +#: personal/samba/class_sambaAccount.inc:737 +#: personal/samba/class_sambaAccount.inc:1104 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/systems/samba/class_winGeneric.inc:228 +#: admin/systems/samba/class_winGeneric.inc:313 +msgid "Name" +msgstr "Imię" + +#: admin/systems/samba/class_winGeneric.inc:304 +#, fuzzy +msgid "Win generic" +msgstr "Usługa drukowania" + +#: admin/systems/samba/class_winGeneric.inc:305 +#, fuzzy +msgid "Windows workstation generic" +msgstr "Nazwa stacji roboczej" + +#: admin/systems/samba/class_winGeneric.inc:310 +#, fuzzy +msgid "Win workstation" +msgstr "Stacja robocza Windows" + +#: personal/samba/samba3.tpl:6 personal/samba/samba2.tpl:6 +msgid "Generic" +msgstr "Ogólne" + +#: personal/samba/samba3.tpl:13 personal/samba/samba3.tpl:105 +#: personal/samba/class_sambaAccount.inc:762 +#: personal/samba/class_sambaAccount.inc:1264 +msgid "Home directory" +msgstr "Katalog domowy" + +#: personal/samba/samba3.tpl:26 personal/samba/class_sambaAccount.inc:1212 +msgid "Domain" +msgstr "Domena" + +#: personal/samba/samba3.tpl:43 personal/samba/samba2.tpl:37 +msgid "Script path" +msgstr "Ścieżka do skryptu" + +#: personal/samba/samba3.tpl:51 personal/samba/samba3.tpl:118 +#: personal/samba/samba2.tpl:45 personal/samba/class_sambaAccount.inc:763 +#: personal/samba/class_sambaAccount.inc:1265 +msgid "Profile path" +msgstr "Ścieżka do profilu" + +#: personal/samba/samba3.tpl:65 +msgid "Terminal Server" +msgstr "Terminal Server" + +#: personal/samba/samba3.tpl:102 personal/samba/class_sambaAccount.inc:1215 +msgid "Allow login on terminal server" +msgstr "Zezwól na logowanie do serwera terminali" + +#: personal/samba/samba3.tpl:138 personal/samba/class_sambaAccount.inc:1216 +msgid "Inherit client config" +msgstr "Odziedzicz konfigurację klienta" + +#: personal/samba/samba3.tpl:141 +msgid "Initial program" +msgstr "Program pierwotny" + +#: personal/samba/samba3.tpl:149 +msgid "Working directory" +msgstr "Katalog roboczy" + +#: personal/samba/samba3.tpl:166 +msgid "Timeout settings (in minutes)" +msgstr "Ustawienia Timeoutu (w minutach)" + +#: personal/samba/samba3.tpl:182 personal/samba/class_sambaAccount.inc:770 +#: personal/samba/class_sambaAccount.inc:1272 +msgid "Connection" +msgstr "Połączenie" + +#: personal/samba/samba3.tpl:196 personal/samba/class_sambaAccount.inc:771 +#: personal/samba/class_sambaAccount.inc:1273 +msgid "Disconnection" +msgstr "Rozłączenie" + +#: personal/samba/samba3.tpl:210 personal/samba/class_sambaAccount.inc:772 +#: personal/samba/class_sambaAccount.inc:1274 +msgid "IDLE" +msgstr "BEZCZYNNY" + +#: personal/samba/samba3.tpl:226 +msgid "Client devices" +msgstr "Urządzenia klienta" + +#: personal/samba/samba3.tpl:233 +msgid "Connect client drives at logon" +msgstr "Podłącz dyski klienta przy logowaniu" + +#: personal/samba/samba3.tpl:241 +msgid "Connect client printers at logon" +msgstr "Podłącz drukarki klienta przy logowaniu" + +#: personal/samba/samba3.tpl:249 +msgid "Default to main client printer" +msgstr "Ustaw główną drukarkę klienta jako domyślną" + +#: personal/samba/samba3.tpl:259 +msgid "Miscellaneous" +msgstr "Różne" + +#: personal/samba/samba3.tpl:263 +msgid "Shadowing" +msgstr "Shadowing" + +#: personal/samba/samba3.tpl:274 +msgid "On broken or timed out" +msgstr "Przy rozłączeniu lub timeoucie" + +#: personal/samba/samba3.tpl:284 +msgid "Reconnect if disconnected" +msgstr "Połącz jeśli rozłączono" + +#: personal/samba/samba3.tpl:301 personal/samba/samba2.tpl:59 +msgid "Access options" +msgstr "Opcje dostępu" + +#: personal/samba/samba3.tpl:309 personal/samba/samba2.tpl:67 +msgid "Allow user to change password from client" +msgstr "Zezwól użytkownikowi na zmianę hasła z klienta" + +#: personal/samba/samba3.tpl:314 personal/samba/samba2.tpl:72 +#: personal/samba/class_sambaAccount.inc:1218 +msgid "Login from windows client requires no password" +msgstr "Logowanie z klienta windows nie wymaga hasła" + +#: personal/samba/samba3.tpl:319 personal/samba/class_sambaAccount.inc:1219 +msgid "Lock samba account" +msgstr "Zablokuj konto samba" + +#: personal/samba/samba3.tpl:324 personal/samba/samba2.tpl:87 +msgid "Password expires on" +msgstr "Hasło wygasa" + +#: personal/samba/samba3.tpl:344 personal/samba/class_sambaAccount.inc:1222 +msgid "Limit Logon Time" +msgstr "Ogranicz czas logowania" + +#: personal/samba/samba3.tpl:364 personal/samba/class_sambaAccount.inc:1223 +msgid "Limit Logoff Time" +msgstr "Ogranicz czas wylogowania" + +#: personal/samba/samba3.tpl:385 +msgid "Account expires after" +msgstr "Konto wygasa po" + +#: personal/samba/samba3.tpl:408 +#, fuzzy +msgid "Samba logon times" +msgstr "Typ grupy Samba" + +#: personal/samba/samba3.tpl:408 +#, fuzzy +msgid "Edit settings..." +msgstr "Ustawienia pocztowe" + +#: personal/samba/samba3.tpl:416 +msgid "Allow connection from these workstations only" +msgstr "Zezwól na połączenia tylko z tych stacji" + +#: personal/samba/samba3.tpl:427 +#, fuzzy +msgid "Used by all users" +msgstr "ACL jest prawidłowy dla wszystkich użytkowników" + +#: personal/samba/samba3.tpl:430 +msgid "Used by some users" +msgstr "" + +#: personal/samba/sambaLogonHours.tpl:22 +#, fuzzy +msgid "Specify the hours this user is allowed to log in" +msgstr "Wybierz serwer poczty który będzie przechowywał skrzynkę użytkownika" + +#: personal/samba/sambaLogonHours.tpl:28 +#, fuzzy +msgid "Hour" +msgstr "godzina" + +#: personal/samba/samba2.tpl:13 +msgid "Samba home" +msgstr "Katalog domowy Samba" + +#: personal/samba/samba2.tpl:77 +msgid "Temporary disable samba account" +msgstr "Tymczasowo wyłącz konto samba" + +#: personal/samba/class_sambaAccount.inc:24 +#: personal/samba/class_sambaAccount.inc:217 +#: personal/samba/class_sambaAccount.inc:229 +#: personal/samba/class_sambaAccount.inc:230 +#: personal/samba/class_sambaAccount.inc:239 +#: personal/samba/class_sambaAccount.inc:240 +#: personal/samba/class_sambaAccount.inc:242 +#: personal/samba/class_sambaAccount.inc:243 +#: personal/samba/class_sambaAccount.inc:1199 +msgid "Samba" +msgstr "Samba" + +#: personal/samba/class_sambaAccount.inc:25 +msgid "This does something" +msgstr "To robi coś" + +#: personal/samba/class_sambaAccount.inc:243 +msgid "POSIX" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Error" +msgstr "Błąd" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Please select an entry!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:535 +msgid "disabled" +msgstr "wyłączone" + +#: personal/samba/class_sambaAccount.inc:536 +msgid "input on, notify on" +msgstr "input tak, notify tak" + +#: personal/samba/class_sambaAccount.inc:537 +msgid "input on, notify off" +msgstr "input tak, notify nie" + +#: personal/samba/class_sambaAccount.inc:538 +msgid "input off, notify on" +msgstr "input nie, notify tak" + +#: personal/samba/class_sambaAccount.inc:539 +msgid "input off, nofify off" +msgstr "input nie, notify nie" + +#: personal/samba/class_sambaAccount.inc:541 +msgid "disconnect" +msgstr "rozłącz" + +#: personal/samba/class_sambaAccount.inc:542 +msgid "reset" +msgstr "resetuj" + +#: personal/samba/class_sambaAccount.inc:544 +msgid "from any client" +msgstr "z każdego klienta" + +#: personal/samba/class_sambaAccount.inc:545 +msgid "from previous client only" +msgstr "tylko z poprzedniego klienta" + +#: personal/samba/class_sambaAccount.inc:755 +#, fuzzy +msgid "Home drive" +msgstr "Katalog domowy" + +#: personal/samba/class_sambaAccount.inc:758 +#, fuzzy +msgid "Home path" +msgstr "Telefon domowy" + +#: personal/samba/class_sambaAccount.inc:781 +#, fuzzy +msgid "The windows usermanager allows eight clients at maximum!" +msgstr "" +"User manager w windows zezwala tylko na 8 klientów. Podano więcej niż 8." + +#: personal/samba/class_sambaAccount.inc:970 +#: personal/samba/class_sambaAccount.inc:994 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: personal/samba/class_sambaAccount.inc:970 +msgid "Undefined Samba SID detected. Please fix this problem manually!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:994 +msgid "" +"Cannot convert primary group to samba group: group cannot be identified!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1200 personal/samba/main.inc:136 +msgid "Samba settings" +msgstr "Ustawienia Samba" + +#: personal/samba/class_sambaAccount.inc:1204 +msgid "My account" +msgstr "Moje konto " + +#: personal/samba/class_sambaAccount.inc:1210 +msgid "Generic home directory" +msgstr "Ogólny katalog domowy" + +#: personal/samba/class_sambaAccount.inc:1211 +msgid "Generic samba home drive" +msgstr "Podstawowy dysk domowy samba" + +#: personal/samba/class_sambaAccount.inc:1213 +msgid "Generic script path" +msgstr "Ogólna ścieżka do skryptu" + +#: personal/samba/class_sambaAccount.inc:1214 +msgid "Generic profile path" +msgstr "Ogólna ścieżka do profilu" + +#: personal/samba/class_sambaAccount.inc:1217 +msgid "Allow user to change password" +msgstr "Zezwól użytkownikowi na zmianę hasła" + +#: personal/samba/class_sambaAccount.inc:1220 +msgid "Account expires" +msgstr "Konto wygasa" + +#: personal/samba/class_sambaAccount.inc:1221 +msgid "Password expires" +msgstr "Hasło wygasa" + +#: personal/samba/class_sambaAccount.inc:1224 +#, fuzzy +msgid "Logon hours" +msgstr "jedna godzina" + +#: personal/samba/class_sambaAccount.inc:1225 +msgid "Allow connection from" +msgstr "Zezwól na połączenia z" + +#: personal/samba/class_sambaAccount.inc:1284 +msgid "" +"The windows user manager only allows eight clients. You've specified more " +"than eight." +msgstr "" +"User manager w windows zezwala tylko na 8 klientów. Podano więcej niż 8." + +#: personal/samba/samba3_workstations.tpl:6 +msgid "Select workstations to add" +msgstr "Wybierz stacje robocze do dodania" + +#: personal/samba/samba3_workstations.tpl:20 +msgid "Filters" +msgstr "Filtry" + +#: personal/samba/samba3_workstations.tpl:26 +msgid "Display workstations of department" +msgstr "Wyświetl stacje robocze departamentu" + +#: personal/samba/samba3_workstations.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Wybierz departament na którym wyszukiwanie będzie bazować" + +#: personal/samba/samba3_workstations.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Wyrażenie regularne dla dopasowania adresów" + +#~ msgid "Choose subtree to place terminal in" +#~ msgstr "Wybierz poddrzewo do umieszczenia terminala" + +#~ msgid "Workstation name" +#~ msgstr "Nazwa stacji roboczej" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "This 'dn' has no network features." +#~ msgstr "Ten 'dn' nie posiada cech sieciowych." + +#~ msgid "You have no permissions to create a component on this 'Base'." +#~ msgstr "Brak uprawnień do tworzenia komponentów w tym elemencie." + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "Już istnieje wpis '%s' w wybranym elemencie" + +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "dzień" + +#, fuzzy +#~ msgid "Monday" +#~ msgstr "dzień" + +#, fuzzy +#~ msgid "Tuesday" +#~ msgstr "dzień" + +#~ msgid "Wednesday" +#~ msgstr "Środa" + +#, fuzzy +#~ msgid "Thursday" +#~ msgstr "godzin" + +#, fuzzy +#~ msgid "Friday" +#~ msgstr "dzień" + +#, fuzzy +#~ msgid "Saturday" +#~ msgstr "Strategia" + +#~ msgid "This account has no samba extensions." +#~ msgstr "To konto nie posiada rozszerzeń samba" + +#~ msgid "Remove samba account" +#~ msgstr "Usuń konto samba" + +#~ msgid "" +#~ "This account has samba features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "To konto posiada rozszerzenia samba. Można je wyłączyć klikając poniżej." + +#~ msgid "Create samba account" +#~ msgstr "Stwórz konto samba" + +#~ msgid "" +#~ "This account has samba features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "To konto nie posiada rozszerzenia samba. Można he włączyć klikając " +#~ "poniżej." + +#~ msgid "" +#~ "This account has samba features disabled. Posix features are needed for " +#~ "samba accounts, enable them first." +#~ msgstr "" +#~ "To konto nie posiada rozszerzenia samba. Wymagane są rozszerzenia posix, " +#~ "które należy włączyć wcześniej." + +#~ msgid "January" +#~ msgstr "Styczeń" + +#~ msgid "February" +#~ msgstr "Luty" + +#~ msgid "March" +#~ msgstr "Marzec" + +#~ msgid "April" +#~ msgstr "Kwiecień" + +#~ msgid "May" +#~ msgstr "Maj" + +#~ msgid "June" +#~ msgstr "Czerwiec" + +#~ msgid "July" +#~ msgstr "Lipiec" + +#~ msgid "August" +#~ msgstr "Sierpień" + +#~ msgid "September" +#~ msgstr "Wrzesień" + +#~ msgid "October" +#~ msgstr "Październik" + +#~ msgid "November" +#~ msgstr "Listopad" + +#~ msgid "December" +#~ msgstr "Grudzień" + +#~ msgid "Removing of user/samba account with dn '%s' failed." +#~ msgstr "Usuwanie konta Samba z dn '%s' nieudane." + +#~ msgid "The value specified as '%s' contains invalid characters!" +#~ msgstr "Wartość podana jako '%s' zawiera niedozwolone znaki!" + +#~ msgid "" +#~ "The timeout property '%s' is checked and contains invalid or no " +#~ "characters!" +#~ msgstr "" +#~ "Właściwości timeoutu '%s' są włączone i zawierają nieprawidłowe znaki, " +#~ "lub są puste!" + +#~ msgid "Saving of user/samba account with dn '%s' failed." +#~ msgstr "Zapisywanie konta Samba z dn '%s' nieudane." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "" +#~ "Kliknij przycisk 'Edytuj' poniżej, aby zmienić informacje w tym oknie" + +#~ msgid "Edit" +#~ msgstr "Edytuj" diff --git a/trunk/gosa-plugins/samba/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/samba/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..98cfda9da --- /dev/null +++ b/trunk/gosa-plugins/samba/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,556 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/systems/samba/wingeneric.tpl:6 +#, fuzzy +msgid "Machine name" +msgstr "Название" + +#: admin/systems/samba/wingeneric.tpl:17 +#: admin/systems/samba/class_winGeneric.inc:314 +msgid "Base" +msgstr "Ветка" + +#: admin/systems/samba/wingeneric.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Выберите ветку для группы" + +#: admin/systems/samba/wingeneric.tpl:26 +#, fuzzy +msgid "Select a base" +msgstr "Выберите, чтобы просмотреть серверы" + +#: admin/systems/samba/wingeneric.tpl:35 +#: admin/systems/samba/class_winGeneric.inc:315 +msgid "Description" +msgstr "Описание" + +#: admin/systems/samba/class_winGeneric.inc:102 +msgid "network" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:169 +#: admin/systems/samba/class_winGeneric.inc:292 +#: personal/samba/class_sambaAccount.inc:737 +#: personal/samba/class_sambaAccount.inc:1104 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/systems/samba/class_winGeneric.inc:228 +#: admin/systems/samba/class_winGeneric.inc:313 +msgid "Name" +msgstr "Фамилия" + +#: admin/systems/samba/class_winGeneric.inc:304 +#, fuzzy +msgid "Win generic" +msgstr "Служба печати" + +#: admin/systems/samba/class_winGeneric.inc:305 +#, fuzzy +msgid "Windows workstation generic" +msgstr "Имя рабочий станции" + +#: admin/systems/samba/class_winGeneric.inc:310 +#, fuzzy +msgid "Win workstation" +msgstr "Рабочая станция Windows" + +#: personal/samba/samba3.tpl:6 personal/samba/samba2.tpl:6 +msgid "Generic" +msgstr "Общее" + +#: personal/samba/samba3.tpl:13 personal/samba/samba3.tpl:105 +#: personal/samba/class_sambaAccount.inc:762 +#: personal/samba/class_sambaAccount.inc:1264 +msgid "Home directory" +msgstr "Домашний каталог" + +#: personal/samba/samba3.tpl:26 personal/samba/class_sambaAccount.inc:1212 +msgid "Domain" +msgstr "Домен" + +#: personal/samba/samba3.tpl:43 personal/samba/samba2.tpl:37 +msgid "Script path" +msgstr "Путь к сценариям" + +#: personal/samba/samba3.tpl:51 personal/samba/samba3.tpl:118 +#: personal/samba/samba2.tpl:45 personal/samba/class_sambaAccount.inc:763 +#: personal/samba/class_sambaAccount.inc:1265 +msgid "Profile path" +msgstr "Путь к профилю" + +#: personal/samba/samba3.tpl:65 +msgid "Terminal Server" +msgstr "Терминальный сервер" + +#: personal/samba/samba3.tpl:102 personal/samba/class_sambaAccount.inc:1215 +msgid "Allow login on terminal server" +msgstr "Разрешить вход на терминальный сервер" + +#: personal/samba/samba3.tpl:138 personal/samba/class_sambaAccount.inc:1216 +msgid "Inherit client config" +msgstr "Унаследовать конфигурацию клиента" + +#: personal/samba/samba3.tpl:141 +msgid "Initial program" +msgstr "Начальная программа" + +#: personal/samba/samba3.tpl:149 +msgid "Working directory" +msgstr "Рабочий каталог" + +#: personal/samba/samba3.tpl:166 +msgid "Timeout settings (in minutes)" +msgstr "Настройки таймаута (в минутах)" + +#: personal/samba/samba3.tpl:182 personal/samba/class_sambaAccount.inc:770 +#: personal/samba/class_sambaAccount.inc:1272 +msgid "Connection" +msgstr "Подключение" + +#: personal/samba/samba3.tpl:196 personal/samba/class_sambaAccount.inc:771 +#: personal/samba/class_sambaAccount.inc:1273 +msgid "Disconnection" +msgstr "Отключение" + +#: personal/samba/samba3.tpl:210 personal/samba/class_sambaAccount.inc:772 +#: personal/samba/class_sambaAccount.inc:1274 +msgid "IDLE" +msgstr "Простой" + +#: personal/samba/samba3.tpl:226 +msgid "Client devices" +msgstr "Клиентские устройства" + +#: personal/samba/samba3.tpl:233 +msgid "Connect client drives at logon" +msgstr "Подключить клиентские устройства при входе" + +#: personal/samba/samba3.tpl:241 +msgid "Connect client printers at logon" +msgstr "Подключить клиентские принтеры при входе" + +#: personal/samba/samba3.tpl:249 +msgid "Default to main client printer" +msgstr "Указать принтер по умолчанию" + +#: personal/samba/samba3.tpl:259 +msgid "Miscellaneous" +msgstr "Разное" + +#: personal/samba/samba3.tpl:263 +msgid "Shadowing" +msgstr "Затенение" + +#: personal/samba/samba3.tpl:274 +msgid "On broken or timed out" +msgstr "При обрыве или таймауте" + +#: personal/samba/samba3.tpl:284 +msgid "Reconnect if disconnected" +msgstr "В" + +#: personal/samba/samba3.tpl:301 personal/samba/samba2.tpl:59 +msgid "Access options" +msgstr "Параметры доступа" + +#: personal/samba/samba3.tpl:309 personal/samba/samba2.tpl:67 +msgid "Allow user to change password from client" +msgstr "Разрешить пользователям менять пароль с клиента" + +#: personal/samba/samba3.tpl:314 personal/samba/samba2.tpl:72 +#: personal/samba/class_sambaAccount.inc:1218 +msgid "Login from windows client requires no password" +msgstr "Не спрашивать пароль при входе в систему из Windows" + +#: personal/samba/samba3.tpl:319 personal/samba/class_sambaAccount.inc:1219 +#, fuzzy +msgid "Lock samba account" +msgstr "Удалить учетную запись Samba" + +#: personal/samba/samba3.tpl:324 personal/samba/samba2.tpl:87 +msgid "Password expires on" +msgstr "Срок действия пароля истекает" + +#: personal/samba/samba3.tpl:344 personal/samba/class_sambaAccount.inc:1222 +msgid "Limit Logon Time" +msgstr "" + +#: personal/samba/samba3.tpl:364 personal/samba/class_sambaAccount.inc:1223 +msgid "Limit Logoff Time" +msgstr "" + +#: personal/samba/samba3.tpl:385 +msgid "Account expires after" +msgstr "" + +#: personal/samba/samba3.tpl:408 +#, fuzzy +msgid "Samba logon times" +msgstr "Группа Samba" + +#: personal/samba/samba3.tpl:408 +#, fuzzy +msgid "Edit settings..." +msgstr "Почтовые настройки пользователя" + +#: personal/samba/samba3.tpl:416 +msgid "Allow connection from these workstations only" +msgstr "Разрешить подключения только от этой рабочей станции" + +#: personal/samba/samba3.tpl:427 +msgid "Used by all users" +msgstr "" + +#: personal/samba/samba3.tpl:430 +msgid "Used by some users" +msgstr "" + +#: personal/samba/sambaLogonHours.tpl:22 +#, fuzzy +msgid "Specify the hours this user is allowed to log in" +msgstr "Выберите почтовый сервер для учетной записи пользователя" + +#: personal/samba/sambaLogonHours.tpl:28 +#, fuzzy +msgid "Hour" +msgstr "час" + +#: personal/samba/samba2.tpl:13 +msgid "Samba home" +msgstr "Домашний каталог Samba" + +#: personal/samba/samba2.tpl:77 +msgid "Temporary disable samba account" +msgstr "Временно отключить учетную запись Samba" + +#: personal/samba/class_sambaAccount.inc:24 +#: personal/samba/class_sambaAccount.inc:217 +#: personal/samba/class_sambaAccount.inc:229 +#: personal/samba/class_sambaAccount.inc:230 +#: personal/samba/class_sambaAccount.inc:239 +#: personal/samba/class_sambaAccount.inc:240 +#: personal/samba/class_sambaAccount.inc:242 +#: personal/samba/class_sambaAccount.inc:243 +#: personal/samba/class_sambaAccount.inc:1199 +msgid "Samba" +msgstr "Samba" + +#: personal/samba/class_sambaAccount.inc:25 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/samba/class_sambaAccount.inc:243 +msgid "POSIX" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Error" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Please select an entry!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:535 +msgid "disabled" +msgstr "отключен" + +#: personal/samba/class_sambaAccount.inc:536 +msgid "input on, notify on" +msgstr "входящие вкл, оповещение вкл" + +#: personal/samba/class_sambaAccount.inc:537 +msgid "input on, notify off" +msgstr "входящие вкл, оповещение выкл" + +#: personal/samba/class_sambaAccount.inc:538 +msgid "input off, notify on" +msgstr "входящие выкл, оповещение вкл" + +#: personal/samba/class_sambaAccount.inc:539 +msgid "input off, nofify off" +msgstr "входящие выкл, оповещение выкл" + +#: personal/samba/class_sambaAccount.inc:541 +msgid "disconnect" +msgstr "отключиться" + +#: personal/samba/class_sambaAccount.inc:542 +msgid "reset" +msgstr "сброс" + +#: personal/samba/class_sambaAccount.inc:544 +msgid "from any client" +msgstr "от любого клиента" + +#: personal/samba/class_sambaAccount.inc:545 +msgid "from previous client only" +msgstr "только от предыдущего клиента" + +#: personal/samba/class_sambaAccount.inc:755 +#, fuzzy +msgid "Home drive" +msgstr "Домашний каталог" + +#: personal/samba/class_sambaAccount.inc:758 +#, fuzzy +msgid "Home path" +msgstr "Домашний телефон" + +#: personal/samba/class_sambaAccount.inc:781 +#, fuzzy +msgid "The windows usermanager allows eight clients at maximum!" +msgstr "" +"Менеджер пользователей Windows допускает подключение только восми клиентов. " +"Вы указали больше чем восем." + +#: personal/samba/class_sambaAccount.inc:970 +#: personal/samba/class_sambaAccount.inc:994 +msgid "Warning" +msgstr "Предупреждение" + +#: personal/samba/class_sambaAccount.inc:970 +msgid "Undefined Samba SID detected. Please fix this problem manually!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:994 +msgid "" +"Cannot convert primary group to samba group: group cannot be identified!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1200 personal/samba/main.inc:136 +msgid "Samba settings" +msgstr "Настройки Samba" + +#: personal/samba/class_sambaAccount.inc:1204 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/samba/class_sambaAccount.inc:1210 +#, fuzzy +msgid "Generic home directory" +msgstr "Домашний каталог" + +#: personal/samba/class_sambaAccount.inc:1211 +msgid "Generic samba home drive" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1213 +#, fuzzy +msgid "Generic script path" +msgstr "Путь к сценариям" + +#: personal/samba/class_sambaAccount.inc:1214 +#, fuzzy +msgid "Generic profile path" +msgstr "Путь к профилю" + +#: personal/samba/class_sambaAccount.inc:1217 +#, fuzzy +msgid "Allow user to change password" +msgstr "Разрешить пользователям менять пароль с клиента" + +#: personal/samba/class_sambaAccount.inc:1220 +#, fuzzy +msgid "Account expires" +msgstr "Учетная запись" + +#: personal/samba/class_sambaAccount.inc:1221 +#, fuzzy +msgid "Password expires" +msgstr "Срок действия пароля истекает" + +#: personal/samba/class_sambaAccount.inc:1224 +#, fuzzy +msgid "Logon hours" +msgstr "один час" + +#: personal/samba/class_sambaAccount.inc:1225 +#, fuzzy +msgid "Allow connection from" +msgstr "Разрешить подключения только от этой рабочей станции" + +#: personal/samba/class_sambaAccount.inc:1284 +msgid "" +"The windows user manager only allows eight clients. You've specified more " +"than eight." +msgstr "" +"Менеджер пользователей Windows допускает подключение только восми клиентов. " +"Вы указали больше чем восем." + +#: personal/samba/samba3_workstations.tpl:6 +msgid "Select workstations to add" +msgstr "Выберите рабочие станции для добавления" + +#: personal/samba/samba3_workstations.tpl:20 +msgid "Filters" +msgstr "Фильтры" + +#: personal/samba/samba3_workstations.tpl:26 +msgid "Display workstations of department" +msgstr "Показать рабочие станции подразделения" + +#: personal/samba/samba3_workstations.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Выбрать раздел, для которого будет осуществлен поиск" + +#: personal/samba/samba3_workstations.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Регулярное выражение для поиска адреса" + +#~ msgid "Choose subtree to place terminal in" +#~ msgstr "Выберите ветку терминала" + +#~ msgid "Workstation name" +#~ msgstr "Имя рабочий станции" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Apply" +#~ msgstr "Применить" + +#, fuzzy +#~ msgid "This 'dn' has no network features." +#~ msgstr "Этот DN не имеет свойств принтера." + +#, fuzzy +#~ msgid "You have no permissions to create a component on this 'Base'." +#~ msgstr "У вас недостаточно прав для создания телефонов в этой ветке." + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "В выбранной вами ветке уже есть запись \"%s\"" + +#, fuzzy +#~ msgid "Sunday" +#~ msgstr "день" + +#, fuzzy +#~ msgid "Monday" +#~ msgstr "день" + +#, fuzzy +#~ msgid "Tuesday" +#~ msgstr "день" + +#, fuzzy +#~ msgid "Thursday" +#~ msgstr "час" + +#, fuzzy +#~ msgid "Friday" +#~ msgstr "день" + +#, fuzzy +#~ msgid "Saturday" +#~ msgstr "Адм. единица" + +#~ msgid "This account has no samba extensions." +#~ msgstr "В этой учетной записи нет расширений Samba." + +#~ msgid "Remove samba account" +#~ msgstr "Удалить учетную запись Samba" + +#~ msgid "" +#~ "This account has samba features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи есть настройки Samba. Вы можете отключить их, " +#~ "щелкнув ниже." + +#~ msgid "Create samba account" +#~ msgstr "Создать учетную запись Samba" + +#~ msgid "" +#~ "This account has samba features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "" +#~ "В этой учетной записи нет настроек Samba. Вы можете включить их, щелкнув " +#~ "ниже." + +#~ msgid "" +#~ "This account has samba features disabled. Posix features are needed for " +#~ "samba accounts, enable them first." +#~ msgstr "" +#~ "В этой учетной записи нет настроек Samba. Для учетных записей Samba нужны " +#~ "атрибуты POSIX, включите сначала их использование." + +#~ msgid "January" +#~ msgstr "Январь" + +#~ msgid "February" +#~ msgstr "Февраль" + +#~ msgid "March" +#~ msgstr "Март" + +#~ msgid "April" +#~ msgstr "Апрель" + +#~ msgid "May" +#~ msgstr "Май" + +#~ msgid "June" +#~ msgstr "Июнь" + +#~ msgid "July" +#~ msgstr "Июль" + +#~ msgid "August" +#~ msgstr "Август" + +#~ msgid "September" +#~ msgstr "Сентябрь" + +#~ msgid "October" +#~ msgstr "Октябрь" + +#~ msgid "November" +#~ msgstr "Ноябрь" + +#~ msgid "December" +#~ msgstr "Декабрь" + +#, fuzzy +#~ msgid "Removing of user/samba account with dn '%s' failed." +#~ msgstr "Удалить учетную запись Samba" + +#~ msgid "The value specified as '%s' contains invalid characters!" +#~ msgstr "Значение '%s' содержит недопустимые символы." + +#~ msgid "" +#~ "The timeout property '%s' is checked and contains invalid or no " +#~ "characters!" +#~ msgstr "Значение таймаута '%s' пустое или содержит недопустимые символы." + +#, fuzzy +#~ msgid "Saving of user/samba account with dn '%s' failed." +#~ msgstr "Моя учетная запись" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." + +#~ msgid "Edit" +#~ msgstr "Изменить" diff --git a/trunk/gosa-plugins/samba/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/samba/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..a8288b3c7 --- /dev/null +++ b/trunk/gosa-plugins/samba/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,548 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/samba/wingeneric.tpl:6 +msgid "Machine name" +msgstr "机器名称" + +#: admin/systems/samba/wingeneric.tpl:17 +#: admin/systems/samba/class_winGeneric.inc:314 +msgid "Base" +msgstr "位置" + +#: admin/systems/samba/wingeneric.tpl:20 +msgid "Choose subtree to place group in" +msgstr "选择来放置组的子树" + +#: admin/systems/samba/wingeneric.tpl:26 +msgid "Select a base" +msgstr "选择一个位置" + +#: admin/systems/samba/wingeneric.tpl:35 +#: admin/systems/samba/class_winGeneric.inc:315 +msgid "Description" +msgstr "描述" + +#: admin/systems/samba/class_winGeneric.inc:102 +msgid "network" +msgstr "" + +#: admin/systems/samba/class_winGeneric.inc:169 +#: admin/systems/samba/class_winGeneric.inc:292 +#: personal/samba/class_sambaAccount.inc:737 +#: personal/samba/class_sambaAccount.inc:1104 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/systems/samba/class_winGeneric.inc:228 +#: admin/systems/samba/class_winGeneric.inc:313 +msgid "Name" +msgstr "名称" + +#: admin/systems/samba/class_winGeneric.inc:304 +#, fuzzy +msgid "Win generic" +msgstr "通用配置" + +#: admin/systems/samba/class_winGeneric.inc:305 +#, fuzzy +msgid "Windows workstation generic" +msgstr "Windows 工作站" + +#: admin/systems/samba/class_winGeneric.inc:310 +#, fuzzy +msgid "Win workstation" +msgstr "Windows 工作站" + +#: personal/samba/samba3.tpl:6 personal/samba/samba2.tpl:6 +msgid "Generic" +msgstr "通用配置" + +#: personal/samba/samba3.tpl:13 personal/samba/samba3.tpl:105 +#: personal/samba/class_sambaAccount.inc:762 +#: personal/samba/class_sambaAccount.inc:1264 +msgid "Home directory" +msgstr "用户主目录" + +#: personal/samba/samba3.tpl:26 personal/samba/class_sambaAccount.inc:1212 +msgid "Domain" +msgstr "域" + +#: personal/samba/samba3.tpl:43 personal/samba/samba2.tpl:37 +msgid "Script path" +msgstr "脚本路径" + +#: personal/samba/samba3.tpl:51 personal/samba/samba3.tpl:118 +#: personal/samba/samba2.tpl:45 personal/samba/class_sambaAccount.inc:763 +#: personal/samba/class_sambaAccount.inc:1265 +msgid "Profile path" +msgstr "Profile path" + +#: personal/samba/samba3.tpl:65 +msgid "Terminal Server" +msgstr "终端服务器" + +#: personal/samba/samba3.tpl:102 personal/samba/class_sambaAccount.inc:1215 +msgid "Allow login on terminal server" +msgstr "允许登录到终端服务器" + +#: personal/samba/samba3.tpl:138 personal/samba/class_sambaAccount.inc:1216 +msgid "Inherit client config" +msgstr "继承客户配置" + +#: personal/samba/samba3.tpl:141 +msgid "Initial program" +msgstr "初始程序" + +#: personal/samba/samba3.tpl:149 +msgid "Working directory" +msgstr "工作目录" + +#: personal/samba/samba3.tpl:166 +msgid "Timeout settings (in minutes)" +msgstr "超时设置(分钟)" + +#: personal/samba/samba3.tpl:182 personal/samba/class_sambaAccount.inc:770 +#: personal/samba/class_sambaAccount.inc:1272 +msgid "Connection" +msgstr "连接" + +#: personal/samba/samba3.tpl:196 personal/samba/class_sambaAccount.inc:771 +#: personal/samba/class_sambaAccount.inc:1273 +msgid "Disconnection" +msgstr "断开" + +#: personal/samba/samba3.tpl:210 personal/samba/class_sambaAccount.inc:772 +#: personal/samba/class_sambaAccount.inc:1274 +msgid "IDLE" +msgstr "闲" + +#: personal/samba/samba3.tpl:226 +msgid "Client devices" +msgstr "客户设备" + +#: personal/samba/samba3.tpl:233 +msgid "Connect client drives at logon" +msgstr "登录时连接客户驱动器" + +#: personal/samba/samba3.tpl:241 +msgid "Connect client printers at logon" +msgstr "登录时连接客户打印机" + +#: personal/samba/samba3.tpl:249 +msgid "Default to main client printer" +msgstr "缺省用主要客户打印机" + +#: personal/samba/samba3.tpl:259 +msgid "Miscellaneous" +msgstr "杂项" + +#: personal/samba/samba3.tpl:263 +msgid "Shadowing" +msgstr "" + +#: personal/samba/samba3.tpl:274 +msgid "On broken or timed out" +msgstr "断开或超时" + +#: personal/samba/samba3.tpl:284 +msgid "Reconnect if disconnected" +msgstr "断线重连" + +#: personal/samba/samba3.tpl:301 personal/samba/samba2.tpl:59 +msgid "Access options" +msgstr "访问选项" + +#: personal/samba/samba3.tpl:309 personal/samba/samba2.tpl:67 +msgid "Allow user to change password from client" +msgstr "允许用户从客户端修改口令" + +#: personal/samba/samba3.tpl:314 personal/samba/samba2.tpl:72 +#: personal/samba/class_sambaAccount.inc:1218 +msgid "Login from windows client requires no password" +msgstr "从 Windows 客户端登录不需要口令" + +#: personal/samba/samba3.tpl:319 personal/samba/class_sambaAccount.inc:1219 +msgid "Lock samba account" +msgstr "锁定 samba 账号" + +#: personal/samba/samba3.tpl:324 personal/samba/samba2.tpl:87 +msgid "Password expires on" +msgstr "口令过期截止日" + +#: personal/samba/samba3.tpl:344 personal/samba/class_sambaAccount.inc:1222 +msgid "Limit Logon Time" +msgstr "限制登录时间" + +#: personal/samba/samba3.tpl:364 personal/samba/class_sambaAccount.inc:1223 +msgid "Limit Logoff Time" +msgstr "限制退出时间" + +#: personal/samba/samba3.tpl:385 +msgid "Account expires after" +msgstr "账号过期于" + +#: personal/samba/samba3.tpl:408 +msgid "Samba logon times" +msgstr "Samba 登录次数" + +#: personal/samba/samba3.tpl:408 +msgid "Edit settings..." +msgstr "编辑设置..." + +#: personal/samba/samba3.tpl:416 +msgid "Allow connection from these workstations only" +msgstr "只允许从这些工作站建立连接" + +#: personal/samba/samba3.tpl:427 +msgid "Used by all users" +msgstr "" + +#: personal/samba/samba3.tpl:430 +msgid "Used by some users" +msgstr "" + +#: personal/samba/sambaLogonHours.tpl:22 +msgid "Specify the hours this user is allowed to log in" +msgstr "指定用户允许登录几个小时" + +#: personal/samba/sambaLogonHours.tpl:28 +msgid "Hour" +msgstr "小时" + +#: personal/samba/samba2.tpl:13 +msgid "Samba home" +msgstr "Samba 主目录" + +#: personal/samba/samba2.tpl:77 +msgid "Temporary disable samba account" +msgstr "临时禁用 samba 账号" + +#: personal/samba/class_sambaAccount.inc:24 +#: personal/samba/class_sambaAccount.inc:217 +#: personal/samba/class_sambaAccount.inc:229 +#: personal/samba/class_sambaAccount.inc:230 +#: personal/samba/class_sambaAccount.inc:239 +#: personal/samba/class_sambaAccount.inc:240 +#: personal/samba/class_sambaAccount.inc:242 +#: personal/samba/class_sambaAccount.inc:243 +#: personal/samba/class_sambaAccount.inc:1199 +msgid "Samba" +msgstr "Samba" + +#: personal/samba/class_sambaAccount.inc:25 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/samba/class_sambaAccount.inc:243 +msgid "POSIX" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Error" +msgstr "错误" + +#: personal/samba/class_sambaAccount.inc:371 +msgid "Please select an entry!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:535 +msgid "disabled" +msgstr "禁用" + +#: personal/samba/class_sambaAccount.inc:536 +msgid "input on, notify on" +msgstr "输入打开,通知打开" + +#: personal/samba/class_sambaAccount.inc:537 +msgid "input on, notify off" +msgstr "输入打开,通知关闭" + +#: personal/samba/class_sambaAccount.inc:538 +msgid "input off, notify on" +msgstr "输入关闭,通知打开" + +#: personal/samba/class_sambaAccount.inc:539 +msgid "input off, nofify off" +msgstr "输入关闭,通知关闭" + +#: personal/samba/class_sambaAccount.inc:541 +msgid "disconnect" +msgstr "断开" + +#: personal/samba/class_sambaAccount.inc:542 +msgid "reset" +msgstr "重置" + +#: personal/samba/class_sambaAccount.inc:544 +msgid "from any client" +msgstr "从任意客户" + +#: personal/samba/class_sambaAccount.inc:545 +msgid "from previous client only" +msgstr "只从上一个客户" + +#: personal/samba/class_sambaAccount.inc:755 +#, fuzzy +msgid "Home drive" +msgstr "用户主目录" + +#: personal/samba/class_sambaAccount.inc:758 +#, fuzzy +msgid "Home path" +msgstr "住宅电话" + +#: personal/samba/class_sambaAccount.inc:781 +#, fuzzy +msgid "The windows usermanager allows eight clients at maximum!" +msgstr "Windows 用户管理员只允许八个客户。您指定的超过八个。" + +#: personal/samba/class_sambaAccount.inc:970 +#: personal/samba/class_sambaAccount.inc:994 +msgid "Warning" +msgstr "警告" + +#: personal/samba/class_sambaAccount.inc:970 +msgid "Undefined Samba SID detected. Please fix this problem manually!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:994 +msgid "" +"Cannot convert primary group to samba group: group cannot be identified!" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1200 personal/samba/main.inc:136 +msgid "Samba settings" +msgstr "Samba 设置" + +#: personal/samba/class_sambaAccount.inc:1204 +msgid "My account" +msgstr "我的账号" + +#: personal/samba/class_sambaAccount.inc:1210 +#, fuzzy +msgid "Generic home directory" +msgstr "用户主目录" + +#: personal/samba/class_sambaAccount.inc:1211 +msgid "Generic samba home drive" +msgstr "" + +#: personal/samba/class_sambaAccount.inc:1213 +#, fuzzy +msgid "Generic script path" +msgstr "脚本路径" + +#: personal/samba/class_sambaAccount.inc:1214 +#, fuzzy +msgid "Generic profile path" +msgstr "Profile path" + +#: personal/samba/class_sambaAccount.inc:1217 +#, fuzzy +msgid "Allow user to change password" +msgstr "允许用户从客户端修改口令" + +#: personal/samba/class_sambaAccount.inc:1220 +#, fuzzy +msgid "Account expires" +msgstr "账号过期于" + +#: personal/samba/class_sambaAccount.inc:1221 +#, fuzzy +msgid "Password expires" +msgstr "口令过期截止日" + +#: personal/samba/class_sambaAccount.inc:1224 +#, fuzzy +msgid "Logon hours" +msgstr "1 小时" + +#: personal/samba/class_sambaAccount.inc:1225 +#, fuzzy +msgid "Allow connection from" +msgstr "只允许从这些工作站建立连接" + +#: personal/samba/class_sambaAccount.inc:1284 +msgid "" +"The windows user manager only allows eight clients. You've specified more " +"than eight." +msgstr "Windows 用户管理员只允许八个客户。您指定的超过八个。" + +#: personal/samba/samba3_workstations.tpl:6 +msgid "Select workstations to add" +msgstr "选择要添加的工作站" + +#: personal/samba/samba3_workstations.tpl:20 +msgid "Filters" +msgstr "过滤器" + +#: personal/samba/samba3_workstations.tpl:26 +msgid "Display workstations of department" +msgstr "显示部门的工作站" + +#: personal/samba/samba3_workstations.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "选择一个部门来做查询" + +#: personal/samba/samba3_workstations.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "匹配地址的正则表达式" + +#~ msgid "Choose subtree to place terminal in" +#~ msgstr "选择放置终端的子树" + +#~ msgid "Workstation name" +#~ msgstr "工作站名称" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Delete" +#~ msgstr "删除" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Apply" +#~ msgstr "应用" + +#~ msgid "This 'dn' has no network features." +#~ msgstr "这个 'dn' 没有网络功能。" + +#~ msgid "You have no permissions to create a component on this 'Base'." +#~ msgstr "您无权在这个 'Base' 下创建一个组件。" + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "在您选择的部门中已经存在条目 '%s'" + +#~ msgid "Sunday" +#~ msgstr "星期日" + +#~ msgid "Monday" +#~ msgstr "星期一" + +#~ msgid "Tuesday" +#~ msgstr "星期二" + +#~ msgid "Wednesday" +#~ msgstr "星期三" + +#~ msgid "Thursday" +#~ msgstr "星期四" + +#~ msgid "Friday" +#~ msgstr "星期五" + +#~ msgid "Saturday" +#~ msgstr "星期六" + +#~ msgid "This account has no samba extensions." +#~ msgstr "这个账号没有 samba 扩展。" + +#~ msgid "Remove samba account" +#~ msgstr "删除 samba 账号" + +#~ msgid "" +#~ "This account has samba features enabled. You can disable them by clicking " +#~ "below." +#~ msgstr "这个账户 samba 功能已启用。您可以点击下面的按钮禁用。" + +#~ msgid "Create samba account" +#~ msgstr "创建 samba 账号" + +#~ msgid "" +#~ "This account has samba features disabled. You can enable them by clicking " +#~ "below." +#~ msgstr "这个账户 samba 功能已禁用。您可以点击下面的按钮来启用。" + +#~ msgid "" +#~ "This account has samba features disabled. Posix features are needed for " +#~ "samba accounts, enable them first." +#~ msgstr "这个账户 samba 功能已禁用。该 samba 账户需要 Posix 功能,请先启用。" + +#~ msgid "January" +#~ msgstr "一月" + +#~ msgid "February" +#~ msgstr "二月" + +#~ msgid "March" +#~ msgstr "三月" + +#~ msgid "April" +#~ msgstr "四月" + +#~ msgid "May" +#~ msgstr "五月" + +#~ msgid "June" +#~ msgstr "六月" + +#~ msgid "July" +#~ msgstr "七月" + +#~ msgid "August" +#~ msgstr "八月" + +#~ msgid "September" +#~ msgstr "九月" + +#~ msgid "October" +#~ msgstr "十月" + +#~ msgid "November" +#~ msgstr "十一月" + +#~ msgid "December" +#~ msgstr "十二月" + +#, fuzzy +#~ msgid "Removing of user/samba account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#~ msgid "The value specified as '%s' contains invalid characters!" +#~ msgstr "给出的数据 '%s' 包含无效字符!" + +#~ msgid "" +#~ "The timeout property '%s' is checked and contains invalid or no " +#~ "characters!" +#~ msgstr "超时属性 '%s' 检查发现包含无效字符或者为空!" + +#, fuzzy +#~ msgid "Saving of user/samba account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#~ msgid "Ok" +#~ msgstr "好" + +#~ msgid "Click the 'Edit' button below to change informations in this dialog" +#~ msgstr "点击下面的“编辑”按钮修改该对话框内的信息" + +#~ msgid "Edit" +#~ msgstr "编辑" + +#, fuzzy +#~ msgid "Removing of system wingeneric/generic with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 服务器服务/反病毒失败。" + +#, fuzzy +#~ msgid "Saving of system wingeneric/generic with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 服务器服务/反病毒失败。" diff --git a/trunk/gosa-plugins/samba/personal/samba/class_sambaAccount.inc b/trunk/gosa-plugins/samba/personal/samba/class_sambaAccount.inc new file mode 100644 index 000000000..bd3b56686 --- /dev/null +++ b/trunk/gosa-plugins/samba/personal/samba/class_sambaAccount.inc @@ -0,0 +1,1887 @@ +samba3= ($config->get_cfg_value("sambaversion") == 3); + + if ($this->samba3){ + $this->attributes= array ("sambaSID", "sambaPwdLastSet", "sambaLogonTime", + "sambaLogoffTime", "sambaKickoffTime", "sambaPwdCanChange", + "sambaPwdMustChange", "sambaAcctFlags", "uid", "sambaMungedDial", + "sambaHomePath", "sambaHomeDrive", "sambaLogonScript", + "sambaProfilePath", "sambaPrimaryGroupSID", "sambaDomainName", + "sambaUserWorkstations", "sambaPasswordHistory", + "sambaLogonHours", "sambaBadPasswordTime", + "sambaBadPasswordCount"); + $this->objectclasses= array ("sambaSamAccount"); + $this->mungedObject= new sambaMungedDial; + $this->ctxattributes= $this->mungedObject->ctxattributes; + } else { + $this->attributes= array ("pwdLastSet", "logonTime", "logoffTime", "kickoffTime", + "pwdCanChange", "pwdMustChange", "acctFlags", "profilePath", "uid", + "smbHome", "homeDrive", "scriptPath", "rid", "primaryGroupID"); + $this->objectclasses= array ("sambaAccount"); + } + + plugin::plugin ($config, $dn); + + /* Setting uid to default */ + if(isset($this->attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + + /* Get samba Domain in case of samba 3 */ + if ($this->samba3 && $this->sambaSID != ""){ + $this->SID= preg_replace ("/-[^-]+$/", "", $this->sambaSID); + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search ("(&(objectClass=sambaDomain)(sambaSID=$this->SID))",array("sambaAlgorithmicRidBase","sambaDomainName")); + if ($ldap->count() != 0){ + $attrs= $ldap->fetch(); + if(isset($attrs['sambaAlgorithmicRidBase'])){ + $this->ridBase= $attrs['sambaAlgorithmicRidBase'][0]; + } else { + $this->ridBase= $this->config->get_cfg_value("sambaRidBase"); + } + if ($this->sambaDomainName == ""){ + $this->sambaDomainName= $attrs['sambaDomainName'][0]; + } + } else { + if ($this->sambaDomainName == ""){ + $this->sambaDomainName= "DEFAULT"; + } + $this->ridBase= $this->config->get_cfg_value("sambaRidBase"); + $this->SID= $this->config->get_cfg_value("sambaSid"); + } + + /* Save in order to compare later on */ + $this->orig_sambaDomainName= $this->sambaDomainName; + } + + /* Fill mungedDial field */ + if ($this->samba3 && isset($this->attrs['sambaMungedDial'])){ + $this->mungedObject->load($this->sambaMungedDial); + } + + /* Password expiery */ + if(isset($this->attrs['sambaPwdMustChange']) && + $this->attrs['sambaPwdMustChange'][0] != 0){ + $this->password_expires= 1; + } + + if(isset($this->attrs['sambaLogonTime']) && ! ( + $this->attrs['sambaLogonTime'][0] == 0 || + $this->attrs['sambaLogonTime'][0] == 2147483647 + )){ + $this->logon_time_set= 1; + } + if(isset($this->attrs['sambaLogoffTime']) && ! ( + $this->attrs['sambaLogoffTime'][0] == 0 || + $this->attrs['sambaLogoffTime'][0] == 2147483647 + )){ + $this->logoff_time_set= 1; + } + + /* Account expiery */ + if(isset($this->attrs['sambaKickoffTime']) && ! ( + $this->attrs['sambaKickoffTime'][0] == 0 || + $this->attrs['sambaKickoffTime'][0] == 2147483647 + )){ + $this->kickoff_time_set= 1; + } + + /* Get global filter config */ + if (!session::is_set("sambafilter")){ + $ui= get_userinfo(); + $base= get_base_from_people($ui->dn); + $sambafilter= array( "depselect" => $base, "regex" => "*"); + session::set("sambafilter", $sambafilter); + } + + /* Save initial account state */ + $this->initially_was_account= $this->is_account; + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + /* Do we represent a valid account? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\"src=\"images/small-error.png\" ". + msgPool::noValidExtension(_("Samba")).""; + $display.= back_to_main(); + return ($display); + } + + $display =""; + if(!$this->multiple_support_active){ + + /* Show tab dialog headers */ + $display= ""; + if ($this->parent !== NULL){ + if ($this->is_account){ + $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("Samba")), + msgPool::featuresEnabled(_("Samba"))); + } else { + $obj= $this->parent->by_object['posixAccount']; + + /* Samba3 dependency on posix accounts are enabled + in the moment, because I need to rely on unique + uidNumbers. There'll be a better solution later + on. */ + if ($obj->is_account){ + $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Samba")), + msgPool::featuresDisabled(_("Samba"))); + } else { + $display= $this->show_enable_header(msgPool::addFeaturesButton(_("Samba")), + msgPool::featuresDisabled(_("Samba"), _("POSIX")), TRUE); + } + return ($display); + } + } + } + + $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + + /* Open Samaba Logong hours dialog */ + if(isset($_POST['SetSambaLogonHours']) && $this->samba3 && $this->acl_is_readable("sambaLogonHours")){ + $this->dialog = new sambaLogonHours($this->config,$this->dn,$this->sambaLogonHours); + } + + /* Cancel dialog */ + if(isset($_POST['cancel_logonHours'])){ + $this->dialog = FALSE; + } + + /* Save selected logon hours */ + if(isset($_POST['save_logonHours'])){ + $this->dialog->save_object(); + if($this->acl_is_writeable("sambaLogonHours")){ + $this->sambaLogonHours = $this->dialog->save(); + } + $this->dialog = FALSE; + } + + /* Display dialog */ + if((isset($this->dialog)) && (is_object($this->dialog))){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + /* Prepare templating */ + $smarty= get_smarty(); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $var => $rest){ + $smarty->assign($var."ACL",$this->getacl($var,$SkipWrite)); + } + + if(!session::is_set('edit') && !isset($this->parent)){ + $smarty->assign("sambaLogonHoursACL",""); + } + + if ($this->sambaPwdMustChange=="0"){ + $date= getdate(); + } else { + $date= getdate($this->sambaPwdMustChange); + } + + if ($this->sambaLogonTime=="2147483647" || $this->sambaLogonTime=="0"){ + $sambaLogonTime_date= getdate(); + } else { + $sambaLogonTime_date= getdate($this->sambaLogonTime); + } + + if ($this->sambaLogoffTime=="2147483647" || $this->sambaLogoffTime=="0"){ + $sambaLogoffTime_date= getdate(); + } else { + $sambaLogoffTime_date= getdate($this->sambaLogoffTime); + } + + if ($this->sambaKickoffTime=="2147483647" || $this->sambaKickoffTime=="0"){ + $sambaKickoffTime_date= getdate(); + } else { + $sambaKickoffTime_date= getdate($this->sambaKickoffTime); + } + + /* Remove user workstations? */ + if (isset($_POST["delete_ws"]) && isset($_POST['workstation_list'])){ + + if($this->acl_is_writeable("sambaUserWorkstations",$SkipWrite)){ + + if($this->multiple_support_active){ + foreach($_POST['workstation_list'] as $name){ + if(isset($this->multiple_sambaUserWorkstations[trim($name)])){ + unset($this->multiple_sambaUserWorkstations[trim($name)]); + } + } + }else{ + $tmp= $this->sambaUserWorkstations; + foreach($_POST['workstation_list'] as $name){ + $tmp= preg_replace("/$name/", '', $tmp); + $this->is_modified= TRUE; + } + $tmp= preg_replace('/,+/', ',', $tmp); + $this->sambaUserWorkstations= trim($tmp, ','); + } + } + } + + /* Add user workstation? */ + if (isset($_POST["add_ws"])){ + if($this->acl_is_writeable("sambaUserWorkstations",$SkipWrite)){ + $this->show_ws_dialog= TRUE; + $this->dialog= TRUE; + } + } + + /* Add user workstation finished? */ + if (isset($_POST["add_ws_cancel"])){ + $this->show_ws_dialog= FALSE; + $this->dialog= FALSE; + } + + /* Add user workstation? */ + if (isset($_POST["add_ws_finish"])){ + + if (isset($_POST['wslist'])){ + if($this->multiple_support_active){ + foreach($_POST['wslist'] as $ws){ + $this->multiple_sambaUserWorkstations[trim($we)] = array("Name" => trim($ws), "UsedByAllUsers" => TRUE); + } + }else{ + $tmp= $this->sambaUserWorkstations; + foreach($_POST['wslist'] as $ws){ + $tmp.= ",$ws"; + } + $tmp= preg_replace('/,+/', ',', $tmp); + $this->sambaUserWorkstations= trim($tmp, ','); + } + $this->is_modified= TRUE; + + $this->show_ws_dialog= FALSE; + $this->dialog= FALSE; + } else { + msg_dialog::display(_("Error"), _("Please select an entry!"), ERROR_DIALOG); + } + } + + /* Show ws dialog */ + if ($this->show_ws_dialog){ + + /* Save data */ + $sambafilter= session::get("sambafilter"); + foreach( array("depselect", "regex") as $type){ + if (isset($_POST[$type])){ + $sambafilter[$type]= $_POST[$type]; + } + } + if (isset($_GET['search'])){ + $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*"; + if ($s == "**"){ + $s= "*"; + } + $sambafilter['regex']= $s; + } + session::set("sambafilter", $sambafilter); + + /* Get workstation list */ + $exclude= ""; + + if($this->multiple_support_active){ + foreach($this->multiple_sambaUserWorkstations as $ws){ + if($ws['UsedByAllUsers']){ + $exclude.= "(cn=".$ws['Name']."$)"; + } + } + }else{ + foreach(split(',', $this->sambaUserWorkstations) as $ws){ + $exclude.= "(cn=$ws$)"; + } + } + if ($exclude != ""){ + $exclude= "(!(|$exclude))"; + } + $regex= $sambafilter['regex']; + $filter= "(&(objectClass=sambaSAMAccount)$exclude(uid=*$)(|(uid=$regex)(cn=$regex)))"; + $res= get_list($filter, "winworkstation", $sambafilter['depselect'], array("uid"), GL_SUBSEARCH | GL_SIZELIMIT); + + $wslist= array(); + foreach ($res as $attrs){ + $wslist[]= preg_replace('/\$/', '', $attrs['uid'][0]); + } + asort($wslist); + + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("deplist", $this->config->idepartments); + $smarty->assign("alphabet", generate_alphabet()); + foreach( array("depselect", "regex") as $type){ + $smarty->assign("$type", $sambafilter[$type]); + } + $smarty->assign("hint", print_sizelimit_warning()); + $smarty->assign("wslist", $wslist); + $smarty->assign("apply", apply_filter()); + $display= $smarty->fetch (get_template_path('samba3_workstations.tpl', TRUE, + dirname(__FILE__))); + return ($display); + } + + /* Fill calendar */ + $days= array(); + for($d= 1; $d<32; $d++){ + $days[]= $d; + } + $years= array(); + for($y= $date['year']-4; $y<$date['year']+4; $y++){ + $years[]= $y; + } + $months= msgPool::months(); + $smarty->assign("day", $date["mday"]); + $smarty->assign("days", $days); + $smarty->assign("months", $months); + $smarty->assign("month", $date["mon"]-1); + $smarty->assign("years", $years); + $smarty->assign("year", $date["year"]); + + $sambaLogonTime_days= array(); + for($d= 1; $d<32; $d++){ + $sambaLogonTime_days[]= $d; + } + $sambaLogonTime_years= array(); + for($y= $date['year']-4; $y<$date['year']+4; $y++){ + $sambaLogonTime_years[]= $y; + } + $sambaLogonTime_months= msgPool::months(); + $smarty->assign("sambaLogonTime_day", $sambaLogonTime_date["mday"]); + $smarty->assign("sambaLogonTime_days", $sambaLogonTime_days); + $smarty->assign("sambaLogonTime_months", $sambaLogonTime_months); + $smarty->assign("sambaLogonTime_month", $sambaLogonTime_date["mon"]-1); + $smarty->assign("sambaLogonTime_years", $sambaLogonTime_years); + $smarty->assign("sambaLogonTime_year", $sambaLogonTime_date["year"]); + + $sambaLogoffTime_days= array(); + for($d= 1; $d<32; $d++){ + $sambaLogoffTime_days[]= $d; + } + $sambaLogoffTime_years= array(); + for($y= $date['year']-4; $y<$date['year']+4; $y++){ + $sambaLogoffTime_years[]= $y; + } + $sambaLogoffTime_months= msgPool::months(); + $smarty->assign("sambaLogoffTime_day", $sambaLogoffTime_date["mday"]); + $smarty->assign("sambaLogoffTime_days", $sambaLogoffTime_days); + $smarty->assign("sambaLogoffTime_months", $sambaLogoffTime_months); + $smarty->assign("sambaLogoffTime_month", $sambaLogoffTime_date["mon"]-1); + $smarty->assign("sambaLogoffTime_years", $sambaLogoffTime_years); + $smarty->assign("sambaLogoffTime_year", $sambaLogoffTime_date["year"]); + + $sambaKickoffTime_days= array(); + for($d= 1; $d<32; $d++){ + $sambaKickoffTime_days[]= $d; + } + $sambaKickoffTime_years= array(); + for($y= $date['year']-4; $y<$date['year']+4; $y++){ + $sambaKickoffTime_years[]= $y; + } + $sambaKickoffTime_months= msgPool::months(); + //$smarty->assign("sambaKickoffTime_day", $sambaKickoffTime_date["mday"]-1); + $smarty->assign("sambaKickoffTime_day", $sambaKickoffTime_date["mday"]); // hickert + $smarty->assign("sambaKickoffTime_days", $sambaKickoffTime_days); + $smarty->assign("sambaKickoffTime_months", $sambaKickoffTime_months); + $smarty->assign("sambaKickoffTime_month", $sambaKickoffTime_date["mon"]-1); + $smarty->assign("sambaKickoffTime_years", $sambaKickoffTime_years); + $smarty->assign("sambaKickoffTime_year", $sambaKickoffTime_date["year"]); + + /* Fill boxes */ + if ($this->samba3){ + $domains= array(); + foreach($this->config->data['SERVERS']['SAMBA'] as $name => $content){ + $domains[]= $name; + } + $smarty->assign("domains", $domains); + } + $letters= array(""); + for ($i= 68; $i<91; $i++){ + $letters[]= chr($i).":"; + } + $smarty->assign("drives", $letters); + + /* Fill terminal server settings */ + if ($this->samba3){ + foreach ($this->ctxattributes as $attr){ + /* Fill common attributes */ + if (isset($this->mungedObject->ctx[$attr])){ + $smarty->assign("$attr", $this->mungedObject->ctx[$attr]); + // Set field to blank if value is 0 + if(in_array($attr, array("CtxMaxConnectionTime", "CtxMaxDisconnectionTime", "CtxMaxIdleTime"))) { + if($this->mungedObject->ctx[$attr] == 0) { + $smarty->assign("$attr", ""); + } + } + } else { + $smarty->assign("$attr", ""); + } + } + + /* Assign enum values for preset items */ + $shadowModeVals= array( "0" => _("disabled"), + "1" => _("input on, notify on"), + "2" => _("input on, notify off"), + "3" => _("input off, notify on"), + "4" => _("input off, nofify off")); + + $brokenConnModeVals= array( "0" => _("disconnect"), + "1" => _("reset")); + + $reConnModeVals= array( "0" => _("from any client"), + "1" => _("from previous client only")); + + /* Fill preset items */ + $smarty->assign("shadow", $shadowModeVals); + $smarty->assign("brokenconn", $brokenConnModeVals); + $smarty->assign("reconn", $reConnModeVals); + + /* Fill preset items with values */ + $smarty->assign("shadowmode", $this->mungedObject->getShadow()); + $smarty->assign("brokenconnmode", $this->mungedObject->getBrokenConn()); + $smarty->assign("reconnmode", $this->mungedObject->getReConn()); + + if(session::get('js')){ + /* Set form elements to disabled/enable state */ + $smarty->assign("tsloginstate", $this->mungedObject->getTsLogin()?"":"disabled"); + + $smarty->assign("inheritstate", ""); + if($this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)){ + $smarty->assign("inheritstate", $this->mungedObject->getInheritMode()?"disabled":""); + } + }else{ + $smarty->assign("tsloginstate", ""); + $smarty->assign("inheritstate", ""); + } + + /* Set checkboxes to checked or unchecked state */ + $smarty->assign("tslogin", $this->mungedObject->getTsLogin()?"checked":""); + $smarty->assign("inherit", $this->mungedObject->getInheritMode()?"checked":""); + $smarty->assign("connectclientdrives", + $this->mungedObject->getConnectClientDrives()?"checked":""); + $smarty->assign("connectclientprinters", + $this->mungedObject->getConnectClientPrinters()?"checked":""); + $smarty->assign("defaultprinter", + $this->mungedObject->getDefaultPrinter()?"checked":""); + $smarty->assign("CtxMaxConnectionTimeF", + $this->mungedObject->getCtxMaxConnectionTimeF()?"checked":""); + $smarty->assign("CtxMaxDisconnectionTimeF", + $this->mungedObject->getCtxMaxDisconnectionTimeF()?"checked":""); + $smarty->assign("CtxMaxIdleTimeF", + $this->mungedObject->getCtxMaxIdleTimeF()?"checked":""); + + + /* Fill sambaUserWorkstations */ + $ws= split(",", $this->sambaUserWorkstations); + sort($ws); + + /* Tidy checks for empty option, and smarty will produce one if array[0]="" */ + if(($ws[0]=="")&&(count($ws)==1)) $ws=array(); + + if($this->multiple_support_active){ + $smarty->assign("multiple_workstations",$this->multiple_sambaUserWorkstations); + } + + $smarty->assign("workstations", $ws); + } + + /* Variables */ + foreach($this->attributes as $val){ + $smarty->assign("$val", $this->$val); + } + + /* 'sambaAcctFlags' checkboxes */ + /* Check for 'lock-account'-flag: 'D' or 'L' */ + if (is_integer(strpos($this->sambaAcctFlags, "D")) || + is_integer(strpos($this->sambaAcctFlags, "L"))) { + $smarty->assign("flagsD", "checked"); + } else { + $smarty->assign("flagsD", ""); + } + + /* Check for no_password_required flag 'N' */ + if (is_integer(strpos($this->sambaAcctFlags, "N"))) { + $smarty->assign("flagsN", "checked"); + } else { + $smarty->assign("flagsN", ""); + } + + if($this->samba3){ + if ($this->sambaPwdCanChange=="1"){ + $smarty->assign("flagsP", "checked"); + } else { + $smarty->assign("flagsP", ""); + } + }else{ + if ($this->pwdCanChange=="1"){ + $smarty->assign("flagsP", "checked"); + } else { + $smarty->assign("flagsP", ""); + } + } + + if ($this->password_expires=="1"){ + $smarty->assign("flagsC", "checked"); + } else { + $smarty->assign("flagsC", ""); + } + if ($this->logon_time_set=="1"){ + $smarty->assign("flagsT", "checked"); + } else { + $smarty->assign("flagsT", ""); + } + if ($this->logoff_time_set=="1"){ + $smarty->assign("flagsO", "checked"); + } else { + $smarty->assign("flagsO", ""); + } + if ($this->kickoff_time_set=="1"){ + $smarty->assign("flagsK", "checked"); + } else { + $smarty->assign("flagsK", ""); + } + + + /* In case of javascript, disable some fields on demand */ + if ($this->samba3){ + foreach($this->mungedObject->getOnDemandFlags() as $key => $value) { + $smarty->assign("$key", "$value"); + } + } + + + foreach($this->attributes as $attr){ + if(in_array($attr,$this->multi_boxes)){ + $smarty->assign("use_".$attr,TRUE); + }else{ + $smarty->assign("use_".$attr,FALSE); + } + } + foreach(array("allow_pwchange","tslogin","CtxWFHomeDir","CtxWFHomeDirDrive","CtxWFProfilePath", + "inherit","CtxWorkDirectory","CtxInitialProgram","CtxMaxConnectionTimeF","CtxMaxConnectionTime","CtxMaxDisconnectionTimeF", + "CtxMaxDisconnectionTime","CtxMaxIdleTimeF","CtxMaxIdleTime","connectclientdrives", + "onnectclientprinters","defaultprinter","shadow","brokenconn", + "reconn","allow_pwchange","connectclientprinters","no_password_required","temporary_disable", + "password_expires","logon_time_set","logoff_time_set","kickoff_time_set","SetSambaLogonHours", + "workstation_list") as $attr){ + if(in_array($attr,$this->multi_boxes)){ + $smarty->assign("use_".$attr,TRUE); + }else{ + $smarty->assign("use_".$attr,FALSE); + } + } + + if($this->multiple_support_active){ + $smarty->assign("tsloginstate",""); + } + + /* Create additional info for sambaKickOffTime and sambaPwdMustChange. + e.g. Display effective kickoff time. Domain policy + user settings. + */ + $additional_info_PwdMustChange = ""; + + /* Calculate effective max Password Age + This can only be calculated if sambaPwdLastSet ist set. + */ + if(isset($this->attrs['sambaPwdLastSet'][0])){ + $last = $this->attrs['sambaPwdLastSet'][0]; + + $sid = $this->get_domain_info(); + if(isset($sid['sambaMaxPwdAge'][0])){ + $d = ($last + $sid['sambaMaxPwdAge'][0]) - time(); + + /* A negative value means the password is outdated + */ + if($d < 0){ + $additional_info_PwdMustChange = sprintf(_("The password is outdated since %s, by domain policy."), + date("d.m.Y H:i:s",$last + $sid['sambaMaxPwdAge'][0])); + }else{ + if($this->password_expires && ($last + $sid['sambaMaxPwdAge'][0]) > $this->sambaPwdMustChange){ + $additional_info_PwdMustChange = sprintf(_("The password is valid till %s, by user policy."), + date("d.m.Y H:i:s", $this->sambaPwdMustChange)); + }else{ + $additional_info_PwdMustChange = sprintf(_("The password is valid till %s, by domain policy."), + date("d.m.Y H:i:s", ($last + $sid['sambaMaxPwdAge'][0]))); + } + } + } + } + $smarty->assign("additional_info_PwdMustChange",$additional_info_PwdMustChange); + + /* Show main page */ + $smarty->assign("multiple_support",$this->multiple_support_active); + if ($this->samba3){ + + $smarty->assign("samba_information",""); + $smarty->assign("display_information",$this->display_information); + if($this->display_information){ + $smarty->assign("samba_information",$this->get_samba_information()); + } + + $display.= $smarty->fetch (get_template_path('samba3.tpl', TRUE, dirname(__FILE__))); + } else { + $display.= $smarty->fetch (get_template_path('samba2.tpl', TRUE, dirname(__FILE__))); + } + + return ($display); + } + + + /*! \brief Returns the samba Domain object, selected in the samba tab. + */ + function get_domain_info() + { + /* Only search once, return last result if available + */ + if(!isset($this->cache['DOMAIN'][$this->sambaDomainName])){ + $this->cache['DOMAIN'][$this->sambaDomainName] = array(); + if(!empty($this->sambaDomainName) && isset($this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName])){ + $cfg = $this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName]; + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=sambaDomain)(sambaSID=".$cfg['SID']."))",array("*")); + if($ldap->count()){ + $this->cache['DOMAIN'][$this->sambaDomainName] = $ldap->fetch(); + } + } + } + return($this->cache['DOMAIN'][$this->sambaDomainName]); + } + + + + function get_samba_information() + { + + /* Defaults + */ + $sambaMinPwdLength = "unset"; + $sambaPwdHistoryLength = "unset"; + $sambaLogonToChgPwd = "unset"; + $sambaMaxPwdAge = "unset"; + $sambaMinPwdAge = "unset"; + $sambaLockoutDuration = "unset"; + $sambaLockoutThreshold = "unset"; + $sambaForceLogoff = "unset"; + $sambaRefuseMachinePwdChange = "unset"; + $sambaPwdLastSet = "unset"; + $sambaLogonTime = "unset"; + $sambaLogoffTime = "unset"; + + $sambaKickoffTime = "unset"; + $sambaPwdCanChange = "unset"; + $sambaPwdMustChange = "unset"; + $sambaBadPasswordCount = "unset"; + $sambaBadPasswordTime = "unset"; + + /* Domain attributes + */ + $domain_attributes = array("sambaMinPwdLength","sambaPwdHistoryLength","sambaMaxPwdAge", + "sambaMinPwdAge","sambaLockoutDuration","sambaRefuseMachinePwdChange", + "sambaLogonToChgPwd","sambaLockoutThreshold","sambaForceLogoff"); + + /* User attributes + */ + $user_attributes = array("sambaBadPasswordTime","sambaPwdLastSet","sambaLogonTime","sambaLogoffTime", + "sambaKickoffTime","sambaPwdCanChange","sambaPwdMustChange","sambaBadPasswordCount"); + + /* Get samba SID object and parse settings. + */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + if(!empty($this->sambaDomainName) && isset($this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName])){ + $attrs = $this->get_domain_info(); + foreach($domain_attributes as $attr){ + if(isset($attrs[$attr])){ + $$attr = $attrs[$attr][0]; + } + } + } + + /* Get user infos + */ + foreach($user_attributes as $attr){ + if(isset($this->attrs[$attr])){ + $$attr = $this->attrs[$attr][0]; + } + } + if($this->password_expires){ + $sambaPwdMustChange = $this->sambaPwdMustChange; + } + if($this->kickoff_time_set){ + $sambaKickoffTime = $this->sambaKickoffTime; + } + $sambaPwdCanChange = $this->sambaPwdCanChange; + + + /* DOMAIN Attributes + */ + + /* sambaMinPwdLength: Password length has a default of 5 + */ + if($sambaMinPwdLength == "unset" || $sambaMinPwdLength == 5){ + $sambaMinPwdLength = "5 ("._("default").")"; + } + + /* sambaPwdHistoryLength: Length of Password History Entries (default: 0 => off) + */ + if($sambaPwdHistoryLength == "unset" || $sambaPwdHistoryLength == 0){ + $sambaPwdHistoryLength = _("Off")." ("._("default").")"; + } + + /* sambaLogonToChgPwd: Force Users to logon for password change (default: 0 => off, 2 => on) + */ + if($sambaLogonToChgPwd == "unset" || $sambaLogonToChgPwd == 0){ + $sambaLogonToChgPwd = _("Off")." ("._("default").")"; + }else{ + $sambaLogonToChgPwd = _("On"); + } + + /* sambaMaxPwdAge: Maximum password age, in seconds (default: -1 => never expire passwords)' + */ + if($sambaMaxPwdAge == "unset" || $sambaMaxPwdAge == "-1"){ + $sambaMaxPwdAge = _("disabled")." ("._("default").")"; + }else{ + $sambaMaxPwdAge .= " "._("seconds"); + } + + /* sambaMinPwdAge: Minimum password age, in seconds (default: 0 => allow immediate password change + */ + if($sambaMinPwdAge == "unset" || $sambaMinPwdAge == 0){ + $sambaMinPwdAge = _("disabled")." ("._("default").")"; + }else{ + $sambaMinPwdAge .= " "._("seconds"); + } + + /* sambaLockoutDuration: Lockout duration in minutes (default: 30, -1 => forever) + */ + if($sambaLockoutDuration == "unset" || $sambaLockoutDuration == 30){ + $sambaLockoutDuration = "30 "._("minutes")." ("._("default").")"; + }elseif($sambaLockoutDuration == -1){ + $sambaLockoutDuration = _("forever"); + }else{ + $sambaLockoutDuration .= " "._("minutes"); + } + + /* sambaLockoutThreshold: Lockout users after bad logon attempts (default: 0 => off + */ + if($sambaLockoutThreshold == "unset" || $sambaLockoutThreshold == 0){ + $sambaLockoutThreshold = _("disabled")." ("._("default").")"; + } + + /* sambaForceLogoff: Disconnect Users outside logon hours (default: -1 => off, 0 => on + */ + if($sambaForceLogoff == "unset" || $sambaForceLogoff == -1){ + $sambaForceLogoff = _("off")." ("._("default").")"; + }else{ + $sambaForceLogoff = _("on"); + } + + /* sambaRefuseMachinePwdChange: Allow Machine Password changes (default: 0 => off + */ + if($sambaRefuseMachinePwdChange == "none" || $sambaRefuseMachinePwdChange == 0){ + $sambaRefuseMachinePwdChange = _("off")." ("._("default").")"; + }else{ + $sambaRefuseMachinePwdChange = _("on"); + } + + /* USER Attributes + */ + /* sambaBadPasswordTime: Time of the last bad password attempt + */ + if($sambaBadPasswordTime == "unset" || empty($sambaBadPasswordTime)){ + $sambaBadPasswordTime = "("._("unset").")"; + }else{ + $sambaBadPasswordTime = date("d.m.Y H:i:s",$sambaBadPasswordTime); + } + + /* sambaBadPasswordCount: Bad password attempt count + */ + if($sambaBadPasswordCount == "unset" || empty($sambaBadPasswordCount)){ + $sambaBadPasswordCount = "("._("unset").")"; + }else{ + $sambaBadPasswordCount = date("d.m.Y H:i:s",$sambaBadPasswordCount); + } + + /* sambaPwdLastSet: Timestamp of the last password update + */ + if($sambaPwdLastSet == "unset" || empty($sambaPwdLastSet)){ + $sambaPwdLastSet = "("._("unset").")"; + }else{ + $sambaPwdLastSet = date("d.m.Y H:i:s",$sambaPwdLastSet); + } + + /* sambaLogonTime: Timestamp of last logon + */ + if($sambaLogonTime == "unset" || empty($sambaLogonTime)){ + $sambaLogonTime = "("._("unset").")"; + }else{ + $sambaLogonTime = date("d.m.Y H:i:s",$sambaLogonTime); + } + + /* sambaLogoffTime: Timestamp of last logoff + */ + if($sambaLogoffTime == "unset" || empty($sambaLogoffTime)){ + $sambaLogoffTime = "("._("unset").")"; + }else{ + $sambaLogoffTime = date("d.m.Y H:i:s",$sambaLogoffTime); + } + + /* sambaKickoffTime: Timestamp of when the user will be logged off automatically + */ + if($sambaKickoffTime == "unset" || empty($sambaKickoffTime)){ + $sambaKickoffTime = "("._("unset").")"; + }else{ + $sambaKickoffTime = date("d.m.Y H:i:s",$sambaKickoffTime); + } + + /* sambaPwdMustChange: Timestamp of when the password will expire + */ + if($sambaPwdMustChange == "unset" || empty($sambaPwdMustChange)){ + $sambaPwdMustChange = "("._("unset").")"; + }else{ + $sambaPwdMustChange = date("d.m.Y H:i:s",$sambaPwdMustChange); + } + + /* sambaPwdCanChange: Timestamp of when the user is allowed to update the password + */ + if($sambaPwdCanChange == "unset" || empty($sambaPwdCanChange)){ + $sambaPwdCanChange = "("._("unset").")"; + }elseif($sambaPwdCanChange != "unset" && time() > $sambaPwdCanChange){ + $sambaPwdCanChange = _("immediately") ; + }else{ + $days = floor((($sambaPwdCanChange - time()) / 60 / 60 / 24)) ; + $hours = floor((($sambaPwdCanChange - time()) / 60 / 60) % 24) ; + $minutes = floor((($sambaPwdCanChange - time()) / 60 ) % 60) ; + + $sambaPwdCanChange = " ".$days." "._("days"); + $sambaPwdCanChange.= " ".$hours." "._("hours"); + $sambaPwdCanChange.= " ".$minutes." "._("minutes"); + } + + $str = + "\n
    ". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n
    "._("Domain attributes")."
    "._("Min password length").": ".$sambaMinPwdLength."
    "._("Min password length").": ".$sambaMinPwdLength."
    "._("Password history").": ".$sambaPwdHistoryLength."
    "._("Force password change").": ".$sambaLogonToChgPwd."
    "._("Maximum password age").": ".$sambaMaxPwdAge."
    "._("Minimum password age").": ".$sambaMinPwdAge."
    "._("Lockout duration").": ".$sambaLockoutDuration."
    "._("Bad lockout attempt").": ".$sambaLockoutThreshold."
    "._("Disconnect time").": ".$sambaForceLogoff."
    "._("Refuse machine password change").":".$sambaRefuseMachinePwdChange."
    ". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n". + "\n
    "._("User attributes")."
    "._("Last failed login").": ".$sambaBadPasswordTime."
    "._("Logon attempts").": ".$sambaBadPasswordCount."
    "._("Last password update").": ".$sambaPwdLastSet."
    "._("Last logon").": ".$sambaLogonTime."
    "._("Last logoff").": ".$sambaLogoffTime."
    "._("Automatic logoff").": ".$sambaKickoffTime."
    "._("Password expires").": ".$sambaPwdMustChange."
    "._("Password change available").": ".$sambaPwdCanChange."
    "; + return($str); + } + + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + plugin::remove_from_parent(); + + /* Keep uid attribute for gosaAccount */ + unset($this->attrs['uid']); + unset($this->attrs['uidNumber']); + unset($this->attrs['gidNumber']); + + /* Remove objectClass for sambaIdmapEntry */ + $tmp= array(); + for ($i= 0; $iattrs["objectClass"]); $i++){ + if ($this->attrs['objectClass'][$i] != 'sambaIdmapEntry'){ + $tmp[]= $this->attrs['objectClass'][$i]; + } + } + $this->attrs['objectClass']= $tmp; + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove", array("uid" => $this->uid)); + } + + + /* Check for input problems */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + if ($this->samba3){ + + /* sambaHomePath requires sambaHomeDrive and vice versa */ + if(!empty($this->sambaHomePath) && empty($this->sambaHomeDrive)){ + $message[]= msgPool::required(_("Home drive")); + } + if(!empty($this->sambaHomeDrive) && empty($this->sambaHomePath)){ + $message[]= msgPool::required(_("Home path")); + } + + /* Strings */ + foreach (array( "sambaHomePath" => _("Home directory"), + "sambaProfilePath" => _("Profile path")) as $key => $val){ + if (!$this->mungedObject->is_samba_path($this->$key)){ + $message[]= msgPool::invalid($val); + } + } + + /* Numeric values */ + foreach (array( "CtxMaxConnectionTime" => _("Connection"), + "CtxMaxDisconnectionTime" => _("Disconnection"), + "CtxMaxIdleTime" => _("IDLE")) as $key => $val){ + + if (isset($this->mungedObject->ctx[$key]) && !tests::is_id($this->mungedObject->ctx[$key]) && $val != 0){ + $message[]= msgPool::invalid($val); + } + } + + /* Too many workstations? Windows usrmgr only supports eight */ + if (substr_count($this->sambaUserWorkstations, ",") >= 8){ + $message[]= _("The windows usermanager allows eight clients at maximum!"); + } + } + + return ($message); + } + + + /* Save data to object */ + function save_object() + { + + $SkipWrite = (!isset($this->parent) || !$this->parent) && !session::is_set('edit'); + + /* We only care if we are on the sambaTab... */ + if (isset($_POST['sambaTab'])){ + plugin::save_object(); + + if(isset($_POST['display_information'])){ + $this->display_information = !$this->display_information; + } + + /* Take care about access options */ + if ($this->acl_is_writeable("sambaAcctFlagsL",$SkipWrite) || ($this->acl_is_writeable("sambaAcctFlagsN",$SkipWrite))){ + if ($this->samba3){ + $attrname= "sambaPwdCanChange"; + } else { + $attrname= "pwdCanChange"; + } + if (isset($_POST["allow_pwchange"]) && $_POST["allow_pwchange"] == 1){ + $tmp= 1; + } else { + $tmp= 0; + } + if ($this->$attrname != $tmp){ + $this->is_modified= TRUE; + } + $this->pwdCanChange= $tmp; + $this->sambaPwdCanChange= $tmp; + } + $tmp= "UX"; + $this->no_password_required = FALSE; + if (isset($_POST["no_password_required"])){ + if ($_POST["no_password_required"] == 1){ + $tmp.= "N"; + $this->no_password_required = TRUE; + } + } + if (isset($_POST["password_expires"])){ + if ($_POST["password_expires"] == 1){ + $this->password_expires= 1; + } + } else { + $this->password_expires= 0; + } + $this->temporary_disable = FALSE; + if (isset($_POST["temporary_disable"])){ + if ($_POST["temporary_disable"] == 1){ + $this->temporary_disable = TRUE; + if (is_integer(strpos($this->sambaAcctFlags, "L"))) { + $tmp.= "L"; + } else { + $tmp.= "D"; + } + } + } + if (isset($_POST["logon_time_set"])){ + if ($_POST["logon_time_set"] == 1){ + $this->logon_time_set= 1; + } + } else { + $this->logon_time_set= 0; + } + if (isset($_POST["logoff_time_set"])){ + if ($_POST["logoff_time_set"] == 1){ + $this->logoff_time_set= 1; + } + } else { + $this->logoff_time_set= 0; + } + if (isset($_POST["kickoff_time_set"])){ + if ($_POST["kickoff_time_set"] == 1){ + $this->kickoff_time_set= 1; + } + } else { + $this->kickoff_time_set= 0; + } + + $fill= ""; + for ($i= strlen($tmp); $i<12; $i++){ + $fill.= " "; + } + + $tmp= "[$tmp$fill]"; + + /* Only save if acl's are set */ + if ($this->acl_is_writeable("sambaAcctFlagsL",$SkipWrite) || ($this->acl_is_writeable("sambaAcctFlagsN",$SkipWrite))){ + if ($this->samba3){ + $attrname= "sambaAcctFlags"; + } else { + $attrname= "acctFlags"; + } + if ($this->$attrname != $tmp){ + $this->is_modified= TRUE; + } + $this->$attrname= $tmp; + } + + /* Save sambaDomain attribute */ + if ($this->acl_is_writeable("sambaDomainName",$SkipWrite) && $this->samba3 && isset ($_POST['sambaDomainName'],$SkipWrite)){ + $this->sambaDomainName= validate($_POST['sambaDomainName']); + } + + /* Save CTX values */ + if ($this->samba3){ + + /* Save obvious values */ + foreach($this->ctxattributes as $val){ + if (isset($_POST[$val]) && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)){ + if (get_magic_quotes_gpc()) { + $this->mungedObject->ctx[$val]= stripcslashes(validate($_POST[$val])); + } else { + $this->mungedObject->ctx[$val]= validate($_POST[$val]); + } + } + } + + /* Save checkbox states. */ + $this->mungedObject->setTsLogin(!isset($_POST['tslogin']) + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + // Need to do some index checking to avoid messages like "index ... not found" + if(isset($_POST['brokenconn'])) { + $this->mungedObject->setBrokenConn($_POST['brokenconn'] == '1' + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + } + if(isset($_POST['reconn'])) { + $this->mungedObject->setReConn($_POST['reconn'] == '1' + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + } + $this->mungedObject->setInheritMode(isset($_POST['inherit']) + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + $this->mungedObject->setCtxMaxConnectionTimeF(!isset($_POST['CtxMaxConnectionTimeF']) + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + $this->mungedObject->setCtxMaxDisconnectionTimeF( + !isset($_POST['CtxMaxDisconnectionTimeF']) + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + $this->mungedObject->setCtxMaxIdleTimeF(!isset($_POST['CtxMaxIdleTimeF']) + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + $this->mungedObject->setConnectClientDrives(isset($_POST['connectclientdrives']) + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + $this->mungedObject->setConnectClientPrinters(isset($_POST['connectclientprinters']) + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + $this->mungedObject->setDefaultPrinter(isset($_POST['defaultprinter']) + && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite)); + + /* Save combo boxes. Takes two values */ + if(isset($_POST['reconn'])) { + $this->mungedObject->setShadow(isset($_POST['shadow']) && $this->acl_is_writeable("AllowLoginOnTerminalServer",$SkipWrite),$_POST['shadow']); + } + + /* Check for changes */ + if ($this->sambaMungedDial != $this->mungedObject->getMunged()){ + $this->is_modified= TRUE; + } + } + } + } + + + /* Save to LDAP */ + function save() + { + /* Load uid and gid of this 'dn' */ + $ldap= $this->config->get_ldap_link(); + $ldap->cat($this->dn, array('uidNumber', 'gidNumber')); + $tmp= $ldap->fetch(); + $this->uidNumber= $tmp['uidNumber'][0]; + $this->gidNumber= $tmp['gidNumber'][0]; + + plugin::save(); + + /* Remove objectClass for sambaIdmapEntry */ + $tmp= array(); + for ($i= 0; $iattrs["objectClass"]); $i++){ + if ($this->attrs['objectClass'][$i] != 'sambaIdmapEntry'){ + $tmp[]= $this->attrs['objectClass'][$i]; + } + } + $this->attrs['objectClass']= $tmp; + + /* Generate rid / primaryGroupId */ + if ($this->samba3){ + if (!isset($this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName]['SID'])){ + msg_dialog::display(_("Warning"), _("Undefined Samba SID detected. Please fix this problem manually!"), WARNING_DIALOG); + } else { + $this->SID= $this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName]['SID']; + $this->ridBase= $this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName]['RIDBASE']; + } + + /* Need to generate a new uniqe uid/gid combination? */ + if ($this->sambaSID == "" || $this->orig_sambaDomainName != $this->sambaDomainName){ + $uidNumber= $this->uidNumber; + while(TRUE){ + $sid= $this->SID."-".($uidNumber*2 + $this->ridBase); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(sambaSID=$sid)", array("sambaSID")); + if ($ldap->count() == 0){ + break; + } + $uidNumber++; + } + $this->attrs['sambaSID']= $sid; + + /* Check for users primary group */ + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=posixGroup)(gidNumber=".$this->gidNumber."))", array("cn")); + if ($ldap->count() != 1){ + msg_dialog::display(_("Warning"), _("Cannot convert primary group to samba group: group cannot be identified!"), WARNING_DIALOG); + } else { + $attrs= $ldap->fetch(); + $g= new group($this->config, $ldap->getDN()); + if ($g->sambaSID == ""){ + $g->sambaDomainName= $this->sambaDomainName; + $g->smbgroup= TRUE; + $g->save (); + } + $this->attrs['sambaPrimaryGroupSID']= $g->sambaSID; + } + } + + if ($this->sambaHomeDrive == ""){ + $this->attrs["sambaHomeDrive"]= array(); + } + + /* Generate munged dial value */ + $this->attrs["sambaMungedDial"]= $this->mungedObject->getMunged(); + + /* User wants me to fake the idMappings? This is useful for + making winbind resolve the user names in a reasonable amount + of time in combination with larger databases. */ + if ($this->config->get_cfg_value("sambaidmapping") == "true"){ + $this->attrs['objectClass'][]= "sambaIdmapEntry"; + } + + + /* Password expiery */ + if ($this->password_expires == "1"){ + $this->attrs['sambaPwdMustChange']= $this->sambaPwdMustChange; + } else { + $this->attrs['sambaPwdMustChange']= array(); + } + /* Make sure not to save zero in sambaPwdLastset */ + if ($this->sambaPwdLastSet != "0"){ + $this->attrs['sambaPwdLastSet']= $this->sambaPwdLastSet; + } else { + $this->attrs['sambaPwdLastSet']= array(); + } + /* Account expiery */ + if ($this->logon_time_set == "1"){ + $this->attrs['sambaLogonTime']= $this->sambaLogonTime; + } else { + $this->attrs['sambaLogonTime']= array(); + } + if ($this->logoff_time_set == "1"){ + $this->attrs['sambaLogoffTime']= $this->sambaLogoffTime; + } else { + $this->attrs['sambaLogoffTime']= array(); + } + if ($this->kickoff_time_set == "1"){ + # Add one day in unixtime format to be compatible with usrmgr + //$this->attrs['sambaKickoffTime']= $this->sambaKickoffTime + 86400; + $this->attrs['sambaKickoffTime']= $this->sambaKickoffTime; //hickert + } else { + $this->attrs['sambaKickoffTime']= array(); + } + } else { + /* Not samba3 */ + $this->attrs['rid']= $this->uidNumber*2 + 1000; + $this->attrs['primaryGroupID']= $this->gidNumber*2 +1001; + + if ($this->homeDrive == ""){ + $this->attrs["homeDrive"]= array(); + } + + /* Password expiery */ + if ($this->password_expires == "1"){ + $this->attrs['pwdMustChange']= $this->pwdMustChange; + } else { + $this->attrs['pwdMustChange']= 2147483647; + } + /* Make sure not to save zero in pwdLastset */ + if ($this->pwdLastSet != "0"){ + $this->attrs['pwdLastSet']= $this->pwdLastSet; + } else { + $this->attrs['pwdLastSet']= array(); + } + /* Account expiery */ + if ($this->logon_time_set == "1"){ + $this->attrs['logonTime']= $this->logonTime; + } else { + $this->attrs['logonTime']= array(); + } + if ($this->logoff_time_set == "1"){ + $this->attrs['logoffTime']= $this->logoffTime; + } else { + $this->attrs['logoffTime']= array(); + } + if ($this->kickoff_time_set == "1"){ + # Add one day in unixtime format to be compatible with usrmgr + $this->attrs['kickoffTime']= $this->kickoffTime + 86400; + } else { + $this->attrs['kickoffTime']= array(); + } + } + + /* Write back to ldap */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify", array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add", array("uid" => $this->uid)); + } + } + + + /* Force password set, if this account doesn't have any samba passwords */ + function password_change_needed() + { + if(!$this->initially_was_account && $this->is_account){ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("sambaLMPassword","sambaNTPassword")); + $attrs = $ldap->fetch(); + if(!isset($attrs['sambaLMPassword']) || !isset($attrs['sambaNTPassword'])){ + return(TRUE); + } + } + return(FALSE); + } + + + function adapt_from_template($dn, $skip= array()) + { + plugin::adapt_from_template($dn, $skip); + + + $this->sambaSID= ""; + $this->sambaPrimaryGroupSID= ""; + + /* Fill mungedDial field */ + if ($this->samba3 && isset($this->attrs['sambaMungedDial']) && !in_array('sambaMungedDial', $skip)){ + $this->mungedObject->load($this->sambaMungedDial); + } + + /* Adapt munged attributes */ + foreach($this->ctxattributes as $attr){ + if(isset($this->mungedObject->ctx[$attr])) + $val = $this->mungedObject->ctx[$attr]; + + foreach (array("sn", "givenName", "uid") as $repl){ + if (preg_match("/%$repl/i", $val)){ + $val= preg_replace ("/%$repl/i", $this->parent->$repl, $val); + } + } + $this->mungedObject->ctx[$attr] = $val; + } + + /* Password expiery */ + if(isset($this->attrs['sambaPwdMustChange']) && + $this->attrs['sambaPwdMustChange'][0] != 0 && !in_array('sambaPwdMustChange', $skip)){ + $this->password_expires= 1; + } + + if(isset($this->attrs['sambaLogonTime']) && ! ( + $this->attrs['sambaLogonTime'][0] == 0 || + $this->attrs['sambaLogonTime'][0] == 2147483647 + ) && !in_array('sambaLogonTime', $skip)){ + $this->logon_time_set= 1; + } + if(isset($this->attrs['sambaLogoffTime']) && ! ( + $this->attrs['sambaLogoffTime'][0] == 0 || + $this->attrs['sambaLogoffTime'][0] == 2147483647 + ) && !in_array('sambaLogonTime', $skip)){ + $this->logoff_time_set= 1; + } + + /* Account expiery */ + if(isset($this->attrs['sambaKickoffTime']) && ! ( + $this->attrs['sambaKickoffTime'][0] == 0 || + $this->attrs['sambaKickoffTime'][0] == 2147483647 + ) && !in_array('sambaKickoffTime', $skip)){ + $this->kickoff_time_set= 1; + } + + /* Get global filter config */ + if (!session::is_set("sambafilter")){ + $ui= get_userinfo(); + $base= get_base_from_people($ui->dn); + $sambafilter= array( "depselect" => $base, "regex" => "*"); + session::set("sambafilter", $sambafilter); + } + } + + + static function plInfo() + { + return (array( + "plShortName" => _("Samba"), + "plDescription" => _("Samba settings"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 5, + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + + "sambaHomePath" => _("Generic home directory") , + "sambaHomeDrive" => _("Generic samba home drive") , + "sambaDomainName" => _("Domain") , + "sambaLogonScript" => _("Generic script path") , + "sambaProfilePath" => _("Generic profile path") , + "AllowLoginOnTerminalServer" => _("Allow login on terminal server"), + "InheritClientConfig" => _("Inherit client config"), + "sambaPwdCanChange" => _("Allow user to change password") , + "sambaAcctFlagsN" => _("Login from windows client requires no password"), + "sambaAcctFlagsL" => _("Lock samba account"), + "sambaKickoffTime" => _("Account expires") , + "sambaPwdMustChange" => _("Password expires") , + "sambaLogonTime" => _("Limit Logon Time") , + "sambaLogoffTime" => _("Limit Logoff Time") , + "sambaLogonHours" => _("Logon hours") , + "sambaUserWorkstations" => _("Allow connection from")) + )); + } + + function enable_multiple_support() + { + plugin::enable_multiple_support(); + if($this->samba3){ + $this->multiple_support_active = TRUE; + }else{ + $this->multiple_support_active = FALSE; + } + } + + function multiple_save_object() + { + if (isset($_POST['sambaTab'])){ + $this->save_object(); + plugin::multiple_save_object(); + foreach(array("allow_pwchange","tslogin","CtxWFHomeDir","CtxWFHomeDirDrive","CtxWFProfilePath", + "inherit","CtxWorkDirectory","CtxInitialProgram","CtxMaxConnectionTimeF","CtxMaxConnectionTime","CtxMaxDisconnectionTimeF", + "CtxMaxDisconnectionTime","CtxMaxIdleTimeF","CtxMaxIdleTime","connectclientdrives", + "onnectclientprinters","defaultprinter","shadow","brokenconn", + "reconn","allow_pwchange","connectclientprinters","no_password_required","temporary_disable", + "password_expires","logon_time_set","logoff_time_set","kickoff_time_set","SetSambaLogonHours", + "workstation_list") as $attr){ + if(isset($_POST["use_".$attr])){ + $this->multi_boxes[] = $attr; + } + } + } + } + + + function multiple_check() + { + $message = plugin::multiple_check(); + + /* Strings */ + foreach (array( "sambaHomePath" => _("Home directory"), + "sambaProfilePath" => _("Profile path")) as $key => $val){ + if (in_array($key,$this->multi_boxes) && !$this->mungedObject->is_samba_path($this->$key)){ + $message[]= msgPool::invalid($val); + } + } + + /* Numeric values */ + foreach (array( "CtxMaxConnectionTime" => _("Connection"), + "CtxMaxDisconnectionTime" => _("Disconnection"), + "CtxMaxIdleTime" => _("IDLE")) as $key => $val){ + if (in_array($key,$this->multi_boxes) && + isset($this->mungedObject->ctx[$key]) && + !tests::is_id($this->mungedObject->ctx[$key]) && $val != 0){ + $message[]=msgPool::invalid($val); + } + } + + /* Too many workstations? Windows usrmgr only supports eight */ + if (substr_count($this->sambaUserWorkstations, ",") >= 8){ + $message[]= _("The windows user manager only allows eight clients. You've specified more than eight."); + } + return($message); + } + + + function get_multi_init_values() + { + $ret = plugin::get_multi_init_values(); + + /* Parse given sambaUserWorkstations into array + * to allow "init_multiple_support()" to detect multiple used workstations. + * Those workstations will be displayed in light grey. + */ + $tmp2 = array("count" => 0); + $tmp = split(",", $this->sambaUserWorkstations); + foreach($tmp as $station){ + $station = trim($station); + if(!empty($station)){ + $tmp2[] = $station; + $tmp2['count'] ++; + } + } + $ret['sambaUserWorkstations'] = $tmp2; + return($ret); + } + + + + function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + + $this->multiple_sambaUserWorkstations = array(); + if(isset($all['sambaUserWorkstations'])){ + for($i = 0 ; $i < $all['sambaUserWorkstations']['count'] ; $i++){ + $station = trim($all['sambaUserWorkstations'][$i]); + $this->multiple_sambaUserWorkstations[$station] = array("Name" => $station, "UsedByAllUsers" => FALSE); + } + } + if(isset($attrs['sambaUserWorkstations'])){ + for($i = 0 ; $i < $attrs['sambaUserWorkstations']['count'] ; $i++){ + $station = trim($attrs['sambaUserWorkstations'][$i]); + $this->multiple_sambaUserWorkstations[$station] = array("Name" => $station, "UsedByAllUsers" => TRUE); + } + } + } + + function multiple_execute() + { + return($this->execute()); + } + + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + + /* Terminal Server */ + if(in_array("tslogin",$this->multi_boxes)){ + $ret['tslogin'] = $this->mungedObject->getTsLogin(); + } + if(in_array("CtxWFHomeDirDrive",$this->multi_boxes)){ + $ret['CtxWFHomeDirDrive'] = $this->mungedObject->ctx['CtxWFHomeDirDrive']; + } + if(in_array("CtxWFHomeDir",$this->multi_boxes)){ + $ret['CtxWFHomeDir'] = $this->mungedObject->ctx['CtxWFHomeDir']; + } + if(in_array("CtxWFProfilePath",$this->multi_boxes)){ + $ret['CtxWFProfilePath'] = $this->mungedObject->ctx['CtxWFProfilePath']; + } + + if(in_array("inherit",$this->multi_boxes)){ + $ret['inherit'] = $this->mungedObject->getInheritMode(); + } + if(in_array("CtxInitialProgram",$this->multi_boxes)){ + $ret['CtxInitialProgram'] = $this->mungedObject->ctx['CtxInitialProgram']; + } + if(in_array("CtxWorkDirectory",$this->multi_boxes)){ + $ret['CtxWorkDirectory'] = $this->mungedObject->ctx['CtxWorkDirectory']; + } + + /* Time Limits. Be careful here, there are some negations */ + if(in_array("CtxMaxConnectionTimeF",$this->multi_boxes)){ + $ret["CtxMaxConnectionTimeF"] = !$this->mungedObject->getCtxMaxConnectionTimeF(); + if(!$ret["CtxMaxConnectionTimeF"]){ + $ret["CtxMaxConnectionTime"] = $this->mungedObject->ctx['CtxMaxConnectionTime']; + } + } + if(in_array("CtxMaxDisconnectionTimeF",$this->multi_boxes)){ + $ret["CtxMaxDisconnectionTimeF"]= !$this->mungedObject->getCtxMaxDisconnectionTimeF(); + if(!$ret["CtxMaxDisconnectionTimeF"]){ + $ret["CtxMaxDisconnectionTime"]= $this->mungedObject->ctx['CtxMaxDisconnectionTime']; + } + } + if(in_array("CtxMaxIdleTimeF",$this->multi_boxes)){ + $ret["CtxMaxIdleTimeF"] = !$this->mungedObject->getCtxMaxIdleTimeF(); + if(!$ret["CtxMaxIdleTimeF"]){ + $ret["CtxMaxIdleTime"] = $this->mungedObject->ctx['CtxMaxIdleTime']; + } + } + + /* Client Devices */ + if(in_array("connectclientdrives",$this->multi_boxes)){ + $ret["connectclientdrives"] = $this->mungedObject->getConnectClientDrives(); + } + if(in_array("connectclientprinters",$this->multi_boxes)){ + $ret["connectclientprinters"] = $this->mungedObject->getConnectClientPrinters(); + } + if(in_array("defaultprinter",$this->multi_boxes)){ + $ret["defaultprinter"] = $this->mungedObject->getDefaultPrinter(); + } + + /* Misc */ + if(in_array("shadow",$this->multi_boxes)){ + $ret["shadow"] =$this->mungedObject->getShadow(); + } + if(in_array("brokenconn",$this->multi_boxes)){ + $ret["brokenconn"]=$this->mungedObject->getBrokenConn(); + } + if(in_array("reconn",$this->multi_boxes)){ + $ret["reconn"] =$this->mungedObject->getReConn(); + } + + /* Flags */ + if(in_array("allow_pwchange",$this->multi_boxes)){ + $ret['sambaPwdCanChange'] = $this->sambaPwdCanChange; + $ret['pwdCanChange'] = $this->pwdCanChange; + } + + if(in_array("password_expires",$this->multi_boxes)){ + $ret['password_expires'] = $this->password_expires; + $ret['sambaPwdMustChange']= $this->sambaPwdMustChange; + } + if(in_array("logon_time_set",$this->multi_boxes)){ + $ret['logon_time_set'] = $this->logon_time_set; + $ret['sambaLogonTime'] = $this->sambaLogonTime; + } + if(in_array("logoff_time_set",$this->multi_boxes)){ + $ret['logoff_time_set'] = $this->logoff_time_set; + $ret['sambaLogoffTime'] = $this->sambaLogoffTime; + } + if(in_array("kickoff_time_set",$this->multi_boxes)){ + $ret['kickoff_time_set'] = $this->kickoff_time_set; + $ret['sambaKickoffTime'] = $this->sambaKickoffTime; + } + + if(in_array("no_password_required",$this->multi_boxes)){ + $ret['no_password_required'] = $this->no_password_required; + } + + if(in_array("temporary_disable",$this->multi_boxes)){ + $ret['temporary_disable'] = $this->temporary_disable; + } + + if(in_array("SetSambaLogonHours",$this->multi_boxes)){ + $ret['sambaLogonHours'] = $this->sambaLogonHours; + } + + if(in_array("workstation_list",$this->multi_boxes)){ + $ret['multiple_sambaUserWorkstations'] = $this->multiple_sambaUserWorkstations; + } + return($ret); + } + + function set_multi_edit_values($values) + { + plugin::set_multi_edit_values($values); + + /* Prepare current workstation settings to be merged + * with multiple edit settings. + */ + if(isset($values['multiple_sambaUserWorkstations'])){ + $cur_ws = array(); + $m_ws = $values['multiple_sambaUserWorkstations']; + + /* Prepare current settings to be merged */ + if(isset($this->sambaUserWorkstations)){ + $ttmp = split(",",$this->sambaUserWorkstations); + foreach($ttmp as $station){ + $station = trim($station); + if(!empty($station)){ + $cur_ws[$station] = array("Name" => $station, "UsedByAllUsers" => TRUE); + } + } + } + + /* Unset removed workstations */ + foreach($cur_ws as $cur_name => $cur_station){ + if(!isset($m_ws[$cur_name])){ + unset($cur_ws[$cur_name]); + } + } + + /* Add all added workstations */ + foreach($m_ws as $name => $station){ + if($station['UsedByAllUsers']){ + $cur_ws[$name] = $station; + } + } + + $this->sambaUserWorkstations = ""; + foreach($cur_ws as $name => $ws){ + $this->sambaUserWorkstations .= $name.","; + } + $this->sambaUserWorkstations=preg_replace("/,$/","",$this->sambaUserWorkstations); + } + + /* Enable disabled terminal login, this is inverted somehow */ + if(isset($values['tslogin'])) $this->mungedObject->setTsLogin(!$values['tslogin']); + + /* Imherit client configuration */ + if(isset($values['inherit'])) $this->mungedObject->setInheritMode($values['inherit']); + + /* Get all ctx values posted */ + $ctx = array("CtxWFHomeDirDrive","CtxWFHomeDir","CtxWFProfilePath","CtxInitialProgram","CtxWorkDirectory", + "CtxMaxConnectionTime","CtxMaxDisconnectionTime","CtxMaxIdleTime"); + foreach($ctx as $attr){ + if(isset($values[$attr])){ + $this->mungedObject->ctx[$attr] = $values[$attr] ; + } + } + + if(isset($values['CtxMaxConnectionTimeF'])) $this->mungedObject->setCtxMaxConnectionTimeF($values['CtxMaxConnectionTimeF']); + if(isset($values['CtxMaxDisconnectionTimeF']))$this->mungedObject->setCtxMaxDisconnectionTimeF($values['CtxMaxDisconnectionTimeF']); + if(isset($values['CtxMaxIdleTimeF'])) $this->mungedObject->setCtxMaxIdleTimeF($values['CtxMaxIdleTimeF']); + + if(isset($values['connectclientdrives'])) $this->mungedObject->setConnectClientDrives($values['connectclientdrives']); + if(isset($values['connectclientprinters'])) $this->mungedObject->setConnectClientPrinters($values['connectclientprinters']); + if(isset($values['defaultprinter'])) $this->mungedObject->setDefaultPrinter($values['defaultprinter']); + + if(isset($values['shadow'])) $this->mungedObject->setShadow($values['shadow'],$values['shadow']); + if(isset($values['brokenconn'])) $this->mungedObject->setBrokenConn($values['brokenconn'],$values['brokenconn']); + if(isset($values['reconn'])) $this->mungedObject->setReConn($values['reconn'],$values['reconn']); + + + if(isset($values['sambaPwdCanChange'])) $this->sambaPwdCanChange = $values['sambaPwdCanChange']; + if(isset($values['pwdCanChange'])) $this->pwdCanChange = $values['pwdCanChange']; + + + + + if(isset($values['password_expires'])){ + $this->password_expires = $values['password_expires']; + $this->sambaPwdMustChange = $values['sambaPwdMustChange']; + } + if(isset($values['logon_time_set'])){ + $this->logon_time_set = $values['logon_time_set']; + $this->sambaLogonTime = $values['sambaLogonTime']; + } + if(isset($values['logoff_time_set'])){ + $this->logoff_time_set = $values['logoff_time_set']; + $this->sambaLogoffTime = $values['sambaLogoffTime']; + } + if(isset($values['kickoff_time_set'])){ + $this->kickoff_time_set = $values['kickoff_time_set']; + $this->sambaKickoffTime = $values['sambaKickoffTime']; + } + + if(isset($values['no_password_required'])){ + if($values['no_password_required']){ + if(!preg_match("/N/",$this->sambaAcctFlags)) { + $this->sambaAcctFlags = preg_replace("/ /","N",$this->sambaAcctFlags,1); + } + }else{ + $this->sambaAcctFlags = preg_replace("/N/"," ",$this->sambaAcctFlags,1); + } + } + + if(isset($values['temporary_disable'])){ + if($values['temporary_disable']){ + if(preg_match("/L/",$this->sambaAcctFlags)) { + // Keep L + }else{ + $this->sambaAcctFlags = preg_replace("/ /","D",$this->sambaAcctFlags,1); + } + }else{ + $this->sambaAcctFlags = preg_replace("/D/"," ",$this->sambaAcctFlags,1); + } + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Set a new SID */ + $this->sambaSID = ""; + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/samba/personal/samba/class_sambaLogonHours.inc b/trunk/gosa-plugins/samba/personal/samba/class_sambaLogonHours.inc new file mode 100644 index 000000000..d37cd2e64 --- /dev/null +++ b/trunk/gosa-plugins/samba/personal/samba/class_sambaLogonHours.inc @@ -0,0 +1,143 @@ +sambaLogonHours = $slh; + + /* Get default timezone */ + $zone = timezone::get_default_timezone(); + $this->timezone = $zone['value']; + + /* Convert to bin */ + $tmp = ''; + for($i = 0 ; $i < strlen($slh) ; $i ++){ + $tmp .= str_pad(base_convert($slh[$i],16,2),4,'0',STR_PAD_LEFT); + } + $slh = $tmp; + + /* Set to default if value is empty or seams to be broken */ + if(strlen($slh) != 168){ + $slh = str_pad('',168 , "1"); + } + + /* Rework string, because it was stored in little endian */ + $new = ''; + for($i = 0 ; $i < 21 ; $i ++ ){ + $part = strrev(substr($slh, $i * 8, 8)); + $byte['hi'] = substr($part,0,4); + $byte['low'] = substr($part,4,4); + $new .= $byte['hi'].$byte['low']; + } + + /* Shift string to match given timezone settings */ + $shift_by = (168 + $this->timezone) % 168; + for($i = 0 ; $i < $shift_by; $i ++){ + $new = $new[167].$new; + $new = substr($new,0,168); + } + + /* Create matrix */ + $this->Matrix = array(); + for($day = 0 ; $day < 7 ; $day ++ ){ + for($hour = 0 ; $hour < 24 ; $hour ++){ + $bitpos = ($day * 24 + $hour) % 168; + $this->Matrix[$day][$hour] = $new[$bitpos]; + } + } + } + + function execute() + { + + $week_days = msgPool::weekdays(); + + $ui =get_userinfo(); + $smarty = get_smarty(); + $acl = $ui->get_permissions($this->dn,"users/sambaAccount","sambaLogonHours"); + $smarty->assign("acl",preg_match("/w/i",$acl)); + + $hours = array(); + for($i = 0 ; $i <24 ; $i++ ){ + $hours[$i] = $i ; + } + + $smarty->assign("Matrix",$this->Matrix); + $smarty->assign("Days" ,$week_days); + $smarty->assign("Hours" ,$hours); + return($smarty->fetch(get_template_path("sambaLogonHours.tpl",TRUE,dirname(__FILE__)))); + } + + function save_object() + { + /* Get userinfo */ + $ui = get_userinfo(); + + /* Check if dialog was opened and if there were any changes */ + if(isset($_POST['sambaLogonHoursPosted'])){ + foreach($this->Matrix as $day_key => $days){ + foreach($days as $hour_key => $hour){ + if(isset($_POST['day_'.$day_key.'_'.$hour_key])){ + $this->Matrix[$day_key][$hour_key] = 1; + }else{ + $this->Matrix[$day_key][$hour_key] = 0; + } + } + } + } + } + + function save() + { + + /* Convert Matrix to Hex */ + $slh = ""; + foreach($this->Matrix as $day_key => $days){ + foreach($days as $hour_key => $hour){ + $slh .= $hour; + } + } + + /* Shift string to match given timezone settings */ + $shift_by = (168 + ($this->timezone*(-1))) % 168; + for($i = 0 ; $i < $shift_by; $i ++){ + $slh = $slh[167].$slh; + $slh = substr($slh,0,168); + } + + /* Rework string, because it was stored in little endian */ + $new = ''; + for($i = 0 ; $i < 21 ; $i ++ ){ + $part = strrev(substr($slh, $i * 8, 8)); + $byte['hi'] = substr($part,0,4); + $byte['low'] = substr($part,4,4); + $new .= $byte['hi'].$byte['low']; + } + + /* Convert to bin */ + $tmp = ''; + for($i = 0 ; $i < 21 ; $i ++){ + $tmp .= str_pad(base_convert(substr($new,$i*8,8),2,16),2,'0',STR_PAD_LEFT); + } + + /* Create uppercase HEX chars */ + $ret = strtoupper( $tmp); + + /* All hours and days selected */ + if(substr_count($ret,'F') == 42){ + $ret = ""; + } + + return($ret); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/samba/personal/samba/class_sambaMungedDial.inc b/trunk/gosa-plugins/samba/personal/samba/class_sambaMungedDial.inc new file mode 100644 index 000000000..9f0c0b42d --- /dev/null +++ b/trunk/gosa-plugins/samba/personal/samba/class_sambaMungedDial.inc @@ -0,0 +1,609 @@ + '551e0bb0', + 'CtxCfgFlags1' => '00e00010', + 'CtxCallback' => '', + 'CtxShadow' => '01000000', + 'CtxMaxConnectionTime' => '', + 'CtxMaxDisconnectionTime' => '', + 'CtxMaxIdleTime' => '', + 'CtxKeyboardLayout' => '', + 'CtxMinEncryptionLevel' => '00', + 'CtxWorkDirectory' => '', + 'CtxNWLogonServer' => '', + 'CtxWFHomeDir' => '', + 'CtxWFHomeDirDrive' => '', + 'CtxWFProfilePath' => '', + 'CtxInitialProgram' => '', + 'CtxCallbackNumber' => ''); + + /* attribute list for save action */ + var $ctxattributes= array("CtxCfgPresent", "CtxCfgFlags1", "CtxCallback", + "CtxShadow", "CtxMaxConnectionTime", "CtxMaxDisconnectionTime", + "CtxMaxIdleTime", "CtxKeyboardLayout", "CtxMinEncryptionLevel", + "CtxWorkDirectory", "CtxNWLogonServer", "CtxWFHomeDir", + "CtxWFHomeDirDrive", "CtxWFProfilePath", "CtxInitialProgram", + "CtxCallbackNumber"); + + /* These parameters are treated as strings and get a trailing zero */ + var $stringParams= array( "CtxWorkDirectory", "CtxNWLogonServer", + "CtxWFHomeDir", "CtxWFHomeDirDrive", + "CtxWFProfilePath", "CtxInitialProgram", "CtxCallbackNumber"); + + /* These parameters are treated as time values and get converted */ + var $timeParams= array("CtxMaxConnectionTime", "CtxMaxDisconnectionTime", "CtxMaxIdleTime"); + + var $old_behavior= false; + + function strhex($string) + { + $hex=""; + + for ($i=0; $i> 16); + return (sambaMungedDial::endian(substr($src, 0, 4)).sambaMungedDial::endian(substr($src, 4, 4))); + } + + function readTime ($time) + { + $lo= substr($time, 0, 4); + $hi= substr($time, 4, 4); + + $usecs= (hexdec(substr($lo, 2, 2)) * 256 + hexdec(substr($lo, 0, 2))) + + (hexdec(substr($hi, 2 ,2)) * 256 + hexdec(substr($hi, 0, 2))) * 256 * 256; + + return ((int)($usecs / (60 * 1000))); + } + + function to8bit($string) + { + $result= ""; + + /* Strip zeros */ + for ($i= 0; $i $paramValue) { + /* String parameter? */ + if (in_array($paramName, $this->stringParams)){ + $isString= TRUE; + $paramValue= sambaMungedDial::strhex($paramValue.chr(0).chr(0)); + } else { + $isString= FALSE; + } + + /* Time parameter? */ + if (in_array($paramName, $this->timeParams)){ + $paramValue= sambaMungedDial::genTime($paramValue); + } + + $result_tmp.= sambaMungedDial::munge($paramName, $paramValue, $isString); + $counter++; + } + + // First add the number of attributes + $result.= sambaMungedDial::hexstr(sprintf("%02x00", $counter)); + + // Then the usual stuff + $result.= $result_tmp; + + return ($result); + } + + /* Setup parameter given by paramName to MungedDial-Format */ + function munge($paramName, $paramValue, $isString) + { + $result= ""; + + /* Encode paramName to UTF-16 */ + if (function_exists("recode")){ + $utfName= recode("ISO8859-15..UTF-16", $paramName); + } else { + $utfName= iconv("ISO8859-15", "UTF-16BE", $paramName); + } + + /* Set parameter length, high and low byte */ + $paramLen= strlen($utfName); + $result.= chr($paramLen & 0x0FF); + $result.= chr(($paramLen & 0x0FF00) >> 8); + + /* String parameters have additional trailing bytes */ + $valueLen= strlen($paramValue); + $result.= chr($valueLen & 0x0FF); + $result.= chr(($valueLen & 0x0FF00) >> 8); + + /* Length fields have a trailing '01' appended by the UTF-16 converted name */ + $result.= chr(1); + $result.= $utfName; + + /* Parameter is padded with '00' */ + $result.= chr(0); + $result.= $paramValue; + + /* Append a trailing '00' to string parameters */ + if ($isString && (strlen($paramValue) & 1)){ + $result.= chr(0); + } + + return ($result); + } + + /* Takes a base64-encoded MungedDial-String and returns an array of included parameters and values */ + function decode_munged($munge) + { + $result= array(); + + /* + * Remove base64 encoding and skip FILEHEADER. + * The '4' is added, because the FILEHEADER has been stripped by 4 chars. + * This is the number of attributes following - we don't need this at read time, only when writing. + */ + if(substr(base64_decode($munge),0,2)=="6d") { + $this->old_behavior=true; + } + + $ctxField=""; + if($this->old_behavior==true) { + $ctxField= substr(base64_decode($munge), (strlen(FILEHEADER_OLD)) / 2); + } else { + $ctxField= substr(base64_decode($munge), (strlen(FILEHEADER)+4) / 2); + } + + /* Decode parameters */ + while ($ctxField!=""){ + + /* Read value lengths */ + $ctxParmNameLength= ord($ctxField[0]) + 16 * ord($ctxField[1]); + $ctxParmLength= ord($ctxField[2]) + 16 * ord($ctxField[3]); + + /* Reposition ctxField on start of parameter name, read parameter name */ + $ctxField= substr($ctxField, 6); + $ctxParmName= sambaMungedDial::to8bit(substr($ctxField, 0, $ctxParmNameLength)); + + /* Reposition ctxField on start of parameter */ + $ctxField= substr($ctxField, $ctxParmNameLength); + $ctxParm= substr($ctxField, 0, $ctxParmLength); + + /* If string parameter, convert */ + if (in_array($ctxParmName, $this->stringParams)){ + $ctxParm= sambaMungedDial::hexstr($ctxParm); + } + /* If time parameter, convert */ + if (in_array($ctxParmName, $this->timeParams)){ + $ctxParm= sambaMungedDial::readTime($ctxParm); + } + + /* Assign in result array */ + $result[$ctxParmName]= trim($ctxParm); + + /* Reposition ctxField on end of parameter and continue */ + $ctxField= substr($ctxField, $ctxParmLength); + } + + return ($result); + } + + /* function takes a base64-encoded sambaMungedDial */ + function load ($mungedDial) + { + $this->ctx= $this->decode_munged($mungedDial); + } + + /* Returns ready-to-run mungedDialString to be filled into ldap */ + function getMunged () + { + // Do extra check for valid timeParams (they must be set to 0 if disabled) + foreach($this->timeParams as $value) { + if(!isset($this->ctx[$value])) { + $this->ctx[$value]= 0; + } + } + $result= base64_encode($this->encode_munged($this->ctx)); + + return $result; + } + + /* Returns array of flags, which can be set on-demand with activated java-script */ + function getOnDemandFlags () + { + $result= array(); + if (session::get("js")){ + foreach ($this->timeParams as $value) { + if (!isset($this->ctx[$value]) || (isset($this->ctx[$value]) && $this->ctx[$value] == 0)) { + $result[$value."Mode"]= "disabled"; + } else { + $result[$value."Mode"]= ""; + } + } + + if (substr($this->ctx['CtxCfgFlags1'], 6, 1) == "1") { + $result['CtxInitialProgramMode'] = "disabled"; + } else { + $result['CtxInitialProgramMode'] = ""; + } + }else{ + foreach ($this->timeParams as $value) { + $result[$value."Mode"]= ""; + } + + $result['CtxInitialProgramMode'] = ""; + + } + + return $result; + } + + /*Gets Terminal-Server-Login value: enabled/disabled */ + function getTsLogin () + { + $flags= ord(substr($this->ctx['CtxCfgFlags1'], 5, 1)); + + if ($flags & 1) { + $result= false; + } else { + $result= true; + } + + return $result; + } + + /* Sets Terminal-Server-Login value: enabled/disabled */ + function setTsLogin ($checked) + { + $flag= substr($this->ctx['CtxCfgFlags1'], 5, 1); + + if ($checked) { + $flag|= 1; + } else { + $flag&= 0xFE; + } + + $this->ctx['CtxCfgFlags1'][5]= sprintf('%1x', $flag); + } + + /* gets Broken-Connection value: disconnect/reset */ + function getBrokenConn () + { + $flags= ord(substr($this->ctx['CtxCfgFlags1'], 5, 1)); + if ($flags & 4) { + $result= "1"; + } else { + $result= "0"; + } + + return $result; + } + + /* sets Broken-Connection value: disconnect/reset */ + function setBrokenConn ($checked) + { + $flag= substr($this->ctx['CtxCfgFlags1'], 5, 1); + + if ($checked) { + $flag|= 4; + } else { + $flag&= 0xFB; + } + + $this->ctx['CtxCfgFlags1'][5]= sprintf('%1x', $flag); + } + + /* gets Reconnection value: from any client/from previous client only */ + function getReConn () + { + $flags= ord(substr($this->ctx['CtxCfgFlags1'], 5, 1)); + if ($flags & 2) { + $result= "1"; + } else { + $result= "0"; + } + + return $result; + } + + /* sets Reconnection value: from any client/from previous client only */ + function setReConn ($checked) + { + $flag= substr($this->ctx['CtxCfgFlags1'], 5, 1); + + if ($checked) { + $flag|= 2; + } else { + $flag&= 0xFD; + } + + $this->ctx['CtxCfgFlags1'][5]= sprintf('%1x', $flag); + } + + /* gets Inherit-config-from-client value: enabled/disabled */ + function getInheritMode () + { + if (substr($this->ctx['CtxCfgFlags1'], 6, 1) == "1") { + $result= true; + } else { + $result= false; + } + + return $result; + } + + /* sets Inherit-config-from-client value: enabled/disabled */ + function setInheritMode ($checked) + { + if ($checked) { + $this->ctx['CtxCfgFlags1'][6]= "1"; + } else { + $this->ctx['CtxCfgFlags1'][6]= "0"; + } + } + + /* gets shadow value (enum): 0-4 + 0: disabled + 1: input on, notify on + 2: input on, notify off + 3: input off, notify on + 4: input off, notify off + */ + function getShadow () + { + if($this->old_behavior==true) { + $result= substr($this->ctx['CtxCfgFlags1'], 1, 1); + } else { + $result= substr($this->ctx['CtxShadow'], 1, 1); + } + return $result; + } + + /* sets shadow value */ + function setShadow ($checked, $value) + { + if ($checked) { + if($this->old_behavior==true) { + // We need to reset the old setting + $this->ctx['CtxCfgFlags1'][1]= sprintf('%1X', $value); + } + $this->ctx['CtxShadow'][1]= sprintf('%1x', $value); + } + } + + /* gets connect-client-drive-at-logon value: enabled/disabled */ + function getConnectClientDrives () + { + $connections= hexdec(substr($this->ctx['CtxCfgFlags1'], 2, 1)); + if ($connections & 8) { + $result= true; + } else { + $result= false; + } + + return $result; + } + + /* sets connect-client-drive-at-logon value: enabled/disabled */ + function setConnectClientDrives ($checked) + { + $flag= hexdec(substr($this->ctx['CtxCfgFlags1'], 2, 1)); + if ($checked) { + $flag|= 8; + } else { + $flag&= 0xF7; + } + + $this->ctx['CtxCfgFlags1'][2]= sprintf('%1x', $flag); + } + + /* gets connect-client-printers-at-logon value: enabled/disabled */ + function getConnectClientPrinters () + { + $connections= hexdec(substr($this->ctx['CtxCfgFlags1'], 2, 1)); + if ($connections & 4) { + $result= true; + } else { + $result= false; + } + + return $result; + } + + /* sets connect-client-printers-at-logon value: enabled/disabled */ + function setConnectClientPrinters ($checked) + { + $flag= hexdec(substr($this->ctx['CtxCfgFlags1'], 2, 1)); + + if ($checked) { + $flag|= 4; + } else { + $flag&= 0xFB; + } + + $this->ctx['CtxCfgFlags1'][2]= sprintf('%1x', $flag); + } + + /* gets set-client-printer-to-default value: enabled/disabled */ + function getDefaultPrinter () + { + $connections= hexdec(substr($this->ctx['CtxCfgFlags1'], 2, 1)); + if ($connections & 2) { + $result= true; + } else { + $result= false; + } + + return $result; + } + + /* sets set-client-printer-to-default value: enabled/disabled */ + function setDefaultPrinter ($checked) + { + $flag= hexdec(substr($this->ctx['CtxCfgFlags1'], 2, 1)); + + if ($checked) { + $flag|= 2; + } else { + $flag&= 0xFD; + } + + $this->ctx['CtxCfgFlags1'][2]= sprintf('%1x', $flag); + } + + /* SMARTY: gets the checkbox state of "Connection" */ + function getCtxMaxConnectionTimeF () + { + // Connection Time is 0 if disabled + if (isset($this->ctx['CtxMaxConnectionTime']) && ($this->ctx['CtxMaxConnectionTime'] != 0)) { + $result= true; + } else { + $result= false; + } + + return $result; + } + + /* SMARTY: sets the checkbox "Connection" to unchecked */ + function setCtxMaxConnectionTimeF ($checked) + { + if ($checked) { + unset ($this->ctx['CtxMaxConnectionTime']); + } + } + + /* SMARTY: gets the checkbox state of "Disconnection" */ + function getCtxMaxDisconnectionTimeF () + { + // Connection Time is 0 if disabled + if (isset($this->ctx['CtxMaxDisconnectionTime']) && ($this->ctx['CtxMaxDisconnectionTime'] != 0)) { + $result= true; + } else { + $result= false; + } + + return $result; + } + + /* SMARTY: sets the checkbox "Disconnection" to unchecked */ + function setCtxMaxDisconnectionTimeF ($checked) + { + if ($checked) { + unset ($this->ctx['CtxMaxDisconnectionTime']); + } + } + + /* SMARTY: gets the checkbox state of "Idle" */ + function getCtxMaxIdleTimeF () + { + // Connection Time is 0 if disabled + if (isset($this->ctx['CtxMaxIdleTime']) && ($this->ctx['CtxMaxIdleTime'] != 0)) { + $result= true; + } else { + $result= false; + } + + return $result; + } + + /* SMARTY: sets the checkbox "Idle" to unchecked */ + function setCtxMaxIdleTimeF ($checked) + { + if ($checked) { + unset ($this->ctx['CtxMaxIdleTime']); + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/samba/personal/samba/main.inc b/trunk/gosa-plugins/samba/personal/samba/main.inc new file mode 100644 index 000000000..e4e3ea174 --- /dev/null +++ b/trunk/gosa-plugins/samba/personal/samba/main.inc @@ -0,0 +1,142 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('sambaAccount'); + session::un_set('edit'); + +}else{ + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + session::un_set ('edit'); + session::un_set ('sambaAccount'); + } + + /* Create sambaAccount object on demand */ + if (!session::is_set('sambaAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $sambaAccount= new sambaAccount ($config, $ui->dn); + $sambaAccount->enable_CSN_check(); + $sambaAccount->set_acl_base($ui->dn); + $sambaAccount->set_acl_category("users"); + session::set('sambaAccount',$sambaAccount); + } + $sambaAccount = session::get('sambaAccount'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $sambaAccount->save_object (); + } + + /* Enter edit mode? */ + if (isset($_POST['edit'])){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $sambaAccount->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $sambaAccount->save (); + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Remove from session */ + session::un_set ('sambaAccount'); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + if($lock_msg){ + $display.= $lock_msg; + }else{ + $display.= $sambaAccount->execute (); + } + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('sambaAccount',$sambaAccount); + } + + $info= ""; + if (($sambaAccount->is_account) && (!$sambaAccount->dialog) && (!$sambaAccount->show_ws_dialog) && empty($lock_msg)){ + $display.= "

    "; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + $info= "\"\" ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/sambaAccount"))){ + + $info.= "\"\" ". + msgPool::clickEditToChange(); + $display.= "\n"; + } + $display.= "\n"; + } + $display.= "

    \n"; + } + + /* Page header*/ + $display= print_header(get_template_path('plugins/samba/images/plugin.png'), _("Samba settings"), + $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/samba/personal/samba/samba2.tpl b/trunk/gosa-plugins/samba/personal/samba/samba2.tpl new file mode 100644 index 000000000..4234cd0e7 --- /dev/null +++ b/trunk/gosa-plugins/samba/personal/samba/samba2.tpl @@ -0,0 +1,116 @@ + + + + + + + + + + + +
    +

     {t}Generic{/t}

    +
    + + + + + +
    + +{render acl=$smbHomeACL} + +{/render} + +{render acl=$smbDriveACL} + +{/render} + +
    +
    +   + + + + + + + + + + +
    +{render acl=$scriptPathACL} + +{/render} +
    +{render acl=$profilePathACL} + +{/render} +
    +
    + +

     

    + +

     {t}Access options{/t}

    + + + + + + + +
    +{render acl=$allow_pwchangeACL} + +{/render} + +
    +{render acl=$no_password_requiredACL} + +{/render} + +
    +{render acl=$temporary_disableACL} + +{/render} + +
    +
    +   + +{render acl=$password_expiresACL} + +{/render} + +{render acl=$sambaPwdMustChangeACL} + +{/render} +{render acl=$sambaPwdMustChangeACL} + +{/render} +{render acl=$sambaPwdMustChangeACL} + +{/render} + +
    + + + + + diff --git a/trunk/gosa-plugins/samba/personal/samba/samba3.tpl b/trunk/gosa-plugins/samba/personal/samba/samba3.tpl new file mode 100644 index 000000000..44e30b006 --- /dev/null +++ b/trunk/gosa-plugins/samba/personal/samba/samba3.tpl @@ -0,0 +1,486 @@ + + + + + + + + + + + +
    +

     {t}Generic{/t}

    +
    + + + + + + + + + +
    +{render acl=$sambaHomePathACL checkbox=$multiple_support checked=$use_sambaHomePath} + +{/render} +{render acl=$sambaHomeDriveACL checkbox=$multiple_support checked=$use_sambaHomeDrive} + +{/render} +
    +{render acl=$sambaDomainNameACL checkbox=$multiple_support checked=$use_sambaDomainName} + +{/render} +
    +
    +   + + + + + + + + + + +
    +{render acl=$sambaLogonScriptACL checkbox=$multiple_support checked=$use_sambaLogonScript} + +{/render} +
    +{render acl=$sambaProfilePathACL checkbox=$multiple_support checked=$use_sambaProfilePath} + +{/render} +
    +
    + +

     

    +

      {t}Information{/t}

    + + + + + {if $display_information} + + + + {/if} +
    {t}Show information{/t} + {if $display_information} + + {else} + + {/if} +
    + {$samba_information} +
    +

     

    + +

     {t}Terminal Server{/t}

    + + + + + + + +
    + +{if $multiple_support} + + +{else} +{render acl=$AllowLoginOnTerminalServerACL} + +{/render} +{/if} + {t}Allow login on terminal server{/t} + + + + + + + + + +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_CtxWFHomeDir} + +{/render} +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_CtxWFHomeDirDrive} + +{/render} +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_CtxWFProfilePath} + +{/render} +
    +
    +   + +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_inherit} + +{/render} + {t}Inherit client config{/t} + + + + + + + + + +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_CtxInitialProgram} + +{/render} +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_CtxWorkDirectory} + +{/render} +
    +
    + +

     

    + + + + + + + + + +
    + {t}Timeout settings (in minutes){/t} + + + + + + + + + + + + + +
    +{if $multiple_support} + +{/if} +{render acl=$AllowLoginOnTerminalServerACL} + +{/render} + + + +{render acl=$AllowLoginOnTerminalServerACL} + +{/render} +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_CtxMaxDisconnectionTimeF} + +{/render} + + +{render acl=$AllowLoginOnTerminalServerACL} + +{/render} +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_CtxMaxIdleTimeF} + +{/render} + + +{render acl=$AllowLoginOnTerminalServerACL} + +{/render} +
    +
    +   + + + {t}Client devices{/t} + + + + + + + + + + +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_connectclientdrives} + +{/render} + +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_connectclientprinters} + +{/render} + +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_defaultprinter} + +{/render} + +
    + +
    +   + + {t}Miscellaneous{/t} + + + + + + + + + + + + + +
    + + +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_shadow} + +{/render} +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_brokenconn} + +{/render} +
    +{render acl=$AllowLoginOnTerminalServerACL checkbox=$multiple_support checked=$use_reconn} + +{/render} +
    + +
    + +

     

    + +

     {t}Access options{/t}

    + + + + + + + +
    + + + + + + + + + + + + + + + + + {if $additional_info_PwdMustChange} + + + + {/if} + + + + + + + + + + +
    + {render acl=$sambaAcctFlagsNACL checkbox=$multiple_support checked=$use_no_password_required} + + {/render} + +
    + {render acl=$sambaPwdCanChangeACL checkbox=$multiple_support checked=$use_allow_pwchange} + + {/render} + +
    + {render acl=$sambaAcctFlagsLACL checkbox=$multiple_support checked=$use_temporary_disable} + + {/render} + +
    + {render acl=$sambaPwdMustChangeACL checkbox=$multiple_support checked=$use_password_expires} + + {/render} + + + {render acl=$sambaPwdMustChangeACL} + + {/render} + {render acl=$sambaPwdMustChangeACL} + + {/render} + {render acl=$sambaPwdMustChangeACL} + + {/render} +
    + ({$additional_info_PwdMustChange}) +
    + {render acl=$sambaKickoffTimeACL checkbox=$multiple_support checked=$use_kickoff_time_set} + + {/render} + + + {render acl=$sambaKickoffTimeACL} + + {/render} + {render acl=$sambaKickoffTimeACL} + + {/render} + {render acl=$sambaKickoffTimeACL} + + {/render} + + + +
     
    + {render acl=$sambaLogonHoursACL mode=read_active checkbox=$multiple_support checked=$use_SetSambaLogonHours} + {t}Samba logon times{/t}  + {/render} +
    + + +
    +   + + +
    + +{if $multiple_support} + + +
    + + +{else} + {render acl=$sambaUserWorkstationsACL} + + {/render} +
    + {render acl=$sambaUserWorkstationsACL} + + {/render} + {render acl=$sambaUserWorkstationsACL} + + {/render} +{/if} +
    + + + + + diff --git a/trunk/gosa-plugins/samba/personal/samba/samba3_workstations.tpl b/trunk/gosa-plugins/samba/personal/samba/samba3_workstations.tpl new file mode 100644 index 000000000..c44f17c3a --- /dev/null +++ b/trunk/gosa-plugins/samba/personal/samba/samba3_workstations.tpl @@ -0,0 +1,42 @@ + + + + + +
    +
    +

    + {$hint}
    +

    +
    +
    +

    + +

    +
    +
    +
    +

    [F] + {t}Filters{/t}

    +
    +
    + + {$alphabet} +
    +
    {t}Display workstations of department{/t}  +
    + +
     
    + {$apply} +
    +
    + +

    + +   + +

    diff --git a/trunk/gosa-plugins/samba/personal/samba/sambaLogonHours.tpl b/trunk/gosa-plugins/samba/personal/samba/sambaLogonHours.tpl new file mode 100644 index 000000000..c348545b1 --- /dev/null +++ b/trunk/gosa-plugins/samba/personal/samba/sambaLogonHours.tpl @@ -0,0 +1,106 @@ +{if $acl} + + +{/if} + +

    {t}Specify the hours this user is allowed to log in{/t}

    +
    + + + + + + + + + {foreach from=$Hours item=hours key=key_hours} + {if (($hours)%2) == 0 } + + {/foreach} + + +{if $acl} + + + + {foreach from=$Hours item=hours key=key_hours} + {if (($hours)%2) == 0 } + + {/foreach} + + +{/if} + + +{foreach from=$Matrix item=days key=key_day} + + + {foreach from=$days item=hours key=key_hour} + {if (($key_hour)%2) == 0 } + + {/foreach} + +{if $acl} + + +{/if} + +{/foreach} +
     {t}Hour{/t}
      + {else} + + {/if} + {$hours} +
    +   + + {else} + + {/if} + + + + +
    + {$Days[$key_day]} + + {else} + + {/if} + + + +
    +
    + +
    +

    +{if $acl} + +   +{/if} + +

    + + diff --git a/trunk/gosa-plugins/samba/plugin.dsc b/trunk/gosa-plugins/samba/plugin.dsc new file mode 100644 index 000000000..dc290eaee --- /dev/null +++ b/trunk/gosa-plugins/samba/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = samba +description = "Plugin for Samba 2/3 integration" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ + diff --git a/trunk/gosa-plugins/scalix/admin/groups/scalix/class_scalixGroup.inc b/trunk/gosa-plugins/scalix/admin/groups/scalix/class_scalixGroup.inc new file mode 100644 index 000000000..3631f9814 --- /dev/null +++ b/trunk/gosa-plugins/scalix/admin/groups/scalix/class_scalixGroup.inc @@ -0,0 +1,42 @@ + _("Scalix account"), + "plSelfModify" => TRUE, + "plDepends" => array("group"), + "plPriority" => 2, + "plSection" => array("administration"), + "plCategory" => array("groups"), + "plOptions" => array(), + + "plProvidedAcls" => array( + + "scalixMailnode" => _("Scalix Mail node"), + "scalixMailboxClass" => _("Mailbox class"), + "scalixServerLanguage" => _("Server language"), + "scalixAdministrator" => _("Administrator"), + "scalixMailboxAdministrator"=> _("Mailbox administrator"), + "scalixHideUserEntry" => _("Hide user entry in Scalix"), + "scalixLimitMailboxSize" => _("Mailbox size limitations"), + "scalixLimitOutboundMail" => _("Limit outbound"), + "scalixLimitInboundMail" => _("Limit inbound"), + "scalixLimitNotifyUser" => _("Notify user"), + "scalixEmailAddress" => _("Scalix email addresses")) + + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler +?> diff --git a/trunk/gosa-plugins/scalix/help/guide.xml b/trunk/gosa-plugins/scalix/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/scalix/html/images/envelope.png b/trunk/gosa-plugins/scalix/html/images/envelope.png new file mode 100644 index 0000000000000000000000000000000000000000..6053eeda485dd88f281622827bc505cb2228d613 GIT binary patch literal 843 zcmV-R1GM~!P)7i%#SmZWL_8>OlS$A0T*I}7K#N+si-01rnI1&Y(%Ii6coCsyNVbW zrDhfXXg3wDP(d;<#1JW(MLIN1!Zf6L%%qcM#_?rl-n_Z*-tW3-EUmxa@`H1}?{Lmx z_@6m{{`;tuG}_f=zQMV8x!LTz&3W+6)YM4@0LH%oFI@OBECd}6hxJoKLwzsUcKpdo z#brxNo3HHbbbbKf{f*$_#k?jZS&Xr#HI2Q~+Z%uG(4nU?>2w520lLoMIMs=*t@?)m zijNUYPyf`XlscA3Sg+f5;`s1zCe+&-g|0J5sZgtV2!#yn-)~25-!8ui;C%pKGc!Lw zL8M-@tkC%2V9(+H{zTliW6*UC0HBlt=Y+Mj3Zl_4giyG2DOadeetYT4mA6V75sfC3 zk&llYIdJ0O!Tz{y#~*?LKuU!mAe75>n5KbHNW;iTc8ExgkB@(%X+qF_#;_g)#Oieq z8yhv0N_BW12hoG;?KX!}3Q`h+fG{}N6NyB+UL>NlMnoH>QavXniA*MjRLX+qaV#tp zF+X2Kwc0?v-U0vwfrJne-Q8gf45Xe90x_yzzy7&Adh}$&_r;0fVLN77CQ_+xWV1=Q zu8-N-0*b{7`uY+e0yr0YpGnJcb_`=r=hEh8^_P41+-x?RfKmX!kWP1FZ0rC$uY+VV z3Qc2ZwK{0G0{{$4saG`sID7WE?|J--<>j&@dZ1MZ3D<2SlZj(sAPv*hA%q0y0yl4N z2D#kQYP0FT_b>;$yWU)}xc%$MNdH(*PZW(t2Zo{VX(u$BK9-luw79tLtgV&44uW7h zpFdYJ9I4r%=pZov-44g?s zK~#7F?O9u_R>c)wd;iyS;T*2kQk5!*S`7pd4uS-<(pp|-shsE z?IUx}?3r0Jv*!C|)~uPmf066q`V9O}GZ0)$?_-bc2};%Sn%dyNuKtC?I|mjm8j+|i zNhgw|)s-|xzKb-95t&AskD1136D1-@S)U|{Br)10%%`YNkVk~9)oPEo+wFr0r=SON1cXB+vmU#79`_M5|C>V37*zP{Snp)L1f;MpM? zCSSF1^&NYMSFIWeYm22cFeFl2AVFL6D#fHJ)A$ zi-DAZ5{z;f{b*3`lVH)XgbRixsP{=& zD?=G#XcG~X03IuVe+@z4VfnHH8o(qdQbbng2hC5oRrea@>)5MatBoGsx_*ag=smqI zl}!Bbd%^ONP5ZS_<{ZN8Dkw2B0CT1|wtNpZRAKypwu6-Is2unm_8vH@%1SQ7_Fl$R z7mp2nfUvJ#-~asPb-tO_6bO`RwKe5hX^`GTH(YC4lBugA(@5b4=?d{sB1}2yp=W@N zN7N|{BqeA(Sd}^?ZXI;cBo9IRs5qM(lF15IrOz-72C;|M2W}yORob@M9(2`lT6_bEf7tLnFL&tLosFsWv+w*Ly5BnXEP&E&=YE| zSIny5D0ZRY8@_Xaz`&A)J5vQ{)iKCe0Ps#*fhRZ%2wv3hQ!n!PR}xAJJ>dQX9xJHT zrGmW@Pd6oQG)1mlKtuE(Ft-X^84{+z@Um=yWs^Apl5(lE6Uh@^GK0YINYa6?hi?w6 zm}&Jg^fVv>VhX<7g3pJ)2iPP5F`lwW>4B=N@0Qw~Yov11EmFefpBWNNLigOq(*EE* zX}&!njn`k5Wb%qOOKErf_tB(E#z@$+TrQ8~^%e-EO_)p#)fJqqG2A3Q4FmA=bj8sM z@GzM+Ob1|60O$3fe9KB1-u{S`7A>*%^E^Yi;o8kBG!AWj2s&dq^VE|vb@U(TVF0Zw zS-2civdTg}j}^(}$fUU6usXo(1|dvED{TeT=5aj;5?moT>)7aw^>riC|G<~?YOXoY z2`UW?8bBQk4;$2UxV#q`4{u=Bq(FejKkNdY#raL|F2t1A#lTOGX`C=r6!e>~LQJqdWA z2uk3Y1~xxvT5?aW)YPGa(inSQV%RtDK-^Q@HJ^ z>HYKm^1UkWB`4 zWdOCnp(vz60@sWdGqD?sNs$1r44B;jdqD3n)WbUfXs9AJ2kHkQTqjx+uS?(B^*MFL zEL~*(J!>^`%kmAaIq`;Edj45yyawN|h&TwxaA1*FLR7^nm-;qNLaBx#0r+_}7GA(W zLd_o%RYLGiV?qKTdij|@N%gkdaq8lo;Tl2+H#!I}#MnIfj+}n#SJL51I?$%xnM;lw zB&HpSa?OopuEq%xzI0=Q@#e{tFXfCpuy}3YD`J8xg}$_-9AElG&OQB0>6|&0Q+aLK z{@d@ATYvr=DKB2C@NCu{c&Z>NOEQ8^QW#(c0h*8lFlZzSyAsSPDVR{gOB#+{ zvSMdmi5O^D8YrZUV4bF+2e!-L#?3N`lXvpSVVOSuwyl&S!4XMd@ZOCwyk)zp$v>L! zo{;WEdsFMJg3Y(CW^U$ttI*R>AdsfKPUHIE>T&zWAG;yw!&MMG0QwMCtFmz0!y5Ub z)Bf<^(*5MTdaV-fOtqW8DAlF2FMjO*(I0-N(`qvhy-Jv=4auPxP0p0PdZ9=FCcy6* z`8N4HyD1$AZIksB`5fQ6`c|&i=wZpbCUMLda zCRFTZIz(^Hi(d*ToEm>wPELGF7Hqs9SAz{QaQ7N}J?!Z&FMTpy;dLbW<>RV0cd6f zW;WV}@Qh#9jsib9>NMCsO%LP=6if&Q*|9i|8u;!%ID78he&!&i7J6(@UsN(IaMWyY z-K7fF>a8woL)0i}o$p7P{S&b2(sGhE(C`>KWTCJE+g?1HPE9s;b4K~{&U-(jUjdbC z83XDHxs>f(dvwUaLTK$s#sOhJf->C(&cM68LyjK3KByw2P898aR#N?;SvUoa~uglN6k>G?XJZ%e#6lgvpLal70(Z=XT z@xC47$G*c-J`_yISKybzJ@}M;Cw>*t4ec=XpmRVCHn3$03c)=%xE6CDRK_lpv8lFE z0rEXL3)+T_(2|}fisL;j%?xv{02{sVzuhIreD#jU<2X48@CQ(LZ03eV)9c~-4E(=m Z;6MLHi9tKb4s!qi002ovPDHLkV1g%QJ|X}B literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/scalix/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/scalix/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e08cf7063 --- /dev/null +++ b/trunk/gosa-plugins/scalix/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,274 @@ +# translation of messages.po to +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-04-04 09:28+0200\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/groups/scalix/class_scalixGroup.inc:15 +#: personal/scalix/class_scalixAccount.inc:456 +msgid "Scalix account" +msgstr "Scalix-Konto" + +#: admin/groups/scalix/class_scalixGroup.inc:25 +#: personal/scalix/class_scalixAccount.inc:466 +msgid "Scalix Mail node" +msgstr "Scalix Mailknoten" + +#: admin/groups/scalix/class_scalixGroup.inc:26 +#: personal/scalix/class_scalixAccount.inc:467 +msgid "Mailbox class" +msgstr "Mailbox-Klasse" + +#: admin/groups/scalix/class_scalixGroup.inc:27 +#: personal/scalix/class_scalixAccount.inc:468 +msgid "Server language" +msgstr "Serversprache" + +#: admin/groups/scalix/class_scalixGroup.inc:28 +#: personal/scalix/class_scalixAccount.inc:469 +msgid "Administrator" +msgstr "Administrator" + +#: admin/groups/scalix/class_scalixGroup.inc:29 +#: personal/scalix/class_scalixAccount.inc:470 +msgid "Mailbox administrator" +msgstr "Mailbox-Administrator" + +#: admin/groups/scalix/class_scalixGroup.inc:30 +#: personal/scalix/class_scalixAccount.inc:471 +msgid "Hide user entry in Scalix" +msgstr "Verstecke Benutzereintrag in Scalix" + +#: admin/groups/scalix/class_scalixGroup.inc:31 +#: personal/scalix/class_scalixAccount.inc:472 +msgid "Mailbox size limitations" +msgstr "Mailbox Größenbeschränkungen" + +#: admin/groups/scalix/class_scalixGroup.inc:32 +#: personal/scalix/class_scalixAccount.inc:473 +msgid "Limit outbound" +msgstr "Limitiere ausgehend" + +#: admin/groups/scalix/class_scalixGroup.inc:33 +#: personal/scalix/class_scalixAccount.inc:474 +msgid "Limit inbound" +msgstr "Limitiere eingehend" + +#: admin/groups/scalix/class_scalixGroup.inc:34 +#: personal/scalix/class_scalixAccount.inc:475 +msgid "Notify user" +msgstr "Benachrichtige Benutzer" + +#: admin/groups/scalix/class_scalixGroup.inc:35 +#: personal/scalix/generic.tpl:105 personal/scalix/class_scalixAccount.inc:476 +#: personal/scalix/paste_generic.tpl:4 +msgid "Scalix email addresses" +msgstr "Scalix Email-Adressen" + +#: personal/scalix/generic.tpl:4 +msgid "Generic" +msgstr "Allgemein" + +#: personal/scalix/generic.tpl:8 +msgid "Scalix mailnode" +msgstr "Scalix-Mailknoten" + +#: personal/scalix/generic.tpl:17 +msgid "Salix mailbox class" +msgstr "Scalix Mailbox-Klasse" + +#: personal/scalix/generic.tpl:21 +msgid "" +"Limited users can not make use of the group calendar functionality in Scalix" +msgstr "" +"Eingeschränkte Benutzer können die Scalix Gruppenkalender-Funktion nicht " +"verwenden" + +#: personal/scalix/generic.tpl:30 +msgid "Scalix server language" +msgstr "Scalix Serversprache" + +#: personal/scalix/generic.tpl:34 +msgid "Message catalog language for client." +msgstr "Sprache des Nachrichtenkatalogs für Clients." + +#: personal/scalix/generic.tpl:51 +msgid "Select for admin capability." +msgstr "Auswählen für Admin-Fähigkeit." + +#: personal/scalix/generic.tpl:51 +msgid "Scalix Administrator" +msgstr "Scalix Administrator" + +#: personal/scalix/generic.tpl:56 +msgid "Select for mailbox admin capability." +msgstr "Auswählen für Mailbox-Adminstrator Fähigkeit." + +#: personal/scalix/generic.tpl:56 +msgid "Scalix Mailbox Administrator" +msgstr "Scalix Mailbox-Administrator" + +#: personal/scalix/generic.tpl:61 +msgid "Hide user entry from addressbook." +msgstr "Verstecke Benutzereintrag im Adressbuch." + +#: personal/scalix/generic.tpl:61 +msgid "Hide this user entry in Scalix" +msgstr "Verstecke diesen Benutzereintrag in Scalix" + +#: personal/scalix/generic.tpl:70 +msgid "Limit mailbox size" +msgstr "Maximale Größe der Mailbox" + +#: personal/scalix/generic.tpl:73 +msgid "MB" +msgstr "MB" + +#: personal/scalix/generic.tpl:81 +msgid "As sanction on mailbox quota overuse, stop user from sending mail." +msgstr "" +"Verbiete dem Benutzer das Senden von Mails, wenn er das Kontingent der " +"Mailbox überschreitet." + +#: personal/scalix/generic.tpl:81 +msgid "Limit Outbound Mail" +msgstr "Limitiere ausgehende Mail" + +#: personal/scalix/generic.tpl:86 +msgid "As sanction on mailbox quota overuse, stop user from receiving mail." +msgstr "" +"Verbiete dem Benutzer das Empfangen von Mails, wenn er das Kontingent der " +"Mailbox überschreitet." + +#: personal/scalix/generic.tpl:86 +msgid "Limit Inbound Mail" +msgstr "Limitiere eingehende Mail" + +#: personal/scalix/generic.tpl:91 +msgid "As sanction on mailbox quota overuse, notify the user by eMail." +msgstr "" +"Benachrichtige den Benutzer, wenn er das Kontingent der Mailbox " +"überschreitet." + +#: personal/scalix/generic.tpl:91 +msgid "Notify User" +msgstr "Benutzer benachrichtigen" + +#: personal/scalix/generic.tpl:108 personal/scalix/paste_generic.tpl:6 +msgid "List of scalix email addresses" +msgstr "Liste alternativer Scalix Email-Adressen" + +#: personal/scalix/class_scalixAccount.inc:16 +msgid "Scalix" +msgstr "Scalix" + +#: personal/scalix/class_scalixAccount.inc:17 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/scalix/class_scalixAccount.inc:128 +msgid "This account has no scalix extensions." +msgstr "Dieses Konto besitzt keine Scalix-Erweiterungen." + +#: personal/scalix/class_scalixAccount.inc:137 +msgid "Remove scalix account" +msgstr "Scalix-Konto entfernen" + +#: personal/scalix/class_scalixAccount.inc:138 +msgid "" +"This account has scalix synchronization enabled. You can disable it by " +"clicking below." +msgstr "" +"Dieses Konto besitzt aktivierte Scalix-Erweiterungen. Sie können diese durch " +"einen Klick auf die untere Schaltfläche deaktivieren." + +#: personal/scalix/class_scalixAccount.inc:140 +msgid "Create scalix account" +msgstr "Scalix-Konto erstellen" + +#: personal/scalix/class_scalixAccount.inc:140 +msgid "" +"This account has scalix synchronization disabled. You can enable it by " +"clicking below." +msgstr "" +"Dieses Konto besitzt keine aktivierten Scalix-Erweiterungen. Sie können " +"diese durch einen Klick auf die untere Schaltfläche aktivieren." + +#: personal/scalix/class_scalixAccount.inc:234 +#: personal/scalix/class_scalixAccount.inc:340 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:281 +#: personal/scalix/class_scalixAccount.inc:496 +#: personal/scalix/class_scalixAccount.inc:505 +msgid "Error" +msgstr "Fehler" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:496 +msgid "Cannot add invalid mail address!" +msgstr "Kann eine ungültige Mail-Adresse nicht hinzuzufügen!" + +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:281 +msgid "You have no permission to modify these addresses." +msgstr "Sie haben keine Berechtigung, um diese Adressen zu bearbeiten." + +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:505 +#, php-format +msgid "Cannot add mail address: it is already used by user '%s'." +msgstr "" +"Kann Mail-Adresse nicht hinzufügen: sie wird bereits von Benutzer '%s' " +"verwendet." + +#: personal/scalix/class_scalixAccount.inc:362 +msgid "Mailnode" +msgstr "Mailknoten" + +#: personal/scalix/class_scalixAccount.inc:365 +msgid "Scalix object" +msgstr "Scalix-Objekt" + +#: personal/scalix/class_scalixAccount.inc:374 +msgid "Email address" +msgstr "Email-Adresse" + +#: personal/scalix/class_scalixAccount.inc:381 +msgid "Limit Mailbox" +msgstr "Limitiere Mailbox" + +#: personal/scalix/class_scalixAccount.inc:460 +msgid "My account" +msgstr "Mein Konto" + +#: personal/scalix/main.inc:126 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Betätigen sie den 'Bearbeiten'-Schalter unten um Informationen in diesem " +"Dialog zu ändern" + +#: personal/scalix/main.inc:139 +msgid "Scalix settings" +msgstr "Scalix-Einstellungen" diff --git a/trunk/gosa-plugins/scalix/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/scalix/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..cb26e3f9e --- /dev/null +++ b/trunk/gosa-plugins/scalix/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,306 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/groups/scalix/class_scalixGroup.inc:15 +#: personal/scalix/class_scalixAccount.inc:456 +msgid "Scalix account" +msgstr "Cuenta Scalix" + +#: admin/groups/scalix/class_scalixGroup.inc:25 +#: personal/scalix/class_scalixAccount.inc:466 +msgid "Scalix Mail node" +msgstr "Nodo de correo Scalix" + +#: admin/groups/scalix/class_scalixGroup.inc:26 +#: personal/scalix/class_scalixAccount.inc:467 +msgid "Mailbox class" +msgstr "Tipo de buzón de correo" + +#: admin/groups/scalix/class_scalixGroup.inc:27 +#: personal/scalix/class_scalixAccount.inc:468 +msgid "Server language" +msgstr "Idioma del Servidor" + +#: admin/groups/scalix/class_scalixGroup.inc:28 +#: personal/scalix/class_scalixAccount.inc:469 +msgid "Administrator" +msgstr "Administrador" + +#: admin/groups/scalix/class_scalixGroup.inc:29 +#: personal/scalix/class_scalixAccount.inc:470 +msgid "Mailbox administrator" +msgstr "Administrador del buzón de correo" + +#: admin/groups/scalix/class_scalixGroup.inc:30 +#: personal/scalix/class_scalixAccount.inc:471 +msgid "Hide user entry in Scalix" +msgstr "Ocultar las entradas de usuarios en Scalix" + +#: admin/groups/scalix/class_scalixGroup.inc:31 +#: personal/scalix/class_scalixAccount.inc:472 +msgid "Mailbox size limitations" +msgstr "Limitaciones de tamaño de los buzones de correo" + +#: admin/groups/scalix/class_scalixGroup.inc:32 +#: personal/scalix/class_scalixAccount.inc:473 +msgid "Limit outbound" +msgstr "Limitaciones de salida" + +#: admin/groups/scalix/class_scalixGroup.inc:33 +#: personal/scalix/class_scalixAccount.inc:474 +msgid "Limit inbound" +msgstr "Limitaciones de entrada" + +#: admin/groups/scalix/class_scalixGroup.inc:34 +#: personal/scalix/class_scalixAccount.inc:475 +msgid "Notify user" +msgstr "Notificar al usuario" + +#: admin/groups/scalix/class_scalixGroup.inc:35 +#: personal/scalix/generic.tpl:105 personal/scalix/class_scalixAccount.inc:476 +#: personal/scalix/paste_generic.tpl:4 +msgid "Scalix email addresses" +msgstr "Direcciones de correo electrónico de Scalix" + +#: personal/scalix/generic.tpl:4 +msgid "Generic" +msgstr "Genérico" + +#: personal/scalix/generic.tpl:8 +#, fuzzy +msgid "Scalix mailnode" +msgstr "Nodo de correo Scalix" + +#: personal/scalix/generic.tpl:17 +#, fuzzy +msgid "Salix mailbox class" +msgstr "Tipo de buzón de correo" + +#: personal/scalix/generic.tpl:21 +msgid "" +"Limited users can not make use of the group calendar functionality in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:30 +#, fuzzy +msgid "Scalix server language" +msgstr "Idioma del Servidor" + +#: personal/scalix/generic.tpl:34 +msgid "Message catalog language for client." +msgstr "" + +#: personal/scalix/generic.tpl:51 +msgid "Select for admin capability." +msgstr "" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Scalix Administrator" +msgstr "Administrador" + +#: personal/scalix/generic.tpl:56 +msgid "Select for mailbox admin capability." +msgstr "" + +#: personal/scalix/generic.tpl:56 +#, fuzzy +msgid "Scalix Mailbox Administrator" +msgstr "Administrador del buzón de correo" + +#: personal/scalix/generic.tpl:61 +#, fuzzy +msgid "Hide user entry from addressbook." +msgstr "Ocultar las entradas de usuarios en Scalix" + +#: personal/scalix/generic.tpl:61 +#, fuzzy +msgid "Hide this user entry in Scalix" +msgstr "Ocultar las entradas de usuarios en Scalix" + +#: personal/scalix/generic.tpl:70 +#, fuzzy +msgid "Limit mailbox size" +msgstr "Tamaño máximo del buzón de correo electrónico" + +#: personal/scalix/generic.tpl:73 +msgid "MB" +msgstr "Mb" + +#: personal/scalix/generic.tpl:81 +msgid "As sanction on mailbox quota overuse, stop user from sending mail." +msgstr "" + +#: personal/scalix/generic.tpl:81 +#, fuzzy +msgid "Limit Outbound Mail" +msgstr "Limitaciones de salida" + +#: personal/scalix/generic.tpl:86 +msgid "As sanction on mailbox quota overuse, stop user from receiving mail." +msgstr "" + +#: personal/scalix/generic.tpl:86 +#, fuzzy +msgid "Limit Inbound Mail" +msgstr "Limitaciones de entrada" + +#: personal/scalix/generic.tpl:91 +msgid "As sanction on mailbox quota overuse, notify the user by eMail." +msgstr "" + +#: personal/scalix/generic.tpl:91 +#, fuzzy +msgid "Notify User" +msgstr "Notificar al usuario" + +#: personal/scalix/generic.tpl:108 personal/scalix/paste_generic.tpl:6 +#, fuzzy +msgid "List of scalix email addresses" +msgstr "Direcciones de correo electrónico de Scalix" + +#: personal/scalix/class_scalixAccount.inc:16 +#, fuzzy +msgid "Scalix" +msgstr "Cuenta Scalix" + +#: personal/scalix/class_scalixAccount.inc:17 +msgid "This does something" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:128 +msgid "This account has no scalix extensions." +msgstr "Esta cuenta no tiene extensión Scalix." + +#: personal/scalix/class_scalixAccount.inc:137 +msgid "Remove scalix account" +msgstr "Eliminar cuenta Scalix" + +#: personal/scalix/class_scalixAccount.inc:138 +msgid "" +"This account has scalix synchronization enabled. You can disable it by " +"clicking below." +msgstr "" +"Esta cuenta tiene sincronización con Scalix activada. Puede desactivarla " +"pulsando aqui." + +#: personal/scalix/class_scalixAccount.inc:140 +msgid "Create scalix account" +msgstr "Crear cuenta Scalix" + +#: personal/scalix/class_scalixAccount.inc:140 +msgid "" +"This account has scalix synchronization disabled. You can enable it by " +"clicking below." +msgstr "" +"Esta cuenta tiene sincronización con Scalix desactivada. Puede activarla " +"pulsando aqui." + +#: personal/scalix/class_scalixAccount.inc:234 +#: personal/scalix/class_scalixAccount.inc:340 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:281 +#: personal/scalix/class_scalixAccount.inc:496 +#: personal/scalix/class_scalixAccount.inc:505 +msgid "Error" +msgstr "Error" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:496 +#, fuzzy +msgid "Cannot add invalid mail address!" +msgstr "Esta intentando añadir una dirección de correo no valida" + +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:281 +#, fuzzy +msgid "You have no permission to modify these addresses." +msgstr "No tiene permisos para eliminar este departamento." + +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:505 +#, fuzzy, php-format +msgid "Cannot add mail address: it is already used by user '%s'." +msgstr "" +"La dirección de correo que esta intentando añadir, ya esta usada por otro " +"usuario" + +#: personal/scalix/class_scalixAccount.inc:362 +#, fuzzy +msgid "Mailnode" +msgstr "Nodo de correo Scalix" + +#: personal/scalix/class_scalixAccount.inc:365 +#, fuzzy +msgid "Scalix object" +msgstr "Cuenta Scalix" + +#: personal/scalix/class_scalixAccount.inc:374 +#, fuzzy +msgid "Email address" +msgstr "Direcciones de correo electrónico de Scalix" + +#: personal/scalix/class_scalixAccount.inc:381 +#, fuzzy +msgid "Limit Mailbox" +msgstr "Tamaño máximo del buzón de correo electrónico" + +#: personal/scalix/class_scalixAccount.inc:460 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/scalix/main.inc:126 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Pulse en el botón - Editar - para cambiar la información en esta ventana" + +#: personal/scalix/main.inc:139 +msgid "Scalix settings" +msgstr "Configuración de Scalix" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Delete" +#~ msgstr "Eliminar" + +#~ msgid "Save" +#~ msgstr "Guardar" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Edit" +#~ msgstr "Editar" + +#~ msgid "There is no scalix mailnode specified." +#~ msgstr "No se ha introducido un nodo de correo Scalix." + +#~ msgid "scalixScalixObject must be set!" +#~ msgstr "¡Debe introducir scalixScalixObject!" + +#~ msgid "Value in 'Limit Mailbox size' is not valid." +#~ msgstr "" +#~ "El valor indicado en tamaño máximo del buzón de correo no es válido." diff --git a/trunk/gosa-plugins/scalix/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/scalix/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..15dfabbf6 --- /dev/null +++ b/trunk/gosa-plugins/scalix/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,269 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-07-24 01:33+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/groups/scalix/class_scalixGroup.inc:15 +#: personal/scalix/class_scalixAccount.inc:456 +msgid "Scalix account" +msgstr "Compte scalix" + +#: admin/groups/scalix/class_scalixGroup.inc:25 +#: personal/scalix/class_scalixAccount.inc:466 +msgid "Scalix Mail node" +msgstr "Noeud de mail Scalix" + +#: admin/groups/scalix/class_scalixGroup.inc:26 +#: personal/scalix/class_scalixAccount.inc:467 +msgid "Mailbox class" +msgstr "Classe du compte de messagerie" + +#: admin/groups/scalix/class_scalixGroup.inc:27 +#: personal/scalix/class_scalixAccount.inc:468 +msgid "Server language" +msgstr "Langue du serveur" + +#: admin/groups/scalix/class_scalixGroup.inc:28 +#: personal/scalix/class_scalixAccount.inc:469 +msgid "Administrator" +msgstr "Administrateur" + +#: admin/groups/scalix/class_scalixGroup.inc:29 +#: personal/scalix/class_scalixAccount.inc:470 +msgid "Mailbox administrator" +msgstr "Administrateur des comptes de messagerie" + +#: admin/groups/scalix/class_scalixGroup.inc:30 +#: personal/scalix/class_scalixAccount.inc:471 +msgid "Hide user entry in Scalix" +msgstr "Cacher l'entrée de l'utilisateur dans Scalix" + +#: admin/groups/scalix/class_scalixGroup.inc:31 +#: personal/scalix/class_scalixAccount.inc:472 +msgid "Mailbox size limitations" +msgstr "Limitation de la taille du compte de messagerie" + +#: admin/groups/scalix/class_scalixGroup.inc:32 +#: personal/scalix/class_scalixAccount.inc:473 +msgid "Limit outbound" +msgstr "Limite en sortie" + +#: admin/groups/scalix/class_scalixGroup.inc:33 +#: personal/scalix/class_scalixAccount.inc:474 +msgid "Limit inbound" +msgstr "Limite en entrée" + +#: admin/groups/scalix/class_scalixGroup.inc:34 +#: personal/scalix/class_scalixAccount.inc:475 +msgid "Notify user" +msgstr "Avertir l'utilisateur" + +#: admin/groups/scalix/class_scalixGroup.inc:35 +#: personal/scalix/generic.tpl:105 personal/scalix/class_scalixAccount.inc:476 +#: personal/scalix/paste_generic.tpl:4 +msgid "Scalix email addresses" +msgstr "Adresse de messagerie Scalix" + +#: personal/scalix/generic.tpl:4 +msgid "Generic" +msgstr "Informations" + +#: personal/scalix/generic.tpl:8 +msgid "Scalix mailnode" +msgstr "Noeud de mail Scalix" + +#: personal/scalix/generic.tpl:17 +msgid "Salix mailbox class" +msgstr "Type de compte de messagerie Scalix" + +#: personal/scalix/generic.tpl:21 +msgid "" +"Limited users can not make use of the group calendar functionality in Scalix" +msgstr "" +"Les utilisateurs limites ne peuvent pas utiliser les fonctionnalité de " +"calendrier de groupe de Scalix" + +#: personal/scalix/generic.tpl:30 +msgid "Scalix server language" +msgstr "Langue du serveur scalix" + +#: personal/scalix/generic.tpl:34 +msgid "Message catalog language for client." +msgstr "Langue pour le client." + +#: personal/scalix/generic.tpl:51 +msgid "Select for admin capability." +msgstr "Sélectionner pour ajouter les droits d'administration." + +#: personal/scalix/generic.tpl:51 +msgid "Scalix Administrator" +msgstr "Administrateur Scalix" + +#: personal/scalix/generic.tpl:56 +msgid "Select for mailbox admin capability." +msgstr "" +"Sélectionnez pour ajouter les droits d'administration sur les comptes de " +"messagerie." + +#: personal/scalix/generic.tpl:56 +msgid "Scalix Mailbox Administrator" +msgstr "Administrateur des comptes Scalix" + +#: personal/scalix/generic.tpl:61 +msgid "Hide user entry from addressbook." +msgstr "Cacher l'entrée de l'utilisateur dans le carnet d'adresse" + +#: personal/scalix/generic.tpl:61 +msgid "Hide this user entry in Scalix" +msgstr "Cacher l'entrée de cet utilisateur dans Scalix" + +#: personal/scalix/generic.tpl:70 +msgid "Limit mailbox size" +msgstr "Limiter la taille des comptes de messagerie" + +#: personal/scalix/generic.tpl:73 +msgid "MB" +msgstr "" + +#: personal/scalix/generic.tpl:81 +msgid "As sanction on mailbox quota overuse, stop user from sending mail." +msgstr "" +"Comme sanction pour dépassement du quota du compte de messagerie, empêcher " +"l'utilisateur d'envoyer des messages." + +#: personal/scalix/generic.tpl:81 +msgid "Limit Outbound Mail" +msgstr "Limiter les messages en sortie" + +#: personal/scalix/generic.tpl:86 +msgid "As sanction on mailbox quota overuse, stop user from receiving mail." +msgstr "" +"Comme sanction pour dépassement du quota du compte de messagerie, empêcher " +"l'utilisateur de recevoir des messages." + +#: personal/scalix/generic.tpl:86 +msgid "Limit Inbound Mail" +msgstr "Limiter les messages en entrée" + +#: personal/scalix/generic.tpl:91 +msgid "As sanction on mailbox quota overuse, notify the user by eMail." +msgstr "" +"Comme sanction pour dépassement du quota du compte de messagerie, avertir " +"l'utilisateur par email." + +#: personal/scalix/generic.tpl:91 +msgid "Notify User" +msgstr "Avertir l'utilisateur" + +#: personal/scalix/generic.tpl:108 personal/scalix/paste_generic.tpl:6 +msgid "List of scalix email addresses" +msgstr "Liste des adresses de messagerie scalix" + +#: personal/scalix/class_scalixAccount.inc:16 +msgid "Scalix" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:17 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/scalix/class_scalixAccount.inc:128 +msgid "This account has no scalix extensions." +msgstr "Ce compte n'a pas d'extension scalix." + +#: personal/scalix/class_scalixAccount.inc:137 +msgid "Remove scalix account" +msgstr "Supprimer le compte scalix" + +#: personal/scalix/class_scalixAccount.inc:138 +msgid "" +"This account has scalix synchronization enabled. You can disable it by " +"clicking below." +msgstr "" +"Ce compte possède l'extension scalix. Vous pouvez le supprimer en cliquant " +"sur le bouton ci-dessous." + +#: personal/scalix/class_scalixAccount.inc:140 +msgid "Create scalix account" +msgstr "Créer un compte scalix" + +#: personal/scalix/class_scalixAccount.inc:140 +msgid "" +"This account has scalix synchronization disabled. You can enable it by " +"clicking below." +msgstr "" +"Aucune extension scalix n'existe pour ce compte. Vous pouvez en créer une en " +"cliquant sur le bouton ci-dessous." + +#: personal/scalix/class_scalixAccount.inc:234 +#: personal/scalix/class_scalixAccount.inc:340 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:281 +#: personal/scalix/class_scalixAccount.inc:496 +#: personal/scalix/class_scalixAccount.inc:505 +msgid "Error" +msgstr "Erreur" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:496 +msgid "Cannot add invalid mail address!" +msgstr "Impossible d'ajouter une adresse de messagerie non valide !" + +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:281 +msgid "You have no permission to modify these addresses." +msgstr "Vous n'avez pas les droits nécessaires pour modifier ces adresses." + +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:505 +#, php-format +msgid "Cannot add mail address: it is already used by user '%s'." +msgstr "" +"Impossible d'ajouter l'adresse de messagerie. L'adresse est déjà utilisée " +"par l'utilisateur '%s'." + +#: personal/scalix/class_scalixAccount.inc:362 +msgid "Mailnode" +msgstr "Noeud de messagerie Scalix" + +#: personal/scalix/class_scalixAccount.inc:365 +msgid "Scalix object" +msgstr "Objet Scalix" + +#: personal/scalix/class_scalixAccount.inc:374 +msgid "Email address" +msgstr "Adresse de messagerie" + +#: personal/scalix/class_scalixAccount.inc:381 +msgid "Limit Mailbox" +msgstr "Limiter la taille du compte de messagerie" + +#: personal/scalix/class_scalixAccount.inc:460 +msgid "My account" +msgstr "Mon Compte" + +#: personal/scalix/main.inc:126 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Cliquez sur le bouton 'Editer' ci-dessous pour changer les informations dans " +"cette boite de dialogue" + +#: personal/scalix/main.inc:139 +msgid "Scalix settings" +msgstr "Paramètres de Scalix" diff --git a/trunk/gosa-plugins/scalix/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/scalix/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..a42fc738c --- /dev/null +++ b/trunk/gosa-plugins/scalix/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,307 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/groups/scalix/class_scalixGroup.inc:15 +#: personal/scalix/class_scalixAccount.inc:456 +#, fuzzy +msgid "Scalix account" +msgstr "Identità" + +#: admin/groups/scalix/class_scalixGroup.inc:25 +#: personal/scalix/class_scalixAccount.inc:466 +msgid "Scalix Mail node" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:26 +#: personal/scalix/class_scalixAccount.inc:467 +#, fuzzy +msgid "Mailbox class" +msgstr "Indirizzo principale" + +#: admin/groups/scalix/class_scalixGroup.inc:27 +#: personal/scalix/class_scalixAccount.inc:468 +#, fuzzy +msgid "Server language" +msgstr "Lingua" + +#: admin/groups/scalix/class_scalixGroup.inc:28 +#: personal/scalix/class_scalixAccount.inc:469 +#, fuzzy +msgid "Administrator" +msgstr "Amministrazione" + +#: admin/groups/scalix/class_scalixGroup.inc:29 +#: personal/scalix/class_scalixAccount.inc:470 +#, fuzzy +msgid "Mailbox administrator" +msgstr "Amministratori cartella" + +#: admin/groups/scalix/class_scalixGroup.inc:30 +#: personal/scalix/class_scalixAccount.inc:471 +msgid "Hide user entry in Scalix" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:31 +#: personal/scalix/class_scalixAccount.inc:472 +#, fuzzy +msgid "Mailbox size limitations" +msgstr "Opzioni di posta dell'identità" + +#: admin/groups/scalix/class_scalixGroup.inc:32 +#: personal/scalix/class_scalixAccount.inc:473 +#, fuzzy +msgid "Limit outbound" +msgstr "Path del profilo" + +#: admin/groups/scalix/class_scalixGroup.inc:33 +#: personal/scalix/class_scalixAccount.inc:474 +msgid "Limit inbound" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:34 +#: personal/scalix/class_scalixAccount.inc:475 +#, fuzzy +msgid "Notify user" +msgstr "Paese" + +#: admin/groups/scalix/class_scalixGroup.inc:35 +#: personal/scalix/generic.tpl:105 personal/scalix/class_scalixAccount.inc:476 +#: personal/scalix/paste_generic.tpl:4 +#, fuzzy +msgid "Scalix email addresses" +msgstr "Indirizzo principale" + +#: personal/scalix/generic.tpl:4 +msgid "Generic" +msgstr "Generale" + +#: personal/scalix/generic.tpl:8 +msgid "Scalix mailnode" +msgstr "" + +#: personal/scalix/generic.tpl:17 +msgid "Salix mailbox class" +msgstr "" + +#: personal/scalix/generic.tpl:21 +msgid "" +"Limited users can not make use of the group calendar functionality in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:30 +#, fuzzy +msgid "Scalix server language" +msgstr "Imposta dipartimento" + +#: personal/scalix/generic.tpl:34 +msgid "Message catalog language for client." +msgstr "" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Select for admin capability." +msgstr "Rimuovi" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Scalix Administrator" +msgstr "Amministrazione" + +#: personal/scalix/generic.tpl:56 +msgid "Select for mailbox admin capability." +msgstr "" + +#: personal/scalix/generic.tpl:56 +#, fuzzy +msgid "Scalix Mailbox Administrator" +msgstr "Amministrazione" + +#: personal/scalix/generic.tpl:61 +#, fuzzy +msgid "Hide user entry from addressbook." +msgstr "Prego inserire un numero di telefono valido!" + +#: personal/scalix/generic.tpl:61 +msgid "Hide this user entry in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:70 +#, fuzzy +msgid "Limit mailbox size" +msgstr "Inoltra i messaggi a" + +#: personal/scalix/generic.tpl:73 +msgid "MB" +msgstr "Mb" + +#: personal/scalix/generic.tpl:81 +msgid "As sanction on mailbox quota overuse, stop user from sending mail." +msgstr "" + +#: personal/scalix/generic.tpl:81 +#, fuzzy +msgid "Limit Outbound Mail" +msgstr "Path del profilo" + +#: personal/scalix/generic.tpl:86 +msgid "As sanction on mailbox quota overuse, stop user from receiving mail." +msgstr "" + +#: personal/scalix/generic.tpl:86 +msgid "Limit Inbound Mail" +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "As sanction on mailbox quota overuse, notify the user by eMail." +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "Notify User" +msgstr "" + +#: personal/scalix/generic.tpl:108 personal/scalix/paste_generic.tpl:6 +#, fuzzy +msgid "List of scalix email addresses" +msgstr "Lista degli indirizzi alternativi" + +#: personal/scalix/class_scalixAccount.inc:16 +#, fuzzy +msgid "Scalix" +msgstr "Terminali" + +#: personal/scalix/class_scalixAccount.inc:17 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/scalix/class_scalixAccount.inc:128 +#, fuzzy +msgid "This account has no scalix extensions." +msgstr "Questa identità non possiede estensioni FAX" + +#: personal/scalix/class_scalixAccount.inc:137 +#, fuzzy +msgid "Remove scalix account" +msgstr "Elimina estensioni Unix" + +#: personal/scalix/class_scalixAccount.inc:138 +#, fuzzy +msgid "" +"This account has scalix synchronization enabled. You can disable it by " +"clicking below." +msgstr "Questa identià possiede estensioni Unix." + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "Create scalix account" +msgstr "Crea estensioni Unix" + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "" +"This account has scalix synchronization disabled. You can enable it by " +"clicking below." +msgstr "Questa identità non possiede estensioni Unix" + +#: personal/scalix/class_scalixAccount.inc:234 +#: personal/scalix/class_scalixAccount.inc:340 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:281 +#: personal/scalix/class_scalixAccount.inc:496 +#: personal/scalix/class_scalixAccount.inc:505 +msgid "Error" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:496 +#, fuzzy +msgid "Cannot add invalid mail address!" +msgstr "Stai cercando di aggungere un indirizzo di posta non valido" + +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:281 +#, fuzzy +msgid "You have no permission to modify these addresses." +msgstr "Non hai il permesso di cambiare la tua password." + +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:505 +#, fuzzy, php-format +msgid "Cannot add mail address: it is already used by user '%s'." +msgstr "L'indirizzo che stai cercando di aggiungere gi in uso" + +#: personal/scalix/class_scalixAccount.inc:362 +msgid "Mailnode" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:365 +#, fuzzy +msgid "Scalix object" +msgstr "Identità" + +#: personal/scalix/class_scalixAccount.inc:374 +#, fuzzy +msgid "Email address" +msgstr "Indirizzo principale" + +#: personal/scalix/class_scalixAccount.inc:381 +#, fuzzy +msgid "Limit Mailbox" +msgstr "Inoltra i messaggi a" + +#: personal/scalix/class_scalixAccount.inc:460 +msgid "My account" +msgstr "Identità" + +#: personal/scalix/main.inc:126 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " +"questo dialogo" + +#: personal/scalix/main.inc:139 +#, fuzzy +msgid "Scalix settings" +msgstr "Opzioni di posta dell'identità" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Delete" +#~ msgstr "Rimuovi" + +#~ msgid "Save" +#~ msgstr "Salva" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Edit" +#~ msgstr "Modifica" + +#, fuzzy +#~ msgid "There is no scalix mailnode specified." +#~ msgstr "Prego inserire un numero di telefono valido!" + +#, fuzzy +#~ msgid "Value in 'Limit Mailbox size' is not valid." +#~ msgstr "Il valore di 'Dimensione quota' non è valido" diff --git a/trunk/gosa-plugins/scalix/locale/messages.po b/trunk/gosa-plugins/scalix/locale/messages.po new file mode 100644 index 000000000..3eb2395e0 --- /dev/null +++ b/trunk/gosa-plugins/scalix/locale/messages.po @@ -0,0 +1,253 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/groups/scalix/class_scalixGroup.inc:15 +#: personal/scalix/class_scalixAccount.inc:456 +msgid "Scalix account" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:25 +#: personal/scalix/class_scalixAccount.inc:466 +msgid "Scalix Mail node" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:26 +#: personal/scalix/class_scalixAccount.inc:467 +msgid "Mailbox class" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:27 +#: personal/scalix/class_scalixAccount.inc:468 +msgid "Server language" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:28 +#: personal/scalix/class_scalixAccount.inc:469 +msgid "Administrator" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:29 +#: personal/scalix/class_scalixAccount.inc:470 +msgid "Mailbox administrator" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:30 +#: personal/scalix/class_scalixAccount.inc:471 +msgid "Hide user entry in Scalix" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:31 +#: personal/scalix/class_scalixAccount.inc:472 +msgid "Mailbox size limitations" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:32 +#: personal/scalix/class_scalixAccount.inc:473 +msgid "Limit outbound" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:33 +#: personal/scalix/class_scalixAccount.inc:474 +msgid "Limit inbound" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:34 +#: personal/scalix/class_scalixAccount.inc:475 +msgid "Notify user" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:35 +#: personal/scalix/generic.tpl:105 personal/scalix/class_scalixAccount.inc:476 +#: personal/scalix/paste_generic.tpl:4 +msgid "Scalix email addresses" +msgstr "" + +#: personal/scalix/generic.tpl:4 +msgid "Generic" +msgstr "" + +#: personal/scalix/generic.tpl:8 +msgid "Scalix mailnode" +msgstr "" + +#: personal/scalix/generic.tpl:17 +msgid "Salix mailbox class" +msgstr "" + +#: personal/scalix/generic.tpl:21 +msgid "" +"Limited users can not make use of the group calendar functionality in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:30 +msgid "Scalix server language" +msgstr "" + +#: personal/scalix/generic.tpl:34 +msgid "Message catalog language for client." +msgstr "" + +#: personal/scalix/generic.tpl:51 +msgid "Select for admin capability." +msgstr "" + +#: personal/scalix/generic.tpl:51 +msgid "Scalix Administrator" +msgstr "" + +#: personal/scalix/generic.tpl:56 +msgid "Select for mailbox admin capability." +msgstr "" + +#: personal/scalix/generic.tpl:56 +msgid "Scalix Mailbox Administrator" +msgstr "" + +#: personal/scalix/generic.tpl:61 +msgid "Hide user entry from addressbook." +msgstr "" + +#: personal/scalix/generic.tpl:61 +msgid "Hide this user entry in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:70 +msgid "Limit mailbox size" +msgstr "" + +#: personal/scalix/generic.tpl:73 +msgid "MB" +msgstr "" + +#: personal/scalix/generic.tpl:81 +msgid "As sanction on mailbox quota overuse, stop user from sending mail." +msgstr "" + +#: personal/scalix/generic.tpl:81 +msgid "Limit Outbound Mail" +msgstr "" + +#: personal/scalix/generic.tpl:86 +msgid "As sanction on mailbox quota overuse, stop user from receiving mail." +msgstr "" + +#: personal/scalix/generic.tpl:86 +msgid "Limit Inbound Mail" +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "As sanction on mailbox quota overuse, notify the user by eMail." +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "Notify User" +msgstr "" + +#: personal/scalix/generic.tpl:108 personal/scalix/paste_generic.tpl:6 +msgid "List of scalix email addresses" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:16 +msgid "Scalix" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:17 +msgid "This does something" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:128 +msgid "This account has no scalix extensions." +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:137 +msgid "Remove scalix account" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:138 +msgid "" +"This account has scalix synchronization enabled. You can disable it by " +"clicking below." +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:140 +msgid "Create scalix account" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:140 +msgid "" +"This account has scalix synchronization disabled. You can enable it by " +"clicking below." +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:234 +#: personal/scalix/class_scalixAccount.inc:340 +msgid "LDAP error" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:281 +#: personal/scalix/class_scalixAccount.inc:496 +#: personal/scalix/class_scalixAccount.inc:505 +msgid "Error" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:496 +msgid "Cannot add invalid mail address!" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:281 +msgid "You have no permission to modify these addresses." +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:505 +#, php-format +msgid "Cannot add mail address: it is already used by user '%s'." +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:362 +msgid "Mailnode" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:365 +msgid "Scalix object" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:374 +msgid "Email address" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:381 +msgid "Limit Mailbox" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:460 +msgid "My account" +msgstr "" + +#: personal/scalix/main.inc:126 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" + +#: personal/scalix/main.inc:139 +msgid "Scalix settings" +msgstr "" diff --git a/trunk/gosa-plugins/scalix/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/scalix/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..843305182 --- /dev/null +++ b/trunk/gosa-plugins/scalix/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,316 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/groups/scalix/class_scalixGroup.inc:15 +#: personal/scalix/class_scalixAccount.inc:456 +#, fuzzy +msgid "Scalix account" +msgstr "Mijn account" + +#: admin/groups/scalix/class_scalixGroup.inc:25 +#: personal/scalix/class_scalixAccount.inc:466 +msgid "Scalix Mail node" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:26 +#: personal/scalix/class_scalixAccount.inc:467 +#, fuzzy +msgid "Mailbox class" +msgstr "E-mail adres" + +#: admin/groups/scalix/class_scalixGroup.inc:27 +#: personal/scalix/class_scalixAccount.inc:468 +#, fuzzy +msgid "Server language" +msgstr "Servernaam" + +#: admin/groups/scalix/class_scalixGroup.inc:28 +#: personal/scalix/class_scalixAccount.inc:469 +msgid "Administrator" +msgstr "Beheerder" + +#: admin/groups/scalix/class_scalixGroup.inc:29 +#: personal/scalix/class_scalixAccount.inc:470 +#, fuzzy +msgid "Mailbox administrator" +msgstr "Map beheerders" + +#: admin/groups/scalix/class_scalixGroup.inc:30 +#: personal/scalix/class_scalixAccount.inc:471 +msgid "Hide user entry in Scalix" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:31 +#: personal/scalix/class_scalixAccount.inc:472 +#, fuzzy +msgid "Mailbox size limitations" +msgstr "Mail distributielijst" + +#: admin/groups/scalix/class_scalixGroup.inc:32 +#: personal/scalix/class_scalixAccount.inc:473 +#, fuzzy +msgid "Limit outbound" +msgstr "Profiel quota" + +#: admin/groups/scalix/class_scalixGroup.inc:33 +#: personal/scalix/class_scalixAccount.inc:474 +msgid "Limit inbound" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:34 +#: personal/scalix/class_scalixAccount.inc:475 +#, fuzzy +msgid "Notify user" +msgstr "Tel het aantal gebruikers" + +#: admin/groups/scalix/class_scalixGroup.inc:35 +#: personal/scalix/generic.tpl:105 personal/scalix/class_scalixAccount.inc:476 +#: personal/scalix/paste_generic.tpl:4 +#, fuzzy +msgid "Scalix email addresses" +msgstr "E-mail adres" + +#: personal/scalix/generic.tpl:4 +msgid "Generic" +msgstr "Algemeen" + +#: personal/scalix/generic.tpl:8 +msgid "Scalix mailnode" +msgstr "" + +#: personal/scalix/generic.tpl:17 +#, fuzzy +msgid "Salix mailbox class" +msgstr "E-mail grootte" + +#: personal/scalix/generic.tpl:21 +msgid "" +"Limited users can not make use of the group calendar functionality in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:30 +#, fuzzy +msgid "Scalix server language" +msgstr "Het opslaan van de server is mislukt" + +#: personal/scalix/generic.tpl:34 +msgid "Message catalog language for client." +msgstr "" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Select for admin capability." +msgstr "Selecteer sjabloon" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Scalix Administrator" +msgstr "Beheerder" + +#: personal/scalix/generic.tpl:56 +msgid "Select for mailbox admin capability." +msgstr "" + +#: personal/scalix/generic.tpl:56 +#, fuzzy +msgid "Scalix Mailbox Administrator" +msgstr "Beheerder" + +#: personal/scalix/generic.tpl:61 +#, fuzzy +msgid "Hide user entry from addressbook." +msgstr "Geef a.u.b. een geldige naam op" + +#: personal/scalix/generic.tpl:61 +msgid "Hide this user entry in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:70 +#, fuzzy +msgid "Limit mailbox size" +msgstr "E-mail grootte" + +#: personal/scalix/generic.tpl:73 +msgid "MB" +msgstr "MB" + +#: personal/scalix/generic.tpl:81 +msgid "As sanction on mailbox quota overuse, stop user from sending mail." +msgstr "" + +#: personal/scalix/generic.tpl:81 +#, fuzzy +msgid "Limit Outbound Mail" +msgstr "Profiel quota" + +#: personal/scalix/generic.tpl:86 +msgid "As sanction on mailbox quota overuse, stop user from receiving mail." +msgstr "" + +#: personal/scalix/generic.tpl:86 +msgid "Limit Inbound Mail" +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "As sanction on mailbox quota overuse, notify the user by eMail." +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "Notify User" +msgstr "" + +#: personal/scalix/generic.tpl:108 personal/scalix/paste_generic.tpl:6 +#, fuzzy +msgid "List of scalix email addresses" +msgstr "Lijst met alternatieve E-mail adressen" + +#: personal/scalix/class_scalixAccount.inc:16 +#, fuzzy +msgid "Scalix" +msgstr "Speciaal" + +#: personal/scalix/class_scalixAccount.inc:17 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/scalix/class_scalixAccount.inc:128 +#, fuzzy +msgid "This account has no scalix extensions." +msgstr "Dit account heeft geen Fax mogelijkheden." + +#: personal/scalix/class_scalixAccount.inc:137 +#, fuzzy +msgid "Remove scalix account" +msgstr "Verwijder POSIX account" + +#: personal/scalix/class_scalixAccount.inc:138 +#, fuzzy +msgid "" +"This account has scalix synchronization enabled. You can disable it by " +"clicking below." +msgstr "" +"Dit account heeft POSIX mogelijkheden ingeschakeld. U kunt deze uitschakelen " +"door de knop hieronder te gebruiken." + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "Create scalix account" +msgstr "POSIX account aanmaken" + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "" +"This account has scalix synchronization disabled. You can enable it by " +"clicking below." +msgstr "" +"Dit account heeft POSIX mogelijkheden uitgeschakeld. U kunt deze inschakelen " +"door de knop hieronder te gebruiken." + +#: personal/scalix/class_scalixAccount.inc:234 +#: personal/scalix/class_scalixAccount.inc:340 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:281 +#: personal/scalix/class_scalixAccount.inc:496 +#: personal/scalix/class_scalixAccount.inc:505 +msgid "Error" +msgstr "Fout" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:496 +#, fuzzy +msgid "Cannot add invalid mail address!" +msgstr "U probeert een ongeldig E-mail adres toe te voegen" + +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:281 +#, fuzzy +msgid "You have no permission to modify these addresses." +msgstr "U heeft geen toestemming om deze afdeling te verwijderen." + +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:505 +#, fuzzy, php-format +msgid "Cannot add mail address: it is already used by user '%s'." +msgstr "" +"Het adres dat u probeert toe te voegen wordt al gebruikt door gebruiker" + +#: personal/scalix/class_scalixAccount.inc:362 +msgid "Mailnode" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:365 +#, fuzzy +msgid "Scalix object" +msgstr "Mijn account" + +#: personal/scalix/class_scalixAccount.inc:374 +#, fuzzy +msgid "Email address" +msgstr "E-mail adres" + +#: personal/scalix/class_scalixAccount.inc:381 +#, fuzzy +msgid "Limit Mailbox" +msgstr "E-mail grootte" + +#: personal/scalix/class_scalixAccount.inc:460 +msgid "My account" +msgstr "Mijn account" + +#: personal/scalix/main.inc:126 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "" +"Gebruik de 'Bewerk' knop hieronder om de informatie in deze dialoog te " +"veranderen" + +#: personal/scalix/main.inc:139 +#, fuzzy +msgid "Scalix settings" +msgstr "E-mail instellingen" + +#~ msgid "Add" +#~ msgstr "Toevoegen" + +#~ msgid "Delete" +#~ msgstr "Verwijderen" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Edit" +#~ msgstr "Bewerken" + +#, fuzzy +#~ msgid "There is no scalix mailnode specified." +#~ msgstr "Er is geen E-mail server gespecificeerd." + +#, fuzzy +#~ msgid "Value in 'Limit Mailbox size' is not valid." +#~ msgstr "De waarde opgegeven bij 'Quota grootte' is niet geldig." diff --git a/trunk/gosa-plugins/scalix/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/scalix/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ae943c041 --- /dev/null +++ b/trunk/gosa-plugins/scalix/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,306 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/groups/scalix/class_scalixGroup.inc:15 +#: personal/scalix/class_scalixAccount.inc:456 +#, fuzzy +msgid "Scalix account" +msgstr "Moje konto " + +#: admin/groups/scalix/class_scalixGroup.inc:25 +#: personal/scalix/class_scalixAccount.inc:466 +msgid "Scalix Mail node" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:26 +#: personal/scalix/class_scalixAccount.inc:467 +#, fuzzy +msgid "Mailbox class" +msgstr "Adres email" + +#: admin/groups/scalix/class_scalixGroup.inc:27 +#: personal/scalix/class_scalixAccount.inc:468 +#, fuzzy +msgid "Server language" +msgstr "Nazwa serwera" + +#: admin/groups/scalix/class_scalixGroup.inc:28 +#: personal/scalix/class_scalixAccount.inc:469 +msgid "Administrator" +msgstr "Administrator" + +#: admin/groups/scalix/class_scalixGroup.inc:29 +#: personal/scalix/class_scalixAccount.inc:470 +#, fuzzy +msgid "Mailbox administrator" +msgstr "Administratorzy foldera" + +#: admin/groups/scalix/class_scalixGroup.inc:30 +#: personal/scalix/class_scalixAccount.inc:471 +msgid "Hide user entry in Scalix" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:31 +#: personal/scalix/class_scalixAccount.inc:472 +#, fuzzy +msgid "Mailbox size limitations" +msgstr "Ograniczenia rozmiaru wiadomości" + +#: admin/groups/scalix/class_scalixGroup.inc:32 +#: personal/scalix/class_scalixAccount.inc:473 +#, fuzzy +msgid "Limit outbound" +msgstr "Ograniczenie quota" + +#: admin/groups/scalix/class_scalixGroup.inc:33 +#: personal/scalix/class_scalixAccount.inc:474 +msgid "Limit inbound" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:34 +#: personal/scalix/class_scalixAccount.inc:475 +#, fuzzy +msgid "Notify user" +msgstr "Zlicz użytkowników" + +#: admin/groups/scalix/class_scalixGroup.inc:35 +#: personal/scalix/generic.tpl:105 personal/scalix/class_scalixAccount.inc:476 +#: personal/scalix/paste_generic.tpl:4 +#, fuzzy +msgid "Scalix email addresses" +msgstr "Adres email" + +#: personal/scalix/generic.tpl:4 +msgid "Generic" +msgstr "Ogólne" + +#: personal/scalix/generic.tpl:8 +msgid "Scalix mailnode" +msgstr "" + +#: personal/scalix/generic.tpl:17 +#, fuzzy +msgid "Salix mailbox class" +msgstr "Max rozmiar skrzynki" + +#: personal/scalix/generic.tpl:21 +msgid "" +"Limited users can not make use of the group calendar functionality in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:30 +#, fuzzy +msgid "Scalix server language" +msgstr "Zapisywanie serwera nieudane" + +#: personal/scalix/generic.tpl:34 +msgid "Message catalog language for client." +msgstr "" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Select for admin capability." +msgstr "Wybierz Szablon" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Scalix Administrator" +msgstr "Administrator" + +#: personal/scalix/generic.tpl:56 +msgid "Select for mailbox admin capability." +msgstr "" + +#: personal/scalix/generic.tpl:56 +#, fuzzy +msgid "Scalix Mailbox Administrator" +msgstr "Administrator" + +#: personal/scalix/generic.tpl:61 +#, fuzzy +msgid "Hide user entry from addressbook." +msgstr "Proszę podać prawidłową nazwę." + +#: personal/scalix/generic.tpl:61 +msgid "Hide this user entry in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:70 +#, fuzzy +msgid "Limit mailbox size" +msgstr "Max rozmiar skrzynki" + +#: personal/scalix/generic.tpl:73 +msgid "MB" +msgstr "MB" + +#: personal/scalix/generic.tpl:81 +msgid "As sanction on mailbox quota overuse, stop user from sending mail." +msgstr "" + +#: personal/scalix/generic.tpl:81 +#, fuzzy +msgid "Limit Outbound Mail" +msgstr "Ograniczenie quota" + +#: personal/scalix/generic.tpl:86 +msgid "As sanction on mailbox quota overuse, stop user from receiving mail." +msgstr "" + +#: personal/scalix/generic.tpl:86 +msgid "Limit Inbound Mail" +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "As sanction on mailbox quota overuse, notify the user by eMail." +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "Notify User" +msgstr "" + +#: personal/scalix/generic.tpl:108 personal/scalix/paste_generic.tpl:6 +#, fuzzy +msgid "List of scalix email addresses" +msgstr "Lista alternatywnych adresów pocztowych" + +#: personal/scalix/class_scalixAccount.inc:16 +#, fuzzy +msgid "Scalix" +msgstr "Specjalne" + +#: personal/scalix/class_scalixAccount.inc:17 +msgid "This does something" +msgstr "To robi coś" + +#: personal/scalix/class_scalixAccount.inc:128 +#, fuzzy +msgid "This account has no scalix extensions." +msgstr "To konto nie posiada rozszerzenia fax" + +#: personal/scalix/class_scalixAccount.inc:137 +#, fuzzy +msgid "Remove scalix account" +msgstr "Usuń konto posixowe" + +#: personal/scalix/class_scalixAccount.inc:138 +#, fuzzy +msgid "" +"This account has scalix synchronization enabled. You can disable it by " +"clicking below." +msgstr "" +"To konto posiada rozszerzenia posix. Można je wyłączyć klikająć poniżej." + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "Create scalix account" +msgstr "Utwórz konto posixowe" + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "" +"This account has scalix synchronization disabled. You can enable it by " +"clicking below." +msgstr "" +"To konto nie posiada rozszerzenia posix. Można je włączyć klikająć poniżej." + +#: personal/scalix/class_scalixAccount.inc:234 +#: personal/scalix/class_scalixAccount.inc:340 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:281 +#: personal/scalix/class_scalixAccount.inc:496 +#: personal/scalix/class_scalixAccount.inc:505 +msgid "Error" +msgstr "Błąd" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:496 +#, fuzzy +msgid "Cannot add invalid mail address!" +msgstr "Próbujesz dodać nieprawidłowy adres email" + +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:281 +#, fuzzy +msgid "You have no permission to modify these addresses." +msgstr "Brak uprawnień do usunięcia tego departamentu." + +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:505 +#, fuzzy, php-format +msgid "Cannot add mail address: it is already used by user '%s'." +msgstr "Adres który próbujesz dodać jest już używany" + +#: personal/scalix/class_scalixAccount.inc:362 +msgid "Mailnode" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:365 +#, fuzzy +msgid "Scalix object" +msgstr "Moje konto " + +#: personal/scalix/class_scalixAccount.inc:374 +#, fuzzy +msgid "Email address" +msgstr "Adres email" + +#: personal/scalix/class_scalixAccount.inc:381 +#, fuzzy +msgid "Limit Mailbox" +msgstr "Max rozmiar skrzynki" + +#: personal/scalix/class_scalixAccount.inc:460 +msgid "My account" +msgstr "Moje konto " + +#: personal/scalix/main.inc:126 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "Kliknij przycisk 'Edytuj' poniżej, aby zmienić informacje w tym oknie" + +#: personal/scalix/main.inc:139 +#, fuzzy +msgid "Scalix settings" +msgstr "Ustawienia pocztowe" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Delete" +#~ msgstr "Usuń" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Edit" +#~ msgstr "Edytuj" + +#, fuzzy +#~ msgid "There is no scalix mailnode specified." +#~ msgstr "Nie ma zdefiniowanych serwerów pocztowych" + +#, fuzzy +#~ msgid "Value in 'Limit Mailbox size' is not valid." +#~ msgstr "Wartość 'Rozmiar Quota' jest nieprawidłowa" diff --git a/trunk/gosa-plugins/scalix/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/scalix/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..e398c184a --- /dev/null +++ b/trunk/gosa-plugins/scalix/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,309 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/groups/scalix/class_scalixGroup.inc:15 +#: personal/scalix/class_scalixAccount.inc:456 +#, fuzzy +msgid "Scalix account" +msgstr "Моя учетная запись" + +#: admin/groups/scalix/class_scalixGroup.inc:25 +#: personal/scalix/class_scalixAccount.inc:466 +msgid "Scalix Mail node" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:26 +#: personal/scalix/class_scalixAccount.inc:467 +#, fuzzy +msgid "Mailbox class" +msgstr "MAC-адрес" + +#: admin/groups/scalix/class_scalixGroup.inc:27 +#: personal/scalix/class_scalixAccount.inc:468 +#, fuzzy +msgid "Server language" +msgstr "Имя сервера" + +#: admin/groups/scalix/class_scalixGroup.inc:28 +#: personal/scalix/class_scalixAccount.inc:469 +#, fuzzy +msgid "Administrator" +msgstr "Администрирование" + +#: admin/groups/scalix/class_scalixGroup.inc:29 +#: personal/scalix/class_scalixAccount.inc:470 +#, fuzzy +msgid "Mailbox administrator" +msgstr "Администраторы папки" + +#: admin/groups/scalix/class_scalixGroup.inc:30 +#: personal/scalix/class_scalixAccount.inc:471 +msgid "Hide user entry in Scalix" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:31 +#: personal/scalix/class_scalixAccount.inc:472 +#, fuzzy +msgid "Mailbox size limitations" +msgstr "Почтовые настройки пользователя" + +#: admin/groups/scalix/class_scalixGroup.inc:32 +#: personal/scalix/class_scalixAccount.inc:473 +#, fuzzy +msgid "Limit outbound" +msgstr "Путь к профилю" + +#: admin/groups/scalix/class_scalixGroup.inc:33 +#: personal/scalix/class_scalixAccount.inc:474 +msgid "Limit inbound" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:34 +#: personal/scalix/class_scalixAccount.inc:475 +#, fuzzy +msgid "Notify user" +msgstr "Страна" + +#: admin/groups/scalix/class_scalixGroup.inc:35 +#: personal/scalix/generic.tpl:105 personal/scalix/class_scalixAccount.inc:476 +#: personal/scalix/paste_generic.tpl:4 +#, fuzzy +msgid "Scalix email addresses" +msgstr "Основной адрес" + +#: personal/scalix/generic.tpl:4 +msgid "Generic" +msgstr "Общее" + +#: personal/scalix/generic.tpl:8 +msgid "Scalix mailnode" +msgstr "" + +#: personal/scalix/generic.tpl:17 +#, fuzzy +msgid "Salix mailbox class" +msgstr "Размер квоты" + +#: personal/scalix/generic.tpl:21 +msgid "" +"Limited users can not make use of the group calendar functionality in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:30 +#, fuzzy +msgid "Scalix server language" +msgstr "Показать подразделения" + +#: personal/scalix/generic.tpl:34 +msgid "Message catalog language for client." +msgstr "" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Select for admin capability." +msgstr "Создать шаблон" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Scalix Administrator" +msgstr "Администрирование" + +#: personal/scalix/generic.tpl:56 +msgid "Select for mailbox admin capability." +msgstr "" + +#: personal/scalix/generic.tpl:56 +#, fuzzy +msgid "Scalix Mailbox Administrator" +msgstr "Администрирование" + +#: personal/scalix/generic.tpl:61 +#, fuzzy +msgid "Hide user entry from addressbook." +msgstr "Введите корректный серийный номер" + +#: personal/scalix/generic.tpl:61 +msgid "Hide this user entry in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:70 +#, fuzzy +msgid "Limit mailbox size" +msgstr "Размер квоты" + +#: personal/scalix/generic.tpl:73 +msgid "MB" +msgstr "Мб" + +#: personal/scalix/generic.tpl:81 +msgid "As sanction on mailbox quota overuse, stop user from sending mail." +msgstr "" + +#: personal/scalix/generic.tpl:81 +#, fuzzy +msgid "Limit Outbound Mail" +msgstr "Путь к профилю" + +#: personal/scalix/generic.tpl:86 +msgid "As sanction on mailbox quota overuse, stop user from receiving mail." +msgstr "" + +#: personal/scalix/generic.tpl:86 +msgid "Limit Inbound Mail" +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "As sanction on mailbox quota overuse, notify the user by eMail." +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "Notify User" +msgstr "" + +#: personal/scalix/generic.tpl:108 personal/scalix/paste_generic.tpl:6 +#, fuzzy +msgid "List of scalix email addresses" +msgstr "Список альтернативных адресов эл. почты" + +#: personal/scalix/class_scalixAccount.inc:16 +#, fuzzy +msgid "Scalix" +msgstr "терминалы" + +#: personal/scalix/class_scalixAccount.inc:17 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/scalix/class_scalixAccount.inc:128 +#, fuzzy +msgid "This account has no scalix extensions." +msgstr "Для этой учетной записи нет расширений факса." + +#: personal/scalix/class_scalixAccount.inc:137 +#, fuzzy +msgid "Remove scalix account" +msgstr "Удалить учетную запись POSIX" + +#: personal/scalix/class_scalixAccount.inc:138 +#, fuzzy +msgid "" +"This account has scalix synchronization enabled. You can disable it by " +"clicking below." +msgstr "" +"В этой учетной записи используются атрибуты POSIX. Вы можете отключить их " +"использование, щелкнув ниже." + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "Create scalix account" +msgstr "Создать учетную запись POSIX" + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "" +"This account has scalix synchronization disabled. You can enable it by " +"clicking below." +msgstr "" +"В этой учетной записи не используются атрибуты POSIX. Вы можете использовать " +"их, щелкнув ниже." + +#: personal/scalix/class_scalixAccount.inc:234 +#: personal/scalix/class_scalixAccount.inc:340 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:281 +#: personal/scalix/class_scalixAccount.inc:496 +#: personal/scalix/class_scalixAccount.inc:505 +msgid "Error" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:496 +#, fuzzy +msgid "Cannot add invalid mail address!" +msgstr "Вы пытаетесь добавить некорректный адрес электронной почты " + +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:281 +#, fuzzy +msgid "You have no permission to modify these addresses." +msgstr "У вас недостаточно прав для удаления этого подразделения." + +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:505 +#, fuzzy, php-format +msgid "Cannot add mail address: it is already used by user '%s'." +msgstr "Добавляемый вами адрес уже используется пользователем" + +#: personal/scalix/class_scalixAccount.inc:362 +msgid "Mailnode" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:365 +#, fuzzy +msgid "Scalix object" +msgstr "Моя учетная запись" + +#: personal/scalix/class_scalixAccount.inc:374 +#, fuzzy +msgid "Email address" +msgstr "Основной адрес" + +#: personal/scalix/class_scalixAccount.inc:381 +#, fuzzy +msgid "Limit Mailbox" +msgstr "Размер квоты" + +#: personal/scalix/class_scalixAccount.inc:460 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/scalix/main.inc:126 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." + +#: personal/scalix/main.inc:139 +#, fuzzy +msgid "Scalix settings" +msgstr "Почтовые настройки пользователя" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Delete" +#~ msgstr "Удалить" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Edit" +#~ msgstr "Изменить" + +#, fuzzy +#~ msgid "There is no scalix mailnode specified." +#~ msgstr "Файл небыл загружен" + +#, fuzzy +#~ msgid "Value in 'Limit Mailbox size' is not valid." +#~ msgstr "Значение поля \"Квота\" некорректно." diff --git a/trunk/gosa-plugins/scalix/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/scalix/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..afd162c9b --- /dev/null +++ b/trunk/gosa-plugins/scalix/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,306 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/groups/scalix/class_scalixGroup.inc:15 +#: personal/scalix/class_scalixAccount.inc:456 +#, fuzzy +msgid "Scalix account" +msgstr "我的账号" + +#: admin/groups/scalix/class_scalixGroup.inc:25 +#: personal/scalix/class_scalixAccount.inc:466 +msgid "Scalix Mail node" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:26 +#: personal/scalix/class_scalixAccount.inc:467 +#, fuzzy +msgid "Mailbox class" +msgstr "邮件地址" + +#: admin/groups/scalix/class_scalixGroup.inc:27 +#: personal/scalix/class_scalixAccount.inc:468 +#, fuzzy +msgid "Server language" +msgstr "服务器名称" + +#: admin/groups/scalix/class_scalixGroup.inc:28 +#: personal/scalix/class_scalixAccount.inc:469 +msgid "Administrator" +msgstr "管理员" + +#: admin/groups/scalix/class_scalixGroup.inc:29 +#: personal/scalix/class_scalixAccount.inc:470 +#, fuzzy +msgid "Mailbox administrator" +msgstr "目录管理员" + +#: admin/groups/scalix/class_scalixGroup.inc:30 +#: personal/scalix/class_scalixAccount.inc:471 +msgid "Hide user entry in Scalix" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:31 +#: personal/scalix/class_scalixAccount.inc:472 +#, fuzzy +msgid "Mailbox size limitations" +msgstr "邮件传递列表" + +#: admin/groups/scalix/class_scalixGroup.inc:32 +#: personal/scalix/class_scalixAccount.inc:473 +#, fuzzy +msgid "Limit outbound" +msgstr "限制登录时间" + +#: admin/groups/scalix/class_scalixGroup.inc:33 +#: personal/scalix/class_scalixAccount.inc:474 +msgid "Limit inbound" +msgstr "" + +#: admin/groups/scalix/class_scalixGroup.inc:34 +#: personal/scalix/class_scalixAccount.inc:475 +#, fuzzy +msgid "Notify user" +msgstr "计算机" + +#: admin/groups/scalix/class_scalixGroup.inc:35 +#: personal/scalix/generic.tpl:105 personal/scalix/class_scalixAccount.inc:476 +#: personal/scalix/paste_generic.tpl:4 +#, fuzzy +msgid "Scalix email addresses" +msgstr "邮件地址" + +#: personal/scalix/generic.tpl:4 +msgid "Generic" +msgstr "通用配置" + +#: personal/scalix/generic.tpl:8 +msgid "Scalix mailnode" +msgstr "" + +#: personal/scalix/generic.tpl:17 +#, fuzzy +msgid "Salix mailbox class" +msgstr "邮件大小" + +#: personal/scalix/generic.tpl:21 +msgid "" +"Limited users can not make use of the group calendar functionality in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:30 +#, fuzzy +msgid "Scalix server language" +msgstr "Profile 服务器管理" + +#: personal/scalix/generic.tpl:34 +msgid "Message catalog language for client." +msgstr "" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Select for admin capability." +msgstr "选择模板" + +#: personal/scalix/generic.tpl:51 +#, fuzzy +msgid "Scalix Administrator" +msgstr "管理员" + +#: personal/scalix/generic.tpl:56 +msgid "Select for mailbox admin capability." +msgstr "" + +#: personal/scalix/generic.tpl:56 +#, fuzzy +msgid "Scalix Mailbox Administrator" +msgstr "管理员" + +#: personal/scalix/generic.tpl:61 +#, fuzzy +msgid "Hide user entry from addressbook." +msgstr "请输入一个邮件地址" + +#: personal/scalix/generic.tpl:61 +msgid "Hide this user entry in Scalix" +msgstr "" + +#: personal/scalix/generic.tpl:70 +#, fuzzy +msgid "Limit mailbox size" +msgstr "邮件大小" + +#: personal/scalix/generic.tpl:73 +msgid "MB" +msgstr "MB" + +#: personal/scalix/generic.tpl:81 +msgid "As sanction on mailbox quota overuse, stop user from sending mail." +msgstr "" + +#: personal/scalix/generic.tpl:81 +msgid "Limit Outbound Mail" +msgstr "" + +#: personal/scalix/generic.tpl:86 +msgid "As sanction on mailbox quota overuse, stop user from receiving mail." +msgstr "" + +#: personal/scalix/generic.tpl:86 +msgid "Limit Inbound Mail" +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "As sanction on mailbox quota overuse, notify the user by eMail." +msgstr "" + +#: personal/scalix/generic.tpl:91 +msgid "Notify User" +msgstr "" + +#: personal/scalix/generic.tpl:108 personal/scalix/paste_generic.tpl:6 +#, fuzzy +msgid "List of scalix email addresses" +msgstr "替代邮件地址列表" + +#: personal/scalix/class_scalixAccount.inc:16 +#, fuzzy +msgid "Scalix" +msgstr "特殊" + +#: personal/scalix/class_scalixAccount.inc:17 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/scalix/class_scalixAccount.inc:128 +#, fuzzy +msgid "This account has no scalix extensions." +msgstr "这个账号没有传真扩展。" + +#: personal/scalix/class_scalixAccount.inc:137 +#, fuzzy +msgid "Remove scalix account" +msgstr "删除 posix 账户" + +#: personal/scalix/class_scalixAccount.inc:138 +#, fuzzy +msgid "" +"This account has scalix synchronization enabled. You can disable it by " +"clicking below." +msgstr "这个账户已经启用 posix 功能。要禁用请点击下面按钮。" + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "Create scalix account" +msgstr "创建 posix 账户" + +#: personal/scalix/class_scalixAccount.inc:140 +#, fuzzy +msgid "" +"This account has scalix synchronization disabled. You can enable it by " +"clicking below." +msgstr "这个账户已经启用 posix 功能。要启用请点击下面按钮。" + +#: personal/scalix/class_scalixAccount.inc:234 +#: personal/scalix/class_scalixAccount.inc:340 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:281 +#: personal/scalix/class_scalixAccount.inc:496 +#: personal/scalix/class_scalixAccount.inc:505 +msgid "Error" +msgstr "错误" + +#: personal/scalix/class_scalixAccount.inc:257 +#: personal/scalix/class_scalixAccount.inc:496 +#, fuzzy +msgid "Cannot add invalid mail address!" +msgstr "您正在添加一个无效邮件地址" + +#: personal/scalix/class_scalixAccount.inc:264 +#: personal/scalix/class_scalixAccount.inc:281 +#, fuzzy +msgid "You have no permission to modify these addresses." +msgstr "您无权删除这个部门。" + +#: personal/scalix/class_scalixAccount.inc:271 +#: personal/scalix/class_scalixAccount.inc:505 +#, fuzzy, php-format +msgid "Cannot add mail address: it is already used by user '%s'." +msgstr "您正在添加的地址已经被用户使用" + +#: personal/scalix/class_scalixAccount.inc:362 +msgid "Mailnode" +msgstr "" + +#: personal/scalix/class_scalixAccount.inc:365 +#, fuzzy +msgid "Scalix object" +msgstr "我的账号" + +#: personal/scalix/class_scalixAccount.inc:374 +#, fuzzy +msgid "Email address" +msgstr "邮件地址" + +#: personal/scalix/class_scalixAccount.inc:381 +#, fuzzy +msgid "Limit Mailbox" +msgstr "邮件大小" + +#: personal/scalix/class_scalixAccount.inc:460 +msgid "My account" +msgstr "我的账号" + +#: personal/scalix/main.inc:126 +msgid "Click the 'Edit' button below to change informations in this dialog" +msgstr "点击下面的“编辑”按钮修改该对话框内的信息" + +#: personal/scalix/main.inc:139 +#, fuzzy +msgid "Scalix settings" +msgstr "邮件选项" + +#~ msgid "Add" +#~ msgstr "添加" + +#~ msgid "Delete" +#~ msgstr "删除" + +#~ msgid "Save" +#~ msgstr "保存" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Edit" +#~ msgstr "编辑" + +#, fuzzy +#~ msgid "There is no scalix mailnode specified." +#~ msgstr "没有定义邮件服务器。" + +#, fuzzy +#~ msgid "Value in 'Limit Mailbox size' is not valid." +#~ msgstr "'Quota 大小' 的值无效。" diff --git a/trunk/gosa-plugins/scalix/personal/scalix/class_scalixAccount.inc b/trunk/gosa-plugins/scalix/personal/scalix/class_scalixAccount.inc new file mode 100644 index 000000000..0f8cc811e --- /dev/null +++ b/trunk/gosa-plugins/scalix/personal/scalix/class_scalixAccount.inc @@ -0,0 +1,558 @@ +, + based on work by Cajus Pollmeier + \version 0.01 + \date 20.10.2006 + + This class provides the functionality to read and write all attributes + relevant for scalixAccounts from/to the LDAP. It does syntax checking + and displays the formulars required. + */ + +class scalixAccount extends plugin +{ + /* Definitions */ + var $plHeadline = "Scalix"; + var $plDescription= "This does something"; + + /* plugin specific values - scalixUserClass */ + /* MUST */ + var $scalixScalixObject= TRUE; //TRUE or FALSE + var $scalixMailnode= ""; + + /* Indicates whether we have a scalix group or a sclix user account + */ + var $scalixGroup = FALSE; + + /* INDIRECT MUST, scalix will complain if no email was specified */ + /* MAY */ + var $scalixAdministrator= FALSE; + var $scalixMailboxAdministrator = FALSE; + var $scalixServerLanguage= ""; + var $scalixEmailAddress= array(); + var $scalixLimitMailboxSize= ""; + var $scalixLimitOutboundMail= FALSE; + var $scalixLimitInboundMail= FALSE; + var $scalixLimitNotifyUser= FALSE; + var $scalixHideUserEntry= FALSE; + var $scalixMailboxClass= ""; + + var $mail =""; + var $uid =""; + var $default_permissions= "none"; + var $member_permissions= "post"; + var $members= array(); + var $admins= array(); + var $vacations= array(); + var $perms= array( "lrs" => "read", + "lrsp" => "post", + "lrsip" => "append", + "lrswipcd" => "write", + "lrswipcda" => "all" ); + + /* attribute list for save action */ + var $attributes = array("scalixMailnode", "scalixServerLanguage", "scalixLimitMailboxSize", "scalixMailboxClass"); + var $fakeBooleanAttributes= array("scalixAdministrator", "scalixMailboxAdministrator", "scalixLimitOutboundMail", + "scalixLimitInboundMail", "scalixLimitNotifyUser", "scalixHideUserEntry"); + var $objectclasses = array("scalixUserClass"); + + + /* constructor, if 'dn' is set, the node loads the given + 'dn' from LDAP */ + function scalixAccount (&$config, $dn= NULL) + { + /* dn shouldn't be NULL */ + if($dn === NULL){ + trigger_error("Initialising scalixAccount without valid dn."); + } + + /* Load bases attributes */ + plugin::plugin($config, $dn); + + /* Load attributes */ + if ($dn != "new"){ + + /* Set user id */ + if(isset($this->attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + + foreach ($this->fakeBooleanAttributes as $val){ + if (isset($this->attrs["$val"][0])&&$this->attrs["$val"][0]=="TRUE"){ + $this->$val = TRUE; + } else { + $this->$val = FALSE; + } + } + + /* Load attributes containing arrays */ + foreach (array("scalixEmailAddress") as $val){ + if (isset($this->attrs["$val"]["count"])){ + for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){ + array_push($this->$val, $this->attrs["$val"][$i]); + } + } + } + } + + /* Save initial account state */ + $this->initially_was_account= $this->is_account; + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Load templating engine */ + $smarty= get_smarty(); + $smarty->assign("scalixGroup",$this->scalixGroup); + $display= ""; + + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])){ + $this->is_account= !$this->is_account; + } + + $ReadOnly = !session::is_set("edit") && !isset($this->parent); + + /* Show main page */ + $mailboxClasses = array("", "LIMITED", "FULL"); + $serverLanguages= array("", "GERMAN", "ENGLISH"); + + /* Do we represent a valid account? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + _("This account has no scalix extensions.").""; + + $display.= back_to_main(); + return ($display); + } + + /* Show tab dialog headers */ + if ($this->parent !== NULL){ + if ($this->is_account){ + $display= $this->show_disable_header(_("Remove scalix account"), + _("This account has scalix synchronization enabled. You can disable it by clicking below.")); + } else { + $display= $this->show_enable_header(_("Create scalix account"), _("This account has scalix synchronization disabled. You can enable it by clicking below.")); + return ($display); + } + } + + /* Trigger forward add dialog? */ + if (isset($_POST['add_local_forwarder'])){ + $this->forward_dialog= TRUE; + $this->dialog= TRUE; + } + + /* Cancel forward add dialog? */ + if (isset($_POST['add_locals_cancel'])){ + $this->forward_dialog= FALSE; + $this->dialog= FALSE; + } + + + $smarty->assign("mailboxClasses", $mailboxClasses); + $smarty->assign("serverLanguages", $serverLanguages); + foreach(array("perms", "scalixScalixObject", "scalixMailnode", "scalixAdministrator", "scalixMailboxAdministrator", + "scalixServerLanguage", "scalixLimitMailboxSize", "scalixLimitOutboundMail", "scalixEmailAddress", + "scalixLimitInboundMail", "scalixLimitNotifyUser", "scalixHideUserEntry", "scalixMailboxClass") as $val){ + + $smarty->assign("$val", $this->$val); + $smarty->assign("$val"."ACL", $this->getacl($val, $ReadOnly)); + } + + /* Fill checkboxes */ + if ($this->scalixAdministrator) { + $smarty->assign("scalixAdministrator", "checked"); + } else { + $smarty->assign("scalixAdministrator", ""); + } + if ($this->scalixMailboxAdministrator) { + $smarty->assign("scalixMailboxAdministrator", "checked"); + } else { + $smarty->assign("scalixMailboxAdministrator", ""); + } + if ($this->scalixLimitOutboundMail) { + $smarty->assign("scalixLimitOutboundMail", "checked"); + } else { + $smarty->assign("scalixLimitOutboundMail", ""); + } + if ($this->scalixLimitInboundMail) { + $smarty->assign("scalixLimitInboundMail", "checked"); + } else { + $smarty->assign("scalixLimitInboundMail", ""); + } + if ($this->scalixLimitNotifyUser) { + $smarty->assign("scalixLimitNotifyUser", "checked"); + } else { + $smarty->assign("scalixLimitNotifyUser", ""); + } + if ($this->scalixHideUserEntry) { + $smarty->assign("scalixHideUserEntry", "checked"); + } else { + $smarty->assign("scalixHideUserEntry", ""); + } + + $display.= $smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + + /* remove object from parent */ + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + /* include global link_info */ + $ldap= $this->config->get_ldap_link(); + + /* Remove and write to LDAP */ + plugin::remove_from_parent(); + + /* Zero arrays */ + $this->attrs['scalixEmailAddress']= array(); + + /* Unset fake boolean attributes from entry */ + foreach ($this->fakeBooleanAttributes as $val){ + $this->attrs["$val"]= array(); + } + + /*unset scalixScalixObject*/ + $this->attrs['scalixScalixObject']=array(); + + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,$this->attributes, "Save"); + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove"); + } + + + /* Save data to object */ + function save_object() + { + if (isset($_POST['scalixTab'])){ + + /* Save ldap attributes */ + plugin::save_object(); + + /* Check if given value is not empty */ + if (isset($_POST['email_address']) && !empty($_POST['email_address'])){ + $valid= FALSE; + + /* Valid mail address */ + if( ($this->is_template && !tests::is_email($_POST['email_address'], TRUE)) || + (!$this->is_template && !tests::is_email($_POST['email_address'])) ){ + msg_dialog::display(_("Error"), _("Cannot add invalid mail address!"), ERROR_DIALOG); + }else{ + $valid = TRUE; + } + + /* Check write access */ + if(!$this->acl_is_writeable("scalixEmailAddress")){ + msg_dialog::display(_("Error"), _("You have no permission to modify these addresses."), ERROR_DIALOG); + }else{ + + /* Mail address already in use ? */ + if ($valid && ($user= $this->addEmail ($_POST['email_address'])) != ""){ + $ui= get_userinfo(); + if ($user != $ui->username){ + msg_dialog::display(_("Error"), sprintf(_("Cannot add mail address: it is already used by user '%s'."), $user), + ERROR_DIALOG); + } + } + } + } + + /* Delete email addresses */ + if (isset($_POST['delete_email']) && isset ($_POST['emails_list']) && $this->acl_is_writeable("scalixEmailAddress")){ + if(!$this->acl_is_writeable("scalixEmailAddress")){ + msg_dialog::display(_("Error"), _("You have no permission to modify these addresses."), ERROR_DIALOG); + }else{ + if (count($_POST['emails_list'])){ + $this->delEmail ($_POST['emails_list']); + } + } + } + + /* Save fakeBooleanAttributes*/ + foreach ($this->fakeBooleanAttributes as $val){ + if ($this->acl_is_writeable($val)) { + if( isset ($_POST["$val"])) { + $data = TRUE; + } else { + $data = FALSE; + } + if ($this->$val != $data){ + $this->is_modified= TRUE; + } + + $this->$val= $data; + } + } + } + } + + + /* Save data to LDAP, depending on is_account we save or delete */ + function save() + { + $ldap= $this->config->get_ldap_link(); + + /* Call parents save to prepare $this->attrs */ + plugin::save(); + + /* Save arrays */ + $this->attrs['scalixEmailAddress']= $this->scalixEmailAddress; + + /* Save boolean vars ... the scalix schema expects them as strings */ + if(!$this->scalixGroup){ + $this->attrs['scalixAdministrator'] = $this->scalixAdministrator?"TRUE":"FALSE"; + $this->attrs['scalixMailboxAdministrator'] = $this->scalixMailboxAdministrator?"TRUE":"FALSE"; + $this->attrs['scalixLimitOutboundMail'] = $this->scalixLimitOutboundMail?"TRUE":"FALSE"; + $this->attrs['scalixLimitInboundMail'] = $this->scalixLimitInboundMail?"TRUE":"FALSE"; + $this->attrs['scalixLimitNotifyUser'] = $this->scalixLimitNotifyUser?"TRUE":"FALSE"; + } + + $this->attrs['scalixScalixObject'] = $this->scalixScalixObject?"TRUE":"FALSE"; + $this->attrs['scalixHideUserEntry'] = $this->scalixHideUserEntry?"TRUE":"FALSE"; + + /* Remove Mailquota if = "" */ + if((isset($this->attrs['scalixLimitMailboxSize']))&&($this->attrs['scalixLimitMailboxSize']=="")) { + $this->attrs['scalixLimitMailboxSize']=array(); + } + + /* Save data to LDAP */ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify"); + } + } else { + $this->handle_post_events("add"); + } + + } + + /* Check formular input */ + function check() + { + $ldap= $this->config->get_ldap_link(); + + $message= array(); + + if(empty($this->scalixMailnode)){ + $message[]= msgPool::required(_("Mailnode")); + } + if(empty($this->scalixScalixObject)){ + $message[]= msgPool::required(_("Scalix object")); + } + + $ldap->cd($this->config->current['BASE']); + foreach($this->scalixEmailAddress as $k => $mail) { + $ldap->search ("(&(!(objectClass=gosaUserTemplate))(objectClass=scalixUserClass)(scalixEmailAddress=". + $mail.")(!(uid=".$this->uid."))(!(cn=".$this->uid.")))", array("uid")); + + if ($ldap->count() != 0){ + $message[]= msgPool::duplicated(_("Email address")); + } + } + + /* Check quota */ + if ($this->scalixLimitMailboxSize != '' && $this->acl_is_writeable("scalixLimitMailboxSize")){ + if (!is_numeric($this->scalixLimitMailboxSize)) { + $message[]= msgPool::invalid(_("Limit Mailbox")); + } else { + $this->scalixLimitMailboxSize= (int) $this->scalixLimitMailboxSize; + } + } + + return ($message); + } + + /* Adapt from template, using 'dn' */ + function adapt_from_template($dn, $skip= array()) + { + plugin::adapt_from_template($dn, $skip); + + foreach (array("scalixEmailAddress") as $val){ + + if (in_array($val, $skip)){ + continue; + } + + $this->$val= array(); + if (isset($this->attrs["$val"]["count"])){ + for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){ + $value= $this->attrs["$val"][$i]; + foreach (array("sn", "givenName", "uid") as $repl){ + if (preg_match("/%$repl/i", $value)){ + $value= preg_replace ("/%$repl/i", $this->parent->$repl, $value); + } + } + array_push($this->$val, strtolower(rewrite($value))); + } + } + } + $this->mail= strtolower(rewrite($this->mail)); + } + + function addEmail($address) + { + $ldap= $this->config->get_ldap_link(); + + $address= strtolower($address); + + /* Is this address already assigned in LDAP? */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=scalixUserClass)(|(scalixEmailAddress=$address)". + "(scalixEmailAddress=$address)))", array("uid")); + + if ($ldap->count() > 0){ + $attrs= $ldap->fetch (); + return ($attrs["uid"][0]); + } + + /* Add to list of alternates */ + if (!in_array($address, $this->scalixEmailAddress)){ + $this->scalixEmailAddress[]= $address; + $this->is_modified= TRUE; + } + + //sort ($this->scalixEmailAddress); //scalix makes the first email the destination, all others can receive + reset ($this->scalixEmailAddress); + + return (""); + } + + + function delEmail($addresses) + { + $this->scalixEmailAddress= array_remove_entries ($addresses, $this->scalixEmailAddress); + $this->is_modified= TRUE; + } + + + static function plInfo() + { + return (array( + "plDescription" => _("Scalix account"), + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 2, + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + + "scalixMailnode" => _("Scalix Mail node"), + "scalixMailboxClass" => _("Mailbox class"), + "scalixServerLanguage" => _("Server language"), + "scalixAdministrator" => _("Administrator"), + "scalixMailboxAdministrator"=> _("Mailbox administrator"), + "scalixHideUserEntry" => _("Hide user entry in Scalix"), + "scalixLimitMailboxSize" => _("Mailbox size limitations"), + "scalixLimitOutboundMail" => _("Limit outbound"), + "scalixLimitInboundMail" => _("Limit inbound"), + "scalixLimitNotifyUser" => _("Notify user"), + "scalixEmailAddress" => _("Scalix email addresses")) + + )); + } + + + function saveCopyDialog() + { + if (isset($_POST['scalixTab'])){ + + /* Add email addresses */ + if (isset($_POST['add_email'])){ + + /* Check if given value is not empty */ + if ($_POST['email_address'] != ""){ + $valid= FALSE; + + /* Valid mail address */ + if( ($this->is_template && !tests::is_email($_POST['email_address'], TRUE)) || + (!$this->is_template && !tests::is_email($_POST['email_address'])) ){ + msg_dialog::display(_("Error"), _("Cannot add invalid mail address!"), ERROR_DIALOG); + }else{ + $valid = TRUE; + } + + /* Mail address already in use ? */ + if ($valid && ($user= $this->addEmail ($_POST['email_address'])) != ""){ + $ui= get_userinfo(); + if ($user != $ui->username){ + msg_dialog::display(_("Error"), sprintf(_("Cannot add mail address: it is already used by user '%s'."), $user), ERROR_DIALOG); + } + } + } + } + + /* Delete email addresses */ + if (isset($_POST['delete_email']) && isset ($_POST['emails_list'])){ + if (count($_POST['emails_list'])){ + $this->delEmail ($_POST['emails_list']); + } + } + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + foreach ($this->fakeBooleanAttributes as $val){ + if (isset($source["$val"][0])&&$source["$val"][0]=="TRUE"){ + $this->$val = TRUE; + } else { + $this->$val = FALSE; + } + } + + /* Load attributes containing arrays */ + foreach (array("scalixEmailAddress") as $val){ + if (isset($source["$val"]["count"])){ + for ($i= 0; $i<$source["$val"]["count"]; $i++){ + array_push($this->$val, $source["$val"][$i]); + } + } + } + } + + + /* Create the posix dialog part for copy & paste */ + function getCopyDialog() + { + $smarty = get_smarty(); + $smarty->assign("scalixEmailAddress",$this->scalixEmailAddress); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler +?> diff --git a/trunk/gosa-plugins/scalix/personal/scalix/generic.tpl b/trunk/gosa-plugins/scalix/personal/scalix/generic.tpl new file mode 100644 index 000000000..0de1b069c --- /dev/null +++ b/trunk/gosa-plugins/scalix/personal/scalix/generic.tpl @@ -0,0 +1,133 @@ + + + + + + + + +
    +

     {t}Generic{/t}

    + + + + + + +{if !$scalixGroup} + + + + + + + + + + +{/if} +
    {$must} +{render acl=$scalixMailnodeACL} + +{/render} +
    +{render acl=$scalixMailboxClassACL} + +{/render} +
    +{render acl=$scalixServerLanguageACL} + +{/render} +
    + +{if !$scalixGroup} +

     

    + + + +
    +{render acl=$scalixAdministratorACL} + {t}Scalix Administrator{/t} +{/render} +
    +{render acl=$scalixMailboxAdministratorACL} + {t}Scalix Mailbox Administrator{/t} +{/render} +
    +{render acl=$scalixHideUserEntryACL} + {t}Hide this user entry in Scalix{/t} +{/render} +
    +
    + +

     

    + + + + + + + + + +
    +{render acl=$scalixLimitMailboxSizeACL} +  {t}MB{/t} +{/render} +
    +{render acl=$scalixLimitOutboundMailACL} + {t}Limit Outbound Mail{/t} +{/render} +
    +{render acl=$scalixLimitInboundMailACL} + {t}Limit Inbound Mail{/t} +{/render} +
    +{render acl=$scalixLimitNotifyUserACL} + {t}Notify User{/t} +{/render} +
    +
    +{/if} +
    +   + +

    +{render acl=$scalixEmailAddressACL} + +{/render} +
    +{render acl=$scalixEmailAddressACL} + +{/render} +{render acl=$scalixEmailAddressACL} +   +{/render} +{render acl=$scalixEmailAddressACL} + +{/render} +
    + + + + diff --git a/trunk/gosa-plugins/scalix/personal/scalix/main.inc b/trunk/gosa-plugins/scalix/personal/scalix/main.inc new file mode 100644 index 000000000..275ae4ce5 --- /dev/null +++ b/trunk/gosa-plugins/scalix/personal/scalix/main.inc @@ -0,0 +1,144 @@ +dn); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('scalixAccount'); + session::un_set('edit'); + +}else{ + + + /* Reset requested? */ + if (isset($_POST['edit_cancel'])){ + session::un_set ('edit'); + session::un_set ('scalixAccount'); + } + + /* Create mail object on demand */ + if (!session::is_set('scalixAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $scalixAccount= new scalixAccount ($config, $ui->dn); + $scalixAccount->enable_CSN_check(); + $scalixAccount->set_acl_base($ui->dn); + $scalixAccount->set_acl_category("users"); + session::set('scalixAccount',$scalixAccount); + } + $scalixAccount = session::get('scalixAccount'); + + /* save changes back to object */ + if (session::is_set('edit')){ + $scalixAccount->save_object (); + } + + /* Enter edit mode? */ + if (isset($_POST['edit'])){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + session::set('back_plugin',$plug); + session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); + $lock_msg = gen_locked_message ($username, $ui->dn); + + }else{ + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + session::set('edit',TRUE); + } + } + + /* save changes to LDAP and disable edit mode */ + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $scalixAccount->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $scalixAccount->save (); + gosa_log ("User/scalix object'".$ui->dn."' has been saved"); + $scalixAccount->acl= "#none#"; + del_lock ($ui->dn); + session::un_set ('edit'); + + /* Remove object */ + session::un_set ('scalixAccount'); + } else { + /* Errors found, show message */ + msg_dialog::displayChecks($message); + } + } + + /* Execute formular */ + $display= $scalixAccount->execute (); + + /* Store changes in session */ + if (session::is_set('edit')){ + session::set('scalixAccount',$scalixAccount); + } + + /* Show page footer depending on the mode */ + if ($scalixAccount->is_account){ + + $display.= "

    "; + + /* Are we in edit mode? */ + if (session::is_set('edit')){ + $display.= "\n"; + $display.= " "; + $display.= "\n"; + $info= "\"\" ".$ui->dn." "; + } else { + $info= "\"\" ".$ui->dn." "; + + if(preg_match("/r/",$ui->get_permissions($ui->dn,"users/scalixAccount"))){ + $info.= "\"\" ". + _("Click the 'Edit' button below to change informations in this dialog"); + + $display.= "\n"; + } + $display.= "\n"; + } + $display.= "

    \n"; + } + + + $info= ""; + + /* Page header*/ + $display= print_header(get_template_path('plugins/scalix/images/plugin.png'), _("Scalix settings"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/scalix/personal/scalix/paste_generic.tpl b/trunk/gosa-plugins/scalix/personal/scalix/paste_generic.tpl new file mode 100644 index 000000000..45700d367 --- /dev/null +++ b/trunk/gosa-plugins/scalix/personal/scalix/paste_generic.tpl @@ -0,0 +1,25 @@ + + + + +
    +

    + +
    + +   + +
    + + + + + diff --git a/trunk/gosa-plugins/scalix/plugin.dsc b/trunk/gosa-plugins/scalix/plugin.dsc new file mode 100644 index 000000000..b813ea6ce --- /dev/null +++ b/trunk/gosa-plugins/scalix/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = scalix +description = "Scalix account plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +conflicts = mail diff --git a/trunk/gosa-plugins/squid/README.squid b/trunk/gosa-plugins/squid/README.squid new file mode 100644 index 000000000..023f4281f --- /dev/null +++ b/trunk/gosa-plugins/squid/README.squid @@ -0,0 +1,17 @@ +goQuota.pl - run this script via cron (each 5-10 min for examle). It makes + cache file (quota.db) with traffic usage and user info from LDAP + +goQuotaView.pl - read collected data from quota.db and print it to + stdout in human readable format + +goSquid.pl - connect this script to squid + redirect_program /usr/local/sbin/goSquid + +goAgent.pl - one script to create home directories and mailboxes on + filesystem. run it via cron + +mkHash.pl - create hash file for black list + +At this time all scripts have no config file. Please, edit source to configure. + +Igor Muratov diff --git a/trunk/gosa-plugins/squid/contrib/goQuota.pl b/trunk/gosa-plugins/squid/contrib/goQuota.pl new file mode 100644 index 000000000..cceeffa90 --- /dev/null +++ b/trunk/gosa-plugins/squid/contrib/goQuota.pl @@ -0,0 +1,294 @@ +#!/usr/bin/perl +# +# Parse squid log and write current traffic usage by users into cache +# +# Igor Muratov +# +# $Id: goQuota.pl,v 1.4 2005/04/03 00:46:14 migor-guest Exp $ +# + +use strict; +use Time::Local; +use Net::LDAP; +use DB_File; +use POSIX qw(strftime); + +my $debug = 0; +$|=1; + +my $LDAP; +my $LDAP_HOST = "localhost"; +my $LDAP_PORT = "389"; +my $LDAP_BASE = "ou=People,dc=example,dc=com"; + +my $ACCESS_LOG = '/var/log/squid/access.log'; +my $CACHE_FILE = '/var/spool/squid/quota.db'; +my $DEFAULT_PERIOD = 'm'; +my $FORMAT = "A16 A5 S S L A5 L L L"; + +my %cache; +my @lines; + +sub timestamp +{ + return strftime("%a %b %X goQuota[$$]: ", localtime); +} + +sub anonBind +{ + my $ldap = Net::LDAP->new( $LDAP_HOST, port => $LDAP_PORT ); + if($ldap) + { + my $mesg = $ldap->bind(); + $mesg->code && warn timestamp, "Can't bind to ldap://$LDAP_HOST:$LDAP_PORT:", $mesg->error, "\n"; + return $ldap; + } + else + { + warn timestamp, "Can't connect to ldap://$LDAP_HOST:$LDAP_PORT\n"; + return undef; + } +} + +# Retrive users's data from LDAP +sub update_userinfo +{ + my $user = shift; + my $uid = $user->{uid}; + + return undef unless $LDAP; + + # User unknown or cache field is expired + my $result = $LDAP->search( base=>$LDAP_BASE, + filter=>"(&(objectClass=gosaProxyAccount)(uid=$uid))", + attrs=>[ + 'uid', + 'gosaProxyAcctFlags', + 'gosaProxyQuota', + 'gosaProxyQuotaPeriod', + 'gosaProxyWorkingStop', + 'gosaProxyWorkingStart', + 'modifyTimestamp' + ] + ); + $result->code && warn timestamp, "Failed to search: ", $result->error; + + # Get user's data + if($result->count) + { + my $entry = ($result->entries)[0]; + + $user->{uid} = ($entry->get_value('uid'))[0]; + $user->{modifyTimestamp} = ($entry->get_value('modifyTimestamp'))[0]; + $user->{gosaProxyWorkingStart} = ($entry->get_value('gosaProxyWorkingStart'))[0]; + $user->{gosaProxyWorkingStop} = ($entry->get_value('gosaProxyWorkingStop'))[0]; + $user->{gosaProxyAcctFlags} = ($entry->get_value('gosaProxyAcctFlags'))[0]; + + my ($quota, $unit) = ($entry->get_value('gosaProxyQuota'))[0] =~ /(\d+)(\S)/g; + $user->{gosaProxyQuota} = $quota; + $user->{gosaProxyQuota} *= 1024 if $unit =~ /[Kk]/; + $user->{gosaProxyQuota} *= 1048576 if $unit =~ /[Mm]/; + $user->{gosaProxyQuota} *= 1073741824 if $unit =~ /[Gg]/; + + $user->{gosaProxyQuotaPeriod} = ($entry->get_value('gosaProxyQuotaPeriod'))[0] || $DEFAULT_PERIOD; + # Return + warn timestamp, "User $uid found in LDAP.\n"; + return 1; + } else { + # Unknown user + warn timestamp, "User $uid does not exists in LDAP.\n"; + $user->{uid} = $uid; + $user->{gosaProxyAcctFlags} = '[FTB]'; + $user->{gosaProxyQuota} = 0; + $user->{gosaProxyQuotaPeriod} = 'y'; + return 0; + } +} + +sub get_update +{ + my $ts = shift; + my %update; + my $result = $LDAP->search( base=>$LDAP_BASE, + filter=>"(&(objectClass=gosaProxyAccount)(modifyTimestamp>=$ts))", + attrs=>'uid' + ); + + # Get user's data + if($result->count) + { + my $entry = ($result->entries)[0]; + $update{($entry->get_value('uid'))[0]}++; + } + return %update; +} + +# Check quota +sub update_quota +{ + my $user = shift; + my $uid = $user->{uid}; + + my $period = 0; + $period = 3600 if $user->{gosaProxyQuotaPeriod} eq 'h'; + $period = 86400 if $user->{gosaProxyQuotaPeriod} eq 'd'; + $period = 604800 if $user->{gosaProxyQuotaPeriod} eq 'w'; + $period = 2592000 if $user->{gosaProxyQuotaPeriod} eq 'm'; + $period = 220752000 if $user->{gosaProxyQuotaPeriod} eq 'y'; + + if($user->{lastRequest} - $user->{firstRequest} > $period) + { + if($user->{trafficUsage} > $user->{gosaProxyQuota}) + { + warn timestamp, "Reduce quota for $uid while $period seconds.\n"; + $user->{trafficUsage} -= $user->{gosaProxyQuota}; + $user->{firstRequest} += $period; + } + else + { + warn timestamp, "Restart quota for $uid.\n"; + $user->{trafficUsage} = 0; + $user->{firstRequest} = $user->{lastRequest}; + } + } +} + +sub dump_data +{ + my $user = shift; + print "User: ",$user->{uid},"\n"; + print "\t",$user->{modifyTimestamp},"\n"; + print "\t",$user->{gosaProxyAcctFlags},"\n"; + print "\t",$user->{gosaProxyWorkingStart},"\n"; + print "\t",$user->{gosaProxyWorkingStop},"\n"; + print "\t",$user->{gosaProxyQuota},"\n"; + print "\t",$user->{gosaProxyQuotaPeriod},"\n"; + print "\t",$user->{trafficUsage},"\n"; + print "\t",$user->{firstRequest},"\n"; + print "\t",$user->{lastRequest},"\n"; +} + +sub unpack_user +{ + my $uid = shift; + my $user; + + $user->{uid} = $uid; + ( + $user->{modifyTimestamp}, + $user->{gosaProxyAcctFlags}, + $user->{gosaProxyWorkingStart}, + $user->{gosaProxyWorkingStop}, + $user->{gosaProxyQuota}, + $user->{gosaProxyQuotaPeriod}, + $user->{trafficUsage}, + $user->{firstRequest}, + $user->{lastRequest} + ) = unpack($FORMAT, $cache{$uid}); + + return $user; +} + +sub pack_user +{ + my $user = shift; + + $cache{$user->{uid}} = pack( + $FORMAT, + $user->{modifyTimestamp}, + $user->{gosaProxyAcctFlags}, + $user->{gosaProxyWorkingStart}, + $user->{gosaProxyWorkingStop}, + $user->{gosaProxyQuota}, + $user->{gosaProxyQuotaPeriod}, + $user->{trafficUsage}, + $user->{firstRequest}, + $user->{lastRequest} + ); +} + +#-------------------------------------- +$LDAP = anonBind or die timestamp, "No lines processed.\n"; + +# This is a first time parsing? +my $firstStart = 1; +$firstStart = 0 if -e $CACHE_FILE; + +# Open log file and cache +my $cache = tie(%cache, 'DB_File', $CACHE_FILE, O_CREAT|O_RDWR); +my $log = tie(@lines, 'DB_File', $ACCESS_LOG, O_RDWR, 0640, $DB_RECNO) + or die "Cannot open file $ACCESS_LOG: $!\n"; + +# Mark users which updated in LDAP +my %updated; +if(! $firstStart) +{ + my $ts = strftime("%Y%m%d%H%M%SZ", gmtime); + %updated = get_update($cache{MODIFY_TIMESTAMP} || "19700101000000Z"); + + my @count = %updated; + $cache{MODIFY_TIMESTAMP} = $ts if $#count; + + foreach my $u (keys %updated) + { + warn timestamp, "User $u has been updated in LDAP. Refresh data.\n"; + my $user = unpack_user($u); + update_userinfo($user); + pack_user($user); + } +} + +# Processing log file +my $index = $cache{TIMESTAMP} < (split / +/, $lines[0])[0] + ? 0 : $cache{STRING_NUMBER}; +warn timestamp, "Cache update start at line $index.\n"; +while($lines[$index]) +{ + # There are array named lines with elements + # 0 - line timestamp + # 1 - ?? (unused) + # 2 - client's IP (unused) + # 3 - squid's cache status TEXT_CODE/num_code (unused) + # 4 - object size in bytes + # 5 - metod (unused) + # 6 - URL (unused) + # 7 - username + # 8 - load status TYPE/source + # 9 - mime type (unused) + my @line = split / +/, $lines[$index++]; + + # Skip line if have no incoming traffic + (my $errcode = $line[8]) =~ s/\/\S+//; + next if $errcode eq "NONE"; + + # Get data from cache + (my $uid = $line[7]) =~ s/^-$/anonymous/; + my $user = unpack_user($uid); + + # Update user info from LDAP if need + if ( !exists($cache{$uid}) ) + { + warn timestamp, "User $uid is not in cache. Go to search LDAP.\n"; + update_userinfo($user); + } + + # Update traffic info + $user->{trafficUsage} += $line[4]; + $user->{firstRequest} |= $line[0]; + $user->{lastRequest} = $line[0]; + + update_quota($user); + pack_user($user); + + dump_data($user) if $debug; + + $cache{TIMESTAMP} = $user->{lastRequest}; +} + +warn timestamp, $index - $cache{STRING_NUMBER}, " new lines processed.\n"; +$cache{STRING_NUMBER} = $index; + +$LDAP->unbind; +untie @lines; +untie %cache; + diff --git a/trunk/gosa-plugins/squid/contrib/goQuotaView.pl b/trunk/gosa-plugins/squid/contrib/goQuotaView.pl new file mode 100644 index 000000000..7dd14972d --- /dev/null +++ b/trunk/gosa-plugins/squid/contrib/goQuotaView.pl @@ -0,0 +1,91 @@ +#!/usr/bin/perl +# +# Show user info from cache +# +# Igor Muratov +# +# $Id: goQuotaView.pl,v 1.2 2005/04/03 00:46:14 migor-guest Exp $ +# + +use strict; +use DB_File; + +my $CACHE_FILE = '/var/spool/squid/quota.db'; +my $FORMAT = "A16 A5 S S L A5 L L L"; + +my %cache; + +sub min2time +{ + my $min = shift; + return sprintf("%2d:%02d",$min/60,$min%60); +} + +sub show_user +{ + my $uid = shift; + + my ( + $modifyTimestamp, $gosaProxyAcctFlags, $gosaProxyWorkingStart, + $gosaProxyWorkingStop, $gosaProxyQuota, $gosaProxyQuotaPeriod, + $trafficUsage, $firstRequest, $lastRequest + ) = unpack($FORMAT, $cache{$uid}); + + my ($ts_Y, $ts_M, $ts_D, $ts_h, $ts_m, $ts_s) + = $modifyTimestamp =~ /(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/g; + my $ts = "$ts_D\.$ts_M\.$ts_Y $ts_h:$ts_m:$ts_s GMT"; + + $gosaProxyAcctFlags =~ s/[\[\]]//g; + $gosaProxyAcctFlags =~ s/F/unwanted content, /g; + $gosaProxyAcctFlags =~ s/T/work time, /g; + $gosaProxyAcctFlags =~ s/B/traffic/g; + + $gosaProxyQuotaPeriod =~ s/h/hour/; + $gosaProxyQuotaPeriod =~ s/d/day/; + $gosaProxyQuotaPeriod =~ s/w/week/; + $gosaProxyQuotaPeriod =~ s/m/month/; + $gosaProxyQuotaPeriod =~ s/y/year/; + + $firstRequest = localtime($firstRequest); + $lastRequest = localtime($lastRequest); + + printf "User: %s + LDAP modify timestamp\t%s + Limited by\t\t%s + Work time from\t%s + Work time to\t\t%s + Quota period\t\tOne %s + Traffic quota size\t%s bytes + Current traffic usage\t%s bytes + First request time\t%s + Last request time\t%s\n", + $uid, $ts, $gosaProxyAcctFlags, min2time($gosaProxyWorkingStart), + min2time($gosaProxyWorkingStop), $gosaProxyQuotaPeriod, $gosaProxyQuota, + $trafficUsage, $firstRequest, $lastRequest; +} + +#------------------------ +tie(%cache, 'DB_File', $CACHE_FILE, O_CREAT|O_RDWR); + +if($ARGV[0]) +{ + show_user($ARGV[0]); +} +else +{ + print "eee\n"; + printf "LAST STRING: %d\nLAST CACHE UPDATE: %s\nLDAP LAST CHANGE: %s\n", + $cache{STRING_NUMBER}, + time2str("%d.%m.%Y %H:%M:%S",$cache{TIMESTAMP}), + $cache{MODIFY_TIMESTAMP}; + + foreach my $user (keys %cache) + { + next if $user eq "TIMESTAMP"; + next if $user eq "STRING_NUMBER"; + next if $user eq "MODIFY_TIMESTAMP"; + show_user($user); + } +} + +untie %cache; diff --git a/trunk/gosa-plugins/squid/contrib/goSquid.pl b/trunk/gosa-plugins/squid/contrib/goSquid.pl new file mode 100644 index 000000000..b91db163b --- /dev/null +++ b/trunk/gosa-plugins/squid/contrib/goSquid.pl @@ -0,0 +1,136 @@ +#!/usr/bin/perl +# +# Squid redirect programm for GOsa project +# +# Igor Muratov +# +# $Id: goSquid.pl,v 1.3 2005/04/03 00:46:14 migor-guest Exp $ +# + +use strict; +use POSIX qw(strftime); +use Time::Local; +use DB_File; + +my $debug = 0; +$|=1; + +my $DEFAULT_URL = "http://www.squid-cache.org/Squidlogo2.gif"; +my $black_list = '/var/spool/squid/domains.db'; +my $cache_file = '/var/spool/squid/quota.db'; +my $format = "A16 A5 S S L A5 L L L"; + +my %cache; +my %blacklist; + +sub timestamp +{ + return strftime("%a %b %X goSquid[$$]: ", localtime); +} + +# Check url in our blacklist +sub unwanted_content +{ + my $url = shift; + my $host = (split(/\//, $url))[2]; + + return 1 if exists($blacklist{$host}) and $blacklist{$host} > 0; + return undef; +} + +# Check work time limit +sub work_time +{ + my $user = shift; + my ($min,$hour) = (localtime)[1,2]; + my $time = $hour * 60 + $min; + + return 1 if $user->{gosaProxyWorkingStart} < $time and $user->{gosaProxyWorkingStop} > $time; + return undef; +} + +sub quota_exceed +{ + my $user = shift; + + return 1 if $user->{trafficUsage} > $user->{gosaProxyQuota}; + return undef; +} + +sub check_access +{ + my ($user, $url) = @_; + + $user->{timed} = 0; + $user->{quoted} = 0; + $user->{filtered} = 0; + + if($user->{gosaProxyAcctFlags} =~ m/[F]/) + { + # Filter unwanted content + $user->{filtered} = 1 if unwanted_content($url); + } + if($user->{gosaProxyAcctFlags} =~ m/[T]/) + { + # Filter unwanted content during working hours only + $user->{timed} = 1 if work_time($user); + } + if($user->{gosaProxyAcctFlags} =~ m/B/) + { + $user->{quoted} = 1 if quota_exceed($user); + } +} + +#-------------------------------------- +while (<>) { + my ($url, $addr, $uid, $method) = split; + my $time = timelocal(localtime); + tie(%blacklist, 'DB_File', $black_list, O_RDONLY); + tie(%cache, 'DB_File', $cache_file, O_RDONLY); + + if( exists($cache{$uid}) ) + { + my $user; + $user->{uid} = $uid; + ( + $user->{modifyTimestamp}, + $user->{gosaProxyAcctFlags}, + $user->{gosaProxyWorkingStart}, + $user->{gosaProxyWorkingStop}, + $user->{gosaProxyQuota}, + $user->{gosaProxyQuotaPeriod}, + $user->{trafficUsage}, + $user->{firstRequest}, + $user->{lastRequest} + ) = unpack($format, $cache{$uid}); + + check_access($user, $url); + + if($user->{'disabled'}) + { + warn timestamp, "Access denied for unknown user $uid\n"; + } + elsif($user->{'timed'}) + { + warn timestamp, "Access denied by worktime for $uid\n"; + } + elsif($user->{'quoted'}) + { + warn timestamp, "Access denied by quota for $uid\n"; + } + elsif($user->{'filtered'}) + { + warn timestamp, "Content $url filtered for $uid\n"; + } + else + { + print "$url\n"; + next; + } + } + + untie %blacklist; + untie %cache; + + print "$DEFAULT_URL\n"; +} diff --git a/trunk/gosa-plugins/squid/contrib/mkHash.pl b/trunk/gosa-plugins/squid/contrib/mkHash.pl new file mode 100644 index 000000000..84f4bd13c --- /dev/null +++ b/trunk/gosa-plugins/squid/contrib/mkHash.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl + +use strict; +use DB_File; + +my $db = "/var/spool/squid/domains.db"; +my %db; + +tie(%db, 'DB_File', $db); + +while(<>) +{ + chomp; + unless(exists($db{$_})) + { + $db{$_} = 1; + } +} + +untie %db; diff --git a/trunk/gosa-plugins/squid/help/guide.xml b/trunk/gosa-plugins/squid/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/squid/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/squid/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..7413f85b4 --- /dev/null +++ b/trunk/gosa-plugins/squid/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,109 @@ +# translation of messages.po to Deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-04-03 15:59+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: personal/connectivity/squid/class_proxyAccount.inc:5 +#: personal/connectivity/squid/class_proxyAccount.inc:330 +msgid "Proxy" +msgstr "Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:6 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "KB" +msgstr "KB" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "MB" +msgstr "MB" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "GB" +msgstr "GB" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "hour" +msgstr "Stunde" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "day" +msgstr "Tag" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "week" +msgstr "Woche" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "month" +msgstr "Monat" + +#: personal/connectivity/squid/class_proxyAccount.inc:183 +#: personal/connectivity/squid/class_proxyAccount.inc:309 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/connectivity/squid/class_proxyAccount.inc:204 +#: personal/connectivity/squid/class_proxyAccount.inc:206 +msgid "Quota Setting" +msgstr "Kontingent-Einstellung" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#: personal/connectivity/squid/proxy.tpl:37 +msgid "Proxy account" +msgstr "Proxy Konto" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/squid/class_proxyAccount.inc:335 +msgid "My account" +msgstr "Mein Konto" + +#: personal/connectivity/squid/class_proxyAccount.inc:340 +msgid "Filter unwanted content" +msgstr "Filtere ungewünschten Inhalt" + +#: personal/connectivity/squid/class_proxyAccount.inc:341 +msgid "Limit proxy access" +msgstr "Beschränke Proxy-Zugriff" + +#: personal/connectivity/squid/class_proxyAccount.inc:342 +#: personal/connectivity/squid/proxy.tpl:100 +msgid "Restrict proxy usage by quota" +msgstr "Proxynutzung durch Kontingent einschränken" + +#: personal/connectivity/squid/proxy.tpl:48 +msgid "Filter unwanted content (i.e. pornographic or violence related)" +msgstr "" +"Filtern von unerwünschten Inhalten (z.B. pornografische oder gewalttätige " +"Inhalte)" + +#: personal/connectivity/squid/proxy.tpl:58 +msgid "Limit proxy access to working time" +msgstr "Inhaltsfilterung nur während der Arbeitszeit" + +#: personal/connectivity/squid/proxy.tpl:115 +msgid "per" +msgstr "pro" diff --git a/trunk/gosa-plugins/squid/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/squid/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..74707f0a2 --- /dev/null +++ b/trunk/gosa-plugins/squid/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,116 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/connectivity/squid/class_proxyAccount.inc:5 +#: personal/connectivity/squid/class_proxyAccount.inc:330 +msgid "Proxy" +msgstr "Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:6 +msgid "This does something" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "KB" +msgstr "Kb" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "MB" +msgstr "Mb" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "GB" +msgstr "Gb" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "hour" +msgstr "hora" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "day" +msgstr "día" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "week" +msgstr "semana" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "month" +msgstr "mes" + +#: personal/connectivity/squid/class_proxyAccount.inc:183 +#: personal/connectivity/squid/class_proxyAccount.inc:309 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/connectivity/squid/class_proxyAccount.inc:204 +#: personal/connectivity/squid/class_proxyAccount.inc:206 +msgid "Quota Setting" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#: personal/connectivity/squid/proxy.tpl:37 +msgid "Proxy account" +msgstr "Cuenta Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/squid/class_proxyAccount.inc:335 +msgid "My account" +msgstr "Mi cuenta" + +#: personal/connectivity/squid/class_proxyAccount.inc:340 +msgid "Filter unwanted content" +msgstr "Filtrar contenido no requerido" + +#: personal/connectivity/squid/class_proxyAccount.inc:341 +msgid "Limit proxy access" +msgstr "Limitar acceso al Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:342 +#: personal/connectivity/squid/proxy.tpl:100 +msgid "Restrict proxy usage by quota" +msgstr "Restringir el uso del proxy con cuotas" + +#: personal/connectivity/squid/proxy.tpl:48 +msgid "Filter unwanted content (i.e. pornographic or violence related)" +msgstr "" + +#: personal/connectivity/squid/proxy.tpl:58 +msgid "Limit proxy access to working time" +msgstr "" + +#: personal/connectivity/squid/proxy.tpl:115 +msgid "per" +msgstr "" + +#~ msgid "Removing of user/proxy account with dn '%s' failed." +#~ msgstr "Se ha fallado al eliminar la cuenta de usuario/Proxy con dn '%s'." + +#~ msgid "Saving of user/proxy account with dn '%s' failed." +#~ msgstr "Ha fallado la grabación de la cuenta de usuario/proxy con dn '%s'." + +#~ msgid "Numerical value for Quota Setting is empty." +#~ msgstr "El valor numérico para cuota esta vacío." + +#~ msgid "Numerical value for Quota Setting is not valid." +#~ msgstr "El valor numérico para cuota no es valido." diff --git a/trunk/gosa-plugins/squid/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/squid/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..15dde0588 --- /dev/null +++ b/trunk/gosa-plugins/squid/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,100 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2008-06-08 15:51+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/connectivity/squid/class_proxyAccount.inc:5 +#: personal/connectivity/squid/class_proxyAccount.inc:330 +msgid "Proxy" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:6 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "KB" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "MB" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "GB" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "hour" +msgstr "heure" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "day" +msgstr "jour" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "week" +msgstr "semaine" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "month" +msgstr "mois" + +#: personal/connectivity/squid/class_proxyAccount.inc:183 +#: personal/connectivity/squid/class_proxyAccount.inc:309 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/connectivity/squid/class_proxyAccount.inc:204 +#: personal/connectivity/squid/class_proxyAccount.inc:206 +msgid "Quota Setting" +msgstr "Paramètres du quota" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#: personal/connectivity/squid/proxy.tpl:37 +msgid "Proxy account" +msgstr "Compte Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +msgid "Connectivity addon" +msgstr "Connectivité" + +#: personal/connectivity/squid/class_proxyAccount.inc:335 +msgid "My account" +msgstr "Mon Compte" + +#: personal/connectivity/squid/class_proxyAccount.inc:340 +msgid "Filter unwanted content" +msgstr "Filtrer le contenu non désiré" + +#: personal/connectivity/squid/class_proxyAccount.inc:341 +msgid "Limit proxy access" +msgstr "Accès au proxy autorisé durant la plage horaire suivante" + +#: personal/connectivity/squid/class_proxyAccount.inc:342 +#: personal/connectivity/squid/proxy.tpl:100 +msgid "Restrict proxy usage by quota" +msgstr "Restreindre la quantité de données téléchargeables par quota" + +#: personal/connectivity/squid/proxy.tpl:48 +msgid "Filter unwanted content (i.e. pornographic or violence related)" +msgstr "Filtrer le contenu non désiré (i.e. pornographique ou violent)" + +#: personal/connectivity/squid/proxy.tpl:58 +msgid "Limit proxy access to working time" +msgstr "Accès au proxy autorisé durant la plage horaire suivante" + +#: personal/connectivity/squid/proxy.tpl:115 +msgid "per" +msgstr "par" diff --git a/trunk/gosa-plugins/squid/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/squid/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..cbf340166 --- /dev/null +++ b/trunk/gosa-plugins/squid/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,116 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/connectivity/squid/class_proxyAccount.inc:5 +#: personal/connectivity/squid/class_proxyAccount.inc:330 +msgid "Proxy" +msgstr "Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:6 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "KB" +msgstr "KB" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "MB" +msgstr "Mb" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "GB" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "hour" +msgstr "ora" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "day" +msgstr "giorno" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "week" +msgstr "settimana" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "month" +msgstr "mese" + +#: personal/connectivity/squid/class_proxyAccount.inc:183 +#: personal/connectivity/squid/class_proxyAccount.inc:309 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/connectivity/squid/class_proxyAccount.inc:204 +#: personal/connectivity/squid/class_proxyAccount.inc:206 +msgid "Quota Setting" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#: personal/connectivity/squid/proxy.tpl:37 +msgid "Proxy account" +msgstr "Estenzioni Proxy Internet" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/squid/class_proxyAccount.inc:335 +msgid "My account" +msgstr "Identità" + +#: personal/connectivity/squid/class_proxyAccount.inc:340 +msgid "Filter unwanted content" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:341 +#, fuzzy +msgid "Limit proxy access" +msgstr "Limita l'accesso a Internet alle ore lavorative" + +#: personal/connectivity/squid/class_proxyAccount.inc:342 +#: personal/connectivity/squid/proxy.tpl:100 +msgid "Restrict proxy usage by quota" +msgstr "Restringi la quota d'uso di Internet" + +#: personal/connectivity/squid/proxy.tpl:48 +msgid "Filter unwanted content (i.e. pornographic or violence related)" +msgstr "Filtra il contenuto non desiderato (p.e. pornografico o violento)" + +#: personal/connectivity/squid/proxy.tpl:58 +msgid "Limit proxy access to working time" +msgstr "Limita l'accesso a Internet alle ore lavorative" + +#: personal/connectivity/squid/proxy.tpl:115 +msgid "per" +msgstr "per" + +#, fuzzy +#~ msgid "Removing of user/proxy account with dn '%s' failed." +#~ msgstr "Elimina estensioni Unix" + +#, fuzzy +#~ msgid "Saving of user/proxy account with dn '%s' failed." +#~ msgstr "Estenzioni Proxy Internet" + +#, fuzzy +#~ msgid "Numerical value for Quota Setting is not valid." +#~ msgstr "Il valore di 'Dimensione quota' non è valido" diff --git a/trunk/gosa-plugins/squid/locale/messages.po b/trunk/gosa-plugins/squid/locale/messages.po new file mode 100644 index 000000000..ab1df4b1d --- /dev/null +++ b/trunk/gosa-plugins/squid/locale/messages.po @@ -0,0 +1,102 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/squid/class_proxyAccount.inc:5 +#: personal/connectivity/squid/class_proxyAccount.inc:330 +msgid "Proxy" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:6 +msgid "This does something" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "KB" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "MB" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "GB" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "hour" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "day" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "week" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "month" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:183 +#: personal/connectivity/squid/class_proxyAccount.inc:309 +msgid "LDAP error" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:204 +#: personal/connectivity/squid/class_proxyAccount.inc:206 +msgid "Quota Setting" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#: personal/connectivity/squid/proxy.tpl:37 +msgid "Proxy account" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:335 +msgid "My account" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:340 +msgid "Filter unwanted content" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:341 +msgid "Limit proxy access" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:342 +#: personal/connectivity/squid/proxy.tpl:100 +msgid "Restrict proxy usage by quota" +msgstr "" + +#: personal/connectivity/squid/proxy.tpl:48 +msgid "Filter unwanted content (i.e. pornographic or violence related)" +msgstr "" + +#: personal/connectivity/squid/proxy.tpl:58 +msgid "Limit proxy access to working time" +msgstr "" + +#: personal/connectivity/squid/proxy.tpl:115 +msgid "per" +msgstr "" diff --git a/trunk/gosa-plugins/squid/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/squid/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..3f008b03f --- /dev/null +++ b/trunk/gosa-plugins/squid/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,125 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/squid/class_proxyAccount.inc:5 +#: personal/connectivity/squid/class_proxyAccount.inc:330 +msgid "Proxy" +msgstr "Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:6 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "KB" +msgstr "KB" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "MB" +msgstr "MB" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "GB" +msgstr "GB" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "hour" +msgstr "uur" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "day" +msgstr "dag" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "week" +msgstr "week" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "month" +msgstr "maand" + +#: personal/connectivity/squid/class_proxyAccount.inc:183 +#: personal/connectivity/squid/class_proxyAccount.inc:309 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/connectivity/squid/class_proxyAccount.inc:204 +#: personal/connectivity/squid/class_proxyAccount.inc:206 +msgid "Quota Setting" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#: personal/connectivity/squid/proxy.tpl:37 +msgid "Proxy account" +msgstr "Proxy account" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#, fuzzy +msgid "Connectivity addon" +msgstr "Verbindingen" + +#: personal/connectivity/squid/class_proxyAccount.inc:335 +msgid "My account" +msgstr "Mijn account" + +#: personal/connectivity/squid/class_proxyAccount.inc:340 +msgid "Filter unwanted content" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:341 +#, fuzzy +msgid "Limit proxy access" +msgstr "Beperk proxy gebruik tot tijd" + +#: personal/connectivity/squid/class_proxyAccount.inc:342 +#: personal/connectivity/squid/proxy.tpl:100 +msgid "Restrict proxy usage by quota" +msgstr "Beperk proxy gebruik met quota" + +#: personal/connectivity/squid/proxy.tpl:48 +msgid "Filter unwanted content (i.e. pornographic or violence related)" +msgstr "" +"Filter ongewilde inhoud (bijvoorbeeld pornografische of geweld gerelateerde " +"inhoud)" + +#: personal/connectivity/squid/proxy.tpl:58 +msgid "Limit proxy access to working time" +msgstr "Beperk proxy gebruik tot tijd" + +#: personal/connectivity/squid/proxy.tpl:115 +msgid "per" +msgstr "per" + +#, fuzzy +#~ msgid "Removing of user/proxy account with dn '%s' failed." +#~ msgstr "Het verwijderen van het proxy account is mislukt" + +#, fuzzy +#~ msgid "Saving of user/proxy account with dn '%s' failed." +#~ msgstr "Het opslaan van het proxy account is mislukt" + +#~ msgid "Numerical value for Quota Setting is empty." +#~ msgstr "De nummerieke waarde opgegeven voor Quota Instellingen is leeg." + +#~ msgid "Numerical value for Quota Setting is not valid." +#~ msgstr "" +#~ "De nummerieke waarde opgegeven voor Quota Instellingen is niet geldig." diff --git a/trunk/gosa-plugins/squid/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/squid/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..177db67e1 --- /dev/null +++ b/trunk/gosa-plugins/squid/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,116 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/connectivity/squid/class_proxyAccount.inc:5 +#: personal/connectivity/squid/class_proxyAccount.inc:330 +msgid "Proxy" +msgstr "Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:6 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "KB" +msgstr "KB" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "MB" +msgstr "MB" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "GB" +msgstr "GB" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "hour" +msgstr "godzina" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "day" +msgstr "dzień" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "week" +msgstr "tydzień" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "month" +msgstr "miesiąc" + +#: personal/connectivity/squid/class_proxyAccount.inc:183 +#: personal/connectivity/squid/class_proxyAccount.inc:309 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/connectivity/squid/class_proxyAccount.inc:204 +#: personal/connectivity/squid/class_proxyAccount.inc:206 +msgid "Quota Setting" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#: personal/connectivity/squid/proxy.tpl:37 +msgid "Proxy account" +msgstr "Konto Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/squid/class_proxyAccount.inc:335 +msgid "My account" +msgstr "Moje konto " + +#: personal/connectivity/squid/class_proxyAccount.inc:340 +msgid "Filter unwanted content" +msgstr "Filtruj niechcianą zawartość" + +#: personal/connectivity/squid/class_proxyAccount.inc:341 +msgid "Limit proxy access" +msgstr "Ogranicz dostęp do proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:342 +#: personal/connectivity/squid/proxy.tpl:100 +msgid "Restrict proxy usage by quota" +msgstr "Ogranicz użycie proxy mechanizmami quota" + +#: personal/connectivity/squid/proxy.tpl:48 +msgid "Filter unwanted content (i.e. pornographic or violence related)" +msgstr "Filtruj niechcianą zawartość (n.p. pornografia, przemoc)" + +#: personal/connectivity/squid/proxy.tpl:58 +msgid "Limit proxy access to working time" +msgstr "Ogranicz dostęp do proxy do czasu pracu" + +#: personal/connectivity/squid/proxy.tpl:115 +msgid "per" +msgstr "na" + +#, fuzzy +#~ msgid "Removing of user/proxy account with dn '%s' failed." +#~ msgstr "Usuwanie konta proxy nieudane" + +#, fuzzy +#~ msgid "Saving of user/proxy account with dn '%s' failed." +#~ msgstr "Zapisywanie konta proxy nieudane" + +#~ msgid "Numerical value for Quota Setting is empty." +#~ msgstr "Wartość numeryczna dla ustawień Quoty jest pusta." + +#~ msgid "Numerical value for Quota Setting is not valid." +#~ msgstr "Wartość numeryczna dla ustawień Quoty jest nieprawidłowa." diff --git a/trunk/gosa-plugins/squid/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/squid/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b9a3236d0 --- /dev/null +++ b/trunk/gosa-plugins/squid/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,117 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/connectivity/squid/class_proxyAccount.inc:5 +#: personal/connectivity/squid/class_proxyAccount.inc:330 +msgid "Proxy" +msgstr "Прокси-сервер" + +#: personal/connectivity/squid/class_proxyAccount.inc:6 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "KB" +msgstr "Kb" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "MB" +msgstr "Мб" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "GB" +msgstr "Gb" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "hour" +msgstr "час" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "day" +msgstr "день" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "week" +msgstr "неделя" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "month" +msgstr "месяц" + +#: personal/connectivity/squid/class_proxyAccount.inc:183 +#: personal/connectivity/squid/class_proxyAccount.inc:309 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/connectivity/squid/class_proxyAccount.inc:204 +#: personal/connectivity/squid/class_proxyAccount.inc:206 +msgid "Quota Setting" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#: personal/connectivity/squid/proxy.tpl:37 +msgid "Proxy account" +msgstr "Аккаунт Proxy" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/squid/class_proxyAccount.inc:335 +msgid "My account" +msgstr "Моя учетная запись" + +#: personal/connectivity/squid/class_proxyAccount.inc:340 +msgid "Filter unwanted content" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:341 +#, fuzzy +msgid "Limit proxy access" +msgstr "Ограничить доступ к прокси рабочим временем" + +#: personal/connectivity/squid/class_proxyAccount.inc:342 +#: personal/connectivity/squid/proxy.tpl:100 +msgid "Restrict proxy usage by quota" +msgstr "Ограничить квотой использование прокси" + +#: personal/connectivity/squid/proxy.tpl:48 +msgid "Filter unwanted content (i.e. pornographic or violence related)" +msgstr "" +"Фильтровать нежелательное содержимое (например, порнографическое или " +"связанное с насилием)" + +#: personal/connectivity/squid/proxy.tpl:58 +msgid "Limit proxy access to working time" +msgstr "Ограничить доступ к прокси рабочим временем" + +#: personal/connectivity/squid/proxy.tpl:115 +msgid "per" +msgstr "per" + +#, fuzzy +#~ msgid "Removing of user/proxy account with dn '%s' failed." +#~ msgstr "Удалить учетную запись POSIX" + +#, fuzzy +#~ msgid "Saving of user/proxy account with dn '%s' failed." +#~ msgstr "Аккаунт Proxy" + +#, fuzzy +#~ msgid "Numerical value for Quota Setting is not valid." +#~ msgstr "Значение поля \"Квота\" некорректно." diff --git a/trunk/gosa-plugins/squid/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/squid/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..225bfc152 --- /dev/null +++ b/trunk/gosa-plugins/squid/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,120 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:37+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/connectivity/squid/class_proxyAccount.inc:5 +#: personal/connectivity/squid/class_proxyAccount.inc:330 +msgid "Proxy" +msgstr "代理" + +#: personal/connectivity/squid/class_proxyAccount.inc:6 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "KB" +msgstr "KB" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "MB" +msgstr "MB" + +#: personal/connectivity/squid/class_proxyAccount.inc:92 +msgid "GB" +msgstr "GB" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "hour" +msgstr "小时" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "day" +msgstr "天" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "week" +msgstr "周" + +#: personal/connectivity/squid/class_proxyAccount.inc:93 +msgid "month" +msgstr "月" + +#: personal/connectivity/squid/class_proxyAccount.inc:183 +#: personal/connectivity/squid/class_proxyAccount.inc:309 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/connectivity/squid/class_proxyAccount.inc:204 +#: personal/connectivity/squid/class_proxyAccount.inc:206 +msgid "Quota Setting" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#: personal/connectivity/squid/proxy.tpl:37 +msgid "Proxy account" +msgstr "代理账号" + +#: personal/connectivity/squid/class_proxyAccount.inc:331 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/squid/class_proxyAccount.inc:335 +msgid "My account" +msgstr "我的账号" + +#: personal/connectivity/squid/class_proxyAccount.inc:340 +msgid "Filter unwanted content" +msgstr "" + +#: personal/connectivity/squid/class_proxyAccount.inc:341 +#, fuzzy +msgid "Limit proxy access" +msgstr "限制代理访问仅在工作时间" + +#: personal/connectivity/squid/class_proxyAccount.inc:342 +#: personal/connectivity/squid/proxy.tpl:100 +msgid "Restrict proxy usage by quota" +msgstr "通过 quota 限制代理使用" + +#: personal/connectivity/squid/proxy.tpl:48 +msgid "Filter unwanted content (i.e. pornographic or violence related)" +msgstr "过滤不想要的内容(如:色情或暴力相关)" + +#: personal/connectivity/squid/proxy.tpl:58 +msgid "Limit proxy access to working time" +msgstr "限制代理访问仅在工作时间" + +#: personal/connectivity/squid/proxy.tpl:115 +msgid "per" +msgstr "每" + +#, fuzzy +#~ msgid "Removing of user/proxy account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of user/proxy account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#~ msgid "Numerical value for Quota Setting is empty." +#~ msgstr "Quota 设置的数值为空。" + +#~ msgid "Numerical value for Quota Setting is not valid." +#~ msgstr "Quota 设置的数值无效。" diff --git a/trunk/gosa-plugins/squid/personal/connectivity/squid/class_proxyAccount.inc b/trunk/gosa-plugins/squid/personal/connectivity/squid/class_proxyAccount.inc new file mode 100644 index 000000000..89497ead1 --- /dev/null +++ b/trunk/gosa-plugins/squid/personal/connectivity/squid/class_proxyAccount.inc @@ -0,0 +1,437 @@ +attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + } + + + /*! \brief Create html output for this class + */ + public function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + $display= ""; + $smarty= get_smarty(); + + /* Assign radio boxes */ + foreach (array("F", "T", "B", "N") as $val){ + if (preg_match("/".$val."/",$this->gosaProxyAcctFlags)){ + $smarty->assign("filter$val", "checked"); + $smarty->assign($val."state", ""); + } else { + $smarty->assign("filter$val", ""); + if(session::get('js')==1){ + $smarty->assign($val."state", "disabled"); + }else{ + $smarty->assign($val."state", ""); + } + } + } + + /* Assign ACLs */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $acl => $desc){ + $smarty->assign($acl."ACL",$this->getacl($acl,$this->ReadOnly)); + $smarty->assign($acl."_W",$this->acl_is_writeable($acl,$this->ReadOnly)); + } + + /* Assign working time */ + $smarty->assign("starthour" ,floor($this->gosaProxyWorkingStart / 60)); + $smarty->assign("startminute", ($this->gosaProxyWorkingStart % 60)); + $smarty->assign("stophour", floor($this->gosaProxyWorkingStop / 60)); + $smarty->assign("stopminute", ($this->gosaProxyWorkingStop % 60)); + $hours= array(); + for($i=0; $i<24; $i++){ + $hours[]= sprintf("%02d",$i); + } + $smarty->assign("hours", $hours); + $smarty->assign("minutes", array("00","15","30","45")); + + /* Assign quota values */ + $smarty->assign("quota_unit", array("k" => _("KB"), "m" => _("MB"), "g" => _("GB"))); + $smarty->assign("quota_time", array("h" => _("hour"), "d" => _("day"), "w" => _("week"), "m" => _("month"))); + $smarty->assign("gosaProxyQuotaPeriod", $this->gosaProxyQuotaPeriod); + $smarty->assign("quota_size", preg_replace("/[a-z]$/i", "", $this->gosaProxyQuota)); + $smarty->assign("quota_u", preg_replace("/^[0-9]+/", "", $this->gosaProxyQuota)); + if ($this->is_account){ + $smarty->assign("proxyState", "checked"); + } else { + $smarty->assign("proxyState", ""); + } + + + /* Handle input grey out and javascript enabled/disable of input fields + */ + if($this->multiple_support_active){ + + /* In Multiple edit, everything is enabled */ + $changeB = ""; + $smarty->assign("pstate", ""); + $smarty->assign("ProxyWorkingStateChange",""); + }else{ + + /* Depeding on the account status, we disable or + * enable all input fields + */ + if (!$this->is_account){ + $smarty->assign("pstate", "disabled"); + } else { + $smarty->assign("pstate", ""); + } + + /* Create JS activation string for everal input fields */ + $ProxyWorkingStateChange ="\n"; + if($this->acl_is_writeable("gosaProxyFlagT")){ + $ProxyWorkingStateChange.= "changeState('startHour'); \n"; + $ProxyWorkingStateChange.= "changeState('startMinute'); \n"; + $ProxyWorkingStateChange.= "changeState('stopHour'); \n"; + $ProxyWorkingStateChange.= "changeState('stopMinute'); \n"; + } + $smarty->assign("ProxyWorkingStateChange",$ProxyWorkingStateChange); + $changeB = ""; + if($this->acl_is_writeable("gosaProxyFlagB")){ + $changeB = + "changeSubselectState('filterB', 'quota_size'); + changeSubselectState('filterB', 'quota_unit'); + changeSubselectState('filterB', 'gosaProxyQuotaPeriod');"; + } + } + + /* Assign filter settings */ + $smarty->assign("changeB",$changeB); + foreach(array("T","B","F") as $attr){ + if(in_array("filter".$attr,$this->multi_boxes)){ + $smarty->assign("use_filter".$attr,TRUE); + }else{ + $smarty->assign("use_filter".$attr,FALSE); + } + } + + /* check if we are allowed to switch the checkbox. + */ + $smarty->assign('proxyAccountACL', preg_replace("/w/","",$this->getacl("",$this->ReadOnly))); + if(($this->acl_is_removeable() && $this->is_account) || + ($this->acl_is_createable() && !$this->is_account)){ + $smarty->assign('proxyAccountACL', $this->getacl("",$this->ReadOnly)); + } + + $smarty->assign("use_proxy",in_array("proxy",$this->multi_boxes)); + $smarty->assign("multiple_support",$this->multiple_support_active); + $display.= $smarty->fetch(get_template_path('proxy.tpl', TRUE, dirname(__FILE__))); + return($display); + } + + + /*! \brief Removes proxy account from current object + */ + public function remove_from_parent() + { + if($this->acl_is_removeable() && $this->initially_was_account){ + plugin::remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events("remove",array("uid" => $this->uid)); + } + } + + + /*! \brief Check given input + @return array Returns an array of error messages + */ + public function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* We've got only one value to check for positive integer or emtpy field */ + if ($this->is_account && $this->acl_is_writeable("gosaProxyQuota")){ + if (isset($_POST["quota_size"])){ + if ($_POST["quota_size"] == "gosaProxyQuota"){ + $message[]= msgPool::invalid(_("Quota Setting")); + }elseif ($_POST["quota_size"] <= 0){ + $message[]= msgPool::invalid(_("Quota Setting"),$_POST["quota_size"],"/^[0-9]/"); + } + } + } + return $message; + } + + /*! \brief Save POST data to object + */ + public function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + if (isset($_POST['proxy'])){ + if (!$this->is_account && $_POST['proxy'] == "B"){ + if($this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + + /* Save flag value */ + if ($this->is_account || $this->multiple_support_active){ + + $flags= ""; + $acl= ""; + foreach(array("F", "T", "B") as $key){ + if($this->acl_is_writeable("gosaProxyFlag".$key)){ + + /* Add acl */ + if (isset($_POST["filter$key"])){ + $flags.= $key; + } + }else{ + + /* Keep all flags that can't be written*/ + if(preg_match("/".$key."/",$this->gosaProxyAcctFlags)){ + $flags .=$key; + } + } + } + if ("[$flags]" != $this->gosaProxyAcctFlags){ + $this->is_modified= TRUE; + } + $this->gosaProxyAcctFlags= "[$flags]"; + + /* Save time values */ + if ($this->acl_is_writeable("gosaProxyFlagT")){ + if(isset($_POST['startMinute'])){ + $old= $this->gosaProxyWorkingStart; + $this->gosaProxyWorkingStart= $_POST["startHour"] * 60 + $_POST["startMinute"]; + $this->is_modified= ($old != $this->gosaProxyWorkingStart)?TRUE:$this->is_modified; + } + + if (isset($_POST['stopMinute'])){ + $old= $this->gosaProxyWorkingStop; + $this->gosaProxyWorkingStop = $_POST["stopHour"] * 60 + $_POST["stopMinute"]; + $this->is_modified= ($old != $this->gosaProxyWorkingStop)?TRUE:$this->is_modified; + } + } + + /* Save quota values */ + if ($this->acl_is_writeable("gosaProxyFlagB")){ + if(isset($_POST["quota_size"]) && isset($_POST["quota_unit"])){ + $this->gosaProxyQuota= $_POST["quota_size"].$_POST["quota_unit"]; + } + } + + /*Save quota period */ + if($this->acl_is_writeable("gosaProxyFlagB")){ + if(isset($_POST["gosaProxyQuotaPeriod"])){ + $this->gosaProxyQuotaPeriod = $_POST["gosaProxyQuotaPeriod"]; + } + } + } + } + + + /*! \brief Save settings to ldap + */ + public function save() + { + plugin::save(); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + + } + + + /*! \brief Static Function returning an ACL information array. + @return Array Returns an ACL array + */ + static function plInfo() + { + return (array( + "plShortName" => _("Proxy"), + "plDescription" => _("Proxy account")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 21, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array( + "gosaProxyFlagF" => _("Filter unwanted content"), + "gosaProxyFlagT" => _("Limit proxy access"), + "gosaProxyFlagB" => _("Restrict proxy usage by quota")) + )); + } + + + /*! \brief Save html POSTs in multiple edit. + */ + public function multiple_save_object() + { + if (isset($_POST['connectivityTab'])){ + plugin::multiple_save_object(); + if(isset($_POST['use_proxy'])){ + $this->multi_boxes[] = "proxy"; + } + foreach(array("T","B","F") as $attr){ + if(isset($_POST["use_filter".$attr])){ + $this->multi_boxes[] = "filter".$attr; + } + } + $this->save_object(); + } + } + + + /*! \brief Returns all modified values. \ + All selected an modified values will be returned \ + in an array. + @return array Returns an array containing all attribute modifications + */ + public function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("proxy",$this->multi_boxes)){ + $ret['is_account'] = $this->is_account; + } + + if(in_array("filterT",$this->multi_boxes)){ + $ret['gosaProxyWorkingStart'] = $this->gosaProxyWorkingStart; + $ret['gosaProxyWorkingStop'] = $this->gosaProxyWorkingStop; + } + if(in_array("filterB",$this->multi_boxes)){ + $ret['gosaProxyQuota'] = $this->gosaProxyQuota; + $ret['gosaProxyQuotaPeriod'] = $this->gosaProxyQuotaPeriod; + } + + foreach(array("B","T","F") as $attr){ + $name = "filter".$attr; + if(in_array($name,$this->multi_boxes)){ + $ret[$name] = preg_match("/".$attr."/",$this->gosaProxyAcctFlags); + } + } + + return($ret); + } + + + /*! \brief Sets modified attributes in mutliple edit. \ + All collected values from "get_multi_edit_values()" \ + will be applied to this plugin. + @param array An array containing modified attributes returned by get_multi_edit_values(); + */ + public function set_multi_edit_values($values) + { + plugin::set_multi_edit_values($values); + if(isset($values['is_account'])){ + $this->is_account = $values['is_account']; + } + foreach(array("B","T","F") as $attr){ + $name = "filter".$attr; + if(isset($values[$name])){ + if($values[$name] && !preg_match("/".$attr."/",$this->gosaProxyAcctFlags)){ + $this->gosaProxyAcctFlags = preg_replace("/\]/",$attr."]",$this->gosaProxyAcctFlags); + }elseif(!$values[$name] && preg_match("/".$attr."/",$this->gosaProxyAcctFlags)){ + $this->gosaProxyAcctFlags = preg_replace("/".$attr."/","",$this->gosaProxyAcctFlags); + } + } + } + } + + + /*! \brief Initialize multiple edit ui for this plugin. \ + This function sets plugin defaults in multiple edit. + @param array Attributes used in all object + @param array All used attributes. + */ + public function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + if(isset($attrs['objectClass']) && in_array("gosaProxyAccount",$attrs['objectClass'])){ + $this->is_account = TRUE; + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/squid/personal/connectivity/squid/proxy.tpl b/trunk/gosa-plugins/squid/personal/connectivity/squid/proxy.tpl new file mode 100644 index 000000000..4f6ac1ea7 --- /dev/null +++ b/trunk/gosa-plugins/squid/personal/connectivity/squid/proxy.tpl @@ -0,0 +1,130 @@ +

    + +{if $multiple_support} + + + + +{else} + + {render acl=$proxyAccountACL} + + {/render} +{/if} + {t}Proxy account{/t}

    + + + + + +
    + + + + + + + +
    + +{render acl=$gosaProxyFlagFACL checkbox=$multiple_support checked=$use_filterF} + +{/render} + {t}Filter unwanted content (i.e. pornographic or violence related){/t} +
    + +{render acl=$gosaProxyFlagTACL checkbox=$multiple_support checked=$use_filterT} + +{/render} + + +
    + + + + +
    + +{render acl=$gosaProxyFlagTACL} + +{/render} +  :  +{render acl=$gosaProxyFlagTACL} + +{/render} +  -  +{render acl=$gosaProxyFlagTACL} + +{/render} +  :  +{render acl=$gosaProxyFlagTACL} + +{/render} +
    +
    +   + +{render acl=$gosaProxyFlagBACL checkbox=$multiple_support checked=$use_filterB} + +{/render} + +
    + + + + +
    +{render acl=$gosaProxyFlagBACL} + +{/render} +   +{render acl=$gosaProxyFlagBACL} + +{/render} + + +{render acl=$gosaProxyFlagBACL} + +{/render} +
    +
    +
    + diff --git a/trunk/gosa-plugins/squid/plugin.dsc b/trunk/gosa-plugins/squid/plugin.dsc new file mode 100644 index 000000000..2eb55365e --- /dev/null +++ b/trunk/gosa-plugins/squid/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = squid +description = "Squid connectivity plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = connectivity diff --git a/trunk/gosa-plugins/ssh/help/guide.xml b/trunk/gosa-plugins/ssh/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/ssh/plugin.dsc b/trunk/gosa-plugins/ssh/plugin.dsc new file mode 100644 index 000000000..5f9404117 --- /dev/null +++ b/trunk/gosa-plugins/ssh/plugin.dsc @@ -0,0 +1,6 @@ +[gosa-plugin] +name = ssh +description = "SSH key plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ diff --git a/trunk/gosa-plugins/sudo/admin/sudo/class_divListSudo.inc b/trunk/gosa-plugins/sudo/admin/sudo/class_divListSudo.inc new file mode 100644 index 000000000..924115d15 --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/class_divListSudo.inc @@ -0,0 +1,243 @@ +parent = &$parent; + $this->ui = get_userinfo(); + + /* Set list strings */ + $this->SetTitle( _("List of sudo roles")); + $this->SetSummary(_("List of sudo roles")); + $this->EnableAplhabet(true); + + /* Result page will look like a headpage */ + $this->SetHeadpageMode(); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 54; + if($this->parent->snapshotEnabled()){ + $action_col_size += 32; + } + if($this->parent->CopyPasteHandler){ + $action_col_size += 20; + } + + /* Toggle all selected / deselected */ + $chk = ""; + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>_("Name")." / "._("Department"))); + $this->AddHeader(array("string"=>_("Actions"),"attach"=>"style='width:".$action_col_size."px;border-right:0px;'")); + + /* Add SubSearch checkbox */ + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"),msgPool::selectToView("","subsearch_small"), false); + $this->AddRegex ("Regex" , _("Regular expression for matching role names") , + "*" , true); + $this->AddRegex ("UserRegex", _("Regular expression for matching role member names"), + "*" , FALSE,"images/lists/search-user.png"); + } + + + /*! \brief Generate the list header. + */ + function GenHeader() + { + /* Prepare departments, + which are shown in the listbox on top of the listbox + */ + $base = sudo::get_sudoers_ou($this->config); + $acl = $this->ui->get_permissions($base,"sudo/sudo"); + $acl_all= $this->ui->get_category_permissions($base,"sudo"); + + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(false); + + /* Create Layers menu */ + $s = ".|"._("Actions")."|\n"; + $s .= "..|". + " "._("Create")."|\n"; + + /* Append create options */ + if(preg_match("/c/",$acl)) { + $s.= "...| "._("Role")."|new_role|\n"; + $s.= "...| "._("Default")."|new_default|\n"; + } + + /* Append multiple remove */ + if(preg_match("/r/",$acl)){ + $s.= "..|---|\n"; + $s.= "..|". + " "._("Remove")."|"."del_role|\n"; + } + + /* Add Copy & Paste header */ + $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module); + + /* Add snapshot icons */ + $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); + + $this->SetDropDownHeaderMenu($s); + $this->SetListHeader($listhead); + } + + + /*! \brief Prepare the plguin to list a set of objects + */ + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + + /*! \brief Create a list of all objects that should be displayed + @param Array $list The list of sudo roles, passed from the sudoManagement class. + */ + function setEntries($list) + { + /* Prepare links */ + $editlink = "
    %s"; + $userimg = "Sudo"; + $ui = get_userinfo(); + + $action_col_size = 54; + if($this->parent->snapshotEnabled()){ + $action_col_size += 32; + } + if($this->parent->CopyPasteHandler){ + $action_col_size += 20; + } + + // Test Every Entry and generate divlist Array + foreach($list as $key => $val){ + + /* Create action icons - copy & paste icons */ + $acl = $ui->get_permissions($val['dn'],"sudo/sudo"); + $acl_all= $this->ui->get_category_permissions($val['dn'],"sudo"); + + /* Add copy & cut functionality */ + $actions = $this->parent->get_copypaste_action($val['dn'],"sudo","sudo",TRUE,FALSE); + + $actions.= ""; + + /* Add snapshot icon */ + $actions.= $this->parent->get_snapshot_action($val['dn'],$this->module); + + if(preg_match("/d/",$acl)){ + $actions.= ""; + } + + $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; + + if(!isset($val['description'][0])){ + $desc = ""; + }else{ + $desc = " - [ ".$val['description'][0]." ]"; + } + + $display = $val['cn'][0].$desc; + + /* Highlight defaults entry */ + if(preg_match("/^defaults$/i",$val['cn'][0])){ + $display = "$display"; + } + + /* Cutted objects should be displayed in light grey */ + if($this->parent->CopyPasteHandler){ + foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){ + if($queue_data['dn'] == $val['dn']) { + $display = "".$display.""; + break; + } + } + } + + $field1 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field2 = array("string" => sprintf($userimg,$val['dn']), + "attach" => "style='text-align:center;width:20px;'"); + $field3 = array("string" => sprintf($editlink,$key,$display), + "attach" => "style='' ".$title); + $field4 = array("string" => preg_replace("/%KEY%/", $key, $actions), + "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); + + $this->AddElement(array($field1,$field2,$field3,$field4)); + } + + /* Create summary string for list footer */ + $num = count($list); + $num_str = _("Number of listed roles"); + $str = "".$num_str." ".$num." "; + $this->set_List_Bottom_Info($str); + } + + + /*! \brief Save this plugin. In this case nothing will be saved + */ + function Save() + { + MultiSelectWindow :: Save(); + } + + /*! \brief Save all relevant HTML inputs for this plugin. + */ + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow::save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/sudo/admin/sudo/class_sudoGeneric.inc b/trunk/gosa-plugins/sudo/admin/sudo/class_sudoGeneric.inc new file mode 100644 index 000000000..1d315f7fe --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/class_sudoGeneric.inc @@ -0,0 +1,751 @@ +current['BASE']); + } + + /*! \brief Initializes this sudo class, with all required attributes. + @param Object $config GOsa configuration object. + @param String $db "new" or the sudo role dn. + @return . + */ + function sudo(&$config, $dn= NULL) + { + plugin::plugin ($config, $dn); + + if($this->initially_was_account){ + foreach(array("sudoUser","sudoCommand","sudoHost","sudoRunAs") as $attr){ + $this->$attr = array(); + if(isset($this->attrs[$attr])){ + $tmp = array(); + for($i = 0 ; $i < $this->attrs[$attr]['count']; $i++){ + $tmp[] = $this->attrs[$attr][$i]; + } + $this->$attr = $tmp; + } + } + + /* Is this account a trustAccount? */ + if (isset($this->attrs['trustModel'])){ + $this->trustModel= $this->attrs['trustModel'][0]; + $this->was_trust_account= TRUE; + } else { + $this->was_trust_account= FALSE; + $this->trustModel= ""; + } + + $this->accessTo = array(); + if (isset($this->attrs['accessTo'])){ + for ($i= 0; $i<$this->attrs['accessTo']['count']; $i++){ + $tmp= $this->attrs['accessTo'][$i]; + $this->accessTo[$tmp]= $tmp; + } + } + + } + + if(preg_match("/^defaults$/i",$this->cn)){ + $this->is_default = TRUE; + } + + /* Get global filter config */ + if (!session::is_set("sysfilter")){ + $ui= get_userinfo(); + $base= get_base_from_people($ui->dn); + $sysfilter= array( "depselect" => $base, + "regex" => "*"); + session::set("sysfilter", $sysfilter); + } + + $this->orig_dn = $this->dn; + } + + + /*! \brief Creates the sudo generic ui. + @return String The generated HTML content for this plugin. + */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /********************* + Access control list / trust mode + *********************/ + + /* Add user workstation? */ + if (isset($_POST["add_ws"])){ + $this->show_ws_dialog= TRUE; + $this->dialog= TRUE; + } + + /* Add user workstation? */ + if (isset($_POST["add_ws_finish"]) && isset($_POST['wslist'])){ + foreach($_POST['wslist'] as $ws){ + $this->accessTo[$ws]= $ws; + } + ksort($this->accessTo); + $this->is_modified= TRUE; + } + + /* Remove user workstations? */ + if (isset($_POST["delete_ws"]) && isset($_POST['workstation_list'])){ + foreach($_POST['workstation_list'] as $name){ + unset ($this->accessTo[$name]); + } + $this->is_modified= TRUE; + } + + /* Add user workstation finished? */ + if (isset($_POST["add_ws_finish"]) || isset($_POST["add_ws_cancel"])){ + $this->show_ws_dialog= FALSE; + $this->dialog= FALSE; + } + + /* Show ws dialog */ + if ($this->show_ws_dialog){ + return($this->display_trust_add_dialog()); + } + + + /********************* + Add users + *********************/ + + if(isset($_POST['list_sudoUser']) && !is_object($this->dialog) && $this->acl_is_writeable("sudoUser")){ + $used = array(); + foreach($this->sudoUser as $name){ + $used[] = preg_replace("/^!/","",$name); + } + $this->dialog =new target_list_users($this->config,$used); + } + + /* Add selected hosts to the sudoUser list */ + if(isset($_POST['SaveMultiSelectWindow']) && $this->dialog instanceof target_list_users){ + if($this->acl_is_writeable("sudoUser")){ + foreach($this->dialog->save() as $entry){ + if(in_array("posixGroup",$entry['objectClass'])){ + $name = trim("%".$entry['cn'][0]); + }else{ + $name = trim($entry['uid'][0]); + } + if(!in_array($name,$this->sudoUser) && !in_array("!".$name,$this->sudoUser)){ + $this->sudoUser[] = $name; + } + } + } + unset($this->dialog); + $this->dialog = NULL; + } + + + /********************* + Add systems + *********************/ + + if(isset($_POST['list_sudoHost']) && !is_object($this->dialog) && $this->acl_is_writeable("sudoHost")){ + $used = array(); + foreach($this->sudoHost as $name){ + $used[] = preg_replace("/^!/","",$name); + } + $this->dialog =new target_list_systems($this->config,$used); + } + + /* Add selected hosts to the sudoHost list */ + if(isset($_POST['SaveMultiSelectWindow']) && $this->dialog instanceof target_list_systems){ + if($this->acl_is_writeable("sudoHost")){ + foreach($this->dialog->save() as $entry){ + $cn = trim($entry['cn'][0]); + if(!in_array($cn,$this->sudoHost) && !in_array("!".$cn,$this->sudoHost)){ + $this->sudoHost[] = $cn; + } + } + } + unset($this->dialog); + $this->dialog = NULL; + } + + + /********************* + Dialog handling / display / close + *********************/ + + if(isset($_POST['CloseMultiSelectWindow']) && is_object($this->dialog)){ + unset($this->dialog); + $this->dialog = NULL; + } + + if(is_object($this->dialog)){ + return($this->dialog->execute()); + } + + + /********************* + NEGATE values + *********************/ + foreach($_POST as $name => $value){ + if(preg_match("/^neg_/",$name)){ + $attr = preg_replace("/^neg_([^_]*)_.*$/","\\1",$name); + $value= preg_replace("/^neg_[^_]*_([0-9]*)_.*$/","\\1",$name); + + if($this->acl_is_writeable($attr)){ + $attrs = $this->$attr; + if(isset( $attrs[$value])){ + $v = $attrs[$value]; + if(preg_match("/^!/",$v)){ + $attrs[$value] = preg_replace("/^!/","",$v); + }else{ + $attrs[$value] = "!".$v; + } + $this->$attr = $attrs; + } + } + break; // Do it once, image inputs will be posted twice + } + } + + /********************* + Delete values + *********************/ + foreach($_POST as $name => $value){ + if(preg_match("/^del_/",$name)){ + $attr = preg_replace("/^del_([^_]*)_.*$/","\\1",$name); + $value= preg_replace("/^del_[^_]*_([0-9]*)_.*$/","\\1",$name); + if($this->acl_is_writeable($attr)){ + $attrs = $this->$attr; + if(isset( $attrs[$value])){ + unset($attrs[$value]); + $this->$attr = $attrs; + } + } + break; // Do it once, image inputs will be posted twice + } + } + + + /********************* + ADD values + *********************/ + + /* User / Host / Runas */ + foreach(array("sudoUser","sudoHost","sudoRunAs") as $attr){ + if($this->acl_is_writeable($attr) && + isset($_POST["add_".$attr]) && + isset($_POST['new_'.$attr]) && + !empty($_POST['new_'.$attr])){ + if(preg_match("/^[a-z\.0-9]*$/i",$_POST['new_'.$attr])){ + $attrs = $this->$attr; + $attrs[] = trim($_POST['new_'.$attr]); + $this->$attr = $attrs; + }else{ + msg_dialog::display(_("Error"),msgPool::invalid($attr,$_POST['new_'.$attr],"/[a-z0-9]/")); + } + } + } + + /* Command */ + foreach(array("sudoCommand") as $attr){ + if($this->acl_is_writeable($attr) && isset($_POST["add_".$attr]) && isset($_POST['new_'.$attr])){ + $attrs = $this->$attr; + $attrs[] = trim($_POST['new_'.$attr]); + $this->$attr = $attrs; + } + } + + + /********************* + SMARTY assignments + *********************/ + + $smarty = get_smarty(); + $smarty->assign("is_default",$this->is_default); + foreach($this->attributes as $attr){ + if(is_string($this->$attr)){ + $smarty->assign($attr,htmlentities($this->$attr)); + }else{ + $smarty->assign($attr,$this->$attr); + } + $smarty->assign($attr."ACL",$this->getacl($attr)); + } + + /* Work on trust modes */ + $smarty->assign("trusthide", " disabled "); + if ($this->trustModel == "fullaccess"){ + $trustmode= 1; + } elseif ($this->trustModel == "byhost"){ + $trustmode= 2; + $smarty->assign("trusthide", ""); + } else { + $trustmode= 0; + } + $smarty->assign("trustmode", $trustmode); + $smarty->assign("trustmodes", array( + 0 => _("disabled"), + 1 => _("full access"), + 2 => _("allow access to these hosts"))); + + if((count($this->accessTo))==0){ + $smarty->assign("emptyArrAccess",true); + }else{ + $smarty->assign("emptyArrAccess",false); + } + $smarty->assign("workstations", $this->accessTo); + + /* Create lists + */ + $divlist_sudoUser = new divSelectBox("divlist_sudoUser"); + $divlist_sudoUser->SetHeight("90"); + $divlist_sudoHost = new divSelectBox("divlist_sudoHost"); + $divlist_sudoHost->Setheight("90"); + $divlist_sudoRunAs = new divSelectBox("divlist_sudoRunAs"); + $divlist_sudoRunAs->Setheight("90"); + $divlist_sudoCommand = new divSelectBox("divlist_sudoCommand"); + $divlist_sudoCommand->Setheight("90"); + + /* Fill divlists + */ + $neg_img= "!"; + $option = ""; + $option.= ""; + foreach(array("sudoCommand","sudoHost","sudoRunAs") as $attr){ + if($this->acl_is_readable($attr)){ + foreach($this->$attr as $key => $entry){ + $neg = ""; + if(preg_match("/^!/",$entry)){ + $neg = $neg_img; + } + $entry = preg_replace("/^!/","",$entry); + $list_name = "divlist_".$attr; + $$list_name->AddEntry( + array( + array("string" => $neg,"attach" => "style='width:18px;'"), + array("string" => $entry), + array("string" => preg_replace(array("/%KEY%/","/%ATTR%/"),array($key,$attr),$option), + "attach" => "style='width:40px; border-right: 0px;'"))); + } + } + } + + foreach(array("sudoUser") as $attr){ + $img1 = ""._("User").""; + $img2 = ""._("Group").""; + if($this->acl_is_readable($attr)){ + foreach($this->$attr as $key => $entry){ + $neg = ""; + if(preg_match("/^!/",$entry)){ + $neg = $neg_img; + } + $entry = preg_replace("/^!/","",$entry); + + $img = $img1; + if(preg_match("/^%/",$entry)){ + $img = $img2; + } + $entry = preg_replace("/^%/","",$entry); + + $list_name = "divlist_".$attr; + $$list_name->AddEntry( + array( + array("string" => $neg,"attach" => "style='width:18px;'"), + array("string" => $img,"attach" => "style='width:18px;'"), + array("string" => $entry), + array("string" => preg_replace(array("/%KEY%/","/%ATTR%/"),array($key,$attr),$option), + "attach" => "style='width:40px; border-right: 0px;'"))); + } + } + } + + + + + /* Tell smarty about our divlists + */ + $smarty->assign("divlist_sudoUser", $divlist_sudoUser->DrawList()); + $smarty->assign("divlist_sudoHost", $divlist_sudoHost->DrawList()); + $smarty->assign("divlist_sudoRunAs", $divlist_sudoRunAs->DrawList()); + $smarty->assign("divlist_sudoCommand",$divlist_sudoCommand->DrawList()); + return($smarty->fetch(get_template_path('generic.tpl', TRUE))); + } + + + /*! \brief Remove this sudo role from the ldap server + */ + function remove_from_parent() + { + plugin::remove_from_parent(); + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->rmdir($this->dn); + + /* Send signal to the world that we've done */ + $this->handle_post_events("remove"); + } + + + /*! \brief Save all relevant HTML posts. + */ + function save_object() + { + plugin::save_object(); + + if($this->is_default){ + $this->cn = "defaults"; + } + + if(is_object($this->dialog)){ + $this->dialog->save_object(); + } + + /* Trust mode - special handling */ + if($this->acl_is_writeable("trustModel")){ + if (isset($_POST['trustmode'])){ + $saved= $this->trustModel; + if ($_POST['trustmode'] == "1"){ + $this->trustModel= "fullaccess"; + } elseif ($_POST['trustmode'] == "2"){ + $this->trustModel= "byhost"; + } else { + $this->trustModel= ""; + } + if ($this->trustModel != $saved){ + $this->is_modified= TRUE; + } + } + } + } + + + /*! \brief Save changes into the ldap database. + */ + function save() + { + plugin::save(); + /* Trust accounts */ + $objectclasses= array(); + foreach ($this->attrs['objectClass'] as $key => $class){ + if (preg_match('/trustAccount/i', $class)){ + continue; + } + $objectclasses[]= $this->attrs['objectClass'][$key]; + } + + $this->attrs['objectClass']= $objectclasses; + if ($this->trustModel != ""){ + $this->attrs['objectClass'][]= "trustAccount"; + $this->attrs['trustModel']= $this->trustModel; + $this->attrs['accessTo']= array(); + if ($this->trustModel == "byhost"){ + foreach ($this->accessTo as $host){ + $this->attrs['accessTo'][]= $host; + } + } + } else { + if ($this->was_trust_account){ + $this->attrs['accessTo']= array(); + $this->attrs['trustModel']= array(); + } + } + + + /* Ensure a correct array index + */ + $this->attrs['sudoHost'] = array_values($this->attrs['sudoHost']); + $this->attrs['sudoRunAs'] = array_values($this->attrs['sudoRunAs']); + $this->attrs['sudoUser'] = array_values($this->attrs['sudoUser']); + $this->attrs['sudoCommand'] = array_values($this->attrs['sudoCommand']); + + $this->cleanup(); + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + + if($this->is_new){ + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + + /* Send signal to the world that we've done */ + $this->handle_post_events("create"); + }else{ + $ldap->cd($this->dn); + $ldap->modify($this->attrs);; + + /* Send signal to the world that we've done */ + $this->handle_post_events("modify"); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + } + + + /*! \brief Check the given input. + @return Array All error messages in an array(); + */ + function check() + { + $message = plugin::check(); + + /* Is a name given? */ + if($this->cn == ""){ + $message[] = msgPool::required(_("Name")); + } + + /* Check if name is reserved */ + if(!$this->is_default && preg_match("/^defaults$/i",$this->cn)){ + $message[] = msgPool::reserved(_("Name")); + } + + /* Check name */ + if(!preg_match("/^[0-9a-z\@]*$/i",$this->cn)){ + $message[] = msgPool::invalid(_("Name"),$this->cn,"/[0-9a-z\@]/i"); + } + + /* Check if this entry will cause duplicated ldap entries */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->get_sudoers_ou($this->config)); + $ldap->search("(&(objectClass=sudoRole)(cn=".$this->cn."))"); + while($attrs = $ldap->fetch()){ + if($attrs['dn'] != $this->dn){ + $message[] = msgPool::duplicated(_("Name")); + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->get_sudoers_ou($this->config))){ + $message[] = msgPool::permCreate(); + } + + return ($message); + } + + + /*! \brief Display the System Trust Add Workstation dialog + @return String HTML dialog to add a system to the trust list. + + */ + private function display_trust_add_dialog() + { + $smarty = get_smarty(); + + /* Save data */ + $sysfilter= session::get("sysfilter"); + foreach( array("depselect", "regex") as $type){ + if (isset($_POST[$type])){ + $sysfilter[$type]= $_POST[$type]; + } + } + if (isset($_GET['search'])){ + $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*"; + if ($s == "**"){ + $s= "*"; + } + $sysfilter['regex']= $s; + } + session::set("sysfilter", $sysfilter); + + /* Get workstation list */ + $exclude= ""; + foreach($this->accessTo as $ws){ + $exclude.= "(cn=$ws)"; + } + if ($exclude != ""){ + $exclude= "(!(|$exclude))"; + } + $regex= $sysfilter['regex']; + $filter= "(&(|(objectClass=goServer)(objectClass=gotoWorkstation)(objectClass=gotoTerminal))$exclude(cn=*)(cn=$regex))"; + + $res = array(); + $res= array_merge($res,get_sub_list($filter, array("terminal"), get_ou("terminalRDN"), + get_ou("systemRDN").$sysfilter['depselect'], array("cn"), GL_SUBSEARCH | GL_SIZELIMIT)); + $res= array_merge($res,get_sub_list($filter, array("server"), get_ou("serverRDN"), + get_ou("systemRDN").$sysfilter['depselect'], array("cn"), GL_SUBSEARCH | GL_SIZELIMIT)); + $res= array_merge($res,get_sub_list($filter, array("workstation"), get_ou("workstationRDN"), + get_ou("systemRDN").$sysfilter['depselect'], array("cn"), GL_SUBSEARCH | GL_SIZELIMIT)); + + $wslist= array(); + foreach ($res as $attrs){ + $wslist[]= preg_replace('/\$/', '', $attrs['cn'][0]); + } + asort($wslist); + foreach( array("depselect","regex") as $type){ + $smarty->assign("$type", $sysfilter[$type]); + } + $smarty->assign("search_image", get_template_path('images/lists/search.png')); + $smarty->assign("launchimage", get_template_path('images/lists/action.png')); + $smarty->assign("tree_image", get_template_path('images/lists/search-subtree.png')); + $smarty->assign("deplist", $this->config->idepartments); + $smarty->assign("alphabet", generate_alphabet()); + $smarty->assign("hint", print_sizelimit_warning()); + $smarty->assign("wslist", $wslist); + $smarty->assign("apply", apply_filter()); + $display= $smarty->fetch (get_template_path('trust_machines.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + + /*! \brief Force this entry to be handled and saved as 'default' + @param BOOL TRUE -force defaults FALSE -normal + */ + public function set_default($state) + { + $this->is_default = TRUE; + $this->cn = "defaults"; + } + + + /*! \brief Add ACL object + @return Returns the ACL object. + */ + static function plInfo() + { + return (array( + "plShortName" => _("Sudo"), + "plDescription" => _("Sudo role"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("sudo" => array("objectClass" => "sudoRole", "description" => _("Sudo role"))), + + "plProvidedAcls" => array( + "cn" => _("Name"), + "description" => _("Description"), + "sudoUser" => _("Users"), + "sudoHost" => _("Host"), + "sudoCommand" => _("Command"), + "sudoRunAs" => _("Run as user"), + "trustModel" => _("Access control list")) + )); + } + + + /*! \brief This function will be called if an object gets copied. + This function adapts attributes from the source object. + @param Array The source object. + */ + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + foreach(array("sudoUser","sudoCommand","sudoHost","sudoRunAs") as $attr){ + $this->$attr = array(); + if(isset($source[$attr])){ + $tmp = array(); + for($i = 0 ; $i < $source[$attr]['count']; $i++){ + $tmp[] = $source[$attr][$i]; + } + $this->$attr = $tmp; + } + } + + /* Is this account a trustAccount? */ + if (isset($source['trustModel'])){ + $this->trustModel= $source['trustModel'][0]; + $this->was_trust_account= TRUE; + } else { + $this->was_trust_account= FALSE; + $this->trustModel= ""; + } + + $this->accessTo = array(); + if (isset($source['accessTo'])){ + for ($i= 0; $i<$source['accessTo']['count']; $i++){ + $tmp= $source['accessTo'][$i]; + $this->accessTo[$tmp]= $tmp; + } + } + } + + + /*! \brief Used for copy & paste. + Returns a HTML input mask, which allows to change the cn of this entry. + @param Array Array containing current status && a HTML template. + */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn", htmlentities($this->cn)); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + public function get_cn() + { + return($this->cn); + } + + + /*! \brief Used for copy & paste. + Some entries must be renamed to avaoid duplicate entries. + */ + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = get_post('cn'); + } + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/sudo/admin/sudo/class_sudoManagement.inc b/trunk/gosa-plugins/sudo/admin/sudo/class_sudoManagement.inc new file mode 100644 index 000000000..7a1365bb4 --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/class_sudoManagement.inc @@ -0,0 +1,528 @@ +config = &$config; + $this->ui = &$ui; + $this->base = sudo::get_sudoers_ou($this->config); + + /* Copy & Paste enabled ?*/ + if ($this->config->get_cfg_value("copyPaste") == "true"){ + $this->CopyPasteHandler = new CopyPasteHandler($this->config); + } + + /* Create dialog object */ + $this->DivListSudo = new divListSudo($this->config,$this); + } + + + /*! \brief Generate && Display HTML content + */ + public function execute() + { + /* Call parent execute */ + plugin::execute(); + + /******************** + Handle Posts + ********************/ + + /* Store these posts if the current object is locked (used by somebody else)*/ + session::set('LOCK_VARS_TO_USE',array( + "/^act$/","/^id$/","/^sudo_edit_/","/^cut_/","/^copy_/", + "/^sudo_del_/","/^item_selected/","/menu_action/")); + + + /* Get html posts */ + $s_action = ""; + $s_entry = ""; + foreach($_POST as $name => $value){ + if(preg_match("/^sudo_edit_/",$name)){ + $s_action = "edit_role"; + $s_entry = preg_replace("/^sudo_edit_([0-9]*).*$/","\\1",$name); + } + if(preg_match("/^sudo_del_/",$name)){ + $s_action = "del_role"; + $s_entry = preg_replace("/^sudo_del_([0-9]*).*$/","\\1",$name); + }elseif(preg_match("/^editPaste.*/i",$name)){ + $s_action="editPaste"; + }elseif(preg_match("/^copy_.*/",$name)){ + $s_action="copy"; + $s_entry = preg_replace("/^copy_([0-9]*).*$/i","\\1",$name); +# }elseif(preg_match("/^cut_.*/",$name)){ +# $s_action="cut"; +# $s_entry = preg_replace("/^cut_([0-9]*).*$/i","\\1",$name); + } + } + + if(isset($_GET['act']) && isset($_GET['id']) && $_GET['act'] == "edit_entry"){ + $id = trim($_GET['id']); + if(isset($this->list[$id])){ + $s_action = "edit_role"; + $s_entry = $id; + } + } + + if(isset($_POST['menu_action']) && in_array($_POST['menu_action'],array("new_role","del_role","new_default","editPaste"))){ + $s_action = $_POST['menu_action']; + } + + /* handle C&P from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ + $s_action = "copy_multiple"; + } + + $smarty= get_smarty(); + + /******************** + Copy & Paste Handling ... + ********************/ + + /* Display the copy & paste dialog, if it is currently open */ + $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); + if($ret){ + return($ret); + } + + + /******************** + Create a new sudo ... + ********************/ + + /* New sudo? */ + if ($s_action=="new_role" || $s_action == "new_default"){ + + /* Check create permissions */ + $acl = $this->ui->get_permissions($this->base,"sudo/sudo"); + if(preg_match("/c/",$acl)){ + + /* By default we set 'dn' to 'new', all relevant plugins will + react on this. */ + $this->dn= "new"; + + /* Create new sudotabs object */ + $this->sudotabs= new sudotabs($this->config, $this->config->data['TABS']['SUDOTABS'], $this->dn); + + /* Set up the sudo ACL's for this 'dn' */ + $this->sudotabs->set_acl_base($this->base); + + /* This entry will become the default entry */ + if($s_action == "new_default"){ + $this->sudotabs->set_default(TRUE); + } + } + } + + + /******************** + Save Sudo Tab/Object Changes + ********************/ + + /* Save changes */ + if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply'])) && is_object($this->sudotabs)){ + + /* Check tabs, will feed message array + Save, or display error message? */ + $message= $this->sudotabs->check(); + if (count($message) == 0){ + + /* Save user data to ldap */ + $this->sudotabs->save(); + + if (!isset($_POST['edit_apply'])){ + + /* Sudo has been saved successfully, remove lock from LDAP. */ + if ($this->dn != "new"){ + $this->remove_lock(); + } + unset ($this->sudotabs); + $this->sudotabs= NULL; + set_object_info(); + }else{ + + /* Reinitialize tab */ + if($this->sudotabs instanceof tabs){ + $this->sudotabs->re_init(); + } + } + } else { + /* Ok. There seem to be errors regarding to the tab data, + show message and continue as usual. */ + msg_dialog::displayChecks($message); + } + } + + + /******************** + Edit existing role + ********************/ + + /* User wants to edit data? */ + if (($s_action=="edit_role") && !is_object($this->sudotabs)){ + + /* Get 'dn' from posted 'uid', must be unique */ + $this->dn= $this->list[trim($s_entry)]['dn']; + + /* Check locking & lock entry if required */ + $user = get_lock($this->dn); + if ($user != ""){ + return(gen_locked_message ($user, $this->dn)); + } + add_lock ($this->dn, $this->ui->dn); + + /* Register sudotabs to trigger edit dialog */ + $this->sudotabs= new sudotabs($this->config,$this->config->data['TABS']['SUDOTABS'], $this->dn); + $this->sudotabs->set_acl_base($this->base); + set_object_info($this->dn); + } + + + /******************** + Delete entries requested, display confirm dialog + ********************/ + + if ($s_action=="del_role"){ + $ids = $this->list_get_selected_items(); + if(!count($ids) && $s_entry!=""){ + $ids = array($s_entry); + } + + $this->dns = array(); + if(count($ids)){ + $disallowed = array(); + foreach($ids as $id){ + $dn = $this->list[$id]['dn']; + $acl = $this->ui->get_permissions($dn, "sudo/sudo"); + if(preg_match("/d/",$acl)){ + $this->dns[$id] = $dn; + }else{ + $disallowed[] = $dn; + } + } + + if(count($disallowed)){ + msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); + } + + if(count($this->dns)){ + + /* Check locking of entries */ + $users = get_multiple_locks($this->dns); + if(count($users)){ + return(gen_locked_message($users,$this->dns)); + } + + /* Add locks */ + add_lock($this->dns,$this->ui->dn); + + /* Lock the current entry, so nobody will edit it during deletion */ + $smarty->assign("info", msgPool::deleteInfo($this->dns,_("Sudo role"))); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + /******************** + Delete entries confirmed + ********************/ + + /* Confirmation for deletion has been passed. Sudo should be deleted. */ + if (isset($_POST['delete_sudos_confirmed'])){ + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + + /* Load permissions for selected 'dn' and check if + we're allowed to remove this 'dn' */ + $acl = $this->ui->get_permissions($dn,"sudo/sudo"); + if(preg_match("/d/",$acl)){ + + /* Delete request is permitted, perform LDAP action */ + $this->sudotabs= new sudotabs($this->config,$this->config->data['TABS']['SUDOTABS'], $dn); + $this->sudotabs->set_acl_base($dn); + $this->sudotabs->delete (); + unset ($this->sudotabs); + $this->sudotabs= NULL; + + } else { + + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG); + new log("security","sudo/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /******************** + Delete entries Canceled + ********************/ + + /* Remove lock */ + if(isset($_POST['delete_sudo_cancel'])){ + $this->remove_lock(); + $this->dns = array(); + } + + /******************** + A dialog was canceled + ********************/ + + /* Cancel dialogs */ + if (isset($_POST['edit_cancel']) && is_object($this->sudotabs)){ + $this->remove_lock(); + $this->sudotabs= NULL; + set_object_info(); + } + + + /******************** + If there is currently a dialog open, display it + ********************/ + + /* Show tab dialog if object is present */ + if (is_object($this->sudotabs)){ + $display= $this->sudotabs->execute(); + + /* Don't show buttons if tab dialog requests this */ + if(isset($this->sudotabs->by_object)){ + if (!$this->sudotabs->by_object[$this->sudotabs->current]->dialog){ + $display.= "

    \n"; + $display.= "\n"; + $display.= " \n"; + if ($this->dn != "new"){ + $display.= "\n"; + $display.= " \n"; + } + $display.= "\n"; + $display.= "

    "; + } + } + return ($display); + } + + /* Check if there is a snapshot dialog open */ + if($str = $this->showSnapshotDialog(sudo::get_sudoers_ou($this->config),$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + /* Display dialog with sudo list */ + $this->DivListSudo->execute(); + $this->reload (); + $this->DivListSudo->setEntries($this->list); + return($this->DivListSudo->Draw()); + } + + + /*! \brief Return all selected elements from HTML list + @return Array List of all selected list elements + */ + private function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + + /*! \brief Reload the list of sudo roles. + */ + private function reload($CreatePosixsList=false) + { + $this->list = array(); + $base = $this->base; + + $Regex = trim($this->DivListSudo->Regex); + $UserRegex = trim($this->DivListSudo->UserRegex); + $SubSearch = $this->DivListSudo->SubSearch; + + /******************** + Create filter depending on selected checkboxes + ********************/ + $values = array("cn","description","sudoUser","sudoCommand","sudoOption"); + if($UserRegex == "*"){ + $ff = "(&(|(cn=".$Regex.")(description=".$Regex."))(objectClass=sudoRole))"; + }else{ + $ff = "(&(|(cn=".$Regex.")(description=".$Regex."))(sudoUser=".$UserRegex.")(objectClass=sudoRole))"; + } + $res = get_list($ff, "sudo",$base,$values, GL_SIZELIMIT); + $tmp = array(); + foreach($res as $attrs){ + $tmp[$attrs['cn'][0]] = $attrs; + } + uksort($tmp, 'strnatcasecmp'); + $this->list = array_values($tmp); + } + + + /*! \brief Save HTML post data to object + */ + public function save_object() + { + $this->DivListSudo->save_object(); + if(is_object($this->CopyPasteHandler)){ + $this->CopyPasteHandler->save_object(); + } + } + + + /*! \brief Remove this account + */ + public function remove_from_parent() + { + /* Optionally execute a command after we're done */ + $this->postremove(); + } + + + /*! \brief Save to LDAP + */ + public function save() + { + /* Optionally execute a command after we're done */ + $this->postcreate(); + } + + + /*! \brief Remove lock from entry + */ + public function remove_lock() + { + if (is_object($this->sudotabs) && $this->sudotabs->dn != "new"){ + del_lock ($this->sudotabs->dn); + } + if(isset($this->dns) && is_array($this->dns) && count($this->dns)){ + del_lock($this->dns); + } + } + + function get_used_snapshot_bases() + { + return(array(sudo::get_sudoers_ou($this->config))); + } + + + function copyPasteHandling_from_queue($s_action,$s_entry) + { + /* Check if Copy & Paste is disabled */ + if(!is_object($this->CopyPasteHandler)){ + return(""); + } + + $ui = get_userinfo(); + + /* Add a single entry to queue */ + if($s_action == "cut" || $s_action == "copy"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + $dn = $this->list[$s_entry]['dn']; + + if($s_action == "copy" && $ui->is_copyable($dn,"sudo","sudo")){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,"sudotabs","SUDOTABS","sudo"); + } +# if($s_action == "cut" && $ui->is_cutable($dn,"sudo","sudo")){ +# $this->CopyPasteHandler->add_to_queue($dn,$s_action,"sudotabs","SUDOTABS","sudo"); +# } + } + + /* Add entries to queue */ + if($s_action == "copy_multiple" || $s_action == "cut_multiple"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + + /* Add new entries to CP queue */ + foreach($this->list_get_selected_items() as $id){ + $dn = $this->list[$id]['dn']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,"sudo","sudo")){ + $this->CopyPasteHandler->add_to_queue($dn,"copy","sudotabs","SUDOTABS","sudo"); + } +# if($s_action == "cut_multiple" && $ui->is_cutable($dn,"sudo","sudo")){ +# $this->CopyPasteHandler->add_to_queue($dn,"cut","sudotabs","SUDOTABS","sudo"); +# } + } + } + + /* Start pasting entries */ + if($s_action == "editPaste"){ + $this->start_pasting_copied_objects = TRUE; + } + + /* Return C&P dialog */ + if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ + + /* Get dialog */ + $this->CopyPasteHandler->SetVar("base",$this->DivListSudo->selectedBase); + $data = $this->CopyPasteHandler->execute(); + + /* Return dialog data */ + if(!empty($data)){ + return($data); + } + } + + /* Automatically disable status for pasting */ + if(!$this->CopyPasteHandler->entries_queued()){ + $this->start_pasting_copied_objects = FALSE; + } + return(""); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/sudo/admin/sudo/class_sudoOption.inc b/trunk/gosa-plugins/sudo/admin/sudo/class_sudoOption.inc new file mode 100644 index 000000000..cf8d6bd1f --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/class_sudoOption.inc @@ -0,0 +1,565 @@ +'long_otp_prompt' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['ignore_dot']= array('NAME' =>'ignore_dot' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'TRUE'); + $option['mail_always']= array('NAME' =>'mail_always' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['mail_badpass']= array('NAME' =>'mail_badpass' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['mail_no_user']= array('NAME' =>'mail_no_user' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'TRUE'); + $option['mail_no_host']= array('NAME' =>'mail_no_host' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['mail_no_perms']= array('NAME' =>'mail_no_perms' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['tty_tickets']= array('NAME' =>'tty_tickets' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'TRUE'); + $option['authenticate']= array('NAME' =>'authenticate' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'TRUE'); + $option['root_sudo']= array('NAME' =>'root_sudo' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'TRUE'); + $option['log_host']= array('NAME' =>'log_host' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['log_year']= array('NAME' =>'log_year' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['shell_noargs']= array('NAME' =>'shell_noargs' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['set_home']= array('NAME' =>'set_home' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['always_set_home']= array('NAME' =>'always_set_home' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['path_info']= array('NAME' =>'path_info' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['preserve_groups']= array('NAME' =>'preserve_groups' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['fqdn']= array('NAME' =>'fqdn' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['insults']= array('NAME' =>'insults' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['requiretty']= array('NAME' =>'requiretty' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['env_editor']= array('NAME' =>'env_editor' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'TRUE'); + $option['rootpw']= array('NAME' =>'rootpw' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['runaspw']= array('NAME' =>'runaspw' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['targetpw']= array('NAME' =>'targetpw' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['set_logname']= array('NAME' =>'set_logname' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'TRUE'); + $option['stay_setuid']= array('NAME' =>'stay_setuid' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'TRUE'); + $option['env_reset']= array('NAME' =>'env_reset' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'TRUE'); + $option['use_loginclass']= array('NAME' =>'use_loginclass' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['noexec']= array('NAME' =>'noexec' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['ignore_local_sudoers']= array('NAME' =>'ignore_local_sudoers' , 'TYPE' => 'BOOLEAN' , 'DEFAULT' => 'FALSE'); + $option['passwd_tries']= array('NAME' =>'passwd_tries' , 'TYPE' => 'INTEGER' , 'DEFAULT' => 3); + $option['loglinelen']= array('NAME' =>'loglinelen' , 'TYPE' => 'BOOL_INTEGER' , 'DEFAULT' => 80); + $option['timestamp_timeout']= array('NAME' =>'timestamp_timeout' , 'TYPE' => 'BOOL_INTEGER' , 'DEFAULT' => 0); + $option['passwd_timeout']= array('NAME' =>'passwd_timeout' , 'TYPE' => 'BOOL_INTEGER' , 'DEFAULT' => 15); + $option['umask']= array('NAME' =>'umask' , 'TYPE' => 'BOOL_INTEGER' , 'DEFAULT' => "0022"); + $option['mailsub']= array('NAME' =>'mailsub' , 'TYPE' => 'STRING' , 'DEFAULT' => '*** SECURITY information for %h ***'); + $option['badpass_message']= array('NAME' =>'badpass_message' , 'TYPE' => 'STRING' , 'DEFAULT' => 'Sorry, try again'); + $option['timestampdir']= array('NAME' =>'timestampdir' , 'TYPE' => 'STRING' , 'DEFAULT' => '/var/run/sudo'); + $option['timestampowner']= array('NAME' =>'timestampowner' , 'TYPE' => 'STRING' , 'DEFAULT' => 'root'); + $option['passprompt']= array('NAME' =>'passprompt' , 'TYPE' => 'STRING' , 'DEFAULT' => '[sudo] password for %p: '); + $option['runas_default']= array('NAME' =>'runas_default' , 'TYPE' => 'STRING' , 'DEFAULT' => 'root'); + $option['syslog_goodpri']= array('NAME' =>'syslog_goodpri' , 'TYPE' => 'STRING' , 'DEFAULT' => 'notice'); + $option['syslog_badpri']= array('NAME' =>'syslog_badpri' , 'TYPE' => 'STRING' , 'DEFAULT' => 'alert'); + $option['editor']= array('NAME' =>'editor' , 'TYPE' => 'STRING' , 'DEFAULT' => '/usr/bin/vi'); + $option['noexec_file']= array('NAME' =>'noexec_file' , 'TYPE' => 'STRING' , 'DEFAULT' => '/usr/lib/sudo/sudo_noexec.so'); + $option['lecture']= array('NAME' =>'lecture' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => 'once'); + $option['lecture_file']= array('NAME' =>'lecture_file' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => ''); + $option['logfile']= array('NAME' =>'logfile' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => 'syslog'); + $option['syslog']= array('NAME' =>'syslog' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => 'authpriv'); + $option['mailerpath']= array('NAME' =>'mailerpath' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => ''); + $option['mailerflags']= array('NAME' =>'mailerflags' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => '-t'); + $option['mailto']= array('NAME' =>'mailto' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => 'root'); + $option['exempt_group']= array('NAME' =>'exempt_group' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => 'root'); + $option['verifypw']= array('NAME' =>'verifypw' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => 'all'); + $option['listpw']= array('NAME' =>'listpw' , 'TYPE' => 'STRING_BOOL' , 'DEFAULT' => 'any'); + $option['env_check']= array('NAME' =>'env_check' , 'TYPE' => 'LISTS' , 'DEFAULT' => ''); + $option['env_delete']= array('NAME' =>'env_delete' , 'TYPE' => 'LISTS' , 'DEFAULT' => ''); + $option['env_keep']= array('NAME' =>'env_keep' , 'TYPE' => 'LISTS' , 'DEFAULT' => ''); + ksort($option); + $this->options = $option; + + $this->load_options(); + } + + + private function load_options() + { + + /**** + Parse given sudoOption attributes + ****/ + $this->sudoOption = array(); + if(isset($this->attrs['sudoOption'])){ + for($i = 0 ; $i < $this->attrs['sudoOption']['count']; $i++){ + + /**** + Detect attribute name/value/negation + ****/ + $opt = $this->attrs['sudoOption'][$i]; + + /* Get negation */ + $negation = FALSE; + if(preg_match("/^!/",$opt)){ + $negation = TRUE; + $opt = preg_replace("/^!/","",$opt); + } + + /* Get value / name*/ + $value = ""; + if(preg_match("/=/",$opt)){ + $value = preg_replace("/^[^=]*+=/","",$opt); + $opt = preg_replace("/=.*$/","",$opt); + } + + /* Special chars are escaped, remove escape char now. + \\ => \ + \: => : + \, => , + \= => = + */ + $value = $this->unescape_command($value); + + /* Check if the given value is part of our options list. + If it is not, add it as type STRING and display a warning. + */ + if(!isset($this->options[$opt])){ + $this->options[$opt]=array('NAME'=>$opt,'TYPE'=>'STRING','DEFAULT' => ''); + msg_dialog::display(_("Unknown option"), + sprintf(_("The sudo option '%s' is invalid!"), + $opt),WARNING_DIALOG); + } + + /* Create internal sudoOption object */ + $option = array(); + $option['NAME'] = $opt; + $option['VALUE'] = $value; + $option['NEGATE'] = $negation; + + /* Special handling for mixed flag types. + Some attributes like (BOOL_INTEGER) can be TRUE/FALSE and INTEGER. + This means, if the value is empty it is BOOL and $negation defines its boolean value. + */ + if(in_array($this->options[$opt]['TYPE'],array("BOOL_INTEGER","STRING_BOOL"))){ + if(empty($value)){ + $option['NEGATE'] = FALSE; + if($negation){ + $option['VALUE'] = "FALSE"; + }else{ + $option['VALUE'] = "TRUE"; + } + } + } + + /* Special handling for BOOLEAN values */ + if(in_array($this->options[$opt]['TYPE'],array("BOOLEAN"))){ + $option['NEGATE'] = FALSE; + if($negation){ + $option['VALUE'] = "FALSE"; + }else{ + $option['VALUE'] = "TRUE"; + } + } + + /* Append values */ + $this->sudoOption[$opt][] = $option; + } + } + } + + + + /*! \brief Create HTML output for this plugin + @return String HTML output for this plugin. + */ + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /***** + Handle Posts + *****/ + if($this->acl_is_writeable("")){ + + foreach($_POST as $name => $value){ + + if(preg_match("/^negOption_/",$name)){ + + $opt = preg_replace("/^negOption_/","",$name); + $opt = preg_replace("/_[^_]*$/","",$opt); + $id = preg_replace("/^.*_([0-9])*$/","\\1",$opt); + $opt = preg_replace("/_[0-9]*$/","",$opt); + + if(isset($this->sudoOption[$opt][$id])){ + $val = $this->sudoOption[$opt][$id]["VALUE"]; + + /***** + Negate STRING_BOOL && BOOL_INTEGER + *****/ + if(in_array($this->options[$opt]['TYPE'],array('STRING_BOOL','BOOL_INTEGER'))){ + if(in_array($val, array("TRUE","FALSE"))){ + if($val == "TRUE"){ + $this->sudoOption[$opt][$id]["VALUE"] = "FALSE"; + }else{ + $this->sudoOption[$opt][$id]["VALUE"] = "TRUE"; + } + }else{ + $this->sudoOption[$opt][$id]['NEGATE'] = !$this->sudoOption[$opt][$id]['NEGATE']; + } + } + + /***** + Negate STRING / INTEGER + *****/ + if(in_array($this->options[$opt]['TYPE'],array('STRING','INTEGER','LISTS'))){ + $this->sudoOption[$opt][$id]['NEGATE'] = !$this->sudoOption[$opt][$id]['NEGATE']; + } + + /***** + Negate BOOLEAN + *****/ + if(in_array($this->options[$opt]['TYPE'],array('BOOLEAN'))){ + if($val == "TRUE"){ + $this->sudoOption[$opt][$id]["VALUE"] = "FALSE"; + }else{ + $this->sudoOption[$opt][$id]["VALUE"] = "TRUE"; + } + } + } + break; + } + + /***** + Remove options + *****/ + if(preg_match("/^delOption/",$name)){ + $opt = preg_replace("/^delOption_/","",$name); + $opt = preg_replace("/_[^_]*$/","",$opt); + $id = preg_replace("/^.*_([0-9])*$/","\\1",$opt); + $opt = preg_replace("/_[0-9]*$/","",$opt); + + if(isset($this->sudoOption[$opt][$id])){ + unset($this->sudoOption[$opt][$id]); + } + if(!count($this->sudoOption[$opt])){ + unset($this->sudoOption[$opt]); + } + break; + } + } + } + + + $smarty = get_smarty(); + $smarty->assign("ACL",$this->getacl("")); + $smarty->assign("map", array("STRING" => _("string"), "BOOLEAN" => _("bool"), + "INTEGER" => _("integer") , "BOOL_INTEGER" => _("integer")."-"._("bool") , + "STRING_BOOL" => _("string")."-"._("bool"),"LISTS" => _("list"))); + $smarty->assign("sudoOption",$this->prepare_for_html($this->sudoOption)); + $smarty->assign("options",$this->options); + return($smarty->fetch(get_template_path('options.tpl', TRUE))); + } + + + /*! \brief Prepare options array to be used in HTML. + @param Array The options array ($this->sudoOption) + @return Array HTML ready sudoOption. Can now be used in smarty templates + */ + function prepare_for_html($a_options) + { + foreach($a_options as $name => $options){ + foreach($options as $key => $option){ + $a_options[$name][$key]['VALUE'] = htmlentities($option['VALUE']); + } + } + return($a_options); + } + + + /*! \brief Removes this plugin + */ + function remove_from_parent() + { + } + + + /*! \brief Saves all relevant HTML post values for this plugin + */ + function save_object() + { + if($this->acl_is_writeable("")){ + plugin::save_object(); + + if(isset($_POST['add_option']) && isset($_POST['option'])){ + $opt = get_post("option"); + + /* Append attribute only once, lists are handled below */ + if(isset($this->options[$opt])){ + $type = $this->options[$opt]['TYPE']; + $val = $this->options[$opt]['DEFAULT']; + $option = array("NAME" => $opt, "VALUE" => $val , "NEGATE" => FALSE); + $this->sudoOption[$opt][] = $option; + } + } + + foreach($this->sudoOption as $name => $opts){ + foreach($opts as $id => $opt){ + + /**** + Get posted value for BOOLEAN + ****/ + if(in_array($this->options[$name]['TYPE'],array("BOOLEAN"))){ + if(isset($_POST['option_value__'.$name.'_'.$id])){ + $this->sudoOption[$name][$id]["VALUE"] = get_post('option_value__'.$name.'_'.$id); + } + } + + /**** + Get posted value for STRING / INTEGER + ****/ + if(in_array($this->options[$name]['TYPE'],array("STRING","INTEGER"))){ + if(isset($_POST['option_value__'.$name.'_'.$id])){ + $this->sudoOption[$name][$id]["VALUE"] = get_post('option_value__'.$name.'_'.$id); + } + } + + /**** + Get posted value for STRING_BOOL / BOOL_INTEGER + ****/ + if(in_array($this->options[$name]['TYPE'],array("BOOL_INTEGER","STRING_BOOL"))){ + if(isset($_POST['option_selection__'.$name.'_'.$id])){ + $sel = get_post('option_selection__'.$name.'_'.$id); + $val = ""; + if(isset($_POST['option_value__'.$name.'_'.$id])){ + $val = get_post('option_value__'.$name.'_'.$id); + } + + if($sel == "FALSE" || $sel == "TRUE"){ + $this->sudoOption[$name][$id]['VALUE'] = $sel; + $this->sudoOption[$name][$id]['NEGATE'] = FALSE; + }else{ + $this->sudoOption[$name][$id]['VALUE'] = $val; + } + } + } + + /**** + Get posted value for LISTS + ****/ + if(in_array($this->options[$name]['TYPE'],array("LISTS"))){ + foreach($this->sudoOption[$name] as $entry_key => $entry){ + if(isset($_POST['list_value__'.$name.'_'.$entry_key])){ + $val = get_post('list_value__'.$name.'_'.$entry_key); + $this->sudoOption[$name][$entry_key]["VALUE"] = $val; + } + } + } + } + } + } + } + + + /*! \brief Save changes to ldap + */ + function save() + { + plugin::save(); + + $this->attrs['sudoOption'] = array(); + foreach($this->sudoOption as $name => $opts){ + foreach($opts as $id => $opt){ + + $type = $this->options[$name]['TYPE']; + $neg = $opt['NEGATE']; + $value = $opt['VALUE']; + $option = ""; + + /* Escape special chars */ + $value = $this->escape_command($value); + + /**** + Save LISTS + ****/ + if($type=="LISTS"){ + if($value == ""){ + $option = $name; + }else{ + $option = $name."=".$value; + } + if($neg){ + $option = "!".$option; + } + } + + /**** + Save BOOLEAN + ****/ + if(in_array($type,array("BOOLEAN"))){ + $option = $name; + if($value == "FALSE"){ + $option = "!".$option; + } + } + + /**** + Save STRING / INTEGER + ****/ + if(in_array($type,array("STRING","INTEGER"))){ + if($value != ""){ + $option = $name."=".$value; + }else{ + $option = $name; + } + if($neg){ + $option = "!".$option; + } + } + + /**** + Save STRING_BOOL / BOOL_INTEGER + ****/ + if(in_array($type,array("STRING_BOOL","BOOL_INTEGER"))){ + if($value == "FALSE"){ + $option = "!".$name; + }elseif($value == "TRUE"){ + $option = $name; + }else{ + if($value != ""){ + $option = $name."=".$value; + }else{ + $option = $name; + } + if($neg){ + $option = "!".$option; + } + } + } + + $this->attrs['sudoOption'][] = $option; + } + } + $this->cleanup(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->modify($this->attrs);; + } + + + /*! \brief Checks input validity + */ + function check() + { + $message = plugin::check(); + + foreach($this->sudoOption as $name => $options){ + foreach($options as $id => $option){ + switch($this->options[$name]['TYPE']){ + + /* Check for a valid integer value */ + case 'INTEGER' : + { + if(!preg_match("/^[0-9]*$/",$option['VALUE'])){ + $message[] = msgPool::invalid($name,$option['VALUE'],"/[0-9]/"); + } + } break; + } + } + } + return ($message); + } + + + /*! \brief This function will be called if an object gets copied. + This function adapts attributes from the source object. + @param Array The source object. + */ + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + if(isset($source['sudoOption'])){ + $this->attrs['sudoOption'] = $source['sudoOption']; + $this->load_options(); + } + } + + + /*! \brief Escape special chars in function parameters. + @param String the string to that must be escaped. + */ + private function escape_command($str) + { + /* Check if given value is a command (/[a-z]/ ..) + */ + if(preg_match("/^\//",$str)){ + $cmd = preg_replace("/^([^ ]*).*$/","\\1",$str); + $val = preg_replace("/^[^ ]*(.*)$/","\\1",$str); + $str = $cmd.addcslashes($val,":.,\\"); + } + return($str); + } + + + /*! \brief Add ACL object + @return Returns the ACL object. + */ + static function plInfo() + { + return (array( + "plShortName" => _("Options"), + "plDescription" => _("Sudo options"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 2, + "plSection" => array("administration"), + "plCategory" => array("sudo"), + "plProvidedAcls" => array() + )); + } + + /*! \brief Unescape special chars in function parameters. + @param String the string to that must be unescaped. + */ + private function unescape_command($str) + { + /* Check if given value is a command (/[a-z]/ ..) + */ + if(preg_match("/^\//",$str)){ + $cmd = preg_replace("/^([^ ]*).*$/","\\1",$str); + $val = preg_replace("/^[^ ]*(.*)$/","\\1",$str); + $val = preg_replace(array("/\\\\\\\\/","/\\\\,/","/\\\\:/","/\\\\=/"), + array("\\",",",":","="),$val); + $str = $cmd.$val; + } + return($str); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/sudo/admin/sudo/class_target_list_systems.inc b/trunk/gosa-plugins/sudo/admin/sudo/class_target_list_systems.inc new file mode 100644 index 000000000..81c9de50a --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/class_target_list_systems.inc @@ -0,0 +1,302 @@ +AddCheckBox */ + protected $servers ; + protected $workstations ; + protected $terminals ; + + + /* Subsearch checkbox */ + protected $SubSearch ; + protected $parent ; + public $ui ; + + + function target_list_systems(&$config,$Targets_used) + { + MultiSelectWindow::MultiSelectWindow($config, "Targetselection", array("server","terminal","workstation")); + + $this->Targets_used = $Targets_used; + + $this->SetInformation( _("Select the target objects for your scheduled action.")); + $this->SetTitle( _("Available systems")); + $this->SetSummary( _("Available systems")); + $this->SetHeadpageMode(FALSE); + + /* set Page header */ + $chk = ""; + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + + $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); + $this->AddHeader(array("string" => _("Object name"), "attach" => "style=''")); + + /* Text ,Value, Name, Is selected */ + $this->AddCheckBox("terminal", _("Select to see terminals"), _("Show terminals"), true); + $this->AddCheckBox("server", _("Select to see servers") , _("Show servers"), true); + $this->AddCheckBox("workstation", _("Select to see workstations"),_("Show workstations"), true); + + /* Add SubSearch checkbox */ + $this->AddCheckBox(SEPERATOR); + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name,Text,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Regular expression for matching group names"), "*" , true); + $this->EnableAplhabet(TRUE); + } + + + function GenHeader() + { + $options= ""; + + /* Get all departments within this subtree */ + $ui= get_userinfo(); + $first = ""; + $found = FALSE; + $base = $this->config->current['BASE']; + + /* Add base */ + $tmp = array(); + $tmp[] = array("dn"=>$this->config->current['BASE']); + $tmp= array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $this->module, $base, + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); + + $deps = array(); + foreach($tmp as $tm){ + $deps[$tm['dn']] = $tm['dn']; + } + + /* Load possible departments */ + $tdeps= array(); + $tdeps= array_merge($tdeps,$ui->get_module_departments("server")); + $tdeps= array_merge($tdeps,$ui->get_module_departments("terminal")); + $tdeps= array_merge($tdeps,$ui->get_module_departments("workstation")); + $tdeps = array_unique($tdeps); + + $ids = $this->config->idepartments; + $first = ""; + $found = FALSE; + foreach($ids as $dep => $name){ + if(isset($deps[$dep]) && in_array_ics($dep, $tdeps)){ + + /* Keep first base dn in mind, we could need this + * info if no valid base was found + */ + if(empty($first)) { + $first = $dep['dn']; + } + + $value = $ids[$dep]; + if ($this->selectedBase == $dep){ + $found = TRUE; + $options.= ""; + } else { + $options.= ""; + } + } + } + + /* The currently used base is not visible with your acl setup. + * Set base to first useable base. + */ + if(!$found){ + $this->selectedBase = $first; + } + + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(); + + /* Add department selector */ + $listhead .= _("Base")." ". + "  "; + $listhead .="
  • "; + + $this->SetListHeader($listhead); + } + + + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + $this->reload(); + $this->SetEntries($this->list); + return($this->Draw()); + } + + + function SetEntries($list) + { + /* Add Copy & Paste buttons if copy&paste is enabled + */ + // Defining Links + $editlink = "%s"; + + $ui = get_userinfo(); + + // Assigning systems + foreach($list as $key => $val){ + + if(in_array($val['cn'][0],$this->Targets_used) || + isset($val['macAddress'][0]) && in_array($val['macAddress'][0],$this->Targets_used)) continue; + + $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; + if(!isset($val['description'][0])){ + $desc = ""; + }else{ + $desc = " - [ ".$val['description'][0]." ]"; + } + + $img ="?"; + if(in_array("goServer",$val['objectClass'])){ + $img = ""._("Server").""; + }elseif(in_array("gotoWorkstation",$val['objectClass'])){ + $img = ""._("Workstation").""; + }elseif(in_array("gotoTerminal",$val['objectClass'])){ + $img = ""._("Terminal").""; + } + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field1 = array("string" => $img, + "attach" => "style='text- align:center;width: 20px;'"); + $field2 = array("string" => $val['cn'][0].$desc, + "attach" => "style='border-right:0px;' ".$title); + + $this->AddElement(array($field0,$field1,$field2)); + } + } + + + function save() + { + $ret = array(); + $items = $this->list_get_selected_items(); + foreach($items as $item){ + $ret[] = $this->list[$item]; + } + return($ret); + } + + + function save_object() + { + MultiSelectWindow::save_object(); + } + + + function reload() + { + /* Set base for all searches && initialise some vars */ + $this->list= array(); + $base = $this->selectedBase; + $filter = ""; + $Regex = $this->Regex; + + $filter= "(&(cn=".$Regex.")(|".$filter."))"; + + if($this->SubSearch){ + $res= array(); + if($this->terminal){ + $filter = "(objectClass=gotoTerminal)"; + $filter= "(&(cn=".$Regex.")(|".$filter."))"; + $res= array_merge($res,get_sub_list($filter,"terminal",get_ou('terminalRDN'),$base, + array("cn","objectClass","description"), GL_SIZELIMIT | GL_SUBSEARCH)); + } + if($this->workstation){ + $filter = "(objectClass=gotoWorkstation)"; + $filter= "(&(cn=".$Regex.")(|".$filter."))"; + $res= array_merge($res,get_sub_list($filter, "workstation", get_ou('workstationRDN'),$base, + array("cn","objectClass","description"), GL_SIZELIMIT | GL_SUBSEARCH)); + } + if($this->server){ + $filter = "(objectClass=goServer)"; + $filter = "(&(cn=".$Regex.")(|".$filter."))"; + $res= array_merge($res,get_sub_list($filter, "server", get_ou('serverRDN'),$base, + array("cn","objectClass","description"), GL_SIZELIMIT | GL_SUBSEARCH)); + } + }else{ + $res= array(); + if($this->terminal){ + $filter = "(objectClass=gotoTerminal)"; + $filter= "(&(cn=".$Regex.")(|".$filter."))"; + $res= array_merge($res,get_list($filter,"terminal", get_ou('terminalRDN').$base, + array("cn","objectClass","description"), GL_SIZELIMIT )); + } + if($this->workstation){ + $filter = "(objectClass=gotoWorkstation)"; + $filter= "(&(cn=".$Regex.")(|".$filter."))"; + $res= array_merge($res,get_list($filter, "workstation", get_ou('workstationRDN').$base, + array("cn","objectClass","description"), GL_SIZELIMIT )); + } + if($this->server){ + $filter = "(objectClass=goServer)"; + $filter = "(&(cn=".$Regex.")(|".$filter."))"; + $res= array_merge($res,get_list($filter, "server", get_ou('serverRDN').$base, + array("cn","objectClass","description"), GL_SIZELIMIT )); + } + } + + $this->list= $res; + ksort ($this->list); + reset ($this->list); + $tmp=array(); + foreach($this->list as $tkey => $val ){ + $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val; + } + ksort($tmp); + $this->list=array(); + foreach($tmp as $val){ + $this->list[]=$val; + } + reset ($this->list); + } + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } +} + + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/sudo/admin/sudo/class_target_list_users.inc b/trunk/gosa-plugins/sudo/admin/sudo/class_target_list_users.inc new file mode 100644 index 000000000..c903563e1 --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/class_target_list_users.inc @@ -0,0 +1,284 @@ +AddCheckBox */ + protected $user ; + protected $group ; + + /* Subsearch checkbox */ + protected $SubSearch ; + protected $parent ; + protected $ui ; + + function target_list_users(&$config,$Targets_used) + { + MultiSelectWindow::MultiSelectWindow($config, "Targetselection", array("users")); + + $this->Targets_used = $Targets_used; + + $this->SetInformation( _("Select the target objects")); + $this->SetTitle( _("Available members")); + $this->SetSummary( _("Available members")); + $this->SetHeadpageMode(FALSE); + + /* set Page header */ + $chk = ""; + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + + $this->AddHeader(array("string" => " ", "attach" => "style='text-align:center;width:20px;'")); + $this->AddHeader(array("string" => _("Object name"), "attach" => "style=''")); + + $this->AddCheckBox("user", _("Select to see users") ,_("Show users"), true); + $this->AddCheckBox("group", _("Select to see groups"),_("Show groups"), true); + + /* Add SubSearch checkbox */ + $this->AddCheckBox(SEPERATOR); + + /* Add SubSearch checkbox */ + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name,Text,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Regular expression for matching group names"), "*" , true); + $this->EnableAplhabet(TRUE); + } + + + function GenHeader() + { + $options= ""; + + /* Get all departments within this subtree */ + $ui= get_userinfo(); + $first = ""; + $found = FALSE; + $base = $this->config->current['BASE']; + + /* Add base */ + $tmp = array(); + $tmp[] = array("dn"=>$this->config->current['BASE']); + $tmp= array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $this->module, $base, + array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH)); + + $deps = array(); + foreach($tmp as $tm){ + $deps[$tm['dn']] = $tm['dn']; + } + + /* Load possible departments */ + $ui= get_userinfo(); + $tdeps= $ui->get_module_departments("users"); + $ids = $this->config->idepartments; + $first = ""; + $found = FALSE; + foreach($ids as $dep => $name){ + if(isset($deps[$dep]) && in_array_ics($dep, $tdeps)){ + + /* Keep first base dn in mind, we could need this + * info if no valid base was found + */ + if(empty($first)) { + $first = $dep['dn']; + } + + $value = $ids[$dep]; + if ($this->selectedBase == $dep){ + $found = TRUE; + $options.= ""; + } else { + $options.= ""; + } + } + } + + /* The currently used base is not visible with your acl setup. + * Set base to first useable base. + */ + if(!$found){ + $this->selectedBase = $first; + } + + /* Get copy & paste icon */ + $acls = $ui->get_permissions($this->selectedBase,"user/user"); + $acl_all= $ui->has_complete_category_acls($this->selectedBase,"users"); + + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(); + + /* Add department selector */ + $listhead .= _("Base")." ". + "  "; + $listhead .="
    "; + + $this->SetListHeader($listhead); + } + + + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + $this->reload(); + $this->SetEntries($this->list); + return($this->Draw()); + } + + + function SetEntries($list) + { + /* Add Copy & Paste buttons if copy&paste is enabled + */ + // Defining Links + $editlink = "%s"; + + $ui = get_userinfo(); + + // Assigning users + foreach($list as $key => $val){ + + if(in_array($val['cn'][0],$this->Targets_used)) continue; + + $title = "title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"; + if(!isset($val['description'][0])){ + $desc = ""; + }else{ + $desc = " - [ ".$val['description'][0]." ]"; + } + + $img1 = ""._("User").""; + $img2 = ""._("Group").""; + + if(in_array("posixGroup",$val['objectClass'])){ + $img = $img2; + }else{ + $img = $img1; + } + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field1 = array("string" => $img, + "attach" => "style='text- align:center;width: 20px;'"); + $field2 = array("string" => $val['cn'][0].$desc, + "attach" => "style='border-right:0px;' ".$title); + + $this->AddElement(array($field0,$field1,$field2)); + } + } + + + function save() + { + $ret = array(); + $items = $this->list_get_selected_items(); + foreach($items as $item){ + $ret[] = $this->list[$item]; + } + return($ret); + } + + + function save_object() + { + MultiSelectWindow::save_object(); + } + + + function reload() + { + /* Set base for all searches && initialise some vars */ + $this->list= array(); + $base = $this->selectedBase; + $Regex = $this->Regex; + + /* Create filter */ + + if($this->SubSearch){ + $res = array(); + if($this->user){ + $filter = "(&(objectClass=person)(objectClass=gosaAccount))"; + $filter= "(&(|(cn=".$Regex.")(uid=".$Regex."))(|".$filter."))"; + $res= array_merge($res,get_sub_list($filter, array("users"), array(get_people_ou()),$base, + array("cn","uid","objectClass","description"), GL_SIZELIMIT | GL_SUBSEARCH)); + } + if($this->group){ + $filter = "(objectClass=posixGroup)"; + $filter= "(&(|(cn=".$Regex.")(uid=".$Regex."))(|".$filter."))"; + $res= array_merge($res,get_sub_list($filter, array("groups"), array(get_groups_ou()),$base, + array("cn","uid","objectClass","description"), GL_SIZELIMIT | GL_SUBSEARCH)); + } + }else{ + $res = array(); + if($this->user){ + $filter = "(&(objectClass=person)(objectClass=gosaAccount))"; + $filter= "(&(|(cn=".$Regex.")(uid=".$Regex."))(|".$filter."))"; + $res= array_merge($res,get_list($filter, array("users"), get_people_ou().$base, + array("cn","uid","objectClass","description"), GL_SIZELIMIT )); + } + if($this->group){ + $filter = "(objectClass=posixGroup)"; + $filter= "(&(|(cn=".$Regex.")(uid=".$Regex."))(|".$filter."))"; + $res= array_merge($res,get_list($filter, array("groups"), get_groups_ou().$base, + array("cn","uid","objectClass","description"), GL_SIZELIMIT )); + } + } + + $this->list= $res; + ksort ($this->list); + reset ($this->list); + $tmp=array(); + foreach($this->list as $tkey => $val ){ + $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val; + } + ksort($tmp); + $this->list=array(); + foreach($tmp as $val){ + $this->list[]=$val; + } + reset ($this->list); + } + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/sudo/admin/sudo/generic.tpl b/trunk/gosa-plugins/sudo/admin/sudo/generic.tpl new file mode 100644 index 000000000..5b59078a8 --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/generic.tpl @@ -0,0 +1,145 @@ +{if $is_default} + +

    {t}Generic{/t} - {t}global defaults{/t}

    + + + + + + + + + +
    + {t}Name{/t}{$must} + + +
    + {t}Description{/t} + + {render acl=$descriptionACL} + + {/render} +
    + +{else} + + + + + + + + + + + + + + + + +
    +

    {t}Generic{/t}

    + + + + + + + + + +
    + {t}Name{/t}{$must} + + {render acl=$cnACL} + + {/render} +
    + {t}Description{/t} + + {render acl=$descriptionACL} + + {/render} +
    +
    +

      {t}System trust{/t}

    + {t}Trust mode{/t}  + {render acl=$trustModelACL} + +
    + {/render} + {render acl=$trustModelACL} + + {/render} +
    + {render acl=$trustModelACL} +   + {/render} + {render acl=$trustModelACL} + + {/render} + +

     

    +

     {t}Users and groups{/t}

    + {render acl=$sudoUserACL} + {$divlist_sudoUser} + {/render} + {render acl=$sudoUserACL} + + {/render} + {render acl=$sudoUserACL} + + {/render} + {render acl=$sudoUserACL} + + {/render} +
    +

     {t}Systems{/t}

    + {render acl=$sudoHostACL} + {$divlist_sudoHost} + {/render} + {render acl=$sudoHostACL} + + {/render} + {render acl=$sudoHostACL} + + {/render} + {render acl=$sudoHostACL} + + {/render} +

     

    +

     {t}Commands{/t}

    + {render acl=$sudoCommandACL} + {$divlist_sudoCommand} + {/render} + {render acl=$sudoCommandACL} + + {/render} + {render acl=$sudoCommandACL} + + {/render} +
    +

     {t}Run as{/t}

    + {render acl=$sudoRunAsACL} + {$divlist_sudoRunAs} + {/render} + {render acl=$sudoRunAsACL} + + {/render} + {render acl=$sudoRunAsACL} + + {/render} +
    +{/if} diff --git a/trunk/gosa-plugins/sudo/admin/sudo/main.inc b/trunk/gosa-plugins/sudo/admin/sudo/main.inc new file mode 100644 index 000000000..e30efdd7b --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/main.inc @@ -0,0 +1,69 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('sudoManagement'); +}else{ + + /* Create sudoManagement object on demand */ + if (!session::is_set('sudoManagement')){ + session::set('sudoManagement',new sudoManagement ($config, $ui)); + } + $sudoManagement = session::get('sudoManagement'); + $sudoManagement->save_object(); + $output= $sudoManagement->execute(); + + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header(get_template_path('plugins/sudo/images/sudo.png'), + _("Sudo role administration"), "\"\" ". + LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path('plugins/sudo/images/sudo.png'), _("Sudo role administration")); + } + + $display.= $output; + + /* Reset requested? */ + if (isset($_GET['reset']) && $_GET['reset'] == 1){ + session::un_set ('sudoManagement'); + } + + /* Show and save dialog */ + session::set('sudoManagement',$sudoManagement); +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/sudo/admin/sudo/options.tpl b/trunk/gosa-plugins/sudo/admin/sudo/options.tpl new file mode 100644 index 000000000..6df2a0b36 --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/options.tpl @@ -0,0 +1,120 @@ +

    Used sudo role options

    + + + + + + + + +{foreach from=$sudoOption item=item key=key} + {foreach from=$item item=entry key=entry_key} + + + + + + + {/foreach} +{/foreach} +
    {t}Option name{/t}{t}Value{/t}{t}Options{/t}
    {$key} + {if $entry.NEGATE} + ! + {/if} + +{render acl=$ACL} + {if $options[$entry.NAME].TYPE == "STRING"} + + + {elseif $options[$entry.NAME].TYPE == "LISTS"} + + + {elseif $options[$entry.NAME].TYPE == "INTEGER"} + + + {elseif $options[$entry.NAME].TYPE == "BOOLEAN"} + + + {elseif $options[$entry.NAME].TYPE == "BOOL_INTEGER"} + + + + {elseif $options[$entry.NAME].TYPE == "STRING_BOOL"} + + + + {/if} +{/render} + +{render acl=$ACL} + +{/render} +{render acl=$ACL} + +{/render} +
    + +

     

    +
    +

    {t}Available options{/t}:

    +{render acl=$ACL} + +{/render} + +{render acl=$ACL} + +{/render} + + + + diff --git a/trunk/gosa-plugins/sudo/admin/sudo/paste_generic.tpl b/trunk/gosa-plugins/sudo/admin/sudo/paste_generic.tpl new file mode 100644 index 000000000..0d5a10b91 --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/paste_generic.tpl @@ -0,0 +1,11 @@ +

    {t}Generic{/t} - {t}global defaults{/t}

    + + + + + +
    + {t}Name{/t} + + +
    diff --git a/trunk/gosa-plugins/sudo/admin/sudo/remove.tpl b/trunk/gosa-plugins/sudo/admin/sudo/remove.tpl new file mode 100644 index 000000000..0af6a99ed --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/remove.tpl @@ -0,0 +1,17 @@ +
    +  {t}Warning{/t} +
    +

    + {$info} +

    + +

    + {t}If you're sure, press 'Delete' to continue or 'Cancel' to abort.{/t} +

    + +

    + +   + +

    + diff --git a/trunk/gosa-plugins/sudo/admin/sudo/tabs_sudo.inc b/trunk/gosa-plugins/sudo/admin/sudo/tabs_sudo.inc new file mode 100644 index 000000000..34aa4cafc --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/tabs_sudo.inc @@ -0,0 +1,64 @@ +addSpecialTabs(); + } + + function set_default($state) + { + if(isset($this->by_object['sudo'])){ + $this->by_object['sudo']->set_default($state); + } + } + + function save($ignore_account= FALSE) + { + $baseobject= $this->by_object['sudo']; + + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + $new_dn= 'cn='.$baseobject->get_cn().','.sudo::get_sudoers_ou($baseobject->config); + + /* Move group? */ + if ($this->dn != $new_dn){ + + /* Write entry on new 'dn' */ + if ($this->dn != "new"){ + $baseobject->update_acls($this->dn,$new_dn); + $baseobject->move($this->dn, $new_dn); + $this->by_object['sudo']= $baseobject; + } + + /* Happen to use the new one */ + $this->dn= $new_dn; + } + $ret= tabs::save(); + return $ret; + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/sudo/admin/sudo/trust_machines.tpl b/trunk/gosa-plugins/sudo/admin/sudo/trust_machines.tpl new file mode 100644 index 000000000..f7b0b2ca2 --- /dev/null +++ b/trunk/gosa-plugins/sudo/admin/sudo/trust_machines.tpl @@ -0,0 +1,42 @@ + + + + + +
    +
    +

    + {t}Select systems to add{/t} {$hint}
    +

    +
    +
    +

    + +

    +
    +
    +
    +

    [F]{ +t}Filters{/t}

    +
    +
    + + {$alphabet} +
    + +
     {t}Display systems of department{/t}
    + +
     {t}Display systems matching{/t}
    + {$apply} +
    +
    + +

    + +   + +

    diff --git a/trunk/gosa-plugins/sudo/contrib/sudo.ldif b/trunk/gosa-plugins/sudo/contrib/sudo.ldif new file mode 100644 index 000000000..7d8c2f396 --- /dev/null +++ b/trunk/gosa-plugins/sudo/contrib/sudo.ldif @@ -0,0 +1,9 @@ +dn: cn=sudo,cn=schema,cn=config +objectClass: olcSchemaConfig +cn: sudo +olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' DESC 'User(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.2 NAME 'sudoHost' DESC 'Host(s) who may run sudo' EQUALITY caseExactIA5Match SUBSTR caseExactIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.3 NAME 'sudoCommand' DESC 'Command(s) to be executed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.4 NAME 'sudoRunAs' DESC 'User(s) impersonated by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcAttributeTypes: ( 1.3.6.1.4.1.15953.9.1.5 NAME 'sudoOption' DESC 'Options(s) followed by sudo' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) +olcObjectClasses: ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL DESC 'Sudoer Entries' MUST ( cn ) MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoOption $ description ) ) diff --git a/trunk/gosa-plugins/sudo/contrib/sudo.schema b/trunk/gosa-plugins/sudo/contrib/sudo.schema new file mode 100644 index 000000000..1790d039a --- /dev/null +++ b/trunk/gosa-plugins/sudo/contrib/sudo.schema @@ -0,0 +1,44 @@ +# +# schema file for sudo +# + +attributetype ( 1.3.6.1.4.1.15953.9.1.1 + NAME 'sudoUser' + DESC 'User(s) who may run sudo' + EQUALITY caseExactIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.15953.9.1.2 + NAME 'sudoHost' + DESC 'Host(s) who may run sudo' + EQUALITY caseExactIA5Match + SUBSTR caseExactIA5SubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.15953.9.1.3 + NAME 'sudoCommand' + DESC 'Command(s) to be executed by sudo' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.15953.9.1.4 + NAME 'sudoRunAs' + DESC 'User(s) impersonated by sudo' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +attributetype ( 1.3.6.1.4.1.15953.9.1.5 + NAME 'sudoOption' + DESC 'Options(s) followed by sudo' + EQUALITY caseExactIA5Match + SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) + +objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL + DESC 'Sudoer Entries' + MUST ( cn ) + MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoOption $ + description ) + ) + + diff --git a/trunk/gosa-plugins/sudo/help/guide.xml b/trunk/gosa-plugins/sudo/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/sudo/html/images/list_new_sudo.png b/trunk/gosa-plugins/sudo/html/images/list_new_sudo.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ff243b85f2d80a576da5225b81ce0793057841 GIT binary patch literal 777 zcmV+k1NQuhP)oe`{G-n1L>1#4rFLfG`YT1giP__YZ@fo(hAR znKpx_rV>z$QPI-UfPt5nhXLIs00G2;%>ZVgGd_L##_;|7F9tq7ZU#$BJv&iRfmy(C z-~=k+1{$*c-@kvefnH+(2p|jtzJ6t3c>n$jFdV)x7#S%6ZDj)qD+9%qKY#uT45Pn5 zH9rD@VZ#qJum>Q3Pz?C-gMs1Ow;$kG0J(yl9U;xl%>axcPKMX7KQMg${23TF9Nj;E zeij1=Ab1#ny!PwYZw3|?CZHq>$lna;0nft12n=9W21!X#1{D=K1}-j+LVy5*8}REF z$p6gXFu(;svB1vG${;Q-%pff-0yL170U&@_Kmmbl0}~SqFcv_HF(L@)yN<0EYv}D}Vklf^C8% zb4IW?kpVye!3_Y}qO2^-ps%k6POks|{|0MhWn}<|#lL^7K>8mL|AD4hCa^d_0I?t^ zVPFblIC}IvG+q4vdGqE25c3O^4|WxV{THnM%a`we00ImEj`sC{+hY1`00000NkvXX Hu0mjfs4zfj literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/sudo/html/images/negate.png b/trunk/gosa-plugins/sudo/html/images/negate.png new file mode 100644 index 0000000000000000000000000000000000000000..3240b29d5c73c3c783d9352d4cf0aefff0c5f4b8 GIT binary patch literal 745 zcmVz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;Ur9tkRCwBA{Qv(y10y3N13Ea(z!1Qus94WyXJ^2~ z$H(vwD0YA8(gV)#-Z{e5fb@a@KmZ{as0J9^wX^&G|Mcnq|IeI(3~%0GV4aW?&}aDg z_c_D`Nci!qR}5bn7$$-ZzybgQ2yBRM;k6I%-hQ3P!StEootZF(As>N(oDPgJ1{?q& zfZ(z7?=QoI=NFHC;Bhf$c*pt?VF=I_-+%mIzy|;V2yTc)^|cSLUjHg&`gE7!S)d*R z!~6GO{OQXVh8sVBZop>9eahW)b`80PmPr3rMsAPf*d z7=~;v)l7J_G3x*RNg?+c2mqKN00D$G1MX|kzW?rg$N%}M8VST00uVr0ll`kVe+xg{ zI?kYGWmnHY1ONyitS$k8omFc4U!Q9FKRHIdfsji80*DEhg2ykJ8c*yv%oe`{G-n1L>1#4rFLfG`YT1giP__YZ@fo(hAR znKpx_rV>z$QPI-UfPt5nhXLIs00G2;%>ZVgGd_L##_;|7F9tq7ZU#$BJv&iRfmy(C z-~=k+1{$*c-@kvefnH+(2p|jtzJ6t3c>n$jFdV)x7#S%6ZDj)qD+9%qKY#uT45Pn5 zH9rD@VZ#qJum>Q3Pz?C-gMs1Ow;$kG0J(yl9U;xl%>axcPKMX7KQMg${23TF9Nj;E zeij1=Ab1#ny!PwYZw3|?CZHq>$lna;0nft12n=9W21!X#1{D=K1}-j+LVy5*8}REF z$p6gXFu(;svB1vG${;Q-%pff-0yL170U&@_Kmmbl0}~SqFcv_HF(L@)yN<0EYv}D}Vklf^C8% zb4IW?kpVye!3_Y}qO2^-ps%k6POks|{|0MhWn}<|#lL^7K>8mL|AD4hCa^d_0I?t^ zVPFblIC}IvG+q4vdGqE25c3O^4|WxV{THnM%a`we00ImEj`sC{+hY1`00000NkvXX Hu0mjfs4zfj literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/sudo/html/images/select_workstation.png b/trunk/gosa-plugins/sudo/html/images/select_workstation.png new file mode 100644 index 0000000000000000000000000000000000000000..33df4ef938ac9c6f4fe7cc0c29dfe43ae3877495 GIT binary patch literal 817 zcmV-11J3-3P)r0x_7B6f(|?yng-0r)z6#-#7rv@4oY1H!1nw z{VWEHRM;FXFLiVoHoq9`K@Q~LdclWw2SuD;5`n{Qki09;pz!%obd-(#LXj2V5- zW2BN(C`ybmL}AYHla%&RNZ5<{`0#{0PbGi@pp-%?N!pLlaZIc%=oH6Q7-Pv&O&Vs{ zG($%TVZTqNa|QsZ6jDh3dekAy1=Z>ZrIL$M60l^MAq*3m%^vY_gfTht^i5AM5CX?_ zD0&5wSaaNq$Wo0|5^Et%GQuz=4pXEORSpGLFvJN4O(k-rpWUmh!R3bDxT%2dmNv31Q;J5f4N?--%v`Z=@+NY zE?-{0I59C%NRkAT8?3eL?mY|}ji1*aKW_c0b?!78jqiHB-meU6X=&-By}i9BoleK@ z@9*1It7V(brrq4!v9rAFVak8pg)P2!a6L z_p83|zcQQ={8zG8tG&OtxcI^B>`QYOE?j!6+wCUz?{ECJySw{vef{3|tybp;AmM)` z&!4ZCPwj+%?%Zo1-o1OTb@S$z+mn+smw_U{%*@5o@Zy2-ylQQAb@i7sXQqR8yKP5D z{mRtT3&L8<#>O8eNpx?1eqL>FKRCH|ZRKr9cAgaph@y6Q`}Ws&N~J;|gzL=B&7O5# vM=2#mtJO(&cD6Rl<&nJK@28Mt|K|PyJSAkZgeEE<00000NkvXXu0mjfa~Om1 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/sudo/html/images/sudo.png b/trunk/gosa-plugins/sudo/html/images/sudo.png new file mode 100644 index 0000000000000000000000000000000000000000..c7060f5e670d4675ce91021be23561a3592c0ed5 GIT binary patch literal 2232 zcmW+&dpK0<8eeNJYX&oB1~D$fl2ZxA;1L?lnn9s3n|9=s%rq|T>PSaIE;Gn=LLHSh zF_ogNL>o!PFs?n0CaFltb)$BAZ<@qvrUVF%@da3{bklo!} ze9&t3^AI8Q_QU*0LkljHcLY=;iy3LpUa3f&4P z2!*v<|6{h6u=Ko=(Goo`78|+Ef=n9(s3Kw7b$%$73n9V5%tQ5&8T_f9+vPd?o~>NT z(KmQbN?d2M)_!CSt7>Y>6V>e?%OIbn)1S=b$8$%;`7~HW=Xa)Eym(PBnPr|YgI zt~Ad)Jh4&!$Ln+Sui)iDXv7ZyU5=4VF%i=8^73R9|9WaF)F_dV3-ui#(ddt?h0gv)!HO^U+q-@x8_lbNR>kPwY!=O_~f_i85baEg)>XL`Hz zjh@F=tF|Bsr(1Wtf!EO9Q8;h?!N0V6df8%L+$J;xU4GN>!8yipLqhHxNl4g*WwY6= z>crJ0S1rgfkH54qMWWGYBy`>oAU1Ef>zYlFe5a!$9f<**^L>6gd?f2@EU}rkRXx^}S>DG-e)E1+xv1aOyVI*VmI?zI;iFjg6I( z$j!duW?zvKq^=`pwGe>zS$uwVbu~iDBRCio+;W@ky5XEgzhZHayRYY&O3MZ$j+}0U zne~puqwMV49B3at__QuRpPm~2v4Iw8z%)dW`8*yE2tCCb(x)zRZ2mq6uU+t@q0n=( zlwZpaw1TgUvv)xs}@3wqXeds7M`4Iyo`%)`&_4wr_Rw9Ia!C{{&D$6O_}@h7 z=^ZI=-W*6cVeFl`=hR(%20Lahg*P~lA32FU)%c`x&z%U1Dr00c|J}<>@N+oVoluOO zox*N_9vo@hd}pu|8i`l@t|Zu@gQg6FeEx8fLczP#h<|8yW??-B<&o3(ZfyEw#_rBRd1Y=aXdUS%Pyt$DRv(qSTD9_=|sOGT`6hBw?ru% zhizg*pr1H>@#||069`>EpOtB^kyEV8eqWueEfR4wwmJdHz>5F@=lH-pJANsT!{sKG zWu|MjCwnl)cI#&pQ3>CSkX1n><^OM{R|GzLF0H8WQru{X#cAC#VkZcd%Zrxo40T&d zI>;o{`e?$UT)gc1l(}DpRo}pXjmTr8#{f$@XPDyt#Y+5l2%it0)9YP29~J0dbw&wd zi1Iz`gq5JaNq+zbEG&e24%cm^aKwS>6x`kLZ#qv8)!Yl1Ii4Jp84?l?# z@7w?*9svXg!!cbSMt4`2WF(r3CKA3K-i7jR|Ib^nH!E?i5bQgPKg;0gQVVWz)FD2# zpqENGJ5ptD-~bUp5y1T}bCnq46^l|9h$$>A9I95)#{n@!t)8*$Pfa}z+exbNC92cp z>Xr6N5-jppyc;T(ngr5;ygPT9Q7J{;5e|kfCYy@W6eF6qOtC~*NLfj)ZFD-uTuC** zJ~|KhkPfBRx-qSFP_ib(_p4`sD)l{4EMjs1PSG&C4PHz7FBa8IU`0i%PSRM(zjKrO z`upA6ig(2)waQ}3wloMnUk7p2Sdu6pu3T)N7to1!aB){z4SiA6BpFa=99hlYriuNj zCghrsW=9cu=nDj()8pJxkoO8}JA`NG)T?eg-*EI#3c9}6*eBv>29@wjfW@WJXx?nx zkGbIds=dMAsXx?E>&}-`;2srR}PIrk^kR6asxE;gma8A?ZWKSb{ zUGaOvg4AFU@q(9)^Og;p!3f;GTvR8Lt>0t=kHU4cjo95Y-#+{K`$D!9;CG8UHS+4T zl52!R6E1)FjCPns3pN5wXZ%y;*1PPUA6a_lZPLX-L=35SX%hP!{iR^h#w7$9#yVxl44wWFtUqiLrFVT7URfqFkD zo)~u@`xVWpNOI< zVGX2D$_WKO@=~lb8jsz!=4#amz&Lpm{2dY;pOlJ-;(l#j8w+UJA@y8*W%=$v2*k-689@gS%nDRss&?9vYmdCFS>z4PX7BL6f(Z~kORYWCYo v=VSB&-MfMn?3qbR(=`=OGcC&=fM^BiEO=_YK)%Y+uLt1n>g7_w4NCeSAC0gn literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/sudo/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/sudo/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..0c86ab3bc --- /dev/null +++ b/trunk/gosa-plugins/sudo/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,368 @@ +# translation of messages.po to deutsch +# translation of messages.po to +# Header entry was created by KBabel! +# +# Cajus Pollmeier , 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2008-12-03 15:08+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/sudo/remove.tpl:2 +msgid "Warning" +msgstr "Warnung" + +#: admin/sudo/remove.tpl:9 +msgid "If you're sure, press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Wenn Sie sicher sind, klicken Sie auf 'Entfernen' um fortzufahren oder " +"'Abbrechen' um die Aktion abzubrechen." + +#: admin/sudo/class_sudoGeneric.inc:295 +msgid "Error" +msgstr "Fehler" + +#: admin/sudo/class_sudoGeneric.inc:337 +msgid "disabled" +msgstr "deaktiviert" + +#: admin/sudo/class_sudoGeneric.inc:338 +msgid "full access" +msgstr "Vollzugriff" + +#: admin/sudo/class_sudoGeneric.inc:339 +msgid "allow access to these hosts" +msgstr "erlaube Zugriff auf diese Hosts" + +#: admin/sudo/class_sudoGeneric.inc:384 +#: admin/sudo/class_target_list_users.inc:177 +msgid "User" +msgstr "Benutzer" + +#: admin/sudo/class_sudoGeneric.inc:385 +#: admin/sudo/class_target_list_users.inc:178 +msgid "Group" +msgstr "Gruppe" + +#: admin/sudo/class_sudoGeneric.inc:533 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/sudo/class_sudoGeneric.inc:547 admin/sudo/class_sudoGeneric.inc:552 +#: admin/sudo/class_sudoGeneric.inc:557 admin/sudo/class_sudoGeneric.inc:566 +#: admin/sudo/class_sudoGeneric.inc:669 admin/sudo/generic.tpl:7 +#: admin/sudo/generic.tpl:34 admin/sudo/paste_generic.tpl:5 +#: admin/sudo/class_divListSudo.inc:78 +msgid "Name" +msgstr "Name" + +#: admin/sudo/class_sudoGeneric.inc:660 +msgid "Sudo" +msgstr "Sudo" + +#: admin/sudo/class_sudoGeneric.inc:661 admin/sudo/class_sudoGeneric.inc:666 +#: admin/sudo/class_sudoManagement.inc:262 +msgid "Sudo role" +msgstr "Sudo-Rolle" + +#: admin/sudo/class_sudoGeneric.inc:670 admin/sudo/generic.tpl:15 +#: admin/sudo/generic.tpl:44 +msgid "Description" +msgstr "Beschreibung" + +#: admin/sudo/class_sudoGeneric.inc:671 +msgid "Users" +msgstr "Benutzer" + +#: admin/sudo/class_sudoGeneric.inc:672 +msgid "Host" +msgstr "System" + +#: admin/sudo/class_sudoGeneric.inc:673 +msgid "Command" +msgstr "Kommando" + +#: admin/sudo/class_sudoGeneric.inc:674 +msgid "Run as user" +msgstr "Als Benutzer ausführen" + +#: admin/sudo/class_sudoGeneric.inc:675 +msgid "Access control list" +msgstr "Zugriffsberechtigungen" + +#: admin/sudo/options.tpl:5 +msgid "Option name" +msgstr "Options-Name" + +#: admin/sudo/options.tpl:7 +msgid "Value" +msgstr "Wert" + +#: admin/sudo/options.tpl:8 admin/sudo/class_sudoOption.inc:536 +msgid "Options" +msgstr "Optionen" + +#: admin/sudo/options.tpl:86 +msgid "Available options" +msgstr "Verfügbare Optionen" + +#: admin/sudo/generic.tpl:3 admin/sudo/generic.tpl:30 +#: admin/sudo/paste_generic.tpl:1 +msgid "Generic" +msgstr "Allgemein" + +#: admin/sudo/generic.tpl:3 admin/sudo/paste_generic.tpl:1 +msgid "global defaults" +msgstr "globale Vorgaben" + +#: admin/sudo/generic.tpl:55 +msgid "System trust" +msgstr "System-Vertrauen" + +#: admin/sudo/generic.tpl:56 +msgid "Trust mode" +msgstr "Vertrauens-Modus" + +#: admin/sudo/generic.tpl:87 +msgid "Users and groups" +msgstr "Benutzer und Gruppen" + +#: admin/sudo/generic.tpl:98 admin/sudo/generic.tpl:113 +msgid "Add from list" +msgstr "Aus Liste hinzufügen" + +#: admin/sudo/generic.tpl:102 +msgid "Systems" +msgstr "Systeme" + +#: admin/sudo/generic.tpl:120 +msgid "Commands" +msgstr "Kommandos" + +#: admin/sudo/generic.tpl:132 +msgid "Run as" +msgstr "Ausführen als" + +#: admin/sudo/class_target_list_systems.inc:50 +msgid "Select the target objects for your scheduled action." +msgstr "Wählen Sie die Ziel-Objekte für die geplante Aktion." + +#: admin/sudo/class_target_list_systems.inc:51 +#: admin/sudo/class_target_list_systems.inc:52 +msgid "Available systems" +msgstr "Verfügbare Systeme" + +#: admin/sudo/class_target_list_systems.inc:61 +#: admin/sudo/class_target_list_users.inc:58 +msgid "Object name" +msgstr "Objekt-Name" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Select to see terminals" +msgstr "Auswählen um Terminals zu sehen" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Show terminals" +msgstr "Zeige Terminals" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Select to see servers" +msgstr "Auswählen um Server zu sehen" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Show servers" +msgstr "Zeige Server" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Select to see workstations" +msgstr "Auswählen um Arbeitsstationen zu sehen" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Show workstations" +msgstr "Zeige Arbeitsstationen" + +#: admin/sudo/class_target_list_systems.inc:73 +#: admin/sudo/class_target_list_users.inc:70 +msgid "Regular expression for matching group names" +msgstr "Regulärer Ausdruck zum Abgleich der Gruppen-Namen" + +#: admin/sudo/class_target_list_systems.inc:140 +#: admin/sudo/class_target_list_users.inc:137 +msgid "Base" +msgstr "Basis" + +#: admin/sudo/class_target_list_systems.inc:142 +#: admin/sudo/class_target_list_users.inc:139 +msgid "Submit" +msgstr "Übertragen" + +#: admin/sudo/class_target_list_systems.inc:183 +msgid "Server" +msgstr "Server" + +#: admin/sudo/class_target_list_systems.inc:185 +msgid "Workstation" +msgstr "Arbeitsstation" + +#: admin/sudo/class_target_list_systems.inc:187 +msgid "Terminal" +msgstr "Terminal" + +#: admin/sudo/class_target_list_users.inc:47 +msgid "Select the target objects" +msgstr "Wählen Sie die Ziel-Objekte" + +#: admin/sudo/class_target_list_users.inc:48 +#: admin/sudo/class_target_list_users.inc:49 +msgid "Available members" +msgstr "Verfügbare Mitglieder" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Select to see users" +msgstr "Auswählen um Benutzer zu sehen" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Show users" +msgstr "Zeige Benutzer" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Select to see groups" +msgstr "Auswählen um Gruppen zu sehen" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Show groups" +msgstr "Zeige Gruppen" + +#: admin/sudo/class_target_list_users.inc:139 +msgid "Apply" +msgstr "Anwenden" + +#: admin/sudo/main.inc:50 admin/sudo/main.inc:54 +msgid "Sudo role administration" +msgstr "Administration der sudo-Rollen" + +#: admin/sudo/class_sudoOption.inc:154 +msgid "Unknown option" +msgstr "Unbekannte Option" + +#: admin/sudo/class_sudoOption.inc:155 +#, php-format +msgid "The sudo option '%s' is invalid!" +msgstr "Die sudo-Option '%s' ist ungültig!" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:284 +msgid "string" +msgstr "Zeichenkette" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:283 +#: admin/sudo/class_sudoOption.inc:284 +msgid "bool" +msgstr "Bool'sch" + +#: admin/sudo/class_sudoOption.inc:283 +msgid "integer" +msgstr "Ganzzahl" + +#: admin/sudo/class_sudoOption.inc:284 +msgid "list" +msgstr "Liste" + +#: admin/sudo/class_sudoOption.inc:537 +msgid "Sudo options" +msgstr "Sudo-Optionen" + +#: admin/sudo/trust_machines.tpl:6 +msgid "Select systems to add" +msgstr "Wählen Sie die hinzuzufügenden Systeme" + +#: admin/sudo/trust_machines.tpl:26 +msgid "Display systems of department" +msgstr "Zeige Systeme der Abteilung" + +#: admin/sudo/trust_machines.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Wählen Sie die Abteilung auf der die Suche durchgeführt werden soll" + +#: admin/sudo/trust_machines.tpl:30 +msgid "Display systems matching" +msgstr "Zeige Systeme auf die folgendes passt" + +#: admin/sudo/trust_machines.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Regulärer Ausdruck zum Abgleich der Addressen" + +#: admin/sudo/class_divListSudo.inc:51 admin/sudo/class_divListSudo.inc:52 +msgid "List of sudo roles" +msgstr "Liste der sudo-Rollen" + +#: admin/sudo/class_divListSudo.inc:72 +msgid "Select all" +msgstr "Alles auswählen" + +#: admin/sudo/class_divListSudo.inc:78 +msgid "Department" +msgstr "Abteilung" + +#: admin/sudo/class_divListSudo.inc:79 admin/sudo/class_divListSudo.inc:105 +msgid "Actions" +msgstr "Aktionen" + +#: admin/sudo/class_divListSudo.inc:83 +msgid "Regular expression for matching role names" +msgstr "Regulärer Ausdruck zum Abgleich der Rollen-Namen" + +#: admin/sudo/class_divListSudo.inc:85 +msgid "Regular expression for matching role member names" +msgstr "Regulärer Ausdruck zum Abgleich der Mitglieds-Namen" + +#: admin/sudo/class_divListSudo.inc:107 +msgid "Create" +msgstr "Anlegen" + +#: admin/sudo/class_divListSudo.inc:111 +msgid "Role" +msgstr "Rolle" + +#: admin/sudo/class_divListSudo.inc:112 +msgid "Default" +msgstr "Vorgabe" + +#: admin/sudo/class_divListSudo.inc:119 +msgid "Remove" +msgstr "Entfernen" + +#: admin/sudo/class_divListSudo.inc:171 +msgid "Edit this entry" +msgstr "Diesen Eintrag bearbeiten" + +#: admin/sudo/class_divListSudo.inc:178 +msgid "Delete this entry" +msgstr "Diesen Eintrag löschen" + +#: admin/sudo/class_divListSudo.inc:220 +msgid "Number of listed roles" +msgstr "Anzahl der angezeigten Rollen" + +#: admin/sudo/class_sudoManagement.inc:31 +msgid "Sudo roles" +msgstr "Sudo-Rollen" + +#: admin/sudo/class_sudoManagement.inc:32 +msgid "Manage sudo roles" +msgstr "Sudo-Rollen verwalten" + +#: admin/sudo/class_sudoManagement.inc:247 +msgid "Permission" +msgstr "Berechtigung" + +#: admin/sudo/class_sudoManagement.inc:295 +msgid "Permission error" +msgstr "Berechtigungs-Fehler" diff --git a/trunk/gosa-plugins/sudo/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/sudo/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..02dc69236 --- /dev/null +++ b/trunk/gosa-plugins/sudo/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,382 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: admin/sudo/remove.tpl:2 +msgid "Warning" +msgstr "Aviso" + +#: admin/sudo/remove.tpl:9 +msgid "If you're sure, press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:295 +msgid "Error" +msgstr "Error" + +#: admin/sudo/class_sudoGeneric.inc:337 +msgid "disabled" +msgstr "desactivado" + +#: admin/sudo/class_sudoGeneric.inc:338 +msgid "full access" +msgstr "Acceso sin restricciones" + +#: admin/sudo/class_sudoGeneric.inc:339 +msgid "allow access to these hosts" +msgstr "Permitir el acceso a estos equipos" + +#: admin/sudo/class_sudoGeneric.inc:384 +#: admin/sudo/class_target_list_users.inc:177 +msgid "User" +msgstr "Usuario" + +#: admin/sudo/class_sudoGeneric.inc:385 +#: admin/sudo/class_target_list_users.inc:178 +msgid "Group" +msgstr "Grupo" + +#: admin/sudo/class_sudoGeneric.inc:533 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: admin/sudo/class_sudoGeneric.inc:547 admin/sudo/class_sudoGeneric.inc:552 +#: admin/sudo/class_sudoGeneric.inc:557 admin/sudo/class_sudoGeneric.inc:566 +#: admin/sudo/class_sudoGeneric.inc:669 admin/sudo/generic.tpl:7 +#: admin/sudo/generic.tpl:34 admin/sudo/paste_generic.tpl:5 +#: admin/sudo/class_divListSudo.inc:78 +msgid "Name" +msgstr "Nombre" + +#: admin/sudo/class_sudoGeneric.inc:660 +#, fuzzy +msgid "Sudo" +msgstr "Junio" + +#: admin/sudo/class_sudoGeneric.inc:661 admin/sudo/class_sudoGeneric.inc:666 +#: admin/sudo/class_sudoManagement.inc:262 +#, fuzzy +msgid "Sudo role" +msgstr "¡id desconocido!" + +#: admin/sudo/class_sudoGeneric.inc:670 admin/sudo/generic.tpl:15 +#: admin/sudo/generic.tpl:44 +msgid "Description" +msgstr "Descripción" + +#: admin/sudo/class_sudoGeneric.inc:671 +msgid "Users" +msgstr "Usuarios" + +#: admin/sudo/class_sudoGeneric.inc:672 +msgid "Host" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:673 +msgid "Command" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:674 +#, fuzzy +msgid "Run as user" +msgstr "Usuarios del dominio" + +#: admin/sudo/class_sudoGeneric.inc:675 +msgid "Access control list" +msgstr "Lista de control de acceso" + +#: admin/sudo/options.tpl:5 +msgid "Option name" +msgstr "" + +#: admin/sudo/options.tpl:7 +msgid "Value" +msgstr "" + +#: admin/sudo/options.tpl:8 admin/sudo/class_sudoOption.inc:536 +msgid "Options" +msgstr "Opciones" + +#: admin/sudo/options.tpl:86 +msgid "Available options" +msgstr "" + +#: admin/sudo/generic.tpl:3 admin/sudo/generic.tpl:30 +#: admin/sudo/paste_generic.tpl:1 +msgid "Generic" +msgstr "Genérico" + +#: admin/sudo/generic.tpl:3 admin/sudo/paste_generic.tpl:1 +msgid "global defaults" +msgstr "" + +#: admin/sudo/generic.tpl:55 +msgid "System trust" +msgstr "Sistema de seguridad" + +#: admin/sudo/generic.tpl:56 +msgid "Trust mode" +msgstr "Modo seguro" + +#: admin/sudo/generic.tpl:87 +msgid "Users and groups" +msgstr "" + +#: admin/sudo/generic.tpl:98 admin/sudo/generic.tpl:113 +msgid "Add from list" +msgstr "" + +#: admin/sudo/generic.tpl:102 +msgid "Systems" +msgstr "Sistemas" + +#: admin/sudo/generic.tpl:120 +msgid "Commands" +msgstr "" + +#: admin/sudo/generic.tpl:132 +msgid "Run as" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:50 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:51 +#: admin/sudo/class_target_list_systems.inc:52 +msgid "Available systems" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:61 +#: admin/sudo/class_target_list_users.inc:58 +msgid "Object name" +msgstr "Nombre de objeto" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Select to see terminals" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Show terminals" +msgstr "Mostrar terminales" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Select to see servers" +msgstr "Seleccione para ver los servidores" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Show servers" +msgstr "Mostrar servidores" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Select to see workstations" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Show workstations" +msgstr "Mostrar estaciones de trabajo" + +#: admin/sudo/class_target_list_systems.inc:73 +#: admin/sudo/class_target_list_users.inc:70 +msgid "Regular expression for matching group names" +msgstr "Expresión regular para buscar nombres de grupos" + +#: admin/sudo/class_target_list_systems.inc:140 +#: admin/sudo/class_target_list_users.inc:137 +msgid "Base" +msgstr "Base" + +#: admin/sudo/class_target_list_systems.inc:142 +#: admin/sudo/class_target_list_users.inc:139 +msgid "Submit" +msgstr "Enviar" + +#: admin/sudo/class_target_list_systems.inc:183 +msgid "Server" +msgstr "Servidor" + +#: admin/sudo/class_target_list_systems.inc:185 +msgid "Workstation" +msgstr "Estación de trabajo" + +#: admin/sudo/class_target_list_systems.inc:187 +msgid "Terminal" +msgstr "Terminal" + +#: admin/sudo/class_target_list_users.inc:47 +msgid "Select the target objects" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:48 +#: admin/sudo/class_target_list_users.inc:49 +msgid "Available members" +msgstr "Miembros disponibles" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Select to see users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Show users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Select to see groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Show groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:139 +msgid "Apply" +msgstr "Aplicar" + +#: admin/sudo/main.inc:50 admin/sudo/main.inc:54 +#, fuzzy +msgid "Sudo role administration" +msgstr "Administración de grupo" + +#: admin/sudo/class_sudoOption.inc:154 +msgid "Unknown option" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:155 +#, php-format +msgid "The sudo option '%s' is invalid!" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:284 +#, fuzzy +msgid "string" +msgstr "Aviso" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:283 +#: admin/sudo/class_sudoOption.inc:284 +msgid "bool" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:283 +#, fuzzy +msgid "integer" +msgstr "Impresora" + +#: admin/sudo/class_sudoOption.inc:284 +msgid "list" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:537 +#, fuzzy +msgid "Sudo options" +msgstr "¡id desconocido!" + +#: admin/sudo/trust_machines.tpl:6 +msgid "Select systems to add" +msgstr "Seleccione los sistemas a añadir" + +#: admin/sudo/trust_machines.tpl:26 +msgid "Display systems of department" +msgstr "Mostrar los sistemas del departamento" + +#: admin/sudo/trust_machines.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Escoja el departamento base de la búsqueda" + +#: admin/sudo/trust_machines.tpl:30 +msgid "Display systems matching" +msgstr "Mostrar sistemas que coincidan con" + +#: admin/sudo/trust_machines.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Expresiones regulares para buscar direcciones" + +#: admin/sudo/class_divListSudo.inc:51 admin/sudo/class_divListSudo.inc:52 +#, fuzzy +msgid "List of sudo roles" +msgstr "Lista de usuarios" + +#: admin/sudo/class_divListSudo.inc:72 +msgid "Select all" +msgstr "Seleccione todos" + +#: admin/sudo/class_divListSudo.inc:78 +msgid "Department" +msgstr "Departamento" + +#: admin/sudo/class_divListSudo.inc:79 admin/sudo/class_divListSudo.inc:105 +msgid "Actions" +msgstr "Acciones" + +#: admin/sudo/class_divListSudo.inc:83 +#, fuzzy +msgid "Regular expression for matching role names" +msgstr "Expresión regular para buscar nombres de grupos" + +#: admin/sudo/class_divListSudo.inc:85 +#, fuzzy +msgid "Regular expression for matching role member names" +msgstr "Expresión regular para buscar nombres de grupos" + +#: admin/sudo/class_divListSudo.inc:107 +msgid "Create" +msgstr "Crear" + +#: admin/sudo/class_divListSudo.inc:111 +msgid "Role" +msgstr "Rol" + +#: admin/sudo/class_divListSudo.inc:112 +msgid "Default" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:119 +msgid "Remove" +msgstr "Eliminar" + +#: admin/sudo/class_divListSudo.inc:171 +msgid "Edit this entry" +msgstr "Editar esta entrada" + +#: admin/sudo/class_divListSudo.inc:178 +msgid "Delete this entry" +msgstr "Eliminar esta entrada" + +#: admin/sudo/class_divListSudo.inc:220 +#, fuzzy +msgid "Number of listed roles" +msgstr "Eliminar grupo seleccionado" + +#: admin/sudo/class_sudoManagement.inc:31 +msgid "Sudo roles" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:32 +#, fuzzy +msgid "Manage sudo roles" +msgstr "Usuarios del dominio" + +#: admin/sudo/class_sudoManagement.inc:247 +#, fuzzy +msgid "Permission" +msgstr "Permisos" + +#: admin/sudo/class_sudoManagement.inc:295 +#, fuzzy +msgid "Permission error" +msgstr "Permisos" diff --git a/trunk/gosa-plugins/sudo/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/sudo/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..273cae7f1 --- /dev/null +++ b/trunk/gosa-plugins/sudo/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,370 @@ +# translation of messages.po to french +# Header entry was created by KBabel! +# +# Benoit Mortier , 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2008-12-03 23:19+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/sudo/remove.tpl:2 +msgid "Warning" +msgstr "Avertissement" + +#: admin/sudo/remove.tpl:9 +msgid "If you're sure, press 'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Si vous êtes sur, cliquez sur 'Effacer' pour continuer ou 'Annuler' pour " +"arrêter." + +#: admin/sudo/class_sudoGeneric.inc:295 +msgid "Error" +msgstr "Erreur" + +#: admin/sudo/class_sudoGeneric.inc:337 +msgid "disabled" +msgstr "désactivé" + +#: admin/sudo/class_sudoGeneric.inc:338 +msgid "full access" +msgstr "accès complet" + +#: admin/sudo/class_sudoGeneric.inc:339 +msgid "allow access to these hosts" +msgstr "permettre l'accès a ces hôtes" + +#: admin/sudo/class_sudoGeneric.inc:384 +#: admin/sudo/class_target_list_users.inc:177 +msgid "User" +msgstr "Utilisateur" + +#: admin/sudo/class_sudoGeneric.inc:385 +#: admin/sudo/class_target_list_users.inc:178 +msgid "Group" +msgstr "Groupes" + +#: admin/sudo/class_sudoGeneric.inc:533 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/sudo/class_sudoGeneric.inc:547 admin/sudo/class_sudoGeneric.inc:552 +#: admin/sudo/class_sudoGeneric.inc:557 admin/sudo/class_sudoGeneric.inc:566 +#: admin/sudo/class_sudoGeneric.inc:669 admin/sudo/generic.tpl:7 +#: admin/sudo/generic.tpl:34 admin/sudo/paste_generic.tpl:5 +#: admin/sudo/class_divListSudo.inc:78 +msgid "Name" +msgstr "Nom" + +#: admin/sudo/class_sudoGeneric.inc:660 +msgid "Sudo" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:661 admin/sudo/class_sudoGeneric.inc:666 +#: admin/sudo/class_sudoManagement.inc:262 +msgid "Sudo role" +msgstr "Rôle sudo" + +#: admin/sudo/class_sudoGeneric.inc:670 admin/sudo/generic.tpl:15 +#: admin/sudo/generic.tpl:44 +msgid "Description" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:671 +msgid "Users" +msgstr "Utilisateurs" + +#: admin/sudo/class_sudoGeneric.inc:672 +msgid "Host" +msgstr "Hôte" + +#: admin/sudo/class_sudoGeneric.inc:673 +msgid "Command" +msgstr "Commande" + +#: admin/sudo/class_sudoGeneric.inc:674 +msgid "Run as user" +msgstr "Exécuter comme un utilisateur" + +#: admin/sudo/class_sudoGeneric.inc:675 +msgid "Access control list" +msgstr "Contrôle d'accès (ACL)" + +#: admin/sudo/options.tpl:5 +msgid "Option name" +msgstr "Nom de l'option" + +#: admin/sudo/options.tpl:7 +msgid "Value" +msgstr "Valeur" + +#: admin/sudo/options.tpl:8 admin/sudo/class_sudoOption.inc:536 +msgid "Options" +msgstr "" + +#: admin/sudo/options.tpl:86 +msgid "Available options" +msgstr "Options disponibles" + +#: admin/sudo/generic.tpl:3 admin/sudo/generic.tpl:30 +#: admin/sudo/paste_generic.tpl:1 +msgid "Generic" +msgstr "Informations" + +#: admin/sudo/generic.tpl:3 admin/sudo/paste_generic.tpl:1 +msgid "global defaults" +msgstr "Paramètres globaux par défaut" + +#: admin/sudo/generic.tpl:55 +msgid "System trust" +msgstr "Système de Confiance" + +#: admin/sudo/generic.tpl:56 +msgid "Trust mode" +msgstr "Mode de confiance" + +#: admin/sudo/generic.tpl:87 +msgid "Users and groups" +msgstr "Utilisateurs et groupes" + +#: admin/sudo/generic.tpl:98 admin/sudo/generic.tpl:113 +msgid "Add from list" +msgstr "Ajouter à la liste" + +#: admin/sudo/generic.tpl:102 +msgid "Systems" +msgstr "Systèmes" + +#: admin/sudo/generic.tpl:120 +msgid "Commands" +msgstr "Commandes" + +#: admin/sudo/generic.tpl:132 +msgid "Run as" +msgstr "Exécuter comme" + +#: admin/sudo/class_target_list_systems.inc:50 +msgid "Select the target objects for your scheduled action." +msgstr "Sélectionnez les objets cibles pour votre action programmée." + +#: admin/sudo/class_target_list_systems.inc:51 +#: admin/sudo/class_target_list_systems.inc:52 +msgid "Available systems" +msgstr "Systèmes disponibles" + +#: admin/sudo/class_target_list_systems.inc:61 +#: admin/sudo/class_target_list_users.inc:58 +msgid "Object name" +msgstr "Nom de l'objet" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Select to see terminals" +msgstr "Voir les terminaux" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Show terminals" +msgstr "Montrer les terminaux" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Select to see servers" +msgstr "Sélectionnez pour voir les serveurs" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Show servers" +msgstr "Montrer les serveurs" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Select to see workstations" +msgstr "Voir les stations de travail" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Show workstations" +msgstr "Montrer les stations de travail" + +#: admin/sudo/class_target_list_systems.inc:73 +#: admin/sudo/class_target_list_users.inc:70 +msgid "Regular expression for matching group names" +msgstr "Expression régulière correspondant à des noms de groupe" + +#: admin/sudo/class_target_list_systems.inc:140 +#: admin/sudo/class_target_list_users.inc:137 +msgid "Base" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:142 +#: admin/sudo/class_target_list_users.inc:139 +msgid "Submit" +msgstr "Soumettre" + +#: admin/sudo/class_target_list_systems.inc:183 +msgid "Server" +msgstr "Serveur" + +#: admin/sudo/class_target_list_systems.inc:185 +msgid "Workstation" +msgstr "Stations de travail" + +#: admin/sudo/class_target_list_systems.inc:187 +msgid "Terminal" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:47 +msgid "Select the target objects" +msgstr "Sélectionner les objets cible" + +#: admin/sudo/class_target_list_users.inc:48 +#: admin/sudo/class_target_list_users.inc:49 +msgid "Available members" +msgstr "Membres disponibles" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Select to see users" +msgstr "Voir les utilisateurs" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Show users" +msgstr "Montrer les utilisateurs" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Select to see groups" +msgstr "Voir les groupes" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Show groups" +msgstr "Montrer les groupes" + +#: admin/sudo/class_target_list_users.inc:139 +msgid "Apply" +msgstr "Appliquer" + +#: admin/sudo/main.inc:50 admin/sudo/main.inc:54 +msgid "Sudo role administration" +msgstr "Administration des rôles sudo" + +#: admin/sudo/class_sudoOption.inc:154 +msgid "Unknown option" +msgstr "Option inconnue" + +#: admin/sudo/class_sudoOption.inc:155 +#, php-format +msgid "The sudo option '%s' is invalid!" +msgstr "L'option sudo '%s' est non valide !" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:284 +msgid "string" +msgstr "chaîne" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:283 +#: admin/sudo/class_sudoOption.inc:284 +msgid "bool" +msgstr "booléen" + +#: admin/sudo/class_sudoOption.inc:283 +msgid "integer" +msgstr "entier" + +#: admin/sudo/class_sudoOption.inc:284 +msgid "list" +msgstr "liste" + +#: admin/sudo/class_sudoOption.inc:537 +msgid "Sudo options" +msgstr "Options Sudo" + +#: admin/sudo/trust_machines.tpl:6 +msgid "Select systems to add" +msgstr "Sélectionner les systèmes à ajouter" + +#: admin/sudo/trust_machines.tpl:26 +msgid "Display systems of department" +msgstr "Afficher les systèmes du département" + +#: admin/sudo/trust_machines.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Sélectionner le département où sera effectuée la recherche" + +#: admin/sudo/trust_machines.tpl:30 +msgid "Display systems matching" +msgstr "Afficher les systèmes correspondant" + +#: admin/sudo/trust_machines.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Expression régulière pour sélectionner les adresses correspondantes" + +#: admin/sudo/class_divListSudo.inc:51 admin/sudo/class_divListSudo.inc:52 +msgid "List of sudo roles" +msgstr "Liste des rôles sudo" + +#: admin/sudo/class_divListSudo.inc:72 +msgid "Select all" +msgstr "Sélectionner tout" + +#: admin/sudo/class_divListSudo.inc:78 +msgid "Department" +msgstr "Département" + +#: admin/sudo/class_divListSudo.inc:79 admin/sudo/class_divListSudo.inc:105 +msgid "Actions" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:83 +msgid "Regular expression for matching role names" +msgstr "Expressions régulières pour le nom des rôles correspondants" + +#: admin/sudo/class_divListSudo.inc:85 +msgid "Regular expression for matching role member names" +msgstr "" +"Expressions régulières pour le nom des membres appartenant aux rôles " +"correspondants" + +#: admin/sudo/class_divListSudo.inc:107 +msgid "Create" +msgstr "Créer" + +#: admin/sudo/class_divListSudo.inc:111 +msgid "Role" +msgstr "Rôle" + +#: admin/sudo/class_divListSudo.inc:112 +msgid "Default" +msgstr "Défaut" + +#: admin/sudo/class_divListSudo.inc:119 +msgid "Remove" +msgstr "Supprimer" + +#: admin/sudo/class_divListSudo.inc:171 +msgid "Edit this entry" +msgstr "Editer cette entrée" + +#: admin/sudo/class_divListSudo.inc:178 +msgid "Delete this entry" +msgstr "Supprimer cette entrée" + +#: admin/sudo/class_divListSudo.inc:220 +msgid "Number of listed roles" +msgstr "Nombre de rôles listés" + +#: admin/sudo/class_sudoManagement.inc:31 +msgid "Sudo roles" +msgstr "Rôles Sudo" + +#: admin/sudo/class_sudoManagement.inc:32 +msgid "Manage sudo roles" +msgstr "Gèrer les rôles sudo" + +#: admin/sudo/class_sudoManagement.inc:247 +msgid "Permission" +msgstr "Permissions" + +#: admin/sudo/class_sudoManagement.inc:295 +msgid "Permission error" +msgstr "Erreur de permissions" diff --git a/trunk/gosa-plugins/sudo/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/sudo/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..c5225248f --- /dev/null +++ b/trunk/gosa-plugins/sudo/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,385 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/sudo/remove.tpl:2 +msgid "Warning" +msgstr "Attenzione" + +#: admin/sudo/remove.tpl:9 +msgid "If you're sure, press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:295 +msgid "Error" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:337 +msgid "disabled" +msgstr "disabilitato" + +#: admin/sudo/class_sudoGeneric.inc:338 +msgid "full access" +msgstr "accesso completo" + +#: admin/sudo/class_sudoGeneric.inc:339 +msgid "allow access to these hosts" +msgstr "accesso limitato ai seguenti host" + +#: admin/sudo/class_sudoGeneric.inc:384 +#: admin/sudo/class_target_list_users.inc:177 +msgid "User" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:385 +#: admin/sudo/class_target_list_users.inc:178 +msgid "Group" +msgstr "Gruppo" + +#: admin/sudo/class_sudoGeneric.inc:533 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/sudo/class_sudoGeneric.inc:547 admin/sudo/class_sudoGeneric.inc:552 +#: admin/sudo/class_sudoGeneric.inc:557 admin/sudo/class_sudoGeneric.inc:566 +#: admin/sudo/class_sudoGeneric.inc:669 admin/sudo/generic.tpl:7 +#: admin/sudo/generic.tpl:34 admin/sudo/paste_generic.tpl:5 +#: admin/sudo/class_divListSudo.inc:78 +msgid "Name" +msgstr "Cognome" + +#: admin/sudo/class_sudoGeneric.inc:660 +#, fuzzy +msgid "Sudo" +msgstr "Cognome" + +#: admin/sudo/class_sudoGeneric.inc:661 admin/sudo/class_sudoGeneric.inc:666 +#: admin/sudo/class_sudoManagement.inc:262 +msgid "Sudo role" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:670 admin/sudo/generic.tpl:15 +#: admin/sudo/generic.tpl:44 +msgid "Description" +msgstr "Descrizione" + +#: admin/sudo/class_sudoGeneric.inc:671 +msgid "Users" +msgstr "Utenti" + +#: admin/sudo/class_sudoGeneric.inc:672 +msgid "Host" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:673 +#, fuzzy +msgid "Command" +msgstr "e" + +#: admin/sudo/class_sudoGeneric.inc:674 +#, fuzzy +msgid "Run as user" +msgstr "Utenti di Dominio" + +#: admin/sudo/class_sudoGeneric.inc:675 +#, fuzzy +msgid "Access control list" +msgstr "Opzioni di accesso" + +#: admin/sudo/options.tpl:5 +msgid "Option name" +msgstr "" + +#: admin/sudo/options.tpl:7 +msgid "Value" +msgstr "" + +#: admin/sudo/options.tpl:8 admin/sudo/class_sudoOption.inc:536 +msgid "Options" +msgstr "Opzioni" + +#: admin/sudo/options.tpl:86 +#, fuzzy +msgid "Available options" +msgstr "Applicazioni disponibili" + +#: admin/sudo/generic.tpl:3 admin/sudo/generic.tpl:30 +#: admin/sudo/paste_generic.tpl:1 +msgid "Generic" +msgstr "Generale" + +#: admin/sudo/generic.tpl:3 admin/sudo/paste_generic.tpl:1 +msgid "global defaults" +msgstr "" + +#: admin/sudo/generic.tpl:55 +msgid "System trust" +msgstr "Accesso ai sistemi" + +#: admin/sudo/generic.tpl:56 +msgid "Trust mode" +msgstr "" + +#: admin/sudo/generic.tpl:87 +msgid "Users and groups" +msgstr "" + +#: admin/sudo/generic.tpl:98 admin/sudo/generic.tpl:113 +msgid "Add from list" +msgstr "" + +#: admin/sudo/generic.tpl:102 +#, fuzzy +msgid "Systems" +msgstr "Sistemi" + +#: admin/sudo/generic.tpl:120 +msgid "Commands" +msgstr "" + +#: admin/sudo/generic.tpl:132 +msgid "Run as" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:50 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:51 +#: admin/sudo/class_target_list_systems.inc:52 +msgid "Available systems" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:61 +#: admin/sudo/class_target_list_users.inc:58 +msgid "Object name" +msgstr "Nome dell'oggetto" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Select to see terminals" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Show terminals" +msgstr "Mostra terminali" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Select to see servers" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Show servers" +msgstr "Mostra server" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Select to see workstations" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Show workstations" +msgstr "Mostra workstation" + +#: admin/sudo/class_target_list_systems.inc:73 +#: admin/sudo/class_target_list_users.inc:70 +msgid "Regular expression for matching group names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: admin/sudo/class_target_list_systems.inc:140 +#: admin/sudo/class_target_list_users.inc:137 +msgid "Base" +msgstr "Base" + +#: admin/sudo/class_target_list_systems.inc:142 +#: admin/sudo/class_target_list_users.inc:139 +msgid "Submit" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:183 +msgid "Server" +msgstr "Server" + +#: admin/sudo/class_target_list_systems.inc:185 +msgid "Workstation" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:187 +#, fuzzy +msgid "Terminal" +msgstr "Terminali" + +#: admin/sudo/class_target_list_users.inc:47 +msgid "Select the target objects" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:48 +#: admin/sudo/class_target_list_users.inc:49 +msgid "Available members" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Select to see users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Show users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Select to see groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Show groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:139 +msgid "Apply" +msgstr "Applica" + +#: admin/sudo/main.inc:50 admin/sudo/main.inc:54 +#, fuzzy +msgid "Sudo role administration" +msgstr "Amministrazione dei gruppi di utenti" + +#: admin/sudo/class_sudoOption.inc:154 +msgid "Unknown option" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:155 +#, php-format +msgid "The sudo option '%s' is invalid!" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:284 +#, fuzzy +msgid "string" +msgstr "Attenzione" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:283 +#: admin/sudo/class_sudoOption.inc:284 +msgid "bool" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:283 +#, fuzzy +msgid "integer" +msgstr "stampanti" + +#: admin/sudo/class_sudoOption.inc:284 +msgid "list" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:537 +#, fuzzy +msgid "Sudo options" +msgstr "Utenti di Dominio" + +#: admin/sudo/trust_machines.tpl:6 +msgid "Select systems to add" +msgstr "Seleziona un sistema da aggiungere" + +#: admin/sudo/trust_machines.tpl:26 +msgid "Display systems of department" +msgstr "Mostra i sistemi del dipartimento" + +#: admin/sudo/trust_machines.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Scegli il dipartimento di base per la ricerca" + +#: admin/sudo/trust_machines.tpl:30 +msgid "Display systems matching" +msgstr "Mostra i sistemi che corrispondono a:" + +#: admin/sudo/trust_machines.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Espressione regolare per selezionare l'indirizzo" + +#: admin/sudo/class_divListSudo.inc:51 admin/sudo/class_divListSudo.inc:52 +#, fuzzy +msgid "List of sudo roles" +msgstr "Lista degli utenti" + +#: admin/sudo/class_divListSudo.inc:72 +#, fuzzy +msgid "Select all" +msgstr "Rimuovi" + +#: admin/sudo/class_divListSudo.inc:78 +msgid "Department" +msgstr "Dipartimento" + +#: admin/sudo/class_divListSudo.inc:79 admin/sudo/class_divListSudo.inc:105 +msgid "Actions" +msgstr "Azioni" + +#: admin/sudo/class_divListSudo.inc:83 +#, fuzzy +msgid "Regular expression for matching role names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: admin/sudo/class_divListSudo.inc:85 +#, fuzzy +msgid "Regular expression for matching role member names" +msgstr "Espressioni regolare per selezionare il nome del gruppo" + +#: admin/sudo/class_divListSudo.inc:107 +msgid "Create" +msgstr "Creare" + +#: admin/sudo/class_divListSudo.inc:111 +msgid "Role" +msgstr "Ruolo" + +#: admin/sudo/class_divListSudo.inc:112 +msgid "Default" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:119 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/sudo/class_divListSudo.inc:171 +msgid "Edit this entry" +msgstr "Modifica questo record" + +#: admin/sudo/class_divListSudo.inc:178 +msgid "Delete this entry" +msgstr "Elimina questo record" + +#: admin/sudo/class_divListSudo.inc:220 +#, fuzzy +msgid "Number of listed roles" +msgstr "Nome del gruppo" + +#: admin/sudo/class_sudoManagement.inc:31 +msgid "Sudo roles" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:32 +#, fuzzy +msgid "Manage sudo roles" +msgstr "Utenti di Dominio" + +#: admin/sudo/class_sudoManagement.inc:247 +#, fuzzy +msgid "Permission" +msgstr "Permessi" + +#: admin/sudo/class_sudoManagement.inc:295 +#, fuzzy +msgid "Permission error" +msgstr "Permessi" diff --git a/trunk/gosa-plugins/sudo/locale/messages.po b/trunk/gosa-plugins/sudo/locale/messages.po new file mode 100644 index 000000000..227ac5f1f --- /dev/null +++ b/trunk/gosa-plugins/sudo/locale/messages.po @@ -0,0 +1,366 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/sudo/remove.tpl:2 +msgid "Warning" +msgstr "" + +#: admin/sudo/remove.tpl:9 +msgid "If you're sure, press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:295 +msgid "Error" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:337 +msgid "disabled" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:338 +msgid "full access" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:339 +msgid "allow access to these hosts" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:384 +#: admin/sudo/class_target_list_users.inc:177 +msgid "User" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:385 +#: admin/sudo/class_target_list_users.inc:178 +msgid "Group" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:533 +msgid "LDAP error" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:547 admin/sudo/class_sudoGeneric.inc:552 +#: admin/sudo/class_sudoGeneric.inc:557 admin/sudo/class_sudoGeneric.inc:566 +#: admin/sudo/class_sudoGeneric.inc:669 admin/sudo/generic.tpl:7 +#: admin/sudo/generic.tpl:34 admin/sudo/paste_generic.tpl:5 +#: admin/sudo/class_divListSudo.inc:78 +msgid "Name" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:660 +msgid "Sudo" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:661 admin/sudo/class_sudoGeneric.inc:666 +#: admin/sudo/class_sudoManagement.inc:262 +msgid "Sudo role" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:670 admin/sudo/generic.tpl:15 +#: admin/sudo/generic.tpl:44 +msgid "Description" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:671 +msgid "Users" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:672 +msgid "Host" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:673 +msgid "Command" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:674 +msgid "Run as user" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:675 +msgid "Access control list" +msgstr "" + +#: admin/sudo/options.tpl:5 +msgid "Option name" +msgstr "" + +#: admin/sudo/options.tpl:7 +msgid "Value" +msgstr "" + +#: admin/sudo/options.tpl:8 admin/sudo/class_sudoOption.inc:536 +msgid "Options" +msgstr "" + +#: admin/sudo/options.tpl:86 +msgid "Available options" +msgstr "" + +#: admin/sudo/generic.tpl:3 admin/sudo/generic.tpl:30 +#: admin/sudo/paste_generic.tpl:1 +msgid "Generic" +msgstr "" + +#: admin/sudo/generic.tpl:3 admin/sudo/paste_generic.tpl:1 +msgid "global defaults" +msgstr "" + +#: admin/sudo/generic.tpl:55 +msgid "System trust" +msgstr "" + +#: admin/sudo/generic.tpl:56 +msgid "Trust mode" +msgstr "" + +#: admin/sudo/generic.tpl:87 +msgid "Users and groups" +msgstr "" + +#: admin/sudo/generic.tpl:98 admin/sudo/generic.tpl:113 +msgid "Add from list" +msgstr "" + +#: admin/sudo/generic.tpl:102 +msgid "Systems" +msgstr "" + +#: admin/sudo/generic.tpl:120 +msgid "Commands" +msgstr "" + +#: admin/sudo/generic.tpl:132 +msgid "Run as" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:50 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:51 +#: admin/sudo/class_target_list_systems.inc:52 +msgid "Available systems" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:61 +#: admin/sudo/class_target_list_users.inc:58 +msgid "Object name" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Select to see terminals" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Show terminals" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Select to see servers" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Show servers" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Select to see workstations" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Show workstations" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:73 +#: admin/sudo/class_target_list_users.inc:70 +msgid "Regular expression for matching group names" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:140 +#: admin/sudo/class_target_list_users.inc:137 +msgid "Base" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:142 +#: admin/sudo/class_target_list_users.inc:139 +msgid "Submit" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:183 +msgid "Server" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:185 +msgid "Workstation" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:187 +msgid "Terminal" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:47 +msgid "Select the target objects" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:48 +#: admin/sudo/class_target_list_users.inc:49 +msgid "Available members" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Select to see users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Show users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Select to see groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Show groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:139 +msgid "Apply" +msgstr "" + +#: admin/sudo/main.inc:50 admin/sudo/main.inc:54 +msgid "Sudo role administration" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:154 +msgid "Unknown option" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:155 +#, php-format +msgid "The sudo option '%s' is invalid!" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:284 +msgid "string" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:283 +#: admin/sudo/class_sudoOption.inc:284 +msgid "bool" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:283 +msgid "integer" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:284 +msgid "list" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:537 +msgid "Sudo options" +msgstr "" + +#: admin/sudo/trust_machines.tpl:6 +msgid "Select systems to add" +msgstr "" + +#: admin/sudo/trust_machines.tpl:26 +msgid "Display systems of department" +msgstr "" + +#: admin/sudo/trust_machines.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "" + +#: admin/sudo/trust_machines.tpl:30 +msgid "Display systems matching" +msgstr "" + +#: admin/sudo/trust_machines.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:51 admin/sudo/class_divListSudo.inc:52 +msgid "List of sudo roles" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:72 +msgid "Select all" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:78 +msgid "Department" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:79 admin/sudo/class_divListSudo.inc:105 +msgid "Actions" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:83 +msgid "Regular expression for matching role names" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:85 +msgid "Regular expression for matching role member names" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:107 +msgid "Create" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:111 +msgid "Role" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:112 +msgid "Default" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:119 +msgid "Remove" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:171 +msgid "Edit this entry" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:178 +msgid "Delete this entry" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:220 +msgid "Number of listed roles" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:31 +msgid "Sudo roles" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:32 +msgid "Manage sudo roles" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:247 +msgid "Permission" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:295 +msgid "Permission error" +msgstr "" diff --git a/trunk/gosa-plugins/sudo/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/sudo/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..bc005ff9b --- /dev/null +++ b/trunk/gosa-plugins/sudo/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,390 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/sudo/remove.tpl:2 +msgid "Warning" +msgstr "Waarschuwing" + +#: admin/sudo/remove.tpl:9 +msgid "If you're sure, press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:295 +msgid "Error" +msgstr "Fout" + +#: admin/sudo/class_sudoGeneric.inc:337 +msgid "disabled" +msgstr "gedeactiveerd" + +#: admin/sudo/class_sudoGeneric.inc:338 +msgid "full access" +msgstr "volledige toegang" + +#: admin/sudo/class_sudoGeneric.inc:339 +msgid "allow access to these hosts" +msgstr "sta toegang op deze computers toe" + +#: admin/sudo/class_sudoGeneric.inc:384 +#: admin/sudo/class_target_list_users.inc:177 +msgid "User" +msgstr "Gebruiker" + +#: admin/sudo/class_sudoGeneric.inc:385 +#: admin/sudo/class_target_list_users.inc:178 +msgid "Group" +msgstr "Groep" + +#: admin/sudo/class_sudoGeneric.inc:533 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: admin/sudo/class_sudoGeneric.inc:547 admin/sudo/class_sudoGeneric.inc:552 +#: admin/sudo/class_sudoGeneric.inc:557 admin/sudo/class_sudoGeneric.inc:566 +#: admin/sudo/class_sudoGeneric.inc:669 admin/sudo/generic.tpl:7 +#: admin/sudo/generic.tpl:34 admin/sudo/paste_generic.tpl:5 +#: admin/sudo/class_divListSudo.inc:78 +msgid "Name" +msgstr "Naam" + +#: admin/sudo/class_sudoGeneric.inc:660 +#, fuzzy +msgid "Sudo" +msgstr "Achternaam" + +#: admin/sudo/class_sudoGeneric.inc:661 admin/sudo/class_sudoGeneric.inc:666 +#: admin/sudo/class_sudoManagement.inc:262 +#, fuzzy +msgid "Sudo role" +msgstr "! onbekend id" + +#: admin/sudo/class_sudoGeneric.inc:670 admin/sudo/generic.tpl:15 +#: admin/sudo/generic.tpl:44 +msgid "Description" +msgstr "Omschrijving" + +#: admin/sudo/class_sudoGeneric.inc:671 +msgid "Users" +msgstr "Gebruikers" + +#: admin/sudo/class_sudoGeneric.inc:672 +#, fuzzy +msgid "Host" +msgstr "Inhakers" + +#: admin/sudo/class_sudoGeneric.inc:673 +#, fuzzy +msgid "Command" +msgstr "en" + +#: admin/sudo/class_sudoGeneric.inc:674 +#, fuzzy +msgid "Run as user" +msgstr "Windows gebruikers" + +#: admin/sudo/class_sudoGeneric.inc:675 +#, fuzzy +msgid "Access control list" +msgstr "Toegangsopties" + +#: admin/sudo/options.tpl:5 +msgid "Option name" +msgstr "" + +#: admin/sudo/options.tpl:7 +msgid "Value" +msgstr "" + +#: admin/sudo/options.tpl:8 admin/sudo/class_sudoOption.inc:536 +msgid "Options" +msgstr "Opties" + +#: admin/sudo/options.tpl:86 +#, fuzzy +msgid "Available options" +msgstr "Beschikbare programma's" + +#: admin/sudo/generic.tpl:3 admin/sudo/generic.tpl:30 +#: admin/sudo/paste_generic.tpl:1 +msgid "Generic" +msgstr "Algemeen" + +#: admin/sudo/generic.tpl:3 admin/sudo/paste_generic.tpl:1 +msgid "global defaults" +msgstr "" + +#: admin/sudo/generic.tpl:55 +msgid "System trust" +msgstr "Systeem vertrouwen" + +#: admin/sudo/generic.tpl:56 +msgid "Trust mode" +msgstr "Vertrouwensmodus" + +#: admin/sudo/generic.tpl:87 +msgid "Users and groups" +msgstr "" + +#: admin/sudo/generic.tpl:98 admin/sudo/generic.tpl:113 +msgid "Add from list" +msgstr "" + +#: admin/sudo/generic.tpl:102 +#, fuzzy +msgid "Systems" +msgstr "Systeem" + +#: admin/sudo/generic.tpl:120 +msgid "Commands" +msgstr "" + +#: admin/sudo/generic.tpl:132 +msgid "Run as" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:50 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:51 +#: admin/sudo/class_target_list_systems.inc:52 +msgid "Available systems" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:61 +#: admin/sudo/class_target_list_users.inc:58 +msgid "Object name" +msgstr "Objectnaam" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Select to see terminals" +msgstr "Selecteer om terminals te zien" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Show terminals" +msgstr "Toon terminals" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Select to see servers" +msgstr "Selecteer om servers te zien" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Show servers" +msgstr "Toon servers" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Select to see workstations" +msgstr "Selecteer om werkstations te zien" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Show workstations" +msgstr "Toon werkstations" + +#: admin/sudo/class_target_list_systems.inc:73 +#: admin/sudo/class_target_list_users.inc:70 +msgid "Regular expression for matching group names" +msgstr "Reguliere expressie voor overeenkomende groepnamen" + +#: admin/sudo/class_target_list_systems.inc:140 +#: admin/sudo/class_target_list_users.inc:137 +msgid "Base" +msgstr "Basis" + +#: admin/sudo/class_target_list_systems.inc:142 +#: admin/sudo/class_target_list_users.inc:139 +msgid "Submit" +msgstr "Verwerk" + +#: admin/sudo/class_target_list_systems.inc:183 +msgid "Server" +msgstr "Server" + +#: admin/sudo/class_target_list_systems.inc:185 +msgid "Workstation" +msgstr "Werkstation" + +#: admin/sudo/class_target_list_systems.inc:187 +msgid "Terminal" +msgstr "Terminal" + +#: admin/sudo/class_target_list_users.inc:47 +msgid "Select the target objects" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:48 +#: admin/sudo/class_target_list_users.inc:49 +msgid "Available members" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Select to see users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Show users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Select to see groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Show groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:139 +msgid "Apply" +msgstr "Toepassen" + +#: admin/sudo/main.inc:50 admin/sudo/main.inc:54 +#, fuzzy +msgid "Sudo role administration" +msgstr "Groepen beheer" + +#: admin/sudo/class_sudoOption.inc:154 +msgid "Unknown option" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:155 +#, php-format +msgid "The sudo option '%s' is invalid!" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:284 +#, fuzzy +msgid "string" +msgstr "Waarschuwing" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:283 +#: admin/sudo/class_sudoOption.inc:284 +msgid "bool" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:283 +#, fuzzy +msgid "integer" +msgstr "printers" + +#: admin/sudo/class_sudoOption.inc:284 +msgid "list" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:537 +#, fuzzy +msgid "Sudo options" +msgstr "Onbekend" + +#: admin/sudo/trust_machines.tpl:6 +msgid "Select systems to add" +msgstr "Selecteer de toe te voegen systemen" + +#: admin/sudo/trust_machines.tpl:26 +msgid "Display systems of department" +msgstr "Toon systemen van afdeling" + +#: admin/sudo/trust_machines.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Selecteer de afdeling waarbinnen gezocht zal worden" + +#: admin/sudo/trust_machines.tpl:30 +msgid "Display systems matching" +msgstr "Toon de overeenkomende systemen" + +#: admin/sudo/trust_machines.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Reguliere expresie voor overeenkomende adressen" + +#: admin/sudo/class_divListSudo.inc:51 admin/sudo/class_divListSudo.inc:52 +#, fuzzy +msgid "List of sudo roles" +msgstr "Lijst met gebruikers" + +#: admin/sudo/class_divListSudo.inc:72 +#, fuzzy +msgid "Select all" +msgstr "Selecteer" + +#: admin/sudo/class_divListSudo.inc:78 +msgid "Department" +msgstr "Afdeling" + +#: admin/sudo/class_divListSudo.inc:79 admin/sudo/class_divListSudo.inc:105 +msgid "Actions" +msgstr "Acties" + +#: admin/sudo/class_divListSudo.inc:83 +#, fuzzy +msgid "Regular expression for matching role names" +msgstr "Reguliere expressie voor overeenkomende groepnamen" + +#: admin/sudo/class_divListSudo.inc:85 +#, fuzzy +msgid "Regular expression for matching role member names" +msgstr "Reguliere expressie voor overeenkomende objectnamen" + +#: admin/sudo/class_divListSudo.inc:107 +msgid "Create" +msgstr "Aanmaken" + +#: admin/sudo/class_divListSudo.inc:111 +msgid "Role" +msgstr "Funktie" + +#: admin/sudo/class_divListSudo.inc:112 +msgid "Default" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:119 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/sudo/class_divListSudo.inc:171 +msgid "Edit this entry" +msgstr "Bewerk deze invoer" + +#: admin/sudo/class_divListSudo.inc:178 +msgid "Delete this entry" +msgstr "Verwijder deze invoer" + +#: admin/sudo/class_divListSudo.inc:220 +#, fuzzy +msgid "Number of listed roles" +msgstr "Naam van de groep" + +#: admin/sudo/class_sudoManagement.inc:31 +msgid "Sudo roles" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:32 +#, fuzzy +msgid "Manage sudo roles" +msgstr "Windows gebruikers" + +#: admin/sudo/class_sudoManagement.inc:247 +#, fuzzy +msgid "Permission" +msgstr "Rechten" + +#: admin/sudo/class_sudoManagement.inc:295 +#, fuzzy +msgid "Permission error" +msgstr "Rechten" diff --git a/trunk/gosa-plugins/sudo/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/sudo/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ea45c3f7c --- /dev/null +++ b/trunk/gosa-plugins/sudo/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,385 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/sudo/remove.tpl:2 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: admin/sudo/remove.tpl:9 +msgid "If you're sure, press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:295 +msgid "Error" +msgstr "Błąd" + +#: admin/sudo/class_sudoGeneric.inc:337 +msgid "disabled" +msgstr "wyłączone" + +#: admin/sudo/class_sudoGeneric.inc:338 +msgid "full access" +msgstr "pełen dostęp" + +#: admin/sudo/class_sudoGeneric.inc:339 +msgid "allow access to these hosts" +msgstr "zezwól na dostęp do tych hostów" + +#: admin/sudo/class_sudoGeneric.inc:384 +#: admin/sudo/class_target_list_users.inc:177 +msgid "User" +msgstr "Użytkownik" + +#: admin/sudo/class_sudoGeneric.inc:385 +#: admin/sudo/class_target_list_users.inc:178 +msgid "Group" +msgstr "Grupa" + +#: admin/sudo/class_sudoGeneric.inc:533 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/sudo/class_sudoGeneric.inc:547 admin/sudo/class_sudoGeneric.inc:552 +#: admin/sudo/class_sudoGeneric.inc:557 admin/sudo/class_sudoGeneric.inc:566 +#: admin/sudo/class_sudoGeneric.inc:669 admin/sudo/generic.tpl:7 +#: admin/sudo/generic.tpl:34 admin/sudo/paste_generic.tpl:5 +#: admin/sudo/class_divListSudo.inc:78 +msgid "Name" +msgstr "Imię" + +#: admin/sudo/class_sudoGeneric.inc:660 +#, fuzzy +msgid "Sudo" +msgstr "Nazwisko" + +#: admin/sudo/class_sudoGeneric.inc:661 admin/sudo/class_sudoGeneric.inc:666 +#: admin/sudo/class_sudoManagement.inc:262 +#, fuzzy +msgid "Sudo role" +msgstr "! nieznane id" + +#: admin/sudo/class_sudoGeneric.inc:670 admin/sudo/generic.tpl:15 +#: admin/sudo/generic.tpl:44 +msgid "Description" +msgstr "Opis" + +#: admin/sudo/class_sudoGeneric.inc:671 +msgid "Users" +msgstr "Użytkownicy" + +#: admin/sudo/class_sudoGeneric.inc:672 +#, fuzzy +msgid "Host" +msgstr "Zaczepy" + +#: admin/sudo/class_sudoGeneric.inc:673 +#, fuzzy +msgid "Command" +msgstr "i" + +#: admin/sudo/class_sudoGeneric.inc:674 +#, fuzzy +msgid "Run as user" +msgstr "Użytkownicy domeny" + +#: admin/sudo/class_sudoGeneric.inc:675 +#, fuzzy +msgid "Access control list" +msgstr "Kontrola dostępu" + +#: admin/sudo/options.tpl:5 +msgid "Option name" +msgstr "" + +#: admin/sudo/options.tpl:7 +msgid "Value" +msgstr "" + +#: admin/sudo/options.tpl:8 admin/sudo/class_sudoOption.inc:536 +msgid "Options" +msgstr "Opcje" + +#: admin/sudo/options.tpl:86 +#, fuzzy +msgid "Available options" +msgstr "Dostępni odbiorcy" + +#: admin/sudo/generic.tpl:3 admin/sudo/generic.tpl:30 +#: admin/sudo/paste_generic.tpl:1 +msgid "Generic" +msgstr "Ogólne" + +#: admin/sudo/generic.tpl:3 admin/sudo/paste_generic.tpl:1 +msgid "global defaults" +msgstr "" + +#: admin/sudo/generic.tpl:55 +msgid "System trust" +msgstr "Zaufanie systemowe" + +#: admin/sudo/generic.tpl:56 +msgid "Trust mode" +msgstr "Tryb zaufania" + +#: admin/sudo/generic.tpl:87 +msgid "Users and groups" +msgstr "" + +#: admin/sudo/generic.tpl:98 admin/sudo/generic.tpl:113 +msgid "Add from list" +msgstr "" + +#: admin/sudo/generic.tpl:102 +#, fuzzy +msgid "Systems" +msgstr "System" + +#: admin/sudo/generic.tpl:120 +msgid "Commands" +msgstr "" + +#: admin/sudo/generic.tpl:132 +msgid "Run as" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:50 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:51 +#: admin/sudo/class_target_list_systems.inc:52 +msgid "Available systems" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:61 +#: admin/sudo/class_target_list_users.inc:58 +msgid "Object name" +msgstr "Nazwa obiektu" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Select to see terminals" +msgstr "Wybierz aby zobaczyć terminale" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Show terminals" +msgstr "Pokaż terminale" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Select to see servers" +msgstr "Proszę aby zobaczyć serwery" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Show servers" +msgstr "Pokaż serwery" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Select to see workstations" +msgstr "Wybierz aby zobaczyc stacje robocze" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Show workstations" +msgstr "Pokaż stacje robocze" + +#: admin/sudo/class_target_list_systems.inc:73 +#: admin/sudo/class_target_list_users.inc:70 +msgid "Regular expression for matching group names" +msgstr "Wyrażenie regularne dla dopasowania nazw grup" + +#: admin/sudo/class_target_list_systems.inc:140 +#: admin/sudo/class_target_list_users.inc:137 +msgid "Base" +msgstr "Kontener" + +#: admin/sudo/class_target_list_systems.inc:142 +#: admin/sudo/class_target_list_users.inc:139 +msgid "Submit" +msgstr "Wyślij" + +#: admin/sudo/class_target_list_systems.inc:183 +msgid "Server" +msgstr "Serwer" + +#: admin/sudo/class_target_list_systems.inc:185 +msgid "Workstation" +msgstr "Stacja robocza" + +#: admin/sudo/class_target_list_systems.inc:187 +msgid "Terminal" +msgstr "Terminal" + +#: admin/sudo/class_target_list_users.inc:47 +msgid "Select the target objects" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:48 +#: admin/sudo/class_target_list_users.inc:49 +msgid "Available members" +msgstr "Dostępni członkowie" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Select to see users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Show users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Select to see groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Show groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:139 +msgid "Apply" +msgstr "Zastosuj" + +#: admin/sudo/main.inc:50 admin/sudo/main.inc:54 +#, fuzzy +msgid "Sudo role administration" +msgstr "Administracja Grupą" + +#: admin/sudo/class_sudoOption.inc:154 +msgid "Unknown option" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:155 +#, php-format +msgid "The sudo option '%s' is invalid!" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:284 +#, fuzzy +msgid "string" +msgstr "Ostrzeżenie" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:283 +#: admin/sudo/class_sudoOption.inc:284 +msgid "bool" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:283 +#, fuzzy +msgid "integer" +msgstr "drukarki" + +#: admin/sudo/class_sudoOption.inc:284 +msgid "list" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:537 +#, fuzzy +msgid "Sudo options" +msgstr "Nieznane" + +#: admin/sudo/trust_machines.tpl:6 +msgid "Select systems to add" +msgstr "Wybierz systemy do dodania" + +#: admin/sudo/trust_machines.tpl:26 +msgid "Display systems of department" +msgstr "Wyświetl systemy departamentu" + +#: admin/sudo/trust_machines.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Wybierz departament na którym wyszukiwanie będzie bazować" + +#: admin/sudo/trust_machines.tpl:30 +msgid "Display systems matching" +msgstr "Wyświetl systemy pasujące" + +#: admin/sudo/trust_machines.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Wyrażenie regularne dla dopasowania adresów" + +#: admin/sudo/class_divListSudo.inc:51 admin/sudo/class_divListSudo.inc:52 +#, fuzzy +msgid "List of sudo roles" +msgstr "Lista użytkowników" + +#: admin/sudo/class_divListSudo.inc:72 +#, fuzzy +msgid "Select all" +msgstr "Wybierz" + +#: admin/sudo/class_divListSudo.inc:78 +msgid "Department" +msgstr "Departament" + +#: admin/sudo/class_divListSudo.inc:79 admin/sudo/class_divListSudo.inc:105 +msgid "Actions" +msgstr "Akcje" + +#: admin/sudo/class_divListSudo.inc:83 +#, fuzzy +msgid "Regular expression for matching role names" +msgstr "Wyrażenie regularne dla dopasowania nazw grup" + +#: admin/sudo/class_divListSudo.inc:85 +#, fuzzy +msgid "Regular expression for matching role member names" +msgstr "Wyrażenie regularne dla dopasowania nazw obiektów" + +#: admin/sudo/class_divListSudo.inc:107 +msgid "Create" +msgstr "Utwórz" + +#: admin/sudo/class_divListSudo.inc:111 +msgid "Role" +msgstr "Pełniona funkcja" + +#: admin/sudo/class_divListSudo.inc:112 +msgid "Default" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:119 +msgid "Remove" +msgstr "Usuń" + +#: admin/sudo/class_divListSudo.inc:171 +msgid "Edit this entry" +msgstr "Edytuj ten obiekt" + +#: admin/sudo/class_divListSudo.inc:178 +msgid "Delete this entry" +msgstr "Usuń ten obiekt" + +#: admin/sudo/class_divListSudo.inc:220 +#, fuzzy +msgid "Number of listed roles" +msgstr "Nazwa grupy" + +#: admin/sudo/class_sudoManagement.inc:31 +msgid "Sudo roles" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:32 +#, fuzzy +msgid "Manage sudo roles" +msgstr "Użytkownicy domeny" + +#: admin/sudo/class_sudoManagement.inc:247 +#, fuzzy +msgid "Permission" +msgstr "Uprawnienia" + +#: admin/sudo/class_sudoManagement.inc:295 +#, fuzzy +msgid "Permission error" +msgstr "Uprawnienia" diff --git a/trunk/gosa-plugins/sudo/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/sudo/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..07e1644f4 --- /dev/null +++ b/trunk/gosa-plugins/sudo/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,389 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/sudo/remove.tpl:2 +msgid "Warning" +msgstr "Предупреждение" + +#: admin/sudo/remove.tpl:9 +msgid "If you're sure, press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:295 +msgid "Error" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:337 +msgid "disabled" +msgstr "отключен" + +#: admin/sudo/class_sudoGeneric.inc:338 +msgid "full access" +msgstr "полный доступ" + +#: admin/sudo/class_sudoGeneric.inc:339 +msgid "allow access to these hosts" +msgstr "разрешить доступ только на эти хосты" + +#: admin/sudo/class_sudoGeneric.inc:384 +#: admin/sudo/class_target_list_users.inc:177 +msgid "User" +msgstr "Пользователь" + +#: admin/sudo/class_sudoGeneric.inc:385 +#: admin/sudo/class_target_list_users.inc:178 +msgid "Group" +msgstr "Группа" + +#: admin/sudo/class_sudoGeneric.inc:533 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/sudo/class_sudoGeneric.inc:547 admin/sudo/class_sudoGeneric.inc:552 +#: admin/sudo/class_sudoGeneric.inc:557 admin/sudo/class_sudoGeneric.inc:566 +#: admin/sudo/class_sudoGeneric.inc:669 admin/sudo/generic.tpl:7 +#: admin/sudo/generic.tpl:34 admin/sudo/paste_generic.tpl:5 +#: admin/sudo/class_divListSudo.inc:78 +msgid "Name" +msgstr "Фамилия" + +#: admin/sudo/class_sudoGeneric.inc:660 +#, fuzzy +msgid "Sudo" +msgstr "Имя сервера" + +#: admin/sudo/class_sudoGeneric.inc:661 admin/sudo/class_sudoGeneric.inc:666 +#: admin/sudo/class_sudoManagement.inc:262 +#, fuzzy +msgid "Sudo role" +msgstr "состояние неизвестно" + +#: admin/sudo/class_sudoGeneric.inc:670 admin/sudo/generic.tpl:15 +#: admin/sudo/generic.tpl:44 +msgid "Description" +msgstr "Описание" + +#: admin/sudo/class_sudoGeneric.inc:671 +msgid "Users" +msgstr "Пользователи" + +#: admin/sudo/class_sudoGeneric.inc:672 +msgid "Host" +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:673 +#, fuzzy +msgid "Command" +msgstr "и" + +#: admin/sudo/class_sudoGeneric.inc:674 +#, fuzzy +msgid "Run as user" +msgstr "Пользователи домена" + +#: admin/sudo/class_sudoGeneric.inc:675 +#, fuzzy +msgid "Access control list" +msgstr "Параметры доступа" + +#: admin/sudo/options.tpl:5 +msgid "Option name" +msgstr "" + +#: admin/sudo/options.tpl:7 +msgid "Value" +msgstr "" + +#: admin/sudo/options.tpl:8 admin/sudo/class_sudoOption.inc:536 +msgid "Options" +msgstr "Параметры" + +#: admin/sudo/options.tpl:86 +#, fuzzy +msgid "Available options" +msgstr "Доступные приложения" + +#: admin/sudo/generic.tpl:3 admin/sudo/generic.tpl:30 +#: admin/sudo/paste_generic.tpl:1 +msgid "Generic" +msgstr "Общее" + +#: admin/sudo/generic.tpl:3 admin/sudo/paste_generic.tpl:1 +msgid "global defaults" +msgstr "" + +#: admin/sudo/generic.tpl:55 +msgid "System trust" +msgstr "Системные доверия" + +#: admin/sudo/generic.tpl:56 +#, fuzzy +msgid "Trust mode" +msgstr "Режим" + +#: admin/sudo/generic.tpl:87 +msgid "Users and groups" +msgstr "" + +#: admin/sudo/generic.tpl:98 admin/sudo/generic.tpl:113 +msgid "Add from list" +msgstr "" + +#: admin/sudo/generic.tpl:102 +#, fuzzy +msgid "Systems" +msgstr "Системы" + +#: admin/sudo/generic.tpl:120 +msgid "Commands" +msgstr "" + +#: admin/sudo/generic.tpl:132 +msgid "Run as" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:50 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:51 +#: admin/sudo/class_target_list_systems.inc:52 +msgid "Available systems" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:61 +#: admin/sudo/class_target_list_users.inc:58 +msgid "Object name" +msgstr "Имя объекта" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Select to see terminals" +msgstr "Выберите чтобы посмотреть терминалы" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Show terminals" +msgstr "Показать терминалы" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Select to see servers" +msgstr "Выберите, чтобы просмотреть серверы" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Show servers" +msgstr "Показать серверы" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Select to see workstations" +msgstr "Выберите чтобы посмотреть рабочие станции" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Show workstations" +msgstr "Показать рабочие станции" + +#: admin/sudo/class_target_list_systems.inc:73 +#: admin/sudo/class_target_list_users.inc:70 +msgid "Regular expression for matching group names" +msgstr "Регулярное выражение, соответствующее именам групп" + +#: admin/sudo/class_target_list_systems.inc:140 +#: admin/sudo/class_target_list_users.inc:137 +msgid "Base" +msgstr "Ветка" + +#: admin/sudo/class_target_list_systems.inc:142 +#: admin/sudo/class_target_list_users.inc:139 +msgid "Submit" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:183 +msgid "Server" +msgstr "Сервер" + +#: admin/sudo/class_target_list_systems.inc:185 +msgid "Workstation" +msgstr "Рабочая станция" + +#: admin/sudo/class_target_list_systems.inc:187 +#, fuzzy +msgid "Terminal" +msgstr "Терминалы" + +#: admin/sudo/class_target_list_users.inc:47 +msgid "Select the target objects" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:48 +#: admin/sudo/class_target_list_users.inc:49 +#, fuzzy +msgid "Available members" +msgstr "Доступные приложения" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Select to see users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Show users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Select to see groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Show groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:139 +msgid "Apply" +msgstr "Применить" + +#: admin/sudo/main.inc:50 admin/sudo/main.inc:54 +#, fuzzy +msgid "Sudo role administration" +msgstr "Управление группами" + +#: admin/sudo/class_sudoOption.inc:154 +msgid "Unknown option" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:155 +#, php-format +msgid "The sudo option '%s' is invalid!" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:284 +#, fuzzy +msgid "string" +msgstr "Предупреждение" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:283 +#: admin/sudo/class_sudoOption.inc:284 +msgid "bool" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:283 +#, fuzzy +msgid "integer" +msgstr "принтеры" + +#: admin/sudo/class_sudoOption.inc:284 +msgid "list" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:537 +#, fuzzy +msgid "Sudo options" +msgstr "состояние неизвестно" + +#: admin/sudo/trust_machines.tpl:6 +msgid "Select systems to add" +msgstr "Выберите системы для добавления" + +#: admin/sudo/trust_machines.tpl:26 +msgid "Display systems of department" +msgstr "Показать системы в подразделении" + +#: admin/sudo/trust_machines.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "Выбрать раздел, для которого будет осуществлен поиск" + +#: admin/sudo/trust_machines.tpl:30 +msgid "Display systems matching" +msgstr "Показать подходяшие системы" + +#: admin/sudo/trust_machines.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "Регулярное выражение для поиска адреса" + +#: admin/sudo/class_divListSudo.inc:51 admin/sudo/class_divListSudo.inc:52 +#, fuzzy +msgid "List of sudo roles" +msgstr "Список пользователей" + +#: admin/sudo/class_divListSudo.inc:72 +#, fuzzy +msgid "Select all" +msgstr "Удалить" + +#: admin/sudo/class_divListSudo.inc:78 +msgid "Department" +msgstr "Подразделение" + +#: admin/sudo/class_divListSudo.inc:79 admin/sudo/class_divListSudo.inc:105 +msgid "Actions" +msgstr "Действия" + +#: admin/sudo/class_divListSudo.inc:83 +#, fuzzy +msgid "Regular expression for matching role names" +msgstr "Регулярное выражение, соответствующее именам групп" + +#: admin/sudo/class_divListSudo.inc:85 +#, fuzzy +msgid "Regular expression for matching role member names" +msgstr "Регулярное выражение, соответствующее именам объектов" + +#: admin/sudo/class_divListSudo.inc:107 +msgid "Create" +msgstr "Создать" + +#: admin/sudo/class_divListSudo.inc:111 +msgid "Role" +msgstr "Роль" + +#: admin/sudo/class_divListSudo.inc:112 +msgid "Default" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:119 +msgid "Remove" +msgstr "Удалить" + +#: admin/sudo/class_divListSudo.inc:171 +#, fuzzy +msgid "Edit this entry" +msgstr "Редактиовать объект" + +#: admin/sudo/class_divListSudo.inc:178 +#, fuzzy +msgid "Delete this entry" +msgstr "Удалить" + +#: admin/sudo/class_divListSudo.inc:220 +#, fuzzy +msgid "Number of listed roles" +msgstr "Название группы" + +#: admin/sudo/class_sudoManagement.inc:31 +msgid "Sudo roles" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:32 +#, fuzzy +msgid "Manage sudo roles" +msgstr "Пользователи домена" + +#: admin/sudo/class_sudoManagement.inc:247 +#, fuzzy +msgid "Permission" +msgstr "Права для членов группы" + +#: admin/sudo/class_sudoManagement.inc:295 +#, fuzzy +msgid "Permission error" +msgstr "Права для членов группы" diff --git a/trunk/gosa-plugins/sudo/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/sudo/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..c72c54f8a --- /dev/null +++ b/trunk/gosa-plugins/sudo/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,387 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/sudo/remove.tpl:2 +msgid "Warning" +msgstr "警告" + +#: admin/sudo/remove.tpl:9 +msgid "If you're sure, press 'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/sudo/class_sudoGeneric.inc:295 +msgid "Error" +msgstr "错误" + +#: admin/sudo/class_sudoGeneric.inc:337 +msgid "disabled" +msgstr "禁用" + +#: admin/sudo/class_sudoGeneric.inc:338 +msgid "full access" +msgstr "完全访问权限" + +#: admin/sudo/class_sudoGeneric.inc:339 +msgid "allow access to these hosts" +msgstr "允许访问这些主机" + +#: admin/sudo/class_sudoGeneric.inc:384 +#: admin/sudo/class_target_list_users.inc:177 +msgid "User" +msgstr "用户" + +#: admin/sudo/class_sudoGeneric.inc:385 +#: admin/sudo/class_target_list_users.inc:178 +msgid "Group" +msgstr "组" + +#: admin/sudo/class_sudoGeneric.inc:533 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/sudo/class_sudoGeneric.inc:547 admin/sudo/class_sudoGeneric.inc:552 +#: admin/sudo/class_sudoGeneric.inc:557 admin/sudo/class_sudoGeneric.inc:566 +#: admin/sudo/class_sudoGeneric.inc:669 admin/sudo/generic.tpl:7 +#: admin/sudo/generic.tpl:34 admin/sudo/paste_generic.tpl:5 +#: admin/sudo/class_divListSudo.inc:78 +msgid "Name" +msgstr "名称" + +#: admin/sudo/class_sudoGeneric.inc:660 +#, fuzzy +msgid "Sudo" +msgstr "姓" + +#: admin/sudo/class_sudoGeneric.inc:661 admin/sudo/class_sudoGeneric.inc:666 +#: admin/sudo/class_sudoManagement.inc:262 +#, fuzzy +msgid "Sudo role" +msgstr "! 未知 id" + +#: admin/sudo/class_sudoGeneric.inc:670 admin/sudo/generic.tpl:15 +#: admin/sudo/generic.tpl:44 +msgid "Description" +msgstr "描述" + +#: admin/sudo/class_sudoGeneric.inc:671 +msgid "Users" +msgstr "用户" + +#: admin/sudo/class_sudoGeneric.inc:672 +#, fuzzy +msgid "Host" +msgstr "钩子" + +#: admin/sudo/class_sudoGeneric.inc:673 +#, fuzzy +msgid "Command" +msgstr "和" + +#: admin/sudo/class_sudoGeneric.inc:674 +#, fuzzy +msgid "Run as user" +msgstr "域用户" + +#: admin/sudo/class_sudoGeneric.inc:675 +#, fuzzy +msgid "Access control list" +msgstr "访问选项" + +#: admin/sudo/options.tpl:5 +msgid "Option name" +msgstr "" + +#: admin/sudo/options.tpl:7 +msgid "Value" +msgstr "" + +#: admin/sudo/options.tpl:8 admin/sudo/class_sudoOption.inc:536 +msgid "Options" +msgstr "选项" + +#: admin/sudo/options.tpl:86 +#, fuzzy +msgid "Available options" +msgstr "可用的应用程序" + +#: admin/sudo/generic.tpl:3 admin/sudo/generic.tpl:30 +#: admin/sudo/paste_generic.tpl:1 +msgid "Generic" +msgstr "通用配置" + +#: admin/sudo/generic.tpl:3 admin/sudo/paste_generic.tpl:1 +msgid "global defaults" +msgstr "" + +#: admin/sudo/generic.tpl:55 +msgid "System trust" +msgstr "信赖的系统" + +#: admin/sudo/generic.tpl:56 +msgid "Trust mode" +msgstr "信赖模式" + +#: admin/sudo/generic.tpl:87 +msgid "Users and groups" +msgstr "" + +#: admin/sudo/generic.tpl:98 admin/sudo/generic.tpl:113 +msgid "Add from list" +msgstr "" + +#: admin/sudo/generic.tpl:102 +#, fuzzy +msgid "Systems" +msgstr "系统" + +#: admin/sudo/generic.tpl:120 +msgid "Commands" +msgstr "" + +#: admin/sudo/generic.tpl:132 +msgid "Run as" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:50 +msgid "Select the target objects for your scheduled action." +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:51 +#: admin/sudo/class_target_list_systems.inc:52 +msgid "Available systems" +msgstr "" + +#: admin/sudo/class_target_list_systems.inc:61 +#: admin/sudo/class_target_list_users.inc:58 +msgid "Object name" +msgstr "对象名称" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Select to see terminals" +msgstr "选择查看终端" + +#: admin/sudo/class_target_list_systems.inc:64 +msgid "Show terminals" +msgstr "显示终端" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Select to see servers" +msgstr "选择显示服务器" + +#: admin/sudo/class_target_list_systems.inc:65 +msgid "Show servers" +msgstr "显示服务器" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Select to see workstations" +msgstr "选择查看工作站" + +#: admin/sudo/class_target_list_systems.inc:66 +msgid "Show workstations" +msgstr "显示工作站" + +#: admin/sudo/class_target_list_systems.inc:73 +#: admin/sudo/class_target_list_users.inc:70 +msgid "Regular expression for matching group names" +msgstr "用于匹配组名的正则表达式" + +#: admin/sudo/class_target_list_systems.inc:140 +#: admin/sudo/class_target_list_users.inc:137 +msgid "Base" +msgstr "位置" + +#: admin/sudo/class_target_list_systems.inc:142 +#: admin/sudo/class_target_list_users.inc:139 +msgid "Submit" +msgstr "提交" + +#: admin/sudo/class_target_list_systems.inc:183 +msgid "Server" +msgstr "服务器" + +#: admin/sudo/class_target_list_systems.inc:185 +msgid "Workstation" +msgstr "工作站" + +#: admin/sudo/class_target_list_systems.inc:187 +msgid "Terminal" +msgstr "终端" + +#: admin/sudo/class_target_list_users.inc:47 +msgid "Select the target objects" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:48 +#: admin/sudo/class_target_list_users.inc:49 +msgid "Available members" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Select to see users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:60 +msgid "Show users" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Select to see groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:61 +msgid "Show groups" +msgstr "" + +#: admin/sudo/class_target_list_users.inc:139 +msgid "Apply" +msgstr "应用" + +#: admin/sudo/main.inc:50 admin/sudo/main.inc:54 +#, fuzzy +msgid "Sudo role administration" +msgstr "组管理" + +#: admin/sudo/class_sudoOption.inc:154 +msgid "Unknown option" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:155 +#, php-format +msgid "The sudo option '%s' is invalid!" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:284 +#, fuzzy +msgid "string" +msgstr "警告" + +#: admin/sudo/class_sudoOption.inc:282 admin/sudo/class_sudoOption.inc:283 +#: admin/sudo/class_sudoOption.inc:284 +msgid "bool" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:283 +#, fuzzy +msgid "integer" +msgstr "打印机" + +#: admin/sudo/class_sudoOption.inc:284 +msgid "list" +msgstr "" + +#: admin/sudo/class_sudoOption.inc:537 +#, fuzzy +msgid "Sudo options" +msgstr "未知" + +#: admin/sudo/trust_machines.tpl:6 +msgid "Select systems to add" +msgstr "选择要添加的系统" + +#: admin/sudo/trust_machines.tpl:26 +msgid "Display systems of department" +msgstr "显示部门的系统" + +#: admin/sudo/trust_machines.tpl:27 +msgid "Choose the department the search will be based on" +msgstr "选择一个部门来做查询" + +#: admin/sudo/trust_machines.tpl:30 +msgid "Display systems matching" +msgstr "显示匹配的系统" + +#: admin/sudo/trust_machines.tpl:31 +msgid "Regular expression for matching addresses" +msgstr "匹配地址的正则表达式" + +#: admin/sudo/class_divListSudo.inc:51 admin/sudo/class_divListSudo.inc:52 +#, fuzzy +msgid "List of sudo roles" +msgstr "用户列表" + +#: admin/sudo/class_divListSudo.inc:72 +#, fuzzy +msgid "Select all" +msgstr "选择" + +#: admin/sudo/class_divListSudo.inc:78 +msgid "Department" +msgstr "部门" + +#: admin/sudo/class_divListSudo.inc:79 admin/sudo/class_divListSudo.inc:105 +msgid "Actions" +msgstr "动作" + +#: admin/sudo/class_divListSudo.inc:83 +#, fuzzy +msgid "Regular expression for matching role names" +msgstr "用于匹配组名的正则表达式" + +#: admin/sudo/class_divListSudo.inc:85 +#, fuzzy +msgid "Regular expression for matching role member names" +msgstr "匹配对象名的正则表达式" + +#: admin/sudo/class_divListSudo.inc:107 +msgid "Create" +msgstr "创建" + +#: admin/sudo/class_divListSudo.inc:111 +msgid "Role" +msgstr "角色" + +#: admin/sudo/class_divListSudo.inc:112 +msgid "Default" +msgstr "" + +#: admin/sudo/class_divListSudo.inc:119 +msgid "Remove" +msgstr "删除" + +#: admin/sudo/class_divListSudo.inc:171 +msgid "Edit this entry" +msgstr "编辑这条记录" + +#: admin/sudo/class_divListSudo.inc:178 +msgid "Delete this entry" +msgstr "删除这个条目" + +#: admin/sudo/class_divListSudo.inc:220 +#, fuzzy +msgid "Number of listed roles" +msgstr "组名称" + +#: admin/sudo/class_sudoManagement.inc:31 +msgid "Sudo roles" +msgstr "" + +#: admin/sudo/class_sudoManagement.inc:32 +#, fuzzy +msgid "Manage sudo roles" +msgstr "域用户" + +#: admin/sudo/class_sudoManagement.inc:247 +#, fuzzy +msgid "Permission" +msgstr "允许" + +#: admin/sudo/class_sudoManagement.inc:295 +#, fuzzy +msgid "Permission error" +msgstr "允许" diff --git a/trunk/gosa-plugins/sudo/plugin.dsc b/trunk/gosa-plugins/sudo/plugin.dsc new file mode 100644 index 000000000..39f9c0fb6 --- /dev/null +++ b/trunk/gosa-plugins/sudo/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = sudo +description = "Sudo manager" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ + diff --git a/trunk/gosa-plugins/systems/admin/systems/class_componentGeneric.inc b/trunk/gosa-plugins/systems/admin/systems/class_componentGeneric.inc new file mode 100644 index 000000000..766fe3b4b --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/class_componentGeneric.inc @@ -0,0 +1,361 @@ +dn == "new"){ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + $this->cn= ""; + } else { + $this->base= preg_replace ("/^[^,]+,".preg_quote(get_ou("componentRDN"), '/')."/", "", $this->dn); + } + $this->netConfigDNS = new termDNS($this->config,$this,$this->objectclasses, true); + /* Save dn for later references */ + $this->orig_dn= $this->dn; + + $this->orig_base = $this->base; + $this->orig_cn = $this->cn; + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","component/".get_class($this),$this->dn); + } + + /* Do we represent a valid phone? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("component")).""; + return($display); + } + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* A new base was selected, check if it is a valid one */ + $tmp = $this->get_allowed_bases(); + if(isset($tmp[$this->dialog->isSelected()])){ + $this->base = $this->dialog->isSelected(); + } + + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + $smarty->assign("bases", $this->config->idepartments); + + /* Set acls */ + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $smarty->assign("bases", $this->get_allowed_bases()); + + /* Assign attributes */ + foreach ($this->attributes as $attr){ + $smarty->assign("$attr", $this->$attr); + } + $smarty->assign("base_select", $this->base); + + /* Show main page */ + $str = $this->netConfigDNS->execute(); + if(is_object($this->netConfigDNS->dialog)){ + return($str); + } + $smarty->assign("netconfig", $str); + return($smarty->fetch (get_template_path('component.tpl', TRUE))); + } + + function set_acl_base($base) + { + plugin::set_acl_base($base); + $this->netConfigDNS->set_acl_base($base); + } + + function set_acl_category($cat) + { + plugin::set_acl_category($cat); + $this->netConfigDNS->set_acl_category($cat); + } + + function remove_from_parent() + { + $ldap= $this->config->get_ldap_link(); + $this->netConfigDNS->remove_from_parent(); + $ldap->rmdir($this->dn); + + new log("remove","component/".get_class($this),$this->dn,$this->attributes,$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + + $this->handle_post_events(array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } + } + + + /* Save data to object */ + function save_object() + { + + /* Create a base backup and reset the + base directly after calling plugin::save_object(); + Base will be set seperatly a few lines below */ + $base_tmp = $this->base; + plugin::save_object(); + $this->base = $base_tmp; + + $this->netConfigDNS->save_object(); + + /* Set new base if allowed */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if(isset($tmp[$_POST['base']])){ + $this->base= $_POST['base']; + } + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + $message= array_merge($message,$this->netConfigDNS->check()); + + $this->dn= "cn=".$this->cn.",".get_ou('componentRDN').$this->base; + + if ($this->cn == "" ){ + $message[]= msgPool::required(_("Component name")); + } + + /* Check if given name is a valid host/dns name */ + if(!tests::is_dns_name($this->cn)){ + $message[]= msgPool::invalid(_("Component name"), $this->cn, "/[a-z0-9\.\-]/i"); + } + + /* To check for valid ip*/ + if($this->netConfigDNS->ipHostNumber == ""){ + $message[]= msgPool::required(_("IP address")); + } else { + if (!tests::is_ip($this->netConfigDNS->ipHostNumber)){ + $message[]= msgPool::invalid(_("IP address"), "", "", "192.168.1.2"); + } + } + + if ($this->orig_dn != $this->dn){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->base); + $ldap->search ("(cn=".$this->cn.")", array("cn")); + if ($ldap->count() != 0){ + while ($attrs= $ldap->fetch()){ + if(preg_match("/cn=dhcp,/",$attrs['dn'])){ + continue; + } + if ($attrs['dn'] != $this->orig_dn && preg_match("/".preg_quote(get_ou("componentRDN"), '/')."/",$attrs['dn'])){ + $message[]= msgPool::duplicated(_("Component name")); + break; + } + } + } + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + plugin::save(); + + /* Remove all empty values */ + if ($this->orig_dn == 'new'){ + $attrs= array(); + foreach ($this->attrs as $key => $val){ + if (is_array($val) && count($val) == 0){ + continue; + } + $attrs[$key]= $val; + } + $this->attrs= $attrs; + } + + /* If this is a new Object IP & Mac aren't set. + IP & Mac are msut attributes, so we set this values by here. */ + if($this->orig_dn == 'new'){ + $this->attrs['ipHostNumber'] = $this->netConfigDNS->ipHostNumber; + $this->attrs['macAddress'] = $this->netConfigDNS->macAddress; + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + if ($this->orig_dn == 'new'){ + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + new log("create","component/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("add",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + + } else { + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + new log("modify","component/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("modify",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + } + + $this->netConfigDNS->cn = $this->cn; + $this->netConfigDNS->save(); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Component generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 1, + "plSection" => array("administration"), + "plCategory" => array("component" => array("description" => _("Network device"), + "objectClass" => array("device", "ipHost", "ieee802Device"))), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "base" => _("Base"), + "description" => _("Description"), + "userPassword" => _("Root password")) + )); + } + + /* Display generic part for server copy & paste */ + function getCopyDialog() + { + $vars = array("cn"); + $smarty = get_smarty(); + $smarty->assign("cn" ,$this->cn); + $smarty->assign("object","component"); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + if(isset($source['macAddress'][0])){ + $this->netConfigDNS->macAddress = $source['macAddress'][0]; + } + if(isset($source['ipHostNumber'][0])){ + $this->netConfigDNS->ipHostNumber = $source['ipHostNumber'][0]; + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/class_divListSystem.inc b/trunk/gosa-plugins/systems/admin/systems/class_divListSystem.inc new file mode 100644 index 000000000..88cd4f511 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/class_divListSystem.inc @@ -0,0 +1,471 @@ +AddCheckBox */ + var $ShowServers; + var $ShowTerminals; + var $ShowWorkstations; + var $ShowWinWorkstations; + var $ShowPrinters; + var $ShowDevices; + var $ShowPhones; + var $ShowOpsiHosts; + + /* Subsearch checkbox */ + var $SubSearch; + + var $parent ; + var $ui ; + + function divListSystem (&$config,$parent) + { + $classes = array("server","workstation","terminal","phone","incoming","winworkstation","printer","component"); + if(class_available("opsiGeneric")){ + $classes[] = "opsi"; + } + + MultiSelectWindow::MultiSelectWindow($config, "System", $classes); + + $this->parent = $parent; + $this->ui = get_userinfo(); + + /* Set list strings */ + $this->SetTitle(_("List of systems")); + $this->SetSummary(_("List of systems")); + + /* Result page will look like a headpage */ + $this->SetHeadpageMode(); + + $this->EnableAplhabet (true); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 120; + if($this->parent->snapshotEnabled()){ + $action_col_size += 38; + } + + /* Toggle all selected / deselected */ + $chk = ""; + + /* set Page header */ + $this->AddHeader(array("string"=> $chk, "attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>_("Systems")." / "._("Department"))); + + /* Add header for selected FAI release, if fai is active */ + if($this->parent->fai_activated){ + $this->AddHeader(array("string"=>_("Release"),"attach"=>"style='width:100px;'")); + } + + $this->AddHeader(array("string"=>_("Actions"),"attach"=>"style='width:".$action_col_size."px;border-right:0px;'")); + + /* Text ,Value ,Name ,Is selected */ + + if(class_available("servtabs")){ + $this->AddCheckBox("ShowServers", + msgPool::selectToView( _("servers")), + sprintf(_("Show %s"), _("servers")),true); + } + if(class_available("termtabs")){ + $this->AddCheckBox("ShowTerminals", + msgPool::selectToView( _("Linux terminals")), + sprintf(_("Show %s"), _("terminals")),true); + } + if(class_available("worktabs")){ + $this->AddCheckBox("ShowWorkstations", + msgPool::selectToView( _("Linux workstations")), + sprintf(_("Show %s"), _("workstations")),true); + } + if(class_available("wintabs")){ + $this->AddCheckBox("ShowWinWorkstations", + msgPool::selectToView( _("MicroSoft Windows based workstations")), + sprintf(_("Show %s"), _("windows based workstations")),true); + } + /* Add opsi checkboxes if opsi is enabled */ + if($this->parent->opsi instanceof opsi && $this->parent->opsi->enabled()){ + $this->AddCheckBox("ShowOpsiHosts" , sprintf(_("Display objects of type '%s'."), + _("OPSI installed client")),_("Show OPSI based clients") ,true); + } + + if(class_available("printtabs")){ + $this->AddCheckBox("ShowPrinters", + msgPool::selectToView( _("network printers")), + sprintf(_("Show %s"), _("network printers")) ,true); + } + if(class_available("phonetabs")){ + $this->AddCheckBox("ShowPhones", + msgPool::selectToView( _("VoIP phones")), + sprintf(_("Show %s"), _("phones")) ,true); + } + if(class_available("componenttabs")){ + $this->AddCheckBox("ShowDevices", + msgPool::selectToView( _("network devices")), + sprintf(_("Show %s"), _("network devices")), true); + } + + /* Add SubSearch checkbox */ + $this->AddCheckBox(SEPERATOR); + $this->AddCheckBox("SubSearch", msgPool::selectToView("","subsearch"), msgPool::selectToView("","subsearch_small"), false); + + /* Name ,Text ,Default , Connect with alphabet */ + $this->AddRegex ("Regex", _("Display systems matching"),"*" , true); + $this->AddRegex ("UserRegex", _("Display systems of user"), "*" , false, "images/lists/search-user.png"); + } + + function GenHeader() + { + /* Prepare departments, + which are shown in the listbox on top of the listbox + */ + $options= ""; + + /* Get all departments within this subtree */ + $base = $this->config->current['BASE']; + $options = $this->create_department_list($this->module); + + /* If there is at least one c (Create) and one w (Write) acl in this combination + display the snapshot paste icon. BUT check the correct acls in the management plugin */ + $all_module_acls = ""; + $ui = get_userinfo(); + foreach($this->module as $module){ + $all_module_acls .= $ui->has_complete_category_acls($this->selectedBase,$module); + } + + /* Must we add an additional seperator */ + $add_sep = false; + + /* Add default header */ + $listhead = MultiSelectWindow::get_default_header(); + + /* Add base selection */ + $listhead .= _("Base")."  ". + "  "; + + /* Handle create icons */ + $s = ".|"._("Actions")."|\n"; + $s.= "..|". + " "._("Create")."|\n"; + + if(class_available("termtabs") && preg_match("/c/",$ui->get_permissions($this->selectedBase,"terminal/termgeneric"))){ + $s.= "...|". + " "._("Terminal")."|"."newsystem_terminal|\n"; + } + if(class_available("worktabs") && preg_match("/c/",$ui->get_permissions($this->selectedBase,"workstation/workgeneric"))){ + $s.= "...|". + " "._("Workstation")."|"."newsystem_workstation|\n"; + } + if(class_available("servtabs") && preg_match("/c/",$ui->get_permissions($this->selectedBase,"server/servgeneric"))){ + $s.= "...|". + " "._("Server")."|"."newsystem_server|\n"; + } + if(class_available("phonetabs") && preg_match("/c/",$ui->get_permissions($this->selectedBase,"phone/phoneGeneric"))){ + $s.= "...|". + " "._("Phone")."|"."newsystem_phone|\n"; + } + if(class_available("printtabs") && preg_match("/c/",$ui->get_permissions($this->selectedBase,"printer/printgeneric"))){ + $s.= "...|". + " "._("Printer")."|"."newsystem_printer|\n"; + } + if(class_available("componenttabs") && preg_match("/c/",$ui->get_permissions($this->selectedBase,"component/componentGeneric"))){ + $s.= "...|". + " "._("Component")."|"."newsystem_component|\n"; + } + + if($this->parent->opsi instanceof opsi && + $this->parent->opsi->enabled() && + preg_match("/c/",$ui->get_permissions($this->selectedBase,"opsi/opsiGeneric"))){ + $s.= "...|". + " "._("Opsi client")."|"."newsystem_opsi_client|\n"; + } + + if($this->parent->si_active){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT); + + $s.= "..|". + " "._("Trigger action")."|\n"; + foreach($events['TRIGGERED'] as $name => $event){ + $s.= "...|".$event['MenuImage']." ".$event['s_Menu_Name']."|trigger_event_".$name."\n"; + } + + $s.= "..|". + " "._("Schedule action")."|\n"; + foreach($events['SCHEDULED'] as $name => $event){ + $s.= "...|".$event['MenuImage']." ".$event['s_Menu_Name']."|schedule_event_".$name."\n"; + } + } + + $s.= "..|". + " "._("Remove")."|"."remove_multiple|\n"; + + $s.= "..|". + " "._("Activate systems")."|activate_multiple|\n"; + + /* Add Copy & Paste header */ + $s .= $this->parent->get_copypaste_header($this->selectedBase,$this->module); + + /* Add snapshot icons */ + $s .= $this->parent->get_snapshot_header($this->selectedBase,$this->module); + + $this->SetDropDownHeaderMenu($s); + $this->SetListHeader($listhead); + } + + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + function setEntries($terminals) + { + $empty =""; + + /* Dynamic action col, depending on snapshot icons */ + $action_col_size = 120; + if($this->parent->snapshotEnabled()){ + $action_col_size += 38; + } + + // User and Template Images + $editlink = "%s"; + + /* ACL mapping */ + $ui = get_userinfo(); + $tabs = $this->parent->get_tab_defs(); + + $cnts = array("component" => 0 , "terminal" => 0 , "workstation" => 0 , + "printer" => 0 , "phone" => 0 , "server" => 0,"opsi_client" => 0, + "NewDevice" => 0, "winstation"=> 0); + + /* Get list of all objectGroups and their member and release configuration + */ + $ogroups = array(); + if($this->parent->fai_activated){ + $ogroups = get_sub_list("(&(objectClass=gosaGroupOfNames)(FAIclass=*)(member=*))",array("ogroups"), + get_ou("ogroupRDN"),$this->config->current['BASE'],array("FAIclass","member","cn"),GL_NO_ACL_CHECK | GL_SUBSEARCH); + foreach($ogroups as $ogroup){ + for($i = 0 ; $i < $ogroup['member']['count'] ; $i++){ + if(preg_match("/:/",$ogroup['FAIclass'][0])) { + if(!isset($og_list[$ogroup['member'][$i]])){ + $ogs_release[$ogroup['member'][$i]]['STR'] = ""; + $ogs_release[$ogroup['member'][$i]]['CN'] = ""; + } + $ogs_release[$ogroup['member'][$i]]['STR'] .= preg_replace("/^.*:/","",$ogroup['FAIclass'][0]).", "; + $ogs_release[$ogroup['member'][$i]]['CN'] .= $ogroup['cn'][0].", "; + } + } + } + } + + // Test Every Entry and generate divlist Array + foreach($terminals as $key => $val){ + + /* Get system type, it is used to fetch the acls for the current object. + "winstation" acls are stored as 2winworkstation", so we have to map this here */ + + /* Map NewDevice acls to workstation acls */ + $type = $this->parent->get_system_type($val); + if($type == "NewDevice" || $type == "ArpNewDevice"){ + $type = "incoming"; + } + $acl_type = $tabs[$type]['ACLC']; + $s_acl = $tabs[$type]['ACL']; + $category = preg_replace("/\/.*$/","",$s_acl); + $class = preg_replace("/^.*\//","",$s_acl); + + /* Get complete category acls */ + $acl_all = $ui->has_complete_category_acls($val['dn'],$acl_type) ; + + /* Get specific generic acls */ + $acl = $ui->get_permissions($val['dn'],$tabs[$type]['ACL']); + + /* Add copy & cut functionality */ + $action= $this->parent->get_copypaste_action($val['dn'],$category,$class); + + $action.= ""; + + $action.= $this->parent->get_snapshot_action($val['dn'],$acl_type); + + if(preg_match("/d/",$acl)){ + $action.= ""; + }else{ + $action.= $empty; + } + + $val['cn'][0]= preg_replace('/\$$/', '', $val['cn'][0]); + + // Generate Array to Add + $dsc= ""; + if (isset($val['description'][0])){ + $dsc= " [".$val['description'][0]."]"; + } + if((isset($val['is_new']))&&(!empty($val['is_new']))){ + $display= $val["cn"][0]." ".$val['is_new'].$dsc; + }else{ + $display= $val["cn"][0].$dsc; + } + + /* Check if this is a terminal/workstation && if we are allowed to change the userPassword */ + $display_key_for = array("terminal","workstation","server","component"); + $pwd_acl = $ui->get_permissions($val['dn'],$tabs[$type]['ACL'],"userPassword"); + if(preg_match("/w/",$pwd_acl) && in_array($type,$display_key_for)){ + $action2 = ""; + }else{ + $action2 = $empty; + } + + /* Add create FAI CD icon + */ + $acl_cd = preg_match("/w/",$ui->get_permissions($val['dn'],"workstation/workgeneric","createFAICD")); + if(in_array("gotoWorkstation",$val['objectClass']) && $acl_cd){ + $action2= " ".$action2; + }else{ + $action2= $empty.$action2; + } + + if(isset($val['message'])){ + $display.= " (".$val['message'].")"; + } + + $img = $this->parent->convert_list($val); + + /* Cutted objects should be displayed in light grey */ + if($this->parent->CopyPasteHandler){ + foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){ + if($queue_data['dn'] == $val['dn']) { + $display = "".$display.""; + break; + } + } + } + + $type = $this->parent->get_system_type($val); + if($type == "ArpNewDevice"){ + $type = "NewDevice"; + } + $cnts[$type] ++; + + /* Create each field */ + $field0 = array("string" => "" , + "attach" => "style='width:20px;'"); + $field1 = array("string" => sprintf($img['img'],$val['dn']), + "attach" => "style='text-align:center;width:20px;'"); + $field2 = array("string" => sprintf($editlink,$key,$display), + "attach" => "style='' title='".preg_replace('/ /', ' ', LDAP::fix($val['dn']))."'"); + $field3 = array("string" => preg_replace("/%KEY%/", "$key", $action2.$action), + "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'"); + + if($this->parent->fai_activated){ + + $release =""; + $release_attach = ""; + if(isset($val['FAIclass'][0]) && preg_match("/:/",$val['FAIclass'][0])){ + $release = preg_replace("/^.*:/","",$val['FAIclass'][0]); + $release_attach = ""; + }elseif(isset($ogs_release[$val['dn']])){ + $release = trim($ogs_release[$val['dn']]['STR'],", "). + " "; + $release_attach = "title='".sprintf(_("Inherited from %s"),trim($ogs_release[$val['dn']]['CN'],", "))."'"; + } + $field2a = array("string" => $release." ","attach"=>$release_attach." style='width:100px;'"); + $this->AddElement( array($field0,$field1,$field2,$field2a,$field3)); + }else{ + $this->AddElement( array($field0,$field1,$field2,$field3)); + } + } + + /* Create summary string for list footer */ + $num_deps=0; + if(!$this->SubSearch){ + $num_deps = count($this->Added_Departments); + } + + $num_ser_str = sprintf(_("Number of listed '%s'"),_("servers")); + $num_ws_str = sprintf(_("Number of listed '%s'"),_("workstations")); + $num_ter_str = sprintf(_("Number of listed '%s'"),_("terminals")); + $num_pho_str = sprintf(_("Number of listed '%s'"),_("phones")); + $num_prt_str = sprintf(_("Number of listed '%s'"),_("printers")); + $num_com_str = sprintf(_("Number of listed '%s'"),_("network components")); + $num_new_str = sprintf(_("Number of listed '%s'"),_("new devices")); + $num_wws_str = sprintf(_("Number of listed '%s'"),_("windows workstations")); + $num_dep_str = sprintf(_("Number of listed '%s'"),_("departments")); + + $str = "".$num_ser_str." ".$cnts['server']."    "; + $str.= "".$num_ws_str." ".$cnts['workstation']."    "; + $str.= "".$num_ter_str." ".$cnts['terminal']."    "; + $str.= "".$num_pho_str." ".$cnts['phone']."    "; + $str.= "".$num_prt_str." ".$cnts['printer']."    "; + $str.= "".$num_com_str." ".$cnts['component']."    "; + $str.= "".$num_new_str." ".$cnts['NewDevice']."    "; + $str.= "".$num_wws_str." ".$cnts['winstation']."    "; + $str.= "".$num_dep_str." ".$num_deps."    "; + + $this->set_List_Bottom_Info($str); + } + + + function Save() + { + MultiSelectWindow :: Save(); + } + + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow :: save_object(); + + + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/class_divListSystemService.inc b/trunk/gosa-plugins/systems/admin/systems/class_divListSystemService.inc new file mode 100644 index 000000000..140e728e0 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/class_divListSystemService.inc @@ -0,0 +1,171 @@ +AddCheckBox */ + var $parent ; + var $ui ; + + function divListSystemService ($config,$parent) + { + MultiSelectWindow::MultiSelectWindow($config,"SystemService", "server"); + + $this->parent = $parent; + $this->ui = get_userinfo(); + $this->EnableJSLeaveMsg(TRUE); + + /* Set list strings */ + $this->SetTitle(_("Installed services")); + $this->SetSummary(_("Installed services")); + + /* Result page will look like a headpage */ + $this->SetInformation(_("Add, remove and configure the properties of system services here.")); + + /* Disable buttonsm */ + $this->EnableCloseButton(false); + $this->EnableSaveButton (false); + + /* set Page header */ + $this->AddHeader(array("string"=>" ","attach"=>"style='width:20px;'")); + $this->AddHeader(array("string"=>_("Name"))); + $this->AddHeader(array("string"=>_("Actions"),"attach"=>"style='width:100px;border-right:0px;'")); + $this->HideFilterPart(); + } + + function GenHeader() + { + /* Prepare departments, + which are shown in the listbox on top of the listbox + */ + $listhead = "
    ". + "  ". + "  ". + "  ". + "  ". + "  ". + "
    "; + $this->SetListHeader($listhead); + } + + function execute() + { + $this->ClearElementsList(); + $this->GenHeader(); + } + + function setEntries($list) + { + $tmp = array(); + foreach($list as $name => $entry){ + $tmp[$name] = $entry['Message']; + } + + natcasesort($tmp); + $tmp2 = array(); + foreach($tmp as $name => $value){ + $tmp2[$name] = $list[$name]; + } + + $ui = get_userinfo(); + + foreach($tmp2 as $name => $entry){ + + switch($entry['Status']){ + case '' : $str =" ";break; + case SERVICE_STOPPED : $str =""; break; + case SERVICE_STARTED : $str =""; break; + case SERVICE_RESTARTED : $str ="R"; break; + default: $str= "".$entry["; + } + + $WasAccount = $this->parent->plugins[$name] -> initially_was_account; + + $plug = $_GET['plug']; + + if($entry['AllowEdit']){ + $link = "".$entry['Message'].""; + }else{ + $link = $entry['Message']; + } + + $field1 = array("string" => $str ,"attach" => "style='width:20px;'"); + $field2 = array("string" => $link); + + $actions =""; + if($entry['AllowStart'] && $WasAccount){ + $actions .= " "; + }else{ + $actions .= " "; + } + if($entry['AllowStop'] && $WasAccount){ + $actions .= " "; + }else{ + $actions .= " "; + } + if($entry['AllowRestart'] && $WasAccount){ + $actions .= " "; + }else{ + $actions .= " "; + } + + /* Check if edit is enabled and allowed for current service */ + if($entry['AllowEdit']){ + $actions .= " "; + }else{ + $actions .= " "; + } + + /* Check if remove is enabled and allowed for current service */ + if($entry['AllowRemove']){ + $actions .= " "; + }else{ + $actions .= " "; + } + + $field3 = array("string" => $actions ,"attach" => "style='width:100px;border-right:0px;'"); + $this->AddElement(array($field1,$field2,$field3)); + } + } + + function Save() + { + MultiSelectWindow :: Save(); + } + + function save_object() + { + /* Save automatic created POSTs like regex, checkboxes */ + MultiSelectWindow :: save_object(); + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/class_servGeneric.inc b/trunk/gosa-plugins/systems/admin/systems/class_servGeneric.inc new file mode 100644 index 000000000..9bfa325eb --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/class_servGeneric.inc @@ -0,0 +1,524 @@ + "", "update" => "", "localboot" => "", "reinstall" => "", "rescan" => "", + "wakeup" => "", "memcheck" => "", "sysinfo" => ""); + + var $fai_activated =FALSE; + var $view_logged = FALSE; + + var $currently_installing = FALSE; + var $currently_installing_warned = FALSE; + + var $kerberos_key_service = NULL; + + var $mapActions = array("reboot" => "", + "instant_update" => "softupdate", + "localboot" => "localboot", + "update" => "sceduledupdate", + "reinstall" => "install", + "rescan" => "", + "wakeup" => "", + "memcheck" => "memcheck", + "sysinfo" => "sysinfo"); + + + function servgeneric (&$config, $dn= NULL, $parent= NULL) + { + /* Check if FAI is activated */ + $tmp = $config->search("faiManagement", "CLASS",array('menu','tabs')); + + if(!empty($tmp)){ + $this->fai_activated = TRUE; + } + + plugin::plugin ($config, $dn, $parent); + + /* Initialize kerberos host key plugin */ + if(class_available("krbHostKeys")){ + $this->kerberos_key_service = new krbHostKeys($this->config,$this); + } + + $this->ui = get_userinfo(); + $this->modes["active"]= _("Activated"); + $this->modes["locked"]= _("Locked"); + + /* Set base */ + if ($this->dn == "new"){ + $ui= get_userinfo(); + $this->base= dn2base($ui->dn); + $this->cn= ""; + } else { + $this->base= preg_replace ("/^[^,]+,".preg_quote(get_ou("serverRDN"), '/')."/", "", $this->dn); + } + $this->netConfigDNS = new termDNS($this->config,$this,$this->objectclasses); + $this->netConfigDNS->set_acl_category("server"); + $this->netConfigDNS->set_acl_base($this->base); + + /* Check if this host is currently in installation process*/ + if($this->dn != "new" && class_available("gosaSupportDaemon") && class_available("DaemonEvent")){ + $o = new gosaSupportDaemon(); + $e_types = DaemonEvent::get_event_types(USER_EVENT | SYSTEM_EVENT | HIDDEN_EVENT); + $evts = $o->get_entries_by_mac(array($this->netConfigDNS->macAddress)); + foreach($evts as $evt){ + if(isset($e_types['QUEUED'][$evt['HEADERTAG']]) && $evt['STATUS'] == "processing" && + $e_types['QUEUED'][$evt['HEADERTAG']] == "DaemonEvent_reinstall"){ + $this->currently_installing =TRUE; + } + } + } + + /* Save dn for later references */ + $this->orig_dn = $this->dn; + $this->orig_cn = $this->cn; + $this->orig_base = $this->base; + } + + + function set_acl_base($base) + { + plugin::set_acl_base($base); + $this->netConfigDNS->set_acl_base($base); + } + + + function set_acl_category($cat) + { + plugin::set_acl_category($cat); + $this->netConfigDNS->set_acl_category($cat); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + /* Do we represent a valid server? */ + if (!$this->is_account && $this->parent === NULL){ + $display= "\"\" ". + msgPool::noValidExtension(_("server")).""; + return($display); + } + + if ((isset($_POST['action'])) && ($this->acl_is_writeable("FAIstate")) && isset($this->mapActions[$_POST['saction']]) ){ + $action = $_POST['saction']; + + /* Check if we have an DaemonEvent for this action */ + if(class_available("DaemonEvent")){ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + if(isset($events['TRIGGERED']["DaemonEvent_".$action])){ + $evt = $events['TRIGGERED']["DaemonEvent_".$action]; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->add_targets(array($this->netConfigDNS->macAddress)); + $tmp->set_type(TRIGGERED_EVENT); + $o_queue = new gosaSupportDaemon(); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + }else{ + msg_dialog::display(_("Event error"), + sprintf(_("Event '%s' is not available!"),$action),ERROR_DIALOG); + } + } + + /* Base select dialog */ + $once = true; + foreach($_POST as $name => $value){ + if(preg_match("/^chooseBase/",$name) && $once ){ + $once = false; + $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases()); + $this->dialog->setCurrentBase($this->base); + } + } + + /* Dialog handling */ + if(is_object($this->dialog)){ + /* Must be called before save_object */ + $this->dialog->save_object(); + + if($this->dialog->isClosed()){ + $this->dialog = false; + }elseif($this->dialog->isSelected()){ + + /* Only accept allowed bases */ + $tmp = $this->get_allowed_bases(); + if($tmp[$this->dialog->isSelected()]){ + $this->base = $this->dialog->isSelected(); + } + $this->dialog= false; + }else{ + return($this->dialog->execute()); + } + } + + /* Fill templating stuff */ + $smarty= get_smarty(); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translated){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + /* Assign base ACL */ + $smarty->assign("bases" , $this->get_allowed_bases()); + + /* Assign attributes */ + foreach ($this->attributes as $attr){ + $smarty->assign("$attr", $this->$attr); + } + + $smarty->assign("staticAddress", ""); + $smarty->assign("base_select", $this->base); + + /* Assign status */ + if (gosaSupportDaemon::ping($this->netConfigDNS->macAddress)){ + $smarty->assign("actions", array("halt" => _("Switch off"), "reboot" => _("Reboot"), + "update" => _("System update"), + "reinstall" => _("Reinstall"), + "rescan" => _("Rescan hardware"), + "memcheck" => _("Memory test"), + "localboot" => _("Force localboot"), + "sysinfo" => _("System analysis"))); + } else { + $smarty->assign("actions", array("wakeup" => _("Wake up"), + "reinstall" => _("Reinstall"), + "update" => _("System update"), + "memcheck" => _("Memory test"), + "localboot" => _("Force localboot"), + "sysinfo" => _("System analysis"))); + } + + /* Show main page */ + $smarty->assign("fai_activated",$this->fai_activated); + + $str = $this->netConfigDNS->execute(); + if(is_object($this->netConfigDNS->dialog)){ + return($str); + } + $smarty->assign("netconfig", $str); + $smarty->assign("modes", $this->modes); + $smarty->assign("currently_installing", $this->currently_installing); + + $smarty->assign("host_key",""); + if(is_object($this->kerberos_key_service)){ + $smarty->assign("host_key",$this->kerberos_key_service->execute_by_prefix("host/")); + } + + return($smarty->fetch (get_template_path('server.tpl', TRUE))); + } + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if ((!$this->initially_was_account) || (!$this->acl_is_removeable())){ + return; + } + + /* Remove kerberos key dependencies too */ + if(is_object($this->kerberos_key_service)){ + $this->kerberos_key_service->remove_from_parent_by_prefix("host/"); + } + + $this->netConfigDNS->remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + $ldap->rmdir($this->dn); + + update_accessTo($this->orig_cn,""); + + new log("remove","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Delete references to object groups */ + $ldap->cd ($this->config->current['BASE']); + $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); + while ($ldap->fetch()){ + $og= new ogroup($this->config, $ldap->getDN()); + unset($og->member[$this->dn]); + $og->save (); + } + + /* Clean queue form entries with this mac + */ + if(class_available("gosaSupportDaemon") && tests::is_mac($this->netConfigDNS->orig_macAddress)){ + $q = new gosaSupportDaemon(); + $q->clean_queue_from_mac($this->netConfigDNS->orig_macAddress); + } + $this->handle_post_events("remove",array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + } + + + /* Save data to object */ + function save_object() + { + /* Save current base, to be able to revert to last base, + if new base is invalid or not allowed to be selected */ + $base_tmp = $this->base; + plugin::save_object(); + $this->netConfigDNS->save_object(); + + /* Get base selection */ + $tmp = $this->get_allowed_bases(); + if(isset($_POST['base'])){ + if($tmp[$_POST['base']]){ + $this->base = $_POST['base']; + }else{ + $this->base = $base_tmp; + } + } + + /* Hanle kerberos host key plugin */ + if(is_object($this->kerberos_key_service)){ + $this->kerberos_key_service->save_object_by_prefix("host/"); + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + $message= array_merge($message, $this->netConfigDNS->check()); + $this->dn= "cn=".$this->cn.",".get_ou('serverRDN').$this->base; + + /* must: cn */ + if ($this->cn == ""){ + msgPool::required(_("Server name")); + } + + /* Check if given name is a valid host/dns name */ + if(!tests::is_dns_name($this->cn)){ + $message[]= msgPool::invalid(_("Server name"), $this->cn, "/[a-z0-9\.\-]/i"); + } + + if ($this->orig_dn != $this->dn){ + $ldap= $this->config->get_ldap_link(); + $ldap->cd ($this->base); + $ldap->search ("(cn=".$this->cn.")", array("cn")); + if ($ldap->count() != 0){ + while ($attrs= $ldap->fetch()){ + if ($attrs['dn'] != $this->orig_dn){ + if(!preg_match("/cn=dhcp,/",$attrs['dn']) && !preg_match("/,".get_ou('systemIncomingRDN')."/",$attrs['dn']) && preg_match("/,".get_ou('serverRDN')."/",$attrs['dn'])){ + $message[]= msgPool::duplicated(_("Server name")); + break; + } + } + } + } + } + + /* Warn the user, that this host is currently installing */ + if($this->currently_installing && !$this->currently_installing_warned && !preg_match("/".preg_quote(get_ou("systemIncomingRDN"), '/')."/",$this->orig_dn)){ + + /* Force aborting without message dialog */ + $message[] = ""; + $this->currently_installing_warned = TRUE; + msg_dialog::display(_("Software deployment"), + _("This host is currently installing, if you really want to save it, press 'OK'."), + CONFIRM_DIALOG); + } + + /* Check if we are allowed to create or move this object + */ + if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ + $message[] = msgPool::permCreate(); + }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ + $message[] = msgPool::permMove(); + } + + return ($message); + } + + + /* Save to LDAP */ + function save() + { + /* Detect mode changes */ + $activate= (isset($this->saved_attributes['gotoMode']) && + $this->gotoMode != $this->saved_attributes['gotoMode'] && + $this->gotoMode == "active" && + tests::is_ip($this->netConfigDNS->ipHostNumber)); + + plugin::save(); + + /* Remove all empty values */ + if ($this->orig_dn == 'new'){ + $attrs= array(); + foreach ($this->attrs as $key => $val){ + if (is_array($val) && count($val) == 0){ + continue; + } + $attrs[$key]= $val; + } + $this->attrs= $attrs; + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + if ($this->orig_dn == 'new'){ + $ldap->cd($this->config->current['BASE']); + $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); + $ldap->cd($this->dn); + $ldap->add($this->attrs); + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $mode= "add"; + } else { + + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + /* Update all accessTo/trust dependencies */ + if($this->orig_cn != $this->cn){ + update_accessTo($this->orig_cn,$this->cn); + } + + $mode= "modify"; + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); + } + $this->netConfigDNS->cn = $this->cn; + $this->netConfigDNS->save(); + + /* Optionally execute a command after we're done */ + $this->handle_post_events($mode,array("macAddress" => $this->netConfigDNS->macAddress,"ipHostNumber" => $this->netConfigDNS->ipHostNumber)); + + if ($activate){ + + /* Send installation activation + */ + $events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT); + $o_queue = new gosaSupportDaemon(); + if(isset($events['TRIGGERED']['DaemonEvent_installation_activation'])){ + $evt = $events['TRIGGERED']['DaemonEvent_installation_activation']; + $tmp = new $evt['CLASS_NAME']($this->config); + $tmp->set_type(TRIGGERED_EVENT); + $tmp->add_targets(array($this->netConfigDNS->macAddress)); + if(!$o_queue->append($tmp)){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + } + } + + } + + + /* Display generic part for server copy & paste */ + function getCopyDialog() + { + $vars = array("cn"); + + $smarty = get_smarty(); + $smarty->assign("cn" ,$this->cn); + $smarty->assign("object","server"); + $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); + $ret = array(); + $ret['string'] = $str; + $ret['status'] = ""; + return($ret); + } + + + function saveCopyDialog() + { + if(isset($_POST['cn'])){ + $this->cn = $_POST['cn']; + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + if(isset($source['macAddress'][0])){ + $this->netConfigDNS->macAddress = $source['macAddress'][0]; + } + if(isset($source['ipHostNumber'][0])){ + $this->netConfigDNS->ipHostNumber = $source['ipHostNumber'][0]; + } + + } + + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + return (array( + "plShortName" => _("Generic"), + "plDescription" => _("Server generic"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 1, + "plSection" => array("administration"), + "plCategory" => array("server" => array("description" => _("Server"), + "objectClass" => "goServer")), + "plProvidedAcls"=> array( + "cn" => _("Name"), + "description" => _("Description"), + "base" => _("Base"), + + "gotoMode" => _("Goto mode"), + "userPassword"=> _("Root password"), + "FAIstate" => _("Action flag")) + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/class_serverService.inc b/trunk/gosa-plugins/systems/admin/systems/class_serverService.inc new file mode 100644 index 000000000..4bd58ed18 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/class_serverService.inc @@ -0,0 +1,485 @@ +parent = $parent; + $this->dn= $dn; + + /* Adapt parent attributes */ + if(isset($this->parent->attrs)){ + $this->attrs = $this->parent->attrs; + } + + foreach ($config->data['TABS']['SERVERSERVICE'] as $plug){ + + if(class_available($plug['CLASS'])){ + + $name= $plug['CLASS']; + $this->plugin_names[]= $name; + $this->plugins[$name]= new $name($config, $dn, $this); + + /* Initialize kerberos key support */ + if(isset($this->plugins[$name]->krb_service_prefix) && !empty($this->plugins[$name]->krb_service_prefix)){ + $this->plugins[$name]->krb_host_key = &$this->parent->kerberos_key_service; + } + + /* Capture all service objectClases, necessary for acl handling */ + if(isset($this->plugins[$name]->objectclasses)){ + foreach($this->plugins[$name]->objectclasses as $oc){ + $this->objectclasses[] = $oc; + } + } + }else{ + #trigger_error("Service class missing: ".$plug['CLASS']); + } + } + $this->divList = new divListSystemService($config,$this); + } + + function set_acl_base($base) + { + plugin::set_acl_base($base); + foreach($this->plugins as $name => $obj){ + $this->plugins[$name]->set_acl_base($base); + } + } + + function set_acl_category($category) + { + plugin::set_acl_category($category); + foreach($this->plugins as $name => $obj){ + $this->plugins[$name]->set_acl_category($category); + } + } + + function execute() + { + /* Variable initialisation */ + $s_action = ""; + $s_entry = ""; + + /* Walk through posts and check if there are some introductions for us */ + $PossiblePosts = array("addNewService" => "", + "startServices" => "", + "stopServices" => "", + "restartServices" => "", + "removeServices" => "", + + "StartSingleService" => "/^StartSingleService_(.*)_[xy]$/", + "StopSingleService" => "/^StopSingleService_(.*)_[xy]$/", + "RestartSingleService" => "/^RestartSingleService_(.*)_[xy]$/", + "RemoveSingleService" => "/^RemoveSingleService_(.*)_[xy]$/", + "EditSingleService" => "/^EditSingleService_(.*)_[xy]$/"); + + + $once = true; + foreach($_POST as $name => $value){ + foreach($PossiblePosts as $pregCheck => $idPreg) { + if(preg_match("/^".$pregCheck."/",$name) && $once){ + $once = false; + $s_action = $pregCheck; + + if(!empty($idPreg)){ + $s_entry = preg_replace($idPreg,"\\1",$name); + } + } + } + } + + + /* Handle state changes for services */ + $map = array( "startServices" => array("type" => START_SERVICE , "service" => ALL_SERVICES), + "stopServices" => array("type" => STOP_SERVICE , "service" => ALL_SERVICES), + "restartServices" => array("type" => RESTART_SERVICE , "service" => ALL_SERVICES), + "StartSingleService" => array("type" => START_SERVICE , "service" => $s_entry), + "StopSingleService" => array("type" => STOP_SERVICE , "service" => $s_entry), + "RestartSingleService" => array("type" => RESTART_SERVICE , "service" => $s_entry)); + if(isset($map[$s_action])){ + $type = $map[$s_action]['type']; + $service = $map[$s_action]['service']; + $this->ServiceStatusUpdate($type,$service); + } + + /* Handle actions linked via href */ + if(isset($_GET['act']) && $_GET['act'] == "open" && isset($_GET['id'])){ + $id = $_GET['id']; + if(isset($this->plugins[$id])){ + $s_entry = $id; + $s_action = "EditSingleService"; + } + } + + /* Open service add dialog */ + if($s_action == "addNewService"){ + $this->dialog = new ServiceAddDialog($this->config,$this->dn,$this); + } + + + /* Remove service */ + if($s_action == "RemoveSingleService"){ + + /* Create resetted obj */ + $new_obj = new $s_entry($this->config,$this->dn, $this); + $new_obj -> set_acl_base($this->acl_base); + $new_obj -> set_acl_category(preg_replace("/\/$/","",$this->acl_category)); + $tmp = $new_obj->getListEntry(); + + if($tmp['AllowRemove']){ + + /* Check if we are allowed to remove this service + */ + $str = $this->plugins[$s_entry]->allow_remove(); + + if(empty($str)){ + $this->plugins[$s_entry] = $new_obj; + $this->plugins[$s_entry]->is_account = false; + }else{ + msg_dialog::display(_("Error"), $str, ERROR_DIALOG); + } + } + } + + + /* Edit a service and make a backup from all attributes, + to be able to restore old values after aborting dialog */ + if($s_action == "EditSingleService"){ + if($this->plugins[$s_entry]->acl_is_readable("")){ + $this->backup = get_object_vars($this->plugins[$s_entry]); + $this->dialog = $this->plugins[$s_entry]; + $this->current = $s_entry; + } + } + + + /* Abort service add */ + if(isset($_POST['CancelServiceAdd'])){ + $this->dialog = FALSE; + $this->backup = NULL; + $this->current = ""; + } + + + /* Abort dialog + Restore vars with values before editing */ + if(isset($_POST['CancelService']) && !empty($this->current)){ + if($this->backup == NULL){ + $this->plugins[$this->current] = new $this->current($this->config,$this->dn,$this); + $this->plugins[$this->current]-> set_acl_base($this->acl_base); + $this->plugins[$this->current]-> set_acl_category(preg_replace("/\/$/","",$this->acl_category)); + + }else{ + foreach($this->backup as $name => $value){ + $this->plugins[$this->current]->$name = $value; + } + } + $this->dialog = FALSE; + $this->backup = NULL; + $this->current = ""; + } + + + /* Abort dialog */ + if(isset($_POST['SaveService']) && is_object($this->dialog)){ +# $this->dialog->save_object(); + $msgs = $this->dialog->check(); + if(count($msgs)){ + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $this->plugins[$this->current] = $this->dialog; + $tmp = get_object_vars($this->dialog); + foreach($tmp as $name => $value){ + $this->plugins[$this->current]->$name = $value; + } + $this->current = ""; + $this->dialog = FALSE; + $this->backup = NULL; + } + } + + + /* Abort dialog */ + if((isset($_POST['SaveServiceAdd'])) && (!empty($_POST['ServiceName']))){ + $serv = $_POST['ServiceName']; + $this->plugins[$serv]->is_account = true; + $this->dialog = $this->plugins[$serv]; + $this->current = $serv; + } + + + /* There is currently a subdialog open, display this dialog */ + if(is_object($this->dialog)){ + $add =""; + if(isset($this->dialog->krb_host_key) && $this->dialog->krb_host_key instanceof krbHostKeys){ + $add = $this->dialog->krb_host_key->save_object_by_prefix($this->dialog->krb_service_prefix); + $add = $this->dialog->krb_host_key->execute_by_prefix($this->dialog->krb_service_prefix,TRUE); + } + return($add.$this->dialog->execute()); + } + + + /* Dispaly services overview */ + $this->divList->execute(); + $list = array(); + + foreach($this->plugins as $name => $obj){ + if($obj->is_account){ + $list[$name] = $this->plugins[$name]->getListEntry(); + } + } + $this->divList -> setEntries($list); + return("
    ".$this->divList->Draw()."
    "); + } + + + /* Get all used services + CLASSNAME => _($this->plugins[*]->DisplayName); */ + function getAllUsedServices() + { + $ret = array(); + foreach($this->plugins as $name => $obj){ + if($obj->is_account){ + if(isset($obj->DisplayName)){ + $ret[$name] = $obj->DisplayName; + }else{ + $ret[$name] = $name; + } + } + } + return($ret); + } + + + /* Get all unused services + CLASSNAME => _($this->plugins[*]->DisplayName); */ + function getAllUnusedServices() + { + $tmp = $this->getAllUsedServices(); + $pool_of_ocs =array(); + foreach($tmp as $name => $value){ + if(isset($this->plugins[$name]->conflicts)){ + $pool_of_ocs[]= get_class($this->plugins[$name]); + } + } + + $ret = array(); + foreach($this->plugins as $name => $obj){ + + /* Skip all pluigns that will lead into conflicts */ + $skip = false; + if(isset($obj->conflicts)){ + foreach($obj->conflicts as $oc){ + if(in_array_ics($oc,$pool_of_ocs)){ + $skip = true; + } + } + } + + /* Only show createable services */ + if(!$obj->acl_is_createable()){ + $skip = true; + } + + if(!$skip){ + if(isset($obj->DisplayName)){ + $ret[$name] = $obj->DisplayName; + }else{ + $ret[$name] = $name; + } + } + } + return($ret); + } + + + /* This function sets the status var for each used + service && calls an external hook if specified in gosa.conf*/ + function ServiceStatusUpdate($method , $service) + { + /* Skip if this is a new server */ + if($this->dn == "new"){ + msg_dialog::display(_("Information"), _("Cannot update service status until it has been saved!"), INFO_DIALOG); + return; + } + + $action = ""; + if($method == START_SERVICE){ + $action = SERVICE_STARTED; + }elseif($method== STOP_SERVICE){ + $action = SERVICE_STOPPED; + }elseif($method == RESTART_SERVICE){ + $action = SERVICE_RESTARTED; + }else{ + msg_dialog::display(_("Error"), _("Cannot update service status!"), ERROR_DIALOG); + return; + } + + $caseVars = array("cn","dn"); + if($service == ALL_SERVICES){ + foreach($this->plugins as $name => $obj){ + foreach($caseVars as $var){ + if(isset($this->$var)){ + $this->plugins[$name]->$var = $this->$var; + } + } + + /* check if services can be restarted */ + $map =array(SERVICE_STARTED=> "AllowStart" , + SERVICE_STOPPED => "AllowStop", + SERVICE_RESTARTED => "AllowRestart"); + + /* get plugins informations, restart/start/stop actions allowed ?*/ + $tmp = $this->plugins[$name]->getListEntry(); + + /* Check if given action is allowed for this service */ + if($tmp[$map[$action]] && !empty($this->plugins[$name]->StatusFlag)){ + if($this->plugins[$name]->initially_was_account && $this->plugins[$name]->is_account){ + $this->plugins[$name]->setStatus($action); + } + } + } + }else{ + foreach($caseVars as $var){ + if(isset($this->$var)){ + $this->plugins[$service]->$var = $this->$var; + } + } + if($this->plugins[$service]->is_account){ + $this->plugins[$service]->setStatus($action); + } + } + } + + + function check() + { + $message = plugin::check(); + return $message; + } + + + function save_object() + { + foreach($this->plugins as $name => $obj){ + if($obj->is_account){ + $this->plugins[$name]->save_object(); + } + } + } + + + function remove_from_parent() + { + $caseVars = array("cn","dn"); + foreach($this->plugins as $name => $obj){ + foreach($caseVars as $var){ + if(isset($this->$var)){ + $this->plugins[$name]->$var = $this->$var; + } + } + if($this->plugins[$name]->initially_was_account){ + if(isset($this->plugins[$name]->krb_host_key) && $this->plugins[$name]->krb_host_key instanceof krbHostKeys){ + $this->plugins[$name]->krb_host_key->remove_from_parent_by_prefix($this->plugins[$name]->krb_service_prefix); + } + $this->plugins[$name]->remove_from_parent(); + } + } + } + + + function save() + { + $caseVars = array("cn","dn"); + foreach($this->plugins as $name => $obj){ + + foreach($caseVars as $var){ + if(isset($this->$var)){ + $this->plugins[$name]->$var = $this->$var; + } + } + + if($this->plugins[$name]->is_account){ + $this->plugins[$name]->save(); + }else{ + if($this->plugins[$name]->initially_was_account){ + $this->plugins[$name]->remove_from_parent(); + } + } + } + } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + foreach($this->plugins as $name => $plugin){ + $this->plugins[$name]->PrepareForCopyPaste($source); + } + } + + + /* Check if all plugins allow a remove .. */ + function allow_remove() + { + foreach($this->plugins as $name => $obj){ + $str = $obj->allow_remove(); + if(!empty($str)){ + return($str); + } + } + } + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/class_systemManagement.inc b/trunk/gosa-plugins/systems/admin/systems/class_systemManagement.inc new file mode 100644 index 000000000..722af8e4c --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/class_systemManagement.inc @@ -0,0 +1,1841 @@ +config= $config; + $this->ui= $ui; + + /* Add FAIstate to attributes if FAI is activated */ + $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + $this->fai_activated = TRUE; + } + + /* Copy & Paste enabled ?*/ + if ($this->config->get_cfg_value("copyPaste") == "true"){ + $this->CopyPasteHandler = new CopyPasteHandler($this->config); + } + + /* Check whether the arp handling active or not */ + if($this->config->search("ArpNewDevice","CLASS",array('tabs')) != ""){ + $this->arp_handling_active = TRUE; + } + + /* Check if we are able to communicate with the GOsa supprot daemon + */ + if(class_available("gosaSupportDaemon")){ + $o = new gosaSupportDaemon(); + $this->si_active = $o->connect() && class_available("DaemonEvent"); + } + + /* Check if we are able to communicate with the GOsa supprot daemon + */ + if(class_available("opsi")){ + $this->opsi = new opsi($this->config); + } + + /* Creat dialog object */ + $this->DivListSystem = new divListSystem($this->config,$this); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + session::set('LOCK_VARS_TO_USE',array("/^system_edit_/i","/^system_del_/","/^act/","/^id/","/^item_selected/","/^remove_multiple_systems/","/^menu_action/")); + + /******************** + Check for functional posts, edit|delete|add|... system devices + ********************/ + $s_action = ""; // Contains the action to proceed + $s_entry = ""; // The value for s_action + $base_back = ""; // The Link for Backbutton + $smarty = get_smarty(); + + /* Test Posts */ + foreach($_POST as $key => $val){ + // Post for delete + if(preg_match("/system_del.*/",$key)){ + $s_action = "del"; + $s_entry = preg_replace("/system_del_/i","",$key); + // Post for edit + }elseif(preg_match("/system_edit_.*/",$key)){ + $s_action="edit"; + $s_entry = preg_replace("/system_edit_/i","",$key); + // Post for new + }elseif(preg_match("/system_new.*/",$key)){ + $s_action="new"; + }elseif(preg_match("/system_tplnew.*/i",$key)){ + $s_action="new_tpl"; + }elseif(preg_match("/system_setpwd_.*/i",$key)){ + $s_action="change_pw"; + $s_entry = preg_replace("/system_setpwd_/i","",$key); + }elseif(preg_match("/gen_cd_.*/i",$key)){ + $s_action="gen_cd"; + $s_entry = preg_replace("/gen_cd_/i","",$key); + }elseif(preg_match("/^copy_.*/",$key)){ + $s_action="copy"; + $s_entry = preg_replace("/^copy_/i","",$key); + }elseif(preg_match("/^cut_.*/",$key)){ + $s_action="cut"; + $s_entry = preg_replace("/^cut_/i","",$key); + } + } + + /* remove image tags from posted entry (posts looks like this 'name_x')*/ + $s_entry = preg_replace("/_.$/","",$s_entry); + + /* Edit was requested by pressing the name(link) of an item */ + if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){ + $s_action ="edit"; + $s_entry = $_GET['id']; + } + /* Create options */ + if(isset($_POST['menu_action']) && preg_match("/^newsystem_/",$_POST['menu_action'])){ + $s_action = "newsystem"; + $s_entry = preg_replace("/^newsystem_/","",$_POST['menu_action']); + } + + /* handle C&P from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){ + $s_action = "copy_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){ + $s_action = "cut_multiple"; + } + if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){ + $s_action = "editPaste"; + } + + /* Handle daemon events */ + if(isset($_POST['menu_action']) && preg_match("/^trigger_event_/",$_POST['menu_action'])){ + $s_action = $_POST['menu_action']; + } + + /* Handle daemon events */ + if(isset($_POST['menu_action']) && preg_match("/^schedule_event_/",$_POST['menu_action'])){ + $s_action = $_POST['menu_action']; + } + + /* handle remove from layers menu */ + if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){ + $s_action = "del_multiple"; + } + + /* Handle instant actions from layers menu */ + foreach (array("halt", "reboot", "reinstall", "update", "wake") as $act){ + if(isset($_POST['menu_action']) && preg_match("/^${act}_multiple/",$_POST['menu_action'])){ + $s_action = "${act}_multiple"; + } + } + + /* Activate multiple machines */ + if(isset($_POST['menu_action']) && preg_match("/^activate_multiple/",$_POST['menu_action'])){ + $s_action = "activate_multiple"; + } + + /* Check for exeeded sizelimit */ + if (($message= check_sizelimit()) != ""){ + return($message); + } + + /* Try to get informations about what kind of system to create */ + if ($s_action=="new") { + return ($smarty->fetch(get_template_path('chooser.tpl', TRUE))); + } + + /* Incoming handling + * If someone made a systemtype and ogroup selection + * Display the new requested entry type ... servtab in case of server and so on. + */ + if(isset($_POST['SystemTypeChoosen'])){ + $s_action = "SelectedSystemType"; + } + + /******************** + Copy & Paste Handling ... + ********************/ + + /* Display the copy & paste dialog, if it is currently open */ + $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry); + if($ret){ + return($ret); + } + + + /******************** + Create FAI CD ... + ********************/ + if ($s_action=="gen_cd"){ + $this->dn= $this->terminals[$s_entry]['dn']; + set_object_info($this->dn); + return ($smarty->fetch(get_template_path('gencd.tpl', TRUE))); + } + + + /* Start CD-Creation */ + if ((isset($_POST["cd_create"])) && !empty($this->dn)){ + $smarty->assign("src", "?plug=".$_GET['plug']."&PerformIsoCreation"); + return ($smarty->fetch(get_template_path('gencd_frame.tpl', TRUE))); + } + + + if ($this->dn != "" && isset($_GET['PerformIsoCreation'])){ + + $return_button = "
    + + +
    "; + + $dsc = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w")); + + /* Get and check command */ + $command= $this->config->search("workgeneric", "SYSTEMISOHOOK",array('tabs')); + + if (check_command($command)){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execute"); + + /* Print out html introduction */ + echo ' + + + + + + + +
    ';
    +
    +        /* Open process handle and check if it is a valid process */
    +        $process= proc_open($command." '".$this->dn."'", $dsc, $pipes);
    +        if (is_resource($process)) {
    +          fclose($pipes[0]);
    +
    +          /* Print out returned lines && write JS to scroll down each line */
    +          while (!feof($pipes[1])){
    +            $cur_dat = fgets($pipes[1], 1024);
    +            echo $cur_dat;
    +            echo '' ;
    +            flush();
    +          }
    +        }
    +
    +        /* Get error string && close streams */
    +        $buffer= stream_get_contents($pipes[2]);
    +
    +        fclose($pipes[1]);
    +        fclose($pipes[2]);
    +        echo "
    "; + + /* Check return code */ + $ret= proc_close($process); + if ($ret != 0){ + echo "

    "._("Creating the image failed. Please see the report below.")."

    "; + echo "
    $buffer
    "; + } + + + + echo $return_button."
    "; + + } else { + $tmp= "

    ".sprintf(_("Command '%s', specified for ISO creation doesn't seem to exist."), $command)."

    "; + echo $tmp; + } + + /* Scroll down completly */ + echo '' ; + echo ''; + flush(); + exit; + } + + + /******************** + New Device handling (Ogroup/System select dialog.) + ********************/ + + /* All objects that have to be activated are listed in + $this->system_activation_object[] = "dn"; + + If there is an object group selected we simply adopt all + settings from these group and then directly save the entry again. + If no object group was selected, then we keep the "edit" dialog of + the target system opened to allow to edit the objects attributes. + */ + + if($s_action == "SelectedSystemType"){ + + /* Possible destination system types + */ + $tabs = $this->get_tab_defs(); + + /* Remember dialog selection. + */ + $selected_group = $_POST['ObjectGroup']; + $selected_system = $_POST['SystemType']; + + $this->systab = NULL; + + /* Check if system type exists. It should! */ + if(isset($tabs[$selected_system])){ + + /* Get tab informations */ + $class = $tabs[$selected_system]["CLASS"]; + $tabname = $tabs[$selected_system]["TABNAME"]; + $tabclass = $tabs[$selected_system]["TABCLASS"]; + $acl_cat = $tabs[$selected_system]["ACLC"]; + + + if(!class_available($tabclass)){ + msg_dialog::display(_("Error"), msgPool::class_not_found($tabclass), ERROR_DIALOG); + }else{ + + /* Go through all objects that should be activated + Contains alls object dns that have to be activated ("New Devices" not unknown) + */ + foreach($this->system_activation_object as $key => $dn){ + + /* Remove entry from list, to avoid page-reload problems */ + unset($this->system_activation_object[$key]); + + /* Load permissions for selected 'dn' and check if + we're allowed to create this 'dn' */ + $this->dn = $dn; + $ui = get_userinfo(); + $tabacl = $ui->get_permissions($this->dn,$acl_cat."/".$tabname); + + /* We are allowed to create the requested system type */ + if(preg_match("/c/",$tabacl)){ + $this->systab= new $tabclass($this->config, $this->config->data['TABS'][$class], $this->dn,$selected_system); + $this->systab->set_acl_base($this->DivListSystem->selectedBase); + $this->systab->by_object[$tabname]->base = $this->DivListSystem->selectedBase; + $this->systab->base = $this->DivListSystem->selectedBase; + + /* This will be used when the object is saved, to set FAIstate to 'install' + and to preset maybe other attributes. + */ + $this->systab->was_activated = TRUE; + + /* Assign some default values for opsi hosts + */ + if($this->systab instanceOf opsi_tabs){ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($dn); + $source_attrs = $ldap->fetch(); + foreach(array("macAddress" => "mac" ,"cn" => "hostId","description" => "description") as $src => $attr){ + if(isset($source_attrs[$src][0])){ + $this->systab->by_object['opsiGeneric']->$attr = $source_attrs[$src][0]; + } + } + } + + if($selected_group != "none"){ + + /******* + * Set gotoMode to active if there was an ogroup selected. + */ + $found = false; + foreach(array("workgeneric"=>"active","servgeneric"=>"active","termgeneric"=>"active") as $tab => $value){ + if(isset($this->systab->by_object[$tab]->gotoMode)) { + $found = true; + $this->systab->by_object[$tab]->gotoMode = $value; + } + } + if(!$found){ + msg_dialog::display(_("Internal error"), _("Cannot set mode to 'active'!"), ERROR_DIALOG); + } + + /******* + * Update object group membership + */ + $og = new ogroup($this->config,$selected_group); + if($og){ + $og->AddDelMembership($this->systab->dn); + $og->save(); + } + + /******* + * Set default system specific attributes + */ + foreach (array("workservice", "termservice") as $cls){ + if (isset($this->systab->by_object[$cls])){ + $this->systab->by_object[$cls]->gotoXMouseport= ""; + $this->systab->by_object[$cls]->gotoXMouseType= ""; + $this->systab->by_object[$cls]->gotoXResolution= ""; + $this->systab->by_object[$cls]->gotoXColordepth= ""; + } + } + + // Enable activation + foreach (array("servgeneric", "workgeneric", "termgeneric") as $cls){ + if (isset($this->systab->by_object[$cls])){ + $this->systab->by_object[$cls]->auto_activate= TRUE; + } + } + + // Enable sending of LDAP events + if (isset($this->systab->by_object["workstartup"])){ + $this->systab->by_object["workstartup"]->gotoLdap_inherit= TRUE; + } + } + + /* Don't save directly if there is no objectGroup selected. + The user will then be able to configure the missing attributes + on his own. + */ + if($selected_group != "none"){ + $this->systab->save(); + + /* Post handling for activated new devices + */ + $this->activate_new_device($this->systab->dn); + $this->systab = NULL; + + if(!isset($ldap)){ + $ldap = $this->config->get_ldap_link(); + } + $ldap->cd ($this->dn); + $ldap->cat($this->dn, array('dn')); + if(count($ldap->fetch())){ + $ldap->cd($this->dn); + $ldap->rmDir($this->dn); + } + } + }else{ + msg_dialog::display(_("Error"), msgPool::permCreate(), ERROR_DIALOG); + } + } + } + } + } + + + if (isset($_POST['create_system'])||$s_action=="newsystem") { + + $this->last_action = ""; + + /* If the current entry is an incoming object + * $sw = System type as posted in new incoming handling dialog + */ + if(isset($_POST['system'])){ + $sw = $_POST['system']; + }else{ + $sw = $s_entry; + } + $this->dn= "new"; + + $tabs = $this->get_tab_defs(); + + if(isset($tabs[$sw])){ + $class = $tabs[$sw]["CLASS"]; + $tabname = $tabs[$sw]["TABNAME"]; + $tabclass = $tabs[$sw]["TABCLASS"]; + $acl_cat = $tabs[$sw]["ACLC"]; + + /* Load permissions for selected 'dn' and check if + we're allowed to remove this 'dn' */ + $ui = get_userinfo(); + $tabacl = $ui->get_permissions($this->DivListSystem->selectedBase,$acl_cat."/".$tabname); + if(preg_match("/c/",$tabacl)){ + + if(!class_available($tabclass)){ + msg_dialog::display(_("Error"), msgPool::class_not_found($tabclass), ERROR_DIALOG); + }else{ + $this->systab= new $tabclass($this->config, $this->config->data['TABS'][$class], $this->dn,$sw); + $this->systab->set_acl_base($this->DivListSystem->selectedBase); + $this->systab->by_object[$tabname]->base = $this->DivListSystem->selectedBase; + $this->systab->base = $this->DivListSystem->selectedBase; + } + }else{ + msg_dialog::display(_("Error"), msgPool::permCreate(), ERROR_DIALOG); + } + } + } + + /******************** + System activation + ********************/ + + /* User wants to edit data? */ + if (($s_action == "activate_multiple") && (!isset($this->systab->config))){ + $this->system_activation_object = array(); + foreach($this->list_get_selected_items() as $id) { + $obj = $this->terminals[$id]; + $type= $this->get_system_type($obj); + if($type == "NewDevice"){ + $this->system_activation_object[] = $obj['dn']; + } + } + if(count($this->system_activation_object)){ + $this->systab = new SelectDeviceType($this->config,$this->system_activation_object) ; + } + } + + + /******************** + Edit system ... + ********************/ + + /* User wants to edit data? */ + if (($s_action == "edit") && (!isset($this->systab->config))){ + $this->last_action = ""; + $this->dn= $this->terminals[$s_entry]['dn']; + + /* Check locking, save current plugin in 'back_plugin', so + the dialog knows where to return. */ + if (($user= get_lock($this->dn)) != ""){ + return(gen_locked_message ($user, $this->dn,TRUE)); + } + + /* Find out more about the object type */ + $attrs = $this->terminals[$s_entry]; + $type= $this->get_system_type($attrs); + + /* Lock the current entry, so everyone will get the + above dialog */ + $tabs = $this->get_tab_defs(); + + if($type == "ArpNewDevice"){ + if(!class_available("ArpNewDeviceTabs")){ + msg_dialog::display(_("Error"), msgPool::class_not_found("ArpNewDevice"), ERROR_DIALOG); + }else{ + add_lock ($this->dn, $this->ui->dn); + $this->systab = new ArpNewDeviceTabs($this->config,$this->config->data['TABS']['ARPNEWDEVICETABS'],$this->dn); + } + }elseif($type == "NewDevice"){ + if(!class_available("SelectDeviceType")){ + msg_dialog::display(_("Error"), msgPool::class_not_found("SelectDeviceType"), ERROR_DIALOG); + }else{ + add_lock ($this->dn, $this->ui->dn); + $this->system_activation_object= array($this->dn); + $this->systab = new SelectDeviceType($this->config,$this->dn) ; + + // see condition -$s_action == "SelectedSystemType"- for further handling + } + }elseif(isset($tabs[$type])){ + + $class = $tabs[$type]["CLASS"]; + $acl_cat = $tabs[$type]["ACLC"]; + $tabclass = $tabs[$type]["TABCLASS"]; + + if(!class_available($tabclass)){ + msg_dialog::display(_("Error"), msgPool::class_not_found($tabclass), ERROR_DIALOG); + }else{ + add_lock ($this->dn, $this->ui->dn); + $this->systab= new $tabclass($this->config, $this->config->data['TABS'][$class], $this->dn,$acl_cat); + $this->systab->set_acl_base($this->dn); + set_object_info($this->dn); + } + }else{ + msg_dialog::display(_("Error"), _("Editing this type of object is not supported yet!"), ERROR_DIALOG); + $this->remove_lock(); + } + } + + + /******************** + Change password ... + ********************/ + + /* Set terminals root password */ + if ($s_action=="change_pw"){ + $tabs = $this->get_tab_defs(); + + $dn = $this->terminals[$s_entry]['dn']; + $type = $this->get_system_type($this->terminals[$s_entry]); + + $class = $tabs[$type]["CLASS"]; + $acl = $tabs[$type]["ACL"]; + $tabclass = $tabs[$type]["TABCLASS"]; + $ui = get_userinfo(); + $tabacl = $ui->get_permissions($dn,$acl,"userPassword"); + if(preg_match("/w/",$tabacl)){ + $this->dn= $this->terminals[$s_entry]['dn']; + set_object_info($this->dn); + return ($smarty->fetch(get_template_path('password.tpl', TRUE))); + }else{ + msg_dialog::display(_("Permission error"), _("You have no permission to change this password!"), ERROR_DIALOG); + } + } + + + /******************** + Password change finish, but check if entered data is ok + ********************/ + + /* Correctly specified? */ + if (isset($_POST['password_finish'])){ + if ($_POST['new_password'] != $_POST['repeated_password']){ + msg_dialog::display(_("Error"), _("The passwords you've entered as 'New password' and 'Repeated password' do not match!"), ERROR_DIALOG); + return($smarty->fetch(get_template_path('password.tpl', TRUE))); + } + } + + /******************** + Password change finish + ********************/ + + /* Change terminal password */ + if (isset($_POST['password_finish']) && + $_POST['new_password'] == $_POST['repeated_password']){ + + /* Check if user is allowed to set password */ + $tabs = $this->get_tab_defs(); + + $type = ""; + foreach($this->terminals as $terminal){ + if($terminal['dn'] == $this->dn){ + $type = $this->get_system_type($terminal); + break; + } + } + + /* Type detected */ + $allow_for = array("terminal","workstation","server","component"); + if(!empty($type) && in_array($type,$allow_for)){ + + /* Get infos */ + $plug = $tabs[$type]["TABNAME"]; + $acl = $tabs[$type]["ACL"]; + $tabclass = $tabs[$type]["TABCLASS"]; + + /* Get acls */ + $ui = get_userinfo(); + $tabacl = $ui->get_permissions($this->dn,$acl,"userPassword"); + + /* Check acls */ + if(preg_match("/w/",$tabacl)){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->cat($this->dn); + $old_attrs = $ldap->fetch(); + + $attrs= array(); + if ($_POST['new_password'] == ""){ + + /* Remove password attribute + */ + if(in_array("simpleSecurityObject",$old_attrs['objectClass'])){ + $attrs['objectClass'] = array(); + for($i = 0 ; $i < $old_attrs['objectClass']['count'] ; $i ++){ + if(!preg_match("/simpleSecurityObject/i",$old_attrs['objectClass'][$i])){ + $attrs['objectClass'][] = $old_attrs['objectClass'][$i]; + } + } + } + $attrs['userPassword']= array(); + } else { + + /* Add/modify password attribute + */ + if(!in_array("simpleSecurityObject",$old_attrs['objectClass'])){ + $attrs['objectClass'] = array(); + for($i = 0 ; $i < $old_attrs['objectClass']['count'] ; $i ++){ + $attrs['objectClass'][] = $old_attrs['objectClass'][$i]; + } + $attrs['objectClass'][] = "simpleSecurityObject"; + } + + if(class_available("passwordMethodCrypt")){ + $pwd_m = new passwordMethodCrypt($this->config); + $pwd_m->set_hash("crypt/md5"); + $attrs['userPassword'] = $pwd_m->generate_hash($_POST['new_password']); + }else{ + msg_dialog::display(_("Password method"),_("Password method crypt is missing. Cannot set system password.")); + $attrs = array(); + } + } + $ldap->modify($attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, $type)); + }else{ + if(class_available($plug)){ + $p = new $plug($this->config,$this->dn); + $p->handle_post_events("modify"); + } + } + + new log("security","systems/".get_class($this),$this->dn,array_keys($attrs),$ldap->get_error()); + }else{ + msg_dialog::display(_("Permission error"), _("You have no permission to change this password!"), ERROR_DIALOG); + } + }else{ + msg_dialog::display(_("Error"), _("Cannot determine object to change password!"), ERROR_DIALOG); + } + set_object_info(); + } + + + /******************** + Delete system cancel + ********************/ + + /* Delete terminal canceled? */ + if (isset($_POST['delete_cancel']) || isset($_POST['password_cancel'])){ + $this->remove_lock(); + set_object_info(); + } + + + /******************** + Action(s) for MULTIPLE + ********************/ + + /******************** + SCHEDULE action in GOsa Daemon + ********************/ + + if(preg_match("/^schedule_event_/",$s_action) || preg_match("/^trigger_event_/",$s_action)){ + $this->dns = array(); + $ids = $this->list_get_selected_items(); + + /* Handle opsi actions */ + if($s_action == "trigger_event_DaemonEvent_reinstall"){ + foreach($ids as $key => $id){ + if($this->terminals[$id]['type'] == "O"){ + $obj = $this->terminals[$id]; + $this->opsi->job_opsi_install_client($obj['cn'][0],$obj['macAddress'][0]); + unset($ids[$key]); + } + } + } + + if(count($ids) && class_available("DaemonEvent")){ + $mac= array(); + + /* Collect target mac addresses */ + $ldap = $this->config->get_ldap_link(); + foreach($ids as $id){ + $type = $this->get_system_type($this->terminals[$id]); + if(!in_array($type,array("terminal","server","workstation","opsi_client","winstation "))) continue; + if(isset($this->terminals[$id]['macAddress'][0])){ + $mac[] = $this->terminals[$id]['macAddress'][0]; + }else{ + $ldap->cat ($this->terminals[$id]['dn'], array("macAddress")); + $attrs= $ldap->fetch(); + if (isset($attrs['macAddress'][0])){ + $mac[]= $attrs['macAddress'][0]; + } + } + } + $events = DaemonEvent::get_event_types(SYSTEM_EVENT); + $type = preg_replace("/^[a-z]*_event_/","",$s_action); + $o_queue = new gosaSupportDaemon(); + + /* Skip installation or update trigerred events, + * if this entry is currently processing. + */ + if(preg_match("/trigger_event/",$s_action) && in_array($type,array("DaemonEvent_reinstall","DaemonEvent_update"))){ + foreach($mac as $key => $mac_address){ + foreach($o_queue->get_entries_by_mac(array($mac_address)) as $entry){ + + $entry['STATUS'] = strtoupper($entry['STATUS']); + if($entry['STATUS'] == "PROCESSING" && + isset($events['QUEUED'][$entry['HEADERTAG']]) && + in_array($events['QUEUED'][$entry['HEADERTAG']],array("DaemonEvent_reinstall","DaemonEvent_update"))){ + unset($mac[$key]); + + new log("security","systems/".get_class($this),"",array(),"Skip adding 'DaemonEvent::".$type."' for mac '".$mac_address."', there is already a job in progress."); + break; + } + } + } + } + + /* Prepare event to be added + */ + if(count($mac) && isset($events['BY_CLASS'][$type])){ + $event = $events['BY_CLASS'][$type]; + $this->systab = new $event['CLASS_NAME']($this->config); + $this->systab->add_targets($mac); + if(preg_match("/trigger_event/",$s_action)){ + $this->systab->set_type(TRIGGERED_EVENT); + }else{ + $this->systab->set_type(SCHEDULED_EVENT); + } + } + } + } + + /* Insert scheduled events into queue */ + if(class_available("DaemonEvent") && $this->systab instanceof DaemonEvent){ + $this->systab->save_object(); + + /* Save event + */ + if(isset($_POST['save_event_dialog']) || $this->systab->get_type() == TRIGGERED_EVENT){ + $o_queue = new gosaSupportDaemon(); + $o_queue->append($this->systab); + if($o_queue->is_error()){ + msg_dialog::display(_("Service infrastructure"),msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + }else{ + $this->systab = FALSE; + } + } + if(isset($_POST['abort_event_dialog'])){ + $this->systab = FALSE; + } + } + + + /******************** + Delete MULTIPLE entries requested, display confirm dialog + ********************/ + + if ($s_action=="del_multiple" || $s_action == "del"){ + $this->dns = array(); + + if($s_action == "del_multiple"){ + $ids = $this->list_get_selected_items(); + }else{ + $ids = array($s_entry); + } + + $ui = get_userinfo(); + $tabs = $this->get_tab_defs(); + + if(count($ids)){ + + $disallowed = array(); + foreach($ids as $id){ + + /* Get 'dn' from posted termlinst */ + $attrs = $this->terminals[$id]; + $type = $this->get_system_type($attrs); + $dn = $attrs['dn']; + $acl = $this->ui->get_permissions($dn, $tabs[$type]['ACL']); + if(preg_match("/d/",$acl)){ + $this->dns[$id] = $dn; + }else{ + $disallowed[] = $dn; + } + } + + if(count($disallowed)){ + msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); + } + + if(count($this->dns)){ + + if ($user= get_multiple_locks($this->dns)){ + return(gen_locked_message($user,$this->dns)); + } + + $dns_names = array(); + foreach($this->dns as $dn){ + add_lock ($dn, $this->ui->dn); + $dns_names[] = LDAP::fix($dn); + } + + /* Lock the current entry, so nobody will edit it during deletion */ + $smarty->assign("warning", msgPool::deleteInfo($dns_names)); + $smarty->assign("multiple", true); + return($smarty->fetch(get_template_path('remove.tpl', TRUE))); + } + } + } + + + /******************** + Delete MULTIPLE entries confirmed + ********************/ + + /* Confirmation for deletion has been passed. Users should be deleted. */ + if (isset($_POST['delete_multiple_system_confirm'])){ + + $ui = get_userinfo(); + $tabs = $this->get_tab_defs(); + + /* Remove user by user and check acls before removeing them */ + foreach($this->dns as $key => $dn){ + + /* Get 'dn' from posted termlinst */ + $attrs = $this->terminals[$key]; + $type= $this->get_system_type($attrs); + + /* get object type */ + $tabtype = "termtabs"; + $tabobj = "TERMTABS"; + $tabacl = ""; + if(isset($tabs[$type])){ + $tabtype = $tabs[$type]['TABCLASS']; + $tabobj = $tabs[$type]['CLASS']; + $tabacl = $ui->get_permissions($dn,$tabs[$type]['ACL']); + + /* Load permissions for selected 'dn' and check if + we're allowed to remove this 'dn' */ + if(preg_match("/d/",$tabacl)){ + + /* Delete request is permitted, perform LDAP action */ + if(in_array($type,array("ArpNewDevice","NewDevice")) && class_available("termgeneric")){ + $this->systab= new termgeneric($this->config, $dn); + $this->systab->set_acl_base($dn); + $this->systab->remove_from_parent(); + }elseif($tabtype=="phonetabs"){ + $this->systab= new $tabtype($this->config, $this->config->data['TABS'][$tabobj], $dn,$type); + $this->systab->set_acl_base($dn); + $this->systab->by_object['phoneGeneric']->remove_from_parent (); + }else{ + $this->systab= new $tabtype($this->config,$this->config->data['TABS'][$tabobj], $dn,$type); + $this->systab->set_acl_base($dn); + $this->systab->delete(); + } + unset ($this->systab); + $this->systab= NULL; + + } else { + /* Normally this shouldn't be reached, send some extra + logs to notify the administrator */ + msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG); + new log("security","systems/".get_class($this),$dn,array(),"Tried to trick deletion."); + } + } + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + } + + /******************** + Delete MULTIPLE entries Canceled + ********************/ + + /* Remove lock */ + if(isset($_POST['delete_multiple_system_cancel'])){ + + /* Remove lock file after successfull deletion */ + $this->remove_lock(); + $this->dns = array(); + } + + + /******************** + Edit system type finished, check if everything went ok + ********************/ + /* Finish user edit is triggered by the tabulator dialog, so + the user wants to save edited data. Check and save at this + point. */ + + /* Dirty workaround - MSG_DIALOG - OK + If a message dialog is shown and we press 'OK' + then try to save again. + */ + foreach($_POST as $name => $value){ + if(preg_match("/^MSG_OK/",$name)){ + $_POST[$this->last_action] = TRUE; + } + } + + if ((isset($_POST['edit_finish']) || isset($_POST['edit_apply'])) && (isset($this->systab->config))){ + + /* If the save routine gets interrupted by a confirm dialog, + store last action so we can trigger it again after 'Ok' was pressed. + (This is the case if a system gets modified while it is installing - GOsa si) + */ + $this->last_action = ""; + if(isset($_POST['edit_finish'])){ + $this->last_action = "edit_finish"; + }elseif(isset($_POST['edit_apply'])){ + $this->last_action = "edit_apply"; + } + + /* Check tabs, will feed message array */ + $message = $this->systab->check(); + + /* Save, or display error message? */ + if (count($message) == 0){ + $this->systab->save(); + + /* Post handling for activated systems + target opsi -> Remove source. + target gosa -> Activate system. + */ + if($this->systab instanceOf opsi_tabs && $this->systab->was_activated){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->rmdir ($this->systab->dn); + @DEBUG(DEBUG_LDAP,__LINE__, __FUNCTION__, __FILE__,"Source removed: ".$this->systab->dn,"Opsi host activated."); + + $hostId = $this->systab->by_object['opsiGeneric']->hostId; + $mac = $this->systab->by_object['opsiGeneric']->mac; + $this->opsi->job_opsi_activate_client($hostId,$mac); + + }elseif(isset($this->systab->was_activated) && $this->systab->was_activated){ + $this->activate_new_device($this->systab->dn); + } + + /* Terminal has been saved successfully, remove lock from LDAP. */ + if (!isset($_POST['edit_apply'])){ + if ($this->dn != "new"){ + $this->remove_lock(); + } + + unset ($this->systab); + $this->systab= NULL; + set_object_info(); + }else{ + + /* Reinitialize tab */ + if($this->systab instanceof tabs){ + $this->systab->re_init(); + } + } + } else { + /* Ok. There seem to be errors regarding to the tab data, + show message and continue as usual. */ + msg_dialog::displayChecks($message); + } + } + + + /******************** + Edit system was canceled + ********************/ + /* Cancel dialogs */ + if (isset($_POST['edit_cancel']) || isset($_POST['password_cancel']) || isset($_POST['SystemTypeAborted'])){ + if (isset($this->systab)){ + $this->remove_lock(); + unset ($this->systab); + } + $this->systab= NULL; + set_object_info(); + } + + /******************** + Display edit dialog, or some other + ********************/ + + /* Show tab dialog if object is present */ + if (isset($this->systab->config)){ + + if($this->systab instanceOf plugin && !($this->systab instanceOf tabs)){ + $this->systab->save_object(); + } + + $display= $this->systab->execute(); + + /* Don't show buttons if tab dialog requests this */ + + $dialog = FALSE; + $hide_apply = $this->dn == "new"; + $hide_apply = ($this->dn == "new") || (preg_match("/".preg_quote(get_ou("systemIncomingRDN"), '/')."/",$this->dn)); + if(is_object($this->systab) && !isset($this->systab->by_object)){ + $dialog = TRUE; + $hide_apply = TRUE; + }elseif(isset($this->systab->by_object[$this->systab->current]->dialog)){ + $dia = $this->systab->by_object[$this->systab->current]->dialog; + if($dia === TRUE || is_object($dia)){ + $dialog = TRUE; + } + } + if(isset($this->systab->current) && isset($this->systab->by_object[$this->systab->current]->netConfigDNS) && + $this->systab->by_object[$this->systab->current]->netConfigDNS->dialog){ + $dialog = TRUE; + } + + if(($this->systab instanceOf tabs || $this->systab instanceOf plugin) && $this->systab->read_only == TRUE){ + $display.= "

    + +

    "; + }elseif (!$dialog){ + $display.= "

    \n"; + $display.= "\n"; + $display.= " \n"; + if (!$hide_apply){ + $display.= "\n"; + $display.= " \n"; + } + $display.= "\n"; + $display.= "

    "; + } + return ($display); + } + + /* Check if there is a snapshot dialog open */ + $base = $this->DivListSystem->selectedBase; + if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases(),$this)){ + return($str); + } + + /* Display dialog with system list */ + $this->DivListSystem->parent = $this; + $this->DivListSystem->execute(); + + /* Add departments if subsearch is disabled */ + if(!$this->DivListSystem->SubSearch){ + + /* Add FAIstate to attributes if FAI is activated */ + if($this->fai_activated){ + $this->DivListSystem->AddDepartments($this->DivListSystem->selectedBase,4,1); + }else{ + $this->DivListSystem->AddDepartments($this->DivListSystem->selectedBase,3,1); + } + } + $this->reload(); + $this->DivListSystem->setEntries($this->terminals); + return($this->DivListSystem->Draw()); + } + + + /* Return departments, that will be included within snapshot detection */ + function get_used_snapshot_bases() + { + $tmp = array(); + + /* Check acls, if we are not allowed to create and write each plugin tab, skip this object */ + + $tabs = array( + "terminal" => get_ou('terminalRDN'), + "workstation" => get_ou('workstationRDN'), + "incoming" => get_ou('systemIncomingRDN'), + "server" => get_ou('serverRDN'), + "printer" => get_ou('printerRDN'), + "phone" => get_ou('phoneRDN'), + "winworkstation" => get_winstations_ou(), + "component" => get_ou('componentRDN') + ); + + foreach($tabs as $acl_cat => $dn){ + + $acl_all = $this->ui->has_complete_category_acls($dn.$this->DivListSystem->selectedBase,$acl_cat); + if(preg_match("/(c.*w|w.*c)/",$acl_all)){ + $tmp[] = $dn.$this->DivListSystem->selectedBase; + } + } + return($tmp); + } + + + function remove_from_parent() + { + /* Optionally execute a command after we're done */ + $this->postremove(); + } + + + /* Save data to object */ + function save_object() + { + $this->DivListSystem->save_object(); + if(is_object($this->CopyPasteHandler)){ + $this->CopyPasteHandler->save_object(); + } + } + + + /* Check values */ + function check() + { + } + + + /* Save to LDAP */ + function save() + { + } + + function adapt_from_template($dn, $skip= array()) + { + } + + function password_change_needed() + { + } + + function reload() + { + /* some var init */ + $ui = get_userinfo(); + $res = array(); + $this->terminals = array(); + $userregex = ""; + $opsi_clients = array(); + + /* Set base for all searches */ + $base= $this->DivListSystem->selectedBase; + + /* Prepare samba class name */ + $samba =""; + if ($this->DivListSystem->ShowWinWorkstations){ + if ($this->config->get_cfg_value("sambaversion") == "3"){ + $samba= "sambaSamAccount"; + } else { + $samba= "sambaAccount"; + } + } + + /* This array represents the combination between checkboxes and search filters */ + $objs = array( + "ShowServers" => array("TAB" => "servtabs", "CLASS" => "goServer" ,"TREE" => get_ou('serverRDN')), + "ShowTerminals" => array("TAB" => "termtabs", "CLASS" => "gotoTerminal" ,"TREE" => get_ou('terminalRDN')), + "ShowPrinters" => array("TAB" => "printtabs", "CLASS" => "gotoPrinter" ,"TREE" => get_ou('printerRDN')), + "ShowDevices" => array("TAB" => "componenttabs", "CLASS" => "ieee802Device" ,"TREE" => get_ou('componentRDN')), + "ShowPhones" => array("TAB" => "phonetabs", "CLASS" => "goFonHardware" ,"TREE" => get_ou('phoneRDN')), + "ShowWorkstations" => array("TAB" => "worktabs", "CLASS" => "gotoWorkstation" ,"TREE" => get_ou('workstationRDN')), + "ShowWinWorkstations"=> array("TAB" => "wintabs", "CLASS" => $samba ,"TREE" => get_winstations_ou() )); + + /* Include the 'Display Systems of user' attribute */ + if ((!empty($this->DivListSystem->UserRegex)) && ($this->DivListSystem->UserRegex!= "*")){ + $userregex = "(gotoLastUser=".$this->DivListSystem->UserRegex.")"; + } + + /* Attributes to fetch */ + $sys_attrs = array("cn", "description", "macAddress", "objectClass", "sambaDomainName","gotoMode","FAIclass"); + $sys_categories = array("terminal", "workstation", "server", "phone" ,"printer","incoming","winworkstation","component"); + + /* Add FAIstate to attributes if FAI is activated */ + $tmp = $this->config->search("faiManagement", "CLASS",array('menu','tabs')); + if(!empty($tmp)){ + $sys_attrs[] = "FAIstate"; + } + + /* Walk through all possible search combinations, and search for some objects if the checkbox is enabled */ + foreach($objs as $checkBox => $oc){ + + if($this->DivListSystem->$checkBox && class_available($oc['TAB'])){ + if($this->DivListSystem->SubSearch){ + if($oc['CLASS'] != ""){ + $filter = "(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex."))"; + $new_res = get_sub_list($filter, $sys_categories ,$oc['TREE'], $base,$sys_attrs, GL_SUBSEARCH | GL_SIZELIMIT); + $res = array_merge($res,$new_res); + } + }else{ + /* User filter? */ + if($oc['CLASS'] != ""){ + $filter = "(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex."))"; + $res = array_merge($res,get_list($filter,$sys_categories,$oc['TREE'].$base, $sys_attrs, GL_SIZELIMIT)); + } + } + } + } + + /* Search for incoming objects */ + $filter = "(|(&".$userregex."(objectClass=goHard)(cn=".$this->DivListSystem->Regex.")))"; + $res = array_merge($res,get_list($filter,$sys_categories, get_ou('systemIncomingRDN').$base,$sys_attrs, GL_SIZELIMIT)); + + /* Append opsi systems, the opsi extension have to installed. + (Only, if we are allowed to view opsi hosts) + */ + if($this->opsi instanceof opsi && $this->opsi->enabled() && $this->DivListSystem->ShowOpsiHosts){ + $o_acl = $this->ui->get_permissions($base,"opsi/opsiGeneric",""); + if(preg_match("/r/",$o_acl)){ + $opsi_clients = $this->opsi->get_hosts_for_system_management(); + if($this->opsi->is_error()){ + msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG); + } + } + } + + /* Get all gotoTerminal's */ + $t_id = 0; + $opsi_map = array(); + foreach ($res as $value){ + + $tmp= $value['dn']; + $add= ""; + + /* Extract base */ + foreach($objs as $obj){ + if(preg_match("/,".$obj['TREE']."/i",$value['dn'])){ + $tmp = trim( preg_replace("/^[^,]+,[^o]*".$obj['TREE']."/i","",$value['dn'])); + } + } + + /* Create a string containing the last part of the department. */ + $dn_name = preg_replace("#^([^/]+/)*#","",convert_department_dn(LDAP::fix($tmp))); + if(empty($dn_name)){ + $dn_name = "/"; + } + + /* check if current object is a new one */ + if (preg_match ("/,".get_ou('systemIncomingRDN')."/i", $tmp)){ + if (in_array_ics('gotoTerminal', $value['objectClass'])){ + $add= "- "._("New terminal"); + }elseif (in_array_ics('gotoWorkstation', $value['objectClass'])){ + $add= "- "._("New workstation"); + }elseif (in_array_ics('GOhard', $value['objectClass']) && !isset($value['gotoMode'])){ + $add= "- "._("Unknown device"); + }elseif (in_array_ics('GOhard', $value['objectClass'])){ + $add= "- "._("New Device"); + } + } + + /* Detect type of object and create an entry for $this->terminals */ + $terminal = array(); + + if (0 && in_array_ics('gosa_opsi_client', $value["objectClass"])){ + + /* check acl */ + $terminal = $value; + $terminal['type'] = "O"; + + } elseif (in_array_ics('gotoTerminal', $value["objectClass"])){ + + /* check acl */ + $acl = $ui->get_permissions($value['dn'],"terminal/termgeneric"); + if($add != "" || preg_match("/r/",$acl)) { + if (isset($value["macAddress"][0]) && $value["macAddress"][0] != "-"){ + $terminal = $value; + $terminal['type'] = "T"; + $terminal['is_new'] = $add; + } else { + $terminal = $value; + $terminal['type'] = "D"; + $terminal['message'] = _("Terminal template for")." '".$dn_name."' "; + $terminal['location'] = array_search($tmp, $this->config->departments); + } + } + } elseif (in_array_ics('gotoWorkstation', $value["objectClass"])){ + + $acl = $ui->get_permissions($value['dn'],"workstation/workgeneric"); + if($add != "" || preg_match("/r/",$acl)) { + if (isset($value["macAddress"][0]) && $value["macAddress"][0] != "-"){ + $terminal = $value; + $terminal['type'] = "L"; + $terminal['is_new'] = $add; + } else { + $terminal = $value; + $terminal['type'] = "D"; + $terminal['location'] = array_search($tmp, $this->config->departments); + $terminal['message'] = _("Workstation template for")." '".$dn_name."' "; + } +# if (isset($value["FAIstate"][0])){ +# $terminal['type']= $this->getState($terminal['type'], $value["FAIstate"][0]); +# } + } + } elseif (in_array_ics('gotoPrinter', $value["objectClass"])){ + + + $acl = $ui->get_permissions($value['dn'],"printer/printgeneric"); + if($add != "" || preg_match("/r/",$acl)) { + + $terminal = $value; + $terminal['type'] = "P"; + } + } elseif (in_array_ics('goServer', $value["objectClass"])){ + + $acl = $ui->get_permissions($value['dn'],"server/servgeneric"); + if($add != "" || preg_match("/r/",$acl)) { + + $terminal = $value; + $terminal['type'] = "S"; +# if (isset($value["FAIstate"][0])){ +# $terminal['type']= $this->getState($terminal['type'], $value["FAIstate"][0]); +# } + } + } elseif (in_array_ics('goFonHardware', $value["objectClass"])){ + + $acl = $ui->get_permissions($value['dn'],"phone/phoneGeneric"); + if($add != "" || preg_match("/r/",$acl)) { + + $terminal = $value; + $terminal['type'] = "F"; + } + }elseif (in_array_ics("GOhard",$value['objectClass'])){ + + $acl = $ui->get_permissions($value['dn'],"server/servgeneric"). + $ui->get_permissions($value['dn'],"terminal/termgeneric"). + $ui->get_permissions($value['dn'],"workstation/workgeneric"); + if($add != "" || preg_match("/r/",$acl)) { + + $terminal = $value; + $terminal['type'] = "Q"; + $terminal['is_new'] = $add; + } + } elseif (in_array_ics('ieee802Device', $value["objectClass"]) && + !( in_array_ics('sambaAccount', $value["objectClass"]) || in_array_ics('sambaSamAccount', $value["objectClass"]))){ + $type= "winstation"; + $acl = $ui->get_permissions($value['dn'],"component/componentGeneric"); + if($add != "" || preg_match("/r/",$acl)) { + + $terminal = $value; + $terminal['type'] = "C"; + } + } else{ + + $name= preg_replace('/\$$/', '', $value['cn'][0]); + if (isset($value['sambaDomainName'])){ + $domain= " [".$value['sambaDomainName'][0]."]"; + } else { + $domain= ""; + } + $acl = $ui->get_permissions($value['dn'],"winworkstation/wingeneric"); + if($add != "" || preg_match("/r/",$acl)) { + $terminal=$value; + $terminal['type'] ="W"; + $terminal['domain'] = $name.$domain; + } + } + + /* Append collected data to the host list. + */ + if(count($terminal)){ + $t_id ++ ; + $this->terminals[$t_id]=$terminal; + $opsi_map[preg_replace('/\$$/',"",$value['cn'][0])] = $t_id; + } + } + + + /* Merge real hosts with opsi hosts. + If there is a samba host, then merge it with the opsi host, + to avoid duplicate entries. + */ + foreach($opsi_clients as $entry){ + if(isset($opsi_map[$entry['cn'][0]])){ + continue; + } + $terminal = $entry; + $terminal['type'] = "O"; + $this->terminals[] = $terminal; + } + + $tmp =array(); + $tmp2 =array(); + foreach($this->terminals as $tkey => $val ){ + $tmp[strtolower($val['cn'][0]).$val['dn']]=$val; + $tmp2[strtolower($val['cn'][0]).$val['dn']] = strtolower($val['cn'][0]).$val['dn']; + } + natcasesort($tmp2); + $this->terminals=array(); + foreach($tmp2 as $val){ + $this->terminals[]=$tmp[$val]; + } + reset ($this->terminals); + } + + function remove_lock() + { + if (isset($this->systab->dn)){ + del_lock ($this->systab->dn); + }elseif(isset($this->dn) && !empty($this->dn) && $this->dn != "new"){ + del_lock($this->dn); + } + if(isset($this->dns) && is_array($this->dns) && count($this->dns)){ + del_lock($this->dns); + } + } + + + function copyPasteHandling_from_queue($s_action,$s_entry) + { + /* Check if Copy & Paste is disabled */ + if(!is_object($this->CopyPasteHandler)){ + return(""); + } + + $ui = get_userinfo(); + + $tabs = $this->get_tab_defs(); + + /* Add a single entry to queue */ + if($s_action == "cut" || $s_action == "copy"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + $dn = $this->terminals[$s_entry]['dn']; + $oc = $this->terminals[$s_entry]['objectClass']; + $type = $this->get_system_type($this->terminals[$s_entry]); + + $tab_o = $tabs[$type]['CLASS']; + $tab_c = $tabs[$type]['TABCLASS']; + $acl_c = $tabs[$type]['TABNAME']; + $acl = $tabs[$type]['ACLC']; + + if($s_action == "copy" && $ui->is_copyable($dn,$acl,$acl_c)){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,$tab_c,$tab_o,$acl); + } + if($s_action == "cut" && $ui->is_cutable($dn,$acl,$acl_c)){ + $this->CopyPasteHandler->add_to_queue($dn,$s_action,$tab_c,$tab_o,$acl); + } + } + + /* Add entries to queue */ + if($s_action == "copy_multiple" || $s_action == "cut_multiple"){ + + /* Cleanup object queue */ + $this->CopyPasteHandler->cleanup_queue(); + + /* Add new entries to CP queue */ + foreach($this->list_get_selected_items() as $id){ + $dn = $this->terminals[$id]['dn']; + $oc = $this->terminals[$id]['objectClass']; + $type = $this->get_system_type($this->terminals[$id]); + + if(isset($tabs[$type])){ + $tab_o = $tabs[$type]['CLASS']; + $tab_c = $tabs[$type]['TABCLASS']; + $acl_c = $tabs[$type]['TABNAME']; + $acl = $tabs[$type]['ACLC']; + + if($s_action == "copy_multiple" && $ui->is_copyable($dn,$acl,$acl_c)){ + $this->CopyPasteHandler->add_to_queue($dn,"copy",$tab_c,$tab_o,$acl); + } + if($s_action == "cut_multiple" && $ui->is_cutable($dn,$acl,$acl_c)){ + $this->CopyPasteHandler->add_to_queue($dn,"cut",$tab_c,$tab_o,$acl); + } + } + } + } + + /* Start pasting entries */ + if($s_action == "editPaste"){ + $this->start_pasting_copied_objects = TRUE; + } + + /* Return C&P dialog */ + if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){ + + /* Get dialog */ + $this->CopyPasteHandler->SetVar("base",$this->DivListSystem->selectedBase); + $data = $this->CopyPasteHandler->execute(); + + /* Return dialog data */ + if(!empty($data)){ + return($data); + } + } + + /* Automatically disable status for pasting */ + if(!$this->CopyPasteHandler->entries_queued()){ + $this->start_pasting_copied_objects = FALSE; + } + return(""); + } + + + function get_system_type($attrs) + { + $classes = $attrs['objectClass']; + + $type= ""; + if (in_array_ics('gosa_opsi_client', $classes)){ + $type= "opsi_client"; + }elseif (in_array_ics('sambaAccount', $classes) || + in_array_ics('sambaSamAccount', $classes)){ + $type= "winstation"; + }elseif (in_array_ics('ieee802Device', $classes)){ + $type= "component"; + }elseif (in_array_ics('gotoTerminal', $classes)){ + $type= "terminal"; + }elseif (in_array_ics('gotoWorkstation', $classes)){ + $type= "workstation"; + }elseif (in_array_ics('gotoPrinter', $classes)){ + $type= "printer"; + }elseif (in_array_ics('goFonHardware', $classes)){ + $type= "phone"; + }elseif (in_array_ics('goServer', $classes)){ + $type= "server"; + }elseif (in_array_ics('GOhard', $classes) && !isset($attrs['gotoMode']) && $this->arp_handling_active){ + $type= "ArpNewDevice"; + }elseif (in_array_ics('GOhard', $classes)){ + $type= "NewDevice"; + } + return ($type); + } + + + function convert_list($input) + { + $temp= ""; + + $conv= array( + "D" => array("plugins/systems/images/select_default.png",_("Template")), + "F" => array("plugins/systems/images/select_phone.png",_("Phone")), + "C" => array("plugins/systems/images/select_component.png",_("Network device")), + "P" => array("plugins/systems/images/select_printer.png",_("Printer")), + + "W" => array("plugins/systems/images/select_winstation.png",_("Windows workstation")), + + "L" => array("plugins/systems/images/select_workstation.png",_("Workstation")), + "S" => array("plugins/systems/images/select_server.png",_("Server")), + "T" => array("plugins/systems/images/select_terminal.png",_("Terminal")), + + "LX" => array("plugins/systems/images/workstation_locked.png",_("Locked workstation")), + "SX" => array("plugins/systems/images/server_locked.png",_("Locked server")), + "TX" => array("plugins/systems/images/terminal_locked.png",_("Locked terminal")), + + "LE" => array("plugins/systems/images/workstation_error.png",_("Workstation error")), + "SE" => array("plugins/systems/images/server_error.png",_("Server error")), + "TE" => array("plugins/systems/images/terminal_error.png",_("Terminal error")), + + "LB" => array("plugins/systems/images/workstation_busy.png",_("Workstation busy")), + "SB" => array("plugins/systems/images/server_busy.png",_("Server busy")), + + "NQ" => array("plugins/systems/images/select_newsystem.png",_("New system from incoming")), + "NT" => array("plugins/systems/images/select_new_terminal.png",_("New terminal")), + "NL" => array("plugins/systems/images/select_new_workstation.png",_("New workstation"))); + + /* Add opsi client to system types */ + if($this->opsi != NULL){ + $conv["O"] = array("plugins/systems/images/select_winstation.png",_("Opsi client")); + } + + /* Use locked icons + */ + if( in_array($input['type'],array("S","T","L")) && + isset($input['gotoMode'][0]) && + preg_match("/locked/",$input['gotoMode'][0])){ + $input['type'].="X"; + } elseif(in_array($input['type'],array("S","L")) && + isset($input['FAIstate'][0])){ + + /* Add FAI state icons + */ + $type= ""; + switch (preg_replace('/:.*$/', '', $input['FAIstate'][0])) { + case 'error': + $type= 'E'; + break; + case 'installing': + case 'install': + case 'sysinfo': + case 'softupdate': + case 'scheduledupdate': + $type= 'B'; + break; + } + + $input['type'].= $type; + } + + /* Use new images if object is from incoming + */ + if((isset($input['is_new']))&&(!empty($input['is_new']))){ + $input['type']="N".$input['type']; + } + + /* Check which flags this objects uses + */ + foreach ($conv as $key => $value){ + $found = TRUE; + if(strlen($key) != strlen($input['type'])) { + $found = FALSE; + } + for($i = 0 ; $i < strlen($key) ; $i++){ + if(!preg_match("/".$key[$i]."/",$input['type'])){ + $found = FALSE; + } + } + + if($found){ + $tmp['img'] ="".$key.""; + $tmp['class']=$key; + return $tmp; + } + } + } + + + function list_get_selected_items() + { + $ids = array(); + foreach($_POST as $name => $value){ + if(preg_match("/^item_selected_[0-9]*$/",$name)){ + $id = preg_replace("/^item_selected_/","",$name); + $ids[$id] = $id; + } + } + return($ids); + } + + + public function get_tab_defs() + { + $tabs = array( + "incoming" => array( + "CLASS" => "", + "TABNAME" => "", + "TABCLASS" => "", + "ACLC" => "incoming", + "ACL" => "incoming/systems"), + + "ArpNewDevice"=> array( + "CLASS" => "TERMTABS", + "TABNAME" => "termgeneric" , + "TABCLASS" => "termtabs", + "ACLC" => "incoming", + "ACL" => "incoming/systems"), + + "NewDevice" => array( + "CLASS" => "TERMTABS", + "TABNAME" => "termgeneric", + "TABCLASS" => "termtabs", + "ACLC" => "incoming", + "ACL" => "incoming/systems"), + + "terminal" => array( + "CLASS" => "TERMTABS", + "TABNAME" => "termgeneric", + "TABCLASS" => "termtabs", + "ACLC" => "terminal", + "ACL" => "terminal/termgeneric"), + + "workstation" => array( + "CLASS" => "WORKTABS", + "TABNAME" => "workgeneric", + "TABCLASS"=> "worktabs", + "ACLC" => "workstation", + "ACL" => "workstation/workgeneric" ), + + "server" => array( + "CLASS" => "SERVTABS", + "TABNAME" => "servgeneric", + "TABCLASS"=> "servtabs", + "ACLC" => "server", + "ACL" => "server/servgeneric"), + + "printer" => array( + "CLASS" => "PRINTTABS", + "TABNAME" => "printgeneric", + "TABCLASS"=> "printtabs", + "ACLC" => "printer", + "ACL" => "printer/printgeneric"), + + "phone" => array( + "CLASS" => "PHONETABS", + "TABNAME" => "phoneGeneric", + "TABCLASS"=> "phonetabs", + "ACLC" => "phone", + "ACL" => "phone/phoneGeneric"), + + "winstation" => array( + "CLASS" => "WINTABS", + "TABNAME" => "wingeneric", + "TABCLASS"=> "wintabs", + "ACLC" => "winworkstation", + "ACL" => "winworkstation/wingeneric"), + + "component" => array( + "CLASS" => "COMPONENTTABS", + "TABNAME" => "componentGeneric", + "TABCLASS"=> "componenttabs", + "ACLC" => "component", + "ACL" => "component/componentGeneric")); + + if($this->opsi != NULL){ + $tabs["opsi_client"] = array( + "CLASS" => "OPSITABS", + "TABNAME" => "opsiGeneric" , + "TABCLASS"=> "opsi_tabs", + "ACLC" => "opsi" , + "ACL" => "opsi/opsiGeneric"); + } + + return($tabs); + } + + + /*! \brief Sets FAIstate to "install" for "New Devices". + This function is some kind of "Post handler" for activated systems, + it is called directly after the object (workstabs,servtabs) gets saved. + @param String $dn The dn of the newly activated object. + @return Boolean TRUE if activated else FALSE + */ + function activate_new_device($dn) + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($dn); + if($ldap->count()){ + $attrs = $ldap->fetch(); + $type = $this->get_system_type($attrs); + if(!in_array($type,array("workstation","server"))) { + $ocs = $attrs['objectClass']; + unset($ocs['count']); + $new_attrs = array(); + if(!in_array("FAIobject",$ocs)){ + $ocs[] = "FAIobject"; + $new_attrs['objectClass'] = $ocs; + } + $new_attrs['FAIstate'] = "install"; + $ldap->cd($dn); + $ldap->modify($new_attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, + LDAP_MOD, "activate_new_device($dn)")); + }else{ + return(TRUE); + } + } + } + return(FALSE); + } + + + /* !! Incoming dummy acls, required to defined acls for incoming objects + */ + static function plInfo() + { + return (array( + "plShortName" => _("Incoming objects"), + "plDescription" => _("Incoming objects"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 99, + "plSection" => array("administration"), + "plCategory" => array("incoming" => array( "description" => _("Incoming"), + "objectClass" => "")), + "plProvidedAcls"=> array() + + )); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/class_termDNS.inc b/trunk/gosa-plugins/systems/admin/systems/class_termDNS.inc new file mode 100644 index 000000000..bcd889529 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/class_termDNS.inc @@ -0,0 +1,1140 @@ +parent = $parent; + $this->objectclasses = $objectClasses; + $this->IPisMust = $IPisMust; + + plugin::plugin ($config, $parent->dn); + + if(isset($this->attrs['cn'][0])){ + $this->OrigCn = preg_replace("/\\\$\$/","",$this->attrs['cn'][0]); + $this->cn = preg_replace("/\\\$\$/","",$this->attrs['cn'][0]); + } + + /* Create list of additional ipHostNumber. + */ + $this->additionalHostNumbers = array(); + if(isset($this->attrs['ipHostNumber']) && $this->attrs['ipHostNumber']['count'] > 1){ + for($i = 1 ; $i < $this->attrs['ipHostNumber']['count']; $i ++){ + $this->additionalHostNumbers[] = $this->attrs['ipHostNumber'][$i]; + } + } + + /************ + * DHCP + ************/ + + /* Hide all dhcp specific code, if dhcp plugin is not present in config */ + $dhcpEnabled = FALSE; + if($this->config->search("servdhcp","class",array("tabs"))){ + $this->dhcpEnabled = TRUE; + } + + if(!class_available("dhcpHost")){ + $this->dhcpEnabled = FALSE; + } + + if($this->dhcpEnabled){ + $this->dhcpParentNodes = $this->get_dhcp_parent_nodes(); + $this->dhcpParentNode = $this->get_dhcp_parent_node(); + if($this->dhcpParentNode){ + $this->dhcp_is_Account = TRUE; + $this->initial_dhcp_is_Account = TRUE; + $this->dhcpHostEntry = $this->get_dhcp_host_entry(); + } + $this->initial_dhcpHostEntry = $this->dhcpHostEntry; + $this->initial_dhcpParentNode= $this->dhcpParentNode; + } + + + /************ + * DNS + ************/ + + /* Hide all dns specific code, if dns is not available + */ + $DNSenabled = false; + foreach($this->config->data['TABS']['SERVERSERVICE'] as $tab){ + if(preg_match("/^servdns$/",$tab['CLASS'])){ + $this->DNSenabled = true; + } + } + + if(!class_available("DNS")){ + $this->DNSenabled = FALSE; + } + + if(!$this->DNSenabled){ + $this->DNS_is_account = false; + return; + } + + if($this->DNSenabled){ + + /* Get Zones + */ + $this->Zones = DNS::getAvailableZones($config); + + /* Get Entry + */ + $this->dnsEntry = DNS::getDNSHostEntries($config,$this->OrigCn); + + /* Remove A record which equals $this->ipHostNumber + */ + $ptr = $this->get_pTRRecord(); + foreach($this->dnsEntry['RECORDS'] as $key => $rec){ + if(($rec['type'] == "aRecord") && ($rec['value'] == $this->ipHostNumber)){ + unset($this->dnsEntry['RECORDS'][$key]); + } + if(($rec['type'] == "pTRRecord") && ($rec['value'] == $ptr)){ + unset($this->dnsEntry['RECORDS'][$key]); + } + } + + /* Get Record types + */ + $this->RecordTypes = DNS::getDnsRecordTypes(); + + /* If there is at least one entry in this -> types, we have DNS enabled + */ + if($this->dnsEntry['exists']){ + $this->DNS_is_account = true; + }else{ + $this->DNS_is_account = false; + } + } + + /* Create a list of used mac and ip addresses. + + ! We use this optically huge amount of code to fetch all + Mac and IP addresses, because a simple search for mac and IP + over the whole ldap server was 10 to 20 times slower. + */ + $deps = array(); + $ou = preg_replace("/,.*$/","",get_ou("systemRDN")); + $a_ous = array(get_ou("serverRDN"), + get_ou("terminalRDN"), + get_ou("workstationRDN"), + get_ou("printerRDN"), + get_ou("phoneRDN"), + get_ou("componentRDN")); + + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=organizationalUnit)(".$ou."))",array("dn")); + while($attrs = $ldap->fetch()){ + foreach($a_ous as $allowed){ + $deps[] = $allowed.$attrs['dn']; + } + } + + foreach($deps as $dep){ + $ldap->cd($dep); + $ldap->search("(|(macAddress=*)(ipHostNumber=*))",array("macAddress","ipHostNumber")); + while($attrs = $ldap->fetch()){ + if(isset($attrs['ipHostNumber'][0])){ + $this->used_ip_mac["ip:".$attrs['ipHostNumber'][0]] = "ip:".$attrs['ipHostNumber'][0]; + } + if(isset($attrs['macAddress'][0])){ + $this->used_ip_mac["mac:".$attrs['macAddress'][0]] = "mac:".$attrs['macAddress'][0]; + } + } + } + + /* Save initial ip and mac values, to be able + check if the used values are already in use */ + $this->orig_ipHostNumber = $this->ipHostNumber; + $this->orig_macAddress = $this->macAddress; + + /* Store initally account settings + */ + $this->initially_was_account = $this->DNS_is_account; + + if($this->DNS_is_account){ + new log("view","unknown/".get_class($this),$this->dn); + } + } + + + function netmaskIsCoherent($idZone) + { + $netmask = DNS::FlipIp(str_replace(".in-addr.arpa","",DNS::getNameFromMix($idZone))); + if(!strstr($this->ipHostNumber, $netmask)){ + return false; + }else{ + return true; + } + } + + + function getVarsForSaving($attrs) + { + foreach($this->attributes as $attr){ + if(!empty($this->$attr)){ + $attrs[$attr] = $this->$attr; + } + } + return($attrs); + } + + function execute() + { + /* Call parent execute */ + $smarty= get_smarty(); + $smarty->assign("autonetACL",$this->acl_is_writeable("macAddress").$this->acl_is_writeable("ipHostNumber")); + + $tmp = $this->plInfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); + } + + $display= ""; + + /********** + * Additional ipHostNumber handling + **********/ + + /* Add a new one */ + if($this->acl_is_writeable("ipHostNumber")){ + foreach($_POST as $name => $value){ + if(preg_match("/^additionalHostNumbers_add/",$name)){ + $this->additionalHostNumbers[] = ""; + break; + } + + /* Delete given entry */ + if(preg_match("/^additionalHostNumbers_del_/",$name)){ + $id = preg_replace("/^^additionalHostNumbers_del_([0-9]*)_.*/","\\1",$name); + if(isset($this->additionalHostNumbers[$id])){ + unset($this->additionalHostNumbers[$id]); + $this->additionalHostNumbers = array_values($this->additionalHostNumbers); + } + break; + } + } + } + + $smarty->assign("additionalHostNumbers",$this->additionalHostNumbers); + $smarty->assign("staticAddress", ""); + + /********** + * Autonet completion + **********/ + + /* Check for autonet button */ + if (isset($_POST['autonet']) && ($this->acl_is_writeable("ipHostNumber") || $this->acl_is_writeable("macAddress"))){ + $d= new gosaSupportDaemon(TRUE, 0.5); + $res= $d->_send("
    gosa_network_completition
    ". + "GOSAGOSA".$this->cn."
    ", TRUE); + if (isset($res['XML']['IP']) && $this->acl_is_writeable("ipHostNumber")){ + $this->ipHostNumber= $res['XML']['IP']; + } + if (isset($res['XML']['MAC']) && $this->acl_is_writeable("macAddress")){ + $this->macAddress= $res['XML']['MAC']; + } + } + + + /********** + * DHCP Handling + **********/ + + if(isset($_POST['dhcpEditOptions']) && $this->acl_is_readable("dhcpSetup")){ + if(count($this->dhcpHostEntry) == 0){ + $this->dialog = new dhcpHost($this->parent,$this->dhcpParentNode,TRUE); + }else{ + $this->dialog = new dhcpHost($this->parent,$this->dhcpHostEntry,TRUE); + } + $this->dialog->cn = $this->cn; + $this->dialog->read_only = !$this->acl_is_writeable("dhcpSetup"); + $this->dialog->dhcpHWAddress = "ethernet ".$this->macAddress; + if(!empty($this->ipHostNumber)){ + $this->dialog->statements['fixed-address'] = $this->ipHostNumber; + } + } + + if(isset($_POST['cancel_dhcp'])){ + $this->dialog = FALSE; + } + + if(isset($_POST['save_dhcp']) && $this->acl_is_writeable("dhcpSetup")){ + $this->dialog->save_object(); + $msgs = $this->dialog->check(array()); + if(count($msgs)){ + foreach($msgs as $msg){ + msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); + } + }else{ + $this->dhcpHostEntry = $this->dialog->save(); + $this->dialog = FALSE; + } + } + + if(is_object($this->dialog)){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + $smarty->assign("dhcpEnabled", $this->dhcpEnabled && $this->acl_is_readable("dhcpSetup")); + $smarty->assign("dhcp_is_Account",$this->dhcp_is_Account); + $smarty->assign("dhcpParentNode", $this->dhcpParentNode); + $smarty->assign("dhcpParentNodes",$this->dhcpParentNodes); + $smarty->assign("dhcpParentNodeCnt",count($this->dhcpParentNodes)); + + /********** + * DNS Handling + **********/ + + /* There is no dns available + */ + $smarty->assign("DNS_is_account",$this->DNS_is_account); + $smarty->assign("DNSenabled",$this->DNSenabled && $this->acl_is_readable("dnsSetup")); + + if($this->DNSenabled == false){ + + /* Is IP address must ? */ +# $smarty->assign("DNS_is_account",false); + $smarty->assign("IPisMust",(($this->IPisMust)||($this->DNS_is_account))); + + /* Assign smarty all non DNs attributes */ + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + $smarty->assign("staticAddress","*"); + + $display.= $smarty->fetch(get_template_path('network.tpl', TRUE)); + }else{ + # $smarty->assign("DNS_is_account",true); + + /* Add new empty array to our record list */ + if(isset($_POST['AddNewRecord']) && $this->acl_is_writeable("dnsSetup")){ + $this->dnsEntry['RECORDS'][] =array("type"=>"aRecord","value"=>""); + } + + /* propose_ip */ + if(isset($_POST['propose_ip']) && $this->acl_is_writeable("ipHostNumber")){ + foreach($this->Zones as $key => $name){ + if($name == $this->dnsEntry['zoneName']){ + $net = DNS::FlipIp(str_replace(".in-addr.arpa","",DNS::getNameFromMix($key))); + $this->ipHostNumber = $this->generateRandomIp($net); + } + } + } + + /* Handle all posts */ + $only_once =true; + if($this->acl_is_writeable("dnsSetup")){ + foreach($_POST as $name => $value){ + + /* Check if we have to delete a record entry */ + if((preg_match("/RemoveRecord_/",$name))&&($only_once)) { + + /* Avoid performing this once again */ + $only_once = false; + + /* Extract id for specified entry */ + $id = preg_replace("/RemoveRecord_/","",$name); + $id = preg_replace("/_.*$/","",$id); + + /* Delete this record, mark edited entries to be able to delete them */ + if(isset($this->dnsEntry['RECORDS'][$id])){ + unset($this->dnsEntry['RECORDS'][$id]); + } + } + } + } + /* Assign smarty all non DNs attributes */ + foreach($this->attributes as $attr){ + $smarty->assign($attr,$this->$attr); + } + + /* Assign smarty all DNS attributes */ + foreach($this->DNSattributes as $attr){ + $smarty->assign($attr,$this->dnsEntry[$attr]); + } + + /* Assign all needed vars */ + # $smarty->assign("DNSAccount",$this->DNS_is_account); + $smarty->assign("hide_dns_check_box",$this->hide_dns_check_box); + + $smarty->assign("Zones",$this->Zones); + $smarty->assign("ZoneCnt",count($this->Zones)); + $smarty->assign("ZoneKeys",($this->Zones)); + $smarty->assign("IPisMust",(($this->IPisMust)||($this->DNS_is_account))); + + /* Create zone array */ + $idZones = array(); + foreach($this->Zones as $id => $zone){ + if($this->netmaskIsCoherent($id)) { + $idZones[$id] = $zone; + }else{ + $idZones[$id] = $zone." ("._("Not matching").")"; + } + } + $smarty->assign("Zones",$idZones); + $smarty->assign("ZoneKeys", $this->Zones); + + $tmp = $this->generateRecordsList(); + + $changeStateForRecords = $tmp['changeStateForRecords']; + + $smarty->assign("records",$tmp['str']); + $smarty->assign("changeStateForRecords",$changeStateForRecords); + $smarty->assign("staticAddress","*"); + + $smarty->assign("autonetACL",$this->acl_is_writeable("macAddress").$this->acl_is_writeable("ipHostNumber")); + + $display.= $smarty->fetch(get_template_path('network.tpl', TRUE)); + } + + return($display); + } + + + function remove_from_parent() + { + if($this->DNS_is_account){ + + $ldap = $this->config->get_ldap_link(); + + $tmp = array(); + $this->dnsEntry['exists'] = false; + $tmp = DNS::getDNSHostEntriesDiff($this->config,$this->OrigCn,$this->dnsEntry,$this->cn); + + /* Delete dns */ + foreach($tmp['del'] as $dn => $del){ + $ldap->cd($dn); + $ldap->rmdir_recursive($dn); + new log("remove","unknown/".get_class($this),$dn); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_DEL, get_class())); + } + } + } + } + + + /* Save data to object */ + function save_object() + { + + if(isset($_POST['network_tpl_posted'])){ + + /* Save all posted vars */ + plugin::save_object(); + + /****** + Additional IP Host Numbers + ******/ + + /* Get posts for all additionally added ipHostNumbers */ + if($this->acl_is_writeable("ipHostNumber")){ + foreach($this->additionalHostNumbers as $id => $value){ + if(isset($_POST['additionalHostNumbers_'.$id])){ + $this->additionalHostNumbers[$id] = get_post('additionalHostNumbers_'.$id); + } + } + } + + + /****** + DHCP posts + ******/ + + if($this->acl_is_writeable("dhcpSetup") && $this->dhcpEnabled && isset($_POST['network_tpl_posted'])){ + foreach($this->dhcpAttributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + if(isset($_POST['dhcp_is_Account'])){ + $this->dhcp_is_Account = TRUE; + }else{ + $this->dhcp_is_Account = FALSE; + } + } + + /* Ge all non dns attributes (IP/MAC)*/ + foreach($this->attributes as $attr){ + if(isset($_POST[$attr]) && $this->acl_is_writeable($attr)){ + $this->$attr = $_POST[$attr]; + } + } + + + /****** + DNS posts + ******/ + + /* Check if DNS should be enabled / disabled */ + if($this->DNS_is_account && $this->acl_is_writeable("dnsSetup") && !isset($_POST['DNS_is_account'])){ + $this->DNS_is_account = false; + }elseif(!$this->DNS_is_account && $this->acl_is_writeable("dnsSetup") && isset($_POST['DNS_is_account'])){ + $this->DNS_is_account = true; + } + + /* Get dns attributes */ + if(($this->DNSenabled) && (isset($_POST['network_tpl_posted'])) && $this->acl_is_writeable("dnsSetup")){ + + /* Check for posted record changes */ + if(is_array($this->dnsEntry['RECORDS'])){ + foreach($this->dnsEntry['RECORDS'] as $key => $value){ + + /* Check if type has changed */ + if(isset($_POST['RecordTypeSelectedFor_'.$key])){ + $this->dnsEntry['RECORDS'][$key]['type'] = $_POST['RecordTypeSelectedFor_'.$key]; + } + /* Check if value has changed */ + if(isset($_POST['RecordValue_'.$key])){ + $this->dnsEntry['RECORDS'][$key]['value'] = get_post('RecordValue_'.$key); + } + } + } + + /* Get all basic DNS attributes (TTL, Clas ..)*/ + foreach($this->DNSattributes as $attr){ + if(isset($_POST[$attr])){ + $this->dnsEntry[$attr] = $_POST[$attr]; + } + } + } + if($this->hide_dns_check_box){ + $this->DNS_is_account = true; + } + } + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /****** + check additional IP Host Numbers + ******/ + + foreach($this->additionalHostNumbers as $id => $value){ + if(!tests::is_ip($value)){ + $message[]= msgPool::invalid(sprintf(_("IP address %s"),($id +2)), "", "", "192.168.1.10"); + } + } + + + /* Check if mac and ip are already used */ + if(!empty($this->ipHostNumber) && $this->DNS_is_account && + $this->ipHostNumber != $this->orig_ipHostNumber && + in_array("ip:".$this->ipHostNumber,$this->used_ip_mac)){ + $message[]= msgPool::duplicated(_("IP address")); + } + if(!empty($this->macAddress) && $this->dhcp_is_Account && + $this->macAddress != $this->orig_macAddress && + in_array("mac:".$this->macAddress,$this->used_ip_mac)){ + $message[]= msgPool::duplicated(_("MAC address")); + } + + /* Check if ip must be given + */ + if(($this->IPisMust)||($this->DNS_is_account)){ + if (empty($this->ipHostNumber)){ + $message[]= msgPool::required(_("IP address")); + }elseif (!tests::is_ip($this->ipHostNumber)){ + $message[]= msgPool::invalid(_("IP address"), "", "", "192.168.1.10"); + } + } + + /* Check if mac is empty + */ + if($this->MACisMust || $this->dhcp_is_Account){ + if ($this->macAddress == "" ){ + $message[]= msgPool::required(_("MAC address")); + }elseif(!tests::is_mac($this->macAddress)){ + $message[]= msgPool::invalid(_("MAC address"), "", "", "00:0C:7F:31:33:F1"); + } + } + + /* only perfrom this checks if this is a valid DNS account */ + if($this->DNS_is_account){ + + $checkArray = array(); + $onlyOnce = array(); + + // $onlyOnce['cNAMERecord'] = 0; + $tmp = array_flip($this->Zones); + $tmp2 = $tmp[$this->dnsEntry['zoneName']]; + if(!$this->netmaskIsCoherent($tmp2)){ //this->dnsEntry['zoneName'])){ + $tmp2 = preg_replace("/^.*\//","",$tmp2); + $message[] =sprintf(_("The IP address '%s' is not part of the selected reverse zone '%s'!"),$this->ipHostNumber,$tmp2); + } + + /* Walk through all entries and detect duplicates or mismatches + */ + foreach($this->dnsEntry['RECORDS'] as $name => $values){ + + /* Count record values, to detect duplicate entries for a specific record + */ + if(!isset($checkArray[$values['type']][$values['value']])){ + $checkArray[$values['type']][$values['value']] = 0; + }else{ + $message[] = sprintf(_("Record type '%s' is duplicated!"),$values['type']); + } + + /* Check if given entries in $onlyOnce are used more than once + */ + if(isset($onlyOnce[$values['type']])){ + $onlyOnce[$values['type']] ++; + if($onlyOnce[$values['type']] > 1){ + $message[] = sprintf(_("Uniq record type '%s' is duplicated!"),$values['type']); + } + } + + /* Skip txt record ... + */ + if($values['type'] == "tXTRecord") continue; + + /* Check if there is an aRecord defined which uses the same IP as used in IPhostAddress + */ + if(($values['type'] == "aRecord")&&($values['value'] == $this->ipHostNumber)){ + #TODO: Where's the problem here? + $message[]=sprintf(_("The IP address '%s' will be added as 'A Record', this will be done automatically, please remove the record."), + $this->ipHostNumber); + } + + /* only lower-case is allowed in record entries ... + */ + if($values['value'] != strtolower($values['value'])){ + #TODO: What's in values['value']? Something for a propper message? + $message[] = sprintf(_("Only lowercase records are allowed, please check your '%ss'."),$values['type']); + } + } + } + return ($message); + } + + + /* Save to LDAP */ + function save() + { + $ldap= $this->config->get_ldap_link(); + + $dn = $this->parent->dn; + + /*******************/ + /* IP-MAC HANDLING */ + /*******************/ + + /* $dn was posted as parameter */ + $this->dn = $dn; + + /* Save DNS setting & ip/Mac*/ + plugin::save(); + + /* Add all additional ipHostNumbers now + */ + if(!empty($this->ipHostNumber)){ + $this->attrs['ipHostNumber'] = array($this->ipHostNumber); + } + foreach($this->additionalHostNumbers as $value){ + $this->attrs['ipHostNumber'][] = $value; + } + + /* Write back to ldap */ + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /****************/ + /* DHCP HANDLING */ + /****************/ + + /* New entry */ + if($this->dhcpEnabled && $this->acl_is_writeable("dhcpSetup")) { + + if(count($this->dhcpHostEntry) == 0){ + $this->dialog = new dhcpHost($this->parent,$this->dhcpParentNode,TRUE); + $this->dialog->cn = $this->cn; + $this->dialog->dhcpHWAddress = "ethernet ".$this->macAddress; + if(!empty($this->ipHostNumber)){ + $this->dialog->statements['fixed-address'] = $this->ipHostNumber; + } + $this->dialog->execute(); + $this->dialog->save_object(); + $this->dhcpHostEntry = $this->dialog->save(); + if(count($this->dhcpHostEntry['dhcpOption']) == 0){ + $this->dhcpHostEntry['dhcpOption']= array("host-name ".$this->cn); + } + } + + /* Write mac address to dhcp settings */ + if($this->dhcp_is_Account){ + if(!isset($this->dhcpHostEntry['dhcpHWAddress'][0]) || + !preg_match("/ethernet ".$this->macAddress."/",$this->dhcpHostEntry['dhcpHWAddress'][0])){ + $this->dhcpHostEntry['dhcpHWAddress'] = array("ethernet ".$this->macAddress); + $this->dhcpHostEntry['MODIFIED'] = TRUE; + } + } + + /* Updated IP host number */ + if($this->dhcp_is_Account){ + foreach($this->dhcpHostEntry['dhcpStatements'] as $id => $value){ + if(preg_match("/^fixed-address/",$value)){ + $this->dhcpHostEntry['dhcpStatements'][$id] = "fixed-address ".$this->ipHostNumber; + $this->dhcpHostEntry['MODIFIED'] = TRUE; + } + } + } + + /* Unset dhcpStatements if this attribute is empty */ + if(isset($this->dhcpHostEntry['dhcpStatements']) && + ($this->dhcpHostEntry['dhcpStatements'] == "" || count($this->dhcpHostEntry['dhcpStatements']) == 0) ){ + unset($this->dhcpHostEntry['dhcpStatements']); + } + + /* DHCP removed */ + if($this->initial_dhcp_is_Account && !$this->dhcp_is_Account){ + $ldap->rmdir_recursive($this->dhcpHostEntry['dn']); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dhcpHostEntry['dn'], LDAP_DEL, get_class())); + } + + $tmp = new servdhcp($this->config,$this->dhcpParentNode); + $tmp->handle_post_events("remove"); + } + + /* DHCP Added */ + if(!$this->initial_dhcp_is_Account && $this->dhcp_is_Account){ + $attrs = $this->dhcpHostEntry; + unset($attrs['MODIFIED']); + unset($attrs['dn']); + $ldap->cd("cn=".$this->cn.",".$this->dhcpParentNode); + $res = $ldap->add($attrs); + + $tmp = new servdhcp($this->config,$this->dhcpParentNode); + $tmp->handle_post_events("add"); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "cn=".$this->cn.",".$this->dhcpParentNode, LDAP_ADD, get_class())); + } + } + + /* DHCP still activated */ + if($this->initial_dhcp_is_Account && $this->dhcp_is_Account){ + + /* DHCP node changed */ + if(($this->initial_dhcpParentNode != $this->dhcpParentNode) || + ($this->cn != $this->OrigCn)){ + $attrs = $this->dhcpHostEntry; + $attrs['cn'] = $this->cn; + unset($attrs['dn']); + unset($attrs['MODIFIED']); + $ldap->cd("cn=".$this->cn.",".$this->dhcpParentNode); + $res = $ldap->add($attrs); + + $tmp = new servdhcp($this->config,$this->dhcpParentNode); + $tmp->handle_post_events("modify"); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "cn=".$this->cn.",".$this->dhcpParentNode, LDAP_ADD, get_class())); + } + if($res){ + $ldap->rmdir_recursive($this->dhcpHostEntry['dn']); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dhcpHostEntry['dn'], LDAP_DEL, get_class())); + } + } + } + + /* SAME node but modified */ + if(isset($this->dhcpHostEntry['MODIFIED']) && $this->dhcpHostEntry['MODIFIED'] == 1 && + $this->initial_dhcpParentNode == $this->dhcpParentNode){ + $attrs = $this->dhcpHostEntry; + unset($attrs['dn']); + unset($attrs['MODIFIED']); + $ldap->cd($this->dhcpHostEntry['dn']); + $ldap->modify($attrs); + + $tmp = new servdhcp($this->config,$this->dhcpParentNode); + $tmp->handle_post_events("modify"); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dhcpHostEntry['dn'], LDAP_MOD, get_class())); + } + } + } + } + $this->dialog = FALSE; + + /****************/ + /* DNS HANDLING */ + /****************/ + + /* If isn't DNS account but initially was DNS account + remove all DNS entries + */ + if((!$this->DNSenabled) || ((!$this->DNS_is_account)&&(!$this->initially_was_account))){ + return; + }elseif($this->acl_is_writeable("dnsSetup")){ + + /* Add ipHostNumber to aRecords + */ + $backup_dnsEntry = $this->dnsEntry; + if(!empty($this->ipHostNumber)){ + $this->dnsEntry['RECORDS'][] = array("type"=>"aRecord","value"=>$this->ipHostNumber); + $ptr = $this->get_pTRRecord(); + if(!empty($ptr)){ + $this->dnsEntry['RECORDS'][] = array("type"=>"pTRRecord","value"=>$ptr); + } + } + + /* Create diff and follow instructions + * If Account was disabled, remove account by setting exists to false + */ + if((!$this->DNS_is_account)&&($this->initially_was_account)){ + $this->dnsEntry['exists'] = false; + $tmp = DNS::getDNSHostEntriesDiff($this->config,$this->OrigCn,$this->dnsEntry,$this->cn); + }else{ + $this->dnsEntry['exists'] = $this->DNS_is_account; + $tmp = DNS::getDNSHostEntriesDiff($this->config,$this->OrigCn,$this->dnsEntry,$this->cn); + } + + /* move follwoing entries + */ + foreach($tmp['move'] as $src => $dst){ + $this->recursive_move($src,$dst); + } + + /* Delete dns */ + foreach($tmp['del'] as $dn => $del){ + $ldap->cd($dn); + $ldap->rmdir_recursive($dn); + new log("modify","unknown/".get_class($this),$dn,array("*"),$ldap->get_error()); + } + + /* Add || Update new DNS entries + */ + foreach($tmp['add'] as $dn => $attrs){ + $ldap->cd($dn); + $ldap->cat($dn, array('dn')); + if(count($ldap->fetch())){ + $ldap->cd($dn); + $ldap->modify ($attrs); + }else{ + $ldap->cd($dn); + $ldap->add($attrs); + } + new log("modify","unknown/".get_class($this),$dn,array_keys($attrs),$ldap->get_error()); + } + + + /* Display errors + */ + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, 0, get_class())); + } + + $tmp2 = new servdns($this->config,$this->dn); + $tmp2->handle_post_events("modify"); + + $this->dnsEntry = $backup_dnsEntry; + } + } + + /* Create html table with all used record types + */ + function generateRecordsList() + { + $changeStateForRecords = ""; + + if(!$this->DNS_is_account) { + $str = ""; + return(array("str" => $str, "changeStateForRecords"=> "")); + } + + $str = ""; + foreach($this->dnsEntry['RECORDS'] as $key => $entry){ + + $changeStateForRecords.= "changeState('RecordTypeSelectedFor_".$key."');\n"; + $changeStateForRecords.= "changeState('RecordValue_".$key."');\n"; + $changeStateForRecords.= "changeState('RemoveRecord_".$key."');\n"; + + $str.=" ". + " ". + " ". + " ". + ""; + } + + $str.= " ". + " ". + " ". + "
    ".$this->generateRecordListBox($entry['type'],"RecordTypeSelectedFor_".$key)."
    ". + " ". + "
    "; + $ret = array("str" => $str, "changeStateForRecords" => $changeStateForRecords); + return($ret); + } + + + /* Create a html select box which allows us to select different types of records + */ + function generateRecordListBox($selected,$name) + { + $str = ""; + return($str); + } + + + /* Return plugin informations for acl handling */ + static function plInfo() + { + $tmp = array( + "plShortName" => _("DNS"), + "plDescription" => _("DNS settings"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 5, + "plSection" => array("administration"), + "plCategory" => array("workstation","terminal","phone","server","component","printer","winworkstation"), + + "plProvidedAcls"=> array( + "ipHostNumber" => _("IP address"), + "macAddress" => _("MAC address")) + ); + + /* Hide all dns/dhcp configurations if not available + */ + if(class_available("servdns")){ + $tmp['plProvidedAcls']["dnsSetup"] = _("DNS configuration"); + } + if(class_available("servdhcp")){ + $tmp['plProvidedAcls']["dhcpSetup"] = _("DHCP configuration"); + } + return($tmp); + } + + + function get_dhcp_host_entry() + { + $attrs = array(); + $dn = $this->get_dhcp_host_entry_dn(); + if($dn){ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->cat($dn,array("*")); + if($ldap->count()){ + $attrs = $ldap->fetch(); + foreach($attrs as $key => $value){ + if(is_numeric($key) || ($key == "count")){ + unset($attrs[$key]); + } + if(is_array($value) && isset($value['count'])){ + unset($attrs[$key]['count']); + } + } + } + } + return($attrs); + } + + + function get_dhcp_host_entry_dn() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search ("(&(objectClass=dhcpHost)(cn=".$this->cn."))",array("cn","dn")); + + if($ldap->count()){ + $attr = $ldap->fetch(); + return($attr['dn']); + }else{ + return(""); + } + } + + + function get_dhcp_parent_node() + { + return(preg_replace("/^cn=".preg_quote($this->cn, '/').",/","",$this->get_dhcp_host_entry_dn())); + } + + + function get_dhcp_parent_nodes() + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(objectClass=dhcpService)",array("dhcpPrimaryDN")); + + $dhcp_dns = array(); + while($attr = $ldap->fetch()){ + $dhcp_dns[$attr['dn']] = $attr['dhcpPrimaryDN'][0]; + } + + foreach($dhcp_dns as $key => $pri_dns){ + $ldap->cat($pri_dns,array("cn")); + $tmp = $ldap->fetch(); + if(isset($tmp['cn'][0])){ + $dhcp_dns[$key] = $tmp['cn'][0]; + }else{ + unset($dhcp_dns[$key]); + } + } + + $tmp = $tmp2 = array(); + foreach($dhcp_dns as $dn => $cn){ + $ldap->cd($dn); + $ldap->search("(|(objectClass=dhcpService)(objectClass=dhcpGroup)". + "(objectClass=dhcpSubnet)(objectClass=dhcpSharedNetwork))",array("cn")); + while($attr = $ldap->fetch()){ + $tmp[$attr['dn']] = $attr['cn'][0]; + } + $tmp2 = array_merge($tmp2,$this->create_tree($tmp,preg_replace("/^[^,]+,/i","",$dn),"(".$cn.") ")); + } + return($tmp2); + } + + + /* this function returns the default ptr record entry */ + function get_pTRRecord() + { + if(!empty($this->ipHostNumber) && isset($this->dnsEntry['zoneName']) && !empty($this->dnsEntry['zoneName'])){ + $ldap = $this->config->get_ldap_link(); + $ldap->cat(DNS::getDNSZoneDN($this->config,$this->dnsEntry['zoneName'])); + $attrs = $ldap->fetch(); + $tmp = array_flip($this->Zones); + $tmp = preg_replace("/^[^\/]*+\//","",$tmp[$this->dnsEntry['zoneName']]); + $tmp = trim(preg_replace("/\.in-addr.arpa$/","",$tmp)); + $ptr = preg_replace("/^".preg_quote(DNS::FlipIp($tmp), '/')."\./","",$this->ipHostNumber); + return($ptr); + }else{ + return(FALSE); + } + } + + + function generateRandomIP($net = "") + { + $str = $net; + $cnt = 4; + while(substr_count($str,".") < 3 && $cnt > 0){ + $str .= ".".rand(0,255); + $str = preg_replace("/\.\.*/",".",$str); + $str = trim($str,". "); + $cnt --; + } + return($str); + } + + + function create_tree($arr,$base,$current = "") + { + $ret = array(); + foreach($arr as $r => $name){ + $base_part = str_replace($base,"",$r); + if(preg_match("/^[a-z]*=".preg_quote($name, '/')."(|,)$/i",$base_part)){ + $ret[$r] = $current.$name; + $tmp = $this->create_tree($arr,$r,$current.". "); + foreach($tmp as $sub_key => $sub_name){ + $ret[$sub_key] = $sub_name; + } + } + } + return($ret); + } + + function force_dns() + { + if($this->DNSenabled){ + + /* Only force DNS account, if we have at least on dns Zone */ + if(count($this->Zones)){ + $this->DNS_is_account = TRUE; + $this->hide_dns_check_box = TRUE; + } + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/component.tpl b/trunk/gosa-plugins/systems/admin/systems/component.tpl new file mode 100644 index 000000000..feb197da4 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/component.tpl @@ -0,0 +1,56 @@ + + + + + +
    + + + + + + + + + + + + +
    {$must} +{render acl=$cnACL} + +{/render} +
     
    {$must} +{render acl=$baseACL} + +{/render} +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} + +
    +
    + + + + + +
    +{render acl=$descriptionACL} + +{/render} +
    +
    + +

     

    + +{$netconfig} + + + diff --git a/trunk/gosa-plugins/systems/admin/systems/contents.tpl b/trunk/gosa-plugins/systems/admin/systems/contents.tpl new file mode 100644 index 000000000..001d50d43 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/contents.tpl @@ -0,0 +1 @@ +{$Kekse} sind gesund diff --git a/trunk/gosa-plugins/systems/admin/systems/main.inc b/trunk/gosa-plugins/systems/admin/systems/main.inc new file mode 100644 index 000000000..81c52565a --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/main.inc @@ -0,0 +1,64 @@ +remove_lock(); + } +} + +/* Remove this plugin from session +*/ +if ( $cleanup ){ + session::un_set('systems'); +}else{ + + + /* Create usermanagement object on demand */ + if (!session::is_set('systems')){ + session::set('systems',new systems($config, $ui)); + } + $systems = session::get('systems'); + $systems->save_object(); + $output= $systems->execute(); + + /* Reset requested? */ + if (isset($_GET['reset']) && $_GET['reset'] == 1){ + session::un_set ('systems'); + } + + /* Page header*/ + if (get_object_info() != ""){ + $display= print_header(get_template_path($systems->plIcon), _("System management"), "\"\" ".LDAP::fix(get_object_info())); + } else { + $display= print_header(get_template_path($systems->plIcon), _("System management")); + } + + /* Show and save dialog */ + $display.= $output; + session::set('systems',$systems); +} + +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/network.tpl b/trunk/gosa-plugins/systems/admin/systems/network.tpl new file mode 100644 index 000000000..6401258e4 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/network.tpl @@ -0,0 +1,180 @@ +

    {t}Network settings{/t}

    + + + + + + {if $DNSenabled==true} + + {/if} + + +
    + + + + + + + + + + {if $dhcpEnabled} + + + + {/if} +
    +{render acl=$ipHostNumberACL} + +{/render} + {foreach from=$additionalHostNumbers item=item key=key} +
    +{render acl=$ipHostNumberACL} + +{/render} +{render acl=$ipHostNumberACL} + +{/render} + {/foreach} +{render acl=$ipHostNumberACL} +   +{/render} +
    + +{render acl=$ipHostNumberACL} +{if $DNS_is_account == true} + + {else} + + {/if} +{/render} +
    {$staticAddress} +{render acl=$macAddressACL} + +{/render} + +{render acl=$autonetACL} + +{/render} +
    + + {if $dhcpParentNodeCnt} + + + + + {else} + + + + {/if} + {if $dhcp_is_Account} + + + + + + + + + + + {/if} +
    +{render acl=$dhcpSetupACL} + +{/render} + + {t}Enable DHCP for this device{/t} +{render acl=$dhcpSetupACL} + +{/render} +
    + + {t}Enable DHCP for this device{/t} ({t}not configured{/t}) + +
     {t}Parent node{/t} +{render acl=$dhcpSetupACL} + +{/render} +
       + +
    +
    +
    + + {if $ZoneCnt} + +{render acl=$dnsSetupACL} + {if $DNS_is_account == true} + + {else} + + {/if} +{/render} + {t}Enable DNS for this device{/t} + + {if $DNS_is_account == true} +
    + {else} + + {else} + + {t}Enable DNS for this device{/t} ({t}not configured{/t}) + + {/if} + +
    + + + diff --git a/trunk/gosa-plugins/systems/admin/systems/password.tpl b/trunk/gosa-plugins/systems/admin/systems/password.tpl new file mode 100644 index 000000000..b55885f8f --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/password.tpl @@ -0,0 +1,49 @@ + +

    + {t}To change the terminal root password use the fields below. The changes take effect during the next reboot. Please memorize the new password, because you wouldn't be able to log in.{/t} +

    +

    + {t}Leave fields blank for password inheritance from default entries.{/t} +

    + +

    + {t}Changing the password impinges on authentification only.{/t} +

    + + + + + + + + + + + + + + + +
    {t}Password strength{/t} + + +
    + +
    + +

    + +   + +

    + + + diff --git a/trunk/gosa-plugins/systems/admin/systems/paste_generic.tpl b/trunk/gosa-plugins/systems/admin/systems/paste_generic.tpl new file mode 100644 index 000000000..0778770a1 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/paste_generic.tpl @@ -0,0 +1,50 @@ +{if $object == "server"} + + + + + +
    {$must} + +
    +{/if} +{if $object == "workstation"} + + + + + +
    {$must} + +
    +{/if} +{if $object == "terminal"} + + + + + +
    {$must} + +
    +{/if} +{if $object == "printer"} + + + + + +
    {$must} + +
    +{/if} +{if $object == "component"} + + + + + +
    {$must} + +
    +{/if} diff --git a/trunk/gosa-plugins/systems/admin/systems/remove.tpl b/trunk/gosa-plugins/systems/admin/systems/remove.tpl new file mode 100644 index 000000000..7db0f84ca --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/remove.tpl @@ -0,0 +1,23 @@ +
    + {t}Warning{/t} +
    +

    + {$warning} + {t}This includes all system and setup informations. Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

    + +

    + {t}Best thing to do before performing this action would be to save the current contents of your LDAP tree in a file. So - if you've done so - press 'Delete' to continue or 'Cancel' to abort.{/t} +

    + +

    + {if $multiple} + +   + + {else} + +   + + {/if} +

    diff --git a/trunk/gosa-plugins/systems/admin/systems/server.tpl b/trunk/gosa-plugins/systems/admin/systems/server.tpl new file mode 100644 index 000000000..38a634a18 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/server.tpl @@ -0,0 +1,93 @@ + + + + + +
    + + + + + + + + + + + + + +
    {$must} +{render acl=$cnACL} + +{/render} +
    +{render acl=$descriptionACL} + +{/render} +

    {$must}
    +
    +{render acl=$baseACL} + +{/render} + +{render acl=$baseACL disable_picture='images/lists/folder_grey.png'} + +{/render} +
    + {$host_key} +
    + + + + + +
    {t}Mode{/t} +{render acl=$gotoModeACL} + +{/render} +
    +
    + +

     

    + +{$netconfig} + +{if $fai_activated} +

     

    + +

    {t}Action{/t}

    + + + + + +{/if} +
    + +{if $currently_installing} + {t}System installation in progress, the FAI state cannot be changed right now.{/t} +{else} +{render acl=$FAIstateACL} + +{/render} + +{render acl=$FAIstateACL} + +{/render} +
    +{/if} + + + diff --git a/trunk/gosa-plugins/systems/admin/systems/services/ServiceAddDialog.tpl b/trunk/gosa-plugins/systems/admin/systems/services/ServiceAddDialog.tpl new file mode 100644 index 000000000..c941a87b0 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/services/ServiceAddDialog.tpl @@ -0,0 +1,32 @@ +
     
    +
    + {t}Adding a new service to the current server{/t} +
    +
    +

    +{t}This dialog allows you to add new services to the currenty edited server object. The box below shows all available but not already used services.{/t} +
    +
    +

    +{if $Services} +
    +
    {t}Service to add{/t}   + +{else} +
    + {t}All available services are already in use.{/t} +
    +{/if} +
    +
    +
    +

    +

    + +   + +
    + diff --git a/trunk/gosa-plugins/systems/admin/systems/services/class_ServiceAddDialog.inc b/trunk/gosa-plugins/systems/admin/systems/services/class_ServiceAddDialog.inc new file mode 100644 index 000000000..34ea757fb --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/services/class_ServiceAddDialog.inc @@ -0,0 +1,54 @@ +"Config object" , "dn"=>"Object dn"); + + /* This plugin does not have any ocs */ + var $objectclasses = array(); + var $parent = NULL; + + function ServiceAddDialog(&$config,$dn,$parent) + { + plugin::plugin($config); + $this->parent = $parent; + } + + function execute() + { + $smarty = get_smarty(); + $services = $this->parent->getAllUnusedServices(); + natcasesort($services); + $smarty->assign("Services",$services); + return($smarty->fetch(get_template_path("ServiceAddDialog.tpl", TRUE,dirname(__FILE__)))); + } + + function check(){ return array();} + function save_object(){;} + function save(){} + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/services/class_goService.inc b/trunk/gosa-plugins/systems/admin/systems/services/class_goService.inc new file mode 100644 index 000000000..1134f1cd7 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/services/class_goService.inc @@ -0,0 +1,262 @@ +DisplayName = _("Empty service"); + } + + + /* Create content */ + function execute() + { + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","server/".get_class($this),$this->dn); + } + + $str ="
    ". + "  ". + " ". + "
    "; + return($str); + } + + + /* Get service information for serverService plugin */ + function getListEntry() + { + + $this->updateStatusState(); + + /* Assign status flag */ + if(!empty($this->StatusFlag)){ + $flag = $this->StatusFlag; + $fields['Status'] = $this->$flag; + }else{ + $fields['Status'] = ""; + } + + /* Name displayed in service overview */ + $fields['Message'] = _("Empty service"); + + /* Allow/disallow some functions */ + $sf = !empty($this->StatusFlag); + $fields['AllowStart'] = $sf && $this->acl_is_writeable("start"); + $fields['AllowStop'] = $sf && $this->acl_is_writeable("stop"); + $fields['AllowRestart'] = $sf && $this->acl_is_writeable("restart"); + $fields['AllowRemove'] = $this->acl_is_removeable(); + $fields['AllowEdit'] = $this->acl_is_readable(""); + return($fields); + } + + + /* Remove service */ + function remove_from_parent() + { + if(!$this->initially_was_account || !$this->acl_is_removeable()){ + return; + } + + plugin::remove_from_parent(); + + /* Remove status flag, it is not a memeber of + this->attributes, so ensure that it is deleted too */ + if(!empty($this->StatusFlag)){ + $this->attrs[$this->StatusFlag] = array(); + } + + /* Check if this is a new entry ... add/modify */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->cd($this->dn); + $ldap->add($this->attrs); + + } + + new log("remove","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + $this->handle_post_events("remove"); + } + + + /* Save service */ + function save() + { + plugin::save(); + /* Check if this is a new entry ... add/modify */ + $ldap = $this->config->get_ldap_link(); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + $ldap->cd($this->dn); + $ldap->modify($this->attrs); + }else{ + $ldap->cd($this->dn); + $ldap->add($this->attrs); + } + if($this->initially_was_account){ + new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + $this->handle_post_events("modify"); + }else{ + $this->handle_post_events("add"); + new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); + } + } + + + /* Directly save new status flag */ + function setStatus($value) + { + if($value == "none") return; + + /* Can't set status flag for new services (Object doesn't exists in ldap tree) */ + if(!$this->initially_was_account) return; + + /* Can't set status flag, if no flag is specified */ + if(empty($this->StatusFlag)){ + return; + } + + /* Get object (server), update status flag and save changes */ + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $ldap->cat($this->dn,array("objectClass")); + if($ldap->count()){ + + $tmp = $ldap->fetch(); + for($i = 0; $i < $tmp['objectClass']['count']; $i ++){ + $attrs['objectClass'][] = $tmp['objectClass'][$i]; + } + $flag = $this->StatusFlag; + $attrs[$flag] = $value; + $this->$flag = $value; + $ldap->modify($attrs); + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + $this->action_hook(); + } + } + + + function check() + { + $message = plugin::check(); + return($message); + } + + + function save_object() + { + plugin::save_object(); + } + + + function action_hook($add_attrs= array()) + { + /* Find postcreate entries for this class */ + $command= $this->config->search(get_class($this), "SERVICEACTIONHOOK",array('menu','tabs')); + if ($command != ""){ + + /* Walk through attribute list */ + foreach ($this->attributes as $attr){ + if (!is_array($this->$attr)){ + $command= preg_replace("/%$attr/", $this->$attr, $command); + } + } + $command= preg_replace("/%dn/", $this->dn, $command); + + /* Additional attributes */ + foreach ($add_attrs as $name => $value){ + $command= preg_replace("/%$name/", $value, $command); + } + + /* If there are still some %.. in our command, try to fill these with some other class vars */ + if(preg_match("/%/",$command)){ + $attrs = get_object_vars($this); + foreach($attrs as $name => $value){ + if(!is_string($value)) continue; + $command= preg_replace("/%$name/", $value, $command); + } + } + + if (check_command($command)){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, + $command, "Execute"); + + exec($command); + } else { + msg_dialog::display(_("Configuration error"), msgPool::cmdnotfound("SERVICEACTIONHOOK", get_class($this)), ERROR_DIALOG); + } + } + } + + + /* Get updates for status flag */ + function updateStatusState() + { + if(empty($this->StatusFlag)) return; + + $attrs = array(); + $flag = $this->StatusFlag; + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->cn); + $ldap->cat($this->dn,array($flag)); + if($ldap->count()){ + $attrs = $ldap->fetch(); + } + if(isset($attrs[$flag][0])){ + $this->$flag = $attrs[$flag][0]; + } + } +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/tabs_arpnewdevice.inc b/trunk/gosa-plugins/systems/admin/systems/tabs_arpnewdevice.inc new file mode 100644 index 000000000..31864833d --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/tabs_arpnewdevice.inc @@ -0,0 +1,39 @@ +by_object[$this->current]->execute()); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/tabs_component.inc b/trunk/gosa-plugins/systems/admin/systems/tabs_component.inc new file mode 100644 index 000000000..dc0d743b0 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/tabs_component.inc @@ -0,0 +1,69 @@ +addSpecialTabs(); + } + + function save_object($save_current= FALSE) + { + tabs::save_object($save_current); + + $baseobject = $this->by_object['componentGeneric']; + $baseobject->netConfigDNS->cn= $baseobject->cn; + } + + + function save($ignore_account= FALSE) + { + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + $baseobject= $this->by_object['componentGeneric']; + $this->dn= "cn=$baseobject->cn,".get_ou('componentRDN').$baseobject->base; + + if($this->dn != $baseobject->orig_dn && $baseobject->orig_dn != "new"){ + + /* Udpate acls */ + $baseobject->update_acls($baseobject->orig_dn,$this->dn); + $baseobject->move($baseobject->orig_dn,$this->dn); + } + + $baseobject->dn= $this->dn; + + foreach ($this->by_object as $key => $obj){ + $this->by_object[$key]->dn= $this->dn; + } + + tabs::save(TRUE); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/admin/systems/tabs_server.inc b/trunk/gosa-plugins/systems/admin/systems/tabs_server.inc new file mode 100644 index 000000000..39c030953 --- /dev/null +++ b/trunk/gosa-plugins/systems/admin/systems/tabs_server.inc @@ -0,0 +1,133 @@ +dn= $dn; + $this->config= $config; + + $baseobject= NULL; + + foreach ($data as $tab){ + + if(!class_available($tab['CLASS'])){ + continue; + } + + $this->by_name[$tab['CLASS']]= $tab['NAME']; + if ($baseobject === NULL){ + $baseobject= new $tab['CLASS']($this->config, $this->dn,NULL,$this); + $this->by_object[$tab['CLASS']]= $baseobject; + } else { + $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn, $baseobject,$this); + } + + $this->by_object[$tab['CLASS']]->parent= &$this; + $this->by_object[$tab['CLASS']]->set_acl_category($category); + $this->read_only |= $this->by_object[$tab['CLASS']]->read_only; + + /* Initialize current */ + if ($this->current == ""){ + $this->current= $tab['CLASS']; + } + } + + /* Add references/acls/snapshots */ + $this->addSpecialTabs(); + } + + + /*! \brief Reinitializes the tab classes with fresh ldap values. + This maybe usefull if for example the apply button was pressed. + */ + function re_init() + { + $baseobject= NULL; + foreach($this->by_object as $name => $object){ + $class = get_class($object); + if(in_array($class,array("reference","acl"))) continue; + if ($baseobject === NULL){ + $baseobject= new $class($this->config, $this->dn,NULL,$this); + $baseobject->enable_CSN_check(); + $this->by_object[$name]= $baseobject; + } else { + $this->by_object[$name]= new $class($this->config, $this->dn, $baseobject,$this); + } + $this->by_object[$name]->parent= &$this; + $this->by_object[$name]->set_acl_category($this->acl_category); + } + } + + + function save_object($save_current= FALSE) + { + tabs::save_object($save_current); + + $baseobject = $this->by_object['servgeneric']; + $baseobject->netConfigDNS->cn= $baseobject->cn; + } + + + function save($ignore_account= FALSE) + { + /* Check for new 'dn', in order to propagate the + 'dn' to all plugins */ + $baseobject= $this->by_object['servgeneric']; + $this->dn= "cn=$baseobject->cn,".get_ou('serverRDN').$baseobject->base; + + /* cn is not case sensitive for ldap, but for php it is!! */ + if($baseobject->orig_dn != "new"){ + if($this->config->get_cfg_value("accountPrimaryAttribute") == "cn"){ + if (strtolower($baseobject->orig_dn) != (strtolower($this->dn))){ + $baseobject->recursive_move($baseobject->orig_dn, $this->dn); + } + }else{ + if ($baseobject->orig_dn != $this->dn){ + $baseobject->recursive_move($baseobject->orig_dn, $this->dn); + } + } + } + + $baseobject->dn= $this->dn; + + foreach ($this->by_object as $key => $obj){ + $this->by_object[$key]->dn= $this->dn; + $this->by_object[$key]->cn= $baseobject->cn; + } + + tabs::save(FALSE); + + /* Reload server settings after saving */ + $config = session::get('config'); + $config->load_servers(); + session::set('config',$config); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/WARNINGS b/trunk/gosa-plugins/systems/help/de/html/systems/WARNINGS new file mode 100644 index 000000000..5ae6e75ec --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/WARNINGS @@ -0,0 +1,3 @@ +No implementation found for style `fontenc' +No implementation found for style `graphicx' +There is no author for this document. diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/edit.png b/trunk/gosa-plugins/systems/help/de/html/systems/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b69f73fe3ed52ad616c4fbc6fca2679a9e8c1d GIT binary patch literal 946 zcmV;j15NyiP)!SI-Y;XMNwpXV^<{*aN^_Vx3-ct!@s`>bqi46H0{3;+Ry)quaBJ~J?XSj52m z8_4<2#PIAXBg0pVFh+JBcH2kypF44Kam~GP<{HE8o0k~?0tl-C3?KJ1F#oy8!0>~O z;s49O3@@au7-U_78NS`V&T#4b=bvxiykyw3V+~N@9|nK`V#22X|HH`)th}5I3|}}H z-hbp{_@d#*AS5Hjz|8QMfrW*Y;mV~eKvn;Mn2iA-fG}L}_r(bYW{z7x&A^!b#K7>5 zM~y+yA(Vmh|4#-!9$tnc2M;mayK^3>l9deH=U0|9du%fr$es{1a&N2Ofs^ zGM)^AQql}8zy!d^%*gQO^-E5WZXgx`Vs3x{Vu3~JPf*mnxX8f5{*Zz3k06l4&hY9x zJA-IYEW@ua9~gfB`pNL=<0l3tMkZjIVT8Gy7a)M(Uib&{(%&CIhBN~M2QR~y=T8~l z2wO97{9|VL`T7k|BO}8A2nZd^1@wcFmECVAWI1(5D0*HkP2*F7gh&7GP8B`2R8JGoxfHwbT z_$|Q8z{<`B^!tAXHa2DkW@Z)!E-p@{@TgdZTeog9+`n_30U&@_?%sL$VbzK?JRm1B zG6Q1=6j*LX{7Jy;#>&w?K3pF07*qoM6N<$g5Dym0RR91 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/index.html b/trunk/gosa-plugins/systems/help/de/html/systems/index.html new file mode 100644 index 000000000..4d280250e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/index.html @@ -0,0 +1,124 @@ + + + + + +Systemverwaltung + + + + + + + + + + + + + + + +

    + +

    +

    Systemverwaltung

    +

    +
    + +

    +


    + + + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/labels.pl b/trunk/gosa-plugins/systems/help/de/html/systems/labels.pl new file mode 100644 index 000000000..34bd4cc1b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/labels.pl @@ -0,0 +1,13 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate labels original text with physical files. + + +1; + + +# LaTeX2HTML 2002-2-1 (1.71) +# labels from external_latex_labels array. + + +1; + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/list_back.png b/trunk/gosa-plugins/systems/help/de/html/systems/list_back.png new file mode 100644 index 0000000000000000000000000000000000000000..f258c112f9ce54bfc898fa5e4a48b19a64f93a29 GIT binary patch literal 862 zcmV-k1EKthP)UmE}b0_#ac zK~#9!g_BKaTxA%ApYOYOX6}r4W;&BLGYO;#&0u1swVe{7wPaxzLe!OY;SW@V&}N~y zbm2k}3*C3+#emY53gV_NY*nlhp-tK(MQKOUke{Y@GR^d6?j)D_X6}!R(1ElCUwAh! z=bXhk?-4v>ietA72!;rQ0)zsBdEKv1OEfNure<}un zTCWM;{Z9AoFRxp#Ek7kt9J`fA$g8=|j)4=eraAh8Mk=8Jpjsi*cU{JR-C%C9vKIHt zZ~yt#$knz$actH^$Q#AI-20C-eyu~u*4Dt~Jm0qMBM&G~S^Z*H8^fuX2jrZaJ$ zhwA}GM7GIgyU8!pwYJI5rpJ%Bvp6b)jD@Dt>_4Idg{&!g=y>$*inYlA`An4ekL}tP z+u{B2(KjF?214ou35cezv0T+iB@O;>4)%c%TkZ=&sY5Vdb3;nios@opTsGvT-mP?J z7GY*-yTI%c=n@*9A{w|Wy6)GfJhfhvBA-UUrxydxyd&AaTX3)s#(#fI3emLyDZtRd zY1o@tzci!WpZ>PhedvSEWLzBX$p)ljimAB<&v)zWOlgc9fa|wyIuZ>shGK`Is5>^Q zcJGHha^ialp!@b0l}dR&8aU*W4f4qb7k*n~p{!UatM)CQY!D3`Dyt7xa^AJGK(+nK zuZ&*mZ$`SV94Mss4DL1&Vp~lJ!;sSQ2D5YaO1?F5GB55-SeE5%Lk)j;zRQjDex67? z_ikS4UU oUCH{TnNEG_U!ZDPR`W6bKd~t^+_O;n=Kufz07*qoM6N<$f)k{b)&Kwi literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/list_home.png b/trunk/gosa-plugins/systems/help/de/html/systems/list_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e897341f1c4af5411b4e230690036d864b7b68f4 GIT binary patch literal 865 zcmV-n1D^beP)|6eU^D;#0`5sf zK~#9!b(7y~TXh)5Ki}{7Bt1DjNlfjUv~+d0nXMg_5v&*cQDH-b`2#_`(FDc-gBB23x7Hb=7VRU8M`QwQOn9kmMvi>q+uG$BVGQHhti|d!FZg zc^+QDe;_x1*Mwk}FvvnEASf8RaeKu%>pjaA&j@W0mr#+5GMY#pPPMTj9sVkr1b(e9 zwD+^2t6$x6-rj!BAUA(EgOJzLLoZH#dM3%KR}~3M0pPboet+PxaIMM4W@#^`iy!^^ z?YZkcgWUWb8zEP7(<76gziSeY82~KZb9>j#%_L~+fbXtUxw5ibvHklqOADVoQUJrV z7rsuXhu-__oQXi<`2njNP3C42oIDmMZYh@kXpo2*Odamy!LG83b>i>j)K!(cxN4&M ze){lK(o9(3`I@a=pWM-Y#xo{T3gVU`B;?Pn#{eW_9eyi>le*RX!2o8Xrkza1H04?V zz$>FBQ=>7Y>_%iL!D}z~^JuTdH`gp&KZWcIZMQXXLIT+VTT*sA?A1Gr4n}!nGTswE zfs%r^UQcm+ybk~wF%im#6^i=nPg&SS*`8VO0TivPcgYNi518+wfx^Y|kwYn70(ok-|K|Abi{r*OG z03Npj>YhdkO>j`%AJFS-a>Y683GFRNzsOj^Wh~)hN7_Au=|fef4^;t3nLbC7F48X& z>690TjIDJAQXQR54X)j;Mi2KWq_uMs z!m|25K9Y{wFT}f*)fzsV#n!&>RTtBpo0rq-?|Y8pxX*nfKt7+3{?j=&;;M-gLK;~? rC`I7y4CwW>A!F+yP;nfm^@RT~PvIf8Te$nK?6^OJ*kIrinHQMng4_5U*WGp<0UFM3gQHE=1aHT)Gl> z`X{&IRMKz{0-QyES^qmfQ%061RA%7(?2n{CSX4j;z- z{kH}mezsIB7DMd_{w;}+w`QkDrapT67!yMZ%XZm2G_gGhLcu^^gjb){Y1vw0ZC{-0 zs{GZtabaoz!}AwE85|rq_x@QOfy6W$^rtkYj^|OLOU?8#AB8w>$kU@SHV(8zr6p41 z@%8K4?4^>97W?AOlNmjofEaC_KQTfosRIz#qcp65UBkh0d@MU46Yp|+Go13>_EiPU zNA+YT8~3Ri9bSKJj35lTUTUyibx6b{wi^hjcZ41m=wi}J30v)sok z<83aS8Sly64?=_x2tW`@3BhL53RyGy`FZmww$slkMskXk-9BnfyGP)l=AtC{T?Y|Z zJ4$&*sp}+~QVeA_j3hT!9Zt{0`1D)Fhzuc|vj5s&W4{CodYXE2G;&wfF?An8x_C`{d*~j~1 z#G{gk66leCduy-5?KNX(*!%I~kSvz~O9NP0S>eoFvflJkUv1Y_YOCT-*^V2vy?{pB z<=(!@ufI1td;15)A@BPS{)StHLZSB?7Zw)CX0y?4cVet9pExB{;z^;!ToG71Ie+a= kUr?@^rfC43VzCIoUl;;lJtwtVUjP6A07*qoM6N<$g5ejSXaE2J literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/list_root.png b/trunk/gosa-plugins/systems/help/de/html/systems/list_root.png new file mode 100644 index 0000000000000000000000000000000000000000..56a6a5d3a97fbd666430a1f8130d8d8b8e4c705c GIT binary patch literal 852 zcmV-a1FQUrP)&ghCi$Wl@SqN?v z7cShWi_%qvf|q8cqN_q9LQ92OD%xpnGFE6}5;FN|oV2Dhb7yip_uoaxz_c!Ub_d?~ zcY2vQ2pxXw~W_Uo(U*Sl+p<0dMepJbm~=|<1b2j5)uI04Y|8uG5K?o`SQbmyZp*K zzkdD3^>#pEVn#zKcM31<9s2NOobE2QebxCN>i~RkQpfcJE?%i}rMR)F+4m3Mn0)^q z2{15n`ioR5`BtVMW|mwAQ!17naPeA$vtvnK8{Wm@x{d9G9NZUUVM8V=b-Ldy$g8q& z=1v?L`|j=IdOX`7^3iCLKg(NOF19#3mIUB&!)1Q`36||+wF2}mk3SZ}A>V0!qXHw* zxTg1Z`R%i>mE5+uQgt|Ysn$XMx78O=VxeX_gU3`L-=`@&GCic&X1ZerNcToNc7VHO zn79x}C~95>gyTzAHYHJ2@H|tPGR-1h8RT@h)0rxl-kAMoY7lA~D|&cWm_@YiaHDgzV&3J|oaTYdiQv{E!q zSi-j^6}v*F#{?kLV{+lADsvCq?Jk^x1N}Aj?>5QlCW>7l;ys#5s>|yVATvB#Y_@{Y z>>k;7>+dIMF%K=~aj$HVOGc?ReHI=x&|)4=%VKV6V{O2_@v)}V7TVNa9-kU?A_G^C z=JovtGa5p40u95E*_9?U^VPMqd-HT!+`nlUhS{NdW$fDlE0X;zk=XTKE)~^wcgFyz zHEhZiXUn##Qz`HFuTpa9o?#f~Gv5d>K0Y2@^$zVd<=`=)sChxCh`?Iw^Jk}%>he0U eX&8pHqyG=U>N9lRd(I620000(~PhH literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node1.html b/trunk/gosa-plugins/systems/help/de/html/systems/node1.html new file mode 100644 index 000000000..d6aa3443a --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node1.html @@ -0,0 +1,347 @@ + + + + + +Liste der Systeme + + + + + + + + + + + + + + + +

    +Liste der Systeme +

    + +

    +Die Liste der Systeme dient als Ausgangspunkt für alle weiteren Schritte. +Sie wird erreicht über den Menüeintrag Systeme +aus der Kategorie Administration (Menü am linken Rand des +Bildschirms). Auf dieser Seite können Systeme hinzugefügt, bearbeitet +oder entfernt werden. + +

    +Die Liste ist in zwei Spalten geteilt: + +

    + +

      +
    • Die erste Spalte enthält die Namen der Systeme +
    • +
    • Die zweite Spalte enthält Knöpfe für die möglichen Aktionen, um Verwaltungsaufgaben +durchzuführen (Root-Passwort setzen, Bearbeiten, Entfernen) +
    • +
    +Die vier Knöpfe Image list_root, Image list_back, +Image list_home, und Image list_reload +oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie: + +

    + +

      +
    • Image list_root: Zur Wurzel +
    • +
    • Image list_back: Eine Abteilung nach oben +
    • +
    • Image list_home: Zur Basis des angemeldeten Benutzers +
    • +
    • Image list_reload: Aktuelle Abteilung neu laden +
    • +
    +Es ist weiterhin möglich, die Anzeige der Abteilungen mithilfe von +Filtern zu beeinflussen (Kasten Filter Image rocket +am rechten Rand): + +

    + +

      +
    • Nach Namen suchen: +

      + +

        +
      • Klick auf * zeigt alle Systeme an +
      • +
      • Klick auf einen Buchstaben zeigt alle Systeme an, deren Name mit dem +gewählten Buchstaben beginnt +
      • +
      • Klick auf eine Ziffer zeigt alle Systeme an, deren Name mit der gewählten +Ziffer beginnt +
      • +
      +
    • +
    • Weitere Suchoptionen: +
      (Die folgenden Filter arbeiten so, dass nur Systeme angezeigt werden, +die über mindestens eine der ausgewählten Eigenschaften verfügen: +Standardmässig werden alle Systeme angezeigt) + +

      + +

        +
      • Zeige Server: +
      • +
      • Zeige Terminals: +
      • +
      • Zeige Arbeitsstationen: +
      • +
      • Zeige Windows basierte Arbeitsstationen: +
      • +
      • Zeige Netzwerk-Drucker: +
      • +
      • Zeige Telefone: +
      • +
      • Zeige Netzwerk-Geräte: +
      • +
      +
    • +
    • Schnellsuche Image search: Geben Sie eine Zeichenkette +in das Feld ein (die in dem/den System/en vorkommt, das/die Sie suchen) +und drücken Sie auf den Knopf Filter anwenden, um die Liste +auf Treffer zu beschränken. +
    • +
    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node10.html b/trunk/gosa-plugins/systems/help/de/html/systems/node10.html new file mode 100644 index 000000000..524ebb8d5 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node10.html @@ -0,0 +1,48 @@ + + + + + +Maus + + + + + + + + + + + + + + + +
    +Maus +
    + +

    + + + + + + + +
    TypDer Typ der Maus (Anschlussart).
    AnschlussDas Gerät dass den Anschluss repräsentiert (/dev/ttyS0 für COM1, /dev/ttyS1 +für COM2, /dev/psaux für PS/2 und /dev/input/mice für USB)
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node11.html b/trunk/gosa-plugins/systems/help/de/html/systems/node11.html new file mode 100644 index 000000000..cb32665e2 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node11.html @@ -0,0 +1,41 @@ + + + + + +Telefon-Hardware + + + + + + + + + + + + + + + +
    +Telefon-Hardware +
    + +

    +Wählen Sie das Telefon aus der Liste oder automatisch, wenn +das Telefon über den angemeldeten Benutzer ermittelt werden soll. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node12.html b/trunk/gosa-plugins/systems/help/de/html/systems/node12.html new file mode 100644 index 000000000..2bd057868 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node12.html @@ -0,0 +1,50 @@ + + + + + +Grafikkarte + + + + + + + + + + + + + + + +
    +Grafikkarte +
    + +

    + + + + + + + + + + +
    TreiberWählen Sie den Treiber für die Grafikkarte aus der Liste
    AuflösungWählen Sie die Auflösung des Monitors aus der Liste
    FarbtiefeWählen Sie die Farbtiefe der Darstellung aus der Liste
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node13.html b/trunk/gosa-plugins/systems/help/de/html/systems/node13.html new file mode 100644 index 000000000..65b91ae0c --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node13.html @@ -0,0 +1,50 @@ + + + + + +Anzeige + + + + + + + + + + + + + + + +
    +Anzeige +
    + +

    + + + + + + + + + + +
    Typ?
    HSyncDie horizontale Wiederholfrequenz der Anzeige in kHz
    VSyncDie vertikale Wiederholfrequenz der Anzeige in Hz
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node14.html b/trunk/gosa-plugins/systems/help/de/html/systems/node14.html new file mode 100644 index 000000000..e02449239 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node14.html @@ -0,0 +1,69 @@ + + + + + +Entfernte Arbeitsfläche + + + + + + + + + + + + + + + +
    +Entfernte Arbeitsfläche +
    + +

    + + + + + + + + + + +
    VerbindungsmethodeWählen Sie den Typ der Terminal-Verbindung: + +

    +Standard: X11 mit festem Server + +

    +zeige Auswahl: X11 mit Auswahl des Servers + +

    +direkt: X11 mit direkter Verbindung (XQuery) + +

    +lastverteilt: X11-Server mit geringster Last + +

    +Windows RDP: Windows Terminal-Server + +

    +Citrix Metaframe: Citrix Windows Terminal Server

    Terminal-ServerWählen Sie den Server aus der Liste, auf dem die entfernte Arbeitsfläche +bereitgestellt wird
    Schriften-ServerWählen Sie den Server aus der Liste, der die X11-Schriften bereitstellt.
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node15.html b/trunk/gosa-plugins/systems/help/de/html/systems/node15.html new file mode 100644 index 000000000..9f6906bf4 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node15.html @@ -0,0 +1,48 @@ + + + + + +Drucker + + + + + + + + + + + + + + + +
    +Drucker +
    + +

    + + + + + + + +
    Druckdienste bereitstellenWählen Sie diese Option, wenn das Terminal generell über Druckdienste +verfügen soll
    Spool-ServerWählen Sie den Spool-Server aus der Liste
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node16.html b/trunk/gosa-plugins/systems/help/de/html/systems/node16.html new file mode 100644 index 000000000..dd683ebe3 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node16.html @@ -0,0 +1,48 @@ + + + + + +Scanner + + + + + + + + + + + + + + + +
    +Scanner +
    + +

    + + + + + + + +
    Bilderfassungsdienste bereitstellenWählen Sie diese Option, wenn das Terminal generell über Scan-Dients +verfügen soll
    ModellWählen Sie den Scanner aus der Liste
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node17.html b/trunk/gosa-plugins/systems/help/de/html/systems/node17.html new file mode 100644 index 000000000..ea9dfc76b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node17.html @@ -0,0 +1,50 @@ + + + + + +Start + + + + + + + + + + + + + + + +

    +Start +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node18.html b/trunk/gosa-plugins/systems/help/de/html/systems/node18.html new file mode 100644 index 000000000..acdd44c54 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node18.html @@ -0,0 +1,66 @@ + + + + + +Boot-Parameter + + + + + + + + + + + + + + + +
    +Boot-Parameter +
    + +

    + + + + + + + + + + +
    LDAP serverWählen Sie den LDAP-Server aus der Liste, auf dem das Terminal konfiguriert +ist
    Boot-KernelDer Kernel, der gestartet werden soll
    Angepasste OptionenHier können Sie Terminal-spezifische Kerneloptionen eintragen, die +dem Kernel beim Start übergeben werden.
    + +

    + +

      +
    • Grafisches Booten nutzen: bei Auswahl wird das Terminal mit der grafischen +Variante gebootet, die weniger Meldungen anzeigt +
    • +
    • Standard Textmodus nutzen: bei Auswahl wird das Terminal mit der textbasierten +Variante gebootet +
    • +
    • benutze Fehlersuch-Modus: bei Auswahl wird das Terminal beim nächsten +Start in einem Modus gestartet, dass die Fehlersuche vereinfacht +
    • +
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node19.html b/trunk/gosa-plugins/systems/help/de/html/systems/node19.html new file mode 100644 index 000000000..2603a55d4 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node19.html @@ -0,0 +1,42 @@ + + + + + +Kernel Module (Format: Name Parameter) + + + + + + + + + + + + + + + +
    +Kernel Module (Format: Name Parameter) +
    + +

    +In der Liste werden Kernel-Module aufgeführt, die automatisch beim +Startvorgang geladen werden (Dies umfasst nur die Hardware, die nicht +automatisch erkannt wird). + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node2.html b/trunk/gosa-plugins/systems/help/de/html/systems/node2.html new file mode 100644 index 000000000..cd744f076 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node2.html @@ -0,0 +1,288 @@ + + + + + +Ein neues System erstellen + + + + + + + + + + + + + + + +

    +Ein neues System erstellen +

    + +

    + +

    +
    +Um ein neues System zu erstellen dienen die folgenden Knöpfe oberhalb +der Liste: + +

    + +

      +
    • Image select_new_terminal zum Erstellen eines +neues Terminals, +
    • +
    • Image select_new_workstation zum Erstellen einer +neuen Arbeitsstation, +
    • +
    • Image select_new_server zum Erstellen eines neuen +Servers, +
    • +
    • Image select_new_printer zum Erstellen eines neuen +Druckers, +
    • +
    • Image select_new_phone zum Erstellen eines neuen +Telefons, +
    • +
    • Image select_new_component zum Erstellen einer +neuen Netzwerkkomponente. +
    • +
    +Wenn Sie ein vorhandenes System bearbeiten möchten, klicken Sie auf +den Namen des Systems oder auf den Knopf Image edit. + +

    + + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node20.html b/trunk/gosa-plugins/systems/help/de/html/systems/node20.html new file mode 100644 index 000000000..a042e1939 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node20.html @@ -0,0 +1,40 @@ + + + + + +Freigaben + + + + + + + + + + + + + + + +
    +Freigaben +
    + +

    +? + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node21.html b/trunk/gosa-plugins/systems/help/de/html/systems/node21.html new file mode 100644 index 000000000..95cda3446 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node21.html @@ -0,0 +1,52 @@ + + + + + +Drucker + + + + + + + + + + + + + + + +

    +Drucker +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node22.html b/trunk/gosa-plugins/systems/help/de/html/systems/node22.html new file mode 100644 index 000000000..fbaff56b4 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node22.html @@ -0,0 +1,51 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +
    +Allgemein +
    + +

    + + + + + + + + + + +
    Druckername*Der eindeutige Name des Druckers
    BeschreibungEine kurze Beschreibung
    Basis*Wählen Sie aus der Liste die gewünschte Abteilung, in die der Drucker +eingefügt werden soll
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node23.html b/trunk/gosa-plugins/systems/help/de/html/systems/node23.html new file mode 100644 index 000000000..764947400 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node23.html @@ -0,0 +1,51 @@ + + + + + +Details + + + + + + + + + + + + + + + +
    +Details +
    + +

    + + + + + + + + + + +
    Drucker-StandortKurze Beschreibung, an welchem Ort der Drucker aufgestellt ist
    Drucker URLDie IPP-Adresse des Druckers
    TreiberDrücken Sie den Knopf Bearbeiten, um den passenden Druckertreiber +auszuwählen (und ggfs. hinzuzufügen)
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node24.html b/trunk/gosa-plugins/systems/help/de/html/systems/node24.html new file mode 100644 index 000000000..8a8eb850f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node24.html @@ -0,0 +1,63 @@ + + + + + +Berechtigungen + + + + + + + + + + + + + + + +
    +Berechtigungen +
    + +

    + +

      +
    • Benutzer mit Berechtigung, diesen Drucker zu nutzen +
    • +
    +In dieser Liste werden alle Benutzer aufgeführt, die den Drucker verwenden +dürfen. Um einen Benutzer hinzuzufügen, drücken Sie den Knopf Benutzer +hinzufügen. Um eine Gruppe hinzuzufügen, drücken Sie den Knopf Gruppe +hinzufügen. Um einen Benutzer oder eine Gruppe aus der Liste zu entfernen, +markieren Sie die entsprechenden Einträge in der Liste und drücken +Sie den Knopf Entfernen. + +

    + +

      +
    • Benutzer mit Berechtigung, diesen Drucker zu verwalten +
    • +
    +In dieser Liste werden alle Benutzer aufgeführt, die die Drucker-Einstellungen +verändern dürfen. Um einen Benutzer hinzuzufügen, drücken Sie den +Knopf Benutzer hinzufügen. Um eine Gruppe hinzuzufügen, drücken +Sie den Knopf Gruppe hinzufügen. Um einen Benutzer oder eine +Gruppe aus der Liste zu entfernen, markieren Sie die entsprechenden +Einträge in der Liste und drücken Sie den Knopf Entfernen. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node25.html b/trunk/gosa-plugins/systems/help/de/html/systems/node25.html new file mode 100644 index 000000000..0f4b49336 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node25.html @@ -0,0 +1,47 @@ + + + + + +Netzwerk-Einstellungen + + + + + + + + + + + + + + + +
    +Netzwerk-Einstellungen +
    + +

    + + + + + + + +
    IP-AdresseDie IP-Adresse des Druckers
    MAC-AdresseDie MAC-Adresse des Druckers
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node26.html b/trunk/gosa-plugins/systems/help/de/html/systems/node26.html new file mode 100644 index 000000000..7d554e9f2 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node26.html @@ -0,0 +1,44 @@ + + + + + +Referenzen + + + + + + + + + + + + + + + +

    +Referenzen +

    + +

    +Unter Referenzen werden alle Verbindungen dieses Druckers zu +anderen Objekten im LDAP angezeigt. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node27.html b/trunk/gosa-plugins/systems/help/de/html/systems/node27.html new file mode 100644 index 000000000..3587d9f14 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node27.html @@ -0,0 +1,104 @@ + + + + + +Arbeitsstation konfigurieren + + + + + + + + + + + + + + + +

    +Arbeitsstation konfigurieren +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node28.html b/trunk/gosa-plugins/systems/help/de/html/systems/node28.html new file mode 100644 index 000000000..f9b8e816f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node28.html @@ -0,0 +1,50 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +

    +Allgemein +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node29.html b/trunk/gosa-plugins/systems/help/de/html/systems/node29.html new file mode 100644 index 000000000..b57749c03 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node29.html @@ -0,0 +1,65 @@ + + + + + +Eigenschaften + + + + + + + + + + + + + + + +
    +Eigenschaften +
    + +

    + + + + + + + + + + + + + + + + + + + +
    Name der ArbeitsstationDer eindeutige Name der Arbeitsstation
    OrtDer Ort, an dem die Arbeitsstation steht
    Basis*Wählen Sie die Abteilung aus der Liste, zu der die Arbeitsstation +zugeordnet wird
    ModusWählen Sie den Modus aus der Liste: Gesperrt deaktiviert die +Anmeldung, Aktiv lässt die Anmeldung zu
    Protokoll-ServerDer Syslog-Server, der verwendet werden soll, um Protokolle dieser +Arbeitsstation aufzuzeichnen.
    Zeit-ServerWählen Sie Zeit-Server-Attribute übernehmen, um die Einstellungen +von der Vorlage zu übernehmen. Ansonsten können Sie den oder die gewünschten +Server aus der Liste wählen und mit Hinzufügen in die Liste +aufnehmen.
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node3.html b/trunk/gosa-plugins/systems/help/de/html/systems/node3.html new file mode 100644 index 000000000..19c0da203 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node3.html @@ -0,0 +1,102 @@ + + + + + +Terminal konfigurieren + + + + + + + + + + + + + + + +

    +Terminal konfigurieren +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node30.html b/trunk/gosa-plugins/systems/help/de/html/systems/node30.html new file mode 100644 index 000000000..df444379b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node30.html @@ -0,0 +1,47 @@ + + + + + +Netzwerk-Einstellungen + + + + + + + + + + + + + + + +
    +Netzwerk-Einstellungen +
    + +

    + + + + + + + +
    IP-AdresseDie IP-Adresse dieser Arbeitsstation
    MAC-AdresseDie MAC-Adresse dieser Arbeitsstation
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node31.html b/trunk/gosa-plugins/systems/help/de/html/systems/node31.html new file mode 100644 index 000000000..17066dd64 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node31.html @@ -0,0 +1,59 @@ + + + + + +Aktion + + + + + + + + + + + + + + + +
    +Aktion +
    + +

    +Wählen Sie gewünschte Aktion aus der Liste und drücken Sie den Knopf +Ausführen, um die Aktion unverzüglich durchzuführen. Die folgenden +Aktionen stehen zur Verfügung: + +

    + +

      +
    • Aufwecken: Schaltet die Arbeitsstation ein. +
    • +
    • Neu-Installation: Beim nächsten Neustart wird das Betriebssystem +neu installiert. +
    • +
    • Geplantes Update: ? +
    • +
    • Speichertest: Beim nächsten Neustart wird ein Speichertest +gestartet +
    • +
    • Systemanalyse: ? +
    • +
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node32.html b/trunk/gosa-plugins/systems/help/de/html/systems/node32.html new file mode 100644 index 000000000..07f0cda94 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node32.html @@ -0,0 +1,56 @@ + + + + + +Geräte + + + + + + + + + + + + + + + +

    +Geräte +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node33.html b/trunk/gosa-plugins/systems/help/de/html/systems/node33.html new file mode 100644 index 000000000..77898e8ff --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node33.html @@ -0,0 +1,50 @@ + + + + + +Tastatur + + + + + + + + + + + + + + + +
    +Tastatur +
    + +

    + + + + + + + + + + +
    ModellDas Modell der angeschlossenen Tastatur
    LayoutDie Sprache der Tastatur.
    VarianteDie Variante (z.B. nodeadkeys) der Tastatur.
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node34.html b/trunk/gosa-plugins/systems/help/de/html/systems/node34.html new file mode 100644 index 000000000..8c08277a6 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node34.html @@ -0,0 +1,48 @@ + + + + + +Maus + + + + + + + + + + + + + + + +
    +Maus +
    + +

    + + + + + + + +
    TypDer Typ der Maus (Anschlussart).
    AnschlussDas Gerät dass den Anschluss repräsentiert (/dev/ttyS0 für COM1, /dev/ttyS1 +für COM2, /dev/psaux für PS/2 und /dev/input/mice für USB)
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node35.html b/trunk/gosa-plugins/systems/help/de/html/systems/node35.html new file mode 100644 index 000000000..503fe3fbd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node35.html @@ -0,0 +1,41 @@ + + + + + +Telefon-Hardware + + + + + + + + + + + + + + + +
    +Telefon-Hardware +
    + +

    +Wählen Sie das Telefon aus der Liste oder automatisch, wenn +das Telefon über den angemeldeten Benutzer ermittelt werden soll. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node36.html b/trunk/gosa-plugins/systems/help/de/html/systems/node36.html new file mode 100644 index 000000000..ffe5a7375 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node36.html @@ -0,0 +1,50 @@ + + + + + +Grafikkarte + + + + + + + + + + + + + + + +
    +Grafikkarte +
    + +

    + + + + + + + + + + +
    TreiberWählen Sie den Treiber für die Grafikkarte aus der Liste
    AuflösungWählen Sie die Auflösung des Monitors aus der Liste
    FarbtiefeWählen Sie die Farbtiefe der Darstellung aus der Liste
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node37.html b/trunk/gosa-plugins/systems/help/de/html/systems/node37.html new file mode 100644 index 000000000..cb1bb76c2 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node37.html @@ -0,0 +1,54 @@ + + + + + +Anzeige + + + + + + + + + + + + + + + +
    +Anzeige +
    + +

    + + + + + + + + + + + + + +
    Typ?
    Automatische ModelinesWählen Sie diese Option, wenn die Modelines automatisch erzeugt werden +sollen.
    HSyncDie horizontale Wiederholfrequenz der Anzeige in kHz
    VSyncDie vertikale Wiederholfrequenz der Anzeige in Hz
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node38.html b/trunk/gosa-plugins/systems/help/de/html/systems/node38.html new file mode 100644 index 000000000..a968b437a --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node38.html @@ -0,0 +1,45 @@ + + + + + +Scanner + + + + + + + + + + + + + + + +
    +Scanner +
    + +

    + + + + +
    Bilderfassungsdienste bereitstellenWählen Sie diese Option, wenn ein angeschlossener Scanner verwendet +werden soll.
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node39.html b/trunk/gosa-plugins/systems/help/de/html/systems/node39.html new file mode 100644 index 000000000..1889334be --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node39.html @@ -0,0 +1,56 @@ + + + + + +Start + + + + + + + + + + + + + + + +

    +Start +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node4.html b/trunk/gosa-plugins/systems/help/de/html/systems/node4.html new file mode 100644 index 000000000..7aa968336 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node4.html @@ -0,0 +1,50 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +

    +Allgemein +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node40.html b/trunk/gosa-plugins/systems/help/de/html/systems/node40.html new file mode 100644 index 000000000..56f0ef740 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node40.html @@ -0,0 +1,52 @@ + + + + + +Boot-Parameter + + + + + + + + + + + + + + + +
    +Boot-Parameter +
    + +

    + + + + + + + + + + +
    LDAP serverWählen Sie den LDAP-Server, auf dem diese Arbeitsstation konfiguriert +ist.
    Boot-KernelWählen Sie den Kernel, mit dem die Arbeitsstation gestartet werden +soll.
    Angepasste OptionenGeben Sie optional zusätzliche Argumente für den Kernel an
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node41.html b/trunk/gosa-plugins/systems/help/de/html/systems/node41.html new file mode 100644 index 000000000..a59acc2d2 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node41.html @@ -0,0 +1,40 @@ + + + + + +FAI-Server + + + + + + + + + + + + + + + +
    +FAI-Server +
    + +

    +Wählen Sie den FAI-Server, der verwendet werden soll + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node42.html b/trunk/gosa-plugins/systems/help/de/html/systems/node42.html new file mode 100644 index 000000000..98839bbf2 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node42.html @@ -0,0 +1,40 @@ + + + + + +Release + + + + + + + + + + + + + + + +
    +Release +
    + +

    +Wählen Sie das Release des Betriebssystems. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node43.html b/trunk/gosa-plugins/systems/help/de/html/systems/node43.html new file mode 100644 index 000000000..f7dfa8267 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node43.html @@ -0,0 +1,40 @@ + + + + + +Zugewiesene FAI-Klassen + + + + + + + + + + + + + + + +
    +Zugewiesene FAI-Klassen +
    + +

    +? + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node44.html b/trunk/gosa-plugins/systems/help/de/html/systems/node44.html new file mode 100644 index 000000000..177a03625 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node44.html @@ -0,0 +1,39 @@ + + + + + +Kernel-Module (Format: Name Parameter) + + + + + + + + + + + + + + + +
    +Kernel-Module (Format: Name Parameter) +
    + +

    +? +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node45.html b/trunk/gosa-plugins/systems/help/de/html/systems/node45.html new file mode 100644 index 000000000..62bfa82cd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node45.html @@ -0,0 +1,39 @@ + + + + + +Freigaben + + + + + + + + + + + + + + + +
    +Freigaben +
    + +

    +? +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node46.html b/trunk/gosa-plugins/systems/help/de/html/systems/node46.html new file mode 100644 index 000000000..0dba87a27 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node46.html @@ -0,0 +1,50 @@ + + + + + +Drucker + + + + + + + + + + + + + + + +

    +Drucker +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node47.html b/trunk/gosa-plugins/systems/help/de/html/systems/node47.html new file mode 100644 index 000000000..1adb63c6f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node47.html @@ -0,0 +1,51 @@ + + + + + +Details + + + + + + + + + + + + + + + +
    +Details +
    + +

    + + + + + + + + + + +
    Drucker-StandortKurze Beschreibung, an welchem Ort der Drucker aufgestellt ist
    Drucker URLDie IPP-Adresse des Druckers
    TreiberDrücken Sie den Knopf Bearbeiten, um den passenden Druckertreiber +auszuwählen (und ggfs. hinzuzufügen)
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node48.html b/trunk/gosa-plugins/systems/help/de/html/systems/node48.html new file mode 100644 index 000000000..6c0ec28d0 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node48.html @@ -0,0 +1,63 @@ + + + + + +Berechtigungen + + + + + + + + + + + + + + + +
    +Berechtigungen +
    + +

    + +

      +
    • Benutzer mit Berechtigung, diesen Drucker zu nutzen +
    • +
    +In dieser Liste werden alle Benutzer aufgeführt, die den Drucker verwenden +dürfen. Um einen Benutzer hinzuzufügen, drücken Sie den Knopf Benutzer +hinzufügen. Um eine Gruppe hinzuzufügen, drücken Sie den Knopf Gruppe +hinzufügen. Um einen Benutzer oder eine Gruppe aus der Liste zu entfernen, +markieren Sie die entsprechenden Einträge in der Liste und drücken +Sie den Knopf Entfernen. + +

    + +

      +
    • Benutzer mit Berechtigung, diesen Drucker zu verwalten +
    • +
    +In dieser Liste werden alle Benutzer aufgeführt, die die Drucker-Einstellungen +verändern dürfen. Um einen Benutzer hinzuzufügen, drücken Sie den +Knopf Benutzer hinzufügen. Um eine Gruppe hinzuzufügen, drücken +Sie den Knopf Gruppe hinzufügen. Um einen Benutzer oder eine +Gruppe aus der Liste zu entfernen, markieren Sie die entsprechenden +Einträge in der Liste und drücken Sie den Knopf Entfernen. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node49.html b/trunk/gosa-plugins/systems/help/de/html/systems/node49.html new file mode 100644 index 000000000..569d6907f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node49.html @@ -0,0 +1,47 @@ + + + + + +Netzwerk-Einstellungen + + + + + + + + + + + + + + + +
    +Netzwerk-Einstellungen +
    + +

    + + + + + + + +
    IP-AdresseDie IP-Adresse des Druckers
    MAC-AdresseDie MAC-Adresse des Druckers
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node5.html b/trunk/gosa-plugins/systems/help/de/html/systems/node5.html new file mode 100644 index 000000000..647d5ee8b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node5.html @@ -0,0 +1,70 @@ + + + + + +Eigenschaften + + + + + + + + + + + + + + + +
    +Eigenschaften +
    + +

    + + + + + + + + + + + + + + + + + + + + + + +
    Terminal-NameDer eindeutige Name dieses Terminals
    Basis*Wählen Sie aus der Liste die Abteilung, der das Terminal zugeordnet +werden soll.
    Root-ServerWählen Sie den Server, von dem das Root-Dateisystem eingebunden wird.
    Auslagerungs-ServerWählen Sie den Server, der für die Auslagerung von Speicher verwendet +wird.
    ModusWählen Sie den Startmodus des Terminals aus der Liste: grafisch +für die grafische Anmeldung, textuell für die textbasierte +Anmeldung und deaktiviert, um die Anmeldung zu deaktivieren.
    Protokoll-ServerDer Syslog-Server, der verwendet werden soll, um Protokolle dieses +Terminals aufzuzeichnen.
    Zeit-ServerWählen Sie Zeit-Server-Attribute übernehmen, um die Einstellungen +von der Vorlage zu übernehmen. Ansonsten können Sie den oder die gewünschten +Server aus der Liste wählen und mit Hinzufügen in die Liste +aufnehmen.
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node50.html b/trunk/gosa-plugins/systems/help/de/html/systems/node50.html new file mode 100644 index 000000000..fdb6e4c8a --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node50.html @@ -0,0 +1,44 @@ + + + + + +Information + + + + + + + + + + + + + + + +

    +Information +

    + +

    +Unter diesem Tab werden (wenn verfügbar) aktuelle Informationen der +Arbeitsstation angezeigt. +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node51.html b/trunk/gosa-plugins/systems/help/de/html/systems/node51.html new file mode 100644 index 000000000..f6365a70f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node51.html @@ -0,0 +1,44 @@ + + + + + +Referenzen + + + + + + + + + + + + + + + +

    +Referenzen +

    + +

    +Unter Referenzen werden alle Verbindungen dieser Arbeitsstation zu +anderen Objekten im LDAP aufgeführt. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node52.html b/trunk/gosa-plugins/systems/help/de/html/systems/node52.html new file mode 100644 index 000000000..1895fb42e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node52.html @@ -0,0 +1,63 @@ + + + + + +Server konfigurieren + + + + + + + + + + + + + + + +

    +Server konfigurieren +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node53.html b/trunk/gosa-plugins/systems/help/de/html/systems/node53.html new file mode 100644 index 000000000..21bedf128 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node53.html @@ -0,0 +1,50 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +

    +Allgemein +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node54.html b/trunk/gosa-plugins/systems/help/de/html/systems/node54.html new file mode 100644 index 000000000..0c66acd2f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node54.html @@ -0,0 +1,51 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +
    +Allgemein +
    + +

    + + + + + + + + + + +
    Servername*Eindeutiger Servername
    Basis*Wählen Sie die Abteilung aus der Liste, der der Server zugeordnet +werden sols
    BeschreibungKurze Beschreibung des Servers
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node55.html b/trunk/gosa-plugins/systems/help/de/html/systems/node55.html new file mode 100644 index 000000000..bcfbcb690 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node55.html @@ -0,0 +1,47 @@ + + + + + +Netzwerk-Einstellungen + + + + + + + + + + + + + + + +
    +Netzwerk-Einstellungen +
    + +

    + + + + + + + +
    IP-AdresseDie IP-Adresse des Servers
    MAC-AdresseDie MAC-Adresse des Servers
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node56.html b/trunk/gosa-plugins/systems/help/de/html/systems/node56.html new file mode 100644 index 000000000..d2bcb5dd9 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node56.html @@ -0,0 +1,39 @@ + + + + + +Aktionen + + + + + + + + + + + + + + + +
    +Aktionen +
    + +

    +? +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node57.html b/trunk/gosa-plugins/systems/help/de/html/systems/node57.html new file mode 100644 index 000000000..8d1e25c2e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node57.html @@ -0,0 +1,182 @@ + + + + + +Datenbanken + + + + + + + + + + + + + + + +

    +Datenbanken +

    + +

    +Dieser Reiter enthält die Datenbanken, auf die dieser Server zugreifen +muss. Es können, je nach Konfiguration, beliebig viele oder wenige +der angebotenen Möglichkeiten verwendet werden. + +

    +Im Moment können folgende Datenbank konfiguriert werden: + +

    + +

      +
    • Kerberos-Zugang vie kadmin + +

      + + + + + + + + + + +
      Kerberos RealmDie Realm der Kerberos-Datenbank (EXAMPLE.COM)
      AdministratorDer Benutzername des Adminstrators
      PasswortDas Passwort des Administrators
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • FAX-Datenbank + +

      + + + + + + + +
      FAX-DB BenutzerDer Name des Benutzers, der auf die Datenbank verbinden darf und über +ausreichende Rechte verfügt
      PasswortDas zugehörige Passwort des Benutzers
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Asterisk Verwaltung + +

      + + + + + + + + + + + + + +
      Asterisk- DB BenutzerDer Name des Benutzers für den Asterisk-Zugang
      PasswortDas zugehörige Passwort des Benutzers
      LandesvorwahlDie Vorwahl für das Land (z.B. 049 für Deutschland)
      OrtsvorwahlDie Vorwahl für den Ort (z.B. 02932 für Arnsberg)
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • IMAP-Administrationszugang + +

      + + + + + + + + + + + + + + + + +
      ServerbezeichnungDer Hostname des IMAP-Servers
      Verbindungs-URLEine spezielle URL in der Form '{Servername:Port/Optionen}'. Der +Port ist in der Regel 143 (für IMAPS 993). Als Option ist im Moment +nur 'notls' für Klartextverbindungen bekannt. + +

      +Hinweis: Die URL enthält geschweifte Klammern.

      AdministratorDer administrative Benutzer, der verwendet werden soll (IMAP- und +Sieve-Administrator)
      PasswortDas zugehörige Passwort
      Sieve-PortDer Port, auf dem der Sieve-Dienst angesprochen wird
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Protokoll-Datenbank + +

      + + + + + + + +
      Protokoll-DB BenutzerDer Name des Benutzers, der auf die Datenbank verbinden darf und über +ausreichende Rechte verfügt.
      PasswortDas zugehörige Passwort des Benutzers.
      + +

      +

    • +
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node58.html b/trunk/gosa-plugins/systems/help/de/html/systems/node58.html new file mode 100644 index 000000000..d6e90a8d6 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node58.html @@ -0,0 +1,170 @@ + + + + + +Dienste + + + + + + + + + + + + + + + +

    +Dienste +

    + +

    + +

      +
    • Freigaben +
      +Dieses Modul erlaubt es, beliebige Verzeichnisse dieses Servers über +verschiedene Protokolle (derzeit stehen NFS, Samba, netatalk sowie +NCP) zur Verfügung. + +

      + +

        +
      • Liste der Freigaben: Die Liste umfasst alle momentan definierten Freigaben +dieses Servers +
      • +
      • Freigabe hinzufügen: Um eine Freigabe hinzuzufügen, drücken Sie auf +den Knopf Hinzufügen unterhalb der Liste. Füllen Sie die folgenden +Felder: + + + + + + + + + + + + + + + + + + + + + +
        Name*Der eindeutige Name der Freigabe
        BeschreibungKurze Beschreibung der Freigabe
        PfadDer UNIX-Pfad der Freigabe (z.B. '/export')
        Volume (nur sichtbar bei Typ 'NCP')Geben Sie das Volume der Freigabe ein
        TypWählen Sie aus der Liste den Typ der Freigabe
        CodepageWählen Sie aus der Liste den Zeichensatz der Freigabe
        OptionGeben Sie in dieses Feld weitere Optionen dieser Freigabe ein
        +
        +Wenn Ihre Eingaben vollständig sind, drücken Sie zum Übernehmen der +Einstellungen den Knopf Speichern. +
      • +
      • Freigabe bearbeiten: Um eine bestehende Freigabe nachträglich zu bearbeiten, +markieren Sie diese in der Liste und drücken Sie den Knopf Bearbeiten. +Gehen Sie für die weiteren Schritte analog zu Freigabe hinzufügen +vor. +
      • +
      • Freigabe entfernen: Um eine bestehende Freigabe wieder zu entfernen, +markieren Sie diese in der Liste und drücken Sie den Knopf Entfernen +
      • +
      +
    • +
    + +

    +
    + + +

    + +

      +
    • Zeit-Dienst: +
      +Damit dieser Server seine Zeit mit externen NTP-Servern synchronisiert, +wird der Zeit-Dienst verwendet. Tragen Sie mindestens einen NTP-Server +ein. +
    • +
    + +

    +
    + + +

    + +

      +
    • LDAP-Dienst: +
      +Binden Sie diesen Server an Ihr LDAP-Verzeichnis, indem Sie einfach +die Basis eintragen. +
    • +
    +? +

    + +

    +
    + + +

    + +

      +
    • Terminal-Dienst +
    • +
    + + + + + + + +
    Anmeldung sperren (temporär)Sperrt die Anmeldung, ohne die Einstellungen zu verwerfen (sinnvoll +z.B. für Updates).
    Schrift-SuchpfadGeben Sie den Pfad zum Schrift-Server ein.
    + +

    + +

    +
    + + +

    + +

      +
    • Protokoll-Dienst +
    • +
    +? +

    + +

    +
    + + +

    + +

      +
    • Druck-Dienst +
    • +
    +? +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node59.html b/trunk/gosa-plugins/systems/help/de/html/systems/node59.html new file mode 100644 index 000000000..035266fa3 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node59.html @@ -0,0 +1,40 @@ + + + + + +Information + + + + + + + + + + + + + + + +

    +Information +

    + +

    +Dieser Reiter zeigt aktuelle Informationen über den Server an. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node6.html b/trunk/gosa-plugins/systems/help/de/html/systems/node6.html new file mode 100644 index 000000000..a11a62b69 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node6.html @@ -0,0 +1,47 @@ + + + + + +Netzwerk-Einstellungen + + + + + + + + + + + + + + + +
    +Netzwerk-Einstellungen +
    + +

    + + + + + + + +
    IP-AdresseDie IP-Adresse des Terminals
    MAC-AdresseDie MAC-Adresse des Terminals
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node60.html b/trunk/gosa-plugins/systems/help/de/html/systems/node60.html new file mode 100644 index 000000000..d3a51b7de --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node60.html @@ -0,0 +1,44 @@ + + + + + +Referenzen + + + + + + + + + + + + + + + +

    +Referenzen +

    + +

    +Unter Referenzen werden alle Verbindungen dieses Servers zu anderen +Objekten im LDAP-Verzeichnis aufgeführt. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node61.html b/trunk/gosa-plugins/systems/help/de/html/systems/node61.html new file mode 100644 index 000000000..0a49f5f7b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node61.html @@ -0,0 +1,59 @@ + + + + + +Drucker konfigurieren + + + + + + + + + + + + + + + +

    +Drucker konfigurieren +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node62.html b/trunk/gosa-plugins/systems/help/de/html/systems/node62.html new file mode 100644 index 000000000..133eeb79e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node62.html @@ -0,0 +1,52 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +

    +Allgemein +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node63.html b/trunk/gosa-plugins/systems/help/de/html/systems/node63.html new file mode 100644 index 000000000..29c3421ec --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node63.html @@ -0,0 +1,51 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +
    +Allgemein +
    + +

    + + + + + + + + + + +
    Druckername*Der eindeutige Name des Druckers
    BeschreibungKurze Beschreibung des Druckers
    Basis*Wählen Sie die Abteilung aus der Liste, der der Drucker zugeordnet +werden soll
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node64.html b/trunk/gosa-plugins/systems/help/de/html/systems/node64.html new file mode 100644 index 000000000..67a9a2efa --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node64.html @@ -0,0 +1,51 @@ + + + + + +Details + + + + + + + + + + + + + + + +
    +Details +
    + +

    + + + + + + + + + + +
    Drucker-StandortKurze Beschreibung, an welchem Ort der Drucker aufgestellt ist
    Drucker URLDie IPP-Adresse des Druckers
    TreiberDrücken Sie den Knopf Bearbeiten, um den passenden Druckertreiber +auszuwählen (und ggfs. hinzuzufügen)
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node65.html b/trunk/gosa-plugins/systems/help/de/html/systems/node65.html new file mode 100644 index 000000000..4ea25bd7e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node65.html @@ -0,0 +1,63 @@ + + + + + +Berechtigungen + + + + + + + + + + + + + + + +
    +Berechtigungen +
    + +

    + +

      +
    • Benutzer mit Berechtigung, diesen Drucker zu nutzen +
    • +
    +In dieser Liste werden alle Benutzer aufgeführt, die den Drucker verwenden +dürfen. Um einen Benutzer hinzuzufügen, drücken Sie den Knopf Benutzer +hinzufügen. Um eine Gruppe hinzuzufügen, drücken Sie den Knopf Gruppe +hinzufügen. Um einen Benutzer oder eine Gruppe aus der Liste zu entfernen, +markieren Sie die entsprechenden Einträge in der Liste und drücken +Sie den Knopf Entfernen. + +

    + +

      +
    • Benutzer mit Berechtigung, diesen Drucker zu verwalten +
    • +
    +In dieser Liste werden alle Benutzer aufgeführt, die die Drucker-Einstellungen +verändern dürfen. Um einen Benutzer hinzuzufügen, drücken Sie den +Knopf Benutzer hinzufügen. Um eine Gruppe hinzuzufügen, drücken +Sie den Knopf Gruppe hinzufügen. Um einen Benutzer oder eine +Gruppe aus der Liste zu entfernen, markieren Sie die entsprechenden +Einträge in der Liste und drücken Sie den Knopf Entfernen. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node66.html b/trunk/gosa-plugins/systems/help/de/html/systems/node66.html new file mode 100644 index 000000000..910ad6f9e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node66.html @@ -0,0 +1,47 @@ + + + + + +Netzwerk-Einstellungen + + + + + + + + + + + + + + + +
    +Netzwerk-Einstellungen +
    + +

    + + + + + + + +
    IP-AdresseDie IP-Adresse des Druckers
    MAC-AdresseDie MAC-Adresse des Druckers
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node67.html b/trunk/gosa-plugins/systems/help/de/html/systems/node67.html new file mode 100644 index 000000000..031c7a676 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node67.html @@ -0,0 +1,44 @@ + + + + + +Referenzen + + + + + + + + + + + + + + + +

    +Referenzen +

    + +

    +Unter Referenzen werden alle Verbindungen dieses Druckers zu anderen +Objekten im LDAP-Verzeichnis angezeigt. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node68.html b/trunk/gosa-plugins/systems/help/de/html/systems/node68.html new file mode 100644 index 000000000..5cc65c8b8 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node68.html @@ -0,0 +1,57 @@ + + + + + +Telefon konfigurieren + + + + + + + + + + + + + + + +

    +Telefon konfigurieren +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node69.html b/trunk/gosa-plugins/systems/help/de/html/systems/node69.html new file mode 100644 index 000000000..c26d57884 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node69.html @@ -0,0 +1,50 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +

    +Allgemein +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node7.html b/trunk/gosa-plugins/systems/help/de/html/systems/node7.html new file mode 100644 index 000000000..bf8a7341d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node7.html @@ -0,0 +1,43 @@ + + + + + +Aktion + + + + + + + + + + + + + + + +
    +Aktion +
    + +

    +Mit Hilfe des Aktionsmenüs können Terminals entfernt gestartet, neugestartet +und runtergefahren werden. Wählen Sie dazu einfach die durchzuführende +Aktion (Wenn das Terminal aus ist, umfasst die Liste lediglich die +Aktion Aufwecken) und drücken Sie auf den Knopf Ausführen. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node70.html b/trunk/gosa-plugins/systems/help/de/html/systems/node70.html new file mode 100644 index 000000000..f55682274 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node70.html @@ -0,0 +1,51 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +
    +Allgemein +
    + +

    + + + + + + + + + + +
    Telefon-Name*Der eindeutige Name des Telefons
    Basis*Wählen Sie die Abteilung aus der Liste, der das Telefon zugeordnet +werden soll.
    BeschreibungKurze Beschreibung des Telefons
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node71.html b/trunk/gosa-plugins/systems/help/de/html/systems/node71.html new file mode 100644 index 000000000..b815ac3e8 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node71.html @@ -0,0 +1,146 @@ + + + + + +Erweiterte Telefon-Einstellungen + + + + + + + + + + + + + + + +
    +Erweiterte Telefon-Einstellungen +
    + +

    + + + + +
    Telefon-Modell*Wählen Sie den grundlegenden Typ des Telefons
    + +

    + +

    +
    + + +

    + +

      +
    • Wenn Sie SIP gewählt haben, sind die folgenden Felder verfügbar: + +

      + + + + + + + + + + + + + +
      Modus* 
      DTMF-Modus 
      Standard IP-AdresseWählen Sie dynamisch, wenn das Telefon die IP-Adresse über +einen DHCP-Server beziehen soll. Anderenfalls werden die unten angegebenen +Einstellungen verwendet.
      Wartezeit bis Antwort 
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Wenn Sie IAX gewählt haben, sind die folgenden Felder verfügbar: + +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Modus*?
      Standard IP-AdresseGeben Sie dynamisch ein, wenn das Telefon die IP-Adresse über +einen DHCP-Server beziehen soll. Anderenfalls werden die unten angegebenen +Einstellungen verwendet.
      Wartezeit bis Antwort?
      AuthtypeAuthentifizierung
      Passwort?
      Konto-Identifikation?
      Leitungen zusammenfassen?
      Erlaube diesen Rechnern die VerbindungUtilisez le bouton Ajouter pour insérer le nom d'hôte pouvant se connecter. +Le bouton Supprimer sert à effacer le nom d'hôte sélectionné. ?
      Verbiete diesen Rechnern die VerbindungUtilisez le bouton Ajouter pour insérer le nom d'hôte ne pouvant pas +se connecter. Le bouton Supprimer sert à effacer le nom d'hôte sélectionné. +?
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Wenn Sie CAPI gewählt haben, ist das folgende Feld verfügbar: + +

      + + + + +
      MSNDie MSN des Telefons
      + +

      +

    • +
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node72.html b/trunk/gosa-plugins/systems/help/de/html/systems/node72.html new file mode 100644 index 000000000..b0ec55a0b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node72.html @@ -0,0 +1,47 @@ + + + + + +Netzwerk-Einstellungen + + + + + + + + + + + + + + + +
    +Netzwerk-Einstellungen +
    + +

    + + + + + + + +
    IP-Adresse*Die IP-Adresse des Telefons
    MAC-Adresse*Die MAC-Adresse des Telefons
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node73.html b/trunk/gosa-plugins/systems/help/de/html/systems/node73.html new file mode 100644 index 000000000..16f49bc29 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node73.html @@ -0,0 +1,44 @@ + + + + + +Referenzen + + + + + + + + + + + + + + + +

    +Referenzen +

    + +

    +Unter Referenzen werden alle Verbindungen dieses Telefons zu anderen +Objekten im LDAP-Verzeichnis aufgeführt. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node74.html b/trunk/gosa-plugins/systems/help/de/html/systems/node74.html new file mode 100644 index 000000000..07f45e3e1 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node74.html @@ -0,0 +1,53 @@ + + + + + +Netzwerkkomponente konfigurieren + + + + + + + + + + + + + + + +

    +Netzwerkkomponente konfigurieren +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node75.html b/trunk/gosa-plugins/systems/help/de/html/systems/node75.html new file mode 100644 index 000000000..60fd651aa --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node75.html @@ -0,0 +1,51 @@ + + + + + +Allgemein + + + + + + + + + + + + + + + +
    +Allgemein +
    + +

    + + + + + + + + + + +
    Gerätename*Der eindeutige Name der Netzwerkkomponente
    Basis*Wählen Sie die Abteilung aus der Liste, der die Komponente zugeordnet +werden soll.
    BeschreibungKurze Beschreibung des Geräts
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node76.html b/trunk/gosa-plugins/systems/help/de/html/systems/node76.html new file mode 100644 index 000000000..0cd02565a --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node76.html @@ -0,0 +1,47 @@ + + + + + +Netzwerk-Einstellungen + + + + + + + + + + + + + + + +
    +Netzwerk-Einstellungen +
    + +

    + + + + + + + +
    IP-Adresse*Die IP-Adresse der Netzwerkkomponente
    MAC-Adresse*Die MAC-Adresse der Netzwerkkomponente
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node77.html b/trunk/gosa-plugins/systems/help/de/html/systems/node77.html new file mode 100644 index 000000000..af5fc9386 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node77.html @@ -0,0 +1,39 @@ + + + + + +Referenzen + + + + + + + + + + + + + + + +

    +Referenzen +

    + +

    +Unter Referenzen werden alle Verbindungen dieser Netzwerkkomponente +zu anderen Objekten im LDAP-Verzeichnis aufgeführt. +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node78.html b/trunk/gosa-plugins/systems/help/de/html/systems/node78.html new file mode 100644 index 000000000..ea4dbfba4 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node78.html @@ -0,0 +1,51 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + +

    +About this document ... +

    + Systemverwaltung

    +This document was generated using the +LaTeX2HTML translator Version 2002-2-1 (1.71) +

    +Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
    +Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

    +The command line arguments were:
    + latex2html -no_navigation -dir ../html/systems/ systems.tex +

    +The translation was initiated by Jan Wenzel on 2008-03-13 +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node8.html b/trunk/gosa-plugins/systems/help/de/html/systems/node8.html new file mode 100644 index 000000000..b3e3568d5 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node8.html @@ -0,0 +1,60 @@ + + + + + +Geräte + + + + + + + + + + + + + + + +

    +Geräte +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/node9.html b/trunk/gosa-plugins/systems/help/de/html/systems/node9.html new file mode 100644 index 000000000..c796d0aca --- /dev/null +++ b/trunk/gosa-plugins/systems/help/de/html/systems/node9.html @@ -0,0 +1,50 @@ + + + + + +Tastatur + + + + + + + + + + + + + + + +
    +Tastatur +
    + +

    + + + + + + + + + + +
    ModellDas Modell der angeschlossenen Tastatur
    LayoutDie Sprache der Tastatur.
    VarianteDie Variante (z.B. nodeadkeys) der Tastatur.
    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/rocket.png b/trunk/gosa-plugins/systems/help/de/html/systems/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr6`%jf|2$4r$s+spf+u-Q>g|C~v${^~-@3D2KhAWzjp*~g402!Z zUHKi(9mVwYR{HU3yQ(XJdfgr7_kt7B*ZVg zlZA`E-HR!XFqoPrv4|=5q??46nDTS`=Vp~s9W4h#9%&XB{&YOW(>Ss1gowdH#>bK? z8Y|h_G_JnXKEGa!RbjKC&z^}6{xug8QpM!9)-qhxW!6-X$b8VxoWq_ay;SG)q^zy4 zl#WYx-skypq>N1rh_uAIJMX_g{(N)1i3HE2^Uo#sN-{sl`!nt7bPI-)m$;^1)Ml8r sPTcnHd4|#lq7}@qf*h7KXm7~hGi}kLyMEkXfZ@&H>FVdQ&MBb@00WM*LjV8( literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/select_new_phone.png b/trunk/gosa-plugins/systems/help/de/html/systems/select_new_phone.png new file mode 100644 index 0000000000000000000000000000000000000000..45714d175d5098439b9395d2ad740dd172177351 GIT binary patch literal 660 zcmV;F0&D$=P)ScHQP zVNsA?B5yl{8NpT%jR-T+VW~W7bLyOX=JxFA)8R2Gh_*L;;LR64Z{FYc`=dkzr4+?* z<)P)hc&==?T+y2_U_Jp0>s(f)3f!GoiNvt^^GqkZZ%K+H$)jhkV9NBX24^= zy`2oR&@%|!?oa?C@~_&wGJ=TsL?Xx@7oW`|?D4-cxHcyK<8^3aGLTN^{5Muy5bOp{ z0nNMepMj4MdV=ahDG}lRYqZrbp9V7NO)c^=Oj}nUnSzV0w85CC0Zs#f_x67DEW|+d zp#Zzag2gM33+=)19r6bnnVnz3#9=Q7yCE-l&fL^H-PK#}@nB{%xIEs?9!X6-4pnx5ZCB7` ukB=b4bo(13LTBgT2AscHtkU1M|HLl}ISjH0h?;Bw0000bO~EDAyA<{^6rx^a1=~Y^K=m;2QG9De zWspMjCgp?npo9YlUPFW}j6L|aU~}H(xIcD(eS5guysq%T;rsa>&iS0r_na@mS-ZHp zy1E^SM6NrI0|4mi>Vj#S&@>G*Gc(U6N&4t5plt*s6bc3V`};371BPM1Fbohv;Pd$c zZTbHYfH7t@PUyN0UDsh41~g3rA;f9V=i2TjrIdL)H{CQ%Se9j;t3VXRtE#H+4?>MJZuoeB#08 zuT3pm$+C0pHC%7l%F0R}z!f?jn|>1R4R;(KAHue5IP7%L{&yGL$;J)%8!^kWK;QcD z5D>@4#_nV7+gd^SqcEkauw(g{$+FC<)oP=gz}PlUF%w+8jTR;w8ymj`LFl2Bf>H{O z<3I=jAq3&C*MP)h05<`M4Glj5>;vg#B=d<+v{)=wgTY`=E|){OT!yNup1sWBMfxQ$ zybMHl-B5NC*aPzSawvaK)#%R7&hF6A(7@8t61KLs5R1jY^E?=1SiJSYqoCvxMCXC% zJ_gef_jsO4v literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/select_new_server.png b/trunk/gosa-plugins/systems/help/de/html/systems/select_new_server.png new file mode 100644 index 0000000000000000000000000000000000000000..84f65700a80e318827832736b1d104056fc7956a GIT binary patch literal 813 zcmV+|1JeA7P)GHhu{cUWMP-z>&em3^x@O$>{U>05Y#js^-w&G-iPHD$Pak`^swSa? z6zuGR>jD-6A4*FV&vmsnDy1iWoSl0W5q=K>T~-#o*3eMZTU#5KN(o#ac0CZq4z5@1 zXCV?5bi9yqq&hM-H#OgDjJd9>tK&U&bqQJ20H7pzfae1Ov;?al^g$?SKi3p1i#;^D zxR~)}{{ALEd$*yWMasf427~~uL1}3IPLi6E#EwE^Ep)$hQYobxWGDsi{P`}KyVt=7 ztw0w2*WQrSk4d!LfAty%l3B^A@e-`XkojaO^X08u_VVnIUC$f4zG>`^Ypfl>TI*Ol z%|2VFz|-upxNu=Ova$Zh$Ng`ef3xC|DBFL-kqE?NaQrg~>DPfX!0DogJHQeQW|956 zMm0BghI8|i6P{Nd7!!G>@_1bQwG9vcf#rukpz8A;2qxjgd7u<#UV)oGA^MPDwlsj& zirw9vk0x$>v%Z;6U1@A?j9B2Qse=wS3IPy{}wSqVNOv)5))HuHAp& zkG>skDkts0OcoZikah~f!5lmZq#Z0dduSJw(g-2G9{Xab`|4U-*Dw6=9)RdWSaNoc r2e2&W5Pb;opVxU%6ohFj4yOMF7(FZx`)`9&00000NkvXXu0mjf`d(&z literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/html/systems/select_new_terminal.png b/trunk/gosa-plugins/systems/help/de/html/systems/select_new_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..a218480c9b94f81f9b97efa4ca1d169d59a3baf3 GIT binary patch literal 776 zcmV+j1NZ!iP)ll$3Z}?l(^XPL`Uk`oEFDNKU6@T* zDj0O(&Wt-Lw9xLvMail~vM^@RR3fJBDhU*1Fh9nLouTpFcTX3S1XAV;2ktrC@0aiQ z+$*(O?c1rTscT^v+B8l1KMI8c0IG_J;GEN$nVFxbr>DOFc4T>Z`DLL{h}YKED3{B4 z?+*y<^&-O7))sLblgVTl8X6jIwOY??KA+cxg#~73XBiwEq?Zc-V+@T(gKD+P=;)|7 z#^eC3s%jKPwA*b~S66$I_t5Ed$Ye5XZ*ME00Cso4;^HE49HXlH1QFTqMTE`GO-4pW zs8lNZcWe*@0IaO6&}=q|q6lj(A_9PO4(A+6lCZI{L8sH{60Pk<6A^+Sz!-z~9_Jk1 zdsG$gJ>GkgB%$4IqpGOtfjwDc4AxqT#UiCriCiv67={>QP*t3ByxG~|)s1!jP2f&5 zJ@8USL=X|IwS-|vHk&1v%MnEpi&uVUsrH;x+Kpp?a(_Q3o}3LD*Vi8dSP`-1a+$HQ zF^a`v*TJDf+=_3(WFI_z$-{5{g2_J2>pWlnbQP_5-VPsoqw=@P+}zw!wOXz0*-g`w zPLkl#l%qeEU~&RD2^`-w{RglF_kZB__U&I~U|`_G@$vBq5y|>)IQN0-afQtDG=1^i z@PjLy21b7C@}Hi8XYi=-{i{zeU%t@u!+ZjteGFe~9aWuB)w`-XyIXg=vpNbK=_zmt zKJSwIROiwCbL&0z^+0t#P`CB2Y8?%F39Q3<`xo2)(c#t*4M-lIBlzb}SbB|guAv+A zm={gtE3!Qu?4p>56Cu2RA$q5#b=2J>y?89XS%UL`0Q?929y}*B`c6{-0000 ztyzu52#rt`_m&9m+yoK3sE9}x(TJus<4oJh%>A8vJ{L0?NA$o4?}6`q&%=8Z!0PJi zTOV9|@0w9!`pw}bq zXN&^0F=(av{kJx0rkI>8kj9C`iyok!2P;9)Q+3j-gU1P^=Uvm-Bcz2V*qW3Q3%D_t^y^>vHs) zFR|7l*8UUV8VAoc%+$)1D<#U69KP@JxqSkFbLrjDch;&U=D$6`>3aIcyF&`r*491| z5qZ$-%e_`te)*#*(m+INB3q1f6wgU^-IHv~lTPPoR~m={n3|e8vAn!|*%)PJ4%bgE zompC_R;%8zub+gs&jU{bPYs{@3Ah6v-b7tNF@6>o7tihN>^y3>+p@d6E6wJRWD61b zelSC#1CKKvP%IYfzVBBGg#yMHDxV%2BiI`(&A$)xcMxvMe+U3wtJPj#Sy@^CzYeFRKcUBq$^YrxWnW2tnXBYC)AU-gU5PW~Kwz0AC z-H{_Rl~$`I6BEU9z5cio5pLi9(Z2cDS#6cWXQeOhUAVCNBE;MO>L3hT!HpZ&Z{_n| zMJd-ge*D-;*L93BS~Z*P + + + + +Systemverwaltung + + + + + + + + + + + + + + + +

    + +

    +

    Systemverwaltung

    +

    +
    + +

    +


    + + + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/de/lyx-source/images/edit.png b/trunk/gosa-plugins/systems/help/de/lyx-source/images/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b69f73fe3ed52ad616c4fbc6fca2679a9e8c1d GIT binary patch literal 946 zcmV;j15NyiP)!SI-Y;XMNwpXV^<{*aN^_Vx3-ct!@s`>bqi46H0{3;+Ry)quaBJ~J?XSj52m z8_4<2#PIAXBg0pVFh+JBcH2kypF44Kam~GP<{HE8o0k~?0tl-C3?KJ1F#oy8!0>~O z;s49O3@@au7-U_78NS`V&T#4b=bvxiykyw3V+~N@9|nK`V#22X|HH`)th}5I3|}}H z-hbp{_@d#*AS5Hjz|8QMfrW*Y;mV~eKvn;Mn2iA-fG}L}_r(bYW{z7x&A^!b#K7>5 zM~y+yA(Vmh|4#-!9$tnc2M;mayK^3>l9deH=U0|9du%fr$es{1a&N2Ofs^ zGM)^AQql}8zy!d^%*gQO^-E5WZXgx`Vs3x{Vu3~JPf*mnxX8f5{*Zz3k06l4&hY9x zJA-IYEW@ua9~gfB`pNL=<0l3tMkZjIVT8Gy7a)M(Uib&{(%&CIhBN~M2QR~y=T8~l z2wO97{9|VL`T7k|BO}8A2nZd^1@wcFmECVAWI1(5D0*HkP2*F7gh&7GP8B`2R8JGoxfHwbT z_$|Q8z{<`B^!tAXHa2DkW@Z)!E-p@{@TgdZTeog9+`n_30U&@_?%sL$VbzK?JRm1B zG6Q1=6j*LX{7Jy;#>&w?K3pF07*qoM6N<$g5Dym0RR91 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/lyx-source/images/list_back.png b/trunk/gosa-plugins/systems/help/de/lyx-source/images/list_back.png new file mode 100644 index 0000000000000000000000000000000000000000..f258c112f9ce54bfc898fa5e4a48b19a64f93a29 GIT binary patch literal 862 zcmV-k1EKthP)UmE}b0_#ac zK~#9!g_BKaTxA%ApYOYOX6}r4W;&BLGYO;#&0u1swVe{7wPaxzLe!OY;SW@V&}N~y zbm2k}3*C3+#emY53gV_NY*nlhp-tK(MQKOUke{Y@GR^d6?j)D_X6}!R(1ElCUwAh! z=bXhk?-4v>ietA72!;rQ0)zsBdEKv1OEfNure<}un zTCWM;{Z9AoFRxp#Ek7kt9J`fA$g8=|j)4=eraAh8Mk=8Jpjsi*cU{JR-C%C9vKIHt zZ~yt#$knz$actH^$Q#AI-20C-eyu~u*4Dt~Jm0qMBM&G~S^Z*H8^fuX2jrZaJ$ zhwA}GM7GIgyU8!pwYJI5rpJ%Bvp6b)jD@Dt>_4Idg{&!g=y>$*inYlA`An4ekL}tP z+u{B2(KjF?214ou35cezv0T+iB@O;>4)%c%TkZ=&sY5Vdb3;nios@opTsGvT-mP?J z7GY*-yTI%c=n@*9A{w|Wy6)GfJhfhvBA-UUrxydxyd&AaTX3)s#(#fI3emLyDZtRd zY1o@tzci!WpZ>PhedvSEWLzBX$p)ljimAB<&v)zWOlgc9fa|wyIuZ>shGK`Is5>^Q zcJGHha^ialp!@b0l}dR&8aU*W4f4qb7k*n~p{!UatM)CQY!D3`Dyt7xa^AJGK(+nK zuZ&*mZ$`SV94Mss4DL1&Vp~lJ!;sSQ2D5YaO1?F5GB55-SeE5%Lk)j;zRQjDex67? z_ikS4UU oUCH{TnNEG_U!ZDPR`W6bKd~t^+_O;n=Kufz07*qoM6N<$f)k{b)&Kwi literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/lyx-source/images/list_home.png b/trunk/gosa-plugins/systems/help/de/lyx-source/images/list_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e897341f1c4af5411b4e230690036d864b7b68f4 GIT binary patch literal 865 zcmV-n1D^beP)|6eU^D;#0`5sf zK~#9!b(7y~TXh)5Ki}{7Bt1DjNlfjUv~+d0nXMg_5v&*cQDH-b`2#_`(FDc-gBB23x7Hb=7VRU8M`QwQOn9kmMvi>q+uG$BVGQHhti|d!FZg zc^+QDe;_x1*Mwk}FvvnEASf8RaeKu%>pjaA&j@W0mr#+5GMY#pPPMTj9sVkr1b(e9 zwD+^2t6$x6-rj!BAUA(EgOJzLLoZH#dM3%KR}~3M0pPboet+PxaIMM4W@#^`iy!^^ z?YZkcgWUWb8zEP7(<76gziSeY82~KZb9>j#%_L~+fbXtUxw5ibvHklqOADVoQUJrV z7rsuXhu-__oQXi<`2njNP3C42oIDmMZYh@kXpo2*Odamy!LG83b>i>j)K!(cxN4&M ze){lK(o9(3`I@a=pWM-Y#xo{T3gVU`B;?Pn#{eW_9eyi>le*RX!2o8Xrkza1H04?V zz$>FBQ=>7Y>_%iL!D}z~^JuTdH`gp&KZWcIZMQXXLIT+VTT*sA?A1Gr4n}!nGTswE zfs%r^UQcm+ybk~wF%im#6^i=nPg&SS*`8VO0TivPcgYNi518+wfx^Y|kwYn70(ok-|K|Abi{r*OG z03Npj>YhdkO>j`%AJFS-a>Y683GFRNzsOj^Wh~)hN7_Au=|fef4^;t3nLbC7F48X& z>690TjIDJAQXQR54X)j;Mi2KWq_uMs z!m|25K9Y{wFT}f*)fzsV#n!&>RTtBpo0rq-?|Y8pxX*nfKt7+3{?j=&;;M-gLK;~? rC`I7y4CwW>A!F+yP;nfm^@RT~PvIf8Te$nK?6^OJ*kIrinHQMng4_5U*WGp<0UFM3gQHE=1aHT)Gl> z`X{&IRMKz{0-QyES^qmfQ%061RA%7(?2n{CSX4j;z- z{kH}mezsIB7DMd_{w;}+w`QkDrapT67!yMZ%XZm2G_gGhLcu^^gjb){Y1vw0ZC{-0 zs{GZtabaoz!}AwE85|rq_x@QOfy6W$^rtkYj^|OLOU?8#AB8w>$kU@SHV(8zr6p41 z@%8K4?4^>97W?AOlNmjofEaC_KQTfosRIz#qcp65UBkh0d@MU46Yp|+Go13>_EiPU zNA+YT8~3Ri9bSKJj35lTUTUyibx6b{wi^hjcZ41m=wi}J30v)sok z<83aS8Sly64?=_x2tW`@3BhL53RyGy`FZmww$slkMskXk-9BnfyGP)l=AtC{T?Y|Z zJ4$&*sp}+~QVeA_j3hT!9Zt{0`1D)Fhzuc|vj5s&W4{CodYXE2G;&wfF?An8x_C`{d*~j~1 z#G{gk66leCduy-5?KNX(*!%I~kSvz~O9NP0S>eoFvflJkUv1Y_YOCT-*^V2vy?{pB z<=(!@ufI1td;15)A@BPS{)StHLZSB?7Zw)CX0y?4cVet9pExB{;z^;!ToG71Ie+a= kUr?@^rfC43VzCIoUl;;lJtwtVUjP6A07*qoM6N<$g5ejSXaE2J literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/lyx-source/images/list_root.png b/trunk/gosa-plugins/systems/help/de/lyx-source/images/list_root.png new file mode 100644 index 0000000000000000000000000000000000000000..56a6a5d3a97fbd666430a1f8130d8d8b8e4c705c GIT binary patch literal 852 zcmV-a1FQUrP)&ghCi$Wl@SqN?v z7cShWi_%qvf|q8cqN_q9LQ92OD%xpnGFE6}5;FN|oV2Dhb7yip_uoaxz_c!Ub_d?~ zcY2vQ2pxXw~W_Uo(U*Sl+p<0dMepJbm~=|<1b2j5)uI04Y|8uG5K?o`SQbmyZp*K zzkdD3^>#pEVn#zKcM31<9s2NOobE2QebxCN>i~RkQpfcJE?%i}rMR)F+4m3Mn0)^q z2{15n`ioR5`BtVMW|mwAQ!17naPeA$vtvnK8{Wm@x{d9G9NZUUVM8V=b-Ldy$g8q& z=1v?L`|j=IdOX`7^3iCLKg(NOF19#3mIUB&!)1Q`36||+wF2}mk3SZ}A>V0!qXHw* zxTg1Z`R%i>mE5+uQgt|Ysn$XMx78O=VxeX_gU3`L-=`@&GCic&X1ZerNcToNc7VHO zn79x}C~95>gyTzAHYHJ2@H|tPGR-1h8RT@h)0rxl-kAMoY7lA~D|&cWm_@YiaHDgzV&3J|oaTYdiQv{E!q zSi-j^6}v*F#{?kLV{+lADsvCq?Jk^x1N}Aj?>5QlCW>7l;ys#5s>|yVATvB#Y_@{Y z>>k;7>+dIMF%K=~aj$HVOGc?ReHI=x&|)4=%VKV6V{O2_@v)}V7TVNa9-kU?A_G^C z=JovtGa5p40u95E*_9?U^VPMqd-HT!+`nlUhS{NdW$fDlE0X;zk=XTKE)~^wcgFyz zHEhZiXUn##Qz`HFuTpa9o?#f~Gv5d>K0Y2@^$zVd<=`=)sChxCh`?Iw^Jk}%>he0U eX&8pHqyG=U>N9lRd(I620000(~PhH literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/lyx-source/images/rocket.png b/trunk/gosa-plugins/systems/help/de/lyx-source/images/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr6`%jf|2$4r$s+spf+u-Q>g|C~v${^~-@3D2KhAWzjp*~g402!Z zUHKi(9mVwYR{HU3yQ(XJdfgr7_kt7B*ZVg zlZA`E-HR!XFqoPrv4|=5q??46nDTS`=Vp~s9W4h#9%&XB{&YOW(>Ss1gowdH#>bK? z8Y|h_G_JnXKEGa!RbjKC&z^}6{xug8QpM!9)-qhxW!6-X$b8VxoWq_ay;SG)q^zy4 zl#WYx-skypq>N1rh_uAIJMX_g{(N)1i3HE2^Uo#sN-{sl`!nt7bPI-)m$;^1)Ml8r sPTcnHd4|#lq7}@qf*h7KXm7~hGi}kLyMEkXfZ@&H>FVdQ&MBb@00WM*LjV8( literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_phone.png b/trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_phone.png new file mode 100644 index 0000000000000000000000000000000000000000..45714d175d5098439b9395d2ad740dd172177351 GIT binary patch literal 660 zcmV;F0&D$=P)ScHQP zVNsA?B5yl{8NpT%jR-T+VW~W7bLyOX=JxFA)8R2Gh_*L;;LR64Z{FYc`=dkzr4+?* z<)P)hc&==?T+y2_U_Jp0>s(f)3f!GoiNvt^^GqkZZ%K+H$)jhkV9NBX24^= zy`2oR&@%|!?oa?C@~_&wGJ=TsL?Xx@7oW`|?D4-cxHcyK<8^3aGLTN^{5Muy5bOp{ z0nNMepMj4MdV=ahDG}lRYqZrbp9V7NO)c^=Oj}nUnSzV0w85CC0Zs#f_x67DEW|+d zp#Zzag2gM33+=)19r6bnnVnz3#9=Q7yCE-l&fL^H-PK#}@nB{%xIEs?9!X6-4pnx5ZCB7` ukB=b4bo(13LTBgT2AscHtkU1M|HLl}ISjH0h?;Bw0000bO~EDAyA<{^6rx^a1=~Y^K=m;2QG9De zWspMjCgp?npo9YlUPFW}j6L|aU~}H(xIcD(eS5guysq%T;rsa>&iS0r_na@mS-ZHp zy1E^SM6NrI0|4mi>Vj#S&@>G*Gc(U6N&4t5plt*s6bc3V`};371BPM1Fbohv;Pd$c zZTbHYfH7t@PUyN0UDsh41~g3rA;f9V=i2TjrIdL)H{CQ%Se9j;t3VXRtE#H+4?>MJZuoeB#08 zuT3pm$+C0pHC%7l%F0R}z!f?jn|>1R4R;(KAHue5IP7%L{&yGL$;J)%8!^kWK;QcD z5D>@4#_nV7+gd^SqcEkauw(g{$+FC<)oP=gz}PlUF%w+8jTR;w8ymj`LFl2Bf>H{O z<3I=jAq3&C*MP)h05<`M4Glj5>;vg#B=d<+v{)=wgTY`=E|){OT!yNup1sWBMfxQ$ zybMHl-B5NC*aPzSawvaK)#%R7&hF6A(7@8t61KLs5R1jY^E?=1SiJSYqoCvxMCXC% zJ_gef_jsO4v literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_server.png b/trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_server.png new file mode 100644 index 0000000000000000000000000000000000000000..84f65700a80e318827832736b1d104056fc7956a GIT binary patch literal 813 zcmV+|1JeA7P)GHhu{cUWMP-z>&em3^x@O$>{U>05Y#js^-w&G-iPHD$Pak`^swSa? z6zuGR>jD-6A4*FV&vmsnDy1iWoSl0W5q=K>T~-#o*3eMZTU#5KN(o#ac0CZq4z5@1 zXCV?5bi9yqq&hM-H#OgDjJd9>tK&U&bqQJ20H7pzfae1Ov;?al^g$?SKi3p1i#;^D zxR~)}{{ALEd$*yWMasf427~~uL1}3IPLi6E#EwE^Ep)$hQYobxWGDsi{P`}KyVt=7 ztw0w2*WQrSk4d!LfAty%l3B^A@e-`XkojaO^X08u_VVnIUC$f4zG>`^Ypfl>TI*Ol z%|2VFz|-upxNu=Ova$Zh$Ng`ef3xC|DBFL-kqE?NaQrg~>DPfX!0DogJHQeQW|956 zMm0BghI8|i6P{Nd7!!G>@_1bQwG9vcf#rukpz8A;2qxjgd7u<#UV)oGA^MPDwlsj& zirw9vk0x$>v%Z;6U1@A?j9B2Qse=wS3IPy{}wSqVNOv)5))HuHAp& zkG>skDkts0OcoZikah~f!5lmZq#Z0dduSJw(g-2G9{Xab`|4U-*Dw6=9)RdWSaNoc r2e2&W5Pb;opVxU%6ohFj4yOMF7(FZx`)`9&00000NkvXXu0mjf`d(&z literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_terminal.png b/trunk/gosa-plugins/systems/help/de/lyx-source/images/select_new_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..a218480c9b94f81f9b97efa4ca1d169d59a3baf3 GIT binary patch literal 776 zcmV+j1NZ!iP)ll$3Z}?l(^XPL`Uk`oEFDNKU6@T* zDj0O(&Wt-Lw9xLvMail~vM^@RR3fJBDhU*1Fh9nLouTpFcTX3S1XAV;2ktrC@0aiQ z+$*(O?c1rTscT^v+B8l1KMI8c0IG_J;GEN$nVFxbr>DOFc4T>Z`DLL{h}YKED3{B4 z?+*y<^&-O7))sLblgVTl8X6jIwOY??KA+cxg#~73XBiwEq?Zc-V+@T(gKD+P=;)|7 z#^eC3s%jKPwA*b~S66$I_t5Ed$Ye5XZ*ME00Cso4;^HE49HXlH1QFTqMTE`GO-4pW zs8lNZcWe*@0IaO6&}=q|q6lj(A_9PO4(A+6lCZI{L8sH{60Pk<6A^+Sz!-z~9_Jk1 zdsG$gJ>GkgB%$4IqpGOtfjwDc4AxqT#UiCriCiv67={>QP*t3ByxG~|)s1!jP2f&5 zJ@8USL=X|IwS-|vHk&1v%MnEpi&uVUsrH;x+Kpp?a(_Q3o}3LD*Vi8dSP`-1a+$HQ zF^a`v*TJDf+=_3(WFI_z$-{5{g2_J2>pWlnbQP_5-VPsoqw=@P+}zw!wOXz0*-g`w zPLkl#l%qeEU~&RD2^`-w{RglF_kZB__U&I~U|`_G@$vBq5y|>)IQN0-afQtDG=1^i z@PjLy21b7C@}Hi8XYi=-{i{zeU%t@u!+ZjteGFe~9aWuB)w`-XyIXg=vpNbK=_zmt zKJSwIROiwCbL&0z^+0t#P`CB2Y8?%F39Q3<`xo2)(c#t*4M-lIBlzb}SbB|guAv+A zm={gtE3!Qu?4p>56Cu2RA$q5#b=2J>y?89XS%UL`0Q?929y}*B`c6{-0000 ztyzu52#rt`_m&9m+yoK3sE9}x(TJus<4oJh%>A8vJ{L0?NA$o4?}6`q&%=8Z!0PJi zTOV9|@0w9!`pw}bq zXN&^0F=(av{kJx0rkI>8kj9C`iyok!2P;9)Q+3j-gU1P^=Uvm-Bcz2V*qW3Q3%D_t^y^>vHs) zFR|7l*8UUV8VAoc%+$)1D<#U69KP@JxqSkFbLrjDch;&U=D$6`>3aIcyF&`r*491| z5qZ$-%e_`te)*#*(m+INB3q1f6wgU^-IHv~lTPPoR~m={n3|e8vAn!|*%)PJ4%bgE zompC_R;%8zub+gs&jU{bPYs{@3Ah6v-b7tNF@6>o7tihN>^y3>+p@d6E6wJRWD61b zelSC#1CKKvP%IYfzVBBGg#yMHDxV%2BiI`(&A$)xcMxvMe+U3wtJPj#Sy@^CzYeFRKcUBq$^YrxWnW2tnXBYC)AU-gU5PW~Kwz0AC z-H{_Rl~$`I6BEU9z5cio5pLi9(Z2cDS#6cWXQeOhUAVCNBE;MO>L3hT!HpZ&Z{_n| zMJd-ge*D-;*L93BS~Z*P + + + + + +\begin_inset Text + +\layout Standard + +Terminal-Name +\end_inset + + +\begin_inset Text + +\layout Standard + +Der eindeutige Name dieses Terminals +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Basis +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie aus der Liste die Abteilung, der das Terminal zugeordnet werden + soll. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Root-Server +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Server, von dem das Root-Dateisystem eingebunden wird. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Auslagerungs-Server +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Server, der für die Auslagerung von Speicher verwendet wird. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Modus +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Startmodus des Terminals aus der Liste: +\emph on +grafisch +\emph default + für die grafische Anmeldung, +\emph on +textuell +\emph default + für die textbasierte Anmeldung und +\emph on +deaktiviert +\emph default +, um die Anmeldung zu deaktivieren. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Protokoll-Server +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Syslog-Server, der verwendet werden soll, um Protokolle dieses Terminals + aufzuzeichnen. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Zeit-Server +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie +\emph on +Zeit-Server-Attribute übernehmen +\emph default +, um die Einstellungen von der Vorlage zu übernehmen. + Ansonsten können Sie den oder die gewünschten Server aus der Liste wählen + und mit +\emph on +Hinzufügen +\emph default + in die Liste aufnehmen. +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Netzwerk-Einstellungen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IP-Adresse des Terminals +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die MAC-Adresse des Terminals +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Aktion +\layout Standard + +Mit Hilfe des Aktionsmenüs können Terminals entfernt gestartet, neugestartet + und runtergefahren werden. + Wählen Sie dazu einfach die durchzuführende Aktion (Wenn das Terminal aus + ist, umfasst die Liste lediglich die Aktion +\emph on +Aufwecken +\emph default +) und drücken Sie auf den Knopf +\emph on +Ausführen +\emph default +. +\layout Paragraph + +Geräte +\layout Subparagraph + +Tastatur +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Modell +\end_inset + + +\begin_inset Text + +\layout Standard + +Das Modell der angeschlossenen Tastatur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Layout +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Sprache der Tastatur. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Variante +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Variante (z.B. + nodeadkeys) der Tastatur. +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Maus +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Typ +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Typ der Maus (Anschlussart). +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Anschluss +\end_inset + + +\begin_inset Text + +\layout Standard + +Das Gerät dass den Anschluss repräsentiert (/dev/ttyS0 für COM1, /dev/ttyS1 + für COM2, /dev/psaux für PS/2 und /dev/input/mice für USB) +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Telefon-Hardware +\layout Standard + +Wählen Sie das Telefon aus der Liste oder +\emph on +automatisch +\emph default +, wenn das Telefon über den angemeldeten Benutzer ermittelt werden soll. +\layout Subparagraph + +Grafikkarte +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Treiber +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Treiber für die Grafikkarte aus der Liste +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Auflösung +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie die Auflösung des Monitors aus der Liste +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Farbtiefe +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie die Farbtiefe der Darstellung aus der Liste +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Anzeige +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Typ +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +HSync +\end_inset + + +\begin_inset Text + +\layout Standard + +Die horizontale Wiederholfrequenz der Anzeige in kHz +\end_inset + + + + +\begin_inset Text + +\layout Standard + +VSync +\end_inset + + +\begin_inset Text + +\layout Standard + +Die vertikale Wiederholfrequenz der Anzeige in Hz +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Entfernte Arbeitsfläche +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Verbindungsmethode +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Typ der Terminal-Verbindung: +\layout Standard + +Standard: X11 mit festem Server +\layout Standard + +zeige Auswahl: X11 mit Auswahl des Servers +\layout Standard + +direkt: X11 mit direkter Verbindung (XQuery) +\layout Standard + +lastverteilt: X11-Server mit geringster Last +\layout Standard + +Windows RDP: Windows Terminal-Server +\layout Standard + +Citrix Metaframe: Citrix Windows Terminal Server +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Terminal-Server +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Server aus der Liste, auf dem die entfernte Arbeitsfläche + bereitgestellt wird +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Schriften-Server +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Server aus der Liste, der die X11-Schriften bereitstellt. +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Drucker +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Druckdienste bereitstellen +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie diese Option, wenn das Terminal generell über Druckdienste verfügen + soll +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Spool-Server +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Spool-Server aus der Liste +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Scanner +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Bilderfassungsdienste bereitstellen +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie diese Option, wenn das Terminal generell über Scan-Dients verfügen + soll +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Modell +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Scanner aus der Liste +\end_inset + + + + +\end_inset + + +\layout Paragraph + +Start +\layout Subparagraph + +Boot-Parameter +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +LDAP server +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den LDAP-Server aus der Liste, auf dem das Terminal konfiguriert + ist +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Boot-Kernel +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Kernel, der gestartet werden soll +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Angepasste Optionen +\end_inset + + +\begin_inset Text + +\layout Standard + +Hier können Sie Terminal-spezifische Kerneloptionen eintragen, die dem Kernel + beim Start übergeben werden. +\end_inset + + + + +\end_inset + + +\layout Itemize + +Grafisches Booten nutzen: bei Auswahl wird das Terminal mit der grafischen + Variante gebootet, die weniger Meldungen anzeigt +\layout Itemize + +Standard Textmodus nutzen: bei Auswahl wird das Terminal mit der textbasierten + Variante gebootet +\layout Itemize + +benutze Fehlersuch-Modus: bei Auswahl wird das Terminal beim nächsten Start + in einem Modus gestartet, dass die Fehlersuche vereinfacht +\layout Subparagraph + +Kernel Module (Format: Name Parameter) +\layout Standard + +In der Liste werden Kernel-Module aufgeführt, die automatisch beim Startvorgang + geladen werden (Dies umfasst nur die Hardware, die nicht automatisch erkannt + wird). +\layout Subparagraph + +Freigaben +\layout Standard + +? +\layout Paragraph + +Drucker +\layout Subparagraph + +Allgemein +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Druckername +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Der eindeutige Name des Druckers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Beschreibung +\end_inset + + +\begin_inset Text + +\layout Standard + +Eine kurze Beschreibung +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Basis +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie aus der Liste die gewünschte Abteilung, in die der Drucker eingefügt + werden soll +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Details +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Drucker-Standort +\end_inset + + +\begin_inset Text + +\layout Standard + +Kurze Beschreibung, an welchem Ort der Drucker aufgestellt ist +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Drucker URL +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IPP-Adresse des Druckers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Treiber +\end_inset + + +\begin_inset Text + +\layout Standard + +Drücken Sie den Knopf Bearbeiten, um den passenden Druckertreiber auszuwählen + (und ggfs. + hinzuzufügen) +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Berechtigungen +\layout Itemize + +Benutzer mit Berechtigung, diesen Drucker zu nutzen +\layout Standard + +In dieser Liste werden alle Benutzer aufgeführt, die den Drucker verwenden + dürfen. + Um einen Benutzer hinzuzufügen, drücken Sie den Knopf +\emph on +Benutzer hinzufügen +\emph default +. + Um eine Gruppe hinzuzufügen, drücken Sie den Knopf +\emph on +Gruppe hinzufügen +\emph default +. + Um einen Benutzer oder eine Gruppe aus der Liste zu entfernen, markieren + Sie die entsprechenden Einträge in der Liste und drücken Sie den Knopf + +\emph on +Entfernen +\emph default +. +\layout Itemize + +Benutzer mit Berechtigung, diesen Drucker zu verwalten +\layout Standard + +In dieser Liste werden alle Benutzer aufgeführt, die die Drucker-Einstellungen + verändern dürfen. + Um einen Benutzer hinzuzufügen, drücken Sie den Knopf +\emph on +Benutzer hinzufügen +\emph default +. + Um eine Gruppe hinzuzufügen, drücken Sie den Knopf +\emph on +Gruppe hinzufügen +\emph default +. + Um einen Benutzer oder eine Gruppe aus der Liste zu entfernen, markieren + Sie die entsprechenden Einträge in der Liste und drücken Sie den Knopf + +\emph on +Entfernen +\emph default +. +\layout Subparagraph + +Netzwerk-Einstellungen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IP-Adresse des Druckers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die MAC-Adresse des Druckers +\end_inset + + + + +\end_inset + + +\layout Paragraph + +Referenzen +\layout Standard + +Unter +\emph on +Referenzen +\emph default + werden alle Verbindungen dieses Druckers zu anderen Objekten im LDAP angezeigt. +\layout Subsubsection +\pagebreak_top +Arbeitsstation konfigurieren +\layout Paragraph + +Allgemein +\layout Subparagraph + +Eigenschaften +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Name der Arbeitsstation +\end_inset + + +\begin_inset Text + +\layout Standard + +Der eindeutige Name der Arbeitsstation +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Ort +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Ort, an dem die Arbeitsstation steht +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Basis +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie die Abteilung aus der Liste, zu der die Arbeitsstation zugeordnet + wird +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Modus +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Modus aus der Liste: +\emph on +Gesperrt +\emph default + deaktiviert die Anmeldung, +\emph on +Aktiv +\emph default + lässt die Anmeldung zu +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Protokoll-Server +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Syslog-Server, der verwendet werden soll, um Protokolle dieser Arbeitsstatio +n aufzuzeichnen. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Zeit-Server +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie +\emph on +Zeit-Server-Attribute übernehmen +\emph default +, um die Einstellungen von der Vorlage zu übernehmen. + Ansonsten können Sie den oder die gewünschten Server aus der Liste wählen + und mit +\emph on +Hinzufügen +\emph default + in die Liste aufnehmen. +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Netzwerk-Einstellungen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IP-Adresse dieser Arbeitsstation +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die MAC-Adresse dieser Arbeitsstation +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Aktion +\layout Standard + +Wählen Sie gewünschte Aktion aus der Liste und drücken Sie den Knopf +\emph on +Ausführen +\emph default +, um die Aktion unverzüglich durchzuführen. + Die folgenden Aktionen stehen zur Verfügung: +\layout Itemize + + +\emph on +Aufwecken +\emph default +: Schaltet die Arbeitsstation ein. +\layout Itemize + + +\emph on +Neu-Installation +\emph default +: Beim nächsten Neustart wird das Betriebssystem neu installiert. +\layout Itemize + + +\emph on +Geplantes Update +\emph default +: ? +\layout Itemize + + +\emph on +Speichertest +\emph default +: Beim nächsten Neustart wird ein Speichertest gestartet +\layout Itemize + + +\emph on +Systemanalyse +\emph default +: ? +\layout Paragraph + +Geräte +\layout Subparagraph + +Tastatur +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Modell +\end_inset + + +\begin_inset Text + +\layout Standard + +Das Modell der angeschlossenen Tastatur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Layout +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Sprache der Tastatur. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Variante +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Variante (z.B. + nodeadkeys) der Tastatur. +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Maus +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Typ +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Typ der Maus (Anschlussart). +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Anschluss +\end_inset + + +\begin_inset Text + +\layout Standard + +Das Gerät dass den Anschluss repräsentiert (/dev/ttyS0 für COM1, /dev/ttyS1 + für COM2, /dev/psaux für PS/2 und /dev/input/mice für USB) +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Telefon-Hardware +\layout Standard + +Wählen Sie das Telefon aus der Liste oder +\emph on +automatisch +\emph default +, wenn das Telefon über den angemeldeten Benutzer ermittelt werden soll. +\layout Subparagraph + +Grafikkarte +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Treiber +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Treiber für die Grafikkarte aus der Liste +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Auflösung +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie die Auflösung des Monitors aus der Liste +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Farbtiefe +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie die Farbtiefe der Darstellung aus der Liste +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Anzeige +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Typ +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Automatische Modelines +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie diese Option, wenn die Modelines automatisch erzeugt werden sollen. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +HSync +\end_inset + + +\begin_inset Text + +\layout Standard + +Die horizontale Wiederholfrequenz der Anzeige in kHz +\end_inset + + + + +\begin_inset Text + +\layout Standard + +VSync +\end_inset + + +\begin_inset Text + +\layout Standard + +Die vertikale Wiederholfrequenz der Anzeige in Hz +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Scanner +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Bilderfassungsdienste bereitstellen +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie diese Option, wenn ein angeschlossener Scanner verwendet werden + soll. +\end_inset + + + + +\end_inset + + +\layout Paragraph + +Start +\layout Subparagraph + +Boot-Parameter +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +LDAP server +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den LDAP-Server, auf dem diese Arbeitsstation konfiguriert ist. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Boot-Kernel +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den Kernel, mit dem die Arbeitsstation gestartet werden soll. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Angepasste Optionen +\end_inset + + +\begin_inset Text + +\layout Standard + +Geben Sie optional zusätzliche Argumente für den Kernel an +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +FAI-Server +\layout Standard + +Wählen Sie den FAI-Server, der verwendet werden soll +\layout Subparagraph + +Release +\layout Standard + +Wählen Sie das Release des Betriebssystems. +\layout Subparagraph + +Zugewiesene FAI-Klassen +\layout Standard + +? +\layout Subparagraph + +Kernel-Module (Format: Name Parameter) +\layout Standard + + +\color red +? +\layout Subparagraph + +Freigaben +\layout Standard + + +\color red +? +\layout Paragraph + +Drucker +\layout Subparagraph + +Details +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Drucker-Standort +\end_inset + + +\begin_inset Text + +\layout Standard + +Kurze Beschreibung, an welchem Ort der Drucker aufgestellt ist +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Drucker URL +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IPP-Adresse des Druckers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Treiber +\end_inset + + +\begin_inset Text + +\layout Standard + +Drücken Sie den Knopf Bearbeiten, um den passenden Druckertreiber auszuwählen + (und ggfs. + hinzuzufügen) +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Berechtigungen +\layout Itemize + +Benutzer mit Berechtigung, diesen Drucker zu nutzen +\layout Standard + +In dieser Liste werden alle Benutzer aufgeführt, die den Drucker verwenden + dürfen. + Um einen Benutzer hinzuzufügen, drücken Sie den Knopf +\emph on +Benutzer hinzufügen +\emph default +. + Um eine Gruppe hinzuzufügen, drücken Sie den Knopf +\emph on +Gruppe hinzufügen +\emph default +. + Um einen Benutzer oder eine Gruppe aus der Liste zu entfernen, markieren + Sie die entsprechenden Einträge in der Liste und drücken Sie den Knopf + +\emph on +Entfernen +\emph default +. +\layout Itemize + +Benutzer mit Berechtigung, diesen Drucker zu verwalten +\layout Standard + +In dieser Liste werden alle Benutzer aufgeführt, die die Drucker-Einstellungen + verändern dürfen. + Um einen Benutzer hinzuzufügen, drücken Sie den Knopf +\emph on +Benutzer hinzufügen +\emph default +. + Um eine Gruppe hinzuzufügen, drücken Sie den Knopf +\emph on +Gruppe hinzufügen +\emph default +. + Um einen Benutzer oder eine Gruppe aus der Liste zu entfernen, markieren + Sie die entsprechenden Einträge in der Liste und drücken Sie den Knopf + +\emph on +Entfernen +\emph default +. +\layout Subparagraph + +Netzwerk-Einstellungen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IP-Adresse des Druckers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die MAC-Adresse des Druckers +\end_inset + + + + +\end_inset + + +\layout Paragraph + +Information +\layout Standard +\added_space_bottom medskip +Unter diesem Tab werden (wenn verfügbar) aktuelle Informationen der Arbeitsstati +on angezeigt. +\layout Paragraph + +Referenzen +\layout Standard + +Unter Referenzen werden alle Verbindungen dieser Arbeitsstation zu anderen + Objekten im LDAP aufgeführt. +\layout Subsubsection +\pagebreak_top +Server konfigurieren +\layout Paragraph + +Allgemein +\layout Subparagraph + +Allgemein +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Servername +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Eindeutiger Servername +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Basis +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie die Abteilung aus der Liste, der der Server zugeordnet werden + sols +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Beschreibung +\end_inset + + +\begin_inset Text + +\layout Standard + +Kurze Beschreibung des Servers +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Netzwerk-Einstellungen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IP-Adresse des Servers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die MAC-Adresse des Servers +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Aktionen +\layout Standard + + +\color red +? +\layout Paragraph + +Datenbanken +\layout Standard + +Dieser Reiter enthält die Datenbanken, auf die dieser Server zugreifen muss. + Es können, je nach Konfiguration, beliebig viele oder wenige der angebotenen + Möglichkeiten verwendet werden. +\layout Standard + +Im Moment können folgende Datenbank konfiguriert werden: +\layout Itemize + +Kerberos-Zugang vie kadmin +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Kerberos Realm +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Realm der Kerberos-Datenbank (EXAMPLE.COM) +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Administrator +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Benutzername des Adminstrators +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Passwort +\end_inset + + +\begin_inset Text + +\layout Standard + +Das Passwort des Administrators +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +FAX-Datenbank +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +FAX-DB Benutzer +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Name des Benutzers, der auf die Datenbank verbinden darf und über ausreichen +de Rechte verfügt +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Passwort +\end_inset + + +\begin_inset Text + +\layout Standard + +Das zugehörige Passwort des Benutzers +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +Asterisk Verwaltung +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Asterisk- DB Benutzer +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Name des Benutzers für den Asterisk-Zugang +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Passwort +\end_inset + + +\begin_inset Text + +\layout Standard + +Das zugehörige Passwort des Benutzers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Landesvorwahl +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Vorwahl für das Land (z.B. + 049 für Deutschland) +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Ortsvorwahl +\end_inset + + +\begin_inset Text + +\layout Standard + +Die Vorwahl für den Ort (z.B. + 02932 für Arnsberg) +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +IMAP-Administrationszugang +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Serverbezeichnung +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Hostname des IMAP-Servers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Verbindungs-URL +\end_inset + + +\begin_inset Text + +\layout Standard + +Eine spezielle URL in der Form '{Servername:Port/Optionen}'. + Der Port ist in der Regel 143 (für IMAPS 993). + Als Option ist im Moment nur 'notls' für Klartextverbindungen bekannt. +\layout Standard + +Hinweis: Die URL enthält geschweifte Klammern. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Administrator +\end_inset + + +\begin_inset Text + +\layout Standard + +Der administrative Benutzer, der verwendet werden soll (IMAP- und Sieve-Administ +rator) +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Passwort +\end_inset + + +\begin_inset Text + +\layout Standard + +Das zugehörige Passwort +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Sieve-Port +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Port, auf dem der Sieve-Dienst angesprochen wird +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +Protokoll-Datenbank +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Protokoll-DB Benutzer +\end_inset + + +\begin_inset Text + +\layout Standard + +Der Name des Benutzers, der auf die Datenbank verbinden darf und über ausreichen +de Rechte verfügt. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Passwort +\end_inset + + +\begin_inset Text + +\layout Standard + +Das zugehörige Passwort des Benutzers. +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Paragraph + +Dienste +\layout Itemize + +Freigaben +\newline +Dieses Modul erlaubt es, beliebige Verzeichnisse dieses Servers über verschieden +e Protokolle (derzeit stehen NFS, Samba, netatalk sowie NCP) zur Verfügung. +\begin_deeper +\layout Itemize + +Liste der Freigaben: Die Liste umfasst alle momentan definierten Freigaben + dieses Servers +\layout Itemize + +Freigabe hinzufügen: Um eine Freigabe hinzuzufügen, drücken Sie auf den + Knopf +\emph on +Hinzufügen +\emph default + unterhalb der Liste. + Füllen Sie die folgenden Felder: +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Name +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Der eindeutige Name der Freigabe +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Beschreibung +\end_inset + + +\begin_inset Text + +\layout Standard + +Kurze Beschreibung der Freigabe +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Pfad +\end_inset + + +\begin_inset Text + +\layout Standard + +Der UNIX-Pfad der Freigabe (z.B. + '/export') +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Volume (nur sichtbar bei Typ 'NCP') +\end_inset + + +\begin_inset Text + +\layout Standard + +Geben Sie das Volume der Freigabe ein +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Typ +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie aus der Liste den Typ der Freigabe +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Codepage +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie aus der Liste den Zeichensatz der Freigabe +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Option +\end_inset + + +\begin_inset Text + +\layout Standard + +Geben Sie in dieses Feld weitere Optionen dieser Freigabe ein +\end_inset + + + + +\end_inset + + +\newline +Wenn Ihre Eingaben vollständig sind, drücken Sie zum Übernehmen der Einstellunge +n den Knopf +\emph on +Speichern +\emph default +. +\layout Itemize + +Freigabe bearbeiten: Um eine bestehende Freigabe nachträglich zu bearbeiten, + markieren Sie diese in der Liste und drücken Sie den Knopf +\emph on +Bearbeiten +\emph default +. + Gehen Sie für die weiteren Schritte analog zu +\emph on +Freigabe hinzufügen +\emph default + vor. +\layout Itemize + +Freigabe entfernen: Um eine bestehende Freigabe wieder zu entfernen, markieren + Sie diese in der Liste und drücken Sie den Knopf +\emph on +Entfernen +\end_deeper +\layout Itemize +\added_space_top medskip +Zeit-Dienst: +\newline +Damit dieser Server seine Zeit mit externen NTP-Servern synchronisiert, + wird der Zeit-Dienst verwendet. + Tragen Sie mindestens einen NTP-Server ein. +\layout Itemize +\added_space_top medskip +LDAP-Dienst: +\newline +Binden Sie diesen Server an Ihr LDAP-Verzeichnis, indem Sie einfach die + Basis eintragen. +\layout Standard + + +\color red +? +\layout Itemize +\added_space_top medskip +Terminal-Dienst +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Anmeldung sperren (temporär) +\end_inset + + +\begin_inset Text + +\layout Standard + +Sperrt die Anmeldung, ohne die Einstellungen zu verwerfen (sinnvoll z.B. + für Updates). +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Schrift-Suchpfad +\end_inset + + +\begin_inset Text + +\layout Standard + +Geben Sie den Pfad zum Schrift-Server ein. +\end_inset + + + + +\end_inset + + +\layout Itemize +\added_space_top medskip +Protokoll-Dienst +\layout Standard + + +\color red +? +\layout Itemize +\added_space_top medskip +Druck-Dienst +\layout Standard + + +\color red +? +\layout Paragraph + +Information +\layout Standard + +Dieser Reiter zeigt aktuelle Informationen über den Server an. +\layout Paragraph + +Referenzen +\layout Standard + +Unter Referenzen werden alle Verbindungen dieses Servers zu anderen Objekten + im LDAP-Verzeichnis aufgeführt. +\layout Subsubsection +\pagebreak_top +Drucker konfigurieren +\layout Paragraph + +Allgemein +\layout Subparagraph + +Allgemein +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Druckername +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Der eindeutige Name des Druckers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Beschreibung +\end_inset + + +\begin_inset Text + +\layout Standard + +Kurze Beschreibung des Druckers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Basis +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie die Abteilung aus der Liste, der der Drucker zugeordnet werden + soll +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Details +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Drucker-Standort +\end_inset + + +\begin_inset Text + +\layout Standard + +Kurze Beschreibung, an welchem Ort der Drucker aufgestellt ist +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Drucker URL +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IPP-Adresse des Druckers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Treiber +\end_inset + + +\begin_inset Text + +\layout Standard + +Drücken Sie den Knopf Bearbeiten, um den passenden Druckertreiber auszuwählen + (und ggfs. + hinzuzufügen) +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Berechtigungen +\layout Itemize + +Benutzer mit Berechtigung, diesen Drucker zu nutzen +\layout Standard + +In dieser Liste werden alle Benutzer aufgeführt, die den Drucker verwenden + dürfen. + Um einen Benutzer hinzuzufügen, drücken Sie den Knopf +\emph on +Benutzer hinzufügen +\emph default +. + Um eine Gruppe hinzuzufügen, drücken Sie den Knopf +\emph on +Gruppe hinzufügen +\emph default +. + Um einen Benutzer oder eine Gruppe aus der Liste zu entfernen, markieren + Sie die entsprechenden Einträge in der Liste und drücken Sie den Knopf + +\emph on +Entfernen +\emph default +. +\layout Itemize + +Benutzer mit Berechtigung, diesen Drucker zu verwalten +\layout Standard + +In dieser Liste werden alle Benutzer aufgeführt, die die Drucker-Einstellungen + verändern dürfen. + Um einen Benutzer hinzuzufügen, drücken Sie den Knopf +\emph on +Benutzer hinzufügen +\emph default +. + Um eine Gruppe hinzuzufügen, drücken Sie den Knopf +\emph on +Gruppe hinzufügen +\emph default +. + Um einen Benutzer oder eine Gruppe aus der Liste zu entfernen, markieren + Sie die entsprechenden Einträge in der Liste und drücken Sie den Knopf + +\emph on +Entfernen +\emph default +. +\layout Subparagraph + +Netzwerk-Einstellungen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IP-Adresse des Druckers +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Die MAC-Adresse des Druckers +\end_inset + + + + +\end_inset + + +\layout Paragraph + +Referenzen +\layout Standard + +Unter Referenzen werden alle Verbindungen dieses Druckers zu anderen Objekten + im LDAP-Verzeichnis angezeigt. +\layout Subsubsection +\pagebreak_top +Telefon konfigurieren +\layout Paragraph + +Allgemein +\layout Subparagraph + +Allgemein +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + + +\color black +Telefon-Name +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Der eindeutige Name des Telefons +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Basis +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie die Abteilung aus der Liste, der das Telefon zugeordnet werden + soll. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Beschreibung +\end_inset + + +\begin_inset Text + +\layout Standard + +Kurze Beschreibung des Telefons +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Erweiterte Telefon-Einstellungen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Telefon-Modell +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie den grundlegenden Typ des Telefons +\end_inset + + + + +\end_inset + + +\layout Itemize +\added_space_top bigskip +Wenn Sie SIP gewählt haben, sind die folgenden Felder verfügbar: +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Modus +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +DTMF-Modus +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Standard IP-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie +\emph on +dynamisch +\emph default +, wenn das Telefon die IP-Adresse über einen DHCP-Server beziehen soll. + Anderenfalls werden die unten angegebenen Einstellungen verwendet. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Wartezeit bis Antwort +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top bigskip +Wenn Sie IAX gewählt haben, sind die folgenden Felder verfügbar: +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Modus +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Standard IP-Adresse +\end_inset + + +\begin_inset Text + +\layout Standard + +Geben Sie +\emph on +dynamisch +\emph default + ein, wenn das Telefon die IP-Adresse über einen DHCP-Server beziehen soll. + Anderenfalls werden die unten angegebenen Einstellungen verwendet. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Wartezeit bis Antwort +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Authtype +\end_inset + + +\begin_inset Text + +\layout Standard + +Authentifizierung +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Passwort +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Konto-Identifikation +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Leitungen zusammenfassen +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Erlaube diesen Rechnern die Verbindung +\end_inset + + +\begin_inset Text + +\layout Standard + +Utilisez le bouton Ajouter pour insérer le nom d'hôte pouvant se connecter. + Le bouton Supprimer sert à effacer le nom d'hôte sélectionné. + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Verbiete diesen Rechnern die Verbindung +\end_inset + + +\begin_inset Text + +\layout Standard + +Utilisez le bouton Ajouter pour insérer le nom d'hôte ne pouvant pas se + connecter. + Le bouton Supprimer sert à effacer le nom d'hôte sélectionné. + +\color red +? +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top bigskip +Wenn Sie CAPI gewählt haben, ist das folgende Feld verfügbar: +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +MSN +\end_inset + + +\begin_inset Text + +\layout Standard + +Die MSN des Telefons +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Subparagraph + +Netzwerk-Einstellungen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP +\color black +-Adresse +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IP-Adresse des Telefons +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC +\color black +-Adresse +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Die MAC-Adresse des Telefons +\end_inset + + + + +\end_inset + + +\layout Paragraph + +Referenzen +\layout Standard + +Unter Referenzen werden alle Verbindungen dieses Telefons zu anderen Objekten + im LDAP-Verzeichnis aufgeführt. +\layout Subsubsection +\pagebreak_top +Netzwerkkomponente konfigurieren +\layout Subparagraph + +Allgemein +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Gerätename +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Der eindeutige Name der Netzwerkkomponente +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Basis +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Wählen Sie die Abteilung aus der Liste, der die Komponente zugeordnet werden + soll. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Beschreibung +\end_inset + + +\begin_inset Text + +\layout Standard + +Kurze Beschreibung des Geräts +\end_inset + + + + +\end_inset + + +\layout Subparagraph + +Netzwerk-Einstellungen +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP +\color black +-Adresse +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Die IP-Adresse der Netzwerkkomponente +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC +\color black +-Adresse +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Die MAC-Adresse der Netzwerkkomponente +\end_inset + + + + +\end_inset + + +\layout Paragraph* + +Referenzen +\layout Standard + +Unter +\emph on +Referenzen +\emph default + werden alle Verbindungen dieser Netzwerkkomponente zu anderen Objekten + im LDAP-Verzeichnis aufgeführt. +\the_end diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/WARNINGS b/trunk/gosa-plugins/systems/help/en/html/systems/WARNINGS new file mode 100644 index 000000000..e6a7e599d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/WARNINGS @@ -0,0 +1,5 @@ +No implementation found for style `fontenc' +No implementation found for style `geometry' +No implementation found for style `graphicx' + +There is no author for this document. diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/index.html b/trunk/gosa-plugins/systems/help/en/html/systems/index.html new file mode 100644 index 000000000..d6592b4bd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/index.html @@ -0,0 +1,213 @@ + + + + + +SYSTEM ADMINISTRATION + + + + + + + + + + + + + + + +

    + +

    +

    SYSTEM ADMINISTRATION

    +
    + +
    + +

    +


    + + + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/labels.pl b/trunk/gosa-plugins/systems/help/en/html/systems/labels.pl new file mode 100644 index 000000000..34bd4cc1b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/labels.pl @@ -0,0 +1,13 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate labels original text with physical files. + + +1; + + +# LaTeX2HTML 2002-2-1 (1.71) +# labels from external_latex_labels array. + + +1; + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/list_back.png b/trunk/gosa-plugins/systems/help/en/html/systems/list_back.png new file mode 100644 index 0000000000000000000000000000000000000000..f258c112f9ce54bfc898fa5e4a48b19a64f93a29 GIT binary patch literal 862 zcmV-k1EKthP)UmE}b0_#ac zK~#9!g_BKaTxA%ApYOYOX6}r4W;&BLGYO;#&0u1swVe{7wPaxzLe!OY;SW@V&}N~y zbm2k}3*C3+#emY53gV_NY*nlhp-tK(MQKOUke{Y@GR^d6?j)D_X6}!R(1ElCUwAh! z=bXhk?-4v>ietA72!;rQ0)zsBdEKv1OEfNure<}un zTCWM;{Z9AoFRxp#Ek7kt9J`fA$g8=|j)4=eraAh8Mk=8Jpjsi*cU{JR-C%C9vKIHt zZ~yt#$knz$actH^$Q#AI-20C-eyu~u*4Dt~Jm0qMBM&G~S^Z*H8^fuX2jrZaJ$ zhwA}GM7GIgyU8!pwYJI5rpJ%Bvp6b)jD@Dt>_4Idg{&!g=y>$*inYlA`An4ekL}tP z+u{B2(KjF?214ou35cezv0T+iB@O;>4)%c%TkZ=&sY5Vdb3;nios@opTsGvT-mP?J z7GY*-yTI%c=n@*9A{w|Wy6)GfJhfhvBA-UUrxydxyd&AaTX3)s#(#fI3emLyDZtRd zY1o@tzci!WpZ>PhedvSEWLzBX$p)ljimAB<&v)zWOlgc9fa|wyIuZ>shGK`Is5>^Q zcJGHha^ialp!@b0l}dR&8aU*W4f4qb7k*n~p{!UatM)CQY!D3`Dyt7xa^AJGK(+nK zuZ&*mZ$`SV94Mss4DL1&Vp~lJ!;sSQ2D5YaO1?F5GB55-SeE5%Lk)j;zRQjDex67? z_ikS4UU oUCH{TnNEG_U!ZDPR`W6bKd~t^+_O;n=Kufz07*qoM6N<$f)k{b)&Kwi literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/list_home.png b/trunk/gosa-plugins/systems/help/en/html/systems/list_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e897341f1c4af5411b4e230690036d864b7b68f4 GIT binary patch literal 865 zcmV-n1D^beP)|6eU^D;#0`5sf zK~#9!b(7y~TXh)5Ki}{7Bt1DjNlfjUv~+d0nXMg_5v&*cQDH-b`2#_`(FDc-gBB23x7Hb=7VRU8M`QwQOn9kmMvi>q+uG$BVGQHhti|d!FZg zc^+QDe;_x1*Mwk}FvvnEASf8RaeKu%>pjaA&j@W0mr#+5GMY#pPPMTj9sVkr1b(e9 zwD+^2t6$x6-rj!BAUA(EgOJzLLoZH#dM3%KR}~3M0pPboet+PxaIMM4W@#^`iy!^^ z?YZkcgWUWb8zEP7(<76gziSeY82~KZb9>j#%_L~+fbXtUxw5ibvHklqOADVoQUJrV z7rsuXhu-__oQXi<`2njNP3C42oIDmMZYh@kXpo2*Odamy!LG83b>i>j)K!(cxN4&M ze){lK(o9(3`I@a=pWM-Y#xo{T3gVU`B;?Pn#{eW_9eyi>le*RX!2o8Xrkza1H04?V zz$>FBQ=>7Y>_%iL!D}z~^JuTdH`gp&KZWcIZMQXXLIT+VTT*sA?A1Gr4n}!nGTswE zfs%r^UQcm+ybk~wF%im#6^i=nPg&SS*`8VO0TivPcgYNi518+wfx^Y|kwYn70(ok-|K|Abi{r*OG z03Npj>YhdkO>j`%AJFS-a>Y683GFRNzsOj^Wh~)hN7_Au=|fef4^;t3nLbC7F48X& z>690TjIDJAQXQR54X)j;Mi2KWq_uMs z!m|25K9Y{wFT}f*)fzsV#n!&>RTtBpo0rq-?|Y8pxX*nfKt7+3{?j=&;;M-gLK;~? rC`I7y4CwW>A!F+yP;nfm^@RT~PvI&ghCi$Wl@SqN?v z7cShWi_%qvf|q8cqN_q9LQ92OD%xpnGFE6}5;FN|oV2Dhb7yip_uoaxz_c!Ub_d?~ zcY2vQ2pxXw~W_Uo(U*Sl+p<0dMepJbm~=|<1b2j5)uI04Y|8uG5K?o`SQbmyZp*K zzkdD3^>#pEVn#zKcM31<9s2NOobE2QebxCN>i~RkQpfcJE?%i}rMR)F+4m3Mn0)^q z2{15n`ioR5`BtVMW|mwAQ!17naPeA$vtvnK8{Wm@x{d9G9NZUUVM8V=b-Ldy$g8q& z=1v?L`|j=IdOX`7^3iCLKg(NOF19#3mIUB&!)1Q`36||+wF2}mk3SZ}A>V0!qXHw* zxTg1Z`R%i>mE5+uQgt|Ysn$XMx78O=VxeX_gU3`L-=`@&GCic&X1ZerNcToNc7VHO zn79x}C~95>gyTzAHYHJ2@H|tPGR-1h8RT@h)0rxl-kAMoY7lA~D|&cWm_@YiaHDgzV&3J|oaTYdiQv{E!q zSi-j^6}v*F#{?kLV{+lADsvCq?Jk^x1N}Aj?>5QlCW>7l;ys#5s>|yVATvB#Y_@{Y z>>k;7>+dIMF%K=~aj$HVOGc?ReHI=x&|)4=%VKV6V{O2_@v)}V7TVNa9-kU?A_G^C z=JovtGa5p40u95E*_9?U^VPMqd-HT!+`nlUhS{NdW$fDlE0X;zk=XTKE)~^wcgFyz zHEhZiXUn##Qz`HFuTpa9o?#f~Gv5d>K0Y2@^$zVd<=`=)sChxCh`?Iw^Jk}%>he0U eX&8pHqyG=U>N9lRd(I620000(~PhH literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node1.html b/trunk/gosa-plugins/systems/help/en/html/systems/node1.html new file mode 100644 index 000000000..151cee018 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node1.html @@ -0,0 +1,339 @@ + + + + + +List of systems + + + + + + + + + + + + + + + +

    +List of systems +

    + +

    +The administrator can add and configure systems when clicking on the +Systems button in the Administration +menu on the left. The System MANAGEMENT +page is displayed. + +

    +She is divided on two columns : + +

    +- The first column is used to display the differents systems, + +

    +- The second column contains icons which are the actions you can execute +on differents systems. + +

    +- Those icons ( Image list_back, Image list_root, +Image list_home ) are used to modify the display +according to the department, the icons predominate other selections +of display. +

    +
    + + +

    +It's from the System management page that the system +administrator manage the list of systems of the organization. + +

    +It's possible to modify the display of the differents systems by using +the table called Filters Image rocket : + +

    + +

      +
    • For search on names : +

      +- Click on the asterisk to show all systems; + +

      +- Click on a letter to show all the systems starting +with this letter; +

      +- Click on a number to show all systems starting +with this number. +

      +

    • +
    • The administrator can search on the type of systems : + +

      +- Check one or many proposals + +

      +

    • +
    • For a fast search Image search : fill the field +by the name of the system searched and click on the Apply filter +button. +
    • +
    + +

    +
    +To select and configure a system, the administrator must click on +: + +

    + +

      +
    • Image select_new_terminal to open, create or configure +a terminal, +
    • +
    • Image select_new_workstation to open, create or +configure a workstation, +
    • +
    • Image select_new_server to open, create or configure +a server, +
    • +
    • Image select_new_printer to open, create or configure +a printer, +
    • +
    • Image select_new_phone to open, create or configure +a phone, +
    • +
    • Image select_new_component to open, create or +configure a component. +
    • +
    +Appear the space of configuration for each systems. + +

    +To save changes use the Save button, to come back without saving +use the Cancel button. + +

    +All the fields followed by an asterisk must be filled. + +

    + + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node10.html b/trunk/gosa-plugins/systems/help/en/html/systems/node10.html new file mode 100644 index 000000000..0a3e195c3 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node10.html @@ -0,0 +1,46 @@ + + + + + +Telephone hardware + + + + + + + + + + + + + + + +

    +Telephone hardware +

    + +

    +Mention the type of the telephone. (pour un terminal ?) + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node11.html b/trunk/gosa-plugins/systems/help/en/html/systems/node11.html new file mode 100644 index 000000000..c5e0ae857 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node11.html @@ -0,0 +1,56 @@ + + + + + +Graphic device + + + + + + + + + + + + + + + +

    +Graphic device +

    + +

    + + + + + + + + + + +
    DriverSelect the graphic driver in the scroll list
    ResolutionSelect the monitors's resolution in the scroll list
    Color depthSelect the color depth of the monitor in the scroll list
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node12.html b/trunk/gosa-plugins/systems/help/en/html/systems/node12.html new file mode 100644 index 000000000..86fc5a52e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node12.html @@ -0,0 +1,56 @@ + + + + + +Display device + + + + + + + + + + + + + + + +

    +Display device +

    + +

    + + + + + + + + + + +
    Type?
    HSync?
    VSync?
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node13.html b/trunk/gosa-plugins/systems/help/en/html/systems/node13.html new file mode 100644 index 000000000..02da9231f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node13.html @@ -0,0 +1,56 @@ + + + + + +Remote desktop + + + + + + + + + + + + + + + +

    +Remote desktop +

    + +

    + + + + + + + + + + +
    Connect methodSelect the type of remote connection to another terminal
    Terminal server?
    Font server?
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node14.html b/trunk/gosa-plugins/systems/help/en/html/systems/node14.html new file mode 100644 index 000000000..5684152bb --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node14.html @@ -0,0 +1,53 @@ + + + + + +Print device + + + + + + + + + + + + + + + +

    +Print device +

    + +

    + + + + + + + +
    Provide print servicesCheck if you want allow to the terminal a print service
    Spool serverChoose on the scroll list the spool server
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node15.html b/trunk/gosa-plugins/systems/help/en/html/systems/node15.html new file mode 100644 index 000000000..5b071f8a0 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node15.html @@ -0,0 +1,53 @@ + + + + + +Scan device + + + + + + + + + + + + + + + +

    +Scan device +

    + +

    + + + + + + + +
    Provide scan servicesCheck if you want allow to the terminal a scan service
    ModelSelect the scan device's model in the scroll list
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node16.html b/trunk/gosa-plugins/systems/help/en/html/systems/node16.html new file mode 100644 index 000000000..f224f492f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node16.html @@ -0,0 +1,37 @@ + + + + + +Startup + + + + + + + + + + + + + + + +

    +Startup +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node17.html b/trunk/gosa-plugins/systems/help/en/html/systems/node17.html new file mode 100644 index 000000000..cbe6bcfbd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node17.html @@ -0,0 +1,83 @@ + + + + + +Boot parameters + + + + + + + + + + + + + + + +

    +Boot parameters +

    + +

    + + + + + + + + + + +
    LDAP serverSelect in the scroll list the LDAP server where the terminal is configured
    Boot kernelMention the kernel that is used on the boot
    Custom options?
    + +

    + +

      +
    • use graphical bootup +
    • +
    +Check if you want a graphical interface when booting. + +

    + +

      +
    • use standard linux textual bootup +
    • +
    +? + +

    + +

      +
    • use debug mode for startup +
    • +
    +? + +

    +Trois points à expliquer + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node18.html b/trunk/gosa-plugins/systems/help/en/html/systems/node18.html new file mode 100644 index 000000000..82f6283a6 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node18.html @@ -0,0 +1,49 @@ + + + + + +Kernel modules (format : name parameters) + + + + + + + + + + + + + + + +

    +Kernel modules (format : name parameters) +

    + +

    +? +

    +Utiliser le bouton Ajouter après avoir rempli le champ qui le précède +et le bouton Supprimer après avoir séléctionné dans la liste. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node19.html b/trunk/gosa-plugins/systems/help/en/html/systems/node19.html new file mode 100644 index 000000000..11769b993 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node19.html @@ -0,0 +1,46 @@ + + + + + +Shares + + + + + + + + + + + + + + + +

    +Shares +

    + +

    +? + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node2.html b/trunk/gosa-plugins/systems/help/en/html/systems/node2.html new file mode 100644 index 000000000..3438770b8 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node2.html @@ -0,0 +1,92 @@ + + + + + +Configure a terminal + + + + + + + + + + + + + + + +

    +Configure a terminal +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node20.html b/trunk/gosa-plugins/systems/help/en/html/systems/node20.html new file mode 100644 index 000000000..85614c62b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node20.html @@ -0,0 +1,37 @@ + + + + + +Printer + + + + + + + + + + + + + + + +

    +Printer +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node21.html b/trunk/gosa-plugins/systems/help/en/html/systems/node21.html new file mode 100644 index 000000000..22a3060c6 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node21.html @@ -0,0 +1,56 @@ + + + + + +General + + + + + + + + + + + + + + + +

    +General +

    + +

    + + + + + + + + + + +
    Printer name*Mention the name of the printer linked to the terminal
    DescriptionPut a short description about the printer
    Base*Select on the scroll list the department where the terminal is
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node22.html b/trunk/gosa-plugins/systems/help/en/html/systems/node22.html new file mode 100644 index 000000000..fed7f6a09 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node22.html @@ -0,0 +1,56 @@ + + + + + +Details + + + + + + + + + + + + + + + +

    +Details +

    + +

    + + + + + + + + + + +
    Printer locationMention where the printer is physically in the organization
    Printer URLMention the URL of the printer
    DriverPress the Edit button to add a driver to make work the printer
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node23.html b/trunk/gosa-plugins/systems/help/en/html/systems/node23.html new file mode 100644 index 000000000..15b9c55d8 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node23.html @@ -0,0 +1,57 @@ + + + + + +Permissions + + + + + + + + + + + + + + + +

    +Permissions +

    + +

    + +

      +
    • Users which are allowed to use this printer +
    • +
    +Insert in the field the user or the group allowed to use the printer. +You have to use the Add user button to add users and the Add +group button to add groups. + +

    + +

      +
    • Users which are allowed to administrate this printer +
    • +
    +Insert in the field the user or the group allowed to administrate +the printer. You have to use the Add user button to add users +and the Add group button to add groups. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node24.html b/trunk/gosa-plugins/systems/help/en/html/systems/node24.html new file mode 100644 index 000000000..64dc603b0 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node24.html @@ -0,0 +1,53 @@ + + + + + +Network settings + + + + + + + + + + + + + + + +

    +Network settings +

    + +

    + + + + + + + +
    IP-addressMention the IP-address of the printer
    MAC-addressMention the MAC-address of the printer
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node25.html b/trunk/gosa-plugins/systems/help/en/html/systems/node25.html new file mode 100644 index 000000000..cdf2f6191 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node25.html @@ -0,0 +1,40 @@ + + + + + +Information + + + + + + + + + + + + + + + +

    +Information +

    + +

    +? + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node26.html b/trunk/gosa-plugins/systems/help/en/html/systems/node26.html new file mode 100644 index 000000000..afe2d4088 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node26.html @@ -0,0 +1,42 @@ + + + + + +References + + + + + + + + + + + + + + + +

    +References +

    + +

    +? +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node27.html b/trunk/gosa-plugins/systems/help/en/html/systems/node27.html new file mode 100644 index 000000000..022451c21 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node27.html @@ -0,0 +1,90 @@ + + + + + +Configure a workstation + + + + + + + + + + + + + + + +

    +Configure a workstation +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node28.html b/trunk/gosa-plugins/systems/help/en/html/systems/node28.html new file mode 100644 index 000000000..6f37b05e0 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node28.html @@ -0,0 +1,37 @@ + + + + + +Generic + + + + + + + + + + + + + + + +

    +Generic +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node29.html b/trunk/gosa-plugins/systems/help/en/html/systems/node29.html new file mode 100644 index 000000000..a8e35cea1 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node29.html @@ -0,0 +1,66 @@ + + + + + +Properties + + + + + + + + + + + + + + + +

    +Properties +

    + +

    + + + + + + + + + + + + + + + + + + + +
    Workstation template?
    Location 
    Base*Select the department in th scroll list
    ModeSelect the mode in the scroll list. The administrator can deactivate +?
    Syslog server?
    NTP server?
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node3.html b/trunk/gosa-plugins/systems/help/en/html/systems/node3.html new file mode 100644 index 000000000..c4c80964c --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node3.html @@ -0,0 +1,37 @@ + + + + + +Generic + + + + + + + + + + + + + + + +

    +Generic +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node30.html b/trunk/gosa-plugins/systems/help/en/html/systems/node30.html new file mode 100644 index 000000000..9c0cdf8e5 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node30.html @@ -0,0 +1,53 @@ + + + + + +Network settings + + + + + + + + + + + + + + + +

    +Network settings +

    + +

    + + + + + + + +
    IP-addressInsert the IP-address of the workstation
    MAC-addressInsert the MAC-address of the workstation
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node31.html b/trunk/gosa-plugins/systems/help/en/html/systems/node31.html new file mode 100644 index 000000000..06d36bc81 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node31.html @@ -0,0 +1,45 @@ + + + + + +Action + + + + + + + + + + + + + + + +

    +Action +

    + +

    +? +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node32.html b/trunk/gosa-plugins/systems/help/en/html/systems/node32.html new file mode 100644 index 000000000..36ba5b959 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node32.html @@ -0,0 +1,37 @@ + + + + + +Devices + + + + + + + + + + + + + + + +

    +Devices +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node33.html b/trunk/gosa-plugins/systems/help/en/html/systems/node33.html new file mode 100644 index 000000000..fd0e09823 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node33.html @@ -0,0 +1,56 @@ + + + + + +Keyboard + + + + + + + + + + + + + + + +

    +Keyboard +

    + +

    + + + + + + + + + + +
    ModelSelect the keyboard's model in the scroll list.
    LayoutSelect the language's keyboard in the scroll list.
    Variant?
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node34.html b/trunk/gosa-plugins/systems/help/en/html/systems/node34.html new file mode 100644 index 000000000..0a0ac847e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node34.html @@ -0,0 +1,53 @@ + + + + + +Mouse + + + + + + + + + + + + + + + +

    +Mouse +

    + +

    + + + + + + + +
    TypeSelect the mouse's model in the scroll list.
    PortSelect on the scroll list the port on wich the mouse will be connected.
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node35.html b/trunk/gosa-plugins/systems/help/en/html/systems/node35.html new file mode 100644 index 000000000..ede727f1d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node35.html @@ -0,0 +1,46 @@ + + + + + +Telephone hardware + + + + + + + + + + + + + + + +

    +Telephone hardware +

    + +

    +Mention the type of the telephone. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node36.html b/trunk/gosa-plugins/systems/help/en/html/systems/node36.html new file mode 100644 index 000000000..10f23ad35 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node36.html @@ -0,0 +1,59 @@ + + + + + +Graphic device + + + + + + + + + + + + + + + +

    +Graphic device +

    + +

    +Graphic device + +

    + + + + + + + + + + +
    DriverSelect the graphic driver in the scroll list
    ResolutionSelect the monitors's resolution in the scroll list
    Color depthSelect the color depth of the monitor in the scroll list
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node37.html b/trunk/gosa-plugins/systems/help/en/html/systems/node37.html new file mode 100644 index 000000000..4c22b60ce --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node37.html @@ -0,0 +1,56 @@ + + + + + +Display device + + + + + + + + + + + + + + + +

    +Display device +

    + +

    + + + + + + + + + + +
    Type?
    HSync?
    VSync?
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node38.html b/trunk/gosa-plugins/systems/help/en/html/systems/node38.html new file mode 100644 index 000000000..50ae8ee67 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node38.html @@ -0,0 +1,50 @@ + + + + + +Scan device + + + + + + + + + + + + + + + +

    +Scan device +

    + +

    + + + + +
    Provide scan servicesCheck if you want allow to the terminal a scan service
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node39.html b/trunk/gosa-plugins/systems/help/en/html/systems/node39.html new file mode 100644 index 000000000..32a6abd33 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node39.html @@ -0,0 +1,37 @@ + + + + + +Startup + + + + + + + + + + + + + + + +

    +Startup +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node4.html b/trunk/gosa-plugins/systems/help/en/html/systems/node4.html new file mode 100644 index 000000000..7effc6491 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node4.html @@ -0,0 +1,70 @@ + + + + + +Properties + + + + + + + + + + + + + + + +

    +Properties +

    + +

    + + + + + + + + + + + + + + + + + + + + + + +
    Terminal template 
    Base*Make a choice in the scroll list of department where the terminal +is
    Root server?
    Swap server?
    ModeMake a choice on the scroll list. The administrator can deactivate +the terminal or choose the display's mode.
    Syslog server?
    NTP server?
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node40.html b/trunk/gosa-plugins/systems/help/en/html/systems/node40.html new file mode 100644 index 000000000..0ca716479 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node40.html @@ -0,0 +1,57 @@ + + + + + +Boot parameters + + + + + + + + + + + + + + + +

    +Boot parameters +

    + +

    + + + + + + + + + + +
    LDAP serverSelect in the scroll list the LDAP server where the workstation is +configured
    Boot kernelMention the kernel that is used on the boot
    Custom options?
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node41.html b/trunk/gosa-plugins/systems/help/en/html/systems/node41.html new file mode 100644 index 000000000..3870c0b44 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node41.html @@ -0,0 +1,46 @@ + + + + + +FAI server + + + + + + + + + + + + + + + +

    +FAI server +

    + +

    +Mention the FAI server used. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node42.html b/trunk/gosa-plugins/systems/help/en/html/systems/node42.html new file mode 100644 index 000000000..74532123d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node42.html @@ -0,0 +1,46 @@ + + + + + +Assigned FAI casses + + + + + + + + + + + + + + + +

    +Assigned FAI casses +

    + +

    +? + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node43.html b/trunk/gosa-plugins/systems/help/en/html/systems/node43.html new file mode 100644 index 000000000..6ecddc073 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node43.html @@ -0,0 +1,45 @@ + + + + + +Kernel modules (format : name parameters) + + + + + + + + + + + + + + + +

    +Kernel modules (format : name parameters) +

    + +

    +? +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node44.html b/trunk/gosa-plugins/systems/help/en/html/systems/node44.html new file mode 100644 index 000000000..bc5254e07 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node44.html @@ -0,0 +1,45 @@ + + + + + +Shares + + + + + + + + + + + + + + + +

    +Shares +

    + +

    +? +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node45.html b/trunk/gosa-plugins/systems/help/en/html/systems/node45.html new file mode 100644 index 000000000..dad38c64d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node45.html @@ -0,0 +1,59 @@ + + + + + +Printer + + + + + + + + + + + + + + + +

    +Printer +

    + +

    +General + +

    + + + + + + + + + + +
    Printer name*Mention the name of the printer linked to the workstation
    DescriptionPut a short description about the printer
    Base*Select on the scroll list the department where the workstation is
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node46.html b/trunk/gosa-plugins/systems/help/en/html/systems/node46.html new file mode 100644 index 000000000..312212c05 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node46.html @@ -0,0 +1,56 @@ + + + + + +Details + + + + + + + + + + + + + + + +

    +Details +

    + +

    + + + + + + + + + + +
    Printer locationMention where the printer is physically in the organization
    Printer URLMention the URL of the printer
    DriverPress the Edit button to add a driver to make work the printer
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node47.html b/trunk/gosa-plugins/systems/help/en/html/systems/node47.html new file mode 100644 index 000000000..dd65b5b48 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node47.html @@ -0,0 +1,57 @@ + + + + + +Permissions + + + + + + + + + + + + + + + +

    +Permissions +

    + +

    + +

      +
    • Users which are allowed to use this printer +
    • +
    +Insert in the field the user or the group allowed to use the printer. +You have to use the Add user button to add users and the Add +group button to add groups. + +

    + +

      +
    • Users which are allowed to administrate this printer +
    • +
    +Insert in the field the user or the group allowed to administrate +the printer. You have to use the Add user button to add users +and the Add group button to add groups. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node48.html b/trunk/gosa-plugins/systems/help/en/html/systems/node48.html new file mode 100644 index 000000000..69128d384 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node48.html @@ -0,0 +1,53 @@ + + + + + +Network settings + + + + + + + + + + + + + + + +

    +Network settings +

    + +

    + + + + + + + +
    IP-addressMention the IP-address of the printer
    MAC-addressMention the MAC-address of the printer
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node49.html b/trunk/gosa-plugins/systems/help/en/html/systems/node49.html new file mode 100644 index 000000000..c79c9c131 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node49.html @@ -0,0 +1,43 @@ + + + + + +Information + + + + + + + + + + + + + + + +

    +Information +

    + +

    +? +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node5.html b/trunk/gosa-plugins/systems/help/en/html/systems/node5.html new file mode 100644 index 000000000..0be38ec5b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node5.html @@ -0,0 +1,53 @@ + + + + + +Network settings + + + + + + + + + + + + + + + +

    +Network settings +

    + +

    + + + + + + + +
    IP-addressInsert the IP-address of the terminal
    MAC-addressInsert the MAC-address of the terminal
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node50.html b/trunk/gosa-plugins/systems/help/en/html/systems/node50.html new file mode 100644 index 000000000..52ecbf8e6 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node50.html @@ -0,0 +1,42 @@ + + + + + +References + + + + + + + + + + + + + + + +

    +References +

    + +

    +? +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node51.html b/trunk/gosa-plugins/systems/help/en/html/systems/node51.html new file mode 100644 index 000000000..3108d37c9 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node51.html @@ -0,0 +1,58 @@ + + + + + +Configure a server + + + + + + + + + + + + + + + +

    +Configure a server +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node52.html b/trunk/gosa-plugins/systems/help/en/html/systems/node52.html new file mode 100644 index 000000000..891e1b2c3 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node52.html @@ -0,0 +1,56 @@ + + + + + +Generic + + + + + + + + + + + + + + + +

    +Generic +

    + +

    + + + + + + + + + + +
    Server name*Insert the name's server
    Base*Select in the scroll list the department which the server is linked
    DescriptionInsert a short description about the server
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node53.html b/trunk/gosa-plugins/systems/help/en/html/systems/node53.html new file mode 100644 index 000000000..51e5f7bb8 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node53.html @@ -0,0 +1,53 @@ + + + + + +Network settings + + + + + + + + + + + + + + + +

    +Network settings +

    + +

    + + + + + + + +
    IP-addressInsert the IP-address of the server
    MAC-addressInsert the MAC-address of the server
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node54.html b/trunk/gosa-plugins/systems/help/en/html/systems/node54.html new file mode 100644 index 000000000..e21c83133 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node54.html @@ -0,0 +1,45 @@ + + + + + +Action + + + + + + + + + + + + + + + +

    +Action +

    + +

    +? +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node55.html b/trunk/gosa-plugins/systems/help/en/html/systems/node55.html new file mode 100644 index 000000000..037886c3b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node55.html @@ -0,0 +1,178 @@ + + + + + +Databases + + + + + + + + + + + + + + + +

    +Databases +

    + +

    +This tab contains the databases linked to the to the server. The administrator +can check one or many propositions of databases according to the system +configuration and the user's access. + +

    +The administrator have the choice between : + +

    + +

      +
    • Kerberos kadmin access + +

      + + + + + + + + + + +
      Kerberos Realm 
      Admin user 
      Password 
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • FAX database + +

      + + + + + + + +
      FAX DB user 
      Password 
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Asterisk Management + +

      + + + + + + + + + + + + + +
      Asterisk DB user 
      Password 
      Country dial prefix 
      Local dial prefix 
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • IMAP admin access + +

      + + + + + + + + + + + + + + + + +
      Server identifier 
      Connect URL 
      Admin user 
      Password 
      Sieve port 
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Logging database + +

      + + + + + + + +
      Logging DB user 
      Password 
      + +

      +

    • +
    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node56.html b/trunk/gosa-plugins/systems/help/en/html/systems/node56.html new file mode 100644 index 000000000..c606797ca --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node56.html @@ -0,0 +1,123 @@ + + + + + +Services + + + + + + + + + + + + + + + +

    +Services +

    + +

    + +

      +
    • Nfs Export +
    • +
    +? +

    + +

    +
    + + +

    + +

      +
    • Time Service +
    • +
    +? +

    + +

    +
    + + +

    + +

      +
    • LDAP Service +
    • +
    +? +

    + +

    +
    + + +

    + +

      +
    • Terminal Service +
    • +
    + + + + + + + +
    Temporary disable login?
    Font path?
    + +

    + +

    +
    + + +

    + +

      +
    • Syslog Service +
    • +
    +? +

    + +

    +
    + + +

    + +

      +
    • Print Service +
    • +
    +? +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node57.html b/trunk/gosa-plugins/systems/help/en/html/systems/node57.html new file mode 100644 index 000000000..7ef7d1deb --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node57.html @@ -0,0 +1,46 @@ + + + + + +Information + + + + + + + + + + + + + + + +

    +Information +

    + +

    +This tab give a summary of the sytem's score. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node58.html b/trunk/gosa-plugins/systems/help/en/html/systems/node58.html new file mode 100644 index 000000000..39946a9b1 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node58.html @@ -0,0 +1,42 @@ + + + + + +References + + + + + + + + + + + + + + + +

    +References +

    + +

    +? +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node59.html b/trunk/gosa-plugins/systems/help/en/html/systems/node59.html new file mode 100644 index 000000000..8ffdcd1dd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node59.html @@ -0,0 +1,56 @@ + + + + + +Configure a printer + + + + + + + + + + + + + + + +

    +Configure a printer +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node6.html b/trunk/gosa-plugins/systems/help/en/html/systems/node6.html new file mode 100644 index 000000000..c43d3798b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node6.html @@ -0,0 +1,45 @@ + + + + + +Action + + + + + + + + + + + + + + + +

    +Action +

    + +

    +? +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node60.html b/trunk/gosa-plugins/systems/help/en/html/systems/node60.html new file mode 100644 index 000000000..dec75a4fa --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node60.html @@ -0,0 +1,37 @@ + + + + + +Generic + + + + + + + + + + + + + + + +

    +Generic +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node61.html b/trunk/gosa-plugins/systems/help/en/html/systems/node61.html new file mode 100644 index 000000000..848086d3b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node61.html @@ -0,0 +1,56 @@ + + + + + +General + + + + + + + + + + + + + + + +

    +General +

    + +

    + + + + + + + + + + +
    Printer name*Mention the name of the printer
    DescriptionPut a short description about the printer
    Base*Select on the scroll list the department where the printer is
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node62.html b/trunk/gosa-plugins/systems/help/en/html/systems/node62.html new file mode 100644 index 000000000..ff5c3a342 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node62.html @@ -0,0 +1,56 @@ + + + + + +Details + + + + + + + + + + + + + + + +

    +Details +

    + +

    + + + + + + + + + + +
    Printer locationMention where the printer is physically in the organization
    Printer URLMention the URL of the printer
    DriverPress the Edit button to add a driver to make work the printer
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node63.html b/trunk/gosa-plugins/systems/help/en/html/systems/node63.html new file mode 100644 index 000000000..0aa263a47 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node63.html @@ -0,0 +1,57 @@ + + + + + +Permissions + + + + + + + + + + + + + + + +

    +Permissions +

    + +

    + +

      +
    • Users which are allowed to use this printer +
    • +
    +Insert in the field the user or the group allowed to use the printer. +You have to use the Add user button to add users and the Add +group button to add groups. + +

    + +

      +
    • Users which are allowed to administrate this printer +
    • +
    +Insert in the field the user or the group allowed to administrate +the printer. You have to use the Add user button to add users +and the Add group button to add groups. + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node64.html b/trunk/gosa-plugins/systems/help/en/html/systems/node64.html new file mode 100644 index 000000000..98426a232 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node64.html @@ -0,0 +1,53 @@ + + + + + +Network settings + + + + + + + + + + + + + + + +

    +Network settings +

    + +

    + + + + + + + +
    IP-addressMention the IP-address of the printer
    MAC-addressMention the MAC-address of the printer
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node65.html b/trunk/gosa-plugins/systems/help/en/html/systems/node65.html new file mode 100644 index 000000000..b6ad6a199 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node65.html @@ -0,0 +1,43 @@ + + + + + +Reference + + + + + + + + + + + + + + + +

    +Reference +

    + +

    +? + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node66.html b/trunk/gosa-plugins/systems/help/en/html/systems/node66.html new file mode 100644 index 000000000..7f4d39f77 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node66.html @@ -0,0 +1,52 @@ + + + + + +Configure a telephone + + + + + + + + + + + + + + + +

    +Configure a telephone +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node67.html b/trunk/gosa-plugins/systems/help/en/html/systems/node67.html new file mode 100644 index 000000000..81e3e43a8 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node67.html @@ -0,0 +1,57 @@ + + + + + +Generic + + + + + + + + + + + + + + + +

    +Generic +

    + +

    + + + + + + + + + + +
    Phone name*Insert the name of the telephone
    Base*Choose in the scroll list the name of the department where is the +telephone
    DescriptionInsert a short description about the telephone
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node68.html b/trunk/gosa-plugins/systems/help/en/html/systems/node68.html new file mode 100644 index 000000000..4aac4b921 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node68.html @@ -0,0 +1,147 @@ + + + + + +Advanced phone settings + + + + + + + + + + + + + + + +

    +Advanced phone settings +

    + +

    + + + + +
    Phone type*Choisissez dans la liste déroulante le type du téléphone : SIP, IAX +ou CAPI
    + +

    + +

    +
    + + +

    + +

      +
    • If SIP is selected you must fill in the following fields : + +

      + + + + + + + + + + + + + +
      Mode* 
      DTMF mode 
      Default IP 
      Response timeout 
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • If IAX is selected you must fill in the following fields : + +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Modus*?
      Default IP?
      Response timeout?
      Authtype?
      Secret?
      Account code?
      Trunk lines?
      Hosts that are allowed to connectUtilisez le bouton Ajouter pour insérer le nom d'hôte pouvant se connecter. +Le bouton Supprimer sert à effacer le nom d'hôte sélectionné. ?
      Hosts that are not allowed to connectUtilisez le bouton Ajouter pour insérer le nom d'hôte ne pouvant pas +se connecter. Le bouton Supprimer sert à effacer le nom d'hôte sélectionné. +?
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • If CAPI is selected you must fill in the following field : + +

      + + + + +
      MSN?
      + +

      +

    • +
    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node69.html b/trunk/gosa-plugins/systems/help/en/html/systems/node69.html new file mode 100644 index 000000000..45749d0b3 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node69.html @@ -0,0 +1,53 @@ + + + + + +Network settings + + + + + + + + + + + + + + + +

    +Network settings +

    + +

    + + + + + + + +
    IP-address*Insert the IP-address of the telephone
    MAC-address*Insert the MAC-address of the telephone
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node7.html b/trunk/gosa-plugins/systems/help/en/html/systems/node7.html new file mode 100644 index 000000000..66fe5eca6 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node7.html @@ -0,0 +1,37 @@ + + + + + +Devices + + + + + + + + + + + + + + + +

    +Devices +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node70.html b/trunk/gosa-plugins/systems/help/en/html/systems/node70.html new file mode 100644 index 000000000..129da114a --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node70.html @@ -0,0 +1,42 @@ + + + + + +References + + + + + + + + + + + + + + + +

    +References +

    + +

    +? +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node71.html b/trunk/gosa-plugins/systems/help/en/html/systems/node71.html new file mode 100644 index 000000000..5263e2ade --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node71.html @@ -0,0 +1,50 @@ + + + + + +Configure a component + + + + + + + + + + + + + + + +

    +Configure a component +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node72.html b/trunk/gosa-plugins/systems/help/en/html/systems/node72.html new file mode 100644 index 000000000..0776c6815 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node72.html @@ -0,0 +1,57 @@ + + + + + +Generic + + + + + + + + + + + + + + + +

    +Generic +

    + +

    + + + + + + + + + + +
    Device name*Insert the name of the component
    Base*Choose in the scroll list the name of the department where is the +component
    DescriptionInsert a short description about the component
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node73.html b/trunk/gosa-plugins/systems/help/en/html/systems/node73.html new file mode 100644 index 000000000..a02b7396b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node73.html @@ -0,0 +1,53 @@ + + + + + +Network settings + + + + + + + + + + + + + + + +

    +Network settings +

    + +

    + + + + + + + +
    IP-address*Insert the IP-address of the component
    MAC-address*Insert the MAC-address of the component
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node74.html b/trunk/gosa-plugins/systems/help/en/html/systems/node74.html new file mode 100644 index 000000000..9a97e3845 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node74.html @@ -0,0 +1,38 @@ + + + + + +References + + + + + + + + + + + + + + + +

    +References +

    + +

    +? +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node75.html b/trunk/gosa-plugins/systems/help/en/html/systems/node75.html new file mode 100644 index 000000000..d513eae49 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node75.html @@ -0,0 +1,51 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + +

    +About this document ... +

    + SYSTEM ADMINISTRATION

    +This document was generated using the +LaTeX2HTML translator Version 2002-2-1 (1.71) +

    +Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
    +Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

    +The command line arguments were:
    + latex2html -no_navigation -dir ../html/systems/ systems.tex +

    +The translation was initiated by Jan Wenzel on 2008-03-13 +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node8.html b/trunk/gosa-plugins/systems/help/en/html/systems/node8.html new file mode 100644 index 000000000..ccf31d453 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node8.html @@ -0,0 +1,56 @@ + + + + + +Keyboard + + + + + + + + + + + + + + + +

    +Keyboard +

    + +

    + + + + + + + + + + +
    ModelSelect the keyboard's model in the scroll list.
    LayoutSelect the language's keyboard in the scroll list.
    Variant?
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/node9.html b/trunk/gosa-plugins/systems/help/en/html/systems/node9.html new file mode 100644 index 000000000..865b823e6 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/node9.html @@ -0,0 +1,53 @@ + + + + + +Mouse + + + + + + + + + + + + + + + +

    +Mouse +

    + +

    + + + + + + + +
    TypeSelect the mouse's model in the scroll list.
    PortSelect on the scroll list the port on wich the mouse will be connected.
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/rocket.png b/trunk/gosa-plugins/systems/help/en/html/systems/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr6`%jf|2$4r$s+spf+u-Q>g|C~v${^~-@3D2KhAWzjp*~g402!Z zUHKi(9mVwYR{HU3yQ(XJdfgr7_kt7B*ZVg zlZA`E-HR!XFqoPrv4|=5q??46nDTS`=Vp~s9W4h#9%&XB{&YOW(>Ss1gowdH#>bK? z8Y|h_G_JnXKEGa!RbjKC&z^}6{xug8QpM!9)-qhxW!6-X$b8VxoWq_ay;SG)q^zy4 zl#WYx-skypq>N1rh_uAIJMX_g{(N)1i3HE2^Uo#sN-{sl`!nt7bPI-)m$;^1)Ml8r sPTcnHd4|#lq7}@qf*h7KXm7~hGi}kLyMEkXfZ@&H>FVdQ&MBb@00WM*LjV8( literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/select_new_phone.png b/trunk/gosa-plugins/systems/help/en/html/systems/select_new_phone.png new file mode 100644 index 0000000000000000000000000000000000000000..45714d175d5098439b9395d2ad740dd172177351 GIT binary patch literal 660 zcmV;F0&D$=P)ScHQP zVNsA?B5yl{8NpT%jR-T+VW~W7bLyOX=JxFA)8R2Gh_*L;;LR64Z{FYc`=dkzr4+?* z<)P)hc&==?T+y2_U_Jp0>s(f)3f!GoiNvt^^GqkZZ%K+H$)jhkV9NBX24^= zy`2oR&@%|!?oa?C@~_&wGJ=TsL?Xx@7oW`|?D4-cxHcyK<8^3aGLTN^{5Muy5bOp{ z0nNMepMj4MdV=ahDG}lRYqZrbp9V7NO)c^=Oj}nUnSzV0w85CC0Zs#f_x67DEW|+d zp#Zzag2gM33+=)19r6bnnVnz3#9=Q7yCE-l&fL^H-PK#}@nB{%xIEs?9!X6-4pnx5ZCB7` ukB=b4bo(13LTBgT2AscHtkU1M|HLl}ISjH0h?;Bw0000bO~EDAyA<{^6rx^a1=~Y^K=m;2QG9De zWspMjCgp?npo9YlUPFW}j6L|aU~}H(xIcD(eS5guysq%T;rsa>&iS0r_na@mS-ZHp zy1E^SM6NrI0|4mi>Vj#S&@>G*Gc(U6N&4t5plt*s6bc3V`};371BPM1Fbohv;Pd$c zZTbHYfH7t@PUyN0UDsh41~g3rA;f9V=i2TjrIdL)H{CQ%Se9j;t3VXRtE#H+4?>MJZuoeB#08 zuT3pm$+C0pHC%7l%F0R}z!f?jn|>1R4R;(KAHue5IP7%L{&yGL$;J)%8!^kWK;QcD z5D>@4#_nV7+gd^SqcEkauw(g{$+FC<)oP=gz}PlUF%w+8jTR;w8ymj`LFl2Bf>H{O z<3I=jAq3&C*MP)h05<`M4Glj5>;vg#B=d<+v{)=wgTY`=E|){OT!yNup1sWBMfxQ$ zybMHl-B5NC*aPzSawvaK)#%R7&hF6A(7@8t61KLs5R1jY^E?=1SiJSYqoCvxMCXC% zJ_gef_jsO4v literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/select_new_server.png b/trunk/gosa-plugins/systems/help/en/html/systems/select_new_server.png new file mode 100644 index 0000000000000000000000000000000000000000..84f65700a80e318827832736b1d104056fc7956a GIT binary patch literal 813 zcmV+|1JeA7P)GHhu{cUWMP-z>&em3^x@O$>{U>05Y#js^-w&G-iPHD$Pak`^swSa? z6zuGR>jD-6A4*FV&vmsnDy1iWoSl0W5q=K>T~-#o*3eMZTU#5KN(o#ac0CZq4z5@1 zXCV?5bi9yqq&hM-H#OgDjJd9>tK&U&bqQJ20H7pzfae1Ov;?al^g$?SKi3p1i#;^D zxR~)}{{ALEd$*yWMasf427~~uL1}3IPLi6E#EwE^Ep)$hQYobxWGDsi{P`}KyVt=7 ztw0w2*WQrSk4d!LfAty%l3B^A@e-`XkojaO^X08u_VVnIUC$f4zG>`^Ypfl>TI*Ol z%|2VFz|-upxNu=Ova$Zh$Ng`ef3xC|DBFL-kqE?NaQrg~>DPfX!0DogJHQeQW|956 zMm0BghI8|i6P{Nd7!!G>@_1bQwG9vcf#rukpz8A;2qxjgd7u<#UV)oGA^MPDwlsj& zirw9vk0x$>v%Z;6U1@A?j9B2Qse=wS3IPy{}wSqVNOv)5))HuHAp& zkG>skDkts0OcoZikah~f!5lmZq#Z0dduSJw(g-2G9{Xab`|4U-*Dw6=9)RdWSaNoc r2e2&W5Pb;opVxU%6ohFj4yOMF7(FZx`)`9&00000NkvXXu0mjf`d(&z literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/select_new_terminal.png b/trunk/gosa-plugins/systems/help/en/html/systems/select_new_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..a218480c9b94f81f9b97efa4ca1d169d59a3baf3 GIT binary patch literal 776 zcmV+j1NZ!iP)ll$3Z}?l(^XPL`Uk`oEFDNKU6@T* zDj0O(&Wt-Lw9xLvMail~vM^@RR3fJBDhU*1Fh9nLouTpFcTX3S1XAV;2ktrC@0aiQ z+$*(O?c1rTscT^v+B8l1KMI8c0IG_J;GEN$nVFxbr>DOFc4T>Z`DLL{h}YKED3{B4 z?+*y<^&-O7))sLblgVTl8X6jIwOY??KA+cxg#~73XBiwEq?Zc-V+@T(gKD+P=;)|7 z#^eC3s%jKPwA*b~S66$I_t5Ed$Ye5XZ*ME00Cso4;^HE49HXlH1QFTqMTE`GO-4pW zs8lNZcWe*@0IaO6&}=q|q6lj(A_9PO4(A+6lCZI{L8sH{60Pk<6A^+Sz!-z~9_Jk1 zdsG$gJ>GkgB%$4IqpGOtfjwDc4AxqT#UiCriCiv67={>QP*t3ByxG~|)s1!jP2f&5 zJ@8USL=X|IwS-|vHk&1v%MnEpi&uVUsrH;x+Kpp?a(_Q3o}3LD*Vi8dSP`-1a+$HQ zF^a`v*TJDf+=_3(WFI_z$-{5{g2_J2>pWlnbQP_5-VPsoqw=@P+}zw!wOXz0*-g`w zPLkl#l%qeEU~&RD2^`-w{RglF_kZB__U&I~U|`_G@$vBq5y|>)IQN0-afQtDG=1^i z@PjLy21b7C@}Hi8XYi=-{i{zeU%t@u!+ZjteGFe~9aWuB)w`-XyIXg=vpNbK=_zmt zKJSwIROiwCbL&0z^+0t#P`CB2Y8?%F39Q3<`xo2)(c#t*4M-lIBlzb}SbB|guAv+A zm={gtE3!Qu?4p>56Cu2RA$q5#b=2J>y?89XS%UL`0Q?929y}*B`c6{-0000 ztyzu52#rt`_m&9m+yoK3sE9}x(TJus<4oJh%>A8vJ{L0?NA$o4?}6`q&%=8Z!0PJi zTOV9|@0w9!`pw}bq zXN&^0F=(av{kJx0rkI>8kj9C`iyok!2P;9)Q+3j-gU1P^=Uvm-Bcz2V*qW3Q3%D_t^y^>vHs) zFR|7l*8UUV8VAoc%+$)1D<#U69KP@JxqSkFbLrjDch;&U=D$6`>3aIcyF&`r*491| z5qZ$-%e_`te)*#*(m+INB3q1f6wgU^-IHv~lTPPoR~m={n3|e8vAn!|*%)PJ4%bgE zompC_R;%8zub+gs&jU{bPYs{@3Ah6v-b7tNF@6>o7tihN>^y3>+p@d6E6wJRWD61b zelSC#1CKKvP%IYfzVBBGg#yMHDxV%2BiI`(&A$)xcMxvMe+U3wtJPj#Sy@^CzYeFRKcUBq$^YrxWnW2tnXBYC)AU-gU5PW~Kwz0AC z-H{_Rl~$`I6BEU9z5cio5pLi9(Z2cDS#6cWXQeOhUAVCNBE;MO>L3hT!HpZ&Z{_n| zMJd-ge*D-;*L93BS~Z*PA@qrUY#>3Y3Y*y8LU6!Z64NAf(5e4@wi8h8!j+l_ z*(0biFBAjz(g^ z@(hi_a@9pqnsRh`b=Dm9rhO!ze;UAvLs_`%qVta@oPR|H%Xxf_-s-Z!=gJgArzm#` z>mpu;36B)g&3JgHNqmNZhWg9+a#eQGTqFyLbar)#c)CtlD#ekTHVo(HI)6)nt&oGcWwsXo5SAI_xpG6v%^NEv1+)Bqyd(! zf>A}Y<5^p$&a0sNKPu!8K$3cW`s`Sal&iw22C-t{f@e#l$E~IAw`#(DykB_xg}+~r zdZA{SN~1FQ!=vII%-!H;bHR&s67E!j%71Ir*{BZa^QL!A_MC~vA%i_{B$&vYY?IFA zBqEk1I#WAmA)<{kj#I2z#AE5rntCKshBCG-m0#59S@^=28cCB?Lwf8zG)tMnOSN^x z=li5E59d5G>b~elZ@ryetTwFGqUtRYiO9R?B92}8Tr2UbXa|a77mR|n9#~7ED0bm! z0I*fr)nAzSfc%6KDvy4GD>jpd$5dez*gX^1%6d zzP>{zD0>}!pH4;%R#v-S0M+`&aIJ=X7b4}mFfe2czXeUmH*~Z~fjasIu3bvOXka+b zlF<*^fYJQ`>Xv{y5>Q9tLac}ju_7+Wss&A#fHD(oAX_>U&v1qvH9cqPOo(A-yOu)M zAk<)GBexB$Y~(gr8yNS*Mh-wFL0?hV@T7%I!Rb?QzO)5#rY)#n3QnJ5khA&awmZVc z6h1^jRvx4?^*~l0bdRV9vhoa1+MGc@Q}DwM8nz8}+cvJ4MX3$-+JXN5f>Rp)2OW}j A!2kdN literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/html/systems/systems.html b/trunk/gosa-plugins/systems/help/en/html/systems/systems.html new file mode 100644 index 000000000..d6592b4bd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/en/html/systems/systems.html @@ -0,0 +1,213 @@ + + + + + +SYSTEM ADMINISTRATION + + + + + + + + + + + + + + + +

    + +

    +

    SYSTEM ADMINISTRATION

    +
    + +
    + +

    +


    + + + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/en/lyx-source/images/edit.png b/trunk/gosa-plugins/systems/help/en/lyx-source/images/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b69f73fe3ed52ad616c4fbc6fca2679a9e8c1d GIT binary patch literal 946 zcmV;j15NyiP)!SI-Y;XMNwpXV^<{*aN^_Vx3-ct!@s`>bqi46H0{3;+Ry)quaBJ~J?XSj52m z8_4<2#PIAXBg0pVFh+JBcH2kypF44Kam~GP<{HE8o0k~?0tl-C3?KJ1F#oy8!0>~O z;s49O3@@au7-U_78NS`V&T#4b=bvxiykyw3V+~N@9|nK`V#22X|HH`)th}5I3|}}H z-hbp{_@d#*AS5Hjz|8QMfrW*Y;mV~eKvn;Mn2iA-fG}L}_r(bYW{z7x&A^!b#K7>5 zM~y+yA(Vmh|4#-!9$tnc2M;mayK^3>l9deH=U0|9du%fr$es{1a&N2Ofs^ zGM)^AQql}8zy!d^%*gQO^-E5WZXgx`Vs3x{Vu3~JPf*mnxX8f5{*Zz3k06l4&hY9x zJA-IYEW@ua9~gfB`pNL=<0l3tMkZjIVT8Gy7a)M(Uib&{(%&CIhBN~M2QR~y=T8~l z2wO97{9|VL`T7k|BO}8A2nZd^1@wcFmECVAWI1(5D0*HkP2*F7gh&7GP8B`2R8JGoxfHwbT z_$|Q8z{<`B^!tAXHa2DkW@Z)!E-p@{@TgdZTeog9+`n_30U&@_?%sL$VbzK?JRm1B zG6Q1=6j*LX{7Jy;#>&w?K3pF07*qoM6N<$g5Dym0RR91 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/lyx-source/images/list_back.png b/trunk/gosa-plugins/systems/help/en/lyx-source/images/list_back.png new file mode 100644 index 0000000000000000000000000000000000000000..f258c112f9ce54bfc898fa5e4a48b19a64f93a29 GIT binary patch literal 862 zcmV-k1EKthP)UmE}b0_#ac zK~#9!g_BKaTxA%ApYOYOX6}r4W;&BLGYO;#&0u1swVe{7wPaxzLe!OY;SW@V&}N~y zbm2k}3*C3+#emY53gV_NY*nlhp-tK(MQKOUke{Y@GR^d6?j)D_X6}!R(1ElCUwAh! z=bXhk?-4v>ietA72!;rQ0)zsBdEKv1OEfNure<}un zTCWM;{Z9AoFRxp#Ek7kt9J`fA$g8=|j)4=eraAh8Mk=8Jpjsi*cU{JR-C%C9vKIHt zZ~yt#$knz$actH^$Q#AI-20C-eyu~u*4Dt~Jm0qMBM&G~S^Z*H8^fuX2jrZaJ$ zhwA}GM7GIgyU8!pwYJI5rpJ%Bvp6b)jD@Dt>_4Idg{&!g=y>$*inYlA`An4ekL}tP z+u{B2(KjF?214ou35cezv0T+iB@O;>4)%c%TkZ=&sY5Vdb3;nios@opTsGvT-mP?J z7GY*-yTI%c=n@*9A{w|Wy6)GfJhfhvBA-UUrxydxyd&AaTX3)s#(#fI3emLyDZtRd zY1o@tzci!WpZ>PhedvSEWLzBX$p)ljimAB<&v)zWOlgc9fa|wyIuZ>shGK`Is5>^Q zcJGHha^ialp!@b0l}dR&8aU*W4f4qb7k*n~p{!UatM)CQY!D3`Dyt7xa^AJGK(+nK zuZ&*mZ$`SV94Mss4DL1&Vp~lJ!;sSQ2D5YaO1?F5GB55-SeE5%Lk)j;zRQjDex67? z_ikS4UU oUCH{TnNEG_U!ZDPR`W6bKd~t^+_O;n=Kufz07*qoM6N<$f)k{b)&Kwi literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/lyx-source/images/list_home.png b/trunk/gosa-plugins/systems/help/en/lyx-source/images/list_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e897341f1c4af5411b4e230690036d864b7b68f4 GIT binary patch literal 865 zcmV-n1D^beP)|6eU^D;#0`5sf zK~#9!b(7y~TXh)5Ki}{7Bt1DjNlfjUv~+d0nXMg_5v&*cQDH-b`2#_`(FDc-gBB23x7Hb=7VRU8M`QwQOn9kmMvi>q+uG$BVGQHhti|d!FZg zc^+QDe;_x1*Mwk}FvvnEASf8RaeKu%>pjaA&j@W0mr#+5GMY#pPPMTj9sVkr1b(e9 zwD+^2t6$x6-rj!BAUA(EgOJzLLoZH#dM3%KR}~3M0pPboet+PxaIMM4W@#^`iy!^^ z?YZkcgWUWb8zEP7(<76gziSeY82~KZb9>j#%_L~+fbXtUxw5ibvHklqOADVoQUJrV z7rsuXhu-__oQXi<`2njNP3C42oIDmMZYh@kXpo2*Odamy!LG83b>i>j)K!(cxN4&M ze){lK(o9(3`I@a=pWM-Y#xo{T3gVU`B;?Pn#{eW_9eyi>le*RX!2o8Xrkza1H04?V zz$>FBQ=>7Y>_%iL!D}z~^JuTdH`gp&KZWcIZMQXXLIT+VTT*sA?A1Gr4n}!nGTswE zfs%r^UQcm+ybk~wF%im#6^i=nPg&SS*`8VO0TivPcgYNi518+wfx^Y|kwYn70(ok-|K|Abi{r*OG z03Npj>YhdkO>j`%AJFS-a>Y683GFRNzsOj^Wh~)hN7_Au=|fef4^;t3nLbC7F48X& z>690TjIDJAQXQR54X)j;Mi2KWq_uMs z!m|25K9Y{wFT}f*)fzsV#n!&>RTtBpo0rq-?|Y8pxX*nfKt7+3{?j=&;;M-gLK;~? rC`I7y4CwW>A!F+yP;nfm^@RT~PvIf8Te$nK?6^OJ*kIrinHQMng4_5U*WGp<0UFM3gQHE=1aHT)Gl> z`X{&IRMKz{0-QyES^qmfQ%061RA%7(?2n{CSX4j;z- z{kH}mezsIB7DMd_{w;}+w`QkDrapT67!yMZ%XZm2G_gGhLcu^^gjb){Y1vw0ZC{-0 zs{GZtabaoz!}AwE85|rq_x@QOfy6W$^rtkYj^|OLOU?8#AB8w>$kU@SHV(8zr6p41 z@%8K4?4^>97W?AOlNmjofEaC_KQTfosRIz#qcp65UBkh0d@MU46Yp|+Go13>_EiPU zNA+YT8~3Ri9bSKJj35lTUTUyibx6b{wi^hjcZ41m=wi}J30v)sok z<83aS8Sly64?=_x2tW`@3BhL53RyGy`FZmww$slkMskXk-9BnfyGP)l=AtC{T?Y|Z zJ4$&*sp}+~QVeA_j3hT!9Zt{0`1D)Fhzuc|vj5s&W4{CodYXE2G;&wfF?An8x_C`{d*~j~1 z#G{gk66leCduy-5?KNX(*!%I~kSvz~O9NP0S>eoFvflJkUv1Y_YOCT-*^V2vy?{pB z<=(!@ufI1td;15)A@BPS{)StHLZSB?7Zw)CX0y?4cVet9pExB{;z^;!ToG71Ie+a= kUr?@^rfC43VzCIoUl;;lJtwtVUjP6A07*qoM6N<$g5ejSXaE2J literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/lyx-source/images/list_root.png b/trunk/gosa-plugins/systems/help/en/lyx-source/images/list_root.png new file mode 100644 index 0000000000000000000000000000000000000000..56a6a5d3a97fbd666430a1f8130d8d8b8e4c705c GIT binary patch literal 852 zcmV-a1FQUrP)&ghCi$Wl@SqN?v z7cShWi_%qvf|q8cqN_q9LQ92OD%xpnGFE6}5;FN|oV2Dhb7yip_uoaxz_c!Ub_d?~ zcY2vQ2pxXw~W_Uo(U*Sl+p<0dMepJbm~=|<1b2j5)uI04Y|8uG5K?o`SQbmyZp*K zzkdD3^>#pEVn#zKcM31<9s2NOobE2QebxCN>i~RkQpfcJE?%i}rMR)F+4m3Mn0)^q z2{15n`ioR5`BtVMW|mwAQ!17naPeA$vtvnK8{Wm@x{d9G9NZUUVM8V=b-Ldy$g8q& z=1v?L`|j=IdOX`7^3iCLKg(NOF19#3mIUB&!)1Q`36||+wF2}mk3SZ}A>V0!qXHw* zxTg1Z`R%i>mE5+uQgt|Ysn$XMx78O=VxeX_gU3`L-=`@&GCic&X1ZerNcToNc7VHO zn79x}C~95>gyTzAHYHJ2@H|tPGR-1h8RT@h)0rxl-kAMoY7lA~D|&cWm_@YiaHDgzV&3J|oaTYdiQv{E!q zSi-j^6}v*F#{?kLV{+lADsvCq?Jk^x1N}Aj?>5QlCW>7l;ys#5s>|yVATvB#Y_@{Y z>>k;7>+dIMF%K=~aj$HVOGc?ReHI=x&|)4=%VKV6V{O2_@v)}V7TVNa9-kU?A_G^C z=JovtGa5p40u95E*_9?U^VPMqd-HT!+`nlUhS{NdW$fDlE0X;zk=XTKE)~^wcgFyz zHEhZiXUn##Qz`HFuTpa9o?#f~Gv5d>K0Y2@^$zVd<=`=)sChxCh`?Iw^Jk}%>he0U eX&8pHqyG=U>N9lRd(I620000(~PhH literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/lyx-source/images/rocket.png b/trunk/gosa-plugins/systems/help/en/lyx-source/images/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr6`%jf|2$4r$s+spf+u-Q>g|C~v${^~-@3D2KhAWzjp*~g402!Z zUHKi(9mVwYR{HU3yQ(XJdfgr7_kt7B*ZVg zlZA`E-HR!XFqoPrv4|=5q??46nDTS`=Vp~s9W4h#9%&XB{&YOW(>Ss1gowdH#>bK? z8Y|h_G_JnXKEGa!RbjKC&z^}6{xug8QpM!9)-qhxW!6-X$b8VxoWq_ay;SG)q^zy4 zl#WYx-skypq>N1rh_uAIJMX_g{(N)1i3HE2^Uo#sN-{sl`!nt7bPI-)m$;^1)Ml8r sPTcnHd4|#lq7}@qf*h7KXm7~hGi}kLyMEkXfZ@&H>FVdQ&MBb@00WM*LjV8( literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_phone.png b/trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_phone.png new file mode 100644 index 0000000000000000000000000000000000000000..45714d175d5098439b9395d2ad740dd172177351 GIT binary patch literal 660 zcmV;F0&D$=P)ScHQP zVNsA?B5yl{8NpT%jR-T+VW~W7bLyOX=JxFA)8R2Gh_*L;;LR64Z{FYc`=dkzr4+?* z<)P)hc&==?T+y2_U_Jp0>s(f)3f!GoiNvt^^GqkZZ%K+H$)jhkV9NBX24^= zy`2oR&@%|!?oa?C@~_&wGJ=TsL?Xx@7oW`|?D4-cxHcyK<8^3aGLTN^{5Muy5bOp{ z0nNMepMj4MdV=ahDG}lRYqZrbp9V7NO)c^=Oj}nUnSzV0w85CC0Zs#f_x67DEW|+d zp#Zzag2gM33+=)19r6bnnVnz3#9=Q7yCE-l&fL^H-PK#}@nB{%xIEs?9!X6-4pnx5ZCB7` ukB=b4bo(13LTBgT2AscHtkU1M|HLl}ISjH0h?;Bw0000bO~EDAyA<{^6rx^a1=~Y^K=m;2QG9De zWspMjCgp?npo9YlUPFW}j6L|aU~}H(xIcD(eS5guysq%T;rsa>&iS0r_na@mS-ZHp zy1E^SM6NrI0|4mi>Vj#S&@>G*Gc(U6N&4t5plt*s6bc3V`};371BPM1Fbohv;Pd$c zZTbHYfH7t@PUyN0UDsh41~g3rA;f9V=i2TjrIdL)H{CQ%Se9j;t3VXRtE#H+4?>MJZuoeB#08 zuT3pm$+C0pHC%7l%F0R}z!f?jn|>1R4R;(KAHue5IP7%L{&yGL$;J)%8!^kWK;QcD z5D>@4#_nV7+gd^SqcEkauw(g{$+FC<)oP=gz}PlUF%w+8jTR;w8ymj`LFl2Bf>H{O z<3I=jAq3&C*MP)h05<`M4Glj5>;vg#B=d<+v{)=wgTY`=E|){OT!yNup1sWBMfxQ$ zybMHl-B5NC*aPzSawvaK)#%R7&hF6A(7@8t61KLs5R1jY^E?=1SiJSYqoCvxMCXC% zJ_gef_jsO4v literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_server.png b/trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_server.png new file mode 100644 index 0000000000000000000000000000000000000000..84f65700a80e318827832736b1d104056fc7956a GIT binary patch literal 813 zcmV+|1JeA7P)GHhu{cUWMP-z>&em3^x@O$>{U>05Y#js^-w&G-iPHD$Pak`^swSa? z6zuGR>jD-6A4*FV&vmsnDy1iWoSl0W5q=K>T~-#o*3eMZTU#5KN(o#ac0CZq4z5@1 zXCV?5bi9yqq&hM-H#OgDjJd9>tK&U&bqQJ20H7pzfae1Ov;?al^g$?SKi3p1i#;^D zxR~)}{{ALEd$*yWMasf427~~uL1}3IPLi6E#EwE^Ep)$hQYobxWGDsi{P`}KyVt=7 ztw0w2*WQrSk4d!LfAty%l3B^A@e-`XkojaO^X08u_VVnIUC$f4zG>`^Ypfl>TI*Ol z%|2VFz|-upxNu=Ova$Zh$Ng`ef3xC|DBFL-kqE?NaQrg~>DPfX!0DogJHQeQW|956 zMm0BghI8|i6P{Nd7!!G>@_1bQwG9vcf#rukpz8A;2qxjgd7u<#UV)oGA^MPDwlsj& zirw9vk0x$>v%Z;6U1@A?j9B2Qse=wS3IPy{}wSqVNOv)5))HuHAp& zkG>skDkts0OcoZikah~f!5lmZq#Z0dduSJw(g-2G9{Xab`|4U-*Dw6=9)RdWSaNoc r2e2&W5Pb;opVxU%6ohFj4yOMF7(FZx`)`9&00000NkvXXu0mjf`d(&z literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_terminal.png b/trunk/gosa-plugins/systems/help/en/lyx-source/images/select_new_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..a218480c9b94f81f9b97efa4ca1d169d59a3baf3 GIT binary patch literal 776 zcmV+j1NZ!iP)ll$3Z}?l(^XPL`Uk`oEFDNKU6@T* zDj0O(&Wt-Lw9xLvMail~vM^@RR3fJBDhU*1Fh9nLouTpFcTX3S1XAV;2ktrC@0aiQ z+$*(O?c1rTscT^v+B8l1KMI8c0IG_J;GEN$nVFxbr>DOFc4T>Z`DLL{h}YKED3{B4 z?+*y<^&-O7))sLblgVTl8X6jIwOY??KA+cxg#~73XBiwEq?Zc-V+@T(gKD+P=;)|7 z#^eC3s%jKPwA*b~S66$I_t5Ed$Ye5XZ*ME00Cso4;^HE49HXlH1QFTqMTE`GO-4pW zs8lNZcWe*@0IaO6&}=q|q6lj(A_9PO4(A+6lCZI{L8sH{60Pk<6A^+Sz!-z~9_Jk1 zdsG$gJ>GkgB%$4IqpGOtfjwDc4AxqT#UiCriCiv67={>QP*t3ByxG~|)s1!jP2f&5 zJ@8USL=X|IwS-|vHk&1v%MnEpi&uVUsrH;x+Kpp?a(_Q3o}3LD*Vi8dSP`-1a+$HQ zF^a`v*TJDf+=_3(WFI_z$-{5{g2_J2>pWlnbQP_5-VPsoqw=@P+}zw!wOXz0*-g`w zPLkl#l%qeEU~&RD2^`-w{RglF_kZB__U&I~U|`_G@$vBq5y|>)IQN0-afQtDG=1^i z@PjLy21b7C@}Hi8XYi=-{i{zeU%t@u!+ZjteGFe~9aWuB)w`-XyIXg=vpNbK=_zmt zKJSwIROiwCbL&0z^+0t#P`CB2Y8?%F39Q3<`xo2)(c#t*4M-lIBlzb}SbB|guAv+A zm={gtE3!Qu?4p>56Cu2RA$q5#b=2J>y?89XS%UL`0Q?929y}*B`c6{-0000 ztyzu52#rt`_m&9m+yoK3sE9}x(TJus<4oJh%>A8vJ{L0?NA$o4?}6`q&%=8Z!0PJi zTOV9|@0w9!`pw}bq zXN&^0F=(av{kJx0rkI>8kj9C`iyok!2P;9)Q+3j-gU1P^=Uvm-Bcz2V*qW3Q3%D_t^y^>vHs) zFR|7l*8UUV8VAoc%+$)1D<#U69KP@JxqSkFbLrjDch;&U=D$6`>3aIcyF&`r*491| z5qZ$-%e_`te)*#*(m+INB3q1f6wgU^-IHv~lTPPoR~m={n3|e8vAn!|*%)PJ4%bgE zompC_R;%8zub+gs&jU{bPYs{@3Ah6v-b7tNF@6>o7tihN>^y3>+p@d6E6wJRWD61b zelSC#1CKKvP%IYfzVBBGg#yMHDxV%2BiI`(&A$)xcMxvMe+U3wtJPj#Sy@^CzYeFRKcUBq$^YrxWnW2tnXBYC)AU-gU5PW~Kwz0AC z-H{_Rl~$`I6BEU9z5cio5pLi9(Z2cDS#6cWXQeOhUAVCNBE;MO>L3hT!HpZ&Z{_n| zMJd-ge*D-;*L93BS~Z*P + + + + + +\begin_inset Text + +\layout Standard + +Terminal template +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Make a choice in the scroll list of department where the terminal is +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Root server +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Swap server +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mode +\end_inset + + +\begin_inset Text + +\layout Standard + +Make a choice on the scroll list. + The administrator can deactivate the terminal or choose the display's mode. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Syslog server +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +NTP server +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Network settings +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the IP-address of the terminal +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the MAC-address of the terminal +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Action +\layout Standard + + +\color red +? +\layout Subsubsection +\added_space_top bigskip +Devices +\layout Subsubsection* + +Keyboard +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Model +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the keyboard's model in the scroll list. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Layout +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the language's keyboard in the scroll list. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Variant +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Mouse +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Type +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the mouse's model in the scroll list. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Port +\end_inset + + +\begin_inset Text + +\layout Standard + +Select on the scroll list the port on wich the mouse will be connected. +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Telephone hardware +\layout Standard + +Mention the type of the telephone. + (pour un terminal ?) +\layout Subsubsection* +\added_space_top medskip +Graphic device +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Driver +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the graphic driver in the scroll list +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Resolution +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the monitors's resolution in the scroll list +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Color depth +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the color depth of the monitor in the scroll list +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Display device +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Type +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +HSync +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +VSync +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Remote desktop +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Connect method +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the type of remote connection to another terminal +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Terminal server +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Font server +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Print device +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Provide print services +\end_inset + + +\begin_inset Text + +\layout Standard + +Check if you want allow to the terminal a print service +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Spool server +\end_inset + + +\begin_inset Text + +\layout Standard + +Choose on the scroll list the spool server +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Scan device +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Provide scan services +\end_inset + + +\begin_inset Text + +\layout Standard + +Check if you want allow to the terminal a scan service +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Model +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the scan device's model in the scroll list +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Startup +\layout Subsubsection* + +Boot parameters +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +LDAP server +\end_inset + + +\begin_inset Text + +\layout Standard + +Select in the scroll list the LDAP server where the terminal is configured +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Boot kernel +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the kernel that is used on the boot +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Custom options +\end_inset + + +\begin_inset Text + +\layout Standard + +? +\end_inset + + + + +\end_inset + + +\layout Itemize + +use graphical bootup +\layout Standard + +Check if you want a graphical interface when booting. +\layout Itemize + +use standard linux textual bootup +\layout Standard + +? +\layout Itemize + +use debug mode for startup +\layout Standard + +? +\layout Standard + +Trois points à expliquer +\layout Subsubsection* +\added_space_top medskip +Kernel modules (format : name parameters) +\layout Standard + + +\color red +? +\layout Standard + +Utiliser le bouton Ajouter après avoir rempli le champ qui le précède et + le bouton Supprimer après avoir séléctionné dans la liste. +\layout Subsubsection* +\added_space_top medskip +Shares +\layout Standard + +? +\layout Subsubsection +\added_space_top bigskip +Printer +\layout Subsubsection* + +General +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Printer name +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the name of the printer linked to the terminal +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Put a short description about the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Select on the scroll list the department where the terminal is +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Details +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Printer location +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention where the printer is physically in the organization +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Printer URL +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the URL of the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Driver +\end_inset + + +\begin_inset Text + +\layout Standard + +Press the +\emph on +Edit +\emph default + button to add a driver to make work the printer +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Permissions +\layout Itemize + +Users which are allowed to use this printer +\layout Standard + +Insert in the field the user or the group allowed to use the printer. + You have to use the +\emph on +Add user +\emph default + button to add users and the +\emph on +Add group +\emph default + button to add groups. +\layout Itemize + +Users which are allowed to administrate this printer +\layout Standard + +Insert in the field the user or the group allowed to administrate the printer. + You have to use the +\emph on +Add user +\emph default + button to add users and the +\emph on +Add group +\emph default + button to add groups. +\layout Subsubsection* + +Network settings +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the IP-address of the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the MAC-address of the printer +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Information +\layout Standard + +? +\layout Subsubsection + +References +\layout Standard + + +\color red +? +\layout Subsection +\pagebreak_top +Configure a workstation +\layout Subsubsection + +Generic +\layout Subsubsection* + +Properties +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Workstation template +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\color black + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Location +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the department in th scroll list +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mode +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the mode in the scroll list. + The administrator can deactivate ? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Syslog server +\end_inset + + +\begin_inset Text + +\layout Standard + +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +NTP server +\end_inset + + +\begin_inset Text + +\layout Standard + +? +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Network settings +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the IP-address of the workstation +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the MAC-address of the workstation +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Action +\layout Standard + + +\color red +? +\layout Subsubsection +\added_space_top bigskip +Devices +\layout Subsubsection* + +Keyboard +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Model +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the keyboard's model in the scroll list. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Layout +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the language's keyboard in the scroll list. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Variant +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Mouse +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Type +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the mouse's model in the scroll list. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Port +\end_inset + + +\begin_inset Text + +\layout Standard + +Select on the scroll list the port on wich the mouse will be connected. +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Telephone hardware +\layout Standard + +Mention the type of the telephone. +\layout Subsubsection* +\added_space_top medskip +Graphic device +\layout Standard + +Graphic device +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Driver +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the graphic driver in the scroll list +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Resolution +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the monitors's resolution in the scroll list +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Color depth +\end_inset + + +\begin_inset Text + +\layout Standard + +Select the color depth of the monitor in the scroll list +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Display device +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Type +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +HSync +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +VSync +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Scan device +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Provide scan services +\end_inset + + +\begin_inset Text + +\layout Standard + +Check if you want allow to the terminal a scan service +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Startup +\layout Subsubsection* + +Boot parameters +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +LDAP server +\end_inset + + +\begin_inset Text + +\layout Standard + +Select in the scroll list the LDAP server where the workstation is configured +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Boot kernel +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the kernel that is used on the boot +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Custom options +\end_inset + + +\begin_inset Text + +\layout Standard + +? +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +FAI server +\layout Standard + +Mention the FAI server used. +\layout Subsubsection* +\added_space_top medskip +Assigned FAI casses +\layout Standard + +? +\layout Subsubsection* +\added_space_top medskip +Kernel modules (format : name parameters) +\layout Standard + + +\color red +? +\layout Subsubsection* +\added_space_top medskip +Shares +\layout Standard + + +\color red +? +\layout Subsubsection +\added_space_top bigskip +Printer +\layout Standard + +General +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Printer name +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the name of the printer linked to the workstation +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Put a short description about the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Select on the scroll list the department where the workstation is +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Details +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Printer location +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention where the printer is physically in the organization +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Printer URL +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the URL of the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Driver +\end_inset + + +\begin_inset Text + +\layout Standard + +Press the +\emph on +Edit +\emph default + button to add a driver to make work the printer +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Permissions +\layout Itemize + +Users which are allowed to use this printer +\layout Standard + +Insert in the field the user or the group allowed to use the printer. + You have to use the +\emph on +Add user +\emph default + button to add users and the +\emph on +Add group +\emph default + button to add groups. +\layout Itemize + +Users which are allowed to administrate this printer +\layout Standard + +Insert in the field the user or the group allowed to administrate the printer. + You have to use the +\emph on +Add user +\emph default + button to add users and the +\emph on +Add group +\emph default + button to add groups. +\layout Subsubsection* + +Network settings +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the IP-address of the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the MAC-address of the printer +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Information +\layout Standard +\added_space_bottom medskip +? +\layout Subsubsection + +References +\layout Standard + + +\color red +? +\layout Subsection +\pagebreak_top +Configure a server +\layout Subsubsection + +Generic +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Server name +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the name's server +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Select in the scroll list the department which the server is linked +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert a short description about the server +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Network settings +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the IP-address of the server +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the MAC-address of the server +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Action +\layout Standard + + +\color red +? +\layout Subsubsection +\added_space_top bigskip +Databases +\layout Standard + +This tab contains the databases linked to the to the server. + The administrator can check one or many propositions of databases according + to the system configuration and the user's access. +\layout Standard + +The administrator have the choice between : +\layout Itemize + +Kerberos kadmin access +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Kerberos Realm +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Admin user +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Password +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +FAX database +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +FAX DB user +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Password +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +Asterisk Management +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Asterisk DB user +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Password +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Country dial prefix +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Local dial prefix +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +IMAP admin access +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Server identifier +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Connect URL +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Admin user +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Password +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Sieve port +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +Logging database +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Logging DB user +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Password +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Subsubsection +\added_space_top bigskip +Services +\layout Itemize + +Nfs Export +\layout Standard + + +\color red +? +\layout Itemize +\added_space_top medskip +Time Service +\layout Standard + + +\color red +? +\layout Itemize +\added_space_top medskip +LDAP Service +\layout Standard + + +\color red +? +\layout Itemize +\added_space_top medskip +Terminal Service +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Temporary disable login +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Font path +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\end_inset + + +\layout Itemize +\added_space_top medskip +Syslog Service +\layout Standard + + +\color red +? +\layout Itemize +\added_space_top medskip +Print Service +\layout Standard + + +\color red +? +\layout Subsubsection +\added_space_top bigskip +Information +\layout Standard + +This tab give a summary of the sytem's score. +\layout Subsubsection +\added_space_top bigskip +References +\layout Standard + + +\color red +? +\layout Subsection +\pagebreak_top +Configure a printer +\layout Subsubsection + +Generic +\layout Subsubsection* + +General +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Printer name +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the name of the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Put a short description about the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Select on the scroll list the department where the printer is +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Details +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Printer location +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention where the printer is physically in the organization +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Printer URL +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the URL of the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Driver +\end_inset + + +\begin_inset Text + +\layout Standard + +Press the +\emph on +Edit +\emph default + button to add a driver to make work the printer +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Permissions +\layout Itemize + +Users which are allowed to use this printer +\layout Standard + +Insert in the field the user or the group allowed to use the printer. + You have to use the +\emph on +Add user +\emph default + button to add users and the +\emph on +Add group +\emph default + button to add groups. +\layout Itemize + +Users which are allowed to administrate this printer +\layout Standard + +Insert in the field the user or the group allowed to administrate the printer. + You have to use the +\emph on +Add user +\emph default + button to add users and the +\emph on +Add group +\emph default + button to add groups. +\layout Subsubsection* + +Network settings +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the IP-address of the printer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC-address +\end_inset + + +\begin_inset Text + +\layout Standard + +Mention the MAC-address of the printer +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top medskip +Reference +\layout Standard + +? +\layout Subsection +\pagebreak_top +Configure a telephone +\layout Subsubsection + +Generic +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + + +\color black +Phone name +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the name of the telephone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Choose in the scroll list the name of the department where is the telephone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert a short description about the telephone +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Advanced phone settings +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Phone type +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante le type du téléphone : SIP, IAX ou CAPI +\end_inset + + + + +\end_inset + + +\layout Itemize +\added_space_top bigskip +If SIP is selected you must fill in the following fields : +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Mode +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +DTMF mode +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Default IP +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Response timeout +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top bigskip +If IAX is selected you must fill in the following fields : +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Modus +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Default IP +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Response timeout +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Authtype +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Secret +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Account code +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Trunk lines +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Hosts that are allowed to connect +\end_inset + + +\begin_inset Text + +\layout Standard + +Utilisez le bouton Ajouter pour insérer le nom d'hôte pouvant se connecter. + Le bouton Supprimer sert à effacer le nom d'hôte sélectionné. + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Hosts that are not allowed to connect +\end_inset + + +\begin_inset Text + +\layout Standard + +Utilisez le bouton Ajouter pour insérer le nom d'hôte ne pouvant pas se + connecter. + Le bouton Supprimer sert à effacer le nom d'hôte sélectionné. + +\color red +? +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top bigskip +If CAPI is selected you must fill in the following field : +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +MSN +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Subsubsection* +\added_space_top medskip +Network settings +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP +\color black +-address +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the IP-address of the telephone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC +\color black +-address +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the MAC-address of the telephone +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +References +\layout Standard + + +\color red +? +\layout Subsection +\pagebreak_top +Configure a component +\layout Subsubsection + +Generic +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Device name +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the name of the component +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Choose in the scroll list the name of the department where is the component +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert a short description about the component +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Network settings +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +IP +\color black +-address +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the IP-address of the component +\end_inset + + + + +\begin_inset Text + +\layout Standard + +MAC +\color black +-address +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insert the MAC-address of the component +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +References +\layout Standard + + +\color red +? +\the_end diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/WARNINGS b/trunk/gosa-plugins/systems/help/fr/html/systems/WARNINGS new file mode 100644 index 000000000..e6a7e599d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/WARNINGS @@ -0,0 +1,5 @@ +No implementation found for style `fontenc' +No implementation found for style `geometry' +No implementation found for style `graphicx' + +There is no author for this document. diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/index.html b/trunk/gosa-plugins/systems/help/fr/html/systems/index.html new file mode 100644 index 000000000..26a02cebd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/index.html @@ -0,0 +1,217 @@ + + + + + +ADMINISTRATION DES SYSTEMES + + + + + + + + + + + + + + + +

    + +

    +

    ADMINISTRATION DES SYSTEMES

    +
    + +
    + +

    +


    + + + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/labels.pl b/trunk/gosa-plugins/systems/help/fr/html/systems/labels.pl new file mode 100644 index 000000000..34bd4cc1b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/labels.pl @@ -0,0 +1,13 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate labels original text with physical files. + + +1; + + +# LaTeX2HTML 2002-2-1 (1.71) +# labels from external_latex_labels array. + + +1; + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/list_back.png b/trunk/gosa-plugins/systems/help/fr/html/systems/list_back.png new file mode 100644 index 0000000000000000000000000000000000000000..f258c112f9ce54bfc898fa5e4a48b19a64f93a29 GIT binary patch literal 862 zcmV-k1EKthP)UmE}b0_#ac zK~#9!g_BKaTxA%ApYOYOX6}r4W;&BLGYO;#&0u1swVe{7wPaxzLe!OY;SW@V&}N~y zbm2k}3*C3+#emY53gV_NY*nlhp-tK(MQKOUke{Y@GR^d6?j)D_X6}!R(1ElCUwAh! z=bXhk?-4v>ietA72!;rQ0)zsBdEKv1OEfNure<}un zTCWM;{Z9AoFRxp#Ek7kt9J`fA$g8=|j)4=eraAh8Mk=8Jpjsi*cU{JR-C%C9vKIHt zZ~yt#$knz$actH^$Q#AI-20C-eyu~u*4Dt~Jm0qMBM&G~S^Z*H8^fuX2jrZaJ$ zhwA}GM7GIgyU8!pwYJI5rpJ%Bvp6b)jD@Dt>_4Idg{&!g=y>$*inYlA`An4ekL}tP z+u{B2(KjF?214ou35cezv0T+iB@O;>4)%c%TkZ=&sY5Vdb3;nios@opTsGvT-mP?J z7GY*-yTI%c=n@*9A{w|Wy6)GfJhfhvBA-UUrxydxyd&AaTX3)s#(#fI3emLyDZtRd zY1o@tzci!WpZ>PhedvSEWLzBX$p)ljimAB<&v)zWOlgc9fa|wyIuZ>shGK`Is5>^Q zcJGHha^ialp!@b0l}dR&8aU*W4f4qb7k*n~p{!UatM)CQY!D3`Dyt7xa^AJGK(+nK zuZ&*mZ$`SV94Mss4DL1&Vp~lJ!;sSQ2D5YaO1?F5GB55-SeE5%Lk)j;zRQjDex67? z_ikS4UU oUCH{TnNEG_U!ZDPR`W6bKd~t^+_O;n=Kufz07*qoM6N<$f)k{b)&Kwi literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/list_home.png b/trunk/gosa-plugins/systems/help/fr/html/systems/list_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e897341f1c4af5411b4e230690036d864b7b68f4 GIT binary patch literal 865 zcmV-n1D^beP)|6eU^D;#0`5sf zK~#9!b(7y~TXh)5Ki}{7Bt1DjNlfjUv~+d0nXMg_5v&*cQDH-b`2#_`(FDc-gBB23x7Hb=7VRU8M`QwQOn9kmMvi>q+uG$BVGQHhti|d!FZg zc^+QDe;_x1*Mwk}FvvnEASf8RaeKu%>pjaA&j@W0mr#+5GMY#pPPMTj9sVkr1b(e9 zwD+^2t6$x6-rj!BAUA(EgOJzLLoZH#dM3%KR}~3M0pPboet+PxaIMM4W@#^`iy!^^ z?YZkcgWUWb8zEP7(<76gziSeY82~KZb9>j#%_L~+fbXtUxw5ibvHklqOADVoQUJrV z7rsuXhu-__oQXi<`2njNP3C42oIDmMZYh@kXpo2*Odamy!LG83b>i>j)K!(cxN4&M ze){lK(o9(3`I@a=pWM-Y#xo{T3gVU`B;?Pn#{eW_9eyi>le*RX!2o8Xrkza1H04?V zz$>FBQ=>7Y>_%iL!D}z~^JuTdH`gp&KZWcIZMQXXLIT+VTT*sA?A1Gr4n}!nGTswE zfs%r^UQcm+ybk~wF%im#6^i=nPg&SS*`8VO0TivPcgYNi518+wfx^Y|kwYn70(ok-|K|Abi{r*OG z03Npj>YhdkO>j`%AJFS-a>Y683GFRNzsOj^Wh~)hN7_Au=|fef4^;t3nLbC7F48X& z>690TjIDJAQXQR54X)j;Mi2KWq_uMs z!m|25K9Y{wFT}f*)fzsV#n!&>RTtBpo0rq-?|Y8pxX*nfKt7+3{?j=&;;M-gLK;~? rC`I7y4CwW>A!F+yP;nfm^@RT~PvI&ghCi$Wl@SqN?v z7cShWi_%qvf|q8cqN_q9LQ92OD%xpnGFE6}5;FN|oV2Dhb7yip_uoaxz_c!Ub_d?~ zcY2vQ2pxXw~W_Uo(U*Sl+p<0dMepJbm~=|<1b2j5)uI04Y|8uG5K?o`SQbmyZp*K zzkdD3^>#pEVn#zKcM31<9s2NOobE2QebxCN>i~RkQpfcJE?%i}rMR)F+4m3Mn0)^q z2{15n`ioR5`BtVMW|mwAQ!17naPeA$vtvnK8{Wm@x{d9G9NZUUVM8V=b-Ldy$g8q& z=1v?L`|j=IdOX`7^3iCLKg(NOF19#3mIUB&!)1Q`36||+wF2}mk3SZ}A>V0!qXHw* zxTg1Z`R%i>mE5+uQgt|Ysn$XMx78O=VxeX_gU3`L-=`@&GCic&X1ZerNcToNc7VHO zn79x}C~95>gyTzAHYHJ2@H|tPGR-1h8RT@h)0rxl-kAMoY7lA~D|&cWm_@YiaHDgzV&3J|oaTYdiQv{E!q zSi-j^6}v*F#{?kLV{+lADsvCq?Jk^x1N}Aj?>5QlCW>7l;ys#5s>|yVATvB#Y_@{Y z>>k;7>+dIMF%K=~aj$HVOGc?ReHI=x&|)4=%VKV6V{O2_@v)}V7TVNa9-kU?A_G^C z=JovtGa5p40u95E*_9?U^VPMqd-HT!+`nlUhS{NdW$fDlE0X;zk=XTKE)~^wcgFyz zHEhZiXUn##Qz`HFuTpa9o?#f~Gv5d>K0Y2@^$zVd<=`=)sChxCh`?Iw^Jk}%>he0U eX&8pHqyG=U>N9lRd(I620000(~PhH literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node1.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node1.html new file mode 100644 index 000000000..b9bae01b1 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node1.html @@ -0,0 +1,340 @@ + + + + + +Systèmes + + + + + + + + + + + + + + + +

    +Systèmes +

    + +

    +L'administrateur peut ajouter et configurer les systèmes à partir +du bouton Systèmes dans le menu de gauche +dans la partie Administration. La page Administration +du système s'affiche. + +

    +La page est divisée en deux colonnes : + +

    +- la première colonne est destinée à afficher les systèmes, + +

    +- la deuxième colonne contient les icônes qui sont les actions que +l'on peut exécuter sur ces systèmes. + +

    +Les flêches en entête ( Image list_back, Image list_root, +Image list_home ) servent à modifier l'affichage +selon le département. Ces icônes prédominent sur toutes autres formes +de séléction d'affichage. + +

    + +

    +
    +C'est à partir de la page Administration du système que l'administrateur +gère les systèmes. + +

    +Il est possible de modifier l'affichage des systèmes en utilisant +le tableau intitulé Filtres Image rocket. + +

    +L'administrateur peut faire une recherche sur le nom : + +

    +- cliquez sur l'astérisque (étoile : *) pour voir apparaître tous +les systèmes; + +

    +- cliquez sur une lettre et tous les noms de systèmes débutant par +cette lettre s'afficheront; + +

    +- cliquez sur un numéro et tous les noms de systèmes débutant par +ce numéro s'afficheront. + +

    +L'administrateur peut faire une recherche à partir du type de système +: + +

    +- cochez une ou plusieurs propositions + +

    +Ou encore la recherche rapide Image search : remplissez +le champ par le nom du système et ensuite cliquez sur le bouton Appliquer. + +

    + +

    +
    +Pour sélectionner un système à configurer, l'administrateur doit cliquer +selon les systèmes sur les boutons suivant: + +

    + +

      +
    • Image select_new_terminal pour ouvrir, créer ou +configurer un terminal, +
    • +
    • Image select_new_workstation pour ouvrir, créer +ou configurer une station de travail, +
    • +
    • Image select_new_server pour ouvrir, créer ou +configurer un serveur, +
    • +
    • Image select_new_printer pour ouvrir, créer ou +configurer une imprimante, +
    • +
    • Image select_new_phone pour ouvrir, créer ou configurer +un poste de téléphone, +
    • +
    • Image select_new_component pour ouvrir, créer +ou configurer un composant réseau. +
    • +
    +Apparaît l'espace de configuration pour ces systèmes. + +

    +Pour enregistrer la configuration, cliquez sur le bouton Terminé, +pour revenir à la page précédente cliquez sur le bouton Annuler. + +

    + + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node10.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node10.html new file mode 100644 index 000000000..a119141cd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node10.html @@ -0,0 +1,46 @@ + + + + + +Matériel téléphonique + + + + + + + + + + + + + + + +

    +Matériel téléphonique +

    + +

    +Précisez de quel type de téléphone il s'agit. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node11.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node11.html new file mode 100644 index 000000000..af0e02cd8 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node11.html @@ -0,0 +1,56 @@ + + + + + +Carte graphique + + + + + + + + + + + + + + + +

    +Carte graphique +

    + +

    + + + + + + + + + + +
    PiloteSélectionner le pilote de la carte graphique
    RésolutionSélectionnez la résolution de l'écran du terminal dans la liste déroulante.
    Profondeur des couleursSélectionner le nombre de couleurs à afficher
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node12.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node12.html new file mode 100644 index 000000000..b91c74aa2 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node12.html @@ -0,0 +1,56 @@ + + + + + +Ecran + + + + + + + + + + + + + + + +

    +Ecran +

    + +

    + + + + + + + + + + +
    Type 
    Fréquence de synchronisation HorizontaleIndiquez la fréquence
    Fréquence de synchronisation VerticaleIndiquez la fréquence
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node13.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node13.html new file mode 100644 index 000000000..69c987f0c --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node13.html @@ -0,0 +1,56 @@ + + + + + +Bureau distant + + + + + + + + + + + + + + + +

    +Bureau distant +

    + +

    + + + + + + + + + + +
    Méthode de connexionSélectionnez le protocole utilisé dans la liste déroulante
    Serveur de terminauxSélectionnez le serveur du terminal dans la liste déroulante
    Police du serveurSélectionnez le serveur de police dans la liste déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node14.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node14.html new file mode 100644 index 000000000..5d2e758b4 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node14.html @@ -0,0 +1,53 @@ + + + + + +Imprimante + + + + + + + + + + + + + + + +

    +Imprimante +

    + +

    + + + + + + + +
    Fournir un service d'impressionCochez pour indiquer si le terminal peut imprimer
    Serveur de file d'attenteSélectionnez le serveur d'impression dans la liste déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node15.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node15.html new file mode 100644 index 000000000..469a1f75f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node15.html @@ -0,0 +1,53 @@ + + + + + +Scanner + + + + + + + + + + + + + + + +

    +Scanner +

    + +

    + + + + + + + +
    Fournir un service de scannerCochez pour indiquer si le terminal peut scanner
    ModèleSélectionnez le modèle du scanner dans la liste déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node16.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node16.html new file mode 100644 index 000000000..895d4a823 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node16.html @@ -0,0 +1,37 @@ + + + + + +Démarrage + + + + + + + + + + + + + + + +

    +Démarrage +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node17.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node17.html new file mode 100644 index 000000000..ce35fd1a5 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node17.html @@ -0,0 +1,62 @@ + + + + + +Paramètre de démarrage + + + + + + + + + + + + + + + +

    +Paramètre de démarrage +

    + +

    + + + + + + + + + + +
    Serveur LDAPSélectionnez le serveur ldap correspondant dans la liste déroulante
    Kernel utilisé au démarrageNom du kernel utilisé au démarrage
    Options personnaliséesOptions à passer au kernel lors du démarrage
    + +

    + +

      +
    • Cochez pour sélectionnez le mode de démarrage, par défaut le mode +graphique est activé. +
    • +
    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node18.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node18.html new file mode 100644 index 000000000..24d24459e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node18.html @@ -0,0 +1,48 @@ + + + + + +Modules du kernel (format : nom paramètre) + + + + + + + + + + + + + + + +

    +Modules du kernel (format : nom paramètre) +

    + +

    +Introduisez le nom du module à charger au démarrage suivi de ses paramètres, +ensuite cliquez sur Ajouter. Utilisez le bouton Supprimer +après avoir sélectionné le module. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node19.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node19.html new file mode 100644 index 000000000..4e0e608d5 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node19.html @@ -0,0 +1,46 @@ + + + + + +Partages + + + + + + + + + + + + + + + +

    +Partages +

    + +

    +Utilisez le bouton Supprimer après avoir sélectionné le partage. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node2.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node2.html new file mode 100644 index 000000000..4d9a356d0 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node2.html @@ -0,0 +1,92 @@ + + + + + +Configurer un terminal + + + + + + + + + + + + + + + +

    +Configurer un terminal +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node20.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node20.html new file mode 100644 index 000000000..e60612794 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node20.html @@ -0,0 +1,37 @@ + + + + + +Imprimante + + + + + + + + + + + + + + + +

    +Imprimante +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node21.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node21.html new file mode 100644 index 000000000..f157ee6bb --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node21.html @@ -0,0 +1,56 @@ + + + + + +Général + + + + + + + + + + + + + + + +

    +Général +

    + +

    + + + + + + + + + + +
    Nom de l'imprimante*Introduisez le nom de l'imprimante
    DescriptionIntroduisez une description, un commentaire sur l'imprimante
    Base*Faites votre sélection dans la liste déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node22.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node22.html new file mode 100644 index 000000000..4077c2b46 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node22.html @@ -0,0 +1,66 @@ + + + + + +Détails + + + + + + + + + + + + + + + +

    +Détails +

    + +

    + + + + + + + +
    +
    +Localisation de l'imprimante +
    +

    +

    +
    Indiquez le lieu où se trouve physiquement l'imprimante
    URL de l'imprimanteIntroduisez l'url qui permet d'accéder à l'imprimante
    + +

    + +

      +
    • Le bouton Editer permet de télécharger un pilote d'imprimante +depuis votre arborescence. Utilisez le bouton Supprimer pour +effacer le pilote choisi. +
    • +
    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node23.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node23.html new file mode 100644 index 000000000..fd90b0edd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node23.html @@ -0,0 +1,51 @@ + + + + + +Permissions + + + + + + + + + + + + + + + +

    +Permissions +

    + +

    +L'administrateur peut donner la permission à un utilisateur ou à un +groupe d'utiliser et/ou d'administrer une imprimante. + +

    +Le bouton Ajouter un utilisateur renvoie à la liste des utilisateurs +et le bouton Ajouter un groupe renvoie à la liste des groupes. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node24.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node24.html new file mode 100644 index 000000000..8a623913c --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node24.html @@ -0,0 +1,53 @@ + + + + + +Configuration réseau + + + + + + + + + + + + + + + +

    +Configuration réseau +

    + +

    + + + + + + + +
    Adresse IPIntroduisez l'adresse IP de l'imprimante
    Adresse MACIntroduisez l'adresse MAC de l'imprimante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node25.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node25.html new file mode 100644 index 000000000..3dd16b9c2 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node25.html @@ -0,0 +1,46 @@ + + + + + +Information + + + + + + + + + + + + + + + +

    +Information +

    + +

    +Cet onglet donne un compte rendu de l'état du système. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node26.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node26.html new file mode 100644 index 000000000..877e8b20b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node26.html @@ -0,0 +1,43 @@ + + + + + +Références + + + + + + + + + + + + + + + +

    +Références +

    + +

    +Les références résument les relations existantes entre objets. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node27.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node27.html new file mode 100644 index 000000000..1aa240708 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node27.html @@ -0,0 +1,92 @@ + + + + + +Configurer une station de travail + + + + + + + + + + + + + + + +

    +Configurer une station de travail +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node28.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node28.html new file mode 100644 index 000000000..b22673d31 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node28.html @@ -0,0 +1,37 @@ + + + + + +Informations générales + + + + + + + + + + + + + + + +

    +Informations générales +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node29.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node29.html new file mode 100644 index 000000000..1b08e7fa0 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node29.html @@ -0,0 +1,64 @@ + + + + + +Propriétés + + + + + + + + + + + + + + + +

    +Propriétés +

    + +

    + + + + + + + + + + + + + + + + +
    Modèle de station de travail 
    Base*Sélection d'un département dans la liste déroulante. La station de +travail sera associée à ce département.
    ModeSélection du mode dans la liste déroulante. L'administrateur peut +activer la station, verrouiller la station ou effectuer un test mémoire.
    Serveur de logs systèmesSélectionnez le serveur de logs dans la liste déroulante
    Seveur NTPSélectionnez le serveur de temps dans la liste déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node3.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node3.html new file mode 100644 index 000000000..2e087b205 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node3.html @@ -0,0 +1,37 @@ + + + + + +Informations générales + + + + + + + + + + + + + + + +

    +Informations générales +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node30.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node30.html new file mode 100644 index 000000000..7a267c07e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node30.html @@ -0,0 +1,53 @@ + + + + + +Configuration réseau + + + + + + + + + + + + + + + +

    +Configuration réseau +

    + +

    + + + + + + + +
    Adresse IPAdresse IP de la station de travail
    Adresse MACAdresse MAC de la station de travail
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node31.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node31.html new file mode 100644 index 000000000..501bda233 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node31.html @@ -0,0 +1,46 @@ + + + + + +Action + + + + + + + + + + + + + + + +

    +Action +

    + +

    +Choisissez l'action à exécuter sur le poste de travail. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node32.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node32.html new file mode 100644 index 000000000..8a2a0b250 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node32.html @@ -0,0 +1,37 @@ + + + + + +Périphériques + + + + + + + + + + + + + + + +

    +Périphériques +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node33.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node33.html new file mode 100644 index 000000000..3ccbe195e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node33.html @@ -0,0 +1,56 @@ + + + + + +Clavier + + + + + + + + + + + + + + + +

    +Clavier +

    + +

    + + + + + + + + + + +
    ModèleSélectionnez le modèle du clavier dans la liste déroulante
    DispositionSélectionnez la langue du clavier dans la liste déroulante
    VarianteSélectionnez la particularité du clavier
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node34.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node34.html new file mode 100644 index 000000000..3c70b8f94 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node34.html @@ -0,0 +1,54 @@ + + + + + +Souris + + + + + + + + + + + + + + + +

    +Souris +

    + +

    + + + + + + + +
    TypeSélectionnez le modèle de la souris dans la liste déroulante
    PortSélectionnez le port sur lequel sera branchée la souris dans la liste +déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node35.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node35.html new file mode 100644 index 000000000..01859df84 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node35.html @@ -0,0 +1,46 @@ + + + + + +Matériel téléphonique + + + + + + + + + + + + + + + +

    +Matériel téléphonique +

    + +

    +Précisez de quel type de téléphone il s'agit. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node36.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node36.html new file mode 100644 index 000000000..7654bb838 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node36.html @@ -0,0 +1,57 @@ + + + + + +Carte graphique + + + + + + + + + + + + + + + +

    +Carte graphique +

    + +

    + + + + + + + + + + +
    PiloteSélectionner le pilote de la carte graphique
    RésolutionSélectionnez la résolution de l'écran de la station de travail dans +la liste déroulante.
    Profondeur des couleursSélectionner le nombre de couleurs à afficher
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node37.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node37.html new file mode 100644 index 000000000..66a061798 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node37.html @@ -0,0 +1,56 @@ + + + + + +Ecran + + + + + + + + + + + + + + + +

    +Ecran +

    + +

    + + + + + + + + + + +
    Type 
    Fréquence de synchronisation HorizontaleIndiquez la fréquence
    Fréquence de synchronisation VerticaleIndiquez la fréquence
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node38.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node38.html new file mode 100644 index 000000000..9d298ce55 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node38.html @@ -0,0 +1,50 @@ + + + + + +Scanner + + + + + + + + + + + + + + + +

    +Scanner +

    + +

    + + + + +
    Fournir un service de scannerCochez pour indiquer si la station de travail peut scanner
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node39.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node39.html new file mode 100644 index 000000000..472ea87a3 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node39.html @@ -0,0 +1,37 @@ + + + + + +Démarrage + + + + + + + + + + + + + + + +

    +Démarrage +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node4.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node4.html new file mode 100644 index 000000000..aafc7179b --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node4.html @@ -0,0 +1,70 @@ + + + + + +Propriétés + + + + + + + + + + + + + + + +

    +Propriétés +

    + +

    + + + + + + + + + + + + + + + + + + + + + + +
    Modèle de terminaux 
    Base*Faites votre séléction dans la liste déroulante. Le terminal sera +associé à ce département.
    Serveur PrimaireSélectionnez le serveur primaire dans la liste déroulante
    Serveur de SwapSélectionnez le serveur de swap dans la liste déroulante
    ModeFaites votre séléction dans la liste déroulante. L'administrateur +peut désactiver le terminal ou choisir le mode d'affichage adéquat.
    Serveur de logs systèmesSélectionnez le serveur de logs dans la liste déroulante
    Seveur NTPSélectionnez le serveur de temps dans la liste déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node40.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node40.html new file mode 100644 index 000000000..20a168556 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node40.html @@ -0,0 +1,62 @@ + + + + + +Paramètre de démarrage + + + + + + + + + + + + + + + +

    +Paramètre de démarrage +

    + +

    + + + + + + + + + + +
    Serveur LDAPSélectionnez le serveur ldap correspondant dans la liste déroulante
    Kernel utilisé au démarrageNom du kernel utilisé au démarrage
    Options personnaliséesOptions à passer au kernel lors du démarrage
    + +

    + +

      +
    • Cochez pour sélectionnez le mode de démarrage, par défaut le mode +graphique est activé. +
    • +
    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node41.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node41.html new file mode 100644 index 000000000..40f1f83ee --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node41.html @@ -0,0 +1,47 @@ + + + + + +Serveur FAI + + + + + + + + + + + + + + + +

    +Serveur FAI +

    + +

    +Sélectionnez le serveur FAI dans la liste déroulante pour le démarrage +initial de la station de travail. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node42.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node42.html new file mode 100644 index 000000000..7b33eb278 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node42.html @@ -0,0 +1,47 @@ + + + + + +Liste des classes FAI utilisées + + + + + + + + + + + + + + + +

    +Liste des classes FAI utilisées +

    + +

    +Utilisez le bouton Ajouter pour sélectionner la liste des classes +FAI utilisées pour cette station de travail. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node43.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node43.html new file mode 100644 index 000000000..0adbde342 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node43.html @@ -0,0 +1,48 @@ + + + + + +Modules du kernel (format : nom paramètre) + + + + + + + + + + + + + + + +

    +Modules du kernel (format : nom paramètre) +

    + +

    +Introduisez le nom du module à charger au démarrage suivi de ses paramètres, +ensuite cliquez sur Ajouter. Utilisez le bouton Supprimer +après avoir sélectionné le module. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node44.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node44.html new file mode 100644 index 000000000..e39aeffbc --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node44.html @@ -0,0 +1,46 @@ + + + + + +Partages + + + + + + + + + + + + + + + +

    +Partages +

    + +

    +Utilisez le bouton Supprimer après avoir sélectionné le partage. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node45.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node45.html new file mode 100644 index 000000000..7fa7307c7 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node45.html @@ -0,0 +1,37 @@ + + + + + +Imprimante + + + + + + + + + + + + + + + +

    +Imprimante +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node46.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node46.html new file mode 100644 index 000000000..61ab0164d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node46.html @@ -0,0 +1,56 @@ + + + + + +Général + + + + + + + + + + + + + + + +

    +Général +

    + +

    + + + + + + + + + + +
    Nom de l'imprimante*Introduisez le nom de l'imprimante
    DescriptionIntroduisez une description, un commentaire sur l'imprimante
    Base*Faites votre sélection dans la liste déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node47.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node47.html new file mode 100644 index 000000000..54f6fe3a9 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node47.html @@ -0,0 +1,66 @@ + + + + + +Détails + + + + + + + + + + + + + + + +

    +Détails +

    + +

    + + + + + + + +
    +
    +Localisation de l'imprimante +
    +

    +

    +
    Indiquez le lieu où se trouve physiquement l'imprimante
    URL de l'imprimanteIntroduisez l'url qui permet d'accéder à l'imprimante
    + +

    + +

      +
    • Le bouton Editer permet de télécharger un pilote d'imprimante +depuis votre arborescence. Utilisez le bouton Supprimer pour +effacer le pilote choisi. +
    • +
    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node48.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node48.html new file mode 100644 index 000000000..fd0a589b1 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node48.html @@ -0,0 +1,51 @@ + + + + + +Permissions + + + + + + + + + + + + + + + +

    +Permissions +

    + +

    +L'administrateur peut donner la permission à un utilisateur ou à un +groupe d'utiliser et/ou d'administrer une imprimante. + +

    +Le bouton Ajouter un utilisateur renvoie à la liste des utilisateurs +et le bouton Ajouter un groupe renvoie à la liste des groupes. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node49.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node49.html new file mode 100644 index 000000000..5db06591d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node49.html @@ -0,0 +1,53 @@ + + + + + +Configuration réseau + + + + + + + + + + + + + + + +

    +Configuration réseau +

    + +

    + + + + + + + +
    Adresse IPIntroduisez l'adresse IP de l'imprimante
    Adresse MACIntroduisez l'adresse MAC de l'imprimante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node5.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node5.html new file mode 100644 index 000000000..112e40a00 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node5.html @@ -0,0 +1,53 @@ + + + + + +Configuration réseau + + + + + + + + + + + + + + + +

    +Configuration réseau +

    + +

    + + + + + + + +
    Adresse IPAdresse IP du terminal
    Adresse MACAdresse MAC du terminal
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node50.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node50.html new file mode 100644 index 000000000..2df20ce14 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node50.html @@ -0,0 +1,46 @@ + + + + + +Information + + + + + + + + + + + + + + + +

    +Information +

    + +

    +Cet onglet donne un compte rendu de l'état du système. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node51.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node51.html new file mode 100644 index 000000000..4594caf50 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node51.html @@ -0,0 +1,43 @@ + + + + + +Références + + + + + + + + + + + + + + + +

    +Références +

    + +

    +Les références résument les relations existantes entre objets. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node52.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node52.html new file mode 100644 index 000000000..f00ca3d9c --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node52.html @@ -0,0 +1,60 @@ + + + + + +Configurer un serveur + + + + + + + + + + + + + + + +

    +Configurer un serveur +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node53.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node53.html new file mode 100644 index 000000000..765a10799 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node53.html @@ -0,0 +1,57 @@ + + + + + +Informations générales + + + + + + + + + + + + + + + +

    +Informations générales +

    + +

    + + + + + + + + + + +
    Nom du serveur*Introduisez le nom du serveur
    Base*Sélectionnez dans la liste déroulante le département auquel le serveur +sera associé
    DescriptionIntroduisez une description, un commentaire sur le serveur
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node54.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node54.html new file mode 100644 index 000000000..b841c0fc9 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node54.html @@ -0,0 +1,53 @@ + + + + + +Configuration réseau + + + + + + + + + + + + + + + +

    +Configuration réseau +

    + +

    + + + + + + + +
    Adresse IPIntroduisez l'adresse IP du serveur
    Adresse MACIntroduisez l'adresse MAC du serveur
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node55.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node55.html new file mode 100644 index 000000000..516833ed7 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node55.html @@ -0,0 +1,46 @@ + + + + + +Action + + + + + + + + + + + + + + + +

    +Action +

    + +

    +Choisissez l'action à exécuter sur le serveur. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node56.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node56.html new file mode 100644 index 000000000..f2e385398 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node56.html @@ -0,0 +1,177 @@ + + + + + +Databases + + + + + + + + + + + + + + + +

    +Databases +

    + +

    +Ce point regroupe toutes les bases de données qui peuvent être associées +à certaines fonctionnalités de GOsa. + +

    +L'administrateur à le choix entre : + +

    + +

      +
    • Accès kadmin Kerberos + +

      + + + + + + + + + + +
      Realm KerberosIntroduisez le realm Kerberos
      AdministrateurIntroduisez le login de l'administrateur Kerberos
      Mot de passeIntroduisez le mot de passe de l'administrateur Kerberos
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Base de données des FAX + +

      + + + + + + + +
      UtilisateurIntroduisez le login du propriétaire de la base de données
      Mot de passeIntroduisez le mot de passe du propriétaire de la base de données
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Administration d'Asterisk + +

      + + + + + + + + + + + + + +
      UtilisateurIntroduisez le login du propriétaire de la base de données
      Mot de passeIntroduisez le mot de passe du propriétaire de la base de données
      Préfixe du paysIntroduisez le préfixe du pays
      Préfixe localIntroduisez le préfixe local
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Accès administrateur IMAP + +

      + + + + + + + + + + + + + + + + +
      Nom du serveurIntroduisez le nom complet du serveur en notation internet (smtp.acme.com)
      URL de connexion 
      AdministrateurIntroduisez le login de l'administrateur du serveur imap
      Mot de passeIntroduisez le mot de passe de l'administrateur du serveur imap
      port SieveIntroduisez le port sur lequel Sieve répond
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Base de données des logs + +

      + + + + + + + +
      UtilisateurIntroduisez le login du propriétaire de la base de données
      Mot de passeIntroduisez le mot de passe du propriétaire de la base de données
      + +

      +

    • +
    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node57.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node57.html new file mode 100644 index 000000000..f08277a89 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node57.html @@ -0,0 +1,48 @@ + + + + + +Services + + + + + + + + + + + + + + + +

    +Services +

    + +

    + +

      +
    • Exportation Nfs +
    • +
    +Utilisez le bouton Ajouter pour pouvoir configurer les exports +Nfs. +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node58.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node58.html new file mode 100644 index 000000000..739f07fd0 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node58.html @@ -0,0 +1,174 @@ + + + + + +Freigabe bearbeiten + + + + + + + + + + + + + + + +

    +Freigabe bearbeiten +

    + +

    + +

    + + +

    + + + + + + + + + + + + + + + + + + + +
    Nom*Introduisez le nom du partage
    DescriptionIntroduisez une description, un commentaire sur le partage
    TypeFaites votre sélection dans la liste déroulante du type de partage
    Type de caractèresFaites votre sélection dans la liste déroulante du type d'encodage
    CheminIndiquez le répertoire correspondant au partage
    OptionIndiquez les options éventuelles pour ce partage
    + +

    + +

    +Cliquez sur le bouton Enregistrer pour terminer la configuration +du partage. + +

    + +

    +
    + + +

    + +

      +
    • Services de temps +
    • +
    +Utilisez le bouton Ajouter pour pouvoir introduire l'adresse +du serveur de temps. + +

    + +

    +
    + + +

    + +

      +
    • Service LDAP +
    • +
    +Cochez pour pouvoir introduire l'adresse du serveur ldap + +

    + +

    +
    + + +

    + +

      +
    • Services de terminaux +
    • +
    +Cochez pour indiquer que ce serveur est un serveur de terminaux. +

    + + +

    + + + + + + + +
    Désactiver temporairement le loginCochez pour empêcher les terminaux de se connecter temporairement
    Répertoire des polices de caractèresIntroduisez le répertoire de polices de caractères utilisé par les +terminaux
    + +

    + +

    +
    + + +

    + +

      +
    • Service de logs systèmes +
    • +
    +Cochez pour indiquer que le serveur comprend un service de logs systèmes. + +

    + +

    +
    + + +

    + +

      +
    • Services d'impression +
    • +
    +Cochez pour indiquer que le serveur comprend un service d'impression. + +

    + +

    +
    + + +

    + +

      +
    • Serveur de messagerie +
    • +
    +Cochez pour indiquer que le serveur comprend un service de messagerie. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node59.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node59.html new file mode 100644 index 000000000..4d7f70bde --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node59.html @@ -0,0 +1,46 @@ + + + + + +Information + + + + + + + + + + + + + + + +

    +Information +

    + +

    +Cet onglet donne un compte rendu de l'état du système. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node6.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node6.html new file mode 100644 index 000000000..2ace8908e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node6.html @@ -0,0 +1,46 @@ + + + + + +Action + + + + + + + + + + + + + + + +

    +Action +

    + +

    +Choisissez l'action à exécuter sur le terminal. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node60.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node60.html new file mode 100644 index 000000000..c68a51a58 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node60.html @@ -0,0 +1,43 @@ + + + + + +Références + + + + + + + + + + + + + + + +

    +Références +

    + +

    +Les références résument les relations existantes entre objets. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node61.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node61.html new file mode 100644 index 000000000..253646962 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node61.html @@ -0,0 +1,56 @@ + + + + + +Configurer une imprimante + + + + + + + + + + + + + + + +

    +Configurer une imprimante +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node62.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node62.html new file mode 100644 index 000000000..132afe406 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node62.html @@ -0,0 +1,37 @@ + + + + + +Informations + + + + + + + + + + + + + + + +

    +Informations +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node63.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node63.html new file mode 100644 index 000000000..5c468db69 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node63.html @@ -0,0 +1,56 @@ + + + + + +Général + + + + + + + + + + + + + + + +

    +Général +

    + +

    + + + + + + + + + + +
    Nom de l'imprimante*Introduisez le nom de l'imprimante
    DescriptionIntroduisez une description, un commentaire sur l'imprimante
    Base*Faites votre sélection dans la liste déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node64.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node64.html new file mode 100644 index 000000000..63d325533 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node64.html @@ -0,0 +1,66 @@ + + + + + +Détails + + + + + + + + + + + + + + + +

    +Détails +

    + +

    + + + + + + + +
    +
    +Localisation de l'imprimante +
    +

    +

    +
    Indiquez le lieu où se trouve physiquement l'imprimante
    URL de l'imprimanteIntroduisez l'url qui permet d'accéder à l'imprimante
    + +

    + +

      +
    • Le bouton Editer permet de télécharger un pilote d'imprimante +depuis votre arborescence. Utilisez le bouton Supprimer pour +effacer le pilote choisi. +
    • +
    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node65.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node65.html new file mode 100644 index 000000000..a3389109d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node65.html @@ -0,0 +1,51 @@ + + + + + +Permissions + + + + + + + + + + + + + + + +

    +Permissions +

    + +

    +L'administrateur peut donner la permission à un utilisateur ou à un +groupe d'utiliser et/ou d'administrer une imprimante. + +

    +Le bouton Ajouter un utilisateur renvoie à la liste des utilisateurs +et le bouton Ajouter un groupe renvoie à la liste des groupes. + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node66.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node66.html new file mode 100644 index 000000000..6fd54538a --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node66.html @@ -0,0 +1,53 @@ + + + + + +Configuration réseau + + + + + + + + + + + + + + + +

    +Configuration réseau +

    + +

    + + + + + + + +
    Adresse IPIntroduisez l'adresse IP de l'imprimante
    Adresse MACIntroduisez l'adresse MAC de l'imprimante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node67.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node67.html new file mode 100644 index 000000000..67e7e1c11 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node67.html @@ -0,0 +1,43 @@ + + + + + +Références + + + + + + + + + + + + + + + +

    +Références +

    + +

    +Les références résument les relations existantes entre objets. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node68.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node68.html new file mode 100644 index 000000000..a95428b53 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node68.html @@ -0,0 +1,52 @@ + + + + + +Configurer un téléphone + + + + + + + + + + + + + + + +

    +Configurer un téléphone +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node69.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node69.html new file mode 100644 index 000000000..649e4077f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node69.html @@ -0,0 +1,57 @@ + + + + + +Informations générales + + + + + + + + + + + + + + + +

    +Informations générales +

    + +

    + + + + + + + + + + +
    Nom du téléphone*Introduisez le nom du téléphone
    Base*Choisissez dans la liste déroulante le nom du département auquel sera +associé le téléphone
    DescriptionIntroduisez une description, un commentaire sur le téléphone
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node7.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node7.html new file mode 100644 index 000000000..ab44cf40c --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node7.html @@ -0,0 +1,37 @@ + + + + + +Périphériques + + + + + + + + + + + + + + + +

    +Périphériques +

    + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node70.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node70.html new file mode 100644 index 000000000..8183dcf13 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node70.html @@ -0,0 +1,164 @@ + + + + + +Configuration avancée du téléphone + + + + + + + + + + + + + + + +

    +Configuration avancée du téléphone +

    + +

    + + + + +
    Type de téléphone*Choisissez dans la liste déroulante le type du téléphone : SIP, IAX +ou CAPI
    + +

    + +

    +
    + + +

    + +

      +
    • Si SIP est sélectionné vous devez remplir les champs suivants : + +

      + + + + + + + + + + + + + +
      Mode*Choisissez dans la liste déroulante le mode de fonctionnement du téléphone
      Mode DTMFChoisissez dans la liste déroulante le type de modulation DTMF utilisé +par le téléphone
      +
      +Adresse IP par défaut +
      +

      +

      +
      Choisissez dans la liste déroulante le type de configuration de l'adresse +IP
      +
      +Temps de réponse maximum +
      +

      +

      +
      Introduisez le délai d'attente maximum
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Si IAX est sélectionné vous devez remplir les champs suivants : + +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Mode*Choisissez dans la liste déroulante le mode de fonctionnement du téléphone
      Adresse IP par défaut?
      Temps de réponse maximumIntroduisez le délai d'attente maximum
      Type d'authentificationChoisissez dans la liste déroulante la méthode d'authentification +du téléphone
      SecretIntroduisez le secret utilisé lors de l'authentification du téléphone
      Code du compte téléphonique?
      Regrouper des lignesChoisissez dans la liste déroulante si il faut grouper des lignes +téléphoniques ou pas
      Machines qui peuvent se connecterUtilisez le bouton Ajouter pour insérer le nom d'hôte pouvant +se connecter. Le bouton Supprimer sert à effacer le nom d'hôte +sélectionné.
      Machines qui ne peuvent pas se connecterUtilisez le bouton Ajouter pour insérer le nom d'hôte ne pouvant +pas se connecter. Le bouton Supprimer sert à effacer le nom +d'hôte sélectionné.
      + +

      +

    • +
    + +

    +
    + + +

    + +

      +
    • Si CAPI est sélectionné vous devez remplir le champ suivant : + +

      + + + + +
      MSNIntroduisez le numéro MSN de la ligne téléphonique
      + +

      +

    • +
    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node71.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node71.html new file mode 100644 index 000000000..1a2205041 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node71.html @@ -0,0 +1,53 @@ + + + + + +Configuration réseau + + + + + + + + + + + + + + + +

    +Configuration réseau +

    + +

    + + + + + + + +
    Adresse IP*Introduisez l'adresse IP du téléphone
    Adresse MAC*Introduisez l'adresse MAC du téléphone
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node72.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node72.html new file mode 100644 index 000000000..5ea98d826 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node72.html @@ -0,0 +1,43 @@ + + + + + +Références + + + + + + + + + + + + + + + +

    +Références +

    + +

    +Les références résument les relations existantes entre objets. + +

    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node73.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node73.html new file mode 100644 index 000000000..d9152663c --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node73.html @@ -0,0 +1,50 @@ + + + + + +Configuration d'un composant + + + + + + + + + + + + + + + +

    +Configuration d'un composant +

    + +

    +


    + +Subsections + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node74.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node74.html new file mode 100644 index 000000000..4b7e7699f --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node74.html @@ -0,0 +1,57 @@ + + + + + +Informations générales + + + + + + + + + + + + + + + +

    +Informations générales +

    + +

    + + + + + + + + + + +
    Nom du périphérique*Insérez le nom du composant.
    Base*Choisissez dans la liste déroulante le nom du département auquel sera +associé le composant.
    DescriptionRédigez une description à propos du composant.
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node75.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node75.html new file mode 100644 index 000000000..7c8a0f08e --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node75.html @@ -0,0 +1,53 @@ + + + + + +Configuration réseau + + + + + + + + + + + + + + + +

    +Configuration réseau +

    + +

    + + + + + + + +
    Adresse IP*Introduisez l'adresse IP du composant
    Adresse MAC*Introduisez l'adresse MAC du composant
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node76.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node76.html new file mode 100644 index 000000000..84fdd9a77 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node76.html @@ -0,0 +1,38 @@ + + + + + +Références + + + + + + + + + + + + + + + +

    +Références +

    + +

    +Les références résument les relations existantes entre objets. +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node77.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node77.html new file mode 100644 index 000000000..341efae56 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node77.html @@ -0,0 +1,51 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + +

    +About this document ... +

    + ADMINISTRATION DES SYSTEMES

    +This document was generated using the +LaTeX2HTML translator Version 2002-2-1 (1.71) +

    +Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
    +Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

    +The command line arguments were:
    + latex2html -no_navigation -dir ../html/systems/ systems.tex +

    +The translation was initiated by Jan Wenzel on 2008-03-13 +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node8.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node8.html new file mode 100644 index 000000000..bd34b37a5 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node8.html @@ -0,0 +1,56 @@ + + + + + +Clavier + + + + + + + + + + + + + + + +

    +Clavier +

    + +

    + + + + + + + + + + +
    ModèleSélectionnez le modèle du clavier dans la liste déroulante
    DispositionSélectionnez la langue du clavier dans la liste déroulante
    VarianteSélectionnez la particularité du clavier
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/node9.html b/trunk/gosa-plugins/systems/help/fr/html/systems/node9.html new file mode 100644 index 000000000..c6293987d --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/node9.html @@ -0,0 +1,54 @@ + + + + + +Souris + + + + + + + + + + + + + + + +

    +Souris +

    + +

    + + + + + + + +
    TypeSélectionnez le modèle de la souris dans la liste déroulante
    PortSélectionnez le port sur lequel sera branchée la souris dans la liste +déroulante
    + +

    + +

    +
    + + +

    +


    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/rocket.png b/trunk/gosa-plugins/systems/help/fr/html/systems/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr6`%jf|2$4r$s+spf+u-Q>g|C~v${^~-@3D2KhAWzjp*~g402!Z zUHKi(9mVwYR{HU3yQ(XJdfgr7_kt7B*ZVg zlZA`E-HR!XFqoPrv4|=5q??46nDTS`=Vp~s9W4h#9%&XB{&YOW(>Ss1gowdH#>bK? z8Y|h_G_JnXKEGa!RbjKC&z^}6{xug8QpM!9)-qhxW!6-X$b8VxoWq_ay;SG)q^zy4 zl#WYx-skypq>N1rh_uAIJMX_g{(N)1i3HE2^Uo#sN-{sl`!nt7bPI-)m$;^1)Ml8r sPTcnHd4|#lq7}@qf*h7KXm7~hGi}kLyMEkXfZ@&H>FVdQ&MBb@00WM*LjV8( literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/select_new_phone.png b/trunk/gosa-plugins/systems/help/fr/html/systems/select_new_phone.png new file mode 100644 index 0000000000000000000000000000000000000000..45714d175d5098439b9395d2ad740dd172177351 GIT binary patch literal 660 zcmV;F0&D$=P)ScHQP zVNsA?B5yl{8NpT%jR-T+VW~W7bLyOX=JxFA)8R2Gh_*L;;LR64Z{FYc`=dkzr4+?* z<)P)hc&==?T+y2_U_Jp0>s(f)3f!GoiNvt^^GqkZZ%K+H$)jhkV9NBX24^= zy`2oR&@%|!?oa?C@~_&wGJ=TsL?Xx@7oW`|?D4-cxHcyK<8^3aGLTN^{5Muy5bOp{ z0nNMepMj4MdV=ahDG}lRYqZrbp9V7NO)c^=Oj}nUnSzV0w85CC0Zs#f_x67DEW|+d zp#Zzag2gM33+=)19r6bnnVnz3#9=Q7yCE-l&fL^H-PK#}@nB{%xIEs?9!X6-4pnx5ZCB7` ukB=b4bo(13LTBgT2AscHtkU1M|HLl}ISjH0h?;Bw0000bO~EDAyA<{^6rx^a1=~Y^K=m;2QG9De zWspMjCgp?npo9YlUPFW}j6L|aU~}H(xIcD(eS5guysq%T;rsa>&iS0r_na@mS-ZHp zy1E^SM6NrI0|4mi>Vj#S&@>G*Gc(U6N&4t5plt*s6bc3V`};371BPM1Fbohv;Pd$c zZTbHYfH7t@PUyN0UDsh41~g3rA;f9V=i2TjrIdL)H{CQ%Se9j;t3VXRtE#H+4?>MJZuoeB#08 zuT3pm$+C0pHC%7l%F0R}z!f?jn|>1R4R;(KAHue5IP7%L{&yGL$;J)%8!^kWK;QcD z5D>@4#_nV7+gd^SqcEkauw(g{$+FC<)oP=gz}PlUF%w+8jTR;w8ymj`LFl2Bf>H{O z<3I=jAq3&C*MP)h05<`M4Glj5>;vg#B=d<+v{)=wgTY`=E|){OT!yNup1sWBMfxQ$ zybMHl-B5NC*aPzSawvaK)#%R7&hF6A(7@8t61KLs5R1jY^E?=1SiJSYqoCvxMCXC% zJ_gef_jsO4v literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/select_new_server.png b/trunk/gosa-plugins/systems/help/fr/html/systems/select_new_server.png new file mode 100644 index 0000000000000000000000000000000000000000..84f65700a80e318827832736b1d104056fc7956a GIT binary patch literal 813 zcmV+|1JeA7P)GHhu{cUWMP-z>&em3^x@O$>{U>05Y#js^-w&G-iPHD$Pak`^swSa? z6zuGR>jD-6A4*FV&vmsnDy1iWoSl0W5q=K>T~-#o*3eMZTU#5KN(o#ac0CZq4z5@1 zXCV?5bi9yqq&hM-H#OgDjJd9>tK&U&bqQJ20H7pzfae1Ov;?al^g$?SKi3p1i#;^D zxR~)}{{ALEd$*yWMasf427~~uL1}3IPLi6E#EwE^Ep)$hQYobxWGDsi{P`}KyVt=7 ztw0w2*WQrSk4d!LfAty%l3B^A@e-`XkojaO^X08u_VVnIUC$f4zG>`^Ypfl>TI*Ol z%|2VFz|-upxNu=Ova$Zh$Ng`ef3xC|DBFL-kqE?NaQrg~>DPfX!0DogJHQeQW|956 zMm0BghI8|i6P{Nd7!!G>@_1bQwG9vcf#rukpz8A;2qxjgd7u<#UV)oGA^MPDwlsj& zirw9vk0x$>v%Z;6U1@A?j9B2Qse=wS3IPy{}wSqVNOv)5))HuHAp& zkG>skDkts0OcoZikah~f!5lmZq#Z0dduSJw(g-2G9{Xab`|4U-*Dw6=9)RdWSaNoc r2e2&W5Pb;opVxU%6ohFj4yOMF7(FZx`)`9&00000NkvXXu0mjf`d(&z literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/select_new_terminal.png b/trunk/gosa-plugins/systems/help/fr/html/systems/select_new_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..a218480c9b94f81f9b97efa4ca1d169d59a3baf3 GIT binary patch literal 776 zcmV+j1NZ!iP)ll$3Z}?l(^XPL`Uk`oEFDNKU6@T* zDj0O(&Wt-Lw9xLvMail~vM^@RR3fJBDhU*1Fh9nLouTpFcTX3S1XAV;2ktrC@0aiQ z+$*(O?c1rTscT^v+B8l1KMI8c0IG_J;GEN$nVFxbr>DOFc4T>Z`DLL{h}YKED3{B4 z?+*y<^&-O7))sLblgVTl8X6jIwOY??KA+cxg#~73XBiwEq?Zc-V+@T(gKD+P=;)|7 z#^eC3s%jKPwA*b~S66$I_t5Ed$Ye5XZ*ME00Cso4;^HE49HXlH1QFTqMTE`GO-4pW zs8lNZcWe*@0IaO6&}=q|q6lj(A_9PO4(A+6lCZI{L8sH{60Pk<6A^+Sz!-z~9_Jk1 zdsG$gJ>GkgB%$4IqpGOtfjwDc4AxqT#UiCriCiv67={>QP*t3ByxG~|)s1!jP2f&5 zJ@8USL=X|IwS-|vHk&1v%MnEpi&uVUsrH;x+Kpp?a(_Q3o}3LD*Vi8dSP`-1a+$HQ zF^a`v*TJDf+=_3(WFI_z$-{5{g2_J2>pWlnbQP_5-VPsoqw=@P+}zw!wOXz0*-g`w zPLkl#l%qeEU~&RD2^`-w{RglF_kZB__U&I~U|`_G@$vBq5y|>)IQN0-afQtDG=1^i z@PjLy21b7C@}Hi8XYi=-{i{zeU%t@u!+ZjteGFe~9aWuB)w`-XyIXg=vpNbK=_zmt zKJSwIROiwCbL&0z^+0t#P`CB2Y8?%F39Q3<`xo2)(c#t*4M-lIBlzb}SbB|guAv+A zm={gtE3!Qu?4p>56Cu2RA$q5#b=2J>y?89XS%UL`0Q?929y}*B`c6{-0000 ztyzu52#rt`_m&9m+yoK3sE9}x(TJus<4oJh%>A8vJ{L0?NA$o4?}6`q&%=8Z!0PJi zTOV9|@0w9!`pw}bq zXN&^0F=(av{kJx0rkI>8kj9C`iyok!2P;9)Q+3j-gU1P^=Uvm-Bcz2V*qW3Q3%D_t^y^>vHs) zFR|7l*8UUV8VAoc%+$)1D<#U69KP@JxqSkFbLrjDch;&U=D$6`>3aIcyF&`r*491| z5qZ$-%e_`te)*#*(m+INB3q1f6wgU^-IHv~lTPPoR~m={n3|e8vAn!|*%)PJ4%bgE zompC_R;%8zub+gs&jU{bPYs{@3Ah6v-b7tNF@6>o7tihN>^y3>+p@d6E6wJRWD61b zelSC#1CKKvP%IYfzVBBGg#yMHDxV%2BiI`(&A$)xcMxvMe+U3wtJPj#Sy@^CzYeFRKcUBq$^YrxWnW2tnXBYC)AU-gU5PW~Kwz0AC z-H{_Rl~$`I6BEU9z5cio5pLi9(Z2cDS#6cWXQeOhUAVCNBE;MO>L3hT!HpZ&Z{_n| zMJd-ge*D-;*L93BS~Z*P^2X5bc%xik;-f)P@jjr|yXW4W8j66Wk8%&Db*5RJMpMQ%HyZUP-no=0h{l zff2j!y?xqUx0=vL3Cq(R%>9T`vZVAkgfwA*GuR*=&v1;1mja{Er|~*xD1`|PP@2HR zW04Jh9Ajv_O}Y0k%J!l9P29YHo=<`L`* zrKj0=AWeM4ft31#@G4?9EGY@N(oL%gI9?MJ^XBj%iy*{X6lfWKN8lv^q=xILe_H!I(kcJMX0|c9ovHO3y}HRoAG^ v_tcfL&xTQ(;2HOes;;Sgk*RcL*7oYOuBmioDqUGhSC+ERmTD&r>ze0(%ZwQC literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/html/systems/systems.html b/trunk/gosa-plugins/systems/help/fr/html/systems/systems.html new file mode 100644 index 000000000..26a02cebd --- /dev/null +++ b/trunk/gosa-plugins/systems/help/fr/html/systems/systems.html @@ -0,0 +1,217 @@ + + + + + +ADMINISTRATION DES SYSTEMES + + + + + + + + + + + + + + + +

    + +

    +

    ADMINISTRATION DES SYSTEMES

    +
    + +
    + +

    +


    + + + + + +

    +
    +Jan Wenzel +2008-03-13 +
    + + diff --git a/trunk/gosa-plugins/systems/help/fr/lyx-source/images/edit.png b/trunk/gosa-plugins/systems/help/fr/lyx-source/images/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b69f73fe3ed52ad616c4fbc6fca2679a9e8c1d GIT binary patch literal 946 zcmV;j15NyiP)!SI-Y;XMNwpXV^<{*aN^_Vx3-ct!@s`>bqi46H0{3;+Ry)quaBJ~J?XSj52m z8_4<2#PIAXBg0pVFh+JBcH2kypF44Kam~GP<{HE8o0k~?0tl-C3?KJ1F#oy8!0>~O z;s49O3@@au7-U_78NS`V&T#4b=bvxiykyw3V+~N@9|nK`V#22X|HH`)th}5I3|}}H z-hbp{_@d#*AS5Hjz|8QMfrW*Y;mV~eKvn;Mn2iA-fG}L}_r(bYW{z7x&A^!b#K7>5 zM~y+yA(Vmh|4#-!9$tnc2M;mayK^3>l9deH=U0|9du%fr$es{1a&N2Ofs^ zGM)^AQql}8zy!d^%*gQO^-E5WZXgx`Vs3x{Vu3~JPf*mnxX8f5{*Zz3k06l4&hY9x zJA-IYEW@ua9~gfB`pNL=<0l3tMkZjIVT8Gy7a)M(Uib&{(%&CIhBN~M2QR~y=T8~l z2wO97{9|VL`T7k|BO}8A2nZd^1@wcFmECVAWI1(5D0*HkP2*F7gh&7GP8B`2R8JGoxfHwbT z_$|Q8z{<`B^!tAXHa2DkW@Z)!E-p@{@TgdZTeog9+`n_30U&@_?%sL$VbzK?JRm1B zG6Q1=6j*LX{7Jy;#>&w?K3pF07*qoM6N<$g5Dym0RR91 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_back.png b/trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_back.png new file mode 100644 index 0000000000000000000000000000000000000000..f258c112f9ce54bfc898fa5e4a48b19a64f93a29 GIT binary patch literal 862 zcmV-k1EKthP)UmE}b0_#ac zK~#9!g_BKaTxA%ApYOYOX6}r4W;&BLGYO;#&0u1swVe{7wPaxzLe!OY;SW@V&}N~y zbm2k}3*C3+#emY53gV_NY*nlhp-tK(MQKOUke{Y@GR^d6?j)D_X6}!R(1ElCUwAh! z=bXhk?-4v>ietA72!;rQ0)zsBdEKv1OEfNure<}un zTCWM;{Z9AoFRxp#Ek7kt9J`fA$g8=|j)4=eraAh8Mk=8Jpjsi*cU{JR-C%C9vKIHt zZ~yt#$knz$actH^$Q#AI-20C-eyu~u*4Dt~Jm0qMBM&G~S^Z*H8^fuX2jrZaJ$ zhwA}GM7GIgyU8!pwYJI5rpJ%Bvp6b)jD@Dt>_4Idg{&!g=y>$*inYlA`An4ekL}tP z+u{B2(KjF?214ou35cezv0T+iB@O;>4)%c%TkZ=&sY5Vdb3;nios@opTsGvT-mP?J z7GY*-yTI%c=n@*9A{w|Wy6)GfJhfhvBA-UUrxydxyd&AaTX3)s#(#fI3emLyDZtRd zY1o@tzci!WpZ>PhedvSEWLzBX$p)ljimAB<&v)zWOlgc9fa|wyIuZ>shGK`Is5>^Q zcJGHha^ialp!@b0l}dR&8aU*W4f4qb7k*n~p{!UatM)CQY!D3`Dyt7xa^AJGK(+nK zuZ&*mZ$`SV94Mss4DL1&Vp~lJ!;sSQ2D5YaO1?F5GB55-SeE5%Lk)j;zRQjDex67? z_ikS4UU oUCH{TnNEG_U!ZDPR`W6bKd~t^+_O;n=Kufz07*qoM6N<$f)k{b)&Kwi literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_home.png b/trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_home.png new file mode 100644 index 0000000000000000000000000000000000000000..e897341f1c4af5411b4e230690036d864b7b68f4 GIT binary patch literal 865 zcmV-n1D^beP)|6eU^D;#0`5sf zK~#9!b(7y~TXh)5Ki}{7Bt1DjNlfjUv~+d0nXMg_5v&*cQDH-b`2#_`(FDc-gBB23x7Hb=7VRU8M`QwQOn9kmMvi>q+uG$BVGQHhti|d!FZg zc^+QDe;_x1*Mwk}FvvnEASf8RaeKu%>pjaA&j@W0mr#+5GMY#pPPMTj9sVkr1b(e9 zwD+^2t6$x6-rj!BAUA(EgOJzLLoZH#dM3%KR}~3M0pPboet+PxaIMM4W@#^`iy!^^ z?YZkcgWUWb8zEP7(<76gziSeY82~KZb9>j#%_L~+fbXtUxw5ibvHklqOADVoQUJrV z7rsuXhu-__oQXi<`2njNP3C42oIDmMZYh@kXpo2*Odamy!LG83b>i>j)K!(cxN4&M ze){lK(o9(3`I@a=pWM-Y#xo{T3gVU`B;?Pn#{eW_9eyi>le*RX!2o8Xrkza1H04?V zz$>FBQ=>7Y>_%iL!D}z~^JuTdH`gp&KZWcIZMQXXLIT+VTT*sA?A1Gr4n}!nGTswE zfs%r^UQcm+ybk~wF%im#6^i=nPg&SS*`8VO0TivPcgYNi518+wfx^Y|kwYn70(ok-|K|Abi{r*OG z03Npj>YhdkO>j`%AJFS-a>Y683GFRNzsOj^Wh~)hN7_Au=|fef4^;t3nLbC7F48X& z>690TjIDJAQXQR54X)j;Mi2KWq_uMs z!m|25K9Y{wFT}f*)fzsV#n!&>RTtBpo0rq-?|Y8pxX*nfKt7+3{?j=&;;M-gLK;~? rC`I7y4CwW>A!F+yP;nfm^@RT~PvIf8Te$nK?6^OJ*kIrinHQMng4_5U*WGp<0UFM3gQHE=1aHT)Gl> z`X{&IRMKz{0-QyES^qmfQ%061RA%7(?2n{CSX4j;z- z{kH}mezsIB7DMd_{w;}+w`QkDrapT67!yMZ%XZm2G_gGhLcu^^gjb){Y1vw0ZC{-0 zs{GZtabaoz!}AwE85|rq_x@QOfy6W$^rtkYj^|OLOU?8#AB8w>$kU@SHV(8zr6p41 z@%8K4?4^>97W?AOlNmjofEaC_KQTfosRIz#qcp65UBkh0d@MU46Yp|+Go13>_EiPU zNA+YT8~3Ri9bSKJj35lTUTUyibx6b{wi^hjcZ41m=wi}J30v)sok z<83aS8Sly64?=_x2tW`@3BhL53RyGy`FZmww$slkMskXk-9BnfyGP)l=AtC{T?Y|Z zJ4$&*sp}+~QVeA_j3hT!9Zt{0`1D)Fhzuc|vj5s&W4{CodYXE2G;&wfF?An8x_C`{d*~j~1 z#G{gk66leCduy-5?KNX(*!%I~kSvz~O9NP0S>eoFvflJkUv1Y_YOCT-*^V2vy?{pB z<=(!@ufI1td;15)A@BPS{)StHLZSB?7Zw)CX0y?4cVet9pExB{;z^;!ToG71Ie+a= kUr?@^rfC43VzCIoUl;;lJtwtVUjP6A07*qoM6N<$g5ejSXaE2J literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_root.png b/trunk/gosa-plugins/systems/help/fr/lyx-source/images/list_root.png new file mode 100644 index 0000000000000000000000000000000000000000..56a6a5d3a97fbd666430a1f8130d8d8b8e4c705c GIT binary patch literal 852 zcmV-a1FQUrP)&ghCi$Wl@SqN?v z7cShWi_%qvf|q8cqN_q9LQ92OD%xpnGFE6}5;FN|oV2Dhb7yip_uoaxz_c!Ub_d?~ zcY2vQ2pxXw~W_Uo(U*Sl+p<0dMepJbm~=|<1b2j5)uI04Y|8uG5K?o`SQbmyZp*K zzkdD3^>#pEVn#zKcM31<9s2NOobE2QebxCN>i~RkQpfcJE?%i}rMR)F+4m3Mn0)^q z2{15n`ioR5`BtVMW|mwAQ!17naPeA$vtvnK8{Wm@x{d9G9NZUUVM8V=b-Ldy$g8q& z=1v?L`|j=IdOX`7^3iCLKg(NOF19#3mIUB&!)1Q`36||+wF2}mk3SZ}A>V0!qXHw* zxTg1Z`R%i>mE5+uQgt|Ysn$XMx78O=VxeX_gU3`L-=`@&GCic&X1ZerNcToNc7VHO zn79x}C~95>gyTzAHYHJ2@H|tPGR-1h8RT@h)0rxl-kAMoY7lA~D|&cWm_@YiaHDgzV&3J|oaTYdiQv{E!q zSi-j^6}v*F#{?kLV{+lADsvCq?Jk^x1N}Aj?>5QlCW>7l;ys#5s>|yVATvB#Y_@{Y z>>k;7>+dIMF%K=~aj$HVOGc?ReHI=x&|)4=%VKV6V{O2_@v)}V7TVNa9-kU?A_G^C z=JovtGa5p40u95E*_9?U^VPMqd-HT!+`nlUhS{NdW$fDlE0X;zk=XTKE)~^wcgFyz zHEhZiXUn##Qz`HFuTpa9o?#f~Gv5d>K0Y2@^$zVd<=`=)sChxCh`?Iw^Jk}%>he0U eX&8pHqyG=U>N9lRd(I620000(~PhH literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/lyx-source/images/rocket.png b/trunk/gosa-plugins/systems/help/fr/lyx-source/images/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..838c38bf132796fbf9ca73fc12083ac5f9989487 GIT binary patch literal 828 zcmV-C1H=4@P)ly+{r?!l-wo#(-WlaHd_Q)K;X(6~ z3#>mG9K#qGJ^%y|GfeX|pv^*3T+7{4bvYyr6&b{I6d3ql9b{nr^^xJz@+%CSvfmlb zzn5lsUY2v=_xGQUF+j~AeESsyn+#Vr z{bUf*|M2Mt!?6Po9~|8OOo5Z-FM}xG zKZZSPJ}?NYGchRXura(*i)1*v^+;zK1H%DiZvzAnI1FkS7z&}ZgMbjHgPw%~!;%^2 z7}WIy7&P=)8JKiE7#KdXG5lm;xPTt$009IK#PdlE1zhqv^%t+mGfbVdpTW>tia|q( zo#7WZ7X!zyuM7t( z{y&gCADdo)0Ae~A&S1c&sUX1c`w0WXpQj9xYD^3-ws$e;T7bjl7XxKi;u0+}?1J;mxhLiB4-69@K!s=F}6Mnn3^{fLMP2 zVaUI~=jw%zj~PDv`o?epm@p=~t!H=ul?Q2lfG?i_1Q-A!p8pI-KF#$20000|$iZ zGyougSbqLx^nN3t+bE>3!>BCxkAa&5sQCv2!}|}v8QA!^8Q3MwWnO>%IPJsbi+2B+ z7@sjPpc(=YKun*Qc=Om*)EO0||1+qGGco81Ffs5jGcd?Y1HHlfpFvcDnL*M@NBK7s zli&BR-xz-U_=$o60*K`so1n3{7&ikK$3F%kpcC1D{byihWn>WMVr2Ni!^ptK_@9AK zLz>|nD~tQb51(f+v$3JL03d)^{;=_~bFuwn`0(*B!?_>-7`V8Y7^L`^7=RQ57f=D) ze+C8?W+sMTKYsFj{Pcx^l^xXpfB<6o{r>q6MpkCdzrX%6`~&LZ;sm+^=mjRAMq!Wv zK>X|PKZY+KK7RQ0`6~m<&p!-|Kv%&4Kmakly>;p6w|AcyelsvL{QS+p@DCVOKYu`Vp*WKt{y(e@aW#t&EJ8V|9tdJu1q{qg91J=#e`O86ZC3d9 zoAKKBpZ~vo0|xewU;h{Y0suh(zW)RP0s;X3`}v*Gtf|uD%*b;ZBONyh3kU=D>+bO6 z+TX4n9UjUV67*vu|HM)vAr3?K*6%d?{svzE0RQm+00963hy@f7jLghH=D*V)pFN9U z{11!?UT%gD&t5WodiRk*OZ7hk^Ys-H%AxW>I*!o{Y^#_0zB>AT$%~Jy2|%rH00Ic) z1w@npqliaPfPsUPgW>m&9}K^KF)%3ce`4Tyed5-w+wZu=m1He69V{4lKHO5f|M08E ztFO#^00IbM05E2lSXdZ1`FMeOi4_>aUx5Mli$PA5m4WBW&EGFR{M&iz$Sr6`%jf|2$4r$s+spf+u-Q>g|C~v${^~-@3D2KhAWzjp*~g402!Z zUHKi(9mVwYR{HU3yQ(XJdfgr7_kt7B*ZVg zlZA`E-HR!XFqoPrv4|=5q??46nDTS`=Vp~s9W4h#9%&XB{&YOW(>Ss1gowdH#>bK? z8Y|h_G_JnXKEGa!RbjKC&z^}6{xug8QpM!9)-qhxW!6-X$b8VxoWq_ay;SG)q^zy4 zl#WYx-skypq>N1rh_uAIJMX_g{(N)1i3HE2^Uo#sN-{sl`!nt7bPI-)m$;^1)Ml8r sPTcnHd4|#lq7}@qf*h7KXm7~hGi}kLyMEkXfZ@&H>FVdQ&MBb@00WM*LjV8( literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_phone.png b/trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_phone.png new file mode 100644 index 0000000000000000000000000000000000000000..45714d175d5098439b9395d2ad740dd172177351 GIT binary patch literal 660 zcmV;F0&D$=P)ScHQP zVNsA?B5yl{8NpT%jR-T+VW~W7bLyOX=JxFA)8R2Gh_*L;;LR64Z{FYc`=dkzr4+?* z<)P)hc&==?T+y2_U_Jp0>s(f)3f!GoiNvt^^GqkZZ%K+H$)jhkV9NBX24^= zy`2oR&@%|!?oa?C@~_&wGJ=TsL?Xx@7oW`|?D4-cxHcyK<8^3aGLTN^{5Muy5bOp{ z0nNMepMj4MdV=ahDG}lRYqZrbp9V7NO)c^=Oj}nUnSzV0w85CC0Zs#f_x67DEW|+d zp#Zzag2gM33+=)19r6bnnVnz3#9=Q7yCE-l&fL^H-PK#}@nB{%xIEs?9!X6-4pnx5ZCB7` ukB=b4bo(13LTBgT2AscHtkU1M|HLl}ISjH0h?;Bw0000bO~EDAyA<{^6rx^a1=~Y^K=m;2QG9De zWspMjCgp?npo9YlUPFW}j6L|aU~}H(xIcD(eS5guysq%T;rsa>&iS0r_na@mS-ZHp zy1E^SM6NrI0|4mi>Vj#S&@>G*Gc(U6N&4t5plt*s6bc3V`};371BPM1Fbohv;Pd$c zZTbHYfH7t@PUyN0UDsh41~g3rA;f9V=i2TjrIdL)H{CQ%Se9j;t3VXRtE#H+4?>MJZuoeB#08 zuT3pm$+C0pHC%7l%F0R}z!f?jn|>1R4R;(KAHue5IP7%L{&yGL$;J)%8!^kWK;QcD z5D>@4#_nV7+gd^SqcEkauw(g{$+FC<)oP=gz}PlUF%w+8jTR;w8ymj`LFl2Bf>H{O z<3I=jAq3&C*MP)h05<`M4Glj5>;vg#B=d<+v{)=wgTY`=E|){OT!yNup1sWBMfxQ$ zybMHl-B5NC*aPzSawvaK)#%R7&hF6A(7@8t61KLs5R1jY^E?=1SiJSYqoCvxMCXC% zJ_gef_jsO4v literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_server.png b/trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_server.png new file mode 100644 index 0000000000000000000000000000000000000000..84f65700a80e318827832736b1d104056fc7956a GIT binary patch literal 813 zcmV+|1JeA7P)GHhu{cUWMP-z>&em3^x@O$>{U>05Y#js^-w&G-iPHD$Pak`^swSa? z6zuGR>jD-6A4*FV&vmsnDy1iWoSl0W5q=K>T~-#o*3eMZTU#5KN(o#ac0CZq4z5@1 zXCV?5bi9yqq&hM-H#OgDjJd9>tK&U&bqQJ20H7pzfae1Ov;?al^g$?SKi3p1i#;^D zxR~)}{{ALEd$*yWMasf427~~uL1}3IPLi6E#EwE^Ep)$hQYobxWGDsi{P`}KyVt=7 ztw0w2*WQrSk4d!LfAty%l3B^A@e-`XkojaO^X08u_VVnIUC$f4zG>`^Ypfl>TI*Ol z%|2VFz|-upxNu=Ova$Zh$Ng`ef3xC|DBFL-kqE?NaQrg~>DPfX!0DogJHQeQW|956 zMm0BghI8|i6P{Nd7!!G>@_1bQwG9vcf#rukpz8A;2qxjgd7u<#UV)oGA^MPDwlsj& zirw9vk0x$>v%Z;6U1@A?j9B2Qse=wS3IPy{}wSqVNOv)5))HuHAp& zkG>skDkts0OcoZikah~f!5lmZq#Z0dduSJw(g-2G9{Xab`|4U-*Dw6=9)RdWSaNoc r2e2&W5Pb;opVxU%6ohFj4yOMF7(FZx`)`9&00000NkvXXu0mjf`d(&z literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_terminal.png b/trunk/gosa-plugins/systems/help/fr/lyx-source/images/select_new_terminal.png new file mode 100644 index 0000000000000000000000000000000000000000..a218480c9b94f81f9b97efa4ca1d169d59a3baf3 GIT binary patch literal 776 zcmV+j1NZ!iP)ll$3Z}?l(^XPL`Uk`oEFDNKU6@T* zDj0O(&Wt-Lw9xLvMail~vM^@RR3fJBDhU*1Fh9nLouTpFcTX3S1XAV;2ktrC@0aiQ z+$*(O?c1rTscT^v+B8l1KMI8c0IG_J;GEN$nVFxbr>DOFc4T>Z`DLL{h}YKED3{B4 z?+*y<^&-O7))sLblgVTl8X6jIwOY??KA+cxg#~73XBiwEq?Zc-V+@T(gKD+P=;)|7 z#^eC3s%jKPwA*b~S66$I_t5Ed$Ye5XZ*ME00Cso4;^HE49HXlH1QFTqMTE`GO-4pW zs8lNZcWe*@0IaO6&}=q|q6lj(A_9PO4(A+6lCZI{L8sH{60Pk<6A^+Sz!-z~9_Jk1 zdsG$gJ>GkgB%$4IqpGOtfjwDc4AxqT#UiCriCiv67={>QP*t3ByxG~|)s1!jP2f&5 zJ@8USL=X|IwS-|vHk&1v%MnEpi&uVUsrH;x+Kpp?a(_Q3o}3LD*Vi8dSP`-1a+$HQ zF^a`v*TJDf+=_3(WFI_z$-{5{g2_J2>pWlnbQP_5-VPsoqw=@P+}zw!wOXz0*-g`w zPLkl#l%qeEU~&RD2^`-w{RglF_kZB__U&I~U|`_G@$vBq5y|>)IQN0-afQtDG=1^i z@PjLy21b7C@}Hi8XYi=-{i{zeU%t@u!+ZjteGFe~9aWuB)w`-XyIXg=vpNbK=_zmt zKJSwIROiwCbL&0z^+0t#P`CB2Y8?%F39Q3<`xo2)(c#t*4M-lIBlzb}SbB|guAv+A zm={gtE3!Qu?4p>56Cu2RA$q5#b=2J>y?89XS%UL`0Q?929y}*B`c6{-0000 ztyzu52#rt`_m&9m+yoK3sE9}x(TJus<4oJh%>A8vJ{L0?NA$o4?}6`q&%=8Z!0PJi zTOV9|@0w9!`pw}bq zXN&^0F=(av{kJx0rkI>8kj9C`iyok!2P;9)Q+3j-gU1P^=Uvm-Bcz2V*qW3Q3%D_t^y^>vHs) zFR|7l*8UUV8VAoc%+$)1D<#U69KP@JxqSkFbLrjDch;&U=D$6`>3aIcyF&`r*491| z5qZ$-%e_`te)*#*(m+INB3q1f6wgU^-IHv~lTPPoR~m={n3|e8vAn!|*%)PJ4%bgE zompC_R;%8zub+gs&jU{bPYs{@3Ah6v-b7tNF@6>o7tihN>^y3>+p@d6E6wJRWD61b zelSC#1CKKvP%IYfzVBBGg#yMHDxV%2BiI`(&A$)xcMxvMe+U3wtJPj#Sy@^CzYeFRKcUBq$^YrxWnW2tnXBYC)AU-gU5PW~Kwz0AC z-H{_Rl~$`I6BEU9z5cio5pLi9(Z2cDS#6cWXQeOhUAVCNBE;MO>L3hT!HpZ&Z{_n| zMJd-ge*D-;*L93BS~Z*P + + + + + +\begin_inset Text + +\layout Standard + +Modèle de terminaux +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Faites votre séléction dans la liste déroulante. + Le terminal sera associé à ce département. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Serveur Primaire +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur primaire dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Serveur de Swap +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur de swap dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mode +\end_inset + + +\begin_inset Text + +\layout Standard + +Faites votre séléction dans la liste déroulante. + L'administrateur peut désactiver le terminal ou choisir le mode d'affichage + adéquat. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Serveur de logs systèmes +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur de logs dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Seveur NTP +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur de temps dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Configuration réseau +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse IP +\end_inset + + +\begin_inset Text + +\layout Standard + +Adresse IP du terminal +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse MAC +\end_inset + + +\begin_inset Text + +\layout Standard + +Adresse MAC du terminal +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Action +\layout Standard + +Choisissez l'action à exécuter sur le terminal. +\layout Subsubsection +\added_space_top bigskip +Périphériques +\layout Subsubsection* + +Clavier +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Modèle +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le modèle du clavier dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Disposition +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez la langue du clavier dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Variante +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez la particularité du clavier +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Souris +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Type +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le modèle de la souris dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Port +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le port sur lequel sera branchée la souris dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Matériel téléphonique +\layout Standard + +Précisez de quel type de téléphone il s'agit. + +\layout Subsubsection* +\added_space_top medskip +Carte graphique +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Pilote +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionner le pilote de la carte graphique +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Résolution +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez la résolution de l'écran du terminal dans la liste déroulante. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Profondeur des couleurs +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionner le nombre de couleurs à afficher +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Ecran +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Type +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Fréquence de synchronisation Horizontale +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquez la fréquence +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Fréquence de synchronisation Verticale +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquez la fréquence +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Bureau distant +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Méthode de connexion +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le protocole utilisé dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Serveur de terminaux +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur du terminal dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Police du serveur +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur de police dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Imprimante +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Fournir un service d'impression +\end_inset + + +\begin_inset Text + +\layout Standard + +Cochez pour indiquer si le terminal peut imprimer +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Serveur de file d'attente +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur d'impression dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Scanner +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Fournir un service de scanner +\end_inset + + +\begin_inset Text + +\layout Standard + +Cochez pour indiquer si le terminal peut scanner +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Modèle +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le modèle du scanner dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Démarrage +\layout Subsubsection* + +Paramètre de démarrage +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Serveur LDAP +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur ldap correspondant dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Kernel utilisé au démarrage +\end_inset + + +\begin_inset Text + +\layout Standard + +Nom du kernel utilisé au démarrage +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Options personnalisées +\end_inset + + +\begin_inset Text + +\layout Standard + +Options à passer au kernel lors du démarrage +\end_inset + + + + +\end_inset + + +\layout Itemize + +Cochez pour sélectionnez le mode de démarrage, par défaut le mode graphique + est activé. +\layout Subsubsection* +\added_space_top medskip +Modules du kernel (format : nom paramètre) +\layout Standard + +Introduisez le nom du module à charger au démarrage suivi de ses paramètres, + ensuite cliquez sur +\emph on +Ajouter +\emph default +. + Utilisez le bouton +\emph on +Supprimer +\emph default + après avoir sélectionné le module. +\layout Subsubsection* +\added_space_top medskip +Partages +\layout Standard + +Utilisez le bouton +\emph on +Supprimer +\emph default + après avoir sélectionné le partage. +\layout Subsubsection +\added_space_top bigskip +Imprimante +\layout Subsubsection* + +Général +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Nom de l'imprimante +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le nom de l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez une description, un commentaire sur l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Faites votre sélection dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Détails +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard +\align left +Localisation de l'imprimante +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquez le lieu où se trouve physiquement l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +URL de l'imprimante +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'url qui permet d'accéder à l'imprimante +\end_inset + + + + +\end_inset + + +\layout Itemize + +Le bouton +\emph on +Editer +\emph default + permet de télécharger un pilote d'imprimante depuis votre arborescence. + Utilisez le bouton +\emph on +Supprimer +\emph default + pour effacer le pilote choisi. +\layout Subsubsection* +\added_space_top medskip +Permissions +\layout Standard + +L'administrateur peut donner la permission à un utilisateur ou à un groupe + d'utiliser et/ou d'administrer une imprimante. +\layout Standard + +Le bouton +\emph on +Ajouter un utilisateur +\emph default + renvoie à la liste des utilisateurs et le bouton +\emph on +Ajouter un groupe +\emph default + renvoie à la liste des groupes. +\layout Subsubsection* +\added_space_top medskip +Configuration réseau +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse IP +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse IP de l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse MAC +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse MAC de l'imprimante +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Information +\layout Standard + +Cet onglet donne un compte rendu de l'état du système. +\layout Subsubsection +\added_space_top bigskip +Références +\layout Standard + +Les références résument les relations existantes entre objets. +\layout Subsection +\pagebreak_top +Configurer une station de travail +\layout Subsubsection + +Informations générales +\layout Subsubsection* + +Propriétés +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Modèle de station de travail +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélection d'un département dans la liste déroulante. + La station de travail sera associée à ce département. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mode +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélection du mode dans la liste déroulante. + L'administrateur peut activer la station, verrouiller la station ou effectuer + un test mémoire. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Serveur de logs systèmes +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur de logs dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Seveur NTP +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur de temps dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Configuration réseau +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse IP +\end_inset + + +\begin_inset Text + +\layout Standard + +Adresse IP de la station de travail +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse MAC +\end_inset + + +\begin_inset Text + +\layout Standard + +Adresse MAC de la station de travail +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Action +\layout Standard + +Choisissez l'action à exécuter sur le poste de travail. +\layout Subsubsection +\added_space_top bigskip +Périphériques +\layout Subsubsection* + +Clavier +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Modèle +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le modèle du clavier dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Disposition +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez la langue du clavier dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Variante +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez la particularité du clavier +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Souris +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Type +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le modèle de la souris dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Port +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le port sur lequel sera branchée la souris dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Matériel téléphonique +\layout Standard + +Précisez de quel type de téléphone il s'agit. + +\layout Subsubsection* +\added_space_top medskip +Carte graphique +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Pilote +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionner le pilote de la carte graphique +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Résolution +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez la résolution de l'écran de la station de travail dans la liste + déroulante. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Profondeur des couleurs +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionner le nombre de couleurs à afficher +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Ecran +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Type +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Fréquence de synchronisation Horizontale +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquez la fréquence +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Fréquence de synchronisation Verticale +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquez la fréquence +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Scanner +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Fournir un service de scanner +\end_inset + + +\begin_inset Text + +\layout Standard + +Cochez pour indiquer si la station de travail peut scanner +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Démarrage +\layout Subsubsection* + +Paramètre de démarrage +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Serveur LDAP +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez le serveur ldap correspondant dans la liste déroulante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Kernel utilisé au démarrage +\end_inset + + +\begin_inset Text + +\layout Standard + +Nom du kernel utilisé au démarrage +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Options personnalisées +\end_inset + + +\begin_inset Text + +\layout Standard + +Options à passer au kernel lors du démarrage +\end_inset + + + + +\end_inset + + +\layout Itemize + +Cochez pour sélectionnez le mode de démarrage, par défaut le mode graphique + est activé. +\layout Subsubsection* +\added_space_top medskip +Serveur FAI +\layout Standard + +Sélectionnez le serveur FAI dans la liste déroulante pour le démarrage initial + de la station de travail. +\layout Subsubsection* +\added_space_top medskip +Liste des classes FAI utilisées +\layout Standard + +Utilisez le bouton +\emph on +Ajouter +\emph default + pour sélectionner la liste des classes FAI utilisées pour cette station + de travail. +\layout Subsubsection* +\added_space_top medskip +Modules du kernel (format : nom paramètre) +\layout Standard + +Introduisez le nom du module à charger au démarrage suivi de ses paramètres, + ensuite cliquez sur +\emph on +Ajouter +\emph default +. + Utilisez le bouton +\emph on +Supprimer +\emph default + après avoir sélectionné le module. +\layout Subsubsection* +\added_space_top medskip +Partages +\layout Standard + +Utilisez le bouton +\emph on +Supprimer +\emph default + après avoir sélectionné le partage. +\layout Subsubsection +\added_space_top bigskip +Imprimante +\layout Subsubsection* + +Général +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Nom de l'imprimante +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le nom de l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez une description, un commentaire sur l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Faites votre sélection dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Détails +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard +\align left +Localisation de l'imprimante +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquez le lieu où se trouve physiquement l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +URL de l'imprimante +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'url qui permet d'accéder à l'imprimante +\end_inset + + + + +\end_inset + + +\layout Itemize + +Le bouton +\emph on +Editer +\emph default + permet de télécharger un pilote d'imprimante depuis votre arborescence. + Utilisez le bouton +\emph on +Supprimer +\emph default + pour effacer le pilote choisi. +\layout Subsubsection* +\added_space_top medskip +Permissions +\layout Standard + +L'administrateur peut donner la permission à un utilisateur ou à un groupe + d'utiliser et/ou d'administrer une imprimante. +\layout Standard + +Le bouton +\emph on +Ajouter un utilisateur +\emph default + renvoie à la liste des utilisateurs et le bouton +\emph on +Ajouter un groupe +\emph default + renvoie à la liste des groupes. +\layout Subsubsection* +\added_space_top medskip +Configuration réseau +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse IP +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse IP de l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse MAC +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse MAC de l'imprimante +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Information +\layout Standard + +Cet onglet donne un compte rendu de l'état du système. +\layout Subsubsection +\added_space_top bigskip +Références +\layout Standard + +Les références résument les relations existantes entre objets. +\layout Subsection +\pagebreak_top +Configurer un serveur +\layout Subsubsection + +Informations générales +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + + +\color black +Nom du serveur +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le nom du serveur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Sélectionnez dans la liste déroulante le département auquel le serveur sera + associé +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez une description, un commentaire sur le serveur +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Configuration réseau +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse IP +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse IP du serveur +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse MAC +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse MAC du serveur +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Action +\layout Standard + +Choisissez l'action à exécuter sur le serveur. +\layout Subsubsection +\added_space_top bigskip +Databases +\layout Standard + +Ce point regroupe toutes les bases de données qui peuvent être associées + à certaines fonctionnalités de GOsa. +\layout Standard + +L'administrateur à le choix entre : +\layout Itemize + +Accès kadmin Kerberos +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Realm Kerberos +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le realm Kerberos +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Administrateur +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le login de l'administrateur Kerberos +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mot de passe +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le mot de passe de l'administrateur Kerberos +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +Base de données des FAX +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Utilisateur +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le login du propriétaire de la base de données +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mot de passe +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le mot de passe du propriétaire de la base de données +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +Administration d'Asterisk +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Utilisateur +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le login du propriétaire de la base de données +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mot de passe +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le mot de passe du propriétaire de la base de données +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Préfixe du pays +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le préfixe du pays +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Préfixe local +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le préfixe local +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +Accès administrateur IMAP +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Nom du serveur +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le nom complet du serveur en notation internet (smtp.acme.com) +\end_inset + + + + +\begin_inset Text + +\layout Standard + +URL de connexion +\end_inset + + +\begin_inset Text + +\layout Standard + +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Administrateur +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le login de l'administrateur du serveur imap +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mot de passe +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le mot de passe de l'administrateur du serveur imap +\end_inset + + + + +\begin_inset Text + +\layout Standard + +port Sieve +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le port sur lequel Sieve répond +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top medskip +Base de données des logs +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Utilisateur +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le login du propriétaire de la base de données +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mot de passe +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le mot de passe du propriétaire de la base de données +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Subsubsection +\added_space_top bigskip +Services +\layout Itemize + +Exportation Nfs +\layout Standard +\added_space_bottom smallskip +Utilisez le bouton +\emph on +Ajouter +\emph default +pour pouvoir configurer les exports Nfs. + +\layout Subsubsection* +\added_space_bottom smallskip +Freigabe bearbeiten +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Nom +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le nom du partage +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez une description, un commentaire sur le partage +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Type +\end_inset + + +\begin_inset Text + +\layout Standard + +Faites votre sélection dans la liste déroulante du type de partage +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Type de caractères +\end_inset + + +\begin_inset Text + +\layout Standard + +Faites votre sélection dans la liste déroulante du type d'encodage +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Chemin +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquez le répertoire correspondant au partage +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Option +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquez les options éventuelles pour ce partage +\end_inset + + + + +\end_inset + + +\layout Standard +\added_space_top smallskip +Cliquez sur le bouton +\emph on +Enregistrer +\emph default + pour terminer la configuration du partage. +\layout Itemize +\added_space_top medskip +Services de temps +\layout Standard + +Utilisez le bouton +\emph on +Ajouter +\emph default + pour pouvoir introduire l'adresse du serveur de temps. +\layout Itemize +\added_space_top medskip +Service LDAP +\layout Standard + +Cochez pour pouvoir introduire l'adresse du serveur ldap +\layout Itemize +\added_space_top medskip +Services de terminaux +\layout Standard +\added_space_bottom smallskip +Cochez pour indiquer que ce serveur est un serveur de terminaux. +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Désactiver temporairement le login +\end_inset + + +\begin_inset Text + +\layout Standard + +Cochez pour empêcher les terminaux de se connecter temporairement +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Répertoire des polices de caractères +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le répertoire de polices de caractères utilisé par les terminaux +\end_inset + + + + +\end_inset + + +\layout Itemize +\added_space_top medskip +Service de logs systèmes +\layout Standard + +Cochez pour indiquer que le serveur comprend un service de logs systèmes. +\layout Itemize +\added_space_top medskip +Services d'impression +\layout Standard + +Cochez pour indiquer que le serveur comprend un service d'impression. +\layout Itemize +\added_space_top medskip +Serveur de messagerie +\layout Standard + +Cochez pour indiquer que le serveur comprend un service de messagerie. +\layout Subsubsection +\added_space_top bigskip +Information +\layout Standard + +Cet onglet donne un compte rendu de l'état du système. +\layout Subsubsection +\added_space_top bigskip +Références +\layout Standard + +Les références résument les relations existantes entre objets. +\layout Subsection +\pagebreak_top +Configurer une imprimante +\layout Subsubsection + +Informations +\layout Subsubsection* + +Général +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Nom de l'imprimante +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le nom de l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez une description, un commentaire sur l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Faites votre sélection dans la liste déroulante +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Détails +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard +\align left +Localisation de l'imprimante +\end_inset + + +\begin_inset Text + +\layout Standard + +Indiquez le lieu où se trouve physiquement l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +URL de l'imprimante +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'url qui permet d'accéder à l'imprimante +\end_inset + + + + +\end_inset + + +\layout Itemize + +Le bouton +\emph on +Editer +\emph default + permet de télécharger un pilote d'imprimante depuis votre arborescence. + Utilisez le bouton +\emph on +Supprimer +\emph default + pour effacer le pilote choisi. +\layout Subsubsection* +\added_space_top medskip +Permissions +\layout Standard + +L'administrateur peut donner la permission à un utilisateur ou à un groupe + d'utiliser et/ou d'administrer une imprimante. +\layout Standard + +Le bouton +\emph on +Ajouter un utilisateur +\emph default + renvoie à la liste des utilisateurs et le bouton +\emph on +Ajouter un groupe +\emph default + renvoie à la liste des groupes. +\layout Subsubsection* +\added_space_top medskip +Configuration réseau +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse IP +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse IP de l'imprimante +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse MAC +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse MAC de l'imprimante +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Références +\layout Standard + +Les références résument les relations existantes entre objets. +\layout Subsection +\pagebreak_top +Configurer un téléphone +\layout Subsubsection + +Informations générales +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Nom du téléphone +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le nom du téléphone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante le nom du département auquel sera associé + le téléphone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez une description, un commentaire sur le téléphone +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Configuration avancée du téléphone +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Type +\color black + de téléphone +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante le type du téléphone : SIP, IAX ou CAPI +\end_inset + + + + +\end_inset + + +\layout Itemize +\added_space_top bigskip +Si SIP est sélectionné vous devez remplir les champs suivants : +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Mode +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante le mode de fonctionnement du téléphone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Mode DTMF +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante le type de modulation DTMF utilisé par + le téléphone +\end_inset + + + + +\begin_inset Text + +\layout Standard +\align left +Adresse IP par défaut +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante le type de configuration de l'adresse + IP +\end_inset + + + + +\begin_inset Text + +\layout Standard +\align left +Temps de réponse maximum +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le délai d'attente maximum +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top bigskip +Si IAX est sélectionné vous devez remplir les champs suivants : +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + + +\color black +Mode +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante le mode de fonctionnement du téléphone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse IP par défaut +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Temps de réponse maximum +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le délai d'attente maximum +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Type d'authentification +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante la méthode d'authentification du téléphone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Secret +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le secret utilisé lors de l'authentification du téléphone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Code du compte téléphonique +\end_inset + + +\begin_inset Text + +\layout Standard + + +\color red +? +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Regrouper des lignes +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante si il faut grouper des lignes téléphoniques + ou pas +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Machines qui peuvent se connecter +\end_inset + + +\begin_inset Text + +\layout Standard + +Utilisez le bouton +\emph on +Ajouter +\emph default + pour insérer le nom d'hôte pouvant se connecter. + Le bouton +\emph on +Supprimer +\emph default + sert à effacer le nom d'hôte sélectionné. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Machines qui ne peuvent pas se connecter +\end_inset + + +\begin_inset Text + +\layout Standard + +Utilisez le bouton +\emph on +Ajouter +\emph default + pour insérer le nom d'hôte ne pouvant pas se connecter. + Le bouton +\emph on +Supprimer +\emph default + sert à effacer le nom d'hôte sélectionné. +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Itemize +\added_space_top bigskip +Si CAPI est sélectionné vous devez remplir le champ suivant : +\begin_deeper +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +MSN +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez le numéro MSN de la ligne téléphonique +\end_inset + + + + +\end_inset + + +\end_deeper +\layout Subsubsection* +\added_space_top medskip +Configuration réseau +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse IP +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse IP du téléphone +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse MAC +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse MAC du téléphone +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Références +\layout Standard + +Les références résument les relations existantes entre objets. +\layout Subsection +\pagebreak_top +Configuration d'un composant +\layout Subsubsection + +Informations générales +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + + +\color black +Nom du périphérique +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Insérez le nom du composant. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Base +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Choisissez dans la liste déroulante le nom du département auquel sera associé + le composant. +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Description +\end_inset + + +\begin_inset Text + +\layout Standard + +Rédigez une description à propos du composant. +\end_inset + + + + +\end_inset + + +\layout Subsubsection* +\added_space_top medskip +Configuration réseau +\layout Standard + + +\begin_inset Tabular + + + + + + +\begin_inset Text + +\layout Standard + +Adresse IP +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse IP du composant +\end_inset + + + + +\begin_inset Text + +\layout Standard + +Adresse MAC +\color red +* +\end_inset + + +\begin_inset Text + +\layout Standard + +Introduisez l'adresse MAC du composant +\end_inset + + + + +\end_inset + + +\layout Subsubsection +\added_space_top bigskip +Références +\layout Standard + +Les références résument les relations existantes entre objets. +\the_end diff --git a/trunk/gosa-plugins/systems/help/guide.xml b/trunk/gosa-plugins/systems/help/guide.xml new file mode 100644 index 000000000..f83d8c951 --- /dev/null +++ b/trunk/gosa-plugins/systems/help/guide.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/trunk/gosa-plugins/systems/html/images/cdrom.png b/trunk/gosa-plugins/systems/html/images/cdrom.png new file mode 100644 index 0000000000000000000000000000000000000000..60adeb6f0b63093955f84672013d4f2aa53fc059 GIT binary patch literal 834 zcmV-I1HJr-P)ga6U% z>+4_F>vg)nzo$;8Ls1kB;2;Pn3`2_Jc+jNLXwdxp{HFlGZQFizaBy&v&1UT=ia
      2<>(o&1Uo2aU3=^HN_pr zK@>&k^?K-byC5PgEG(=F&-32qoWn2-aLyrw=)2J7=H@4Jb8{od$H#|KN)Qoz-$xJx zux%UJY<5y;t(E6_AR<_n1V=ySqE1TCJAa z?KWK3g=v~_UAI309LK@v=qU2}JQ!n0lH}jem?j#H25xR{Dn_HxxHvsM{nd3{c%BEt zFd(Iblo9~I7(<$-$mMcyU3akR`T6&i?-X7fF(Q4*Gt+E&pFQxCLv9sBYt<+FU4ojtm6crTOAX>OofCQ*; ztBR<&RY;tG!T}C&M(V9e+_vw;#Zzy;|H|Qmd(=!! zBh{gzNiK=7O2jXsC@%d24~Oc}C!fhr|5(LZpSW9~v=6-d;+yAReKg}I-L0XkG6A0l zT~iSx2}P4}O`Bq_Ki7o!Mq~@>HROCJ3sVDQb~8Kgo7HgM`p(bO8~10 zt_Wk<934?Vy@?<@YDBm-U&%C>@XpQRou5Sy!cSk{ zpe^KO@NgfZ2)*s#OCNs-ypM~4`myZ4X%YIc#s5}r9y?9Yaz15LCQvn58pV5B!H$tU3AzI zO=6usuKBy-a?`Atk^u3r2cHJU!ZzdItCbnh&hiuv+AW5)N zr0Kx=HcTyfF~&X`2m4nEsFmlYO5y#-pQ~D`&=rtT6d6@+c}4fJHv2nyF~;bEm+!y0 zwE5?E@0|kj5`b&f|Hx1OQ1#zCG`wsFMYm}JBBc$RTEk)0_A;~TVR9?Nw9>GiGc#(kzQ-d#3zHkuknMPj;GW8%)DGxEXffbpVE+-^{O_8QRViS{Aw=g@Seuu*F?sR%Bfhqmf`d8DnDN1^$OU8521A7cBpP z(aRby>Oo`NgI-o5AL`;k3v553?UZ)f>2x~dLD`#6@*dyhIlQk3!w`VY%}q0zOx{bS zQuh;y#G(-5Dv%C>zzxH&J{paR-EQ}nQmORq&d$ys{D;`s*iiHN{1=%_X5F$Zqu=ji z+cv)M10bbDQ4|zK!7vPb-w)gEcDd1LJlNXW`bl? zBuXR_c^)Yxnx+Zhnw0Y4>gwuO(z2|zL?VHzssurBX@;UG*xDpZcW&{lTBY4}7*~Db zngk#kjm8bb$V*+<4NcQnUtgzQuVdRbp6Ai&bntwYiO7iCudguhN0b|Fj>}bC(ZTK7 zq^`{-rES}dSS*$^O_O*$&cVR}K@gD1WN39A0G*O53)Z zLWnubval?RSS-d-?U+AncPQ4M5Rs?21D7i^X_ApNEw{yF5T|OE7^}V*%87}IsbaB+ zl#)au0YIogLOp`uVW9@-QC@vx3{<5TCH}oTrO*sN=5CdO_8`B zr{Wyb;+!UBYQazRd#ChAcX5S=GaL~QTu)q{NeB^5r_-rIp|EiK{h5ckS99~{y&6sD z9DC59(LEXJn4dNbN^1 zAczD;Y45~{r*7!UaW!nWg69VRhY&)({n2Y58Z+vqrs*@EfBem?5JJ1Z_U;GQ=Wf37 Y55kvzVLJ~b(EtDd07*qoM6N<$g8dl63;+NC literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/network.png b/trunk/gosa-plugins/systems/html/images/network.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5dbdf055296e30b225a836fcb3bb1267c39e25 GIT binary patch literal 894 zcmV-^1A+XBP){$aQ(%~p8Cr^kA~Fq8Nn~i!P(w`{S50VK z*vFzt6XV9X>(;n2F>#^BG--^AF^WyPU_nyU$TMoqKwF+8Q>H)*^P&vQdxkr6|1K1Q z)o*jo;{3jRC+A2!D|cUm@0G60J^r>g8yjldg)qw-8M0B$xKDsfq>~Ocf_P?;b-hc7tchlu)EG_QMhQ-)# ziy|O6C@KKXqo*!A>R-MRjjoY1tYq_ov!~i=X>uW} z3W}^CghW1XkjWG&8v1jA`+H74jtIpf$ zYxf;)YdM0u#!f@M6IWdg`FxI*;MjCxVc;5+Cib}f1P7$M>W`m2{$kg;3l}cEz49m= z8K3xRa4md)vXG4p1KESa>VaN4bLK5~CQ~dY5-a0&bz48(?YSx&q4-$w@u05NOm+B9 zYLL+afnSn<_*a6es@muK`@f!RYC3u-lgSF3%_@1lE&%4{mV{{v(cIiDkBp2iUBCWb zH;{UEh3d}Eu6M0g)h^45>hpDUS*@y7Rb@FI-%KwrKfI@DR#K_dRxr451IPpX1&&$RP%|I648MpQ0JDT=sMLJ1L4 zBB&G&C|6XDy+Ci}3fw3Ps)Upihc*=_4h4ydLod0|5P|>+p;U@!Qd~Q+*Sp?b@9ymG z?9Ai$K7XAzvv1cbkx*30Fa7f7n|W{E@Av(CvoBRzYx+Dl4{}Q2l)x#0Qv#<1p1S2A z1;~`>14s|jhiJ++A2KO(OzYcm&#tMr-+AYw`T68bS~hNf!i3B zcl`d1SCg?h18#9~iLIVT7*!7rl9#{>$t;L{opu*nn2qTC_kKj=F?c59@dX1;=}KNF zL_G8^*s&!3cI!rlYz}cHkF^DxY6A;W7GeNAIcqHi7vt|(AA{D4_^GE!aZeU_`Z}f* z>2Y336H!?L<}W2iRV>!U{mDGl!ic^g_p}|5B$Z7tg_zWMBw!-}8bizi=sgCig^Yp- zS)+4;XFUWHIUdj|o77A|E9J&3`WSBxhwiB{F>DM!h=f3Ft&84*w4?;I)rrR|=+
    1. hk)Ex606pag!7Q%otVh@~X^#rsHB`>yQM0XQE7J^VBQf?Bfq4*cc0E9yLlMGZ& zjaKXdj{y!@If-q39On)xtH()o(w4k}$UGfqRu&H^;yf7P0p2)1ynmm*xVf3E=7|TK z92n?h>qc4@wnA37fJlLmX5A9Zl82t)>toGIy_F>pGZ2n3H$g>TTVLl5EFQ!%#x1u| z%t?$3iF+Fw*6L36alOFR%96&K#J~r!GCF$gdVnWuX6X>XX90f;g<;5Hg#RGg^}ulw z3mDTY0i1vqt0z{4?ttfOW7G(02%T}KLyWv30$5ptRh$$k?QZLG9bs&@8&IR!@LTa>QvmlF))p9<1A8`)(v>dVxJ*nr3N7A5;p6m%sR@=RU6~_Y+ zgaHcBag8x+1`ip2=2LWBM#XB!d7%bIm+EAJW~x=py4@34Pdp_AMAwc766*pKgV$rx zYY2u}4-M^*5mzC$9u~D^(pGezEA$#Vx#NYTf#pd^VOEv^zz85GY_d9wW)Gm}@!4wS zA18RkqtgJyib*0nR%MUHX=GWQCW<4;HfExWRY`vna6|L26 zqH^4)p1Zn&u0h0i_ksQWJy?F8f3iV!%c%5P5?zaAnk8_O_oUYAldNp>K=Q-tBR(Y{ zw7jyCR3Qu*kAcHyGy#PWI=Q)C(P~s8+fZ`z2ttkrGF8YakBvrycjI2Khg#pEcI$|9 zrPJwT#?5*SivRg*@?~6(fIWl*fdALA3V(;)xpRk4NG@Ky$U44~(;kSAg^37L2ygtDWC)%+ zcaFoRI8|gliX$o%3axs*9t+?Eygl5qAk#hOm(Z&e0S$?ucgJ}E&-|^etr&+{8s|Yw zpxtgOLx91wT1Px-5Qf~Bar)&U?z`A0FoDbLFW-EVDwTcuWOtXt?#HjcKKnFBi??pw zig604PUS*F4h!}u z6!$$1_}jN{p9L7Tyu8etW~EZ0gM$N8B&MJ0aM!r7Ybs0|;ZZ1ZnB@E%Y`J z zcD6rJ-CkEMEiKc=xefjDcV70VXG$Nv_QTh{iQ!d^rWEh%dC26oYuCQ~(o5g?*2?P2 z*B6&oHWwEcr;wuMR;xLK{F>}_yZ-#bygyf-Q!}$O1fU$MnzSLtKa@J{w)wFX8_>0C z)dY51M}tN;=ruY)H$cAJuhpt||N8g8{Q36#?^lSZpC(|uu_UqxnS*>9mn}#QVkYfF z_AoEvIYK~Wg2i65pjs7IR#wW0`SRM@+Wd1{TVGmV+t^sbP2^vQPnpO6dGzt4hY$a~ zv$wZb-`(9k+}YWw!}BKD!j$xfu3KpWp8R7+p2dQo)P$Z$pn2l6Z-#(X&@zW`*``Iv nf`9hy^nW!tC2&gMbKd?7ecwYeIQ*-#00000NkvXXu0mjf_F+u3 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/select_component.png b/trunk/gosa-plugins/systems/html/images/select_component.png new file mode 100644 index 0000000000000000000000000000000000000000..ef289f6fc339beb1b97936a0eaac2b22101ef55b GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx-l>?I(WJ`hE&{2`t$$4J+sw`HTQcpIan@B$4Xv2%D~jYn8ILmZpH1d^5O+NbN(jvS5kOentjH zmkSMf6SyS`PcyR!I5Kx>f7s2S(7+*e;NYo->kJJHN*N4_3<3@!(m=xE^1*Y(@|{LN z1ri%oQ?Z@lW($d(})Lbfx3JVQON=ps*)c&6K@b2z%9{c)#DH?iuY?3T#hk1T}e=pDM v!0?buT3KNq?~(NlKTM~rZSz%hXkcUz`!Pw8U6oS@814+7u6{1-oD!Mg`JI!TT@Mjg8>Qr2O9R{*FT28e;63<-ha%%!_CQc_rdf1PoBLDWoKtU zfUFiEfS4Gt07gbe2B1X@j7(4QS&JhMzxwF|e_+0u5kcU}k29 zs|5%ktOoo6hSKLRzZm}f`NQzsaqb4&@Vqye)gAr;w!UX^Ugfkrw3jhL$31-6oe~?TBavhjLO0NH5Y4<-Q zijlnl5I`(2IUa6SL~aCPaG3oEg$*!G02TfD`GHhu{cUWMP-z>&em3^x@O$>{U>05Y#js^-w&G-iPHD$Pak`^swSa? z6zuGR>jD-6A4*FV&vmsnDy1iWoSl0W5q=K>T~-#o*3eMZTU#5KN(o#ac0CZq4z5@1 zXCV?5bi9yqq&hM-H#OgDjJd9>tK&U&bqQJ20H7pzfae1Ov;?al^g$?SKi3p1i#;^D zxR~)}{{ALEd$*yWMasf427~~uL1}3IPLi6E#EwE^Ep)$hQYobxWGDsi{P`}KyVt=7 ztw0w2*WQrSk4d!LfAty%l3B^A@e-`XkojaO^X08u_VVnIUC$f4zG>`^Ypfl>TI*Ol z%|2VFz|-upxNu=Ova$Zh$Ng`ef3xC|DBFL-kqE?NaQrg~>DPfX!0DogJHQeQW|956 zMm0BghI8|i6P{Nd7!!G>@_1bQwG9vcf#rukpz8A;2qxjgd7u<#UV)oGA^MPDwlsj& zirw9vk0x$>v%Z;6U1@A?j9B2Qse=wS3IPy{}wSqVNOv)5))HuHAp& zkG>skDkts0OcoZikah~f!5lmZq#Z0dduSJw(g-2G9{Xab`|4U-*Dw6=9)RdWSaNoc r2e2&W5Pb;opVxU%6ohFj4yOMF7(FZx`)`9&00000NkvXXu0mjf`d(&z literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/select_newsystem.png b/trunk/gosa-plugins/systems/html/images/select_newsystem.png new file mode 100644 index 0000000000000000000000000000000000000000..43b0c6cfd947d1bef4130efaa98d44e74fead1a2 GIT binary patch literal 642 zcmV-|0)737P)+DMzATof&8(b`4fx*()Q|3FB! zYSAvDO+g@pSrAB#2_+cfBB2(d4x=^C_v7AsTD%!iG_5au`Cbm^d(OSz>kK?tY%@{V zrGo$+YIGRasfoh~9U4r%7T4=0(3oIt#eNxCcMoBa z_`eeku^7i9u0`VM1)${Svn|E0_6&XsYAI-Pzyll$)_{&7Z~+GlU{gQ}9KQDo>Ln9hA1+`ak32@lv2#ie8QW(N^5Hq3zc*-;Al4BU$DBm#O_DAgL1k``>6@mbxXjyeHMSXI!`ujI>kz;AlxSiWl^Fm^K$bU;+qpEh{Mi*N z+swx7OuXgWHPVCq*xD2-69QGv4_A0qJzR3GKb)6S-5xs9=vbp8gN`(Dq%o1kTP}0| z${i+No<{YxF*sCZbmTa9FTPGf1afumi@AH+qMIqyl|#sB~S literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/select_phone.png b/trunk/gosa-plugins/systems/html/images/select_phone.png new file mode 100644 index 0000000000000000000000000000000000000000..b9bc82e02e62f28bd9dab66d89c1dbbbd482596e GIT binary patch literal 784 zcmV+r1MmEaP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;hDk(0RCwBA{Qv(y10y3N10j$y_pd;t4O2f0BSXUL zZww6gUo$W~ddH9m5I`&pL;@X=_xsNsy=rj$@ID5I-~xsxANU!*eg88bAb^N6AZ`AC zhm}jZ4Rp0N7``xwGhDs(oZ;i&Zw$YFerEs(AfgQT_W3;nBZnBn-RHj<9^Spfz%FLM z@R#u$!~eg382|!^i5LSuy?(+VB%{Od>(4(1X$?mPF|J<>pI<*?U;u_6KmZYCfRL!9 z1JnPX4BtL|WMKdMmVuLti{b6Fy9~^1>)rv00BhM1)Qu5^S^)pDe&j_4+dtYe+&;EzhroF=Q@L+q~eB+jaml) z0tl}Gg$qB=XZZKa;rqAm4FCT8Wcbg(%y44g4hAtrtq<(ne2E}600G2;BiaN+x&QS4 z{QfoJpT7+Ic{msx zX7=|o{Nh$*xPAWx!*2#Qh7YeEGo0J8kU>~h^@FOpyCJ$}5C8}uunTfmGTi_Bhe6@b zZw7|1AKx&%eSDkY+3gDqJOZM?0Mp(8jIzX)WilVIg%>~ofx|%g$DIQwpK&Cx@bEDF z{{EGLgGbAS$o11(2eEy-75&+QG*9Rd4JkP`I?Ccxcwo9D=+C@Mt%QAeAcP>1 zNTj;zZxKK#75-V_`#yZ%2j?7~=YbF+yX&>Cv!Il!&dzZPArOY4_@{zgF89E7UDjwc z&}=s0`#ypo0OuU8>mr>_XKdSM0D>5k=pX_~XOwe|k$>Z*pxiOH8c z-*>$I`o8*~SYKZ+1Gqy_ZrVnM|TkC_JG(wCCfqLhM^5=toq zK>)@WbY1VK)oS&pX`1(sj*j3s4qVs$>k~9hgRbkyX0ym-GH@KHMGp=RJ{Jmwk+roo z?C$QOSS*4u)|M=#Y(v)z#H^j4?fy91l_yMUYa05JD=I$~V__zs8+^1D)P^%%^KXhX4Qo M07*qoM6N<$g5Z`rpa1{> literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/select_server.png b/trunk/gosa-plugins/systems/html/images/select_server.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c34a1a764d3f131a5e95731aa125bca4ec313b GIT binary patch literal 879 zcmV-#1CacQP){j9{ToF8XZZ8y55upYzZw7hW$+Rb5pI0_`t75K_wOY# zFtC06`STychYxQV{{3TTICpLl13&<=pqdBL{1;@HlZdEbt&*CogQ%1M!?R~Ujeq_6 zC-V5gqi6;O#>dDy00M}Ki3!5^^XDHB|F;qn;n{9uuery?Q^!G3Re*t+nSnuAl%2uO z-PTr0USa$1-@kQ17Qp~O0I>iy0iFKWNKlZwT0=|RUrs@gnURT+;oElxhMzydj$-)p zn}LCwo0-Ac+g6*InPtb>6Q`mW82=swx`qKDfLM5W*=K2L$|Wl+3otP=Gcx=HD*pZp zBn1IKe?jd75^U^@3=SSvQcTPoTTUH4ll<@Bzf}MM#3C;*5Ui#q$OKgb2FySnP#?oD zpkW}BSb+ThK(G7-@)?1&y{8cmFAv|c^XC`*1_&Ug*I(W+T>W(!tdS8MC=mSbACM2y z3=C#w7KkA%K+Qay3=G=J3=FFepd?1CcEqaIR%Az-~Tc&d;}Wu;R^$U0MM3q zAA$b<12K#h=yW!q0oSg4XIQmj*ON7?r_Oo(`rKN80Al&|>)WqOR}bf}U8D2L&`hUU zLr;P6&3guh&tD;d$jbu?eFla{4}LLh-mv$@%H@;hJ$SHx5m5FP$QJ+s!~*dvGsE}q z-&%KU+Wq{^YpdznrrKs z6bjMS))u8w31iF&fumYPXfzr`QH1Atl*{Gwtyb$-mCNPq+S(e6i;D~m4bjg9fa5r9 zZ*NnrR+*ffG>+qB0hG1Y=JRgrK*xlV_e0-crrE)x@T-ODlUa!+^Hp%DnD5Ve)0JPREiaVaGthzLq4eBUPs0)ikwDTOhH`>AH^pvUvwebyC}1_me;i=ve3 z9to&Ysl?RO6k!-1I>=;Du8X!7yYnBHZZGrX>u0(9%zHFnI>*f$-}YXam^lB~>C;ch z%F4>EYPDK9vYVzUagw0Z6eEKD^cqoPiF*@c)Xuy~@XP1)YK^3L>9W55&DTH4;NalJ z>FMcrL?keW;qCHEL*O^5iledjoIr-SzM9&dkldCjB1f z4S4qe!e#jQkMc-;cj6Vt&3fwvvrELN_*RK9E_2p_=^%GDa&%xu%;Kp$r^H&YB z!(co{M*qZ*PVw(R>1-a(IQ;~EfTfbJUbu29{G!&qPvW`I+lTEG|7M%|XFnf&@YU)k z`>@$J!UKdkcshaJ#rz|a7oLh{fyuD!ed|4t00hQ!Hd{3XvP`6Unh?iIKZwe*?6m2Y+rRsR(~KxVwhoOPt~oD={ULo4FI{Hm{&4 zDw?9BEBfM4dStQ&u;0GSIPYKddEciAM|~QkWZTkMEQw6Pi#=S}(eQ;zi(!&7QtyCT z03mJ#&voXiUq7LS0w{VFD-vSC*yGFIG#~P?TY>Az0R~SE)W4wZZ{h`YN?rZ9ai}^4 z@-c;Fy~36a6$g9)C-fAVXm>sE+!|oZcKIm=i6gn1-oi4!;WSKPm%>zBK{66$^&meP zRQ2&X;MtE>N}j^{L4c;PipnZo@d88fI88epxV}TWv7MOSxY&PoXtoA;^17TIe^t(` zY)G_b4Zj@1c6Vuu=DC#KA-fmBcOhYP5Y|p}pEtEH2tn>*t2(?^^a<*cNI)Uoyv#{+ z7SsHU8BxFnPh=4U>vv%73lgT}T92R_EVHrg(AK;}i%|qy!oGw9aE&u~T4y~VBx7oT zry*UEOvw1{ejfLxs__N^*cy~o@J%##dCb*rOdj^?rVKDYw;2US6UNkNi1~~rR#1G; zHr!tms&pol-ud6h0*5KCTRB-S^vTLPiuAUDd&%=Rt>ZfXoIgEf-`)w}VNU=6002ov JPDHLkV1h&NDdPYD literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/select_workstation.png b/trunk/gosa-plugins/systems/html/images/select_workstation.png new file mode 100644 index 0000000000000000000000000000000000000000..33df4ef938ac9c6f4fe7cc0c29dfe43ae3877495 GIT binary patch literal 817 zcmV-11J3-3P)r0x_7B6f(|?yng-0r)z6#-#7rv@4oY1H!1nw z{VWEHRM;FXFLiVoHoq9`K@Q~LdclWw2SuD;5`n{Qki09;pz!%obd-(#LXj2V5- zW2BN(C`ybmL}AYHla%&RNZ5<{`0#{0PbGi@pp-%?N!pLlaZIc%=oH6Q7-Pv&O&Vs{ zG($%TVZTqNa|QsZ6jDh3dekAy1=Z>ZrIL$M60l^MAq*3m%^vY_gfTht^i5AM5CX?_ zD0&5wSaaNq$Wo0|5^Et%GQuz=4pXEORSpGLFvJN4O(k-rpWUmh!R3bDxT%2dmNv31Q;J5f4N?--%v`Z=@+NY zE?-{0I59C%NRkAT8?3eL?mY|}ji1*aKW_c0b?!78jqiHB-meU6X=&-By}i9BoleK@ z@9*1It7V(brrq4!v9rAFVak8pg)P2!a6L z_p83|zcQQ={8zG8tG&OtxcI^B>`QYOE?j!6+wCUz?{ECJySw{vef{3|tybp;AmM)` z&!4ZCPwj+%?%Zo1-o1OTb@S$z+mn+smw_U{%*@5o@Zy2-ylQQAb@i7sXQqR8yKP5D z{mRtT3&L8<#>O8eNpx?1eqL>FKRCH|ZRKr9cAgaph@y6Q`}Ws&N~J;|gzL=B&7O5# vM=2#mtJO(&cD6Rl<&nJK@28Mt|K|PyJSAkZgeEE<00000NkvXXu0mjfa~Om1 literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/server.png b/trunk/gosa-plugins/systems/html/images/server.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c34a1a764d3f131a5e95731aa125bca4ec313b GIT binary patch literal 879 zcmV-#1CacQP){j9{ToF8XZZ8y55upYzZw7hW$+Rb5pI0_`t75K_wOY# zFtC06`STychYxQV{{3TTICpLl13&<=pqdBL{1;@HlZdEbt&*CogQ%1M!?R~Ujeq_6 zC-V5gqi6;O#>dDy00M}Ki3!5^^XDHB|F;qn;n{9uuery?Q^!G3Re*t+nSnuAl%2uO z-PTr0USa$1-@kQ17Qp~O0I>iy0iFKWNKlZwT0=|RUrs@gnURT+;oElxhMzydj$-)p zn}LCwo0-Ac+g6*InPtb>6Q`mW82=swx`qKDfLM5W*=K2L$|Wl+3otP=Gcx=HD*pZp zBn1IKe?jd75^U^@3=SSvQcTPoTTUH4ll<@Bzf}MM#3C;*5Ui#q$OKgb2FySnP#?oD zpkW}BSb+ThK(G7-@)?1&y{8cmFAv|c^XC`*1_&Ug*I(W+T>W(!tdS8MC=mSbACM2y z3=C#w7KkA%K+Qay3=G=J3=FFepd?1CcEqaIR%Az-~Tc&d;}Wu;R^$U0MM3q zAA$b<12K#h=yW!q0oSg4XIQmj*ON7?r_Oo(`rKN80Al&|>)WqOR}bf}U8D2L&`hUU zLr;P6&3guh&tD;d$jbu?eFla{4}LLh-mv$@%H@;hJ$SHx5m5FP$QJ+s!~*dvGsE}q z-&%KU+Wq{^YpdznrrKPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG- z1_LjQLUCsR00R_BL_t(I%cYY`XdPt~$A8~9GdE2#$$d0wNZRJnn8ce#5g$lnQ-ca^ zEY^jtbS1587u_i8q6;AlK@c~(kSes05>cAcR@;c;gLqAwm>R4odefvyym{SR?#$eo z`Q{rJNzv{E4;(mf9=~(o{6!qc{2w#VocW0;(nOIa3^h>{qm&}>L!ly`&NS>iwX(8y zYwpiKUV_A??`w+1HMFkc`t^@7@17T{fJJ{HgVsX)bCFj96^Bg?ap{HvP zeZ4)buPzeDXj!O) z%OG%rnb~h%`DFCU8$W)ZkEMjw4JdmirD7Q&1h!pG#Zlato^uQtE5~tI-`H@Z5Wh`Gq3Q&CMtk(9&$i2M%;p`@U}`Qz^b2A3vMR<=&Nd zKFYETLgjz>#l^8>KYTU4?t3;%^M$~+Ye^=PBoYZ>S(dD?Pf}A;6I+&LkB*M6-K7P? zFcCt0e&N%Po_YVhsiVo1KeI4D+1lRGkvTFnbTU#(jg6gudoG_Zm&@hP0K|Wh^YHL+ qQ#ze~$8}vbF)?v+WMpLJPVR4QVr<&0M3;>K0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG- z1_TUYWR}tZ00Ra|L_t(I%cYZFXj^q0#Xt9VvouXxlbf_n7MFHan*IrEp@R)FCT=L= z1oto*xQC&lJ_&*kGAAPQ)xmI5gfhejt@zY|9d^d)v~v#Il6JH0x@OIyZJISEUDG5t z_ukxleJBc(4Ilizd>_8&d^sG>f&V$u!w#oEye!pB4*8n>r*gUc@9EUi%R@u2Z2TK1 zKZtzh%=kgS-}`CbK;&dke_P1o5B3ytrG1Zg9QZCVeZKfm1%rdvVjji)URQVMneC4% zk}V|EDpabF&zt-(_Veu0t>lZt!>``B@4>lq69XQP``zx|z~Q!?iYy6jq8xmll3s`ER&cdAklVs!605i*oq*rOdB+(L zYd5X0U(21MxS?^k2x|q9B(Nk0!uJTKN8!f2Ae|P>E;zV2<3??bfj3I2R#y?T3p1~e zd=x*s&v6vhglqxQt6(WT=*ua*UX}KCi^)lic>EsGXeZ(DF7%X2xol3#SFetkGuJPT z`F(q9mgPLq67)*z8(`IJoas?qoeIg6i{)jT`S~Qath(r84a`s@<{eAR+BUMSHCqydhUW=(FgB~^7Qm*Vw)VE z5Hue0w(P7=Or%OpnRulml5=%M=80}!pe3K7_FHDoEb1Rv7IP0Q)BgQ$##UAm&$-Kq zOP?Rsy6S_jlm0$=hq1X%c8c580`Cin^LxLbEd5tqr;gKLnBr;M$!Wv1OiSerAsBz+ cE2;p00RRe4!BHnYoB#j-07*qoM6N<$f@)i<%K!iX literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/server_locked.png b/trunk/gosa-plugins/systems/html/images/server_locked.png new file mode 100644 index 0000000000000000000000000000000000000000..94531144389a00d8bb4e92d39ae2a03cf7a70971 GIT binary patch literal 918 zcmV;H18Mw;P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG- z1_KVjD`7bR00S0DL_t(I%cYZFXj^p@$3ORXvu>$LlPq^@SDSWgZI{Mcw-iM>=WrnE zhKM+n`5-u)=u=@J_y-?`6NCywaj0cXEn2~sing$^O{cA_U9+T8vv#I!64R}JZj-iI zO>%SZ&Gn%;m~6gy;BX$!`5wOK@cqL74Czjd4>~VMhRME-iub6hrvFUFr(f#oI<)fd zIr(P+{ za<@maghajoxdNoqCO@72H9GyrW_rU({At=YF=S$s+))e;y;C2xtWpJr>129%B8LStN*v)%{SW81U$q$`JIsX-#ZX_w8VMqmPa!DG8yV<)bDcghy z2vbPBG5024T>Tbwu*o1K$W2aQ^>vd@CAeZbS!j8TY|VYlPfntxlF;AHc5_t`3lpUu z4y#AWu4v3>VIc#O1j|46k%(L-;|riX|0-4W^;CTSHOu3_6Dj1G3Jnu9m;54n^|x1g zKRo-W{zlHSW zEm9sG?Tf6FeIo+LKBckMUK~Da)T>D$SGY38lJW5#x6@JUu)p4@7oITPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG- z1_C1M=scSM00QhuL_t(I%YBkfXk29&g`fAk-@Uos`N2s^<_D)!6I!*zK%0_uHiKjl zNJKZH2okzcLU3s|F2s$|Wj9#}F1qjs+=z(8jVRKEu{OlUj@TwC@s8jS{(N`*(k_kC>JrdF#NzyRof1m@@G$!4<{ zV~z|Wa>PZ1t*tGJ#UlOv{YO9AvMc~rR#w>A*&!Z}qqRmv00@GBAP8u;+iY%b;`{!g zQR~AiB3PD%Qi>>w2!a5m6uDRk#t_*dgWdZ~UKHk*75hOI_Nu(lbI|qS8x*us3avHC zWRg@Wh39!Vj>F~RpE%hZo+G65ox}(FdGhu=_0=D+mhY<%UXHy>&9}9PAR=h3aU2KN zb#YynQ#p?lmtJA7)j{B;kS>irnP+d|FI;I!dSK*S`-?BpBBC>y45Oo?B$LU*1|1!= z!YioGB;mftuZxO;uc+5GKi=>d8My$7do;~AbzLr(@0UuY^x)tiK@bpzA%45f!6(;f z-K+3;Zx4mSV_d)9&ow=M%2l*vL|^TU09RcwWebGdXHMeP_xyZoVhS4d!{cl<;0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG- z1_A|6;)(D800QYrL_t(I%YBm1Yg|8H!q!zlgz03(N?kA7_rbmqz)3Q zGN}uff>;rR*p&+dB6J}_{)4RRwz!arH7*o_7HSYfq;bTWbP}51F_X!R$x9}4=Ux}l zfD(E(U(Vrs4rg&>czF2Zk&%%PJ z$z(FOu&_Wjo5foDpMZb4h_JP_MJ|^k9*@)8+k3uRtxoIK)>bz;Im!6=INjad9M=Ls zDaG2_8u@&l!NEbRlu7_-=bQ_IfZg3)=I7^m7@{a59*pB0{-bW?*1|zP`SrA03Ou04SA8R4NsMAV6!4hyY-W!5BlM(O`3PlPHP~janaG z5g`_fp_IZ}i!lbJ6iO+umL7rEPIc3p?Z8@#URh%Q-tXc$s{pi83avF^7?Mh*NF)+? zo<~fCbGFF`&-c>N*~x0OhjC4M!ZzyPPpJ3X!i&LX`HmJ5LM_JJZT$X_nimlP-9$_}FeH^N}tVi|hG(zN5dtA7c#7W|OGVVB*~?EN)lH zU%W)d6Q+J!r}D=vl^32wynVY+t7_ezeO0=;x?UU_8hTqqe0w-MbJn?MqlxdH*;rl< zU+(N_IJ=W*EUyy2eu3xSe2JNrEZ&M?X6QdCKef?;?9y{H4 zil;v<@XO9qOn-Kh#>5Y9rD3n>;{r6uPTee>2>rVq2lWd&okn|U7H`~V|IeQ|{o}9H z+f#C*v_7eh3%Cv6X0*yYu(5LWkwnzi;t{$giP9FSxeaXUg#D^^@cCWq?#M%?9|q8M zPO0=OC)rO48L)o?{9-hc-lX5c00000NkvXXu0mjfmH(es literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/workstation_busy.png b/trunk/gosa-plugins/systems/html/images/workstation_busy.png new file mode 100644 index 0000000000000000000000000000000000000000..0f6e897286f0a42dad962ab4935559ea92ff0e26 GIT binary patch literal 927 zcmV;Q17Q4#P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG- z1_2wNz~@i^00SRML_t(I%T3cuXk29!!14e6zWbiJchXEO(PS`SsEVj1g;uIA6bV=g zE?fq|m9}&xQa5fSE)=BQiRePyWKqbj>C{jyR-uxn389vT6dzD+tRZ)r%;Y}iKEBUI zOPaGfXK{XNQ&Us#pFQ)%8EI%$R!X4(KtD_jjNM8KLu7>#Cr+IFu-$HdZ30Zb z@%pi?zFYg|;-3r+H}QNE&vmdJ6Ri|!T976=aolHTE9T>O4s!IRBd_fOmL-jiPR87g zjK?-I1{xmqpu%ib9bjeeT`slJ!!Qst^y( z^l$>hz_d&p&!(T1^tvfUULvGGYsmWrNs^N#IYJs#l|t2IQ-lTxUS2{ z<9|>j|I!@VKe`M2{@0z(@waNse|nfK%gC~nvMO2q?KTHrd>#W$x7)=Onq#j%i{m&f zU%R>wKmsf+E!|pOU9EnYKfieU=8f+Dp+<|cFXMQJAP9*zBf8zLF3O^x=ea4R$=&t4 zH=jOm;AaVtBuTWgvNAt7*z`Y{o<21)+VXF$uJPp97+IR3l_p7J<9?@;S&oxeWo3_z zjkPwT$T!&&wOVb&^SsdaeH_=Jx81|_Tx#_iRaIbHR^7I&GLB;^RV7Ir|0nkXYinzZ zGcz+w%gf6<(dI@9#^}VvgwgADQ5tQU7G+t;fqjEqn49}<>H780#GZa}=+JR@eSQ7> zxpO~#&~9HjE2S*z^%{*v1KYL@+qR7`Y~cI8wk)eYJ3AZguHbpi;nSzzyVhz=hfx&i zfq`1!x~6fleSxj*Sik(rQA1TFmoH!0`St2AUrH&yeekJ|VqkLe&Cgxe4h_RH$H$*~ z#(VP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG- z1^_D81=cG700TcsL_t(I%T3WsXk29&#_|98zH?^g%w#5UCeurjX}|_AL^LsCL=mk> zAX4h0;3gDYh*r9kZgioi9~fmrD!%inzl=$(PDR}!3U=Xc>cNJV|##M zNUdCTxNyTETXyJZH)%@-M4|$v6iqvz{-29=*T$|nyjk8Q2wVZ614tO}k zL-1X6L!wlO=lZy|N9cO^%@%f}f#(P80YXZICfHc7;sqL+OdGM7fs_IW@jQiXx7gaM z;nbTb6(H`_bU%Tnp&L3;GeXPpsn?o#u8)v{Fa)>dVcRZ_?INT`5Gd4s03pzINh%d5 zk&2T{#^^T6NU4ERJQZAFtmixOJ4g89&PhaLi?phk?)&uKD^co13`tK{l4PolWGc#s z)>}lnx-f-HI<1iy7$LVZ#|!_QC%XPST?elZQhaeTOnv+;j^p4sP0VjC zGAB;5>qhb7520ms^dmX^bO~K^=^lC}>wUkGl>qsCez90A2ER`Icy0OSjoN|E_FVhz zA7t{_%h)o-LO}qMjm;Ln&G_^_`7|BvG2FSURS96*wlzOLKb1~r;vbEVpXu(&#l4lw zM6(8ot|Xu{GvhNix6R;SAN~CU_{9aB;?+MMd;@?)BGGM{W-1N7KhtxdMK zZR&NGwY5za7FO`9Thym7wHg)cYq=j-T3Wg`F)@*!ot@n+RjRGtu-xM-TPu4B4ji=5 z!evUU*U6MF2IBVOPp<8Lz8?@nL&syw%lSf~P`O;+tyf-rX>`eT#}DIQl$Uz z5?N~#|K{dmP;UZ(} z%?8Ew$~TW^xH3FJpzTZ0F)}jxNh}sgX_}$;^&Nf8FmxH!JQ=?;7ajEf?DQ4kFV@k& hFHRTE6f9N&{s#bEgjFeg(;ol;002ovPDHLkV1fvoy<7kQ literal 0 HcmV?d00001 diff --git a/trunk/gosa-plugins/systems/html/images/workstation_locked.png b/trunk/gosa-plugins/systems/html/images/workstation_locked.png new file mode 100644 index 0000000000000000000000000000000000000000..841880b997dcf54dcd45d506bd7933da9ab09836 GIT binary patch literal 965 zcmV;$13LVPP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOG- z1v>+)Lmwsp00TuyL_t(I%T$G`8rncbP$?Ci!}Q@bXY8e&^kDHf~-y3MjJX}UDKo6Y`nXLsh! zyqWhrSeE!b{l16qhwtx80AOZj=EJ#57cViQWEe>a1pt70d=QXhVEVOJ-|YBC;=7-=kbNox)6!rXam3;pl$7v10nZK4@B8R=`uOaV80)f!;;r9CwVT1vIG6qU09+g`V5kV$11jEq57zLmpgoNw* zsMWgQjt40t(Enz7+<*{hx`wzJgU>@aT@NA%K^cWoK;R3wZUF8Epo}1jB;)YIQP&k-i2Jg zf-nlPnK}$|BoDM2U@O1DRuacrt^8JY_$UK__4W0;o12@_FW0WDmj2%8j$~6~-p^NA z^~QAs`R9>6a|W%ws;6I`bNF6OU+woC`Dn+ILewb$G#ZW4;^N|k?d|f7*|TR)966eg z?G}qDx7s*x@)c-dgzS$$n7mSc;*WM~`S!+N=kM35UfXe=)38s8MB-`FG;PbW5Sk`- zM1Z}A+h~3>53;&~^y~-teWS3P>)qiykzm7N6cGGhG?&Z0H90wXI=@?)%G_BSr*=|h z+8yPjhqo`f{PP$5;QF&kYcADuPWL4~W&6X&kDoG1rS(Fg(D)S){gb(o*GDTmjHZS= zUC;k|$}s(jr1i;!;O|6Xw02KKUk)0WW+u0=uyAW^Y}9Txn<|yEl18&eI+y2>-K`=! zazHU%BlSv66|0roB`-L??FFm*Ur0|+zwwn}#B4%zZG8Nh!, 2004. +# Cajus Pollmeier , 2004, 2005, 2006, 2008. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2008-12-19 08:43+0100\n" +"Last-Translator: Cajus Pollmeier \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.11.4\n" + +#: admin/systems/remove.tpl:2 +msgid "Warning" +msgstr "Warnung" + +#: admin/systems/remove.tpl:6 +msgid "" +"This includes all system and setup informations. Please double check if your " +"really want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dies umfasst alle System- und Setup-Informationen Bitte prüfen Sie dies " +"genau, da es keine Möglichkeit für GOsa gibt, die Daten zu restaurieren. " + +#: admin/systems/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Eine Sicherung der LDAP-Datenbank bietet sich an. Wenn Sie dies erledigt " +"haben, drücken Sie 'Entfernen' um Fortzufahren oder 'Abbrechen', um den " +"Vorgang abzubrechen." + +#: admin/systems/class_systemManagement.inc:26 +#: admin/systems/class_divListSystem.inc:88 +msgid "Systems" +msgstr "Systeme" + +#: admin/systems/class_systemManagement.inc:27 +msgid "This does something" +msgstr "Dies tut etwas" + +#: admin/systems/class_systemManagement.inc:239 +msgid "Back" +msgstr "Zurück" + +#: admin/systems/class_systemManagement.inc:286 +msgid "Creating the image failed. Please see the report below." +msgstr "" +"Erstellen des Abbilds fehlgeschlagen. Bitte überprüfen Sie den Fehlerbericht " +"unterhalb." + +#: admin/systems/class_systemManagement.inc:295 +#, php-format +msgid "Command '%s', specified for ISO creation doesn't seem to exist." +msgstr "" +"Das Kommando '%s', angegeben für die ISO-Erstellung, scheint nicht zu " +"existieren." + +#: admin/systems/class_systemManagement.inc:344 +#: admin/systems/class_systemManagement.inc:459 +#: admin/systems/class_systemManagement.inc:496 +#: admin/systems/class_systemManagement.inc:504 +#: admin/systems/class_systemManagement.inc:554 +#: admin/systems/class_systemManagement.inc:561 +#: admin/systems/class_systemManagement.inc:576 +#: admin/systems/class_systemManagement.inc:584 +#: admin/systems/class_systemManagement.inc:623 +#: admin/systems/class_systemManagement.inc:717 +#: admin/systems/class_systemManagement.inc:1279 +#: admin/systems/class_serverService.inc:186 +#: admin/systems/class_serverService.inc:236 +#: admin/systems/class_serverService.inc:363 +#: admin/systems/class_termDNS.inc:338 +msgid "Error" +msgstr "Fehler" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Internal error" +msgstr "Interner Fehler" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Cannot set mode to 'active'!" +msgstr "Kann Modus nicht auf 'aktiv' setzen!" + +#: admin/systems/class_systemManagement.inc:584 +msgid "Editing this type of object is not supported yet!" +msgstr "Bearbeiten von Objekten dieses Typs wird momentan noch nicht unterstützt!" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#: admin/systems/class_systemManagement.inc:943 +msgid "Permission error" +msgstr "Berechtigungsfehler" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +msgid "You have no permission to change this password!" +msgstr "Sie haben keine Berechtigung, um das Passwort zu ändern!" + +#: admin/systems/class_systemManagement.inc:623 +msgid "" +"The passwords you've entered as 'New password' and 'Repeated password' do " +"not match!" +msgstr "" +"Die Passworte, die Sie als 'Neues Passwort' und 'Wiederholung des neuen " +"Passworts' eingegeben haben sind nicht identisch!" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method" +msgstr "Passwort-Methode" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method crypt is missing. Cannot set system password." +msgstr "Die Password-Methode CRYPT fehlt. Kann das System-Passwort nicht setzen." + +#: admin/systems/class_systemManagement.inc:704 +#: admin/systems/class_systemManagement.inc:1810 +#: admin/systems/services/class_goService.inc:122 +#: admin/systems/services/class_goService.inc:150 +#: admin/systems/services/class_goService.inc:183 +#: admin/systems/class_servGeneric.inc:281 +#: admin/systems/class_servGeneric.inc:433 admin/systems/class_termDNS.inc:483 +#: admin/systems/class_termDNS.inc:771 admin/systems/class_termDNS.inc:790 +#: admin/systems/class_termDNS.inc:811 admin/systems/class_termDNS.inc:816 +#: admin/systems/class_termDNS.inc:834 admin/systems/class_termDNS.inc:906 +#: admin/systems/class_componentGeneric.inc:160 +#: admin/systems/class_componentGeneric.inc:301 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: admin/systems/class_systemManagement.inc:717 +msgid "Cannot determine object to change password!" +msgstr "Kann Objekt nicht erkennen, um das Passwort zu ändern." + +#: admin/systems/class_systemManagement.inc:824 +#: admin/systems/class_servGeneric.inc:165 +#: admin/systems/class_servGeneric.inc:453 +msgid "Service infrastructure" +msgstr "Dienst-Infrastruktur" + +#: admin/systems/class_systemManagement.inc:869 +msgid "Permission" +msgstr "Berechtigung" + +#: admin/systems/class_systemManagement.inc:1308 +#: admin/systems/class_systemManagement.inc:1621 +msgid "New terminal" +msgstr "Neues Terminal" + +#: admin/systems/class_systemManagement.inc:1310 +#: admin/systems/class_systemManagement.inc:1622 +msgid "New workstation" +msgstr "Neue Arbeitsstation" + +#: admin/systems/class_systemManagement.inc:1312 +msgid "Unknown device" +msgstr "Unbekanntes Gerät" + +#: admin/systems/class_systemManagement.inc:1314 +msgid "New Device" +msgstr "Neues Gerät" + +#: admin/systems/class_systemManagement.inc:1339 +msgid "Terminal template for" +msgstr "Terminal-Vorlage für" + +#: admin/systems/class_systemManagement.inc:1355 +msgid "Workstation template for" +msgstr "Arbeitsstations-Vorlage für" + +#: admin/systems/class_systemManagement.inc:1598 +msgid "Template" +msgstr "Vorlage" + +#: admin/systems/class_systemManagement.inc:1599 +#: admin/systems/class_divListSystem.inc:199 +msgid "Phone" +msgstr "Telefon" + +#: admin/systems/class_systemManagement.inc:1600 +#: admin/systems/class_componentGeneric.inc:315 +msgid "Network device" +msgstr "Netzwerk-Gerät" + +#: admin/systems/class_systemManagement.inc:1601 +#: admin/systems/class_divListSystem.inc:203 +msgid "Printer" +msgstr "Drucker" + +#: admin/systems/class_systemManagement.inc:1603 +msgid "Windows workstation" +msgstr "Windows-Arbeitsstation" + +#: admin/systems/class_systemManagement.inc:1605 +#: admin/systems/class_divListSystem.inc:191 +msgid "Workstation" +msgstr "Arbeitsstation" + +#: admin/systems/class_systemManagement.inc:1606 +#: admin/systems/class_divListSystem.inc:195 +#: admin/systems/class_servGeneric.inc:509 +msgid "Server" +msgstr "Server" + +#: admin/systems/class_systemManagement.inc:1607 +#: admin/systems/class_divListSystem.inc:187 +msgid "Terminal" +msgstr "Terminal" + +#: admin/systems/class_systemManagement.inc:1609 +msgid "Locked workstation" +msgstr "Gesperrte Arbeitsstation" + +#: admin/systems/class_systemManagement.inc:1610 +msgid "Locked server" +msgstr "Gesperrter Server" + +#: admin/systems/class_systemManagement.inc:1611 +msgid "Locked terminal" +msgstr "Gesperrtes Terminal" + +#: admin/systems/class_systemManagement.inc:1613 +msgid "Workstation error" +msgstr "Arbeitsstationsfehler" + +#: admin/systems/class_systemManagement.inc:1614 +msgid "Server error" +msgstr "Serverfehler" + +#: admin/systems/class_systemManagement.inc:1615 +msgid "Terminal error" +msgstr "Terminalfehler" + +#: admin/systems/class_systemManagement.inc:1617 +msgid "Workstation busy" +msgstr "Arbeitsstation beschäftigt" + +#: admin/systems/class_systemManagement.inc:1618 +msgid "Server busy" +msgstr "Server ist ausgelastet" + +#: admin/systems/class_systemManagement.inc:1620 +msgid "New system from incoming" +msgstr "Neues Gerät aus 'incoming'" + +#: admin/systems/class_systemManagement.inc:1626 +#: admin/systems/class_divListSystem.inc:214 +msgid "Opsi client" +msgstr "OPSI Client" + +#: admin/systems/class_systemManagement.inc:1826 +#: admin/systems/class_systemManagement.inc:1827 +msgid "Incoming objects" +msgstr "Eingehende Objekte" + +#: admin/systems/class_systemManagement.inc:1832 +msgid "Incoming" +msgstr "Eingehend" + +#: admin/systems/services/class_goService.inc:44 +#: admin/systems/services/class_goService.inc:79 +msgid "Empty service" +msgstr "Leerer Dienst" + +#: admin/systems/services/class_goService.inc:237 +msgid "Configuration error" +msgstr "Konfigurationsfehler" + +#: admin/systems/services/ServiceAddDialog.tpl:3 +msgid "Adding a new service to the current server" +msgstr "Hinzufügen eines neues Dienstes zum gewählten Server" + +#: admin/systems/services/ServiceAddDialog.tpl:7 +msgid "" +"This dialog allows you to add new services to the currenty edited server " +"object. The box below shows all available but not already used services." +msgstr "" +"Dieser Dialog ermöglicht Ihnen das Hinzufügen neuer Dienste zum momentan " +"gewählten Server. Die Box unterhalb zeigt alle verfügbaren aber momentan " +"nicht verwendeten Dienste." + +#: admin/systems/services/ServiceAddDialog.tpl:13 +msgid "Service to add" +msgstr "Dienst, der hinzugefügt wird" + +#: admin/systems/services/ServiceAddDialog.tpl:20 +msgid "All available services are already in use." +msgstr "Alle verfügbaren Dienste werden bereits verwendet." + +#: admin/systems/services/ServiceAddDialog.tpl:28 +msgid "Continue" +msgstr "Fortsetzen" + +#: admin/systems/class_divListSystem.inc:63 +#: admin/systems/class_divListSystem.inc:64 +msgid "List of systems" +msgstr "Liste der Systeme" + +#: admin/systems/class_divListSystem.inc:82 +msgid "Select all" +msgstr "Alle auswählen" + +#: admin/systems/class_divListSystem.inc:88 +msgid "Department" +msgstr "Abteilung" + +#: admin/systems/class_divListSystem.inc:92 +msgid "Release" +msgstr "Freigeben" + +#: admin/systems/class_divListSystem.inc:95 +#: admin/systems/class_divListSystem.inc:181 +#: admin/systems/class_divListSystemService.inc:51 +msgid "Actions" +msgstr "Aktionen" + +#: admin/systems/class_divListSystem.inc:101 +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:423 +msgid "servers" +msgstr "Server" + +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:117 +#: admin/systems/class_divListSystem.inc:128 +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:138 +#, php-format +msgid "Show %s" +msgstr "Zeige %s" + +#: admin/systems/class_divListSystem.inc:106 +msgid "Linux terminals" +msgstr "Linux Terminals" + +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:425 +msgid "terminals" +msgstr "Terminals" + +#: admin/systems/class_divListSystem.inc:111 +msgid "Linux workstations" +msgstr "Linux Arbeitsstationen" + +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:424 +msgid "workstations" +msgstr "Arbeitsstationen" + +#: admin/systems/class_divListSystem.inc:116 +msgid "MicroSoft Windows based workstations" +msgstr "Microsoft Windows Arbeitsstationen" + +#: admin/systems/class_divListSystem.inc:117 +msgid "windows based workstations" +msgstr "Windows basierte Arbeitsstationen" + +#: admin/systems/class_divListSystem.inc:121 +#, php-format +msgid "Display objects of type '%s'." +msgstr "Auswählen um Objekte des Typs '%s' aufzulisten." + +#: admin/systems/class_divListSystem.inc:122 +msgid "OPSI installed client" +msgstr "mit OPSI installierte Clients" + +#: admin/systems/class_divListSystem.inc:122 +msgid "Show OPSI based clients" +msgstr "Zeige auf OPSI basierende Clients" + +#: admin/systems/class_divListSystem.inc:127 +#: admin/systems/class_divListSystem.inc:128 +msgid "network printers" +msgstr "Netzwerk-Drucker" + +#: admin/systems/class_divListSystem.inc:132 +msgid "VoIP phones" +msgstr "VoIP-Telefone" + +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:426 +msgid "phones" +msgstr "Telefone" + +#: admin/systems/class_divListSystem.inc:137 +#: admin/systems/class_divListSystem.inc:138 +msgid "network devices" +msgstr "Netzwerk-Geräte" + +#: admin/systems/class_divListSystem.inc:146 +msgid "Display systems matching" +msgstr "Zeige die Systeme, auf die das Folgende passt" + +#: admin/systems/class_divListSystem.inc:147 +msgid "Display systems of user" +msgstr "Zeige Systeme des Benutzers" + +#: admin/systems/class_divListSystem.inc:176 +#: admin/systems/class_servGeneric.inc:514 admin/systems/server.tpl:22 +#: admin/systems/class_componentGeneric.inc:319 admin/systems/component.tpl:17 +msgid "Base" +msgstr "Basis" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit department" +msgstr "Aktualisieren" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit" +msgstr "Übertragen" + +#: admin/systems/class_divListSystem.inc:183 +msgid "Create" +msgstr "Anlegen" + +#: admin/systems/class_divListSystem.inc:207 +msgid "Component" +msgstr "Komponente" + +#: admin/systems/class_divListSystem.inc:221 +msgid "Trigger action" +msgstr "Aktion auslösen" + +#: admin/systems/class_divListSystem.inc:227 +msgid "Schedule action" +msgstr "Aktion planen" + +#: admin/systems/class_divListSystem.inc:234 +msgid "Remove" +msgstr "Entfernen" + +#: admin/systems/class_divListSystem.inc:237 +msgid "Activate systems" +msgstr "Aktiviere Systeme" + +#: admin/systems/class_divListSystem.inc:322 +msgid "edit" +msgstr "Bearbeiten" + +#: admin/systems/class_divListSystem.inc:322 +msgid "Edit system" +msgstr "System bearbeiten" + +#: admin/systems/class_divListSystem.inc:328 +msgid "delete" +msgstr "Entfernen" + +#: admin/systems/class_divListSystem.inc:328 +msgid "Delete system" +msgstr "Entferne System" + +#: admin/systems/class_divListSystem.inc:350 +msgid "Password" +msgstr "Passwort" + +#: admin/systems/class_divListSystem.inc:350 admin/systems/password.tpl:38 +msgid "Set password" +msgstr "Passwort setzen" + +#: admin/systems/class_divListSystem.inc:359 +msgid "Create CD" +msgstr "Erstelle CD" + +#: admin/systems/class_divListSystem.inc:360 +msgid "Create FAI CD" +msgstr "Erstelle FAI-CD" + +#: admin/systems/class_divListSystem.inc:407 +#: admin/systems/class_divListSystem.inc:408 +#, php-format +msgid "Inherited from %s" +msgstr "Von %s geerbt" + +#: admin/systems/class_divListSystem.inc:423 +#: admin/systems/class_divListSystem.inc:424 +#: admin/systems/class_divListSystem.inc:425 +#: admin/systems/class_divListSystem.inc:426 +#: admin/systems/class_divListSystem.inc:427 +#: admin/systems/class_divListSystem.inc:428 +#: admin/systems/class_divListSystem.inc:429 +#: admin/systems/class_divListSystem.inc:430 +#: admin/systems/class_divListSystem.inc:431 +#, php-format +msgid "Number of listed '%s'" +msgstr "Anzahl der angezeigten '%s'" + +#: admin/systems/class_divListSystem.inc:427 +msgid "printers" +msgstr "Drucker" + +#: admin/systems/class_divListSystem.inc:428 +msgid "network components" +msgstr "Netzwerk-Komponenten" + +#: admin/systems/class_divListSystem.inc:429 +msgid "new devices" +msgstr "Neue Geräte" + +#: admin/systems/class_divListSystem.inc:430 +msgid "windows workstations" +msgstr "Windows-Arbeitsstationen" + +#: admin/systems/class_divListSystem.inc:431 +msgid "departments" +msgstr "Abteilungen" + +#: admin/systems/class_serverService.inc:27 +msgid "Stop" +msgstr "Beenden" + +#: admin/systems/class_serverService.inc:28 +msgid "Start" +msgstr "Start" + +#: admin/systems/class_serverService.inc:29 +msgid "Restart" +msgstr "Neustart" + +#: admin/systems/class_serverService.inc:351 +msgid "Information" +msgstr "Information" + +#: admin/systems/class_serverService.inc:351 +msgid "Cannot update service status until it has been saved!" +msgstr "Kann den Dienst-Status nicht setzen bis der Server gespeichert wurde." + +#: admin/systems/class_serverService.inc:363 +msgid "Cannot update service status!" +msgstr "Kann Dienst-Status nicht aktualisieren!" + +#: admin/systems/paste_generic.tpl:4 admin/systems/class_servGeneric.inc:339 +#: admin/systems/class_servGeneric.inc:344 +#: admin/systems/class_servGeneric.inc:355 admin/systems/server.tpl:6 +msgid "Server name" +msgstr "Server-Name" + +#: admin/systems/paste_generic.tpl:14 +msgid "workstation name" +msgstr "Name der Arbeitsstation" + +#: admin/systems/paste_generic.tpl:24 +msgid "Terminal name" +msgstr "Terminal-Name" + +#: admin/systems/paste_generic.tpl:34 +msgid "Printer name" +msgstr "Druckername" + +#: admin/systems/paste_generic.tpl:44 +#: admin/systems/class_componentGeneric.inc:209 +#: admin/systems/class_componentGeneric.inc:214 +#: admin/systems/class_componentGeneric.inc:236 +msgid "Component name" +msgstr "Komponenten-Name" + +#: admin/systems/class_divListSystemService.inc:38 +#: admin/systems/class_divListSystemService.inc:39 +msgid "Installed services" +msgstr "Installierte Dienste" + +#: admin/systems/class_divListSystemService.inc:42 +msgid "Add, remove and configure the properties of system services here." +msgstr "" +"Mit diesem Menü können Sie die Eigenschaften von System-Diensten hinzufügen, " +"diese löschen oder verändern." + +#: admin/systems/class_divListSystemService.inc:50 +#: admin/systems/class_servGeneric.inc:512 +#: admin/systems/class_componentGeneric.inc:318 +msgid "Name" +msgstr "Name" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add service" +msgstr "Dienst hinzufügen" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add new service" +msgstr "Neuen Dienst hinzufügen" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all" +msgstr "Alle starten" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all services" +msgstr "Alle Dienste starten" + +#: admin/systems/class_divListSystemService.inc:67 +#: admin/systems/class_divListSystemService.inc:127 +msgid "Stop service" +msgstr "Dienst beenden" + +#: admin/systems/class_divListSystemService.inc:67 +msgid "Stop all services" +msgstr "Alle Dienste beenden" + +#: admin/systems/class_divListSystemService.inc:69 +#: admin/systems/class_divListSystemService.inc:133 +msgid "Restart service" +msgstr "Dienst neustarten" + +#: admin/systems/class_divListSystemService.inc:69 +msgid "Restart all services" +msgstr "Alle Dienste neustarten" + +#: admin/systems/class_divListSystemService.inc:99 +msgid "Stopped" +msgstr "Beendet" + +#: admin/systems/class_divListSystemService.inc:100 +msgid "Started" +msgstr "Gestartet" + +#: admin/systems/class_divListSystemService.inc:101 +msgid "Restarting" +msgstr "Starte neu" + +#: admin/systems/class_divListSystemService.inc:102 +msgid "User status" +msgstr "Benutzer-Status" + +#: admin/systems/class_divListSystemService.inc:121 +msgid "Start service" +msgstr "Dienst starten" + +#: admin/systems/class_divListSystemService.inc:141 +msgid "Edit service" +msgstr "Dienst bearbeiten" + +#: admin/systems/class_divListSystemService.inc:149 +msgid "Remove service" +msgstr "Dienst entfernen" + +#: admin/systems/network.tpl:1 +msgid "Network\tsettings" +msgstr "Netzwerk-Einstellungen" + +#: admin/systems/network.tpl:9 +msgid "IP-address" +msgstr "IP-Adresse" + +#: admin/systems/network.tpl:30 admin/systems/network.tpl:32 +msgid "Propose ip" +msgstr "Schlage IP vor" + +#: admin/systems/network.tpl:38 +msgid "MAC-address" +msgstr "MAC-Adresse" + +#: admin/systems/network.tpl:45 +msgid "Autodetect" +msgstr "Automatisch feststellen" + +#: admin/systems/network.tpl:62 admin/systems/network.tpl:72 +msgid "Enable DHCP for this device" +msgstr "DHCP für dieses Gerät aktivieren" + +#: admin/systems/network.tpl:72 admin/systems/network.tpl:167 +msgid "not configured" +msgstr "unkonfiguriert" + +#: admin/systems/network.tpl:80 +msgid "Parent node" +msgstr "Parent-Node" + +#: admin/systems/network.tpl:93 +msgid "Edit settings" +msgstr "Einstellungen bearbeiten" + +#: admin/systems/network.tpl:127 admin/systems/network.tpl:167 +msgid "Enable DNS for this device" +msgstr "DNS für dieses Gerät aktivieren" + +#: admin/systems/network.tpl:136 +msgid "Zone" +msgstr "Zone" + +#: admin/systems/network.tpl:146 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/network.tpl:154 +msgid "Dns records" +msgstr "DNS-Einträge" + +#: admin/systems/main.inc:54 admin/systems/main.inc:56 +msgid "System management" +msgstr "Systemverwaltung" + +#: admin/systems/password.tpl:3 +msgid "" +"To change the terminal root password use the fields below. The changes take " +"effect during the next reboot. Please memorize the new password, because you " +"wouldn't be able to log in." +msgstr "" +"Um das root-Passwort des Terminals zu ändern, nutzen Sie die Felder unten. " +"Die Änderungen werden beim nächsten Neustart wirksam. Merken Sie sich das " +"Passwort, da eine Anmeldung ohne dieses Passwort nicht möglich ist." + +#: admin/systems/password.tpl:6 +msgid "Leave fields blank for password inheritance from default entries." +msgstr "" +"Lassen Sie die Felder leer, um das Passwort aus den Standard-Einträgen zu " +"übernehmen." + +#: admin/systems/password.tpl:10 +msgid "Changing the password impinges on authentification only." +msgstr "Das Ändern des Passwortes wirkt sich nur auf die Authentifizierung aus." + +#: admin/systems/password.tpl:15 +msgid "New password" +msgstr "Neues Passwort" + +#: admin/systems/password.tpl:21 +msgid "Repeat new password" +msgstr "Neues Passwort (Wiederholung)" + +#: admin/systems/password.tpl:26 +msgid "Password strength" +msgstr "Passwort-Stärke" + +#: admin/systems/class_servGeneric.inc:86 +msgid "Activated" +msgstr "Aktiv" + +#: admin/systems/class_servGeneric.inc:87 +msgid "Locked" +msgstr "Gesperrt" + +#: admin/systems/class_servGeneric.inc:148 +msgid "server" +msgstr "Server" + +#: admin/systems/class_servGeneric.inc:169 +msgid "Event error" +msgstr "Ereignisfehler" + +#: admin/systems/class_servGeneric.inc:170 +#, php-format +msgid "Event '%s' is not available!" +msgstr "Das Ereignis '%s' ist nicht verfügbar!" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Switch off" +msgstr "Ausschalten" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Reboot" +msgstr "Neustarten" + +#: admin/systems/class_servGeneric.inc:226 +#: admin/systems/class_servGeneric.inc:235 +msgid "System update" +msgstr "Systemaktualisierung" + +#: admin/systems/class_servGeneric.inc:227 +#: admin/systems/class_servGeneric.inc:234 +msgid "Reinstall" +msgstr "Neu-Installation" + +#: admin/systems/class_servGeneric.inc:228 +msgid "Rescan hardware" +msgstr "Hardware neu erkennen" + +#: admin/systems/class_servGeneric.inc:229 +#: admin/systems/class_servGeneric.inc:236 +msgid "Memory test" +msgstr "Speichertest" + +#: admin/systems/class_servGeneric.inc:230 +#: admin/systems/class_servGeneric.inc:237 +msgid "Force localboot" +msgstr "Erzwinge lokalen Systemstart" + +#: admin/systems/class_servGeneric.inc:231 +#: admin/systems/class_servGeneric.inc:238 +msgid "System analysis" +msgstr "Systemanalyse" + +#: admin/systems/class_servGeneric.inc:233 +msgid "Wake up" +msgstr "Aufwecken" + +#: admin/systems/class_servGeneric.inc:369 +msgid "Software deployment" +msgstr "Softwareverteilung" + +#: admin/systems/class_servGeneric.inc:370 +msgid "This host is currently installing, if you really want to save it, press 'OK'." +msgstr "" +"Der Host ist gerade mitten in der Installation - wenn Sie dennoch speichern " +"möchten, drücken Sie auf 'OK'." + +#: admin/systems/class_servGeneric.inc:503 +#: admin/systems/class_componentGeneric.inc:309 +msgid "Generic" +msgstr "Allgemein" + +#: admin/systems/class_servGeneric.inc:504 +msgid "Server generic" +msgstr "Server (Allgemein)" + +#: admin/systems/class_servGeneric.inc:513 admin/systems/server.tpl:14 +#: admin/systems/class_componentGeneric.inc:320 admin/systems/component.tpl:35 +msgid "Description" +msgstr "Beschreibung" + +#: admin/systems/class_servGeneric.inc:516 +msgid "Goto mode" +msgstr "GOto-Modus" + +#: admin/systems/class_servGeneric.inc:517 +#: admin/systems/class_componentGeneric.inc:321 +msgid "Root password" +msgstr "Root-Passwort" + +#: admin/systems/class_servGeneric.inc:518 +msgid "Action flag" +msgstr "Ablaufstatus" + +#: admin/systems/server.tpl:26 admin/systems/component.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Wählen Sie den Teilbaum, in den die Gruppe eingepflegt werden soll" + +#: admin/systems/server.tpl:32 admin/systems/component.tpl:25 +msgid "Select a base" +msgstr "Wählen Sie eine Basis" + +#: admin/systems/server.tpl:42 +msgid "Mode" +msgstr "Modus" + +#: admin/systems/server.tpl:45 +msgid "Select terminal mode" +msgstr "Wählen Sie den Terminal-Modus" + +#: admin/systems/server.tpl:63 +msgid "Action" +msgstr "Aktion" + +#: admin/systems/server.tpl:69 +msgid "System installation in progress, the FAI state cannot be changed right now." +msgstr "" +"Eine Systeminstallation läuft gerade, der FAI state kann momentan nicht " +"geändert werden." + +#: admin/systems/server.tpl:72 +msgid "Select action to execute for this server" +msgstr "Wählen Sie die auszuführende Aktion für diesen Server" + +#: admin/systems/server.tpl:80 +msgid "Execute" +msgstr "Ausführen" + +#: admin/systems/class_termDNS.inc:444 +msgid "Not matching" +msgstr "Nicht zutreffend" + +#: admin/systems/class_termDNS.inc:593 +#, php-format +msgid "IP address %s" +msgstr "IP-Adresse %s" + +#: admin/systems/class_termDNS.inc:602 admin/systems/class_termDNS.inc:614 +#: admin/systems/class_termDNS.inc:616 admin/systems/class_termDNS.inc:982 +#: admin/systems/class_componentGeneric.inc:219 +#: admin/systems/class_componentGeneric.inc:222 +msgid "IP address" +msgstr "IP-Adresse" + +#: admin/systems/class_termDNS.inc:607 admin/systems/class_termDNS.inc:624 +#: admin/systems/class_termDNS.inc:626 admin/systems/class_termDNS.inc:983 +msgid "MAC address" +msgstr "MAC-Adresse" + +#: admin/systems/class_termDNS.inc:641 +#, php-format +msgid "The IP address '%s' is not part of the selected reverse zone '%s'!" +msgstr "Die IP-Adresse '%s' passt nicht in die gewählte Reverse-Zone '%s'!" + +#: admin/systems/class_termDNS.inc:653 +#, php-format +msgid "Record type '%s' is duplicated!" +msgstr "Datensatz-Typ '%s' ist doppelt vorhanden!" + +#: admin/systems/class_termDNS.inc:661 +#, php-format +msgid "Uniq record type '%s' is duplicated!" +msgstr "Eindeutiger Datensatz-Typ '%s' ist doppelt vorhanden!" + +#: admin/systems/class_termDNS.inc:673 +#, php-format +msgid "" +"The IP address '%s' will be added as 'A Record', this will be done " +"automatically, please remove the record." +msgstr "" +"Die IP-Adresse '%s' wird automatisch als 'A'-Datensatz eingefügt. Bitte " +"entfernen Sie den Eintrag." + +#: admin/systems/class_termDNS.inc:681 +#, php-format +msgid "Only lowercase records are allowed, please check your '%ss'." +msgstr "Es sind nur Kleinbuchstaben in Datensätzen erlaubt, bitte prüfen Sie '%ss'." + +#: admin/systems/class_termDNS.inc:923 admin/systems/class_termDNS.inc:943 +msgid "Add" +msgstr "Hinzufügen" + +#: admin/systems/class_termDNS.inc:937 +msgid "Delete" +msgstr "Entfernen" + +#: admin/systems/class_termDNS.inc:973 +msgid "DNS" +msgstr "DNS" + +#: admin/systems/class_termDNS.inc:974 +msgid "DNS settings" +msgstr "DNS-Einstellungen" + +#: admin/systems/class_termDNS.inc:989 +msgid "DNS configuration" +msgstr "DNS-Konfiguration" + +#: admin/systems/class_termDNS.inc:992 +msgid "DHCP configuration" +msgstr "DHCP-Konfiguration" + +#: admin/systems/class_componentGeneric.inc:77 +msgid "component" +msgstr "Komponente" + +#: admin/systems/class_componentGeneric.inc:310 +msgid "Component generic" +msgstr "Netzwerk-Komponente (Allgemein)" + +#: admin/systems/component.tpl:6 +msgid "Device name" +msgstr "Gerätename" + diff --git a/trunk/gosa-plugins/systems/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/systems/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..f49b8ab7d --- /dev/null +++ b/trunk/gosa-plugins/systems/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,963 @@ +# translation of messages.po to spanish +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Alejandro Escanero Blanco , 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2008-12-08 22:59+0100\n" +"Last-Translator: Alejandro Escanero Blanco \n" +"Language-Team: spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/remove.tpl:2 +msgid "Warning" +msgstr "Aviso" + +#: admin/systems/remove.tpl:6 +msgid "" +"This includes all system and setup informations. Please double check if your " +"really want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Esto incluye todos los sistemas e información de configuración. Por favor " +"pulse dos veces si quiere realmente hacer esto, ya que no hay forma de que " +"GOsa recupere la información posteriormente." + +#: admin/systems/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"La mejor opción antes de ejecutar esta acción es haber grabado el contenido " +"actual de su árbol LDAP en un fichero. Entonces - Y solo entonces - presione " +"'Eliminar' para continuar o 'Cancelar' para abortar." + +#: admin/systems/class_systemManagement.inc:26 +#: admin/systems/class_divListSystem.inc:88 +msgid "Systems" +msgstr "Sistemas" + +#: admin/systems/class_systemManagement.inc:27 +msgid "This does something" +msgstr "Esto hace algo" + +#: admin/systems/class_systemManagement.inc:239 +msgid "Back" +msgstr "Atrás" + +#: admin/systems/class_systemManagement.inc:286 +msgid "Creating the image failed. Please see the report below." +msgstr "" +"Ha fallado la creación de la imagen. Por favor compruebe el problema en el " +"siguiente informe." + +#: admin/systems/class_systemManagement.inc:295 +#, php-format +msgid "Command '%s', specified for ISO creation doesn't seem to exist." +msgstr "" +"No parece existir el comando '%s', especificado para la creación de imágenes " +"ISO." + +#: admin/systems/class_systemManagement.inc:344 +#: admin/systems/class_systemManagement.inc:459 +#: admin/systems/class_systemManagement.inc:496 +#: admin/systems/class_systemManagement.inc:504 +#: admin/systems/class_systemManagement.inc:554 +#: admin/systems/class_systemManagement.inc:561 +#: admin/systems/class_systemManagement.inc:576 +#: admin/systems/class_systemManagement.inc:584 +#: admin/systems/class_systemManagement.inc:623 +#: admin/systems/class_systemManagement.inc:717 +#: admin/systems/class_systemManagement.inc:1279 +#: admin/systems/class_serverService.inc:186 +#: admin/systems/class_serverService.inc:236 +#: admin/systems/class_serverService.inc:363 +#: admin/systems/class_termDNS.inc:338 +msgid "Error" +msgstr "Error" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Internal error" +msgstr "error interno" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Cannot set mode to 'active'!" +msgstr "¡No se puede poner el modo a 'activo'!" + +#: admin/systems/class_systemManagement.inc:584 +msgid "Editing this type of object is not supported yet!" +msgstr "¡No está soportado editar este tipo de objeto todavía!" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#: admin/systems/class_systemManagement.inc:943 +msgid "Permission error" +msgstr "Error de permisos" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +msgid "You have no permission to change this password!" +msgstr "¡No tiene permisos para cambiar esta contraseña!" + +#: admin/systems/class_systemManagement.inc:623 +msgid "" +"The passwords you've entered as 'New password' and 'Repeated password' do " +"not match!" +msgstr "" +"¡La contraseñas introducidas como nueva y reintroduzca contraseña no " +"coinciden!" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method" +msgstr "Método de contraseña" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method crypt is missing. Cannot set system password." +msgstr "" +"No se encuentra método de codificación de contraseña. No se pueden " +"introducir contraseñas de sistema." + +#: admin/systems/class_systemManagement.inc:704 +#: admin/systems/class_systemManagement.inc:1810 +#: admin/systems/services/class_goService.inc:122 +#: admin/systems/services/class_goService.inc:150 +#: admin/systems/services/class_goService.inc:183 +#: admin/systems/class_servGeneric.inc:281 +#: admin/systems/class_servGeneric.inc:433 admin/systems/class_termDNS.inc:483 +#: admin/systems/class_termDNS.inc:771 admin/systems/class_termDNS.inc:790 +#: admin/systems/class_termDNS.inc:811 admin/systems/class_termDNS.inc:816 +#: admin/systems/class_termDNS.inc:834 admin/systems/class_termDNS.inc:906 +#: admin/systems/class_componentGeneric.inc:160 +#: admin/systems/class_componentGeneric.inc:301 +msgid "LDAP error" +msgstr "Error LDAP" + +#: admin/systems/class_systemManagement.inc:717 +msgid "Cannot determine object to change password!" +msgstr "¡No puedo encontrar el objeto para cambiarle la contraseña!" + +#: admin/systems/class_systemManagement.inc:824 +#: admin/systems/class_servGeneric.inc:165 +#: admin/systems/class_servGeneric.inc:453 +msgid "Service infrastructure" +msgstr "Infraestructura de servicio" + +#: admin/systems/class_systemManagement.inc:869 +msgid "Permission" +msgstr "Permisos" + +#: admin/systems/class_systemManagement.inc:1308 +#: admin/systems/class_systemManagement.inc:1621 +msgid "New terminal" +msgstr "Nuevo terminal" + +#: admin/systems/class_systemManagement.inc:1310 +#: admin/systems/class_systemManagement.inc:1622 +msgid "New workstation" +msgstr "Nueva estación de trabajo" + +#: admin/systems/class_systemManagement.inc:1312 +msgid "Unknown device" +msgstr "Dispositivo desconocido" + +#: admin/systems/class_systemManagement.inc:1314 +msgid "New Device" +msgstr "Nuevo Dispositivo" + +#: admin/systems/class_systemManagement.inc:1339 +msgid "Terminal template for" +msgstr "Plantilla de terminal para" + +#: admin/systems/class_systemManagement.inc:1355 +msgid "Workstation template for" +msgstr "Plantilla de estación de trabajo para" + +#: admin/systems/class_systemManagement.inc:1598 +msgid "Template" +msgstr "Plantilla" + +#: admin/systems/class_systemManagement.inc:1599 +#: admin/systems/class_divListSystem.inc:199 +msgid "Phone" +msgstr "Teléfono" + +#: admin/systems/class_systemManagement.inc:1600 +#: admin/systems/class_componentGeneric.inc:315 +msgid "Network device" +msgstr "Dispositivo de Red" + +#: admin/systems/class_systemManagement.inc:1601 +#: admin/systems/class_divListSystem.inc:203 +msgid "Printer" +msgstr "Impresora" + +#: admin/systems/class_systemManagement.inc:1603 +#, fuzzy +msgid "Windows workstation" +msgstr "estaciones de trabajo windows" + +#: admin/systems/class_systemManagement.inc:1605 +#: admin/systems/class_divListSystem.inc:191 +msgid "Workstation" +msgstr "Estación de trabajo" + +#: admin/systems/class_systemManagement.inc:1606 +#: admin/systems/class_divListSystem.inc:195 +#: admin/systems/class_servGeneric.inc:509 +msgid "Server" +msgstr "Servidor" + +#: admin/systems/class_systemManagement.inc:1607 +#: admin/systems/class_divListSystem.inc:187 +msgid "Terminal" +msgstr "Terminal" + +#: admin/systems/class_systemManagement.inc:1609 +msgid "Locked workstation" +msgstr "Estación de trabajo bloqueada" + +#: admin/systems/class_systemManagement.inc:1610 +msgid "Locked server" +msgstr "Servidor bloqueado" + +#: admin/systems/class_systemManagement.inc:1611 +msgid "Locked terminal" +msgstr "Terminal bloqueado" + +#: admin/systems/class_systemManagement.inc:1613 +msgid "Workstation error" +msgstr "Error en estación de trabajo" + +#: admin/systems/class_systemManagement.inc:1614 +msgid "Server error" +msgstr "Error en servidor" + +#: admin/systems/class_systemManagement.inc:1615 +msgid "Terminal error" +msgstr "Error en terminal" + +#: admin/systems/class_systemManagement.inc:1617 +msgid "Workstation busy" +msgstr "Estación de trabajo ocupada" + +#: admin/systems/class_systemManagement.inc:1618 +msgid "Server busy" +msgstr "Servidor ocupado" + +#: admin/systems/class_systemManagement.inc:1620 +msgid "New system from incoming" +msgstr "Nuevo sistema desde entrada" + +#: admin/systems/class_systemManagement.inc:1626 +#: admin/systems/class_divListSystem.inc:214 +msgid "Opsi client" +msgstr "cliente Opsi" + +#: admin/systems/class_systemManagement.inc:1826 +#: admin/systems/class_systemManagement.inc:1827 +msgid "Incoming objects" +msgstr "Objetos de entrada" + +#: admin/systems/class_systemManagement.inc:1832 +msgid "Incoming" +msgstr "Entrada" + +#: admin/systems/services/class_goService.inc:44 +#: admin/systems/services/class_goService.inc:79 +msgid "Empty service" +msgstr "Servicio nulo" + +#: admin/systems/services/class_goService.inc:237 +msgid "Configuration error" +msgstr "Error en la configuración" + +#: admin/systems/services/ServiceAddDialog.tpl:3 +msgid "Adding a new service to the current server" +msgstr "Añadiendo un nuevo servicio al servidor seleccionado" + +#: admin/systems/services/ServiceAddDialog.tpl:7 +msgid "" +"This dialog allows you to add new services to the currenty edited server " +"object. The box below shows all available but not already used services." +msgstr "" +"Este diálogo le permite añadir nuevos servicios al servidor que está " +"configurando. El panel inferior muestra todos los servicios disponibles y " +"que no están siendo usados." + +#: admin/systems/services/ServiceAddDialog.tpl:13 +msgid "Service to add" +msgstr "Servicio a añadir" + +#: admin/systems/services/ServiceAddDialog.tpl:20 +msgid "All available services are already in use." +msgstr "Todos los servicios disponibles ya están en uso." + +#: admin/systems/services/ServiceAddDialog.tpl:28 +msgid "Continue" +msgstr "Continuar" + +#: admin/systems/class_divListSystem.inc:63 +#: admin/systems/class_divListSystem.inc:64 +msgid "List of systems" +msgstr "Lista de sistemas" + +#: admin/systems/class_divListSystem.inc:82 +msgid "Select all" +msgstr "Seleccionar todo" + +#: admin/systems/class_divListSystem.inc:88 +msgid "Department" +msgstr "Departamento" + +#: admin/systems/class_divListSystem.inc:92 +msgid "Release" +msgstr "Versión" + +#: admin/systems/class_divListSystem.inc:95 +#: admin/systems/class_divListSystem.inc:181 +#: admin/systems/class_divListSystemService.inc:51 +msgid "Actions" +msgstr "Acciones" + +#: admin/systems/class_divListSystem.inc:101 +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:423 +msgid "servers" +msgstr "Servidores" + +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:117 +#: admin/systems/class_divListSystem.inc:128 +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:138 +#, php-format +msgid "Show %s" +msgstr "Mostrar %s" + +#: admin/systems/class_divListSystem.inc:106 +msgid "Linux terminals" +msgstr "Terminales linux" + +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:425 +msgid "terminals" +msgstr "terminales" + +#: admin/systems/class_divListSystem.inc:111 +msgid "Linux workstations" +msgstr "Estaciones de trabajo linux" + +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:424 +msgid "workstations" +msgstr "estaciones de trabajo" + +#: admin/systems/class_divListSystem.inc:116 +msgid "MicroSoft Windows based workstations" +msgstr "Estaciones de trabajo basadas en Windows" + +#: admin/systems/class_divListSystem.inc:117 +msgid "windows based workstations" +msgstr "estaciones de trabajo basadas en windows" + +#: admin/systems/class_divListSystem.inc:121 +#, php-format +msgid "Display objects of type '%s'." +msgstr "Mostrar los objetos del tipo '%s'." + +#: admin/systems/class_divListSystem.inc:122 +msgid "OPSI installed client" +msgstr "Instalado cliente OPSI" + +#: admin/systems/class_divListSystem.inc:122 +msgid "Show OPSI based clients" +msgstr "Mostrar clientes basados OPSI" + +#: admin/systems/class_divListSystem.inc:127 +#: admin/systems/class_divListSystem.inc:128 +msgid "network printers" +msgstr "impresoras de red" + +#: admin/systems/class_divListSystem.inc:132 +msgid "VoIP phones" +msgstr "teléfonos VoIP" + +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:426 +msgid "phones" +msgstr "teléfonos" + +#: admin/systems/class_divListSystem.inc:137 +#: admin/systems/class_divListSystem.inc:138 +msgid "network devices" +msgstr "dispositivos de Red" + +#: admin/systems/class_divListSystem.inc:146 +msgid "Display systems matching" +msgstr "Mostrar sistemas que coincidan con" + +#: admin/systems/class_divListSystem.inc:147 +msgid "Display systems of user" +msgstr "Mostrar sistemas del usuario" + +#: admin/systems/class_divListSystem.inc:176 +#: admin/systems/class_servGeneric.inc:514 admin/systems/server.tpl:22 +#: admin/systems/class_componentGeneric.inc:319 admin/systems/component.tpl:17 +msgid "Base" +msgstr "Base" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit department" +msgstr "Enviar departamento" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit" +msgstr "Enviar" + +#: admin/systems/class_divListSystem.inc:183 +msgid "Create" +msgstr "Crear" + +#: admin/systems/class_divListSystem.inc:207 +msgid "Component" +msgstr "componente" + +#: admin/systems/class_divListSystem.inc:221 +msgid "Trigger action" +msgstr "Acción disparada" + +#: admin/systems/class_divListSystem.inc:227 +msgid "Schedule action" +msgstr "Acción programada" + +#: admin/systems/class_divListSystem.inc:234 +msgid "Remove" +msgstr "Eliminar" + +#: admin/systems/class_divListSystem.inc:237 +msgid "Activate systems" +msgstr "Activar sistemas" + +#: admin/systems/class_divListSystem.inc:322 +msgid "edit" +msgstr "editar" + +#: admin/systems/class_divListSystem.inc:322 +msgid "Edit system" +msgstr "Editar sistema" + +#: admin/systems/class_divListSystem.inc:328 +msgid "delete" +msgstr "eliminar" + +#: admin/systems/class_divListSystem.inc:328 +msgid "Delete system" +msgstr "Eliminar sistema" + +#: admin/systems/class_divListSystem.inc:350 +msgid "Password" +msgstr "Contraseña" + +#: admin/systems/class_divListSystem.inc:350 admin/systems/password.tpl:38 +msgid "Set password" +msgstr "Introducir contraseña" + +#: admin/systems/class_divListSystem.inc:359 +msgid "Create CD" +msgstr "Crear CD" + +#: admin/systems/class_divListSystem.inc:360 +msgid "Create FAI CD" +msgstr "Crear CD FAI" + +#: admin/systems/class_divListSystem.inc:407 +#: admin/systems/class_divListSystem.inc:408 +#, php-format +msgid "Inherited from %s" +msgstr "Heredado de %s" + +#: admin/systems/class_divListSystem.inc:423 +#: admin/systems/class_divListSystem.inc:424 +#: admin/systems/class_divListSystem.inc:425 +#: admin/systems/class_divListSystem.inc:426 +#: admin/systems/class_divListSystem.inc:427 +#: admin/systems/class_divListSystem.inc:428 +#: admin/systems/class_divListSystem.inc:429 +#: admin/systems/class_divListSystem.inc:430 +#: admin/systems/class_divListSystem.inc:431 +#, php-format +msgid "Number of listed '%s'" +msgstr "Número de mostrados '%s'" + +#: admin/systems/class_divListSystem.inc:427 +msgid "printers" +msgstr "impresoras" + +#: admin/systems/class_divListSystem.inc:428 +msgid "network components" +msgstr "componentes de red" + +#: admin/systems/class_divListSystem.inc:429 +msgid "new devices" +msgstr "nuevo dispositivo" + +#: admin/systems/class_divListSystem.inc:430 +msgid "windows workstations" +msgstr "estaciones de trabajo windows" + +#: admin/systems/class_divListSystem.inc:431 +msgid "departments" +msgstr "departamentos" + +#: admin/systems/class_serverService.inc:27 +msgid "Stop" +msgstr "Parada" + +#: admin/systems/class_serverService.inc:28 +msgid "Start" +msgstr "Inicio" + +#: admin/systems/class_serverService.inc:29 +msgid "Restart" +msgstr "Reiniciar" + +#: admin/systems/class_serverService.inc:351 +msgid "Information" +msgstr "Información" + +#: admin/systems/class_serverService.inc:351 +msgid "Cannot update service status until it has been saved!" +msgstr "" +"¡No puedo actualizar el estado del servicio hasta que no se haya grabado!" + +#: admin/systems/class_serverService.inc:363 +msgid "Cannot update service status!" +msgstr "¡No se puede actualizar el estado del servicio!" + +#: admin/systems/paste_generic.tpl:4 admin/systems/class_servGeneric.inc:339 +#: admin/systems/class_servGeneric.inc:344 +#: admin/systems/class_servGeneric.inc:355 admin/systems/server.tpl:6 +msgid "Server name" +msgstr "Nombre del servidor" + +#: admin/systems/paste_generic.tpl:14 +msgid "workstation name" +msgstr "Nombre de la estación de trabajo" + +#: admin/systems/paste_generic.tpl:24 +msgid "Terminal name" +msgstr "Nombre del terminal" + +#: admin/systems/paste_generic.tpl:34 +msgid "Printer name" +msgstr "Nombre de la impresora" + +#: admin/systems/paste_generic.tpl:44 +#: admin/systems/class_componentGeneric.inc:209 +#: admin/systems/class_componentGeneric.inc:214 +#: admin/systems/class_componentGeneric.inc:236 +msgid "Component name" +msgstr "Nombre del componente" + +#: admin/systems/class_divListSystemService.inc:38 +#: admin/systems/class_divListSystemService.inc:39 +msgid "Installed services" +msgstr "Servicios instalados" + +#: admin/systems/class_divListSystemService.inc:42 +msgid "Add, remove and configure the properties of system services here." +msgstr "" +"Este menú le permite añadir, eliminar o configurar las propiedades de un " +"servicio del sistema." + +#: admin/systems/class_divListSystemService.inc:50 +#: admin/systems/class_servGeneric.inc:512 +#: admin/systems/class_componentGeneric.inc:318 +msgid "Name" +msgstr "Nombre" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add service" +msgstr "Añadir servicio" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add new service" +msgstr "Añadir nuevo servicio" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all" +msgstr "Inicio todos" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all services" +msgstr "Iniciar todos los servicios" + +#: admin/systems/class_divListSystemService.inc:67 +#: admin/systems/class_divListSystemService.inc:127 +msgid "Stop service" +msgstr "Parar servicio" + +#: admin/systems/class_divListSystemService.inc:67 +msgid "Stop all services" +msgstr "Parar todos los servicios" + +#: admin/systems/class_divListSystemService.inc:69 +#: admin/systems/class_divListSystemService.inc:133 +msgid "Restart service" +msgstr "Reiniciar servicio" + +#: admin/systems/class_divListSystemService.inc:69 +msgid "Restart all services" +msgstr "Reiniciar todos los servicios" + +#: admin/systems/class_divListSystemService.inc:99 +msgid "Stopped" +msgstr "Parado" + +#: admin/systems/class_divListSystemService.inc:100 +msgid "Started" +msgstr "Iniciado" + +#: admin/systems/class_divListSystemService.inc:101 +msgid "Restarting" +msgstr "Reiniciando" + +#: admin/systems/class_divListSystemService.inc:102 +msgid "User status" +msgstr "Estado del usuario" + +#: admin/systems/class_divListSystemService.inc:121 +msgid "Start service" +msgstr "Iniciar servicio" + +#: admin/systems/class_divListSystemService.inc:141 +msgid "Edit service" +msgstr "Editar servicio" + +#: admin/systems/class_divListSystemService.inc:149 +msgid "Remove service" +msgstr "Eliminar servicio" + +#: admin/systems/network.tpl:1 +msgid "Network\tsettings" +msgstr "Red\tparámetros" + +#: admin/systems/network.tpl:9 +msgid "IP-address" +msgstr "Dirección IP" + +#: admin/systems/network.tpl:30 admin/systems/network.tpl:32 +msgid "Propose ip" +msgstr "Proponer ip" + +#: admin/systems/network.tpl:38 +msgid "MAC-address" +msgstr "Dirección MAC" + +#: admin/systems/network.tpl:45 +msgid "Autodetect" +msgstr "Autodetección" + +#: admin/systems/network.tpl:62 admin/systems/network.tpl:72 +msgid "Enable DHCP for this device" +msgstr "Activar DHCP para este dispositivo" + +#: admin/systems/network.tpl:72 admin/systems/network.tpl:167 +msgid "not configured" +msgstr "Sin configurar" + +#: admin/systems/network.tpl:80 +msgid "Parent node" +msgstr "Servidor Origen" + +#: admin/systems/network.tpl:93 +msgid "Edit settings" +msgstr "Editar características" + +#: admin/systems/network.tpl:127 admin/systems/network.tpl:167 +msgid "Enable DNS for this device" +msgstr "Activar DNS para este dispositivo" + +#: admin/systems/network.tpl:136 +msgid "Zone" +msgstr "Zona" + +#: admin/systems/network.tpl:146 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/network.tpl:154 +msgid "Dns records" +msgstr "Registros DNS" + +#: admin/systems/main.inc:54 admin/systems/main.inc:56 +msgid "System management" +msgstr "Administración del sistema" + +#: admin/systems/password.tpl:3 +msgid "" +"To change the terminal root password use the fields below. The changes take " +"effect during the next reboot. Please memorize the new password, because you " +"wouldn't be able to log in." +msgstr "" +"Para cambiar la contraseña del administrador del terminal use los campos a " +"continuación. Los cambios tomarán efecto en el próximo inicio. Por favor, " +"recuerde la nueva contraseña, porque no podrá iniciar sesión sin ella." + +#: admin/systems/password.tpl:6 +msgid "Leave fields blank for password inheritance from default entries." +msgstr "" +"Si deja los campos en blanco, se heredaran las contraseñas de las entradas " +"predeterminadas." + +#: admin/systems/password.tpl:10 +msgid "Changing the password impinges on authentification only." +msgstr "Cambiar la contraseña solo afecta a la autenticación." + +#: admin/systems/password.tpl:15 +msgid "New password" +msgstr "Nueva contraseña" + +#: admin/systems/password.tpl:21 +msgid "Repeat new password" +msgstr "Reintroduzca la contraseña" + +#: admin/systems/password.tpl:26 +msgid "Password strength" +msgstr "Resistencia de la contraseña" + +#: admin/systems/class_servGeneric.inc:86 +msgid "Activated" +msgstr "Activado" + +#: admin/systems/class_servGeneric.inc:87 +msgid "Locked" +msgstr "Bloqueado" + +#: admin/systems/class_servGeneric.inc:148 +msgid "server" +msgstr "Servidor" + +#: admin/systems/class_servGeneric.inc:169 +msgid "Event error" +msgstr "Evento de error" + +#: admin/systems/class_servGeneric.inc:170 +#, php-format +msgid "Event '%s' is not available!" +msgstr "¡El evento '%s' no está disponible!" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Switch off" +msgstr "Apagar" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Reboot" +msgstr "Reiniciar" + +#: admin/systems/class_servGeneric.inc:226 +#: admin/systems/class_servGeneric.inc:235 +msgid "System update" +msgstr "Actualización del sistema" + +#: admin/systems/class_servGeneric.inc:227 +#: admin/systems/class_servGeneric.inc:234 +msgid "Reinstall" +msgstr "Reinstalar" + +#: admin/systems/class_servGeneric.inc:228 +msgid "Rescan hardware" +msgstr "Buscar hardware" + +#: admin/systems/class_servGeneric.inc:229 +#: admin/systems/class_servGeneric.inc:236 +msgid "Memory test" +msgstr "Chequeo de memoria" + +#: admin/systems/class_servGeneric.inc:230 +#: admin/systems/class_servGeneric.inc:237 +msgid "Force localboot" +msgstr "Forzar inicio local" + +#: admin/systems/class_servGeneric.inc:231 +#: admin/systems/class_servGeneric.inc:238 +msgid "System analysis" +msgstr "Análisis del sistema" + +#: admin/systems/class_servGeneric.inc:233 +msgid "Wake up" +msgstr "Despertar" + +#: admin/systems/class_servGeneric.inc:369 +msgid "Software deployment" +msgstr "Desarrollo de software" + +#: admin/systems/class_servGeneric.inc:370 +msgid "" +"This host is currently installing, if you really want to save it, press 'OK'." +msgstr "" +"Esta maquina está actualmente instalando, si quiere realmente grabarla, " +"pulse 'OK'." + +#: admin/systems/class_servGeneric.inc:503 +#: admin/systems/class_componentGeneric.inc:309 +msgid "Generic" +msgstr "Genérico" + +#: admin/systems/class_servGeneric.inc:504 +msgid "Server generic" +msgstr "Servidor genérico" + +#: admin/systems/class_servGeneric.inc:513 admin/systems/server.tpl:14 +#: admin/systems/class_componentGeneric.inc:320 admin/systems/component.tpl:35 +msgid "Description" +msgstr "Descripción" + +#: admin/systems/class_servGeneric.inc:516 +msgid "Goto mode" +msgstr "Pasar al modo" + +#: admin/systems/class_servGeneric.inc:517 +#: admin/systems/class_componentGeneric.inc:321 +msgid "Root password" +msgstr "Contraseña de root" + +#: admin/systems/class_servGeneric.inc:518 +msgid "Action flag" +msgstr "Marca de acción" + +#: admin/systems/server.tpl:26 admin/systems/component.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Elija lugar del árbol para colocar el grupo" + +#: admin/systems/server.tpl:32 admin/systems/component.tpl:25 +msgid "Select a base" +msgstr "Seleccione una base" + +#: admin/systems/server.tpl:42 +msgid "Mode" +msgstr "Modo" + +#: admin/systems/server.tpl:45 +msgid "Select terminal mode" +msgstr "Seleccionar modo de terminal" + +#: admin/systems/server.tpl:63 +msgid "Action" +msgstr "Acción" + +#: admin/systems/server.tpl:69 +msgid "" +"System installation in progress, the FAI state cannot be changed right now." +msgstr "" +"Instalación del sistema en proceso, el estado FAI no puede ser cambiado " +"actualmente." + +#: admin/systems/server.tpl:72 +msgid "Select action to execute for this server" +msgstr "Seleccione una acción que se ejecutara en este servidor" + +#: admin/systems/server.tpl:80 +msgid "Execute" +msgstr "Ejecute" + +#: admin/systems/class_termDNS.inc:444 +msgid "Not matching" +msgstr "No mostrar los coincidentes" + +#: admin/systems/class_termDNS.inc:593 +#, php-format +msgid "IP address %s" +msgstr "Dirección IP %s" + +#: admin/systems/class_termDNS.inc:602 admin/systems/class_termDNS.inc:614 +#: admin/systems/class_termDNS.inc:616 admin/systems/class_termDNS.inc:982 +#: admin/systems/class_componentGeneric.inc:219 +#: admin/systems/class_componentGeneric.inc:222 +msgid "IP address" +msgstr "Dirección IP" + +#: admin/systems/class_termDNS.inc:607 admin/systems/class_termDNS.inc:624 +#: admin/systems/class_termDNS.inc:626 admin/systems/class_termDNS.inc:983 +msgid "MAC address" +msgstr "Dirección MAC" + +#: admin/systems/class_termDNS.inc:641 +#, php-format +msgid "The IP address '%s' is not part of the selected reverse zone '%s'!" +msgstr "" +"¡La dirección IP '%s' no está dentro de la zona inversa seleccionada '%s'!" + +#: admin/systems/class_termDNS.inc:653 +#, php-format +msgid "Record type '%s' is duplicated!" +msgstr "¡El tipo de registro '%s' está duplicado!" + +#: admin/systems/class_termDNS.inc:661 +#, php-format +msgid "Uniq record type '%s' is duplicated!" +msgstr "¡El tipo de registro único '%s' está duplicado!" + +#: admin/systems/class_termDNS.inc:673 +#, php-format +msgid "" +"The IP address '%s' will be added as 'A Record', this will be done " +"automatically, please remove the record." +msgstr "" +"La dirección IP '%s' se añadira como 'Registro A', esto se hará " +"automáticamente, por favor elimine el registro." + +#: admin/systems/class_termDNS.inc:681 +#, php-format +msgid "Only lowercase records are allowed, please check your '%ss'." +msgstr "Solo están permitidas minúsculas, por favor compruebe su '%ss'." + +#: admin/systems/class_termDNS.inc:923 admin/systems/class_termDNS.inc:943 +msgid "Add" +msgstr "Añadir" + +#: admin/systems/class_termDNS.inc:937 +msgid "Delete" +msgstr "Eliminar" + +#: admin/systems/class_termDNS.inc:973 +msgid "DNS" +msgstr "DNS" + +#: admin/systems/class_termDNS.inc:974 +msgid "DNS settings" +msgstr "Parametros de DNS" + +#: admin/systems/class_termDNS.inc:989 +msgid "DNS configuration" +msgstr "Configuración DNS" + +#: admin/systems/class_termDNS.inc:992 +msgid "DHCP configuration" +msgstr "Configuración DHCP" + +#: admin/systems/class_componentGeneric.inc:77 +msgid "component" +msgstr "Componente" + +#: admin/systems/class_componentGeneric.inc:310 +msgid "Component generic" +msgstr "Componente genérico" + +#: admin/systems/component.tpl:6 +msgid "Device name" +msgstr "Nombre del dispositivo" + +#~ msgid "Win workstation" +#~ msgstr "Estación de trabajo Win" diff --git a/trunk/gosa-plugins/systems/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/systems/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..78f5d2f06 --- /dev/null +++ b/trunk/gosa-plugins/systems/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,950 @@ +# translation of messages.po to french +# Benoit Mortier , 2005, 2006, 2007, 2008. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2008-12-21 12:38+0100\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: admin/systems/remove.tpl:2 +msgid "Warning" +msgstr "Avertissement" + +#: admin/systems/remove.tpl:6 +msgid "" +"This includes all system and setup informations. Please double check if your " +"really want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Cela inclut tout les systèmes et les informations de configuration. Veuillez " +"vérifier que vous voulez effectuer cette opération étant donné qu'il est " +"impossible pour GOsa de récupérer vos données." + +#: admin/systems/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Il est conseillé de sauvegarder l'arbre de votre annuaire LDAP dans un " +"fichier avant de réaliser cette action. Appuyez sur 'Supprimer' pour " +"continuer ou 'Annuler' pour abandonner." + +#: admin/systems/class_systemManagement.inc:26 +#: admin/systems/class_divListSystem.inc:88 +msgid "Systems" +msgstr "Systèmes" + +#: admin/systems/class_systemManagement.inc:27 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: admin/systems/class_systemManagement.inc:239 +msgid "Back" +msgstr "Retour" + +#: admin/systems/class_systemManagement.inc:286 +msgid "Creating the image failed. Please see the report below." +msgstr "La création de l'image à échoué. veuillez lire le rapport ci dessous." + +#: admin/systems/class_systemManagement.inc:295 +#, php-format +msgid "Command '%s', specified for ISO creation doesn't seem to exist." +msgstr "La commande '%s', utilisée dans la création de l'image ISO n'existe pas." + +#: admin/systems/class_systemManagement.inc:344 +#: admin/systems/class_systemManagement.inc:459 +#: admin/systems/class_systemManagement.inc:496 +#: admin/systems/class_systemManagement.inc:504 +#: admin/systems/class_systemManagement.inc:554 +#: admin/systems/class_systemManagement.inc:561 +#: admin/systems/class_systemManagement.inc:576 +#: admin/systems/class_systemManagement.inc:584 +#: admin/systems/class_systemManagement.inc:623 +#: admin/systems/class_systemManagement.inc:717 +#: admin/systems/class_systemManagement.inc:1279 +#: admin/systems/class_serverService.inc:186 +#: admin/systems/class_serverService.inc:236 +#: admin/systems/class_serverService.inc:363 +#: admin/systems/class_termDNS.inc:338 +msgid "Error" +msgstr "Erreur" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Internal error" +msgstr "Erreur interne" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Cannot set mode to 'active'!" +msgstr "Impossible de mettre le mode comme 'actif' !" + +#: admin/systems/class_systemManagement.inc:584 +msgid "Editing this type of object is not supported yet!" +msgstr "L'édition de ce type d'objet n'est pas encore supporté !" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#: admin/systems/class_systemManagement.inc:943 +msgid "Permission error" +msgstr "Erreur de permissions" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +msgid "You have no permission to change this password!" +msgstr "Vous n'êtes pas autorisé à modifier le mot de passe !" + +#: admin/systems/class_systemManagement.inc:623 +msgid "" +"The passwords you've entered as 'New password' and 'Repeated password' do " +"not match!" +msgstr "" +"Le mot de passe entré dans le champ 'Nouveau mot de passe' et celui dans le " +"champ 'Vérification du mot de passe' ne concordent pas !" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method" +msgstr "Format de stockage des mots de passe" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method crypt is missing. Cannot set system password." +msgstr "" +"La méthode de cryptage crypt est manquante. Impossible de créer le mot de " +"passe." + +#: admin/systems/class_systemManagement.inc:704 +#: admin/systems/class_systemManagement.inc:1810 +#: admin/systems/services/class_goService.inc:122 +#: admin/systems/services/class_goService.inc:150 +#: admin/systems/services/class_goService.inc:183 +#: admin/systems/class_servGeneric.inc:281 +#: admin/systems/class_servGeneric.inc:433 admin/systems/class_termDNS.inc:483 +#: admin/systems/class_termDNS.inc:771 admin/systems/class_termDNS.inc:790 +#: admin/systems/class_termDNS.inc:811 admin/systems/class_termDNS.inc:816 +#: admin/systems/class_termDNS.inc:834 admin/systems/class_termDNS.inc:906 +#: admin/systems/class_componentGeneric.inc:160 +#: admin/systems/class_componentGeneric.inc:301 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: admin/systems/class_systemManagement.inc:717 +msgid "Cannot determine object to change password!" +msgstr "Impossible de déterminer l'objet pour changer son mot de passe !" + +#: admin/systems/class_systemManagement.inc:824 +#: admin/systems/class_servGeneric.inc:165 +#: admin/systems/class_servGeneric.inc:453 +msgid "Service infrastructure" +msgstr "Service d'infrastructure" + +#: admin/systems/class_systemManagement.inc:869 +msgid "Permission" +msgstr "Permissions" + +#: admin/systems/class_systemManagement.inc:1308 +#: admin/systems/class_systemManagement.inc:1621 +msgid "New terminal" +msgstr "Nouveau terminal" + +#: admin/systems/class_systemManagement.inc:1310 +#: admin/systems/class_systemManagement.inc:1622 +msgid "New workstation" +msgstr "Nouvelle station de travail" + +#: admin/systems/class_systemManagement.inc:1312 +msgid "Unknown device" +msgstr "Périphérique Inconnu" + +#: admin/systems/class_systemManagement.inc:1314 +msgid "New Device" +msgstr "Nouveau périphérique" + +#: admin/systems/class_systemManagement.inc:1339 +msgid "Terminal template for" +msgstr "Modèle de terminal pour " + +#: admin/systems/class_systemManagement.inc:1355 +msgid "Workstation template for" +msgstr "Modèle de station de travail pour" + +#: admin/systems/class_systemManagement.inc:1598 +msgid "Template" +msgstr "Modèle" + +#: admin/systems/class_systemManagement.inc:1599 +#: admin/systems/class_divListSystem.inc:199 +msgid "Phone" +msgstr "Téléphone" + +#: admin/systems/class_systemManagement.inc:1600 +#: admin/systems/class_componentGeneric.inc:315 +msgid "Network device" +msgstr "Périphérique réseau" + +#: admin/systems/class_systemManagement.inc:1601 +#: admin/systems/class_divListSystem.inc:203 +msgid "Printer" +msgstr "Imprimante" + +#: admin/systems/class_systemManagement.inc:1603 +msgid "Windows workstation" +msgstr "Ordinateur Windows" + +#: admin/systems/class_systemManagement.inc:1605 +#: admin/systems/class_divListSystem.inc:191 +msgid "Workstation" +msgstr "Stations de travail" + +#: admin/systems/class_systemManagement.inc:1606 +#: admin/systems/class_divListSystem.inc:195 +#: admin/systems/class_servGeneric.inc:509 +msgid "Server" +msgstr "Serveur" + +#: admin/systems/class_systemManagement.inc:1607 +#: admin/systems/class_divListSystem.inc:187 +msgid "Terminal" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1609 +msgid "Locked workstation" +msgstr "Ordinateur verrouillé" + +#: admin/systems/class_systemManagement.inc:1610 +msgid "Locked server" +msgstr "Serveur verrouillé" + +#: admin/systems/class_systemManagement.inc:1611 +msgid "Locked terminal" +msgstr "Terminal verrouillé" + +#: admin/systems/class_systemManagement.inc:1613 +msgid "Workstation error" +msgstr "Erreur d'ordinateur" + +#: admin/systems/class_systemManagement.inc:1614 +msgid "Server error" +msgstr "Erreur du serveur" + +#: admin/systems/class_systemManagement.inc:1615 +msgid "Terminal error" +msgstr "Erreur du terminal" + +#: admin/systems/class_systemManagement.inc:1617 +msgid "Workstation busy" +msgstr "Ordinateur occupé" + +#: admin/systems/class_systemManagement.inc:1618 +msgid "Server busy" +msgstr "Serveur occupé" + +#: admin/systems/class_systemManagement.inc:1620 +msgid "New system from incoming" +msgstr "Nouveau système depuis incoming" + +#: admin/systems/class_systemManagement.inc:1626 +#: admin/systems/class_divListSystem.inc:214 +msgid "Opsi client" +msgstr "Clients OPSI" + +#: admin/systems/class_systemManagement.inc:1826 +#: admin/systems/class_systemManagement.inc:1827 +msgid "Incoming objects" +msgstr "Objets entrants" + +#: admin/systems/class_systemManagement.inc:1832 +msgid "Incoming" +msgstr "Entrants" + +#: admin/systems/services/class_goService.inc:44 +#: admin/systems/services/class_goService.inc:79 +msgid "Empty service" +msgstr "Service vide" + +#: admin/systems/services/class_goService.inc:237 +msgid "Configuration error" +msgstr "Erreur de configuration" + +#: admin/systems/services/ServiceAddDialog.tpl:3 +msgid "Adding a new service to the current server" +msgstr "Ajouter un nouveau service au serveur sélectionné" + +#: admin/systems/services/ServiceAddDialog.tpl:7 +msgid "" +"This dialog allows you to add new services to the currenty edited server " +"object. The box below shows all available but not already used services." +msgstr "" +"Cette boite de dialogue vous permet d'ajouter des nouveaux services au " +"serveur que vous éditez actuellement. Le cadre si dessous vous montre tout " +"les services disponibles mais pas encore utilisés." + +#: admin/systems/services/ServiceAddDialog.tpl:13 +msgid "Service to add" +msgstr "Service à ajouter" + +#: admin/systems/services/ServiceAddDialog.tpl:20 +msgid "All available services are already in use." +msgstr "Tout les services disponibles sont déjà utilisés." + +#: admin/systems/services/ServiceAddDialog.tpl:28 +msgid "Continue" +msgstr "Continuer" + +#: admin/systems/class_divListSystem.inc:63 +#: admin/systems/class_divListSystem.inc:64 +msgid "List of systems" +msgstr "Liste des systèmes" + +#: admin/systems/class_divListSystem.inc:82 +msgid "Select all" +msgstr "Sélectionner tout" + +#: admin/systems/class_divListSystem.inc:88 +msgid "Department" +msgstr "Département" + +#: admin/systems/class_divListSystem.inc:92 +msgid "Release" +msgstr "Version" + +#: admin/systems/class_divListSystem.inc:95 +#: admin/systems/class_divListSystem.inc:181 +#: admin/systems/class_divListSystemService.inc:51 +msgid "Actions" +msgstr "" + +#: admin/systems/class_divListSystem.inc:101 +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:423 +msgid "servers" +msgstr "Serveurs" + +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:117 +#: admin/systems/class_divListSystem.inc:128 +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:138 +#, php-format +msgid "Show %s" +msgstr "Afficher %s" + +#: admin/systems/class_divListSystem.inc:106 +msgid "Linux terminals" +msgstr "Terminaux linux" + +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:425 +msgid "terminals" +msgstr "Terminaux" + +#: admin/systems/class_divListSystem.inc:111 +msgid "Linux workstations" +msgstr "Stations Linux" + +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:424 +msgid "workstations" +msgstr "stations de travail" + +#: admin/systems/class_divListSystem.inc:116 +msgid "MicroSoft Windows based workstations" +msgstr "Stations de travail Microsoft Windows" + +#: admin/systems/class_divListSystem.inc:117 +msgid "windows based workstations" +msgstr "stations de travail Windows" + +#: admin/systems/class_divListSystem.inc:121 +#, php-format +msgid "Display objects of type '%s'." +msgstr "Lister les objets de type '%s'." + +#: admin/systems/class_divListSystem.inc:122 +msgid "OPSI installed client" +msgstr "Client OPSI installé" + +#: admin/systems/class_divListSystem.inc:122 +msgid "Show OPSI based clients" +msgstr "Montrer les clients OPSI" + +#: admin/systems/class_divListSystem.inc:127 +#: admin/systems/class_divListSystem.inc:128 +msgid "network printers" +msgstr "Imprimantes réseaux" + +#: admin/systems/class_divListSystem.inc:132 +msgid "VoIP phones" +msgstr "Téléphones VOIP" + +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:426 +msgid "phones" +msgstr "Téléphones" + +#: admin/systems/class_divListSystem.inc:137 +#: admin/systems/class_divListSystem.inc:138 +msgid "network devices" +msgstr "Périphériques réseau" + +#: admin/systems/class_divListSystem.inc:146 +msgid "Display systems matching" +msgstr "Afficher les systèmes correspondant" + +#: admin/systems/class_divListSystem.inc:147 +msgid "Display systems of user" +msgstr "Afficher les systèmes de l'utilisateur" + +#: admin/systems/class_divListSystem.inc:176 +#: admin/systems/class_servGeneric.inc:514 admin/systems/server.tpl:22 +#: admin/systems/class_componentGeneric.inc:319 admin/systems/component.tpl:17 +msgid "Base" +msgstr "" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit department" +msgstr "Soumettre le département" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit" +msgstr "Soumettre" + +#: admin/systems/class_divListSystem.inc:183 +msgid "Create" +msgstr "Créer" + +#: admin/systems/class_divListSystem.inc:207 +msgid "Component" +msgstr "Composant" + +#: admin/systems/class_divListSystem.inc:221 +msgid "Trigger action" +msgstr "Déclencher une action" + +#: admin/systems/class_divListSystem.inc:227 +msgid "Schedule action" +msgstr "Programmer une action" + +#: admin/systems/class_divListSystem.inc:234 +msgid "Remove" +msgstr "Supprimer" + +#: admin/systems/class_divListSystem.inc:237 +msgid "Activate systems" +msgstr "Activer un système" + +#: admin/systems/class_divListSystem.inc:322 +msgid "edit" +msgstr "éditer" + +#: admin/systems/class_divListSystem.inc:322 +msgid "Edit system" +msgstr "Editer un système" + +#: admin/systems/class_divListSystem.inc:328 +msgid "delete" +msgstr "supprimer" + +#: admin/systems/class_divListSystem.inc:328 +msgid "Delete system" +msgstr "Effacer un système" + +#: admin/systems/class_divListSystem.inc:350 +msgid "Password" +msgstr "Mot de passe" + +#: admin/systems/class_divListSystem.inc:350 admin/systems/password.tpl:38 +msgid "Set password" +msgstr "Attribuer le mot de passe" + +#: admin/systems/class_divListSystem.inc:359 +msgid "Create CD" +msgstr "Créer un CD" + +#: admin/systems/class_divListSystem.inc:360 +msgid "Create FAI CD" +msgstr "Créer un CD FAI" + +#: admin/systems/class_divListSystem.inc:407 +#: admin/systems/class_divListSystem.inc:408 +#, php-format +msgid "Inherited from %s" +msgstr "Hérité depuis %s" + +#: admin/systems/class_divListSystem.inc:423 +#: admin/systems/class_divListSystem.inc:424 +#: admin/systems/class_divListSystem.inc:425 +#: admin/systems/class_divListSystem.inc:426 +#: admin/systems/class_divListSystem.inc:427 +#: admin/systems/class_divListSystem.inc:428 +#: admin/systems/class_divListSystem.inc:429 +#: admin/systems/class_divListSystem.inc:430 +#: admin/systems/class_divListSystem.inc:431 +#, php-format +msgid "Number of listed '%s'" +msgstr "Nombre de '%s' listés" + +#: admin/systems/class_divListSystem.inc:427 +msgid "printers" +msgstr "Imprimantes" + +#: admin/systems/class_divListSystem.inc:428 +msgid "network components" +msgstr "composants réseau" + +#: admin/systems/class_divListSystem.inc:429 +msgid "new devices" +msgstr "Nouveau périphériques" + +#: admin/systems/class_divListSystem.inc:430 +msgid "windows workstations" +msgstr "Ordinateur Windows" + +#: admin/systems/class_divListSystem.inc:431 +msgid "departments" +msgstr "départements" + +#: admin/systems/class_serverService.inc:27 +msgid "Stop" +msgstr "Arrêter" + +#: admin/systems/class_serverService.inc:28 +msgid "Start" +msgstr "Démarrage" + +#: admin/systems/class_serverService.inc:29 +msgid "Restart" +msgstr "Réessayer" + +#: admin/systems/class_serverService.inc:351 +msgid "Information" +msgstr "Information" + +#: admin/systems/class_serverService.inc:351 +msgid "Cannot update service status until it has been saved!" +msgstr "Impossible de mettre à jour le statut avant que cela soit sauvé !" + +#: admin/systems/class_serverService.inc:363 +msgid "Cannot update service status!" +msgstr "Impossible de mettre à jour le statut du service!" + +#: admin/systems/paste_generic.tpl:4 admin/systems/class_servGeneric.inc:339 +#: admin/systems/class_servGeneric.inc:344 +#: admin/systems/class_servGeneric.inc:355 admin/systems/server.tpl:6 +msgid "Server name" +msgstr "Nom du serveur" + +#: admin/systems/paste_generic.tpl:14 +msgid "workstation name" +msgstr "Nom de la station de travail" + +#: admin/systems/paste_generic.tpl:24 +msgid "Terminal name" +msgstr "Nom du terminal" + +#: admin/systems/paste_generic.tpl:34 +msgid "Printer name" +msgstr "Nom de l'imprimante" + +#: admin/systems/paste_generic.tpl:44 +#: admin/systems/class_componentGeneric.inc:209 +#: admin/systems/class_componentGeneric.inc:214 +#: admin/systems/class_componentGeneric.inc:236 +msgid "Component name" +msgstr "Nom du composant" + +#: admin/systems/class_divListSystemService.inc:38 +#: admin/systems/class_divListSystemService.inc:39 +msgid "Installed services" +msgstr "Services installés" + +#: admin/systems/class_divListSystemService.inc:42 +msgid "Add, remove and configure the properties of system services here." +msgstr "" +"ajouter, de supprimer ou de changer les propriétés d'un service spécifique " +"ici." + +#: admin/systems/class_divListSystemService.inc:50 +#: admin/systems/class_servGeneric.inc:512 +#: admin/systems/class_componentGeneric.inc:318 +msgid "Name" +msgstr "Nom" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add service" +msgstr "Ajouter un service" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add new service" +msgstr "Ajouter un nouveau service" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all" +msgstr "Démarrer tout" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all services" +msgstr "Démarrer tout les services" + +#: admin/systems/class_divListSystemService.inc:67 +#: admin/systems/class_divListSystemService.inc:127 +msgid "Stop service" +msgstr "Stopper tout les Service" + +#: admin/systems/class_divListSystemService.inc:67 +msgid "Stop all services" +msgstr "Stopper tout les services" + +#: admin/systems/class_divListSystemService.inc:69 +#: admin/systems/class_divListSystemService.inc:133 +msgid "Restart service" +msgstr "Redémarrer le service" + +#: admin/systems/class_divListSystemService.inc:69 +msgid "Restart all services" +msgstr "Redémarrer tout les services" + +#: admin/systems/class_divListSystemService.inc:99 +msgid "Stopped" +msgstr "Arrêté" + +#: admin/systems/class_divListSystemService.inc:100 +msgid "Started" +msgstr "Démarrer" + +#: admin/systems/class_divListSystemService.inc:101 +msgid "Restarting" +msgstr "Redémarre" + +#: admin/systems/class_divListSystemService.inc:102 +msgid "User status" +msgstr "Statut de l'utilisateur" + +#: admin/systems/class_divListSystemService.inc:121 +msgid "Start service" +msgstr "Démarrer le service" + +#: admin/systems/class_divListSystemService.inc:141 +msgid "Edit service" +msgstr "Editer le service" + +#: admin/systems/class_divListSystemService.inc:149 +msgid "Remove service" +msgstr "Suppression du service" + +#: admin/systems/network.tpl:1 +msgid "Network\tsettings" +msgstr "Configuration\tréseau" + +#: admin/systems/network.tpl:9 +msgid "IP-address" +msgstr "Adresse IP" + +#: admin/systems/network.tpl:30 admin/systems/network.tpl:32 +msgid "Propose ip" +msgstr "Proposer une adresse ip" + +#: admin/systems/network.tpl:38 +msgid "MAC-address" +msgstr "Adresse MAC" + +#: admin/systems/network.tpl:45 +msgid "Autodetect" +msgstr "Autodétection" + +#: admin/systems/network.tpl:62 admin/systems/network.tpl:72 +msgid "Enable DHCP for this device" +msgstr "Activer le DHCP pour ce périphérique" + +#: admin/systems/network.tpl:72 admin/systems/network.tpl:167 +msgid "not configured" +msgstr "non configuré" + +#: admin/systems/network.tpl:80 +msgid "Parent node" +msgstr "Noeud Père" + +#: admin/systems/network.tpl:93 +msgid "Edit settings" +msgstr "Editer les paramètres" + +#: admin/systems/network.tpl:127 admin/systems/network.tpl:167 +msgid "Enable DNS for this device" +msgstr "Activer le DNS pour ce périphérique" + +#: admin/systems/network.tpl:136 +msgid "Zone" +msgstr "Zone" + +#: admin/systems/network.tpl:146 +msgid "TTL" +msgstr "" + +#: admin/systems/network.tpl:154 +msgid "Dns records" +msgstr "Enregistrement dns" + +#: admin/systems/main.inc:54 admin/systems/main.inc:56 +msgid "System management" +msgstr "Administration des système" + +#: admin/systems/password.tpl:3 +msgid "" +"To change the terminal root password use the fields below. The changes take " +"effect during the next reboot. Please memorize the new password, because you " +"wouldn't be able to log in." +msgstr "" +"Pour changer le mot de passe root du terminal, utilisez le champ ci-dessous. " +"Les changements prennent effet immédiatement. Veuillez mémoriser le nouveau " +"mot de passe sinon vous ne pourrez pas vous identifier sans celui-ci." + +#: admin/systems/password.tpl:6 +msgid "Leave fields blank for password inheritance from default entries." +msgstr "" +"Laissez le champ vide pour le mot de passe afin de l'obtenir depuis l'entrée " +"par défaut." + +#: admin/systems/password.tpl:10 +msgid "Changing the password impinges on authentification only." +msgstr "Changer le mot de passe influe seulement sur l'authentification." + +#: admin/systems/password.tpl:15 +msgid "New password" +msgstr "Nouveau mot de passe" + +#: admin/systems/password.tpl:21 +msgid "Repeat new password" +msgstr "Confirmation du nouveau mot de passe" + +#: admin/systems/password.tpl:26 +msgid "Password strength" +msgstr "Niveau de sécurité du mot de passe" + +#: admin/systems/class_servGeneric.inc:86 +msgid "Activated" +msgstr "Activé" + +#: admin/systems/class_servGeneric.inc:87 +msgid "Locked" +msgstr "Verrouillé" + +#: admin/systems/class_servGeneric.inc:148 +msgid "server" +msgstr "serveur" + +#: admin/systems/class_servGeneric.inc:169 +msgid "Event error" +msgstr "Erreur d'événement" + +#: admin/systems/class_servGeneric.inc:170 +#, php-format +msgid "Event '%s' is not available!" +msgstr "L'événement '%s' n'est pas disponible !" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Switch off" +msgstr "Eteindre" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Reboot" +msgstr "Redémarrer" + +#: admin/systems/class_servGeneric.inc:226 +#: admin/systems/class_servGeneric.inc:235 +msgid "System update" +msgstr "Mise à jour du système" + +#: admin/systems/class_servGeneric.inc:227 +#: admin/systems/class_servGeneric.inc:234 +msgid "Reinstall" +msgstr "Reinstaller" + +#: admin/systems/class_servGeneric.inc:228 +msgid "Rescan hardware" +msgstr "Recherche du matériel" + +#: admin/systems/class_servGeneric.inc:229 +#: admin/systems/class_servGeneric.inc:236 +msgid "Memory test" +msgstr "Test mémoire" + +#: admin/systems/class_servGeneric.inc:230 +#: admin/systems/class_servGeneric.inc:237 +msgid "Force localboot" +msgstr "Forcer un démarrage local" + +#: admin/systems/class_servGeneric.inc:231 +#: admin/systems/class_servGeneric.inc:238 +msgid "System analysis" +msgstr "Analyse du système" + +#: admin/systems/class_servGeneric.inc:233 +msgid "Wake up" +msgstr "Réveiller" + +#: admin/systems/class_servGeneric.inc:369 +msgid "Software deployment" +msgstr "Déploiement de logiciel" + +#: admin/systems/class_servGeneric.inc:370 +msgid "This host is currently installing, if you really want to save it, press 'OK'." +msgstr "" +"Cet hôte est actuellement en cours d'installation, si vous voulez vraiment " +"le sauver, cliquez sur 'OK'." + +#: admin/systems/class_servGeneric.inc:503 +#: admin/systems/class_componentGeneric.inc:309 +msgid "Generic" +msgstr "Informations" + +#: admin/systems/class_servGeneric.inc:504 +msgid "Server generic" +msgstr "Serveur générique" + +#: admin/systems/class_servGeneric.inc:513 admin/systems/server.tpl:14 +#: admin/systems/class_componentGeneric.inc:320 admin/systems/component.tpl:35 +msgid "Description" +msgstr "Description" + +#: admin/systems/class_servGeneric.inc:516 +msgid "Goto mode" +msgstr "Mode Goto" + +#: admin/systems/class_servGeneric.inc:517 +#: admin/systems/class_componentGeneric.inc:321 +msgid "Root password" +msgstr "Mot de passe root" + +#: admin/systems/class_servGeneric.inc:518 +msgid "Action flag" +msgstr "Indicateur d'action" + +#: admin/systems/server.tpl:26 admin/systems/component.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Sélectionnez la branche où sera placée le groupe" + +#: admin/systems/server.tpl:32 admin/systems/component.tpl:25 +msgid "Select a base" +msgstr "Sélectionnez une base" + +#: admin/systems/server.tpl:42 +msgid "Mode" +msgstr "Mode" + +#: admin/systems/server.tpl:45 +msgid "Select terminal mode" +msgstr "Sélectionnez le mode du terminal" + +#: admin/systems/server.tpl:63 +msgid "Action" +msgstr "Action" + +#: admin/systems/server.tpl:69 +msgid "System installation in progress, the FAI state cannot be changed right now." +msgstr "" +"Le système est en cours d'installation, l'état FAI ne peut pas être changé " +"maintenant." + +#: admin/systems/server.tpl:72 +msgid "Select action to execute for this server" +msgstr "Sélectionnez l'opération à exécuter sur le serveur" + +#: admin/systems/server.tpl:80 +msgid "Execute" +msgstr "Exécuter" + +#: admin/systems/class_termDNS.inc:444 +msgid "Not matching" +msgstr "Pas équivalent" + +#: admin/systems/class_termDNS.inc:593 +#, php-format +msgid "IP address %s" +msgstr "Adresse IP %s" + +#: admin/systems/class_termDNS.inc:602 admin/systems/class_termDNS.inc:614 +#: admin/systems/class_termDNS.inc:616 admin/systems/class_termDNS.inc:982 +#: admin/systems/class_componentGeneric.inc:219 +#: admin/systems/class_componentGeneric.inc:222 +msgid "IP address" +msgstr "Adresse IP" + +#: admin/systems/class_termDNS.inc:607 admin/systems/class_termDNS.inc:624 +#: admin/systems/class_termDNS.inc:626 admin/systems/class_termDNS.inc:983 +msgid "MAC address" +msgstr "Adresse MAC" + +#: admin/systems/class_termDNS.inc:641 +#, php-format +msgid "The IP address '%s' is not part of the selected reverse zone '%s'!" +msgstr "" +"L'adresse spécifiée '%s' ne correspond pas à la l'entrée de la zone inverse " +"sélectionnée '%s'." + +#: admin/systems/class_termDNS.inc:653 +#, php-format +msgid "Record type '%s' is duplicated!" +msgstr "L'enregistrement de type '%s' est dupliquée !" + +#: admin/systems/class_termDNS.inc:661 +#, php-format +msgid "Uniq record type '%s' is duplicated!" +msgstr "L'enregistrement de type '%s' est dupliqué !" + +#: admin/systems/class_termDNS.inc:673 +#, php-format +msgid "" +"The IP address '%s' will be added as 'A Record', this will be done " +"automatically, please remove the record." +msgstr "" +"L'adresse IP '%s' est ajoutée comme un 'A' record, ceci sera fait " +"automatiquement, veuillez enlever l'enregistrement." + +#: admin/systems/class_termDNS.inc:681 +#, php-format +msgid "Only lowercase records are allowed, please check your '%ss'." +msgstr "Seulement les minuscules sont autorisée, veuillez vérifier votre '%ss'." + +#: admin/systems/class_termDNS.inc:923 admin/systems/class_termDNS.inc:943 +msgid "Add" +msgstr "Ajouter" + +#: admin/systems/class_termDNS.inc:937 +msgid "Delete" +msgstr "Supprimer" + +#: admin/systems/class_termDNS.inc:973 +msgid "DNS" +msgstr "" + +#: admin/systems/class_termDNS.inc:974 +msgid "DNS settings" +msgstr "Configuration DNS" + +#: admin/systems/class_termDNS.inc:989 +msgid "DNS configuration" +msgstr "Configuration du DNS" + +#: admin/systems/class_termDNS.inc:992 +msgid "DHCP configuration" +msgstr "Configuration de DHCP" + +#: admin/systems/class_componentGeneric.inc:77 +msgid "component" +msgstr "composant" + +#: admin/systems/class_componentGeneric.inc:310 +msgid "Component generic" +msgstr "Composant générique" + +#: admin/systems/component.tpl:6 +msgid "Device name" +msgstr "Nom du périphérique" + diff --git a/trunk/gosa-plugins/systems/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/systems/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b259f7d47 --- /dev/null +++ b/trunk/gosa-plugins/systems/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,1290 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: admin/systems/remove.tpl:2 +msgid "Warning" +msgstr "Attenzione" + +#: admin/systems/remove.tpl:6 +msgid "" +"This includes all system and setup informations. Please double check if your " +"really want to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/systems/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/systems/class_systemManagement.inc:26 +#: admin/systems/class_divListSystem.inc:88 +msgid "Systems" +msgstr "Sistemi" + +#: admin/systems/class_systemManagement.inc:27 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: admin/systems/class_systemManagement.inc:239 +msgid "Back" +msgstr "Indietro" + +#: admin/systems/class_systemManagement.inc:286 +msgid "Creating the image failed. Please see the report below." +msgstr "" + +#: admin/systems/class_systemManagement.inc:295 +#, php-format +msgid "Command '%s', specified for ISO creation doesn't seem to exist." +msgstr "" + +#: admin/systems/class_systemManagement.inc:344 +#: admin/systems/class_systemManagement.inc:459 +#: admin/systems/class_systemManagement.inc:496 +#: admin/systems/class_systemManagement.inc:504 +#: admin/systems/class_systemManagement.inc:554 +#: admin/systems/class_systemManagement.inc:561 +#: admin/systems/class_systemManagement.inc:576 +#: admin/systems/class_systemManagement.inc:584 +#: admin/systems/class_systemManagement.inc:623 +#: admin/systems/class_systemManagement.inc:717 +#: admin/systems/class_systemManagement.inc:1279 +#: admin/systems/class_serverService.inc:186 +#: admin/systems/class_serverService.inc:236 +#: admin/systems/class_serverService.inc:363 +#: admin/systems/class_termDNS.inc:338 +msgid "Error" +msgstr "" + +#: admin/systems/class_systemManagement.inc:399 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Cannot set mode to 'active'!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:584 +msgid "Editing this type of object is not supported yet!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#: admin/systems/class_systemManagement.inc:943 +#, fuzzy +msgid "Permission error" +msgstr "Permessi" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#, fuzzy +msgid "You have no permission to change this password!" +msgstr "Non hai il permesso di cambiare la tua password." + +#: admin/systems/class_systemManagement.inc:623 +#, fuzzy +msgid "" +"The passwords you've entered as 'New password' and 'Repeated password' do " +"not match!" +msgstr "Le password nuova e ripetuta non corrispondono" + +#: admin/systems/class_systemManagement.inc:698 +#, fuzzy +msgid "Password method" +msgstr "Algorimo password" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method crypt is missing. Cannot set system password." +msgstr "" + +#: admin/systems/class_systemManagement.inc:704 +#: admin/systems/class_systemManagement.inc:1810 +#: admin/systems/services/class_goService.inc:122 +#: admin/systems/services/class_goService.inc:150 +#: admin/systems/services/class_goService.inc:183 +#: admin/systems/class_servGeneric.inc:281 +#: admin/systems/class_servGeneric.inc:433 admin/systems/class_termDNS.inc:483 +#: admin/systems/class_termDNS.inc:771 admin/systems/class_termDNS.inc:790 +#: admin/systems/class_termDNS.inc:811 admin/systems/class_termDNS.inc:816 +#: admin/systems/class_termDNS.inc:834 admin/systems/class_termDNS.inc:906 +#: admin/systems/class_componentGeneric.inc:160 +#: admin/systems/class_componentGeneric.inc:301 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: admin/systems/class_systemManagement.inc:717 +#, fuzzy +msgid "Cannot determine object to change password!" +msgstr "Cambia la password" + +#: admin/systems/class_systemManagement.inc:824 +#: admin/systems/class_servGeneric.inc:165 +#: admin/systems/class_servGeneric.inc:453 +#, fuzzy +msgid "Service infrastructure" +msgstr "Cognome" + +#: admin/systems/class_systemManagement.inc:869 +#, fuzzy +msgid "Permission" +msgstr "Permessi" + +#: admin/systems/class_systemManagement.inc:1308 +#: admin/systems/class_systemManagement.inc:1621 +msgid "New terminal" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1310 +#: admin/systems/class_systemManagement.inc:1622 +msgid "New workstation" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1312 +msgid "Unknown device" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1314 +#, fuzzy +msgid "New Device" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/class_systemManagement.inc:1339 +#, fuzzy +msgid "Terminal template for" +msgstr "Terminal Server" + +#: admin/systems/class_systemManagement.inc:1355 +msgid "Workstation template for" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1598 +msgid "Template" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1599 +#: admin/systems/class_divListSystem.inc:199 +msgid "Phone" +msgstr "Telefono" + +#: admin/systems/class_systemManagement.inc:1600 +#: admin/systems/class_componentGeneric.inc:315 +#, fuzzy +msgid "Network device" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/class_systemManagement.inc:1601 +#: admin/systems/class_divListSystem.inc:203 +msgid "Printer" +msgstr "Stampante" + +#: admin/systems/class_systemManagement.inc:1603 +#, fuzzy +msgid "Windows workstation" +msgstr "Mostra workstation" + +#: admin/systems/class_systemManagement.inc:1605 +#: admin/systems/class_divListSystem.inc:191 +msgid "Workstation" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1606 +#: admin/systems/class_divListSystem.inc:195 +#: admin/systems/class_servGeneric.inc:509 +msgid "Server" +msgstr "Server" + +#: admin/systems/class_systemManagement.inc:1607 +#: admin/systems/class_divListSystem.inc:187 +#, fuzzy +msgid "Terminal" +msgstr "Terminali" + +#: admin/systems/class_systemManagement.inc:1609 +#, fuzzy +msgid "Locked workstation" +msgstr "Mostra workstation" + +#: admin/systems/class_systemManagement.inc:1610 +#, fuzzy +msgid "Locked server" +msgstr "Server" + +#: admin/systems/class_systemManagement.inc:1611 +#, fuzzy +msgid "Locked terminal" +msgstr "Mostra terminali" + +#: admin/systems/class_systemManagement.inc:1613 +#, fuzzy +msgid "Workstation error" +msgstr "Creare" + +#: admin/systems/class_systemManagement.inc:1614 +#, fuzzy +msgid "Server error" +msgstr "Stato" + +#: admin/systems/class_systemManagement.inc:1615 +#, fuzzy +msgid "Terminal error" +msgstr "Terminal Server" + +#: admin/systems/class_systemManagement.inc:1617 +#, fuzzy +msgid "Workstation busy" +msgstr "Mostra workstation" + +#: admin/systems/class_systemManagement.inc:1618 +#, fuzzy +msgid "Server busy" +msgstr "Server" + +#: admin/systems/class_systemManagement.inc:1620 +#, fuzzy +msgid "New system from incoming" +msgstr "Informazioni organizzazione" + +#: admin/systems/class_systemManagement.inc:1626 +#: admin/systems/class_divListSystem.inc:214 +msgid "Opsi client" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1826 +#: admin/systems/class_systemManagement.inc:1827 +#, fuzzy +msgid "Incoming objects" +msgstr "Oggetti membri" + +#: admin/systems/class_systemManagement.inc:1832 +#, fuzzy +msgid "Incoming" +msgstr "Icna" + +#: admin/systems/services/class_goService.inc:44 +#: admin/systems/services/class_goService.inc:79 +#, fuzzy +msgid "Empty service" +msgstr "Modifica contatto" + +#: admin/systems/services/class_goService.inc:237 +#, fuzzy +msgid "Configuration error" +msgstr "File di configurazione" + +#: admin/systems/services/ServiceAddDialog.tpl:3 +msgid "Adding a new service to the current server" +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:7 +msgid "" +"This dialog allows you to add new services to the currenty edited server " +"object. The box below shows all available but not already used services." +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:13 +#, fuzzy +msgid "Service to add" +msgstr "Seleziona il numero da aggiungere" + +#: admin/systems/services/ServiceAddDialog.tpl:20 +#, fuzzy +msgid "All available services are already in use." +msgstr "L'indirizzo principale inserito è già in uso." + +#: admin/systems/services/ServiceAddDialog.tpl:28 +msgid "Continue" +msgstr "Continua" + +#: admin/systems/class_divListSystem.inc:63 +#: admin/systems/class_divListSystem.inc:64 +msgid "List of systems" +msgstr "Lista dei sistemi" + +#: admin/systems/class_divListSystem.inc:82 +#, fuzzy +msgid "Select all" +msgstr "Rimuovi" + +#: admin/systems/class_divListSystem.inc:88 +#, fuzzy +msgid "Department" +msgstr "Dipartimento" + +#: admin/systems/class_divListSystem.inc:92 +#, fuzzy +msgid "Release" +msgstr "Rimuovi" + +#: admin/systems/class_divListSystem.inc:95 +#: admin/systems/class_divListSystem.inc:181 +#: admin/systems/class_divListSystemService.inc:51 +msgid "Actions" +msgstr "Azioni" + +#: admin/systems/class_divListSystem.inc:101 +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:423 +#, fuzzy +msgid "servers" +msgstr "Server" + +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:117 +#: admin/systems/class_divListSystem.inc:128 +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy, php-format +msgid "Show %s" +msgstr "Mostra telefoni" + +#: admin/systems/class_divListSystem.inc:106 +#, fuzzy +msgid "Linux terminals" +msgstr "Mostra terminali" + +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:425 +#, fuzzy +msgid "terminals" +msgstr "Terminali" + +#: admin/systems/class_divListSystem.inc:111 +#, fuzzy +msgid "Linux workstations" +msgstr "Mostra workstation" + +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:424 +#, fuzzy +msgid "workstations" +msgstr "Mostra workstation" + +#: admin/systems/class_divListSystem.inc:116 +#, fuzzy +msgid "MicroSoft Windows based workstations" +msgstr "Mostra workstation Windows" + +#: admin/systems/class_divListSystem.inc:117 +#, fuzzy +msgid "windows based workstations" +msgstr "Mostra workstation Windows" + +#: admin/systems/class_divListSystem.inc:121 +#, fuzzy, php-format +msgid "Display objects of type '%s'." +msgstr "Gruppo di oggetti" + +#: admin/systems/class_divListSystem.inc:122 +#, fuzzy +msgid "OPSI installed client" +msgstr "Dispositivi del client" + +#: admin/systems/class_divListSystem.inc:122 +msgid "Show OPSI based clients" +msgstr "" + +#: admin/systems/class_divListSystem.inc:127 +#: admin/systems/class_divListSystem.inc:128 +#, fuzzy +msgid "network printers" +msgstr "Mostra stampanti di rete" + +#: admin/systems/class_divListSystem.inc:132 +#, fuzzy +msgid "VoIP phones" +msgstr "Mostra telefoni" + +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:426 +#, fuzzy +msgid "phones" +msgstr "Telefono" + +#: admin/systems/class_divListSystem.inc:137 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy +msgid "network devices" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/class_divListSystem.inc:146 +msgid "Display systems matching" +msgstr "Mostra i sistemi che corrispondono a:" + +#: admin/systems/class_divListSystem.inc:147 +#, fuzzy +msgid "Display systems of user" +msgstr "Mostra l'indirizzo dell'utente" + +#: admin/systems/class_divListSystem.inc:176 +#: admin/systems/class_servGeneric.inc:514 admin/systems/server.tpl:22 +#: admin/systems/class_componentGeneric.inc:319 admin/systems/component.tpl:17 +msgid "Base" +msgstr "Base" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit department" +msgstr "Imposta dipartimento" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit" +msgstr "" + +#: admin/systems/class_divListSystem.inc:183 +msgid "Create" +msgstr "Creare" + +#: admin/systems/class_divListSystem.inc:207 +#, fuzzy +msgid "Component" +msgstr "Nome comune" + +#: admin/systems/class_divListSystem.inc:221 +msgid "Trigger action" +msgstr "" + +#: admin/systems/class_divListSystem.inc:227 +msgid "Schedule action" +msgstr "" + +#: admin/systems/class_divListSystem.inc:234 +msgid "Remove" +msgstr "Rimuovi" + +#: admin/systems/class_divListSystem.inc:237 +#, fuzzy +msgid "Activate systems" +msgstr "Lista dei sistemi" + +#: admin/systems/class_divListSystem.inc:322 +msgid "edit" +msgstr "modifica" + +#: admin/systems/class_divListSystem.inc:322 +#, fuzzy +msgid "Edit system" +msgstr "Lista dei sistemi" + +#: admin/systems/class_divListSystem.inc:328 +msgid "delete" +msgstr "elimina" + +#: admin/systems/class_divListSystem.inc:328 +#, fuzzy +msgid "Delete system" +msgstr "Rimuovi" + +#: admin/systems/class_divListSystem.inc:350 +msgid "Password" +msgstr "Password" + +#: admin/systems/class_divListSystem.inc:350 admin/systems/password.tpl:38 +msgid "Set password" +msgstr "Cambia password" + +#: admin/systems/class_divListSystem.inc:359 +#, fuzzy +msgid "Create CD" +msgstr "Creare" + +#: admin/systems/class_divListSystem.inc:360 +#, fuzzy +msgid "Create FAI CD" +msgstr "Gruppo di oggetti" + +#: admin/systems/class_divListSystem.inc:407 +#: admin/systems/class_divListSystem.inc:408 +#, fuzzy, php-format +msgid "Inherited from %s" +msgstr "Gruppi di oggetti" + +#: admin/systems/class_divListSystem.inc:423 +#: admin/systems/class_divListSystem.inc:424 +#: admin/systems/class_divListSystem.inc:425 +#: admin/systems/class_divListSystem.inc:426 +#: admin/systems/class_divListSystem.inc:427 +#: admin/systems/class_divListSystem.inc:428 +#: admin/systems/class_divListSystem.inc:429 +#: admin/systems/class_divListSystem.inc:430 +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Server" + +#: admin/systems/class_divListSystem.inc:427 +#, fuzzy +msgid "printers" +msgstr "Stampante" + +#: admin/systems/class_divListSystem.inc:428 +#, fuzzy +msgid "network components" +msgstr "Mostra stampanti di rete" + +#: admin/systems/class_divListSystem.inc:429 +#, fuzzy +msgid "new devices" +msgstr "Mostra dispositiva di rete" + +#: admin/systems/class_divListSystem.inc:430 +#, fuzzy +msgid "windows workstations" +msgstr "Mostra workstation" + +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy +msgid "departments" +msgstr "Imposta dipartimento" + +#: admin/systems/class_serverService.inc:27 +msgid "Stop" +msgstr "" + +#: admin/systems/class_serverService.inc:28 +#, fuzzy +msgid "Start" +msgstr "Avvio" + +#: admin/systems/class_serverService.inc:29 +#, fuzzy +msgid "Restart" +msgstr "Riprova" + +#: admin/systems/class_serverService.inc:351 +#, fuzzy +msgid "Information" +msgstr "Icna" + +#: admin/systems/class_serverService.inc:351 +msgid "Cannot update service status until it has been saved!" +msgstr "" + +#: admin/systems/class_serverService.inc:363 +msgid "Cannot update service status!" +msgstr "" + +#: admin/systems/paste_generic.tpl:4 admin/systems/class_servGeneric.inc:339 +#: admin/systems/class_servGeneric.inc:344 +#: admin/systems/class_servGeneric.inc:355 admin/systems/server.tpl:6 +msgid "Server name" +msgstr "" + +#: admin/systems/paste_generic.tpl:14 +#, fuzzy +msgid "workstation name" +msgstr "Nome locazione" + +#: admin/systems/paste_generic.tpl:24 +msgid "Terminal name" +msgstr "" + +#: admin/systems/paste_generic.tpl:34 +msgid "Printer name" +msgstr "Nome della stampante" + +#: admin/systems/paste_generic.tpl:44 +#: admin/systems/class_componentGeneric.inc:209 +#: admin/systems/class_componentGeneric.inc:214 +#: admin/systems/class_componentGeneric.inc:236 +#, fuzzy +msgid "Component name" +msgstr "Nome comune" + +#: admin/systems/class_divListSystemService.inc:38 +#: admin/systems/class_divListSystemService.inc:39 +#, fuzzy +msgid "Installed services" +msgstr "Dispositivi del client" + +#: admin/systems/class_divListSystemService.inc:42 +msgid "Add, remove and configure the properties of system services here." +msgstr "" + +#: admin/systems/class_divListSystemService.inc:50 +#: admin/systems/class_servGeneric.inc:512 +#: admin/systems/class_componentGeneric.inc:318 +msgid "Name" +msgstr "Cognome" + +#: admin/systems/class_divListSystemService.inc:62 +#, fuzzy +msgid "Add service" +msgstr "Modifica contatto" + +#: admin/systems/class_divListSystemService.inc:62 +#, fuzzy +msgid "Add new service" +msgstr "Dispositivi del client" + +#: admin/systems/class_divListSystemService.inc:65 +#, fuzzy +msgid "Start all" +msgstr "Avvio" + +#: admin/systems/class_divListSystemService.inc:65 +#, fuzzy +msgid "Start all services" +msgstr "Dispositivi del client" + +#: admin/systems/class_divListSystemService.inc:67 +#: admin/systems/class_divListSystemService.inc:127 +#, fuzzy +msgid "Stop service" +msgstr "Servizi" + +#: admin/systems/class_divListSystemService.inc:67 +#, fuzzy +msgid "Stop all services" +msgstr "Dispositivi del client" + +#: admin/systems/class_divListSystemService.inc:69 +#: admin/systems/class_divListSystemService.inc:133 +#, fuzzy +msgid "Restart service" +msgstr "server" + +#: admin/systems/class_divListSystemService.inc:69 +#, fuzzy +msgid "Restart all services" +msgstr "Dispositivi del client" + +#: admin/systems/class_divListSystemService.inc:99 +#, fuzzy +msgid "Stopped" +msgstr "appendere" + +#: admin/systems/class_divListSystemService.inc:100 +#, fuzzy +msgid "Started" +msgstr "Stato" + +#: admin/systems/class_divListSystemService.inc:101 +#, fuzzy +msgid "Restarting" +msgstr "Destinazione" + +#: admin/systems/class_divListSystemService.inc:102 +#, fuzzy +msgid "User status" +msgstr "Opzioni di posta dell'identità" + +#: admin/systems/class_divListSystemService.inc:121 +#, fuzzy +msgid "Start service" +msgstr "server" + +#: admin/systems/class_divListSystemService.inc:141 +#, fuzzy +msgid "Edit service" +msgstr "Modifica contatto" + +#: admin/systems/class_divListSystemService.inc:149 +#, fuzzy +msgid "Remove service" +msgstr "Elimina contatto" + +#: admin/systems/network.tpl:1 +#, fuzzy +msgid "Network\tsettings" +msgstr "Mostra workstation" + +#: admin/systems/network.tpl:9 +msgid "IP-address" +msgstr "" + +#: admin/systems/network.tpl:30 admin/systems/network.tpl:32 +msgid "Propose ip" +msgstr "" + +#: admin/systems/network.tpl:38 +msgid "MAC-address" +msgstr "" + +#: admin/systems/network.tpl:45 +msgid "Autodetect" +msgstr "" + +#: admin/systems/network.tpl:62 admin/systems/network.tpl:72 +msgid "Enable DHCP for this device" +msgstr "" + +#: admin/systems/network.tpl:72 admin/systems/network.tpl:167 +#, fuzzy +msgid "not configured" +msgstr "non configurata" + +#: admin/systems/network.tpl:80 +#, fuzzy +msgid "Parent node" +msgstr "server" + +#: admin/systems/network.tpl:93 +#, fuzzy +msgid "Edit settings" +msgstr "Opzioni di posta dell'identità" + +#: admin/systems/network.tpl:127 admin/systems/network.tpl:167 +msgid "Enable DNS for this device" +msgstr "" + +#: admin/systems/network.tpl:136 +#, fuzzy +msgid "Zone" +msgstr "telefoni" + +#: admin/systems/network.tpl:146 +msgid "TTL" +msgstr "" + +#: admin/systems/network.tpl:154 +#, fuzzy +msgid "Dns records" +msgstr "Directory" + +#: admin/systems/main.inc:54 admin/systems/main.inc:56 +msgid "System management" +msgstr "" + +#: admin/systems/password.tpl:3 +#, fuzzy +msgid "" +"To change the terminal root password use the fields below. The changes take " +"effect during the next reboot. Please memorize the new password, because you " +"wouldn't be able to log in." +msgstr "" +"Per cambiare la tua password usa i campi qui sotto. I cambiamenti avrenno " +"effetto immediatamente. Memorizza la nuova password perché non sarai in " +"grado di connetterti senza di essa." + +#: admin/systems/password.tpl:6 +msgid "Leave fields blank for password inheritance from default entries." +msgstr "" + +#: admin/systems/password.tpl:10 +msgid "Changing the password impinges on authentification only." +msgstr "" + +#: admin/systems/password.tpl:15 +msgid "New password" +msgstr "Nuova password" + +#: admin/systems/password.tpl:21 +msgid "Repeat new password" +msgstr "Ripeti la password" + +#: admin/systems/password.tpl:26 +#, fuzzy +msgid "Password strength" +msgstr "Algorimo password" + +#: admin/systems/class_servGeneric.inc:86 +#, fuzzy +msgid "Activated" +msgstr "Privato" + +#: admin/systems/class_servGeneric.inc:87 +msgid "Locked" +msgstr "" + +#: admin/systems/class_servGeneric.inc:148 +#, fuzzy +msgid "server" +msgstr "Server" + +#: admin/systems/class_servGeneric.inc:169 +msgid "Event error" +msgstr "" + +#: admin/systems/class_servGeneric.inc:170 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Switch off" +msgstr "" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Reboot" +msgstr "" + +#: admin/systems/class_servGeneric.inc:226 +#: admin/systems/class_servGeneric.inc:235 +#, fuzzy +msgid "System update" +msgstr "Dipartimento" + +#: admin/systems/class_servGeneric.inc:227 +#: admin/systems/class_servGeneric.inc:234 +msgid "Reinstall" +msgstr "" + +#: admin/systems/class_servGeneric.inc:228 +#, fuzzy +msgid "Rescan hardware" +msgstr "Dispositivo telefonico" + +#: admin/systems/class_servGeneric.inc:229 +#: admin/systems/class_servGeneric.inc:236 +msgid "Memory test" +msgstr "" + +#: admin/systems/class_servGeneric.inc:230 +#: admin/systems/class_servGeneric.inc:237 +msgid "Force localboot" +msgstr "" + +#: admin/systems/class_servGeneric.inc:231 +#: admin/systems/class_servGeneric.inc:238 +#, fuzzy +msgid "System analysis" +msgstr "Log di sitema" + +#: admin/systems/class_servGeneric.inc:233 +msgid "Wake up" +msgstr "" + +#: admin/systems/class_servGeneric.inc:369 +#, fuzzy +msgid "Software deployment" +msgstr "Dipartimento" + +#: admin/systems/class_servGeneric.inc:370 +msgid "" +"This host is currently installing, if you really want to save it, press 'OK'." +msgstr "" + +#: admin/systems/class_servGeneric.inc:503 +#: admin/systems/class_componentGeneric.inc:309 +msgid "Generic" +msgstr "Generale" + +#: admin/systems/class_servGeneric.inc:504 +#, fuzzy +msgid "Server generic" +msgstr "Cognome" + +#: admin/systems/class_servGeneric.inc:513 admin/systems/server.tpl:14 +#: admin/systems/class_componentGeneric.inc:320 admin/systems/component.tpl:35 +msgid "Description" +msgstr "Descrizione" + +#: admin/systems/class_servGeneric.inc:516 +#, fuzzy +msgid "Goto mode" +msgstr "nella cartella" + +#: admin/systems/class_servGeneric.inc:517 +#: admin/systems/class_componentGeneric.inc:321 +#, fuzzy +msgid "Root password" +msgstr "Cambia password" + +#: admin/systems/class_servGeneric.inc:518 +#, fuzzy +msgid "Action flag" +msgstr "Azione" + +#: admin/systems/server.tpl:26 admin/systems/component.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Scegli il subtree dove mettere il gruppo" + +#: admin/systems/server.tpl:32 admin/systems/component.tpl:25 +#, fuzzy +msgid "Select a base" +msgstr "Rimuovi" + +#: admin/systems/server.tpl:42 +msgid "Mode" +msgstr "" + +#: admin/systems/server.tpl:45 +msgid "Select terminal mode" +msgstr "" + +#: admin/systems/server.tpl:63 +msgid "Action" +msgstr "Azione" + +#: admin/systems/server.tpl:69 +msgid "" +"System installation in progress, the FAI state cannot be changed right now." +msgstr "" + +#: admin/systems/server.tpl:72 +msgid "Select action to execute for this server" +msgstr "" + +#: admin/systems/server.tpl:80 +msgid "Execute" +msgstr "Esegui" + +#: admin/systems/class_termDNS.inc:444 +msgid "Not matching" +msgstr "" + +#: admin/systems/class_termDNS.inc:593 +#, fuzzy, php-format +msgid "IP address %s" +msgstr "Indirizzo principale" + +#: admin/systems/class_termDNS.inc:602 admin/systems/class_termDNS.inc:614 +#: admin/systems/class_termDNS.inc:616 admin/systems/class_termDNS.inc:982 +#: admin/systems/class_componentGeneric.inc:219 +#: admin/systems/class_componentGeneric.inc:222 +#, fuzzy +msgid "IP address" +msgstr "Indirizzo principale" + +#: admin/systems/class_termDNS.inc:607 admin/systems/class_termDNS.inc:624 +#: admin/systems/class_termDNS.inc:626 admin/systems/class_termDNS.inc:983 +#, fuzzy +msgid "MAC address" +msgstr "Indirizzo principale" + +#: admin/systems/class_termDNS.inc:641 +#, php-format +msgid "The IP address '%s' is not part of the selected reverse zone '%s'!" +msgstr "" + +#: admin/systems/class_termDNS.inc:653 +#, php-format +msgid "Record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:661 +#, php-format +msgid "Uniq record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:673 +#, php-format +msgid "" +"The IP address '%s' will be added as 'A Record', this will be done " +"automatically, please remove the record." +msgstr "" + +#: admin/systems/class_termDNS.inc:681 +#, php-format +msgid "Only lowercase records are allowed, please check your '%ss'." +msgstr "" + +#: admin/systems/class_termDNS.inc:923 admin/systems/class_termDNS.inc:943 +msgid "Add" +msgstr "Aggiungi" + +#: admin/systems/class_termDNS.inc:937 +msgid "Delete" +msgstr "Rimuovi" + +#: admin/systems/class_termDNS.inc:973 +msgid "DNS" +msgstr "" + +#: admin/systems/class_termDNS.inc:974 +#, fuzzy +msgid "DNS settings" +msgstr "Impostazioni Samba" + +#: admin/systems/class_termDNS.inc:989 +#, fuzzy +msgid "DNS configuration" +msgstr "Scarica il file di configurazione" + +#: admin/systems/class_termDNS.inc:992 +#, fuzzy +msgid "DHCP configuration" +msgstr "Scarica il file di configurazione" + +#: admin/systems/class_componentGeneric.inc:77 +#, fuzzy +msgid "component" +msgstr "Nome comune" + +#: admin/systems/class_componentGeneric.inc:310 +msgid "Component generic" +msgstr "" + +#: admin/systems/component.tpl:6 +msgid "Device name" +msgstr "" + +#, fuzzy +#~ msgid "Win workstation" +#~ msgstr "Amministrazione" + +#, fuzzy +#~ msgid "Cups Server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Syslog Server" +#~ msgstr "Mostra server" + +#, fuzzy +#~ msgid "Mail Server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Imap Server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Nfs Server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Kerberos Server" +#~ msgstr "Kerberos" + +#, fuzzy +#~ msgid "Asterisk Server" +#~ msgstr "Terminal Server" + +#, fuzzy +#~ msgid "Fax Server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "Ldap Server" +#~ msgstr "Server" + +#, fuzzy +#~ msgid "DNS records" +#~ msgstr "Directory" + +#, fuzzy +#~ msgid "Zone name" +#~ msgstr "Nome comune" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Azienda" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Paste" +#~ msgstr "Data" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Esegui" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Modifica questo record" + +#, fuzzy +#~ msgid "Set root password" +#~ msgstr "Cambia password" + +#, fuzzy +#~ msgid "Choose a base" +#~ msgstr "Scegli il tuo numero di telefono personale" + +#~ msgid "Go to root department" +#~ msgstr "Vai al dipartimento base" + +#~ msgid "Root" +#~ msgstr "Root" + +#~ msgid "Go up one department" +#~ msgstr "Sali di dipartimento" + +#~ msgid "Go to users department" +#~ msgstr "Vai agli utenti del dipartimento" + +#~ msgid "Home" +#~ msgstr "Home" + +#, fuzzy +#~ msgid "Use" +#~ msgstr "Utenti" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#, fuzzy +#~ msgid "Select this base" +#~ msgstr "Elimina questo record" + +#, fuzzy +#~ msgid "Workstation installation failed" +#~ msgstr "Mostra workstation" + +#, fuzzy +#~ msgid "Server is waiting for action" +#~ msgstr "Informazioni generali" + +#, fuzzy +#~ msgid "Server installation failed" +#~ msgstr "Opzioni applicazione" + +#, fuzzy +#~ msgid "Select to search within subtrees" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Seleziona per mostrare le applicazioni" + +#~ msgid "Save" +#~ msgstr "Salva" + +#, fuzzy +#~ msgid "You are not allowed to create a new object of this type." +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "Non hai il permesso di cambiare la tua password." + +#~ msgid "Apply" +#~ msgstr "Applica" + +#, fuzzy +#~ msgid "Network Device" +#~ msgstr "Mostra dispositiva di rete" + +#, fuzzy +#~ msgid "New Terminal" +#~ msgstr "Terminali" + +#, fuzzy +#~ msgid "New Workstation" +#~ msgstr "Mostra workstation" + +#~ msgid "Show servers" +#~ msgstr "Mostra server" + +#~ msgid "Show network devices" +#~ msgstr "Mostra dispositiva di rete" + +#, fuzzy +#~ msgid "Number of listed workstations" +#~ msgstr "Selezione le workstation da aggiungere" + +#, fuzzy +#~ msgid "Number of listed printers" +#~ msgstr "Permessi predefiniti" + +#, fuzzy +#~ msgid "Number of listed windows workstations" +#~ msgstr "Mostra workstation Windows" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Imposta dipartimento" + +#, fuzzy +#~ msgid "Removing dhcp entry for this object failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "Removing old dhcp entry failed." +#~ msgstr "Mostra contatti della rubrica" + +#, fuzzy +#~ msgid "Modifying dhcp entry failed." +#~ msgstr "Mostra contatti della rubrica" + +#, fuzzy +#~ msgid "Saving of terminal/dns account with dn '%s' failed." +#~ msgstr "Rimuovi le estensioni di posta" + +#, fuzzy +#~ msgid "Instant update" +#~ msgstr "Crea estensioni telefoniche" + +#, fuzzy +#~ msgid "Removing of system server/generic with dn '%s' failed." +#~ msgstr "Elimina estensioni Unix" + +#, fuzzy +#~ msgid "Removing of server services/" +#~ msgstr "Kerberos" + +#, fuzzy +#~ msgid "Saving of server services/" +#~ msgstr "Kerberos" + +#, fuzzy +#~ msgid "Set status flag for server services/" +#~ msgstr "Crea estensioni telefoniche" + +#, fuzzy +#~ msgid "Removing of system component/generic with dn '%s' failed." +#~ msgstr "Imposta dipartimento" + +#, fuzzy +#~ msgid "" +#~ "Can't execute specified AUTO_NETWORK_HOOK '%s'. Please check your gosa." +#~ "conf." +#~ msgstr "Impossibile connettersi al server del database!" + +#, fuzzy +#~ msgid "The specified IP address is already in use." +#~ msgstr "L'indirizzo principale inserito è già in uso." + +#, fuzzy +#~ msgid "" +#~ "The specified MAC address '%s' for this system '%s' is already in use." +#~ msgstr "L'indirizzo principale inserito è già in uso." + +#, fuzzy +#~ msgid "The required field 'IP-address' is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "The required field 'MAC-address' is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "The required field 'Server name' is not set." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "Specificare una dimenzione valida per le mail da rigettare." + +#, fuzzy +#~ msgid "The required field 'Component name' is not set." +#~ msgstr "Il campo necessario 'Home directory' non è vuoto" + +#, fuzzy +#~ msgid "The required field IP address is empty." +#~ msgstr "Il campo 'Indirizzo principale' non è stao inserito" + +#, fuzzy +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "Il valore specificato come '%s' contiene dei caratteri invalidi!" diff --git a/trunk/gosa-plugins/systems/locale/messages.po b/trunk/gosa-plugins/systems/locale/messages.po new file mode 100644 index 000000000..2be8a4352 --- /dev/null +++ b/trunk/gosa-plugins/systems/locale/messages.po @@ -0,0 +1,925 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/remove.tpl:2 +msgid "Warning" +msgstr "" + +#: admin/systems/remove.tpl:6 +msgid "" +"This includes all system and setup informations. Please double check if your " +"really want to do this since there is no way for GOsa to get your data back." +msgstr "" + +#: admin/systems/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" + +#: admin/systems/class_systemManagement.inc:26 +#: admin/systems/class_divListSystem.inc:88 +msgid "Systems" +msgstr "" + +#: admin/systems/class_systemManagement.inc:27 +msgid "This does something" +msgstr "" + +#: admin/systems/class_systemManagement.inc:239 +msgid "Back" +msgstr "" + +#: admin/systems/class_systemManagement.inc:286 +msgid "Creating the image failed. Please see the report below." +msgstr "" + +#: admin/systems/class_systemManagement.inc:295 +#, php-format +msgid "Command '%s', specified for ISO creation doesn't seem to exist." +msgstr "" + +#: admin/systems/class_systemManagement.inc:344 +#: admin/systems/class_systemManagement.inc:459 +#: admin/systems/class_systemManagement.inc:496 +#: admin/systems/class_systemManagement.inc:504 +#: admin/systems/class_systemManagement.inc:554 +#: admin/systems/class_systemManagement.inc:561 +#: admin/systems/class_systemManagement.inc:576 +#: admin/systems/class_systemManagement.inc:584 +#: admin/systems/class_systemManagement.inc:623 +#: admin/systems/class_systemManagement.inc:717 +#: admin/systems/class_systemManagement.inc:1279 +#: admin/systems/class_serverService.inc:186 +#: admin/systems/class_serverService.inc:236 +#: admin/systems/class_serverService.inc:363 +#: admin/systems/class_termDNS.inc:338 +msgid "Error" +msgstr "" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Internal error" +msgstr "" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Cannot set mode to 'active'!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:584 +msgid "Editing this type of object is not supported yet!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#: admin/systems/class_systemManagement.inc:943 +msgid "Permission error" +msgstr "" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +msgid "You have no permission to change this password!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:623 +msgid "" +"The passwords you've entered as 'New password' and 'Repeated password' do " +"not match!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method" +msgstr "" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method crypt is missing. Cannot set system password." +msgstr "" + +#: admin/systems/class_systemManagement.inc:704 +#: admin/systems/class_systemManagement.inc:1810 +#: admin/systems/services/class_goService.inc:122 +#: admin/systems/services/class_goService.inc:150 +#: admin/systems/services/class_goService.inc:183 +#: admin/systems/class_servGeneric.inc:281 +#: admin/systems/class_servGeneric.inc:433 admin/systems/class_termDNS.inc:483 +#: admin/systems/class_termDNS.inc:771 admin/systems/class_termDNS.inc:790 +#: admin/systems/class_termDNS.inc:811 admin/systems/class_termDNS.inc:816 +#: admin/systems/class_termDNS.inc:834 admin/systems/class_termDNS.inc:906 +#: admin/systems/class_componentGeneric.inc:160 +#: admin/systems/class_componentGeneric.inc:301 +msgid "LDAP error" +msgstr "" + +#: admin/systems/class_systemManagement.inc:717 +msgid "Cannot determine object to change password!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:824 +#: admin/systems/class_servGeneric.inc:165 +#: admin/systems/class_servGeneric.inc:453 +msgid "Service infrastructure" +msgstr "" + +#: admin/systems/class_systemManagement.inc:869 +msgid "Permission" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1308 +#: admin/systems/class_systemManagement.inc:1621 +msgid "New terminal" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1310 +#: admin/systems/class_systemManagement.inc:1622 +msgid "New workstation" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1312 +msgid "Unknown device" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1314 +msgid "New Device" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1339 +msgid "Terminal template for" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1355 +msgid "Workstation template for" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1598 +msgid "Template" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1599 +#: admin/systems/class_divListSystem.inc:199 +msgid "Phone" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1600 +#: admin/systems/class_componentGeneric.inc:315 +msgid "Network device" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1601 +#: admin/systems/class_divListSystem.inc:203 +msgid "Printer" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1603 +msgid "Windows workstation" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1605 +#: admin/systems/class_divListSystem.inc:191 +msgid "Workstation" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1606 +#: admin/systems/class_divListSystem.inc:195 +#: admin/systems/class_servGeneric.inc:509 +msgid "Server" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1607 +#: admin/systems/class_divListSystem.inc:187 +msgid "Terminal" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1609 +msgid "Locked workstation" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1610 +msgid "Locked server" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1611 +msgid "Locked terminal" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1613 +msgid "Workstation error" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1614 +msgid "Server error" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1615 +msgid "Terminal error" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1617 +msgid "Workstation busy" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1618 +msgid "Server busy" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1620 +msgid "New system from incoming" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1626 +#: admin/systems/class_divListSystem.inc:214 +msgid "Opsi client" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1826 +#: admin/systems/class_systemManagement.inc:1827 +msgid "Incoming objects" +msgstr "" + +#: admin/systems/class_systemManagement.inc:1832 +msgid "Incoming" +msgstr "" + +#: admin/systems/services/class_goService.inc:44 +#: admin/systems/services/class_goService.inc:79 +msgid "Empty service" +msgstr "" + +#: admin/systems/services/class_goService.inc:237 +msgid "Configuration error" +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:3 +msgid "Adding a new service to the current server" +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:7 +msgid "" +"This dialog allows you to add new services to the currenty edited server " +"object. The box below shows all available but not already used services." +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:13 +msgid "Service to add" +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:20 +msgid "All available services are already in use." +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:28 +msgid "Continue" +msgstr "" + +#: admin/systems/class_divListSystem.inc:63 +#: admin/systems/class_divListSystem.inc:64 +msgid "List of systems" +msgstr "" + +#: admin/systems/class_divListSystem.inc:82 +msgid "Select all" +msgstr "" + +#: admin/systems/class_divListSystem.inc:88 +msgid "Department" +msgstr "" + +#: admin/systems/class_divListSystem.inc:92 +msgid "Release" +msgstr "" + +#: admin/systems/class_divListSystem.inc:95 +#: admin/systems/class_divListSystem.inc:181 +#: admin/systems/class_divListSystemService.inc:51 +msgid "Actions" +msgstr "" + +#: admin/systems/class_divListSystem.inc:101 +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:423 +msgid "servers" +msgstr "" + +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:117 +#: admin/systems/class_divListSystem.inc:128 +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:138 +#, php-format +msgid "Show %s" +msgstr "" + +#: admin/systems/class_divListSystem.inc:106 +msgid "Linux terminals" +msgstr "" + +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:425 +msgid "terminals" +msgstr "" + +#: admin/systems/class_divListSystem.inc:111 +msgid "Linux workstations" +msgstr "" + +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:424 +msgid "workstations" +msgstr "" + +#: admin/systems/class_divListSystem.inc:116 +msgid "MicroSoft Windows based workstations" +msgstr "" + +#: admin/systems/class_divListSystem.inc:117 +msgid "windows based workstations" +msgstr "" + +#: admin/systems/class_divListSystem.inc:121 +#, php-format +msgid "Display objects of type '%s'." +msgstr "" + +#: admin/systems/class_divListSystem.inc:122 +msgid "OPSI installed client" +msgstr "" + +#: admin/systems/class_divListSystem.inc:122 +msgid "Show OPSI based clients" +msgstr "" + +#: admin/systems/class_divListSystem.inc:127 +#: admin/systems/class_divListSystem.inc:128 +msgid "network printers" +msgstr "" + +#: admin/systems/class_divListSystem.inc:132 +msgid "VoIP phones" +msgstr "" + +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:426 +msgid "phones" +msgstr "" + +#: admin/systems/class_divListSystem.inc:137 +#: admin/systems/class_divListSystem.inc:138 +msgid "network devices" +msgstr "" + +#: admin/systems/class_divListSystem.inc:146 +msgid "Display systems matching" +msgstr "" + +#: admin/systems/class_divListSystem.inc:147 +msgid "Display systems of user" +msgstr "" + +#: admin/systems/class_divListSystem.inc:176 +#: admin/systems/class_servGeneric.inc:514 admin/systems/server.tpl:22 +#: admin/systems/class_componentGeneric.inc:319 admin/systems/component.tpl:17 +msgid "Base" +msgstr "" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit department" +msgstr "" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit" +msgstr "" + +#: admin/systems/class_divListSystem.inc:183 +msgid "Create" +msgstr "" + +#: admin/systems/class_divListSystem.inc:207 +msgid "Component" +msgstr "" + +#: admin/systems/class_divListSystem.inc:221 +msgid "Trigger action" +msgstr "" + +#: admin/systems/class_divListSystem.inc:227 +msgid "Schedule action" +msgstr "" + +#: admin/systems/class_divListSystem.inc:234 +msgid "Remove" +msgstr "" + +#: admin/systems/class_divListSystem.inc:237 +msgid "Activate systems" +msgstr "" + +#: admin/systems/class_divListSystem.inc:322 +msgid "edit" +msgstr "" + +#: admin/systems/class_divListSystem.inc:322 +msgid "Edit system" +msgstr "" + +#: admin/systems/class_divListSystem.inc:328 +msgid "delete" +msgstr "" + +#: admin/systems/class_divListSystem.inc:328 +msgid "Delete system" +msgstr "" + +#: admin/systems/class_divListSystem.inc:350 +msgid "Password" +msgstr "" + +#: admin/systems/class_divListSystem.inc:350 admin/systems/password.tpl:38 +msgid "Set password" +msgstr "" + +#: admin/systems/class_divListSystem.inc:359 +msgid "Create CD" +msgstr "" + +#: admin/systems/class_divListSystem.inc:360 +msgid "Create FAI CD" +msgstr "" + +#: admin/systems/class_divListSystem.inc:407 +#: admin/systems/class_divListSystem.inc:408 +#, php-format +msgid "Inherited from %s" +msgstr "" + +#: admin/systems/class_divListSystem.inc:423 +#: admin/systems/class_divListSystem.inc:424 +#: admin/systems/class_divListSystem.inc:425 +#: admin/systems/class_divListSystem.inc:426 +#: admin/systems/class_divListSystem.inc:427 +#: admin/systems/class_divListSystem.inc:428 +#: admin/systems/class_divListSystem.inc:429 +#: admin/systems/class_divListSystem.inc:430 +#: admin/systems/class_divListSystem.inc:431 +#, php-format +msgid "Number of listed '%s'" +msgstr "" + +#: admin/systems/class_divListSystem.inc:427 +msgid "printers" +msgstr "" + +#: admin/systems/class_divListSystem.inc:428 +msgid "network components" +msgstr "" + +#: admin/systems/class_divListSystem.inc:429 +msgid "new devices" +msgstr "" + +#: admin/systems/class_divListSystem.inc:430 +msgid "windows workstations" +msgstr "" + +#: admin/systems/class_divListSystem.inc:431 +msgid "departments" +msgstr "" + +#: admin/systems/class_serverService.inc:27 +msgid "Stop" +msgstr "" + +#: admin/systems/class_serverService.inc:28 +msgid "Start" +msgstr "" + +#: admin/systems/class_serverService.inc:29 +msgid "Restart" +msgstr "" + +#: admin/systems/class_serverService.inc:351 +msgid "Information" +msgstr "" + +#: admin/systems/class_serverService.inc:351 +msgid "Cannot update service status until it has been saved!" +msgstr "" + +#: admin/systems/class_serverService.inc:363 +msgid "Cannot update service status!" +msgstr "" + +#: admin/systems/paste_generic.tpl:4 admin/systems/class_servGeneric.inc:339 +#: admin/systems/class_servGeneric.inc:344 +#: admin/systems/class_servGeneric.inc:355 admin/systems/server.tpl:6 +msgid "Server name" +msgstr "" + +#: admin/systems/paste_generic.tpl:14 +msgid "workstation name" +msgstr "" + +#: admin/systems/paste_generic.tpl:24 +msgid "Terminal name" +msgstr "" + +#: admin/systems/paste_generic.tpl:34 +msgid "Printer name" +msgstr "" + +#: admin/systems/paste_generic.tpl:44 +#: admin/systems/class_componentGeneric.inc:209 +#: admin/systems/class_componentGeneric.inc:214 +#: admin/systems/class_componentGeneric.inc:236 +msgid "Component name" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:38 +#: admin/systems/class_divListSystemService.inc:39 +msgid "Installed services" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:42 +msgid "Add, remove and configure the properties of system services here." +msgstr "" + +#: admin/systems/class_divListSystemService.inc:50 +#: admin/systems/class_servGeneric.inc:512 +#: admin/systems/class_componentGeneric.inc:318 +msgid "Name" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add service" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add new service" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all services" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:67 +#: admin/systems/class_divListSystemService.inc:127 +msgid "Stop service" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:67 +msgid "Stop all services" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:69 +#: admin/systems/class_divListSystemService.inc:133 +msgid "Restart service" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:69 +msgid "Restart all services" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:99 +msgid "Stopped" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:100 +msgid "Started" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:101 +msgid "Restarting" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:102 +msgid "User status" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:121 +msgid "Start service" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:141 +msgid "Edit service" +msgstr "" + +#: admin/systems/class_divListSystemService.inc:149 +msgid "Remove service" +msgstr "" + +#: admin/systems/network.tpl:1 +msgid "Network\tsettings" +msgstr "" + +#: admin/systems/network.tpl:9 +msgid "IP-address" +msgstr "" + +#: admin/systems/network.tpl:30 admin/systems/network.tpl:32 +msgid "Propose ip" +msgstr "" + +#: admin/systems/network.tpl:38 +msgid "MAC-address" +msgstr "" + +#: admin/systems/network.tpl:45 +msgid "Autodetect" +msgstr "" + +#: admin/systems/network.tpl:62 admin/systems/network.tpl:72 +msgid "Enable DHCP for this device" +msgstr "" + +#: admin/systems/network.tpl:72 admin/systems/network.tpl:167 +msgid "not configured" +msgstr "" + +#: admin/systems/network.tpl:80 +msgid "Parent node" +msgstr "" + +#: admin/systems/network.tpl:93 +msgid "Edit settings" +msgstr "" + +#: admin/systems/network.tpl:127 admin/systems/network.tpl:167 +msgid "Enable DNS for this device" +msgstr "" + +#: admin/systems/network.tpl:136 +msgid "Zone" +msgstr "" + +#: admin/systems/network.tpl:146 +msgid "TTL" +msgstr "" + +#: admin/systems/network.tpl:154 +msgid "Dns records" +msgstr "" + +#: admin/systems/main.inc:54 admin/systems/main.inc:56 +msgid "System management" +msgstr "" + +#: admin/systems/password.tpl:3 +msgid "" +"To change the terminal root password use the fields below. The changes take " +"effect during the next reboot. Please memorize the new password, because you " +"wouldn't be able to log in." +msgstr "" + +#: admin/systems/password.tpl:6 +msgid "Leave fields blank for password inheritance from default entries." +msgstr "" + +#: admin/systems/password.tpl:10 +msgid "Changing the password impinges on authentification only." +msgstr "" + +#: admin/systems/password.tpl:15 +msgid "New password" +msgstr "" + +#: admin/systems/password.tpl:21 +msgid "Repeat new password" +msgstr "" + +#: admin/systems/password.tpl:26 +msgid "Password strength" +msgstr "" + +#: admin/systems/class_servGeneric.inc:86 +msgid "Activated" +msgstr "" + +#: admin/systems/class_servGeneric.inc:87 +msgid "Locked" +msgstr "" + +#: admin/systems/class_servGeneric.inc:148 +msgid "server" +msgstr "" + +#: admin/systems/class_servGeneric.inc:169 +msgid "Event error" +msgstr "" + +#: admin/systems/class_servGeneric.inc:170 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Switch off" +msgstr "" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Reboot" +msgstr "" + +#: admin/systems/class_servGeneric.inc:226 +#: admin/systems/class_servGeneric.inc:235 +msgid "System update" +msgstr "" + +#: admin/systems/class_servGeneric.inc:227 +#: admin/systems/class_servGeneric.inc:234 +msgid "Reinstall" +msgstr "" + +#: admin/systems/class_servGeneric.inc:228 +msgid "Rescan hardware" +msgstr "" + +#: admin/systems/class_servGeneric.inc:229 +#: admin/systems/class_servGeneric.inc:236 +msgid "Memory test" +msgstr "" + +#: admin/systems/class_servGeneric.inc:230 +#: admin/systems/class_servGeneric.inc:237 +msgid "Force localboot" +msgstr "" + +#: admin/systems/class_servGeneric.inc:231 +#: admin/systems/class_servGeneric.inc:238 +msgid "System analysis" +msgstr "" + +#: admin/systems/class_servGeneric.inc:233 +msgid "Wake up" +msgstr "" + +#: admin/systems/class_servGeneric.inc:369 +msgid "Software deployment" +msgstr "" + +#: admin/systems/class_servGeneric.inc:370 +msgid "" +"This host is currently installing, if you really want to save it, press 'OK'." +msgstr "" + +#: admin/systems/class_servGeneric.inc:503 +#: admin/systems/class_componentGeneric.inc:309 +msgid "Generic" +msgstr "" + +#: admin/systems/class_servGeneric.inc:504 +msgid "Server generic" +msgstr "" + +#: admin/systems/class_servGeneric.inc:513 admin/systems/server.tpl:14 +#: admin/systems/class_componentGeneric.inc:320 admin/systems/component.tpl:35 +msgid "Description" +msgstr "" + +#: admin/systems/class_servGeneric.inc:516 +msgid "Goto mode" +msgstr "" + +#: admin/systems/class_servGeneric.inc:517 +#: admin/systems/class_componentGeneric.inc:321 +msgid "Root password" +msgstr "" + +#: admin/systems/class_servGeneric.inc:518 +msgid "Action flag" +msgstr "" + +#: admin/systems/server.tpl:26 admin/systems/component.tpl:20 +msgid "Choose subtree to place group in" +msgstr "" + +#: admin/systems/server.tpl:32 admin/systems/component.tpl:25 +msgid "Select a base" +msgstr "" + +#: admin/systems/server.tpl:42 +msgid "Mode" +msgstr "" + +#: admin/systems/server.tpl:45 +msgid "Select terminal mode" +msgstr "" + +#: admin/systems/server.tpl:63 +msgid "Action" +msgstr "" + +#: admin/systems/server.tpl:69 +msgid "" +"System installation in progress, the FAI state cannot be changed right now." +msgstr "" + +#: admin/systems/server.tpl:72 +msgid "Select action to execute for this server" +msgstr "" + +#: admin/systems/server.tpl:80 +msgid "Execute" +msgstr "" + +#: admin/systems/class_termDNS.inc:444 +msgid "Not matching" +msgstr "" + +#: admin/systems/class_termDNS.inc:593 +#, php-format +msgid "IP address %s" +msgstr "" + +#: admin/systems/class_termDNS.inc:602 admin/systems/class_termDNS.inc:614 +#: admin/systems/class_termDNS.inc:616 admin/systems/class_termDNS.inc:982 +#: admin/systems/class_componentGeneric.inc:219 +#: admin/systems/class_componentGeneric.inc:222 +msgid "IP address" +msgstr "" + +#: admin/systems/class_termDNS.inc:607 admin/systems/class_termDNS.inc:624 +#: admin/systems/class_termDNS.inc:626 admin/systems/class_termDNS.inc:983 +msgid "MAC address" +msgstr "" + +#: admin/systems/class_termDNS.inc:641 +#, php-format +msgid "The IP address '%s' is not part of the selected reverse zone '%s'!" +msgstr "" + +#: admin/systems/class_termDNS.inc:653 +#, php-format +msgid "Record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:661 +#, php-format +msgid "Uniq record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:673 +#, php-format +msgid "" +"The IP address '%s' will be added as 'A Record', this will be done " +"automatically, please remove the record." +msgstr "" + +#: admin/systems/class_termDNS.inc:681 +#, php-format +msgid "Only lowercase records are allowed, please check your '%ss'." +msgstr "" + +#: admin/systems/class_termDNS.inc:923 admin/systems/class_termDNS.inc:943 +msgid "Add" +msgstr "" + +#: admin/systems/class_termDNS.inc:937 +msgid "Delete" +msgstr "" + +#: admin/systems/class_termDNS.inc:973 +msgid "DNS" +msgstr "" + +#: admin/systems/class_termDNS.inc:974 +msgid "DNS settings" +msgstr "" + +#: admin/systems/class_termDNS.inc:989 +msgid "DNS configuration" +msgstr "" + +#: admin/systems/class_termDNS.inc:992 +msgid "DHCP configuration" +msgstr "" + +#: admin/systems/class_componentGeneric.inc:77 +msgid "component" +msgstr "" + +#: admin/systems/class_componentGeneric.inc:310 +msgid "Component generic" +msgstr "" + +#: admin/systems/component.tpl:6 +msgid "Device name" +msgstr "" diff --git a/trunk/gosa-plugins/systems/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/systems/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..a868cc375 --- /dev/null +++ b/trunk/gosa-plugins/systems/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,1406 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: admin/systems/remove.tpl:2 +msgid "Warning" +msgstr "Waarschuwing" + +#: admin/systems/remove.tpl:6 +#, fuzzy +msgid "" +"This includes all system and setup informations. Please double check if your " +"really want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Dit omvat alle systeem en configuratie informatie. Verzeker uzelf " +"hiervan, aangezien er geen manier is voor GOsa om deze gegevens terug te " +"halen." + +#: admin/systems/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Het is aan te raden de huidige inhoud van uw LDAP database op te slaan " +"alvorens u doorgaat. Indien u dat gedaan heeft drukt u op 'Verwijderen' om " +"door te gaan of op 'Annuleren' om te annuleren." + +#: admin/systems/class_systemManagement.inc:26 +#: admin/systems/class_divListSystem.inc:88 +msgid "Systems" +msgstr "Systemen" + +#: admin/systems/class_systemManagement.inc:27 +msgid "This does something" +msgstr "Dit doet iets" + +#: admin/systems/class_systemManagement.inc:239 +msgid "Back" +msgstr "Terug" + +#: admin/systems/class_systemManagement.inc:286 +msgid "Creating the image failed. Please see the report below." +msgstr "" + +#: admin/systems/class_systemManagement.inc:295 +#, fuzzy, php-format +msgid "Command '%s', specified for ISO creation doesn't seem to exist." +msgstr "" +"Het commando '%s' dat gespecificeerd is als POSTMODIFY voor module '%s' " +"bestaat niet." + +#: admin/systems/class_systemManagement.inc:344 +#: admin/systems/class_systemManagement.inc:459 +#: admin/systems/class_systemManagement.inc:496 +#: admin/systems/class_systemManagement.inc:504 +#: admin/systems/class_systemManagement.inc:554 +#: admin/systems/class_systemManagement.inc:561 +#: admin/systems/class_systemManagement.inc:576 +#: admin/systems/class_systemManagement.inc:584 +#: admin/systems/class_systemManagement.inc:623 +#: admin/systems/class_systemManagement.inc:717 +#: admin/systems/class_systemManagement.inc:1279 +#: admin/systems/class_serverService.inc:186 +#: admin/systems/class_serverService.inc:236 +#: admin/systems/class_serverService.inc:363 +#: admin/systems/class_termDNS.inc:338 +msgid "Error" +msgstr "Fout" + +#: admin/systems/class_systemManagement.inc:399 +#, fuzzy +msgid "Internal error" +msgstr "Terminal server" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Cannot set mode to 'active'!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:584 +msgid "Editing this type of object is not supported yet!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#: admin/systems/class_systemManagement.inc:943 +#, fuzzy +msgid "Permission error" +msgstr "Rechten" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#, fuzzy +msgid "You have no permission to change this password!" +msgstr "U heeft momenteel geen toestemming om uw wachtwoord te veranderen" + +#: admin/systems/class_systemManagement.inc:623 +#, fuzzy +msgid "" +"The passwords you've entered as 'New password' and 'Repeated password' do " +"not match!" +msgstr "" +"Het nieuwe wachtwoord en het herhaalde wachtwoord komen niet met elkaar " +"overeen!" + +#: admin/systems/class_systemManagement.inc:698 +#, fuzzy +msgid "Password method" +msgstr "Wachtwoord encryptie" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method crypt is missing. Cannot set system password." +msgstr "" + +#: admin/systems/class_systemManagement.inc:704 +#: admin/systems/class_systemManagement.inc:1810 +#: admin/systems/services/class_goService.inc:122 +#: admin/systems/services/class_goService.inc:150 +#: admin/systems/services/class_goService.inc:183 +#: admin/systems/class_servGeneric.inc:281 +#: admin/systems/class_servGeneric.inc:433 admin/systems/class_termDNS.inc:483 +#: admin/systems/class_termDNS.inc:771 admin/systems/class_termDNS.inc:790 +#: admin/systems/class_termDNS.inc:811 admin/systems/class_termDNS.inc:816 +#: admin/systems/class_termDNS.inc:834 admin/systems/class_termDNS.inc:906 +#: admin/systems/class_componentGeneric.inc:160 +#: admin/systems/class_componentGeneric.inc:301 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: admin/systems/class_systemManagement.inc:717 +#, fuzzy +msgid "Cannot determine object to change password!" +msgstr "Kan de objectnaam niet detecteren" + +#: admin/systems/class_systemManagement.inc:824 +#: admin/systems/class_servGeneric.inc:165 +#: admin/systems/class_servGeneric.inc:453 +#, fuzzy +msgid "Service infrastructure" +msgstr "Apparaat naam" + +#: admin/systems/class_systemManagement.inc:869 +#, fuzzy +msgid "Permission" +msgstr "Rechten" + +#: admin/systems/class_systemManagement.inc:1308 +#: admin/systems/class_systemManagement.inc:1621 +msgid "New terminal" +msgstr "Nieuwe terminal" + +#: admin/systems/class_systemManagement.inc:1310 +#: admin/systems/class_systemManagement.inc:1622 +msgid "New workstation" +msgstr "Nieuw werkstation" + +#: admin/systems/class_systemManagement.inc:1312 +#, fuzzy +msgid "Unknown device" +msgstr "Onbekend" + +#: admin/systems/class_systemManagement.inc:1314 +msgid "New Device" +msgstr "Nieuw apparaat" + +#: admin/systems/class_systemManagement.inc:1339 +msgid "Terminal template for" +msgstr "Terminal sjabloon voor" + +#: admin/systems/class_systemManagement.inc:1355 +msgid "Workstation template for" +msgstr "Werkstation sjabloon voor" + +#: admin/systems/class_systemManagement.inc:1598 +msgid "Template" +msgstr "Sjabloon" + +#: admin/systems/class_systemManagement.inc:1599 +#: admin/systems/class_divListSystem.inc:199 +msgid "Phone" +msgstr "Telefoon" + +#: admin/systems/class_systemManagement.inc:1600 +#: admin/systems/class_componentGeneric.inc:315 +#, fuzzy +msgid "Network device" +msgstr "Netwerk apparaten" + +#: admin/systems/class_systemManagement.inc:1601 +#: admin/systems/class_divListSystem.inc:203 +msgid "Printer" +msgstr "Printer" + +#: admin/systems/class_systemManagement.inc:1603 +#, fuzzy +msgid "Windows workstation" +msgstr "Toon werkstations" + +#: admin/systems/class_systemManagement.inc:1605 +#: admin/systems/class_divListSystem.inc:191 +msgid "Workstation" +msgstr "Werkstation" + +#: admin/systems/class_systemManagement.inc:1606 +#: admin/systems/class_divListSystem.inc:195 +#: admin/systems/class_servGeneric.inc:509 +msgid "Server" +msgstr "Server" + +#: admin/systems/class_systemManagement.inc:1607 +#: admin/systems/class_divListSystem.inc:187 +msgid "Terminal" +msgstr "Terminal" + +#: admin/systems/class_systemManagement.inc:1609 +#, fuzzy +msgid "Locked workstation" +msgstr "Nieuw werkstation" + +#: admin/systems/class_systemManagement.inc:1610 +#, fuzzy +msgid "Locked server" +msgstr "Ldap server" + +#: admin/systems/class_systemManagement.inc:1611 +#, fuzzy +msgid "Locked terminal" +msgstr "Nieuwe terminal" + +#: admin/systems/class_systemManagement.inc:1613 +#, fuzzy +msgid "Workstation error" +msgstr "Werkstation" + +#: admin/systems/class_systemManagement.inc:1614 +#, fuzzy +msgid "Server error" +msgstr "Servernaam" + +#: admin/systems/class_systemManagement.inc:1615 +#, fuzzy +msgid "Terminal error" +msgstr "Terminal server" + +#: admin/systems/class_systemManagement.inc:1617 +#, fuzzy +msgid "Workstation busy" +msgstr "Werkstation" + +#: admin/systems/class_systemManagement.inc:1618 +#, fuzzy +msgid "Server busy" +msgstr "Servers" + +#: admin/systems/class_systemManagement.inc:1620 +#, fuzzy +msgid "New system from incoming" +msgstr "Nieuw systeem uit inkomende wachtrij" + +#: admin/systems/class_systemManagement.inc:1626 +#: admin/systems/class_divListSystem.inc:214 +#, fuzzy +msgid "Opsi client" +msgstr "Thin Client" + +#: admin/systems/class_systemManagement.inc:1826 +#: admin/systems/class_systemManagement.inc:1827 +#, fuzzy +msgid "Incoming objects" +msgstr "Lidmaatschap objecten" + +#: admin/systems/class_systemManagement.inc:1832 +#, fuzzy +msgid "Incoming" +msgstr "Icoon" + +#: admin/systems/services/class_goService.inc:44 +#: admin/systems/services/class_goService.inc:79 +#, fuzzy +msgid "Empty service" +msgstr "Print service" + +#: admin/systems/services/class_goService.inc:237 +#, fuzzy +msgid "Configuration error" +msgstr "Configuratie bestand" + +#: admin/systems/services/ServiceAddDialog.tpl:3 +msgid "Adding a new service to the current server" +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:7 +msgid "" +"This dialog allows you to add new services to the currenty edited server " +"object. The box below shows all available but not already used services." +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:13 +#, fuzzy +msgid "Service to add" +msgstr "Selecteer de toe te voegen printer" + +#: admin/systems/services/ServiceAddDialog.tpl:20 +#, fuzzy +msgid "All available services are already in use." +msgstr "De opgegeven apparaat naam wordt al gebruikt." + +#: admin/systems/services/ServiceAddDialog.tpl:28 +msgid "Continue" +msgstr "Doorgaan" + +#: admin/systems/class_divListSystem.inc:63 +#: admin/systems/class_divListSystem.inc:64 +msgid "List of systems" +msgstr "Lijst met systemen" + +#: admin/systems/class_divListSystem.inc:82 +#, fuzzy +msgid "Select all" +msgstr "Selecteer" + +#: admin/systems/class_divListSystem.inc:88 +#, fuzzy +msgid "Department" +msgstr "Systeem / Afdeling" + +#: admin/systems/class_divListSystem.inc:92 +#, fuzzy +msgid "Release" +msgstr "Verwijderen" + +#: admin/systems/class_divListSystem.inc:95 +#: admin/systems/class_divListSystem.inc:181 +#: admin/systems/class_divListSystemService.inc:51 +msgid "Actions" +msgstr "Acties" + +#: admin/systems/class_divListSystem.inc:101 +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:423 +#, fuzzy +msgid "servers" +msgstr "Server" + +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:117 +#: admin/systems/class_divListSystem.inc:128 +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy, php-format +msgid "Show %s" +msgstr "Toon telefoons" + +#: admin/systems/class_divListSystem.inc:106 +#, fuzzy +msgid "Linux terminals" +msgstr "Toon terminals" + +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:425 +#, fuzzy +msgid "terminals" +msgstr "Terminal" + +#: admin/systems/class_divListSystem.inc:111 +#, fuzzy +msgid "Linux workstations" +msgstr "Toon werkstations" + +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:424 +#, fuzzy +msgid "workstations" +msgstr "Werkstation" + +#: admin/systems/class_divListSystem.inc:116 +#, fuzzy +msgid "MicroSoft Windows based workstations" +msgstr "Selecteer om Microsoft Windows werkstations te zien" + +#: admin/systems/class_divListSystem.inc:117 +#, fuzzy +msgid "windows based workstations" +msgstr "Toon Windows werkstations" + +#: admin/systems/class_divListSystem.inc:121 +#, fuzzy, php-format +msgid "Display objects of type '%s'." +msgstr "Selecteer de toe te voegen objecten" + +#: admin/systems/class_divListSystem.inc:122 +#, fuzzy +msgid "OPSI installed client" +msgstr "Geinstalleerde apparaten" + +#: admin/systems/class_divListSystem.inc:122 +msgid "Show OPSI based clients" +msgstr "" + +#: admin/systems/class_divListSystem.inc:127 +#: admin/systems/class_divListSystem.inc:128 +#, fuzzy +msgid "network printers" +msgstr "Toon netwerk printers" + +#: admin/systems/class_divListSystem.inc:132 +#, fuzzy +msgid "VoIP phones" +msgstr "Toon telefoons" + +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:426 +#, fuzzy +msgid "phones" +msgstr "Telefoon" + +#: admin/systems/class_divListSystem.inc:137 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy +msgid "network devices" +msgstr "Netwerk apparaten" + +#: admin/systems/class_divListSystem.inc:146 +msgid "Display systems matching" +msgstr "Toon de overeenkomende systemen" + +#: admin/systems/class_divListSystem.inc:147 +msgid "Display systems of user" +msgstr "Toon systemen van gebruiker" + +#: admin/systems/class_divListSystem.inc:176 +#: admin/systems/class_servGeneric.inc:514 admin/systems/server.tpl:22 +#: admin/systems/class_componentGeneric.inc:319 admin/systems/component.tpl:17 +msgid "Base" +msgstr "Basis" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit department" +msgstr "Verwerk afdeling" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit" +msgstr "Verwerk" + +#: admin/systems/class_divListSystem.inc:183 +msgid "Create" +msgstr "Aanmaken" + +#: admin/systems/class_divListSystem.inc:207 +#, fuzzy +msgid "Component" +msgstr "Nieuw component" + +#: admin/systems/class_divListSystem.inc:221 +msgid "Trigger action" +msgstr "" + +#: admin/systems/class_divListSystem.inc:227 +#, fuzzy +msgid "Schedule action" +msgstr "Geplande bijwerking" + +#: admin/systems/class_divListSystem.inc:234 +msgid "Remove" +msgstr "Verwijderen" + +#: admin/systems/class_divListSystem.inc:237 +#, fuzzy +msgid "Activate systems" +msgstr "Bewerk systeem" + +#: admin/systems/class_divListSystem.inc:322 +msgid "edit" +msgstr "Bewerk" + +#: admin/systems/class_divListSystem.inc:322 +msgid "Edit system" +msgstr "Bewerk systeem" + +#: admin/systems/class_divListSystem.inc:328 +msgid "delete" +msgstr "Verwijder" + +#: admin/systems/class_divListSystem.inc:328 +msgid "Delete system" +msgstr "Verwijder systeem" + +#: admin/systems/class_divListSystem.inc:350 +msgid "Password" +msgstr "Wachtwoord" + +#: admin/systems/class_divListSystem.inc:350 admin/systems/password.tpl:38 +msgid "Set password" +msgstr "Wachtwoord instellen" + +#: admin/systems/class_divListSystem.inc:359 +#, fuzzy +msgid "Create CD" +msgstr "Aanmaken" + +#: admin/systems/class_divListSystem.inc:360 +#, fuzzy +msgid "Create FAI CD" +msgstr "Nieuw FAI object aanmaken" + +#: admin/systems/class_divListSystem.inc:407 +#: admin/systems/class_divListSystem.inc:408 +#, fuzzy, php-format +msgid "Inherited from %s" +msgstr "Objectgroepen" + +#: admin/systems/class_divListSystem.inc:423 +#: admin/systems/class_divListSystem.inc:424 +#: admin/systems/class_divListSystem.inc:425 +#: admin/systems/class_divListSystem.inc:426 +#: admin/systems/class_divListSystem.inc:427 +#: admin/systems/class_divListSystem.inc:428 +#: admin/systems/class_divListSystem.inc:429 +#: admin/systems/class_divListSystem.inc:430 +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Naam van de afdeling" + +#: admin/systems/class_divListSystem.inc:427 +#, fuzzy +msgid "printers" +msgstr "Printer" + +#: admin/systems/class_divListSystem.inc:428 +#, fuzzy +msgid "network components" +msgstr "Ander netwerk component" + +#: admin/systems/class_divListSystem.inc:429 +#, fuzzy +msgid "new devices" +msgstr "Nieuw apparaat" + +#: admin/systems/class_divListSystem.inc:430 +#, fuzzy +msgid "windows workstations" +msgstr "Toon werkstations" + +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy +msgid "departments" +msgstr "Verwerk afdeling" + +#: admin/systems/class_serverService.inc:27 +msgid "Stop" +msgstr "Stop" + +#: admin/systems/class_serverService.inc:28 +#, fuzzy +msgid "Start" +msgstr "Opstarten" + +#: admin/systems/class_serverService.inc:29 +#, fuzzy +msgid "Restart" +msgstr "Opnieuw proberen" + +#: admin/systems/class_serverService.inc:351 +#, fuzzy +msgid "Information" +msgstr "Werkstation" + +#: admin/systems/class_serverService.inc:351 +msgid "Cannot update service status until it has been saved!" +msgstr "" + +#: admin/systems/class_serverService.inc:363 +msgid "Cannot update service status!" +msgstr "" + +#: admin/systems/paste_generic.tpl:4 admin/systems/class_servGeneric.inc:339 +#: admin/systems/class_servGeneric.inc:344 +#: admin/systems/class_servGeneric.inc:355 admin/systems/server.tpl:6 +msgid "Server name" +msgstr "Servernaam" + +#: admin/systems/paste_generic.tpl:14 +#, fuzzy +msgid "workstation name" +msgstr "Werkstation naam" + +#: admin/systems/paste_generic.tpl:24 +msgid "Terminal name" +msgstr "Terminal naam" + +#: admin/systems/paste_generic.tpl:34 +msgid "Printer name" +msgstr "Printernaam" + +#: admin/systems/paste_generic.tpl:44 +#: admin/systems/class_componentGeneric.inc:209 +#: admin/systems/class_componentGeneric.inc:214 +#: admin/systems/class_componentGeneric.inc:236 +#, fuzzy +msgid "Component name" +msgstr "Algemene naam" + +#: admin/systems/class_divListSystemService.inc:38 +#: admin/systems/class_divListSystemService.inc:39 +#, fuzzy +msgid "Installed services" +msgstr "Geinstalleerde apparaten" + +#: admin/systems/class_divListSystemService.inc:42 +#, fuzzy +msgid "Add, remove and configure the properties of system services here." +msgstr "" +"Dit menu maakt het mogelijk om specifieke systemen toe te voegen, bewerken " +"en verwijderen. U kunt alleen systemen toevoegen die al eens opgestart " +"geweest zijn." + +#: admin/systems/class_divListSystemService.inc:50 +#: admin/systems/class_servGeneric.inc:512 +#: admin/systems/class_componentGeneric.inc:318 +msgid "Name" +msgstr "Naam" + +#: admin/systems/class_divListSystemService.inc:62 +#, fuzzy +msgid "Add service" +msgstr "Voeg DNS service toe" + +#: admin/systems/class_divListSystemService.inc:62 +#, fuzzy +msgid "Add new service" +msgstr "Voeg DNS service toe" + +#: admin/systems/class_divListSystemService.inc:65 +#, fuzzy +msgid "Start all" +msgstr "Opstarten" + +#: admin/systems/class_divListSystemService.inc:65 +#, fuzzy +msgid "Start all services" +msgstr "alle services bekijken" + +#: admin/systems/class_divListSystemService.inc:67 +#: admin/systems/class_divListSystemService.inc:127 +#, fuzzy +msgid "Stop service" +msgstr "Audio service" + +#: admin/systems/class_divListSystemService.inc:67 +#, fuzzy +msgid "Stop all services" +msgstr "alle services bekijken" + +#: admin/systems/class_divListSystemService.inc:69 +#: admin/systems/class_divListSystemService.inc:133 +#, fuzzy +msgid "Restart service" +msgstr "Print service" + +#: admin/systems/class_divListSystemService.inc:69 +#, fuzzy +msgid "Restart all services" +msgstr "alle services bekijken" + +#: admin/systems/class_divListSystemService.inc:99 +#, fuzzy +msgid "Stopped" +msgstr "Stop" + +#: admin/systems/class_divListSystemService.inc:100 +#, fuzzy +msgid "Started" +msgstr "Provincie" + +#: admin/systems/class_divListSystemService.inc:101 +#, fuzzy +msgid "Restarting" +msgstr "Doel" + +#: admin/systems/class_divListSystemService.inc:102 +#, fuzzy +msgid "User status" +msgstr "Systeem status" + +#: admin/systems/class_divListSystemService.inc:121 +#, fuzzy +msgid "Start service" +msgstr "Scan service" + +#: admin/systems/class_divListSystemService.inc:141 +#, fuzzy +msgid "Edit service" +msgstr "Print service" + +#: admin/systems/class_divListSystemService.inc:149 +#, fuzzy +msgid "Remove service" +msgstr "Verwijder DNS service" + +#: admin/systems/network.tpl:1 +msgid "Network\tsettings" +msgstr "Netwerk\tinstellingen" + +#: admin/systems/network.tpl:9 +msgid "IP-address" +msgstr "IP adres" + +#: admin/systems/network.tpl:30 admin/systems/network.tpl:32 +#, fuzzy +msgid "Propose ip" +msgstr "Eigenschappen" + +#: admin/systems/network.tpl:38 +msgid "MAC-address" +msgstr "Hardware adres (MAC)" + +#: admin/systems/network.tpl:45 +msgid "Autodetect" +msgstr "Auto detect." + +#: admin/systems/network.tpl:62 admin/systems/network.tpl:72 +#, fuzzy +msgid "Enable DHCP for this device" +msgstr "DNS voor dit apparaat activeren" + +#: admin/systems/network.tpl:72 admin/systems/network.tpl:167 +#, fuzzy +msgid "not configured" +msgstr "niet geconfigureerd" + +#: admin/systems/network.tpl:80 +#, fuzzy +msgid "Parent node" +msgstr "Hoofd/Parent server" + +#: admin/systems/network.tpl:93 +#, fuzzy +msgid "Edit settings" +msgstr "E-mail instellingen" + +#: admin/systems/network.tpl:127 admin/systems/network.tpl:167 +msgid "Enable DNS for this device" +msgstr "DNS voor dit apparaat activeren" + +#: admin/systems/network.tpl:136 +msgid "Zone" +msgstr "Zone" + +#: admin/systems/network.tpl:146 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/network.tpl:154 +msgid "Dns records" +msgstr "DNS records" + +#: admin/systems/main.inc:54 admin/systems/main.inc:56 +msgid "System management" +msgstr "Systeembeheer" + +#: admin/systems/password.tpl:3 +msgid "" +"To change the terminal root password use the fields below. The changes take " +"effect during the next reboot. Please memorize the new password, because you " +"wouldn't be able to log in." +msgstr "" +"Gebruik de velden hieronder om het terminal root wachtwoord te veranderen. " +"De veranderingen worden onmiddelijk doorgevoerd. Onthoud het nieuwe " +"wachtwoord a.u.b. aangezien u niet in kan loggen zonder dit wachtwoord." + +#: admin/systems/password.tpl:6 +msgid "Leave fields blank for password inheritance from default entries." +msgstr "Laat velden leeg voor wachtwoord overerving vanuit standaard waarden." + +#: admin/systems/password.tpl:10 +msgid "Changing the password impinges on authentification only." +msgstr "" +"Het veranderen van het wachtwoord is alleen van toepassing op authenticatie." + +#: admin/systems/password.tpl:15 +msgid "New password" +msgstr "Nieuw wachtwoord" + +#: admin/systems/password.tpl:21 +msgid "Repeat new password" +msgstr "Herhaal het nieuwe wachtwoord" + +#: admin/systems/password.tpl:26 +#, fuzzy +msgid "Password strength" +msgstr "Wachtwoord encryptie" + +#: admin/systems/class_servGeneric.inc:86 +msgid "Activated" +msgstr "Geactiveerd" + +#: admin/systems/class_servGeneric.inc:87 +msgid "Locked" +msgstr "Geblokkeerd" + +#: admin/systems/class_servGeneric.inc:148 +#, fuzzy +msgid "server" +msgstr "Server" + +#: admin/systems/class_servGeneric.inc:169 +msgid "Event error" +msgstr "" + +#: admin/systems/class_servGeneric.inc:170 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Switch off" +msgstr "Uitschakelen" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Reboot" +msgstr "Herstarten" + +#: admin/systems/class_servGeneric.inc:226 +#: admin/systems/class_servGeneric.inc:235 +#, fuzzy +msgid "System update" +msgstr "Systeem / Afdeling" + +#: admin/systems/class_servGeneric.inc:227 +#: admin/systems/class_servGeneric.inc:234 +msgid "Reinstall" +msgstr "Herinstalleer" + +#: admin/systems/class_servGeneric.inc:228 +msgid "Rescan hardware" +msgstr "Hardware opnieuw scannen" + +#: admin/systems/class_servGeneric.inc:229 +#: admin/systems/class_servGeneric.inc:236 +msgid "Memory test" +msgstr "Geheugentest" + +#: admin/systems/class_servGeneric.inc:230 +#: admin/systems/class_servGeneric.inc:237 +msgid "Force localboot" +msgstr "" + +#: admin/systems/class_servGeneric.inc:231 +#: admin/systems/class_servGeneric.inc:238 +msgid "System analysis" +msgstr "Systeem analyse" + +#: admin/systems/class_servGeneric.inc:233 +msgid "Wake up" +msgstr "Aanzetten" + +#: admin/systems/class_servGeneric.inc:369 +#, fuzzy +msgid "Software deployment" +msgstr "Systeembeheer" + +#: admin/systems/class_servGeneric.inc:370 +msgid "" +"This host is currently installing, if you really want to save it, press 'OK'." +msgstr "" + +#: admin/systems/class_servGeneric.inc:503 +#: admin/systems/class_componentGeneric.inc:309 +msgid "Generic" +msgstr "Algemeen" + +#: admin/systems/class_servGeneric.inc:504 +#, fuzzy +msgid "Server generic" +msgstr "Servernaam" + +#: admin/systems/class_servGeneric.inc:513 admin/systems/server.tpl:14 +#: admin/systems/class_componentGeneric.inc:320 admin/systems/component.tpl:35 +msgid "Description" +msgstr "Omschrijving" + +#: admin/systems/class_servGeneric.inc:516 +#, fuzzy +msgid "Goto mode" +msgstr "naar map" + +#: admin/systems/class_servGeneric.inc:517 +#: admin/systems/class_componentGeneric.inc:321 +#, fuzzy +msgid "Root password" +msgstr "Wachtwoord instellen" + +#: admin/systems/class_servGeneric.inc:518 +#, fuzzy +msgid "Action flag" +msgstr "Actie" + +#: admin/systems/server.tpl:26 admin/systems/component.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Selecteer de subtree waaronder deze groep geplaatst wordt" + +#: admin/systems/server.tpl:32 admin/systems/component.tpl:25 +msgid "Select a base" +msgstr "Selecteer een basis" + +#: admin/systems/server.tpl:42 +msgid "Mode" +msgstr "Modus" + +#: admin/systems/server.tpl:45 +msgid "Select terminal mode" +msgstr "Selecteer terminal modus" + +#: admin/systems/server.tpl:63 +msgid "Action" +msgstr "Actie" + +#: admin/systems/server.tpl:69 +msgid "" +"System installation in progress, the FAI state cannot be changed right now." +msgstr "" + +#: admin/systems/server.tpl:72 +msgid "Select action to execute for this server" +msgstr "Selecteer de voor deze server uit te voeren actie" + +#: admin/systems/server.tpl:80 +msgid "Execute" +msgstr "Commando" + +#: admin/systems/class_termDNS.inc:444 +#, fuzzy +msgid "Not matching" +msgstr "Niet actief" + +#: admin/systems/class_termDNS.inc:593 +#, fuzzy, php-format +msgid "IP address %s" +msgstr "IP adres" + +#: admin/systems/class_termDNS.inc:602 admin/systems/class_termDNS.inc:614 +#: admin/systems/class_termDNS.inc:616 admin/systems/class_termDNS.inc:982 +#: admin/systems/class_componentGeneric.inc:219 +#: admin/systems/class_componentGeneric.inc:222 +#, fuzzy +msgid "IP address" +msgstr "IP adres" + +#: admin/systems/class_termDNS.inc:607 admin/systems/class_termDNS.inc:624 +#: admin/systems/class_termDNS.inc:626 admin/systems/class_termDNS.inc:983 +msgid "MAC address" +msgstr "Hardware adres (MAC)" + +#: admin/systems/class_termDNS.inc:641 +#, php-format +msgid "The IP address '%s' is not part of the selected reverse zone '%s'!" +msgstr "" + +#: admin/systems/class_termDNS.inc:653 +#, php-format +msgid "Record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:661 +#, php-format +msgid "Uniq record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:673 +#, fuzzy, php-format +msgid "" +"The IP address '%s' will be added as 'A Record', this will be done " +"automatically, please remove the record." +msgstr "" +"Het apparaat IP '%s' is toegevoegd als 'A Record'. Dit wordt automatisch " +"afgehandeld door GOsa. Verwijder het record a.u.b." + +#: admin/systems/class_termDNS.inc:681 +#, fuzzy, php-format +msgid "Only lowercase records are allowed, please check your '%ss'." +msgstr "Hoofdletters zijn niet toegestaan. Controleer uw '%ss'" + +#: admin/systems/class_termDNS.inc:923 admin/systems/class_termDNS.inc:943 +msgid "Add" +msgstr "Toevoegen" + +#: admin/systems/class_termDNS.inc:937 +msgid "Delete" +msgstr "Verwijderen" + +#: admin/systems/class_termDNS.inc:973 +msgid "DNS" +msgstr "" + +#: admin/systems/class_termDNS.inc:974 +#, fuzzy +msgid "DNS settings" +msgstr "Samba Instellingen" + +#: admin/systems/class_termDNS.inc:989 +#, fuzzy +msgid "DNS configuration" +msgstr "FAX database" + +#: admin/systems/class_termDNS.inc:992 +#, fuzzy +msgid "DHCP configuration" +msgstr "FAX database" + +#: admin/systems/class_componentGeneric.inc:77 +#, fuzzy +msgid "component" +msgstr "Nieuw component" + +#: admin/systems/class_componentGeneric.inc:310 +#, fuzzy +msgid "Component generic" +msgstr "Nieuw component" + +#: admin/systems/component.tpl:6 +msgid "Device name" +msgstr "Apparaat naam" + +#, fuzzy +#~ msgid "Win workstation" +#~ msgstr "Werkstation" + +#~ msgid "Cups Server" +#~ msgstr "Cups server" + +#~ msgid "Log Db" +#~ msgstr "Log DB" + +#~ msgid "Syslog Server" +#~ msgstr "Syslog server" + +#~ msgid "Mail Server" +#~ msgstr "Mail server" + +#~ msgid "Imap Server" +#~ msgstr "Imap server" + +#~ msgid "Nfs Server" +#~ msgstr "Nfs server" + +#~ msgid "Kerberos Server" +#~ msgstr "Kerberos server" + +#~ msgid "Asterisk Server" +#~ msgstr "Asterisk server" + +#~ msgid "Fax Server" +#~ msgstr "Fax server" + +#~ msgid "Ldap Server" +#~ msgstr "Ldap server" + +#, fuzzy +#~ msgid "DNS records" +#~ msgstr "DNS records" + +#~ msgid "Zone name" +#~ msgstr "Zone-naam" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopieer" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "knippen" + +#~ msgid "Paste" +#~ msgstr "Plakken" + +#~ msgid "cut" +#~ msgstr "knippen" + +#~ msgid "Cut this entry" +#~ msgstr "Deze invoer knippen" + +#~ msgid "copy" +#~ msgstr "kopieer" + +#~ msgid "Copy this entry" +#~ msgstr "Deze invoer kopieren" + +#, fuzzy +#~ msgid "Set root password" +#~ msgstr "Stel root wachtwoord in" + +#~ msgid "Choose a base" +#~ msgstr "Selecteer een basis" + +#~ msgid "Go to root department" +#~ msgstr "Ga naar basis afdelingen" + +#~ msgid "Root" +#~ msgstr "Basis" + +#~ msgid "Go up one department" +#~ msgstr "Ga een afdeling omhoog" + +#~ msgid "Up" +#~ msgstr "Omhoog" + +#~ msgid "Go to users department" +#~ msgstr "Ga naar gebruikers afdeling" + +#~ msgid "Home" +#~ msgstr "Home" + +#~ msgid "Reload list" +#~ msgstr "Lijst herladen" + +#~ msgid "" +#~ "Step in the prefered tree and click save to use the current subtree as " +#~ "base. Or click the image at the end of each entry." +#~ msgstr "" +#~ "Stap in de gewenste tree en klik opslaan om de huidige subtree als basis " +#~ "te gebruiken of klik op het plaatje aan het einde van iedere regel." + +#~ msgid "Use" +#~ msgstr "Gebruik" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Filter entries with this syntax" +#~ msgstr "Filter regels met deze syntax" + +#~ msgid "Select this base" +#~ msgstr "Selecteer deze basis" + +#~ msgid "Phone name" +#~ msgstr "Telefoonnaam" + +#~ msgid "Workstation is installing" +#~ msgstr "Werkstation wordt momenteel geinstalleerd" + +#~ msgid "Workstation is waiting for action" +#~ msgstr "Werkstation wacht op gebruikersactie" + +#~ msgid "Workstation installation failed" +#~ msgstr "Werkstation installatie mislukt" + +#~ msgid "Server is installing" +#~ msgstr "Server wordt momenteel geinstalleerd" + +#~ msgid "Server is waiting for action" +#~ msgstr "Server wacht op gebruikersactie" + +#~ msgid "Server installation failed" +#~ msgstr "Server installatie mislukt" + +#~ msgid "Select to search within subtrees" +#~ msgstr "Selecteer om binnen subonderdelen te zoeken" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Zoek binnen subtree" + +#, fuzzy +#~ msgid "The specified method '%s' can't executed for services." +#~ msgstr "Het opgegeven ppd bestand '%s' kan niet geopend worden om te lezen." + +#~ msgid "You can't edit this object type yet!" +#~ msgstr "U kunt dit object type nog niet bewerken!" + +#~ msgid "Save" +#~ msgstr "Opslaan" + +#, fuzzy +#~ msgid "You are not allowed to create a new object of this type." +#~ msgstr "U heeft geen toestemming deze objectgroep te verwijderen!" + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "U staat op het punt de invoer %s te verwijderen." + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "U staat op het punt de invoer %s te verwijderen." + +#~ msgid "You are not allowed to delete this component!" +#~ msgstr "U heeft geen toestemming om dit component te verwijderen!" + +#~ msgid "You're about to delete all information about the component at '%s'." +#~ msgstr "" +#~ "U staat op het punt alle informatie over dit component op '%s' te " +#~ "verwijderen." + +#~ msgid "Apply" +#~ msgstr "Toepassen" + +#~ msgid "Winstation" +#~ msgstr "Windows werkstation" + +#~ msgid "Network Device" +#~ msgstr "Netwerk apparaat" + +#~ msgid "New Terminal" +#~ msgstr "Nieuwe terminal" + +#~ msgid "New Workstation" +#~ msgstr "Nieuw werkstation" + +#~ msgid "" +#~ "This menu allows you to add, remove and change the properties of specific " +#~ "systems. You can only add systems which have already been started once." +#~ msgstr "" +#~ "Dit menu maakt het mogelijk om specifieke systemen toe te voegen, " +#~ "bewerken en verwijderen. U kunt alleen systemen toevoegen die al eens " +#~ "opgestart geweest zijn." + +#~ msgid "Select to see servers" +#~ msgstr "Selecteer om servers te zien" + +#~ msgid "Show servers" +#~ msgstr "Toon servers" + +#~ msgid "Select to see Linux terminals" +#~ msgstr "Selecteer om Linux terminals te zien" + +#~ msgid "Select to see Linux workstations" +#~ msgstr "Selecteer om Linux werkstations te zien" + +#~ msgid "Select to see network printers" +#~ msgstr "Selecteer om netwerk printers te zien" + +#~ msgid "Select to see VOIP phones" +#~ msgstr "Selecteer om VOIP telefoons te zien" + +#~ msgid "Select to see network devices" +#~ msgstr "Selecteer om netwerk apparaten te zien" + +#~ msgid "Show network devices" +#~ msgstr "Toon netwerk apparaten" + +#, fuzzy +#~ msgid "Number of listed servers" +#~ msgstr "Bestandserver" + +#, fuzzy +#~ msgid "Number of listed workstations" +#~ msgstr "Selecteer om werkstations te zien" + +#, fuzzy +#~ msgid "Number of listed terminals" +#~ msgstr "Selecteer om terminals te zien" + +#, fuzzy +#~ msgid "Number of listed printers" +#~ msgstr "Naam van de afdeling" + +#, fuzzy +#~ msgid "Number of listed new devices" +#~ msgstr "Selecteer om netwerk apparaten te zien" + +#, fuzzy +#~ msgid "Number of listed windows workstations" +#~ msgstr "Toon Windows werkstations" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Naam van de afdeling" + +#~ msgid "This 'dn' has no server features." +#~ msgstr "Deze 'dn' heeft geen server mogelijkheden." + +#~ msgid "This 'dn' has no network features." +#~ msgstr "Deze 'dn' heeft geen netwerk mogelijkheden." + +#, fuzzy +#~ msgid "Removing dhcp entry for this object failed." +#~ msgstr "Het verwijderen van DNS regels is mislukt" + +#, fuzzy +#~ msgid "Removing old dhcp entry failed." +#~ msgstr "Het verwijderen van de Kolab Host regel is mislukt" + +#, fuzzy +#~ msgid "Modifying dhcp entry failed." +#~ msgstr "Het verwijderen van de Kolab Host regel is mislukt" + +#, fuzzy +#~ msgid "Saving of terminal/dns account with dn '%s' failed." +#~ msgstr "Het opslaan van het E-mail account is mislukt" + +#~ msgid "Instant update" +#~ msgstr "Onmiddelijk bijwerken" + +#~ msgid "Scheduled update" +#~ msgstr "Geplande bijwerking" + +#, fuzzy +#~ msgid "Removing of system server/generic with dn '%s' failed." +#~ msgstr "Het verwijder van telefoonmacro referenties is mislukt" + +#, fuzzy +#~ msgid "Removing of server services/" +#~ msgstr "Kerberos server" + +#, fuzzy +#~ msgid "Saving of server services/" +#~ msgstr "Sieve service" + +#, fuzzy +#~ msgid "Set status flag for server services/" +#~ msgstr "Het opslaan van het server service object is mislukt" + +#, fuzzy +#~ msgid "Removing of system component/generic with dn '%s' failed." +#~ msgstr "Het verwijderen van een algemeen component is mislukt" + +#~ msgid "" +#~ "Can't execute specified AUTO_NETWORK_HOOK '%s'. Please check your gosa." +#~ "conf." +#~ msgstr "" +#~ "Kan de opgegeven AUTO_NETWORK_HOOK '%s' niet uitvoeren. Controleer uw " +#~ "gosa.conf a.u.b." + +#, fuzzy +#~ msgid "The specified IP address is already in use." +#~ msgstr "De opgegeven naam wordt al gebruikt." + +#, fuzzy +#~ msgid "" +#~ "The specified MAC address '%s' for this system '%s' is already in use." +#~ msgstr "De opgegeven naam wordt al gebruikt." + +#~ msgid "The required field 'IP-address' is not set." +#~ msgstr "Het vereiste veld 'IP adres' is leeg." + +#~ msgid "Wrong IP format in field IP-address." +#~ msgstr "Verkeerd IP formaat in het veld IP adres" + +#~ msgid "The required field 'MAC-address' is not set." +#~ msgstr "Het vereiste veld 'Hardware adres (MAC)' is leeg." + +#~ msgid "" +#~ "The given macaddress is invalid. There must be 6 2byte segments seperated " +#~ "by ':'." +#~ msgstr "" +#~ "Het opgegeven mac-adres is ongeldig. Deze moet bestaan uit 6 segmenten " +#~ "van 2 bytes, gescheiden door ':'" + +#~ msgid "Found duplicate value for record type '%s'." +#~ msgstr "Er is een dubbele waarde gevonden voor record type '%s'." + +#~ msgid "Found more than one entry for the uniqe record type '%s'." +#~ msgstr "Meer dan een regel gevonden voor uniek record type '%s'." + +#~ msgid "No ACTIONCMD definition found in your gosa.conf" +#~ msgstr "Es is geen ACTIONCMD definitie in uw gosa.conf gedefiniëerd" + +#~ msgid "Execution of '%s' failed!" +#~ msgstr "Uitvoer van '%s' is mislukt!" + +#~ msgid "The required field 'Server name' is not set." +#~ msgstr "Het vereiste veld 'Servernaam' is leeg." + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "Geef a.u.b. een geldige naam op voor deze bijlage." + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "Er is al een invoer '%s' onder de basis die u gekozen heeft" + +#, fuzzy +#~ msgid "" +#~ "Command '%s', specified as ACTION_HOOK for plugin '%s' doesn't seem to " +#~ "exist." +#~ msgstr "" +#~ "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%" +#~ "s' bestaat niet." + +#~ msgid "The required field 'Component name' is not set." +#~ msgstr "Het vereiste veld 'Component naam' is leeg." + +#~ msgid "The required field IP address is empty." +#~ msgstr "Het vereiste veld IP adres is leeg." + +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "Het veld IP adres bevat een ongeldig adres." diff --git a/trunk/gosa-plugins/systems/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/systems/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..b61913152 --- /dev/null +++ b/trunk/gosa-plugins/systems/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,1368 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: admin/systems/remove.tpl:2 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: admin/systems/remove.tpl:6 +msgid "" +"This includes all system and setup informations. Please double check if your " +"really want to do this since there is no way for GOsa to get your data back." +msgstr "" +"To zawiera cały system i informacje instalacyjne. Proszę upewnić się, że " +"faktycznie chcesz wykonać tą operację. Nie ma możliwości odwrócenia tego " +"procesu." + +#: admin/systems/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Przed wykonaniem tej operacji zaleca się wykonanie kopii bezpieczeństwa " +"drzewa LDAP. Naciśnij 'Usuń' aby kontynuować, lub 'Anuluj' aby przerwać." + +#: admin/systems/class_systemManagement.inc:26 +#: admin/systems/class_divListSystem.inc:88 +msgid "Systems" +msgstr "Systemy" + +#: admin/systems/class_systemManagement.inc:27 +msgid "This does something" +msgstr "To robi coś" + +#: admin/systems/class_systemManagement.inc:239 +msgid "Back" +msgstr "Wróć" + +#: admin/systems/class_systemManagement.inc:286 +msgid "Creating the image failed. Please see the report below." +msgstr "" + +#: admin/systems/class_systemManagement.inc:295 +#, fuzzy, php-format +msgid "Command '%s', specified for ISO creation doesn't seem to exist." +msgstr "Polecenie '%s', podane jako POSTMODIFY dla dodatku '%s' nie istnieje." + +#: admin/systems/class_systemManagement.inc:344 +#: admin/systems/class_systemManagement.inc:459 +#: admin/systems/class_systemManagement.inc:496 +#: admin/systems/class_systemManagement.inc:504 +#: admin/systems/class_systemManagement.inc:554 +#: admin/systems/class_systemManagement.inc:561 +#: admin/systems/class_systemManagement.inc:576 +#: admin/systems/class_systemManagement.inc:584 +#: admin/systems/class_systemManagement.inc:623 +#: admin/systems/class_systemManagement.inc:717 +#: admin/systems/class_systemManagement.inc:1279 +#: admin/systems/class_serverService.inc:186 +#: admin/systems/class_serverService.inc:236 +#: admin/systems/class_serverService.inc:363 +#: admin/systems/class_termDNS.inc:338 +msgid "Error" +msgstr "Błąd" + +#: admin/systems/class_systemManagement.inc:399 +#, fuzzy +msgid "Internal error" +msgstr "Terminal Server" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Cannot set mode to 'active'!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:584 +msgid "Editing this type of object is not supported yet!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#: admin/systems/class_systemManagement.inc:943 +#, fuzzy +msgid "Permission error" +msgstr "Uprawnienia" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#, fuzzy +msgid "You have no permission to change this password!" +msgstr "Brak uprawnień do zmiany własnego hasła w tym momencie" + +#: admin/systems/class_systemManagement.inc:623 +#, fuzzy +msgid "" +"The passwords you've entered as 'New password' and 'Repeated password' do " +"not match!" +msgstr "Hasła podane jako nowe i powtórzone nie zgadzają się!" + +#: admin/systems/class_systemManagement.inc:698 +#, fuzzy +msgid "Password method" +msgstr "Przechowywanie hasła" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method crypt is missing. Cannot set system password." +msgstr "" + +#: admin/systems/class_systemManagement.inc:704 +#: admin/systems/class_systemManagement.inc:1810 +#: admin/systems/services/class_goService.inc:122 +#: admin/systems/services/class_goService.inc:150 +#: admin/systems/services/class_goService.inc:183 +#: admin/systems/class_servGeneric.inc:281 +#: admin/systems/class_servGeneric.inc:433 admin/systems/class_termDNS.inc:483 +#: admin/systems/class_termDNS.inc:771 admin/systems/class_termDNS.inc:790 +#: admin/systems/class_termDNS.inc:811 admin/systems/class_termDNS.inc:816 +#: admin/systems/class_termDNS.inc:834 admin/systems/class_termDNS.inc:906 +#: admin/systems/class_componentGeneric.inc:160 +#: admin/systems/class_componentGeneric.inc:301 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: admin/systems/class_systemManagement.inc:717 +#, fuzzy +msgid "Cannot determine object to change password!" +msgstr "Nie można wykryć nazwy obiektu." + +#: admin/systems/class_systemManagement.inc:824 +#: admin/systems/class_servGeneric.inc:165 +#: admin/systems/class_servGeneric.inc:453 +#, fuzzy +msgid "Service infrastructure" +msgstr "Nazwa usługi" + +#: admin/systems/class_systemManagement.inc:869 +#, fuzzy +msgid "Permission" +msgstr "Uprawnienia" + +#: admin/systems/class_systemManagement.inc:1308 +#: admin/systems/class_systemManagement.inc:1621 +msgid "New terminal" +msgstr "Nowy terminal" + +#: admin/systems/class_systemManagement.inc:1310 +#: admin/systems/class_systemManagement.inc:1622 +msgid "New workstation" +msgstr "Nowa stacja robocza" + +#: admin/systems/class_systemManagement.inc:1312 +#, fuzzy +msgid "Unknown device" +msgstr "Nieznane" + +#: admin/systems/class_systemManagement.inc:1314 +msgid "New Device" +msgstr "Nowe urządzenie" + +#: admin/systems/class_systemManagement.inc:1339 +msgid "Terminal template for" +msgstr "Szablon terminala dla" + +#: admin/systems/class_systemManagement.inc:1355 +msgid "Workstation template for" +msgstr "Szablon stacji roboczej dla" + +#: admin/systems/class_systemManagement.inc:1598 +msgid "Template" +msgstr "Szablon" + +#: admin/systems/class_systemManagement.inc:1599 +#: admin/systems/class_divListSystem.inc:199 +msgid "Phone" +msgstr "Telefon" + +#: admin/systems/class_systemManagement.inc:1600 +#: admin/systems/class_componentGeneric.inc:315 +msgid "Network device" +msgstr "Urządzenia sieciowe" + +#: admin/systems/class_systemManagement.inc:1601 +#: admin/systems/class_divListSystem.inc:203 +msgid "Printer" +msgstr "Drukarka" + +#: admin/systems/class_systemManagement.inc:1603 +#, fuzzy +msgid "Windows workstation" +msgstr "Pokaż stacje robocze" + +#: admin/systems/class_systemManagement.inc:1605 +#: admin/systems/class_divListSystem.inc:191 +msgid "Workstation" +msgstr "Stacja robocza" + +#: admin/systems/class_systemManagement.inc:1606 +#: admin/systems/class_divListSystem.inc:195 +#: admin/systems/class_servGeneric.inc:509 +msgid "Server" +msgstr "Serwer" + +#: admin/systems/class_systemManagement.inc:1607 +#: admin/systems/class_divListSystem.inc:187 +msgid "Terminal" +msgstr "Terminal" + +#: admin/systems/class_systemManagement.inc:1609 +#, fuzzy +msgid "Locked workstation" +msgstr "Nowa stacja robocza" + +#: admin/systems/class_systemManagement.inc:1610 +#, fuzzy +msgid "Locked server" +msgstr "Serwer Ldap" + +#: admin/systems/class_systemManagement.inc:1611 +#, fuzzy +msgid "Locked terminal" +msgstr "Nowy terminal" + +#: admin/systems/class_systemManagement.inc:1613 +#, fuzzy +msgid "Workstation error" +msgstr "Stacja robocza" + +#: admin/systems/class_systemManagement.inc:1614 +#, fuzzy +msgid "Server error" +msgstr "Nazwa serwera" + +#: admin/systems/class_systemManagement.inc:1615 +#, fuzzy +msgid "Terminal error" +msgstr "Terminal Server" + +#: admin/systems/class_systemManagement.inc:1617 +#, fuzzy +msgid "Workstation busy" +msgstr "Stacja robocza" + +#: admin/systems/class_systemManagement.inc:1618 +#, fuzzy +msgid "Server busy" +msgstr "Serwery" + +#: admin/systems/class_systemManagement.inc:1620 +#, fuzzy +msgid "New system from incoming" +msgstr "Nowy system dla nadchodzących" + +#: admin/systems/class_systemManagement.inc:1626 +#: admin/systems/class_divListSystem.inc:214 +#, fuzzy +msgid "Opsi client" +msgstr "Cienki klient" + +#: admin/systems/class_systemManagement.inc:1826 +#: admin/systems/class_systemManagement.inc:1827 +#, fuzzy +msgid "Incoming objects" +msgstr "Przenieś obiekty" + +#: admin/systems/class_systemManagement.inc:1832 +#, fuzzy +msgid "Incoming" +msgstr "Ikona" + +#: admin/systems/services/class_goService.inc:44 +#: admin/systems/services/class_goService.inc:79 +#, fuzzy +msgid "Empty service" +msgstr "Edytuj usługę" + +#: admin/systems/services/class_goService.inc:237 +#, fuzzy +msgid "Configuration error" +msgstr "Plik konfiguracyjny" + +#: admin/systems/services/ServiceAddDialog.tpl:3 +msgid "Adding a new service to the current server" +msgstr "Dodawania nowej usługi do tego serwera." + +#: admin/systems/services/ServiceAddDialog.tpl:7 +msgid "" +"This dialog allows you to add new services to the currenty edited server " +"object. The box below shows all available but not already used services." +msgstr "" +"Ten dialog umożliwia dodawanie nowych usługo do obecnie edytowaniego " +"serwera. Obszar poniżej pokazuje wszystkie dostępne lecz jescze nieużyte " +"usługi." + +#: admin/systems/services/ServiceAddDialog.tpl:13 +msgid "Service to add" +msgstr "Usługa dla dodania" + +#: admin/systems/services/ServiceAddDialog.tpl:20 +msgid "All available services are already in use." +msgstr "Wszystkie dostępne usługi są już w użyciu." + +#: admin/systems/services/ServiceAddDialog.tpl:28 +msgid "Continue" +msgstr "Kontynuuj" + +#: admin/systems/class_divListSystem.inc:63 +#: admin/systems/class_divListSystem.inc:64 +msgid "List of systems" +msgstr "Lista systemów" + +#: admin/systems/class_divListSystem.inc:82 +#, fuzzy +msgid "Select all" +msgstr "Wybierz" + +#: admin/systems/class_divListSystem.inc:88 +#, fuzzy +msgid "Department" +msgstr "System / Departament" + +#: admin/systems/class_divListSystem.inc:92 +#, fuzzy +msgid "Release" +msgstr "Usuń" + +#: admin/systems/class_divListSystem.inc:95 +#: admin/systems/class_divListSystem.inc:181 +#: admin/systems/class_divListSystemService.inc:51 +msgid "Actions" +msgstr "Akcje" + +#: admin/systems/class_divListSystem.inc:101 +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:423 +#, fuzzy +msgid "servers" +msgstr "Serwer" + +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:117 +#: admin/systems/class_divListSystem.inc:128 +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy, php-format +msgid "Show %s" +msgstr "Pokaż telefony" + +#: admin/systems/class_divListSystem.inc:106 +#, fuzzy +msgid "Linux terminals" +msgstr "Pokaż terminale" + +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:425 +#, fuzzy +msgid "terminals" +msgstr "Terminal" + +#: admin/systems/class_divListSystem.inc:111 +#, fuzzy +msgid "Linux workstations" +msgstr "Pokaż stacje robocze" + +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:424 +#, fuzzy +msgid "workstations" +msgstr "Stacja robocza" + +#: admin/systems/class_divListSystem.inc:116 +#, fuzzy +msgid "MicroSoft Windows based workstations" +msgstr "Zaznacz aby zobaczyć stacje robocze windows" + +#: admin/systems/class_divListSystem.inc:117 +#, fuzzy +msgid "windows based workstations" +msgstr "Pokaż stacje robocze windows" + +#: admin/systems/class_divListSystem.inc:121 +#, fuzzy, php-format +msgid "Display objects of type '%s'." +msgstr "Wybierz obiekty do dodania" + +#: admin/systems/class_divListSystem.inc:122 +#, fuzzy +msgid "OPSI installed client" +msgstr "Zainstalowane usługi" + +#: admin/systems/class_divListSystem.inc:122 +msgid "Show OPSI based clients" +msgstr "" + +#: admin/systems/class_divListSystem.inc:127 +#: admin/systems/class_divListSystem.inc:128 +#, fuzzy +msgid "network printers" +msgstr "Pokaż drukarki sieciowe" + +#: admin/systems/class_divListSystem.inc:132 +#, fuzzy +msgid "VoIP phones" +msgstr "Pokaż telefony" + +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:426 +#, fuzzy +msgid "phones" +msgstr "Telefon" + +#: admin/systems/class_divListSystem.inc:137 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy +msgid "network devices" +msgstr "Urządzenia sieciowe" + +#: admin/systems/class_divListSystem.inc:146 +msgid "Display systems matching" +msgstr "Wyświetl systemy pasujące" + +#: admin/systems/class_divListSystem.inc:147 +msgid "Display systems of user" +msgstr "Wyświetl systemy użytkownika" + +#: admin/systems/class_divListSystem.inc:176 +#: admin/systems/class_servGeneric.inc:514 admin/systems/server.tpl:22 +#: admin/systems/class_componentGeneric.inc:319 admin/systems/component.tpl:17 +msgid "Base" +msgstr "Kontener" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit department" +msgstr "Zatwierdź departament" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit" +msgstr "Wyślij" + +#: admin/systems/class_divListSystem.inc:183 +msgid "Create" +msgstr "Utwórz" + +#: admin/systems/class_divListSystem.inc:207 +#, fuzzy +msgid "Component" +msgstr "Nowy komponent" + +#: admin/systems/class_divListSystem.inc:221 +msgid "Trigger action" +msgstr "" + +#: admin/systems/class_divListSystem.inc:227 +#, fuzzy +msgid "Schedule action" +msgstr "Zaplanowana aktualizacja" + +#: admin/systems/class_divListSystem.inc:234 +msgid "Remove" +msgstr "Usuń" + +#: admin/systems/class_divListSystem.inc:237 +#, fuzzy +msgid "Activate systems" +msgstr "Edytuj system" + +#: admin/systems/class_divListSystem.inc:322 +msgid "edit" +msgstr "edytuj" + +#: admin/systems/class_divListSystem.inc:322 +msgid "Edit system" +msgstr "Edytuj system" + +#: admin/systems/class_divListSystem.inc:328 +msgid "delete" +msgstr "Usuń" + +#: admin/systems/class_divListSystem.inc:328 +msgid "Delete system" +msgstr "Usuń system" + +#: admin/systems/class_divListSystem.inc:350 +msgid "Password" +msgstr "Hasło" + +#: admin/systems/class_divListSystem.inc:350 admin/systems/password.tpl:38 +msgid "Set password" +msgstr "Ustaw hasło" + +#: admin/systems/class_divListSystem.inc:359 +#, fuzzy +msgid "Create CD" +msgstr "Utwórz" + +#: admin/systems/class_divListSystem.inc:360 +#, fuzzy +msgid "Create FAI CD" +msgstr "Utwórz nowy obiekt FAI" + +#: admin/systems/class_divListSystem.inc:407 +#: admin/systems/class_divListSystem.inc:408 +#, fuzzy, php-format +msgid "Inherited from %s" +msgstr "Grupy obiektów" + +#: admin/systems/class_divListSystem.inc:423 +#: admin/systems/class_divListSystem.inc:424 +#: admin/systems/class_divListSystem.inc:425 +#: admin/systems/class_divListSystem.inc:426 +#: admin/systems/class_divListSystem.inc:427 +#: admin/systems/class_divListSystem.inc:428 +#: admin/systems/class_divListSystem.inc:429 +#: admin/systems/class_divListSystem.inc:430 +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Nazwa departamentu" + +#: admin/systems/class_divListSystem.inc:427 +#, fuzzy +msgid "printers" +msgstr "Drukarka" + +#: admin/systems/class_divListSystem.inc:428 +#, fuzzy +msgid "network components" +msgstr "Inny element sieciowy" + +#: admin/systems/class_divListSystem.inc:429 +#, fuzzy +msgid "new devices" +msgstr "Nowe urządzenie" + +#: admin/systems/class_divListSystem.inc:430 +#, fuzzy +msgid "windows workstations" +msgstr "Pokaż stacje robocze" + +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy +msgid "departments" +msgstr "Zatwierdź departament" + +#: admin/systems/class_serverService.inc:27 +msgid "Stop" +msgstr "Zatrzymaj" + +#: admin/systems/class_serverService.inc:28 +msgid "Start" +msgstr "Start" + +#: admin/systems/class_serverService.inc:29 +msgid "Restart" +msgstr "Restart" + +#: admin/systems/class_serverService.inc:351 +#, fuzzy +msgid "Information" +msgstr "Stacja robocza" + +#: admin/systems/class_serverService.inc:351 +#, fuzzy +msgid "Cannot update service status until it has been saved!" +msgstr "Nie można ustawić statusu podczas gdy nie zapisano tego serwera." + +#: admin/systems/class_serverService.inc:363 +msgid "Cannot update service status!" +msgstr "" + +#: admin/systems/paste_generic.tpl:4 admin/systems/class_servGeneric.inc:339 +#: admin/systems/class_servGeneric.inc:344 +#: admin/systems/class_servGeneric.inc:355 admin/systems/server.tpl:6 +msgid "Server name" +msgstr "Nazwa serwera" + +#: admin/systems/paste_generic.tpl:14 +#, fuzzy +msgid "workstation name" +msgstr "Nazwa stacji roboczej" + +#: admin/systems/paste_generic.tpl:24 +msgid "Terminal name" +msgstr "Nazwa terminala" + +#: admin/systems/paste_generic.tpl:34 +msgid "Printer name" +msgstr "nazwa drukarki" + +#: admin/systems/paste_generic.tpl:44 +#: admin/systems/class_componentGeneric.inc:209 +#: admin/systems/class_componentGeneric.inc:214 +#: admin/systems/class_componentGeneric.inc:236 +#, fuzzy +msgid "Component name" +msgstr "Nazwa potoczna" + +#: admin/systems/class_divListSystemService.inc:38 +#: admin/systems/class_divListSystemService.inc:39 +msgid "Installed services" +msgstr "Zainstalowane usługi" + +#: admin/systems/class_divListSystemService.inc:42 +#, fuzzy +msgid "Add, remove and configure the properties of system services here." +msgstr "To menu umożliwia tworzenie, usuwanie oraz edycję właściwości usług." + +#: admin/systems/class_divListSystemService.inc:50 +#: admin/systems/class_servGeneric.inc:512 +#: admin/systems/class_componentGeneric.inc:318 +msgid "Name" +msgstr "Imię" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add service" +msgstr "Dodaj usługę" + +#: admin/systems/class_divListSystemService.inc:62 +msgid "Add new service" +msgstr "Dodan nową usługę" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all" +msgstr "Uruchom wszystko" + +#: admin/systems/class_divListSystemService.inc:65 +msgid "Start all services" +msgstr "Uruchom wszystkie usługi" + +#: admin/systems/class_divListSystemService.inc:67 +#: admin/systems/class_divListSystemService.inc:127 +msgid "Stop service" +msgstr "Zatrzymaj usługę" + +#: admin/systems/class_divListSystemService.inc:67 +msgid "Stop all services" +msgstr "Zatrzymaj wszystike usługi" + +#: admin/systems/class_divListSystemService.inc:69 +#: admin/systems/class_divListSystemService.inc:133 +msgid "Restart service" +msgstr "Restartuj usługę" + +#: admin/systems/class_divListSystemService.inc:69 +msgid "Restart all services" +msgstr "Restartuj wszystkie usługi" + +#: admin/systems/class_divListSystemService.inc:99 +msgid "Stopped" +msgstr "Zatrzymano" + +#: admin/systems/class_divListSystemService.inc:100 +msgid "Started" +msgstr "Wystartowano" + +#: admin/systems/class_divListSystemService.inc:101 +msgid "Restarting" +msgstr "Restartuję" + +#: admin/systems/class_divListSystemService.inc:102 +msgid "User status" +msgstr "Status użytkownika" + +#: admin/systems/class_divListSystemService.inc:121 +msgid "Start service" +msgstr "Uruchom usługę" + +#: admin/systems/class_divListSystemService.inc:141 +msgid "Edit service" +msgstr "Edytuj usługę" + +#: admin/systems/class_divListSystemService.inc:149 +msgid "Remove service" +msgstr "Usuń usługę" + +#: admin/systems/network.tpl:1 +msgid "Network\tsettings" +msgstr "Ustawienia sieci" + +#: admin/systems/network.tpl:9 +msgid "IP-address" +msgstr "adres IP" + +#: admin/systems/network.tpl:30 admin/systems/network.tpl:32 +#, fuzzy +msgid "Propose ip" +msgstr "Właściwości" + +#: admin/systems/network.tpl:38 +msgid "MAC-address" +msgstr "adres MAC" + +#: admin/systems/network.tpl:45 +msgid "Autodetect" +msgstr "Autowykrywanie" + +#: admin/systems/network.tpl:62 admin/systems/network.tpl:72 +#, fuzzy +msgid "Enable DHCP for this device" +msgstr "Włącz DNS dla tego urządzenia." + +#: admin/systems/network.tpl:72 admin/systems/network.tpl:167 +#, fuzzy +msgid "not configured" +msgstr "nieskonfigurowane" + +#: admin/systems/network.tpl:80 +#, fuzzy +msgid "Parent node" +msgstr "Nadrzędny serwer" + +#: admin/systems/network.tpl:93 +#, fuzzy +msgid "Edit settings" +msgstr "Ustawienia pocztowe" + +#: admin/systems/network.tpl:127 admin/systems/network.tpl:167 +msgid "Enable DNS for this device" +msgstr "Włącz DNS dla tego urządzenia." + +#: admin/systems/network.tpl:136 +msgid "Zone" +msgstr "Strefa" + +#: admin/systems/network.tpl:146 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/network.tpl:154 +msgid "Dns records" +msgstr "Rekordy DNS" + +#: admin/systems/main.inc:54 admin/systems/main.inc:56 +msgid "System management" +msgstr "Zarządzanie systemem" + +#: admin/systems/password.tpl:3 +msgid "" +"To change the terminal root password use the fields below. The changes take " +"effect during the next reboot. Please memorize the new password, because you " +"wouldn't be able to log in." +msgstr "" +"Aby zmienić hasło root'a dla terminala użyj pól poniżej. Zmiany wchodzą po " +"następnym uruchomieniu. Proszę zapamiętać nowe hasło, gdyż bez niego " +"logowanie będzie niemożliwe" + +#: admin/systems/password.tpl:6 +msgid "Leave fields blank for password inheritance from default entries." +msgstr "Pozostaw pola puste aby dziedziczyć hasło z wpisów domyślnych." + +#: admin/systems/password.tpl:10 +msgid "Changing the password impinges on authentification only." +msgstr "Zmiana hasła wpływa tylko na autentykację." + +#: admin/systems/password.tpl:15 +msgid "New password" +msgstr "Nowe hasło" + +#: admin/systems/password.tpl:21 +msgid "Repeat new password" +msgstr "Powtórz nowe hasło" + +#: admin/systems/password.tpl:26 +#, fuzzy +msgid "Password strength" +msgstr "Przechowywanie hasła" + +#: admin/systems/class_servGeneric.inc:86 +msgid "Activated" +msgstr "Aktywne" + +#: admin/systems/class_servGeneric.inc:87 +msgid "Locked" +msgstr "Zablokowane" + +#: admin/systems/class_servGeneric.inc:148 +#, fuzzy +msgid "server" +msgstr "Serwer" + +#: admin/systems/class_servGeneric.inc:169 +msgid "Event error" +msgstr "" + +#: admin/systems/class_servGeneric.inc:170 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Switch off" +msgstr "Wyłącz" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Reboot" +msgstr "Restartuj" + +#: admin/systems/class_servGeneric.inc:226 +#: admin/systems/class_servGeneric.inc:235 +#, fuzzy +msgid "System update" +msgstr "System / Departament" + +#: admin/systems/class_servGeneric.inc:227 +#: admin/systems/class_servGeneric.inc:234 +msgid "Reinstall" +msgstr "Przeinstaluj" + +#: admin/systems/class_servGeneric.inc:228 +msgid "Rescan hardware" +msgstr "Przeskanuj sprzęt" + +#: admin/systems/class_servGeneric.inc:229 +#: admin/systems/class_servGeneric.inc:236 +msgid "Memory test" +msgstr "Test pamięci" + +#: admin/systems/class_servGeneric.inc:230 +#: admin/systems/class_servGeneric.inc:237 +msgid "Force localboot" +msgstr "" + +#: admin/systems/class_servGeneric.inc:231 +#: admin/systems/class_servGeneric.inc:238 +msgid "System analysis" +msgstr "Analiza systemu" + +#: admin/systems/class_servGeneric.inc:233 +msgid "Wake up" +msgstr "Zbudź" + +#: admin/systems/class_servGeneric.inc:369 +#, fuzzy +msgid "Software deployment" +msgstr "Zarządzanie systemem" + +#: admin/systems/class_servGeneric.inc:370 +msgid "" +"This host is currently installing, if you really want to save it, press 'OK'." +msgstr "" + +#: admin/systems/class_servGeneric.inc:503 +#: admin/systems/class_componentGeneric.inc:309 +msgid "Generic" +msgstr "Ogólne" + +#: admin/systems/class_servGeneric.inc:504 +#, fuzzy +msgid "Server generic" +msgstr "Nazwa serwera" + +#: admin/systems/class_servGeneric.inc:513 admin/systems/server.tpl:14 +#: admin/systems/class_componentGeneric.inc:320 admin/systems/component.tpl:35 +msgid "Description" +msgstr "Opis" + +#: admin/systems/class_servGeneric.inc:516 +#, fuzzy +msgid "Goto mode" +msgstr "do folferu" + +#: admin/systems/class_servGeneric.inc:517 +#: admin/systems/class_componentGeneric.inc:321 +#, fuzzy +msgid "Root password" +msgstr "Ustaw hasło" + +#: admin/systems/class_servGeneric.inc:518 +msgid "Action flag" +msgstr "Flaga akcji" + +#: admin/systems/server.tpl:26 admin/systems/component.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Wybierz poddrzewo do umieszczenia grupy" + +#: admin/systems/server.tpl:32 admin/systems/component.tpl:25 +msgid "Select a base" +msgstr "Wybierz bazę" + +#: admin/systems/server.tpl:42 +msgid "Mode" +msgstr "Tryb" + +#: admin/systems/server.tpl:45 +msgid "Select terminal mode" +msgstr "Proszę wybrać tryb terminala" + +#: admin/systems/server.tpl:63 +msgid "Action" +msgstr "Akcja" + +#: admin/systems/server.tpl:69 +msgid "" +"System installation in progress, the FAI state cannot be changed right now." +msgstr "" + +#: admin/systems/server.tpl:72 +msgid "Select action to execute for this server" +msgstr "Proszę wybrać akcję do wykonania dla tego serwera" + +#: admin/systems/server.tpl:80 +msgid "Execute" +msgstr "Uruchom" + +#: admin/systems/class_termDNS.inc:444 +#, fuzzy +msgid "Not matching" +msgstr "Nieaktywne" + +#: admin/systems/class_termDNS.inc:593 +#, fuzzy, php-format +msgid "IP address %s" +msgstr "adres IP" + +#: admin/systems/class_termDNS.inc:602 admin/systems/class_termDNS.inc:614 +#: admin/systems/class_termDNS.inc:616 admin/systems/class_termDNS.inc:982 +#: admin/systems/class_componentGeneric.inc:219 +#: admin/systems/class_componentGeneric.inc:222 +msgid "IP address" +msgstr "adres IP" + +#: admin/systems/class_termDNS.inc:607 admin/systems/class_termDNS.inc:624 +#: admin/systems/class_termDNS.inc:626 admin/systems/class_termDNS.inc:983 +msgid "MAC address" +msgstr "Adres MAC" + +#: admin/systems/class_termDNS.inc:641 +#, php-format +msgid "The IP address '%s' is not part of the selected reverse zone '%s'!" +msgstr "" + +#: admin/systems/class_termDNS.inc:653 +#, php-format +msgid "Record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:661 +#, php-format +msgid "Uniq record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:673 +#, fuzzy, php-format +msgid "" +"The IP address '%s' will be added as 'A Record', this will be done " +"automatically, please remove the record." +msgstr "" +"IP '%s' urządzenia jest dodane jako 'rekord A', to zostanie dodane " +"automatycznie. Proszę usunąć rekord." + +#: admin/systems/class_termDNS.inc:681 +#, fuzzy, php-format +msgid "Only lowercase records are allowed, please check your '%ss'." +msgstr "Tylko małe litery są dozwolone, proszę sprawdzić '%s'." + +#: admin/systems/class_termDNS.inc:923 admin/systems/class_termDNS.inc:943 +msgid "Add" +msgstr "Dodaj" + +#: admin/systems/class_termDNS.inc:937 +msgid "Delete" +msgstr "Usuń" + +#: admin/systems/class_termDNS.inc:973 +msgid "DNS" +msgstr "DNS" + +#: admin/systems/class_termDNS.inc:974 +msgid "DNS settings" +msgstr "Ustawienia DNS" + +#: admin/systems/class_termDNS.inc:989 +#, fuzzy +msgid "DNS configuration" +msgstr "Konfiguracja bazy FAX" + +#: admin/systems/class_termDNS.inc:992 +#, fuzzy +msgid "DHCP configuration" +msgstr "Konfiguracja bazy FAX" + +#: admin/systems/class_componentGeneric.inc:77 +#, fuzzy +msgid "component" +msgstr "Nowy komponent" + +#: admin/systems/class_componentGeneric.inc:310 +#, fuzzy +msgid "Component generic" +msgstr "Nowy komponent" + +#: admin/systems/component.tpl:6 +msgid "Device name" +msgstr "Nazwa urządzenia" + +#, fuzzy +#~ msgid "Win workstation" +#~ msgstr "Stacja robocza" + +#~ msgid "Cups Server" +#~ msgstr "Serwer Cups" + +#~ msgid "Log Db" +#~ msgstr "baza danych Log" + +#~ msgid "Syslog Server" +#~ msgstr "Serwer syslog" + +#~ msgid "Mail Server" +#~ msgstr "Serwer poczty" + +#~ msgid "Imap Server" +#~ msgstr "Serwer imap" + +#~ msgid "Nfs Server" +#~ msgstr "Serwer Nfs" + +#~ msgid "Kerberos Server" +#~ msgstr "Serwer Kerberos" + +#~ msgid "Asterisk Server" +#~ msgstr "Serwer Asterisk" + +#~ msgid "Fax Server" +#~ msgstr "Serwer Fax" + +#~ msgid "Ldap Server" +#~ msgstr "Serwer Ldap" + +#~ msgid "DNS records" +#~ msgstr "Rekordy DNS" + +#~ msgid "Zone name" +#~ msgstr "Nazwa strefy" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "kopiuj" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "wytnij" + +#~ msgid "Paste" +#~ msgstr "Wklej" + +#~ msgid "cut" +#~ msgstr "wytnij" + +#~ msgid "Cut this entry" +#~ msgstr "Wytnij ten obiekt" + +#~ msgid "copy" +#~ msgstr "kopiuj" + +#~ msgid "Copy this entry" +#~ msgstr "Kopiuj ten obiekt" + +#, fuzzy +#~ msgid "Set root password" +#~ msgstr "Ustaw hasło roota" + +#~ msgid "Choose a base" +#~ msgstr "Wybierz bazę" + +#~ msgid "Go to root department" +#~ msgstr "Idź do głównego departamentu" + +#~ msgid "Root" +#~ msgstr "Główny" + +#~ msgid "Go up one department" +#~ msgstr "Idź jeden departament wyżej" + +#~ msgid "Up" +#~ msgstr "Góra" + +#~ msgid "Go to users department" +#~ msgstr "Przejdź do departamentu użytkowników" + +#~ msgid "Home" +#~ msgstr "Katalog domowy" + +#~ msgid "Reload list" +#~ msgstr "Przeładuj listę" + +#~ msgid "" +#~ "Step in the prefered tree and click save to use the current subtree as " +#~ "base. Or click the image at the end of each entry." +#~ msgstr "" +#~ "Przejdź do preferowanego drzewa i kliknij zapisz aby użyć obecnego " +#~ "poddrzewa jako podstawy. Można też kliknąc obrazek na końcu każdego " +#~ "elementu." + +#~ msgid "Use" +#~ msgstr "Użyj" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Filter entries with this syntax" +#~ msgstr "Filtruj elementy z tą składnią" + +#~ msgid "Select this base" +#~ msgstr "Wybierz tą bazę" + +#~ msgid "Phone name" +#~ msgstr "Nazwa telefonu" + +#~ msgid "Workstation is installing" +#~ msgstr "Stacja robocza jest instalowana" + +#~ msgid "Workstation is waiting for action" +#~ msgstr "Stacja robocza czeka na użycie" + +#~ msgid "Workstation installation failed" +#~ msgstr "Instalacja stacji roboczej nieudana" + +#~ msgid "Server is installing" +#~ msgstr "Serwer jest instalowany" + +#~ msgid "Server is waiting for action" +#~ msgstr "Serwer czeka na użycie" + +#~ msgid "Server installation failed" +#~ msgstr "Instalacja serwera nieudana" + +#~ msgid "Select to search within subtrees" +#~ msgstr "Zaznacz aby wyszukiwać wewnątrz poddrzew" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Szukaj wewnątrz tego poddrzewa" + +#~ msgid "The specified method '%s' can't executed for services." +#~ msgstr "Podana metoda '%s' nie może zostać uruchmiona dla usług." + +#~ msgid "You can't edit this object type yet!" +#~ msgstr "Nie można edytować tego typu obiektów (jeszcze)!" + +#~ msgid "Save" +#~ msgstr "Zapisz" + +#, fuzzy +#~ msgid "You are not allowed to create a new object of this type." +#~ msgstr "Brak uprawnień do usunięcia grupy obiektowej." + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "Zamierzasz usunąć element %s." + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "Zamierzasz usunąć element %s." + +#~ msgid "You are not allowed to delete this component!" +#~ msgstr "Brak uprawnień do usunięcia tego elementu!" + +#~ msgid "You're about to delete all information about the component at '%s'." +#~ msgstr "Zamierzasz usunąć wszystkie informacje o komponencie w '%s'." + +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgid "Apply" +#~ msgstr "Zastosuj" + +#~ msgid "Winstation" +#~ msgstr "Stacja Windows" + +#~ msgid "Network Device" +#~ msgstr "Urządzenie sieciowe" + +#~ msgid "New Terminal" +#~ msgstr "Nowy terminal" + +#~ msgid "New Workstation" +#~ msgstr "Nowa stacja robocza" + +#~ msgid "" +#~ "This menu allows you to add, remove and change the properties of specific " +#~ "systems. You can only add systems which have already been started once." +#~ msgstr "" +#~ "To menu umożliwia tworzenie, usuwanie oraz edycję odpowiednich systemów. " +#~ "Można tylko dodawać systemy które już raz były uruchomione." + +#~ msgid "Select to see servers" +#~ msgstr "Proszę aby zobaczyć serwery" + +#~ msgid "Show servers" +#~ msgstr "Pokaż serwery" + +#~ msgid "Select to see Linux terminals" +#~ msgstr "Wybierz aby zobaczyć terminale Linux" + +#~ msgid "Select to see Linux workstations" +#~ msgstr "Wybierz aby zobaczyć stacje robocze Linux" + +#~ msgid "Select to see network printers" +#~ msgstr "Wybierz aby zobaczyć drukarki sieciowe" + +#~ msgid "Select to see VOIP phones" +#~ msgstr "Wybierz aby zobaczyć telefony VOIP" + +#~ msgid "Select to see network devices" +#~ msgstr "Wybierz aby zobaczyć urządzenia sieciowe" + +#~ msgid "Show network devices" +#~ msgstr "Pokaż urządzenia sieciowe" + +#, fuzzy +#~ msgid "Number of listed servers" +#~ msgstr "Serwer profili" + +#, fuzzy +#~ msgid "Number of listed workstations" +#~ msgstr "Wybierz aby zobaczyc stacje robocze" + +#, fuzzy +#~ msgid "Number of listed terminals" +#~ msgstr "Wybierz aby zobaczyć terminale" + +#, fuzzy +#~ msgid "Number of listed printers" +#~ msgstr "Nazwa departamentu" + +#, fuzzy +#~ msgid "Number of listed new devices" +#~ msgstr "Wybierz aby zobaczyć urządzenia sieciowe" + +#, fuzzy +#~ msgid "Number of listed windows workstations" +#~ msgstr "Pokaż stacje robocze windows" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Nazwa departamentu" + +#~ msgid "This 'dn' has no server features." +#~ msgstr "Ten 'dn' nie posiada cech serwera." + +#~ msgid "This 'dn' has no network features." +#~ msgstr "Ten 'dn' nie posiada cech sieciowych." + +#, fuzzy +#~ msgid "Removing dhcp entry for this object failed." +#~ msgstr "Usuwanie wpisów DNS nieudane" + +#, fuzzy +#~ msgid "Removing old dhcp entry failed." +#~ msgstr "Usuwanie wpisu hosta kolab nieudane" + +#, fuzzy +#~ msgid "Modifying dhcp entry failed." +#~ msgstr "Usuwanie wpisu hosta kolab nieudane" + +#, fuzzy +#~ msgid "Saving of terminal/dns account with dn '%s' failed." +#~ msgstr "Zapisywanie konta pocztowego nieudane" + +#~ msgid "Instant update" +#~ msgstr "Natychmiastowe uaktualnienie" + +#~ msgid "Scheduled update" +#~ msgstr "Zaplanowana aktualizacja" + +#, fuzzy +#~ msgid "Removing of system server/generic with dn '%s' failed." +#~ msgstr "Usuwanie referencji makra telefonicznego nieudane" + +#, fuzzy +#~ msgid "Removing of server services/" +#~ msgstr "Usługa serwer GoFon" + +#, fuzzy +#~ msgid "Saving of server services/" +#~ msgstr "Usługa serwera Fax" + +#, fuzzy +#~ msgid "Set status flag for server services/" +#~ msgstr "Zapisywanie usługi serwera nieudane" + +#, fuzzy +#~ msgid "Removing of system component/generic with dn '%s' failed." +#~ msgstr "Usuwanie ogólnego komponentu nieudane" + +#~ msgid "" +#~ "Can't execute specified AUTO_NETWORK_HOOK '%s'. Please check your gosa." +#~ "conf." +#~ msgstr "" +#~ "Nie można wykonać podanego AUTO_NETWORK_HOOK '%s' proszę sprawdzić gosa." +#~ "conf." + +#, fuzzy +#~ msgid "The specified IP address is already in use." +#~ msgstr "Wybrana nazwie już jest w użyciu." + +#, fuzzy +#~ msgid "" +#~ "The specified MAC address '%s' for this system '%s' is already in use." +#~ msgstr "Wybrana nazwie już jest w użyciu." + +#~ msgid "The required field 'IP-address' is not set." +#~ msgstr "Wymagane pole 'adres-IP' nie jest wypełnione" + +#~ msgid "Wrong IP format in field IP-address." +#~ msgstr "Zły format danych w polu 'adres-IP'" + +#~ msgid "The required field 'MAC-address' is not set." +#~ msgstr "Wymagane pole 'MAC-adres' nie jest wypełnione" + +#~ msgid "" +#~ "The given macaddress is invalid. There must be 6 2byte segments seperated " +#~ "by ':'." +#~ msgstr "" +#~ "Podany MAC-adres jest nieprawidłowy. Musi być w formacie 6 2bajtowych " +#~ "segmentów oddzielonych ':'." + +#~ msgid "Found duplicate value for record type '%s'." +#~ msgstr "Znaleziono powtórzoną wartość dla typu rekordu '%s'." + +#~ msgid "Found more than one entry for the uniqe record type '%s'." +#~ msgstr "Znaleziono więcej niż jeden wpis dla unikalnego typu rekordu '%s'." + +#~ msgid "No ACTIONCMD definition found in your gosa.conf" +#~ msgstr "Brak definicji ACTIONCMD w pliku gosa.conf" + +#~ msgid "Execution of '%s' failed!" +#~ msgstr "Wykonanie '%s' nieudane" + +#~ msgid "The required field 'Server name' is not set." +#~ msgstr "Wymagane pole 'Nazwa serwera' jest puste." + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "Proszę podać prawidłową nazwę dla tego typu mime." + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "Już istnieje wpis '%s' w wybranym elemencie" + +#~ msgid "" +#~ "Command '%s', specified as ACTION_HOOK for plugin '%s' doesn't seem to " +#~ "exist." +#~ msgstr "" +#~ "Polecenie '%s' podane jako ACTION_HOOK dla dodatku '%s' nie istnieje." + +#~ msgid "The required field 'Component name' is not set." +#~ msgstr "Wymagane pole 'Nazwa komponentu' jest puste." + +#~ msgid "The required field IP address is empty." +#~ msgstr "Wymagane pole adres IP jest puste." + +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "Pole adres IP zawiera nieprawidłowy adres." diff --git a/trunk/gosa-plugins/systems/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/systems/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..d9f89bd4a --- /dev/null +++ b/trunk/gosa-plugins/systems/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,1419 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: admin/systems/remove.tpl:2 +msgid "Warning" +msgstr "Предупреждение" + +#: admin/systems/remove.tpl:6 +#, fuzzy +msgid "" +"This includes all system and setup informations. Please double check if your " +"really want to do this since there is no way for GOsa to get your data back." +msgstr "" +"Сюда входит вся информация о системе и ее настройках. Подумайте еще " +"раз, действительно ли вам нужно удаление, так как GOsa не сможет отменить " +"результаты этой операции." + +#: admin/systems/remove.tpl:10 +#, fuzzy +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"Лучше всего перед удалением сохранить резервную копию текущего дерева LDAP в " +"файл. Если вы сделали это и действительно хотите выполнить удаление, нажмите " +"Удалить, иначе нажмите Отмена." + +#: admin/systems/class_systemManagement.inc:26 +#: admin/systems/class_divListSystem.inc:88 +msgid "Systems" +msgstr "Системы" + +#: admin/systems/class_systemManagement.inc:27 +msgid "This does something" +msgstr "Что-то будет" + +#: admin/systems/class_systemManagement.inc:239 +msgid "Back" +msgstr "Назад" + +#: admin/systems/class_systemManagement.inc:286 +msgid "Creating the image failed. Please see the report below." +msgstr "" + +#: admin/systems/class_systemManagement.inc:295 +#, fuzzy, php-format +msgid "Command '%s', specified for ISO creation doesn't seem to exist." +msgstr "" +"Не удается найти команду \"%s\", указанную в поле POSTREMOVE модуля \"%s\"." + +#: admin/systems/class_systemManagement.inc:344 +#: admin/systems/class_systemManagement.inc:459 +#: admin/systems/class_systemManagement.inc:496 +#: admin/systems/class_systemManagement.inc:504 +#: admin/systems/class_systemManagement.inc:554 +#: admin/systems/class_systemManagement.inc:561 +#: admin/systems/class_systemManagement.inc:576 +#: admin/systems/class_systemManagement.inc:584 +#: admin/systems/class_systemManagement.inc:623 +#: admin/systems/class_systemManagement.inc:717 +#: admin/systems/class_systemManagement.inc:1279 +#: admin/systems/class_serverService.inc:186 +#: admin/systems/class_serverService.inc:236 +#: admin/systems/class_serverService.inc:363 +#: admin/systems/class_termDNS.inc:338 +msgid "Error" +msgstr "" + +#: admin/systems/class_systemManagement.inc:399 +#, fuzzy +msgid "Internal error" +msgstr "Терминал-сервер" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Cannot set mode to 'active'!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:584 +msgid "Editing this type of object is not supported yet!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#: admin/systems/class_systemManagement.inc:943 +#, fuzzy +msgid "Permission error" +msgstr "Права для членов группы" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#, fuzzy +msgid "You have no permission to change this password!" +msgstr "Вам не разрешено менять пароль." + +#: admin/systems/class_systemManagement.inc:623 +#, fuzzy +msgid "" +"The passwords you've entered as 'New password' and 'Repeated password' do " +"not match!" +msgstr "Введенные пароли не совпадают!" + +#: admin/systems/class_systemManagement.inc:698 +#, fuzzy +msgid "Password method" +msgstr "Хэширование паролей" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method crypt is missing. Cannot set system password." +msgstr "" + +#: admin/systems/class_systemManagement.inc:704 +#: admin/systems/class_systemManagement.inc:1810 +#: admin/systems/services/class_goService.inc:122 +#: admin/systems/services/class_goService.inc:150 +#: admin/systems/services/class_goService.inc:183 +#: admin/systems/class_servGeneric.inc:281 +#: admin/systems/class_servGeneric.inc:433 admin/systems/class_termDNS.inc:483 +#: admin/systems/class_termDNS.inc:771 admin/systems/class_termDNS.inc:790 +#: admin/systems/class_termDNS.inc:811 admin/systems/class_termDNS.inc:816 +#: admin/systems/class_termDNS.inc:834 admin/systems/class_termDNS.inc:906 +#: admin/systems/class_componentGeneric.inc:160 +#: admin/systems/class_componentGeneric.inc:301 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: admin/systems/class_systemManagement.inc:717 +#, fuzzy +msgid "Cannot determine object to change password!" +msgstr "Сменить пароль" + +#: admin/systems/class_systemManagement.inc:824 +#: admin/systems/class_servGeneric.inc:165 +#: admin/systems/class_servGeneric.inc:453 +#, fuzzy +msgid "Service infrastructure" +msgstr "Имя сервера" + +#: admin/systems/class_systemManagement.inc:869 +#, fuzzy +msgid "Permission" +msgstr "Права для членов группы" + +#: admin/systems/class_systemManagement.inc:1308 +#: admin/systems/class_systemManagement.inc:1621 +msgid "New terminal" +msgstr "Создать терминал" + +#: admin/systems/class_systemManagement.inc:1310 +#: admin/systems/class_systemManagement.inc:1622 +msgid "New workstation" +msgstr "Новая рабочая станция" + +#: admin/systems/class_systemManagement.inc:1312 +#, fuzzy +msgid "Unknown device" +msgstr "состояние неизвестно" + +#: admin/systems/class_systemManagement.inc:1314 +#, fuzzy +msgid "New Device" +msgstr "Сетевые устройства" + +#: admin/systems/class_systemManagement.inc:1339 +#, fuzzy +msgid "Terminal template for" +msgstr "Шаблон терминала" + +#: admin/systems/class_systemManagement.inc:1355 +msgid "Workstation template for" +msgstr "Шаблон рабочей станции для" + +#: admin/systems/class_systemManagement.inc:1598 +msgid "Template" +msgstr "Шаблон" + +#: admin/systems/class_systemManagement.inc:1599 +#: admin/systems/class_divListSystem.inc:199 +msgid "Phone" +msgstr "Телефон" + +#: admin/systems/class_systemManagement.inc:1600 +#: admin/systems/class_componentGeneric.inc:315 +#, fuzzy +msgid "Network device" +msgstr "Сетевые устройства" + +#: admin/systems/class_systemManagement.inc:1601 +#: admin/systems/class_divListSystem.inc:203 +msgid "Printer" +msgstr "Принтер" + +#: admin/systems/class_systemManagement.inc:1603 +#, fuzzy +msgid "Windows workstation" +msgstr "Показать рабочие станции" + +#: admin/systems/class_systemManagement.inc:1605 +#: admin/systems/class_divListSystem.inc:191 +msgid "Workstation" +msgstr "Рабочая станция" + +#: admin/systems/class_systemManagement.inc:1606 +#: admin/systems/class_divListSystem.inc:195 +#: admin/systems/class_servGeneric.inc:509 +msgid "Server" +msgstr "Сервер" + +#: admin/systems/class_systemManagement.inc:1607 +#: admin/systems/class_divListSystem.inc:187 +#, fuzzy +msgid "Terminal" +msgstr "Терминалы" + +#: admin/systems/class_systemManagement.inc:1609 +#, fuzzy +msgid "Locked workstation" +msgstr "Новая рабочая станция" + +#: admin/systems/class_systemManagement.inc:1610 +#, fuzzy +msgid "Locked server" +msgstr "Сервер подкачки" + +#: admin/systems/class_systemManagement.inc:1611 +#, fuzzy +msgid "Locked terminal" +msgstr "Создать терминал" + +#: admin/systems/class_systemManagement.inc:1613 +#, fuzzy +msgid "Workstation error" +msgstr "Рабочая станция" + +#: admin/systems/class_systemManagement.inc:1614 +#, fuzzy +msgid "Server error" +msgstr "Имя сервера" + +#: admin/systems/class_systemManagement.inc:1615 +#, fuzzy +msgid "Terminal error" +msgstr "Терминал-сервер" + +#: admin/systems/class_systemManagement.inc:1617 +#, fuzzy +msgid "Workstation busy" +msgstr "Рабочая станция" + +#: admin/systems/class_systemManagement.inc:1618 +#, fuzzy +msgid "Server busy" +msgstr "Серверы" + +#: admin/systems/class_systemManagement.inc:1620 +#, fuzzy +msgid "New system from incoming" +msgstr "Системная информация" + +#: admin/systems/class_systemManagement.inc:1626 +#: admin/systems/class_divListSystem.inc:214 +#, fuzzy +msgid "Opsi client" +msgstr "Тонкий клиент" + +#: admin/systems/class_systemManagement.inc:1826 +#: admin/systems/class_systemManagement.inc:1827 +#, fuzzy +msgid "Incoming objects" +msgstr "Включаемые объекты" + +#: admin/systems/class_systemManagement.inc:1832 +#, fuzzy +msgid "Incoming" +msgstr "Пиктограмма" + +#: admin/systems/services/class_goService.inc:44 +#: admin/systems/services/class_goService.inc:79 +#, fuzzy +msgid "Empty service" +msgstr "Служба печати" + +#: admin/systems/services/class_goService.inc:237 +#, fuzzy +msgid "Configuration error" +msgstr "Настроить" + +#: admin/systems/services/ServiceAddDialog.tpl:3 +msgid "Adding a new service to the current server" +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:7 +msgid "" +"This dialog allows you to add new services to the currenty edited server " +"object. The box below shows all available but not already used services." +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:13 +#, fuzzy +msgid "Service to add" +msgstr "Выбрать номера для добавления" + +#: admin/systems/services/ServiceAddDialog.tpl:20 +#, fuzzy +msgid "All available services are already in use." +msgstr "Указанное имя уже используется." + +#: admin/systems/services/ServiceAddDialog.tpl:28 +msgid "Continue" +msgstr "Продолжить" + +#: admin/systems/class_divListSystem.inc:63 +#: admin/systems/class_divListSystem.inc:64 +msgid "List of systems" +msgstr "Список систем" + +#: admin/systems/class_divListSystem.inc:82 +#, fuzzy +msgid "Select all" +msgstr "Удалить" + +#: admin/systems/class_divListSystem.inc:88 +#, fuzzy +msgid "Department" +msgstr "Подразделение" + +#: admin/systems/class_divListSystem.inc:92 +#, fuzzy +msgid "Release" +msgstr "Удалить" + +#: admin/systems/class_divListSystem.inc:95 +#: admin/systems/class_divListSystem.inc:181 +#: admin/systems/class_divListSystemService.inc:51 +msgid "Actions" +msgstr "Действия" + +#: admin/systems/class_divListSystem.inc:101 +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:423 +#, fuzzy +msgid "servers" +msgstr "Сервер" + +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:117 +#: admin/systems/class_divListSystem.inc:128 +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy, php-format +msgid "Show %s" +msgstr "Показать телефоны" + +#: admin/systems/class_divListSystem.inc:106 +#, fuzzy +msgid "Linux terminals" +msgstr "Показать терминалы" + +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:425 +#, fuzzy +msgid "terminals" +msgstr "Терминалы" + +#: admin/systems/class_divListSystem.inc:111 +#, fuzzy +msgid "Linux workstations" +msgstr "Показать рабочие станции" + +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:424 +#, fuzzy +msgid "workstations" +msgstr "Рабочая станция" + +#: admin/systems/class_divListSystem.inc:116 +#, fuzzy +msgid "MicroSoft Windows based workstations" +msgstr "Посмотреть рабочие станции с MicroSoft Windows" + +#: admin/systems/class_divListSystem.inc:117 +#, fuzzy +msgid "windows based workstations" +msgstr "Показать рабочие станции с windows" + +#: admin/systems/class_divListSystem.inc:121 +#, fuzzy, php-format +msgid "Display objects of type '%s'." +msgstr "Выбрать объекты для добавления" + +#: admin/systems/class_divListSystem.inc:122 +#, fuzzy +msgid "OPSI installed client" +msgstr "Клиентские устройства" + +#: admin/systems/class_divListSystem.inc:122 +msgid "Show OPSI based clients" +msgstr "" + +#: admin/systems/class_divListSystem.inc:127 +#: admin/systems/class_divListSystem.inc:128 +#, fuzzy +msgid "network printers" +msgstr "Показать сетевые принтеры" + +#: admin/systems/class_divListSystem.inc:132 +#, fuzzy +msgid "VoIP phones" +msgstr "Показать телефоны" + +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:426 +#, fuzzy +msgid "phones" +msgstr "Телефон" + +#: admin/systems/class_divListSystem.inc:137 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy +msgid "network devices" +msgstr "Сетевые устройства" + +#: admin/systems/class_divListSystem.inc:146 +msgid "Display systems matching" +msgstr "Показать подходяшие системы" + +#: admin/systems/class_divListSystem.inc:147 +#, fuzzy +msgid "Display systems of user" +msgstr "Показать адреса пользователя" + +#: admin/systems/class_divListSystem.inc:176 +#: admin/systems/class_servGeneric.inc:514 admin/systems/server.tpl:22 +#: admin/systems/class_componentGeneric.inc:319 admin/systems/component.tpl:17 +msgid "Base" +msgstr "Ветка" + +#: admin/systems/class_divListSystem.inc:178 +#, fuzzy +msgid "Submit department" +msgstr "Показать подразделения" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit" +msgstr "" + +#: admin/systems/class_divListSystem.inc:183 +msgid "Create" +msgstr "Создать" + +#: admin/systems/class_divListSystem.inc:207 +#, fuzzy +msgid "Component" +msgstr "Прочие сетевые компоненты" + +#: admin/systems/class_divListSystem.inc:221 +msgid "Trigger action" +msgstr "" + +#: admin/systems/class_divListSystem.inc:227 +#, fuzzy +msgid "Schedule action" +msgstr "Выберите режим терминала" + +#: admin/systems/class_divListSystem.inc:234 +msgid "Remove" +msgstr "Удалить" + +#: admin/systems/class_divListSystem.inc:237 +#, fuzzy +msgid "Activate systems" +msgstr "Список систем" + +#: admin/systems/class_divListSystem.inc:322 +#, fuzzy +msgid "edit" +msgstr "Изменить" + +#: admin/systems/class_divListSystem.inc:322 +#, fuzzy +msgid "Edit system" +msgstr "Список систем" + +#: admin/systems/class_divListSystem.inc:328 +#, fuzzy +msgid "delete" +msgstr "Удалить" + +#: admin/systems/class_divListSystem.inc:328 +#, fuzzy +msgid "Delete system" +msgstr "Удалить" + +#: admin/systems/class_divListSystem.inc:350 +msgid "Password" +msgstr "Пароль" + +#: admin/systems/class_divListSystem.inc:350 admin/systems/password.tpl:38 +msgid "Set password" +msgstr "Изменить пароль" + +#: admin/systems/class_divListSystem.inc:359 +#, fuzzy +msgid "Create CD" +msgstr "Создать" + +#: admin/systems/class_divListSystem.inc:360 +#, fuzzy +msgid "Create FAI CD" +msgstr "Объект группы" + +#: admin/systems/class_divListSystem.inc:407 +#: admin/systems/class_divListSystem.inc:408 +#, fuzzy, php-format +msgid "Inherited from %s" +msgstr "Объединения" + +#: admin/systems/class_divListSystem.inc:423 +#: admin/systems/class_divListSystem.inc:424 +#: admin/systems/class_divListSystem.inc:425 +#: admin/systems/class_divListSystem.inc:426 +#: admin/systems/class_divListSystem.inc:427 +#: admin/systems/class_divListSystem.inc:428 +#: admin/systems/class_divListSystem.inc:429 +#: admin/systems/class_divListSystem.inc:430 +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "Подразделение" + +#: admin/systems/class_divListSystem.inc:427 +#, fuzzy +msgid "printers" +msgstr "Принтер" + +#: admin/systems/class_divListSystem.inc:428 +#, fuzzy +msgid "network components" +msgstr "Прочие сетевые компоненты" + +#: admin/systems/class_divListSystem.inc:429 +#, fuzzy +msgid "new devices" +msgstr "Сетевые устройства" + +#: admin/systems/class_divListSystem.inc:430 +#, fuzzy +msgid "windows workstations" +msgstr "Показать рабочие станции" + +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy +msgid "departments" +msgstr "Показать подразделения" + +#: admin/systems/class_serverService.inc:27 +msgid "Stop" +msgstr "" + +#: admin/systems/class_serverService.inc:28 +#, fuzzy +msgid "Start" +msgstr "Запуск" + +#: admin/systems/class_serverService.inc:29 +#, fuzzy +msgid "Restart" +msgstr "Повторить" + +#: admin/systems/class_serverService.inc:351 +#, fuzzy +msgid "Information" +msgstr "Рабочая станция" + +#: admin/systems/class_serverService.inc:351 +msgid "Cannot update service status until it has been saved!" +msgstr "" + +#: admin/systems/class_serverService.inc:363 +msgid "Cannot update service status!" +msgstr "" + +#: admin/systems/paste_generic.tpl:4 admin/systems/class_servGeneric.inc:339 +#: admin/systems/class_servGeneric.inc:344 +#: admin/systems/class_servGeneric.inc:355 admin/systems/server.tpl:6 +msgid "Server name" +msgstr "Имя сервера" + +#: admin/systems/paste_generic.tpl:14 +#, fuzzy +msgid "workstation name" +msgstr "Имя рабочий станции" + +#: admin/systems/paste_generic.tpl:24 +msgid "Terminal name" +msgstr "Терминал" + +#: admin/systems/paste_generic.tpl:34 +msgid "Printer name" +msgstr "Имя принтера" + +#: admin/systems/paste_generic.tpl:44 +#: admin/systems/class_componentGeneric.inc:209 +#: admin/systems/class_componentGeneric.inc:214 +#: admin/systems/class_componentGeneric.inc:236 +#, fuzzy +msgid "Component name" +msgstr "Местоположение" + +#: admin/systems/class_divListSystemService.inc:38 +#: admin/systems/class_divListSystemService.inc:39 +#, fuzzy +msgid "Installed services" +msgstr "Клиентские устройства" + +#: admin/systems/class_divListSystemService.inc:42 +#, fuzzy +msgid "Add, remove and configure the properties of system services here." +msgstr "" +"С помощью этого меню вы можете добавлять, изменять и удалять свойства " +"отдельных систем. Вы можете только добавлять системы которые однажды уже " +"были запущены." + +#: admin/systems/class_divListSystemService.inc:50 +#: admin/systems/class_servGeneric.inc:512 +#: admin/systems/class_componentGeneric.inc:318 +msgid "Name" +msgstr "Фамилия" + +#: admin/systems/class_divListSystemService.inc:62 +#, fuzzy +msgid "Add service" +msgstr "Добавить сервис DNS" + +#: admin/systems/class_divListSystemService.inc:62 +#, fuzzy +msgid "Add new service" +msgstr "Добавить сервис DNS" + +#: admin/systems/class_divListSystemService.inc:65 +#, fuzzy +msgid "Start all" +msgstr "Запуск" + +#: admin/systems/class_divListSystemService.inc:65 +#, fuzzy +msgid "Start all services" +msgstr "Предоставлять службу сканирования" + +#: admin/systems/class_divListSystemService.inc:67 +#: admin/systems/class_divListSystemService.inc:127 +#, fuzzy +msgid "Stop service" +msgstr "Звук" + +#: admin/systems/class_divListSystemService.inc:67 +#, fuzzy +msgid "Stop all services" +msgstr "Предоставлять службу сканирования" + +#: admin/systems/class_divListSystemService.inc:69 +#: admin/systems/class_divListSystemService.inc:133 +#, fuzzy +msgid "Restart service" +msgstr "Служба печати" + +#: admin/systems/class_divListSystemService.inc:69 +#, fuzzy +msgid "Restart all services" +msgstr "Предоставлять службу сканирования" + +#: admin/systems/class_divListSystemService.inc:99 +#, fuzzy +msgid "Stopped" +msgstr "Пол" + +#: admin/systems/class_divListSystemService.inc:100 +#, fuzzy +msgid "Started" +msgstr "Адм. единица" + +#: admin/systems/class_divListSystemService.inc:101 +#, fuzzy +msgid "Restarting" +msgstr "Назначение" + +#: admin/systems/class_divListSystemService.inc:102 +#, fuzzy +msgid "User status" +msgstr "Почтовые настройки пользователя" + +#: admin/systems/class_divListSystemService.inc:121 +#, fuzzy +msgid "Start service" +msgstr "Сканер" + +#: admin/systems/class_divListSystemService.inc:141 +#, fuzzy +msgid "Edit service" +msgstr "Служба печати" + +#: admin/systems/class_divListSystemService.inc:149 +#, fuzzy +msgid "Remove service" +msgstr "Удалить сервис DNS" + +#: admin/systems/network.tpl:1 +#, fuzzy +msgid "Network\tsettings" +msgstr "Сетевые настройки" + +#: admin/systems/network.tpl:9 +msgid "IP-address" +msgstr "IP-адрес" + +#: admin/systems/network.tpl:30 admin/systems/network.tpl:32 +#, fuzzy +msgid "Propose ip" +msgstr "Свойства" + +#: admin/systems/network.tpl:38 +msgid "MAC-address" +msgstr "MAC-адрес" + +#: admin/systems/network.tpl:45 +msgid "Autodetect" +msgstr "" + +#: admin/systems/network.tpl:62 admin/systems/network.tpl:72 +msgid "Enable DHCP for this device" +msgstr "" + +#: admin/systems/network.tpl:72 admin/systems/network.tpl:167 +#, fuzzy +msgid "not configured" +msgstr "Не настроено" + +#: admin/systems/network.tpl:80 +#, fuzzy +msgid "Parent node" +msgstr "Служба печати" + +#: admin/systems/network.tpl:93 +#, fuzzy +msgid "Edit settings" +msgstr "Почтовые настройки пользователя" + +#: admin/systems/network.tpl:127 admin/systems/network.tpl:167 +msgid "Enable DNS for this device" +msgstr "" + +#: admin/systems/network.tpl:136 +#, fuzzy +msgid "Zone" +msgstr "телефоны" + +#: admin/systems/network.tpl:146 +msgid "TTL" +msgstr "" + +#: admin/systems/network.tpl:154 +#, fuzzy +msgid "Dns records" +msgstr "Каталог" + +#: admin/systems/main.inc:54 admin/systems/main.inc:56 +msgid "System management" +msgstr "Управление системами" + +#: admin/systems/password.tpl:3 +#, fuzzy +msgid "" +"To change the terminal root password use the fields below. The changes take " +"effect during the next reboot. Please memorize the new password, because you " +"wouldn't be able to log in." +msgstr "" +"В полях ниже вы можете изменить пароль выбранного пользователя. Изменения " +"вступят в силу немедленно. Пожалуйста, запомните новый пароль, так как иначе " +"пользователь не сможет войти в систему." + +#: admin/systems/password.tpl:6 +msgid "Leave fields blank for password inheritance from default entries." +msgstr "" + +#: admin/systems/password.tpl:10 +msgid "Changing the password impinges on authentification only." +msgstr "Изменение пароля влияет только на аутентификацию в системе." + +#: admin/systems/password.tpl:15 +msgid "New password" +msgstr "Новый пароль" + +#: admin/systems/password.tpl:21 +msgid "Repeat new password" +msgstr "Подтверждение" + +#: admin/systems/password.tpl:26 +#, fuzzy +msgid "Password strength" +msgstr "Хэширование паролей" + +#: admin/systems/class_servGeneric.inc:86 +#, fuzzy +msgid "Activated" +msgstr "Личный" + +#: admin/systems/class_servGeneric.inc:87 +msgid "Locked" +msgstr "" + +#: admin/systems/class_servGeneric.inc:148 +#, fuzzy +msgid "server" +msgstr "Сервер" + +#: admin/systems/class_servGeneric.inc:169 +msgid "Event error" +msgstr "" + +#: admin/systems/class_servGeneric.inc:170 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Switch off" +msgstr "Выключить" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Reboot" +msgstr "Перезагрузить" + +#: admin/systems/class_servGeneric.inc:226 +#: admin/systems/class_servGeneric.inc:235 +#, fuzzy +msgid "System update" +msgstr "Подразделение" + +#: admin/systems/class_servGeneric.inc:227 +#: admin/systems/class_servGeneric.inc:234 +msgid "Reinstall" +msgstr "" + +#: admin/systems/class_servGeneric.inc:228 +#, fuzzy +msgid "Rescan hardware" +msgstr "Телефонное оборудование" + +#: admin/systems/class_servGeneric.inc:229 +#: admin/systems/class_servGeneric.inc:236 +#, fuzzy +msgid "Memory test" +msgstr "Память" + +#: admin/systems/class_servGeneric.inc:230 +#: admin/systems/class_servGeneric.inc:237 +msgid "Force localboot" +msgstr "" + +#: admin/systems/class_servGeneric.inc:231 +#: admin/systems/class_servGeneric.inc:238 +#, fuzzy +msgid "System analysis" +msgstr "Системные журналы" + +#: admin/systems/class_servGeneric.inc:233 +msgid "Wake up" +msgstr "Вернуть в обычный режим" + +#: admin/systems/class_servGeneric.inc:369 +#, fuzzy +msgid "Software deployment" +msgstr "Управление системами" + +#: admin/systems/class_servGeneric.inc:370 +msgid "" +"This host is currently installing, if you really want to save it, press 'OK'." +msgstr "" + +#: admin/systems/class_servGeneric.inc:503 +#: admin/systems/class_componentGeneric.inc:309 +msgid "Generic" +msgstr "Общее" + +#: admin/systems/class_servGeneric.inc:504 +#, fuzzy +msgid "Server generic" +msgstr "Имя сервера" + +#: admin/systems/class_servGeneric.inc:513 admin/systems/server.tpl:14 +#: admin/systems/class_componentGeneric.inc:320 admin/systems/component.tpl:35 +msgid "Description" +msgstr "Описание" + +#: admin/systems/class_servGeneric.inc:516 +#, fuzzy +msgid "Goto mode" +msgstr "в папку" + +#: admin/systems/class_servGeneric.inc:517 +#: admin/systems/class_componentGeneric.inc:321 +#, fuzzy +msgid "Root password" +msgstr "Изменить пароль" + +#: admin/systems/class_servGeneric.inc:518 +#, fuzzy +msgid "Action flag" +msgstr "Действие" + +#: admin/systems/server.tpl:26 admin/systems/component.tpl:20 +msgid "Choose subtree to place group in" +msgstr "Выберите ветку для группы" + +#: admin/systems/server.tpl:32 admin/systems/component.tpl:25 +#, fuzzy +msgid "Select a base" +msgstr "Выберите, чтобы просмотреть серверы" + +#: admin/systems/server.tpl:42 +msgid "Mode" +msgstr "Режим" + +#: admin/systems/server.tpl:45 +msgid "Select terminal mode" +msgstr "Выберите режим терминала" + +#: admin/systems/server.tpl:63 +msgid "Action" +msgstr "Действие" + +#: admin/systems/server.tpl:69 +msgid "" +"System installation in progress, the FAI state cannot be changed right now." +msgstr "" + +#: admin/systems/server.tpl:72 +#, fuzzy +msgid "Select action to execute for this server" +msgstr "Выберите действие, которое нужно выполнить на этом терминале" + +#: admin/systems/server.tpl:80 +msgid "Execute" +msgstr "Выполнить" + +#: admin/systems/class_termDNS.inc:444 +#, fuzzy +msgid "Not matching" +msgstr "Показать совпадения объектов" + +#: admin/systems/class_termDNS.inc:593 +#, fuzzy, php-format +msgid "IP address %s" +msgstr "IP-адрес" + +#: admin/systems/class_termDNS.inc:602 admin/systems/class_termDNS.inc:614 +#: admin/systems/class_termDNS.inc:616 admin/systems/class_termDNS.inc:982 +#: admin/systems/class_componentGeneric.inc:219 +#: admin/systems/class_componentGeneric.inc:222 +#, fuzzy +msgid "IP address" +msgstr "IP-адрес" + +#: admin/systems/class_termDNS.inc:607 admin/systems/class_termDNS.inc:624 +#: admin/systems/class_termDNS.inc:626 admin/systems/class_termDNS.inc:983 +#, fuzzy +msgid "MAC address" +msgstr "MAC-адрес" + +#: admin/systems/class_termDNS.inc:641 +#, php-format +msgid "The IP address '%s' is not part of the selected reverse zone '%s'!" +msgstr "" + +#: admin/systems/class_termDNS.inc:653 +#, php-format +msgid "Record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:661 +#, php-format +msgid "Uniq record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:673 +#, php-format +msgid "" +"The IP address '%s' will be added as 'A Record', this will be done " +"automatically, please remove the record." +msgstr "" + +#: admin/systems/class_termDNS.inc:681 +#, php-format +msgid "Only lowercase records are allowed, please check your '%ss'." +msgstr "" + +#: admin/systems/class_termDNS.inc:923 admin/systems/class_termDNS.inc:943 +msgid "Add" +msgstr "Добавить" + +#: admin/systems/class_termDNS.inc:937 +msgid "Delete" +msgstr "Удалить" + +#: admin/systems/class_termDNS.inc:973 +#, fuzzy +msgid "DNS" +msgstr "DNS" + +#: admin/systems/class_termDNS.inc:974 +#, fuzzy +msgid "DNS settings" +msgstr "Настройки Samba" + +#: admin/systems/class_termDNS.inc:989 +#, fuzzy +msgid "DNS configuration" +msgstr "Базы данных" + +#: admin/systems/class_termDNS.inc:992 +#, fuzzy +msgid "DHCP configuration" +msgstr "Базы данных" + +#: admin/systems/class_componentGeneric.inc:77 +#, fuzzy +msgid "component" +msgstr "Прочие сетевые компоненты" + +#: admin/systems/class_componentGeneric.inc:310 +#, fuzzy +msgid "Component generic" +msgstr "Прочие сетевые компоненты" + +#: admin/systems/component.tpl:6 +#, fuzzy +msgid "Device name" +msgstr "Имя сервера" + +#, fuzzy +#~ msgid "Win workstation" +#~ msgstr "Рабочая станция" + +#, fuzzy +#~ msgid "Cups Server" +#~ msgstr "Сервер" + +#, fuzzy +#~ msgid "Syslog Server" +#~ msgstr "Сервер системных журналов" + +#, fuzzy +#~ msgid "Mail Server" +#~ msgstr "Сервер" + +#, fuzzy +#~ msgid "Imap Server" +#~ msgstr "Сервер подкачки" + +#, fuzzy +#~ msgid "Nfs Server" +#~ msgstr "Сервер" + +#, fuzzy +#~ msgid "Kerberos Server" +#~ msgstr "Kerberos" + +#, fuzzy +#~ msgid "Asterisk Server" +#~ msgstr "Терминальный сервер" + +#, fuzzy +#~ msgid "Fax Server" +#~ msgstr "Сервер" + +#, fuzzy +#~ msgid "Ldap Server" +#~ msgstr "Сервер подкачки" + +#, fuzzy +#~ msgid "DNS records" +#~ msgstr "Каталог" + +#, fuzzy +#~ msgid "Zone name" +#~ msgstr "Название" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "Компания" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Paste" +#~ msgstr "Дата" + +#, fuzzy +#~ msgid "cut" +#~ msgstr "Выполнить" + +#, fuzzy +#~ msgid "Cut this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Copy this entry" +#~ msgstr "Редактиовать объект" + +#, fuzzy +#~ msgid "Set root password" +#~ msgstr "Изменить пароль" + +#, fuzzy +#~ msgid "Choose a base" +#~ msgstr "Выберите тип мыши" + +#, fuzzy +#~ msgid "Go to root department" +#~ msgstr "Список подразделений" + +#, fuzzy +#~ msgid "Root" +#~ msgstr "Перезагрузить" + +#, fuzzy +#~ msgid "Go up one department" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Go to users department" +#~ msgstr "Выберите подразделение" + +#, fuzzy +#~ msgid "Home" +#~ msgstr "Имя системы" + +#, fuzzy +#~ msgid "Use" +#~ msgstr "Пользователь" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#, fuzzy +#~ msgid "Select this base" +#~ msgstr "Удалить" + +#~ msgid "Phone name" +#~ msgstr "Название" + +#, fuzzy +#~ msgid "Workstation is installing" +#~ msgstr "Имя рабочий станции" + +#, fuzzy +#~ msgid "Workstation is waiting for action" +#~ msgstr "Шаблон рабочей станции для" + +#, fuzzy +#~ msgid "Workstation installation failed" +#~ msgstr "Шаблон рабочей станции" + +#, fuzzy +#~ msgid "Server is waiting for action" +#~ msgstr "Общая информация о пользователе" + +#, fuzzy +#~ msgid "Server installation failed" +#~ msgstr "Номер дома" + +#, fuzzy +#~ msgid "Select to search within subtrees" +#~ msgstr "Искать в поддеревьях" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "Искать в поддеревьях" + +#~ msgid "You can't edit this object type yet!" +#~ msgstr "Вы не можете редактировать сейчас этот тип объекта!" + +#~ msgid "Save" +#~ msgstr "Сохранить" + +#, fuzzy +#~ msgid "You are not allowed to create a new object of this type." +#~ msgstr "У вас недостаточно прав для удаления этого группового объекта!" + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "Вы собираетесь удалить объект %s." + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "Вы собираетесь удалить объект %s." + +#, fuzzy +#~ msgid "You are not allowed to delete this component!" +#~ msgstr "У вас недостаточно прав для удаления этого объекта!" + +#, fuzzy +#~ msgid "You're about to delete all information about the component at '%s'." +#~ msgstr "Вы собираетесь удалить всю информацию о терминале (\"%s\")." + +#~ msgid "Apply" +#~ msgstr "Применить" + +#, fuzzy +#~ msgid "Winstation" +#~ msgstr "Рабочая станция" + +#, fuzzy +#~ msgid "Network Device" +#~ msgstr "Сетевые устройства" + +#, fuzzy +#~ msgid "New Terminal" +#~ msgstr "Создать терминал" + +#, fuzzy +#~ msgid "New Workstation" +#~ msgstr "Новая рабочая станция" + +#, fuzzy +#~ msgid "" +#~ "This menu allows you to add, remove and change the properties of specific " +#~ "systems. You can only add systems which have already been started once." +#~ msgstr "" +#~ "С помощью этого меню вы можете добавлять, изменять и удалять свойства " +#~ "отдельных систем. Вы можете только добавлять системы которые однажды уже " +#~ "были запущены." + +#~ msgid "Select to see servers" +#~ msgstr "Выберите, чтобы просмотреть серверы" + +#~ msgid "Show servers" +#~ msgstr "Показать серверы" + +#, fuzzy +#~ msgid "Select to see Linux terminals" +#~ msgstr "Выберите чтобы посмотреть терминалы" + +#, fuzzy +#~ msgid "Select to see Linux workstations" +#~ msgstr "Выберите чтобы посмотреть рабочие станции" + +#~ msgid "Select to see network printers" +#~ msgstr "Выберите чтобы посмотреть сетевые принтеры" + +#~ msgid "Select to see VOIP phones" +#~ msgstr "Выберите чтобы посмотреть VOIP телефоны" + +#, fuzzy +#~ msgid "Select to see network devices" +#~ msgstr "Выберите чтобы посмотреть сетевые принтеры" + +#, fuzzy +#~ msgid "Show network devices" +#~ msgstr "Сетевые устройства" + +#, fuzzy +#~ msgid "Number of listed servers" +#~ msgstr "Сервер для хранения запросов и временных файлов" + +#, fuzzy +#~ msgid "Number of listed workstations" +#~ msgstr "Выберите чтобы посмотреть рабочие станции" + +#, fuzzy +#~ msgid "Number of listed terminals" +#~ msgstr "Выберите чтобы посмотреть терминалы" + +#, fuzzy +#~ msgid "Number of listed printers" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "Number of listed new devices" +#~ msgstr "Выберите чтобы посмотреть сетевые принтеры" + +#, fuzzy +#~ msgid "Number of listed windows workstations" +#~ msgstr "Показать рабочие станции с windows" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "Подразделение" + +#, fuzzy +#~ msgid "This 'dn' has no server features." +#~ msgstr "Этот DN не имеет свойств принтера." + +#, fuzzy +#~ msgid "This 'dn' has no network features." +#~ msgstr "Этот DN не имеет свойств принтера." + +#, fuzzy +#~ msgid "Removing dhcp entry for this object failed." +#~ msgstr "Удалить сервис DNS" + +#, fuzzy +#~ msgid "Removing old dhcp entry failed." +#~ msgstr "Показать объекты адресной книги" + +#, fuzzy +#~ msgid "Modifying dhcp entry failed." +#~ msgstr "Показать объекты адресной книги" + +#, fuzzy +#~ msgid "Saving of terminal/dns account with dn '%s' failed." +#~ msgstr "Удалить настройки эл. почты" + +#, fuzzy +#~ msgid "Instant update" +#~ msgstr "Создать телефонный аккаунт" + +#, fuzzy +#~ msgid "Scheduled update" +#~ msgstr "Выберите режим терминала" + +#, fuzzy +#~ msgid "Removing of system server/generic with dn '%s' failed." +#~ msgstr "Удалить учетную запись POSIX" + +#, fuzzy +#~ msgid "Removing of server services/" +#~ msgstr "Kerberos" + +#, fuzzy +#~ msgid "Saving of server services/" +#~ msgstr "Служба SSH" + +#, fuzzy +#~ msgid "Set status flag for server services/" +#~ msgstr "Атрибуты UNIX" + +#, fuzzy +#~ msgid "Removing of system component/generic with dn '%s' failed." +#~ msgstr "Показать подразделения" + +#, fuzzy +#~ msgid "" +#~ "Can't execute specified AUTO_NETWORK_HOOK '%s'. Please check your gosa." +#~ "conf." +#~ msgstr "Не удается подключиться к базе журналов, отчеты показаны не будут!" + +#, fuzzy +#~ msgid "The specified IP address is already in use." +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "" +#~ "The specified MAC address '%s' for this system '%s' is already in use." +#~ msgstr "Указанное имя уже используется." + +#, fuzzy +#~ msgid "The required field 'IP-address' is not set." +#~ msgstr "Обязательное поле \"Основной адрес\" не заполнено." + +#, fuzzy +#~ msgid "The required field 'MAC-address' is not set." +#~ msgstr "Обязательное поле \"Основной адрес\" не заполнено." + +#, fuzzy +#~ msgid "No ACTIONCMD definition found in your gosa.conf" +#~ msgstr "Определение HALTCMD в вашем файле gosa.conf не найдено" + +#~ msgid "Execution of '%s' failed!" +#~ msgstr "Ошибка при выполнении \"%s\"!" + +#, fuzzy +#~ msgid "The required field 'Server name' is not set." +#~ msgstr "Обязательное поле \"Личное имя\" не заполнено." + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "Укажите корректный номер телефона." + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "В выбранной вами ветке уже есть запись \"%s\"" + +#, fuzzy +#~ msgid "" +#~ "Command '%s', specified as ACTION_HOOK for plugin '%s' doesn't seem to " +#~ "exist." +#~ msgstr "" +#~ "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s" +#~ "\"." + +#, fuzzy +#~ msgid "The required field 'Component name' is not set." +#~ msgstr "Обязательное поле \"Личное имя\" не заполнено." + +#, fuzzy +#~ msgid "The required field IP address is empty." +#~ msgstr "Обязательное поле \"Основной адрес\" не заполнено." + +#, fuzzy +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "Значение поля \"Имя\" содержит недопустимые символы." diff --git a/trunk/gosa-plugins/systems/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/systems/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..757d36376 --- /dev/null +++ b/trunk/gosa-plugins/systems/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,1397 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: admin/systems/remove.tpl:2 +msgid "Warning" +msgstr "警告" + +#: admin/systems/remove.tpl:6 +#, fuzzy +msgid "" +"This includes all system and setup informations. Please double check if your " +"really want to do this since there is no way for GOsa to get your data back." +msgstr "" +"这包含所有系统和设置信息。请再次检查您是否要这么做,因为 GOsa 没有办法将您的" +"数据找回。" + +#: admin/systems/remove.tpl:10 +msgid "" +"Best thing to do before performing this action would be to save the current " +"contents of your LDAP tree in a file. So - if you've done so - press " +"'Delete' to continue or 'Cancel' to abort." +msgstr "" +"最好在执行这个操作之前,保存当前 LDAP 树中的内容到一个文件。所以,如果您已经" +"这么做了,按“删除”继续或者按“取消”退出。" + +#: admin/systems/class_systemManagement.inc:26 +#: admin/systems/class_divListSystem.inc:88 +msgid "Systems" +msgstr "系统设置" + +#: admin/systems/class_systemManagement.inc:27 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: admin/systems/class_systemManagement.inc:239 +msgid "Back" +msgstr "返回" + +#: admin/systems/class_systemManagement.inc:286 +msgid "Creating the image failed. Please see the report below." +msgstr "创建图片错误。请检查下面的报告。" + +#: admin/systems/class_systemManagement.inc:295 +#, php-format +msgid "Command '%s', specified for ISO creation doesn't seem to exist." +msgstr "命令 '%s',用于创建 ISO 好像并不存在。" + +#: admin/systems/class_systemManagement.inc:344 +#: admin/systems/class_systemManagement.inc:459 +#: admin/systems/class_systemManagement.inc:496 +#: admin/systems/class_systemManagement.inc:504 +#: admin/systems/class_systemManagement.inc:554 +#: admin/systems/class_systemManagement.inc:561 +#: admin/systems/class_systemManagement.inc:576 +#: admin/systems/class_systemManagement.inc:584 +#: admin/systems/class_systemManagement.inc:623 +#: admin/systems/class_systemManagement.inc:717 +#: admin/systems/class_systemManagement.inc:1279 +#: admin/systems/class_serverService.inc:186 +#: admin/systems/class_serverService.inc:236 +#: admin/systems/class_serverService.inc:363 +#: admin/systems/class_termDNS.inc:338 +msgid "Error" +msgstr "错误" + +#: admin/systems/class_systemManagement.inc:399 +#, fuzzy +msgid "Internal error" +msgstr "终端服务器" + +#: admin/systems/class_systemManagement.inc:399 +msgid "Cannot set mode to 'active'!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:584 +msgid "Editing this type of object is not supported yet!" +msgstr "" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#: admin/systems/class_systemManagement.inc:943 +#, fuzzy +msgid "Permission error" +msgstr "允许" + +#: admin/systems/class_systemManagement.inc:611 +#: admin/systems/class_systemManagement.inc:714 +#, fuzzy +msgid "You have no permission to change this password!" +msgstr "现在您无权修改您的口令" + +#: admin/systems/class_systemManagement.inc:623 +#, fuzzy +msgid "" +"The passwords you've entered as 'New password' and 'Repeated password' do " +"not match!" +msgstr "输入的新口令和重复口令不匹配!" + +#: admin/systems/class_systemManagement.inc:698 +#, fuzzy +msgid "Password method" +msgstr "口令存储" + +#: admin/systems/class_systemManagement.inc:698 +msgid "Password method crypt is missing. Cannot set system password." +msgstr "" + +#: admin/systems/class_systemManagement.inc:704 +#: admin/systems/class_systemManagement.inc:1810 +#: admin/systems/services/class_goService.inc:122 +#: admin/systems/services/class_goService.inc:150 +#: admin/systems/services/class_goService.inc:183 +#: admin/systems/class_servGeneric.inc:281 +#: admin/systems/class_servGeneric.inc:433 admin/systems/class_termDNS.inc:483 +#: admin/systems/class_termDNS.inc:771 admin/systems/class_termDNS.inc:790 +#: admin/systems/class_termDNS.inc:811 admin/systems/class_termDNS.inc:816 +#: admin/systems/class_termDNS.inc:834 admin/systems/class_termDNS.inc:906 +#: admin/systems/class_componentGeneric.inc:160 +#: admin/systems/class_componentGeneric.inc:301 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: admin/systems/class_systemManagement.inc:717 +#, fuzzy +msgid "Cannot determine object to change password!" +msgstr "无法检测对象名称。" + +#: admin/systems/class_systemManagement.inc:824 +#: admin/systems/class_servGeneric.inc:165 +#: admin/systems/class_servGeneric.inc:453 +#, fuzzy +msgid "Service infrastructure" +msgstr "设备名称" + +#: admin/systems/class_systemManagement.inc:869 +#, fuzzy +msgid "Permission" +msgstr "允许" + +#: admin/systems/class_systemManagement.inc:1308 +#: admin/systems/class_systemManagement.inc:1621 +msgid "New terminal" +msgstr "新终端" + +#: admin/systems/class_systemManagement.inc:1310 +#: admin/systems/class_systemManagement.inc:1622 +msgid "New workstation" +msgstr "新工作站" + +#: admin/systems/class_systemManagement.inc:1312 +#, fuzzy +msgid "Unknown device" +msgstr "未知" + +#: admin/systems/class_systemManagement.inc:1314 +msgid "New Device" +msgstr "新设备" + +#: admin/systems/class_systemManagement.inc:1339 +msgid "Terminal template for" +msgstr "终端模板" + +#: admin/systems/class_systemManagement.inc:1355 +msgid "Workstation template for" +msgstr "工作站模板" + +#: admin/systems/class_systemManagement.inc:1598 +msgid "Template" +msgstr "模板" + +#: admin/systems/class_systemManagement.inc:1599 +#: admin/systems/class_divListSystem.inc:199 +msgid "Phone" +msgstr "电话" + +#: admin/systems/class_systemManagement.inc:1600 +#: admin/systems/class_componentGeneric.inc:315 +#, fuzzy +msgid "Network device" +msgstr "网络设备" + +#: admin/systems/class_systemManagement.inc:1601 +#: admin/systems/class_divListSystem.inc:203 +msgid "Printer" +msgstr "打印机" + +#: admin/systems/class_systemManagement.inc:1603 +#, fuzzy +msgid "Windows workstation" +msgstr "显示工作站" + +#: admin/systems/class_systemManagement.inc:1605 +#: admin/systems/class_divListSystem.inc:191 +msgid "Workstation" +msgstr "工作站" + +#: admin/systems/class_systemManagement.inc:1606 +#: admin/systems/class_divListSystem.inc:195 +#: admin/systems/class_servGeneric.inc:509 +msgid "Server" +msgstr "服务器" + +#: admin/systems/class_systemManagement.inc:1607 +#: admin/systems/class_divListSystem.inc:187 +msgid "Terminal" +msgstr "终端" + +#: admin/systems/class_systemManagement.inc:1609 +#, fuzzy +msgid "Locked workstation" +msgstr "新工作站" + +#: admin/systems/class_systemManagement.inc:1610 +#, fuzzy +msgid "Locked server" +msgstr "LDAP 服务器" + +#: admin/systems/class_systemManagement.inc:1611 +#, fuzzy +msgid "Locked terminal" +msgstr "新终端" + +#: admin/systems/class_systemManagement.inc:1613 +#, fuzzy +msgid "Workstation error" +msgstr "工作站" + +#: admin/systems/class_systemManagement.inc:1614 +#, fuzzy +msgid "Server error" +msgstr "服务器名称" + +#: admin/systems/class_systemManagement.inc:1615 +#, fuzzy +msgid "Terminal error" +msgstr "终端服务器" + +#: admin/systems/class_systemManagement.inc:1617 +#, fuzzy +msgid "Workstation busy" +msgstr "工作站" + +#: admin/systems/class_systemManagement.inc:1618 +#, fuzzy +msgid "Server busy" +msgstr "服务器" + +#: admin/systems/class_systemManagement.inc:1620 +#, fuzzy +msgid "New system from incoming" +msgstr "新识别的系统" + +#: admin/systems/class_systemManagement.inc:1626 +#: admin/systems/class_divListSystem.inc:214 +#, fuzzy +msgid "Opsi client" +msgstr "瘦客户机" + +#: admin/systems/class_systemManagement.inc:1826 +#: admin/systems/class_systemManagement.inc:1827 +#, fuzzy +msgid "Incoming objects" +msgstr "成员对象" + +#: admin/systems/class_systemManagement.inc:1832 +#, fuzzy +msgid "Incoming" +msgstr "图标" + +#: admin/systems/services/class_goService.inc:44 +#: admin/systems/services/class_goService.inc:79 +#, fuzzy +msgid "Empty service" +msgstr "打印服务" + +#: admin/systems/services/class_goService.inc:237 +#, fuzzy +msgid "Configuration error" +msgstr "配置文件" + +#: admin/systems/services/ServiceAddDialog.tpl:3 +msgid "Adding a new service to the current server" +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:7 +msgid "" +"This dialog allows you to add new services to the currenty edited server " +"object. The box below shows all available but not already used services." +msgstr "" + +#: admin/systems/services/ServiceAddDialog.tpl:13 +#, fuzzy +msgid "Service to add" +msgstr "选择要添加的打印机" + +#: admin/systems/services/ServiceAddDialog.tpl:20 +#, fuzzy +msgid "All available services are already in use." +msgstr "这个设备名已经被使用。" + +#: admin/systems/services/ServiceAddDialog.tpl:28 +msgid "Continue" +msgstr "继续" + +#: admin/systems/class_divListSystem.inc:63 +#: admin/systems/class_divListSystem.inc:64 +msgid "List of systems" +msgstr "系统列表" + +#: admin/systems/class_divListSystem.inc:82 +#, fuzzy +msgid "Select all" +msgstr "选择" + +#: admin/systems/class_divListSystem.inc:88 +#, fuzzy +msgid "Department" +msgstr "系统 / 部门" + +#: admin/systems/class_divListSystem.inc:92 +#, fuzzy +msgid "Release" +msgstr "删除" + +#: admin/systems/class_divListSystem.inc:95 +#: admin/systems/class_divListSystem.inc:181 +#: admin/systems/class_divListSystemService.inc:51 +msgid "Actions" +msgstr "动作" + +#: admin/systems/class_divListSystem.inc:101 +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:423 +#, fuzzy +msgid "servers" +msgstr "服务器" + +#: admin/systems/class_divListSystem.inc:102 +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:117 +#: admin/systems/class_divListSystem.inc:128 +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy, php-format +msgid "Show %s" +msgstr "显示电话" + +#: admin/systems/class_divListSystem.inc:106 +#, fuzzy +msgid "Linux terminals" +msgstr "显示终端" + +#: admin/systems/class_divListSystem.inc:107 +#: admin/systems/class_divListSystem.inc:425 +#, fuzzy +msgid "terminals" +msgstr "终端" + +#: admin/systems/class_divListSystem.inc:111 +#, fuzzy +msgid "Linux workstations" +msgstr "显示工作站" + +#: admin/systems/class_divListSystem.inc:112 +#: admin/systems/class_divListSystem.inc:424 +#, fuzzy +msgid "workstations" +msgstr "工作站" + +#: admin/systems/class_divListSystem.inc:116 +#, fuzzy +msgid "MicroSoft Windows based workstations" +msgstr "选择显示基于 Microsoft Windows 工作站" + +#: admin/systems/class_divListSystem.inc:117 +#, fuzzy +msgid "windows based workstations" +msgstr "显示 Windows 工作站" + +#: admin/systems/class_divListSystem.inc:121 +#, fuzzy, php-format +msgid "Display objects of type '%s'." +msgstr "选择要添加的对象" + +#: admin/systems/class_divListSystem.inc:122 +#, fuzzy +msgid "OPSI installed client" +msgstr "安装设备" + +#: admin/systems/class_divListSystem.inc:122 +msgid "Show OPSI based clients" +msgstr "" + +#: admin/systems/class_divListSystem.inc:127 +#: admin/systems/class_divListSystem.inc:128 +#, fuzzy +msgid "network printers" +msgstr "显示网络打印机" + +#: admin/systems/class_divListSystem.inc:132 +#, fuzzy +msgid "VoIP phones" +msgstr "显示电话" + +#: admin/systems/class_divListSystem.inc:133 +#: admin/systems/class_divListSystem.inc:426 +#, fuzzy +msgid "phones" +msgstr "电话" + +#: admin/systems/class_divListSystem.inc:137 +#: admin/systems/class_divListSystem.inc:138 +#, fuzzy +msgid "network devices" +msgstr "网络设备" + +#: admin/systems/class_divListSystem.inc:146 +msgid "Display systems matching" +msgstr "显示匹配的系统" + +#: admin/systems/class_divListSystem.inc:147 +msgid "Display systems of user" +msgstr "显示用户系统" + +#: admin/systems/class_divListSystem.inc:176 +#: admin/systems/class_servGeneric.inc:514 admin/systems/server.tpl:22 +#: admin/systems/class_componentGeneric.inc:319 admin/systems/component.tpl:17 +msgid "Base" +msgstr "位置" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit department" +msgstr "提交部门" + +#: admin/systems/class_divListSystem.inc:178 +msgid "Submit" +msgstr "提交" + +#: admin/systems/class_divListSystem.inc:183 +msgid "Create" +msgstr "创建" + +#: admin/systems/class_divListSystem.inc:207 +#, fuzzy +msgid "Component" +msgstr "新组件" + +#: admin/systems/class_divListSystem.inc:221 +msgid "Trigger action" +msgstr "" + +#: admin/systems/class_divListSystem.inc:227 +#, fuzzy +msgid "Schedule action" +msgstr "计划更新" + +#: admin/systems/class_divListSystem.inc:234 +msgid "Remove" +msgstr "删除" + +#: admin/systems/class_divListSystem.inc:237 +#, fuzzy +msgid "Activate systems" +msgstr "编辑系统" + +#: admin/systems/class_divListSystem.inc:322 +msgid "edit" +msgstr "编辑" + +#: admin/systems/class_divListSystem.inc:322 +msgid "Edit system" +msgstr "编辑系统" + +#: admin/systems/class_divListSystem.inc:328 +msgid "delete" +msgstr "删除" + +#: admin/systems/class_divListSystem.inc:328 +msgid "Delete system" +msgstr "删除系统" + +#: admin/systems/class_divListSystem.inc:350 +msgid "Password" +msgstr "口令" + +#: admin/systems/class_divListSystem.inc:350 admin/systems/password.tpl:38 +msgid "Set password" +msgstr "设置口令" + +#: admin/systems/class_divListSystem.inc:359 +msgid "Create CD" +msgstr "创建 CD" + +#: admin/systems/class_divListSystem.inc:360 +msgid "Create FAI CD" +msgstr "创建 FAI CD" + +#: admin/systems/class_divListSystem.inc:407 +#: admin/systems/class_divListSystem.inc:408 +#, fuzzy, php-format +msgid "Inherited from %s" +msgstr "对象组" + +#: admin/systems/class_divListSystem.inc:423 +#: admin/systems/class_divListSystem.inc:424 +#: admin/systems/class_divListSystem.inc:425 +#: admin/systems/class_divListSystem.inc:426 +#: admin/systems/class_divListSystem.inc:427 +#: admin/systems/class_divListSystem.inc:428 +#: admin/systems/class_divListSystem.inc:429 +#: admin/systems/class_divListSystem.inc:430 +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy, php-format +msgid "Number of listed '%s'" +msgstr "部门名称" + +#: admin/systems/class_divListSystem.inc:427 +#, fuzzy +msgid "printers" +msgstr "打印机" + +#: admin/systems/class_divListSystem.inc:428 +#, fuzzy +msgid "network components" +msgstr "其他网络组件" + +#: admin/systems/class_divListSystem.inc:429 +#, fuzzy +msgid "new devices" +msgstr "新设备" + +#: admin/systems/class_divListSystem.inc:430 +#, fuzzy +msgid "windows workstations" +msgstr "显示工作站" + +#: admin/systems/class_divListSystem.inc:431 +#, fuzzy +msgid "departments" +msgstr "提交部门" + +#: admin/systems/class_serverService.inc:27 +msgid "Stop" +msgstr "停止" + +#: admin/systems/class_serverService.inc:28 +#, fuzzy +msgid "Start" +msgstr "启动" + +#: admin/systems/class_serverService.inc:29 +#, fuzzy +msgid "Restart" +msgstr "重试" + +#: admin/systems/class_serverService.inc:351 +#, fuzzy +msgid "Information" +msgstr "工作站" + +#: admin/systems/class_serverService.inc:351 +msgid "Cannot update service status until it has been saved!" +msgstr "" + +#: admin/systems/class_serverService.inc:363 +msgid "Cannot update service status!" +msgstr "" + +#: admin/systems/paste_generic.tpl:4 admin/systems/class_servGeneric.inc:339 +#: admin/systems/class_servGeneric.inc:344 +#: admin/systems/class_servGeneric.inc:355 admin/systems/server.tpl:6 +msgid "Server name" +msgstr "服务器名称" + +#: admin/systems/paste_generic.tpl:14 +#, fuzzy +msgid "workstation name" +msgstr "工作站名称" + +#: admin/systems/paste_generic.tpl:24 +msgid "Terminal name" +msgstr "终端名称" + +#: admin/systems/paste_generic.tpl:34 +msgid "Printer name" +msgstr "打印机名称" + +#: admin/systems/paste_generic.tpl:44 +#: admin/systems/class_componentGeneric.inc:209 +#: admin/systems/class_componentGeneric.inc:214 +#: admin/systems/class_componentGeneric.inc:236 +#, fuzzy +msgid "Component name" +msgstr "常用名" + +#: admin/systems/class_divListSystemService.inc:38 +#: admin/systems/class_divListSystemService.inc:39 +#, fuzzy +msgid "Installed services" +msgstr "安装设备" + +#: admin/systems/class_divListSystemService.inc:42 +#, fuzzy +msgid "Add, remove and configure the properties of system services here." +msgstr "" +"这个菜单允许您添加,删除和修改所选系统的属性。您只能添加已经启动过一次的系" +"统。" + +#: admin/systems/class_divListSystemService.inc:50 +#: admin/systems/class_servGeneric.inc:512 +#: admin/systems/class_componentGeneric.inc:318 +msgid "Name" +msgstr "名称" + +#: admin/systems/class_divListSystemService.inc:62 +#, fuzzy +msgid "Add service" +msgstr "添加 DNS 服务" + +#: admin/systems/class_divListSystemService.inc:62 +#, fuzzy +msgid "Add new service" +msgstr "添加 DNS 服务" + +#: admin/systems/class_divListSystemService.inc:65 +#, fuzzy +msgid "Start all" +msgstr "启动" + +#: admin/systems/class_divListSystemService.inc:65 +#, fuzzy +msgid "Start all services" +msgstr "查看所有服务" + +#: admin/systems/class_divListSystemService.inc:67 +#: admin/systems/class_divListSystemService.inc:127 +#, fuzzy +msgid "Stop service" +msgstr "声音服务" + +#: admin/systems/class_divListSystemService.inc:67 +#, fuzzy +msgid "Stop all services" +msgstr "查看所有服务" + +#: admin/systems/class_divListSystemService.inc:69 +#: admin/systems/class_divListSystemService.inc:133 +#, fuzzy +msgid "Restart service" +msgstr "打印服务" + +#: admin/systems/class_divListSystemService.inc:69 +#, fuzzy +msgid "Restart all services" +msgstr "查看所有服务" + +#: admin/systems/class_divListSystemService.inc:99 +#, fuzzy +msgid "Stopped" +msgstr "停止" + +#: admin/systems/class_divListSystemService.inc:100 +#, fuzzy +msgid "Started" +msgstr "州/省" + +#: admin/systems/class_divListSystemService.inc:101 +#, fuzzy +msgid "Restarting" +msgstr "目标" + +#: admin/systems/class_divListSystemService.inc:102 +#, fuzzy +msgid "User status" +msgstr "用户设置" + +#: admin/systems/class_divListSystemService.inc:121 +#, fuzzy +msgid "Start service" +msgstr "扫描服务" + +#: admin/systems/class_divListSystemService.inc:141 +#, fuzzy +msgid "Edit service" +msgstr "打印服务" + +#: admin/systems/class_divListSystemService.inc:149 +#, fuzzy +msgid "Remove service" +msgstr "删除 DNS 服务" + +#: admin/systems/network.tpl:1 +msgid "Network\tsettings" +msgstr "网络\t设置" + +#: admin/systems/network.tpl:9 +msgid "IP-address" +msgstr "IP 地址" + +#: admin/systems/network.tpl:30 admin/systems/network.tpl:32 +#, fuzzy +msgid "Propose ip" +msgstr "属性" + +#: admin/systems/network.tpl:38 +msgid "MAC-address" +msgstr "MAC 地址" + +#: admin/systems/network.tpl:45 +msgid "Autodetect" +msgstr "自动检测" + +#: admin/systems/network.tpl:62 admin/systems/network.tpl:72 +#, fuzzy +msgid "Enable DHCP for this device" +msgstr "启用该设备 DNS" + +#: admin/systems/network.tpl:72 admin/systems/network.tpl:167 +#, fuzzy +msgid "not configured" +msgstr "未配置" + +#: admin/systems/network.tpl:80 +#, fuzzy +msgid "Parent node" +msgstr "Parent 服务器" + +#: admin/systems/network.tpl:93 +#, fuzzy +msgid "Edit settings" +msgstr "编辑设置..." + +#: admin/systems/network.tpl:127 admin/systems/network.tpl:167 +msgid "Enable DNS for this device" +msgstr "启用该设备 DNS" + +#: admin/systems/network.tpl:136 +msgid "Zone" +msgstr "Zone" + +#: admin/systems/network.tpl:146 +msgid "TTL" +msgstr "TTL" + +#: admin/systems/network.tpl:154 +msgid "Dns records" +msgstr "Dns 记录" + +#: admin/systems/main.inc:54 admin/systems/main.inc:56 +msgid "System management" +msgstr "系统管理" + +#: admin/systems/password.tpl:3 +msgid "" +"To change the terminal root password use the fields below. The changes take " +"effect during the next reboot. Please memorize the new password, because you " +"wouldn't be able to log in." +msgstr "" +"用下面的字段来修改终端 root 口令。这项修改将在下次重启之后起作用。请记住新口" +"令,否则您无法登录。" + +#: admin/systems/password.tpl:6 +msgid "Leave fields blank for password inheritance from default entries." +msgstr "如果要口令从缺省条目继承,此项空白" + +#: admin/systems/password.tpl:10 +msgid "Changing the password impinges on authentification only." +msgstr "修改口令仅影响到鉴权。" + +#: admin/systems/password.tpl:15 +msgid "New password" +msgstr "新口令" + +#: admin/systems/password.tpl:21 +msgid "Repeat new password" +msgstr "重复新口令" + +#: admin/systems/password.tpl:26 +#, fuzzy +msgid "Password strength" +msgstr "口令存储" + +#: admin/systems/class_servGeneric.inc:86 +msgid "Activated" +msgstr "活动" + +#: admin/systems/class_servGeneric.inc:87 +msgid "Locked" +msgstr "锁定" + +#: admin/systems/class_servGeneric.inc:148 +#, fuzzy +msgid "server" +msgstr "服务器" + +#: admin/systems/class_servGeneric.inc:169 +msgid "Event error" +msgstr "" + +#: admin/systems/class_servGeneric.inc:170 +#, php-format +msgid "Event '%s' is not available!" +msgstr "" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Switch off" +msgstr "关闭" + +#: admin/systems/class_servGeneric.inc:225 +msgid "Reboot" +msgstr "重启" + +#: admin/systems/class_servGeneric.inc:226 +#: admin/systems/class_servGeneric.inc:235 +#, fuzzy +msgid "System update" +msgstr "系统 / 部门" + +#: admin/systems/class_servGeneric.inc:227 +#: admin/systems/class_servGeneric.inc:234 +msgid "Reinstall" +msgstr "重新安装" + +#: admin/systems/class_servGeneric.inc:228 +msgid "Rescan hardware" +msgstr "重新扫描硬件" + +#: admin/systems/class_servGeneric.inc:229 +#: admin/systems/class_servGeneric.inc:236 +msgid "Memory test" +msgstr "内存测试" + +#: admin/systems/class_servGeneric.inc:230 +#: admin/systems/class_servGeneric.inc:237 +msgid "Force localboot" +msgstr "强制本地启动" + +#: admin/systems/class_servGeneric.inc:231 +#: admin/systems/class_servGeneric.inc:238 +msgid "System analysis" +msgstr "系统分析" + +#: admin/systems/class_servGeneric.inc:233 +msgid "Wake up" +msgstr "唤醒" + +#: admin/systems/class_servGeneric.inc:369 +#, fuzzy +msgid "Software deployment" +msgstr "系统管理" + +#: admin/systems/class_servGeneric.inc:370 +msgid "" +"This host is currently installing, if you really want to save it, press 'OK'." +msgstr "" + +#: admin/systems/class_servGeneric.inc:503 +#: admin/systems/class_componentGeneric.inc:309 +msgid "Generic" +msgstr "通用配置" + +#: admin/systems/class_servGeneric.inc:504 +#, fuzzy +msgid "Server generic" +msgstr "服务器名称" + +#: admin/systems/class_servGeneric.inc:513 admin/systems/server.tpl:14 +#: admin/systems/class_componentGeneric.inc:320 admin/systems/component.tpl:35 +msgid "Description" +msgstr "描述" + +#: admin/systems/class_servGeneric.inc:516 +#, fuzzy +msgid "Goto mode" +msgstr "到目录" + +#: admin/systems/class_servGeneric.inc:517 +#: admin/systems/class_componentGeneric.inc:321 +#, fuzzy +msgid "Root password" +msgstr "设置口令" + +#: admin/systems/class_servGeneric.inc:518 +#, fuzzy +msgid "Action flag" +msgstr "行动" + +#: admin/systems/server.tpl:26 admin/systems/component.tpl:20 +msgid "Choose subtree to place group in" +msgstr "选择来放置组的子树" + +#: admin/systems/server.tpl:32 admin/systems/component.tpl:25 +msgid "Select a base" +msgstr "选择一个位置" + +#: admin/systems/server.tpl:42 +msgid "Mode" +msgstr "模式" + +#: admin/systems/server.tpl:45 +msgid "Select terminal mode" +msgstr "选择终端类型" + +#: admin/systems/server.tpl:63 +msgid "Action" +msgstr "行动" + +#: admin/systems/server.tpl:69 +msgid "" +"System installation in progress, the FAI state cannot be changed right now." +msgstr "" + +#: admin/systems/server.tpl:72 +msgid "Select action to execute for this server" +msgstr "选择为这台服务器要执行的动作" + +#: admin/systems/server.tpl:80 +msgid "Execute" +msgstr "执行" + +#: admin/systems/class_termDNS.inc:444 +msgid "Not matching" +msgstr "不匹配" + +#: admin/systems/class_termDNS.inc:593 +#, fuzzy, php-format +msgid "IP address %s" +msgstr "IP 地址" + +#: admin/systems/class_termDNS.inc:602 admin/systems/class_termDNS.inc:614 +#: admin/systems/class_termDNS.inc:616 admin/systems/class_termDNS.inc:982 +#: admin/systems/class_componentGeneric.inc:219 +#: admin/systems/class_componentGeneric.inc:222 +#, fuzzy +msgid "IP address" +msgstr "IP 地址" + +#: admin/systems/class_termDNS.inc:607 admin/systems/class_termDNS.inc:624 +#: admin/systems/class_termDNS.inc:626 admin/systems/class_termDNS.inc:983 +msgid "MAC address" +msgstr "MAC 地址" + +#: admin/systems/class_termDNS.inc:641 +#, fuzzy, php-format +msgid "The IP address '%s' is not part of the selected reverse zone '%s'!" +msgstr "提供的 IP 地址 '%s' 和所选的反向解析域条目 '%s' 不匹配。" + +#: admin/systems/class_termDNS.inc:653 +#, php-format +msgid "Record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:661 +#, php-format +msgid "Uniq record type '%s' is duplicated!" +msgstr "" + +#: admin/systems/class_termDNS.inc:673 +#, fuzzy, php-format +msgid "" +"The IP address '%s' will be added as 'A Record', this will be done " +"automatically, please remove the record." +msgstr "设备 IP '%s' 将自动作为'A'记录添加,请删除这条记录。" + +#: admin/systems/class_termDNS.inc:681 +#, fuzzy, php-format +msgid "Only lowercase records are allowed, please check your '%ss'." +msgstr "只允许小写字母,请检查您的 '%ss'。" + +#: admin/systems/class_termDNS.inc:923 admin/systems/class_termDNS.inc:943 +msgid "Add" +msgstr "添加" + +#: admin/systems/class_termDNS.inc:937 +msgid "Delete" +msgstr "删除" + +#: admin/systems/class_termDNS.inc:973 +msgid "DNS" +msgstr "" + +#: admin/systems/class_termDNS.inc:974 +#, fuzzy +msgid "DNS settings" +msgstr "Samba 设置" + +#: admin/systems/class_termDNS.inc:989 +#, fuzzy +msgid "DNS configuration" +msgstr "PHP 安装检查" + +#: admin/systems/class_termDNS.inc:992 +#, fuzzy +msgid "DHCP configuration" +msgstr "PHP 安装检查" + +#: admin/systems/class_componentGeneric.inc:77 +#, fuzzy +msgid "component" +msgstr "新组件" + +#: admin/systems/class_componentGeneric.inc:310 +#, fuzzy +msgid "Component generic" +msgstr "新组件" + +#: admin/systems/component.tpl:6 +msgid "Device name" +msgstr "设备名称" + +#, fuzzy +#~ msgid "Win workstation" +#~ msgstr "工作站" + +#~ msgid "Cups Server" +#~ msgstr "Cups 服务器" + +#~ msgid "Log Db" +#~ msgstr "Log DB" + +#~ msgid "Syslog Server" +#~ msgstr "Syslog 服务器" + +#~ msgid "Mail Server" +#~ msgstr "邮件服务器" + +#~ msgid "Imap Server" +#~ msgstr "Imap 服务器" + +#~ msgid "Nfs Server" +#~ msgstr "Nfs 服务器" + +#~ msgid "Kerberos Server" +#~ msgstr "Kerberos 服务器" + +#~ msgid "Asterisk Server" +#~ msgstr "Asterisk 服务器" + +#~ msgid "Fax Server" +#~ msgstr "传真服务器" + +#~ msgid "Ldap Server" +#~ msgstr "LDAP 服务器" + +#, fuzzy +#~ msgid "DNS records" +#~ msgstr "Dns 记录" + +#~ msgid "Zone name" +#~ msgstr "域名称" + +#, fuzzy +#~ msgid "Copy" +#~ msgstr "复制" + +#, fuzzy +#~ msgid "Cut" +#~ msgstr "剪切" + +#~ msgid "Paste" +#~ msgstr "粘贴" + +#~ msgid "cut" +#~ msgstr "剪切" + +#~ msgid "Cut this entry" +#~ msgstr "剪切条目" + +#~ msgid "copy" +#~ msgstr "复制" + +#~ msgid "Copy this entry" +#~ msgstr "拷贝条目" + +#, fuzzy +#~ msgid "Set root password" +#~ msgstr "设置 root 口令" + +#~ msgid "Choose a base" +#~ msgstr "选择一个 base" + +#~ msgid "Go to root department" +#~ msgstr "转到根部门" + +#~ msgid "Root" +#~ msgstr "æ ¹" + +#~ msgid "Go up one department" +#~ msgstr "向上跳转一个部门" + +#~ msgid "Up" +#~ msgstr "上" + +#~ msgid "Go to users department" +#~ msgstr "转到用户部门" + +#~ msgid "Reload list" +#~ msgstr "重新加载列表" + +#~ msgid "" +#~ "Step in the prefered tree and click save to use the current subtree as " +#~ "base. Or click the image at the end of each entry." +#~ msgstr "" +#~ "进入选择的树并点击保存来以当前的子树作为基准。或者点击每个条目后面的图像。" + +#~ msgid "Use" +#~ msgstr "使用" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Filter entries with this syntax" +#~ msgstr "用这个语法过滤条目" + +#~ msgid "Select this base" +#~ msgstr "选择这个 base" + +#~ msgid "Phone name" +#~ msgstr "电话名称" + +#~ msgid "Workstation is installing" +#~ msgstr "工作站正在安装" + +#~ msgid "Workstation is waiting for action" +#~ msgstr "等待的工作站" + +#~ msgid "Workstation installation failed" +#~ msgstr "工作站安装失败" + +#~ msgid "Server is installing" +#~ msgstr "服务器正在安装" + +#~ msgid "Server is waiting for action" +#~ msgstr "等待的服务器" + +#~ msgid "Server installation failed" +#~ msgstr "服务器安装失败" + +#~ msgid "Select to search within subtrees" +#~ msgstr "选择在子树中查询" + +#, fuzzy +#~ msgid "Search in subtrees" +#~ msgstr "在子树中查找" + +#, fuzzy +#~ msgid "The specified method '%s' can't executed for services." +#~ msgstr "给出的 ppd 文件 '%s' 无法打开读取。" + +#~ msgid "You can't edit this object type yet!" +#~ msgstr "您尚无法编辑这个对象类型!" + +#, fuzzy +#~ msgid "" +#~ "Can't set gotoMode to status 'active', the current object couldn't be " +#~ "identified." +#~ msgstr "无法设置状态 gotoMode 为 '活动', 当前对象无法识别。" + +#~ msgid "Save" +#~ msgstr "保存" + +#, fuzzy +#~ msgid "You are not allowed to create a new object of this type." +#~ msgstr "您无权删除这个对象组!" + +#, fuzzy +#~ msgid "You're about to delete the following entry %s" +#~ msgstr "您将要删除条目 %s。" + +#, fuzzy +#~ msgid "You're about to delete the following entries %s" +#~ msgstr "您将要删除条目 %s。" + +#~ msgid "You are not allowed to delete this component!" +#~ msgstr "您无权删除这个组件!" + +#~ msgid "You're about to delete all information about the component at '%s'." +#~ msgstr "您将要删除关于组件 '%s' 的所有信息。" + +#~ msgid "Ok" +#~ msgstr "好" + +#~ msgid "Apply" +#~ msgstr "应用" + +#~ msgid "Winstation" +#~ msgstr "Windows 工作站" + +#~ msgid "Network Device" +#~ msgstr "网络设备" + +#~ msgid "New Terminal" +#~ msgstr "新终端" + +#~ msgid "New Workstation" +#~ msgstr "新工作站" + +#~ msgid "" +#~ "This menu allows you to add, remove and change the properties of specific " +#~ "systems. You can only add systems which have already been started once." +#~ msgstr "" +#~ "这个菜单允许您添加,删除和修改所选系统的属性。您只能添加已经启动过一次的系" +#~ "统。" + +#~ msgid "Select to see servers" +#~ msgstr "选择显示服务器" + +#~ msgid "Show servers" +#~ msgstr "显示服务器" + +#~ msgid "Select to see Linux terminals" +#~ msgstr "选择显示 Linux 终端" + +#~ msgid "Select to see Linux workstations" +#~ msgstr "选择显示 Linux 工作站" + +#~ msgid "Select to see network printers" +#~ msgstr "选择显示网络打印机" + +#~ msgid "Select to see VOIP phones" +#~ msgstr "选择显示 VOIP 电话" + +#~ msgid "Select to see network devices" +#~ msgstr "选择显示网络设备" + +#~ msgid "Show network devices" +#~ msgstr "显示网络设备" + +#, fuzzy +#~ msgid "Number of listed servers" +#~ msgstr "文件服务器" + +#, fuzzy +#~ msgid "Number of listed workstations" +#~ msgstr "选择查看工作站" + +#, fuzzy +#~ msgid "Number of listed terminals" +#~ msgstr "选择查看终端" + +#, fuzzy +#~ msgid "Number of listed printers" +#~ msgstr "部门名称" + +#, fuzzy +#~ msgid "Number of listed new devices" +#~ msgstr "选择显示网络设备" + +#, fuzzy +#~ msgid "Number of listed windows workstations" +#~ msgstr "显示 Windows 工作站" + +#, fuzzy +#~ msgid "Number of listed departments" +#~ msgstr "部门名称" + +#~ msgid "This 'dn' has no server features." +#~ msgstr "这个 'dn' 没有服务器功能。" + +#~ msgid "This 'dn' has no network features." +#~ msgstr "这个 'dn' 没有网络功能。" + +#, fuzzy +#~ msgid "Removing dhcp entry for this object failed." +#~ msgstr "从 kolab 对象删除服务器失败" + +#, fuzzy +#~ msgid "Removing old dhcp entry failed." +#~ msgstr "删除 kolab 主机条目失败" + +#, fuzzy +#~ msgid "Modifying dhcp entry failed." +#~ msgstr "修改 FAI 模板条目失败" + +#, fuzzy +#~ msgid "Saving of terminal/dns account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#, fuzzy +#~ msgid "Saving of system server/generic (FAIstate) with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 服务器服务/反病毒失败。" + +#~ msgid "Instant update" +#~ msgstr "立即更新" + +#~ msgid "Scheduled update" +#~ msgstr "计划更新" + +#, fuzzy +#~ msgid "Removing of system server/generic with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 服务器服务/反病毒失败。" + +#, fuzzy +#~ msgid "Saving of system server/generic with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 服务器服务/反病毒失败。" + +#, fuzzy +#~ msgid "Removing of server services/" +#~ msgstr "删除服务器错误" + +#, fuzzy +#~ msgid "Saving of server services/" +#~ msgstr "保存服务器失败" + +#, fuzzy +#~ msgid "Set status flag for server services/" +#~ msgstr "设置 dn 为 '%s' 服务器服务/反病毒 的状态标记失败。" + +#, fuzzy +#~ msgid "Removing of system component/generic with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of system component/generic with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" + +#~ msgid "" +#~ "Can't execute specified AUTO_NETWORK_HOOK '%s'. Please check your gosa." +#~ "conf." +#~ msgstr "无法执行指定的 AUTO_NETWORK_HOOK '%s',请检查您的 gosa.conf。" + +#, fuzzy +#~ msgid "The specified IP address is already in use." +#~ msgstr "选择的名称已经被使用。" + +#, fuzzy +#~ msgid "" +#~ "The specified MAC address '%s' for this system '%s' is already in use." +#~ msgstr "选择的名称已经被使用。" + +#~ msgid "The required field 'IP-address' is not set." +#~ msgstr "需要的字段“IP 地址”没有设置" + +#~ msgid "Wrong IP format in field IP-address." +#~ msgstr "字段“IP 地址”格式错误" + +#~ msgid "The required field 'MAC-address' is not set." +#~ msgstr "需要的字段“MAC 地址”没有设置。" + +#~ msgid "" +#~ "The given macaddress is invalid. There must be 6 2byte segments seperated " +#~ "by ':'." +#~ msgstr "提供的 MAC 地址无效。必须是由 ':' 分隔的六个两字节片断组成。" + +#~ msgid "Found duplicate value for record type '%s'." +#~ msgstr "发现记录类型 '%s' 有重复。" + +#~ msgid "Found more than one entry for the uniqe record type '%s'." +#~ msgstr "对于唯一记录类型 '%s' 发现了一个以上的条目。" + +#~ msgid "No ACTIONCMD definition found in your gosa.conf" +#~ msgstr "在您的 gosa.conf 中没有找到 ACTIONCMD 的定义" + +#~ msgid "Execution of '%s' failed!" +#~ msgstr "执行 '%s' 失败!" + +#~ msgid "The required field 'Server name' is not set." +#~ msgstr "需要的字段“服务器名称”没有定义。" + +#, fuzzy +#~ msgid "Please specify a valid name for this object." +#~ msgstr "请为这个附件指定一个有效名称。" + +#~ msgid "There is already an entry '%s' in the base choosen by you" +#~ msgstr "在您选择的部门中已经存在条目 '%s'" + +#~ msgid "" +#~ "Command '%s', specified as ACTION_HOOK for plugin '%s' doesn't seem to " +#~ "exist." +#~ msgstr "命令 '%s',作为插件 '%s' 的 ACTION_HOOK 好像并不存在。" + +#~ msgid "The required field 'Component name' is not set." +#~ msgstr "需要的字段“组件名称”没有设置。" + +#~ msgid "The required field IP address is empty." +#~ msgstr "需要的 IP 地址字段为空。" + +#~ msgid "The field IP address contains an invalid address." +#~ msgstr "IP 地址字段包含无效地址。" diff --git a/trunk/gosa-plugins/systems/plugin.dsc b/trunk/gosa-plugins/systems/plugin.dsc new file mode 100644 index 000000000..a0f5fdcb1 --- /dev/null +++ b/trunk/gosa-plugins/systems/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = systems +description = "System management base plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +provides = systems diff --git a/trunk/gosa-plugins/uw-imap/contrib/procmail-discard.txt b/trunk/gosa-plugins/uw-imap/contrib/procmail-discard.txt new file mode 100644 index 000000000..365707bdc --- /dev/null +++ b/trunk/gosa-plugins/uw-imap/contrib/procmail-discard.txt @@ -0,0 +1,4 @@ +# Discard any local messages +:0 : +/dev/null + diff --git a/trunk/gosa-plugins/uw-imap/contrib/procmail-footer.txt b/trunk/gosa-plugins/uw-imap/contrib/procmail-footer.txt new file mode 100644 index 000000000..ae0b579b1 --- /dev/null +++ b/trunk/gosa-plugins/uw-imap/contrib/procmail-footer.txt @@ -0,0 +1,10 @@ +# Care for cleanups + +# Remove stale vacation cache +:0 +* ! \$GOSA_VACATION ?? yes +* ! ? test -f \$VACATION_CACHE +{ + rm -f \$VACATION_CACHE +} + diff --git a/trunk/gosa-plugins/uw-imap/contrib/procmail-header.txt b/trunk/gosa-plugins/uw-imap/contrib/procmail-header.txt new file mode 100644 index 000000000..d56dc8fbc --- /dev/null +++ b/trunk/gosa-plugins/uw-imap/contrib/procmail-header.txt @@ -0,0 +1,15 @@ +#*** Procmail script for $user *** + +DROPPRIVS=true + + +# Include variable definitions from procmail library +INCLUDERC=\$PMSRC/pm-javar.rc + + +# Check for empty body and discard +:0 B: +*\$ ! \$NSPC +/dev/null + + diff --git a/trunk/gosa-plugins/uw-imap/contrib/procmail-spam.txt b/trunk/gosa-plugins/uw-imap/contrib/procmail-spam.txt new file mode 100644 index 000000000..7616dd1cb --- /dev/null +++ b/trunk/gosa-plugins/uw-imap/contrib/procmail-spam.txt @@ -0,0 +1,34 @@ +# procmail spam handling +GOSA_SPAM="yes" + +:0 +* ! ^From:.*($addrlist) +* ! FROM_DAEMON +{ + + # Do not add extra headers. This saves external shell call + # (formail). Also do not try to kill the message content, + # again saving one external call (awk). With these, the + # recipe is faster and more CPU friendly. + PM_JA_UBE_HDR = "" + JA_UBE_ATTACHMENT_ILLEGAL_KILL = "no" + JA_UBE_FLAG_FROM_NSLOOKUP = "no" + + INCLUDERC = \$PMSRC/pm-jaube.rc + + # Variable "ERROR" is set if message was UBE, record error + # to log file with "()\/" + + :0 : + * ERROR ?? ()\/[a-z].* + { + # Don't save those *.exe, *.zip UBE attachements + :0 + * ERROR ?? Attachment-FileIllegal + /dev/null + + :0 : + $spambox + } +} + diff --git a/trunk/gosa-plugins/uw-imap/contrib/procmail-vacation.txt b/trunk/gosa-plugins/uw-imap/contrib/procmail-vacation.txt new file mode 100644 index 000000000..d3b0c751a --- /dev/null +++ b/trunk/gosa-plugins/uw-imap/contrib/procmail-vacation.txt @@ -0,0 +1,35 @@ +# Vacation message +GOSA_VACATION=yes +VACATION_CACHE=\$HOME/.vacation.cache + +:0 +* ^TO_$mail +* ! ^FROM_DAEMON +* ! ^X-Loop: ($addrlist) +* ! ^Precedence:.*(bulk|list|junk) +{ + :0 c: \$HOME/.vacation.\$LOCKEXT + * ! ? formail -rD 8192 \$VACATION_CACHE + { + # Compose reply and add some basic headers + :0 fhw + | formail -rt \ + -A "Precedence: junk" \ + -A "X-Loop: $mail" + + :0 a # Formail succeeded + { + # Change subject + :0 fhw + * ^Subject: *\/[^ ].* + | formail -I "Subject: vacation (was: \$MATCH)" + + :0 fb # put message to body + | echo -n "$vacmsg" + + :0 # Send it + | \$SENDMAIL + } + } +} + diff --git a/trunk/gosa-plugins/uw-imap/personal/mail/uw-imap/class_mail-methods-uwimap.inc b/trunk/gosa-plugins/uw-imap/personal/mail/uw-imap/class_mail-methods-uwimap.inc new file mode 100644 index 000000000..4aa558c56 --- /dev/null +++ b/trunk/gosa-plugins/uw-imap/personal/mail/uw-imap/class_mail-methods-uwimap.inc @@ -0,0 +1,146 @@ +config->data['SERVERS']['IMAP'])){ + $this->ServerList = $this->config->data['SERVERS']['IMAP']; + } + + /* Check for required PROCMAIL_PATH configuration + */ + if($this->config->get_cfg_value("procMailPath","") == ""){ + msg_dialog::display(_("Configuration error"),msgPool::invalidConfigurationAttribute("procMailPath"), ERROR_DIALOG); + $this->procmaildir = ""; + }else{ + $this->procmaildir = $this->config->data['MAIN']['PROCMAIL_PATH']; + } + } + + + public function saveSieveSettings() + { + if(empty($this->procmaildir)){ + @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "", + "MAIL: Skippend writting scripts, 'procMailPath' is not configured"); + return; + } + + mailMethod::saveSieveSettings(); + /* Map attribute from parent class + */ + $mail = $this->parent->mail; + $gosaMailDeliveryMode = $this->parent->gosaMailDeliveryMode; + $gosaMailAlternateAddress = $this->parent->gosaMailAlternateAddress; + $gosaMailMaxSize = $this->parent->gosaMailMaxSize; + $gosaSpamMailbox = $this->parent->gosaSpamMailbox; + $gosaSpamSortLevel = $this->parent->gosaSpamSortLevel; + $gosaVacationMessage = $this->parent->gosaVacationMessage; + + $recipe = ""; + $addrlist = $mail; + foreach ($gosaMailAlternateAddress as $val){ + $addrlist .= "|$val"; + } + $user = $this->getUAttribValue(); + + /* Only create a new one, if it is not empty */ + if (is_integer(strpos($gosaMailDeliveryMode, "R")) || + is_integer(strpos($gosaMailDeliveryMode, "C")) || + !is_integer(strpos($gosaMailDeliveryMode, "L")) || + is_integer(strpos($gosaMailDeliveryMode, "V")) || + is_integer(strpos($gosaMailDeliveryMode, "S"))) { + $text= implode ("", file(CONFIG_DIR."/procmail-header.txt")); + $text = preg_replace('/"/', '\\"', $text); + eval ("\$recipe.=\"$text\";"); + } + + /* Add anti-spam variables */ + if (is_integer(strpos($gosaMailDeliveryMode, "S"))) { + $spambox = $gosaSpamMailbox; + $spamlevel = $gosaSpamSortLevel; + $text= implode ("", file(CONFIG_DIR."/procmail-spam.txt")); + $text = preg_replace('/"/', '\\"', $text); + eval ("\$recipe.=\"$text\";"); + } + + /* Add vacation recipe */ + if (is_integer(strpos($gosaMailDeliveryMode, "V"))) { + $vacmsg = $gosaVacationMessage; + $text= implode ("", file(CONFIG_DIR."/procmail-vacation.txt")); + $text = preg_replace('/"/', '\\"', $text); + eval ("\$recipe.=\"$text\";"); + } + + /* Check if no local delivery is wanted */ + if (!is_integer(strpos($gosaMailDeliveryMode, "L"))) { + $text= implode ("", file(CONFIG_DIR."/procmail-discard.txt")); + $text = preg_replace('/"/', '\\"', $text); + eval ("\$recipe.=\"$text\";"); + } + + /* Write procmail script */ + if (!empty($recipe)) { + $text= implode ("", file(CONFIG_DIR."/procmail-footer.txt")); + $text = preg_replace('/"/', '\\"', $text); + eval ("\$recipe.=\"$text\";"); + $file = $this->procmaildir . "/" . $this->getUAttribValue(); + + if (!file_put_contents($file, $recipe)) { + msg_dialog::display(_("Error"),(sprintf(_("Unable to write procmail script to '%s'."), $file)),ERROR_DIALOG); + } + } + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/uw-imap/plugin.dsc b/trunk/gosa-plugins/uw-imap/plugin.dsc new file mode 100644 index 000000000..fac14b507 --- /dev/null +++ b/trunk/gosa-plugins/uw-imap/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = uw-imap +description = "UW imap mail method" +version = 2.6.4 +author = "Gero Kuhlmann , Fabian Hickert " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = mail diff --git a/trunk/gosa-plugins/webdav/help/guide.xml b/trunk/gosa-plugins/webdav/help/guide.xml new file mode 100644 index 000000000..e69de29bb diff --git a/trunk/gosa-plugins/webdav/locale/de/LC_MESSAGES/messages.po b/trunk/gosa-plugins/webdav/locale/de/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ebf347939 --- /dev/null +++ b/trunk/gosa-plugins/webdav/locale/de/LC_MESSAGES/messages.po @@ -0,0 +1,49 @@ +# translation of messages.po to Deutsch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004, 2005, 2006. +# Jan Wenzel , 2004,2005, 2008. +# Stefan Koehler , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2008-04-03 16:04+0200\n" +"Last-Translator: Jan Wenzel \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.11.4\n" + +#: personal/connectivity/webdav/class_webdavAccount.inc:6 +#: personal/connectivity/webdav/class_webdavAccount.inc:166 +msgid "WebDAV" +msgstr "WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:7 +msgid "This does something" +msgstr "Dies tut etwas" + +#: personal/connectivity/webdav/class_webdavAccount.inc:91 +#: personal/connectivity/webdav/class_webdavAccount.inc:147 +msgid "LDAP error" +msgstr "LDAP-Fehler" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#: personal/connectivity/webdav/webdav.tpl:5 +msgid "WebDAV account" +msgstr "WebDAV-Konto" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +msgid "Connectivity addon" +msgstr "Konnektivitäts-Erweiterung" + +#: personal/connectivity/webdav/class_webdavAccount.inc:171 +msgid "My account" +msgstr "Mein Konto" diff --git a/trunk/gosa-plugins/webdav/locale/es/LC_MESSAGES/messages.po b/trunk/gosa-plugins/webdav/locale/es/LC_MESSAGES/messages.po new file mode 100644 index 000000000..7222f0868 --- /dev/null +++ b/trunk/gosa-plugins/webdav/locale/es/LC_MESSAGES/messages.po @@ -0,0 +1,52 @@ +# translation of admin.po to +# translation of systems.po to +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: admin\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2007-07-24 00:26+0200\n" +"Last-Translator: ALEJANDRO ESCANERO BLANCO\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.11.4\n" + +#: personal/connectivity/webdav/class_webdavAccount.inc:6 +#: personal/connectivity/webdav/class_webdavAccount.inc:166 +msgid "WebDAV" +msgstr "WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:7 +msgid "This does something" +msgstr "" + +#: personal/connectivity/webdav/class_webdavAccount.inc:91 +#: personal/connectivity/webdav/class_webdavAccount.inc:147 +#, fuzzy +msgid "LDAP error" +msgstr "Servicio LDAP" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#: personal/connectivity/webdav/webdav.tpl:5 +msgid "WebDAV account" +msgstr "Cuenta WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +msgid "Connectivity addon" +msgstr "Conectividad adicional" + +#: personal/connectivity/webdav/class_webdavAccount.inc:171 +msgid "My account" +msgstr "Mi cuenta" + +#~ msgid "Removing of user/webDAV account with dn '%s' failed." +#~ msgstr "Ha fallado al eliminar la cuenta usuario/WebDAV con dn '%s'." + +#~ msgid "Saving of user/webDAV account with dn '%s' failed." +#~ msgstr "Ha fallado al guardar la cuenta de usuario/WebDAV con dn '%s'." diff --git a/trunk/gosa-plugins/webdav/locale/fr/LC_MESSAGES/messages.po b/trunk/gosa-plugins/webdav/locale/fr/LC_MESSAGES/messages.po new file mode 100644 index 000000000..db1ae6da6 --- /dev/null +++ b/trunk/gosa-plugins/webdav/locale/fr/LC_MESSAGES/messages.po @@ -0,0 +1,50 @@ +# translation of messages.po to Français +# Benoit Mortier , 2005, 2006, 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2007-07-19 11:57+0200\n" +"Last-Translator: Benoit Mortier \n" +"Language-Team: Français \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: personal/connectivity/webdav/class_webdavAccount.inc:6 +#: personal/connectivity/webdav/class_webdavAccount.inc:166 +msgid "WebDAV" +msgstr "WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:7 +msgid "This does something" +msgstr "Ceci fait quelque chose" + +#: personal/connectivity/webdav/class_webdavAccount.inc:91 +#: personal/connectivity/webdav/class_webdavAccount.inc:147 +msgid "LDAP error" +msgstr "Erreur LDAP" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#: personal/connectivity/webdav/webdav.tpl:5 +msgid "WebDAV account" +msgstr "Compte WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +msgid "Connectivity addon" +msgstr "Connectivité" + +#: personal/connectivity/webdav/class_webdavAccount.inc:171 +msgid "My account" +msgstr "Mon Compte" + +#~ msgid "Removing of user/webDAV account with dn '%s' failed." +#~ msgstr "" +#~ "La suppression du compte/webDAV de l'utilisateur avec le dn '%s' à échoué." + +#~ msgid "Saving of user/webDAV account with dn '%s' failed." +#~ msgstr "" +#~ "La sauvegarde du compte/webDAV de l'utilisateur avec le dn '%s' à échoué." diff --git a/trunk/gosa-plugins/webdav/locale/it/LC_MESSAGES/messages.po b/trunk/gosa-plugins/webdav/locale/it/LC_MESSAGES/messages.po new file mode 100644 index 000000000..125a35fed --- /dev/null +++ b/trunk/gosa-plugins/webdav/locale/it/LC_MESSAGES/messages.po @@ -0,0 +1,53 @@ +# translation of messages.po to Italian +# Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ +# Copyright (c) 2005 Alessandro Amici +# Alessandro Amici , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2005-11-18 15:26+0100\n" +"Last-Translator: Alessandro Amici \n" +"Language-Team: Italian\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" + +#: personal/connectivity/webdav/class_webdavAccount.inc:6 +#: personal/connectivity/webdav/class_webdavAccount.inc:166 +msgid "WebDAV" +msgstr "WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:7 +msgid "This does something" +msgstr "Questo fa qualcosa" + +#: personal/connectivity/webdav/class_webdavAccount.inc:91 +#: personal/connectivity/webdav/class_webdavAccount.inc:147 +#, fuzzy +msgid "LDAP error" +msgstr "Errore LDAP" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#: personal/connectivity/webdav/webdav.tpl:5 +msgid "WebDAV account" +msgstr "Estenzioni WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#, fuzzy +msgid "Connectivity addon" +msgstr "Connettività" + +#: personal/connectivity/webdav/class_webdavAccount.inc:171 +msgid "My account" +msgstr "Identità" + +#, fuzzy +#~ msgid "Removing of user/webDAV account with dn '%s' failed." +#~ msgstr "Elimina estensioni telefoniche" + +#, fuzzy +#~ msgid "Saving of user/webDAV account with dn '%s' failed." +#~ msgstr "Estenzioni WebDAV" diff --git a/trunk/gosa-plugins/webdav/locale/messages.po b/trunk/gosa-plugins/webdav/locale/messages.po new file mode 100644 index 000000000..0e03ecaac --- /dev/null +++ b/trunk/gosa-plugins/webdav/locale/messages.po @@ -0,0 +1,44 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/webdav/class_webdavAccount.inc:6 +#: personal/connectivity/webdav/class_webdavAccount.inc:166 +msgid "WebDAV" +msgstr "" + +#: personal/connectivity/webdav/class_webdavAccount.inc:7 +msgid "This does something" +msgstr "" + +#: personal/connectivity/webdav/class_webdavAccount.inc:91 +#: personal/connectivity/webdav/class_webdavAccount.inc:147 +msgid "LDAP error" +msgstr "" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#: personal/connectivity/webdav/webdav.tpl:5 +msgid "WebDAV account" +msgstr "" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +msgid "Connectivity addon" +msgstr "" + +#: personal/connectivity/webdav/class_webdavAccount.inc:171 +msgid "My account" +msgstr "" diff --git a/trunk/gosa-plugins/webdav/locale/nl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/webdav/locale/nl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..3eae05d73 --- /dev/null +++ b/trunk/gosa-plugins/webdav/locale/nl/LC_MESSAGES/messages.po @@ -0,0 +1,57 @@ +# translation of messages.po to Dutch +# GOsa2 Translations +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# Alfred Schroeder , 2004. +# Cajus Pollmeier , 2004. +# +# Translator: +# Niels Klomp (CareWorks ICT Services) , 2005. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2006-06-02 16:58+0100\n" +"Last-Translator: Niels Klomp (CareWorks ICT Services) \n" +"Language-Team: CareWorks ICT Services \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: personal/connectivity/webdav/class_webdavAccount.inc:6 +#: personal/connectivity/webdav/class_webdavAccount.inc:166 +msgid "WebDAV" +msgstr "WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:7 +msgid "This does something" +msgstr "Dit doet iets" + +#: personal/connectivity/webdav/class_webdavAccount.inc:91 +#: personal/connectivity/webdav/class_webdavAccount.inc:147 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP fout:" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#: personal/connectivity/webdav/webdav.tpl:5 +msgid "WebDAV account" +msgstr "WebDAV Account" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#, fuzzy +msgid "Connectivity addon" +msgstr "Verbindingen" + +#: personal/connectivity/webdav/class_webdavAccount.inc:171 +msgid "My account" +msgstr "Mijn account" + +#, fuzzy +#~ msgid "Removing of user/webDAV account with dn '%s' failed." +#~ msgstr "Het verwijderen van het webDAV account is mislukt" + +#, fuzzy +#~ msgid "Saving of user/webDAV account with dn '%s' failed." +#~ msgstr "Het opslaan van het webDAV account is mislukt" diff --git a/trunk/gosa-plugins/webdav/locale/pl/LC_MESSAGES/messages.po b/trunk/gosa-plugins/webdav/locale/pl/LC_MESSAGES/messages.po new file mode 100644 index 000000000..71fbbed97 --- /dev/null +++ b/trunk/gosa-plugins/webdav/locale/pl/LC_MESSAGES/messages.po @@ -0,0 +1,50 @@ +msgid "" +msgstr "" +"Project-Id-Version: polski\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2007-07-14 21:45+0100\n" +"Last-Translator: Piotr Rybicki \n" +"Language-Team: Piotr Rybicki \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" +"X-Poedit-SourceCharset: iso-8859-2\n" +"X-Poedit-Basepath: tedst\n" + +#: personal/connectivity/webdav/class_webdavAccount.inc:6 +#: personal/connectivity/webdav/class_webdavAccount.inc:166 +msgid "WebDAV" +msgstr "WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:7 +msgid "This does something" +msgstr "To robi coś" + +#: personal/connectivity/webdav/class_webdavAccount.inc:91 +#: personal/connectivity/webdav/class_webdavAccount.inc:147 +#, fuzzy +msgid "LDAP error" +msgstr "błąd LDAP:" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#: personal/connectivity/webdav/webdav.tpl:5 +msgid "WebDAV account" +msgstr "Konto WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#, fuzzy +msgid "Connectivity addon" +msgstr "Konto połączeń" + +#: personal/connectivity/webdav/class_webdavAccount.inc:171 +msgid "My account" +msgstr "Moje konto " + +#~ msgid "Removing of user/webDAV account with dn '%s' failed." +#~ msgstr "Usuwanie konta webDAV z dn '%s' nieudane." + +#~ msgid "Saving of user/webDAV account with dn '%s' failed." +#~ msgstr "Zapisywanie konta webDAV z dn '%s' nieudane." diff --git a/trunk/gosa-plugins/webdav/locale/ru/LC_MESSAGES/messages.po b/trunk/gosa-plugins/webdav/locale/ru/LC_MESSAGES/messages.po new file mode 100644 index 000000000..9b7cef2a8 --- /dev/null +++ b/trunk/gosa-plugins/webdav/locale/ru/LC_MESSAGES/messages.po @@ -0,0 +1,52 @@ +# Translation of messages.po to Russian +# Valia V. Vaneeva , 2004. +# $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2005-04-18 14:35+0300\n" +"Last-Translator: Igor Muratov \n" +"Language-Team: ALT Linux Team\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: poEdit 1.3.1\n" + +#: personal/connectivity/webdav/class_webdavAccount.inc:6 +#: personal/connectivity/webdav/class_webdavAccount.inc:166 +msgid "WebDAV" +msgstr "WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:7 +msgid "This does something" +msgstr "Что-то будет" + +#: personal/connectivity/webdav/class_webdavAccount.inc:91 +#: personal/connectivity/webdav/class_webdavAccount.inc:147 +#, fuzzy +msgid "LDAP error" +msgstr "Ошибка LDAP:" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#: personal/connectivity/webdav/webdav.tpl:5 +msgid "WebDAV account" +msgstr "Учетная запись WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#, fuzzy +msgid "Connectivity addon" +msgstr "Подключение" + +#: personal/connectivity/webdav/class_webdavAccount.inc:171 +msgid "My account" +msgstr "Моя учетная запись" + +#, fuzzy +#~ msgid "Removing of user/webDAV account with dn '%s' failed." +#~ msgstr "Удалить телефонный аккаунт" + +#, fuzzy +#~ msgid "Saving of user/webDAV account with dn '%s' failed." +#~ msgstr "Учетная запись WebDAV" diff --git a/trunk/gosa-plugins/webdav/locale/zh/LC_MESSAGES/messages.po b/trunk/gosa-plugins/webdav/locale/zh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..ccaebfd5a --- /dev/null +++ b/trunk/gosa-plugins/webdav/locale/zh/LC_MESSAGES/messages.po @@ -0,0 +1,55 @@ +# translation of messages.po to Chinese Simplified +# Copyright (C) 2003 GONICUS GmbH, Germany +# This file is distributed under the same license as the GOsa2 package. +# +# Jiang Xin , 2007. +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-12-19 08:38+0100\n" +"PO-Revision-Date: 2007-06-03 12:27+0800\n" +"Last-Translator: Jiang Xin \n" +"Language-Team: Chinese Simplified \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: personal/connectivity/webdav/class_webdavAccount.inc:6 +#: personal/connectivity/webdav/class_webdavAccount.inc:166 +msgid "WebDAV" +msgstr "WebDAV" + +#: personal/connectivity/webdav/class_webdavAccount.inc:7 +#, fuzzy +msgid "This does something" +msgstr "******" + +#: personal/connectivity/webdav/class_webdavAccount.inc:91 +#: personal/connectivity/webdav/class_webdavAccount.inc:147 +#, fuzzy +msgid "LDAP error" +msgstr "LDAP 错误:" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#: personal/connectivity/webdav/webdav.tpl:5 +msgid "WebDAV account" +msgstr "WebDAV 账号" + +#: personal/connectivity/webdav/class_webdavAccount.inc:167 +#, fuzzy +msgid "Connectivity addon" +msgstr "互联" + +#: personal/connectivity/webdav/class_webdavAccount.inc:171 +msgid "My account" +msgstr "我的账号" + +#, fuzzy +#~ msgid "Removing of user/webDAV account with dn '%s' failed." +#~ msgstr "删除 dn 为 '%s' 的 user/kolab 账号失败。" + +#, fuzzy +#~ msgid "Saving of user/webDAV account with dn '%s' failed." +#~ msgstr "保存 dn 为 '%s' 的 user/kolab 账号为空。" diff --git a/trunk/gosa-plugins/webdav/personal/connectivity/webdav/class_webdavAccount.inc b/trunk/gosa-plugins/webdav/personal/connectivity/webdav/class_webdavAccount.inc new file mode 100644 index 000000000..3af4185d9 --- /dev/null +++ b/trunk/gosa-plugins/webdav/personal/connectivity/webdav/class_webdavAccount.inc @@ -0,0 +1,228 @@ +attrs['uid'][0])){ + $this->uid = $this->attrs['uid'][0]; + } + } + + function execute() + { + /* Call parent execute */ +// plugin::execute(); + + /* Log view */ + if($this->is_account && !$this->view_logged){ + $this->view_logged = TRUE; + new log("view","users/".get_class($this),$this->dn); + } + + /* Show tab dialog headers */ + $display= ""; + + /* Show main page */ + $smarty= get_smarty(); + + if ($this->is_account){ + $smarty->assign("webdavState", "checked"); + } else { + $smarty->assign("webdavState", ""); + $smarty->assign("wstate", "disabled"); + } + + if ($this->parent !== NULL){ + $smarty->assign("tabbed", 1); + } + + /* check if we are allowed to switch the checkbox. + */ + $smarty->assign('webdavAccountACL', preg_replace("/w/","",$this->getacl("",$this->ReadOnly))); + if(($this->acl_is_removeable() && $this->is_account) || + ($this->acl_is_createable() && !$this->is_account)){ + $smarty->assign('webdavAccountACL', $this->getacl("",$this->ReadOnly)); + } + + $smarty->assign("use_webdav",in_array("webdav",$this->multi_boxes)); + $smarty->assign("multiple_support",$this->multiple_support_active); + $display.= $smarty->fetch (get_template_path('webdav.tpl', TRUE, dirname(__FILE__))); + return ($display); + } + + function remove_from_parent() + { + if($this->acl_is_createable() || $this->is_account){ + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + plugin::remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove',array("uid" => $this->uid)); + } + } + + + /* Save data to object */ + function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + if (isset($_POST['webdav'])){ + if (!$this->is_account && $_POST['webdav'] == "B"){ + if($this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + + plugin::save_object(); + if (isset($_POST["WEBDAVStatus"])){ + $this->WEBDAVStatus = "disabled"; + } else { + $this->WEBDAVStatus = "enabled"; + } + } + + + /* Save to LDAP */ + function save() + { + if($this->acl_is_createable()){ + plugin::save(); + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + /* Log last action */ + if($this->initially_was_account){ + new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + }else{ + new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); + } + + if (!$ldap->success()){ + msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); + } + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + } + } + + /* Return plugin informations for acl handling + #FIXME This is only an enable/disable checkbox for this account, there is possibly a better solution available later */ + static function plInfo() + { + return (array( + "plShortName" => _("WebDAV"), + "plDescription" => _("WebDAV account")." ("._("Connectivity addon").")", + "plSelfModify" => TRUE, + "plDepends" => array("user"), + "plPriority" => 23, // Position in tabs + "plSection" => array("personal" => _("My account")), + "plCategory" => array("users"), + "plOptions" => array(), + + "plProvidedAcls" => array() + )); + } + + function multiple_save_object() + { + if (isset($_POST['connectivityTab'])){ + plugin::multiple_save_object(); + + if(isset($_POST['use_webdav'])){ + $this->multi_boxes[] = "webdav"; + if (isset($_POST['webdav'])){ + if (!$this->is_account && $_POST['webdav'] == "B"){ + if($this->acl_is_createable()){ + $this->is_account= TRUE; + } + } + } else { + if($this->acl_is_removeable()){ + $this->is_account= FALSE; + } + } + } + } + } + + function get_multi_edit_values() + { + $ret = plugin::get_multi_edit_values(); + if(in_array("webdav",$this->multi_boxes)){ + $ret['is_account'] = $this->is_account; + } + return($ret); + } + + function set_multi_edit_values($values) + { + plugin::set_multi_edit_values($values); + if(isset($values['is_account'])){ + $this->is_account = $values['is_account']; + } + } + + function init_multiple_support($attrs,$all) + { + plugin::init_multiple_support($attrs,$all); + if(isset($attrs['objectClass']) && in_array("gosaWebdavAccount",$attrs['objectClass'])){ + $this->is_account = TRUE; + } + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/trunk/gosa-plugins/webdav/personal/connectivity/webdav/webdav.tpl b/trunk/gosa-plugins/webdav/personal/connectivity/webdav/webdav.tpl new file mode 100644 index 000000000..df52197a5 --- /dev/null +++ b/trunk/gosa-plugins/webdav/personal/connectivity/webdav/webdav.tpl @@ -0,0 +1,6 @@ +

      +{render acl=$webdavAccountACL checkbox=$multiple_support checked=$use_webdav} + +{/render} + {t}WebDAV account{/t} +

      diff --git a/trunk/gosa-plugins/webdav/plugin.dsc b/trunk/gosa-plugins/webdav/plugin.dsc new file mode 100644 index 000000000..374a8cb56 --- /dev/null +++ b/trunk/gosa-plugins/webdav/plugin.dsc @@ -0,0 +1,7 @@ +[gosa-plugin] +name = webdav +description = "WebDAV connectivity plugin" +version = 2.6.4 +author = "Cajus Pollmeier " +homepage = https://oss.gonicus.de/labs/gosa/ +depends = connectivity diff --git a/trunk/gosa-si/Doxyfile b/trunk/gosa-si/Doxyfile new file mode 100644 index 000000000..250d3774c --- /dev/null +++ b/trunk/gosa-si/Doxyfile @@ -0,0 +1,305 @@ +# Doxyfile 1.5.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = GOsa-SI +PROJECT_NUMBER = 1.0 +OUTPUT_DIRECTORY = /var/www/gosa/trunk/gosa-si/ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /home/rettenbe/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /var/www/gosa/trunk/gosa-si/ +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.vhd \ + *.vhdl \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.PY \ + *.F90 \ + *.F \ + *.VHD \ + *.VHDL \ + *.pm +RECURSIVE = YES +EXCLUDE = /var/www/gosa/trunk/gosa-si/debian/ +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = doxygenfilter +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +HTML_DYNAMIC_SECTIONS = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NONE +TREEVIEW_WIDTH = 250 +FORMULA_FONTSIZE = 10 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = YES +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +DOT_FONTNAME = FreeSans +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = YES +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/trunk/gosa-si/README b/trunk/gosa-si/README new file mode 100644 index 000000000..a172a00f0 --- /dev/null +++ b/trunk/gosa-si/README @@ -0,0 +1,28 @@ + +/usr/share/perl5/GOSA +common: +- GosaSupportDaemon.pm +- DBsqlite.pm + +/usr/lib/gosa-si/modules +server-module: +- ArpPackages.pm +- GosaPackages.pm +- ServerPackages.pm +- FAIPackages.pm + +server-events: +/usr/lib/gosa-si/server +- ping + +client-events: +/usr/lib/gosa-si/client + +config-files: /etc/gosa-si/ +- client.conf +- server.conf + +/var/lib/gosa-si +db's: +- jobs.db + diff --git a/trunk/gosa-si/client.conf b/trunk/gosa-si/client.conf new file mode 100644 index 000000000..25cd6b86e --- /dev/null +++ b/trunk/gosa-si/client.conf @@ -0,0 +1,10 @@ +[general] +log-file = /var/log/gosa-si-client.log +pid-file = /var/run/gosa-si-client.pid + +[client] +fai-logpath = /var/log/fai/fai.log + +[server] +key = secret-server-password + diff --git a/trunk/gosa-si/client.conf.pod b/trunk/gosa-si/client.conf.pod new file mode 100644 index 000000000..092b56777 --- /dev/null +++ b/trunk/gosa-si/client.conf.pod @@ -0,0 +1,118 @@ + +=head1 NAME + +gosa-si-client.conf - Configuration file for gosa-si-client. + + +=head1 DESCRIPTION + +The gosa-si-client.conf file defines all parameter GOsa-SI-client needs for running and communication with GOsa-SI-server. It is normally located in the F directory and is generated automatically by the gosa-si-client(1) program during installation. + +=head1 DIRECTIVES + +=head2 [general] + +=over 4 + +=item log-file = /var/run/gosa-si-client.log + +Defines the location for the log file. + +=item pid-file = /var/run/gosa-si-client.pid + +Defines the location for the pid file. + +=back + + +=head2 [client] + +=over 4 + +=item port = 20083 + +Defines the port GOsa-SI-client is listening for incoming messages. + +=item ip = 0.0.0.0 + +If set GOsa-SI-client is forced to use this ip address. If it is not set, an automated determination is tried. + +=item mac-address = 00:00:00:00:00:00 + +If set GOsa-SI-client is forced to use this mac address. If it is not set, an automated determination is tried. + +=item server-domain = + +Forces the search domain used to get possible servers from DNS. If not set, the client will search the domains from $ENV. + +=item ldap = 1 | 0 + +If set to '1', the client will get the LDAP-Configuration from the registration server (on every registration process). Under some circumstances this is not wanted, so setting to '0' disables this behavior. + +=item ldap-config = /etc/ldap/ldap.conf + +Defines the location for ldap.conf file. + +=item pam-config = /etc/pam_ldap.conf + +Defines the location for pam-ldap.conf file. + +=item nss-config = /etc/libnss-ldap.conf + +Defines the location for libnss-ldap.conf file. + +=item fai-logpath = /var/log/fai/fai.log + +Defines the location for fai.log file. + +=item force-hostname = false | true + +If set to true, client will try to get the hostname for registration from $ENV. Used in FAI environments, when hostname gets set from DHCP. + +=back + + +=head2 [server] + +=over 4 + +=item ip = 127.0.0.1 + +If set GOsa-SI-client is forced to register at specified GOsa-SI-Server. If it is not set, GOsa-SI tries to register at GOsa-SI-servers found in DNS. + +=item port = 20081 + +Defines the port GOsa-SI-server is listening for incoming messages. + +=item key = + +Defines the password GOsa-SI-server messages should be encrypted. This has to be modified, default value will usually not work!!! + +=item timeout = 10 + +Defines in seconds the timeout GOsa-SI-client is waiting for the next try if all registraion efforts fails. + +=item key-lifetime = 600 + +Defines in seconds the lifetime of the key GOsa-SI-server messages should be encrypted with. + +=back + + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list or to + + +=head1 LICENCE AND COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + +=cut diff --git a/trunk/gosa-si/client/events/corefunctions.pm b/trunk/gosa-si/client/events/corefunctions.pm new file mode 100644 index 000000000..7e19a8b18 --- /dev/null +++ b/trunk/gosa-si/client/events/corefunctions.pm @@ -0,0 +1,627 @@ +package corefunctions; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "registered", + 'new_syslog_config', + "new_ntp_config", + "new_ldap_config", + "new_key", + "generate_hw_digest", # no implementations + "detect_hardware", + "confirm_new_key", + "ping", + "import_events", # no implementations + ); +@EXPORT = @events; + +use strict; +use warnings; +use Data::Dumper; +use Fcntl; +use GOSA::GosaSupportDaemon; +use File::Basename; + +my ($ldap_enabled, $offline_enabled, $ldap_config, $pam_config, $nss_config, $fai_logpath); + +my $chrony_file = "/etc/chrony/chrony.conf"; +my $syslog_file = "/etc/syslog.conf"; + +my %cfg_defaults = ( + "client" => { + "ldap" => [\$ldap_enabled, 1], + "offline-ldap" => [\$offline_enabled, 0], + "ldap-config" => [\$ldap_config, "/etc/ldap/ldap.conf"], + "pam-config" => [\$pam_config, "/etc/pam_ldap.conf"], + "nss-config" => [\$nss_config, "/etc/libnss-ldap.conf"], + "fai-logpath" => [\$fai_logpath, "/var/log/fai/fai.log"], + }, +); + +BEGIN {} + +END {} + +### Start ###################################################################### + +&main::read_configfile($main::cfg_file, %cfg_defaults); + + +my $server_address = $main::server_address; +my $server_key = $main::server_key; +my $client_mac_address = $main::client_mac_address; + +sub write_to_file { + my ($string, $file) = @_; + my $error = 0; + + if( not defined $file || not -f $file ) { + &main::daemon_log("ERROR: $0: check '-f file' failed: $file", 1); + $error++; + } + if( not defined $string || 0 == length($string)) { + &main::daemon_log("ERROR: $0: empty string to write to file '$file'", 1); + $error++; + } + + if( $error == 0 ) { + + chomp($string); + + if( not -f $file ) { + open (FILE, "$file"); + close(FILE); + } + open(FILE, ">> $file") or &main::daemon_log("ERROR in corefunctions.pm: can not open '$file' to write '$string'", 1);; + print FILE $string."\n"; + close(FILE); + } + + return; +} + + +sub get_events { + return \@events; +} + +sub daemon_log { + my ($msg, $level) = @_ ; + &main::daemon_log($msg, $level); + return; +} + +sub registered { + my ($msg, $msg_hash) = @_ ; + + my $header = @{$msg_hash->{'header'}}[0]; + if( $header eq "registered" ) { + my $source = @{$msg_hash->{'source'}}[0]; + &main::daemon_log("INFO: registration at $source", 1); + $main::server_address = $source; + } + + # set globaly variable client_address + my $target = @{$msg_hash->{'target'}}[0]; + $main::client_address = $target; + + # set registration_flag to true + my $out_hash = &create_xml_hash("registered", $main::client_address, $main::server_address); + # Write the MAC address to file + if(stat($main::opts_file)) { + unlink($main::opts_file); + } + + my $opts_file_FH; + my $hostname= $main::client_dnsname; + $hostname =~ s/\..*$//; + $hostname =~ tr/A-Z/a-z/; + open($opts_file_FH, ">$main::opts_file"); + print $opts_file_FH "MAC=\"$main::client_mac_address\"\n"; + print $opts_file_FH "IPADDRESS=\"$main::client_ip\"\n"; + print $opts_file_FH "HOSTNAME=\"$hostname\"\n"; + print $opts_file_FH "FQDN=\"$main::client_dnsname\"\n"; + if(defined(@{$msg_hash->{'ldap_available'}}) && + @{$msg_hash->{'ldap_available'}}[0] eq "true") { + print $opts_file_FH "LDAP_AVAILABLE=\"true\"\n"; + } + if(defined(@{$msg_hash->{'error'}})) { + my $errormsg= @{$msg_hash->{'error'}}[0]; + print $opts_file_FH "GOSA_SI_ERROR=\"$errormsg\"\n"; + &write_to_file($errormsg, $fai_logpath); + } + close($opts_file_FH); + + my $out_msg = &create_xml_string($out_hash); + return $out_msg; +} + +sub server_leaving { + my ($msg_hash) = @_ ; + my $source = @{$msg_hash->{'source'}}[0]; + my $header = @{$msg_hash->{'header'}}[0]; + + daemon_log("gosa-si-server $source is going down, cause registration procedure", 1); + $main::server_address = "none"; + $main::server_key = "none"; + + # reinitialization of default values in config file + &main::read_configfile; + + # registrated at new daemon + &main::register_at_server(); + + return; +} + + +## @method new_syslog_config +# Update or add syslog messages forwarding to specified syslog server. +# @param msg - STRING - xml message with tag server +# @param msg_hash - HASHREF - message information parsed into a hash +sub new_syslog_config { + my ($msg, $msg_hash) = @_ ; + + # Sanity check of incoming message + if ((not exists $msg_hash->{'server'}) || (not @{$msg_hash->{'server'}} == 1) ) { + &main::daemon_log("ERROR: 'new_syslog_config'-message does not contain a syslog server: $msg", 1); + return; + } + + # Fetch the new syslog server from incoming message + my $syslog_server = @{$msg_hash->{'server'}}[0]; + &main::daemon_log("INFO: found syslog server: ".join(", ", $syslog_server), 5); + my $found_server_flag = 0; + + # Sanity check of /etc/syslog.conf + if (not -f $syslog_file) { + &main::daemon_log("ERROR: file '$syslog_file' does not exist, cannot do syslog reconfiguration!", 1); + return; + } + + # Substitute existing server with new syslog server + open (FILE, "<$syslog_file"); + my @file = ; + close FILE; + my $syslog_server_line = "*.*\t@".$syslog_server."\n"; + foreach my $line (@file) { + if ($line =~ /^\*\.\*\s+@/) { + $line = $syslog_server_line; + $found_server_flag++; + } + } + + # Append new server if no old server configuration found + if (not $found_server_flag) { + push(@file, "\n#\n# syslog server configuration written by GOsa-si\n#\n"); + push(@file, $syslog_server_line); + } + + # Write changes to file and close it + open (FILE, "+>$syslog_file"); + print FILE join("", @file); + close FILE; + &main::daemon_log("INFO: wrote new configuration file: $syslog_file", 5); + + # Restart syslog deamon + my $res = qx(/etc/init.d/sysklogd restart); + &main::daemon_log("INFO: restart syslog daemon: $res", 5); + + return; +} + + +## @method new_ntp_config +# Updates the server options in /etc/chrony/chrony.conf and restarts the chrony service +# @param msg - STRING - xml message with tag server +# @param msg_hash - HASHREF - message information parsed into a hash +sub new_ntp_config { + my ($msg, $msg_hash) = @_ ; + + # Sanity check of incoming message + if ((not exists $msg_hash->{'server'}) || (not @{$msg_hash->{'server'}} >= 1) ) { + &main::daemon_log("ERROR: 'new_ntp_config'-message does not contain a ntp server: $msg", 1); + return; + } + + # Fetch the new ntp server from incoming message + my $ntp_servers = $msg_hash->{'server'}; + &main::daemon_log("INFO: found ntp server: ".join(", ", @$ntp_servers), 5); + my $ntp_servers_string = "server\t".join("\nserver\t", @$ntp_servers)."\n"; + my $found_server_flag = 0; + + # Sanity check of /etc/chrony/chrony.conf + if (not -f $chrony_file) { + &main::daemon_log("ERROR: file '$chrony_file' does not exist, cannot do ntp reconfiguration!", 1); + return; + } + + # Substitute existing server with new ntp server + open (FILE, "<$chrony_file"); + my @file = ; + close FILE; + my @new_file; + foreach my $line (@file) { + if ($line =~ /^server\s+/) { + if ($found_server_flag) { + $line =~ s/^server\s+[\S]+\s+$//; + } else { + $line =~ s/^server\s+[\S]+\s+$/$ntp_servers_string/; + } + $found_server_flag++; + } + push(@new_file, $line); + } + + # Append new server if no old server configuration found + if (not $found_server_flag) { + push(@new_file, "\n# ntp server configuration written by GOsa-si\n"); + push(@new_file, $ntp_servers_string); + } + + # Write changes to file and close it + open (FILE, ">$chrony_file"); + print FILE join("", @new_file); + close FILE; + &main::daemon_log("INFO: wrote new configuration file: $chrony_file", 5); + + # Restart chrony deamon + my $res = qx(/etc/init.d/chrony force-reload); + &main::daemon_log("INFO: restart chrony daemon: $res", 5); + + return; +} + + +sub new_ldap_config { + my ($msg, $msg_hash) = @_ ; + + if( $ldap_enabled != 1 ) { + return; + } + + my $element; + my @ldap_uris; + my $ldap_base; + my @ldap_options; + my @pam_options; + my @nss_options; + my $goto_admin; + my $goto_secret; + my $admin_base= ""; + my $department= ""; + my $release= ""; + my $unit_tag; + + # Transform input into array + while ( my ($key, $value) = each(%$msg_hash) ) { + if ($key =~ /^(source|target|header)$/) { + next; + } + + foreach $element (@$value) { + if ($key =~ /^ldap_uri$/) { + push (@ldap_uris, $element); + next; + } + if ($key =~ /^ldap_base$/) { + $ldap_base= $element; + next; + } + if ($key =~ /^goto_admin$/) { + $goto_admin= $element; + next; + } + if ($key =~ /^goto_secret$/) { + $goto_secret= $element; + next; + } + if ($key =~ /^ldap_cfg$/) { + push (@ldap_options, "$element"); + next; + } + if ($key =~ /^pam_cfg$/) { + push (@pam_options, "$element"); + next; + } + if ($key =~ /^nss_cfg$/) { + push (@nss_options, "$element"); + next; + } + if ($key =~ /^admin_base$/) { + $admin_base= $element; + next; + } + if ($key =~ /^department$/) { + $department= $element; + next; + } + if ($key =~ /^unit_tag$/) { + $unit_tag= $element; + next; + } + if ($key =~ /^release$/) { + $release= $element; + next; + } + } + } + + # Unit tagging enabled? + if (defined $unit_tag){ + push (@pam_options, "pam_filter gosaUnitTag=$unit_tag"); + push (@nss_options, "nss_base_passwd $admin_base?sub?gosaUnitTag=$unit_tag"); + push (@nss_options, "nss_base_group $admin_base?sub?gosaUnitTag=$unit_tag"); + } + + # Setup ldap.conf + my $file1; + my $file2; + open(file1, "> $ldap_config"); + print file1 "# This file was automatically generated by gosa-si-client. Do not change.\n"; + print file1 "URI"; + foreach $element (@ldap_uris) { + print file1 " $element"; + } + print file1 "\nBASE $ldap_base\n"; + foreach $element (@ldap_options) { + print file1 "$element\n"; + } + close (file1); + daemon_log("wrote $ldap_config", 5); + + # Setup pam_ldap.conf / libnss-ldap.conf + open(file1, "> $pam_config"); + open(file2, "> $nss_config"); + print file1 "# This file was automatically generated by gosa-si-client. Do not change.\n"; + print file2 "# This file was automatically generated by gosa-si-client. Do not change.\n"; + print file1 "uri"; + print file2 "uri"; + foreach $element (@ldap_uris) { + print file1 " $element"; + print file2 " $element"; + } + print file1 "\nbase $ldap_base\n"; + print file2 "\nbase $ldap_base\n"; + foreach $element (@pam_options) { + print file1 "$element\n"; + } + foreach $element (@nss_options) { + print file2 "$element\n"; + } + close (file2); + daemon_log("wrote $nss_config", 5); + close (file1); + daemon_log("wrote $pam_config", 5); + + # Create goto.secrets if told so - for compatibility reasons + if (defined $goto_admin){ + open(file1, "> /etc/goto/secret"); + close(file1); + chown(0,0, "/etc/goto/secret"); + chmod(0600, "/etc/goto/secret"); + open(file1, "> /etc/goto/secret"); + print file1 "GOTOADMIN=\"$goto_admin\"\nGOTOSECRET=\"$goto_secret\"\n"; + close(file1); + daemon_log("wrote /etc/goto/secret", 5); + } + + # Write shell based config + my $cfg_name= "/etc/ldap/ldap-shell.conf"; + + # Get first LDAP server + my $ldap_server= $ldap_uris[0]; + $ldap_server=~ s/^ldap:\/\/([^:]+).*$/$1/; + + open(file1, "> $cfg_name"); + print file1 "LDAP_BASE=\"$ldap_base\"\n"; + print file1 "LDAP_SERVER=\"$ldap_server\"\n"; + print file1 "LDAP_URIS=\"@ldap_uris\"\n"; + print file1 "ADMIN_BASE=\"$admin_base\"\n"; + print file1 "DEPARTMENT=\"$department\"\n"; + print file1 "RELEASE=\"$release\"\n"; + print file1 "UNIT_TAG=\"".(defined $unit_tag ? "$unit_tag" : "")."\"\n"; + print file1 "UNIT_TAG_FILTER=\"".(defined $unit_tag ? "(gosaUnitTag=$unit_tag)" : "")."\"\n"; + close(file1); + daemon_log("wrote $cfg_name", 5); + + # Write offline config + if ($offline_enabled){ + $cfg_name= "/etc/ldap/ldap-offline.conf"; + + # Get first LDAP server + open(file1, "> $cfg_name"); + print file1 "LDAP_BASE=\"$ldap_base\"\n"; + print file1 "LDAP_SERVER=\"127.0.0.1\"\n"; + print file1 "LDAP_URIS=\"ldap://127.0.0.1\"\n"; + print file1 "ADMIN_BASE=\"$admin_base\"\n"; + print file1 "DEPARTMENT=\"$department\"\n"; + print file1 "RELEASE=\"$release\"\n"; + print file1 "UNIT_TAG=\"".(defined $unit_tag ? "$unit_tag" : "")."\"\n"; + print file1 "UNIT_TAG_FILTER=\"".(defined $unit_tag ? "(gosaUnitTag=$unit_tag)" : "")."\"\n"; + close(file1); + daemon_log("wrote $cfg_name", 5); + } + + return; +} + + +sub new_key { + # my ($msg_hash) = @_ ; + my $new_server_key = &main::create_passwd(); + + my $out_hash = &create_xml_hash("new_key", $main::client_address, $main::server_address, $new_server_key); + my $out_msg = &create_xml_string($out_hash); + + # set global $NEW_KEY_FLAG, gosa-si-client cause a reregistering process if no 'confirm_new_key'-msg + # comes from gosa-si-server within a given time + + + return $out_msg; +} + + +sub confirm_new_key { + my ($msg, $msg_hash) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + + &main::daemon_log("confirm new key from $source", 5); + return; + +} + + +sub detect_hardware { + + &write_to_file('goto-hardware-detection-start', $fai_logpath); + + my $hwinfo= `which hwinfo`; + chomp $hwinfo; + + if (!(defined($hwinfo) && length($hwinfo) > 0)) { + &main::daemon_log("ERROR: hwinfo was not found in \$PATH! Hardware detection will not work!", 1); + return; + } + + my $result= { + gotoHardwareChecksum => &main::generate_hw_digest(), + macAddress => $client_mac_address, + gotoXMonitor => "", + gotoXDriver => "", + gotoXMouseType => "", + gotoXMouseport => "", + gotoXkbModel => "", + gotoXHsync => "", + gotoXVsync => "", + gotoXResolution => "", + ghUsbSupport => "", + gotoSndModule => "", + ghGfxAdapter => "", + ghNetNic => "", + ghSoundAdapter => "", + ghMemSize => "", + ghCpuType => "", + gotoModules => [], + ghIdeDev => [], + ghScsiDev => [], + }; + + &main::daemon_log("Starting hardware detection", 4); + my $gfxcard= `$hwinfo --gfxcard`; + my $primary_adapter= $1 if $gfxcard =~ /^Primary display adapter:\s#(\d+)\n/m; + if(defined($primary_adapter)) { + ($result->{ghGfxAdapter}, $result->{gotoXDriver}) = ($1,$2) if + $gfxcard =~ /$primary_adapter:.*?Model:\s\"([^\"]*)\".*?Server Module:\s(\w*).*?\n\n/s; + } + my $monitor= `$hwinfo --monitor`; + my $primary_monitor= $1 if $monitor =~ /^(\d*):.*/m; + if(defined($primary_monitor)) { + ($result->{gotoXMonitor}, $result->{gotoXResolution}, $result->{gotoXVsync}, $result->{gotoXHsync})= ($1,$2,$3,$4) if + $monitor =~ /$primary_monitor:\s.*?Model:\s\"(.*?)\".*?Max\.\sResolution:\s([0-9x]*).*?Vert\.\sSync\sRange:\s([\d\-]*)\sHz.*?Hor\.\sSync\sRange:\s([\d\-]*)\skHz.*/s; + } + + if(length($result->{gotoXHsync}) == 0) { + # set default values + $result->{gotoXHsync} = "30+50"; + $result->{gotoXVsync} = "30+90"; + } + + my $mouse= `$hwinfo --mouse`; + my $primary_mouse= $1 if $mouse =~ /^(\d*):.*/m; + if(defined($primary_mouse)) { + ($result->{gotoXMouseport}, $result->{gotoXMouseType}) = ($1,$2) if + $mouse =~ /$primary_mouse:\s.*?Device\sFile:\s(.*?)\s.*?XFree86\sProtocol:\s(.*?)\n.*?/s; + } + + my $sound= `$hwinfo --sound`; + my $primary_sound= $1 if $sound =~ /^(\d*):.*/m; + if(defined($primary_sound)) { + ($result->{ghSoundAdapter}, $result->{gotoSndModule})= ($1,$2) if + $sound =~ /$primary_sound:\s.*?Model:\s\"(.*?)\".*?Driver\sModules:\s\"(.*?)\".*/s; + } + + my $netcard= `hwinfo --netcard`; + my $primary_netcard= $1 if $netcard =~ /^(\d*):.*/m; + if(defined($primary_netcard)) { + $result->{ghNetNic}= $1 if $netcard =~ /$primary_netcard:\s.*?Model:\s\"(.*?)\".*/s; + } + + my $keyboard= `hwinfo --keyboard`; + my $primary_keyboard= $1 if $keyboard =~ /^(\d*):.*/m; + if(defined($primary_keyboard)) { + $result->{gotoXkbModel}= $1 if $keyboard =~ /$primary_keyboard:\s.*?XkbModel:\s(.*?)\n.*/s; + } + + $result->{ghCpuType}= sprintf "%s / %s - %s", + `cat /proc/cpuinfo` =~ /.*?vendor_id\s+:\s(.*?)\n.*?model\sname\s+:\s(.*?)\n.*?cpu\sMHz\s+:\s(.*?)\n.*/s; + $result->{ghMemSize}= $1 if `cat /proc/meminfo` =~ /^MemTotal:\s+(.*?)\skB.*/s; + + my @gotoModules=(); + for my $line(`lsmod`) { + if (($line =~ /^Module.*$/) or ($line =~ /^snd.*$/)) { + next; + } else { + push @gotoModules, $1 if $line =~ /^(\w*).*$/ + } + } + my %seen = (); + + # Remove duplicates and save + push @{$result->{gotoModules}}, grep { ! $seen{$_} ++ } @gotoModules; + + $result->{ghUsbSupport} = (-d "/proc/bus/usb")?"true":"false"; + + foreach my $device(`hwinfo --ide` =~ /^.*?Model:\s\"(.*?)\".*$/mg) { + push @{$result->{ghIdeDev}}, $device; + } + + foreach my $device(`hwinfo --scsi` =~ /^.*?Model:\s\"(.*?)\".*$/mg) { + push @{$result->{ghScsiDev}}, $device; + } + + &main::daemon_log("Hardware detection done!", 4); + + &write_to_file('goto-hardware-detection-stop', $fai_logpath); + + return &main::send_msg_hash_to_target( + &main::create_xml_hash("detected_hardware", $main::client_address, $main::server_address, $result), + $main::server_address, + $main::server_key, + ); +} + + +sub ping { + my ($msg, $msg_hash) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $out_msg; + my $out_hash; + + # there is no session_id so send 'got_new_ping'-msg + if (not defined $session_id) { + $out_hash = &main::create_xml_hash("got_new_ping", $target, $source); + + # there is a session_id so send 'answer_$session_id'-msg because there is + # a process waiting for this message + } else { + $out_hash = &main::create_xml_hash("answer_$session_id", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + } + + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + $out_msg = &main::create_xml_string($out_hash); + return $out_msg; + +} + +1; diff --git a/trunk/gosa-si/client/events/dak.pm b/trunk/gosa-si/client/events/dak.pm new file mode 100644 index 000000000..2b7c27d68 --- /dev/null +++ b/trunk/gosa-si/client/events/dak.pm @@ -0,0 +1,218 @@ +## @file +# @details A GOsa-SI event module containing all functions used by GOsa dak +# @brief Implementation of a GOsa-SI-client event module. + +package dak; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "get_dak_keyring", + "import_dak_key", + "remove_dak_key", + ); +@EXPORT = @events; + + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Data::Dumper; +use MIME::Base64; + +BEGIN {} + +END {} + +our ($dak_base_directory, $dak_signing_keys_directory, $dak_queue_directory, $dak_user); + +my %cfg_defaults = ( +"client" => + {"dak-base" => [\$dak_base_directory, "/srv/archive"], + "dak-keyring" => [\$dak_signing_keys_directory, "/srv/archive/keyrings"], + "dak-queue" => [\$dak_queue_directory, "/srv/archive/queue"], + "dak-user" => [\$dak_user, "deb-dak"], + }, +); +&GOSA::GosaSupportDaemon::read_configfile($main::config_file, %cfg_defaults); + + +## @method get_events() +# A brief function returning a list of functions which are exported by importing the module. +# @return List of all provided functions +sub get_events { return \@events; } + + +sub get_dak_keyring { + my ($msg, $msg_hash) = @_; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $header= @{$msg_hash->{'header'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + my @keys; + my %data; + + my $keyring = $main::dak_signing_keys_directory."/keyring.gpg"; + + my $gpg_cmd = `which gpg`; chomp $gpg_cmd; + my $gpg = "$gpg_cmd --no-default-keyring --no-random-seed --keyring $keyring"; + + # Check if the keyrings are in place and readable + if( + &run_as($main::dak_user, "test -r $keyring")->{'resultCode'} != 0 + ) { + &add_content2xml_hash($out_hash, "error", "DAK Keyring is not readable"); + } else { + my $command = "$gpg --list-keys"; + my $output = &run_as($main::dak_user, $command); + &main::daemon_log("$session_id DEBUG: ".$output->{'command'}, 7); + + my $i=0; + foreach (@{$output->{'output'}}) { + if ($_ =~ m/^pub\s.*$/) { + ($keys[$i]->{'pub'}->{'length'}, $keys[$i]->{'pub'}->{'uid'}, $keys[$i]->{'pub'}->{'created'}) = ($1, $2, $3) + if $_ =~ m/^pub\s*?(\w*?)\/(\w*?)\s(\d{4}-\d{2}-\d{2})/; + $keys[$i]->{'pub'}->{'expires'} = $1 if $_ =~ m/^pub\s*?\w*?\/\w*?\s\d{4}-\d{2}-\d{2}\s\[expires:\s(\d{4}-\d{2}-\d{2})\]/; + $keys[$i]->{'pub'}->{'expired'} = $1 if $_ =~ m/^pub\s*?\w*?\/\w*?\s\d{4}-\d{2}-\d{2}\s\[expired:\s(\d{4}-\d{2}-\d{2})\]/; + } elsif ($_ =~ m/^sub\s.*$/) { + ($keys[$i]->{'sub'}->{'length'}, $keys[$i]->{'sub'}->{'uid'}, $keys[$i]->{'sub'}->{'created'}) = ($1, $2, $3) + if $_ =~ m/^sub\s*?(\w*?)\/(\w*?)\s(\d{4}-\d{2}-\d{2})/; + $keys[$i]->{'sub'}->{'expires'} = $1 if $_ =~ m/^pub\s*?\w*?\/\w*?\s\d{4}-\d{2}-\d{2}\s\[expires:\s(\d{4}-\d{2}-\d{2})\]/; + $keys[$i]->{'sub'}->{'expired'} = $1 if $_ =~ m/^pub\s*?\w*?\/\w*?\s\d{4}-\d{2}-\d{2}\s\[expired:\s(\d{4}-\d{2}-\d{2})\]/; + } elsif ($_ =~ m/^uid\s.*$/) { + push @{$keys[$i]->{'uid'}}, $1 if $_ =~ m/^uid\s*?([^\s].*?)$/; + } elsif ($_ =~ m/^$/) { + $i++; + } + } + } + + my $i=0; + foreach my $key (@keys) { + # &main::daemon_log(Dumper($key)); + &add_content2xml_hash($out_hash, "answer".$i++, $key); + } + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + return &create_xml_string($out_hash); +} + + +sub import_dak_key { + my ($msg, $msg_hash) = @_; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $header= @{$msg_hash->{'header'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $key = &decode_base64(@{$msg_hash->{'key'}}[0]); + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + my %data; + + my $keyring = $main::dak_signing_keys_directory."/keyring.gpg"; + + my $gpg_cmd = `which gpg`; chomp $gpg_cmd; + my $gpg = "$gpg_cmd --no-default-keyring --no-random-seed --keyring $keyring"; + + # Check if the keyrings are in place and writable + if( + &run_as($main::dak_user, "test -w $keyring")->{'resultCode'} != 0 + ) { + &add_content2xml_hash($out_hash, "error", "DAK Keyring is not writable"); + } else { + my $keyfile; + open($keyfile, ">/tmp/gosa_si_tmp_dak_key"); + print $keyfile $key; + close($keyfile); + my $command = "$gpg --import /tmp/gosa_si_tmp_dak_key"; + my $output = &run_as($main::dak_user, $command); + &main::daemon_log("$session_id DEBUG: ".$output->{'command'}, 7); + unlink("/tmp/gosa_si_tmp_dak_key"); + + if($output->{'resultCode'} != 0) { + &add_content2xml_hash($out_hash, "error", "Import of DAK key failed! Output was '".$output->{'output'}."'"); + } else { + &add_content2xml_hash($out_hash, "answer", "Import of DAK key successfull! Output was '".$output->{'output'}."'"); + } + } + + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + return &create_xml_string($out_hash); +} + + +sub remove_dak_key { + my ($msg, $msg_hash) = @_; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $header= @{$msg_hash->{'header'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $key = @{$msg_hash->{'keyid'}}[0]; + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + my %data; + + my $keyring = $main::dak_signing_keys_directory."/keyring.gpg"; + + my $gpg_cmd = `which gpg`; chomp $gpg_cmd; + my $gpg = "$gpg_cmd --no-default-keyring --no-random-seed --homedir ".$main::dak_signing_keys_directory." --keyring $keyring"; + + # Check if the keyrings are in place and writable + if( + &run_as($main::dak_user, "test -w $keyring")->{'resultCode'} != 0 + ) { + &add_content2xml_hash($out_hash, "error", "DAK keyring is not writable"); + } else { + # Check if the key is present in the keyring + if(&run_as($main::dak_user, "$gpg --list-keys $key")->{'resultCode'} == 0) { + my $command = "$gpg --batch --yes --delete-key $key"; + my $output = &run_as($main::dak_user, $command); + &main::daemon_log("$session_id DEBUG: ".$output->{'command'}, 7); + } else { + &add_content2xml_hash($out_hash, "error", "DAK key with id '$key' was not found in keyring"); + } + } + + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + return &create_xml_string($out_hash); +} + + +#sub get_dak_queue { +# my ($msg, $msg_hash, $session_id) = @_; +# my %data; +# my $source = @{$msg_hash->{'source'}}[0]; +# my $target = @{$msg_hash->{'target'}}[0]; +# my $header= @{$msg_hash->{'header'}}[0]; +# +# my %data; +# +# foreach my $dir ("unchecked", "new", "accepted") { +# foreach my $file(<"$main::dak_queue_directory/$dir/*.changes">) { +# } +# } +# +# my $out_msg = &build_msg("get_dak_queue", $target, $source, \%data); +# my @out_msg_l = ($out_msg); +# return @out_msg_l; +#} + +1; diff --git a/trunk/gosa-si/client/events/gosaTriggered.pm b/trunk/gosa-si/client/events/gosaTriggered.pm new file mode 100644 index 000000000..dca6f6308 --- /dev/null +++ b/trunk/gosa-si/client/events/gosaTriggered.pm @@ -0,0 +1,512 @@ + +=head1 NAME + +gosaTriggered.pm + +=head1 SYNOPSIS + +use GOSA::GosaSupportDaemon; + +use Data::Dumper; + +use MIME::Base64 + +=head1 DESCRIPTION + +This module contains all GOsa-SI-client processing instructions concerning actions controllable from GOsa. + +=head1 VERSION + +Version 1.0 + +=head1 AUTHOR + +Andreas Rettenberger + +=head1 FUNCTIONS + +=cut + + +package gosaTriggered; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "usr_msg", + "trigger_action_localboot", + "trigger_action_halt", + "trigger_action_faireboot", + "trigger_action_reboot", + "trigger_action_reinstall", + "trigger_action_update", + "trigger_action_instant_update", + "trigger_goto_settings_reload", + ); +@EXPORT = @events; + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Data::Dumper; +use MIME::Base64; +use File::Temp qw/ tempfile/; + +BEGIN {} + +END {} + +############################################################################### +=over + +=item B + +=over + +=item description + + Reports all provided functions. + +=item parameter + + None. + +=item return + + \@events - ARRAYREF - array containing all functions + +=back + +=back + +=cut +############################################################################### +sub get_events { return \@events; } + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/usr/bin/goto-notify' wich displays the message, subject und receiver at screen + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + - STRING - username message should be deliverd to + - STRING - subject of the message, base64 encoded + - STRING - message itself, base64 encoded + +=item return + + $out_msg - STRING - GOsa-si valid xml message, feedback that message was deliverd + +=back + +=back + +=cut +############################################################################### +sub usr_msg { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + + my $to = @{$msg_hash->{'usr'}}[0]; + my $subject = &decode_base64(@{$msg_hash->{'subject'}}[0]); + my $message = &decode_base64(@{$msg_hash->{'message'}}[0]); + + my ($rand_fh, $rand_file) = tempfile( SUFFIX => '.goto_notify'); + print $rand_fh "source:$source\ntarget:$target\nusr:$to\nsubject:".@{$msg_hash->{'subject'}}[0]."\nmessage:".@{$msg_hash->{'message'}}[0]."\n"; + close $rand_fh; + + my $feedback = system("/usr/bin/goto-notify user-message '$to' '$subject' '$message' '$rand_file' &" ); + + return +} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/sbin/shutdown -r' if no user is logged in otherwise write + 'trigger_action_localboot' to '/etc/gosa-si/event' + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + - INTEGER - timeout to wait befor restart, default 0 + +=item return + + Nothing. + +=back + +=back + +=cut +############################################################################### +sub trigger_action_localboot { + my ($msg, $msg_hash) = @_; + my $timeout; + + if((not exists $msg_hash->{timeout} ) || (1 != @{$msg_hash->{timeout}} ) ) { + $timeout = -1; + } + else { + $timeout = @{$msg_hash->{timeout}}[0]; + } + + # check logged in user + my $logged_in_user = 1; + if( $logged_in_user ) { + # TODO do something + } + else { + $timeout = 0; + } + + # execute function + if( $timeout == 0 ) { + print STDERR ("shutdown -r +$timeout\n"); + } + elsif( $timeout > 0 ) { + print STDERR ("shutdown -r +$timeout\n"); + } + elsif( $timeout < 0 ) { + print STDERR "The administrator has sent a signal to reboot this workstation. It will reboot after you've logged out.\n"; + open(FILE, "> /etc/gosa-si/event"); + print FILE "trigger_action_localboot\n"; + close(FILE); + } + else { + # TODO do something, error handling, logging + } + + return; +} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/usr/sbin/faireboot'. + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + None. + +=item return + + Nothing. + +=back + +=back + +=cut +############################################################################### +sub trigger_action_faireboot { + my ($msg, $msg_hash) = @_; + &main::daemon_log("DEBUG: run /usr/sbin/faireboot\n", 7); + system("/usr/sbin/faireboot"); + return; +} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/usr/bin/goto-notify reboot' and '/sbin/shutdown -r' if no + user is logged in otherwise write 'reboot' to '/etc/gosa-si/event' + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + - INTEGER - timeout to wait befor reboot, default 0 + +=item return + + Nothing. + +=back + +=back + +=cut +############################################################################### +sub trigger_action_reboot { + my ($msg, $msg_hash) = @_; + my $timeout; + + if((not exists $msg_hash->{timeout} ) || (1 != @{$msg_hash->{timeout}} ) ) { + $timeout = 0; + } + else { + $timeout = @{$msg_hash->{timeout}}[0]; + } + + # check logged in user + my @user_list = &get_logged_in_users; + if( @user_list >= 1 ) { + system( "/usr/bin/goto-notify reboot" ); + open(FILE, "> /etc/gosa-si/event"); + print FILE "reboot\n"; + close(FILE); + } + else { + system( "/sbin/shutdown -r +$timeout &" ); + } + + return; +} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/usr/bin/goto-notify halt' and '/sbin/shutdown -h' if no + user is logged in otherwise write 'halt' to '/etc/gosa-si/event' + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + - INTEGER - timeout to wait befor halt, default 0 + +=item return + + Nothing. + +=back + +=back + +=cut +############################################################################### +sub trigger_action_halt { + my ($msg, $msg_hash) = @_; + my $timeout; + + if((not exists $msg_hash->{timeout} ) || (1 != @{$msg_hash->{timeout}} ) ) { + $timeout = 0; + } + else { + $timeout = @{$msg_hash->{timeout}}[0]; + } + + # check logged in user + my @user_list = &get_logged_in_users; + if( @user_list >= 1 ) { + system( "/usr/bin/goto-notify halt" ); + open(FILE, "> /etc/gosa-si/event"); + print FILE "halt\n"; + close(FILE); + } + else { + system( "/sbin/shutdown -h +$timeout &" ); + } + + return; +} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/usr/bin/goto-notify install' and '/sbin/shutdown -r now' if no + user is logged in otherwise write 'install' to '/etc/gosa-si/event' + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + None. + +=item return + + Nothing. + +=back + +=back + +=cut +############################################################################### +sub trigger_action_reinstall { + my ($msg, $msg_hash) = @_; + + # check logged in user + my @user_list = &get_logged_in_users; + if( @user_list >= 1 ) { + system( "/usr/bin/goto-notify install" ); + open(FILE, "> /etc/gosa-si/event"); + print FILE "install\n"; + close(FILE); + } + else { + system( "/sbin/shutdown -r now &" ); + } + + return; +} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes 'DEBIAN_FRONTEND=noninteractive /usr/sbin/fai-softupdate &' + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + None. + +=item return + + Nothing + +=back + +=back + +=cut +############################################################################### +# Backward compatibility +sub trigger_action_update { + my ($msg, $msg_hash) = @_; + + # Execute update + system( "DEBIAN_FRONTEND=noninteractive /usr/sbin/fai-softupdate &" ); + + return; +} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes 'DEBIAN_FRONTEND=noninteractive /usr/sbin/fai-softupdate &' + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + None. + +=item return + + Nothing. + +=back + +=back + +=cut +############################################################################### +# Backward compatibility +sub trigger_action_instant_update { + my ($msg, $msg_hash) = @_; + + # Execute update + system( "DEBIAN_FRONTEND=noninteractive /usr/sbin/fai-softupdate &" ); + + return; +} + +sub trigger_goto_settings_reload { + my ($msg, $msg_hash) = @_; + + # Execute goto settings reload + my $cmd = "/etc/init.d/goto-agents"; + my $pram = "start"; + if (-f $cmd){ + my $feedback = system("$cmd $pram") or &main::daemon_log("ERROR: $@"); + } else { + &main::daemon_log("ERROR: cannot exec $cmd, file not found!"); + } + + return; +} + + +1; diff --git a/trunk/gosa-si/client/events/installation.pm b/trunk/gosa-si/client/events/installation.pm new file mode 100644 index 000000000..03b9f1c53 --- /dev/null +++ b/trunk/gosa-si/client/events/installation.pm @@ -0,0 +1,39 @@ +package installation; +use Exporter; +@ISA = qw(Exporter); +my @events = qw(get_events set_activated_for_installation); +@EXPORT = @events; + +use strict; +use warnings; +use Data::Dumper; +use Fcntl; + +BEGIN {} + +END {} + +### Start ###################################################################### + + +sub get_events { + return \@events; +} + +sub set_activated_for_installation { + my ($msg, $msg_hash) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + + my $Datei = "/var/run/gosa-si-client.activated"; + open(DATEI, ">$Datei"); + print DATEI "$msg\n"; + close DATEI; + + return; +} + + + +1; diff --git a/trunk/gosa-si/client/events/krb5.pm b/trunk/gosa-si/client/events/krb5.pm new file mode 100644 index 000000000..dd53ba064 --- /dev/null +++ b/trunk/gosa-si/client/events/krb5.pm @@ -0,0 +1,617 @@ +package krb5; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "krb5_list_principals", + "krb5_list_policies", + "krb5_get_principal", + "krb5_create_principal", + "krb5_modify_principal", + "krb5_del_principal", + "krb5_get_policy", + "krb5_create_policy", + "krb5_modify_policy", + "krb5_del_policy", + "krb5_set_password", + ); +@EXPORT = @events; + +use strict; +use warnings; +use Data::Dumper; +use GOSA::GosaSupportDaemon; +use Authen::Krb5; +use Authen::Krb5::Admin qw(:constants); + +BEGIN {} + +END {} + +### Start ###################################################################### + +Authen::Krb5::init_context; +Authen::Krb5::init_ets; + +my $krb_admin; +my $krb_password; + +my %cfg_defaults = ( +"krb5" => { + "admin" => [\$krb_admin, ""], + "password" => [\$krb_password, ""], + }, +); +&read_configfile($main::cfg_file, %cfg_defaults); + + +sub read_configfile { + my ($cfg_file, %cfg_defaults) = @_; + my $cfg; + + if( defined( $cfg_file) && ( (-s $cfg_file) > 0 )) { + if( -r $cfg_file ) { + $cfg = Config::IniFiles->new( -file => $cfg_file ); + } else { + &main::daemon_log("ERROR: krb5.pm couldn't read config file!", 1); + } + } else { + $cfg = Config::IniFiles->new() ; + } + foreach my $section (keys %cfg_defaults) { + foreach my $param (keys %{$cfg_defaults{ $section }}) { + my $pinfo = $cfg_defaults{ $section }{ $param }; + ${@$pinfo[0]} = $cfg->val( $section, $param, @$pinfo[1] ); + } + } +} + + +sub get_events { return \@events; } + + +sub krb5_list_principals { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + my @principals= $kadm5->get_principals() or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + for my $principal (@principals) { + &add_content2xml_hash($out_hash, "principal", $principal); + } + } + + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # return message + return &create_xml_string($out_hash); +} + + +sub krb5_create_principal { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Sanity check + if (not defined @{$msg_hash->{'principal'}}[0]){ + &add_content2xml_hash($out_hash, "error", "No principal specified"); + return &create_xml_string($out_hash); + } + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + my $principal; + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + $principal= Authen::Krb5::parse_name(@{$msg_hash->{'principal'}}[0]); + if(not defined $principal) { + &add_content2xml_hash($out_hash, "error", "Illegal principal name"); + } else { + if ( $kadm5->get_principal($principal)){ + &add_content2xml_hash($out_hash, "error", "Principal exists"); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + return &create_xml_string($out_hash); + } + + my $princ= Authen::Krb5::Admin::Principal->new; + foreach ('mask', 'attributes', 'aux_attributes', 'max_life', 'max_renewable_life', + 'policy', 'princ_expire_time', 'pw_expiration'){ + + if (defined @{$msg_hash->{$_}}[0]){ + $princ->$_(@{$msg_hash->{$_}}[0]); + } + } + + $princ->principal($principal); + $kadm5->create_principal($princ, join '', map { chr rand(255) + 1 } 1..256) or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + + # Directly randomize key + $kadm5->randkey_principal($principal); + } + } + + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # return message + return &create_xml_string($out_hash); +} + + +sub krb5_modify_principal { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Sanity check + if (not defined @{$msg_hash->{'principal'}}[0]){ + &add_content2xml_hash($out_hash, "error", "No principal specified"); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + return &create_xml_string($out_hash); + } + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + my $principal; + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + $principal= Authen::Krb5::parse_name(@{$msg_hash->{'principal'}}[0]); + if(not defined $principal) { + &add_content2xml_hash($out_hash, "error", "Illegal principal name"); + } else { + if (not $kadm5->get_principal($principal)){ + &add_content2xml_hash($out_hash, "error", "Principal does not exists"); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + return &create_xml_string($out_hash); + } + + my $princ= Authen::Krb5::Admin::Principal->new; + foreach ('mask', 'attributes', 'aux_attributes', 'max_life', 'max_renewable_life', + 'policy', 'princ_expire_time', 'pw_expiration'){ + + if (defined @{$msg_hash->{$_}}[0]){ + $princ->$_(@{$msg_hash->{$_}}[0]); + } + } + + $princ->principal($principal); + $kadm5->modify_principal($princ) or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + } + } + + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # return message + return &create_xml_string($out_hash); +} + + +sub krb5_get_principal { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Sanity check + if (not defined @{$msg_hash->{'principal'}}[0]){ + &add_content2xml_hash($out_hash, "error", "No principal specified"); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + return &create_xml_string($out_hash); + } + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + my $principal; + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + $principal= Authen::Krb5::parse_name(@{$msg_hash->{'principal'}}[0]); + if(not defined $principal) { + &add_content2xml_hash($out_hash, "error", "Illegal principal name"); + } else { + my $data= $kadm5->get_principal($principal) or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + &add_content2xml_hash($out_hash, "principal", @{$msg_hash->{'principal'}}[0]); + &add_content2xml_hash($out_hash, "mask", $data->mask); + &add_content2xml_hash($out_hash, "attributes", $data->attributes); + &add_content2xml_hash($out_hash, "kvno", $data->kvno); + &add_content2xml_hash($out_hash, "max_life", $data->max_life); + &add_content2xml_hash($out_hash, "max_renewable_life", $data->max_renewable_life); + &add_content2xml_hash($out_hash, "aux_attributes", $data->aux_attributes); + &add_content2xml_hash($out_hash, "policy", $data->policy); + &add_content2xml_hash($out_hash, "fail_auth_count", $data->fail_auth_count); + &add_content2xml_hash($out_hash, "last_failed", $data->last_failed); + &add_content2xml_hash($out_hash, "last_pwd_change", $data->last_pwd_change); + &add_content2xml_hash($out_hash, "last_success", $data->last_success); + &add_content2xml_hash($out_hash, "mod_date", $data->mod_date); + &add_content2xml_hash($out_hash, "princ_expire_time", $data->princ_expire_time); + &add_content2xml_hash($out_hash, "pw_expiration", $data->pw_expiration); + } + } + + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # return message + return &create_xml_string($out_hash); +} + + +sub krb5_del_principal { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Sanity check + if (not defined @{$msg_hash->{'principal'}}[0]){ + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + &add_content2xml_hash($out_hash, "error", "No principal specified"); + return &create_xml_string($out_hash); + } + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + my $principal; + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + $principal= Authen::Krb5::parse_name(@{$msg_hash->{'principal'}}[0]); + if(not defined $principal) { + &add_content2xml_hash($out_hash, "error", "Illegal principal name"); + } else { + $kadm5->delete_principal($principal) or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + } + } + + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # return message + return &create_xml_string($out_hash); +} + + +sub krb5_list_policies { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + my @policies= $kadm5->get_policies(); # or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + for my $policy (@policies) { + &add_content2xml_hash($out_hash, "policy", $policy); + } + } + + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # return message + return &create_xml_string($out_hash); +} + + +sub krb5_get_policy { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Sanity check + if (not defined @{$msg_hash->{'policy'}}[0]){ + &add_content2xml_hash($out_hash, "error", "No policy specified"); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + return &create_xml_string($out_hash); + } + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + my $principal; + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + my $data= $kadm5->get_policy(@{$msg_hash->{'policy'}}[0]) or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + &add_content2xml_hash($out_hash, "name", $data->name); + &add_content2xml_hash($out_hash, "mask", $data->mask); + &add_content2xml_hash($out_hash, "pw_history_num", $data->pw_history_num); + &add_content2xml_hash($out_hash, "pw_max_life", $data->pw_max_life); + &add_content2xml_hash($out_hash, "pw_min_classes", $data->pw_min_classes); + &add_content2xml_hash($out_hash, "pw_min_length", $data->pw_min_length); + &add_content2xml_hash($out_hash, "pw_min_life", $data->pw_min_life); + &add_content2xml_hash($out_hash, "policy_refcnt", $data->policy_refcnt); + } + + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # return message + return &create_xml_string($out_hash); +} + + +sub krb5_create_policy { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # Build return message + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Sanity check + if (not defined @{$msg_hash->{'policy'}}[0]){ + &add_content2xml_hash($out_hash, "error", "No policy specified"); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + return &create_xml_string($out_hash); + } + &add_content2xml_hash($msg_hash, "name", @{$msg_hash->{'policy'}}[0]); + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + if ( $kadm5->get_policy(@{$msg_hash->{'policy'}}[0])) { + &add_content2xml_hash($out_hash, "error", "Policy exists"); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + return &create_xml_string($out_hash); + } + + my $pol = Authen::Krb5::Admin::Policy->new; + + # Move information from xml message to modifyer + foreach ('name', 'mask', 'pw_history_num', 'pw_max_life', 'pw_min_classes', + 'pw_min_length', 'pw_min_life'){ + + if (defined @{$msg_hash->{$_}}[0]){ + $pol->$_(@{$msg_hash->{$_}}[0]); + } + } + + # Create info + $kadm5->create_policy($pol) or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + } + + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # build return message with twisted target and source + my $out_msg = &create_xml_string($out_hash); + + # return message + return $out_msg; +} + + +sub krb5_modify_policy { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # Build return message + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Sanity check + if (not defined @{$msg_hash->{'policy'}}[0]){ + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + &add_content2xml_hash($out_hash, "error", "No policy specified"); + return &create_xml_string($out_hash); + } + &add_content2xml_hash($msg_hash, "name", @{$msg_hash->{'policy'}}[0]); + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + my $pol = Authen::Krb5::Admin::Policy->new; + + # Move information from xml message to modifyer + foreach ('name', 'mask', 'pw_history_num', 'pw_max_life', 'pw_min_classes', + 'pw_min_length', 'pw_min_life'){ + + if (defined @{$msg_hash->{$_}}[0]){ + $pol->$_(@{$msg_hash->{$_}}[0]); + } + } + + # Create info + $kadm5->modify_policy($pol) or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + } + + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # build return message with twisted target and source + my $out_msg = &create_xml_string($out_hash); + + # return message + return $out_msg; +} + + +sub krb5_del_policy { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Sanity check + if (not defined @{$msg_hash->{'policy'}}[0]){ + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + &add_content2xml_hash($out_hash, "error", "No policy specified"); + return &create_xml_string($out_hash); + } + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + my $policy= @{$msg_hash->{'policy'}}[0]; + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } else { + $kadm5->delete_policy($policy) or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + } + + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # return message + return &create_xml_string($out_hash); +} + +sub krb5_set_password { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + + # Sanity check + if (not defined @{$msg_hash->{'principal'}}[0]){ + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + &add_content2xml_hash($out_hash, "error", "No principal specified"); + return &create_xml_string($out_hash); + } + if (not defined @{$msg_hash->{'password'}}[0]){ + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + &add_content2xml_hash($out_hash, "error", "No password specified"); + return &create_xml_string($out_hash); + } + + # Authenticate + my $kadm5 = Authen::Krb5::Admin->init_with_password($krb_admin, $krb_password); + my $principal; + if (not defined $kadm5){ + &add_content2xml_hash($out_hash, "error", "Cannot connect to kadmin server"); + } + + $principal= Authen::Krb5::parse_name(@{$msg_hash->{'principal'}}[0]); + if(not defined $principal) { + &add_content2xml_hash($out_hash, "error", "Illegal principal name"); + } else { + $kadm5->chpass_principal($principal, @{$msg_hash->{'password'}}[0]) or &add_content2xml_hash($out_hash, "error", Authen::Krb5::Admin::error); + } + + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # return message + return &create_xml_string($out_hash); +} +1; diff --git a/trunk/gosa-si/client/events/mailqueue.pm b/trunk/gosa-si/client/events/mailqueue.pm new file mode 100644 index 000000000..866b5eae6 --- /dev/null +++ b/trunk/gosa-si/client/events/mailqueue.pm @@ -0,0 +1,736 @@ + +=head1 NAME + +mailqueue.pm + +=head1 SYNOPSIS + +use GOSA::GosaSupportDaemon; + +=head1 DESCRIPTION + +This module contains all GOsa-SI-client processing instructions concerning the mailqueue in GOsa. + +=head1 VERSION + +Version 1.0 + +=head1 AUTHOR + +Andreas Rettenberger + +=head1 FUNCTIONS + +=cut + + +package mailqueue; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "mailqueue_query", + "mailqueue_hold", + "mailqueue_unhold", + "mailqueue_requeue", + "mailqueue_del", + "mailqueue_header", + ); +@EXPORT = @events; + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Data::Dumper; +use MIME::Base64; + +BEGIN {} + +END {} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Reports all provided functions. + +=item parameter + + None. + +=item return + + \@events - ARRAYREF - array containing all functions + +=back + +=back + +=cut +############################################################################### +sub get_events { return \@events; } + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes /usr/sbin/mailq, parse the informations and return them + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + None. + +=item return + + $out_msg - STRING - GOsa-SI valid xml message containing msg_id, msg_hold, msg_size, arrival_time, sender and recipient. + +=back + +=back + +=cut +############################################################################### +sub mailqueue_query { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + # q_tag can be: msg_id | msg_hold | msg_size | arrival_time | sender | recipient + my $q_tag = exists $msg_hash->{'q_tag'} ? @{$msg_hash->{'q_tag'}}[0] : undef ; + # q_operator can be: eq | gt | lt + my $q_operator = exists $msg_hash->{'q_operator'} ? @{$msg_hash->{'q_operator'}}[0] : undef ; + my $q_value = exists $msg_hash->{'q_value'} ? @{$msg_hash->{'q_value'}}[0] : undef ; + my $error = 0; + my $error_string; + my $msg_id; + my $msg_hold; + my $msg_size; + my $arrival_time; + my $sender; + my $recipient; + my $status_message; + my $out_hash; + my $out_msg; + + &main::daemon_log("DEBUG: run /usr/bin/mailq\n", 7); + my $result = qx("/usr/bin/mailq"); + my @result_l = split(/([0-9A-Z]{10,12})/, $result); + + if (length($result) == 0) { + $error = 1; + $error_string = "/usr/bin/mailq has no result"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + } + + my $result_collection = {}; + if (not $error) { + # parse information + my $result_length = @result_l; + my $j = 0; + for (my $i = 1; $i < $result_length; $i+=2) { + + # Fetch and prepare all information + my $act_result; + $act_result->{'msg_id'} = $result_l[$i]; + $result_l[$i+1] =~ /^([\!| ])\s+(\d+)\s+(\w{3}\s+\w{3}\s+\d+\s+\d+:\d+:\d+)\s+([\w.-]+@[\w.-]+)\s+/ ; + $act_result->{'msg_hold'} = $1 eq "!" ? 1 : 0 ; + $act_result->{'msg_size'} = $2; + $act_result->{'arrival_time'} = $3; + $act_result->{'sender'} = $4; + my @info_l = split(/\n/, $result_l[$i+1]); + $act_result->{'recipient'} = $info_l[2] =~ /([\w.-]+@[\w.-]+)/ ? $1 : 'unknown' ; + $act_result->{'msg_status'} = $info_l[1] =~ /^([\s\S]*)$/ ? $1 : 'unknown' ; + + # If all query tags exists, perform the selection + my $query_positiv = 0; + if (defined $q_tag && defined $q_operator && defined $q_value) { + + # Query for message id + if ( $q_tag eq 'msg_id') { + if (not $q_operator eq 'eq') { + &main::daemon_log("$session_id WARNING: query option '$q_operator' is not allowed with query tag '$q_tag'". + ", return return complete mail queue as fallback", 3); + &main::daemon_log("$session_id DEBUG: \n$msg", 9); + $query_positiv++; + } else { + if ( &_exec_op($act_result->{'msg_id'}, $q_operator, $q_value) ) { + $query_positiv++; + } + } + + # Query for message size + } elsif ($q_tag eq 'msg_size') { + my $result_size = int($act_result->{'msg_size'}); + my $query_size = int($q_value); + if ( &_exec_op($result_size, $q_operator, $query_size) ) { + $query_positiv++; + } + + # Query for arrival time + } elsif ($q_tag eq 'arrival_time') { + my $result_time = int(&_parse_mailq_time($act_result->{'arrival_time'})); + my $query_time = int($q_value); + + if ( &_exec_op($result_time, $q_operator, $query_time) ) { + $query_positiv++; + } + + # Query for sender + }elsif ($q_tag eq 'sender') { + if (not $q_operator eq 'eq') { + &main::daemon_log("$session_id WARNING: query option '$q_operator' is not allowed with query tag '$q_tag'". + ", return return complete mail queue as fallback", 3); + &main::daemon_log("$session_id DEBUG: \n$msg", 9); + $query_positiv++; + } else { + if ( &_exec_op($act_result->{'sender'}, $q_operator, $q_value)) { + $query_positiv++; + } + } + + # Query for recipient + } elsif ($q_tag eq 'recipient') { + if (not $q_operator eq 'eq') { + &main::daemon_log("$session_id WARNING: query option '$q_operator' is not allowed with query tag '$q_tag'". + ", return return complete mail queue as fallback", 3); + &main::daemon_log("$session_id DEBUG: \n$msg", 9); + $query_positiv++; + } else { + if ( &_exec_op($act_result->{'recipient'}, $q_operator, $q_value)) { + $query_positiv++; + } + } + } + + # If no query tag exists, return all mails in mailqueue + } elsif ((not defined $q_tag) && (not defined $q_operator) && (not defined $q_value)) { + $query_positiv++; + + # If query tags are not complete return error message + } elsif ((not defined $q_tag) || (not defined $q_operator) || (not defined $q_value)) { + $error++; + $error_string = "'mailqueue_query'-msg is not complete, some query tags (q_tag, q_operator, q_value) are missing"; + &main::daemon_log("$session_id WARNING: $error_string", 3); + } + + # If query was successful, add resutls to answer + if ($query_positiv) { + $j++; + $result_collection->{$j} = $act_result; + } + } + } + + #create outgoing msg + $out_hash = &main::create_xml_hash("answer_$session_id", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + &add_content2xml_hash($out_hash, "error", $error); + if (defined @{$msg_hash->{'forward_to_gosa'}}[0]){ + &add_content2xml_hash($out_hash, "forward_to_gosa", @{$msg_hash->{'forward_to_gosa'}}[0]); + } + + # add error infos to outgoing msg + if ($error) { + &add_content2xml_hash($out_hash, "error_string", $error_string); + $out_msg = &main::create_xml_string($out_hash); + + # add mail infos to outgoing msg + } else { + my $collection_string = &db_res2xml($result_collection); + $out_msg = &main::create_xml_string($out_hash); + $out_msg =~ s/<\/xml>/$collection_string<\/xml>/ + } + + return $out_msg; + +} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/usr/sbin/postsuper -h' and set mail to hold. + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + - STRING - postfix mail id + +=item return + + Nothing. + +=back + +=back + +=cut +############################################################################### +sub mailqueue_hold { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $error = 0; + my $error_string; + + # sanity check of input + if (not exists $msg_hash->{'msg_id'}) { + $error_string = "Message doesn't contain a XML tag 'msg_id"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } elsif (ref @{$msg_hash->{'msg_id'}}[0] eq "HASH") { + $error_string = "XML tag 'msg_id' is empty"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } + + if (not $error) { + my @msg_ids = @{$msg_hash->{'msg_id'}}; + foreach my $msg_id (@msg_ids) { + my $error = 0; # clear error status + + # sanity check of each msg_id + if (not $msg_id =~ /^[0-9A-Z]{10,12}$/) { + $error = 1; + $error_string = "message ID is not valid ([0-9A-Z]{10,12}) : $msg_id"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + } + + if (not $error) { + my $cmd = "/usr/sbin/postsuper -h $msg_id 2>&1"; + &main::daemon_log("DEBUG: run $cmd", 7); + my $result = qx($cmd); + if ($result =~ /^postsuper: ([0-9A-Z]{10}): placed on hold/ ) { + &main::daemon_log("INFO: Mail $msg_id placed on hold", 5); + } elsif ($result eq "") { + &main::daemon_log("INFO: Mail $msg_id is alread placed on hold", 5); + + } else { + &main::daemon_log("ERROR: '$cmd' failed : $result", 1); + } + } + } + } + + return; +} + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/usr/sbin/postsuper -H' and set mail to unhold. + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + - STRING - postfix mail id + +=item return + +Nothing. + +=back + +=back + +=cut +############################################################################### +sub mailqueue_unhold { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $error = 0; + my $error_string; + + # sanity check of input + if (not exists $msg_hash->{'msg_id'}) { + $error_string = "Message doesn't contain a XML tag 'msg_id'"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } elsif (ref @{$msg_hash->{'msg_id'}}[0] eq "HASH") { + $error_string = "XML tag 'msg_id' is empty"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } + + if (not $error) { + my @msg_ids = @{$msg_hash->{'msg_id'}}; + foreach my $msg_id (@msg_ids) { + my $error = 0; # clear error status + + # sanity check of each msg_id + if (not $msg_id =~ /^[0-9A-Z]{10,12}$/) { + $error = 1; + $error_string = "message ID is not valid ([0-9A-Z]{10,12}) : $msg_id"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + } + + if (not $error) { + my $cmd = "/usr/sbin/postsuper -H $msg_id 2>&1"; + &main::daemon_log("DEBUG: run $cmd\n", 7); + my $result = qx($cmd); + if ($result =~ /^postsuper: ([0-9A-Z]{10}): released from hold/ ) { + &main::daemon_log("INFO: Mail $msg_id released from on hold", 5); + } elsif ($result eq "") { + &main::daemon_log("INFO: Mail $msg_id is alread released from hold", 5); + + } else { + &main::daemon_log("ERROR: '$cmd' failed : $result", 1); + } + + } + } + } + + return; +} + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/usr/sbin/postsuper -r' and requeue the mail. + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + - STRING - postfix mail id + +=item return + +Nothing. + +=back + +=back + +=cut +############################################################################### +sub mailqueue_requeue { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my @msg_ids = @{$msg_hash->{'msg_id'}}; + my $error = 0; + my $error_string; + + # sanity check of input + if (not exists $msg_hash->{'msg_id'}) { + $error_string = "Message doesn't contain a XML tag 'msg_id'"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } elsif (ref @{$msg_hash->{'msg_id'}}[0] eq "HASH") { + $error_string = "XML tag 'msg_id' is empty"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } + + if (not $error) { + my @msg_ids = @{$msg_hash->{'msg_id'}}; + foreach my $msg_id (@msg_ids) { + my $error = 0; # clear error status + + # sanity check of each msg_id + if (not $msg_id =~ /^[0-9A-Z]{10,12}$/) { + $error = 1; + $error_string = "message ID is not valid ([0-9A-Z]{10,12}) : $msg_id"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + } + + if (not $error) { + my $cmd = "/usr/sbin/postsuper -r $msg_id 2>&1"; + &main::daemon_log("DEBUG: run '$cmd'", 7); + my $result = qx($cmd); + if ($result =~ /^postsuper: ([0-9A-Z]{10}): requeued/ ) { + &main::daemon_log("INFO: Mail $msg_id requeued", 5); + } elsif ($result eq "") { + &main::daemon_log("WARNING: Cannot requeue mail '$msg_id', mail not found!", 3); + + } else { + &main::daemon_log("ERROR: '$cmd' failed : $result", 1); + } + + } + } + } + + return; +} + + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes '/usr/sbin/postsuper -d' and deletes mail from queue. + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + - STRING - postfix mail id + +=item return + +Nothing. + +=back + +=back + +=cut +############################################################################### +sub mailqueue_del { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my @msg_ids = @{$msg_hash->{'msg_id'}}; + my $error = 0; + my $error_string; + + # sanity check of input + if (not exists $msg_hash->{'msg_id'}) { + $error_string = "Message doesn't contain a XML tag 'msg_id'"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } elsif (ref @{$msg_hash->{'msg_id'}}[0] eq "HASH") { + $error_string = "XML tag 'msg_id' is empty"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } + + if (not $error) { + my @msg_ids = @{$msg_hash->{'msg_id'}}; + foreach my $msg_id (@msg_ids) { + my $error = 0; # clear error status + + # sanity check of each msg_id + if (not $msg_id =~ /^[0-9A-Z]{10,12}$/) { + $error = 1; + $error_string = "message ID is not valid ([0-9A-Z]{10,12}) : $msg_id"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + } + + if (not $error) { + my $cmd = "/usr/sbin/postsuper -d $msg_id 2>&1"; + &main::daemon_log("DEBUG: run '$cmd'", 7); + my $result = qx($cmd); + if ($result =~ /^postsuper: ([0-9A-Z]{10}): removed/ ) { + &main::daemon_log("INFO: Mail $msg_id deleted", 5); + } elsif ($result eq "") { + &main::daemon_log("WARNING: Cannot remove mail '$msg_id', mail not found!", 3); + + } else { + &main::daemon_log("ERROR: '$cmd' failed : $result", 1); + } + + } + } + } + + return; +} + +############################################################################### +=over + +=item B + +=over + +=item description + + Executes 'postcat -q', parse the informations and return them. + +=item parameter + + $msg - STRING - complete GOsa-si message + $msg_hash - HASHREF - content of GOsa-si message in a hash + +=item GOsa-si message xml content + + - STRING - postfix mail id + +=item return + + $out_msg - STRING - GOsa-si valid xml message containing recipient, sender and subject. + +=back + +=back + +=cut +############################################################################### +sub mailqueue_header { + my ($msg, $msg_hash) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $session_id = @{$msg_hash->{'session_id'}}[0]; + my $error = 0; + my $error_string; + my $sender; + my $recipient; + my $subject; + my $out_hash; + my $out_msg; + + # sanity check of input + if (not exists $msg_hash->{'msg_id'}) { + $error_string = "Message doesn't contain a XML tag 'msg_id'"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } elsif (ref @{$msg_hash->{'msg_id'}}[0] eq "HASH") { + $error_string = "XML tag 'msg_id' is empty"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + $error = 1; + } + + # sanity check of each msg_id + my $msg_id; + if (not $error) { + $msg_id = @{$msg_hash->{'msg_id'}}[0]; + if (not $msg_id =~ /^[0-9A-Z]{10,12}$/) { + $error = 1; + $error_string = "message ID is not valid ([0-9A-Z]{10,12}) : $msg_id"; + &main::daemon_log("ERROR: $error_string : $msg", 1); + } + } + + # parsing information + my $msg_header; + if (not $error) { + my $cmd = "postcat -q $msg_id"; + &main::daemon_log("DEBUG: run '$cmd'", 7); + my $result = qx($cmd); + + my @header_l = split(/\n\n/, $result); + $msg_header = $header_l[0]; + } + + # create outgoing msg + $out_hash = &main::create_xml_hash("answer_$session_id", $target, $source); + &add_content2xml_hash($out_hash, "session_id", $session_id); + &add_content2xml_hash($out_hash, "error", $error); + if (defined @{$msg_hash->{'forward_to_gosa'}}[0]){ + &add_content2xml_hash($out_hash, "forward_to_gosa", @{$msg_hash->{'forward_to_gosa'}}[0]); + } + + # add error infos to outgoing msg + if ($error) { + &add_content2xml_hash($out_hash, "error_string", $error_string); + $out_msg = &main::create_xml_string($out_hash); + + # add mail infos to outgoing msg + } else { + #&add_content2xml_hash($out_hash, "msg_header", &decode_base64($msg_header)); + &add_content2xml_hash($out_hash, "msg_header", $msg_header); + $out_msg = &main::create_xml_string($out_hash); + } + + return $out_msg; +} + +sub _exec_op { + my ($a, $op, $b) = @_ ; + my $res; + + if ($op eq "eq") { + $res = $a =~ /$b/ ? 1 : 0 ; + } elsif ($op eq "gt") { + $res = $a > $b ? 1 : 0 ; + } elsif ($op eq "lt") { + $res = $a < $b ? 1 : 0 ; + } + + return $res; +} + +my $mo_hash = { "Jan"=>'01', "Feb"=>'02',"Mar"=>'03',"Apr"=>'04',"May"=>'05',"Jun"=>'06', + "Jul"=>'07',"Aug"=>'08',"Sep"=>'09',"Oct"=>'10',"Nov"=>'11',"Dec"=>'12'}; + +sub _parse_mailq_time { + my ($time) = @_ ; + + my $local_time = &get_time(); + my $local_year = substr($local_time,0,4); + + my ($dow, $mo, $dd, $date) = split(/\s/, $time); + my ($hh, $mi, $ss) = split(/:/, $date); + my $mailq_time = $local_year.$mo_hash->{$mo}."$dd$hh$mi$ss"; + + # This is realy nasty + if (int($local_time) < int($mailq_time)) { + # Mailq_time is in the future, this cannot be possible, so mail must be from last year + $mailq_time = int($local_year) - 1 .$mo_hash->{$mo}."$dd$hh$mi$ss"; + } + + return $mailq_time; +} + +# vim:ts=4:shiftwidth:expandtab + +1; diff --git a/trunk/gosa-si/debian/README.debian b/trunk/gosa-si/debian/README.debian new file mode 100644 index 000000000..100bd2d6d --- /dev/null +++ b/trunk/gosa-si/debian/README.debian @@ -0,0 +1,11 @@ +README.Debian for GOto 3.0 +-------------------------- + +* Configuring GOto 3.0 + +You need a proper LDAP/FAI/GOsa setup to make this run. More +text will follow later. Sorry. + +---- +Cajus Pollmeier Fri 02 Jun 2006 16:23:50 +0200 + diff --git a/trunk/gosa-si/debian/changelog b/trunk/gosa-si/debian/changelog new file mode 100644 index 000000000..af51e16a3 --- /dev/null +++ b/trunk/gosa-si/debian/changelog @@ -0,0 +1,43 @@ +gosa-si (2.6.1-1) etch; urgency=low + + * New upstream version. + * Fixes several bugs + + -- Andreas Rettenberger Fri, 05 Dec 2008 15:25:55 +0100 + +gosa-si (1.3-1) etch; urgency=low + + * User messages handling for server-server communication implemented + + -- Andreas Rettenberger Thu, 06 Nov 2008 15:58:25 +0100 + +gosa-si (1.2-2) etch; urgency=low + + * Removed broken mysql module from package + + -- Cajus Pollmeier Tue, 14 Oct 2008 09:49:05 +0200 + +gosa-si (1.2-1) etch; urgency=low + + * New upstream version + + -- Andreas Rettenberger Tue, 02 Sep 2008 16:24:08 +0200 + +gosa-si (1.1-1) etch; urgency=low + + * New upstream version + + -- Andreas Rettenberger Mon, 01 Sep 2008 11:48:32 +0200 + +gosa-si (1.0-2) etch; urgency=low + + * Fixed perl mime dependencies. + + -- Andreas Rettenberger Thu, 07 Aug 2008 14:56:10 +0200 + +gosa-si (1.0-1) etch; urgency=low + + * New upstream version + + -- Andreas Rettenberger Thu, 07 Aug 2008 14:29:58 +0200 + diff --git a/trunk/gosa-si/debian/compat b/trunk/gosa-si/debian/compat new file mode 100644 index 000000000..7ed6ff82d --- /dev/null +++ b/trunk/gosa-si/debian/compat @@ -0,0 +1 @@ +5 diff --git a/trunk/gosa-si/debian/control b/trunk/gosa-si/debian/control new file mode 100644 index 000000000..773022544 --- /dev/null +++ b/trunk/gosa-si/debian/control @@ -0,0 +1,79 @@ +Source: gosa-si +Section: gonicus/utils +Priority: optional +Maintainer: Cajus Pollmeier +Standards-Version: 3.7.2.2 +Build-Depends: debhelper(>= 4.2.32), dpatch + +Package: gosa-si-common +Architecture: any +Depends: libconfig-inifiles-perl, libcrypt-rijndael-perl, libxml-simple-perl, libdata-dumper-simple-perl, libmime-perl | libmime-tools-perl, libdbd-sqlite3-perl, libnet-ldap-perl, libnetaddr-ip-perl, libpoe-perl, libnet-dns-perl, libnet-pcap-perl, libconvert-asn1-perl, libdigest-hmac-perl, libnet-ip-perl, libdigest-sha1-perl, libnet-mac-vendor-perl, libpoe-component-pcap-perl, libnet-arp-perl, libdatetime-perl, libjson-rpc-perl, libxml-quote-perl +Suggests: gosa-si-server, gosa-si-client +Description: GOsa support infrastructure + This package provides common library functionality used by the + infrastructure server and client packages. + . + GOsa is a combination of system-administrator and end-user web + interface, designed to handle LDAP based setups. + +Package: gosa-si-server +Architecture: any +Depends: gosa-si-common, libcrypt-smbhash-perl +Suggests: gosa, gosa-si-server-postfix, gosa-si-server-dak +Description: GOsa support infrastructure server + This package provides everything you need in order to deploy a simple + or distributed GOsa support infrastructure. It can be used to trigger + certain actions or retrieve information from clients. + . + GOsa is a combination of system-administrator and end-user web + interface, designed to handle LDAP based setups. + +Package: gosa-si-client +Architecture: any +Depends: gosa-si-common, hwinfo, libdatetime-perl +Suggests: fai-progress, gosa-si-client-krb5 +Description: GOsa support infrastructure client + This package lets you join to a GOsa support infrastructure as a + client in order to provide information or to act on events. + . + GOsa is a combination of system-administrator and end-user web + interface, designed to handle LDAP based setups. + +Package: gosa-si-server-postfix +Architecture: any +Depends: gosa-si-server, postfix +Description: GOsa support infrastructure postfix module + This package controls postfix mail queues. + . + GOsa is a combination of system-administrator and end-user web + interface, designed to handle LDAP based setups. + +Package: gosa-si-client-krb5 +Architecture: any +Depends: gosa-si-client, libauthen-krb5-perl, libauthen-krb5-admin-perl +Description: GOsa support infrastructure kerberos module + This package controls keberos setups and enables administrators + to maintain accounts and keys. + . + GOsa is a combination of system-administrator and end-user web + interface, designed to handle LDAP based setups. + +Package: gosa-si-server-dak +Architecture: any +Depends: gosa-si-server, dak +Description: GOsa support infrastructure dak module + This package controls Debian archive kit setups and enables + administrators to manage queue and keyring related issues. + . + GOsa is a combination of system-administrator and end-user web + interface, designed to handle LDAP based setups. + +Package: gosa-si-server-opsi +Architecture: any +Depends: gosa-si-server +Description: GOsa support infrastructure opsi module + This package controls OPSI windows software deployment. + . + GOsa is a combination of system-administrator and end-user web + interface, designed to handle LDAP based setups. + diff --git a/trunk/gosa-si/debian/copyright b/trunk/gosa-si/debian/copyright new file mode 100644 index 000000000..f7706ed77 --- /dev/null +++ b/trunk/gosa-si/debian/copyright @@ -0,0 +1,31 @@ +This package was debianized by Cajus Pollmeier on +Mon, 07 Apr 2008 11:18:53 +0200. + +It was downloaded from http://www.gosa-project.org + +Copyright: + + Copyright (C) 2001-2008 Cajus Pollmeier + +License: + + This package 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 package 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + +The Debian packaging is (C) 2008, Cajus Pollmeier and +is licensed under the GPL, see above. + diff --git a/trunk/gosa-si/debian/gosa-si-client-dak.dirs b/trunk/gosa-si/debian/gosa-si-client-dak.dirs new file mode 100644 index 000000000..d94a1b5b4 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client-dak.dirs @@ -0,0 +1 @@ +usr/lib/gosa-si/client/events diff --git a/trunk/gosa-si/debian/gosa-si-client-dak.install b/trunk/gosa-si/debian/gosa-si-client-dak.install new file mode 100644 index 000000000..1b0abd1bc --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client-dak.install @@ -0,0 +1 @@ +client/events/dak.pm usr/lib/gosa-si/client/events diff --git a/trunk/gosa-si/debian/gosa-si-client-krb5.dirs b/trunk/gosa-si/debian/gosa-si-client-krb5.dirs new file mode 100644 index 000000000..d94a1b5b4 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client-krb5.dirs @@ -0,0 +1 @@ +usr/lib/gosa-si/client/events diff --git a/trunk/gosa-si/debian/gosa-si-client-krb5.install b/trunk/gosa-si/debian/gosa-si-client-krb5.install new file mode 100644 index 000000000..54a30b758 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client-krb5.install @@ -0,0 +1 @@ +client/events/krb5.pm usr/lib/gosa-si/client/events diff --git a/trunk/gosa-si/debian/gosa-si-client.dirs b/trunk/gosa-si/debian/gosa-si-client.dirs new file mode 100644 index 000000000..2f6b7067d --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client.dirs @@ -0,0 +1,3 @@ +etc/gosa-si +usr/sbin +usr/lib/gosa-si/client/events diff --git a/trunk/gosa-si/debian/gosa-si-client.install b/trunk/gosa-si/debian/gosa-si-client.install new file mode 100644 index 000000000..c39f2939a --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client.install @@ -0,0 +1,6 @@ +gosa-si-client usr/sbin +client.conf etc/gosa-si +client/events/corefunctions.pm usr/lib/gosa-si/client/events +client/events/installation.pm usr/lib/gosa-si/client/events +client/events/gosaTriggered.pm usr/lib/gosa-si/client/events +client/events/mailqueue.pm usr/lib/gosa-si/client/events diff --git a/trunk/gosa-si/debian/gosa-si-client.lintian-overrides b/trunk/gosa-si/debian/gosa-si-client.lintian-overrides new file mode 100644 index 000000000..711427227 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client.lintian-overrides @@ -0,0 +1,2 @@ +gosa-si-client: binary-without-manpage usr/sbin/gosa-si-client + diff --git a/trunk/gosa-si/debian/gosa-si-client.logrotate b/trunk/gosa-si/debian/gosa-si-client.logrotate new file mode 100644 index 000000000..7e9fd81e3 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client.logrotate @@ -0,0 +1,10 @@ +/var/log/gosa-si-client.log { + weekly + rotate 4 + compress + missingok + postrotate + pkill -SIGUSR1 gosa-si-client > /dev/null || true + endscript +} + diff --git a/trunk/gosa-si/debian/gosa-si-client.manpages b/trunk/gosa-si/debian/gosa-si-client.manpages new file mode 100644 index 000000000..b18a40626 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client.manpages @@ -0,0 +1,2 @@ +gosa-si-client.conf.5 +gosa-si-client.1 diff --git a/trunk/gosa-si/debian/gosa-si-client.postinst b/trunk/gosa-si/debian/gosa-si-client.postinst new file mode 100644 index 000000000..cafe8c1cb --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-client.postinst @@ -0,0 +1,23 @@ +#!/bin/sh -e + +#DEBHELPER# + +# We exit unless the package is being configured +case "$1" in + abort*upgrade) exit 0;; + abort*remove) exit 0;; + abort*deconfigure) exit 0;; + configure) ;; + *) exit 0; +esac + +[ ! -d /usr/lib/gosa-si/client/events ] && install -d -o root -g root -m 750 /usr/lib/gosa-si/client/events + +# Fix permission +[ -f /etc/gosa-si/client.conf ] && chmod go-rwx /etc/gosa-si/client.conf + +# Restart daemon +invoke-rc.d gosa-si restart + + +exit 0 diff --git a/trunk/gosa-si/debian/gosa-si-common.default b/trunk/gosa-si/debian/gosa-si-common.default new file mode 100644 index 000000000..fede17e5f --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-common.default @@ -0,0 +1,3 @@ +# /etc/default/gosa-si - configure the init script +START_CLIENT=1 +DEBUG=-vvv diff --git a/trunk/gosa-si/debian/gosa-si-common.dirs b/trunk/gosa-si/debian/gosa-si-common.dirs new file mode 100644 index 000000000..2d13e8f10 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-common.dirs @@ -0,0 +1,2 @@ +/etc/default +/usr/share/perl5/GOSA diff --git a/trunk/gosa-si/debian/gosa-si-common.init b/trunk/gosa-si/debian/gosa-si-common.init new file mode 100755 index 000000000..d155ef802 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-common.init @@ -0,0 +1,88 @@ +#!/bin/sh +# Start/stop the GOsa support daemon infrastructure. +# +### BEGIN INIT INFO +# Provides: gosa-si +# Required-Start: $syslog $time +# Required-Stop: $syslog $time +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: GOsa message server/client component +# Description: gosa-si establishes the communication between a couple of +# GOsa hosting servers and optionally clients to do event +# signaling for all communication partners. +### END INIT INFO + +# Load defaults +[ -r /etc/default/gosa-si ] && . /etc/default/gosa-si + +# Load LSB support functions +. /lib/lsb/init-functions + + +start_client() { + start-stop-daemon --start --quiet --pidfile /var/run/gosa-si-client.pid --name gosa-si-client --startas /usr/sbin/gosa-si-client -- $DEBUG +} + + +start_server() { + start-stop-daemon --start --quiet --pidfile /var/run/gosa-si-server.pid --name gosa-si-server --startas /usr/sbin/gosa-si-server -- $1 $DEBUG +} + + +stop_client() { + start-stop-daemon --stop --retry 5 --quiet --pidfile /var/run/gosa-si-client.pid --name gosa-si-client + kill `ps -C gosa-si-client -o pid=` > /dev/null 2>&1 + ! ps -C gosa-si-client -o pid= > /dev/null 2>&1 +} + + +stop_server() { + start-stop-daemon --stop --retry 5 --quiet --pidfile /var/run/gosa-si-server.pid --name gosa-si-server + kill `ps -C gosa-si-server -o pid=` > /dev/null 2>&1 + ! ps -C gosa-si-server -o pid= > /dev/null 2>&1 +} + + +case "$1" in +start) log_daemon_msg "Starting GOsa support infrastructure" + if [ -x /usr/sbin/gosa-si-server ]; then + log_progress_msg "daemon" + start_server + fi + if [ "$START_CLIENT" = "1" -a -x /usr/sbin/gosa-si-client ]; then + log_progress_msg "client" + start_client + fi + log_end_msg $? + ;; +stop) log_daemon_msg "Stopping GOsa support infrastructure" + if [ "$START_CLIENT" = "1" -a -x /usr/sbin/gosa-si-client ]; then + log_progress_msg "client" + stop_client + fi + if [ -x /usr/sbin/gosa-si-server ]; then + log_progress_msg "daemon" + stop_server + fi + log_end_msg $? + ;; +reload|force-reload|restart) log_daemon_msg "Restarting GOsa support infrastructure" + if [ "$START_CLIENT" = "1" -a -x /usr/sbin/gosa-si-client ]; then + stop_client + fi + if [ -x /usr/sbin/gosa-si-server ]; then + stop_server + start_server + fi + if [ "$START_CLIENT" = "1" -a -x /usr/sbin/gosa-si-client ]; then + start_client + fi + log_progress_msg "done" + log_end_msg $? + ;; +*) log_action_msg "Usage: /etc/init.d/gosa-si {start|stop|restart|reload|force-reload}" + exit 2 + ;; +esac +exit 0 diff --git a/trunk/gosa-si/debian/gosa-si-common.install b/trunk/gosa-si/debian/gosa-si-common.install new file mode 100644 index 000000000..4fede15d3 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-common.install @@ -0,0 +1,3 @@ +modules/GosaSupportDaemon.pm usr/share/perl5/GOSA +modules/DBsqlite.pm usr/share/perl5/GOSA +modules/ArpWatch.pm usr/share/perl5/POE/Component diff --git a/trunk/gosa-si/debian/gosa-si-common.postinst b/trunk/gosa-si/debian/gosa-si-common.postinst new file mode 100644 index 000000000..ef7bfbbd0 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-common.postinst @@ -0,0 +1,15 @@ +#!/bin/sh -e + +#DEBHELPER# + +# We exit unless the package is being configured +case "$1" in + abort*upgrade) exit 0;; + abort*remove) exit 0;; + abort*deconfigure) exit 0;; + configure) ;; + *) exit 0; +esac + +[ -d /var/lib/gosa-si ] || install -d -o root -g root -m 750 /var/lib/gosa-si + diff --git a/trunk/gosa-si/debian/gosa-si-server-opsi.dirs b/trunk/gosa-si/debian/gosa-si-server-opsi.dirs new file mode 100644 index 000000000..df081d1ff --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server-opsi.dirs @@ -0,0 +1,2 @@ +usr/lib/gosa-si/server/GosaPackages +usr/lib/gosa-si/server/ServerPackages diff --git a/trunk/gosa-si/debian/gosa-si-server-opsi.install b/trunk/gosa-si/debian/gosa-si-server-opsi.install new file mode 100644 index 000000000..ffe16d06d --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server-opsi.install @@ -0,0 +1,3 @@ +server/events/opsi_com.pm usr/lib/gosa-si/server/GosaPackages +server/events/opsi_com.pm usr/lib/gosa-si/server/ServerPackages + diff --git a/trunk/gosa-si/debian/gosa-si-server-postfix.dirs b/trunk/gosa-si/debian/gosa-si-server-postfix.dirs new file mode 100644 index 000000000..df081d1ff --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server-postfix.dirs @@ -0,0 +1,2 @@ +usr/lib/gosa-si/server/GosaPackages +usr/lib/gosa-si/server/ServerPackages diff --git a/trunk/gosa-si/debian/gosa-si-server-postfix.install b/trunk/gosa-si/debian/gosa-si-server-postfix.install new file mode 100644 index 000000000..45b4a6985 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server-postfix.install @@ -0,0 +1,3 @@ +server/events/mailqueue_com.pm usr/lib/gosa-si/server/GosaPackages +server/events/mailqueue_com.pm usr/lib/gosa-si/server/ServerPackages + diff --git a/trunk/gosa-si/debian/gosa-si-server.dirs b/trunk/gosa-si/debian/gosa-si-server.dirs new file mode 100644 index 000000000..4a72dceb9 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server.dirs @@ -0,0 +1,7 @@ +usr/sbin +usr/lib/gosa-si/modules +usr/lib/gosa-si/server/GosaPackages +usr/lib/gosa-si/server/ServerPackages +usr/lib/gosa-si/server/ClientPackages +etc/gosa-si +/var/log/fai diff --git a/trunk/gosa-si/debian/gosa-si-server.install b/trunk/gosa-si/debian/gosa-si-server.install new file mode 100644 index 000000000..99882e7ad --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server.install @@ -0,0 +1,16 @@ +gosa-si-server usr/sbin +server.conf etc/gosa-si +modules/ClientPackages.pm usr/lib/gosa-si/modules +modules/GosaPackages.pm usr/lib/gosa-si/modules +modules/ArpHandler.pm usr/lib/gosa-si/modules +modules/oui.txt usr/lib/gosa-si/modules +modules/ServerPackages.pm usr/lib/gosa-si/modules +server/events/gosaTriggered.pm usr/lib/gosa-si/server/GosaPackages +server/events/siTriggered.pm usr/lib/gosa-si/server/ClientPackages +server/events/clMessages.pm usr/lib/gosa-si/server/ClientPackages +server/events/databases.pm usr/lib/gosa-si/server/GosaPackages +server/events/databases.pm usr/lib/gosa-si/server/ServerPackages +server/events/logHandling.pm usr/lib/gosa-si/server/GosaPackages +server/events/logHandling.pm usr/lib/gosa-si/server/ServerPackages +server/events/server_server_com.pm usr/lib/gosa-si/server/ServerPackages + diff --git a/trunk/gosa-si/debian/gosa-si-server.lintian-overrides b/trunk/gosa-si/debian/gosa-si-server.lintian-overrides new file mode 100644 index 000000000..123bbc7cf --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server.lintian-overrides @@ -0,0 +1,2 @@ +gosa-si-server: binary-without-manpage usr/sbin/gosa-si-server + diff --git a/trunk/gosa-si/debian/gosa-si-server.logrotate b/trunk/gosa-si/debian/gosa-si-server.logrotate new file mode 100644 index 000000000..c10f95e34 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server.logrotate @@ -0,0 +1,10 @@ +/var/log/gosa-si-server.log { + weekly + rotate 4 + compress + missingok + postrotate + pkill -SIGUSR1 gosa-si-server > /dev/null || true + endscript +} + diff --git a/trunk/gosa-si/debian/gosa-si-server.manpages b/trunk/gosa-si/debian/gosa-si-server.manpages new file mode 100644 index 000000000..dbc5a7e13 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server.manpages @@ -0,0 +1,2 @@ +gosa-si-server.conf.5 +gosa-si-server.1 diff --git a/trunk/gosa-si/debian/gosa-si-server.postinst b/trunk/gosa-si/debian/gosa-si-server.postinst new file mode 100644 index 000000000..c990f4ba4 --- /dev/null +++ b/trunk/gosa-si/debian/gosa-si-server.postinst @@ -0,0 +1,20 @@ +#!/bin/sh -e + +#DEBHELPER# + +# We exit unless the package is being configured +case "$1" in + abort*upgrade) exit 0;; + abort*remove) exit 0;; + abort*deconfigure) exit 0;; + configure) ;; + *) exit 0; +esac + +# Fix permission +[ -f /etc/gosa-si/server.conf ] && chmod go-rwx /etc/gosa-si/server.conf + +# Restart daemon +invoke-rc.d gosa-si restart + +exit 0 diff --git a/trunk/gosa-si/debian/rules b/trunk/gosa-si/debian/rules new file mode 100755 index 000000000..892de833c --- /dev/null +++ b/trunk/gosa-si/debian/rules @@ -0,0 +1,92 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +build: patch + #******************************************************** + #* Building ltsp-goto into a Debian/GNU Linux Package * + #* please stand by * + #******************************************************** + +clean: clean-patched unpatch +clean-patched: + dh_testdir + rm -f install-stamp + -rm -f debian/files + -rm -rf debian/tmp + -rm -f debian/substvars + dh_clean + +unpatch: + dpatch deapply-all + rm -rf patch-stamp debian/patched + +install: install-stamp +install-stamp: + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Create a copy, remove svn stuff + -mkdir debian/tmp + -for i in *; do \ + cp -R $$i debian/tmp ; \ + done + -find debian/tmp -name '*.svn' -type d -exec rm -rf {} \; 2> /dev/null + + -for i in gosa-si-client gosa-si-server modules/GosaPackages.pm modules/ClientPackages.pm modules/ServerPackages.pm server/events/*; do sed -i 's/use GosaSupportDaemon;/use GOSA::GosaSupportDaemon;/g;s/use DBsqlite;/use GOSA::DBsqlite;/g' debian/tmp/$$i; done + + -sed -i 's!"/etc/gosa-si/modules";!use lib "/usr/lib/gosa-si/modules";!g' debian/tmp/gosa-si-server + + -sed -i 's!"/etc/gosa-si/server/events";!"/usr/lib/gosa-si/server/events";!g' debian/tmp/modules/GosaPackages.pm + + touch install-stamp + +patch: patch-stamp +patch-stamp: + dpatch apply-all + dpatch cat-all >patch-stamp + +binary-indep: install + dh_testdir + dh_testroot + + dh_install --sourcedir=debian/tmp + + install -D -m 644 debian/gosa-si-server.lintian-overrides debian/gosa-si-server/usr/share/lintian/overrides/gosa-si-server + install -D -m 644 debian/gosa-si-client.lintian-overrides debian/gosa-si-client/usr/share/lintian/overrides/gosa-si-client + + dh_installdocs + dh_installcron + dh_installexamples + dh_installchangelogs + dh_installman + dh_installlogrotate + #dh_installdebconf + dh_installinit --init-script=gosa-si -- start 00 2 3 4 5 . stop 29 1 . + + chmod 640 debian/gosa-si-server/etc/gosa-si/server.conf debian/gosa-si-client/etc/gosa-si/client.conf + + dh_link + dh_strip + dh_compress + dh_fixperms + dh_perl + dh_installdeb + dh_shlibdeps + + dh_gencontrol + dh_md5sums + dh_builddeb + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep +.PHONY: build install clean binary-indep binary + +binary-arch: + diff --git a/trunk/gosa-si/gosa-si-client b/trunk/gosa-si/gosa-si-client new file mode 100755 index 000000000..94b7c66f1 --- /dev/null +++ b/trunk/gosa-si/gosa-si-client @@ -0,0 +1,1263 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: gosa-server +# +# USAGE: gosa-si-client +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: libnetaddr-ip-perl +# BUGS: --- +# NOTES: +# AUTHOR: (Andreas Rettenberger), +# COMPANY: +# VERSION: 1.0 +# CREATED: 12.09.2007 08:54:41 CEST +# REVISION: --- +#=============================================================================== + +my $client_version = '$HeadURL$:$Rev$'; + +use strict; +use warnings; +use Getopt::Long; +use Config::IniFiles; +use POSIX; +use Time::HiRes qw( gettimeofday ); + +use POE qw(Component::Server::TCP Wheel::FollowTail Wheel::Run); +use IO::Socket::INET; +use NetAddr::IP; +use Data::Dumper; +use Crypt::Rijndael; +use GOSA::GosaSupportDaemon; +use Digest::MD5 qw(md5_hex md5 md5_base64); +use MIME::Base64; +use XML::Simple; +use File::Basename; +use File::Spec; + +# Workaround: need pure perl to make it work with UTF-8 :-( +$XML::Simple::PREFERRED_PARSER= "XML::SAX::PurePerl"; + +my $client_headURL; +my $client_revision; +my $client_status; +my $event_dir = "/usr/lib/gosa-si/client/events"; +use lib "/usr/lib/gosa-si/client/events"; + +my (%cfg_defaults, $foreground, $verbose, $pid_file, $procid, $pid, $log_file, $fai_logpath); +my ($server_ip, $server_port, $server_timeout, $server_domain, $server_key_lifetime); +my ($client_port, $ldap_enabled, $ldap_config, $pam_config, $nss_config); +my $xml; +my $event_hash; +my $default_server_key; +my @servers; +my $gotoHardwareChecksum; +my $gosa_si_client_fifo; +my %files_to_watch; +$verbose= 1; + +# globalise variables which are used in imported events +our $global_kernel; +our $cfg_file; +our $opts_file; +our $server_address; +our $client_address; +our $client_ip; +our $client_mac_address; +our $client_dnsname; +our $client_force_hostname; +our $server_key; + +# default variables +our $REGISTERED = 0; + +# path to fifo for non-gosa-si-client messages to gosa-si-server +$gosa_si_client_fifo = "/var/run/gosa-si-client.socket"; +%files_to_watch = (fifo => $gosa_si_client_fifo); + +# in function register_at_gosa_si_server, after which period of seconds a new registration should be tried if a registration was +# not successful until now +my $delay_set_time = 10; +our $prg= basename($0); + +# all n seconds the client reports logged_in users to gosa-si-server +my $trigger_logged_in_users_report_delay = 600; + +# all n seconds the client reports messages seen by user +my $trigger_seen_messages_delay = 30; + +# directory where all log files from installation are stored +my $fai_log_dir = "/var/log/fai"; + +%cfg_defaults = ( +"general" => + {"log-file" => [\$log_file, "/var/run/".$prg.".log"], + "pid-file" => [\$pid_file, "/var/run/".$prg.".pid"], + "opts-file" => [\$opts_file, "/var/run/".$prg.".opts"], + }, +"client" => + {"port" => [\$client_port, "20083"], + "ip" => [\$client_ip, "0.0.0.0"], + "mac-address" => [\$client_mac_address, "00:00:00:00:00:00"], + "server-domain" => [\$server_domain, ""], + "ldap" => [\$ldap_enabled, 1], + "ldap-config" => [\$ldap_config, "/etc/ldap/ldap.conf"], + "pam-config" => [\$pam_config, "/etc/pam_ldap.conf"], + "nss-config" => [\$nss_config, "/etc/libnss-ldap.conf"], + "fai-logpath" => [\$fai_logpath, "/var/log/fai/fai.log"], + "force-hostname" => [\$client_force_hostname, "false"], + }, +"server" => { + "ip" => [\$server_ip, "127.0.0.1"], + "port" => [\$server_port, "20081"], + "key" => [\$server_key, ""], + "timeout" => [\$server_timeout, 10], + "key-lifetime" => [\$server_key_lifetime, 600], + }, + +); + + +#=== FUNCTIONS = functions ===================================================== + +sub usage { + print STDERR << "EOF" ; +usage: $prg [-hvf] [-c config] + + -h : this (help) message + -c : config file + -f : foreground, process will not be forked to background + -v : be verbose (multiple to increase verbosity) + +EOF + print "\n" ; +} + +#=== FUNCTION ================================================================ +# NAME: check_cmdline_param +# PARAMETERS: +# RETURNS: +# DESCRIPTION: +#=============================================================================== +sub check_cmdline_param () { + my $err_config; + my $err_counter = 0; + if(not defined($cfg_file)) { + $cfg_file = "/etc/gosa-si/client.conf"; + if(! -r $cfg_file) { + $err_config = "please specify a config file"; + $err_counter += 1; + } + } + if( $err_counter > 0 ) { + &usage( "", 1 ); + if( defined( $err_config)) { print STDERR "$err_config\n"} + print STDERR "\n"; + exit( -1 ); + } +} + + +#=== FUNCTION ================================================================ +# NAME: check_pid +# PARAMETERS: +# RETURNS: +# DESCRIPTION: +#=============================================================================== +sub check_pid { + $pid = -1; + # Check, if we are already running + if( open(LOCK_FILE, "<$pid_file") ) { + $pid = ; + if( defined $pid ) { + chomp( $pid ); + if( -f "/proc/$pid/stat" ) { + my($stat) = `cat /proc/$pid/stat` =~ m/$pid \((.+)\).*/; + if( $0 eq $stat ) { + close( LOCK_FILE ); + exit -1; + } + } + } + close( LOCK_FILE ); + unlink( $pid_file ); + } + + # create a syslog msg if it is not to possible to open PID file + if (not sysopen(LOCK_FILE, $pid_file, O_WRONLY|O_CREAT|O_EXCL, 0644)) { + my($msg) = "Couldn't obtain lockfile '$pid_file' "; + if (open(LOCK_FILE, '<', $pid_file) + && ($pid = )) + { + chomp($pid); + $msg .= "(PID $pid)\n"; + } else { + $msg .= "(unable to read PID)\n"; + } + if( ! ($foreground) ) { + openlog( $0, "cons,pid", "daemon" ); + syslog( "warning", $msg ); + closelog(); + } + else { + print( STDERR " $msg " ); + } + exit( -1 ); + } +} + + +sub sig_int_handler { + my ($signal) = @_; + + daemon_log("shutting down gosa-si-client", 1); + system("kill `ps -C gosa-si-client -o pid=`"); +} +$SIG{INT} = \&sig_int_handler; + + +#=== FUNCTION ================================================================ +# NAME: logging +# PARAMETERS: level - string - default 'info' +# msg - string - +# facility - string - default 'LOG_DAEMON' +# RETURNS: +# DESCRIPTION: +#=============================================================================== +sub daemon_log { +# log into log_file + my( $msg, $level ) = @_; + if(not defined $msg) { return } + if(not defined $level) { $level = 1 } + if(defined $log_file){ + open(LOG_HANDLE, ">>$log_file"); + if(not defined open( LOG_HANDLE, ">>$log_file" )) { + print STDERR "cannot open $log_file: $!"; + return + } + chomp($msg); + if($level <= $verbose){ + my ($seconds, $minutes, $hours, $monthday, $month, + $year, $weekday, $yearday, $sommertime) = localtime(time); + $hours = $hours < 10 ? $hours = "0".$hours : $hours; + $minutes = $minutes < 10 ? $minutes = "0".$minutes : $minutes; + $seconds = $seconds < 10 ? $seconds = "0".$seconds : $seconds; + my @monthnames = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); + $month = $monthnames[$month]; + $monthday = $monthday < 10 ? $monthday = "0".$monthday : $monthday; + $year+=1900; + + my $log_msg = "$month $monthday $hours:$minutes:$seconds $prg $msg\n"; + print LOG_HANDLE $log_msg; + if( $foreground ) { + print STDERR $log_msg; + } + } + close( LOG_HANDLE ); + } +} + + +#=== FUNCTION ================================================================ +# NAME: get_mac +# PARAMETERS: interface name (i.e. eth0) +# RETURNS: (mac address) +# DESCRIPTION: Uses ioctl to get mac address directly from system. +#=============================================================================== +sub get_mac { + my $ifreq= shift; + my $result; + if ($ifreq && length($ifreq) > 0) { + if($ifreq eq "all") { + if(defined($server_ip)) { + $result = &get_local_mac_for_remote_ip($server_ip); + } + elsif ($client_mac_address && length($client_mac_address) > 0 && !($client_mac_address eq "00:00:00:00:00:00")){ + $result = &client_mac_address; + } + else { + $result = "00:00:00:00:00:00"; + } + } else { + my $SIOCGIFHWADDR= 0x8927; # man 2 ioctl_list + + # A configured MAC Address should always override a guessed value + if ($client_mac_address and length($client_mac_address) > 0 and not($client_mac_address eq "00:00:00:00:00:00")) { + $result= $client_mac_address; + } + else { + socket SOCKET, PF_INET, SOCK_DGRAM, getprotobyname('ip') + or die "socket: $!"; + + if(ioctl SOCKET, $SIOCGIFHWADDR, $ifreq) { + my ($if, $mac)= unpack 'h36 H12', $ifreq; + + if (length($mac) > 0) { + $mac=~ m/^([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$/; + $mac= sprintf("%s:%s:%s:%s:%s:%s", $1, $2, $3, $4, $5, $6); + $result = $mac; + } + } + } + } + } + return $result; +} + + + +#=== FUNCTION ================================================================ +# NAME: get_local_mac_for_remote_ip +# PARAMETERS: none (takes server_ip from global variable) +# RETURNS: (ip address from interface that is used for communication) +# DESCRIPTION: Uses ioctl to get routing table from system, checks which entry +# matches (defaultroute last). +#=============================================================================== +sub get_local_mac_for_remote_ip { + my $server_ip= shift; + my $result= "00:00:00:00:00:00"; + + if($server_ip =~ /^(\d\d?\d?\.){3}\d\d?\d?$/) { + my $PROC_NET_ROUTE= ('/proc/net/route'); + + open(PROC_NET_ROUTE, "<$PROC_NET_ROUTE") + or die "Could not open $PROC_NET_ROUTE"; + + my @ifs = ; + + close(PROC_NET_ROUTE); + + # Eat header line + shift @ifs; + chomp @ifs; + foreach my $line(@ifs) { + my ($Iface,$Destination,$Gateway,$Flags,$RefCnt,$Use,$Metric,$Mask,$MTU,$Window,$IRTT)=split(/\s/, $line); + my $destination; + my $mask; + my ($d,$c,$b,$a)=unpack('a2 a2 a2 a2', $Destination); + $destination= sprintf("%d.%d.%d.%d", hex($a), hex($b), hex($c), hex($d)); + ($d,$c,$b,$a)=unpack('a2 a2 a2 a2', $Mask); + $mask= sprintf("%d.%d.%d.%d", hex($a), hex($b), hex($c), hex($d)); + if(new NetAddr::IP($server_ip)->within(new NetAddr::IP($destination, $mask))) { + # destination matches route, save mac and exit + $result= &get_mac($Iface); + last; + } + } + } else { + daemon_log("get_local_mac_for_remote_ip was called with a non-ip parameter: $server_ip", 1); + } + return $result; +} + + +sub generate_hw_digest { + my $hw_data; + foreach my $line (split /\n/, `cat /proc/bus/pci/devices`) { + $hw_data.= sprintf "%s", $line =~ /[^\s]+\s([^\s]+)\s.*/; + } + return(md5_base64($hw_data)); +} + + +sub create_ciphering { + my ($passwd) = @_; + if((!defined($passwd)) || length($passwd)==0) { + $passwd = ""; + } + $passwd = substr(md5_hex("$passwd") x 32, 0, 32); + my $iv = substr(md5_hex('GONICUS GmbH'),0, 16); + my $my_cipher = Crypt::Rijndael->new($passwd , Crypt::Rijndael::MODE_CBC()); + $my_cipher->set_iv($iv); + return $my_cipher; +} + + +sub encrypt_msg { + my ($msg, $key) = @_; + my $my_cipher = &create_ciphering($key); + my $len; + { + use bytes; + $len= 16-length($msg)%16; + } + $msg = "\0"x($len).$msg; + $msg = $my_cipher->encrypt($msg); + chomp($msg = &encode_base64($msg)); + # there are no newlines allowed inside msg + $msg=~ s/\n//g; + return $msg; +} + + +sub decrypt_msg { + + my ($msg, $key) = @_ ; + $msg = &decode_base64($msg); + my $my_cipher = &create_ciphering($key); + $msg = $my_cipher->decrypt($msg); + $msg =~ s/\0*//g; + return $msg; +} + + +#=== FUNCTION ================================================================ +# NAME: send_msg_hash_to_target +# PARAMETERS: msg_hash - hash - xml_hash created with function create_xml_hash +# PeerAddr string - socket address to send msg +# PeerPort string - socket port, if not included in socket address +# RETURNS: nothing +# DESCRIPTION: ???? +#=============================================================================== +sub send_msg_hash_to_target { + my ($msg_hash, $address, $encrypt_key) = @_ ; + my $msg = &create_xml_string($msg_hash); + my $header = @{$msg_hash->{'header'}}[0]; + my $error = &send_msg_to_target($msg, $address, $encrypt_key, $header); + + return $error; +} + + +sub send_msg_to_target { + my ($msg, $address, $encrypt_key, $msg_header) = @_ ; + my $error = 0; + + if( $msg_header ) { $msg_header = "'$msg_header'-"; } + else { $msg_header = ""; } + + # Memorize own source address + $msg =~ /(\S+)<\/source>/; + my $own_source_address = $1; + + # encrypt xml msg + my $crypted_msg = &encrypt_msg($msg, $encrypt_key); + + # opensocket + my $socket = &open_socket($address); + if( !$socket ) { + daemon_log("WARNING: cannot send ".$msg_header."msg to $address , host not reachable", 3); + if ($REGISTERED == 1) { + $REGISTERED = 0; # if server is not available, cause reregistering + daemon_log("INFO: cause reregistering at gosa-si-server", 5); + $global_kernel->yield('register_at_gosa_si_server'); + + } + $error++; + } + + # send xml msg + if( $error == 0 ) { + print $socket $crypted_msg.";$own_source_address\n"; + daemon_log("INFO: send ".$msg_header."msg to $address", 5); + daemon_log("DEBUG: message:\n$msg", 9); + } + + # close socket in any case + if( $socket ) { + close $socket; + } + + return $error; +} + + +sub write_to_file { + my ($string, $file) = @_; + my $error = 0; + + if( not defined $file || not -f $file ) { + &main::daemon_log("ERROR: $prg: check '-f file' failed: $file", 1); + $error++; + } + if( not defined $string || 0 == length($string)) { + &main::daemon_log("ERROR: $prg: empty string to write to file '$file'", 1); + $error++; + } + + if( $error == 0 ) { + + chomp($string); + + if (open(FILE, ">> $file")){ + print FILE $string."\n"; + close(FILE); + } + } + + return; +} + + +sub open_socket { + my ($PeerAddr, $PeerPort) = @_ ; + if(defined($PeerPort)){ + $PeerAddr = $PeerAddr.":".$PeerPort; + } + my $socket; + $socket = new IO::Socket::INET(PeerAddr => $PeerAddr, + Porto => "tcp", + Type => SOCK_STREAM, + Timeout => 5, + ); + if(not defined $socket) { + return; + } + &daemon_log("DEBUG: open_socket: $PeerAddr", 7); + return $socket; +} + + +#=== FUNCTION ================================================================ +# NAME: register_at_server +# PARAMETERS: +# RETURNS: +# DESCRIPTION: +#=============================================================================== +sub register_at_gosa_si_server { + my ($kernel) = $_[KERNEL]; + my $try_to_register = 0; + + # if client is already registered, stop registration process + if ($REGISTERED) { + $kernel->delay('register_at_gosa_si_server'); + + # client is not registered, start registration process + } else { + # clear all other triggered events and wait till registration was successful + $kernel->delay('trigger_new_key'); + + # create new passwd and ciphering object for client-server communication + $server_key = &create_passwd(); + + my $events = join( ",", keys %{$event_hash} ); + while(1) { + $try_to_register++; + + # after one complete round through all server, stop trying to register + if( $try_to_register > @servers ) { last; } + + # fetch first gosa-si-server from @servers + # append shifted gosa-si-server at the end of @servers, so looking for servers never stop if + # a registration never occured + my $server = shift(@servers); + push( @servers, $server ); + + # Check if our ip is resolvable - if not: don't try to register + if(!(defined($server) && $server =~ m/^[0-9\.]*?:.*$/)) { + &main::daemon_log("ERROR: Server with address '".defined($server)?$server:""."' is invalid!", 1); + if (length(@servers) == 1) { + &main::daemon_log("ERROR: No valid servers found!", 1); + exit(1); + } + } + + # Check if our ip is resolvable - if not: don't try to register + my $ip= &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); + my $dnsname= gethostbyaddr(inet_aton($ip), AF_INET); + if(!defined($dnsname)) { + if( defined($client_force_hostname) && $client_force_hostname eq "true") { + $dnsname = `hostname`; + } else { + &write_to_file("goto-error-dns:$ip", $fai_logpath); + &main::daemon_log("ERROR: ip is not resolvable, no registration possible. Write 'goto-error-dns:$ip' to $fai_logpath", 1); + exit(1); + } + } + + # create registration msg + my $local_ip = &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); + my $local_mac = &get_local_mac_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); + my $register_hash = &create_xml_hash("here_i_am", $local_ip.":".$client_port, $server); + &add_content2xml_hash($register_hash, "new_passwd", $server_key); + &add_content2xml_hash($register_hash, "mac_address", $local_mac); + &add_content2xml_hash($register_hash, "events", $events); + &add_content2xml_hash($register_hash, "client_status", $client_status); + &add_content2xml_hash($register_hash, "client_revision", $client_revision); + &add_content2xml_hash($register_hash, "gotoHardwareChecksum", $gotoHardwareChecksum); + &add_content2xml_hash($register_hash, "key_lifetime", $server_key_lifetime); + + # Add $HOSTNAME from ENV if force-hostname is set + if( defined($client_force_hostname) && $client_force_hostname eq "true") { + if(defined($ENV{HOSTNAME}) && length($ENV{HOSTNAME}) >0 ) { + &add_content2xml_hash($register_hash, "force-hostname", $ENV{HOSTNAME}); + } else { + &main::daemon_log("force-hostname was set to true, but no \$HOSTNAME was found in Environment!",0); + } + } + + # send xml hash to server with general server passwd + my $res = &send_msg_hash_to_target($register_hash, $server, $default_server_key); + + # if delivery of registration msg succeed + if($res eq "0") { + # reset try_to_register + $try_to_register = 0; + + # Set fixed client address and mac address + $client_ip= &get_local_ip_for_remote_ip(sprintf("%s", $server =~ /^([0-9\.]*?):.*$/)); + $client_address= "$client_ip:$client_port"; + $client_mac_address = $local_mac; + $client_dnsname = $dnsname; + last; + + # delivery of registration msg failed + } else { + # wait 1 sec until trying to register again + sleep(1); + next; + } + + } # end of while + # one circle through all servers finished and no registration succeed + if ( $try_to_register >= @servers ) { + &write_to_file("gosa-si-no-server-available", $fai_logpath); + $kernel->delay_set('register_at_gosa_si_server', $delay_set_time); + + # delivery of registraion msg succeed, waiting for server response + } else { + daemon_log("INFO: waiting for msg 'register_at_gosa_si_server'",5); + $kernel->delay_set('register_at_gosa_si_server', $delay_set_time); + # clear old settings and set it again + $kernel->delay('trigger_new_key'); + $kernel->delay_set('trigger_new_key', $server_key_lifetime); + } + + } + return; +} + + +sub check_key_and_xml_validity { + my ($crypted_msg, $module_key) = @_; + + my $msg; + my $msg_hash; + eval{ + $msg = &decrypt_msg($crypted_msg, $module_key); + &main::daemon_log("decrypted_msg: \n$msg", 9); + + $msg_hash = $xml->XMLin($msg, ForceArray=>1); + + ############## + # check header + my $header_l = $msg_hash->{'header'}; + if( 1 != @{$header_l} ) { + die 'no or more headers specified'; + } + my $header = @{$header_l}[0]; + if( 0 == length $header) { + die 'header has length 0'; + } + + ############## + # check source + my $source_l = $msg_hash->{'source'}; + if( 1 != @{$source_l} ) { + die 'no or more than 1 sources specified'; + } + my $source = @{$source_l}[0]; + if( 0 == length $source) { + die 'source has length 0'; + } + unless( $source =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+$/ ) { + die "source '$source' is neither a complete ip-address with port nor 'GOSA'"; + } + + ############## + # check target + my $target_l = $msg_hash->{'target'}; + if( 1 != @{$target_l} ) { + die 'no or more than 1 targets specified '; + } + my $target = @{$target_l}[0]; + if( 0 == length $target) { + die 'target has length 0 '; + } + unless( $target =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+$/ ){ + die "source is neither a complete ip-address with port nor 'GOSA'"; + } + }; + if($@) { + &main::daemon_log("WARNING: do not understand the message or msg is not gosa-si envelope conform:", 5); + &main::daemon_log("$@", 8); + $msg = undef; + $msg_hash = undef; + } + + return ($msg, $msg_hash); +} + + +sub check_outgoing_xml_validity { + my ($msg) = @_; + + my $msg_hash; + eval{ + $msg_hash = $xml->XMLin($msg, ForceArray=>1); + + ############## + # check header + my $header_l = $msg_hash->{'header'}; + if( 1 != @{$header_l} ) { + die 'no or more than one headers specified'; + } + my $header = @{$header_l}[0]; + if( 0 == length $header) { + die 'header has length 0'; + } + + ############## + # check source + my $source_l = $msg_hash->{'source'}; + if( 1 != @{$source_l} ) { + die 'no or more than 1 sources specified'; + } + my $source = @{$source_l}[0]; + if( 0 == length $source) { + die 'source has length 0'; + } + unless( $source =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+$/ || + $source =~ /^GOSA$/i ) { + die "source '$source' is neither a complete ip-address with port"; + } + + ############## + # check target + my $target_l = $msg_hash->{'target'}; + if( 1 != @{$target_l} ) { + die "no or more than one targets specified"; + } + foreach my $target (@$target_l) { + if( 0 == length $target) { + die "target has length 0"; + } + unless( $target =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+$/ ) { + die "target '$target' is not a complete ip-address with port or a valid target name"; + } + } + }; + if($@) { + daemon_log("WARNING: outgoing msg is not gosa-si envelope conform", 5); + daemon_log("$@ $msg", 8); + $msg_hash = undef; + } + return ($msg_hash); +} + + +sub trigger_new_key { + my ($kernel) = $_[KERNEL] ; + + my $msg = "
      new_key
      $client_address$client_address
      "; + &send_msg_to_target($msg, $client_address, $server_key, 'new_key'); + + $kernel->delay_set('trigger_new_key', $server_key_lifetime); +} + + +sub trigger_logged_in_users_report { + my ($kernel) = $_[KERNEL] ; + + # just do if client is registered already + if( $REGISTERED ) { + my $result = qx(/usr/bin/users); + my @logged_in_user_list; + if( defined $result ) { + chomp($result); + @logged_in_user_list = split(/\s/, $result); + } + + system("echo 'CURRENTLY_LOGGED_IN ".join(" ", @logged_in_user_list)."' > /var/run/gosa-si-client.socket"); + $kernel->delay_set('trigger_logged_in_users_report', $trigger_logged_in_users_report_delay); + } else { + # try it in 10 sec again + $kernel->delay_set('trigger_logged_in_users_report', 10); + } +} + + +sub trigger_seen_messages { + my ($kernel) = $_[KERNEL] ; + + # Select all files under /tmp with prefix 'goto_notify' + my $goto_dir = "/tmp"; + opendir(DIR, $goto_dir); + my @goto_files = grep { /^goto_notify_/ && -f "$goto_dir/$_" } readdir(DIR); + closedir DIR; + + # Check if file has 'seen' tag + foreach my $goto_file (@goto_files) { + open(FILE, "$goto_dir/$goto_file"); + my @lines = ; + close FILE; + + my $source; + my $target; + my $usr; + my $subject; + my $message; + my $seen = 0; + chomp(@lines); + foreach my $line (@lines) { + if ($line =~ /^source:([\S\s]*)$/) { + $source = $1 + } + if ($line =~ /^target:([\S\s]*)$/) { + $target = $1; + } + if ($line =~ /^usr:([\S\s]*)$/) { + $usr = $1; + } + if ($line =~ /^subject:([\S\s]*)$/) { + $subject = $1; + } + if ($line =~ /^message:([\S\s]*)$/) { + $message = $1; + } + if ($line =~ /^seen$/) { + $seen++; + } + } + + # Send 'confirm_usr_msg' back to msg-hosting server + if ($seen) { + my %data = ('usr'=>$usr, 'subject'=>$subject, 'message'=>$message); + my $confirm_msg = &build_msg("confirm_usr_msg", $target, $source, \%data); + my $send_error = &send_msg_to_target($confirm_msg, $server_address, $server_key); + + # Delete file + if (not $send_error) { + system("rm $goto_dir/$goto_file"); + } + } + } + + $kernel->delay_set('trigger_seen_messages', $trigger_seen_messages_delay); + + return; +} + + +sub generic_file_error { + my ( $heap, $operation, $errno, $error_string, $wheel_id ) = + @_[ HEAP, ARG0, ARG1, ARG2, ARG3 ]; + + my $service = $heap->{services}->{$wheel_id}; + daemon_log("ERROR: '$service' watcher $operation error $errno: $error_string", 1); + daemon_log("ERROR: shutting down '$service' file watcher", 1); + + delete $heap->{services}->{$wheel_id}; + delete $heap->{watchers}->{$wheel_id}; + return; +} + + +sub fifo_got_record { + my $file_record = $_[ARG0]; + my $header; + my $content = ""; + daemon_log("DEBUG: fifo got record: $file_record", 7); + + $file_record =~ /^(\S+)[ ]?([\s\S]+)?$/; + if( defined $1 ) { + $header = $1; + } else { + return; + } + + if( defined $2 ) { + $content = $2; + } + + my $clmsg_hash = &create_xml_hash("CLMSG_$header", $client_address, $server_address, $content); + &add_content2xml_hash($clmsg_hash, "macaddress", $client_mac_address); + my $utc_ts = &main::get_utc_time(); + &add_content2xml_hash($clmsg_hash, "timestamp", $utc_ts); + my $clmsg = &create_xml_string($clmsg_hash); + &send_msg_to_target($clmsg, $server_address, $server_key, "CLMSG_$header"); + + # if installation finished, save all log files + if ($file_record eq "TASKBEGIN finish") { + &save_fai_log($fai_log_dir); + } + + return; +} + + +sub save_fai_log { + my ($fai_log_dir) = @_ ; + my $FAI_DIR; + + # Directory for log files after a softupdate + my $log_dir = File::Spec->catdir($fai_log_dir, "localhost/last"); + + if (not -d $log_dir) { + # Directory for log files after a new installation + $log_dir = "/tmp/fai"; + if (not -d $log_dir) { + daemon_log("ERROR: cannot open directory $log_dir", 1); + return; + } + } + + opendir($FAI_DIR, "$log_dir"); + my @log_files = readdir($FAI_DIR); + closedir($FAI_DIR); + + my @log_list; + foreach my $log_file (@log_files) { + if( $log_file eq "." || $log_file eq ".." ) { next; } + + my $log = "log_file:$log_file:"; + $log_file = File::Spec->catfile( $log_dir, $log_file ); + + if (not -f $log_file) { + daemon_log("ERROR: cannot read $log_file", 1); + next; + } + + open(FILE, "<$log_file"); + my @lines = ; + close (FILE); + my $log_string = join("", @lines); + $log .= &encode_base64($log_string); + push(@log_list, $log); + } + + my $all_log_string = join("\n", @log_list); + my $msg_hash = &create_xml_hash("CLMSG_save_fai_log", $client_address, $server_address, $all_log_string); + &add_content2xml_hash($msg_hash, "macaddress", $client_mac_address); + my $msg = &create_xml_string($msg_hash); + &send_msg_to_target($msg, $server_address, $server_key, "CLMSG_save_fai_log"); + +} + + +sub sig_handler { + my ($kernel, $signal) = @_[KERNEL, ARG0] ; + daemon_log("0 INFO got signal '$signal'", 1); + $kernel->sig_handled(); + return; +} + + +sub _start { + my ($kernel, $heap) = @_[KERNEL, HEAP]; + $kernel->alias_set('client_session'); + $global_kernel = $kernel; # this is used to throw events at each point of the skript + + $kernel->sig(USR1 => "sig_handler"); + + # force a registration at a gosa-si-server + $kernel->yield('register_at_gosa_si_server'); + + # install all file watcher defined + while( my($name, $file) = each %files_to_watch ) { + my $watcher = POE::Wheel::FollowTail->new( + Filename => $file, + InputEvent => $name."_record", + # ResetEvent => "file_reset", + ErrorEvent => "file_error", + ); +# $heap->{tail} = POE::Wheel::Run->new( +# Program => [ "/usr/bin/tail", "-f", $file ], +# StdoutEvent => $file_name."_record", +# ); + $heap->{services}->{ $watcher->ID } = $name; + $heap->{watchers}->{ $watcher->ID } = $watcher; + } + $kernel->yield('trigger_logged_in_users_report'); + $kernel->yield('trigger_seen_messages'); +} + + +sub _default { + daemon_log("ERROR: can not handle incoming msg with header '$_[ARG0]'", 1); + return; +} + + +sub server_input { + my ($kernel, $heap, $input, $wheel) = @_[KERNEL, HEAP, ARG0, ARG1]; + my $remote_ip = $heap->{'remote_ip'}, + my $error = 0; + my $answer; + + + daemon_log("INFO: Incoming msg from '$remote_ip'", 5); + daemon_log("DEBUG: Incoming msg:\n$input\n", 9); + + my ($msg, $msg_hash) = &check_key_and_xml_validity($input, $server_key); + if( (!$msg) || (!$msg_hash) ) { + daemon_log("WARNING: Deciphering of incoming msg failed", 3); + if($server_address =~ /$remote_ip/) { + # got a msg from gosa-si-server which can not be decrypted, may the secrete not up-to-date + # cause a reregistering with a new secrete handshake + daemon_log("WARNING: Message from gosa-si-server could not be understood, cause reregistering at server", 3); + + # if client is alread in a registration process, that means not registered, do nothing + # if not, cause re-registration + if (not $REGISTERED) { + &daemon_log("WARNING: gosa-si-client is already in a registration process so ignore this message", 3); + } else { + $REGISTERED = 0; + $kernel->post('client_session', 'register_at_gosa_si_server'); + } + } + $error++; + } + + + ###################### + # process incoming msg + if( $error == 0 ) { + my $header = @{$msg_hash->{header}}[0]; + my $source = @{$msg_hash->{source}}[0]; + + if( exists $event_hash->{$header} ) { + + # a event exists with the header as name + daemon_log("INFO: found event '$header' at event-module '".$event_hash->{$header}."'", 5); + no strict 'refs'; + $answer = &{$event_hash->{$header}."::$header"}($msg, $msg_hash); + } + else { + daemon_log("WARNING: no event '$header' found in event modules under $event_dir", 3); + } + } + + ######## + # answer + if( $answer ) { + + #check gosa-si envelope validity + my $answer_hash = &check_outgoing_xml_validity($answer); + + if( $answer_hash ) { + # answer is valid + + # preprocessing + if( $answer =~ "
      registered
      ") { + # set registered flag to true to stop sending further registered msgs + $REGISTERED = 1; + } + else { + $answer =~ /
      (\S+)<\/header>/; + &send_msg_to_target($answer, $server_address, $server_key, $1); + } + + # postprocessing + if( $answer =~ "
      new_key
      ") { + # set new key to global variable + $answer =~ /(\S*?)<\/new_key>/; + my $new_key = $1; + $server_key = $new_key; + } + } + + } + + return; +} + + +#==== MAIN = main ============================================================== +# parse commandline options +Getopt::Long::Configure( "bundling" ); +GetOptions("h|help" => \&usage, + "c|config=s" => \$cfg_file, + "f|foreground" => \$foreground, + "v|verbose+" => \$verbose, + ); + +# read and set config parameters +&check_cmdline_param ; +&read_configfile($cfg_file, %cfg_defaults); +&check_pid; + + +# forward error messages to logfile +if ( ! $foreground ) { + open( STDIN, '+>/dev/null' ); + open( STDOUT, '+>&STDIN' ); + open( STDERR, '+>&STDIN' ); +} + +# Just fork, if we are not in foreground mode +if( ! $foreground ) { + chdir '/' or die "Can't chdir to /: $!"; + $pid = fork; + setsid or die "Can't start a new session: $!"; + umask 0; +} else { + $pid = $$; +} + +# Do something useful - put our PID into the pid_file +if( 0 != $pid ) { + open( LOCK_FILE, ">$pid_file" ); + print LOCK_FILE "$pid\n"; + close( LOCK_FILE ); + if( !$foreground ) { + exit( 0 ) + }; +} + +# parse head url and revision from svn +my $client_status_hash = { 'developmental'=>'revision', 'stable'=>'release'}; +$client_version =~ /^\$HeadURL: (\S+) \$:\$Rev: (\d+) \$$/; +$client_headURL = defined $1 ? $1 : 'unknown' ; +$client_revision = defined $2 ? $2 : 'unknown' ; +if ($client_headURL =~ /\/tag\// || + $client_headURL =~ /\/branches\// ) { + $client_status = "stable"; +} else { + $client_status = "developmental" ; +} + +# Prepare log file +my $root_uid = getpwnam('root'); +my $adm_gid = getgrnam('adm'); +chmod(0640, $log_file); +chown($root_uid, $adm_gid, $log_file); + + +daemon_log(" ", 1); +daemon_log("$prg started!", 1); +daemon_log("INFO: status: $client_status", 1); +daemon_log("INFO: ".$client_status_hash->{$client_status}.": $client_revision", 1); + +# delete old DBsqlite lock files +system('rm -f /tmp/gosa_si_lock*gosa-si-client*'); + +# detect ip and mac address and complete host address +$client_address = $client_ip.":".$client_port; +my $network_interface= &get_interface_for_ip($client_ip); +$client_mac_address= &get_mac($network_interface); +daemon_log("INFO: ip address detected: $client_ip", 1); +daemon_log("INFO: gosa-si-client mac address detected: $client_mac_address", 1); + + +# import events +my ($error, $result, $tmp_hash) = &import_events($event_dir); +while (my ($module, $mod_event_hash) = each %$tmp_hash) { + while (my ($event_name, $nothing) = each %$mod_event_hash) { + $event_hash->{$event_name} = $module; + } +} + +foreach my $log_line (@$result) { + if ($log_line =~ / succeed: /) { + &main::daemon_log("0 DEBUG: $log_line", 7); + } else { + &main::daemon_log("0 ERROR: $log_line", 1); + } +} + + +# compute hardware checksum +$gotoHardwareChecksum= &generate_hw_digest(); +daemon_log("INFO: gotoHardwareChecksum detected: $gotoHardwareChecksum", 1); + + +# create socket for incoming xml messages +POE::Component::Server::TCP->new( + Alias => 'gosa-si-client', + Port => $client_port, + ClientInput => \&server_input, +); +daemon_log("INFO: start socket for incoming xml messages at port '$client_port' ", 1); + + +# prepare variables +if( inet_aton($server_ip) ){ $server_ip = inet_ntoa(inet_aton($server_ip)); } +if (defined $server_ip && defined $server_port) { + $server_address = $server_ip.":".$server_port; +} +$xml = new XML::Simple(); +$default_server_key = $server_key; + + +# add gosa-si-server address from config file at first position of server list +my $server_check_cfg = Config::IniFiles->new( -file => $cfg_file ); +my $server_check = (defined($server_check_cfg))?$server_check_cfg->val( "server", "ip"):undef; +if( defined $server_check ) { + unshift(@servers, $server_address); + my $servers_string = join(", ", @servers); + daemon_log("INFO: found servers in configuration file: $servers_string", 1); +} else { + my @tmp_servers; + if ( !$server_domain) { + # Try our DNS Searchlist + my @domain_list = &get_dns_domains(); + my $tmp_domains; + my $error_string; + for my $domain (@domain_list) { + chomp($domain); + ($tmp_domains, $error_string) = &get_server_addresses($domain); + if(@$tmp_domains) { + for my $tmp_server(@$tmp_domains) { + push @tmp_servers, $tmp_server; + } + } + } + if (0 == @tmp_servers) { + my $log_string = "no gosa-si-server found!"; + $log_string .= "\n\tdetermined domains out of /etc/resolv.conf: ".join(", ", @domain_list) if (@domain_list); + $log_string .= "\n\tdetermined server addresses in domains: ".join(", ",@$tmp_domains) if (defined($tmp_domains)); + daemon_log("ERROR: $log_string", 1) if (defined($log_string)); + daemon_log("ERROR: $error_string", 1) if (defined($error_string)); + daemon_log("ERROR: please specify a gosa-si-server address or a domain in config file", 1); + kill 2, $$; + } + } else { + @tmp_servers = &get_server_addresses($server_domain); + if( 0 == @tmp_servers ) { + daemon_log("ERROR: no gosa-si-server found in DNS for domain '$server_domain'",1); + daemon_log("ERROR: please specify a gosa-si-server address or a domain in config file", 1); + kill 2, $$; + } + } + + foreach my $server (@tmp_servers) { + unshift(@servers, $server); + } + my $servers_string = join(", ", @servers); + daemon_log("INFO: found servers in DNS: $servers_string", 1); +} + + +# open fifo for non-gosa-si-client-msgs to gosa-si-server +POSIX::mkfifo("$gosa_si_client_fifo", "0600"); + + +POE::Session->create( + inline_states => { + _start => \&_start, + _default => \&_default, + sig_handler => \&sig_handler, + register_at_gosa_si_server => \®ister_at_gosa_si_server, + + # trigger periodical tasks + trigger_new_key => \&trigger_new_key, + trigger_logged_in_users_report => \&trigger_logged_in_users_report, + trigger_seen_messages => \&trigger_seen_messages, + + # handle records from each defined file differently + fifo_record => \&fifo_got_record, + + # handle file resets and errors the same way for each file + file_reset => \&generic_file_reset, + file_error => \&generic_file_error, + } +); + +POE::Kernel->run(); +exit; + diff --git a/trunk/gosa-si/gosa-si-client.1 b/trunk/gosa-si/gosa-si-client.1 new file mode 100644 index 000000000..38308db95 --- /dev/null +++ b/trunk/gosa-si/gosa-si-client.1 @@ -0,0 +1,181 @@ +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "GOSA-SI-CLIENT 1" +.TH GOSA-SI-CLIENT 1 "2008-08-08" " " " " +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +gosa\-si\-client \- Client for GOsa support infrastructure +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +gosa-si-client [\-hvf] [\-c config] +.SH "OPTIONS" +.IX Header "OPTIONS" +\&\fB\-h\fR, \fB\-\-help\fR + print out this help message +.PP +\&\fB\-v\fR, \fB\-\-verbose\fR + be verbose (multiple v's will increase verbosity) + \-v \s-1ERROR\s0 level + \-vvv \s-1WARNING\s0 + \s-1ERROR\s0 level + \-vvvvv \s-1INFO\s0 + \s-1WARNING\s0 level + \-vvvvvvv \s-1DEBUG\s0 + \s-1INFO\s0 level + \-vvvvvvvvv in and out going xml messages will be displayed +.PP +\&\fB\-f\fR, \fB\-\-foreground\fR + foregroud, process will not be forked to background +.PP +\&\fB\-c\fR \fIfile\fR, \fB\-\-config=\fR\fIfile\fR + configuration file, default \fI/etc/gosa\-si/client.conf\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBgosa-si-client\fR belongs to the support infrastructure of GOsa. +The client registrates at a GOsa-SI-server and accepts messages from it. +Each message is related to a working instruction which will be executed on the client. +Depending on the message an answer can be send back to the server. +.SH "BUGS" +.IX Header "BUGS" +Please report any bugs, or post any suggestions, to the GOsa mailing list or to +.SH "LICENCE AND COPYRIGHT" +.IX Header "LICENCE AND COPYRIGHT" +This code is part of GOsa () +.PP +Copyright (C) 2003\-2008 \s-1GONICUS\s0 GmbH +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\s-1GNU\s0 General Public License for more details. diff --git a/trunk/gosa-si/gosa-si-client.conf.5 b/trunk/gosa-si/gosa-si-client.conf.5 new file mode 100644 index 000000000..c1013d825 --- /dev/null +++ b/trunk/gosa-si/gosa-si-client.conf.5 @@ -0,0 +1,216 @@ +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "CLIENT.CONF 5" +.TH CLIENT.CONF 5 "2008-07-31" "gosa-si-server" " " +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +gosa\-si\-client.conf \- Configuration file for gosa\-si\-client. +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The gosa\-si\-client.conf file defines all parameter GOsa-SI-client needs for running and communication with GOsa-SI-server. It is normally located in the \fI/etc/gosa\-si/\fR directory and is generated automatically by the \fIgosa\-si\-client\fR\|(1) program during installation. +.SH "DIRECTIVES" +.IX Header "DIRECTIVES" +.Sh "[general]" +.IX Subsection "[general]" +.IP "log-file = /var/run/gosa\-si\-client.log" 4 +.IX Item "log-file = /var/run/gosa-si-client.log" +Defines the location for the log file. +.IP "pid-file = /var/run/gosa\-si\-client.pid" 4 +.IX Item "pid-file = /var/run/gosa-si-client.pid" +Defines the location for the pid file. +.Sh "[client]" +.IX Subsection "[client]" +.IP "port = 20083" 4 +.IX Item "port = 20083" +Defines the port GOsa-SI-client is listening for incoming messages. +.IP "ip = 0.0.0.0" 4 +.IX Item "ip = 0.0.0.0" +If set GOsa-SI-client is forced to use this ip address. If it is not set, an automated determination is tried. +.IP "mac-address = 00:00:00:00:00:00" 4 +.IX Item "mac-address = 00:00:00:00:00:00" +If set GOsa-SI-client is forced to use this mac address. If it is not set, an automated determination is tried. +.IP "server-domain =" 4 +.IX Item "server-domain =" +??? +.IP "ldap = 1 | 0" 4 +.IX Item "ldap = 1 | 0" +??? +.IP "ldap-config = /etc/ldap/ldap.conf" 4 +.IX Item "ldap-config = /etc/ldap/ldap.conf" +Defines the location for ldap.conf file. +.IP "pam-config = /etc/pam_ldap.conf" 4 +.IX Item "pam-config = /etc/pam_ldap.conf" +Defines the location for pam\-ldap.conf file. +.IP "nss-config = /etc/libnss\-ldap.conf" 4 +.IX Item "nss-config = /etc/libnss-ldap.conf" +Defines the location for libnss\-ldap.conf file. +.IP "fai-logpath = /var/log/fai/fai.log" 4 +.IX Item "fai-logpath = /var/log/fai/fai.log" +Defines the location for fai.log file. +.IP "force-hostname = false | true" 4 +.IX Item "force-hostname = false | true" +??? +.Sh "[server]" +.IX Subsection "[server]" +.IP "ip = 127.0.0.1" 4 +.IX Item "ip = 127.0.0.1" +If set GOsa-SI-client is forced to register at specified GOsa-SI-Server. If it is not set, GOsa-SI tries to register at GOsa-SI-servers found in \s-1DNS\s0. +.IP "port = 20081" 4 +.IX Item "port = 20081" +Defines the port GOsa-SI-server is listening for incoming messages. +.IP "key =" 4 +.IX Item "key =" +Defines the password GOsa-SI-server messages should be encrypted. This has to be modified, default value will usually not work!!! +.IP "timeout = 10" 4 +.IX Item "timeout = 10" +Defines in seconds the timeout GOsa-SI-client is waiting for the next try if all registraion efforts fails. +.IP "key-lifetime = 600" 4 +.IX Item "key-lifetime = 600" +Defines in seconds the lifetime of the key GOsa-SI-server messages should be encrypted with. +.SH "BUGS" +.IX Header "BUGS" +Please report any bugs, or post any suggestions, to the GOsa mailing list or to +.SH "LICENCE AND COPYRIGHT" +.IX Header "LICENCE AND COPYRIGHT" +This code is part of GOsa () +.PP +Copyright (C) 2003\-2008 \s-1GONICUS\s0 GmbH +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\s-1GNU\s0 General Public License for more details. diff --git a/trunk/gosa-si/gosa-si-client.pod b/trunk/gosa-si/gosa-si-client.pod new file mode 100644 index 000000000..a5d2b245c --- /dev/null +++ b/trunk/gosa-si/gosa-si-client.pod @@ -0,0 +1,56 @@ + +=head1 NAME + +gosa-si-client - Client for GOsa support infrastructure + +=head1 SYNOPSIS + +gosa-si-client [-hvf] [-c config] + +=head1 OPTIONS + +B<-h>, B<--help> + print out this help message + +B<-v>, B<--verbose> + be verbose (multiple v's will increase verbosity) + -v ERROR level + -vvv WARNING + ERROR level + -vvvvv INFO + WARNING level + -vvvvvvv DEBUG + INFO level + -vvvvvvvvv in and out going xml messages will be displayed + +B<-f>, B<--foreground> + foregroud, process will not be forked to background + +B<-c> I, B<--config=>I + configuration file, default F + + +=head1 DESCRIPTION + +B belongs to the support infrastructure of GOsa. +The client registrates at a GOsa-SI-server and accepts messages from it. +Each message is related to a working instruction which will be executed on the client. +Depending on the message an answer can be send back to the server. + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list or to + + +=head1 LICENCE AND COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + +=cut + + + diff --git a/trunk/gosa-si/gosa-si-server b/trunk/gosa-si/gosa-si-server new file mode 100755 index 000000000..514e8b1bd --- /dev/null +++ b/trunk/gosa-si/gosa-si-server @@ -0,0 +1,3511 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: gosa-sd +# +# USAGE: ./gosa-sd +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: libconfig-inifiles-perl libcrypt-rijndael-perl libxml-simple-perl +# libdata-dumper-simple-perl libdbd-sqlite3-perl libnet-ldap-perl +# libpoe-perl +# BUGS: --- +# NOTES: +# AUTHOR: (Andreas Rettenberger), +# COMPANY: +# VERSION: 1.0 +# CREATED: 12.09.2007 08:54:41 CEST +# REVISION: --- +#=============================================================================== + +my $server_version = '$HeadURL: https://oss.gonicus.de/repositories/gosa/trunk/gosa-si/gosa-si-server $:$Rev$'; + +use strict; +use warnings; +use Getopt::Long; +use Config::IniFiles; +use POSIX; + +use Fcntl; +use IO::Socket::INET; +use IO::Handle; +use IO::Select; +use Symbol qw(qualify_to_ref); +use Crypt::Rijndael; +use MIME::Base64; +use Digest::MD5 qw(md5 md5_hex md5_base64); +use XML::Simple; +use Data::Dumper; +use Sys::Syslog qw( :DEFAULT setlogsock); +use Cwd; +use File::Spec; +use File::Basename; +use File::Find; +use File::Copy; +use File::Path; +use GOSA::GosaSupportDaemon; +use POE qw(Component::Server::TCP Wheel::Run Filter::Reference); +use Net::LDAP; +use Net::LDAP::Util qw(:escape); +use Time::HiRes qw( usleep); + +# revision number of server and program name +my $server_headURL; +my $server_revision; +my $server_status; +our $prg= basename($0); + +my $db_module = "DBsqlite"; +{ +no strict "refs"; +require ("GOSA/".$db_module.".pm"); +("GOSA/".$db_module)->import; +daemon_log("0 INFO: importing database module '$db_module'", 1); +} + +my $modules_path = "/usr/lib/gosa-si/modules"; +use lib "/usr/lib/gosa-si/modules"; + +our $global_kernel; +my ($foreground, $ping_timeout); +my ($server); +my ($gosa_server, $job_queue_timeout, $job_queue_loop_delay); +my ($messaging_db_loop_delay); +my ($procid, $pid); +my ($arp_fifo); +my ($xml); +my $sources_list; +my $max_clients; +my %repo_files=(); +my $repo_path; +my %repo_dirs=(); + +# Variables declared in config file are always set to 'our' +our (%cfg_defaults, $log_file, $pid_file, + $server_ip, $server_port, $ClientPackages_key, $dns_lookup, + $arp_activ, $gosa_unit_tag, + $GosaPackages_key, $gosa_timeout, + $foreign_server_string, $server_domain, $ServerPackages_key, $foreign_servers_register_delay, + $wake_on_lan_passwd, $job_synchronization, $modified_jobs_loop_delay, + $arp_enabled, $arp_interface, + $opsi_enabled, $opsi_server, $opsi_admin, $opsi_password, + $new_systems_ou, +); + +# additional variable which should be globaly accessable +our $server_address; +our $server_mac_address; +our $gosa_address; +our $no_arp; +our $verbose; +our $forground; +our $cfg_file; +our ($ldap_uri, $ldap_base, $ldap_admin_dn, $ldap_admin_password, $ldap_server_dn); +our ($mysql_username, $mysql_password, $mysql_database, $mysql_host); +our $known_modules; +our $root_uid; +our $adm_gid; + + +# specifies the verbosity of the daemon_log +$verbose = 0 ; + +# if foreground is not null, script will be not forked to background +$foreground = 0 ; + +# specifies the timeout seconds while checking the online status of a registrating client +$ping_timeout = 5; + +$no_arp = 0; +my $packages_list_under_construction = "/tmp/packages_list_creation_in_progress"; +my @packages_list_statements; +my $watch_for_new_jobs_in_progress = 0; + +# holds all incoming decrypted messages +our $incoming_db; +our $incoming_tn = 'incoming'; +my $incoming_file_name; +my @incoming_col_names = ("id INTEGER PRIMARY KEY auto_increment", + "timestamp VARCHAR(14) DEFAULT 'none'", + "headertag VARCHAR(255) DEFAULT 'none'", + "targettag VARCHAR(255) DEFAULT 'none'", + "xmlmessage TEXT", + "module VARCHAR(255) DEFAULT 'none'", + "sessionid VARCHAR(255) DEFAULT '0'", +); + +# holds all gosa jobs +our $job_db; +our $job_queue_tn = 'jobs'; +my $job_queue_file_name; +my @job_queue_col_names = ("id INTEGER PRIMARY KEY auto_increment", + "timestamp VARCHAR(14) DEFAULT 'none'", + "status VARCHAR(255) DEFAULT 'none'", + "result TEXT", + "progress VARCHAR(255) DEFAULT 'none'", + "headertag VARCHAR(255) DEFAULT 'none'", + "targettag VARCHAR(255) DEFAULT 'none'", + "xmlmessage TEXT", + "macaddress VARCHAR(17) DEFAULT 'none'", + "plainname VARCHAR(255) DEFAULT 'none'", + "siserver VARCHAR(255) DEFAULT 'none'", + "modified INTEGER DEFAULT '0'", +); + +# holds all other gosa-si-server +our $known_server_db; +our $known_server_tn = "known_server"; +my $known_server_file_name; +my @known_server_col_names = ("hostname VARCHAR(255)", "macaddress VARCHAR(17)", "status VARCHAR(255)", "hostkey VARCHAR(255)", "loaded_modules TEXT", "timestamp VARCHAR(14)"); + +# holds all registrated clients +our $known_clients_db; +our $known_clients_tn = "known_clients"; +my $known_clients_file_name; +my @known_clients_col_names = ("hostname VARCHAR(255)", "status VARCHAR(255)", "hostkey VARCHAR(255)", "timestamp VARCHAR(14)", "macaddress VARCHAR(17)", "events TEXT", "keylifetime VARCHAR(255)"); + +# holds all registered clients at a foreign server +our $foreign_clients_db; +our $foreign_clients_tn = "foreign_clients"; +my $foreign_clients_file_name; +my @foreign_clients_col_names = ("hostname VARCHAR(255)", "macaddress VARCHAR(17)", "regserver VARCHAR(255)", "timestamp VARCHAR(14)"); + +# holds all logged in user at each client +our $login_users_db; +our $login_users_tn = "login_users"; +my $login_users_file_name; +my @login_users_col_names = ("client VARCHAR(255)", "user VARCHAR(255)", "timestamp VARCHAR(14)", "regserver VARCHAR(255) DEFAULT 'localhost'"); + +# holds all fai server, the debian release and tag +our $fai_server_db; +our $fai_server_tn = "fai_server"; +my $fai_server_file_name; +our @fai_server_col_names = ("timestamp VARCHAR(14)", "server VARCHAR(255)", "fai_release VARCHAR(255)", "sections VARCHAR(255)", "tag VARCHAR(255)"); + +our $fai_release_db; +our $fai_release_tn = "fai_release"; +my $fai_release_file_name; +our @fai_release_col_names = ("timestamp VARCHAR(14)", "fai_release VARCHAR(255)", "class VARCHAR(255)", "type VARCHAR(255)", "state VARCHAR(255)"); + +# holds all packages available from different repositories +our $packages_list_db; +our $packages_list_tn = "packages_list"; +my $packages_list_file_name; +our @packages_list_col_names = ("distribution VARCHAR(255)", "package VARCHAR(255)", "version VARCHAR(255)", "section VARCHAR(255)", "description TEXT", "template LONGBLOB", "timestamp VARCHAR(14)"); +my $outdir = "/tmp/packages_list_db"; +my $arch = "i386"; + +# holds all messages which should be delivered to a user +our $messaging_db; +our $messaging_tn = "messaging"; +our @messaging_col_names = ("id INTEGER", "subject TEXT", "message_from VARCHAR(255)", "message_to VARCHAR(255)", + "flag VARCHAR(255)", "direction VARCHAR(255)", "delivery_time VARCHAR(255)", "message TEXT", "timestamp VARCHAR(14)" ); +my $messaging_file_name; + +# path to directory to store client install log files +our $client_fai_log_dir = "/var/log/fai"; + +# queue which stores taskes until one of the $max_children children are ready to process the task +#my @tasks = qw(); +my @msgs_to_decrypt = qw(); +my $max_children = 2; + + +# loop delay for job queue to look for opsi jobs +my $job_queue_opsi_delay = 10; +our $opsi_client; +our $opsi_url; + +# Lifetime of logged in user information. If no update information comes after n seconds, +# the user is expeceted to be no longer logged in or the host is no longer running. Because +# of this, the user is deleted from login_users_db +our $logged_in_user_date_of_expiry = 600; + + +%cfg_defaults = ( +"general" => { + "log-file" => [\$log_file, "/var/run/".$prg.".log"], + "pid-file" => [\$pid_file, "/var/run/".$prg.".pid"], + }, +"server" => { + "ip" => [\$server_ip, "0.0.0.0"], + "port" => [\$server_port, "20081"], + "known-clients" => [\$known_clients_file_name, '/var/lib/gosa-si/clients.db' ], + "known-servers" => [\$known_server_file_name, '/var/lib/gosa-si/servers.db'], + "incoming" => [\$incoming_file_name, '/var/lib/gosa-si/incoming.db'], + "login-users" => [\$login_users_file_name, '/var/lib/gosa-si/users.db'], + "fai-server" => [\$fai_server_file_name, '/var/lib/gosa-si/fai_server.db'], + "fai-release" => [\$fai_release_file_name, '/var/lib/gosa-si/fai_release.db'], + "packages-list" => [\$packages_list_file_name, '/var/lib/gosa-si/packages.db'], + "messaging" => [\$messaging_file_name, '/var/lib/gosa-si/messaging.db'], + "foreign-clients" => [\$foreign_clients_file_name, '/var/lib/gosa-si/foreign_clients.db'], + "source-list" => [\$sources_list, '/etc/apt/sources.list'], + "repo-path" => [\$repo_path, '/srv/www/repository'], + "ldap-uri" => [\$ldap_uri, ""], + "ldap-base" => [\$ldap_base, ""], + "ldap-admin-dn" => [\$ldap_admin_dn, ""], + "ldap-admin-password" => [\$ldap_admin_password, ""], + "gosa-unit-tag" => [\$gosa_unit_tag, ""], + "max-clients" => [\$max_clients, 10], + "wol-password" => [\$wake_on_lan_passwd, ""], + "mysql-username" => [\$mysql_username, "gosa_si"], + "mysql-password" => [\$mysql_password, ""], + "mysql-database" => [\$mysql_database, "gosa_si"], + "mysql-host" => [\$mysql_host, "127.0.0.1"], + }, +"GOsaPackages" => { + "job-queue" => [\$job_queue_file_name, '/var/lib/gosa-si/jobs.db'], + "job-queue-loop-delay" => [\$job_queue_loop_delay, 3], + "messaging-db-loop-delay" => [\$messaging_db_loop_delay, 3], + "key" => [\$GosaPackages_key, "none"], + "new-systems-ou" => [\$new_systems_ou, 'ou=workstations,ou=systems'], + }, +"ClientPackages" => { + "key" => [\$ClientPackages_key, "none"], + "user-date-of-expiry" => [\$logged_in_user_date_of_expiry, 600], + }, +"ServerPackages"=> { + "address" => [\$foreign_server_string, ""], + "dns-lookup" => [\$dns_lookup, "true"], + "domain" => [\$server_domain, ""], + "key" => [\$ServerPackages_key, "none"], + "key-lifetime" => [\$foreign_servers_register_delay, 120], + "job-synchronization-enabled" => [\$job_synchronization, "true"], + "synchronization-loop" => [\$modified_jobs_loop_delay, 5], + }, +"ArpHandler" => { + "enabled" => [\$arp_enabled, "true"], + "interface" => [\$arp_interface, "all"], + }, +"Opsi" => { + "enabled" => [\$opsi_enabled, "false"], + "server" => [\$opsi_server, "localhost"], + "admin" => [\$opsi_admin, "opsi-admin"], + "password" => [\$opsi_password, "secret"], + }, + +); + + +#=== FUNCTION ================================================================ +# NAME: usage +# PARAMETERS: nothing +# RETURNS: nothing +# DESCRIPTION: print out usage text to STDERR +#=============================================================================== +sub usage { + print STDERR << "EOF" ; +usage: $prg [-hvf] [-c config] + + -h : this (help) message + -c : config file + -f : foreground, process will not be forked to background + -v : be verbose (multiple to increase verbosity) + -no-arp : starts $prg without connection to arp module + +EOF + print "\n" ; +} + + +#=== FUNCTION ================================================================ +# NAME: logging +# PARAMETERS: level - string - default 'info' +# msg - string - +# facility - string - default 'LOG_DAEMON' +# RETURNS: nothing +# DESCRIPTION: function for logging +#=============================================================================== +sub daemon_log { + # log into log_file + my( $msg, $level ) = @_; + if(not defined $msg) { return } + if(not defined $level) { $level = 1 } + if(defined $log_file){ + open(LOG_HANDLE, ">>$log_file"); + if(not defined open( LOG_HANDLE, ">>$log_file" )) { + print STDERR "cannot open $log_file: $!"; + return + } + chomp($msg); + #$msg =~s/\n//g; # no newlines are allowed in log messages, this is important for later log parsing + if($level <= $verbose){ + my ($seconds, $minutes, $hours, $monthday, $month, + $year, $weekday, $yearday, $sommertime) = localtime(time); + $hours = $hours < 10 ? $hours = "0".$hours : $hours; + $minutes = $minutes < 10 ? $minutes = "0".$minutes : $minutes; + $seconds = $seconds < 10 ? $seconds = "0".$seconds : $seconds; + my @monthnames = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); + $month = $monthnames[$month]; + $monthday = $monthday < 10 ? $monthday = "0".$monthday : $monthday; + $year+=1900; + my $name = $prg; + + my $log_msg = "$month $monthday $hours:$minutes:$seconds $name $msg\n"; + print LOG_HANDLE $log_msg; + if( $foreground ) { + print STDERR $log_msg; + } + } + close( LOG_HANDLE ); + } +} + + +#=== FUNCTION ================================================================ +# NAME: check_cmdline_param +# PARAMETERS: nothing +# RETURNS: nothing +# DESCRIPTION: validates commandline parameter +#=============================================================================== +sub check_cmdline_param () { + my $err_config; + my $err_counter = 0; + if(not defined($cfg_file)) { + $cfg_file = "/etc/gosa-si/server.conf"; + if(! -r $cfg_file) { + $err_config = "please specify a config file"; + $err_counter += 1; + } + } + if( $err_counter > 0 ) { + &usage( "", 1 ); + if( defined( $err_config)) { print STDERR "$err_config\n"} + print STDERR "\n"; + exit( -1 ); + } +} + + +#=== FUNCTION ================================================================ +# NAME: check_pid +# PARAMETERS: nothing +# RETURNS: nothing +# DESCRIPTION: handels pid processing +#=============================================================================== +sub check_pid { + $pid = -1; + # Check, if we are already running + if( open(LOCK_FILE, "<$pid_file") ) { + $pid = ; + if( defined $pid ) { + chomp( $pid ); + if( -f "/proc/$pid/stat" ) { + my($stat) = `cat /proc/$pid/stat` =~ m/$pid \((.+)\).*/; + if( $stat ) { + daemon_log("ERROR: Already running",1); + close( LOCK_FILE ); + exit -1; + } + } + } + close( LOCK_FILE ); + unlink( $pid_file ); + } + + # create a syslog msg if it is not to possible to open PID file + if (not sysopen(LOCK_FILE, $pid_file, O_WRONLY|O_CREAT|O_EXCL, 0644)) { + my($msg) = "Couldn't obtain lockfile '$pid_file' "; + if (open(LOCK_FILE, '<', $pid_file) + && ($pid = )) + { + chomp($pid); + $msg .= "(PID $pid)\n"; + } else { + $msg .= "(unable to read PID)\n"; + } + if( ! ($foreground) ) { + openlog( $0, "cons,pid", "daemon" ); + syslog( "warning", $msg ); + closelog(); + } + else { + print( STDERR " $msg " ); + } + exit( -1 ); + } +} + +#=== FUNCTION ================================================================ +# NAME: import_modules +# PARAMETERS: module_path - string - abs. path to the directory the modules +# are stored +# RETURNS: nothing +# DESCRIPTION: each file in module_path which ends with '.pm' and activation +# state is on is imported by "require 'file';" +#=============================================================================== +sub import_modules { + daemon_log(" ", 1); + + if (not -e $modules_path) { + daemon_log("0 ERROR: cannot find directory or directory is not readable: $modules_path", 1); + } + + opendir (DIR, $modules_path) or die "ERROR while loading modules from directory $modules_path : $!\n"; + while (defined (my $file = readdir (DIR))) { + if (not $file =~ /(\S*?).pm$/) { + next; + } + my $mod_name = $1; + + # ArpHandler switch + if( $file =~ /ArpHandler.pm/ ) { + if( $arp_enabled eq "false" ) { next; } + } + + eval { require $file; }; + if ($@) { + daemon_log("0 ERROR: gosa-si-server could not load module $file", 1); + daemon_log("$@", 1); + exit; + } else { + my $info = eval($mod_name.'::get_module_info()'); + # Only load module if get_module_info() returns a non-null object + if( $info ) { + my ($input_address, $input_key, $event_hash) = @{$info}; + $known_modules->{$mod_name} = $info; + daemon_log("0 INFO: module $mod_name loaded", 5); + } + } + } + + close (DIR); +} + +#=== FUNCTION ================================================================ +# NAME: password_check +# PARAMETERS: nothing +# RETURNS: nothing +# DESCRIPTION: escalates an critical error if two modules exist which are avaialable by +# the same password +#=============================================================================== +sub password_check { + my $passwd_hash = {}; + while (my ($mod_name, $mod_info) = each %$known_modules) { + my $mod_passwd = @$mod_info[1]; + if (not defined $mod_passwd) { next; } + if (not exists $passwd_hash->{$mod_passwd}) { + $passwd_hash->{$mod_passwd} = $mod_name; + + # escalates critical error + } else { + &daemon_log("0 ERROR: two loaded modules do have the same password. Please modify the 'key'-parameter in config file"); + &daemon_log("0 ERROR: module='$mod_name' and module='".$passwd_hash->{$mod_passwd}."'"); + exit( -1 ); + } + } + +} + + +#=== FUNCTION ================================================================ +# NAME: sig_int_handler +# PARAMETERS: signal - string - signal arose from system +# RETURNS: nothing +# DESCRIPTION: handels tasks to be done befor signal becomes active +#=============================================================================== +sub sig_int_handler { + my ($signal) = @_; + +# if (defined($ldap_handle)) { +# $ldap_handle->disconnect; +# } + # TODO alle verbliebenden ldap verbindungen aus allen heaps beenden + + + daemon_log("shutting down gosa-si-server", 1); + system("kill `ps -C gosa-si-server -o pid=`"); +} +$SIG{INT} = \&sig_int_handler; + + +sub check_key_and_xml_validity { + my ($crypted_msg, $module_key, $session_id) = @_; + my $msg; + my $msg_hash; + my $error_string; + eval{ + $msg = &decrypt_msg($crypted_msg, $module_key); + + if ($msg =~ //i){ + $msg =~ s/\s+/ /g; # just for better daemon_log + daemon_log("$session_id DEBUG: decrypted_msg: \n$msg", 9); + $msg_hash = $xml->XMLin($msg, ForceArray=>1); + + ############## + # check header + if( not exists $msg_hash->{'header'} ) { die "no header specified"; } + my $header_l = $msg_hash->{'header'}; + if( (1 > @{$header_l}) || ( ( 'HASH' eq ref @{$header_l}[0]) && (1 > keys %{@{$header_l}[0]}) ) ) { die 'empty header tag'; } + if( 1 < @{$header_l} ) { die 'more than one header specified'; } + my $header = @{$header_l}[0]; + if( 0 == length $header) { die 'empty string in header tag'; } + + ############## + # check source + if( not exists $msg_hash->{'source'} ) { die "no source specified"; } + my $source_l = $msg_hash->{'source'}; + if( (1 > @{$source_l}) || ( ( 'HASH' eq ref @{$source_l}[0]) && (1 > keys %{@{$source_l}[0]}) ) ) { die 'empty source tag'; } + if( 1 < @{$source_l} ) { die 'more than one source specified'; } + my $source = @{$source_l}[0]; + if( 0 == length $source) { die 'source error'; } + + ############## + # check target + if( not exists $msg_hash->{'target'} ) { die "no target specified"; } + my $target_l = $msg_hash->{'target'}; + if( (1 > @{$target_l}) || ( ('HASH' eq ref @{$target_l}[0]) && (1 > keys %{@{$target_l}[0]}) ) ) { die 'empty target tag'; } + } + }; + if($@) { + daemon_log("$session_id ERROR: do not understand the message: $@", 1); + $msg = undef; + $msg_hash = undef; + } + + return ($msg, $msg_hash); +} + + +sub check_outgoing_xml_validity { + my ($msg, $session_id) = @_; + + my $msg_hash; + eval{ + $msg_hash = $xml->XMLin($msg, ForceArray=>1); + + ############## + # check header + my $header_l = $msg_hash->{'header'}; + if( 1 != @{$header_l} ) { + die 'no or more than one headers specified'; + } + my $header = @{$header_l}[0]; + if( 0 == length $header) { + die 'header has length 0'; + } + + ############## + # check source + my $source_l = $msg_hash->{'source'}; + if( 1 != @{$source_l} ) { + die 'no or more than 1 sources specified'; + } + my $source = @{$source_l}[0]; + if( 0 == length $source) { + die 'source has length 0'; + } + + # Check if source contains hostname instead of ip address + if(not $source =~ /^[a-z0-9\.]+:\d+$/i) { + my ($hostname,$port) = split(/:/, $source); + my $ip_address = inet_ntoa(scalar gethostbyname($hostname)); + if(defined($ip_address) && $ip_address =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ && $port =~ /^\d+$/) { + # Write ip address to $source variable + $source = "$ip_address:$port"; + } + } + unless( $source =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+$/ || + $source =~ /^GOSA$/i) { + die "source '$source' is neither a complete ip-address with port nor 'GOSA'"; + } + + ############## + # check target + my $target_l = $msg_hash->{'target'}; + if( 0 == @{$target_l} ) { + die "no targets specified"; + } + foreach my $target (@$target_l) { + if( 0 == length $target) { + die "target has length 0"; + } + unless( $target =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+$/ || + $target =~ /^GOSA$/i || + $target =~ /^\*$/ || + $target =~ /KNOWN_SERVER/i || + $target =~ /JOBDB/i || + $target =~ /^([0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2})$/i ){ + die "target '$target' is not a complete ip-address with port or a valid target name or a mac-address"; + } + } + }; + if($@) { + daemon_log("$session_id ERROR: outgoing msg is not gosa-si envelope conform: $@", 1); + daemon_log("$@ ".(defined($msg) && length($msg)>0)?$msg:"Empty Message", 1); + $msg_hash = undef; + } + + return ($msg_hash); +} + + +sub input_from_known_server { + my ($input, $remote_ip, $session_id) = @_ ; + my ($msg, $msg_hash, $module); + + my $sql_statement= "SELECT * FROM known_server"; + my $query_res = $known_server_db->select_dbentry( $sql_statement ); + + while( my ($hit_num, $hit) = each %{ $query_res } ) { + my $host_name = $hit->{hostname}; + if( not $host_name =~ "^$remote_ip") { + next; + } + my $host_key = $hit->{hostkey}; + daemon_log("$session_id DEBUG: input_from_known_server: host_name: $host_name", 7); + daemon_log("$session_id DEBUG: input_from_known_server: host_key: $host_key", 7); + + # check if module can open msg envelope with module key + my ($tmp_msg, $tmp_msg_hash) = &check_key_and_xml_validity($input, $host_key, $session_id); + if( (!$tmp_msg) || (!$tmp_msg_hash) ) { + daemon_log("$session_id DEBUG: input_from_known_server: deciphering raise error", 7); + daemon_log("$@", 8); + next; + } + else { + $msg = $tmp_msg; + $msg_hash = $tmp_msg_hash; + $module = "ServerPackages"; + daemon_log("$session_id DEBUG: check_key_and_xml_validity... ok", 7); + last; + } + } + + if( (!$msg) || (!$msg_hash) || (!$module) ) { + daemon_log("$session_id DEBUG: Incoming message is not from a known server", 7); + } + + return ($msg, $msg_hash, $module); +} + + +sub input_from_known_client { + my ($input, $remote_ip, $session_id) = @_ ; + my ($msg, $msg_hash, $module); + + my $sql_statement= "SELECT * FROM known_clients"; + my $query_res = $known_clients_db->select_dbentry( $sql_statement ); + while( my ($hit_num, $hit) = each %{ $query_res } ) { + my $host_name = $hit->{hostname}; + if( not $host_name =~ /^$remote_ip:\d*$/) { + next; + } + my $host_key = $hit->{hostkey}; + &daemon_log("$session_id DEBUG: input_from_known_client: host_name: $host_name", 7); + &daemon_log("$session_id DEBUG: input_from_known_client: host_key: $host_key", 7); + + # check if module can open msg envelope with module key + ($msg, $msg_hash) = &check_key_and_xml_validity($input, $host_key, $session_id); + + if( (!$msg) || (!$msg_hash) ) { + &daemon_log("$session_id DEGUG: input_from_known_client: deciphering raise error", 7); + &daemon_log("$@", 8); + next; + } + else { + $module = "ClientPackages"; + daemon_log("$session_id DEBUG: check_key_and_xml_validity... ok", 7); + last; + } + } + + if( (!$msg) || (!$msg_hash) || (!$module) ) { + &daemon_log("$session_id DEBUG: Incoming message is not from a known client", 7); + } + + return ($msg, $msg_hash, $module); +} + + +sub input_from_unknown_host { + no strict "refs"; + my ($input, $session_id) = @_ ; + my ($msg, $msg_hash, $module); + my $error_string; + + my %act_modules = %$known_modules; + + while( my ($mod, $info) = each(%act_modules)) { + + # check a key exists for this module + my $module_key = ${$mod."_key"}; + if( not defined $module_key ) { + if( $mod eq 'ArpHandler' ) { + next; + } + daemon_log("$session_id ERROR: no key specified in config file for $mod", 1); + next; + } + daemon_log("$session_id DEBUG: $mod: $module_key", 7); + + # check if module can open msg envelope with module key + ($msg, $msg_hash) = &check_key_and_xml_validity($input, $module_key, $session_id); + if( (not defined $msg) || (not defined $msg_hash) ) { + next; + } else { + $module = $mod; + daemon_log("$session_id DEBUG: check_key_and_xml_validity... ok", 7); + last; + } + } + + if( (!$msg) || (!$msg_hash) || (!$module)) { + daemon_log("$session_id DEBUG: Incoming message is not from an unknown host", 7); + } + + return ($msg, $msg_hash, $module); +} + + +sub create_ciphering { + my ($passwd) = @_; + if((!defined($passwd)) || length($passwd)==0) { + $passwd = ""; + } + $passwd = substr(md5_hex("$passwd") x 32, 0, 32); + my $iv = substr(md5_hex('GONICUS GmbH'),0, 16); + my $my_cipher = Crypt::Rijndael->new($passwd , Crypt::Rijndael::MODE_CBC()); + $my_cipher->set_iv($iv); + return $my_cipher; +} + + +sub encrypt_msg { + my ($msg, $key) = @_; + my $my_cipher = &create_ciphering($key); + my $len; + { + use bytes; + $len= 16-length($msg)%16; + } + $msg = "\0"x($len).$msg; + $msg = $my_cipher->encrypt($msg); + chomp($msg = &encode_base64($msg)); + # there are no newlines allowed inside msg + $msg=~ s/\n//g; + return $msg; +} + + +sub decrypt_msg { + + my ($msg, $key) = @_ ; + $msg = &decode_base64($msg); + my $my_cipher = &create_ciphering($key); + $msg = $my_cipher->decrypt($msg); + $msg =~ s/\0*//g; + return $msg; +} + + +sub get_encrypt_key { + my ($target) = @_ ; + my $encrypt_key; + my $error = 0; + + # target can be in known_server + if( not defined $encrypt_key ) { + my $sql_statement= "SELECT * FROM known_server WHERE hostname='$target'"; + my $query_res = $known_server_db->select_dbentry( $sql_statement ); + while( my ($hit_num, $hit) = each %{ $query_res } ) { + my $host_name = $hit->{hostname}; + if( $host_name ne $target ) { + next; + } + $encrypt_key = $hit->{hostkey}; + last; + } + } + + # target can be in known_client + if( not defined $encrypt_key ) { + my $sql_statement= "SELECT * FROM known_clients WHERE hostname='$target'"; + my $query_res = $known_clients_db->select_dbentry( $sql_statement ); + while( my ($hit_num, $hit) = each %{ $query_res } ) { + my $host_name = $hit->{hostname}; + if( $host_name ne $target ) { + next; + } + $encrypt_key = $hit->{hostkey}; + last; + } + } + + return $encrypt_key; +} + + +#=== FUNCTION ================================================================ +# NAME: open_socket +# PARAMETERS: PeerAddr string something like 192.168.1.1 or 192.168.1.1:10000 +# [PeerPort] string necessary if port not appended by PeerAddr +# RETURNS: socket IO::Socket::INET +# DESCRIPTION: open a socket to PeerAddr +#=============================================================================== +sub open_socket { + my ($PeerAddr, $PeerPort) = @_ ; + if(defined($PeerPort)){ + $PeerAddr = $PeerAddr.":".$PeerPort; + } + my $socket; + $socket = new IO::Socket::INET(PeerAddr => $PeerAddr, + Porto => "tcp", + Type => SOCK_STREAM, + Timeout => 5, + ); + if(not defined $socket) { + return; + } +# &daemon_log("DEBUG: open_socket: $PeerAddr", 7); + return $socket; +} + + +sub send_msg_to_target { + my ($msg, $address, $encrypt_key, $msg_header, $session_id) = @_ ; + my $error = 0; + my $header; + my $timestamp = &get_time(); + my $new_status; + my $act_status; + my ($sql_statement, $res); + + if( $msg_header ) { + $header = "'$msg_header'-"; + } else { + $header = ""; + } + + # Patch the source ip + if($msg =~ /0\.0\.0\.0:\d*?<\/source>/) { + my $remote_ip = &get_local_ip_for_remote_ip(sprintf("%s", $address =~ /^([0-9\.]*?):.*$/)); + $msg =~ s/(0\.0\.0\.0):(\d*?)<\/source>/$remote_ip:$2<\/source>/s; + } + + # encrypt xml msg + my $crypted_msg = &encrypt_msg($msg, $encrypt_key); + + # opensocket + my $socket = &open_socket($address); + if( !$socket ) { + daemon_log("$session_id WARNING: cannot send ".$header."msg to $address , host not reachable", 3); + $error++; + } + + if( $error == 0 ) { + # send xml msg + print $socket $crypted_msg."\n"; + + daemon_log("$session_id INFO: send ".$header."msg to $address", 5); + daemon_log("$session_id DEBUG: message:\n$msg", 9); + + } + + # close socket in any case + if( $socket ) { + close $socket; + } + + if( $error > 0 ) { $new_status = "down"; } + else { $new_status = $msg_header; } + + + # known_clients + $sql_statement = "SELECT * FROM $known_clients_tn WHERE hostname='$address'"; + $res = $known_clients_db->select_dbentry($sql_statement); + if( keys(%$res) == 1) { + $act_status = exists $res->{1}->{'status'} ? $res->{1}->{'status'} : ""; + if ($act_status eq "down" && $new_status eq "down") { + $sql_statement = "DELETE FROM known_clients WHERE hostname='$address'"; + $res = $known_clients_db->del_dbentry($sql_statement); + daemon_log("$session_id WARNING: failed 2x to send msg to host '$address', delete host from known_clients", 3); + } else { + $sql_statement = "UPDATE known_clients SET status='$new_status', timestamp='$timestamp' WHERE hostname='$address'"; + $res = $known_clients_db->update_dbentry($sql_statement); + if($new_status eq "down"){ + daemon_log("$session_id WARNING: set '$address' from status '$act_status' to '$new_status'", 3); + } else { + daemon_log("$session_id INFO: set '$address' from status '$act_status' to '$new_status'", 5); + } + } + } + + # known_server + $sql_statement = "SELECT * FROM $known_server_tn WHERE hostname='$address'"; + $res = $known_server_db->select_dbentry($sql_statement); + if( keys(%$res) == 1) { + $act_status = exists $res->{1}->{'status'} ? $res->{1}->{'status'} : ""; + if ($act_status eq "down" && $new_status eq "down") { + $sql_statement = "DELETE FROM known_server WHERE hostname='$address'"; + $res = $known_server_db->del_dbentry($sql_statement); + daemon_log("$session_id WARNING: failed 2x to send a message to host '$address', delete host from known_server", 3); + } + else { + $sql_statement = "UPDATE known_server SET status='$new_status', timestamp='$timestamp' WHERE hostname='$address'"; + $res = $known_server_db->update_dbentry($sql_statement); + if($new_status eq "down"){ + daemon_log("$session_id WARNING: set '$address' from status '$act_status' to '$new_status'", 3); + } else { + daemon_log("$session_id INFO: set '$address' from status '$act_status' to '$new_status'", 5); + } + } + } + return $error; +} + + +sub update_jobdb_status_for_send_msgs { + my ($session_id, $answer, $error) = @_; + &daemon_log("$session_id DEBUG: try to update job status", 7); + if( $answer =~ /(\d+)<\/jobdb_id>/ ) { + my $jobdb_id = $1; + + $answer =~ /
      (.*)<\/header>/; + my $job_header = $1; + + $answer =~ /(.*)<\/target>/; + my $job_target = $1; + + # Sending msg failed + if( $error ) { + + # Set jobs to done, jobs do not need to deliver their message in any case + if (($job_header eq "trigger_action_localboot") + ||($job_header eq "trigger_action_lock") + ||($job_header eq "trigger_action_halt") + ) { + my $sql_statement = "UPDATE $job_queue_tn SET status='done' WHERE id=$jobdb_id"; + &daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $job_db->update_dbentry($sql_statement); + + # Reactivate jobs, jobs need to deliver their message + } elsif (($job_header eq "trigger_action_activate") + ||($job_header eq "trigger_action_update") + ||($job_header eq "trigger_action_reinstall") + ||($job_header eq "trigger_activate_new") + ) { + &reactivate_job_with_delay($session_id, $job_target, $job_header, 30 ); + + # For all other messages + } else { + my $sql_statement = "UPDATE $job_queue_tn ". + "SET status='error', result='can not deliver msg, please consult log file' ". + "WHERE id=$jobdb_id"; + &daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $job_db->update_dbentry($sql_statement); + } + + # Sending msg was successful + } else { + # Set jobs localboot, lock, activate, halt, reboot and wake to done + # jobs reinstall, update, inst_update do themself setting to done + if (($job_header eq "trigger_action_localboot") + ||($job_header eq "trigger_action_lock") + ||($job_header eq "trigger_action_activate") + ||($job_header eq "trigger_action_halt") + ||($job_header eq "trigger_action_reboot") + ||($job_header eq "trigger_action_wake") + ||($job_header eq "trigger_wake") + ) { + + my $sql_statement = "UPDATE $job_queue_tn ". + "SET status='done' ". + "WHERE id=$jobdb_id AND status='processed'"; + &daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $job_db->update_dbentry($sql_statement); + } else { + &daemon_log("$session_id DEBUG: sending message succeed but cannot update job status.", 7); + } + } + } else { + &daemon_log("$session_id DEBUG: cannot update job status, msg has no jobdb_id-tag: $answer", 7); + } +} + +sub reactivate_job_with_delay { + my ($session_id, $target, $header, $delay) = @_ ; + # Sometimes the client is still booting or does not wake up, in this case reactivate the job (if it exists) with a delay of n sec + + if (not defined $delay) { $delay = 30 } ; + my $delay_timestamp = &calc_timestamp(&get_time(), "plus", $delay); + + my $sql = "UPDATE $job_queue_tn Set timestamp='$delay_timestamp', status='waiting' WHERE (macaddress='$target' AND headertag='$header')"; + my $res = $job_db->update_dbentry($sql); + daemon_log("$session_id INFO: '$header'-job will be reactivated at '$delay_timestamp' ". + "cause client '$target' is currently not available", 5); + daemon_log("$session_id $sql", 7); + return; +} + + +sub sig_handler { + my ($kernel, $signal) = @_[KERNEL, ARG0] ; + daemon_log("0 INFO got signal '$signal'", 1); + $kernel->sig_handled(); + return; +} + + +sub msg_to_decrypt { + my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP]; + my $session_id = $session->ID; + my ($msg, $msg_hash, $module); + my $error = 0; + + # fetch new msg out of @msgs_to_decrypt + my $tmp_next_msg = shift @msgs_to_decrypt; + my ($next_msg, $msg_source) = split(/;/, $tmp_next_msg); + + # msg is from a new client or gosa + ($msg, $msg_hash, $module) = &input_from_unknown_host($next_msg, $session_id); + + # msg is from a gosa-si-server + if(( !$msg ) || ( !$msg_hash ) || ( !$module )){ + ($msg, $msg_hash, $module) = &input_from_known_server($next_msg, $heap->{'remote_ip'}, $session_id); + } + # msg is from a gosa-si-client + if(( !$msg ) || ( !$msg_hash ) || ( !$module )){ + ($msg, $msg_hash, $module) = &input_from_known_client($next_msg, $heap->{'remote_ip'}, $session_id); + } + # an error occurred + if(( !$msg ) || ( !$msg_hash ) || ( !$module )){ + # if an incoming msg could not be decrypted (maybe a wrong key), send client a ping. If the client + # could not understand a msg from its server the client cause a re-registering process + my $remote_ip = $heap->{'remote_ip'}; + my $remote_port = $heap->{'remote_port'}; + my $ping_msg = "
      gosa_ping
      $server_address$msg_source
      "; + my ($test_error, $test_error_string) = &send_msg_to_target($ping_msg, "$msg_source", "dummy-key", "gosa_ping", $session_id); + + daemon_log("$session_id WARNING cannot understand incoming msg, send 'ping'-msg to all host with ip '".$heap->{remote_ip}. + "' to cause a re-registering of the client if necessary", 3); + $error++; + } + + + my $header; + my $target; + my $source; + my $done = 0; + my $sql; + my $res; + + # check whether this message should be processed here + if ($error == 0) { + $header = @{$msg_hash->{'header'}}[0]; + $target = @{$msg_hash->{'target'}}[0]; + $source = @{$msg_hash->{'source'}}[0]; + my $not_found_in_known_clients_db = 0; + my $not_found_in_known_server_db = 0; + my $not_found_in_foreign_clients_db = 0; + my $local_address; + my $local_mac; + my ($target_ip, $target_port) = split(':', $target); + + # Determine the local ip address if target is an ip address + if ($target =~ /^\d+\.\d+\.\d+\.\d+:\d+$/) { + $local_address = &get_local_ip_for_remote_ip($target_ip).":$server_port"; + } else { + $local_address = $server_address; + } + + # Determine the local mac address if target is a mac address + if ($target =~ /^([0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2})$/i) { + my $loc_ip = &get_local_ip_for_remote_ip($heap->{'remote_ip'}); + my $network_interface= &get_interface_for_ip($loc_ip); + $local_mac = &get_mac_for_interface($network_interface); + } else { + $local_mac = $server_mac_address; + } + + # target and source is equal to GOSA -> process here + if (not $done) { + if ($target eq "GOSA" && $source eq "GOSA") { + $done = 1; + &daemon_log("$session_id DEBUG: target and source is 'GOSA' -> process here", 7); + } + } + + # target is own address without forward_to_gosa-tag -> process here + if (not $done) { + #if ((($target eq $local_address) || ($target eq $local_mac) ) && (not exists $msg_hash->{'forward_to_gosa'})) { + if (($target eq $local_address) && (not exists $msg_hash->{'forward_to_gosa'})) { + $done = 1; + if ($source eq "GOSA") { + $msg =~ s/<\/xml>/$local_address,$session_id<\/forward_to_gosa><\/xml>/; + } + &daemon_log("$session_id DEBUG: target is own address without forward_to_gosa-tag -> process here", 7); + } + } + + # target is a client address in known_clients -> process here + if (not $done) { + $sql = "SELECT * FROM $known_clients_tn WHERE (hostname='$target' OR macaddress LIKE '$target')"; + $res = $known_clients_db->select_dbentry($sql); + if (keys(%$res) > 0) { + $done = 1; + my $hostname = $res->{1}->{'hostname'}; + $msg =~ s/$target<\/target>/$hostname<\/target>/; + my $local_address = &get_local_ip_for_remote_ip($target_ip).":$server_port"; + if ($source eq "GOSA") { + $msg =~ s/<\/xml>/$local_address,$session_id<\/forward_to_gosa><\/xml>/; + } + &daemon_log("$session_id DEBUG: target is a client address in known_clients -> process here", 7); + + } else { + $not_found_in_known_clients_db = 1; + } + } + + # target ist own address with forward_to_gosa-tag not pointing to myself -> process here + if (not $done) { + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my $gosa_at; + my $gosa_session_id; + if (($target eq $local_address) && (defined $forward_to_gosa)){ + my ($gosa_at, $gosa_session_id) = split(/,/, $forward_to_gosa); + if ($gosa_at ne $local_address) { + $done = 1; + &daemon_log("$session_id DEBUG: target is own address with forward_to_gosa-tag not pointing to myself -> process here", 7); + } + } + } + + # if message should be processed here -> add message to incoming_db + if ($done) { + # if a job or a gosa message comes from a foreign server, fake module to GosaPackages + # so gosa-si-server knows how to process this kind of messages + if ($header =~ /^gosa_/ || $header =~ /^job_/) { + $module = "GosaPackages"; + } + + my $res = $incoming_db->add_dbentry( {table=>$incoming_tn, + primkey=>[], + headertag=>$header, + targettag=>$target, + xmlmessage=>&encode_base64($msg), + timestamp=>&get_time, + module=>$module, + sessionid=>$session_id, + } ); + + } + + # target is own address with forward_to_gosa-tag pointing at myself -> forward to gosa + if (not $done) { + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my $gosa_at; + my $gosa_session_id; + if (($target eq $local_address) && (defined $forward_to_gosa)){ + my ($gosa_at, $gosa_session_id) = split(/,/, $forward_to_gosa); + if ($gosa_at eq $local_address) { + my $session_reference = $kernel->ID_id_to_session($gosa_session_id); + if( defined $session_reference ) { + $heap = $session_reference->get_heap(); + } + if(exists $heap->{'client'}) { + $msg = &encrypt_msg($msg, $GosaPackages_key); + $heap->{'client'}->put($msg); + &daemon_log("$session_id INFO: incoming '$header' message forwarded to GOsa", 5); + } + $done = 1; + &daemon_log("$session_id DEBUG: target is own address with forward_to_gosa-tag pointing at myself -> forward to gosa", 7); + } + } + + } + + # target is a client address in foreign_clients -> forward to registration server + if (not $done) { + $sql = "SELECT * FROM $foreign_clients_tn WHERE (hostname='$target' OR macaddress LIKE '$target')"; + $res = $foreign_clients_db->select_dbentry($sql); + if (keys(%$res) > 0) { + my $hostname = $res->{1}->{'hostname'}; + my ($host_ip, $host_port) = split(/:/, $hostname); + my $local_address = &get_local_ip_for_remote_ip($host_ip).":$server_port"; + my $regserver = $res->{1}->{'regserver'}; + my $sql = "SELECT * FROM $known_server_tn WHERE hostname='$regserver'"; + my $res = $known_server_db->select_dbentry($sql); + if (keys(%$res) > 0) { + my $regserver_key = $res->{1}->{'hostkey'}; + $msg =~ s/GOSA<\/source>/$local_address<\/source>/; + $msg =~ s/$target<\/target>/$hostname<\/target>/; + if ($source eq "GOSA") { + $msg =~ s/<\/xml>/$local_address,$session_id<\/forward_to_gosa><\/xml>/; + } + &send_msg_to_target($msg, $regserver, $regserver_key, $header, $session_id); + } + $done = 1; + &daemon_log("$session_id DEBUG: target is a client address in foreign_clients -> forward to registration server", 7); + } else { + $not_found_in_foreign_clients_db = 1; + } + } + + # target is a server address -> forward to server + if (not $done) { + $sql = "SELECT * FROM $known_server_tn WHERE (hostname='$target' OR macaddress LIKE '$target')"; + $res = $known_server_db->select_dbentry($sql); + if (keys(%$res) > 0) { + my $hostkey = $res->{1}->{'hostkey'}; + + if ($source eq "GOSA") { + $msg =~ s/GOSA<\/source>/$local_address<\/source>/; + $msg =~ s/<\/xml>/$local_address,$session_id<\/forward_to_gosa><\/xml>/; + + } + + &send_msg_to_target($msg, $target, $hostkey, $header, $session_id); + $done = 1; + &daemon_log("$session_id DEBUG: target is a server address -> forward to server", 7); + } else { + $not_found_in_known_server_db = 1; + } + } + + + # target is not in foreign_clients_db, known_server_db or known_clients_db, maybe it is a complete new one -> process here + if ( $not_found_in_foreign_clients_db + && $not_found_in_known_server_db + && $not_found_in_known_clients_db) { + &daemon_log("$session_id DEBUG: target is not in foreign_clients_db, known_server_db or known_clients_db, maybe it is a complete new one -> process here", 7); + if ($header =~ /^gosa_/ || $header =~ /^job_/) { + $module = "GosaPackages"; + } + my $res = $incoming_db->add_dbentry( {table=>$incoming_tn, + primkey=>[], + headertag=>$header, + targettag=>$target, + xmlmessage=>&encode_base64($msg), + timestamp=>&get_time, + module=>$module, + sessionid=>$session_id, + } ); + $done = 1; + } + + + if (not $done) { + daemon_log("$session_id ERROR: do not know what to do with this message: $msg", 1); + if ($source eq "GOSA") { + my %data = ('error_msg' => &encode_base64($msg), 'error_string' => "Do not know what to do with this message!"); + my $error_msg = &build_msg("error", $local_address, "GOSA", \%data ); + + my $session_reference = $kernel->ID_id_to_session($session_id); + if( defined $session_reference ) { + $heap = $session_reference->get_heap(); + } + if(exists $heap->{'client'}) { + $error_msg = &encrypt_msg($error_msg, $GosaPackages_key); + $heap->{'client'}->put($error_msg); + } + } + } + + } + + return; +} + + +sub next_task { + my ($session, $heap, $task) = @_[SESSION, HEAP, ARG0]; + my $running_task = POE::Wheel::Run->new( + Program => sub { process_task($session, $heap, $task) }, + StdioFilter => POE::Filter::Reference->new(), + StdoutEvent => "task_result", + StderrEvent => "task_debug", + CloseEvent => "task_done", + ); + $heap->{task}->{ $running_task->ID } = $running_task; +} + +sub handle_task_result { + my ($kernel, $heap, $result) = @_[KERNEL, HEAP, ARG0]; + my $client_answer = $result->{'answer'}; + if( $client_answer =~ s/session_id=(\d+)$// ) { + my $session_id = $1; + if( defined $session_id ) { + my $session_reference = $kernel->ID_id_to_session($session_id); + if( defined $session_reference ) { + $heap = $session_reference->get_heap(); + } + } + + if(exists $heap->{'client'}) { + $heap->{'client'}->put($client_answer); + } + } + $kernel->sig(CHLD => "child_reap"); +} + +sub handle_task_debug { + my $result = $_[ARG0]; + print STDERR "$result\n"; +} + +sub handle_task_done { + my ( $kernel, $heap, $task_id ) = @_[ KERNEL, HEAP, ARG0 ]; + delete $heap->{task}->{$task_id}; +} + +sub process_task { + no strict "refs"; + #CHECK: Not @_[...]? + my ($session, $heap, $task) = @_; + my $error = 0; + my $answer_l; + my ($answer_header, @answer_target_l, $answer_source); + my $client_answer = ""; + + # prepare all variables needed to process message + #my $msg = $task->{'xmlmessage'}; + my $msg = &decode_base64($task->{'xmlmessage'}); + my $incoming_id = $task->{'id'}; + my $module = $task->{'module'}; + my $header = $task->{'headertag'}; + my $session_id = $task->{'sessionid'}; + my $msg_hash; + eval { + $msg_hash = $xml->XMLin($msg, ForceArray=>1); + }; + daemon_log("ERROR: XML failure '$@'") if ($@); + my $source = @{$msg_hash->{'source'}}[0]; + + # set timestamp of incoming client uptodate, so client will not + # be deleted from known_clients because of expiration + my $act_time = &get_time(); + my $sql = "UPDATE $known_clients_tn SET timestamp='$act_time' WHERE hostname='$source'"; + my $res = $known_clients_db->exec_statement($sql); + + ###################### + # process incoming msg + if( $error == 0) { + daemon_log("$session_id INFO: Incoming msg (session_id=$session_id) with header '".@{$msg_hash->{'header'}}[0]."'", 5); + daemon_log("$session_id DEBUG: Processing module ".$module, 7); + $answer_l = &{ $module."::process_incoming_msg" }($msg, $msg_hash, $session_id); + + if ( 0 < @{$answer_l} ) { + my $answer_str = join("\n", @{$answer_l}); + while ($answer_str =~ /
      (\w+)<\/header>/g) { + daemon_log("$session_id INFO: got answer message with header '$1'", 5); + } + daemon_log("$session_id DEBUG: $module: got answer from module: \n".$answer_str,9); + } else { + daemon_log("$session_id DEBUG: $module: got no answer from module!" ,7); + } + + } + if( !$answer_l ) { $error++ }; + + ######## + # answer + if( $error == 0 ) { + + foreach my $answer ( @{$answer_l} ) { + # check outgoing msg to xml validity + my $answer_hash = &check_outgoing_xml_validity($answer, $session_id); + if( not defined $answer_hash ) { next; } + + $answer_header = @{$answer_hash->{'header'}}[0]; + @answer_target_l = @{$answer_hash->{'target'}}; + $answer_source = @{$answer_hash->{'source'}}[0]; + + # deliver msg to all targets + foreach my $answer_target ( @answer_target_l ) { + + # targets of msg are all gosa-si-clients in known_clients_db + if( $answer_target eq "*" ) { + # answer is for all clients + my $sql_statement= "SELECT * FROM known_clients"; + my $query_res = $known_clients_db->select_dbentry( $sql_statement ); + while( my ($hit_num, $hit) = each %{ $query_res } ) { + my $host_name = $hit->{hostname}; + my $host_key = $hit->{hostkey}; + my $error = &send_msg_to_target($answer, $host_name, $host_key, $answer_header, $session_id); + &update_jobdb_status_for_send_msgs($session_id, $answer, $error); + } + } + + # targets of msg are all gosa-si-server in known_server_db + elsif( $answer_target eq "KNOWN_SERVER" ) { + # answer is for all server in known_server + my $sql_statement= "SELECT * FROM $known_server_tn"; + my $query_res = $known_server_db->select_dbentry( $sql_statement ); + while( my ($hit_num, $hit) = each %{ $query_res } ) { + my $host_name = $hit->{hostname}; + my $host_key = $hit->{hostkey}; + $answer =~ s/\S+<\/target>/$host_name<\/target>/g; + my $error = &send_msg_to_target($answer, $host_name, $host_key, $answer_header, $session_id); + &update_jobdb_status_for_send_msgs($session_id, $answer, $error); + } + } + + # target of msg is GOsa + elsif( $answer_target eq "GOSA" ) { + my $session_id = ($1) if $answer =~ /(\d+?)<\/session_id>/; + my $add_on = ""; + if( defined $session_id ) { + $add_on = ".session_id=$session_id"; + } + # answer is for GOSA and has to returned to connected client + my $gosa_answer = &encrypt_msg($answer, $GosaPackages_key); + $client_answer = $gosa_answer.$add_on; + } + + # target of msg is job queue at this host + elsif( $answer_target eq "JOBDB") { + $answer =~ /
      (\S+)<\/header>/; + my $header; + if( defined $1 ) { $header = $1; } + my $error = &send_msg_to_target($answer, $server_address, $GosaPackages_key, $header, $session_id); + &update_jobdb_status_for_send_msgs($session_id, $answer, $error); + } + + # Target of msg is a mac address + elsif( $answer_target =~ /^([0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2})$/i ) { + daemon_log("$session_id INFO: target is mac address '$answer_target', looking for host in known_clients and foreign_clients", 5); + + # Looking for macaddress in known_clients + my $sql_statement = "SELECT * FROM known_clients WHERE macaddress LIKE '$answer_target'"; + my $query_res = $known_clients_db->select_dbentry( $sql_statement ); + my $found_ip_flag = 0; + while( my ($hit_num, $hit) = each %{ $query_res } ) { + my $host_name = $hit->{hostname}; + my $host_key = $hit->{hostkey}; + $answer =~ s/$answer_target/$host_name/g; + daemon_log("$session_id INFO: found host '$host_name', associated to '$answer_target'", 5); + my $error = &send_msg_to_target($answer, $host_name, $host_key, $answer_header, $session_id); + &update_jobdb_status_for_send_msgs($session_id, $answer, $error); + $found_ip_flag++ ; + } + + # Looking for macaddress in foreign_clients + if ($found_ip_flag == 0) { + my $sql = "SELECT * FROM $foreign_clients_tn WHERE macaddress LIKE '$answer_target'"; + my $res = $foreign_clients_db->select_dbentry($sql); + while( my ($hit_num, $hit) = each %{ $res } ) { + my $host_name = $hit->{hostname}; + my $reg_server = $hit->{regserver}; + daemon_log("$session_id INFO: found host '$host_name' with mac '$answer_target', registered at '$reg_server'", 5); + + # Fetch key for reg_server + my $reg_server_key; + my $sql = "SELECT * FROM $known_server_tn WHERE hostname='$reg_server'"; + my $res = $known_server_db->select_dbentry($sql); + if (exists $res->{1}) { + $reg_server_key = $res->{1}->{'hostkey'}; + } else { + daemon_log("$session_id ERROR: cannot find hostkey for '$host_name' in '$known_server_tn'", 1); + daemon_log("$session_id ERROR: unable to forward answer to correct registration server, processing is aborted!", 1); + $reg_server_key = undef; + } + + # Send answer to server where client is registered + if (defined $reg_server_key) { + $answer =~ s/$answer_target/$host_name/g; + my $error = &send_msg_to_target($answer, $reg_server, $reg_server_key, $answer_header, $session_id); + &update_jobdb_status_for_send_msgs($session_id, $answer, $error); + $found_ip_flag++ ; + } + } + } + + # No mac to ip matching found + if( $found_ip_flag == 0) { + daemon_log("$session_id WARNING: no host found in known_clients or foreign_clients with mac address '$answer_target'", 3); + &reactivate_job_with_delay($session_id, $answer_target, $answer_header, 30); + } + + # Answer is for one specific host + } else { + # get encrypt_key + my $encrypt_key = &get_encrypt_key($answer_target); + if( not defined $encrypt_key ) { + # unknown target + daemon_log("$session_id WARNING: unknown target '$answer_target'", 3); + next; + } + my $error = &send_msg_to_target($answer, $answer_target, $encrypt_key, $answer_header,$session_id); + &update_jobdb_status_for_send_msgs($session_id, $answer, $error); + } + } + } + } + + my $filter = POE::Filter::Reference->new(); + my %result = ( + status => "seems ok to me", + answer => $client_answer, + ); + + my $output = $filter->put( [ \%result ] ); + print @$output; + + +} + +sub session_start { + my ($kernel) = $_[KERNEL]; + $global_kernel = $kernel; + $kernel->yield('register_at_foreign_servers'); + $kernel->yield('create_fai_server_db', $fai_server_tn ); + $kernel->yield('create_fai_release_db', $fai_release_tn ); + $kernel->yield('watch_for_next_tasks'); + $kernel->sig(USR1 => "sig_handler"); + $kernel->sig(USR2 => "recreate_packages_db"); + $kernel->delay_set('watch_for_new_jobs', $job_queue_loop_delay); + $kernel->delay_set('watch_for_done_jobs', $job_queue_loop_delay); + $kernel->delay_set('watch_for_modified_jobs', $modified_jobs_loop_delay); + $kernel->delay_set('watch_for_new_messages', $messaging_db_loop_delay); + $kernel->delay_set('watch_for_delivery_messages', $messaging_db_loop_delay); + $kernel->delay_set('watch_for_done_messages', $messaging_db_loop_delay); + $kernel->delay_set('watch_for_old_known_clients', $job_queue_loop_delay); + + # Start opsi check + if ($opsi_enabled eq "true") { + $kernel->delay_set('watch_for_opsi_jobs', $job_queue_opsi_delay); + } + +} + + +sub watch_for_done_jobs { + #CHECK: $heap for what? + my ($kernel,$heap) = @_[KERNEL, HEAP]; + + my $sql_statement = "SELECT * FROM ".$job_queue_tn." WHERE ((status='done') AND (modified='0'))"; + my $res = $job_db->select_dbentry( $sql_statement ); + + while( my ($id, $hit) = each %{$res} ) { + my $jobdb_id = $hit->{id}; + my $sql_statement = "DELETE FROM $job_queue_tn WHERE id=$jobdb_id"; + my $res = $job_db->del_dbentry($sql_statement); + } + + $kernel->delay_set('watch_for_done_jobs',$job_queue_loop_delay); +} + + +sub watch_for_opsi_jobs { + my ($kernel) = $_[KERNEL]; + + # This is not very nice to look for opsi install jobs, but headertag has to be trigger_action_reinstall. The only way to identify a + # opsi install job is to parse the xml message. There is still the correct header. + my $sql_statement = "SELECT * FROM ".$job_queue_tn." WHERE ((xmlmessage LIKE '%opsi_install_client
      %') AND (status='processing') AND (siserver='localhost'))"; + my $res = $job_db->select_dbentry( $sql_statement ); + + # Ask OPSI for an update of the running jobs + while (my ($id, $hit) = each %$res ) { + # Determine current parameters of the job + my $hostId = $hit->{'plainname'}; + my $macaddress = $hit->{'macaddress'}; + my $progress = $hit->{'progress'}; + + my $result= {}; + + # For hosts, only return the products that are or get installed + my $callobj; + $callobj = { + method => 'getProductStates_hash', + params => [ $hostId ], + id => 1, + }; + + my $hres = $opsi_client->call($opsi_url, $callobj); + #my ($hres_err, $hres_err_string) = &check_opsi_res($hres); + if (not &check_opsi_res($hres)) { + my $htmp= $hres->result->{$hostId}; + + # Check state != not_installed or action == setup -> load and add + my $products= 0; + my $installed= 0; + my $installing = 0; + my $error= 0; + my @installed_list; + my @error_list; + my $act_status = "none"; + foreach my $product (@{$htmp}){ + + if ($product->{'installationStatus'} ne "not_installed" or + $product->{'actionRequest'} eq "setup"){ + + # Increase number of products for this host + $products++; + + if ($product->{'installationStatus'} eq "failed"){ + $result->{$product->{'productId'}}= "error"; + unshift(@error_list, $product->{'productId'}); + $error++; + } + if ($product->{'installationStatus'} eq "installed" && $product->{'actionRequest'} eq "none"){ + $result->{$product->{'productId'}}= "installed"; + unshift(@installed_list, $product->{'productId'}); + $installed++; + } + if ($product->{'installationStatus'} eq "installing"){ + $result->{$product->{'productId'}}= "installing"; + $installing++; + $act_status = "installing - ".$product->{'productId'}; + } + } + } + + # Estimate "rough" progress, avoid division by zero + if ($products == 0) { + $result->{'progress'}= 0; + } else { + $result->{'progress'}= int($installed * 100 / $products); + } + + # Set updates in job queue + if ((not $error) && (not $installing) && ($installed)) { + $act_status = "installed - ".join(", ", @installed_list); + } + if ($error) { + $act_status = "error - ".join(", ", @error_list); + } + if ($progress ne $result->{'progress'} ) { + # Updating progress and result + my $update_statement = "UPDATE $job_queue_tn SET modified='1', progress='".$result->{'progress'}."', result='$act_status' WHERE macaddress='$macaddress' AND siserver='localhost'"; + my $update_res = $job_db->update_dbentry($update_statement); + } + if ($progress eq 100) { + # Updateing status + my $done_statement = "UPDATE $job_queue_tn SET modified='1', "; + if ($error) { + $done_statement .= "status='error'"; + } else { + $done_statement .= "status='done'"; + } + $done_statement .= " WHERE macaddress='$macaddress' AND siserver='localhost'"; + my $done_res = $job_db->update_dbentry($done_statement); + } + + + } + } + + $kernel->delay_set('watch_for_opsi_jobs', $job_queue_opsi_delay); +} + + +# If a job got an update or was modified anyway, send to all other si-server an update message of this jobs. +sub watch_for_modified_jobs { + my ($kernel,$heap) = @_[KERNEL, HEAP]; + + my $sql_statement = "SELECT * FROM $job_queue_tn WHERE (modified='1')"; + my $res = $job_db->select_dbentry( $sql_statement ); + + # if db contains no jobs which should be update, do nothing + if (keys %$res != 0) { + + if ($job_synchronization eq "true") { + # make out of the db result a gosa-si message + my $update_msg = &db_res2si_msg ($res, "foreign_job_updates", "KNOWN_SERVER", "MY_LOCAL_ADDRESS"); + + # update all other SI-server + &inform_all_other_si_server($update_msg); + } + + # set jobs all jobs to modified = 0, wait until the next modification for updates of other si-server + $sql_statement = "UPDATE $job_queue_tn SET modified='0' "; + $res = $job_db->update_dbentry($sql_statement); + } + + $kernel->delay_set('watch_for_modified_jobs', $modified_jobs_loop_delay); +} + + +sub watch_for_new_jobs { + if($watch_for_new_jobs_in_progress == 0) { + $watch_for_new_jobs_in_progress = 1; + my ($kernel,$heap) = @_[KERNEL, HEAP]; + + # check gosa job quaeue for jobs with executable timestamp + my $timestamp = &get_time(); + my $sql_statement = "SELECT * FROM $job_queue_tn WHERE status='waiting' AND (CAST(timestamp AS UNSIGNED)) < $timestamp ORDER BY timestamp"; + my $res = $job_db->exec_statement( $sql_statement ); + + # Merge all new jobs that would do the same actions + my @drops; + my $hits; + foreach my $hit (reverse @{$res} ) { + my $macaddress= lc @{$hit}[8]; + my $headertag= @{$hit}[5]; + if( + defined($hits->{$macaddress}) && + defined($hits->{$macaddress}->{$headertag}) && + defined($hits->{$macaddress}->{$headertag}[0]) + ) { + push @drops, "DELETE FROM $job_queue_tn WHERE id = $hits->{$macaddress}->{$headertag}[0]"; + } + $hits->{$macaddress}->{$headertag}= $hit; + } + + # Delete new jobs with a matching job in state 'processing' + foreach my $macaddress (keys %{$hits}) { + foreach my $jobdb_headertag (keys %{$hits->{$macaddress}}) { + my $jobdb_id = @{$hits->{$macaddress}->{$jobdb_headertag}}[0]; + if(defined($jobdb_id)) { + my $sql_statement = "SELECT * FROM $job_queue_tn WHERE macaddress LIKE '$macaddress' AND headertag='$jobdb_headertag' AND status='processing'"; + my $res = $job_db->exec_statement( $sql_statement ); + foreach my $hit (@{$res}) { + push @drops, "DELETE FROM $job_queue_tn WHERE id=$jobdb_id"; + } + } else { + daemon_log("J ERROR: Job without id exists for macaddress $macaddress!", 1); + } + } + } + + # Commit deletion + $job_db->exec_statementlist(\@drops); + + # Look for new jobs that could be executed + foreach my $macaddress (keys %{$hits}) { + + # Look if there is an executing job + my $sql_statement = "SELECT * FROM $job_queue_tn WHERE macaddress LIKE '$macaddress' AND status='processing'"; + my $res = $job_db->exec_statement( $sql_statement ); + + # Skip new jobs for host if there is a processing job + if(defined($res) and defined @{$res}[0]) { + # Prevent race condition if there is a trigger_activate job waiting and a goto-activation job processing + my $row = @{$res}[0] if (ref $res eq 'ARRAY'); + if(@{$row}[5] eq 'trigger_action_reinstall') { + my $sql_statement_2 = "SELECT * FROM $job_queue_tn WHERE macaddress LIKE '$macaddress' AND status='waiting' AND headertag = 'trigger_activate_new'"; + my $res_2 = $job_db->exec_statement( $sql_statement_2 ); + if(defined($res_2) and defined @{$res_2}[0]) { + # Set status from goto-activation to 'waiting' and update timestamp + $job_db->exec_statement("UPDATE $job_queue_tn SET status='waiting' WHERE macaddress LIKE '$macaddress' AND headertag = 'trigger_action_reinstall'"); + $job_db->exec_statement("UPDATE $job_queue_tn SET timestamp='".&calc_timestamp(&get_time(), 'plus', 30)."' WHERE macaddress LIKE '$macaddress' AND headertag = 'trigger_action_reinstall'"); + } + } + next; + } + + foreach my $jobdb_headertag (keys %{$hits->{$macaddress}}) { + my $jobdb_id = @{$hits->{$macaddress}->{$jobdb_headertag}}[0]; + if(defined($jobdb_id)) { + my $job_msg = @{$hits->{$macaddress}->{$jobdb_headertag}}[7]; + + daemon_log("J DEBUG: its time to execute $job_msg", 7); + my $sql_statement = "SELECT * FROM known_clients WHERE macaddress LIKE '$macaddress'"; + my $res_hash = $known_clients_db->select_dbentry( $sql_statement ); + + # expect macaddress is unique!!!!!! + my $target = $res_hash->{1}->{hostname}; + + # change header + $job_msg =~ s/
      job_/
      gosa_/; + + # add sqlite_id + $job_msg =~ s/<\/xml>$/$jobdb_id<\/jobdb_id><\/xml>/; + + $job_msg =~ /
      (\S+)<\/header>/; + my $header = $1 ; + my $func_error = &send_msg_to_target($job_msg, $server_address, $GosaPackages_key, $header, "J"); + + # update status in job queue to ... + # ... 'processing', for jobs: 'reinstall', 'update' + if (($header =~ /gosa_trigger_action_reinstall/) + || ($header =~ /gosa_trigger_activate_new/) + || ($header =~ /gosa_trigger_action_update/)) { + my $sql_statement = "UPDATE $job_queue_tn SET status='processing' WHERE id=$jobdb_id"; + my $dbres = $job_db->update_dbentry($sql_statement); + } + + # ... 'done', for all other jobs, they are no longer needed in the jobqueue + else { + my $sql_statement = "UPDATE $job_queue_tn SET status='done' WHERE id=$jobdb_id"; + my $dbres = $job_db->update_dbentry($sql_statement); + } + + + # We don't want parallel processing + last; + } + } + } + + $watch_for_new_jobs_in_progress = 0; + $kernel->delay_set('watch_for_new_jobs', $job_queue_loop_delay); + } +} + + +sub watch_for_new_messages { + my ($kernel,$heap) = @_[KERNEL, HEAP]; + my @coll_user_msg; # collection list of outgoing messages + + # check messaging_db for new incoming messages with executable timestamp + my $timestamp = &get_time(); + my $sql_statement = "SELECT * FROM $messaging_tn WHERE ( (CAST(timestamp AS UNSIGNED))<$timestamp AND flag='n' AND direction='in' )"; + my $res = $messaging_db->exec_statement( $sql_statement ); + foreach my $hit (@{$res}) { + + # create outgoing messages + my $message_to = @{$hit}[3]; + # translate message_to to plain login name + my @message_to_l = split(/,/, $message_to); + my %receiver_h; + foreach my $receiver (@message_to_l) { + if ($receiver =~ /^u_([\s\S]*)$/) { + $receiver_h{$1} = 0; + } elsif ($receiver =~ /^g_([\s\S]*)$/) { + my $group_name = $1; + # fetch all group members from ldap and add them to receiver hash + my $ldap_handle = &get_ldap_handle(); + if (defined $ldap_handle) { + my $mesg = $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + attrs => ['memberUid'], + filter => "cn=$group_name", + ); + if ($mesg->count) { + my @entries = $mesg->entries; + foreach my $entry (@entries) { + my @receivers= $entry->get_value("memberUid"); + foreach my $receiver (@receivers) { + $receiver_h{$receiver} = 0; + } + } + } + # translating errors ? + if ($mesg->code) { + daemon_log("M ERROR: unable to translate group '$group_name' to user list for message delivery: $mesg->error", 1); + } + # ldap handle error ? + } else { + daemon_log("M ERROR: unable to translate group '$group_name' to user list for message delivery: no ldap handle available", 1); + } + } else { + my $sbjct = &encode_base64(@{$hit}[1]); + my $msg = &encode_base64(@{$hit}[7]); + &daemon_log("M WARNING: unknown receiver '$receiver' for a user-message '$sbjct - $msg'", 3); + } + } + my @receiver_l = keys(%receiver_h); + + my $message_id = @{$hit}[0]; + + #add each outgoing msg to messaging_db + my $receiver; + foreach $receiver (@receiver_l) { + my $sql_statement = "INSERT INTO $messaging_tn (id, subject, message_from, message_to, flag, direction, delivery_time, message, timestamp) ". + "VALUES ('". + $message_id."', '". # id + @{$hit}[1]."', '". # subject + @{$hit}[2]."', '". # message_from + $receiver."', '". # message_to + "none"."', '". # flag + "out"."', '". # direction + @{$hit}[6]."', '". # delivery_time + @{$hit}[7]."', '". # message + $timestamp."'". # timestamp + ")"; + &daemon_log("M DEBUG: $sql_statement", 1); + my $res = $messaging_db->exec_statement($sql_statement); + &daemon_log("M INFO: message '".@{$hit}[0]."' is prepared for delivery to receiver '$receiver'", 5); + } + + # set incoming message to flag d=deliverd + $sql_statement = "UPDATE $messaging_tn SET flag='p' WHERE id='$message_id'"; + &daemon_log("M DEBUG: $sql_statement", 7); + $res = $messaging_db->update_dbentry($sql_statement); + &daemon_log("M INFO: message '$message_id' is set to flag 'p' (processed)", 5); + } + + $kernel->delay_set('watch_for_new_messages', $messaging_db_loop_delay); + return; +} + +sub watch_for_delivery_messages { + my ($kernel, $heap) = @_[KERNEL, HEAP]; + + # select outgoing messages + my $sql_statement = "SELECT * FROM $messaging_tn WHERE ( flag='p' AND direction='out' )"; + #&daemon_log("0 DEBUG: $sql", 7); + my $res = $messaging_db->exec_statement( $sql_statement ); + + # build out msg for each usr + foreach my $hit (@{$res}) { + my $receiver = @{$hit}[3]; + my $msg_id = @{$hit}[0]; + my $subject = @{$hit}[1]; + my $message = @{$hit}[7]; + + # resolve usr -> host where usr is logged in + my $sql = "SELECT * FROM $login_users_tn WHERE (user='$receiver')"; + #&daemon_log("0 DEBUG: $sql", 7); + my $res = $login_users_db->exec_statement($sql); + + # receiver is logged in nowhere + if (not ref(@$res[0]) eq "ARRAY") { next; } + + # receiver ist logged in at a client registered at local server + my $send_succeed = 0; + foreach my $hit (@$res) { + my $receiver_host = @$hit[0]; + my $delivered2host = 0; + &daemon_log("M DEBUG: user '$receiver' is logged in at host '$receiver_host'", 7); + + # Looking for host in know_clients_db + my $sql = "SELECT * FROM $known_clients_tn WHERE (hostname='$receiver_host')"; + my $res = $known_clients_db->exec_statement($sql); + + # Host is known in known_clients_db + if (ref(@$res[0]) eq "ARRAY") { + my $receiver_key = @{@{$res}[0]}[2]; + my %data = ('subject' => $subject, 'message' => $message, 'usr' => $receiver); + my $out_msg = &build_msg("usr_msg", $server_address, $receiver_host, \%data ); + my $error = &send_msg_to_target($out_msg, $receiver_host, $receiver_key, "usr_msg", 0); + if ($error == 0 ) { + $send_succeed++ ; + $delivered2host++ ; + &daemon_log("M DEBUG: send message for user '$receiver' to host '$receiver_host'", 7); + } else { + &daemon_log("M DEBUG: cannot send message for user '$receiver' to host '$receiver_host'", 7); + } + } + + # Message already send, do not need to do anything more, otherwise ... + if ($delivered2host) { next;} + + # ...looking for host in foreign_clients_db + $sql = "SELECT * FROM $foreign_clients_tn WHERE (hostname='$receiver_host')"; + $res = $foreign_clients_db->exec_statement($sql); + + # Host is known in foreign_clients_db + if (ref(@$res[0]) eq "ARRAY") { + my $registration_server = @{@{$res}[0]}[2]; + + # Fetch encryption key for registration server + my $sql = "SELECT * FROM $known_server_tn WHERE (hostname='$registration_server')"; + my $res = $known_server_db->exec_statement($sql); + if (ref(@$res[0]) eq "ARRAY") { + my $registration_server_key = @{@{$res}[0]}[3]; + my %data = ('subject' => $subject, 'message' => $message, 'usr' => $receiver); + my $out_msg = &build_msg("usr_msg", $server_address, $receiver_host, \%data ); + my $error = &send_msg_to_target($out_msg, $registration_server, $registration_server_key, "usr_msg", 0); + if ($error == 0 ) { + $send_succeed++ ; + $delivered2host++ ; + &daemon_log("M DEBUG: send message for user '$receiver' to server '$registration_server'", 7); + } else { + &daemon_log("M ERROR: cannot send message for user '$receiver' to server '$registration_server'", 1); + } + + } else { + &daemon_log("M ERROR: host '$receiver_host' is reported to be ". + "registrated at server '$registration_server', ". + "but no data available in known_server_db ", 1); + } + } + + if (not $delivered2host) { + &daemon_log("M ERROR: unable to send user message to host '$receiver_host'", 1); + } + } + + if ($send_succeed) { + # set outgoing msg at db to deliverd + my $sql = "UPDATE $messaging_tn SET flag='d' WHERE (id='$msg_id' AND direction='out' AND message_to='$receiver')"; + my $res = $messaging_db->exec_statement($sql); + &daemon_log("M INFO: send message for user '$receiver' to logged in hosts", 5); + } else { + &daemon_log("M WARNING: failed to deliver message for user '$receiver'", 3); + } + } + + $kernel->delay_set('watch_for_delivery_messages', $messaging_db_loop_delay); + return; +} + + +sub watch_for_done_messages { + my ($kernel,$heap) = @_[KERNEL, HEAP]; + + my $sql = "SELECT * FROM $messaging_tn WHERE (flag='p' AND direction='in')"; + #&daemon_log("0 DEBUG: $sql", 7); + my $res = $messaging_db->exec_statement($sql); + + foreach my $hit (@{$res}) { + my $msg_id = @{$hit}[0]; + + my $sql = "SELECT * FROM $messaging_tn WHERE (id='$msg_id' AND direction='out' AND (NOT flag='s'))"; + #&daemon_log("0 DEBUG: $sql", 7); + my $res = $messaging_db->exec_statement($sql); + + # not all usr msgs have been seen till now + if ( ref(@$res[0]) eq "ARRAY") { next; } + + $sql = "DELETE FROM $messaging_tn WHERE (id='$msg_id')"; + #&daemon_log("0 DEBUG: $sql", 7); + $res = $messaging_db->exec_statement($sql); + + } + + $kernel->delay_set('watch_for_done_messages', $messaging_db_loop_delay); + return; +} + + +sub watch_for_old_known_clients { + my ($kernel,$heap) = @_[KERNEL, HEAP]; + + my $sql_statement = "SELECT * FROM $known_clients_tn"; + my $res = $known_clients_db->select_dbentry( $sql_statement ); + + my $act_time = int(&get_time()); + + while ( my ($hit_num, $hit) = each %$res) { + my $expired_timestamp = int($hit->{'timestamp'}); + $expired_timestamp =~ /(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/; + my $dt = DateTime->new( year => $1, + month => $2, + day => $3, + hour => $4, + minute => $5, + second => $6, + ); + + $dt->add( seconds => 2 * int($hit->{'keylifetime'}) ); + $expired_timestamp = $dt->ymd('').$dt->hms(''); + if ($act_time > $expired_timestamp) { + my $hostname = $hit->{'hostname'}; + my $del_sql = "DELETE FROM $known_clients_tn WHERE hostname='$hostname'"; + my $del_res = $known_clients_db->exec_statement($del_sql); + + &main::daemon_log("0 INFO: timestamp '".$hit->{'timestamp'}."' of client '$hostname' is expired('$expired_timestamp'), client will be deleted from known_clients_db", 5); + } + + } + + $kernel->delay_set('watch_for_old_known_clients', $job_queue_loop_delay); +} + + +sub watch_for_next_tasks { + my ($kernel,$heap) = @_[KERNEL, HEAP]; + + my $sql = "SELECT * FROM $incoming_tn"; + my $res = $incoming_db->select_dbentry($sql); + + while ( my ($hit_num, $hit) = each %$res) { + my $headertag = $hit->{'headertag'}; + if ($headertag =~ /^answer_(\d+)/) { + # do not start processing, this message is for a still running POE::Wheel + next; + } + my $message_id = $hit->{'id'}; + my $session_id = $hit->{'sessionid'}; + &daemon_log("$session_id DEBUG: start processing for message with incoming id: '$message_id'", 7); + $kernel->yield('next_task', $hit); + + my $sql = "DELETE FROM $incoming_tn WHERE id=$message_id"; + my $res = $incoming_db->exec_statement($sql); + } + + $kernel->delay_set('watch_for_next_tasks', 1); +} + + +sub get_ldap_handle { + my ($session_id) = @_; + my $heap; + my $ldap_handle; + + if (not defined $session_id ) { $session_id = 0 }; + if ($session_id =~ /[^0-9]*/) { $session_id = 0 }; + + if ($session_id == 0) { + daemon_log("$session_id DEBUG: get_ldap_handle invoked without a session_id, create a new ldap_handle", 7); + $ldap_handle = Net::LDAP->new( $ldap_uri ); + if (defined $ldap_handle) { + $ldap_handle->bind($ldap_admin_dn, password => $ldap_admin_password) or daemon_log("$session_id ERROR: Bind to LDAP $ldap_uri as $ldap_admin_dn failed!"); + } else { + daemon_log("$session_id ERROR: creation of a new LDAP handle failed (ldap_uri '$ldap_uri')"); + } + + } else { + my $session_reference = $global_kernel->ID_id_to_session($session_id); + if( defined $session_reference ) { + $heap = $session_reference->get_heap(); + } + + if (not defined $heap) { + daemon_log("$session_id DEBUG: cannot get heap for session_id '$session_id'", 7); + return; + } + + # TODO: This "if" is nonsense, because it doesn't prove that the + # used handle is still valid - or if we've to reconnect... + #if (not exists $heap->{ldap_handle}) { + $ldap_handle = Net::LDAP->new( $ldap_uri ); + $ldap_handle->bind($ldap_admin_dn, password => $ldap_admin_password) or daemon_log("$session_id ERROR: Bind to LDAP $ldap_uri as $ldap_admin_dn failed!"); + $heap->{ldap_handle} = $ldap_handle; + #} + } + return $ldap_handle; +} + + +sub change_fai_state { + my ($st, $targets, $session_id) = @_; + $session_id = 0 if not defined $session_id; + # Set FAI state to localboot + my %mapActions= ( + reboot => '', + update => 'softupdate', + localboot => 'localboot', + reinstall => 'install', + rescan => '', + wake => '', + memcheck => 'memcheck', + sysinfo => 'sysinfo', + install => 'install', + ); + + # Return if this is unknown + if (!exists $mapActions{ $st }){ + daemon_log("$session_id ERROR: unknown action '$st', can not translate ot FAIstate", 1); + return; + } + + my $state= $mapActions{ $st }; + + my $ldap_handle = &get_ldap_handle($session_id); + if( defined($ldap_handle) ) { + + # Build search filter for hosts + my $search= "(&(objectClass=GOhard)"; + foreach (@{$targets}){ + $search.= "(macAddress=$_)"; + } + $search.= ")"; + + # If there's any host inside of the search string, procress them + if (!($search =~ /macAddress/)){ + daemon_log("$session_id ERROR: no macAddress found in filter statement for LDAP search: '$search'", 1); + return; + } + + # Perform search for Unit Tag + my $mesg = $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + attrs => ['dn', 'FAIstate', 'objectClass'], + filter => "$search" + ); + + if ($mesg->count) { + my @entries = $mesg->entries; + if (0 == @entries) { + daemon_log("$session_id ERROR: ldap search failed: ldap_base=$ldap_base, filter=$search", 1); + } + + foreach my $entry (@entries) { + # Only modify entry if it is not set to '$state' + if ($entry->get_value("FAIstate") ne "$state"){ + daemon_log("$session_id INFO: Setting FAIstate to '$state' for ".$entry->dn, 5); + my $result; + my %tmp = map { $_ => 1 } $entry->get_value("objectClass"); + if (exists $tmp{'FAIobject'}){ + if ($state eq ''){ + $result= $ldap_handle->modify($entry->dn, changes => [ delete => [ FAIstate => [] ] ]); + } else { + $result= $ldap_handle->modify($entry->dn, changes => [ replace => [ FAIstate => $state ] ]); + } + } elsif ($state ne ''){ + $result= $ldap_handle->modify($entry->dn, changes => [ add => [ objectClass => 'FAIobject' ], add => [ FAIstate => $state ] ]); + } + + # Errors? + if ($result->code){ + daemon_log("$session_id Error: Setting FAIstate to '$state' for ".$entry->dn. "failed: ".$result->error, 1); + } + } else { + daemon_log("$session_id DEBUG FAIstate at host '".$entry->dn."' already at state '$st'", 7); + } + } + } else { + daemon_log("$session_id ERROR: LDAP search failed: ldap_base=$ldap_base, filter=$search", 1); + } + + # if no ldap handle defined + } else { + daemon_log("$session_id ERROR: no LDAP handle defined for update FAIstate", 1); + } + + return; +} + + +sub change_goto_state { + my ($st, $targets, $session_id) = @_; + $session_id = 0 if not defined $session_id; + + # Switch on or off? + my $state= $st eq 'active' ? 'active': 'locked'; + + my $ldap_handle = &get_ldap_handle($session_id); + if( defined($ldap_handle) ) { + + # Build search filter for hosts + my $search= "(&(objectClass=GOhard)"; + foreach (@{$targets}){ + $search.= "(macAddress=$_)"; + } + $search.= ")"; + + # If there's any host inside of the search string, procress them + if (!($search =~ /macAddress/)){ + return; + } + + # Perform search for Unit Tag + my $mesg = $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + attrs => ['dn', 'gotoMode'], + filter => "$search" + ); + + if ($mesg->count) { + my @entries = $mesg->entries; + foreach my $entry (@entries) { + + # Only modify entry if it is not set to '$state' + if ($entry->get_value("gotoMode") ne $state){ + + daemon_log("$session_id INFO: Setting gotoMode to '$state' for ".$entry->dn, 5); + my $result; + $result= $ldap_handle->modify($entry->dn, changes => [replace => [ gotoMode => $state ] ]); + + # Errors? + if ($result->code){ + &daemon_log("$session_id Error: Setting gotoMode to '$state' for ".$entry->dn. "failed: ".$result->error, 1); + } + + } + } + } else { + daemon_log("$session_id ERROR: LDAP search failed in function change_goto_state: ldap_base=$ldap_base, filter=$search", 1); + } + + } +} + + +sub run_recreate_packages_db { + my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP]; + my $session_id = $session->ID; + &main::daemon_log("$session_id INFO: Recreating FAI Packages DB ('$fai_release_tn', '$fai_server_tn', '$packages_list_tn')", 5); + $kernel->yield('create_fai_release_db', $fai_release_tn); + $kernel->yield('create_fai_server_db', $fai_server_tn); + return; +} + + +sub run_create_fai_server_db { + my ($kernel, $session, $heap, $table_name) = @_[KERNEL, SESSION, HEAP, ARG0]; + my $session_id = $session->ID; + my $task = POE::Wheel::Run->new( + Program => sub { &create_fai_server_db($table_name,$kernel, undef, $session_id) }, + StdoutEvent => "session_run_result", + StderrEvent => "session_run_debug", + CloseEvent => "session_run_done", + ); + + $heap->{task}->{ $task->ID } = $task; + return; +} + + +sub create_fai_server_db { + my ($table_name, $kernel, $dont_create_packages_list, $session_id) = @_; + my $result; + + if (not defined $session_id) { $session_id = 0; } + my $ldap_handle = &get_ldap_handle(); + if(defined($ldap_handle)) { + daemon_log("$session_id INFO: create_fai_server_db: start", 5); + my $mesg= $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + attrs => ['FAIrepository', 'gosaUnitTag'], + filter => "(&(FAIrepository=*)(objectClass=FAIrepositoryServer))", + ); + if($mesg->{'resultCode'} == 0 && + $mesg->count != 0) { + foreach my $entry (@{$mesg->{entries}}) { + if($entry->exists('FAIrepository')) { + # Add an entry for each Repository configured for server + foreach my $repo(@{$entry->get_value('FAIrepository', asref => 1)}) { + my($tmp_url,$tmp_server,$tmp_release,$tmp_sections) = split(/\|/, $repo); + my $tmp_tag= $entry->get_value('gosaUnitTag') || ""; + $result= $fai_server_db->add_dbentry( { + table => $table_name, + primkey => ['server', 'fai_release', 'tag'], + server => $tmp_url, + fai_release => $tmp_release, + sections => $tmp_sections, + tag => (length($tmp_tag)>0)?$tmp_tag:"", + } ); + } + } + } + } + daemon_log("$session_id INFO: create_fai_server_db: finished", 5); + + # TODO: Find a way to post the 'create_packages_list_db' event + if(not defined($dont_create_packages_list)) { + &create_packages_list_db(undef, undef, $session_id); + } + } + + $ldap_handle->disconnect; + return $result; +} + + +sub run_create_fai_release_db { + my ($session, $heap, $table_name) = @_[SESSION, HEAP, ARG0]; + my $session_id = $session->ID; + my $task = POE::Wheel::Run->new( + Program => sub { &create_fai_release_db($table_name, $session_id) }, + StdoutEvent => "session_run_result", + StderrEvent => "session_run_debug", + CloseEvent => "session_run_done", + ); + + $heap->{task}->{ $task->ID } = $task; + return; +} + + +sub create_fai_release_db { + my ($table_name, $session_id) = @_; + my $result; + + # used for logging + if (not defined $session_id) { $session_id = 0; } + + my $ldap_handle = &get_ldap_handle(); + if(defined($ldap_handle)) { + daemon_log("$session_id INFO: create_fai_release_db: start",5); + my $mesg= $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + attrs => [], + filter => "(&(objectClass=organizationalUnit)(ou=fai))", + ); + if(($mesg->code == 0) && ($mesg->count != 0)) + { + daemon_log("$session_id DEBUG: create_fai_release_db: count " . $mesg->count,8); + + # Walk through all possible FAI container ou's + my @sql_list; + my $timestamp= &get_time(); + foreach my $ou (@{$mesg->{entries}}) { + my $tmp_classes= resolve_fai_classes($ou->dn, $ldap_handle, $session_id); + if(defined($tmp_classes) && ref($tmp_classes) eq 'HASH') { + my @tmp_array=get_fai_release_entries($tmp_classes); + if(@tmp_array) { + foreach my $entry (@tmp_array) { + if(defined($entry) && ref($entry) eq 'HASH') { + my $sql= + "INSERT INTO $table_name " + ."(timestamp, fai_release, class, type, state) VALUES (" + .$timestamp."," + ."'".$entry->{'release'}."'," + ."'".$entry->{'class'}."'," + ."'".$entry->{'type'}."'," + ."'".$entry->{'state'}."')"; + push @sql_list, $sql; + } + } + } + } + } + + daemon_log("$session_id DEBUG: create_fai_release_db: Inserting ".scalar @sql_list." entries to DB",8); + if(@sql_list) { + unshift @sql_list, "VACUUM"; + unshift @sql_list, "DELETE FROM $table_name"; + $fai_release_db->exec_statementlist(\@sql_list); + } + daemon_log("$session_id DEBUG: create_fai_release_db: Done with inserting",7); + } else { + daemon_log("$session_id INFO: create_fai_release_db: error: " . $mesg->code, 5); + } + daemon_log("$session_id INFO: create_fai_release_db: finished",5); + } + $ldap_handle->disconnect; + return $result; +} + +sub get_fai_types { + my $tmp_classes = shift || return undef; + my @result; + + foreach my $type(keys %{$tmp_classes}) { + if(defined($tmp_classes->{$type}[0]) && (!($tmp_classes->{$type}[0] =~ /^.*?removed.*?$/))) { + my $entry = { + type => $type, + state => $tmp_classes->{$type}[0], + }; + push @result, $entry; + } + } + + return @result; +} + +sub get_fai_state { + my $result = ""; + my $tmp_classes = shift || return $result; + + foreach my $type(keys %{$tmp_classes}) { + if(defined($tmp_classes->{$type}[0])) { + $result = $tmp_classes->{$type}[0]; + + # State is equal for all types in class + last; + } + } + + return $result; +} + +sub resolve_fai_classes { + my ($fai_base, $ldap_handle, $session_id) = @_; + if (not defined $session_id) { $session_id = 0; } + my $result; + my @possible_fai_classes= ("FAIscript", "FAIhook", "FAIpartitionTable", "FAItemplate", "FAIvariable", "FAIprofile", "FAIpackageList"); + my $fai_filter= "(|(&(objectClass=FAIclass)(|(objectClass=".join(")(objectClass=", @possible_fai_classes).")))(objectClass=FAIbranch))"; + my $fai_classes; + + daemon_log("$session_id DEBUG: Searching for FAI entries in base $fai_base",7); + my $mesg= $ldap_handle->search( + base => $fai_base, + scope => 'sub', + attrs => ['cn','objectClass','FAIstate'], + filter => $fai_filter, + ); + daemon_log("$session_id DEBUG: Found ".$mesg->count()." FAI entries",7); + + if($mesg->{'resultCode'} == 0 && + $mesg->count != 0) { + foreach my $entry (@{$mesg->{entries}}) { + if($entry->exists('cn')) { + my $tmp_dn= $entry->dn(); + $tmp_dn= substr( $tmp_dn, 0, length($tmp_dn) + - length($fai_base) - 1 ); + + # Skip classname and ou dn parts for class + my $tmp_release = ($1) if $tmp_dn =~ /^[^,]+,[^,]+,(.*?)$/; + + # Skip classes without releases + if((!defined($tmp_release)) || length($tmp_release)==0) { + next; + } + + my $tmp_cn= $entry->get_value('cn'); + my $tmp_state= $entry->get_value('FAIstate'); + + my $tmp_type; + # Get FAI type + for my $oclass(@{$entry->get_value('objectClass', asref => 1)}) { + if(grep $_ eq $oclass, @possible_fai_classes) { + $tmp_type= $oclass; + last; + } + } + + if($tmp_release =~ /^.*?,.*?$/ && (!($tmp_release =~ /^.*?\\,.*?$/))) { + # A Subrelease + my @sub_releases = split(/,/, $tmp_release); + + # Walk through subreleases and build hash tree + my $hash; + while(my $tmp_sub_release = pop @sub_releases) { + $hash .= "\{'$tmp_sub_release'\}->"; + } + eval('push @{$fai_classes->'.$hash.'{$tmp_cn}->{$tmp_type}}, (defined($tmp_state) && length($tmp_state)>0)?$tmp_state:"";'); + } else { + # A branch, no subrelease + push @{$fai_classes->{$tmp_release}->{$tmp_cn}->{$tmp_type}}, (defined($tmp_state) && length($tmp_state)>0)?$tmp_state:""; + } + } elsif (!$entry->exists('cn')) { + my $tmp_dn= $entry->dn(); + $tmp_dn= substr( $tmp_dn, 0, length($tmp_dn) + - length($fai_base) - 1 ); + my $tmp_release = ($1) if $tmp_dn =~ /^(.*?)$/; + + # Skip classes without releases + if((!defined($tmp_release)) || length($tmp_release)==0) { + next; + } + + if($tmp_release =~ /^.*?,.*?$/ && (!($tmp_release =~ /^.*?\\,.*?$/))) { + # A Subrelease + my @sub_releases= split(/,/, $tmp_release); + + # Walk through subreleases and build hash tree + my $hash; + while(my $tmp_sub_release = pop @sub_releases) { + $hash .= "\{'$tmp_sub_release'\}->"; + } + # Remove the last two characters + chop($hash); + chop($hash); + + eval('$fai_classes->'.$hash.'= {}'); + } else { + # A branch, no subrelease + if(!exists($fai_classes->{$tmp_release})) { + $fai_classes->{$tmp_release} = {}; + } + } + } + } + + # The hash is complete, now we can honor the copy-on-write based missing entries + foreach my $release (keys %$fai_classes) { + $result->{$release}= deep_copy(apply_fai_inheritance($fai_classes->{$release})); + } + } + return $result; +} + +sub apply_fai_inheritance { + my $fai_classes = shift || return {}; + my $tmp_classes; + + # Get the classes from the branch + foreach my $class (keys %{$fai_classes}) { + # Skip subreleases + if($class =~ /^ou=.*$/) { + next; + } else { + $tmp_classes->{$class}= deep_copy($fai_classes->{$class}); + } + } + + # Apply to each subrelease + foreach my $subrelease (keys %{$fai_classes}) { + if($subrelease =~ /ou=/) { + foreach my $tmp_class (keys %{$tmp_classes}) { + if(!exists($fai_classes->{$subrelease}->{$tmp_class})) { + $fai_classes->{$subrelease}->{$tmp_class} = + deep_copy($tmp_classes->{$tmp_class}); + } else { + foreach my $type (keys %{$tmp_classes->{$tmp_class}}) { + if(!exists($fai_classes->{$subrelease}->{$tmp_class}->{$type})) { + $fai_classes->{$subrelease}->{$tmp_class}->{$type}= + deep_copy($tmp_classes->{$tmp_class}->{$type}); + } + } + } + } + } + } + + # Find subreleases in deeper levels + foreach my $subrelease (keys %{$fai_classes}) { + if($subrelease =~ /ou=/) { + foreach my $subsubrelease (keys %{$fai_classes->{$subrelease}}) { + if($subsubrelease =~ /ou=/) { + apply_fai_inheritance($fai_classes->{$subrelease}); + } + } + } + } + + return $fai_classes; +} + +sub get_fai_release_entries { + my $tmp_classes = shift || return; + my $parent = shift || ""; + my @result = shift || (); + + foreach my $entry (keys %{$tmp_classes}) { + if(defined($entry)) { + if($entry =~ /^ou=.*$/) { + my $release_name = $entry; + $release_name =~ s/ou=//g; + if(length($parent)>0) { + $release_name = $parent."/".$release_name; + } + my @bufentries = get_fai_release_entries($tmp_classes->{$entry}, $release_name, @result); + foreach my $bufentry(@bufentries) { + push @result, $bufentry; + } + } else { + my @types = get_fai_types($tmp_classes->{$entry}); + foreach my $type (@types) { + push @result, + { + 'class' => $entry, + 'type' => $type->{'type'}, + 'release' => $parent, + 'state' => $type->{'state'}, + }; + } + } + } + } + + return @result; +} + +sub deep_copy { + my $this = shift; + if (not ref $this) { + $this; + } elsif (ref $this eq "ARRAY") { + [map deep_copy($_), @$this]; + } elsif (ref $this eq "HASH") { + +{map { $_ => deep_copy($this->{$_}) } keys %$this}; + } else { die "what type is $_?" } +} + + +sub session_run_result { + my ($kernel, $heap, $client_answer) = @_[KERNEL, HEAP, ARG0]; + $kernel->sig(CHLD => "child_reap"); +} + +sub session_run_debug { + my $result = $_[ARG0]; + print STDERR "$result\n"; +} + +sub session_run_done { + my ( $kernel, $heap, $task_id ) = @_[ KERNEL, HEAP, ARG0 ]; + delete $heap->{task}->{$task_id}; +} + + +sub create_sources_list { + my $session_id = shift; + my $ldap_handle = &main::get_ldap_handle; + my $result="/tmp/gosa_si_tmp_sources_list"; + + # Remove old file + if(stat($result)) { + unlink($result); + &main::daemon_log("$session_id DEBUG: remove an old version of '$result'", 7); + } + + my $fh; + open($fh, ">$result"); + if (not defined $fh) { + &main::daemon_log("$session_id DEBUG: cannot open '$result' for writing", 7); + return undef; + } + if(defined($main::ldap_server_dn) and length($main::ldap_server_dn) > 0) { + my $mesg=$ldap_handle->search( + base => $main::ldap_server_dn, + scope => 'base', + attrs => 'FAIrepository', + filter => 'objectClass=FAIrepositoryServer' + ); + if($mesg->count) { + foreach my $entry(@{$mesg->{'entries'}}) { + foreach my $value(@{$entry->get_value('FAIrepository', asref => 1)}) { + my ($server, $tag, $release, $sections)= split /\|/, $value; + my $line = "deb $server $release"; + $sections =~ s/,/ /g; + $line.= " $sections"; + print $fh $line."\n"; + } + } + } + } else { + if (defined $main::ldap_server_dn){ + &main::daemon_log("$session_id ERROR: something wrong with ldap_server_dn '$main::ldap_server_dn', abort create_sources_list", 1); + } else { + &main::daemon_log("$session_id ERROR: no ldap_server_dn found, abort create_sources_list", 1); + } + } + close($fh); + + return $result; +} + + +sub run_create_packages_list_db { + my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP]; + my $session_id = $session->ID; + + my $task = POE::Wheel::Run->new( + Priority => +20, + Program => sub {&create_packages_list_db(undef, undef, $session_id)}, + StdoutEvent => "session_run_result", + StderrEvent => "session_run_debug", + CloseEvent => "session_run_done", + ); + $heap->{task}->{ $task->ID } = $task; +} + + +sub create_packages_list_db { + my ($ldap_handle, $sources_file, $session_id) = @_; + + # it should not be possible to trigger a recreation of packages_list_db + # while packages_list_db is under construction, so set flag packages_list_under_construction + # which is tested befor recreation can be started + if (-r $packages_list_under_construction) { + daemon_log("$session_id WARNING: packages_list_db is right now under construction, please wait until this process is finished", 3); + return; + } else { + daemon_log("$session_id INFO: create_packages_list_db: start", 5); + # set packages_list_under_construction to true + system("touch $packages_list_under_construction"); + @packages_list_statements=(); + } + + if (not defined $session_id) { $session_id = 0; } + if (not defined $ldap_handle) { + $ldap_handle= &get_ldap_handle(); + + if (not defined $ldap_handle) { + daemon_log("$session_id ERROR: no ldap_handle available to create_packages_list_db", 1); + unlink($packages_list_under_construction); + return; + } + } + if (not defined $sources_file) { + &main::daemon_log("$session_id INFO: no sources_file given for creating packages list so trigger creation of it", 5); + $sources_file = &create_sources_list($session_id); + } + + if (not defined $sources_file) { + &main::daemon_log("$session_id ERROR: no sources_file given under '$sources_file', skip create_packages_list_db", 1); + unlink($packages_list_under_construction); + return; + } + + my $line; + + open(CONFIG, "<$sources_file") or do { + daemon_log( "$session_id ERROR: create_packages_list_db: Failed to open '$sources_file'", 1); + unlink($packages_list_under_construction); + return; + }; + + # Read lines + while ($line = ){ + # Unify + chop($line); + $line =~ s/^\s+//; + $line =~ s/^\s+/ /; + + # Strip comments + $line =~ s/#.*$//g; + + # Skip empty lines + if ($line =~ /^\s*$/){ + next; + } + + # Interpret deb line + if ($line =~ /^deb [^\s]+\s[^\s]+\s[^\s]+/){ + my( $baseurl, $dist, $sections ) = ($line =~ /^deb\s([^\s]+)\s+([^\s]+)\s+(.*)$/); + my $section; + foreach $section (split(' ', $sections)){ + &parse_package_info( $baseurl, $dist, $section, $session_id ); + } + } + } + + close (CONFIG); + + if(keys(%repo_dirs)) { + find(\&cleanup_and_extract, keys( %repo_dirs )); + &main::strip_packages_list_statements(); + $packages_list_db->exec_statementlist(\@packages_list_statements); + } + unlink($packages_list_under_construction); + daemon_log("$session_id INFO: create_packages_list_db: finished", 5); + return; +} + +# This function should do some intensive task to minimize the db-traffic +sub strip_packages_list_statements { + my @existing_entries= @{$packages_list_db->exec_statement("SELECT * FROM $main::packages_list_tn")}; + my @new_statement_list=(); + my $hash; + my $insert_hash; + my $update_hash; + my $delete_hash; + my $known_packages_hash; + my $local_timestamp=get_time(); + + foreach my $existing_entry (@existing_entries) { + $hash->{@{$existing_entry}[0]}->{@{$existing_entry}[1]}->{@{$existing_entry}[2]}= $existing_entry; + } + + foreach my $statement (@packages_list_statements) { + if($statement =~ /^INSERT/i) { + # Assign the values from the insert statement + my ($distribution,$package,$version,$section,$description,$template,$timestamp) = ($1,$2,$3,$4,$5,$6,$7) if $statement =~ + /^INSERT\s+?INTO\s+?$main::packages_list_tn\s+?VALUES\s*?\('(.*?)',\s*?'(.*?)',\s*?'(.*?)',\s*?'(.*?)',\s*?'(.*?)',\s*?'(.*?)',\s*?'(.*?)'\s*?\)$/si; + if(exists($hash->{$distribution}->{$package}->{$version})) { + # If section or description has changed, update the DB + if( + (! (@{$hash->{$distribution}->{$package}->{$version}}[3] eq $section)) or + (! (@{$hash->{$distribution}->{$package}->{$version}}[4] eq $description)) + ) { + @{$update_hash->{$distribution}->{$package}->{$version}} = ($distribution,$package,$version,$section,$description,undef); + } else { + # package is already present in database. cache this knowledge for later use + @{$known_packages_hash->{$distribution}->{$package}->{$version}} = ($distribution,$package,$version,$section,$description,$template); + } + } else { + # Insert a non-existing entry to db + @{$insert_hash->{$distribution}->{$package}->{$version}} = ($distribution,$package,$version,$section,$description,$template); + } + } elsif ($statement =~ /^UPDATE/i) { + my ($template,$package,$version) = ($1,$2,$3) if $statement =~ + /^update\s+?$main::packages_list_tn\s+?set\s+?template\s*?=\s*?'(.*?)'\s+?where\s+?package\s*?=\s*?'(.*?)'\s+?and\s+?version\s*?=\s*?'(.*?)'\s*?;$/si; + foreach my $distribution (keys %{$hash}) { + if(exists($insert_hash->{$distribution}->{$package}->{$version})) { + # update the insertion hash to execute only one query per package (insert instead insert+update) + @{$insert_hash->{$distribution}->{$package}->{$version}}[5]= $template; + } elsif(exists($hash->{$distribution}->{$package}->{$version})) { + if( ! (@{$hash->{$distribution}->{$package}->{$version}}[5] eq $template)) { + my $section; + my $description; + if(defined(@{$update_hash->{$distribution}->{$package}->{$version}}[3]) and + length(@{$update_hash->{$distribution}->{$package}->{$version}}[3]) > 0 ) { + $section= @{$update_hash->{$distribution}->{$package}->{$version}}[3]; + } + if(defined(@{$update_hash->{$distribution}->{$package}->{$version}}[4])) { + $description= @{$update_hash->{$distribution}->{$package}->{$version}}[4]; + } + @{$update_hash->{$distribution}->{$package}->{$version}} = ($distribution,$package,$version,$section,$description,$template); + } + } + } + } + } + + # Check for orphaned entries + foreach my $existing_entry (@existing_entries) { + my $distribution= @{$existing_entry}[0]; + my $package= @{$existing_entry}[1]; + my $version= @{$existing_entry}[2]; + my $section= @{$existing_entry}[3]; + + if( + exists($insert_hash->{$distribution}->{$package}->{$version}) || + exists($update_hash->{$distribution}->{$package}->{$version}) || + exists($known_packages_hash->{$distribution}->{$package}->{$version}) + ) { + next; + } else { + # Insert entry to delete hash + @{$delete_hash->{$distribution}->{$package}->{$version}} = ($distribution,$package,$version,$section); + } + } + + # unroll the insert hash + foreach my $distribution (keys %{$insert_hash}) { + foreach my $package (keys %{$insert_hash->{$distribution}}) { + foreach my $version (keys %{$insert_hash->{$distribution}->{$package}}) { + push @new_statement_list, "INSERT INTO $main::packages_list_tn VALUES ('$distribution','$package','$version'," + ."'@{$insert_hash->{$distribution}->{$package}->{$version}}[3]'," + ."'@{$insert_hash->{$distribution}->{$package}->{$version}}[4]'," + ."'@{$insert_hash->{$distribution}->{$package}->{$version}}[5]'," + ."'$local_timestamp')"; + } + } + } + + # unroll the update hash + foreach my $distribution (keys %{$update_hash}) { + foreach my $package (keys %{$update_hash->{$distribution}}) { + foreach my $version (keys %{$update_hash->{$distribution}->{$package}}) { + my $set = ""; + if(defined(@{$update_hash->{$distribution}->{$package}->{$version}}[3])) { + $set .= "section = '@{$update_hash->{$distribution}->{$package}->{$version}}[3]', "; + } + if(defined(@{$update_hash->{$distribution}->{$package}->{$version}}[4])) { + $set .= "description = '@{$update_hash->{$distribution}->{$package}->{$version}}[4]', "; + } + if(defined(@{$update_hash->{$distribution}->{$package}->{$version}}[5])) { + $set .= "template = '@{$update_hash->{$distribution}->{$package}->{$version}}[5]', "; + } + if(defined($set) and length($set) > 0) { + $set .= "timestamp = '$local_timestamp'"; + } else { + next; + } + push @new_statement_list, + "UPDATE $main::packages_list_tn SET $set WHERE" + ." distribution = '$distribution'" + ." AND package = '$package'" + ." AND version = '$version'"; + } + } + } + + # unroll the delete hash + foreach my $distribution (keys %{$delete_hash}) { + foreach my $package (keys %{$delete_hash->{$distribution}}) { + foreach my $version (keys %{$delete_hash->{$distribution}->{$package}}) { + my $section = @{$delete_hash->{$distribution}->{$package}->{$version}}[3]; + push @new_statement_list, "DELETE FROM $main::packages_list_tn WHERE distribution='$distribution' AND package='$package' AND version='$version' AND section='$section'"; + } + } + } + + unshift(@new_statement_list, "VACUUM"); + + @packages_list_statements = @new_statement_list; +} + + +sub parse_package_info { + my ($baseurl, $dist, $section, $session_id)= @_; + my ($package); + if (not defined $session_id) { $session_id = 0; } + my ($path) = ($baseurl =~ m%://[^/]*(.*)$%); + $repo_dirs{ "${repo_path}/pool" } = 1; + + foreach $package ("Packages.gz"){ + daemon_log("$session_id DEBUG: create_packages_list: fetch $baseurl, $dist, $section", 7); + get_package( "$baseurl/dists/$dist/$section/binary-$arch/$package", "$outdir/$dist/$section", $session_id ); + parse_package( "$outdir/$dist/$section", $dist, $path, $session_id ); + } + +} + + +sub get_package { + my ($url, $dest, $session_id)= @_; + if (not defined $session_id) { $session_id = 0; } + + my $tpath = dirname($dest); + -d "$tpath" || mkpath "$tpath"; + + # This is ugly, but I've no time to take a look at "how it works in perl" + if(0 == system("wget '$url' -O '$dest' 2>/dev/null") ) { + system("gunzip -cd '$dest' > '$dest.in'"); + daemon_log("$session_id DEBUG: run command: gunzip -cd '$dest' > '$dest.in'", 5); + unlink($dest); + daemon_log("$session_id DEBUG: delete file '$dest'", 5); + } else { + daemon_log("$session_id ERROR: create_packages_list_db: get_packages: fetching '$url' into '$dest' failed!", 1); + } + return 0; +} + + +sub parse_package { + my ($path, $dist, $srv_path, $session_id)= @_; + if (not defined $session_id) { $session_id = 0;} + my ($package, $version, $section, $description); + my $PACKAGES; + my $timestamp = &get_time(); + + if(not stat("$path.in")) { + daemon_log("$session_id ERROR: create_packages_list: parse_package: file '$path.in' is not readable",1); + return; + } + + open($PACKAGES, "<$path.in"); + if(not defined($PACKAGES)) { + daemon_log("$session_id ERROR: create_packages_list_db: parse_package: cannot open '$path.in'",1); + return; + } + + # Read lines + while (<$PACKAGES>){ + my $line = $_; + # Unify + chop($line); + + # Use empty lines as a trigger + if ($line =~ /^\s*$/){ + my $sql = "INSERT INTO packages_list VALUES ('$dist', '$package', '$version', '$section', '$description', '', '$timestamp')"; + push(@packages_list_statements, $sql); + $package = "none"; + $version = "none"; + $section = "none"; + $description = "none"; + next; + } + + # Trigger for package name + if ($line =~ /^Package:\s/){ + ($package)= ($line =~ /^Package: (.*)$/); + next; + } + + # Trigger for version + if ($line =~ /^Version:\s/){ + ($version)= ($line =~ /^Version: (.*)$/); + next; + } + + # Trigger for description + if ($line =~ /^Description:\s/){ + ($description)= &encode_base64(($line =~ /^Description: (.*)$/)); + next; + } + + # Trigger for section + if ($line =~ /^Section:\s/){ + ($section)= ($line =~ /^Section: (.*)$/); + next; + } + + # Trigger for filename + if ($line =~ /^Filename:\s/){ + my ($filename) = ($line =~ /^Filename: (.*)$/); + store_fileinfo( $package, $filename, $dist, $srv_path, $version, $repo_path ); + next; + } + } + + close( $PACKAGES ); + unlink( "$path.in" ); +} + + +sub store_fileinfo { + my( $package, $file, $dist, $path, $vers, $srvdir) = @_; + + my %fileinfo = ( + 'package' => $package, + 'dist' => $dist, + 'version' => $vers, + ); + + $repo_files{ "${srvdir}/$file" } = \%fileinfo; +} + + +sub cleanup_and_extract { + my $fileinfo = $repo_files{ $File::Find::name }; + + if( defined $fileinfo ) { + my $dir = "$outdir/$fileinfo->{ 'dist' }/debconf.d"; + my $sql; + my $package = $fileinfo->{ 'package' }; + my $newver = $fileinfo->{ 'version' }; + + mkpath($dir); + system( "dpkg -e '$File::Find::name' '$dir/DEBIAN'" ); + + if( -f "$dir/DEBIAN/templates" ) { + + daemon_log("0 DEBUG: Found debconf templates in '$package' - $newver", 7); + + my $tmpl= ""; { + local $/=undef; + open FILE, "$dir/DEBIAN/templates"; + $tmpl = &encode_base64(); + close FILE; + } + rmtree("$dir/DEBIAN/templates"); + + $sql= "update $main::packages_list_tn set template = '$tmpl' where package = '$package' and version = '$newver';"; + push @packages_list_statements, $sql; + } + } + + return; +} + + +sub register_at_foreign_servers { + my ($kernel) = $_[KERNEL]; + + # hole alle bekannten server aus known_server_db + my $server_sql = "SELECT * FROM $known_server_tn"; + my $server_res = $known_server_db->exec_statement($server_sql); + + # no entries in known_server_db + if (not ref(@$server_res[0]) eq "ARRAY") { + # TODO + } + + # detect already connected clients + my $client_sql = "SELECT * FROM $known_clients_tn"; + my $client_res = $known_clients_db->exec_statement($client_sql); + + # send my server details to all other gosa-si-server within the network + foreach my $hit (@$server_res) { + my $hostname = @$hit[0]; + my $hostkey = &create_passwd; + + # add already connected clients to registration message + my $myhash = &create_xml_hash('new_server', $server_address, $hostname); + &add_content2xml_hash($myhash, 'key', $hostkey); + map(&add_content2xml_hash($myhash, 'client', @{$_}[0].",".@{$_}[4]), @$client_res); + + # add locally loaded gosa-si modules to registration message + my $loaded_modules = {}; + while (my ($package, $pck_info) = each %$known_modules) { + next if ((!defined(@$pck_info[2])) || (!(ref (@$pck_info[2]) eq 'HASH'))); + foreach my $act_module (keys(%{@$pck_info[2]})) { + $loaded_modules->{$act_module} = ""; + } + } + + map(&add_content2xml_hash($myhash, "loaded_modules", $_), keys(%$loaded_modules)); + + # add macaddress to registration message + my ($host_ip, $host_port) = split(/:/, $hostname); + my $local_ip = &get_local_ip_for_remote_ip($host_ip); + my $network_interface= &get_interface_for_ip($local_ip); + my $host_mac = &get_mac_for_interface($network_interface); + &add_content2xml_hash($myhash, 'macaddress', $host_mac); + + # build registration message and send it + my $foreign_server_msg = &create_xml_string($myhash); + my $error = &send_msg_to_target($foreign_server_msg, $hostname, $ServerPackages_key, "new_server", 0); + } + + $kernel->delay_set("register_at_foreign_servers", $foreign_servers_register_delay); + return; +} + + +#==== MAIN = main ============================================================== +# parse commandline options +Getopt::Long::Configure( "bundling" ); +GetOptions("h|help" => \&usage, + "c|config=s" => \$cfg_file, + "f|foreground" => \$foreground, + "v|verbose+" => \$verbose, + "no-arp+" => \$no_arp, + ); + +# read and set config parameters +&check_cmdline_param ; +&read_configfile($cfg_file, %cfg_defaults); +&check_pid; + +$SIG{CHLD} = 'IGNORE'; + +# forward error messages to logfile +if( ! $foreground ) { + open( STDIN, '+>/dev/null' ); + open( STDOUT, '+>&STDIN' ); + open( STDERR, '+>&STDIN' ); +} + +# Just fork, if we are not in foreground mode +if( ! $foreground ) { + chdir '/' or die "Can't chdir to /: $!"; + $pid = fork; + setsid or die "Can't start a new session: $!"; + umask 0; +} else { + $pid = $$; +} + +# Do something useful - put our PID into the pid_file +if( 0 != $pid ) { + open( LOCK_FILE, ">$pid_file" ); + print LOCK_FILE "$pid\n"; + close( LOCK_FILE ); + if( !$foreground ) { + exit( 0 ) + }; +} + +# parse head url and revision from svn +my $server_status_hash = { 'developmental'=>'revision', 'stable'=>'release'}; +$server_version =~ /^\$HeadURL: (\S+) \$:\$Rev: (\d+) \$$/; +$server_headURL = defined $1 ? $1 : 'unknown' ; +$server_revision = defined $2 ? $2 : 'unknown' ; +if ($server_headURL =~ /\/tag\// || + $server_headURL =~ /\/branches\// ) { + $server_status = "stable"; +} else { + $server_status = "developmental" ; +} + +# Prepare log file +$root_uid = getpwnam('root'); +$adm_gid = getgrnam('adm'); +chmod(0640, $log_file); +chown($root_uid, $adm_gid, $log_file); +chown($root_uid, $adm_gid, "/var/lib/gosa-si"); + +daemon_log(" ", 1); +daemon_log("$0 started!", 1); +daemon_log("status: $server_status", 1); +daemon_log($server_status_hash->{$server_status}.": $server_revision", 1); + +{ + no strict "refs"; + + if ($db_module eq "DBmysql") { + # connect to incoming_db + $incoming_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + # connect to gosa-si job queue + $job_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + # connect to known_clients_db + $known_clients_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + # connect to foreign_clients_db + $foreign_clients_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + # connect to known_server_db + $known_server_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + # connect to login_usr_db + $login_users_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + # connect to fai_server_db + $fai_server_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + # connect to fai_release_db + $fai_release_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + # connect to packages_list_db + $packages_list_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + # connect to messaging_db + $messaging_db = ("GOSA::".$db_module)->new($main::mysql_database, $main::mysql_host, $main::mysql_username, $main::mysql_password); + + } elsif ($db_module eq "DBsqlite") { + # connect to incoming_db + unlink($incoming_file_name); + $incoming_db = GOSA::DBsqlite->new($incoming_file_name); + + # connect to gosa-si job queue + unlink($job_queue_file_name); ## just for debugging + $job_db = GOSA::DBsqlite->new($job_queue_file_name); + chmod(0660, $job_queue_file_name); + chown($root_uid, $adm_gid, $job_queue_file_name); + + # connect to known_clients_db + unlink($known_clients_file_name); ## just for debugging + $known_clients_db = GOSA::DBsqlite->new($known_clients_file_name); + chmod(0660, $known_clients_file_name); + chown($root_uid, $adm_gid, $known_clients_file_name); + + # connect to foreign_clients_db + unlink($foreign_clients_file_name); + $foreign_clients_db = GOSA::DBsqlite->new($foreign_clients_file_name); + chmod(0660, $foreign_clients_file_name); + chown($root_uid, $adm_gid, $foreign_clients_file_name); + + # connect to known_server_db + unlink($known_server_file_name); + $known_server_db = GOSA::DBsqlite->new($known_server_file_name); + chmod(0660, $known_server_file_name); + chown($root_uid, $adm_gid, $known_server_file_name); + + # connect to login_usr_db + unlink($login_users_file_name); + $login_users_db = GOSA::DBsqlite->new($login_users_file_name); + chmod(0660, $login_users_file_name); + chown($root_uid, $adm_gid, $login_users_file_name); + + # connect to fai_server_db + unlink($fai_server_file_name); + $fai_server_db = GOSA::DBsqlite->new($fai_server_file_name); + chmod(0660, $fai_server_file_name); + chown($root_uid, $adm_gid, $fai_server_file_name); + + # connect to fai_release_db + unlink($fai_release_file_name); + $fai_release_db = GOSA::DBsqlite->new($fai_release_file_name); + chmod(0660, $fai_release_file_name); + chown($root_uid, $adm_gid, $fai_release_file_name); + + # connect to packages_list_db + #unlink($packages_list_file_name); + unlink($packages_list_under_construction); + $packages_list_db = GOSA::DBsqlite->new($packages_list_file_name); + chmod(0660, $packages_list_file_name); + chown($root_uid, $adm_gid, $packages_list_file_name); + + # connect to messaging_db + unlink($messaging_file_name); + $messaging_db = GOSA::DBsqlite->new($messaging_file_name); + chmod(0660, $messaging_file_name); + chown($root_uid, $adm_gid, $messaging_file_name); + } +} + +# Creating tables +$messaging_db->create_table($messaging_tn, \@messaging_col_names); +$packages_list_db->create_table($packages_list_tn, \@packages_list_col_names); +$fai_release_db->create_table($fai_release_tn, \@fai_release_col_names); +$fai_server_db->create_table($fai_server_tn, \@fai_server_col_names); +$login_users_db->create_table($login_users_tn, \@login_users_col_names); +$known_server_db->create_table($known_server_tn, \@known_server_col_names); +$foreign_clients_db->create_table($foreign_clients_tn, \@foreign_clients_col_names); +$known_clients_db->create_table($known_clients_tn, \@known_clients_col_names); +$incoming_db->create_table($incoming_tn, \@incoming_col_names); +$job_db->create_table($job_queue_tn, \@job_queue_col_names); + + +# create xml object used for en/decrypting +$xml = new XML::Simple(); + + +# foreign servers +my @foreign_server_list; + +# add foreign server from cfg file +if ($foreign_server_string ne "") { + my @cfg_foreign_server_list = split(",", $foreign_server_string); + foreach my $foreign_server (@cfg_foreign_server_list) { + push(@foreign_server_list, $foreign_server); + } + + daemon_log("0 INFO: found foreign server in config file: ".join(", ", @foreign_server_list), 5); +} + +# Perform a DNS lookup for server registration if flag is true +if ($dns_lookup eq "true") { + # Add foreign server from dns + my @tmp_servers; + if (not $server_domain) { + # Try our DNS Searchlist + for my $domain(get_dns_domains()) { + chomp($domain); + my ($tmp_domains, $error_string) = &get_server_addresses($domain); + if(@$tmp_domains) { + for my $tmp_server(@$tmp_domains) { + push @tmp_servers, $tmp_server; + } + } + } + if(@tmp_servers && length(@tmp_servers)==0) { + daemon_log("0 WARNING: no foreign gosa-si-server found in DNS for domain '$server_domain'", 3); + } + } else { + @tmp_servers = &get_server_addresses($server_domain); + if( 0 == @tmp_servers ) { + daemon_log("0 WARNING: no foreign gosa-si-server found in DNS for domain '$server_domain'", 3); + } + } + + daemon_log("0 INFO: found foreign server via DNS ".join(", ", @tmp_servers), 5); + + foreach my $server (@tmp_servers) { + unshift(@foreign_server_list, $server); + } +} else { + daemon_log("0 INFO: DNS lookup for server registration is disabled", 5); +} + + +# eliminate duplicate entries +@foreign_server_list = &del_doubles(@foreign_server_list); +my $all_foreign_server = join(", ", @foreign_server_list); +daemon_log("0 INFO: found foreign server in config file and DNS: '$all_foreign_server'", 5); + +# add all found foreign servers to known_server +my $act_timestamp = &get_time(); +foreach my $foreign_server (@foreign_server_list) { + + # do not add myself to known_server_db + if (&is_local($foreign_server)) { next; } + ###################################### + + my $res = $known_server_db->add_dbentry( {table=>$known_server_tn, + primkey=>['hostname'], + hostname=>$foreign_server, + macaddress=>"", + status=>'not_jet_registered', + hostkey=>"none", + loaded_modules => "none", + timestamp=>$act_timestamp, + } ); +} + + +# Import all modules +&import_modules; + +# Check wether all modules are gosa-si valid passwd check +&password_check; + +# Prepare for using Opsi +if ($opsi_enabled eq "true") { + use JSON::RPC::Client; + use XML::Quote qw(:all); + $opsi_url= "https://".$opsi_admin.":".$opsi_password."@".$opsi_server.":4447/rpc"; + $opsi_client = new JSON::RPC::Client; +} + + +POE::Component::Server::TCP->new( + Alias => "TCP_SERVER", + Port => $server_port, + ClientInput => sub { + my ($kernel, $input, $heap, $session) = @_[KERNEL, ARG0, HEAP, SESSION]; + my $session_id = $session->ID; + my $remote_ip = $heap->{'remote_ip'}; + push(@msgs_to_decrypt, $input); + &daemon_log("$session_id DEBUG: incoming message from '$remote_ip'", 7); + $kernel->yield("msg_to_decrypt"); + }, + InlineStates => { + msg_to_decrypt => \&msg_to_decrypt, + next_task => \&next_task, + task_result => \&handle_task_result, + task_done => \&handle_task_done, + task_debug => \&handle_task_debug, + child_reap => sub { "Do nothing special. I'm just a comment, but i'm necessary!" }, + } +); + +daemon_log("0 INFO: start socket for incoming xml messages at port '$server_port' ", 1); + +# create session for repeatedly checking the job queue for jobs +POE::Session->create( + inline_states => { + _start => \&session_start, + register_at_foreign_servers => \®ister_at_foreign_servers, + sig_handler => \&sig_handler, + next_task => \&next_task, + task_result => \&handle_task_result, + task_done => \&handle_task_done, + task_debug => \&handle_task_debug, + watch_for_next_tasks => \&watch_for_next_tasks, + watch_for_new_messages => \&watch_for_new_messages, + watch_for_delivery_messages => \&watch_for_delivery_messages, + watch_for_done_messages => \&watch_for_done_messages, + watch_for_new_jobs => \&watch_for_new_jobs, + watch_for_modified_jobs => \&watch_for_modified_jobs, + watch_for_done_jobs => \&watch_for_done_jobs, + watch_for_opsi_jobs => \&watch_for_opsi_jobs, + watch_for_old_known_clients => \&watch_for_old_known_clients, + create_packages_list_db => \&run_create_packages_list_db, + create_fai_server_db => \&run_create_fai_server_db, + create_fai_release_db => \&run_create_fai_release_db, + recreate_packages_db => \&run_recreate_packages_db, + session_run_result => \&session_run_result, + session_run_debug => \&session_run_debug, + session_run_done => \&session_run_done, + child_reap => sub { "Do nothing special. I'm just a comment, but i'm necessary!" }, + } +); + + +POE::Kernel->run(); +exit; + diff --git a/trunk/gosa-si/gosa-si-server.1 b/trunk/gosa-si/gosa-si-server.1 new file mode 100644 index 000000000..6571e57f3 --- /dev/null +++ b/trunk/gosa-si/gosa-si-server.1 @@ -0,0 +1,183 @@ +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "GOSA-SI-SERVER 1" +.TH GOSA-SI-SERVER 1 "2008-08-08" " " " " +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +gosa\-si\-server \-Support infrastructure for GOsa +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 1 +\& gosa\-si\-server [\-hvf] [\-c config] +.Ve +.SH "OPTIONS" +.IX Header "OPTIONS" +\&\fB\-h\fR, \fB\-\-help\fR + print out this help message +.PP +\&\fB\-v\fR, \fB\-\-verbose\fR + be verbose (multiple v's will increase verbosity) + \-v \s-1ERROR\s0 level + \-vvv \s-1WARNING\s0 + \s-1ERROR\s0 level + \-vvvvv \s-1INFO\s0 + \s-1WARNING\s0 level + \-vvvvvvv \s-1DEBUG\s0 + \s-1INFO\s0 level + \-vvvvvvvvv in and out going xml messages will be displayed +.PP +\&\fB\-f\fR, \fB\-\-foreground\fR + foregroud, process will not be forked to background +.PP +\&\fB\-c\fR \fIfile\fR, \fB\-\-config=\fR\fIfile\fR + configuration file, default \fI/etc/gosa\-si/server.conf\fR +.PP +\&\fB\-\-no\-arp\fR + starts script without connection to arp module +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +gosa-si-server belongs to the support infrastructure of GOsa. Several gosa-si-clients can connect to one gosa-si-server. The server take care of the message forwarding from GOsa to si-clients. At the client site each message is related to a working instruction which will be executed there. Depending of the message an answer from the client to GOsa via the server is possible. Additional to answers clients reporting events or information to the server. The server registers himself at other servers in network and shares his knowledge with them. So messages to clients which are no registrated locally will be forward to the client corresponding server. The communication within the complete \s-1SI\s0 nework is realised by \s-1XML\s0 messages. +.SH "BUGS" +.IX Header "BUGS" +Please report any bugs, or post any suggestions, to the GOsa mailing list or to +.SH "LICENCE AND COPYRIGHT" +.IX Header "LICENCE AND COPYRIGHT" +This code is part of GOsa () +.PP +Copyright (C) 2003\-2008 \s-1GONICUS\s0 GmbH +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\s-1GNU\s0 General Public License for more details. diff --git a/trunk/gosa-si/gosa-si-server.conf.5 b/trunk/gosa-si/gosa-si-server.conf.5 new file mode 100644 index 000000000..3ffcbcd2d --- /dev/null +++ b/trunk/gosa-si/gosa-si-server.conf.5 @@ -0,0 +1,286 @@ +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "SERVER.CONF 5" +.TH SERVER.CONF 5 "2008-07-31" "gosa-si-server" " " +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +gosa\-si\-server.conf \- Configuration file for gosa\-si\-server. +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +The gosa\-si\-server.conf file defines all paramter GOsa-SI-server needs for running. It is normally located in the /etc/gosa\-si/ directory and is generated automatically by the \fIgosa\-si\-server\fR\|(1) program during installation. +.SH "DIRECTIVES" +.IX Header "DIRECTIVES" +.Sh "[general]" +.IX Subsection "[general]" +.IP "logfile = /var/log/gosa\-si\-server.log" 4 +.IX Item "logfile = /var/log/gosa-si-server.log" +Defines the location for the log file. +.IP "pid-file = /var/run/gosa\-si\-server.pid Defines the location for the pid file." 4 +.IX Item "pid-file = /var/run/gosa-si-server.pid Defines the location for the pid file." +.Sh "[server]" +.IX Subsection "[server]" +.PD 0 +.IP "port = 20081" 4 +.IX Item "port = 20081" +.PD +Defines the port GOsa-SI-server is listening for incoming messages. +.IP "known-clients = /var/lib/gosa\-si/clients.db" 4 +.IX Item "known-clients = /var/lib/gosa-si/clients.db" +Defines the location for the local \s-1DB\s0 'known_clients'. +.IP "known-server = /var/lib/gosa\-si/servers.db" 4 +.IX Item "known-server = /var/lib/gosa-si/servers.db" +Defines the location for the local \s-1DB\s0 'known_server'. +.IP "incoming = /var/lib/gosa\-si/incoming.db" 4 +.IX Item "incoming = /var/lib/gosa-si/incoming.db" +Defines the location for the local \s-1DB\s0 'incoming'. +.IP "login-users = /var/lib/gosa\-si/users.db" 4 +.IX Item "login-users = /var/lib/gosa-si/users.db" +Defines the location for the local \s-1DB\s0 'login_users'. +.IP "fai-server = /var/lib/gosa\-si/fai_server.db" 4 +.IX Item "fai-server = /var/lib/gosa-si/fai_server.db" +Defines the location for the local \s-1DB\s0 'fai_server'. +.IP "fai-release = /var/lib/gosa\-si/fai_release.db" 4 +.IX Item "fai-release = /var/lib/gosa-si/fai_release.db" +Defines the location for the local \s-1DB\s0 'fai_release'. +.IP "packages-list = /var/lib/gosa\-si/packages.db" 4 +.IX Item "packages-list = /var/lib/gosa-si/packages.db" +Defines the location for the local \s-1DB\s0 'packages_list'. +.IP "messaging = /var/lib/gosa\-si/messaging.db" 4 +.IX Item "messaging = /var/lib/gosa-si/messaging.db" +Defines the location for the local \s-1DB\s0 'messaging'. +.IP "foreign-clients = /var/lib/gosa\-si/foreign_clients.db" 4 +.IX Item "foreign-clients = /var/lib/gosa-si/foreign_clients.db" +Defines the location for the local \s-1DB\s0 'foreign_clients'. +.IP "source-list = /etc/apt/sources.list" 4 +.IX Item "source-list = /etc/apt/sources.list" +Defines the location for the sources file. +.IP "repo-path = /srv/www/repository" 4 +.IX Item "repo-path = /srv/www/repository" +??? +.IP "ldap-uri =" 4 +.IX Item "ldap-uri =" +Defines the \s-1LDAP\s0 uniform resource identifier. +.IP "ldap-base =" 4 +.IX Item "ldap-base =" +Defines the \s-1LDAP\s0 base. +.IP "ldap-admin-dn =" 4 +.IX Item "ldap-admin-dn =" +Defines the distinguished name of the administrator. +.IP "ldap-admin-password =" 4 +.IX Item "ldap-admin-password =" +Defines the password of the administrator. +.IP "gosa-unit-tag =" 4 +.IX Item "gosa-unit-tag =" +??? +.IP "max-clients = 10" 4 +.IX Item "max-clients = 10" +Defines the maximum number of GOsa-SI-clients connected to the GOsa-SI-server. +.IP "wol-password =" 4 +.IX Item "wol-password =" +Defines the password for wake on \s-1LAN\s0 (\s-1WOL\s0). +.Sh "[GOsaPackages]" +.IX Subsection "[GOsaPackages]" +.IP "job-queue = /var/lib/gosa\-si/jobs.db" 4 +.IX Item "job-queue = /var/lib/gosa-si/jobs.db" +Defines the location for the local \s-1DB\s0 'job_queue'. +.IP "job-queue-loop-delay = 3" 4 +.IX Item "job-queue-loop-delay = 3" +Defines the seconds the job queue is checked. +.IP "messaging-db-loop-delay = 3" 4 +.IX Item "messaging-db-loop-delay = 3" +Defines the seconds the messaging queue is checked. +.IP "key = none" 4 +.IX Item "key = none" +Defines the password incoming GOsaPackages messages should be encrypted. This has to be modified, default value will not work!!! +.IP "dak-base = /srv/archive" 4 +.IX Item "dak-base = /srv/archive" +??? +.IP "dak-keyring = /srv/archive/keyrings" 4 +.IX Item "dak-keyring = /srv/archive/keyrings" +??? +.IP "dak-queue = /srv/archive/queue" 4 +.IX Item "dak-queue = /srv/archive/queue" +??? +.IP "dak-usr = deb-dak" 4 +.IX Item "dak-usr = deb-dak" +??? +.Sh "[ClientPackages]" +.IX Subsection "[ClientPackages]" +.IP "key = none" 4 +.IX Item "key = none" +Defines the password incoming ClientPackages messages should be encrypted. This has to be modified, default value will not work!!! +.Sh "[ServerPackages]" +.IX Subsection "[ServerPackages]" +.IP "address =" 4 +.IX Item "address =" +??? +.IP "domain =" 4 +.IX Item "domain =" +??? +.IP "key = none" 4 +.IX Item "key = none" +Defines the password incoming ServerPackages messages should be encrypted. This has to be modified, default value will not work!!! +.IP "key-lifetime = 120" 4 +.IX Item "key-lifetime = 120" +Defines the lifetime in seconds of a GOsa-SI-server key. After expiring the key will be automatically renewed. +.IP "job-synchronization-enabled = true | false" 4 +.IX Item "job-synchronization-enabled = true | false" +Defines whether job queue informations are be shared with other GOsa-SI-server in network. +.IP "synchronization-loog = 5" 4 +.IX Item "synchronization-loog = 5" +Defines in seconds after which time the job queue synchronization is being done. +.Sh "[ArpHandler]" +.IX Subsection "[ArpHandler]" +.IP "enabled = true | false" 4 +.IX Item "enabled = true | false" +Defines whether the ArpHandler is being activated at GOsa-SI-server start. +.IP "interface = all" 4 +.IX Item "interface = all" +??? +.SH "BUGS" +.IX Header "BUGS" +Please report any bugs, or post any suggestions, to the GOsa mailing list or to +.SH "LICENCE AND COPYRIGHT" +.IX Header "LICENCE AND COPYRIGHT" +This code is part of GOsa () +.PP +Copyright (C) 2003\-2008 \s-1GONICUS\s0 GmbH +.PP +This program is distributed in the hope that it will be useful, +but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the +\&\s-1GNU\s0 General Public License for more details. diff --git a/trunk/gosa-si/gosa-si-server.pod b/trunk/gosa-si/gosa-si-server.pod new file mode 100644 index 000000000..24356b9b8 --- /dev/null +++ b/trunk/gosa-si/gosa-si-server.pod @@ -0,0 +1,58 @@ + +=head1 NAME + +gosa-si-server -Support infrastructure for GOsa + +=head1 SYNOPSIS + +gosa-si-server [-hvf] [-c config] + +=head1 OPTIONS + +B<-h>, B<--help> + print out this help message + +B<-v>, B<--verbose> + be verbose (multiple v's will increase verbosity) + -v ERROR level + -vvv WARNING + ERROR level + -vvvvv INFO + WARNING level + -vvvvvvv DEBUG + INFO level + -vvvvvvvvv in and out going xml messages will be displayed + +B<-f>, B<--foreground> + foregroud, process will not be forked to background + +B<-c> I, B<--config=>I + configuration file, default F + +B<--no-arp> + starts script without connection to arp module + + + +=head1 DESCRIPTION + +gosa-si-server belongs to the support infrastructure of GOsa. Several gosa-si-clients can connect to one gosa-si-server. The server take care of the message forwarding from GOsa to si-clients. At the client site each message is related to a working instruction which will be executed there. Depending of the message an answer from the client to GOsa via the server is possible. Additional to answers clients reporting events or information to the server. The server registers himself at other servers in network and shares his knowledge with them. So messages to clients which are no registrated locally will be forward to the client corresponding server. The communication within the complete SI nework is realised by XML messages. + + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list or to + + +=head1 LICENCE AND COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + +=cut + + + diff --git a/trunk/gosa-si/modules/ArpHandler.pm b/trunk/gosa-si/modules/ArpHandler.pm new file mode 100644 index 000000000..f44d72976 --- /dev/null +++ b/trunk/gosa-si/modules/ArpHandler.pm @@ -0,0 +1,450 @@ +package ArpHandler; + +use Exporter; +@ISA = ("Exporter"); + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use POSIX; +use Fcntl; +use Net::LDAP; +use Net::LDAP::LDIF; +use Net::LDAP::Entry; +use Net::DNS; +use Switch; +use Data::Dumper; +use Socket; + +# Don't start if some of the modules are missing +my $start_service=1; +my $lookup_vendor=1; +BEGIN{ + unless(eval('use Socket qw(PF_INET SOCK_DGRAM inet_ntoa sockaddr_in)')) { + $start_service=0; + } + unless(eval('use POE qw(Component::Pcap Component::ArpWatch)')) { + $start_service=0; + } + unless(eval('use Net::MAC::Vendor')) { + $lookup_vendor=0; + } +} + +END{} + +my ($timeout, $mailto, $mailfrom, $user, $group); +my ($arp_enabled, $arp_interface, $ldap_uri, $ldap_base, $ldap_admin_dn, $ldap_admin_password); +my $hosts_database={}; +my $ldap; + +my %cfg_defaults = +( + "ArpHandler" => { + "enabled" => [\$arp_enabled, "true"], + "interface" => [\$arp_interface, "all"], + }, + "server" => { + "ldap-uri" => [\$ldap_uri, ""], + "ldap-base" => [\$ldap_base, ""], + "ldap-admin-dn" => [\$ldap_admin_dn, ""], + "ldap-admin-password" => [\$ldap_admin_password, ""], + }, +); + +#=== FUNCTION ================================================================ +# NAME: read_configfile +# PARAMETERS: cfg_file - string - +# RETURNS: nothing +# DESCRIPTION: read cfg_file and set variables +#=============================================================================== +sub local_read_configfile { + my $cfg; + if( defined( $main::cfg_file) && ( (-s $main::cfg_file) > 0 )) { + if( -r $main::cfg_file ) { + $cfg = Config::IniFiles->new( -file => $main::cfg_file ); + } else { + print STDERR "Couldn't read config file!"; + } + } else { + $cfg = Config::IniFiles->new() ; + } + foreach my $section (keys %cfg_defaults) { + foreach my $param (keys %{$cfg_defaults{ $section }}) { + my $pinfo = $cfg_defaults{ $section }{ $param }; + ${@$pinfo[0]} = $cfg->val( $section, $param, @$pinfo[1] ); + } + } +} + +sub get_module_info { + my @info = (undef, + undef, + ); + + &local_read_configfile(); + # Don't start if some of the modules are missing + if(($arp_enabled eq 'true') && $start_service) { + if($lookup_vendor) { + eval("Net::MAC::Vendor::load_cache('file:///usr/lib/gosa-si/modules/oui.txt')"); + if($@) { + &main::daemon_log("Loading OUI cache file failed! MAC Vendor lookup disabled", 1); + $lookup_vendor=0; + } else { + &main::daemon_log("Loading OUI cache file suceeded!", 6); + } + } + my $ldap_handle = &main::get_ldap_handle(); + + # When interface is not configured (or 'all'), start arpwatch on all possible interfaces + if ((!defined($arp_interface)) || $arp_interface eq 'all') { + foreach my $device(&get_interfaces) { + # TODO: Need a better workaround for IPv4-to-IPv6 bridges + if($device =~ m/^sit\d+$/) { + next; + } + + # If device has a valid mac address + # TODO: Check if this should be the right way + if(not(&get_mac($device) eq "00:00:00:00:00:00")) { + &main::daemon_log("Starting ArpWatch on $device", 1); + POE::Session->create( + inline_states => { + _start => sub { + &start(@_,$device); + }, + _stop => sub { + $_[KERNEL]->post( sprintf("arp_watch_$device") => 'shutdown' ) + }, + got_packet => \&got_packet, + }, + ); + } + } + } else { + foreach my $device(split(/[\s,]+/, $arp_interface)) { + &main::daemon_log("Starting ArpWatch on $device", 1); + POE::Session->create( + inline_states => { + _start => sub { + &start(@_,$device); + }, + _stop => sub { + $_[KERNEL]->post( sprintf("arp_watch_$device") => 'shutdown' ) + }, + got_packet => \&got_packet, + }, + ); + } + } + } else { + &main::daemon_log("ArpHandler disabled. Not starting any capture processes"); + } + return \@info; +} + +sub process_incoming_msg { + return 1; +} + +sub start { + my $device = (exists($_[ARG0])?$_[ARG0]:'eth0'); + POE::Component::ArpWatch->spawn( + Alias => sprintf("arp_watch_$device"), + Device => $device, + Dispatch => 'got_packet', + Session => $_[SESSION], + ); + + $_[KERNEL]->post( sprintf("arp_watch_$device") => 'run' ); +} + +sub got_packet { + my ($kernel, $heap, $sender, $packet) = @_[KERNEL, HEAP, SENDER, ARG0]; + + if( $packet->{source_haddr} eq "00:00:00:00:00:00" || + $packet->{source_haddr} eq "ff:ff:ff:ff:ff:ff" || + $packet->{source_ipaddr} eq "0.0.0.0") { + return; + } + + my $capture_device = sprintf "%s", $kernel->alias_list($sender) =~ /^arp_watch_(.*)$/; + + my $ldap_handle = &main::get_ldap_handle(); + if(!exists($hosts_database->{$packet->{source_haddr}})) { + my $dnsname= gethostbyaddr(inet_aton($packet->{source_ipaddr}), AF_INET) || $packet->{source_ipaddr}; + my $ldap_result=&get_host_from_ldap($packet->{source_haddr}); + if(exists($ldap_result->{dn})) { + $hosts_database->{$packet->{source_haddr}}=$ldap_result; + $hosts_database->{$packet->{source_haddr}}->{dnsname}= $dnsname; + if(!exists($ldap_result->{ipHostNumber})) { + $hosts_database->{$packet->{source_haddr}}->{ipHostNumber}=$packet->{source_ipaddr}; + } else { + if(!($ldap_result->{ipHostNumber} eq $packet->{source_ipaddr})) { + &main::daemon_log( + "Current IP Address ".$packet->{source_ipaddr}. + " of host ".$hosts_database->{$packet->{source_haddr}}->{dnsname}. + " differs from LDAP (".$ldap_result->{ipHostNumber}.")", 4); + } + } + $hosts_database->{$packet->{source_haddr}}->{dnsname}=$dnsname; + &main::daemon_log("Host was found in LDAP as ".$ldap_result->{dn}, 8); + } else { + $hosts_database->{$packet->{source_haddr}}={ + macAddress => $packet->{source_haddr}, + ipHostNumber => $packet->{source_ipaddr}, + dnsname => $dnsname, + cn => (($dnsname =~ /^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}/) ? $dnsname : sprintf "%s", $dnsname =~ /([^\.]+)\./), + macVendor => (($lookup_vendor) ? &get_vendor_for_mac($packet->{source_haddr}) : "Unknown Vendor"), + }; + &main::daemon_log("Host was not found in LDAP (".($hosts_database->{$packet->{source_haddr}}->{dnsname}).")",6); + &main::daemon_log( + "New Host ".($hosts_database->{$packet->{source_haddr}}->{dnsname}). + ": ".$hosts_database->{$packet->{source_haddr}}->{ipHostNumber}. + "/".$hosts_database->{$packet->{source_haddr}}->{macAddress},4); + &add_ldap_entry( + $ldap_handle, + $ldap_base, + $hosts_database->{$packet->{source_haddr}}->{macAddress}, + 'new-system', + $hosts_database->{$packet->{source_haddr}}->{ipHostNumber}, + 'interface', + $hosts_database->{$packet->{source_haddr}}->{macVendor}); + } + $hosts_database->{$packet->{source_haddr}}->{device}= $capture_device; + } else { + if(!($hosts_database->{$packet->{source_haddr}}->{ipHostNumber} eq $packet->{source_ipaddr})) { + &main::daemon_log( + "IP Address change of MAC ".$packet->{source_haddr}. + ": ".$hosts_database->{$packet->{source_haddr}}->{ipHostNumber}. + "->".$packet->{source_ipaddr}, 4); + $hosts_database->{$packet->{source_haddr}}->{ipHostNumber}= $packet->{source_ipaddr}; + &change_ldap_entry( + $ldap_handle, + $ldap_base, + $hosts_database->{$packet->{source_haddr}}->{macAddress}, + 'ip-changed', + $hosts_database->{$packet->{source_haddr}}->{ipHostNumber}, + ); + + } + &main::daemon_log("Host already in cache (".($hosts_database->{$packet->{source_haddr}}->{device})."->".($hosts_database->{$packet->{source_haddr}}->{dnsname}).")",8); + } +} + +sub get_host_from_ldap { + my $mac=shift; + my $result={}; + + my $ldap_handle = &main::get_ldap_handle(); + if(defined($ldap_handle)) { + my $ldap_result= &search_ldap_entry( + $ldap_handle, + $ldap_base, + "(|(macAddress=$mac)(dhcpHWAddress=ethernet $mac))" + ); + + if(defined($ldap_result) && $ldap_result->count==1) { + if(exists($ldap_result->{entries}[0]) && + exists($ldap_result->{entries}[0]->{asn}->{objectName}) && + exists($ldap_result->{entries}[0]->{asn}->{attributes})) { + + for my $attribute(@{$ldap_result->{entries}[0]->{asn}->{attributes}}) { + if($attribute->{type} eq 'cn') { + $result->{cn} = $attribute->{vals}[0]; + } + if($attribute->{type} eq 'macAddress') { + $result->{macAddress} = $attribute->{vals}[0]; + } + if($attribute->{type} eq 'dhcpHWAddress') { + $result->{dhcpHWAddress} = $attribute->{vals}[0]; + } + if($attribute->{type} eq 'ipHostNumber') { + $result->{ipHostNumber} = $attribute->{vals}[0]; + } + } + } + $result->{dn} = $ldap_result->{entries}[0]->{asn}->{objectName}; + } + } + + return $result; +} + + +#=== FUNCTION ================================================================ +# NAME: get_mac +# PARAMETERS: interface name (i.e. eth0) +# RETURNS: (mac address) +# DESCRIPTION: Uses ioctl to get mac address directly from system. +#=============================================================================== +sub get_mac { + my $ifreq= shift; + my $result; + if ($ifreq && length($ifreq) > 0) { + if($ifreq eq "all") { + $result = "00:00:00:00:00:00"; + } else { + my $SIOCGIFHWADDR= 0x8927; # man 2 ioctl_list + + socket SOCKET, PF_INET, SOCK_DGRAM, getprotobyname('ip') + or die "socket: $!"; + + if(ioctl SOCKET, $SIOCGIFHWADDR, $ifreq) { + my ($if, $mac)= unpack 'h36 H12', $ifreq; + + if (length($mac) > 0) { + $mac=~ m/^([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$/; + $mac= sprintf("%s:%s:%s:%s:%s:%s", $1, $2, $3, $4, $5, $6); + $result = $mac; + } + } + } + } + return $result; +} + +sub get_vendor_for_mac { + my $mac=shift; + my $result="Unknown Vendor"; + + if(defined($mac)) { + my $vendor= Net::MAC::Vendor::fetch_oui_from_cache(Net::MAC::Vendor::normalize_mac($mac)); + if(length($vendor) > 0) { + $result= @{$vendor}[0]; + } + &main::daemon_log("Looking up Vendor for MAC ".$mac.": $result", 4); + } + + return $result; +} + +#=== FUNCTION ================================================================ +# NAME: add_ldap_entry +# PURPOSE: adds an element to ldap-tree +# PARAMETERS: +# RETURNS: none +# DESCRIPTION: ???? +# THROWS: no exceptions +# COMMENTS: none +# SEE ALSO: n/a/bin +#=============================================================================== +sub add_ldap_entry { + my ($ldap_tree, $ldap_base, $mac, $gotoSysStatus, $ip, $interface, $desc) = @_; + if(defined($ldap_tree)) { + my $dn = "cn=".$hosts_database->{$mac}->{cn}.",ou=incoming,$ldap_base"; + my $s_res = &search_ldap_entry($ldap_tree, $ldap_base, "(|(macAddress=$mac)(dhcpHWAddress=ethernet $mac))"); + my $c_res = (defined($s_res))?$s_res->count:0; + if($c_res == 1) { + &main::daemon_log("WARNING: macAddress $mac already in LDAP", 1); + return; + } elsif($c_res > 0) { + &main::daemon_log("ERROR: macAddress $mac exists $c_res times in LDAP", 1); + return; + } + + # create LDAP entry + my $entry = Net::LDAP::Entry->new( $dn ); + $entry->dn($dn); + $entry->add("objectClass" => "GOhard"); + $entry->add("cn" => $hosts_database->{$mac}->{cn}); + $entry->add("macAddress" => $mac); + if(defined $gotoSysStatus) {$entry->add("gotoSysStatus" => $gotoSysStatus)} + if(defined $ip) {$entry->add("ipHostNumber" => $ip) } + #if(defined $interface) { } + if(defined $desc) {$entry->add("description" => $desc) } + + # submit entry to LDAP + my $result = $entry->update ($ldap_tree); + + # for $result->code constants please look at Net::LDAP::Constant + if($result->code == 68) { # entry already exists + &main::daemon_log("WARNING: $dn ".$result->error, 3); + } elsif($result->code == 0) { # everything went fine + &main::daemon_log("add entry $dn to ldap", 1); + } else { # if any other error occur + &main::daemon_log("ERROR: $dn, ".$result->code.", ".$result->error, 1); + } + } else { + &main::daemon_log("Not adding new Entry: LDAP disabled", 6); + } + return; +} + + +#=== FUNCTION ================================================================ +# NAME: change_ldap_entry +# PURPOSE: ???? +# PARAMETERS: ???? +# RETURNS: ???? +# DESCRIPTION: ???? +# THROWS: no exceptions +# COMMENTS: none +# SEE ALSO: n/a +#=============================================================================== +sub change_ldap_entry { + my ($ldap_tree, $ldap_base, $mac, $gotoSysStatus, $ip) = @_; + + if(defined($ldap_tree)) { + # check if ldap_entry exists or not + my $s_res = &search_ldap_entry($ldap_tree, $ldap_base, "(|(macAddress=$mac)(dhcpHWAddress=ethernet $mac))"); + my $c_res = (defined $s_res)?$s_res->count:0; + if($c_res == 0) { + &main::daemon_log("WARNING: macAddress $mac not in LDAP", 1); + return; + } elsif($c_res > 1) { + &main::daemon_log("ERROR: macAddress $mac exists $c_res times in LDAP", 1); + return; + } + + my $s_res_entry = $s_res->pop_entry(); + my $dn = $s_res_entry->dn(); + my $replace = { + 'gotoSysStatus' => $gotoSysStatus, + }; + if (defined($ip)) { + $replace->{'ipHostNumber'} = $ip; + } + my $result = $ldap_tree->modify( $dn, replace => $replace ); + + # for $result->code constants please look at Net::LDAP::Constant + if($result->code == 32) { # entry doesnt exists + &add_ldap_entry($mac, $gotoSysStatus); + } elsif($result->code == 0) { # everything went fine + &main::daemon_log("entry $dn changed successful", 1); + } else { # if any other error occur + &main::daemon_log("ERROR: $dn, ".$result->code.", ".$result->error, 1); + } + } else { + &main::daemon_log("Not changing Entry: LDAP disabled", 6); + } + + return; +} + +#=== FUNCTION ================================================================ +# NAME: search_ldap_entry +# PURPOSE: ???? +# PARAMETERS: [Net::LDAP] $ldap_tree - object of an ldap-tree +# string $sub_tree - dn of the subtree the search is performed +# string $search_string - either a string or a Net::LDAP::Filter object +# RETURNS: [Net::LDAP::Search] $msg - result object of the performed search +# DESCRIPTION: ???? +# THROWS: no exceptions +# COMMENTS: none +# SEE ALSO: n/a +#=============================================================================== +sub search_ldap_entry { + my ($ldap_tree, $sub_tree, $search_string) = @_; + my $msg; + if(defined($ldap_tree)) { + $msg = $ldap_tree->search( # perform a search + base => $sub_tree, + filter => $search_string, + ) or &main::daemon_log("cannot perform search at ldap: $@", 1); + } + return $msg; +} + +# vim:ts=4:shiftwidth:expandtab +1; diff --git a/trunk/gosa-si/modules/ArpWatch.pm b/trunk/gosa-si/modules/ArpWatch.pm new file mode 100644 index 000000000..e03bed4d0 --- /dev/null +++ b/trunk/gosa-si/modules/ArpWatch.pm @@ -0,0 +1,177 @@ +#!/usr/bin/perl +package POE::Component::ArpWatch; + +use strict; +use warnings; + +BEGIN{ + eval('use POE'); + eval('use POE::Component::Pcap'); + eval('use NetPacket::Ethernet qw( :types )'); + eval('use NetPacket::ARP qw( :opcodes )'); +} + +END{ +} + +## Map arp opcode #'s to strings +my %arp_opcodes = ( + NetPacket::ARP::ARP_OPCODE_REQUEST, 'ARP Request', + NetPacket::ARP::ARP_OPCODE_REPLY, 'ARP Reply', + NetPacket::ARP::RARP_OPCODE_REQUEST, 'RARP Request', + NetPacket::ARP::RARP_OPCODE_REPLY, 'RARP Reply', + ); + +## +## POE::Component::ArpWatch->spawn( +## [ Alias => 'arp_watch' ], +## [ Device => 'eth0' ], +## [ Dispatch => dispatch_state ], +## [ Session => dispatch_session ], +## ) +## +sub spawn { + my $class = shift; + my %args = @_; + + $args{ Alias } ||= 'arp_watch'; + + POE::Session->create( + inline_states => { + _start => \&_start, +# _signal => \&_signal, + _stop => \&_stop,, + _dispatch => \&_dispatch, + set_dispatch => \&set_dispatch, + run => \&run, + pause => \&pause, + shutdown => \&shutdown, + }, + args => [ + $args{ Alias }, # ARG0 + $args{ Device }, # ARG1 + $args{ Dispatch },# ARG2 + $args{ Session }, # ARG3 + ], + ); + + return $args{ Alias }; +} + +sub _start { + my ($kernel, $heap, $session, + $alias, $device, $target_state, $target_session ) + = @_[ KERNEL, HEAP, SESSION, ARG0..ARG3 ]; + + POE::Component::Pcap->spawn( + Alias => $alias . '_pcap', + Device => $device, + Filter => 'arp', + Dispatch => '_dispatch', + Session => $session, + ); + + $heap->{'pcap_session'} = $kernel->alias_resolve( $alias . '_pcap' ); + + ## Set alias for ourselves and remember it + $kernel->alias_set( $alias ); + $heap->{Alias} = $alias; + + ## Set dispatch target session and state if it was given + if( defined( $target_session ) ) { + $heap->{'target_session'} = $target_session; + $heap->{'target_state'} = $target_state; + } +} + +sub set_dispatch { + my( $heap, $sender, $target ) = @_[ HEAP, SENDER, ARG0 ]; + + if( defined $target ) { + ## Remember whome to forward results to + $heap->{'target_session'} = $sender; + $heap->{'target_state'} = $target; + } else { + ## Clear target + delete $heap->{'target_session'}; + delete $heap->{'target_state'}; + } +} + +sub run { + $_[KERNEL]->post( $_[HEAP]->{'pcap_session'} => 'run' ); +} + +sub pause { + $_[KERNEL]->post( $_[HEAP]->{'pcap_session'} => 'pause' ); +} + +sub _dispatch { + my( $kernel, $heap, $packets ) = + @_[ KERNEL, HEAP, ARG0 ]; + + if( exists $heap->{'target_session'} ) { + $kernel->post( $heap->{'target_session'}, + $heap->{'target_state'}, + _process_packet( @{ $_ } ) ) foreach( @{$packets} ); + } +} + +sub _signal { + # print "Got signal ", $_[ARG0], "\n"; + + $_[KERNEL]->post( pcap => 'shutdown' ); + + return 1 +} + +sub shutdown { + my ( $kernel, $heap, $session, $sender ) + = @_[ KERNEL, HEAP, SESSION, SENDER ]; + my $alias = $heap->{Alias}; + +# print "In shutdown for sid ", $session->ID, ", alias $alias\n"; +# print "shutdown by ", $sender->ID, "\n"; + + $kernel->post( $heap->{'pcap_session'} => 'shutdown' ); + + $kernel->alias_remove( $alias ); + +# print "Out shutdown for sid ", $session->ID, ", alias $alias\n"; +} + +sub _stop { + my ( $kernel, $heap, $session ) = @_[ KERNEL, HEAP, SESSION ]; + my $alias = $heap->{Alias}; + +# print "In state_stop for sid ", $session->ID, ", alias $alias\n"; + +# print "Out state_stop for sid ", $session->ID, ", alias $alias\n"; +} + +sub _process_packet { + my( $hdr, $pkt ) = @_; + + my $arp = + NetPacket::ARP->decode( NetPacket::Ethernet->decode($pkt)->{data} ); + + ## Return hashref with apropriate fields + return { + type => $arp_opcodes{ $arp->{opcode} }, + tv_sec => $hdr->{tv_sec}, + tv_usec => $hdr->{tv_usec}, + source_haddr => _phys( $arp->{sha} ), + source_ipaddr => _ipaddr( $arp->{spa} ), + target_haddr => _phys( $arp->{tha} ), + target_ipaddr => _ipaddr( $arp->{tpa} ), + } +} + +## Pretty printing subs for addresses +sub _ipaddr { join( ".", unpack( "C4", pack( "N", oct( "0x". shift ) ) ) ) } +sub _phys { join( ":", grep {length} split( /(..)/, shift ) ) } + +# vim:ts=4:shiftwidth:expandtab +1; + +__END__ diff --git a/trunk/gosa-si/modules/ClientPackages.pm b/trunk/gosa-si/modules/ClientPackages.pm new file mode 100644 index 000000000..99bb35069 --- /dev/null +++ b/trunk/gosa-si/modules/ClientPackages.pm @@ -0,0 +1,1069 @@ +package ClientPackages; + +use Exporter; +@ISA = ("Exporter"); + +# Each module has to have a function 'process_incoming_msg'. This function works as a interface to gosa-sd and receives the msg hash from gosa-sd. 'process_incoming_function checks, wether it has a function to process the incoming msg and forward the msg to it. + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use IO::Socket::INET; +use XML::Simple; +use Data::Dumper; +use NetAddr::IP; +use Net::LDAP; +use Net::LDAP::Util; +use Socket; +use Net::hostent; + +my $event_dir = "/usr/lib/gosa-si/server/ClientPackages"; +use lib "/usr/lib/gosa-si/server/ClientPackages"; + +BEGIN{} +END {} + +my ($server_ip, $server_port, $ClientPackages_key, $max_clients, $ldap_uri, $ldap_base, $ldap_admin_dn, $ldap_admin_password, $server_interface); +#my ($bus_activ, $bus_key, $bus_ip, $bus_port); +my $server; +my $network_interface; +#my $no_bus; +my (@ldap_cfg, @pam_cfg, @nss_cfg, $goto_admin, $goto_secret); +my $mesg; + +my %cfg_defaults = ( +"server" => { + "ip" => [\$server_ip, "0.0.0.0"], + "mac-address" => [\$main::server_mac_address, "00:00:00:00:00"], + "port" => [\$server_port, "20081"], + "ldap-uri" => [\$ldap_uri, ""], + "ldap-base" => [\$ldap_base, ""], + "ldap-admin-dn" => [\$ldap_admin_dn, ""], + "ldap-admin-password" => [\$ldap_admin_password, ""], + "max-clients" => [\$max_clients, 100], + }, +"ClientPackages" => { + "key" => [\$ClientPackages_key, ""], + }, +); + +### START ##################################################################### + +# read configfile and import variables +&local_read_configfile(); + + +# if server_ip is not an ip address but a name +if( inet_aton($server_ip) ){ $server_ip = inet_ntoa(inet_aton($server_ip)); } +$network_interface= &get_interface_for_ip($server_ip); +$main::server_mac_address= &get_mac($network_interface); + + +# import local events +my ($error, $result, $event_hash) = &import_events($event_dir); + +foreach my $log_line (@$result) { + if ($log_line =~ / succeed: /) { + &main::daemon_log("0 DEBUG: ClientPackages - $log_line", 7); + } else { + &main::daemon_log("0 ERROR: ClientPackages - $log_line", 1); + } +} +# build vice versa event_hash, event_name => module +my $event2module_hash = {}; +while (my ($module, $mod_events) = each %$event_hash) { + while (my ($event_name, $nothing) = each %$mod_events) { + $event2module_hash->{$event_name} = $module; + } + +} + +# Unit tag can be defined in config +if((not defined($main::gosa_unit_tag)) || length($main::gosa_unit_tag) == 0) { + # Read gosaUnitTag from LDAP + + my $ldap_handle = &main::get_ldap_handle(); + if( defined($ldap_handle) ) { + &main::daemon_log("0 INFO: Searching for servers gosaUnitTag with mac address $main::server_mac_address",5); + # Perform search for Unit Tag + $mesg = $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + attrs => ['gosaUnitTag'], + filter => "(macaddress=$main::server_mac_address)" + ); + + if ((! $main::server_mac_address eq "00:00:00:00:00:00") and $mesg->count == 1) { + my $entry= $mesg->entry(0); + my $unit_tag= $entry->get_value("gosaUnitTag"); + $main::ldap_server_dn= $mesg->entry(0)->dn; + if(defined($unit_tag) && length($unit_tag) > 0) { + &main::daemon_log("0 INFO: Detected gosaUnitTag $unit_tag for creating entries", 5); + $main::gosa_unit_tag= $unit_tag; + } + } else { + # Perform another search for Unit Tag + my $hostname= `hostname -f`; + chomp($hostname); + &main::daemon_log("0 INFO: Searching for servers gosaUnitTag with hostname $hostname",5); + $mesg = $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + attrs => ['gosaUnitTag'], + filter => "(&(cn=$hostname)(objectClass=goServer))" + ); + if ($mesg->count == 1) { + my $entry= $mesg->entry(0); + my $unit_tag= $entry->get_value("gosaUnitTag"); + $main::ldap_server_dn= $mesg->entry(0)->dn; + if(defined($unit_tag) && length($unit_tag) > 0) { + &main::daemon_log("0 INFO: Detected gosaUnitTag $unit_tag for creating entries", 5); + $main::gosa_unit_tag= $unit_tag; + } + } else { + # Perform another search for Unit Tag + $hostname= `hostname -s`; + chomp($hostname); + &main::daemon_log("0 INFO: Searching for servers gosaUnitTag with hostname $hostname",5); + $mesg = $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + attrs => ['gosaUnitTag'], + filter => "(&(cn=$hostname)(objectClass=goServer))" + ); + if ($mesg->count == 1) { + my $entry= $mesg->entry(0); + my $unit_tag= $entry->get_value("gosaUnitTag"); + $main::ldap_server_dn= $mesg->entry(0)->dn; + if(defined($unit_tag) && length($unit_tag) > 0) { + &main::daemon_log("INFO: Detected gosaUnitTag $unit_tag for creating entries", 5); + $main::gosa_unit_tag= $unit_tag; + } + } else { + &main::daemon_log("0 WARNING: No gosaUnitTag detected. Not using gosaUnitTag", 3); + } + } + } + } else { + &main::daemon_log("0 INFO: Using gosaUnitTag from config-file: $main::gosa_unit_tag",5); + } +} + + +my $server_address = "$server_ip:$server_port"; +$main::server_address = $server_address; + + +### functions ################################################################# + + +sub get_module_info { + my @info = ($server_address, + $ClientPackages_key, + $event_hash, + ); + return \@info; +} + + +#=== FUNCTION ================================================================ +# NAME: local_read_configfile +# PARAMETERS: cfg_file - string - +# RETURNS: nothing +# DESCRIPTION: read cfg_file and set variables +#=============================================================================== +sub local_read_configfile { + my $cfg; + if( defined( $main::cfg_file) && ( (-s $main::cfg_file) > 0 )) { + if( -r $main::cfg_file ) { + $cfg = Config::IniFiles->new( -file => $main::cfg_file ); + } else { + print STDERR "Couldn't read config file!"; + } + } else { + $cfg = Config::IniFiles->new() ; + } + foreach my $section (keys %cfg_defaults) { + foreach my $param (keys %{$cfg_defaults{ $section }}) { + my $pinfo = $cfg_defaults{ $section }{ $param }; + ${@$pinfo[0]} = $cfg->val( $section, $param, @$pinfo[1] ); + } + } + + # Read non predefined sections + my $param; + if ($cfg->SectionExists('ldap')){ + foreach $param ($cfg->Parameters('ldap')){ + push (@ldap_cfg, "$param ".$cfg->val('ldap', $param)); + } + } + if ($cfg->SectionExists('pam_ldap')){ + foreach $param ($cfg->Parameters('pam_ldap')){ + push (@pam_cfg, "$param ".$cfg->val('pam_ldap', $param)); + } + } + if ($cfg->SectionExists('nss_ldap')){ + foreach $param ($cfg->Parameters('nss_ldap')){ + push (@nss_cfg, "$param ".$cfg->val('nss_ldap', $param)); + } + } + if ($cfg->SectionExists('goto')){ + $goto_admin= $cfg->val('goto', 'terminal_admin'); + $goto_secret= $cfg->val('goto', 'terminal_secret'); + } else { + $goto_admin= undef; + $goto_secret= undef; + } + +} + + +#=== FUNCTION ================================================================ +# NAME: get_mac +# PARAMETERS: interface name (i.e. eth0) +# RETURNS: (mac address) +# DESCRIPTION: Uses ioctl to get mac address directly from system. +#=============================================================================== +sub get_mac { + my $ifreq= shift; + my $result; + if ($ifreq && length($ifreq) > 0) { + if($ifreq eq "all") { + $result = "00:00:00:00:00:00"; + } else { + my $SIOCGIFHWADDR= 0x8927; # man 2 ioctl_list + + # A configured MAC Address should always override a guessed value + if ($main::server_mac_address and length($main::server_mac_address) > 0) { + $result= $main::server_mac_address; + } + + socket SOCKET, PF_INET, SOCK_DGRAM, getprotobyname('ip') + or die "socket: $!"; + + if(ioctl SOCKET, $SIOCGIFHWADDR, $ifreq) { + my ($if, $mac)= unpack 'h36 H12', $ifreq; + + if (length($mac) > 0) { + $mac=~ m/^([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$/; + $mac= sprintf("%s:%s:%s:%s:%s:%s", $1, $2, $3, $4, $5, $6); + $result = $mac; + } + } + } + } + return $result; +} + + +#=== FUNCTION ================================================================ +# NAME: process_incoming_msg +# PARAMETERS: crypted_msg - string - incoming crypted message +# RETURNS: nothing +# DESCRIPTION: handels the proceeded distribution to the appropriated functions +#=============================================================================== +sub process_incoming_msg { + my ($msg, $msg_hash, $session_id) = @_ ; + my $error = 0; + my $host_name; + my $host_key; + my @out_msg_l = ("nohandler"); + my $sql_events; + + # process incoming msg + my $header = @{$msg_hash->{header}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my @target_l = @{$msg_hash->{target}}; + + # skip PREFIX + $header =~ s/^CLMSG_//; + + &main::daemon_log("$session_id DEBUG: ClientPackages: msg to process: $header", 7); + + if( 0 == length @target_l){ + &main::daemon_log("$session_id ERROR: no target specified for msg $header", 1); + $error++; + } + + if( 1 == length @target_l) { + my $target = $target_l[0]; + if(&server_matches($target)) { + if ($header eq 'new_key') { + @out_msg_l = &new_key($msg_hash) + } elsif ($header eq 'here_i_am') { + @out_msg_l = &here_i_am($msg, $msg_hash, $session_id) + } else { + # a event exists with the header as name + if( exists $event2module_hash->{$header} ) { + &main::daemon_log("$session_id INFO: found event '$header' at event-module '".$event2module_hash->{$header}."'", 5); + no strict 'refs'; + @out_msg_l = &{$event2module_hash->{$header}."::$header"}($msg, $msg_hash, $session_id); + + # if no event handler is implemented + } else { + $sql_events = "SELECT * FROM $main::known_clients_tn WHERE ( (macaddress LIKE '$source') OR (hostname='$source') )"; + my $res = $main::known_clients_db->select_dbentry( $sql_events ); + my $l = keys(%$res); + + # set error if no or more than 1 hits are found for sql query + if ( $l != 1) { + @out_msg_l = ('knownclienterror'); + + # found exact 1 hit in db + } else { + my $client_events = $res->{'1'}->{'events'}; + + # client is registered for this event, deliver this message to client + $header =~ s/^answer_//; + if ($client_events =~ /,$header,/) { + # answer message finally arrived destination server, so forward messages to GOsa + if ($target eq $main::server_address) { + $msg =~ s/
      answer_/
      /; + $msg =~ s/\S+<\/target>/GOSA<\/target>/; + } + @out_msg_l = ( $msg ); + + # client is not registered for this event, set error + } else { + @out_msg_l = ('noeventerror'); + } + } + } + } + + # if delivery not possible raise error and return + if( not defined $out_msg_l[0] ) { + @out_msg_l = (); + } elsif( $out_msg_l[0] eq 'nohandler') { + &main::daemon_log("$session_id ERROR: ClientPackages: no event handler or core function defined for '$header'", 1); + @out_msg_l = (); + } elsif ($out_msg_l[0] eq 'knownclienterror') { + &main::daemon_log("$session_id ERROR: no or more than 1 hits are found at known_clients_db with sql query: '$sql_events'", 1); + &main::daemon_log("$session_id ERROR: processing is aborted and message will not be forwarded", 1); + @out_msg_l = (); + } elsif ($out_msg_l[0] eq 'noeventerror') { + &main::daemon_log("$session_id ERROR: client '$target' is not registered for event '$header', processing is aborted", 1); + @out_msg_l = (); + } + + + + + } + else { + &main::daemon_log("INFO: msg is not for gosa-si-server '$server_address', deliver it to target '$target'", 5); + push(@out_msg_l, $msg); + } + } + + return \@out_msg_l; +} + + +#=== FUNCTION ================================================================ +# NAME: new_passwd +# PARAMETERS: msg_hash - ref - hash from function create_xml_hash +# RETURNS: nothing +# DESCRIPTION: process this incoming message +#=============================================================================== +sub new_key { + my ($msg_hash) = @_; + my @out_msg_l; + + my $header = @{$msg_hash->{header}}[0]; + my $source_name = @{$msg_hash->{source}}[0]; + my $source_key = @{$msg_hash->{new_key}}[0]; + my $query_res; + + # check known_clients_db + my $sql_statement = "SELECT * FROM known_clients WHERE hostname='$source_name'"; + $query_res = $main::known_clients_db->select_dbentry( $sql_statement ); + if( 1 == keys %{$query_res} ) { + my $act_time = &get_time; + my $sql_statement= "UPDATE known_clients ". + "SET hostkey='$source_key', timestamp='$act_time' ". + "WHERE hostname='$source_name'"; + my $res = $main::known_clients_db->update_dbentry( $sql_statement ); + my $hash = &create_xml_hash("confirm_new_key", $server_address, $source_name); + my $out_msg = &create_xml_string($hash); + push(@out_msg_l, $out_msg); + } + + # only do if host still not found + if( 0 == @out_msg_l ) { + # check known_server_db + $sql_statement = "SELECT * FROM known_server WHERE hostname='$source_name'"; + $query_res = $main::known_server_db->select_dbentry( $sql_statement ); + if( 1 == keys %{$query_res} ) { + my $act_time = &get_time; + my $sql_statement= "UPDATE known_server ". + "SET hostkey='$source_key', timestamp='$act_time' ". + "WHERE hostname='$source_name'"; + my $res = $main::known_server_db->update_dbentry( $sql_statement ); + + my $hash = &create_xml_hash("confirm_new_key", $server_address, $source_name); + my $out_msg = &create_xml_string($hash); + push(@out_msg_l, $out_msg); + } + } + + return @out_msg_l; +} + + +#=== FUNCTION ================================================================ +# NAME: here_i_am +# PARAMETERS: msg_hash - hash - hash from function create_xml_hash +# RETURNS: nothing +# DESCRIPTION: process this incoming message +#=============================================================================== +sub here_i_am { + my ($msg, $msg_hash, $session_id) = @_; + my @out_msg_l; + my $out_hash; + my $source = @{$msg_hash->{source}}[0]; + my $mac_address = @{$msg_hash->{mac_address}}[0]; + my $gotoHardwareChecksum = @{$msg_hash->{gotoHardwareChecksum}}[0]; + my $client_status = @{$msg_hash->{client_status}}[0]; + my $client_revision = @{$msg_hash->{client_revision}}[0]; + my $key_lifetime = @{$msg_hash->{key_lifetime}}[0]; + + # Move forced hostname to heap - if used + #FIXME: move to some global POE namespace - please + if ( defined($msg_hash->{'force-hostname'}[0]) && + length($msg_hash->{'force-hostname'}[0]) > 0){ + # $heap->{force-hostname}->{$mac_address}= $msg_hash->{'force-hostname'}[0]; + open (TFILE, ">/var/tmp/$mac_address"); + print TFILE $msg_hash->{'force-hostname'}[0]; + close (TFILE); + } else { + # $heap->{force-hostname}->{$mac_address}= undef; + if ( -e "/var/tmp/$mac_address") { + unlink("/var/tmp/$mac_address") + }; + } + + # number of known clients + my $nu_clients= $main::known_clients_db->count_dbentries('known_clients'); + + # check wether client address or mac address is already known + my $sql_statement= "SELECT * FROM known_clients WHERE hostname='$source'"; + my $db_res= $main::known_clients_db->select_dbentry( $sql_statement ); + + if ( 1 == keys %{$db_res} ) { + &main::daemon_log("$session_id WARNING: $source is already known as a client", 1); + &main::daemon_log("$session_id WARNING: values for $source are being overwritten", 1); + $nu_clients --; + } + + # number of actual activ clients + my $act_nu_clients = $nu_clients; + + &main::daemon_log("$session_id INFO: number of actual activ clients: $act_nu_clients", 5); + &main::daemon_log("$session_id INFO: number of maximal allowed clients: $max_clients", 5); + + if($max_clients <= $act_nu_clients) { + my $out_hash = &create_xml_hash("denied", $server_address, $source); + &add_content2xml_hash($out_hash, "denied", "I_cannot_take_any_more_clients!"); + my $passwd = @{$msg_hash->{new_passwd}}[0]; + &send_msg_hash2address($out_hash, $source, $passwd); + return; + } + + # new client accepted + my $new_passwd = @{$msg_hash->{new_passwd}}[0]; + + # add entry to known_clients_db + my $events = @{$msg_hash->{events}}[0]; + my $act_timestamp = &get_time; + my $res = $main::known_clients_db->add_dbentry( {table=>'known_clients', + primkey=>['hostname'], + hostname=>$source, + events=>$events, + macaddress=>$mac_address, + status=>'registered', + hostkey=>$new_passwd, + timestamp=>$act_timestamp, + keylifetime=>$key_lifetime, + } ); + + if ($res != 0) { + &main::daemon_log("$session_id ERROR: cannot add entry to known_clients: $res"); + return; + } + + # return acknowledgement to client + $out_hash = &create_xml_hash("registered", $server_address, $source); + + + # give the new client his ldap config + # Workaround: Send within the registration response, if the client will get an ldap config later + my $new_ldap_config_out = &new_ldap_config($source, $session_id); + if($new_ldap_config_out && (!($new_ldap_config_out =~ /error/))) { + &add_content2xml_hash($out_hash, "ldap_available", "true"); + } elsif($new_ldap_config_out && $new_ldap_config_out =~ /error/){ + &add_content2xml_hash($out_hash, "error", $new_ldap_config_out); + + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET status='error', result='$new_ldap_config_out' ". + "WHERE status='processing' AND macaddress LIKE '$mac_address'"; + my $res = $main::job_db->update_dbentry($sql_statement); + &main::daemon_log("$session_id DEBUG: $sql_statement RESULT: $res", 7); + } + my $register_out = &create_xml_string($out_hash); + push(@out_msg_l, $register_out); + + # Really send the ldap config + if( $new_ldap_config_out && (!($new_ldap_config_out =~ /error/))) { + push(@out_msg_l, $new_ldap_config_out); + } + + # Send client hardware configuration + my $hardware_config_out = &hardware_config($msg, $msg_hash, $session_id); + if( $hardware_config_out ) { + push(@out_msg_l, $hardware_config_out); + } + + # Send client ntp server + my $ntp_config_out = &new_ntp_config($mac_address, $session_id); + if ($ntp_config_out) { + push(@out_msg_l, $ntp_config_out); + } + + # Send client syslog server + my $syslog_config_out = &new_syslog_config($mac_address, $session_id); + if ($syslog_config_out) { + push(@out_msg_l, $syslog_config_out); + } + + # notify registered client to all other server + my %mydata = ( 'client' => $source, 'macaddress' => $mac_address); + my $mymsg = &build_msg('new_foreign_client', $main::server_address, "KNOWN_SERVER", \%mydata); + push(@out_msg_l, $mymsg); + + &main::daemon_log("$session_id INFO: register client $source ($mac_address)", 5); + &main::daemon_log("$session_id INFO: client version: $client_status - $client_revision", 5); + return @out_msg_l; +} + + +#=== FUNCTION ================================================================ +# NAME: who_has +# PARAMETERS: msg_hash - hash - hash from function create_xml_hash +# RETURNS: nothing +# DESCRIPTION: process this incoming message +#=============================================================================== +sub who_has { + my ($msg_hash) = @_ ; + my @out_msg_l; + + # what is your search pattern + my $search_pattern = @{$msg_hash->{who_has}}[0]; + my $search_element = @{$msg_hash->{$search_pattern}}[0]; + &main::daemon_log("who_has-msg looking for $search_pattern $search_element", 7); + + # scanning known_clients for search_pattern + my @host_addresses = keys %$main::known_clients; + my $known_clients_entries = length @host_addresses; + my $host_address; + foreach my $host (@host_addresses) { + my $client_element = $main::known_clients->{$host}->{$search_pattern}; + if ($search_element eq $client_element) { + $host_address = $host; + last; + } + } + + # search was successful + if (defined $host_address) { + my $source = @{$msg_hash->{source}}[0]; + my $out_hash = &create_xml_hash("who_has_i_do", $server_address, $source, "mac_address"); + &add_content2xml_hash($out_hash, "mac_address", $search_element); + my $out_msg = &create_xml_string($out_hash); + push(@out_msg_l, $out_msg); + } + return @out_msg_l; +} + + +sub who_has_i_do { + my ($msg_hash) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $search_param = @{$msg_hash->{$header}}[0]; + my $search_value = @{$msg_hash->{$search_param}}[0]; + print "\ngot msg $header:\nserver $source has client with $search_param $search_value\n"; +} + + +sub new_syslog_config { + my ($mac_address, $session_id) = @_; + my $syslog_msg; + + # Build LDAP connection + my $ldap_handle = &main::get_ldap_handle($session_id); + if( not defined $ldap_handle ) { + &main::daemon_log("$session_id ERROR: cannot connect to ldap: $ldap_uri", 1); + return; + } + + # Perform search + my $ldap_res = $ldap_handle->search( base => $ldap_base, + scope => 'sub', + attrs => ['gotoSyslogServer'], + filter => "(&(objectClass=GOhard)(macaddress=$mac_address))"); + if($ldap_res->code) { + &main::daemon_log("$session_id ".$ldap_res->error, 1); + return; + } + + # Sanity check + if ($ldap_res->count != 1) { + &main::daemon_log("$session_id ERROR: client with mac address $mac_address not found/unique/active - not sending syslog config". + "\n\tbase: $ldap_base". + "\n\tscope: sub". + "\n\tattrs: gotoSyslogServer". + "\n\tfilter: (&(objectClass=GOhard)(macaddress=$mac_address))", 1); + return; + } + + my $entry= $ldap_res->entry(0); + my $filter_dn = &Net::LDAP::Util::escape_filter_value($entry->dn); + my $syslog_server = $entry->get_value("gotoSyslogServer"); + + # If no syslog server is specified at host, just have a look at the object group of the host + # Perform object group search + if (not defined $syslog_server) { + my $ldap_res = $ldap_handle->search( base => $ldap_base, + scope => 'sub', + attrs => ['gotoSyslogServer'], + filter => "(&(objectClass=gosaGroupOfNames)(member=$filter_dn))"); + if($ldap_res->code) { + &main::daemon_log("$session_id ".$ldap_res->error, 1); + return; + } + + # Sanity check + if ($ldap_res->count != 1) { + &main::daemon_log("$session_id ERROR: client with mac address $mac_address not found/unique/active - not sending syslog config". + "\n\tbase: $ldap_base". + "\n\tscope: sub". + "\n\tattrs: gotoSyslogServer". + "\n\tfilter: (&(objectClass=gosaGroupOfNames)(member=$filter_dn))", 1); + return; + } + + my $entry= $ldap_res->entry(0); + $syslog_server= $entry->get_value("gotoSyslogServer"); + } + + # Return if no syslog server specified + if (not defined $syslog_server) { + &main::daemon_log("$session_id WARNING: no syslog server specified for this host '$mac_address'", 3); + return; + } + + + # Add syslog server to 'syslog_config' message + my $syslog_msg_hash = &create_xml_hash("new_syslog_config", $server_address, $mac_address); + &add_content2xml_hash($syslog_msg_hash, "server", $syslog_server); + + return &create_xml_string($syslog_msg_hash); +} + + +sub new_ntp_config { + my ($address, $session_id) = @_; + my $ntp_msg; + + # Build LDAP connection + my $ldap_handle = &main::get_ldap_handle($session_id); + if( not defined $ldap_handle ) { + &main::daemon_log("$session_id ERROR: cannot connect to ldap: $ldap_uri", 1); + return; + } + + # Perform search + my $ldap_res = $ldap_handle->search( base => $ldap_base, + scope => 'sub', + attrs => ['gotoNtpServer'], + filter => "(&(objectClass=GOhard)(macaddress=$address))"); + if($ldap_res->code) { + &main::daemon_log("$session_id ".$ldap_res->error, 1); + return; + } + + # Sanity check + if ($ldap_res->count != 1) { + &main::daemon_log("$session_id ERROR: client with mac address $address not found/unique/active - not sending ntp config". + "\n\tbase: $ldap_base". + "\n\tscope: sub". + "\n\tattrs: gotoNtpServer". + "\n\tfilter: (&(objectClass=GOhard)(macaddress=$address))", 1); + return; + } + + my $entry= $ldap_res->entry(0); + my $filter_dn = &Net::LDAP::Util::escape_filter_value($entry->dn); + my @ntp_servers= $entry->get_value("gotoNtpServer"); + + # If no ntp server is specified at host, just have a look at the object group of the host + # Perform object group search + if ((not @ntp_servers) || (@ntp_servers == 0)) { + my $ldap_res = $ldap_handle->search( base => $ldap_base, + scope => 'sub', + attrs => ['gotoNtpServer'], + filter => "(&(objectClass=gosaGroupOfNames)(member=$filter_dn))"); + if($ldap_res->code) { + &main::daemon_log("$session_id ".$ldap_res->error, 1); + return; + } + + # Sanity check + if ($ldap_res->count != 1) { + &main::daemon_log("$session_id ERROR: client with mac address $address not found/unique/active - not sending ntp config". + "\n\tbase: $ldap_base". + "\n\tscope: sub". + "\n\tattrs: gotoNtpServer". + "\n\tfilter: (&(objectClass=gosaGroupOfNames)(member=$filter_dn))", 1); + return; + } + + my $entry= $ldap_res->entry(0); + @ntp_servers= $entry->get_value("gotoNtpServer"); + } + + # Return if no ntp server specified + if ((not @ntp_servers) || (@ntp_servers == 0)) { + &main::daemon_log("$session_id WARNING: no ntp server specified for this host '$address'", 3); + return; + } + + # Add each ntp server to 'ntp_config' message + my $ntp_msg_hash = &create_xml_hash("new_ntp_config", $server_address, $address); + foreach my $ntp_server (@ntp_servers) { + &add_content2xml_hash($ntp_msg_hash, "server", $ntp_server); + } + + return &create_xml_string($ntp_msg_hash); +} + + +#=== FUNCTION ================================================================ +# NAME: new_ldap_config +# PARAMETERS: address - string - ip address and port of a host +# RETURNS: gosa-si conform message +# DESCRIPTION: send to address the ldap configuration found for dn gotoLdapServer +#=============================================================================== +sub new_ldap_config { + my ($address, $session_id) = @_ ; + + my $sql_statement= "SELECT * FROM known_clients WHERE hostname='$address' OR macaddress LIKE '$address'"; + my $res = $main::known_clients_db->select_dbentry( $sql_statement ); + + # check hit + my $hit_counter = keys %{$res}; + if( not $hit_counter == 1 ) { + &main::daemon_log("$session_id ERROR: more or no hit found in known_clients_db by query '$sql_statement'", 1); + } + + $address = $res->{1}->{hostname}; + my $macaddress = $res->{1}->{macaddress}; + my $hostkey = $res->{1}->{hostkey}; + + if (not defined $macaddress) { + &main::daemon_log("$session_id ERROR: no mac address found for client $address", 1); + return; + } + + # Build LDAP connection + my $ldap_handle = &main::get_ldap_handle($session_id); + if( not defined $ldap_handle ) { + &main::daemon_log("$session_id ERROR: cannot connect to ldap: $ldap_uri", 1); + return; + } + + # Perform search + $mesg = $ldap_handle->search( base => $ldap_base, + scope => 'sub', + attrs => ['dn', 'gotoLdapServer', 'gosaUnitTag', 'FAIclass'], + filter => "(&(objectClass=GOhard)(macaddress=$macaddress))"); + if($mesg->code) { + &main::daemon_log("$session_id ".$mesg->error, 1); + return; + } + + # Sanity check + if ($mesg->count != 1) { + &main::daemon_log("$session_id ERROR: client with mac address $macaddress not found/unique/active - not sending ldap config". + "\n\tbase: $ldap_base". + "\n\tscope: sub". + "\n\tattrs: dn, gotoLdapServer". + "\n\tfilter: (&(objectClass=GOhard)(macaddress=$macaddress))", 1); + return; + } + + my $entry= $mesg->entry(0); + my $filter_dn= &Net::LDAP::Util::escape_filter_value($entry->dn); + my @servers= $entry->get_value("gotoLdapServer"); + my $unit_tag= $entry->get_value("gosaUnitTag"); + my @ldap_uris; + my $server; + my $base; + my $release; + my $dn= $entry->dn; + + # Fill release if available + my $FAIclass= $entry->get_value("FAIclass"); + if (defined $FAIclass && $FAIclass =~ /^.* :([A-Za-z0-9\/.]+).*$/) { + $release= $1; + } + + # Do we need to look at an object class? + if (not @servers){ + $mesg = $ldap_handle->search( base => $ldap_base, + scope => 'sub', + attrs => ['dn', 'gotoLdapServer', 'FAIclass'], + filter => "(&(objectClass=gosaGroupOfNames)(member=$filter_dn))"); + if($mesg->code) { + &main::daemon_log("$session_id ERROR: unable to search for '(&(objectClass=gosaGroupOfNames)(member=$filter_dn))': ".$mesg->error, 1); + return; + } + + # Sanity check + if ($mesg->count != 1) { + &main::daemon_log("$session_id ERROR: client with mac address $macaddress not found/unique/active - not sending ldap config". + "\n\tbase: $ldap_base". + "\n\tscope: sub". + "\n\tattrs: dn, gotoLdapServer, FAIclass". + "\n\tfilter: (&(objectClass=gosaGroupOfNames)(member=$filter_dn))", 1); + return; + } + + $entry= $mesg->entry(0); + $dn= $entry->dn; + @servers= $entry->get_value("gotoLdapServer"); + + if (not defined $release){ + $FAIclass= $entry->get_value("FAIclass"); + if (defined $FAIclass && $FAIclass =~ /^.* :([A-Za-z0-9\/.]+).*$/) { + $release= $1; + } + } + } + + @servers= sort (@servers); + + # complain if no ldap information found + if (@servers == 0) { + &main::daemon_log("$session_id ERROR: no gotoLdapServer information for LDAP entry '$dn'", 1); + } + + foreach $server (@servers){ + # Conversation for backward compatibility + if (not $server =~ /^\d+:[^:]+:ldap[^:]*:\/\// ) { + if ($server =~ /^([^:]+):([^:]+)$/ ) { + $server= "1:dummy:ldap://$1/$2"; + } elsif ($server =~ /^(\d+):([^:]+):(.*)$/ ) { + $server= "$1:dummy:ldap://$2/$3"; + } + } + + $base= $server; + $server =~ s%^[^:]+:[^:]+:(ldap.*://[^/]+)/.*$%$1%; + $base =~ s%^[^:]+:[^:]+:ldap.*://[^/]+/(.*)$%$1%; + push (@ldap_uris, $server); + } + + # Assemble data package + my %data = ( 'ldap_uri' => \@ldap_uris, 'ldap_base' => $base, + 'ldap_cfg' => \@ldap_cfg, 'pam_cfg' => \@pam_cfg,'nss_cfg' => \@nss_cfg ); + if (defined $release){ + $data{'release'}= $release; + } + + # Need to append GOto settings? + if (defined $goto_admin and defined $goto_secret){ + $data{'goto_admin'}= $goto_admin; + $data{'goto_secret'}= $goto_secret; + } + + # Append unit tag if needed + if (defined $unit_tag){ + + # Find admin base and department name + $mesg = $ldap_handle->search( base => $ldap_base, + scope => 'sub', + attrs => ['dn', 'ou'], + filter => "(&(objectClass=gosaAdministrativeUnit)(gosaUnitTag=$unit_tag))"); + #$mesg->code && die $mesg->error; + if($mesg->code) { + &main::daemon_log($mesg->error, 1); + return "error-unit-tag-count-0"; + } + + # Sanity check + if ($mesg->count != 1) { + &main::daemon_log("WARNING: cannot find administrative unit for client with tag $unit_tag", 1); + return "error-unit-tag-count-".$mesg->count; + } + + $entry= $mesg->entry(0); + $data{'admin_base'}= $entry->dn; + $data{'department'}= $entry->get_value("ou"); + + # Append unit Tag + $data{'unit_tag'}= $unit_tag; + } + + # Send information + return &build_msg("new_ldap_config", $server_address, $address, \%data); +} + + +#=== FUNCTION ================================================================ +# NAME: hardware_config +# PARAMETERS: address - string - ip address and port of a host +# RETURNS: +# DESCRIPTION: +#=============================================================================== +sub hardware_config { + my ($msg, $msg_hash, $session_id) = @_ ; + my $address = @{$msg_hash->{source}}[0]; + my $header = @{$msg_hash->{header}}[0]; + my $gotoHardwareChecksum = @{$msg_hash->{gotoHardwareChecksum}}[0]; + + my $sql_statement= "SELECT * FROM known_clients WHERE hostname='$address'"; + my $res = $main::known_clients_db->select_dbentry( $sql_statement ); + + # check hit + my $hit_counter = keys %{$res}; + if( not $hit_counter == 1 ) { + &main::daemon_log("$session_id ERROR: more or no hit found in known_clients_db by query by '$address'", 1); + } + my $macaddress = $res->{1}->{macaddress}; + my $hostkey = $res->{1}->{hostkey}; + + if (not defined $macaddress) { + &main::daemon_log("$session_id ERROR: no mac address found for client $address", 1); + return; + } + + # Build LDAP connection + my $ldap_handle = &main::get_ldap_handle($session_id); + if( not defined $ldap_handle ) { + &main::daemon_log("$session_id ERROR: cannot connect to ldap: $ldap_uri", 1); + return; + } + + # Perform search + $mesg = $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + filter => "(&(objectClass=GOhard)(|(macAddress=$macaddress)(dhcpHWaddress=ethernet $macaddress)))" + ); + + if($mesg->count() == 0) { + &main::daemon_log("Host was not found in LDAP!", 1); + + # set status = hardware_detection at jobqueue if entry exists + # TODO + # resolve plain name for host + my $func_dic = {table=>$main::job_queue_tn, + primkey=>['macaddress', 'headertag'], + timestamp=>&get_time, + status=>'processing', + result=>'none', + progress=>'hardware-detection', + headertag=>'trigger_action_reinstall', + targettag=>$address, + xmlmessage=>'none', + macaddress=>$macaddress, + plainname=>'none', + siserver=>'localhost', + modified=>'1', + }; + my $hd_res = $main::job_db->add_dbentry($func_dic); + &main::daemon_log("$session_id INFO: add '$macaddress' to job queue as an installing job", 5); + + } else { + my $entry= $mesg->entry(0); + if (defined($entry->get_value("gotoHardwareChecksum"))) { + if (! $entry->get_value("gotoHardwareChecksum") eq $gotoHardwareChecksum) { + $entry->replace(gotoHardwareChecksum => $gotoHardwareChecksum); + if($entry->update($ldap_handle)) { + &main::daemon_log("$session_id INFO: Hardware changed! Detection triggered.", 5); + } + } else { + # Nothing to do + return; + } + } + } + + # Assemble data package + my %data = (); + + # Need to append GOto settings? + if (defined $goto_admin and defined $goto_secret){ + $data{'goto_admin'}= $goto_admin; + $data{'goto_secret'}= $goto_secret; + } + + # Send information + return &build_msg("detect_hardware", $server_address, $address, \%data); +} + +sub server_matches { + my $target = shift; + my $target_ip = ($1) if $target =~ /^([0-9\.]*?):.*$/; + if(!defined($target_ip) or length($target_ip) == 0) { + return; + } + + my $result = 0; + + if($server_ip eq $target_ip) { + $result= 1; + } elsif ($target_ip eq "0.0.0.0") { + $result= 1; + } elsif ($server_ip eq "0.0.0.0") { + if ($target_ip eq "127.0.0.1") { + $result= 1; + } else { + my $PROC_NET_ROUTE= ('/proc/net/route'); + + open(PROC_NET_ROUTE, "<$PROC_NET_ROUTE") + or die "Could not open $PROC_NET_ROUTE"; + + my @ifs = ; + + close(PROC_NET_ROUTE); + + # Eat header line + shift @ifs; + chomp @ifs; + foreach my $line(@ifs) { + my ($Iface,$Destination,$Gateway,$Flags,$RefCnt,$Use,$Metric,$Mask,$MTU,$Window,$IRTT)=split(/\s/, $line); + my $destination; + my $mask; + my ($d,$c,$b,$a)=unpack('a2 a2 a2 a2', $Destination); + $destination= sprintf("%d.%d.%d.%d", hex($a), hex($b), hex($c), hex($d)); + ($d,$c,$b,$a)=unpack('a2 a2 a2 a2', $Mask); + $mask= sprintf("%d.%d.%d.%d", hex($a), hex($b), hex($c), hex($d)); + if(new NetAddr::IP($target_ip)->within(new NetAddr::IP($destination, $mask))) { + # destination matches route, save mac and exit + $result= 1; + last; + } + } + } + } else { + &main::daemon_log("Target ip $target_ip does not match Server ip $server_ip",1); + } + + return $result; +} + +# vim:ts=4:shiftwidth:expandtab +1; diff --git a/trunk/gosa-si/modules/DBmysql.pm b/trunk/gosa-si/modules/DBmysql.pm new file mode 100644 index 000000000..7a7f67f7e --- /dev/null +++ b/trunk/gosa-si/modules/DBmysql.pm @@ -0,0 +1,347 @@ +package GOSA::DBmysql; + +use strict; +use warnings; +use DBI; +use Data::Dumper; +use GOSA::GosaSupportDaemon; +use Time::HiRes qw(usleep); + +my $col_names = {}; + +sub new { + my $class = shift; + my $database = shift; + my $host = shift; + my $username = shift; + my $password = shift; + + my $self = {dbh=>undef}; + my $dbh = DBI->connect("dbi:mysql:database=$database;host=$host", $username, $password,{ RaiseError => 1, AutoCommit => 1 }); + $dbh->{mysql_auto_reconnect} = 1; + $self->{dbh} = $dbh; + bless($self,$class); + + return($self); +} + + +sub create_table { + my $self = shift; + my $table_name = shift; + my $col_names_ref = shift; + my $recreate_table = shift || 0; + my @col_names; + my $col_names_string = join(", ", @$col_names_ref); + + if($recreate_table) { + $self->{dbh}->do("DROP TABLE $table_name"); + } + my $sql_statement = "CREATE TABLE IF NOT EXISTS $table_name ( $col_names_string ) ENGINE=INNODB"; + # &main::daemon_log("DEBUG: $sql_statement"); + eval { + $self->{dbh}->do($sql_statement); + }; + if($@) { + &main::daemon_log("ERROR: $sql_statement failed with $@", 1); + } + + return 0; +} + + +sub add_dbentry { + my $self = shift; + my $arg = shift; + my $res = 0; # default value + + # if dbh not specified, return errorflag 1 + my $table = $arg->{table}; + if( not defined $table ) { + return 1 ; + } + + # if timestamp is not provided, add timestamp + if( not exists $arg->{timestamp} ) { + $arg->{timestamp} = &get_time; + } + + # check primkey and run insert or update + my $primkeys = $arg->{'primkey'}; + my $prim_statement=""; + if( 0 != @$primkeys ) { # more than one primkey exist in list + my @prim_list; + foreach my $primkey (@$primkeys) { + if( not exists $arg->{$primkey} ) { + return (3, "primkey '$primkey' has no value for add_dbentry"); + } + push(@prim_list, "$primkey='".$arg->{$primkey}."'"); + } + $prim_statement = "WHERE ".join(" AND ", @prim_list); + + # check wether primkey is unique in table, otherwise return errorflag + my $sql_statement = "SELECT * FROM $table $prim_statement"; + eval { + # &main::daemon_log("DEBUG: $sql_statement"); + my $sth = $self->{dbh}->prepare($sql_statement); + $sth->execute; + $res = @{ $sth->fetchall_arrayref() }; + $sth->finish; + }; + if($@) { + &main::daemon_log("ERROR: $sql_statement failed with $@", 1); + } + + } + + # primkey is unique or no primkey specified -> run insert + if ($res == 0) { + # fetch column names of table + my $col_names = &get_table_columns($self, $table); + + #my $create_id=0; + #foreach my $col_name (@{$col_names}) { + # #if($col_name eq "id" && (! exists $arg->{$col_name})) { + # #&main::daemon_log("0 DEBUG: id field found without value! Creating autoincrement statement!", 7); + # $create_id=1; + # } + #} + + # assign values to column name variables + my @col_list; + my @val_list; + foreach my $col_name (@{$col_names}) { + # use function parameter for column values + if (exists $arg->{$col_name}) { + push(@col_list, $col_name); + push(@val_list, "'".$arg->{$col_name}."'"); + } + } + + my $sql_statement; + #if($create_id==1) { + # $sql_statement = "INSERT INTO $table (id, ".join(", ", @col_list).") VALUES ((select coalesce(max(id),0)+1), ".join(", ", @val_list).")"; + #} else { + $sql_statement = "INSERT INTO $table (".join(", ", @col_list).") VALUES (".join(", ", @val_list).")"; + #} + my $db_res; + # &main::daemon_log("DEBUG: $sql_statement",1); + eval { + $db_res = $self->{dbh}->do($sql_statement); + }; + if($@) { + &main::daemon_log("ERROR: $sql_statement failed with $@", 1); + } + + if( $db_res != 1 ) { + return (4, $sql_statement); + } + + # entry already exists -> run update + } else { + my @update_l; + while( my ($pram, $val) = each %{$arg} ) { + if( $pram eq 'table' ) { next; } + if( $pram eq 'primkey' ) { next; } + push(@update_l, "$pram='$val'"); + } + my $update_str= join(", ", @update_l); + $update_str= " SET $update_str"; + + my $sql_statement= "UPDATE $table $update_str $prim_statement"; + my $db_res = &update_dbentry($self, $sql_statement ); + } + + return 0; +} + + +sub update_dbentry { + my ($self, $sql)= @_; + my $db_answer= &exec_statement($self, $sql); + return $db_answer; +} + + +sub del_dbentry { + my ($self, $sql)= @_; + my $db_res= &exec_statement($self, $sql); + return $db_res; +} + + +sub get_table_columns { + my $self = shift; + my $table = shift; + my @column_names; + + my @res; + eval { + my $sth = $self->{dbh}->prepare("describe $table") or &main::daemon_log("ERROR: Preparation of statement 'describe $table' failed!", 1); + $sth->execute or &main::daemon_log("ERROR: Execution of statement 'describe $table' failed!", 1); + @res = @{ $sth->fetchall_arrayref() }; + $sth->finish or &main::daemon_log("ERROR: Finishing the statement handle failed!", 1); + }; + if($@) { + &main::daemon_log("ERROR: describe ('$table') failed with $@", 1); + } + + foreach my $column (@res) { + push(@column_names, @$column[0]); + } + + return \@column_names; +} + + +sub select_dbentry { + my ($self, $sql)= @_; + my $error= 0; + my $answer= {}; + my $db_answer= &exec_statement($self, $sql); + my @column_list; + + # fetch column list of db and create a hash with column_name->column_value of the select query + $sql =~ /SELECT ([\S\s]*?) FROM ([\S]*?)( |$)/g; + my $selected_cols = $1; + my $table = $2; + + # all columns are used for creating answer + if ($selected_cols eq '*') { + @column_list = @{ &get_table_columns($self, $table) }; + + # specific columns are used for creating answer + } else { + # remove all blanks and split string to list of column names + $selected_cols =~ s/ //g; + @column_list = split(/,/, $selected_cols); + } + + # create answer + my $hit_counter = 0; + my $list_len = @column_list; + foreach my $hit ( @{$db_answer} ){ + $hit_counter++; + for ( my $i = 0; $i < $list_len; $i++) { + $answer->{ $hit_counter }->{ $column_list[$i] } = @{ $hit }[$i]; + } + } + + return $answer; +} + + +sub show_table { + my $self = shift; + my $table_name = shift; + + my $sql_statement= "SELECT * FROM $table_name ORDER BY timestamp"; + my $res= &exec_statement($self, $sql_statement); + my @answer; + foreach my $hit (@{$res}) { + push(@answer, "hit: ".join(', ', @{$hit})); + } + + return join("\n", @answer); +} + + +sub exec_statement { + my $self = shift; + my $sql_statement = shift; + my $sth; + my @db_answer; + + # print STDERR Dumper($sql_statement); +# eval { + if($sql_statement =~ /^SELECT/i) { + $sth = $self->{dbh}->prepare($sql_statement) or &main::daemon_log("0 ERROR: Preparation of statement '$sql_statement' failed!", 1); + $sth->execute or &main::daemon_log("0 ERROR: Execution of statement '$sql_statement' failed!", 1); + if($sth->rows > 0) { + @db_answer = @{ $sth->fetchall_arrayref() } or &main::daemon_log("0 ERROR: Fetch() failed!", 1); + # print STDERR Dumper(@db_answer); + } + $sth->finish or &main::daemon_log("0 ERROR: Finishing the statement handle failed!", 1); + } else { + $self->{dbh}->do($sql_statement); + } +# }; +# if($@) { +# &main::daemon_log("0 ERROR: '$sql_statement' failed with '$@'", 1); +# } + # TODO : maybe an error handling and an erro feedback to invoking function + my $error = $self->{dbh}->err; + if ($error) { + &main::daemon_log("0 ERROR: ".@$self->{dbh}->errstr, 1); + } + + return \@db_answer; +} + + +sub exec_statementlist { + my $self = shift; + my $sql_list = shift; + my @db_answer; + + foreach my $sql (@$sql_list) { + if(defined($sql) && length($sql) > 0) { + # &main::daemon_log("DEBUG: $sql"); + eval { + if($sql =~ /^SELECT/i) { + my $sth = $self->{dbh}->prepare($sql); + # &main::daemon_log("DEBUG: ".$sth->execute); + if($sth->rows > 0) { + my @answer = @{$sth->fetchall_arrayref()}; + push @db_answer, @answer; + } + $sth->finish; + } else { + $self->{dbh}->do($sql); + } + }; + if($@) { + &main::daemon_log("ERROR: $sql failed with $@", 1); + } + } else { + next; + } + } + + return \@db_answer; +} + + +sub count_dbentries { + my ($self, $table)= @_; + my $error= 0; + my $answer= -1; + + my $sql_statement= "SELECT * FROM $table"; + my $db_answer= &select_dbentry($self, $sql_statement); + + my $count = keys(%{$db_answer}); + return $count; +} + + +sub move_table { + my ($self, $from, $to) = @_; + + my $sql_statement_drop = "DROP TABLE IF EXISTS $to"; + my $sql_statement_alter = "ALTER TABLE $from RENAME TO $to"; + + eval { + $self->{dbh}->do($sql_statement_drop); + $self->{dbh}->do($sql_statement_alter); + }; + + if($@) { + &main::daemon_log("ERROR: $sql_statement_drop failed with $@", 1); + } + + return; +} + + +1; diff --git a/trunk/gosa-si/modules/DBsqlite.pm b/trunk/gosa-si/modules/DBsqlite.pm new file mode 100644 index 000000000..541dfbb77 --- /dev/null +++ b/trunk/gosa-si/modules/DBsqlite.pm @@ -0,0 +1,407 @@ +package GOSA::DBsqlite; + +use strict; +use warnings; +use Carp; +use DBI; +use Data::Dumper; +use GOSA::GosaSupportDaemon; +use Time::HiRes qw(usleep); +use Fcntl ':flock'; # import LOCK_* constants + +my $col_names = {}; + +sub new { + my $class = shift; + my $db_name = shift; + + my $lock = $db_name.".si.lock"; + # delete existing lock - instance should be running only once + if(stat($lock)) { + &main::daemon_log("DEBUG: Removed existing lock file $lock.", 7); + unlink($lock); + } + my $self = {dbh=>undef,db_name=>undef,db_lock=>undef,db_lock_handle=>undef}; + my $dbh = DBI->connect("dbi:SQLite:dbname=$db_name", "", "", {RaiseError => 1, AutoCommit => 1}); + $self->{dbh} = $dbh; + $self->{db_name} = $db_name; + $self->{db_lock} = $lock; + bless($self,$class); + return($self); +} + + +sub lock { + my $self = shift; + open($self->{db_lock_handle}, ">>".($self->{db_lock})) unless ref $self->{db_lock_handle}; + flock($self->{db_lock_handle},LOCK_EX); + seek($self->{db_lock_handle}, 0, 2); +} + + +sub unlock { + my $self = shift; + flock($self->{db_lock_handle},LOCK_UN); +} + + +sub create_table { + my $self = shift; + my $table_name = shift; + my $col_names_ref = shift; + my @col_names; + foreach my $col_name (@$col_names_ref) { + my @t = split(" ", $col_name); + $col_name = $t[0]; + push(@col_names, $col_name); + } + + $col_names->{ $table_name } = $col_names_ref; + my $col_names_string = join("', '", @col_names); + my $sql_statement = "CREATE TABLE IF NOT EXISTS $table_name ( '$col_names_string' )"; + $self->lock(); + eval { + my $res = $self->{dbh}->do($sql_statement); + }; + if($@) { + $self->{dbh}->do("ANALYZE"); + eval { + my $res = $self->{dbh}->do($sql_statement); + }; + if($@) { + &main::daemon_log("ERROR: $sql_statement failed with $@", 1); + } + } + $self->unlock(); + + return 0; +} + + +sub add_dbentry { + my $self = shift; + my $arg = shift; + my $res = 0; # default value + + # if dbh not specified, return errorflag 1 + my $table = $arg->{table}; + if( not defined $table ) { + return 1 ; + } + + # if timestamp is not provided, add timestamp + if( not exists $arg->{timestamp} ) { + $arg->{timestamp} = &get_time; + } + + # check primkey and run insert or update + my $primkeys = $arg->{'primkey'}; + my $prim_statement=""; + if( 0 != @$primkeys ) { # more than one primkey exist in list + my @prim_list; + foreach my $primkey (@$primkeys) { + if( not exists $arg->{$primkey} ) { + return (3, "primkey '$primkey' has no value for add_dbentry"); + } + push(@prim_list, "$primkey='".$arg->{$primkey}."'"); + } + $prim_statement = "WHERE ".join(" AND ", @prim_list); + + # check wether primkey is unique in table, otherwise return errorflag + my $sql_statement = "SELECT * FROM $table $prim_statement"; + $self->lock(); + eval { + $res = @{ $self->{dbh}->selectall_arrayref($sql_statement) }; + }; + if($@) { + $self->{dbh}->do("ANALYZE"); + eval { + $res = @{ $self->{dbh}->selectall_arrayref($sql_statement) }; + }; + if($@) { + &main::daemon_log("ERROR: $sql_statement failed with $@", 1); + } + } + $self->unlock(); + + } + + # primkey is unique or no primkey specified -> run insert + if ($res == 0) { + # fetch column names of table + my $col_names = &get_table_columns($self, $table); + + my $create_id=0; + foreach my $col_name (@{$col_names}) { + if($col_name eq "id" && (! exists $arg->{$col_name})) { + #&main::daemon_log("0 DEBUG: id field found without value! Creating autoincrement statement!", 7); + $create_id=1; + } + } + + # assign values to column name variables + my @col_list; + my @val_list; + foreach my $col_name (@{$col_names}) { + # use function parameter for column values + if (exists $arg->{$col_name}) { + push(@col_list, "'".$col_name."'"); + push(@val_list, "'".$arg->{$col_name}."'"); + } + } + + my $sql_statement; + if($create_id==1) { + $sql_statement = "INSERT INTO $table ('id', ".join(", ", @col_list).") VALUES ((select coalesce(max(id), 0)+1 from $table), ".join(", ", @val_list).")"; + } else { + $sql_statement = "INSERT INTO $table (".join(", ", @col_list).") VALUES (".join(", ", @val_list).")"; + } + my $db_res; + $self->lock(); + eval { + $db_res = $self->{dbh}->do($sql_statement); + }; + if($@) { + $self->{dbh}->do("ANALYZE"); + eval { + $db_res = $self->{dbh}->do($sql_statement); + }; + if($@) { + &main::daemon_log("ERROR: $sql_statement failed with $@", 1); + } + } + $self->unlock(); + + if( $db_res != 1 ) { + return (4, $sql_statement); + } + + # entry already exists -> run update + } else { + my @update_l; + while( my ($pram, $val) = each %{$arg} ) { + if( $pram eq 'table' ) { next; } + if( $pram eq 'primkey' ) { next; } + push(@update_l, "$pram='$val'"); + } + my $update_str= join(", ", @update_l); + $update_str= " SET $update_str"; + + my $sql_statement= "UPDATE $table $update_str $prim_statement"; + my $db_res = &update_dbentry($self, $sql_statement ); + } + + return 0; +} + + +sub update_dbentry { + my ($self, $sql)= @_; + my $db_answer= &exec_statement($self, $sql); + return $db_answer; +} + + +sub del_dbentry { + my ($self, $sql)= @_;; + my $db_res= &exec_statement($self, $sql); + return $db_res; +} + + +sub get_table_columns { + my $self = shift; + my $table = shift; + my @column_names; + + if(exists $col_names->{$table}) { + @column_names = @{$col_names->{$table}}; + } else { + my @res; + $self->lock(); + eval { + @res = @{$self->{dbh}->selectall_arrayref("pragma table_info('$table')")}; + }; + if($@) { + $self->{dbh}->do("ANALYZE"); + eval { + @res = @{$self->{dbh}->selectall_arrayref("pragma table_info('$table')")}; + }; + if($@) { + &main::daemon_log("ERROR: pragma table_info('$table') failed with $@", 1); + } + } + $self->unlock(); + + foreach my $column (@res) { + push(@column_names, @$column[1]); + } + } + return \@column_names; + +} + + +sub select_dbentry { + my ($self, $sql)= @_; + my $error= 0; + my $answer= {}; + my $db_answer= &exec_statement($self, $sql); + my @column_list; + + # fetch column list of db and create a hash with column_name->column_value of the select query + $sql =~ /SELECT ([\S\s]*?) FROM ([\S]*?)( |$)/g; + my $selected_cols = $1; + my $table = $2; + + # all columns are used for creating answer + if ($selected_cols eq '*') { + @column_list = @{ &get_table_columns($self, $table) }; + + # specific columns are used for creating answer + } else { + # remove all blanks and split string to list of column names + $selected_cols =~ s/ //g; + @column_list = split(/,/, $selected_cols); + } + + # create answer + my $hit_counter = 0; + my $list_len = @column_list; + foreach my $hit ( @{$db_answer} ){ + $hit_counter++; + for ( my $i = 0; $i < $list_len; $i++) { + $answer->{ $hit_counter }->{ $column_list[$i] } = @{ $hit }[$i]; + } + } + + return $answer; +} + + +sub show_table { + my $self = shift; + my $table_name = shift; + + my $sql_statement= "SELECT * FROM $table_name ORDER BY timestamp"; + my $res= &exec_statement($self, $sql_statement); + my @answer; + foreach my $hit (@{$res}) { + push(@answer, "hit: ".join(', ', @{$hit})); + } + + return join("\n", @answer); +} + + +sub exec_statement { + my $self = shift; + my $sql_statement = shift; + my @db_answer; + + $self->lock(); + eval { + @db_answer = @{$self->{dbh}->selectall_arrayref($sql_statement)}; + }; + if($@) { + $self->{dbh}->do("ANALYZE"); + eval { + @db_answer = @{$self->{dbh}->selectall_arrayref($sql_statement)}; + }; + if($@) { + &main::daemon_log("ERROR: $sql_statement failed with $@", 1); + } + } + $self->unlock(); + # TODO : maybe an error handling and an erro feedback to invoking function + #my $error = @$self->{dbh}->err; + #if ($error) { + # my $error_string = @$self->{dbh}->errstr; + #} + + return \@db_answer; +} + + +sub exec_statementlist { + my $self = shift; + my $sql_list = shift; + my @db_answer; + + foreach my $sql (@$sql_list) { + if(defined($sql) && length($sql) > 0) { + $self->lock(); + eval { + my @answer = @{$self->{dbh}->selectall_arrayref($sql)}; + push @db_answer, @answer; + }; + if($@) { + $self->{dbh}->do("ANALYZE"); + eval { + my @answer = @{$self->{dbh}->selectall_arrayref($sql)}; + push @db_answer, @answer; + }; + if($@) { + &main::daemon_log("ERROR: $sql failed with $@", 1); + } + } + $self->unlock(); + } else { + next; + } + } + + return \@db_answer; +} + + +sub count_dbentries { + my ($self, $table)= @_; + my $error= 0; + my $answer= -1; + + my $sql_statement= "SELECT * FROM $table"; + my $db_answer= &select_dbentry($self, $sql_statement); + + my $count = keys(%{$db_answer}); + return $count; +} + + +sub move_table { + my ($self, $from, $to) = @_; + + my $sql_statement_drop = "DROP TABLE IF EXISTS $to"; + my $sql_statement_alter = "ALTER TABLE $from RENAME TO $to"; + + eval { + $self->{dbh}->do($sql_statement_drop); + }; + if($@) { + $self->{dbh}->do("ANALYZE"); + eval { + $self->{dbh}->do($sql_statement_drop); + }; + if($@) { + &main::daemon_log("ERROR: $sql_statement_drop failed with $@", 1); + } + } + + eval { + $self->{dbh}->do($sql_statement_alter); + }; + if($@) { + $self->{dbh}->do("ANALYZE"); + eval { + $self->{dbh}->do($sql_statement_alter); + }; + if($@) { + &main::daemon_log("ERROR: $sql_statement_alter failed with $@", 1); + } + } + + return; +} + + +1; diff --git a/trunk/gosa-si/modules/GosaPackages.pm b/trunk/gosa-si/modules/GosaPackages.pm new file mode 100644 index 000000000..3e1b0745c --- /dev/null +++ b/trunk/gosa-si/modules/GosaPackages.pm @@ -0,0 +1,313 @@ +package GosaPackages; + +use Exporter; +@ISA = ("Exporter"); + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use IO::Socket::INET; +use Socket; +use XML::Simple; +use File::Spec; +use Data::Dumper; +use MIME::Base64; + +my $event_dir = "/usr/lib/gosa-si/server/GosaPackages"; +use lib "/usr/lib/gosa-si/server/GosaPackages"; + +BEGIN{} +END{} + +my $network_interface; +my $gosa_mac_address; + +## START ########################## + +$network_interface= &get_interface_for_ip($main::server_ip); +$gosa_mac_address= &get_mac($network_interface); + +# complete addresses +if( inet_aton($main::server_ip) ){ $main::server_ip = inet_ntoa(inet_aton($main::server_ip)); } +$main::server_address = $main::server_ip.":".$main::server_port; + + + +# import local events +my ($error, $result, $event_hash) = &import_events($event_dir); +foreach my $log_line (@$result) { + if ($log_line =~ / succeed: /) { + &main::daemon_log("0 DEBUG: GosaPackages - $log_line", 7); + } else { + &main::daemon_log("0 ERROR: GosaPackages - $log_line", 1); + } +} + +# build vice versa event_hash, event_name => module +my $event2module_hash = {}; +while (my ($module, $mod_events) = each %$event_hash) { + while (my ($event_name, $nothing) = each %$mod_events) { + $event2module_hash->{$event_name} = $module; + } + +} + + +## FUNCTIONS ################################################################# + +sub get_module_info { + my @info = ($main::gosa_address, + $main::gosa_passwd, + $event_hash, + ); + return \@info; +} + + +#=== FUNCTION ================================================================ +# NAME: get_mac +# PARAMETERS: interface name (i.e. eth0) +# RETURNS: (mac address) +# DESCRIPTION: Uses ioctl to get mac address directly from system. +#=============================================================================== +sub get_mac { + my $ifreq= shift; + my $result; + if ($ifreq && length($ifreq) > 0) { + if($ifreq eq "all") { + $result = "00:00:00:00:00:00"; + } else { + my $SIOCGIFHWADDR= 0x8927; # man 2 ioctl_list + + # A configured MAC Address should always override a guessed value + if ($gosa_mac_address and length($gosa_mac_address) > 0) { + $result= $gosa_mac_address; + } + + socket SOCKET, PF_INET, SOCK_DGRAM, getprotobyname('ip') + or die "socket: $!"; + + if(ioctl SOCKET, $SIOCGIFHWADDR, $ifreq) { + my ($if, $mac)= unpack 'h36 H12', $ifreq; + + if (length($mac) > 0) { + $mac=~ m/^([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$/; + $mac= sprintf("%s:%s:%s:%s:%s:%s", $1, $2, $3, $4, $5, $6); + $result = $mac; + } + } + } + } + return $result; +} + + +#=== FUNCTION ================================================================ +# NAME: process_incoming_msg +# PARAMETERS: crypted_msg - string - incoming crypted message +# RETURNS: nothing +# DESCRIPTION: handels the proceeded distribution to the appropriated functions +#=============================================================================== +sub process_incoming_msg { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my @msg_l; + my @out_msg_l; + + &main::daemon_log("$session_id DEBUG: GosaPackages: msg to process '$header'", 7); + + if ($header =~ /^job_/) { + @msg_l = &process_job_msg($msg, $msg_hash, $session_id); + } + elsif ($header =~ /^gosa_/) { + @msg_l = &process_gosa_msg($msg, $msg_hash, $session_id); + } + else { + &main::daemon_log("$session_id ERROR: $header is not a valid GosaPackage-header, need a 'job_' or a 'gosa_' prefix", 1); + } + + foreach my $out_msg ( @msg_l ) { + # determine the correct outgoing source address to the corresponding target address + $out_msg =~ /(\S*)<\/target>/; + my $act_target = $1; + $act_target =~ s/GOSA/$main::server_address/; + my $act_server_ip = &main::get_local_ip_for_remote_ip(sprintf("%s", $act_target =~ /^([0-9\.]*?):.*$/)); + + # Patch the correct outgoing source address + if ($out_msg =~ /GOSA<\/source>/ ) { + $out_msg =~ s/GOSA<\/source>/$act_server_ip:$main::server_port<\/source>/g; + } + + # Add to each outgoing message the current POE session id + $out_msg =~ s/<\/xml>/$session_id<\/session_id><\/xml>/; + + + if (defined $out_msg){ + push(@out_msg_l, $out_msg); + } + } + + return \@out_msg_l; +} + + +sub process_gosa_msg { + my ($msg, $msg_hash, $session_id) = @_ ; + my $out_msg; + my @out_msg_l = ('nohandler'); + my $sql_events; + + # strip gosa_ prefix from header, it is not used any more + @{$msg_hash->{'header'}}[0] =~ s/gosa_//; + $msg =~ s/
      gosa_/
      /; + + my $header = @{$msg_hash->{'header'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + + # check local installed events + if( exists $event2module_hash->{$header} ) { + # a event exists with the header as name + &main::daemon_log("$session_id INFO: found event '$header' at event-module '".$event2module_hash->{$header}."'", 5); + no strict 'refs'; + @out_msg_l = &{$event2module_hash->{$header}."::$header"}( $msg, $msg_hash, $session_id ); + + # check client registered events + } else { + $sql_events = "SELECT * FROM $main::known_clients_tn WHERE ( (macaddress LIKE '$target') OR (hostname='$target') )"; + my $res = $main::known_clients_db->select_dbentry( $sql_events ); + my $l = keys(%$res); + + # set error if no or more than 1 hits are found for sql query + if ( $l != 1) { + @out_msg_l = ('knownclienterror'); + # found exact 1 hit in db + } else { + my $client_events = $res->{'1'}->{'events'}; + + # client is registered for this event, deliver this message to client + if (($client_events =~ /^$header,/) || ($client_events =~ /,$header,/) || ($client_events =~ /,$header$/)) { + &main::daemon_log("$session_id INFO: client '$target' is registerd for event '$header', forward message to client.", 5); + @out_msg_l = ( $msg ); + + # client is not registered for this event, set error + } else { + @out_msg_l = ('noeventerror'); + } + } + } + + # if delivery not possible raise error and return + if (not defined $out_msg_l[0]) { + @out_msg_l = (); + } elsif ($out_msg_l[0] eq 'nohandler') { + &main::daemon_log("$session_id ERROR: GosaPackages: no event handler or core function defined for '$header'", 1); + @out_msg_l = (); + } elsif ($out_msg_l[0] eq 'knownclienterror') { + &main::daemon_log("$session_id ERROR: no event handler found for '$header', check client registration events!", 1); + &main::daemon_log("$session_id ERROR: no or more than 1 hits are found at known_clients_db with sql query: '$sql_events'", 1); + &main::daemon_log("$session_id ERROR: processing is aborted and message will not be forwarded", 1); + @out_msg_l = (); + } elsif ($out_msg_l[0] eq 'noeventerror') { + &main::daemon_log("$session_id ERROR: client '$target' is not registered for event '$header', processing is aborted", 1); + @out_msg_l = (); + } + + return @out_msg_l; +} + + +sub process_job_msg { + my ($msg, $msg_hash, $session_id)= @_ ; + my $out_msg; + my $error = 0; + + my $header = @{$msg_hash->{'header'}}[0]; + $header =~ s/job_//; + my $target = @{$msg_hash->{'target'}}[0]; + + # If no timestamp is specified, use 19700101000000 + my $timestamp = "19700101000000"; + if( exists $msg_hash->{'timestamp'} ) { + $timestamp = @{$msg_hash->{'timestamp'}}[0]; + } + + # If no macaddress is specified, raise error + my $macaddress; + if( exists $msg_hash->{'macaddress'} ) { + $macaddress = @{$msg_hash->{'macaddress'}}[0]; + } elsif (@{$msg_hash->{'target'}}[0] =~ /^([0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2})$/i ) { + $macaddress = $1; + } else { + $error ++; + $out_msg = "". + "
      answer
      ". + "$main::server_address". + "GOSA". + "1". + "no mac address specified, neither in target-tag nor in macaddres-tag". + "
      "; + } + + # Determine plain_name for host + my $plain_name; + if ($header eq "opsi_install_client") { # Opsi installing clients use hostId as plain_name + if (not exists $msg_hash->{'hostId'}) { + $error++; + &daemon_log("$session_id ERROR: opsi_install_client-message has no xml-tag 'hostID', job was not created: $msg", 1); + } else { + $plain_name = $msg_hash->{'hostId'}[0]; + $header = "trigger_action_reinstall" + } + + } else { # Try to determine plain_name via ladp search + my $ldap_handle = &main::get_ldap_handle($session_id); + if( not defined $ldap_handle ) { + &main::daemon_log("$session_id ERROR: cannot connect to ldap", 1); + $plain_name = "none"; + } else { + my $mesg = $ldap_handle->search( + base => $main::ldap_base, + scope => 'sub', + attrs => ['cn'], + filter => "(macAddress=$macaddress)"); + if($mesg->code || ($mesg->count!=1)) { + &main::daemon_log($mesg->error, 1); + $plain_name = "none"; + } else { + my $entry= $mesg->entry(0); + $plain_name = $entry->get_value("cn"); + } + } + } + + # Add job to job queue + if( $error == 0 ) { + my $func_dic = {table=>$main::job_queue_tn, + primkey=>['macaddress', 'headertag'], + timestamp=>$timestamp, + status=>'waiting', + result=>'none', + progress=>'none', + headertag=>$header, + targettag=>$target, + xmlmessage=>$msg, + macaddress=>$macaddress, + plainname=>$plain_name, + siserver=>"localhost", + modified=>"1", + }; + my $res = $main::job_db->add_dbentry($func_dic); + if (not $res == 0) { + &main::daemon_log("$session_id ERROR: GosaPackages: process_job_msg: $res", 1); + } else { + &main::daemon_log("$session_id INFO: GosaPackages: $header job successfully added to job queue", 5); + } + $out_msg = "
      answer
      $main::server_addressGOSA$res
      "; + } + + my @out_msg_l = ( $out_msg ); + return @out_msg_l; +} + +# vim:ts=4:shiftwidth:expandtab +1; diff --git a/trunk/gosa-si/modules/GosaSupportDaemon.pm b/trunk/gosa-si/modules/GosaSupportDaemon.pm new file mode 100644 index 000000000..d6aafa43f --- /dev/null +++ b/trunk/gosa-si/modules/GosaSupportDaemon.pm @@ -0,0 +1,885 @@ +package GOSA::GosaSupportDaemon; + +use Exporter; +@ISA = qw(Exporter); +my @functions = ( + "create_passwd", + "create_xml_hash", + "get_content_from_xml_hash", + "add_content2xml_hash", + "create_xml_string", + "transform_msg2hash", + "get_time", + "get_utc_time", + "build_msg", + "db_res2xml", + "db_res2si_msg", + "get_where_statement", + "get_select_statement", + "get_update_statement", + "get_limit_statement", + "get_orderby_statement", + "get_dns_domains", + "get_server_addresses", + "get_logged_in_users", + "import_events", + "del_doubles", + "get_ip", + "get_interface_for_ip", + "get_interfaces", + "get_mac_for_interface", + "get_local_ip_for_remote_ip", + "is_local", + "run_as", + "inform_all_other_si_server", + "read_configfile", + "check_opsi_res", + "calc_timestamp", + "opsi_callobj2string", + ); +@EXPORT = @functions; +use strict; +use warnings; +use IO::Socket::INET; +use Crypt::Rijndael; +use Digest::MD5 qw(md5 md5_hex md5_base64); +use MIME::Base64; +use XML::Simple; +use Data::Dumper; +use Net::DNS; +use DateTime; + + +my $op_hash = { + 'eq' => '=', + 'ne' => '!=', + 'ge' => '>=', + 'gt' => '>', + 'le' => '<=', + 'lt' => '<', + 'like' => ' LIKE ', +}; + + +BEGIN {} + +END {} + +### Start ###################################################################### + +my $xml = new XML::Simple(); + +sub daemon_log { + my ($msg, $level) = @_ ; + &main::daemon_log($msg, $level); + return; +} + + +sub create_passwd { + my $new_passwd = ""; + for(my $i=0; $i<31; $i++) { + $new_passwd .= ("a".."z","A".."Z",0..9)[int(rand(62))] + } + + return $new_passwd; +} + + +sub del_doubles { + my %all; + $all{$_}=0 for @_; + return (keys %all); +} + + +#=== FUNCTION ================================================================ +# NAME: create_xml_hash +# PARAMETERS: header - string - message header (required) +# source - string - where the message come from (required) +# target - string - where the message should go to (required) +# [header_value] - string - something usefull (optional) +# RETURNS: hash - hash - nomen est omen +# DESCRIPTION: creates a key-value hash, all values are stored in a array +#=============================================================================== +sub create_xml_hash { + my ($header, $source, $target, $header_value) = @_; + my $hash = { + header => [$header], + source => [$source], + target => [$target], + $header => [$header_value], + }; + return $hash +} + + +#=== FUNCTION ================================================================ +# NAME: create_xml_string +# PARAMETERS: xml_hash - hash - hash from function create_xml_hash +# RETURNS: xml_string - string - xml string representation of the hash +# DESCRIPTION: transform the hash to a string using XML::Simple module +#=============================================================================== +sub create_xml_string { + my ($xml_hash) = @_ ; + my $xml_string = $xml->XMLout($xml_hash, RootName => 'xml'); + #$xml_string =~ s/[\n]+//g; + #daemon_log("create_xml_string:",7); + #daemon_log("$xml_string\n", 7); + return $xml_string; +} + + +sub transform_msg2hash { + my ($msg) = @_ ; + my $hash = $xml->XMLin($msg, ForceArray=>1); + + # xml tags without a content are created as an empty hash + # substitute it with an empty list + eval { + while( my ($xml_tag, $xml_content) = each %{ $hash } ) { + if( 1 == @{ $xml_content } ) { + # there is only one element in xml_content list ... + my $element = @{ $xml_content }[0]; + if( ref($element) eq "HASH" ) { + # and this element is an hash ... + my $len_element = keys %{ $element }; + if( $len_element == 0 ) { + # and this hash is empty, then substitute the xml_content + # with an empty string in list + $hash->{$xml_tag} = [ "none" ]; + } + } + } + } + }; + if( $@ ) { + $hash = undef; + } + + return $hash; +} + + +#=== FUNCTION ================================================================ +# NAME: add_content2xml_hash +# PARAMETERS: xml_ref - ref - reference to a hash from function create_xml_hash +# element - string - key for the hash +# content - string - value for the hash +# RETURNS: nothing +# DESCRIPTION: add key-value pair to xml_ref, if key alread exists, +# then append value to list +#=============================================================================== +sub add_content2xml_hash { + my ($xml_ref, $element, $content) = @_; + if(not exists $$xml_ref{$element} ) { + $$xml_ref{$element} = []; + } + my $tmp = $$xml_ref{$element}; + push(@$tmp, $content); + return; +} + + +sub get_time { + my ($seconds, $minutes, $hours, $monthday, $month, + $year, $weekday, $yearday, $sommertime) = localtime; + $hours = $hours < 10 ? $hours = "0".$hours : $hours; + $minutes = $minutes < 10 ? $minutes = "0".$minutes : $minutes; + $seconds = $seconds < 10 ? $seconds = "0".$seconds : $seconds; + $month+=1; + $month = $month < 10 ? $month = "0".$month : $month; + $monthday = $monthday < 10 ? $monthday = "0".$monthday : $monthday; + $year+=1900; + return "$year$month$monthday$hours$minutes$seconds"; +} + + +sub get_utc_time { + my $utc_time = qx(date --utc +%Y%m%d%H%M%S); + $utc_time =~ s/\s$//; + return $utc_time; +} + + +#=== FUNCTION ================================================================ +# NAME: build_msg +# DESCRIPTION: Send a message to a destination +# PARAMETERS: [header] Name of the header +# [from] sender ip +# [to] recipient ip +# [data] Hash containing additional attributes for the xml +# package +# RETURNS: nothing +#=============================================================================== +sub build_msg ($$$$) { + my ($header, $from, $to, $data) = @_; + + # data is of form, i.e. + # %data= ('ip' => $address, 'mac' => $mac); + + my $out_hash = &create_xml_hash($header, $from, $to); + + while ( my ($key, $value) = each(%$data) ) { + if(ref($value) eq 'ARRAY'){ + map(&add_content2xml_hash($out_hash, $key, $_), @$value); + } else { + &add_content2xml_hash($out_hash, $key, $value); + } + } + my $out_msg = &create_xml_string($out_hash); + return $out_msg; +} + + +sub db_res2xml { + my ($db_res) = @_ ; + my $xml = ""; + + my $len_db_res= keys %{$db_res}; + for( my $i= 1; $i<= $len_db_res; $i++ ) { + $xml .= "\n"; + my $hash= $db_res->{$i}; + while ( my ($column_name, $column_value) = each %{$hash} ) { + $xml .= "<$column_name>"; + my $xml_content; + if( $column_name eq "xmlmessage" ) { + $xml_content = &encode_base64($column_value); + } else { + $xml_content = defined $column_value ? $column_value : ""; + } + $xml .= $xml_content; + $xml .= ""; + } + $xml .= ""; + + } + + return $xml; +} + + +sub db_res2si_msg { + my ($db_res, $header, $target, $source) = @_; + + my $si_msg = ""; + $si_msg .= "
      $header
      "; + $si_msg .= "$source"; + $si_msg .= "$target"; + $si_msg .= &db_res2xml; + $si_msg .= "
      "; +} + + +sub get_where_statement { + my ($msg, $msg_hash) = @_; + my $error= 0; + + my $clause_str= ""; + if( (not exists $msg_hash->{'where'}) || (not exists @{$msg_hash->{'where'}}[0]->{'clause'}) ) { + $error++; + } + + if( $error == 0 ) { + my @clause_l; + my @where = @{@{$msg_hash->{'where'}}[0]->{'clause'}}; + foreach my $clause (@where) { + my $connector = $clause->{'connector'}[0]; + if( not defined $connector ) { $connector = "AND"; } + $connector = uc($connector); + delete($clause->{'connector'}); + + my @phrase_l ; + foreach my $phrase (@{$clause->{'phrase'}}) { + my $operator = "="; + if( exists $phrase->{'operator'} ) { + my $op = $op_hash->{$phrase->{'operator'}[0]}; + if( not defined $op ) { + &main::daemon_log("ERROR: Can not translate operator '$operator' in where-". + "statement to sql valid syntax. Please use 'eq', ". + "'ne', 'ge', 'gt', 'le', 'lt' in xml message\n", 1); + &main::daemon_log($msg, 8); + $op = "="; + } + $operator = $op; + delete($phrase->{'operator'}); + } + + my @xml_tags = keys %{$phrase}; + my $tag = $xml_tags[0]; + my $val = $phrase->{$tag}[0]; + if( ref($val) eq "HASH" ) { next; } # empty xml-tags should not appear in where statement + + # integer columns do not have to have single quotes besides the value + if ($tag eq "id") { + push(@phrase_l, "$tag$operator$val"); + } else { + push(@phrase_l, "$tag$operator'$val'"); + } + } + + if (not 0 == @phrase_l) { + my $clause_str .= join(" $connector ", @phrase_l); + push(@clause_l, "($clause_str)"); + } + } + + if( not 0 == @clause_l ) { + $clause_str = join(" AND ", @clause_l); + $clause_str = "WHERE ($clause_str) "; + } + } + + return $clause_str; +} + +sub get_select_statement { + my ($msg, $msg_hash)= @_; + my $select = "*"; + if( exists $msg_hash->{'select'} ) { + my $select_l = \@{$msg_hash->{'select'}}; + $select = join(', ', @{$select_l}); + } + return $select; +} + + +sub get_update_statement { + my ($msg, $msg_hash) = @_; + my $error= 0; + my $update_str= ""; + my @update_l; + + if( not exists $msg_hash->{'update'} ) { $error++; }; + + if( $error == 0 ) { + my $update= @{$msg_hash->{'update'}}[0]; + while( my ($tag, $val) = each %{$update} ) { + my $val= @{$update->{$tag}}[0]; + push(@update_l, "$tag='$val'"); + } + if( 0 == @update_l ) { $error++; }; + } + + if( $error == 0 ) { + $update_str= join(', ', @update_l); + $update_str= "SET $update_str "; + } + + return $update_str; +} + +sub get_limit_statement { + my ($msg, $msg_hash)= @_; + my $error= 0; + my $limit_str = ""; + my ($from, $to); + + if( not exists $msg_hash->{'limit'} ) { $error++; }; + + if( $error == 0 ) { + eval { + my $limit= @{$msg_hash->{'limit'}}[0]; + $from= @{$limit->{'from'}}[0]; + $to= @{$limit->{'to'}}[0]; + }; + if( $@ ) { + $error++; + } + } + + if( $error == 0 ) { + $limit_str= "LIMIT $from, $to"; + } + + return $limit_str; +} + +sub get_orderby_statement { + my ($msg, $msg_hash)= @_; + my $error= 0; + my $order_str= ""; + my $order; + + if( not exists $msg_hash->{'orderby'} ) { $error++; }; + + if( $error == 0) { + eval { + $order= @{$msg_hash->{'orderby'}}[0]; + }; + if( $@ ) { + $error++; + } + } + + if( $error == 0 ) { + $order_str= "ORDER BY $order"; + } + + return $order_str; +} + +sub get_dns_domains() { + my $line; + my @searches; + open(RESOLV, "){ + $line= $_; + chomp $line; + $line =~ s/^\s+//; + $line =~ s/\s+$//; + $line =~ s/\s+/ /; + if ($line =~ /^domain (.*)$/ ){ + push(@searches, $1); + } elsif ($line =~ /^search (.*)$/ ){ + push(@searches, split(/ /, $1)); + } + } + close(RESOLV); + + my %tmp = map { $_ => 1 } @searches; + @searches = sort keys %tmp; + + return @searches; +} + + +sub get_server_addresses { + my $domain= shift; + my @result; + my $error_string; + + my $error = 0; + my $res = Net::DNS::Resolver->new; + my $query = $res->send("_gosa-si._tcp.".$domain, "SRV"); + my @hits; + + if ($query) { + foreach my $rr ($query->answer) { + push(@hits, $rr->target.":".$rr->port); + } + } + else { + $error_string = "determination of '_gosa-si._tcp' server in domain '$domain' failed: ".$res->errorstring; + $error++; + } + + if( $error == 0 ) { + foreach my $hit (@hits) { + my ($hit_name, $hit_port) = split(/:/, $hit); + chomp($hit_name); + chomp($hit_port); + + my $address_query = $res->send($hit_name); + if( 1 == length($address_query->answer) ) { + foreach my $rr ($address_query->answer) { + push(@result, $rr->address.":".$hit_port); + } + } + } + } + + return \@result, $error_string; +} + + +sub get_logged_in_users { + my $result = qx(/usr/bin/w -hs); + my @res_lines; + + if( defined $result ) { + chomp($result); + @res_lines = split("\n", $result); + } + + my @logged_in_user_list; + foreach my $line (@res_lines) { + chomp($line); + my @line_parts = split(/\s+/, $line); + push(@logged_in_user_list, $line_parts[0]); + } + + return @logged_in_user_list; + +} + + +sub import_events { + my ($event_dir) = @_; + my $event_hash; + my $error = 0; + my @result = (); + if (not -e $event_dir) { + $error++; + push(@result, "cannot find directory or directory is not readable: $event_dir"); + } + + my $DIR; + if ($error == 0) { + opendir ($DIR, $event_dir) or do { + $error++; + push(@result, "cannot open directory '$event_dir' for reading: $!\n"); + } + } + + if ($error == 0) { + while (defined (my $event = readdir ($DIR))) { + if( $event eq "." || $event eq ".." ) { next; } + + # Check config file to exclude disabled event plugins (i.e. Opsi) + if ($event eq "opsi_com.pm" && $main::opsi_enabled ne "true") { + &main::daemon_log("WARNING: opsi-module is installed but not enabled in config file, please set under section '[OPSI]': 'enabled=true'", 3); + next; + } + + # try to import event module + eval{ require $event; }; + if( $@ ) { + $error++; + #push(@result, "import of event module '$event' failed: $@"); + #next; + + &main::daemon_log("ERROR: Import of event module '$event' failed: $@",1); + exit(1); + } + + # fetch all single events + $event =~ /(\S*?).pm$/; + my $event_module = $1; + my $events_l = eval( $1."::get_events()") ; + foreach my $event_name (@{$events_l}) { + $event_hash->{$event_module}->{$event_name} = ""; + } + my $events_string = join( ", ", @{$events_l}); + push(@result, "import of event module '$event' succeed: $events_string"); + } + + close $DIR; + } + + return ($error, \@result, $event_hash); + +} + + +#=== FUNCTION ================================================================ +# NAME: get_ip +# PARAMETERS: interface name (i.e. eth0) +# RETURNS: (ip address) +# DESCRIPTION: Uses ioctl to get ip address directly from system. +#=============================================================================== +sub get_ip { + my $ifreq= shift; + my $result= ""; + my $SIOCGIFADDR= 0x8915; # man 2 ioctl_list + my $proto= getprotobyname('ip'); + + socket SOCKET, PF_INET, SOCK_DGRAM, $proto + or die "socket: $!"; + + if(ioctl SOCKET, $SIOCGIFADDR, $ifreq) { + my ($if, $sin) = unpack 'a16 a16', $ifreq; + my ($port, $addr) = sockaddr_in $sin; + my $ip = inet_ntoa $addr; + + if ($ip && length($ip) > 0) { + $result = $ip; + } + } + + return $result; +} + + +#=== FUNCTION ================================================================ +# NAME: get_interface_for_ip +# PARAMETERS: ip address (i.e. 192.168.0.1) +# RETURNS: array: list of interfaces if ip=0.0.0.0, matching interface if found, undef else +# DESCRIPTION: Uses proc fs (/proc/net/dev) to get list of interfaces. +#=============================================================================== +sub get_interface_for_ip { + my $result; + my $ip= shift; + if ($ip && length($ip) > 0) { + my @ifs= &get_interfaces(); + if($ip eq "0.0.0.0") { + $result = "all"; + } else { + foreach (@ifs) { + my $if=$_; + if(&get_ip($if) eq $ip) { + $result = $if; + } + } + } + } + return $result; +} + +#=== FUNCTION ================================================================ +# NAME: get_interfaces +# PARAMETERS: none +# RETURNS: (list of interfaces) +# DESCRIPTION: Uses proc fs (/proc/net/dev) to get list of interfaces. +#=============================================================================== +sub get_interfaces { + my @result; + my $PROC_NET_DEV= ('/proc/net/dev'); + + open(PROC_NET_DEV, "<$PROC_NET_DEV") + or die "Could not open $PROC_NET_DEV"; + + my @ifs = ; + + close(PROC_NET_DEV); + + # Eat first two line + shift @ifs; + shift @ifs; + + chomp @ifs; + foreach my $line(@ifs) { + my $if= (split /:/, $line)[0]; + $if =~ s/^\s+//; + push @result, $if; + } + + return @result; +} + +sub get_local_ip_for_remote_ip { + my $remote_ip= shift; + my $result="0.0.0.0"; + + if($remote_ip =~ /^(\d\d?\d?\.){3}\d\d?\d?$/) { + my $PROC_NET_ROUTE= ('/proc/net/route'); + + open(PROC_NET_ROUTE, "<$PROC_NET_ROUTE") + or die "Could not open $PROC_NET_ROUTE"; + + my @ifs = ; + + close(PROC_NET_ROUTE); + + # Eat header line + shift @ifs; + chomp @ifs; + foreach my $line(@ifs) { + my ($Iface,$Destination,$Gateway,$Flags,$RefCnt,$Use,$Metric,$Mask,$MTU,$Window,$IRTT)=split(/\s/, $line); + my $destination; + my $mask; + my ($d,$c,$b,$a)=unpack('a2 a2 a2 a2', $Destination); + $destination= sprintf("%d.%d.%d.%d", hex($a), hex($b), hex($c), hex($d)); + ($d,$c,$b,$a)=unpack('a2 a2 a2 a2', $Mask); + $mask= sprintf("%d.%d.%d.%d", hex($a), hex($b), hex($c), hex($d)); + if(new NetAddr::IP($remote_ip)->within(new NetAddr::IP($destination, $mask))) { + # destination matches route, save mac and exit + $result= &get_ip($Iface); + last; + } + } + } + + return $result; +} + + +sub get_mac_for_interface { + my $ifreq= shift; + my $result; + if ($ifreq && length($ifreq) > 0) { + if($ifreq eq "all") { + $result = "00:00:00:00:00:00"; + } else { + my $SIOCGIFHWADDR= 0x8927; # man 2 ioctl_list + + # A configured MAC Address should always override a guessed value + if ($main::server_mac_address and length($main::server_mac_address) > 0) { + $result= $main::server_mac_address; + } + + socket SOCKET, PF_INET, SOCK_DGRAM, getprotobyname('ip') + or die "socket: $!"; + + if(ioctl SOCKET, $SIOCGIFHWADDR, $ifreq) { + my ($if, $mac)= unpack 'h36 H12', $ifreq; + + if (length($mac) > 0) { + $mac=~ m/^([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])([0-9a-f][0-9a-f])$/; + $mac= sprintf("%s:%s:%s:%s:%s:%s", $1, $2, $3, $4, $5, $6); + $result = $mac; + } + } + } + } + return $result; +} + + +#=== FUNCTION ================================================================ +# NAME: is_local +# PARAMETERS: Server Address +# RETURNS: true if Server Address is on this host, false otherwise +# DESCRIPTION: Checks all interface addresses, stops on first match +#=============================================================================== +sub is_local { + my $server_address = shift || ""; + my $result = 0; + + my $server_ip = $1 if $server_address =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):\d{1,6}$/; + + if(defined($server_ip) && length($server_ip) > 0) { + foreach my $interface(&get_interfaces()) { + my $ip_address= &get_ip($interface); + if($ip_address eq $server_ip) { + $result = 1; + last; + } + } + } + + return $result; +} + + +#=== FUNCTION ================================================================ +# NAME: run_as +# PARAMETERS: uid, command +# RETURNS: hash with keys 'resultCode' = resultCode of command and +# 'output' = program output +# DESCRIPTION: Runs command as uid using the sudo utility. +#=============================================================================== +sub run_as { + my ($uid, $command) = @_; + my $sudo_cmd = `which sudo`; + chomp($sudo_cmd); + if(! -x $sudo_cmd) { + &main::daemon_log("ERROR: The sudo utility is not available! Please fix this!"); + } + my $cmd_line= "$sudo_cmd su - $uid -c '$command'"; + open(PIPE, "$cmd_line |"); + my $result = {'resultCode' => $?}; + $result->{'command'} = $cmd_line; + push @{$result->{'output'}}, ; + return $result; +} + + +#=== FUNCTION ================================================================ +# NAME: inform_other_si_server +# PARAMETERS: message +# RETURNS: nothing +# DESCRIPTION: Sends message to all other SI-server found in known_server_db. +#=============================================================================== +sub inform_all_other_si_server { + my ($msg) = @_; + + # determine all other si-server from known_server_db + my $sql_statement= "SELECT * FROM $main::known_server_tn"; + my $res = $main::known_server_db->select_dbentry( $sql_statement ); + + while( my ($hit_num, $hit) = each %$res ) { + my $act_target_address = $hit->{hostname}; + my $act_target_key = $hit->{hostkey}; + + # determine the source address corresponding to the actual target address + my ($act_target_ip, $act_target_port) = split(/:/, $act_target_address); + my $act_source_address = &main::get_local_ip_for_remote_ip($act_target_ip).":$act_target_port"; + + # fill into message the correct target and source addresses + my $act_msg = $msg; + $act_msg =~ s/\w*<\/target>/$act_target_address<\/target>/g; + $act_msg =~ s/\w*<\/source>/$act_source_address<\/source>/g; + + # send message to the target + &main::send_msg_to_target($act_msg, $act_target_address, $act_target_key, "foreign_job_updates" , "J"); + } + + return; +} + + +sub read_configfile { + my ($cfg_file, %cfg_defaults) = @_ ; + my $cfg; + if( defined( $cfg_file) && ( (-s $cfg_file) > 0 )) { + if( -r $cfg_file ) { + $cfg = Config::IniFiles->new( -file => $cfg_file, -nocase => 1 ); + } else { + print STDERR "Couldn't read config file!"; + } + } else { + $cfg = Config::IniFiles->new() ; + } + foreach my $section (keys %cfg_defaults) { + foreach my $param (keys %{$cfg_defaults{ $section }}) { + my $pinfo = $cfg_defaults{ $section }{ $param }; + ${@$pinfo[ 0 ]} = $cfg->val( $section, $param, @$pinfo[ 1 ] ); + } + } +} + + +sub check_opsi_res { + my $res= shift; + + if($res) { + if ($res->is_error) { + my $error_string; + if (ref $res->error_message eq "HASH") { + $error_string = $res->error_message->{'message'}; + } else { + $error_string = $res->error_message; + } + return 1, $error_string; + } + } else { + return 1, $main::opsi_client->status_line; + } + return 0; +} + +sub calc_timestamp { + my ($timestamp, $operation, $value) = @_ ; + my $res_timestamp = 0; + + $value = int($value); + $timestamp = int($timestamp); + $timestamp =~ /(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)/; + my $dt = DateTime->new( year => $1, + month => $2, + day => $3, + hour => $4, + minute => $5, + second => $6, + ); + + if ($operation eq "plus" || $operation eq "+") { + $dt->add( seconds => $value); + $res_timestamp = $dt->ymd('').$dt->hms(''); + } + + if ($operation eq "minus" || $operation eq "-") { + $dt->subtract(seconds => $value); + $res_timestamp = $dt->ymd('').$dt->hms(''); + } + + return $res_timestamp; +} + +sub opsi_callobj2string { + my ($callobj) = @_; + my @callobj_string; + while(my ($key, $value) = each(%$callobj)) { + my $value_string = ""; + if (ref($value) eq "ARRAY") { + $value_string = join(",", @$value); + } else { + $value_string = $value; + } + push(@callobj_string, "$key=$value_string") + } + return join(", ", @callobj_string); +} + +1; diff --git a/trunk/gosa-si/modules/ServerPackages.pm b/trunk/gosa-si/modules/ServerPackages.pm new file mode 100644 index 000000000..9d6591840 --- /dev/null +++ b/trunk/gosa-si/modules/ServerPackages.pm @@ -0,0 +1,121 @@ +package ServerPackages; + +use Exporter; +@ISA = ("Exporter"); + +# Each module has to have a function 'process_incoming_msg'. This function works as a interface to gosa-sd and receives the msg hash from gosa-sd. 'process_incoming_function checks, wether it has a function to process the incoming msg and forward the msg to it. + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Data::Dumper; + +my $event_dir = "/usr/lib/gosa-si/server/ServerPackages"; +use lib "/usr/lib/gosa-si/server/ServerPackages"; + +BEGIN{} +END {} + + +### START ##################################################################### + +# import local events +my ($error, $result, $event_hash) = &import_events($event_dir); +foreach my $log_line (@$result) { + if ($log_line =~ / succeed: /) { + &main::daemon_log("0 DEBUG: ServerPackages - $log_line", 7); + } else { + &main::daemon_log("0 ERROR: ServerPackages - $log_line", 1); + } +} + +# build vice versa event_hash, event_name => module +my $event2module_hash = {}; +while (my ($module, $mod_events) = each %$event_hash) { + while (my ($event_name, $nothing) = each %$mod_events) { + $event2module_hash->{$event_name} = $module; + } + +} + +### FUNCTIONS ##################################################################### + +sub get_module_info { + my @info = ($main::server_address, + $main::ServerPackages_key, + $event_hash, + ); + return \@info; +} + +sub process_incoming_msg { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $sql_events; + + my @msg_l; + my @out_msg_l = ( 'nohandler' ); + + + # if message is being forwarded from another server, strip of header prefixes + $header =~ s/^gosa_|^job_//; + $msg =~ s/
      gosa_(\w+)<\/header>|
      job_(\w+)<\/header>/
      $1<\/header>/; + + + &main::daemon_log("$session_id DEBUG: ServerPackages: msg to process '$header'", 7); + if( exists $event2module_hash->{$header} ) { + # a event exists with the header as name + &main::daemon_log("$session_id INFO: found event '$header' at event-module '".$event2module_hash->{$header}."'", 5); + no strict 'refs'; + @out_msg_l = &{$event2module_hash->{$header}."::$header"}($msg, $msg_hash, $session_id); + + } else { + $sql_events = "SELECT * FROM $main::known_clients_tn WHERE ( (macaddress LIKE '$target') OR (hostname='$target') )"; + my $res = $main::known_clients_db->select_dbentry( $sql_events ); + my $l = keys(%$res); + + +# TODO +# $l == 1, knownclienterror wird eigentlich nicht gebraucht. hier soll nohandler anspringen + # set error if no or more than 1 hits are found for sql query + if ( $l != 1) { + @out_msg_l = ('knownclienterror'); + + # found exact 1 hit in db + } else { + my $client_events = $res->{'1'}->{'events'}; + + # client is registered for this event, deliver this message to client + if ($client_events =~ /,$header,/) { + $msg =~ s/
      gosa_/
      /; + @out_msg_l = ( $msg ); + + # client is not registered for this event, set error + } else { + @out_msg_l = ('noeventerror'); + } + } + } + + # if delivery not possible raise error and return + if (not defined $out_msg_l[0]) { + @out_msg_l = (); + } elsif ($out_msg_l[0] eq 'nohandler') { + &main::daemon_log("$session_id ERROR: ServerPackages: no event handler defined for '$header'", 1); + @out_msg_l = (); + } elsif ($out_msg_l[0] eq 'knownclienterror') { + &main::daemon_log("$session_id ERROR: no or more than 1 hits are found at known_clients_db with sql query: '$sql_events'", 1); + &main::daemon_log("$session_id ERROR: processing is aborted and message will not be forwarded", 1); + @out_msg_l = (); + } elsif ($out_msg_l[0] eq 'noeventerror') { + &main::daemon_log("$session_id ERROR: client '$target' is not registered for event '$header', processing is aborted", 1); + @out_msg_l = (); + } + + return \@out_msg_l; +} + + +1; diff --git a/trunk/gosa-si/modules/TestModule.pm b/trunk/gosa-si/modules/TestModule.pm new file mode 100644 index 000000000..90c8d6abb --- /dev/null +++ b/trunk/gosa-si/modules/TestModule.pm @@ -0,0 +1,76 @@ +package TestModule; + +use Exporter; +@ISA = ("Exporter"); + +use strict; +use warnings; +use GosaSupportDaemon; + +BEGIN{ +} + +END{} + +### START ########## + + +sub get_module_tags { + + # lese config file aus dort gibt es eine section Basic + # dort stehen drei packettypen, für die sich das modul anmelden kann, gosa-admin-packages, + # server-packages, client-packages + my %tag_hash = (gosa_admin_packages => "yes", + server_packages => "yes", + client_packages => "yes", + ); + return \%tag_hash; +} + + +sub process_incoming_msg { + my ($crypted_msg) = @_ ; + if(not defined $crypted_msg) { + &main::daemon_log("function 'process_incoming_msg': got no msg", 7); + } + &main::daemon_log("TestModule: crypted_msg:$crypted_msg", 7); + &main::daemon_log("TestModule: crypted_msg len:".length($crypted_msg), 7); + + + # chomp address from host who send the message + $crypted_msg =~ /^([\s\S]*?)\.(\d{1,3}?)\.(\d{1,3}?)\.(\d{1,3}?)\.(\d{1,3}?)$/; + $crypted_msg = $1; + my $host = sprintf("%s.%s.%s.%s", $2, $3, $4, $5); + + my $gosa_passwd = $main::gosa_passwd; + my $gosa_cipher = &create_ciphering($gosa_passwd); + + my $in_msg; + my $in_hash; + eval{ + $in_msg = &decrypt_msg($crypted_msg, $gosa_cipher); + $in_hash = &transform_msg2hash($in_msg); + }; + if ($@) { + &main::daemon_log("TestModul konnte msg nicht entschlüsseln:", 5); + &main::daemon_log("$@", 7); + return; + } + + my $header = @{$in_hash->{header}}[0]; + my $ip_address = @{$in_hash->{target}}[0]; + + + # hier kommt die logik suche den entsprechenden daemon, der den client target hat + + my $out_hash = &create_xml_hash("halt", $main::server_address, $ip_address); + + &send_msg_hash2address($out_hash, $ip_address); + + &main::daemon_log("TestModul: ip $ip_address bekommt $header "); + return ; +} + + + + diff --git a/trunk/gosa-si/modules/oui.txt b/trunk/gosa-si/modules/oui.txt new file mode 100644 index 000000000..6432b36c7 --- /dev/null +++ b/trunk/gosa-si/modules/oui.txt @@ -0,0 +1,70911 @@ + +OUI Organization +company_id Organization + Address + + +00-00-00 (hex) XEROX CORPORATION +000000 (base 16) XEROX CORPORATION + M/S 105-50C + 800 PHILLIPS ROAD + WEBSTER NY 14580 + UNITED STATES + +00-00-01 (hex) XEROX CORPORATION +000001 (base 16) XEROX CORPORATION + ZEROX SYSTEMS INSTITUTE + M/S 105-50C 800 PHILLIPS ROAD + WEBSTER NY 14580 + UNITED STATES + +00-00-02 (hex) XEROX CORPORATION +000002 (base 16) XEROX CORPORATION + XEROX SYSTEMS INSTITUTE + M/S 105-50C 800 PHILLIPS ROAD + WEBSTER NY 14580 + UNITED STATES + +00-00-03 (hex) XEROX CORPORATION +000003 (base 16) XEROX CORPORATION + ZEROX SYSTEMS INSTITUTE + M/S 105-50CEW AVENUE 800 PHILLIPS ROAD + WEBSTER NY 14580 + UNITED STATES + +00-00-04 (hex) XEROX CORPORATION +000004 (base 16) XEROX CORPORATION + OFFICE SYSTEMS DIVISION + M/S 105-50C 800 PHILLIPS ROAD4 + WEBSTER NY 14580 + UNITED STATES + +00-00-05 (hex) XEROX CORPORATION +000005 (base 16) XEROX CORPORATION + OFFICE SYSTEMS DIVISION + M/S 105-50C 800 PHILLIPS ROAD + WEBSTER NY 14580 + UNITED STATES + +00-00-06 (hex) XEROX CORPORATION +000006 (base 16) XEROX CORPORATION + OFFICE SYSTEMS DIVISION + M/S 105-50C 800 PHILLIPS ROAD4 + WEBSTER NY 14580 + UNITED STATES + +00-00-07 (hex) XEROX CORPORATION +000007 (base 16) XEROX CORPORATION + OFFICE SYSTEMS DIVISION + M/S 105-50C 800 PHILLIPS ROAD + WEBSTER NY 14580 + UNITED STATES + +00-00-08 (hex) XEROX CORPORATION +000008 (base 16) XEROX CORPORATION + OFFICE SYSTEMS DIVISION + M/S/ 105-50C 800 PHILLIPS ROAD + WEBSTER NY 14580 + UNITED STATES + +00-00-09 (hex) XEROX CORPORATION +000009 (base 16) XEROX CORPORATION + 1350 JEFFERSON ROAD + ROCHESTER NY 14623 + UNITED STATES + +00-00-0A (hex) OMRON TATEISI ELECTRONICS CO. +00000A (base 16) OMRON TATEISI ELECTRONICS CO. + SECTION NFF, SYSTEM R&D LABS. + RESEARCH & TECH. ASSESSMNT DIV SHIMOKAII + KYOTO 617 JAPAN + JAPAN + +00-00-0B (hex) MATRIX CORPORATION +00000B (base 16) MATRIX CORPORATION + 1203 NEW HOPE ROAD + RALEIGH NORTH CAROLINA 276 + UNITED STATES + +00-00-0C (hex) CISCO SYSTEMS, INC. +00000C (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-00-0D (hex) FIBRONICS LTD. +00000D (base 16) FIBRONICS LTD. + MATAM TECHNOLOGY CENTER + HAIFA 31905 + ISRAEL + ISRAEL + +00-00-0E (hex) FUJITSU LIMITED +00000E (base 16) FUJITSU LIMITED + COMPUTER SYS. ARCHITECTURE DEP + MAIN FRAME DIV. 1015 KAMIKODANAKA, NAKAH + KAWASAKI 211 + JAPAN + +00-00-0F (hex) NEXT, INC. +00000F (base 16) NEXT, INC. + 3475 DEER CREEK ROAD + PALO ALTO CA 94304 + UNITED STATES + +00-00-10 (hex) SYTEK INC. +000010 (base 16) SYTEK INC. + 1225 CHARLESTON ROAD + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-00-11 (hex) NORMEREL SYSTEMES +000011 (base 16) NORMEREL SYSTEMES + 58 RUE POTTIER + 78150 LE CHESNAY + FRANCE + FRANCE + +00-00-12 (hex) INFORMATION TECHNOLOGY LIMITED +000012 (base 16) INFORMATION TECHNOLOGY LIMITED + MAYLANDS AVE. HEMEL HEMPSTEAD + HERTS ENGLAND + UNITED KINGDOM + +00-00-13 (hex) CAMEX +000013 (base 16) CAMEX + 75 KNEELAND STREET + BOSTON MA 02111 + UNITED STATES + +00-00-14 (hex) NETRONIX +000014 (base 16) NETRONIX + 1372 MCDOWELL BLVD. + PETULAMA CA 94952 + UNITED STATES + +00-00-15 (hex) DATAPOINT CORPORATION +000015 (base 16) DATAPOINT CORPORATION + 9725 DATAPOINT DRIVE + MS S-37 + SAN ANTONIO TX 78284 + UNITED STATES + +00-00-16 (hex) DU PONT PIXEL SYSTEMS . +000016 (base 16) DU PONT PIXEL SYSTEMS . + MEADLAKE PLACE + THORPE LEA ROAD EGHAM, SURREY TW20 8HE + ENGLAND + UNITED KINGDOM + +00-00-17 (hex) TEKELEC +000017 (base 16) TEKELEC + 26540 AGOURA ROAD + CALABASAS CA 91302 + UNITED STATES + +00-00-18 (hex) WEBSTER COMPUTER CORPORATION +000018 (base 16) WEBSTER COMPUTER CORPORATION + 16040 REDWOOD LODGE ROAD + LOS GATOS CA 95033-9260 + UNITED STATES + +00-00-19 (hex) APPLIED DYNAMICS INTERNATIONAL +000019 (base 16) APPLIED DYNAMICS INTERNATIONAL + 3800 STONE SCHOOL ROAD + ANN ARBOR MI 48104-2499 + UNITED STATES + +00-00-1A (hex) ADVANCED MICRO DEVICES +00001A (base 16) ADVANCED MICRO DEVICES + P.O. BOX 3453 + M/S 26 + SUNNYVALE CA 94088 + UNITED STATES + +00-00-1B (hex) NOVELL INC. +00001B (base 16) NOVELL INC. + 122 EAST 1700 SOUTH + M/S: E-12-1 + PROVO UT 84606 + UNITED STATES + +00-00-1C (hex) BELL TECHNOLOGIES +00001C (base 16) BELL TECHNOLOGIES + 330 WARREN AVENUE + FREMONT CA 94539 + UNITED STATES + +00-00-1D (hex) CABLETRON SYSTEMS, INC. +00001D (base 16) CABLETRON SYSTEMS, INC. + 35 INDUSTRIAL WAY + P.O. BOX 5005 + ROCHESTER NH 03867 + UNITED STATES + +00-00-1E (hex) TELSIST INDUSTRIA ELECTRONICA +00001E (base 16) TELSIST INDUSTRIA ELECTRONICA + RUA VILHENA DE MORAES, 380 + BARRA DA TIJUCA RIO DE JANEIRO, RJ CEP 2 + BRAZIL + BRAZIL + +00-00-1F (hex) Telco Systems, Inc. +00001F (base 16) Telco Systems, Inc. + 63 Nathan Street + Norwood MA 02072 + UNITED STATES + +00-00-20 (hex) DATAINDUSTRIER DIAB AB +000020 (base 16) DATAINDUSTRIER DIAB AB + BOX 2029 + S-183 02 TABY + SWEDEN + SWEDEN + +00-00-21 (hex) SUREMAN COMP. & COMMUN. CORP. +000021 (base 16) SUREMAN COMP. & COMMUN. CORP. + 10F-5 NO. 7, SEC. 3 + HSIN SHENG N. RD., + TAIPEI TAIWAN, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-00-22 (hex) VISUAL TECHNOLOGY INC. +000022 (base 16) VISUAL TECHNOLOGY INC. + 1703 MIDDLESEX STREET + LOWELL MA 01851 + UNITED STATES + +00-00-23 (hex) ABB INDUSTRIAL SYSTEMS AB +000023 (base 16) ABB INDUSTRIAL SYSTEMS AB + DEPT. SEISY/LKSB + S-721 67 VASTERAS + SWEDEN + SWEDEN + +00-00-24 (hex) CONNECT AS +000024 (base 16) CONNECT AS + HOERKAER 7-9 + DK 2730 HERLEV + DENMARK + DENMARK + +00-00-25 (hex) RAMTEK CORP. +000025 (base 16) RAMTEK CORP. + 810 W. MAUDE AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-00-26 (hex) SHA-KEN CO., LTD. +000026 (base 16) SHA-KEN CO., LTD. + MINAMI-OTSUKA + 2-26-13, TOSHIMA-KU + TOKYO JAPAN + JAPAN + +00-00-27 (hex) JAPAN RADIO COMPANY +000027 (base 16) JAPAN RADIO COMPANY + LABORATORY + 5-1-1 SHIMORENJAKU MITAKA-SHI, TOKYO + JAPAN + JAPAN + +00-00-28 (hex) PRODIGY SYSTEMS CORPORATION +000028 (base 16) PRODIGY SYSTEMS CORPORATION + 2601 CASEY DRIVE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-00-29 (hex) IMC NETWORKS CORP. +000029 (base 16) IMC NETWORKS CORP. + 16931 MILLIKEN AVE. + IRVINE CA 92714-5013 + UNITED STATES + +00-00-2A (hex) TRW - SEDD/INP +00002A (base 16) TRW - SEDD/INP + 1800 GLENN CURTISS STREET + M/S DH6/2826 + CARSON CA 90746 + UNITED STATES + +00-00-2B (hex) CRISP AUTOMATION, INC +00002B (base 16) CRISP AUTOMATION, INC + 5160 BLAZER PARKWAY + DUBLIN OH 43017 + UNITED STATES + +00-00-2C (hex) AUTOTOTE LIMITED +00002C (base 16) AUTOTOTE LIMITED + 100 BELLEVUE ROAD + NEWARK DELAWARE 19714 + UNITED STATES + +00-00-2D (hex) CHROMATICS INC +00002D (base 16) CHROMATICS INC + 2558 MOUNTAIN INDUSTRIAL BLVD + TUCKER GA 30084 + UNITED STATES + +00-00-2E (hex) SOCIETE EVIRA +00002E (base 16) SOCIETE EVIRA + ZONE PORTUAIRE DE BREGAILLON + 83500 LA SEYNE SUR MER + FRANCE + FRANCE + +00-00-2F (hex) TIMEPLEX INC. +00002F (base 16) TIMEPLEX INC. + 530 CHESTNUT RIDGE ROAD + WOODCLIFF LAKE NJ 07675 + UNITED STATES + +00-00-30 (hex) VG LABORATORY SYSTEMS LTD +000030 (base 16) VG LABORATORY SYSTEMS LTD + TRIBUNE AVENUE + ALTRINCHAM, MANCHESTER, WA14 5TP + ENGLAND + UNITED KINGDOM + +00-00-31 (hex) QPSX COMMUNICATIONS PTY LTD +000031 (base 16) QPSX COMMUNICATIONS PTY LTD + 33 RICHARDSON STREET + WEST PERTH 6005 + WESTERN AUSTRALIA + AUSTRALIA + +00-00-32 (hex) Marconi plc +000032 (base 16) Marconi plc + 28 ELSTREE WAY, BOREHAMWOOD + HERTFORDSHIRE WD6 1RX + UNITED KINGDOM + UNITED KINGDOM + +00-00-33 (hex) EGAN MACHINERY COMPANY +000033 (base 16) EGAN MACHINERY COMPANY + SOUTH ADAMSVILLE ROAD + SOMMERVILLE NJ 08876 + UNITED STATES + +00-00-34 (hex) NETWORK RESOURCES CORPORATION +000034 (base 16) NETWORK RESOURCES CORPORATION + 61 EAST DAGGETT DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-00-35 (hex) SPECTRAGRAPHICS CORPORATION +000035 (base 16) SPECTRAGRAPHICS CORPORATION + OR + LAN MANUFACTURING ENGINEER 9707 WAPLES S + SAN DIEGO CA 92121 + UNITED STATES + +00-00-36 (hex) ATARI CORPORATION +000036 (base 16) ATARI CORPORATION + 1196 BORREGAS AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-00-37 (hex) OXFORD METRICS LIMITED +000037 (base 16) OXFORD METRICS LIMITED + UNIT 8, 7 WEST WAY, + BOTLEY,OXFORD, OX2 OJB + UNITED KINGDOM + UNITED KINGDOM + +00-00-38 (hex) CSS LABS +000038 (base 16) CSS LABS + 2134 SOUTH RIPCHEY + SANTA ANA CA 92705 + UNITED STATES + +00-00-39 (hex) TOSHIBA CORPORATION +000039 (base 16) TOSHIBA CORPORATION + COMPUTER DIVISION + 1-1-1 SHIBAURA, MINATO-KU + TOKYO 105 JAPAN + JAPAN + +00-00-3A (hex) CHYRON CORPORATION +00003A (base 16) CHYRON CORPORATION + 265 SPAGNOLI ROAD + MELVILLE NY 11747 + UNITED STATES + +00-00-3B (hex) i Controls, Inc. +00003B (base 16) i Controls, Inc. + 12F Doonsan building, 105-7 + Nonhyun-dong, Gangnam-gu Seoul + KOREA 135-714 + KOREA, REPUBLIC OF + +00-00-3C (hex) AUSPEX SYSTEMS INC. +00003C (base 16) AUSPEX SYSTEMS INC. + 5200 GREAT AMERICA PKWY + SANTA CLARA CA 95054 + UNITED STATES + +00-00-3D (hex) UNISYS +00003D (base 16) UNISYS + MS8-010 + P.O. BOX 6685 + SAN JOSE CA 95150-6685 + UNITED STATES + +00-00-3E (hex) SIMPACT +00003E (base 16) SIMPACT + 9210 SKY PARK COURT + SAN DIEGO CA 92123 + UNITED STATES + +00-00-3F (hex) SYNTREX, INC. +00003F (base 16) SYNTREX, INC. + 246 INDUSTRIAL WAY WEST + EATONTOWN NJ 07724 + UNITED STATES + +00-00-40 (hex) APPLICON, INC. +000040 (base 16) APPLICON, INC. + 4251 PLYMOUTH RD 48015 + PO BOX 986 + ANN ARBOR MI 48106-0986 + UNITED STATES + +00-00-41 (hex) ICE CORPORATION +000041 (base 16) ICE CORPORATION + 17945 SKYPARK CIRCLE + SUITE E + IRVINE CA 92714 + UNITED STATES + +00-00-42 (hex) METIER MANAGEMENT SYSTEMS LTD. +000042 (base 16) METIER MANAGEMENT SYSTEMS LTD. + 3 FOUNDATION STREET + IPSWICH SUFFOLK IP4 1BG + ENGLAND + UNITED KINGDOM + +00-00-43 (hex) MICRO TECHNOLOGY +000043 (base 16) MICRO TECHNOLOGY + 4905 EAST LAPALMA + ANAHEIM CA 92807 + UNITED STATES + +00-00-44 (hex) CASTELLE CORPORATION +000044 (base 16) CASTELLE CORPORATION + 3255-3 SCOTT BOULEVARD + SANTA CLARA CA 95054 + UNITED STATES + +00-00-45 (hex) FORD AEROSPACE & COMM. CORP. +000045 (base 16) FORD AEROSPACE & COMM. CORP. + COLORADO SPRINGS OPERATION + 10440 STATE HIGHWAY 83 + COLORADO SPRINGS CO 80908 + UNITED STATES + +00-00-46 (hex) OLIVETTI NORTH AMERICA +000046 (base 16) OLIVETTI NORTH AMERICA + E 22425 APPLEWAY + LIBERTY LAKE WA 99019 + UNITED STATES + +00-00-47 (hex) NICOLET INSTRUMENTS CORP. +000047 (base 16) NICOLET INSTRUMENTS CORP. + 5225 VERONA ROAD + MADISON WI 53711 + UNITED STATES + +00-00-48 (hex) SEIKO EPSON CORPORATION +000048 (base 16) SEIKO EPSON CORPORATION + 80 HIROOKA SHIOJIRI-CITY + NAGANO-KEN + JAPAN 399-07 + JAPAN + +00-00-49 (hex) APRICOT COMPUTERS, LTD +000049 (base 16) APRICOT COMPUTERS, LTD + 90 VINCENT DRIVE + EDGBASTON, BIRMINGHAM B152SP + ENGLAND + UNITED KINGDOM + +00-00-4A (hex) ADC CODENOLL TECHNOLOGY CORP. +00004A (base 16) ADC CODENOLL TECHNOLOGY CORP. + 200 CORPORATE BLVD. SO. + YONKERS NY 10701 + UNITED STATES + +00-00-4B (hex) ICL DATA OY +00004B (base 16) ICL DATA OY + KUTOMOTIE 16-18 + 00380 HELSINKI P.O. BOX 458 SF-00101 HE + FINLAND + FINLAND + +00-00-4C (hex) NEC CORPORATION +00004C (base 16) NEC CORPORATION + 7-1 SHIBA 5-CHOME + MINATO-KU + TOKYO 108-01 JAPAN + JAPAN + +00-00-4D (hex) DCI CORPORATION +00004D (base 16) DCI CORPORATION + 64J PRINCETON-HIGHTSTOWN RD + #121 + PRINCETON JUNCTION NJ 08550 + UNITED STATES + +00-00-4E (hex) AMPEX CORPORATION +00004E (base 16) AMPEX CORPORATION + 581 CONFERENCE PLACE + GOLDEN CO 80401 + UNITED STATES + +00-00-4F (hex) LOGICRAFT, INC. +00004F (base 16) LOGICRAFT, INC. + 22 COTTON ROAD + NASHUA NH 03063 + UNITED STATES + +00-00-50 (hex) RADISYS CORPORATION +000050 (base 16) RADISYS CORPORATION + 15025 S.W. KOLL PARKWAY + BEAVERTON OR 97006-6056 + UNITED STATES + +00-00-51 (hex) HOB ELECTRONIC GMBH & CO. KG +000051 (base 16) HOB ELECTRONIC GMBH & CO. KG + BRANDSSTATTER-STR.2-10 + D-8502 ZIRNDORF + GERMANY + GERMANY + +00-00-52 (hex) Intrusion.com, Inc. +000052 (base 16) Intrusion.com, Inc. + 1101 E. ARAPAHO ROAD + RICHARDSON TX 75081 + +00-00-53 (hex) COMPUCORP +000053 (base 16) COMPUCORP + 2211 MICHIGAN AVENUE + SANTA MONICA CA 90404 + UNITED STATES + +00-00-54 (hex) MODICON, INC. +000054 (base 16) MODICON, INC. + ONE HIGH STREET + NORTH ANDOVER MA 01845-2699 + UNITED STATES + +00-00-55 (hex) COMMISSARIAT A L`ENERGIE ATOM. +000055 (base 16) COMMISSARIAT A L`ENERGIE ATOM. + 31, RUE DE LA FEDERATION + PARIS 75015 + FRANCE + FRANCE + +00-00-56 (hex) DR. B. STRUCK +000056 (base 16) DR. B. STRUCK + POB 1147 BAECKERBARG 6 + D-2000 TANGSTEDT/HAMBURG + W-GERMANY + GERMANY + +00-00-57 (hex) SCITEX CORPORATION LTD. +000057 (base 16) SCITEX CORPORATION LTD. + P.O. BOX 330 + 46103 HERZLIA B + ISRAEL + ISRAEL + +00-00-58 (hex) RACORE COMPUTER PRODUCTS INC. +000058 (base 16) RACORE COMPUTER PRODUCTS INC. + 2355 SOUTH 1070 WEST + SALT LAKE CITY UT 84119 + UNITED STATES + +00-00-59 (hex) HELLIGE GMBH +000059 (base 16) HELLIGE GMBH + E-SW + HEINRICH-VON-STEFAN-STR.4 D-7800 FREIBUR + WEST GERMANY + GERMANY + +00-00-5A (hex) SysKonnect GmbH +00005A (base 16) SysKonnect GmbH + SIEMENSSTRASSE 23 + 76275 ETTLINGEN + GERMANY + GERMANY + +00-00-5B (hex) ELTEC ELEKTRONIK AG +00005B (base 16) ELTEC ELEKTRONIK AG + Galileo-Galilei-Strasse 11 + POB 42 13 63 D-55071 MAINZ + GERMANY + GERMANY + +00-00-5C (hex) TELEMATICS INTERNATIONAL INC. +00005C (base 16) TELEMATICS INTERNATIONAL INC. + 1201 CYPRESS CREEK RD + FT. LAUDERDALE FL 33309 + UNITED STATES + +00-00-5D (hex) CS TELECOM +00005D (base 16) CS TELECOM + 4-16 AVENUE DU GENERAL LECLERC + BP 74 - 92263 FONTENAY AUX ROSES + FRANCE + FRANCE + +00-00-5E (hex) USC INFORMATION SCIENCES INST +00005E (base 16) USC INFORMATION SCIENCES INST + INTERNET ASS'NED NOS.AUTHORITY + 4676 ADMIRALTY WAY + MARINA DEL REY CA 90292-6695 + UNITED STATES + +00-00-5F (hex) SUMITOMO ELECTRIC IND., LTD. +00005F (base 16) SUMITOMO ELECTRIC IND., LTD. + 1-1-3, SHIMAYA + KONOHANA-KU OSAKA + 554 JAPAN + JAPAN + +00-00-60 (hex) KONTRON ELEKTRONIK GMBH +000060 (base 16) KONTRON ELEKTRONIK GMBH + OSKAR-VON-MILLER-STR. 1 + D-85385 ECHING + GERMANY + GERMANY + +00-00-61 (hex) GATEWAY COMMUNICATIONS +000061 (base 16) GATEWAY COMMUNICATIONS + 2941 ALTON AVENUE + IRVINE CA 92714 + UNITED STATES + +00-00-62 (hex) BULL HN INFORMATION SYSTEMS +000062 (base 16) BULL HN INFORMATION SYSTEMS + 300 CONCORD ROAD M/S 864A + BILLERICA MA 01821 + UNITED STATES + +00-00-63 (hex) BARCO CONTROL ROOMS GMBH +000063 (base 16) BARCO CONTROL ROOMS GMBH + An der Rossweid 5 + Karlsruhe D-76229 + GERMANY + +00-00-64 (hex) YOKOGAWA DIGITAL COMPUTER CORP +000064 (base 16) YOKOGAWA DIGITAL COMPUTER CORP + SI HEADQUARTERS DIVISION + NO. 25 KOWA BLDG 8-7 SANBANCHO CHIYODA-K + JAPAN + JAPAN + +00-00-65 (hex) Network General Corporation +000065 (base 16) Network General Corporation + 178 E Tsaman Dr + San Jose CA 95134 + UNITED STATES + +00-00-66 (hex) TALARIS SYSTEMS, INC. +000066 (base 16) TALARIS SYSTEMS, INC. + 11339 SORRENTO VALLEY ROAD + SAN DIEGO CA 92121 + UNITED STATES + +00-00-67 (hex) SOFT * RITE, INC. +000067 (base 16) SOFT * RITE, INC. + 15392 ASSEMBLY LANE, UNIT A + HUNTINGTON BEACH CA 92649 + UNITED STATES + +00-00-68 (hex) ROSEMOUNT CONTROLS +000068 (base 16) ROSEMOUNT CONTROLS + 1300 E. LAMBERT ROAD + LA HABRA CA 90632 + UNITED STATES + +00-00-69 (hex) CONCORD COMMUNICATIONS INC +000069 (base 16) CONCORD COMMUNICATIONS INC + 753 FOREST STREET + MARLBOROUGH MA 01752 + UNITED STATES + +00-00-6A (hex) COMPUTER CONSOLES INC. +00006A (base 16) COMPUTER CONSOLES INC. + COMPUTER PRODUCTS DIVISION + 9801 MUIRLANDS BLVD. + IRVINE CA 92718 + UNITED STATES + +00-00-6B (hex) SILICON GRAPHICS INC./MIPS +00006B (base 16) SILICON GRAPHICS INC./MIPS + 2011 NORTH SHORELINE BLVD. + P.O. BOX 7311 - BLDG. #10 + MOUNTAIN VIEW CA 94039-7311 + UNITED STATES + +00-00-6C (hex) PRIVATE +00006C (base 16) + +00-00-6D (hex) CRAY COMMUNICATIONS, LTD. +00006D (base 16) CRAY COMMUNICATIONS, LTD. + P.O. BOX 254, CAXTON WAY + WATFORD BUSINESS PARK WATFORD HERTS WD1 + UNITED KINGDOM + UNITED KINGDOM + +00-00-6E (hex) ARTISOFT, INC. +00006E (base 16) ARTISOFT, INC. + 691 EAST RIVER ROAD + TUCSON AZ 85704 + UNITED STATES + +00-00-6F (hex) Madge Ltd. +00006F (base 16) Madge Ltd. + Madge House + Priors Way + Maindenhead Berkshire SL6 2HP + UNITED KINGDOM + +00-00-70 (hex) HCL LIMITED +000070 (base 16) HCL LIMITED + RESEARCH & DEVELOPMENT UNIT + 72, LUZ CHURCH ROAD MADRSA-600 004 + INDIA + INDIA + +00-00-71 (hex) ADRA SYSTEMS INC. +000071 (base 16) ADRA SYSTEMS INC. + 59 TECHNOLOGY DRIVE + LOWELL MA 01851 + UNITED STATES + +00-00-72 (hex) MINIWARE TECHNOLOGY +000072 (base 16) MINIWARE TECHNOLOGY + BEEMDENSTRAAT 38 + 5004 CT WEERT (L) + THE NETHERLANDS + NETHERLANDS + +00-00-73 (hex) SIECOR CORPORATION +000073 (base 16) SIECOR CORPORATION + P.O. BOX 13625 + RESEARCH TRIANGLE PK NC 27709 + UNITED STATES + +00-00-74 (hex) RICOH COMPANY LTD. +000074 (base 16) RICOH COMPANY LTD. + 2446 TODA, ATSUGI CITY + KANAGAWA PREF., + 243 JAPAN + JAPAN + +00-00-75 (hex) Nortel Networks +000075 (base 16) Nortel Networks + Global Operations Engineering + Dep 6800 Program Manager 8200 Dixie Road + Brampton ON l6T 5P6 Cana + CANADA + +00-00-76 (hex) ABEKAS VIDEO SYSTEM +000076 (base 16) ABEKAS VIDEO SYSTEM + 101 GALVESTON DRIVE + REDWOOD CITY CA 94063 + UNITED STATES + +00-00-77 (hex) INTERPHASE CORPORATION +000077 (base 16) INTERPHASE CORPORATION + 13800 SENLAC + DALLAS TX 75234 + UNITED STATES + +00-00-78 (hex) LABTAM LIMITED +000078 (base 16) LABTAM LIMITED + 43 MALCOLM ROAD P.O. BOX297 + BRAESIDE, VICTORIA 3195 + AUSTRALIA + AUSTRALIA + +00-00-79 (hex) NETWORTH INCORPORATED +000079 (base 16) NETWORTH INCORPORATED + 8404 ESTERS BOULEVARD + IRVING TX 75063 + UNITED STATES + +00-00-7A (hex) DANA COMPUTER INC. +00007A (base 16) DANA COMPUTER INC. + 550 DEL REY AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-00-7B (hex) RESEARCH MACHINES +00007B (base 16) RESEARCH MACHINES + P.O. BOX 75 + MILL STREET OXFORD OX2 0BW + ENGLAND + UNITED KINGDOM + +00-00-7C (hex) AMPERE INCORPORATED +00007C (base 16) AMPERE INCORPORATED + SHINJUKU ASAHI BLDG. + 5-20 7-CHOME NISHI-SHINJUKU SHINJUKU-K + TOKYO JAPAN + JAPAN + +00-00-7D (hex) SUN MICROSYSTEMS, INC. +00007D (base 16) SUN MICROSYSTEMS, INC. + 4200 Network Circle + Santa Clara CA 95054 + UNITED STATES + +00-00-7E (hex) CLUSTRIX CORPORATION +00007E (base 16) CLUSTRIX CORPORATION + 960 HAMLIN COURT + SUNNYVALE CA 94089 + UNITED STATES + +00-00-7F (hex) LINOTYPE-HELL AG +00007F (base 16) LINOTYPE-HELL AG + POSTFACH 56 60 + MERGENTHALER ALLEE 55-75 6236 ESCHBORN B + GERMANY + GERMANY + +00-00-80 (hex) CRAY COMMUNICATIONS A/S +000080 (base 16) CRAY COMMUNICATIONS A/S + SMEDEHOLM 12-14 + 2730 HERLEV + DENMARK + DENMARK + +00-00-81 (hex) BAY NETWORKS +000081 (base 16) BAY NETWORKS + 4401 GREAT AMERICAN PARKWAY + PO BOX 58185 M/S SC01-05 + SANTA CLARA CA 95052-8185 + UNITED STATES + +00-00-82 (hex) LECTRA SYSTEMES SA +000082 (base 16) LECTRA SYSTEMES SA + CHEMIN DE MARTICOT + RESEARCH DEPARTMENT 33610 CESTAS + FRANCE + FRANCE + +00-00-83 (hex) TADPOLE TECHNOLOGY PLC +000083 (base 16) TADPOLE TECHNOLOGY PLC + 137 DITTON WALK + CAMBRIDGE CB5 8FN + ENGLAND + UNITED KINGDOM + +00-00-84 (hex) SUPERNET +000084 (base 16) SUPERNET + 846 DEL REY AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-00-85 (hex) CANON INC. +000085 (base 16) CANON INC. + DVTECH. DEV. CENTER DEPT.12 + 3-30-2, SHIMOMARUKO, OHTA-KU TOKYO 146 + JAPAN + JAPAN + +00-00-86 (hex) MEGAHERTZ CORPORATION +000086 (base 16) MEGAHERTZ CORPORATION + 605 NORTH--5600 WEST + SALT LAKE CITY UT 84116-3738 + UNITED STATES + +00-00-87 (hex) HITACHI, LTD. +000087 (base 16) HITACHI, LTD. + NETWORK ENGINEERING DIV. + HITACHI OMORI 2ND BLDG., 27-18 MINAMI OI + TOKYO 140 + JAPAN + +00-00-88 (hex) Brocade Communications Systems, Inc. +000088 (base 16) Brocade Communications Systems, Inc. + 1745 Technology Dr. + San Jose CA 95110 + UNITED STATES + +00-00-89 (hex) CAYMAN SYSTEMS INC. +000089 (base 16) CAYMAN SYSTEMS INC. + 26 LANSDOWNE STREET + CAMBRIDGE MA 02139 + UNITED STATES + +00-00-8A (hex) DATAHOUSE INFORMATION SYSTEMS +00008A (base 16) DATAHOUSE INFORMATION SYSTEMS + DIRECTOR OF OPERATIONS + MEON HOUSE, EAST TISTED NR. ALTON, HAMPS + GU34 3QW ENGLAND + UNITED KINGDOM + +00-00-8B (hex) INFOTRON +00008B (base 16) INFOTRON + 9 NORTH OLNEY + CHERRY HILL NJ 08003 + UNITED STATES + +00-00-8C (hex) Alloy Computer Products (Australia) Pty Ltd +00008C (base 16) Alloy Computer Products (Australia) Pty Ltd + Unit 4/585 Blackburn Road + Notting Hill Victoria 3168 + AUSTRALIA + +00-00-8D (hex) Cryptek Inc. +00008D (base 16) Cryptek Inc. + 1501 Moran Road + Sterling VA 20166 + UNITED STATES + +00-00-8E (hex) SOLBOURNE COMPUTER, INC. +00008E (base 16) SOLBOURNE COMPUTER, INC. + 1900 PIKE ROAD + LONGMONT COLORADO 80501 + UNITED STATES + +00-00-8F (hex) Raytheon +00008F (base 16) Raytheon + Integrated Defense Systems + 50 Apple Hill Drive + Tewksbury MA 01876 + UNITED STATES + +00-00-90 (hex) MICROCOM +000090 (base 16) MICROCOM + 500 RIVER RIDGE DRIVE + NORWOOD MA 02062-5028 + UNITED STATES + +00-00-91 (hex) ANRITSU CORPORATION +000091 (base 16) ANRITSU CORPORATION + 1800, ONNA + ATUGI-SHI KANAGAWA-KEN 243 + JAPAN + JAPAN + +00-00-92 (hex) COGENT DATA TECHNOLOGIES +000092 (base 16) COGENT DATA TECHNOLOGIES + 640 MULLIS STREET + FRIDAY HARBOR WA 98250 + UNITED STATES + +00-00-93 (hex) PROTEON INC. +000093 (base 16) PROTEON INC. + 4 TECH CIRCLE + NATICK MA 01760 + UNITED STATES + +00-00-94 (hex) ASANTE TECHNOLOGIES +000094 (base 16) ASANTE TECHNOLOGIES + 821 FOX LANE + SAN JOSE CA 95131 + UNITED STATES + +00-00-95 (hex) SONY TEKTRONIX CORP. +000095 (base 16) SONY TEKTRONIX CORP. + P.O. BOX 5209 TOKYO INT'L + TOKYO 100-31 + JAPAN + JAPAN + +00-00-96 (hex) MARCONI ELECTRONICS LTD. +000096 (base 16) MARCONI ELECTRONICS LTD. + BROWNS LANE, THE AIRPORT + PORTSMOUTH -- HAMPSHIRE P03 5PH + UNITED KINGDOM + UNITED KINGDOM + +00-00-97 (hex) EMC Corporation +000097 (base 16) EMC Corporation + 176 South Street + Hopkinton MA 01748 + UNITED STATES + +00-00-98 (hex) CROSSCOMM CORPORATION +000098 (base 16) CROSSCOMM CORPORATION + 450 DONALD LYNCH BOULEVARD + MARLBOROUGH MA 01752 + UNITED STATES + +00-00-99 (hex) MTX, INC. +000099 (base 16) MTX, INC. + 3301 TERMINAL DRIVE + RALEIGH NC 27604 + UNITED STATES + +00-00-9A (hex) RC COMPUTER A/S +00009A (base 16) RC COMPUTER A/S + LAUTRUPBJERG 1 + DK-2750 BALLERUP + DENMARK + DENMARK + +00-00-9B (hex) INFORMATION INTERNATIONAL, INC +00009B (base 16) INFORMATION INTERNATIONAL, INC + 5F., THE 7TH INDUSTRY BLDG. + 1-20-14 JINNAN SHIBUYA-KU TOKYO + JAPAN 150 + JAPAN + +00-00-9C (hex) ROLM MIL-SPEC COMPUTERS +00009C (base 16) ROLM MIL-SPEC COMPUTERS + 3151 ZANKER ROAD + SAN JOSE CA 95148 + UNITED STATES + +00-00-9D (hex) LOCUS COMPUTING CORPORATION +00009D (base 16) LOCUS COMPUTING CORPORATION + 9800 LA CIENEGA + INGLEWOOD CA 90301 + UNITED STATES + +00-00-9E (hex) MARLI S.A. +00009E (base 16) MARLI S.A. + CHEMIN TAVERNEY 3 + 1218 GENEVA + SWITZERLAND + SWITZERLAND + +00-00-9F (hex) AMERISTAR TECHNOLOGIES INC. +00009F (base 16) AMERISTAR TECHNOLOGIES INC. + 47 WHITTIER AVE. + MEDFORD NY 11763 + UNITED STATES + +00-00-A0 (hex) SANYO Electric Co., Ltd. +0000A0 (base 16) SANYO Electric Co., Ltd. + 5-5, Keihan-hondori 2-chome, + Moriguchi City Osaka 570-8677 + JAPAN + +00-00-A1 (hex) MARQUETTE ELECTRIC CO. +0000A1 (base 16) MARQUETTE ELECTRIC CO. + 8200 WEST TOWER AVENUE + MILWAUKEE WI 53223 + UNITED STATES + +00-00-A2 (hex) BAY NETWORKS +0000A2 (base 16) BAY NETWORKS + 4401 GREAT AMERICAN PKWY + M/S:SC01-05 + SANTA CLARA CA 95052-8185 + UNITED STATES + +00-00-A3 (hex) NETWORK APPLICATION TECHNOLOGY +0000A3 (base 16) NETWORK APPLICATION TECHNOLOGY + 1686 DELL AVENUE + CAMPBELL CA 95008 + UNITED STATES + +00-00-A4 (hex) ACORN COMPUTERS LIMITED +0000A4 (base 16) ACORN COMPUTERS LIMITED + FULBOURN ROAD, CHERRY HINTON + CAMBRIDGE CB1 4JN, + ENGLAND + UNITED KINGDOM + +00-00-A5 (hex) COMPATIBLE SYSTEMS CORP. +0000A5 (base 16) COMPATIBLE SYSTEMS CORP. + P.O. BOX 17220 + BOULDER CO 80308-7220 + UNITED STATES + +00-00-A6 (hex) NETWORK GENERAL CORPORATION +0000A6 (base 16) NETWORK GENERAL CORPORATION + 1296 B LAWRENCE STATION ROAD + SUNNYVALE CA 94089 + UNITED STATES + +00-00-A7 (hex) NETWORK COMPUTING DEVICES INC. +0000A7 (base 16) NETWORK COMPUTING DEVICES INC. + 350 NORTH BERNARDO + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-00-A8 (hex) STRATUS COMPUTER INC. +0000A8 (base 16) STRATUS COMPUTER INC. + 111 Powdermill Road + Maynard MA 01754 + UNITED STATES + +00-00-A9 (hex) NETWORK SYSTEMS CORP. +0000A9 (base 16) NETWORK SYSTEMS CORP. + 7600 BOONE AVENUE NORTH + MINNEAPOLIS MN 55428-1099 + UNITED STATES + +00-00-AA (hex) XEROX CORPORATION +0000AA (base 16) XEROX CORPORATION + OFFICE SYSTEMS DIVISION + M/S 105-50C 800 PHILLIPS ROAD + WEBSTER NY 14580 + UNITED STATES + +00-00-AB (hex) LOGIC MODELING CORPORATION +0000AB (base 16) LOGIC MODELING CORPORATION + 1520 MCCANDLESS DRIVE + MILPITAS CA 95035 + UNITED STATES + +00-00-AC (hex) CONWARE COMPUTER CONSULTING +0000AC (base 16) CONWARE COMPUTER CONSULTING + KILLISFELDSTRASSE 64 + 76227 KARLSRUHE + GERMANY + GERMANY + +00-00-AD (hex) BRUKER INSTRUMENTS INC. +0000AD (base 16) BRUKER INSTRUMENTS INC. + MANNING PARK + BILLERICA MA 01821 + UNITED STATES + +00-00-AE (hex) DASSAULT ELECTRONIQUE +0000AE (base 16) DASSAULT ELECTRONIQUE + 55, QUAI MARCEL DASSAULT + 92214 ST CLOUD + FRANCE + FRANCE + +00-00-AF (hex) NUCLEAR DATA INSTRUMENTATION +0000AF (base 16) NUCLEAR DATA INSTRUMENTATION + GOLF & MEACHAM ROADS + SCHAUMBERG IL 60196 + UNITED STATES + +00-00-B0 (hex) RND-RAD NETWORK DEVICES +0000B0 (base 16) RND-RAD NETWORK DEVICES + ATIDIM TECHNOL'CL BLDG. 1 + TEL AVIV 61131 + ISRAEL + ISRAEL + +00-00-B1 (hex) ALPHA MICROSYSTEMS INC. +0000B1 (base 16) ALPHA MICROSYSTEMS INC. + 3501 SUNFLOWER + SANTA ANA CA 92704 + UNITED STATES + +00-00-B2 (hex) TELEVIDEO SYSTEMS, INC. +0000B2 (base 16) TELEVIDEO SYSTEMS, INC. + 550 E. BROKAW ROAD + SAN JOSE CA 95161-9048 + UNITED STATES + +00-00-B3 (hex) CIMLINC INCORPORATED +0000B3 (base 16) CIMLINC INCORPORATED + 1957 CROOKS ROAD + TROY MI 48084 + UNITED STATES + +00-00-B4 (hex) EDIMAX COMPUTER COMPANY +0000B4 (base 16) EDIMAX COMPUTER COMPANY + No. 3, Wu-Chuan 3rd Road, + Wu-Ku Industrial Park + Taipei Hsien 248 + TAIWAN, REPUBLIC OF CHINA + +00-00-B5 (hex) DATABILITY SOFTWARE SYS. INC. +0000B5 (base 16) DATABILITY SOFTWARE SYS. INC. + ONE PALMER TERRACE + CARLSTADT NJ 07072 + UNITED STATES + +00-00-B6 (hex) MICRO-MATIC RESEARCH +0000B6 (base 16) MICRO-MATIC RESEARCH + AMBACHTENLAAN 21 B5 + B - 3030 HEVERLEE + BELGIUM + BELGIUM + +00-00-B7 (hex) DOVE COMPUTER CORPORATION +0000B7 (base 16) DOVE COMPUTER CORPORATION + 1200 NORTH 23RD STREET + WILMINGTON NC 28405 + UNITED STATES + +00-00-B8 (hex) SEIKOSHA CO., LTD. +0000B8 (base 16) SEIKOSHA CO., LTD. + SYSTEM EQUIPMENT DIVISION + 4-1-1 TAIHEI SUMIDA-KU TOKYO 130 + JAPAN + JAPAN + +00-00-B9 (hex) MCDONNELL DOUGLAS COMPUTER SYS +0000B9 (base 16) MCDONNELL DOUGLAS COMPUTER SYS + DIV MCDONNELL DOUGLAS INF SYS + BOUNDARY WAY HEMEL HEMPSTEAD HERTS + ENGLAND + UNITED KINGDOM + +00-00-BA (hex) SIIG, INC. +0000BA (base 16) SIIG, INC. + 6078 STEWART AVENUE + FREMONT CA 94538 + UNITED STATES + +00-00-BB (hex) TRI-DATA +0000BB (base 16) TRI-DATA + 505 EAST MIDDLEFIELD ROAD + MOUNTAIN VIEW CA 94043-4082 + UNITED STATES + +00-00-BC (hex) Rockwell Automation +0000BC (base 16) Rockwell Automation + 1 Allen-Bradley Dr. + Mayfield Heights OH 44124-6118 + UNITED STATES + +00-00-BD (hex) MITSUBISHI CABLE COMPANY +0000BD (base 16) MITSUBISHI CABLE COMPANY + 520 MADISON AVENUE + NEW YORK NY 10022 + UNITED STATES + +00-00-BE (hex) THE NTI GROUP +0000BE (base 16) THE NTI GROUP + 4701 PATRICK HENRY DRIVE + SUITE 24 + SANTA CLARA CA 95054 + UNITED STATES + +00-00-BF (hex) SYMMETRIC COMPUTER SYSTEMS +0000BF (base 16) SYMMETRIC COMPUTER SYSTEMS + 1620 OAKLAND ROAD SUITE D-200 + SAN JOSE CA 95131 + UNITED STATES + +00-00-C0 (hex) WESTERN DIGITAL CORPORATION +0000C0 (base 16) WESTERN DIGITAL CORPORATION + 8105 IRVINE CENTER DRIVE + IRVINE CA 92718 + UNITED STATES + +00-00-C1 (hex) Madge Ltd. +0000C1 (base 16) Madge Ltd. + Madge House + Priors Way + Maindenhead Berkshire SL6 2HP + UNITED KINGDOM + +00-00-C2 (hex) INFORMATION PRESENTATION TECH. +0000C2 (base 16) INFORMATION PRESENTATION TECH. + 23801 CALABASAS ROAD + SUITE 2011 + CALABASAS CA 91302 + UNITED STATES + +00-00-C3 (hex) HARRIS CORP COMPUTER SYS DIV +0000C3 (base 16) HARRIS CORP COMPUTER SYS DIV + M/S 75 + 1025 W. NASA BLVD.L 33309 + MELBOURNE FL 32919 + UNITED STATES + +00-00-C4 (hex) WATERS DIV. OF MILLIPORE +0000C4 (base 16) WATERS DIV. OF MILLIPORE + 34 MAPLE STREET + MILFORD MA 01757 + UNITED STATES + +00-00-C5 (hex) FARALLON COMPUTING/NETOPIA +0000C5 (base 16) FARALLON COMPUTING/NETOPIA + 2470 MARINER SQUARE LOOP + ALAMEDA CA 94501 + UNITED STATES + +00-00-C6 (hex) EON SYSTEMS +0000C6 (base 16) EON SYSTEMS + 10601 SOUTH DEANZA BLVD. + SUITE 303 + CUPERTINO CA 95014 + UNITED STATES + +00-00-C7 (hex) ARIX CORPORATION +0000C7 (base 16) ARIX CORPORATION + ENGINEERING MAIL STOP + 1152 MORSE AVENUE + SUNNYVALE CA 94089 + UNITED STATES + +00-00-C8 (hex) ALTOS COMPUTER SYSTEMS +0000C8 (base 16) ALTOS COMPUTER SYSTEMS + 2641 ORCHARD PARKWAY + SAN JOSE CA 95134 + UNITED STATES + +00-00-C9 (hex) EMULEX CORPORATION +0000C9 (base 16) EMULEX CORPORATION + 3333 Susan Street + COSTA MESA CA 92626 + UNITED STATES + +00-00-CA (hex) ARRIS International +0000CA (base 16) ARRIS International + 3871 Lakefield Drive, Suite 300 + Suwanee GA 30024 + UNITED STATES + +00-00-CB (hex) COMPU-SHACK ELECTRONIC GMBH +0000CB (base 16) COMPU-SHACK ELECTRONIC GMBH + RINGSTR. 56 - 58, 5450 NEUWIED + WEST GERMANY + GERMANY + +00-00-CC (hex) DENSAN CO., LTD. +0000CC (base 16) DENSAN CO., LTD. + 1-23-11, KAMITAKAIDO + SUGINAMI-KU, TOKYO 168 + JAPAN + JAPAN + +00-00-CD (hex) Allied Telesis Labs Ltd +0000CD (base 16) Allied Telesis Labs Ltd + 27 Nazareth Avenue + Middleton Christchurch 8024 + NEW ZEALAND + +00-00-CE (hex) MEGADATA CORP. +0000CE (base 16) MEGADATA CORP. + 35 ORVILLE DRIVE + BOHEMIA NY 11716 + UNITED STATES + +00-00-CF (hex) HAYES MICROCOMPUTER PRODUCTS +0000CF (base 16) HAYES MICROCOMPUTER PRODUCTS + (CANADA) LTD. + 295 PHILLIP STREET WATERLOO, ONTARIO N2L + CANADA + CANADA + +00-00-D0 (hex) DEVELCON ELECTRONICS LTD. +0000D0 (base 16) DEVELCON ELECTRONICS LTD. + 856-51ST STREET EAST + SASKATOON SASKATCHEWAN S7K 5C7 + CANADA + CANADA + +00-00-D1 (hex) ADAPTEC INCORPORATED +0000D1 (base 16) ADAPTEC INCORPORATED + M/S 180 + 691 SOUTH MILPITAS BLVD. + MILPITAS CA 95035 + UNITED STATES + +00-00-D2 (hex) SBE, INC. +0000D2 (base 16) SBE, INC. + 4550 NORTH CANYON ROAD + SAN RAMON CA 94583 + UNITED STATES + +00-00-D3 (hex) WANG LABORATORIES INC. +0000D3 (base 16) WANG LABORATORIES INC. + + +00-00-D4 (hex) PURE DATA LTD. +0000D4 (base 16) PURE DATA LTD. + 200 WEST BEAVER CREEK ROAD + RICHMOND HILL ONTARIO + L4B 1B4 CANADA + CANADA + +00-00-D5 (hex) MICROGNOSIS INTERNATIONAL +0000D5 (base 16) MICROGNOSIS INTERNATIONAL + 63 QUEEN VICTORIA STREET + LONDON EC4N 4UD + UNITED KINGDOM + UNITED KINGDOM + +00-00-D6 (hex) PUNCH LINE HOLDING +0000D6 (base 16) PUNCH LINE HOLDING + P.O. BOX 391708 + BRAMLEY 2018 + SOUTH AFRICA + SOUTH AFRICA + +00-00-D7 (hex) DARTMOUTH COLLEGE +0000D7 (base 16) DARTMOUTH COLLEGE + KIEWIT COMPUTER CENTER + HANOVER NH 03755 + UNITED STATES + +00-00-D8 (hex) NOVELL, INC. +0000D8 (base 16) NOVELL, INC. + 122 EAST 1700 SOUTH M/S:E-12-1 + P.O. BOX 5900 + PROVO UT 84601 + UNITED STATES + +00-00-D9 (hex) NIPPON TELEGRAPH & TELEPHONE +0000D9 (base 16) NIPPON TELEGRAPH & TELEPHONE + CORPORATION (NTT) + TEISHIN BLDG. 3-1 OOTEMACHI 2 CHOME, CHI + TOKYO 100-8116 JAPAN + JAPAN + +00-00-DA (hex) ATEX +0000DA (base 16) ATEX + 15 CROSBY DRIVE + BEDFORD MA 01730 + UNITED STATES + +00-00-DB (hex) BRITISH TELECOMMUNICATIONS PLC +0000DB (base 16) BRITISH TELECOMMUNICATIONS PLC + 81 NEWGATE STREET + LONDON, EC1A 7AJ + ENGLAND + UNITED KINGDOM + +00-00-DC (hex) HAYES MICROCOMPUTER PRODUCTS +0000DC (base 16) HAYES MICROCOMPUTER PRODUCTS + P.O. BOX 105203 + ATLANTA GA 30348 + UNITED STATES + +00-00-DD (hex) TCL INCORPORATED +0000DD (base 16) TCL INCORPORATED + 41829 ALBRAE STREET + FREMONT CA 94538 + UNITED STATES + +00-00-DE (hex) CETIA +0000DE (base 16) CETIA + 150 RUE BERTHELOT + ZI TOULON EST 83088 TOULON CEDEX + FRANCE + FRANCE + +00-00-DF (hex) BELL & HOWELL PUB SYS DIV +0000DF (base 16) BELL & HOWELL PUB SYS DIV + OLD MANSFIELD ROAD + WOOSTER OH 44691-9050 + UNITED STATES + +00-00-E0 (hex) QUADRAM CORP. +0000E0 (base 16) QUADRAM CORP. + ONE QUAD WAY + NORCROSS GA 30093 + UNITED STATES + +00-00-E1 (hex) GRID SYSTEMS +0000E1 (base 16) GRID SYSTEMS + 47211 LAKEVIEW BOULEVARD + P.O. BOX 5003 + FREMONT CA 94537-5003 + UNITED STATES + +00-00-E2 (hex) ACER TECHNOLOGIES CORP. +0000E2 (base 16) ACER TECHNOLOGIES CORP. + 401 CHARCOT AVE. + SAN JOSE CA 95131 + UNITED STATES + +00-00-E3 (hex) INTEGRATED MICRO PRODUCTS LTD +0000E3 (base 16) INTEGRATED MICRO PRODUCTS LTD + IMP, NO. 1 INDUSTRIAL ESTATE + CONSETT, CO DUKHAM + ENGLAND ENGLAND DH86TJ + UNITED KINGDOM + +00-00-E4 (hex) IN2 GROUPE INTERTECHNIQUE +0000E4 (base 16) IN2 GROUPE INTERTECHNIQUE + IN2 - B.P.63 + 78373 PLAISIR CEDEX + FRANCE + FRANCE + +00-00-E5 (hex) SIGMEX LTD. +0000E5 (base 16) SIGMEX LTD. + SIGMA HOUSE + NORTH HEATH LANE HORSHAM, WEST SUSSEX + RH12 4UZ ENGLAND + UNITED KINGDOM + +00-00-E6 (hex) APTOR PRODUITS DE COMM INDUST +0000E6 (base 16) APTOR PRODUITS DE COMM INDUST + 61, CHEMIN DU VIEUX-CHENE + ZIRST-BP 177 38244 MEYLAN CEDEX + FRANCE + FRANCE + +00-00-E7 (hex) STAR GATE TECHNOLOGIES +0000E7 (base 16) STAR GATE TECHNOLOGIES + 29300 AURORA ROAD + SOLON OH 44139 + UNITED STATES + +00-00-E8 (hex) ACCTON TECHNOLOGY CORP. +0000E8 (base 16) ACCTON TECHNOLOGY CORP. + 46750 FREMONT BLVD. #104 + FREMONT CA 94538 + UNITED STATES + +00-00-E9 (hex) ISICAD, INC. +0000E9 (base 16) ISICAD, INC. + 1920 WEST CORPORATE WAY + ANAHEIM CA 92803-6122 + UNITED STATES + +00-00-EA (hex) UPNOD AB +0000EA (base 16) UPNOD AB + BOX 23051 + S-750 23 UPPSALA + SWEDEN + SWEDEN + +00-00-EB (hex) MATSUSHITA COMM. IND. CO. LTD. +0000EB (base 16) MATSUSHITA COMM. IND. CO. LTD. + 3-1 4-CHOME + TSUNASHIMA-HIGASHI KOHOKU-KU YOKOHAMA + JAPAN + JAPAN + +00-00-EC (hex) MICROPROCESS +0000EC (base 16) MICROPROCESS + 97 BIS, RUE DE COLOMBES + B.P. 87 92400 COURBEVOIE + FRANCE + FRANCE + +00-00-ED (hex) APRIL +0000ED (base 16) APRIL + 60, RUE DE CARTALE + BP 38 38170 SEYSSINET-PARISET + FRANCE + FRANCE + +00-00-EE (hex) NETWORK DESIGNERS, LTD. +0000EE (base 16) NETWORK DESIGNERS, LTD. + UNIT 1A, HORNBEAM PARK + HOOKSTONE ROAD HARROGATE, NORTH YORKSHIR + UNITED KINGDOM HG2 8QT + UNITED KINGDOM + +00-00-EF (hex) KTI +0000EF (base 16) KTI + 2157 O'TOOLE AVENUE + SUITE H + SAN JOSE CA 95131 + UNITED STATES + +00-00-F0 (hex) SAMSUNG ELECTRONICS CO., LTD. +0000F0 (base 16) SAMSUNG ELECTRONICS CO., LTD. + 416, MAETAN-3DONG, PALDAL-GU + SUWON CITY, KYUNGKI-DO + 442-742 + KOREA, REPUBLIC OF + +00-00-F1 (hex) MAGNA COMPUTER CORPORATION +0000F1 (base 16) MAGNA COMPUTER CORPORATION + 22 KEEWAYDIN DRIVE + SALEM NH 03079 + UNITED STATES + +00-00-F2 (hex) SPIDER COMMUNICATIONS +0000F2 (base 16) SPIDER COMMUNICATIONS + 7491 BRIAR ROAD + MONTREAL, QUEBEC H4W 1K4 + CANADA + CANADA + +00-00-F3 (hex) GANDALF DATA LIMITED +0000F3 (base 16) GANDALF DATA LIMITED + 130 COLONNADE ROAD SOUTH + NEPEAN ONTARIO K2E 7M4 + CANADA + CANADA + +00-00-F4 (hex) ALLIED TELESYN INTERNATIONAL +0000F4 (base 16) ALLIED TELESYN INTERNATIONAL + CORPORATION + 950 KIFER ROAD + SUNNYVALE CA 94086 + UNITED STATES + +00-00-F5 (hex) DIAMOND SALES LIMITED +0000F5 (base 16) DIAMOND SALES LIMITED + 17, CHARTERHOUSE STREET + LONDON, ECIN 6RA + UNITED KINGDOM + UNITED KINGDOM + +00-00-F6 (hex) APPLIED MICROSYSTEMS CORP. +0000F6 (base 16) APPLIED MICROSYSTEMS CORP. + 5020 148 AVENUE, N.E. + P.O. BOX 97002 + REDMOND WA 98073-9702 + UNITED STATES + +00-00-F7 (hex) YOUTH KEEP ENTERPRISE CO LTD +0000F7 (base 16) YOUTH KEEP ENTERPRISE CO LTD + 3/F NO. 712 MINTSU E. ROAD + TAIPEI, TAIWAN + ROC + TAIWAN, REPUBLIC OF CHINA + +00-00-F8 (hex) DIGITAL EQUIPMENT CORPORATION +0000F8 (base 16) DIGITAL EQUIPMENT CORPORATION + LKG 1-2/A19 + 550 KING STREET LITTLETON MA 01460-128 + 01460 + UNITED STATES + +00-00-F9 (hex) QUOTRON SYSTEMS INC. +0000F9 (base 16) QUOTRON SYSTEMS INC. + 5454 BEETHOVEN ST. + LOS ANGELES CA 90066 + UNITED STATES + +00-00-FA (hex) MICROSAGE COMPUTER SYSTEMS INC +0000FA (base 16) MICROSAGE COMPUTER SYSTEMS INC + 680 SOUTH ROCK BLVD + RENO NE 89502 + UNITED STATES + +00-00-FB (hex) RECHNER ZUR KOMMUNIKATION +0000FB (base 16) RECHNER ZUR KOMMUNIKATION + BITZENSTR. 11 + F-5464 ASBACH + GERMANY + GERMANY + +00-00-FC (hex) MEIKO +0000FC (base 16) MEIKO + 650 AZTEC WEST + BRISTOL BS12 4SD + UNITED KINGDOM + UNITED KINGDOM + +00-00-FD (hex) HIGH LEVEL HARDWARE +0000FD (base 16) HIGH LEVEL HARDWARE + PO BOX 170 WINDMILL ROAD + HEADINGTON OXFORD OX3 7BN + ENGLAND + UNITED KINGDOM + +00-00-FE (hex) ANNAPOLIS MICRO SYSTEMS +0000FE (base 16) ANNAPOLIS MICRO SYSTEMS + 190 ADMIRAL COCHRANE DRIVE + SUITE 130 + ANNAPOLIS MD 21401 + UNITED STATES + +00-00-FF (hex) CAMTEC ELECTRONICS LTD. +0000FF (base 16) CAMTEC ELECTRONICS LTD. + 101 VAUGHAN WAY + LEICESTER LE1 4SA + ENGLAND + UNITED KINGDOM + +00-01-00 (hex) EQUIP'TRANS +000100 (base 16) EQUIP'TRANS + 47 Rue du Trou Grillon + 91280 - ST PIERRE DU PERRAY + FRANCE + +00-01-01 (hex) PRIVATE +000101 (base 16) + +00-01-02 (hex) 3COM CORPORATION +000102 (base 16) 3COM CORPORATION + 5400 Bayfront Plaza - MS: 4220 + Santa Clara CA 95052 + UNITED STATES + +00-01-03 (hex) 3COM CORPORATION +000103 (base 16) 3COM CORPORATION + 5400 Bayfront Plaza - MS: 4220 + Santa Clara CA 95052 + UNITED STATES + +00-01-04 (hex) DVICO Co., Ltd. +000104 (base 16) DVICO Co., Ltd. + Kookmin Card B/D 6F 267-2 + Seohyun-Dong Boondang-Gu + Sungnam-si Kyungki-do 463-050 + KOREA, REPUBLIC OF + +00-01-05 (hex) BECKHOFF GmbH +000105 (base 16) BECKHOFF GmbH + Eiserstr. 5 + D-33415 Verel + GERMANY + +00-01-06 (hex) Tews Datentechnik GmbH +000106 (base 16) Tews Datentechnik GmbH + Am Bahnhof 7 + 25469 Halstenbek + GERMANY + +00-01-07 (hex) Leiser GmbH +000107 (base 16) Leiser GmbH + Ilmstr. 7 + 85579 Neubiberg + GERMANY + +00-01-08 (hex) AVLAB Technology, Inc. +000108 (base 16) AVLAB Technology, Inc. + 3F-1, No. 134, Sec. 3 + Chung Shin Road + Hsin Tien, Taipei + TAIWAN, REPUBLIC OF CHINA + +00-01-09 (hex) Nagano Japan Radio Co., Ltd. +000109 (base 16) Nagano Japan Radio Co., Ltd. + Shimohigano 1163, Inasato-machi + Nagano 381-2288 + JAPAN + +00-01-0A (hex) CIS TECHNOLOGY INC. +00010A (base 16) CIS TECHNOLOGY INC. + 16F, No. 75 Hsin Tai Wu Road + Sec. 1, Hsi Chih + Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-01-0B (hex) Space CyberLink, Inc. +00010B (base 16) Space CyberLink, Inc. + 5th Fl. Guppyung Town B + 203 Nonhnyun-Dong, Kangham-Gu + Seoul + KOREA, REPUBLIC OF + +00-01-0C (hex) System Talks Inc. +00010C (base 16) System Talks Inc. + 4F, PrimeNihonbashi Bld. + 3-35-6, Nihonbashi Hama-cho + Chuo-ku Tokyo + JAPAN + +00-01-0D (hex) CORECO, INC. +00010D (base 16) CORECO, INC. + 6969 Route Transcanadianne + Ville St. Laurent H4T 1V8 Quebec + CANADA + +00-01-0E (hex) Bri-Link Technologies Co., Ltd +00010E (base 16) Bri-Link Technologies Co., Ltd + 2F, No. 63, Chow-Tze Street + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-01-0F (hex) Brocade Communications Systems, Inc. +00010F (base 16) Brocade Communications Systems, Inc. + 1745 Technology Dr. + San Jose CA 95110 + UNITED STATES + +00-01-10 (hex) Gotham Networks +000110 (base 16) Gotham Networks + 15 Discovery Way + Acton MA 01720 + UNITED STATES + +00-01-11 (hex) iDigm Inc. +000111 (base 16) iDigm Inc. + 7FL Sindo B/D 1604-22 Seocho-Dong + Seocho-Gu + Seoul 137-070 + KOREA, REPUBLIC OF + +00-01-12 (hex) Shark Multimedia Inc. +000112 (base 16) Shark Multimedia Inc. + 48890 Milmont Drive #101-D + Fremont CA 94538 + UNITED STATES + +00-01-13 (hex) OLYMPUS CORPORATION +000113 (base 16) OLYMPUS CORPORATION + 2-3 Kuboyama-cho, Hachioji-shi + Tokyo 192-8512 + JAPAN + +00-01-14 (hex) KANDA TSUSHIN KOGYO CO., LTD. +000114 (base 16) KANDA TSUSHIN KOGYO CO., LTD. + 23-2, Nishi-Gotanda 2-chome, + Shinagawa-ku + Tokyo 141-8533 + JAPAN + +00-01-15 (hex) EXTRATECH CORPORATION +000115 (base 16) EXTRATECH CORPORATION + 760 Thornton St., Unit 2 + Post Falls ID 83854 + UNITED STATES + +00-01-16 (hex) Netspect Technologies, Inc. +000116 (base 16) Netspect Technologies, Inc. + 3945 Freedom Circle - Ste. #360 + Santa Clara CA 95054 + UNITED STATES + +00-01-17 (hex) CANAL + +000117 (base 16) CANAL + + 23 Rue LeBlanc + Le Ponant C + 75906 Paris Cedex 15 + FRANCE + +00-01-18 (hex) EZ Digital Co., Ltd. +000118 (base 16) EZ Digital Co., Ltd. + Bitville Bldg. Room 703 + #1327 Seocho-Dong Seocho-Gu + Seoul + KOREA, REPUBLIC OF + +00-01-19 (hex) RTUnet (Australia) +000119 (base 16) RTUnet (Australia) + 8/3-5 Gilda Court + Mulgrave Vic 3170 + AUSTRALIA + +00-01-1A (hex) EEH DataLink GmbH +00011A (base 16) EEH DataLink GmbH + Niederberger Str. 75 + D-53909 Zuelpich + GERMANY + +00-01-1B (hex) Unizone Technologies, Inc. +00011B (base 16) Unizone Technologies, Inc. + 5Floor HaeSung Bldg. + 67-2-YangJae-Dong + SeoCho-Ku Seoul + KOREA, REPUBLIC OF + +00-01-1C (hex) Universal Talkware Corporation +00011C (base 16) Universal Talkware Corporation + 10 Second St. NE + Suite #400 + Minneapolis MN 55413 + UNITED STATES + +00-01-1D (hex) Centillium Communications +00011D (base 16) Centillium Communications + 47211 Lakeview Blvd. + Fremont CA 94538 + UNITED STATES + +00-01-1E (hex) Precidia Technologies, Inc. +00011E (base 16) Precidia Technologies, Inc. + 10A Hearst Way + Kanata Ontario K2M-2C4 + CANADA + +00-01-1F (hex) RC Networks, Inc. +00011F (base 16) RC Networks, Inc. + 6727 Flanders Drive - Ste. #212 + San Diego CA 92121 + UNITED STATES + +00-01-20 (hex) OSCILLOQUARTZ S.A. +000120 (base 16) OSCILLOQUARTZ S.A. + Rue Des Brevards 16 + 2002 Neuchatel + SWITZERLAND + +00-01-21 (hex) Watchguard Technologies, Inc. +000121 (base 16) Watchguard Technologies, Inc. + 605 Fifth Ave. S + Suite 500 + Seattle WA 98104-3892 + UNITED STATES + +00-01-22 (hex) Trend Communications, Ltd. +000122 (base 16) Trend Communications, Ltd. + Knaves Beech Estate + Loudwater, High Wycombe + Bucks, HP10 9QZ England + UNITED KINGDOM + +00-01-23 (hex) DIGITAL ELECTRONICS CORP. +000123 (base 16) DIGITAL ELECTRONICS CORP. + 8-2-52 Nanko Higashi, Suminoe-ku + Osaka, 559-0031 + JAPAN + +00-01-24 (hex) Acer Incorporated +000124 (base 16) Acer Incorporated + 21F, 88, Sec.1 + Hsin Tai Wu Road, Hsichih + Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-01-25 (hex) YAESU MUSEN CO., LTD. +000125 (base 16) YAESU MUSEN CO., LTD. + 4-8-8, Nakameguro + Meguro-ku, + Tokyo, 153-8644 + JAPAN + +00-01-26 (hex) PAC Labs +000126 (base 16) PAC Labs + 3079 Kilgore Road + Rancho Cordova CA 95670 + UNITED STATES + +00-01-27 (hex) OPEN Networks Pty Ltd +000127 (base 16) OPEN Networks Pty Ltd + Level 5, 342 Flinders Street + Melbourne VIC 3000 + AUSTRALIA + +00-01-28 (hex) EnjoyWeb, Inc. +000128 (base 16) EnjoyWeb, Inc. + 3000 Scott Blvd. #107 + Santa Clara CA 95054 + UNITED STATES + +00-01-29 (hex) DFI Inc. +000129 (base 16) DFI Inc. + 100, Huan-Ho Street + Hsi-Chih City Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-01-2A (hex) Telematica Sistems Inteligente +00012A (base 16) Telematica Sistems Inteligente + Rua Miguel Casagrande, 200 + Sao Paulo + BRAZIL + +00-01-2B (hex) TELENET Co., Ltd. +00012B (base 16) TELENET Co., Ltd. + + +00-01-2C (hex) Aravox Technologies, Inc. +00012C (base 16) Aravox Technologies, Inc. + 16725 40th Place North + Plymouth MN 55446 + UNITED STATES + +00-01-2D (hex) Komodo Technology +00012D (base 16) Komodo Technology + 170 Knowles Drive + Los Gatos CA 95032 + UNITED STATES + +00-01-2E (hex) PC Partner Ltd. +00012E (base 16) PC Partner Ltd. + Rm 1901-1908, 19/F, Shatin Galleria + 18-24 Shan Mei Street, Fo Tan Shatin, H + CHINA + CHINA + +00-01-2F (hex) Twinhead International Corp +00012F (base 16) Twinhead International Corp + 2FL, 2, Lane 235, Bao-Chiao Road + Hsin-Tien + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-30 (hex) Extreme Networks +000130 (base 16) Extreme Networks + 3585 Monroe Street + Santa Clara CA 95051 + UNITED STATES + +00-01-31 (hex) Detection Systems, Inc. +000131 (base 16) Detection Systems, Inc. + 130 Perinton Parkway + Fairport NY 14450 + UNITED STATES + +00-01-32 (hex) Dranetz - BMI +000132 (base 16) Dranetz - BMI + 1000 New Durham Road + Edison NJ 08817 + UNITED STATES + +00-01-33 (hex) KYOWA Electronic Instruments C +000133 (base 16) KYOWA Electronic Instruments C + 3-5-1, Cyofugaoka + Cyofu Tokyo + JAPAN + +00-01-34 (hex) SIG Positec Systems AG +000134 (base 16) SIG Positec Systems AG + Bernstreasse 70 + CH-3250 Lyss + SWITZERLAND + SWITZERLAND + +00-01-35 (hex) KDC Corp. +000135 (base 16) KDC Corp. + 200-11 AnYang 7 dong + ManAn-Gu AnYane-Si Kyunggi-do + KOREA + KOREA, REPUBLIC OF + +00-01-36 (hex) CyberTAN Technology, Inc. +000136 (base 16) CyberTAN Technology, Inc. + 626, Bldg.53, 195-56 Sec.4 + Chung Hsing Rd Chutung, Hsinchu + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-37 (hex) IT Farm Corporation +000137 (base 16) IT Farm Corporation + Asashiseimei Fuchu Bldg. 11F + 1-14-1 Fuchu-cho, Fuchu-shi Tokyo + 183-0055 JAPAN + JAPAN + +00-01-38 (hex) XAVi Technologies Corp. +000138 (base 16) XAVi Technologies Corp. + 9F, No. 129, Hsing Te Rd, + Sanchung City Taipei Hsien + 241 TAIWAN 241 TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-39 (hex) Point Multimedia Systems +000139 (base 16) Point Multimedia Systems + 4Ra 507, Shihwa Industrial Complex + 669-8 Sungkog-Dong, Ansan-City, Kyunggi- + Korea 425-110 + KOREA, REPUBLIC OF + +00-01-3A (hex) SHELCAD COMMUNICATIONS, LTD. +00013A (base 16) SHELCAD COMMUNICATIONS, LTD. + P.O. Box 8513 + New Industrial Zone Netanya 42504 + ISRAEL + ISRAEL + +00-01-3B (hex) BNA SYSTEMS +00013B (base 16) BNA SYSTEMS + 1637 S. Main Street + Milpitas CA 95035 + UNITED STATES + +00-01-3C (hex) TIW SYSTEMS +00013C (base 16) TIW SYSTEMS + 2211 Lawson Lane + Santa Clara CA 95054 + UNITED STATES + +00-01-3D (hex) RiscStation Ltd. +00013D (base 16) RiscStation Ltd. + 168 Elliott Street + Tyldesley M29 805 + UNITED KINGDOM + UNITED KINGDOM + +00-01-3E (hex) Ascom Tateco AB +00013E (base 16) Ascom Tateco AB + Box 8783 + 40276 Goteborg + SWEDEN + +00-01-3F (hex) Neighbor World Co., Ltd. +00013F (base 16) Neighbor World Co., Ltd. + 114A YERC, 134, Shinchon_dong + Seodaemun_ku Seoul + 120-749 120-749 KOREA + KOREA, REPUBLIC OF + +00-01-40 (hex) Sendtek Corporation +000140 (base 16) Sendtek Corporation + 12F-3, 333, Sec.1 + Kuang-Fu Road Hsinchu + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-01-41 (hex) CABLE PRINT +000141 (base 16) CABLE PRINT + Jozef Cardynstraat 16 + B - 9420 Erpe-Mere + BELGIUM + BELGIUM + +00-01-42 (hex) Cisco Systems, Inc. +000142 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-01-43 (hex) Cisco Systems, Inc. +000143 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-01-44 (hex) EMC Corporation +000144 (base 16) EMC Corporation + 228 South St. + Hopkinton MA 01748 + UNITED STATES + +00-01-45 (hex) WINSYSTEMS, INC. +000145 (base 16) WINSYSTEMS, INC. + 715 Stadium Drive + Arlington TX 76011 + UNITED STATES + +00-01-46 (hex) Tesco Controls, Inc. +000146 (base 16) Tesco Controls, Inc. + P.O. Box 239012 + Sacramento CA 95823-9012 + UNITED STATES + +00-01-47 (hex) Zhone Technologies +000147 (base 16) Zhone Technologies + 7001 Oakport Street + Oakland CA 94621 + UNITED STATES + +00-01-48 (hex) X-traWeb Inc. +000148 (base 16) X-traWeb Inc. + 6750 West 93rd Street - Ste. #210 + Overland Park KS 66212 + UNITED STATES + +00-01-49 (hex) T.D.T. Transfer Data Test GmbH +000149 (base 16) T.D.T. Transfer Data Test GmbH + Siemensstrasse 18 + 84051 Essenbach + GERMANY + GERMANY + +00-01-4A (hex) Sony Corporation +00014A (base 16) Sony Corporation + 5-1-2 Kitashinagawa + Shinagawa-ku + Tokyo 141-0001 + JAPAN + +00-01-4B (hex) Ennovate Networks, Inc. +00014B (base 16) Ennovate Networks, Inc. + 60 Codman Hill Road + Boxborough MA 01719 + UNITED STATES + +00-01-4C (hex) Berkeley Process Control +00014C (base 16) Berkeley Process Control + 4124 Lakeside Dr + Richmond CA 94806 + UNITED STATES + +00-01-4D (hex) Shin Kin Enterprises Co., Ltd +00014D (base 16) Shin Kin Enterprises Co., Ltd + 7, FU Hsing St. Tue Cheng Ind. + Dist. Taipei + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-4E (hex) WIN Enterprises, Inc. +00014E (base 16) WIN Enterprises, Inc. + 300 Willow Street South + North Andover MA 01845 + UNITED STATES + +00-01-4F (hex) ADTRAN INC +00014F (base 16) ADTRAN INC + 901 Explorer Blvd. + Huntsville AL 35806-2807 + UNITED STATES + +00-01-50 (hex) GILAT COMMUNICATIONS, LTD. +000150 (base 16) GILAT COMMUNICATIONS, LTD. + 21/D Yegia Kapayim Street + Petach-Tikva 49130 + ISRAEL + ISRAEL + +00-01-51 (hex) Ensemble Communications +000151 (base 16) Ensemble Communications + 6256 Greenman Drive - Ste. #400 + San Diego CA 92122 + UNITED STATES + +00-01-52 (hex) CHROMATEK INC. +000152 (base 16) CHROMATEK INC. + 6-10, Miyazaki 2-Chome + Miyamae-Ku, Kawasaki-shi Kanagawa, 216-0 + JAPAN + JAPAN + +00-01-53 (hex) ARCHTEK TELECOM CORPORATION +000153 (base 16) ARCHTEK TELECOM CORPORATION + 4F, No.9 Lane 130, Min-Chyuan Rd. + Hsin-Tien Taipei + 231 TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-01-54 (hex) G3M Corporation +000154 (base 16) G3M Corporation + 4320 Stevens Creek Blvd. - Ste. #275 + San Jose CA 95129 + UNITED STATES + +00-01-55 (hex) Promise Technology, Inc. +000155 (base 16) Promise Technology, Inc. + 4F, 1, Prosperity 1st Road + Science-Based Industrial Park Hsin-Chu + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-01-56 (hex) FIREWIREDIRECT.COM, INC. +000156 (base 16) FIREWIREDIRECT.COM, INC. + 4132 Spicewood Springs Rd - #I-4 + Austin TX 78759 + UNITED STATES + +00-01-57 (hex) SYSWAVE CO., LTD +000157 (base 16) SYSWAVE CO., LTD + Dongho B/D 5F, 221-2 + Nonhyun-Dong, Kangnam-Gu Seoul + KOREA 135-010 + KOREA, REPUBLIC OF + +00-01-58 (hex) Electro Industries/Gauge Tech +000158 (base 16) Electro Industries/Gauge Tech + 1800 Shames Drive + Westbury NY 11590 + UNITED STATES + +00-01-59 (hex) S1 Corporation +000159 (base 16) S1 Corporation + R&D Center, S1 Bldg. + 59-8, Nonhyun-Dong Kangnam-Ku Seoul + KOREA 135-010 + KOREA, REPUBLIC OF + +00-01-5A (hex) Digital Video Broadcasting +00015A (base 16) Digital Video Broadcasting + DVB, % European Broadcasting Union + 17A Ancienne Route CH-1218 Grand Saconne + SWITZERLAND + SWITZERLAND + +00-01-5B (hex) ITALTEL S.p.A/RF-UP-I +00015B (base 16) ITALTEL S.p.A/RF-UP-I + 20019 Cast.Settimo M.se (MI) + ITALY + ITALY + +00-01-5C (hex) CADANT INC. +00015C (base 16) CADANT INC. + 4343 Commerce Court - Ste. #207 + Lisle IL 60532 + UNITED STATES + +00-01-5D (hex) Sun Microsystems, Inc +00015D (base 16) Sun Microsystems, Inc + 4200 Network Circle + Santa Clara CA 95054 + UNITED STATES + +00-01-5E (hex) BEST TECHNOLOGY CO., LTD. +00015E (base 16) BEST TECHNOLOGY CO., LTD. + 7F, Haesung B/D + 115-12 Nonhyun-dong Kangnam-Ku Seoul, 13 + KOREA + KOREA, REPUBLIC OF + +00-01-5F (hex) DIGITAL DESIGN GmbH +00015F (base 16) DIGITAL DESIGN GmbH + Alt-Moabit 96a + Berlin D-10559 + GERMANY + +00-01-60 (hex) ELMEX Co., LTD. +000160 (base 16) ELMEX Co., LTD. + 16-30 Kimachi + Aobaku Sendai-Shi Miyagi-Ken + JAPAN + JAPAN + +00-01-61 (hex) Meta Machine Technology +000161 (base 16) Meta Machine Technology + 400 Silver Cedar Court - ste. #220 + Chapel Hill NC 27514 + UNITED STATES + +00-01-62 (hex) Cygnet Technologies, Inc. +000162 (base 16) Cygnet Technologies, Inc. + 1411 LeMay Drive #301 + Carrollton TX 75007 + UNITED STATES + +00-01-63 (hex) Cisco Systems, Inc. +000163 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-01-64 (hex) Cisco Systems, Inc. +000164 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-01-65 (hex) AirSwitch Corporation +000165 (base 16) AirSwitch Corporation + 37East 200South + Springville UT 84663 + UNITED STATES + +00-01-66 (hex) TC GROUP A/S +000166 (base 16) TC GROUP A/S + Sindalsvej 34 + Risskov DK-8240 + DENMARK + +00-01-67 (hex) HIOKI E.E. CORPORATION +000167 (base 16) HIOKI E.E. CORPORATION + 81 Koizumi, Ueda, Nagano + 386-1192 386-1192 JAPAN + JAPAN + +00-01-68 (hex) VITANA CORPORATION +000168 (base 16) VITANA CORPORATION + 2500 Don Reid Drive + Ottawa, Ontario + K1H 1E1 K1H 1E1 CANADA + CANADA + +00-01-69 (hex) Celestix Networks Pte Ltd. +000169 (base 16) Celestix Networks Pte Ltd. + 18 Tannery Lane #05-03 + Lian Tong Building + SINGAPORE 347780 + SINGAPORE + +00-01-6A (hex) ALITEC +00016A (base 16) ALITEC + Laval Technopole B.P. 102 + 53001 LAVAL Cedex + FRANCE + FRANCE + +00-01-6B (hex) LightChip, Inc. +00016B (base 16) LightChip, Inc. + 5 Industrial Way + Salem NH 03079 + UNITED STATES + +00-01-6C (hex) FOXCONN +00016C (base 16) FOXCONN + 6125 Phyllis Drive + Cypress CA 90630 + UNITED STATES + +00-01-6D (hex) CarrierComm Inc. +00016D (base 16) CarrierComm Inc. + 539 Encintas Blvd. + Encintas CA 92024 + UNITED STATES + +00-01-6E (hex) Conklin Corporation +00016E (base 16) Conklin Corporation + 6141 Crooked Creek Road + Norcross GA 30092-3193 + UNITED STATES + +00-01-6F (hex) HAITAI ELECTRONICS CO., LTD. +00016F (base 16) HAITAI ELECTRONICS CO., LTD. + 345-50 Gasan-dong, Geumcheon-gu + Seoul + SOUTH KOREA + KOREA, REPUBLIC OF + +00-01-70 (hex) ESE Embedded System Engineer'g +000170 (base 16) ESE Embedded System Engineer'g + Muehlbachstr. 20 + 78351 Bodman-Ludwigshafen + GERMANY + GERMANY + +00-01-71 (hex) Allied Data Technologies +000171 (base 16) Allied Data Technologies + Pascalweg 1, + 3208 KL Spijkenisse + THE NETHERLANDS + NETHERLANDS + +00-01-72 (hex) TechnoLand Co., LTD. +000172 (base 16) TechnoLand Co., LTD. + 3-17-11 Akebono-cho + Fukuyama-city Hiroshima 721-0925 + JAPAN + JAPAN + +00-01-73 (hex) AMCC +000173 (base 16) AMCC + 6290 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-01-74 (hex) CyberOptics Corporation +000174 (base 16) CyberOptics Corporation + 5900 Golden Hills Drive + Golden Valley MN 55416 + UNITED STATES + +00-01-75 (hex) Radiant Communications Corp. +000175 (base 16) Radiant Communications Corp. + 5001 Hadley Road + South Plainfield NJ 07080 + UNITED STATES + +00-01-76 (hex) Orient Silver Enterprises +000176 (base 16) Orient Silver Enterprises + 8740 White Oak Avenue + Rancho Cucamonga CA 91730 + UNITED STATES + +00-01-77 (hex) EDSL +000177 (base 16) EDSL + Habarzel 1 st + Ramat Ahayal Tel-Aviv + ISRAEL 69710 + ISRAEL + +00-01-78 (hex) MARGI Systems, Inc. +000178 (base 16) MARGI Systems, Inc. + 3155 Kearney Street. - Ste.#200 + Fremont CA 94538 + UNITED STATES + +00-01-79 (hex) WIRELESS TECHNOLOGY, INC. +000179 (base 16) WIRELESS TECHNOLOGY, INC. + Anam Bldg. 2Fl, 154-17 + Samsung-Dong, Kangnam-Ku Seoul, 135-090 + KOREA + KOREA, REPUBLIC OF + +00-01-7A (hex) Chengdu Maipu Electric Industrial Co., Ltd. +00017A (base 16) Chengdu Maipu Electric Industrial Co., Ltd. + NANYI BUILDING, CONSULATE RD., + CHENGDU + P.R. CHINA + CHINA + +00-01-7B (hex) Heidelberger Druckmaschinen AG +00017B (base 16) Heidelberger Druckmaschinen AG + Kurfuerstenanlage 52-60 + 69115 Heidelberg + GERMANY + GERMANY + +00-01-7C (hex) AG-E GmbH +00017C (base 16) AG-E GmbH + Dennewartstr. 27 + 52068 Aachen + GERMANY + GERMANY + +00-01-7D (hex) ThermoQuest +00017D (base 16) ThermoQuest + 355 River Oaks Parkway + San Jose CA 95134 + UNITED STATES + +00-01-7E (hex) ADTEK System Science Co., Ltd. +00017E (base 16) ADTEK System Science Co., Ltd. + YBP West Tower + 134 Gohdo-cho, + Hodogaya Yokohama + JAPAN + +00-01-7F (hex) Experience Music Project +00017F (base 16) Experience Music Project + 110 -110th Avenue NE - Ste. #400 + Bellevue WA 98004 + UNITED STATES + +00-01-80 (hex) AOpen, Inc. +000180 (base 16) AOpen, Inc. + 6F, 88, Sec.1, Hsin Tai + Wu Road, Hsichih Taipei Hsien 221 + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-81 (hex) Nortel Networks +000181 (base 16) Nortel Networks + 1100 Technology Park Drive + Billerica MA 01821 + UNITED STATES + +00-01-82 (hex) DICA TECHNOLOGIES AG +000182 (base 16) DICA TECHNOLOGIES AG + Rotherstr, 19 + D-10245 Berlin + GERMANY + GERMANY + +00-01-83 (hex) ANITE TELECOMS +000183 (base 16) ANITE TELECOMS + 127 Fleet Road, Fleet + Hampshire, GUB 8PD + UNITED KINGDOM + UNITED KINGDOM + +00-01-84 (hex) SIEB & MEYER AG +000184 (base 16) SIEB & MEYER AG + Auf dem Schmaarkamp 21 + D-21339 Luneburg + GERMANY + GERMANY + +00-01-85 (hex) Aloka Co., Ltd. +000185 (base 16) Aloka Co., Ltd. + 3-7-19, Imai Ome-city + Tokyo + 198-8577 JAPAN + JAPAN + +00-01-86 (hex) Uwe Disch +000186 (base 16) Uwe Disch + Eichenhainstrasse 14 + 91207 Lauf a.d. Pegnitz + GERMANY + +00-01-87 (hex) i2SE GmbH +000187 (base 16) i2SE GmbH + Carl-Zeiss - Str. 46 + 47445 Moers + GERMANY + GERMANY + +00-01-88 (hex) LXCO Technologies ag +000188 (base 16) LXCO Technologies ag + Gimmerstr. 69 + D-10117 Berlin + GERMANY + GERMANY + +00-01-89 (hex) Refraction Technology, Inc. +000189 (base 16) Refraction Technology, Inc. + 2626 Lombardy Lane - Ste. #105 + Dallas TX 75220 + UNITED STATES + +00-01-8A (hex) ROI COMPUTER AG +00018A (base 16) ROI COMPUTER AG + Werner-von-Siemens-Str. 1 + 93426 Roding + GERMANY + GERMANY + +00-01-8B (hex) NetLinks Co., Ltd. +00018B (base 16) NetLinks Co., Ltd. + 3F Dscom Bldg., 238-3 + Poi-dong, Kangnam-Ku Seoul + KOREA + KOREA, REPUBLIC OF + +00-01-8C (hex) Mega Vision +00018C (base 16) Mega Vision + 5765 Thornwood Drive + Goleta CA 93117 + UNITED STATES + +00-01-8D (hex) AudeSi Technologies +00018D (base 16) AudeSi Technologies + Suite 180, 6815 + 8th Street N.E. Calgary + AB CANADA + CANADA + +00-01-8E (hex) Logitec Corporation +00018E (base 16) Logitec Corporation + 8268 Rokudouhara, Misuzu + Ina, Nagano + JAPAN + JAPAN + +00-01-8F (hex) Kenetec, Inc. +00018F (base 16) Kenetec, Inc. + 115 Hurley Road + Oxford CT 06748 + UNITED STATES + +00-01-90 (hex) SMK-M +000190 (base 16) SMK-M + 1055 Tierra Del Rey + Chula Vista CA 91910 + UNITED STATES + +00-01-91 (hex) SYRED Data Systems +000191 (base 16) SYRED Data Systems + 272 Lanes Mill Road + Howell NJ 07731 + UNITED STATES + +00-01-92 (hex) Texas Digital Systems +000192 (base 16) Texas Digital Systems + 400 Technology Parkway + College Station TX 77845 + UNITED STATES + +00-01-93 (hex) Hanbyul Telecom Co., Ltd. +000193 (base 16) Hanbyul Telecom Co., Ltd. + 5th Fl. Oksan Bldg. + 157-33 Samsung-Dong Kangnam-ku Seoul + KOREA + KOREA, REPUBLIC OF + +00-01-94 (hex) Capital Equipment Corporation +000194 (base 16) Capital Equipment Corporation + 900 Middlesex Turnpike - Bldg. 2 + Billerica MA 01821 + UNITED STATES + +00-01-95 (hex) Sena Technologies, Inc. +000195 (base 16) Sena Technologies, Inc. + 116-23 Shinlim-dong + Onsung Bldg. 8th Floor Kwanak-ku Seoul + KOREA + KOREA, REPUBLIC OF + +00-01-96 (hex) Cisco Systems, Inc. +000196 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-01-97 (hex) Cisco Systems, Inc. +000197 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-01-98 (hex) Darim Vision +000198 (base 16) Darim Vision + Taejon Expo Venture Town + 3-1 Doryong-dong, Yusung-gu Taejon + KOREA + KOREA, REPUBLIC OF + +00-01-99 (hex) HeiSei Electronics +000199 (base 16) HeiSei Electronics + 5/7 Alley 8, Lane 45 + Poaltsin Road Hsintien City + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-01-9A (hex) LEUNIG GmbH +00019A (base 16) LEUNIG GmbH + Wilhelm-Ostwald-Str. 17 + 53721 Siegburg + GERMANY + GERMANY + +00-01-9B (hex) Kyoto Microcomputer Co., Ltd. +00019B (base 16) Kyoto Microcomputer Co., Ltd. + 2-27 Hachijogaoka + Nagaokakyo-city Kyoto + JAPAN + JAPAN + +00-01-9C (hex) JDS Uniphase Inc. +00019C (base 16) JDS Uniphase Inc. + 570 West Hunt Club Road + Napeon, ON K1R 7T7 + CANADA + CANADA + +00-01-9D (hex) E-Control Systems, Inc. +00019D (base 16) E-Control Systems, Inc. + 9420 Lurline Ave., Unite + Chatsworth CA 91311 + UNITED STATES + +00-01-9E (hex) ESS Technology, Inc. +00019E (base 16) ESS Technology, Inc. + 48401 Fremont Blvd. + Fremont CA 94538 + UNITED STATES + +00-01-9F (hex) Phonex Broadband +00019F (base 16) Phonex Broadband + 6952 High Tech Drive + Midvale UT 84047 + UNITED STATES + +00-01-A0 (hex) Infinilink Corporation +0001A0 (base 16) Infinilink Corporation + 1740 E. Garry Ave. - Ste. #206 + Santa Ana CA 92705 + UNITED STATES + +00-01-A1 (hex) Mag-Tek, Inc. +0001A1 (base 16) Mag-Tek, Inc. + 20725 South Annalee Ave. + Carson CA 90746 + UNITED STATES + +00-01-A2 (hex) Logical Co., Ltd. +0001A2 (base 16) Logical Co., Ltd. + 4598 Murakushi-cho + Hamamatsu-shi, Shizuoka-ken + 431-1207 JAPAN + JAPAN + +00-01-A3 (hex) GENESYS LOGIC, INC. +0001A3 (base 16) GENESYS LOGIC, INC. + 10F, No. 11, Ln.3., + Tsao Ti Wei, Shenkeng Taipei + TAIWAN, REPUBLIC OF CHINA + +00-01-A4 (hex) Microlink Corporation +0001A4 (base 16) Microlink Corporation + 11110 Ohio Ave., - Ste. #108 + Los Angeles CA 90034 + UNITED STATES + +00-01-A5 (hex) Nextcomm, Inc. +0001A5 (base 16) Nextcomm, Inc. + 12413 Willows Road NE - Ste. #210 + Kirkland WA 98034 + UNITED STATES + +00-01-A6 (hex) Scientific-Atlanta Arcodan A/S +0001A6 (base 16) Scientific-Atlanta Arcodan A/S + Avgustenborg Landevej 7 + DK-6400 Sonderborg + DENMARK + DENMARK + +00-01-A7 (hex) UNEX TECHNOLOGY CORPORATION +0001A7 (base 16) UNEX TECHNOLOGY CORPORATION + 8F-5, NO. 130 SZE WEI ROAD + HSINCHU + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-A8 (hex) Welltech Computer Co., Ltd. +0001A8 (base 16) Welltech Computer Co., Ltd. + 13F-4, no. 150, Jian Yi Road + Chung-Ho 235, Taipei + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-A9 (hex) BMW AG +0001A9 (base 16) BMW AG + Dipl.-Ing. Hajo Wetzel, EG-70 + Knorrstr.147 80788 Munnich, + GERMANY + GERMANY + +00-01-AA (hex) Airspan Communications, Ltd. +0001AA (base 16) Airspan Communications, Ltd. + Cambridge House, Oxford Rd., + Uxbridge, Middlesex UB1UN, + UNITED KINGDOM + UNITED KINGDOM + +00-01-AB (hex) Main Street Networks +0001AB (base 16) Main Street Networks + 4030 Moorpark Ave. + Suite 200 + San Jose CA 95117-1849 + UNITED STATES + +00-01-AC (hex) Sitara Networks, Inc. +0001AC (base 16) Sitara Networks, Inc. + 60 Hickory Drive + Waltham MA 02451 + UNITED STATES + +00-01-AD (hex) Coach Master International d.b.a. CMI Worldwide, Inc. +0001AD (base 16) Coach Master International d.b.a. CMI Worldwide, Inc. + 600 Stewart Street + Suite 700 + Seattle WA 98101 + UNITED STATES + +00-01-AE (hex) Trex Enterprises +0001AE (base 16) Trex Enterprises + 590 Lipoa Parkway + Suite 222 + Kihei HI 96753 + UNITED STATES + +00-01-AF (hex) Motorola Computer Group +0001AF (base 16) Motorola Computer Group + 2900 S. Diablo Way + Tempe Arizona 85282-3214 + UNITED STATES + +00-01-B0 (hex) Fulltek Technology Co., Ltd. +0001B0 (base 16) Fulltek Technology Co., Ltd. + 3F No. 8, Lane 130, Min Chuan Rd., Hsint + City, Taipei Hsein 231, + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-B1 (hex) General Bandwidth +0001B1 (base 16) General Bandwidth + 12303-B Technology Blvd. + Austin TX 78727 + UNITED STATES + +00-01-B2 (hex) Digital Processing Systems, Inc. +0001B2 (base 16) Digital Processing Systems, Inc. + 70 Valleywood Drive + Markham, Ontario CANADA + L3R 4T5 + CANADA + +00-01-B3 (hex) Precision Electronic Manufacturing +0001B3 (base 16) Precision Electronic Manufacturing + P0187, P.O. 527948 + Miami FL 33152-7948 + UNITED STATES + +00-01-B4 (hex) Wayport, Inc. +0001B4 (base 16) Wayport, Inc. + 1609 Shoal Creek Blvd. + Suite 301 + Austin TX 78701 + UNITED STATES + +00-01-B5 (hex) Turin Networks, Inc. +0001B5 (base 16) Turin Networks, Inc. + 1415 North McDowell Blvd. + Petaluma CA 94954 + UNITED STATES + +00-01-B6 (hex) SAEJIN T&M Co., Ltd. +0001B6 (base 16) SAEJIN T&M Co., Ltd. + 2nd Fl., Saejin Bldg., 689 + Ilwon-Dong, Kangnam-Gu. Seoul, 135-230 + KOREA + KOREA, REPUBLIC OF + +00-01-B7 (hex) Centos, Inc. +0001B7 (base 16) Centos, Inc. + 6F-1, NO. 15, LANE 360 + NEI-HU RD., SECT. 1, TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-B8 (hex) Netsensity, Inc. +0001B8 (base 16) Netsensity, Inc. + 15301 Dallas Parkway + Suite 760 + Addison TX 75001 + UNITED STATES + +00-01-B9 (hex) SKF Condition Monitoring +0001B9 (base 16) SKF Condition Monitoring + 4141 Ruffin Road + San Diego CA 92123 + UNITED STATES + +00-01-BA (hex) IC-Net, Inc. +0001BA (base 16) IC-Net, Inc. + 5 Fl. Seasung Bldg., 311-27 Noryangjin-D + Dongjak-Gu Seoul, + KOREA + KOREA, REPUBLIC OF + +00-01-BB (hex) Frequentis +0001BB (base 16) Frequentis + SPITTELBREITENGASSE 34 + A-1120 VIENNA + AUSTRIA + AUSTRIA + +00-01-BC (hex) Brains Corporation +0001BC (base 16) Brains Corporation + 2-27-8-4Fl TAMAGAWA + SETAGAYA-KU, TOKYO 158-0094 + JAPAN + JAPAN + +00-01-BD (hex) Peterson Electro-Musical Products, Inc. +0001BD (base 16) Peterson Electro-Musical Products, Inc. + 11601 S. Mayfield Avenue + Alsip IL 60803-2476 + UNITED STATES + +00-01-BE (hex) Gigalink Co., Ltd. +0001BE (base 16) Gigalink Co., Ltd. + 6th F/L Diplomatic Center 1376-1 + Seocho-dong Seocho-ku Seoul + KOREA + KOREA, REPUBLIC OF + +00-01-BF (hex) Teleforce Co., Ltd. +0001BF (base 16) Teleforce Co., Ltd. + 721 yoshioka-cho kanonji-city + Kagawa-prf. 768-0021 + JAPAN + JAPAN + +00-01-C0 (hex) CompuLab, Ltd. +0001C0 (base 16) CompuLab, Ltd. + P.O. Box 66 + Nesher 36770 + ISRAEL + ISRAEL + +00-01-C1 (hex) Vitesse Semiconductor Corporation +0001C1 (base 16) Vitesse Semiconductor Corporation + Hoerkaer 18 + DK-2730 Herlev + DENMARK + +00-01-C2 (hex) ARK Research Corp. +0001C2 (base 16) ARK Research Corp. + 1198 Saratoga Ave. #11D + San Jose CA 95129 + UNITED STATES + +00-01-C3 (hex) Acromag, Inc. +0001C3 (base 16) Acromag, Inc. + 30765 S. Wixom Road + P.O. Box 437 + Wixom MI 48393-7037 + UNITED STATES + +00-01-C4 (hex) NeoWave, Inc. +0001C4 (base 16) NeoWave, Inc. + 10th KRIHS Bldg. 1591-6 + Kwan Yang-Dong, Dong An-Gu, Anyong-Si, K + SOUTH KOREA + KOREA, REPUBLIC OF + +00-01-C5 (hex) Simpler Networks +0001C5 (base 16) Simpler Networks + 555 Dr Frederick Philips + Suite 210 St. Laurent, QUEBEC CANADA + H4M 2X4 + CANADA + +00-01-C6 (hex) Quarry Technologies +0001C6 (base 16) Quarry Technologies + 8 New England Executive Park + Burlington MA 01803 + UNITED STATES + +00-01-C7 (hex) Cisco Systems, Inc. +0001C7 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-01-C8 (hex) THOMAS CONRAD CORP. +0001C8 (base 16) THOMAS CONRAD CORP. + 1908-R KRAMER LANE + AUSTIN TX 78758 + UNITED STATES + +00-01-C8 (hex) CONRAD CORP. +0001C8 (base 16) CONRAD CORP. + + +00-01-C9 (hex) Cisco Systems, Inc. +0001C9 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive + San Jose CA 95134 + UNITED STATES + +00-01-CA (hex) Geocast Network Systems, Inc. +0001CA (base 16) Geocast Network Systems, Inc. + 190 Independence Drive + Menlo Park CA 94025 + UNITED STATES + +00-01-CB (hex) EVR +0001CB (base 16) EVR + 12 Raul Wallenberg St. + Tel Aviv 69719 + ISRAEL + +00-01-CC (hex) Japan Total Design Communication Co., Ltd. +0001CC (base 16) Japan Total Design Communication Co., Ltd. + Enesta Suginamihigashi Build., 3F, + 3-7-1, Asagayaminami Suginami-ku, Tokyo + JAPAN + JAPAN + +00-01-CD (hex) ARtem +0001CD (base 16) ARtem + Olgastrasse 152 + D-89073 ULM + GERMANY + GERMANY + +00-01-CE (hex) Custom Micro Products, Ltd. +0001CE (base 16) Custom Micro Products, Ltd. + 450 Blandford Road + Hamworthy Poole Dorset BHIL 5BN + UNITED KINGDOM + UNITED KINGDOM + +00-01-CF (hex) Alpha Data Parallel Systems, Ltd. +0001CF (base 16) Alpha Data Parallel Systems, Ltd. + 58 Timber Bush + Edinburgh EH6 6QH Scotland + UNITED KINGDOM + UNITED KINGDOM + +00-01-D0 (hex) VitalPoint, Inc. +0001D0 (base 16) VitalPoint, Inc. + 15770 Hopper Road + Peyton CO 80831 + UNITED STATES + +00-01-D1 (hex) CoNet Communications, Inc. +0001D1 (base 16) CoNet Communications, Inc. + 25 Mauchly, #320 + Irvine CA 92618 + UNITED STATES + +00-01-D2 (hex) MacPower Peripherals, Ltd. +0001D2 (base 16) MacPower Peripherals, Ltd. + 3Fl, No.3, Alley 9, Lane 45, + Baohsing Rd. Hsintien City, Taipei Count + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-01-D3 (hex) PAXCOMM, Inc. +0001D3 (base 16) PAXCOMM, Inc. + 7th F The Corp. Center + Chungnam National University 220 Kung-Do + KOREA + KOREA, REPUBLIC OF + +00-01-D4 (hex) Leisure Time, Inc. +0001D4 (base 16) Leisure Time, Inc. + 4258 Communications Drive + Norcross GA 30093 + UNITED STATES + +00-01-D5 (hex) HAEDONG INFO & COMM CO., LTD +0001D5 (base 16) HAEDONG INFO & COMM CO., LTD + #801 The Corporation Center for Universi + 220 Kung-Dong, Yuseong-Gu, + Taejeon Republic of Korea 305 + KOREA, REPUBLIC OF + +00-01-D6 (hex) MAN Roland Druckmaschinen AG +0001D6 (base 16) MAN Roland Druckmaschinen AG + Stadtbachstr. 1 + 86135 Augsburg + GERMANY + GERMANY + +00-01-D7 (hex) F5 Networks, Inc. +0001D7 (base 16) F5 Networks, Inc. + 1322 N. Whitman Lane + Liberty Lake WA 99019 + UNITED STATES + +00-01-D8 (hex) Teltronics, Inc. +0001D8 (base 16) Teltronics, Inc. + 4125 Keller Springs Road + Suite 166 + Addison TX 25001 + UNITED STATES + +00-01-D9 (hex) Sigma, Inc. +0001D9 (base 16) Sigma, Inc. + 32-3 Seijyo 9 Chome + Setagaya-ku Tokyo 157-0066 + JAPAN + JAPAN + +00-01-DA (hex) WINCOMM Corporation +0001DA (base 16) WINCOMM Corporation + 2F, No. 3, Prosperity Road 1, + Science-Based Industrial Park, Hsinchu, + Hsinchu Taiwan + TAIWAN, REPUBLIC OF CHINA + +00-01-DB (hex) Freecom Technologies GmbH +0001DB (base 16) Freecom Technologies GmbH + Obentrautstr. 72 + D-10963, Berlin, + GERMANY + +00-01-DC (hex) Activetelco +0001DC (base 16) Activetelco + 43222 Christy Street + Fremont CA 94538 + UNITED STATES + +00-01-DD (hex) Avail Networks +0001DD (base 16) Avail Networks + 305 E. Eisenhower Parkway + Ann Arbor MI 48108 + UNITED STATES + +00-01-DE (hex) Trango Systems, Inc. +0001DE (base 16) Trango Systems, Inc. + 9939 V/A Pasar + San Diego CA 92126 + UNITED STATES + +00-01-DF (hex) ISDN Communications, Ltd. +0001DF (base 16) ISDN Communications, Ltd. + The Stable Block, Ronans + Chavey Down Road, Winkfield Row Berkshir + ENGLAND + UNITED KINGDOM + +00-01-E0 (hex) Fast Systems, Inc. +0001E0 (base 16) Fast Systems, Inc. + 87-9 Yang-Jae, Seo-Cho, + Seoul, + KOREA + KOREA, REPUBLIC OF + +00-01-E1 (hex) Kinpo Electronics, Inc. +0001E1 (base 16) Kinpo Electronics, Inc. + TSAC TI WEI, WAN SHUN TSUN, + SHEN KENG HSIANG, TAIPEI HSIEN TAIWAN (2 + CHINA + TAIWAN, REPUBLIC OF CHINA + +00-01-E2 (hex) Ando Electric Corporation +0001E2 (base 16) Ando Electric Corporation + 19-7, Kamata 4-Chrome, Ota-ku + Tokyo, 144-0052 + JAPAN + JAPAN + +00-01-E3 (hex) Siemens AG +0001E3 (base 16) Siemens AG + Schlavenhorst 88 + 46395 Bocholt + GERMANY + GERMANY + +00-01-E4 (hex) Sitera, Inc. +0001E4 (base 16) Sitera, Inc. + 1820 Lefthand Circle + Longmont CO 80501 + UNITED STATES + +00-01-E5 (hex) Supernet, Inc. +0001E5 (base 16) Supernet, Inc. + 135-080 Daemeong Bldg. + 2nd Floor, 650-2, Yeoksam-dong Kangnam-k + KOREA + KOREA, REPUBLIC OF + +00-01-E6 (hex) Hewlett-Packard Company +0001E6 (base 16) Hewlett-Packard Company + 11000 Wolfe Road, Mailstop 42LE + Cupertino CA 95014 + UNITED STATES + +00-01-E7 (hex) Hewlett-Packard Company +0001E7 (base 16) Hewlett-Packard Company + 11000 Wolfe Road, Mailstop 42LE + Cupertino CA 95014 + UNITED STATES + +00-01-E8 (hex) Force10 Networks, Inc. +0001E8 (base 16) Force10 Networks, Inc. + 1440 McCarthy Blvd. + Milpitas CA 95035 + UNITED STATES + +00-01-E9 (hex) Litton Marine Systems B.V. +0001E9 (base 16) Litton Marine Systems B.V. + 118 Burlington Road + New Malden, Surrey + ENGLAND KT3 4NR + UNITED KINGDOM + +00-01-EA (hex) Cirilium Corp. +0001EA (base 16) Cirilium Corp. + 1615 S. 52nd Street + Tempe AZ 85281 + UNITED STATES + +00-01-EB (hex) C-COM Corporation +0001EB (base 16) C-COM Corporation + 3F, No. 48, Park Ave. II SBIP + Hsinchu Taiwan Hsinchu Taiwan R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-EC (hex) Ericsson Group +0001EC (base 16) Ericsson Group + Telefonaktiebolaget + LM Ericsson Corp. 126 25 STOCKHOLM + SWEDEN + SWEDEN + +00-01-ED (hex) SETA Corp. +0001ED (base 16) SETA Corp. + Ariake Frontier Bldg. B + Ariake, Koutou Ku Tokyo, + JAPAN 135-0063 + JAPAN + +00-01-EE (hex) Comtrol Europe, Ltd. +0001EE (base 16) Comtrol Europe, Ltd. + The Courtyard Studio + Grange Farm, Station Road Launton Oxon O + U.K. + UNITED KINGDOM + +00-01-EF (hex) Camtel Technology Corp. +0001EF (base 16) Camtel Technology Corp. + No. 2, Wu-Kung 5 Rd., Wu-Ku + Ind. Park, Hsinchuang, Taipei Shien + Taiwan Taiwan R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-01-F0 (hex) Tridium, Inc. +0001F0 (base 16) Tridium, Inc. + 3951 Westerre Parkway + Suite 350 + Richmond VA 23233 + UNITED STATES + +00-01-F1 (hex) Innovative Concepts, Inc. +0001F1 (base 16) Innovative Concepts, Inc. + 8200 Greensboro Drive + Suite 801 + McLean VA 22102 + UNITED STATES + +00-01-F2 (hex) Mark of the Unicorn, Inc. +0001F2 (base 16) Mark of the Unicorn, Inc. + 1280 Massachusetts Ave. + Cambridge MA 02138 + UNITED STATES + +00-01-F3 (hex) QPS, Inc. +0001F3 (base 16) QPS, Inc. + 8015 E. Crystal Drive + Anaheim CA 92807 + UNITED STATES + +00-01-F4 (hex) Enterasys Networks +0001F4 (base 16) Enterasys Networks + 35 Industrial Way + Rochester NH 03867 + UNITED STATES + +00-01-F5 (hex) ERIM S.A. +0001F5 (base 16) ERIM S.A. + 11 Av Republique + 69692 Venissieux Cedex + FRANCE + FRANCE + +00-01-F6 (hex) Association of Musical Electronics Industry +0001F6 (base 16) Association of Musical Electronics Industry + Ito Bldg. 4th Floor 2-16-9 Misaki-cho, + Chiyoda-ku, Tokyo, 101-0061 + JAPAN + JAPAN + +00-01-F7 (hex) Image Display Systems, Inc. +0001F7 (base 16) Image Display Systems, Inc. + 46560 Fremont Blvd. + Suite #406 + Fremont CA 94538 + UNITED STATES + +00-01-F8 (hex) Adherent Systems, Ltd. +0001F8 (base 16) Adherent Systems, Ltd. + Endeavour House, Vision Park + Histon Cambridge CB4 4ZR + UNITED KINGDOM + UNITED KINGDOM + +00-01-F9 (hex) TeraGlobal Communications Corp. +0001F9 (base 16) TeraGlobal Communications Corp. + 9171 Towne Centre Drive + Suite #600 + San Diego CA 92122 + UNITED STATES + +00-01-FA (hex) HOROSCAS +0001FA (base 16) HOROSCAS + 26, LOUIS BLANC + 69006 LYON + FRANCE + FRANCE + +00-01-FB (hex) DoTop Technology, Inc. +0001FB (base 16) DoTop Technology, Inc. + 10F, No. 100, Min-Chyuan Road + Hsin-Tien, Taipei + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-01-FC (hex) Keyence Corporation +0001FC (base 16) Keyence Corporation + 1-3-14, Higashi-Nakajima, + Higashi-Yodogawa-ku Osaka 533-8555 + JAPAN + JAPAN + +00-01-FD (hex) Digital Voice Systems, Inc. +0001FD (base 16) Digital Voice Systems, Inc. + 234 Littleton Road + Westford MA 01886 + UNITED STATES + +00-01-FE (hex) DIGITAL EQUIPMENT CORPORATION +0001FE (base 16) DIGITAL EQUIPMENT CORPORATION + M/S CX01-2/N26 + 301 ROCKRIMMON BLVD., S + COLORADO SPRINGS CO 80919 + UNITED STATES + +00-01-FF (hex) Data Direct Networks, Inc. +0001FF (base 16) Data Direct Networks, Inc. + 9320 Lurline Avenue + Chatsworth CA 91311 + UNITED STATES + +00-02-00 (hex) Net & Sys Co., Ltd. +000200 (base 16) Net & Sys Co., Ltd. + Kuro Hitech Industrial Complex 304, + 402-3, Shindorim-dong, Kuro-gu Seoul, + KOREA + KOREA, REPUBLIC OF + +00-02-01 (hex) IFM Electronic gmbh +000201 (base 16) IFM Electronic gmbh + Bechlingen 34 + D-88069 Tettnang + GERMANY + GERMANY + +00-02-02 (hex) Amino Communications, Ltd. +000202 (base 16) Amino Communications, Ltd. + Times House + Fen End Willingham, Cambridge + UK CB4 5LH + UNITED KINGDOM + +00-02-03 (hex) Woonsang Telecom, Inc. +000203 (base 16) Woonsang Telecom, Inc. + 104-9, Munji-Dong, Yusong-Gu + Taejon, 305-380, + KOREA + KOREA, REPUBLIC OF + +00-02-04 (hex) Bodmann Industries Elektronik GmbH +000204 (base 16) Bodmann Industries Elektronik GmbH + Messerschmittring 33 + D-86343 Konigsbrunn + GERMANY + GERMANY + +00-02-05 (hex) Hitachi Denshi, Ltd. +000205 (base 16) Hitachi Denshi, Ltd. + 32 Miyaki-cho Kodaira-shi + Toyko, + JAPAN 187-8511 + JAPAN + +00-02-06 (hex) Telital R&D Denmark A/S +000206 (base 16) Telital R&D Denmark A/S + 9530 Stouring + Denmark + DENMARK + +00-02-07 (hex) VisionGlobal Network Corp. +000207 (base 16) VisionGlobal Network Corp. + 826 E. Stale Road + Suite 200 + American Fork UT 84003 + UNITED STATES + +00-02-08 (hex) Unify Networks, Inc. +000208 (base 16) Unify Networks, Inc. + 3160 De La Cruz Blvd. + #201 + Santa Clara CA 95054 + UNITED STATES + +00-02-09 (hex) Shenzhen SED Information Technology Co., Ltd. +000209 (base 16) Shenzhen SED Information Technology Co., Ltd. + 4/F., West Block, Block 414, Zhenhua Rd. + Futian Shenzhen, 518031 P.R. + CHINA + CHINA + +00-02-0A (hex) Gefran Spa +00020A (base 16) Gefran Spa + Via Sebina, 74 + Provaglio D'Iseo 25050 Brescia + ITALY + ITALY + +00-02-0B (hex) Native Networks, Inc. +00020B (base 16) Native Networks, Inc. + P.O. Box 7165 + Petah Tikva 49170 + Israel + ISRAEL + +00-02-0C (hex) Metro-Optix +00020C (base 16) Metro-Optix + 2201 Avenue K + Plano TX 75074 + UNITED STATES + +00-02-0D (hex) Micronpc.com +00020D (base 16) Micronpc.com + 900 E. Karcher Rd. + Nampa IA 83687 + UNITED STATES + +00-02-0E (hex) ECI Telecom, Ltd., NSD-US +00020E (base 16) ECI Telecom, Ltd., NSD-US + 1300 Omega Dr. + Pittsburgh PA 15205 + UNITED STATES + +00-02-0F (hex) AATR +00020F (base 16) AATR + 306 Chemin des Miroirs + 13330 Pelissanne + FRANCE + FRANCE + +00-02-10 (hex) Fenecom +000210 (base 16) Fenecom + 7/F Kon-kuk University Alumni + Association Building NO: 227-336 Jayang + Seoul Seoul Korea + KOREA, REPUBLIC OF + +00-02-11 (hex) Nature Worldwide Technology Corp. +000211 (base 16) Nature Worldwide Technology Corp. + No. 1, Min-Chuan Street + Tu-Cheng Industrial Park Taipei Hsien, + Taiwan Taiwan R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-12 (hex) SierraCom +000212 (base 16) SierraCom + 99 South Street + Hopkinton Ma 01748 + UNITED STATES + +00-02-13 (hex) S.D.E.L. +000213 (base 16) S.D.E.L. + Aeropole D2A + Rue Nungerrer et Coli 44860 St Aignan de + FRANCE + FRANCE + +00-02-14 (hex) DTVRO +000214 (base 16) DTVRO + 813 Daegong Bldg., + 823-21 Yeoksam-Dong, Kangnam-Gu, Seoul, + KOREA KOREA 135-080 + KOREA, REPUBLIC OF + +00-02-15 (hex) Cotas Computer Technology A/B +000215 (base 16) Cotas Computer Technology A/B + Paludan-Mullers Vej 82 + DK-8200 Aarhus N + DENMARK + DENMARK + +00-02-16 (hex) Cisco Systems, Inc. +000216 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive + San Jose CA 95134 + UNITED STATES + +00-02-17 (hex) Cisco Systems, Inc. +000217 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive + San Jose CA 95134 + UNITED STATES + +00-02-18 (hex) Advanced Scientific Corp +000218 (base 16) Advanced Scientific Corp + 1 Fl., No. 26, Industry East 9th Road + Science-based Industrial Park Hsin-Chu + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-02-19 (hex) Paralon Technologies +000219 (base 16) Paralon Technologies + 700 Fifth Ave, Suite 6101 + Seattle WA 98104 + UNITED STATES + +00-02-1A (hex) Zuma Networks +00021A (base 16) Zuma Networks + 8403 Fallbrook Ave. + West Hills CA 91304 + UNITED STATES + +00-02-1B (hex) Kollmorgen-Servotronix +00021B (base 16) Kollmorgen-Servotronix + POB 3919, Petach Tikya + 49130 ISRAEL + ISRAEL + +00-02-1C (hex) Network Elements, Inc. +00021C (base 16) Network Elements, Inc. + 9782 SW Nimbus Avenue + Beaverton OR 97008 + UNITED STATES + +00-02-1D (hex) Data General Communication Ltd. +00021D (base 16) Data General Communication Ltd. + Rm. 18C, Bldg. C, CEIEC Tower + No. 2070, Rd. ShenNanZhong ShenZhen City + CHINA + CHINA + +00-02-1E (hex) SIMTEL S.R.L. +00021E (base 16) SIMTEL S.R.L. + Via Bonifacio Lupi, 25 + 50129 Firenze + ITALY + ITALY + +00-02-1F (hex) Aculab PLC +00021F (base 16) Aculab PLC + Lakeside, Bramley Road + Mount Farm Milton Keynes Bulks MK1 1PT + UK + UNITED KINGDOM + +00-02-20 (hex) Canon Aptex, Inc. +000220 (base 16) Canon Aptex, Inc. + 5-15, Shimomaruko 2-Chrome, Ota-ku + Tokyo 156-0092 + JAPAN + JAPAN + +00-02-21 (hex) DSP Application, Ltd. +000221 (base 16) DSP Application, Ltd. + 12F-12, No. 79, Sec. 1 Hsin Tai Wu Rd. + HSICHI, Taipei County + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-02-22 (hex) Chromisys, Inc. +000222 (base 16) Chromisys, Inc. + 1012 Stewart Drive + Sunnyvale CA 94086 + UNITED STATES + +00-02-23 (hex) ClickTV +000223 (base 16) ClickTV + Kemong Bldg., 4th Fl., + 772 Yoksam-Dong Kangnam-Ku + Seoul Korea 135-010 + KOREA, REPUBLIC OF + +00-02-24 (hex) C-COR +000224 (base 16) C-COR + 15 Sterling Drive + Wallingford CT 06492 + UNITED STATES + +00-02-25 (hex) One Stop Systems +000225 (base 16) One Stop Systems + 2235 Enterprise Street + Suite 110 + Escondido CA 92029 + UNITED STATES + +00-02-26 (hex) XESystems, Inc. +000226 (base 16) XESystems, Inc. + 317 Main Street + East Rochester NY 14445 + UNITED STATES + +00-02-27 (hex) ESD Electronic System Design GmbH +000227 (base 16) ESD Electronic System Design GmbH + Vahrenwalder Str. 207 + 30 165 Hannover GERMANY + GERMANY + +00-02-28 (hex) Necsom, Ltd. +000228 (base 16) Necsom, Ltd. + Necsom Ltd. c/o Koirsto + Saunamaentie 4 A 1 FIN-02770 ESP00 + FINLAND + FINLAND + +00-02-29 (hex) Adtec Corporation +000229 (base 16) Adtec Corporation + 3F Megurohigashiyama Blg + 1 4 4 Higashiyama, Meguro Ku Tokyo 153 0 + JAPAN + JAPAN + +00-02-2A (hex) Asound Electronic +00022A (base 16) Asound Electronic + Xianxi Industries Zone Changan Town + Dong Guon City, Guong Dong Providence + CHINA + CHINA + +00-02-2B (hex) SAXA, Inc. +00022B (base 16) SAXA, Inc. + 13F NBF Platinum Tower 17-3 + Shirogane 1-Chome + Minato-ku Tokyo + JAPAN + +00-02-2C (hex) ABB Bomem, Inc. +00022C (base 16) ABB Bomem, Inc. + 585, boul. Charest Est + Suite 300 Quebec City, PQ + Canada G1K 9H4 + CANADA + +00-02-2D (hex) Agere Systems +00022D (base 16) Agere Systems + P.O. Box 755 + 3430 At Nieuwegein + NETHERLANDS + +00-02-2E (hex) TEAC Corp. R& D +00022E (base 16) TEAC Corp. R& D + 857 Koyata, Iruma + Saitama + JAPAN + JAPAN + +00-02-2F (hex) P-Cube, Ltd. +00022F (base 16) P-Cube, Ltd. + P.O. Box 12331 + Herzlia 46766 + ISRAEL + ISRAEL + +00-02-30 (hex) Intersoft Electronics +000230 (base 16) Intersoft Electronics + Lammerdries 27 + B2250 Olen + BELGIUM + BELGIUM + +00-02-31 (hex) Ingersoll-Rand +000231 (base 16) Ingersoll-Rand + 1467 Route 31 South + P.O. Box 970 + Annandale NJ 08801 + UNITED STATES + +00-02-32 (hex) Avision, Inc. +000232 (base 16) Avision, Inc. + No. 20, Creation Rd. 1, + Science-Based Industrial Park, + Hsinchu Taiwan, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-33 (hex) Mantra Communications, Inc. +000233 (base 16) Mantra Communications, Inc. + 12850 Middlebrook Road + Suite 1 + Germantown MD 20874 + UNITED STATES + +00-02-34 (hex) Imperial Technology, Inc. +000234 (base 16) Imperial Technology, Inc. + 2305 Utah Avenue + El Segundo CA 90245 + UNITED STATES + +00-02-35 (hex) Paragon Networks International +000235 (base 16) Paragon Networks International + 61 Commerce Drive + Brookfield CT 06804 + UNITED STATES + +00-02-36 (hex) INIT GmbH +000236 (base 16) INIT GmbH + Kaeppelestr. 6 + D-76131 Karlsruhe + GERMANY + GERMANY + +00-02-37 (hex) Cosmo Research Corp. +000237 (base 16) Cosmo Research Corp. + Cosmo Bldg, 3-148-5 + Miyaharacho, Omiya Saitama 330-0038 + JAPAN + JAPAN + +00-02-38 (hex) Serome Technology, Inc. +000238 (base 16) Serome Technology, Inc. + 555-14, Baekang B/D 7F + Shinsa-dong, Kangnam-gu + Seoul Korea 135-120 + KOREA, REPUBLIC OF + +00-02-39 (hex) Visicom +000239 (base 16) Visicom + 10052 Mesa Ridge Ct. + San Diego CA 92121 + UNITED STATES + +00-02-3A (hex) ZSK Stickmaschinen GmbH +00023A (base 16) ZSK Stickmaschinen GmbH + Magdeburger Strasse 38-40 + 47800 Krefeld + GERMANY + GERMANY + +00-02-3B (hex) Redback Networks +00023B (base 16) Redback Networks + 1195 Borregas Avenue + Sunnyvale CA 94089 + UNITED STATES + +00-02-3C (hex) Creative Technology, Ltd. +00023C (base 16) Creative Technology, Ltd. + 31 International Business Park + Singapore 609921 + Republic of Singapore + SINGAPORE + +00-02-3D (hex) NuSpeed, Inc. +00023D (base 16) NuSpeed, Inc. + 7767 Elm Creek Blvd., Ste 300 + Maple Grove MN 55369 + UNITED STATES + +00-02-3E (hex) Selta Telematica S.p.a +00023E (base 16) Selta Telematica S.p.a + Via Nazionale km 404.5 + 64019 Tortoreto Lido TE + ITALY + ITALY + +00-02-3F (hex) Compal Electronics, Inc. +00023F (base 16) Compal Electronics, Inc. + 581, Juikuang Rd., + Neihu, Taipei, (114) + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-40 (hex) Seedek Co., Ltd. +000240 (base 16) Seedek Co., Ltd. + #709, 1638-32, Sammo + Shinrimbon-Dong, Kwanak-Gu, Seoul + KOREA + KOREA, REPUBLIC OF + +00-02-41 (hex) Amer.com +000241 (base 16) Amer.com + 7259 Bryan Dairy Road + Largo FL 33777 + UNITED STATES + +00-02-42 (hex) Videoframe Systems +000242 (base 16) Videoframe Systems + 101 Providence Mine Road + Suite 103 + Nevada City CA 95959 + UNITED STATES + +00-02-43 (hex) Raysis Co., Ltd. +000243 (base 16) Raysis Co., Ltd. + 997-10, Daechi-Dong, Kangnam-Ku, + Seoul 135-280, South Korea + KOREA, REPUBLIC OF + +00-02-44 (hex) SURECOM Technology Co. +000244 (base 16) SURECOM Technology Co. + 6F, No. 125, Sec. 2, Datung Rd. + Shijr, Taipei County, 221 + Taiwan Taiwan R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-45 (hex) Lampus Co, Ltd. +000245 (base 16) Lampus Co, Ltd. + 6th Bldg., Samgong, + 58-7 Ranpo 4dong Scoch-go, Seoul, + Korea Korea 137-044 + KOREA, REPUBLIC OF + +00-02-46 (hex) All-Win Tech Co., Ltd. +000246 (base 16) All-Win Tech Co., Ltd. + 11F, No. 111-7, Hsing De Rd., + San Chung City, + Taipei Hsien Taiwan, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-47 (hex) Great Dragon Information Technology (Group) Co., Ltd. +000247 (base 16) Great Dragon Information Technology (Group) Co., Ltd. + 169 Beiyuan Rd., + Chaoyang District + Beijing 100101, CHINA + CHINA + +00-02-48 (hex) Pilz GmbH & Co. +000248 (base 16) Pilz GmbH & Co. + Felix-Wankel-Strasse 2 + D-73760 Ostfildern + GERMANY + GERMANY + +00-02-49 (hex) Aviv Infocom Co, Ltd. +000249 (base 16) Aviv Infocom Co, Ltd. + 962-5, Kwanyang-Dong, Dongan-Gu, + Anyang-City, Kyungki-Do, 431-060 + Korea (ROK) + KOREA, REPUBLIC OF + +00-02-4A (hex) Cisco Systems, Inc. +00024A (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-02-4B (hex) Cisco Systems, Inc. +00024B (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-02-4C (hex) SiByte, Inc. +00024C (base 16) SiByte, Inc. + 2805 Bowers Avenue + Santa Clara CA 95051-0917 + UNITED STATES + +00-02-4D (hex) Mannesman Dematic Colby Pty. Ltd. +00024D (base 16) Mannesman Dematic Colby Pty. Ltd. + 24 Narabang Way + Belrose, NSW 2085 + AUSTRALIA + AUSTRALIA + +00-02-4E (hex) Datacard Group +00024E (base 16) Datacard Group + 11111 Bren Road West + MS 210 + Minnetonka MN 55343 + UNITED STATES + +00-02-4F (hex) IPM Datacom S.R.L. +00024F (base 16) IPM Datacom S.R.L. + Via Roma, 231 + 80027 Frattamaggiore + Naples ITALY + ITALY + +00-02-50 (hex) Geyser Networks, Inc. +000250 (base 16) Geyser Networks, Inc. + 535 Del Rey Avenue + Sunnyvale CA 94086 + UNITED STATES + +00-02-51 (hex) Soma Networks, Inc. +000251 (base 16) Soma Networks, Inc. + 185 Berry Street + Suite 2000 + San Francisco CA 94107 + UNITED STATES + +00-02-52 (hex) Carrier Corporation +000252 (base 16) Carrier Corporation + One Carrier Place + Farmington CT 06034-4015 + UNITED STATES + +00-02-53 (hex) Televideo, Inc. +000253 (base 16) Televideo, Inc. + 2345 Harris Way + San Jose CA 95131 + UNITED STATES + +00-02-54 (hex) WorldGate +000254 (base 16) WorldGate + 3190 Tremont Avenue + Trevose PA 19053 + UNITED STATES + +00-02-55 (hex) IBM Corporation +000255 (base 16) IBM Corporation + 3039 Cornwallis Road, IBM Raleigh (RTP) + P.O. Box 12195 + Raleigh (RTP) NC 27709-2195 + UNITED STATES + +00-02-56 (hex) Alpha Processor, Inc. +000256 (base 16) Alpha Processor, Inc. + 130 C Baker Ave. Ext. + Concord MA 01742 + UNITED STATES + +00-02-57 (hex) Microcom Corp. +000257 (base 16) Microcom Corp. + 8333A Green Meadows Dr. N. + Westerville OH 43081 + UNITED STATES + +00-02-58 (hex) Flying Packets Communications +000258 (base 16) Flying Packets Communications + 388 Market Street + Suite 380 + San Francisco CA 94111 + UNITED STATES + +00-02-59 (hex) Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group +000259 (base 16) Tsann Kuen China (Shanghai)Enterprise Co., Ltd. IT Group + 8F, #99, Huaihai Rd, East, + Shanghai, + CHINA 200021 + CHINA + +00-02-5A (hex) Catena Networks +00025A (base 16) Catena Networks + 307 Legget Drive + Kanata Ontario + Canada K2K 3C8 + CANADA + +00-02-5B (hex) Cambridge Silicon Radio +00025B (base 16) Cambridge Silicon Radio + Unit 400, Science Park, + Milton Road, Cambridge,CB4 OXL + United Kingdom + UNITED KINGDOM + +00-02-5C (hex) SCI Systems (Kunshan) Co., Ltd. +00025C (base 16) SCI Systems (Kunshan) Co., Ltd. + 312 QING YANG ROAD + KUNSHAN, JIANGSU PROVICC + CHINA CHINA 215300 + CHINA + +00-02-5D (hex) Calix Networks +00025D (base 16) Calix Networks + 1035 North McDowell Blvd. + Petaluma CA 94954 + UNITED STATES + +00-02-5E (hex) High Technology Ltd +00025E (base 16) High Technology Ltd + Chongqing Jinghong + A2-10-3 California Garden Yubei District + People's Republic of China + CHINA + +00-02-5F (hex) Nortel Networks +00025F (base 16) Nortel Networks + 9300 trans-CANADA Highway + St. Laurenet, Quebec + H4S 1KS CANADA + CANADA + +00-02-60 (hex) Accordion Networks, Inc. +000260 (base 16) Accordion Networks, Inc. + 39899 Balentine Drive, #335 + Newark CA 94560 + UNITED STATES + +00-02-61 (hex) Tilgin AB +000261 (base 16) Tilgin AB + Finlandsgatan 40 + SE-164 74 Kista + SWEDEN + +00-02-62 (hex) Soyo Group Soyo Com Tech Co., Ltd +000262 (base 16) Soyo Group Soyo Com Tech Co., Ltd + 5H. No. 21 Wu-gong 5 Rd, + Hsing Chuang, + Taipei Hsien Taiwan R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-63 (hex) UPS Manufacturing SRL +000263 (base 16) UPS Manufacturing SRL + Via Giordano, 54 + 37050 Vallese Di Oppeano + Verona Italy + ITALY + +00-02-64 (hex) AudioRamp.com +000264 (base 16) AudioRamp.com + 15941 Red Hill Suite 205 + Tustin CA 92780 + UNITED STATES + +00-02-65 (hex) Virditech Co. Ltd. +000265 (base 16) Virditech Co. Ltd. + Hyundai Topics Blgd., 11th Fl + 44-3 Pangi-dong, Songpa-Gu + Seoul Seoul KOREA + KOREA, REPUBLIC OF + +00-02-66 (hex) Thermalogic Corporation +000266 (base 16) Thermalogic Corporation + 22 Kane Industrial Drive + Hudson MA 01749 + UNITED STATES + +00-02-67 (hex) NODE RUNNER, INC. +000267 (base 16) NODE RUNNER, INC. + 2202 N. FORBES BLVD. + TUCSON AZ 85745 + UNITED STATES + +00-02-68 (hex) Harris Government Communications +000268 (base 16) Harris Government Communications + Systems Division + P.O. Box 37 MS: 1-5856 + Melbourne FL 32902 + UNITED STATES + +00-02-69 (hex) Nadatel Co., Ltd +000269 (base 16) Nadatel Co., Ltd + 9F CoWell Bldg, 66-1 Banpo-Dong + Seocho-Gu, Seoul, + KOREA 137-040 + KOREA, REPUBLIC OF + +00-02-6A (hex) Cocess Telecom Co., Ltd. +00026A (base 16) Cocess Telecom Co., Ltd. + Research & Development Dept. + 43, Yoido-Dong, Youngdeungpo-Ku + Seoul Seoul KOREA + KOREA, REPUBLIC OF + +00-02-6B (hex) BCM Computers Co., Ltd. +00026B (base 16) BCM Computers Co., Ltd. + 4F-1, No. 66, Sec 2, + Nan Kan Rd., Lu-Chu Hsing, Tao Yuan + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-6C (hex) Philips CFT +00026C (base 16) Philips CFT + Building SAN 6 + P.O. Box 218 5600 MD Eindhoven + The Netherlands + NETHERLANDS + +00-02-6D (hex) Adept Telecom +00026D (base 16) Adept Telecom + Avenue de l'Europe + BP 161 F-71204 Le Creusot Cedex + FRANCE + FRANCE + +00-02-6E (hex) NeGeN Access, Inc. +00026E (base 16) NeGeN Access, Inc. + 33 Boston Post Rd. West + Suite 360 + Marlborough MA 01752 + UNITED STATES + +00-02-6F (hex) Senao International Co., Ltd. +00026F (base 16) Senao International Co., Ltd. + 2F, No. 531, Chung-Cheng Rd., + Hsin-Tien City, Taipei County, + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-02-70 (hex) Crewave Co., Ltd. +000270 (base 16) Crewave Co., Ltd. + F7, Pureun Bldg., 28-1 + Jamwon-dong, Seocho-gu + Seoul KOREA 137-030 + KOREA, REPUBLIC OF + +00-02-71 (hex) Vpacket Communications +000271 (base 16) Vpacket Communications + 1390 McCarthy Blvd. + Milpitas CA 95035 + UNITED STATES + +00-02-72 (hex) CC&C Technologies, Inc. +000272 (base 16) CC&C Technologies, Inc. + 8F, 150, Chien I Rd., Chung Ho City, + Taipei County 235 Taiwan R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-73 (hex) Coriolis Networks +000273 (base 16) Coriolis Networks + 330 Codmanhill Road + Boxborough MA 01719 + UNITED STATES + +00-02-74 (hex) Tommy Technologies Corp. +000274 (base 16) Tommy Technologies Corp. + #407 Heehoon Bld + 110-1 Kuro-dong, Kuro-ku + Seoul Seoul KOREA + KOREA, REPUBLIC OF + +00-02-75 (hex) SMART Technologies, Inc. +000275 (base 16) SMART Technologies, Inc. + #600, 1177 11 Ave. S.W. + Calgary, Alberta + Canada T2R 1K9 + CANADA + +00-02-76 (hex) Primax Electronics Ltd. +000276 (base 16) Primax Electronics Ltd. + No. 669, Ruey Kuang Road, Neihu + Taipei Taiwan, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-77 (hex) Cash Systemes Industrie +000277 (base 16) Cash Systemes Industrie + Technoparc Epsilon + Rd 100 83700 St Raphael + FRANCE + FRANCE + +00-02-78 (hex) Samsung Electro-Mechanics Co., Ltd. +000278 (base 16) Samsung Electro-Mechanics Co., Ltd. + 314, Mae-tan-dong, + Pai-dal-gu, Kyoung-gi-do, + Suwon Suwon KOREA + KOREA, REPUBLIC OF + +00-02-79 (hex) Control Applications, Ltd. +000279 (base 16) Control Applications, Ltd. + 3 Tevuot Haarets St. + Tel-Aviv 69546 + ISRAEL + ISRAEL + +00-02-7A (hex) IOI Technology Corporation +00027A (base 16) IOI Technology Corporation + 4F-3 No. 125 Lane 235, + Pao Chiao Road Hsin Tien City, + Taipei TAIWAN, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-7B (hex) Amplify Net, Inc. +00027B (base 16) Amplify Net, Inc. + 47381 Bayside Parkway + Fremont CA 94538 + UNITED STATES + +00-02-7C (hex) Trilithic, Inc. +00027C (base 16) Trilithic, Inc. + 9202 E. 33rd Street + Indianapolis IN 46235 + UNITED STATES + +00-02-7D (hex) Cisco Systems, Inc. +00027D (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-02-7E (hex) Cisco Systems, Inc. +00027E (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-02-7F (hex) ask-technologies.com +00027F (base 16) ask-technologies.com + 36 Wellington Business Park + Dukes Ride, Crowthorne Berkshire RG45 6L + UNITED KINGDOM + +00-02-80 (hex) Mu Net, Inc. +000280 (base 16) Mu Net, Inc. + 442 Marrett Road + Suite 9 + Lexington MA 02421 + UNITED STATES + +00-02-81 (hex) Madge Ltd. +000281 (base 16) Madge Ltd. + Madge House + Priors Way + Maindenhead Berkshire SL6 2HP + UNITED KINGDOM + +00-02-82 (hex) ViaClix, Inc. +000282 (base 16) ViaClix, Inc. + 1400 Dell Ave., Suite B + Campbell CA 95008 + UNITED STATES + +00-02-83 (hex) Spectrum Controls, Inc. +000283 (base 16) Spectrum Controls, Inc. + PO Box 5533 + Bellevue WA 98006 + UNITED STATES + +00-02-84 (hex) AREVA T&D +000284 (base 16) AREVA T&D + Avenue de Figuieres BP 75 + 34975 LATTES Cedex + FRANCE + +00-02-85 (hex) Riverstone Networks +000285 (base 16) Riverstone Networks + 5200 Great America Parkway + Santa Clara CA 95054 + UNITED STATES + +00-02-86 (hex) Occam Networks +000286 (base 16) Occam Networks + 4183 State Street + Santa Barbara CA 93110 + UNITED STATES + +00-02-87 (hex) Adapcom +000287 (base 16) Adapcom + 172-A Component Drive + San Jose CA 95131 + UNITED STATES + +00-02-88 (hex) GLOBAL VILLAGE COMMUNICATION +000288 (base 16) GLOBAL VILLAGE COMMUNICATION + 1144 EAST ARQUES AVE. + SUNNYVALE CA 94086 + UNITED STATES + +00-02-89 (hex) DNE Technologies +000289 (base 16) DNE Technologies + 50 Barnes Park N + Wallingford CT 06492 + UNITED STATES + +00-02-8A (hex) Ambit Microsystems Corporation +00028A (base 16) Ambit Microsystems Corporation + 5F-1, 5 Hsin-An Road Hsinchu, + Science Based Industrial Park, + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-02-8B (hex) VDSL Systems OY +00028B (base 16) VDSL Systems OY + Tekniikantie 12 + 02 150 Espoo + FINLAND + FINLAND + +00-02-8C (hex) Micrel-Synergy Semiconductor +00028C (base 16) Micrel-Synergy Semiconductor + 3250 Scott Boulevard + Santa Clara CA 95054 + UNITED STATES + +00-02-8D (hex) Movita Technologies, Inc. +00028D (base 16) Movita Technologies, Inc. + No. 26 Wu-Chuan 7th Road, + Wu-Ku Industrial Park + Taipei Taiwan, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-8E (hex) Rapid 5 Networks, Inc. +00028E (base 16) Rapid 5 Networks, Inc. + 180 Baytech Drive + San Jose CA 95134-2302 + UNITED STATES + +00-02-8F (hex) Globetek, Inc. +00028F (base 16) Globetek, Inc. + 1607 Akron Peninsula Rd. + Suite 103 + Akron OH 44313-5190 + UNITED STATES + +00-02-90 (hex) Woorigisool, Inc. +000290 (base 16) Woorigisool, Inc. + Yoopoong Bldg. + 1595-1, Bongchum-7dong, + Seoul Seoul KOREA + KOREA, REPUBLIC OF + +00-02-91 (hex) Open Network Co., Ltd. +000291 (base 16) Open Network Co., Ltd. + Seishin Bldg., 2-5-10 Shinjuku + Shinjuku-ku, Tokyo + JAPAN 160-0022 + JAPAN + +00-02-92 (hex) Logic Innovations, Inc. +000292 (base 16) Logic Innovations, Inc. + 6205 Lusk Blvd. + San Diego CA 92121-2731 + UNITED STATES + +00-02-93 (hex) Solid Data Systems +000293 (base 16) Solid Data Systems + 2945 Oakmead Village Court + Santa Clara CA 95051 + UNITED STATES + +00-02-94 (hex) Tokyo Sokushin Co., Ltd. +000294 (base 16) Tokyo Sokushin Co., Ltd. + 5-16-12 Nishi-Nippori + Arakawa-ku, Tokyo 116-0013 + JAPAN + JAPAN + +00-02-95 (hex) IP.Access Limited +000295 (base 16) IP.Access Limited + Melbourn Science Park + Cambridge Road, Melbourn Royston, Hartfo + SG8 6EE SG8 6EE U.K. + UNITED KINGDOM + +00-02-96 (hex) Lectron Co,. Ltd. +000296 (base 16) Lectron Co,. Ltd. + 9F, No.171, Sec. 2, Tatung Rd., + Hsichih City, Taipei Hsien 221, + Taiwan Taiwan R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-97 (hex) C-COR.net +000297 (base 16) C-COR.net + 60 Decibel Road + BMS Engineering + State College PA 16801 + UNITED STATES + +00-02-98 (hex) Broadframe Corporation +000298 (base 16) Broadframe Corporation + 5828 Moonstone Ave. + Suite 220 + Alta Loma CA 91701 + UNITED STATES + +00-02-99 (hex) Apex, Inc. +000299 (base 16) Apex, Inc. + 9911 Willows Rd. N.E. + Redmond WA 95052 + UNITED STATES + +00-02-9A (hex) Storage Apps +00029A (base 16) Storage Apps + 3 Princess Road + Lawrenceville NJ 08648 + UNITED STATES + +00-02-9B (hex) Kreatel Communications AB +00029B (base 16) Kreatel Communications AB + Teknikringen 4C + SE-58330 Linkoping + SWEDEN + SWEDEN + +00-02-9C (hex) 3COM +00029C (base 16) 3COM + 405 SPRING HILL ROAD + SHARON NH 03458 + UNITED STATES + +00-02-9D (hex) Merix Corp. +00029D (base 16) Merix Corp. + Jin-Su Building, 49-16 + Machum-Dong, Song-Pa-ku + Seoul Seoul KOREA + KOREA, REPUBLIC OF + +00-02-9E (hex) Information Equipment Co., Ltd. +00029E (base 16) Information Equipment Co., Ltd. + 740-1 Eaho Bldg., Yeok Sam-Dong + Kangnam-ku + Seoul Korea #135-080 + KOREA, REPUBLIC OF + +00-02-9F (hex) L-3 Communication Aviation Recorders +00029F (base 16) L-3 Communication Aviation Recorders + P.O. Box 3041 + Sarasota FL 34230 + UNITED STATES + +00-02-A0 (hex) Flatstack Ltd. +0002A0 (base 16) Flatstack Ltd. + 1112 Budapest + Peterhegyi UT 98 + HUNGARY + HUNGARY + +00-02-A1 (hex) World Wide Packets +0002A1 (base 16) World Wide Packets + PO Box 14645 + Spokane WA 99214 + UNITED STATES + +00-02-A2 (hex) Hilscher GmbH +0002A2 (base 16) Hilscher GmbH + Rheinstraße 15 + 65795 Hattersheim + GERMANY + GERMANY + +00-02-A3 (hex) ABB Power Automation +0002A3 (base 16) ABB Power Automation + Bahnhofstrasse + CH-5300 Turgi + SWITZERLAND + +00-02-A4 (hex) AddPac Technology Co., Ltd. +0002A4 (base 16) AddPac Technology Co., Ltd. + 3F Jeoung Am Bldg., 769-12 + Yeoksam-dong, Kangnam-gu, + Seoul Seoul Korea + KOREA, REPUBLIC OF + +00-02-A5 (hex) Compaq Computer Corporation +0002A5 (base 16) Compaq Computer Corporation + 20555 State Highway 249 + Houston TX 77070 + UNITED STATES + +00-02-A6 (hex) Effinet Systems Co., Ltd. +0002A6 (base 16) Effinet Systems Co., Ltd. + Yugong Bldg. 502 + 1144-1, Sanbon-Dong Kunpo-shi, Kyonggi-D + Korea + KOREA, REPUBLIC OF + +00-02-A7 (hex) Vivace Networks +0002A7 (base 16) Vivace Networks + 2730 Orchard Parkway + San Jose CA 95134 + UNITED STATES + +00-02-A8 (hex) Air Link Technology +0002A8 (base 16) Air Link Technology + Bethel Bldg. 303 + 324-1 Yangjee-Dong, Seocho-Gu + Seoul KOREA 137-130 + KOREA, REPUBLIC OF + +00-02-A9 (hex) RACOM, s.r.o. +0002A9 (base 16) RACOM, s.r.o. + Mirova 1283, Nove Mesto na Morave + 592 31 Czech republic + CZECH REPUBLIC + +00-02-AA (hex) PLcom Co., Ltd. +0002AA (base 16) PLcom Co., Ltd. + Hosung B/D, #1083-1, Hogye-Dong + Dongan-Ku, Anyang-City + South Korea + KOREA, REPUBLIC OF + +00-02-AB (hex) CTC Union Technologies Co., Ltd. +0002AB (base 16) CTC Union Technologies Co., Ltd. + 8F No. 60 Zhouzi St. + Neihu Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-02-AC (hex) 3PAR data +0002AC (base 16) 3PAR data + 4209 Technology Drive + Fremont CA 94538 + UNITED STATES + +00-02-AD (hex) Pentax Corpotation +0002AD (base 16) Pentax Corpotation + 2-36-9, Maeno-cho, Itabashi-ku + Tokyo 174-8639 + JAPAN + +00-02-AE (hex) Scannex Electronics Ltd. +0002AE (base 16) Scannex Electronics Ltd. + Unit 8 English Business Park + English Close + Hove BN3 7ET + UNITED KINGDOM + +00-02-AF (hex) TeleCruz Technology, Inc. +0002AF (base 16) TeleCruz Technology, Inc. + 2391 Qume Dr. + San Jose CA 95131 + UNITED STATES + +00-02-B0 (hex) Hokubu Communication & Industrial Co., Ltd. +0002B0 (base 16) Hokubu Communication & Industrial Co., Ltd. + Fushiogami-aza-oki 27-1 + Fukushima 960-8514 + JAPAN + +00-02-B1 (hex) Anritsu, Ltd. +0002B1 (base 16) Anritsu, Ltd. + Rutherford Close + Stevenage, Herts England, SG12EF + UNITED KINGDOM + UNITED KINGDOM + +00-02-B2 (hex) Cablevision +0002B2 (base 16) Cablevision + 420 Crossways Park Drive West + Woodbury NY 11787 + UNITED STATES + +00-02-B3 (hex) Intel Corporation +0002B3 (base 16) Intel Corporation + M/S: JF3-420 + 2111 N.E. 25th Ave. + Hillsboro OR 97124 + UNITED STATES + +00-02-B4 (hex) DAPHNE +0002B4 (base 16) DAPHNE + 101 Chaussee De Binche + 7000 Hons + BELGIUM + BELGIUM + +00-02-B5 (hex) Avnet, Inc. +0002B5 (base 16) Avnet, Inc. + 2211 S. 47th Street + Phoenix AZ 85034 + UNITED STATES + +00-02-B6 (hex) Acrosser Technology Co., Ltd. +0002B6 (base 16) Acrosser Technology Co., Ltd. + No. 116-2 Guang-Fu Rd. + Sea 1, San Chung, + Taipei Taipei R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-B7 (hex) Watanabe Electric Industry Co., Ltd. +0002B7 (base 16) Watanabe Electric Industry Co., Ltd. + 6-16-19, Jingumae, Shibuya-ku + Tokyo 150-0001, + JAPAN + JAPAN + +00-02-B8 (hex) WHI KONSULT AB +0002B8 (base 16) WHI KONSULT AB + Scheelegatan 11 + 12040 Arsta + Stockholm SE-112 28 + SWEDEN + +00-02-B9 (hex) Cisco Systems, Inc. +0002B9 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-02-BA (hex) Cisco Systems, Inc. +0002BA (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-02-BB (hex) Continuous Computing Corp +0002BB (base 16) Continuous Computing Corp + 9380 Carroll Park Drive + San Diego CA 92121 + UNITED STATES + +00-02-BC (hex) LVL 7 Systems, Inc. +0002BC (base 16) LVL 7 Systems, Inc. + 13000 Weston Pkwy + Suite 105 + Cary NC 27513 + UNITED STATES + +00-02-BD (hex) Bionet Co., Ltd. +0002BD (base 16) Bionet Co., Ltd. + 3F, Medison Venture Tower, + 997-4, Daechi-dong, Kangnam-gu, Seoul, + KOREA + KOREA, REPUBLIC OF + +00-02-BE (hex) Totsu Engineering, Inc. +0002BE (base 16) Totsu Engineering, Inc. + 5-13-13 Roppongi Minato-ku + Zip: 106-0032 + Tokyo Tokyo JAPAN + JAPAN + +00-02-BF (hex) dotRocket, Inc. +0002BF (base 16) dotRocket, Inc. + 1901 S. Bascom, Suite 300 + Campbell CA 95008 + UNITED STATES + +00-02-C0 (hex) Bencent Tzeng Industry Co., Ltd. +0002C0 (base 16) Bencent Tzeng Industry Co., Ltd. + 3rd fl., No. 3 Ruey Kuang Rd., + Nei Hu Dist., Taipei 114 + Taiwan Taiwan R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-02-C1 (hex) Innovative Electronic Designs, Inc. +0002C1 (base 16) Innovative Electronic Designs, Inc. + 9701 Taylorsville Rd. + Louisville KY 40299 + UNITED STATES + +00-02-C2 (hex) Net Vision Telecom +0002C2 (base 16) Net Vision Telecom + #206 Software Support Center + 48 Jang-Dong Yusong-Gu, Taejon + 305-343 Rep. of Korea + KOREA, REPUBLIC OF + +00-02-C3 (hex) Arelnet Ltd. +0002C3 (base 16) Arelnet Ltd. + 3 Hayarden St. + Yavne 70600 + ISRAEL + ISRAEL + +00-02-C4 (hex) Vector International BVBA +0002C4 (base 16) Vector International BVBA + Technologielaan 4 + B-3001 Leuven Heverlee + BELGIUM + +00-02-C5 (hex) Evertz Microsystems Ltd. +0002C5 (base 16) Evertz Microsystems Ltd. + 5288 John Lucas Drive + Burlington + Ontario L7L 5Z9 + CANADA + +00-02-C6 (hex) Data Track Technology PLC +0002C6 (base 16) Data Track Technology PLC + 153 Somerford Road + Christchurch, Dorset BH23 3TY, + UNITED KINGDOM + UNITED KINGDOM + +00-02-C7 (hex) ALPS ELECTRIC Co., Ltd. +0002C7 (base 16) ALPS ELECTRIC Co., Ltd. + 1-2-1, Okinouchi, Sama-City, + Fukushima-pref, 976-8501, + JAPAN + JAPAN + +00-02-C8 (hex) Technocom Communications Technology (pte) Ltd +0002C8 (base 16) Technocom Communications Technology (pte) Ltd + 189 Kaki Buckit Avenue 1 + #03-03 Shun Li Industrial Park + Singapore 416029 + SINGAPORE + +00-02-C9 (hex) Mellanox Technologies +0002C9 (base 16) Mellanox Technologies + 2900 Stender Way + Santa Clara CA 95054 + UNITED STATES + +00-02-CA (hex) EndPoints, Inc. +0002CA (base 16) EndPoints, Inc. + 4 Preston Court + Bedford MA 01730 + UNITED STATES + +00-02-CB (hex) TriState Ltd. +0002CB (base 16) TriState Ltd. + Shinonaga Blg. 4-11-19 Hokko-cho + Tomakomai-shi, Hokkaido + 053-0852 053-0852 Japan + JAPAN + +00-02-CC (hex) M.C.C.I +0002CC (base 16) M.C.C.I + 3520 Krums Corners Rd. + Ithaca NY 14850 + UNITED STATES + +00-02-CD (hex) TeleDream, Inc. +0002CD (base 16) TeleDream, Inc. + Shinhwa Bldg., 940-10 Daechi-Dong + Kangnam-ku, Seoul 135-280 + KOREA, REPUBLIC OF + +00-02-CE (hex) FoxJet, Inc. +0002CE (base 16) FoxJet, Inc. + 2016 E. Randal Mill Rd. #409 + Arlington TX 76011-8223 + UNITED STATES + +00-02-CF (hex) ZyGate Communications, Inc. +0002CF (base 16) ZyGate Communications, Inc. + 2F, No.48, Lung-Chin Road + Lung-Tan, Tanyuan, + TAIWAN, REPUBLIC OF CHINA + +00-02-D0 (hex) Comdial Corporation +0002D0 (base 16) Comdial Corporation + 1180 Seminole Trail + Charlottesville VA 22901 + UNITED STATES + +00-02-D1 (hex) Vivotek, Inc. +0002D1 (base 16) Vivotek, Inc. + 5F-1, 168-1, Lien-Chen Rd, + Chung-Ho, Taipei County, + TAIWAN, REPUBLIC OF CHINA + +00-02-D2 (hex) Workstation AG +0002D2 (base 16) Workstation AG + Schaffhauserstr. 55 + CH-8152 Glattbrugg + SWITZERLAND + +00-02-D3 (hex) NetBotz, Inc. +0002D3 (base 16) NetBotz, Inc. + 110044 Research Blvd. + Suite C-100 + Austin TX 78759 + UNITED STATES + +00-02-D4 (hex) PDA Peripherals, Inc. +0002D4 (base 16) PDA Peripherals, Inc. + 205 Orange St. + Third Floor + New Haven CT 06510 + UNITED STATES + +00-02-D5 (hex) ACR +0002D5 (base 16) ACR + Cardoulines B2 + 1360 rte Dolinis 06560 Valbonne + FRANCE + +00-02-D6 (hex) NICE Systems +0002D6 (base 16) NICE Systems + 8 Hapnina St., POB 690 + Ra'Anana 43107 + ISRAEL + +00-02-D7 (hex) EMPEG Ltd +0002D7 (base 16) EMPEG Ltd + 1 Signet Court + Swann's Road Cambridge, UK + CB5 8LA + UNITED KINGDOM + +00-02-D8 (hex) BRECIS Communications Corporation +0002D8 (base 16) BRECIS Communications Corporation + 2025 Gateway Place, Suite 132 + San Jose CA 95110 + UNITED STATES + +00-02-D9 (hex) Reliable Controls +0002D9 (base 16) Reliable Controls + 120 Hallowell Road + Victoria, B.C. V9A 7K2 + CANADA + +00-02-DA (hex) ExiO Communications, Inc. +0002DA (base 16) ExiO Communications, Inc. + 2362 Qume Drive + Suite C + San Jose CA 95131 + UNITED STATES + +00-02-DB (hex) NETSEC +0002DB (base 16) NETSEC + 13505 Dulles Technology Drive + Suite 1 + Hernandon VA 20171 + UNITED STATES + +00-02-DC (hex) Fujitsu General Limited +0002DC (base 16) Fujitsu General Limited + 1116, Suenaga, Takatsu-Ku, + Kawasaki-City, Kanagawa-Pref., + 213-8502 + JAPAN + +00-02-DD (hex) Bromax Communications, Ltd. +0002DD (base 16) Bromax Communications, Ltd. + No. 20 Kuang Fu Road, + Hsin Chu Industrial Park, Hu Kou, + Hsin Chu 303 + TAIWAN, REPUBLIC OF CHINA + +00-02-DE (hex) Astrodesign, Inc. +0002DE (base 16) Astrodesign, Inc. + 2-22-12 Kamikodana Ka + Nakaharaku, Kawasai-City + Kanagawa + JAPAN + +00-02-DF (hex) Net Com Systems, Inc. +0002DF (base 16) Net Com Systems, Inc. + 15-3, Yoido-Dong, + Yeoungdongpo-ku, + Seoul + KOREA, REPUBLIC OF + +00-02-E0 (hex) ETAS GmbH +0002E0 (base 16) ETAS GmbH + Borsigstrasse 10 + D70469 Stuttgart + GERMANY + +00-02-E1 (hex) Integrated Network Corporation +0002E1 (base 16) Integrated Network Corporation + 757 Route 202/206 + Bridgewater NJ 08807 + UNITED STATES + +00-02-E2 (hex) NDC Infared Engineering +0002E2 (base 16) NDC Infared Engineering + 5314 N. Irwindale Ave. + Irwindale CA 91706 + UNITED STATES + +00-02-E3 (hex) LITE-ON Communications, Inc. +0002E3 (base 16) LITE-ON Communications, Inc. + 736 S. Hillview Drive + Milpitas CA 95035 + UNITED STATES + +00-02-E4 (hex) JC HYUN Systems, Inc. +0002E4 (base 16) JC HYUN Systems, Inc. + Shinbong Bldg, 736-6, + Yoksam-Dong, Kangnam-Ku, + Seoul (135-080) + KOREA, REPUBLIC OF + +00-02-E5 (hex) Timeware Ltd. +0002E5 (base 16) Timeware Ltd. + Brookfield Grange + 79 Falinge Rd, Rockdale + Lancs 042 GLB + UNITED KINGDOM + +00-02-E6 (hex) Gould Instrument Systems, Inc. +0002E6 (base 16) Gould Instrument Systems, Inc. + 8333 Rockside Road + Valley View OH 44125 + UNITED STATES + +00-02-E7 (hex) CAB GmbH & Co KG +0002E7 (base 16) CAB GmbH & Co KG + Wilhelm-Schickard-Str 14 + 76131 Karlsruhe + GERMANY + +00-02-E8 (hex) E.D.&A. +0002E8 (base 16) E.D.&A. + Energielaan 16 + IZ Bosduin 2950 Kapellen + BELGIUM + +00-02-E9 (hex) CS Systemes De Securite - C3S +0002E9 (base 16) CS Systemes De Securite - C3S + 23, rue de Schwobsheim + 67600 Baldenheim + FRANCE + +00-02-EA (hex) Focus Enhancements +0002EA (base 16) Focus Enhancements + 1370 Dell Ave. + Campbell CA 95008 + UNITED STATES + +00-02-EB (hex) Pico Communications +0002EB (base 16) Pico Communications + 20085 Stevens Creek Blvd. + Suite #100 + Cupertino CA 95014 + UNITED STATES + +00-02-EC (hex) Maschoff Design Engineering +0002EC (base 16) Maschoff Design Engineering + 4454 Cedar Lake Rd. #8 + St. Louis Park MN 55416 + UNITED STATES + +00-02-ED (hex) DXO Telecom Co., Ltd. +0002ED (base 16) DXO Telecom Co., Ltd. + 8F, 300-11, Yumgok-Dong, + Seocho-Ku, Seoul 137-789 + KOREA, REPUBLIC OF + +00-02-EE (hex) Nokia Danmark A/S +0002EE (base 16) Nokia Danmark A/S + Frederikskaj, Copenhagen V + DK-1790 + DENMARK + +00-02-EF (hex) CCC Network Systems Group Ltd. +0002EF (base 16) CCC Network Systems Group Ltd. + 13 Farnborough Business Centre + Eelmoor Road, Farnborough, Hants, GU14 7 + ENGLAND + UNITED KINGDOM + +00-02-F0 (hex) AME Optimedia Technology Co., Ltd. +0002F0 (base 16) AME Optimedia Technology Co., Ltd. + 17F-2, 79 Hsin Tai Wu Road, Sec. 1, + Hsi-Chih, Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-02-F1 (hex) Pinetron Co., Ltd. +0002F1 (base 16) Pinetron Co., Ltd. + Bldg. #1599-11, + Seocho-Dong, Seocho-Ku, + Seoul 137-073 + KOREA, REPUBLIC OF + +00-02-F2 (hex) eDevice, Inc. +0002F2 (base 16) eDevice, Inc. + 420 Lexington Avenue + Suite 2300 + New York NY 10170 + UNITED STATES + +00-02-F3 (hex) Media Serve Co., Ltd. +0002F3 (base 16) Media Serve Co., Ltd. + Dongsung Bldg. #17-8, Youido-dong, + Youngdeoungpo-ku, + Seoul + KOREA, REPUBLIC OF + +00-02-F4 (hex) PCTEL, Inc. +0002F4 (base 16) PCTEL, Inc. + 1331 California Circle + Milpitas CA 95035 + UNITED STATES + +00-02-F5 (hex) VIVE Synergies, Inc. +0002F5 (base 16) VIVE Synergies, Inc. + 30 West Beaver Creek Road, Unit 101 + Richmond Hill, Ontario + L4B 3K1 + CANADA + +00-02-F6 (hex) Equipe Communications +0002F6 (base 16) Equipe Communications + 100 Nagog Park + Acton MA 01720 + UNITED STATES + +00-02-F7 (hex) ARM +0002F7 (base 16) ARM + 110, Fulbourn Road + Cherry Hinton Cambridge + CB1 9NJ + UNITED KINGDOM + +00-02-F8 (hex) SEAKR Engineering, Inc. +0002F8 (base 16) SEAKR Engineering, Inc. + 12847 E. Peakview Ave. + Englewood CO 80111 + UNITED STATES + +00-02-F9 (hex) Mimos Semiconductor SDN BHD +0002F9 (base 16) Mimos Semiconductor SDN BHD + Taman Teknologi Malaysia + Bukit Jalil 57000 Kuala Lumpur, + MALAYSIA + +00-02-FA (hex) DX Antenna Co., Ltd. +0002FA (base 16) DX Antenna Co., Ltd. + 2-15 Hamazaki-Dori, + Hyogo-ku, Kobe + JAPAN + +00-02-FB (hex) Baumuller Aulugen-Systemtechnik GmbH +0002FB (base 16) Baumuller Aulugen-Systemtechnik GmbH + Ostendsts. 84 + D-90482 Nuruberg + GERMANY + +00-02-FC (hex) Cisco Systems, Inc. +0002FC (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-02-FD (hex) Cisco Systems, Inc. +0002FD (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-02-FE (hex) Viditec, Inc. +0002FE (base 16) Viditec, Inc. + 520 Central Parkway E. + Suite 115 + Plano TX 75074 + UNITED STATES + +00-02-FF (hex) Handan BroadInfoCom +0002FF (base 16) Handan BroadInfoCom + 5th Fl. Shinsung Plaza #697-11 + Yeogsam-dong, Kangnam-gu + Seoul + KOREA, REPUBLIC OF + +00-03-00 (hex) NetContinuum, Inc. +000300 (base 16) NetContinuum, Inc. + 1705 Wyatt Drive + Santa Clara CA 95054 + UNITED STATES + +00-03-01 (hex) Avantas Networks Corporation +000301 (base 16) Avantas Networks Corporation + 9900 Cavendish Blvd., Suite #310 + St-Laurent, Quebec + H4M 2V2 + CANADA + +00-03-02 (hex) Charles Industries, Ltd. +000302 (base 16) Charles Industries, Ltd. + 5600 Apollo Drive + Rolling Meadows IL 60008 + UNITED STATES + +00-03-03 (hex) JAMA Electronics Co., Ltd. +000303 (base 16) JAMA Electronics Co., Ltd. + 10F, No. 222-1, Sec. 3 + Ta-Tung Rd., Hsi-Chih + Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-03-04 (hex) Pacific Broadband Communications +000304 (base 16) Pacific Broadband Communications + 3103 North First St. + San Jose CA 95134 + UNITED STATES + +00-03-05 (hex) Smart Network Devices GmbH +000305 (base 16) Smart Network Devices GmbH + Karl Heinz Beckurts-Str. 13 + 52428 Julich + GERMANY + +00-03-06 (hex) Fusion In Tech Co., Ltd. +000306 (base 16) Fusion In Tech Co., Ltd. + 6Fl, Daeyoon Bldg. 1688-5, Seocho-dong + Seocho-ku, + Seoul, + KOREA, REPUBLIC OF + +00-03-07 (hex) Secure Works, Inc. +000307 (base 16) Secure Works, Inc. + 11 Executive Drive + Suite 200 + Atlanta GA 30329 + UNITED STATES + +00-03-08 (hex) AM Communications, Inc. +000308 (base 16) AM Communications, Inc. + 100 Commerce Blvd. + Quakertown PA 18951 + UNITED STATES + +00-03-09 (hex) Texcel Technology PLC +000309 (base 16) Texcel Technology PLC + Thames Road + Crayford Kent DA1 4SB + ENGLAND + UNITED KINGDOM + +00-03-0A (hex) Argus Technologies +00030A (base 16) Argus Technologies + 8F, No. 183, Kang Chien Rd. + 114 + TAIWAN, REPUBLIC OF CHINA + +00-03-0B (hex) Hunter Technology, Inc. +00030B (base 16) Hunter Technology, Inc. + Hanbang Bldg., 3F. 418-4, + Dokok-Dong, Kangnam-gu, + Seoul 135-270 + KOREA, REPUBLIC OF + +00-03-0C (hex) Telesoft Technologies Ltd. +00030C (base 16) Telesoft Technologies Ltd. + Observatory House, Stour Park, + Blandforum, Dorset, DT11 9LQ, + UNITED KINGDOM + +00-03-0D (hex) Uniwill Computer Corp. +00030D (base 16) Uniwill Computer Corp. + No. 24, Pei Yuan Rd., Chung + Li Industrial Park, Chung + Li City + TAIWAN, REPUBLIC OF CHINA + +00-03-0E (hex) Core Communications Co., Ltd. +00030E (base 16) Core Communications Co., Ltd. + 3F Shopping Center Bd. of + SSang Young Hwang-geum APT, #253 Mapo-Do + Seoul (121-050) (121-050) + KOREA, REPUBLIC OF + +00-03-0F (hex) Digital China (Shanghai) Networks Ltd. +00030F (base 16) Digital China (Shanghai) Networks Ltd. + 602-23, Haitai Building, 351 Guo Shoujin + Pudong New District, + Shanghai + CHINA + +00-03-10 (hex) ITX E-Globaledge Corporation +000310 (base 16) ITX E-Globaledge Corporation + Nakameguro GT tower 7F 2-1-1 kamimeguro + Meguro-ku + Tokyo 153-0051 + JAPAN + +00-03-11 (hex) Micro Technology Co., Ltd. +000311 (base 16) Micro Technology Co., Ltd. + Suehiro Bldg. + 1-2, Soto Kanda 5 Chome Chiyoda-ku, Toky + 101-0021 + JAPAN + +00-03-12 (hex) TR-Systemtechnik GmbH +000312 (base 16) TR-Systemtechnik GmbH + Eglishalde 6 + D-78647 Trossingen + GERMANY + +00-03-13 (hex) Access Media SPA +000313 (base 16) Access Media SPA + Via delle Industrie, 4/g + 24035 LALLIO (BG) + ITALY + +00-03-14 (hex) Teleware Network Systems +000314 (base 16) Teleware Network Systems + #7806 7th Dongil Technotown, + Kinanyang Dong 823, Dongahn Gu, Anyang C + 431-062 + KOREA, REPUBLIC OF + +00-03-15 (hex) Cidco Incorporated +000315 (base 16) Cidco Incorporated + 220 Cochrane Circle + Morgan Hill CA 95037 + UNITED STATES + +00-03-16 (hex) Nobell Communications, Inc. +000316 (base 16) Nobell Communications, Inc. + 3410 Far West Blvd., Suite 240 + Austin TX 78731 + UNITED STATES + +00-03-17 (hex) Merlin Systems, Inc. +000317 (base 16) Merlin Systems, Inc. + 3900 New Park Mall Rd. + 3rd Floor + Newark CA 94560 + UNITED STATES + +00-03-18 (hex) Cyras Systems, Inc. +000318 (base 16) Cyras Systems, Inc. + 47100 Bayside Parkway + Fremont CA 94538 + UNITED STATES + +00-03-19 (hex) Infineon AG +000319 (base 16) Infineon AG + P.O. Box 800949 + D-81609 Munich + GERMANY + +00-03-1A (hex) Beijing Broad Telecom Ltd., China +00031A (base 16) Beijing Broad Telecom Ltd., China + P.O. Box #147 + Beijing University of Posts and Telecom + Beijing 100876 + CHINA + +00-03-1B (hex) Cellvision Systems, Inc. +00031B (base 16) Cellvision Systems, Inc. + 3F-1, 75, Hsin Taiwu Road, Sec. 1 + Hsichih, Taipei, + TAIWAN, REPUBLIC OF CHINA + +00-03-1C (hex) Svenska Hardvarufabriken AB +00031C (base 16) Svenska Hardvarufabriken AB + Ole Romersvag 16, Ideon + SE-223 70 Lund + SWEDEN + +00-03-1D (hex) Taiwan Commate Computer, Inc. +00031D (base 16) Taiwan Commate Computer, Inc. + 8F, No. 94, Sec 1, + Shin Tai Wu Rd. Hsi Chih, Taipei Hsien, + TAIWAN, REPUBLIC OF CHINA + +00-03-1E (hex) Optranet, Inc. +00031E (base 16) Optranet, Inc. + 7041 Koll Center Pkwy + Suite 135 + Pleasanton CA 94566 + UNITED STATES + +00-03-1F (hex) Condev Ltd. +00031F (base 16) Condev Ltd. + 200-1626 West 2nd Ave. + Vancouver, B.C. V6J 1H4 + CANADA + +00-03-20 (hex) Xpeed, Inc. +000320 (base 16) Xpeed, Inc. + 99 W. Tasman Drive + Suite 110 + San Jose CA 95134 + UNITED STATES + +00-03-21 (hex) Reco Research Co., Ltd. +000321 (base 16) Reco Research Co., Ltd. + No. 47-1, Sec. 2, + Kuang Fu Rd.,San Chung City, Taipei, + TAIWAN, REPUBLIC OF CHINA + +00-03-22 (hex) IDIS Co., Ltd. +000322 (base 16) IDIS Co., Ltd. + 7th Floor, 646-7 Yuksam-Dong, + Kangnam-Gu, Seoul 135-280, + KOREA, REPUBLIC OF + +00-03-23 (hex) Cornet Technology, Inc. +000323 (base 16) Cornet Technology, Inc. + 6800 Versar Center, Suite 216 + Springfield VA 22151-4147 + UNITED STATES + +00-03-24 (hex) SANYO Multimedia Tottori Co., Ltd. +000324 (base 16) SANYO Multimedia Tottori Co., Ltd. + 7-101 Tachikawa-cho + Tottori City 680-8634 + JAPAN + +00-03-25 (hex) Arima Computer Corp. +000325 (base 16) Arima Computer Corp. + 6th Fl., No. 327, + Sung-lung Rd., Taipei City, + TAIWAN, REPUBLIC OF CHINA + +00-03-26 (hex) Iwasaki Information Systems Co., Ltd. +000326 (base 16) Iwasaki Information Systems Co., Ltd. + 3361 Oshi + Fukiage-machi, Saitama 369-0113 + JAPAN + +00-03-27 (hex) ACT'L +000327 (base 16) ACT'L + Avenue de Artisanat 10A + 1924 Braine l'Allard + BELGIUM + +00-03-28 (hex) Mace Group, Inc. +000328 (base 16) Mace Group, Inc. + 5101 Commerce Dr. + Baldwin Park CA 91706 + UNITED STATES + +00-03-29 (hex) F3, Inc. +000329 (base 16) F3, Inc. + 2F, No. 7, Industry E. Rd. 9, + Science Based Industrial Park, + Hsinchu + TAIWAN, REPUBLIC OF CHINA + +00-03-2A (hex) UniData Communication Systems, Inc. +00032A (base 16) UniData Communication Systems, Inc. + 2F, OhSung-Bldg, 82-15, + NonHyun-Dong, GangNam-Gu, Seoul,135-101 + KOREA, REPUBLIC OF + +00-03-2B (hex) GAI Datenfunksysteme GmbH +00032B (base 16) GAI Datenfunksysteme GmbH + Riedleparkstrasse 28 + D-88045 Friedrichshafen + GERMANY + +00-03-2C (hex) ABB Switzerland Ltd +00032C (base 16) ABB Switzerland Ltd + Dept. ATPT + CH-5300 Turgi + Austrasse + SWITZERLAND + +00-03-2D (hex) IBASE Technology, Inc. +00032D (base 16) IBASE Technology, Inc. + 5F, No. 221, + Chung Yang Rd. + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-03-2E (hex) Scope Information Management, Ltd. +00032E (base 16) Scope Information Management, Ltd. + 2F Chanwoo b/o 736 Youksang-dong, + Kangnam-gu, + Seoul 135-080 + KOREA, REPUBLIC OF + +00-03-2F (hex) Global Sun Technology, Inc. +00032F (base 16) Global Sun Technology, Inc. + No. 13, Tung Yuan Rd., + Jung Li Industrial Park Jung Li City + TAIWAN, REPUBLIC OF CHINA + +00-03-30 (hex) Imagenics, Co., Ltd. +000330 (base 16) Imagenics, Co., Ltd. + 1-31-5 Kokuryo-Cho + Chofu-City Tokyo + 182-0022 + JAPAN + +00-03-31 (hex) Cisco Systems, Inc. +000331 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-32 (hex) Cisco Systems, Inc. +000332 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-33 (hex) Digitel Co., Ltd. +000333 (base 16) Digitel Co., Ltd. + 835-6, Yoksam-dong + Kangnam-gu, 135-080, Seoul, + KOREA, REPUBLIC OF + +00-03-34 (hex) Newport Electronics +000334 (base 16) Newport Electronics + 2229 So. Yale St. + Santa Ana CA 92704 + UNITED STATES + +00-03-35 (hex) Mirae Technology +000335 (base 16) Mirae Technology + 211-15, Hon Hyun-dong, + Kangnam-ku 135-010 + Seoul + KOREA, REPUBLIC OF + +00-03-36 (hex) Zetes Technologies +000336 (base 16) Zetes Technologies + 3 Rue De Stras Bourg + 1130 Brussels + BELGIUM + +00-03-37 (hex) Vaone, Inc. +000337 (base 16) Vaone, Inc. + 6F Kyemong Art Center, + 772 Yuksan2-Dong Kang HamGu, Seoul, + 135-082 + KOREA, REPUBLIC OF + +00-03-38 (hex) Oak Technology +000338 (base 16) Oak Technology + 139 Kifer Court + Sunnyvale CA 94086-5160 + UNITED STATES + +00-03-39 (hex) Eurologic Systems, Ltd. +000339 (base 16) Eurologic Systems, Ltd. + Clonshaugh Industrial Estate + Clonshaugh Dublin 17 + IRELAND + +00-03-3A (hex) Silicon Wave, Inc. +00033A (base 16) Silicon Wave, Inc. + 6256 Greenwich Drive + Suite 300 + San Diego CA 92122 + UNITED STATES + +00-03-3B (hex) TAMI Tech Co., Ltd. +00033B (base 16) TAMI Tech Co., Ltd. + 4F, Chungdo Bencher Town + 606 Tanbang-Dong, Seo-Gu + Taejon + KOREA, REPUBLIC OF + +00-03-3C (hex) Daiden Co., Ltd. +00033C (base 16) Daiden Co., Ltd. + 2100-19 Tutumi, Kamimine-machi + Miyaki-gun, Saga-ken + JAPAN + +00-03-3D (hex) ILSHin Lab +00033D (base 16) ILSHin Lab + KCS B/D 228-13 Young Dap-Dong + SUNG DONG-GU, + Seoul + KOREA, REPUBLIC OF + +00-03-3E (hex) Tateyama System Laboratory Co., Ltd. +00033E (base 16) Tateyama System Laboratory Co., Ltd. + 30 Shimonoban Oyama-cho + Kaminikawa-gun Toyama Prof. + 930-1305 + JAPAN + +00-03-3F (hex) BigBand Networks, Ltd. +00033F (base 16) BigBand Networks, Ltd. + 3 Azrieli Towers + Tel-Aviv 67023 + ISRAEL + +00-03-40 (hex) Floware Wireless Systems, Ltd. +000340 (base 16) Floware Wireless Systems, Ltd. + 28 Hacharoshet Steet + P.O.B. 812 Or-Yehuda + 60250 + ISRAEL + +00-03-41 (hex) Axon Digital Design +000341 (base 16) Axon Digital Design + P.O. Box 111 + 5070 AC Udenhout + NETHERLANDS + +00-03-42 (hex) Nortel Networks +000342 (base 16) Nortel Networks + 8200 Dixie Road - Ste #100 + Dept. 6800 Brampton ON L6T 5P6 + CANADA + +00-03-43 (hex) Martin Professional A/S +000343 (base 16) Martin Professional A/S + Olof Palmes Alle 18 + DK-8200 Aarhusn + DENMARK + +00-03-44 (hex) Tietech.Co., Ltd. +000344 (base 16) Tietech.Co., Ltd. + 2-13-1 Chikamatoori Minamiku + Nagoya, + JAPAN + +00-03-45 (hex) Routrek Networks Corporation +000345 (base 16) Routrek Networks Corporation + Nilssei Shin Mizonokuchi Bldg. 1F + 3-5-7 Hisamoto, Takatsu-Ku Kawasaki-shi, + 23-0011 + JAPAN + +00-03-46 (hex) Hitachi Kokusai Electric, Inc. +000346 (base 16) Hitachi Kokusai Electric, Inc. + 1-6-10 Uchikanda + Chiyoda-Ku Tokyo l101 + JAPAN + +00-03-47 (hex) Intel Corporation +000347 (base 16) Intel Corporation + MS: LF3-420 + 2111 N.E. 25th Avenue + Hillsboro OR 97124 + UNITED STATES + +00-03-48 (hex) Norscan Instruments, Ltd. +000348 (base 16) Norscan Instruments, Ltd. + 7 Terracon Place + Winnipeg, Manitoba, + R2J 4B3 + CANADA + +00-03-49 (hex) Vidicode Datacommunicatie B.V. +000349 (base 16) Vidicode Datacommunicatie B.V. + Postbus 7164 + 2701 AD Zoetermeer + NETHERLANDS + +00-03-4A (hex) RIAS Corporation +00034A (base 16) RIAS Corporation + 46600 Fremont Blvd. + Fremont CA 94538 + UNITED STATES + +00-03-4B (hex) Nortel Networks +00034B (base 16) Nortel Networks + 8200 Dixie Road Suite 100 + Dept. 6800 Brampton ON L6T 5 P6 + CANADA + +00-03-4C (hex) Shanghai DigiVision Technology Co., Ltd. +00034C (base 16) Shanghai DigiVision Technology Co., Ltd. + 11F, Heng Tong + International Building, 865 Chang Ning R + Shanghai 200050 + CHINA + +00-03-4D (hex) Chiaro Networks, Ltd. +00034D (base 16) Chiaro Networks, Ltd. + P.O. Box 832427 + Richardson TX 75083-2427 + UNITED STATES + +00-03-4E (hex) Pos Data Company, Ltd. +00034E (base 16) Pos Data Company, Ltd. + 276-2, Seo-Hyun Dong, + Bun-Dang Gu, Sung-nam City, Kyoung-Gi Pr + KOREA, REPUBLIC OF + +00-03-4F (hex) Sur-Gard Security +00034F (base 16) Sur-Gard Security + 401 Magnetic Drive + Units 24-28, Downsview + Ontario M3J 3H9 + CANADA + +00-03-50 (hex) BTICINO SPA +000350 (base 16) BTICINO SPA + Via L. Manara, 4 + 22036 Erba (CO) + ITALY + +00-03-51 (hex) Diebold, Inc. +000351 (base 16) Diebold, Inc. + 5995 Mayfair Road + North Canton OH 44720 + UNITED STATES + +00-03-52 (hex) Colubris Networks +000352 (base 16) Colubris Networks + 440 Armand-Frappier + Laval (Quebec) + H7V 4B4 + CANADA + +00-03-53 (hex) Mitac, Inc. +000353 (base 16) Mitac, Inc. + No. 2, Chung-Hsiao Street + Chitu Keelung, + TAIWAN, REPUBLIC OF CHINA + +00-03-54 (hex) Fiber Logic Communications +000354 (base 16) Fiber Logic Communications + 5F-3, No. 9, Prosperity Road One, + Science-Based Industrial Park, + Hsinchu + TAIWAN, REPUBLIC OF CHINA + +00-03-55 (hex) TeraBeam Internet Systems +000355 (base 16) TeraBeam Internet Systems + 14833 NE 87th St., Bldg. C + Redmond WA 98052 + UNITED STATES + +00-03-56 (hex) Wincor Nixdorf International GmbH +000356 (base 16) Wincor Nixdorf International GmbH + Heinz-Nixdorf Ring 1 + Paderborn D-33106 + GERMANY + +00-03-57 (hex) Intervoice-Brite, Inc. +000357 (base 16) Intervoice-Brite, Inc. + 17811 Waterview Pkwy. + Dallas TX 75252 + UNITED STATES + +00-03-58 (hex) Hanyang Digitech Co., Ltd. +000358 (base 16) Hanyang Digitech Co., Ltd. + 13F, Acetwintower2, 212-30, Guro-Dong + Guro-Gu + Seoul + KOREA, REPUBLIC OF + +00-03-59 (hex) DigitalSis +000359 (base 16) DigitalSis + B-1405 Samho Bldg. + 275-6 Yangjae + Seocho Seoul, + KOREA, REPUBLIC OF + +00-03-5A (hex) Photron Limited +00035A (base 16) Photron Limited + Shibuya 1-9-8 + Shibuya-ku, Tokyo + 150-0002 + JAPAN + +00-03-5B (hex) BridgeWave Communications +00035B (base 16) BridgeWave Communications + 3350 Thomad Road + Santa Clara CA 95054 + UNITED STATES + +00-03-5C (hex) Saint Song Corp. +00035C (base 16) Saint Song Corp. + 4F, No. 12, Lane 94, Tsao Ti Wzi + Shen Keng Hsiang, Taipei Hsien + 222 + TAIWAN, REPUBLIC OF CHINA + +00-03-5D (hex) Bosung Hi-Net Co., Ltd. +00035D (base 16) Bosung Hi-Net Co., Ltd. + Youngil B/O 2F, + YangJae-dong 12-7, Seocho-gu, Seoul + 137-130 + KOREA, REPUBLIC OF + +00-03-5E (hex) Metropolitan Area Networks, Inc. +00035E (base 16) Metropolitan Area Networks, Inc. + 1299 Pennsylvania Avenue, NW + Ninth Floor + Washington DC 20004 + UNITED STATES + +00-03-5F (hex) Prueftechnik Condition Monitoring GmbH & Co. KG +00035F (base 16) Prueftechnik Condition Monitoring GmbH & Co. KG + Franz-Bayer-Str. 14 + D-88213 Ravensburg + GERMANY + +00-03-60 (hex) PAC Interactive Technology, Inc. +000360 (base 16) PAC Interactive Technology, Inc. + 6F, No. 30, Alley 18, Lane 478 + Jai Guang Road, Nei-Hu + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-03-61 (hex) Widcomm, Inc. +000361 (base 16) Widcomm, Inc. + 9645 Scranton Road + Suite 205 + San Diego CA 92121 + UNITED STATES + +00-03-62 (hex) Vodtel Communications, Inc. +000362 (base 16) Vodtel Communications, Inc. + 12F, No 166 Chien-Yi Road + Chung-Ho City, Taipei County + 235 + TAIWAN, REPUBLIC OF CHINA + +00-03-63 (hex) Miraesys Co., Ltd. +000363 (base 16) Miraesys Co., Ltd. + 650-2 4 Fl. Daemyung Bldg. + Yuksam, Kangnam, Seoul, + 135-080 + KOREA, REPUBLIC OF + +00-03-64 (hex) Scenix Semiconductor, Inc. +000364 (base 16) Scenix Semiconductor, Inc. + 1330 Charleston Rd. + Mountainview CA 94043 + UNITED STATES + +00-03-65 (hex) Kira Information & Communications, Ltd. +000365 (base 16) Kira Information & Communications, Ltd. + 6th Fl. Anam Tower, + 702-10 Yeoksam-dong, Kangnam-ku, Seoul + KOREA, REPUBLIC OF + +00-03-66 (hex) ASM Pacific Technology +000366 (base 16) ASM Pacific Technology + 12/F Watson Centre + 16 Kung Yip St. + Kwai Chung + HONG KONG + +00-03-67 (hex) Jasmine Networks, Inc. +000367 (base 16) Jasmine Networks, Inc. + 1940 Zanker Road + San Jose CA 95112 + UNITED STATES + +00-03-68 (hex) Embedone Co., Ltd. +000368 (base 16) Embedone Co., Ltd. + Fl. 9 Annex Samhwan B/D. 17-26 + Yeoido-Dong, Youngdeungpo-ku, + Seoul 150-01 + KOREA, REPUBLIC OF + +00-03-69 (hex) Nippon Antenna Co., Ltd. +000369 (base 16) Nippon Antenna Co., Ltd. + No. 49-8, Nishiogu, + 7-Chome Arakawa-ku, + Tokyo 116-8561 + JAPAN + +00-03-6A (hex) Mainnet, Ltd. +00036A (base 16) Mainnet, Ltd. + P.O. Box 2324 + Kfar Saba 44641 + ISRAEL + +00-03-6B (hex) Cisco Systems, Inc. +00036B (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-6C (hex) Cisco Systems, Inc. +00036C (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-6D (hex) Runtop, Inc. +00036D (base 16) Runtop, Inc. + 1, Lane 21, Hsin Hua Road, Kueishan + Industrial Park, Taoyuan City, + TAIWAN, REPUBLIC OF CHINA + +00-03-6E (hex) Nicon Systems (Pty) Limited +00036E (base 16) Nicon Systems (Pty) Limited + 11 Termo Street + Technopark Stellenbosch, 7600 + SOUTH AFRICA + +00-03-6F (hex) Telsey SPA +00036F (base 16) Telsey SPA + Viale Dell Industria, 1 + 31 055 Quinto + DiTreviso- + ITALY + +00-03-70 (hex) NXTV, Inc. +000370 (base 16) NXTV, Inc. + 5955 De Soto Ave, #160 + Woodland Hills CA 91367 + UNITED STATES + +00-03-71 (hex) Acomz Networks Corp. +000371 (base 16) Acomz Networks Corp. + 7th Fl., Wooseok Bldg., 1007-37 + Sadang1-dong, Dongjak-gu, + Seoul 156-09 + KOREA, REPUBLIC OF + +00-03-72 (hex) ULAN +000372 (base 16) ULAN + 5F-3, No. 31-1, Lane 169, + Kang Ning St., Hsi-Chin City, Taipei Hsi + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-03-73 (hex) Aselsan A.S +000373 (base 16) Aselsan A.S + Mehmet Akif Ersoy Mah. + 16 Cad. No. 16 Macunkoy/Ankara + TURKEY + TURKEY + +00-03-74 (hex) Hunter Watertech +000374 (base 16) Hunter Watertech + 76 Munibung Rd. + Cardiff NSW, 2285 + AUSTRALIA + AUSTRALIA + +00-03-75 (hex) NetMedia, Inc. +000375 (base 16) NetMedia, Inc. + 10940 N. Stallard Place + Tuscon AZ 85737 + UNITED STATES + +00-03-76 (hex) Graphtec Technology, Inc. +000376 (base 16) Graphtec Technology, Inc. + 45 Parker, Suite A + Irvine CA 92618 + UNITED STATES + +00-03-77 (hex) Gigabit Wireless +000377 (base 16) Gigabit Wireless + 3099 N. First Street + San Jose CA 95134 + UNITED STATES + +00-03-78 (hex) HUMAX Co., Ltd. +000378 (base 16) HUMAX Co., Ltd. + 271-2, Suh-hyun-Dong, + Bundang-Gu, Sungnam-City, Kyonggi-Do, 46 + KOREA, REPUBLIC OF + +00-03-79 (hex) Proscend Communications, Inc. +000379 (base 16) Proscend Communications, Inc. + 2F, No.36, Industry E. Rd. IV, + Science-Based Industrial Park, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-03-7A (hex) Taiyo Yuden Co., Ltd. +00037A (base 16) Taiyo Yuden Co., Ltd. + 8-1 Sakae-Cho + Takasaki-Shi Gunma 370-8522 + JAPAN + JAPAN + +00-03-7B (hex) IDEC IZUMI Corporation +00037B (base 16) IDEC IZUMI Corporation + 7-31, Nishimiyahara + 1-Chome Yodogawa-ku. Osaka 532-8550 + JAPAN + JAPAN + +00-03-7C (hex) Coax Media +00037C (base 16) Coax Media + 1220 Oak Industrial Lane + Suite B + Cumming GA 30041 + UNITED STATES + +00-03-7D (hex) Stellcom +00037D (base 16) Stellcom + 10525 Vista Sorrento Parkway + Suite 100 + San Diego CA 92121 + UNITED STATES + +00-03-7E (hex) PORTech Communications, Inc. +00037E (base 16) PORTech Communications, Inc. + 150, Shiang-Shung N. Rd., + Taichung Taiwan 403, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-03-7F (hex) Atheros Communications, Inc. +00037F (base 16) Atheros Communications, Inc. + 5480 Great America Parkway + Santa Clara CA 95054 + UNITED STATES + +00-03-80 (hex) SSH Communications Security Corp. +000380 (base 16) SSH Communications Security Corp. + Fredrikinkatu 42 + Fin 0100 Helsinki + FINLAND + FINLAND + +00-03-81 (hex) Ingenico International +000381 (base 16) Ingenico International + 1/9 Apollo Street + Warriewood NSW 2102 + AUSTRALIA + AUSTRALIA + +00-03-82 (hex) A-One Co., Ltd. +000382 (base 16) A-One Co., Ltd. + 6-9-20, Shimoichiba-cho, + Kasugai-shi, Aichi-ken, 486-0852 + JAPAN + JAPAN + +00-03-83 (hex) Metera Networks, Inc. +000383 (base 16) Metera Networks, Inc. + 1202 Richardson Dr. + Suite 100 + Richardson TX 75080 + UNITED STATES + +00-03-84 (hex) AETA +000384 (base 16) AETA + Kepler 6 + 18-22 avenue Edouard Herriot + Le Plessis Robinson 92350 + FRANCE + +00-03-85 (hex) Actelis Networks, Inc. +000385 (base 16) Actelis Networks, Inc. + 1 Bazel St., P.O.B. 10173 + Petah - Tikva 49103 + ISRAEL + ISRAEL + +00-03-86 (hex) Ho Net, Inc. +000386 (base 16) Ho Net, Inc. + Venture Company Center + San 94-6 Yiui-Dong, Paldal-Gu, Suwon-si, + KOREA 442-760 + KOREA, REPUBLIC OF + +00-03-87 (hex) Blaze Network Products +000387 (base 16) Blaze Network Products + 5180 Hacienda Drive + Dublin CA 94568 + UNITED STATES + +00-03-88 (hex) Fastfame Technology Co., Ltd. +000388 (base 16) Fastfame Technology Co., Ltd. + 7F, No. 111, Hsing De Rd., + Sanchung, Taipei, + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-03-89 (hex) Plantronics +000389 (base 16) Plantronics + 345 Encinal St. + Santa Cruz CA 95060 + UNITED STATES + +00-03-8A (hex) America Online, Inc. +00038A (base 16) America Online, Inc. + 44900 Prentice Drive + Dulles VA 20166 + UNITED STATES + +00-03-8B (hex) PLUS-ONE I&T, Inc. +00038B (base 16) PLUS-ONE I&T, Inc. + 7F, A-San Venture Tower, + YangJae-dong, Seocho-ku, Seoul, + KOREA + KOREA, REPUBLIC OF + +00-03-8C (hex) Total Impact +00038C (base 16) Total Impact + 295 Willis Ave. + Suite E + Camarillo CA 93010 + UNITED STATES + +00-03-8D (hex) PCS Revenue Control Systems, Inc. +00038D (base 16) PCS Revenue Control Systems, Inc. + 560 Sylvan Ave. + Englewood Cliffs NJ 07632 + UNITED STATES + +00-03-8E (hex) Atoga Systems, Inc. +00038E (base 16) Atoga Systems, Inc. + 49026 Milmont Drive + Fremont CA 94538 + UNITED STATES + +00-03-8F (hex) Weinschel Corporation +00038F (base 16) Weinschel Corporation + 5305 Spectrum Drive + Frederick MD 21703 + UNITED STATES + +00-03-90 (hex) Digital Video Communications, Inc. +000390 (base 16) Digital Video Communications, Inc. + 500 W. Cummings Park + Suite 2000 + Woburn MA 07801 + UNITED STATES + +00-03-91 (hex) Advanced Digital Broadcast, Ltd. +000391 (base 16) Advanced Digital Broadcast, Ltd. + 8F, 145 Chung Shan N. Rd. Sec. 2, + Taipei, 104, + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-03-92 (hex) Hyundai Teletek Co., Ltd. +000392 (base 16) Hyundai Teletek Co., Ltd. + B-501, Techno Park, 148 Yatap-dong, + Boondang-gu, Sungnam-si, Kyunggi-do, 463 + KOREA Republic + KOREA, REPUBLIC OF + +00-03-93 (hex) Apple Computer, Inc. +000393 (base 16) Apple Computer, Inc. + 20650 Valley Green Dr. + Cupertino CA 95014 + UNITED STATES + +00-03-94 (hex) Connect One +000394 (base 16) Connect One + 2 Hanagar Street + Kfar Saba 44425 + ISRAEL + ISRAEL + +00-03-95 (hex) California Amplifier +000395 (base 16) California Amplifier + 460 Calle San Pablo + Camarillo CA 93012 + UNITED STATES + +00-03-96 (hex) EZ Cast Co., Ltd. +000396 (base 16) EZ Cast Co., Ltd. + 6th Floor, JungAng Building, + 99-1, Nonhyun-Dong (135-010) Kangnam-ku, + KOREA + KOREA, REPUBLIC OF + +00-03-97 (hex) Watchfront Limited +000397 (base 16) Watchfront Limited + 3 Victoria Walk + Wokingham RG40 5YL + UNITED KINGDOM + +00-03-98 (hex) WISI +000398 (base 16) WISI + Pforzheimerstr. 26 + D-75223 Niefern-Oeschelbronn + GERMANY + GERMANY + +00-03-99 (hex) Dongju Informations & Communications Co., Ltd. +000399 (base 16) Dongju Informations & Communications Co., Ltd. + #305, Eunsuk Bldg. Samsung-dong + Kangnam-gu Seoul + Republic of KOREA + KOREA, REPUBLIC OF + +00-03-9A (hex) SiConnect +00039A (base 16) SiConnect + Delta 100 + Welton Road + Swindon SN5 7XP + UNITED KINGDOM + +00-03-9B (hex) NetChip Technology, Inc. +00039B (base 16) NetChip Technology, Inc. + 335 Pioneer Way + Mountain View CA 94041 + UNITED STATES + +00-03-9C (hex) OptiMight Communications, Inc. +00039C (base 16) OptiMight Communications, Inc. + 980 Linda Vista Avenue + Mountain View CA 94043 + UNITED STATES + +00-03-9D (hex) Qisda Corporation +00039D (base 16) Qisda Corporation + 157 Shan Ying Road + GueiShan Taoyuan 333 + TAIWAN, REPUBLIC OF CHINA + +00-03-9E (hex) Tera System Co., Ltd. +00039E (base 16) Tera System Co., Ltd. + Doosung B/F Rm 302 + 766-1 Shinchungdong Shihung City Kyungki + Republic of Korea + KOREA, REPUBLIC OF + +00-03-9F (hex) Cisco Systems, Inc. +00039F (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-A0 (hex) Cisco Systems, Inc. +0003A0 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-A1 (hex) HIPER Information & Communication, Inc. +0003A1 (base 16) HIPER Information & Communication, Inc. + 1675-7, Sinil-dong, + Taeduk-gu, Taejon, + 306-230 South Korea + KOREA, REPUBLIC OF + +00-03-A2 (hex) Catapult Communications +0003A2 (base 16) Catapult Communications + 160 S. Whisman Rd. + Mountain View CA 94041 + UNITED STATES + +00-03-A3 (hex) MAVIX, Ltd. +0003A3 (base 16) MAVIX, Ltd. + POB 217, Yokneam Illit, + 20692 + ISRAEL + +00-03-A4 (hex) Data Storage and Information Management +0003A4 (base 16) Data Storage and Information Management + Discovery 2A30 + Oakdale MN 55128 + UNITED STATES + +00-03-A5 (hex) Medea Corporation +0003A5 (base 16) Medea Corporation + 5701 Lindero Canyon Rd. + Bldg. 3-100 + Wetlake Village CA 91362 + UNITED STATES + +00-03-A6 (hex) Traxit Technology, Inc. +0003A6 (base 16) Traxit Technology, Inc. + 256 Great Road, + Suite 16 + Littleton MA 01461 + UNITED STATES + +00-03-A7 (hex) Unixtar Technology, Inc. +0003A7 (base 16) Unixtar Technology, Inc. + 13F No. 100 Ming Chuan Road + Hsin Tien, Taipei, + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-03-A8 (hex) IDOT Computers, Inc. +0003A8 (base 16) IDOT Computers, Inc. + 3F., No. 137, Lane 235 + Pao-Chiao Road, Hsin-Tien Taipei Country + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-03-A9 (hex) AXCENT Media AG +0003A9 (base 16) AXCENT Media AG + Technologiepark 13 + 33100 Paderborn + GERMANY + GERMANY + +00-03-AA (hex) Watlow +0003AA (base 16) Watlow + 1241 Bundy Blvd. + Winona MN 55987 + UNITED STATES + +00-03-AB (hex) Bridge Information Systems +0003AB (base 16) Bridge Information Systems + 717 Office Parkway + St. Louis MO 63141 + UNITED STATES + +00-03-AC (hex) Fronius Schweissmaschinen +0003AC (base 16) Fronius Schweissmaschinen + Guenter Fronius Str. 1 + A-4600 Weis-Thalheim + AUSTRIA + AUSTRIA + +00-03-AD (hex) Emerson Energy Systems AB +0003AD (base 16) Emerson Energy Systems AB + SE-141 82 Stockholm + SWEDEN + +00-03-AE (hex) Allied Advanced Manufacturing Pte, Ltd. +0003AE (base 16) Allied Advanced Manufacturing Pte, Ltd. + 7 International Business Park + #02-00 + Singapore 609919 + SINGAPORE + +00-03-AF (hex) Paragea Communications +0003AF (base 16) Paragea Communications + 207 Perry Parkway + Gaithersburg MD 20877 + UNITED STATES + +00-03-B0 (hex) Xsense Technology Corp. +0003B0 (base 16) Xsense Technology Corp. + 11 F, 232, Sec. 3, ChengTeh Rd. + Taipei TAIWAN, 103 + TAIWAN, REPUBLIC OF CHINA + +00-03-B1 (hex) Hospira Inc. +0003B1 (base 16) Hospira Inc. + 755 Jarvis Drive + Morgan Hill CA 95037 + UNITED STATES + +00-03-B2 (hex) Radware +0003B2 (base 16) Radware + 8 Hamrpe Hochvim + Jerusalem + ISRAEL + ISRAEL + +00-03-B3 (hex) IA Link Systems Co., Ltd. +0003B3 (base 16) IA Link Systems Co., Ltd. + 6F-4, No. 81 Hsin Tai + Wu Rd., Sec. 1 Hsih-Chih, Taipei Hsien, + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-03-B4 (hex) Macrotek International Corp. +0003B4 (base 16) Macrotek International Corp. + 2F, No. 28, Lane 46 + Kwang Fu 6 Road, + Taipei Taipei TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-03-B5 (hex) Entra Technology Co. +0003B5 (base 16) Entra Technology Co. + Fl. 3, No. 5, Alley 2, + Su-Wei Lane, Chung-Cheng Rd., Hsin-Dien, + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-03-B6 (hex) QSI Corporation +0003B6 (base 16) QSI Corporation + 2212 South West Temple #50 + Salt Lake City UT 84115 + UNITED STATES + +00-03-B7 (hex) ZACCESS Systems +0003B7 (base 16) ZACCESS Systems + 275 Shoreline Drive, #110 + Redwood City CA 94065 + UNITED STATES + +00-03-B8 (hex) NetKit Solutions, LLC +0003B8 (base 16) NetKit Solutions, LLC + 1125-A Business Center Circle + Thousand Oaks CA 91320 + UNITED STATES + +00-03-B9 (hex) Hualong Telecom Co., Ltd. +0003B9 (base 16) Hualong Telecom Co., Ltd. + 9 Guanghua St. + Changzhou, Jiangsu, 213003 + P.R. CHINA + CHINA + +00-03-BA (hex) Sun Microsystems Inc. +0003BA (base 16) Sun Microsystems Inc. + 4200 Network Circle + Santa Clara CA 95054 + UNITED STATES + +00-03-BB (hex) Signal Communications Limited +0003BB (base 16) Signal Communications Limited + Unit 217, 2/F, HKITC, + 72 Tat Chee Avenue, KLN., + HONG KONG + HONG KONG + +00-03-BC (hex) COT GmbH +0003BC (base 16) COT GmbH + Gueterstrasse 5 + 64807 Dieburg + GERMANY + GERMANY + +00-03-BD (hex) OmniCluster Technologies, Inc. +0003BD (base 16) OmniCluster Technologies, Inc. + 4950 Blue Lake Drive + Suite 900 + Boca Raton FL 33431 + UNITED STATES + +00-03-BE (hex) Netility +0003BE (base 16) Netility + 298 South Sunnyvale Ave. + Suie 102 + Sunnyvale CA 94086 + UNITED STATES + +00-03-BF (hex) Centerpoint Broadband Technologies, Inc. +0003BF (base 16) Centerpoint Broadband Technologies, Inc. + 1741 Technology Drive, + Suite 400 + San Jose CA 95110-1310 + UNITED STATES + +00-03-C0 (hex) RFTNC Co., Ltd. +0003C0 (base 16) RFTNC Co., Ltd. + 3F, 1624-24, Bongchen-dong + Kionak-gu, Seoul + SOUTH KOREA + KOREA, REPUBLIC OF + +00-03-C1 (hex) Packet Dynamics Ltd +0003C1 (base 16) Packet Dynamics Ltd + 2 Buckstane Park + Edinburgh, Scotland + UK EH10 GPA + UNITED KINGDOM + +00-03-C2 (hex) Solphone K.K. +0003C2 (base 16) Solphone K.K. + 2-11-1 Kandatsukasa-cho + Chiyada, Tokyo + 101-0048 Japan + JAPAN + +00-03-C3 (hex) Micronik Multimedia +0003C3 (base 16) Micronik Multimedia + Brueckenstr. 2 + D-51379 Leverkusen + GERMANY + GERMANY + +00-03-C4 (hex) Tomra Systems ASA +0003C4 (base 16) Tomra Systems ASA + Drengsrudhagen 2 + Box 278 N-1371 Asker + NORWAY + NORWAY + +00-03-C5 (hex) Mobotix AG +0003C5 (base 16) Mobotix AG + Wingertsweilerhof 6 + D-67724 Horingen + GERMANY + GERMANY + +00-03-C6 (hex) ICUE Systems, Inc. +0003C6 (base 16) ICUE Systems, Inc. + 17489 Gale Avenue + City of Industry CA 91748 + UNITED STATES + +00-03-C7 (hex) hopf Elektronik GmbH +0003C7 (base 16) hopf Elektronik GmbH + P.O. Box 18 47 + D-58468 Ludenscheid + GERMANY + GERMANY + +00-03-C8 (hex) CML Emergency Services +0003C8 (base 16) CML Emergency Services + 75 Boulevard la Technologies + Hull, Quebec JE23G4 + CANADA + CANADA + +00-03-C9 (hex) TECOM Co., Ltd. +0003C9 (base 16) TECOM Co., Ltd. + 23, R&D Road 2 + Science-Based Industrial Park + Hsin-Chu + TAIWAN, REPUBLIC OF CHINA + +00-03-CA (hex) MTS Systems Corp. +0003CA (base 16) MTS Systems Corp. + 16050 Stetson Road + Los Gatos CA 95033 + UNITED STATES + +00-03-CB (hex) Nippon Systems Development Co., Ltd. +0003CB (base 16) Nippon Systems Development Co., Ltd. + 30-12, Komyo-cho, + Takarabuka-city, Hyogo, + 665-0045 JAPAN + JAPAN + +00-03-CC (hex) Momentum Computer, Inc. +0003CC (base 16) Momentum Computer, Inc. + 1815 Aston Avenue + Suite 107 + Carlsbad CA 92008-7310 + UNITED STATES + +00-03-CD (hex) Clovertech, Inc. +0003CD (base 16) Clovertech, Inc. + 3-1-5 Naka-cho Musashino-shi + Tokyo 180-0006 JAPAN + JAPAN + +00-03-CE (hex) ETEN Technologies, Inc. +0003CE (base 16) ETEN Technologies, Inc. + 2F, No. 9, Lane 235, Pao-Chiao Rd., + Hsien Tien City, Taipei Hsien 231 + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-03-CF (hex) Muxcom, Inc. +0003CF (base 16) Muxcom, Inc. + D 602, Bundang Technopark #151 + Yatap Dong, Bundag Gu, Sungnam Si, + Kyungki Do KOREA 463-070 + KOREA, REPUBLIC OF + +00-03-D0 (hex) KOANKEISO Co., Ltd. +0003D0 (base 16) KOANKEISO Co., Ltd. + Zip Code 791-8042 + 2798 36minamiyoshida-Mati Matuyama-City + JAPAN + JAPAN + +00-03-D1 (hex) Takaya Corporation +0003D1 (base 16) Takaya Corporation + Development Division + 661-1, Ibara-cho Ibara-City Okayama, 715 + JAPAN + JAPAN + +00-03-D2 (hex) Crossbeam Systems, Inc. +0003D2 (base 16) Crossbeam Systems, Inc. + 80 Central Street + Boxborough MA 01719 + UNITED STATES + +00-03-D3 (hex) Internet Energy Systems, Inc. +0003D3 (base 16) Internet Energy Systems, Inc. + 4218 Trumbo Ct. + Fairfax VA 22033 + UNITED STATES + +00-03-D4 (hex) Alloptic, Inc. +0003D4 (base 16) Alloptic, Inc. + 6960 Koll Center Parkway + Suite 300 + Pleasanton CA 94566 + UNITED STATES + +00-03-D5 (hex) Advanced Communications Co., Ltd. +0003D5 (base 16) Advanced Communications Co., Ltd. + 16-16 Takashima-honcho, + Numazu Shizuoka, + 4100055 JAPAN + JAPAN + +00-03-D6 (hex) RADVision, Ltd. +0003D6 (base 16) RADVision, Ltd. + 24 Raul Wallenberg St. + Tel-Aviv 69719 + ISRAEL + ISRAEL + +00-03-D7 (hex) NextNet Wireless, Inc. +0003D7 (base 16) NextNet Wireless, Inc. + 9555 James Ave. So. + Suite 270 + Bloomington MN 55431 + UNITED STATES + +00-03-D8 (hex) iMPath Networks, Inc. +0003D8 (base 16) iMPath Networks, Inc. + 1431 Merivale Rd. + Nepean, Ontario, + CANADA K2E 1B9 + CANADA + +00-03-D9 (hex) Secheron SA +0003D9 (base 16) Secheron SA + Untermattweg 8 + Ch-3027 Bern + SWITZERLAND + SWITZERLAND + +00-03-DA (hex) Takamisawa Cybernetics Co., Ltd. +0003DA (base 16) Takamisawa Cybernetics Co., Ltd. + Nakano Heiwa Bldg. + 48 5-2-Chome Chuo, Nakano-ku Tokyo 164-0 + JAPAN + JAPAN + +00-03-DB (hex) Apogee Electronics Corp. +0003DB (base 16) Apogee Electronics Corp. + 3145 Donald Douglas Loop South + Santa Monica CA 90405-3210 + UNITED STATES + +00-03-DC (hex) Lexar Media, Inc. +0003DC (base 16) Lexar Media, Inc. + 47421 Bayside Parkway + Fremont CA 94538 + UNITED STATES + +00-03-DD (hex) Comark Corp. +0003DD (base 16) Comark Corp. + 93 West St. + Medfield MA 02052 + UNITED STATES + +00-03-DE (hex) OTC Wireless +0003DE (base 16) OTC Wireless + 602 Charlot Ave. + San Jose CA 95131 + UNITED STATES + +00-03-DF (hex) Desana Systems +0003DF (base 16) Desana Systems + 1805 McCandless Ave. + Milpitas CA 95035 + UNITED STATES + +00-03-E0 (hex) RadioFrame Networks, Inc. +0003E0 (base 16) RadioFrame Networks, Inc. + 18650 NE 67th Court + Suite 110 + Redmond WA 98052 + UNITED STATES + +00-03-E1 (hex) Winmate Communication, Inc. +0003E1 (base 16) Winmate Communication, Inc. + 9F,No.111-6,Shing-De Rd + San-Chung, + Taipei 241 + TAIWAN, REPUBLIC OF CHINA + +00-03-E2 (hex) Comspace Corporation +0003E2 (base 16) Comspace Corporation + 955 Freeport Pkwy + Suite 100 + Coppell TX 75019 + UNITED STATES + +00-03-E3 (hex) Cisco Systems, Inc. +0003E3 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-E4 (hex) Cisco Systems, Inc. +0003E4 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-E5 (hex) Hermstedt SG +0003E5 (base 16) Hermstedt SG + Carl-Reuther - Str. 3 + D-68305 Mannheim + GERMANY + GERMANY + +00-03-E6 (hex) Entone Technologies, Inc. +0003E6 (base 16) Entone Technologies, Inc. + 1840 Gateway Drive Suite 200 + San Mateo CA 94404 + UNITED STATES + +00-03-E7 (hex) Logostek Co. Ltd. +0003E7 (base 16) Logostek Co. Ltd. + 19th 15 Sunusu-Academy Tower + 277-17 Sungsu-2ga, Sungdong-gu + Seoul KOREA 133-123 + KOREA, REPUBLIC OF + +00-03-E8 (hex) Wavelength Digital Limited +0003E8 (base 16) Wavelength Digital Limited + 12 Vincent Avenue + Crownhill Business Park Milton Keynes, B + MK8 0AB MK8 0AB ENGLAND + UNITED KINGDOM + +00-03-E9 (hex) Akara Canada, Inc. +0003E9 (base 16) Akara Canada, Inc. + 150 Katimavik Road + Kanata Ontario + CANADA K2L 2N2 + CANADA + +00-03-EA (hex) Mega System Technologies, Inc. +0003EA (base 16) Mega System Technologies, Inc. + 2F, No. 41, Lane 76, + Rui Kuang Rd., Nei Hu 114 + Taipei Taipei TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-03-EB (hex) Atrica +0003EB (base 16) Atrica + 5 Shenkar St. P.O.B. 12231 + Hezelia Industrial Area + 46733 46733 ISRAEL + ISRAEL + +00-03-EC (hex) ICG Research, Inc. +0003EC (base 16) ICG Research, Inc. + 775 B The Queens Way + Toronto, Ontario + M8Z 1N1 CANADA + CANADA + +00-03-ED (hex) Shinkawa Electric Co., Ltd. +0003ED (base 16) Shinkawa Electric Co., Ltd. + 3-2-24 3 chome + Konan Nakaku Hiroshima, 730-0825, + JAPAN + JAPAN + +00-03-EE (hex) MKNet Corporation +0003EE (base 16) MKNet Corporation + 711-B Charcot Ave. + San Jose CA 95131 + UNITED STATES + +00-03-EF (hex) Oneline AG +0003EF (base 16) Oneline AG + Steinfeldstr. 3 + 39179 Barleben + GERMANY + GERMANY + +00-03-F0 (hex) Redfern Broadband Networks +0003F0 (base 16) Redfern Broadband Networks + Level 1, 1 Central Ave., + Australian Technology Park Eveleigh, NSW + AUSTRALIA + AUSTRALIA + +00-03-F1 (hex) Cicada Semiconductor, Inc. +0003F1 (base 16) Cicada Semiconductor, Inc. + 811 Barton Springs Rd. + Suite 550 + Austin TX 78704 + UNITED STATES + +00-03-F2 (hex) Seneca Networks +0003F2 (base 16) Seneca Networks + 30 West Gude Dr. + Suite 200 + Rockville MD 20850 + UNITED STATES + +00-03-F3 (hex) Dazzle Multimedia, Inc. +0003F3 (base 16) Dazzle Multimedia, Inc. + 47211 Bayside Parkway + Fremont CA 94538 + UNITED STATES + +00-03-F4 (hex) NetBurner +0003F4 (base 16) NetBurner + 11324 Legacy Canyon Pl. + San Diego CA 92131 + UNITED STATES + +00-03-F5 (hex) Chip2Chip +0003F5 (base 16) Chip2Chip + 2249 Zanker Rd. + San Jose CA 95131 + UNITED STATES + +00-03-F6 (hex) Allegro Networks, Inc. +0003F6 (base 16) Allegro Networks, Inc. + 6399 San Ignacio Avenue + San Jose CA 95119 + UNITED STATES + +00-03-F7 (hex) Plast-Control GmbH +0003F7 (base 16) Plast-Control GmbH + Walter-Freitag-Str. 15 + 42899 Remscheid + GERMANY + GERMANY + +00-03-F8 (hex) SanCastle Technologies, Inc. +0003F8 (base 16) SanCastle Technologies, Inc. + 2107 North First Street + Suite 500 + San Jose CA 95131 + UNITED STATES + +00-03-F9 (hex) Pleiades Communications, Inc. +0003F9 (base 16) Pleiades Communications, Inc. + 2830 Market Loop #104 + South Lake TX 76092 + UNITED STATES + +00-03-FA (hex) TiMetra Networks +0003FA (base 16) TiMetra Networks + 500 Ellis St. + Mountain View CA 94043 + UNITED STATES + +00-03-FB (hex) Toko Seiki Company, Ltd. +0003FB (base 16) Toko Seiki Company, Ltd. + 3-14-40 Senrioka, Settsu-city + Osaka 566-8686 + JAPAN + JAPAN + +00-03-FC (hex) Intertex Data AB +0003FC (base 16) Intertex Data AB + Rissneleden 45 + 174 44 Sundbyberg + SWEDEN + SWEDEN + +00-03-FD (hex) Cisco Systems, Inc. +0003FD (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-FE (hex) Cisco Systems, Inc. +0003FE (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-03-FF (hex) Microsoft Corporation +0003FF (base 16) Microsoft Corporation + 1 Microsoft Way + Redmond WA 98052 + UNITED STATES + +00-04-00 (hex) LEXMARK INTERNATIONAL, INC. +000400 (base 16) LEXMARK INTERNATIONAL, INC. + 740 NEW CIRCLE RD - BLDG. #035 + LEXINGTON KY 40550 + UNITED STATES + +00-04-01 (hex) Osaki Electric Co., Ltd. +000401 (base 16) Osaki Electric Co., Ltd. + 1131, Fujikubo, Miyoshimachi, + Iruma-gun, Saitama 354-8501, + JAPAN + JAPAN + +00-04-02 (hex) Nexsan Technologies, Ltd. +000402 (base 16) Nexsan Technologies, Ltd. + Parker Centre + Mansfield Rd + Derby DE21 4SZ + UNITED KINGDOM + +00-04-03 (hex) Nexsi Corporation +000403 (base 16) Nexsi Corporation + 1959 Concourse Drive + San Jose CA 95131 + UNITED STATES + +00-04-04 (hex) Makino Milling Machine Co., Ltd. +000404 (base 16) Makino Milling Machine Co., Ltd. + 4023 Nakatsu, Aikawa-machi, + Aiko-gun Kanagawa 243-0303 + JAPAN + +00-04-05 (hex) ACN Technologies +000405 (base 16) ACN Technologies + 9F, HeyKang B/D, 157-36 + Sansung-dong, Kangnamgu, + Seoul KOREA #135-090 + KOREA, REPUBLIC OF + +00-04-06 (hex) Fa. Metabox AG +000406 (base 16) Fa. Metabox AG + Daimlerring 37, + D-31135 Hildsheim, + GERMANY + GERMANY + +00-04-07 (hex) Topcon Positioning Systems, Inc. +000407 (base 16) Topcon Positioning Systems, Inc. + 5758 W. Las Positas Blvd. + Pleasanton CA 94588 + UNITED STATES + +00-04-08 (hex) Sanko Electronics Co., Ltd. +000408 (base 16) Sanko Electronics Co., Ltd. + 3-802 ueda tenpaku-ku + nagoya JAPAN + JAPAN + +00-04-09 (hex) Cratos Networks +000409 (base 16) Cratos Networks + 313 Littleton Road + Suite 20 + Chelmsford MA 01824 + UNITED STATES + +00-04-0A (hex) Sage Systems +00040A (base 16) Sage Systems + 1420 Harbor Bay Parkway + Suite 160 + Alameda CA 94502 + UNITED STATES + +00-04-0B (hex) 3com Europe Ltd. +00040B (base 16) 3com Europe Ltd. + 3com Centre + Boundary Way, Hemel Hempstead Hertfordsh + HP2 7YU UK + UNITED KINGDOM + +00-04-0C (hex) KANNO Work's Ltd. +00040C (base 16) KANNO Work's Ltd. + 1-5-25 Kamitomino, + Kokurakita-ku, Kitakyusyu-city, Fukuoka- + JAPAN + JAPAN + +00-04-0D (hex) Avaya, Inc. +00040D (base 16) Avaya, Inc. + Office 1A325 + 307 Middletown Lincroft Road + Lincroft NJ 07738-1526 + UNITED STATES + +00-04-0E (hex) AVM GmbH +00040E (base 16) AVM GmbH + Alt-Moabit 95 + 10559 Berlin + GERMANY + +00-04-0F (hex) Asus Network Technologies, Inc. +00040F (base 16) Asus Network Technologies, Inc. + 11-1, No. 675, Sec. 1, King-kuo Rd., + Hsinchu, + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-04-10 (hex) Spinnaker Networks, Inc. +000410 (base 16) Spinnaker Networks, Inc. + 107 Gamma Drive + Pittsburgh PA 15238 + UNITED STATES + +00-04-11 (hex) Inkra Networks, Inc. +000411 (base 16) Inkra Networks, Inc. + 40971 Encyclopedia Circle + Fremont CA 94538 + UNITED STATES + +00-04-12 (hex) WaveSmith Networks, Inc. +000412 (base 16) WaveSmith Networks, Inc. + 40 Nagog Park + Acton MA 01720-3425 + UNITED STATES + +00-04-13 (hex) SNOM Technology AG +000413 (base 16) SNOM Technology AG + Helmholtzstrasse 2-9 + D-10587 Berlin + GERMANY + GERMANY + +00-04-14 (hex) Umezawa Musen Denki Co., Ltd. +000414 (base 16) Umezawa Musen Denki Co., Ltd. + 14-3, Minami 1, Nishi 8, + Chuo-ku, Sapporo, + Hokkaido JAPAN 060-0061 + JAPAN + +00-04-15 (hex) Rasteme Systems Co., Ltd. +000415 (base 16) Rasteme Systems Co., Ltd. + 886-2 Nihongi Nakagou-mura + Nakakubiki-gun Niigata + JAPAN + JAPAN + +00-04-16 (hex) Parks S/A Comunicacoes Digitais +000416 (base 16) Parks S/A Comunicacoes Digitais + Av. Pernambuco, 1001 + Porto-Alegre-RS CEP 90240-004 + BRAZIL + BRAZIL + +00-04-17 (hex) ELAU AG +000417 (base 16) ELAU AG + Dillberg 12 + 97828 Marktheidenfeld + GERMANY + GERMANY + +00-04-18 (hex) Teltronic S.A.U. +000418 (base 16) Teltronic S.A.U. + Poligono de Malpica + Calle F Oeste 50057 Zaragoza + SPAIN + SPAIN + +00-04-19 (hex) Fibercycle Networks, Inc. +000419 (base 16) Fibercycle Networks, Inc. + 20 South Santa Cruz Ave. + Suite 112 + Los Gatos CA 95030 + UNITED STATES + +00-04-1A (hex) Ines Test and Measurement GmbH & CoKG +00041A (base 16) Ines Test and Measurement GmbH & CoKG + An der Muehlenaue 5 + Bad Nenndorf 31542 + GERMANY + +00-04-1B (hex) Digital Interfaces Ltd. +00041B (base 16) Digital Interfaces Ltd. + 13 Headlands Business Park + Salisbury Road, Ringwood BH24 3PB + UK + UNITED KINGDOM + +00-04-1C (hex) ipDialog, Inc. +00041C (base 16) ipDialog, Inc. + 1762 Technology Drive + Suite 124 + San Jose CA 95110 + UNITED STATES + +00-04-1D (hex) Corega of America +00041D (base 16) Corega of America + P.O. Box 159 + Bothell WA 98041-0159 + UNITED STATES + +00-04-1E (hex) Shikoku Instrumentation Co., Ltd. +00041E (base 16) Shikoku Instrumentation Co., Ltd. + 777, Oosachou, Zentsuujishi, + Kagawa, 765-0052, + JAPAN + JAPAN + +00-04-1F (hex) Sony Computer Entertainment, Inc. +00041F (base 16) Sony Computer Entertainment, Inc. + 2-6-21 Minami-Aoyama + Minato-ku Tokyo 107-0062 + JAPAN + +00-04-20 (hex) Slim Devices, Inc. +000420 (base 16) Slim Devices, Inc. + 12 South First St. + Suite 103 + San Jose CA 95113 + UNITED STATES + +00-04-21 (hex) Ocular Networks +000421 (base 16) Ocular Networks + 12700, Fair Lakes Circle + Suite 100 + Fairfax VA 22033 + UNITED STATES + +00-04-22 (hex) Gordon Kapes, Inc. +000422 (base 16) Gordon Kapes, Inc. + 5520 W. Touhy Ave. + Skokie IL 60077 + UNITED STATES + +00-04-23 (hex) Intel Corporation +000423 (base 16) Intel Corporation + MS: JF3-420 + 2111 NE 25th Avenue + Hillsboro OR 97124 + UNITED STATES + +00-04-24 (hex) TMC s.r.l. +000424 (base 16) TMC s.r.l. + 202 Via A. Costa + 40134 - Bologna + ITALY + ITALY + +00-04-25 (hex) Atmel Corporation +000425 (base 16) Atmel Corporation + Multimedia & Communications Group + 2200 Gateway Centre, Suite 201 + Morrisville NC 27560 + UNITED STATES + +00-04-26 (hex) Autosys +000426 (base 16) Autosys + 202 Ilsinpastel, + 721-2 MOK3-Dong Yang Cheon-ku, + Seoul Seoul KOREA + KOREA, REPUBLIC OF + +00-04-27 (hex) Cisco Systems, Inc. +000427 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-28 (hex) Cisco Systems, Inc. +000428 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-29 (hex) Pixord Corporation +000429 (base 16) Pixord Corporation + Room 3, 1F, No. 1396, + Chung Cheng Rd. Taoyuan City, Taoyuan Hs + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-04-2A (hex) Wireless Networks, Inc. +00042A (base 16) Wireless Networks, Inc. + 2322 El Camino Real + San Mateo CA 94403 + UNITED STATES + +00-04-2B (hex) IT Access Co., Ltd. +00042B (base 16) IT Access Co., Ltd. + 3-17-6, Shinyokohama, Kouhoku-ku + Yokohama-shi, Kanagawa 222-8545 + JAPAN + JAPAN + +00-04-2C (hex) Minet, Inc. +00042C (base 16) Minet, Inc. + 3F Se-A Venture Tower + 946-12 Daechi-dong, Gangnam-gu, Seoul + KOREA + KOREA, REPUBLIC OF + +00-04-2D (hex) Sarian Systems, Ltd. +00042D (base 16) Sarian Systems, Ltd. + Beacon House + Riverside Business Park Leeds Road, Ilk + West Yorkshire ENGLAND LS29 8JZ + UNITED KINGDOM + +00-04-2E (hex) Netous Technologies, Ltd. +00042E (base 16) Netous Technologies, Ltd. + 1006, Block A, + GoodView Industrial Building, Kin Fat St + HONG KONG + HONG KONG + +00-04-2F (hex) International Communications Products, Inc. +00042F (base 16) International Communications Products, Inc. + 4325 Woodland Park Drive + Suite 101 + West Melbourne FL 32904 + UNITED STATES + +00-04-30 (hex) Netgem +000430 (base 16) Netgem + 27 rue d'Orleans + 92 200 Neuillt s/Seine + FRANCE + FRANCE + +00-04-31 (hex) GlobalStreams, Inc. +000431 (base 16) GlobalStreams, Inc. + 2882 Prospect Park Drive + Suite 350 + Rancho Cordova CA 95670 + UNITED STATES + +00-04-32 (hex) Voyetra Turtle Beach, Inc. +000432 (base 16) Voyetra Turtle Beach, Inc. + 5 Odell Plaza + Yonkers NY 10701 + UNITED STATES + +00-04-33 (hex) Cyberboard A/S +000433 (base 16) Cyberboard A/S + Kloevermarken 120 + DK-7190 Billund + DENMARK + DENMARK + +00-04-34 (hex) Accelent Systems, Inc. +000434 (base 16) Accelent Systems, Inc. + 2620 Ridgewood Rd., + Suite 300 + Akron OH 44313 + UNITED STATES + +00-04-35 (hex) Comptek International, Inc. +000435 (base 16) Comptek International, Inc. + 11 Beacon St. + Boston MA 02108 + UNITED STATES + +00-04-36 (hex) ELANsat Technologies, Inc. +000436 (base 16) ELANsat Technologies, Inc. + No. 11, Lane 19, Pateh Road, + Hsinchu TAIWAN, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-04-37 (hex) Powin Information Technology, Inc. +000437 (base 16) Powin Information Technology, Inc. + 8F, No. 70, Zhou-Z St. + 114 Nei-Hu Taipei + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-04-38 (hex) Nortel Networks +000438 (base 16) Nortel Networks + Department 6800 + 8200 Dixie Road, Suite 100 Brampton, ON + CANADA + CANADA + +00-04-39 (hex) Rosco Entertainment Technology, Inc. +000439 (base 16) Rosco Entertainment Technology, Inc. + 2181 NW Front Ave. + Portland OR 97209 + UNITED STATES + +00-04-3A (hex) Intelligent Telecommunications, Inc. +00043A (base 16) Intelligent Telecommunications, Inc. + 1687-2, Sinil-dong + Daedok-gu, Taejon + SOUTH KOREA 306-230 + KOREA, REPUBLIC OF + +00-04-3B (hex) Lava Computer Mfg., Inc. +00043B (base 16) Lava Computer Mfg., Inc. + 2 Vulcan St. + Etobicoke, Ontario + CANADA M9W-1L2 + CANADA + +00-04-3C (hex) SONOS Co., Ltd. +00043C (base 16) SONOS Co., Ltd. + #725 Pungsan Apt. Factory + 1141-2 Baikseok, ilsan, Goyang, Gyeonggi + Rep. of KOREA Zip Code: 411-815 + KOREA, REPUBLIC OF + +00-04-3D (hex) INDEL AG +00043D (base 16) INDEL AG + Tufiwis 26 + CH-8332 Russikon + SWITZERLAND + SWITZERLAND + +00-04-3E (hex) Telencomm +00043E (base 16) Telencomm + 2551 Walsh Avenue + Santa Clara CA 95051 + UNITED STATES + +00-04-3F (hex) Electronic Systems Technology, Inc. +00043F (base 16) Electronic Systems Technology, Inc. + 415 N. Quay St., Suite 4 + Kennewick WA 99336 + UNITED STATES + +00-04-40 (hex) cyberPIXIE, Inc. +000440 (base 16) cyberPIXIE, Inc. + 68 E. Wacker Place, + Suite 600 + Chicago IL 60601 + UNITED STATES + +00-04-41 (hex) Half Dome Systems, Inc. +000441 (base 16) Half Dome Systems, Inc. + 155 B-1 Moffet Park Drive + Sunnyvale CA 94089 + UNITED STATES + +00-04-42 (hex) NACT +000442 (base 16) NACT + 191 W. 5200 N. + Provo UT 84604 + UNITED STATES + +00-04-43 (hex) Agilent Technologies, Inc. +000443 (base 16) Agilent Technologies, Inc. + 5301 Stevens Creek Boulevard + Mailstop 54L-SQ + Santa Clara CA 95051 + UNITED STATES + +00-04-44 (hex) Western Multiplex Corporation +000444 (base 16) Western Multiplex Corporation + 1196 Borregas Avenue + Suite 500 + Sunnyvale CA 94089 + UNITED STATES + +00-04-45 (hex) LMS Skalar Instruments GmbH +000445 (base 16) LMS Skalar Instruments GmbH + Willi-Eichler-Str 11 + D-37079 Goettingen + GERMANY + GERMANY + +00-04-46 (hex) CYZENTECH Co., Ltd. +000446 (base 16) CYZENTECH Co., Ltd. + 601 Eunkyeong B/D 141-31, + Samsung-dong, Gangnam-gu, Seoul, + 135-876 KOREA + KOREA, REPUBLIC OF + +00-04-47 (hex) Acrowave Systems Co., Ltd. +000447 (base 16) Acrowave Systems Co., Ltd. + Maru B/D 86-6, Nonhyun-Dong + Gangnam-gu, Seoul + KOREA zip: 135-818 + KOREA, REPUBLIC OF + +00-04-48 (hex) Polaroid Professional Imaging +000448 (base 16) Polaroid Professional Imaging + 300 Baker Avenue + Concord MA 01742 + UNITED STATES + +00-04-49 (hex) Mapletree Networks +000449 (base 16) Mapletree Networks + 315 Norwood Park South + Norwood MA 02062 + UNITED STATES + +00-04-4A (hex) iPolicy Networks, Inc. +00044A (base 16) iPolicy Networks, Inc. + 47467 Fremont Blvd. + Fremont CA 94538 + UNITED STATES + +00-04-4B (hex) NVIDIA +00044B (base 16) NVIDIA + 3535 Monroe St. + Santa Clara CA 95051 + UNITED STATES + +00-04-4C (hex) JENOPTIK +00044C (base 16) JENOPTIK + Laser, Optik, Systeme GmbH + Einkauf, Prussingstr. 41 D-07745 Jena + GERMANY + GERMANY + +00-04-4D (hex) Cisco Systems, Inc. +00044D (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-4E (hex) Cisco Systems, Inc. +00044E (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-4F (hex) Leukhardt Systemelektronik GmbH +00044F (base 16) Leukhardt Systemelektronik GmbH + Rudolf-Diesel-Str. 17 + 78532 Tuttlingen + GERMANY + GERMANY + +00-04-50 (hex) DMD Computers SRL +000450 (base 16) DMD Computers SRL + Via Monviso, 14 + 10090 Villarbasse (To) + ITALY + ITALY + +00-04-51 (hex) Medrad, Inc. +000451 (base 16) Medrad, Inc. + One Medrad Drive + Indianola PA 15051 + UNITED STATES + +00-04-52 (hex) RocketLogix, Inc. +000452 (base 16) RocketLogix, Inc. + 6504 International Parkway + Suite 1200 + Plano TX 75093 + UNITED STATES + +00-04-53 (hex) YottaYotta, Inc. +000453 (base 16) YottaYotta, Inc. + 6020- 104 Street + Edmonton, AB T6H 5S4 + CANADA + +00-04-54 (hex) Quadriga UK +000454 (base 16) Quadriga UK + Baird House + Arlington Business Park Theale Reading R + ENGLAND + UNITED KINGDOM + +00-04-55 (hex) ANTARA.net +000455 (base 16) ANTARA.net + 747 Camden Ave. + Suite A + Campbell CA 95008 + UNITED STATES + +00-04-56 (hex) Motorola PTP Inc +000456 (base 16) Motorola PTP Inc + Unit 1A, Linhay Business Park, + Eastern Road, + Ashburton Devon TQ13 7UP + UNITED KINGDOM + +00-04-57 (hex) Universal Access Technology, Inc. +000457 (base 16) Universal Access Technology, Inc. + 2 Fl., No. 5, Alley 22, + Lane 513, Jui Kuang Road, + Nei Hu Taipei, TAIWAN 114 + TAIWAN, REPUBLIC OF CHINA + +00-04-58 (hex) Fusion X Co., Ltd. +000458 (base 16) Fusion X Co., Ltd. + #905 Hansol Techno Town + 16-1 Dang-Jung Dong Kun-Po Kyung-Ki do K + Zip 435-030 + KOREA, REPUBLIC OF + +00-04-59 (hex) Veristar Corporation +000459 (base 16) Veristar Corporation + 727 Allston Way + Berkeley CA 94710 + UNITED STATES + +00-04-5A (hex) The Linksys Group, Inc. +00045A (base 16) The Linksys Group, Inc. + 17401 Armstrong Ave. + Irvine CA 92614 + UNITED STATES + +00-04-5B (hex) Techsan Electronics Co., Ltd. +00045B (base 16) Techsan Electronics Co., Ltd. + North Wing + 43 High Street Fareham, Hants P016 7BQ + UNITED KINGDOM + UNITED KINGDOM + +00-04-5C (hex) Mobiwave Pte Ltd +00045C (base 16) Mobiwave Pte Ltd + Blk 16, Kallang Place + #07-01/04 + 339156 + SINGAPORE + +00-04-5D (hex) BEKA Elektronik +00045D (base 16) BEKA Elektronik + Siemenstrasse 29 + Erftstadt 50374 + GERMANY + +00-04-5E (hex) PolyTrax Information Technology AG +00045E (base 16) PolyTrax Information Technology AG + Martin-Kollar - Str. 5 + D-81829 Munchen + GERMANY + GERMANY + +00-04-5F (hex) Evalue Technology, Inc. +00045F (base 16) Evalue Technology, Inc. + 5F-7, No. 130, Chien Kang Road, + Chung Ho City, Taipei + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-04-60 (hex) Knilink Technology, Inc. +000460 (base 16) Knilink Technology, Inc. + 10F, #96, Hsin Tai Wu Rd., + Sec. 1, Hsi Chih, Taipei Hsien, + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-04-61 (hex) EPOX Computer Co., Ltd. +000461 (base 16) EPOX Computer Co., Ltd. + 11F, #346, Chung San Rd. + Sec. 2, Chung Ho City, Taipei Hsien 235 + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-04-62 (hex) DAKOS Data & Communication Co., Ltd. +000462 (base 16) DAKOS Data & Communication Co., Ltd. + 2nd Floor Bethel Building 324-1 + Yangjae-dong Seocho-gu Seoul R.O.K. + Zip code: 137-130 + TAIWAN, REPUBLIC OF CHINA + +00-04-63 (hex) Bosch Security Systems +000463 (base 16) Bosch Security Systems + 850 Greenfield Road + Lancaster PA 17601-5874 + UNITED STATES + +00-04-64 (hex) Fantasma Networks, Inc. +000464 (base 16) Fantasma Networks, Inc. + 3250 Ash Street + Palo Alto CA 94306 + UNITED STATES + +00-04-65 (hex) i.s.t isdn-support technik GmbH +000465 (base 16) i.s.t isdn-support technik GmbH + Rhein Strasse 7E + 14513 Teltow + GERMANY + GERMANY + +00-04-66 (hex) ARMITEL Co. +000466 (base 16) ARMITEL Co. + F5, Doman Plaza 353-4, + Yatap-Dong, Pudang-ku, Seong-Name Si, Ky + Republic of KOREA + KOREA, REPUBLIC OF + +00-04-67 (hex) Wuhan Research Institute of MII +000467 (base 16) Wuhan Research Institute of MII + 88 Youkeyuan Road, + Hangshan District,Wuhan, Hubei Province, + 430074 430074 P.R.CHINA + CHINA + +00-04-68 (hex) Vivity, Inc. +000468 (base 16) Vivity, Inc. + 3360 Mitchell Lane + Boulder CO 80301 + UNITED STATES + +00-04-69 (hex) Innocom, Inc. +000469 (base 16) Innocom, Inc. + 655-2 Naebalsan-Dong + Kangseo-Gu, Seoul + 157-280 157-280 KOREA + KOREA, REPUBLIC OF + +00-04-6A (hex) Navini Networks +00046A (base 16) Navini Networks + 3605 E. Plano Pkwy, + Suite 400, + Plano TX 75074 + UNITED STATES + +00-04-6B (hex) Palm Wireless, Inc. +00046B (base 16) Palm Wireless, Inc. + 48933 Warm Springs Blvd. + Fremont CA 94539 + UNITED STATES + +00-04-6C (hex) Cyber Technology Co., Ltd. +00046C (base 16) Cyber Technology Co., Ltd. + 1-45 Yeo Wol-Dong + Oh Jung-Em, Bu Cheon City, + Kyeong Gi-Do Kyeong Gi-Do KOREA + KOREA, REPUBLIC OF + +00-04-6D (hex) Cisco Systems, Inc. +00046D (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-6E (hex) Cisco Systems, Inc. +00046E (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-6F (hex) Digitel S/A Industria Eletronica +00046F (base 16) Digitel S/A Industria Eletronica + R. Doutor Joao Ignacio, 1165 + Porto Alegre, RS. Brazil + Zip: 90230.181 + BRAZIL + +00-04-70 (hex) ipUnplugged AB +000470 (base 16) ipUnplugged AB + Box 10160 + SE 121 28 Stockholm-Globsen + SWEDEN + SWEDEN + +00-04-71 (hex) IPrad +000471 (base 16) IPrad + 24 Raoul Wallenberg St. + Tel-Aviv 69719 + ISRAEL + ISRAEL + +00-04-72 (hex) Telelynx, Inc. +000472 (base 16) Telelynx, Inc. + 3F-1, 66 Nankan Rd., + Sec. 2 Lu Chu, Tao-Yuan + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-04-73 (hex) Photonex Corporation +000473 (base 16) Photonex Corporation + 8C Preston Court + Bedford MA 01730 + UNITED STATES + +00-04-74 (hex) LEGRAND +000474 (base 16) LEGRAND + 145 Avenue De Lattre + 57045 Limoges + FRANCE + FRANCE + +00-04-75 (hex) 3 Com Corporation +000475 (base 16) 3 Com Corporation + 5400 Bayfront Plaza + MS: 4220 + Santa Clara CA 95052 + UNITED STATES + +00-04-76 (hex) 3 Com Corporation +000476 (base 16) 3 Com Corporation + 5400 Bayfront Plaza + MS: 4220 + Santa Clara CA 95052 + UNITED STATES + +00-04-77 (hex) Scalant Systems, Inc. +000477 (base 16) Scalant Systems, Inc. + 2040 Martin Avenue + Santa Clara CA 95050 + UNITED STATES + +00-04-78 (hex) G. Star Technology Corporation +000478 (base 16) G. Star Technology Corporation + 4th Floor, No. 118, Sector 2 + Chung Hsiao East Road + Taipei City Taipei City TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-04-79 (hex) Radius Co., Ltd. +000479 (base 16) Radius Co., Ltd. + 1-48-11, Itabashi + Roje Bldg., No. 3, 6F Itabashi-ku, Tokyo + JAPAN + JAPAN + +00-04-7A (hex) AXXESSIT ASA +00047A (base 16) AXXESSIT ASA + AXXESSIT ASA HALDEN + Box 1053 1787 Berg i Ostfold + NORWAY + NORWAY + +00-04-7B (hex) Schlumberger +00047B (base 16) Schlumberger + Sugar Land Product Center + 110 Schlumberger Drive + Sugar Land TX 77478 + UNITED STATES + +00-04-7C (hex) Skidata AG +00047C (base 16) Skidata AG + T-697553 Untersbergstr. 40 + A-5083 Gartenau + AUSTRIA + AUSTRIA + +00-04-7D (hex) Pelco +00047D (base 16) Pelco + 3500 Pelco Way + Clovis CA 93612 + UNITED STATES + +00-04-7E (hex) Optelecom=NKF +00047E (base 16) Optelecom=NKF + Zuidelijk Halfrond 11 + 2801 DD Gouda + NETHERLANDS + +00-04-7F (hex) Chr. Mayr GmbH & Co. KG +00047F (base 16) Chr. Mayr GmbH & Co. KG + Eichenstrasse 1 + D-87665 Mauerstetten + GERMANY + GERMANY + +00-04-80 (hex) Foundry Networks, Inc. +000480 (base 16) Foundry Networks, Inc. + 2100 Gold St. + PO Box 649100 + San Jose CA 95164-9100 + UNITED STATES + +00-04-81 (hex) Econolite Control Products, Inc. +000481 (base 16) Econolite Control Products, Inc. + 3360 E. La Palma Ave. + Anaheim CA 92806 + UNITED STATES + +00-04-82 (hex) Medialogic Corp. +000482 (base 16) Medialogic Corp. + 0-3, Toyamaken-Sangyou + Koudoka-Center, 5, Office Park, Takaoka- + JAPAN + JAPAN + +00-04-83 (hex) Deltron Technology, Inc. +000483 (base 16) Deltron Technology, Inc. + 8F-3, No. 125, Lane 235 + Pao-Chiao Rd., Hsintien, + Taipei TAIWAN, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-04-84 (hex) Amann GmbH +000484 (base 16) Amann GmbH + Unteranger 6 + D-82041 Oberhaching + GERMANY + GERMANY + +00-04-85 (hex) PicoLight +000485 (base 16) PicoLight + 4665 Nautilus Court South + Boulder CO 80301 + UNITED STATES + +00-04-86 (hex) ITTC, University of Kansas +000486 (base 16) ITTC, University of Kansas + 2335 Irving Hill Rd. + Lawrence KS 66045 + UNITED STATES + +00-04-87 (hex) Cogency Semiconductor, Inc. +000487 (base 16) Cogency Semiconductor, Inc. + 362 Terry Fox Drive, Suite 210 + Kanata, ON, K2K 2P5 + CANADA + CANADA + +00-04-88 (hex) Eurotherm Controls +000488 (base 16) Eurotherm Controls + 741F Miller Drive + Lessburg VA 20175 + UNITED STATES + +00-04-89 (hex) YAFO Networks, Inc. +000489 (base 16) YAFO Networks, Inc. + 1340F Charwood Rd. + Hanover MD 21076 + UNITED STATES + +00-04-8A (hex) Temia Vertriebs GmbH +00048A (base 16) Temia Vertriebs GmbH + Landsbergerstr. 320 + D-80687 Munich + GERMANY + UNITED STATES + +00-04-8B (hex) Poscon Corporation +00048B (base 16) Poscon Corporation + #606 Ho-Dong, Nam Gu, + Pohang City, Kyungbuk, + SOUTH KOREA + KOREA, REPUBLIC OF + +00-04-8C (hex) Nayna Networks, Inc. +00048C (base 16) Nayna Networks, Inc. + 157 Topaz St. + Milpitas CA 95035 + UNITED STATES + +00-04-8D (hex) Tone Commander Systems, Inc. +00048D (base 16) Tone Commander Systems, Inc. + 11609 49th Place West + Mukilteo WA 98275 + UNITED STATES + +00-04-8E (hex) Ohm Tech Labs, Inc. +00048E (base 16) Ohm Tech Labs, Inc. + 141 Lanza Ave., B-12 + Garfield NJ 07026 + UNITED STATES + +00-04-8F (hex) TD Systems Corporation +00048F (base 16) TD Systems Corporation + 100 Bearfoot Rd. + 64 Ontario Drive + Hudson MA 01749 + UNITED STATES + +00-04-90 (hex) Optical Access +000490 (base 16) Optical Access + P.O. Box 114 + Yokneam, 20692 + ISRAEL + ISRAEL + +00-04-91 (hex) Technovision, Inc. +000491 (base 16) Technovision, Inc. + 5155 Spectrum Way, Unit #31 + Mississauga, Ontario + L4W 5A1 CANADA + CANADA + +00-04-92 (hex) Hive Internet, Ltd. +000492 (base 16) Hive Internet, Ltd. + Unit 2, Church View Business Centre + Louth Road + Binbrook Market Rasen, Lincolnshire LN8 6BY + UNITED KINGDOM + +00-04-93 (hex) Tsinghua Unisplendour Co., Ltd. +000493 (base 16) Tsinghua Unisplendour Co., Ltd. + Th-Unis Building Tsinghua + University, Bejing 100084 + P.R. CHINA + CHINA + +00-04-94 (hex) Breezecom, Ltd. +000494 (base 16) Breezecom, Ltd. + Atidim Technology Park + Bldg. 1, P.O.B. 13139 Tel-Aviv 61131 + ISRAEL + ISRAEL + +00-04-95 (hex) Tejas Networks +000495 (base 16) Tejas Networks + 1st Floor, Zone 2 + Khanija Bhavan 49, Race Course Road + Bangalore - 560001 INDIA + INDIA + +00-04-96 (hex) Extreme Networks +000496 (base 16) Extreme Networks + 3585 Monroe St. + Santa Clara CA 95051 + UNITED STATES + +00-04-97 (hex) MacroSystem Digital Video AG +000497 (base 16) MacroSystem Digital Video AG + Schoellinger Feld 28 + 58300 Wetter, F.R. + GERMANY + GERMANY + +00-04-98 (hex) Mahi Networks +000498 (base 16) Mahi Networks + 1039 N. McDowell Blvd. + Petaluma CA 94954 + UNITED STATES + +00-04-99 (hex) Chino Corporation +000499 (base 16) Chino Corporation + 1 Mori, Fujioka City, + Gunma Pref. JAPAN + Zip: 375-8505 + JAPAN + +00-04-9A (hex) Cisco Systems, Inc. +00049A (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-9B (hex) Cisco Systems, Inc. +00049B (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-9C (hex) Surgient Networks, Inc. +00049C (base 16) Surgient Networks, Inc. + 3520 Executive Center Drive + Suite 300 + Austin TX 78731 + UNITED STATES + +00-04-9D (hex) Ipanema Technologies +00049D (base 16) Ipanema Technologies + 28, Rue De La Redoute + 92260 Fontenay Aux Roses + FRANCE + FRANCE + +00-04-9E (hex) Wirelink Co., Ltd. +00049E (base 16) Wirelink Co., Ltd. + 11F, Geoseong B/D 541, Dowha-Dong, + Mapo-Gu, Seoul, 121-701, + KOREA + KOREA, REPUBLIC OF + +00-04-9F (hex) Freescale Semiconductor +00049F (base 16) Freescale Semiconductor + 7700 West Parmer Lane + MD PL59 + Austin TX 78729 + UNITED STATES + +00-04-A0 (hex) Verity Instruments, Inc. +0004A0 (base 16) Verity Instruments, Inc. + 2901 Eisenhower St. + Carrollton TX 75007 + UNITED STATES + +00-04-A1 (hex) Pathway Connectivity +0004A1 (base 16) Pathway Connectivity + 1439-17 Avenue SE + Calgary Alberta T2G 1J9 + CANADA + +00-04-A2 (hex) L.S.I. Japan Co., Ltd. +0004A2 (base 16) L.S.I. Japan Co., Ltd. + 1-8-14 Sendagaya Shibuya-Ku + Tokyo 151-0051 JAPAN + JAPAN + +00-04-A3 (hex) Microchip Technology, Inc. +0004A3 (base 16) Microchip Technology, Inc. + 2355 W. Chandler Blvd. + Chandler AZ 85224 + UNITED STATES + +00-04-A4 (hex) NetEnabled, Inc. +0004A4 (base 16) NetEnabled, Inc. + 1275 Kinnear Rd. + Columbus OH 43212 + UNITED STATES + +00-04-A5 (hex) Barco Projection Systems NV +0004A5 (base 16) Barco Projection Systems NV + Noordlaan 5 + B8520 Kuurne + BELGIUM + BELGIUM + +00-04-A6 (hex) SAF Tehnika Ltd. +0004A6 (base 16) SAF Tehnika Ltd. + 91 Dzirnavu Str., + Riga, LV-1011, + LATVIA + LATVIA + +00-04-A7 (hex) FabiaTech Corporation +0004A7 (base 16) FabiaTech Corporation + 4F-3, No. 18, Lane 609 + Chung-Hsin Rd., Sec. 5 San Chung City, + Taipei Hsien, TAIWAN R.O.C + TAIWAN, REPUBLIC OF CHINA + +00-04-A8 (hex) Broadmax Technologies, Inc. +0004A8 (base 16) Broadmax Technologies, Inc. + 180, Wai Yip Street, + Hwun Tong, + HONG KONG + HONG KONG + +00-04-A9 (hex) SandStream Technologies, Inc. +0004A9 (base 16) SandStream Technologies, Inc. + 1955 Lakeway Dr. + Lewisville TX 75057 + UNITED STATES + +00-04-AA (hex) Jetstream Communications +0004AA (base 16) Jetstream Communications + 5400 Hellyer Avenue + San Jose CA 95138-1005 + UNITED STATES + +00-04-AB (hex) Comverse Network Systems, Inc. +0004AB (base 16) Comverse Network Systems, Inc. + 29 Habarzel Street. + Tel-Aviv 69710 + ISRAEL + ISRAEL + +00-04-AC (hex) IBM CORP. +0004AC (base 16) IBM CORP. + P.O. BOX 12195 + CE6A/664 3039 CORNWALLIS + RTP NC 27709-2195 + UNITED STATES + +00-04-AD (hex) Malibu Networks +0004AD (base 16) Malibu Networks + 26637 Agoura Rd. + Calabasas CA 91302 + UNITED STATES + +00-04-AE (hex) Liquid Metronics +0004AE (base 16) Liquid Metronics + 8 Post Office Sq. + Acton MA 01720 + UNITED STATES + +00-04-AF (hex) Digital Fountain, Inc. +0004AF (base 16) Digital Fountain, Inc. + 600 Alabama St. + San Francisco CA 94110 + UNITED STATES + +00-04-B0 (hex) ELESIGN Co., Ltd. +0004B0 (base 16) ELESIGN Co., Ltd. + 9Fl. TaeKyoung Bldg., + 42-42 BongChun-dong KwanAk-gu, Seoul, + R.O. KOREA + KOREA, REPUBLIC OF + +00-04-B1 (hex) Signal Technology, Inc. +0004B1 (base 16) Signal Technology, Inc. + 3rd. Fl. Dabo Bldg. + 37-2 koyo songpa + Seoul KOREA 138-110 + KOREA, REPUBLIC OF + +00-04-B2 (hex) ESSEGI SRL +0004B2 (base 16) ESSEGI SRL + Via Del Cavaratori, 17 + 20092 Cinisello B. (M1) + ITALY + ITALY + +00-04-B3 (hex) Videotek, Inc. +0004B3 (base 16) Videotek, Inc. + 243 Shoemaker Rd. + Pottstown PA 19464 + UNITED STATES + +00-04-B4 (hex) CIAC +0004B4 (base 16) CIAC + 18 rue Joseph BARA + 92130 Issy-les-Molineaux + FRANCE + FRANCE + +00-04-B5 (hex) Equitrac Corporation +0004B5 (base 16) Equitrac Corporation + 1905 N.W. 82nd Avenue + Miami FL 33126 + UNITED STATES + +00-04-B6 (hex) Stratex Networks, Inc. +0004B6 (base 16) Stratex Networks, Inc. + 64 White Road + Retreat, + Cape Town 7945 + SOUTH AFRICA + +00-04-B7 (hex) AMB i.t. Holding +0004B7 (base 16) AMB i.t. Holding + Zuiderhoutlaan 4 + PJ Haarlem 2012 + NETHERLANDS + +00-04-B8 (hex) Kumahira Co., Ltd. +0004B8 (base 16) Kumahira Co., Ltd. + 4-34 Ujinahigashi 2-Chome + Minamiku Hiroshima + JAPAN 734-8567 + JAPAN + +00-04-B9 (hex) S.I. Soubou, Inc. +0004B9 (base 16) S.I. Soubou, Inc. + Kubo Bldg., 703, 2-12, + Nanpeidai-cho, Shibuya-ku, + Tokyo Tokyo JAPAN + JAPAN + +00-04-BA (hex) KDD Media Will Corporation +0004BA (base 16) KDD Media Will Corporation + 2-1-23 Nakameguro + Meguro-Ku Tokyo + 153-0061 JAPAN + JAPAN + +00-04-BB (hex) Bardac Corporation +0004BB (base 16) Bardac Corporation + 40 Log Canoe Circle + Stevensville MD 21666 + UNITED STATES + +00-04-BC (hex) Giantec, Inc. +0004BC (base 16) Giantec, Inc. + 4F, No. 3, Lane 123, + Pao Chung Rd., Hsien Tien City, Taipei + TAIWAN 231 TAIWAN 231 R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-04-BD (hex) Motorola BCS +0004BD (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-04-BE (hex) OptXCon, Inc. +0004BE (base 16) OptXCon, Inc. + P.O. Box 13449 + Research Triangle Park NC 27709-3449 + UNITED STATES + +00-04-BF (hex) VersaLogic Corp. +0004BF (base 16) VersaLogic Corp. + 3888 Stewart Rd. + Eugene OR 97402 + UNITED STATES + +00-04-C0 (hex) Cisco Systems, Inc. +0004C0 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-C1 (hex) Cisco Systems, Inc. +0004C1 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-C2 (hex) Magnipix, Inc. +0004C2 (base 16) Magnipix, Inc. + 3539 St-Charles Blvd., Suite 212 + Kirkland (Quebec) + CANADA H9H3C4 + CANADA + +00-04-C3 (hex) CASTOR Informatique +0004C3 (base 16) CASTOR Informatique + 2, Rue Du Kefir + Senia 343 + 94537 Orly Cedex France + FRANCE + +00-04-C4 (hex) Allen & Heath Limited +0004C4 (base 16) Allen & Heath Limited + Kernick Industrial Estate, Penryn + Cornwall England TR10 9LU + UNITED KINGDOM + +00-04-C5 (hex) ASE Technologies, USA +0004C5 (base 16) ASE Technologies, USA + 6721 Baum Dr. + Knoxville TN 37919 + UNITED STATES + +00-04-C6 (hex) Yamaha Motor Co., Ltd. +0004C6 (base 16) Yamaha Motor Co., Ltd. + Information System Division + 2500 Shingai Iwata, Shizuoka + Japan Zip: 438-8501 + JAPAN + +00-04-C7 (hex) NetMount +0004C7 (base 16) NetMount + P.O.B. 2325 + Kadima 60920 + ISRAEL + ISRAEL + +00-04-C8 (hex) LIBA Maschinenfabrik GmbH +0004C8 (base 16) LIBA Maschinenfabrik GmbH + PO Box 1120 + D95112 Naila + GERMANY + GERMANY + +00-04-C9 (hex) Micro Electron Co., Ltd. +0004C9 (base 16) Micro Electron Co., Ltd. + 2F Ibanaki-Tanaka Bldg. + 1-1-59 Nakahodumi Ibaraki-shi, Osaka 567 + JAPAN + JAPAN + +00-04-CA (hex) FreeMs Corp. +0004CA (base 16) FreeMs Corp. + Shinhan Bldg. 6F, + 45-11 Yoido-Dong, Youngdeungpo-ku, + Seoul 150-736 KOREA + KOREA, REPUBLIC OF + +00-04-CB (hex) Tdsoft Communication, Ltd. +0004CB (base 16) Tdsoft Communication, Ltd. + 60 Medinat Hayehudim St. + Herzlia 46766 + ISRAEL + ISRAEL + +00-04-CC (hex) Peek Traffic B.V. +0004CC (base 16) Peek Traffic B.V. + Postbus 2542 + 3800 GB Amersfoot + The Netherlands + NETHERLANDS + +00-04-CD (hex) Informedia Research Group +0004CD (base 16) Informedia Research Group + 390 St-Vallier East + Suite 203 + Quebec PQ G1K 3P6 CANADA + CANADA + +00-04-CE (hex) Patria Ailon +0004CE (base 16) Patria Ailon + Naulakatu 3 + FIN-33100 Tampere + FINLAND + FINLAND + +00-04-CF (hex) Seagate Technology +0004CF (base 16) Seagate Technology + 1280 Disc Drive + Shakopee MN 55379 + UNITED STATES + +00-04-D0 (hex) Softlink s.r.o. +0004D0 (base 16) Softlink s.r.o. + Tomkova 409 + Kralupy n. Vltavou + Czech Republic + CZECH REPUBLIC + +00-04-D1 (hex) Drew Technologies, Inc. +0004D1 (base 16) Drew Technologies, Inc. + 3915 Research Park Dr + Suite A10 + Ann Arbor MI 48108 + UNITED STATES + +00-04-D2 (hex) Adcon Telemetry GmbH +0004D2 (base 16) Adcon Telemetry GmbH + Inkustr. 24 + A-3400 Klosterneuburg + AUSTRIA + +00-04-D3 (hex) Toyokeiki Co., Ltd. +0004D3 (base 16) Toyokeiki Co., Ltd. + Wada 3967-10, Matsumoto-City + Nagano 390-1298, + JAPAN + JAPAN + +00-04-D4 (hex) Proview Electronics Co., Ltd. +0004D4 (base 16) Proview Electronics Co., Ltd. + 6F, No. 1, Pau-Sheng Road + Yung Ho City, Taipei, + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-04-D5 (hex) Hitachi Communication Systems, Inc. +0004D5 (base 16) Hitachi Communication Systems, Inc. + 180 Totsuka-cho, Totsuka-ku, + Yokohama 244-0003 + JAPAN + JAPAN + +00-04-D6 (hex) Takagi Industrial Co., Ltd. +0004D6 (base 16) Takagi Industrial Co., Ltd. + Electronic Instrument Div. + 3508, Kamiide-Mikaeshi, Eujinomiya-shi, + 418-0103 418-0103 JAPAN + JAPAN + +00-04-D7 (hex) Omitec Instrumentation Ltd. +0004D7 (base 16) Omitec Instrumentation Ltd. + Hopton Industrial Est. + London Rd., Devizes Wiltshire SN10 2EU + ENGLAND + UNITED KINGDOM + +00-04-D8 (hex) IPWireless, Inc. +0004D8 (base 16) IPWireless, Inc. + 4 Landsowne Court + Bumpers Way Chippenham, Wiltshire, + SN14 GRZ UK + UNITED KINGDOM + +00-04-D9 (hex) Titan Electronics, Inc. +0004D9 (base 16) Titan Electronics, Inc. + Rm 7, 11 Fl., No. 398, + Huan-Pei Road, Chung-Li, + Taoyuan Taoyuan TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-04-DA (hex) Relax Technology, Inc. +0004DA (base 16) Relax Technology, Inc. + DBA/ Granite Digital + 3101 Whipple Road + Union City CA 94587 + UNITED STATES + +00-04-DB (hex) Tellus Group Corp. +0004DB (base 16) Tellus Group Corp. + 4F, No. 15 Industry E. Rd., IX + Science-Based Industrial Park + Hsinchu Hsinchu Taiwan + TAIWAN, REPUBLIC OF CHINA + +00-04-DC (hex) Nortel Networks +0004DC (base 16) Nortel Networks + Department 6800 + 8200 Dixie Road, Suite 100 Brapton ON L6 + CANADA + CANADA + +00-04-DD (hex) Cisco Systems, Inc. +0004DD (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-DE (hex) Cisco Systems, Inc. +0004DE (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-04-DF (hex) Teracom Telematica Ltda. +0004DF (base 16) Teracom Telematica Ltda. + R. Felipe Neri, 246 CJ. 301 + 90440-150 Porto Allegre RS + Bazil + BRAZIL + +00-04-E0 (hex) Procket Networks +0004E0 (base 16) Procket Networks + 1100 Cadillac Court + Milpitas CA 95035 + UNITED STATES + +00-04-E1 (hex) Infinior Microsystems +0004E1 (base 16) Infinior Microsystems + 2F, Accufar Bldg, 234-10, + Jamsil-Dong, Songpa-Gu + Seoul KOREA 138-220 + KOREA, REPUBLIC OF + +00-04-E2 (hex) SMC Networks, Inc. +0004E2 (base 16) SMC Networks, Inc. + 6 Hughes + Irvine CA 92618 + UNITED STATES + +00-04-E3 (hex) Accton Technology Corp. +0004E3 (base 16) Accton Technology Corp. + No. 1 Creation Rd. III, + SBIP + Hsinchu Hsinchu TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-04-E4 (hex) Daeryung Ind., Inc. +0004E4 (base 16) Daeryung Ind., Inc. + #219-6, Kasan Dong, + Kumchun ku, + Seoul Seoul KOREA + KOREA, REPUBLIC OF + +00-04-E5 (hex) Glonet Systems, Inc. +0004E5 (base 16) Glonet Systems, Inc. + 11Fl., Jeil Bldg., 94-46, 7Ka + Youngdungpo-dong Yongdungpo-Ku Seoul, 15 + KOREA + KOREA, REPUBLIC OF + +00-04-E6 (hex) Banyan Network Private Limited +0004E6 (base 16) Banyan Network Private Limited + 443, 8th Floor, Guna Complex + Annasalai, Chennai-600 018 + INDIA + INDIA + +00-04-E7 (hex) Lightpointe Communications, Inc +0004E7 (base 16) Lightpointe Communications, Inc + 10140 Barnes Canyon Road + San Diego CA 92121 + UNITED STATES + +00-04-E8 (hex) IER, Inc. +0004E8 (base 16) IER, Inc. + 4501 So. General Bruce Dr + Suite 50 + Temple TX 76502 + UNITED STATES + +00-04-E9 (hex) Infiniswitch Corporation +0004E9 (base 16) Infiniswitch Corporation + 134 Flanders Road + Westborough MA 01581 + UNITED STATES + +00-04-EA (hex) Hewlett-Packard Company +0004EA (base 16) Hewlett-Packard Company + 11000 Wolfe Road, Mailstop 42LE + Cupertino CA 95014 + UNITED STATES + +00-04-EB (hex) Paxonet Communications, Inc. +0004EB (base 16) Paxonet Communications, Inc. + 4046 Clipper Court + Fremont CA 94538 + UNITED STATES + +00-04-EC (hex) Memobox SA +0004EC (base 16) Memobox SA + 1, Place Dame Suzanne + 91190 Saint Aubin + France + FRANCE + +00-04-ED (hex) Billion Electric Co., Ltd. +0004ED (base 16) Billion Electric Co., Ltd. + 8F, No.192, Sec.2, Chung Hsing Rd., + Hsin Tien City, Taipei Hsien + Taiwan Taiwan ROC + TAIWAN, REPUBLIC OF CHINA + +00-04-EE (hex) Lincoln Electric Company +0004EE (base 16) Lincoln Electric Company + 22801 St. Clair Avenue + Cleveland OH 44117-1199 + UNITED STATES + +00-04-EF (hex) Polestar Corp. +0004EF (base 16) Polestar Corp. + RM #802 SeoGeon B/D, 1480, + GwanYang-Dong, DongAn-Gu, AnYang City, 4 + Korea (ROK) + KOREA, REPUBLIC OF + +00-04-F0 (hex) International Computers, Ltd +0004F0 (base 16) International Computers, Ltd + 1 Wenlock Way + West Gorton Manchester, M12 5DR + UK + UNITED KINGDOM + +00-04-F1 (hex) WhereNet +0004F1 (base 16) WhereNet + 107 W. McKinney Avenue + Rogersville TN 37857 + UNITED STATES + +00-04-F2 (hex) Polycom +0004F2 (base 16) Polycom + 1000 West 14th Street + North Vancouver, B.C. + Canada V7P3P3 + CANADA + +00-04-F3 (hex) FS FORTH-SYSTEME GmbH +0004F3 (base 16) FS FORTH-SYSTEME GmbH + Kueferstr. 8 + D-79206 Breisach + Germany + GERMANY + +00-04-F4 (hex) Infinite Electronics Inc. +0004F4 (base 16) Infinite Electronics Inc. + No.478-1, Sec 2 + Ching Hai Road 407, Tai Chung + TAIWAN, REPUBLIC OF CHINA + +00-04-F5 (hex) SnowShore Networks, Inc. +0004F5 (base 16) SnowShore Networks, Inc. + 285 Billerica Road + Chelmsford MA 01824 + UNITED STATES + +00-04-F6 (hex) Amphus +0004F6 (base 16) Amphus + 2372 Qume Drive, #F + San Jose CA 95131 + UNITED STATES + +00-04-F7 (hex) Omega Band, Inc. +0004F7 (base 16) Omega Band, Inc. + 9020-I Capital of Texas Hghwy N + Suite #270 + Austin TX 78759 + UNITED STATES + +00-04-F8 (hex) QUALICABLE TV Industria E Com., Ltda +0004F8 (base 16) QUALICABLE TV Industria E Com., Ltda + Av. Joao Paulo Ablas, 308 + Jardim Da Gloria - Cotia -SP CEP 06711-2 + BRAZIL + +00-04-F9 (hex) Xtera Communications, Inc. +0004F9 (base 16) Xtera Communications, Inc. + 500 W Bethany Drive + Allen TX 75013 + UNITED STATES + +00-04-FA (hex) NBS Technologies Inc. +0004FA (base 16) NBS Technologies Inc. + 703 Evans Avenue, Suite 400 + Toronto + Ontario M9C 5E9 + CANADA + +00-04-FB (hex) Commtech, Inc. +0004FB (base 16) Commtech, Inc. + 9011 E. 37th Street + Wichita KS 67226-2006 + UNITED STATES + +00-04-FC (hex) Stratus Computer (DE), Inc. +0004FC (base 16) Stratus Computer (DE), Inc. + 111 Powdermill Road + Maynard MA 01754 + UNITED STATES + +00-04-FD (hex) Japan Control Engineering Co., Ltd. +0004FD (base 16) Japan Control Engineering Co., Ltd. + 1-5-1, Higashiamagawa, Takatsuki-shi + Osaka 569-0012 + JAPAN + +00-04-FE (hex) Pelago Networks +0004FE (base 16) Pelago Networks + 701 E. Plano Parkway - Ste. #205 + Plano TX 75074 + UNITED STATES + +00-04-FF (hex) Acronet Co., Ltd. +0004FF (base 16) Acronet Co., Ltd. + Saman B/D 2Fl + 811-15 Bangbae-Dong Seocho-ku, Seoul + 137-064 + KOREA, REPUBLIC OF + +00-05-00 (hex) Cisco Systems, Inc. +000500 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-01 (hex) Cisco Systems, Inc. +000501 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-02 (hex) APPLE COMPUTER +000502 (base 16) APPLE COMPUTER + 20650 VALLEY GREEN DRIVE + CUPERTINO CA 95014 + UNITED STATES + +00-05-03 (hex) ICONAG +000503 (base 16) ICONAG + AM Bahnhof 2 + 55765 Birkenfeld + GERMANY + +00-05-04 (hex) Naray Information & Communication Enterprise +000504 (base 16) Naray Information & Communication Enterprise + 3F San Woo Bldg., 1543-11 + Seocho-Dong, Seocho-Ku, + Seoul 137-070 + KOREA, REPUBLIC OF + +00-05-05 (hex) Systems Integration Solutions, Inc. +000505 (base 16) Systems Integration Solutions, Inc. + 3922 Coconut Palm Drive, + Suite 106 + Tampa FL 33619 + UNITED STATES + +00-05-06 (hex) Reddo Networks AB +000506 (base 16) Reddo Networks AB + Livdjursgatan 4 + SE 121 62 Johanneshov + SWEDEN + +00-05-07 (hex) Fine Appliance Corp. +000507 (base 16) Fine Appliance Corp. + 7Fl., No. 499, + Chung-Cheng Rd., Hsintien, Taipei + TAIWAN, REPUBLIC OF CHINA + +00-05-08 (hex) Inetcam, Inc. +000508 (base 16) Inetcam, Inc. + 10171 Pacific Mesa Blvd. + San Diego CA 92121 + UNITED STATES + +00-05-09 (hex) AVOC Nishimura Ltd. +000509 (base 16) AVOC Nishimura Ltd. + Jogasaki 4-16-14 + Miyazaki-city, Miyazaki 880-0917, + JAPAN + +00-05-0A (hex) ICS Spa +00050A (base 16) ICS Spa + Via Romano AL + 10010 Scarmagno (TO) + ITALY + +00-05-0B (hex) SICOM Systems, Inc. +00050B (base 16) SICOM Systems, Inc. + 4140 Skyron Drive + Doylestown PA 18901 + UNITED STATES + +00-05-0C (hex) Network Photonics, Inc. +00050C (base 16) Network Photonics, Inc. + 451 Aviation Boulevard + Santa Rosa CA 95403 + UNITED STATES + +00-05-0D (hex) Midstream Technologies, Inc. +00050D (base 16) Midstream Technologies, Inc. + 777 108th Ave. NE + Suite 1700 + Bellevue WA 98004-5140 + UNITED STATES + +00-05-0E (hex) 3ware, Inc. +00050E (base 16) 3ware, Inc. + 701 E. Middlefield Rd. + Suite 300 + Mt. View CA 94043 + UNITED STATES + +00-05-0F (hex) Tanaka S/S Ltd. +00050F (base 16) Tanaka S/S Ltd. + 1942 Nomura Hirooka + Shiojiri-City + Nagano 399-0702 + JAPAN + +00-05-10 (hex) Infinite Shanghai Communication Terminals Ltd. +000510 (base 16) Infinite Shanghai Communication Terminals Ltd. + 777 Chungiao Road, Pudong + Shanghai 201206, + CHINA + +00-05-11 (hex) Complementary Technologies Ltd +000511 (base 16) Complementary Technologies Ltd + Comtech House, 28 Manchester Road + Westhoughton BOLTON + BL5 3QJ + UNITED KINGDOM + +00-05-12 (hex) MeshNetworks, Inc. +000512 (base 16) MeshNetworks, Inc. + 485 Keller Rd., Suite 250 + Maitland FL 32751-7535 + UNITED STATES + +00-05-13 (hex) VTLinx Multimedia Systems, Inc. +000513 (base 16) VTLinx Multimedia Systems, Inc. + 8401 Colesville Road, + Suite 750 + Silver Spring MD 20910 + UNITED STATES + +00-05-14 (hex) KDT Systems Co., Ltd. +000514 (base 16) KDT Systems Co., Ltd. + 102-6, Chobu-Li, Mohyun-Myun, + Yongin-City, Kyungki-Do, + KOREA, REPUBLIC OF + +00-05-15 (hex) Nuark Co., Ltd. +000515 (base 16) Nuark Co., Ltd. + 12F, Anyang K center, 1591-9, Burim-dong + Dongan-gu, Anyang-si, + Gunggi-do 431-065 + KOREA, REPUBLIC OF + +00-05-16 (hex) SMART Modular Technologies +000516 (base 16) SMART Modular Technologies + 4305 Cushing Pkwy + Fremont CA 94538 + UNITED STATES + +00-05-17 (hex) Shellcomm, Inc. +000517 (base 16) Shellcomm, Inc. + Rm #6122 ETRI TBI Center, 1, + Eoeun-Dong, Yusong-Gu, Taejon, 305-333, + KOREA, REPUBLIC OF + +00-05-18 (hex) Jupiters Technology +000518 (base 16) Jupiters Technology + PO Box 12693 + Elizabeth Street Brisbane QLD 4002 + AUSTRALIA + +00-05-19 (hex) Siemens Building Technologies AG, +000519 (base 16) Siemens Building Technologies AG, + Cerberus Division + alte Landstrasse 411 CH-8708 Maennedorf + SWITZERLAND + +00-05-1A (hex) 3Com Europe Ltd. +00051A (base 16) 3Com Europe Ltd. + 3Com Centre, Boundary Way, + Hempstead, Herts, HP2 7YU + UNITED KINGDOM + +00-05-1B (hex) Magic Control Technology Corporation +00051B (base 16) Magic Control Technology Corporation + 6F, No. 120-11 Chung Shan Rd. + Sec 3, Chung Ho Taipei + TAIWAN, REPUBLIC OF CHINA + +00-05-1C (hex) Xnet Technology Corp. +00051C (base 16) Xnet Technology Corp. + 9F-16, No. 12, Lane 609, + Sec. 5, Chung Hsin Road, San Chung City, + TAIWAN, REPUBLIC OF CHINA + +00-05-1D (hex) Airocon, Inc. +00051D (base 16) Airocon, Inc. + 116 Houghton Lane + Boxboro MA 01719 + UNITED STATES + +00-05-1E (hex) Brocade Communications Systems, Inc. +00051E (base 16) Brocade Communications Systems, Inc. + 1745 Technology Drive + San Jose CA 95110 + UNITED STATES + +00-05-1F (hex) Taijin Media Co., Ltd. +00051F (base 16) Taijin Media Co., Ltd. + 640-8 Tungchon-Dong + Kangseo-Gu, + Seoul 157-030 + KOREA, REPUBLIC OF + +00-05-20 (hex) Smartronix, Inc. +000520 (base 16) Smartronix, Inc. + 22685 Three Notch Rd. + California MD 20619 + UNITED STATES + +00-05-21 (hex) Control Microsystems +000521 (base 16) Control Microsystems + 28 Steacie Drive + Ottawa, Ontario + K2K 2A9 + CANADA + +00-05-22 (hex) LEA*D Corporation, Inc. +000522 (base 16) LEA*D Corporation, Inc. + Advatech Bldg. + Teradion Ind. Park D.N. Misgav, 20179 + ISRAEL + +00-05-23 (hex) AVL List GmbH +000523 (base 16) AVL List GmbH + Hans List Platz 1 + A-8020 Graz + AUSTRIA + +00-05-24 (hex) BTL System (HK) Limited +000524 (base 16) BTL System (HK) Limited + 14/F., Blk. B, Vita Tower, + 29 Wong Chuk Hang Rd., + Aberdeen + HONG KONG + +00-05-25 (hex) Puretek Industrial Co., Ltd. +000525 (base 16) Puretek Industrial Co., Ltd. + No. 14, 4 Flr. Lane 235 + Pao Chiao Road Hsin Tien, Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-05-26 (hex) IPAS GmbH +000526 (base 16) IPAS GmbH + Grabenstr. 149a + 47057 Duisburg + GERMANY + +00-05-27 (hex) SJ Tek Co. Ltd +000527 (base 16) SJ Tek Co. Ltd + Ho gae Dong 976-5, Dong An Ku, + An yang City, Kyung Kee Do, + KOREA, REPUBLIC OF + +00-05-28 (hex) New Focus, Inc. +000528 (base 16) New Focus, Inc. + 2630 Walsh Ave. + Santa Clara CA 95051 + UNITED STATES + +00-05-29 (hex) Shanghai Broadan Communication Technology Co., Ltd +000529 (base 16) Shanghai Broadan Communication Technology Co., Ltd + 15F, Suntime International Mansion + No. 450 Fushan Road, Pudong District, Sh + 200122 + CHINA + +00-05-2A (hex) Ikegami Tsushinki Co., Ltd. +00052A (base 16) Ikegami Tsushinki Co., Ltd. + 5-6-16 Ikegami Ohta-ku, + Tokyo + 146-8567 + JAPAN + +00-05-2B (hex) HORIBA, Ltd. +00052B (base 16) HORIBA, Ltd. + 2 Miyanohigashi, Kisshoin, + Minami-ku, Kyoto + 601-8510 + JAPAN + +00-05-2C (hex) Supreme Magic Corporation +00052C (base 16) Supreme Magic Corporation + Sun Towers Center Bldg., 13F + 2-11-22, Sangen-jaya, Setagaya-ku, Tokyo + 154-0024 + JAPAN + +00-05-2D (hex) Zoltrix International Limited +00052D (base 16) Zoltrix International Limited + Room 701 Po Hing Centre, + 18 Wan Chiu Road, Kowloon, + HONG KONG + +00-05-2E (hex) Cinta Networks +00052E (base 16) Cinta Networks + 3010 North First Street + San Jose CA 95134 + UNITED STATES + +00-05-2F (hex) Leviton Voice and Data +00052F (base 16) Leviton Voice and Data + 2222 222nd Street S.E. + Bothell WA 98021 + UNITED STATES + +00-05-30 (hex) Andiamo Systems, Inc. +000530 (base 16) Andiamo Systems, Inc. + 14171 Teerlink Way + Saratoga CA 95070 + UNITED STATES + +00-05-31 (hex) Cisco Systems, Inc. +000531 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-32 (hex) Cisco Systems, Inc. +000532 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-33 (hex) Brocade Communications Systems, Inc. +000533 (base 16) Brocade Communications Systems, Inc. + 1745 Technology Dr. + San Jose CA 95110 + UNITED STATES + +00-05-34 (hex) Northstar Engineering Ltd. +000534 (base 16) Northstar Engineering Ltd. + P.O. Box 40 + Henley-on-Thames Oxon RG9 6AE + UNITED KINGDOM + +00-05-35 (hex) Chip PC Ltd. +000535 (base 16) Chip PC Ltd. + 20 A.L. Motzkin St. + Topaz House, Nahum Hat 5 , P.O. Box 4 + Tirat Carmel 39100 + ISRAEL + +00-05-36 (hex) Danam Communications, Inc. +000536 (base 16) Danam Communications, Inc. + 900-3, Hokye-dong, Dongan-gu, + Anyang, Kyungki-do, 431-082, + KOREA, REPUBLIC OF + +00-05-37 (hex) Nets Technology Co., Ltd. +000537 (base 16) Nets Technology Co., Ltd. + #B1 YungJun Bldg. + 154-10 Sansung-Dong Kangnam-Gu + Seoul 135-090 135-090 + KOREA, REPUBLIC OF + +00-05-38 (hex) Merilus, Inc. +000538 (base 16) Merilus, Inc. + #307-46165 Yale Road + Chiliwack, BC + V2P 2P2 + CANADA + +00-05-39 (hex) A Brand New World in Sweden AB +000539 (base 16) A Brand New World in Sweden AB + Box 1223 + SE-164 28 KISTA + SWEDEN + +00-05-3A (hex) Willowglen Services Pte Ltd +00053A (base 16) Willowglen Services Pte Ltd + 151 Lorong Chuan, + New Tech Park #05-07, + 556741 + SINGAPORE + +00-05-3B (hex) Harbour Networks Ltd., Co. Beijing +00053B (base 16) Harbour Networks Ltd., Co. Beijing + 13/F, JiuLing Building, No. 21, + XiSanHuan North Rd., Beijing + 100089 + CHINA + +00-05-3C (hex) Xircom +00053C (base 16) Xircom + 2300 Corporate Center Dr. + Thousand Oaks CA 91320 + UNITED STATES + +00-05-3D (hex) Agere Systems +00053D (base 16) Agere Systems + 1371 McCarthy Blvd. + Milpitas CA 95035 + UNITED STATES + +00-05-3E (hex) KID Systeme GmbH +00053E (base 16) KID Systeme GmbH + Luneburger Schanze 30 + 21614 Buxtehude + GERMANY + +00-05-3F (hex) VisionTek, Inc. +00053F (base 16) VisionTek, Inc. + 1175 Lakeside Dr. + Gurnee IL 60031 + UNITED STATES + +00-05-40 (hex) FAST Corporation +000540 (base 16) FAST Corporation + 2791-5 Shimo-Tsuruma + Yamato Kanagawa + 242-0001 + JAPAN + +00-05-41 (hex) Advanced Systems Co., Ltd. +000541 (base 16) Advanced Systems Co., Ltd. + 2-9-7 Nishikicho, + Tachikawa-shi, Tokyo + 190-0022 + JAPAN + +00-05-42 (hex) Otari, Inc. +000542 (base 16) Otari, Inc. + 4-33-3 Kokuryo-cho, + Chofu-shi, Tokyo 182-0022, + JAPAN + +00-05-43 (hex) IQ Wireless GmbH +000543 (base 16) IQ Wireless GmbH + Carl-Scheele-Str. 14 + D-12489 Berlin + GERMANY + +00-05-44 (hex) Valley Technologies, Inc. +000544 (base 16) Valley Technologies, Inc. + 1006 West College Ave. + Suite 200 + State College PA 16801 + UNITED STATES + +00-05-45 (hex) Internet Photonics +000545 (base 16) Internet Photonics + 1030 Broad St., 2nd Floor + Shrewsbury NJ 07702 + UNITED STATES + +00-05-46 (hex) KDDI Network & Solultions Inc. +000546 (base 16) KDDI Network & Solultions Inc. + 2-3-1, Nishishinjunku-ku, + Tokyo 163-0907 + JAPAN + +00-05-47 (hex) Starent Networks +000547 (base 16) Starent Networks + 30 International Place + Tewksbury MA 01876 + UNITED STATES + +00-05-48 (hex) Disco Corporation +000548 (base 16) Disco Corporation + 13-11 Omori-Kita 2-chome + Ota-ku Tokyo 143-8580 + JAPAN + +00-05-49 (hex) Salira Optical Network Systems +000549 (base 16) Salira Optical Network Systems + 2694 Orchard Parkway + San Jose CA 95134 + UNITED STATES + +00-05-4A (hex) Ario Data Networks, Inc. +00054A (base 16) Ario Data Networks, Inc. + 2890 Zanker Road, Suite 203 + San Jose CA 95134 + UNITED STATES + +00-05-4B (hex) Micro Innovation AG +00054B (base 16) Micro Innovation AG + Spinnereistrasse 8 + 9008 St.Gallen + SWITZERLAND + +00-05-4C (hex) RF Innovations Pty Ltd +00054C (base 16) RF Innovations Pty Ltd + 22 Boulder Road + Malaga 6090 + AUSTRALIA + +00-05-4D (hex) Brans Technologies, Inc. +00054D (base 16) Brans Technologies, Inc. + 501 Boramae Academy Tower + 395-69 Shinaebang-Dong Tongjak-Gu Seoul + KOREA, REPUBLIC OF + +00-05-4E (hex) Philips Components +00054E (base 16) Philips Components + 1000 West Maude Avenue + Sunnyvale CA 94085-2810 + UNITED STATES + +00-05-4F (hex) PRIVATE +00054F (base 16) + +00-05-50 (hex) Vcomms Limited +000550 (base 16) Vcomms Limited + 75 The Esplanade, Level 3 + PO Box 38-920 + Wellington Mail Centre 5045 Wellington + NEW ZEALAND + +00-05-51 (hex) F & S Elektronik Systeme GmbH +000551 (base 16) F & S Elektronik Systeme GmbH + Untere Waldplaetze 23 + D-70569 Stuttgart + GERMANY + +00-05-52 (hex) Xycotec Computer GmbH +000552 (base 16) Xycotec Computer GmbH + Karl-Heinz-Beckurts-Str. 4 + D-52428 Julich + GERMANY + +00-05-53 (hex) DVC Company, Inc. +000553 (base 16) DVC Company, Inc. + 10200 Hwy 290 W. + Austin TX 78236 + UNITED STATES + +00-05-54 (hex) Rangestar Wireless +000554 (base 16) Rangestar Wireless + 9565 Soquel Drive, Suite 100 + Aptos CA 95003 + UNITED STATES + +00-05-55 (hex) Japan Cash Machine Co., Ltd. +000555 (base 16) Japan Cash Machine Co., Ltd. + No. 3-15, 2-chome, Nishiwaki, + Hirano-ku, Osaka + 547-0035 + JAPAN + +00-05-56 (hex) 360 Systems +000556 (base 16) 360 Systems + 31355 Agoura Road + Westlake Village CA 91361 + UNITED STATES + +00-05-57 (hex) Agile TV Corporation +000557 (base 16) Agile TV Corporation + 333 Ravenswood Ave., + Building 202 + Menlo Park CA 94025 + UNITED STATES + +00-05-58 (hex) Synchronous, Inc. +000558 (base 16) Synchronous, Inc. + 77 Las Colinas Lane + San Jose CA 95119 + UNITED STATES + +00-05-59 (hex) Intracom S.A. +000559 (base 16) Intracom S.A. + 19 5 KM Markopoulou Ave. + 19002 Peania + Attika + GREECE + +00-05-5A (hex) Power Dsine Ltd. +00055A (base 16) Power Dsine Ltd. + 1 Hanagar St., P.O. Box 7220 + Neve Ne'eman Industrial Zone Hod Hasharo + ISRAEL + +00-05-5B (hex) Charles Industries, Ltd. +00055B (base 16) Charles Industries, Ltd. + 5600 Apollo Dr. + Rolling Meadows IL 60008 + UNITED STATES + +00-05-5C (hex) Kowa Company, Ltd. +00055C (base 16) Kowa Company, Ltd. + Chofugaoka 3-3-1, + Chofu-si, Tokyo, + 182-0021 + JAPAN + +00-05-5D (hex) D-Link Systems, Inc. +00055D (base 16) D-Link Systems, Inc. + 53 Discovery Dr. + Irvine CA 92618 + UNITED STATES + +00-05-5E (hex) Cisco Systems, Inc. +00055E (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-5F (hex) Cisco Systems, Inc. +00055F (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-60 (hex) LEADER COMM.CO., LTD +000560 (base 16) LEADER COMM.CO., LTD + 234, Komae-ri, Kiheung-eup, + Youngsin-si, Kyungki-do, + 449-900 + KOREA, REPUBLIC OF + +00-05-61 (hex) nac Image Technology, Inc. +000561 (base 16) nac Image Technology, Inc. + 8-7 Sanban-cho, Chiyoda-ku, + Tokyo, 102-0075 + JAPAN + +00-05-62 (hex) Digital View Limited +000562 (base 16) Digital View Limited + 2201 Nan Yang Plaza, + 57 Hungto Road, Kwun Tong, + Kowloon + HONG KONG + +00-05-63 (hex) J-Works, Inc. +000563 (base 16) J-Works, Inc. + 12328 Gladstone St. #1 + Sylmor CA 91342 + UNITED STATES + +00-05-64 (hex) Tsinghua Bitway Co., Ltd. +000564 (base 16) Tsinghua Bitway Co., Ltd. + 12 Floor, Tower C, Corporate + Square, No. 35, Financial Street, Xichen + CHINA + +00-05-65 (hex) Tailyn Communication Company Ltd. +000565 (base 16) Tailyn Communication Company Ltd. + No. 62, Lane 205, Nan-San Road, + Sec. 2, Lu-Chu Hsiang, + Taoyuan Hsien + TAIWAN, REPUBLIC OF CHINA + +00-05-66 (hex) Secui.com Corporation +000566 (base 16) Secui.com Corporation + 17th Fl. Samsung Yeoksam Bldg. + 647-9, Yeoksam-dong, Kangnam-gu + Seoul 135-080 + KOREA, REPUBLIC OF + +00-05-67 (hex) Etymonic Design, Inc. +000567 (base 16) Etymonic Design, Inc. + 41 Byron Avenue + Dorchester, Ontario, + NOL 1GO + CANADA + +00-05-68 (hex) Piltofish Networks AB +000568 (base 16) Piltofish Networks AB + Stora Badhusgatan 18-20 + S-41121 Goteborg + SWEDEN + +00-05-69 (hex) VMWARE, Inc. +000569 (base 16) VMWARE, Inc. + 3145 Porter Dr., Bldg. F + Palo Alto CA 94304 + UNITED STATES + +00-05-6A (hex) Heuft Systemtechnik GmbH +00056A (base 16) Heuft Systemtechnik GmbH + Brohltalstr 31-33 + 56659 Burgbrohl + Deutschland + GERMANY + +00-05-6B (hex) C.P. Technology Co., Ltd. +00056B (base 16) C.P. Technology Co., Ltd. + 12F, No. 86, Hsin Tai Wu Rd., + Sec. 1, Hsi-Chih, Taipei Hsien, + 221 + TAIWAN, REPUBLIC OF CHINA + +00-05-6C (hex) Hung Chang Co., Ltd. +00056C (base 16) Hung Chang Co., Ltd. + 1385-14, Juan-Dong, + Nam-ku, Inchom, 402-200 + KOREA, REPUBLIC OF + +00-05-6D (hex) Pacific Corporation +00056D (base 16) Pacific Corporation + 2-23-3 Ebisu-Minami Shibuya + Tokyo 150-0022 + JAPAN + +00-05-6E (hex) National Enhance Technology, Inc. +00056E (base 16) National Enhance Technology, Inc. + 2F, No. 196-3, Tatung Rd., Sec. 3, + Hsi Chih, Taipei Hsien, + TAIWAN, REPUBLIC OF CHINA + +00-05-6F (hex) Innomedia Technologies Pvt. Ltd. +00056F (base 16) Innomedia Technologies Pvt. Ltd. + #3278, 12th Main Road + HAL 2nd Stage Bangalore - 560 008 + INDIA + +00-05-70 (hex) Baydel Ltd. +000570 (base 16) Baydel Ltd. + Baydel House + Brook Way Leatherhead, Surrey KT22 7NA + UNITED KINGDOM + +00-05-71 (hex) Seiwa Electronics Co. +000571 (base 16) Seiwa Electronics Co. + 757 Amabouki, Kukizaki-Machi + Inashiki-Gun, Ibaraki-Ken + 300-1253 + JAPAN + +00-05-72 (hex) Deonet Co., Ltd. +000572 (base 16) Deonet Co., Ltd. + #127-5 Jinyoung B/D 3th F, + NonIyun-Dong, KangNam-Gu, + Seoul + KOREA, REPUBLIC OF + +00-05-73 (hex) Cisco Systems, Inc. +000573 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-74 (hex) Cisco Systems, Inc. +000574 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-75 (hex) CDS-Electronics BV +000575 (base 16) CDS-Electronics BV + Mozart laan 330 + 3144 NH Maassluis + NETHERLANDS + +00-05-76 (hex) NSM Technology Ltd. +000576 (base 16) NSM Technology Ltd. + 22 Floor, Times Tower + 928 Cheung Sha Wan Road + Koloon + HONG KONG + +00-05-77 (hex) SM Information & Communication +000577 (base 16) SM Information & Communication + 330-1 Yangjaedong + Seoucho-Gu, Seoul + 137-130 + KOREA, REPUBLIC OF + +00-05-78 (hex) PRIVATE +000578 (base 16) + +00-05-79 (hex) Universal Control Solution Corp. +000579 (base 16) Universal Control Solution Corp. + 12843 Foothill Blvd. + Unit #d + Sylmar CA 91342 + UNITED STATES + +00-05-7A (hex) Hatteras Networks +00057A (base 16) Hatteras Networks + P.O. Box Box 110025 + Research Triangle Park NC 27709-0025 + UNITED STATES + +00-05-7B (hex) Chung Nam Electronic Co., Ltd. +00057B (base 16) Chung Nam Electronic Co., Ltd. + Unit 3, 1/F, Festigood Centre + No. 8 Lok Yip Road, On Lok + Tsuen Fanling, + HONG KONG + +00-05-7C (hex) RCO Security AB +00057C (base 16) RCO Security AB + Box 705 + SE 176 27 Jarfalla + SWEDEN + +00-05-7D (hex) Sun Communications, Inc. +00057D (base 16) Sun Communications, Inc. + Gloria Bldg 6th + 1-3 Ageba-Cho Shinjuku-ku + Tokyo 162-082 + JAPAN + +00-05-7E (hex) Eckelmann Steuerungstechnik GmbH +00057E (base 16) Eckelmann Steuerungstechnik GmbH + Berliner Strasse 161 + 65205 Wiesbaden + GERMANY + +00-05-7F (hex) Acqis Technology +00057F (base 16) Acqis Technology + 1621 West El Camino Real + Mt. View CA 94040 + UNITED STATES + +00-05-80 (hex) Fibrolan Ltd. +000580 (base 16) Fibrolan Ltd. + 6 Hayetzira Street + Yokneam Illit 20692 + ISRAEL + +00-05-81 (hex) Snell & Wilcox Ltd. +000581 (base 16) Snell & Wilcox Ltd. + Southleigh Park House + Eastleigh Road, Havant + Hampshire P09 2PE + UNITED KINGDOM + +00-05-82 (hex) ClearCube Technology +000582 (base 16) ClearCube Technology + 8834 Capital of Texas Hwy, + Suite 140 + Austin TX 78759 + UNITED STATES + +00-05-83 (hex) ImageCom Limited +000583 (base 16) ImageCom Limited + Cedars Park, Cedars Road, + Maidenhead, Berkshire, + SL6 1RZ + UNITED KINGDOM + +00-05-84 (hex) AbsoluteValue Systems, Inc. +000584 (base 16) AbsoluteValue Systems, Inc. + 715-D North Dr. + Melbourne FL 32934 + UNITED STATES + +00-05-85 (hex) Juniper Networks, Inc. +000585 (base 16) Juniper Networks, Inc. + 1194 N. Mathilda Avenue + Sunnyvale CA 94089 + UNITED STATES + +00-05-86 (hex) Lucent Technologies +000586 (base 16) Lucent Technologies + 1701 Harbor Bay Parkway + Alameda CA 94502 + UNITED STATES + +00-05-87 (hex) Locus, Incorporated +000587 (base 16) Locus, Incorporated + 5540 Research Park Drive + Fitchburg Center + Madison WI 53711 + UNITED STATES + +00-05-88 (hex) Sensoria Corp. +000588 (base 16) Sensoria Corp. + 15950 Bernardo Ctr. Dr. + Suite J + San Diego CA 92127 + UNITED STATES + +00-05-89 (hex) National Datacomputer +000589 (base 16) National Datacomputer + 900 Middlesex Tpk. + Billerica MA 01821 + UNITED STATES + +00-05-8A (hex) Netcom Co., Ltd. +00058A (base 16) Netcom Co., Ltd. + 1F, No. 7, Lane 242, + Hu Liin Street + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-05-8B (hex) IPmental, Inc. +00058B (base 16) IPmental, Inc. + 8F-9, No. 35, Hsin Tai Rd. + Juibei, Hsinchu + TAIWAN, REPUBLIC OF CHINA + +00-05-8C (hex) Opentech Inc. +00058C (base 16) Opentech Inc. + 6F, DongWon Bldg., 275 + Youngjae-Dong, Seocho-Gu, + Seoul 137-130 + KOREA, REPUBLIC OF + +00-05-8D (hex) Lynx Photonic Networks, Inc. +00058D (base 16) Lynx Photonic Networks, Inc. + 13 Hamelaha St. + Rosh-Heayn + ISRAEL + +00-05-8E (hex) Flextronics International GmbH & Co. Nfg. KG +00058E (base 16) Flextronics International GmbH & Co. Nfg. KG + Schrackgasse 9-15 + Kindberg 8650 + AUSTRIA + +00-05-8F (hex) CLCsoft co. +00058F (base 16) CLCsoft co. + Dept. of Electrical Engineering + KAIST, 373-1 Kuseong-dong, Yuseong-gu, D + KOREA, REPUBLIC OF + +00-05-90 (hex) Swissvoice Ltd. +000590 (base 16) Swissvoice Ltd. + Ziegelmattstrasse 1 + 4503 Solothurn + SWITZERLAND + +00-05-91 (hex) Active Silicon Ltd. +000591 (base 16) Active Silicon Ltd. + Brunnel Science Park + Kingston Lane, Uxbridge, + Middx UB8 3PQ + UNITED KINGDOM + +00-05-92 (hex) Pultek Corp. +000592 (base 16) Pultek Corp. + 74-1, Yamashita-cho, + Naka-ku, Tokohama-city, + 231-0023 + JAPAN + +00-05-93 (hex) Grammar Engine Inc. +000593 (base 16) Grammar Engine Inc. + 921 Eastwind Drive + Suite 122 + Westerville OH 43081 + UNITED STATES + +00-05-94 (hex) IXXAT Automation GmbH +000594 (base 16) IXXAT Automation GmbH + Leibnizstrasse 15 + 88250 Weingarten + GERMANY + +00-05-95 (hex) Alesis Corporation +000595 (base 16) Alesis Corporation + 1633 26th Street + Santa Monica CA 90404 + UNITED STATES + +00-05-96 (hex) Genotech Co., Ltd. +000596 (base 16) Genotech Co., Ltd. + #308 Gunkook Bldg., + 288-1 Doksan-Dong + Gumchon-Gu Seoul + KOREA, REPUBLIC OF + +00-05-97 (hex) Eagle Traffic Control Systems +000597 (base 16) Eagle Traffic Control Systems + 8004 Cameron Road + Austin TX 78754 + UNITED STATES + +00-05-98 (hex) CRONOS S.r.l. +000598 (base 16) CRONOS S.r.l. + Via cavour 58/A + 23900 LECCO (LC) + ITALY + +00-05-99 (hex) DRS Test and Energy Management or DRS-TEM +000599 (base 16) DRS Test and Energy Management or DRS-TEM + 110 Wynn Drive + Huntsville AL 35805 + UNITED STATES + +00-05-9A (hex) Cisco Systems, Inc. +00059A (base 16) Cisco Systems, Inc. + 170 West Tasman Drive + San Jose CA 95134 + UNITED STATES + +00-05-9B (hex) Cisco Systems, Inc. +00059B (base 16) Cisco Systems, Inc. + 170 West Tasman Drive + San Jose CA 95134 + UNITED STATES + +00-05-9C (hex) Kleinknecht GmbH, Ing. Buero +00059C (base 16) Kleinknecht GmbH, Ing. Buero + Bachstrasse 30 + D-82541 Muensing + GERMANY + +00-05-9D (hex) Daniel Computing Systems, Inc. +00059D (base 16) Daniel Computing Systems, Inc. + 3208 8th Avenue NE #118 + Calgary Alberta + T2A 7V8 + CANADA + +00-05-9E (hex) Zinwell Corporation +00059E (base 16) Zinwell Corporation + 7F, No.512, Yuan-Shan Road + Chang-ho city Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-05-9F (hex) Yotta Networks, Inc. +00059F (base 16) Yotta Networks, Inc. + 2201 Avenue K + Plano TX 75074 + UNITED STATES + +00-05-A0 (hex) MOBILINE Kft. +0005A0 (base 16) MOBILINE Kft. + Lehel Utca 14 + BUDAPEST + H-1134 + HUNGARY + +00-05-A1 (hex) Zenocom +0005A1 (base 16) Zenocom + No.402, 4th floor, Wongok Bldg. + 830-38, Yoksam-Dong, Gangnam-Gu + Seoul + KOREA, REPUBLIC OF + +00-05-A2 (hex) CELOX Networks +0005A2 (base 16) CELOX Networks + 940 West Port Plaza - Ste. #300 + St. Louis MO 63146 + UNITED STATES + +00-05-A3 (hex) QEI, Inc. +0005A3 (base 16) QEI, Inc. + 60 Fadem Road + Springfield NJ 07081 + UNITED STATES + +00-05-A4 (hex) Lucid Voice Ltd. +0005A4 (base 16) Lucid Voice Ltd. + 5 Jabotinski Street + Ramat-Gan, 52520 + ISRAEL + +00-05-A5 (hex) KOTT +0005A5 (base 16) KOTT + Suite 305 Daeha B/D + 680 Yeoksam-Dong, KangNam-Gu Seoul + 135-080 + KOREA, REPUBLIC OF + +00-05-A6 (hex) Extron Electronics +0005A6 (base 16) Extron Electronics + 1230 S. Lewis + Anahiem CA 92805 + UNITED STATES + +00-05-A7 (hex) Hyperchip, Inc. +0005A7 (base 16) Hyperchip, Inc. + 180 Peel Street - Ste. #333 + Montreal, Quebec + H3C 2G7 + CANADA + +00-05-A8 (hex) WYLE ELECTRONICS +0005A8 (base 16) WYLE ELECTRONICS + 3000 BOWERS AVENUE + SANTA CLARA CA 95051-0919 + UNITED STATES + +00-05-A9 (hex) Princeton Networks, Inc. +0005A9 (base 16) Princeton Networks, Inc. + 100 Century Center Ct. #100 + San Jose CA 95112 + UNITED STATES + +00-05-AA (hex) Moore Industries International Inc. +0005AA (base 16) Moore Industries International Inc. + 16650 Schoenborn St. + North Hills CA 91343 + UNITED STATES + +00-05-AB (hex) Cyber Fone, Inc. +0005AB (base 16) Cyber Fone, Inc. + 989 Old Eagle School Road + Suite 800 + Wayne PA 19087 + UNITED STATES + +00-05-AC (hex) Northern Digital, Inc. +0005AC (base 16) Northern Digital, Inc. + 103 Randall Drive + Waterloo Ontario N2V 1C5 + CANADA + +00-05-AD (hex) Topspin Communications, Inc. +0005AD (base 16) Topspin Communications, Inc. + 515 Ellis Street + Mountain View CA 94043 + UNITED STATES + +00-05-AE (hex) Mediaport USA +0005AE (base 16) Mediaport USA + 17151 Newhope Ave. #202 + Fountain Valley CA 92708 + UNITED STATES + +00-05-AF (hex) InnoScan Computing A/S +0005AF (base 16) InnoScan Computing A/S + Soren Frichsvej 42R + DK-8230 Aabyhoj + DENMARK + +00-05-B0 (hex) Korea Computer Technology Co., Ltd. +0005B0 (base 16) Korea Computer Technology Co., Ltd. + KCT Bldg, 111-3 Yangjae-Dong, + Seocho-Gu, Seoul + KOREA, REPUBLIC OF + +00-05-B1 (hex) ASB Technology BV +0005B1 (base 16) ASB Technology BV + De Ronde 15A + 5683 CZ Best + NETHERLANDS + +00-05-B2 (hex) Medison Co., Ltd. +0005B2 (base 16) Medison Co., Ltd. + 997-4, Saechi-Dong, + Kangnam-ku, Souel, + 135-280 + KOREA, REPUBLIC OF + +00-05-B3 (hex) Asahi-Engineering Co., Ltd. +0005B3 (base 16) Asahi-Engineering Co., Ltd. + 3-6-12-2 Gakuenhigashi-cho + Kodaira-shi + Tokyo 187-0043 + JAPAN + +00-05-B4 (hex) Aceex Corporation +0005B4 (base 16) Aceex Corporation + 2F, No. 2, Alley 1, Sze-Wei Lane + Chung-Cheng Rd., Hsintien, Taipei + 23138 + TAIWAN, REPUBLIC OF CHINA + +00-05-B5 (hex) Broadcom Technologies +0005B5 (base 16) Broadcom Technologies + 137-060 + 858-31 Yujeong BLD, Bangbae-Dong + Secho-Gu Seoul, + KOREA, REPUBLIC OF + +00-05-B6 (hex) INSYS Microelectronics GmbH +0005B6 (base 16) INSYS Microelectronics GmbH + Waffnergasse 8 + 93047 Regensburg + GERMANY + +00-05-B7 (hex) Arbor Technology Corp. +0005B7 (base 16) Arbor Technology Corp. + 5F, No. 738, Zhong Zheng Rd., + Zhong Ho 235, Taipei, + TAIWAN, REPUBLIC OF CHINA + +00-05-B8 (hex) Electronic Design Associates, Inc. +0005B8 (base 16) Electronic Design Associates, Inc. + 331 Arcado Rd. NW + Suite C-1 + Lilburn GA 30047-2841 + UNITED STATES + +00-05-B9 (hex) Airvana, Inc. +0005B9 (base 16) Airvana, Inc. + 25 Industrial Ave. + Chlemsford MA 01824 + UNITED STATES + +00-05-BA (hex) Area Netwoeks, Inc. +0005BA (base 16) Area Netwoeks, Inc. + 1148 Euclid Ave., Suite 400 + Cleveland OH 4415 + UNITED STATES + +00-05-BB (hex) Myspace AB +0005BB (base 16) Myspace AB + Sveavagen 33 + SE-11134 Stockholm + SWEDEN + +00-05-BC (hex) Resorsys Ltd. +0005BC (base 16) Resorsys Ltd. + 80 Johnsdone Avenue, + Hilington, Glasgow, + Scotland G52 4LT + UNITED KINGDOM + +00-05-BD (hex) ROAX BV +0005BD (base 16) ROAX BV + Sterrenbergweg 29 + NL-3769 BS SOESTERBERG + NETHERLANDS + +00-05-BE (hex) Kongsberg Seatex AS +0005BE (base 16) Kongsberg Seatex AS + Pirsenteret + N-7562 Trondheim + NORWAY + +00-05-BF (hex) JustEzy Technology, Inc. +0005BF (base 16) JustEzy Technology, Inc. + 5F, No. 324, Sec. 1, Junghua Rd. + Hsinchu + TAIWAN, REPUBLIC OF CHINA + +00-05-C0 (hex) Digital Network Alacarte Co., Ltd. +0005C0 (base 16) Digital Network Alacarte Co., Ltd. + A104, Seoul Business Incubator + 647-26, DeungChun-Dong, Kangseo-Gu + Seoul 157-030, + KOREA, REPUBLIC OF + +00-05-C1 (hex) A-Kyung Motion, Inc. +0005C1 (base 16) A-Kyung Motion, Inc. + 54-10, Munjung-Dong + Songpa-Ku, + Seoul + KOREA, REPUBLIC OF + +00-05-C2 (hex) Soronti, Inc. +0005C2 (base 16) Soronti, Inc. + 12257 South Business Park Drive + #160 + Draper Utah 84020 + UNITED STATES + +00-05-C3 (hex) Pacific Instruments, Inc. +0005C3 (base 16) Pacific Instruments, Inc. + 4080 Pike Lane + Concord CA 94520 + UNITED STATES + +00-05-C4 (hex) Telect, Inc. +0005C4 (base 16) Telect, Inc. + 2111 N. Molter Road + Liberty Lake WA 99019 + UNITED STATES + +00-05-C5 (hex) Flaga HF +0005C5 (base 16) Flaga HF + Vesturhlid 7 + IS-105 Reykjavik + ICELAND + +00-05-C6 (hex) Triz Communications +0005C6 (base 16) Triz Communications + Anwon Bldg. 7th Fl. + 14-15 Yoido-Dong Youngdeungpo-Gu + Seoul 150-010 + KOREA, REPUBLIC OF + +00-05-C7 (hex) I/F-COM A/S +0005C7 (base 16) I/F-COM A/S + Ellegaardvej 36 + 6400 Soenderborg + DENMARK + +00-05-C8 (hex) VERYTECH +0005C8 (base 16) VERYTECH + #402, Jang Young Shil Kwan, + Venture Town, 1688-5 Shinil-Dong, Daedeo + KOREA, REPUBLIC OF + +00-05-C9 (hex) LG Innotek Co., Ltd. +0005C9 (base 16) LG Innotek Co., Ltd. + LG Component R&D Center + 1271, Sa-Dong, Sangrok-gu + Ansan-si Gyeonggi-do 426-791 + KOREA, REPUBLIC OF + +00-05-CA (hex) Hitron Technology, Inc. +0005CA (base 16) Hitron Technology, Inc. + HSINCHU SBIP SUBSIDIARY + No. 25 R&D 1st Rd. Science-Based Industr + Hsin-chu + TAIWAN, REPUBLIC OF CHINA + +00-05-CB (hex) ROIS Technologies, Inc. +0005CB (base 16) ROIS Technologies, Inc. + 6th F Changhyun B/D, 960-1 + Hogye-Dong Dongan-Ku Anyang, + 431-080 + KOREA, REPUBLIC OF + +00-05-CC (hex) Sumtel Communications, Inc. +0005CC (base 16) Sumtel Communications, Inc. + 1F, No. 173, Gung Yuan Road, + Hsinchu City 30054 + TAIWAN, REPUBLIC OF CHINA + +00-05-CD (hex) Denon, Ltd. +0005CD (base 16) Denon, Ltd. + 35-1, Sagamiono 7-chome, + Sagamihara-shi + Kanagawa 228-8505 + JAPAN + +00-05-CE (hex) Prolink Microsystems Corporation +0005CE (base 16) Prolink Microsystems Corporation + 6F, No. 349, Yang-Kuang St. + Nei-Hu Taipei, + TAIWAN, REPUBLIC OF CHINA + +00-05-CF (hex) Thunder River Technologies, Inc. +0005CF (base 16) Thunder River Technologies, Inc. + 23 Corporate Plaza, Suite 250 + Newport Beach CA 92660 + UNITED STATES + +00-05-D0 (hex) Solinet Systems +0005D0 (base 16) Solinet Systems + 1200-180 Elgin St. + Ottawa Ontario + K2P 2K3 + CANADA + +00-05-D1 (hex) Metavector Technologies +0005D1 (base 16) Metavector Technologies + Steenweg Op Gierle, 100 + B-2300 Turnhout, + BELGIUM + +00-05-D2 (hex) DAP Technologies +0005D2 (base 16) DAP Technologies + 955 Fernand Dufour, + Ville De Vanier, Quebec, + G1M 3B2 + CANADA + +00-05-D3 (hex) eProduction Solutions, Inc. +0005D3 (base 16) eProduction Solutions, Inc. + 22001 North Park Drive + Kingwood TX 77339-3804 + UNITED STATES + +00-05-D4 (hex) FutureSmart Networks, Inc. +0005D4 (base 16) FutureSmart Networks, Inc. + 6155 Almaden Expressway + Suite 100 + San Jose CA 95120 + UNITED STATES + +00-05-D5 (hex) Speedcom Wireless +0005D5 (base 16) Speedcom Wireless + 7020 Professional Pkwy East + Sarasota FL 34240-8514 + UNITED STATES + +00-05-D6 (hex) Titan Wireless +0005D6 (base 16) Titan Wireless + 3033 Science Park Road + San Diego CA 92121 + UNITED STATES + +00-05-D7 (hex) Vista Imaging, Inc. +0005D7 (base 16) Vista Imaging, Inc. + 521 Taylor Way + San Carlos CA 94070 + UNITED STATES + +00-05-D8 (hex) Arescom, Inc. +0005D8 (base 16) Arescom, Inc. + 3541 Gateway Blvd. + Fremont CA 94538 + UNITED STATES + +00-05-D9 (hex) Techno Valley, Inc. +0005D9 (base 16) Techno Valley, Inc. + ASIC Venture Town 5F, + 1330-3 Seocho2-Dong, Seocho-Ku, + Seoul 135-072 + KOREA, REPUBLIC OF + +00-05-DA (hex) Apex Automationstechnik +0005DA (base 16) Apex Automationstechnik + Vossenkamp 4 + D-38104 Braunschweig + GERMANY + +00-05-DB (hex) NENTEC Netzwerktechnologie GmbH +0005DB (base 16) NENTEC Netzwerktechnologie GmbH + Greschbachstrasse 12 + Karlsruhe 76229 + GERMANY + +00-05-DC (hex) Cisco Systems, Inc. +0005DC (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-DD (hex) Cisco Systems, Inc. +0005DD (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-05-DE (hex) Gi Fone Korea, Inc. +0005DE (base 16) Gi Fone Korea, Inc. + Twin Bldg. 4th Fl, + 902-124 Togok-dong, Kangnam-gu, + Seoul, + KOREA, REPUBLIC OF + +00-05-DF (hex) Electronic Innovation, Inc. +0005DF (base 16) Electronic Innovation, Inc. + 12731 Cannington Way SW + Calgary, AB T2W 1Z7 + CANADA + +00-05-E0 (hex) Empirix Corp. +0005E0 (base 16) Empirix Corp. + 205 Lowell St. + Wilmington MA 01887 + UNITED STATES + +00-05-E1 (hex) Trellis Photonics, Ltd. +0005E1 (base 16) Trellis Photonics, Ltd. + P.O.B. 36 + Yogneam Elite, 20692 + ISRAEL + +00-05-E2 (hex) Creativ Network Technologies +0005E2 (base 16) Creativ Network Technologies + 1755 St. Regis Suite 240 + Dollard-des-Ormeaux + Quebec H9B-2M9 + CANADA + +00-05-E3 (hex) LightSand Communications, Inc. +0005E3 (base 16) LightSand Communications, Inc. + 375 Los Coches St. + Milpitas CA 94539 + UNITED STATES + +00-05-E4 (hex) Red Lion Controls Inc. +0005E4 (base 16) Red Lion Controls Inc. + 20 Willow Springs Circle + York PA 17402 + UNITED STATES + +00-05-E5 (hex) Renishaw PLC +0005E5 (base 16) Renishaw PLC + New Mills, Wotton-under-Edge + Gloucestershure, GL12 8JR + UNITED KINGDOM + +00-05-E6 (hex) Egenera, Inc. +0005E6 (base 16) Egenera, Inc. + 165 Forest St. + Marlboro MA 01752 + UNITED STATES + +00-05-E7 (hex) Netrake an AudioCodes Company +0005E7 (base 16) Netrake an AudioCodes Company + 3000 Technology Drive + Suite 100 + Plano TX 75074 + UNITED STATES + +00-05-E8 (hex) TurboWave, Inc. +0005E8 (base 16) TurboWave, Inc. + 555 South State + Suite 302 + Orem UT 84058 + UNITED STATES + +00-05-E9 (hex) Unicess Network, Inc. +0005E9 (base 16) Unicess Network, Inc. + 870 Dorothy Dr. #708 + Richardson TX 75081 + UNITED STATES + +00-05-EA (hex) Rednix +0005EA (base 16) Rednix + 502, Dong-A Resort Officetel + 538-8 Bongmyung-Dong Yusung, + Taejon 305-709 + KOREA, REPUBLIC OF + +00-05-EB (hex) Blue Ridge Networks, Inc. +0005EB (base 16) Blue Ridge Networks, Inc. + 14120 Parke Long Court + Suite 201 + Chantilly VA 20151 + UNITED STATES + +00-05-EC (hex) Mosaic Systems Inc. +0005EC (base 16) Mosaic Systems Inc. + 7 Campbell Park + Somerville MA 02144 + UNITED STATES + +00-05-ED (hex) Technikum Joanneum GmbH +0005ED (base 16) Technikum Joanneum GmbH + Alte Poststraße 149 + 8020 Graz + AUSTRIA + +00-05-EE (hex) BEWATOR Group +0005EE (base 16) BEWATOR Group + Bewator AB, Box 1275 + SE-17124 Solnan + SWEDEN + +00-05-EF (hex) ADOIR Digital Technology +0005EF (base 16) ADOIR Digital Technology + 28 Fl, ZhaoFeng World Trade Bldg. + 369 JiangSu Rd. + Shanghai 200050, + CHINA + +00-05-F0 (hex) SATEC +0005F0 (base 16) SATEC + P.O. Box 45022 + Jerusalem + 91450 + ISRAEL + +00-05-F1 (hex) Vrcom, Inc. +0005F1 (base 16) Vrcom, Inc. + 401, Songam Bldg, 479-1, + Bangbae 3-dong, Seocho-ku, + Seoul + KOREA, REPUBLIC OF + +00-05-F2 (hex) Power R, Inc. +0005F2 (base 16) Power R, Inc. + 756 Aloha St. + Seattle WA 98109 + UNITED STATES + +00-05-F3 (hex) Weboyn +0005F3 (base 16) Weboyn + 26 Rue Oes Gaudines + 78100 Saint-Germain + FRANCE + +00-05-F4 (hex) System Base Co., Ltd. +0005F4 (base 16) System Base Co., Ltd. + 475-22, BangBae 2 dong, + Seocho gu, Seoul, + KOREA, REPUBLIC OF + +00-05-F5 (hex) OYO Geospace +0005F5 (base 16) OYO Geospace + 7007 Pinemont + Houston TX 77040 + UNITED STATES + +00-05-F6 (hex) Young Chang Co. Ltd. +0005F6 (base 16) Young Chang Co. Ltd. + 1432 Main Street + Waltham MA 02451 + UNITED STATES + +00-05-F7 (hex) Analog Devices, Inc. +0005F7 (base 16) Analog Devices, Inc. + 804 Woburn St., MS 111 + Wilmington MA 01887 + UNITED STATES + +00-05-F8 (hex) Real Time Access, Inc. +0005F8 (base 16) Real Time Access, Inc. + 455 N. Canyons Pkwy. + Suite B + Livermore CA 94550 + UNITED STATES + +00-05-F9 (hex) TOA Corporation +0005F9 (base 16) TOA Corporation + 2-1 Takamatsu-cho, + Takarazuka-city + Hyogo 665-0043 + JAPAN + +00-05-FA (hex) IPOptical, Inc. +0005FA (base 16) IPOptical, Inc. + 45940 Horseshoe Drive + Suite 150 + Dulles VA 20166 + UNITED STATES + +00-05-FB (hex) ShareGate, Inc. +0005FB (base 16) ShareGate, Inc. + 9805 Double R Blvd. + Third Floor + Reno NV 89511-5917 + UNITED STATES + +00-05-FC (hex) Schenck Pegasus Corp. +0005FC (base 16) Schenck Pegasus Corp. + 2890 John R Road + Troy MI 48083 + UNITED STATES + +00-05-FD (hex) PacketLight Networks Ltd. +0005FD (base 16) PacketLight Networks Ltd. + 27 Habarzel St. + Ramat Hahayal + Tel-Aviv 69710 + ISRAEL + +00-05-FE (hex) Traficon N.V. +0005FE (base 16) Traficon N.V. + Bissegemsestraat 45 + B-8501 Heule + BELGIUM + +00-05-FF (hex) SNS Solutions, Inc. +0005FF (base 16) SNS Solutions, Inc. + 2nd Fl. Hill House, + 99-2 Sohyun, Bundang, Sungnam, Kyunggi, + KOREA, REPUBLIC OF + +00-06-00 (hex) Toshiba Teli Corporation +000600 (base 16) Toshiba Teli Corporation + 4-7-1 Asahigaoka, Hino-Shi, + Tokyo 191-0065 + JAPAN + +00-06-01 (hex) Otanikeiki Co., Ltd. +000601 (base 16) Otanikeiki Co., Ltd. + 2-10-23 Hikari-Machi + Higashi-Ku Hiroshima + 732-0052 + JAPAN + +00-06-02 (hex) Cirkitech Electronics Co. +000602 (base 16) Cirkitech Electronics Co. + B1-2, No. 361, Fu-Xing First Road + Guei-Shan Hsiang, + Tao-Yuan + TAIWAN, REPUBLIC OF CHINA + +00-06-03 (hex) Baker Hughes Inc. +000603 (base 16) Baker Hughes Inc. + 2001 Rankin Rd. + Houston TX 77073 + UNITED STATES + +00-06-04 (hex) @Track Communications, Inc. +000604 (base 16) @Track Communications, Inc. + 1155 Kas Dr. + Richardson TX 75081 + UNITED STATES + +00-06-05 (hex) Inncom International, Inc. +000605 (base 16) Inncom International, Inc. + P.O. Box 1060 + 83 Halls Road + Old Lyme CT 06371 + UNITED STATES + +00-06-06 (hex) RapidWAN, Inc. +000606 (base 16) RapidWAN, Inc. + 2085 Hamilton Ave. + Suite #220 + San Jose CA 95125 + UNITED STATES + +00-06-07 (hex) Omni Directional Control Technology Inc. +000607 (base 16) Omni Directional Control Technology Inc. + 8F-2, No. 94, Pao-Chung Rd. + Hsin-Tien City, + Taipei Hsien, + TAIWAN, REPUBLIC OF CHINA + +00-06-08 (hex) At-Sky SAS +000608 (base 16) At-Sky SAS + ZI Athelia 3, Voi Atlas + 13600- La Ciotat + FRANCE + +00-06-09 (hex) Crossport Systems +000609 (base 16) Crossport Systems + 10940 NE 33rd Pl. + Suite 101 + Bellevue WA 98005 + UNITED STATES + +00-06-0A (hex) Blue2space +00060A (base 16) Blue2space + Arstaangsv. 9 + SE-11748 Stockholm + SWEDEN + +00-06-0B (hex) Paceline Systems Corporation +00060B (base 16) Paceline Systems Corporation + 50 Nagog Park + Acton MA 01720 + UNITED STATES + +00-06-0C (hex) Melco Industries, Inc. +00060C (base 16) Melco Industries, Inc. + 1575 W. 124th Ave. + Denver CO 80234 + UNITED STATES + +00-06-0D (hex) Wave7 Optics +00060D (base 16) Wave7 Optics + 1075 Windward Ridge Pkwy. + Suite 170 + Alpharetta GA 30005 + UNITED STATES + +00-06-0E (hex) IGYS Systems, Inc. +00060E (base 16) IGYS Systems, Inc. + 7373 Lincoln Way + Garden Grove CA 92841 + UNITED STATES + +00-06-0F (hex) Narad Networks Inc +00060F (base 16) Narad Networks Inc + 515 Groton Road + Westford MA 01886 + UNITED STATES + +00-06-10 (hex) Abeona Networks Inc +000610 (base 16) Abeona Networks Inc + 46117 Landing Parkway + Fremont CA 94539 + UNITED STATES + +00-06-11 (hex) Zeus Wireless, Inc. +000611 (base 16) Zeus Wireless, Inc. + 8325 Guilford Road + Columbia MD 21046 + UNITED STATES + +00-06-12 (hex) Accusys, Inc. +000612 (base 16) Accusys, Inc. + 5F, No. 38, Taiyuan St + Jhubei City + Hsinchu County 30265 + TAIWAN, REPUBLIC OF CHINA + +00-06-13 (hex) Kawasaki Microelectronics Incorporated +000613 (base 16) Kawasaki Microelectronics Incorporated + Mihama-ku, Nakase 1-3 MTG B5 + Chiba 261-8501 + JAPAN + +00-06-14 (hex) Prism Holdings +000614 (base 16) Prism Holdings + P.O. Box 901, + Witkoppen, 2068, + Gauteng + SOUTH AFRICA + +00-06-15 (hex) Kimoto Electric Co., Ltd. +000615 (base 16) Kimoto Electric Co., Ltd. + 3-1 Funahashi-Cho, + Tennoji-Ku, Osaka + 543-0024 + JAPAN + +00-06-16 (hex) Tel Net Co., Ltd. +000616 (base 16) Tel Net Co., Ltd. + 3F BOF Bldg 730-15 Goje Song + Yeonje Gu Pusam 611-073, + KOREA, REPUBLIC OF + +00-06-17 (hex) Redswitch Inc. +000617 (base 16) Redswitch Inc. + 1815 McCandless Drive + Milpitas CA 95035-8046 + UNITED STATES + +00-06-18 (hex) DigiPower Manufacturing Inc. +000618 (base 16) DigiPower Manufacturing Inc. + No. 114, Floor 13, Sec. 1, + Hsin Tai Wu Road, Shijr City, + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-06-19 (hex) Connection Technology Systems +000619 (base 16) Connection Technology Systems + 18F-6, No. 79, Sec. 1, + Hsin Tai Wu Rd. + Hsinchih Taipei, + TAIWAN, REPUBLIC OF CHINA + +00-06-1A (hex) Zetari Inc. +00061A (base 16) Zetari Inc. + 411 Waverly Oaks Rd. + Suite 323 + Waltham MA 02452-8401 + UNITED STATES + +00-06-1B (hex) Notebook Development Lab. Lenovo Japan Ltd. +00061B (base 16) Notebook Development Lab. Lenovo Japan Ltd. + 1623-14 Shimotsuruma + Yamato-shi Kanagawa-ken + 242-8502 + JAPAN + +00-06-1C (hex) Hoshino Metal Industries, Ltd. +00061C (base 16) Hoshino Metal Industries, Ltd. + 645 Yamanokami, Yabutsuka, + Nitta-gun, Gunma + 379-2302 + JAPAN + +00-06-1D (hex) MIP Telecom, Inc. +00061D (base 16) MIP Telecom, Inc. + 3rd Floor, Sangil BLDG, + 948-16, Bongcheondong, Gwanakku, + Seoul 151-069 + KOREA, REPUBLIC OF + +00-06-1E (hex) Maxan Systems +00061E (base 16) Maxan Systems + 1-84, Woulam-dong + Salseo-gu, DAEGU, + KOREA, REPUBLIC OF + +00-06-1F (hex) Vision Components GmbH +00061F (base 16) Vision Components GmbH + Ottostr. 2 + Ettlingen, 76275 + GERMANY + +00-06-20 (hex) Serial System Ltd. +000620 (base 16) Serial System Ltd. + 76 Playfair Road + #04-03 LHK2 Building + 367996 + SINGAPORE + +00-06-21 (hex) Hinox, Co., Ltd. +000621 (base 16) Hinox, Co., Ltd. + 15-7 3-chome, Sennin-cho, + Hachioji-City, Tokyo, + 193-0835 + JAPAN + +00-06-22 (hex) Chung Fu Chen Yeh Enterprise Corp. +000622 (base 16) Chung Fu Chen Yeh Enterprise Corp. + 2F No. 666 Jing Ping Road, + Chung Ho City, + Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-06-23 (hex) MGE UPS Systems France +000623 (base 16) MGE UPS Systems France + 140 Avenue Jean Kuntzmann + Zirst Montbonnot St Martin 38334 St Ismi + FRANCE + +00-06-24 (hex) Gentner Communications Corp. +000624 (base 16) Gentner Communications Corp. + 1825 Research Way + Salt Lake City UT 84119 + UNITED STATES + +00-06-25 (hex) The Linksys Group, Inc. +000625 (base 16) The Linksys Group, Inc. + 17401 Armstrong Ave. + Irvine CA 92614 + UNITED STATES + +00-06-26 (hex) MWE GmbH +000626 (base 16) MWE GmbH + Olbrichtstr. 21 + D-69469 Weinheim + GERMANY + +00-06-27 (hex) Uniwide Technologies, Inc. +000627 (base 16) Uniwide Technologies, Inc. + Korea Development Bank B/D 5th Flr + Dunsandong, Seogu, + Taejon 302-122, + KOREA, REPUBLIC OF + +00-06-28 (hex) Cisco Systems, Inc. +000628 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-06-29 (hex) IBM CORPORATION +000629 (base 16) IBM CORPORATION + CE6A/664 + P.O. BOX 12195 + Research Triangle Park NC 27709-2195 + UNITED STATES + +00-06-2A (hex) Cisco Systems, Inc. +00062A (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-06-2B (hex) INTRASERVER TECHNOLOGY +00062B (base 16) INTRASERVER TECHNOLOGY + SEVEN OCTOBER HILL RD. + HOLLISTON MA 01746 + UNITED STATES + +00-06-2C (hex) Network Robots, Inc. +00062C (base 16) Network Robots, Inc. + 4695 Chabot Drive + Pleasanton CA 94588 + UNITED STATES + +00-06-2D (hex) TouchStar Technologies, L.L.C. +00062D (base 16) TouchStar Technologies, L.L.C. + 5147 South Garnett Road + Suite A + Tulsa OK 74146 + UNITED STATES + +00-06-2E (hex) Aristos Logic Corp. +00062E (base 16) Aristos Logic Corp. + 27051 Towne Centre Dr. + Suite 290 + Foothill Ranch CA 92610 + UNITED STATES + +00-06-2F (hex) Pivotech Systems Inc. +00062F (base 16) Pivotech Systems Inc. + 200 Centennial Ave., + Suite 222 + Piscataway NJ 08854 + UNITED STATES + +00-06-30 (hex) Adtranz Sweden +000630 (base 16) Adtranz Sweden + Dept. TCC/TH + Ostraringvagen 2 72173 Vasteras + SWEDEN + +00-06-31 (hex) Optical Solutions, Inc. +000631 (base 16) Optical Solutions, Inc. + 16305 36th Ave. N. + Suite 300 + Plymouth MN 55446-2698 + UNITED STATES + +00-06-32 (hex) Mesco Engineering GmbH +000632 (base 16) Mesco Engineering GmbH + Wiesentalstrasse 74 + 79539 Lorrach + GERMANY + +00-06-33 (hex) Cross Match Technologies GmbH +000633 (base 16) Cross Match Technologies GmbH + Unstrutweg 4 + Jena 07743 + GERMANY + +00-06-34 (hex) GTE Airfone Inc. +000634 (base 16) GTE Airfone Inc. + 2809 Butterfield + Oakbrook IL 60522 + UNITED STATES + +00-06-35 (hex) PacketAir Networks, Inc. +000635 (base 16) PacketAir Networks, Inc. + 11545 W. Bernardo Ct. + Suite 100 + San Diego CA 92127 + UNITED STATES + +00-06-36 (hex) Jedai Broadband Networks +000636 (base 16) Jedai Broadband Networks + 331 Newman Springs Rd. + Building 1, 2nd Floor + Red Bank NJ 07701 + UNITED STATES + +00-06-37 (hex) Toptrend-Meta Information (ShenZhen) Inc. +000637 (base 16) Toptrend-Meta Information (ShenZhen) Inc. + 2/F, Bldg. 3, Section A, Nor-East Zone + Eastern Industrial Area, Overseas City, + CHINA + +00-06-38 (hex) Sungjin C&C Co., Ltd. +000638 (base 16) Sungjin C&C Co., Ltd. + 1543-6, Seocho-dong, Seocho-gu, + Seoul 137-073 + KOREA, REPUBLIC OF + +00-06-39 (hex) Newtec +000639 (base 16) Newtec + Laarstraat 5 + B-9100 Sint-Niklaas + BELGIUM + +00-06-3A (hex) Dura Micro, Inc. +00063A (base 16) Dura Micro, Inc. + 13580 Fifth Street + Chino CA 91710 + UNITED STATES + +00-06-3B (hex) Arcturus Networks, Inc. +00063B (base 16) Arcturus Networks, Inc. + 701 Evans Ave. - Suite 300 + Toronto Ontario M9C 1A3 + CANADA + +00-06-3C (hex) Intrinsyc Europe Ltd +00063C (base 16) Intrinsyc Europe Ltd + Fountain House, Great Cornbow, + Halesowen West Midlands B63 3BL + UNITED KINGDOM + +00-06-3D (hex) Microwave Data Systems Inc. +00063D (base 16) Microwave Data Systems Inc. + 175 Science Parkway + Rochester NY 14620 + UNITED STATES + +00-06-3E (hex) Opthos Inc. +00063E (base 16) Opthos Inc. + 590 Taylor Way + San Carlos CA 94070 + UNITED STATES + +00-06-3F (hex) Everex Communications Inc. +00063F (base 16) Everex Communications Inc. + 5020A Brandin Ct. + Fremont CA 94538 + UNITED STATES + +00-06-40 (hex) White Rock Networks +000640 (base 16) White Rock Networks + Suite #900 + 18111 Preston Road + Dallas TX 75252 + UNITED STATES + +00-06-41 (hex) ITCN +000641 (base 16) ITCN + 8571 Gander Creek Drive + Miamisburg OH 45342 + UNITED STATES + +00-06-42 (hex) Genetel Systems Inc. +000642 (base 16) Genetel Systems Inc. + Mockwoo B/D, 912 Walpyoung-Dong + Seo-Gu Taejon, + 302-852 + KOREA, REPUBLIC OF + +00-06-43 (hex) SONO Computer Co., Ltd. +000643 (base 16) SONO Computer Co., Ltd. + 1F., No. 8, Alley 35, Lane 91, + Sec. 1, Nei-Hu Road, + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-06-44 (hex) Digital Technologies Corporation +000644 (base 16) Digital Technologies Corporation + 3-5-3-24, Higashisapporo + Shiroishi-ku + Sapporo Hokkaido 003-0003 + JAPAN + +00-06-45 (hex) Meisei Electric Co. Ltd. +000645 (base 16) Meisei Electric Co. Ltd. + 249-1, Moriya-kou, Moriya + Kitasouma-Gun, Ibaraki + 302-0192 + JAPAN + +00-06-46 (hex) ShenZhen XunBao Network Technology Co Ltd +000646 (base 16) ShenZhen XunBao Network Technology Co Ltd + F3, R2-A Building, South District + of High-Tech Industrial Park, + Shen Zhen + CHINA + +00-06-47 (hex) Etrali S.A. +000647 (base 16) Etrali S.A. + 221, Rue La Fontaine + 94132 Fontenay Sous Bois Cedex + FRANCE + +00-06-48 (hex) Seedsware, Inc. +000648 (base 16) Seedsware, Inc. + No. 1-12, 2-Chome + Shikitunishi, Naniwa-ku + Osaka 556-0015 + JAPAN + +00-06-49 (hex) Quante +000649 (base 16) Quante + Uellendahler Str. 353 + D-42109 Wuppertal + GERMANY + +00-06-4A (hex) Honeywell Co., Ltd. (KOREA) +00064A (base 16) Honeywell Co., Ltd. (KOREA) + 56, Chaam-dong, Chonan-city + Choongcheongnam-do, 330-200, + KOREA, REPUBLIC OF + +00-06-4B (hex) Alexon Co., Ltd. +00064B (base 16) Alexon Co., Ltd. + 3-207-1 Teramoto, + Itami, Hyogo 664-0026 + JAPAN + +00-06-4C (hex) Invicta Networks, Inc. +00064C (base 16) Invicta Networks, Inc. + 13873 Park Center Road + Suite 400 + Herndon VA 20171 + UNITED STATES + +00-06-4D (hex) Sencore +00064D (base 16) Sencore + 3200 Sencore Dr. + Sioux Falls SD 57107 + UNITED STATES + +00-06-4E (hex) Broad Net Technology Inc. +00064E (base 16) Broad Net Technology Inc. + 5F, No.58, Lane 188, Rui Kuang Road + Neihu District, Taipei 114, + TAIWAN, REPUBLIC OF CHINA + +00-06-4F (hex) PRO-NETS Technology Corporation +00064F (base 16) PRO-NETS Technology Corporation + Pao-Chung Road, + No. 92, 10F-1 + Hsin Tien Taipei, + TAIWAN, REPUBLIC OF CHINA + +00-06-50 (hex) Tiburon Networks, Inc. +000650 (base 16) Tiburon Networks, Inc. + 200 Minuteman Rd. + Suite 2B + Andover MA 01810 + UNITED STATES + +00-06-51 (hex) Aspen Networks Inc. +000651 (base 16) Aspen Networks Inc. + 3777 Stevens Creek Blvd + Suite 330 + Santa Clara CA 95051 + UNITED STATES + +00-06-52 (hex) Cisco Systems, Inc. +000652 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-06-53 (hex) Cisco Systems, Inc. +000653 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-06-54 (hex) Maxxio Technologies +000654 (base 16) Maxxio Technologies + Prinz-Eugen-Strasse 8 + A-1040 Vienna + AUSTRIA + +00-06-55 (hex) Yipee, Inc. +000655 (base 16) Yipee, Inc. + 555 International Drive + Suite 800 + Williamsville NY 14221 + UNITED STATES + +00-06-56 (hex) Tactel AB +000656 (base 16) Tactel AB + Norra Vallgatan 64 + SE-211 22 Malmo + SWEDEN + +00-06-57 (hex) Market Central, Inc. +000657 (base 16) Market Central, Inc. + 500 Business Center Drive + Pittsburgh PA 15205-1333 + UNITED STATES + +00-06-58 (hex) Helmut Fischer GmbH & Co. KG +000658 (base 16) Helmut Fischer GmbH & Co. KG + IndustriaBe21 + 71069 Sindefingen + GERMANY + +00-06-59 (hex) EAL (Apeldoorn) B.V. +000659 (base 16) EAL (Apeldoorn) B.V. + Molenmakershoek 14 + JK Apeldoorn 7328 + NETHERLANDS + +00-06-5A (hex) Strix Systems +00065A (base 16) Strix Systems + 310 N. Westlake Blvd. + Suite 150 + Westlake Village CA 91362 + UNITED STATES + +00-06-5B (hex) Dell Computer Corp. +00065B (base 16) Dell Computer Corp. + One Dell Way + Round Rock TX 78682 + UNITED STATES + +00-06-5C (hex) Malachite Technologies, Inc. +00065C (base 16) Malachite Technologies, Inc. + 195 New Hampshire Avenue + Suite 150 + Portsmouth NH 03801 + UNITED STATES + +00-06-5D (hex) Heidelberg Web Systems +00065D (base 16) Heidelberg Web Systems + 121 Technology Dr. + Durham NH 03824 + UNITED STATES + +00-06-5E (hex) Photuris, Inc. +00065E (base 16) Photuris, Inc. + 20 Corporate Place South + Piscataway NJ 08854 + UNITED STATES + +00-06-5F (hex) ECI Telecom - NGTS Ltd. +00065F (base 16) ECI Telecom - NGTS Ltd. + 30 Hasivim St. + Petah-Tikva 49130 + ISRAEL + +00-06-60 (hex) NADEX Co., Ltd. +000660 (base 16) NADEX Co., Ltd. + 1 Omiyamae, Tokushige, + Nishiharu-cyo, Nishikasugai-gun, + Aichi 481-0038 + JAPAN + +00-06-61 (hex) NIA Home Technologies Corp. +000661 (base 16) NIA Home Technologies Corp. + Innovation Incubator, NTHU, + 101, Sec. 2, Kuang Fu Road, + Hsinchu 30013, + TAIWAN, REPUBLIC OF CHINA + +00-06-62 (hex) MBM Technology Ltd. +000662 (base 16) MBM Technology Ltd. + Victoria Rd. + Portslade, Brighton Sussex BN4l 1YH + UNITED KINGDOM + +00-06-63 (hex) Human Technology Co., Ltd. +000663 (base 16) Human Technology Co., Ltd. + 3rd Fl, Hyungok Bldg., + 836-25, Yuksam-Dong, + Kangnam-ku Seoul + KOREA, REPUBLIC OF + +00-06-64 (hex) Fostex Corporation +000664 (base 16) Fostex Corporation + 3-2-35, Musashino, Akishima, + Tokyo 196-0021 + JAPAN + +00-06-65 (hex) Sunny Giken, Inc. +000665 (base 16) Sunny Giken, Inc. + 3-1-9 Nishidai Itami-shi + Hyogo-pref. 664-0858 + JAPAN + +00-06-66 (hex) Roving Networks +000666 (base 16) Roving Networks + 809 University Avenue + Los Gatos CA 95032 + UNITED STATES + +00-06-67 (hex) Tripp Lite +000667 (base 16) Tripp Lite + 1111 W. 35th Street + Chicago IL 60609 + UNITED STATES + +00-06-68 (hex) Vicon Industries Inc. +000668 (base 16) Vicon Industries Inc. + 89 Arkay Drive + Hauppauge NY 11788 + UNITED STATES + +00-06-69 (hex) Datasound Laboratories Ltd +000669 (base 16) Datasound Laboratories Ltd + 5 Business Park West, Avenue One + Letchworth, Herts SG6 24B + ENGLAND + UNITED KINGDOM + +00-06-6A (hex) InfiniCon Systems, Inc. +00066A (base 16) InfiniCon Systems, Inc. + 700 American Ave. + Suite 101 + King of Prussia PA 19406 + UNITED STATES + +00-06-6B (hex) Sysmex Corporation +00066B (base 16) Sysmex Corporation + 4-4-4 Takatsukadai, + Nishi-ku, Kobe-City + 651-2271 + JAPAN + +00-06-6C (hex) Robinson Corporation +00066C (base 16) Robinson Corporation + 12F, No. 278 Ho Ping E. Rd., + Sec. 3 + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-06-6D (hex) Compuprint S.P.A. +00066D (base 16) Compuprint S.P.A. + Via Martiri D'Italia 26 + 10014 Caluso (Turin) + ITALY + +00-06-6E (hex) Delta Electronics, Inc. +00066E (base 16) Delta Electronics, Inc. + 11F, 266 Wen-Hwa 2nd Road, + Sec. 1, Linkou, Taipei Hsien 244 + TAIWAN, REPUBLIC OF CHINA + +00-06-6F (hex) Korea Data Systems +00066F (base 16) Korea Data Systems + 170, Gongdan-Dong, Gumi-Si + Kyungbuk 730-030 + KOREA, REPUBLIC OF + +00-06-70 (hex) Upponetti Oy +000670 (base 16) Upponetti Oy + Tykistokatu 4D + FIN-20520 Turku + FINLAND + +00-06-71 (hex) Softing AG +000671 (base 16) Softing AG + Richard-Reitzner-Allee 6 + 85540 Haar + GERMANY + +00-06-72 (hex) Netezza +000672 (base 16) Netezza + 1671 Worcester Road + Suite 100 + Framingham MA 01701 + UNITED STATES + +00-06-73 (hex) Optelecom-nkf +000673 (base 16) Optelecom-nkf + 12920 Cloverleaf Center Drive + Germantown MD 20874 + UNITED STATES + +00-06-74 (hex) Spectrum Control, Inc. +000674 (base 16) Spectrum Control, Inc. + 8061 Avonia Road + Fairview PA 16415 + UNITED STATES + +00-06-75 (hex) Banderacom, Inc. +000675 (base 16) Banderacom, Inc. + 9211 Waterford Centre Blvd. + Suite 100 + Austin TX 78758 + UNITED STATES + +00-06-76 (hex) Novra Technologies Inc. +000676 (base 16) Novra Technologies Inc. + 900-330 St. Mary Avenue + Winnipeg Manitoba R3C 3Z5 + CANADA + +00-06-77 (hex) SICK AG +000677 (base 16) SICK AG + Erwin-Sick Str.1 + D-79183 Waldkirch + GERMANY + +00-06-78 (hex) Marantz Brand Company +000678 (base 16) Marantz Brand Company + D&M Building, 2-1 Nisshin-cho + Kawasaki-ku + Kawasaki-shi Kawagawa 210-8569 + JAPAN + +00-06-79 (hex) Konami Corporation +000679 (base 16) Konami Corporation + 11-14-5 Akasaka, Minato-ku, + Tokyo 107-0052 + JAPAN + +00-06-7A (hex) JMP Systems +00067A (base 16) JMP Systems + 3rd Fl. Shinwha Bldg., + 1451-19, Seocho-dong, + Seocho-ku Seoul, + KOREA, REPUBLIC OF + +00-06-7B (hex) Toplink C&C Corporation +00067B (base 16) Toplink C&C Corporation + 6F-15, No. 12, Lane 609, Sec. 5 + Chung Hsin Rd., San Chung City + Taipei Hsien 241 + TAIWAN, REPUBLIC OF CHINA + +00-06-7C (hex) CISCO SYSTEMS, INC. +00067C (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-06-7D (hex) Takasago Ltd. +00067D (base 16) Takasago Ltd. + 1-24-16 Mizonokuchi Takatsu-ku + Kawasaki Kanagawa + JAPAN + +00-06-7E (hex) WinCom Systems, Inc. +00067E (base 16) WinCom Systems, Inc. + 10900 World Trade Blvd. + Suite 250 + Morrisville NC 27560 + UNITED STATES + +00-06-7F (hex) Rearden Steel Technologies +00067F (base 16) Rearden Steel Technologies + 529 Bryant Street + Palo Alto CA 94301 + UNITED STATES + +00-06-80 (hex) Card Access, Inc. +000680 (base 16) Card Access, Inc. + 11778 S. Election Rd + Suite 260 + Salt Lake City UT 80420 + UNITED STATES + +00-06-81 (hex) Goepel Electronic GmbH +000681 (base 16) Goepel Electronic GmbH + Goeschwitzer Str. 58-60 + 07745 Jena + GERMANY + +00-06-82 (hex) Convedia +000682 (base 16) Convedia + 4190 Still Creek Dr. + Vancouver B.C. + V5C 6C6 + CANADA + +00-06-83 (hex) Bravara Communications, Inc. +000683 (base 16) Bravara Communications, Inc. + 2650 East Bayshore Road + Palo Alto CA 94303 + UNITED STATES + +00-06-84 (hex) Biacore AB +000684 (base 16) Biacore AB + Software, Electronics and Optics + Rapsgatan 7, 754 50 Uppsala + SWEDEN + +00-06-85 (hex) NetNearU Corporation +000685 (base 16) NetNearU Corporation + 2908 Finfeather Road + Bryan TX 77801 + UNITED STATES + +00-06-86 (hex) ZARDCOM Co., Ltd. +000686 (base 16) ZARDCOM Co., Ltd. + 4F, 1548-1, Seocho Dong, Seocho-Gu + Seoul + KOREA, REPUBLIC OF + +00-06-87 (hex) Omnitron Systems Technology, Inc. +000687 (base 16) Omnitron Systems Technology, Inc. + 140 Technology + Suite 500 + Irvine CA 92618 + UNITED STATES + +00-06-88 (hex) Telways Communication Co., Ltd. +000688 (base 16) Telways Communication Co., Ltd. + 3F, No. 53, Lane 258 + Zui-Kuang Rd., Nei-Hu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-06-89 (hex) yLez Technologies Pte Ltd +000689 (base 16) yLez Technologies Pte Ltd + No. 1, Tannery Road, Cencon 1, + #09-03, 347719 + SINGAPORE + +00-06-8A (hex) NeuronNet Co. Ltd. R&D Center +00068A (base 16) NeuronNet Co. Ltd. R&D Center + 735-34 Dasung Bldg., Yuksam-dong, + Kangnam-gu, Seoul + KOREA, REPUBLIC OF + +00-06-8B (hex) AirRunner Technologies, Inc. +00068B (base 16) AirRunner Technologies, Inc. + 2401 Lupine Trail + South Lake Tahoe CA 96150 + UNITED STATES + +00-06-8C (hex) 3Com Corporation +00068C (base 16) 3Com Corporation + 5400 Bayfront Plaza + MS: 5116 + Santa Clara CA 95052 + UNITED STATES + +00-06-8D (hex) SEPATON, Inc. +00068D (base 16) SEPATON, Inc. + 400 Nickerson Rd. + Marlborough MA 01752 + UNITED STATES + +00-06-8E (hex) HID Corporation +00068E (base 16) HID Corporation + 9292 Jeronimo Road + Irvine CA 92618-1905 + UNITED STATES + +00-06-8F (hex) Telemonitor, Inc. +00068F (base 16) Telemonitor, Inc. + 9055F Guilford Road + Columbia MD 21046 + UNITED STATES + +00-06-90 (hex) Euracom Communication GmbH +000690 (base 16) Euracom Communication GmbH + Franklinstr. 14 + D-10587 Berlin + GERMANY + +00-06-91 (hex) PT Inovacao +000691 (base 16) PT Inovacao + Rua Eng. Jose F. Pinto Basto + 3810 Aveiro + PORTUGAL + +00-06-92 (hex) Intruvert Networks, Inc. +000692 (base 16) Intruvert Networks, Inc. + Suite 102 + 2290 North First Street + San Jose CA 95131 + UNITED STATES + +00-06-93 (hex) Flexus Computer Technology, Inc. +000693 (base 16) Flexus Computer Technology, Inc. + 8F-2, No.5, Alley22, Lane 513, + Ruei-Guang Rd., Nei-Hu Dist., + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-06-94 (hex) Mobillian Corporation +000694 (base 16) Mobillian Corporation + 11031 Via Frontera + Suite C + San Diego CA 92127 + UNITED STATES + +00-06-95 (hex) Ensure Technologies, Inc. +000695 (base 16) Ensure Technologies, Inc. + 3526 West Liberty + Suite 100 + Ann Arbor MI 48103 + UNITED STATES + +00-06-96 (hex) Advent Networks +000696 (base 16) Advent Networks + 9600 Great Hills Tr. + Suite 300E + Austin TX 78759 + UNITED STATES + +00-06-97 (hex) R & D Center +000697 (base 16) R & D Center + 5F, Seungwon B/D, 810-9 + Bangbae-Dong, Seocho-Gu + Seoul + KOREA, REPUBLIC OF + +00-06-98 (hex) egnite Software GmbH +000698 (base 16) egnite Software GmbH + Erinstr. 9 + Castrop-Rauxel D-44575 + GERMANY + +00-06-99 (hex) Vida Design Co. +000699 (base 16) Vida Design Co. + 10F, No. 278 Ho Ping E. Rd., + Sec. 3, Taipei + TAIWAN, REPUBLIC OF CHINA + +00-06-9A (hex) e & Tel +00069A (base 16) e & Tel + 100 Sejong-no Chongno-gu, + Seoul 110-777, + KOREA, REPUBLIC OF + +00-06-9B (hex) AVT Audio Video Technologies GmbH +00069B (base 16) AVT Audio Video Technologies GmbH + Rathsbergstrasse 17 + D-90411 Nuernberg + GERMANY + +00-06-9C (hex) Transmode Systems AB +00069C (base 16) Transmode Systems AB + Jakobsdalsvägen 17 + HÄGERSTEN SE-126 53 + SWEDEN + +00-06-9D (hex) Petards Mobile Intelligence +00069D (base 16) Petards Mobile Intelligence + The Old Barn, Appleford Road + Long Wittenham, Abingdon + Oxford OX14 4RS + UNITED KINGDOM + +00-06-9E (hex) UNIQA, Inc. +00069E (base 16) UNIQA, Inc. + 477 Valley Way + Milpitas CA 95035 + UNITED STATES + +00-06-9F (hex) Kuokoa Networks +00069F (base 16) Kuokoa Networks + 2901 Tasman Dr. + Suite 202 + Santa Clara CA 95054 + UNITED STATES + +00-06-A0 (hex) Mx Imaging +0006A0 (base 16) Mx Imaging + 2341 W. 205th Street + Suite 110 + Torrance CA 90501 + UNITED STATES + +00-06-A1 (hex) Celsian Technologies, Inc. +0006A1 (base 16) Celsian Technologies, Inc. + 3002 Dow Ave., Unit 138 + Tustin CA 92780 + UNITED STATES + +00-06-A2 (hex) Microtune, Inc. +0006A2 (base 16) Microtune, Inc. + 6440 Lusk Blvd., Suite D205 + San Diego CA 92121 + UNITED STATES + +00-06-A3 (hex) Bitran Corporation +0006A3 (base 16) Bitran Corporation + 2213 Mochida + Gyouda Saitama + JAPAN + +00-06-A4 (hex) INNOWELL Corp. +0006A4 (base 16) INNOWELL Corp. + #717 ChongGu Bluevill + 11-1, Sunae-1 Dong, Bundang-Gu, Sungnam- + 463-825 + KOREA, REPUBLIC OF + +00-06-A5 (hex) PINON Corp. +0006A5 (base 16) PINON Corp. + DK Gotanda Bldg.7F + 7-13-5 Nishigotanda Shinagawa-ku + Tokyo 141-0031 + JAPAN + +00-06-A6 (hex) Artistic Licence (UK) Ltd +0006A6 (base 16) Artistic Licence (UK) Ltd + 24 Forward Drive + Christchurch Avenue + Harrow Middlesex HA3 8NT + UNITED KINGDOM + +00-06-A7 (hex) Primarion +0006A7 (base 16) Primarion + 3450 Torrance Blvd. + Torrance CA 90503 + UNITED STATES + +00-06-A8 (hex) KC Technology, Inc. +0006A8 (base 16) KC Technology, Inc. + 1900 McCarthy Blvd. + Suite 300 + Milpitas CA 95035 + UNITED STATES + +00-06-A9 (hex) Universal Instruments Corp. +0006A9 (base 16) Universal Instruments Corp. + PO Box 825 + Binghamton NY 13902 + UNITED STATES + +00-06-AA (hex) VT Miltope +0006AA (base 16) VT Miltope + 4900 Pearl East Circle + Suite 106 + Boulder CO 80301 + UNITED STATES + +00-06-AB (hex) W-Link Systems, Inc. +0006AB (base 16) W-Link Systems, Inc. + No. 20, Park Ave. II, + Science Based Industrial Park, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-06-AC (hex) Intersoft Co. +0006AC (base 16) Intersoft Co. + #1803 sun-kyoung Officetel + 106-4 Bunzi, Guro5Dong, Guro Gu + Seoul + KOREA, REPUBLIC OF + +00-06-AD (hex) KB Electronics Ltd. +0006AD (base 16) KB Electronics Ltd. + 150 Bluewater Rd. + Bedford, Nova Scotia + B4B 1G9 + CANADA + +00-06-AE (hex) Himachal Futuristic Communications Ltd +0006AE (base 16) Himachal Futuristic Communications Ltd + 8, Commercial Complex + Masjid Moth, Greater Kailash II + New Dehli 110048 + INDIA + +00-06-AF (hex) PRIVATE +0006AF (base 16) + +00-06-B0 (hex) Comtech EF Data Corp. +0006B0 (base 16) Comtech EF Data Corp. + 2114 W. 7th St. + Tempe AZ 85281 + UNITED STATES + +00-06-B1 (hex) Sonicwall +0006B1 (base 16) Sonicwall + 1160 Bordeaux Dr. + Sunnyvale CA 94089 + UNITED STATES + +00-06-B2 (hex) Linxtek Co. +0006B2 (base 16) Linxtek Co. + 2F Kum-a B/D 31-3 Karak-dong, + Songpa-ku, Seoul, + 138-160 + KOREA, REPUBLIC OF + +00-06-B3 (hex) Diagraph Corporation +0006B3 (base 16) Diagraph Corporation + 3401 Rider Trail South + Earth City MO 63045-1110 + UNITED STATES + +00-06-B4 (hex) Vorne Industries, Inc. +0006B4 (base 16) Vorne Industries, Inc. + 1445 Industrial Dr. + Itasca IL 60143-1849 + UNITED STATES + +00-06-B5 (hex) Luminent, Inc. +0006B5 (base 16) Luminent, Inc. + 20550 Nordhoff St. + Chatsworth CA 91311 + UNITED STATES + +00-06-B6 (hex) Nir-Or Israel Ltd. +0006B6 (base 16) Nir-Or Israel Ltd. + 11 Amal St. + Rosh Ha'ayin 48092 + ISRAEL + +00-06-B7 (hex) TELEM GmbH +0006B7 (base 16) TELEM GmbH + Lise-Meitner-Allee 31 + D 44801 + GERMANY + +00-06-B8 (hex) Bandspeed Pty Ltd +0006B8 (base 16) Bandspeed Pty Ltd + Level 9, 5000 Collins Street + Melbourne Vic 3000 + AUSTRALIA + +00-06-B9 (hex) A5TEK Corp. +0006B9 (base 16) A5TEK Corp. + 1233 Alderwood Ave. + Sunnyvale CA 94089 + UNITED STATES + +00-06-BA (hex) Westwave Communications +0006BA (base 16) Westwave Communications + 463 Aviation Blvd. + Santa Rosa CA 95403 + UNITED STATES + +00-06-BB (hex) ATI Technologies Inc. +0006BB (base 16) ATI Technologies Inc. + 75 Tiverton Court + Unionville, ON L3R 953 + CANADA + +00-06-BC (hex) Macrolink, Inc. +0006BC (base 16) Macrolink, Inc. + 1500 N Kellogg Dr. + Anaheim CA 92807 + UNITED STATES + +00-06-BD (hex) BNTECHNOLOGY Co., Ltd. +0006BD (base 16) BNTECHNOLOGY Co., Ltd. + 602 Youngshin Bldg. 238-8 + Poi-Dong Kangnam-Gu + Seoul + KOREA, REPUBLIC OF + +00-06-BE (hex) Baumer Optronic GmbH +0006BE (base 16) Baumer Optronic GmbH + Badstrasse 30 + D-01454 Radeberg + GERMANY + +00-06-BF (hex) Accella Technologies Co., Ltd. +0006BF (base 16) Accella Technologies Co., Ltd. + Rm 512 No. 680 Gui Ping Rd. + Shanghai 200233 + CHINA + +00-06-C0 (hex) United Internetworks, Inc. +0006C0 (base 16) United Internetworks, Inc. + 5072 North 300 West, Suite 2N + Provo UT 84604 + UNITED STATES + +00-06-C1 (hex) CISCO SYSTEMS, INC. +0006C1 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-06-C2 (hex) Smartmatic Corporation +0006C2 (base 16) Smartmatic Corporation + 6400 Congress Ave., Suite 1300 + Boca Raton FL 33487 + UNITED STATES + +00-06-C3 (hex) Schindler Elevator Ltd. +0006C3 (base 16) Schindler Elevator Ltd. + Dept. R&D-CO + Via della Pace 22 + Locarno CH-6600 + SWITZERLAND + +00-06-C4 (hex) Piolink Inc. +0006C4 (base 16) Piolink Inc. + 504, II-Gwang B/D, Seocho dong + 1656-2 Seocho-Gu, Seoul + 137-070 + KOREA, REPUBLIC OF + +00-06-C5 (hex) INNOVI Technologies Limited +0006C5 (base 16) INNOVI Technologies Limited + 31st Floor, China Online Centre + 333 Lockhart Road + Wanchai + HONG KONG + +00-06-C6 (hex) lesswire AG +0006C6 (base 16) lesswire AG + Im Technologiepark 25 + GERMANY + +00-06-C7 (hex) RFNET Technologies Pte Ltd (S) +0006C7 (base 16) RFNET Technologies Pte Ltd (S) + Unit 233 Innovation Centre Blk 2 + 18 Nanyang Drive + 637722 + SINGAPORE + +00-06-C8 (hex) Sumitomo Metal Micro Devices, Inc. +0006C8 (base 16) Sumitomo Metal Micro Devices, Inc. + 1, Higashimukojima Higashino-cho + Amagasaki, Hyogo, 660-8660 + JAPAN + +00-06-C9 (hex) Technical Marketing Research, Inc. +0006C9 (base 16) Technical Marketing Research, Inc. + Shin Nihon Gijutsu Bldg. + 1-1-32, Shibadaimon, Minato-ku + Tokyo 105-0012 105-0012 + JAPAN + +00-06-CA (hex) American Computer & Digital Components, Inc. (ACDC) +0006CA (base 16) American Computer & Digital Components, Inc. (ACDC) + 440 Cloverleaf Drive + Baldwin Park CA 91706 + UNITED STATES + +00-06-CB (hex) Jotron Electronics A/S +0006CB (base 16) Jotron Electronics A/S + Pob 54 + N3280 Tjodalyng + NORWAY + +00-06-CC (hex) JMI Electronics Co., Ltd. +0006CC (base 16) JMI Electronics Co., Ltd. + Nanyang B/D 3F, 25-4 + Yonmun-dong, Yongsan-gu + Seoul 140-080 + KOREA, REPUBLIC OF + +00-06-CD (hex) Kodak IL Ltd. +0006CD (base 16) Kodak IL Ltd. + 7th Hatnufa st + Petach-Tikva 49002 + ISRAEL + +00-06-CE (hex) DATENO +0006CE (base 16) DATENO + Rue Amiral Berenger + Zac Es Passants II BP 90145, 35801 Dinar + FRANCE + +00-06-CF (hex) Thales Avionics In-Flight Systems, LLC +0006CF (base 16) Thales Avionics In-Flight Systems, LLC + 17481 Red Hill Avenue + Irvine CA 92614-5630 + UNITED STATES + +00-06-D0 (hex) Elgar Electronics Corp. +0006D0 (base 16) Elgar Electronics Corp. + 9250 Brown Deer Rd. + San Diego CA 92121 + UNITED STATES + +00-06-D1 (hex) Tahoe Networks, Inc. +0006D1 (base 16) Tahoe Networks, Inc. + 3052 Orchard Drive + San Jose CA 95134 + UNITED STATES + +00-06-D2 (hex) Tundra Semiconductor Corp. +0006D2 (base 16) Tundra Semiconductor Corp. + 603 March Road + Kanata, Ont. + K2K-2M5 + CANADA + +00-06-D3 (hex) Alpha Telecom, Inc. U.S.A. +0006D3 (base 16) Alpha Telecom, Inc. U.S.A. + 1394 Borregor Ave. + Sunnyvale CA 94089 + UNITED STATES + +00-06-D4 (hex) Interactive Objects, Inc. +0006D4 (base 16) Interactive Objects, Inc. + 12600 SE 38th St. + Suite 150 + Bellevue WA 98006 + UNITED STATES + +00-06-D5 (hex) Diamond Systems Corp. +0006D5 (base 16) Diamond Systems Corp. + 8430-D Central Ave. + Newark CA 94560 + UNITED STATES + +00-06-D6 (hex) Cisco Systems, Inc. +0006D6 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-06-D7 (hex) Cisco Systems, Inc. +0006D7 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-06-D8 (hex) Maple Optical Systems +0006D8 (base 16) Maple Optical Systems + 3200 North First St. + San Jose CA 95134 + UNITED STATES + +00-06-D9 (hex) IPM-Net S.p.A. +0006D9 (base 16) IPM-Net S.p.A. + Via Remo De Feo + 80022 Arzano (Naples) + ITALY + +00-06-DA (hex) ITRAN Communications Ltd. +0006DA (base 16) ITRAN Communications Ltd. + 1 Azrieli Center, + The round building + Tel Aviv 67021 67021 + ISRAEL + +00-06-DB (hex) ICHIPS Co., Ltd. +0006DB (base 16) ICHIPS Co., Ltd. + 3F, Samjeon Bldg., 236-3 + Nonhyun-Dong, Kangnam-ku + Seoul-City 135-01 + KOREA, REPUBLIC OF + +00-06-DC (hex) Syabas Technology (Amquest) +0006DC (base 16) Syabas Technology (Amquest) + 4727 Paseo Padre Parkway + Fremont CA 94555 + UNITED STATES + +00-06-DD (hex) AT & T Laboratories - Cambridge Ltd +0006DD (base 16) AT & T Laboratories - Cambridge Ltd + 24a Trumpington Street + Cambridge, CB2 1QA + ENGLAND + UNITED KINGDOM + +00-06-DE (hex) Flash Technology +0006DE (base 16) Flash Technology + P.O. Box 681509 + Franklin TN 37068 + UNITED STATES + +00-06-DF (hex) AIDONIC Corporation +0006DF (base 16) AIDONIC Corporation + 2-7-10 Otsuka, Bunkyo-ku, + Tokyo, 112-0012 + JAPAN + +00-06-E0 (hex) MAT Co., Ltd. +0006E0 (base 16) MAT Co., Ltd. + 864-3 Kwanyang-dong + Dongan-gu, Anyang-si + Kyunggi-do 431-060 + KOREA, REPUBLIC OF + +00-06-E1 (hex) Techno Trade s.a +0006E1 (base 16) Techno Trade s.a + 732a Chaussee de Bruxelles + B-1410 Waterloo + BELGIUM + +00-06-E2 (hex) Ceemax Technology Co., Ltd. +0006E2 (base 16) Ceemax Technology Co., Ltd. + 5f-7, 736, Chung Cheng Rd., + Chung Ho Taipei Hsien, + TAIWAN, REPUBLIC OF CHINA + +00-06-E3 (hex) Quantitative Imaging Corporation +0006E3 (base 16) Quantitative Imaging Corporation + 8081 Lougheed Highway + Burnaby, BC + CANADA + +00-06-E4 (hex) Citel Technologies Ltd. +0006E4 (base 16) Citel Technologies Ltd. + Wheatcroft Business Park + Landmere Lane, Edwalton + Nottigham NG12 4DG + UNITED KINGDOM + +00-06-E5 (hex) Fujian Newland Computer Ltd. Co. +0006E5 (base 16) Fujian Newland Computer Ltd. Co. + 141F Sunshine Holiday Hotel + No. 26 Gao Qiao Rd., WuYi Square + Fuzhou Fujian 350005 + CHINA + +00-06-E6 (hex) DongYang Telecom Co., Ltd. +0006E6 (base 16) DongYang Telecom Co., Ltd. + 642-7 Deung Chon-Dong, KangSeo-Gu + Seoul 157-841 + KOREA, REPUBLIC OF + +00-06-E7 (hex) Bit Blitz Communications Inc. +0006E7 (base 16) Bit Blitz Communications Inc. + 830 Hillview Ct., #290 + Milpitas CA 95035 + UNITED STATES + +00-06-E8 (hex) Optical Network Testing, Inc. +0006E8 (base 16) Optical Network Testing, Inc. + 55 Merchant St. + 28th Floor + Honolulu HI 96813 + UNITED STATES + +00-06-E9 (hex) Intime Corp. +0006E9 (base 16) Intime Corp. + 324-4, Yangjae-dong, 2F + Seocho-ku, Seoul, 137-130, + KOREA, REPUBLIC OF + +00-06-EA (hex) ELZET80 Mikrocomputer GmbH&Co. KG +0006EA (base 16) ELZET80 Mikrocomputer GmbH&Co. KG + Theaterplatz 9 + D-52062 Aachen + GERMANY + +00-06-EB (hex) Global Data +0006EB (base 16) Global Data + 2250 Obispo Ave #105 + Signal Hill CA 90806 + UNITED STATES + +00-06-EC (hex) M/A COM Private Radio System Inc. +0006EC (base 16) M/A COM Private Radio System Inc. + 3315 Old Forest Road + Lynchburg VA 24501 + UNITED STATES + +00-06-ED (hex) Inara Networks +0006ED (base 16) Inara Networks + 3031 Tisch Way, + Suite 100 + San Jose CA 95128 + UNITED STATES + +00-06-EE (hex) Shenyang Neu-era Information & Technology Stock Co., Ltd +0006EE (base 16) Shenyang Neu-era Information & Technology Stock Co., Ltd + 8/F, the 21st Century Building, + No. 1 Shiji Road, Hunnan Industrial Dist + Dvlpmnt Zone Shenyang, + CHINA + +00-06-EF (hex) Maxxan Systems, Inc. +0006EF (base 16) Maxxan Systems, Inc. + 107 Bonaventura Drive + San Jose CA 95134 + UNITED STATES + +00-06-F0 (hex) Digeo, Inc. +0006F0 (base 16) Digeo, Inc. + 8815 122nd Ave., NE + Kirkland WA 98033 + UNITED STATES + +00-06-F1 (hex) Optillion +0006F1 (base 16) Optillion + Kronborgsgr.9 + SE-16487 Kista + SWEDEN + +00-06-F2 (hex) Platys Communications +0006F2 (base 16) Platys Communications + 3150A Coronado Dr. + Santa Clara CA 95054 + UNITED STATES + +00-06-F3 (hex) AcceLight Networks +0006F3 (base 16) AcceLight Networks + 70 Abele Road, Building 1200 + Pittsburgh PA 15017 + UNITED STATES + +00-06-F4 (hex) Prime Electronics & Satellitics Inc. +0006F4 (base 16) Prime Electronics & Satellitics Inc. + 69, Tung-Yuan Rd., + Chung-Li City, Taoyuan + TAIWAN, REPUBLIC OF CHINA + +00-06-F8 (hex) CPU Technology, Inc. +0006F8 (base 16) CPU Technology, Inc. + 5731 W. Las Positas Blvd. + Pleasanton CA 94588 + UNITED STATES + +00-06-F9 (hex) Mitsui Zosen Systems Research Inc. +0006F9 (base 16) Mitsui Zosen Systems Research Inc. + 11-1, Uno 1-chome + Tamano-shi, Okayama + 706-0011 + JAPAN + +00-06-FA (hex) IP SQUARE Co, Ltd. +0006FA (base 16) IP SQUARE Co, Ltd. + 1-9-11, Hakataekihigashi, + Hakata-ku, Fukuoka-shi, + Fukuoka 812-0013 + JAPAN + +00-06-FB (hex) Hitachi Printing Solutions, Ltd. +0006FB (base 16) Hitachi Printing Solutions, Ltd. + 1060, Takeda Hitachinaka-City + Ibaraki-Pref. + 312-8502 + JAPAN + +00-06-FC (hex) Fnet Co., Ltd. +0006FC (base 16) Fnet Co., Ltd. + KFSB Bldg. 10th F. 16-2 + Yoido-Dong, Youngdeungpo-ku, + Seoul + KOREA, REPUBLIC OF + +00-06-FD (hex) Comjet Information Systems Corp. +0006FD (base 16) Comjet Information Systems Corp. + 7Fl., No. 103, Fen Liao Street + Nei-Hu, Taipei + TAIWAN, REPUBLIC OF CHINA + +00-06-FE (hex) Celion Networks, Inc. +0006FE (base 16) Celion Networks, Inc. + 3101 E. Pres. George Bush Frwy. #250 + Richardson TX 75082 + UNITED STATES + +00-06-FF (hex) Sheba Systems Co., Ltd. +0006FF (base 16) Sheba Systems Co., Ltd. + 5th Fl. Hyundai Jad B/D + 460-1 Seongnae-Dong, Kangdong-Ku, + Seoul 134-030 + KOREA, REPUBLIC OF + +00-07-00 (hex) Zettamedia Korea +000700 (base 16) Zettamedia Korea + Suite 1008, Kumkang Venturetel, 1108 + Bisandong, Dongangu, Anyangsi + Kyounggido, + KOREA, REPUBLIC OF + +00-07-01 (hex) RACAL-DATACOM +000701 (base 16) RACAL-DATACOM + LAN INTERNETWORKING DIVISION + 155 SWANSON ROAD + BOXBOROUGH MA 01719 + UNITED STATES + +00-07-02 (hex) Varian Medical Systems +000702 (base 16) Varian Medical Systems + 2599 Garcia Avenue + Mountain View CA 94043 + UNITED STATES + +00-07-03 (hex) CSEE Transport +000703 (base 16) CSEE Transport + 4, avenue du CANADA + B.P. 243-91944 Les Ulis + FRANCE + +00-07-05 (hex) Endress & Hauser GmbH & Co +000705 (base 16) Endress & Hauser GmbH & Co + Hauptstrabe 1 - Postfach 1261 + D-79689 Maulberg + GERMANY + +00-07-06 (hex) Sanritz Corporation +000706 (base 16) Sanritz Corporation + 199-1, Shimooibukuro, + Kawagoe-city, Saitama + 350-0848 + JAPAN + +00-07-07 (hex) Interalia Inc. +000707 (base 16) Interalia Inc. + 4110-79th Street N.W. + Calgary, Alberta + T3B 5C2 + CANADA + +00-07-08 (hex) Bitrage Inc. +000708 (base 16) Bitrage Inc. + 100 Southpark Blvd. + Suite 400 + Saint Augustine FL 32086 + UNITED STATES + +00-07-09 (hex) Westerstrand Urfabrik AB +000709 (base 16) Westerstrand Urfabrik AB + Box 133 + SE-545 23 Toreboda + SWEDEN + +00-07-0A (hex) Unicom Automation Co., Ltd. +00070A (base 16) Unicom Automation Co., Ltd. + Silk Bldg 3-31-11 + Honcho, Nakano-ku, + Tokyo 164-0012 + JAPAN + +00-07-0B (hex) Octal, SA +00070B (base 16) Octal, SA + Av. do Forte, 6-Piso 1 + 2790-072 CARNAXIDE + PORTUGAL + +00-07-0C (hex) SVA-Intrusion.com Co. Ltd. +00070C (base 16) SVA-Intrusion.com Co. Ltd. + The 4th Floor, No. 28 Building + 140 Tian Lin Road + Shanghai 20233 + CHINA + +00-07-0D (hex) Cisco Systems Inc. +00070D (base 16) Cisco Systems Inc. + SJ-M/1 + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-0E (hex) Cisco Systems Inc. +00070E (base 16) Cisco Systems Inc. + SJ-M/1 + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-0F (hex) Fujant, Inc. +00070F (base 16) Fujant, Inc. + 6305 Carpinteria Avenue + Suite 300 + Carpinteria CA 93013-2901 + UNITED STATES + +00-07-10 (hex) Adax, Inc. +000710 (base 16) Adax, Inc. + 614 Bancroft Way + Berkeley CA 94556 + UNITED STATES + +00-07-11 (hex) Acterna +000711 (base 16) Acterna + 6620 Network Way + Indianapolis IN 46278 + UNITED STATES + +00-07-12 (hex) JAL Information Technology +000712 (base 16) JAL Information Technology + Network Solution Dep. JAL-Tamachi Bldg. + 15-1, Shibura, 4-chome, Minato-ku, + Tokyo + JAPAN + +00-07-13 (hex) IP One, Inc. +000713 (base 16) IP One, Inc. + Sammi Bldg., 1004 + Daechi-dong Gangnam-gu, + Seoul, 135-083 + KOREA, REPUBLIC OF + +00-07-14 (hex) Brightcom +000714 (base 16) Brightcom + 6 Hanechoshet St., + Tel Aviv 69710 + ISRAEL + +00-07-15 (hex) General Research of Electronics, Inc. +000715 (base 16) General Research of Electronics, Inc. + 3-12-17, Mita, Minato-ku + Tokyo 108-0073 + JAPAN + +00-07-16 (hex) J & S Marine Ltd. +000716 (base 16) J & S Marine Ltd. + Pottington Business Park + Barnstaple + Devon EX31 1LY + UNITED KINGDOM + +00-07-17 (hex) Wieland Electric GmbH +000717 (base 16) Wieland Electric GmbH + Brennerstr. 10-14 + D-96052 Bamberg + GERMANY + +00-07-18 (hex) iCanTek Co., Ltd. +000718 (base 16) iCanTek Co., Ltd. + 2nd Fl. DK Plaza II, 376-5, + Keumgok-dong, Bumdag-ku, + Sungman-si, Kyonggi-do 463-805 + KOREA, REPUBLIC OF + +00-07-19 (hex) Mobiis Co., Ltd. +000719 (base 16) Mobiis Co., Ltd. + 277-1, Shinhwa Bldg. 4F + Yangjae-dong, Seocho-gu, + Seoul, + KOREA, REPUBLIC OF + +00-07-1A (hex) Finedigital Inc. +00071A (base 16) Finedigital Inc. + 4th Fl. Bomi Bldg., 661 Deungchon 3 Dong + Kangseo ku, + Seoul 157-033 + KOREA, REPUBLIC OF + +00-07-1B (hex) CDV Americas Ltd +00071B (base 16) CDV Americas Ltd + 1645-A Autoroute Laval West + Laval Quebec H7L 3W3 + CANADA + +00-07-1C (hex) AT&T Fixed Wireless Services +00071C (base 16) AT&T Fixed Wireless Services + P.O. Box 90759 + Redmond WA 98073-9759 + UNITED STATES + +00-07-1D (hex) Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A. +00071D (base 16) Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A. + c/, Alejandro Moran, 56 + 28025-Madrid + SPAIN + +00-07-1E (hex) Tri-M Engineering / Nupak Dev. Corp. +00071E (base 16) Tri-M Engineering / Nupak Dev. Corp. + 6-1301 Ketch Court + Coquitcaut BC + V3K 6X7 + CANADA + +00-07-1F (hex) European Systems Integration +00071F (base 16) European Systems Integration + 455 Promenade Des Anglas + F-06200 Nice + FRANCE + +00-07-20 (hex) Trutzschler GmbH & Co. KG +000720 (base 16) Trutzschler GmbH & Co. KG + Duvenstr. 82-92 + 41199 Monchengladbach + GERMANY + +00-07-21 (hex) Formac Elektronik GmbH +000721 (base 16) Formac Elektronik GmbH + Dofstr. 33 + 15827 Blankentelde + GERMANY + +00-07-22 (hex) The Nielsen Company +000722 (base 16) The Nielsen Company + 501 Brooker Creek Blvd. + Oldsmar FL 34677 + UNITED STATES + +00-07-23 (hex) ELCON Systemtechnik GmbH +000723 (base 16) ELCON Systemtechnik GmbH + Obere Hauptstrasse 10 + D-09232 Hartmannsdorf + GERMANY + +00-07-24 (hex) Telemax Co., Ltd. +000724 (base 16) Telemax Co., Ltd. + 6th Fl. Sungwoo B/D, 1099-1 + Sanbon-Dong, Kunpo-shi + Kyungki-Do, 435-040 + KOREA, REPUBLIC OF + +00-07-25 (hex) Bematech International Corp. +000725 (base 16) Bematech International Corp. + 5895 Shiloh Road + Suite 111 + Alpharetta GA 30005 + UNITED STATES + +00-07-27 (hex) Zi Corporation (HK) Ltd. +000727 (base 16) Zi Corporation (HK) Ltd. + 30/F, China Resources Building + 26 Harbour Road, Waichai, + HONG KONG + +00-07-28 (hex) Neo Telecom +000728 (base 16) Neo Telecom + East Building 9F, 1T + Venture Tower, 78 Garag-dong + Songpa-gu, Seoul + KOREA, REPUBLIC OF + +00-07-29 (hex) Kistler Instrumente AG +000729 (base 16) Kistler Instrumente AG + Eulachstrasse 22 + CH-8408 Winterthur + SWITZERLAND + +00-07-2A (hex) Innovance Networks +00072A (base 16) Innovance Networks + 19 Fairmont Avenue + Ottawa, Ontario K1Y 1X4 + CANADA + +00-07-2B (hex) Jung Myung Telecom Co., Ltd. +00072B (base 16) Jung Myung Telecom Co., Ltd. + 5Fl Silla Technovil., 39-3 Dang-Dong + Koonpo-shi, Kyung Ki-Do + KOREA, REPUBLIC OF + +00-07-2C (hex) Fabricom +00072C (base 16) Fabricom + Rue Gatti De Gamond 254 + 1190 Bruxelles + BELGIUM + +00-07-2D (hex) CNSystems +00072D (base 16) CNSystems + Baumkircherstrasse 1 + A-8020 Graz + AUSTRIA + +00-07-2E (hex) North Node AB +00072E (base 16) North Node AB + Skeppsloron 42 + 1130 Stockholm + SWEDEN + +00-07-2F (hex) Intransa, Inc. +00072F (base 16) Intransa, Inc. + 2870 Zanker Rd. + Suite 200 + San Jose CA 95134 + UNITED STATES + +00-07-30 (hex) Hutchison OPTEL Telecom Technology Co., Ltd. +000730 (base 16) Hutchison OPTEL Telecom Technology Co., Ltd. + No. 28 Xinwai Street + Beijing + CHINA + +00-07-31 (hex) Ophir-Spiricon Inc +000731 (base 16) Ophir-Spiricon Inc + 60 W 1000 N + Logan UT 84321 + UNITED STATES + +00-07-32 (hex) AAEON Technology Inc. +000732 (base 16) AAEON Technology Inc. + 5F, #135, Lane 235, Pao Chiao Road + Hsin-Tien City + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-07-33 (hex) DANCONTROL Engineering +000733 (base 16) DANCONTROL Engineering + Italiensvej 1-5 + DK-8450 Hammel + DENMARK + +00-07-34 (hex) ONStor, Inc. +000734 (base 16) ONStor, Inc. + 130-B Knowles Drive + Los Gatos CA 95032 + UNITED STATES + +00-07-35 (hex) Flarion Technologies, Inc. +000735 (base 16) Flarion Technologies, Inc. + 135 Route 202/206 South + Bedminster NJ 07921 + UNITED STATES + +00-07-36 (hex) Data Video Technologies Co., Ltd. +000736 (base 16) Data Video Technologies Co., Ltd. + 7F, No. 352, Sec. 2 + Chung-Shan Rd., Chung-Ho City + Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-07-37 (hex) Soriya Co. Ltd. +000737 (base 16) Soriya Co. Ltd. + 2, 8th Floor Hanshin B/O, 136-1, + Hapo-dong, Mapo-gu, + Seoul, + KOREA, REPUBLIC OF + +00-07-38 (hex) Young Technology Co., Ltd. +000738 (base 16) Young Technology Co., Ltd. + D-604, Sigma-II Officetel, + #18, Gumi-dong, Bundgang-gu, + Sungnam-si, Kyeonggi-do 763-741 + KOREA, REPUBLIC OF + +00-07-39 (hex) Motion Media Technology Ltd. +000739 (base 16) Motion Media Technology Ltd. + Severn Bridge, Aust, + Bristol, BS35 4BL + UNITED KINGDOM + +00-07-3A (hex) Inventel Systemes +00073A (base 16) Inventel Systemes + 35, rue Toumefort + 75005 Paris + FRANCE + +00-07-3B (hex) Tenovis GmbH & Co KG +00073B (base 16) Tenovis GmbH & Co KG + Kleyerstrasse 94 + 60326 Frankfurt + GERMANY + +00-07-3C (hex) Telecom Design +00073C (base 16) Telecom Design + Voie Romaine, Zone de Remora + 33170 Gradignan + FRANCE + +00-07-3D (hex) Nanjing Postel Telecommunications Co., Ltd. +00073D (base 16) Nanjing Postel Telecommunications Co., Ltd. + No. 187, ShengZhou Road, + Nanjing City, Jiangsu + 210004 + CHINA + +00-07-3E (hex) China Great-Wall Computer Shenzhen Co., Ltd. +00073E (base 16) China Great-Wall Computer Shenzhen Co., Ltd. + Research & Development Center, Kefa Road + Science Industry Park, Nanshan Disctrict + Shenzhen 518057 + CHINA + +00-07-3F (hex) Woojyun Systec Co., Ltd. +00073F (base 16) Woojyun Systec Co., Ltd. + 4F Han Yang B/D, Yoido-dong + Young Deong Po-ku + Seoul 150-010 + KOREA, REPUBLIC OF + +00-07-40 (hex) Melco Inc. +000740 (base 16) Melco Inc. + MELCO HI-TECH CENTER, + SHIBATA HONDORI 4-15 MINAMI-KU, + NAGOYA 457-8520 + JAPAN + +00-07-41 (hex) Sierra Automated Systems +000741 (base 16) Sierra Automated Systems + 2625 North San Fernando Blvd. + Burbank CA 91504 + UNITED STATES + +00-07-42 (hex) Current Technologies, LLC +000742 (base 16) Current Technologies, LLC + 20420 Century Blvd + Germantown MD 20874 + UNITED STATES + +00-07-43 (hex) Chelsio Communications +000743 (base 16) Chelsio Communications + 170 S. Whismon Rd. + Bldg. D, Ste A + Mountain View CA 94041-1512 + UNITED STATES + +00-07-44 (hex) Unico, Inc. +000744 (base 16) Unico, Inc. + 3725 Nicholson Rd. + Franksville WI 53126 + UNITED STATES + +00-07-45 (hex) Radlan Computer Communications Ltd. +000745 (base 16) Radlan Computer Communications Ltd. + Atidim Technology Park + Bldg. 4 + Tel Aviv 61131 + ISRAEL + +00-07-46 (hex) TURCK, Inc. +000746 (base 16) TURCK, Inc. + 3000 Campus Drive + Plymouth MN 55441 + UNITED STATES + +00-07-47 (hex) Mecalc +000747 (base 16) Mecalc + PO Box 7958 + Centurion 0046 + SOUTH AFRICA + +00-07-48 (hex) The Imaging Source Europe +000748 (base 16) The Imaging Source Europe + Sommerstrasse 34-36 + 28215 Breman + GERMANY + +00-07-49 (hex) CENiX Inc. +000749 (base 16) CENiX Inc. + 5141 California Avenue + Irvine CA 92612 + UNITED STATES + +00-07-4A (hex) Carl Valentin GmbH +00074A (base 16) Carl Valentin GmbH + Neckarstrabe 78-80 + D-78056 VS-Schwenningen + GERMANY + +00-07-4B (hex) Daihen Corporation +00074B (base 16) Daihen Corporation + 2-1-11 Tagawa Yodogawa-ku + Osaka 532-8512 + JAPAN + +00-07-4C (hex) Beicom Inc. +00074C (base 16) Beicom Inc. + 114 King Street + Alexandria VA 22314 + UNITED STATES + +00-07-4D (hex) Zebra Technologies Corp. +00074D (base 16) Zebra Technologies Corp. + 333 Corporate Woods Parkway + Vernon Hills IL 60061 + UNITED STATES + +00-07-4E (hex) Naughty boy co., Ltd. +00074E (base 16) Naughty boy co., Ltd. + Parl Bldg. 6F, 3-15-5 Shibuya + Shibuya-ku, Tokyo + 150-0002 + JAPAN + +00-07-4F (hex) Cisco Systems, Inc. +00074F (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-50 (hex) Cisco Systems, Inc. +000750 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-51 (hex) m·u·t AG +000751 (base 16) m·u·t AG + Meßgeräte für Medizin- und Umwelttechnik + Am Marienhof 2 + Wedel 22880 + GERMANY + +00-07-52 (hex) Rhythm Watch Co., Ltd. +000752 (base 16) Rhythm Watch Co., Ltd. + 321 Shinshukushinden, Showa-Machi, + Kitakatshika-Gun, Saitama + 344-0196 + JAPAN + +00-07-53 (hex) Beijing Qxcomm Technology Co., Ltd. +000753 (base 16) Beijing Qxcomm Technology Co., Ltd. + 4F Tower B, TongTai Building No. 33, + Financial Street, Xicheng District, + Beijing 100032 + CHINA + +00-07-54 (hex) Xyterra Computing, Inc. +000754 (base 16) Xyterra Computing, Inc. + 14505 Hayden Rd., + Suite B340 + Scottsdale AZ 85260-6953 + UNITED STATES + +00-07-55 (hex) Lafon SA +000755 (base 16) Lafon SA + 44 Avenue Victor Meunier + Bassens 33530 + FRANCE + +00-07-56 (hex) Juyoung Telecom +000756 (base 16) Juyoung Telecom + #201, Dunsan Building + 218-1 Walpyeng-Dong, Seogu, + Taejon 302-846 + KOREA, REPUBLIC OF + +00-07-57 (hex) Topcall International AG +000757 (base 16) Topcall International AG + Talpagasse 1 + 1230 Vienna + AUSTRIA + +00-07-58 (hex) Dragonwave +000758 (base 16) Dragonwave + 600-411 Leggett Drive, + Suite 600 + Kanata, Ontario K2K 3C9 + CANADA + +00-07-59 (hex) Boris Manufacturing Corp. +000759 (base 16) Boris Manufacturing Corp. + PO Box 601 + Castle Point NY 12511 + UNITED STATES + +00-07-5A (hex) Air Products and Chemicals, Inc. +00075A (base 16) Air Products and Chemicals, Inc. + 7201 Hamilton Blvd. + Mail Stop C1307 + Allentown PA 18195-1501 + UNITED STATES + +00-07-5B (hex) Gibson Guitars +00075B (base 16) Gibson Guitars + 309 Park Plus Blvd. + Nashville TN 37217 + UNITED STATES + +00-07-5C (hex) Eastman Kodak Company +00075C (base 16) Eastman Kodak Company + 343 State Street + Rochester NY 14650-0124 + UNITED STATES + +00-07-5D (hex) Celleritas Inc. +00075D (base 16) Celleritas Inc. + c/o Celeritas Ltd. + Bezalel 29, Ramat-Gan + ISRAEL + +00-07-5E (hex) Ametek Power Instruments +00075E (base 16) Ametek Power Instruments + 4050 NW 121 Avenue + Coral Springs FL 33065 + UNITED STATES + +00-07-5F (hex) VCS Video Communication Systems AG +00075F (base 16) VCS Video Communication Systems AG + Forchheimer Str. 4 + 90425 Nuernberg + GERMANY + +00-07-60 (hex) TOMIS Information & Telecom Corp. +000760 (base 16) TOMIS Information & Telecom Corp. + Youngdeungpo telephone office - extensio + Youngdeungpodong 35-1, Youngdeungpo-gu + Seoul + KOREA, REPUBLIC OF + +00-07-61 (hex) Logitech SA +000761 (base 16) Logitech SA + Z.I. Moulin du Choc D + CH-1122 Romanel-sur-Morges + SWITZERLAND + +00-07-62 (hex) Group Sense Limited +000762 (base 16) Group Sense Limited + 27/F, Wu Chung House, + 213 Queen's Road East, + Wanchai + HONG KONG + +00-07-63 (hex) Sunniwell Cyber Tech. Co., Ltd. +000763 (base 16) Sunniwell Cyber Tech. Co., Ltd. + 17th Floor Haitai Building #229 + Beisihuan Hong Road, + Beijing 100083 + CHINA + +00-07-64 (hex) YoungWoo Telecom Co. Ltd. +000764 (base 16) YoungWoo Telecom Co. Ltd. + 3F, Sehwa B/D, 355-1 + Yatap-Dong, Bundag-ku + Sungnam-Si Kyungki-Do + KOREA, REPUBLIC OF + +00-07-65 (hex) Jade Quantum Technologies, Inc. +000765 (base 16) Jade Quantum Technologies, Inc. + 5F, No. 116, Hsien Fu Rd., + Taoyuan, + TAIWAN, REPUBLIC OF CHINA + +00-07-66 (hex) Chou Chin Industrial Co., Ltd. +000766 (base 16) Chou Chin Industrial Co., Ltd. + 9F, #35, Chiau An St. Chung Ho City, + Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-07-67 (hex) Yuxing Electronics Company Limited +000767 (base 16) Yuxing Electronics Company Limited + Unit 1808, 18/F Tower 3, + Enterprise Square, 9 Sheung Yuet Road + Kowloon Bay, Kowloon + HONG KONG + +00-07-68 (hex) Danfoss A/S +000768 (base 16) Danfoss A/S + E16-N12, DK-6430 Nordborg + DENMARK + +00-07-69 (hex) Italiana Macchi SpA +000769 (base 16) Italiana Macchi SpA + Via Matteotti 1 + 21040 Oggiona S. Stefano (VA) + ITALY + +00-07-6A (hex) NEXTEYE Co., Ltd. +00076A (base 16) NEXTEYE Co., Ltd. + Shinsegi Plaza 4F, 900-9, + Pyungchon, Dongan, Anyang, + Kyunggi 431-070 + KOREA, REPUBLIC OF + +00-07-6B (hex) Stralfors AB +00076B (base 16) Stralfors AB + Langgatan 21 + S-341 84 Ljungby + SWEDEN + +00-07-6C (hex) Daehanet, Inc. +00076C (base 16) Daehanet, Inc. + #8-2 Chung Jung Rd 2- Ga + Sur Dae Moon, + Seoul 120-012 + KOREA, REPUBLIC OF + +00-07-6D (hex) Flexlight Networks +00076D (base 16) Flexlight Networks + 15 Atir Yeda St. + Kfar Saba 44643 + ISRAEL + +00-07-6E (hex) Sinetica Corporation Limited +00076E (base 16) Sinetica Corporation Limited + Willow House + Llancayo Court + Monmouthshire Usk NP15 1HY + UNITED KINGDOM + +00-07-6F (hex) Synoptics Limited +00076F (base 16) Synoptics Limited + Beacon House, Nuffield Road, + Cambridge CB4 1TF + UNITED KINGDOM + +00-07-70 (hex) Locusnetworks Corporation +000770 (base 16) Locusnetworks Corporation + 9th Fl. Chungjln + 53-5 Wonhyo-Ro 3Ga + Seoul 140-719 + KOREA, REPUBLIC OF + +00-07-71 (hex) Embedded System Corporation +000771 (base 16) Embedded System Corporation + 13-5, Takadanobaba 3-chome, + Shinjuku-ku, Tokyo 169-0075 + JAPAN + +00-07-72 (hex) Alcatel Shanghai Bell Co., Ltd. +000772 (base 16) Alcatel Shanghai Bell Co., Ltd. + No. 388, Ningqiao Road, + Pudong Jinqiao, Shanghai + 201206 + CHINA + +00-07-73 (hex) Ascom Powerline Communications Ltd. +000773 (base 16) Ascom Powerline Communications Ltd. + Belpstr. 37 + 3000 Bern 14 + SWITZERLAND + +00-07-74 (hex) GuangZhou Thinker Technology Co. Ltd. +000774 (base 16) GuangZhou Thinker Technology Co. Ltd. + 109 Zhongshan Ave., Tianhe District + Guangzhou + 510630 + CHINA + +00-07-75 (hex) Valence Semiconductor, Inc. +000775 (base 16) Valence Semiconductor, Inc. + 41 Discovery + Irvine CA 92618 + UNITED STATES + +00-07-76 (hex) Federal APD +000776 (base 16) Federal APD + 42775 Nine Mile Rd. + Novi MI 48375 + UNITED STATES + +00-07-77 (hex) Motah Ltd. +000777 (base 16) Motah Ltd. + 4-4-5 Koishikawa + Bunkyo, Tokyo + 112-0002 + JAPAN + +00-07-78 (hex) GERSTEL GmbH & Co. KG +000778 (base 16) GERSTEL GmbH & Co. KG + Eberhard-Gerstel-Platz 1 + D45473 + Mülheim an der Ruhr + GERMANY + +00-07-79 (hex) Sungil Telecom Co., Ltd. +000779 (base 16) Sungil Telecom Co., Ltd. + #321, Gongdan-Dong, + Gumi-City, Kyoung-Buk + 730-030 + KOREA, REPUBLIC OF + +00-07-7A (hex) Infoware System Co., Ltd. +00077A (base 16) Infoware System Co., Ltd. + Mizorogi Daiichi Bldg 4 F + 1-5-13 Shinjuku, Shinjuku-ku + Tokyo + JAPAN + +00-07-7B (hex) Millimetrix Broadband Networks +00077B (base 16) Millimetrix Broadband Networks + Kibutz Givat Hashelosha 48800 + ISRAEL + +00-07-7C (hex) OnTime Networks +00077C (base 16) OnTime Networks + Orinveien 12 + 0489 Oslo + NORWAY + +00-07-7E (hex) Elrest GmbH +00077E (base 16) Elrest GmbH + Leibnizstr. 10 + D-73230 Kirchheim + GERMANY + +00-07-7F (hex) J Communications Co., Ltd. +00077F (base 16) J Communications Co., Ltd. + 124-4 Ojeon-Dong, Ulwang-City + Kyungki-Do + KOREA, REPUBLIC OF + +00-07-80 (hex) Bluegiga Technologies OY +000780 (base 16) Bluegiga Technologies OY + Taivalmaki II + FIN-02200 ESP00 + FINLAND + +00-07-81 (hex) Itron Inc. +000781 (base 16) Itron Inc. + 2818 N. Sullivan Road + Spokane WA 99216 + UNITED STATES + +00-07-82 (hex) Sun Microsystems, Inc. +000782 (base 16) Sun Microsystems, Inc. + 4200 Network Circle + Santa Clara MA 95054 + UNITED STATES + +00-07-83 (hex) SynCom Network, Inc. +000783 (base 16) SynCom Network, Inc. + 4F, No. 31, Hsintai Road, Chupei City, + Hsinchu Hsien, + TAIWAN, REPUBLIC OF CHINA + +00-07-84 (hex) Cisco Systems Inc. +000784 (base 16) Cisco Systems Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-85 (hex) Cisco Systems Inc. +000785 (base 16) Cisco Systems Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-86 (hex) Wireless Networks Inc. +000786 (base 16) Wireless Networks Inc. + #300, 3016 Fifth Ave. NE + Calgary, Alberta + T2A 6K4 + CANADA + +00-07-87 (hex) Idea System Co., Ltd. +000787 (base 16) Idea System Co., Ltd. + 4-1-21 Shinmei-cho Okaya-shi + Nagano-ken 394-0004 + JAPAN + +00-07-88 (hex) Clipcomm, Inc. +000788 (base 16) Clipcomm, Inc. + 5th Fl, Ssangyang Bldg. + 935-1 Bongcheon-dong, Kwamak-gu, + Seoul 151-827 + KOREA, REPUBLIC OF + +00-07-89 (hex) Eastel Systems Corporation +000789 (base 16) Eastel Systems Corporation + 621-3, Bakdal-Dong + Manan-Gu, Anyang-si + Kyunggi-Do 430-803 + KUWAIT + +00-07-8A (hex) Mentor Data System Inc. +00078A (base 16) Mentor Data System Inc. + No. 24-1, Industry East 4 Rd., + Science Based Industrial Park, + Hsin-Chu, + TAIWAN, REPUBLIC OF CHINA + +00-07-8B (hex) Wegener Communications, Inc. +00078B (base 16) Wegener Communications, Inc. + 11350 Technology Circle + Duluth GA 30097 + UNITED STATES + +00-07-8C (hex) Elektronikspecialisten i Borlange AB +00078C (base 16) Elektronikspecialisten i Borlange AB + Box 50 + 40 MOCKFJÄRD + SE 780 + SWEDEN + +00-07-8D (hex) NetEngines Ltd. +00078D (base 16) NetEngines Ltd. + 146 Walnut Tree Close + Guildford, Surrey + GUI 4UB + UNITED KINGDOM + +00-07-8E (hex) Garz & Friche GmbH +00078E (base 16) Garz & Friche GmbH + Tempowerhving 4 + D-21079 Hamburg + GERMANY + +00-07-8F (hex) Emkay Innovative Products +00078F (base 16) Emkay Innovative Products + 53, Pao Hsing Rd., Hsintien City + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-07-90 (hex) Tri-M Technologies (s) Limited +000790 (base 16) Tri-M Technologies (s) Limited + Blk 25, Kallang Avenue #07-01/04 + Kallang Basin Ind. Est + 339416 + SINGAPORE + +00-07-91 (hex) International Data Communications, Inc. +000791 (base 16) International Data Communications, Inc. + 47873 Fremont Blvd. + Fremont CA 04538 + UNITED STATES + +00-07-92 (hex) Suetron Electronic GmbH +000792 (base 16) Suetron Electronic GmbH + Kurze Strasse 29 + 70794 Filderstadt + GERMANY + +00-07-93 (hex) Shin Satellite Public Company Limited +000793 (base 16) Shin Satellite Public Company Limited + 41/103 Rattanathibet Road, + Nonthaburi 11000, + THAILAND + +00-07-94 (hex) Simple Devices, Inc. +000794 (base 16) Simple Devices, Inc. + 111 Anza Blvd., Suite 120 + Burlingame CA 94010 + UNITED STATES + +00-07-95 (hex) Elitegroup Computer System Co. (ECS) +000795 (base 16) Elitegroup Computer System Co. (ECS) + No. 22, Alley 38, Lane 91, + Sec. 1, Nei Hu Road + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-07-96 (hex) LSI Systems, Inc. +000796 (base 16) LSI Systems, Inc. + 10-1 Minami-kurokawa, + Asao-ku, kawasaki, + Kanagawa 215-0034 + JAPAN + +00-07-97 (hex) Netpower Co., Ltd. +000797 (base 16) Netpower Co., Ltd. + Baekam Bldg., 6F + 123, Karak-Dong, Song-pa Gu + Seoul 138-162 + KOREA, REPUBLIC OF + +00-07-98 (hex) Selea SRL +000798 (base 16) Selea SRL + Via A. Moro No. 69 + 46015 - Cicognara + ITALY + +00-07-99 (hex) Tipping Point Technologies, Inc. +000799 (base 16) Tipping Point Technologies, Inc. + 7501 B N. Capital of TX Hwy. + Austin TX 78731 + UNITED STATES + +00-07-9A (hex) Verint Systems Inc +00079A (base 16) Verint Systems Inc + 1800 Berlier, Suite 440 + Laval, Quebec H7L 4S4 + CANADA + +00-07-9B (hex) Aurora Networks +00079B (base 16) Aurora Networks + 2803 Mission College Blvd. + Santa Clara CA 95054 + UNITED STATES + +00-07-9C (hex) Golden Electronics Technology Co., Ltd. +00079C (base 16) Golden Electronics Technology Co., Ltd. + No. 29, 21st Road, + Taichung Industrial Park, Taichung + TAIWAN, REPUBLIC OF CHINA + +00-07-9D (hex) Musashi Co., Ltd. +00079D (base 16) Musashi Co., Ltd. + 3-21-1, Shimo-ochiai, + Shinjuku-ku, + Tokyo 161-0033 + JAPAN + +00-07-9E (hex) Ilinx Co., Ltd. +00079E (base 16) Ilinx Co., Ltd. + 4th Floor Korea Telecom, Yangjae Branch + Dogok-Dong, Kangnam-ku, + Seoul + KOREA, REPUBLIC OF + +00-07-9F (hex) Action Digital Inc. +00079F (base 16) Action Digital Inc. + 10650 Main St. + Suite 102 + Fairfax VA 22030 + UNITED STATES + +00-07-A0 (hex) e-Watch Inc. +0007A0 (base 16) e-Watch Inc. + 7800 IH 10 West + Suite 700 + San Antonio TX 78229 + UNITED STATES + +00-07-A1 (hex) VIASYS Healthcare GmbH +0007A1 (base 16) VIASYS Healthcare GmbH + Leibnizstrasse 7 + Hoechberg Bavaria 97204 + GERMANY + +00-07-A2 (hex) Opteon Corporation +0007A2 (base 16) Opteon Corporation + 70 Hastings Street + Wellesley MA 02481 + UNITED STATES + +00-07-A3 (hex) Ositis Software, Inc. +0007A3 (base 16) Ositis Software, Inc. + 6120 Stoneridge Mall Road + Suite 210 + Pleasanton CA 94588 + UNITED STATES + +00-07-A4 (hex) GN Netcom Ltd. +0007A4 (base 16) GN Netcom Ltd. + 12-13 Sedling Road, Wear Est., District + Washington, Tyne and Wear + England NE38 9BZ + UNITED KINGDOM + +00-07-A5 (hex) Y.D.K Co. Ltd. +0007A5 (base 16) Y.D.K Co. Ltd. + 1705, Oshitate, Inagi-City, + Tokyo, + JAPAN + +00-07-A6 (hex) Home Automation, Inc. +0007A6 (base 16) Home Automation, Inc. + 4330 Michoud Blvd. + New Orleans LA 70129 + UNITED STATES + +00-07-A7 (hex) A-Z Inc. +0007A7 (base 16) A-Z Inc. + 5-5-17 Kamikoushien + Nishinomiya City, Hyogo + JAPAN + +00-07-A8 (hex) Haier Group Technologies Ltd. +0007A8 (base 16) Haier Group Technologies Ltd. + No. 1 Haier Road, Hi-tech Zone + Qingdao, + CHINA + +00-07-A9 (hex) Novasonics +0007A9 (base 16) Novasonics + 1390 Willow Road + Menlo Park CA 94025 + UNITED STATES + +00-07-AA (hex) Quantum Data Inc. +0007AA (base 16) Quantum Data Inc. + 2111 Big Timber Rd. + Elgin IL 60123-1100 + UNITED STATES + +00-07-AC (hex) Eolring +0007AC (base 16) Eolring + 10 Rue Alfred Kastler + 14000 Caen + FRANCE + +00-07-AD (hex) Pentacon GmbH Foto-und Feinwerktechnik +0007AD (base 16) Pentacon GmbH Foto-und Feinwerktechnik + Enderstrabe 94 + 01277 Dresden + GERMANY + +00-07-AE (hex) Britestream Networks, Inc. +0007AE (base 16) Britestream Networks, Inc. + 12401 Research Blvd. + Building Two, Suite 275 + Austin TX 78759 + UNITED STATES + +00-07-AF (hex) N-Tron Corp. +0007AF (base 16) N-Tron Corp. + 820 S. University Blvd. + Suite 4E + Mobile AL 36609 + UNITED STATES + +00-07-B0 (hex) Office Details, Inc. +0007B0 (base 16) Office Details, Inc. + 25 Ottawa + 4th Floor + Grand Rapids MI 49503 + UNITED STATES + +00-07-B1 (hex) Equator Technologies +0007B1 (base 16) Equator Technologies + 1300 White Oaks Rd. + Campbell CA 95008 + UNITED STATES + +00-07-B2 (hex) Transaccess S.A. +0007B2 (base 16) Transaccess S.A. + R. Galeno De Castro, 1445 + Turubatuba 04696-040 + Sao Paulo SP + BRAZIL + +00-07-B3 (hex) Cisco Systems Inc. +0007B3 (base 16) Cisco Systems Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-B4 (hex) Cisco Systems Inc. +0007B4 (base 16) Cisco Systems Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-B5 (hex) Any One Wireless Ltd. +0007B5 (base 16) Any One Wireless Ltd. + Namseoul Bd., 8F, 1304-3 + Seocho 4-Dong, Seocho-Gu + Seoul + KOREA, REPUBLIC OF + +00-07-B6 (hex) Telecom Technology Ltd. +0007B6 (base 16) Telecom Technology Ltd. + Docklands Innovation Park + 128-130 East Wall Road + Dublin 3 + IRELAND + +00-07-B7 (hex) Samurai Ind. Prods Eletronicos Ltda +0007B7 (base 16) Samurai Ind. Prods Eletronicos Ltda + R-Nebraska, 443 S/2 2o Andar + Brooklin Novo - Sao Paulo + 04560-011 + BRAZIL + +00-07-B8 (hex) American Predator Corp. +0007B8 (base 16) American Predator Corp. + 18630 Sutter Blvd. + Morgan Hill CA 95037 + UNITED STATES + +00-07-B9 (hex) Ginganet Corporation +0007B9 (base 16) Ginganet Corporation + Kintetsu Shin Namba Building + Minato Machi 1-4-38 Naniwaku + Osaka Shi 1556-0017 + JAPAN + +00-07-BA (hex) UTStarcom, Inc. +0007BA (base 16) UTStarcom, Inc. + 1275 Barbor Bay PKWY + Alameda CA 94502 + UNITED STATES + +00-07-BB (hex) Candera Inc. +0007BB (base 16) Candera Inc. + 673 South Milpitas Blvd. + Milpitas CA 95035 + UNITED STATES + +00-07-BC (hex) Identix Inc. +0007BC (base 16) Identix Inc. + 6591 Sierra Lane + Dublin CA 94568 + UNITED STATES + +00-07-BD (hex) Radionet Ltd. +0007BD (base 16) Radionet Ltd. + Keilaranta 6 + 02150 ESP00 + FINLAND + +00-07-BE (hex) DataLogic SpA +0007BE (base 16) DataLogic SpA + Via Candini, 2 + 40012 Lippo di Calderara di Reno + Bologna + ITALY + +00-07-BF (hex) Armillaire Technologies, Inc. +0007BF (base 16) Armillaire Technologies, Inc. + 10411 Motor City Drive + Bethesda MD 20817 + UNITED STATES + +00-07-C0 (hex) NetZerver Inc. +0007C0 (base 16) NetZerver Inc. + 26 West Lone Cactus Drive + Phoenix AZ 85027 + UNITED STATES + +00-07-C1 (hex) Overture Networks, Inc. +0007C1 (base 16) Overture Networks, Inc. + 507 Airport Blvd + Suite 111 + Morrisville NC 27560 + UNITED STATES + +00-07-C2 (hex) Netsys Telecom +0007C2 (base 16) Netsys Telecom + 4F, KyungNam B/D, 830-48, YeokSam-Dong + Kangnam-Gu, + Seoul 135-080 + KOREA, REPUBLIC OF + +00-07-C3 (hex) Thomson +0007C3 (base 16) Thomson + 5-7, rue Salomon de Rothschild + Suresnes + 92150 + FRANCE + +00-07-C4 (hex) JEAN Co. Ltd. +0007C4 (base 16) JEAN Co. Ltd. + 7F, 2, Rei Kuang Road, + Nei Hu, + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-07-C5 (hex) Gcom, Inc. +0007C5 (base 16) Gcom, Inc. + 1800 Woodfield Dr. + Savoy IL 61874 + UNITED STATES + +00-07-C6 (hex) VDS Vosskuhler GmbH +0007C6 (base 16) VDS Vosskuhler GmbH + Weibe Breite 7 + D-49084 Osnabruck + GERMANY + +00-07-C7 (hex) Synectics Systems Limited +0007C7 (base 16) Synectics Systems Limited + 3 Acorn Business Park + Wooseats Close, Sheffield + S8 OTB + UNITED KINGDOM + +00-07-C8 (hex) Brain21, Inc. +0007C8 (base 16) Brain21, Inc. + 19F Mesa B/D, 204 Hoihyun-Dong + Joong-Gu + Seoul 100-051 + KOREA, REPUBLIC OF + +00-07-C9 (hex) Technol Seven Co., Ltd. +0007C9 (base 16) Technol Seven Co., Ltd. + 25-16 Tobehon-cho, Nisi-ku, + Yokohama, 220-0041 + JAPAN + +00-07-CA (hex) Creatix Polymedia Ges Fur Kommunikaitonssysteme +0007CA (base 16) Creatix Polymedia Ges Fur Kommunikaitonssysteme + Heinrich-Barth-Str. 3 + 66115 Saarbruecken + GERMANY + +00-07-CB (hex) Freebox SA +0007CB (base 16) Freebox SA + 8 rue de la Ville l'Eveque + Paris 75008 + FRANCE + +00-07-CC (hex) Kaba Benzing GmbH +0007CC (base 16) Kaba Benzing GmbH + Albertistrabe 3 + 78056 Villigen-Schwenningen + GERMANY + +00-07-CD (hex) NMTEL Co., Ltd. +0007CD (base 16) NMTEL Co., Ltd. + Suite 1303 1.B.C. 917-6 + Mok-1 dong Tangcheon-ku + Seoul + KOREA, REPUBLIC OF + +00-07-CE (hex) Cabletime Limited +0007CE (base 16) Cabletime Limited + 64 Greenham Road + Newbury, Berkshire, + RG14 7HX + UNITED KINGDOM + +00-07-CF (hex) Anoto AB +0007CF (base 16) Anoto AB + Solvegatan 41 + SE-223 70 Lund + SWEDEN + +00-07-D0 (hex) Automat Engenharia de Automaoa Ltda. +0007D0 (base 16) Automat Engenharia de Automaoa Ltda. + Rua Santo Antonio, 917 - Reboucas + Curitiba - PR + 80230-120 + BRAZIL + +00-07-D1 (hex) Spectrum Signal Processing Inc. +0007D1 (base 16) Spectrum Signal Processing Inc. + #200-2700 Production Way + Burnaby, BC V5A 4X1 + CANADA + +00-07-D2 (hex) Logopak Systeme +0007D2 (base 16) Logopak Systeme + Dorfstrasse 40 + D-24628 Hartenholm + GERMANY + +00-07-D3 (hex) Stork Digital Imaging B.V. +0007D3 (base 16) Stork Digital Imaging B.V. + Handelstraat 6 + P.O. Box 210 + Boxmeer 5830-AE + NETHERLANDS + +00-07-D4 (hex) Zhejiang Yutong Network Communication Co Ltd. +0007D4 (base 16) Zhejiang Yutong Network Communication Co Ltd. + 805 HuaXing Technical Building + 477# WenSan Road, HangZhou + Zhejiang + CHINA + +00-07-D5 (hex) 3e Technologies Int;., Inc. +0007D5 (base 16) 3e Technologies Int;., Inc. + 15800 Crabbs Branch Way + Suite 290 + Rockville MD 20855 + UNITED STATES + +00-07-D6 (hex) Commil Ltd. +0007D6 (base 16) Commil Ltd. + P.O. Box 10050 + Petah Tikva 49001 + ISRAEL + +00-07-D7 (hex) Caporis Networks AG +0007D7 (base 16) Caporis Networks AG + Sueggelstr. 31 + D-44532 Luenen + GERMANY + +00-07-D8 (hex) Hitron Systems Inc. +0007D8 (base 16) Hitron Systems Inc. + 135-220 Hitron B/D 726-5 + Suso-Dong, Kangnam Gu + Seoul + KOREA, REPUBLIC OF + +00-07-D9 (hex) Splicecom +0007D9 (base 16) Splicecom + Little Gillions, The Green + Croxley Green, Rickmansworth + Herts WD3 3HY + UNITED KINGDOM + +00-07-DA (hex) Neuro Telecom Co., Ltd. +0007DA (base 16) Neuro Telecom Co., Ltd. + 2F Misung B/D, 938-7 + Hoge-dong, Dongan-gu + Kyunggi-do + KOREA, REPUBLIC OF + +00-07-DB (hex) Kirana Networks, Inc. +0007DB (base 16) Kirana Networks, Inc. + 331 Newman Springs Road + Bldg. 1 4th Floor + Red Bank NJ 07701 + UNITED STATES + +00-07-DC (hex) Atek Co, Ltd. +0007DC (base 16) Atek Co, Ltd. + B dong #205 hanyang venture park + 685-20 songsu1gadong song donggu, + Seoul + KOREA, REPUBLIC OF + +00-07-DD (hex) Cradle Technologies +0007DD (base 16) Cradle Technologies + 3130 West Warren Ave. + Fremont CA 94538 + UNITED STATES + +00-07-DE (hex) eCopilt AB +0007DE (base 16) eCopilt AB + Veddestavagen 24 + SE-175 62 Jarfalla + SWEDEN + +00-07-DF (hex) Vbrick Systems Inc. +0007DF (base 16) Vbrick Systems Inc. + 12 Beaumont Road + Wallingford CT 06492 + UNITED STATES + +00-07-E0 (hex) Palm Inc. +0007E0 (base 16) Palm Inc. + 950 West Maude Ave + Sunnyvale CA 94085-2801 + UNITED STATES + +00-07-E1 (hex) WIS Communications Co. Ltd. +0007E1 (base 16) WIS Communications Co. Ltd. + 4/F Building 533 + Bugua Sixth Road + Shenzhen Guangdong Providence + CHINA + +00-07-E2 (hex) Bitworks, Inc. +0007E2 (base 16) Bitworks, Inc. + #1 Bitworks Way + Prairie Grove AR 72753 + UNITED STATES + +00-07-E3 (hex) Navcom Technology, Inc. +0007E3 (base 16) Navcom Technology, Inc. + 123 West Torrance Blvd., + Suite 101 + Redondo Beach CA 90277 + UNITED STATES + +00-07-E4 (hex) SoftRadio Co., Ltd. +0007E4 (base 16) SoftRadio Co., Ltd. + 2F, Dong-Bok B/D 645-18 + Yeoksam-Dong, Kangnam-Gu + Seoul + KOREA, REPUBLIC OF + +00-07-E5 (hex) Coup Corporation +0007E5 (base 16) Coup Corporation + 1-24-4 Marusen 2nd Bld. 4F, + Higashi-Ueno, Taito-ku + Tokyo + JAPAN + +00-07-E6 (hex) edgeflow Canada Inc. +0007E6 (base 16) edgeflow Canada Inc. + 329 March Road + Kanata, Ontario + K2K 2E1 + CANADA + +00-07-E7 (hex) FreeWave Technologies +0007E7 (base 16) FreeWave Technologies + 1880 S. Flaitron Ct. + Ste. F + Boulder CO 80301 + UNITED STATES + +00-07-E8 (hex) St. Bernard Software +0007E8 (base 16) St. Bernard Software + 15015 Avenue of Science + San Diego CA 92128 + UNITED STATES + +00-07-E9 (hex) Intel Corporation +0007E9 (base 16) Intel Corporation + MS: JF3-420 + 2111 NE 25th Ave. + Hillsboro OR 97124 + UNITED STATES + +00-07-EA (hex) Massana, Inc. +0007EA (base 16) Massana, Inc. + 2901 Tasman Drive + Suite 106 + Santa Clara CA 95054 + UNITED STATES + +00-07-EB (hex) Cisco Systems Inc. +0007EB (base 16) Cisco Systems Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-EC (hex) Cisco Systems Inc. +0007EC (base 16) Cisco Systems Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-07-ED (hex) Altera Corporation +0007ED (base 16) Altera Corporation + 101 Innovation Drive + MS 2305 + San Jose CA 95134 + UNITED STATES + +00-07-EE (hex) telco Informationssysteme GmbH +0007EE (base 16) telco Informationssysteme GmbH + Schulstrasse 38 + D 0912 Chemnitz + GERMANY + +00-07-EF (hex) Lockheed Martin Tactical Systems +0007EF (base 16) Lockheed Martin Tactical Systems + 3333 Pilot Knob Road + Eagan MN 55121 + UNITED STATES + +00-07-F0 (hex) Beckett LogiSync LLC +0007F0 (base 16) Beckett LogiSync LLC + 1313 Lear Industrial Parkway + Avon OH 44011 + UNITED STATES + +00-07-F1 (hex) TeraBurst Networks Inc. +0007F1 (base 16) TeraBurst Networks Inc. + 985 Stewart Drive + Sunnyvale CA 94086 + UNITED STATES + +00-07-F2 (hex) IOA Corporation +0007F2 (base 16) IOA Corporation + 350 Potrero Ave. + Sunnyvale CA 94085 + UNITED STATES + +00-07-F3 (hex) Thinkengine Networks +0007F3 (base 16) Thinkengine Networks + 100 Nickerson Road + Marlborough MA 01752 + UNITED STATES + +00-07-F4 (hex) Eletex Co., Ltd. +0007F4 (base 16) Eletex Co., Ltd. + 8-2-56 Nankou-Higashi Suminoe-ku + Osaka 559-0031 + JAPAN + +00-07-F5 (hex) Bridgeco Co AG +0007F5 (base 16) Bridgeco Co AG + Ringstr. 14 + CH 8600 Duebendorf + SWITZERLAND + +00-07-F6 (hex) Qqest Software Systems +0007F6 (base 16) Qqest Software Systems + 860 East 4500 South #200 + Murray UT 84107 + UNITED STATES + +00-07-F7 (hex) Galtronics +0007F7 (base 16) Galtronics + 4645 East Cotton Center Blvd. + Bldg. Two + Phoenix AZ 85040 + UNITED STATES + +00-07-F8 (hex) ITDevices, Inc. +0007F8 (base 16) ITDevices, Inc. + 606 110th Ave. NE + Bellevue WA 98004 + UNITED STATES + +00-07-F9 (hex) Phonetics, Inc. +0007F9 (base 16) Phonetics, Inc. + 901 Tryens Road + Aston PA 19014 + UNITED STATES + +00-07-FA (hex) ITT Co., Ltd. +0007FA (base 16) ITT Co., Ltd. + 1-14-7, Mukohjyuku, + Hamamatsu, Shizuoka 430 + JAPAN + +00-07-FB (hex) Giga Stream UMTS Technologies GmbH +0007FB (base 16) Giga Stream UMTS Technologies GmbH + Konrad-Zuse-Strabe 7 + D-66115 Saarbrucken + GERMANY + +00-07-FC (hex) Adept Systems Inc. +0007FC (base 16) Adept Systems Inc. + 360 W. 920 N. + Orem UT 84057 + UNITED STATES + +00-07-FD (hex) LANergy Ltd. +0007FD (base 16) LANergy Ltd. + Imperial House, Imperial Way + Newport, Gwent NP10 8UH + UNITED KINGDOM + +00-07-FE (hex) Rigaku Corporation +0007FE (base 16) Rigaku Corporation + 3-9-12, Matsubara-cho + Akishima-shi + Tokyo 196-8666 + JAPAN + +00-07-FF (hex) Gluon Networks +0007FF (base 16) Gluon Networks + 5401 Old Redwood Hwy. + Petaluma CA 94954 + UNITED STATES + +00-08-00 (hex) MULTITECH SYSTEMS, INC. +000800 (base 16) MULTITECH SYSTEMS, INC. + 2205 WOODALE DRIVE + MOUNDS VIEW MN 55112 + UNITED STATES + +00-08-01 (hex) HighSpeed Surfing Inc. +000801 (base 16) HighSpeed Surfing Inc. + 44790 S. Grimmer Blvd. + Suite 100 + Fremont CA 94538 + UNITED STATES + +00-08-02 (hex) Compaq Computer Corporation +000802 (base 16) Compaq Computer Corporation + 20555 State Highway 249 + Houston TX 77070 + UNITED STATES + +00-08-03 (hex) Cos Tron +000803 (base 16) Cos Tron + 3F Boolim B/D, 1431-22, + Kwanyang-Dong, Dongon-Gu, + Anyang 431-061 + KOREA, REPUBLIC OF + +00-08-04 (hex) ICA Inc. +000804 (base 16) ICA Inc. + 542-1 Noguki + Kuki-shi, Saitamn + JAPAN + +00-08-05 (hex) Techno-Holon Corporation +000805 (base 16) Techno-Holon Corporation + 3-19-2, Takamatsu-cho + Tachikawa-shi + Tokyo 190-0011 + JAPAN + +00-08-06 (hex) Raonet Systems, Inc. +000806 (base 16) Raonet Systems, Inc. + West Wing 14F, IT Venture Tower 78 + Garakbon-dong, Songpa, + Seoul 138-803 + KOREA, REPUBLIC OF + +00-08-07 (hex) Access Devices Limited +000807 (base 16) Access Devices Limited + Sixth Floor, 58 Oxbridge Road + Ealing, London W5 2ST + UNITED KINGDOM + +00-08-08 (hex) PPT Vision, Inc. +000808 (base 16) PPT Vision, Inc. + 12988 Valley View Rd. + Eden Prairie MN 55344 + UNITED STATES + +00-08-09 (hex) Systemonic AG +000809 (base 16) Systemonic AG + Am Waldschloesschen 1 + D-01099 Dresden + GERMANY + +00-08-0A (hex) Espera-Werke GmbH +00080A (base 16) Espera-Werke GmbH + Moltkestrasse 17- 33 + 47058 Duisburg + GERMANY + +00-08-0B (hex) Birka BPA Informationssystem AB +00080B (base 16) Birka BPA Informationssystem AB + Box 20100 + 161 02 Bromma + SWEDEN + +00-08-0C (hex) VDA Elettronica spa +00080C (base 16) VDA Elettronica spa + viale Lino Zanussi, 3 + 33170 Pordenone + ITALY + +00-08-0D (hex) Toshiba +00080D (base 16) Toshiba + 2-9, Suehiro-cho, + Ome-city, + Tokyo 198-8710 + JAPAN + +00-08-0E (hex) Motorola, BCS +00080E (base 16) Motorola, BCS + 6450 Sequence Dr. + San Diego CA 92121 + UNITED STATES + +00-08-0F (hex) Proximion Fiber Optics AB +00080F (base 16) Proximion Fiber Optics AB + Isafjordsgatan 9 + SE-16440 Kista + SWEDEN + +00-08-10 (hex) Key Technology, Inc. +000810 (base 16) Key Technology, Inc. + 150 Avery St. + Walla Walla WA 99362 + UNITED STATES + +00-08-11 (hex) VOIX Corporation +000811 (base 16) VOIX Corporation + 1991-3 4th Floor Top's Venture Tower + Seo Cho-Dong, Seo cho-gu + Seoul 138-090 + KOREA, REPUBLIC OF + +00-08-12 (hex) GM-2 Corporation +000812 (base 16) GM-2 Corporation + Shiba-Matushira-Bldg. + 6F 3-3-12,Shiba + Tokyo Minato-ku 105-0014 + JAPAN + +00-08-13 (hex) Diskbank, Inc. +000813 (base 16) Diskbank, Inc. + 3F Focus Building, 725-25 + Yeoksam-dong, Kangnam-gu + Seoul 135-080 + KOREA, REPUBLIC OF + +00-08-14 (hex) TIL Technologies +000814 (base 16) TIL Technologies + Europark DePichaury, BAT 9 + 13856 AIX en Providence + FRANCE + +00-08-15 (hex) CATS Co., Ltd. +000815 (base 16) CATS Co., Ltd. + 751-2 Kachida-cho, + Tsuzuki-ku, Yokohama + 224-0034 + JAPAN + +00-08-16 (hex) Bluetags A/S +000816 (base 16) Bluetags A/S + Nytorv 11, 4 Floor + 9000 Aalborg + DENMARK + +00-08-17 (hex) EmergeCore Networks LLC +000817 (base 16) EmergeCore Networks LLC + 10542 S. Jordan Gateway + Suite 150 + South Jordan UT 84095 + UNITED STATES + +00-08-18 (hex) Pixelworks, Inc. +000818 (base 16) Pixelworks, Inc. + 7700 SW Mohawk Street + Tualatin OR 97062 + UNITED STATES + +00-08-19 (hex) Banksys +000819 (base 16) Banksys + Haachtsesteenweg 1442 + 1130 Brussel + BELGIUM + +00-08-1A (hex) Sanrad Intelligence Storage Communications (2000) Ltd. +00081A (base 16) Sanrad Intelligence Storage Communications (2000) Ltd. + 32 Habarzel St., Entrace B + Tel-Aviv 69710 + ISRAEL + +00-08-1B (hex) Windigo Systems +00081B (base 16) Windigo Systems + 2210 O'Toole Ave. #200 + San Jose CA 95131 + UNITED STATES + +00-08-1C (hex) @pos.com +00081C (base 16) @pos.com + 3051 North First Street + San Jose CA 95134 + UNITED STATES + +00-08-1D (hex) Ipsil, Incorporated +00081D (base 16) Ipsil, Incorporated + 7945 MacArthur Blvd. + Suite 212 + Cabin John MD 20818 + UNITED STATES + +00-08-1E (hex) Repeatit AB +00081E (base 16) Repeatit AB + Farogatan 7 + SE16440 Kista + SWEDEN + +00-08-1F (hex) Pou Yuen Tech Corp. Ltd. +00081F (base 16) Pou Yuen Tech Corp. Ltd. + 16F, No. 107, Sect. 3, Taichung Keng Rd. + Taichung City 407, + TAIWAN, REPUBLIC OF CHINA + +00-08-20 (hex) Cisco Systems Inc. +000820 (base 16) Cisco Systems Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-08-21 (hex) Cisco Systems Inc. +000821 (base 16) Cisco Systems Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-08-22 (hex) InPro Comm +000822 (base 16) InPro Comm + 11F, No. 93 Shuei-Yuan Street + Hsinchu, 300 + TAIWAN, REPUBLIC OF CHINA + +00-08-23 (hex) Texa Corp. +000823 (base 16) Texa Corp. + Nara Bldg. 3F, 2-2-8 Shin-Yokohama, + Kohoku-ku, Yokohama + 222-0033 + JAPAN + +00-08-24 (hex) Copitrak Inc +000824 (base 16) Copitrak Inc + 8390 Mayrand Street + Montreal Quebec H4P 2C9 + CANADA + +00-08-25 (hex) Acme Packet +000825 (base 16) Acme Packet + 71 Third Avenue + Burllington + Woburn MA 01803 + UNITED STATES + +00-08-26 (hex) Colorado Med Tech +000826 (base 16) Colorado Med Tech + 6175 Longbow Dr. + Boulder CO 80301 + UNITED STATES + +00-08-27 (hex) Pirelli Broadband Solutions +000827 (base 16) Pirelli Broadband Solutions + Viale Sarca 222 + Milano 20126 + ITALY + +00-08-28 (hex) Koei Engineering Ltd. +000828 (base 16) Koei Engineering Ltd. + 3-40, 5-Chome + Kire-nishi Hirano-ku + Osaku 547-0026 + JAPAN + +00-08-29 (hex) Aval Nagasaki Corporation +000829 (base 16) Aval Nagasaki Corporation + 6-42 Tukuba Isahaya + Nagasaki + 854-0065 + JAPAN + +00-08-2A (hex) Powerwallz Network Security +00082A (base 16) Powerwallz Network Security + 120-13160 Vanier Place, + Richmond, BC, + V6V 2J2 + CANADA + +00-08-2B (hex) Wooksung Electronics, Inc. +00082B (base 16) Wooksung Electronics, Inc. + Jaho-Bldg. 6F, Tanbang-Dong, + Seo-Gu, Taejon, 302-223 + KOREA, REPUBLIC OF + +00-08-2C (hex) Homag AG +00082C (base 16) Homag AG + Abt. Est., Homag Str. 3-5 + D-72296 Schopfloch + GERMANY + +00-08-2D (hex) Indus Teqsite Private Limited +00082D (base 16) Indus Teqsite Private Limited + #7, Arya Gowder Road, + West Mambalam, Chennai, + Tamil Nadu 600033 + INDIA + +00-08-2E (hex) Multitone Electronics PLC +00082E (base 16) Multitone Electronics PLC + Multitone House, Beggarwood Lane + Basingstoke RG23 7LL + UNITED KINGDOM + +00-08-4E (hex) DivergeNet, Inc. +00084E (base 16) DivergeNet, Inc. + 2142 Bering Dr. + San Jose CA 95131 + UNITED STATES + +00-08-4F (hex) Qualstar Corporation +00084F (base 16) Qualstar Corporation + 3990B Heritage Oak Court + Simi Valley CA 93063 + UNITED STATES + +00-08-50 (hex) Arizona Instrument Corp. +000850 (base 16) Arizona Instrument Corp. + 1912 W. 4th Street + Tempe AZ 85281 + UNITED STATES + +00-08-51 (hex) Canadian Bank Note Company, Ltd. +000851 (base 16) Canadian Bank Note Company, Ltd. + 18 Auriga Dr. + Nepean, Ont. + K2E 7T9 + CANADA + +00-08-52 (hex) Davolink Co. Inc. +000852 (base 16) Davolink Co. Inc. + Room-604, Kumhwa Plaza, + 1142-5, Sanbon-Dong, Kunpo-Si + Kyunggi-Do 435-040 + KOREA, REPUBLIC OF + +00-08-53 (hex) Schleicher GmbH & Co. Relaiswerke KG +000853 (base 16) Schleicher GmbH & Co. Relaiswerke KG + Pichelswerderstrasse 3-5 + D-13597 Berlin + GERMANY + +00-08-54 (hex) Netronix, Inc. +000854 (base 16) Netronix, Inc. + 3F-1, No. 31, Hsin-Tai Road, + Chupei City, Hsinchu Hsien + TAIWAN, REPUBLIC OF CHINA + +00-08-55 (hex) NASA-Goddard Space Flight Center +000855 (base 16) NASA-Goddard Space Flight Center + Code 561 + Greenbelt MD 20771 + UNITED STATES + +00-08-56 (hex) Gamatronic Electronic Industries Ltd. +000856 (base 16) Gamatronic Electronic Industries Ltd. + Hartum Street 14 + Jerusalem 97774 + ISRAEL + +00-08-57 (hex) Polaris Networks, Inc. +000857 (base 16) Polaris Networks, Inc. + 6810 Santa Teresa Blvd. + San Jose CA 95119 + UNITED STATES + +00-08-58 (hex) Novatechnology Inc. +000858 (base 16) Novatechnology Inc. + Nova Bldg. 4F 641 03 + Yuksam-Dong Kangnam-ku + Seoul 135-080 + KOREA, REPUBLIC OF + +00-08-59 (hex) ShenZhen Unitone Electronics Co., Ltd. +000859 (base 16) ShenZhen Unitone Electronics Co., Ltd. + 2 Southern Floor 702 Building + BaGuaLing Industrial Zone Shenzhen + CHINA + +00-08-5A (hex) IntiGate Inc. +00085A (base 16) IntiGate Inc. + 309E IT Venture Tower + 78, Garakbon-Dong, Songpa-Gu + Seoul 138-803 + KOREA, REPUBLIC OF + +00-08-5B (hex) Hanbit Electronics Co., Ltd. +00085B (base 16) Hanbit Electronics Co., Ltd. + 414-5, Woncheon-Dong, Paldal-Gu + Suwon-City, Kyoungki-Do, 442-823 + KOREA, REPUBLIC OF + +00-08-5C (hex) Shanghai Dare Technologies Co. Ltd. +00085C (base 16) Shanghai Dare Technologies Co. Ltd. + 23F, China Merchants Tower, + No. 161, East LujiaZui Road + Pudong New Area, Shanghai + CHINA + +00-08-5D (hex) Aastra +00085D (base 16) Aastra + 1160 Route 22 East + Bridgewater NJ 08807 + UNITED STATES + +00-08-5E (hex) PCO AG +00085E (base 16) PCO AG + Donaupark 11 + 93309 Kelheim + GERMANY + +00-08-5F (hex) Picanol N.V. +00085F (base 16) Picanol N.V. + Polenlaan 3-7 + 8900 Ieper + BELGIUM + +00-08-60 (hex) LodgeNet Entertainment Corp. +000860 (base 16) LodgeNet Entertainment Corp. + 3900 W. Innovation Street + Sioux Falls SD 57107 + UNITED STATES + +00-08-61 (hex) SoftEnergy Co., Ltd. +000861 (base 16) SoftEnergy Co., Ltd. + 346 Sangwangsipli-Dong, + Sung Dong-Gu, Seoul + KOREA, REPUBLIC OF + +00-08-62 (hex) NEC Eluminant Technologies, Inc. +000862 (base 16) NEC Eluminant Technologies, Inc. + 14700 Avion Parkway + Chantilly VA 20151 + UNITED STATES + +00-08-63 (hex) Entrisphere Inc. +000863 (base 16) Entrisphere Inc. + 1601 S. De Anza Blvd. + Suite 250 + Cupertino CA 95014 + UNITED STATES + +00-08-64 (hex) Fasy S.p.A. +000864 (base 16) Fasy S.p.A. + Via Tognasca 7 + Gallarate Varese 21013 + ITALY + +00-08-65 (hex) JASCOM CO., LTD +000865 (base 16) JASCOM CO., LTD + JUAN INDUSTRIAL COMPLEX 330, 17-1, + JUAN-DONG NAM-GU INCHEON 402-200 + KOREA, REPUBLIC OF + +00-08-66 (hex) DSX Access Systems, Inc. +000866 (base 16) DSX Access Systems, Inc. + 10731 Rockwall Rd. + Dallas TX 75238 + UNITED STATES + +00-08-67 (hex) Uptime Devices +000867 (base 16) Uptime Devices + 3160 Bee Caves Rd + Suite 204 + Austin Texas 78746 + UNITED STATES + +00-08-68 (hex) PurOptix +000868 (base 16) PurOptix + 1945 Camino Vida Roble + Suite C + Carlsbad CA 92008 + UNITED STATES + +00-08-69 (hex) Command-e Technology Co.,Ltd. +000869 (base 16) Command-e Technology Co.,Ltd. + Suite 709, Zhongsheng Mansion, + No.2 Bei FengWo Rd. + Beijing 100038 + CHINA + +00-08-6A (hex) Industrie Technik IPS GmbH +00086A (base 16) Industrie Technik IPS GmbH + Wamslerstr. 5 + 81829 Munchen + Deutschland + GERMANY + +00-08-6B (hex) MIPSYS +00086B (base 16) MIPSYS + 19C, Avenue des Indes + LES ULIS Cedex FR-91969 + FRANCE + +00-08-6C (hex) Plasmon LMS +00086C (base 16) Plasmon LMS + 4425 ArrowsWest Drive + Colorado Springs CO 80907 + UNITED STATES + +00-08-6D (hex) Missouri FreeNet +00086D (base 16) Missouri FreeNet + PO Box 771026 + St. Louis Missouri 63177-1026 + UNITED STATES + +00-08-6E (hex) Hyglo AB +00086E (base 16) Hyglo AB + Vastberga alle 60 + SE-126 75 Stockholm + SWEDEN + +00-08-6F (hex) Resources Computer Network Ltd. +00086F (base 16) Resources Computer Network Ltd. + Rm 324, Tech Centre, 72 Tat Chee Ave., + Kowloon Tong, Kowloon + HONG KONG + +00-08-70 (hex) Rasvia Systems, Inc. +000870 (base 16) Rasvia Systems, Inc. + 3255-3 Scott Blvd. + Suite 102 + Santa Clara CA 95054 + UNITED STATES + +00-08-71 (hex) NORTHDATA Co., Ltd. +000871 (base 16) NORTHDATA Co., Ltd. + #302 KayangTechno-Town 1487 + Kayang3-Dong + Kangseo-Gu Seoul 157-810 + KOREA, REPUBLIC OF + +00-08-72 (hex) Sorenson Technologies, Inc. +000872 (base 16) Sorenson Technologies, Inc. + 1011 West 400 North + Logan UT 84321 + UNITED STATES + +00-08-73 (hex) DAP Design B.V. +000873 (base 16) DAP Design B.V. + Hinmanweg 11B + BE Oldenzaal 7575 + NETHERLANDS + +00-08-74 (hex) Dell Computer Corp. +000874 (base 16) Dell Computer Corp. + One Dell Way + Round Rock TX 78682 + UNITED STATES + +00-08-75 (hex) Acorp Electronics Corp. +000875 (base 16) Acorp Electronics Corp. + 8F, No.111-6,Shing Teh Rd, + San Chung Taipei Hsien 241 + TAIWAN, REPUBLIC OF CHINA + +00-08-76 (hex) SDSystem +000876 (base 16) SDSystem + 613,Hyundai I Valley,223-12, + Sangdaiwon 1-Dong,Jungwon-Gu + Seongnam Gyeonggi-Do 462-807 + KOREA, REPUBLIC OF + +00-08-77 (hex) Liebert-Hiross Spa +000877 (base 16) Liebert-Hiross Spa + Via Leonardo da Vinci 8 + Piove di Sacco Z.I. Tognana 35020 + ITALY + +00-08-78 (hex) Benchmark Storage Innovations +000878 (base 16) Benchmark Storage Innovations + 3122 Sterling Circle + Boulder CO 80301 + UNITED STATES + +00-08-79 (hex) CEM Corporation +000879 (base 16) CEM Corporation + P.O. Box 200 + Matthews NC 28106 + UNITED STATES + +00-08-7A (hex) Wipotec GmbH +00087A (base 16) Wipotec GmbH + Adam-Hoffman Str. 26 + D-67657 Kaiserslauterm + GERMANY + +00-08-7B (hex) RTX Telecom A/S +00087B (base 16) RTX Telecom A/S + Stroemmen 6 + DK 9400 Noerresundby + DENMARK + +00-08-7C (hex) Cisco Systems, Inc. +00087C (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-08-7D (hex) Cisco Systems Inc. +00087D (base 16) Cisco Systems Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-08-7E (hex) Bon Electro-Telecom Inc. +00087E (base 16) Bon Electro-Telecom Inc. + Gayang 1st Factory 701, 14-81 + Gayang-Dong Gangso-Gu + Seoul 157-808 + KOREA, REPUBLIC OF + +00-08-7F (hex) SPAUN electronic GmbH & Co. KG +00087F (base 16) SPAUN electronic GmbH & Co. KG + Byk-Gulden - Str. 22 + 78224 Singen + GERMANY + +00-08-80 (hex) BroadTel Canada Communications inc. +000880 (base 16) BroadTel Canada Communications inc. + 3700 Griffith, Suite 389 + Saint-Laurent Quebec H4T 2B3 + CANADA + +00-08-81 (hex) DIGITAL HANDS CO.,LTD. +000881 (base 16) DIGITAL HANDS CO.,LTD. + TOWN'S SQUARE 503, KAKiYA Building 2F + 2-7-17 Shinyokohama Kouhoku-ku + Yokohama Kanagawa 222-0033 + JAPAN + +00-08-82 (hex) SIGMA CORPORATION +000882 (base 16) SIGMA CORPORATION + 2-3-15 Iwato-minami + Komae-shi Tokyo 201-8630 + JAPAN + +00-08-83 (hex) Hewlett-Packard Company +000883 (base 16) Hewlett-Packard Company + 10955 Tantau Avenue, Mailstop 45SL-G + Cupertino CA 95014 + UNITED STATES + +00-08-84 (hex) Index Braille AB +000884 (base 16) Index Braille AB + Box 155 + S-95423 Gammelstad + SWEDEN + +00-08-85 (hex) EMS Dr. Thomas Wuensche +000885 (base 16) EMS Dr. Thomas Wuensche + Sonnenhang 3 + D-85304 Ilmmuenster + GERMANY + +00-08-86 (hex) Hansung Teliann, Inc. +000886 (base 16) Hansung Teliann, Inc. + 195-1, Neungpyung-ri, Opo-eub + Kwangju-si, Kyoggi-do, 464-890 + KOREA, REPUBLIC OF + +00-08-87 (hex) Maschinenfabrik Reinhausen GmbH +000887 (base 16) Maschinenfabrik Reinhausen GmbH + Falkensteinstr. 8 + Regensburg Bavaria 93059 + GERMANY + +00-08-88 (hex) OULLIM Information Technology Inc,. +000888 (base 16) OULLIM Information Technology Inc,. + a-10th FL,. IT Venture Tower, + 78 Garak-Dong, Songpa-Ku + Seoul 138-803 + KOREA, REPUBLIC OF + +00-08-89 (hex) Echostar Technologies Corp +000889 (base 16) Echostar Technologies Corp + 94 Inverness Terrace East + Englewood CO 80112 + UNITED STATES + +00-08-8A (hex) Minds@Work +00088A (base 16) Minds@Work + 15550 Rockfield Blvd. Suite C + Irvine CA 92618 + UNITED STATES + +00-08-8B (hex) Tropic Networks Inc. +00088B (base 16) Tropic Networks Inc. + 135 Micheal Cowpland Drive + Ottawa Ontario K2M2E9 + CANADA + +00-08-8C (hex) Quanta Network Systems Inc. +00088C (base 16) Quanta Network Systems Inc. + 13, 13F, Sec. 2, Pei-Tou Rd + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-08-8D (hex) Sigma-Links Inc. +00088D (base 16) Sigma-Links Inc. + 550-1 Higashiasakawa-cho, + Hachioji-shi, + Tokyo 193-8550 + JAPAN + +00-08-8E (hex) Nihon Computer Co., Ltd. +00088E (base 16) Nihon Computer Co., Ltd. + 36-8 Higashitamachi + Hamamatsu Shizuoka 430-0915 + JAPAN + +00-08-8F (hex) ADVANCED DIGITAL TECHNOLOGY +00088F (base 16) ADVANCED DIGITAL TECHNOLOGY + ADT BLDG.,3-3, YANGJAE-DONG, + SEOCHO-GU, + SEOUL + KOREA, REPUBLIC OF + +00-08-90 (hex) AVILINKS SA +000890 (base 16) AVILINKS SA + Etic Center - CS 77 729 + 9 rue des Charmilles + Cesson Sevigne Cedex FRANCE 35577 + FRANCE + +00-08-91 (hex) Lyan Inc. +000891 (base 16) Lyan Inc. + 5F-1, NO.51, SEC.2, KEELUNG RD. + TAIPEI 110 + TAIWAN, REPUBLIC OF CHINA + +00-08-92 (hex) EM Solutions +000892 (base 16) EM Solutions + 101 Hyde Rd + Yeronga Brisbane, QLD 4104 + AUSTRALIA + +00-08-93 (hex) LE INFORMATION COMMUNICATION INC. +000893 (base 16) LE INFORMATION COMMUNICATION INC. + Rm, 4501, DA-Dong Chungang Circulation C + 1258 Kuro Bon-Dong, Kuro-Ku, + Seoul 152-721 + KOREA, REPUBLIC OF + +00-08-94 (hex) InnoVISION Multimedia Ltd. +000894 (base 16) InnoVISION Multimedia Ltd. + Rm 608, 6/F Tins Enterprises Centre, + 777 Lai Chi Kok Road, + Kowloon, + HONG KONG + +00-08-95 (hex) DIRC Technologie GmbH & Co.KG +000895 (base 16) DIRC Technologie GmbH & Co.KG + Borsigstr. 13 + Ratingen NRW 40880 + GERMANY + +00-08-96 (hex) Printronix, Inc. +000896 (base 16) Printronix, Inc. + 14600 Myford Rd. + P.O. Box 19559 + Irvine California 92623-9559 + UNITED STATES + +00-08-97 (hex) Quake Technologies +000897 (base 16) Quake Technologies + 2880 Zanker Road + Suite 104 + San Jose CA 95134 + UNITED STATES + +00-08-98 (hex) Gigabit Optics Corporation +000898 (base 16) Gigabit Optics Corporation + 1156 Aster Ave. + Sunnyvale CA 94086-6810 + UNITED STATES + +00-08-99 (hex) Netbind, Inc. +000899 (base 16) Netbind, Inc. + 5 Marine View Plaza + Hoboken NJ 07030 + UNITED STATES + +00-08-9A (hex) Alcatel Microelectronics +00089A (base 16) Alcatel Microelectronics + Excelsiorlaan 44-46 + B-1930 Zavantem + BELGIUM + +00-08-9B (hex) ICP Electronics Inc. +00089B (base 16) ICP Electronics Inc. + 4F, No. 22, Chung-Hsing Rd. Shi-Chi City + Taipei Hsien, 221, + Taipei 221 + TAIWAN, REPUBLIC OF CHINA + +00-08-9C (hex) Elecs Industry Co., Ltd. +00089C (base 16) Elecs Industry Co., Ltd. + 1-22-23,Shinsaku,Takatsu-Ku + Kawasaki Kanagawa 213-0014 + JAPAN + +00-08-9D (hex) UHD-Elektronik +00089D (base 16) UHD-Elektronik + Zuercherstrasse 12 + Baden AG 5400 + SWITZERLAND + +00-08-9E (hex) Beijing Enter-Net co.LTD +00089E (base 16) Beijing Enter-Net co.LTD + NO 1 courtyard, + shuangquanpu jia 1,chaoya + Beijing 100085 + CHINA + +00-08-9F (hex) EFM Networks +00089F (base 16) EFM Networks + 403, 4th floor Elegance 1 Bldg. + 25-2 Gumi-dong Pundang-gu + Sungnam-si Kyunggi-do 463-808 + KOREA, REPUBLIC OF + +00-08-A0 (hex) Stotz Feinmesstechnik GmbH +0008A0 (base 16) Stotz Feinmesstechnik GmbH + Hermann-Dreher Str. 6 + Gerlingen 70839 + GERMANY + +00-08-A1 (hex) CNet Technology Inc. +0008A1 (base 16) CNet Technology Inc. + No.15, Park Avenue II, Science-Based Ind + Hsin-Chu City, + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-08-A2 (hex) ADI Engineering, Inc. +0008A2 (base 16) ADI Engineering, Inc. + 1769A Worth Park + Charlottesville VA 22911 + UNITED STATES + +00-08-A3 (hex) Cisco Systems +0008A3 (base 16) Cisco Systems + 170 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-08-A4 (hex) Cisco Systems +0008A4 (base 16) Cisco Systems + 170 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-08-A5 (hex) Peninsula Systems Inc. +0008A5 (base 16) Peninsula Systems Inc. + 6902 Verde Ridge Rd. + Rancho Palos Verdes CA 90275 + UNITED STATES + +00-08-A6 (hex) Multiware & Image Co., Ltd. +0008A6 (base 16) Multiware & Image Co., Ltd. + Saedong Bldg. 65-25, + 2ka, Namhang, Youngdo + Pusan 606-032 + KOREA, REPUBLIC OF + +00-08-A7 (hex) iLogic Inc. +0008A7 (base 16) iLogic Inc. + Rm#318, TechnoComplex Bldg., 126-16, 5-g + Seoul 136-701 + KOREA, REPUBLIC OF + +00-08-A8 (hex) Systec Co., Ltd. +0008A8 (base 16) Systec Co., Ltd. + 19 Nochidori, Nawa + Tokai Aichi 476-0002 + JAPAN + +00-08-A9 (hex) SangSang Technology, Inc. +0008A9 (base 16) SangSang Technology, Inc. + 64-8, Nogok-ri, Docheok-myun, + Gwangju Kyonggi-do 464-882 + KOREA, REPUBLIC OF + +00-08-AA (hex) KARAM +0008AA (base 16) KARAM + 98-3, Hankangro 2-KA, Yongsan + Seoul 140-012 + KOREA, REPUBLIC OF + +00-08-AB (hex) EnerLinx.com, Inc. +0008AB (base 16) EnerLinx.com, Inc. + 3965 South Woodhill Lane + New Berlin WI 53151 + UNITED STATES + +00-08-AC (hex) PRIVATE +0008AC (base 16) + +00-08-AD (hex) Toyo-Linx Co., Ltd. +0008AD (base 16) Toyo-Linx Co., Ltd. + Hirakawa-Cho, Chiyada-ku, + Tokyo 102-0093 + JAPAN + +00-08-AE (hex) PacketFront Sweden AB +0008AE (base 16) PacketFront Sweden AB + Box 1217 + Kista 16428 + SWEDEN + +00-08-AF (hex) Novatec Corporation +0008AF (base 16) Novatec Corporation + 2-19-2 Nishi-Gotanda + Shinagawa-ku Tokyo 141-0031 + JAPAN + +00-08-B0 (hex) BKtel communications GmbH +0008B0 (base 16) BKtel communications GmbH + Benzstrasse 4 + 41836 Hueckelhoven-Baal NRW 41836 + GERMANY + +00-08-B1 (hex) ProQuent Systems +0008B1 (base 16) ProQuent Systems + 67 Forest Street + Marlboro MA 01752 + UNITED STATES + +00-08-B2 (hex) SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD +0008B2 (base 16) SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD + 4th Floor,Building 205,TaiRan Industry + &Trade Park,Futian District,Shenzhen + Shenzhen GUANGDONG 518040 + CHINA + +00-08-B3 (hex) Fastwel +0008B3 (base 16) Fastwel + Profsoyuznaya 108, + Moscow 117313 + RUSSIAN FEDERATION + +00-08-B4 (hex) SYSPOL +0008B4 (base 16) SYSPOL + 4th Fl,SYSPOL B/D, Bangbae 4 Dong, Seoch + Seoul 137-064 + KOREA, REPUBLIC OF + +00-08-B5 (hex) TAI GUEN ENTERPRISE CO., LTD +0008B5 (base 16) TAI GUEN ENTERPRISE CO., LTD + N0.400, 10F-7 HUANPEI RD., + CHUNG LI CITY TW, ROC. + CHUNG LI 320-61 + TAIWAN, REPUBLIC OF CHINA + +00-08-B6 (hex) RouteFree, Inc. +0008B6 (base 16) RouteFree, Inc. + 3400 Hillview Ave. Bldg. 5 + Palo Alto CA 94306 + UNITED STATES + +00-08-B7 (hex) HIT Incorporated +0008B7 (base 16) HIT Incorporated + 4F, 8, Lane 235, Pao-Chiao Road, + Shin Tien Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-08-B8 (hex) E.F. Johnson +0008B8 (base 16) E.F. Johnson + 299 Johnson Ave. + P.O. Box 1249 + Waseca MN 56093 + UNITED STATES + +00-08-B9 (hex) KAON MEDIA Co., Ltd. +0008B9 (base 16) KAON MEDIA Co., Ltd. + #113 Imae 1-Dong, Bundang-Gu + Sungnam-City Kyungki-Do 463-829 + KOREA, REPUBLIC OF + +00-08-BA (hex) Erskine Systems Ltd +0008BA (base 16) Erskine Systems Ltd + Salter Road + Eastfield Industrial Estate + Scarborough North Yorkshire YO11 3DU + UNITED KINGDOM + +00-08-BB (hex) NetExcell +0008BB (base 16) NetExcell + 15375 Barranca Pkwy, #E-106 + Irvine CA 92679 + UNITED STATES + +00-08-BC (hex) Ilevo AB +0008BC (base 16) Ilevo AB + Box 1561 + Karlstad Värmland S-651 21 + SWEDEN + +00-08-BD (hex) TEPG-US +0008BD (base 16) TEPG-US + 100 Simplex Drive + Westminster MA 01441 + UNITED STATES + +00-08-BE (hex) XENPAK MSA Group +0008BE (base 16) XENPAK MSA Group + Care of: Agilent Technologies + White House Road + Ipswich Suffolk Ip1 5PB + UNITED KINGDOM + +00-08-BF (hex) Aptus Elektronik AB +0008BF (base 16) Aptus Elektronik AB + FO Petersons G 6 + 421 31 V. Frolunda + SWEDEN + +00-08-C0 (hex) ASA SYSTEMS +0008C0 (base 16) ASA SYSTEMS + S245 Korea Maritime University, 1 Dongsa + Busan Busan Metropolitan City 606-791 + KOREA, REPUBLIC OF + +00-08-C1 (hex) Avistar Communications Corporation +0008C1 (base 16) Avistar Communications Corporation + 15851 Dallas Pkwy. + Suite 600 + Addison TX 75001 + UNITED STATES + +00-08-C2 (hex) Cisco Systems +0008C2 (base 16) Cisco Systems + 80 West Tasman Dr + San Jose CA 95134 + UNITED STATES + +00-08-C3 (hex) Contex A/S +0008C3 (base 16) Contex A/S + Svanevang 2 + Allerod DK 3450 + DENMARK + +00-08-C4 (hex) Hikari Co.,Ltd. +0008C4 (base 16) Hikari Co.,Ltd. + 418-4 Minaminoda Chigenobu-cho + Onsen-gun Ehime 791-0297 + JAPAN + +00-08-C5 (hex) Liontech Co., Ltd. +0008C5 (base 16) Liontech Co., Ltd. + 306, Wooyoung Techno Center, 273-15, + Sungsu2ga-3dong, Sungdong-ku, + Seoul 133-831 + KOREA, REPUBLIC OF + +00-08-C6 (hex) Philips Consumer Communications +0008C6 (base 16) Philips Consumer Communications + Route d'Angers + 72081 Le Mans + Cedex 9 + FRANCE + +00-08-C7 (hex) Hewlett Packard +0008C7 (base 16) Hewlett Packard + 20555 State Highway 249 + Houston TX 77070 + UNITED STATES + +00-08-C8 (hex) Soneticom, Inc. +0008C8 (base 16) Soneticom, Inc. + 4325 Woodland Park Drive, Suite 102 + West Melbourne Florida 32904 + UNITED STATES + +00-08-C9 (hex) TechniSat Digital GmbH +0008C9 (base 16) TechniSat Digital GmbH + Gewerbepark Merbitz Nr. 5 + Dresden Saxony 01156 + GERMANY + +00-08-CA (hex) TwinHan Technology Co.,Ltd +0008CA (base 16) TwinHan Technology Co.,Ltd + 13F-6,No 79,Sec 1,Hsin Tai Wu RD.,Hsi-Ch + Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-08-CB (hex) Zeta Broadband Inc. +0008CB (base 16) Zeta Broadband Inc. + 660 Vista Way, Suite B + Milpitas CA 95035 + UNITED STATES + +00-08-CC (hex) Remotec, Inc. +0008CC (base 16) Remotec, Inc. + 114 Union Valley Road + Oak Ridge TN 37830 + UNITED STATES + +00-08-CD (hex) With-Net Inc +0008CD (base 16) With-Net Inc + 4FL B&B B/D 1403-4 + Kwangyang1-dong Dongan-ku + Anyang Kyonggi 431-061 + KOREA, REPUBLIC OF + +00-08-CE (hex) IPMobileNet Inc. +0008CE (base 16) IPMobileNet Inc. + 11909 E Telegraph Rd. + Santa Fe Springs CA 90670 + UNITED STATES + +00-08-CF (hex) Nippon Koei Power Systems Co., Ltd. +0008CF (base 16) Nippon Koei Power Systems Co., Ltd. + 2940 Shinyoshida-cho + Kohoku-ku Yokohama 223-8506 + JAPAN + +00-08-D0 (hex) Musashi Engineering Co., LTD. +0008D0 (base 16) Musashi Engineering Co., LTD. + 3-11-7, Nishi-shimbashi + Minato-ku Tokyo 105-0003 + JAPAN + +00-08-D1 (hex) KAREL INC. +0008D1 (base 16) KAREL INC. + ORGANIZE SANAYI BOLGESI + GAZNELILER CAD NO:10 SINCAN + ANKARA 06935 + TURKEY + +00-08-D2 (hex) ZOOM Networks Inc. +0008D2 (base 16) ZOOM Networks Inc. + 13F,XinLuDao Building,No.1175,Nanshan Ro + Shen Zhen GuangDong Province 518052 + CHINA + +00-08-D3 (hex) Hercules Technologies S.A. +0008D3 (base 16) Hercules Technologies S.A. + Place de l'étoile + Carentoir Bretagne 56910 + FRANCE + +00-08-D4 (hex) IneoQuest Technologies, Inc +0008D4 (base 16) IneoQuest Technologies, Inc + 1931 Washington St + Canton Massachusetts 02021 + UNITED STATES + +00-08-D5 (hex) Vanguard Managed Solutions +0008D5 (base 16) Vanguard Managed Solutions + 575 West Street + Mansfield Ma. 02048 + UNITED STATES + +00-08-D6 (hex) HASSNET Inc. +0008D6 (base 16) HASSNET Inc. + 2F Missy2000 B/D 725, SooSeo-Dong, + Kangnam-Ku + Seoul 135-757 + KOREA, REPUBLIC OF + +00-08-D7 (hex) HOW CORPORATION +0008D7 (base 16) HOW CORPORATION + 1-11-17 Chiyoda + Sagamihara Kanagawa 229-0037 + JAPAN + +00-08-D8 (hex) Dowkey Microwave +0008D8 (base 16) Dowkey Microwave + 4822 McGrath Street + Ventura Ca 93003 + UNITED STATES + +00-08-D9 (hex) Mitadenshi Co.,LTD +0008D9 (base 16) Mitadenshi Co.,LTD + 1-8-6 Furuichi Asaminamiku + Hiroshima 731-0123 + JAPAN + +00-08-DA (hex) SofaWare Technologies Ltd. +0008DA (base 16) SofaWare Technologies Ltd. + 3 Hilazon St. + Ramat-Gan 52522 + ISRAEL + +00-08-DB (hex) Corrigent Systems +0008DB (base 16) Corrigent Systems + 126 Yigal Alon + Tel Aviv 67443 + ISRAEL + +00-08-DC (hex) Wiznet +0008DC (base 16) Wiznet + 5F Simmtech bldg., 228-3, + Nonyhun, Kangnam + Seoul 135-830 + KOREA, REPUBLIC OF + +00-08-DD (hex) Telena Communications, Inc. +0008DD (base 16) Telena Communications, Inc. + 6725 Mesa Ridge Road + Suite 226 + San Diego CA 92121 + UNITED STATES + +00-08-DE (hex) 3UP Systems +0008DE (base 16) 3UP Systems + 6 Results Way + Cupertino CA 95014 + UNITED STATES + +00-08-DF (hex) Alistel Inc. +0008DF (base 16) Alistel Inc. + Midori Bldg. 2F + 1-5-20 Nakagawa, Tsuzuki-ku + Yokohama Kanagawa 222-0001 + JAPAN + +00-08-E0 (hex) ATO Technology Ltd. +0008E0 (base 16) ATO Technology Ltd. + Rm. 1314-1346, Block B1, Yau Tong Ind. C + Yau Tong, Kowloon, + Hong Kong + HONG KONG + +00-08-E1 (hex) Barix AG +0008E1 (base 16) Barix AG + Wiesenstr. 17 + Zuerich ZH 8008 + SWITZERLAND + +00-08-E2 (hex) Cisco Systems +0008E2 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-Bld M/1 + San Jose CA 95134 + UNITED STATES + +00-08-E3 (hex) Cisco Systems +0008E3 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-Bld M/1 + San Jose CA 95134 + UNITED STATES + +00-08-E4 (hex) Envenergy Inc +0008E4 (base 16) Envenergy Inc + 6307 Carpinteria Ave + Carpinteria CA 93013 + UNITED STATES + +00-08-E5 (hex) IDK Corporation +0008E5 (base 16) IDK Corporation + 6-7-10 + Chuo-Rinkan + Yamato Kanagawa 242-0007 + JAPAN + +00-08-E6 (hex) Littlefeet +0008E6 (base 16) Littlefeet + 13000 Gregg Street + Poway California 92064 + UNITED STATES + +00-08-E7 (hex) SHI ControlSystems,Ltd. +0008E7 (base 16) SHI ControlSystems,Ltd. + 19,Natusima + Yokosuka Kanagawa 237-8555 + JAPAN + +00-08-E8 (hex) Excel Master Ltd. +0008E8 (base 16) Excel Master Ltd. + Room D, 3/F., Yeung Yiu Chung (No. 8) Ind. Bldg. + 20 Wang Hoi Road + Kowloon Bay + HONG KONG + +00-08-E9 (hex) NextGig +0008E9 (base 16) NextGig + 9820-B Towne Centre Drive + San Diego CA 92121 + UNITED STATES + +00-08-EA (hex) Motion Control Engineering, Inc +0008EA (base 16) Motion Control Engineering, Inc + 11380 White Rock Road + Rancho Cordova CA 95742 + UNITED STATES + +00-08-EB (hex) ROMWin Co.,Ltd. +0008EB (base 16) ROMWin Co.,Ltd. + 406 OmiyaOhtaka Bldg. 1-103 + Kishiki-cho + Saitama 330-0843 + JAPAN + +00-08-EC (hex) Zonu, Inc. +0008EC (base 16) Zonu, Inc. + 6005 Yolanda Avenue + Tarzana CA 91356-1421 + UNITED STATES + +00-08-ED (hex) ST&T Instrument Corp. +0008ED (base 16) ST&T Instrument Corp. + 16 Shing-Gong Road, Yung-Kung Industrial + Yung-Kung Tainan 710 + TAIWAN, REPUBLIC OF CHINA + +00-08-EE (hex) Logic Product Development +0008EE (base 16) Logic Product Development + 411 Washington Ave N. Suite 101 + Minneapolis Minnesota 55401 + UNITED STATES + +00-08-EF (hex) DIBAL,S.A. +0008EF (base 16) DIBAL,S.A. + Astintze Kalea 24 + Derio Vizcaya 48160 + SPAIN + +00-08-F0 (hex) Next Generation Systems, Inc. +0008F0 (base 16) Next Generation Systems, Inc. + PO BOX 31205 + Dayton OH 45437-0205 + UNITED STATES + +00-08-F1 (hex) Voltaire +0008F1 (base 16) Voltaire + 9 Hamenofim st. + Herzelia 46725 + ISRAEL + +00-08-F2 (hex) C&S Technology +0008F2 (base 16) C&S Technology + C&S Venture Bldg., NonHyun-Dong, + 221-1, GangNam-Gu + SEOUL 135-829 + KOREA, REPUBLIC OF + +00-08-F3 (hex) WANY +0008F3 (base 16) WANY + CEEI Cap Alpha + Avenue de l'Europe, Clapiers + Montpellier Herault 34940 + FRANCE + +00-08-F4 (hex) Bluetake Technology Co., Ltd. +0008F4 (base 16) Bluetake Technology Co., Ltd. + 6F, No. 33, Lane 155, Sec. 3, Pei Shen R + Saen Keng Shiang, Taipei + Taipei Taiwan 222 + TAIWAN, REPUBLIC OF CHINA + +00-08-F5 (hex) YESTECHNOLOGY Co.,Ltd. +0008F5 (base 16) YESTECHNOLOGY Co.,Ltd. + 4th FL Kyung-Am B/D 157-27 Samsung-Dong, + Seoul 135-090 + KOREA, REPUBLIC OF + +00-08-F6 (hex) Sumitomo Electric System Solutions Co.,Ltd. +0008F6 (base 16) Sumitomo Electric System Solutions Co.,Ltd. + shimaya 1-1-3, konohana-ku + Osaka city OSAKA 112-0014 + JAPAN + +00-08-F7 (hex) Hitachi Ltd, Semiconductor & Integrated Circuits Gr +0008F7 (base 16) Hitachi Ltd, Semiconductor & Integrated Circuits Gr + 20-1 Josuihon-chou 5chome + Kodaira-shi Tokyo 187-8588 + JAPAN + +00-08-F8 (hex) Guardall Ltd +0008F8 (base 16) Guardall Ltd + Lochend Industrial Estate, + Newbridge + Edinburgh Scotland EH28 8PL + UNITED KINGDOM + +00-08-F9 (hex) Padcom, Inc. +0008F9 (base 16) Padcom, Inc. + 2005 City Line Road + Bethlehem PA 18017 + UNITED STATES + +00-08-FA (hex) Karl E.Brinkmann GmbH +0008FA (base 16) Karl E.Brinkmann GmbH + Foersterweg 36-38 + Barntrup NRW D-32683 + GERMANY + +00-08-FB (hex) SonoSite, Inc. +0008FB (base 16) SonoSite, Inc. + 21919 30th Drive SE + Bothell WA 98021 + UNITED STATES + +00-08-FC (hex) Gigaphoton Inc. +0008FC (base 16) Gigaphoton Inc. + YOKOKURA SHINDEN400 + OYAMA TOTIGI 323-8558 + JAPAN + +00-08-FD (hex) BlueKorea Co., Ltd. +0008FD (base 16) BlueKorea Co., Ltd. + 3F, sejong Building, 379-15, Seokyo-Dong + Mapo-Ku, + Seoul 121-839 + KOREA, REPUBLIC OF + +00-08-FE (hex) UNIK C&C Co.,Ltd. +0008FE (base 16) UNIK C&C Co.,Ltd. + 706-13 UNIK BLDG 17F + YEOK-SAM KANG-NAM GU + SEOUL 135-080 + KOREA, REPUBLIC OF + +00-08-FF (hex) Trilogy Communications Ltd +0008FF (base 16) Trilogy Communications Ltd + 26 Focus Way + Walworth Estate + Andover Hampshire SP10 5NY + UNITED KINGDOM + +00-09-00 (hex) TMT +000900 (base 16) TMT + 11 Kiryat Mada, POB 45199 + Jerusalem 91450 + ISRAEL + +00-09-01 (hex) Shenzhen Shixuntong Information & Technoligy Co +000901 (base 16) Shenzhen Shixuntong Information & Technoligy Co + Room 403,617 Bldg;Bagua 1 Road ,Shenzhen + Shenzhen Guangdong 518029 + CHINA + +00-09-02 (hex) Redline Communications Inc. +000902 (base 16) Redline Communications Inc. + 302 Town Centre Blvd + Suite 100 + Markham ON L3R 0E8 + CANADA + +00-09-03 (hex) Panasas, Inc +000903 (base 16) Panasas, Inc + 15333 John F Kennedy Blvd, Suite 400 + Houston TX 77032-2351 + UNITED STATES + +00-09-04 (hex) MONDIAL electronic +000904 (base 16) MONDIAL electronic + Eggelsberg 73 + Eggelsberg Oberoesterreich 5142 + AUSTRIA + +00-09-05 (hex) iTEC Technologies Ltd. +000905 (base 16) iTEC Technologies Ltd. + 160-1, Karak-Dong, Songpa-Gu + Seoul 138-809 + KOREA, REPUBLIC OF + +00-09-06 (hex) Esteem Networks +000906 (base 16) Esteem Networks + 4F, No.900, Yishan Road + Shanghai 200233 + CHINA + +00-09-07 (hex) Chrysalis Development +000907 (base 16) Chrysalis Development + 8125 River Dr. Suite 100 + Morton Grove IL 60053 + UNITED STATES + +00-09-08 (hex) VTech Technology Corp. +000908 (base 16) VTech Technology Corp. + 2F-2, No. 124, Chung Cheng Rd., Shihlin + Taipei 11141 + TAIWAN, REPUBLIC OF CHINA + +00-09-09 (hex) Telenor Connect A/S +000909 (base 16) Telenor Connect A/S + Ellegaardvej 25L + Sønderborg Als 6400 + DENMARK + +00-09-0A (hex) SnedFar Technology Co., Ltd. +00090A (base 16) SnedFar Technology Co., Ltd. + 15FL., No.866-2, Jung Jeng Rd., + Junghe Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-09-0B (hex) MTL Instruments PLC +00090B (base 16) MTL Instruments PLC + Power Court + Luton Bedfordshire LU1 3JJ + UNITED KINGDOM + +00-09-0C (hex) Mayekawa Mfg. Co. Ltd. +00090C (base 16) Mayekawa Mfg. Co. Ltd. + 16825 IH 35 North + Selma Texas 78154 + UNITED STATES + +00-09-0D (hex) LEADER ELECTRONICS CORP. +00090D (base 16) LEADER ELECTRONICS CORP. + 2-6-33, TSUNASHIMA-HIGASHI + KOHOKU-KU YOKOHAMA 223-8505 + JAPAN + +00-09-0E (hex) Helix Technology Inc. +00090E (base 16) Helix Technology Inc. + 5F, No. 6, Sec 1, Jung-Shing Rd., Wugu-S + Taipei 248 + TAIWAN, REPUBLIC OF CHINA + +00-09-0F (hex) Fortinet Inc. +00090F (base 16) Fortinet Inc. + 3333 Octavius Drive + Santa Clara CA 95054 + UNITED STATES + +00-09-10 (hex) Simple Access Inc. +000910 (base 16) Simple Access Inc. + 600 McCaffrey Street + St-Laurent Quebec H4T1N1 + CANADA + +00-09-11 (hex) Cisco Systems +000911 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-09-12 (hex) Cisco Systems +000912 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-09-13 (hex) SystemK Corporation +000913 (base 16) SystemK Corporation + 238-9 Higashi 1, Kita 15, Higashi-ku + Sapporo Hokkaido 065-0015 + JAPAN + +00-09-14 (hex) COMPUTROLS INC. +000914 (base 16) COMPUTROLS INC. + 221 Bark Drive + Harvey LA 70058 + UNITED STATES + +00-09-15 (hex) CAS Corp. +000915 (base 16) CAS Corp. + #19, Ganap-Ri + Kwangguk-Myun + Yangju-Gun Kyunggi-Do 482-841 + KOREA, REPUBLIC OF + +00-09-16 (hex) Listman Home Technologies, Inc. +000916 (base 16) Listman Home Technologies, Inc. + 1100 Northmeadow Parkway + Suite 108 + Roswell Georgia 30076 + UNITED STATES + +00-09-17 (hex) WEM Technology Inc +000917 (base 16) WEM Technology Inc + 8F-2, No 386, Sec 5 Nanjing East Road. + Taipei 105 + TAIWAN, REPUBLIC OF CHINA + +00-09-18 (hex) SAMSUNG TECHWIN CO.,LTD +000918 (base 16) SAMSUNG TECHWIN CO.,LTD + 42 + SUNGJUDONG + CHANGWON KYONGNAM 641-716 + KOREA, REPUBLIC OF + +00-09-19 (hex) MDS Gateways +000919 (base 16) MDS Gateways + Clonshaugh Industrial Estate + Clonshaugh + Dublin 17 + IRELAND + +00-09-1A (hex) Macat Optics & Electronics Co., Ltd. +00091A (base 16) Macat Optics & Electronics Co., Ltd. + 15/F., Macat Center, No. 63 Macat Road + Huizhou Guangdong 516001 + CHINA + +00-09-1B (hex) Digital Generation Inc. +00091B (base 16) Digital Generation Inc. + 5F, Ho-Sam B/D, #30-3, Bongchun6-Dong + Kwanak-Ku, Seoul 151-089 + KOREA, REPUBLIC OF + +00-09-1C (hex) CacheVision, Inc +00091C (base 16) CacheVision, Inc + 1990 Concourse Drive + San Jose CA 95131 + UNITED STATES + +00-09-1D (hex) Proteam Computer Corporation +00091D (base 16) Proteam Computer Corporation + 7F, No. 157. Section 2 Ta-Tung Rd + Hsi-Chih Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-09-1E (hex) Firstech Technology Corp. +00091E (base 16) Firstech Technology Corp. + 8fl.,No.267,section 4,Hsin-Yi Rd. ,Da-An + Taipei 106 + TAIWAN, REPUBLIC OF CHINA + +00-09-1F (hex) A&D Co., Ltd. +00091F (base 16) A&D Co., Ltd. + 1-243 Asahi + Kitamoto-shi Saitama 364-8585 + JAPAN + +00-09-20 (hex) EpoX COMPUTER CO.,LTD. +000920 (base 16) EpoX COMPUTER CO.,LTD. + 10th Floor, No.346,Chung San Rd.,Sec.2, + Chung Ho City,Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-09-21 (hex) Planmeca Oy +000921 (base 16) Planmeca Oy + Asentajankatu 6 + HELSINKI 00810 HELSIN + FINLAND + +00-09-22 (hex) TST Biometrics Holding AG +000922 (base 16) TST Biometrics Holding AG + Baechtoldstrasse 4 + 8044 Zurich + SWITZERLAND + +00-09-23 (hex) Heaman System Co., Ltd +000923 (base 16) Heaman System Co., Ltd + Building M6,National Hi-tech & Indus + Changsha Hunan Province 410013 + CHINA + +00-09-24 (hex) Telebau GmbH +000924 (base 16) Telebau GmbH + Am Kraehenberg 1 + Waldeck-Sachsenhausen Germany 34513 + GERMANY + +00-09-25 (hex) VSN Systemen BV +000925 (base 16) VSN Systemen BV + Keizersveld 83 + Venray Limburg 5803 AP + NETHERLANDS + +00-09-26 (hex) YODA COMMUNICATIONS, INC. +000926 (base 16) YODA COMMUNICATIONS, INC. + 2F, No.3-1, Industry East Road IX, + Hsinchu Science Based Industrial Park, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-09-27 (hex) TOYOKEIKI CO.,LTD. +000927 (base 16) TOYOKEIKI CO.,LTD. + 17-10-3,Shimosinjyo + Higashiyodogawa-Ku + Osaka 533-0021 + JAPAN + +00-09-28 (hex) Telecore Inc +000928 (base 16) Telecore Inc + 1800 North Glenville + Suite 116 + Richardson TX 75081 + UNITED STATES + +00-09-29 (hex) Sanyo Industries (UK) Limited +000929 (base 16) Sanyo Industries (UK) Limited + School Road + Lowestoft Suffolk NR33 9NA + UNITED KINGDOM + +00-09-2A (hex) MYTECS Co.,Ltd. +00092A (base 16) MYTECS Co.,Ltd. + 1-12-39, Taishidou + Setagaya-ku Tokyo 154-0004 + JAPAN + +00-09-2B (hex) iQstor Networks, Inc. +00092B (base 16) iQstor Networks, Inc. + 2001 Corporate Center Drive + Newbury Park CA 91320 + UNITED STATES + +00-09-2C (hex) Hitpoint Inc. +00092C (base 16) Hitpoint Inc. + No.7, Fenliao, 2nd Industrial Park, Link + Taipei 244 + TAIWAN, REPUBLIC OF CHINA + +00-09-2D (hex) High Tech Computer, Corp. +00092D (base 16) High Tech Computer, Corp. + 23, Hsin Hua Rd., + Taoyuan, + 330 + TAIWAN, REPUBLIC OF CHINA + +00-09-2E (hex) B&Tech System Inc. +00092E (base 16) B&Tech System Inc. + #601, Seo-Jung B/D, 830-24, Youksam-Dong + Seoul + KOREA, REPUBLIC OF + +00-09-2F (hex) Akom Technology Corporation +00092F (base 16) Akom Technology Corporation + 5F, No. 323, Yang-Guang St. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-09-30 (hex) AeroConcierge Inc. +000930 (base 16) AeroConcierge Inc. + 10256 Yonge St. + Richmond Hill Ont. L4C 3B7 + CANADA + +00-09-31 (hex) Future Internet, Inc. +000931 (base 16) Future Internet, Inc. + 11'th Floor Samhomoolsan Bldg, B/Bldg, 2 + Yangjea Dong, Seocho Ku + Seoul Kyung-Ki 137-130 + KOREA, REPUBLIC OF + +00-09-32 (hex) Omnilux +000932 (base 16) Omnilux + 130 W. Union St. + Pasadena CA 91103 + UNITED STATES + +00-09-33 (hex) OPTOVALLEY Co. Ltd. +000933 (base 16) OPTOVALLEY Co. Ltd. + 301HO, JINJIN BLDG. 1667-13 + SEOCHO-DONG, SEOCHO-GU + SEOUL 137-070 + KOREA, REPUBLIC OF + +00-09-34 (hex) Dream-Multimedia-Tv GmbH +000934 (base 16) Dream-Multimedia-Tv GmbH + Brueckstr. 29 + Menden Sauerland 58706 + GERMANY + +00-09-35 (hex) Sandvine Incorporated +000935 (base 16) Sandvine Incorporated + 170 Columbia St. W. + Waterloo ON N2L 3L3 + CANADA + +00-09-36 (hex) Ipetronik GmbH & Co.KG +000936 (base 16) Ipetronik GmbH & Co.KG + Jaegerweg 1 + Baden-Baden Baden-Wuerttemberg 76532 + GERMANY + +00-09-37 (hex) Inventec Appliance Corp +000937 (base 16) Inventec Appliance Corp + 113, Wugung 1 RD., WuKu Industrial nPark + WuKu Shiang, Taipei Hsien 248, Taiwan , + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-09-38 (hex) Allot Communications +000938 (base 16) Allot Communications + Hanagar 22 st' + Hod-Hasharon 45800 + ISRAEL + +00-09-39 (hex) ShibaSoku Co.,Ltd. +000939 (base 16) ShibaSoku Co.,Ltd. + 6-8 Shinbashi 4-chome + Minato-ku Tokyo 105-0004 + JAPAN + +00-09-3A (hex) Molex Fiber Optics +00093A (base 16) Molex Fiber Optics + 5224 Katrine Avenue + Downers Grove IL 60515 + UNITED STATES + +00-09-3B (hex) HYUNDAI NETWORKS INC. +00093B (base 16) HYUNDAI NETWORKS INC. + SAN 136-1 AMI-RI BUBAL_EUP + ICHON KYUNGKI-DO 467-701 + KOREA, REPUBLIC OF + +00-09-3C (hex) Jacques Technologies P/L +00093C (base 16) Jacques Technologies P/L + 268 Montague Rd + West End Queensland 4101 + AUSTRALIA + +00-09-3D (hex) Newisys,Inc. +00093D (base 16) Newisys,Inc. + 6200 Bridgepoint Parkway + Buiding IV, Suite 100 + Austin TX 78730 + UNITED STATES + +00-09-3E (hex) C&I Technologies +00093E (base 16) C&I Technologies + #303 Kwanbo Plaza B/D, 1467-2 + Kwanyang-Dong, Dongan-Ku + Anyang-Shi Kyunggi-Do 431-808 + KOREA, REPUBLIC OF + +00-09-3F (hex) Double-Win Enterpirse CO., LTD +00093F (base 16) Double-Win Enterpirse CO., LTD + NO.300, Sec 1, Chung Feng Rd. + Ping Chen City Taoyuan Hsien 324 + TAIWAN, REPUBLIC OF CHINA + +00-09-40 (hex) AGFEO GmbH & Co. KG +000940 (base 16) AGFEO GmbH & Co. KG + Postfach 140107 + Bielefeld Rhine Westfalia 33621 + GERMANY + +00-09-41 (hex) Allied Telesis K.K. +000941 (base 16) Allied Telesis K.K. + Technical Center/No.2 TOC Bldg. + 7-21-11 Nishi-Gotanda + Shinagawa-ku Tokyo 141-0031 + JAPAN + +00-09-42 (hex) CRESCO, LTD. +000942 (base 16) CRESCO, LTD. + Yamada Bldg 5F + 5-27-5 Shiba, Minato-ku + Tokyo 108-0014 + JAPAN + +00-09-43 (hex) Cisco Systems +000943 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-09-44 (hex) Cisco Systems +000944 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-09-45 (hex) Palmmicro Communications Inc +000945 (base 16) Palmmicro Communications Inc + 630 Alder Dr + Milpitas CA 95035 + UNITED STATES + +00-09-46 (hex) Cluster Labs GmbH +000946 (base 16) Cluster Labs GmbH + Dauerwaldweg 1 + 14055 Berlin + Berlin Berlin 14055 + GERMANY + +00-09-47 (hex) Aztek, Inc. +000947 (base 16) Aztek, Inc. + 23 Spectrum Pointe #209 + Lake Forest California 92630 + UNITED STATES + +00-09-48 (hex) Vista Control Systems, Corp. +000948 (base 16) Vista Control Systems, Corp. + 2001 West Melinda Lane + Phoenix AZ 85027 + UNITED STATES + +00-09-49 (hex) Glyph Technologies Inc. +000949 (base 16) Glyph Technologies Inc. + 735 W. Clinton Street + Ithaca NY 14850 + UNITED STATES + +00-09-4A (hex) Homenet Communications +00094A (base 16) Homenet Communications + Innovation Centre + National Technological Park + Limerick + IRELAND + +00-09-4B (hex) FillFactory NV +00094B (base 16) FillFactory NV + Schalienhoevedreef 20B + B-2800 Mechelen + BELGIUM + +00-09-4C (hex) Communication Weaver Co.,Ltd. +00094C (base 16) Communication Weaver Co.,Ltd. + 1~3 COWEAVER B/D 446-19, + SEOGYO-DONG, MAPO-GU + SEOUL 121-841 + KOREA, REPUBLIC OF + +00-09-4D (hex) Braintree Communications Pty Ltd +00094D (base 16) Braintree Communications Pty Ltd + Level 1, 6 Cordelia St + South Brisbane QLD 4101 + AUSTRALIA + +00-09-4E (hex) BARTECH SYSTEMS INTERNATIONAL, INC +00094E (base 16) BARTECH SYSTEMS INTERNATIONAL, INC + 251 Najoles Rd Suite A + Millersville Maryland 21108 + UNITED STATES + +00-09-4F (hex) elmegt GmbH & Co. KG +00094F (base 16) elmegt GmbH & Co. KG + Kommunikationstechnik + Voehrumer Str. 30 + Peine Niedersachsen D-31228 + GERMANY + +00-09-50 (hex) Independent Storage Corporation +000950 (base 16) Independent Storage Corporation + 6273 Monarch Park Place + Niwot Colorado 80503 + UNITED STATES + +00-09-51 (hex) Apogee Instruments, Inc +000951 (base 16) Apogee Instruments, Inc + 11760 Atwood Road, Suite 4 + Auburn CA 95603 + UNITED STATES + +00-09-52 (hex) Auerswald GmbH & Co. KG +000952 (base 16) Auerswald GmbH & Co. KG + Vor den Grashoefen 22 + Cremlingen Niedersachsen 38162 + GERMANY + +00-09-53 (hex) Linkage System Integration Co.Ltd. +000953 (base 16) Linkage System Integration Co.Ltd. + 40 Gongjianfang + South Zhongshan Road + Nanjing Jiangsu 210006 + CHINA + +00-09-54 (hex) AMiT spol. s. r. o. +000954 (base 16) AMiT spol. s. r. o. + Naskove 3 + 150 00 Praha 5 + CZECH REPUBLIC + +00-09-55 (hex) Young Generation International Corp. +000955 (base 16) Young Generation International Corp. + 4F.,No. 188, Minchuan Rd., Shindian City + Shindian 231 + TAIWAN, REPUBLIC OF CHINA + +00-09-56 (hex) Network Systems Group, Ltd. (NSG) +000956 (base 16) Network Systems Group, Ltd. (NSG) + 39 Kirpichnaya St., Suite 1302 + Moscow 105187 + RUSSIAN FEDERATION + +00-09-57 (hex) Supercaller, Inc. +000957 (base 16) Supercaller, Inc. + 101 Saginaw Drive + Redwood City CA 94063 + UNITED STATES + +00-09-58 (hex) INTELNET S.A. +000958 (base 16) INTELNET S.A. + FRANCISCO OLIVAN BAYLE, 4 + ZARAGOZA 50015 + SPAIN + +00-09-59 (hex) Sitecsoft +000959 (base 16) Sitecsoft + 7th Gugu BD. 145-18 Samsung-Dong + KangNam-Gu Seoul Korea + Seoul Seoul 135-090 + KOREA, REPUBLIC OF + +00-09-5A (hex) RACEWOOD TECHNOLOGY +00095A (base 16) RACEWOOD TECHNOLOGY + 5F-2,NO.6,CHUNG-HSING RD.,SEC.1,WU-GU + TAIPEI 248 + TAIWAN, REPUBLIC OF CHINA + +00-09-5B (hex) Netgear, Inc. +00095B (base 16) Netgear, Inc. + 4500 Great America Parkway + Santa Clara CA 95054 + UNITED STATES + +00-09-5C (hex) Philips Medical Systems - Cardiac and Monitoring Systems (CM +00095C (base 16) Philips Medical Systems - Cardiac and Monitoring Systems (CM + 3000 Minuteman Road + Andover Massachusetts 01810 + UNITED STATES + +00-09-5D (hex) Dialogue Technology Corp. +00095D (base 16) Dialogue Technology Corp. + 10F, No. 196, Sec. 2, Jungshing Rd. + Shindian City Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-09-5E (hex) Masstech Group Inc. +00095E (base 16) Masstech Group Inc. + 2 East Beaver Creek Rd. + Building 3 + Richmond Hill Ontario L4B 2N3 + CANADA + +00-09-5F (hex) Telebyte, Inc. +00095F (base 16) Telebyte, Inc. + 270 Pulaski Road + Greenlawn NY 11740-1616 + UNITED STATES + +00-09-60 (hex) YOZAN Inc. +000960 (base 16) YOZAN Inc. + YOZAN Bld.,3-5-18, Kitazawa + Setagaya-ku Tokyo 155-0031 + JAPAN + +00-09-61 (hex) Switchgear and Instrumentation Ltd +000961 (base 16) Switchgear and Instrumentation Ltd + Ripley Road + Bradford West Yorkshire BD4 7EH + UNITED KINGDOM + +00-09-62 (hex) Sonitor Technologies AS +000962 (base 16) Sonitor Technologies AS + Forskningsveien 1B + P.O. Box 124 + Oslo Blindern N-0134 + NORWAY + +00-09-63 (hex) Dominion Lasercom Inc. +000963 (base 16) Dominion Lasercom Inc. + 1716 Briarcrest Dr. Ste. 210 + Bryan TX 77802 + UNITED STATES + +00-09-64 (hex) Hi-Techniques, Inc. +000964 (base 16) Hi-Techniques, Inc. + 2515 Frazier Av. + Madison WI 53713-1505 + UNITED STATES + +00-09-65 (hex) PRIVATE +000965 (base 16) + +00-09-66 (hex) Thales Navigation +000966 (base 16) Thales Navigation + 471 El Camino Real + Santa Clara CA 95050 + UNITED STATES + +00-09-67 (hex) Tachyon, Inc +000967 (base 16) Tachyon, Inc + 9339 Carroll Park Drive + Suite 150 + San Diego CA 92121 + UNITED STATES + +00-09-68 (hex) TECHNOVENTURE, INC. +000968 (base 16) TECHNOVENTURE, INC. + P. O. Box 5641 + Pasadena Texas 77508-5641 + UNITED STATES + +00-09-69 (hex) Meret Optical Communications +000969 (base 16) Meret Optical Communications + 10070 Mesa Rim Road + San Diego California 92121 + UNITED STATES + +00-09-6A (hex) Cloverleaf Communications Inc. +00096A (base 16) Cloverleaf Communications Inc. + 2 Willow St. + Southborough MA 01745-1027 + UNITED STATES + +00-09-6B (hex) IBM Corporation +00096B (base 16) IBM Corporation + PO Box 12195 + Dept. V51A / Bldg. 660 / Office E103 + Research Triangle Park NC 27709 + UNITED STATES + +00-09-6C (hex) Imedia Semiconductor Corp. +00096C (base 16) Imedia Semiconductor Corp. + 4988 Great America Pkwy. + Santa Clara CA 95054 + UNITED STATES + +00-09-6D (hex) Powernet Technologies Corp. +00096D (base 16) Powernet Technologies Corp. + 371-51, Gasan-Dong Kumchon-Gu, + Seoul 153-803 + KOREA, REPUBLIC OF + +00-09-6E (hex) GIANT ELECTRONICS LTD. +00096E (base 16) GIANT ELECTRONICS LTD. + 7/F., ELITE INDUSTRIAL BUILDING, + 135-137 HOI BUN ROAD, + KWUN TONG KOWLOON + HONG KONG + +00-09-6F (hex) Beijing Zhongqing Elegant Tech. Corp.,Limited +00096F (base 16) Beijing Zhongqing Elegant Tech. Corp.,Limited + Rm.508, A-Building, Shangdi Digital Scie + Beijing 100084 + CHINA + +00-09-70 (hex) Vibration Research Corporation +000970 (base 16) Vibration Research Corporation + 2385 Wilshere Drive + Suite A + Jenison MI 49428 + UNITED STATES + +00-09-71 (hex) Time Management, Inc. +000971 (base 16) Time Management, Inc. + 11 Lake Gatlin Road + Orlando Florida 32806 + UNITED STATES + +00-09-72 (hex) Securebase,Inc +000972 (base 16) Securebase,Inc + 2nd Fl,Seungseung-Bldg,Dokok 2-Dong,Kang + Seoul 135-854 + KOREA, REPUBLIC OF + +00-09-73 (hex) Lenten Technology Co., Ltd. +000973 (base 16) Lenten Technology Co., Ltd. + 16F, No.51, Sec.2, Gungyi Road, + Taichung City 408 + TAIWAN, REPUBLIC OF CHINA + +00-09-74 (hex) Innopia Technologies, Inc. +000974 (base 16) Innopia Technologies, Inc. + 5F., Institute of Technology + Hanyang University, 17 Haengdang-Dong + Seoul 133-791 + KOREA, REPUBLIC OF + +00-09-75 (hex) fSONA Communications Corporation +000975 (base 16) fSONA Communications Corporation + #140-11120 Horseshoe Way + Richmond BC V7A 5H7 + CANADA + +00-09-76 (hex) Datasoft ISDN Systems GmbH +000976 (base 16) Datasoft ISDN Systems GmbH + Schillerplatz 3 + St. Poelten Lower Austria 3100 + AUSTRIA + +00-09-77 (hex) Brunner Elektronik AG +000977 (base 16) Brunner Elektronik AG + Müllerwis 1 + Hittnau Zürich 8335 + SWITZERLAND + +00-09-78 (hex) AIJI System Co., Ltd. +000978 (base 16) AIJI System Co., Ltd. + #208 Samho-Park-Tower Bldg. 1122-10, Ing + Suwon Gyeonggi-do 442-835 + KOREA, REPUBLIC OF + +00-09-79 (hex) Advanced Television Systems Committee, Inc. +000979 (base 16) Advanced Television Systems Committee, Inc. + 1750 K Street NW + Suite 1200 + Washington DC 20006 + UNITED STATES + +00-09-7A (hex) Louis Design Labs. +00097A (base 16) Louis Design Labs. + 2F,NO 4, Lane 497, Chung-Cheng Rd.,Hsin- + Hsin-Tien Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-09-7B (hex) Cisco Systems +00097B (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-09-7C (hex) Cisco Systems +00097C (base 16) Cisco Systems + 80 West Tasman Dr + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-09-7D (hex) SecWell Networks Oy +00097D (base 16) SecWell Networks Oy + P.O.BOX 174 + Hämeenpuisto 21 + Tampere 33101 + FINLAND + +00-09-7E (hex) IMI TECHNOLOGY CO., LTD +00097E (base 16) IMI TECHNOLOGY CO., LTD + 2nd floor, Eun Seok Building, 729-1 + Yeoksam-dong, + Gangnam-gu Seoul 135-080 + KOREA, REPUBLIC OF + +00-09-7F (hex) Vsecure 2000 LTD. +00097F (base 16) Vsecure 2000 LTD. + 11 Moshe Levi St. + Rishon LeZion 75658 + ISRAEL + +00-09-80 (hex) Power Zenith Inc. +000980 (base 16) Power Zenith Inc. + Tsujido Nishikaigan 1-10-7 + Fujisawa Kanagawa 251-0046 + JAPAN + +00-09-81 (hex) Newport Networks +000981 (base 16) Newport Networks + Enterprise House + Station Road + Chepstow Monmouthshire NP16 5PB + UNITED KINGDOM + +00-09-82 (hex) Loewe Opta GmbH +000982 (base 16) Loewe Opta GmbH + Industriestrasse 11 + Kronach Bavaria 96317 + GERMANY + +00-09-83 (hex) Gvision Incorporated +000983 (base 16) Gvision Incorporated + 11F, No.166, Chien-I Road + Chung Ho City, Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-09-84 (hex) MyCasa Network Inc. +000984 (base 16) MyCasa Network Inc. + 200 Sheridan Ave #103 + Palo Alto CA 94306 + UNITED STATES + +00-09-85 (hex) Auto Telecom Company +000985 (base 16) Auto Telecom Company + 10F, No.3,Lane 16, Sec.2, Sichuan Rd. + Banqiao City Taipei County 22061 + TAIWAN, REPUBLIC OF CHINA + +00-09-86 (hex) Metalink LTD. +000986 (base 16) Metalink LTD. + Yakum Business Park + Yakum HOF HASHARON 60972 + ISRAEL + +00-09-87 (hex) NISHI NIPPON ELECTRIC WIRE & CABLE CO.,LTD. +000987 (base 16) NISHI NIPPON ELECTRIC WIRE & CABLE CO.,LTD. + Kasugaura + Oita-City OITA 870-8632 + JAPAN + +00-09-88 (hex) Nudian Electron Co., Ltd. +000988 (base 16) Nudian Electron Co., Ltd. + 797-28 Bangbae-Dong, Seocho-Gu + Seoul 137-060 + KOREA, REPUBLIC OF + +00-09-89 (hex) VividLogic Inc. +000989 (base 16) VividLogic Inc. + 40994 Encyclopedia Circle + Fremont CA 94538 + UNITED STATES + +00-09-8A (hex) EqualLogic Inc +00098A (base 16) EqualLogic Inc + 9 Townsend West + Nashua NH 03062 + UNITED STATES + +00-09-8B (hex) Entropic Communications, Inc. +00098B (base 16) Entropic Communications, Inc. + 9276 Scranton Rd #200 + San Diego CA 92121 + UNITED STATES + +00-09-8C (hex) Option Wireless Sweden +00098C (base 16) Option Wireless Sweden + Sturegatan 2 + 11th fl. + Sundbyberg SE-172 24 + SWEDEN + +00-09-8D (hex) Velocity Semiconductor +00098D (base 16) Velocity Semiconductor + Suite 32 Wey House + 15 Church Street + Weybridge Surrey KT13 8NA + UNITED KINGDOM + +00-09-8E (hex) ipcas GmbH +00098E (base 16) ipcas GmbH + Wetterkreuz 17 + Erlangen Bavaria 91058 + GERMANY + +00-09-8F (hex) Cetacean Networks +00098F (base 16) Cetacean Networks + 110 Corporate Drive + Building 2 + Portsmouth NH 03801 + UNITED STATES + +00-09-90 (hex) ACKSYS Communications & systems +000990 (base 16) ACKSYS Communications & systems + ZA du Val Joyeux + 10 rue des Entrepreneurs + VILLEPREUX F-78450 + FRANCE + +00-09-91 (hex) GE Fanuc Automation Manufacturing, Inc. +000991 (base 16) GE Fanuc Automation Manufacturing, Inc. + Route 606 & Route 29N + PO Box 8106 + Charlottesville Virginia 22911 + UNITED STATES + +00-09-92 (hex) InterEpoch Technology,INC. +000992 (base 16) InterEpoch Technology,INC. + 7F,No.3,Alley 6,Lane 235,Pao-Chiao Rd + Hsin-Tien Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-09-93 (hex) Visteon Corporation +000993 (base 16) Visteon Corporation + 16630 Southfield Road + St. 41E10 + Allen Park Michigan 48101 + UNITED STATES + +00-09-94 (hex) Cronyx Engineering +000994 (base 16) Cronyx Engineering + Gamalei str. 9 + Moscow 123363 + RUSSIAN FEDERATION + +00-09-95 (hex) Castle Technology Ltd +000995 (base 16) Castle Technology Ltd + Ore Trading Estate + Woodbridge Road + Framlingham Suffolk IP13 9LL + UNITED KINGDOM + +00-09-96 (hex) RDI +000996 (base 16) RDI + 20406 Earl St. + Torrance CA 90503 + UNITED STATES + +00-09-97 (hex) Nortel Networks +000997 (base 16) Nortel Networks + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-09-98 (hex) Capinfo Company Limited +000998 (base 16) Capinfo Company Limited + 7th Floor A Corporate Square, NO. 35 Fin + Beijing 100032 + CHINA + +00-09-99 (hex) CP GEORGES RENAULT +000999 (base 16) CP GEORGES RENAULT + 199 ROUTE DE CLISSON + ST SEBASTIEN SUR LOIRE 44230 + FRANCE + +00-09-9A (hex) ELMO COMPANY, LIMITED +00099A (base 16) ELMO COMPANY, LIMITED + 6-14, MEIZEN-CHO, MIZUHO-KU + NAGOYA AICHI-Pref. 467-8567 + JAPAN + +00-09-9B (hex) Western Telematic Inc. +00099B (base 16) Western Telematic Inc. + 5 Sterling + Irvine CA 92618 + UNITED STATES + +00-09-9C (hex) Naval Research Laboratory +00099C (base 16) Naval Research Laboratory + Code 5592 + 4555 Overlook Avenue + Washington DC 20375-5000 + UNITED STATES + +00-09-9D (hex) Haliplex Communications +00099D (base 16) Haliplex Communications + PO Box 147 + Mooroolbark Vic 3138 + AUSTRALIA + +00-09-9E (hex) Testech, Inc. +00099E (base 16) Testech, Inc. + Bundang-Technopark, C-Dong, 702-Ho, #145 + Yatap-Dong, Bundang-Gu, + Sungnam-City Kyungki-Do 463-070 + KOREA, REPUBLIC OF + +00-09-9F (hex) VIDEX INC. +00099F (base 16) VIDEX INC. + 1105 NE Circle Blvd + Corvallis OR 97330 + UNITED STATES + +00-09-A0 (hex) Microtechno Corporation +0009A0 (base 16) Microtechno Corporation + 2-33-36 Shimoodanaka + Nakahara-ku + Kawasaki Kanagawa 211-0041 + JAPAN + +00-09-A1 (hex) Telewise Communications, Inc. +0009A1 (base 16) Telewise Communications, Inc. + 2050 Ringwood Avenue + San Jose CA 95131 + UNITED STATES + +00-09-A2 (hex) Interface Co., Ltd. +0009A2 (base 16) Interface Co., Ltd. + 2-5-12-201 Kyonancho + Musashino-city Tokyo 180-0023 + JAPAN + +00-09-A3 (hex) Leadfly Techologies Corp. Ltd. +0009A3 (base 16) Leadfly Techologies Corp. Ltd. + 9Fl, No.260, Bade Rd., + 104, R.O.C. + Taipei 104 + TAIWAN, REPUBLIC OF CHINA + +00-09-A4 (hex) HARTEC Corporation +0009A4 (base 16) HARTEC Corporation + KOUHOKUKU SHIN-YOKOHAMA + 3-19-5 + YOKOHAMA-SHI KANAGAWA-KEN 222-0033 + JAPAN + +00-09-A5 (hex) HANSUNG ELETRONIC INDUSTRIES DEVELOPMENT CO., LTD +0009A5 (base 16) HANSUNG ELETRONIC INDUSTRIES DEVELOPMENT CO., LTD + HEUNGJIN BLDG 3F, #217-3 POI-DONG, KANGN + SEOUL 135-963 + KOREA, REPUBLIC OF + +00-09-A6 (hex) Ignis Optics, Inc. +0009A6 (base 16) Ignis Optics, Inc. + 482 W. San Carlos + San Jose California 95110 + UNITED STATES + +00-09-A7 (hex) Bang & Olufsen A/S +0009A7 (base 16) Bang & Olufsen A/S + Peter Bangs Vej 15 + Struer 7600 + DENMARK + +00-09-A8 (hex) Eastmode Pte Ltd +0009A8 (base 16) Eastmode Pte Ltd + 30 Loyang Way #07-06 + Loyang Industrial Estate + 508769 + SINGAPORE + +00-09-A9 (hex) Ikanos Communications +0009A9 (base 16) Ikanos Communications + 47709 Fremont Blvd + Fremont CA 94538 + UNITED STATES + +00-09-AA (hex) Data Comm for Business, Inc. +0009AA (base 16) Data Comm for Business, Inc. + 2949 County Road 1000 East + Dewey IL 61853 + UNITED STATES + +00-09-AB (hex) Netcontrol Oy +0009AB (base 16) Netcontrol Oy + Karvaamokuja 3 + Helsinki FIN 00380 + FINLAND + +00-09-AC (hex) LANVOICE +0009AC (base 16) LANVOICE + 1364-39 SeochoDong, #201 Jihun Bldg + Seocho-Gu + Seoul 137-072 + KOREA, REPUBLIC OF + +00-09-AD (hex) HYUNDAI SYSCOMM, INC. +0009AD (base 16) HYUNDAI SYSCOMM, INC. + SAN 136-1, AMI-RI, BUBAL-EUB + ICHON KYOUNGKI-DO 467-701 + KOREA, REPUBLIC OF + +00-09-AE (hex) OKANO ELECTRIC CO.,LTD +0009AE (base 16) OKANO ELECTRIC CO.,LTD + 2-8-18 KANAYAMA-CHO + HIGASHIKURUME TOKYO 203-0003 + JAPAN + +00-09-AF (hex) e-generis +0009AF (base 16) e-generis + 13 rue du chene germain + cesson sevigne 35510 + FRANCE + +00-09-B0 (hex) Onkyo Corporation +0009B0 (base 16) Onkyo Corporation + 2-1 Nisshin-cho + Neyagawa Osaka 5728540 + JAPAN + +00-09-B1 (hex) Kanematsu Electronics, Ltd. +0009B1 (base 16) Kanematsu Electronics, Ltd. + 17-5, Kyobashi 2-chome + Chuo-ku Tokyo 104-8338 + JAPAN + +00-09-B2 (hex) L&F Inc. +0009B2 (base 16) L&F Inc. + 4-2-9 + TOKUMARU + ITABASHI-KU Tokyo 175-0083 + JAPAN + +00-09-B3 (hex) MCM Systems Ltd +0009B3 (base 16) MCM Systems Ltd + Kolomban 9F + Ankaran Slovenija 6280 + SLOVENIA + +00-09-B4 (hex) KISAN TELECOM CO., LTD. +0009B4 (base 16) KISAN TELECOM CO., LTD. + 9F, Teawon Bldg., 65 Bangyi-Dong + Songpa-Gu Seoul 138-828 + KOREA, REPUBLIC OF + +00-09-B5 (hex) 3J Tech. Co., Ltd. +0009B5 (base 16) 3J Tech. Co., Ltd. + 342 Fushing N. Rd., 2F, Taipei, Taiwan + Taipei 104 + TAIWAN, REPUBLIC OF CHINA + +00-09-B6 (hex) Cisco Systems +0009B6 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose Ca 95134 + UNITED STATES + +00-09-B7 (hex) Cisco Systems +0009B7 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 94134 + UNITED STATES + +00-09-B8 (hex) Entise Systems +0009B8 (base 16) Entise Systems + 10095 Judy Avenue + Cupertino CA 95014 + UNITED STATES + +00-09-B9 (hex) Action Imaging Solutions +0009B9 (base 16) Action Imaging Solutions + Kings Hall, St Ives Business Park + St Ives + Huntingdon Cambridgeshire PE27 4WY + UNITED KINGDOM + +00-09-BA (hex) MAKU Informationstechik GmbH +0009BA (base 16) MAKU Informationstechik GmbH + Gewerbehofstr. 7 + Essen NRW 45145 + GERMANY + +00-09-BB (hex) MathStar, Inc. +0009BB (base 16) MathStar, Inc. + 5900 Green Oak Drive + Minneapolis MN 55343 + UNITED STATES + +00-09-BC (hex) Integrian, Inc. +0009BC (base 16) Integrian, Inc. + 511 Davis Dr. + Suite 300 + Morrisville NC 27560 + UNITED STATES + +00-09-BD (hex) Epygi Technologies, Ltd. +0009BD (base 16) Epygi Technologies, Ltd. + 5040 Addison Circle + Suite 225 + Addison Texas 75001 + UNITED STATES + +00-09-BE (hex) Mamiya-OP Co.,Ltd. +0009BE (base 16) Mamiya-OP Co.,Ltd. + 3-23-10, Negishi Minami-ku + Saitama-shi Saitama 336-8581 + JAPAN + +00-09-BF (hex) Nintendo Co.,Ltd. +0009BF (base 16) Nintendo Co.,Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO 601-8501 + JAPAN + +00-09-C0 (hex) 6WIND +0009C0 (base 16) 6WIND + 1, place Charles de Gaulle + Montigny-le-Bretonneux 78180 + FRANCE + +00-09-C1 (hex) PROCES-DATA A/S +0009C1 (base 16) PROCES-DATA A/S + Navervej 8 + Silkeborg DK-8600 + DENMARK + +00-09-C2 (hex) PRIVATE +0009C2 (base 16) + +00-09-C3 (hex) NETAS +0009C3 (base 16) NETAS + Alemdag Cad. No 171 + UMRANIYE + ISTANBUL 81244 + TURKEY + +00-09-C4 (hex) Medicore Co., Ltd +0009C4 (base 16) Medicore Co., Ltd + 72-3 5th Fl., Luna Bldg, Chungdam-dong + Kangnam-gu + Seoul 135-080 + KOREA, REPUBLIC OF + +00-09-C5 (hex) KINGENE Technology Corporation +0009C5 (base 16) KINGENE Technology Corporation + 7F, No. 144, Minchuan E. Rd. Sec. 3 + Taipei 105 + TAIWAN, REPUBLIC OF CHINA + +00-09-C6 (hex) Visionics Corporation +0009C6 (base 16) Visionics Corporation + 5600 Rowland Road + Suite 205 + Minnetonka MN 55343 + UNITED STATES + +00-09-C7 (hex) Movistec +0009C7 (base 16) Movistec + 110-5 Maryoung -ri Seosu-myun + Kunsan Chonbuk 573-940 + KOREA, REPUBLIC OF + +00-09-C8 (hex) SINAGAWA TSUSHIN KEISOU SERVICE +0009C8 (base 16) SINAGAWA TSUSHIN KEISOU SERVICE + 13-5 Fuke , Sumiyoshi , Onahama + Iwaki City Fukushima Prefecture 971-8124 + JAPAN + +00-09-C9 (hex) BlueWINC Co., Ltd. +0009C9 (base 16) BlueWINC Co., Ltd. + 401 Korea Design Center + 344-1 Yatap1-dong, Bundang-gu + Seongnam City Kyonggi–do 463-828 + KOREA, REPUBLIC OF + +00-09-CA (hex) iMaxNetworks(Shenzhen)Limited. +0009CA (base 16) iMaxNetworks(Shenzhen)Limited. + 4/B,South Bldg of 29th,South District of + Shenzhen Hi-Tech Industrial Park, Shenna + Shenzhen GuangDong 518057 + CHINA + +00-09-CB (hex) HBrain +0009CB (base 16) HBrain + #705 Kwanglim Bldg 179 KumiDong + Bundang Gu + Seongnam GyeonggiDo 463-810 + KOREA, REPUBLIC OF + +00-09-CC (hex) Moog GmbH +0009CC (base 16) Moog GmbH + Hanns-Klemm-Str. 28 + Boeblingen D-71034 + GERMANY + +00-09-CD (hex) HUDSON SOFT CO.,LTD. +0009CD (base 16) HUDSON SOFT CO.,LTD. + C62,Geijutsu-no-mori + 3-chome,Minami-ku + Sapporo Hokkaido 005-0864 + JAPAN + +00-09-CE (hex) SpaceBridge Semiconductor Corp. +0009CE (base 16) SpaceBridge Semiconductor Corp. + 115 rue Champlain + Hull Quebec J8X3R1 + CANADA + +00-09-CF (hex) iAd GmbH +0009CF (base 16) iAd GmbH + Unterschlauersbacher Hauptstrasse 10 + Grosshabersdorf Bavaria 90613 + GERMANY + +00-09-D0 (hex) Versatel Networks +0009D0 (base 16) Versatel Networks + 80 Jean-Proulx St. + Hull Quebec J8Z 1W1 + CANADA + +00-09-D1 (hex) SERANOA NETWORKS INC +0009D1 (base 16) SERANOA NETWORKS INC + CONCORD OFFICE CENTER + 2352 MAIN ST + CONCORD MA 01742 + UNITED STATES + +00-09-D2 (hex) Mai Logic Inc. +0009D2 (base 16) Mai Logic Inc. + 47697 Westinghouse Dr., Suite 200 + Fremont CA 94539 + UNITED STATES + +00-09-D3 (hex) Western DataCom Co., Inc. +0009D3 (base 16) Western DataCom Co., Inc. + 925-D Bassett Rd. + Westlake OH 44145 + UNITED STATES + +00-09-D4 (hex) Transtech Networks +0009D4 (base 16) Transtech Networks + 100 Wood Avenue + Suite 204 + Iselin NJ 08830 + UNITED STATES + +00-09-D5 (hex) Signal Communication, Inc. +0009D5 (base 16) Signal Communication, Inc. + 100 Wood Ave South + Suite 103 + Iselin NJ 08830 + UNITED STATES + +00-09-D6 (hex) KNC One GmbH +0009D6 (base 16) KNC One GmbH + Hohe Welle 10 B + Evessen Niedersachsen 38173 + GERMANY + +00-09-D7 (hex) DC Security Products +0009D7 (base 16) DC Security Products + One Lindsay Circle + San Francisco California 94124 + UNITED STATES + +00-09-D8 (hex) PRIVATE +0009D8 (base 16) + +00-09-D9 (hex) Neoscale Systems, Inc +0009D9 (base 16) Neoscale Systems, Inc + 1500 Mc Candless Drive + Milpitas CA 95035 + UNITED STATES + +00-09-DA (hex) Control Module Inc. +0009DA (base 16) Control Module Inc. + 227 Brainard Road + Enfield CT 06082 + UNITED STATES + +00-09-DB (hex) eSpace +0009DB (base 16) eSpace + 9623 Simsbury Ct. + Twinsburg OH 44087-3220 + UNITED STATES + +00-09-DC (hex) Galaxis Technology AG +0009DC (base 16) Galaxis Technology AG + Steinmetzstrasse 7 + P.O. Box 3364 + Lübeck Schleswig-Holstein 23556 + GERMANY + +00-09-DD (hex) Mavin Technology Inc. +0009DD (base 16) Mavin Technology Inc. + Room 305, Bldg. 52 No. 195-28 + Sec. 4 Chung-Hsing Rd. + Chutung, Hsinchu 310 + TAIWAN, REPUBLIC OF CHINA + +00-09-DE (hex) Samjin Information & Communications Co., Ltd. +0009DE (base 16) Samjin Information & Communications Co., Ltd. + MajangMyun DukPyungRi 235-2 + Ichon KyongGi 467-812 + KOREA, REPUBLIC OF + +00-09-DF (hex) Vestel Komunikasyon Sanayi ve Ticaret A.S. +0009DF (base 16) Vestel Komunikasyon Sanayi ve Ticaret A.S. + Ege Serbest Bolgesi No:144/1 + Gaziemir + Izmir - 35410 + TURKEY + +00-09-E0 (hex) XEMICS S.A. +0009E0 (base 16) XEMICS S.A. + Rue de la Maladiere 71 + CH-2007 Neuchatel Neuchatel 2007 + SWITZERLAND + +00-09-E1 (hex) Gemtek Technology Co., Ltd. +0009E1 (base 16) Gemtek Technology Co., Ltd. + No.1 Jen Ai Road + Hukou Hsinchu 303 + TAIWAN, REPUBLIC OF CHINA + +00-09-E2 (hex) Sinbon Electronics Co., Ltd. +0009E2 (base 16) Sinbon Electronics Co., Ltd. + 4F-13, No. 79, Sec 1, Hsin Tai Wu Rd. + Hsi-Chih, Taipei 221 + TAIWAN, REPUBLIC OF CHINA + +00-09-E3 (hex) Angel Iglesias S.A. +0009E3 (base 16) Angel Iglesias S.A. + Polígono 27 Martutene + San Sebastián Guipúzcoa 20014 + SPAIN + +00-09-E4 (hex) K Tech Infosystem Inc. +0009E4 (base 16) K Tech Infosystem Inc. + B-405, Bundang Techno-Park 148, Yatap-do + Seongnam Kyonggi-Do 464-070 + KOREA, REPUBLIC OF + +00-09-E5 (hex) Hottinger Baldwin Messtechnik GmbH +0009E5 (base 16) Hottinger Baldwin Messtechnik GmbH + Im Tiefen See 45 + Darmstadt Hessen 64293 + GERMANY + +00-09-E6 (hex) Cyber Switching Inc. +0009E6 (base 16) Cyber Switching Inc. + 1800 De La Cruz Blvd. + Santa Clara CA 95050 + UNITED STATES + +00-09-E7 (hex) ADC Techonology +0009E7 (base 16) ADC Techonology + Sakae Members Office Bld. 4-16-8, Sakae, + Nagoya Aichi 4600008 + JAPAN + +00-09-E8 (hex) Cisco Systems +0009E8 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-09-E9 (hex) Cisco Systems +0009E9 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-09-EA (hex) YEM Inc. +0009EA (base 16) YEM Inc. + 1-3-33 + Okata + Atsugi-shi Kanagawa 243-0021 + JAPAN + +00-09-EB (hex) HuMANDATA LTD. +0009EB (base 16) HuMANDATA LTD. + 1-2-51 + Nakahozumi + Ibaraki Osaka 567-0034 + JAPAN + +00-09-EC (hex) Daktronics, Inc. +0009EC (base 16) Daktronics, Inc. + 315 32nd Ave + Building #2 + Brookings SD 57006 + UNITED STATES + +00-09-ED (hex) CipherOptics +0009ED (base 16) CipherOptics + 701 Corporate Center Drive + Suite 150 + Raleigh North Carolina 27607 + UNITED STATES + +00-09-EE (hex) MEIKYO ELECTRIC CO.,LTD +0009EE (base 16) MEIKYO ELECTRIC CO.,LTD + 4-27-2 Higashiogu + Arakawa-ku Tokyo 116-0012 + JAPAN + +00-09-EF (hex) Vocera Communications +0009EF (base 16) Vocera Communications + 20230 Stevens Creek Blvd + Suite C + Cupertino California 95014 + UNITED STATES + +00-09-F0 (hex) Shimizu Technology Inc. +0009F0 (base 16) Shimizu Technology Inc. + 15-6, No.107, Chung Shan Rd., Sec.1 + Hsin Chuan, Taipei 242 + TAIWAN, REPUBLIC OF CHINA + +00-09-F1 (hex) Yamaki Electric Corporation +0009F1 (base 16) Yamaki Electric Corporation + 3-7-22 Shimomeguro + Meguro-ku Tokyo 153-0064 + JAPAN + +00-09-F2 (hex) Cohu, Inc., Electronics Division +0009F2 (base 16) Cohu, Inc., Electronics Division + 3912 Calle Fortunada + San Diego CA 92123 + UNITED STATES + +00-09-F3 (hex) WELL Communication Corp. +0009F3 (base 16) WELL Communication Corp. + 11F, No.778, Chung Cheng Rd., Chung Ho C + Chung Ho 235 + TAIWAN, REPUBLIC OF CHINA + +00-09-F4 (hex) Alcon Laboratories, Inc. +0009F4 (base 16) Alcon Laboratories, Inc. + 6201 South Freeway + Fort Worth Tx 76134 + UNITED STATES + +00-09-F5 (hex) Emerson Network Power Co.,Ltd +0009F5 (base 16) Emerson Network Power Co.,Ltd + 1/F,3/F Electric Building Huawei Base,Ba + Longgang,Shenzhen Municipality,People¡¯s + ShenZhen GuangDong 518029 + CHINA + +00-09-F6 (hex) Shenzhen Eastern Digital Tech Ltd. +0009F6 (base 16) Shenzhen Eastern Digital Tech Ltd. + Shenzhen Futian Chegongmiao Tairan + Technology Park 210 - 3C + Shenzhen Guangdong 518048 + CHINA + +00-09-F7 (hex) SED, a division of Calian +0009F7 (base 16) SED, a division of Calian + 18 Innnovation Boulevard + P.O. Box 1464 + Saskatoon Saskatchewan (SK) S7K 3P7 + CANADA + +00-09-F8 (hex) UNIMO TECHNOLOGY CO., LTD. +0009F8 (base 16) UNIMO TECHNOLOGY CO., LTD. + BANGBAE DONG 479-12 + SEOCHO-GU, + SEOUL 137-820 + KOREA, REPUBLIC OF + +00-09-F9 (hex) ART JAPAN CO., LTD. +0009F9 (base 16) ART JAPAN CO., LTD. + 322-7, Ichinotsubo, + Nakahara-ku + Kawasaki Kanagawa 211-0016 + JAPAN + +00-09-FB (hex) Philips Medizinsysteme Boeblingen GmbH +0009FB (base 16) Philips Medizinsysteme Boeblingen GmbH + Hewlett-Packard-Str.2 + Boeblingen 71034 + GERMANY + +00-09-FC (hex) IPFLEX Inc. +0009FC (base 16) IPFLEX Inc. + Mowa-Bldg 3F, 1-16-6 + Ebisu-nishi + Shibuya-ku Tokyo 150-0021 + JAPAN + +00-09-FD (hex) Ubinetics Limited +0009FD (base 16) Ubinetics Limited + Cambridge Technology Centre + Melbourn Hertfordshire SG8 6DP + UNITED KINGDOM + +00-09-FE (hex) Daisy Technologies, Inc. +0009FE (base 16) Daisy Technologies, Inc. + 1209 Orange Street + County of New Castle + City of Wilmington DE 19801 + UNITED STATES + +00-09-FF (hex) X.net 2000 GmbH +0009FF (base 16) X.net 2000 GmbH + Koenigsberger Str. 2c + Reinheim 64354 + GERMANY + +00-0A-00 (hex) Mediatek Corp. +000A00 (base 16) Mediatek Corp. + 8F, No 69-5, Sec.2, Chung Cheng East Rd. + Taipei 251 + TAIWAN, REPUBLIC OF CHINA + +00-0A-01 (hex) SOHOware, Inc. +000A01 (base 16) SOHOware, Inc. + 3050 Coronado Drive + Santa Clara CA 95054 + UNITED STATES + +00-0A-02 (hex) ANNSO CO., LTD. +000A02 (base 16) ANNSO CO., LTD. + 5F, No. 100, Min-Chuan Road, Shing-Tien + Shing-Tien City Taipei Hsien Taiwan 221 + TAIWAN, REPUBLIC OF CHINA + +00-0A-03 (hex) ENDESA SERVICIOS, S.L. +000A03 (base 16) ENDESA SERVICIOS, S.L. + AVGDA PARAL.LEL, 51 + BARCELONA 08004 + SPAIN + +00-0A-04 (hex) 3Com Ltd +000A04 (base 16) 3Com Ltd + Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts HP2 4NW + UNITED KINGDOM + +00-0A-05 (hex) Widax Corp. +000A05 (base 16) Widax Corp. + 269 Stevens Street + Hyannis MA 02668 + UNITED STATES + +00-0A-06 (hex) Teledex LLC +000A06 (base 16) Teledex LLC + 6311 San Ignacio Avenue + San Jose CA 95119 + UNITED STATES + +00-0A-07 (hex) WebWayOne Ltd +000A07 (base 16) WebWayOne Ltd + 11 Kingfisher Court, + Hambridge Road + Newbury Berkshire RG14 5SJ + UNITED KINGDOM + +00-0A-08 (hex) ALPINE ELECTRONICS, INC. +000A08 (base 16) ALPINE ELECTRONICS, INC. + 20-1 Yoshima-Kogyodanchi + iwaki-city Fukushima 970-1192 + JAPAN + +00-0A-09 (hex) TaraCom Integrated Products, Inc. +000A09 (base 16) TaraCom Integrated Products, Inc. + 830 Stewart Dr. + Sunnyvale CA 94085 + UNITED STATES + +00-0A-0A (hex) SUNIX Co., Ltd. +000A0A (base 16) SUNIX Co., Ltd. + 3Fl., No. 76, Baugau Rd., + Shindian Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-0A-0B (hex) Sealevel Systems, Inc. +000A0B (base 16) Sealevel Systems, Inc. + 155 Technology Place + Liberty SC 29657 + UNITED STATES + +00-0A-0C (hex) Scientific Research Corporation +000A0C (base 16) Scientific Research Corporation + 2300 Windy Ridge Parkway + Suite 400 South + Atlanta GA 30339 + UNITED STATES + +00-0A-0D (hex) MergeOptics GmbH +000A0D (base 16) MergeOptics GmbH + Am Borsigturm 17 + Berlin 13507 + GERMANY + +00-0A-0E (hex) Invivo Research Inc. +000A0E (base 16) Invivo Research Inc. + 12601 Research Parkway + Orlando Florida 32826 + UNITED STATES + +00-0A-0F (hex) Ilryung Telesys, Inc +000A0F (base 16) Ilryung Telesys, Inc + Ilryung bldg, 34-2, Cheonho-dong + Gangdong-gu + SEOUL 134-861 + KOREA, REPUBLIC OF + +00-0A-10 (hex) FAST media integrations AG +000A10 (base 16) FAST media integrations AG + Schöngrund 26 + Rotkreuz Canton of Zug 6343 + SWITZERLAND + +00-0A-11 (hex) ExPet Technologies, Inc +000A11 (base 16) ExPet Technologies, Inc + 6F, Kyonggi Small Business Center + #111-8, Iui-dong, Paldal-gu, + Suwon, Kyonggi-do, 442-270 442-770 + KOREA, REPUBLIC OF + +00-0A-12 (hex) Azylex Technology, Inc +000A12 (base 16) Azylex Technology, Inc + 7-2Fl., No. 738 Chung Cheng Road, + Chung Ho City Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-0A-13 (hex) Honeywell Video Systems +000A13 (base 16) Honeywell Video Systems + 6554 176 Street + Surrey BC V3S 4G5 + CANADA + +00-0A-14 (hex) TECO a.s. +000A14 (base 16) TECO a.s. + Havlickova 260 + KOLIN CZ 280 58 + CZECH REPUBLIC + +00-0A-15 (hex) Silicon Data, Inc +000A15 (base 16) Silicon Data, Inc + 4699 Old Ironsides Dr., #150 + Santa Clara CA 95054 + UNITED STATES + +00-0A-16 (hex) Lassen Research +000A16 (base 16) Lassen Research + 31695 Forward Road + Manton CA 96059 + UNITED STATES + +00-0A-17 (hex) NESTAR COMMUNICATIONS, INC +000A17 (base 16) NESTAR COMMUNICATIONS, INC + No.6,19 Lane Bade Road + HSINCHU 300 + TAIWAN, REPUBLIC OF CHINA + +00-0A-18 (hex) Vichel Inc. +000A18 (base 16) Vichel Inc. + 3F Jang Bldg. 92-6 Yangjae-dong, Secho-g + Seoul 137-130 + KOREA, REPUBLIC OF + +00-0A-19 (hex) Valere Power, Inc. +000A19 (base 16) Valere Power, Inc. + 661 N. Plano Rd. + Richardson Texas 75081 + UNITED STATES + +00-0A-1A (hex) Imerge Ltd +000A1A (base 16) Imerge Ltd + Unit 6, Bar Hill Business Park + Saxon Way + Bar Hill Cambridge CB3 8SL + UNITED KINGDOM + +00-0A-1B (hex) Stream Labs +000A1B (base 16) Stream Labs + Leninskie gori 1, bild 77 + Moskow 119992 + RUSSIAN FEDERATION + +00-0A-1C (hex) Bridge Information Co., Ltd. +000A1C (base 16) Bridge Information Co., Ltd. + No.3, Lane 106, Wu-Kung 2 Rd., + Wu-Ku Ind. Park, + Taipei 248 + TAIWAN, REPUBLIC OF CHINA + +00-0A-1D (hex) Optical Communications Products Inc. +000A1D (base 16) Optical Communications Products Inc. + 20961 Knapp St. + Chatsworth CA 91311 + UNITED STATES + +00-0A-1E (hex) Red-M Products Limited +000A1E (base 16) Red-M Products Limited + Neptune House + Mercury Park, Wycombe Lane + Wooburn Green Buckinghamshire HP10 0HH + UNITED KINGDOM + +00-0A-1F (hex) ART WARE Telecommunication Co., Ltd. +000A1F (base 16) ART WARE Telecommunication Co., Ltd. + 806 Ace Techno Tower #1, 197-17 + Guro-dong, Guro-Gu + Seoul 152-050 + KOREA, REPUBLIC OF + +00-0A-20 (hex) SVA Networks, Inc. +000A20 (base 16) SVA Networks, Inc. + 840 F Ave., Suite 104 + Plano TX 75074 + UNITED STATES + +00-0A-21 (hex) Integra Telecom Co. Ltd +000A21 (base 16) Integra Telecom Co. Ltd + 7th floor Hwayoung Bld. 112-2 + Karak-dong Sonpa-gu + Seoul + KOREA, REPUBLIC OF + +00-0A-22 (hex) Amperion Inc +000A22 (base 16) Amperion Inc + 250 Apollo Drive + Chelmsford MA 01824 + UNITED STATES + +00-0A-23 (hex) Parama Networks Inc +000A23 (base 16) Parama Networks Inc + 1955 The Alameda + San Jose CA 95126 + UNITED STATES + +00-0A-24 (hex) Octave Communications +000A24 (base 16) Octave Communications + 85 Northwest Boulevard + Nashua NH 03063 + UNITED STATES + +00-0A-25 (hex) CERAGON NETWORKS +000A25 (base 16) CERAGON NETWORKS + 24 RAUEL WALLENBERG STREET + TEL-AVIV 96719 + ISRAEL + +00-0A-26 (hex) CEIA S.p.A. +000A26 (base 16) CEIA S.p.A. + Zona Industriale di Viciomaggio 54 + Arezzo AR 52040 + ITALY + +00-0A-27 (hex) Apple Computer, Inc. +000A27 (base 16) Apple Computer, Inc. + 20650 Valley Green Drive + Cupertino CA 95014 + UNITED STATES + +00-0A-28 (hex) Motorola +000A28 (base 16) Motorola + 600 N. US Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-0A-29 (hex) Pan Dacom Networking AG +000A29 (base 16) Pan Dacom Networking AG + Dreieich Plaza 1B + Dreieich Hessen D-63303 + GERMANY + +00-0A-2A (hex) QSI Systems Inc. +000A2A (base 16) QSI Systems Inc. + 7 Raymond Avenue + Building B, Unit 11 + Salem NH 03079 + UNITED STATES + +00-0A-2B (hex) Etherstuff +000A2B (base 16) Etherstuff + 6943 Whitaker St + Lake Balboa CA 91406 + UNITED STATES + +00-0A-2C (hex) Active Tchnology Corporation +000A2C (base 16) Active Tchnology Corporation + 16-23, Shibaura 2-Chome, + Minato-ku, + Tokyo Tokyo 108-0023 + JAPAN + +00-0A-2D (hex) PRIVATE +000A2D (base 16) + +00-0A-2E (hex) MAPLE NETWORKS CO., LTD +000A2E (base 16) MAPLE NETWORKS CO., LTD + 602, Dongwha + 349-24, Shindaebang-Dong, Dongjak-Gu + SEOUL 156-010 + KOREA, REPUBLIC OF + +00-0A-2F (hex) Artnix Inc. +000A2F (base 16) Artnix Inc. + Chungjin B/D, 475-22 Bangbae, Seocho + Seoul 137-819 + KOREA, REPUBLIC OF + +00-0A-30 (hex) Johnson Controls-ASG +000A30 (base 16) Johnson Controls-ASG + 915 East 32nd Street + Holland MI 49423 + UNITED STATES + +00-0A-31 (hex) HCV Wireless +000A31 (base 16) HCV Wireless + Level 1, 80 Jephson St + Toowong Qld 4066 + AUSTRALIA + +00-0A-32 (hex) Xsido Corporation +000A32 (base 16) Xsido Corporation + 3F,2-8-13,Shiba-Daimon, + Minato-ku + Tokyo 105-0012 + JAPAN + +00-0A-33 (hex) Emulex Corporation +000A33 (base 16) Emulex Corporation + 2021 Opportunity Drive + Suite 1 + Roseville CA 95678 + UNITED STATES + +00-0A-34 (hex) Identicard Systems Incorporated +000A34 (base 16) Identicard Systems Incorporated + 40 Citation Lane + Lancaster Pennsylvania 17606 + UNITED STATES + +00-0A-35 (hex) Xilinx +000A35 (base 16) Xilinx + 2100 Logic Drive + San Jose CA 94110 + UNITED STATES + +00-0A-36 (hex) Synelec Telecom Multimedia +000A36 (base 16) Synelec Telecom Multimedia + Zone Industrielle + Saint Sernin sur Rance Aveyron F-12380 + FRANCE + +00-0A-37 (hex) Procera Networks, Inc. +000A37 (base 16) Procera Networks, Inc. + 1299 Orleans Drive + Sunnyvale CA 94089 + UNITED STATES + +00-0A-38 (hex) Apani Networks +000A38 (base 16) Apani Networks + 1800 E. Imperial Hwy + Suite 210 + Brea CA 92821 + UNITED STATES + +00-0A-39 (hex) LoPA Information Technology +000A39 (base 16) LoPA Information Technology + 710-9, Dae Lim 3-Dong + Young Deung po-gu Seoul, Korea 150-814 + KOREA, REPUBLIC OF + +00-0A-3A (hex) J-THREE INTERNATIONAL Holding Co., Ltd. +000A3A (base 16) J-THREE INTERNATIONAL Holding Co., Ltd. + No. 1, Yu-3 Rd., Youth Industrial Park + Yang-mei, Taoyuan Hsien 326 + TAIWAN, REPUBLIC OF CHINA + +00-0A-3B (hex) GCT Semiconductor, Inc +000A3B (base 16) GCT Semiconductor, Inc + 2121 Ringwood Avenue + San Jose CA 95131 + UNITED STATES + +00-0A-3C (hex) Enerpoint Ltd. +000A3C (base 16) Enerpoint Ltd. + Kaivopuistontie 33 + Rauma 26100 + FINLAND + +00-0A-3D (hex) Elo Sistemas Eletronicos S.A. +000A3D (base 16) Elo Sistemas Eletronicos S.A. + Rua Edu Chaves, 547 + Porto Alegre RS 90.240-620 + BRAZIL + +00-0A-3E (hex) EADS Telecom +000A3E (base 16) EADS Telecom + Landshuter Strasse 26 + Munich Bavaria 85716 + GERMANY + +00-0A-3F (hex) Data East Corporation +000A3F (base 16) Data East Corporation + 4-41-10 Minami-Ogikubo + Suginami-ku TOKYO 167-0052 + JAPAN + +00-0A-40 (hex) Crown Audio +000A40 (base 16) Crown Audio + 1718 W. Mishawaka Rd + Elkhart IN 46517 + UNITED STATES + +00-0A-41 (hex) Cisco Systems +000A41 (base 16) Cisco Systems + 80 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-0A-42 (hex) Cisco Systems +000A42 (base 16) Cisco Systems + 80 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-0A-43 (hex) Chunghwa Telecom Co., Ltd. +000A43 (base 16) Chunghwa Telecom Co., Ltd. + 12, Lane 551, Min-Tsu Road + Sec. 5 Yang-Mei, + Taoyuan 326 + TAIWAN, REPUBLIC OF CHINA + +00-0A-44 (hex) Avery Dennison Deutschland GmbH +000A44 (base 16) Avery Dennison Deutschland GmbH + Ohmstr. 3 + Eching 85386 + GERMANY + +00-0A-45 (hex) Audio-Technica Corp. +000A45 (base 16) Audio-Technica Corp. + Naruse 1,348 + Machida Tokyo 194-8566 + JAPAN + +00-0A-46 (hex) ARO Controls SAS +000A46 (base 16) ARO Controls SAS + ZI de Mont sur Loir + Chateau du Loir sarthe 72500 + FRANCE + +00-0A-47 (hex) Allied Vision Technologies +000A47 (base 16) Allied Vision Technologies + Taschenweg 2a + Stadtroda Thüringen 07646 + GERMANY + +00-0A-48 (hex) Albatron Technology +000A48 (base 16) Albatron Technology + 6F, No 716, Chung Cheng, + Chung-Ho City Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-0A-49 (hex) F5 Networks, Inc. +000A49 (base 16) F5 Networks, Inc. + 41 Wellman St + Lowell MA 01851 + UNITED STATES + +00-0A-4A (hex) Targa Systems Ltd. +000A4A (base 16) Targa Systems Ltd. + 1905 Grandtech Centre, + 8 On Ping St. Siu Lek Yuen + Shatin N.T. + HONG KONG + +00-0A-4B (hex) DataPower Technology, Inc. +000A4B (base 16) DataPower Technology, Inc. + One Alewife Center + Cambridge MA 02140 + UNITED STATES + +00-0A-4C (hex) Molecular Devices Corporation +000A4C (base 16) Molecular Devices Corporation + 1311 Orleans Drive + Sunnyvale CA 94089 + UNITED STATES + +00-0A-4D (hex) Noritz Corporation +000A4D (base 16) Noritz Corporation + 5 Minami-Futami, + Futami-cho, + Akashi-shi Hyogo 674-0093 + JAPAN + +00-0A-4E (hex) UNITEK Electronics INC. +000A4E (base 16) UNITEK Electronics INC. + 1-18-4 + Ohmori-kita + Ohta-ku Tokyo 143-0016 + JAPAN + +00-0A-4F (hex) Brain Boxes Limited +000A4F (base 16) Brain Boxes Limited + Unit 3c, Wavertree Boulevard South + Wavertree Technology Park + Liverpool Merseyside L7 9PF + UNITED KINGDOM + +00-0A-50 (hex) REMOTEK CORPORATION +000A50 (base 16) REMOTEK CORPORATION + 6F-6, No 77, Sec 1, HSIN TAI WU ROAD, + HSI-CHIH TAIPEI HSIEN 221 + TAIWAN, REPUBLIC OF CHINA + +00-0A-51 (hex) GyroSignal Technology Co., Ltd. +000A51 (base 16) GyroSignal Technology Co., Ltd. + 5F,No. 77,Lide St. + Zhonghe City Taipei County 23556 + TAIWAN, REPUBLIC OF CHINA + +00-0A-52 (hex) AsiaRF Ltd. +000A52 (base 16) AsiaRF Ltd. + 4F., No.2, Lane 560 + Zhongzheng Rd. + Xindian City Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-0A-53 (hex) Intronics, Incorporated +000A53 (base 16) Intronics, Incorporated + 2020 Lafayette Blvd. + Fredericksburg Virginia 22401 + UNITED STATES + +00-0A-54 (hex) Laguna Hills, Inc. +000A54 (base 16) Laguna Hills, Inc. + 1-25-1 35F Fl., Nishishinjuku + Shinjuku-ku Tokyo 1630635 + JAPAN + +00-0A-55 (hex) MARKEM Corporation +000A55 (base 16) MARKEM Corporation + 150 Congress Street + Keene NH 03431 + UNITED STATES + +00-0A-56 (hex) HITACHI Maxell Ltd. +000A56 (base 16) HITACHI Maxell Ltd. + 6-20-1 Kinunodai + Yawara-mura, Tsukuba-gun IBARAKI 300-2496 + JAPAN + +00-0A-57 (hex) Hewlett-Packard Company - Standards +000A57 (base 16) Hewlett-Packard Company - Standards + 10955 Tantau Avenue + Mailstop 4138 + Cupertino CA 95014 + UNITED STATES + +00-0A-58 (hex) Ingenieur-Buero Freyer & Siegel +000A58 (base 16) Ingenieur-Buero Freyer & Siegel + Neuendorfstr. 18 b + Hennigsdorf Brandenburg 16761 + GERMANY + +00-0A-59 (hex) HW server +000A59 (base 16) HW server + Italska 15 + Prague 2 Czech Republic 120 00 + CZECH REPUBLIC + +00-0A-5A (hex) GreenNET Technologies Co.,Ltd. +000A5A (base 16) GreenNET Technologies Co.,Ltd. + No.10, Qiongyu Road,Sciences-based Indus + Nanshan District + Shenzhen Guangdong 518057 + CHINA + +00-0A-5B (hex) Power-One as +000A5B (base 16) Power-One as + P.O. Box 1543 + Drammen 3007 + NORWAY + +00-0A-5C (hex) Carel s.p.a. +000A5C (base 16) Carel s.p.a. + Via dell' Industria, 11 + Brugine Padova 35020 + ITALY + +00-0A-5D (hex) PUC Founder (MSC) Berhad +000A5D (base 16) PUC Founder (MSC) Berhad + Lot G-1 & G-2, Incubator 1 + Technology Park Malaysia + Kuala Lumpur WP 57000 + MALAYSIA + +00-0A-5E (hex) 3COM Corporation +000A5E (base 16) 3COM Corporation + 5400 Bayfront Plaza + M/S 5119 + Santa Clara CA 95052-8145 + UNITED STATES + +00-0A-5F (hex) almedio inc. +000A5F (base 16) almedio inc. + 32-13, sakae-cho 2 chome + higashimurayama-shi tokyo 189-0013 + JAPAN + +00-0A-60 (hex) Autostar Technology Pte Ltd +000A60 (base 16) Autostar Technology Pte Ltd + Unit 04-10 TECHplace II + Singapore Singapore 569876 + SINGAPORE + +00-0A-61 (hex) Cellinx Systems Inc. +000A61 (base 16) Cellinx Systems Inc. + 408 Woosung Character199 officetel + 467-24 dogok-dong kangnam-gu + Seoul 135-856 + KOREA, REPUBLIC OF + +00-0A-62 (hex) Crinis Networks, Inc. +000A62 (base 16) Crinis Networks, Inc. + 2099 N. Collins Blvd, Suite 200 + Richardson TX 75080 + UNITED STATES + +00-0A-63 (hex) DHD GmbH +000A63 (base 16) DHD GmbH + Haferkornstrasse 5 + Leipzig Sachsen 04129 + GERMANY + +00-0A-64 (hex) Eracom Technologies +000A64 (base 16) Eracom Technologies + 28 Greg Chappell Drive + Burleigh Heads Qld 4220 + AUSTRALIA + +00-0A-65 (hex) GentechMedia.co.,ltd. +000A65 (base 16) GentechMedia.co.,ltd. + solvit bldg 2f, 402-8, yangjae-don, + seocho-gu, seoul 137-899 + KOREA, REPUBLIC OF + +00-0A-66 (hex) MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD. +000A66 (base 16) MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD. + 1-4-13 OOYODONAKA,KITA-KU + OSAKA 531-0076 + JAPAN + +00-0A-67 (hex) OngCorp +000A67 (base 16) OngCorp + 481 Hackensack Ave. + Hackensack NJ 07601 + UNITED STATES + +00-0A-68 (hex) SolarFlare Communications, Inc. +000A68 (base 16) SolarFlare Communications, Inc. + 9501 Jeronimo + Suite 100 + Irvine CA 92618 + UNITED STATES + +00-0A-69 (hex) SUNNY bell Technology Co., Ltd. +000A69 (base 16) SUNNY bell Technology Co., Ltd. + #502 BUWON B/D 107-45 BANPO-DONG + SEOCHO-KU + SEOUL 137-806 + KOREA, REPUBLIC OF + +00-0A-6A (hex) SVM Microwaves s.r.o. +000A6A (base 16) SVM Microwaves s.r.o. + U Mrazovky 5 + Praha 5 15000 + CZECH REPUBLIC + +00-0A-6B (hex) Tadiran Telecom Business Systems LTD +000A6B (base 16) Tadiran Telecom Business Systems LTD + 18 Hasivim St. + P.O.Box 450 + Petach Tikva 49105 + ISRAEL + +00-0A-6C (hex) Walchem Corporation +000A6C (base 16) Walchem Corporation + 5 Boynton Road + Holliston MA 01746 + UNITED STATES + +00-0A-6D (hex) EKS Elektronikservice GmbH +000A6D (base 16) EKS Elektronikservice GmbH + Enzstr. 9 + Kornwestheim Baden Würtemberg 70806 + GERMANY + +00-0A-6E (hex) Broadcast Technology Limited +000A6E (base 16) Broadcast Technology Limited + 6 Sopwith Park, Royce Close + West Portway Industrial Estate + Andover Hampshire SP10 3TB + UNITED KINGDOM + +00-0A-6F (hex) ZyFLEX Technologies Inc +000A6F (base 16) ZyFLEX Technologies Inc + 2Fl. No. 58 Park Ave. II + S.B.I.P., Hsinchu 30077 + TAIWAN, REPUBLIC OF CHINA + +00-0A-70 (hex) MPLS Forum +000A70 (base 16) MPLS Forum + 39355 California Street + Suite 307 + Fremont CA 94538 + UNITED STATES + +00-0A-71 (hex) Avrio Technologies, Inc +000A71 (base 16) Avrio Technologies, Inc + 2655 A Park Center Drive + Simi Valley CA 91356 + UNITED STATES + +00-0A-72 (hex) SimpleTech, Inc. +000A72 (base 16) SimpleTech, Inc. + 3001 Daimler Street + Santa Ana CA 92705 + UNITED STATES + +00-0A-73 (hex) Scientific Atlanta +000A73 (base 16) Scientific Atlanta + 5030 Sugarloaf Parkway + MS 5.2425 + Lawrenceville Ga 30042 + UNITED STATES + +00-0A-74 (hex) Manticom Networks Inc. +000A74 (base 16) Manticom Networks Inc. + 14016-C Sullyfield Circle + Chantilly VA 20151 + UNITED STATES + +00-0A-75 (hex) Caterpillar, Inc +000A75 (base 16) Caterpillar, Inc + Mailstop Location AC6130 + PO Box 610 + Mossville IL 61552-0610 + UNITED STATES + +00-0A-76 (hex) Beida Jade Bird Huaguang Technology Co.,Ltd +000A76 (base 16) Beida Jade Bird Huaguang Technology Co.,Ltd + No.207 Chengfu Road, Haidian District + Beijing 100871 + CHINA + +00-0A-77 (hex) Bluewire Technologies LLC +000A77 (base 16) Bluewire Technologies LLC + 420 N. O St. + Tulare Ca 93274 + UNITED STATES + +00-0A-78 (hex) OLITEC +000A78 (base 16) OLITEC + B.P. 592 + 87, rue Mac Mahon + NANCY cedex 54009 + FRANCE + +00-0A-79 (hex) corega K.K. +000A79 (base 16) corega K.K. + 1-19-20, Shinyokohama + Kouhoku-ku + Yokohama-city Kanagawa-ken 222-0033 + JAPAN + +00-0A-7A (hex) Kyoritsu Electric Co., Ltd. +000A7A (base 16) Kyoritsu Electric Co., Ltd. + 2-3-17 + Iwato-minami + Komae-shi Tokyo 201-0005 + JAPAN + +00-0A-7B (hex) Cornelius Consult +000A7B (base 16) Cornelius Consult + Am Siepen 17 + Bochum NRW 44803 + GERMANY + +00-0A-7C (hex) Tecton Ltd +000A7C (base 16) Tecton Ltd + Fishers Court + Fishers Pond + Eastleigh Hampshire SO50 7HG + UNITED KINGDOM + +00-0A-7D (hex) Valo, Inc. +000A7D (base 16) Valo, Inc. + 1351 Redwood Way + Petaluma CA 94954 + UNITED STATES + +00-0A-7E (hex) The Advantage Group +000A7E (base 16) The Advantage Group + 1610 Des Peres Road + Suite 370 + St. Louis MO 63131 + UNITED STATES + +00-0A-7F (hex) Teradon Industries, Inc +000A7F (base 16) Teradon Industries, Inc + 7500 2nd ST NW + Albuquerque NM 87120 + UNITED STATES + +00-0A-80 (hex) Telkonet Inc. +000A80 (base 16) Telkonet Inc. + 20374 Seneca Meadows Pkwy + Germantown MD 20786 + UNITED STATES + +00-0A-81 (hex) TEIMA Audiotex S.L. +000A81 (base 16) TEIMA Audiotex S.L. + C/ Tirvia, 6, local B + Madrid 28040 + SPAIN + +00-0A-82 (hex) TATSUTA SYSTEM ELECTRONICS CO.,LTD. +000A82 (base 16) TATSUTA SYSTEM ELECTRONICS CO.,LTD. + IWATATYOU2-3-1 + HIGASHIOOSAKA-SHI OOSAKA-FU 578-8585 + JAPAN + +00-0A-83 (hex) SALTO SYSTEMS S.L. +000A83 (base 16) SALTO SYSTEMS S.L. + Arkotz, 9 + Polígono Lanbarren Oiartzun 20180 + SPAIN + +00-0A-84 (hex) Rainsun Enterprise Co., Ltd. +000A84 (base 16) Rainsun Enterprise Co., Ltd. + No.14-3 , Lane 235, Ho-Chen Road + BaoCiao Road + ShinDian City TAIPEI 231 + TAIWAN, REPUBLIC OF CHINA + +00-0A-85 (hex) PLAT'C2,Inc +000A85 (base 16) PLAT'C2,Inc + 2-3-6 SOTOKANDA + CHIYODA-KU TOKYO 101-0021 + JAPAN + +00-0A-86 (hex) Lenze +000A86 (base 16) Lenze + PO box 101352 + Hameln Lower Saxony 31763 + GERMANY + +00-0A-87 (hex) Integrated Micromachines Inc. +000A87 (base 16) Integrated Micromachines Inc. + 1400 S. Shamrock Ave. + Monrovia CA 91016 + UNITED STATES + +00-0A-88 (hex) InCypher S.A. +000A88 (base 16) InCypher S.A. + 18 rue de l'Eau + Luxembourg 1449 + LUXEMBOURG + +00-0A-89 (hex) Creval Systems, Inc. +000A89 (base 16) Creval Systems, Inc. + 2F,24-4,Sanwolgok-Dong,Sungbuk-Ku,Seoul, + Seoul 136-120 + KOREA, REPUBLIC OF + +00-0A-8A (hex) Cisco Systems +000A8A (base 16) Cisco Systems + 80 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-0A-8B (hex) Cisco Systems +000A8B (base 16) Cisco Systems + 80 West Tasman DR. + San Jose CA 95134 + UNITED STATES + +00-0A-8C (hex) Guardware Systems Ltd. +000A8C (base 16) Guardware Systems Ltd. + Ulloi ut 102. + Budapest H-1089 + HUNGARY + +00-0A-8D (hex) EUROTHERM LIMITED +000A8D (base 16) EUROTHERM LIMITED + FARADAY CLOSE + DURRINGTON + WORTHING WEST SUSSEX BN13 3PL + UNITED KINGDOM + +00-0A-8E (hex) Invacom Ltd +000A8E (base 16) Invacom Ltd + Business and Technology Centre + Bessemer Drive + Stevenage Hertfordshire SG1 2DX + UNITED KINGDOM + +00-0A-8F (hex) Aska International Inc. +000A8F (base 16) Aska International Inc. + 306 Riverseven + 4-18 Haregi-Honmachi + Kochi 780-8088 + JAPAN + +00-0A-90 (hex) Bayside Interactive, Inc. +000A90 (base 16) Bayside Interactive, Inc. + 330 Biscayne Blvd. + Suite 801 + Miami FL 33132 + UNITED STATES + +00-0A-91 (hex) HemoCue AB +000A91 (base 16) HemoCue AB + Box 1204 + Ängelholm Skåne 26223 + SWEDEN + +00-0A-92 (hex) Presonus Corporation +000A92 (base 16) Presonus Corporation + 7257 Florida Blvd. + Baton Rouge Louisiana 70806 + UNITED STATES + +00-0A-93 (hex) W2 Networks, Inc. +000A93 (base 16) W2 Networks, Inc. + 5808 NW Lac Leman Drive + Issaquah Washington 98027 + UNITED STATES + +00-0A-94 (hex) ShangHai cellink CO., LTD +000A94 (base 16) ShangHai cellink CO., LTD + C3 MeiLong ZhongXin Industrial Park,No.1 + ShangHai 200237 + CHINA + +00-0A-95 (hex) Apple Computer, Inc. +000A95 (base 16) Apple Computer, Inc. + 1 Infinite Loop + M/S 26-C + Cupertino CA 95014 + UNITED STATES + +00-0A-96 (hex) MEWTEL TECHNOLOGY INC. +000A96 (base 16) MEWTEL TECHNOLOGY INC. + E15FL. IT VENTURE TOWER + 78 KARAK-DONG, SONGPA-GU + SEOUL 138-803 + KOREA, REPUBLIC OF + +00-0A-97 (hex) SONICblue, Inc. +000A97 (base 16) SONICblue, Inc. + 2841 Mission College Blvd. + Santa Clara CA 95054 + UNITED STATES + +00-0A-98 (hex) M+F Gwinner GmbH & Co +000A98 (base 16) M+F Gwinner GmbH & Co + Weidenbaumsweg 91 a + Hamburg 21029 + GERMANY + +00-0A-99 (hex) Dataradio Inc. +000A99 (base 16) Dataradio Inc. + 5500 Royalmount Ave. , + Suite 200 + Town of Mount-Royal, Montreal Quebec H4P 1H7 + CANADA + +00-0A-9A (hex) Aiptek International Inc +000A9A (base 16) Aiptek International Inc + No 5-1 Innovation Rd 1 + Science-Based Industrial Park + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0A-9B (hex) Towa Meccs Corporation +000A9B (base 16) Towa Meccs Corporation + 35-1 Kamitoda + Toda Saitama 335-0022 + JAPAN + +00-0A-9C (hex) Server Technology, Inc. +000A9C (base 16) Server Technology, Inc. + 1040 Sandhill Dr. + Reno Nevada 89511 + UNITED STATES + +00-0A-9D (hex) King Young Technology Co. Ltd. +000A9D (base 16) King Young Technology Co. Ltd. + 1Fl., No. 9, Lane 26, Gangchi Rd., Neihu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0A-9E (hex) BroadWeb Corportation +000A9E (base 16) BroadWeb Corportation + 3F, 24-1, Industry East Rd., IV, + Science Based, Industrial Park + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0A-9F (hex) Pannaway Technologies, Inc. +000A9F (base 16) Pannaway Technologies, Inc. + 215 Commerce Way + Portsmouth NH 03801 + UNITED STATES + +00-0A-A0 (hex) Cedar Point Communications +000AA0 (base 16) Cedar Point Communications + 16 Route 111, Bldg 3 + Derry NH 03038 + UNITED STATES + +00-0A-A1 (hex) V V S Limited +000AA1 (base 16) V V S Limited + HPIC, 1. Ainslie Road , + Hillington + Glasgow Scotland G52 4RU + UNITED KINGDOM + +00-0A-A2 (hex) SYSTEK INC. +000AA2 (base 16) SYSTEK INC. + JCOM BUILDING 402, OJEON-DONG 124-4, + UIWANG-SI GYUNGGI-DO 437-070 + KOREA, REPUBLIC OF + +00-0A-A3 (hex) SHIMAFUJI ELECTRIC CO.,LTD. +000AA3 (base 16) SHIMAFUJI ELECTRIC CO.,LTD. + Daihyaku-seimei Kamata Bldg.3F + 8-11-11 Nishikamata,Ota-ku + Tokyo 144-0051 + JAPAN + +00-0A-A4 (hex) SHANGHAI SURVEILLANCE TECHNOLOGY CO,LTD +000AA4 (base 16) SHANGHAI SURVEILLANCE TECHNOLOGY CO,LTD + FL.25A,NO.8 CHANGYANG ROAD + SHANGHAI 200082 + CHINA + +00-0A-A5 (hex) MAXLINK INDUSTRIES LIMITED +000AA5 (base 16) MAXLINK INDUSTRIES LIMITED + 29A SHENZHEN SPECIAL ZONE + PRESS TOWER + SHENZHEN GUANGDONG 518009 + CHINA + +00-0A-A6 (hex) Hochiki Corporation +000AA6 (base 16) Hochiki Corporation + 246, TSURUMA + MACHIDA TOKYO 194-8577 + JAPAN + +00-0A-A7 (hex) FEI Electron Optics +000AA7 (base 16) FEI Electron Optics + Achtseweg Noord 5 + AAE 34 + Eindhoven 5651GG + NETHERLANDS + +00-0A-A8 (hex) ePipe Pty. Ltd. +000AA8 (base 16) ePipe Pty. Ltd. + P.O. Box 1428 + Toowong + Brisbane Queensland 4066 + AUSTRALIA + +00-0A-A9 (hex) Brooks Automation GmbH +000AA9 (base 16) Brooks Automation GmbH + Goeschwitzer Strasse 25 + Jena Thuringia 07745 + GERMANY + +00-0A-AA (hex) AltiGen Communications Inc. +000AAA (base 16) AltiGen Communications Inc. + 47427 Fremont Blvd. + Fremont CA 94538 + UNITED STATES + +00-0A-AB (hex) Toyota Technical Development Corporation +000AAB (base 16) Toyota Technical Development Corporation + 3-82-2, kanaya-cho + Toyota Aichi 471-0876 + JAPAN + +00-0A-AC (hex) TerraTec Electronic GmbH +000AAC (base 16) TerraTec Electronic GmbH + Herrenpfad 38 + Nettetal NRW 41334 + GERMANY + +00-0A-AD (hex) Stargames Corporation +000AAD (base 16) Stargames Corporation + 13 Sheridan Close + Milperra NSW 2031 + AUSTRALIA + +00-0A-AE (hex) Rosemount Process Analytical +000AAE (base 16) Rosemount Process Analytical + 6573A Cochran Rd. + Solon Ohio 44139-3922 + UNITED STATES + +00-0A-AF (hex) Pipal Systems +000AAF (base 16) Pipal Systems + 2903 Bunker Hill Lane + Suite 210 + Santa Clara CA 95054 + UNITED STATES + +00-0A-B0 (hex) LOYTEC electronics GmbH +000AB0 (base 16) LOYTEC electronics GmbH + Stolzenthalergasse 24/3 + Vienna Wien 1080 + AUSTRIA + +00-0A-B1 (hex) GENETEC Corporation +000AB1 (base 16) GENETEC Corporation + Nishikura-LK Bld. + Tomihisa-chou 16-6 + Shinjuku-ku Tokyo 162-0067 + JAPAN + +00-0A-B2 (hex) Fresnel Wireless Systems +000AB2 (base 16) Fresnel Wireless Systems + 1333 Gateway Drive + Suite 1007 + Melbourne FL 32901 + UNITED STATES + +00-0A-B3 (hex) Fa. GIRA +000AB3 (base 16) Fa. GIRA + Dahlienstraße + Radevormwald Nordrhein-Westfalen 42477 + GERMANY + +00-0A-B4 (hex) ETIC Telecommunications +000AB4 (base 16) ETIC Telecommunications + 13, chemin du vieux-chene ZIRST + MEYLAN Isere 38240 + FRANCE + +00-0A-B5 (hex) Digital Electronic Network +000AB5 (base 16) Digital Electronic Network + 8 rue du sacré coeur + Saint Laurent sur Sevre Vendee 85290 + FRANCE + +00-0A-B6 (hex) COMPUNETIX, INC +000AB6 (base 16) COMPUNETIX, INC + 2420 MOSSIDE BLVD. + MONROEVILLE PA 15146 + UNITED STATES + +00-0A-B7 (hex) Cisco Systems +000AB7 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0A-B8 (hex) Cisco Systems +000AB8 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose Ca 95134 + UNITED STATES + +00-0A-B9 (hex) Astera Technologies Corp. +000AB9 (base 16) Astera Technologies Corp. + 2380 Waverley Street + Palo Alto CA 94301 + UNITED STATES + +00-0A-BA (hex) Arcon Technology Limited +000ABA (base 16) Arcon Technology Limited + Rm. 3711-12, 37/F., Cable TV Tower , + 9 Hoi Shing Rd., Tsuen Wan , N.T + Hong Kong + CHINA + +00-0A-BB (hex) Taiwan Secom Co,. Ltd +000ABB (base 16) Taiwan Secom Co,. Ltd + 13F, 108, Sec1, Shin-Tai 5th Road + Hsi-Chih Taipei County 221 + TAIWAN, REPUBLIC OF CHINA + +00-0A-BC (hex) Seabridge Ltd. +000ABC (base 16) Seabridge Ltd. + 3 Hanagar St. + Neve-Neeman B' + Hod-Hasharon Israel 45241 + ISRAEL + +00-0A-BD (hex) Rupprecht & Patashnick Co. +000ABD (base 16) Rupprecht & Patashnick Co. + 25 Corporate Circle + Albany NY 12203 + UNITED STATES + +00-0A-BE (hex) OPNET Technologies CO., LTD. +000ABE (base 16) OPNET Technologies CO., LTD. + 3F, NO.5, Industry E. Rd. IX, Science-Ba + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0A-BF (hex) HIROTA SS +000ABF (base 16) HIROTA SS + Matukawa-Kougyoudanchi + Suzaka-shi Nagano 382-0005 + JAPAN + +00-0A-C0 (hex) Fuyoh Video Industry CO., LTD. +000AC0 (base 16) Fuyoh Video Industry CO., LTD. + 7-25 Higashi Kibogaoka + Asahi-ku + Yokohama-shi Kanagawa-ken 246-0008 + JAPAN + +00-0A-C1 (hex) Futuretel +000AC1 (base 16) Futuretel + 21580 Stevens Creek Blvd, Suite 208 + Cupertino CA 95014 + UNITED STATES + +00-0A-C2 (hex) FiberHome Telecommunication Technologies CO.,LTD +000AC2 (base 16) FiberHome Telecommunication Technologies CO.,LTD + No.88 YouKeyuan Road,Hongshan District,W + Wuhan Hubei 430074 + CHINA + +00-0A-C3 (hex) eM Technics Co., Ltd. +000AC3 (base 16) eM Technics Co., Ltd. + 7F., IT Venture Tower., 78, + Garakbon-Dong, Songpa-Gu + Seoul 138-803 + KOREA, REPUBLIC OF + +00-0A-C4 (hex) Daewoo Teletech Co., Ltd +000AC4 (base 16) Daewoo Teletech Co., Ltd + 265-3, Seohyeon, Bundang + Seongnam Gyeonggi 463-769 + KOREA, REPUBLIC OF + +00-0A-C5 (hex) Color Kinetics +000AC5 (base 16) Color Kinetics + 10 Milk Street + Suite 1100 + Boston Masachusetts 02108 + UNITED STATES + +00-0A-C6 (hex) Ceterus Networks, Inc. +000AC6 (base 16) Ceterus Networks, Inc. + P.O. Box 250391 + Plano TX 75025-0391 + UNITED STATES + +00-0A-C7 (hex) Unication Group +000AC7 (base 16) Unication Group + 3F., No. 6, Wu-Kung 5Rd., Hsinchuang Cit + Taipei 242 + TAIWAN, REPUBLIC OF CHINA + +00-0A-C8 (hex) ZPSYS CO.,LTD. (Planning&Management) +000AC8 (base 16) ZPSYS CO.,LTD. (Planning&Management) + 106 Ace Techno Tower1 + 197-17 Kuro-Dong + Seoul 152-050 + KOREA, REPUBLIC OF + +00-0A-C9 (hex) Zambeel Inc +000AC9 (base 16) Zambeel Inc + 45700 Northport Loop East + Fremont CA 94538 + UNITED STATES + +00-0A-CA (hex) YOKOYAMA SHOKAI CO.,Ltd. +000ACA (base 16) YOKOYAMA SHOKAI CO.,Ltd. + 6-96 Matsumura + Kanazawa Ishikawa 920-0348 + JAPAN + +00-0A-CB (hex) XPAK MSA Group +000ACB (base 16) XPAK MSA Group + Care of: Molex Fiber Optics + 5224 Katrine Avenue + Downers Grove IL 60515 + UNITED STATES + +00-0A-CC (hex) Winnow Networks, Inc. +000ACC (base 16) Winnow Networks, Inc. + 701 Emerson Road + Suite 244 + St. Louis MO 63141 + UNITED STATES + +00-0A-CD (hex) Sunrich Technology Limited +000ACD (base 16) Sunrich Technology Limited + Unit 1301, Eastern Centre, 1065 King's R + Quarry Bay + HONG KONG + +00-0A-CE (hex) RADIANTECH, INC. +000ACE (base 16) RADIANTECH, INC. + 2-1, INDUSTRY EAST RD. 1, SCIENCE-BASED + INDUSTRIAL PARK + HSIN CHU 300 + TAIWAN, REPUBLIC OF CHINA + +00-0A-CF (hex) PROVIDEO Multimedia Co. Ltd. +000ACF (base 16) PROVIDEO Multimedia Co. Ltd. + 5F, NO.8, ALLEY 2, TZU-WEI LANE, + CHUNG CHENG RD., + HSIN TIEN CITY TAIPEI HSIEN, 231 + TAIWAN, REPUBLIC OF CHINA + +00-0A-D0 (hex) Niigata Develoment Center, F.I.T. Co., Ltd. +000AD0 (base 16) Niigata Develoment Center, F.I.T. Co., Ltd. + Akane-Niigata Building 2F + 1-6-7 Atago + Niigata Niigata Prefecture 950-0944 + JAPAN + +00-0A-D1 (hex) MWS +000AD1 (base 16) MWS + 12, quai Papacino + NICE 06300 + FRANCE + +00-0A-D2 (hex) JEPICO Corporation +000AD2 (base 16) JEPICO Corporation + Nishi-shinjyuku2-7-1 + Dai-ichi Seimei BLDG. + Shinjyuku-ku Tokyo 163-0729 + JAPAN + +00-0A-D3 (hex) INITECH Co., Ltd +000AD3 (base 16) INITECH Co., Ltd + 3F, INITECH Bldg, 559-5, + Geoyo-Dong, Songpa-Gu + Seoul Songpa 138-816 + KOREA, REPUBLIC OF + +00-0A-D4 (hex) CoreBell Systems Inc. +000AD4 (base 16) CoreBell Systems Inc. + HTVC 2317 KAIST + 373-1 Guseong-dong + Yuseong-Gu Daejeon 305-701 + KOREA, REPUBLIC OF + +00-0A-D5 (hex) Brainchild Electronic Co., Ltd. +000AD5 (base 16) Brainchild Electronic Co., Ltd. + No.209, Chung Yang Rd., + Nan Kang District, + Taipei 115 + TAIWAN, REPUBLIC OF CHINA + +00-0A-D6 (hex) BeamReach Networks +000AD6 (base 16) BeamReach Networks + 755 North Mathilda Ave + Sunnyvale California 94086 + UNITED STATES + +00-0A-D7 (hex) Origin ELECTRIC CO.,LTD. +000AD7 (base 16) Origin ELECTRIC CO.,LTD. + 1-18-1 + TAKADA + TOSHIMA WARD TOKYO MET. 171-8555 + JAPAN + +00-0A-D8 (hex) IPCserv Technology Corp. +000AD8 (base 16) IPCserv Technology Corp. + 6f,No.107,Pan-Hsin Rd + Pan-Chiao Taipei 22046 + TAIWAN, REPUBLIC OF CHINA + +00-0A-D9 (hex) Sony Ericsson Mobile Communications AB +000AD9 (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund SE 221 88 + SWEDEN + +00-0A-DA (hex) Vindicator Technologies +000ADA (base 16) Vindicator Technologies + 5307 Industrial Oaks Blvd. + Suite 130 + Austin Texas 78735 + UNITED STATES + +00-0A-DB (hex) SkyPilot Network, Inc +000ADB (base 16) SkyPilot Network, Inc + 1301 Shoreway Road + Belmont CA 94002 + UNITED STATES + +00-0A-DC (hex) RuggedCom Inc. +000ADC (base 16) RuggedCom Inc. + 30 Whitmore Road + Woodbridge Ontario L4L 7Z4 + CANADA + +00-0A-DD (hex) Allworx Corp. +000ADD (base 16) Allworx Corp. + 300 Main Street + Suite 11 + East Rochester NY 14445 + UNITED STATES + +00-0A-DE (hex) Happy Communication Co., Ltd. +000ADE (base 16) Happy Communication Co., Ltd. + 42-11 WonMi-Dong + WonMi-Gu + Bucheon-City KyungGi-Do 420-110 + KOREA, REPUBLIC OF + +00-0A-DF (hex) Gennum Corporation +000ADF (base 16) Gennum Corporation + P.O Box 489 + Station A + Burlington Ontario L7R 3Y3 + CANADA + +00-0A-E0 (hex) Fujitsu Softek +000AE0 (base 16) Fujitsu Softek + 1250 East Arques Ave + MS 729 + Sunnyvale Ca 94085 + UNITED STATES + +00-0A-E1 (hex) EG Technology +000AE1 (base 16) EG Technology + 250 15th Street + Suite 4007 + Atlanta GA 30318 + UNITED STATES + +00-0A-E2 (hex) Binatone Electronics International, Ltd +000AE2 (base 16) Binatone Electronics International, Ltd + Floor 23A, 9 Des Voeux Road West + Hong Kong China + HONG KONG + +00-0A-E3 (hex) YANG MEI TECHNOLOGY CO., LTD +000AE3 (base 16) YANG MEI TECHNOLOGY CO., LTD + 21, Alley 1, Lane 342 + Fude 1st Road, Shijr City + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0A-E4 (hex) Wistron Corp. +000AE4 (base 16) Wistron Corp. + 21F, No. 88, Section 1, Hsin Tai Wu Rd. + Hsichih + Taipei 221 + TAIWAN, REPUBLIC OF CHINA + +00-0A-E5 (hex) ScottCare Corporation +000AE5 (base 16) ScottCare Corporation + 4791 West 150th Street + Cleveland Ohio 44135 + UNITED STATES + +00-0A-E6 (hex) Elitegroup Computer System Co. (ECS) +000AE6 (base 16) Elitegroup Computer System Co. (ECS) + No.22, Alley 38, Lane 91, Sec. 1, Nei Hu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0A-E7 (hex) ELIOP S.A. +000AE7 (base 16) ELIOP S.A. + Avenida de Manoteras, 30 + Madrid E-28050 + SPAIN + +00-0A-E8 (hex) Cathay Roxus Information Technology Co. LTD +000AE8 (base 16) Cathay Roxus Information Technology Co. LTD + Fuhua mansion building A/B 4F + dongcheng district + Beijing 100027 + CHINA + +00-0A-E9 (hex) AirVast Technology Inc. +000AE9 (base 16) AirVast Technology Inc. + 3F.-5, No.6, Lane 609, Sec. 5, Chongsin Rd. + Sanchong City Taipei 241 + TAIWAN, REPUBLIC OF CHINA + +00-0A-EA (hex) ADAM ELEKTRONIK LTD.STI. +000AEA (base 16) ADAM ELEKTRONIK LTD.STI. + UZUNAYNA CAD. CELENK SOK. NO:1 ÇAKMAK / + ISTANBUL 81260 + TURKEY + +00-0A-EB (hex) Shenzhen Tp-Link Technology Co; Ltd. +000AEB (base 16) Shenzhen Tp-Link Technology Co; Ltd. + Hi-Tech Park R1-B3 + 3/F, Bldg, Shennan Road + Shenzhen Guangdong 518057 + CHINA + +00-0A-EC (hex) Koatsu Gas Kogyo Co., Ltd. +000AEC (base 16) Koatsu Gas Kogyo Co., Ltd. + 1-5, Doyama-cho, Kita-ku, Osaka + Osaka 530-8411 + JAPAN + +00-0A-ED (hex) HARTING Systems GmbH & Co KG +000AED (base 16) HARTING Systems GmbH & Co KG + Wilhelm Harting Str.1 + Espelkamp NRW/OWL 32339 + GERMANY + +00-0A-EE (hex) GCD Hard- & Software GmbH +000AEE (base 16) GCD Hard- & Software GmbH + Henkestr. 79 + Erlangen Bayern 91052 + GERMANY + +00-0A-EF (hex) OTRUM ASA +000AEF (base 16) OTRUM ASA + Brattekleiv + Færvik N-4818 + NORWAY + +00-0A-F0 (hex) SHIN-OH ELECTRONICS CO., LTD. R&D +000AF0 (base 16) SHIN-OH ELECTRONICS CO., LTD. R&D + #729-5, Bonoh-Dong, Ansan-City, Kyunggi- + SHIN-OH ELECTRONICS CO., LTD. + Ansan-City Kyunggi-Do 425-180 + KOREA, REPUBLIC OF + +00-0A-F1 (hex) Clarity Design, Inc. +000AF1 (base 16) Clarity Design, Inc. + 13029 Danielson Street + Suite 100 + Poway CA 92064-8810 + UNITED STATES + +00-0A-F2 (hex) NeoAxiom Corp. +000AF2 (base 16) NeoAxiom Corp. + 1520 Montague Expressway + San Jose CA 95131 + UNITED STATES + +00-0A-F3 (hex) Cisco Systems +000AF3 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0A-F4 (hex) Cisco Systems +000AF4 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0A-F5 (hex) Airgo Networks, Inc. +000AF5 (base 16) Airgo Networks, Inc. + 900 Arastradero Rd + Palo Alto CA 94304 + UNITED STATES + +00-0A-F6 (hex) Computer Process Controls +000AF6 (base 16) Computer Process Controls + 1640 Airport Rd + Suite 104 + Kennesaw GA 30144-7038 + UNITED STATES + +00-0A-F7 (hex) Broadcom Corp. +000AF7 (base 16) Broadcom Corp. + 16215 Alton Parkway + Irvine CA 92618 + UNITED STATES + +00-0A-F8 (hex) American Telecare Inc. +000AF8 (base 16) American Telecare Inc. + 7640 Golden Triangle Drive + Eden Prairie MN 55344 + UNITED STATES + +00-0A-F9 (hex) HiConnect, Inc. +000AF9 (base 16) HiConnect, Inc. + Rm #906, Haksan Cosmostel, 110 + Kwangjang-Dong, Kwangjin-Gu, Seoul, Kore + Kwangjin-Gu Seoul 143-802 + KOREA, REPUBLIC OF + +00-0A-FA (hex) Traverse Technologies Australia +000AFA (base 16) Traverse Technologies Australia + 652 Smith Street + Clifton Hilll Victoria 3068 + AUSTRALIA + +00-0A-FB (hex) Ambri Limited +000AFB (base 16) Ambri Limited + 126 Greville Street + Chatswood NSW 2067 + AUSTRALIA + +00-0A-FC (hex) Core Tec Communications, LLC +000AFC (base 16) Core Tec Communications, LLC + 49 Leavenworth Street + Suite 200 + Waterbury CT 06702 + UNITED STATES + +00-0A-FD (hex) Viking Electronic Services +000AFD (base 16) Viking Electronic Services + 620 Allendale Rd + Suite 175 + King of Prussia PA 19406 + UNITED STATES + +00-0A-FE (hex) NovaPal Ltd +000AFE (base 16) NovaPal Ltd + Floor 6 + 58 Uxbridge Road + Ealing London W5 2ST + UNITED KINGDOM + +00-0A-FF (hex) Kilchherr Elektronik AG +000AFF (base 16) Kilchherr Elektronik AG + Aeschistrasse 25 + Muensingen BE 3110 + SWITZERLAND + +00-0B-00 (hex) FUJIAN START COMPUTER EQUIPMENT CO.,LTD +000B00 (base 16) FUJIAN START COMPUTER EQUIPMENT CO.,LTD + HONG SHAN YUAN ROAD NO.68 HONGSHAN,GULOU + FUZHOU FUJIAN 350002 + CHINA + +00-0B-01 (hex) DAIICHI ELECTRONICS CO., LTD. +000B01 (base 16) DAIICHI ELECTRONICS CO., LTD. + 1-11-13 + Hitotsuya Adachi-ku Tokyo 121-8639 + JAPAN + +00-0B-02 (hex) Dallmeier electronic +000B02 (base 16) Dallmeier electronic + Wuerzburgerstr.5 + Regensburg Bavaria 93059 + GERMANY + +00-0B-03 (hex) Taekwang Industrial Co., Ltd +000B03 (base 16) Taekwang Industrial Co., Ltd + #191-1, Anyang-7Dong, Manan-Gu + Anyang-Si South Korea 430-017 + KOREA, REPUBLIC OF + +00-0B-04 (hex) Volktek Corporation +000B04 (base 16) Volktek Corporation + 4F., No.192, Lian-Chang Road, Chang-Ho + Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-0B-05 (hex) Pacific Broadband Networks +000B05 (base 16) Pacific Broadband Networks + 8-10 Keith Campbell Court + SCORESBY VIC 3179 + AUSTRALIA + +00-0B-06 (hex) Motorola BCS +000B06 (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-0B-07 (hex) Voxpath Networks +000B07 (base 16) Voxpath Networks + 7600B Capital of Texas Highway - North + Suite 220 + Austin Texas 78731 + UNITED STATES + +00-0B-08 (hex) Pillar Data Systems +000B08 (base 16) Pillar Data Systems + 1371 McCarthy Blvd. + Milpitas CA 95035 + UNITED STATES + +00-0B-09 (hex) Ifoundry Systems Singapore +000B09 (base 16) Ifoundry Systems Singapore + Block 1, Unit 101B, Innovation Centre, 1 + 637722 + SINGAPORE + +00-0B-0A (hex) dBm Optics +000B0A (base 16) dBm Optics + 300 S. Public Road + Lafayette Colorado 80026 + UNITED STATES + +00-0B-0B (hex) Corrent Corporation +000B0B (base 16) Corrent Corporation + 1711 W. Greentree Dr. + Suite 201 + Tempe AZ 85284-2717 + UNITED STATES + +00-0B-0C (hex) Agile Systems Inc. +000B0C (base 16) Agile Systems Inc. + 575 Kumpf Drive + Waterloo Ontario N2V 1K3 + CANADA + +00-0B-0D (hex) Air2U, Inc. +000B0D (base 16) Air2U, Inc. + No. 5-1 Innovation Rd 1, Science-based P + Hsin-Chu Taiwan 300 + TAIWAN, REPUBLIC OF CHINA + +00-0B-0E (hex) Trapeze Networks +000B0E (base 16) Trapeze Networks + 5753 W. Las Positas Blvd + Pleasanton CA 94588 + UNITED STATES + +00-0B-0F (hex) Nyquist Industrial Control BV +000B0F (base 16) Nyquist Industrial Control BV + Luchthavenweg 20 + Eindhoven Noord Brabant NL5657 EB + NETHERLANDS + +00-0B-10 (hex) 11wave Technonlogy Co.,Ltd +000B10 (base 16) 11wave Technonlogy Co.,Ltd + 10F,no.285 sec.2 ,Ti-Ding Ave,NaiHu.Taip + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0B-11 (hex) HIMEJI ABC TRADING CO.,LTD. +000B11 (base 16) HIMEJI ABC TRADING CO.,LTD. + 1-8-22 + JYOUHOKUSHINMACHI + HJMEJI HYOGO 670-0883 + JAPAN + +00-0B-12 (hex) NURI Telecom Co., Ltd. +000B12 (base 16) NURI Telecom Co., Ltd. + Woolim Lion's Valley Bldg-B 10th F + #371-28 Kasan-dong + Keum-cheun-gu Seoul 153-803 + KOREA, REPUBLIC OF + +00-0B-13 (hex) ZETRON INC +000B13 (base 16) ZETRON INC + PO Box 97004 + REDMOND WA 98073 + UNITED STATES + +00-0B-14 (hex) ViewSonic Corporation +000B14 (base 16) ViewSonic Corporation + 381 Brea Canyon Road + Walnut California 91789 + UNITED STATES + +00-0B-15 (hex) Platypus Technology +000B15 (base 16) Platypus Technology + 4/1 Atchison St + St Leonards NSW 2065 + AUSTRALIA + +00-0B-16 (hex) Communication Machinery Corporation +000B16 (base 16) Communication Machinery Corporation + 402 E. Gutierrez St. + Santa Barbara CA 93101 + UNITED STATES + +00-0B-17 (hex) MKS Instruments +000B17 (base 16) MKS Instruments + 651 Lowell Street + Methuen MA 01844 + UNITED STATES + +00-0B-18 (hex) PRIVATE +000B18 (base 16) + +00-0B-19 (hex) Vernier Networks, Inc. +000B19 (base 16) Vernier Networks, Inc. + 490 E. Middlefield Road + Mountain View CA 94043 + UNITED STATES + +00-0B-1A (hex) Teltone Corporation +000B1A (base 16) Teltone Corporation + 22116 23rd Drive SE + Bothell WA 98021 + UNITED STATES + +00-0B-1B (hex) Systronix, Inc. +000B1B (base 16) Systronix, Inc. + 939 Edison St. + Salt Lake City Utah 84111 + UNITED STATES + +00-0B-1C (hex) SIBCO bv +000B1C (base 16) SIBCO bv + Schoonhout 46 + Etten-Leur NB 4872 ME + NETHERLANDS + +00-0B-1D (hex) LayerZero Power Systems, Inc. +000B1D (base 16) LayerZero Power Systems, Inc. + 3559 Townley Road + Shaker Heights OH 44122-5156 + UNITED STATES + +00-0B-1E (hex) KAPPA opto-electronics GmbH +000B1E (base 16) KAPPA opto-electronics GmbH + Kleines Feld 6 + 37130 + Gleichen Niedersachsen + GERMANY + +00-0B-1F (hex) I CON Computer Co. +000B1F (base 16) I CON Computer Co. + 3F, No. 142 , Hsin Ming Road + Neihu Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0B-20 (hex) Hirata corporation +000B20 (base 16) Hirata corporation + 111 Hitotsugi, Ueki, + Kamoto Kumamoto 861-0198 + JAPAN + +00-0B-21 (hex) G-Star Communications Inc. +000B21 (base 16) G-Star Communications Inc. + 5F, 69-10, Sec. 2, Chung Cheng East Road + Taipei Hsien 251 + TAIWAN, REPUBLIC OF CHINA + +00-0B-22 (hex) Environmental Systems and Services +000B22 (base 16) Environmental Systems and Services + 20 Council Street + Hawthorn East Victoria 3123 + AUSTRALIA + +00-0B-23 (hex) Siemens Subscriber Networks +000B23 (base 16) Siemens Subscriber Networks + 4849 Alpha Road + Dallas Texas 74244 + UNITED STATES + +00-0B-24 (hex) AirLogic +000B24 (base 16) AirLogic + 807-1, Bundangtechnopark D, 151, + Yatap-Dong, Bundang-Ku + Sungnam-Si Kyungki-Do 463-760 + KOREA, REPUBLIC OF + +00-0B-25 (hex) Aeluros +000B25 (base 16) Aeluros + 201 San Antonio Circle #172 + Mountain View CA 94040 + UNITED STATES + +00-0B-26 (hex) Wetek Corporation +000B26 (base 16) Wetek Corporation + 4F, NO.17, Kuanfu N. Road + Hsin Chu Industrial Park Hsin Chu 303 + TAIWAN, REPUBLIC OF CHINA + +00-0B-27 (hex) Scion Corporation +000B27 (base 16) Scion Corporation + 82 Worman's Mill Court + Suite H + Frederick MD 21701 + UNITED STATES + +00-0B-28 (hex) Quatech Inc. +000B28 (base 16) Quatech Inc. + 662 Wolf Ledges Pkwy. + Akron OH 44311 + UNITED STATES + +00-0B-29 (hex) LG Industrial Systems Co.,Ltd. +000B29 (base 16) LG Industrial Systems Co.,Ltd. + 533 Hogye-dong + Anyang-shi Kyongki-do 431-080 + KOREA, REPUBLIC OF + +00-0B-2A (hex) HOWTEL Co., Ltd. +000B2A (base 16) HOWTEL Co., Ltd. + J-COM Bd. 4F, 124-4 OJEON-DONG + UIWANG-SHI KYOUNGGI-DO 437-070 + KOREA, REPUBLIC OF + +00-0B-2B (hex) HOSTNET CORPORATION +000B2B (base 16) HOSTNET CORPORATION + 10F-12,No. 12 Lane 609, Sec.5,Chunghsin + Sanchung Taipei Hsien 241 + TAIWAN, REPUBLIC OF CHINA + +00-0B-2C (hex) Eiki Industrial Co. Ltd. +000B2C (base 16) Eiki Industrial Co. Ltd. + 4-12 Manzai-cho, Kita-ku + Osaka 530 + JAPAN + +00-0B-2D (hex) Danfoss Inc. +000B2D (base 16) Danfoss Inc. + 7941 Corporate Dr + Baltimore MD 21236 + UNITED STATES + +00-0B-2E (hex) Cal-Comp Electronics (Thailand) Public Company Limited Taipe +000B2E (base 16) Cal-Comp Electronics (Thailand) Public Company Limited Taipe + 9F, 99, Nan-King E Rd., Sec. 5. + Taipei 105 + TAIWAN, REPUBLIC OF CHINA + +00-0B-2F (hex) bplan GmbH +000B2F (base 16) bplan GmbH + Industriestraße 23 + Steinbach 61449 + GERMANY + +00-0B-30 (hex) Beijing Gongye Science & Technology Co.,Ltd +000B30 (base 16) Beijing Gongye Science & Technology Co.,Ltd + Unit D.17/E,Shenlanhuating mid Road No.6 + Beijing 100029 + CHINA + +00-0B-31 (hex) Yantai ZhiYang Scientific and technology industry CO., LTD +000B31 (base 16) Yantai ZhiYang Scientific and technology industry CO., LTD + 5F-4, NO. 64, Gong-Jian Rd. + Hsi-Chih City Taipei County 221 + TAIWAN, REPUBLIC OF CHINA + +00-0B-32 (hex) VORMETRIC, INC. +000B32 (base 16) VORMETRIC, INC. + 2060 CORPORATE CT + SAN JOSE CA 95131 + UNITED STATES + +00-0B-33 (hex) Vivato +000B33 (base 16) Vivato + 12610 East Mirabeau Parkway + Spokane WA 99216 + UNITED STATES + +00-0B-34 (hex) ShangHai Broadband Technologies CO.LTD +000B34 (base 16) ShangHai Broadband Technologies CO.LTD + 17F,No.122,HuangXing Road + ShangHai 200090 + CHINA + +00-0B-35 (hex) Quad Bit System co., Ltd. +000B35 (base 16) Quad Bit System co., Ltd. + 402 Gayang Technotown + 1487 Gayang 3 dong + Seoul Kangseogu 157-810 + KOREA, REPUBLIC OF + +00-0B-36 (hex) Productivity Systems, Inc. +000B36 (base 16) Productivity Systems, Inc. + 1711 Analog Drive + Richardson TX 75081-1944 + UNITED STATES + +00-0B-37 (hex) MANUFACTURE DES MONTRES ROLEX SA +000B37 (base 16) MANUFACTURE DES MONTRES ROLEX SA + LA HAUTE-ROUTE 82 + BIEL-BIENNE BE 2502 + SWITZERLAND + +00-0B-38 (hex) Knuerr AG +000B38 (base 16) Knuerr AG + Mariakirchener Strasse 38 + Arnstorf Bavaria 94424 + GERMANY + +00-0B-39 (hex) Keisoku Giken Co.,Ltd. +000B39 (base 16) Keisoku Giken Co.,Ltd. + 2-12-2 , Chigasaki-minami + Tsuzuki-ku + Yokohama Kanagawa 224-0037 + JAPAN + +00-0B-3A (hex) QuStream Corporation +000B3A (base 16) QuStream Corporation + 3305 Breckinridge Blvd. + Suite 118 + Duluth Georgia 30096 + UNITED STATES + +00-0B-3B (hex) devolo AG +000B3B (base 16) devolo AG + Sonnenweg 11 + Aachen NRW 52070 + GERMANY + +00-0B-3C (hex) Cygnal Integrated Products, Inc. +000B3C (base 16) Cygnal Integrated Products, Inc. + 4301 Westbank Drive + Suite B-100 + Austin TX 78746 + UNITED STATES + +00-0B-3D (hex) CONTAL OK Ltd. +000B3D (base 16) CONTAL OK Ltd. + Frana Mraza 2/289 + P.O.Box B-34 + Zilina 01124 + SLOVAKIA + +00-0B-3E (hex) BittWare, Inc +000B3E (base 16) BittWare, Inc + 31 B South Main St + Concord NH 03301 + UNITED STATES + +00-0B-3F (hex) Anthology Solutions Inc. +000B3F (base 16) Anthology Solutions Inc. + 1722 Ringwood Ave. + Suite 250 + San Jose CA 95131 + UNITED STATES + +00-0B-40 (hex) OpNext Inc. +000B40 (base 16) OpNext Inc. + 1 Christopher Way + Eatontown New Jersey 07724 + UNITED STATES + +00-0B-41 (hex) Ing. Buero Dr. Beutlhauser +000B41 (base 16) Ing. Buero Dr. Beutlhauser + Roemerweg 4 + Grassau D-83224 + GERMANY + +00-0B-42 (hex) commax Co., Ltd. +000B42 (base 16) commax Co., Ltd. + 513-11, Sangdaewon-Dong, Jungwon-Ku + Sungnam-City Kyunggi-Do 462-120 + KOREA, REPUBLIC OF + +00-0B-43 (hex) Microscan Systems, Inc. +000B43 (base 16) Microscan Systems, Inc. + 1201 SW 7th Street + Renton WA 98055 + UNITED STATES + +00-0B-44 (hex) Concord IDea Corp. +000B44 (base 16) Concord IDea Corp. + 4118 14th Ave., Unit 4 + Markham Ontario L3R 0J3 + CANADA + +00-0B-45 (hex) Cisco +000B45 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0B-46 (hex) Cisco +000B46 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0B-47 (hex) Advanced Energy +000B47 (base 16) Advanced Energy + 1625 Sharp Point Drive + Fort Collins Colorado 80525 + UNITED STATES + +00-0B-48 (hex) sofrel +000B48 (base 16) sofrel + 2 rue du plessis + vern sur seiche ille et vilaine 35770 + FRANCE + +00-0B-49 (hex) RF-Link System Inc. +000B49 (base 16) RF-Link System Inc. + No.6, Nan-Ke 5th Rd., Hsin-Shi, + Tainan County 744 + TAIWAN, REPUBLIC OF CHINA + +00-0B-4A (hex) Visimetrics (UK) Ltd +000B4A (base 16) Visimetrics (UK) Ltd + Skye House + Skye Road + Prestwick Ayrshire KA9 2TA + UNITED KINGDOM + +00-0B-4B (hex) VISIOWAVE SA +000B4B (base 16) VISIOWAVE SA + Route de la Pierre 22 + VICTORIA HOUSE + ECUBLENS VAUD CH-1024 + SWITZERLAND + +00-0B-4C (hex) Clarion (M) Sdn Bhd +000B4C (base 16) Clarion (M) Sdn Bhd + Phase 3 + FIZ + Bayan Lepas Penang 11900 + MALAYSIA + +00-0B-4D (hex) Emuzed +000B4D (base 16) Emuzed + 46750 Lakeview Boulevard + Fremont California 94538 + UNITED STATES + +00-0B-4E (hex) VertexRSI, General Dynamics SatCOM Technologies, Inc. +000B4E (base 16) VertexRSI, General Dynamics SatCOM Technologies, Inc. + 1915 E. Harrison Road + Longview TX 75604 + UNITED STATES + +00-0B-4F (hex) Verifone, INC. +000B4F (base 16) Verifone, INC. + 2455 Augustine Drive + Santa Clara California 95054 + UNITED STATES + +00-0B-50 (hex) Oxygnet +000B50 (base 16) Oxygnet + 402 E. Carrillo St. + Suite C + Santa Barbara CA 93101 + UNITED STATES + +00-0B-51 (hex) Micetek International Inc. +000B51 (base 16) Micetek International Inc. + 7F-1, #237, Sec. 1, wu Chuan W. Rd. + Taichung 403 + TAIWAN, REPUBLIC OF CHINA + +00-0B-52 (hex) JOYMAX ELECTRONICS CORP. +000B52 (base 16) JOYMAX ELECTRONICS CORP. + No. 17, Lane 63, Hsin-Jung Road, Ping-Ch + Tao-Yuan 324 + TAIWAN, REPUBLIC OF CHINA + +00-0B-53 (hex) INITIUM Co., Ltd. +000B53 (base 16) INITIUM Co., Ltd. + 8F. Gongduck Bldg. 272-6 Seohyun Bundang + Sungnam Kyunggi 463-824 + KOREA, REPUBLIC OF + +00-0B-54 (hex) BiTMICRO Networks, Inc. +000B54 (base 16) BiTMICRO Networks, Inc. + 45550 Northport Loop East + Fremont CA 94538 + UNITED STATES + +00-0B-55 (hex) ADInstruments +000B55 (base 16) ADInstruments + P. O. Box 587 + Dunedin Otago 9001 + NEW ZEALAND + +00-0B-56 (hex) Cybernetics +000B56 (base 16) Cybernetics + 111 Cybernetics Way + Yorktown VA 23693 + UNITED STATES + +00-0B-57 (hex) Silicon Laboratories +000B57 (base 16) Silicon Laboratories + 7000 W. William Cannon Dr. + Bldg.1, Suite 200 + Austin TX 78735 + UNITED STATES + +00-0B-58 (hex) Astronautics C.A LTD +000B58 (base 16) Astronautics C.A LTD + 23 hayarkon street + Bnei Brak 51261 + ISRAEL + +00-0B-59 (hex) ScriptPro, LLC +000B59 (base 16) ScriptPro, LLC + 5828 Reeds Rd. + Mission Kansas 66202 + UNITED STATES + +00-0B-5A (hex) HyperEdge +000B5A (base 16) HyperEdge + 333 Pierce Road Suite #200 + Itasca IL 60143 + UNITED STATES + +00-0B-5B (hex) Rincon Research Corporation +000B5B (base 16) Rincon Research Corporation + 101 N. Wilmot Rd. + Suite 101 + Tucson AZ 85711 + UNITED STATES + +00-0B-5C (hex) Newtech Co.,Ltd +000B5C (base 16) Newtech Co.,Ltd + K-Bldg 1-7-7 Shibadaimon Minato-ku + Tokyo 105-0012 + JAPAN + +00-0B-5D (hex) FUJITSU LIMITED +000B5D (base 16) FUJITSU LIMITED + Co-Mail No.H1555 + 1-1, Kamikodanaka 4-chome, Nakahara-ku + Kawasaki Kanagawa 211-8588 + JAPAN + +00-0B-5E (hex) Audio Engineering Society Inc. +000B5E (base 16) Audio Engineering Society Inc. + 60 East 42nd Street, Suite #2520 + New York NY 10165-2520 + UNITED STATES + +00-0B-5F (hex) Cisco Systems +000B5F (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0B-60 (hex) Cisco Systems +000B60 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0B-61 (hex) Friedrich Lütze GmbH &Co. +000B61 (base 16) Friedrich Lütze GmbH &Co. + Bruckwiesenstraße 17-19 + Weinstadt-Großheppach BW 71384 + GERMANY + +00-0B-62 (hex) Ingenieurbuero fuer Elektronikdesign Ingo Mohnen +000B62 (base 16) Ingenieurbuero fuer Elektronikdesign Ingo Mohnen + Stich 30 d + 52249 Eschweiler + GERMANY + +00-0B-63 (hex) Kaleidescape +000B63 (base 16) Kaleidescape + One First Street, Suite Sixteen + Los Altos CA 94022 + UNITED STATES + +00-0B-64 (hex) Kieback & Peter GmbH & Co KG +000B64 (base 16) Kieback & Peter GmbH & Co KG + Tempelhofer Weg 50 + Berlin 12347 + GERMANY + +00-0B-65 (hex) Sy.A.C. srl +000B65 (base 16) Sy.A.C. srl + via Caboto 19/1 + Trieste 34147 + ITALY + +00-0B-66 (hex) Teralink Communications +000B66 (base 16) Teralink Communications + Capital Tower 15F, + 931 Doonsan-dong, Seo-gu + Daejeon 302120 + KOREA, REPUBLIC OF + +00-0B-67 (hex) Topview Technology Corporation +000B67 (base 16) Topview Technology Corporation + No. 8,Wu-Chuan Road,Wu Ku Industrial Par + Wu Ku Hsiang,Taipei Hsien, 248 + TAIWAN, REPUBLIC OF CHINA + +00-0B-68 (hex) Addvalue Communications Pte Ltd +000B68 (base 16) Addvalue Communications Pte Ltd + 190 CHANGI ROAD , #02-02 MDIS BUILDING + Singapore 419974 + SINGAPORE + +00-0B-69 (hex) Franke Finland Oy +000B69 (base 16) Franke Finland Oy + Vartiokuja 1 + NAARAJARVI NAARAJARVI FIN-76850 + FINLAND + +00-0B-6A (hex) Asiarock Incorporation +000B6A (base 16) Asiarock Incorporation + P.O. Box957, Offshore Incorporations Cen + Road Town Tortola + VIRGIN ISLANDS, BRITISH + +00-0B-6B (hex) Wistron Neweb Corp. +000B6B (base 16) Wistron Neweb Corp. + No. 10-1, Li-Hsin Road I, Science-based + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0B-6C (hex) Sychip Inc. +000B6C (base 16) Sychip Inc. + 2805 N. Dallas Parkway Suite 400 + Plano Texas 75093 + UNITED STATES + +00-0B-6D (hex) SOLECTRON JAPAN NAKANIIDA +000B6D (base 16) SOLECTRON JAPAN NAKANIIDA + 325 GANBARA + NAKANIIDAMACHI + KAMIGUN MIYAGIKEN 981-4263 + JAPAN + +00-0B-6E (hex) Neff Instrument Corp. +000B6E (base 16) Neff Instrument Corp. + 700 South Myrtle Ave. + Monrovia CA 91016 + UNITED STATES + +00-0B-6F (hex) Media Streaming Networks Inc +000B6F (base 16) Media Streaming Networks Inc + 1905 Anam Tower, 702-10, Yeoksam dong, K + Seoul 135-080 + KOREA, REPUBLIC OF + +00-0B-70 (hex) Load Technology, Inc. +000B70 (base 16) Load Technology, Inc. + 4225 Production Court + Las Vegas NV 89115 + UNITED STATES + +00-0B-71 (hex) Litchfield Communications Inc. +000B71 (base 16) Litchfield Communications Inc. + 27 Princeton Road + Watertown CT 06795 + UNITED STATES + +00-0B-72 (hex) Lawo AG +000B72 (base 16) Lawo AG + Am Oberwald 8 + Rasatt Baden-Württemberg 76437 + GERMANY + +00-0B-73 (hex) Kodeos Communications +000B73 (base 16) Kodeos Communications + 111 Corporate Blvd + Suite A + South Plainfield NJ 07080 + UNITED STATES + +00-0B-74 (hex) Kingwave Technology Co., Ltd. +000B74 (base 16) Kingwave Technology Co., Ltd. + 18F-3, No. 186, Jian-Yi Rd. + Chung-Ho Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-0B-75 (hex) Iosoft Ltd. +000B75 (base 16) Iosoft Ltd. + 5 Woodlark Road + Cambridge Cambs. CB3 0HT + UNITED KINGDOM + +00-0B-76 (hex) ET&T Technology Co. Ltd. +000B76 (base 16) ET&T Technology Co. Ltd. + 6F No.101, SongJiang Rd. + Taipei 104 + TAIWAN, REPUBLIC OF CHINA + +00-0B-77 (hex) Cogent Systems, Inc. +000B77 (base 16) Cogent Systems, Inc. + 209 Fair Oaks Ave. + South Pasadena CA 91030 + UNITED STATES + +00-0B-78 (hex) TAIFATECH INC. +000B78 (base 16) TAIFATECH INC. + 8F-1 No.289, Sec.2 Guangfu Rd. + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0B-79 (hex) X-COM, Inc. +000B79 (base 16) X-COM, Inc. + 8809 Sudley Road + Suite 202 + Manassas VA 20110 + UNITED STATES + +00-0B-7A (hex) Wave Science Inc. +000B7A (base 16) Wave Science Inc. + 7620 Omnitech Place + Victor New York 14564 + UNITED STATES + +00-0B-7B (hex) Test-Um Inc. +000B7B (base 16) Test-Um Inc. + 808 Calle Plano + Camarillo CA 93012 + UNITED STATES + +00-0B-7C (hex) Telex Communications +000B7C (base 16) Telex Communications + 8601 E. Cornhusker Hwy + Lincoln NE 68505 + UNITED STATES + +00-0B-7D (hex) SOLOMON EXTREME INTERNATIONAL LTD. +000B7D (base 16) SOLOMON EXTREME INTERNATIONAL LTD. + 3F, No.20, Lane 165, Duenhua N. Rd., Sun + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-0B-7E (hex) SAGINOMIYA Seisakusho Inc. +000B7E (base 16) SAGINOMIYA Seisakusho Inc. + 535 Sasai + Sayamashi Saitamaken 350-1395 + JAPAN + +00-0B-7F (hex) OmniWerks +000B7F (base 16) OmniWerks + 900 E Hamilton Avenue + Suite 100 + Campbell CA 95008 + UNITED STATES + +00-0B-80 (hex) Lycium Networks +000B80 (base 16) Lycium Networks + 9 Hamenofim St. + P.O.Box 12256 + Herzliya Israel 46733 + ISRAEL + +00-0B-81 (hex) Kaparel Corporation +000B81 (base 16) Kaparel Corporation + 97 Randall Drive + Waterloo Ontario N2V-1C5 + CANADA + +00-0B-82 (hex) Grandstream Networks, Inc. +000B82 (base 16) Grandstream Networks, Inc. + 1297 Beacon Street + 2nd Floor + Brookline MA 02446 + UNITED STATES + +00-0B-83 (hex) DATAWATT B.V. +000B83 (base 16) DATAWATT B.V. + HOUTSTRAAT 5 + P.O. BOX 108 + WOLVEGA FRIESLAND NL-8471-ZX + NETHERLANDS + +00-0B-84 (hex) BODET +000B84 (base 16) BODET + Route de la Tourlandry + TREMENTINES FRANCE 49340 + FRANCE + +00-0B-85 (hex) Cisco Systems +000B85 (base 16) Cisco Systems + 170 W. Tasman Drive + MS SJCM/1/1 + San Jose CA 95134 + UNITED STATES + +00-0B-86 (hex) Aruba Networks +000B86 (base 16) Aruba Networks + 1322 Crossman Avenue + Sunnyvale CA 94089 + UNITED STATES + +00-0B-87 (hex) American Reliance Inc. +000B87 (base 16) American Reliance Inc. + 11801 Goldring Rd + Arcadia CA 91006 + UNITED STATES + +00-0B-88 (hex) Vidisco ltd. +000B88 (base 16) Vidisco ltd. + 17 Yechiel Dresner + Petach-Tikva 49277 + ISRAEL + +00-0B-89 (hex) Top Global Technology, Ltd. +000B89 (base 16) Top Global Technology, Ltd. + Room 3310, China World Tower No. 1 + Jian Guo Men Wai Avenue + Beijing Beijing 100004 + CHINA + +00-0B-8A (hex) MITEQ Inc. +000B8A (base 16) MITEQ Inc. + 100 Davids Drive + Hauppauge NY 11788-2034 + UNITED STATES + +00-0B-8B (hex) KERAJET, S.A. +000B8B (base 16) KERAJET, S.A. + Ctra. Villarreal-Onda, Km 2.5 + Villarreal Castellon E-12540 + SPAIN + +00-0B-8C (hex) Flextronics +000B8C (base 16) Flextronics + Migdal HaEmek + Ramat Gavriel + 23108 Hataasia 1 + ISRAEL + +00-0B-8D (hex) Avvio Networks +000B8D (base 16) Avvio Networks + 11 Donovan Dr + Bedford MA 01730 + UNITED STATES + +00-0B-8E (hex) Ascent Corporation +000B8E (base 16) Ascent Corporation + 2-16-19, Kawaraya-machi, Chuo-Ku, + Osaka-City Osaka-Pref 542-0066 + JAPAN + +00-0B-8F (hex) AKITA ELECTRONICS SYSTEMS CO.,LTD. +000B8F (base 16) AKITA ELECTRONICS SYSTEMS CO.,LTD. + 85,AZA USHIRONO,AIKAWA,YUWA-MACHI + KAWABE-GUN AKITA-KEN 010-1231 + JAPAN + +00-0B-90 (hex) Adva Optical Networking Inc. +000B90 (base 16) Adva Optical Networking Inc. + Clifton Technology Centre + Clifton Moor + York YO30 4GU + UNITED KINGDOM + +00-0B-91 (hex) Aglaia Gesellschaft für Bildverarbeitung und Kommunikation m +000B91 (base 16) Aglaia Gesellschaft für Bildverarbeitung und Kommunikation m + Tiniusstr. 12-15 + Berlin D-13089 + GERMANY + +00-0B-92 (hex) Ascom Danmark A/S +000B92 (base 16) Ascom Danmark A/S + Fabriksparken 42 + Glostrup Denmark 2600 + DENMARK + +00-0B-93 (hex) Ritter Elektronik +000B93 (base 16) Ritter Elektronik + Leverkuser Str 65 + P.O. Box 110240 + Remscheid NRW 42897 + GERMANY + +00-0B-94 (hex) Digital Monitoring Products, Inc. +000B94 (base 16) Digital Monitoring Products, Inc. + 2500 N. Partnership Boulevard + Springfield Missouri 65803 + UNITED STATES + +00-0B-95 (hex) eBet Gaming Systems Pty Ltd +000B95 (base 16) eBet Gaming Systems Pty Ltd + Suite D, 255 Rawson Street + Auburn NSW 2144 + AUSTRALIA + +00-0B-96 (hex) Innotrac Diagnostics Oy +000B96 (base 16) Innotrac Diagnostics Oy + Kalevantie 25 + Turku Åbo 20520 + FINLAND + +00-0B-97 (hex) Matsushita Electric Industrial Co.,Ltd. +000B97 (base 16) Matsushita Electric Industrial Co.,Ltd. + 3-1-1 Yagumo-Naka-Machi + Moriguchi City Osaka 570-8501 + JAPAN + +00-0B-98 (hex) NiceTechVision +000B98 (base 16) NiceTechVision + IntelZone 703 + YongIn Gugal-ri Ki Heung KyoungKiDo 354-2 + KOREA, REPUBLIC OF + +00-0B-99 (hex) SensAble Technologies, Inc. +000B99 (base 16) SensAble Technologies, Inc. + 15 Constitution Way + Woburn MA 01801 + UNITED STATES + +00-0B-9A (hex) Shanghai Ulink Telecom Equipment Co. Ltd. +000B9A (base 16) Shanghai Ulink Telecom Equipment Co. Ltd. + 6 Floor, Building 3 + 230 West Jiangwan Road + Shanghai 200083 + CHINA + +00-0B-9B (hex) Sirius System Co, Ltd. +000B9B (base 16) Sirius System Co, Ltd. + 3-27 Funado-cho + Ashiya Hyogo 659-0093 + JAPAN + +00-0B-9C (hex) TriBeam Technologies, Inc. +000B9C (base 16) TriBeam Technologies, Inc. + 116 W. Eastman St., suite 208 + Arlington Heights IL 60004 + UNITED STATES + +00-0B-9D (hex) TwinMOS Technologies Inc. +000B9D (base 16) TwinMOS Technologies Inc. + 303 No.3, Tzu Chiang Rd., Hu Kou Xiang, + Hsin Chu 303 + TAIWAN, REPUBLIC OF CHINA + +00-0B-9E (hex) Yasing Technology Corp. +000B9E (base 16) Yasing Technology Corp. + No. 50, Ta Hsueh Road, HsinChu, Taiwan + HsinChu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0B-9F (hex) Neue ELSA GmbH +000B9F (base 16) Neue ELSA GmbH + Sonnenweg 11 + Aachen 52070 + GERMANY + +00-0B-A0 (hex) T&L Information Inc. +000BA0 (base 16) T&L Information Inc. + 898-44 Hokye-Dong, Dongan-Gu + Anyang Kyungki-Do 431-836 + KOREA, REPUBLIC OF + +00-0B-A1 (hex) SYSCOM Ltd. +000BA1 (base 16) SYSCOM Ltd. + 4-10 HAKODA, KUMAGAYA-SHI + SAITAMA-KEN 360-8515 + JAPAN + +00-0B-A2 (hex) Sumitomo Electric Networks, Inc +000BA2 (base 16) Sumitomo Electric Networks, Inc + 1-1-3, Shimaya, Konohana-ku + Osaka 554-0024 + JAPAN + +00-0B-A3 (hex) Siemens AG, I&S +000BA3 (base 16) Siemens AG, I&S + Werner-von-Siemens-Straße 65 + Erlangen Bavaria 91052 + GERMANY + +00-0B-A4 (hex) Shiron Satellite Communications Ltd. (1996) +000BA4 (base 16) Shiron Satellite Communications Ltd. (1996) + 23 Hasivim St. + Petach Tikva 49170 + ISRAEL + +00-0B-A5 (hex) Quasar Cipta Mandiri, PT +000BA5 (base 16) Quasar Cipta Mandiri, PT + Jl. Palasari 9A + Bandung West Java 40262 + INDONESIA + +00-0B-A6 (hex) Miyakawa Electric Works Ltd. +000BA6 (base 16) Miyakawa Electric Works Ltd. + 2-1-6, + Kohhoku-ku + Yokohama Kanagawa 222-0001 + JAPAN + +00-0B-A7 (hex) Maranti Networks +000BA7 (base 16) Maranti Networks + 3061-B Zanker Road + San Jose CA 95134 + UNITED STATES + +00-0B-A8 (hex) HANBACK ELECTRONICS CO., LTD. +000BA8 (base 16) HANBACK ELECTRONICS CO., LTD. + 306-7, Galma-dong, Seo-gu + Daejeon 302-171 + KOREA, REPUBLIC OF + +00-0B-A9 (hex) CloudShield Technologies, Inc. +000BA9 (base 16) CloudShield Technologies, Inc. + 212 Gilbraltar Drive + Sunnyvale CA 94089 + UNITED STATES + +00-0B-AA (hex) Aiphone co.,Ltd +000BAA (base 16) Aiphone co.,Ltd + 2-18 Jinno-Cho + Atsuta-ku + Nagoya Aichi-ken 456-8666 + JAPAN + +00-0B-AB (hex) Advantech Technology (CHINA) Co., Ltd. +000BAB (base 16) Advantech Technology (CHINA) Co., Ltd. + No.666, Han-Pu Rd. Yu-Shan + Kun-Shan Jiang Su 215316 + CHINA + +00-0B-AC (hex) 3Com Ltd +000BAC (base 16) 3Com Ltd + Peoplebuilding 2, Peoplebuilding Estate + Maylands Avenue + Hemel Hempstead Herts. HP2 4NW + UNITED KINGDOM + +00-0B-AD (hex) PC-PoS Inc. +000BAD (base 16) PC-PoS Inc. + 309 Commissioners Road West + London Ontario N6J 1Y4 + CANADA + +00-0B-AE (hex) Vitals System Inc. +000BAE (base 16) Vitals System Inc. + Jooheung B/D 4FL. 1005-1, Youngtong-Dong + Suwon City Kyonggi-Do 442-813 + KOREA, REPUBLIC OF + +00-0B-AF (hex) WOOJU COMMUNICATIONS Co,.Ltd +000BAF (base 16) WOOJU COMMUNICATIONS Co,.Ltd + B-713, SK Twin Tech Tower, 345-9, Ga-San + Seoul 153-802 + KOREA, REPUBLIC OF + +00-0B-B0 (hex) Sysnet Telematica srl +000BB0 (base 16) Sysnet Telematica srl + Viale Berbera, 49 + Milan 20162 + ITALY + +00-0B-B1 (hex) Super Star Technology Co., Ltd. +000BB1 (base 16) Super Star Technology Co., Ltd. + No. 7 Lane 306,Sec. 2,Tai-Lin Rd. + Tai-Shan Shiang + Taipei Hsien 243 + TAIWAN, REPUBLIC OF CHINA + +00-0B-B2 (hex) SMALLBIG TECHNOLOGY +000BB2 (base 16) SMALLBIG TECHNOLOGY + 3F Dongsung Bldg. 720-9 Yoksamdong + Gangnamgu Seoul 135-080 + KOREA, REPUBLIC OF + +00-0B-B3 (hex) RiT technologies Ltd. +000BB3 (base 16) RiT technologies Ltd. + 24 Raoul Walenberg St. + Tel Aviv 69719 + ISRAEL + +00-0B-B4 (hex) RDC Semiconductor Inc., +000BB4 (base 16) RDC Semiconductor Inc., + 6F-1 , No.2-1, Lihsin Rd, Science-Based + Hsin Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0B-B5 (hex) nStor Technologies, Inc. +000BB5 (base 16) nStor Technologies, Inc. + 100 Technology Park + Suite 175 + Lake Mary FL 32746 + UNITED STATES + +00-0B-B6 (hex) Mototech Inc. +000BB6 (base 16) Mototech Inc. + 9, Park Avenue II, Science-Based Industr + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0B-B7 (hex) Micro Systems Co.,Ltd. +000BB7 (base 16) Micro Systems Co.,Ltd. + 2-15-34 Nishikubo + Musashino-City Tokyo 180-0013 + JAPAN + +00-0B-B8 (hex) Kihoku Electronic Co. +000BB8 (base 16) Kihoku Electronic Co. + Marukatubiru 3F 4-9-6 + Nihonbashi Naniwa-ku + Osakashi Osaka-hu 556-0005 + JAPAN + +00-0B-B9 (hex) Imsys AB +000BB9 (base 16) Imsys AB + Johanneslundsvagen 3 + Upplands Vasby SE-19461 + SWEDEN + +00-0B-BA (hex) Harmonic Broadband Access Networks +000BBA (base 16) Harmonic Broadband Access Networks + 549 Baltic Way + Sunnyvale CA 94089 + UNITED STATES + +00-0B-BB (hex) Etin Systems Co., Ltd +000BBB (base 16) Etin Systems Co., Ltd + 12F, IT Venture Tower, + 78 GarakBon-Dong, Songpa-Ku + Seoul 138-803 + KOREA, REPUBLIC OF + +00-0B-BC (hex) En Garde Systems, Inc. +000BBC (base 16) En Garde Systems, Inc. + 2101 White Cloud St. NE + Albuquerque NM 87112 + UNITED STATES + +00-0B-BD (hex) Connexionz Limited +000BBD (base 16) Connexionz Limited + 1 Show Place + Christchurch Canterbury 8004 + NEW ZEALAND + +00-0B-BE (hex) Cisco Systems +000BBE (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0B-BF (hex) Cisco Systems +000BBF (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0B-C0 (hex) China IWNComm Co., Ltd. +000BC0 (base 16) China IWNComm Co., Ltd. + 4F.C Xietong Building,No.12 Gaoxin 2nd r + Hi-tech industries development zone + Xi'an shaanxi 710075 + CHINA + +00-0B-C1 (hex) Bay Microsystems, Inc. +000BC1 (base 16) Bay Microsystems, Inc. + 2700 Augustine Drive + Suite 298 + Santa Clara CA 95054 + UNITED STATES + +00-0B-C2 (hex) Corinex Communication Corp. +000BC2 (base 16) Corinex Communication Corp. + #308 1168 Hamilton Street + Vancouver B.C. V6B 2S2 + CANADA + +00-0B-C3 (hex) Multiplex, Inc. +000BC3 (base 16) Multiplex, Inc. + 5000 Hadley Rd. + S. Plainfield NJ 07040 + UNITED STATES + +00-0B-C4 (hex) BIOTRONIK GmbH & Co +000BC4 (base 16) BIOTRONIK GmbH & Co + Woermannkehre 1 + Berlin 12359 + GERMANY + +00-0B-C5 (hex) SMC Networks, Inc. +000BC5 (base 16) SMC Networks, Inc. + 38 Tesla + Irvine CA 92618 + UNITED STATES + +00-0B-C6 (hex) ISAC, Inc. +000BC6 (base 16) ISAC, Inc. + PO Box 7682 + Auburn CA 95604 + UNITED STATES + +00-0B-C7 (hex) ICET S.p.A. +000BC7 (base 16) ICET S.p.A. + Via Quarto Negroni, 63 + Cecchina di Ariccia Roma 00040 + ITALY + +00-0B-C8 (hex) AirFlow Networks +000BC8 (base 16) AirFlow Networks + 444 Castro St + Suite 320 + Mountain View Ca 94041 + UNITED STATES + +00-0B-C9 (hex) Electroline Equipment +000BC9 (base 16) Electroline Equipment + 8265 boul. St-Michel + Montreal Quebec H1Z 3E4 + CANADA + +00-0B-CA (hex) DATAVAN International Corporation +000BCA (base 16) DATAVAN International Corporation + 4FL,#120-12,Chung Shan Rd, Sec.3 + Chung Ho City, Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-0B-CB (hex) Fagor Automation , S. Coop +000BCB (base 16) Fagor Automation , S. Coop + San Andres s/n + 20500 Mondragon + Guipuzcoa 20500 + SPAIN + +00-0B-CC (hex) JUSAN, S.A. +000BCC (base 16) JUSAN, S.A. + Vivero, 5 + MADRID 28040 + SPAIN + +00-0B-CD (hex) Compaq (HP) +000BCD (base 16) Compaq (HP) + 20555 State Highway 249 South + MS:070405 + Houston TX 77070 + UNITED STATES + +00-0B-CE (hex) Free2move AB +000BCE (base 16) Free2move AB + Sperlingsgatan 7 + Halmstad Halland 30248 + SWEDEN + +00-0B-CF (hex) AGFA NDT INC. +000BCF (base 16) AGFA NDT INC. + 50 Industrial Park Road + Lewistown PA 17044 + UNITED STATES + +00-0B-D0 (hex) XiMeta Technology Americas Inc. +000BD0 (base 16) XiMeta Technology Americas Inc. + 54 Ray Street + New Brunswick NJ 08901 + UNITED STATES + +00-0B-D1 (hex) Aeronix, Inc. +000BD1 (base 16) Aeronix, Inc. + 1775 W. Hibiscus Blvd, + Suite #304 + Melbourne FL 32901 + UNITED STATES + +00-0B-D2 (hex) Remopro Technology Inc. +000BD2 (base 16) Remopro Technology Inc. + No. 443, Huannan RD., + Pingjen City Taoyuan 324 + TAIWAN, REPUBLIC OF CHINA + +00-0B-D3 (hex) cd3o +000BD3 (base 16) cd3o + 402 W Broadway + San Deigo CA 92101 + UNITED STATES + +00-0B-D4 (hex) Beijing Wise Technology & Science Development Co.Ltd +000BD4 (base 16) Beijing Wise Technology & Science Development Co.Ltd + 3rd Floor Caihong Building, No.2,1st Wes + Madian, Haidian District + Beijing 100088 + CHINA + +00-0B-D5 (hex) Nvergence, Inc. +000BD5 (base 16) Nvergence, Inc. + Jeil Bldg. 4th, Samsung-dong 168-26, Kan + Seoul 135-090 + KOREA, REPUBLIC OF + +00-0B-D6 (hex) Paxton Access Ltd +000BD6 (base 16) Paxton Access Ltd + Paxton House + Home Farm Road + Brighton East Sussex BN1 9HU + UNITED KINGDOM + +00-0B-D7 (hex) MBB Gelma GmbH +000BD7 (base 16) MBB Gelma GmbH + Mainzer Straße 36-52 + Bonn Nordrheinwestfalen 53179 + GERMANY + +00-0B-D8 (hex) Industrial Scientific Corp. +000BD8 (base 16) Industrial Scientific Corp. + 1001 Oakdale Road + Oakdale PA 15071 + UNITED STATES + +00-0B-D9 (hex) General Hydrogen +000BD9 (base 16) General Hydrogen + 13120 Vanier Place + Richmond British Columbia V6V 2J2 + CANADA + +00-0B-DA (hex) EyeCross Co.,Inc. +000BDA (base 16) EyeCross Co.,Inc. + 3F Iioka-Building + Tokyo Ueno Taitoh-ku 3-4-1 110-0005 + JAPAN + +00-0B-DB (hex) Dell ESG PCBA Test +000BDB (base 16) Dell ESG PCBA Test + One Dell Way + Round Rock Texas 78682 + UNITED STATES + +00-0B-DC (hex) AKCP +000BDC (base 16) AKCP + 67/285 Muangake Village #8 + Moo 3 Vipawadee Road, Tambol Lughook + Amphur Muang Patomthanee 12000 + THAILAND + +00-0B-DD (hex) TOHOKU RICOH Co., LTD. +000BDD (base 16) TOHOKU RICOH Co., LTD. + 3-1 Shinmeido + Shibata Miyagi pref. 989-1695 + JAPAN + +00-0B-DE (hex) TELDIX GmbH +000BDE (base 16) TELDIX GmbH + Grenzhoefer Weg 36 + Heidelberg 69123 + GERMANY + +00-0B-DF (hex) Shenzhen RouterD Networks Limited +000BDF (base 16) Shenzhen RouterD Networks Limited + 8/F, Building A, Tsinghua Hi-Tech Park + Nanshan District + Shenzhen + CHINA + +00-0B-E0 (hex) SercoNet Ltd. +000BE0 (base 16) SercoNet Ltd. + 16 Ha'haroshet st. + P.O.B. 2009 + Ra'anana 43657 + ISRAEL + +00-0B-E1 (hex) Nokia NET Product Operations +000BE1 (base 16) Nokia NET Product Operations + 313 Fairchild Drive + Mountain View California 94043 + UNITED STATES + +00-0B-E2 (hex) Lumenera Corporation +000BE2 (base 16) Lumenera Corporation + 2520B St. Laurent Blvd. + Ottawa Ontario K1B 4R8 + CANADA + +00-0B-E3 (hex) Key Stream Co., Ltd. +000BE3 (base 16) Key Stream Co., Ltd. + No. 2 Nagaoka Bldg. 4F, 2-8-5 Hatchobor + Chuo-ku Tokyo 104-0032 + JAPAN + +00-0B-E4 (hex) Hosiden Corporation +000BE4 (base 16) Hosiden Corporation + 4-33 + Kitakyuhoji 1-chome + Yao-city Osaka 581-0071 + JAPAN + +00-0B-E5 (hex) HIMS Korea Co., Ltd. +000BE5 (base 16) HIMS Korea Co., Ltd. + 5105, High Tech Venture Hall, + 53-3, Eoeun-dong, Yuseong-ku, + Daejeon Daejeon 305-806 + KOREA, REPUBLIC OF + +00-0B-E6 (hex) Datel Electronics +000BE6 (base 16) Datel Electronics + Stafford Road + Stone Staffordshire ST15 0DG + UNITED KINGDOM + +00-0B-E7 (hex) COMFLUX TECHNOLOGY INC. +000BE7 (base 16) COMFLUX TECHNOLOGY INC. + Room 131,Bldg. 53,195-58,Sec.4, + Chung Hsing Rd.,Chutung, + Hsinchu 310 + TAIWAN, REPUBLIC OF CHINA + +00-0B-E8 (hex) AOIP +000BE8 (base 16) AOIP + 6 rue Maryse BASTIE + ZI de St Guenault + COURCOURONNES Idf 91080 + FRANCE + +00-0B-E9 (hex) Actel Corporation +000BE9 (base 16) Actel Corporation + 200 Valley Road + Suite 300 + Mt. Arlington NJ 07856 + UNITED STATES + +00-0B-EA (hex) Zultys Technologies +000BEA (base 16) Zultys Technologies + 771 Vaqueros Avenue + Sunnyvale CA 94085 + UNITED STATES + +00-0B-EB (hex) Systegra AG +000BEB (base 16) Systegra AG + Burgunderstrasse 15 + Bellach SO 4512 + SWITZERLAND + +00-0B-EC (hex) NIPPON ELECTRIC INSTRUMENT, INC. +000BEC (base 16) NIPPON ELECTRIC INSTRUMENT, INC. + 3-56-21 Hirado + Totsuka-ku Yokohama-shi 244-0802 + JAPAN + +00-0B-ED (hex) ELM Inc. +000BED (base 16) ELM Inc. + 15248 Takeda + Kaseda Minamisatsuma Kagoshima 897-0002 + JAPAN + +00-0B-EE (hex) inc.jet, Incorporated +000BEE (base 16) inc.jet, Incorporated + One Winnenden Road + Norwich CT 06360 + UNITED STATES + +00-0B-EF (hex) Code Corporation +000BEF (base 16) Code Corporation + 11814 S. Election Rd., Ste 200 + Draper Utah 84020 + UNITED STATES + +00-0B-F0 (hex) MoTEX Products Co., Ltd. +000BF0 (base 16) MoTEX Products Co., Ltd. + C.P.O.Box 6912 + Ye Kwan-dong 19-1 + Chong-gu Seoul 82 + KOREA, REPUBLIC OF + +00-0B-F1 (hex) LAP Laser Applikations +000BF1 (base 16) LAP Laser Applikations + Zeppelinstrasse 23 + Lueneburg Niedersachsen 21337 + GERMANY + +00-0B-F2 (hex) Chih-Kan Technology Co., Ltd. +000BF2 (base 16) Chih-Kan Technology Co., Ltd. + No. 24-1, Pei Shih Chou, Ming Ho Vill. + Shan Sun Hsiang Tainan Hsien 180 + TAIWAN, REPUBLIC OF CHINA + +00-0B-F3 (hex) BAE SYSTEMS +000BF3 (base 16) BAE SYSTEMS + 6500 Tracor Lane + Austin Texas 78725 + UNITED STATES + +00-0B-F4 (hex) PRIVATE +000BF4 (base 16) + +00-0B-F5 (hex) Shanghai Sibo Telecom Technology Co.,Ltd +000BF5 (base 16) Shanghai Sibo Telecom Technology Co.,Ltd + Floor 6 Building 18,300 Tianlin Rd. + Shanghai 200233 + CHINA + +00-0B-F6 (hex) Nitgen Co., Ltd +000BF6 (base 16) Nitgen Co., Ltd + 4th FL. 1337-31 Seocho-dong, Seocho-ku + Seoul 137-860 + KOREA, REPUBLIC OF + +00-0B-F7 (hex) NIDEK CO.,LTD +000BF7 (base 16) NIDEK CO.,LTD + 34-14 Maehama + Hiroishi-cho + Gamagori Aich 443-0038 + JAPAN + +00-0B-F8 (hex) Infinera +000BF8 (base 16) Infinera + 1322 Bordeaux Drive + Sunnyvale CA 94089 + UNITED STATES + +00-0B-F9 (hex) Gemstone communications, Inc. +000BF9 (base 16) Gemstone communications, Inc. + 6Fl., No. 102, Hengyang Rd. + Taipei 100 + TAIWAN, REPUBLIC OF CHINA + +00-0B-FA (hex) EXEMYS SRL +000BFA (base 16) EXEMYS SRL + LOYOLA 680 + CAPITAL FEDERAL BS AS C1414 + ARGENTINA + +00-0B-FB (hex) D-NET International Corporation +000BFB (base 16) D-NET International Corporation + 15, Wu-Chuan 5th Road, Wu-Ku Industrial + Taipei Hsieh 248 + TAIWAN, REPUBLIC OF CHINA + +00-0B-FC (hex) Cisco Systems +000BFC (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0B-FD (hex) Cisco Systems +000BFD (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0B-FE (hex) CASTEL Broadband Limited +000BFE (base 16) CASTEL Broadband Limited + 9/F., Sui Ying Industrial Building., + Tokwawan Kowloon 150 + HONG KONG + +00-0B-FF (hex) Berkeley Camera Engineering +000BFF (base 16) Berkeley Camera Engineering + 127 National Street + Santa Cruz CA 95060 + UNITED STATES + +00-0C-00 (hex) BEB Industrie-Elektronik AG +000C00 (base 16) BEB Industrie-Elektronik AG + Progressastrasse 31 + Oberburg BE 3414 + SWITZERLAND + +00-0C-01 (hex) Abatron AG +000C01 (base 16) Abatron AG + Lettenstrasse 9 + Rotkreuz CH-6343 + SWITZERLAND + +00-0C-02 (hex) ABB Oy +000C02 (base 16) ABB Oy + P.O.Box 89 + Turku FIN-20521 + FINLAND + +00-0C-03 (hex) HDMI Licensing, LLC +000C03 (base 16) HDMI Licensing, LLC + 1060 East Arques Ave. + Suite 100 + Sunnyvale CA 94085 + UNITED STATES + +00-0C-04 (hex) Tecnova +000C04 (base 16) Tecnova + 1486 St. Paul Ave. + Gurnee Illinois 60031 + UNITED STATES + +00-0C-05 (hex) RPA Reserch Co., Ltd. +000C05 (base 16) RPA Reserch Co., Ltd. + 4F, 90-7, Yangjae-Dong, Seocho-Ku + Seoul, Korea + Seoul 137-130 + KOREA, REPUBLIC OF + +00-0C-06 (hex) Nixvue Systems Pte Ltd +000C06 (base 16) Nixvue Systems Pte Ltd + 30 Loyang Way, #07-02 + Singapore Singapore S508769 + SINGAPORE + +00-0C-07 (hex) Iftest AG +000C07 (base 16) Iftest AG + Schwimmbadstrasse 43 + Wettingen AG 5430 + SWITZERLAND + +00-0C-08 (hex) HUMEX Technologies Corp. +000C08 (base 16) HUMEX Technologies Corp. + 5F, No.5, Lane 44, Szu Wei Rd. Taan Taip + Taipei 106 + TAIWAN, REPUBLIC OF CHINA + +00-0C-09 (hex) Hitachi IE Systems Co., Ltd +000C09 (base 16) Hitachi IE Systems Co., Ltd + Saiwai-cho 120-1,Inazawa-shi + Aichi 492-8622,Japan + Inazawa-shi Aichi 492-8622 + JAPAN + +00-0C-0A (hex) Guangdong Province Electronic Technology Research Institute +000C0A (base 16) Guangdong Province Electronic Technology Research Institute + Electronic Technology Building,NO.61-65, + West Zhongshan Avenue,Tianhe District + Guangzhou Guangdong 510630 + CHINA + +00-0C-0B (hex) Broadbus Technologies +000C0B (base 16) Broadbus Technologies + 80 Central Street + Boxborough Massachusetts 01719 + UNITED STATES + +00-0C-0C (hex) APPRO TECHNOLOGY INC. +000C0C (base 16) APPRO TECHNOLOGY INC. + 13F, No. 66 Chung-Cheng Rd, + Hsin-Chuang Taipei 242 + TAIWAN, REPUBLIC OF CHINA + +00-0C-0D (hex) Communications & Power Industries / Satcom Division +000C0D (base 16) Communications & Power Industries / Satcom Division + 811 Hansen Way MS S-600 + Palo Alto CA 94303 + UNITED STATES + +00-0C-0E (hex) XtremeSpectrum, Inc. +000C0E (base 16) XtremeSpectrum, Inc. + 8133 Leesburg Pike + Vienna VA 22182 + UNITED STATES + +00-0C-0F (hex) Techno-One Co., Ltd +000C0F (base 16) Techno-One Co., Ltd + 9-17-1 Higashi Sonoda + Amagasaki Hyogo 661-0953 + JAPAN + +00-0C-10 (hex) PNI Corporation +000C10 (base 16) PNI Corporation + 5464 Skylane Blvd #A + Santa Rosa CA 95403 + UNITED STATES + +00-0C-11 (hex) NIPPON DEMPA CO.,LTD. +000C11 (base 16) NIPPON DEMPA CO.,LTD. + 1-4-8 + kamenokou + kakegawa city shizuoka pref. 436-0028 + JAPAN + +00-0C-12 (hex) Micro-Optronic-Messtechnik GmbH +000C12 (base 16) Micro-Optronic-Messtechnik GmbH + Lessingstrasse 14 + Langebrueck Saxony D-01465 + GERMANY + +00-0C-13 (hex) MediaQ +000C13 (base 16) MediaQ + 2975 San Ysidro Way + Santa Clara CA 95051 + UNITED STATES + +00-0C-14 (hex) Diagnostic Instruments, Inc. +000C14 (base 16) Diagnostic Instruments, Inc. + 6540 Burroughs + Sterling Heights MI 48314 + UNITED STATES + +00-0C-15 (hex) CyberPower Systems, Inc. +000C15 (base 16) CyberPower Systems, Inc. + 6F, No. 32, Sec. 1, Chenggong Rd. + Nanhang District + Taipei 115 + TAIWAN, REPUBLIC OF CHINA + +00-0C-16 (hex) Concorde Microsystems Inc. +000C16 (base 16) Concorde Microsystems Inc. + 10427 Cogdill Road, Suite 500 + Knoxville TN 37932 + UNITED STATES + +00-0C-17 (hex) AJA Video Systems Inc +000C17 (base 16) AJA Video Systems Inc + 443 Crown Point Circle + Grass Valley California 95945 + UNITED STATES + +00-0C-18 (hex) Zenisu Keisoku Inc. +000C18 (base 16) Zenisu Keisoku Inc. + 2-13-37 + Honmachi + Fuchu-shi Tokyo 183-0027 + JAPAN + +00-0C-19 (hex) Telio Communications GmbH +000C19 (base 16) Telio Communications GmbH + Elbchaussee 1 + Hamburg 22765 + GERMANY + +00-0C-1A (hex) Quest Technical Solutions Inc. +000C1A (base 16) Quest Technical Solutions Inc. + 4110 Mourning Dove Crt. + Melbourne FL 32934 + UNITED STATES + +00-0C-1B (hex) ORACOM Co, Ltd. +000C1B (base 16) ORACOM Co, Ltd. + 3rd Fl, A-Sung Bldg, 999-3 + Deachi-Dong, Kangnam-Gu + Seoul 135-280 + KOREA, REPUBLIC OF + +00-0C-1C (hex) MicroWeb Co., Ltd. +000C1C (base 16) MicroWeb Co., Ltd. + 403 T/S/S/C, 23-14 Jang-dong, Yusong-gu, + Daejeon ChoongChungDo 305-343 + KOREA, REPUBLIC OF + +00-0C-1D (hex) Mettler & Fuchs AG +000C1D (base 16) Mettler & Fuchs AG + Querstrasse 17 + CH-8951 Fahrweid + SWITZERLAND + +00-0C-1E (hex) Global Cache +000C1E (base 16) Global Cache + 160 East California Street + POB 1659 + Jacksonville OR 97530 + UNITED STATES + +00-0C-1F (hex) Glimmerglass Networks +000C1F (base 16) Glimmerglass Networks + 26142 Eden Landing Road + Hayward California 94545 + UNITED STATES + +00-0C-20 (hex) Fi WIn, Inc. +000C20 (base 16) Fi WIn, Inc. + 8F, No. 10, Prosperity Rd. 1, + Science Based Industrial Park + Hsin Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0C-21 (hex) Faculty of Science and Technology, Keio University +000C21 (base 16) Faculty of Science and Technology, Keio University + 3-14-1 Hiyoshi, Kohoku-ku + Yokohama Kanagawa 223-8522 + JAPAN + +00-0C-22 (hex) Double D Electronics Ltd +000C22 (base 16) Double D Electronics Ltd + Unit 6, Robins Wharf + Grove Road + Northfleet Kent DA11 9AX + UNITED KINGDOM + +00-0C-23 (hex) Beijing Lanchuan Tech. Co., Ltd. +000C23 (base 16) Beijing Lanchuan Tech. Co., Ltd. + Rm220,No.30 Shangyuancun, + Gaoliangqiaolu,Haidian District + Beijing 100044 + CHINA + +00-0C-24 (hex) ANATOR +000C24 (base 16) ANATOR + 44, rue d'Estienne d'Orves + sartrouville yvelines 78500 + FRANCE + +00-0C-25 (hex) Allied Telesyn Networks +000C25 (base 16) Allied Telesyn Networks + Suite 450 + 920 Main Campus Drive + Raleigh NC 27606 + UNITED STATES + +00-0C-26 (hex) Weintek Labs. Inc. +000C26 (base 16) Weintek Labs. Inc. + 3F, No.910, Chung Cheng Rd. + Chung Ho city Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-0C-27 (hex) Sammy Corporation +000C27 (base 16) Sammy Corporation + SUN SHINE60 45F,3-1-1,HIGASHI-IKEBUKURO + TOSHIMA-KU TOKYO 170-6045 + JAPAN + +00-0C-28 (hex) RIFATRON +000C28 (base 16) RIFATRON + 9th FL, SHINTAEYANG BLDG + 736-8, BANPO-DONG + SEOUL SEOCHO-GU 137-041 + KOREA, REPUBLIC OF + +00-0C-29 (hex) VMware, Inc. +000C29 (base 16) VMware, Inc. + 3145 Porter Dr. + Palo Alto CA 94304 + UNITED STATES + +00-0C-2A (hex) OCTTEL Communication Co., Ltd. +000C2A (base 16) OCTTEL Communication Co., Ltd. + 7F-1, No.300, Daduen 10th St. + Taichung City 408 + TAIWAN, REPUBLIC OF CHINA + +00-0C-2B (hex) ELIAS Technology, Inc. +000C2B (base 16) ELIAS Technology, Inc. + 3F, 1015, Yung-An Road, + Taoyuan City Taoyuan 330 + TAIWAN, REPUBLIC OF CHINA + +00-0C-2C (hex) Enwiser Inc. +000C2C (base 16) Enwiser Inc. + 4F, Cheongseok B/D + 135-11, Nonhyeon-dong, Kangnam-ku + Seoul Seoul 135-010 + KOREA, REPUBLIC OF + +00-0C-2D (hex) FullWave Technology Co., Ltd. +000C2D (base 16) FullWave Technology Co., Ltd. + 7F-6, No.26, TaiYuan St., + JuBei Hsin Chu 302 + TAIWAN, REPUBLIC OF CHINA + +00-0C-2E (hex) Openet information technology(shenzhen) Co., Ltd. +000C2E (base 16) Openet information technology(shenzhen) Co., Ltd. + 2/F,A tower,international tech-innovatio + high-tech industrial park ,shenzhen, P.R + shenzhen guangdong 518057 + CHINA + +00-0C-2F (hex) SeorimTechnology Co.,Ltd. +000C2F (base 16) SeorimTechnology Co.,Ltd. + 2F DIPLOMATIC CENTER B/D 1376-1 SEOCHO2- + SEOUL 137-072 + KOREA, REPUBLIC OF + +00-0C-30 (hex) Cisco +000C30 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0C-31 (hex) Cisco +000C31 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose Ca 95134 + UNITED STATES + +00-0C-32 (hex) Avionic Design Development GmbH +000C32 (base 16) Avionic Design Development GmbH + Sthamerstrasse 24a + Hamburg 22397 + GERMANY + +00-0C-33 (hex) Compucase Enterprise Co. Ltd. +000C33 (base 16) Compucase Enterprise Co. Ltd. + 225 Lane 54, An Ho Road, Section 2nd. + Tainan City 70942 + TAIWAN, REPUBLIC OF CHINA + +00-0C-34 (hex) Vixen Co., Ltd. +000C34 (base 16) Vixen Co., Ltd. + 5-17-3 Higashitokorozawa + Tokorozawa Saitama 359-0021 + JAPAN + +00-0C-35 (hex) KaVo Dental GmbH & Co. KG +000C35 (base 16) KaVo Dental GmbH & Co. KG + Bismarkring 39 + Biberach/Riss Baden-Wuerttemberg 88400 + GERMANY + +00-0C-36 (hex) SHARP TAKAYA ELECTRONICS INDUSTRY CO.,LTD. +000C36 (base 16) SHARP TAKAYA ELECTRONICS INDUSTRY CO.,LTD. + 3121-1 Satomi Satosho-cho + Asakuchi-gun Okayama 719-0301 + JAPAN + +00-0C-37 (hex) Geomation, Inc. +000C37 (base 16) Geomation, Inc. + 25188 Genesee Trail Road + Suite 100 + Golden CO 80401 + UNITED STATES + +00-0C-38 (hex) TelcoBridges Inc. +000C38 (base 16) TelcoBridges Inc. + 586 Du Chenal + Repentigny Quebec J6A 7C5 + CANADA + +00-0C-39 (hex) Sentinel Wireless Inc. +000C39 (base 16) Sentinel Wireless Inc. + 439 S. Union St. + South Lawrence MA 01843 + UNITED STATES + +00-0C-3A (hex) Oxance +000C3A (base 16) Oxance + 75-85 rue Richelieu + les Lucs sur Boulogne 85170 + FRANCE + +00-0C-3B (hex) Orion Electric Co., Ltd. +000C3B (base 16) Orion Electric Co., Ltd. + 41-1, Iehisa-cho + Takefu-shi Fukui 915-8555 + JAPAN + +00-0C-3C (hex) MediaChorus, Inc. +000C3C (base 16) MediaChorus, Inc. + #205, ETRI TBI 2 Center + Ueun-Dong, Yusong-Gu + Daejon DJ 305-333 + KOREA, REPUBLIC OF + +00-0C-3D (hex) Glsystech Co., Ltd. +000C3D (base 16) Glsystech Co., Ltd. + Song Bo B/D 3F + 212-10, Kung-Dong, Kuro Gu + Seoul 152-883 + KOREA, REPUBLIC OF + +00-0C-3E (hex) Crest Audio +000C3E (base 16) Crest Audio + 16-00 Pollitt Drive + Fair Lawn NJ 07410 + UNITED STATES + +00-0C-3F (hex) Cogent Defence & Security Networks, +000C3F (base 16) Cogent Defence & Security Networks, + Meadows Road, + Queensway Meadows Ind Estate, + Newport, South Wales, NP19 4SS + UNITED KINGDOM + +00-0C-40 (hex) Altech Controls +000C40 (base 16) Altech Controls + 1545 Industial Drive + Missouri City Texas 77489 + UNITED STATES + +00-0C-41 (hex) Cisco-Linksys +000C41 (base 16) Cisco-Linksys + 121 Theory Dr. + Irvine CA 92612 + UNITED STATES + +00-0C-42 (hex) Routerboard.com +000C42 (base 16) Routerboard.com + Pernavas 46 + Riga LV-1009 + LATVIA + +00-0C-43 (hex) Ralink Technology, Corp. +000C43 (base 16) Ralink Technology, Corp. + 4F, No.2, Technology 5th Road, + Science-Based Industrial Park, + Hsin-Chu 200 + TAIWAN, REPUBLIC OF CHINA + +00-0C-44 (hex) Automated Interfaces, Inc. +000C44 (base 16) Automated Interfaces, Inc. + 120 Confederate Lane + Greer South Carolina 29651 + UNITED STATES + +00-0C-45 (hex) Animation Technologies Inc. +000C45 (base 16) Animation Technologies Inc. + 8F,No.138,Lane 235,Paochiao Road, + Hsin Tien + Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-0C-46 (hex) Allied Telesyn Inc. +000C46 (base 16) Allied Telesyn Inc. + 960 Stewart Drive, Suite B + Sunnyvale California 94085 + UNITED STATES + +00-0C-47 (hex) SK Teletech(R&D Planning Team) +000C47 (base 16) SK Teletech(R&D Planning Team) + 21th FL Startower 737, Yeoksam-dong + Kangnam-Ku + Seoul 135-984 + KOREA, REPUBLIC OF + +00-0C-48 (hex) QoStek Corporation +000C48 (base 16) QoStek Corporation + 7F, 22, Taiyuen Street + Chupei Hsinchu Hsien 302 + TAIWAN, REPUBLIC OF CHINA + +00-0C-49 (hex) Dangaard Telecom RTC Division A/S +000C49 (base 16) Dangaard Telecom RTC Division A/S + Industrivej 1 + DK 26154553 + Padborg DK-6330 + DENMARK + +00-0C-4A (hex) Cygnus Microsystems (P) Limited +000C4A (base 16) Cygnus Microsystems (P) Limited + 93, Phase II, + IDA, Cherlapally + Hyderabad Andhra Pradesh 500051 + INDIA + +00-0C-4B (hex) Cheops Elektronik +000C4B (base 16) Cheops Elektronik + Jeschkenstrasse 32 + Geretsried Bayern 82538 + GERMANY + +00-0C-4C (hex) Arcor AG&Co. +000C4C (base 16) Arcor AG&Co. + Alfred-Herrhausen-Allee 1 + Eschborn Hessen 65760 + GERMANY + +00-0C-4D (hex) ACRA CONTROL +000C4D (base 16) ACRA CONTROL + Landscape House, + Landscape Road, + Churchtown, Dublin 14 + IRELAND + +00-0C-4E (hex) Winbest Technology CO,LT +000C4E (base 16) Winbest Technology CO,LT + 7F-5No.736 Chung ChengRd.,ChungHo + Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-0C-4F (hex) UDTech Japan Corporation +000C4F (base 16) UDTech Japan Corporation + Hamacho Hanacho Bldg, 2F + 2-17-8 Nihonbashi-Hamacho + Chuo-ku Tokyo 103-0007 + JAPAN + +00-0C-50 (hex) Seagate Technology +000C50 (base 16) Seagate Technology + 1280 Disc Drive + Shakopee MN 55379 + UNITED STATES + +00-0C-51 (hex) Scientific Technologies Inc. +000C51 (base 16) Scientific Technologies Inc. + 6550 Dumbarton Circle + Fremont CA 94560 + UNITED STATES + +00-0C-52 (hex) Roll Systems Inc. +000C52 (base 16) Roll Systems Inc. + 53 Third Avenue + Burlington MA 01803 + UNITED STATES + +00-0C-53 (hex) PRIVATE +000C53 (base 16) + +00-0C-54 (hex) Pedestal Networks, Inc +000C54 (base 16) Pedestal Networks, Inc + 6503 Dumbarton Circle + Fremont CA 94555 + UNITED STATES + +00-0C-55 (hex) Microlink Communications Inc. +000C55 (base 16) Microlink Communications Inc. + 8F, 31, Hsintai Road + Chupei City + Hsinchu 302 + TAIWAN, REPUBLIC OF CHINA + +00-0C-56 (hex) Megatel Computer (1986) Corp. +000C56 (base 16) Megatel Computer (1986) Corp. + 586 Main Street + Glen Williams Ontario L7G 3T6 + CANADA + +00-0C-57 (hex) MACKIE Engineering Services Belgium BVBA +000C57 (base 16) MACKIE Engineering Services Belgium BVBA + Industriepark Noord 10 + Sint Niklaas B-9100 + BELGIUM + +00-0C-58 (hex) M&S Systems +000C58 (base 16) M&S Systems + 2861 Congressman Lane + Dallas TX 75220 + UNITED STATES + +00-0C-59 (hex) Indyme Electronics, Inc. +000C59 (base 16) Indyme Electronics, Inc. + 9085 Aero Dr. + San Diego CA 92123 + UNITED STATES + +00-0C-5A (hex) IBSmm Industrieelektronik Multimedia +000C5A (base 16) IBSmm Industrieelektronik Multimedia + Ayinger Str. 1 + Faistenhaar + Brunnthal Bavaria D-85649 + GERMANY + +00-0C-5B (hex) HANWANG TECHNOLOGY CO.,LTD +000C5B (base 16) HANWANG TECHNOLOGY CO.,LTD + 8F,Automation Building,95 Zhongguancun, + Haidian District + Beijing 100080 + CHINA + +00-0C-5C (hex) GTN Systems B.V. +000C5C (base 16) GTN Systems B.V. + Postbus 12236 + 1100 AE + Amsterdam + NETHERLANDS + +00-0C-5D (hex) CHIC TECHNOLOGY (CHINA) CORP. +000C5D (base 16) CHIC TECHNOLOGY (CHINA) CORP. + 7th Building,Shi'ao Ind.Zone,Longhua Tow + Shenzhen Guangdong 518109 + CHINA + +00-0C-5E (hex) Calypso Medical +000C5E (base 16) Calypso Medical + 2101 Fourth Avenue, Suite 1550 + Seattle WA 98121 + UNITED STATES + +00-0C-5F (hex) Avtec, Inc. +000C5F (base 16) Avtec, Inc. + 4335 Augusta Hwy + Gilbert SC 29054 + UNITED STATES + +00-0C-60 (hex) ACM Systems +000C60 (base 16) ACM Systems + 3034 Gold Canal Drive + Rancho Cordova CA 95670 + UNITED STATES + +00-0C-61 (hex) AC Tech corporation DBA Advanced Digital +000C61 (base 16) AC Tech corporation DBA Advanced Digital + 1250-G Avenida Acaso + Camarillo CA 93010 + UNITED STATES + +00-0C-62 (hex) ABB Automation Technology Products AB, Control +000C62 (base 16) ABB Automation Technology Products AB, Control + Motorgrand 20 + Vasteras 721 61 + SWEDEN + +00-0C-63 (hex) Zenith Electronics Corporation +000C63 (base 16) Zenith Electronics Corporation + 2000 Millbrook Drive + Lincolnshire Illinois 60069 + UNITED STATES + +00-0C-64 (hex) X2 MSA Group +000C64 (base 16) X2 MSA Group + Care of: Agilent Technologies + White House Road + Ipswich, Suffolk IP1 5PB + UNITED KINGDOM + +00-0C-65 (hex) Sunin Telecom +000C65 (base 16) Sunin Telecom + 1025-5 Dokok-Ri, Wabu-Eub + Namyangju-City Kyunggi-Do 472-900 + KOREA, REPUBLIC OF + +00-0C-66 (hex) Pronto Networks Inc +000C66 (base 16) Pronto Networks Inc + 4637 Chabot Dr + Suite 300 + Pleasanton CA 94588 + UNITED STATES + +00-0C-67 (hex) OYO ELECTRIC CO.,LTD +000C67 (base 16) OYO ELECTRIC CO.,LTD + 63-1 Nakamichi Omote + Hirakawa + Joyo Kyoto 610-0101 + JAPAN + +00-0C-68 (hex) SigmaTel, Inc. +000C68 (base 16) SigmaTel, Inc. + 201 Jones Road + Waltham MA 02451 + UNITED STATES + +00-0C-69 (hex) National Radio Astronomy Observatory +000C69 (base 16) National Radio Astronomy Observatory + P.O. Box O + Socorro NM 87801 + UNITED STATES + +00-0C-6A (hex) MBARI +000C6A (base 16) MBARI + 7700 Sandholdt Road + Moss Landing CA 95039 + UNITED STATES + +00-0C-6B (hex) Kurz Industrie-Elektronik GmbH +000C6B (base 16) Kurz Industrie-Elektronik GmbH + Foehrenbachstrasse 3 + Remshalden Baden-Württemberg 73630 + GERMANY + +00-0C-6C (hex) Elgato Systems LLC +000C6C (base 16) Elgato Systems LLC + 900 Kearny St #750 + San Francisco CA 94133 + UNITED STATES + +00-0C-6D (hex) BOC Edwards +000C6D (base 16) BOC Edwards + Marshall Road + Eastbourne East Sussex BN22 9BA + UNITED KINGDOM + +00-0C-6E (hex) ASUSTEK COMPUTER INC. +000C6E (base 16) ASUSTEK COMPUTER INC. + 150, Li-Te Rd., PeiTou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-0C-6F (hex) Amtek system co.,LTD. +000C6F (base 16) Amtek system co.,LTD. + 14F-11,No.79,Sec. 1 ,Hsin Tai Wu Rd., + Hsi Chih City + Taipei 221 + TAIWAN, REPUBLIC OF CHINA + +00-0C-70 (hex) ACC GmbH +000C70 (base 16) ACC GmbH + Am Sandfeld 15 + Karlsruhe Baden 76149 + GERMANY + +00-0C-71 (hex) Wybron, Inc +000C71 (base 16) Wybron, Inc + 4830 LIst Dr + Colorado Springs Colorado 80919 + UNITED STATES + +00-0C-72 (hex) Tempearl Industrial Co., Ltd. +000C72 (base 16) Tempearl Industrial Co., Ltd. + 3-1-42 Ohzu + Minami-ku + Hiroshima-shi Hiroshima 732-0802 + JAPAN + +00-0C-73 (hex) TELSON ELECTRONICS CO., LTD +000C73 (base 16) TELSON ELECTRONICS CO., LTD + Telson Venture Tower., 949-3 Dogok-Dong + Seoul Kangnam-Ku 135-739 + KOREA, REPUBLIC OF + +00-0C-74 (hex) RIVERTEC CORPORATION +000C74 (base 16) RIVERTEC CORPORATION + 882-5 MIYAGASAKI + IMABARI EHIME 799-1537 + JAPAN + +00-0C-75 (hex) Oriental integrated electronics. LTD +000C75 (base 16) Oriental integrated electronics. LTD + 281-34 Dondang-dong Wonmi-Gu + Bucheon Kyoungkido 420-808 + KOREA, REPUBLIC OF + +00-0C-76 (hex) MICRO-STAR INTERNATIONAL CO., LTD. +000C76 (base 16) MICRO-STAR INTERNATIONAL CO., LTD. + No 69, Li-De Street, Jung-He City, Taipe + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-0C-77 (hex) Life Racing Ltd +000C77 (base 16) Life Racing Ltd + Unit 6 Repton Close + Burnt Mills Ind Est + Basildon Essex SS13 1LE + UNITED KINGDOM + +00-0C-78 (hex) In-Tech Electronics Limited +000C78 (base 16) In-Tech Electronics Limited + Unit A, 13/F., Wing Tai Centre + 12 Hing Yip Street + Kwun Tong Kowloon + HONG KONG + +00-0C-79 (hex) Extel Communications P/L +000C79 (base 16) Extel Communications P/L + 399 Ferntree Gully Road + Mt Waverley Victoria 3149 + AUSTRALIA + +00-0C-7A (hex) DaTARIUS Technologies GmbH +000C7A (base 16) DaTARIUS Technologies GmbH + Anton Maria Schyrle Str. 7 + Reutte Tirol 6600 + AUSTRIA + +00-0C-7B (hex) ALPHA PROJECT Co.,Ltd. +000C7B (base 16) ALPHA PROJECT Co.,Ltd. + 4-4-24 Kamijima + Hamamatsu Shizuoka 433-8122 + JAPAN + +00-0C-7C (hex) Internet Information Image Inc. +000C7C (base 16) Internet Information Image Inc. + Fl. 6, No. 1, Alley 20, Lane 26, Rueigua + Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0C-7D (hex) TEIKOKU ELECTRIC MFG. CO., LTD +000C7D (base 16) TEIKOKU ELECTRIC MFG. CO., LTD + 60, HIRANO + SHINGU-CHO + IBO-GUN HYOGO 679-4395 + JAPAN + +00-0C-7E (hex) Tellium Incorporated +000C7E (base 16) Tellium Incorporated + 2 Crescent Place + Oceanport New Jersey 07757 + UNITED STATES + +00-0C-7F (hex) synertronixx GmbH +000C7F (base 16) synertronixx GmbH + Vahrenwalder Strasse 7 + Hannover Niedersachsen 30165 + GERMANY + +00-0C-80 (hex) Opelcomm Inc. +000C80 (base 16) Opelcomm Inc. + 46750 Fremont Blvd. Ste 210 + Fremont CA 94538 + UNITED STATES + +00-0C-81 (hex) Nulec Industries Pty Ltd +000C81 (base 16) Nulec Industries Pty Ltd + PO Box 761, Edith St, + Lytton Qld 4178 + AUSTRALIA + +00-0C-82 (hex) NETWORK TECHNOLOGIES INC +000C82 (base 16) NETWORK TECHNOLOGIES INC + 1275 DANNER DRIVE + AURORA OH 44202 + UNITED STATES + +00-0C-83 (hex) Logical Solutions +000C83 (base 16) Logical Solutions + 100T Washington Street + Milford CT 06460 + UNITED STATES + +00-0C-84 (hex) Eazix, Inc. +000C84 (base 16) Eazix, Inc. + Unit 301 Plaza Building B + 6530 Northgate Avenue, Filinvest + Muntinlupa City Rizal 1770 + PHILIPPINES + +00-0C-85 (hex) Cisco Systems +000C85 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0C-86 (hex) Cisco Systems +000C86 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-m/1 + San Jose CA 95134 + UNITED STATES + +00-0C-87 (hex) AMD +000C87 (base 16) AMD + 4555 Great America Pkwy + Ste 501 + Santa Clara CA 95054 + UNITED STATES + +00-0C-88 (hex) Apache Micro Peripherals, Inc. +000C88 (base 16) Apache Micro Peripherals, Inc. + 17526 Von Karman Ave + Irvine CA 92614 + UNITED STATES + +00-0C-89 (hex) AC Electric Vehicles, Ltd. +000C89 (base 16) AC Electric Vehicles, Ltd. + Markkinakuja 3 + Jokela 05400 + FINLAND + +00-0C-8A (hex) Bose Corporation +000C8A (base 16) Bose Corporation + The Mountain + Framingham MA 01701 + UNITED STATES + +00-0C-8B (hex) Connect Tech Inc +000C8B (base 16) Connect Tech Inc + 42 Arrow Road + Guelph Ontario N1K 1S6 + CANADA + +00-0C-8C (hex) KODICOM CO.,LTD. +000C8C (base 16) KODICOM CO.,LTD. + A-Dong 5FI.,SK Twin Tower 345-9, + Gasan-Dong, Guemchun-Gu + Seoul 153-023 + KOREA, REPUBLIC OF + +00-0C-8D (hex) MATRIX VISION GmbH +000C8D (base 16) MATRIX VISION GmbH + Talstrasse 16 + Oppenweiler Baden-Wuerttemberg D-71570 + GERMANY + +00-0C-8E (hex) Mentor Engineering Inc +000C8E (base 16) Mentor Engineering Inc + 2891 Sunridge Way NE + Suite 230 + Calgary Alberta T1Y7K7 + CANADA + +00-0C-8F (hex) Nergal s.r.l. +000C8F (base 16) Nergal s.r.l. + Viale Bardanzellu,8 + Roma 00155 + ITALY + +00-0C-90 (hex) Octasic Inc. +000C90 (base 16) Octasic Inc. + 4101 Molson St. + Suite 300 + Montreal Quebec H1Y 3L1 + CANADA + +00-0C-91 (hex) Riverhead Networks Inc. +000C91 (base 16) Riverhead Networks Inc. + 20195 Stevens Creek Blvd. # 110 + Cupertino CA 95014 + UNITED STATES + +00-0C-92 (hex) WolfVision Gmbh +000C92 (base 16) WolfVision Gmbh + VWP + Wiedengasse 25 + Goetzis Vorarlberg A-6840 + AUSTRIA + +00-0C-93 (hex) Xeline Co., Ltd. +000C93 (base 16) Xeline Co., Ltd. + 7F. Chungjin Bldg., 475-22 + Bangbae 2 dong, Seocho-gu + Seoul 137-819 + KOREA, REPUBLIC OF + +00-0C-94 (hex) United Electronic Industries, Inc. (EUI) +000C94 (base 16) United Electronic Industries, Inc. (EUI) + 27 Renmar Ave + Walpole MA 02081 + UNITED STATES + +00-0C-95 (hex) PrimeNet +000C95 (base 16) PrimeNet + Hongik University, 72-1, Sangsu-Dong, Ma + Seoul 121-791 + KOREA, REPUBLIC OF + +00-0C-96 (hex) OQO, Inc. +000C96 (base 16) OQO, Inc. + 1800 Illinois Street + San Francisco CA 94124 + UNITED STATES + +00-0C-97 (hex) NV ADB TTV Technologies SA +000C97 (base 16) NV ADB TTV Technologies SA + LEUVENSESTEENWEG,585 + ZAVENTEM Vlaamse brabant 1930 + BELGIUM + +00-0C-98 (hex) LETEK Communications Inc. +000C98 (base 16) LETEK Communications Inc. + Taeyang Bd. 2nd Floor, 2486 + SongNam-Dong, Jungwon-Ku + SongNam Kyunggi-do 462-824 + KOREA, REPUBLIC OF + +00-0C-99 (hex) HITEL LINK Co.,Ltd +000C99 (base 16) HITEL LINK Co.,Ltd + Samsung Omni Tower 4th Fl., 395-62 + Shindaebang-dong, Dongjac-ku, + Seoul 156-010 + KOREA, REPUBLIC OF + +00-0C-9A (hex) Hitech Electronics Corp. +000C9A (base 16) Hitech Electronics Corp. + 4f, No. 501-15 Chung-Cheng Rd. + Shin-tien Taipei Shien 231 + TAIWAN, REPUBLIC OF CHINA + +00-0C-9B (hex) EE Solutions, Inc +000C9B (base 16) EE Solutions, Inc + 8F, No. 9, Park II Ave., Science-Based I + Hsin Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0C-9C (hex) Chongho information & communications +000C9C (base 16) Chongho information & communications + Chongho Bldg, #7-61 Yangjae-dong, Seocho + Seoul 137-130 + KOREA, REPUBLIC OF + +00-0C-9D (hex) AirWalk Communications, Inc. +000C9D (base 16) AirWalk Communications, Inc. + 1850 N. GreenVille Ave., Suite 164 + Richardson TX 75081 + UNITED STATES + +00-0C-9E (hex) MemoryLink Corp. +000C9E (base 16) MemoryLink Corp. + 36 Jewelers Park Drive + Suite 200 + Neenah Wisconsin 54957 + UNITED STATES + +00-0C-9F (hex) NKE Corporation +000C9F (base 16) NKE Corporation + 27 Zusho Baba + Nagaokakyo-shi Kyoto 617-0828 + JAPAN + +00-0C-A0 (hex) StorCase Technology, Inc. +000CA0 (base 16) StorCase Technology, Inc. + 17600 Newhope St. + Fountain Valley CA 92708 + UNITED STATES + +00-0C-A1 (hex) SIGMACOM Co., LTD. +000CA1 (base 16) SIGMACOM Co., LTD. + DacomBldg 7F 200-12 Anyang-dong + Manan-Ku, Anyang-city, KyungKi-Do, Korea + 430-817 + KOREA, REPUBLIC OF + +00-0C-A2 (hex) Scopus Network Technologies Ltd +000CA2 (base 16) Scopus Network Technologies Ltd + 10 Ha'amal st. Park Afek + Rosh Ha'ayin 48092 + ISRAEL + +00-0C-A3 (hex) Rancho Technology, Inc. +000CA3 (base 16) Rancho Technology, Inc. + 10783 Bell Court + Rancho Cucamonga CA 19730 + UNITED STATES + +00-0C-A4 (hex) Prompttec Product Management GmbH +000CA4 (base 16) Prompttec Product Management GmbH + Mariatrosterstr. 41 + Graz AUSTRIA A-8043 + AUSTRIA + +00-0C-A5 (hex) Naman NZ LTd +000CA5 (base 16) Naman NZ LTd + 13/17 Kawana St + Northcote + Auckland + NEW ZEALAND + +00-0C-A6 (hex) Mintera Corporation +000CA6 (base 16) Mintera Corporation + 847 Rogers Street + Lowell MA 01852 + UNITED STATES + +00-0C-A7 (hex) Metro (Suzhou) Technologies Co., Ltd. +000CA7 (base 16) Metro (Suzhou) Technologies Co., Ltd. + No.221 Xinghai Street, Suzhou Industrial Park + Suzhou Jiang Su Province 215021 + CHINA + +00-0C-A8 (hex) Garuda Networks Corporation +000CA8 (base 16) Garuda Networks Corporation + 48499 Milmont Drive + Fremont CA 94538 + UNITED STATES + +00-0C-A9 (hex) Ebtron Inc. +000CA9 (base 16) Ebtron Inc. + 1663 Hwy 701 South + Loris SC 29569 + UNITED STATES + +00-0C-AA (hex) Cubic Transportation Systems Inc +000CAA (base 16) Cubic Transportation Systems Inc + 1308 S. Washington Street + Tullahoma TN 37388 + UNITED STATES + +00-0C-AB (hex) COMMEND International +000CAB (base 16) COMMEND International + Hoelzlstrasse 561 + Wals Salzburg A-5071 + AUSTRIA + +00-0C-AC (hex) Citizen Watch Co., Ltd. +000CAC (base 16) Citizen Watch Co., Ltd. + 6-1-12, Tanashi-cho + Nishi-Tokyo-shi Tokyo 188-8511 + JAPAN + +00-0C-AD (hex) BTU International +000CAD (base 16) BTU International + 23 Esquire Rd + North Billerica MA 01862 + UNITED STATES + +00-0C-AE (hex) Ailocom Oy +000CAE (base 16) Ailocom Oy + Hatanpaan valtatie 24 + Dynamo Business Park + TAMPERE FIN 33950 + FINLAND + +00-0C-AF (hex) TRI TERM CO.,LTD. +000CAF (base 16) TRI TERM CO.,LTD. + 21-5 HIRAIDE KOUGIYO DANCHI + UTSUNOMIYA-SHI + TOCHIGI 321-0905 + JAPAN + +00-0C-B0 (hex) Star Semiconductor Corporation +000CB0 (base 16) Star Semiconductor Corporation + 6F, No.17, Li-Hsin Rd + Science-Based Industrial Park + Hsinchu City 300 + TAIWAN, REPUBLIC OF CHINA + +00-0C-B1 (hex) Salland Engineering (Europe) BV +000CB1 (base 16) Salland Engineering (Europe) BV + Bedrijvenpark Berkum + Schrevenweg 12 + Zwolle OV 8024 HA + NETHERLANDS + +00-0C-B2 (hex) safei Co., Ltd. +000CB2 (base 16) safei Co., Ltd. + 1005 Software Supporting Center 21centur + 55-1 Daeyeon-dong, Nam-gu + Busan 608-743 + KOREA, REPUBLIC OF + +00-0C-B3 (hex) ROUND Co.,Ltd. +000CB3 (base 16) ROUND Co.,Ltd. + 3-9 Gokashou-Shibahigashi + Uji Kyoto 611-0011 + JAPAN + +00-0C-B4 (hex) AutoCell Laboratories, Inc. +000CB4 (base 16) AutoCell Laboratories, Inc. + 125 Nagog Park Drive + Acton MA 01720 + UNITED STATES + +00-0C-B5 (hex) Premier Technolgies, Inc +000CB5 (base 16) Premier Technolgies, Inc + PO Box 159 + One Premier Dr + Long Lake MN 55356 + UNITED STATES + +00-0C-B6 (hex) NANJING SEU MOBILE & INTERNET TECHNOLOGY CO.,LTD +000CB6 (base 16) NANJING SEU MOBILE & INTERNET TECHNOLOGY CO.,LTD + 5th floor,Building 5,ChangJiangHou Street No.6 + Nanjing Jiangsu 210018 + CHINA + +00-0C-B7 (hex) Nanjing Huazhuo Electronics Co., Ltd. +000CB7 (base 16) Nanjing Huazhuo Electronics Co., Ltd. + No.77 Gaohu Road + Jiangning Economic & Technology Developm + Nanjing Jiangsu 211100 + CHINA + +00-0C-B8 (hex) MEDION AG +000CB8 (base 16) MEDION AG + z.H. Andreas Claus + Gänsemarkt 16-18 + Essen NRW 45127 + GERMANY + +00-0C-B9 (hex) LEA +000CB9 (base 16) LEA + 52/54 rue du capitaine Guynemer + Courbevoie RP 92415 + FRANCE + +00-0C-BA (hex) Jamex +000CBA (base 16) Jamex + 84 Sperry Lane + Lansing NY 14882 + UNITED STATES + +00-0C-BB (hex) ISKRAEMECO +000CBB (base 16) ISKRAEMECO + Savska loka 4 + Kranj Gorenjska 4000 + SLOVENIA + +00-0C-BC (hex) Iscutum +000CBC (base 16) Iscutum + #899-6 Ho-Gye Dong, Dong-An Gu + An-Yang City Kyong-Gi Do 431-080 + KOREA, REPUBLIC OF + +00-0C-BD (hex) Interface Masters, Inc +000CBD (base 16) Interface Masters, Inc + 2381 Zanker Rd., Suite 130 + San Jose California 95131 + UNITED STATES + +00-0C-BE (hex) PRIVATE +000CBE (base 16) + +00-0C-BF (hex) Holy Stone Ent. Co., Ltd. +000CBF (base 16) Holy Stone Ent. Co., Ltd. + 1F, No.62, Sec.2, Huang Shan Rd., + Nei Hu Dist., Taipei, Taiwan, R.O.C. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0C-C0 (hex) Genera Oy +000CC0 (base 16) Genera Oy + Niittylanpolku 16 + Box 16 + Helsinki 00621 + FINLAND + +00-0C-C1 (hex) Cooper Industries Inc. +000CC1 (base 16) Cooper Industries Inc. + 600 Travis, Suite 5800 + Houston TX 77002 + UNITED STATES + +00-0C-C2 (hex) ControlNet (India) Private Limited +000CC2 (base 16) ControlNet (India) Private Limited + L-44, Unit - I + Verna Industrial Estate + Verna, Salcete Goa 403 722 + INDIA + +00-0C-C3 (hex) BeWAN systems +000CC3 (base 16) BeWAN systems + 16 rue du Moulin des Bruyères + Courbevoie Hauts de Seine 92400 + FRANCE + +00-0C-C4 (hex) Tiptel AG +000CC4 (base 16) Tiptel AG + Halskestrasse 1 + Ratingen NRW 40880 + GERMANY + +00-0C-C5 (hex) Nextlink Co., Ltd. +000CC5 (base 16) Nextlink Co., Ltd. + C 605, Technopark #145 Yatop-dong, + Seongnam-si Bundang-gu, Gyeonggi 463-760 + KOREA, REPUBLIC OF + +00-0C-C6 (hex) Ka-Ro electronics GmbH +000CC6 (base 16) Ka-Ro electronics GmbH + Pascalstraße 22 + Aachen NW 52076 + GERMANY + +00-0C-C7 (hex) Intelligent Computer Solutions Inc. +000CC7 (base 16) Intelligent Computer Solutions Inc. + 9350 Eton St. + Chatsworth CA 91301 + UNITED STATES + +00-0C-C8 (hex) Xytronix Research & Design, Inc. +000CC8 (base 16) Xytronix Research & Design, Inc. + 1488 East 2300 North + North Logan UT 84341-1627 + UNITED STATES + +00-0C-C9 (hex) ILWOO DATA & TECHNOLOGY CO.,LTD +000CC9 (base 16) ILWOO DATA & TECHNOLOGY CO.,LTD + 1475-10,HWA HYUN BLD. 2nd Floor, + SEOCHO-DONG,SEOCHO-GU, + SEOUL 137-071 + KOREA, REPUBLIC OF + +00-0C-CA (hex) Hitachi Global Storage Technologies +000CCA (base 16) Hitachi Global Storage Technologies + 5600 Cottle Rd. + San Jose CA 95193 + UNITED STATES + +00-0C-CB (hex) Design Combus Ltd +000CCB (base 16) Design Combus Ltd + Hatanapaan valtatie 34A + Tampere FIN-33100 + FINLAND + +00-0C-CC (hex) Aeroscout Ltd. +000CCC (base 16) Aeroscout Ltd. + 3 Pekeris St. + Park Tamar + Rehovot 76701 + ISRAEL + +00-0C-CD (hex) IEC - TC57 +000CCD (base 16) IEC - TC57 + 3, rue de Varembé + P.O. Box 131 + Geneva GE 1211 + SWITZERLAND + +00-0C-CE (hex) Cisco Systems +000CCE (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0C-CF (hex) Cisco Systems +000CCF (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0C-D0 (hex) Symetrix +000CD0 (base 16) Symetrix + 6408 216th St SW + Mountlake Terrace WA 98043 + UNITED STATES + +00-0C-D1 (hex) SFOM Technology Corp. +000CD1 (base 16) SFOM Technology Corp. + No.18, Lane 32, Wufu 1st Rd., Luju shian + Luju Shiang Tauyuan County 338 + TAIWAN, REPUBLIC OF CHINA + +00-0C-D2 (hex) Schaffner EMV AG +000CD2 (base 16) Schaffner EMV AG + Nordstrasse 1 + Luterbach CH-4542 + SWITZERLAND + +00-0C-D3 (hex) Prettl Elektronik Radeberg GmbH +000CD3 (base 16) Prettl Elektronik Radeberg GmbH + Robert-Bosch-Str. 10 + Radeberg Saxony D-01454 + GERMANY + +00-0C-D4 (hex) Positron Public Safety Systems inc. +000CD4 (base 16) Positron Public Safety Systems inc. + 5101 Buchan + Montreal Quebec H4P 2R9 + CANADA + +00-0C-D5 (hex) Passave Inc. +000CD5 (base 16) Passave Inc. + 1557 Jasper Dr. + Sunnyvale CA 94087 + UNITED STATES + +00-0C-D6 (hex) PARTNER TECH +000CD6 (base 16) PARTNER TECH + 10F, NO.233-2,PAO CHIAO ROAD, SHIN TIEN + TAIPEI 231 + TAIWAN, REPUBLIC OF CHINA + +00-0C-D7 (hex) Nallatech Ltd +000CD7 (base 16) Nallatech Ltd + Boolean House + 1 Napier Park, Cumbernauld + Glasgow Scotland G68 0BH + UNITED KINGDOM + +00-0C-D8 (hex) M. K. Juchheim GmbH & Co +000CD8 (base 16) M. K. Juchheim GmbH & Co + Moltkestr. 13 - 31 + Fulda Hessen 36039 + GERMANY + +00-0C-D9 (hex) Itcare Co., Ltd +000CD9 (base 16) Itcare Co., Ltd + 408 KT Seocho, 1001-1 Bangbae-dong, + Seocho-ku + Seoul 137-850 + KOREA, REPUBLIC OF + +00-0C-DA (hex) FreeHand Systems, Inc. +000CDA (base 16) FreeHand Systems, Inc. + 95 First St. + Suite 200 + Los Altos CA 94022 + UNITED STATES + +00-0C-DB (hex) Foundry Networks +000CDB (base 16) Foundry Networks + 2100 Gold St + PO Box 649100 + San Jose CA 95164-9100 + UNITED STATES + +00-0C-DC (hex) BECS Technology, Inc +000CDC (base 16) BECS Technology, Inc + 9487 Dielman Rock Island Industrial Driv + St. Louis MO 63132 + UNITED STATES + +00-0C-DD (hex) AOS Technologies AG +000CDD (base 16) AOS Technologies AG + Taefernstrasse 20 + Baden - Daettwil AG CH-5405 + SWITZERLAND + +00-0C-DE (hex) ABB STOTZ-KONTAKT GmbH +000CDE (base 16) ABB STOTZ-KONTAKT GmbH + Eppelheimer Str. 82 + Heidelberg Baden-Württemberg 69123 + GERMANY + +00-0C-DF (hex) PULNiX America, Inc +000CDF (base 16) PULNiX America, Inc + 1330 Orleans Drive + Sunnyvale CA 94089 + UNITED STATES + +00-0C-E0 (hex) Trek Diagnostics Inc. +000CE0 (base 16) Trek Diagnostics Inc. + 982 Keynote Circle + Suite 6 + Cleveland Ohio 44131 + UNITED STATES + +00-0C-E1 (hex) The Open Group +000CE1 (base 16) The Open Group + Apex Plaza + Forbury Road + Reading Berks RG1 1AX + UNITED KINGDOM + +00-0C-E2 (hex) Rolls-Royce +000CE2 (base 16) Rolls-Royce + 105 N. Sandusky St. + Mt. Vernon Ohio 43050 + UNITED STATES + +00-0C-E3 (hex) Option International N.V. +000CE3 (base 16) Option International N.V. + Kolonel Begaultlaan 45 + Leuven Brabant 3012 + BELGIUM + +00-0C-E4 (hex) NeuroCom International, Inc. +000CE4 (base 16) NeuroCom International, Inc. + 9570 SE Lawnfield Rd + Clackamas OR 97015 + UNITED STATES + +00-0C-E5 (hex) Motorola BCS +000CE5 (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-0C-E6 (hex) Meru Networks Inc +000CE6 (base 16) Meru Networks Inc + 1309 South Mary Avenue, + Sunnyvale CA 94087 + UNITED STATES + +00-0C-E7 (hex) MediaTek Inc. +000CE7 (base 16) MediaTek Inc. + 1F, No. 13, Innovation Road 1, + Science-Based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0C-E8 (hex) GuangZhou AnJuBao Co., Ltd +000CE8 (base 16) GuangZhou AnJuBao Co., Ltd + HeiQiaoTang TangXia TianHe + GuangZhou GuangDong 510665 + CHINA + +00-0C-E9 (hex) BLOOMBERG L.P. +000CE9 (base 16) BLOOMBERG L.P. + 499 PARK AVENUE + NEW YORK NEW YORK 10022 + UNITED STATES + +00-0C-EA (hex) aphona Kommunikationssysteme +000CEA (base 16) aphona Kommunikationssysteme + Entwicklungs- und VertriebsgmbH + Deutschstraße 4 + Wien 1230 + AUSTRIA + +00-0C-EB (hex) CNMP Networks, Inc. +000CEB (base 16) CNMP Networks, Inc. + 1245 S. Winchester Blvd. + Suite 208 + San Jose CA 95128 + UNITED STATES + +00-0C-EC (hex) Spectracom Corp. +000CEC (base 16) Spectracom Corp. + 95 Methodist Hill Drive + Suite 500 + Rochester NY 14623 + UNITED STATES + +00-0C-ED (hex) Real Digital Media +000CED (base 16) Real Digital Media + 485 North Keller Road + Suite 140 + Maitland FL 32751 + UNITED STATES + +00-0C-EE (hex) jp-embedded +000CEE (base 16) jp-embedded + Buen 21, Nr. Dalby + Borup 4140 + DENMARK + +00-0C-EF (hex) Open Networks Engineering Ltd +000CEF (base 16) Open Networks Engineering Ltd + Classic House + Raynham Road + Bishop's Stortford Hertfordshire CM23 5PD + UNITED KINGDOM + +00-0C-F0 (hex) M & N GmbH +000CF0 (base 16) M & N GmbH + Dieselstr 18 + Rosbach v.d.H. Hessen 61191 + GERMANY + +00-0C-F1 (hex) Intel Corporation +000CF1 (base 16) Intel Corporation + MS: JF3-420 + 2111 NE 25th Avenue + Hillsboro OR 97124 + UNITED STATES + +00-0C-F2 (hex) GAMESA EÓLICA +000CF2 (base 16) GAMESA EÓLICA + Polígono Agustinos s/n + Pamplona NAVARRA 31013 + SPAIN + +00-0C-F3 (hex) CALL IMAGE SA +000CF3 (base 16) CALL IMAGE SA + 867 Route Imperiale + BAILLARGUES 34670 + FRANCE + +00-0C-F4 (hex) AKATSUKI ELECTRIC MFG.CO.,LTD. +000CF4 (base 16) AKATSUKI ELECTRIC MFG.CO.,LTD. + 593-1,aoji­ cho + kusatsu­ shi shiga 525-0041 + JAPAN + +00-0C-F5 (hex) InfoExpress +000CF5 (base 16) InfoExpress + 170 S. Whisman Road, Suite B + Mountain View CA 94041 + UNITED STATES + +00-0C-F6 (hex) Sitecom Europe BV +000CF6 (base 16) Sitecom Europe BV + Sevillaweg 122 + Rotterdam ZH 3047 AL + NETHERLANDS + +00-0C-F7 (hex) Nortel Networks +000CF7 (base 16) Nortel Networks + 8200 Dixie Rd. + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-0C-F8 (hex) Nortel Networks +000CF8 (base 16) Nortel Networks + 8200 Dixie Road, Suite 100 + 036 CC 101 + Brampton Ontario L6T 5P6 + CANADA + +00-0C-F9 (hex) ITT Flygt AB +000CF9 (base 16) ITT Flygt AB + PO Box 2058 + Industrigatan 50 + Kristianstad 291 02 + SWEDEN + +00-0C-FA (hex) Digital Systems Corp +000CFA (base 16) Digital Systems Corp + 3 North Main Street + PO Box 158 + Walkersville Maryland 21793 + UNITED STATES + +00-0C-FB (hex) Korea Network Systems +000CFB (base 16) Korea Network Systems + 206 JangYoungSil Bldg, 1688-5 + Shinil-Dong, Taedeok-Gu + Taejeon 306-230 + KOREA, REPUBLIC OF + +00-0C-FC (hex) S2io Technologies Corp +000CFC (base 16) S2io Technologies Corp + 505 March Rd + Suite 120 + Ottawa Ontario K2K 2M5 + CANADA + +00-0C-FD (hex) PRIVATE +000CFD (base 16) + +00-0C-FE (hex) Grand Electronic Co., Ltd +000CFE (base 16) Grand Electronic Co., Ltd + Room 1710, Block B Lucky tower, No.3 Don + Beijing 100027 + CHINA + +00-0C-FF (hex) MRO-TEK LIMITED +000CFF (base 16) MRO-TEK LIMITED + 14, 1ST D MAIN ROAD, + GANGA NAGAR + BANGALORE KARNATAKA 560032 + INDIA + +00-0D-00 (hex) Seaway Networks Inc. +000D00 (base 16) Seaway Networks Inc. + 1 Chrysalis Way + Ottawa Ontario K2G 6P9 + CANADA + +00-0D-01 (hex) P&E Microcomputer Systems, Inc. +000D01 (base 16) P&E Microcomputer Systems, Inc. + 710 Commonwealth Ave + Boston Ma 02215 + UNITED STATES + +00-0D-02 (hex) NEC AccessTechnica,Ltd +000D02 (base 16) NEC AccessTechnica,Ltd + 800 Shimomata + Kakegawa Shizuoka 436-8501 + JAPAN + +00-0D-03 (hex) Matrics, Inc. +000D03 (base 16) Matrics, Inc. + 8850 Stanford Blvd + Suite 3000 + Columbia MD 21045 + UNITED STATES + +00-0D-04 (hex) Foxboro Eckardt Development GmbH +000D04 (base 16) Foxboro Eckardt Development GmbH + Glockenstrasse 52 + Stuttgart Baden-Württemberg 70376 + GERMANY + +00-0D-05 (hex) cybernet manufacturing inc. +000D05 (base 16) cybernet manufacturing inc. + 5001 Birch Street + Newport Beach ca 92660 + UNITED STATES + +00-0D-06 (hex) Compulogic Limited +000D06 (base 16) Compulogic Limited + Unit W3, MK TWO Business Centre + Barton Road + Water Eaton Milton Keynes MK2 3HU + UNITED KINGDOM + +00-0D-07 (hex) Calrec Audio Ltd +000D07 (base 16) Calrec Audio Ltd + Nutclough Mill + Hebden Bridge West Yorkshire HX7 8EZ + UNITED KINGDOM + +00-0D-08 (hex) AboveCable, Inc. +000D08 (base 16) AboveCable, Inc. + 8403 Colesville Road, #825 + Silver Spring MD 20910 + UNITED STATES + +00-0D-09 (hex) Yuehua(Zhuhai) Electronic CO. LTD +000D09 (base 16) Yuehua(Zhuhai) Electronic CO. LTD + 4Rd Pingdong,Nanping Science & Technolog + Zhuhai Guangdong 519070 + CHINA + +00-0D-0A (hex) Projectiondesign as +000D0A (base 16) Projectiondesign as + Habornveien 53 + Gamle Fredrikstad N-1630 + NORWAY + +00-0D-0B (hex) Buffalo Inc. +000D0B (base 16) Buffalo Inc. + MELCO HI-TECH CENTER, + SHIBATA HONDORI 4-15 MINAMI-KU, + NAGOYA 457-8520 + JAPAN + +00-0D-0C (hex) MDI Security Systems +000D0C (base 16) MDI Security Systems + 9518 Ninth Street + Rancho Cucamonga CA 91730 + UNITED STATES + +00-0D-0D (hex) ITSupported, LLC +000D0D (base 16) ITSupported, LLC + 4989 Peachtree Parkway + STE 200 + Norcross GA 30092 + UNITED STATES + +00-0D-0E (hex) Inqnet Systems, Inc. +000D0E (base 16) Inqnet Systems, Inc. + 321 NKIC Center + 48-84 Hongeun-dong, Seodaemun-ku + Seoul 120-100 + KOREA, REPUBLIC OF + +00-0D-0F (hex) Finlux Ltd +000D0F (base 16) Finlux Ltd + Radiomiehenkatu 3 + Turku FIN-20321 + FINLAND + +00-0D-10 (hex) Embedtronics Oy +000D10 (base 16) Embedtronics Oy + Unkarinpolku 20 + Kuopio 70820 + FINLAND + +00-0D-11 (hex) DENTSPLY - Gendex +000D11 (base 16) DENTSPLY - Gendex + 901 West Oakton Street + Des Plaines IL 60018-1884 + UNITED STATES + +00-0D-12 (hex) AXELL Corporation +000D12 (base 16) AXELL Corporation + Akihabara UDX South Wing 10F + 4-14-1 Sotokanda + Chiyoda-ku Tokyo 101-8973 + JAPAN + +00-0D-13 (hex) Wilhelm Rutenbeck GmbH&Co. +000D13 (base 16) Wilhelm Rutenbeck GmbH&Co. + Niederworth 1-10 + Schalksmühle NRW 58579 + GERMANY + +00-0D-14 (hex) Vtech Innovation LP dba Advanced American Telephones +000D14 (base 16) Vtech Innovation LP dba Advanced American Telephones + 203-600 Parsippany Rd + Parsippany NJ 07054 + UNITED STATES + +00-0D-15 (hex) Voipac s.r.o. +000D15 (base 16) Voipac s.r.o. + Ul. Janka Krala 3 + Trencin 911 01 + SLOVAKIA + +00-0D-16 (hex) UHS Systems Pty Ltd +000D16 (base 16) UHS Systems Pty Ltd + PO Box 6264 + South Sydney Business Hub + Alexandria NSW 2015 + AUSTRALIA + +00-0D-17 (hex) Turbo Networks Co.Ltd +000D17 (base 16) Turbo Networks Co.Ltd + 2F,No 1223, Chung Cheng Rd. + Tao Yuan 330 + TAIWAN, REPUBLIC OF CHINA + +00-0D-18 (hex) Mega-Trend Electronics CO., LTD. +000D18 (base 16) Mega-Trend Electronics CO., LTD. + Tong Fu Yu Ind., Ku Keng Village, Guan Lan + Shengzhen Guang Dong 518110 + CHINA + +00-0D-19 (hex) ROBE Show lighting +000D19 (base 16) ROBE Show lighting + Hazovice 2090 + Roznov pod Radhostem 756 61 + CZECH REPUBLIC + +00-0D-1A (hex) Mustek System Inc. +000D1A (base 16) Mustek System Inc. + No. 25, R&D Road, Science-Based Industri + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0D-1B (hex) Kyoto Electronics Manufacturing Co., Ltd. +000D1B (base 16) Kyoto Electronics Manufacturing Co., Ltd. + 56-2, Ninodan-cho, Shinden, + Kisshoin, Minami-ku, + Kyoto-City Kyoto Prefecture 601-8317 + JAPAN + +00-0D-1C (hex) Amesys Defense +000D1C (base 16) Amesys Defense + 1030 Av de la LAUZIERE + ZAC de Pichaury II Les Milles BP 20 140 + AIX en PROVENCE Cedex 03 13794 + FRANCE + +00-0D-1D (hex) HIGH-TEK HARNESS ENT. CO., LTD. +000D1D (base 16) HIGH-TEK HARNESS ENT. CO., LTD. + 4F-6, No18, Pu-Ting Rd. Hsinchu, Taiwan + 4F, No16, Lane50, Sec3, Nan-Kang Rd, Nan + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0D-1E (hex) Control Techniques +000D1E (base 16) Control Techniques + The Gro + Pool Road + Newtown Powys SY16 3BE + UNITED KINGDOM + +00-0D-1F (hex) AV Digital +000D1F (base 16) AV Digital + Pottendorfer Strasse 25-27/4/1/1 + Wien 1120 + AUSTRIA + +00-0D-20 (hex) ASAHIKASEI TECHNOSYSTEM CO.,LTD. +000D20 (base 16) ASAHIKASEI TECHNOSYSTEM CO.,LTD. + Shinjuku First-West 17F + 23-7,Nishishinjuku 1-chome + Sumida-ku Tokyo 160-0023 + JAPAN + +00-0D-21 (hex) WISCORE Inc. +000D21 (base 16) WISCORE Inc. + 6F, No. 180, Sec. 2, Duenhua S. Rd, + Taipei 106 + TAIWAN, REPUBLIC OF CHINA + +00-0D-22 (hex) Unitronics +000D22 (base 16) Unitronics + Unitronics Building + P.O. Box 300 + Ben Gurion Airport 70100 + ISRAEL + +00-0D-23 (hex) Smart Solution, Inc +000D23 (base 16) Smart Solution, Inc + 465 West Lawndale #B + Salt Lake City UT 84115 + UNITED STATES + +00-0D-24 (hex) SENTEC E&E CO., LTD. +000D24 (base 16) SENTEC E&E CO., LTD. + No. 32. Gong5 Rd. + Lungtan Taoyuan 325 + TAIWAN, REPUBLIC OF CHINA + +00-0D-25 (hex) SANDEN CORPORATION +000D25 (base 16) SANDEN CORPORATION + 20 Kotobuki-cho + Isesaki-shi Gunma 372-8502 + JAPAN + +00-0D-26 (hex) Primagraphics Limited +000D26 (base 16) Primagraphics Limited + Cambridge House, No.2 Focus Four + Fourth Avenue + Letchworth Garden City Hertfordshire SG6 2TU + UNITED KINGDOM + +00-0D-27 (hex) MICROPLEX Printware AG +000D27 (base 16) MICROPLEX Printware AG + Panzerstraße 5 + Varel Niedersachsen 26316 + GERMANY + +00-0D-28 (hex) Cisco +000D28 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0D-29 (hex) Cisco +000D29 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0D-2A (hex) Scanmatic AS +000D2A (base 16) Scanmatic AS + Kilsund + Staubø 4920 + NORWAY + +00-0D-2B (hex) Racal Instruments +000D2B (base 16) Racal Instruments + 4 Goodyear Street + Irvine CA 92618 + UNITED STATES + +00-0D-2C (hex) Patapsco Designs Ltd +000D2C (base 16) Patapsco Designs Ltd + The Passfield Oak + Passfield + Nr Liphook Hampshire GU30 7RL + UNITED KINGDOM + +00-0D-2D (hex) NCT Deutschland GmbH +000D2D (base 16) NCT Deutschland GmbH + Wildenbruchstr. 15 + Jena Thüringen 07745 + GERMANY + +00-0D-2E (hex) Matsushita Avionics Systems Corporation +000D2E (base 16) Matsushita Avionics Systems Corporation + 26200 Enterprise Way + Lake Forest CA 92630 + UNITED STATES + +00-0D-2F (hex) AIN Comm.Tech.Co., LTD +000D2F (base 16) AIN Comm.Tech.Co., LTD + 4F, No.76, Sec2 Mintzu Rd + Jung-Li City 320 + TAIWAN, REPUBLIC OF CHINA + +00-0D-30 (hex) IceFyre Semiconductor +000D30 (base 16) IceFyre Semiconductor + Suite 300 + 411 Leggett Drive + Kanata Ontario K2K 3C9 + CANADA + +00-0D-31 (hex) Compellent Technologies, Inc. +000D31 (base 16) Compellent Technologies, Inc. + 7625 Smetana Lane + Eden Prairie Minnesota 55344 + UNITED STATES + +00-0D-32 (hex) DispenseSource, Inc. +000D32 (base 16) DispenseSource, Inc. + 29801 Santa Margarita Parkway + Rancho Santa Margarita CA 92688 + UNITED STATES + +00-0D-33 (hex) Prediwave Corp. +000D33 (base 16) Prediwave Corp. + 48431 Milmont Drive + Fremont CA 94538 + UNITED STATES + +00-0D-34 (hex) Shell International Exploration and Production, Inc. +000D34 (base 16) Shell International Exploration and Production, Inc. + BTC-Gasmer + PO Box 481 + Houston TX 77001 + UNITED STATES + +00-0D-35 (hex) PAC International Ltd +000D35 (base 16) PAC International Ltd + 1 Park Gate Close + Bredbury + Stockport Cheshire SK6 2SZ + UNITED KINGDOM + +00-0D-36 (hex) Wu Han Routon Electronic Co., Ltd +000D36 (base 16) Wu Han Routon Electronic Co., Ltd + Miao Shan District, East Lake Hi-Tech + Development Park + Wuhan Hubei 430223 + CHINA + +00-0D-37 (hex) WIPLUG +000D37 (base 16) WIPLUG + RUA DR. AGOSTINHO GOULAO + BAIRRO: CORREAS + PETROPOLIS RIO JANEIRO 25730050 + BRAZIL + +00-0D-38 (hex) NISSIN INC. +000D38 (base 16) NISSIN INC. + 10-7 KAMEI-CHO + TAKARAZUKA HYOGO 665-0047 + JAPAN + +00-0D-39 (hex) Network Electronics +000D39 (base 16) Network Electronics + Box 1020 + Sandefjord Sandefjord N3204 + NORWAY + +00-0D-3A (hex) Microsoft Corp. +000D3A (base 16) Microsoft Corp. + One Microsoft Way + Redmond Wa. 98052 + UNITED STATES + +00-0D-3B (hex) Microelectronics Technology Inc. +000D3B (base 16) Microelectronics Technology Inc. + No1, Innovation Road II + Hsinchu Science-Based Industrial Park + 300 + TAIWAN, REPUBLIC OF CHINA + +00-0D-3C (hex) i.Tech Dynamic Ltd +000D3C (base 16) i.Tech Dynamic Ltd + Room 1112, Metroplaza Tower 2, 223 Hing + 852 + HONG KONG + +00-0D-3D (hex) Hammerhead Systems, Inc. +000D3D (base 16) Hammerhead Systems, Inc. + 640 Clyde Court + Mountain View California 94043 + UNITED STATES + +00-0D-3E (hex) APLUX Communications Ltd. +000D3E (base 16) APLUX Communications Ltd. + 10F, No. 166, Dah-Yeh Rd., Peitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-0D-3F (hex) VXI Technology +000D3F (base 16) VXI Technology + 5425 Warner Road, Suite 13 + Valley View OH 44125 + UNITED STATES + +00-0D-40 (hex) Verint Loronix Video Solutions +000D40 (base 16) Verint Loronix Video Solutions + 12526 High Bluff Dr. #170 + San DIego CA 92130 + UNITED STATES + +00-0D-41 (hex) Siemens AG ICM MP UC RD IT KLF1 +000D41 (base 16) Siemens AG ICM MP UC RD IT KLF1 + Suedstrasse 9 + Kamp-Lintfort NRW 47475 + GERMANY + +00-0D-42 (hex) Newbest Development Limited +000D42 (base 16) Newbest Development Limited + 3/F Unit 311-312 + No.1 Science Park East Avenue + Shatin NT + HONG KONG + +00-0D-43 (hex) DRS Tactical Systems Inc. +000D43 (base 16) DRS Tactical Systems Inc. + 3520 U.S. Highway 1 + Palm Bay FL 32905 + UNITED STATES + +00-0D-44 (hex) PRIVATE +000D44 (base 16) + +00-0D-45 (hex) Tottori SANYO Electric Co., Ltd. +000D45 (base 16) Tottori SANYO Electric Co., Ltd. + 3-201, Minami Yoshikata + Tottori City Tottori 680-8634 + JAPAN + +00-0D-46 (hex) Parker SSD Drives +000D46 (base 16) Parker SSD Drives + 9225 Forsyth Park Drive + Charlotte NC 28273-3884 + UNITED STATES + +00-0D-47 (hex) Collex +000D47 (base 16) Collex + 13F-3,No.142,Sec.1,Huamei W,St.,Shi Chiu + Taichung 403 + TAIWAN, REPUBLIC OF CHINA + +00-0D-48 (hex) AEWIN Technologies Co., Ltd. +000D48 (base 16) AEWIN Technologies Co., Ltd. + 7F, No. 2, Lane 47, Sec. 3, Nan-Gang Rd. + TAIPEI 115 + TAIWAN, REPUBLIC OF CHINA + +00-0D-49 (hex) Triton Systems of Delaware, Inc. +000D49 (base 16) Triton Systems of Delaware, Inc. + 522 E. Railroad St. + Long Beach MS 39560 + UNITED STATES + +00-0D-4A (hex) Steag ETA-Optik +000D4A (base 16) Steag ETA-Optik + Borsigstrasse 78.-80 + Heinsberg 52525 + GERMANY + +00-0D-4B (hex) Roku, LLC +000D4B (base 16) Roku, LLC + 399 Sherman Ave. #12 + Palo Alto CA 94306 + UNITED STATES + +00-0D-4C (hex) Outline Electronics Ltd. +000D4C (base 16) Outline Electronics Ltd. + 7/F Benson Tower + 74 Hung To Road + Kwun Tong Kowloon + HONG KONG + +00-0D-4D (hex) Ninelanes +000D4D (base 16) Ninelanes + #405 4F Diplomatic Center + Seocho-gu, Seocho-dong + Seoul 1376-1 + KOREA, REPUBLIC OF + +00-0D-4E (hex) NDR Co.,LTD. +000D4E (base 16) NDR Co.,LTD. + Sumitomo seimei minatomachi MT BLDG + 1-18-2 Minamihorie Nishi-ku + Osak Kinki 550-0015 + JAPAN + +00-0D-4F (hex) Kenwood Corporation +000D4F (base 16) Kenwood Corporation + 2967-3, Ishikawa-machi + Hachioji-shi Tokyo 192-8525 + JAPAN + +00-0D-50 (hex) Galazar Networks +000D50 (base 16) Galazar Networks + 35 Fitzgerald Ave + Ottawa ON K2H 1E6 + CANADA + +00-0D-51 (hex) DIVR Systems, Inc. +000D51 (base 16) DIVR Systems, Inc. + 2161 Saturn Ct. + Bakersfield CA 93308 + UNITED STATES + +00-0D-52 (hex) Comart system +000D52 (base 16) Comart system + No. 211, Ace Techno Tower III, 197-48 + Gu-ro Dong, Gu-ro Gu, Seoul, Korea + Seoul 152-050 + KOREA, REPUBLIC OF + +00-0D-53 (hex) Beijing 5w Communication Corp. +000D53 (base 16) Beijing 5w Communication Corp. + NO.4,Zhong-Guan-Cun South 4 street, + Beijing 100080 + CHINA + +00-0D-54 (hex) 3Com Ltd +000D54 (base 16) 3Com Ltd + Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts HP2 4NW + UNITED KINGDOM + +00-0D-55 (hex) SANYCOM Technology Co.,Ltd +000D55 (base 16) SANYCOM Technology Co.,Ltd + 6F,Beijing Capital Times Square,88# Xich + Beijing 100031 + CHINA + +00-0D-56 (hex) Dell PCBA Test +000D56 (base 16) Dell PCBA Test + One Dell Way + RR5 MS-8545 + Round Rock Texas 78682 + UNITED STATES + +00-0D-57 (hex) Fujitsu I-Network Systems Limited. +000D57 (base 16) Fujitsu I-Network Systems Limited. + 1-403 kosugi-cho nakahara-ku + kawasaki kanagawa 211-0063 + JAPAN + +00-0D-58 (hex) PRIVATE +000D58 (base 16) + +00-0D-59 (hex) Amity Systems, Inc. +000D59 (base 16) Amity Systems, Inc. + 888 Tasman Drive + Milpitas CA 95035 + UNITED STATES + +00-0D-5A (hex) Tiesse SpA +000D5A (base 16) Tiesse SpA + Via Jervis 60 + Ivrea TO 10015 + ITALY + +00-0D-5B (hex) Smart Empire Investments Limited +000D5B (base 16) Smart Empire Investments Limited + Suite 2001-2006,Level 20 Landmark North + Xin Jie Hong Kong 00852 + CHINA + +00-0D-5C (hex) Robert Bosch GmbH, VT-ATMO +000D5C (base 16) Robert Bosch GmbH, VT-ATMO + Wernerstrasse 51 + Stuttgart BW 70469 + GERMANY + +00-0D-5D (hex) Raritan Computer, Inc +000D5D (base 16) Raritan Computer, Inc + 400 Cottontail Lane + Somerset NJ 08873 + UNITED STATES + +00-0D-5E (hex) NEC CustomTechnica, Ltd. +000D5E (base 16) NEC CustomTechnica, Ltd. + 6-80, Shimohanazawa 2-Chome + Yonezawa-shi Yamagata 992-8520 + JAPAN + +00-0D-5F (hex) Minds Inc +000D5F (base 16) Minds Inc + 1919 boul lionel bertrand + #202 + Boisbriand Quebec J7H 1N8 + CANADA + +00-0D-60 (hex) IBM Corporation +000D60 (base 16) IBM Corporation + 3039 Cornwallis Road + Dept FCGA, Bldg 660, Office F106 + Research Triangle Park NC 27709 + UNITED STATES + +00-0D-61 (hex) Giga-Byte Technology Co., Ltd. +000D61 (base 16) Giga-Byte Technology Co., Ltd. + No 6, Bau Chiang Road, Hsin-Tien + Taipei Hsien 9999 + TAIWAN, REPUBLIC OF CHINA + +00-0D-62 (hex) Funkwerk Dabendorf GmbH +000D62 (base 16) Funkwerk Dabendorf GmbH + Maerkische Strasse + Dabendorf Brandenburg 15806 + GERMANY + +00-0D-63 (hex) DENT Instruments, Inc. +000D63 (base 16) DENT Instruments, Inc. + 64 NW Franklin Ave + Bend OR 97701 + UNITED STATES + +00-0D-64 (hex) COMAG Handels AG +000D64 (base 16) COMAG Handels AG + Zillenhardtstr.41 + Goeppingen Baden-Württemberg 73037 + GERMANY + +00-0D-65 (hex) Cisco Systems +000D65 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0D-66 (hex) Cisco Systems +000D66 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0D-67 (hex) BelAir Networks Inc. +000D67 (base 16) BelAir Networks Inc. + 603 March Road + Kanata Ontario K2K 2M5 + CANADA + +00-0D-68 (hex) Vinci Systems, Inc. +000D68 (base 16) Vinci Systems, Inc. + 8330 Boone Boulevard + Suite 500 + Vienna VA 22182 + UNITED STATES + +00-0D-69 (hex) TMT&D Corporation +000D69 (base 16) TMT&D Corporation + 2-24-1 + Harumi-cho + Fuchu-si Tokyo 183-0057 + JAPAN + +00-0D-6A (hex) Redwood Technologies LTD +000D6A (base 16) Redwood Technologies LTD + Amber House + Market Street + Bracknell Berkshire RG12 1JB + UNITED KINGDOM + +00-0D-6B (hex) Mita-Teknik A/S +000D6B (base 16) Mita-Teknik A/S + Haandvaerkervej 1 + Roedkaersbro DK DK-8840 + DENMARK + +00-0D-6C (hex) M-Audio +000D6C (base 16) M-Audio + 45 E ST Joseph St. + Arcadia CA 91006 + UNITED STATES + +00-0D-6D (hex) K-Tech Devices Corp. +000D6D (base 16) K-Tech Devices Corp. + 14016-30 + nakaminowa minowamachi kamiina nagano 399-4601 + JAPAN + +00-0D-6E (hex) K-Patents Oy +000D6E (base 16) K-Patents Oy + P.O. Box 77 + Elannontie 5 + VANTAA FI 01511 + FINLAND + +00-0D-6F (hex) Ember Corporation +000D6F (base 16) Ember Corporation + 343 Congress St + 5th Floor + Boston Ma 02210 + UNITED STATES + +00-0D-70 (hex) Datamax Corporation +000D70 (base 16) Datamax Corporation + 4501 Parkway Commerce Blvd + Orlando FL 32808 + UNITED STATES + +00-0D-71 (hex) boca systems +000D71 (base 16) boca systems + 1065 s. rogers circle + boca raton fl 33487 + UNITED STATES + +00-0D-72 (hex) 2Wire, Inc +000D72 (base 16) 2Wire, Inc + 1704 Automation Parkway + San Jose CA 95131 + UNITED STATES + +00-0D-73 (hex) Technical Support, Inc. +000D73 (base 16) Technical Support, Inc. + 11253 John Galt Blvd + Omaha Nebraska 68137 + UNITED STATES + +00-0D-74 (hex) Sand Network Systems, Inc. +000D74 (base 16) Sand Network Systems, Inc. + 434 Payran Street + Petaluma CA 94952 + UNITED STATES + +00-0D-75 (hex) Kobian Pte Ltd - Taiwan Branch +000D75 (base 16) Kobian Pte Ltd - Taiwan Branch + 2F, No.580, Rueikuang Rd.,Nei Hu,Taipei, + Taipei Nei Hu 114 + TAIWAN, REPUBLIC OF CHINA + +00-0D-76 (hex) Hokuto Denshi Co,. Ltd. +000D76 (base 16) Hokuto Denshi Co,. Ltd. + 3-7 Odori Nishi 16-Chome Chuoku + Sapporo Hokkaido 060-0042 + JAPAN + +00-0D-77 (hex) FalconStor Software +000D77 (base 16) FalconStor Software + 125 Baylis Rd + Melville NY 11747 + UNITED STATES + +00-0D-78 (hex) Engineering & Security +000D78 (base 16) Engineering & Security + Martiri della Libertà 32/4 + Genova 16155 + ITALY + +00-0D-79 (hex) Dynamic Solutions Co,.Ltd. +000D79 (base 16) Dynamic Solutions Co,.Ltd. + 17-8 Nihonbashi Hakozaki-cho + Chuo-ku Tokyo 103-0015 + JAPAN + +00-0D-7A (hex) DiGATTO Asia Pacific Pte Ltd +000D7A (base 16) DiGATTO Asia Pacific Pte Ltd + 190 Mddle Road, #19-05 Fortune Center + 188979 + SINGAPORE + +00-0D-7B (hex) Consensys Computers Inc. +000D7B (base 16) Consensys Computers Inc. + 215 Shields Ct. + Markham ON L3R 8V2 + CANADA + +00-0D-7C (hex) Codian Ltd +000D7C (base 16) Codian Ltd + 14 Waterside Drive + Langley Slough SL3 6EZ + UNITED KINGDOM + +00-0D-7D (hex) Afco Systems +000D7D (base 16) Afco Systems + 200 Finn Court + Farmingdale NY 11735 + UNITED STATES + +00-0D-7E (hex) Axiowave Networks, Inc. +000D7E (base 16) Axiowave Networks, Inc. + 200 Nickerson Road + Marlborough MA 01752 + UNITED STATES + +00-0D-7F (hex) MIDAS COMMUNICATION TECHNOLOGIES PTE LTD ( Foreign Branch) +000D7F (base 16) MIDAS COMMUNICATION TECHNOLOGIES PTE LTD ( Foreign Branch) + 04-12, Phase Z.Ro Technoprenuer Park + #151, North Buona Vista Road + Singapore 139 347 + SINGAPORE + +00-0D-80 (hex) Online Development Inc +000D80 (base 16) Online Development Inc + 7209 Chapman Hwy + Knoxville Tn 37920 + UNITED STATES + +00-0D-81 (hex) Pepperl+Fuchs GmbH +000D81 (base 16) Pepperl+Fuchs GmbH + Königsberger Allee 87 + Mannheim 68307 + GERMANY + +00-0D-82 (hex) PHS srl +000D82 (base 16) PHS srl + Via Palù, 17 + Arcugnano Vicenza 36057 + ITALY + +00-0D-83 (hex) Sanmina-SCI Hungary Ltd. +000D83 (base 16) Sanmina-SCI Hungary Ltd. + Kota Jozsef u. 2. + Tatabanya Komarom-Esztergom 2800 + HUNGARY + +00-0D-84 (hex) Makus Inc. +000D84 (base 16) Makus Inc. + 4F Daedo Bldg., 748-14 Yeoksam-dong + Kangnam-gu Seoul 135-080 + KOREA, REPUBLIC OF + +00-0D-85 (hex) Tapwave, Inc. +000D85 (base 16) Tapwave, Inc. + 1901 Landings Drive + Building G + Mountain View CA 94043 + UNITED STATES + +00-0D-86 (hex) Huber + Suhner AG +000D86 (base 16) Huber + Suhner AG + Degersheimerstrasse 14 + 9100 Herisau + SWITZERLAND + +00-0D-87 (hex) Elitegroup Computer System Co. (ECS) +000D87 (base 16) Elitegroup Computer System Co. (ECS) + No.22, Alley 38, Lane 91, Sec. 1, Nei Hu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0D-88 (hex) D-Link Corporation +000D88 (base 16) D-Link Corporation + No.8, Li-Hsing 7 Road, Science-Based Ind + Hsinchu 30077 + TAIWAN, REPUBLIC OF CHINA + +00-0D-89 (hex) Bils Technology Inc +000D89 (base 16) Bils Technology Inc + 508 S River Oaks Drive + Indialantic FL 32903 + UNITED STATES + +00-0D-8A (hex) Winners Electronics Co., Ltd. +000D8A (base 16) Winners Electronics Co., Ltd. + #340-5,Wonchun-Dong,Paldal-Gu + Suwon-City Kyungki-Do 442-823 + KOREA, REPUBLIC OF + +00-0D-8B (hex) T&D Corporation +000D8B (base 16) T&D Corporation + 5652-169 Sasaga + Matsumoto Nagano 399-0033 + JAPAN + +00-0D-8C (hex) Shanghai Wedone Digital Ltd. CO. +000D8C (base 16) Shanghai Wedone Digital Ltd. CO. + 893-899 Huashan Road, + Shanghai 200031 + CHINA + +00-0D-8D (hex) ProLinx Communication Gateways, Inc. +000D8D (base 16) ProLinx Communication Gateways, Inc. + 1675 Chester Ave. + Fourth Floor + Bakersfield CA 93301 + UNITED STATES + +00-0D-8E (hex) Koden Electronics Co., Ltd. +000D8E (base 16) Koden Electronics Co., Ltd. + 5278 Uenohara + Uenohara-Shi + Yamanashi-Ken 409-0112 + JAPAN + +00-0D-8F (hex) King Tsushin Kogyo Co., LTD. +000D8F (base 16) King Tsushin Kogyo Co., LTD. + 2-6-6 Noge + Setagaya-ku Tokyo 158-0092 + JAPAN + +00-0D-90 (hex) Factum Electronics AB +000D90 (base 16) Factum Electronics AB + Teknikringen 1H + Linköping Östergötland 583 30 + SWEDEN + +00-0D-91 (hex) Eclipse (HQ Espana) S.L. +000D91 (base 16) Eclipse (HQ Espana) S.L. + CC de Negocios + Officina No. 46. C.N. 340, Km 175 + Puerto de Banus Marbella 29660 + SPAIN + +00-0D-92 (hex) Arima Communication Corporation +000D92 (base 16) Arima Communication Corporation + 16, lane 658, Ying-Tao Road + Yingko Taipei County 23943 + TAIWAN, REPUBLIC OF CHINA + +00-0D-93 (hex) Apple Computer +000D93 (base 16) Apple Computer + 1 Infinite Loop + Cupertino CA 95014 + UNITED STATES + +00-0D-94 (hex) AFAR Communications,Inc +000D94 (base 16) AFAR Communications,Inc + 81 David Love Place + Suite A + Santa Barbara CA 93117 + UNITED STATES + +00-0D-95 (hex) Opti-cell, Inc. +000D95 (base 16) Opti-cell, Inc. + 100 High Tower Blvd., Suite 301 + Pittsburgh PA 15205 + UNITED STATES + +00-0D-96 (hex) Vtera Technology Inc. +000D96 (base 16) Vtera Technology Inc. + No 34, Industrial East. 4th Rd. + HsinChu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0D-97 (hex) Tropos Networks, Inc. +000D97 (base 16) Tropos Networks, Inc. + 1710 S. Amphlett Blvd, Suite 304 + San Mateo CA 94402 + UNITED STATES + +00-0D-98 (hex) S.W.A.C. Schmitt-Walter Automation Consult GmbH +000D98 (base 16) S.W.A.C. Schmitt-Walter Automation Consult GmbH + Oedenpullach 1 + Oberhaching Bavaria 82041 + GERMANY + +00-0D-99 (hex) Orbital Sciences Corp.; Launch Systems Group +000D99 (base 16) Orbital Sciences Corp.; Launch Systems Group + 3380 S. Price Rd. + Chandler, AZ 85248 + UNITED STATES + +00-0D-9A (hex) INFOTEC LTD +000D9A (base 16) INFOTEC LTD + The Maltings + Tamworth Road + Ashby-de-la-Zouch Leicestershire LE65 2PS + UNITED KINGDOM + +00-0D-9B (hex) Heraeus Electro-Nite International N.V. +000D9B (base 16) Heraeus Electro-Nite International N.V. + Centrum Zuid 1105 + Houthalen 3530 + BELGIUM + +00-0D-9C (hex) Elan GmbH & Co KG +000D9C (base 16) Elan GmbH & Co KG + Im Ostpark 2 + Wettenberg Hessen 35435 + GERMANY + +00-0D-9D (hex) Hewlett Packard +000D9D (base 16) Hewlett Packard + 20555 State Highway 249 South + mx070405 + Houston TX 77070 + UNITED STATES + +00-0D-9E (hex) TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd. +000D9E (base 16) TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd. + Yoshida 1221 + Ouragun Ohizumi Gunma 370-0523 + JAPAN + +00-0D-9F (hex) RF Micro Devices +000D9F (base 16) RF Micro Devices + 2191 Zanker Road + San Jose CA 95131 + UNITED STATES + +00-0D-A0 (hex) NEDAP N.V. +000DA0 (base 16) NEDAP N.V. + P.O.Box 103 + P.O.Box 6 + GROENLO GLD 7141 AC + NETHERLANDS + +00-0D-A1 (hex) MIRAE ITS Co.,LTD. +000DA1 (base 16) MIRAE ITS Co.,LTD. + 7F, ChangHyun B/D,960-1,HoGye1Dong + AnYang KyongiGiDo 431-840 + KOREA, REPUBLIC OF + +00-0D-A2 (hex) Infrant Technologies, Inc. +000DA2 (base 16) Infrant Technologies, Inc. + 48820 Kato Road + Ste 110B + Fremont CA 94538 + UNITED STATES + +00-0D-A3 (hex) Emerging Technologies Limited +000DA3 (base 16) Emerging Technologies Limited + Wong's Industrial Centre, 180 Wai Yip St + Kwun Tong, Kowloon + Nil + HONG KONG + +00-0D-A4 (hex) DOSCH & AMAND SYSTEMS AG +000DA4 (base 16) DOSCH & AMAND SYSTEMS AG + Scheinerstrasse 9 + Munich Bavaria 81679 + GERMANY + +00-0D-A5 (hex) Fabric7 Systems, Inc +000DA5 (base 16) Fabric7 Systems, Inc + 1300 Crittenden Lane + Suite 302 + Mountain View CA 94043 + UNITED STATES + +00-0D-A6 (hex) Universal Switching Corporation +000DA6 (base 16) Universal Switching Corporation + 7145 Woodley Ave + Van Nuys CA 91406 + UNITED STATES + +00-0D-A7 (hex) PRIVATE +000DA7 (base 16) + +00-0D-A8 (hex) Teletronics Technology Corporation +000DA8 (base 16) Teletronics Technology Corporation + 2525 Pearl Buck Road + Bristol Pennsylvania 19007 + UNITED STATES + +00-0D-A9 (hex) T.E.A.M. S.L. +000DA9 (base 16) T.E.A.M. S.L. + Parque Tecnologico Edificio 108 + ZAMUDIO Bizkaia 48170 + SPAIN + +00-0D-AA (hex) S.A.Tehnology co.,Ltd. +000DAA (base 16) S.A.Tehnology co.,Ltd. + 80-12 Yangjae 1 Dong + Seocho Gu + Seoul South Korea 137-890 + KOREA, REPUBLIC OF + +00-0D-AB (hex) Parker Hannifin GmbH Electromechanical Division Europe +000DAB (base 16) Parker Hannifin GmbH Electromechanical Division Europe + Robert-Bosch-Strasse 22 + Offenburg Baden Württemberg 77656 + GERMANY + +00-0D-AC (hex) Japan CBM Corporation +000DAC (base 16) Japan CBM Corporation + 5-68-10 Nakano, + Nakano-Ku Tokyo 164-0001 + JAPAN + +00-0D-AD (hex) Dataprobe Inc +000DAD (base 16) Dataprobe Inc + 1 Pearl Ct Unit B + Allendale NJ 07401 + UNITED STATES + +00-0D-AE (hex) SAMSUNG HEAVY INDUSTRIES CO., LTD. +000DAE (base 16) SAMSUNG HEAVY INDUSTRIES CO., LTD. + 493, Banweol-Ri, Taean-Eup + Hwaseong-City Kyeonggi-Do 445-973 + KOREA, REPUBLIC OF + +00-0D-AF (hex) Plexus Corp (UK) Ltd +000DAF (base 16) Plexus Corp (UK) Ltd + Pinnacle Hill + Kelso Roxburghshire TD5 8XX + UNITED KINGDOM + +00-0D-B0 (hex) Olym-tech Co.,Ltd. +000DB0 (base 16) Olym-tech Co.,Ltd. + Room 401/402,No.1,Songling Road,Hi-tech + Shenzhen Guangdong 518031 + CHINA + +00-0D-B1 (hex) Japan Network Service Co., Ltd. +000DB1 (base 16) Japan Network Service Co., Ltd. + Matoba Bldg. 6F, + 3-7-7 Irifune + Chuo-ku Tokyo 104-0042 + JAPAN + +00-0D-B2 (hex) Ammasso, Inc. +000DB2 (base 16) Ammasso, Inc. + 345 Summer Street + Boston MA 02210 + UNITED STATES + +00-0D-B3 (hex) SDO Communication Corperation +000DB3 (base 16) SDO Communication Corperation + 6F, No.112, Shin Min Street + Chung Ho City Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-0D-B4 (hex) NETASQ +000DB4 (base 16) NETASQ + 3 rue Archimede + Villeneuve d'Ascq nord 59650 + FRANCE + +00-0D-B5 (hex) GLOBALSAT TECHNOLOGY CORPORATION +000DB5 (base 16) GLOBALSAT TECHNOLOGY CORPORATION + Far East Century Park + Chung Ho City + Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-0D-B6 (hex) Teknovus, Inc. +000DB6 (base 16) Teknovus, Inc. + 1363 Redwood Way + Petaluma CA 94954 + UNITED STATES + +00-0D-B7 (hex) SANKO ELECTRIC CO,.LTD +000DB7 (base 16) SANKO ELECTRIC CO,.LTD + 7-23 Tamanoi-cho Atsuta-ku + Nagoya-shi Aichi 456-0025 + JAPAN + +00-0D-B8 (hex) SCHILLER AG +000DB8 (base 16) SCHILLER AG + Altgasse 68 + Baar Zug 6300 + SWITZERLAND + +00-0D-B9 (hex) PC Engines GmbH +000DB9 (base 16) PC Engines GmbH + Germaniastr. 68 + Zurich 8006 + SWITZERLAND + +00-0D-BA (hex) Océ Document Technologies GmbH +000DBA (base 16) Océ Document Technologies GmbH + Max-Stromeyer-Str. 116 + Konstanz 78467 + GERMANY + +00-0D-BB (hex) Nippon Dentsu Co.,Ltd. +000DBB (base 16) Nippon Dentsu Co.,Ltd. + 2-21-1,Isoji + Minato-Ku + Osaka 552-0003 + JAPAN + +00-0D-BC (hex) Cisco Systems +000DBC (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0D-BD (hex) Cisco Systems +000DBD (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0D-BE (hex) Bel Fuse Europe Ltd.,UK +000DBE (base 16) Bel Fuse Europe Ltd.,UK + 45/46 Riverside 2 + Medway City Estate + Rochester Kent ME2 4DP + UNITED KINGDOM + +00-0D-BF (hex) TekTone Sound & Signal Mfg., Inc. +000DBF (base 16) TekTone Sound & Signal Mfg., Inc. + 277 Industrial Park Rd. + Franklin NC 28734 + UNITED STATES + +00-0D-C0 (hex) Spagat AS +000DC0 (base 16) Spagat AS + Tonne Hutifeldtpl. 2 + Halden Ostfold 1767 + NORWAY + +00-0D-C1 (hex) SafeWeb Inc +000DC1 (base 16) SafeWeb Inc + 2200 Powell St. Ste 590 + Emeryville CA 94608 + UNITED STATES + +00-0D-C2 (hex) PRIVATE +000DC2 (base 16) + +00-0D-C3 (hex) First Communication, Inc. +000DC3 (base 16) First Communication, Inc. + 1F, No.36, Industry E. Rd. IV., + Science-based Industrial Park + Hsinchu + TAIWAN, REPUBLIC OF CHINA + +00-0D-C4 (hex) Emcore Corporation +000DC4 (base 16) Emcore Corporation + 1600 Eubank Blvd, SE + Albuquerque New Mexico 87123 + UNITED STATES + +00-0D-C5 (hex) EchoStar International Corporation +000DC5 (base 16) EchoStar International Corporation + Schuilenburglaan 5a + Almelo Overijssel 7604BJ + NETHERLANDS + +00-0D-C6 (hex) DigiRose Technology Co., Ltd. +000DC6 (base 16) DigiRose Technology Co., Ltd. + No. 1, Alley 20, Lane 26 Rueiguang Road, + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0D-C7 (hex) COSMIC ENGINEERING INC. +000DC7 (base 16) COSMIC ENGINEERING INC. + 1-3-5, Nishihirayama + Hino-shi TOKYO 191-0055 + JAPAN + +00-0D-C8 (hex) AirMagnet, Inc +000DC8 (base 16) AirMagnet, Inc + 1325 Chesapeake Terrace + Sunnyvale CA 94089 + UNITED STATES + +00-0D-C9 (hex) THALES Elektronik Systeme GmbH +000DC9 (base 16) THALES Elektronik Systeme GmbH + Fritz-Ludwig-Str. 1 + Koblenz 56070 + GERMANY + +00-0D-CA (hex) Tait Electronics +000DCA (base 16) Tait Electronics + 535 Wairakei Rd + PO Box 1645 + Christchurch Canterbury 8005 + NEW ZEALAND + +00-0D-CB (hex) Petcomkorea Co., Ltd. +000DCB (base 16) Petcomkorea Co., Ltd. + 5F,689-47,Geumjeong-dong,Gunpo-si,Kyungg + Kyunggi-do gunpo-si 435-050 + KOREA, REPUBLIC OF + +00-0D-CC (hex) NEOSMART Corp. +000DCC (base 16) NEOSMART Corp. + Yoon-B/D 4F, 475-31, Bangbae 2-dong + Seoul Seocho-gu 147-819 + KOREA, REPUBLIC OF + +00-0D-CD (hex) GROUPE TXCOM +000DCD (base 16) GROUPE TXCOM + ZI DU PETIT CLAMART + 10 AVENUE DESCARTES + LE PLESSIS ROBINSON HAUTS-DE-SEINE 92350 + FRANCE + +00-0D-CE (hex) Dynavac Technology Pte Ltd +000DCE (base 16) Dynavac Technology Pte Ltd + 30 Tuas Avenue 9 + 639183 + SINGAPORE + +00-0D-CF (hex) Cidra Corp. +000DCF (base 16) Cidra Corp. + 50 Barns Park North + Wallingford CT 06492 + UNITED STATES + +00-0D-D0 (hex) TetraTec Instruments GmbH +000DD0 (base 16) TetraTec Instruments GmbH + Gewerbestrasse 8 + Steinenbronn BW 71144 + GERMANY + +00-0D-D1 (hex) Stryker Corporation +000DD1 (base 16) Stryker Corporation + 4100 E Milham + Kalamazoo MI 49001 + UNITED STATES + +00-0D-D2 (hex) Simrad Optronics ASA +000DD2 (base 16) Simrad Optronics ASA + Ensjøveien 23B + PO Box 6114 Etterstad NO-0602 Oslo + NORWAY + +00-0D-D3 (hex) SAMWOO Telecommunication Co.,Ltd. +000DD3 (base 16) SAMWOO Telecommunication Co.,Ltd. + + 171, Dangjung-Dong, + Gunpo Kyoung-Gi 435-831 + KOREA, REPUBLIC OF + +00-0D-D4 (hex) Symantec Corporation +000DD4 (base 16) Symantec Corporation + 275 2nd Ave + Waltham MA 02541 + UNITED STATES + +00-0D-D5 (hex) O'RITE TECHNOLOGY CO.,LTD +000DD5 (base 16) O'RITE TECHNOLOGY CO.,LTD + 4f-8,NO 80,GUANGFU RD.SEC 2,SANCHUNG + TAIPEI COUNTY 241 + TAIWAN, REPUBLIC OF CHINA + +00-0D-D6 (hex) ITI LTD +000DD6 (base 16) ITI LTD + R&D,ITI Bangalore Complex + F-86 Bldg. + Dooravani Nagar, Bangalore Karnataka State 560016 + INDIA + +00-0D-D7 (hex) Bright +000DD7 (base 16) Bright + 1-12-44 Aobadai + Kashiwa-shi Chiba-ken 277-0055 + JAPAN + +00-0D-D8 (hex) BBN +000DD8 (base 16) BBN + 7F-3,NO.186, Jian Yi Rd ., Chung Ho City + Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-0D-D9 (hex) Anton Paar GmbH +000DD9 (base 16) Anton Paar GmbH + Anton-Paar-Strasse 20 + Graz 8054 + AUSTRIA + +00-0D-DA (hex) ALLIED TELESIS K.K. +000DDA (base 16) ALLIED TELESIS K.K. + PIAZZA TIRANA N. 24/4 B + MILANO 20147 + ITALY + +00-0D-DB (hex) AIRWAVE TECHNOLOGIES INC. +000DDB (base 16) AIRWAVE TECHNOLOGIES INC. + 3F,No.9,Industry E. 9th Road + Science-Based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0D-DC (hex) VAC +000DDC (base 16) VAC + 20F, N0. 456, Sec. 4, Hsin Yi Rd., + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-0D-DD (hex) PROFÝLO TELRA ELEKTRONÝK SANAYÝ VE TÝCARET A.Þ. +000DDD (base 16) PROFÝLO TELRA ELEKTRONÝK SANAYÝ VE TÝCARET A.Þ. + CEMAL SAHÝR SOKAK NO:26-28 + MECÝDÝYEKÖY + ÝSTANBUL TURKEY 34255 + TURKEY + +00-0D-DE (hex) Joyteck Co., Ltd. +000DDE (base 16) Joyteck Co., Ltd. + 19F, No.4, Sec. 3, Min Chuan East Rd. + Taipei 105 + TAIWAN, REPUBLIC OF CHINA + +00-0D-DF (hex) Japan Image & Network Inc. +000DDF (base 16) Japan Image & Network Inc. + 5-29-12 Shiba + Minato-ku Tokyo 108-0014 + JAPAN + +00-0D-E0 (hex) ICPDAS Co.,LTD +000DE0 (base 16) ICPDAS Co.,LTD + No. 111, Kuang-Fu N. Rd., Hsin-Chu Indu + HSINCHU 303 + TAIWAN, REPUBLIC OF CHINA + +00-0D-E1 (hex) Control Products, Inc. +000DE1 (base 16) Control Products, Inc. + 1724 Lake Drive West + Chanhassen MN 55317 + UNITED STATES + +00-0D-E2 (hex) CMZ Sistemi Elettronici +000DE2 (base 16) CMZ Sistemi Elettronici + Via dell'Artiginato, 21 + Vascon di Carbonera Treviso 31050 + ITALY + +00-0D-E3 (hex) AT Sweden AB +000DE3 (base 16) AT Sweden AB + P.O. Box 1166 + Isafjordsgatan 30B + Kista Stockholm SE-164 26 + SWEDEN + +00-0D-E4 (hex) DIGINICS, Inc. +000DE4 (base 16) DIGINICS, Inc. + 178-7 + Poi-dong + Kangnam-gu Seoul 135-961 + KOREA, REPUBLIC OF + +00-0D-E5 (hex) Samsung Thales +000DE5 (base 16) Samsung Thales + 259 Gongdan-Dong + Gumi-City Gyeongsangbuk-do 730-904 + KOREA, REPUBLIC OF + +00-0D-E6 (hex) YOUNGBO ENGINEERING CO.,LTD +000DE6 (base 16) YOUNGBO ENGINEERING CO.,LTD + Mt.22, Jaeunga-ri, Jigsan-Eup, + Cheonan-shi Chungcheongnam-do #330-810 + KOREA, REPUBLIC OF + +00-0D-E7 (hex) Snap-on OEM Group +000DE7 (base 16) Snap-on OEM Group + 2333 East Walton Blvd. + Auburn Hills MI 48326 + UNITED STATES + +00-0D-E8 (hex) Nasaco Electronics Pte. Ltd +000DE8 (base 16) Nasaco Electronics Pte. Ltd + Level 4, Nasaco Tech Centre + 49, Changi South Avenue 2 + 486056 + SINGAPORE + +00-0D-E9 (hex) Napatech Aps +000DE9 (base 16) Napatech Aps + Rundofrbivej 271, 1 + Naerum 2850 + DENMARK + +00-0D-EA (hex) Kingtel Telecommunication Corp. +000DEA (base 16) Kingtel Telecommunication Corp. + 147 Kang Ning St. + Hsi Chih City Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-0D-EB (hex) CompXs Limited +000DEB (base 16) CompXs Limited + Robert Denholm House + Nutfield + Redhill Surrey RH1 4HW + UNITED KINGDOM + +00-0D-EC (hex) Cisco Systems +000DEC (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0D-ED (hex) Cisco Systems +000DED (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0D-EE (hex) Andrew RF Power Amplifier Group +000DEE (base 16) Andrew RF Power Amplifier Group + 40 Technology Drive + Warren NJ 07059 + UNITED STATES + +00-0D-EF (hex) Soc. Coop. Bilanciai +000DEF (base 16) Soc. Coop. Bilanciai + via S.Ferrari 16 + Campogalliano Modena 41011 + ITALY + +00-0D-F0 (hex) QCOM TECHNOLOGY INC. +000DF0 (base 16) QCOM TECHNOLOGY INC. + 7F., NO 178, MING CHUAN E. RD., SEC. 3, + TAIPEI 105 + TAIWAN, REPUBLIC OF CHINA + +00-0D-F1 (hex) IONIX INC. +000DF1 (base 16) IONIX INC. + Ssangyong IT Twin Tower 604, 442-17, Sangdaewon-dong, Jungwon-gu, + Seongnam-si Gyeonggi-do 462-120 + KOREA, REPUBLIC OF + +00-0D-F2 (hex) PRIVATE +000DF2 (base 16) + +00-0D-F3 (hex) Asmax Solutions +000DF3 (base 16) Asmax Solutions + Tatarska 5 + Cracow 30-103 + POLAND + +00-0D-F4 (hex) Watertek Co. +000DF4 (base 16) Watertek Co. + Room 1006,Haitai building,north si Huan + Zhong Road,Haidian District + Beijing 100083 + CHINA + +00-0D-F5 (hex) Teletronics International Inc. +000DF5 (base 16) Teletronics International Inc. + 2 Choke Cherry Road + Suite #101 + Rockville MD 20850 + UNITED STATES + +00-0D-F6 (hex) Technology Thesaurus Corp. +000DF6 (base 16) Technology Thesaurus Corp. + NO. 6, East 4th St. KEPZ + KAOHSIUNG 806 + TAIWAN, REPUBLIC OF CHINA + +00-0D-F7 (hex) Space Dynamics Lab +000DF7 (base 16) Space Dynamics Lab + 1695 N. Research Park Way + North Logan UT 84341 + UNITED STATES + +00-0D-F8 (hex) ORGA Kartensysteme GmbH +000DF8 (base 16) ORGA Kartensysteme GmbH + Konrad-Zuse-Ring 1 + Flintbek Schleswig-Holstein 24220 + GERMANY + +00-0D-F9 (hex) NDS Limited +000DF9 (base 16) NDS Limited + One Heathrow Boulevard + 286 Bath Road + West Drayton Middlesex UB7 0DQ + UNITED KINGDOM + +00-0D-FA (hex) Micro Control Systems Ltd. +000DFA (base 16) Micro Control Systems Ltd. + 8-7 Sakurai + Saku-shi Nagano 385-0056 + JAPAN + +00-0D-FB (hex) Komax AG +000DFB (base 16) Komax AG + Industriestrasse 6 + Dierikon LU 6036 + SWITZERLAND + +00-0D-FC (hex) ITFOR Inc. +000DFC (base 16) ITFOR Inc. + Ichibancho Tokyu Bidg., + 21 Ichibanncyo,Chiyoda-ku + Tokyo 102-0082 + JAPAN + +00-0D-FD (hex) Huges Hi-Tech Inc., +000DFD (base 16) Huges Hi-Tech Inc., + 7F, 188, Sec.2, Chung Hsing Road. + Hsin Tien Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-0D-FE (hex) Hauppauge Computer Works, Inc. +000DFE (base 16) Hauppauge Computer Works, Inc. + 91 Cabot Court + Hauppauge New York 11788 + UNITED STATES + +00-0D-FF (hex) CHENMING MOLD INDUSTRY CORP. +000DFF (base 16) CHENMING MOLD INDUSTRY CORP. + 2F No. 26, Lane 513, Rei Kuang Rd. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0E-00 (hex) Atrie +000E00 (base 16) Atrie + 10th Floor, 14, Lane 609, Sec. 5, Chung Hsin Rd., San Chung City, + Taipei Hsien San Chung 241 + TAIWAN, REPUBLIC OF CHINA + +00-0E-01 (hex) ASIP Technologies Inc. +000E01 (base 16) ASIP Technologies Inc. + 10F-2, NO.322, Sec.1, Guangfu Rd., + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0E-02 (hex) Advantech AMT Inc. +000E02 (base 16) Advantech AMT Inc. + 657 Orly Ave. + Dorval Quebec H9P 1G1 + CANADA + +00-0E-03 (hex) Emulex +000E03 (base 16) Emulex + 3333 Susan Street + Costa Mesa CA 92626 + UNITED STATES + +00-0E-04 (hex) CMA/Microdialysis AB +000E04 (base 16) CMA/Microdialysis AB + Dalvägen 10 / Box 2 + Solna 171 18 + SWEDEN + +00-0E-05 (hex) WIRELESS MATRIX CORP. +000E05 (base 16) WIRELESS MATRIX CORP. + UNIT 1A-3751 NORTH FRASER WAY + BURNABY BC V5J 5G4 + CANADA + +00-0E-06 (hex) Team Simoco Ltd +000E06 (base 16) Team Simoco Ltd + Field House + Uttoxeter Old Road + Derby Derbyshire DE1 1NH + UNITED KINGDOM + +00-0E-07 (hex) Sony Ericsson Mobile Communications AB +000E07 (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund SE 221 88 Lund + SWEDEN + +00-0E-08 (hex) Cisco Linksys LLC +000E08 (base 16) Cisco Linksys LLC + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-0E-09 (hex) Shenzhen Coship Software Co.,LTD. +000E09 (base 16) Shenzhen Coship Software Co.,LTD. + 7/F,Block A,W2 Bldg,Hi-Tech Industrial Park,Shenzhen,China + Shenzhen Guangdong 518057 + CHINA + +00-0E-0A (hex) SAKUMA DESIGN OFFICE +000E0A (base 16) SAKUMA DESIGN OFFICE + 674-11 + KUKI-SHI SAITAMA 346-0029 + JAPAN + +00-0E-0B (hex) Netac Technology Co., Ltd. +000E0B (base 16) Netac Technology Co., Ltd. + 6F, Incubator Building, China Academy of Science &Tech Development, + No.1 High-tech South Street + ShenZhen GuangDong 518057 + CHINA + +00-0E-0C (hex) Intel Corporation +000E0C (base 16) Intel Corporation + 2111 NE 25th Avenue + MS: JF3-420 + Hillsboro OR 97124 + UNITED STATES + +00-0E-0D (hex) HESCH Schröder GmbH +000E0D (base 16) HESCH Schröder GmbH + Boschstrasse 8 + Neustadt Niedersachsen 31535 + GERMANY + +00-0E-0E (hex) ESA elettronica S.P.A. +000E0E (base 16) ESA elettronica S.P.A. + Via P. Masciadri 4/A + Mariano Comense CO 22066 + ITALY + +00-0E-0F (hex) ERMME +000E0F (base 16) ERMME + 9 rue Lavoisier + Vert-Le-Petit 91710 + FRANCE + +00-0E-10 (hex) PRIVATE +000E10 (base 16) + +00-0E-11 (hex) BDT Büro- und Datentechnik GmbH & Co. KG +000E11 (base 16) BDT Büro- und Datentechnik GmbH & Co. KG + Saline 29 + Rottweil Baden-Württemberg D-78628 + GERMANY + +00-0E-12 (hex) Adaptive Micro Systems Inc. +000E12 (base 16) Adaptive Micro Systems Inc. + 7840 North 86th St. + Milwaukee WI 53224 + UNITED STATES + +00-0E-13 (hex) Accu-Sort Systems inc. +000E13 (base 16) Accu-Sort Systems inc. + 511 School House Road + Telford PA 18969 + UNITED STATES + +00-0E-14 (hex) Visionary Solutions, Inc. +000E14 (base 16) Visionary Solutions, Inc. + 4193 Carpinteria Ave + Suite 11 + Carpinteria CA 93013 + UNITED STATES + +00-0E-15 (hex) Tadlys LTD +000E15 (base 16) Tadlys LTD + ISRAELI SHIMON 3 + RISHON lEZYYON ISRAEL 75654 + ISRAEL + +00-0E-16 (hex) SouthWing S.L. +000E16 (base 16) SouthWing S.L. + C/Avila, 48-50 + 3rd floor + Barcelona 08005 + SPAIN + +00-0E-17 (hex) PRIVATE +000E17 (base 16) + +00-0E-18 (hex) MyA Technology +000E18 (base 16) MyA Technology + 2100 Muirwood Way + San Jose CA 95132 + UNITED STATES + +00-0E-19 (hex) LogicaCMG Pty Ltd +000E19 (base 16) LogicaCMG Pty Ltd + 17-19 Orion Road + Lane Cove NSW 2066 + AUSTRALIA + +00-0E-1A (hex) JPS Communications +000E1A (base 16) JPS Communications + 5800 Departure Drive + Raleigh NC 27616 + UNITED STATES + +00-0E-1B (hex) IAV GmbH +000E1B (base 16) IAV GmbH + Carnotstr. 1 + Berlin 10587 + GERMANY + +00-0E-1C (hex) Hach Company +000E1C (base 16) Hach Company + 5600 Lindbergh Drive + Loveland CO 80538 + UNITED STATES + +00-0E-1D (hex) ARION Technology Inc. +000E1D (base 16) ARION Technology Inc. + 1042-1, Hogye-Dong, ARION Bldg. + Dongan-Gu + An-Yang City Gyeonggi-Do 431-080 + KOREA, REPUBLIC OF + +00-0E-1E (hex) PRIVATE +000E1E (base 16) + +00-0E-1F (hex) TCL Networks Equipment Co., Ltd. +000E1F (base 16) TCL Networks Equipment Co., Ltd. + No.5 Industrial Road,Shekou + ShenZhen GuangDong 518067 + CHINA + +00-0E-20 (hex) ACCESS Systems Americas, Inc. +000E20 (base 16) ACCESS Systems Americas, Inc. + 1188 East Arques Avenue + Sunnyvale CA 94085 + UNITED STATES + +00-0E-21 (hex) MTU Friedrichshafen GmbH +000E21 (base 16) MTU Friedrichshafen GmbH + Maybachplatz 1 + Friedrichshafen Baden Wuertemberg 88040 + GERMANY + +00-0E-22 (hex) PRIVATE +000E22 (base 16) + +00-0E-23 (hex) Incipient, Inc. +000E23 (base 16) Incipient, Inc. + 230 Third Ave. + 4th Floor + Waltham MA 02451 + UNITED STATES + +00-0E-24 (hex) Huwell Technology Inc. +000E24 (base 16) Huwell Technology Inc. + 1F 82-21, Majin Building + Nonhyun-dong, Gangnam-gu + Seoul 135-010 + KOREA, REPUBLIC OF + +00-0E-25 (hex) Hannae Technology Co., Ltd +000E25 (base 16) Hannae Technology Co., Ltd + 4F, Hyunjin Bldg., #798-30, Yeoksam-Dong + Kangnam-Ku + SEOUL 135-080 + KOREA, REPUBLIC OF + +00-0E-26 (hex) Gincom Technology Corp. +000E26 (base 16) Gincom Technology Corp. + 15F., No. 284, Sec.3, Sanmin Rd., Taoyuan City, + Taoyuan, 330 + TAIWAN, REPUBLIC OF CHINA + +00-0E-27 (hex) Crere Networks, Inc. +000E27 (base 16) Crere Networks, Inc. + Room 110 ETRI TBI, 52 Eoeun-dong + Yuseong-gu + Daejeon 305-333 + KOREA, REPUBLIC OF + +00-0E-28 (hex) Dynamic Ratings P/L +000E28 (base 16) Dynamic Ratings P/L + C/O Wilson Transformer Co. + Wilson Rd. (PO Box 5) + Glen Waverley Victoria 3150 + AUSTRALIA + +00-0E-29 (hex) Shester Communications Inc +000E29 (base 16) Shester Communications Inc + 159 S. Lincoln + Suite 221 + Spokane WA 99201 + UNITED STATES + +00-0E-2A (hex) PRIVATE +000E2A (base 16) + +00-0E-2B (hex) Safari Technologies +000E2B (base 16) Safari Technologies + 63855 M40 Hwy + Lawton MI 49065 + UNITED STATES + +00-0E-2C (hex) Netcodec co. +000E2C (base 16) Netcodec co. + 401 Daeion S/W Center, 48 Jangdong + Yusonggu + Daejon 305-715 + KOREA, REPUBLIC OF + +00-0E-2D (hex) Hyundai Digital Technology Co.,Ltd. +000E2D (base 16) Hyundai Digital Technology Co.,Ltd. + 223-22, Sangdaewon-1dong, Jungwon-gu + Seongnam-si Kyoungki-do 462-807 + KOREA, REPUBLIC OF + +00-0E-2E (hex) Edimax Technology Co., Ltd. +000E2E (base 16) Edimax Technology Co., Ltd. + 3, Wu-Chuan 3rd Road, + Wu-Ku Industrial Park, + Taipei Hsien, 248 + TAIWAN, REPUBLIC OF CHINA + +00-0E-2F (hex) Disetronic Medical Systems AG +000E2F (base 16) Disetronic Medical Systems AG + Kirchbergstrasse 190 + Burgdorf Bern 3401 + SWITZERLAND + +00-0E-30 (hex) AERAS Networks, Inc. +000E30 (base 16) AERAS Networks, Inc. + P.O. Box 7330 + Laguna Niguel CA 92607-7330 + UNITED STATES + +00-0E-31 (hex) Olympus Soft Imaging Solutions GmbH +000E31 (base 16) Olympus Soft Imaging Solutions GmbH + Johann-Krane-Weg 39 + Münster 48149 + GERMANY + +00-0E-32 (hex) Kontron Medical +000E32 (base 16) Kontron Medical + Reinacherstrasse 131 + Basel 4002 + SWITZERLAND + +00-0E-33 (hex) Shuko Electronics Co.,Ltd +000E33 (base 16) Shuko Electronics Co.,Ltd + TOHSHIN HIGASHI-IKEBUKURO Building 3F + 5-44-15,HIGASHI-IKEBUKURO,TOSHIMA-KU + TOKYO KANTOH 170-0063 + JAPAN + +00-0E-34 (hex) NexGen City, LP +000E34 (base 16) NexGen City, LP + 1680 Glenville + Suite 100 + Richardson Texas 75081 + UNITED STATES + +00-0E-35 (hex) Intel Corp +000E35 (base 16) Intel Corp + 2111 NE 25th Ave + JF3-420 + Hillsboro OR 97123 + UNITED STATES + +00-0E-36 (hex) HEINESYS, Inc. +000E36 (base 16) HEINESYS, Inc. + 3F, Sungkwang Bldg. 456-13, Sungnae-dong + Kangdong-gu + Seoul 134-848 + KOREA, REPUBLIC OF + +00-0E-37 (hex) Harms & Wende GmbH & Co.KG +000E37 (base 16) Harms & Wende GmbH & Co.KG + Grossmoorkehre 9 + Hamburg D-21079 + GERMANY + +00-0E-38 (hex) Cisco Systems +000E38 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0E-39 (hex) Cisco Systems +000E39 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0E-3A (hex) Cirrus Logic +000E3A (base 16) Cirrus Logic + 2901 Via Fortuna + Austin TX 78746 + UNITED STATES + +00-0E-3B (hex) Hawking Technologies, Inc. +000E3B (base 16) Hawking Technologies, Inc. + 15281A Barranca Parkway + Irvine CA 92618 + UNITED STATES + +00-0E-3C (hex) Transact Technologies Inc +000E3C (base 16) Transact Technologies Inc + 20 Bomax Drive + Ithaca New York 14850 + UNITED STATES + +00-0E-3D (hex) Televic N.V. +000E3D (base 16) Televic N.V. + Leo Bekaertlaan 1 + Izegem 8870 + BELGIUM + +00-0E-3E (hex) Sun Optronics Inc +000E3E (base 16) Sun Optronics Inc + 4-38-4 Fuchinobe-honchou + Sagamihara Kanagawa 229-0002 + JAPAN + +00-0E-3F (hex) Soronti, Inc. +000E3F (base 16) Soronti, Inc. + 12159 Business Park Dr, Suite 140 + Draper Utah 84020 + UNITED STATES + +00-0E-40 (hex) Nortel Networks +000E40 (base 16) Nortel Networks + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-0E-41 (hex) NIHON MECHATRONICS CO.,LTD. +000E41 (base 16) NIHON MECHATRONICS CO.,LTD. + 9-6 SHIOMIDAI, MIYAMAE-KU + KAWASAKI-SHI KANAGAWA-KEN 216-0013 + JAPAN + +00-0E-42 (hex) Motic Incoporation Ltd. +000E42 (base 16) Motic Incoporation Ltd. + Room 2907-8, Windsor House + 311 Gloucester Road, Causeway Bay + Hong Kong + CHINA + +00-0E-43 (hex) G-Tek Electronics Sdn. Bhd. +000E43 (base 16) G-Tek Electronics Sdn. Bhd. + 2493 Mukim 1, Lorong Perusahaan Lapan + Kawasan Perindustrian Perai + Perai Penang 13600 + MALAYSIA + +00-0E-44 (hex) Digital 5, Inc. +000E44 (base 16) Digital 5, Inc. + 101 Grovers Mill Rd. + Suite 200 + Lawrenceville NJ 08648 + UNITED STATES + +00-0E-45 (hex) Beijing Newtry Electronic Technology Ltd +000E45 (base 16) Beijing Newtry Electronic Technology Ltd + PO Box 95, No. 1 Bei Sha Tan, + Chao Yang Qu + Beijing 10083 + CHINA + +00-0E-46 (hex) Niigata Seimitsu Co.,Ltd. +000E46 (base 16) Niigata Seimitsu Co.,Ltd. + 3335-2, Shimonaka, Sanwa-mura + Nakakubiki-gun Niigata 943-0222 + JAPAN + +00-0E-47 (hex) NCI System Co.,Ltd. +000E47 (base 16) NCI System Co.,Ltd. + #206, Kayang Techno-Town, 1487, Kayang 3 dong, Kangseo-Ku, Seoul, Korea + Seoul 157-810 + KOREA, REPUBLIC OF + +00-0E-48 (hex) Lipman TransAction Solutions +000E48 (base 16) Lipman TransAction Solutions + 11 Haamal St. + Rosh-Haayin 48092 + ISRAEL + +00-0E-49 (hex) Forsway Scandinavia AB +000E49 (base 16) Forsway Scandinavia AB + Kaplansgatan 16B + Skövde 541 34 + SWEDEN + +00-0E-4A (hex) Changchun Huayu WEBPAD Co.,LTD +000E4A (base 16) Changchun Huayu WEBPAD Co.,LTD + 4370 Gaoxin Road, High-Tech + Development Area + Changchun Jilin 130012 + CHINA + +00-0E-4B (hex) atrium c and i +000E4B (base 16) atrium c and i + 124-4, Ojeon-dong, + Uiwang-city Kyunggi-Do 437-819 + KOREA, REPUBLIC OF + +00-0E-4C (hex) Bermai Inc. +000E4C (base 16) Bermai Inc. + 410 Cambridge Ave + 2nd Floor + Palo Alto CA 94306 + UNITED STATES + +00-0E-4D (hex) Numesa Inc. +000E4D (base 16) Numesa Inc. + 4444 Westgrove Suite 300 + Addison TX 75001 + UNITED STATES + +00-0E-4E (hex) Waveplus Technology Co., Ltd. +000E4E (base 16) Waveplus Technology Co., Ltd. + 347 HsinHu 2nd Rd., NeiHu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0E-4F (hex) Trajet GmbH +000E4F (base 16) Trajet GmbH + Rebenring 33 + Braunschweig Nds. 38106 + GERMANY + +00-0E-50 (hex) Thomson Telecom Belgium +000E50 (base 16) Thomson Telecom Belgium + Prins Boudewijnlaan 47 + Edegem Antwerp B-2650 + BELGIUM + +00-0E-51 (hex) tecna elettronica srl +000E51 (base 16) tecna elettronica srl + via miglioli 30 + castel san pietro terme bologna 40024 + ITALY + +00-0E-52 (hex) Optium Corporation +000E52 (base 16) Optium Corporation + 500 Horizon Dr + Suite 505 + Chalfont PA 18914 + UNITED STATES + +00-0E-53 (hex) AV TECH CORPORATION +000E53 (base 16) AV TECH CORPORATION + 10F,E Building,No.19-11 San Chung Rd.,NanKang + Taipei 115 + TAIWAN, REPUBLIC OF CHINA + +00-0E-54 (hex) AlphaCell Wireless Ltd. +000E54 (base 16) AlphaCell Wireless Ltd. + 22 Zarhin street + Raanana 43662 + ISRAEL + +00-0E-55 (hex) AUVITRAN +000E55 (base 16) AUVITRAN + 7c chemin des près + MEYLAN 38410 + FRANCE + +00-0E-56 (hex) 4G Systems GmbH +000E56 (base 16) 4G Systems GmbH + Am Sandtorkai 71 + Hamburg 20457 + GERMANY + +00-0E-57 (hex) Iworld Networking, Inc. +000E57 (base 16) Iworld Networking, Inc. + 125 Hanju Bldg, Nonhyun-Dong + Kang-Nam Gu + Seoul 135010 + KOREA, REPUBLIC OF + +00-0E-58 (hex) Sonos, Inc. +000E58 (base 16) Sonos, Inc. + 223 E. De La Guerra St. + Santa Barbara CA 93101 + UNITED STATES + +00-0E-59 (hex) SAGEM SA +000E59 (base 16) SAGEM SA + 2, rue du petit Albi + CERGY SAINT CHRISTOPHE val d'Oise 95800 + FRANCE + +00-0E-5A (hex) TELEFIELD inc. +000E5A (base 16) TELEFIELD inc. + 3F, Kumbo Bldg, 2-9, Seokchon-Dong + Songpa-Gu + Seoul 138-190 + KOREA, REPUBLIC OF + +00-0E-5B (hex) ParkerVision - Direct2Data +000E5B (base 16) ParkerVision - Direct2Data + 9432 Baymeadows Way + Suite 150 + Jacksonville FL 32246 + UNITED STATES + +00-0E-5C (hex) Motorola BCS +000E5C (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-0E-5D (hex) Triple Play Technologies A/S +000E5D (base 16) Triple Play Technologies A/S + Herstedvang 8 + Albertslund DK-2620 + DENMARK + +00-0E-5E (hex) Raisecom Technology +000E5E (base 16) Raisecom Technology + 2 Floor, South Building of Rainbow Plaza + No. 11 Shangdi Information Road + Haidian District Beijing 100085 + CHINA + +00-0E-5F (hex) activ-net GmbH & Co. KG +000E5F (base 16) activ-net GmbH & Co. KG + Konrad-Zuse-Str. 4 + Bochum 44801 + GERMANY + +00-0E-60 (hex) 360SUN Digital Broadband Corporation +000E60 (base 16) 360SUN Digital Broadband Corporation + 2F-2, No.2, Jianba Rd., + Chung Ho Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-0E-61 (hex) MICROTROL LIMITED +000E61 (base 16) MICROTROL LIMITED + 16 ELGAR BUSINESS CENTRE + MOSELEY ROAD + HALLOW WORCESTER WR2 6NJ + UNITED KINGDOM + +00-0E-62 (hex) Nortel Networks +000E62 (base 16) Nortel Networks + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-0E-63 (hex) Lemke Diagnostics GmbH +000E63 (base 16) Lemke Diagnostics GmbH + Radeburger Str. 47 + Volkersdorf Saxony 01468 + GERMANY + +00-0E-64 (hex) Elphel, Inc +000E64 (base 16) Elphel, Inc + 3200 S. Elpmer St. + Magna UT 84044 + UNITED STATES + +00-0E-65 (hex) TransCore +000E65 (base 16) TransCore + 8600 Jefferson St NE + Albuquerque NM 87113 + UNITED STATES + +00-0E-66 (hex) Hitachi Advanced Digital, Inc. +000E66 (base 16) Hitachi Advanced Digital, Inc. + 292, Yoshida-cho, Totsuka-ku + Yokohama Kanagawa 244-0817 + JAPAN + +00-0E-67 (hex) Eltis Microelectronics Ltd. +000E67 (base 16) Eltis Microelectronics Ltd. + Unit 902B, 9/F., Sunbeam Centre + 27, Shing Yip Street + Kwun Tong Kowloon + HONG KONG + +00-0E-68 (hex) E-TOP Network Technology Inc. +000E68 (base 16) E-TOP Network Technology Inc. + No. 7, Shin Shin Rd., + Tainan 702 + TAIWAN, REPUBLIC OF CHINA + +00-0E-69 (hex) China Electric Power Research Institute +000E69 (base 16) China Electric Power Research Institute + No.15 Xiaoying East Road,Qinghe,Beijing,China + Beijing 100085 + CHINA + +00-0E-6A (hex) 3Com Ltd +000E6A (base 16) 3Com Ltd + Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts HP2 4NW + UNITED KINGDOM + +00-0E-6B (hex) Janitza electronics GmbH +000E6B (base 16) Janitza electronics GmbH + Vor dem Polstück 1 + Lahnau Hessen 35633 + GERMANY + +00-0E-6C (hex) Device Drivers Limited +000E6C (base 16) Device Drivers Limited + 1-5-1-103 + Wakamatsu-cho + Fuchu-shi Tokyo 1830005 + JAPAN + +00-0E-6D (hex) Murata Manufacturing Co., Ltd. +000E6D (base 16) Murata Manufacturing Co., Ltd. + 2288, Oaza-Ohshinohara, Yasu-cho, + Yasu-gun Shiga 520-2393 + JAPAN + +00-0E-6E (hex) MICRELEC ELECTRONICS S.A +000E6E (base 16) MICRELEC ELECTRONICS S.A + 16 ISMINIS STR. + ATHENS AEGALEO 12241 + GREECE + +00-0E-6F (hex) IRIS Corporation Berhad +000E6F (base 16) IRIS Corporation Berhad + IRIS Smart Technology Complex + Technology Park Malaysia, Bukit Jalil + Kuala Lumpur WP 57000 + MALAYSIA + +00-0E-70 (hex) in2 Networks +000E70 (base 16) in2 Networks + 320 W 200 S + Suite #380 + SLC UT 84101 + UNITED STATES + +00-0E-71 (hex) Gemstar Technology Development Ltd. +000E71 (base 16) Gemstar Technology Development Ltd. + Unit 201, Stulex house, 698 prince edward road east, san po kong, Kolwoon + Hong Kong 852 + HONG KONG + +00-0E-72 (hex) CTS electronics +000E72 (base 16) CTS electronics + Corso Vercelli 332 + Ivrea Torino 10015 + ITALY + +00-0E-73 (hex) Tpack A/S +000E73 (base 16) Tpack A/S + Lautrupbjerg 7 - 11 + DK 2750 Ballerup DK 2750 + DENMARK + +00-0E-74 (hex) Solar Telecom. Tech +000E74 (base 16) Solar Telecom. Tech + B B/D, 4F, Samho Venture Tower + #275-6, Yangjae-Dong, Secho-Gu + Seoul 137-941 + KOREA, REPUBLIC OF + +00-0E-75 (hex) New York Air Brake Corp. +000E75 (base 16) New York Air Brake Corp. + 748 Starbuck Ave. + Watertown NY 13601 + UNITED STATES + +00-0E-76 (hex) GEMSOC INNOVISION INC. +000E76 (base 16) GEMSOC INNOVISION INC. + 9F,No.516,Sec,1Neihu Rd., + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0E-77 (hex) Decru, Inc. +000E77 (base 16) Decru, Inc. + 275 Shoreline Dr + Suite 450 + Redwood City CA 94065 + UNITED STATES + +00-0E-78 (hex) Amtelco +000E78 (base 16) Amtelco + 4800 Curtin Drive + McFarland WI 53558 + UNITED STATES + +00-0E-79 (hex) Ample Communications Inc. +000E79 (base 16) Ample Communications Inc. + 4034 Clipper Ct. + Fremont CA 94538 + UNITED STATES + +00-0E-7A (hex) GemWon Communications Co., Ltd. +000E7A (base 16) GemWon Communications Co., Ltd. + 3FL.,NO.32,Lane 135,Shianjeng 9th Rd.,Jubei City + Hsinchu 302 + TAIWAN, REPUBLIC OF CHINA + +00-0E-7B (hex) Toshiba +000E7B (base 16) Toshiba + 2-9, Suehiro-Cho + Ome Tokyo 1988710 + JAPAN + +00-0E-7C (hex) Televes S.A. +000E7C (base 16) Televes S.A. + Rua Benefica Conxo 17 + Santiago de Compostela Coruña 15706 + SPAIN + +00-0E-7D (hex) Electronics Line 3000 Ltd. +000E7D (base 16) Electronics Line 3000 Ltd. + 2 Granit St. + Petah Tikva Kiryar Arie 449130 + ISRAEL + +00-0E-7E (hex) Comprog Oy +000E7E (base 16) Comprog Oy + P.O.BOX 219 + (street) Isokatu 21 + Rauma Satakunta FIN-26100 + FINLAND + +00-0E-7F (hex) Hewlett Packard +000E7F (base 16) Hewlett Packard + 20555 State Highway 249 South + MS070405 + Houston TX 77070 + UNITED STATES + +00-0E-80 (hex) Thomson Technology Inc +000E80 (base 16) Thomson Technology Inc + 9087A 198th ST + Surrey BC V1M-3B1 + CANADA + +00-0E-81 (hex) Devicescape Software, Inc. +000E81 (base 16) Devicescape Software, Inc. + 1000 Marina Blvd + Suite 400 + Brisbane CA 94005 + UNITED STATES + +00-0E-82 (hex) Commtech Wireless +000E82 (base 16) Commtech Wireless + 115/396 Scarborough Beach Rd + Osborne Park + Perth WA 6017 + AUSTRALIA + +00-0E-83 (hex) Cisco Systems +000E83 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0E-84 (hex) Cisco Systems +000E84 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0E-85 (hex) Catalyst Enterprises, Inc. +000E85 (base 16) Catalyst Enterprises, Inc. + 3385 Scott Blvd + Santa Clara CA 95054 + UNITED STATES + +00-0E-86 (hex) Alcatel North America +000E86 (base 16) Alcatel North America + 2301 Sugar Bush Road + Raleigh NC 27612 + UNITED STATES + +00-0E-87 (hex) adp Gauselmann GmbH +000E87 (base 16) adp Gauselmann GmbH + Boschstr. 8 + Luebbecke NRW 32312 + GERMANY + +00-0E-88 (hex) VIDEOTRON CORP. +000E88 (base 16) VIDEOTRON CORP. + 17-16,2-CHOME + HACHIOJI TOKYO 193-0835 + JAPAN + +00-0E-89 (hex) CLEMATIC +000E89 (base 16) CLEMATIC + 101 rue Pierre SEMARD + CHATILLON R.P. 92320 + FRANCE + +00-0E-8A (hex) Avara Technologies Pty. Ltd. +000E8A (base 16) Avara Technologies Pty. Ltd. + 9 Business Park Drive + Notting Hill Victoria 3168 + AUSTRALIA + +00-0E-8B (hex) Astarte Technology Co, Ltd. +000E8B (base 16) Astarte Technology Co, Ltd. + 11F, No. 166 Dah-Yeh Rd. + Peitou, Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-0E-8C (hex) Siemens AG A&D ET +000E8C (base 16) Siemens AG A&D ET + Siemensstraße 10 + Regensburg 93055 + GERMANY + +00-0E-8D (hex) Systems in Progress Holding GmbH +000E8D (base 16) Systems in Progress Holding GmbH + Exerzierplatzstrasse 85 + Graz Styria 8051 + AUSTRIA + +00-0E-8E (hex) SparkLAN Communications, Inc. +000E8E (base 16) SparkLAN Communications, Inc. + 3Fl . , No. 246, Sec. 1, Neihu Road., Neihu Chiu, + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0E-8F (hex) Sercomm Corp. +000E8F (base 16) Sercomm Corp. + 3F,No.81,Yu-Yih Rd.,Chu-Nan Chen + Miao-Lih Hsuan 350 + TAIWAN, REPUBLIC OF CHINA + +00-0E-90 (hex) PONICO CORP. +000E90 (base 16) PONICO CORP. + 602, Ace Twin Tower 1, 212-1 Guro-dong + Gurogu Seoul 152-766 + KOREA, REPUBLIC OF + +00-0E-91 (hex) Navico +000E91 (base 16) Navico + 12000 E Skelly Drive + Tulsa OK 74128-2486 + UNITED STATES + +00-0E-92 (hex) Millinet Co., Ltd. +000E92 (base 16) Millinet Co., Ltd. + 2F, West Building, IT Venture Tower, 78, Garakbon-dong + Songpa-gu Seoul 138-169 + KOREA, REPUBLIC OF + +00-0E-93 (hex) Milénio 3 Sistemas Electrónicos, Lda. +000E93 (base 16) Milénio 3 Sistemas Electrónicos, Lda. + Edifício Via Norte, R. Espido 164C S403 + Maia Minho 4470-177 + PORTUGAL + +00-0E-94 (hex) Maas International BV +000E94 (base 16) Maas International BV + Science Park Eindhoven 5051 + Son Noord Brabant NL-5692 EB + NETHERLANDS + +00-0E-95 (hex) Fujiya Denki Seisakusho Co.,Ltd. +000E95 (base 16) Fujiya Denki Seisakusho Co.,Ltd. + 8F Fukushima BLDG. 6-25-11,Nishi-Gotanda + Shinagawa-Ku Tokyo 141-0031 + JAPAN + +00-0E-96 (hex) Cubic Defense Applications, Inc. +000E96 (base 16) Cubic Defense Applications, Inc. + P.O. Box 85587 + 9333 Balboa Avenue + San Diego CA 92186-5587 + UNITED STATES + +00-0E-97 (hex) Ultracker Technology CO., Inc +000E97 (base 16) Ultracker Technology CO., Inc + 14F-1, No. 888, Jingguo Road, Taoyuan City, + Taoyuan 330 + TAIWAN, REPUBLIC OF CHINA + +00-0E-98 (hex) Vitec CC, INC. +000E98 (base 16) Vitec CC, INC. + dba ClearCom Communications + 850 Marina Village Parkway + Alameda California 94501 + UNITED STATES + +00-0E-99 (hex) Spectrum Digital, Inc +000E99 (base 16) Spectrum Digital, Inc + 12502 Exchange Drive, Suite 440 + Stafford TX 77477 + UNITED STATES + +00-0E-9A (hex) BOE TECHNOLOGY GROUP CO.,LTD +000E9A (base 16) BOE TECHNOLOGY GROUP CO.,LTD + No.10 Jiuxianqiao Road,Chaoyang District,Beijing,PRC + Beijing 100016 + CHINA + +00-0E-9B (hex) Ambit Microsystems Corporation +000E9B (base 16) Ambit Microsystems Corporation + 5F-1, 5 Hsin-An Rd. Science-Based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0E-9C (hex) Pemstar +000E9C (base 16) Pemstar + 3535 Technology Drive + Rochester MN 55901 + UNITED STATES + +00-0E-9D (hex) Video Networks Ltd +000E9D (base 16) Video Networks Ltd + 205 Holland Park Ave + London W11 4XB + UNITED KINGDOM + +00-0E-9E (hex) Topfield Co., Ltd +000E9E (base 16) Topfield Co., Ltd + 4th floor, Deoksan Bldg 260-4, Seohyun-dong + Seongnam Bundang-Ku 463-824 + KOREA, REPUBLIC OF + +00-0E-9F (hex) TEMIC SDS GmbH +000E9F (base 16) TEMIC SDS GmbH + Soeflinger Strasse 100 + Ulm 89077 + GERMANY + +00-0E-A0 (hex) NetKlass Technology Inc. +000EA0 (base 16) NetKlass Technology Inc. + 2F-1, No.30,Tai Yuen Street, + Chupei City, Hsinchu, 302 + TAIWAN, REPUBLIC OF CHINA + +00-0E-A1 (hex) Formosa Teletek Corporation +000EA1 (base 16) Formosa Teletek Corporation + 358,Huaya 2nd Rd. + Gueishan Shiang + Taoyuan 333 + TAIWAN, REPUBLIC OF CHINA + +00-0E-A2 (hex) CyberGuard Corporation +000EA2 (base 16) CyberGuard Corporation + 507 Airport Blvd + Suite 105 + Morrisville NC 27560-8200 + UNITED STATES + +00-0E-A3 (hex) CNCR-IT CO.,LTD,HangZhou P.R.CHINA +000EA3 (base 16) CNCR-IT CO.,LTD,HangZhou P.R.CHINA + XuanTan road NO1.department room504, + HangZhou ZheJiang 310003 + CHINA + +00-0E-A4 (hex) Certance Inc. +000EA4 (base 16) Certance Inc. + 1650 Sunflower Ave. + Costa Mesa CA 92626-1513 + UNITED STATES + +00-0E-A5 (hex) BLIP Systems +000EA5 (base 16) BLIP Systems + Haekken 2 + Vodskov Vester Hassing 9310 + DENMARK + +00-0E-A6 (hex) ASUSTEK COMPUTER INC. +000EA6 (base 16) ASUSTEK COMPUTER INC. + No. 150, Li-Te Rd.,Peitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-0E-A7 (hex) Endace Technology +000EA7 (base 16) Endace Technology + 85 Alexandra Street + Hamilton 3204 + NEW ZEALAND + +00-0E-A8 (hex) United Technologists Europe Limited +000EA8 (base 16) United Technologists Europe Limited + UTEL Laboratories, Wolves Farm Lane + Ipswich Road + Hadleigh Suffolk IP7 6BH + UNITED KINGDOM + +00-0E-A9 (hex) Shanghai Xun Shi Communications Equipment Ltd. Co. +000EA9 (base 16) Shanghai Xun Shi Communications Equipment Ltd. Co. + Hi-Tech King World, Unit C603 + #666 Beijing Road (E) + Shanghai 200001 + CHINA + +00-0E-AA (hex) Scalent Systems, Inc. +000EAA (base 16) Scalent Systems, Inc. + 490 S. California Ave + Palo Alto CA 94306 + UNITED STATES + +00-0E-AB (hex) Cray Inc +000EAB (base 16) Cray Inc + 411 First Ave S Suite 600 + Seattle WA 98104 + CANADA + +00-0E-AC (hex) MINTRON ENTERPRISE CO., LTD. +000EAC (base 16) MINTRON ENTERPRISE CO., LTD. + NO.3,Wu-Kung 5Rd., Wu-Ku Ind Park + Taipei County 248 + TAIWAN, REPUBLIC OF CHINA + +00-0E-AD (hex) Metanoia Technologies, Inc. +000EAD (base 16) Metanoia Technologies, Inc. + 5918 W. courtyard Dr. + Suite 330 + Austin TX 78730 + UNITED STATES + +00-0E-AE (hex) GAWELL TECHNOLOGIES CORP. +000EAE (base 16) GAWELL TECHNOLOGIES CORP. + 2F,NO.102,SEC.3,JUNG SHAN RD, + JUNG HO CITY, TAIPEI HSIEN 235 + TAIWAN, REPUBLIC OF CHINA + +00-0E-AF (hex) CASTEL +000EAF (base 16) CASTEL + ZI Saint Lambert des Levées + SAUMUR Maine et Loire 49412 + FRANCE + +00-0E-B0 (hex) Solutions Radio BV +000EB0 (base 16) Solutions Radio BV + Prinsegracht 82 + The Hague ZH 2512 GC + NETHERLANDS + +00-0E-B1 (hex) Newcotech,Ltd +000EB1 (base 16) Newcotech,Ltd + Anyang Megavally 715-3 + Kwanyang-Dong, Dongan-Gu, + Anyang City Gueonggi-Do 431-160 + KOREA, REPUBLIC OF + +00-0E-B2 (hex) Micro-Research Finland Oy +000EB2 (base 16) Micro-Research Finland Oy + Välitalontie 83 C + Helsinki FIN-00660 + FINLAND + +00-0E-B3 (hex) LeftHand Networks +000EB3 (base 16) LeftHand Networks + 1688 Conestoga Street + Boulder CO 80027 + UNITED STATES + +00-0E-B4 (hex) GUANGZHOU GAOKE COMMUNICATIONS TECHNOLOGY CO.LTD. +000EB4 (base 16) GUANGZHOU GAOKE COMMUNICATIONS TECHNOLOGY CO.LTD. + AVE. 398 ZHONGSHAN + GUANGZHOU GUANGDONG 510660 + CHINA + +00-0E-B5 (hex) Ecastle Electronics Co., Ltd. +000EB5 (base 16) Ecastle Electronics Co., Ltd. + #502, Namjang B/D, Bangbae-dong, + Seocho-ku, + Seoul 137-818 + KOREA, REPUBLIC OF + +00-0E-B6 (hex) Riverbed Technology, Inc. +000EB6 (base 16) Riverbed Technology, Inc. + 501 Second Street + Suite 410 + San Francisco CA 94107 + UNITED STATES + +00-0E-B7 (hex) Knovative, Inc. +000EB7 (base 16) Knovative, Inc. + 11245 West Bernardo Court + Suite 100 + San Diego CA 92127 + UNITED STATES + +00-0E-B8 (hex) Iiga co.,Ltd +000EB8 (base 16) Iiga co.,Ltd + 3F TKBldg. 3-5-2 Sotokanda + Chiyoda-Ku Tokyo 101-0021 + JAPAN + +00-0E-B9 (hex) HASHIMOTO Electronics Industry Co.,Ltd. +000EB9 (base 16) HASHIMOTO Electronics Industry Co.,Ltd. + 3866-12 Takasu-cho + Matsusaka Mie 515-0104 + JAPAN + +00-0E-BA (hex) HANMI SEMICONDUCTOR CO., LTD. +000EBA (base 16) HANMI SEMICONDUCTOR CO., LTD. + #532-2, Gajwa-Dong, Seo-Ku, + Incheon 404 250 + KOREA, REPUBLIC OF + +00-0E-BB (hex) Everbee Networks +000EBB (base 16) Everbee Networks + 41, Boulevard des Capucines + Paris 75002 + FRANCE + +00-0E-BC (hex) Paragon Fidelity GmbH +000EBC (base 16) Paragon Fidelity GmbH + Schwadermühlstrasse 4a + Cadolzburg 90556 + GERMANY + +00-0E-BD (hex) Burdick, a Quinton Compny +000EBD (base 16) Burdick, a Quinton Compny + 500 Burdick Parkway + Deerfield WI 53531 + UNITED STATES + +00-0E-BE (hex) B&B Electronics Manufacturing Co. +000EBE (base 16) B&B Electronics Manufacturing Co. + 707 Dayton Road + P.O. Box 1040 + Ottawa Ilinois 61350 + UNITED STATES + +00-0E-BF (hex) Remsdaq Limited +000EBF (base 16) Remsdaq Limited + Parkway + Deeside Industrial Park + Deeside Flintshire CH5 2NL + UNITED KINGDOM + +00-0E-C0 (hex) Nortel Networks +000EC0 (base 16) Nortel Networks + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-0E-C1 (hex) MYNAH Technologies +000EC1 (base 16) MYNAH Technologies + 504 Trade Center Blvd + Chesterfield MO 63005 + UNITED STATES + +00-0E-C2 (hex) Lowrance Electronics, Inc. +000EC2 (base 16) Lowrance Electronics, Inc. + 12000 E. Skelly Drive + Tulsa OK 74128 + UNITED STATES + +00-0E-C3 (hex) Logic Controls, Inc. +000EC3 (base 16) Logic Controls, Inc. + 355 Denton Avenue + New Hyde Park NY 11040 + UNITED STATES + +00-0E-C4 (hex) Iskra Transmission d.d. +000EC4 (base 16) Iskra Transmission d.d. + Stegne 11 + Ljubljana 1000 + SLOVENIA + +00-0E-C5 (hex) Digital Multitools Inc +000EC5 (base 16) Digital Multitools Inc + 9005 Leslie Street Unit 205 + Richmond Hill Ontario L4B 1G7 + CANADA + +00-0E-C6 (hex) ASIX ELECTRONICS CORP. +000EC6 (base 16) ASIX ELECTRONICS CORP. + 4F, NO.8, HSIN ANN RD., + SCIENCE-BASED INDUSTRIAL PARK, + HSINCHU 300 + TAIWAN, REPUBLIC OF CHINA + +00-0E-C7 (hex) Motorola Korea +000EC7 (base 16) Motorola Korea + Hibrand B/D 17F SW Team Motorola Korea + Yangjaedong Seocho + KOREA, REPUBLIC OF + +00-0E-C8 (hex) Zoran Corporation +000EC8 (base 16) Zoran Corporation + 1390 Kifer Rd. + Sunnyvale CA 94086 + UNITED STATES + +00-0E-C9 (hex) YOKO Technology Corp. +000EC9 (base 16) YOKO Technology Corp. + 6F, No.10, Lane16, Sec2, Sze-Chuan Rd., Pan- + Chiao City, + Taipei 886 + TAIWAN, REPUBLIC OF CHINA + +00-0E-CA (hex) WTSS Inc +000ECA (base 16) WTSS Inc + 5999 Avenida Encinas + Suite 150 + Carlsbad CA 92008 + UNITED STATES + +00-0E-CB (hex) VineSys Technology +000ECB (base 16) VineSys Technology + 3350 Scott Blvd. building 15-03 + Santa Clara CA 95054 + UNITED STATES + +00-0E-CC (hex) Tableau, LLC +000ECC (base 16) Tableau, LLC + N8 W22195 Johnson Drive, Suite 100 + Waukesha WI 53186 + UNITED STATES + +00-0E-CD (hex) SKOV A/S +000ECD (base 16) SKOV A/S + Hedelund 4 + Glyngoere + Roslev DK-7870 + DENMARK + +00-0E-CE (hex) S.I.T.T.I. S.p.A. +000ECE (base 16) S.I.T.T.I. S.p.A. + Via Cadorna 69 + Vimodrone Milan I-20090 + ITALY + +00-0E-CF (hex) PROFIBUS Nutzerorganisation e.V. +000ECF (base 16) PROFIBUS Nutzerorganisation e.V. + Haid-und-Neu-Strasse 7 + Karlsruhe Baden-Württemberg 76131 + GERMANY + +00-0E-D0 (hex) Privaris, Inc. +000ED0 (base 16) Privaris, Inc. + 650 Peter Jefferson Pkwy, Ste 330 + Charlottesville Virginia 22911 + UNITED STATES + +00-0E-D1 (hex) Osaka Micro Computer. +000ED1 (base 16) Osaka Micro Computer. + Isonokamicyo 3-11-7 + Kishiwada Osaka 5960001 + JAPAN + +00-0E-D2 (hex) Filtronic plc +000ED2 (base 16) Filtronic plc + The Waterfront + Salts Mill Rd + Saltaire W Yorks BD18 3TT + UNITED KINGDOM + +00-0E-D3 (hex) Epicenter, Inc. +000ED3 (base 16) Epicenter, Inc. + 211 B Calle Pintoresco + San Clemente CA 92672 + UNITED STATES + +00-0E-D4 (hex) CRESITT INDUSTRIE +000ED4 (base 16) CRESITT INDUSTRIE + 12 rue de Blois + Orleans BP 6744 45067 cedex + FRANCE + +00-0E-D5 (hex) COPAN Systems Inc. +000ED5 (base 16) COPAN Systems Inc. + 2605 Trade Centre Ave. + Suite D + Longmont CO 80503 + UNITED STATES + +00-0E-D6 (hex) Cisco Systems +000ED6 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0E-D7 (hex) Cisco Systems +000ED7 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0E-D8 (hex) Aktino, Inc. +000ED8 (base 16) Aktino, Inc. + 18551 Von Karman Avenue + Suite 201 + Irvine CA 92612 + UNITED STATES + +00-0E-D9 (hex) Aksys, Ltd. +000ED9 (base 16) Aksys, Ltd. + 2 Marriott Drive + Lincolnshire IL 60069 + UNITED STATES + +00-0E-DA (hex) C-TECH UNITED CORP. +000EDA (base 16) C-TECH UNITED CORP. + 5F, No 665, CHUNG CHEN RD. + HSIN CHUANG CITT of TAIPEI HSIEN 242 + TAIWAN, REPUBLIC OF CHINA + +00-0E-DB (hex) XiNCOM Corp. +000EDB (base 16) XiNCOM Corp. + 2840 Industrial Ave. + Hubbard OR 97032 + UNITED STATES + +00-0E-DC (hex) Tellion INC. +000EDC (base 16) Tellion INC. + 5th Fl. BONA Venture Town + 1586-1 Seocho 3-dong, Seocho-gu + Seoul Seocho-gu. 137-719 + KOREA, REPUBLIC OF + +00-0E-DD (hex) SHURE INCORPORATED +000EDD (base 16) SHURE INCORPORATED + 5800 W. TOUHY AVE. + NILES IL 60714 + UNITED STATES + +00-0E-DE (hex) REMEC, Inc. +000EDE (base 16) REMEC, Inc. + 2144 Franklin Drive NE + Palm Bay Florida 32905-4021 + UNITED STATES + +00-0E-DF (hex) PLX Technology +000EDF (base 16) PLX Technology + 870 Maude Ave., + Sunnyvale CA 94085 + UNITED STATES + +00-0E-E0 (hex) Mcharge +000EE0 (base 16) Mcharge + Firstec Bldg,. 15-4 Youido-Dong + Youngdeungpo-Gu, + seoul Youido 150-010 + KOREA, REPUBLIC OF + +00-0E-E1 (hex) ExtremeSpeed Inc. +000EE1 (base 16) ExtremeSpeed Inc. + PO Box 600 + 4634-46th Street Suite 201 + Mannville Alberta T0B 2W0 + CANADA + +00-0E-E2 (hex) Custom Engineering S.p.A. +000EE2 (base 16) Custom Engineering S.p.A. + Via Beretttine 2/b + Fontevivo Parma 43010 + ITALY + +00-0E-E3 (hex) Chiyu Technology Co.,Ltd +000EE3 (base 16) Chiyu Technology Co.,Ltd + No. 28, Renai Road, Chiayi, 600 + Chiayi 600 + TAIWAN, REPUBLIC OF CHINA + +00-0E-E4 (hex) BOE TECHNOLOGY GROUP CO.,LTD +000EE4 (base 16) BOE TECHNOLOGY GROUP CO.,LTD + No.10 Jiuxianqiao Road,Chaoyang District, + Beijing 100016 + CHINA + +00-0E-E5 (hex) bitWallet, Inc. +000EE5 (base 16) bitWallet, Inc. + Gate City Ohsaki West Tower 18F, 1-11-1 Osaki, Shinagawa-ku + Tokyo 1410032 + JAPAN + +00-0E-E6 (hex) Adimos Systems LTD +000EE6 (base 16) Adimos Systems LTD + 17 Atirey-Yeda Street + Kfar-Saba 44643 + ISRAEL + +00-0E-E7 (hex) AAC ELECTRONICS CORP. +000EE7 (base 16) AAC ELECTRONICS CORP. + FLOOR 7,SIXTH BUILDING OF NAIANYOU TNAN INDUSTRIAL AREA,NANSHAN DISTRICT + SHENZHEN PROVINCE GUANGDONG 518054 + CHINA + +00-0E-E8 (hex) zioncom +000EE8 (base 16) zioncom + West wing 5/F ., Block 1, GaoXin South Ring Rd/Keji South Rd, + Vision(ShenZhen)Business Park, Shenzhen Hi-Tech Industrial Park, + Shenzhen Guangdong 518057 + CHINA + +00-0E-E9 (hex) WayTech Development, Inc. +000EE9 (base 16) WayTech Development, Inc. + 11Floor, 253 Min-Sheng Road + HsinChu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0E-EA (hex) Shadong Luneng Jicheng Electronics,Co.,Ltd +000EEA (base 16) Shadong Luneng Jicheng Electronics,Co.,Ltd + No.188,east,Huayuan Road + Jinan Shandong 250100 + CHINA + +00-0E-EB (hex) Sandmartin(zhong shan)Electronics Co.,Ltd +000EEB (base 16) Sandmartin(zhong shan)Electronics Co.,Ltd + 3st Industrial Area,Tan Zhou, + Zhongshan Guangdong 528467 + CHINA + +00-0E-EC (hex) Orban +000EEC (base 16) Orban + 1525 Alvarado St. + San Leandro CA 94577 + UNITED STATES + +00-0E-ED (hex) Nokia Danmark A/S +000EED (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-0E-EE (hex) Muco Industrie BV +000EEE (base 16) Muco Industrie BV + Pleimuiden 12e + Amsterdam NH 1046 AG + NETHERLANDS + +00-0E-EF (hex) PRIVATE +000EEF (base 16) + +00-0E-F0 (hex) Festo AG & Co. KG +000EF0 (base 16) Festo AG & Co. KG + Ruiterstraße 82 + Esslingen 73734 + GERMANY + +00-0E-F1 (hex) EZQUEST INC. +000EF1 (base 16) EZQUEST INC. + 21133 E. LA PALMA AVE. + YORBA LINDA CA 92887 + UNITED STATES + +00-0E-F2 (hex) Infinico Corporation +000EF2 (base 16) Infinico Corporation + 4F, F-1 Bldg., 1-2-12, + Hamamatsucho, Mitano-ku + Tokyo 105-0013 + JAPAN + +00-0E-F3 (hex) Smarthome +000EF3 (base 16) Smarthome + 16542 Millikan Ave. + Irvine CA 92606 + UNITED STATES + +00-0E-F4 (hex) Shenzhen Kasda Digital Technology Co.,Ltd +000EF4 (base 16) Shenzhen Kasda Digital Technology Co.,Ltd + 2/F,Building 2,Bagua 2 road,Futian, + Shenzhen Guangdong Province 518029 + CHINA + +00-0E-F5 (hex) iPAC Technology Co., Ltd. +000EF5 (base 16) iPAC Technology Co., Ltd. + 6F, No. 30, Shingjung Road, Neihu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0E-F6 (hex) E-TEN Information Systems Co., Ltd. +000EF6 (base 16) E-TEN Information Systems Co., Ltd. + No. 256, Yangguang Street, Neihu Chiu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0E-F7 (hex) Vulcan Portals Inc +000EF7 (base 16) Vulcan Portals Inc + 505 5th Ave South, Suite 900 + Seattle WA 98104 + UNITED STATES + +00-0E-F8 (hex) SBC ASI +000EF8 (base 16) SBC ASI + Network & Infrastructure Technical Support + 1010 N Saint Marys + San Antonio Texas 78215 + UNITED STATES + +00-0E-F9 (hex) REA Elektronik GmbH +000EF9 (base 16) REA Elektronik GmbH + Teichwiesenstr. 1 + Muehltal Hessen 64367 + GERMANY + +00-0E-FA (hex) Optoway Technology Incorporation +000EFA (base 16) Optoway Technology Incorporation + No. 38, Kuang Fu South Road + Hsin Chu Industrial Park + Hu Kou Hsin Chu 303 + TAIWAN, REPUBLIC OF CHINA + +00-0E-FB (hex) Macey Enterprises +000EFB (base 16) Macey Enterprises + P.O. Box 7267 + Tempe AZ 85281 + UNITED STATES + +00-0E-FC (hex) JTAG Technologies B.V. +000EFC (base 16) JTAG Technologies B.V. + Boschdijk 50 + Eindhoven NB 5612 AN + NETHERLANDS + +00-0E-FD (hex) FUJINON CORPORATION +000EFD (base 16) FUJINON CORPORATION + 1-324 UETAKE, KITA-KU, + SAITAMA CITY SAITAMA 331-9624 + JAPAN + +00-0E-FE (hex) EndRun Technologies LLC +000EFE (base 16) EndRun Technologies LLC + 1360 N. Dutton Ave., Suite 200 + Santa Rosa CA 95401 + UNITED STATES + +00-0E-FF (hex) Megasolution,Inc. +000EFF (base 16) Megasolution,Inc. + 2-7-10 Shitaya + Taito TOKYO 110-0004 + JAPAN + +00-0F-00 (hex) Legra Systems, Inc. +000F00 (base 16) Legra Systems, Inc. + 3 Burlington Woods Drive + Burlington MA 01803 + UNITED STATES + +00-0F-01 (hex) DIGITALKS INC +000F01 (base 16) DIGITALKS INC + 14 MARSHALL LANE + WESTON CT 06883 + UNITED STATES + +00-0F-02 (hex) Digicube Technology Co., Ltd +000F02 (base 16) Digicube Technology Co., Ltd + 8F,No. 51, Lane 35, Jihu Rd., + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0F-03 (hex) COM&C CO., LTD +000F03 (base 16) COM&C CO., LTD + 2F Woojin BLD 1445-2 Secho-Dong + Secho-Gu + SEOUL 137-070 + KOREA, REPUBLIC OF + +00-0F-04 (hex) cim-usa inc +000F04 (base 16) cim-usa inc + 10813 nw 30th street + miami florida 33172 + UNITED STATES + +00-0F-05 (hex) 3B SYSTEM INC. +000F05 (base 16) 3B SYSTEM INC. + 1727, SANKYUK2-DONG, BUK-GU + DAEGU 702-845 + KOREA, REPUBLIC OF + +00-0F-06 (hex) Nortel Networks +000F06 (base 16) Nortel Networks + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-0F-07 (hex) Mangrove Systems, Inc. +000F07 (base 16) Mangrove Systems, Inc. + 10 Fairfield Blvd. + Wallingford CT 06492 + UNITED STATES + +00-0F-08 (hex) Indagon Oy +000F08 (base 16) Indagon Oy + Nuijamiestentie 5 A + Helsinki - 00400 + FINLAND + +00-0F-09 (hex) PRIVATE +000F09 (base 16) + +00-0F-0A (hex) Clear Edge Networks +000F0A (base 16) Clear Edge Networks + 11250 El Camino Real + San Diego CA 92130 + UNITED STATES + +00-0F-0B (hex) Kentima Technologies AB +000F0B (base 16) Kentima Technologies AB + Box 174 + Kastanjevägen 2 + Staffanstorp Skåne 245 44 + SWEDEN + +00-0F-0C (hex) SYNCHRONIC ENGINEERING +000F0C (base 16) SYNCHRONIC ENGINEERING + 25 CAP DARNETAL + DARNETAL FRANCE 76160 + FRANCE + +00-0F-0D (hex) Hunt Electronic Co., Ltd. +000F0D (base 16) Hunt Electronic Co., Ltd. + 6FI, NO. 57-59, Jiun H Sien Rd., Chi Tu District + Keelung Taiwan 206 + TAIWAN, REPUBLIC OF CHINA + +00-0F-0E (hex) WaveSplitter Technologies, Inc. +000F0E (base 16) WaveSplitter Technologies, Inc. + 2248 North First Street + San Jose CA 95131 + UNITED STATES + +00-0F-0F (hex) Real ID Technology Co., Ltd. +000F0F (base 16) Real ID Technology Co., Ltd. + 9F Hanmi B/D 192-19 + Nonhyeon-Dong + Gangnam-Gu Seoul 135-010 + KOREA, REPUBLIC OF + +00-0F-10 (hex) RDM Corporation +000F10 (base 16) RDM Corporation + 608 Weber St. N + Waterloo ON N2V 1K4 + CANADA + +00-0F-11 (hex) Prodrive B.V. +000F11 (base 16) Prodrive B.V. + P.O. 28030 + Eindhoven 5602 JA + NETHERLANDS + +00-0F-12 (hex) Panasonic Europe Ltd. +000F12 (base 16) Panasonic Europe Ltd. + Hesebergweg 49-51 + Peine D-31228 + GERMANY + +00-0F-13 (hex) Nisca corporation +000F13 (base 16) Nisca corporation + 430-1 + Kobayashi + Masuho-Cho Yamanashi-Ken 400-0593 + JAPAN + +00-0F-14 (hex) Mindray Co., Ltd. +000F14 (base 16) Mindray Co., Ltd. + Mindray Building, Keji 12th Road South + High-tech Industrial Park, Nanshan + Shenzhen Guangdong 518057 + CHINA + +00-0F-15 (hex) Kjaerulff1 A/S +000F15 (base 16) Kjaerulff1 A/S + C.F. Tietgens Boulevard 19 + Odense SØ Fyn 5220 + DENMARK + +00-0F-16 (hex) JAY HOW TECHNOLOGY CO., +000F16 (base 16) JAY HOW TECHNOLOGY CO., + NO.486,SEC. 1, WAN SHOU RD., KUEI + SHAN HSIANG, TAOYUAN HSIEN + TAOYUAN HSIEN 333 + TAIWAN, REPUBLIC OF CHINA + +00-0F-17 (hex) Insta Elektro GmbH +000F17 (base 16) Insta Elektro GmbH + Talstrasse 104 + Luedenscheid NRW D-58515 + GERMANY + +00-0F-18 (hex) Industrial Control Systems +000F18 (base 16) Industrial Control Systems + Houtschelf 1 + Hardinxveld Zuid-Holland NL-3371 KB + NETHERLANDS + +00-0F-19 (hex) Boston Scientific +000F19 (base 16) Boston Scientific + 4100 Hamline Ave N. + St. Paul MN 55112 + UNITED STATES + +00-0F-1A (hex) Gaming Support B.V. +000F1A (base 16) Gaming Support B.V. + Industrie weg 29 + Rotterdam 3044 AS + NETHERLANDS + +00-0F-1B (hex) Ego Systems Inc. +000F1B (base 16) Ego Systems Inc. + 1206 Woolim e-Biz Center II + 16 Yangpyongdong3ga, Youngdungpo-gu + Seoul 150-834 + KOREA, REPUBLIC OF + +00-0F-1C (hex) DigitAll World Co., Ltd +000F1C (base 16) DigitAll World Co., Ltd + Sejin Bld 2F, 689 ilwon2-dong, + gangnam-gu Seoul 135-946 + KOREA, REPUBLIC OF + +00-0F-1D (hex) Cosmo Techs Co., Ltd. +000F1D (base 16) Cosmo Techs Co., Ltd. + 1-8-32, Tsumadakita + Atsugi-shi Kanagawa-ken 243-0812 + JAPAN + +00-0F-1E (hex) Chengdu KT Electric Co.of High & New Technology +000F1E (base 16) Chengdu KT Electric Co.of High & New Technology + No.2 Gaopeng Dong Road,High & New Development Zone, + No.9 Wuke East No.3 Road,Wuhou Zone, + Chengdu Sichuan 610041 + CHINA + +00-0F-1F (hex) WW PCBA Test +000F1F (base 16) WW PCBA Test + One Dell Way + Round Rock Texas 78682 + UNITED STATES + +00-0F-20 (hex) Hewlett Packard +000F20 (base 16) Hewlett Packard + 20555 State Highway 249 South + MS070405 + Houston TX 77070 + UNITED STATES + +00-0F-21 (hex) Scientific Atlanta, Inc +000F21 (base 16) Scientific Atlanta, Inc + 5030 Sugarloaf Parkway + PO Box 465447 + Lawrenceville Ga 30042 + UNITED STATES + +00-0F-22 (hex) Helius, Inc. +000F22 (base 16) Helius, Inc. + 333 South 520 West + Suite 330 + Lindon UT 84042 + UNITED STATES + +00-0F-23 (hex) Cisco Systems +000F23 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0F-24 (hex) Cisco Systems +000F24 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0F-25 (hex) AimValley B.V. +000F25 (base 16) AimValley B.V. + Anton Philipsweg 1 + Hilversum NH 1223 KZ + NETHERLANDS + +00-0F-26 (hex) WorldAccxx LLC +000F26 (base 16) WorldAccxx LLC + 4035 Tampa Rd. + Suite 6000 + Oldsmar FL 34667 + UNITED STATES + +00-0F-27 (hex) TEAL Electronics, Inc. +000F27 (base 16) TEAL Electronics, Inc. + 10350 Sorrento Valley Road + San Diego California 92121 + UNITED STATES + +00-0F-28 (hex) Itronix Corporation +000F28 (base 16) Itronix Corporation + South 801 Stevens Street + Spokane WA 99204 + UNITED STATES + +00-0F-29 (hex) Augmentix Corporation +000F29 (base 16) Augmentix Corporation + 4616 West Howard Lane + Suite 150 + Austin Texas 78728 + UNITED STATES + +00-0F-2A (hex) Cableware Electronics +000F2A (base 16) Cableware Electronics + 1702 Western Ave. + Suite G + Las Vegas Nevada 89102 + UNITED STATES + +00-0F-2B (hex) GREENBELL SYSTEMS +000F2B (base 16) GREENBELL SYSTEMS + 2TH Floor, Doonam Bldg, 236-11 Nonhyun-Dong, Kangnam-Ku + Seoul 135-010 + KOREA, REPUBLIC OF + +00-0F-2C (hex) Uplogix, Inc. +000F2C (base 16) Uplogix, Inc. + Bldg 1, Suite 235 + 8601 RR 2222 + Austin TX 78730 + UNITED STATES + +00-0F-2D (hex) CHUNG-HSIN ELECTRIC & MACHINERY MFG.CORP. +000F2D (base 16) CHUNG-HSIN ELECTRIC & MACHINERY MFG.CORP. + NO. 25, Wen-Te Rd., Lo-Shan Village + Kwei Shan Hsiang Taoyuan Hsien 330 + TAIWAN, REPUBLIC OF CHINA + +00-0F-2E (hex) Megapower International Corp. +000F2E (base 16) Megapower International Corp. + Rm. 403, No 24 , Wu-Chuan 2nd Rd., + Hsin-Chuang + Taipei Hsien 242 + TAIWAN, REPUBLIC OF CHINA + +00-0F-2F (hex) W-LINX TECHNOLOGY CO., LTD. +000F2F (base 16) W-LINX TECHNOLOGY CO., LTD. + 2F,ELLEN L. SKELTON BUILDING,FISHER LANE ROAD + TORTOLA + VIRGIN ISLANDS, BRITISH + +00-0F-30 (hex) Raza Microelectronics Inc +000F30 (base 16) Raza Microelectronics Inc + 3080 North First Street + 5th Floor + San Jose CA 95134 + UNITED STATES + +00-0F-31 (hex) Prosilica +000F31 (base 16) Prosilica + 101-3750 North Fraser Way + Burnaby BC V5J 5E9 + CANADA + +00-0F-32 (hex) LuTong Electronic Technology Co.,Ltd +000F32 (base 16) LuTong Electronic Technology Co.,Ltd + 106, LiangXi Road + WuXi JiangSu 214063 + CHINA + +00-0F-33 (hex) DUALi Inc. +000F33 (base 16) DUALi Inc. + #505 Samsung Techno Park Bldg 471 + Woncheon-dong, Youngtong-gu + Suwon Gyeonggi-do 442-824 + KOREA, REPUBLIC OF + +00-0F-34 (hex) Cisco Systems +000F34 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0F-35 (hex) Cisco Systems +000F35 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0F-36 (hex) Accurate Techhnologies, Inc. +000F36 (base 16) Accurate Techhnologies, Inc. + 47199 Cartier Dr. + Wixom Michigan 48393 + UNITED STATES + +00-0F-37 (hex) Xambala Incorporated +000F37 (base 16) Xambala Incorporated + 2674 N. 1st Street + Suite 215 + San Jose CA 95134 + UNITED STATES + +00-0F-38 (hex) Netstar +000F38 (base 16) Netstar + 3F,No.347, Yang-kuang St.,Nei-Hu Dis., + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0F-39 (hex) IRIS SENSORS +000F39 (base 16) IRIS SENSORS + ZA les Ufernets + TOULAUD Ardeche F07130 + FRANCE + +00-0F-3A (hex) HISHARP +000F3A (base 16) HISHARP + NO.673,CHANG HSING ROAD PATE CITY,TAOYUAN, + TAIPEI 334 + TAIWAN, REPUBLIC OF CHINA + +00-0F-3B (hex) Fuji System Machines Co., Ltd. +000F3B (base 16) Fuji System Machines Co., Ltd. + 5-8-10 + Hibarigaoka + Zama-Shi Kanagawa-Ken 228-0003 + JAPAN + +00-0F-3C (hex) Endeleo Limited +000F3C (base 16) Endeleo Limited + 78 Cannon Street + London England EC4N 6NQ + UNITED KINGDOM + +00-0F-3D (hex) D-Link Corporation +000F3D (base 16) D-Link Corporation + No.8,Li-shing Seventh Road,Science-based Industrial Park,Hsimchu, + Hsimchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0F-3E (hex) CardioNet, Inc +000F3E (base 16) CardioNet, Inc + 510 Market Street + San Diego CA 92101 + UNITED STATES + +00-0F-3F (hex) Big Bear Networks +000F3F (base 16) Big Bear Networks + 345 Potrero Ave + Sunny Vale California 94085 + UNITED STATES + +00-0F-40 (hex) Optical Internetworking Forum +000F40 (base 16) Optical Internetworking Forum + 48377 Fremont Blvd + Ste 117 + Fremont CA 94538 + UNITED STATES + +00-0F-41 (hex) Zipher Ltd +000F41 (base 16) Zipher Ltd + 7 Faraday Building + Nottingham Science and Technology Park + Nottingham Nottinghamshire NG7 2QP + UNITED KINGDOM + +00-0F-42 (hex) Xalyo Systems +000F42 (base 16) Xalyo Systems + Grenier 9 + Commugny VD 1291 + SWITZERLAND + +00-0F-43 (hex) Wasabi Systems Inc. +000F43 (base 16) Wasabi Systems Inc. + 500 E. Main Street + Suite 1520 + Norfolk VA 23510 + UNITED STATES + +00-0F-44 (hex) Tivella Inc. +000F44 (base 16) Tivella Inc. + 795 Main Street + Half Moon Bay CA 94019 + UNITED STATES + +00-0F-45 (hex) Stretch, Inc. +000F45 (base 16) Stretch, Inc. + 1322 Orleans Drive + Sunnyvale CA 94089 + UNITED STATES + +00-0F-46 (hex) SINAR AG +000F46 (base 16) SINAR AG + Stadtweg 24 + Feuerthalen ZH CH-8245 + SWITZERLAND + +00-0F-47 (hex) ROBOX SPA +000F47 (base 16) ROBOX SPA + via Sempione 82 + Castelletto S.Ticino NO 28053 + ITALY + +00-0F-48 (hex) Polypix Inc. +000F48 (base 16) Polypix Inc. + 1Fl, Sungdo Venture Tower, 165-2 Samsung-Dong, Kangnam-Ku + Seoul 135-881 + KOREA, REPUBLIC OF + +00-0F-49 (hex) Northover Solutions Limited +000F49 (base 16) Northover Solutions Limited + Heath Cottage + Illington Road + Larling Norfolk NR16 2RB + UNITED KINGDOM + +00-0F-4A (hex) Kyushu-kyohan co.,ltd +000F4A (base 16) Kyushu-kyohan co.,ltd + 2-6-3,Koganemachi + Kokurakita-ku + Kitakyushu-city Fukuoka 802-0071 + JAPAN + +00-0F-4B (hex) Virtual Iron Software, Inc. +000F4B (base 16) Virtual Iron Software, Inc. + 900 Chelmsford Street + Tower 1 Floor 2 + Lowell MA 01851 + UNITED STATES + +00-0F-4C (hex) Elextech INC +000F4C (base 16) Elextech INC + 554-2, Gasan-Dong, Gumcheon-Gu + Seoul 153-023 + KOREA, REPUBLIC OF + +00-0F-4D (hex) TalkSwitch +000F4D (base 16) TalkSwitch + 1545 Carling Ave + Suite 510 + Ottawa Ontario K1Z 8P9 + CANADA + +00-0F-4E (hex) Cellink +000F4E (base 16) Cellink + Catherinalaan 37 + Rotselaar Vlaams Brabant B-3110 + BELGIUM + +00-0F-4F (hex) Cadmus Technology Ltd +000F4F (base 16) Cadmus Technology Ltd + 66 Hillside Rd + Glenfield + Auckland 1310 + NEW ZEALAND + +00-0F-50 (hex) StreamScale Limited +000F50 (base 16) StreamScale Limited + The Court, Alexandra Park + Prescot Road + St Helens WA10 3TP + UNITED KINGDOM + +00-0F-51 (hex) Azul Systems, Inc. +000F51 (base 16) Azul Systems, Inc. + 1600 Plymouth Street + Mountain View California 94043 + UNITED STATES + +00-0F-52 (hex) YORK Refrigeration, Marine & Controls +000F52 (base 16) YORK Refrigeration, Marine & Controls + Jens Juulsvej 28 + Viby J DK 8362 + DENMARK + +00-0F-53 (hex) Solarflare Communications Inc +000F53 (base 16) Solarflare Communications Inc + 9501 Jeronimo Road + Suite 250 + Irvine CA 92618 + UNITED STATES + +00-0F-54 (hex) Entrelogic Corporation +000F54 (base 16) Entrelogic Corporation + 33 Boston Post Rd. West. + Suite 160 + Marlborough MA 01752 + UNITED STATES + +00-0F-55 (hex) Datawire Communication Networks Inc. +000F55 (base 16) Datawire Communication Networks Inc. + 10 Carlson Court, Suite 300 + Toronto Ontario M9W 6L2 + CANADA + +00-0F-56 (hex) Continuum Photonics Inc +000F56 (base 16) Continuum Photonics Inc + 5 Fortune Drive + Billerica MA 01821 + UNITED STATES + +00-0F-57 (hex) CABLELOGIC Co., Ltd. +000F57 (base 16) CABLELOGIC Co., Ltd. + 3F., Hwain Bldg., 1559-12 Seocho 3-dong, + Secho-gu, + Seoul 137-873 + KOREA, REPUBLIC OF + +00-0F-58 (hex) Adder Technology Limited +000F58 (base 16) Adder Technology Limited + Technology House + Trafalgar Way + Bar Hill Cambridgeshire CB3 8SQ + UNITED KINGDOM + +00-0F-59 (hex) Phonak Communications AG +000F59 (base 16) Phonak Communications AG + Länggasse 17 + Murten FR 3280 + SWITZERLAND + +00-0F-5A (hex) Peribit Networks +000F5A (base 16) Peribit Networks + 2855 Bowers Ave + Santa Clara CA 95051 + UNITED STATES + +00-0F-5B (hex) Delta Information Systems, Inc. +000F5B (base 16) Delta Information Systems, Inc. + 300 Welsh Road, Bldg. 3 + Horsham PA 19044-2273 + UNITED STATES + +00-0F-5C (hex) Day One Digital Media Limited +000F5C (base 16) Day One Digital Media Limited + 197 Archers Rd + Glenfield + Auckland North Island 1310 + NEW ZEALAND + +00-0F-5D (hex) 42Networks AB +000F5D (base 16) 42Networks AB + PO-1217 + Kistagangen 2, IV + Kista Stockholm SE-16428 + SWEDEN + +00-0F-5E (hex) Veo +000F5E (base 16) Veo + 910 Rincon Circle + San Jose CA 95131 + UNITED STATES + +00-0F-5F (hex) Nicety Technologies Inc. (NTS) +000F5F (base 16) Nicety Technologies Inc. (NTS) + 792-3 Tomioka Toyoda-cho + Iwata-gun Shizuoka 438-0803 + JAPAN + +00-0F-60 (hex) Lifetron Co.,Ltd +000F60 (base 16) Lifetron Co.,Ltd + 6-7,Tenjinnishimachi + Kita-Ku + Osaka Osaka Prefecture 530-0045 + JAPAN + +00-0F-61 (hex) Kiwi Networks +000F61 (base 16) Kiwi Networks + 1684 Dell Avenue + Campbell CA 95008 + UNITED STATES + +00-0F-62 (hex) Alcatel Bell Space N.V. +000F62 (base 16) Alcatel Bell Space N.V. + Berkenrodelei 33 + Hoboken Antwerpen B-2660 + BELGIUM + +00-0F-63 (hex) Obzerv Technologies +000F63 (base 16) Obzerv Technologies + 400 Jean Lesage + suite 201 + Quebec QC G1K8W1 + CANADA + +00-0F-64 (hex) D&R Electronica Weesp BV +000F64 (base 16) D&R Electronica Weesp BV + Rijnkade 15B + WEESP NH 1382GS + NETHERLANDS + +00-0F-65 (hex) icube Corp. +000F65 (base 16) icube Corp. + Olympia Center 2F,828-10,Yeoksam-dong,Kangnam-ku + Seoul South 135-935 + KOREA, REPUBLIC OF + +00-0F-66 (hex) Cisco-Linksys +000F66 (base 16) Cisco-Linksys + 121 Theory Dr. + Irvine CA 92612 + UNITED STATES + +00-0F-67 (hex) West Instruments +000F67 (base 16) West Instruments + Unit 5, The Hyde, Lower Bevendean + Brighton East Sussex BN2 4JU + UNITED KINGDOM + +00-0F-68 (hex) Vavic Network Technology, Inc. +000F68 (base 16) Vavic Network Technology, Inc. + 1st Floor, 15 Jiangong Road + Tianhe S&T Zone + Guangzhou Guangdong 510665 + CHINA + +00-0F-69 (hex) SEW Eurodrive GmbH & Co. KG +000F69 (base 16) SEW Eurodrive GmbH & Co. KG + Ernst Blickle Str. 42 + Bruchsal 76646 + GERMANY + +00-0F-6A (hex) Nortel Networks +000F6A (base 16) Nortel Networks + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-0F-6B (hex) GateWare Communications GmbH +000F6B (base 16) GateWare Communications GmbH + Allersberger Strasse 185 F + Nuernberg Bavaria D-90461 + GERMANY + +00-0F-6C (hex) ADDI-DATA GmbH +000F6C (base 16) ADDI-DATA GmbH + Dieselstrasse 3 + OTTERSWEIER BW 77833 + GERMANY + +00-0F-6D (hex) Midas Engineering +000F6D (base 16) Midas Engineering + Ace Techno-Tower V #906 197-22 + Kuro-Dong, Kuro-Gu + Seoul 152-848 + KOREA, REPUBLIC OF + +00-0F-6E (hex) BBox +000F6E (base 16) BBox + Epitok u. 2-4 + Budaors H-2040 + HUNGARY + +00-0F-6F (hex) FTA Communication Technologies +000F6F (base 16) FTA Communication Technologies + 11, rue Pierre Werner + Betzdorf L-6832 + LUXEMBOURG + +00-0F-70 (hex) Wintec Industries, inc. +000F70 (base 16) Wintec Industries, inc. + 4280 Technology Drive + Fremont CA 94538 + UNITED STATES + +00-0F-71 (hex) Sanmei Electronics Co.,Ltd +000F71 (base 16) Sanmei Electronics Co.,Ltd + 2-2-1,Seikai,Shimizu + Shizuoka 424-0924 + JAPAN + +00-0F-72 (hex) Sandburst +000F72 (base 16) Sandburst + 600 Federal St + 2nd Floor + Andover MA 01810 + UNITED STATES + +00-0F-73 (hex) Rockwell Automation Korea +000F73 (base 16) Rockwell Automation Korea + 447-6, Gongse-Dong , Giheung-Gu + Youngin-City Gyeonggi-Do 449-902 + KOREA, REPUBLIC OF + +00-0F-74 (hex) Qamcom Technology AB +000F74 (base 16) Qamcom Technology AB + Gruvgatan 8 + SE-421 30 + Vastra Frolunda + SWEDEN + +00-0F-75 (hex) First Silicon Solutions +000F75 (base 16) First Silicon Solutions + 13939 Forest Lane + Larkspur CO 80118 + UNITED STATES + +00-0F-76 (hex) Digital Keystone, Inc. +000F76 (base 16) Digital Keystone, Inc. + 1975 El Camino Real + #306 + Mountain View CA 94040 + UNITED STATES + +00-0F-77 (hex) DENTUM CO.,LTD +000F77 (base 16) DENTUM CO.,LTD + Wookyung B/D 602 #678-6 + Deungchon-Dong ,Kangseo-Gu + Seoul 157-030 + KOREA, REPUBLIC OF + +00-0F-78 (hex) Datacap Systems Inc +000F78 (base 16) Datacap Systems Inc + 100 New Britain Blvd + Chalfont PA 18914 + UNITED STATES + +00-0F-79 (hex) Bluetooth Interest Group Inc. +000F79 (base 16) Bluetooth Interest Group Inc. + 4F, No. 9, Alley 2, Lane 35, Ji-Hu Rd. + Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0F-7A (hex) BeiJing NuQX Technology CO.,LTD +000F7A (base 16) BeiJing NuQX Technology CO.,LTD + Room 812,8F Tower B,YinWang Center, No.113,Zhi Chun Road, + HaiDian District + Beijing 100086 + CHINA + +00-0F-7B (hex) Arce Sistemas, S.A. +000F7B (base 16) Arce Sistemas, S.A. + C/Padre Larramendi, 3 - 2º + Bilbao Vizcaya 48012 + SPAIN + +00-0F-7C (hex) ACTi Corporation +000F7C (base 16) ACTi Corporation + 7F., No. 1, Alley 20, Lane 407, Sec. 2, Tiding Blvd., + Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0F-7D (hex) Xirrus +000F7D (base 16) Xirrus + 310 North Westlake Blvd. + Westlake Village CA 91362 + UNITED STATES + +00-0F-7E (hex) Ablerex Electronics Co., LTD +000F7E (base 16) Ablerex Electronics Co., LTD + 1F, No.3 Lane 7, Paokao Rd. + Hsintien Taipei Hsien 23114 + TAIWAN, REPUBLIC OF CHINA + +00-0F-7F (hex) UBSTORAGE Co.,Ltd. +000F7F (base 16) UBSTORAGE Co.,Ltd. + #A-108, Seoul_Sanup_Jiwon_Center + 647-26, Deungchong-dong + Ganseo-gu Seoul 157-840 + KOREA, REPUBLIC OF + +00-0F-80 (hex) Trinity Security Systems,Inc. +000F80 (base 16) Trinity Security Systems,Inc. + Alte Building Higashi Kanda 8F + 1-7-8 Higashikanda + Chiyoda-ku Tokyo 101-0031 + JAPAN + +00-0F-81 (hex) Secure Info Imaging +000F81 (base 16) Secure Info Imaging + 1848 CommerCenter East + San Bernardino CA 92408 + UNITED STATES + +00-0F-82 (hex) Mortara Instrument, Inc. +000F82 (base 16) Mortara Instrument, Inc. + 7865 N. 86th St. + Milwaukee WI 53224 + UNITED STATES + +00-0F-83 (hex) Brainium Technologies Inc. +000F83 (base 16) Brainium Technologies Inc. + #201 - 11491 Kingston Street + Maple Ridge BC V2X 0Y6 + CANADA + +00-0F-84 (hex) Astute Networks, Inc. +000F84 (base 16) Astute Networks, Inc. + 16516 Via Esprillo + #200 + San Diego CA 92127 + UNITED STATES + +00-0F-85 (hex) ADDO-Japan Corporation +000F85 (base 16) ADDO-Japan Corporation + NingyouchoTowa Bldg. 5F, 2-15-3 Nihombashi Ningyoucho + Chuo-ku Tokyo 103-0013 + JAPAN + +00-0F-86 (hex) Research In Motion Limited +000F86 (base 16) Research In Motion Limited + 295 Phillip Street + Waterloo Ontario N2L 3W8 + CANADA + +00-0F-87 (hex) Maxcess International +000F87 (base 16) Maxcess International + 222 W. Memorial Road + Oklahoma City OK 73114 + UNITED STATES + +00-0F-88 (hex) AMETEK, Inc. +000F88 (base 16) AMETEK, Inc. + 150 Freeport Road + Pittsburgh PA 15238 + UNITED STATES + +00-0F-89 (hex) Winnertec System Co., Ltd. +000F89 (base 16) Winnertec System Co., Ltd. + #405, 4th Floor. Ace-Techno Tower III, 197-48, + Kuro 3-Dong, Kuro-Ku. + Seoul 152-766 + KOREA, REPUBLIC OF + +00-0F-8A (hex) WideView +000F8A (base 16) WideView + F. 6, No. 8, Wu-chuan 2 Rd, Hsin-Chuang City + Taipei Country 242 + TAIWAN, REPUBLIC OF CHINA + +00-0F-8B (hex) Orion MultiSystems Inc +000F8B (base 16) Orion MultiSystems Inc + 3375 Scott Blvd Suite 338 + Santa Clara CA 95054 + UNITED STATES + +00-0F-8C (hex) Gigawavetech Pte Ltd +000F8C (base 16) Gigawavetech Pte Ltd + 1 Jalan Kilang Timor + #07-02 Pacific Tech Centre + 159303 + SINGAPORE + +00-0F-8D (hex) FAST TV-Server AG +000F8D (base 16) FAST TV-Server AG + Ruedesheimerstr. 11-13 + Munich Germany 80686 + GERMANY + +00-0F-8E (hex) DONGYANG TELECOM CO.,LTD. +000F8E (base 16) DONGYANG TELECOM CO.,LTD. + 642-7, DEUNGCHON-DONG, KANGSEO-GU + SEOUL KANGSE-GU 157-841 + KOREA, REPUBLIC OF + +00-0F-8F (hex) Cisco Systems +000F8F (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0F-90 (hex) Cisco Systems +000F90 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0F-91 (hex) Aerotelecom Co.,Ltd. +000F91 (base 16) Aerotelecom Co.,Ltd. + 195-58 Anyang 7 Dong + Anyang Kyunggi 430-817 + KOREA, REPUBLIC OF + +00-0F-92 (hex) Microhard Systems Inc. +000F92 (base 16) Microhard Systems Inc. + #17, 2135-32Ave NE + Calgary AB T2E6Z3 + CANADA + +00-0F-93 (hex) Landis+Gyr Ltd. +000F93 (base 16) Landis+Gyr Ltd. + Feldstrasse 1 + Zug CH-6301 + SWITZERLAND + +00-0F-94 (hex) Genexis +000F94 (base 16) Genexis + Lodewijkstraat 1A + Eindhoven 5646HP + NETHERLANDS + +00-0F-95 (hex) ELECOM Co.,LTD Laneed Division +000F95 (base 16) ELECOM Co.,LTD Laneed Division + 8F Kanda-Muromachi Bldg. + 1 Kanda-Ogawamachi 1 Chome, + Chiyoda-Ku, Tokyo. 101-0052 + JAPAN + +00-0F-96 (hex) Critical Telecom Corp. +000F96 (base 16) Critical Telecom Corp. + 340 March Road, Suite 500 + Ottawa ON K2K 2E4 + CANADA + +00-0F-97 (hex) Avanex Corporation +000F97 (base 16) Avanex Corporation + 40919 Encyclopedia Circle + Fremont CA 94538 + UNITED STATES + +00-0F-98 (hex) Avamax Co. Ltd. +000F98 (base 16) Avamax Co. Ltd. + B1, No. 51, Section 2, ChongQing S. Rd. + Taipei 100 + TAIWAN, REPUBLIC OF CHINA + +00-0F-99 (hex) APAC opto Electronics Inc. +000F99 (base 16) APAC opto Electronics Inc. + 7 San-Min Road, Hsinchu Industrial Park + Hukow, Hsinchu Hsien 303 + TAIWAN, REPUBLIC OF CHINA + +00-0F-9A (hex) Synchrony, Inc. +000F9A (base 16) Synchrony, Inc. + 6410 Commonwealth Drive + Roanoke VA 24018 + UNITED STATES + +00-0F-9B (hex) Ross Video Limited +000F9B (base 16) Ross Video Limited + 8 John Street + Iroquois Ontario K0E 1K0 + CANADA + +00-0F-9C (hex) Panduit Corp +000F9C (base 16) Panduit Corp + 17301 Ridgeland Ave + Tinley Park Illinois 60477 + UNITED STATES + +00-0F-9D (hex) DisplayLink (UK) Ltd +000F9D (base 16) DisplayLink (UK) Ltd + Mount Pleasant House + Mount Pleasant + Cambridge Cambridgeshire CB3 0RN + UNITED KINGDOM + +00-0F-9E (hex) Murrelektronik GmbH +000F9E (base 16) Murrelektronik GmbH + Falkenstrasse 3 + Oppenweiler Baden Württemberg 71570 + GERMANY + +00-0F-9F (hex) Motorola BCS +000F9F (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-0F-A0 (hex) CANON KOREA BUSINESS SOLUTIONS INC. +000FA0 (base 16) CANON KOREA BUSINESS SOLUTIONS INC. + 736 Wonsi-Dong + Ansan-si Kyunggi-do 425-090 + KOREA, REPUBLIC OF + +00-0F-A1 (hex) Gigabit Systems Inc. +000FA1 (base 16) Gigabit Systems Inc. + Fuyoh Video Building 3F + 7-25 Higashi-Kibougaoka, Asahi-Ku + Yokohama Kanagawa 241-0826 + JAPAN + +00-0F-A2 (hex) Digital Path Networks +000FA2 (base 16) Digital Path Networks + 275 Airpark Blvd + Suite 500 + Chico CA 95973 + UNITED STATES + +00-0F-A3 (hex) Alpha Networks Inc. +000FA3 (base 16) Alpha Networks Inc. + No.8 Li-shing 7th Rd.,Science-based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0F-A4 (hex) Sprecher Automation GmbH +000FA4 (base 16) Sprecher Automation GmbH + Franckstrasse 51 + Linz Oberösterreich 4018 + AUSTRIA + +00-0F-A5 (hex) SMP / BWA Technology GmbH +000FA5 (base 16) SMP / BWA Technology GmbH + Frankfurter Ring 193a + Munich D-80807 + GERMANY + +00-0F-A6 (hex) S2 Security Corporation +000FA6 (base 16) S2 Security Corporation + 6 Abbott Road + Wellesley MA 02481 + UNITED STATES + +00-0F-A7 (hex) Raptor Networks Technology +000FA7 (base 16) Raptor Networks Technology + 65 Enterprise Road + Aliso Viejo CA 92656 + UNITED STATES + +00-0F-A8 (hex) Photometrics, Inc. +000FA8 (base 16) Photometrics, Inc. + 3440 E Britannia Drive + Tucson AZ 85706-5006 + UNITED STATES + +00-0F-A9 (hex) PC Fabrik +000FA9 (base 16) PC Fabrik + Buchenstrasse 13-15 + Dresden Sachsen 01097 + GERMANY + +00-0F-AA (hex) Nexus Technologies +000FAA (base 16) Nexus Technologies + 10 National Ave. + Fletcher NC 28732 + UNITED STATES + +00-0F-AB (hex) Kyushu Electronics Systems Inc. +000FAB (base 16) Kyushu Electronics Systems Inc. + 3-3, Kongo 2-Chome, Yahatanishi Ward + Kitakyushu City Fukuoka Pref. 807-1263 + JAPAN + +00-0F-AC (hex) IEEE 802.11 +000FAC (base 16) IEEE 802.11 + 4125 Highlander Parkway + Richfield Ohio 44286 + UNITED STATES + +00-0F-AD (hex) FMN communications GmbH +000FAD (base 16) FMN communications GmbH + Grimmelallee 4 + Nordhausen Thüringen 99734 + GERMANY + +00-0F-AE (hex) E2O Communications +000FAE (base 16) E2O Communications + 52 Serangoon North Ave 4 + #06-02 Ever Tech Building + 555853 + SINGAPORE + +00-0F-AF (hex) Dialog Inc. +000FAF (base 16) Dialog Inc. + 1-47-9 + Higashiikebukuro + Toshima-ku Tokyo 1700013 + JAPAN + +00-0F-B0 (hex) Compal Electronics,INC. +000FB0 (base 16) Compal Electronics,INC. + 581 Juikuang Road,Neihu, + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0F-B1 (hex) Cognio Inc. +000FB1 (base 16) Cognio Inc. + 101 Orchard Ridge Drive + Suite 350 + Gaithersburg MD 20878 + UNITED STATES + +00-0F-B2 (hex) Broadband Pacenet (India) Pvt. Ltd. +000FB2 (base 16) Broadband Pacenet (India) Pvt. Ltd. + 7-B, Shah Industrial Estate, Off Veera Desai Road + Andheri West + Mumbai Maharashtra 400 053 + INDIA + +00-0F-B3 (hex) Actiontec Electronics, Inc +000FB3 (base 16) Actiontec Electronics, Inc + 760 North Mary Ave + Sunnyvale CA 94086 + UNITED STATES + +00-0F-B4 (hex) Timespace Technology +000FB4 (base 16) Timespace Technology + Blackstone Road + Huntingdon Cambridgeshire PE29 6TT + UNITED KINGDOM + +00-0F-B5 (hex) NETGEAR Inc +000FB5 (base 16) NETGEAR Inc + 4500 Great America Parkway + Santa Clara CA 95054 + UNITED STATES + +00-0F-B6 (hex) Europlex Technologies +000FB6 (base 16) Europlex Technologies + Clonshaugh Business & Tech. Park + Clonshaugh Dublin 17 + IRELAND + +00-0F-B7 (hex) Cavium Networks +000FB7 (base 16) Cavium Networks + 2610 Augustine Drive + Santa Clara California 95054 + UNITED STATES + +00-0F-B8 (hex) CallURL Inc. +000FB8 (base 16) CallURL Inc. + 3F-11, No. 508 Sec. 5, Chung-Hsiao E. Rd. + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-0F-B9 (hex) Adaptive Instruments +000FB9 (base 16) Adaptive Instruments + 577 Main Street + Hudson MA 01749 + UNITED STATES + +00-0F-BA (hex) Tevebox AB +000FBA (base 16) Tevebox AB + Berglinds vag 13 + warmdo S-13900 + SWEDEN + +00-0F-BB (hex) Nokia Siemens Networks GmbH & Co. KG +000FBB (base 16) Nokia Siemens Networks GmbH & Co. KG + Werner-von-Siemens Str. 2-6 + Bruchsal Baden-Würtemberg 76646 + GERMANY + +00-0F-BC (hex) Onkey Technologies, Inc. +000FBC (base 16) Onkey Technologies, Inc. + 780 Montague Expressway, Inc. + Suite #306 + San Jose CA 95131 + UNITED STATES + +00-0F-BD (hex) MRV Communications (Networks) LTD +000FBD (base 16) MRV Communications (Networks) LTD + P.O Box 614 + Yokneam 20692 + ISRAEL + +00-0F-BE (hex) e-w/you Inc. +000FBE (base 16) e-w/you Inc. + 3F FINE Bldg. 6-17-17 + Minamiooi, + Shinagawa-ku, Tokyo 140-0013 + JAPAN + +00-0F-BF (hex) DGT Sp. z o.o. +000FBF (base 16) DGT Sp. z o.o. + ul. Jaskowa Dolina 15 + Gdansk 80-252 + POLAND + +00-0F-C0 (hex) DELCOMp +000FC0 (base 16) DELCOMp + Technologielaan 3 + Leuven B-3000 + BELGIUM + +00-0F-C1 (hex) WAVE Corporation +000FC1 (base 16) WAVE Corporation + 3-25-5 Chidori + Ohta-ku Tokyo 146-0083 + JAPAN + +00-0F-C2 (hex) Uniwell Corporation +000FC2 (base 16) Uniwell Corporation + 5-25, 3-chome, Tenma, Kita-ku + Osaka 530-0043 + JAPAN + +00-0F-C3 (hex) PalmPalm Technology, Inc. +000FC3 (base 16) PalmPalm Technology, Inc. + Samsung-dong 156-3, Gangnam-gu + Seoul 135-091 + KOREA, REPUBLIC OF + +00-0F-C4 (hex) NST co.,LTD. +000FC4 (base 16) NST co.,LTD. + 4-3-1 SHINMIYAKODA + HAMAMATSU SHIZUOKA 431-2103 + JAPAN + +00-0F-C5 (hex) KeyMed Ltd +000FC5 (base 16) KeyMed Ltd + KeyMed House + Stock Road + Southend on Sea Essex SS2 5QH + UNITED KINGDOM + +00-0F-C6 (hex) Eurocom Industries A/S +000FC6 (base 16) Eurocom Industries A/S + porsvej 2 + Aalborg NV DK-9200 + DENMARK + +00-0F-C7 (hex) Dionica R&D Ltd. +000FC7 (base 16) Dionica R&D Ltd. + Bologna Centre, F11 + Mosta Technopark + Mosta MST13 + MALTA + +00-0F-C8 (hex) Chantry Networks +000FC8 (base 16) Chantry Networks + 1900 Minnesota Court + Suite 125 + Mississauga Ontario L5N 3C9 + CANADA + +00-0F-C9 (hex) Allnet GmbH +000FC9 (base 16) Allnet GmbH + Maistr. 2 + Germering Bavaria 82110 + GERMANY + +00-0F-CA (hex) A-JIN TECHLINE CO, LTD +000FCA (base 16) A-JIN TECHLINE CO, LTD + 327-35 + Kasan-Dong + Kumchun-Ku Seoul 153-802 + KOREA, REPUBLIC OF + +00-0F-CB (hex) 3Com Ltd +000FCB (base 16) 3Com Ltd + Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts HP2 4NW + UNITED KINGDOM + +00-0F-CC (hex) Netopia, Inc. +000FCC (base 16) Netopia, Inc. + 6001 Shellmound Street + 4th Floor + Emeryville CA 94608 + UNITED STATES + +00-0F-CD (hex) Nortel Networks +000FCD (base 16) Nortel Networks + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-0F-CE (hex) Kikusui Electronics Corp. +000FCE (base 16) Kikusui Electronics Corp. + 1-1-3,Higashi yamata + Tsuzuki-ku + Yokohama Kanagawa 224-0023 + JAPAN + +00-0F-CF (hex) Datawind Research +000FCF (base 16) Datawind Research + 555 Rene-Levesque West + Suite 1130 + Montreal Quebec H2Z 1B1 + CANADA + +00-0F-D0 (hex) ASTRI +000FD0 (base 16) ASTRI + 18/F Tower 6, Gateway, 9 Canton Rd + TST, Kowloon + HONG KONG + +00-0F-D1 (hex) Applied Wireless Identifications Group, Inc. +000FD1 (base 16) Applied Wireless Identifications Group, Inc. + 382 Route 59, Section 292 + Monsey New York 10952 + UNITED STATES + +00-0F-D2 (hex) EWA Technologies, Inc. +000FD2 (base 16) EWA Technologies, Inc. + 13873 Park Center Road + Herndon VA 20171 + UNITED STATES + +00-0F-D3 (hex) Digium +000FD3 (base 16) Digium + 445 Jan Davis Drive NW + Suite 100 + Huntsville AL 35806 + UNITED STATES + +00-0F-D4 (hex) Soundcraft +000FD4 (base 16) Soundcraft + Cranborne House + Cranborne Road + Potters Bar Hertfordshire EN6 3JN + UNITED KINGDOM + +00-0F-D5 (hex) Schwechat - RISE +000FD5 (base 16) Schwechat - RISE + Am Concorde Park 2A + Schwechat 2320 + AUSTRIA + +00-0F-D6 (hex) Sarotech Co., Ltd +000FD6 (base 16) Sarotech Co., Ltd + HanGang Bldg, 1549-7, Seocho-Dong, + Seocho-ku, + Seoul 137-070 + KOREA, REPUBLIC OF + +00-0F-D7 (hex) Harman Music Group +000FD7 (base 16) Harman Music Group + 8760 Sandy Parkway + Sandy Utah 84070 + UNITED STATES + +00-0F-D8 (hex) Force, Inc. +000FD8 (base 16) Force, Inc. + 825 Park Street + Christiansburg Va 24073 + UNITED STATES + +00-0F-D9 (hex) FlexDSL Telecommunications AG +000FD9 (base 16) FlexDSL Telecommunications AG + Haus zum Engel + Altendorf Schwyz 8852 + SWITZERLAND + +00-0F-DA (hex) YAZAKI CORPORATION +000FDA (base 16) YAZAKI CORPORATION + 1500 MISHUKU + SUSONO-CITY SHIZUOKA-PREF 410-1194 + JAPAN + +00-0F-DB (hex) Westell Technologies +000FDB (base 16) Westell Technologies + 750 N. Commons Dr. + Aurora IL 60504 + UNITED STATES + +00-0F-DC (hex) Ueda Japan Radio Co., Ltd. +000FDC (base 16) Ueda Japan Radio Co., Ltd. + Fumiiri 2-10-19 + Ueda city Nagano prefecture 386-8608 + JAPAN + +00-0F-DD (hex) SORDIN AB +000FDD (base 16) SORDIN AB + Rorlaggarvagen 8 + Varnamo Smaland S-331 34 + SWEDEN + +00-0F-DE (hex) Sony Ericsson Mobile Communications AB +000FDE (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund SE 221 88 + SWEDEN + +00-0F-DF (hex) SOLOMON Technology Corp. +000FDF (base 16) SOLOMON Technology Corp. + No.42,Sing Zhong Rd.,Nei Hu Dist., + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-0F-E0 (hex) NComputing Co.,Ltd. +000FE0 (base 16) NComputing Co.,Ltd. + 2nd Fl Daeyoung B/D + 1423-6, Gwanyang1-Dong, Dongan-Gu + Anyang-City Gyeonggi-Do 431-807 + KOREA, REPUBLIC OF + +00-0F-E1 (hex) ID DIGITAL CORPORATION +000FE1 (base 16) ID DIGITAL CORPORATION + 6th Fl., Mirae Bldg., 271-1, Seohyun-dong, Bundang-ku, Sungnam-si, Keongki-do, South Korea + Sungnam-Si Keongki-do 463-050 + KOREA, REPUBLIC OF + +00-0F-E2 (hex) Hangzhou H3C Technologies Co., Ltd. +000FE2 (base 16) Hangzhou H3C Technologies Co., Ltd. + Oriental Electronic Bld., NO.2,Chuangye Road + Shang-Di Informaiton Industry Base, + Hai-Dian District Beijing 100085 + CHINA + +00-0F-E3 (hex) Damm Cellular Systems A/S +000FE3 (base 16) Damm Cellular Systems A/S + Moellegade 68 + Soenderborg Dk-6400 + DENMARK + +00-0F-E4 (hex) Pantech Co.,Ltd +000FE4 (base 16) Pantech Co.,Ltd + Shinsong B/D 3F, 25-12, + Yeouido-Dong, + Youngdeungpo-GU Seoul 150-711 + KOREA, REPUBLIC OF + +00-0F-E5 (hex) MERCURY SECURITY CORPORATION +000FE5 (base 16) MERCURY SECURITY CORPORATION + 2355 MIRA MAR AVE. + LONG BEACH CA 90815 + UNITED STATES + +00-0F-E6 (hex) MBTech Systems, Inc. +000FE6 (base 16) MBTech Systems, Inc. + 412 1st Ave SE + Suite 100 + Cullman Alabama 35055 + UNITED STATES + +00-0F-E7 (hex) Lutron Electronics Co., Inc. +000FE7 (base 16) Lutron Electronics Co., Inc. + 7200 Suter Rd. + Coopersburg PA 18036-1299 + UNITED STATES + +00-0F-E8 (hex) Lobos, Inc. +000FE8 (base 16) Lobos, Inc. + U&T Bldg 3F, 1-2-3 Sarugaku-cho, Chiyoda-ku, + Tokyo 101-0064 + JAPAN + +00-0F-E9 (hex) GW TECHNOLOGIES CO.,LTD. +000FE9 (base 16) GW TECHNOLOGIES CO.,LTD. + No.38 Shangdi Xilu,Haidian District + Beijing 100085 + CHINA + +00-0F-EA (hex) Giga-Byte Technology Co.,LTD. +000FEA (base 16) Giga-Byte Technology Co.,LTD. + No.215,Nan-Ping Road,Ping-Jen City, + Ping-Jen Taoyuan 324 + TAIWAN, REPUBLIC OF CHINA + +00-0F-EB (hex) Cylon Controls +000FEB (base 16) Cylon Controls + Clonshaugh Industrial Estate + Clonshaugh + Dublin 17 + IRELAND + +00-0F-EC (hex) Arkus Inc. +000FEC (base 16) Arkus Inc. + 3-8 Chuo-cho + Okayama 700-0836 + JAPAN + +00-0F-ED (hex) Anam Electronics Co., Ltd +000FED (base 16) Anam Electronics Co., Ltd + 645 Sungkok-dong + Danwon-gu + Ansan-city Kyungki-do 425-834 + KOREA, REPUBLIC OF + +00-0F-EE (hex) XTec, Incorporated +000FEE (base 16) XTec, Incorporated + 5775 Blue Lagoon Drive + Suite 280 + Miami Florida 33126 + UNITED STATES + +00-0F-EF (hex) Thales e-Transactions GmbH +000FEF (base 16) Thales e-Transactions GmbH + Konrad-Zuse-Straße 19-21 + Bad Hersfeld Hessen 36251 + GERMANY + +00-0F-F0 (hex) Sunray Co. Ltd. +000FF0 (base 16) Sunray Co. Ltd. + Osawa2-5-5 Mitaka + Tokyo 181-0015 + JAPAN + +00-0F-F1 (hex) nex-G Systems Pte.Ltd +000FF1 (base 16) nex-G Systems Pte.Ltd + 25 Kallang Ave + #07-05 + 339416 + SINGAPORE + +00-0F-F2 (hex) Loud Technologies Inc. +000FF2 (base 16) Loud Technologies Inc. + 16220 Wood-Red Rd. NE + Woodinville WA 98072 + UNITED STATES + +00-0F-F3 (hex) Jung Myoung Communications&Technology +000FF3 (base 16) Jung Myoung Communications&Technology + 1th FL., Dong IL Bldg.107 Yangjae-Dong + Seocho-Ku Seoul 137-130 + KOREA, REPUBLIC OF + +00-0F-F4 (hex) Guntermann & Drunck GmbH +000FF4 (base 16) Guntermann & Drunck GmbH + Dortmunder Str. 4a + Wilnsdorf NRW 57234 + GERMANY + +00-0F-F5 (hex) GN&S company +000FF5 (base 16) GN&S company + 301 Ansan S/W center, 643-7 wongok-dong + Ansan city Gyeonggi-do 425-130 + KOREA, REPUBLIC OF + +00-0F-F6 (hex) Darfon Electronics Corp. +000FF6 (base 16) Darfon Electronics Corp. + 31, Lane17, Zihciang N. Road + Gueishan + Taoyuan 333 + TAIWAN, REPUBLIC OF CHINA + +00-0F-F7 (hex) Cisco Systems +000FF7 (base 16) Cisco Systems + 80 West Tasman DR. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0F-F8 (hex) Cisco Systems +000FF8 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-0F-F9 (hex) Valcretec, Inc. +000FF9 (base 16) Valcretec, Inc. + Byucksan Digital Valley II 15F + 481-10, Gasan-Dong, Geumcheon-Gu + Seoul 153-803 + KOREA, REPUBLIC OF + +00-0F-FA (hex) Optinel Systems, Inc. +000FFA (base 16) Optinel Systems, Inc. + 6835 Deerpath Rd. + Elkridge MD 21075 + UNITED STATES + +00-0F-FB (hex) Nippon Denso Industry Co., Ltd. +000FFB (base 16) Nippon Denso Industry Co., Ltd. + 3-14-19 + Shibaura, Minato-ku Tokyo, 108-8560 + JAPAN + +00-0F-FC (hex) Merit Li-Lin Ent. +000FFC (base 16) Merit Li-Lin Ent. + No. 20 Wu-Long 6 Rd. + Wu-Ku Taipei 242 + TAIWAN, REPUBLIC OF CHINA + +00-0F-FD (hex) Glorytek Network Inc. +000FFD (base 16) Glorytek Network Inc. + 5F.-3, No.16, Sec. 1, Dongda Rd., + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-0F-FE (hex) G-PRO COMPUTER +000FFE (base 16) G-PRO COMPUTER + first arrange C YingHu industrial estate QingXi country DongGuan city + DongGuan GuangDong 523648 + CHINA + +00-0F-FF (hex) Control4 +000FFF (base 16) Control4 + 11734 S. Election Drive + Draper UT 84020 + UNITED STATES + +00-10-00 (hex) CABLE TELEVISION LABORATORIES, INC. +001000 (base 16) CABLE TELEVISION LABORATORIES, INC. + 858 Coal Creek Circle + Louisville CO 80027 + UNITED STATES + +00-10-01 (hex) Citel plc +001001 (base 16) Citel plc + Wheatcroft Business park, + Landmere Lane + Nottingham + UNITED KINGDOM + +00-10-02 (hex) ACTIA +001002 (base 16) ACTIA + 25 CHEMIN DE POUVOURVILLE + 31432 TOULOUSE, CEDEX 04 + FRANCE + +00-10-03 (hex) IMATRON, INC. +001003 (base 16) IMATRON, INC. + 389 OYSTER POINT BLVD. + SO. SAN FRANCISCO CA 94080 + UNITED STATES + +00-10-04 (hex) THE BRANTLEY COILE COMPANY,INC +001004 (base 16) THE BRANTLEY COILE COMPANY,INC + 545 RESEARCH DRIVE + ATHENS GA 30605 + UNITED STATES + +00-10-05 (hex) UEC COMMERCIAL +001005 (base 16) UEC COMMERCIAL + P.O. BOX 54, + MT. EDGECOMBE + 4300 DURBAN + SOUTH AFRICA + +00-10-06 (hex) Thales Contact Solutions Ltd. +001006 (base 16) Thales Contact Solutions Ltd. + Tolbar Way + Southampton, SO30 2ZP + UNITED KINGDOM + +00-10-07 (hex) CISCO SYSTEMS, INC. +001007 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-08 (hex) VIENNA SYSTEMS CORPORATION +001008 (base 16) VIENNA SYSTEMS CORPORATION + 6651 FRASERWOOD PLACE + SUITE #250 + RICHMOND, B.C. V6W 1J3 + CANADA + +00-10-09 (hex) HORO QUARTZ +001009 (base 16) HORO QUARTZ + Z.I. ROUTE DE NIORT + 85200 - FONTENAY LE COMTE + FRENCH GUIANA + +00-10-0A (hex) WILLIAMS COMMUNICATIONS GROUP +00100A (base 16) WILLIAMS COMMUNICATIONS GROUP + ADVANCED TECHNOLOGIES + 111 EAST FIRST + TULSA OK 74103 + UNITED STATES + +00-10-0B (hex) CISCO SYSTEMS, INC. +00100B (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-0C (hex) ITO CO., LTD. +00100C (base 16) ITO CO., LTD. + 8-2 MIYANOSHITA-CHO + HIRAKATA-CITY, OSAKA + JAPAN + +00-10-0D (hex) CISCO SYSTEMS, INC. +00100D (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR.-SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-0E (hex) MICRO LINEAR COPORATION +00100E (base 16) MICRO LINEAR COPORATION + 2092 CONCOURSE DRIVE + SAN JOSE CA 95131 + UNITED STATES + +00-10-0F (hex) INDUSTRIAL CPU SYSTEMS +00100F (base 16) INDUSTRIAL CPU SYSTEMS + 111-D W. DYER ROAD + SANTA ANA CA 92707 + UNITED STATES + +00-10-10 (hex) INITIO CORPORATION +001010 (base 16) INITIO CORPORATION + 2188 B DEL FRANCO STREET + SAN JOSE CA 95118 + UNITED STATES + +00-10-11 (hex) CISCO SYSTEMS, INC. +001011 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-12 (hex) PROCESSOR SYSTEMS (I) PVT LTD +001012 (base 16) PROCESSOR SYSTEMS (I) PVT LTD + 24 RICHMOND ROAD + BANGALORE 560 025 + INDIA + +00-10-13 (hex) Kontron +001013 (base 16) Kontron + 6260 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-10-14 (hex) CISCO SYSTEMS, INC. +001014 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-15 (hex) OOmon Inc. +001015 (base 16) OOmon Inc. + PO BOX 8241 + COBURG OR 97408 + UNITED STATES + +00-10-16 (hex) T.SQWARE +001016 (base 16) T.SQWARE + 6, PARC ARIANE + IMMEUBLE MERCURE + 78284 GUYANCOURT CEDEX + FRANCE + +00-10-17 (hex) MICOS GmbH +001017 (base 16) MICOS GmbH + ST.-JOBSER STR. 31 + D-52146 WURSELEN (Deutschland) + GERMANY + +00-10-18 (hex) BROADCOM CORPORATION +001018 (base 16) BROADCOM CORPORATION + 16215 ALTON PARKWAY + P.O. BOX 57013 + IRVINE CA 92619-7013 + UNITED STATES + +00-10-19 (hex) SIRONA DENTAL SYSTEMS GmbH & Co. KG +001019 (base 16) SIRONA DENTAL SYSTEMS GmbH & Co. KG + FABRIKSTRASSE 31 + 64625 BENSHEIM + GERMANY + +00-10-1A (hex) PictureTel Corp. +00101A (base 16) PictureTel Corp. + 100 MINUTEMAN ROAD, MS641 + ANDOVER MA 01810 + UNITED STATES + +00-10-1B (hex) CORNET TECHNOLOGY, INC. +00101B (base 16) CORNET TECHNOLOGY, INC. + 7F-4, NO. 46 CHUNG SHAN N.ROAD + SEC. 2, TAIPEI + TAJIKISTAN + +00-10-1C (hex) OHM TECHNOLOGIES INTL, LLC +00101C (base 16) OHM TECHNOLOGIES INTL, LLC + 4 EXECUTIVE CIRCLE, Suite 185 + IRVINE CA 92614 + UNITED STATES + +00-10-1D (hex) WINBOND ELECTRONICS CORP. +00101D (base 16) WINBOND ELECTRONICS CORP. + NO. 4, CREATION RD. III + SCIENCE-BASED INDUSTRIAL PARK + HSIN CHU + TAIWAN, REPUBLIC OF CHINA + +00-10-1E (hex) MATSUSHITA ELECTRONIC INSTRUMENTS CORP. +00101E (base 16) MATSUSHITA ELECTRONIC INSTRUMENTS CORP. + 23-9 KIYOHARA INDUSTRIAL PARK + UTSUNOMIYA Tochigi 321-32 + JAPAN + +00-10-1F (hex) CISCO SYSTEMS, INC. +00101F (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR. + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-20 (hex) Hand Held Products Inc +001020 (base 16) Hand Held Products Inc + 700 Visions Drive + Skaneateles Falls NY 13153-0208 + UNITED STATES + +00-10-21 (hex) ENCANTO NETWORKS, INC. +001021 (base 16) ENCANTO NETWORKS, INC. + 2953 BUNKER HILL LANE + SUITE #400 + SANTA CLARA CA 95054 + UNITED STATES + +00-10-22 (hex) SatCom Media Corporation +001022 (base 16) SatCom Media Corporation + 3255-7 SCOTT BLVD. + SANTA CLARA CA 95054 + UNITED STATES + +00-10-23 (hex) Network Equipment Technologies +001023 (base 16) Network Equipment Technologies + 6900 Paseo Padre Parkway + Freemont CA 94555-3660 + UNITED STATES + +00-10-24 (hex) NAGOYA ELECTRIC WORKS CO., LTD +001024 (base 16) NAGOYA ELECTRIC WORKS CO., LTD + 29-1 SHINODA, MIWA-CHO + AMA-GUN, AICHI 490-12 + JAPAN + +00-10-25 (hex) Grayhill, Inc +001025 (base 16) Grayhill, Inc + 561 Hillgrove Ave + LaGrange IL 60525 + UNITED STATES + +00-10-26 (hex) ACCELERATED NETWORKS, INC. +001026 (base 16) ACCELERATED NETWORKS, INC. + 31238 VIA COLINAS, UNIT + WESTLAKE VILLAGE CA 91362 + UNITED STATES + +00-10-27 (hex) L-3 COMMUNICATIONS EAST +001027 (base 16) L-3 COMMUNICATIONS EAST + ONE FEDERAL STREET - A&E-3ES + CAMDEN NJ 08102 + UNITED STATES + +00-10-28 (hex) COMPUTER TECHNICA, INC. +001028 (base 16) COMPUTER TECHNICA, INC. + 3-5-19 HIGASHINAKA HAKATA-KU + FUKUOKA-SI + FUKUOKA 816 + JAPAN + +00-10-29 (hex) CISCO SYSTEMS, INC. +001029 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-2A (hex) ZF MICROSYSTEMS, INC. +00102A (base 16) ZF MICROSYSTEMS, INC. + 1052 ELWELL COURT + PALO ALTO CA 94303-4307 + UNITED STATES + +00-10-2B (hex) UMAX DATA SYSTEMS, INC. +00102B (base 16) UMAX DATA SYSTEMS, INC. + NO. 1-1, R&D ROAD 2 + SCIENCE-BASED INDUSTRIAL PARK + HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-10-2C (hex) Lasat Networks A/S +00102C (base 16) Lasat Networks A/S + Skalhuse 13 + SK-9240 Nibe + DENMARK + +00-10-2D (hex) HITACHI SOFTWARE ENGINEERING +00102D (base 16) HITACHI SOFTWARE ENGINEERING + 5-79, ONOECHO, NAKA-KU + YOKOHAMA 231 + JAPAN + +00-10-2E (hex) NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD. +00102E (base 16) NETWORK SYSTEMS & TECHNOLOGIES PVT. LTD. + PLOT NO. 2, COCHIN EXPORT PROCESSING ZO + KAKKANAD, COCHIN 682 030 + INDIA + +00-10-2F (hex) CISCO SYSTEMS, INC. +00102F (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR. + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-30 (hex) EION Inc. +001030 (base 16) EION Inc. + 320 March Road + Suite 500 + Ottawa ON K2K 2E3 + CANADA + +00-10-31 (hex) OBJECTIVE COMMUNICATIONS, INC. +001031 (base 16) OBJECTIVE COMMUNICATIONS, INC. + 75 ROCHESTER AVE. + UNIT 1 + PORTSMOUTH NH 03801 + UNITED STATES + +00-10-32 (hex) ALTA TECHNOLOGY +001032 (base 16) ALTA TECHNOLOGY + 9500 SOUTH 500 WEST - STE #212 + SANDY UT 84070 + UNITED STATES + +00-10-33 (hex) ACCESSLAN COMMUNICATIONS, INC. +001033 (base 16) ACCESSLAN COMMUNICATIONS, INC. + 44 AIRPORT PARKWAY + SAN JOSE CA 95110 + UNITED STATES + +00-10-34 (hex) GNP Computers +001034 (base 16) GNP Computers + 555 E.Huntington Drive + Monrovia CA 91016 + UNITED STATES + +00-10-35 (hex) ELITEGROUP COMPUTER SYSTEMS CO., LTD +001035 (base 16) ELITEGROUP COMPUTER SYSTEMS CO., LTD + 6F, NO. 88, SEC. 6 + CHUNG SHAN N. RD. + Shih Lin TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-10-36 (hex) INTER-TEL INTEGRATED SYSTEMS +001036 (base 16) INTER-TEL INTEGRATED SYSTEMS + 7300 W. BOSTON STREET + CHANDLER AZ 85226 + UNITED STATES + +00-10-37 (hex) CYQ've Technology Co., Ltd. +001037 (base 16) CYQ've Technology Co., Ltd. + COSMO BLDG. 10F, NO.1-7 + SHINJUKU 1-CHOME + SHINJUKU-KU, TOKYO 160 + JAPAN + +00-10-38 (hex) MICRO RESEARCH INSTITUTE, INC. +001038 (base 16) MICRO RESEARCH INSTITUTE, INC. + 2F, 2L-2-5 MINAMI SHINAGAWA + SHINAGAWA-KU + TOKYO + JAPAN + +00-10-39 (hex) Vectron Systems AG +001039 (base 16) Vectron Systems AG + Willy-Brandt-Weg 41 + 48155 Muenster + GERMANY + +00-10-3A (hex) DIAMOND NETWORK TECH +00103A (base 16) DIAMOND NETWORK TECH + P.O. BOX 84525 + GREENSIDE 2034 + SOUTH AFRICA + +00-10-3B (hex) HIPPI NETWORKING FORUM +00103B (base 16) HIPPI NETWORKING FORUM + PO BOX 10173 + ALBUQUERQUE NM 87184-0173 + UNITED STATES + +00-10-3C (hex) IC ENSEMBLE, INC. +00103C (base 16) IC ENSEMBLE, INC. + 3255-2 SCOTT BLVD.--STE.#105 + SANTA CLARA CA 95054 + UNITED STATES + +00-10-3D (hex) PHASECOM, LTD. +00103D (base 16) PHASECOM, LTD. + P.O. BOX 45017 + JERUSALEM 91450 + ISRAEL + +00-10-3E (hex) NETSCHOOLS CORPORATION +00103E (base 16) NETSCHOOLS CORPORATION + 2003 LANDINGS DRIVE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-10-3F (hex) TOLLGRADE COMMUNICATIONS, INC. +00103F (base 16) TOLLGRADE COMMUNICATIONS, INC. + 493 NIXON ROAD + CHESWICK PA 15024 + UNITED STATES + +00-10-40 (hex) INTERMEC CORPORATION +001040 (base 16) INTERMEC CORPORATION + 6001 36TH AVE WEST + P.O. BOX 4280 + EVERETT WA 98203-9280 + UNITED STATES + +00-10-41 (hex) BRISTOL BABCOCK, INC. +001041 (base 16) BRISTOL BABCOCK, INC. + 1100 BUCKINGHAM STREET + WATERTOWN CT 06795 + UNITED STATES + +00-10-42 (hex) Alacritech, Inc. +001042 (base 16) Alacritech, Inc. + 1995 N. First Street + Suite 200 + San Jose CA 95112 + UNITED STATES + +00-10-43 (hex) A2 CORPORATION +001043 (base 16) A2 CORPORATION + 6-14-11 YUTAKA-CHO + SHINAGAWA-KU + TOKYO + JAPAN + +00-10-44 (hex) InnoLabs Corporation +001044 (base 16) InnoLabs Corporation + 2F-4, NO. 16, LANE 609, CHUNG-HSIN RD. + SEC. 5 SAN-CHUNG CITY + Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-10-45 (hex) Nortel Networks +001045 (base 16) Nortel Networks + OPTera Solutions Division + 340 Terry Fox Drive + Kanata Ontario K2K-2X3 + CANADA + +00-10-46 (hex) ALCORN MCBRIDE INC. +001046 (base 16) ALCORN MCBRIDE INC. + 3300 S. HIAWASSEE #105 + ORLANDO FL 32835 + UNITED STATES + +00-10-47 (hex) ECHO ELETRIC CO. LTD. +001047 (base 16) ECHO ELETRIC CO. LTD. + NO.1800 ICHIGAO CHO + MIDORI WARD + YOKOHAMA CITY 225 + JAPAN + +00-10-48 (hex) HTRC AUTOMATION, INC. +001048 (base 16) HTRC AUTOMATION, INC. + 285 LAVAL STREET + BROMPTONVILLE + QUEBEC J0B 1H0 + CANADA + +00-10-49 (hex) ShoreTel, Inc +001049 (base 16) ShoreTel, Inc + 960 Stewart Drive + Sunnyvale CA 94085 + UNITED STATES + +00-10-4A (hex) THE PARVUC CORPORATION +00104A (base 16) THE PARVUC CORPORATION + 396 W. IRONWOOD DRIVE + SALT LAKE CITY UT 84115 + UNITED STATES + +00-10-4B (hex) 3COM CORPORATION +00104B (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + MAILSTOP: 4220 + SANTA CLARA CA 95052 + UNITED STATES + +00-10-4C (hex) LeCroy Corporation +00104C (base 16) LeCroy Corporation + 3385 Scott Blvd. + Santa Clara CA 95054 + UNITED STATES + +00-10-4D (hex) SURTEC INDUSTRIES, INC. +00104D (base 16) SURTEC INDUSTRIES, INC. + NO.11, ALLEY 16, LANE 337 + TA-TUNG ROAD SEC.1, SHI-CHIH + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-10-4E (hex) CEOLOGIC +00104E (base 16) CEOLOGIC + ZA DE PISSALOOP + RUE EDOUARD BRANLY + 78192 TRAPPES + FRANCE + +00-10-4F (hex) Sun Microsystems, Inc. +00104F (base 16) Sun Microsystems, Inc. + 4200 Network Circle + Santa Clara CO 95054 + UNITED STATES + +00-10-50 (hex) RION CO., LTD. +001050 (base 16) RION CO., LTD. + 3-20-41 HIGASHIMOTOMACHI + KOKUBUNJI, TOKYO 185 + JAPAN + +00-10-51 (hex) CMICRO CORPORATION +001051 (base 16) CMICRO CORPORATION + 17-20-2 KAMINO-CHO + TAKAMATSU-SHI, KAGAWA 761 + JAPAN + +00-10-52 (hex) METTLER-TOLEDO (ALBSTADT) GMBH +001052 (base 16) METTLER-TOLEDO (ALBSTADT) GMBH + P.O. BOX 2 50 + D-72423 ALBSTADT + GERMANY + +00-10-53 (hex) COMPUTER TECHNOLOGY CORP. +001053 (base 16) COMPUTER TECHNOLOGY CORP. + 50 W. TECHNECENTER DRIVE + MILFORD OH 45150 + UNITED STATES + +00-10-54 (hex) CISCO SYSTEMS, INC. +001054 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-55 (hex) FUJITSU MICROELECTRONICS, INC. +001055 (base 16) FUJITSU MICROELECTRONICS, INC. + 3545 NORTH FIRST STREET + SAN JOSE CA 95134-1806 + UNITED STATES + +00-10-56 (hex) SODICK CO., LTD. +001056 (base 16) SODICK CO., LTD. + 3-12-1 NAKAMACHIDAI + TSUZUKI-KU, YOKOHAMA KANAGAWA 224 + JAPAN + +00-10-57 (hex) Rebel.com, Inc. +001057 (base 16) Rebel.com, Inc. + 150 ISABELLA STREET--STE. 1000 + OTTAWA, ONTARIO K1S 1V7 + CANADA + +00-10-58 (hex) ArrowPoint Communications +001058 (base 16) ArrowPoint Communications + 235 LITTLETON ROAD + WESTFORD MA 01886 + UNITED STATES + +00-10-59 (hex) DIABLO RESEARCH CO. LLC +001059 (base 16) DIABLO RESEARCH CO. LLC + 825 STEWART DRIVE + SUNNYVALE CA 94086 + UNITED STATES + +00-10-5A (hex) 3COM CORPORATION +00105A (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + MAILSTOP: 4220 + SANTA CLARA CA 95052 + UNITED STATES + +00-10-5B (hex) NET INSIGHT AB +00105B (base 16) NET INSIGHT AB + Box 42093 + Stockholm SE-126 14 + SWEDEN + +00-10-5C (hex) QUANTUM DESIGNS (H.K.) LTD. +00105C (base 16) QUANTUM DESIGNS (H.K.) LTD. + 5/F., SOMERSET HOUSE, TAIKOO PLACE + 979 KING'S ROAD, + QUARRY BAY + HONG KONG + +00-10-5D (hex) Draeger Medical +00105D (base 16) Draeger Medical + Moislinger Allee 53-55 + Luebeck D-23542 + GERMANY + +00-10-5E (hex) HEKIMIAN LABORATORIES, INC. +00105E (base 16) HEKIMIAN LABORATORIES, INC. + 15200 OMEGA DRIVE + ROCKVILLE MD 20850-3240 + UNITED STATES + +00-10-5F (hex) IN-SNEC +00105F (base 16) IN-SNEC + 2 RUE DE CAEN + 14740 BRETTEVILLE L'ORGUEILLEUSE + FRANCE + +00-10-60 (hex) BILLIONTON SYSTEMS, INC. +001060 (base 16) BILLIONTON SYSTEMS, INC. + 3F-1, NO. 8, LANE 99 + PU-DING RD. + HSIN-CHU + TAIWAN, REPUBLIC OF CHINA + +00-10-61 (hex) HOSTLINK CORP. +001061 (base 16) HOSTLINK CORP. + 10F-1, NO. 181 + SEC.1, TA-TUNG RD. + HSI-CHIH, TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-10-62 (hex) NX SERVER, ILNC. +001062 (base 16) NX SERVER, ILNC. + 5401 E. LA PALMA AVE. + ANAHEIM CA 92807 + UNITED STATES + +00-10-63 (hex) STARGUIDE DIGITAL NETWORKS +001063 (base 16) STARGUIDE DIGITAL NETWORKS + 5754 PACIFIC CENTER BLVD. + SAN DIEGO CA 92121 + UNITED STATES + +00-10-64 (hex) DNPG, LLC +001064 (base 16) DNPG, LLC + 20 North Wentworth Avenue + Londonderry NH 03053 + UNITED STATES + +00-10-65 (hex) RADYNE CORPORATION +001065 (base 16) RADYNE CORPORATION + 5225 S. 37TH STREET + PHOENIX AZ 85040 + UNITED STATES + +00-10-66 (hex) ADVANCED CONTROL SYSTEMS, INC. +001066 (base 16) ADVANCED CONTROL SYSTEMS, INC. + 2755 NORTHWOODS PARKWAY + NORCROSS GA 30071 + UNITED STATES + +00-10-67 (hex) REDBACK NETWORKS, INC. +001067 (base 16) REDBACK NETWORKS, INC. + 2570 NORTH 1ST STREET + SUITE #410 + SAN JOSE CA 95131 + UNITED STATES + +00-10-68 (hex) COMOS TELECOM +001068 (base 16) COMOS TELECOM + SAEHAN B/D/, 27-1 SUPYO-DONG + CHUNG-GU, SEOUL 100-230 + KOREA, REPUBLIC OF + +00-10-69 (hex) HELIOSS COMMUNICATIONS, INC. +001069 (base 16) HELIOSS COMMUNICATIONS, INC. + 391 TOTTEM POND RD.- STE#303 + WALTHAM MA 02154 + UNITED STATES + +00-10-6A (hex) DIGITAL MICROWAVE CORPORATION +00106A (base 16) DIGITAL MICROWAVE CORPORATION + 170 ROSE ORCHARD WAY + SAN JOSE CA 95134 + UNITED STATES + +00-10-6B (hex) SONUS NETWORKS, INC. +00106B (base 16) SONUS NETWORKS, INC. + 5 CARLISLE ROAD + WESTFORD MA 01886 + UNITED STATES + +00-10-6C (hex) Infratec AG +00106C (base 16) Infratec AG + Werner-von-Siemens-Str. 7 + 64625 Bensheim + GERMANY + +00-10-6D (hex) Axxcelera Broadband Wireless +00106D (base 16) Axxcelera Broadband Wireless + 1600 East Parham Road + Richmond VA 23228 + UNITED STATES + +00-10-6E (hex) TADIRAN COM. LTD. +00106E (base 16) TADIRAN COM. LTD. + 26 HASHOFTIM ST. + HOLON 58102 + ISRAEL + +00-10-6F (hex) TRENTON TECHNOLOGY INC. +00106F (base 16) TRENTON TECHNOLOGY INC. + 2350 CENTENNIAL DRIVE + GAINESVILLE GA 30504 + UNITED STATES + +00-10-70 (hex) CARADON TREND LTD. +001070 (base 16) CARADON TREND LTD. + P.O. BOX 34, HORSHAM + WEST SUSSEX, RH12 2YF ENGLAND + UNITED KINGDOM + +00-10-71 (hex) ADVANET INC. +001071 (base 16) ADVANET INC. + 3-20-8 NODA + OKAYAMI 700 + JAPAN + +00-10-72 (hex) GVN TECHNOLOGIES, INC. +001072 (base 16) GVN TECHNOLOGIES, INC. + 8200 BRYAN DAIRY ROAD + SUITE #100 + LARGO FL 33777 + UNITED STATES + +00-10-73 (hex) Technobox, Inc. +001073 (base 16) Technobox, Inc. + 140 Mount Holly Bypass + Unit 1 + Lumberton NJ 08048 + UNITED STATES + +00-10-74 (hex) ATEN INTERNATIONAL CO., LTD. +001074 (base 16) ATEN INTERNATIONAL CO., LTD. + 12F, NO.101, SUNG CHIANG RD. + TAIPEI, 10428 + TAIWAN, REPUBLIC OF CHINA + +00-10-75 (hex) Maxtor Corporation +001075 (base 16) Maxtor Corporation + 2452 Clover Basin Dr. + Logmont CO 80503 + UNITED STATES + +00-10-76 (hex) EUREM GmbH +001076 (base 16) EUREM GmbH + JULICHER STR. 338B + D-52070 AACHEN + GERMANY + +00-10-77 (hex) SAF DRIVE SYSTEMS, LTD. +001077 (base 16) SAF DRIVE SYSTEMS, LTD. + 88 ARDELT AVE. + KITCHENER, ONTARIO N2C 2C9 + CANADA + +00-10-78 (hex) NUERA COMMUNICATIONS, INC. +001078 (base 16) NUERA COMMUNICATIONS, INC. + 10445 PACIFIC CENTER COURT + SAN DIEGO CA 92121 + UNITED STATES + +00-10-79 (hex) CISCO SYSTEMS, INC. +001079 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR. + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-7A (hex) AmbiCom, Inc. +00107A (base 16) AmbiCom, Inc. + 2450 SCOTT BLVD., #305 + SANTA CLARA CA 95050 + UNITED STATES + +00-10-7B (hex) CISCO SYSTEMS, INC. +00107B (base 16) CISCO SYSTEMS, INC. + 170 W.TASMAN DR.-SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-7C (hex) P-COM, INC. +00107C (base 16) P-COM, INC. + 3175 S. WINCHESTER BLVD. + CAMPBELL CA 95008 + UNITED STATES + +00-10-7D (hex) AURORA COMMUNICATIONS, LTD. +00107D (base 16) AURORA COMMUNICATIONS, LTD. + P.O. BOX 1942 + MACQUARIE CENTRE, NORTH RYDE + NSW 2113 + AUSTRALIA + +00-10-7E (hex) BACHMANN ELECTRONIC GmbH +00107E (base 16) BACHMANN ELECTRONIC GmbH + KREUZAECKERWEG 33 + A 6806 FELDKIRCH + AUSTRIA + +00-10-7F (hex) CRESTRON ELECTRONICS, INC. +00107F (base 16) CRESTRON ELECTRONICS, INC. + 101 BROADWAY + CRESSKILL NJ 07626 + UNITED STATES + +00-10-80 (hex) METAWAVE COMMUNICATIONS +001080 (base 16) METAWAVE COMMUNICATIONS + 8700 148TH AVENUE N.E. + REDMOND WA 98052 + UNITED STATES + +00-10-81 (hex) DPS, INC. +001081 (base 16) DPS, INC. + 4922 EAST YALE AVENUE + FRESNO CA 93727 + UNITED STATES + +00-10-82 (hex) JNA TELECOMMUNICATIONS LIMITED +001082 (base 16) JNA TELECOMMUNICATIONS LIMITED + 16 SMITH ST, CHATSWOOD + NSW 2067 + AUSTRALIA + +00-10-83 (hex) HEWLETT-PACKARD COMPANY +001083 (base 16) HEWLETT-PACKARD COMPANY + MAIL STOP 42LE + 110000 WOLFE ROAD + CUPERTINO CA 95014 + UNITED STATES + +00-10-84 (hex) K-BOT COMMUNICATIONS +001084 (base 16) K-BOT COMMUNICATIONS + P.O. BOX 410 + NORTON MA 02766 + UNITED STATES + +00-10-85 (hex) POLARIS COMMUNICATIONS, INC. +001085 (base 16) POLARIS COMMUNICATIONS, INC. + 10200 SW ALLEN BLVD. + BEAVERTON OR 97005 + UNITED STATES + +00-10-86 (hex) ATTO TECHNOLOGY, INC. +001086 (base 16) ATTO TECHNOLOGY, INC. + 40 HAZELWOOD DRIVE + AMHERST NY 14228 + UNITED STATES + +00-10-87 (hex) Xstreamis PLC +001087 (base 16) Xstreamis PLC + OXFORD SCIENCE PARK + G10. 2 MAGDALEN CENTRE ROBERT ROBINSON + OXFORD 0X4 4GA England + UNITED STATES + +00-10-88 (hex) AMERICAN NETWORKS INC. +001088 (base 16) AMERICAN NETWORKS INC. + 6800 ORANGETHORPE AVE. #A + BUENA PARK CA 90620 + UNITED STATES + +00-10-89 (hex) WebSonic +001089 (base 16) WebSonic + 3466 EDWARD AVE. + SANTA CLARA CA 95054 + UNITED STATES + +00-10-8A (hex) TeraLogic, Inc. +00108A (base 16) TeraLogic, Inc. + 707 CALIFORNIA STREET + MOUNTAIN VIEW CA 94041 + UNITED STATES + +00-10-8B (hex) LASERANIMATION SOLLINGER GmbH +00108B (base 16) LASERANIMATION SOLLINGER GmbH + CRELLESTR. 19/20 + D 10827 BERLIN + GERMANY + +00-10-8C (hex) FUJITSU TELECOMMUNICATIONS EUROPE, LTD. +00108C (base 16) FUJITSU TELECOMMUNICATIONS EUROPE, LTD. + SOLIHULL PARKWAY + BIRMINGHAM BUSINESS PARK + BIRMINGHAM B37 7YU England + UNITED KINGDOM + +00-10-8D (hex) Johnson Controls, Inc. +00108D (base 16) Johnson Controls, Inc. + 507 E. Michigan St. + P.O. Box 423 / M73 + Milwaukee WI 53201 + UNITED STATES + +00-10-8E (hex) HUGH SYMONS CONCEPT Technologies Ltd. +00108E (base 16) HUGH SYMONS CONCEPT Technologies Ltd. + Alder Hills Park + 16 Alder Hills + Poole, Dorset BM12 4AR + UNITED KINGDOM + +00-10-8F (hex) RAPTOR SYSTEMS +00108F (base 16) RAPTOR SYSTEMS + 69 HICKORY AVE. + WALTHAM MA 02154 + UNITED STATES + +00-10-90 (hex) CIMETRICS, INC. +001090 (base 16) CIMETRICS, INC. + 55 TEMPLE PLACE + BOSTON MA 02111 + UNITED STATES + +00-10-91 (hex) NO WIRES NEEDED BV +001091 (base 16) NO WIRES NEEDED BV + P.O. BOX 343 + 3720 AH BILTHOVEN + NETHERLANDS + +00-10-92 (hex) NETCORE INC. +001092 (base 16) NETCORE INC. + 12F-2, 537, SEC.2 + KUANG-FU ROAD, + HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-10-93 (hex) CMS COMPUTERS, LTD. +001093 (base 16) CMS COMPUTERS, LTD. + 201 ARCADIA + NARIMAN POINT + MUMBAI 400 0021 + INDIA + +00-10-94 (hex) Performance Analysis Broadband, Spirent plc +001094 (base 16) Performance Analysis Broadband, Spirent plc + 27349 Agoura Road + Calabasas Hills CA 91301 + UNITED STATES + +00-10-95 (hex) Thomson Inc. +001095 (base 16) Thomson Inc. + 101 West 103rd Street + Indianapolis IN 46290-1102 + UNITED STATES + +00-10-96 (hex) TRACEWELL SYSTEMS, INC. +001096 (base 16) TRACEWELL SYSTEMS, INC. + 567 ENTERPRISE DRIVE + WESTERVILLE OH 43081 + UNITED STATES + +00-10-97 (hex) WinNet Metropolitan Communications Systems, Inc. +001097 (base 16) WinNet Metropolitan Communications Systems, Inc. + 661 EAST ARQUES AVE. + SUNNYVALE CA 94086 + UNITED STATES + +00-10-98 (hex) STARNET TECHNOLOGIES, INC. +001098 (base 16) STARNET TECHNOLOGIES, INC. + 2210 O'TOOLE AVE. + SAN JOSE CA 95131 + UNITED STATES + +00-10-99 (hex) InnoMedia, Inc. +001099 (base 16) InnoMedia, Inc. + 4800 GREAT AMERICA PARKWAY + SUITE #400 + SANTA CLARA CA 95054 + UNITED STATES + +00-10-9A (hex) NETLINE +00109A (base 16) NETLINE + 7, Rue de Bievres + 92140 CLAMART + FRANCE + +00-10-9B (hex) Emulex Corporation +00109B (base 16) Emulex Corporation + 3333 Susan Street + Costa Mesa CA 92626 + UNITED STATES + +00-10-9C (hex) M-SYSTEM CO., LTD. +00109C (base 16) M-SYSTEM CO., LTD. + 1-1-25 SHIN URASHIMA CHOU + KANAGAWA-KU + YOKOHAMA 221 + JAPAN + +00-10-9D (hex) CLARINET SYSTEMS, INC. +00109D (base 16) CLARINET SYSTEMS, INC. + 1415 KOLL CIRCLE #101 + SAN JOSE CA 95112 + UNITED STATES + +00-10-9E (hex) AWARE, INC. +00109E (base 16) AWARE, INC. + ONE OAK PARK + BEDFORD MA 01730 + UNITED STATES + +00-10-9F (hex) PAVO, INC. +00109F (base 16) PAVO, INC. + 95 YESLER WAY + SEATTLE WA 98104 + UNITED STATES + +00-10-A0 (hex) INNOVEX TECHNOLOGIES, INC. +0010A0 (base 16) INNOVEX TECHNOLOGIES, INC. + KEYSTONE COMMONS + 526 BRADDOCK AVE. + TURTLE CREEK PA 15145 + UNITED STATES + +00-10-A1 (hex) KENDIN SEMICONDUCTOR, INC. +0010A1 (base 16) KENDIN SEMICONDUCTOR, INC. + 1550 S. BASCOM AVE., STE. #250 + CAMPBELL CA 95008 + UNITED STATES + +00-10-A2 (hex) TNS +0010A2 (base 16) TNS + 800 Third Street, Suite B100 + HERNDON VA 20170 + UNITED STATES + +00-10-A3 (hex) OMNITRONIX, INC. +0010A3 (base 16) OMNITRONIX, INC. + 760 HARRISON STREET + SEATTLE WA 98109 + UNITED STATES + +00-10-A4 (hex) XIRCOM +0010A4 (base 16) XIRCOM + 2300 CORPORATE CENTER DR. + THOUSAND OAKS CA 91320 + UNITED STATES + +00-10-A5 (hex) OXFORD INSTRUMENTS +0010A5 (base 16) OXFORD INSTRUMENTS + INDUSTRIAL ANALYSIS GROUP + 19/20 NUFFIELD WAY + Abingdon, Oxon OX14 1TX + UNITED KINGDOM + +00-10-A6 (hex) CISCO SYSTEMS, INC. +0010A6 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-A7 (hex) UNEX TECHNOLOGY CORPORATION +0010A7 (base 16) UNEX TECHNOLOGY CORPORATION + 8F-5, #130, SZE WEI RD., + HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-10-A8 (hex) RELIANCE COMPUTER CORP. +0010A8 (base 16) RELIANCE COMPUTER CORP. + 3032 BUNKER HILL LANE + SUITE 201 + SANTA CLARA CA 95054 + UNITED STATES + +00-10-A9 (hex) ADHOC TECHNOLOGIES +0010A9 (base 16) ADHOC TECHNOLOGIES + 1150 FIRST STREET + SAN JOSE CA 95112 + UNITED STATES + +00-10-AA (hex) MEDIA4, INC. +0010AA (base 16) MEDIA4, INC. + 250 14TH ST. NW - STE #4002 + ATLANTA GA 30318 + UNITED STATES + +00-10-AB (hex) KOITO INDUSTRIES, LTD. +0010AB (base 16) KOITO INDUSTRIES, LTD. + 100 MAEDA-CHO, TOTSUKA-KU + YOKOHAMA 244 + JAPAN + +00-10-AC (hex) IMCI TECHNOLOGIES +0010AC (base 16) IMCI TECHNOLOGIES + 8401 OLD COURT HKOUSE RD + SUITE #200 + VIENNA VA 22182 + UNITED STATES + +00-10-AD (hex) SOFTRONICS USB, INC. +0010AD (base 16) SOFTRONICS USB, INC. + 5085 LIST DRIVE + COLORADO SPRINGS CO 80919 + UNITED STATES + +00-10-AE (hex) SHINKO ELECTRIC INDUSTRIES CO. +0010AE (base 16) SHINKO ELECTRIC INDUSTRIES CO. + 80 OSHIMADA-MACHI + NAGANO-SHI 381-22 + JAPAN + +00-10-AF (hex) TAC SYSTEMS, INC. +0010AF (base 16) TAC SYSTEMS, INC. + 1035 PUTMAN DRIVE--STE. + HUNTSVILLE AL 35816-2271 + UNITED STATES + +00-10-B0 (hex) MERIDIAN TECHNOLOGY CORP. +0010B0 (base 16) MERIDIAN TECHNOLOGY CORP. + 11 MCBRIDE CORP. CENTER DR. + CHESTERFIELD MD 63005 + UNITED STATES + +00-10-B1 (hex) FOR-A CO., LTD. +0010B1 (base 16) FOR-A CO., LTD. + 2-3-3 OOSAKU + SAKURA CITY, + CHIBA PREF. 285 + JAPAN + +00-10-B2 (hex) COACTIVE AESTHETICS +0010B2 (base 16) COACTIVE AESTHETICS + 4000 BRIDGEWAY - STE. #303 + SAUSALITA CA 94965 + UNITED STATES + +00-10-B3 (hex) NOKIA MULTIMEDIA TERMINALS +0010B3 (base 16) NOKIA MULTIMEDIA TERMINALS + NOKIA HOME COMMUNICATIONS + DISKETTGATAN 11 + SE-583 35 LINKOPING + SWEDEN + +00-10-B4 (hex) ATMOSPHERE NETWORKS +0010B4 (base 16) ATMOSPHERE NETWORKS + 10460 BANDLEY DRIVE + CUPERTINO CA 95014 + UNITED STATES + +00-10-B5 (hex) ACCTON TECHNOLOGY CORPORATION +0010B5 (base 16) ACCTON TECHNOLOGY CORPORATION + NO.1, CREATION RD. III + SCIENCE-BASED INDUSTRIAL PARK + HSINCHU 300 + TAIWAN, REPUBLIC OF CHINA + +00-10-B6 (hex) ENTRATA COMMUNICATIONS CORP. +0010B6 (base 16) ENTRATA COMMUNICATIONS CORP. + 574 HERITAGE RD. + SOUTHBURY CT 06488 + UNITED STATES + +00-10-B7 (hex) COYOTE TECHNOLOGIES, LLC +0010B7 (base 16) COYOTE TECHNOLOGIES, LLC + 4360 PARK TERRACE DRIVE + WESTLAKE VILLAGE CA 91361 + UNITED STATES + +00-10-B8 (hex) ISHIGAKI COMPUTER SYSTEM CO. +0010B8 (base 16) ISHIGAKI COMPUTER SYSTEM CO. + 1-1-1, KYOBASHI, + CHUO-KU + Tokyo + JAPAN + +00-10-B9 (hex) MAXTOR CORP. +0010B9 (base 16) MAXTOR CORP. + 2190 MILLER DRIVE + LONGMONT CO 80501-6744 + UNITED STATES + +00-10-BA (hex) MARTINHO-DAVIS SYSTEMS, INC. +0010BA (base 16) MARTINHO-DAVIS SYSTEMS, INC. + 1260 OLD INNES ROAD + OTTAWA, ONTARIO K1B 3V3 + CANADA + +00-10-BB (hex) DATA & INFORMATION TECHNOLOGY +0010BB (base 16) DATA & INFORMATION TECHNOLOGY + TECHNOLOGY HOUSE + 1 NORMANTON LANE + BOTTESFORD, NOTTINGHAM NG13 OEL + UNITED KINGDOM + +00-10-BC (hex) Aastra Telecom +0010BC (base 16) Aastra Telecom + 8 Federal Street + Billerica MA 01821-3570 + UNITED STATES + +00-10-BD (hex) THE TELECOMMUNICATION TECHNOLOGY COMMITTEE +0010BD (base 16) THE TELECOMMUNICATION TECHNOLOGY COMMITTEE + 1-2-11, HAMAMATSU-CHO + MINATO-KU, TOKYO 105 + JAPAN + +00-10-BE (hex) TELEXIS CORP. +0010BE (base 16) TELEXIS CORP. + 2427 HOLLY LANE + OTTAWA, ONTARIO K1V 7P2 7P2 + CANADA + +00-10-BF (hex) InterAir Wireless +0010BF (base 16) InterAir Wireless + 485 CAYUGA ROAD + BUFFALO NY 14225-0222 + UNITED STATES + +00-10-C0 (hex) ARMA, INC. +0010C0 (base 16) ARMA, INC. + 7887 DUNBROOK ROAD--STE. A + SAN DIEGO CA 92126 + UNITED STATES + +00-10-C1 (hex) OI ELECTRIC CO., LTD. +0010C1 (base 16) OI ELECTRIC CO., LTD. + 7-3-16 KIKUNA + KOHOKU-KU + YOKOHAMA 222 + JAPAN + +00-10-C2 (hex) WILLNET, INC. +0010C2 (base 16) WILLNET, INC. + JOWA-TAKANAWA BLDG. 8F + TAKANAWA 1-5-4, MINATO-KU, + TOKYO + JAPAN + +00-10-C3 (hex) CSI-CONTROL SYSTEMS +0010C3 (base 16) CSI-CONTROL SYSTEMS + INTERNATIONAL + POB 59469 + DALLAS TX 75229 + UNITED STATES + +00-10-C4 (hex) MEDIA LINKS CO., LTD. +0010C4 (base 16) MEDIA LINKS CO., LTD. + KSP EAST BLDG. 604, SAKADO 3-2-1, + TAKATSU-KU KAWASAKI-SHI, + Kanagawa-ken 214 + JAPAN + +00-10-C5 (hex) PROTOCOL TECHNOLOGIES, INC. +0010C5 (base 16) PROTOCOL TECHNOLOGIES, INC. + 4 FIRST STREET + BRIDGEWATER MA 02324 + UNITED STATES + +00-10-C6 (hex) USI +0010C6 (base 16) USI + 141, LANE 351, TAIPING RD. + SEC.1, + TSAO TUEN, NAN-TOU 542 + TAIWAN, REPUBLIC OF CHINA + +00-10-C7 (hex) DATA TRANSMISSION NETWORK +0010C7 (base 16) DATA TRANSMISSION NETWORK + 9110 W. DODGE RD. - STE.#200 + OMAHA NE 68114 + UNITED STATES + +00-10-C8 (hex) COMMUNICATIONS ELECTRONICS SECURITY GROUP +0010C8 (base 16) COMMUNICATIONS ELECTRONICS SECURITY GROUP + 10/4W22 FIDDLERS GREEN LANE + Benhall, Cheltenham Glouster GL52 5AJ + UNITED KINGDOM + +00-10-C9 (hex) MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO. +0010C9 (base 16) MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO. + + SHONAN Works, 730-11, KAMIMACHIYA + Kamakura-city, Kanagawa 247 + JAPAN + +00-10-CA (hex) INTEGRAL ACCESS +0010CA (base 16) INTEGRAL ACCESS + 2021 MIDWEST ROAD, STE #203 + OAKBROOK IL 60521 + UNITED STATES + +00-10-CB (hex) FACIT K.K. +0010CB (base 16) FACIT K.K. + HIMEI NIHOMBASHI BLDG. 3F + 12-3-NIHOMBASHI-KOBUNACHO + CHUO-KU, TOKYO 103 + JAPAN + +00-10-CC (hex) CLP COMPUTER LOGISTIK PLANUNG GmbH +0010CC (base 16) CLP COMPUTER LOGISTIK PLANUNG GmbH + BASSERMANNSTR. 21 + D-81245 MUENCHEN + GERMANY + +00-10-CD (hex) INTERFACE CONCEPT +0010CD (base 16) INTERFACE CONCEPT + 3 VENELLE de KERGOS + 29000 QUIMPER + FRANCE + +00-10-CE (hex) VOLAMP, LTD. +0010CE (base 16) VOLAMP, LTD. + UNIT 3 RIVERSIDE BUSINESS PARK + DOGFLUD WAY, + FARNHAM, SURREY ENGLAND + UNITED KINGDOM + +00-10-CF (hex) FIBERLANE COMMUNICATIONS +0010CF (base 16) FIBERLANE COMMUNICATIONS + 1318 REDWOOD WAY, #200 + PETALUMA CA 94954 + UNITED STATES + +00-10-D0 (hex) WITCOM, LTD. +0010D0 (base 16) WITCOM, LTD. + P.O.B. 2250 + HAIFA 31021 + ISRAEL + +00-10-D1 (hex) Top Layer Networks, Inc. +0010D1 (base 16) Top Layer Networks, Inc. + 4 MECHANIC ST.- STE#212 + NATICK MA 01760 + UNITED STATES + +00-10-D2 (hex) NITTO TSUSHINKI CO., LTD +0010D2 (base 16) NITTO TSUSHINKI CO., LTD + 7-27-11, TODOROKI, SETAGAYA-KU + TOKYO 151 + JAPAN + +00-10-D3 (hex) GRIPS ELECTRONIC GMBH +0010D3 (base 16) GRIPS ELECTRONIC GMBH + NIESENBERGERGASSE 37 + A-8020 GRAZ + AUSTRIA + +00-10-D4 (hex) STORAGE COMPUTER CORPORATION +0010D4 (base 16) STORAGE COMPUTER CORPORATION + 11 RIVERSIDE STREET + NASHUA NH 03062 + UNITED STATES + +00-10-D5 (hex) IMASDE CANARIAS, S.A. +0010D5 (base 16) IMASDE CANARIAS, S.A. + URB. EL CEBADAL + C/DR. JUAN DGUEZ.PEREZ, 39-2 + 35008 LAS PALMAS G.C. + SPAIN + +00-10-D6 (hex) ITT - A/CD +0010D6 (base 16) ITT - A/CD + DEPT. 8521 + 100 KINGSLAND ROAD + CLIFTON NJ 07014 + UNITED STATES + +00-10-D7 (hex) ARGOSY RESEARCH INC. +0010D7 (base 16) ARGOSY RESEARCH INC. + NO. 44, LANE 411, CHUNG HUA RD + SEC.4, HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-10-D8 (hex) CALISTA +0010D8 (base 16) CALISTA + 98 HIGH STREET, THAME + OXFORDSHIRE OX9 3EH ENGLAND + UNITED KINGDOM + +00-10-D9 (hex) IBM JAPAN, FUJISAWA MT+D +0010D9 (base 16) IBM JAPAN, FUJISAWA MT+D + KIRIHARA-CHO 1, FUJISAWA CITY + KANAGAWA 252 + JAPAN + +00-10-DA (hex) MOTION ENGINEERING, INC. +0010DA (base 16) MOTION ENGINEERING, INC. + 33 S.LA PATERA LN + SANTA BARBARA CA 93117 + UNITED STATES + +00-10-DB (hex) Juniper Networks, Inc. +0010DB (base 16) Juniper Networks, Inc. + 1194 N. Mathilda Avenue + Sunnyvale CA 94010 + UNITED STATES + +00-10-DC (hex) MICRO-STAR INTERNATIONAL CO., LTD. +0010DC (base 16) MICRO-STAR INTERNATIONAL CO., LTD. + NO. 69, LI-DE ST., JUNG-HE CITY + TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-10-DD (hex) ENABLE SEMICONDUCTOR, INC. +0010DD (base 16) ENABLE SEMICONDUCTOR, INC. + 1740 TECHNOLOGY DRIVE + SUITE #110 + SAN JOSE CA 95110 + UNITED STATES + +00-10-DE (hex) INTERNATIONAL DATACASTING CORPORATION +0010DE (base 16) INTERNATIONAL DATACASTING CORPORATION + 2680 QUEENSVIEW DRIVE + OTTAWA, ONTARIO K2B 8H6 + CANADA + +00-10-DF (hex) RISE COMPUTER INC. +0010DF (base 16) RISE COMPUTER INC. + 9F, NO. 306-3, TATUNG RD. + SEC. 1, HSI CHIH, + TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-10-E0 (hex) Sun Microsystems, Inc. +0010E0 (base 16) Sun Microsystems, Inc. + 4200 Network Circle + Santa Clara CA 95054 + UNITED STATES + +00-10-E1 (hex) S.I. TECH, INC. +0010E1 (base 16) S.I. TECH, INC. + P.O. BOX 609 + GENEVA IL 60134 + UNITED STATES + +00-10-E2 (hex) ArrayComm, Inc. +0010E2 (base 16) ArrayComm, Inc. + 3141 ZANKER ROAD + SAN JOSE CA 95134 + UNITED STATES + +00-10-E3 (hex) COMPAQ COMPUTER CORPORATION +0010E3 (base 16) COMPAQ COMPUTER CORPORATION + 20555 S.H. 249 + HOUSTON TX 77070 + UNITED STATES + +00-10-E4 (hex) NSI CORPORATION +0010E4 (base 16) NSI CORPORATION + P.O. BOX 635 + WILSONVILLE OR 97070 + UNITED STATES + +00-10-E5 (hex) SOLECTRON TEXAS +0010E5 (base 16) SOLECTRON TEXAS + 12455 RESEARCH BLVD. M/S 2205 + AUSTIN TX 78759 + UNITED STATES + +00-10-E6 (hex) APPLIED INTELLIGENT SYSTEMS, INC. +0010E6 (base 16) APPLIED INTELLIGENT SYSTEMS, INC. + 3923 RANCHERO DRIVE + ANN ARBOR MI 48108 + UNITED STATES + +00-10-E7 (hex) BreezeCom +0010E7 (base 16) BreezeCom + PO Box 13139 + Atidim Technological Park, Bldg. 1 + Tel-Aviv + ISRAEL + +00-10-E8 (hex) TELOCITY, INCORPORATED +0010E8 (base 16) TELOCITY, INCORPORATED + 992 SOUTH DE ANZA BLVD + SAN JOSE CA 95129 + UNITED STATES + +00-10-E9 (hex) RAIDTEC LTD. +0010E9 (base 16) RAIDTEC LTD. + CASTLE ROAD + LITTLE ISLAND INDUSTRIAL ESTATE + Little Island County Cork + IRELAND + +00-10-EA (hex) ADEPT TECHNOLOGY +0010EA (base 16) ADEPT TECHNOLOGY + 150 ROSE ORCHARD WAY + SAN JOSE CA 95134 + UNITED STATES + +00-10-EB (hex) SELSIUS SYSTEMS, INC. +0010EB (base 16) SELSIUS SYSTEMS, INC. + 5057 KELLER SPRINGS RD. + DALLAS TX 75248 + UNITED STATES + +00-10-EC (hex) RPCG, LLC +0010EC (base 16) RPCG, LLC + 749 MINER ROAD + HIGHLAND HTS OH 44143-2117 + UNITED STATES + +00-10-ED (hex) SUNDANCE TECHNOLOGY, INC. +0010ED (base 16) SUNDANCE TECHNOLOGY, INC. + 20111 STEVENS CREEK BLVD. + SUITE #138 + CUPERTINO CA 95014 + UNITED STATES + +00-10-EE (hex) CTI PRODUCTS, INC. +0010EE (base 16) CTI PRODUCTS, INC. + 1211 W. SHARON RD. + CINCINNATI OH 45240 + UNITED STATES + +00-10-EF (hex) DBTEL INCORPORATED +0010EF (base 16) DBTEL INCORPORATED + NO.29 TZU-CHIANG ST., + TU-CHENG TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-10-F1 (hex) I-O CORPORATION +0010F1 (base 16) I-O CORPORATION + 2256 SOUTH 3600 WEST + SALT LAKE CITY UT 84119 + UNITED STATES + +00-10-F2 (hex) ANTEC +0010F2 (base 16) ANTEC + 4920 AVALON RIDGE PKWY + SUITE #600 + NORCROSS GA 30071 + UNITED STATES + +00-10-F3 (hex) Nexcom International Co., Ltd. +0010F3 (base 16) Nexcom International Co., Ltd. + 18F, No. 716, Chung-Cheng Road, + Chung Ho, + Taipei Hsien 235, + TAIWAN, REPUBLIC OF CHINA + +00-10-F4 (hex) Vertical Communications +0010F4 (base 16) Vertical Communications + 3979 Freedom Circle #400 + Santa Clara CA 95054-1247 + UNITED STATES + +00-10-F5 (hex) AMHERST SYSTEMS, INC. +0010F5 (base 16) AMHERST SYSTEMS, INC. + 30 WILSON ROAD + BUFFALO NY 14221 + UNITED STATES + +00-10-F6 (hex) CISCO SYSTEMS, INC. +0010F6 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-10-F7 (hex) IRIICHI TECHNOLOGIES Inc. +0010F7 (base 16) IRIICHI TECHNOLOGIES Inc. + 1-26-7 CHUO, NAKANA-KU + TOKYO 164 + JAPAN + +00-10-F8 (hex) TEXIO CORPORATION +0010F8 (base 16) TEXIO CORPORATION + 1850-1 Tsuruma, Machida-shi + Tokyo 194-0004 + JAPAN + +00-10-F9 (hex) UNIQUE SYSTEMS, INC. +0010F9 (base 16) UNIQUE SYSTEMS, INC. + 181 DON PARK RD + MARKHAM, ONTARIO L3R 1C2 + CANADA + +00-10-FA (hex) ZAYANTE, INC. +0010FA (base 16) ZAYANTE, INC. + 269 MT. HERMON RD. #111 + SCOTTS VALLEY CA 95066 + UNITED STATES + +00-10-FB (hex) ZIDA TECHNOLOGIES LIMITED +0010FB (base 16) ZIDA TECHNOLOGIES LIMITED + 8/F BLOCK A GOODVIEW INDUSTRIAL BUILDIN + KIN FAT STR TMTL 213 + TUEN MUN NT + HONG KONG + +00-10-FC (hex) BROADBAND NETWORKS, INC. +0010FC (base 16) BROADBAND NETWORKS, INC. + 37 STEVENSON ROAD + WINNIPEG, MANITOBA R3H 0H9 + CANADA + +00-10-FD (hex) COCOM A/S +0010FD (base 16) COCOM A/S + TELETONVEJ 8 + DK 2860 SOBORG + DENMARK + +00-10-FE (hex) DIGITAL EQUIPMENT CORPORATION +0010FE (base 16) DIGITAL EQUIPMENT CORPORATION + 301 ROCKRIMMON BLVD, SOUTH + M/S CXO1-2/N26 + COLORADO SPRINGS CO 80919 + UNITED STATES + +00-10-FF (hex) CISCO SYSTEMS, INC. +0010FF (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-11-00 (hex) RAM Industries, LLC +001100 (base 16) RAM Industries, LLC + 5460 Pottsville Pike + Leesport PA 19533 + UNITED STATES + +00-11-01 (hex) CET Technologies Pte Ltd +001101 (base 16) CET Technologies Pte Ltd + 100 Jurong East Street 21 + Singapore Technologies Building + 609602 + SINGAPORE + +00-11-02 (hex) Aurora Multimedia Corp. +001102 (base 16) Aurora Multimedia Corp. + 205 Commercial Court + Morganville New Jersey 07751-1070 + UNITED STATES + +00-11-03 (hex) kawamura electric inc. +001103 (base 16) kawamura electric inc. + 3-86 akatsuki-cho + seto aichi 489-0071 + JAPAN + +00-11-04 (hex) TELEXY +001104 (base 16) TELEXY + 1116, HYUNDAI 41 TOWER, 917-9 + MOK-DONG, YANGCHUN-KU, + SEOUL 158-723 + KOREA, REPUBLIC OF + +00-11-05 (hex) Sunplus Technology Co., Ltd. +001105 (base 16) Sunplus Technology Co., Ltd. + 19, Innovation First Road, Hsinchu Science Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-11-06 (hex) Siemens NV (Belgium) +001106 (base 16) Siemens NV (Belgium) + Atealaan 34 + Herentals Antwerp 2200 + BELGIUM + +00-11-07 (hex) RGB Networks Inc. +001107 (base 16) RGB Networks Inc. + 2929 Campus Drive + Suite 165 + San Mateo CA 94403 + UNITED STATES + +00-11-08 (hex) Orbital Data Corporation +001108 (base 16) Orbital Data Corporation + 1900 S. Norfolk St. Ste 320 + San Mateo CA 94403 + UNITED STATES + +00-11-09 (hex) Micro-Star International +001109 (base 16) Micro-Star International + No 69, Li-De Street, Jung-He City, + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-11-0A (hex) Hewlett Packard +00110A (base 16) Hewlett Packard + 20555 State Highway 249 + MS070405 + Houston TX 77070 + UNITED STATES + +00-11-0B (hex) Franklin Technology Systems +00110B (base 16) Franklin Technology Systems + 20406 Earl St + Torrance CA 90503 + UNITED STATES + +00-11-0C (hex) Atmark Techno, Inc. +00110C (base 16) Atmark Techno, Inc. + 2F SD BLDG, 2-2-3-14 Atsubetsu-nishi, Atsubetsu-ku + Sapporo Hokkaido 004-0062 + JAPAN + +00-11-0D (hex) SANBlaze Technology, Inc. +00110D (base 16) SANBlaze Technology, Inc. + 2 Clock Tower Place + Maynard MA 01748 + UNITED STATES + +00-11-0E (hex) Tsurusaki Sealand Transportation Co. Ltd. +00110E (base 16) Tsurusaki Sealand Transportation Co. Ltd. + 1000 Misa + Oita 8700196 + JAPAN + +00-11-0F (hex) netplat,Inc. +00110F (base 16) netplat,Inc. + 2F Olympia Center, 828-10, Yeoksam-dong, Gangnam-gu + SEOUL 135-935 + KOREA, REPUBLIC OF + +00-11-10 (hex) Maxanna Technology Co., Ltd. +001110 (base 16) Maxanna Technology Co., Ltd. + Room201, No.42-3, Luyuan Road + Guangzhou 510095 + CHINA + +00-11-11 (hex) Intel Corporation +001111 (base 16) Intel Corporation + 2111 NE 25th Avenue + Hillsboro OR 97123 + UNITED STATES + +00-11-12 (hex) Honeywell CMSS +001112 (base 16) Honeywell CMSS + 8323 Lindbergh Ct + Sarasota FL 34243 + UNITED STATES + +00-11-13 (hex) Fraunhofer FOKUS +001113 (base 16) Fraunhofer FOKUS + Kaiserin-Augusta-Allee 31 + Berlin 10589 + GERMANY + +00-11-14 (hex) EverFocus Electronics Corp. +001114 (base 16) EverFocus Electronics Corp. + 12F, No. 79, Sec. 1, Shin-Tai Wu Rd. + Hsi-Chi Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-11-15 (hex) EPIN Technologies, Inc. +001115 (base 16) EPIN Technologies, Inc. + Acorn Campus + 6th Result Way, Suite 248 + Cupertino CA 95014 + UNITED STATES + +00-11-16 (hex) COTEAU VERT CO., LTD. +001116 (base 16) COTEAU VERT CO., LTD. + 3-3-19 KACHIDOKI + CHUO-KU TOKYO 104-0054 + JAPAN + +00-11-17 (hex) CESNET +001117 (base 16) CESNET + Zikova 4 + Praha 6 160 00 + CZECH REPUBLIC + +00-11-18 (hex) BLX IC Design Corp., Ltd. +001118 (base 16) BLX IC Design Corp., Ltd. + Rm 1006, Quantum Plaza + No.27, Zhichun Rd, Haidan + Beijing 100083 + CHINA + +00-11-19 (hex) Solteras, Inc. +001119 (base 16) Solteras, Inc. + 900 W. Santa Anita Street + San Gabriel CA 91776 + UNITED STATES + +00-11-1A (hex) Motorola BCS +00111A (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-11-1B (hex) Targa Systems Div L-3 Communications Canada +00111B (base 16) Targa Systems Div L-3 Communications Canada + 2081 Merivale Rd + Suite 200 + Ottawa Ont K2G 1G9 + CANADA + +00-11-1C (hex) Pleora Technologies Inc. +00111C (base 16) Pleora Technologies Inc. + 359 Terry Fox Drive, Suite 230 + Kanata ON K2K 2E7 + CANADA + +00-11-1D (hex) Hectrix Limited +00111D (base 16) Hectrix Limited + Unit 906-911, 9/F, Stanhope Hosue, + 734-738 King's Road, + North Point Hong Kong + CHINA + +00-11-1E (hex) EPSG (Ethernet Powerlink Standardization Group) +00111E (base 16) EPSG (Ethernet Powerlink Standardization Group) + c/o University of Applied Sciences + PO Box 805 + Winterthur ZH CH-8401 + SWITZERLAND + +00-11-1F (hex) Doremi Labs, Inc. +00111F (base 16) Doremi Labs, Inc. + 306 E. Alameda Ave. + Burbank CA 91502 + UNITED STATES + +00-11-20 (hex) Cisco Systems +001120 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-11-21 (hex) Cisco Systems +001121 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-11-22 (hex) CIMSYS Inc +001122 (base 16) CIMSYS Inc + #301,Sinsung-clean BLDG,140, Nongseo-Ri,Kiheung-Eup + Yongin-City Kyunggi-Do 449-711 + KOREA, REPUBLIC OF + +00-11-23 (hex) Appointech, Inc. +001123 (base 16) Appointech, Inc. + 6F-2 No.192 Tung-Kuan Rd. + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-11-24 (hex) Apple Computer +001124 (base 16) Apple Computer + 1 Inifinite Loop + Cupertino CA 95014 + UNITED STATES + +00-11-25 (hex) IBM Corporation +001125 (base 16) IBM Corporation + 3039 E Cornwallis Rd + P.O. BOX 12195 + Research Triangle Park NC 27709-2195 + UNITED STATES + +00-11-26 (hex) Venstar Inc. +001126 (base 16) Venstar Inc. + 9250 Owensmouth Ave. + Chatsworth CA 91311 + UNITED STATES + +00-11-27 (hex) TASI, Inc +001127 (base 16) TASI, Inc + 5551 Dry Fork Road + Cleves OH 45002 + UNITED STATES + +00-11-28 (hex) Streamit +001128 (base 16) Streamit + Flight Forum 3543 + Eindhoven 5657 DW + NETHERLANDS + +00-11-29 (hex) Paradise Datacom Ltd. +001129 (base 16) Paradise Datacom Ltd. + 1 Wheaton Road + Witham Essex UK CM8 1UJ + UNITED KINGDOM + +00-11-2A (hex) Niko NV +00112A (base 16) Niko NV + Industriepark West 40 + Sint-Niklaas O/V 9100 + BELGIUM + +00-11-2B (hex) NetModule +00112B (base 16) NetModule + Meriedweg 11 + Niederwangen CH 3172 + SWITZERLAND + +00-11-2C (hex) IZT GmbH +00112C (base 16) IZT GmbH + Am Weichselgarten 5 + Erlangen Bavaria 91058 + GERMANY + +00-11-2D (hex) Guys Without Ties +00112D (base 16) Guys Without Ties + Ground floor, Euro Centre + 363 Rivonia Boulevard, Rivonia + Johannesburg Gauteng 2191 + SOUTH AFRICA + +00-11-2E (hex) CEICOM +00112E (base 16) CEICOM + 17 rue Gaston Evrard + Toulouse Cedex 1 Haute-Garonne 31094 + FRANCE + +00-11-2F (hex) ASUSTek Computer Inc. +00112F (base 16) ASUSTek Computer Inc. + No.150, Li-Te Rd., Peitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-11-30 (hex) Allied Telesis (Hong Kong) Ltd. +001130 (base 16) Allied Telesis (Hong Kong) Ltd. + Room F, 3/F, Yeung Yiu Chong (no. 8) Industrial building, + 20 Wang Hoi Road, Kowloon Bay, + HONG KONG + +00-11-31 (hex) UNATECH. CO.,LTD +001131 (base 16) UNATECH. CO.,LTD + A-727 ,GEOPYUNG TOWN,203-1 + NONHYUNG-DONG + KANGNAM-GU SEOUL 135-010 + KOREA, REPUBLIC OF + +00-11-32 (hex) Synology Incorporated +001132 (base 16) Synology Incorporated + 6F-2, No.106, Chang An W. Rd., + Taipei 103 + TAIWAN, REPUBLIC OF CHINA + +00-11-33 (hex) Siemens Austria SIMEA +001133 (base 16) Siemens Austria SIMEA + Siemensstrasse 90-92 + Vienna 1210 + AUSTRIA + +00-11-34 (hex) MediaCell, Inc. +001134 (base 16) MediaCell, Inc. + 600 17th St + Suite 2800 South + Denver CO 80202 + UNITED STATES + +00-11-35 (hex) Grandeye Ltd +001135 (base 16) Grandeye Ltd + 6 Huxley Road + Surrey Research Park + Guildford Surrey GU2 7RE + UNITED KINGDOM + +00-11-36 (hex) Goodrich Sensor Systems +001136 (base 16) Goodrich Sensor Systems + 14300 Judicial Road + Burnsville Minnesota 55306-4898 + UNITED STATES + +00-11-37 (hex) AICHI ELECTRIC CO., LTD. +001137 (base 16) AICHI ELECTRIC CO., LTD. + 1 + aichi-cho + kasugai city aichi pref. 486-8666 + JAPAN + +00-11-38 (hex) TAISHIN CO., LTD. +001138 (base 16) TAISHIN CO., LTD. + 200-7 Nakano + Nakano Nagano 383-0013 + JAPAN + +00-11-39 (hex) STOEBER ANTRIEBSTECHNIK GmbH + Co. KG. +001139 (base 16) STOEBER ANTRIEBSTECHNIK GmbH + Co. KG. + Kieselbronner Str. 12 + Pforzheim 75177 + GERMANY + +00-11-3A (hex) SHINBORAM +00113A (base 16) SHINBORAM + 4F DAHNWORLD BUILDING, 154-11 SAMSUNG-DONG + KANGNAM-GU, + SEOUL 135-879 + KOREA, REPUBLIC OF + +00-11-3B (hex) Micronet Communications Inc. +00113B (base 16) Micronet Communications Inc. + 12F-1, No. 100, Min-Chuan Road + Hsin-Tien Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-11-3C (hex) Micronas GmbH +00113C (base 16) Micronas GmbH + Hans-Bunte-Strasse 19 + Freiburg BW D-79108 + GERMANY + +00-11-3D (hex) KN SOLTEC CO.,LTD. +00113D (base 16) KN SOLTEC CO.,LTD. + 98B-5L NAMDONG INDUSTRIAL COMPLEX #662-4 GOJAN-DONG + NAMDONG-GU INCHEON 405-818 + KOREA, REPUBLIC OF + +00-11-3E (hex) JL Corporation +00113E (base 16) JL Corporation + 4-4-17 SUGE + TAMA-KU + KAWASAKI-CITY KANAGAWA-KEN 214-0001 + JAPAN + +00-11-3F (hex) Alcatel DI +00113F (base 16) Alcatel DI + ZI lavoisier + EU Normandie 76260 + FRANCE + +00-11-40 (hex) Nanometrics Inc. +001140 (base 16) Nanometrics Inc. + 250 Herzberg Rd. + Kanata Ontario K2K 2A1 + CANADA + +00-11-41 (hex) GoodMan Corporation +001141 (base 16) GoodMan Corporation + 2F, No.572, Sec.1, Ming-Sheng N Road, Kwei-Shan Hsiang + Taoyuan Hsien 33300 + TAIWAN, REPUBLIC OF CHINA + +00-11-42 (hex) e-SMARTCOM INC. +001142 (base 16) e-SMARTCOM INC. + 3F, 216, Imok-Dong + JangAn-Ku + Suwon Kyoungki-Do 440-310 + KOREA, REPUBLIC OF + +00-11-43 (hex) DELL INC. +001143 (base 16) DELL INC. + One Dell Way + RR5 MS-8545 + Round Rock Texas 78682 + UNITED STATES + +00-11-44 (hex) Assurance Technology Corp +001144 (base 16) Assurance Technology Corp + 6304 Potomac Avenue + Alexandria Virginia 22307 + UNITED STATES + +00-11-45 (hex) ValuePoint Networks +001145 (base 16) ValuePoint Networks + 350 Townsend St Ste 320 + San Francisco, CA 94107 + UNITED STATES + +00-11-46 (hex) Telecard-Pribor Ltd +001146 (base 16) Telecard-Pribor Ltd + Lustdorfskaya doroga, 162 + Odessa 65115 + UKRAINE + +00-11-47 (hex) Secom-Industry co.LTD. +001147 (base 16) Secom-Industry co.LTD. + Fukuo kaKuramoto Ichihonki 3-3 + Shiroishi Miyagi 989-0295 + JAPAN + +00-11-48 (hex) Prolon Control Systems +001148 (base 16) Prolon Control Systems + Herstedvesterstraede 56 + Albertslund DK-2620 + DENMARK + +00-11-49 (hex) Proliphix Inc. +001149 (base 16) Proliphix Inc. + 66 Tadmuck Rd. + Westford MA 01886 + UNITED STATES + +00-11-4A (hex) KAYABA INDUSTRY Co,.Ltd. +00114A (base 16) KAYABA INDUSTRY Co,.Ltd. + World Trade Center Bldg., 4-1 + Hamamatsu-cho 2-chome, + Minato-ku, Tokyo Meto. 105-6111 + JAPAN + +00-11-4B (hex) Francotyp-Postalia AG & Co. KG +00114B (base 16) Francotyp-Postalia AG & Co. KG + Triftweg 21-26 + Birkenwerder Brandenburg 16547 + GERMANY + +00-11-4C (hex) caffeina applied research ltd. +00114C (base 16) caffeina applied research ltd. + 125 baird ave + cochrane alberta t4c 1c7 + CANADA + +00-11-4D (hex) Atsumi Electric Co.,LTD. +00114D (base 16) Atsumi Electric Co.,LTD. + 4-2-2 Shin-Miyakoda, Kita-ku + Hamamatsu Shizuoka 431-2103 + JAPAN + +00-11-4E (hex) 690885 Ontario Inc. +00114E (base 16) 690885 Ontario Inc. + 205 Annagem Blvd. + Mississauga Ontario L5T 2V1 + CANADA + +00-11-4F (hex) US Digital Television, Inc +00114F (base 16) US Digital Television, Inc + 5807 N. Andrews Way + Fort Lauderdale FL 33309 + UNITED STATES + +00-11-50 (hex) Belkin Corporation +001150 (base 16) Belkin Corporation + 501 West Walnut Street + Compton CA 90220-5221 + UNITED STATES + +00-11-51 (hex) Mykotronx +001151 (base 16) Mykotronx + 359 Van Ness Way + Torrance CA 90501 + UNITED STATES + +00-11-52 (hex) Eidsvoll Electronics AS +001152 (base 16) Eidsvoll Electronics AS + Nedre Vilberg vei 8 + Eidsvoll N-2080 + NORWAY + +00-11-53 (hex) Trident Tek, Inc. +001153 (base 16) Trident Tek, Inc. + 8041 Cessna Ave #200 + Gaithersburg MD 20879 + UNITED STATES + +00-11-54 (hex) Webpro Technologies Inc. +001154 (base 16) Webpro Technologies Inc. + 2F-1, No.81, Sec. 4, Chungching N. Rd., + Shrlin Chiu + Taipei 111 + TAIWAN, REPUBLIC OF CHINA + +00-11-55 (hex) Sevis Systems +001155 (base 16) Sevis Systems + 2805 N Dallas Parkway, STE 530 + Plano Texas 75093 + UNITED STATES + +00-11-56 (hex) Pharos Systems NZ +001156 (base 16) Pharos Systems NZ + Level 3, 123 Carlton Gore Road + Grafton + Auckland NZ 1001 + NEW ZEALAND + +00-11-57 (hex) OF Networks Co., Ltd. +001157 (base 16) OF Networks Co., Ltd. + 1-3-Cb4 Nakase, Mihama-ku + Chiba City Chiba 261-8501 + JAPAN + +00-11-58 (hex) Nortel Networks +001158 (base 16) Nortel Networks + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-11-59 (hex) MATISSE NETWORKS INC +001159 (base 16) MATISSE NETWORKS INC + 339 N BERNARDO AVE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-11-5A (hex) Ivoclar Vivadent AG +00115A (base 16) Ivoclar Vivadent AG + Bendererstrasse 2 + Schaan 9494 + LIECHTENSTEIN + +00-11-5B (hex) Elitegroup Computer System Co. (ECS) +00115B (base 16) Elitegroup Computer System Co. (ECS) + No.22, Alley 38, Lane 91, Sec. 1, Nei Hu Road, + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-11-5C (hex) Cisco +00115C (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-11-5D (hex) Cisco +00115D (base 16) Cisco + 80 West Tasman Dr. + SJ-M/2 + San Jose CA 95134 + UNITED STATES + +00-11-5E (hex) ProMinent Dosiertechnik GmbH +00115E (base 16) ProMinent Dosiertechnik GmbH + Im Schumachergewann 5-11 + Heidelberg BW 69123 + GERMANY + +00-11-5F (hex) Intellix Co., Ltd. +00115F (base 16) Intellix Co., Ltd. + 3rd Fl. Kwansung Bldg. + 129-14 Samsung-dong Kangnam-gu + SEOUL Kyungi-do 135-090 + KOREA, REPUBLIC OF + +00-11-60 (hex) ARTDIO Company Co., LTD +001160 (base 16) ARTDIO Company Co., LTD + 7th FL.., No.476, Min-Hu RD., Hsin-Chu, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-11-61 (hex) NetStreams, LLC +001161 (base 16) NetStreams, LLC + 3600 W. Parmer Lane + Suite 100 + Austin TX 78727 + UNITED STATES + +00-11-62 (hex) STAR MICRONICS CO.,LTD. +001162 (base 16) STAR MICRONICS CO.,LTD. + 536 Shimizunanatsushinya + Shizuoka 424-0066 + JAPAN + +00-11-63 (hex) SYSTEM SPA DEPT. ELECTRONICS +001163 (base 16) SYSTEM SPA DEPT. ELECTRONICS + VIA GHIAROLA VECCHIA 73 + FIORANO MODENESE MODENA I-41042 + ITALY + +00-11-64 (hex) ACARD Technology Corp. +001164 (base 16) ACARD Technology Corp. + 6F No.78 Sec1 Kwang Fu Road, Sanchung, + Taipei Hsien 241 + TAIWAN, REPUBLIC OF CHINA + +00-11-65 (hex) Znyx Networks +001165 (base 16) Znyx Networks + 48421 Milmont Drive + Fremont CA 94538 + UNITED STATES + +00-11-66 (hex) Taelim Electronics Co., Ltd. +001166 (base 16) Taelim Electronics Co., Ltd. + 196-5, ANYANG7-DONG MANAN-GU + ANYANG-SI KYUGGI-DO 430-817 + KOREA, REPUBLIC OF + +00-11-67 (hex) Integrated System Solution Corp. +001167 (base 16) Integrated System Solution Corp. + 3F, No. 2-1, industry East Rd., I + Science-Based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-11-68 (hex) HomeLogic LLC +001168 (base 16) HomeLogic LLC + 100 Hoods Lane + Marblehead MA 01945 + UNITED STATES + +00-11-69 (hex) EMS Satcom +001169 (base 16) EMS Satcom + Green Lane + Ashchurch + Tewkesbury Gloucestershire GL20 8HD + UNITED KINGDOM + +00-11-6A (hex) Domo Ltd +00116A (base 16) Domo Ltd + Wessex House + Upper Market Street + Eastleigh Hampshire SO50 9FD + UNITED KINGDOM + +00-11-6B (hex) Digital Data Communications Asia Co.,Ltd +00116B (base 16) Digital Data Communications Asia Co.,Ltd + 8F,No.41,Lane 221,Kang-Chien RD.,Nei-Hu Dis., + Taipei City 114 + TAIWAN, REPUBLIC OF CHINA + +00-11-6C (hex) Nanwang Multimedia Inc.,Ltd +00116C (base 16) Nanwang Multimedia Inc.,Ltd + Floor 12,Tianyuan Bldg,Wensan Rd#508 + Hangzhou Zhejiang 310013 + CHINA + +00-11-6D (hex) American Time and Signal +00116D (base 16) American Time and Signal + 140 Third St. South + Dassel MN 55325 + UNITED STATES + +00-11-6E (hex) PePLink Ltd. +00116E (base 16) PePLink Ltd. + 17/F., Park Building + 476 Castle Peak Road + Cheung Sha Wan Kowloon + HONG KONG + +00-11-6F (hex) Netforyou Co., LTD. +00116F (base 16) Netforyou Co., LTD. + 1121-4 3F, Kwanyang-dong, Dongan-gu + Anyang-si Kyunggi-do 431-804 + KOREA, REPUBLIC OF + +00-11-70 (hex) GSC SRL +001170 (base 16) GSC SRL + VIA PER VIMERCATE + USMATE VELATE MILANO 20040 + ITALY + +00-11-71 (hex) DEXTER Communications, Inc. +001171 (base 16) DEXTER Communications, Inc. + 2F Shinsung B/D 404-1 + Backhyun-Dong, Bundang-Gu + Sungnam Gyunggi 463-420 + KOREA, REPUBLIC OF + +00-11-72 (hex) COTRON CORPORATION +001172 (base 16) COTRON CORPORATION + 1FL., N0.888, JING-GUO RD., + TAOYUAN 330 + TAIWAN, REPUBLIC OF CHINA + +00-11-73 (hex) Adtron Corporation +001173 (base 16) Adtron Corporation + 4415 E Cotton Center Blvd + Suite 100 + Phoenix AZ 85040 + UNITED STATES + +00-11-74 (hex) Wibhu Technologies, Inc. +001174 (base 16) Wibhu Technologies, Inc. + 1561 Blackhawk Drive + Sunnyvale CA 94087 + UNITED STATES + +00-11-75 (hex) PathScale, Inc. +001175 (base 16) PathScale, Inc. + 477 N. Mathilda Ave. + Sunnyvale CA 94085 + UNITED STATES + +00-11-76 (hex) Intellambda Systems, Inc. +001176 (base 16) Intellambda Systems, Inc. + 48501 Warm Springs Blvd, #107 + Fremont California 94539 + UNITED STATES + +00-11-77 (hex) COAXIAL NETWORKS, INC. +001177 (base 16) COAXIAL NETWORKS, INC. + 4800 Great America Pkwy + Suite 300 + Santa Clara CA 95054 + UNITED STATES + +00-11-78 (hex) Chiron Technology Ltd +001178 (base 16) Chiron Technology Ltd + Wyvols Court + Swallowfield + Reading Berkshire RG7 1WY + UNITED KINGDOM + +00-11-79 (hex) Singular Technology Co. Ltd. +001179 (base 16) Singular Technology Co. Ltd. + 21F, No.37, Sec.2, San Min Rd., + Pan Chiao City, Taipei County + Taipei 220 + TAIWAN, REPUBLIC OF CHINA + +00-11-7A (hex) Singim International Corp. +00117A (base 16) Singim International Corp. + 6F-2, No. 190, Sec. 2 Chung Hsin Road, + Hsin Tien City 231 + TAIWAN, REPUBLIC OF CHINA + +00-11-7B (hex) Büchi Labortechnik AG +00117B (base 16) Büchi Labortechnik AG + Meierseggstrasse 40 + Flawil 9230 SG + SWITZERLAND + +00-11-7C (hex) e-zy.net +00117C (base 16) e-zy.net + Smirnis 14 + Veria Imathia 59100 + GREECE + +00-11-7D (hex) ZMD America, Inc. +00117D (base 16) ZMD America, Inc. + 15373 Innovation Drive + Suite 115 + San Dieo CA 92128 + UNITED STATES + +00-11-7E (hex) Progeny Inc. +00117E (base 16) Progeny Inc. + 1407 Barclay Boulevard + Buffalo Grove IL 60089 + UNITED STATES + +00-11-7F (hex) Neotune Information Technology Corporation,.LTD +00117F (base 16) Neotune Information Technology Corporation,.LTD + 1703# No.737 North of Caoxi Rd. + Shanghai 200030 + CHINA + +00-11-80 (hex) Motorola BCS +001180 (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-11-81 (hex) InterEnergy Co.Ltd, +001181 (base 16) InterEnergy Co.Ltd, + 4F daVinci BOSEI + 3-20-13 Shinyokohama Kohhoku-ku + Yokohama city Kanagawa 222-0033 + JAPAN + +00-11-82 (hex) IMI Norgren Ltd +001182 (base 16) IMI Norgren Ltd + PO Box 22 + Eastern Avenue + Lichfield Staffordshire WS13 6SB + UNITED KINGDOM + +00-11-83 (hex) PSC Scanning, Inc +001183 (base 16) PSC Scanning, Inc + 959 Terry St + Eugene OR 97402 + UNITED STATES + +00-11-84 (hex) Humo Laboratory,Ltd. +001184 (base 16) Humo Laboratory,Ltd. + Nishiogi-Kita 5-19-11 + Suginami-ku Tokyo 167-0042 + JAPAN + +00-11-85 (hex) Hewlett Packard +001185 (base 16) Hewlett Packard + 20555 State Highway 249 South + MS070405 + Houston TX 77070 + UNITED STATES + +00-11-86 (hex) Prime Systems, Inc. +001186 (base 16) Prime Systems, Inc. + 16267-333 + Suwa-gun Hara-mura Nagano 391-0100 + JAPAN + +00-11-87 (hex) Category Solutions, Inc +001187 (base 16) Category Solutions, Inc + 1021 W. Adams St + Chicago IL 60607 + UNITED STATES + +00-11-88 (hex) Enterasys +001188 (base 16) Enterasys + 35 Industrial Way + Rochester NH 03867 + UNITED STATES + +00-11-89 (hex) Aerotech Inc +001189 (base 16) Aerotech Inc + 101 Zeta Drive + Pittsburgh PA 15238 + UNITED STATES + +00-11-8A (hex) Viewtran Technology Limited +00118A (base 16) Viewtran Technology Limited + 3/F, R2-A builiding, High Tech Industrial Park, + Nanshan District, + Shenzhen Guangdong 518057 + CHINA + +00-11-8B (hex) Alcatel-Lucent, Enterprise Business Group +00118B (base 16) Alcatel-Lucent, Enterprise Business Group + 26801 West Agoura Road + Calabasas CA 91301 + UNITED STATES + +00-11-8C (hex) Missouri Department of Transportation +00118C (base 16) Missouri Department of Transportation + P.O. Box 270 + Jefferson City Missouri 65102 + UNITED STATES + +00-11-8D (hex) Hanchang System Corp. +00118D (base 16) Hanchang System Corp. + 715-11 Boeun-Town, E-dong, Sangrok-gu, + Ansan-shi Kyungki-Do 425-857 + KOREA, REPUBLIC OF + +00-11-8E (hex) Halytech Mace +00118E (base 16) Halytech Mace + Unit 11, 22 Lexington Drive + Norwest Business Park + Baulkham Hills NSW 2153 + AUSTRALIA + +00-11-8F (hex) EUTECH INSTRUMENTS PTE. LTD. +00118F (base 16) EUTECH INSTRUMENTS PTE. LTD. + Blk 55,Ayer Rajah Crescent, #04-16/24. + 139949 + SINGAPORE + +00-11-90 (hex) Digital Design Corporation +001190 (base 16) Digital Design Corporation + 3820 Ventura Drive + Arlington Heights IL 60004 + UNITED STATES + +00-11-91 (hex) CTS-Clima Temperatur Systeme GmbH +001191 (base 16) CTS-Clima Temperatur Systeme GmbH + Lotzenäcker 21 + Hechingen Badenwürttemberg 72379 + GERMANY + +00-11-92 (hex) Cisco Systems +001192 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-11-93 (hex) Cisco Systems +001193 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-m/1 + San Jose CA 95134 + UNITED STATES + +00-11-94 (hex) Chi Mei Communication Systems, Inc. +001194 (base 16) Chi Mei Communication Systems, Inc. + 11F, No.39, Chung Hua RD. Sec 1 + Taipei 100 + TAIWAN, REPUBLIC OF CHINA + +00-11-95 (hex) D-Link Corporation +001195 (base 16) D-Link Corporation + 2F No. 233-2, Pao-Chiao Road + Hsin-Tien + Taipei Taiwan + TAIWAN, REPUBLIC OF CHINA + +00-11-96 (hex) Actuality Systems, Inc. +001196 (base 16) Actuality Systems, Inc. + 25 Corporate Drive + Suite 300 + Burlington MA 01803 + UNITED STATES + +00-11-97 (hex) Monitoring Technologies Limited +001197 (base 16) Monitoring Technologies Limited + 14 Attenburys Park Estate + Attenburys Lane + Timperley Cheshire WA14 5QE + UNITED KINGDOM + +00-11-98 (hex) Prism Media Products Limited +001198 (base 16) Prism Media Products Limited + William James House + Cowley Road + Cambridge Cambridgeshire CB4 0WX + UNITED KINGDOM + +00-11-99 (hex) 2wcom GmbH +001199 (base 16) 2wcom GmbH + Schleswiger Strasse 85 + Flensburg 24941 + GERMANY + +00-11-9A (hex) Alkeria srl +00119A (base 16) Alkeria srl + 25 Via Giuntini + Navacchio (PI) I-56023 + ITALY + +00-11-9B (hex) Telesynergy Research Inc. +00119B (base 16) Telesynergy Research Inc. + 4F, No. 49, Tung Hsin Rd., + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-11-9C (hex) EP&T Energy +00119C (base 16) EP&T Energy + 358 Eastern Valley Way + Chatswood + Sydney NSW 2067 + AUSTRALIA + +00-11-9D (hex) Diginfo Technology Corporation +00119D (base 16) Diginfo Technology Corporation + 10Fl., No.82, Fu Hsing North Road + Taipei 106 + TAIWAN, REPUBLIC OF CHINA + +00-11-9E (hex) Solectron Brazil +00119E (base 16) Solectron Brazil + Rod. Campinas Mogi Mirim + Bairro Roseira + Jaguariuna SP 13820-000 + BRAZIL + +00-11-9F (hex) Nokia Danmark A/S +00119F (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-11-A0 (hex) Vtech Engineering Canada Ltd +0011A0 (base 16) Vtech Engineering Canada Ltd + 200-7671 Alderbridge Way + Richmond BC V6X 1Z9 + CANADA + +00-11-A1 (hex) VISION NETWARE CO.,LTD +0011A1 (base 16) VISION NETWARE CO.,LTD + Ace Twin Tower (2), #709 + 212-30, Guro-Dong + Seoul Guro-Gu 152-050 + KOREA, REPUBLIC OF + +00-11-A2 (hex) Manufacturing Technology Inc +0011A2 (base 16) Manufacturing Technology Inc + 70 Ready Ave NW + Fort Walton Beach FL 32548 + UNITED STATES + +00-11-A3 (hex) LanReady Technologies Inc. +0011A3 (base 16) LanReady Technologies Inc. + 4F, No. 337, SinHu 2nd Road., NeiHu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-11-A4 (hex) JStream Technologies Inc. +0011A4 (base 16) JStream Technologies Inc. + Bldg.53, R405, 195 Sec.4, Chung Hsing Rd. + Chutung, Hsinchu 310 + TAIWAN, REPUBLIC OF CHINA + +00-11-A5 (hex) Fortuna Electronic Corp. +0011A5 (base 16) Fortuna Electronic Corp. + 3F, No.9, Sec.1, ChangAn East Rd., + Taipei 104 + TAIWAN, REPUBLIC OF CHINA + +00-11-A6 (hex) Sypixx Networks +0011A6 (base 16) Sypixx Networks + 108 Bank Street + Waterbury CT 06702 + UNITED STATES + +00-11-A7 (hex) Infilco Degremont Inc. +0011A7 (base 16) Infilco Degremont Inc. + 8007 Discovery Dr. + PO Box 71390 + Richmond Virginia 23255-1390 + UNITED STATES + +00-11-A8 (hex) Quest Technologies +0011A8 (base 16) Quest Technologies + 1060 Corporate Center Drive + Oconomowoc Wisconsin 53066 + UNITED STATES + +00-11-A9 (hex) MOIMSTONE Co., LTD +0011A9 (base 16) MOIMSTONE Co., LTD + 7th Floor JoongPyung Building 64-1 + Woomyun-Dong, Seocho-Gu + Seoul 137-900 + KOREA, REPUBLIC OF + +00-11-AA (hex) Uniclass Technology, Co., LTD +0011AA (base 16) Uniclass Technology, Co., LTD + 4F, No. 98, Ming chuan Rd + Hsintien City Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-11-AB (hex) TRUSTABLE TECHNOLOGY CO.,LTD. +0011AB (base 16) TRUSTABLE TECHNOLOGY CO.,LTD. + 12FL.-1,NO.167,Fu-Shing N.Rd.,Sung-Shan area + Taipei 105 + TAIWAN, REPUBLIC OF CHINA + +00-11-AC (hex) Simtec Electronics +0011AC (base 16) Simtec Electronics + Avondale Drive + Tarleton Lancashire PR4 6AX + UNITED KINGDOM + +00-11-AD (hex) Shanghai Ruijie Technology +0011AD (base 16) Shanghai Ruijie Technology + 27F, 420 Jiangning Rd. + Shanghai 200041 + CHINA + +00-11-AE (hex) Motorola BCS +0011AE (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-11-AF (hex) Medialink-i,Inc +0011AF (base 16) Medialink-i,Inc + 1-9-10 Hamamatsu-Cho + BELIEVE A HAMAMATSUCHO + Minato-Ku Tokyo 105-0013 + JAPAN + +00-11-B0 (hex) Fortelink Inc. +0011B0 (base 16) Fortelink Inc. + 42501 Albrae street suite 202 + Fremont CA 94538 + UNITED STATES + +00-11-B1 (hex) BlueExpert Technology Corp. +0011B1 (base 16) BlueExpert Technology Corp. + 8F,No.16,Lane 77,Xing-Ai Rd,Nei-Hu District + Taipei 11494 + TAIWAN, REPUBLIC OF CHINA + +00-11-B2 (hex) 2001 Technology Inc. +0011B2 (base 16) 2001 Technology Inc. + 7F-10, 79 Hsin Tai 5th. Rd. Sec.1 + Hsi Chih Taipei County 221 + TAIWAN, REPUBLIC OF CHINA + +00-11-B3 (hex) YOSHIMIYA CO.,LTD. +0011B3 (base 16) YOSHIMIYA CO.,LTD. + 2-3-24 Bainan + Nishinari-ku + OSAKA OSAKA-Pref 557-0033 + JAPAN + +00-11-B4 (hex) Westermo Teleindustri AB +0011B4 (base 16) Westermo Teleindustri AB + Stora Sundby + SE-640 40 + SWEDEN + +00-11-B5 (hex) Shenzhen Powercom Co.,Ltd +0011B5 (base 16) Shenzhen Powercom Co.,Ltd + Floor 16,Tower B,Zhongyin Building,North Caitian Road,Futian District,Shenzhen,P.R.China + Shenzhen Guangdong province 518028 + CHINA + +00-11-B6 (hex) Open Systems International +0011B6 (base 16) Open Systems International + 3600 Holly Lane North + Suite 40 + Minneapolis MN 55447 + UNITED STATES + +00-11-B7 (hex) Onroerend Groen B.V. +0011B7 (base 16) Onroerend Groen B.V. + Molensteijn 60 + De Meern NL-3454 PT + NETHERLANDS + +00-11-B8 (hex) Liebherr - Elektronik GmbH +0011B8 (base 16) Liebherr - Elektronik GmbH + Peter - Dornier - Strasse 11 + Lindau (Bodensee) Bavaria 88131 + GERMANY + +00-11-B9 (hex) Inner Range Pty. Ltd. +0011B9 (base 16) Inner Range Pty. Ltd. + 1 Millenium Court + Knoxfield Victoria 3180 + AUSTRALIA + +00-11-BA (hex) Elexol Pty Ltd +0011BA (base 16) Elexol Pty Ltd + Level 2 / 146 Bundall Road + Bundall Queensland 4217 + AUSTRALIA + +00-11-BB (hex) Cisco Systems +0011BB (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-11-BC (hex) Cisco Systems +0011BC (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-11-BD (hex) Bombardier Transportation +0011BD (base 16) Bombardier Transportation + 1501 Lebanon Church Road + Pittsburgh PA 15236 + UNITED STATES + +00-11-BE (hex) AGP Telecom Co. Ltd +0011BE (base 16) AGP Telecom Co. Ltd + 9F, 134 Chung-Hsiao E. RD + Sec. 4 + Taipei 106 + TAIWAN, REPUBLIC OF CHINA + +00-11-BF (hex) AESYS S.p.A. +0011BF (base 16) AESYS S.p.A. + Via Artigiani, 41 + Brusaporto Bergamo 24060 + ITALY + +00-11-C0 (hex) Aday Technology Inc +0011C0 (base 16) Aday Technology Inc + 9F.-3, No. 247, Sec. 1, Taichung Port Rd., + Taichung City Taiw 403 + TAIWAN, REPUBLIC OF CHINA + +00-11-C1 (hex) 4P MOBILE DATA PROCESSING +0011C1 (base 16) 4P MOBILE DATA PROCESSING + VIALE REGIONE VENETO 26 + PADOVA PD 35127 + ITALY + +00-11-C2 (hex) United Fiber Optic Communication +0011C2 (base 16) United Fiber Optic Communication + 13-1,NO.700,Jungjeng RD,Junghe City + Junghe City Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-11-C3 (hex) Transceiving System Technology Corporation +0011C3 (base 16) Transceiving System Technology Corporation + NO.85,Sec.2,Gongdaowu Rd., + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-11-C4 (hex) Terminales de Telecomunicacion Terrestre, S.L. +0011C4 (base 16) Terminales de Telecomunicacion Terrestre, S.L. + Poligono Europolis, Calle C 26 + Las Rozas Madrid 28230 + SPAIN + +00-11-C5 (hex) TEN Technology +0011C5 (base 16) TEN Technology + 555 East Ocean Blvd. + 9th Floor + Long Beach CA 90802 + UNITED STATES + +00-11-C6 (hex) Seagate Technology LLC +0011C6 (base 16) Seagate Technology LLC + 1280 Disc Drive + Shakopee MN 55379 + UNITED STATES + +00-11-C7 (hex) RAYMARINE Group Ltd. +0011C7 (base 16) RAYMARINE Group Ltd. + Robinson Way + PORTSMOUTH Hampshire PO3 5TD + UNITED KINGDOM + +00-11-C8 (hex) Powercom Co., Ltd. +0011C8 (base 16) Powercom Co., Ltd. + 8F, No. 246, Lien Chen Rd. + Chung Ho Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-11-C9 (hex) MTT Corporation +0011C9 (base 16) MTT Corporation + 2-7-12 + Murotani + Nishi-ku Kobe 651-2241 + JAPAN + +00-11-CA (hex) Long Range Systems, Inc. +0011CA (base 16) Long Range Systems, Inc. + 9855 Chartwell Dr. + Dallas Texas 75243 + UNITED STATES + +00-11-CB (hex) Jacobsons AB +0011CB (base 16) Jacobsons AB + Nedralid s 32 + Motala 591 97 + SWEDEN + +00-11-CC (hex) Guangzhou Jinpeng Group Co.,Ltd. +0011CC (base 16) Guangzhou Jinpeng Group Co.,Ltd. + No.9 Shenzhou Road,Guangzhou Science City + Guangzhou Guangdong 510663 + CHINA + +00-11-CD (hex) Axsun Technologies +0011CD (base 16) Axsun Technologies + 1 Fortune Drive + Billerica MA 02460 + UNITED STATES + +00-11-CE (hex) Ubisense Limited +0011CE (base 16) Ubisense Limited + St. Andrews House + St. Andrews Road + Chesterton Cambridge CB4 1DL + UNITED KINGDOM + +00-11-CF (hex) Thrane & Thrane A/S +0011CF (base 16) Thrane & Thrane A/S + Lundtoftegaardsvej 93D + Lyngby København 2800 + DENMARK + +00-11-D0 (hex) Tandberg Data ASA +0011D0 (base 16) Tandberg Data ASA + Kjelsåsveien 161 + Oslo 0411 + NORWAY + +00-11-D1 (hex) Soft Imaging System GmbH +0011D1 (base 16) Soft Imaging System GmbH + Johann-Krane-Weg 39 + Muenster 48149 + GERMANY + +00-11-D2 (hex) Perception Digital Ltd +0011D2 (base 16) Perception Digital Ltd + Flat A, 8/F, Shaw House + RM A + Clear Water Bay NT + HONG KONG + +00-11-D3 (hex) NextGenTel Holding ASA +0011D3 (base 16) NextGenTel Holding ASA + Sandslimarka 31 + Sandsli + Bergen Hordaland 5861 + NORWAY + +00-11-D4 (hex) NetEnrich, Inc +0011D4 (base 16) NetEnrich, Inc + 890 Hillview Ct. + Suite 150 + Milpitas CA 95035 + UNITED STATES + +00-11-D5 (hex) Hangzhou Sunyard System Engineering Co.,Ltd. +0011D5 (base 16) Hangzhou Sunyard System Engineering Co.,Ltd. + Sunyard Science & Technology Building Hi-Tech Software Park(Second Land Consolidation) + Hangzhou Hi-Tech Industrial Development Zone(Binjiang District) + Hangzhou Zhejiang 310053 + CHINA + +00-11-D6 (hex) HandEra, Inc. +0011D6 (base 16) HandEra, Inc. + 2859 104th St. + Des Moines IA 50322 + UNITED STATES + +00-11-D7 (hex) eWerks Inc +0011D7 (base 16) eWerks Inc + 411-2025 Guelph Line + Burlington Ontario L7P 4X4 + CANADA + +00-11-D8 (hex) ASUSTek Computer Inc. +0011D8 (base 16) ASUSTek Computer Inc. + No. 15, Li-Te Rd., Peitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-11-D9 (hex) TiVo +0011D9 (base 16) TiVo + 2160 Gold Ave + Alviso CA 95002-2160 + UNITED STATES + +00-11-DA (hex) Vivaas Technology Inc. +0011DA (base 16) Vivaas Technology Inc. + 15F, No. 10, Sec 1, Pei-Hsin Rd., + Hsin-Tien city Taipei Hsien, 231 + TAIWAN, REPUBLIC OF CHINA + +00-11-DB (hex) Land-Cellular Corporation +0011DB (base 16) Land-Cellular Corporation + 12054 Miramar Parkway + Miramar FL 33025 + UNITED STATES + +00-11-DC (hex) Glunz & Jensen +0011DC (base 16) Glunz & Jensen + Haslevvej 13 + Ringsted 4100 + DENMARK + +00-11-DD (hex) FROMUS TEC. Co., Ltd. +0011DD (base 16) FROMUS TEC. Co., Ltd. + 2F 896-8 Hogye2-dong Dongan-Gu + Anyang-City, Gyeonggi-do, + 431-836 + KOREA, REPUBLIC OF + +00-11-DE (hex) EURILOGIC +0011DE (base 16) EURILOGIC + Centrale Parc Bât 7 + Avenue sully prud'homme + Chatenay Malabry 92298 + FRANCE + +00-11-DF (hex) Arecont Systems +0011DF (base 16) Arecont Systems + 177 N Church Ave suite 1010 + Tucson Arizona 85701 + UNITED STATES + +00-11-E0 (hex) U-MEDIA Communications, Inc. +0011E0 (base 16) U-MEDIA Communications, Inc. + 9F, No.1, Jin-Shan 7th St. + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-11-E1 (hex) BEKO Electronics Co. +0011E1 (base 16) BEKO Electronics Co. + Beylikduzu Mevkii Buyukcekmece + Istanbul 34901 + TURKEY + +00-11-E2 (hex) Hua Jung Components Co., Ltd. +0011E2 (base 16) Hua Jung Components Co., Ltd. + 5F, No.13, Lane 120, Sec.1, Nei Hu Road + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-11-E3 (hex) Thomson, Inc. +0011E3 (base 16) Thomson, Inc. + 101 West 103rd Street + Indianapolis IN 46290 + UNITED STATES + +00-11-E4 (hex) Danelec Electronics A/S +0011E4 (base 16) Danelec Electronics A/S + Blokken 44 + Birkeroed Copenhagen 3460 + DENMARK + +00-11-E5 (hex) KCodes Corporation +0011E5 (base 16) KCodes Corporation + Floor 2, Number 501, Section 2 + Tiding Boulevard + Neihu District Taipei City 231 + TAIWAN, REPUBLIC OF CHINA + +00-11-E6 (hex) Scientific Atlanta +0011E6 (base 16) Scientific Atlanta + 5030 Sugarloaf Parkway + Mail Stop 5.2.428 + Lawrenceville Ga 30042 + UNITED STATES + +00-11-E7 (hex) WORLDSAT - Texas de France +0011E7 (base 16) WORLDSAT - Texas de France + 220, rue Gustave Eiffel + cedex 3 + Aix en Provence Bouches du Rhone 13854 + FRANCE + +00-11-E8 (hex) Tixi.Com +0011E8 (base 16) Tixi.Com + Karmeliterweg 114 + Berlin 13465 + GERMANY + +00-11-E9 (hex) STARNEX CO., LTD. +0011E9 (base 16) STARNEX CO., LTD. + 4th Floor, C&C Bldg, 228-2 + Guui-dong + Kwangjin-gu Seoul 143-200 + KOREA, REPUBLIC OF + +00-11-EA (hex) IWICS Inc. +0011EA (base 16) IWICS Inc. + 19125 North Creek Parkway + Suite 201 + Bothell WA 98011 + UNITED STATES + +00-11-EB (hex) Innovative Integration +0011EB (base 16) Innovative Integration + 2390A Ward Avenue + Simi Valley CA 93065 + UNITED STATES + +00-11-EC (hex) AVIX INC. +0011EC (base 16) AVIX INC. + 1-1, Fukuura, Kanazawa-ku + Yokohama-shi Kanagawa 236-0004 + JAPAN + +00-11-ED (hex) 802 Global +0011ED (base 16) 802 Global + Studio 11,Intec 2,Wade Road + Basingstoke, + Hampshire RG24 BNE + UNITED KINGDOM + +00-11-EE (hex) Estari, Inc. +0011EE (base 16) Estari, Inc. + 1800 Paxton St + Harrisburg PA 17104 + UNITED STATES + +00-11-EF (hex) Conitec Datensysteme GmbH +0011EF (base 16) Conitec Datensysteme GmbH + Dieselstr. 11c + Dieburg Hessen 64807 + GERMANY + +00-11-F0 (hex) Wideful Limited +0011F0 (base 16) Wideful Limited + 3B, Speedy Ind. Bldg., 114 How Ming Street + Kwun Tong + Hong Kong 852 + HONG KONG + +00-11-F1 (hex) QinetiQ Ltd +0011F1 (base 16) QinetiQ Ltd + Room E601 + St. Andrew's Road + Malvern Worcestershire WR14 3PS + UNITED KINGDOM + +00-11-F2 (hex) Institute of Network Technologies +0011F2 (base 16) Institute of Network Technologies + 17-th Line Vasilevsky Ostrov, 54-1 + St.Petersburg 199178 + RUSSIAN FEDERATION + +00-11-F3 (hex) Gavitec AG- mobile digit +0011F3 (base 16) Gavitec AG- mobile digit + Jens-Otto-Krag-Str. 11 + Würselen Nordrhein-Westfalen 52146 + GERMANY + +00-11-F4 (hex) woori-net +0011F4 (base 16) woori-net + #508, Hankook Moolyu, 853-1 Dongchun-Dong + Yongin-Si Kyungki-Do 449-843 + KOREA, REPUBLIC OF + +00-11-F5 (hex) ASKEY COMPUTER CORP. +0011F5 (base 16) ASKEY COMPUTER CORP. + 10F, NO.119, CHIENKANG RD., + CHUNG-HO, TAIPEI 235 + TAIWAN, REPUBLIC OF CHINA + +00-11-F6 (hex) Asia Pacific Microsystems , Inc. +0011F6 (base 16) Asia Pacific Microsystems , Inc. + No.2,R&D Road 6 ,Science-Based Industrial Park, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-11-F7 (hex) Shenzhen Forward Industry Co., Ltd +0011F7 (base 16) Shenzhen Forward Industry Co., Ltd + 4b1 F5.8, Tian An Cyber Park, Chengongmiao, + Shenzhen Guangdong 518040 + CHINA + +00-11-F8 (hex) AIRAYA Corp +0011F8 (base 16) AIRAYA Corp + 637 Adair Court + Morgan Hill CA 95037 + UNITED STATES + +00-11-F9 (hex) Nortel Networks +0011F9 (base 16) Nortel Networks + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-11-FA (hex) Rane Corporation +0011FA (base 16) Rane Corporation + 10802 47th Avenue West + Mukilteo WA 98275-5098 + UNITED STATES + +00-11-FB (hex) Heidelberg Engineering GmbH +0011FB (base 16) Heidelberg Engineering GmbH + Tiergartenstr. 15 + Heidelberg Baden-Wuerttemberg 69121 + GERMANY + +00-11-FC (hex) HARTING Electric Gmbh & Co.KG +0011FC (base 16) HARTING Electric Gmbh & Co.KG + Wilhelm Harting Str. 1 + Espelkamp Nordrhein Westfalen D-32339 + GERMANY + +00-11-FD (hex) KORG INC. +0011FD (base 16) KORG INC. + 1-15-12 SHIMOTAKAIDO + SUGINAMI-KU TOKYO 168-0073 + JAPAN + +00-11-FE (hex) Keiyo System Research, Inc. +0011FE (base 16) Keiyo System Research, Inc. + Hamada park Bldg. 6F + 17-3 Shinmachi Chuou-ku + Chiba-city Chiba-pref 260-0028 + JAPAN + +00-11-FF (hex) Digitro Tecnologia Ltda +0011FF (base 16) Digitro Tecnologia Ltda + Rua: Professora Sofia Quint de Souza, 167 + Bairro: Capoeiras + Florianópolis Santa Catarina 88085-040 + BRAZIL + +00-12-00 (hex) Cisco +001200 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-12-01 (hex) Cisco +001201 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-12-02 (hex) Decrane Aerospace - Audio International Inc. +001202 (base 16) Decrane Aerospace - Audio International Inc. + 7300 Industry Drive + North Little Rock AR 72117 + UNITED STATES + +00-12-03 (hex) Activ Networks +001203 (base 16) Activ Networks + BAT L - 1 rue de Terre Neuve + BP127 + COURTABOEUF N/A 91944 + FRANCE + +00-12-04 (hex) u10 Networks, Inc. +001204 (base 16) u10 Networks, Inc. + 2-2-14 Kakinokizaka + Meguro Tokyo 152-0022 + JAPAN + +00-12-05 (hex) Terrasat Communications, Inc. +001205 (base 16) Terrasat Communications, Inc. + 235 Vineyard Court, suite 100 + Morgan Hill California 95037 + UNITED STATES + +00-12-06 (hex) iQuest (NZ) Ltd +001206 (base 16) iQuest (NZ) Ltd + P.O.Box 15169 + Dinsdale + Hamilton Waikato 2031 + NEW ZEALAND + +00-12-07 (hex) Head Strong International Limited +001207 (base 16) Head Strong International Limited + Unit 9, 20/F, Metropole Square, + 2 On Yiu Street, Shatin + Guangdong + HONG KONG + +00-12-08 (hex) Gantner Electronic GmbH +001208 (base 16) Gantner Electronic GmbH + Montafonerstrasse 8 + Schruns Vorarlberg 6780 + AUSTRIA + +00-12-09 (hex) Fastrax Ltd +001209 (base 16) Fastrax Ltd + Valimotie 7 + Vantaa FI 01510 + FINLAND + +00-12-0A (hex) Emerson Electric GmbH & Co. OHG +00120A (base 16) Emerson Electric GmbH & Co. OHG + Heerstrasse 111 + Waiblingen BW 71332 + GERMANY + +00-12-0B (hex) Chinasys Technologies Limited +00120B (base 16) Chinasys Technologies Limited + 10/F,CAGW Building,No.30 Haidian South Road + Beijing 100080 + CHINA + +00-12-0C (hex) CE-Infosys Pte Ltd +00120C (base 16) CE-Infosys Pte Ltd + 390 Havelock Road + #08-02 King's Centre + 169662 + SINGAPORE + +00-12-0D (hex) Advanced Telecommunication Technologies, Inc. +00120D (base 16) Advanced Telecommunication Technologies, Inc. + 10390 Wilshire Boulevard + Suite 1803 + Los Angeles California 90024 + UNITED STATES + +00-12-0E (hex) AboCom +00120E (base 16) AboCom + 1F , No. 21, Yanfa 2nd Rd., SBIP + Hsinchu City 300 + TAIWAN, REPUBLIC OF CHINA + +00-12-0F (hex) IEEE 802.3 +00120F (base 16) IEEE 802.3 + + 15599 Harrow Lane + Poway CA 92064 + UNITED STATES + +00-12-10 (hex) WideRay Corp +001210 (base 16) WideRay Corp + 25 Kearny Street + 6th Floor + San Francisco CA 94108 + UNITED STATES + +00-12-11 (hex) Protechna Herbst GmbH & Co. KG +001211 (base 16) Protechna Herbst GmbH & Co. KG + Otto Hahn Str. 26 + Ottobrunn Germany/Bavaria 85521 + GERMANY + +00-12-12 (hex) PLUS Vision Corporation +001212 (base 16) PLUS Vision Corporation + 1033-1, Oshitate, Inagi-shi, + Tokyo Saitama 206-0811 + JAPAN + +00-12-13 (hex) Metrohm AG +001213 (base 16) Metrohm AG + Oberdorfstrasse 68 + Herisau AR 9101 + SWITZERLAND + +00-12-14 (hex) Koenig & Bauer AG +001214 (base 16) Koenig & Bauer AG + Friedrich-Koenig-Str. 4 + Wuerzburg Bavaria 97080 + GERMANY + +00-12-15 (hex) iStor Networks, Inc. +001215 (base 16) iStor Networks, Inc. + 7585 Irvine Center Drive + Suite 250 + Irvine CA 92618 + UNITED STATES + +00-12-16 (hex) ICP Internet Communication Payment AG +001216 (base 16) ICP Internet Communication Payment AG + Wilhelm-Stein-Weg 24 + Hamburg D-22339 + GERMANY + +00-12-17 (hex) Cisco-Linksys, LLC +001217 (base 16) Cisco-Linksys, LLC + 121 Theory Dr. + Irvine CA 92612 + UNITED STATES + +00-12-18 (hex) ARUZE Corporation +001218 (base 16) ARUZE Corporation + Ariake Frontier Building A + 3-1-25 Ariake + Kohtoh-ku Tokyo 135-0063 + JAPAN + +00-12-19 (hex) Ahead Communication Systems Inc +001219 (base 16) Ahead Communication Systems Inc + 199 Park Road Ext + PO Box 929 + Middlebury CT 06762 + UNITED STATES + +00-12-1A (hex) Techno Soft Systemnics Inc. +00121A (base 16) Techno Soft Systemnics Inc. + 2-5-17, Ebisu-nishi, Naniwa-ku, + Osaka 556-0003 + JAPAN + +00-12-1B (hex) Sound Devices, LLC +00121B (base 16) Sound Devices, LLC + 300 Wengel Drive + Reedsburg WI 53959 + UNITED STATES + +00-12-1C (hex) PARROT S.A. +00121C (base 16) PARROT S.A. + 174, quai de Jemmapes + PARIS 75010 + FRANCE + +00-12-1D (hex) Netfabric Corporation +00121D (base 16) Netfabric Corporation + 67 Federal Road + Suite 300 + Brookfield CT 06804 + UNITED STATES + +00-12-1E (hex) Juniper Networks, Inc. +00121E (base 16) Juniper Networks, Inc. + 1194 N. Mathilda Avenue + Sunnyvale CA 94010 + UNITED STATES + +00-12-1F (hex) Harding Intruments +00121F (base 16) Harding Intruments + 9431-41Ave + Edmonton AB T6E 5X7 + CANADA + +00-12-20 (hex) Cadco Systems +001220 (base 16) Cadco Systems + 2363 Merritt Dr + Garland Texas 75041 + UNITED STATES + +00-12-21 (hex) B.Braun Melsungen AG +001221 (base 16) B.Braun Melsungen AG + Schwarzenberger Weg 73-79 + Melsungen Hessen 34212 + GERMANY + +00-12-22 (hex) Skardin (UK) Ltd +001222 (base 16) Skardin (UK) Ltd + No. 5 Greenway (RO24) + Harlow Business Park + Harlow Essex CM19 5QB + UNITED KINGDOM + +00-12-23 (hex) Pixim +001223 (base 16) Pixim + 915 Linda Vista Ave. + Mountain View CA 94043 + UNITED STATES + +00-12-24 (hex) NexQL Corporation +001224 (base 16) NexQL Corporation + 12250 Inwood Road #6 + Dallas TX 75244 + UNITED STATES + +00-12-25 (hex) Motorola BCS +001225 (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-12-26 (hex) Japan Direx Corporation +001226 (base 16) Japan Direx Corporation + Kyocera Harajuku Bldg. + 6-27-8, Jingumae + Shibuya-ku Tokyo 150-0001 + JAPAN + +00-12-27 (hex) Franklin Electric Co., Inc. +001227 (base 16) Franklin Electric Co., Inc. + 400 E. Spring Street + Bluffton Indiana 46714 + UNITED STATES + +00-12-28 (hex) Data Ltd. +001228 (base 16) Data Ltd. + J. Hagaru 9 + P.O. Box 7 + Bratislava 830 05 + SLOVAKIA + +00-12-29 (hex) BroadEasy Technologies Co.,Ltd +001229 (base 16) BroadEasy Technologies Co.,Ltd + 24th Floor,Tower A,JinShan Mansion, + NO.8 ShanXi Road,Nanjing,P.R.C. + Nanjing Jiangsu 210009 + CHINA + +00-12-2A (hex) VTech Telecommunications Ltd. +00122A (base 16) VTech Telecommunications Ltd. + 23/F, Tai Ping Industrial Centre, Block 1 + 57 Ting Kok Road, Tai Po + HONG KONG + +00-12-2B (hex) Virbiage Pty Ltd +00122B (base 16) Virbiage Pty Ltd + Level 4 + 8 Market Street + Melbourne Victoria 3000 + AUSTRALIA + +00-12-2C (hex) Soenen Controls N.V. +00122C (base 16) Soenen Controls N.V. + Wijnedalestraat 190 + Roeselare W-VL 8800 + BELGIUM + +00-12-2D (hex) SiNett Corporation +00122D (base 16) SiNett Corporation + 640 W. California Avenue + Sunnyvale CA 94086 + UNITED STATES + +00-12-2E (hex) Signal Technology - AISD +00122E (base 16) Signal Technology - AISD + 1820 Preston Park Blvd. + Suite 2800 + Plano TX 75093 + UNITED STATES + +00-12-2F (hex) Sanei Electric Inc. +00122F (base 16) Sanei Electric Inc. + 5F Taisou-Ikebukuro Bldg. + 2-61-1 Ikebukuro + Toshima-ku Tokyo 171-0014 + JAPAN + +00-12-30 (hex) Picaso Infocommunication CO., LTD. +001230 (base 16) Picaso Infocommunication CO., LTD. + 3F, Suntechcity, Sangdaewon 1-dong, + 513-15, Jungwon-gu + Sungnam-city Kyunggi-do 462-725 + KOREA, REPUBLIC OF + +00-12-31 (hex) Motion Control Systems, Inc. +001231 (base 16) Motion Control Systems, Inc. + PO Box 115 + 6701 Viscoe Road + New River VA 24129 + UNITED STATES + +00-12-32 (hex) LeWiz Communications Inc. +001232 (base 16) LeWiz Communications Inc. + 1376 N. 4th St. #300 + San Jose CA 95112 + UNITED STATES + +00-12-33 (hex) JRC TOKKI Co.,Ltd. +001233 (base 16) JRC TOKKI Co.,Ltd. + 3-2-1 Shinyoshidahigashi Kohoku-ku + Yokohama Kanagawa 223-8572 + JAPAN + +00-12-34 (hex) Camille Bauer +001234 (base 16) Camille Bauer + Aargauerstr. 7 + Wohlen AG 5610 + SWITZERLAND + +00-12-35 (hex) Andrew Corporation +001235 (base 16) Andrew Corporation + 2601 Telecom Pkwy + Richardson TX 75082 + UNITED STATES + +00-12-36 (hex) ConSentry Networks +001236 (base 16) ConSentry Networks + 1690 McCandless Dr + Milipitas CA 95035 + UNITED STATES + +00-12-37 (hex) Texas Instruments +001237 (base 16) Texas Instruments + 12500 TI Boulevard, + MS 8723 + Dallas Texas 75243 + UNITED STATES + +00-12-38 (hex) SetaBox Technology Co., Ltd. +001238 (base 16) SetaBox Technology Co., Ltd. + 9F-1, No. 293-3, Sec2, Fu-Hsing S. Rd. + Taipei 106 + TAIWAN, REPUBLIC OF CHINA + +00-12-39 (hex) S Net Systems Inc. +001239 (base 16) S Net Systems Inc. + 10F Sungwon Bldg. Samsung-dong + Gangnam-gu + Seoul 135-090 + KOREA, REPUBLIC OF + +00-12-3A (hex) Posystech Inc., Co. +00123A (base 16) Posystech Inc., Co. + Room 407, Daeryung Techno Town 6, + 493-6, Gasan-Dong, Geumcheon-Gu, + Seoul 153-771 + KOREA, REPUBLIC OF + +00-12-3B (hex) KeRo Systems ApS +00123B (base 16) KeRo Systems ApS + Allikevej 3 + Hørsholm 2970 + DENMARK + +00-12-3C (hex) Second Rule LLC +00123C (base 16) Second Rule LLC + 4119 Walnut Street + Suite 200 + Philadelphia PA 19104 + UNITED STATES + +00-12-3D (hex) GES +00123D (base 16) GES + Room 5403, DongSeoul College, 423, Bokjeong-Dong, Sujeong-Gu, Seongnam-Si, Gyeonggi-Do, + Gyeonggi-Do Seongnam-Si 461-714 + KOREA, REPUBLIC OF + +00-12-3E (hex) ERUNE technology Co., Ltd. +00123E (base 16) ERUNE technology Co., Ltd. + No. 429, Chin-San 2nd street, + Yang-Mei + Tao Yuan 326 + TAIWAN, REPUBLIC OF CHINA + +00-12-3F (hex) Dell Inc +00123F (base 16) Dell Inc + One Dell Way + Round Rock Texas 78682 + UNITED STATES + +00-12-40 (hex) AMOI ELECTRONICS CO.,LTD +001240 (base 16) AMOI ELECTRONICS CO.,LTD + 295 Lane,Zuchongzhi Road,Zhang jiang, + Shanghai 201203 + CHINA + +00-12-41 (hex) a2i marketing center +001241 (base 16) a2i marketing center + 1024-4 Duksan Bldg Bangbaedong Seochogu Seoul Korea + SEOUL 137-060 + KOREA, REPUBLIC OF + +00-12-42 (hex) Millennial Net +001242 (base 16) Millennial Net + 2 4th Avenue + Burlington MA 01803 + UNITED STATES + +00-12-43 (hex) Cisco +001243 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-12-44 (hex) Cisco +001244 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-12-45 (hex) Zellweger Analytics, Inc. +001245 (base 16) Zellweger Analytics, Inc. + 405 Barclay Blvd. + Lincolnshire Illinois 60069 + UNITED STATES + +00-12-46 (hex) T.O.M TECHNOLOGY INC.. +001246 (base 16) T.O.M TECHNOLOGY INC.. + 906 Woolim E-biz Center 2, + Guro-3Dong + Seoul Guro-Gu 184-1 + KOREA, REPUBLIC OF + +00-12-47 (hex) Samsung Electronics Co., Ltd. +001247 (base 16) Samsung Electronics Co., Ltd. + #94-1, Imsoo-Dong + Gumi-City Gyeong-Buk 730-350 + KOREA, REPUBLIC OF + +00-12-48 (hex) EMC Corporation (Kashya) +001248 (base 16) EMC Corporation (Kashya) + 176 South Street + Hopkinton MA 01748 + UNITED STATES + +00-12-49 (hex) Delta Elettronica S.p.A. +001249 (base 16) Delta Elettronica S.p.A. + Via Astico 41 + Varese 21100 + ITALY + +00-12-4A (hex) Dedicated Devices, Inc. +00124A (base 16) Dedicated Devices, Inc. + 5680 E. Franklin + Suite 250 + Nampa Idaho 83687 + UNITED STATES + +00-12-4B (hex) Texas Instruments +00124B (base 16) Texas Instruments + Gaustadalleen 21 + Texas Instruments Norway AS + Oslo N-0349 + NORWAY + +00-12-4C (hex) BBWM Corporation +00124C (base 16) BBWM Corporation + 6F, No. 578, Rui Guang Road, Nei Hu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-12-4D (hex) Inducon BV +00124D (base 16) Inducon BV + Kerklaan 26 + Leimuiden ZH 2541 CG + NETHERLANDS + +00-12-4E (hex) XAC AUTOMATION CORP. +00124E (base 16) XAC AUTOMATION CORP. + 4F, 30 Industry E. Road IX + Science Park + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-12-4F (hex) Tyco Thermal Controls LLC. +00124F (base 16) Tyco Thermal Controls LLC. + 11004 - 174 St. + Edmonton Alberta T5S 2P3 + CANADA + +00-12-50 (hex) Tokyo Aircaft Instrument Co., Ltd. +001250 (base 16) Tokyo Aircaft Instrument Co., Ltd. + 1-35-1, Izumi-Honcho + Komae-Shi Tokyo 201-8555 + JAPAN + +00-12-51 (hex) SILINK +001251 (base 16) SILINK + 13 RUE POMEYS + LE TAILLAN 33320 + FRANCE + +00-12-52 (hex) Citronix, LLC +001252 (base 16) Citronix, LLC + 3030 SE Loop 820 + Fort Worth Texas 76140 + UNITED STATES + +00-12-53 (hex) AudioDev AB +001253 (base 16) AudioDev AB + Kabingatan 9 + Malmö SE-212 39 + SWEDEN + +00-12-54 (hex) Spectra Technologies Holdings Company Ltd +001254 (base 16) Spectra Technologies Holdings Company Ltd + Unit 1301-09, Tower II + Pacific Century Place, Mongkok + 852 + HONG KONG + +00-12-55 (hex) NetEffect Incorporated +001255 (base 16) NetEffect Incorporated + 9211 Waterford Centre Blvd + Suite 100 + Austin Texas 78758 + UNITED STATES + +00-12-56 (hex) LG INFORMATION & COMM. +001256 (base 16) LG INFORMATION & COMM. + 459-9,KASAN-DONG,KUMCHON-GU, + SEOUL 153-023 + KOREA, REPUBLIC OF + +00-12-57 (hex) LeapComm Communication Technologies Inc. +001257 (base 16) LeapComm Communication Technologies Inc. + RM1804-05 South Tower Hong Kong Plaza, No.283 Huaihai Zhong Road + Shanghai 200021 + CHINA + +00-12-58 (hex) Activis Polska +001258 (base 16) Activis Polska + Swierzawska 5 + Poznan Wielkopolska 60-321 + POLAND + +00-12-59 (hex) THERMO ELECTRON KARLSRUHE +001259 (base 16) THERMO ELECTRON KARLSRUHE + DIESELSTRASSE 4 + KARLSRUHE BADEN WÜRTEMBERG 76227 + GERMANY + +00-12-5A (hex) Microsoft Corporation +00125A (base 16) Microsoft Corporation + One Microsoft Way + Redmond Washington 98052-6399 + UNITED STATES + +00-12-5B (hex) KAIMEI ELECTRONI +00125B (base 16) KAIMEI ELECTRONI + 14-3F, NO.81,SEC. 1,HSIN-TAI-WU ROAD,HSICHIH, + TAIPEI HSIEN HSICHIH 221 + TAIWAN, REPUBLIC OF CHINA + +00-12-5C (hex) Green Hills Software, Inc. +00125C (base 16) Green Hills Software, Inc. + 30 West Sola Street + Santa Barbara CA 93101 + UNITED STATES + +00-12-5D (hex) CyberNet Inc. +00125D (base 16) CyberNet Inc. + #205, Lotte Suntech City, 513-15 + Sangdaewon-dong, Chungwon-gu + Sungnam Kyunggi 462-806 + KOREA, REPUBLIC OF + +00-12-5E (hex) CAEN +00125E (base 16) CAEN + via Vetraia, 11 + Viareggio LUCCA 55049 + ITALY + +00-12-5F (hex) AWIND Inc. +00125F (base 16) AWIND Inc. + 17F., No. 886-5, Jungjeng Rd + Junghe City + Taipei County 235 + TAIWAN, REPUBLIC OF CHINA + +00-12-60 (hex) Stanton Magnetics,inc. +001260 (base 16) Stanton Magnetics,inc. + 3000 SW 42nd Street + Hollywood FL 33312 + UNITED STATES + +00-12-61 (hex) Adaptix, Inc +001261 (base 16) Adaptix, Inc + 1407 116th Ave. NE + Suite E210 + Bellevue WA 98004 + UNITED STATES + +00-12-62 (hex) Nokia Danmark A/S +001262 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-12-63 (hex) Data Voice Technologies GmbH +001263 (base 16) Data Voice Technologies GmbH + Stockholmer Allee 32b + Dortmund NRW D-44269 + GERMANY + +00-12-64 (hex) daum electronic gmbh +001264 (base 16) daum electronic gmbh + flugplatzstr. 100 + Fuerth Bavaria 90768 + GERMANY + +00-12-65 (hex) Enerdyne Technologies, Inc. +001265 (base 16) Enerdyne Technologies, Inc. + 1935 Cordell Court + El Cajon CA 92020 + UNITED STATES + +00-12-66 (hex) Swisscom Hospitality Services SA +001266 (base 16) Swisscom Hospitality Services SA + Chemin de l'Etang 65 + 1211 Geneva + SWITZERLAND + +00-12-67 (hex) Matsushita Electronic Components Co., Ltd. +001267 (base 16) Matsushita Electronic Components Co., Ltd. + 1006 Kadoma + Kadoma-City Osaka 571-8506 + JAPAN + +00-12-68 (hex) IPS d.o.o. +001268 (base 16) IPS d.o.o. + C. Ljubljanske brigade 17 + Ljubljana SI-1000 + SLOVENIA + +00-12-69 (hex) Value Electronics +001269 (base 16) Value Electronics + Dong-kwan B/D, 5F, 1566-2 + Seocho-dong, Seocho-gu + seoul 137-874 + KOREA, REPUBLIC OF + +00-12-6A (hex) OPTOELECTRONICS Co., Ltd. +00126A (base 16) OPTOELECTRONICS Co., Ltd. + 3-1Kamiaokinishi 1-chome + Kawaguchi Saitama Pref. 333-0845 + JAPAN + +00-12-6B (hex) Ascalade Communications Limited +00126B (base 16) Ascalade Communications Limited + Unit 10-11, 35/F, Cable TV Tower, + No.9 Hoi Shing Road, Tsuen Wan + HONG KONG + +00-12-6C (hex) Visonic Ltd. +00126C (base 16) Visonic Ltd. + 24 Habarzel St. + Tel Aviv 69710 + ISRAEL + +00-12-6D (hex) University of California, Berkeley +00126D (base 16) University of California, Berkeley + EECS Department + Berkeley CA 94720-1776 + UNITED STATES + +00-12-6E (hex) Seidel Elektronik GmbH Nfg.KG +00126E (base 16) Seidel Elektronik GmbH Nfg.KG + Frauentalerstrasse 100 + Deutschlandsberg Steiermark 8530 + AUSTRIA + +00-12-6F (hex) Rayson Technology Co., Ltd. +00126F (base 16) Rayson Technology Co., Ltd. + 1F No.9 R&D Rd.II, Science-Based Industrial Park + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-12-70 (hex) NGES Denro Systems +001270 (base 16) NGES Denro Systems + 9318 Gaither Road + Gaithersburg MD 20877 + UNITED STATES + +00-12-71 (hex) Measurement Computing Corp +001271 (base 16) Measurement Computing Corp + 16 Commerce Blvd + Middleboro MA 02346 + UNITED STATES + +00-12-72 (hex) Redux Communications Ltd. +001272 (base 16) Redux Communications Ltd. + POB 101 + Modiin 71700 + ISRAEL + +00-12-73 (hex) Stoke Inc +001273 (base 16) Stoke Inc + 2189 Leghorn Street + Mountain View CA 94043 + UNITED STATES + +00-12-74 (hex) NIT lab +001274 (base 16) NIT lab + Skoriny str., 65-3 + Minsk Minskaya obl. 220013 + BELARUS + +00-12-75 (hex) Sentilla Corporation +001275 (base 16) Sentilla Corporation + 201 Marshall Street + Redwood City CA 94063 + UNITED STATES + +00-12-76 (hex) Microsol Holdings Ltd. +001276 (base 16) Microsol Holdings Ltd. + Unit 28, Trinity Enterprise Complex, + Pearse St., + Dublin D2 + IRELAND + +00-12-77 (hex) Korenix Technologies Co., Ltd. +001277 (base 16) Korenix Technologies Co., Ltd. + 11F-1, No. 108, MinQuan Rd. + Xindian City Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-12-78 (hex) International Bar Code +001278 (base 16) International Bar Code + 160 Oak Street + Glastonbury CT 06033 + UNITED STATES + +00-12-79 (hex) Hewlett Packard +001279 (base 16) Hewlett Packard + 20555 State Highway 249 South + MS070405 + Houston TX 77070 + UNITED STATES + +00-12-7A (hex) Sanyu Industry Co.,Ltd. +00127A (base 16) Sanyu Industry Co.,Ltd. + Midori-ku Hakusan1-11-11 + Yokohama-shi Kanagawa-ken 226-0006 + JAPAN + +00-12-7B (hex) VIA Networking Technologies, Inc. +00127B (base 16) VIA Networking Technologies, Inc. + 8F,533, Chung-Cheng Road, Hsin-Tien + Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-12-7C (hex) SWEGON AB +00127C (base 16) SWEGON AB + Box 300 + KVÄNUM VÄSTRA GÖTALAND SE 535 23 + SWEDEN + +00-12-7D (hex) MobileAria +00127D (base 16) MobileAria + 800 W El Camino Real #240 + Mountain View CA 94040 + UNITED STATES + +00-12-7E (hex) Digital Lifestyles Group, Inc. +00127E (base 16) Digital Lifestyles Group, Inc. + 801 South Sentous Ave. + City of Industry CA 91748 + UNITED STATES + +00-12-7F (hex) Cisco +00127F (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-12-80 (hex) Cisco +001280 (base 16) Cisco + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-12-81 (hex) CIEFFE srl +001281 (base 16) CIEFFE srl + Via Ugo Foscolo, 13 + Carate Brianza Milano 20048 + ITALY + +00-12-82 (hex) Qovia +001282 (base 16) Qovia + 7470 New Technology Way + Suite E + Frederick MD 21703 + UNITED STATES + +00-12-83 (hex) Nortel Networks +001283 (base 16) Nortel Networks + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-12-84 (hex) Lab33 Srl +001284 (base 16) Lab33 Srl + C.so F. Perrone 24 + Genoa GE 16152 + ITALY + +00-12-85 (hex) Gizmondo Europe Ltd +001285 (base 16) Gizmondo Europe Ltd + 1 Meadow Gate Avenue + Farnborough Business Park + Farnborough Hampshire GU14 6FG + UNITED KINGDOM + +00-12-86 (hex) ENDEVCO CORP +001286 (base 16) ENDEVCO CORP + 30700 RANCHO VIEJO ROAD + SAN JUAN CAPISTRANO CA 92675 + UNITED STATES + +00-12-87 (hex) Digital Everywhere Unterhaltungselektronik GmbH +001287 (base 16) Digital Everywhere Unterhaltungselektronik GmbH + Maria Gailer Strasse 16 + Villach Kärnten 9500 + AUSTRIA + +00-12-88 (hex) 2Wire, Inc +001288 (base 16) 2Wire, Inc + 1704 Automation Parkway + San Jose CA 94538 + UNITED STATES + +00-12-89 (hex) Advance Sterilization Products +001289 (base 16) Advance Sterilization Products + 33 Technology Drive + Irvine California 92618 + UNITED STATES + +00-12-8A (hex) Motorola PCS +00128A (base 16) Motorola PCS + 645 N. US Hwy 45 + Room no. MW-113 + Libertyville IL 60048 + UNITED STATES + +00-12-8B (hex) Sensory Networks Inc +00128B (base 16) Sensory Networks Inc + Level 6, 140 William St + East Sydney NSW 2011 + AUSTRALIA + +00-12-8C (hex) Woodward Governor +00128C (base 16) Woodward Governor + 1000 E. Drake Road + Ft. Collins CO 80525 + UNITED STATES + +00-12-8D (hex) STB Datenservice GmbH +00128D (base 16) STB Datenservice GmbH + Weinsbergstrasse 190 + Köln NRW 50825 + GERMANY + +00-12-8E (hex) Q-Free ASA +00128E (base 16) Q-Free ASA + Th. Owesensgt. 35c + Trondheim ST 7443 + NORWAY + +00-12-8F (hex) Montilio +00128F (base 16) Montilio + 1 maskit st. + Hertzelia 46763 + ISRAEL + +00-12-90 (hex) KYOWA Electric & Machinery Corp. +001290 (base 16) KYOWA Electric & Machinery Corp. + 4-8-16,Masuizumi + Kanazawa Ishikawa 921-8025 + JAPAN + +00-12-91 (hex) KWS Computersysteme GmbH +001291 (base 16) KWS Computersysteme GmbH + Carl Zeiss Str. 1 + Ettlingen BW 76275 + GERMANY + +00-12-92 (hex) Griffin Technology +001292 (base 16) Griffin Technology + 1619C Elm Hill Pike + Nashville TN 37210 + UNITED STATES + +00-12-93 (hex) GE Energy +001293 (base 16) GE Energy + 1501 Roanoke Blvd. + Room 283 + Salem VA 24153 + UNITED STATES + +00-12-94 (hex) Eudyna Devices Inc. +001294 (base 16) Eudyna Devices Inc. + 1000 Kamisukiawara,Showa-cho + Nakakoma-gun Yamanashi 409-3883 + JAPAN + +00-12-95 (hex) Aiware Inc. +001295 (base 16) Aiware Inc. + J-Tower 2F + 1-1 Nikkocho + Fuchu-shi Tokyo 183-0044 + JAPAN + +00-12-96 (hex) Addlogix +001296 (base 16) Addlogix + 43 Tesla Way + Irvine CA 92618 + UNITED STATES + +00-12-97 (hex) O2Micro, Inc. +001297 (base 16) O2Micro, Inc. + 3118 Patrick Henry Drive + Santa Clara CA 95054 + UNITED STATES + +00-12-98 (hex) MICO ELECTRIC(SHENZHEN) LIMITED +001298 (base 16) MICO ELECTRIC(SHENZHEN) LIMITED + 21/F Block A, Hailrun Complex, 6021 ShenNan Blvd., ShenZhen, PR China. + SHENZHEN GUANGDONG 518040 + CHINA + +00-12-99 (hex) Ktech Telecommunications Inc +001299 (base 16) Ktech Telecommunications Inc + 21540 Prairie Street Unit B + Chatsworth CA 91311 + UNITED STATES + +00-12-9A (hex) IRT Electronics Pty Ltd +00129A (base 16) IRT Electronics Pty Ltd + 26 Hotham Parade + Artarmon NSW 2064 + AUSTRALIA + +00-12-9B (hex) E2S Electronic Engineering Solutions, S.L. +00129B (base 16) E2S Electronic Engineering Solutions, S.L. + Sant Ferran 10 + Barcelona 08031 + SPAIN + +00-12-9C (hex) Yulinet +00129C (base 16) Yulinet + 11F, Samhomoolsan B/D 275-6, Yangjae-dong + Seocho Seoul 137-941 + KOREA, REPUBLIC OF + +00-12-9D (hex) First International Computer do Brasil +00129D (base 16) First International Computer do Brasil + Rodovia BR 459 + km 121 - Distrito Industrial + Santa Rita do Sapucaí Minas Gerais + BRAZIL + +00-12-9E (hex) Surf Communications Inc. +00129E (base 16) Surf Communications Inc. + Room 313, 3F, Bldg.52, No. 195, Chung Hsing Rd., Sec 4, Chutung, HsinChu, Taiwan + HsinChu 310 + TAIWAN, REPUBLIC OF CHINA + +00-12-9F (hex) RAE Systems, Inc. +00129F (base 16) RAE Systems, Inc. + 1339 Moffett Park Drive + Sunnyvale California 94089 + UNITED STATES + +00-12-A0 (hex) NeoMeridian Sdn Bhd +0012A0 (base 16) NeoMeridian Sdn Bhd + 3A-1, Perdana The Place + Jalan PJU 8/5G + Bandar Damansara Perdana Selangor 47820 + MALAYSIA + +00-12-A1 (hex) BluePacket Communications Co., Ltd. +0012A1 (base 16) BluePacket Communications Co., Ltd. + 10F-1, No. 420, Sec. 1, Keelung Rd., 110, + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-12-A2 (hex) VITA +0012A2 (base 16) VITA + PO Box 19658 + Fountain Hills AZ 85269 + UNITED STATES + +00-12-A3 (hex) Trust International B.V. +0012A3 (base 16) Trust International B.V. + Laan van Barcelona 600 + Dordrecht Zuid holland 3317 DD + NETHERLANDS + +00-12-A4 (hex) ThingMagic, LLC +0012A4 (base 16) ThingMagic, LLC + One Broadway + 14th Floor + Cambridge MA 02142 + UNITED STATES + +00-12-A5 (hex) Stargen, Inc. +0012A5 (base 16) Stargen, Inc. + 225 Cedar Hill Street + Marlborough MA 01752 + UNITED STATES + +00-12-A6 (hex) Dolby Australia +0012A6 (base 16) Dolby Australia + Level 6 + 136 Chalmers Street + Surry Hills NSW 2010 + AUSTRALIA + +00-12-A7 (hex) ISR TECHNOLOGIES Inc +0012A7 (base 16) ISR TECHNOLOGIES Inc + 1100, rue Notre-Dame Ouest + Montreal Quebec H3C 1K3 + CANADA + +00-12-A8 (hex) intec GmbH +0012A8 (base 16) intec GmbH + Rahmedestr. 90 + Luedenscheid NRW 58507 + GERMANY + +00-12-A9 (hex) 3Com Ltd +0012A9 (base 16) 3Com Ltd + Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts HP2 4NW + UNITED KINGDOM + +00-12-AA (hex) IEE, Inc. +0012AA (base 16) IEE, Inc. + 7740 Lemona Avenue + Van Nuys, CA 91405 + UNITED STATES + +00-12-AB (hex) WiLife, Inc. +0012AB (base 16) WiLife, Inc. + 132 E. 13065 S., Suite 150 + Draper UT 84020 + UNITED STATES + +00-12-AC (hex) ONTIMETEK INC. +0012AC (base 16) ONTIMETEK INC. + 9Fl.,Owner's Tower + 16-5, Sunae-Dong, Bundang-Gu + Sungnam-Si Kyunggi-Do 463-825 + KOREA, REPUBLIC OF + +00-12-AD (hex) IDS GmbH +0012AD (base 16) IDS GmbH + Nobelstr, 18 + Ettlingen Baden-Württemberg 76275 + GERMANY + +00-12-AE (hex) HLS HARD-LINE Solutions Inc. +0012AE (base 16) HLS HARD-LINE Solutions Inc. + 53 Main Street + Dowling Ontario P0M 1R0 + CANADA + +00-12-AF (hex) ELPRO Technologies +0012AF (base 16) ELPRO Technologies + 9 / 12 Billabong St. + Stafford Queensland 4053 + AUSTRALIA + +00-12-B0 (hex) Efore Oyj (Plc) +0012B0 (base 16) Efore Oyj (Plc) + P.O.Box 260 + (Linnoitustie 4 A) + Espoo FI - 02601 + FINLAND + +00-12-B1 (hex) Dai Nippon Printing Co., Ltd +0012B1 (base 16) Dai Nippon Printing Co., Ltd + 2-8-21,Akabane-minami + Kita-ku Tokyo 115-0044 + JAPAN + +00-12-B2 (hex) AVOLITES LTD. +0012B2 (base 16) AVOLITES LTD. + 184 PARK AVENUE + LONDON NW10 7XL + UNITED KINGDOM + +00-12-B3 (hex) Advance Wireless Technology Corp. +0012B3 (base 16) Advance Wireless Technology Corp. + 12F No. 27-6, Sec. 2, Chung Cheng East Road + Tamshui 251 + TAIWAN, REPUBLIC OF CHINA + +00-12-B4 (hex) Work Microwave GmbH +0012B4 (base 16) Work Microwave GmbH + Raiffeisenstrasse 12 + Holzkirchen 83607 + GERMANY + +00-12-B5 (hex) Vialta, Inc. +0012B5 (base 16) Vialta, Inc. + 48461 Fremont Blvd. + Fremont CA 94538 + UNITED STATES + +00-12-B6 (hex) Santa Barbara Infrared, Inc. +0012B6 (base 16) Santa Barbara Infrared, Inc. + 30 S. Calle Cesar Chavez + Suite D + Santa Barbara CA 93103 + UNITED STATES + +00-12-B7 (hex) PTW Freiburg +0012B7 (base 16) PTW Freiburg + Loerracher Strasse 7 + Freiburg 79115 + GERMANY + +00-12-B8 (hex) G2 Microsystems +0012B8 (base 16) G2 Microsystems + 408 Euclid Ave + Oakland CA 94610 + UNITED STATES + +00-12-B9 (hex) Fusion Digital Technology +0012B9 (base 16) Fusion Digital Technology + Victoria Mews, 23 Millfield Road + Cottingley Business Park + Bingley West Yorkshire BD16 1PY + UNITED KINGDOM + +00-12-BA (hex) FSI Systems, Inc. +0012BA (base 16) FSI Systems, Inc. + 5847 County Road 41 + Farmington NY 14425 + UNITED STATES + +00-12-BB (hex) Telecommunications Industry Association TR-41 Committee +0012BB (base 16) Telecommunications Industry Association TR-41 Committee + 2500 Wilson Blvd., Suite 300 + Arlington VA 22201 + UNITED STATES + +00-12-BC (hex) Echolab LLC +0012BC (base 16) Echolab LLC + 267 Boston Road + Suite 11 + Billerica MA 01862 + UNITED STATES + +00-12-BD (hex) Avantec Manufacturing Limited +0012BD (base 16) Avantec Manufacturing Limited + Unit L, 7/F, Camelpaint Bldg, Block 3 + 60 Hoi Yuen Road, Kwun Tong, Kowloon + 852 + HONG KONG + +00-12-BE (hex) Astek Corporation +0012BE (base 16) Astek Corporation + 4250 Buckingham Drive, suite 500 + Colorado Springs Colorado 80907 + UNITED STATES + +00-12-BF (hex) Arcadyan Technology Corporation +0012BF (base 16) Arcadyan Technology Corporation + 4F, No. 9, Park Avenue II + Science-based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-12-C0 (hex) HotLava Systems, Inc. +0012C0 (base 16) HotLava Systems, Inc. + 6329 Chelton Drive + Oakland CA 94611 + UNITED STATES + +00-12-C1 (hex) Check Point Software Technologies +0012C1 (base 16) Check Point Software Technologies + 3A Jabotinsky St. + Diamond Tower + Ramat Gan IL 52520 + ISRAEL + +00-12-C2 (hex) Apex Electronics Factory +0012C2 (base 16) Apex Electronics Factory + No.3 Industrial Zone, No.4 Block, + Fu'yong Town, Bao'an District + Shen Zhen Guang Dong 518103 + CHINA + +00-12-C3 (hex) WIT S.A. +0012C3 (base 16) WIT S.A. + 138 avenue Léon Bérenger + Saint Laurent du Var PACA 06700 + FRANCE + +00-12-C4 (hex) Viseon, Inc. +0012C4 (base 16) Viseon, Inc. + 8445 Freeport Parkway + Suite 245 + Irving Texas 75063 + UNITED STATES + +00-12-C5 (hex) V-Show Technology Co.Ltd +0012C5 (base 16) V-Show Technology Co.Ltd + 2-1-501 Gudangwan Nanyuan + Wensan Road + Hangzhou Zhejiang 310013 + CHINA + +00-12-C6 (hex) TGC America, Inc +0012C6 (base 16) TGC America, Inc + 2901 Tasman Drive, Suite 111 + Santa Clara CA 95054 + UNITED STATES + +00-12-C7 (hex) SECURAY Technologies Ltd.Co. +0012C7 (base 16) SECURAY Technologies Ltd.Co. + Tianjin Haitai Industrial Base ErWei Road + No. 6 Block F 8-401 + Tianjin 300384 + CHINA + +00-12-C8 (hex) Perfect tech +0012C8 (base 16) Perfect tech + 3F,No.9,LANE175,NANKAN RD., + LUJHU TAOYUAN 338 + TAIWAN, REPUBLIC OF CHINA + +00-12-C9 (hex) Motorola BCS +0012C9 (base 16) Motorola BCS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-12-CA (hex) Mechatronic Brick Aps +0012CA (base 16) Mechatronic Brick Aps + Alsion 2 + 6400 Sonderborg + DENMARK + +00-12-CB (hex) CSS Inc. +0012CB (base 16) CSS Inc. + 151 Superior Blvd. + Unit 13 & 14 + Mississauga Ontario L5T2L1 + CANADA + +00-12-CC (hex) Bitatek CO., LTD +0012CC (base 16) Bitatek CO., LTD + 6F-1,190,Ta-Tung Road,SEC. 3, + Hsichih Taipei county 221 + TAIWAN, REPUBLIC OF CHINA + +00-12-CD (hex) ASEM SpA +0012CD (base 16) ASEM SpA + Via Buia, 4 + ARTEGNA Udine I-33011 + ITALY + +00-12-CE (hex) Advanced Cybernetics Group +0012CE (base 16) Advanced Cybernetics Group + 2953 Bunker Hill Lane + Suite 400 + Santa Clara CA 95054 + UNITED STATES + +00-12-CF (hex) Accton Technology Corporation +0012CF (base 16) Accton Technology Corporation + No. 1 Creation Rd. III, Science-based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-12-D0 (hex) Gossen-Metrawatt-GmbH +0012D0 (base 16) Gossen-Metrawatt-GmbH + Thomas-Mann-Str. 16-20 + Nürnberg Bavaria 90471 + GERMANY + +00-12-D1 (hex) Texas Instruments Inc +0012D1 (base 16) Texas Instruments Inc + 12500 TI Boulevard, + MS 8723 + Dallas Texas 75243 + UNITED STATES + +00-12-D2 (hex) Texas Instruments +0012D2 (base 16) Texas Instruments + 12500 TI Boulevard + MS 8723 + Dallas Texas 75243 + UNITED STATES + +00-12-D3 (hex) Zetta Systems, Inc. +0012D3 (base 16) Zetta Systems, Inc. + 17311 135th AVE NE + Suite B900 + Woodinville WA 98072 + UNITED STATES + +00-12-D4 (hex) Princeton Technology, Ltd +0012D4 (base 16) Princeton Technology, Ltd + K.A.I. Bldg. 3F + 3-9-5 Iwamoto-cho + Chiyodaku Tokyo 101-0032 + JAPAN + +00-12-D5 (hex) Motion Reality Inc. +0012D5 (base 16) Motion Reality Inc. + 200 North Cobb Parkway + Suite 140 + Marietta GA 30062 + UNITED STATES + +00-12-D6 (hex) Jiangsu Yitong High-Tech Co.,Ltd +0012D6 (base 16) Jiangsu Yitong High-Tech Co.,Ltd + No 216 Huanghe Road + Changshu Jiangsu 215500 + CHINA + +00-12-D7 (hex) Invento Networks, Inc. +0012D7 (base 16) Invento Networks, Inc. + 377 Simarano Drive + Marlborough MA 01752 + UNITED STATES + +00-12-D8 (hex) International Games System Co., Ltd. +0012D8 (base 16) International Games System Co., Ltd. + No.130, Wu-Gung Rd., Wu-Gu Industrial Park, + Taipei 248 + TAIWAN, REPUBLIC OF CHINA + +00-12-D9 (hex) Cisco Systems +0012D9 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-12-DA (hex) Cisco Systems +0012DA (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-12-DB (hex) ZIEHL industrie-elektronik GmbH + Co KG +0012DB (base 16) ZIEHL industrie-elektronik GmbH + Co KG + Daimlerstr. 13 + Schwaebisch Hall 74523 + GERMANY + +00-12-DC (hex) SunCorp Industrial Limited +0012DC (base 16) SunCorp Industrial Limited + No.68 Guowei Road, + Liantang Industrial District, Shenzhen, + CHINA + +00-12-DD (hex) Shengqu Information Technology (Shanghai) Co., Ltd. +0012DD (base 16) Shengqu Information Technology (Shanghai) Co., Ltd. + No.1 Building,No. 690 Bibo Road,Pudong New Area + Shanghai 201203 + CHINA + +00-12-DE (hex) Radio Components Sweden AB +0012DE (base 16) Radio Components Sweden AB + Viderogatan 3B + Kista Stockholm 16422 + SWEDEN + +00-12-DF (hex) Novomatic AG +0012DF (base 16) Novomatic AG + Wiener Strasse 158 + Gumpoldskirchen Niederösterreich A-2352 + AUSTRIA + +00-12-E0 (hex) Codan Limited +0012E0 (base 16) Codan Limited + 81 Graves Street + Newton South 5074 + AUSTRALIA + +00-12-E1 (hex) Alliant Networks, Inc +0012E1 (base 16) Alliant Networks, Inc + 1259 Birchwood Dr. + Sunnyvale CA 94089 + UNITED STATES + +00-12-E2 (hex) ALAXALA Networks Corporation +0012E2 (base 16) ALAXALA Networks Corporation + 890 Kashimada, Saiwai-ku + Kawasaki-shi Kanagawa-ken 212-0058 + JAPAN + +00-12-E3 (hex) Agat-RT, Ltd. +0012E3 (base 16) Agat-RT, Ltd. + 101 pr. Mira #1220, + Moscow 129085 + RUSSIAN FEDERATION + +00-12-E4 (hex) ZIEHL industrie-electronik GmbH + Co KG +0012E4 (base 16) ZIEHL industrie-electronik GmbH + Co KG + Daimlerstr. 13 + Schwaebisch Hall 74523 + GERMANY + +00-12-E5 (hex) Time America, Inc. +0012E5 (base 16) Time America, Inc. + 51 W. 3rd Street #310 + Tempe AZ 85281 + UNITED STATES + +00-12-E6 (hex) SPECTEC COMPUTER CO., LTD. +0012E6 (base 16) SPECTEC COMPUTER CO., LTD. + 6F., No. 92, Nanking E. Rd. Sec. 5, + Taipei 105 + TAIWAN, REPUBLIC OF CHINA + +00-12-E7 (hex) Projectek Networking Electronics Corp. +0012E7 (base 16) Projectek Networking Electronics Corp. + 5F-9, No. 16, Lane 609, Sec. 5, Chungshin Rd., + Sanchung, Taipei 241 + TAIWAN, REPUBLIC OF CHINA + +00-12-E8 (hex) Fraunhofer IMS +0012E8 (base 16) Fraunhofer IMS + Finkenstrasse 61 + Duisburg NRW 47057 + GERMANY + +00-12-E9 (hex) Abbey Systems Ltd +0012E9 (base 16) Abbey Systems Ltd + Level 4, 220 Willis St + PO Box 27-497 + Wellington 6030 + NEW ZEALAND + +00-12-EA (hex) Trane +0012EA (base 16) Trane + 4833 White Bear Parkway + St. Paul MN 55110 + UNITED STATES + +00-12-EB (hex) R2DI, LLC +0012EB (base 16) R2DI, LLC + 2575 NE Kathryn St. + Suite 14 + Hillsboro OR 97124 + UNITED STATES + +00-12-EC (hex) Movacolor b.v. +0012EC (base 16) Movacolor b.v. + Koperslagersstraat 31 + Sneek Friesland 8601 WL + NETHERLANDS + +00-12-ED (hex) AVG Advanced Technologies +0012ED (base 16) AVG Advanced Technologies + 4140 Utica Ridge Road + Bettendorf IA 52722 + UNITED STATES + +00-12-EE (hex) Sony Ericsson Mobile Communications AB +0012EE (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund SE 221 88 + SWEDEN + +00-12-EF (hex) OneAccess SA +0012EF (base 16) OneAccess SA + 28 rue de la Redoute + Fontenay aux Roses 92260 + FRANCE + +00-12-F0 (hex) Intel Corporate +0012F0 (base 16) Intel Corporate + Lot 8, Jalan Hi-tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-12-F1 (hex) IFOTEC +0012F1 (base 16) IFOTEC + ZAC Champfeuillet + BP247 + VOIRON 38507 + FRANCE + +00-12-F2 (hex) Foundry Networks +0012F2 (base 16) Foundry Networks + 2100 Gold Street + PO Box 649100 + San Jose CA 95164 + UNITED STATES + +00-12-F3 (hex) connectBlue AB +0012F3 (base 16) connectBlue AB + Norra Vallgatan 64 + Malmoe SE-211 22 + SWEDEN + +00-12-F4 (hex) Belco International Co.,Ltd. +0012F4 (base 16) Belco International Co.,Ltd. + 212, Yeokok-Dong, Wonmi-gu + Puchun-Si Kyongki-Do 420-100 + KOREA, REPUBLIC OF + +00-12-F5 (hex) Prolificx Ltd +0012F5 (base 16) Prolificx Ltd + PO Box 76204 + Manukau City 1702 + NEW ZEALAND + +00-12-F6 (hex) MDK CO.,LTD. +0012F6 (base 16) MDK CO.,LTD. + 2-6-27 Ibarame + Kashiwazaki City Niigata 9451341 + JAPAN + +00-12-F7 (hex) Xiamen Xinglian Electronics Co., Ltd. +0012F7 (base 16) Xiamen Xinglian Electronics Co., Ltd. + Xinglian Electronics (Xingtel) Building,Chuangxin Road, + Torch Hi-Tech Industrial District, + Xiamen Fujian 361006 + CHINA + +00-12-F8 (hex) WNI Resources, LLC +0012F8 (base 16) WNI Resources, LLC + 2146 Bering Drive + San Jose California 95131-2013 + UNITED STATES + +00-12-F9 (hex) URYU SEISAKU, LTD. +0012F9 (base 16) URYU SEISAKU, LTD. + 1-2-11 + FUKAE-MINAMI + HIGASHINARI-KU OSAKA 537-0002 + JAPAN + +00-12-FA (hex) THX LTD +0012FA (base 16) THX LTD + 5201 Great America Parkway + Suite 320 + Santa Clara CA 95054 + UNITED STATES + +00-12-FB (hex) Samsung Electronics +0012FB (base 16) Samsung Electronics + 416, Maetan-3Dong, Yeongtong-Gu + Suwon-City Gyeonggi-Do 443-742 + KOREA, REPUBLIC OF + +00-12-FC (hex) PLANET System Co.,LTD +0012FC (base 16) PLANET System Co.,LTD + 4th Floor, Daehan B/D, 873-29, + Bangbae4-Dong, Seocho-Ku, + Seoul 137-064 + KOREA, REPUBLIC OF + +00-12-FD (hex) OPTIMUS IC S.A. +0012FD (base 16) OPTIMUS IC S.A. + NAWOJOWSKA 118 + NOWY SACZ MALOPOLSKA 33-300 + POLAND + +00-12-FE (hex) Lenovo Mobile Communication Technology Ltd. +0012FE (base 16) Lenovo Mobile Communication Technology Ltd. + Xiamen Overseas Chinese Electronic Science Park,Huoju High Technology Development Zone + XIA MEN FU JIAN 361009 + CHINA + +00-12-FF (hex) Lely Industries N.V. +0012FF (base 16) Lely Industries N.V. + Weverskade 110 + Maassluis Zuid-Holland 3147PA + NETHERLANDS + +00-13-00 (hex) IT-FACTORY, INC. +001300 (base 16) IT-FACTORY, INC. + 1-16-26 TAKAGI MINAMI-KU + FUKUOKA-SHI FUKUOKA-KEN 815-0004 + JAPAN + +00-13-01 (hex) IronGate S.L. +001301 (base 16) IronGate S.L. + C\Alcala 268, primera planta + Madrid 28027 + SPAIN + +00-13-02 (hex) Intel Corporate +001302 (base 16) Intel Corporate + Lot 8, Jalan Hi-tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-13-03 (hex) GateConnect Technologies GmbH +001303 (base 16) GateConnect Technologies GmbH + Agastrasse 24 R2 + 12489 Berlin 12489 + GERMANY + +00-13-04 (hex) Flaircomm Technologies Co. LTD +001304 (base 16) Flaircomm Technologies Co. LTD + 2088 Huashan Road + South Huiyin Bldg. #2306 + Shanghai 200030 + CHINA + +00-13-05 (hex) Epicom, Inc. +001305 (base 16) Epicom, Inc. + PO Box 16130 + Oakland CA 94610-6130 + UNITED STATES + +00-13-06 (hex) Always On Wireless +001306 (base 16) Always On Wireless + 3701 Kirby Dr + Suite 1090 + Houston TX 77098 + UNITED STATES + +00-13-07 (hex) Paravirtual Corporation +001307 (base 16) Paravirtual Corporation + 2953 Bunker Hill Lane + Suite 406 + Santa Clara CA 95054 + UNITED STATES + +00-13-08 (hex) Nuvera Fuel Cells +001308 (base 16) Nuvera Fuel Cells + 129 Concord Road, #1 + Billerica MA 01821 + UNITED STATES + +00-13-09 (hex) Ocean Broadband Networks +001309 (base 16) Ocean Broadband Networks + 2078 Walsh Ave, Suite B + Santa Clara California 95050 + UNITED STATES + +00-13-0A (hex) Nortel +00130A (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-13-0B (hex) Mextal B.V. +00130B (base 16) Mextal B.V. + De Tienden 48 + Nuenen Noord Brabant 5674TB + NETHERLANDS + +00-13-0C (hex) HF System Corporation +00130C (base 16) HF System Corporation + 1520-1 Ayukai + Shirataka-Machi + Nishiokitama-Gun Yamagata-Ken 992-0771 + JAPAN + +00-13-0D (hex) GALILEO AVIONICA +00130D (base 16) GALILEO AVIONICA + VIALE EUROPA + NERVIANO MILANO 20014 + ITALY + +00-13-0E (hex) Focusrite Audio Engineering Limited +00130E (base 16) Focusrite Audio Engineering Limited + 19 Lincoln Road + Cressex Business Park + High Wycombe Bucks HP12 3FX + UNITED KINGDOM + +00-13-0F (hex) EGEMEN Bilgisayar Muh San ve Tic LTD STI +00130F (base 16) EGEMEN Bilgisayar Muh San ve Tic LTD STI + Fevzi Cakmak 2 Sok 31/A + KIZILAY + ANKARA CANKAYA 06440 + TURKEY + +00-13-10 (hex) Cisco-Linksys, LLC +001310 (base 16) Cisco-Linksys, LLC + 121 Theory + Irvine CA 92612 + UNITED STATES + +00-13-11 (hex) ARRIS International +001311 (base 16) ARRIS International + 3871 Lakefield Drive + Suite 300 + Suwanee GA 30024 + UNITED STATES + +00-13-12 (hex) Amedia Networks Inc. +001312 (base 16) Amedia Networks Inc. + 101 Crawfords Corner Rd + Holmdel NJ 07733 + UNITED STATES + +00-13-13 (hex) GuangZhou Post & Telecom Equipment ltd +001313 (base 16) GuangZhou Post & Telecom Equipment ltd + 139# Zhongshan Ave + Guangzhou Guangdong 510630 + CHINA + +00-13-14 (hex) Asiamajor Inc. +001314 (base 16) Asiamajor Inc. + 6F-9, No. 268, Lian-Cheng Rd., Junghe City, + Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-13-15 (hex) SONY Computer Entertainment inc, +001315 (base 16) SONY Computer Entertainment inc, + 6-21,2Chome + Minami-Aoyama + Minato-Ku Tokyo 107-0062 + JAPAN + +00-13-16 (hex) L-S-B GmbH +001316 (base 16) L-S-B GmbH + Gustav-Stresemann-Str. 8 + Bingen Rheinland-Pfalz 55411 + GERMANY + +00-13-17 (hex) GN Netcom as +001317 (base 16) GN Netcom as + Metalbuen 66 + P.O.Box 201 + Ballerup Skovlunde DK-2750 + DENMARK + +00-13-18 (hex) DGSTATION Co., Ltd. +001318 (base 16) DGSTATION Co., Ltd. + Rm.401, Bldg.A, Bundang Techno Park 150, Yatap-Dong, Bundang-Gu, Sungnam-Si, Gyunggi-Do, 463-760, Korea + Sungnam Gyunggi 463-760 + KOREA, REPUBLIC OF + +00-13-19 (hex) Cisco Systems +001319 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-13-1A (hex) Cisco Systems +00131A (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-13-1B (hex) BeCell Innovations Corp. +00131B (base 16) BeCell Innovations Corp. + 12F-9, No. 79, Shin-Tai 5th Rd Sec 1, + Shih-chih, Taipei 221 + TAIWAN, REPUBLIC OF CHINA + +00-13-1C (hex) LiteTouch, Inc. +00131C (base 16) LiteTouch, Inc. + 3400 South West Temple + Salt Lake City UT 84115 + UNITED STATES + +00-13-1D (hex) Scanvaegt International A/S +00131D (base 16) Scanvaegt International A/S + P.O.Pedersens vej 18 + Aarhus Jylland 8200 N + DENMARK + +00-13-1E (hex) Peiker acustic GmbH & Co. KG +00131E (base 16) Peiker acustic GmbH & Co. KG + Max-Planck-Straße 32 + Friedrichsdorf Hessen 61381 + GERMANY + +00-13-1F (hex) NxtPhase T&D, Corp. +00131F (base 16) NxtPhase T&D, Corp. + 3040 E. Broadway + Vancouver BC V5M 1Z4 + CANADA + +00-13-20 (hex) Intel Corporate +001320 (base 16) Intel Corporate + Lot 8, Jalan Hi-tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-13-21 (hex) Hewlett Packard +001321 (base 16) Hewlett Packard + 20555 State Highway 249 + MS070405 + Houston TX 77070 + UNITED STATES + +00-13-22 (hex) DAQ Electronics, Inc. +001322 (base 16) DAQ Electronics, Inc. + 262B Old New Brunswick Road + Piscataway NJ 08854 + UNITED STATES + +00-13-23 (hex) Cap Co., Ltd. +001323 (base 16) Cap Co., Ltd. + 11F,684-2,deungchon 3-dong,gangseo-gu + Seoul 157-754 + KOREA, REPUBLIC OF + +00-13-24 (hex) Schneider Electric Ultra Terminal +001324 (base 16) Schneider Electric Ultra Terminal + Industriparken 32 + Copenhagen 2750 + DENMARK + +00-13-25 (hex) Cortina Systems Inc +001325 (base 16) Cortina Systems Inc + 840 W California Ave, Suite 100 + Sunnyvale CA 94086 + UNITED STATES + +00-13-26 (hex) ECM Systems Ltd +001326 (base 16) ECM Systems Ltd + Ellifoot Park + Burstwick + HULL East Yorkshire HU12 9DZ + UNITED KINGDOM + +00-13-27 (hex) Data Acquisitions limited +001327 (base 16) Data Acquisitions limited + 84 Gasson street + Christchurch + NEW ZEALAND + +00-13-28 (hex) Westech Korea Inc., +001328 (base 16) Westech Korea Inc., + 548-9, Gajwa3-Dong,Seo-ku, + Incheon 404-817 + KOREA, REPUBLIC OF + +00-13-29 (hex) VSST Co., LTD +001329 (base 16) VSST Co., LTD + suit 3202, Korea World Trade Center 159-1 + Samsung-Dong, Kangnam-Gu + Seoul 135-729 + KOREA, REPUBLIC OF + +00-13-2A (hex) STROM telecom, s. r. o. +00132A (base 16) STROM telecom, s. r. o. + Michelska 60 + Prague Prague 4 - Michle 140 00 + CZECH REPUBLIC + +00-13-2B (hex) Phoenix Digital +00132B (base 16) Phoenix Digital + 7650 East Evans Rd. Bldg. A + Scottsdale Az 85260 + UNITED STATES + +00-13-2C (hex) MAZ Brandenburg GmbH +00132C (base 16) MAZ Brandenburg GmbH + Mielestraße 2 + Werder Brandenburg 14542 + GERMANY + +00-13-2D (hex) iWise Communications +00132D (base 16) iWise Communications + Unit 3C, Arden Grove + Racecourse Rd,Montagu Gardens + Cape Town 7441 + SOUTH AFRICA + +00-13-2E (hex) ITian Coporation +00132E (base 16) ITian Coporation + 4F Youngho Bd.1605-1 Seocho-dong + Seocho-gu + Seoul 137-070 + KOREA, REPUBLIC OF + +00-13-2F (hex) Interactek +00132F (base 16) Interactek + Sigmal 2 BLDG #C-319, 18 Kumi-dong + Pundang-ku + Seongnam Kyung-gi 463-741 + KOREA, REPUBLIC OF + +00-13-30 (hex) EURO PROTECTION SURVEILLANCE +001330 (base 16) EURO PROTECTION SURVEILLANCE + 30 Rue du Doubs + STRASBOURG 67100 + FRANCE + +00-13-31 (hex) CellPoint Connect +001331 (base 16) CellPoint Connect + Billedvej 4 + Copenhagen 2100 + DENMARK + +00-13-32 (hex) Beijing Topsec Network Security Technology Co., Ltd. +001332 (base 16) Beijing Topsec Network Security Technology Co., Ltd. + 4th Floor, Huakong Tower + No. 1 Shangdi East Road + Haidian District Beijing 100080 + CHINA + +00-13-33 (hex) Baud Technology Inc. +001333 (base 16) Baud Technology Inc. + 12F, NO.181, Sec. 1. Tatung Rd., + Hsichih Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-13-34 (hex) Arkados, Inc. +001334 (base 16) Arkados, Inc. + 948 US HWY 22 + North Plainfield NJ 07060 + UNITED STATES + +00-13-35 (hex) VS Industry Berhad +001335 (base 16) VS Industry Berhad + Plo 47, Senai Ind. Est. II, + Senai Johor 81400 + MALAYSIA + +00-13-36 (hex) Tianjin 712 Communication Broadcasting co., ltd. +001336 (base 16) Tianjin 712 Communication Broadcasting co., ltd. + No.185, Xinda Road, Hebei District + Tianjin 300140 + CHINA + +00-13-37 (hex) Orient Power Home Network Ltd. +001337 (base 16) Orient Power Home Network Ltd. + 307 Harbour Centre, Tower 1, + 1 Hok Cheung Street, Hung Hom + HONG KONG + +00-13-38 (hex) FRESENIUS-VIAL +001338 (base 16) FRESENIUS-VIAL + Le Grand Chemin + BREZINS 38590 + FRANCE + +00-13-39 (hex) EL-ME AG +001339 (base 16) EL-ME AG + Gewerbering 1 + Au i. d. Hallertau Bayern 84072 + GERMANY + +00-13-3A (hex) VadaTech Inc. +00133A (base 16) VadaTech Inc. + 11540 S. Eastern Avenue + Henderson Nevada 89052 + UNITED STATES + +00-13-3B (hex) Speed Dragon Multimedia Limited +00133B (base 16) Speed Dragon Multimedia Limited + Room 1312, Vanta Industrial Centre, + 33 Tai Lin Pai Road, + Kwai Chung N.T. + HONG KONG + +00-13-3C (hex) QUINTRON SYSTEMS INC. +00133C (base 16) QUINTRON SYSTEMS INC. + 2105 SO. BLOSSER ROAD + SANTA MARIA CALIFORNIA 93458 + UNITED STATES + +00-13-3D (hex) Micro Memory LLC +00133D (base 16) Micro Memory LLC + 9540 Vassar Avenue + Chatsworth CA 91311 + UNITED STATES + +00-13-3E (hex) MetaSwitch +00133E (base 16) MetaSwitch + 1411 Harbor Bay Parkway + Suite 1003 + Alameda CA 94502 + UNITED STATES + +00-13-3F (hex) Eppendorf Instrumente GmbH +00133F (base 16) Eppendorf Instrumente GmbH + Barkhausenweg 1 + Abtl. IH-FE + Hamburg DE 22339 + GERMANY + +00-13-40 (hex) AD.EL s.r.l. +001340 (base 16) AD.EL s.r.l. + via S. Pertini,5 + Martellago VENEZIA 30030 + ITALY + +00-13-41 (hex) Shandong New Beiyang Information Technology Co.,Ltd +001341 (base 16) Shandong New Beiyang Information Technology Co.,Ltd + NO.11 Xinwei Road + Weihai city Shandong 264200 + CHINA + +00-13-42 (hex) Vision Research, Inc. +001342 (base 16) Vision Research, Inc. + 100 Dey Road + Wayne NJ 07470 + UNITED STATES + +00-13-43 (hex) Matsushita Electronic Components (Europe) GmbH +001343 (base 16) Matsushita Electronic Components (Europe) GmbH + Zeppelinstraße 19 + Lueneburg Niedersachsen 21337 + GERMANY + +00-13-44 (hex) Fargo Electronics Inc. +001344 (base 16) Fargo Electronics Inc. + 6533 Flying Cloud Drive + Eden Prairie MN 55344 + UNITED STATES + +00-13-45 (hex) Eaton Corporation +001345 (base 16) Eaton Corporation + 4201 North 27th Street + Milwaukee Wisconsin 53216 + UNITED STATES + +00-13-46 (hex) D-Link Corporation +001346 (base 16) D-Link Corporation + 2F, No.233-2, Pao-Chiao Road + Hsin-Tien, Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-13-47 (hex) BlueTree Wireless Data Inc. +001347 (base 16) BlueTree Wireless Data Inc. + 2425 46e Avenue + Lachine Quebec H8T 3C9 + CANADA + +00-13-48 (hex) Artila Electronics Co., Ltd. +001348 (base 16) Artila Electronics Co., Ltd. + 2F., No.1, Alley 8, Siwei Lane, Zhongzheng Rd., + Xindian City Taipei County 231 + TAIWAN, REPUBLIC OF CHINA + +00-13-49 (hex) ZyXEL Communications Corporation +001349 (base 16) ZyXEL Communications Corporation + No. 6, Innovation Road II Science Park + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-13-4A (hex) Engim, Inc. +00134A (base 16) Engim, Inc. + 40 Nagog Park + Acton MA 01720 + UNITED STATES + +00-13-4B (hex) ToGoldenNet Technology Inc. +00134B (base 16) ToGoldenNet Technology Inc. + 5F-1 No.25,Pu-ding., + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-13-4C (hex) YDT Technology International +00134C (base 16) YDT Technology International + 2F., No.218, Rueiguang Rd., + Neihu District + Taipei, 114 + TAIWAN, REPUBLIC OF CHINA + +00-13-4D (hex) IPC systems +00134D (base 16) IPC systems + noordeinde 72 + leimuiden noordholland 2451 AH + NETHERLANDS + +00-13-4E (hex) Valox Systems, Inc. +00134E (base 16) Valox Systems, Inc. + #704, Ace Twin tower 2, 212-30, Guro-3dong, Guro-gu + Seoul 152-779 + KOREA, REPUBLIC OF + +00-13-4F (hex) Tranzeo Wireless Technologies Inc. +00134F (base 16) Tranzeo Wireless Technologies Inc. + 20155 Stewart Cres. + Maple Ridge British Columbia V2X 0T6 + CANADA + +00-13-50 (hex) Silver Spring Networks, Inc +001350 (base 16) Silver Spring Networks, Inc + 2755 Campus Dr + Suite 205 + San Mateo CA 94403 + UNITED STATES + +00-13-51 (hex) Niles Audio Corporation +001351 (base 16) Niles Audio Corporation + 12331 SW 130th Street + Miami FL 33186 + UNITED STATES + +00-13-52 (hex) Naztec, Inc. +001352 (base 16) Naztec, Inc. + 820 Park Two Dr. + Sugar Land TX 77478 + UNITED STATES + +00-13-53 (hex) HYDAC Filtertechnik GMBH +001353 (base 16) HYDAC Filtertechnik GMBH + Industriegebiet + Sulzbach/Saar Saarland 66280 + GERMANY + +00-13-54 (hex) Zcomax Technologies, Inc. +001354 (base 16) Zcomax Technologies, Inc. + 98 Ford Road + Suite 3-F + Denville NJ 07834 + UNITED STATES + +00-13-55 (hex) TOMEN Cyber-business Solutions, Inc. +001355 (base 16) TOMEN Cyber-business Solutions, Inc. + 2-11-19 Kohnan + Minatoku-ku + TOKYO 108-0075 + JAPAN + +00-13-56 (hex) target systemelectronic gmbh +001356 (base 16) target systemelectronic gmbh + Koelner Straße 99 + Solingen NRW 42651 + GERMANY + +00-13-57 (hex) Soyal Technology Co., Ltd. +001357 (base 16) Soyal Technology Co., Ltd. + 10F, No. 27, Lane 169, Kangning St., Shijr City, + 2F, No. 27, Lane 169, Kangning St., Shijr City, + Taipei 221 + TAIWAN, REPUBLIC OF CHINA + +00-13-58 (hex) Realm Systems, Inc. +001358 (base 16) Realm Systems, Inc. + 9350 South 535 East + 9th Floor + Sandy Utah 84070 + UNITED STATES + +00-13-59 (hex) ProTelevision Technologies A/S +001359 (base 16) ProTelevision Technologies A/S + Marielundvej 16,2 + Herlev Copenhagen 2730 + DENMARK + +00-13-5A (hex) Project T&E Limited +00135A (base 16) Project T&E Limited + Room 3C, 2/F. Wah Shing Center, + 11 Shing Yip Street, + Kwun Tong, Kowloon, 852 + HONG KONG + +00-13-5B (hex) PanelLink Cinema, LLC +00135B (base 16) PanelLink Cinema, LLC + 1070 E Arques Ave + Sunnyvale CA 94085 + UNITED STATES + +00-13-5C (hex) OnSite Systems, Inc. +00135C (base 16) OnSite Systems, Inc. + 3900 Freedom Circle + Suite 102 + Santa Clara CA 95054-1222 + UNITED STATES + +00-13-5D (hex) NTTPC Communications, Inc. +00135D (base 16) NTTPC Communications, Inc. + 3-25 Kanda Jinbo-cho + Chiyoda-ku Tokyo 101-0051 + JAPAN + +00-13-5E (hex) EAB/RWI/K +00135E (base 16) EAB/RWI/K + Färögatan 6 + Stockholm Kista 164 80 + SWEDEN + +00-13-5F (hex) Cisco Systems +00135F (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-13-60 (hex) Cisco Systems +001360 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-13-61 (hex) Biospace Co., Ltd. +001361 (base 16) Biospace Co., Ltd. + 10th Floor, Poonglim Bldg, 823 Yeoksam 1-dong + Gangnam-gu Seoul 135-784 + KOREA, REPUBLIC OF + +00-13-62 (hex) ShinHeung Precision Co., Ltd. +001362 (base 16) ShinHeung Precision Co., Ltd. + DaeHa Bldg. 401 + 101-7 ShingilDong + YoungDungPoGu Seoul 150-050 + KOREA, REPUBLIC OF + +00-13-63 (hex) Verascape, Inc. +001363 (base 16) Verascape, Inc. + 1101 31st St., Suite #190 + Downers Grove IL 60515 + UNITED STATES + +00-13-64 (hex) Paradigm Technology Inc.. +001364 (base 16) Paradigm Technology Inc.. + 3F, No. 285, Sec.2, Ti-Ding Blvd Nei-Hu, + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-13-65 (hex) Nortel +001365 (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-13-66 (hex) Neturity Technologies Inc. +001366 (base 16) Neturity Technologies Inc. + 830 Stewart Drive + Sunnyvale CA 94085 + UNITED STATES + +00-13-67 (hex) Narayon. Co., Ltd. +001367 (base 16) Narayon. Co., Ltd. + #502 Hyochang T/W 181-3 + Jamsil-dong, Songpa-gu + Seoul 138-220 + KOREA, REPUBLIC OF + +00-13-68 (hex) Maersk Data Defence +001368 (base 16) Maersk Data Defence + Ellegaardvej 25 + Soenderborg DK 6400 + DENMARK + +00-13-69 (hex) Honda Electron Co., LED. +001369 (base 16) Honda Electron Co., LED. + 2-14-1, Kyobashi + Chuo-ku Tokyo 104-0031 + JAPAN + +00-13-6A (hex) Hach Ultra Analytics +00136A (base 16) Hach Ultra Analytics + 6, route de Compois + CP 212 + VESENAZ GENEVA 1222 + SWITZERLAND + +00-13-6B (hex) E-TEC +00136B (base 16) E-TEC + 2-17-14-503 Hakataekimae + Hakataku Fukuokashi + Fukuoka Fukuokaken 812-0011 + JAPAN + +00-13-6C (hex) TomTom +00136C (base 16) TomTom + Rembrandtplein 35 + Amsterdam Noord-Holland 1017 CT + NETHERLANDS + +00-13-6D (hex) Tentaculus AB +00136D (base 16) Tentaculus AB + Studiegangen 3 + Ostersund Jamtland SE - 831 40 + SWEDEN + +00-13-6E (hex) Techmetro Corp. +00136E (base 16) Techmetro Corp. + 4F. Dongam B/D., 264-5, YangJae-Dong + Seocho-Ku + Seoul 137-130 + KOREA, REPUBLIC OF + +00-13-6F (hex) PacketMotion, Inc. +00136F (base 16) PacketMotion, Inc. + 2121 El Camino Real + 10th Floor + San Mateo CA 94403 + UNITED STATES + +00-13-70 (hex) Nokia Danmark A/S +001370 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-13-71 (hex) Motorola CHS +001371 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-13-72 (hex) Dell Inc. +001372 (base 16) Dell Inc. + One Dell Way + Round Rock Texas 78682 + UNITED STATES + +00-13-73 (hex) BLwave Electronics Co., Ltd +001373 (base 16) BLwave Electronics Co., Ltd + 23FGH, Block A,ZhenYe Building , BaoAn Nan Road , LuoHu , Shenzhen , China + ShenZhen GuangDong 518000 + CHINA + +00-13-74 (hex) Atheros Communications, Inc. +001374 (base 16) Atheros Communications, Inc. + 5480 Great America Parkway + Santa Clara CA 95054 + UNITED STATES + +00-13-75 (hex) American Security Products Co. +001375 (base 16) American Security Products Co. + 11925 Pacific ave. + Fontana CA 92335 + UNITED STATES + +00-13-76 (hex) Tabor Electronics Ltd. +001376 (base 16) Tabor Electronics Ltd. + 9 Hatatsia St. + Tel Hanan 20302 + ISRAEL + +00-13-77 (hex) Samsung Electronics CO., LTD +001377 (base 16) Samsung Electronics CO., LTD + 416, Maetan 3Dong, Yeongtong-Gu + Suwon City, Geyonggi Do, Korea + Suwon Geyonggi 443742 + KOREA, REPUBLIC OF + +00-13-78 (hex) QSAN Technology, Inc. +001378 (base 16) QSAN Technology, Inc. + 2F., No.31, Lane 583, RueiGuang Rd., Neihu Dist. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-13-79 (hex) PONDER INFORMATION INDUSTRIES LTD. +001379 (base 16) PONDER INFORMATION INDUSTRIES LTD. + 14F,No.77,lane700, Chung-Cheng Road + Hsin-Tien City Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-13-7A (hex) Netvox Technology Co., Ltd. +00137A (base 16) Netvox Technology Co., Ltd. + No.21-1 Sec. 1 Chung Hua West Road + Tainan 702 + TAIWAN, REPUBLIC OF CHINA + +00-13-7B (hex) Movon Corporation +00137B (base 16) Movon Corporation + 5th, Hyunjuk B/D + 140-28, Samsung-dong, Kangnam-ku + Seoul 135-092 + KOREA, REPUBLIC OF + +00-13-7C (hex) Kaicom co., Ltd. +00137C (base 16) Kaicom co., Ltd. + #109, Gayang Techno Town 1487, Gayang-dong,Kangso-gu + Seoul 157-810 + KOREA, REPUBLIC OF + +00-13-7D (hex) Dynalab, Inc. +00137D (base 16) Dynalab, Inc. + 555 Lancaster Ave. + Reynoldsburg OH 43068 + UNITED STATES + +00-13-7E (hex) CorEdge Networks, Inc. +00137E (base 16) CorEdge Networks, Inc. + 7600 Boone Ave N + Suite 1 + Brooklyn Park MN 55428 + UNITED STATES + +00-13-7F (hex) Cisco Systems +00137F (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-13-80 (hex) Cisco Systems +001380 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-13-81 (hex) CHIPS & Systems, Inc. +001381 (base 16) CHIPS & Systems, Inc. + 4750 Patrick Henry Drive + Santa Clara California 95054 + UNITED STATES + +00-13-82 (hex) Cetacea Networks Corporation +001382 (base 16) Cetacea Networks Corporation + 3708 West 36th Avenue + Vancouver British Columbia V6N 2S4 + CANADA + +00-13-83 (hex) Application Technologies and Engineering Research Laboratory +001383 (base 16) Application Technologies and Engineering Research Laboratory + Shinjuku 1-chome Bldg. + 1-10-4, Shinjuku + Shinjuku-ku Tokyo 160-0022 + JAPAN + +00-13-84 (hex) Advanced Motion Controls +001384 (base 16) Advanced Motion Controls + 3805 Calle Tecate + Camarillo California 93012 + UNITED STATES + +00-13-85 (hex) Add-On Technology Co., LTD. +001385 (base 16) Add-On Technology Co., LTD. + 1F, No.11, Lane 206, Da-An Road Sec. 1, + Taipei 106 + TAIWAN, REPUBLIC OF CHINA + +00-13-86 (hex) ABB Inc./Totalflow +001386 (base 16) ABB Inc./Totalflow + 7051 Industrial Blvd. + Bartlesville OK 74006 + UNITED STATES + +00-13-87 (hex) 27M Technologies AB +001387 (base 16) 27M Technologies AB + Diskettgatan 11 + Linköping S-583 35 + SWEDEN + +00-13-88 (hex) WiMedia Alliance +001388 (base 16) WiMedia Alliance + 2400 Camino Ramon + Suite 375 + San Ramon CA 94583 + UNITED STATES + +00-13-89 (hex) Redes de Telefonía Móvil S.A. +001389 (base 16) Redes de Telefonía Móvil S.A. + C/Puerto de la Morcuera 14 B4 + Leganés Madrid 28918 + SPAIN + +00-13-8A (hex) QINGDAO GOERTEK ELECTRONICS CO.,LTD. +00138A (base 16) QINGDAO GOERTEK ELECTRONICS CO.,LTD. + Room 605,Innovation Building,Hi-tech Industrial Park, + QINGDAO SHANDONG 266061 + CHINA + +00-13-8B (hex) Phantom Technologies LLC +00138B (base 16) Phantom Technologies LLC + 7825 Fay Avenue, Suite 200 + La Jolla CA 92037 + UNITED STATES + +00-13-8C (hex) Kumyoung.Co.Ltd +00138C (base 16) Kumyoung.Co.Ltd + Seoul KY building, 40-17 Hangang Ro, 3Ga, Youngsan-Gu + Seoul 140-880 + KOREA, REPUBLIC OF + +00-13-8D (hex) Kinghold +00138D (base 16) Kinghold + 11F, No. 965, Jungjeng Rd. + Junghe Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-13-8E (hex) FOAB Elektronik AB +00138E (base 16) FOAB Elektronik AB + Sankt Jorgens Vag 8 + Gothenburg 422 49 + SWEDEN + +00-13-8F (hex) Asiarock Incorporation +00138F (base 16) Asiarock Incorporation + P.O. Box957, Offshore Incorporations Centre + Road Town Tortola + VIRGIN ISLANDS, BRITISH + +00-13-90 (hex) Termtek Computer Co., Ltd +001390 (base 16) Termtek Computer Co., Ltd + 2F, No. 100, Li De St., + Chung Ho City Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-13-91 (hex) OUEN CO.,LTD. +001391 (base 16) OUEN CO.,LTD. + Gotanda NT Bldg.7F, + 5-2 Higashi Gotanda 4-chome + Shinagawa-ku Tokyo 141-0022 + JAPAN + +00-13-92 (hex) Ruckus Wireless +001392 (base 16) Ruckus Wireless + 880 West Maude Avenue + Suite 101 + Sunnyvale CA 94045 + UNITED STATES + +00-13-93 (hex) Panta Systems, Inc. +001393 (base 16) Panta Systems, Inc. + 20450 Stevens Creek Blvd. + Suite 400 + Cupertino California 95014 + UNITED STATES + +00-13-94 (hex) Infohand Co.,Ltd +001394 (base 16) Infohand Co.,Ltd + Kranz-Techno #1207, 5442-1, Sangdaewon-dong, Jungwon-gu + Seongnam-si Gyeonggi-do 462-819 + KOREA, REPUBLIC OF + +00-13-95 (hex) congatec AG +001395 (base 16) congatec AG + Auwiesenstrasse 5 + Deggendorf 94469 + GERMANY + +00-13-96 (hex) Acbel Polytech Inc. +001396 (base 16) Acbel Polytech Inc. + No.159,Sec.3, Tam-King Rd., + Tamsui Taipei 251 + TAIWAN, REPUBLIC OF CHINA + +00-13-97 (hex) Xsigo Systems, Inc. +001397 (base 16) Xsigo Systems, Inc. + 940 Stewart Drive + Sunnyvale CA 94085 + UNITED STATES + +00-13-98 (hex) TrafficSim Co.,Ltd +001398 (base 16) TrafficSim Co.,Ltd + 23-9 Mita-biru 2F, Chiyoda 3-chome + Naka-ku, Nagoya + Aichi Non 460-0012 + JAPAN + +00-13-99 (hex) STAC Corporation. +001399 (base 16) STAC Corporation. + 2-16-37,fujimi + sayama-shi saitama 350-1306 + JAPAN + +00-13-9A (hex) K-ubique ID Corp. +00139A (base 16) K-ubique ID Corp. + Yamasan Bldg.8F, + Nihonbashi Honcho2-6-13 + Chuo-ku Tokyo 103-0023 + JAPAN + +00-13-9B (hex) ioIMAGE Ltd. +00139B (base 16) ioIMAGE Ltd. + 3 Maskit Street + Herzliya Pituach IL 46733 + ISRAEL + +00-13-9C (hex) Exavera Technologies, Inc. +00139C (base 16) Exavera Technologies, Inc. + 195 New Hampshire Avenue + Suite 155 + Portsmouth NH 03801 + UNITED STATES + +00-13-9D (hex) Design of Systems on Silicon S.A. +00139D (base 16) Design of Systems on Silicon S.A. + C/ Charles Robert Darwin, 2 + Paterna Valencia 46980 + SPAIN + +00-13-9E (hex) Ciara Technologies Inc. +00139E (base 16) Ciara Technologies Inc. + 9300 Trans Canada Highway + Saint-Laurent Quebec H4S 1K5 + CANADA + +00-13-9F (hex) Electronics Design Services, Co., Ltd. +00139F (base 16) Electronics Design Services, Co., Ltd. + 5-10-20 Tokumaru + Itabashi-ku Tokyo 175-0083 + JAPAN + +00-13-A0 (hex) ALGOSYSTEM Co., Ltd. +0013A0 (base 16) ALGOSYSTEM Co., Ltd. + 656 kobirao mihara-cho + sakai osaka 587-0021 + JAPAN + +00-13-A1 (hex) Crow Electronic Engeneering +0013A1 (base 16) Crow Electronic Engeneering + 12 Kinneret st. + Airport City + ISRAEL + +00-13-A2 (hex) MaxStream, Inc +0013A2 (base 16) MaxStream, Inc + 355 South 520 West Suite 180 + Lindon Ut 84042 + UNITED STATES + +00-13-A3 (hex) Siemens Com CPE Devices +0013A3 (base 16) Siemens Com CPE Devices + 4849 Alpha Road + Dallas Texas 75244 + UNITED STATES + +00-13-A4 (hex) KeyEye Communications +0013A4 (base 16) KeyEye Communications + 9785 Goethe + Sacramento CA 95827 + UNITED STATES + +00-13-A5 (hex) General Solutions, LTD. +0013A5 (base 16) General Solutions, LTD. + 5902 Sovereign Drive + Houston Texas 77036 + UNITED STATES + +00-13-A6 (hex) Extricom Ltd +0013A6 (base 16) Extricom Ltd + Glil Yam + Herzlia 46905 + ISRAEL + +00-13-A7 (hex) BATTELLE MEMORIAL INSTITUTE +0013A7 (base 16) BATTELLE MEMORIAL INSTITUTE + 505 KING AVE + COLUMBUS OHIO 43201 + UNITED STATES + +00-13-A8 (hex) Tanisys Technology +0013A8 (base 16) Tanisys Technology + 12201 Technology Blvd. + Suite 125 + Austin TX 78727-6601 + UNITED STATES + +00-13-A9 (hex) Sony Corporation +0013A9 (base 16) Sony Corporation + 5-1-2 Kitashinagawa + Shinagawa-ku + Tokyo 141-0001 + JAPAN + +00-13-AA (hex) ALS & TEC Ltd. +0013AA (base 16) ALS & TEC Ltd. + 6 B. Kazachya str. + Saratov Saratov region 410600 + RUSSIAN FEDERATION + +00-13-AB (hex) Telemotive AG +0013AB (base 16) Telemotive AG + Breitwiesen + Muehlhausen Baden Wuerttemberg 73347 + GERMANY + +00-13-AC (hex) Sunmyung Electronics Co., LTD +0013AC (base 16) Sunmyung Electronics Co., LTD + LARGO-PLAZA 8F, Janghang-Dong + 857-1, Ilsan-Ku + Koyang Kyungki 411-837 + KOREA, REPUBLIC OF + +00-13-AD (hex) Sendo Ltd +0013AD (base 16) Sendo Ltd + Hatchford Brook + Hatchford Way + Birmingham West Midlands B26 3RZ + UNITED KINGDOM + +00-13-AE (hex) Radiance Technologies +0013AE (base 16) Radiance Technologies + 350 Wynn Dr. + Huntsville Alabama 35805 + UNITED STATES + +00-13-AF (hex) NUMA Technology,Inc. +0013AF (base 16) NUMA Technology,Inc. + 4F,No778,Sec 4,Patch Rd. + Taipei 115 + TAIWAN, REPUBLIC OF CHINA + +00-13-B0 (hex) Jablotron +0013B0 (base 16) Jablotron + Pod Skalkou 33 + Jablonec nad Nisou 46601 + CZECH REPUBLIC + +00-13-B1 (hex) Intelligent Control Systems (Asia) Pte Ltd +0013B1 (base 16) Intelligent Control Systems (Asia) Pte Ltd + 70 Ubi Crescent #01-12 + Ubi Tech Park + 408570 + SINGAPORE + +00-13-B2 (hex) Carallon Limited +0013B2 (base 16) Carallon Limited + Studio G20 Shepherds Building + Rockley Road + London W14 0DA + UNITED KINGDOM + +00-13-B3 (hex) Ecom Communications Technology Co., Ltd. +0013B3 (base 16) Ecom Communications Technology Co., Ltd. + Floor 7, Machinery Industry Building, No.22, + Baiwanzhuang Street, Xicheng District + Beijing + CHINA + +00-13-B4 (hex) Appear TV +0013B4 (base 16) Appear TV + Lilleakerveien 6d + P.O. Box 8 Lilleaker + NO-0216 Oslo + NORWAY + +00-13-B5 (hex) Wavesat +0013B5 (base 16) Wavesat + 1375, Trans-Canada Highway + Suite 300 + Dorval Quebec H9P 2W8 + CANADA + +00-13-B6 (hex) Sling Media, Inc. +0013B6 (base 16) Sling Media, Inc. + 1840 Gateway Center + 2nd Floor + San Mateo CA 94404 + UNITED STATES + +00-13-B7 (hex) Scantech ID +0013B7 (base 16) Scantech ID + Amersfoortsestraat 124 + Soesterberg Utrecht 3769 AN + NETHERLANDS + +00-13-B8 (hex) RyCo Electronic Systems Limited +0013B8 (base 16) RyCo Electronic Systems Limited + Unit E, Cartel Business Estate + Edinburgh Way + Harlow Essex CM20 2TT + UNITED KINGDOM + +00-13-B9 (hex) BM SPA +0013B9 (base 16) BM SPA + VIA MILANO 54/56 + Rozzano 20089 + ITALY + +00-13-BA (hex) ReadyLinks Inc +0013BA (base 16) ReadyLinks Inc + 6595 Edenvale Boulevard + Suite 180 + Eden Prairie MN 55346 + UNITED STATES + +00-13-BB (hex) Smartvue Corporation +0013BB (base 16) Smartvue Corporation + 102 Woodmont Boulevard + Suite 200 + Nashville TN 37205 + UNITED STATES + +00-13-BC (hex) Artimi Ltd +0013BC (base 16) Artimi Ltd + Betjeman House + 104 Hills Road + Cambridge Cambridgeshire CB2 1LQ + UNITED KINGDOM + +00-13-BD (hex) HYMATOM SA +0013BD (base 16) HYMATOM SA + Zone Industrielle + 175 rue de Massacan + VENDARGUES HERAULT 34740 + FRANCE + +00-13-BE (hex) Virtual Conexions +0013BE (base 16) Virtual Conexions + 410 rue St-Nicolas, suite 600 + Montréal Québec H2Y 2P5 + CANADA + +00-13-BF (hex) Media System Planning Corp. +0013BF (base 16) Media System Planning Corp. + 4F Velco-Kuromon Bldg. + 3-14-5 Ueno, + Taito-ku, Tokyo 110-0005 + JAPAN + +00-13-C0 (hex) Trix Tecnologia Ltda. +0013C0 (base 16) Trix Tecnologia Ltda. + Rua da Paz, 1957 - Chácara Santo Antônio + São Paulo 04713-002 + BRAZIL + +00-13-C1 (hex) Asoka USA Corporation +0013C1 (base 16) Asoka USA Corporation + 558 Pilgrim Drive + Unit H + Foster City CA 94404 + UNITED STATES + +00-13-C2 (hex) WACOM Co.,Ltd +0013C2 (base 16) WACOM Co.,Ltd + 2-510-1 Toyonodai Otone-machi + Kitasaitama-gun Saitama 349-1148 + JAPAN + +00-13-C3 (hex) Cisco Systems +0013C3 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-13-C4 (hex) Cisco Systems +0013C4 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-13-C5 (hex) LIGHTRON FIBER-OPTIC DEVICES INC. +0013C5 (base 16) LIGHTRON FIBER-OPTIC DEVICES INC. + 51-1 Moonpyung-Dong, Taeduck-Gu + Taejon 306-220 + KOREA, REPUBLIC OF + +00-13-C6 (hex) OpenGear, Inc +0013C6 (base 16) OpenGear, Inc + 7984 South Welby Park #101 + Salt Lake City UTAH 84088 + UNITED STATES + +00-13-C7 (hex) IONOS Co.,Ltd. +0013C7 (base 16) IONOS Co.,Ltd. + 1-36-18 Miyasaka + Setagaya-ku Tokyo 156-0051 + JAPAN + +00-13-C8 (hex) PIRELLI BROADBAND SOLUTIONS S.P.A. +0013C8 (base 16) PIRELLI BROADBAND SOLUTIONS S.P.A. + VIALE SARCA 222 + MILANO 20126 + ITALY + +00-13-C9 (hex) Beyond Achieve Enterprises Ltd. +0013C9 (base 16) Beyond Achieve Enterprises Ltd. + + P.O. Box 957, Offshore Incorporations Centre + Road Town Tortola + VIRGIN ISLANDS, BRITISH + +00-13-CA (hex) X-Digital Systems, Inc. +0013CA (base 16) X-Digital Systems, Inc. + 9727 Pacific Heights Blvd + Suite 200 + San Diego CA 92121 + UNITED STATES + +00-13-CB (hex) Zenitel Norway AS +0013CB (base 16) Zenitel Norway AS + Sandaker v 24 c + PO Box 4498 + Oslo 0403 + NORWAY + +00-13-CC (hex) Tall Maple Systems +0013CC (base 16) Tall Maple Systems + 85 Saratoga Ave Suite 139 + Santa Clara CA 95051 + UNITED STATES + +00-13-CD (hex) MTI co. LTD +0013CD (base 16) MTI co. LTD + 166-10 Karak-dong + R&D Group 3 + Songpa-ku Seoul 138-810 + KOREA, REPUBLIC OF + +00-13-CE (hex) Intel Corporate +0013CE (base 16) Intel Corporate + Lot 8, Jalan Hi-tech 2/3 + Kulim Hi-Tech Park + Kedah 09000 + MALAYSIA + +00-13-CF (hex) 4Access Communications +0013CF (base 16) 4Access Communications + 1 N. LaSalle St. + Suite 2015 + Chicago IL 60602 + UNITED STATES + +00-13-D0 (hex) t+ Medical Ltd +0013D0 (base 16) t+ Medical Ltd + 174E Milton Park + Abingdon OX14 4SE + UNITED KINGDOM + +00-13-D1 (hex) KIRK telecom A/S +0013D1 (base 16) KIRK telecom A/S + Langmarksvej 34 + Horsens 8700 + DENMARK + +00-13-D2 (hex) PAGE IBERICA, S.A. +0013D2 (base 16) PAGE IBERICA, S.A. + AV. DE LA INDUSTRIA, 24 + TRES CANTOS MADRID 28760 + SPAIN + +00-13-D3 (hex) MICRO-STAR INTERNATIONAL CO., LTD. +0013D3 (base 16) MICRO-STAR INTERNATIONAL CO., LTD. + NO. 69, LI-DE ST. + JUNG-HE CITY TAIPEI HSIEN 235 + TAIWAN, REPUBLIC OF CHINA + +00-13-D4 (hex) ASUSTek COMPUTER INC. +0013D4 (base 16) ASUSTek COMPUTER INC. + No.5 Shing Yeh Street + Kwei Shan Hsiang + Tao Yuan Hsien 333 + TAIWAN, REPUBLIC OF CHINA + +00-13-D5 (hex) WiNetworks LTD +0013D5 (base 16) WiNetworks LTD + 32 Maskit St. + Herzeliya 46733 + ISRAEL + +00-13-D6 (hex) TII NETWORK TECHNOLOGIES, INC. +0013D6 (base 16) TII NETWORK TECHNOLOGIES, INC. + 1385 AKRON STREET + COPIAGUE NY 11726 + UNITED STATES + +00-13-D7 (hex) SPIDCOM Technologies SA +0013D7 (base 16) SPIDCOM Technologies SA + 137 avenue du General LECLERC + BOURG LA REINE 92340 + FRANCE + +00-13-D8 (hex) Princeton Instruments +0013D8 (base 16) Princeton Instruments + 3660 Quakerbridge Road + Trenton NJ 08619 + UNITED STATES + +00-13-D9 (hex) Matrix Product Development, Inc. +0013D9 (base 16) Matrix Product Development, Inc. + 13 North Bird Street + Sun Prairie WI 53590 + UNITED STATES + +00-13-DA (hex) Diskware Co., Ltd +0013DA (base 16) Diskware Co., Ltd + 1-4-12 Kiba + Nakojikiba Bldg.5F + Koto-ku Tokyo 135-0042 + JAPAN + +00-13-DB (hex) SHOEI Electric Co.,Ltd +0013DB (base 16) SHOEI Electric Co.,Ltd + 1-29-2,Wakabayashi + Setagaya-ku Tokyo 154-0023 + JAPAN + +00-13-DC (hex) IBTEK INC. +0013DC (base 16) IBTEK INC. + 16F, 30, Pei-Ping East Rd., + Taipei 100 + TAIWAN, REPUBLIC OF CHINA + +00-13-DD (hex) Abbott Diagnostics +0013DD (base 16) Abbott Diagnostics + 5440 Patrick Henry Drive + Santa Clara CA 95054 + UNITED STATES + +00-13-DE (hex) Adapt4 +0013DE (base 16) Adapt4 + 609 N John Rodes Blvd. + Melbourne FL 32934 + UNITED STATES + +00-13-DF (hex) Ryvor Corp. +0013DF (base 16) Ryvor Corp. + 15145 Red Hill Ave. + Suite B + Tustin CA 92780 + UNITED STATES + +00-13-E0 (hex) Murata Manufacturing Co., Ltd. +0013E0 (base 16) Murata Manufacturing Co., Ltd. + 2288, Oshinohara, + Yasu-shi Shiga 520-2393 + JAPAN + +00-13-E1 (hex) Iprobe AB +0013E1 (base 16) Iprobe AB + Finlandsgatan 12 + Kista SE-16474 + SWEDEN + +00-13-E2 (hex) GeoVision Inc. +0013E2 (base 16) GeoVision Inc. + 12F.,No.316,Sec.1, + Neihu Rd,Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-13-E3 (hex) CoVi Technologies, Inc. +0013E3 (base 16) CoVi Technologies, Inc. + 6300 Bridgepoint Parkway + Suite 300, Bldg. II + Austin Texas 78730 + UNITED STATES + +00-13-E4 (hex) YANGJAE SYSTEMS CORP. +0013E4 (base 16) YANGJAE SYSTEMS CORP. + 1202. HANSHIN IT TOWER Guro-3Dong, + Guro-Gu + Seoul 152-848 + KOREA, REPUBLIC OF + +00-13-E5 (hex) TENOSYS, INC. +0013E5 (base 16) TENOSYS, INC. + Seojin B/D, 1564-1, Seocho-dong, + Seocho-gu + Seoul 137-070 + KOREA, REPUBLIC OF + +00-13-E6 (hex) Technolution +0013E6 (base 16) Technolution + Zuidelijkhalfrond 1 + GOUDA ZH 2801 DD + NETHERLANDS + +00-13-E7 (hex) Minelab Electronics Pty Limited +0013E7 (base 16) Minelab Electronics Pty Limited + 118 Hayward Ave Torrensville + Adelaide 5031 + AUSTRALIA + +00-13-E8 (hex) Intel Corporate +0013E8 (base 16) Intel Corporate + Lot 8, Jalan Hi-tech 2/3 + Kulim Hi-Tech Park + Kedah 09000 + MALAYSIA + +00-13-E9 (hex) VeriWave, Inc. +0013E9 (base 16) VeriWave, Inc. + 9600 SW Oak St. + Portland OR 97223 + UNITED STATES + +00-13-EA (hex) Kamstrup A/S +0013EA (base 16) Kamstrup A/S + Industrivej 28 + Stilling 8660 + DENMARK + +00-13-EB (hex) Sysmaster Corporation +0013EB (base 16) Sysmaster Corporation + 5801 Christie Ave. + Suite 400 + Emeryville CA 94608 + UNITED STATES + +00-13-EC (hex) Sunbay Software AG +0013EC (base 16) Sunbay Software AG + Seestrasse 78 + Rueschlikon ZH 8803 + SWITZERLAND + +00-13-ED (hex) PSIA +0013ED (base 16) PSIA + 517-13 Induspis 5th + SangDaeWonDong JungWonGu + SungNam KyungGi + KOREA, REPUBLIC OF + +00-13-EE (hex) JBX Designs Inc. +0013EE (base 16) JBX Designs Inc. + PO Box 970158 + Boca Raton FL 33497 + UNITED STATES + +00-13-EF (hex) Kingjon Digital Technology Co.,Ltd +0013EF (base 16) Kingjon Digital Technology Co.,Ltd + Room 827,Huanan Dianli Bulding,No.2050 + Shenzhen GuangDong 518031 + CHINA + +00-13-F0 (hex) Wavefront Semiconductor +0013F0 (base 16) Wavefront Semiconductor + 4746 44th Ave SW + Suite 201 + Seattle WA 98116 + UNITED STATES + +00-13-F1 (hex) AMOD Technology Co., Ltd. +0013F1 (base 16) AMOD Technology Co., Ltd. + 2F., No. 16, Prosperity Road II + Science-Based Industrial Park, + Hsinchu, 30078 + TAIWAN, REPUBLIC OF CHINA + +00-13-F2 (hex) Klas Ltd +0013F2 (base 16) Klas Ltd + Bracetown Business Park + Clonee Co Meath + IRELAND + +00-13-F3 (hex) Giga-byte Communications Inc. +0013F3 (base 16) Giga-byte Communications Inc. + 8F, No.43, Fu-Hsin Road. Hsin-Tien + Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-13-F4 (hex) Psitek (Pty) Ltd +0013F4 (base 16) Psitek (Pty) Ltd + The Vineyards Office Estate + 99 Jip de Jager Drive + Tyger Valley Cape Town 7530 + SOUTH AFRICA + +00-13-F5 (hex) Akimbi Systems +0013F5 (base 16) Akimbi Systems + 1400 Fashion Island Blvd + Suite 900 + San Mateo CA 94404 + UNITED STATES + +00-13-F6 (hex) Cintech +0013F6 (base 16) Cintech + 21a route de la wantzenau + Hoenheim 67800 + FRANCE + +00-13-F7 (hex) SMC Networks, Inc. +0013F7 (base 16) SMC Networks, Inc. + 38 Tesla + Irvine CA 92618 + UNITED STATES + +00-13-F8 (hex) Dex Security Solutions +0013F8 (base 16) Dex Security Solutions + 10 Junction Road Parktown + 2nd Floor BP House + Johannesburg Guteng 2000 + SOUTH AFRICA + +00-13-F9 (hex) Cavera Systems +0013F9 (base 16) Cavera Systems + 2355 Oakland Rd, Suite#33 + San Jose CA 95131 + UNITED STATES + +00-13-FA (hex) LifeSize Communications, Inc +0013FA (base 16) LifeSize Communications, Inc + 901 S. Mopac + Bldg 3, Suite 300 + Austin TX 78746 + UNITED STATES + +00-13-FB (hex) RKC INSTRUMENT INC. +0013FB (base 16) RKC INSTRUMENT INC. + 16-6, Kugahara 5-chome, + Ohta-ku Tokyo 146-8515 + JAPAN + +00-13-FC (hex) SiCortex, Inc +0013FC (base 16) SiCortex, Inc + 3 Clocktower Place + Suite 210 + Maynard MA 01754 + UNITED STATES + +00-13-FD (hex) Nokia Danmark A/S +0013FD (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-13-FE (hex) GRANDTEC ELECTRONIC CORP. +0013FE (base 16) GRANDTEC ELECTRONIC CORP. + 8F,NO.268,Lian Cheng Rd.,Chung Ho City, + Hsien 235 + Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-13-FF (hex) Dage-MTI of MC, Inc. +0013FF (base 16) Dage-MTI of MC, Inc. + 701 N. Roeske Ave. + Michigan City IN 46360 + UNITED STATES + +00-14-00 (hex) MINERVA KOREA CO., LTD +001400 (base 16) MINERVA KOREA CO., LTD + #203, SH Sienne, Seohyeon-Dong + Bundang-Gu + Seongnam-Si Gyeonggi-Do 463-821 + KOREA, REPUBLIC OF + +00-14-01 (hex) Rivertree Networks Corp. +001401 (base 16) Rivertree Networks Corp. + R#304, K-Center, 1591-9 + Burim-dong, Dongahn-gu + Anyang-si Kyunggi-do 431-815 + KOREA, REPUBLIC OF + +00-14-02 (hex) kk-electronic a/s +001402 (base 16) kk-electronic a/s + Cypresvej 6 + Herning 7400 + DENMARK + +00-14-03 (hex) Renasis, LLC +001403 (base 16) Renasis, LLC + 1530 N. State St. + Suite E + Lehi UT 84043 + UNITED STATES + +00-14-04 (hex) Motorola CHS +001404 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-14-05 (hex) OpenIB, Inc. +001405 (base 16) OpenIB, Inc. + OpenFabrics, Inc., c/o QLogic Corporation + 2071 Stierlin Court, Suite 200 + Mountain View CA 94043-4655 + UNITED STATES + +00-14-06 (hex) Go Networks +001406 (base 16) Go Networks + 126 Yigal Alon st. + Tel Aviv 67443 + ISRAEL + +00-14-07 (hex) Sperian Protection Instrumentation +001407 (base 16) Sperian Protection Instrumentation + 651 South Main Street + Middletown CT 06457 + UNITED STATES + +00-14-08 (hex) Eka Systems Inc. +001408 (base 16) Eka Systems Inc. + 20251 Century Blvd + Suite 120 + Germantown MD 20874 + UNITED STATES + +00-14-09 (hex) MAGNETI MARELLI S.E. S.p.A. +001409 (base 16) MAGNETI MARELLI S.E. S.p.A. + VIALE ALDO BORLETTI, 61/63 + CORBETTA MILANO 20011 + ITALY + +00-14-0A (hex) WEPIO Co., Ltd. +00140A (base 16) WEPIO Co., Ltd. + #1125, Opus1, Gurodongcomplex building + 611-26,Guro-dong,Guro-gu, + Seoul 152-050 + KOREA, REPUBLIC OF + +00-14-0B (hex) FIRST INTERNATIONAL COMPUTER, INC. +00140B (base 16) FIRST INTERNATIONAL COMPUTER, INC. + FIC BUILDING, NO.300, YANG GUANG ST., + NEIHU + TAIPEI COUNTY 114 + TAIWAN, REPUBLIC OF CHINA + +00-14-0C (hex) GKB CCTV CO., LTD. +00140C (base 16) GKB CCTV CO., LTD. + 7F, No. 1, Lane 641, + Shen Ling South Rd., + Ta Ya Hsiang, TAICHUNG 428 + TAIWAN, REPUBLIC OF CHINA + +00-14-0D (hex) Nortel +00140D (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-14-0E (hex) Nortel +00140E (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-14-0F (hex) Federal State Unitary Enterprise Leningrad R&D Institute of +00140F (base 16) Federal State Unitary Enterprise Leningrad R&D Institute of + 11 Warshawskaya St. + St. Petersburg 196128 + RUSSIAN FEDERATION + +00-14-10 (hex) Suzhou Keda Technology CO.,Ltd +001410 (base 16) Suzhou Keda Technology CO.,Ltd + 131,Jinshan Road + Suzhou JiangSu 215011 + CHINA + +00-14-11 (hex) Deutschmann Automation GmbH & Co. KG +001411 (base 16) Deutschmann Automation GmbH & Co. KG + Carl-Zeiss-Str. 8 + Bad Camberg D - 65520 + GERMANY + +00-14-12 (hex) S-TEC electronics AG +001412 (base 16) S-TEC electronics AG + Industriestrasse 49 + Zug 6300 + SWITZERLAND + +00-14-13 (hex) Trebing & Himstedt Prozessautomation GmbH & Co. KG +001413 (base 16) Trebing & Himstedt Prozessautomation GmbH & Co. KG + Wilhelm-Hennemann-Str. 13 + Schwerin Mecklenburg-Vorpommern 19061 + GERMANY + +00-14-14 (hex) Jumpnode Systems LLC. +001414 (base 16) Jumpnode Systems LLC. + 800 Washington Ave N. + Suite 309 + Minneapolis MN 55041 + UNITED STATES + +00-14-15 (hex) Intec Automation Inc. +001415 (base 16) Intec Automation Inc. + 2751 Arbutus Rd. + Victoria British Columbia V8N 5X7 + CANADA + +00-14-16 (hex) Scosche Industries, Inc. +001416 (base 16) Scosche Industries, Inc. + PO Box 2901 + Oxnard CA 93034 + UNITED STATES + +00-14-17 (hex) RSE Informations Technologie GmbH +001417 (base 16) RSE Informations Technologie GmbH + Silberbergstrasse 9 + Wolfsberg Kärnten 9400 + AUSTRIA + +00-14-18 (hex) C4Line +001418 (base 16) C4Line + 1001 Hyundai Parisian, + 907-10 Mok5-Dong + Yangchun-Gu Seoul 158-050 + KOREA, REPUBLIC OF + +00-14-19 (hex) SIDSA +001419 (base 16) SIDSA + PTM - TORRES QUEVEDO 1 + TRES CANTOS MADRID 28760 + SPAIN + +00-14-1A (hex) DEICY CORPORATION +00141A (base 16) DEICY CORPORATION + 3-3-6,Sakae-cho,Hamura-shi, + Tokyo 205-0002 + JAPAN + +00-14-1B (hex) Cisco Systems +00141B (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-14-1C (hex) Cisco Systems +00141C (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-14-1D (hex) Lust Antriebstechnik GmbH +00141D (base 16) Lust Antriebstechnik GmbH + Gewerbestrasse 5-9 + Lahnau Hessen 35633 + GERMANY + +00-14-1E (hex) P.A. Semi, Inc. +00141E (base 16) P.A. Semi, Inc. + 3965 Freedom Circle, Fl 8 + Santa Clara CA 95054 + UNITED STATES + +00-14-1F (hex) SunKwang Electronics Co., Ltd +00141F (base 16) SunKwang Electronics Co., Ltd + #365(Techno-park, 301 dong, 901 ho,) Samjung-dong, Ohjung-ku, + Bucheon-shi Kyunggi-do 421-809 + KOREA, REPUBLIC OF + +00-14-20 (hex) G-Links networking company +001420 (base 16) G-Links networking company + 1FL. NO.15-49, MING DER SECOND ROAD, + CHI DU DISTRICT, + Keelung 206 + TAIWAN, REPUBLIC OF CHINA + +00-14-21 (hex) Total Wireless Technologies Pte. Ltd. +001421 (base 16) Total Wireless Technologies Pte. Ltd. + Blk 1003, Bukit Merah Central, #04-18 + Technopreneur Centre + 159836 + SINGAPORE + +00-14-22 (hex) Dell Inc. +001422 (base 16) Dell Inc. + One Dell Way + Round Rock Texas 78682 + UNITED STATES + +00-14-23 (hex) J-S Co. NEUROCOM +001423 (base 16) J-S Co. NEUROCOM + Energeticheskii proezd, 6 + Moscow 111250 + RUSSIAN FEDERATION + +00-14-24 (hex) Merry Electrics CO., LTD. +001424 (base 16) Merry Electrics CO., LTD. + NO.22,23rd ROAD + PARK TAICHUNG, + TAICHUNG CITY 40850 + TAIWAN, REPUBLIC OF CHINA + +00-14-25 (hex) Galactic Computing Corp. +001425 (base 16) Galactic Computing Corp. + 1/F + 12 Lee Chung Street + Chai Wan District + HONG KONG + +00-14-26 (hex) NL Technology +001426 (base 16) NL Technology + 800 Turnpike Street + STE 100 + North Andover MA 01845 + UNITED STATES + +00-14-27 (hex) JazzMutant +001427 (base 16) JazzMutant + 2 allee du Doyen Georges Brus + Pessac 33600 + FRANCE + +00-14-28 (hex) Vocollect, Inc +001428 (base 16) Vocollect, Inc + 703 Rodi Road + Pittsburgh PA 15235 + UNITED STATES + +00-14-29 (hex) V Center Technologies Co., Ltd. +001429 (base 16) V Center Technologies Co., Ltd. + 7F-7, NO.35, Hsintai Rd. + Jubei City Hsinchu 302 + TAIWAN, REPUBLIC OF CHINA + +00-14-2A (hex) Elitegroup Computer System Co., Ltd +00142A (base 16) Elitegroup Computer System Co., Ltd + No.22, Alley 38, Lane 91, Sec. 1, + Nei Hu Road + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-14-2B (hex) Edata Communication Inc. +00142B (base 16) Edata Communication Inc. + 2F-1, No. 872, Chung-Cheng Rd + Chung-Ho City + Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-14-2C (hex) Koncept International, Inc. +00142C (base 16) Koncept International, Inc. + 2500 E Foothill Blvd. #407 + Pasadena CA 91107 + UNITED STATES + +00-14-2D (hex) Toradex AG +00142D (base 16) Toradex AG + Altsagenstrasse 5 + Horw LU 6048 + SWITZERLAND + +00-14-2E (hex) 77 Elektronika Kft. +00142E (base 16) 77 Elektronika Kft. + Fehervari ut 98. + Budapest H-1163 + HUNGARY + +00-14-2F (hex) WildPackets +00142F (base 16) WildPackets + 1340 Treat Boulevard + Suite 500 + Walnut Creek CA 94597 + UNITED STATES + +00-14-30 (hex) ViPowER, Inc +001430 (base 16) ViPowER, Inc + 9F., No.205-3, Sec. 3, Beisin Rd + Sindian Taipei County 231 + TAIWAN, REPUBLIC OF CHINA + +00-14-31 (hex) PDL Electronics Ltd +001431 (base 16) PDL Electronics Ltd + 81 Austin Street + Napier Hawkes Bay 4015 + NEW ZEALAND + +00-14-32 (hex) Tarallax Wireless, Inc. +001432 (base 16) Tarallax Wireless, Inc. + 10 West 100 South, + Suite 600 + Salt Lake City UT 84101 + UNITED STATES + +00-14-33 (hex) Empower Technologies(Canada) Inc. +001433 (base 16) Empower Technologies(Canada) Inc. + Unit 120 - 13551 Verdun Place + Richmond British Columbia V6V 1W5 + CANADA + +00-14-34 (hex) Keri Systems, Inc +001434 (base 16) Keri Systems, Inc + Suite 100 + 1530 Oakland Rd + San Jose CA 95112 + UNITED STATES + +00-14-35 (hex) CityCom Corp. +001435 (base 16) CityCom Corp. + 3F., No.532, Sec. 2, + Jhongshan Rd. + Jhonghe City Taipei Hsien 23557 + TAIWAN, REPUBLIC OF CHINA + +00-14-36 (hex) Qwerty Elektronik AB +001436 (base 16) Qwerty Elektronik AB + Bälinge Klockargård + Tystberga 610 60 + SWEDEN + +00-14-37 (hex) GSTeletech Co.,Ltd. +001437 (base 16) GSTeletech Co.,Ltd. + 1385-14, Juan-Dong, Nam-gu + Incheon 402-200 + KOREA, REPUBLIC OF + +00-14-38 (hex) Hewlett Packard +001438 (base 16) Hewlett Packard + 20555 State Highway 249 South + MS070405 + Houston TX 77070 + UNITED STATES + +00-14-39 (hex) Blonder Tongue Laboratories, Inc. +001439 (base 16) Blonder Tongue Laboratories, Inc. + One Jake Brown Road + Old Bridge New Jersey 08857 + UNITED STATES + +00-14-3A (hex) RAYTALK INTERNATIONAL SRL +00143A (base 16) RAYTALK INTERNATIONAL SRL + St. Marecchia 79 + Verucchio (RN) 47826 + ITALY + +00-14-3B (hex) Sensovation AG +00143B (base 16) Sensovation AG + Ludwigshafener Str. 29 + Stockach Baden-Wuerttemberg 78333 + GERMANY + +00-14-3C (hex) Rheinmetall Canada Inc. +00143C (base 16) Rheinmetall Canada Inc. + 225 boul du seminaire sud + St-Jean-sur-Richelieu Quebec J3B 8E9 + CANADA + +00-14-3D (hex) Aevoe Inc. +00143D (base 16) Aevoe Inc. + 11F, No 23, Keelung Road + Taipei HsinYi District 110 + TAIWAN, REPUBLIC OF CHINA + +00-14-3E (hex) AirLink Communications, Inc. +00143E (base 16) AirLink Communications, Inc. + 3159 Corporate Place + Hayward CA 94545 + UNITED STATES + +00-14-3F (hex) Hotway Technology Corporation +00143F (base 16) Hotway Technology Corporation + No. 81, Hsin Tai 5th Road Section 1 + 11F-3 + ShiJr Taipei 221 + TAIWAN, REPUBLIC OF CHINA + +00-14-40 (hex) ATOMIC Corporation +001440 (base 16) ATOMIC Corporation + MAMPO BLDG + 1-3-11,ASAKUSABASHI + TAITO-KU TOKYO 111-0053 + JAPAN + +00-14-41 (hex) Innovation Sound Technology Co., LTD. +001441 (base 16) Innovation Sound Technology Co., LTD. + Building 2th.,Cuihai Industrial Area, + Huaide, Fuyong Town + Shenzhen Guangdong 518103 + CHINA + +00-14-42 (hex) ATTO CORPORATION +001442 (base 16) ATTO CORPORATION + 1-25-23 Hongo, + Bunkyo-ku, + Tokyo 113-8425 + JAPAN + +00-14-43 (hex) Consultronics Europe Ltd +001443 (base 16) Consultronics Europe Ltd + Electron Way + Chandlers Ford Hants SO53 4SE + UNITED KINGDOM + +00-14-44 (hex) Grundfos Electronics +001444 (base 16) Grundfos Electronics + Birkevaenget 2-10 + Bjerringbro DK8850 + DENMARK + +00-14-45 (hex) Telefon-Gradnja d.o.o. +001445 (base 16) Telefon-Gradnja d.o.o. + Plesivicka 3 + Sveta Nedelja Zupanija Zagrebacka 10431 + CROATIA + +00-14-46 (hex) SuperVision Solutions LLC +001446 (base 16) SuperVision Solutions LLC + 762 Industrial Dr. + Elmhurst IL 60126 + UNITED STATES + +00-14-47 (hex) BOAZ Inc. +001447 (base 16) BOAZ Inc. + 282 Pukok-ri SongSan-myon Dangzin-gun Chungcheongnam-do, 343-834 + #301, 1429-7 SeoCho-dong + Seoul SeoCho-gu 137-070 + KOREA, REPUBLIC OF + +00-14-48 (hex) Inventec Multimedia & Telecom Corporation +001448 (base 16) Inventec Multimedia & Telecom Corporation + 5F,NO.396,Sec.1 Nei-Hu Road + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-14-49 (hex) Sichuan Changhong Electric Ltd. +001449 (base 16) Sichuan Changhong Electric Ltd. + No.35,East MianXin Road + MianYang SiChuan PRC 621000 + CHINA + +00-14-4A (hex) Taiwan Thick-Film Ind. Corp. +00144A (base 16) Taiwan Thick-Film Ind. Corp. + NO.126,Wuu Gong 2nd RD, + Wuu Guu Industrial Zone + Taipei Hsien 248 + TAIWAN, REPUBLIC OF CHINA + +00-14-4B (hex) Hifn, Inc. +00144B (base 16) Hifn, Inc. + 750 University Ave + Suite 200 + Los Gatos CA 95032 + UNITED STATES + +00-14-4C (hex) General Meters Corp. +00144C (base 16) General Meters Corp. + 1935 Dominion Way + Colorado Springs Colorado 80918 + UNITED STATES + +00-14-4D (hex) Intelligent Systems +00144D (base 16) Intelligent Systems + 11101 Johns Hopkins Road + Laurel MD 20723 + UNITED STATES + +00-14-4E (hex) SRISA +00144E (base 16) SRISA + 36/1, Nakhimovskiy pr-t + Moscow 117218 + RUSSIAN FEDERATION + +00-14-4F (hex) Sun Microsystems, Inc. +00144F (base 16) Sun Microsystems, Inc. + 4200 Network Circle + Santa Clara CA 95054 + UNITED STATES + +00-14-50 (hex) Heim Systems GmbH +001450 (base 16) Heim Systems GmbH + Friedrich Ebert Strasse + TechnologiePark + Bergisch Gladbach NRW 51429 + GERMANY + +00-14-51 (hex) Apple Computer Inc. +001451 (base 16) Apple Computer Inc. + 1 Infinite Loop + MS:35GPO + Cupertino CA 95014 + UNITED STATES + +00-14-52 (hex) CALCULEX,INC. +001452 (base 16) CALCULEX,INC. + 132 W. LAS CRUCES AVE. + LAS CRUCES NEW MEXICO 88001 + UNITED STATES + +00-14-53 (hex) ADVANTECH TECHNOLOGIES CO.,LTD +001453 (base 16) ADVANTECH TECHNOLOGIES CO.,LTD + #1202 ACE TECHNO TOWER, 684-1 + Deungchon-3Dong, Kangseo-Ku + Seoul 157-721 + KOREA, REPUBLIC OF + +00-14-54 (hex) Symwave +001454 (base 16) Symwave + 10251 Vista Sorrento Parkway + Suite 100 + San Diego CA 92121 + UNITED STATES + +00-14-55 (hex) Coder Electronics Corporation +001455 (base 16) Coder Electronics Corporation + Takeda Bldg, 1-30-6 Shirasagi, + Nakano-ku Tokyo 165-0035 + JAPAN + +00-14-56 (hex) Edge Products +001456 (base 16) Edge Products + 1080 South Depot Drive + Ogden Utah 84404 + UNITED STATES + +00-14-57 (hex) T-VIPS AS +001457 (base 16) T-VIPS AS + Ostensjoveien 18 + Oslo NO-0661 + NORWAY + +00-14-58 (hex) HS Automatic ApS +001458 (base 16) HS Automatic ApS + Bjerringbrovej 70 + Rodovre 2610 + DENMARK + +00-14-59 (hex) Moram Co., Ltd. +001459 (base 16) Moram Co., Ltd. + 3F, Manwol Bldg., 1022-4 + Youngtong-dong, Youngtong-gu + Suwon-shi Gyounggi-do 443-813 + KOREA, REPUBLIC OF + +00-14-5A (hex) Elektrobit AG +00145A (base 16) Elektrobit AG + Rosswiesstrasse 29 + Bubikon ZH CH-8608 + SWITZERLAND + +00-14-5B (hex) SeekerNet Inc. +00145B (base 16) SeekerNet Inc. + 300 Satellite Blvd. + Suwanee Georgia 30024 + UNITED STATES + +00-14-5C (hex) Intronics B.V. +00145C (base 16) Intronics B.V. + Hermesweg 22 + Barneveld Gelderland 3771 ND + NETHERLANDS + +00-14-5D (hex) WJ Communications, Inc. +00145D (base 16) WJ Communications, Inc. + 401 River Oaks Parkway + San Jose CA 95134 + UNITED STATES + +00-14-5E (hex) IBM +00145E (base 16) IBM + 3039 Cornwallis Rd + BLD 660-2F202 + Raleigh NC 27709 + UNITED STATES + +00-14-5F (hex) ADITEC CO. LTD +00145F (base 16) ADITEC CO. LTD + 4F Hyowon B/D, 99-5, + Karak-dong,Songpa-gu + Seoul 138-805 + KOREA, REPUBLIC OF + +00-14-60 (hex) Kyocera Wireless Corp. +001460 (base 16) Kyocera Wireless Corp. + 10300 Campus Point Drive + San Diego CA 92121 + UNITED STATES + +00-14-61 (hex) CORONA CORPORATION +001461 (base 16) CORONA CORPORATION + 7-7, HIGASHI-SHINBO + SANJO-SHI NIIGATA 955-8510 + JAPAN + +00-14-62 (hex) Digiwell Technology, inc +001462 (base 16) Digiwell Technology, inc + 4F, No.1, Prosperity 1st Road + Hsinchu Science Park 300 + TAIWAN, REPUBLIC OF CHINA + +00-14-63 (hex) IDCS N.V. +001463 (base 16) IDCS N.V. + Hellebeemden 9 + Hasselt Limburg 3500 + BELGIUM + +00-14-64 (hex) Cryptosoft +001464 (base 16) Cryptosoft + Lermontova str, 3 + Penza region 440026 + RUSSIAN FEDERATION + +00-14-65 (hex) Novo Nordisk A/S +001465 (base 16) Novo Nordisk A/S + Novo Alle + Bagsvaerd 2880 + DENMARK + +00-14-66 (hex) Kleinhenz Elektronik GmbH +001466 (base 16) Kleinhenz Elektronik GmbH + Greinerberg 14 + Munich 81371 + GERMANY + +00-14-67 (hex) ArrowSpan Inc. +001467 (base 16) ArrowSpan Inc. + 4699 Old Ironsides Dr. Suite 100 + Santa Clara CA 95054 + UNITED STATES + +00-14-68 (hex) CelPlan International, Inc. +001468 (base 16) CelPlan International, Inc. + 1835 Alexander Bell Drive + suite 200 + Reston VA 20191 + UNITED STATES + +00-14-69 (hex) Cisco Systems +001469 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-14-6A (hex) Cisco Systems +00146A (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-14-6B (hex) Anagran, Inc. +00146B (base 16) Anagran, Inc. + 2055 Woodside Road + Suite 200 + Redwood City CA 94061 + UNITED STATES + +00-14-6C (hex) Netgear Inc. +00146C (base 16) Netgear Inc. + 4500 Great America Parkway + Santa Clara CA 95054 + UNITED STATES + +00-14-6D (hex) RF Technologies +00146D (base 16) RF Technologies + 3125 N 126th Street + Brookfield WI 53005 + UNITED STATES + +00-14-6E (hex) H. Stoll GmbH & Co. KG +00146E (base 16) H. Stoll GmbH & Co. KG + Stollweg + Reutlingen Deutschland 72760 + GERMANY + +00-14-6F (hex) Kohler Co +00146F (base 16) Kohler Co + 444 Highland Drive + MS 072 + Kohler WI 53044 + UNITED STATES + +00-14-70 (hex) Prokom Software SA +001470 (base 16) Prokom Software SA + Al. Jerozolimskie 65/79 + Warszawa Mazowieckie 00-697 + POLAND + +00-14-71 (hex) Eastern Asia Technology Limited +001471 (base 16) Eastern Asia Technology Limited + 5611, North Bridge Road, + #22-03, Eng Cheong Tower + 198782 + SINGAPORE + +00-14-72 (hex) China Broadband Wireless IP Standard Group +001472 (base 16) China Broadband Wireless IP Standard Group + P.O.BOX 88,West High-tech + Development Center, + Xi'an Shaan Xi 710075 + CHINA + +00-14-73 (hex) Bookham Inc +001473 (base 16) Bookham Inc + 10 Brewer Hunt Way + Kanata ON K2K 2B5 + CANADA + +00-14-74 (hex) K40 Electronics +001474 (base 16) K40 Electronics + 600 Tollgate Rd. Unit A + Elgin IL 60123 + UNITED STATES + +00-14-75 (hex) Wiline Networks, Inc. +001475 (base 16) Wiline Networks, Inc. + 741 Alexander Rd + Princeton NJ 08540 + UNITED STATES + +00-14-76 (hex) MultiCom Industries Limited +001476 (base 16) MultiCom Industries Limited + Room 1206-7, Manhattan Center, + 8 Kwai Cheong Rd. + Kwai Chung, N.T. + HONG KONG + +00-14-77 (hex) Nertec Inc. +001477 (base 16) Nertec Inc. + 950 Cowie st. + Granby Quebec J2J 1P2 + CANADA + +00-14-78 (hex) ShenZhen TP-LINK Technologies Co., Ltd. +001478 (base 16) ShenZhen TP-LINK Technologies Co., Ltd. + 3/F,Bldg.R1-B,Hi-tech Industrial Park, + Shennan Rd. + ShenZhen GuangDong 518057 + CHINA + +00-14-79 (hex) NEC Magnus Communications,Ltd. +001479 (base 16) NEC Magnus Communications,Ltd. + 4-28 + Mita 1-Chome + Minato-ku Tokyo 108-0073 + JAPAN + +00-14-7A (hex) Eubus GmbH +00147A (base 16) Eubus GmbH + Gollierstr. 70 Aufgang E 4.Stock + Munich Bavaria 80339 + GERMANY + +00-14-7B (hex) Iteris, Inc. +00147B (base 16) Iteris, Inc. + 1515 S. Manchester Ave. + Anaheim CA 92802 + UNITED STATES + +00-14-7C (hex) 3Com Ltd +00147C (base 16) 3Com Ltd + Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts HP2 4NW + UNITED KINGDOM + +00-14-7D (hex) Aeon Digital International +00147D (base 16) Aeon Digital International + 31-6, The Bund Center + 222 Yan An E. Rd + Shanghai SH 200002 + CHINA + +00-14-7E (hex) InnerWireless +00147E (base 16) InnerWireless + 1155 Kas Drive, Suite 200 + Richardson TX 75081 + UNITED STATES + +00-14-7F (hex) Thomson Telecom Belgium +00147F (base 16) Thomson Telecom Belgium + Prins Boudewijnlaan 47 + Edegem Antwerp B-2650 + BELGIUM + +00-14-80 (hex) Hitachi-LG Data Storage Korea, Inc +001480 (base 16) Hitachi-LG Data Storage Korea, Inc + 19-1,Cheongho-ri + Jinwuy-Myun + Pyungtaik Kyunggi-Do 451-713 + KOREA, REPUBLIC OF + +00-14-81 (hex) Multilink Inc +001481 (base 16) Multilink Inc + 580 Ternes Ave + Elyria OH 44035 + UNITED STATES + +00-14-82 (hex) GoBackTV, Inc +001482 (base 16) GoBackTV, Inc + 937 Hamilton Avenue + Menlo Park CA 94025 + UNITED STATES + +00-14-83 (hex) eXS Inc. +001483 (base 16) eXS Inc. + Registered Office + Akara Building, 24 De Castro Street + Wickhams Cay1, Road Town Tortola + VIRGIN ISLANDS, BRITISH + +00-14-84 (hex) Cermate Technologies Inc. +001484 (base 16) Cermate Technologies Inc. + 7F-1, No 168 Lien-Chen Rd. + Chung-Ho City Taipei County + TAIWAN, REPUBLIC OF CHINA + +00-14-85 (hex) Giga-Byte +001485 (base 16) Giga-Byte + No.215,Nan-Ping Road, + Pin-Jen Taoyuan 326 + TAIWAN, REPUBLIC OF CHINA + +00-14-86 (hex) Echo Digital Audio Corporation +001486 (base 16) Echo Digital Audio Corporation + 6450 Via Real #1 + Carpinteria CA 93013 + UNITED STATES + +00-14-87 (hex) American Technology Integrators +001487 (base 16) American Technology Integrators + 1358 Rosalia Ave + San Jose CA 95130 + UNITED STATES + +00-14-88 (hex) Akorri +001488 (base 16) Akorri + 305 Foster Street + Littleton MA 01460 + UNITED STATES + +00-14-89 (hex) B15402100 - JANDEI, S.L. +001489 (base 16) B15402100 - JANDEI, S.L. + POL. IND. POCOMACO, E-28 + LA CORUÑA 15190 + SPAIN + +00-14-8A (hex) Elin Ebg Traction Gmbh +00148A (base 16) Elin Ebg Traction Gmbh + Cumberlandstrasse 32 + Vienna 1140 + AUSTRIA + +00-14-8B (hex) Globo Electronic GmbH & Co. KG +00148B (base 16) Globo Electronic GmbH & Co. KG + Industriestrasse 4a + Niederlauer Bayern 97618 + GERMANY + +00-14-8C (hex) Fortress Technologies +00148C (base 16) Fortress Technologies + 2 Technology Park Drive + Westford MA 01886 + UNITED STATES + +00-14-8D (hex) Cubic Defense Simulation Systems +00148D (base 16) Cubic Defense Simulation Systems + 2001 W. Oakridge Road + Orlando FL 32809 + UNITED STATES + +00-14-8E (hex) Tele Power Inc. +00148E (base 16) Tele Power Inc. + 1-46-15#B1F + Asahigaoka + Nerima-ku Tokyo 176-0005 + JAPAN + +00-14-8F (hex) Protronic (Far East) Ltd. +00148F (base 16) Protronic (Far East) Ltd. + Rm. 1303 Nanyang Plaza, + 57 Hung To Road + Kwun Tong Kowloon 852 + HONG KONG + +00-14-90 (hex) ASP Corporation +001490 (base 16) ASP Corporation + 465 Industrial Park Road + Hartwell GA 30643 + UNITED STATES + +00-14-91 (hex) Daniels Electronics Ltd. +001491 (base 16) Daniels Electronics Ltd. + 43 Erie St + Victoria BC V8V 1P8 + CANADA + +00-14-92 (hex) Liteon, Mobile Media Solution SBU +001492 (base 16) Liteon, Mobile Media Solution SBU + 4F, 3, Lane 768, Sec. 4, + Pateh Road, + Taipei 115 + TAIWAN, REPUBLIC OF CHINA + +00-14-93 (hex) Systimax Solutions +001493 (base 16) Systimax Solutions + 1300 E Lookout Drive + Richardson Texas 75082 + UNITED STATES + +00-14-94 (hex) ESU AG +001494 (base 16) ESU AG + Lukasstrasse 29 + St. Gallen 9008 + SWITZERLAND + +00-14-95 (hex) 2Wire, Inc. +001495 (base 16) 2Wire, Inc. + 1704 Automation Parkway + San Jose CA 95131 + UNITED STATES + +00-14-96 (hex) Phonic Corp. +001496 (base 16) Phonic Corp. + 12thFl, 59 Tung Hsing Rd + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-14-97 (hex) ZHIYUAN Eletronics co.,ltd. +001497 (base 16) ZHIYUAN Eletronics co.,ltd. + 2 Floor, NO.3 Building, Huangzhou Industrial Estate, Chebei Road, + Tianhe + Guangzhou Guangdong 510660 + CHINA + +00-14-98 (hex) Viking Design Technology +001498 (base 16) Viking Design Technology + 2F, No.2, Lane 42, + Hou-Gang Street, Shih-Lin District + Taipei 111 + TAIWAN, REPUBLIC OF CHINA + +00-14-99 (hex) Helicomm Inc +001499 (base 16) Helicomm Inc + 1947 Camino Vida Roble + Suite 109 + Carlsbad CA 92008 + UNITED STATES + +00-14-9A (hex) Motorola Mobile Devices Business +00149A (base 16) Motorola Mobile Devices Business + 600 N Us Hwy 45 + Rm MW113 + Libertyville IL 60048 + UNITED STATES + +00-14-9B (hex) Nokota Communications, LLC +00149B (base 16) Nokota Communications, LLC + 200 Galleria Parkway + Suite 1820 + Atlanta Georgia 30339 + UNITED STATES + +00-14-9C (hex) HF Company +00149C (base 16) HF Company + Node Park Touraine + BP1 Tauxigny 37310 + FRANCE + +00-14-9D (hex) Sound ID Inc. +00149D (base 16) Sound ID Inc. + 3430 West Bayshore Road + Palo Alto California 94303 + UNITED STATES + +00-14-9E (hex) UbONE Co., Ltd +00149E (base 16) UbONE Co., Ltd + Shinyoung B.D. 602, SeoHyeon2-Dong + Bundang-Gu + Seongnam-si Gyeongg-do 463-824 + KOREA, REPUBLIC OF + +00-14-9F (hex) System and Chips, Inc. +00149F (base 16) System and Chips, Inc. + 4F,No. 1, Lane 50, NanKang Road, Section 3, + Taipei 115 + TAIWAN, REPUBLIC OF CHINA + +00-14-A0 (hex) Accsense, Inc. +0014A0 (base 16) Accsense, Inc. + 460 Ward Drive + Suite E2 + Santa Barbara California 93111 + UNITED STATES + +00-14-A1 (hex) Synchronous Communication Corp +0014A1 (base 16) Synchronous Communication Corp + 9 floor, No168, Rueiguang Road, Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-14-A2 (hex) Core Micro Systems Inc. +0014A2 (base 16) Core Micro Systems Inc. + Wajun Bldg. 6F, 2-22-2, Koishikawa + Bunkyo-Ku Tokyo 112-0002 + JAPAN + +00-14-A3 (hex) Vitelec BV +0014A3 (base 16) Vitelec BV + kapittelweg 18 + P.O.Box 6543 + Breda NB NL 4827 HG + NETHERLANDS + +00-14-A4 (hex) Hon Hai Precision Ind. Co., Ltd. +0014A4 (base 16) Hon Hai Precision Ind. Co., Ltd. + 5F-1, 5 HSIN-AN ROAD + SCIENCE-BASED INDUSTRIAL PARK + HSINCHU 300 + TAIWAN, REPUBLIC OF CHINA + +00-14-A5 (hex) Gemtek Technology Co., Ltd. +0014A5 (base 16) Gemtek Technology Co., Ltd. + No. 1 Jen Ai Road + Hsinchu Industrial Park + Hukou, Hsinchu 303 + TAIWAN, REPUBLIC OF CHINA + +00-14-A6 (hex) Teranetics, Inc. +0014A6 (base 16) Teranetics, Inc. + 3965 Freedom Circle + Sixth Floor + Santa Clara CA 95054 + UNITED STATES + +00-14-A7 (hex) Nokia Danmark A/S +0014A7 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V 1790V + DENMARK + +00-14-A8 (hex) Cisco Systems +0014A8 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-14-A9 (hex) Cisco Systems +0014A9 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-14-AA (hex) Ashly Audio, Inc. +0014AA (base 16) Ashly Audio, Inc. + 847 Holt Road + Webster NY 14580 + UNITED STATES + +00-14-AB (hex) Senhai Electronic Technology Co., Ltd. +0014AB (base 16) Senhai Electronic Technology Co., Ltd. + Rm.10A. 28/F.SEGPlaza Huaqiangbei Road + Shengzhen Guangdong 518031 + CHINA + +00-14-AC (hex) Bountiful WiFi +0014AC (base 16) Bountiful WiFi + 707 West 700 South + Woods Cross Utah 84087 + UNITED STATES + +00-14-AD (hex) Gassner Wiege- u. Meßtechnik GmbH +0014AD (base 16) Gassner Wiege- u. Meßtechnik GmbH + Robinigstr. 26a + Salzburg A-5020 + AUSTRIA + +00-14-AE (hex) Wizlogics Co., Ltd. +0014AE (base 16) Wizlogics Co., Ltd. + 4th Floor, Brother Bldg., 233-8 + Yongdap-dong, Sungdong-gu + Seoul 133-850 + KOREA, REPUBLIC OF + +00-14-AF (hex) Datasym Inc. +0014AF (base 16) Datasym Inc. + 435 Elgin Street + Brantford Ontario N3S7P5 + CANADA + +00-14-B0 (hex) Naeil Community +0014B0 (base 16) Naeil Community + #506 AceTwin Tower 1, Guro-Dong + Seoul Guro-Gu 152779 + KOREA, REPUBLIC OF + +00-14-B1 (hex) Avitec AB +0014B1 (base 16) Avitec AB + Box 7139 + SUNDBYBERG SE-174 07 + SWEDEN + +00-14-B2 (hex) mCubelogics Corporation +0014B2 (base 16) mCubelogics Corporation + 4F, Unibooks B/D, 514-1, Dogok-Dong, KangNam + Seoul 135-270 + KOREA, REPUBLIC OF + +00-14-B3 (hex) CoreStar International Corp +0014B3 (base 16) CoreStar International Corp + 1044 Sandy Hill Rd + Irwin PA 15642 + UNITED STATES + +00-14-B4 (hex) General Dynamics United Kingdom Ltd +0014B4 (base 16) General Dynamics United Kingdom Ltd + Castleham Road + St Leonards on Sea East Sussex TN38 9NJ + UNITED KINGDOM + +00-14-B5 (hex) PHYSIOMETRIX,INC +0014B5 (base 16) PHYSIOMETRIX,INC + 101 BILLERICA AVE #5 + N. BILLERICA MA 01862 + UNITED STATES + +00-14-B6 (hex) Enswer Technology Inc. +0014B6 (base 16) Enswer Technology Inc. + 1F No.70 Sec.2 Chung Shun St. + Taipei 116 + TAIWAN, REPUBLIC OF CHINA + +00-14-B7 (hex) AR Infotek Inc. +0014B7 (base 16) AR Infotek Inc. + 9F, No.185, GangQian Road + NeiHu Technology Park, + Taipei 11494 + TAIWAN, REPUBLIC OF CHINA + +00-14-B8 (hex) Hill-Rom +0014B8 (base 16) Hill-Rom + 1125 E. Pearl Street + Batesville IN 47006 + UNITED STATES + +00-14-B9 (hex) MSTAR SEMICONDUCTOR +0014B9 (base 16) MSTAR SEMICONDUCTOR + 11-13 rue René Jacques + Issy les Moulineaux 92130 + FRANCE + +00-14-BA (hex) Carvers SA de CV +0014BA (base 16) Carvers SA de CV + Alvarez del Castillo 1550 + Chapultepec Country + Guadalajara Jalisco 44620 + MEXICO + +00-14-BB (hex) Open Interface North America +0014BB (base 16) Open Interface North America + 506 2nd Avenue, Suite 420 + Seattle WA 98104 + UNITED STATES + +00-14-BC (hex) SYNECTIC TELECOM EXPORTS PVT. LTD. +0014BC (base 16) SYNECTIC TELECOM EXPORTS PVT. LTD. + 196, 1st Main, 3rd Stage, 4th Block + Basaveshwar Nagar + BANGALORE 560079 + INDIA + +00-14-BD (hex) incNETWORKS, Inc +0014BD (base 16) incNETWORKS, Inc + 198 Brighton Ave + Long Branch NJ 07740 + UNITED STATES + +00-14-BE (hex) Wink communication technology CO.LTD +0014BE (base 16) Wink communication technology CO.LTD + Huijiang Ind Blding Dashi Town + Panyu District + Guang zhou Guang dong 511430 + CHINA + +00-14-BF (hex) Cisco-Linksys LLC +0014BF (base 16) Cisco-Linksys LLC + 121 Theory Dr. + Irvine CA 92612 + UNITED STATES + +00-14-C0 (hex) Symstream Technology Group Ltd +0014C0 (base 16) Symstream Technology Group Ltd + Level 1, 3 Chester Street + Oakleigh Victoria 3166 + AUSTRALIA + +00-14-C1 (hex) U.S. Robotics Corporation +0014C1 (base 16) U.S. Robotics Corporation + 935 National Parkway + Schaumburg IL 60173-5157 + UNITED STATES + +00-14-C2 (hex) Hewlett Packard +0014C2 (base 16) Hewlett Packard + 20555 Tomball Parkway + MS070405 + Houston TX 77070 + UNITED STATES + +00-14-C3 (hex) Seagate Technology LLC +0014C3 (base 16) Seagate Technology LLC + 1280 Disc Drive + Shakopee MN 55379 + UNITED STATES + +00-14-C4 (hex) Vitelcom Mobile Technology +0014C4 (base 16) Vitelcom Mobile Technology + PTA, Avda, Juan López Peñalver, nº 7 + 29590, Campanillas + Campanillas. Malaga. + SPAIN + +00-14-C5 (hex) Alive Technologies Pty Ltd +0014C5 (base 16) Alive Technologies Pty Ltd + 11 Technology Drive + Arundel Queensland 4214 + AUSTRALIA + +00-14-C6 (hex) Quixant Ltd +0014C6 (base 16) Quixant Ltd + County House + 221-241 Beckenham Rd + Beckenham Kent BR3 4UF + UNITED KINGDOM + +00-14-C7 (hex) Nortel +0014C7 (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-14-C8 (hex) Contemporary Research Corp +0014C8 (base 16) Contemporary Research Corp + 17630 Davenport Rd + STE 113 + Dallas TX 75252 + UNITED STATES + +00-14-C9 (hex) Brocade Communications Systems, Inc. +0014C9 (base 16) Brocade Communications Systems, Inc. + 1745 Technology Dr. + San Jose CA 95110 + UNITED STATES + +00-14-CA (hex) Key Radio Systems Limited +0014CA (base 16) Key Radio Systems Limited + Venus House + Calleva Park + Aldermaston Berkshire RG7 8DA + UNITED KINGDOM + +00-14-CB (hex) LifeSync Corporation +0014CB (base 16) LifeSync Corporation + 1 E Broward Boulevard, Suite 1701 + Fort Lauderdale Florida 33301 + UNITED STATES + +00-14-CC (hex) Zetec, Inc. +0014CC (base 16) Zetec, Inc. + 8226 Bracken Place SE + Snoqualmie WA 98065 + UNITED STATES + +00-14-CD (hex) DigitalZone Co., Ltd. +0014CD (base 16) DigitalZone Co., Ltd. + No. 1001 E&C VentureDreamTower2 + 197-10 Guro-dong, Guro-gu + Seoul 152-848 + KOREA, REPUBLIC OF + +00-14-CE (hex) NF CORPORATION +0014CE (base 16) NF CORPORATION + 6-3-20, Tsunashima-higashi + Kohoku-ku + Yokohama Kanagawa 223-8508 + JAPAN + +00-14-CF (hex) Nextlink.to A/S +0014CF (base 16) Nextlink.to A/S + Sandtoften 10 + Gentofte 2820 + DENMARK + +00-14-D0 (hex) BTI Photonics +0014D0 (base 16) BTI Photonics + 2191 Thurston Drive + Ottawa Ontario K1G6C9 + CANADA + +00-14-D1 (hex) TRENDware International, Inc. +0014D1 (base 16) TRENDware International, Inc. + 20675 Manhattan Place + Torrance CA 90501 + UNITED STATES + +00-14-D2 (hex) KYUKI CORPORATION +0014D2 (base 16) KYUKI CORPORATION + 4-19-18 SHIMIZU,MINAMI-KU + FUKUOKA 815-0031 + JAPAN + +00-14-D3 (hex) SEPSA +0014D3 (base 16) SEPSA + calle Albatros, 7 y 9 + Pol. Ind. La Estación + PINTO Madrid 28320 + SPAIN + +00-14-D4 (hex) K Technology Corporation +0014D4 (base 16) K Technology Corporation + 325 Ganbara + Kami-machi + Kami-gun Miyagi-ken 981-4263 + JAPAN + +00-14-D5 (hex) Datang Telecom Technology CO. , LCD,Optical Communication Br +0014D5 (base 16) Datang Telecom Technology CO. , LCD,Optical Communication Br + 3rd Floor,Building 8,Hi-Tech Incubation Park, + Nanyanxian,Tianfu Ave,chengdu Hi-Tech Zone, + ChengDu SiChuan 610041 + CHINA + +00-14-D6 (hex) Jeongmin Electronics Co.,Ltd. +0014D6 (base 16) Jeongmin Electronics Co.,Ltd. + #710, Byuksan Digital Valley 2, + Kasan-Dong, Keumcheon-Gu, + Seoul 153 783 + KOREA, REPUBLIC OF + +00-14-D7 (hex) Datastore Technology Corp +0014D7 (base 16) Datastore Technology Corp + 9F, NO.10, SEC.1, Chung Hsing RD., Wu-Ku + Taipei Hsien, 248 + TAIWAN, REPUBLIC OF CHINA + +00-14-D8 (hex) bio-logic SA +0014D8 (base 16) bio-logic SA + 1, rue de l'Europe + CLAIX 38640 + FRANCE + +00-14-D9 (hex) IP Fabrics, Inc. +0014D9 (base 16) IP Fabrics, Inc. + 14964 NW Greenbrier Parkway + Beaverton Oregon 97006 + UNITED STATES + +00-14-DA (hex) Huntleigh Healthcare +0014DA (base 16) Huntleigh Healthcare + Huntleigh Healthcare - Diagnostic Products Division + 35 Portmanmoor Road + Cardiff CF24 5HN + UNITED KINGDOM + +00-14-DB (hex) Elma Trenew Electronic GmbH +0014DB (base 16) Elma Trenew Electronic GmbH + Stuttgarter Strasse 11 + Pforzheim BW 75179 + GERMANY + +00-14-DC (hex) Communication System Design & Manufacturing (CSDM) +0014DC (base 16) Communication System Design & Manufacturing (CSDM) + Postbus 181 + Bussum NH 1400 AD + NETHERLANDS + +00-14-DD (hex) Covergence Inc. +0014DD (base 16) Covergence Inc. + One Clock Tower Place, Suite 200 + Maynard MA 01754 + UNITED STATES + +00-14-DE (hex) Sage Instruments Inc. +0014DE (base 16) Sage Instruments Inc. + 240 Airport Blvd. + Freedom CA 95019 + UNITED STATES + +00-14-DF (hex) HI-P Tech Corporation +0014DF (base 16) HI-P Tech Corporation + 1-27-23 Higashitokorozawa + Tokorozawa Saitama 359-0021 + JAPAN + +00-14-E0 (hex) LET'S Corporation +0014E0 (base 16) LET'S Corporation + Bancho Bldg. 4F, 2-18-20 Marunouchi, Naka + Nagoya Aichi 460-0002 + JAPAN + +00-14-E1 (hex) Data Display AG +0014E1 (base 16) Data Display AG + Industriestraße 1 + Germering Bayern 82110 + GERMANY + +00-14-E2 (hex) datacom systems inc. +0014E2 (base 16) datacom systems inc. + 9 adler drive + east syracuse n.y. 13057 + UNITED STATES + +00-14-E3 (hex) mm-lab GmbH +0014E3 (base 16) mm-lab GmbH + Stammheimer Strasse 10 + D-70806 + Kornwestheim + GERMANY + +00-14-E4 (hex) Integral Technologies +0014E4 (base 16) Integral Technologies + 9855 Crosspoint Blvd + Ste 126 + Indianapolis IN 46256 + UNITED STATES + +00-14-E5 (hex) Alticast +0014E5 (base 16) Alticast + 16th floor, Nara Bldg, 1328-3 + Seocho-dong, Seocho-gu, + Seoul 137-070 + KOREA, REPUBLIC OF + +00-14-E6 (hex) AIM Infrarotmodule GmbH +0014E6 (base 16) AIM Infrarotmodule GmbH + Soeflingerstr. 100 + Ulm BW 89077 + GERMANY + +00-14-E7 (hex) Stolinx,. Inc +0014E7 (base 16) Stolinx,. Inc + 3F Ohchang Bldg., 61 Yangjae-dong + Seocho-gu + Seoul 137-889 + KOREA, REPUBLIC OF + +00-14-E8 (hex) Motorola CHS +0014E8 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-14-E9 (hex) Nortech International +0014E9 (base 16) Nortech International + 32A Wiganthorpe Road + Willowton Hub + Pietermartizburg KwaZulu Natal 3201 + SOUTH AFRICA + +00-14-EA (hex) S Digm Inc. (Safe Paradigm Inc.) +0014EA (base 16) S Digm Inc. (Safe Paradigm Inc.) + 5F, Shin-an Bldg. 89-8, + Moonjung-Dong + Songpa-Gu Seoul 138-201 + KOREA, REPUBLIC OF + +00-14-EB (hex) AwarePoint Corporation +0014EB (base 16) AwarePoint Corporation + 8899 University Center Lane + San Diego CA 92122 + UNITED STATES + +00-14-EC (hex) Acro Telecom +0014EC (base 16) Acro Telecom + 714 Woolim e-Biz Center 170-5 Guro-dong + Guro-Gu Seoul 152-769 + KOREA, REPUBLIC OF + +00-14-ED (hex) Airak, Inc. +0014ED (base 16) Airak, Inc. + 21641 Beaumeade Circle + Suite 300 + Ashburn Virginia 20147 + UNITED STATES + +00-14-EE (hex) Western Digital Technologies, Inc. +0014EE (base 16) Western Digital Technologies, Inc. + 20511 Lake Forest Dr. + Lake Forest Ca 92630 + UNITED STATES + +00-14-EF (hex) TZero Technologies, Inc. +0014EF (base 16) TZero Technologies, Inc. + 455 W. Maude Avenue + Sunnyvale CA 94085 + UNITED STATES + +00-14-F0 (hex) Business Security OL AB +0014F0 (base 16) Business Security OL AB + Box 110 65 + Stora Raby Byavag 88 + Lund 220 11 + SWEDEN + +00-14-F1 (hex) Cisco Systems +0014F1 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-14-F2 (hex) Cisco Systems +0014F2 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-14-F3 (hex) ViXS Systems Inc +0014F3 (base 16) ViXS Systems Inc + 2235 Sheppard Ave East + Suite1705 + TORONTO ONTARIO M2J 5B5 + CANADA + +00-14-F4 (hex) DekTec Digital Video B.V. +0014F4 (base 16) DekTec Digital Video B.V. + Van Riebeeckweg 43A + Hilversum NH 1212AE + NETHERLANDS + +00-14-F5 (hex) OSI Security Devices +0014F5 (base 16) OSI Security Devices + 1580 Jayken Way + Chula Vista California 91911 + UNITED STATES + +00-14-F6 (hex) Juniper Networks, Inc. +0014F6 (base 16) Juniper Networks, Inc. + 1194 N. Mathilda Avenue + Sunnyvale CA 94089 + UNITED STATES + +00-14-F7 (hex) Crevis +0014F7 (base 16) Crevis + D-11F, Digital Empire Bldg., 980-3 + Youngtong + Suwon + KOREA, REPUBLIC OF + +00-14-F8 (hex) Scientific Atlanta +0014F8 (base 16) Scientific Atlanta + 5030 Sugarloaf Parkway + MS 5.2.428 + Lawrenceville Ga 30042 + UNITED STATES + +00-14-F9 (hex) Vantage Controls +0014F9 (base 16) Vantage Controls + 1061 South 800 East + Orem UT 84097 + UNITED STATES + +00-14-FA (hex) AsGa S.A. +0014FA (base 16) AsGa S.A. + Rod Roberto Moreira Km 04 + Paulinia Sao Paulo 13140-000 + BRAZIL + +00-14-FB (hex) Technical Solutions Inc. +0014FB (base 16) Technical Solutions Inc. + 1-7157 Honeyman Street + Delta BC V4G 1E2 + CANADA + +00-14-FC (hex) Extandon, Inc. +0014FC (base 16) Extandon, Inc. + 39350 Civic Center Drive Ste. 160 + Fremont CA 94538 + UNITED STATES + +00-14-FD (hex) Thecus Technology Corp. +0014FD (base 16) Thecus Technology Corp. + 15F.,No. 79,Sec. 1,Sintai 5th RD., + Sijhih City Taipei County 221 + TAIWAN, REPUBLIC OF CHINA + +00-14-FE (hex) Artech Electronics +0014FE (base 16) Artech Electronics + #301, Yangjae Bldg., 276-2 + Yangjae-Dong, Seocho-Ku + Seoul 137-895 + KOREA, REPUBLIC OF + +00-14-FF (hex) Precise Automation, Inc. +0014FF (base 16) Precise Automation, Inc. + 1402 Alexandra Blvd + Crystal Lake IL 60014 + UNITED STATES + +00-15-00 (hex) Intel Corporate +001500 (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-15-01 (hex) LexBox +001501 (base 16) LexBox + 3, avenue Didier Daurat + TOULOUSE 31400 + FRANCE + +00-15-02 (hex) BETA tech +001502 (base 16) BETA tech + 15 rue d'apollo + L'UNION 31240 + FRANCE + +00-15-03 (hex) PROFIcomms s.r.o. +001503 (base 16) PROFIcomms s.r.o. + Turgenevova 5 + Brno EU/Europe 618 00 + CZECH REPUBLIC + +00-15-04 (hex) GAME PLUS CO., LTD. +001504 (base 16) GAME PLUS CO., LTD. + 164-57, Yeonghwa-dong, Jangan-gu + Suwon Gyeonggi-do 440-818 + KOREA, REPUBLIC OF + +00-15-05 (hex) Actiontec Electronics, Inc +001505 (base 16) Actiontec Electronics, Inc + 760 North Mary Ave + Sunnyvale CA 94086 + UNITED STATES + +00-15-06 (hex) Neo Photonics +001506 (base 16) Neo Photonics + 910 E. California St. + Sunnyvale CA 94085 + UNITED STATES + +00-15-07 (hex) Renaissance Learning Inc +001507 (base 16) Renaissance Learning Inc + 2911 Peach Street + PO Box 8036 + Wisconsin Rapids Wisconsin 54494 + UNITED STATES + +00-15-08 (hex) Global Target Enterprise Inc +001508 (base 16) Global Target Enterprise Inc + 5F, No. 186, Sec. 2, Chung-Hsing Rd., + Hsin Tien, Taipei county 231 + TAIWAN, REPUBLIC OF CHINA + +00-15-09 (hex) Plus Technology Co., Ltd +001509 (base 16) Plus Technology Co., Ltd + Office #205, Gayang Techno-town, + Gayang 3- dong, Gangseo-ku + Seoul 157-810 + KOREA, REPUBLIC OF + +00-15-0A (hex) Sonoa Systems, Inc +00150A (base 16) Sonoa Systems, Inc + 3900 Freedom Circle + Santa Clara CA 95054 + UNITED STATES + +00-15-0B (hex) SAGE INFOTECH LTD. +00150B (base 16) SAGE INFOTECH LTD. + 3F, No30, INDUSTRY E. 9TH RD.,SCIENCE-BASED + INDUSTRIAL PARK + HSIN-CHU TAIWAN 300 + TAIWAN, REPUBLIC OF CHINA + +00-15-0C (hex) AVM GmbH +00150C (base 16) AVM GmbH + Alt-Moabit 95 + Berlin 10559 + GERMANY + +00-15-0D (hex) Hoana Medical, Inc. +00150D (base 16) Hoana Medical, Inc. + 828 Fort Street Mall + Suite 620 + Honolulu HI 96813 + UNITED STATES + +00-15-0E (hex) OPENBRAIN TECHNOLOGIES CO., LTD. +00150E (base 16) OPENBRAIN TECHNOLOGIES CO., LTD. + #804,ANYANG K-CENTER,1591-9 , BURIM-DONG,DONGAN-GU, + ANYANG KYUNGGI-DO 431-815 + KOREA, REPUBLIC OF + +00-15-0F (hex) mingjong +00150F (base 16) mingjong + 8F,NO.1,LANE 16,SZE CHUAN ROAD,SEC.2,PANCHIAO CITY. + TAIPEI 220 + TAIWAN, REPUBLIC OF CHINA + +00-15-10 (hex) Techsphere Co., Ltd +001510 (base 16) Techsphere Co., Ltd + 4F, Wonil Bldg., 980-54, Bangbae-dong, SeoCho-gu + Seoul 137-060 + KOREA, REPUBLIC OF + +00-15-11 (hex) Data Center Systems +001511 (base 16) Data Center Systems + 14802 Venture Drive + Dallas TX 75234 + UNITED STATES + +00-15-12 (hex) Zurich University of Applied Sciences +001512 (base 16) Zurich University of Applied Sciences + Technikumstrasse 9 + Winterthur ZH CH-8401 + SWITZERLAND + +00-15-13 (hex) EFS sas +001513 (base 16) EFS sas + BP 34 + MILLERY F-69390 + FRANCE + +00-15-14 (hex) Hu Zhou NAVA Networks&Electronics Ltd. +001514 (base 16) Hu Zhou NAVA Networks&Electronics Ltd. + 3/F,No.328-4,Guang Yuan Rd. + Hu Zhou Zhe Jiang 313000 + CHINA + +00-15-15 (hex) Leipold+Co.GmbH +001515 (base 16) Leipold+Co.GmbH + Kreuzwiese 12 + Rockenhausen RLP D-67806 + GERMANY + +00-15-16 (hex) URIEL SYSTEMS INC. +001516 (base 16) URIEL SYSTEMS INC. + #204 Byucksan Digitalvalley 1st, 212-16, Guro-dong, Guro-gu + Seoul 152-050 + KOREA, REPUBLIC OF + +00-15-17 (hex) Intel Corporate +001517 (base 16) Intel Corporate + Lot 8, Jln Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-15-18 (hex) Shenzhen 10MOONS Technology Development CO.,Ltd +001518 (base 16) Shenzhen 10MOONS Technology Development CO.,Ltd + Add:3F,Huaxing building, QiaoXiang road, + shenzhen guangdong 518053 + CHINA + +00-15-19 (hex) StoreAge Networking Technologies +001519 (base 16) StoreAge Networking Technologies + 63 Bar-Yehuda st. + Nesher 36651 + ISRAEL + +00-15-1A (hex) Hunter Engineering Company +00151A (base 16) Hunter Engineering Company + 11250 Hunter Drive + Bridgeton Missouri 63044 + UNITED STATES + +00-15-1B (hex) Isilon Systems Inc. +00151B (base 16) Isilon Systems Inc. + 3101 Western Avenue + Seattle WA 98121 + UNITED STATES + +00-15-1C (hex) LENECO +00151C (base 16) LENECO + 6th.,Dong Moon Good Morning Tower + 1323 Beakseok-Dong Ilsan-Gu + Kyeong Ki-Do GoYang-Si 411-817 + KOREA, REPUBLIC OF + +00-15-1D (hex) M2I CORPORATION +00151D (base 16) M2I CORPORATION + Kyonggi Venture Anyang technical center, 13th Floor, 572-5, Anyang 8-Dong, Manan-Gu + Anyang-Shi Kyonggi-Do 430-731 + KOREA, REPUBLIC OF + +00-15-1E (hex) Ethernet Powerlink Standardization Group (EPSG) +00151E (base 16) Ethernet Powerlink Standardization Group (EPSG) + c/o Zurich University of Applied Sciences + Technikumstrasse 9 + CH-8401 Winterthur + SWITZERLAND + +00-15-1F (hex) Multivision Intelligent Surveillance (Hong Kong) Ltd +00151F (base 16) Multivision Intelligent Surveillance (Hong Kong) Ltd + 26/F, Aitken Vanson Centre, + 61 Hoi Yuen Road, Kwun Tong, Kowloon, + HONG KONG + +00-15-20 (hex) Radiocrafts AS +001520 (base 16) Radiocrafts AS + Sandakerveien 64 + Oslo 0484 + NORWAY + +00-15-21 (hex) Horoquartz +001521 (base 16) Horoquartz + BP 251 + FONTENAY LE COMTE VENDEE 85205 + FRANCE + +00-15-22 (hex) Dea Security +001522 (base 16) Dea Security + Via Magenta 9 + Massa MS 54100 + ITALY + +00-15-23 (hex) Meteor Communications Corporation +001523 (base 16) Meteor Communications Corporation + 22614 66th Avenue South + Kent WA 98032 + UNITED STATES + +00-15-24 (hex) Numatics, Inc. +001524 (base 16) Numatics, Inc. + 1450 North Milford Road + Highland Michigan 48357 + UNITED STATES + +00-15-25 (hex) PTI Integrated Systems, Inc. +001525 (base 16) PTI Integrated Systems, Inc. + 9160 E. Bahia Dr. + Scottsdale AZ 85260 + UNITED STATES + +00-15-26 (hex) Remote Technologies Inc +001526 (base 16) Remote Technologies Inc + 7651 Anagram Drive + Eden Prairie MN 55344 + UNITED STATES + +00-15-27 (hex) Balboa Instruments +001527 (base 16) Balboa Instruments + 1382 Bell Ave + Tustin CA 92780 + UNITED STATES + +00-15-28 (hex) Beacon Medical Products LLC d.b.a. BeaconMedaes +001528 (base 16) Beacon Medical Products LLC d.b.a. BeaconMedaes + 14408 W 105TH ST + LENEXA KS 66215 + UNITED STATES + +00-15-29 (hex) N3 Corporation +001529 (base 16) N3 Corporation + #402 GwangMyeong Techno Town + 626-3 Clulsan 1-Dong, GwangMyeong-City + GyeongGi-Do 423-031 + KOREA, REPUBLIC OF + +00-15-2A (hex) Nokia GmbH +00152A (base 16) Nokia GmbH + Rensingstr. 15 + Bochum NRW 44807 + GERMANY + +00-15-2B (hex) Cisco Systems +00152B (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-15-2C (hex) Cisco Systems +00152C (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-15-2D (hex) TenX Networks, LLC +00152D (base 16) TenX Networks, LLC + 4855 Wiley Post Way + Salt Lake City UT 84116 + UNITED STATES + +00-15-2E (hex) PacketHop, Inc. +00152E (base 16) PacketHop, Inc. + 1301 Shoreway Road + Suite 200 + Belmont California 94002 + UNITED STATES + +00-15-2F (hex) Motorola CHS +00152F (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-15-30 (hex) Bus-Tech, Inc. +001530 (base 16) Bus-Tech, Inc. + 129 Middlesex Turnpike + Burlington Ma 01803 + UNITED STATES + +00-15-31 (hex) KOCOM +001531 (base 16) KOCOM + 5F, KOCOM Bldg., 260-7 + Yumchang-Dong, Kangseo-Gu + SEOUL 157-040 + KOREA, REPUBLIC OF + +00-15-32 (hex) Consumer Technologies Group, LLC +001532 (base 16) Consumer Technologies Group, LLC + 3500 Jordan Oaks Dr. + Efland NC 27243 + UNITED STATES + +00-15-33 (hex) NADAM.CO.,LTD +001533 (base 16) NADAM.CO.,LTD + #91-3 Wangrim-Li + Bongdam-Eup + Hwaseong Gyeonggi 445-895 + KOREA, REPUBLIC OF + +00-15-34 (hex) A BELTRÓNICA, Companhia de Comunicações, Lda +001534 (base 16) A BELTRÓNICA, Companhia de Comunicações, Lda + R. Dr. José Baptista de Sousa, 27 + Lisbon 1549-002 Lis + PORTUGAL + +00-15-35 (hex) OTE Spa +001535 (base 16) OTE Spa + via Barsanti 8 + Florence FI 50127 + ITALY + +00-15-36 (hex) Powertech co.,Ltd +001536 (base 16) Powertech co.,Ltd + #705, dongyoung Venturestel, 199-32 + Anyang7-dong, Manan-gu + Anyang City Kyoungki-do 430-010 + KOREA, REPUBLIC OF + +00-15-37 (hex) Ventus Networks +001537 (base 16) Ventus Networks + 800 Connecticut Ave + 1st floor west + Norwalk CT 06854 + UNITED STATES + +00-15-38 (hex) RFID, Inc. +001538 (base 16) RFID, Inc. + 14100 East Jewell Ave. + Suite 12 + Aurora CO 80012 + UNITED STATES + +00-15-39 (hex) Technodrive SRL +001539 (base 16) Technodrive SRL + Via Leonardo da Vinci 162 + Trezzano sul Naviglio Milano 20090 + ITALY + +00-15-3A (hex) Shenzhen Syscan Technology Co.,Ltd. +00153A (base 16) Shenzhen Syscan Technology Co.,Ltd. + 7F floor,First World Plaza + Hongli West Street, Futian District + Shenzhen Guangdong 518034 + CHINA + +00-15-3B (hex) EMH Elektrizitätszähler GmbH & CoKG +00153B (base 16) EMH Elektrizitätszähler GmbH & CoKG + Suedring 5 + Wittenburg Mecklenburg-Vorpommern 19243 + GERMANY + +00-15-3C (hex) Kprotech Co., Ltd. +00153C (base 16) Kprotech Co., Ltd. + C-406, Dong-il Technotown 889-1, + Gwan-yang Dong, Dong-an Gu, + An-yang Kyong-gi 431-716 + KOREA, REPUBLIC OF + +00-15-3D (hex) ELIM PRODUCT CO. +00153D (base 16) ELIM PRODUCT CO. + 602-2 GAYANG TECHNO TOWN, GAYANG, 3-DONG + KANGSEO-GU SEOUL KOREA + SEOUL 157-793 + KOREA, REPUBLIC OF + +00-15-3E (hex) Q-Matic Sweden AB +00153E (base 16) Q-Matic Sweden AB + Neongatan 8 + Molndal 431 53 + SWEDEN + +00-15-3F (hex) Alcatel Alenia Space Italia +00153F (base 16) Alcatel Alenia Space Italia + Strada Padana Superiore 290 + Vimodrone MI 20090 + ITALY + +00-15-40 (hex) Nortel +001540 (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-15-41 (hex) StrataLight Communications, Inc. +001541 (base 16) StrataLight Communications, Inc. + 2105 S. Bascom Avenue + Suite 300 + Campbell CA 95008 + UNITED STATES + +00-15-42 (hex) MICROHARD S.R.L. +001542 (base 16) MICROHARD S.R.L. + Via Primo Maggio 36 + San Vittore Olona Milano 20028 + ITALY + +00-15-43 (hex) Aberdeen Test Center +001543 (base 16) Aberdeen Test Center + 400 Colleran Road + Bldg. 350 + Aberdeen Proving Grounds MD 21005-5059 + UNITED STATES + +00-15-44 (hex) coM.s.a.t. AG +001544 (base 16) coM.s.a.t. AG + Besselstr. 3 + Mannheim D-68219 + GERMANY + +00-15-45 (hex) SEECODE Co., Ltd. +001545 (base 16) SEECODE Co., Ltd. + 4th Floor, Amin Bldg., 110-1, Yangjaedong, Seochogu + Seoul 137-891 + KOREA, REPUBLIC OF + +00-15-46 (hex) ITG Worldwide Sdn Bhd +001546 (base 16) ITG Worldwide Sdn Bhd + 2, Jalan AstakaU8/83 + Seksyen U8, Bukit Jelutong + Shah Alam Selangor Darul Ehsan 40150 + MALAYSIA + +00-15-47 (hex) AiZen Solutions Inc. +001547 (base 16) AiZen Solutions Inc. + 10F-1, No.29, Puding Rd. + Hsinchu Hsinchu County 300 + TAIWAN, REPUBLIC OF CHINA + +00-15-48 (hex) CUBE TECHNOLOGIES +001548 (base 16) CUBE TECHNOLOGIES + 10, rue des Rosiéristes + CHAMPAGNE AU MONT D'OR FRANCE 69410 + FRANCE + +00-15-49 (hex) Dixtal Biomedica Ind. Com. Ltda +001549 (base 16) Dixtal Biomedica Ind. Com. Ltda + R. Eng. Francisco Pitta Brito, 703 + Sao Paulo SP 04753-080 + BRAZIL + +00-15-4A (hex) WANSHIH ELECTRONIC CO., LTD +00154A (base 16) WANSHIH ELECTRONIC CO., LTD + 3F 72, WU KONG 6th RD., + WU KU INDUSTRIAL DISTRICT, + TAIPEI HSIEN TAIWAN 248 + TAIWAN, REPUBLIC OF CHINA + +00-15-4B (hex) Wonde Proud Technology Co., Ltd +00154B (base 16) Wonde Proud Technology Co., Ltd + 21F., No.100, Sec.1, Shintai 5th Rd + Sijhih city Taipei County 221 + TAIWAN, REPUBLIC OF CHINA + +00-15-4C (hex) Saunders Electronics +00154C (base 16) Saunders Electronics + 82 Industrial Park Rd + Saco ME 04072 + UNITED STATES + +00-15-4D (hex) Netronome Systems, Inc. +00154D (base 16) Netronome Systems, Inc. + 144 Emeryville Drive + Suite 230 + Cranberry Twp. PA 16066 + UNITED STATES + +00-15-4E (hex) Hirschmann Automation and Control GmbH +00154E (base 16) Hirschmann Automation and Control GmbH + Stuttgarter Str. 45-51 + Neckartenzlingen Baden-Württemberg 72654 + GERMANY + +00-15-4F (hex) one RF Technology +00154F (base 16) one RF Technology + 1360 Route des Dolines + Bat B4 Les Cardoulines + Valbonne Sophia-Antipolis PACA 06560 + FRANCE + +00-15-50 (hex) Nits Technology Inc +001550 (base 16) Nits Technology Inc + 2FL. No. 8 Alley 16, Lane 235, Bauchiau Rd., + Shindian City Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-15-51 (hex) RadioPulse Inc. +001551 (base 16) RadioPulse Inc. + 2nd fl. Hans B/D, 111-55 + Seongnae-dong, Gangdong-gu + Seoul 134-883 + KOREA, REPUBLIC OF + +00-15-52 (hex) Wi-Gear Inc. +001552 (base 16) Wi-Gear Inc. + 340 Church Street + Suite 10 + San Francisco CA 94114 + UNITED STATES + +00-15-53 (hex) Cytyc Corporation +001553 (base 16) Cytyc Corporation + 250 Campus Dive + Marlborough MA 01752 + UNITED STATES + +00-15-54 (hex) Atalum Wireless S.A. +001554 (base 16) Atalum Wireless S.A. + C/ Orellana 5, 1º I + Madrid 28004 + SPAIN + +00-15-55 (hex) DFM GmbH +001555 (base 16) DFM GmbH + Lahrer Strasse 6 + Lahr Baden-Wuerttemberg 77933 + GERMANY + +00-15-56 (hex) SAGEM COMMUNICATION +001556 (base 16) SAGEM COMMUNICATION + Le Ponnant de Paris + 27 Rue Leblanc + CEDEX Paris 75512 + FRANCE + +00-15-57 (hex) Olivetti +001557 (base 16) Olivetti + Via Jervis 77 + Ivrea Torino 10015 + ITALY + +00-15-58 (hex) FOXCONN +001558 (base 16) FOXCONN + No.2,2nd DongHuan Road,10th YouSong + Industrial District,LongHua Street,Bao'an, + ShenZhen GuangDong 518109 + CHINA + +00-15-59 (hex) Securaplane Technologies, Inc. +001559 (base 16) Securaplane Technologies, Inc. + 10800 N. Mavinee Dr. + Tucson AZ 85737 + UNITED STATES + +00-15-5A (hex) DAINIPPON PHARMACEUTICAL CO., LTD. +00155A (base 16) DAINIPPON PHARMACEUTICAL CO., LTD. + 2-6-8, DOSHOMACHI, CHUO-KU + OSAKA CITY OSAKA PREF. 541-8524 + JAPAN + +00-15-5B (hex) Sampo Corporation +00155B (base 16) Sampo Corporation + 216 Chung Shan Road, + Sec. 1, Panchiao City + Taipei Hsien 220 + TAIWAN, REPUBLIC OF CHINA + +00-15-5C (hex) Dresser Wayne +00155C (base 16) Dresser Wayne + 3814 Jarrett Way + Austin Texas 78728 + UNITED STATES + +00-15-5D (hex) Microsoft Corporation +00155D (base 16) Microsoft Corporation + One Microsoft Way + Redmond WA 98052-8300 + UNITED STATES + +00-15-5E (hex) Morgan Stanley +00155E (base 16) Morgan Stanley + 750 7th Avenue + New York NY 10019 + UNITED STATES + +00-15-5F (hex) GreenPeak +00155F (base 16) GreenPeak + Lindestraat 19 + Zele 9240 + BELGIUM + +00-15-60 (hex) Hewlett Packard +001560 (base 16) Hewlett Packard + 20555 State Highway 249 South + MS070405 + Houston TX 77070 + UNITED STATES + +00-15-61 (hex) JJPlus Corporation +001561 (base 16) JJPlus Corporation + 678 Massachusetts Ave + Suite 503 + Cambridge MA 02139 + UNITED STATES + +00-15-62 (hex) Cisco Systems +001562 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-15-63 (hex) Cisco Systems +001563 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-15-64 (hex) BEHRINGER Spezielle Studiotechnik GmbH +001564 (base 16) BEHRINGER Spezielle Studiotechnik GmbH + Hanns-Martin-Schleyer-Str. 36-38 + Willich + GERMANY + +00-15-65 (hex) XIAMEN YEALINK NETWORK TECHNOLOGY CO.,LTD +001565 (base 16) XIAMEN YEALINK NETWORK TECHNOLOGY CO.,LTD + 7F Hualian Electronic BLDG.580 Jiahe Road,Xiamen China + Xiamen Fujian 361006 + CHINA + +00-15-66 (hex) A-First Technology Co., Ltd. +001566 (base 16) A-First Technology Co., Ltd. + 5F, No. 111-2, Shin-Teh Rd., + San-Chung City Taipei Shien 241 + TAIWAN, REPUBLIC OF CHINA + +00-15-67 (hex) RADWIN Inc. +001567 (base 16) RADWIN Inc. + 900 Corporate Drive + Mahwah NJ 07430 + UNITED STATES + +00-15-68 (hex) Dilithium Networks +001568 (base 16) Dilithium Networks + 5401 Old Redwood Hwy + Petaluma CA 94954 + UNITED STATES + +00-15-69 (hex) PECO II, Inc. +001569 (base 16) PECO II, Inc. + 7060 Huntley Road + Columbus OH 43229 + UNITED STATES + +00-15-6A (hex) DG2L Technologies Pvt. Ltd. +00156A (base 16) DG2L Technologies Pvt. Ltd. + AML Center 1, Gnd. Floor, 8 Mahal Indl. Est. + Off. Mahakali Caves Road, Andheri E + Mumbai Maharashtra 400093 + INDIA + +00-15-6B (hex) Perfisans Networks Corp. +00156B (base 16) Perfisans Networks Corp. + 4118 14th Avenue + Unit 4 + Markham Ontario L3R 0J3 + CANADA + +00-15-6C (hex) SANE SYSTEM CO., LTD +00156C (base 16) SANE SYSTEM CO., LTD + Pika-Building 4F #894 Hogye-Dong Dongan-GU + Anyang-si Kyunggi-do 431-836 + KOREA, REPUBLIC OF + +00-15-6D (hex) Ubiquiti Networks Inc. +00156D (base 16) Ubiquiti Networks Inc. + 495 Montague Expwy. + Milpitas CA 95035 + UNITED STATES + +00-15-6E (hex) A. W. Communication Systems Ltd +00156E (base 16) A. W. Communication Systems Ltd + Crook Barn + The Crook, Roweltown + Carlisle Cumbria CA6 6LH + UNITED KINGDOM + +00-15-6F (hex) Xiranet Communications GmbH +00156F (base 16) Xiranet Communications GmbH + Bertolt-Brecht-Allee 24 + Dresden Saxony 01309 + GERMANY + +00-15-70 (hex) Symbol Technologies +001570 (base 16) Symbol Technologies + One Symbol Plaza + MS # G-6 + Holtsville NY 11742 + UNITED STATES + +00-15-71 (hex) Nolan Systems +001571 (base 16) Nolan Systems + 1595 Cleo Springs Dr. + San Jose Ca. 95131 + UNITED STATES + +00-15-72 (hex) Red-Lemon +001572 (base 16) Red-Lemon + Unit 4, 9/F, Paramount Building + No. 12, Ka Yip Street + Chai Wan + HONG KONG + +00-15-73 (hex) NewSoft Technology Corporation +001573 (base 16) NewSoft Technology Corporation + 3F, 19-3, SanChong RD, NanKang, + Taipei 115 + TAIWAN, REPUBLIC OF CHINA + +00-15-74 (hex) Horizon Semiconductors Ltd. +001574 (base 16) Horizon Semiconductors Ltd. + 9 Hamenofim St. + POB 2192 + Herzliya 46120 + ISRAEL + +00-15-75 (hex) Nevis Networks Inc. +001575 (base 16) Nevis Networks Inc. + 3945 Freedom Circle + Suite 720 + Santa Clara CA 95054 + UNITED STATES + +00-15-76 (hex) scil animal care company GmbH +001576 (base 16) scil animal care company GmbH + Dina-Weissmann-Allee 6 + Viernheim Hessen 68519 + GERMANY + +00-15-77 (hex) Allied Telesyn, Inc. +001577 (base 16) Allied Telesyn, Inc. + 3200 North First Street + San Jose California 95134 + UNITED STATES + +00-15-78 (hex) Audio / Video Innovations +001578 (base 16) Audio / Video Innovations + A3-3375 North Service Road + Burlington ON L7N 3G2 + CANADA + +00-15-79 (hex) Lunatone Industrielle Elektronik GmbH +001579 (base 16) Lunatone Industrielle Elektronik GmbH + Rennbahnweg 55 + Wien 1220 + AUSTRIA + +00-15-7A (hex) Telefin S.p.A. +00157A (base 16) Telefin S.p.A. + Via Albere 87/A + Verona VR 37138 + ITALY + +00-15-7B (hex) Leuze electronic GmbH + Co. KG +00157B (base 16) Leuze electronic GmbH + Co. KG + In der Braike 1 + Owen Baden-Württemberg 73277 + GERMANY + +00-15-7C (hex) Dave Networks, Inc. +00157C (base 16) Dave Networks, Inc. + 2151 O'tool Avenue + Suite H + San Jose CA 95131 + UNITED STATES + +00-15-7D (hex) POSDATA CO., LTD. +00157D (base 16) POSDATA CO., LTD. + 276-2,Seohyeon-dong,Bundang-gu, + Seongnam-City Kyeonggi-Do 463-775 + KOREA, REPUBLIC OF + +00-15-7E (hex) HEYFRA ELECTRONIC gmbH +00157E (base 16) HEYFRA ELECTRONIC gmbH + Herner Str. 5 + Eisleben Sachsen/Anhalt 06295 + GERMANY + +00-15-7F (hex) ChuanG International Holding CO.,LTD. +00157F (base 16) ChuanG International Holding CO.,LTD. + 1F, NO.12, Alley 1, Lane 125, Guolian Street 4Lirn, Wuhan Village + Taoyuan Longtan 325 + TAIWAN, REPUBLIC OF CHINA + +00-15-80 (hex) U-WAY CORPORATION +001580 (base 16) U-WAY CORPORATION + 3F-2, NO. 125, LANE 235, PAO-CHIAO + HSINTIEN CITY TAIPEI HSIEN 231 + TAIWAN, REPUBLIC OF CHINA + +00-15-81 (hex) MAKUS Inc. +001581 (base 16) MAKUS Inc. + 4F Daedo Bldg. 748-14 Yeoksam-dong, Kangnam-gu + Seoul 135-080 + KOREA, REPUBLIC OF + +00-15-82 (hex) TVonics Ltd +001582 (base 16) TVonics Ltd + Penoced Technology Park + Pencoed Mid Glam CF35 5HZ + UNITED KINGDOM + +00-15-83 (hex) IVT corporation +001583 (base 16) IVT corporation + Shangdi Xinxi road, Haidian District + Beijing 100085 + CHINA + +00-15-84 (hex) Schenck Process GmbH +001584 (base 16) Schenck Process GmbH + Pallaswiesenstr. 100 + Darmstadt Hessen 64293 + GERMANY + +00-15-85 (hex) Aonvision Technolopy Corp. +001585 (base 16) Aonvision Technolopy Corp. + RM 413, Bldg. 52, No 195, Sec. 4, + Chung Hsing Rd., + Chutung, Hsinchu 310 + TAIWAN, REPUBLIC OF CHINA + +00-15-86 (hex) Xiamen Overseas Chinese Electronic Co., Ltd. +001586 (base 16) Xiamen Overseas Chinese Electronic Co., Ltd. + No. 22, Huli Street, + Huli Industrial District + Xiamen Fujian 361006 + CHINA + +00-15-87 (hex) Takenaka Seisakusho Co.,Ltd +001587 (base 16) Takenaka Seisakusho Co.,Ltd + 178 HISHIE + HIGASHI-OSAKA CITY OSAKA 578-0984 + JAPAN + +00-15-88 (hex) Balda-Thong Fook Solutions Sdn. Bhd. +001588 (base 16) Balda-Thong Fook Solutions Sdn. Bhd. + 3 Jalan Zarib 6 + Kawasan Perindustrian Zarib + Lahat, Ipoh Perak 31500 + MALAYSIA + +00-15-89 (hex) D-MAX Technology Co.,Ltd +001589 (base 16) D-MAX Technology Co.,Ltd + 7F-6,NO.26,Lian Cheng RD.,Chung-Ho City + Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-15-8A (hex) SURECOM Technology Corp. +00158A (base 16) SURECOM Technology Corp. + 6F, No. 125, Sec. 2, Datung Rd. + Shijr City, Taipei County 221 + TAIWAN, REPUBLIC OF CHINA + +00-15-8B (hex) Park Air Systems Ltd +00158B (base 16) Park Air Systems Ltd + Northfields + Market Deeping + Peterborough PE6 8UE + UNITED KINGDOM + +00-15-8C (hex) Liab ApS +00158C (base 16) Liab ApS + Oestre Alle 6 + Stoevring DK-9530 + DENMARK + +00-15-8D (hex) Jennic Ltd +00158D (base 16) Jennic Ltd + Furnival Street + Sheffield Yorkshire S1 4QT + UNITED KINGDOM + +00-15-8E (hex) Plustek.INC +00158E (base 16) Plustek.INC + 13F-1,No3(Building F) Yuan Qu Street + Taipei Yuan Qu 115 + TAIWAN, REPUBLIC OF CHINA + +00-15-8F (hex) NTT Advanced Technology Corporation +00158F (base 16) NTT Advanced Technology Corporation + Shinjuku Mitsui Bldg. 2-1-1, Nishi-shinjuku + Shinjuku-ku Tokyo 163-0431 + JAPAN + +00-15-90 (hex) Hectronic GmbH +001590 (base 16) Hectronic GmbH + Allmendstrasse 15 + Bonndorf Baden-Württemberg 79848 + GERMANY + +00-15-91 (hex) RLW Inc. +001591 (base 16) RLW Inc. + 2029 Cato Ave. + State College PA 16801 + UNITED STATES + +00-15-92 (hex) Facom UK Ltd (Melksham) +001592 (base 16) Facom UK Ltd (Melksham) + Lancaster House + Bowerhill Industrial Estate + Melksham Wiltshire SN104FB + UNITED KINGDOM + +00-15-93 (hex) U4EA Technologies Inc. +001593 (base 16) U4EA Technologies Inc. + 48860 Milmont Drive + Suite107C + Fremont CA 94538 + UNITED STATES + +00-15-94 (hex) BIXOLON CO.,LTD +001594 (base 16) BIXOLON CO.,LTD + 502-508,Digital Empire Bldg. + 980-3 Yeongtong-Dong + Yeongtong-Gu,Suwon Gyeonggi-Do 443-813 + KOREA, REPUBLIC OF + +00-15-95 (hex) Quester Tangent Corporation +001595 (base 16) Quester Tangent Corporation + 201 - 9865 West Saanich Road + Sidney BC V8L 5Y8 + CANADA + +00-15-96 (hex) ARRIS International +001596 (base 16) ARRIS International + 3871 Lakefield Drive + Suite 300 + Suwanee GA 30024 + UNITED STATES + +00-15-97 (hex) AETA AUDIO SYSTEMS +001597 (base 16) AETA AUDIO SYSTEMS + 18-22, avenue Edouard Herriot + Kepler 4 + Le Plessis Robinson 92350 + FRANCE + +00-15-98 (hex) Kolektor group +001598 (base 16) Kolektor group + Vojkova 10 + Idrija 5280 + SLOVENIA + +00-15-99 (hex) Samsung Electronics Co., LTD +001599 (base 16) Samsung Electronics Co., LTD + 416, Maetan-3Dong, Yeongtong-Gu + Suwon Gyeonggi 443-742 + KOREA, REPUBLIC OF + +00-15-9A (hex) Motorola CHS +00159A (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-15-9B (hex) Nortel +00159B (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-15-9C (hex) B-KYUNG SYSTEM Co.,Ltd. +00159C (base 16) B-KYUNG SYSTEM Co.,Ltd. + #812,WOOLIM E-BIZ CENTER,170-5 + GURO-DONG GURO-GU 152-847 + KOREA, REPUBLIC OF + +00-15-9D (hex) Minicom Advanced Systems ltd +00159D (base 16) Minicom Advanced Systems ltd + 16, Hartom St. + Har-Hotzvim + Jerusalem 91450 + ISRAEL + +00-15-9E (hex) Saitek plc +00159E (base 16) Saitek plc + Units 3+4 West Point Row + Great Park Rd, Almondsbury + Bristol South Gloucestershire BS32 4QG + UNITED KINGDOM + +00-15-9F (hex) Terascala, Inc. +00159F (base 16) Terascala, Inc. + 145 Bodwell Street + Avon MA 02322 + UNITED STATES + +00-15-A0 (hex) Nokia Danmark A/S +0015A0 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-15-A1 (hex) SINTERS SAS +0015A1 (base 16) SINTERS SAS + 5, rue Paul Mesplé + BP10611 + TOULOUSE HAUTE GARONNE 31106 + FRANCE + +00-15-A2 (hex) ARRIS International +0015A2 (base 16) ARRIS International + 3871 Lakefield Drive + Suite 300 + Suwanee GA 30024 + UNITED STATES + +00-15-A3 (hex) ARRIS International +0015A3 (base 16) ARRIS International + 3871 Lakefield Drive + Suite 300 + Suwanee GA 30024 + UNITED STATES + +00-15-A4 (hex) ARRIS International +0015A4 (base 16) ARRIS International + 3871 Lakefield Drive + Suite 300 + Suwanee GA 30024 + UNITED STATES + +00-15-A5 (hex) DCI Co., Ltd. +0015A5 (base 16) DCI Co., Ltd. + 4th Fl. Susung B/D, 893-4 + Jijok-dong + Yuseong-gu Daejeon 305-330 + KOREA, REPUBLIC OF + +00-15-A6 (hex) Digital Electronics Products Ltd. +0015A6 (base 16) Digital Electronics Products Ltd. + Room 301, 3 rd Floor, Tsun Yip Centre + 41 Tsun Yip Street + Kwun Tong 852 + HONG KONG + +00-15-A7 (hex) Robatech AG +0015A7 (base 16) Robatech AG + Pilatusring 10 + Muri AG 5630 + SWITZERLAND + +00-15-A8 (hex) Motorola Mobile Devices +0015A8 (base 16) Motorola Mobile Devices + 600 N Us Hwy 45 + Rm MW113 + Libertyville IL 60048 + UNITED STATES + +00-15-A9 (hex) KWANG WOO I&C CO.,LTD +0015A9 (base 16) KWANG WOO I&C CO.,LTD + 898-23, Hogye-dong,Dongan-gu + Anyang-si,Gyeonggi-do + 431-080 + KOREA, REPUBLIC OF + +00-15-AA (hex) Rextechnik International Co., +0015AA (base 16) Rextechnik International Co., + Room 5-3, No.51, Section 2, Keelung Road + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-15-AB (hex) PRO CO SOUND INC +0015AB (base 16) PRO CO SOUND INC + 225 PARSONS STREET + KALAMAZOO MICHIGAN 49008 + UNITED STATES + +00-15-AC (hex) Capelon AB +0015AC (base 16) Capelon AB + Jägerhorns väg 1 + Kungens Kurva Stockholm S-141 75 + SWEDEN + +00-15-AD (hex) Accedian Networks +0015AD (base 16) Accedian Networks + 4878 Levy, suite 202 + suite 202 + St-Laurent Quebec H9P 2V4 + CANADA + +00-15-AE (hex) kyung il +0015AE (base 16) kyung il + woar rong-myn yougate-ri 101-2 + paju-city gyeong gi 413-813 + KOREA, REPUBLIC OF + +00-15-AF (hex) AzureWave Technologies, Inc. +0015AF (base 16) AzureWave Technologies, Inc. + 8F., No.94, Baozhong Rd., Xindian + Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-15-B0 (hex) AUTOTELENET CO.,LTD +0015B0 (base 16) AUTOTELENET CO.,LTD + 2F, 898-24, Hogye2-dong, Dongan-gu + Anyang-City Kyunggi-do 431-836 + KOREA, REPUBLIC OF + +00-15-B1 (hex) Ambient Corporation +0015B1 (base 16) Ambient Corporation + 79 Chapel St. + Newton MA 02458 + UNITED STATES + +00-15-B2 (hex) Advanced Industrial Computer, Inc. +0015B2 (base 16) Advanced Industrial Computer, Inc. + 17970 E. Ajax Circle + City of Industry CA 91748 + UNITED STATES + +00-15-B3 (hex) Caretech AB +0015B3 (base 16) Caretech AB + Nyborgsvägen 197 + Kalix 95291 + SWEDEN + +00-15-B4 (hex) Polymap Wireless LLC +0015B4 (base 16) Polymap Wireless LLC + 310 S. Williams Blvd. Ste. 346 + Tucson AZ 85711 + UNITED STATES + +00-15-B5 (hex) CI Network Corp. +0015B5 (base 16) CI Network Corp. + 2F Daini Inoue Bldg + 1-6-6 Akasaka Minato-ku + Tokyo 107-0052 + JAPAN + +00-15-B6 (hex) ShinMaywa Industries, Ltd. +0015B6 (base 16) ShinMaywa Industries, Ltd. + 1-1 Shinmeiwa-cho + Takarazuka Hyogo 665-8550 + JAPAN + +00-15-B7 (hex) Toshiba +0015B7 (base 16) Toshiba + 2-9,Suehiro-Cho + Ome Tokyo 1988710 + JAPAN + +00-15-B8 (hex) Tahoe +0015B8 (base 16) Tahoe + ul. Uniwersytecka 1 + Wroclaw 50951 + POLAND + +00-15-B9 (hex) Samsung Electronics Co., Ltd. +0015B9 (base 16) Samsung Electronics Co., Ltd. + #94-1 + Imsoo-Dong + Gumi-City Gyeong-Buk 730-350 + KOREA, REPUBLIC OF + +00-15-BA (hex) iba AG +0015BA (base 16) iba AG + Koenigswarterstrasse 44 + Fuerth Bavaria 90762 + GERMANY + +00-15-BB (hex) SMA Technologie AG +0015BB (base 16) SMA Technologie AG + Hannoversche Str. 1-5 + Niestetal Hessen 34266 + GERMANY + +00-15-BC (hex) Develco +0015BC (base 16) Develco + Olof Palmes Allé 40 + Aarhus N 8200 + DENMARK + +00-15-BD (hex) Group 4 Technology Ltd +0015BD (base 16) Group 4 Technology Ltd + Challenge House + International Drive + Tewkesbury Gloucestershire GL20 8UQ + UNITED KINGDOM + +00-15-BE (hex) Iqua Ltd. +0015BE (base 16) Iqua Ltd. + Hyvoninkatu 1 + Salo Varsinais-Suomi 24240 + FINLAND + +00-15-BF (hex) technicob +0015BF (base 16) technicob + 4 Rue Camille Saint-Saens + LANESTER Morbihan 56602 + FRANCE + +00-15-C0 (hex) DIGITAL TELEMEDIA CO.,LTD. +0015C0 (base 16) DIGITAL TELEMEDIA CO.,LTD. + 17TH FLOOR, CHINA YUSE BUILDING, + NO 6013 SHENNAN ROAD,FUTIAN DISTRICT + SHENZHEN GUANGDONG 518040 + CHINA + +00-15-C1 (hex) SONY Computer Entertainment inc, +0015C1 (base 16) SONY Computer Entertainment inc, + 6-21,2Chome + Minami-Aoyama + Minato-ku Tokyo 107-0062 + JAPAN + +00-15-C2 (hex) 3M Germany +0015C2 (base 16) 3M Germany + Carl Schurz Str. 1 + Neuss NRW 41453 + GERMANY + +00-15-C3 (hex) Ruf Telematik AG +0015C3 (base 16) Ruf Telematik AG + Ruetistrasse 13 + Schlieren ZH 8952 + SWITZERLAND + +00-15-C4 (hex) FLOVEL CO., LTD. +0015C4 (base 16) FLOVEL CO., LTD. + The Tachihi building No,3 hall, 6-1, Sakae-cho, + Tachikawa-shi + Tokyo 190-0003 + JAPAN + +00-15-C5 (hex) Dell Inc +0015C5 (base 16) Dell Inc + One Dell Way + Round Rock Texas 78682 + UNITED STATES + +00-15-C6 (hex) Cisco Systems +0015C6 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-15-C7 (hex) Cisco Systems +0015C7 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-15-C8 (hex) FlexiPanel Ltd +0015C8 (base 16) FlexiPanel Ltd + 7 bis rue Lalo + Paris 75016 + FRANCE + +00-15-C9 (hex) Gumstix, Inc +0015C9 (base 16) Gumstix, Inc + 3130 Alpine Road + Suite 288-606 + Portola Valley CA 94028 + UNITED STATES + +00-15-CA (hex) TeraRecon, Inc. +0015CA (base 16) TeraRecon, Inc. + 2955 Campus Drive, Suite 325 + San Mateo CA 94403 + UNITED STATES + +00-15-CB (hex) Surf Communication Solutions Ltd. +0015CB (base 16) Surf Communication Solutions Ltd. + P.O. Box 343 + Soltam Industrial Zone + Yokneam 20164 + ISRAEL + +00-15-CC (hex) TEPCO UQUEST, LTD. +0015CC (base 16) TEPCO UQUEST, LTD. + Sannomiya Intes Bldg. 8F + 7-1-8 Isogami-dori, Chuo-ku + Kobe HYOGO 651-0086 + JAPAN + +00-15-CD (hex) Exartech International Corp. +0015CD (base 16) Exartech International Corp. + 3/F, No.62, Lane 188, Ruei Guang Rd., Neihu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-15-CE (hex) ARRIS International +0015CE (base 16) ARRIS International + 3871 Lakefield Drive + Suite 300 + Suwanee GA 30024 + UNITED STATES + +00-15-CF (hex) ARRIS International +0015CF (base 16) ARRIS International + 3871 Lakefield Drive + Suite 300 + Suwanee GA 30024 + UNITED STATES + +00-15-D0 (hex) ARRIS International +0015D0 (base 16) ARRIS International + 3871 Lakefield Drive + Suite 300 + Suwanee GA 30024 + UNITED STATES + +00-15-D1 (hex) ARRIS Group, Inc. +0015D1 (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-15-D2 (hex) Xantech Corporation +0015D2 (base 16) Xantech Corporation + 13100 Telfair Avenue + Second Floor + Sylmar CA 91342-3573 + UNITED STATES + +00-15-D3 (hex) Pantech&Curitel Communications, Inc. +0015D3 (base 16) Pantech&Curitel Communications, Inc. + 1451-34, Seocho-dong, Seocho-Gu + Seoul 137-070 + KOREA, REPUBLIC OF + +00-15-D4 (hex) Emitor AB +0015D4 (base 16) Emitor AB + Sjöviksbacken 14 + Stockholm 117 43 + SWEDEN + +00-15-D5 (hex) NICEVT +0015D5 (base 16) NICEVT + Warshawskoe shosse 125 + Moscow 117405 + RUSSIAN FEDERATION + +00-15-D6 (hex) OSLiNK Sp. z o.o. +0015D6 (base 16) OSLiNK Sp. z o.o. + ul. Marsa 27 + Gdansk 80299 + POLAND + +00-15-D7 (hex) Reti Corporation +0015D7 (base 16) Reti Corporation + 6F,No 13, Lane 120, Sec 1, Neihu Rd., + Taipei City 114 + TAIWAN, REPUBLIC OF CHINA + +00-15-D8 (hex) Interlink Electronics +0015D8 (base 16) Interlink Electronics + 546 Flynn Road + Camarillo CA 93012 + UNITED STATES + +00-15-D9 (hex) PKC Electronics Oy +0015D9 (base 16) PKC Electronics Oy + Pajuniityntie 43 + RAAHE 92120 + FINLAND + +00-15-DA (hex) IRITEL A.D. +0015DA (base 16) IRITEL A.D. + Batajnicki put 23 + Beograd Serbia 11080 + YUGOSLAVIA + +00-15-DB (hex) Canesta Inc. +0015DB (base 16) Canesta Inc. + 965 West Maude Avenue + Sunnyvale California 94085 + UNITED STATES + +00-15-DC (hex) KT&C Co., Ltd. +0015DC (base 16) KT&C Co., Ltd. + 487-4, KT&C Bldg. + BangHwa-Dong + GangSeo-Ku Seoul 157-849 + KOREA, REPUBLIC OF + +00-15-DD (hex) IP Control Systems Ltd. +0015DD (base 16) IP Control Systems Ltd. + Unit 15, Hi-Tech Village, + Witney Way, Boldon Business Park, + Boldon Tyne & Wear NE35 9PE + UNITED KINGDOM + +00-15-DE (hex) Nokia Danmark A/S +0015DE (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 V + DENMARK + +00-15-DF (hex) Clivet S.p.A. +0015DF (base 16) Clivet S.p.A. + via Camp Lonc 25 + Feltre Belluno 32030 + ITALY + +00-15-E0 (hex) Ericsson Mobile Platforms +0015E0 (base 16) Ericsson Mobile Platforms + Nya Vattentornet + Lund SE-221 83 + SWEDEN + +00-15-E1 (hex) picoChip Designs Ltd +0015E1 (base 16) picoChip Designs Ltd + Riverside Buildings + 108 Walcot Street + Bath Somerset BA1 5BG + UNITED KINGDOM + +00-15-E2 (hex) Wissenschaftliche Geraetebau Dr. Ing. H. Knauer GmbH +0015E2 (base 16) Wissenschaftliche Geraetebau Dr. Ing. H. Knauer GmbH + Hegauer Weg 38 + Berlin 14163 + GERMANY + +00-15-E3 (hex) Dream Technologies Corporation +0015E3 (base 16) Dream Technologies Corporation + Ebisu Prime Square, 1-1-39 Hiroo + Shibuya-ku Tokyo 150-0012 + JAPAN + +00-15-E4 (hex) Zimmer Elektromedizin +0015E4 (base 16) Zimmer Elektromedizin + Junkersstrasse 9 + Neu-Ulm Bayern 89231 + GERMANY + +00-15-E5 (hex) Cheertek Inc. +0015E5 (base 16) Cheertek Inc. + No.2, Du-Sing First Road, Science-Based Industrial Park, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-15-E6 (hex) MOBILE TECHNIKA Inc. +0015E6 (base 16) MOBILE TECHNIKA Inc. + Sotobori Sky Bld. 5th Floor + 2-11 Ichigaya Honmura-cho, + Shinjuku-ku Tokyo 162-0845 + JAPAN + +00-15-E7 (hex) Quantec ProAudio +0015E7 (base 16) Quantec ProAudio + Leopoldstrasse 18 + München D-80802 + GERMANY + +00-15-E8 (hex) Nortel +0015E8 (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-15-E9 (hex) D-Link Corporation +0015E9 (base 16) D-Link Corporation + 2F, No.233-2, Pao-Chiao Road + Hsin-Tien, Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-15-EA (hex) Tellumat (Pty) Ltd +0015EA (base 16) Tellumat (Pty) Ltd + 64/74 White Road + Retreat + Cape Town Western Province 7945 + SOUTH AFRICA + +00-15-EB (hex) ZTE CORPORATION +0015EB (base 16) ZTE CORPORATION + 5/F,A Wing,ZTE Plaza,Keji Road South,Hi-Tech Industrial Park,Nanshan District + Shenzhen Guangdong 518057 + CHINA + +00-15-EC (hex) Boca Devices LLC +0015EC (base 16) Boca Devices LLC + 6353 W. Rogers Circle #4 + Boca Raton Florida 33487 + UNITED STATES + +00-15-ED (hex) Fulcrum Microsystems, Inc. +0015ED (base 16) Fulcrum Microsystems, Inc. + 26630 Agoura Road + Calabasas CA 91302 + UNITED STATES + +00-15-EE (hex) Omnex Control Systems +0015EE (base 16) Omnex Control Systems + #74 - 1833 Coast Meridian Rd. + Port Coquitlam BC V3C 6G5 + CANADA + +00-15-EF (hex) NEC TOKIN Corporation +0015EF (base 16) NEC TOKIN Corporation + 1120, Shimokuzawa + Sagamihara Kanagawa 229-1198 + JAPAN + +00-15-F0 (hex) EGO BV +0015F0 (base 16) EGO BV + Parade 15 + 's-Hertogenbosch Noord-Brabant 5211KL + NETHERLANDS + +00-15-F1 (hex) KYLINK Communications Corp. +0015F1 (base 16) KYLINK Communications Corp. + 8F-8, No. 351, Sec. 2, Zhongshan Rd., Zhonghe City + Taipei County + 23504 + TAIWAN, REPUBLIC OF CHINA + +00-15-F2 (hex) ASUSTek COMPUTER INC. +0015F2 (base 16) ASUSTek COMPUTER INC. + No.5 Shing Yeh Street,Kwei Shan Hsiang,Taoyuan + Taipei 333 + TAIWAN, REPUBLIC OF CHINA + +00-15-F3 (hex) PELTOR AB +0015F3 (base 16) PELTOR AB + Box 2341 + SE-331 02 VÄRNAMO SE-331 02 + SWEDEN + +00-15-F4 (hex) Eventide +0015F4 (base 16) Eventide + 1 Alsan Way + Little Ferry NJ 07643 + UNITED STATES + +00-15-F5 (hex) Sustainable Energy Systems +0015F5 (base 16) Sustainable Energy Systems + #500, 609 14th Street NW + Calgary Ab T2T 1P3 + CANADA + +00-15-F6 (hex) SCIENCE AND ENGINEERING SERVICES, INC. +0015F6 (base 16) SCIENCE AND ENGINEERING SERVICES, INC. + 4015 PULASKI PIKE NW + HUNTSVILLE AL 35810 + UNITED STATES + +00-15-F7 (hex) Wintecronics Ltd. +0015F7 (base 16) Wintecronics Ltd. + No. 716, 11F-3, Jung Jeng Rd. + Chung Ho City Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-15-F8 (hex) Kingtronics Industrial Co. Ltd. +0015F8 (base 16) Kingtronics Industrial Co. Ltd. + Penthouse, Century Centre, + 44-46 Hung To Road, Kwun Tong + Kowloon + HONG KONG + +00-15-F9 (hex) Cisco Systems +0015F9 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-15-FA (hex) Cisco Systems +0015FA (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-15-FB (hex) setex schermuly textile computer gmbh +0015FB (base 16) setex schermuly textile computer gmbh + Hauptstrasse 25 + Mengerskirchen Hessen 35794 + GERMANY + +00-15-FC (hex) Startco Engineering Ltd. +0015FC (base 16) Startco Engineering Ltd. + 406 Jessop Ave + Saskatoon SK S7N2S5 + CANADA + +00-15-FD (hex) Complete Media Systems +0015FD (base 16) Complete Media Systems + Grove Place + Cuckfield Lane + Warninglid West sussex RH17 5SN + UNITED KINGDOM + +00-15-FE (hex) SCHILLING ROBOTICS LLC +0015FE (base 16) SCHILLING ROBOTICS LLC + 201 COUSTEAU PL + DAVIS CA 95616 + UNITED STATES + +00-15-FF (hex) Novatel Wireless, Inc. +0015FF (base 16) Novatel Wireless, Inc. + 9645 Scranton Road + Suite 205 + San Diego California 92121 + UNITED STATES + +00-16-00 (hex) CelleBrite Mobile Synchronization +001600 (base 16) CelleBrite Mobile Synchronization + 25 Basel St. + POB 7565 + Petach Tikva 49170 + ISRAEL + +00-16-01 (hex) Buffalo Inc. +001601 (base 16) Buffalo Inc. + 4-15 Shibata hondori + Nagoya Minami-ku, Aichi 457-8520 + JAPAN + +00-16-02 (hex) CEYON TECHNOLOGY CO.,LTD. +001602 (base 16) CEYON TECHNOLOGY CO.,LTD. + 13F Samsung Insurance B/D. #942-9 + Ingye-Dong,Paldal-Gu + Suwon-City Gyeonggi-Do 442-832 + KOREA, REPUBLIC OF + +00-16-03 (hex) COOLKSKY Co., LTD +001603 (base 16) COOLKSKY Co., LTD + Shingsung offcetel A511, 1588-1 + Secho Seoul 137-070 + KOREA, REPUBLIC OF + +00-16-04 (hex) Sigpro +001604 (base 16) Sigpro + 655 W Evelyn ST + Suite 2 + Mountain View CA 94041 + UNITED STATES + +00-16-05 (hex) YORKVILLE SOUND INC. +001605 (base 16) YORKVILLE SOUND INC. + 4625 WITMER INDUSTRIAL ESTATE + NIAGARA FALLS NY 14305 + UNITED STATES + +00-16-06 (hex) Ideal Industries +001606 (base 16) Ideal Industries + 9145 Balboa Ave + San Diego CA 92123 + UNITED STATES + +00-16-07 (hex) Curves International Inc. +001607 (base 16) Curves International Inc. + 100 Ritchie Road + Waco Texas 76712 + UNITED STATES + +00-16-08 (hex) Sequans Communications +001608 (base 16) Sequans Communications + 19 Le Parvis de la Défense + Bâtiment CitiCenter + PARIS LA DEFENSE CEDEX 92073 + FRANCE + +00-16-09 (hex) Unitech electronics co., ltd. +001609 (base 16) Unitech electronics co., ltd. + 5F,No.136,Lane 235 ,Pao-chiao Rd., + Hsin-Tien city Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-16-0A (hex) SWEEX Europe BV +00160A (base 16) SWEEX Europe BV + Ampereweg 3 + Delft Zuid-Holland 2627 BG + NETHERLANDS + +00-16-0B (hex) TVWorks LLC +00160B (base 16) TVWorks LLC + Two Belvedere Place, #200 + Mill Valley CA 94941 + UNITED STATES + +00-16-0C (hex) LPL DEVELOPMENT S.A. DE C.V +00160C (base 16) LPL DEVELOPMENT S.A. DE C.V + LAGO GINEBRA 380 P3 + COL. FRANCISCO I MADERO + D.F. 11480 + MEXICO + +00-16-0D (hex) Be Here Corporation +00160D (base 16) Be Here Corporation + 39300 Civic Center Dr., Suite 180 + Fremont CA 94538 + UNITED STATES + +00-16-0E (hex) Optica Technologies Inc. +00160E (base 16) Optica Technologies Inc. + 2051 Dogwood Street + Suite 210 + Louisville CO 80027 + UNITED STATES + +00-16-0F (hex) BADGER METER INC +00160F (base 16) BADGER METER INC + 4545 W BROWN DEER RD + MILWAUKEE WI 53223 + UNITED STATES + +00-16-10 (hex) Carina Technology +001610 (base 16) Carina Technology + 690A Discovery Drive + Huntsville AL 35806 + UNITED STATES + +00-16-11 (hex) Altecon Srl +001611 (base 16) Altecon Srl + Via F.lli Cairoli, 17 + Lissone Milano 20035 + ITALY + +00-16-12 (hex) Otsuka Electronics Co., Ltd. +001612 (base 16) Otsuka Electronics Co., Ltd. + 1-10 Sasagaoka, Minakuchi + kouka shiga 528-0061 + JAPAN + +00-16-13 (hex) LibreStream Technologies Inc. +001613 (base 16) LibreStream Technologies Inc. + 895 Waverley Street + Suite 110 + Winnipeg Manitoba R3T 5P4 + CANADA + +00-16-14 (hex) Picosecond Pulse Labs +001614 (base 16) Picosecond Pulse Labs + 2500 55th Street + Boulder CO 80301 + UNITED STATES + +00-16-15 (hex) Nittan Company, Limited +001615 (base 16) Nittan Company, Limited + 11-6, 1-chome, Hatagaya + Shibuya-ku Tokyo 151-8535 + JAPAN + +00-16-16 (hex) BROWAN COMMUNICATION INC. +001616 (base 16) BROWAN COMMUNICATION INC. + No.1 Jen-Ai Road, HsinChu Industrial Park, + HuKou Hsiang HsinChu Hsien 303 + TAIWAN, REPUBLIC OF CHINA + +00-16-17 (hex) MSI +001617 (base 16) MSI + No.69, Li-De St, Jung-Ho City + Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-16-18 (hex) HIVION Co., Ltd. +001618 (base 16) HIVION Co., Ltd. + 3F, YUNAH 2 B/D, 146-4, Garak2-Dong, + Songpa-Gu Seoul 138-160 + KOREA, REPUBLIC OF + +00-16-19 (hex) La Factoría de Comunicaciones Aplicadas,S.L. +001619 (base 16) La Factoría de Comunicaciones Aplicadas,S.L. + C/Agricultura,111 + Terrassa Barcelona 08223 + SPAIN + +00-16-1A (hex) Dametric AB +00161A (base 16) Dametric AB + Box 120 + Skarholmen Stockholm SE-12723 + SWEDEN + +00-16-1B (hex) Micronet Corporation +00161B (base 16) Micronet Corporation + 1788-388 Nomura Hirooka + Shiojiri-shi Nagano-ken 399-0702 + JAPAN + +00-16-1C (hex) e:cue +00161C (base 16) e:cue + Friedrich-List-Strasse 23 + Paderborn 33100 + GERMANY + +00-16-1D (hex) Innovative Wireless Technologies, Inc. +00161D (base 16) Innovative Wireless Technologies, Inc. + 1047 Vista Park Dr. + Suite A + Forest VA 24551 + UNITED STATES + +00-16-1E (hex) Woojinnet +00161E (base 16) Woojinnet + 292 osan dongtan + hwaseong kyonggi 445-813 + KOREA, REPUBLIC OF + +00-16-1F (hex) SUNWAVETEC Co., Ltd. +00161F (base 16) SUNWAVETEC Co., Ltd. + #823, Kwanyang-dong, Dongan-ku + Anyang-si Kyungki-do 431-060 + KOREA, REPUBLIC OF + +00-16-20 (hex) Sony Ericsson Mobile Communications AB +001620 (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund SE 221 88 + SWEDEN + +00-16-21 (hex) Colorado Vnet +001621 (base 16) Colorado Vnet + 255 E. 6th St. + Loveland CO 80537 + UNITED STATES + +00-16-22 (hex) BBH SYSTEMS GMBH +001622 (base 16) BBH SYSTEMS GMBH + Böttgerstrasse 40 + Weiden i.d.OPf. Bayern 92637 + GERMANY + +00-16-23 (hex) Interval Media +001623 (base 16) Interval Media + 3200 Ash Street + Palo Alto CA 94306 + UNITED STATES + +00-16-24 (hex) Teneros, Inc. +001624 (base 16) Teneros, Inc. + 215 Castro St. + 3rd Floor + Mt. View CA 94041 + UNITED STATES + +00-16-25 (hex) Impinj, Inc. +001625 (base 16) Impinj, Inc. + 701 N. 34th Street + Suite 300 + Seattle WA 98103 + UNITED STATES + +00-16-26 (hex) Motorola CHS +001626 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-16-27 (hex) embedded-logic DESIGN AND MORE GmbH +001627 (base 16) embedded-logic DESIGN AND MORE GmbH + Hansestrasse 24 + Muenster NRW 48153 + GERMANY + +00-16-28 (hex) Ultra Electronics Manufacturing and Card Systems +001628 (base 16) Ultra Electronics Manufacturing and Card Systems + Hampshire Road + Granby Estate + Weymouth Dorset DT4 9XD + UNITED KINGDOM + +00-16-29 (hex) Nivus GmbH +001629 (base 16) Nivus GmbH + Im Täle 2 + Eppingen Baden-Wuerttemberg 75031 + GERMANY + +00-16-2A (hex) Antik computers & communications s.r.o. +00162A (base 16) Antik computers & communications s.r.o. + Razusova 2 + Kosice SK SK-04001 + SLOVAKIA + +00-16-2B (hex) Togami Electric Mfg.co.,Ltd. +00162B (base 16) Togami Electric Mfg.co.,Ltd. + 1-1 Ohtakara-Kitamachi + Saga.PRF 840-0802 + JAPAN + +00-16-2C (hex) Xanboo +00162C (base 16) Xanboo + 115 West 30th, 6th Fl + New York NY 10001 + UNITED STATES + +00-16-2D (hex) STNet Co., Ltd. +00162D (base 16) STNet Co., Ltd. + Shin-wha Building 4F, 954-25 + Kwanyang-dong, Dongan-gu + Anyang-si Kyungki-do 431-060 + KOREA, REPUBLIC OF + +00-16-2E (hex) Space Shuttle Hi-Tech Co., Ltd. +00162E (base 16) Space Shuttle Hi-Tech Co., Ltd. + No. 226, Wu-Ho St., Wu-Lung Village, + Chiung-Lin Hsiang, + Hsinchu Hsien 307 + TAIWAN, REPUBLIC OF CHINA + +00-16-2F (hex) Geutebrück GmbH +00162F (base 16) Geutebrück GmbH + Im Nassen 7-9 + Windhagen 53578 + GERMANY + +00-16-30 (hex) Vativ Technologies +001630 (base 16) Vativ Technologies + 9339 Genesee Avenue + Suite 130 + San Diego CA 92121 + UNITED STATES + +00-16-31 (hex) Xteam +001631 (base 16) Xteam + room 801, No.102 international Science & Techology Park + No.2 ShangDi Info Road, HaiDian District + Beijing 8610 + CHINA + +00-16-32 (hex) SAMSUNG ELECTRONICS CO., LTD. +001632 (base 16) SAMSUNG ELECTRONICS CO., LTD. + 416, METAN-3DONG, + YOUNGTONG-GU + SUWON KYUNGKI-DO 442-742 + KOREA, REPUBLIC OF + +00-16-33 (hex) Oxford Diagnostics Ltd. +001633 (base 16) Oxford Diagnostics Ltd. + Sandybrae + Whitebarn Dr, Boars Hill + Oxford Oxon. OX1 5HJ + UNITED KINGDOM + +00-16-34 (hex) Mathtech, Inc. +001634 (base 16) Mathtech, Inc. + 6402 Arlington Blvd., + Suite 1200 + Falls Church Virginia 22042-2356 + UNITED STATES + +00-16-35 (hex) Hewlett Packard +001635 (base 16) Hewlett Packard + 20555 State Highway 249 South + MS070405 + Houston TX 77070 + UNITED STATES + +00-16-36 (hex) Quanta Computer Inc. +001636 (base 16) Quanta Computer Inc. + No. 188, Wen Hwa 2nd Rd., Kuei Shan Hsiang + Taoyuan Shien + TAIWAN, REPUBLIC OF CHINA + +00-16-37 (hex) Citel Srl +001637 (base 16) Citel Srl + Via L. G. Columella, 36 + Milan MI 20128 + ITALY + +00-16-38 (hex) TECOM Co., Ltd. +001638 (base 16) TECOM Co., Ltd. + 23 R&D Road 2 Science Based Industrial Park + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-16-39 (hex) UBIQUAM Co.,Ltd +001639 (base 16) UBIQUAM Co.,Ltd + Technovill 4F,272-3 Yatap3 + Bundang + Seongnam Kyeonggi 463-836 + KOREA, REPUBLIC OF + +00-16-3A (hex) YVES TECHNOLOGY CO., LTD. +00163A (base 16) YVES TECHNOLOGY CO., LTD. + No.74, Fusing 2nd Rd. + Gueishan Taoyuan 33377 + TAIWAN, REPUBLIC OF CHINA + +00-16-3B (hex) VertexRSI/General Dynamics +00163B (base 16) VertexRSI/General Dynamics + 2120 Old Gatesburg Rd. + State college PA 16803 + UNITED STATES + +00-16-3C (hex) Rebox B.V. +00163C (base 16) Rebox B.V. + Hendrik Figeeweg 1X + Haarlem Noord-Holland 2031 BJ + NETHERLANDS + +00-16-3D (hex) Tsinghua Tongfang Legend Silicon Tech. Co., Ltd. +00163D (base 16) Tsinghua Tongfang Legend Silicon Tech. Co., Ltd. + 26F TSINGHUA TONGFANG HI-TECH PLAZA + BEIJING 100083 + CHINA + +00-16-3E (hex) Xensource, Inc. +00163E (base 16) Xensource, Inc. + 2300 Geng Rd. + Suite 250 + Palo Alto CA 94303 + UNITED STATES + +00-16-3F (hex) CReTE SYSTEMS Inc. +00163F (base 16) CReTE SYSTEMS Inc. + 7F,No.250,Sec.3,Pei Shen Rd.,Shen Keng Hsiang + Taipei County 22204 + TAIWAN, REPUBLIC OF CHINA + +00-16-40 (hex) Asmobile Communication Inc. +001640 (base 16) Asmobile Communication Inc. + No.11 Lane 120, Li-Te Rd., Peitou 112, Taipei, Taiwan, R.O.C + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-16-41 (hex) USI +001641 (base 16) USI + 141, LANE 351, TAIPING RD. SEC.1, + TSAO-TUEN NAN-TOU 542 + TAIWAN, REPUBLIC OF CHINA + +00-16-42 (hex) Pangolin +001642 (base 16) Pangolin + 9501 Satellite Boulevard, Suite 109 + Orlando FL 32837 + UNITED STATES + +00-16-43 (hex) Sunhillo Corproation +001643 (base 16) Sunhillo Corproation + 444 Kelley Drive + West Berlin New Jersey 08091 + UNITED STATES + +00-16-44 (hex) LITE-ON Technology Corp. +001644 (base 16) LITE-ON Technology Corp. + 18F, No.392, Ruey Kuang Road, Niehu, + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-16-45 (hex) Power Distribution, Inc. +001645 (base 16) Power Distribution, Inc. + 4200 Oakleys Ct. + Richmond VA 23223 + UNITED STATES + +00-16-46 (hex) Cisco Systems +001646 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-16-47 (hex) Cisco Systems +001647 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-16-48 (hex) SSD Company Limited +001648 (base 16) SSD Company Limited + 3-3-4 Higashiyagura + Kusatsu-city Shiga 525-0054 + JAPAN + +00-16-49 (hex) SetOne GmbH +001649 (base 16) SetOne GmbH + Hegenheimer Str. 2 + Weil am Rhein Baden Wuertemberg D-79576 + GERMANY + +00-16-4A (hex) Vibration Technology Limited +00164A (base 16) Vibration Technology Limited + Vibtech House, Central Boulevard + Central Park + Larbert Scotland FK5 4RU + UNITED KINGDOM + +00-16-4B (hex) Quorion Data Systems GmbH +00164B (base 16) Quorion Data Systems GmbH + An der Klinge 6 + Erfurt Thuringia 99195 + GERMANY + +00-16-4C (hex) PLANET INT Co., Ltd +00164C (base 16) PLANET INT Co., Ltd + 8th Floor, Saeum B/D, 1361-5 + Seocho-Dong, Seocho-Ku + Seoul 137-070 + KOREA, REPUBLIC OF + +00-16-4D (hex) Alcatel North America IP Division +00164D (base 16) Alcatel North America IP Division + 701 E. Middlefield RD. + Mountain View CA 94043 + UNITED STATES + +00-16-4E (hex) Nokia Danmark A/S +00164E (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-16-4F (hex) World Ethnic Broadcastin Inc. +00164F (base 16) World Ethnic Broadcastin Inc. + 50 California Street, Suite 1500 + San Francisco California 94111 + UNITED STATES + +00-16-50 (hex) EYAL MICROWAVE +001650 (base 16) EYAL MICROWAVE + KIBBUTZ EYAL + D.N. HASHARON HATICHON + 45840 + ISRAEL + +00-16-51 (hex) PRIVATE +001651 (base 16) + +00-16-52 (hex) Hoatech Technologies, Inc. +001652 (base 16) Hoatech Technologies, Inc. + 1F., No.224, Guosheng St. + Zhubei HsinChu Hsien 30244 + TAIWAN, REPUBLIC OF CHINA + +00-16-53 (hex) LEGO System A/S IE Electronics Division +001653 (base 16) LEGO System A/S IE Electronics Division + Aastvej 1 + Billund Kommune 7190 + DENMARK + +00-16-54 (hex) Flex-P Industries Sdn. Bhd. +001654 (base 16) Flex-P Industries Sdn. Bhd. + No.128-12-2, Menara UMNO, + Jalan Macalister, + Georgetown Penang 10400 + MALAYSIA + +00-16-55 (hex) FUHO TECHNOLOGY Co., LTD +001655 (base 16) FUHO TECHNOLOGY Co., LTD + No. 30, Lane 726, Jinma Rd, Sec. 3 + Chang Hua Taiwa 500 + TAIWAN, REPUBLIC OF CHINA + +00-16-56 (hex) Nintendo Co., Ltd. +001656 (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO 601-8501 + JAPAN + +00-16-57 (hex) Aegate Ltd +001657 (base 16) Aegate Ltd + Technology Centre + Melbourn Hertfordshire SG8 6DP + UNITED KINGDOM + +00-16-58 (hex) Fusiontech Technologies Inc. +001658 (base 16) Fusiontech Technologies Inc. + 6F, No.78, Cheng Kung Rd., Sec. 1, + Nan Kang + Taipei 115 + TAIWAN, REPUBLIC OF CHINA + +00-16-59 (hex) Z.M.P. RADWAG +001659 (base 16) Z.M.P. RADWAG + Bracka 28 street + RADOM Mazowieckie 26-600 + POLAND + +00-16-5A (hex) Harman Specialty Group +00165A (base 16) Harman Specialty Group + 3 Oak Park Drive + Bedford MA 01730 + UNITED STATES + +00-16-5B (hex) Grip Audio +00165B (base 16) Grip Audio + 6345 W. Louise Drive + Glendale Arizona 85310-4243 + UNITED STATES + +00-16-5C (hex) Trackflow Ltd +00165C (base 16) Trackflow Ltd + 167-169 Kensington High Street + London England W86SH + UNITED KINGDOM + +00-16-5D (hex) AirDefense, Inc. +00165D (base 16) AirDefense, Inc. + 4800 North Point Pkwy + Ste 100 + Alpharetta GA 30022 + UNITED STATES + +00-16-5E (hex) Precision I/O +00165E (base 16) Precision I/O + 4005 Miranda Ave., Suite 210 + Palo Alto CA 94304-1232 + UNITED STATES + +00-16-5F (hex) Fairmount Automation +00165F (base 16) Fairmount Automation + 4621 West Chester Pike + Newtown Square PA 19073 + UNITED STATES + +00-16-60 (hex) Nortel +001660 (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-16-61 (hex) Novatium Solutions (P) Ltd +001661 (base 16) Novatium Solutions (P) Ltd + 3rd Floor, Temple Towers, #672 + Anna Salai, Nandanam, + Chennai Tamil Nadu 600035 + INDIA + +00-16-62 (hex) Liyuh Technology Ltd. +001662 (base 16) Liyuh Technology Ltd. + 7F-1, No. 92, Sec. 1, Hei Hu Rd. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-16-63 (hex) KBT Mobile +001663 (base 16) KBT Mobile + 4F, Polaris I, 15-3, Jeongja-dong, Bundang-gu + Seongnam-si, Gyeonggi-do 463-811 + KOREA, REPUBLIC OF + +00-16-64 (hex) Prod-El SpA +001664 (base 16) Prod-El SpA + Via Palmanova 185 + Milano MI 20132 + ITALY + +00-16-65 (hex) Cellon France +001665 (base 16) Cellon France + Route d'Angers Le Mans cedex 9 + Le Mans Sarthe 72081 + FRANCE + +00-16-66 (hex) Quantier Communication Inc. +001666 (base 16) Quantier Communication Inc. + 1F, No. 36, Industry E. Rd IV, + Science-Based Industrial park + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-16-67 (hex) A-TEC Subsystem INC. +001667 (base 16) A-TEC Subsystem INC. + 4F, No. 86, Chung-Hsing Road, Shijr City, + Taipei County + 221 + TAIWAN, REPUBLIC OF CHINA + +00-16-68 (hex) Eishin Electronics +001668 (base 16) Eishin Electronics + Nishiku Miyashita 1-19 + Kobe City Hyogo Prefecture 651-2146 + JAPAN + +00-16-69 (hex) MRV Communication (Networks) LTD +001669 (base 16) MRV Communication (Networks) LTD + P.O Box 614 + Yokneam 20692 + ISRAEL + +00-16-6A (hex) TPS +00166A (base 16) TPS + 145 quai de Stalingrad + Issy Les Moulineaux Ile de France 92137 + FRANCE + +00-16-6B (hex) Samsung Electronics +00166B (base 16) Samsung Electronics + 416,Maetan-3Dong,Yeongtong-Gu + Suwon-City Kyeonggi-Do 443-742 + KOREA, REPUBLIC OF + +00-16-6C (hex) Samsung Electonics Digital Video System Division +00166C (base 16) Samsung Electonics Digital Video System Division + 416, Maetan-3Dong,Yeongtong-Gu + Suwon Gyeonggi-Do 443-742 + KOREA, REPUBLIC OF + +00-16-6D (hex) Yulong Computer Telecommunication Scientific(shenzhen)Co.,Lt +00166D (base 16) Yulong Computer Telecommunication Scientific(shenzhen)Co.,Lt + 8/F.high Tech Plaza,TianAn Cyberpark,Chegongmiao + Shenzhen Guangdong 518040 + CHINA + +00-16-6E (hex) Arbitron Inc. +00166E (base 16) Arbitron Inc. + 9705 Patuxent Woods Drive + Columbia MD 21046 + UNITED STATES + +00-16-6F (hex) Intel Corporation +00166F (base 16) Intel Corporation + Lot 8, Jln Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-16-70 (hex) SKNET Corporation +001670 (base 16) SKNET Corporation + Fontana Shinyokohama + Shinyokohama 2,17,2 kohoku-ku + Yokohama Kanagawa 222-0033 + JAPAN + +00-16-71 (hex) Symphox Information Co. +001671 (base 16) Symphox Information Co. + 15F, No. 51, Sec. 3, Minsheng E. Road + Taipei City 104 + TAIWAN, REPUBLIC OF CHINA + +00-16-72 (hex) Zenway enterprise ltd +001672 (base 16) Zenway enterprise ltd + 6F., No.20, Lane 150, Jhongsing Rd., Sijhih City + Taipei 886 + TAIWAN, REPUBLIC OF CHINA + +00-16-73 (hex) Bury GmbH & Co. KG +001673 (base 16) Bury GmbH & Co. KG + Robert-Koch-Str. 1-7 + Loehne Germany 32584 + GERMANY + +00-16-74 (hex) EuroCB (Phils.), Inc. +001674 (base 16) EuroCB (Phils.), Inc. + SFB No.2 + Mactan Economic Zone - I + Lapulapu City Cebu 6015 + PHILIPPINES + +00-16-75 (hex) Motorola MDb +001675 (base 16) Motorola MDb + 600 N US Hwy 45 + Libertyville Illinois 60048 + UNITED STATES + +00-16-76 (hex) Intel Corporation +001676 (base 16) Intel Corporation + Lot 8, Jln Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-16-77 (hex) Bihl+Wiedemann GmbH +001677 (base 16) Bihl+Wiedemann GmbH + Flosswoerthstr. 41 + Mannheim Baden Würtemberg 68199 + GERMANY + +00-16-78 (hex) SHENZHEN BAOAN GAOKE ELECTRONICS CO., LTD +001678 (base 16) SHENZHEN BAOAN GAOKE ELECTRONICS CO., LTD + GAOKE INDUSTRIAL PARK, NO.8 TANGKENG ROAD, SHIYAN TOWN + SHENZHEN GUANGDONG 518108 + CHINA + +00-16-79 (hex) eOn Communications +001679 (base 16) eOn Communications + 4105 Royal Drive, Suite 100 + Kennesaw Georgia 30144 + UNITED STATES + +00-16-7A (hex) Skyworth Overseas Dvelopment Ltd. +00167A (base 16) Skyworth Overseas Dvelopment Ltd. + Room 1505-06,Westlands Centre + 20 Westlands Road, Quarry Bay, + HONG KONG + +00-16-7B (hex) Haver&Boecker +00167B (base 16) Haver&Boecker + Carl-Haver-Platz 3 + Oelde NRW 59302 + GERMANY + +00-16-7C (hex) iRex Technologies BV +00167C (base 16) iRex Technologies BV + HighTech Campus + Building 46, room p-005 + Eindhoven Brabant 5656AE + NETHERLANDS + +00-16-7D (hex) Sky-Line Information Co., Ltd. +00167D (base 16) Sky-Line Information Co., Ltd. + 8F.,No.38,Sihyuan Rd., + Sinihuang Taipei 242 + TAIWAN, REPUBLIC OF CHINA + +00-16-7E (hex) DIBOSS.CO.,LTD +00167E (base 16) DIBOSS.CO.,LTD + 126-1, Gongdan-dong + Gumi Gyeongbuk 730-902 + KOREA, REPUBLIC OF + +00-16-7F (hex) Bluebird Soft Inc. +00167F (base 16) Bluebird Soft Inc. + 558-5 Sinsa-dong, Kangnam-gu, + Seoul 135-890 + KOREA, REPUBLIC OF + +00-16-80 (hex) Bally Gaming + Systems +001680 (base 16) Bally Gaming + Systems + 950 Sandhill Road + Reno NV 89521 + UNITED STATES + +00-16-81 (hex) Vector Informatik GmbH +001681 (base 16) Vector Informatik GmbH + Ingersheimer Str. 24 + Stuttgart Baden-Wuerttemberg 70499 + GERMANY + +00-16-82 (hex) Pro Dex, Inc +001682 (base 16) Pro Dex, Inc + 1800 NW 169th Place + C100 + Beaverton Oregon 97006 + UNITED STATES + +00-16-83 (hex) WEBIO International Co.,.Ltd. +001683 (base 16) WEBIO International Co.,.Ltd. + 21F.,No.171 Songde Rd.,Sinyi District + Taipei 11085 + TAIWAN, REPUBLIC OF CHINA + +00-16-84 (hex) Donjin Co.,Ltd. +001684 (base 16) Donjin Co.,Ltd. + 21F,Cangsong Building,Tairan,Futian + Shenzhen Guangdong 518040 + CHINA + +00-16-85 (hex) Elisa Oyj +001685 (base 16) Elisa Oyj + Elektroniikkatie 4 + 90570 Oulu + FINLAND + +00-16-86 (hex) Karl Storz Imaging +001686 (base 16) Karl Storz Imaging + 175 Cremona Dr. + Goleta CA 93117 + UNITED STATES + +00-16-87 (hex) Chubb CSC-Vendor AP +001687 (base 16) Chubb CSC-Vendor AP + Ottawa STN + P.O. BOX 9832 + Ottawa K1G 6W6 + CANADA + +00-16-88 (hex) ServerEngines LLC +001688 (base 16) ServerEngines LLC + 209 N. Fair Oaks Avenue + Sunnyvale CA 94085 + UNITED STATES + +00-16-89 (hex) Pilkor Electronics Co., Ltd +001689 (base 16) Pilkor Electronics Co., Ltd + 381,Wonchun-Dong,Yeoungtong-Gu + Suwon Kyung Ki-Do 442-380 + KOREA, REPUBLIC OF + +00-16-8A (hex) id-Confirm Inc +00168A (base 16) id-Confirm Inc + 1800 Boulder St + Suite 400 + Denver CO 80211 + UNITED STATES + +00-16-8B (hex) Paralan Corporation +00168B (base 16) Paralan Corporation + 4655 Ruffner St. + San Diego CA 92111 + UNITED STATES + +00-16-8C (hex) DSL Partner AS +00168C (base 16) DSL Partner AS + Havreveien 49 + Oslo 0680 + NORWAY + +00-16-8D (hex) KORWIN CO., Ltd. +00168D (base 16) KORWIN CO., Ltd. + 3rd Floor, Hana Bldg, 123-7 Nonhyun-dong + Kangnam-gu + Seoul 135-010 + KOREA, REPUBLIC OF + +00-16-8E (hex) Vimicro corporation +00168E (base 16) Vimicro corporation + 15/F,Shining Tower,No.35,xueyuan + Road,Haidian District + Beijing 100083 + CHINA + +00-16-8F (hex) GN Netcom as +00168F (base 16) GN Netcom as + Metalbuen 66 + P.O.Box 201 + Ballerup Skovlunde DK - 2750 + DENMARK + +00-16-90 (hex) J-TEK INCORPORATION +001690 (base 16) J-TEK INCORPORATION + 2F-1, No. 83, Sec. 2, GongDaoWu Rd., + Hsinchu City 30070 + TAIWAN, REPUBLIC OF CHINA + +00-16-91 (hex) Moser-Baer AG +001691 (base 16) Moser-Baer AG + Spitalstrasse 7 + Sumiswald BE 3454 + SWITZERLAND + +00-16-92 (hex) Scientific-Atlanta, Inc. +001692 (base 16) Scientific-Atlanta, Inc. + 5030 Sugarloaf Pkwy + ATL 1.3.473 + Lawrenceville GA 30044 + UNITED STATES + +00-16-93 (hex) PowerLink Technology Inc. +001693 (base 16) PowerLink Technology Inc. + N0. 18, Alley 1, Lane 151, Sec. 1, Jhongsing Rd., Wugu Township + Taipei Hsien 248 + TAIWAN, REPUBLIC OF CHINA + +00-16-94 (hex) Sennheiser Communications A/S +001694 (base 16) Sennheiser Communications A/S + Langager 6 + Solrød Strand Copenhagen 2680 + DENMARK + +00-16-95 (hex) AVC Technology Limited +001695 (base 16) AVC Technology Limited + 6/F Enterprise Square III + 39 Wang Chiu Road + Kowloon Bay + HONG KONG + +00-16-96 (hex) QDI Technology (H.K.) Limited +001696 (base 16) QDI Technology (H.K.) Limited + 16/F, Standard Chartered Bank Building 4-4A + Des Voeux Road Central + Hong Kong + CHINA + +00-16-97 (hex) NEC Corporation +001697 (base 16) NEC Corporation + 7-1, Shiba 5-chome Minato-ku, + Tokyo 108-8001 + JAPAN + +00-16-98 (hex) T&A Mobile Phones +001698 (base 16) T&A Mobile Phones + 4/F, South Building,No.2966, Jinke Road + Zhangjiang High-Teck Park + Pudong Shanghai 201203 + CHINA + +00-16-99 (hex) Tonic DVB Marketing Ltd +001699 (base 16) Tonic DVB Marketing Ltd + Unit B, 10/F, Summit Building, + 30 Man Yue Street, + Hung Hom Kowloon + HONG KONG + +00-16-9A (hex) Quadrics Ltd +00169A (base 16) Quadrics Ltd + 1 Bridewell Street + Bristol BS1 2AA + UNITED KINGDOM + +00-16-9B (hex) Alstom Transport +00169B (base 16) Alstom Transport + 11, 13 avenue de Bel Air + Villeurbanne Rhone 69100 + FRANCE + +00-16-9C (hex) Cisco Systems +00169C (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-16-9D (hex) Cisco Systems +00169D (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-16-9E (hex) TV One Ltd +00169E (base 16) TV One Ltd + Unit V Continental Approach + Westwood Industrial Estate + Margate Kent CT9 4JG + UNITED KINGDOM + +00-16-9F (hex) Vimtron Electronics Co., Ltd. +00169F (base 16) Vimtron Electronics Co., Ltd. + 7F., No.9, Alley 2, Lane 35 + Jihu Rd. + Neihu District Taipei City 11492 + TAIWAN, REPUBLIC OF CHINA + +00-16-A0 (hex) Auto-Maskin +0016A0 (base 16) Auto-Maskin + Sophie Radichs Vei 7 + LILLESTROM Akershus 2003 + NORWAY + +00-16-A1 (hex) 3Leaf Networks +0016A1 (base 16) 3Leaf Networks + 3255-1 Scott Blvd + Santa Clara CA 95054 + UNITED STATES + +00-16-A2 (hex) CentraLite Systems, Inc. +0016A2 (base 16) CentraLite Systems, Inc. + 6420 Wall Street + Mobile AL 36695 + UNITED STATES + +00-16-A3 (hex) TEAM ARTECHE, S.A. +0016A3 (base 16) TEAM ARTECHE, S.A. + Derio Bidea, 28 + Mungia Bizkaia 48100 + SPAIN + +00-16-A4 (hex) Ezurio Ltd +0016A4 (base 16) Ezurio Ltd + Unit 2 + 126 Colindale Avenue + London NW9 5HD + UNITED KINGDOM + +00-16-A5 (hex) Tandberg Storage ASA +0016A5 (base 16) Tandberg Storage ASA + Postboks 191 + 1325 Lysaker + NORWAY + +00-16-A6 (hex) Dovado FZ-LLC +0016A6 (base 16) Dovado FZ-LLC + Al-Thuraya Tower 1, office 504 + P.O. Box 500422 + Dubai + UNITED ARAB EMIRATES + +00-16-A7 (hex) AWETA G&P +0016A7 (base 16) AWETA G&P + Burg. Winkellaan 3 + Nootdorp 2631 HG + NETHERLANDS + +00-16-A8 (hex) CWT CO., LTD. +0016A8 (base 16) CWT CO., LTD. + 10F No. 74 Sec. 1 Chung-Hua Rd. + Taipei 108 + TAIWAN, REPUBLIC OF CHINA + +00-16-A9 (hex) 2EI +0016A9 (base 16) 2EI + Rua dos Rubis, 77 - Assumpcao + Aguas de Lindoia Sao Paulo 13940-000 + BRAZIL + +00-16-AA (hex) Kei Communication Technology Inc. +0016AA (base 16) Kei Communication Technology Inc. + 8-BAN CHUOU + KOBE HYOGO 650-0024 + JAPAN + +00-16-AB (hex) PBI-Dansensor A/S +0016AB (base 16) PBI-Dansensor A/S + Roennedevej 18 + Ringsted DK-4100 + DENMARK + +00-16-AC (hex) Toho Technology Corp. +0016AC (base 16) Toho Technology Corp. + HIGASHI 5-1 + ORIZUSHIMOMACHI + INAZAWA-CITY AICHI 492-8501 + JAPAN + +00-16-AD (hex) BT-Links Company Limited +0016AD (base 16) BT-Links Company Limited + Rm 802, Nan Fung Centre, 264-298 Castle Peak Rd + Tsuen Wan + HONG KONG + +00-16-AE (hex) INVENTEL +0016AE (base 16) INVENTEL + 35 rue Tournefort + PARIS 75005 + FRANCE + +00-16-AF (hex) Shenzhen Union Networks Equipment Co.,Ltd. +0016AF (base 16) Shenzhen Union Networks Equipment Co.,Ltd. + Yihai Square east building 2307, Chuangye road, Nanshan District + Shenzhen Guangdong 518054 + CHINA + +00-16-B0 (hex) VK Corporation +0016B0 (base 16) VK Corporation + VK B/D, 548-6, Anyang 8dong, Manan-gu + Anyang Kyounggi 430-8903 + KOREA, REPUBLIC OF + +00-16-B1 (hex) KBS +0016B1 (base 16) KBS + 88 rue Pierre Sémard + BP 55 + Moissy cedex Ile de France 77552 + FRANCE + +00-16-B2 (hex) DriveCam Inc +0016B2 (base 16) DriveCam Inc + 3954 Murphy Canyon Road + Suite D205 + San Diego CA 92123 + UNITED STATES + +00-16-B3 (hex) Photonicbridges (China) Co., Ltd. +0016B3 (base 16) Photonicbridges (China) Co., Ltd. + No. 900, Yishan road, + Shanghai 200233 + CHINA + +00-16-B4 (hex) PRIVATE +0016B4 (base 16) + +00-16-B5 (hex) Motorola CHS +0016B5 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-16-B6 (hex) Cisco-Linksys +0016B6 (base 16) Cisco-Linksys + 121 Theory + Irvine CA 92612 + UNITED STATES + +00-16-B7 (hex) Seoul Commtech +0016B7 (base 16) Seoul Commtech + 448-11, Seongnae 3dong. Gangdong gu, + Seoul 134033 + KOREA, REPUBLIC OF + +00-16-B8 (hex) Sony Ericsson Mobile Communications +0016B8 (base 16) Sony Ericsson Mobile Communications + Nya Vattentornet + Lund Skåne 22188 + SWEDEN + +00-16-B9 (hex) ProCurve Networking +0016B9 (base 16) ProCurve Networking + 8000 Foothills Blvd + MS 5662 + Roseville CA 95747 + UNITED STATES + +00-16-BA (hex) WEATHERNEWS INC. +0016BA (base 16) WEATHERNEWS INC. + NAKASE 1-3 MTG + CHIBA 262-0032 + JAPAN + +00-16-BB (hex) Law-Chain Computer Technology Co Ltd +0016BB (base 16) Law-Chain Computer Technology Co Ltd + 7F-2, 286-4, hsin ya road, chien chen district + Kaohsiung 80673 + TAIWAN, REPUBLIC OF CHINA + +00-16-BC (hex) Nokia Danmark A/S +0016BC (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-16-BD (hex) ATI Industrial Automation +0016BD (base 16) ATI Industrial Automation + 1031 Goodworth Drive + Apex North Carolina 27539-3869 + UNITED STATES + +00-16-BE (hex) INFRANET, Inc. +0016BE (base 16) INFRANET, Inc. + 8th Floor, Cowell B/D, 66-1 + Banpo-Dong, Seocho-Gu + Seoul 137-040 + KOREA, REPUBLIC OF + +00-16-BF (hex) PaloDEx Group Oy +0016BF (base 16) PaloDEx Group Oy + P.O. Box 64 + Nahkelantie 160 + Tuusula 04301 + FINLAND + +00-16-C0 (hex) Semtech Corporation +0016C0 (base 16) Semtech Corporation + 200 Flynn Rd + Camarillo California 93012 + UNITED STATES + +00-16-C1 (hex) Eleksen Ltd +0016C1 (base 16) Eleksen Ltd + Pinewood Studios + Iver Heath + Iver Bucks SL0 0NH + UNITED KINGDOM + +00-16-C2 (hex) Avtec Systems Inc +0016C2 (base 16) Avtec Systems Inc + 14432 Albemarle Point Place + Chantilly Virginia 20151 + UNITED STATES + +00-16-C3 (hex) BA Systems Inc +0016C3 (base 16) BA Systems Inc + 6895 Via Del Oro + San Jose CA 95119 + UNITED STATES + +00-16-C4 (hex) SiRF Technology, Inc. +0016C4 (base 16) SiRF Technology, Inc. + 217 Devcon Dr. + San Jose CA 95112 + UNITED STATES + +00-16-C5 (hex) Shenzhen Xing Feng Industry Co.,Ltd +0016C5 (base 16) Shenzhen Xing Feng Industry Co.,Ltd + Floor 1 - 4, Block 25, Hongtian Jinyuan Industrial, + Hongtian Road Huangpu, Shajin, Baoan, + Shenzhen GuangDong 86 + CHINA + +00-16-C6 (hex) North Atlantic Industries +0016C6 (base 16) North Atlantic Industries + 170 Wilbur Place + Bohemia NY 11716 + UNITED STATES + +00-16-C7 (hex) Cisco Systems +0016C7 (base 16) Cisco Systems + 80 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-16-C8 (hex) Cisco Systems +0016C8 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-16-C9 (hex) NAT Seattle, Inc. +0016C9 (base 16) NAT Seattle, Inc. + 22125 17th Ave SE + Bothell WA 98021 + UNITED STATES + +00-16-CA (hex) Nortel +0016CA (base 16) Nortel + 8200 Dixie Road, Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-16-CB (hex) Apple Computer +0016CB (base 16) Apple Computer + 1 Infinite Loop MS:35GPO + Cupertino CA 95014 + UNITED STATES + +00-16-CC (hex) Xcute Mobile Corp. +0016CC (base 16) Xcute Mobile Corp. + 3F. No.25, Ally15, Lane 120, Sec.1, Neihu Rd. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-16-CD (hex) HIJI HIGH-TECH CO., LTD. +0016CD (base 16) HIJI HIGH-TECH CO., LTD. + Ohga 8133 + Hiji + Hayami Oita 879-1504 + JAPAN + +00-16-CE (hex) Hon Hai Precision Ind. Co., Ltd. +0016CE (base 16) Hon Hai Precision Ind. Co., Ltd. + 66, Chung Shan Rd. Tu-Cheng + Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-16-CF (hex) Hon Hai Precision Ind. Co., Ltd. +0016CF (base 16) Hon Hai Precision Ind. Co., Ltd. + 66, Chung Shan Rd. Tu-Cheng + Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-16-D0 (hex) ATech elektronika d.o.o. +0016D0 (base 16) ATech elektronika d.o.o. + Bac pri Materiji 30 + Materija SI 6242 + SLOVENIA + +00-16-D1 (hex) ZAT a.s. +0016D1 (base 16) ZAT a.s. + K Podlesi 541 + Pribram VI 26180 + CZECH REPUBLIC + +00-16-D2 (hex) Caspian +0016D2 (base 16) Caspian + 170 Baytech Drive + San Jose CA 95134 + UNITED STATES + +00-16-D3 (hex) Wistron Corporation +0016D3 (base 16) Wistron Corporation + 21F, 88, Sec.1, Hsin Tai Wu Rd., Hsichih, + Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-16-D4 (hex) Compal Communications, Inc. +0016D4 (base 16) Compal Communications, Inc. + 7th, FL, No. 319, Sec. 4, Pa-Teh rd. + Taipei 886 + TAIWAN, REPUBLIC OF CHINA + +00-16-D5 (hex) Synccom Co., Ltd +0016D5 (base 16) Synccom Co., Ltd + #306 Myungi e-space 218-20 + Anyang7-dong Manan-gu + Anyang-si Kyungki-do 430-817 + KOREA, REPUBLIC OF + +00-16-D6 (hex) TDA Tech Pty Ltd +0016D6 (base 16) TDA Tech Pty Ltd + 210 / 54 Currie Street + Adelaide South Australia 5000 + AUSTRALIA + +00-16-D7 (hex) Sunways AG +0016D7 (base 16) Sunways AG + Macairestr.3-5 + Konstanz Baden Württemberg 78467 + GERMANY + +00-16-D8 (hex) Senea AB +0016D8 (base 16) Senea AB + Företagsallen 12 + Åkersberga 18484 + SWEDEN + +00-16-D9 (hex) NINGBO BIRD CO.,LTD. +0016D9 (base 16) NINGBO BIRD CO.,LTD. + No.999 Dacheng East Road + Fenghua Zhejiang 315500 + CHINA + +00-16-DA (hex) Futronic Technology Co. Ltd. +0016DA (base 16) Futronic Technology Co. Ltd. + Room 1016A, 10/F., Profit Ind. Bldg., + 1-15 Kwai Fung Crescent, + Kwai Chung 00000 + HONG KONG + +00-16-DB (hex) Samsung Electronics Co., Ltd. +0016DB (base 16) Samsung Electronics Co., Ltd. + #94-1, Imsoo-Dong + Gumi-City Gyeong-Buk 730-350 + KOREA, REPUBLIC OF + +00-16-DC (hex) ARCHOS +0016DC (base 16) ARCHOS + 12 rue AMPERE + IGNY ESSONNES 91430 + FRANCE + +00-16-DD (hex) Gigabeam Corporation +0016DD (base 16) Gigabeam Corporation + 407 Springpark Place + Ste 900 + Herndon VA 20170 + UNITED STATES + +00-16-DE (hex) FAST Inc +0016DE (base 16) FAST Inc + 905 Honeyspot Rd + Stratford CT 06615 + UNITED STATES + +00-16-DF (hex) Lundinova AB +0016DF (base 16) Lundinova AB + Dalbyvagen 1 + Lund Skaane SE-224 60 + SWEDEN + +00-16-E0 (hex) 3Com Ltd +0016E0 (base 16) 3Com Ltd + Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts HP2 4NW + UNITED KINGDOM + +00-16-E1 (hex) SiliconStor, Inc. +0016E1 (base 16) SiliconStor, Inc. + 48430 Lakeview Blvd. + Fremont CA 94538 + UNITED STATES + +00-16-E2 (hex) American Fibertek, Inc. +0016E2 (base 16) American Fibertek, Inc. + 120 Belmont Drive + Somerset New Jersey 08873-1204 + UNITED STATES + +00-16-E3 (hex) ASKEY COMPUTER CORP. +0016E3 (base 16) ASKEY COMPUTER CORP. + 10F, NO.119, CHIENKANG RD., + CHUNG-HO, TAIPEI 235 + TAIWAN, REPUBLIC OF CHINA + +00-16-E4 (hex) VANGUARD SECURITY ENGINEERING CORP. +0016E4 (base 16) VANGUARD SECURITY ENGINEERING CORP. + 3, LANE 32, KSO CHING RD. + YANGMEI TAOYUAN 326 + TAIWAN, REPUBLIC OF CHINA + +00-16-E5 (hex) FORDLEY DEVELOPMENT LIMITED +0016E5 (base 16) FORDLEY DEVELOPMENT LIMITED + ROOM 706, 7TH FLOOR, YU SUNG BOON BUILDING, 107-111 DES VOEUX ROAD, CENTRAL, + HONG KONG + +00-16-E6 (hex) GIGA-BYTE TECHNOLOGY CO.,LTD. +0016E6 (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD. + Pin-Jen City, Taoyuan + 324 + TAIWAN, REPUBLIC OF CHINA + +00-16-E7 (hex) Dynamix Promotions Limited +0016E7 (base 16) Dynamix Promotions Limited + 788-790, Finchley Road + London NW11 7TJ + UNITED KINGDOM + +00-16-E8 (hex) Sigma Designs, Inc. +0016E8 (base 16) Sigma Designs, Inc. + 1778 McCarthy Blvd. + Milpitas CA 95035 + UNITED STATES + +00-16-E9 (hex) Tiba Medical Inc +0016E9 (base 16) Tiba Medical Inc + 5024 Lakewood Drive + Plano TX 75093 + UNITED STATES + +00-16-EA (hex) Intel Corporation +0016EA (base 16) Intel Corporation + Lot 8, Jalan Hi-Tech Park 2/3 + Kulim Hi-Tech Park Kulim 09000 + MALAYSIA + +00-16-EB (hex) Intel Corporation +0016EB (base 16) Intel Corporation + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park Kedah 09000 + MALAYSIA + +00-16-EC (hex) Elitegroup Computer Systems Co., Ltd. +0016EC (base 16) Elitegroup Computer Systems Co., Ltd. + No. 22, Alley 38, Lane 91, Sec. 1, Nei Hu Road, + Taipei 11441 + TAIWAN, REPUBLIC OF CHINA + +00-16-ED (hex) Integrian, Inc. +0016ED (base 16) Integrian, Inc. + 511 Davis Drive + Suite 300 + Morrisville NC 27560 + UNITED STATES + +00-16-EE (hex) RoyalDigital Inc. +0016EE (base 16) RoyalDigital Inc. + 8F., No.308, Sec.1, Neihu Rd. + Neihu District, + Taipei City 114 + TAIWAN, REPUBLIC OF CHINA + +00-16-EF (hex) Koko Fitness, Inc. +0016EF (base 16) Koko Fitness, Inc. + 136 Longwater Drive + Norwell MA 02061 + UNITED STATES + +00-16-F0 (hex) Zermatt Systems, Inc +0016F0 (base 16) Zermatt Systems, Inc + 650 Castro St Suite 300 + Mountain View CA 94041 + UNITED STATES + +00-16-F1 (hex) OmniSense, LLC +0016F1 (base 16) OmniSense, LLC + 2 Robin Drive + Ladys Island SC 29907 + UNITED STATES + +00-16-F2 (hex) Dmobile System Co., Ltd. +0016F2 (base 16) Dmobile System Co., Ltd. + 2F, No.13-20, Sec.6, Mincyuan E.Rd, + Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-16-F3 (hex) CAST Information Co., Ltd +0016F3 (base 16) CAST Information Co., Ltd + 5F MSA Bldg. 891-43 Dacchi-Dong, + gangnam-Gu + SEOUL 135-280 + KOREA, REPUBLIC OF + +00-16-F4 (hex) Eidicom Co., Ltd. +0016F4 (base 16) Eidicom Co., Ltd. + Polychem B/D 4th Floor, 900-1 + Kwanyang-dong, Dongan-ku + Anyang-si Kyeonggi-do 431-060 + KOREA, REPUBLIC OF + +00-16-F5 (hex) Dalian Golden Hualu Digital Technology Co.,Ltd +0016F5 (base 16) Dalian Golden Hualu Digital Technology Co.,Ltd + No.1 Hua Road,Qixianling + Dalian LiaoNing 116023 + CHINA + +00-16-F6 (hex) Video Products Group +0016F6 (base 16) Video Products Group + 1600 Emerson Avenue + Oxnard California 93033 + UNITED STATES + +00-16-F7 (hex) L-3 Communications, Electrodynamics, Inc. +0016F7 (base 16) L-3 Communications, Electrodynamics, Inc. + 1200 Hicks Rd. + Rolling Meadows IL 60008 + UNITED STATES + +00-16-F8 (hex) AVIQTECH TECHNOLOGY CO., LTD. +0016F8 (base 16) AVIQTECH TECHNOLOGY CO., LTD. + 6F 12, Li-hsin Road, SBIP + Hsin-chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-16-F9 (hex) CETRTA POT, d.o.o., Kranj +0016F9 (base 16) CETRTA POT, d.o.o., Kranj + Planina 3 + Kranj SI 4000 + SLOVENIA + +00-16-FA (hex) ECI Telecom Ltd. +0016FA (base 16) ECI Telecom Ltd. + 30 Hasivim St. + Petah Tikva 49133 + ISRAEL + +00-16-FB (hex) SHENZHEN MTC CO.,LTD. +0016FB (base 16) SHENZHEN MTC CO.,LTD. + 5/F BenYuan Bldg,6015 ShenNan Road + ShenZhen GuangDong 518040 + CHINA + +00-16-FC (hex) TOHKEN CO.,LTD. +0016FC (base 16) TOHKEN CO.,LTD. + 2-16-20 Tamagawa + Chofu Tokyo 182-0025 + JAPAN + +00-16-FD (hex) Jaty Electronics +0016FD (base 16) Jaty Electronics + Jaty Bldg 10F, 1659-5 Bongchun11-Dong + Kwanak-Ku + Seoul 151-832 + KOREA, REPUBLIC OF + +00-16-FE (hex) Alps Electric Co., Ltd +0016FE (base 16) Alps Electric Co., Ltd + 1-2-1, Okinouchi, + Soma-city, Fukushima-pref., 976-8501 + JAPAN + +00-16-FF (hex) Wamin Optocomm Mfg Corp +0016FF (base 16) Wamin Optocomm Mfg Corp + No. 239 Qiaohe Road + Zhonghe City Taipei County 235 + TAIWAN, REPUBLIC OF CHINA + +00-17-00 (hex) Motorola MDb +001700 (base 16) Motorola MDb + 600 N. US Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-17-01 (hex) KDE, Inc. +001701 (base 16) KDE, Inc. + KDE TOWN, 42-7, Mangwol-dong + Hanam Gyeonggi-do 465-150 + KOREA, REPUBLIC OF + +00-17-02 (hex) Osung Midicom Co., Ltd +001702 (base 16) Osung Midicom Co., Ltd + 231-18, Dorim2-dong, + Seoul, Youngdeungpo-gu 150-832 + KOREA, REPUBLIC OF + +00-17-03 (hex) MOSDAN Internation Co.,Ltd +001703 (base 16) MOSDAN Internation Co.,Ltd + No.74 Cheggung Shintsuen,Shanhua Jen, + Tainan 741 + TAIWAN, REPUBLIC OF CHINA + +00-17-04 (hex) Shinco Electronics Group Co.,Ltd +001704 (base 16) Shinco Electronics Group Co.,Ltd + No.5 Waihuan Road + Changzhou Jiangsu 213022 + CHINA + +00-17-05 (hex) Methode Electronics +001705 (base 16) Methode Electronics + 7401 W. Wilson + Chicago IL 60706 + UNITED STATES + +00-17-06 (hex) Techfaith Wireless Communication Technology Limited. +001706 (base 16) Techfaith Wireless Communication Technology Limited. + 2/F M8 West No.1 Jiu Xian Qiao Dong Road, + Chao Yang District + Beijing 100016 + CHINA + +00-17-07 (hex) InGrid, Inc +001707 (base 16) InGrid, Inc + 920 Cassatt Rd + Suite 220 + Berwyn Pa 19312 + UNITED STATES + +00-17-08 (hex) Hewlett Packard +001708 (base 16) Hewlett Packard + 20555 State Highway 249 + Houston TX 77070 + UNITED STATES + +00-17-09 (hex) Exalt Communications +001709 (base 16) Exalt Communications + 580 Division Street + Campbell CA 95008 + UNITED STATES + +00-17-0A (hex) INEW DIGITAL COMPANY +00170A (base 16) INEW DIGITAL COMPANY + Supply Bureau 3th floor KT&G 203-1, + Pyong chon-dong, Daedeog + Daejeon 306-712 + KOREA, REPUBLIC OF + +00-17-0B (hex) Contela, Inc. +00170B (base 16) Contela, Inc. + 6-8 Soonae-dong, Bundang-gu, + 5th Floor, Korea First Bldg., + Sungnam Kyunggi-do 463-825 + KOREA, REPUBLIC OF + +00-17-0C (hex) GeoSentric OYj +00170C (base 16) GeoSentric OYj + P.O.Box 84 + FI-24101 Salo + FINLAND + +00-17-0D (hex) Dust Networks Inc. +00170D (base 16) Dust Networks Inc. + 30695 Huntwood Ave. + Hayward Ca. 94544 + UNITED STATES + +00-17-0E (hex) Cisco Systems +00170E (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-17-0F (hex) Cisco Systems +00170F (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-17-10 (hex) Casa Systems Inc. +001710 (base 16) Casa Systems Inc. + 10, New England Business Center Dr. + Suite 110 + Andover MA 01810 + UNITED STATES + +00-17-11 (hex) GE Healthcare Bio-Sciences AB +001711 (base 16) GE Healthcare Bio-Sciences AB + Björkgatan 30 + Uppsala SE 75184 + SWEDEN + +00-17-12 (hex) ISCO International +001712 (base 16) ISCO International + 1001 Cambridge Drive + Elk Grove Village IL 60007 + UNITED STATES + +00-17-13 (hex) Tiger NetCom +001713 (base 16) Tiger NetCom + J-15 Mudan Cun, Yijing Huayuan, + Aiguo Road, Luohu District, + Shenzhen Guangdong 518003 + CHINA + +00-17-14 (hex) BR Controls Nederland bv +001714 (base 16) BR Controls Nederland bv + Branderweg 1 + Zwolle Overijssel 8042 PD + NETHERLANDS + +00-17-15 (hex) Qstik +001715 (base 16) Qstik + Cartel Business Estate + Edinburgh Way + Harlow Essex CM20 2TT + UNITED KINGDOM + +00-17-16 (hex) Qno Technology Inc. +001716 (base 16) Qno Technology Inc. + 6F-2, No.25, Puding Road + Hsinchu Taiwan 300 + TAIWAN, REPUBLIC OF CHINA + +00-17-17 (hex) Leica Geosystems AG +001717 (base 16) Leica Geosystems AG + Heinrich Wild Strasse + Heerbrugg St. Gallen CH-9435 + SWITZERLAND + +00-17-18 (hex) Vansco Electronics Oy +001718 (base 16) Vansco Electronics Oy + Tiilenlyojankatu 5 + FORSSA 30101 + FINLAND + +00-17-19 (hex) AudioCodes USA, Inc +001719 (base 16) AudioCodes USA, Inc + 27 World's Fair Drive + Somerset NJ 08873 + UNITED STATES + +00-17-1A (hex) Winegard Company +00171A (base 16) Winegard Company + 3000 Kirkwood Street + Burlington IA 52601 + UNITED STATES + +00-17-1B (hex) Innovation Lab Corp. +00171B (base 16) Innovation Lab Corp. + 12FL., No. 285, Sec. 2, TiDing Blvd., + Taipei 11493 + TAIWAN, REPUBLIC OF CHINA + +00-17-1C (hex) NT MicroSystems, Inc. +00171C (base 16) NT MicroSystems, Inc. + 1-5-3-2F Tamagawadai + Setagaya Tokyo 158-0096 + JAPAN + +00-17-1D (hex) DIGIT +00171D (base 16) DIGIT + Via Pasteur , 1/3 + S.Pietro Mosezzo NOVARA 28060 + ITALY + +00-17-1E (hex) Theo Benning GmbH & Co. KG +00171E (base 16) Theo Benning GmbH & Co. KG + Muensterstraße 135-137 + Bocholt NRW 46397 + GERMANY + +00-17-1F (hex) IMV Corporation +00171F (base 16) IMV Corporation + 2-6-10 Takejima + Nishiyodogawa-ku + Osaka 555-0011 + JAPAN + +00-17-20 (hex) Image Sensing Systems, Inc. +001720 (base 16) Image Sensing Systems, Inc. + 1600 University Ave. W. + Suite 500 + St. Paul MN 55104 + UNITED STATES + +00-17-21 (hex) FITRE S.p.A. +001721 (base 16) FITRE S.p.A. + Via Valsolda, 15 + MILAN MILANO 20142 + ITALY + +00-17-22 (hex) Hanazeder Electronic GmbH +001722 (base 16) Hanazeder Electronic GmbH + J.M. Dimmelstr 10 + Ried i. I. Oberösterreich 4910 + AUSTRIA + +00-17-23 (hex) Summit Data Communications +001723 (base 16) Summit Data Communications + 526 South Main Street + Suite 805 + Akron Ohio 44311 + UNITED STATES + +00-17-24 (hex) Studer Professional Audio GmbH +001724 (base 16) Studer Professional Audio GmbH + Althardstrasse 30 + Regensdorf Zürich CH-8105 + SWITZERLAND + +00-17-25 (hex) Liquid Computing +001725 (base 16) Liquid Computing + 340 Terry Fox Drive + Suite 300 + Ottawa Ontario K2K 3A2 + CANADA + +00-17-26 (hex) m2c Electronic Technology Ltd. +001726 (base 16) m2c Electronic Technology Ltd. + 2403, 24/F, Nanyang Plaza + 57 Hung To Road + Kwuntong Hong Kong 999 999 + CHINA + +00-17-27 (hex) Thermo Ramsey Italia s.r.l. +001727 (base 16) Thermo Ramsey Italia s.r.l. + Strada Rivoltana km 6/7 + Rodano Milano 20090 + ITALY + +00-17-28 (hex) Selex Communications +001728 (base 16) Selex Communications + Via Pieragostini 80 + Genova 16151 + ITALY + +00-17-29 (hex) Ubicod Co.LTD +001729 (base 16) Ubicod Co.LTD + 7F Chun-gin Bldg, 53-5 Wonhyo-ro + Yongsan-gu + Seoul 140-719 + KOREA, REPUBLIC OF + +00-17-2A (hex) Proware Technology Corp. +00172A (base 16) Proware Technology Corp. + 6Fl., No. 4, Alley 1, Lane 235, PaoChao Rd. + Hsin Tien City Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-17-2B (hex) Global Technologies Inc. +00172B (base 16) Global Technologies Inc. + 4/F Kicox Bldg.,188-5,Guro-Dong,Guro-gu, + Seoul 152-848 + KOREA, REPUBLIC OF + +00-17-2C (hex) TAEJIN INFOTECH +00172C (base 16) TAEJIN INFOTECH + 6F Woolim e-Biz Center, 170-5 + Guro-Dong, Guro-Gu, + Seoul 152-769 + KOREA, REPUBLIC OF + +00-17-2D (hex) Axcen Photonics Corporation +00172D (base 16) Axcen Photonics Corporation + 6F, No. 119, Baujung Rd., + Shindian City, Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-17-2E (hex) FXC Inc. +00172E (base 16) FXC Inc. + 10-16 6F, Nihonbashi Tomizawa-Chou, Chuo-ku + Tokyo 103-0006 + JAPAN + +00-17-2F (hex) NeuLion Incorporated +00172F (base 16) NeuLion Incorporated + 1600 Old Country Road + Plainview NY 11803 + UNITED STATES + +00-17-30 (hex) Automation Electronics +001730 (base 16) Automation Electronics + 111 Big Horn Rd. + Casper Wy 82601 + UNITED STATES + +00-17-31 (hex) ASUSTek COMPUTER INC. +001731 (base 16) ASUSTek COMPUTER INC. + No.5 Shing Yeh Street,Kwei Shan Hsiang,Taoyuan + Taipei 333 + TAIWAN, REPUBLIC OF CHINA + +00-17-32 (hex) Science-Technical Center "RISSA" +001732 (base 16) Science-Technical Center "RISSA" + st. Abramtsevskaja, h.9 + Moscow 128572 + RUSSIAN FEDERATION + +00-17-33 (hex) neuf cegetel +001733 (base 16) neuf cegetel + 40-42 quai du point du jour + Boulogne Billancourt Hauts de Seine 92659 + FRANCE + +00-17-34 (hex) LGC Wireless Inc. +001734 (base 16) LGC Wireless Inc. + 2540 Junction Ave. + San Jose California 95134-1902 + UNITED STATES + +00-17-35 (hex) PRIVATE +001735 (base 16) + +00-17-36 (hex) iiTron Inc. +001736 (base 16) iiTron Inc. + 88 Mercy St. + Mountain View CA 94041 + UNITED STATES + +00-17-37 (hex) Industrie Dial Face S.p.A. +001737 (base 16) Industrie Dial Face S.p.A. + via Canzo, 4 + Peschiera Borromeo Milano 20068 + ITALY + +00-17-38 (hex) XIV +001738 (base 16) XIV + Azrieli Center 1 + Tel Aviv 67021 + ISRAEL + +00-17-39 (hex) Bright Headphone Electronics Company +001739 (base 16) Bright Headphone Electronics Company + 8F, 109, Li De Street + Chung Ho City Taipei County 235 + TAIWAN, REPUBLIC OF CHINA + +00-17-3A (hex) Edge Integration Systems Inc. +00173A (base 16) Edge Integration Systems Inc. + 1330 Broadway + Suite 1201 + Oakland CA 94612 + UNITED STATES + +00-17-3B (hex) Arched Rock Corporation +00173B (base 16) Arched Rock Corporation + 657 Mission St. Ste 600 + San Francisco CA 94105-4120 + UNITED STATES + +00-17-3C (hex) Extreme Engineering Solutions +00173C (base 16) Extreme Engineering Solutions + 3225 Deming Way + Suite 120 + Middleton WI 53562 + UNITED STATES + +00-17-3D (hex) Neology +00173D (base 16) Neology + 13000 Gregg Street Suite A + Poway CA 92064 + UNITED STATES + +00-17-3E (hex) LeucotronEquipamentos Ltda. +00173E (base 16) LeucotronEquipamentos Ltda. + Rua Jorge Dionisio Barbosa, 312 + Santa Rita do Sapucai Minas Gerais 37.540-000 + BRAZIL + +00-17-3F (hex) Belkin Corporation +00173F (base 16) Belkin Corporation + 501 W. Walnut Street + Compton CA 90220-5221 + UNITED STATES + +00-17-40 (hex) Technologies Labtronix +001740 (base 16) Technologies Labtronix + 2125, rue Letendre Suite 420 + Drummondville Québec J2C 7G1 + CANADA + +00-17-41 (hex) DEFIDEV +001741 (base 16) DEFIDEV + 27 Avenue de Verdun + Vanves 92170 + FRANCE + +00-17-42 (hex) FUJITSU LIMITED +001742 (base 16) FUJITSU LIMITED + Co-mail No.H1021 + 1-1, Kamikodanaka 4-chome, Nakahara-ku + Kawasaki Kanagawa 211-8588 + JAPAN + +00-17-43 (hex) Deck Srl +001743 (base 16) Deck Srl + Via Fabio Filzi 2 + Milan 20124 + ITALY + +00-17-44 (hex) Araneo Ltd. +001744 (base 16) Araneo Ltd. + 103 Medinat Hayehudim + Herzliya 46733 + ISRAEL + +00-17-45 (hex) INNOTZ CO., Ltd +001745 (base 16) INNOTZ CO., Ltd + 14F, Prime Center 546-4 Guui-Dong Kwanggin-Gu + Seoul Seoul 143-200 + KOREA, REPUBLIC OF + +00-17-46 (hex) Freedom9 Inc. +001746 (base 16) Freedom9 Inc. + Unit 20, Hastings Plaza + Hastings Christ Church BB15149 + BARBADOS + +00-17-47 (hex) Trimble +001747 (base 16) Trimble + 935 Stewart Drive + 510 DeGuigne Drive + Sunnyvale CA 94085 + UNITED STATES + +00-17-48 (hex) Neokoros Brasil Ltda +001748 (base 16) Neokoros Brasil Ltda + Rua 86, numero 501, Setor Sul + Goiania Goias 74083-330 + BRAZIL + +00-17-49 (hex) HYUNDAE YONG-O-SA CO.,LTD +001749 (base 16) HYUNDAE YONG-O-SA CO.,LTD + 448-10, Hyuckjae B/D Seongnae, Kangdong-gu + Seoul 134-847 + KOREA, REPUBLIC OF + +00-17-4A (hex) SOCOMEC +00174A (base 16) SOCOMEC + rue de Westhouse + BENFELD CEDEX 67235 + FRANCE + +00-17-4B (hex) Nokia Danmark A/S +00174B (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-17-4C (hex) Millipore +00174C (base 16) Millipore + 1, rue Jacques Monod + Rond-point des Sangliers + Guyancourt 78280 + FRANCE + +00-17-4D (hex) DYNAMIC NETWORK FACTORY, INC. +00174D (base 16) DYNAMIC NETWORK FACTORY, INC. + 26250 EDEN LANDING RD. + HAYWARD CA 94545 + UNITED STATES + +00-17-4E (hex) Parama-tech Co.,Ltd. +00174E (base 16) Parama-tech Co.,Ltd. + 2-19-8, Sharyo, Higashi-ku + Fukuoka 812-0068 + JAPAN + +00-17-4F (hex) iCatch Inc. +00174F (base 16) iCatch Inc. + 10F-2, No. 109, Sec. 6, Mincyuan E. Rd., + Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-17-50 (hex) GSI Group, MicroE Systems +001750 (base 16) GSI Group, MicroE Systems + 8 Erie Drive + Natick MA 01760 + UNITED STATES + +00-17-51 (hex) Online Corporation +001751 (base 16) Online Corporation + 22F-3, No. 398, Huan Pei Road, + Chung Li Taoyuan 320 + TAIWAN, REPUBLIC OF CHINA + +00-17-52 (hex) DAGS, Inc +001752 (base 16) DAGS, Inc + C-510, Woolim Lion's Valley, 371-28, Gasan Dong, Geumcheon Ku + Seoul 153-786 + KOREA, REPUBLIC OF + +00-17-53 (hex) nFore Technology Inc. +001753 (base 16) nFore Technology Inc. + 10F, 41 Dong Xing Rd, + Taipei Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-17-54 (hex) Arkino Corporation., Ltd +001754 (base 16) Arkino Corporation., Ltd + No. 3 Lane 99, Industrial South Rd., + Ping Chen Industrial Zone, + Ping Chen City Tao Yuan Country 324 + TAIWAN, REPUBLIC OF CHINA + +00-17-55 (hex) GE Security +001755 (base 16) GE Security + 12345 SW Leveton Drive + Tualatin OR 97062 + UNITED STATES + +00-17-56 (hex) Vinci Labs Oy +001756 (base 16) Vinci Labs Oy + Finlaysoninkuja 21 A + Tampere Länsi-Suomi 33210 + FINLAND + +00-17-57 (hex) RIX TECHNOLOGY LIMITED +001757 (base 16) RIX TECHNOLOGY LIMITED + 17 DAI WANG STREET + TAI PO INDUSTRIAL ESTATE + TAI PO NEW TERRITORIES + HONG KONG + +00-17-58 (hex) ThruVision Ltd +001758 (base 16) ThruVision Ltd + Central 127, No.18 + Milton Park + Abingdon Oxfordshire OX14 4SA + UNITED KINGDOM + +00-17-59 (hex) Cisco Systems +001759 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-17-5A (hex) Cisco Systems +00175A (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-17-5B (hex) ACS Solutions Switzerland Ltd. +00175B (base 16) ACS Solutions Switzerland Ltd. + Frankenstrasse 70 + Bern- Buempliz 3018 + SWITZERLAND + +00-17-5C (hex) SHARP CORPORATION +00175C (base 16) SHARP CORPORATION + 22-22, NAGAIKE-CHO, + ABENO-KU + OSAKA 545-8522 + JAPAN + +00-17-5D (hex) Dongseo system. +00175D (base 16) Dongseo system. + 974-21 Mansu-dong Namdong-gu + Incheon In-Cheon 405-865 + KOREA, REPUBLIC OF + +00-17-5E (hex) Anta Systems, Inc. +00175E (base 16) Anta Systems, Inc. + 501 Valley Way + Milpitas CA 95035 + UNITED STATES + +00-17-5F (hex) XENOLINK Communications Co., Ltd. +00175F (base 16) XENOLINK Communications Co., Ltd. + 2nd Fl., Jungyou B/D 797-22 + Yeoksam-dong Gangnam-gu + Seoul 135-930 + KOREA, REPUBLIC OF + +00-17-60 (hex) Naito Densei Machida MFG.CO.,LTD +001760 (base 16) Naito Densei Machida MFG.CO.,LTD + 2-17-28 Fuchinobe + Sagamihara Kanagawa 229-0006 + JAPAN + +00-17-61 (hex) ZKSoftware Inc. +001761 (base 16) ZKSoftware Inc. + Xinweizai, Bantian, Longgang district,Shenzhen China 518129 + CHINA + +00-17-62 (hex) Solar Technology, Inc. +001762 (base 16) Solar Technology, Inc. + 7620 Cetronia Road + Allentown PA 18106 + UNITED STATES + +00-17-63 (hex) Essentia S.p.A. +001763 (base 16) Essentia S.p.A. + Via G.B. Vico, 29 + Cella (RE) Reggio Emilia 42040 + ITALY + +00-17-64 (hex) ATMedia GmbH +001764 (base 16) ATMedia GmbH + Stuhlsatzenhausweg 69 + Saarbruecken Saarland 66123 + GERMANY + +00-17-65 (hex) Nortel +001765 (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-17-66 (hex) Accense Technology, Inc. +001766 (base 16) Accense Technology, Inc. + 35 Tansumachi + Shinjyuku-ku Tokyo 1620833 + JAPAN + +00-17-67 (hex) Earforce AS +001767 (base 16) Earforce AS + P.O.Box 4 + Bryne 4349 + NORWAY + +00-17-68 (hex) Zinwave Ltd +001768 (base 16) Zinwave Ltd + Zinwave Ltd, Harston Mill + Harston + Cambridge Cambridgeshire CB2 5GG + UNITED KINGDOM + +00-17-69 (hex) Cymphonix Corp +001769 (base 16) Cymphonix Corp + 8871 S. Sandy Parkway, Suite 150 + Sandy UT 84070 + UNITED STATES + +00-17-6A (hex) Avago Technologies +00176A (base 16) Avago Technologies + 350 West Trimble Rd + San Jose CA 95131 + UNITED STATES + +00-17-6B (hex) Kiyon, Inc. +00176B (base 16) Kiyon, Inc. + 9381 Judicial Drive + Suite 160 + San Diego CA 92121 + UNITED STATES + +00-17-6C (hex) Pivot3, Inc. +00176C (base 16) Pivot3, Inc. + 6605 Cypresswood Drive, Ste 350 + Spring TX 77379-7741 + UNITED STATES + +00-17-6D (hex) CORE CORPORATION +00176D (base 16) CORE CORPORATION + 1-22-3, Sangenjaya, + Setagaya-ku Tokyo-to 154-8552 + JAPAN + +00-17-6E (hex) DUCATI SISTEMI +00176E (base 16) DUCATI SISTEMI + VIA MARCO EMILIO LEPIDO, 182 + BOLOGNA 40132 + ITALY + +00-17-6F (hex) PAX Computer Technology(Shenzhen) Ltd. +00176F (base 16) PAX Computer Technology(Shenzhen) Ltd. + 4/F, No.3 Building, Software Park, Second Central Science-Tech Road, High-Tech + industrial Park + Shenzhen GuangDong 518057 + CHINA + +00-17-70 (hex) Arti Industrial Electronics Ltd. +001770 (base 16) Arti Industrial Electronics Ltd. + Ger-San Sitesi, 657. Sokak + No: 80, Ergazi + Ankara TR 06370 + TURKEY + +00-17-71 (hex) APD Communications Ltd +001771 (base 16) APD Communications Ltd + Newlands Centre + Inglemire Lane + HULL East Yorkshire HU6 7TQ + UNITED KINGDOM + +00-17-72 (hex) ASTRO Strobel Kommunikationssysteme GmbH +001772 (base 16) ASTRO Strobel Kommunikationssysteme GmbH + Olefant 1-3 + Bergisch Gladbach NRW 51427 + GERMANY + +00-17-73 (hex) Laketune Technologies Co. Ltd +001773 (base 16) Laketune Technologies Co. Ltd + No. 38 Zijinghua Rd. Westlake District + Gudang Industrial Zone Building 11, 5F + Hangzhou Zhejiang 310013 + CHINA + +00-17-74 (hex) Elesta GmbH +001774 (base 16) Elesta GmbH + Gottlieb Daimler Strasse 1 + Konstanz 78467 + GERMANY + +00-17-75 (hex) TTE Germany GmbH +001775 (base 16) TTE Germany GmbH + Hermann-Schwer-Str. 3 + Villingen-Schwenningen Baden-Württemberg 78048 + GERMANY + +00-17-76 (hex) Meso Scale Diagnostics, LLC +001776 (base 16) Meso Scale Diagnostics, LLC + 9238 Gaither Rd. + Gaithersburg MD 20877 + UNITED STATES + +00-17-77 (hex) Obsidian Research Corporation +001777 (base 16) Obsidian Research Corporation + Edmonton Research Park + Suite 106 9650-20 Ave + Edmonton Alberta T6N1G1 + CANADA + +00-17-78 (hex) Central Music Co. +001778 (base 16) Central Music Co. + 0711-0712 Tower D, SOHO New Town + No. 88 Jianguo Road, Chaoyang District + Beijing 100022 + CHINA + +00-17-79 (hex) QuickTel +001779 (base 16) QuickTel + Cornishe El-Nile, Maasara + Cairo 11743 + EGYPT + +00-17-7A (hex) ASSA ABLOY AB +00177A (base 16) ASSA ABLOY AB + Theres Svenssons gata 15 + 41755 Goteborg + Goteborg 41755 + SWEDEN + +00-17-7B (hex) Azalea Networks inc +00177B (base 16) Azalea Networks inc + 673 S Milpitas Blvd + Suite 105 + Milpitas CA 95035 + UNITED STATES + +00-17-7C (hex) D-Link India Ltd +00177C (base 16) D-Link India Ltd + L-7, Verna Electronic city + Verna + Nagoa Goa 403 722 + INDIA + +00-17-7D (hex) IDT International Limited +00177D (base 16) IDT International Limited + Block C, 9/F, Kaiser Estate, Phase I + 41 Man Yue Street, Hunghom, Kowloon + HONG KONG + +00-17-7E (hex) Meshcom Technologies Inc. +00177E (base 16) Meshcom Technologies Inc. + Meritullinkatu 1 C + Helsinki 00170 + FINLAND + +00-17-7F (hex) Worldsmart Retech +00177F (base 16) Worldsmart Retech + 23 Hi-Tech Court + Eight Mile Plains QLD 4113 + AUSTRALIA + +00-17-80 (hex) Applera Holding B.V. Singapore Operations +001780 (base 16) Applera Holding B.V. Singapore Operations + Blk 33, Marsiling Industrial Estate Road 3, + #05-03 + 739256 + SINGAPORE + +00-17-81 (hex) Greystone Data System, Inc. +001781 (base 16) Greystone Data System, Inc. + 40800 Encycopedia Circle + Fremont CA 94538 + UNITED STATES + +00-17-82 (hex) LoBenn Inc. +001782 (base 16) LoBenn Inc. + 150 Katimavik Road + Suite 202 + Ottawa Ontario K2L 2N2 + CANADA + +00-17-83 (hex) Texas Instruments +001783 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-84 (hex) Motorola Mobile Devices +001784 (base 16) Motorola Mobile Devices + 600 N. Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-17-85 (hex) Sparr Electronics Ltd +001785 (base 16) Sparr Electronics Ltd + Sparr Electronics Ltd + 43 HMT Main Road Mathikere + Bangalore Karnataka 560054 + INDIA + +00-17-86 (hex) wisembed +001786 (base 16) wisembed + 808, hansin IT tower, 235 guro3-dong, guro-gu + Seoul 152-768 + KOREA, REPUBLIC OF + +00-17-87 (hex) Brother, Brother & Sons ApS +001787 (base 16) Brother, Brother & Sons ApS + Ved Amagerbanen 9 + Copenhagen S DK-2300 + DENMARK + +00-17-88 (hex) Philips Lighting BV +001788 (base 16) Philips Lighting BV + Mathildelaan 1 + Eindhoven Noord Brabant 5611 BD + NETHERLANDS + +00-17-89 (hex) Zenitron Corporation +001789 (base 16) Zenitron Corporation + No. 8, Lane 250, Sinhu 2nd Rd., Neihu District, + Taipei 11494 + TAIWAN, REPUBLIC OF CHINA + +00-17-8A (hex) DARTS TECHNOLOGIES CORP. +00178A (base 16) DARTS TECHNOLOGIES CORP. + 2F,No.119,Chien Kang Rd., + Chung-Ho Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-17-8B (hex) Teledyne Technologies Incorporated +00178B (base 16) Teledyne Technologies Incorporated + 12333 West Olympic Blvd + Los Angeles CA 90064 + UNITED STATES + +00-17-8C (hex) Independent Witness, Inc +00178C (base 16) Independent Witness, Inc + 1515 West 2200 South + Suite E + Salt Lake City UT 84119 + UNITED STATES + +00-17-8D (hex) Checkpoint Systems, Inc. +00178D (base 16) Checkpoint Systems, Inc. + 101 Wolf Drive + Thorofare NJ 08086 + UNITED STATES + +00-17-8E (hex) Gunnebo Cash Automation AB +00178E (base 16) Gunnebo Cash Automation AB + Fabriksgatan 10 + Göteborg 402 27 + SWEDEN + +00-17-8F (hex) NINGBO YIDONG ELECTRONIC CO.,LTD. +00178F (base 16) NINGBO YIDONG ELECTRONIC CO.,LTD. + No.65 Siming East Rd + Yuyao City, Zhejiang Province Zhejiang Province China P.C 315400 + CHINA + +00-17-90 (hex) HYUNDAI DIGITECH Co, Ltd. +001790 (base 16) HYUNDAI DIGITECH Co, Ltd. + 13th Fl, Choung-Jin Bldg, 53-5 + Wonhyo-ro 3Ga, Yongsan-Gu + Seoul 140-719 + KOREA, REPUBLIC OF + +00-17-91 (hex) LinTech GmbH +001791 (base 16) LinTech GmbH + Friedrich-Engels-Str. 35 + Berlin 13156 + GERMANY + +00-17-92 (hex) Falcom Wireless Comunications Gmbh +001792 (base 16) Falcom Wireless Comunications Gmbh + Gewerbering 6 + Langewiesen Thuringia 98704 + GERMANY + +00-17-93 (hex) Tigi Corporation +001793 (base 16) Tigi Corporation + 2070 Chain Bridge road + Suite G-100 + Vienna Va 22182 + UNITED STATES + +00-17-94 (hex) Cisco Systems +001794 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-17-95 (hex) Cisco Systems +001795 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-17-96 (hex) Rittmeyer AG +001796 (base 16) Rittmeyer AG + Inwilerriedstrasse 57 + Postfach 464 + Baar ZG CH-6341 + SWITZERLAND + +00-17-97 (hex) Telsy Elettronica S.p.A. +001797 (base 16) Telsy Elettronica S.p.A. + Corso Svizzera 185 + Torino 10149 + ITALY + +00-17-98 (hex) Azonic Technology Co., LTD +001798 (base 16) Azonic Technology Co., LTD + 15F-3, No. 163, Sec., 1 Keelung Rd. + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-17-99 (hex) SmarTire Systems Inc. +001799 (base 16) SmarTire Systems Inc. + Suite 150 + 13151 Vanier Place + Richmond BC V6V 2J1 + CANADA + +00-17-9A (hex) D-Link Corporation +00179A (base 16) D-Link Corporation + No. 289, Sinhu 3rd Rd., Neihu District, + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-17-9B (hex) Chant Sincere CO., LTD. +00179B (base 16) Chant Sincere CO., LTD. + 7F-2,NO.188,Sec 3,Ta Tung Rood, + Hsi Chih City Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-17-9C (hex) DEPRAG SCHULZ GMBH u. CO. +00179C (base 16) DEPRAG SCHULZ GMBH u. CO. + Kurfürstenring 12.18 + Amberg Bayern 92224 + GERMANY + +00-17-9D (hex) Kelman Limited +00179D (base 16) Kelman Limited + Rathdown Close + Lissue East Industrial Estate + Lisburn Co. Antrim BT28 2RB + UNITED KINGDOM + +00-17-9E (hex) Sirit Inc +00179E (base 16) Sirit Inc + 2525 Meridian Parkway + Suite 60 + Durham NC 27713 + UNITED STATES + +00-17-9F (hex) Apricorn +00179F (base 16) Apricorn + 12191 Kirkham RD + Poway California 92064 + UNITED STATES + +00-17-A0 (hex) RoboTech srl +0017A0 (base 16) RoboTech srl + Via Mazzini 82 + Sarzana (SP) I-19038 + ITALY + +00-17-A1 (hex) 3soft inc. +0017A1 (base 16) 3soft inc. + shinyoung bldg 4f, chungdam-dong, gangnam-gu + seoul 135-100 + KOREA, REPUBLIC OF + +00-17-A2 (hex) Camrivox Ltd. +0017A2 (base 16) Camrivox Ltd. + The Jeffreys Building + Cowley Road + Cambridge Cambridgeshire CB4 0WS + UNITED KINGDOM + +00-17-A3 (hex) MIX s.r.l. +0017A3 (base 16) MIX s.r.l. + Via Caldera, 21 + Milan I-20153 + ITALY + +00-17-A4 (hex) Global Data Services +0017A4 (base 16) Global Data Services + 20555 State Highway 249 + MS070405 + Houston TX 77070 + UNITED STATES + +00-17-A5 (hex) TrendChip Technologies Corp. +0017A5 (base 16) TrendChip Technologies Corp. + Suite 215, Bldg 53. 195-61 Sec.4, Chung Hsing Rd, + Chutung Hsinchu 310 + TAIWAN, REPUBLIC OF CHINA + +00-17-A6 (hex) YOSIN ELECTRONICS CO., LTD. +0017A6 (base 16) YOSIN ELECTRONICS CO., LTD. + 6F-2, No.17, Lan 174, Shin-Ming Road + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-17-A7 (hex) Mobile Computing Promotion Consortium +0017A7 (base 16) Mobile Computing Promotion Consortium + 3-5-12 Shiba-Koen + Minato-ku + Tokyo 105-0011 + JAPAN + +00-17-A8 (hex) EDM Corporation +0017A8 (base 16) EDM Corporation + 3-5-2 Itabashi + Itabashi-ku Tokyo 173-0004 + JAPAN + +00-17-A9 (hex) Sentivision +0017A9 (base 16) Sentivision + Marynarska 19a + Warsaw Mazowieckie 02-674 + POLAND + +00-17-AA (hex) elab-experience inc. +0017AA (base 16) elab-experience inc. + 104 Anotsupia + Anotsudai 4-6-1 + Tsu-shi mie prefecture 514-0131 + JAPAN + +00-17-AB (hex) Nintendo Co., Ltd. +0017AB (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO 601-8501 + JAPAN + +00-17-AC (hex) O'Neil Product Development Inc. +0017AC (base 16) O'Neil Product Development Inc. + 8 Mason + Irvine CA 92618 + UNITED STATES + +00-17-AD (hex) AceNet Corporation +0017AD (base 16) AceNet Corporation + 7F-4, No.146, Wen-Shin Road + Gueishan TAOYUAN + TAIWAN, REPUBLIC OF CHINA + +00-17-AE (hex) GAI-Tronics +0017AE (base 16) GAI-Tronics + Brunel Drive + Stretton Park + Burton Upon Trent Staffordshire DE13 0BZ + UNITED KINGDOM + +00-17-AF (hex) Enermet +0017AF (base 16) Enermet + Salvesenintie + Jyskä FIN-40420 + FINLAND + +00-17-B0 (hex) Nokia Danmark A/S +0017B0 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-17-B1 (hex) ACIST Medical Systems, Inc. +0017B1 (base 16) ACIST Medical Systems, Inc. + 7450 Flying Cloud Drive + Suite 150 + Eden Prairie MN 55344 + UNITED STATES + +00-17-B2 (hex) SK Telesys +0017B2 (base 16) SK Telesys + 4F, Kyungdong bldg, 4-4, Sunae-Dong, Pundang-Gu + Sungnam-City Kunggi-Do 463-825 + KOREA, REPUBLIC OF + +00-17-B3 (hex) Aftek Infosys Limited +0017B3 (base 16) Aftek Infosys Limited + Pawan Complex + Sheela Vihar Colony + Pune Maharashtra 411 038 + INDIA + +00-17-B4 (hex) Remote Security Systems, LLC +0017B4 (base 16) Remote Security Systems, LLC + 4806 Upper Brandon Place + Marietta Georgia 30068 + UNITED STATES + +00-17-B5 (hex) Peerless Systems Corporation +0017B5 (base 16) Peerless Systems Corporation + 2381 Rosecrans Avenue, Suite 400 + El Segundo CA 90245 + UNITED STATES + +00-17-B6 (hex) Aquantia +0017B6 (base 16) Aquantia + 700 Tasman Dr. + Milpitas CA 95035 + UNITED STATES + +00-17-B7 (hex) Tonze Technology Co. +0017B7 (base 16) Tonze Technology Co. + 5F-10, No.6, Lane 180, + Sec 6, Mincyuan East Road + Taipei 11490 + TAIWAN, REPUBLIC OF CHINA + +00-17-B8 (hex) NOVATRON CO., LTD. +0017B8 (base 16) NOVATRON CO., LTD. + #601 polaris bldg., 15-3 jeongja-dong, bundang-gu + Seong Nam Gyeonggi Do 463-811 + KOREA, REPUBLIC OF + +00-17-B9 (hex) Gambro Lundia AB +0017B9 (base 16) Gambro Lundia AB + BOX 10101 + LUND Skåne 22010 + SWEDEN + +00-17-BA (hex) SEDO CO., LTD. +0017BA (base 16) SEDO CO., LTD. + 302, KT Bldg, 1ANNEX, 35-1 + Yeongdeungpo-dong 8ga, Yeongdeungpo-gu + Seoul 150-038 + KOREA, REPUBLIC OF + +00-17-BB (hex) Syrinx Industrial Electronics +0017BB (base 16) Syrinx Industrial Electronics + De Factorij 13 + Zwaag Noord Holland 1689 AK + NETHERLANDS + +00-17-BC (hex) Touchtunes Music Corporation +0017BC (base 16) Touchtunes Music Corporation + 3 Place du Commerce + 4th Floor + Montréal Québec H3E 1H7 + CANADA + +00-17-BD (hex) Tibetsystem +0017BD (base 16) Tibetsystem + 6F IT Castle II 550-1 Gasan-dong + Seoul Geumcheon-gu 153-803 + KOREA, REPUBLIC OF + +00-17-BE (hex) Tratec Telecom B.V. +0017BE (base 16) Tratec Telecom B.V. + De Smalle Zijde 12 + Veenendaal NL0-3903 LP + NETHERLANDS + +00-17-BF (hex) Coherent Research Limited +0017BF (base 16) Coherent Research Limited + 8 Princess Mews + Horace Road + Kingston upon Thames Surrey KT1 2SZ + UNITED KINGDOM + +00-17-C0 (hex) PureTech Systems, Inc. +0017C0 (base 16) PureTech Systems, Inc. + 2075 W Pinnacle Peak Road #120 + Phoenix AZ 85027 + UNITED STATES + +00-17-C1 (hex) CM Precision Technology LTD. +0017C1 (base 16) CM Precision Technology LTD. + 2 Fl, No. 177, Chien-E Road, Chung-Ho City + Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-17-C2 (hex) Pirelli Broadband Solutions +0017C2 (base 16) Pirelli Broadband Solutions + v.Sarca 222 + Milano 20126 + ITALY + +00-17-C3 (hex) KTF Technologies Inc. +0017C3 (base 16) KTF Technologies Inc. + 4th Fl., Central Tower, 265-3, Seohyun-Dong + Bundnag-Gu + Sungnam-City Kyunggi-Do 463-769 + KOREA, DEMOCRATIC PEOPLE'S REPUBLI + +00-17-C4 (hex) Quanta Microsystems, INC. +0017C4 (base 16) Quanta Microsystems, INC. + 188 Wenhwa 2nd RD., Kueishan Hsiang + Taoyuan Shien 333 + TAIWAN, REPUBLIC OF CHINA + +00-17-C5 (hex) SonicWALL +0017C5 (base 16) SonicWALL + 1143 Borregas Ave + Sunnyvale CA 95126 + UNITED STATES + +00-17-C6 (hex) Labcal Technologies +0017C6 (base 16) Labcal Technologies + 400 Jean Lessage + Hall West Suite 30 + Quebec G1K 8W1 + CANADA + +00-17-C7 (hex) MARA Systems Consulting AB +0017C7 (base 16) MARA Systems Consulting AB + Instrumentvägen 45 + Stockholm 126 53 + SWEDEN + +00-17-C8 (hex) Kyocera Mita Corporation +0017C8 (base 16) Kyocera Mita Corporation + 2-14-9, Tamagawadai + Setagaya-Ward + Tokyo 158-8610 + JAPAN + +00-17-C9 (hex) Samsung Electronics Co., Ltd. +0017C9 (base 16) Samsung Electronics Co., Ltd. + 416, Maetan-3Dong, Yeongtong-Gu + Suwon Geyonggi-Do 443-742 + KOREA, REPUBLIC OF + +00-17-CA (hex) Qisda Corporation +0017CA (base 16) Qisda Corporation + 157 Shan Ying Road, + GueiShan Taoyuan, 333 + TAIWAN, REPUBLIC OF CHINA + +00-17-CB (hex) Juniper Networks +0017CB (base 16) Juniper Networks + 1194 North Mathilda Avenue + Sunnyvale California 94089-1206 + UNITED STATES + +00-17-CC (hex) Alcatel-Lucent +0017CC (base 16) Alcatel-Lucent + M/S 320 + 601 Data Dr. + Plano TX 75075 + UNITED STATES + +00-17-CD (hex) CEC Wireless R&D Ltd. +0017CD (base 16) CEC Wireless R&D Ltd. + West M5 Building,No.1 East Road + Jiuxianqiao Chao Yang District + Beijing 100016 + CHINA + +00-17-CE (hex) MB International Telecom Labs srl +0017CE (base 16) MB International Telecom Labs srl + Via Milano 255 + Baranzate di Bollate Milano 20021 + ITALY + +00-17-CF (hex) iMCA-GmbH +0017CF (base 16) iMCA-GmbH + Dorfstrasse 28b + Itzehoe Schleswig-Holstein 25524 + GERMANY + +00-17-D0 (hex) Opticom Communications, LLC +0017D0 (base 16) Opticom Communications, LLC + 1050 Connecticut Avenue, NW + Suite 1000 + Washington DC 20036 + UNITED STATES + +00-17-D1 (hex) Nortel +0017D1 (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-17-D2 (hex) THINLINX PTY LTD +0017D2 (base 16) THINLINX PTY LTD + 31 Carwoola Crescent + Mooloolaba Queensland 4557 + AUSTRALIA + +00-17-D3 (hex) Etymotic Research, Inc. +0017D3 (base 16) Etymotic Research, Inc. + 61 Martin Lane + Elk Grove Village IL 60061 + UNITED STATES + +00-17-D4 (hex) Monsoon Multimedia, Inc +0017D4 (base 16) Monsoon Multimedia, Inc + 1730 South Amphlett blvd. Suite 101 + San Mateo CA 94402 + UNITED STATES + +00-17-D5 (hex) Samsung Electronics Co., Ltd. +0017D5 (base 16) Samsung Electronics Co., Ltd. + #94-1, Imsoo-Dong + Gumi-City Gyeong-Buk 730-350 + KOREA, REPUBLIC OF + +00-17-D6 (hex) Bluechips Microhouse Co.,Ltd. +0017D6 (base 16) Bluechips Microhouse Co.,Ltd. + 212/2 M.10 Tambol Umong + Amphur Muang + Lamphun 51150 + THAILAND + +00-17-D7 (hex) ION Geophysical Corporation Inc. +0017D7 (base 16) ION Geophysical Corporation Inc. + 850 Dorothy + Suite 510 + Richardson Texas 75081 + UNITED STATES + +00-17-D8 (hex) Magnum Semiconductor, Inc. +0017D8 (base 16) Magnum Semiconductor, Inc. + 591 Yosemite Drive + Milpitas CA 95035 + UNITED STATES + +00-17-D9 (hex) AAI Corporation +0017D9 (base 16) AAI Corporation + P.O. Box 126 + Hunt Valley Maryland 21030 + UNITED STATES + +00-17-DA (hex) Spans Logic +0017DA (base 16) Spans Logic + 201 San Antonio Circle + #280 + Mountain View CA 94040 + UNITED STATES + +00-17-DB (hex) CANKO TECHNOLOGIES INC. +0017DB (base 16) CANKO TECHNOLOGIES INC. + 5 FL. DONG SUNG BLDG. 17-8 + YOIDO-DONG, YEONGDEUNGPO-KU + SEOUL 150-874 + KOREA, REPUBLIC OF + +00-17-DC (hex) DAEMYUNG ZERO1 +0017DC (base 16) DAEMYUNG ZERO1 + #809,Hyosung Intellian + 1594-1 Gwanyang-dong,Dongan-gu + Anyang-si Gyeonggi-do 431-060 + KOREA, DEMOCRATIC PEOPLE'S REPUBLI + +00-17-DD (hex) Clipsal Australia +0017DD (base 16) Clipsal Australia + PO Box 103 + Hindmarsh + Adelaide South Australia 5007 + AUSTRALIA + +00-17-DE (hex) Advantage Six Ltd +0017DE (base 16) Advantage Six Ltd + 208 George St + Shaw + OLDHAM Lancs OL2 8DR + UNITED KINGDOM + +00-17-DF (hex) Cisco Systems +0017DF (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-17-E0 (hex) Cisco Systems +0017E0 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-17-E1 (hex) DACOS Technologies Co., Ltd. +0017E1 (base 16) DACOS Technologies Co., Ltd. + 104 Daeryung-Technotown III 448 + Gasan-Dong + SEOUL Keumcheon-Gu 153-772 + KOREA, REPUBLIC OF + +00-17-E2 (hex) Motorola Mobile Devices +0017E2 (base 16) Motorola Mobile Devices + 600 N. Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-17-E3 (hex) Texas Instruments +0017E3 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-E4 (hex) Texas Instruments +0017E4 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-E5 (hex) Texas Instruments +0017E5 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-E6 (hex) Texas Instruments +0017E6 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-E7 (hex) Texas Instruments +0017E7 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-E8 (hex) Texas Instruments +0017E8 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-E9 (hex) Texas Instruments +0017E9 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-EA (hex) Texas Instruments +0017EA (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-EB (hex) Texas Instruments +0017EB (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-EC (hex) Texas Instruments +0017EC (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-17-ED (hex) WooJooIT Ltd. +0017ED (base 16) WooJooIT Ltd. + Hankooktire B/D 4th floor, 501-19, + Sinwol2 -dong, + Yangcheon-gu, Seoul 158-839 + KOREA, REPUBLIC OF + +00-17-EE (hex) Motorola CHS +0017EE (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92129 + UNITED STATES + +00-17-EF (hex) Blade Network Technologies, Inc. +0017EF (base 16) Blade Network Technologies, Inc. + 2350 Mission College Blvd + Suite 600 + Santa Clara CA 95054 + UNITED STATES + +00-17-F0 (hex) SZCOM Broadband Network Technology Co.,Ltd +0017F0 (base 16) SZCOM Broadband Network Technology Co.,Ltd + Room 602 No.8 Building ,Shenzhen Software Park, + Hi-Tech C.Zone ,Nanshan Area + Shenzhen Guangdong 518057 + CHINA + +00-17-F1 (hex) Renu Electronics Pvt Ltd +0017F1 (base 16) Renu Electronics Pvt Ltd + Sr No 2/6, Baner Road, + Baner, + Pune Maharashtra 411045 + INDIA + +00-17-F2 (hex) Apple Computer +0017F2 (base 16) Apple Computer + 1 Infinite Loop MS:35GPO + Cupertino CA 95014 + UNITED STATES + +00-17-F3 (hex) M/A-COM Wireless Systems +0017F3 (base 16) M/A-COM Wireless Systems + 12860 E. Lynchburg-Salem Turnpike + Forest 24551 + UNITED STATES + +00-17-F4 (hex) ZERON ALLIANCE +0017F4 (base 16) ZERON ALLIANCE + 3F DOORI BUILD. 244-14 bunji, Poi-dong, Gangnam-gu + SEOUL 135-965 + KOREA, REPUBLIC OF + +00-17-F5 (hex) LIG NEOPTEK +0017F5 (base 16) LIG NEOPTEK + 926 Gosaek-dong + Gwonseon-gu + Suwon-si Gyeonggi-do 441-813 + KOREA, REPUBLIC OF + +00-17-F6 (hex) Pyramid Meriden Inc. +0017F6 (base 16) Pyramid Meriden Inc. + 45 Gracey Ave. + Meriden CT 06451 + UNITED STATES + +00-17-F7 (hex) CEM Solutions Pvt Ltd +0017F7 (base 16) CEM Solutions Pvt Ltd + 49,Kanija Bhavan + Race Course Road + Bangalore Karnataka 560 001 + INDIA + +00-17-F8 (hex) Motech Industries Inc. +0017F8 (base 16) Motech Industries Inc. + 6F, No. 248, Sec. 3, Pei-Shen Rd., + Shen-Keng Hsiang + Taipei Hsien 222 + TAIWAN, REPUBLIC OF CHINA + +00-17-F9 (hex) Forcom Sp. z o.o. +0017F9 (base 16) Forcom Sp. z o.o. + Gajowa 6 + Poznan WLKP 60-815 + POLAND + +00-17-FA (hex) Microsoft Corporation +0017FA (base 16) Microsoft Corporation + One Microsoft Way + RED-B/1072 + Redmond Washington 98052-6399 + UNITED STATES + +00-17-FB (hex) FA +0017FB (base 16) FA + 628-7, Dungchon-Dong + Seoul Kangseo-Ku 157-838 + KOREA, REPUBLIC OF + +00-17-FC (hex) Suprema Inc. +0017FC (base 16) Suprema Inc. + 16F Parkview Office Tower, + Jeongja-dong, Bundang-gu, + Seongnam Gyeonggi 463-863 + KOREA, REPUBLIC OF + +00-17-FD (hex) Amulet Hotkey +0017FD (base 16) Amulet Hotkey + Cavalier Road + Heathfield Industrial Estate + Heathfield Devon TQ12 6TQ + UNITED KINGDOM + +00-17-FE (hex) TALOS SYSTEM INC. +0017FE (base 16) TALOS SYSTEM INC. + 6191 CORNERSTONE CT. STE #109 + SAN DIEGO CA 92121 + UNITED STATES + +00-17-FF (hex) PLAYLINE Co.,Ltd. +0017FF (base 16) PLAYLINE Co.,Ltd. + 1-4-21 MOTOAKASAKA + MINATOKU + TOKYO 107-0051 + JAPAN + +00-18-00 (hex) UNIGRAND LTD +001800 (base 16) UNIGRAND LTD + 7F-2, No.45, Jingde St., Jhonghe City, + Taipei County + 235 + TAIWAN, REPUBLIC OF CHINA + +00-18-01 (hex) Actiontec Electronics, Inc +001801 (base 16) Actiontec Electronics, Inc + 760 North Mary Ave + Sunnyvale CA 94086 + UNITED STATES + +00-18-02 (hex) Alpha Networks Inc. +001802 (base 16) Alpha Networks Inc. + No.8 Li-shing Seventh Road,Science-based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-18-03 (hex) ArcSoft Shanghai Co. LTD +001803 (base 16) ArcSoft Shanghai Co. LTD + 20th Floor, Suite (EAST) 2008, China Merchants Plaza, 333 + Shanghai 200041 + CHINA + +00-18-04 (hex) E-TEK DIGITAL TECHNOLOGY LIMITED +001804 (base 16) E-TEK DIGITAL TECHNOLOGY LIMITED + UNIT1520,15/F.,TOWER 2,GRAND CENTURY PLACE,193 PRINCE EDWARD ROAD WEST,KOWLOON, + HONG KONG + +00-18-05 (hex) Beijing InHand Networking Technology Co.,Ltd. +001805 (base 16) Beijing InHand Networking Technology Co.,Ltd. + 3/F,Building A,GEM Techchenter + No,9 3rd Street of Shangdi + Beijing 100085 + CHINA + +00-18-06 (hex) Hokkei Industries Co., Ltd. +001806 (base 16) Hokkei Industries Co., Ltd. + Imahira 432 + Hakusan Ishikawa 924-0827 + JAPAN + +00-18-07 (hex) Fanstel Corp. +001807 (base 16) Fanstel Corp. + 7466 E. Monte Cristo Ave. + Scottsdale Arizona 85260 + UNITED STATES + +00-18-08 (hex) SightLogix, Inc. +001808 (base 16) SightLogix, Inc. + 745 Alexander Road + Princeton NJ 08540 + UNITED STATES + +00-18-09 (hex) CRESYN +001809 (base 16) CRESYN + 8-22,Jamwon-dong + Seoul Seocho-Gu #137-902 + KOREA, REPUBLIC OF + +00-18-0A (hex) Meraki Networks, Inc. +00180A (base 16) Meraki Networks, Inc. + 132 Cherry St, Apt #1 + Cambridge MA 02139 + UNITED STATES + +00-18-0B (hex) Brilliant Telecommunications +00180B (base 16) Brilliant Telecommunications + 307 Orchard City Dr. + Suite 102 + Campbell CA 95008 + UNITED STATES + +00-18-0C (hex) Optelian Access Networks +00180C (base 16) Optelian Access Networks + 22A-1051 Baxter Road + Ottawa Ontario K2C 3P2 + CANADA + +00-18-0D (hex) Terabytes Server Storage Tech Corp +00180D (base 16) Terabytes Server Storage Tech Corp + 14257 E Don Julian Rd + City of Industry CA 91746 + UNITED STATES + +00-18-0E (hex) Avega Systems +00180E (base 16) Avega Systems + 59 Victoria Street + McMahons Point NSW 2060 + AUSTRALIA + +00-18-0F (hex) Nokia Danmark A/S +00180F (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V Denmark 1790V + DENMARK + +00-18-10 (hex) IPTrade S.A. +001810 (base 16) IPTrade S.A. + Parc Scientifique + Avenue des Chasseurs Ardennais, 4 + Sart-Tilman Wallonie 4031 + BELGIUM + +00-18-11 (hex) Neuros Technology International, LLC. +001811 (base 16) Neuros Technology International, LLC. + 650 W Lake St + Suite 330 + Chicago IL 60661 + UNITED STATES + +00-18-12 (hex) Beijing Xinwei Telecom Technology Co., Ltd. +001812 (base 16) Beijing Xinwei Telecom Technology Co., Ltd. + Xinwei Bldg., No. 7 Zhongguancun Software Park, + No. 8 Dongbeiwang West Road + Haidian District Beijing 100094 + CHINA + +00-18-13 (hex) Sony Ericsson Mobile Communications +001813 (base 16) Sony Ericsson Mobile Communications + Nya Vattentornet + Lund Skåne 22188 + SWEDEN + +00-18-14 (hex) Mitutoyo Corporation +001814 (base 16) Mitutoyo Corporation + 20-1, Sakado 1-chome, Takatsu-ku, + Kawasaki-shi 213-8533 + JAPAN + +00-18-15 (hex) GZ Technologies, Inc. +001815 (base 16) GZ Technologies, Inc. + Room 1, 5F., No.94, Baojhong Rd. + Sindian City + Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-18-16 (hex) Ubixon Co., Ltd. +001816 (base 16) Ubixon Co., Ltd. + Cheongdong Building 2F + 1344-29 Seocho dong Seocho ku + Seoul 137-070 + KOREA, REPUBLIC OF + +00-18-17 (hex) D. E. Shaw Research, LLC +001817 (base 16) D. E. Shaw Research, LLC + 120 W. 45th St., 33rd Floor + New York NY 10036 + UNITED STATES + +00-18-18 (hex) Cisco Systems +001818 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-18-19 (hex) Cisco Systems +001819 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-18-1A (hex) AVerMedia Technologies Inc. +00181A (base 16) AVerMedia Technologies Inc. + 7F, No. 137, Jian Yi Rd., + Chung Ho City Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-18-1B (hex) TaiJin Metal Co., Ltd. +00181B (base 16) TaiJin Metal Co., Ltd. + #95-9, Hangdong7-Ga, Joong-Gu + In Cheon 400-037 + KOREA, REPUBLIC OF + +00-18-1C (hex) Exterity Limited +00181C (base 16) Exterity Limited + Ridge Way, Hillend Industrial Estate + Dalgety Bay + Dunfermline Fife KY11 9JD + UNITED KINGDOM + +00-18-1D (hex) ASIA ELECTRONICS CO.,LTD +00181D (base 16) ASIA ELECTRONICS CO.,LTD + 620-3 DOCHEON-DONG + GWANGSAN-GU + GWANGJU 506-301 + KOREA, REPUBLIC OF + +00-18-1E (hex) GDX Technologies Ltd. +00181E (base 16) GDX Technologies Ltd. + 61-63 Back Sneddon Street + Paisley Renfrewshire PA3 2DD + UNITED KINGDOM + +00-18-1F (hex) Palmmicro Communications +00181F (base 16) Palmmicro Communications + Room 0611, Bldg.B Tsinghua Tongfang Technology Plaza + 1 Wangzhuang Road + Beijing 100083 + CHINA + +00-18-20 (hex) w5networks +001820 (base 16) w5networks + 48389 Fremont Blvd + Suite 106 + Fremont CA 94538 + UNITED STATES + +00-18-21 (hex) SINDORICOH +001821 (base 16) SINDORICOH + 277-22, 2ga, Sungsu-dong, Sungdong-gu, + Seoul 133-120 + KOREA, REPUBLIC OF + +00-18-22 (hex) CEC TELECOM CO.,LTD. +001822 (base 16) CEC TELECOM CO.,LTD. + 10thFL.CEC Building,6 Zhongguancun South Street + Beijing 100086 + CHINA + +00-18-23 (hex) Delta Electronics, Inc. +001823 (base 16) Delta Electronics, Inc. + 186 Ruey Kuang Road, Neihu, + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-18-24 (hex) Kimaldi Electronics, S.L. +001824 (base 16) Kimaldi Electronics, S.L. + Ctra. de Rubí, 292 B + Pol. Ind. Can Guitard + Terrassa Barcelona 08228 + SPAIN + +00-18-25 (hex) Wavion LTD +001825 (base 16) Wavion LTD + 6 Ha’yetsira Street + PO Box 580 + Yoqne’am-Illit 20692 + ISRAEL + +00-18-26 (hex) Cale Access AB +001826 (base 16) Cale Access AB + Box 1307 + Solna SE-171 25 + SWEDEN + +00-18-27 (hex) NEC PHILIPS UNIFIED SOLUTIONS NEDERLAND BV +001827 (base 16) NEC PHILIPS UNIFIED SOLUTIONS NEDERLAND BV + ANTON PHILIPSWEG 1 + HILVERSUM NH 1223KZ + NETHERLANDS + +00-18-28 (hex) e2v technologies (UK) ltd. +001828 (base 16) e2v technologies (UK) ltd. + 106 Waterhouse Lane + Chelmsford Essex CM1 2QU + UNITED KINGDOM + +00-18-29 (hex) Gatsometer +001829 (base 16) Gatsometer + Claes Tillyweg 2 + Haarlem Noord-Holland 2031 CW + NETHERLANDS + +00-18-2A (hex) Taiwan Video & Monitor +00182A (base 16) Taiwan Video & Monitor + 3F, 141 Jen Ai Rd Sec. 3 + Taipei City 106 + TAIWAN, REPUBLIC OF CHINA + +00-18-2B (hex) Softier +00182B (base 16) Softier + Tidhar 3 + Millenium bldg floor 11 + Ra'anana none 43665 + ISRAEL + +00-18-2C (hex) Ascend Networks, Inc. +00182C (base 16) Ascend Networks, Inc. + No. 4 - 4, Lane 413, ChungChan Road, + BenQuao City Taipei 220 + TAIWAN, REPUBLIC OF CHINA + +00-18-2D (hex) Artec Group OÜ +00182D (base 16) Artec Group OÜ + Türi 10C + Tallinn Harjumaa 11313 + ESTONIA + +00-18-2E (hex) XStreamHD, LLC +00182E (base 16) XStreamHD, LLC + 7900B Westpark Drive + Suite 200T + McLean VA 22102 + UNITED STATES + +00-18-2F (hex) Texas Instruments +00182F (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-18-30 (hex) Texas Instruments +001830 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-18-31 (hex) Texas Instruments +001831 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-18-32 (hex) Texas Instruments +001832 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-18-33 (hex) Texas Instruments +001833 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-18-34 (hex) Texas Instruments +001834 (base 16) Texas Instruments + 12500 TI Boulevard, MS 8723 + Dallas TX 75243 + UNITED STATES + +00-18-35 (hex) Thoratec / ITC +001835 (base 16) Thoratec / ITC + 2656 Patton Road + Roseville MN 55113 + UNITED STATES + +00-18-36 (hex) Reliance Electric Limited +001836 (base 16) Reliance Electric Limited + 2-3-2 Fukuura, Kanazawa-ku + Yokohama Kanagawa 236-8641 + JAPAN + +00-18-37 (hex) Universal ABIT Co., Ltd. +001837 (base 16) Universal ABIT Co., Ltd. + 7F, No. 323 Yangguang St., + Neihu Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-18-38 (hex) PanAccess Communications,Inc. +001838 (base 16) PanAccess Communications,Inc. + Floor 8,Tower B,Global Trade Center,36 Beisanhuandonglu,Dongcheng District + Beijing 100013 + CHINA + +00-18-39 (hex) Cisco-Linksys LLC +001839 (base 16) Cisco-Linksys LLC + 121 Theory + Irvine CA 92612 + UNITED STATES + +00-18-3A (hex) Westell Technologies +00183A (base 16) Westell Technologies + 750 N. Commons Dr. + Aurora IL 60504 + UNITED STATES + +00-18-3B (hex) CENITS Co., Ltd. +00183B (base 16) CENITS Co., Ltd. + 3F, Yangjae Bldg., 264-3 + Yangjae-Dong, Seocho-Gu + Seoul 137-130 + KOREA, REPUBLIC OF + +00-18-3C (hex) Encore Software Limited +00183C (base 16) Encore Software Limited + 6F Leo Complex + 44 Residency Cross Road + Bangalore Karnataka 560025 + INDIA + +00-18-3D (hex) Vertex Link Corporation +00183D (base 16) Vertex Link Corporation + Meitetsu Fudosan Takebashi Bldg 6F + 3-15 Kanda Nishikicho + Chiyoda-ku Tokyo 101-0054 + JAPAN + +00-18-3E (hex) Digilent, Inc +00183E (base 16) Digilent, Inc + 215 E. Main St. + Suite D + Pullman WA 99163 + UNITED STATES + +00-18-3F (hex) 2Wire, Inc +00183F (base 16) 2Wire, Inc + 1704 Automation Parkway + San Jose CA 95131 + UNITED STATES + +00-18-40 (hex) 3 Phoenix, Inc. +001840 (base 16) 3 Phoenix, Inc. + 13135 Lee Jackson Hwy + Suite 330 + Fairfax Virginia 22033 + UNITED STATES + +00-18-41 (hex) High Tech Computer Corp +001841 (base 16) High Tech Computer Corp + 23 Hsin Hua Rd. + Taoyuan 330 + TAIWAN, REPUBLIC OF CHINA + +00-18-42 (hex) Nokia Danmark A/S +001842 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 V + DENMARK + +00-18-43 (hex) Dawevision Ltd +001843 (base 16) Dawevision Ltd + 197 High Street + Cottenham Cambridge CB4 8RX + UNITED KINGDOM + +00-18-44 (hex) Heads Up Technologies, Inc. +001844 (base 16) Heads Up Technologies, Inc. + 2033 Chennault Drive, Suite 100 + Carrollton Texas 75006-5119 + UNITED STATES + +00-18-45 (hex) NPL Pulsar Ltd. +001845 (base 16) NPL Pulsar Ltd. + Zaharova, 18a + Penza 440044 + RUSSIAN FEDERATION + +00-18-46 (hex) Crypto S.A. +001846 (base 16) Crypto S.A. + V. Ipirou 45 + Marousi Athens 15125 + GREECE + +00-18-47 (hex) AceNet Technology Inc. +001847 (base 16) AceNet Technology Inc. + 133 Vienna Dr. + Milpitas CA 95035 + UNITED STATES + +00-18-48 (hex) Vecima Networks Inc. +001848 (base 16) Vecima Networks Inc. + 150 Cardinal Place + Saskatoon Sk S7L 6H7 + CANADA + +00-18-49 (hex) Pigeon Point Systems +001849 (base 16) Pigeon Point Systems + PO Box 66989 + Scotts Valley CA 95067 + UNITED STATES + +00-18-4A (hex) Catcher, Inc. +00184A (base 16) Catcher, Inc. + 5864 Owens Ave. + Suite 101 + Carlsbad CA 92008 + UNITED STATES + +00-18-4B (hex) Las Vegas Gaming, Inc. +00184B (base 16) Las Vegas Gaming, Inc. + 4000 West Ali Baba Lane, Suite D + Las Vegas Nevada 89118 + UNITED STATES + +00-18-4C (hex) Bogen Communications +00184C (base 16) Bogen Communications + 50 Spring St. + Ramsey NJ 07446 + UNITED STATES + +00-18-4D (hex) Netgear Inc. +00184D (base 16) Netgear Inc. + 4500 Great America Parkway + Santa Clara CA 95054 + UNITED STATES + +00-18-4E (hex) Lianhe Technologies, Inc. +00184E (base 16) Lianhe Technologies, Inc. + 5F, N0. 29, Lane 66, Ruiguang Rd., Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-18-4F (hex) 8 Ways Technology Corp. +00184F (base 16) 8 Ways Technology Corp. + 2F-1, No. 216, Sec. 3, Roosevelt Rd. + Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-18-50 (hex) Secfone Kft +001850 (base 16) Secfone Kft + 51 Bercsenyi str + Jaszbereny 5100 + HUNGARY + +00-18-51 (hex) SWsoft +001851 (base 16) SWsoft + 13755 Sunrise Valley Drive, Suite 600 + Herndon VA 20171 + UNITED STATES + +00-18-52 (hex) StorLink Semiconductors, Inc. +001852 (base 16) StorLink Semiconductors, Inc. + 1804 N. Shoreline Boulevard + Suite 240 + Mountain View CA 94043 + UNITED STATES + +00-18-53 (hex) Atera Networks LTD. +001853 (base 16) Atera Networks LTD. + 31, Habarzel St. + Ramat Hachayal + Tel-Aviv 69710 + ISRAEL + +00-18-54 (hex) Argard Co., Ltd +001854 (base 16) Argard Co., Ltd + 2571 Lardprao Rd. + wangthonglang Bangkok 10310 + THAILAND + +00-18-55 (hex) Aeromaritime Systembau GmbH +001855 (base 16) Aeromaritime Systembau GmbH + Ludwig-Erhard-Str. 16 + München Bavaria D-85375 + GERMANY + +00-18-56 (hex) EyeFi, Inc +001856 (base 16) EyeFi, Inc + 149 Commonwealth Drive + Menlo Park CA 94025 + UNITED STATES + +00-18-57 (hex) Unilever R&D +001857 (base 16) Unilever R&D + Bldg. 50 + Sharnbrook + Bedford Bedfordshire MK44 1LQ + UNITED KINGDOM + +00-18-58 (hex) TagMaster AB +001858 (base 16) TagMaster AB + Kronborgsgränd 1 + Kista Stockholm S-16487 + SWEDEN + +00-18-59 (hex) Strawberry Linux Co.,Ltd. +001859 (base 16) Strawberry Linux Co.,Ltd. + 1-28-8-204 Higashiayase + Adachiku Tokyo 120-0004 + JAPAN + +00-18-5A (hex) uControl, Inc. +00185A (base 16) uControl, Inc. + 5914 W. Courtyard Drive + Suite 210 + Austin TX 78730 + UNITED STATES + +00-18-5B (hex) Network Chemistry, Inc +00185B (base 16) Network Chemistry, Inc + 1804 Embarcadero Rd + Palo Alto CA 94303 + UNITED STATES + +00-18-5C (hex) EDS Lab Pte Ltd +00185C (base 16) EDS Lab Pte Ltd + 20 Ayer Rajah Crescent + #08-26 + 139964 + SINGAPORE + +00-18-5D (hex) TAIGUEN TECHNOLOGY (SHEN-ZHEN) CO., LTD. +00185D (base 16) TAIGUEN TECHNOLOGY (SHEN-ZHEN) CO., LTD. + No. 23, The Third Industrial Park of Xia Village, + Gongming, Baoan District, + Shenzhen City, Guangdong, 815106 + CHINA + +00-18-5E (hex) Nexterm Inc. +00185E (base 16) Nexterm Inc. + 1-12-3, Shibaura, Minato-ku, + Tokyo 105-0023 + JAPAN + +00-18-5F (hex) TAC Inc. +00185F (base 16) TAC Inc. + 66 Nishiishigatsubocho Nishinanajyo Shimogyoku + Kyoto 600-8896 + JAPAN + +00-18-60 (hex) SIM Technology Group Shanghai Simcom Ltd., +001860 (base 16) SIM Technology Group Shanghai Simcom Ltd., + SIM Technology building, + 700 Yishan Rd, Shanghai 200233 + Shanghai 200233 + CHINA + +00-18-61 (hex) Ooma, Inc. +001861 (base 16) Ooma, Inc. + 555 University Avenue + Palo Alto CA 94301 + UNITED STATES + +00-18-62 (hex) Seagate Technology +001862 (base 16) Seagate Technology + 1280 Disc Drive + Shakopee MN 55379 + UNITED STATES + +00-18-63 (hex) Veritech Electronics Limited +001863 (base 16) Veritech Electronics Limited + 8F, 67, Sec. 1, Zhongshan Road, Xinzhuang, + Taipei 242 + TAIWAN, REPUBLIC OF CHINA + +00-18-64 (hex) Cybectec Inc. +001864 (base 16) Cybectec Inc. + 730, rue Commerciale + Suite 200 + St-Jean-Chrysostome QC G6Z 2C5 + CANADA + +00-18-65 (hex) Siemens Medical Solutions Diagnostics Manufacturing Ltd +001865 (base 16) Siemens Medical Solutions Diagnostics Manufacturing Ltd + Northern Road + Chilton Industrial Estate + Sudbury Suffolk C010 2XQ + UNITED KINGDOM + +00-18-66 (hex) Leutron Vision +001866 (base 16) Leutron Vision + Industriestrasse 57 + Glattbrugg ZH 8152 + SWITZERLAND + +00-18-67 (hex) Evolution Robotics Retail +001867 (base 16) Evolution Robotics Retail + 433 N. Fair Oaks Ave + Pasadena CA 91103 + UNITED STATES + +00-18-68 (hex) Scientific Atlanta, A Cisco Company +001868 (base 16) Scientific Atlanta, A Cisco Company + 5030 Sugarloaf Parkway + Lawrenceville GA 30044 + UNITED STATES + +00-18-69 (hex) KINGJIM +001869 (base 16) KINGJIM + No.10-18,2-Chome + Higashi-Kanda + Chiyoda-ku Tokyo 101-0031 + JAPAN + +00-18-6A (hex) Global Link Digital Technology Co,.LTD +00186A (base 16) Global Link Digital Technology Co,.LTD + Qibaoyiding Ind.Area + Liuchongwei Wanjiang town + Dongguan Guangdong 523051 + CHINA + +00-18-6B (hex) Sambu Communics CO., LTD. +00186B (base 16) Sambu Communics CO., LTD. + 38B-1L Namdong Industrial Complex + 626 Namchon-dong, Namdong-gu + Incheon 405-100 + KOREA, REPUBLIC OF + +00-18-6C (hex) Neonode AB +00186C (base 16) Neonode AB + Biblioteksgatan 11, 1st floor + Stockholm S-111 46 + SWEDEN + +00-18-6D (hex) Zhenjiang Sapphire Electronic Industry CO. +00186D (base 16) Zhenjiang Sapphire Electronic Industry CO. + Wei San Road,Dingmao Develop Area + zhenjiang jiangsu 212009 + CHINA + +00-18-6E (hex) 3Com Ltd +00186E (base 16) 3Com Ltd + Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts. HP2 4NW + UNITED KINGDOM + +00-18-6F (hex) Setha Industria Eletronica LTDA +00186F (base 16) Setha Industria Eletronica LTDA + Rua Alvaro de Macedo 134 + Parada de Lucas + Rio de Janeiro RJ 21.250-620 + BRAZIL + +00-18-70 (hex) E28 Shanghai Limited +001870 (base 16) E28 Shanghai Limited + 2/F Eastern Tower + 689 Beijing Road (East) + Shanghai 200001 + CHINA + +00-18-71 (hex) Global Data Services +001871 (base 16) Global Data Services + 20555 State Highway 249 + MS060308 + Houston TX 77070 + UNITED STATES + +00-18-72 (hex) Expertise Engineering +001872 (base 16) Expertise Engineering + 4186 Sorrento Valley Blvd Suite -J + San Diego CA 92121 + UNITED STATES + +00-18-73 (hex) Cisco Systems +001873 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-18-74 (hex) Cisco Systems +001874 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-18-75 (hex) AnaCise Testnology Pte Ltd +001875 (base 16) AnaCise Testnology Pte Ltd + 3 Bishan Place #02-06 + CPF Bishan Building + 579838 + SINGAPORE + +00-18-76 (hex) WowWee Ltd. +001876 (base 16) WowWee Ltd. + 92 Granville Rd. Suite 301A-C + Energy Plaza + T.S.T. East Kowloon + HONG KONG + +00-18-77 (hex) Amplex A/S +001877 (base 16) Amplex A/S + Silkeborgvej 2 + Aarhus C 8000 + DENMARK + +00-18-78 (hex) Mackware GmbH +001878 (base 16) Mackware GmbH + Schänzle 13 + Waiblingen Baden-Württemberg 71332 + GERMANY + +00-18-79 (hex) dSys +001879 (base 16) dSys + Soeflinger Str. 100 + Ulm BW 89077 + GERMANY + +00-18-7A (hex) Wiremold +00187A (base 16) Wiremold + 60 Woodlawn St. + West Hartford CT 06110 + UNITED STATES + +00-18-7B (hex) 4NSYS Co. Ltd. +00187B (base 16) 4NSYS Co. Ltd. + 3F, Hana Bldg + 118-2, Oryu-Dong + Guro-Gu Seoul 152-100 + KOREA, REPUBLIC OF + +00-18-7C (hex) INTERCROSS, LLC +00187C (base 16) INTERCROSS, LLC + Novoselov str., 58/7 + Ryazan 390049 + RUSSIAN FEDERATION + +00-18-7D (hex) Armorlink shanghai Co. Ltd +00187D (base 16) Armorlink shanghai Co. Ltd + NO 515, Shengfu road + Shanghai 201108 + CHINA + +00-18-7E (hex) RGB Spectrum +00187E (base 16) RGB Spectrum + 950 Marina Village Pkwy + Alameda CA 94501 + UNITED STATES + +00-18-7F (hex) ZODIANET +00187F (base 16) ZODIANET + 23, rue des Fraisettes + PALAISEAU ESSONNE 91120 + FRANCE + +00-18-80 (hex) Mobilygen +001880 (base 16) Mobilygen + 2900 Lakeside Drive + Suite 100 + Santa Clara CA 95054 + UNITED STATES + +00-18-81 (hex) Buyang Electronics Industrial Co., Ltd +001881 (base 16) Buyang Electronics Industrial Co., Ltd + 434-140, Oryu-Dong + Seo-Ku + Incheon 404-300 + KOREA, REPUBLIC OF + +00-18-82 (hex) Huawei Technologies Co., Ltd. +001882 (base 16) Huawei Technologies Co., Ltd. + F1-20,Section F,Huawei Base,Bantian, Longgang District + ShenZhen GuangDong 518129 + CHINA + +00-18-83 (hex) FORMOSA21 INC. +001883 (base 16) FORMOSA21 INC. + 8F-6, NO.351, CHUNG SHAN RD., SEC.2 + CHUNG HO CITY + TAIPEI 235 + TAIWAN, REPUBLIC OF CHINA + +00-18-84 (hex) FON +001884 (base 16) FON + Avda. Bruselas, n. 7, Planta 3, Alcobendas + Madrid 28100 + SPAIN + +00-18-85 (hex) Avigilon Corporation +001885 (base 16) Avigilon Corporation + Box 378, 101 - 1001 West Broadway + Vancouver BC V6H 4E4 + CANADA + +00-18-86 (hex) EL-TECH, INC. +001886 (base 16) EL-TECH, INC. + A-711, WOOLIM LION'S VALLEY, 371-28 + GASAN-DONG, GEUMCHEON-GU, + SEOUL 150-834 + KOREA, REPUBLIC OF + +00-18-87 (hex) Metasystem SpA +001887 (base 16) Metasystem SpA + Via Oberdan 16 + Reggio Emilia RE 42100 + ITALY + +00-18-88 (hex) GOTIVE a.s. +001888 (base 16) GOTIVE a.s. + Zámocká 34 + Bratislava 81101 + SLOVAKIA + +00-18-89 (hex) WinNet Solutions Limited +001889 (base 16) WinNet Solutions Limited + Rm804, Kornhill Metro Tower, Quarry Bay + HK 852 + HONG KONG + +00-18-8A (hex) Infinova LLC +00188A (base 16) Infinova LLC + 51 Stouts Lane, Unit 1 & 2 + Monmouth Junction New Jersey 08852 + UNITED STATES + +00-18-8B (hex) Dell +00188B (base 16) Dell + One Dell Way + Round Rock Texas 78682 + UNITED STATES + +00-18-8C (hex) Mobile Action Technology Inc. +00188C (base 16) Mobile Action Technology Inc. + 5F, No. 205-3, Sec. 3, Beishin Rd. + Shindian City, Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-18-8D (hex) Nokia Danmark A/S +00188D (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V 1790 + DENMARK + +00-18-8E (hex) Ekahau, Inc. +00188E (base 16) Ekahau, Inc. + Tallberginkatu 2 + HELSINKI UUSIMAA 00180 + FINLAND + +00-18-8F (hex) Montgomery Technology, Inc. +00188F (base 16) Montgomery Technology, Inc. + 800 East Commerce Street + Greenville AL 36037 + UNITED STATES + +00-18-90 (hex) RadioCOM, s.r.o. +001890 (base 16) RadioCOM, s.r.o. + Misikova 22 + Bratislava 811 06 + SLOVAKIA + +00-18-91 (hex) Zhongshan General K-mate Electronics Co., Ltd +001891 (base 16) Zhongshan General K-mate Electronics Co., Ltd + 3/F B1 Building, Fuwan Ind. Zone Sun Wen East Road + Zhongshan Guangdong 528403 + CHINA + +00-18-92 (hex) ads-tec GmbH +001892 (base 16) ads-tec GmbH + Raiffeisenstrasse 14 + Leinfelden-Echterdingen Baden-Württemberg 70771 + GERMANY + +00-18-93 (hex) SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD +001893 (base 16) SHENZHEN PHOTON BROADBAND TECHNOLOGY CO.,LTD + 2/F Hivac BLD,2th Langshan Rd,North Hi-Tech Industrial + Shenzhen Guangdong 518057 + CHINA + +00-18-94 (hex) zimocom +001894 (base 16) zimocom + 3~5F, BongUi Bldg, 76-1, Munjeong-dong + Songpagu + Seoul 138-200 + KOREA, REPUBLIC OF + +00-18-95 (hex) Hansun Technologies Inc. +001895 (base 16) Hansun Technologies Inc. + Room 301, Building 103, Wangjingkejiyuan, Chaoyang District + Beijing 100102 + CHINA + +00-18-96 (hex) Great Well Electronic LTD +001896 (base 16) Great Well Electronic LTD + The Third Industrial Area + Guanlan Town + Shenzhen Guangdong 518110 + CHINA + +00-18-97 (hex) JESS-LINK PRODUCTS Co., LTD +001897 (base 16) JESS-LINK PRODUCTS Co., LTD + 9F, No. 176, Jian-Yi Rd., Chung Ho City + Taipei County 235 + TAIWAN, REPUBLIC OF CHINA + +00-18-98 (hex) KINGSTATE ELECTRONICS CORPORATION +001898 (base 16) KINGSTATE ELECTRONICS CORPORATION + 10F, No.69-11, Sec.2, Chung Cheng E. Rd., + Tamshui Town + Taipei County 251 + TAIWAN, REPUBLIC OF CHINA + +00-18-99 (hex) ShenZhen jieshun Science&Technology Industry CO,LTD. +001899 (base 16) ShenZhen jieshun Science&Technology Industry CO,LTD. + China GuangDong state Shenzhen City Futian section NO17. Meilin Road + Shenzhen GuangDong 518049 + CHINA + +00-18-9A (hex) HANA Micron Inc. +00189A (base 16) HANA Micron Inc. + #95-1 Wonnam-Li, Umbong-Myeon + Chung-Nam, South Korea. + Asan-City Chung-Nam 336-864 + KOREA, REPUBLIC OF + +00-18-9B (hex) Thomson Inc. +00189B (base 16) Thomson Inc. + 101 West 103rd Street + Indianapolis IN 46290-1102 + UNITED STATES + +00-18-9C (hex) Weldex Corporation +00189C (base 16) Weldex Corporation + 6751 Katella Avenue + Cypress CA 90630 + UNITED STATES + +00-18-9D (hex) Navcast Inc. +00189D (base 16) Navcast Inc. + Suite 612, 6711 Mississauga Road + Mississauga ON m2r 1a3 + CANADA + +00-18-9E (hex) OMNIKEY GmbH. +00189E (base 16) OMNIKEY GmbH. + Ferihumerstrasse 13 + Linz Upperaustria 4040 + AUSTRIA + +00-18-9F (hex) Lenntek Corporation +00189F (base 16) Lenntek Corporation + 4F, 125 GuangMing 3rd. Road + Jhu Bei Hsin Chu 302 + TAIWAN, REPUBLIC OF CHINA + +00-18-A0 (hex) Cierma Ascenseurs +0018A0 (base 16) Cierma Ascenseurs + 17 avenue guiglionda de saint agathe + Nice PACA 06300 + FRANCE + +00-18-A1 (hex) Tiqit Computers, Inc. +0018A1 (base 16) Tiqit Computers, Inc. + 2215 Old Page Mill Rd + Palo Alto CA 94304 + UNITED STATES + +00-18-A2 (hex) XIP Technology AB +0018A2 (base 16) XIP Technology AB + PO Box 437 + Jönköping Sweden SE- 551 16 + SWEDEN + +00-18-A3 (hex) ZIPPY TECHNOLOGY CORP. +0018A3 (base 16) ZIPPY TECHNOLOGY CORP. + 10F, No. 50, Mincyuan Rd., Sindian City + Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-18-A4 (hex) Motorola Mobile Devices +0018A4 (base 16) Motorola Mobile Devices + 600 N. Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-18-A5 (hex) ADigit Technologies Corp. +0018A5 (base 16) ADigit Technologies Corp. + Rm D302E,No.185 3F-2,Kur-Wong Road, + Lung-Tang, + Tao-yuan, 325 + TAIWAN, REPUBLIC OF CHINA + +00-18-A6 (hex) Persistent Systems, LLC +0018A6 (base 16) Persistent Systems, LLC + 118 N. Howard St. #72 + Baltimore MD 21201 + UNITED STATES + +00-18-A7 (hex) Yoggie Security Systems LTD. +0018A7 (base 16) Yoggie Security Systems LTD. + P.P.Box 156 + Beth Halevy 42870 + ISRAEL + +00-18-A8 (hex) AnNeal Technology Inc. +0018A8 (base 16) AnNeal Technology Inc. + No.30-11, Wunhua Rd., Minsyong + Chiayi 621 + TAIWAN, REPUBLIC OF CHINA + +00-18-A9 (hex) Ethernet Direct Corporation +0018A9 (base 16) Ethernet Direct Corporation + 19F,No.345 Chung Ho Road, Yung Ho City + Taipei 234 + TAIWAN, REPUBLIC OF CHINA + +00-18-AA (hex) Protec Fire Detection plc +0018AA (base 16) Protec Fire Detection plc + Protec House + Churchill Way + Nelson Lancashire BB9 6RT + UNITED KINGDOM + +00-18-AB (hex) BEIJING LHWT MICROELECTRONICS INC. +0018AB (base 16) BEIJING LHWT MICROELECTRONICS INC. + 18/F,QUANTUM PLAZA,NO.27 ZHI CHUN RD.,HAI DIAN DISTRICT,BEIJING + CHINA + +00-18-AC (hex) Shanghai Jiao Da HISYS Technology Co. Ltd. +0018AC (base 16) Shanghai Jiao Da HISYS Technology Co. Ltd. + 7F Haoran HiTech Bldg., No.1954 Huashan Road + shanghai xuhui 200030 + CHINA + +00-18-AD (hex) NIDEC SANKYO CORPORATION +0018AD (base 16) NIDEC SANKYO CORPORATION + 5329, Shimosuwa-machi, Suwa-gun + Nagano 393-8511 + JAPAN + +00-18-AE (hex) TVT CO.,LTD +0018AE (base 16) TVT CO.,LTD + 5/F,North Block,CE Lighting House + Hi-tech Park, Nanshan District, + shenzhen guangdong 518026 + CHINA + +00-18-AF (hex) Samsung Electronics Co., Ltd. +0018AF (base 16) Samsung Electronics Co., Ltd. + #94-1, Imsoo-Dong + Gumi-City Gyeong-Buk 730-350 + KOREA, REPUBLIC OF + +00-18-B0 (hex) Nortel +0018B0 (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-18-B1 (hex) Blade Network Technologies +0018B1 (base 16) Blade Network Technologies + 2350 Mission College Blvd. Suite 600 + Santa Clara CA 95054 + UNITED STATES + +00-18-B2 (hex) ADEUNIS RF +0018B2 (base 16) ADEUNIS RF + 283 Rue NEEL + CROLLES ISERE 38920 + FRANCE + +00-18-B3 (hex) TEC WizHome Co., Ltd. +0018B3 (base 16) TEC WizHome Co., Ltd. + 18fl., In-Song bldg., 194-15, + Heohyun-Dong, 1Ga, Jung-Gu + Seoul 100-952 + KOREA, REPUBLIC OF + +00-18-B4 (hex) Dawon Media Inc. +0018B4 (base 16) Dawon Media Inc. + Rm503. woolim e-biz center 170-5, Guro3dong Gurogu, + Seoul 152-769 + KOREA, REPUBLIC OF + +00-18-B5 (hex) Magna Carta +0018B5 (base 16) Magna Carta + Naritaweg 126 + Amsterdam Noord Holland 1043 CA + NETHERLANDS + +00-18-B6 (hex) S3C, Inc. +0018B6 (base 16) S3C, Inc. + 1010 Stewart Dr. + Sunnyvale California 94085 + UNITED STATES + +00-18-B7 (hex) D3 LED, LLC +0018B7 (base 16) D3 LED, LLC + 380 Mountain Rd + Suite 1412 + Union City NJ 07087 + UNITED STATES + +00-18-B8 (hex) New Voice International AG +0018B8 (base 16) New Voice International AG + St. Gallerstrasse 8 + Lachen SZ 8853 + SWITZERLAND + +00-18-B9 (hex) Cisco Systems +0018B9 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-18-BA (hex) Cisco Systems +0018BA (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-18-BB (hex) Eliwell Controls srl +0018BB (base 16) Eliwell Controls srl + Via dell'Industria, 15 + Pieve d'Alpago Belluno 32010 + ITALY + +00-18-BC (hex) ZAO NVP Bolid +0018BC (base 16) ZAO NVP Bolid + Pionerskaya str., 4 + Korolyov Moscow region 141070 + RUSSIAN FEDERATION + +00-18-BD (hex) SHENZHEN DVBWORLD TECHNOLOGY CO., LTD. +0018BD (base 16) SHENZHEN DVBWORLD TECHNOLOGY CO., LTD. + 2ND FLOOR, BUILDING A, QINGHU XINQIAO INDUSTRY AREA, + LONGHUA, BAO AN DISTRICT + SHENZHEN GUANGDONG 518000 + CHINA + +00-18-BE (hex) ANSA Corporation +0018BE (base 16) ANSA Corporation + 17F., No.738, Chung Cheng Rd. + Chung Ho City, Taipei County 235 + TAIWAN, REPUBLIC OF CHINA + +00-18-BF (hex) Essence Technology Solution, Inc. +0018BF (base 16) Essence Technology Solution, Inc. + B1, No. 207, Beisin Rd., Sec. 3 + Sindian, Taipei County 231 + TAIWAN, REPUBLIC OF CHINA + +00-18-C0 (hex) Motorola CHS +0018C0 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92129 + UNITED STATES + +00-18-C1 (hex) Almitec Informática e Comércio Ltda. +0018C1 (base 16) Almitec Informática e Comércio Ltda. + 461, Francisco de Morais St. + São Paulo 04714-010 + BRAZIL + +00-18-C2 (hex) Firetide, Inc +0018C2 (base 16) Firetide, Inc + 16795 Lark Av, Suite 200 + Los Gatos CA 95032 + UNITED STATES + +00-18-C3 (hex) C&S Microwave +0018C3 (base 16) C&S Microwave + Suntech City 8th floor, Sang Dae Won-Dong, Jung Won-Gu + Sungnam Gyunggi-Do 82 + KOREA, REPUBLIC OF + +00-18-C4 (hex) Raba Technologies LLC +0018C4 (base 16) Raba Technologies LLC + 8830 Stanford Blvd Suite 205 + Columbia Maryland 21045 + UNITED STATES + +00-18-C5 (hex) Nokia Danmark A/S +0018C5 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V 1790 + DENMARK + +00-18-C6 (hex) OPW Fuel Management Systems +0018C6 (base 16) OPW Fuel Management Systems + 6900 Santa Fe Drive + Hodgkins Illinois 60525 + UNITED STATES + +00-18-C7 (hex) Real Time Automation +0018C7 (base 16) Real Time Automation + 2825 N Mayfair Rd Ste 11 + Wauwatosa WI 53222 + UNITED STATES + +00-18-C8 (hex) ISONAS Inc. +0018C8 (base 16) ISONAS Inc. + 6325 Gunpark Drive + Suite 101 + Boulder CO 80301 + UNITED STATES + +00-18-C9 (hex) EOps Technology Limited +0018C9 (base 16) EOps Technology Limited + Room 2001, Fairmont House, + 8 Cotton Tree Drive, Central, + Hong Kong + HONG KONG + +00-18-CA (hex) Viprinet GmbH +0018CA (base 16) Viprinet GmbH + Basilikastrasse 3 + Bingen am Rhein 55411 + GERMANY + +00-18-CB (hex) Tecobest Technology Limited +0018CB (base 16) Tecobest Technology Limited + 53/F.,Block A,United Plaza, + No.5022,Bin He Road + Shenzhen Guangdong 518026 + CHINA + +00-18-CC (hex) AXIOHM SAS +0018CC (base 16) AXIOHM SAS + 1 RUE D'ARCUEIL + MONTROUGE 92120 + FRANCE + +00-18-CD (hex) Erae Electronics Industry Co., Ltd +0018CD (base 16) Erae Electronics Industry Co., Ltd + #371-51, Gasan-dong + Geumchen-gu Seoul 153-803 + KOREA, REPUBLIC OF + +00-18-CE (hex) Dreamtech Co., Ltd +0018CE (base 16) Dreamtech Co., Ltd + #340-5, Yang-dang Ri, Jik-san Myeon + Cheon-an si Chung-Nam 330810 + KOREA, REPUBLIC OF + +00-18-CF (hex) Baldor Electric Company +0018CF (base 16) Baldor Electric Company + 600 S. Zero St. + Fort Smith AR 72901 + UNITED STATES + +00-18-D0 (hex) AtRoad, A Trimble Company +0018D0 (base 16) AtRoad, A Trimble Company + 47071 Bayside Parkway + Fremont California 94538 + UNITED STATES + +00-18-D1 (hex) Siemens Home & Office Comm. Devices +0018D1 (base 16) Siemens Home & Office Comm. Devices + 4849 Alpha Rd. + Dallas Texas 75244 + UNITED STATES + +00-18-D2 (hex) High-Gain Antennas LLC +0018D2 (base 16) High-Gain Antennas LLC + 11679 S. Cormorant Circle + Parker CO 80134 + UNITED STATES + +00-18-D3 (hex) TEAMCAST +0018D3 (base 16) TEAMCAST + Centre Espace Performance + Saint Gregoire 35769 + FRANCE + +00-18-D4 (hex) Unified Display Interface SIG +0018D4 (base 16) Unified Display Interface SIG + 15201 SW Greenbrier Parkway + Beaverton Oregon 97006 + UNITED STATES + +00-18-D5 (hex) REIGNCOM +0018D5 (base 16) REIGNCOM + 14F Kamco Yanjae Tower, 949-3 + Dogok 1-dongm, Gangnam-gu + Seoul 135-739 + KOREA, REPUBLIC OF + +00-18-D6 (hex) Swirlnet A/S +0018D6 (base 16) Swirlnet A/S + Diplomvej 381 + Lyngby DK-2800 + DENMARK + +00-18-D7 (hex) Javad Navigation Systems Inc. +0018D7 (base 16) Javad Navigation Systems Inc. + 1731 Technology Drive, Suite 680 + San Jose CA 95110 + UNITED STATES + +00-18-D8 (hex) ARCH METER Corporation +0018D8 (base 16) ARCH METER Corporation + Rm. 805, Bldg. 53, No. 195, Sec. 4, Chung Hsing Rd., Chutung + Hsinchu 310 + TAIWAN, REPUBLIC OF CHINA + +00-18-D9 (hex) Santosha Internatonal, Inc +0018D9 (base 16) Santosha Internatonal, Inc + 3843 S. Bristol St. #242 + Santa Ana CA 92704 + UNITED STATES + +00-18-DA (hex) AMBER wireless GmbH +0018DA (base 16) AMBER wireless GmbH + Albin-Koebis-Str. 18 + Koeln 51147 + GERMANY + +00-18-DB (hex) EPL Technology Ltd +0018DB (base 16) EPL Technology Ltd + LongDong,Longgang District + ShenZhen GuangDong 518116 + CHINA + +00-18-DC (hex) Prostar Co., Ltd. +0018DC (base 16) Prostar Co., Ltd. + A-703 Technotown, 250-3 Hagye-dong, Nowon-gu + Seoul 139-230 + KOREA, REPUBLIC OF + +00-18-DD (hex) Silicondust Engineering Ltd +0018DD (base 16) Silicondust Engineering Ltd + PO Box 74-299 + Market Rd + Auckland + NEW ZEALAND + +00-18-DE (hex) Intel Corporation +0018DE (base 16) Intel Corporation + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-18-DF (hex) The Morey Corporation +0018DF (base 16) The Morey Corporation + 100 Morey Drive + Woodridge IL 60517 + UNITED STATES + +00-18-E0 (hex) ANAVEO +0018E0 (base 16) ANAVEO + Les Carrés du parc + 10 rue des Rosiéristes + CHAMPAGNE au MONT D'OR Rhône F-69410 + FRANCE + +00-18-E1 (hex) Verkerk Service Systemen +0018E1 (base 16) Verkerk Service Systemen + Molenvliet 1 + Zwijndrecht Zuid-Holland NL-3335LH + NETHERLANDS + +00-18-E2 (hex) Topdata Sistemas de Automacao Ltda +0018E2 (base 16) Topdata Sistemas de Automacao Ltda + Rua Dr Carvalho Chaves, 662 + Curitiba PR 80.220-010 + BRAZIL + +00-18-E3 (hex) Visualgate Systems, Inc. +0018E3 (base 16) Visualgate Systems, Inc. + 64 Bakersfield Street + Toronto Ontario M3J 2W7 + CANADA + +00-18-E4 (hex) YIGUANG +0018E4 (base 16) YIGUANG + 3/FL.Industry zone,Fuxinlin,Hangcheng,Xixiang,Baoan + Shenzhen Guangdong 518126 + CHINA + +00-18-E5 (hex) Adhoco AG +0018E5 (base 16) Adhoco AG + Technopark + Jägerstr. 2 + Winterthur ZH CH-8406 Wint + SWITZERLAND + +00-18-E6 (hex) Computer Hardware Design SIA +0018E6 (base 16) Computer Hardware Design SIA + Dzelzavas 120i + Riga LV-1021 + LATVIA + +00-18-E7 (hex) Cameo Communications, INC. +0018E7 (base 16) Cameo Communications, INC. + NO.42, Sec. 6, Mincyuan E. Rd. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-18-E8 (hex) Hacetron Corporation +0018E8 (base 16) Hacetron Corporation + No. 542, + Sec.1, Yang-HU Rd, + Yang-Mei, Tao-Yuan, 326 + TAIWAN, REPUBLIC OF CHINA + +00-18-E9 (hex) Numata Corporation +0018E9 (base 16) Numata Corporation + 8-2-39 nanko-higashi + Suminoe-ku + Osaka-shi Osaka-fu 559-0031 + JAPAN + +00-18-EA (hex) Alltec GmbH +0018EA (base 16) Alltec GmbH + An der Trave 27-31 + Selmsdorf Mecklenburg-Vorpommern 23923 + GERMANY + +00-18-EB (hex) BroVis Wireless Networks +0018EB (base 16) BroVis Wireless Networks + 19925 Stevens Creek Blvd + Cupertino CA 95014 + UNITED STATES + +00-18-EC (hex) Welding Technology Corporation +0018EC (base 16) Welding Technology Corporation + 24775 Crestview Court + Farmington Hills MI 48335 + UNITED STATES + +00-18-ED (hex) Accutech Ultrasystems Co., Ltd. +0018ED (base 16) Accutech Ultrasystems Co., Ltd. + 11F-4, No. 150, + CHIEN-YI ROAD, + CHUNG-HO CITY, TAIPEI HSIEN, 235 + TAIWAN, REPUBLIC OF CHINA + +00-18-EE (hex) Videology Imaging Solutions, Inc. +0018EE (base 16) Videology Imaging Solutions, Inc. + 37 M Lark Industrial Parkway + Greenville RI 02828-3001 + UNITED STATES + +00-18-EF (hex) Escape Communications, Inc. +0018EF (base 16) Escape Communications, Inc. + 2615 Pacific Coast Hwy + Ste 329 + Hermosa Beach CA 90254 + UNITED STATES + +00-18-F0 (hex) JOYTOTO Co., Ltd. +0018F0 (base 16) JOYTOTO Co., Ltd. + 3F Sungwoo Bldg. 717-3, Sooseo-Dong + Kangnam-Gu + Seoul 135-220 + KOREA, REPUBLIC OF + +00-18-F1 (hex) Chunichi Denshi Co.,LTD. +0018F1 (base 16) Chunichi Denshi Co.,LTD. + 1 Denjiyama + Narumi cho Midori ku + Nagoya Aichi 458-8525 + JAPAN + +00-18-F2 (hex) Beijing Tianyu Communication Equipment Co., Ltd +0018F2 (base 16) Beijing Tianyu Communication Equipment Co., Ltd + 27th Floor, Tengda Plaza + Xizhimengwai Street, Haidian District + Beijing 100044 + CHINA + +00-18-F3 (hex) ASUSTek COMPUTER INC. +0018F3 (base 16) ASUSTek COMPUTER INC. + 15,Li-Te Rd.,Peitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-18-F4 (hex) EO TECHNICS Co., Ltd. +0018F4 (base 16) EO TECHNICS Co., Ltd. + 864-4, Kwanyang 2-Dong + Dongan-Gu + Anyang Kyeonggi-Do 431-062 + KOREA, REPUBLIC OF + +00-18-F5 (hex) Shenzhen Streaming Video Technology Company Limited +0018F5 (base 16) Shenzhen Streaming Video Technology Company Limited + 5/F, Block 3, Software Part No.1, Keji Middle 2 Road, + Shenzhen Hi-Tech Industrial Park + Shenzhen GaungDong 518057 + CHINA + +00-18-F6 (hex) Thomson Telecom Belgium +0018F6 (base 16) Thomson Telecom Belgium + Prins Boudewijnlaan 47 + Edegem Antwerp B-2650 + BELGIUM + +00-18-F7 (hex) Kameleon Technologies +0018F7 (base 16) Kameleon Technologies + 217, rue St Honoré + Paris 75001 + FRANCE + +00-18-F8 (hex) Cisco-Linksys LLC +0018F8 (base 16) Cisco-Linksys LLC + 121 Theory Drive + Irvine CA 92612 + UNITED STATES + +00-18-F9 (hex) VVOND, Inc. +0018F9 (base 16) VVOND, Inc. + 3000 Bridge Parkway + Suite 102 + Redwood City CA 94065 + UNITED STATES + +00-18-FA (hex) Yushin Precision Equipment Co.,Ltd. +0018FA (base 16) Yushin Precision Equipment Co.,Ltd. + 11-260 KOGAHONMACHI + FUSHIMI-KU + KYOTO 612-8492 JAP + JAPAN + +00-18-FB (hex) Compro Technology +0018FB (base 16) Compro Technology + 3/F No 12, Alley 6, Lane 45, Pao Shin Rd + Hsintien 231 + TAIWAN, REPUBLIC OF CHINA + +00-18-FC (hex) Altec Electronic AG +0018FC (base 16) Altec Electronic AG + Lenggenbachstrasse 3 + Fahrweid Zürich CH-8951 + SWITZERLAND + +00-18-FD (hex) Optimal Technologies International Inc. +0018FD (base 16) Optimal Technologies International Inc. + 12 Spanish Main Drive + PO Box F-42409/359 + Freeport GBI + BAHAMAS + +00-18-FE (hex) Hewlett Packard +0018FE (base 16) Hewlett Packard + 20555 State Highway 249 + MS060308 + Houston TX 77070 + UNITED STATES + +00-18-FF (hex) PowerQuattro Co. +0018FF (base 16) PowerQuattro Co. + János u. 175. + Budapest H-1161 + HUNGARY + +00-19-00 (hex) Intelliverese - DBA Voicecom +001900 (base 16) Intelliverese - DBA Voicecom + 5900 Windward Parkway + Suite 500 + Alpharetta Georgia 30005 + UNITED STATES + +00-19-01 (hex) F1MEDIA +001901 (base 16) F1MEDIA + 610, Keumkang Hightech ¥±, 138-1 Sangdaewon-Dong, Jungwon-Gu + Seongnam-Si Gyeonggi-Do 462-707 + KOREA, REPUBLIC OF + +00-19-02 (hex) Cambridge Consultants Ltd +001902 (base 16) Cambridge Consultants Ltd + Science Park + Milton Road + Cambridge Cambs CB4 0DW + UNITED KINGDOM + +00-19-03 (hex) Bigfoot Networks Inc +001903 (base 16) Bigfoot Networks Inc + 3925 West Braker Lane + Austin TX 78759 + UNITED STATES + +00-19-04 (hex) WB Electronics Sp. z o.o. +001904 (base 16) WB Electronics Sp. z o.o. + ul. Poznanska 129/133 + Ozarow Mazowiecki Mazowieckie 05-850 + POLAND + +00-19-05 (hex) SCHRACK Seconet AG +001905 (base 16) SCHRACK Seconet AG + Eibesbrunnergasse 18 + Wien Österreich 1122 + AUSTRIA + +00-19-06 (hex) Cisco Systems +001906 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-07 (hex) Cisco Systems +001907 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-08 (hex) Duaxes Corporation +001908 (base 16) Duaxes Corporation + 2-5, Kasumigaseki 3-chome, Chiyoda-ku. + Tokyo Foreign 100-6014 + JAPAN + +00-19-09 (hex) Devi A/S +001909 (base 16) Devi A/S + Ulvehavevej 61 + Vejle 7100 + DENMARK + +00-19-0A (hex) HASWARE INC. +00190A (base 16) HASWARE INC. + 4-12-3 HIGASHI + KUNITACHI TOKYO 186-0002 + JAPAN + +00-19-0B (hex) Southern Vision Systems, Inc. +00190B (base 16) Southern Vision Systems, Inc. + 8215 Madison Blvd, Suite 150 + Madison AL 35758 + UNITED STATES + +00-19-0C (hex) Encore Electronics, Inc. +00190C (base 16) Encore Electronics, Inc. + 18003 Cortney Ct. + City of Industry CA 91748 + UNITED STATES + +00-19-0D (hex) IEEE 1394c +00190D (base 16) IEEE 1394c + c/o Apple Computer + 1 Infinite Loop, MS 305-2GM + Cupertino CA 95014 + UNITED STATES + +00-19-0E (hex) Atech Technology Co., Ltd. +00190E (base 16) Atech Technology Co., Ltd. + 4 Fl., No. 103, Sec 2, Jiuzong Rd. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-19-0F (hex) Advansus Corp. +00190F (base 16) Advansus Corp. + No.5 Shing Yeh Street, Kwei Hsiang + Taoyuan 333 + TAIWAN, REPUBLIC OF CHINA + +00-19-10 (hex) Knick Elektronische Messgeraete GmbH & Co. KG +001910 (base 16) Knick Elektronische Messgeraete GmbH & Co. KG + Beuckestr. 22 + Berlin 14163 + GERMANY + +00-19-11 (hex) Just In Mobile Information Technologies (Shanghai) Co., Ltd. +001911 (base 16) Just In Mobile Information Technologies (Shanghai) Co., Ltd. + 5th Floor, 2nd Area, Haiwangxing Building, 62 Xingguang Ave., N.High-Tech Park + Chongqing 401121 + CHINA + +00-19-12 (hex) Welcat Inc +001912 (base 16) Welcat Inc + East Tower 6F, Shinagawa Seaside, 4-12-8, Higashi Shinagawa, Shinagawa Section + Tokyo 140-0002 + JAPAN + +00-19-13 (hex) Chuang-Yi Network Equipment Co.Ltd. +001913 (base 16) Chuang-Yi Network Equipment Co.Ltd. + 238 TianMuShan Rd., West Lake district + HangZhou ZheJiang 310000 + CHINA + +00-19-14 (hex) Winix Co., Ltd +001914 (base 16) Winix Co., Ltd + 363 Angade Bldg., Yangjae-dong + Seocho-gu + Seoul 137-898 + KOREA, REPUBLIC OF + +00-19-15 (hex) TECOM Co., Ltd. +001915 (base 16) TECOM Co., Ltd. + 23 R&D Road 2 Science Based Industrial Park + Hsin-Chu 300 + TAIWAN, REPUBLIC OF CHINA + +00-19-16 (hex) PayTec AG +001916 (base 16) PayTec AG + Rosengartenstrasse 3 + Zollikerberg ZH 8125 + SWITZERLAND + +00-19-17 (hex) Posiflex Inc. +001917 (base 16) Posiflex Inc. + 6, Wu-Chuan Road + Wu Ku + Taipei Hsien 248 + TAIWAN, REPUBLIC OF CHINA + +00-19-18 (hex) Interactive Wear AG +001918 (base 16) Interactive Wear AG + Petersbrunner Str. 3 + Starnberg Bavaria 82319 + GERMANY + +00-19-19 (hex) ASTEL Inc. +001919 (base 16) ASTEL Inc. + 59-7 Jang-dong Yusung-Gu + Daejeon Chungnam 305-343 + KOREA, REPUBLIC OF + +00-19-1A (hex) IRLINK +00191A (base 16) IRLINK + HanYoung B/D 6F, 4-6 + Munjeong-dong, Sonpa-ku + SEOUL 138-824 + KOREA, REPUBLIC OF + +00-19-1B (hex) Sputnik Engineering AG +00191B (base 16) Sputnik Engineering AG + Höheweg 85 + Biel-Bienne BE 2502 + SWITZERLAND + +00-19-1C (hex) Sensicast Systems +00191C (base 16) Sensicast Systems + 200 Reservoir St + Suite 100 + Needham MA 02494 + UNITED STATES + +00-19-1D (hex) Nintendo Co.,Ltd. +00191D (base 16) Nintendo Co.,Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO 601-8501 + JAPAN + +00-19-1E (hex) Beyondwiz Co., Ltd. +00191E (base 16) Beyondwiz Co., Ltd. + 3F, Daechang Bldg., + 8-2, Soonae-dong, Bundang-gu + Sungnam Kyungki-do 463-825 + KOREA, REPUBLIC OF + +00-19-1F (hex) Microlink communications Inc. +00191F (base 16) Microlink communications Inc. + 8F , 31 , Hsintai Road , Chupei City , Hsinchu + Chupei Taiwan 302 + TAIWAN, REPUBLIC OF CHINA + +00-19-20 (hex) KUME electric Co.,Ltd. +001920 (base 16) KUME electric Co.,Ltd. + 4-2-24 Kitakawara + Itami-city Hyougo + JAPAN + +00-19-21 (hex) Elitegroup Computer System Co. +001921 (base 16) Elitegroup Computer System Co. + No.22,Alley 38,Lane 91, Sec. 1,Nei Hu Road. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-19-22 (hex) CM Comandos Lineares +001922 (base 16) CM Comandos Lineares + Av Eng Alberto de Zagottis, 760 + Jurubatuba + Sao Paulo SP 04675-085 + BRAZIL + +00-19-23 (hex) Phonex Korea Co., LTD. +001923 (base 16) Phonex Korea Co., LTD. + 33-3, Geoyeo-Dong + Seoul Songpa-Gu 138-814 + KOREA, REPUBLIC OF + +00-19-24 (hex) LBNL Engineering +001924 (base 16) LBNL Engineering + 1 Cyclotron Rd. + MS46R0125 + Berkeley CA 94720 + UNITED STATES + +00-19-25 (hex) Intelicis Corporation +001925 (base 16) Intelicis Corporation + 4633 Old Ironsides Drive, Suite 150 + Santa Clara CA 95054 + UNITED STATES + +00-19-26 (hex) BitsGen Co., Ltd. +001926 (base 16) BitsGen Co., Ltd. + #502, Owner's Tower, #16-5, Sunea-dong + Bundang-gu Seongnam-si 463-825 + KOREA, REPUBLIC OF + +00-19-27 (hex) ImCoSys Ltd +001927 (base 16) ImCoSys Ltd + Bundesstrasse 5 + Zug ZG 6300 + SWITZERLAND + +00-19-28 (hex) Siemens AG, Transportation Systems +001928 (base 16) Siemens AG, Transportation Systems + Werner-von-Siemens-Straße 67 + Erlangen 91052 + GERMANY + +00-19-29 (hex) 2M2B Montadora de Maquinas Bahia Brasil LTDA +001929 (base 16) 2M2B Montadora de Maquinas Bahia Brasil LTDA + Rua Djalma dutra, 668, Sete Portas + Salvador Bahia 40240080 + BRAZIL + +00-19-2A (hex) Antiope Associates +00192A (base 16) Antiope Associates + 18 Clay Street + Fair Haven New Jersey 07704 + UNITED STATES + +00-19-2B (hex) Hexagram, Inc. +00192B (base 16) Hexagram, Inc. + 23905 Mercantile Rd + Beachwood OH 44122 + UNITED STATES + +00-19-2C (hex) Motorola Mobile Devices +00192C (base 16) Motorola Mobile Devices + 600 N. Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-19-2D (hex) Nokia Corporation +00192D (base 16) Nokia Corporation + Rensingstr. 15 + Bochum NRW 44807 + GERMANY + +00-19-2E (hex) Spectral Instruments, Inc. +00192E (base 16) Spectral Instruments, Inc. + 420 N Bonita Ave + Tucson AZ 85745 + UNITED STATES + +00-19-2F (hex) Cisco Systems +00192F (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-30 (hex) Cisco Systems +001930 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-31 (hex) Balluff GmbH +001931 (base 16) Balluff GmbH + Schurwaldstr. 9 + Neuhausen BW 73765 + GERMANY + +00-19-32 (hex) Gude Analog- und Digialsysteme GmbH +001932 (base 16) Gude Analog- und Digialsysteme GmbH + Eintrachstrasse 113 + Cologne NRW 50668 + GERMANY + +00-19-33 (hex) Strix Systems, Inc. +001933 (base 16) Strix Systems, Inc. + 26610 Agoura Road + Calabasas CA 91302 + UNITED STATES + +00-19-34 (hex) TRENDON TOUCH TECHNOLOGY CORP. +001934 (base 16) TRENDON TOUCH TECHNOLOGY CORP. + 2F No.5, Alley 22, Lane 513, Rueiguang Rd., Neihu + Taipei City 114 + TAIWAN, REPUBLIC OF CHINA + +00-19-35 (hex) Duerr Dental GmbH & Co. KG +001935 (base 16) Duerr Dental GmbH & Co. KG + Hoepfigheimer Strasse 17 + Bietigheim-Bissingen Baden-Wuerttemberg 74321 + GERMANY + +00-19-36 (hex) STERLITE OPTICAL TECHNOLOGIES LIMITED +001936 (base 16) STERLITE OPTICAL TECHNOLOGIES LIMITED + E-1,E-2,&E-3 + MIDC , WALUJ + AURANGABAD MAHARASTRA 431136 + INDIA + +00-19-37 (hex) CommerceGuard AB +001937 (base 16) CommerceGuard AB + Gustavslundsv 151A + BROMMA 16714 + SWEDEN + +00-19-38 (hex) UMB Communications Co., Ltd. +001938 (base 16) UMB Communications Co., Ltd. + 1010, 5, ACE Techno Tower, 197-22, Guro-dong, Guro-gu + Seoul 151-766 + KOREA, REPUBLIC OF + +00-19-39 (hex) Gigamips +001939 (base 16) Gigamips + 5th Floor, Yangjae Building, 261, Yangjae-Dong + Seocho-Gu Seoul 137-130 + KOREA, REPUBLIC OF + +00-19-3A (hex) OESOLUTIONS +00193A (base 16) OESOLUTIONS + Technopark, 958-3 Daechon-Dong, Buk-Gu + Gwangju Buk-Gu 500-706 + KOREA, REPUBLIC OF + +00-19-3B (hex) Deliberant LLC +00193B (base 16) Deliberant LLC + 1440 Dutch Valley Pl + Suite 105 + Atlanta GA 30324 + UNITED STATES + +00-19-3C (hex) HighPoint Technologies Incorporated +00193C (base 16) HighPoint Technologies Incorporated + 1161 Cadillac Court + Milpitas CA 95035 + UNITED STATES + +00-19-3D (hex) GMC Guardian Mobility Corp. +00193D (base 16) GMC Guardian Mobility Corp. + Suite 200 + 43 Auriga Dr. + Ottawa ON K2E 7Y8 + CANADA + +00-19-3E (hex) PIRELLI BROADBAND SOLUTIONS +00193E (base 16) PIRELLI BROADBAND SOLUTIONS + VIALE SARCA 222 + MILANO 20126 + ITALY + +00-19-3F (hex) RDI technology(Shenzhen) Co.,LTD +00193F (base 16) RDI technology(Shenzhen) Co.,LTD + Building C1&C2, Xin Tang Industrial Zone,East BaiShiXia Village, Fuyong Town, Baoan District + SHENZHEN GUANGDONG province 518103 + CHINA + +00-19-40 (hex) Rackable Systems +001940 (base 16) Rackable Systems + 1933 Milmont Drive + Milpitas CA 95035 + UNITED STATES + +00-19-41 (hex) Pitney Bowes, Inc +001941 (base 16) Pitney Bowes, Inc + 35 Waterview Drive + MSC 26-21 + Shelton CT 06484 + UNITED STATES + +00-19-42 (hex) ON SOFTWARE INTERNATIONAL LIMITED +001942 (base 16) ON SOFTWARE INTERNATIONAL LIMITED + 9F, NO. 17, SEC. 1, CHENG-TE RD. + TAIPEI 103 + TAIWAN, REPUBLIC OF CHINA + +00-19-43 (hex) Belden +001943 (base 16) Belden + 793 Fort Mill Highway + Fort Mill South Carolina 29715 + UNITED STATES + +00-19-44 (hex) Fossil Partners, L.P. +001944 (base 16) Fossil Partners, L.P. + 2280 N. Greenville Ave. + Richardson TX 75082 + UNITED STATES + +00-19-45 (hex) Ten-Tec Inc. +001945 (base 16) Ten-Tec Inc. + 1185 Dolly Parton Pkwy + Sevierville TN 37862 + UNITED STATES + +00-19-46 (hex) Cianet Industria e Comercio S/A +001946 (base 16) Cianet Industria e Comercio S/A + rod SC401, km01 Tecnopolis/Alfama 4o. Andar + Florianopolis Santa Catarina 88030-902 + BRAZIL + +00-19-47 (hex) Scientific Atlanta, A Cisco Company +001947 (base 16) Scientific Atlanta, A Cisco Company + 5030 Sugarloaf Parkway + ATL 1.3.473 + Lawrenceville GA 30044 + UNITED STATES + +00-19-48 (hex) AireSpider Networks +001948 (base 16) AireSpider Networks + 1171 Montague Express Way + Milpitas CA 95035 + UNITED STATES + +00-19-49 (hex) TENTEL COMTECH CO., LTD. +001949 (base 16) TENTEL COMTECH CO., LTD. + 3/F., NO. 42, LANE 80, SEC. 3, NAN-KANG RD., + TAIPEI 115 + TAIWAN, REPUBLIC OF CHINA + +00-19-4A (hex) TESTO AG +00194A (base 16) TESTO AG + Testo Strasse 1 + Lenzkirch Baden-Würtemberg 79853 + GERMANY + +00-19-4B (hex) SAGEM COMMUNICATION +00194B (base 16) SAGEM COMMUNICATION + 27 RUE LEBLANC + PARIS 75512 + FRANCE + +00-19-4C (hex) Fujian Stelcom information & Technology CO.,Ltd +00194C (base 16) Fujian Stelcom information & Technology CO.,Ltd + 4F,Building A,Start Science Park, No.68,Hongshanyuan Rd + Fuzhou Fujian 350002 + CHINA + +00-19-4D (hex) Avago Technologies Sdn Bhd +00194D (base 16) Avago Technologies Sdn Bhd + Bayan Lepas Free Industrial Zone + Bayan Lepas Penang 11900 + MALAYSIA + +00-19-4E (hex) Ultra Electronics - TCS (Tactical Communication Systems) +00194E (base 16) Ultra Electronics - TCS (Tactical Communication Systems) + 5990 Cote De Liesse + TMR Quebec H4T 1V7 + CANADA + +00-19-4F (hex) Nokia Danmark A/S +00194F (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-19-50 (hex) Harman Multimedia +001950 (base 16) Harman Multimedia + 8400 Balboa Blvd. + Northridge CA 91329 + UNITED STATES + +00-19-51 (hex) NETCONS, s.r.o. +001951 (base 16) NETCONS, s.r.o. + Stara Vajnorska 37 + Bratislava Slovakia 831 04 + SLOVAKIA + +00-19-52 (hex) ACOGITO Co., Ltd +001952 (base 16) ACOGITO Co., Ltd + #501 Shinyoung Palace Tower, 246-2, Seohyun + Sungnam Kyunggi 463-824 + KOREA, REPUBLIC OF + +00-19-53 (hex) Chainleader Communications Corp. +001953 (base 16) Chainleader Communications Corp. + 5F, No. 400, Sec. 2 Bade Rd., + Taipei 105 + TAIWAN, REPUBLIC OF CHINA + +00-19-54 (hex) Leaf Corporation. +001954 (base 16) Leaf Corporation. + Amuze 1F + Higashi Naruse 35-10 + Isehara City Kanagawa-Pref. 259-1117 + JAPAN + +00-19-55 (hex) Cisco Systems +001955 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-56 (hex) Cisco Systems +001956 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-57 (hex) Saafnet Canada Inc. +001957 (base 16) Saafnet Canada Inc. + 107-1089 East Kent Ave (N) + Vancouver BC V5X 4V9 + CANADA + +00-19-58 (hex) Bluetooth SIG, Inc. +001958 (base 16) Bluetooth SIG, Inc. + 500 108th Avenue NE + Suite 250 + Bellevue WA 98004 + UNITED STATES + +00-19-59 (hex) Staccato Communications Inc. +001959 (base 16) Staccato Communications Inc. + 6195 Lusk Blvd. + San Diego CA 92121 + UNITED STATES + +00-19-5A (hex) Jenaer Antriebstechnik GmbH +00195A (base 16) Jenaer Antriebstechnik GmbH + Buchaer Strasse 1 + Jena Thueringen 07745 + GERMANY + +00-19-5B (hex) D-Link Corporation +00195B (base 16) D-Link Corporation + NO.289, Sinhu 3rd Rd., + Neihu District, Taipei City 114 + TAIWAN, REPUBLIC OF CHINA + +00-19-5C (hex) Innotech Corporation +00195C (base 16) Innotech Corporation + 3-17-6 + Shin-Yokohama, Kohoku-ku + Yokohama Kanagawa 222-8580 + JAPAN + +00-19-5D (hex) ShenZhen XinHuaTong Opto Electronics Co.,Ltd +00195D (base 16) ShenZhen XinHuaTong Opto Electronics Co.,Ltd + 5F,BaodaZhou,Shancheng Industrial Zone,BaoAn District + ShenZhen GuangDong 518108 + CHINA + +00-19-5E (hex) Motorola CHS +00195E (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-19-5F (hex) Valemount Networks Corporation +00195F (base 16) Valemount Networks Corporation + 1201- 5th Ave + PO Box 687 + Valemount BC V0E2Z0 + CANADA + +00-19-60 (hex) DoCoMo Systems, Inc. +001960 (base 16) DoCoMo Systems, Inc. + Kokusaki Akasaka Bldg. 5F + 2-4-5 Akasaka + Minato-ku Tokyo 107-0052 + JAPAN + +00-19-61 (hex) Blaupunkt GmbH +001961 (base 16) Blaupunkt GmbH + Robert-Bosch-Strasse 200 + Hildesheim Hessen 31139 + GERMANY + +00-19-62 (hex) Commerciant, LP +001962 (base 16) Commerciant, LP + 2901 Wilcrest + Suite 250 + Houston Texas 77042 + UNITED STATES + +00-19-63 (hex) Sony Ericsson Mobile Communications AB +001963 (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund Skåne 221 88 + SWEDEN + +00-19-64 (hex) Doorking Inc. +001964 (base 16) Doorking Inc. + 120 Glasgow St. + Inglewood CA. 90301 + UNITED STATES + +00-19-65 (hex) YuHua TelTech (ShangHai) Co., Ltd. +001965 (base 16) YuHua TelTech (ShangHai) Co., Ltd. + YuHua R&D Building,27 xin jin qiao road, + Pudong, + SHANGHAI 201206 + CHINA + +00-19-66 (hex) Asiarock Technology Limited +001966 (base 16) Asiarock Technology Limited + P.O. Box957, Offshore Incorporations Centre + Road Town Tortola + VIRGIN ISLANDS, BRITISH + +00-19-67 (hex) TELDAT Sp.J. +001967 (base 16) TELDAT Sp.J. + Kijowska 44 + NIP 554 19 26 042 + Bydgoszcz woj. kujawsko-pomorskie 85-703 + POLAND + +00-19-68 (hex) Digital Video Networks(Shanghai) CO. LTD. +001968 (base 16) Digital Video Networks(Shanghai) CO. LTD. + 9th Floor,Hechuan Building, No.1026 YiShan Rd + Shanghai 201103 + CHINA + +00-19-69 (hex) Nortel +001969 (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-19-6A (hex) MikroM GmbH +00196A (base 16) MikroM GmbH + Dovestr. 1 + Berlin 10587 + GERMANY + +00-19-6B (hex) Danpex Corporation +00196B (base 16) Danpex Corporation + 2114 Ringwood Avenue + San Jose California 95131 + UNITED STATES + +00-19-6C (hex) ETROVISION TECHNOLOGY +00196C (base 16) ETROVISION TECHNOLOGY + 2F, 19-5 San Chung Rd., + Block C, Nan Kang Software Park, Nan Kang District, + TAIPEI 115 + TAIWAN, REPUBLIC OF CHINA + +00-19-6D (hex) Raybit Systems Korea, Inc +00196D (base 16) Raybit Systems Korea, Inc + Dream Tower 1221 + 923-14, Mokdong, Yangchunku + Seoul 158-718 + KOREA, REPUBLIC OF + +00-19-6E (hex) Metacom (Pty) Ltd. +00196E (base 16) Metacom (Pty) Ltd. + 6 Ndabeni Business Park + Inyoni Str, Ndabeni + Cape Town Western Cape 7405 + SOUTH AFRICA + +00-19-6F (hex) SensoPart GmbH +00196F (base 16) SensoPart GmbH + Am Wiedenbach 1 + Wieden Baden-Wuerttemberg D-79695 + GERMANY + +00-19-70 (hex) Z-Com, Inc. +001970 (base 16) Z-Com, Inc. + 7F-2, NO.9, PROSPERITY 1ST RD. + SCIENCE-BASED INDUSTRIAL PARK + HSINCHU 300 + TAIWAN, REPUBLIC OF CHINA + +00-19-71 (hex) Guangzhou Unicomp Technology Co.,Ltd +001971 (base 16) Guangzhou Unicomp Technology Co.,Ltd + 7/F,North Tower,Jinshan Building.No.248 + Rd Wushan, Tianhe District + Guangzhou Guangdong 510630 + CHINA + +00-19-72 (hex) Plexus (Xiamen) Co.,ltd +001972 (base 16) Plexus (Xiamen) Co.,ltd + No.6 Xiangxing 2 Road + Xiangyu Free Trade Zone + Xiamen Fujian 361006 + CHINA + +00-19-73 (hex) Zeugma Systems +001973 (base 16) Zeugma Systems + Suite 250 + 13571 Commerce Parkway + Richmond BC V6V 2R2 + CANADA + +00-19-74 (hex) AboCom Systems, Inc. +001974 (base 16) AboCom Systems, Inc. + 1F , No. 21, Yanfa 2nd Rd., SBIP + Hsinchu City Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-19-75 (hex) Beijing Huisen networks technology Inc +001975 (base 16) Beijing Huisen networks technology Inc + Jia#2 of Xili of Baiyun road,Xicheng district + Beijing 100045 + CHINA + +00-19-76 (hex) Xipher Technologies, LLC +001976 (base 16) Xipher Technologies, LLC + 156 River Road + Willington CT 06279 + UNITED STATES + +00-19-77 (hex) Aerohive Networks, Inc. +001977 (base 16) Aerohive Networks, Inc. + 2045 Martin Ave + Suite 206 + Santa Clara CA 95050 + UNITED STATES + +00-19-78 (hex) Datum Systems, Inc. +001978 (base 16) Datum Systems, Inc. + 3666 Tiffani Ct. + Santa Cruz CA 95065 + UNITED STATES + +00-19-79 (hex) Nokia Danmark A/S +001979 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-19-7A (hex) MAZeT GmbH +00197A (base 16) MAZeT GmbH + Goeschwitzer Str. 32 + Jena D-07745 + GERMANY + +00-19-7B (hex) Picotest Corp. +00197B (base 16) Picotest Corp. + 8F-1, 286-9, Hsin-Ya Rd., 80673 + Kaohsiung 80673 + TAIWAN, REPUBLIC OF CHINA + +00-19-7C (hex) Riedel Communications GmbH +00197C (base 16) Riedel Communications GmbH + Uellendahler Str. 353 + Wuppertal NRW 42109 + GERMANY + +00-19-7D (hex) Hon Hai Precision Ind. Co., Ltd +00197D (base 16) Hon Hai Precision Ind. Co., Ltd + 66, Chung Shan Rd.Tu-Cheng + Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-19-7E (hex) Hon Hai Precision Ind. Co., Ltd +00197E (base 16) Hon Hai Precision Ind. Co., Ltd + 66, Chung Shan Rd.Tu-Cheng + Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-19-7F (hex) PLANTRONICS, INC. +00197F (base 16) PLANTRONICS, INC. + 345 ENCINAL STREET + SANTA CRUZ CALIFORNIA 95060 + UNITED STATES + +00-19-80 (hex) Gridpoint Systems +001980 (base 16) Gridpoint Systems + 4043 Carling Avenue, Suite 200 + Ottawa Ontario K2K 2A3 + CANADA + +00-19-81 (hex) Vivox Inc +001981 (base 16) Vivox Inc + 40 Speen Street + Suite 402 + Framingham MA 01701 + UNITED STATES + +00-19-82 (hex) SmarDTV +001982 (base 16) SmarDTV + 531 Avenue du Serpolet + ZE Athélia 2 + La Ciotat France 13 704 + FRANCE + +00-19-83 (hex) CCT R&D Limited +001983 (base 16) CCT R&D Limited + 18/F CCT Telecom Building + 11 Wo Shing Street + Fotan, Shatin N.T. 0000 + HONG KONG + +00-19-84 (hex) ESTIC Corporation +001984 (base 16) ESTIC Corporation + 2-5-9 Hashibahigashino-cho + Moriguchi Osaka 570-0031 + JAPAN + +00-19-85 (hex) IT Watchdogs, Inc +001985 (base 16) IT Watchdogs, Inc + 12885 Research, Suite 210B + Austin TX 78750 + UNITED STATES + +00-19-86 (hex) Cheng Hongjian +001986 (base 16) Cheng Hongjian + Rm.2305B.Sege Plaza,Huaqiang North Rd., + Futian + Shenzhen Guangdong 518057 + CHINA + +00-19-87 (hex) Panasonic Mobile Communications Co., Ltd. +001987 (base 16) Panasonic Mobile Communications Co., Ltd. + 600 Saedo-cho, Tsuzuki-ku, + Yokohama City Kanagawa Prefecture 224-8539 + JAPAN + +00-19-88 (hex) Wi2Wi, Inc +001988 (base 16) Wi2Wi, Inc + 2107 N. 1st Street + Suite 540 + San Jose CA 95131 + UNITED STATES + +00-19-89 (hex) Sonitrol Corporation +001989 (base 16) Sonitrol Corporation + 1707 Orlando Central Pkwy. + Suite 500 + Orlando FL 32809 + UNITED STATES + +00-19-8A (hex) Northrop Grumman Systems Corp. +00198A (base 16) Northrop Grumman Systems Corp. + 7055 Troy Hill Drive + Elkridge Maryland 21075 + UNITED STATES + +00-19-8B (hex) Novera Optics Korea, Inc. +00198B (base 16) Novera Optics Korea, Inc. + 463-1 Jeon Min Dong Yuseong Gu + Deajeon 305-811 + KOREA, REPUBLIC OF + +00-19-8C (hex) iXSea +00198C (base 16) iXSea + 55 av auguste Renoir + Marly le Roi 78160 + FRANCE + +00-19-8D (hex) Ocean Optics, Inc. +00198D (base 16) Ocean Optics, Inc. + 830 Douglas Ave + Dunedin FL 34698 + UNITED STATES + +00-19-8E (hex) Oticon A/S +00198E (base 16) Oticon A/S + Kongebakken 9 + Smørum 2765 + DENMARK + +00-19-8F (hex) Alcatel Bell N.V. +00198F (base 16) Alcatel Bell N.V. + Copernicuslaan 50 + Antwerp B-2018 + BELGIUM + +00-19-90 (hex) ELM DATA Co., Ltd. +001990 (base 16) ELM DATA Co., Ltd. + 2-15 TECHNO-PARK 1-CHOME + SHIMONOPPORO, ATSUBETSU-KU + SAPPORO HOKKAIDO 004-0015 + JAPAN + +00-19-91 (hex) avinfo +001991 (base 16) avinfo + Jiahuiyuan 703,Huaao Center,31# Zizhuyuan Road, + Haidian District + Beijing 100089 + CHINA + +00-19-92 (hex) Bluesocket, Inc +001992 (base 16) Bluesocket, Inc + 10 North Ave + Burlington MA 01803 + UNITED STATES + +00-19-93 (hex) Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea +001993 (base 16) Changshu Switchgear MFG. Co.,Ltd. (Former Changshu Switchgea + No. 8 Jianye Road + Changshu Jiangsu 215500 + CHINA + +00-19-94 (hex) Jorjin Technologies Inc. +001994 (base 16) Jorjin Technologies Inc. + 5F, No.28, Lane141, Sing-ai Rd. + Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-19-95 (hex) Jurong Hi-Tech (Suzhou)Co.ltd +001995 (base 16) Jurong Hi-Tech (Suzhou)Co.ltd + 275,Xing Long Street£¬Suzhou Indudtrial Park + Suzhou Jiang Su 215021 + CHINA + +00-19-96 (hex) TurboChef Technologies Inc. +001996 (base 16) TurboChef Technologies Inc. + 4240 International Parkway + Suite 105 + Carrollton Texas 75007 + UNITED STATES + +00-19-97 (hex) Soft Device Sdn Bhd +001997 (base 16) Soft Device Sdn Bhd + 67-2 Jalan 2/27F + KLSC Wangsa Maju + Kuala Lumpur WP 53300 + MALAYSIA + +00-19-98 (hex) SATO CORPORATION +001998 (base 16) SATO CORPORATION + 1-207,ONARI-CHO, + OMIYA-KU + SAITAMA-SHI SAITAMA 330-0852 + JAPAN + +00-19-99 (hex) Fujitsu Siemens Computers +001999 (base 16) Fujitsu Siemens Computers + Buergermeister-Ulrich-Strasse 100 + Augsburg 86199 + GERMANY + +00-19-9A (hex) EDO-EVI +00199A (base 16) EDO-EVI + 7065 Columbia Gateway Dr. + Columbia MD 21046 + UNITED STATES + +00-19-9B (hex) Diversified Technical Systems, Inc. +00199B (base 16) Diversified Technical Systems, Inc. + 909 Electric Avenue + Suite 206 + Seal Beach California 90740 + UNITED STATES + +00-19-9C (hex) CTRING +00199C (base 16) CTRING + #514, World Meridian Venture Center II + Gasna-dong + Keumcheon-gu Seoul 153-803 + KOREA, REPUBLIC OF + +00-19-9D (hex) V, Inc. +00199D (base 16) V, Inc. + 320A Kalmus Dr. + Costa Mesa CA 92626 + UNITED STATES + +00-19-9E (hex) SHOWADENSHI ELECTRONICS,INC. +00199E (base 16) SHOWADENSHI ELECTRONICS,INC. + 1978 HIROOKA-NOMURA + SHIOJIRI-CITY NAGANO-PREF. 399-0702 + JAPAN + +00-19-9F (hex) DKT A/S +00199F (base 16) DKT A/S + Fanoevej 6 + Kr. Saaby DK-4060 + DENMARK + +00-19-A0 (hex) NIHON DATA SYSTENS, INC. +0019A0 (base 16) NIHON DATA SYSTENS, INC. + 6-9, Koyo-cho naka + Higashinada-ku + Kobe-shi Hyogo 658-0032 + JAPAN + +00-19-A1 (hex) LG INFORMATION & COMM. +0019A1 (base 16) LG INFORMATION & COMM. + 60-39,Kasan-dong,Kumchon-ku + Seoul 153-023 + KOREA, REPUBLIC OF + +00-19-A2 (hex) ORION TELE-EQUIPMENTS PVT LTD +0019A2 (base 16) ORION TELE-EQUIPMENTS PVT LTD + # 355/65/3, SARJAPURA MAIN ROAD + AGARA + BANGALORE - 560 034 KARNATANA 560 034 + INDIA + +00-19-A3 (hex) asteel electronique atlantique +0019A3 (base 16) asteel electronique atlantique + za de la lande de saint jean + bp 90111 + sainte marie de redon 35600 + FRANCE + +00-19-A4 (hex) Austar Technology (hang zhou) Co.,Ltd +0019A4 (base 16) Austar Technology (hang zhou) Co.,Ltd + 19-c,Bld A,Paradise Software Park + No.3,Xi doumen Rd. + Hang Zhou Zhe Jiang 310012 + CHINA + +00-19-A5 (hex) RadarFind Corporation +0019A5 (base 16) RadarFind Corporation + 2 Davis Drive + Research Triangle Park NC 27709 + UNITED STATES + +00-19-A6 (hex) Motorola CHS +0019A6 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-19-A7 (hex) ITU-T +0019A7 (base 16) ITU-T + Place des Nations + Geneva 20 CH-1211 + SWITZERLAND + +00-19-A8 (hex) WiQuest Communications +0019A8 (base 16) WiQuest Communications + 915 Enterprise Blvd. + Suite 200 + Allen Texas 75013 + UNITED STATES + +00-19-A9 (hex) Cisco Systems +0019A9 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-AA (hex) Cisco Systems +0019AA (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-AB (hex) Raycom CO ., LTD +0019AB (base 16) Raycom CO ., LTD + A,3-4/FL, Building 1,27 Chuangxin Road, + Changping Science Park + Beijing 102200 + CHINA + +00-19-AC (hex) GSP SYSTEMS Inc. +0019AC (base 16) GSP SYSTEMS Inc. + 13FL, 101 Dong, Chunui Techno Park 1, + 200-1, Chunui-Dong, Wonmi-GU, + Bucheon-City Gyeonggi-Do 420-857 + KOREA, REPUBLIC OF + +00-19-AD (hex) BOBST SA +0019AD (base 16) BOBST SA + rte des flumeaux 50 + Case Postale 1001 Lausanne + PRILLY VD 1008 + SWITZERLAND + +00-19-AE (hex) Hopling Technologies b.v. +0019AE (base 16) Hopling Technologies b.v. + Camerastraat 10 + Almere Flevoland 1322 BC + NETHERLANDS + +00-19-AF (hex) Rigol Technologies, Inc. +0019AF (base 16) Rigol Technologies, Inc. + No. 156 Cai He Village, Sha He Town + Chang Ping District + Beijing 102206 + CHINA + +00-19-B0 (hex) HanYang System +0019B0 (base 16) HanYang System + 701Ho, Kofomo Techno Center II, 1289-5 + Jungwang-Dong + Shihung-Shi Kyunggi-Do 429-850 + KOREA, REPUBLIC OF + +00-19-B1 (hex) Arrow7 Corporation +0019B1 (base 16) Arrow7 Corporation + Kamijima 3-27-7 + Hamamatsu Shizuoka 433-8122 + JAPAN + +00-19-B2 (hex) XYnetsoft Co.,Ltd +0019B2 (base 16) XYnetsoft Co.,Ltd + NO.158Zhenyu Street High Industries Development area + ChangChun JiLin 130000 + CHINA + +00-19-B3 (hex) Stanford Research Systems +0019B3 (base 16) Stanford Research Systems + 1290-D Reamwood Ave + Sunnyvale CA 94089 + UNITED STATES + +00-19-B4 (hex) VideoCast Ltd. +0019B4 (base 16) VideoCast Ltd. + Gyarmat u. 99/B + Budapest 1147 + HUNGARY + +00-19-B5 (hex) Famar Fueguina S.A. +0019B5 (base 16) Famar Fueguina S.A. + Rodney 70 + Buenos Aires 1427 + ARGENTINA + +00-19-B6 (hex) Euro Emme s.r.l. +0019B6 (base 16) Euro Emme s.r.l. + Via Belvedere, 24 + Galliate Lombardo Varese 21020 + ITALY + +00-19-B7 (hex) Nokia Danmark A/S +0019B7 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-19-B8 (hex) Boundary Devices +0019B8 (base 16) Boundary Devices + 1355 E. Greentree Drive + Tempe AZ 85284 + UNITED STATES + +00-19-B9 (hex) Dell Inc. +0019B9 (base 16) Dell Inc. + One Dell Way + MS 8545 + Round Rock TX 78682 + UNITED STATES + +00-19-BA (hex) Paradox Security Systems Ltd +0019BA (base 16) Paradox Security Systems Ltd + 780 Industrial Blvd + St-Eustache Quebec J7R 5V3 + CANADA + +00-19-BB (hex) Hewlett Packard +0019BB (base 16) Hewlett Packard + 20555 State Highway 249 + MS060308 + Houston TX 77070 + UNITED STATES + +00-19-BC (hex) ELECTRO CHANCE SRL +0019BC (base 16) ELECTRO CHANCE SRL + CARHUE 3179 + AV. EVA PERON 7049 + CAPITAL FEDERAL BUENOS AIRES 1440 + ARGENTINA + +00-19-BD (hex) New Media Life +0019BD (base 16) New Media Life + Hea Ju Bild, 5F, 837-7, Yeoksam-dong + Kangnam-gu Seoul 135-080 + KOREA, REPUBLIC OF + +00-19-BE (hex) Altai Technologies Limited +0019BE (base 16) Altai Technologies Limited + Unit 103B and 105, 1/F, Block 9, + Hong Kong Science Park + Shatin New Territories + HONG KONG + +00-19-BF (hex) Citiway technology Co.,ltd +0019BF (base 16) Citiway technology Co.,ltd + No.2 Building,Jia 32,Beiheyan Avenue,East City + Peijing 100006 + CHINA + +00-19-C0 (hex) Motorola Mobile Devices +0019C0 (base 16) Motorola Mobile Devices + 600 N. Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-19-C1 (hex) Alps Electric Co., Ltd +0019C1 (base 16) Alps Electric Co., Ltd + 1-2-1, Okinouchi, + Soma-city Fukushima-pref. 976-8501 + JAPAN + +00-19-C2 (hex) Equustek Solutions, Inc. +0019C2 (base 16) Equustek Solutions, Inc. + 51A Fawcett Road + Coquitlam BC V3K 6V2 + CANADA + +00-19-C3 (hex) Qualitrol +0019C3 (base 16) Qualitrol + Wildflower Way + Apollo Road + Belfast Co. Antrim BT12 6TA + UNITED KINGDOM + +00-19-C4 (hex) Infocrypt Inc. +0019C4 (base 16) Infocrypt Inc. + 711, BYUCKSAN DIGITAL VALLEY 1 212-16, + Guro-gu + Seoul 152-050 + KOREA, REPUBLIC OF + +00-19-C5 (hex) SONY Computer Entertainment inc, +0019C5 (base 16) SONY Computer Entertainment inc, + 6-21,2Chome + Minami-Aoyama + Minato-ku Tokyo 107-0062 + JAPAN + +00-19-C6 (hex) ZTE Corporation +0019C6 (base 16) ZTE Corporation + Technology Management Department, ZTE Corporation + 12/F., ZTE R&D Building, Kejinan Road + Shenzhen Guangdong 518057 + CHINA + +00-19-C7 (hex) Cambridge Industries(Group) Co.,Ltd. +0019C7 (base 16) Cambridge Industries(Group) Co.,Ltd. + Room 309,333 Hong Qiao Road + Shanghai 200030 + CHINA + +00-19-C8 (hex) AnyDATA Corporation +0019C8 (base 16) AnyDATA Corporation + 18902 Bardeen Ave. + Irvine CA 91612 + UNITED STATES + +00-19-C9 (hex) S&C ELECTRIC COMPANY +0019C9 (base 16) S&C ELECTRIC COMPANY + 1135 ATLANTIC AVE + ALAMEDA CA 94501 + UNITED STATES + +00-19-CA (hex) Broadata Communications, Inc +0019CA (base 16) Broadata Communications, Inc + 2545 W 237th St Ste K + Torrance Ca 90505 + UNITED STATES + +00-19-CB (hex) ZyXEL Communications Corporation +0019CB (base 16) ZyXEL Communications Corporation + No. 6, Innovation Road II + Hsinchu Science Park, Hsinchu 300 + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-19-CC (hex) RCG (HK) Ltd +0019CC (base 16) RCG (HK) Ltd + 9/F., Core C, Cyberport 3 + 100 Cyberport Rd + HONG KONG + +00-19-CD (hex) Chengdu ethercom information technology Ltd. +0019CD (base 16) Chengdu ethercom information technology Ltd. + South Extension of Tianfu Wide Road No.7 department room 201 + Chengdu Sichuan 610041 + CHINA + +00-19-CE (hex) Progressive Gaming International +0019CE (base 16) Progressive Gaming International + 920 Pilot Road + Las Vegas NV 89119 + UNITED STATES + +00-19-CF (hex) SALICRU, S.A. +0019CF (base 16) SALICRU, S.A. + Av. Serra , 100 + Sta.Ma.Palautordera Barcelona 08460 + SPAIN + +00-19-D0 (hex) Cathexis +0019D0 (base 16) Cathexis + PO Box 1091 + Umhlanga Rocks + Durban KwaZulu Natal 4320 + SOUTH AFRICA + +00-19-D1 (hex) Intel Corporation +0019D1 (base 16) Intel Corporation + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-19-D2 (hex) Intel Corporation +0019D2 (base 16) Intel Corporation + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-19-D3 (hex) TRAK Microwave +0019D3 (base 16) TRAK Microwave + 4726 Eisenhower Blvd + Tampa FL 33634 + UNITED STATES + +00-19-D4 (hex) ICX Technologies +0019D4 (base 16) ICX Technologies + 3440 Francis-Hughes + Suite 120 + Laval Quebec H7L 5A9 + CANADA + +00-19-D5 (hex) IP Innovations, Inc. +0019D5 (base 16) IP Innovations, Inc. + 1517 146th Ave + Dorr MI 49323 + UNITED STATES + +00-19-D6 (hex) LS Cable Ltd. +0019D6 (base 16) LS Cable Ltd. + 555 Hogye-dong, Dongan-gu + Anyang-si Kyonggi-do 431-080 + KOREA, REPUBLIC OF + +00-19-D7 (hex) FORTUNETEK CO., LTD +0019D7 (base 16) FORTUNETEK CO., LTD + 12F, No. 75, Sec 1, Chongqing S. Rd., + Zhongzheng District + Taipei 100 + TAIWAN, REPUBLIC OF CHINA + +00-19-D8 (hex) MAXFOR +0019D8 (base 16) MAXFOR + #E 809, Bundang, Techno-Park + Yatap-Dong, Bungdang-Gu + Seongnam-City Gyeonggi-Do 463-760 + KOREA, REPUBLIC OF + +00-19-D9 (hex) Zeutschel GmbH +0019D9 (base 16) Zeutschel GmbH + Heerweg 2 + Tübingen-Hirschau BW D-72070 + GERMANY + +00-19-DA (hex) Welltrans O&E Technology Co. , Ltd. +0019DA (base 16) Welltrans O&E Technology Co. , Ltd. + the 3rd Floor, building C-D, Hi-tech Digital Harbor, Guandong Industrial Park + Wuhan Hubei 430074 + CHINA + +00-19-DB (hex) MICRO-STAR INTERNATIONAL CO., LTD. +0019DB (base 16) MICRO-STAR INTERNATIONAL CO., LTD. + NO. 69, LI-DE ST., JUNG-HE CITY + TAIPEI HSIEN 235 + TUVALU + +00-19-DC (hex) ENENSYS Technologies +0019DC (base 16) ENENSYS Technologies + Le Germanium + 80 Avenue des buttes de Coësmes + RENNES Brittany 35700 + FRANCE + +00-19-DD (hex) FEI-Zyfer, Inc. +0019DD (base 16) FEI-Zyfer, Inc. + 1515 S. Manchester + Anaheim CA 92802 + UNITED STATES + +00-19-DE (hex) MOBITEK +0019DE (base 16) MOBITEK + 5F,No.60,Lane 321,Yang-Kwang Street + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-19-DF (hex) Thomson Inc. +0019DF (base 16) Thomson Inc. + 101 West 103rd Street + Indianapolis IN 46290-1102 + UNITED STATES + +00-19-E0 (hex) TP-LINK Technologies Co., Ltd. +0019E0 (base 16) TP-LINK Technologies Co., Ltd. + South Building, No.5 Keyuan Road + Central Zone, Science & Technology Park + Nanshan Shenzhen 518057 + CHINA + +00-19-E1 (hex) Nortel +0019E1 (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-19-E2 (hex) Juniper Networks +0019E2 (base 16) Juniper Networks + 1194 N. Mathilda Ave. + Sunnyvale CA 94089 + UNITED STATES + +00-19-E3 (hex) Apple Computers +0019E3 (base 16) Apple Computers + 1 Infinite Loop + Cupertino California 94538 + UNITED STATES + +00-19-E4 (hex) 2Wire, Inc +0019E4 (base 16) 2Wire, Inc + 1704 Automation Parkway + San Jose CA 95131 + UNITED STATES + +00-19-E5 (hex) Lynx Studio Technology, Inc. +0019E5 (base 16) Lynx Studio Technology, Inc. + 1540 Barton Rd # 268 + Redlands CA 92373 + UNITED STATES + +00-19-E6 (hex) TOYO MEDIC CO.,LTD. +0019E6 (base 16) TOYO MEDIC CO.,LTD. + 1-17-22 Kitahorie, Nishi-ku + Osaka 550-0014 + JAPAN + +00-19-E7 (hex) Cisco Systems +0019E7 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-E8 (hex) Cisco Systems +0019E8 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-19-E9 (hex) S-Information Technolgy, Co., Ltd. +0019E9 (base 16) S-Information Technolgy, Co., Ltd. + Sungwoo Bldg, 717-3 Suseo-dong, + Gangnam-gu, + Seoul 135-884 + KOREA, REPUBLIC OF + +00-19-EA (hex) TeraMage Technologies Co., Ltd. +0019EA (base 16) TeraMage Technologies Co., Ltd. + Golden Land Building Suite 907 + 32 Liang Ma Bridge Road + Beijing 100016 + CHINA + +00-19-EB (hex) Pyronix Ltd +0019EB (base 16) Pyronix Ltd + Braithwell Way + Hellaby + Rotherham South Yorkshire S66 8QY + UNITED KINGDOM + +00-19-EC (hex) Sagamore Systems, Inc. +0019EC (base 16) Sagamore Systems, Inc. + 55 Middlesex Street + Suite 217 + North Chelmsford MA 01863 + UNITED STATES + +00-19-ED (hex) Axesstel Inc. +0019ED (base 16) Axesstel Inc. + 6815 Flanders Sr. + Ste 210 + San Diego CA 92121 + UNITED STATES + +00-19-EE (hex) CARLO GAVAZZI CONTROLS SPA-Controls Division +0019EE (base 16) CARLO GAVAZZI CONTROLS SPA-Controls Division + Via Safforze 8 + BELLUNO BL I-32100 + ITALY + +00-19-EF (hex) SHENZHEN LINNKING ELECTRONICS CO.,LTD +0019EF (base 16) SHENZHEN LINNKING ELECTRONICS CO.,LTD + Room 901,B Block,Qinghua Information Center Hi-tec park North District,Nanshan District,Shenzhen + shenzhen guangdong 518057 + CHINA + +00-19-F0 (hex) UNIONMAN TECHNOLOGY CO.,LTD +0019F0 (base 16) UNIONMAN TECHNOLOGY CO.,LTD + 18F, HUAYANG TOWER,YANDAYI ROAD + HUIZHOU GUANGDONG 516007 + CHINA + +00-19-F1 (hex) Star Communication Network Technology Co.,Ltd +0019F1 (base 16) Star Communication Network Technology Co.,Ltd + 10/F,Tower B,SOHO New Town,No.88 jianguoRoad,Chaoyang District + Beijing 100022 + CHINA + +00-19-F2 (hex) Teradyne K.K. +0019F2 (base 16) Teradyne K.K. + 272-13, Heisei, Takaono + Ozu-machi + Kikuchi-gun Kumamoto 869-1232 + JAPAN + +00-19-F3 (hex) Telematrix, Inc +0019F3 (base 16) Telematrix, Inc + 5025 Galley Rd + Colorado Springs CO 80915 + UNITED STATES + +00-19-F4 (hex) Convergens Oy Ltd +0019F4 (base 16) Convergens Oy Ltd + Westendintie 99 B + Espoo Uusimaa FIN-02160 + FINLAND + +00-19-F5 (hex) Imagination Technologies Ltd +0019F5 (base 16) Imagination Technologies Ltd + 23 The Calls + Leeds West Yorkshire LS2 7EH + UNITED KINGDOM + +00-19-F6 (hex) Acconet (PTE) Ltd +0019F6 (base 16) Acconet (PTE) Ltd + No. 16 Ayer Rajah Crescent + # 03-03 + Singapore 139965 + SINGAPORE + +00-19-F7 (hex) Onset Computer Corporation +0019F7 (base 16) Onset Computer Corporation + P.O. Box 3450 + Pocasset MA 02559 + UNITED STATES + +00-19-F8 (hex) Embedded Systems Design, Inc. +0019F8 (base 16) Embedded Systems Design, Inc. + 6810 Deerpath Road + Suite 300 + Elkridge MD 21075 + UNITED STATES + +00-19-F9 (hex) Lambda +0019F9 (base 16) Lambda + 405 Essex Road + Neptune NJ 07753 + UNITED STATES + +00-19-FA (hex) Cable Vision Electronics CO., LTD. +0019FA (base 16) Cable Vision Electronics CO., LTD. + 12F-3, No.16, Chien Pa Rd. + Chung Ho City Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-19-FB (hex) AMSTRAD PLC +0019FB (base 16) AMSTRAD PLC + 169 KINGS ROAD + BRENTWOOD ESSEX CM14 4EF + UNITED KINGDOM + +00-19-FC (hex) PT. Ufoakses Sukses Luarbiasa +0019FC (base 16) PT. Ufoakses Sukses Luarbiasa + Jl. Sultan Hasanudin No. 41 + Kebayoran Baru + Jakarta Selatan DKI Jakarta 12160 + INDONESIA + +00-19-FD (hex) Nintendo Co., Ltd. +0019FD (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO 601-8501 + JAPAN + +00-19-FE (hex) SHENZHEN SEECOMM TECHNOLOGY CO.,LTD. +0019FE (base 16) SHENZHEN SEECOMM TECHNOLOGY CO.,LTD. + Room 609,404Yannan Road + ShenZhen Guangdong 518031 + CHINA + +00-19-FF (hex) Finnzymes +0019FF (base 16) Finnzymes + 800 West Cummings Park + Suite 5550 + Woburn MA 01801 + UNITED STATES + +00-1A-00 (hex) MATRIX INC. +001A00 (base 16) MATRIX INC. + AS bld.3-13-20 + Nishi-Temma Kita-Ku + Osaka 530-0047 + JAPAN + +00-1A-01 (hex) Smiths Medical +001A01 (base 16) Smiths Medical + 4350 Rivergreen Parkway + Suite 200 + Duluth GA 30096 + UNITED STATES + +00-1A-02 (hex) SECURE CARE PRODUCTS, INC +001A02 (base 16) SECURE CARE PRODUCTS, INC + 39 CHENELL DRIVE + CONCORD NH 03301 + UNITED STATES + +00-1A-03 (hex) Angel Electronics Co., Ltd. +001A03 (base 16) Angel Electronics Co., Ltd. + 17, Lane 134, Shou Shan Road, Tai Shan, + Taipei 243 + TAIWAN, REPUBLIC OF CHINA + +00-1A-04 (hex) Interay Solutions BV +001A04 (base 16) Interay Solutions BV + Mr. W.M. Oppedijk van Veenweg 8 + BURGUM Friesland 9251 GA + NETHERLANDS + +00-1A-05 (hex) OPTIBASE LTD +001A05 (base 16) OPTIBASE LTD + 7 Shankar St. + Herzliya ISRAEL 46120 + ISRAEL + +00-1A-06 (hex) OpVista, Inc. +001A06 (base 16) OpVista, Inc. + 870 North McCarthy Blvd. + Milpitas California 95035 + UNITED STATES + +00-1A-07 (hex) Arecont Vision +001A07 (base 16) Arecont Vision + 2400 N. Lincoln Ave + Altadena CA 91001 + UNITED STATES + +00-1A-08 (hex) Dalman Technical Services +001A08 (base 16) Dalman Technical Services + 36 Duke Close + West Way + Andover Hampshire SP10 5AP + UNITED KINGDOM + +00-1A-09 (hex) Wayfarer Transit Systems Ltd +001A09 (base 16) Wayfarer Transit Systems Ltd + 10 Willis Way + Fleets Insdustrial Est + Poole Dorset BH15 3SS + UNITED KINGDOM + +00-1A-0A (hex) Adaptive Micro-Ware Inc. +001A0A (base 16) Adaptive Micro-Ware Inc. + 6917 Innovation Blvd + Fort Wayne IN 46818 + UNITED STATES + +00-1A-0B (hex) BONA TECHNOLOGY INC. +001A0B (base 16) BONA TECHNOLOGY INC. + 4F, E-Place Bldg., 719-24 + Yeoksam-Dong, Gangnam-Gu, + Seoul 135-080 + KOREA, REPUBLIC OF + +00-1A-0C (hex) Swe-Dish Satellite Systems AB +001A0C (base 16) Swe-Dish Satellite Systems AB + Torggatan 15 + Solna Stockholm SE-171 06 + SWEDEN + +00-1A-0D (hex) HandHeld entertainment, Inc. +001A0D (base 16) HandHeld entertainment, Inc. + 539 Bryant Street, Suite 403 + San Francisco CA 94103 + UNITED STATES + +00-1A-0E (hex) Cheng Uei Precision Industry Co.,Ltd +001A0E (base 16) Cheng Uei Precision Industry Co.,Ltd + Junda Industry District, Dongkeng Town,Dongguan City + DongGuan Guang Dong 523455 + CHINA + +00-1A-0F (hex) Sistemas Avanzados de Control, S.A. +001A0F (base 16) Sistemas Avanzados de Control, S.A. + calle Colquide 6 + Las Rozas Madrid 28230 + SPAIN + +00-1A-10 (hex) LUCENT TRANS ELECTRONICS CO.,LTD +001A10 (base 16) LUCENT TRANS ELECTRONICS CO.,LTD + 9F-1,No.16,Chien Pah Rd. + Chung Ho Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-1A-11 (hex) Google Inc. +001A11 (base 16) Google Inc. + 1600 Amphitheater Parkway + Mountain View CA 94043 + UNITED STATES + +00-1A-12 (hex) Essilor +001A12 (base 16) Essilor + 64 Bis Avenue Aubert + 94300 Vincennes + FRANCE + +00-1A-13 (hex) Wanlida Group Co., LTD +001A13 (base 16) Wanlida Group Co., LTD + Jiahe Road No.618 + Xiamen Fujian 361006 + CHINA + +00-1A-14 (hex) Xin Hua Control Engineering Co.,Ltd. +001A14 (base 16) Xin Hua Control Engineering Co.,Ltd. + 160 Wenjing Rd., Minhang + Shanghai 2000245 + CHINA + +00-1A-15 (hex) gemalto e-Payment +001A15 (base 16) gemalto e-Payment + 6 rue de la Verrerie + Meudon 92197 + FRANCE + +00-1A-16 (hex) Nokia Danmark A/S +001A16 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1A-17 (hex) Teak Technologies, Inc. +001A17 (base 16) Teak Technologies, Inc. + 2901 Tasman Dr., Ste. #210 + Santa Clara CA 95054 + UNITED STATES + +00-1A-18 (hex) Advanced Simulation Technology inc. +001A18 (base 16) Advanced Simulation Technology inc. + 500A Huntmar Park Drive + Herndon VA 20170 + UNITED STATES + +00-1A-19 (hex) Computer Engineering Limited +001A19 (base 16) Computer Engineering Limited + PO Box 26-25 + Epsom + Auckland AK 1344 + NEW ZEALAND + +00-1A-1A (hex) Gentex Corporation/Electro-Acoustic Products +001A1A (base 16) Gentex Corporation/Electro-Acoustic Products + 2456 Brown Avenue + Manchester NH 03103 + UNITED STATES + +00-1A-1B (hex) Motorola Mobile Devices +001A1B (base 16) Motorola Mobile Devices + 600 N. Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-1A-1C (hex) GT&T Engineering Pte Ltd +001A1C (base 16) GT&T Engineering Pte Ltd + 2 Ang Mo Kio St.64, Econ Building, #04-00 + Singapore 569084 + SINGAPORE + +00-1A-1D (hex) PChome Online Inc. +001A1D (base 16) PChome Online Inc. + 11F, 105, Sec. 2, Tun-Hwa S. Rd. + Taipei 106 + TAIWAN, REPUBLIC OF CHINA + +00-1A-1E (hex) Aruba Networks +001A1E (base 16) Aruba Networks + 1322 Crossman Av + Sunnyvale CA 94089 + UNITED STATES + +00-1A-1F (hex) Coastal Environmental Systems +001A1F (base 16) Coastal Environmental Systems + 820 First Avenue South + Seattle wa 98134 + UNITED STATES + +00-1A-20 (hex) CMOTECH Co. Ltd. +001A20 (base 16) CMOTECH Co. Ltd. + 5F Etronix Bldg. 17-10 + Yoido-Dong + Youngdungpo-Gu Seoul 150-874 + KOREA, REPUBLIC OF + +00-1A-21 (hex) Indac B.V. +001A21 (base 16) Indac B.V. + Institutenweg 15A + Enschede Overijssel 7521 PH + NETHERLANDS + +00-1A-22 (hex) eq-3 GmbH +001A22 (base 16) eq-3 GmbH + Maiburger Str. 32-36 + Leer Niedersachsen D-26789 + GERMANY + +00-1A-23 (hex) Ice Qube, Inc +001A23 (base 16) Ice Qube, Inc + 141 Wilson Ave + Greensburg Pa 15601 + UNITED STATES + +00-1A-24 (hex) Galaxy Telecom Technologies Ltd +001A24 (base 16) Galaxy Telecom Technologies Ltd + No.25, The 1st Gaoxin Road + Xi'an City Shannxi 710075 + CHINA + +00-1A-25 (hex) DELTA DORE +001A25 (base 16) DELTA DORE + BONNEMAIN + COMBOURG BRETAGNE 35 35270 + FRANCE + +00-1A-26 (hex) Deltanode Solutions AB +001A26 (base 16) Deltanode Solutions AB + Box 92 184 + Stockholm 120 09 + SWEDEN + +00-1A-27 (hex) Ubistar +001A27 (base 16) Ubistar + 8F, Seongdo Building, 587-23 + Sinsa-Dong, Gangnam-Gu + Seoul 135-747 + KOREA, REPUBLIC OF + +00-1A-28 (hex) ASWT Co., LTD. Taiwan Branch H.K. +001A28 (base 16) ASWT Co., LTD. Taiwan Branch H.K. + 7F., No.3 Lane 91, Dongmei Rd. + Hsinchu 30070 + TAIWAN, REPUBLIC OF CHINA + +00-1A-29 (hex) Techsonic Industries d/b/a Humminbird +001A29 (base 16) Techsonic Industries d/b/a Humminbird + 1220 Old Alpharetta Rd + Suite 340 + Alpharetta GA 30041 + UNITED STATES + +00-1A-2A (hex) Arcadyan Technology Corporation +001A2A (base 16) Arcadyan Technology Corporation + 4F., No. 9 , Park Avenue II, + Science-based Industrial Park, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1A-2B (hex) Ayecom Technology Co., Ltd. +001A2B (base 16) Ayecom Technology Co., Ltd. + No. 25, R&D Road 2, Science-Based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1A-2C (hex) SATEC Co.,LTD +001A2C (base 16) SATEC Co.,LTD + 358-4, Palgok2-Dong, Sangnok-Gu + Ansan-Si Kyungki-Do 426-190 + KOREA, REPUBLIC OF + +00-1A-2D (hex) The Navvo Group +001A2D (base 16) The Navvo Group + 4400 Baker Road + Minnetonka MN 55343 + UNITED STATES + +00-1A-2E (hex) Ziova Coporation +001A2E (base 16) Ziova Coporation + Unit 3, 7-9 Sherriffs road + Lonsdale S.A. 5160 + AUSTRALIA + +00-1A-2F (hex) Cisco Systems +001A2F (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1A-30 (hex) Cisco Systems +001A30 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1A-31 (hex) SCAN COIN Industries AB +001A31 (base 16) SCAN COIN Industries AB + Jagershillgatan 26 + Malmoe Skane 21375 + SWEDEN + +00-1A-32 (hex) ACTIVA MULTIMEDIA +001A32 (base 16) ACTIVA MULTIMEDIA + SICP CSE + SANT JOAN DESPI BARCELONA 08970 + SPAIN + +00-1A-33 (hex) ASI Communications, Inc. +001A33 (base 16) ASI Communications, Inc. + 1042 E Guadalupe Rd + Tempe AZ 85283 + UNITED STATES + +00-1A-34 (hex) Konka Group Co., Ltd. +001A34 (base 16) Konka Group Co., Ltd. + Oversea Chinese Town,Nanshan, + Shenzhen Guangdong 518053 + CHINA + +00-1A-35 (hex) BARTEC GmbH +001A35 (base 16) BARTEC GmbH + Schulstr. 30 + Gotteszell Bavaria 94239 + GERMANY + +00-1A-36 (hex) Aipermon GmbH & Co. KG +001A36 (base 16) Aipermon GmbH & Co. KG + Zamdorfer Str. 100 + Munchen + Munich Bavaria D-81677 + GERMANY + +00-1A-37 (hex) Lear Corporation +001A37 (base 16) Lear Corporation + Industriestrasse 48 + Kronach Bayern 96317 + GERMANY + +00-1A-38 (hex) Sanmina-SCI +001A38 (base 16) Sanmina-SCI + 13000 South Memorial Parkway + Huntsville AL 35803 + UNITED STATES + +00-1A-39 (hex) Merten GmbH&CoKG +001A39 (base 16) Merten GmbH&CoKG + Fritz-Kotz-Str. 8 + Wiehl NRW 51674 + GERMANY + +00-1A-3A (hex) Dongahelecomm +001A3A (base 16) Dongahelecomm + 678-3,Jeil-ri,Yanggi-myun,Cheoin-gu + Yongin-si Gyeonggi-do 449-821 + KOREA, REPUBLIC OF + +00-1A-3B (hex) Doah Elecom Inc. +001A3B (base 16) Doah Elecom Inc. + 8th fl. Century Plaza, 277-40 + Sungsu-2Ga 3Dong + Seoul 133-123 + KOREA, REPUBLIC OF + +00-1A-3C (hex) Technowave Ltd. +001A3C (base 16) Technowave Ltd. + Sakurai Bldg.1F, + 1-35-6 Nakacho + Musashino-shi Tokyo 180-0006 + JAPAN + +00-1A-3D (hex) Ajin Vision Co.,Ltd +001A3D (base 16) Ajin Vision Co.,Ltd + 1404, Mario-Tower, 222-12 + Guro-dong, Guro-gu + Seoul 152-050 + KOREA, REPUBLIC OF + +00-1A-3E (hex) Faster Technology LLC +001A3E (base 16) Faster Technology LLC + 1812 Avenue D + Suite 202 + Katy Texas 77493 + UNITED STATES + +00-1A-3F (hex) intelbras +001A3F (base 16) intelbras + rodovia br 101 km 210 + intelbras + sao jose sc 88104800 + BRAZIL + +00-1A-40 (hex) A-FOUR TECH CO., LTD. +001A40 (base 16) A-FOUR TECH CO., LTD. + 6F, No. 108, Min-Chuan Rd., + Hsin-Tien Taipei 23141 + TAIWAN, REPUBLIC OF CHINA + +00-1A-41 (hex) INOCOVA Co.,Ltd +001A41 (base 16) INOCOVA Co.,Ltd + 5F SEOUL BD.736-17 + Yeoksam-Dong, Kangnam-Ku SEOUL 135-924 + KOREA, REPUBLIC OF + +00-1A-42 (hex) Techcity Technology co., Ltd. +001A42 (base 16) Techcity Technology co., Ltd. + 4F, No. 4, Alley 1, Szu Wei Lane, Chung Cheng Rd., + Hsin Tein City Taipei Hsien 231 + TAIWAN, REPUBLIC OF CHINA + +00-1A-43 (hex) Logical Link Communications +001A43 (base 16) Logical Link Communications + 1909 Central Drive Suite 205 + Bedford TX 76021 + UNITED STATES + +00-1A-44 (hex) JWTrading Co., Ltd +001A44 (base 16) JWTrading Co., Ltd + 1590 Kwanyang-dong, Dongan-ku + Ahnyang Kyungki - do 431-060 + KOREA, REPUBLIC OF + +00-1A-45 (hex) GN Netcom as +001A45 (base 16) GN Netcom as + Metalbuen 66 + P.O.Box 201 + Ballerup Skovlunde DK - 2750 + DENMARK + +00-1A-46 (hex) Digital Multimedia Technology Co., Ltd +001A46 (base 16) Digital Multimedia Technology Co., Ltd + Doorim Bldg, 3rd Fl, 164-21 Poi-Dong, + Seoul Kangnam-Gu 135-960 + KOREA, REPUBLIC OF + +00-1A-47 (hex) Agami Systems, Inc. +001A47 (base 16) Agami Systems, Inc. + 1269 Innsbruck Drive + Sunnyvale California 94089 + UNITED STATES + +00-1A-48 (hex) Takacom Corporation +001A48 (base 16) Takacom Corporation + 304-709 Aza-Nishiyanma + Oroshi-cho + Toki-shi Gifu-ken 509-5202 + JAPAN + +00-1A-49 (hex) Micro Vision Co.,LTD +001A49 (base 16) Micro Vision Co.,LTD + 1-9-15 + Kandouji Minami + Niigata-city Niigata-ken 950-0986 + JAPAN + +00-1A-4A (hex) Qumranet Inc. +001A4A (base 16) Qumranet Inc. + 530 Lakeside Drive + Suite 220 + Sunnyvale California 94085 + UNITED STATES + +00-1A-4B (hex) Hewlett Packard +001A4B (base 16) Hewlett Packard + 20555 State Highway 249 + MS060308 + Houston TX 77070 + UNITED STATES + +00-1A-4C (hex) Crossbow Technology, Inc +001A4C (base 16) Crossbow Technology, Inc + 4145 N. First Street + San Jose CA 95134 + UNITED STATES + +00-1A-4D (hex) GIGA-BYTE TECHNOLOGY CO.,LTD. +001A4D (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD. + + Pin-Jen Taoyuan 324 + TAIWAN, REPUBLIC OF CHINA + +00-1A-4E (hex) NTI AG / LinMot +001A4E (base 16) NTI AG / LinMot + Haerdlistrasse 15 + Spreitenbach AG 8957 + SWITZERLAND + +00-1A-4F (hex) AVM GmbH +001A4F (base 16) AVM GmbH + Alt-Moabit 95 + Berlin 10559 + GERMANY + +00-1A-50 (hex) PheeNet Technology Corp. +001A50 (base 16) PheeNet Technology Corp. + Rm. 3, 20F, No. 79, Sec. 1 Hsin Tai Wu Rd. + Hsi-Chih Taipei 221 + TAIWAN, REPUBLIC OF CHINA + +00-1A-51 (hex) Alfred Mann Foundation +001A51 (base 16) Alfred Mann Foundation + P.O. Box 905 + Santa Clarita CA 91380-9005 + UNITED STATES + +00-1A-52 (hex) Meshlinx Wireless Inc. +001A52 (base 16) Meshlinx Wireless Inc. + 1410 G Avenue, Suite T + Plano Texas 75074 + UNITED STATES + +00-1A-53 (hex) Zylaya +001A53 (base 16) Zylaya + 444 N. Frederick Ave. + Suite 318 + Gaithersburg MD 20877 + UNITED STATES + +00-1A-54 (hex) Hip Shing Electronics Ltd. +001A54 (base 16) Hip Shing Electronics Ltd. + Unit 1/2/3, 20/F, New Treasure Center + 10 Ng Fong Street, San Po Kong, Kowloon + HONG KONG + +00-1A-55 (hex) ACA-Digital Corporation +001A55 (base 16) ACA-Digital Corporation + 17 F, No. 866-7, Chung Cheng Rd., + Chung Ho City Taipei County 23586 + TAIWAN, REPUBLIC OF CHINA + +00-1A-56 (hex) ViewTel Co,. Ltd. +001A56 (base 16) ViewTel Co,. Ltd. + #B-502,Bundang Techno Park 148 + YaTap-Dong + BunDang-Ku, SeongNam-Si GyeongGi-Do 463-760 + KOREA, REPUBLIC OF + +00-1A-57 (hex) Matrix Design Group, LLC +001A57 (base 16) Matrix Design Group, LLC + 5741 Prospect Dr. + Newburgh IN 47630 + UNITED STATES + +00-1A-58 (hex) Celectronic GmbH +001A58 (base 16) Celectronic GmbH + Nordlichtstrasse 63 + Berlin D-13405 + GERMANY + +00-1A-59 (hex) Ircona +001A59 (base 16) Ircona + College, Business & Technology Park + Blanchardstown Dublin 15 + IRELAND + +00-1A-5A (hex) Korea Electric Power Data Network (KDN) Co., Ltd +001A5A (base 16) Korea Electric Power Data Network (KDN) Co., Ltd + 665 NAESON-DONG, + GYEONGGI-DO UIWANG-SI, NAESON-DONG 437-082 + KOREA, REPUBLIC OF + +00-1A-5B (hex) NetCare Service Co., Ltd. +001A5B (base 16) NetCare Service Co., Ltd. + 5-13-16 Shimizu, Asahi-ku + Osaka 535-0021 + JAPAN + +00-1A-5C (hex) Euchner GmbH+Co. KG +001A5C (base 16) Euchner GmbH+Co. KG + Kohlhammerstr. 16 + Leinfelden-Echterdingen BW 70771 + GERMANY + +00-1A-5D (hex) Mobinnova Corp. +001A5D (base 16) Mobinnova Corp. + 11F, 845, CHUNG SHAN RD + TAOYUAN 33059 + TAIWAN, REPUBLIC OF CHINA + +00-1A-5E (hex) Thincom Technology Co.,Ltd +001A5E (base 16) Thincom Technology Co.,Ltd + 17F-3, No.398, Huanbei Rd., + Zhongli City Taoyuan Contry 320 + TAIWAN, REPUBLIC OF CHINA + +00-1A-5F (hex) KitWorks.fi Ltd. +001A5F (base 16) KitWorks.fi Ltd. + Snowpolis + Vuokatti Kainuu 88610 + FINLAND + +00-1A-60 (hex) Wave Electronics Co.,Ltd. +001A60 (base 16) Wave Electronics Co.,Ltd. + 3th Fl.,DaeSan Plaza B/D,Guun-Dong, 12-1,Gwonseon-Gu + Suwon-si Kyeonggi-Do 441-814 + KOREA, REPUBLIC OF + +00-1A-61 (hex) PacStar Corp. +001A61 (base 16) PacStar Corp. + 15055 SW Sequoia Pkwy, Suite 100 + Portland OR 97006 + UNITED STATES + +00-1A-62 (hex) Data Robotics, Incorporated +001A62 (base 16) Data Robotics, Incorporated + 1881 Landings Dr + Mountain View CA 94043 + UNITED STATES + +00-1A-63 (hex) Elster Electricity, LLC +001A63 (base 16) Elster Electricity, LLC + 208 South Rogers Lane + Raleigh NC 27610 + UNITED STATES + +00-1A-64 (hex) IBM Corp. +001A64 (base 16) IBM Corp. + 3039 E Cornwallis Rd + P.O. BOX 12195 + Research Triangle Park NC 27709-2195 + UNITED STATES + +00-1A-65 (hex) Seluxit +001A65 (base 16) Seluxit + Nyhavnsgade 9, 2.sal + Aalborg Nord Jylland 9000 + DENMARK + +00-1A-66 (hex) Motorola CHS +001A66 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-1A-67 (hex) Infinite QL Sdn Bhd +001A67 (base 16) Infinite QL Sdn Bhd + G.02, Block A, Dataran Hamodal + No.4, Jalan 13/4, Sect. 13, + Petaling Jaya Selangor Darul Ehsan 46300 + MALAYSIA + +00-1A-68 (hex) Weltec Enterprise Co., Ltd. +001A68 (base 16) Weltec Enterprise Co., Ltd. + 2F, No. 351 Yung Ho Rd. + Taipei Hsien + Chung Ho 235 + TAIWAN, REPUBLIC OF CHINA + +00-1A-69 (hex) Wuhan Yangtze Optical Technology CO.,Ltd. +001A69 (base 16) Wuhan Yangtze Optical Technology CO.,Ltd. + 4#,Guanshan 2 Road + Wuhan Hubei 430073 + CHINA + +00-1A-6A (hex) Tranzas, Inc. +001A6A (base 16) Tranzas, Inc. + Queens tower C17 + Minatomirai 2-3-5 Nishi-ku + Yokohama Kanagawa-ken 220-6217 + JAPAN + +00-1A-6B (hex) USI +001A6B (base 16) USI + 141, LANE 351, TAIPING RD. + SEC.1, TSAO TUEN, + NAN-TOU 542 + TAIWAN, REPUBLIC OF CHINA + +00-1A-6C (hex) Cisco Systems +001A6C (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1A-6D (hex) Cisco Systems +001A6D (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1A-6E (hex) Impro Technologies +001A6E (base 16) Impro Technologies + 47B Gillits Rd + Pinetown KwaZulu-Natal 3610 + SOUTH AFRICA + +00-1A-6F (hex) MI.TEL s.r.l. +001A6F (base 16) MI.TEL s.r.l. + VIA GUIDO ROSSA, 22 + CORNATE D'ADDA MILANO 20040 + ITALY + +00-1A-70 (hex) Cisco-Linksys, LLC +001A70 (base 16) Cisco-Linksys, LLC + 121 Theory Drive + Irvine California 92612 + UNITED STATES + +00-1A-71 (hex) Diostech Co., Ltd. +001A71 (base 16) Diostech Co., Ltd. + 151-21, Buk-ri, Namsa-myeon, + Cheoin-gu + Yongin-city Gyeonggi-do 449 884 + KOREA, REPUBLIC OF + +00-1A-72 (hex) Mosart Semiconductor Corp. +001A72 (base 16) Mosart Semiconductor Corp. + 23F., No.33, Sec.1, + Min Sheng Rd., Panchiao City + Taipei 220 + TAIWAN, REPUBLIC OF CHINA + +00-1A-73 (hex) Gemtek Technology Co., Ltd. +001A73 (base 16) Gemtek Technology Co., Ltd. + No. 1 Jen Ai Road, Hsinchu Industrial Park, Hukou, + Hsinchu 303 + TAIWAN, REPUBLIC OF CHINA + +00-1A-74 (hex) Procare International Co +001A74 (base 16) Procare International Co + 5F, No.88, Jhouzih Street, Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1A-75 (hex) Sony Ericsson Mobile Communications +001A75 (base 16) Sony Ericsson Mobile Communications + Nya Vattentornet + Lund Skåne 22188 + SWEDEN + +00-1A-76 (hex) SDT information Technology Co.,LTD. +001A76 (base 16) SDT information Technology Co.,LTD. + Samil B/B 2F, 5-63 Hyochang-dong + Yongsan-Ku, + Seoul 140-896 + KOREA, REPUBLIC OF + +00-1A-77 (hex) Motorola Mobile Devices +001A77 (base 16) Motorola Mobile Devices + 600 N. Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-1A-78 (hex) ubtos +001A78 (base 16) ubtos + Rn.213, Woolim Lion¡¯s Valley ¥±, #680 + seoul Gasan-dong 153-803 + KOREA, REPUBLIC OF + +00-1A-79 (hex) TELECOMUNICATION TECHNOLOGIES LTD. +001A79 (base 16) TELECOMUNICATION TECHNOLOGIES LTD. + 4D ZHUKOVA BLV. + ODESSA 65121 + UKRAINE + +00-1A-7A (hex) Lismore Instruments Limited +001A7A (base 16) Lismore Instruments Limited + Unit 2 Tristar Centre, Star Road + Partridge Green + Horsham West Sussex RH13 8RA + UNITED KINGDOM + +00-1A-7B (hex) Teleco, Inc. +001A7B (base 16) Teleco, Inc. + 430 Woodruff Rd. + Suite 300 + Greenville SC 29607 + UNITED STATES + +00-1A-7C (hex) Hirschmann Automation and Control B.V. +001A7C (base 16) Hirschmann Automation and Control B.V. + Pampuslaan 170 + Weesp Noord-Holland 1382 JS + NETHERLANDS + +00-1A-7D (hex) cyber-blue(HK)Ltd +001A7D (base 16) cyber-blue(HK)Ltd + Room 1408 block C stars Plaza HongLiRoad,FuTian District + Shenzhen GuangDong 518028 + CHINA + +00-1A-7E (hex) LN Srithai Comm Ltd. +001A7E (base 16) LN Srithai Comm Ltd. + 71/12 M.5, Bangna-Trad Rd, KM.52, Thakam + Bangpakong Chachoengsao 24130 + THAILAND + +00-1A-7F (hex) GCI Science&Technology Co.,Ltd. +001A7F (base 16) GCI Science&Technology Co.,Ltd. + No.381, Xingangzhong Road, + guangzhou guangdong 510310 + CHINA + +00-1A-80 (hex) Sony Corporation +001A80 (base 16) Sony Corporation + 5-1-2 Kitashinagawa + Shinagawa-ku Tokyo 141-0001 + JAPAN + +00-1A-81 (hex) Zelax +001A81 (base 16) Zelax + 2nd buid., 1B, Zavodskaya st., + Moscow 124681 + RUSSIAN FEDERATION + +00-1A-82 (hex) PROBA Building Automation Co.,LTD +001A82 (base 16) PROBA Building Automation Co.,LTD + Penghuan Building 501, Shangdi East Road #1, Haidian District, + Beijing 100085 + CHINA + +00-1A-83 (hex) Pegasus Technologies Inc. +001A83 (base 16) Pegasus Technologies Inc. + 108 Pawnook Farm Rd. + Lenoir City TN 37771 + UNITED STATES + +00-1A-84 (hex) V One Multimedia Pte Ltd +001A84 (base 16) V One Multimedia Pte Ltd + Blk 54, Kallang Bahru + #02-04 + 339336 + SINGAPORE + +00-1A-85 (hex) NV Michel Van de Wiele +001A85 (base 16) NV Michel Van de Wiele + M. Vandewielestraat 7 + Marke West-Vlaanderen 8510 + BELGIUM + +00-1A-86 (hex) AdvancedIO Systems Inc +001A86 (base 16) AdvancedIO Systems Inc + 595 Howe Street, Suite 502 + Vancouver BC V6C 2T5 + CANADA + +00-1A-87 (hex) Canhold International Limited +001A87 (base 16) Canhold International Limited + Flat 4, 13/F., Block 4, Tai Ping Industrial Centre + 51A Ting Kok Road, Tai Po, N.T., + 00852 + HONG KONG + +00-1A-88 (hex) Venergy,Co,Ltd +001A88 (base 16) Venergy,Co,Ltd + West 6th Floor,M-8 Building Maqueling Zone, + Shenzhen High-Tech Park, Nanshan district, + shenzhen guangdong 518000 + CHINA + +00-1A-89 (hex) Nokia Danmark A/S +001A89 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1A-8A (hex) Samsung Electronics Co., Ltd. +001A8A (base 16) Samsung Electronics Co., Ltd. + #94-1, Imsoo-Dong + Gumi-City Gyeong-Buk 730-350 + KOREA, REPUBLIC OF + +00-1A-8B (hex) CHUNIL ELECTRIC IND., CO. +001A8B (base 16) CHUNIL ELECTRIC IND., CO. + 308,ByuckSan Digital Valley,132-7,Gamjeon-Dong,Sasang-Gu + Busan GyeongSangNamDo 617-800 + KOREA, REPUBLIC OF + +00-1A-8C (hex) Astaro AG +001A8C (base 16) Astaro AG + Amalienbadstr. 36 + Bau 33a + Karlsruhe BW 76227 + GERMANY + +00-1A-8D (hex) AVECS Bergen GmbH +001A8D (base 16) AVECS Bergen GmbH + Billrothstr. 11 a + Bergen auf Rügen M/V 18528 + GERMANY + +00-1A-8E (hex) 3Way Networks Ltd +001A8E (base 16) 3Way Networks Ltd + 7200 Cambridge Research Park + Waterbeach + Cambridge Cambridgeshire CB5 9TL + UNITED KINGDOM + +00-1A-8F (hex) Nortel +001A8F (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1A-90 (hex) Trópico Sistemas e Telecomunicações da Amazônia LTDA. +001A90 (base 16) Trópico Sistemas e Telecomunicações da Amazônia LTDA. + Rod. Campinas-Mogi-Mirim (SP 340) Km 118,5 + Polis de Tecnologia (CPqD)-Prédio 9A + Campinas São Paulo 13.086-902 + BRAZIL + +00-1A-91 (hex) FusionDynamic Ltd. +001A91 (base 16) FusionDynamic Ltd. + 1 B.S.R. towers, 4-th floor + 2 Ben Gurion street + Ramat Gan 52573 + ISRAEL + +00-1A-92 (hex) ASUSTek COMPUTER INC. +001A92 (base 16) ASUSTek COMPUTER INC. + 15,Li-Te Rd.,Peitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-1A-93 (hex) ERCO Leuchten GmbH +001A93 (base 16) ERCO Leuchten GmbH + Brockhauser Weg 80-82 + Lüdenscheid NRW D-58507 + GERMANY + +00-1A-94 (hex) Votronic GmbH +001A94 (base 16) Votronic GmbH + Saarbruecker Str. 8 + St. Ingbert Saarland 66386 + GERMANY + +00-1A-95 (hex) Hisense Mobile Communications Technoligy Co.,Ltd. +001A95 (base 16) Hisense Mobile Communications Technoligy Co.,Ltd. + 11,JiangXi Road, + QingDao ShanDong 266071 + CHINA + +00-1A-96 (hex) ECLER S.A. +001A96 (base 16) ECLER S.A. + Motors 166-168 + Barcelona 08038 + SPAIN + +00-1A-97 (hex) fitivision technology Inc. +001A97 (base 16) fitivision technology Inc. + 8F, No. 356, Sec. 1, Neihu Rd + Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1A-98 (hex) Asotel Communication Limited Taiwan Branch +001A98 (base 16) Asotel Communication Limited Taiwan Branch + 3G17, No5, Hsin Yi Road, Sec. 5 + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-1A-99 (hex) Smarty (HZ) Information Electronics Co., Ltd +001A99 (base 16) Smarty (HZ) Information Electronics Co., Ltd + Yonghua Industrial District,Huishen Road,Zhenlong Town + HuiZhou GuangDong 516227 + CHINA + +00-1A-9A (hex) Skyworth Digital technology(shenzhen)co.ltd. +001A9A (base 16) Skyworth Digital technology(shenzhen)co.ltd. + 13F,Block A,Skyworth Building,Gaoxin AVE.1.S, + Nanshan District, + ShenZhen GuangDong 518057 + CHINA + +00-1A-9B (hex) ADEC & Parter AG +001A9B (base 16) ADEC & Parter AG + Staldenbachstrasse 30 + Pfaeffikon ZH 8808 + SWITZERLAND + +00-1A-9C (hex) RightHand Technologies, Inc. +001A9C (base 16) RightHand Technologies, Inc. + 6545 N Olmsted Avenue + Chicago IL 60631-1414 + UNITED STATES + +00-1A-9D (hex) Skipper Wireless, Inc. +001A9D (base 16) Skipper Wireless, Inc. + Shinjuku-Sumitomo Bldg. 20F + 2-6-1 Nishi-Shinjuku + Shinjuku Tokyo 163-0220 + JAPAN + +00-1A-9E (hex) ICON Digital International Limited +001A9E (base 16) ICON Digital International Limited + Suite2209, 22/F., SkyLine Tower, + 39 Wang Kwong Road, Kowloon Bay + CHINA + +00-1A-9F (hex) A-Link Europe Ltd +001A9F (base 16) A-Link Europe Ltd + P.O.Box 3 + Espoo FI-02941 + FINLAND + +00-1A-A0 (hex) Dell Inc +001AA0 (base 16) Dell Inc + One Dell Way, MS RR5-45 + Round Rock Texas 78682 + UNITED STATES + +00-1A-A1 (hex) Cisco Systems +001AA1 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1A-A2 (hex) Cisco Systems +001AA2 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1A-A3 (hex) DELORME +001AA3 (base 16) DELORME + 2 DELORME DRIVE + YARMOUTH MAINE 04096 + UNITED STATES + +00-1A-A4 (hex) Future University-Hakodate +001AA4 (base 16) Future University-Hakodate + 116-2 Kamedanakano-cho + Hakodate Hokkaido 041-8655 + JAPAN + +00-1A-A5 (hex) BRN Phoenix +001AA5 (base 16) BRN Phoenix + 2500 Augustine Drive, Suite 200 + Santa Clara CA 95054 + UNITED STATES + +00-1A-A6 (hex) Telefunken Radio Communication Systems GmbH &CO.KG +001AA6 (base 16) Telefunken Radio Communication Systems GmbH &CO.KG + Eberhard-Finckh-Strasse 55 + Ulm Baden-Württemberg 89075 + GERMANY + +00-1A-A7 (hex) Torian Wireless +001AA7 (base 16) Torian Wireless + 204 Johnston Street + Collingwood Victoria 3066 + AUSTRALIA + +00-1A-A8 (hex) Mamiya Digital Imaging Co., Ltd. +001AA8 (base 16) Mamiya Digital Imaging Co., Ltd. + 2-14-22 Ueno + Taito-ku Tokyo 110-0005 + JAPAN + +00-1A-A9 (hex) FUJIAN STAR-NET COMMUNICATION CO.,LTD +001AA9 (base 16) FUJIAN STAR-NET COMMUNICATION CO.,LTD + 19-22# Building, Star-net Science Plaza, Juyuanzhou, + 618 Jinshan Road, + FUZHOU FUJIAN 350002 + CHINA + +00-1A-AA (hex) Analogic Corp. +001AAA (base 16) Analogic Corp. + 8 Centennial Drive + Peabody MA 01960 + UNITED STATES + +00-1A-AB (hex) eWings s.r.l. +001AAB (base 16) eWings s.r.l. + via S. Quasimodo 46 + Castel Maggiore Bologna 40013 + ITALY + +00-1A-AC (hex) Corelatus AB +001AAC (base 16) Corelatus AB + Tegnergatan 37 + Stockholm 11161 + SWEDEN + +00-1A-AD (hex) Motorola CHS +001AAD (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-1A-AE (hex) Savant Systems LLC +001AAE (base 16) Savant Systems LLC + 770A Main St + Osterville Massachusetts 02655 + UNITED STATES + +00-1A-AF (hex) BLUSENS TECHNOLOGY +001AAF (base 16) BLUSENS TECHNOLOGY + EDIFICIO CNL, + AV. FERNANDO CASAS NOVOA ,37,B-2º + SANTIAGO DE COMPOSTELA A CORUÑA 15707 + SPAIN + +00-1A-B0 (hex) Signal Networks Pvt. Ltd., +001AB0 (base 16) Signal Networks Pvt. Ltd., + No.12, Kalpataru Apartments, + Race Course Cross Road, Madhavnagar, + Bangalore Karnataka 560001 + INDIA + +00-1A-B1 (hex) Asia Pacific Satellite Industries Co., Ltd. +001AB1 (base 16) Asia Pacific Satellite Industries Co., Ltd. + 9th FL, IT Castle 2-Dong, #550-1, Gasan-Dong, GeumCheon-Gu, + Seoul 153-768 + KOREA, REPUBLIC OF + +00-1A-B2 (hex) Cyber Solutions Inc. +001AB2 (base 16) Cyber Solutions Inc. + 6-6-3, Minami Yoshinari + Aoba-ku + Sendai Miyagi-ken 989-3204 + JAPAN + +00-1A-B3 (hex) VISIONITE INC. +001AB3 (base 16) VISIONITE INC. + #707 Daeryung Technotown-2 569-21 + Gasan-Dong Geumcheon-Gu + Seoul 153-771 + KOREA, REPUBLIC OF + +00-1A-B4 (hex) FFEI Ltd. +001AB4 (base 16) FFEI Ltd. + Block 2, Eaton Court + Eaton Road + Hemel Hempstead Hertfordshire HP2 7DR + UNITED KINGDOM + +00-1A-B5 (hex) Home Network System +001AB5 (base 16) Home Network System + 107, Hyundai I-Vally + Sangdaewon 1(il)-dong, Jungwon-gu + Seongnam-si Gyeonggi-do 462-714 + KOREA, REPUBLIC OF + +00-1A-B6 (hex) Luminary Micro Inc +001AB6 (base 16) Luminary Micro Inc + 108 Wild Basin Ste 350 + Austin TX 78746 + UNITED STATES + +00-1A-B7 (hex) Ethos Networks LTD. +001AB7 (base 16) Ethos Networks LTD. + 2 Maskit St. + Building D, POBox 4090 + Herzlia 46766 + ISRAEL + +00-1A-B8 (hex) Anseri Corporation +001AB8 (base 16) Anseri Corporation + 35E Industrial Way + Suite 101 + Rochester NH 03867 + UNITED STATES + +00-1A-B9 (hex) PMC +001AB9 (base 16) PMC + 56, avenue Raspail + Saint Maur val de marne 94100 + FRANCE + +00-1A-BA (hex) Caton Overseas Limited +001ABA (base 16) Caton Overseas Limited + Room 102, No. 101, Lane 91 + E-Shan Road, Pudong District + Shanghai 200127 + CHINA + +00-1A-BB (hex) Fontal Technology Incorporation +001ABB (base 16) Fontal Technology Incorporation + Rm.522, Bldg. 52, 195, Sec. 4, ChungHsing Rd., Chutung + Hsinchu 310 + TAIWAN, REPUBLIC OF CHINA + +00-1A-BC (hex) U4EA Technologies Ltd +001ABC (base 16) U4EA Technologies Ltd + City Point + Temple Gate + Bristol BS1 6PL + UNITED KINGDOM + +00-1A-BD (hex) Impatica Inc. +001ABD (base 16) Impatica Inc. + 205-1725 St. Laurent Blvd. + Ottawa ON K1G 3V4 + CANADA + +00-1A-BE (hex) COMPUTER HI-TECH INC. +001ABE (base 16) COMPUTER HI-TECH INC. + HigashiUeno3-18-7 + Taitoku Tokyo 110-0015 + JAPAN + +00-1A-BF (hex) TRUMPF Laser Marking Systems AG +001ABF (base 16) TRUMPF Laser Marking Systems AG + Ausserfeld + Gruesch GR 7214 + SWITZERLAND + +00-1A-C0 (hex) JOYBIEN TECHNOLOGIES CO., LTD. +001AC0 (base 16) JOYBIEN TECHNOLOGIES CO., LTD. + 18F-1, NO.700, ZHONGZHENG RD., + ZHONGHE CITY 235 + TAIWAN, REPUBLIC OF CHINA + +00-1A-C1 (hex) 3Com Ltd +001AC1 (base 16) 3Com Ltd + Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts HP2 4NW + UNITED KINGDOM + +00-1A-C2 (hex) YEC Co.,Ltd. +001AC2 (base 16) YEC Co.,Ltd. + 543-9 Tsuruma + Machida Tokyo 194-0004 + JAPAN + +00-1A-C3 (hex) Scientific-Atlanta, Inc +001AC3 (base 16) Scientific-Atlanta, Inc + 5030 Sugarloaf Pkwy + ATL 1.3.473 + Lawrenceville GA 30044 + UNITED STATES + +00-1A-C4 (hex) 2Wire, Inc +001AC4 (base 16) 2Wire, Inc + 1704 Automation Parkway + San Jose CA 95131 + UNITED STATES + +00-1A-C5 (hex) BreakingPoint Systems, Inc. +001AC5 (base 16) BreakingPoint Systems, Inc. + 10535 Boyer Blvd. + Suite 300 + Austin TX 78758 + UNITED STATES + +00-1A-C6 (hex) Micro Control Designs +001AC6 (base 16) Micro Control Designs + 17490 Caribou Dr + Monument Co. 80132 + UNITED STATES + +00-1A-C7 (hex) UNIPOINT +001AC7 (base 16) UNIPOINT + 7F Gwangsung Bld 831-47 YeokSam-Dong + Kangnam-Gu Seoul 135-936 + KOREA, REPUBLIC OF + +00-1A-C8 (hex) ISL (Instrumentation Scientifique de Laboratoire) +001AC8 (base 16) ISL (Instrumentation Scientifique de Laboratoire) + Impasse des 4 vents + Parc d'Activité de la Mesnilliére + VERSON CALVADOS 14790 + FRANCE + +00-1A-C9 (hex) SUZUKEN CO.,LTD +001AC9 (base 16) SUZUKEN CO.,LTD + SUZUKEN TOMEI BLDG. + 26 HIMEWAKA-CHO MEITO-KU + NAGOYA-SI AICHI-KEN 465-0045 + JAPAN + +00-1A-CA (hex) Tilera Corporation +001ACA (base 16) Tilera Corporation + 1900 West Park Drive + Suite 290 + Westborough MA 01581 + UNITED STATES + +00-1A-CB (hex) Autocom Products Ltd +001ACB (base 16) Autocom Products Ltd + Unit 4 Tachbrook Link, Tachbrook Park Drive + Warwick Warwickshire CV34 6RH + UNITED KINGDOM + +00-1A-CC (hex) Celestial Semiconductor, Ltd +001ACC (base 16) Celestial Semiconductor, Ltd + Ugland House, South Church Street, + Cayman Islands + George Town, Cayman Islands 00000 + CAYMAN ISLANDS + +00-1A-CD (hex) Tidel Engineering LP +001ACD (base 16) Tidel Engineering LP + 2025 W Belt Line Road Suite 114 + Carrollton TX 75019 + UNITED STATES + +00-1A-CE (hex) YUPITERU CORPORATION +001ACE (base 16) YUPITERU CORPORATION + 3, Dannoue, Iwazu-cho, Okazaki-city, Aichi + Okazaki Aichi 444-2144 + JAPAN + +00-1A-CF (hex) C.T. ELETTRONICA +001ACF (base 16) C.T. ELETTRONICA + Via Caduti di Nassiriya 5 B + Barberino Val D'Elsa (FI) 50021 + ITALY + +00-1A-D0 (hex) Siemens Schweiz AG +001AD0 (base 16) Siemens Schweiz AG + Albisriederstrasse 245 + Zuerich CH 8047 + SWITZERLAND + +00-1A-D1 (hex) FARGO CO., LTD. +001AD1 (base 16) FARGO CO., LTD. + 4F. KYEMYUNG B/D + 165-4 SAMSUNG-DONG, KANGNAM-KU + SEOUL 135 885 + UNITED STATES + +00-1A-D2 (hex) Eletronica Nitron Ltda +001AD2 (base 16) Eletronica Nitron Ltda + Rua Dr. Ulisses Escobar 415 + Jardim Vista Alegre + Camanducaia Minas Gerais 37650-000 + BRAZIL + +00-1A-D3 (hex) Vamp Ltd. +001AD3 (base 16) Vamp Ltd. + PO Box 810 + Vaasa 65101 + FINLAND + +00-1A-D4 (hex) iPOX Technology Co., Ltd. +001AD4 (base 16) iPOX Technology Co., Ltd. + 15F-1, No.186, Jian-Yi Rd., Chung-Ho City, + Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-1A-D5 (hex) KMC CHAIN INDUSTRIAL CO., LTD. +001AD5 (base 16) KMC CHAIN INDUSTRIAL CO., LTD. + 7F-8, No. 81, Sui-Lih Rd., Hsinchu + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1A-D6 (hex) JIAGNSU AETNA ELECTRIC CO.,LTD +001AD6 (base 16) JIAGNSU AETNA ELECTRIC CO.,LTD + NO.571 QIANHU ROAD,QIANQIAO INDUSTRY PARK,WUXI,JIANGSU,CHINA + WUXI JIANGSU 214151 + CHINA + +00-1A-D7 (hex) Christie Digital Systems, Inc. +001AD7 (base 16) Christie Digital Systems, Inc. + 809 Wellington Street North + Kitchener Ontario N2G 4Y7 + CANADA + +00-1A-D8 (hex) AlsterAero GmbH +001AD8 (base 16) AlsterAero GmbH + Lübecker Straße 1 + Hamburg 22087 + GERMANY + +00-1A-D9 (hex) International Broadband Electric Communications, Inc. +001AD9 (base 16) International Broadband Electric Communications, Inc. + 285 Dunlop Blvd. SW + Suite K + Huntsville AL 35824 + UNITED STATES + +00-1A-DA (hex) Biz-2-Me Inc. +001ADA (base 16) Biz-2-Me Inc. + 1301 West Eau Gallie Blvd + Suite 106 + Melbourne FL 32935 + UNITED STATES + +00-1A-DB (hex) Motorola Mobile Devices +001ADB (base 16) Motorola Mobile Devices + 600 N. Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-1A-DC (hex) Nokia Danmark A/S +001ADC (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1A-DD (hex) PePWave Ltd +001ADD (base 16) PePWave Ltd + 17/F., Park Building, + 476 Castle Peak Road + Cheung Sha Wan Kowloon + HONG KONG + +00-1A-DE (hex) Motorola CHS +001ADE (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-1A-DF (hex) Interactivetv Pty Limited +001ADF (base 16) Interactivetv Pty Limited + Suite 10 Level 3 + 56 Bowman Street + Pyrmont, Sydney NSW 2009 + AUSTRALIA + +00-1A-E0 (hex) Mythology Tech Express Inc. +001AE0 (base 16) Mythology Tech Express Inc. + 2F, No.10, Lane 235, Bao Chiao road, + Hsin-Tien. + Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-1A-E1 (hex) EDGE ACCESS INC +001AE1 (base 16) EDGE ACCESS INC + 5440 BEAUMONT CENTER BLVD + SUITE 490 + TAMPA FL 33634 + UNITED STATES + +00-1A-E2 (hex) Cisco Systems +001AE2 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1A-E3 (hex) Cisco Systems +001AE3 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1A-E4 (hex) Liposonix Inc, +001AE4 (base 16) Liposonix Inc, + 11818 North Creek Parkway N. + Bothell WA 98011 + UNITED STATES + +00-1A-E5 (hex) Mvox Technologies Inc. +001AE5 (base 16) Mvox Technologies Inc. + 19050 Pruneridge Ave + Ste. 128 + Cupertino CA 95014 + UNITED STATES + +00-1A-E6 (hex) Atlanta Advanced Communications Holdings Limited +001AE6 (base 16) Atlanta Advanced Communications Holdings Limited + 1900 West Oak Circle, Marietta + Atlanta Georgia 30062 + UNITED STATES + +00-1A-E7 (hex) Aztek Networks, Inc. +001AE7 (base 16) Aztek Networks, Inc. + 2477 55th St. #202 + Boulder CO 80301 + UNITED STATES + +00-1A-E8 (hex) Siemens Enterprise Communications GmbH & Co. KG +001AE8 (base 16) Siemens Enterprise Communications GmbH & Co. KG + SEN ESY SCM 53 + Brauckstrasse 14 + Witten NRW 58454 + GERMANY + +00-1A-E9 (hex) Nintendo Co., Ltd. +001AE9 (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO 601-8501 + JAPAN + +00-1A-EA (hex) Radio Terminal Systems Pty Ltd +001AEA (base 16) Radio Terminal Systems Pty Ltd + 1st Floor + 108 Dohertys Road + Laverton North Victoria 3026 + AUSTRALIA + +00-1A-EB (hex) Allied Telesis K.K. +001AEB (base 16) Allied Telesis K.K. + No.2 TOC Bldg. + 7-21-11 Nishi-Gotanda + Shinagawa-ku Tokyo 141-0031 + JAPAN + +00-1A-EC (hex) Keumbee Electronics Co.,Ltd. +001AEC (base 16) Keumbee Electronics Co.,Ltd. + 3-26, Jangsang-dong, Sangrok-gu + Ansan-si Kyungki-do 426-410 + KOREA, REPUBLIC OF + +00-1A-ED (hex) INCOTEC GmbH +001AED (base 16) INCOTEC GmbH + Blomestrasse 25 - 27 + Bielefeld NRW 33609 + GERMANY + +00-1A-EE (hex) Shenztech Ltd +001AEE (base 16) Shenztech Ltd + 813, 8F, HOLLYWOOD PLAZA, 610 NATHAN ROAD, + KOWLOON 852 + HONG KONG + +00-1A-EF (hex) Loopcomm Technology, Inc. +001AEF (base 16) Loopcomm Technology, Inc. + 18F-1, No. 150, Jian Yi Rd., + Chung-Ho City Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-1A-F0 (hex) Alcatel - IPD +001AF0 (base 16) Alcatel - IPD + 701 E. Middlefield Rd. + Mountain View CA 94043 + UNITED STATES + +00-1A-F1 (hex) Embedded Artists AB +001AF1 (base 16) Embedded Artists AB + Friisgatan 33, 4v + Malmoe 21421 + SWEDEN + +00-1A-F2 (hex) Dynavisions Schweiz AG +001AF2 (base 16) Dynavisions Schweiz AG + Freisinger Landstrasse 21 + D-80939 Muenchen + GERMANY + +00-1A-F3 (hex) Samyoung Electronics +001AF3 (base 16) Samyoung Electronics + 146-1, sangdaewon-dong, joongwon-gu + sungnam-shi Gyunggi-do 462-807 + KOREA, REPUBLIC OF + +00-1A-F4 (hex) Handreamnet +001AF4 (base 16) Handreamnet + #1209 MarioTower, 222-12 + Guro-Dong, Guro-Gu + Seoul 152-848 + KOREA, REPUBLIC OF + +00-1A-F5 (hex) PENTAONE. CO., LTD. +001AF5 (base 16) PENTAONE. CO., LTD. + Hyo Chang Bldg, 3F, 1013-6, Inkye-dong Paldal-Gu, + Suwon City Gyunggi-Do 422-833 + KOREA, REPUBLIC OF + +00-1A-F6 (hex) Woven Systems, Inc. +001AF6 (base 16) Woven Systems, Inc. + 2455 Augustine Drive + Suite 211 + Santa Clara CA 95054 + UNITED STATES + +00-1A-F7 (hex) dataschalt e+a GmbH +001AF7 (base 16) dataschalt e+a GmbH + An der Hülshorst 7-9 + Lübeck 23568 + GERMANY + +00-1A-F8 (hex) Copley Controls Corporation +001AF8 (base 16) Copley Controls Corporation + 20 Dan Road + Canton MA 02021 + UNITED STATES + +00-1A-F9 (hex) AeroVIronment (AV Inc) +001AF9 (base 16) AeroVIronment (AV Inc) + 4685 Industrial St + PO A18271 + Simi Valley CA 93063 + UNITED STATES + +00-1A-FA (hex) Welch Allyn, Inc. +001AFA (base 16) Welch Allyn, Inc. + 4619 Jordan Road + PO Box 187 + Skaneateles Falls NY 13153-0187 + UNITED STATES + +00-1A-FB (hex) Joby Inc. +001AFB (base 16) Joby Inc. + 1535 Mission St. + Floor 2 + San Francisco CA 94103 + UNITED STATES + +00-1A-FC (hex) ModusLink Corporation +001AFC (base 16) ModusLink Corporation + 2905 Prestonwood Drive + Plano Texas 75093 + UNITED STATES + +00-1A-FD (hex) EVOLIS +001AFD (base 16) EVOLIS + 29 avenue de la fontaine + ZI Angers beaucouze + Beaucouze 49070 + FRANCE + +00-1A-FE (hex) SOFACREAL +001AFE (base 16) SOFACREAL + 149 avenue du MAINE + PARIS Region Parisienne 75014 + FRANCE + +00-1A-FF (hex) Wizyoung Tech. +001AFF (base 16) Wizyoung Tech. + 9F, No. 25, Sec. 1, Nanjing E. Rd. + Taipei 104 + TAIWAN, REPUBLIC OF CHINA + +00-1B-00 (hex) Neopost Technologies +001B00 (base 16) Neopost Technologies + 113 rue Jean-Marin Naudin + Bagneux 92220 + FRANCE + +00-1B-01 (hex) Applied Radio Technologies +001B01 (base 16) Applied Radio Technologies + 1124 South Service Road West + Oakville Ontario L6L 5T7 + CANADA + +00-1B-02 (hex) ED Co.Ltd +001B02 (base 16) ED Co.Ltd + 517-15 SangDaeWon-Dong + SeongNam-City GyeongGi-Do 462-806 + KOREA, REPUBLIC OF + +00-1B-03 (hex) Action Technology (SZ) Co., Ltd +001B03 (base 16) Action Technology (SZ) Co., Ltd + Action Technology Building Baoyuan Road, Xixiang, Bao'an District + Shenzhen Guangdong 518102 + CHINA + +00-1B-04 (hex) Affinity International S.p.a +001B04 (base 16) Affinity International S.p.a + C.so Savona 51 + Villastellone Torino I10029 + ITALY + +00-1B-05 (hex) Young Media Concepts GmbH +001B05 (base 16) Young Media Concepts GmbH + Sonnenstrasse 4 + Kreuzlingen Thurgau 8280 + SWITZERLAND + +00-1B-06 (hex) Ateliers R. LAUMONIER +001B06 (base 16) Ateliers R. LAUMONIER + 11, rue du Chenival + BP 1 + Nesles la Vallée Val d'Oise 95690 + FRANCE + +00-1B-07 (hex) Mendocino Software +001B07 (base 16) Mendocino Software + 47001 Benecia St. + Fremont CA 94538 + UNITED STATES + +00-1B-08 (hex) Danfoss Drives A/S +001B08 (base 16) Danfoss Drives A/S + Ulsnaes 1 + Graasten 6300 + DENMARK + +00-1B-09 (hex) Matrix Telecom Pvt. Ltd. +001B09 (base 16) Matrix Telecom Pvt. Ltd. + 394, GIDC, Makarpura, + Vadodara Gujarat 390010 + INDIA + +00-1B-0A (hex) Intelligent Distributed Controls Ltd +001B0A (base 16) Intelligent Distributed Controls Ltd + Keynes House, Chester Park + Alfreton Road + Derby Derbyshire DE21 4AS + UNITED KINGDOM + +00-1B-0B (hex) Phidgets Inc. +001B0B (base 16) Phidgets Inc. + 2715A 16A Street N.W. + Calgary Alberta T2M 3R7 + CANADA + +00-1B-0C (hex) Cisco Systems +001B0C (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-0D (hex) Cisco Systems +001B0D (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-0E (hex) InoTec GmbH Organisationssysteme +001B0E (base 16) InoTec GmbH Organisationssysteme + Biedrichstrasse 11 + Woelfersheim Hessen D-61200 + GERMANY + +00-1B-0F (hex) Petratec +001B0F (base 16) Petratec + Derech Ha-Sharon 12 + Kfar Saba Sharon 44271 + ISRAEL + +00-1B-10 (hex) ShenZhen Kang Hui Technology Co.,ltd +001B10 (base 16) ShenZhen Kang Hui Technology Co.,ltd + China GuangDong + Two s,floor BaoAn District LongHua + ShenZhen GuangDong 518109 + CHINA + +00-1B-11 (hex) D-Link Corporation +001B11 (base 16) D-Link Corporation + NO.289, Sinhu 3rd Rd., + Neihu District, Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1B-12 (hex) Apprion +001B12 (base 16) Apprion + Nasa Ames Rerearch Center + P.O. Box 95 Building 19 Suite 1000 + Moffett Field California 94035 + UNITED STATES + +00-1B-13 (hex) Icron Technologies Corporation +001B13 (base 16) Icron Technologies Corporation + 221 - 4664 Lougheed Highway + Burnaby BC V5C 5T5 + CANADA + +00-1B-14 (hex) Carex Lighting Equipment Factory +001B14 (base 16) Carex Lighting Equipment Factory + 50 Chang Tang Rd., Yan Tian District, + Fungkong, DongGuan + Guangdong province + CHINA + +00-1B-15 (hex) Voxtel, Inc. +001B15 (base 16) Voxtel, Inc. + 12725 SW Millikan Way + Suite 230 + Beaverton OR 97005 + UNITED STATES + +00-1B-16 (hex) Celtro Ltd. +001B16 (base 16) Celtro Ltd. + Azorim Business Park + 94 Em Hmoshavot Road. + Petach Tikva 49527 + ISRAEL + +00-1B-17 (hex) Palo Alto Networks +001B17 (base 16) Palo Alto Networks + 2130 Gold Street Suite 200 + Alviso CA 95022 + UNITED STATES + +00-1B-18 (hex) Tsuken Electric Ind. Co.,Ltd +001B18 (base 16) Tsuken Electric Ind. Co.,Ltd + 3-9 Akedouri Izumi-ku + Sendai City Miyagi 981-3206 + JAPAN + +00-1B-19 (hex) IEEE 1588 Standard +001B19 (base 16) IEEE 1588 Standard + 5301 Stevens Creek Boulevard, MS: 54U-SM + Santa Clara CA 95051-7201 + UNITED STATES + +00-1B-1A (hex) e-trees Japan, Inc. +001B1A (base 16) e-trees Japan, Inc. + Toranomon 4-1-21 + Fukide Bldg. No.2 501 + Minato-ku Tokyo 150-0001 + JAPAN + +00-1B-1B (hex) Siemens AG, A&D AS EWK PU1 +001B1B (base 16) Siemens AG, A&D AS EWK PU1 + Oestliche Rheinbrueckenstr. 50 + Karlsruhe Baden Wuerttemberg 76181 + GERMANY + +00-1B-1C (hex) Coherent +001B1C (base 16) Coherent + 1280 Blues Hills Ave. + Bloomfield CT 06002 + UNITED STATES + +00-1B-1D (hex) Phoenix International Co., Ltd +001B1D (base 16) Phoenix International Co., Ltd + 11F. No.42-1, Sec.1, Zhongyang N. Rd. Beitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-1B-1E (hex) HART Communication Foundation +001B1E (base 16) HART Communication Foundation + STE 1-350 + 9390 Research Blvd + Austin TX 78759 + UNITED STATES + +00-1B-1F (hex) DELTA - Danish Electronics, Light & Acoustics +001B1F (base 16) DELTA - Danish Electronics, Light & Acoustics + Venlighedsvej 4 + Hørsholm DK-2970 + DENMARK + +00-1B-20 (hex) TPine Technology +001B20 (base 16) TPine Technology + 3F, No.1, AN-I Rd, + Keelung 111 + TAIWAN, REPUBLIC OF CHINA + +00-1B-21 (hex) Intel Corporate +001B21 (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1B-22 (hex) Palit Microsystems ( H.K.) Ltd. +001B22 (base 16) Palit Microsystems ( H.K.) Ltd. + Room 4-6,11F,Nan Fung Commercial Center + 19 Lam Lok Road,Kowloon Bay + Kowloon 111 + HONG KONG + +00-1B-23 (hex) SimpleComTools +001B23 (base 16) SimpleComTools + 598 Indian Trail Rd S. + Suite #102 + Indian Trail NC 28079 + UNITED STATES + +00-1B-24 (hex) Quanta Computer Inc. +001B24 (base 16) Quanta Computer Inc. + No. 211, Wen Hwa 2nd Rd., + Kuei Shan Hsiang Tao Yuan Shien 333 + TAIWAN, REPUBLIC OF CHINA + +00-1B-25 (hex) Nortel +001B25 (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1B-26 (hex) RON-Telecom ZAO +001B26 (base 16) RON-Telecom ZAO + 15 A, Zarechnaya st. + Trehgorny Chelyabinsk region 456080 + RUSSIAN FEDERATION + +00-1B-27 (hex) Merlin CSI +001B27 (base 16) Merlin CSI + 12625 Danielson Court + Suite 109 + Poway CA 92064 + UNITED STATES + +00-1B-28 (hex) POLYGON, JSC +001B28 (base 16) POLYGON, JSC + 37/1, Karl Marx str., floor 5 + Ufa Bashkortostan 450077 + RUSSIAN FEDERATION + +00-1B-29 (hex) Avantis.Co.,Ltd +001B29 (base 16) Avantis.Co.,Ltd + 502 SEOIL BLDG. + 1543-8 SEOCHO-DONG, SEOCHO-GU + SEOUL 132-872 + KOREA, REPUBLIC OF + +00-1B-2A (hex) Cisco Systems +001B2A (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-2B (hex) Cisco Systems +001B2B (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-2C (hex) ATRON electronic GmbH +001B2C (base 16) ATRON electronic GmbH + Am Ziegelstadel 12 + 14 + Markt Schwaben 85570 + GERMANY + +00-1B-2D (hex) PRIVATE +001B2D (base 16) + +00-1B-2E (hex) Sinkyo Electron Inc +001B2E (base 16) Sinkyo Electron Inc + 3-3-21 asahigaoka + hino-city Tokyo 191-0065 + JAPAN + +00-1B-2F (hex) NETGEAR Inc. +001B2F (base 16) NETGEAR Inc. + 4500 Great America Parkway + Santa Clara CA 95054 + UNITED STATES + +00-1B-30 (hex) Solitech Inc. +001B30 (base 16) Solitech Inc. + 1838 Main Street + Stevensville MD 21666 + UNITED STATES + +00-1B-31 (hex) Neural Image. Co. Ltd. +001B31 (base 16) Neural Image. Co. Ltd. + A307, CASI, Osaka Univ. + 2-1, Yamada-oka + Suita city Osaka 565-0871 + JAPAN + +00-1B-32 (hex) QLogic Corporation +001B32 (base 16) QLogic Corporation + 26650 Aliso Viejo Parkway + Aliso Viejo California 92656 + UNITED STATES + +00-1B-33 (hex) Nokia Danmark A/S +001B33 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1B-34 (hex) Focus System Inc. +001B34 (base 16) Focus System Inc. + 19F-1, No. 266 Wen Hwa 2nd Rd., Sec. 1 + Linkou Taipei County + TAIWAN, REPUBLIC OF CHINA + +00-1B-35 (hex) ChongQing JINOU Science & Technology Development CO.,Ltd +001B35 (base 16) ChongQing JINOU Science & Technology Development CO.,Ltd + Chuangyeyuan 208# Keyuan 3rd Road 106# + Hi-Tech Development Zone + Chongqing 400030 + CHINA + +00-1B-36 (hex) Tsubata Engineering Co.,Ltd. (Head Office) +001B36 (base 16) Tsubata Engineering Co.,Ltd. (Head Office) + Koyanagi 1-2 + Senju bld. + Ibaraki Osaka 567-0852 + JAPAN + +00-1B-37 (hex) Computec Oy +001B37 (base 16) Computec Oy + Juholankatu 8 + PL 66 + Kouvola Kymi 45200 + FINLAND + +00-1B-38 (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD. +001B38 (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD. + NO. 25, THE 3RD AVENUE + KUNSHAN EXPORT PROCESSING ZONE + KUNSHAN CITY SUZHOU PROVINCE 215300 + CHINA + +00-1B-39 (hex) Proxicast +001B39 (base 16) Proxicast + 312 Sunnyfield Drive + Suite 200 + Glenshaw PA 15116 + UNITED STATES + +00-1B-3A (hex) SIMS Corp. +001B3A (base 16) SIMS Corp. + RAON Bldg, 9F, 92-8, Wonhyoro-2ga, Yongsan-gu + Seoul 140-847 + KOREA, REPUBLIC OF + +00-1B-3B (hex) Yi-Qing CO., LTD +001B3B (base 16) Yi-Qing CO., LTD + 310 ROOM,12F + NO.5-1 HENG YANG RD. + TAIPEI 100 + TAIWAN, REPUBLIC OF CHINA + +00-1B-3C (hex) Software Technologies Group,Inc. +001B3C (base 16) Software Technologies Group,Inc. + 10330 W. Roosevelt Road + Suite 310 + Weschester IL 60154 + UNITED STATES + +00-1B-3D (hex) EuroTel Spa +001B3D (base 16) EuroTel Spa + viale Martiri della Liberta,4 + Lissone Milan 20035 + ITALY + +00-1B-3E (hex) Curtis, Inc. +001B3E (base 16) Curtis, Inc. + 2405 Annapolis Lane + Suite 220 + Minneapolis MN 55441 + UNITED STATES + +00-1B-3F (hex) ProCurve Networking by HP +001B3F (base 16) ProCurve Networking by HP + 8000 Foothills Blvd. + Roseville California 95747 + UNITED STATES + +00-1B-40 (hex) Network Automation mxc AB +001B40 (base 16) Network Automation mxc AB + Box 7294 + Stockholm 10390 + SWEDEN + +00-1B-41 (hex) General Infinity Co.,Ltd. +001B41 (base 16) General Infinity Co.,Ltd. + 4F-4,No.28, 78 Lane, Xin-Ai Rd + Neihu District + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1B-42 (hex) Wise & Blue +001B42 (base 16) Wise & Blue + #715-3 Anyang Megavalley + 799 Gwanyang-Dong, Dongan-Gu + Anyang-Si Gyunggi-Do 431-767 + KOREA, REPUBLIC OF + +00-1B-43 (hex) Beijing DG Telecommunications equipment Co.,Ltd +001B43 (base 16) Beijing DG Telecommunications equipment Co.,Ltd + No.5 Jiangtai Road, Chaoyang District + Beijing 100016 + CHINA + +00-1B-44 (hex) SanDisk Corporation +001B44 (base 16) SanDisk Corporation + 601 McCarthy Boulevard + Milpitas CA 95035 + UNITED STATES + +00-1B-45 (hex) ABB AS, Division Automation Products +001B45 (base 16) ABB AS, Division Automation Products + Bergerveien 12 + POB 90 + Billingstad NO-1375 + NORWAY + +00-1B-46 (hex) Blueone Technology Co.,Ltd +001B46 (base 16) Blueone Technology Co.,Ltd + Room 309,3 Floor, 404 Building, ShangBu industrial + Shenzhen Guangdong 518028 + CHINA + +00-1B-47 (hex) Futarque A/S +001B47 (base 16) Futarque A/S + Aagade 15B + Aalborg 9000 + DENMARK + +00-1B-48 (hex) Shenzhen Lantech Electronics Co., Ltd. +001B48 (base 16) Shenzhen Lantech Electronics Co., Ltd. + 306 Room, Nanshan Water Building, + Nanhai Road, Nanshan + Shenzhen Guangdong 518052 + CHINA + +00-1B-49 (hex) Roberts Radio limited +001B49 (base 16) Roberts Radio limited + Swinton Works + Talbot Road + Mexborough South Yorkshire S64 8AJ + UNITED KINGDOM + +00-1B-4A (hex) W&W Communications, Inc. +001B4A (base 16) W&W Communications, Inc. + 2903 Bunker Hill Lane + Suite 107 + Santa Clara CA 95054 + UNITED STATES + +00-1B-4B (hex) SANION Co., Ltd. +001B4B (base 16) SANION Co., Ltd. + #208 ACETECHNO TOWER, 55-7, MULLAE-DONG 3GA, + YEONGDEUNGPO-GU SEOUL 150-992 + KOREA, REPUBLIC OF + +00-1B-4C (hex) Signtech +001B4C (base 16) Signtech + 609 Seonil Technopia 609 + Sangdaewon 1Dong Jungwon gu + Sungnamsi Kyunggido 462-120 + KOREA, REPUBLIC OF + +00-1B-4D (hex) Areca Technology Corporation +001B4D (base 16) Areca Technology Corporation + 8F., No. 22, Lane 35, Ji-Hu Rd. + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1B-4E (hex) Navman New Zealand +001B4E (base 16) Navman New Zealand + 7-21 Kawana Street + Northcote + Auckland 0627 + NEW ZEALAND + +00-1B-4F (hex) Avaya Inc. +001B4F (base 16) Avaya Inc. + Room 1A 309 + 307 Middletown Lincroft Rd + Lincroft NJ 07738 + UNITED STATES + +00-1B-50 (hex) Nizhny Novgorod Factory named after M.Frunze, FSUE (NZiF) +001B50 (base 16) Nizhny Novgorod Factory named after M.Frunze, FSUE (NZiF) + 174, Gagarina Avenue + Nizhny Novgorod 603950 + RUSSIAN FEDERATION + +00-1B-51 (hex) Vector Technology Corp. +001B51 (base 16) Vector Technology Corp. + No.7, Lane12, Yajou Road. + Tucheng Taipei 236 + TAIWAN, REPUBLIC OF CHINA + +00-1B-52 (hex) Motorola Mobile Devices +001B52 (base 16) Motorola Mobile Devices + 600 N. Hwy 45 + Libertyville IL 60048 + UNITED STATES + +00-1B-53 (hex) Cisco Systems +001B53 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-54 (hex) Cisco Systems +001B54 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-55 (hex) Hurco Automation Ltd. +001B55 (base 16) Hurco Automation Ltd. + 6F, No. 31, Shintai Rd. + Jubei City, Hsinchu Hsien 30244 + TAIWAN, REPUBLIC OF CHINA + +00-1B-56 (hex) Tehuti Networks Ltd. +001B56 (base 16) Tehuti Networks Ltd. + 1, Shenkar St. + Hertzliya 46105 + ISRAEL + +00-1B-57 (hex) SEMINDIA SYSTEMS PRIVATE LIMITED +001B57 (base 16) SEMINDIA SYSTEMS PRIVATE LIMITED + #1106/9,A.M.Industrial Estate,Garvebhai palya, + 7th Mile, Hosur Road, + BANGALORE KARNATAKA 560068 + INDIA + +00-1B-58 (hex) ACE CAD Enterprise Co., Ltd. +001B58 (base 16) ACE CAD Enterprise Co., Ltd. + 2F, No. 94, Bao Chung Road, + Hsin Tien City, Taipei Hsien 23144 + TAIWAN, REPUBLIC OF CHINA + +00-1B-59 (hex) Sony Ericsson Mobile Communications AB +001B59 (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund SE 221 88 + SWEDEN + +00-1B-5A (hex) Apollo Imaging Technologies, Inc. +001B5A (base 16) Apollo Imaging Technologies, Inc. + 18545 Rangeland Rd + Ramona CA 92065 + UNITED STATES + +00-1B-5B (hex) 2Wire, Inc. +001B5B (base 16) 2Wire, Inc. + 1704 Automation Parkway + San Jose CA 95131 + UNITED STATES + +00-1B-5C (hex) Azuretec Co., Ltd. +001B5C (base 16) Azuretec Co., Ltd. + 3F, No.8, Alley 8, Lane 45, Baoxing Rd., + Xindian City Taipei County 231 + TAIWAN, REPUBLIC OF CHINA + +00-1B-5D (hex) Vololink Pty Ltd +001B5D (base 16) Vololink Pty Ltd + Level 2, 541 Blackburn Road + Mount Waverley Victoria 3149 + AUSTRALIA + +00-1B-5E (hex) BPL Limited +001B5E (base 16) BPL Limited + BPL Towers + 13, Kasturba Road + Bangalore Karnataka 560001 + INDIA + +00-1B-5F (hex) Alien Technology +001B5F (base 16) Alien Technology + 18220 Butterfield Blvd. + Morgan Hill CA 95037 + UNITED STATES + +00-1B-60 (hex) NAVIGON AG +001B60 (base 16) NAVIGON AG + Berliner Platz 11 + Wuerzburg Bavaria 97080 + GERMANY + +00-1B-61 (hex) Digital Acoustics, LLC +001B61 (base 16) Digital Acoustics, LLC + 263 Market Square + Lake Forest IL 60045 + UNITED STATES + +00-1B-62 (hex) JHT Optoelectronics Co.,Ltd. +001B62 (base 16) JHT Optoelectronics Co.,Ltd. + Hetian Industrial Park 2rd,Houjie Town, Donguan, + Dongguan Guangdong 523945 + CHINA + +00-1B-63 (hex) Apple Inc. +001B63 (base 16) Apple Inc. + 1 Infinite Loop + Cupertino California 95014 + UNITED STATES + +00-1B-64 (hex) IsaacLandKorea Co., Ltd, +001B64 (base 16) IsaacLandKorea Co., Ltd, + Rm 608, Hangang-Hyundai-Hyel Bldg. 2-36, + Hangangno 2-ga, Yongsan-gu, + Seoul 140-871 + KOREA, REPUBLIC OF + +00-1B-65 (hex) China Gridcom Co., Ltd +001B65 (base 16) China Gridcom Co., Ltd + 21/F, Huaneng Building, No. 2068 Shennan Main Road + Shenzhen Guangdong 0086 + CHINA + +00-1B-66 (hex) Sennheiser electronic GmbH & Co. KG +001B66 (base 16) Sennheiser electronic GmbH & Co. KG + Am Labor 1 + Wedemark Niedersachsen 30900 + GERMANY + +00-1B-67 (hex) Ubiquisys Ltd +001B67 (base 16) Ubiquisys Ltd + The Stella Building + Windmill Hill Business Park + Swindon Wiltshire SN5 6NX + UNITED KINGDOM + +00-1B-68 (hex) Modnnet Co., Ltd +001B68 (base 16) Modnnet Co., Ltd + 2139 Daemyung-Dong DIP main B/D Room#505, Namgu + Daegu Kyungsang Bookdo 705-701 + KOREA, REPUBLIC OF + +00-1B-69 (hex) Equaline Corporation +001B69 (base 16) Equaline Corporation + 16F, No. 295, Tz-Chrong Road + Tamshui Taipei Hsien 25162 + TAIWAN, REPUBLIC OF CHINA + +00-1B-6A (hex) Powerwave UK Ltd +001B6A (base 16) Powerwave UK Ltd + The Waterfront + Salts Mill Road + Saltaire West Yorkshire BD18 3TT + UNITED KINGDOM + +00-1B-6B (hex) Swyx Solutions AG +001B6B (base 16) Swyx Solutions AG + Joseph-von-Fraunhofer-str.13a + Dortmund NRW 44227 + GERMANY + +00-1B-6C (hex) LookX Digital Media BV +001B6C (base 16) LookX Digital Media BV + Roekenveldweg 1 + Brunssum Limburg 6446DK + NETHERLANDS + +00-1B-6D (hex) Midtronics, Inc. +001B6D (base 16) Midtronics, Inc. + 7000 Monroe St. + Willowbrook IL 60527 + UNITED STATES + +00-1B-6E (hex) Anue Systems, Inc. +001B6E (base 16) Anue Systems, Inc. + 9111 Jollyville Road + Suite 100 + Austin TX 78759 + UNITED STATES + +00-1B-6F (hex) Teletrak Ltd +001B6F (base 16) Teletrak Ltd + 214 Kepa Road + Mission Bay + Auckland 1071 + NEW ZEALAND + +00-1B-70 (hex) IRI Ubiteq, INC. +001B70 (base 16) IRI Ubiteq, INC. + Shinjuku-Nomura Bldg. 47F, + 1-26-2 Nishi-shinjuku, + Shinjuku-ku Tokyo 163-0547 + JAPAN + +00-1B-71 (hex) Telular Corp. +001B71 (base 16) Telular Corp. + 311 South Wacker Drive + Suite 4300 + Chicago IL 60606 + UNITED STATES + +00-1B-72 (hex) Sicep s.p.a. +001B72 (base 16) Sicep s.p.a. + Via calabria, 14 + Certaldo 50052 + ITALY + +00-1B-73 (hex) DTL Broadcast Ltd +001B73 (base 16) DTL Broadcast Ltd + Johnson's Estate + Silverdale Road + HAYES Middlesex UB3 3BA + UNITED KINGDOM + +00-1B-74 (hex) MiraLink Corporation +001B74 (base 16) MiraLink Corporation + 111 SW 5th Ave. + Ste. 1000 + Portland OR 97204 + UNITED STATES + +00-1B-75 (hex) Hypermedia Systems +001B75 (base 16) Hypermedia Systems + 2B Bergman St. + Rabbin Industrial Park + Rehovot 76705 + ISRAEL + +00-1B-76 (hex) Ripcode, Inc. +001B76 (base 16) Ripcode, Inc. + 1130 E. Arapaho Road + Suite 435 + Richardson TX 75081 + UNITED STATES + +00-1B-77 (hex) Intel Corporate +001B77 (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1B-78 (hex) Hewlett Packard +001B78 (base 16) Hewlett Packard + 20555 State Highway 249 + ms040801 + Houston TX 77070 + UNITED STATES + +00-1B-79 (hex) FAIVELEY TRANSPORT +001B79 (base 16) FAIVELEY TRANSPORT + ZI du bois de plante + rue amelia earhart + LA VILLE AUX DAMES 37700 + FRANCE + +00-1B-7A (hex) Nintendo Co., Ltd. +001B7A (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO 601-8501 + JAPAN + +00-1B-7B (hex) The Tintometer Ltd +001B7B (base 16) The Tintometer Ltd + Solar Way + Solstice Park + Amesbury Wiltshire SP4 7SZ + UNITED KINGDOM + +00-1B-7C (hex) A & R Cambridge +001B7C (base 16) A & R Cambridge + Pembroke Avenue + Waterbeach + Cambridge CAMBS CB25 9QR + UNITED KINGDOM + +00-1B-7D (hex) CXR Anderson Jacobson +001B7D (base 16) CXR Anderson Jacobson + Rue de l'ornette + Abondant 28410 + FRANCE + +00-1B-7E (hex) Beckmann GmbH +001B7E (base 16) Beckmann GmbH + Brandtstr. 1 + Hoevelhof NRW 33161 + GERMANY + +00-1B-7F (hex) TMN Technologies Telecomunicacoes Ltda +001B7F (base 16) TMN Technologies Telecomunicacoes Ltda + Rua Nilza, 422 + Sao Paulo SP 03651-120 + BRAZIL + +00-1B-80 (hex) LORD Corporation +001B80 (base 16) LORD Corporation + 2000 West Grandview Blvd + Erie Pa 16509 + UNITED STATES + +00-1B-81 (hex) DATAQ Instruments, Inc. +001B81 (base 16) DATAQ Instruments, Inc. + 241 Springside Drive + Akron Ohio 44333 + UNITED STATES + +00-1B-82 (hex) Taiwan Semiconductor Co., Ltd. +001B82 (base 16) Taiwan Semiconductor Co., Ltd. + 11F, No. 205, Sec. 3, Beishin Rd, + Shindian Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-1B-83 (hex) Finsoft Ltd +001B83 (base 16) Finsoft Ltd + 16-18 Hatton Garden + London EC1N 8AT + UNITED KINGDOM + +00-1B-84 (hex) Scan Engineering Telecom +001B84 (base 16) Scan Engineering Telecom + Svobody str. 75 + Voronezh 394030 + RUSSIAN FEDERATION + +00-1B-85 (hex) MAN Diesel A/S +001B85 (base 16) MAN Diesel A/S + Teglholmsgade 41 + Copenhagen 2450 + DENMARK + +00-1B-86 (hex) Bosch Access Systems GmbH +001B86 (base 16) Bosch Access Systems GmbH + Adenauer str 20 + Wuerselen Nordrhein-westfalen D-52146 + GERMANY + +00-1B-87 (hex) Deepsound Tech. Co., Ltd +001B87 (base 16) Deepsound Tech. Co., Ltd + 3F No. 576 Sec. 1, Minsheng N. Rd., Gueishan Township, + Taoyuan 333 + TAIWAN, REPUBLIC OF CHINA + +00-1B-88 (hex) Divinet Access Technologies Ltd +001B88 (base 16) Divinet Access Technologies Ltd + 4th Floor, Media Center, + Sakaal Nagar, Baner Road + Pune Maharashtra 411007 + INDIA + +00-1B-89 (hex) EMZA Visual Sense Ltd. +001B89 (base 16) EMZA Visual Sense Ltd. + 20 Ha'ta'as St., Beith Hapamon + suite 391 + Kfar Saba 44425 + ISRAEL + +00-1B-8A (hex) 2M Electronic A/S +001B8A (base 16) 2M Electronic A/S + Malervej 10 + Taastrup 2630 + DENMARK + +00-1B-8B (hex) NEC AccessTechnica,Ltd. +001B8B (base 16) NEC AccessTechnica,Ltd. + 800 Shimomata + Kakegawa Shizuoka 436-8501 + JAPAN + +00-1B-8C (hex) JMicron Technology Corp. +001B8C (base 16) JMicron Technology Corp. + 1F, No. 13, Innovation Road 1, Science-Based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1B-8D (hex) Electronic Computer Systems, Inc. +001B8D (base 16) Electronic Computer Systems, Inc. + 418 Donegal Drive + Towson MD 21286 + UNITED STATES + +00-1B-8E (hex) Hulu Sweden AB +001B8E (base 16) Hulu Sweden AB + Box 12328, 10228 + Kista Stockholm 164 40 + SWEDEN + +00-1B-8F (hex) Cisco Systems +001B8F (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-90 (hex) Cisco Systems +001B90 (base 16) Cisco Systems + 80 West Tasman Dr. + SJ-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-91 (hex) EFKON AG +001B91 (base 16) EFKON AG + Andritzer Reichsstrasse 66 + Graz Styria 8045 + AUSTRIA + +00-1B-92 (hex) l-acoustics +001B92 (base 16) l-acoustics + parc de la fontaine de jouvence + marcoussis essonne 91462 + FRANCE + +00-1B-93 (hex) JC Decaux SA DNT +001B93 (base 16) JC Decaux SA DNT + 21 rue claude Bernard + MAUREPAS 78310 + FRANCE + +00-1B-94 (hex) T.E.M.A. S.p.A. +001B94 (base 16) T.E.M.A. S.p.A. + via della Scienza 21 A/C + Castelnuovo Rangone Modena 41051 + ITALY + +00-1B-95 (hex) VIDEO SYSTEMS SRL +001B95 (base 16) VIDEO SYSTEMS SRL + Loc. Gorizzo, 16 + 33030 + CAMINO AL TAGLIAMENTO UD + ITALY + +00-1B-96 (hex) Snif Labs, Inc. +001B96 (base 16) Snif Labs, Inc. + 108 Lincoln St. + Boston MA 02111 + UNITED STATES + +00-1B-97 (hex) Violin Technologies +001B97 (base 16) Violin Technologies + 33 Wood Ave South + Iselin NJ 08830 + UNITED STATES + +00-1B-98 (hex) Samsung Electronics Co., Ltd. +001B98 (base 16) Samsung Electronics Co., Ltd. + #94-1, Imsoo-Dong + GUMI Gyeong-Buk 730-350 + KOREA, REPUBLIC OF + +00-1B-99 (hex) KS System GmbH +001B99 (base 16) KS System GmbH + Alexanderstr. 37 + Muelheim NRW 45472 + GERMANY + +00-1B-9A (hex) Apollo Fire Detectors Ltd +001B9A (base 16) Apollo Fire Detectors Ltd + 36 Brookside Road + Havant Hampshire P09 1JR + UNITED KINGDOM + +00-1B-9B (hex) Hose-McCann Communications +001B9B (base 16) Hose-McCann Communications + 1241 West Newport Center Drive + Deerfield Beach FL 33442 + UNITED STATES + +00-1B-9C (hex) SATEL sp. z o.o. +001B9C (base 16) SATEL sp. z o.o. + Schuberta 79 + Gdansk pomorskie 80-172 + POLAND + +00-1B-9D (hex) Novus Security Sp. z o.o. +001B9D (base 16) Novus Security Sp. z o.o. + ul. Pu³awska 431 + Warsaw woj. mazowieckie 02-801 + POLAND + +00-1B-9E (hex) ASKEY COMPUTER CORP +001B9E (base 16) ASKEY COMPUTER CORP + 10F,NO.119,CHIENKANG RD, + CHUNG-HO,TPIPEI 235 + TAIWAN, REPUBLIC OF CHINA + +00-1B-9F (hex) Calyptech Pty Ltd +001B9F (base 16) Calyptech Pty Ltd + 5/486 Lower Heidelberg Road + Heidelberg Victoria 3084 + AUSTRALIA + +00-1B-A0 (hex) Awox +001BA0 (base 16) Awox + Avenue de l'Europe + Cap Alpha + CLAPIERS Herault 34830 + FRANCE + +00-1B-A1 (hex) Åmic AB +001BA1 (base 16) Åmic AB + Uppsala science park + Dag Hammrskjölds väg 52 B + Uppsala 75183 + SWEDEN + +00-1B-A2 (hex) IDS Imaging Development Systems GmbH +001BA2 (base 16) IDS Imaging Development Systems GmbH + Dimbacher Str. 6 + Obersulm BW 74182 + GERMANY + +00-1B-A3 (hex) Flexit Group GmbH +001BA3 (base 16) Flexit Group GmbH + Bräuhausstraße 14 + Salzburg Salzburg 5020 + AUSTRIA + +00-1B-A4 (hex) S.A.E Afikim +001BA4 (base 16) S.A.E Afikim + Kibutz Afikim + Kibutz Afikim 15148 + ISRAEL + +00-1B-A5 (hex) MyungMin Systems, Inc. +001BA5 (base 16) MyungMin Systems, Inc. + #410,Doosan Venture Dime 2-cha,1307-37 + Kwanyang-Dong, + Kyungki-do 431-060 + KOREA, REPUBLIC OF + +00-1B-A6 (hex) intotech inc. +001BA6 (base 16) intotech inc. + 13F DMC R&D Center E3-2 Building Land Development District Sangam-Dong + Mapogu Seoul 121-270 + KOREA, REPUBLIC OF + +00-1B-A7 (hex) Lorica Solutions +001BA7 (base 16) Lorica Solutions + 275 Northpointe Parkway + Amherst NY 14228 + UNITED STATES + +00-1B-A8 (hex) UBI&MOBI,.Inc +001BA8 (base 16) UBI&MOBI,.Inc + 3F, Duido Bldg, #288-5, Yangjae-Dong + Seocho-Gu Seoul 137-130 + KOREA, REPUBLIC OF + +00-1B-A9 (hex) BROTHER INDUSTRIES, LTD. +001BA9 (base 16) BROTHER INDUSTRIES, LTD. + Printing & Solutions Company, Development Management Dept. + 15-1 Naeshiro-cho, Mizuho-ku + Nagoya Aichi 467-8561 + JAPAN + +00-1B-AA (hex) XenICs nv +001BAA (base 16) XenICs nv + Ambachtenlaan 44 + Leuven Vlaams-Brabant B-3001 + BELGIUM + +00-1B-AB (hex) Telchemy, Incorporated +001BAB (base 16) Telchemy, Incorporated + 2905 Premiere Parkway + Suite 280 + Duluth GA 30097 + UNITED STATES + +00-1B-AC (hex) Curtiss Wright Controls Embedded Computing +001BAC (base 16) Curtiss Wright Controls Embedded Computing + 10201 Wateridge Circle + Suite 300 + San Diego CA 92121 + UNITED STATES + +00-1B-AD (hex) iControl Incorporated +001BAD (base 16) iControl Incorporated + 3235 Kifer Road + Suite 260 + Santa Clara California 95051 + UNITED STATES + +00-1B-AE (hex) Micro Control Systems, Inc +001BAE (base 16) Micro Control Systems, Inc + 5877 Enterprise Parkway + Fort Myers Florida 33905 + UNITED STATES + +00-1B-AF (hex) Nokia Danmark A/S +001BAF (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1B-B0 (hex) BHARAT ELECTRONICS +001BB0 (base 16) BHARAT ELECTRONICS + JALAHALLI POST + BANGALORE KARNATAKA 560013 + INDIA + +00-1B-B1 (hex) Wistron Neweb Corp. +001BB1 (base 16) Wistron Neweb Corp. + No. 10-1, Li-hsin Road I, Hsinchu Science Park, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1B-B2 (hex) Intellect International NV +001BB2 (base 16) Intellect International NV + Kleine Kloosterstraat 23 + Zaventem Vlaamse brabant 1932 + BELGIUM + +00-1B-B3 (hex) Condalo GmbH +001BB3 (base 16) Condalo GmbH + Kohlstatt 3 + Lichtenau Bavaria 86706 + GERMANY + +00-1B-B4 (hex) Airvod Limited +001BB4 (base 16) Airvod Limited + Heather House + Heather Road + Sandyford Ind Est Dublin 18 D18 + IRELAND + +00-1B-B5 (hex) Cherry GmbH +001BB5 (base 16) Cherry GmbH + Cherrystrasse 1 + Auerbach i. d. Opf. Bayern D-91275 + GERMANY + +00-1B-B6 (hex) Bird Electronic Corp. +001BB6 (base 16) Bird Electronic Corp. + 30303 Aurora Road + Solon Ohio 44139 + UNITED STATES + +00-1B-B7 (hex) Alta Heights Technology Corp. +001BB7 (base 16) Alta Heights Technology Corp. + 108 Alta Heights Court + Los Gatos California 95030 + UNITED STATES + +00-1B-B8 (hex) BLUEWAY ELECTRONIC CO;LTD +001BB8 (base 16) BLUEWAY ELECTRONIC CO;LTD + Workshop B,Dong Feng Village, + Front Baiyun,Gu Tang Ao + HuiZhou GuangDong 516008 + CHINA + +00-1B-B9 (hex) Elitegroup Computer System Co. +001BB9 (base 16) Elitegroup Computer System Co. + No.22, Alley 38, Lane 91 , Sec. 1 , Nei Hu Road + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1B-BA (hex) Nortel +001BBA (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1B-BB (hex) RFTech Co.,Ltd +001BBB (base 16) RFTech Co.,Ltd + 339-17 Jwahang-Ri,Wonsam-Myun, + Cheoin-Gu + Yongin-Si Kyungki-Do 449-871 + KOREA, REPUBLIC OF + +00-1B-BC (hex) Silver Peak Systems, Inc. +001BBC (base 16) Silver Peak Systems, Inc. + 471 El Camino Real + Santa Clara CA 95050 + UNITED STATES + +00-1B-BD (hex) FMC Kongsberg Subsea AS +001BBD (base 16) FMC Kongsberg Subsea AS + Kirkegaardsveien 45 + Kongsberg Buskerud 3601 + NORWAY + +00-1B-BE (hex) ICOP Digital +001BBE (base 16) ICOP Digital + 16801 W. 116th St. + Lenexa KS 66219 + UNITED STATES + +00-1B-BF (hex) SAGEM COMMUNICATION +001BBF (base 16) SAGEM COMMUNICATION + 14 Rue Paul Dautier + Vélizy 78457 + FRANCE + +00-1B-C0 (hex) Juniper Networks +001BC0 (base 16) Juniper Networks + 1194 N Mathilda Avenue + Sunnyvale CA 94089 + UNITED STATES + +00-1B-C1 (hex) HOLUX Technology, Inc. +001BC1 (base 16) HOLUX Technology, Inc. + 1F, No. 30, R&D Rd. II, + Science-based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1B-C2 (hex) Integrated Control Technology Limitied +001BC2 (base 16) Integrated Control Technology Limitied + 6C Ascension Place + Mairangi Bay + Auckland Auckland 0735 + NEW ZEALAND + +00-1B-C3 (hex) Mobisolution Co.,Ltd +001BC3 (base 16) Mobisolution Co.,Ltd + 848-16 + Guyeong-Dong + Gumi Gyeongbuk 730-300 + KOREA, REPUBLIC OF + +00-1B-C4 (hex) Ultratec, Inc. +001BC4 (base 16) Ultratec, Inc. + 450 Science Drive + Madison WI 53711 + UNITED STATES + +00-1B-C5 (hex) IEEE Registration Authority +001BC5 (base 16) IEEE Registration Authority + 445 Hoes Lane + Piscataway NJ 08854 + UNITED STATES + +00-1B-C6 (hex) Strato Rechenzentrum AG +001BC6 (base 16) Strato Rechenzentrum AG + Pascalstrasse 10 + Berlin 10587 + GERMANY + +00-1B-C7 (hex) StarVedia Technology Inc. +001BC7 (base 16) StarVedia Technology Inc. + 3F, No. 247, Done Sec. 1, Guangming 6th Rd. + Jhubei Hsin-Chu County 302 + TAIWAN, REPUBLIC OF CHINA + +00-1B-C8 (hex) MIURA CO.,LTD +001BC8 (base 16) MIURA CO.,LTD + 864-1,Hojyotsuji + Matsuyama Ehime 799-2430 + JAPAN + +00-1B-C9 (hex) FSN DISPLAY INC +001BC9 (base 16) FSN DISPLAY INC + Baeksuk-Dong 1141-1, Ilsan Techno Town 1009 + Koyang-Si, Ilsan-Gu, Kyeonggi-Do, Republic of Korea + Koyang-si Kyeonggi-Do 410722 + KOREA, REPUBLIC OF + +00-1B-CA (hex) Beijing Run Technology LTD. Company +001BCA (base 16) Beijing Run Technology LTD. Company + 4/F, Hangtian Technology Building + Beijing 100037 + CHINA + +00-1B-CB (hex) PEMPEK SYSTEMS PTY LTD +001BCB (base 16) PEMPEK SYSTEMS PTY LTD + UNIT 3 / 13 HOYLE AVENUE + CASTLE HILL NSW 2154 + AUSTRALIA + +00-1B-CC (hex) KINGTEK CCTV ALLIANCE CO., LTD. +001BCC (base 16) KINGTEK CCTV ALLIANCE CO., LTD. + 5F-3, NO. 106, SEC. 3, HSIN YI ROAD + TAIPEI 106 + TAIWAN, REPUBLIC OF CHINA + +00-1B-CD (hex) DAVISCOMMS (S) PTE LTD +001BCD (base 16) DAVISCOMMS (S) PTE LTD + Blk 70 Ubi Crescent #01-07 + Ubi Techpark + 408570 + SINGAPORE + +00-1B-CE (hex) Measurement Devices Ltd +001BCE (base 16) Measurement Devices Ltd + Silverburn Crescent + Bridge of Don + Aberdeen Aberdeenshire AB23 8EW + UNITED KINGDOM + +00-1B-CF (hex) Dataupia Corporation +001BCF (base 16) Dataupia Corporation + One Alewife Center + Cambridge MA 02140 + UNITED STATES + +00-1B-D0 (hex) IDENTEC SOLUTIONS +001BD0 (base 16) IDENTEC SOLUTIONS + Hertzstr. 10 + Weinheim 69469 + GERMANY + +00-1B-D1 (hex) SOGESTMATIC +001BD1 (base 16) SOGESTMATIC + 409 Route de la Gare + CHATEAUNEUF DE GADAGNE PACA 84470 + FRANCE + +00-1B-D2 (hex) ULTRA-X ASIA PACIFIC Inc. +001BD2 (base 16) ULTRA-X ASIA PACIFIC Inc. + 5-1-15 Sotokanda + Tokyo Chiyoda-ku 101-0021 + JAPAN + +00-1B-D3 (hex) Matsushita Electric Panasonic AVC +001BD3 (base 16) Matsushita Electric Panasonic AVC + 1-15 Matsuo-cho + 678-518 + Kadoma Osaka 571-8504 + JAPAN + +00-1B-D4 (hex) Cisco Systems +001BD4 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-D5 (hex) Cisco Systems +001BD5 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1B-D6 (hex) Kelvin Hughes Ltd +001BD6 (base 16) Kelvin Hughes Ltd + New North Road + Hainault + Ilford Essex IG6 2UR + UNITED KINGDOM + +00-1B-D7 (hex) Scientific Atlanta, A Cisco Company +001BD7 (base 16) Scientific Atlanta, A Cisco Company + 5030 Sugarloaf Parkway + ATL 1.3.473 + Lawrenceville GA 30044 + UNITED STATES + +00-1B-D8 (hex) DVTel, Inc. +001BD8 (base 16) DVTel, Inc. + 65 Challenger Rd. + Ridgefield Park NJ 07660 + UNITED STATES + +00-1B-D9 (hex) Edgewater Computer Systems +001BD9 (base 16) Edgewater Computer Systems + 1125 Innovation Drive + Ottawa Ontario K2K-3G6 + CANADA + +00-1B-DA (hex) UTStarcom Inc +001BDA (base 16) UTStarcom Inc + 1275 Harbor Bay PKWY + Alameda CA 94502 + UNITED STATES + +00-1B-DB (hex) Valeo VECS +001BDB (base 16) Valeo VECS + 2 Avenue Fernand Pouillon + Europarc + CRETEIL Ile de France 94042 + FRANCE + +00-1B-DC (hex) Vencer Co., Ltd. +001BDC (base 16) Vencer Co., Ltd. + 20F-1, No.77, Sec.1, Hsin Tai Wu Rd., + Hsi Chih Taipei 221 + TAIWAN, REPUBLIC OF CHINA + +00-1B-DD (hex) Motorola CHS +001BDD (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-1B-DE (hex) Renkus-Heinz, Inc. +001BDE (base 16) Renkus-Heinz, Inc. + 19201 Cook St. + Foothill Ranch CA 92610 + UNITED STATES + +00-1B-DF (hex) Iskra MIS +001BDF (base 16) Iskra MIS + Ljubljanska cesta 24a + Kranj Slovenia 4000 + SLOVENIA + +00-1B-E0 (hex) TELENOT ELECTRONIC GmbH +001BE0 (base 16) TELENOT ELECTRONIC GmbH + Wiesentalstraße 42 + Aalen Baden-Württemberg 73434 + GERMANY + +00-1B-E1 (hex) ViaLogy +001BE1 (base 16) ViaLogy + 2400 Lincoln Ave + Altadena CA 91001 + UNITED STATES + +00-1B-E2 (hex) AhnLab,Inc. +001BE2 (base 16) AhnLab,Inc. + 6th Fl, CCMM Bldg, 12 Yeouido-dong + Seoul 150869 + KOREA, REPUBLIC OF + +00-1B-E3 (hex) Health Hero Network, Inc. +001BE3 (base 16) Health Hero Network, Inc. + 2000 Seaport Blvd. + Suite 400 + Redwood City CA 94063 + UNITED STATES + +00-1B-E4 (hex) RETEMATICA SNC +001BE4 (base 16) RETEMATICA SNC + VIA D. ALIGHIERI, 3/B + ACQUALAGNA PU 61041 + ITALY + +00-1B-E5 (hex) 802automation Limited +001BE5 (base 16) 802automation Limited + 18 First Avenue + Worthing West Sussex BN14 9NJ + UNITED KINGDOM + +00-1B-E6 (hex) VR AG +001BE6 (base 16) VR AG + Rütistrasse 18 + Schlieren CH-8952 + SWITZERLAND + +00-1B-E7 (hex) Postek Electronics Co., Ltd. +001BE7 (base 16) Postek Electronics Co., Ltd. + Suite 510, Shanghang Building + Hongli Road + Shen Zhen Guang Dong 518028 + CHINA + +00-1B-E8 (hex) Ultratronik GmbH +001BE8 (base 16) Ultratronik GmbH + Gewerbestr. 52 + Herrsching Bavaria D-82211 + GERMANY + +00-1B-E9 (hex) Broadcom Corporation +001BE9 (base 16) Broadcom Corporation + 16215 Alton Parkway + Irvine CA 92618 + UNITED STATES + +00-1B-EA (hex) Nintendo Co., Ltd. +001BEA (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO 601-8501 + JAPAN + +00-1B-EB (hex) DMP Electronics INC. +001BEB (base 16) DMP Electronics INC. + 8F., No.12, Wucyuan 7th Rd. + Wugu Township + Taipei County 248 + TAIWAN, REPUBLIC OF CHINA + +00-1B-EC (hex) Netio Technologies Co., Ltd +001BEC (base 16) Netio Technologies Co., Ltd + 4F-1, No. 582, Rueiguang Rd., Neihu District + Taipei 11492 + TAIWAN, REPUBLIC OF CHINA + +00-1B-ED (hex) Foundry Networks +001BED (base 16) Foundry Networks + 2100 Gold Street + PO Box 649100 + San Jose CA 95164 + UNITED STATES + +00-1B-EE (hex) Nokia Danmark A/S +001BEE (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1B-EF (hex) Blossoms Digital Technology Co.,Ltd. +001BEF (base 16) Blossoms Digital Technology Co.,Ltd. + BLK25,Hengfeng Ind.City,Hezhou + Xixiang Town + Shenzhen Guangdong 518126 + CHINA + +00-1B-F0 (hex) Value Platforms Limited +001BF0 (base 16) Value Platforms Limited + Rm 712-713, Building 9, 5, Science Park West Ave., + Hong Kong Science Park, + Shatin, + HONG KONG + +00-1B-F1 (hex) Nanjing SilverNet Software Co., Ltd. +001BF1 (base 16) Nanjing SilverNet Software Co., Ltd. + 3/F, 10 building, Nanjing World Window Technology & Software Park + 12 DingHuaiMen, Gulou District, Nanjing + Nanjing Jiangsu 210013 + CHINA + +00-1B-F2 (hex) KWORLD COMPUTER CO., LTD +001BF2 (base 16) KWORLD COMPUTER CO., LTD + No. 113, Jian 2nd Rd., + Jhonghe Taipei county 235 + TAIWAN, REPUBLIC OF CHINA + +00-1B-F3 (hex) TRANSRADIO SenderSysteme Berlin AG +001BF3 (base 16) TRANSRADIO SenderSysteme Berlin AG + Mertensstrasse 63 + Berlin 13587 + GERMANY + +00-1B-F4 (hex) KENWIN INDUSTRIAL(HK) LTD. +001BF4 (base 16) KENWIN INDUSTRIAL(HK) LTD. + RM.1512 15/F SHATIN GALLERIA + 18-24 SHAN MEI ST, FOTAN + HONG KONG + +00-1B-F5 (hex) Tellink Sistemas de Telecomunicación S.L. +001BF5 (base 16) Tellink Sistemas de Telecomunicación S.L. + C/ María Tubau Nº 5 Bajo B + Madrid 28050 + SPAIN + +00-1B-F6 (hex) CONWISE Technology Corporation Ltd. +001BF6 (base 16) CONWISE Technology Corporation Ltd. + 2F No.44, Park Ave. 2, Hsinchu Science Park + Hsinchu City 30075 + TAIWAN, REPUBLIC OF CHINA + +00-1B-F7 (hex) Lund IP Products AB +001BF7 (base 16) Lund IP Products AB + Dalbyv. 1 + Lund Skane 224 60 + SWEDEN + +00-1B-F8 (hex) Digitrax Inc. +001BF8 (base 16) Digitrax Inc. + 450 Cemetery St + Suite 206 + Norcross GA 30071 + UNITED STATES + +00-1B-F9 (hex) Intellitect Water Ltd +001BF9 (base 16) Intellitect Water Ltd + Suite 19, Basepoint Business Centre + Aviation Park West + Christchurch Dorset BH23 ^NW + UNITED KINGDOM + +00-1B-FA (hex) G.i.N. mbH +001BFA (base 16) G.i.N. mbH + Raiffeisenstr. 15 + Griesheim Hessen 64347 + GERMANY + +00-1B-FB (hex) Alps Electric Co., Ltd +001BFB (base 16) Alps Electric Co., Ltd + 1-2-1, Okinouchi + Soma-city Fukushima--pref 976-8501 + JAPAN + +00-1B-FC (hex) ASUSTek COMPUTER INC. +001BFC (base 16) ASUSTek COMPUTER INC. + 15,Li-Te Rd.,Peitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-1B-FD (hex) Dignsys Inc. +001BFD (base 16) Dignsys Inc. + 14F, Digital Empire Bldg., B-1408 + Yeongtong-gu, + Suwon Gyeonggi-do 443-813 + KOREA, REPUBLIC OF + +00-1B-FE (hex) Zavio Inc. +001BFE (base 16) Zavio Inc. + No.1,Lising 1st Rd. Science Based Industrial Park, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1B-FF (hex) Millennia Media inc. +001BFF (base 16) Millennia Media inc. + 4200 Day Spring CT + Placerville CA 95667 + UNITED STATES + +00-1C-00 (hex) Entry Point, LLC +001C00 (base 16) Entry Point, LLC + P.O. Box 3354 + 930 East Lincoln Road + Idaho Falls Idaho 83403-3354 + UNITED STATES + +00-1C-01 (hex) ABB Oy Drives +001C01 (base 16) ABB Oy Drives + Hiomotie 13 + Helsinki FI-00380 + FINLAND + +00-1C-02 (hex) Atto Devices, Inc +001C02 (base 16) Atto Devices, Inc + 1350 Willow Rd + Suite 201 + Menlo Park CA 94025 + UNITED STATES + +00-1C-03 (hex) Betty TV Technology AG +001C03 (base 16) Betty TV Technology AG + Hardturmstrasse 2 + Zurich 80005 + SWITZERLAND + +00-1C-04 (hex) Airgain, Inc. +001C04 (base 16) Airgain, Inc. + 1930 Palomar Point Way + Suite 107 + Carlsbad CA 92008 + UNITED STATES + +00-1C-05 (hex) Nonin Medical Inc. +001C05 (base 16) Nonin Medical Inc. + 13700 1st Avenue North + Plymouth MN 55441 + UNITED STATES + +00-1C-06 (hex) Siemens Numerical Control Ltd., Nanjing +001C06 (base 16) Siemens Numerical Control Ltd., Nanjing + No. 18 Siemens Road, Jiangning Development Zone + Nanjing JiangSu 211100 + CHINA + +00-1C-07 (hex) Cwlinux Limited +001C07 (base 16) Cwlinux Limited + Unit 138, 13/F, Weswick Commercial Building, + 147-151 Queen's Road East, + Wan Chai + HONG KONG + +00-1C-08 (hex) Anystream, Inc. +001C08 (base 16) Anystream, Inc. + 21335 Signal Hill Plaza + Sterling VA 20164 + UNITED STATES + +00-1C-09 (hex) SAE Electronic Co.,Ltd. +001C09 (base 16) SAE Electronic Co.,Ltd. + 23/F,Ying Long Zhan Ye Building, + No.6025, Shen Nan Road,Futian District + Shenzhen Guang Dong 518040 + CHINA + +00-1C-0A (hex) Shenzhen AEE Technology Co.,Ltd. +001C0A (base 16) Shenzhen AEE Technology Co.,Ltd. + 1st Floor B Building, Shenzhen, + Tsinghua Hi-Tech Park, Nanshan Hi-Tech Park North, + Shenzhen Guangdong 518057 + CHINA + +00-1C-0B (hex) SmartAnt Telecom +001C0B (base 16) SmartAnt Telecom + 2F, No. 669, Sec. 4, Chung Hsing Rd., Chutung + Hsinchu 310 + TAIWAN, REPUBLIC OF CHINA + +00-1C-0C (hex) TANITA Corporation +001C0C (base 16) TANITA Corporation + 1-14-2,Maeno-cho + Itabashi-ku + Tokyo 174-8630 + JAPAN + +00-1C-0D (hex) G-Technology, Inc. +001C0D (base 16) G-Technology, Inc. + 1653 Stanford Street + Santa Monica CA 90404 + UNITED STATES + +00-1C-0E (hex) Cisco Systems +001C0E (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1C-0F (hex) Cisco Systems +001C0F (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1C-10 (hex) Cisco-Linksys, LLC +001C10 (base 16) Cisco-Linksys, LLC + 121 Theory Drive + Irvine California 92612 + UNITED STATES + +00-1C-11 (hex) Motorola CHS +001C11 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-1C-12 (hex) Motorola Mobile Devices +001C12 (base 16) Motorola Mobile Devices + 600 N. US 45 + Libertyville Illinois 60048 + UNITED STATES + +00-1C-13 (hex) OPTSYS TECHNOLOGY CO., LTD. +001C13 (base 16) OPTSYS TECHNOLOGY CO., LTD. + SUITE B-802 BUNDANG TECHNO PARK + YATAP-DONG, BUNDANG-KU + SEONGNAM-SI GYEONGGI-DO 463-760 + KOREA, REPUBLIC OF + +00-1C-14 (hex) VMware, Inc +001C14 (base 16) VMware, Inc + 3145 Porter Drive + Palo Alto CA 94304 + UNITED STATES + +00-1C-15 (hex) TXP Corporation +001C15 (base 16) TXP Corporation + 1299 Commerce Dr. + Richardson Texas 75081 + UNITED STATES + +00-1C-16 (hex) ThyssenKrupp Elevator +001C16 (base 16) ThyssenKrupp Elevator + 9280 Crestwyn Hills Drive + Memphis TN 38125 + UNITED STATES + +00-1C-17 (hex) Nortel +001C17 (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1C-18 (hex) Sicert S.r.L. +001C18 (base 16) Sicert S.r.L. + Via Bernardino Alimena, 128 + Rome 00173 + ITALY + +00-1C-19 (hex) secunet Security Networks AG +001C19 (base 16) secunet Security Networks AG + Kronprinzenstraße 30 + Essen NRW 45128 + GERMANY + +00-1C-1A (hex) Thomas Instrumentation, Inc +001C1A (base 16) Thomas Instrumentation, Inc + 133 Landing Rd + Cape May Court House NJ 08210 + UNITED STATES + +00-1C-1B (hex) Hyperstone GmbH +001C1B (base 16) Hyperstone GmbH + Line-Eid-Str. 3 + Konstanz Baden-Württemberg 78467 + GERMANY + +00-1C-1C (hex) Center Communication Systems GmbH +001C1C (base 16) Center Communication Systems GmbH + Ignaz-Koeck-Strasse 19 + Vienna A-1210 + AUSTRIA + +00-1C-1D (hex) CHENZHOU GOSPELL DIGITAL TECHNOLOGY CO.,LTD +001C1D (base 16) CHENZHOU GOSPELL DIGITAL TECHNOLOGY CO.,LTD + BAILUTANG,SUXIAN DISTRICT, + CHENZHOU HUNAN 423025 + CHINA + +00-1C-1E (hex) emtrion GmbH +001C1E (base 16) emtrion GmbH + Greschbachstrasse 12 + Karlsruhe Baden Wuerttemberg 76229 + GERMANY + +00-1C-1F (hex) Quest Retail Technology Pty Ltd +001C1F (base 16) Quest Retail Technology Pty Ltd + 37-39 Walsh Street + Thebarton SA 5031 + AUSTRALIA + +00-1C-20 (hex) CLB Benelux +001C20 (base 16) CLB Benelux + Ramgatseweg 17 + Raamsdonksveer NBR 4941 VN + NETHERLANDS + +00-1C-21 (hex) Nucsafe Inc. +001C21 (base 16) Nucsafe Inc. + 601 Oak Ridge Turnpike + Oak Ridge Tennessee 37830 + UNITED STATES + +00-1C-22 (hex) Aeris Elettronica s.r.l. +001C22 (base 16) Aeris Elettronica s.r.l. + Zona Ind.le Vallecupa + Colonnella Teramo 64010 + ITALY + +00-1C-23 (hex) Dell Inc +001C23 (base 16) Dell Inc + One Dell Way, MS RR5-45 + Round Rock Texas 78682 + UNITED STATES + +00-1C-24 (hex) Formosa Wireless Systems Corp. +001C24 (base 16) Formosa Wireless Systems Corp. + No. 408, Guandong Rd., + HsinChu City 300 + TAIWAN, REPUBLIC OF CHINA + +00-1C-25 (hex) Hon Hai Precision Ind. Co.,Ltd. +001C25 (base 16) Hon Hai Precision Ind. Co.,Ltd. + 66,Chung Shan Rd.Tu-Cheng + Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-1C-26 (hex) Hon Hai Precision Ind. Co.,Ltd. +001C26 (base 16) Hon Hai Precision Ind. Co.,Ltd. + 66,Chung Shan Rd.Tu-Cheng + Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-1C-27 (hex) Sunell Electronics Co. +001C27 (base 16) Sunell Electronics Co. + 3rd Floor,Bldg.514,BaGua Rd + Futian District + ShenZhen Guangdong 518029 + CHINA + +00-1C-28 (hex) Sphairon Access Systems GmbH +001C28 (base 16) Sphairon Access Systems GmbH + Manfred-von-Ardenne-Ring 20 + Dresden Saxony 01099 + GERMANY + +00-1C-29 (hex) CORE DIGITAL ELECTRONICS CO., LTD +001C29 (base 16) CORE DIGITAL ELECTRONICS CO., LTD + 1006# 102 CHUNUITECHNOPARK 200-1 + CHUNUI-DONG, WONMI-GU + BUCHEON-CITY GYUNGGI-DO 420-857 + KOREA, REPUBLIC OF + +00-1C-2A (hex) Envisacor Technologies Inc. +001C2A (base 16) Envisacor Technologies Inc. + 14845-6 Yonge Street, Suite 310 + Aurora ON L4G 6H8 + CANADA + +00-1C-2B (hex) Alertme.com Limited +001C2B (base 16) Alertme.com Limited + 27-28 Bridge Street + Cambridge Cambridgeshire CB2 1UJ + UNITED KINGDOM + +00-1C-2C (hex) Synapse +001C2C (base 16) Synapse + 132 Export Circle + Huntsville AL 35806 + UNITED STATES + +00-1C-2D (hex) FlexRadio Systems +001C2D (base 16) FlexRadio Systems + 8900 Marybank Dr. + Austin TX 78750 + UNITED STATES + +00-1C-2E (hex) ProCurve Networking by HP +001C2E (base 16) ProCurve Networking by HP + 8000 Foothills Blvd + Roseville CA 95747 + UNITED STATES + +00-1C-2F (hex) Pfister GmbH +001C2F (base 16) Pfister GmbH + Stätzlinger Straße 70 + Augsburg Bavaria 86165 + GERMANY + +00-1C-30 (hex) Mode Lighting (UK ) Ltd. +001C30 (base 16) Mode Lighting (UK ) Ltd. + The Maltings + 63 High Street + Ware Hertfordshire SG12 9AD + UNITED KINGDOM + +00-1C-31 (hex) Mobile XP Technology Co., LTD +001C31 (base 16) Mobile XP Technology Co., LTD + Room No.2506,Tri-tower C building,No.66£¬Zhongguancun East Road,Haidian District + Beijing 100080 + CHINA + +00-1C-32 (hex) Telian Corporation +001C32 (base 16) Telian Corporation + 4FL. Namjeon Bldg. 53-3 Haandong + Kwangmyungsi Kyoungkido 423060 + KOREA, REPUBLIC OF + +00-1C-33 (hex) Sutron +001C33 (base 16) Sutron + 21300 Ridgetop Cir + Sterling VA 20166 + UNITED STATES + +00-1C-34 (hex) HUEY CHIAO INTERNATIONAL CO., LTD. +001C34 (base 16) HUEY CHIAO INTERNATIONAL CO., LTD. + 5F, NO. 649-1, + CHUNG CHENG RD., + HSIN CHUANG CITY TAIPEI 242 + TAIWAN, REPUBLIC OF CHINA + +00-1C-35 (hex) Nokia Danmark A/S +001C35 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790V + DENMARK + +00-1C-36 (hex) iNEWiT NV +001C36 (base 16) iNEWiT NV + Schaliënhoevedreef 20D + Mechelen Antwerp 2800 + BELGIUM + +00-1C-37 (hex) Callpod, Inc. +001C37 (base 16) Callpod, Inc. + 850 W. Jackson + Suite 260 + Chicago IL 60607 + UNITED STATES + +00-1C-38 (hex) Bio-Rad Laboratories, Inc. +001C38 (base 16) Bio-Rad Laboratories, Inc. + 245 Winter St. + Suite 100 + Waltham MA 02451 + UNITED STATES + +00-1C-39 (hex) S Netsystems Inc. +001C39 (base 16) S Netsystems Inc. + 10F Sungwon Bldg., 141 Samsung-Dong + Kangnam-Ku + Seoul 135-716 + KOREA, REPUBLIC OF + +00-1C-3A (hex) Element Labs, Inc. +001C3A (base 16) Element Labs, Inc. + 3350 Scott Boulevard + Building #2 + Santa Clara CA 95054 + UNITED STATES + +00-1C-3B (hex) AmRoad Technology Inc. +001C3B (base 16) AmRoad Technology Inc. + 18F-3 No. 150 , Chien I Rd + Chung Ho Taipei Hsien 23511 + TAIWAN, REPUBLIC OF CHINA + +00-1C-3C (hex) Seon Design Inc. +001C3C (base 16) Seon Design Inc. + 111-3B Burbidge Street + Coquitlam BC V3K 7B2 + CANADA + +00-1C-3D (hex) WaveStorm +001C3D (base 16) WaveStorm + 40 rue d'Oradour-sur-Glane + Paris Île-de-France 75015 + FRANCE + +00-1C-3E (hex) ECKey Limited +001C3E (base 16) ECKey Limited + PO Box 128 057 + Remuera + Auckland 1050 + NEW ZEALAND + +00-1C-3F (hex) International Police Technologies, Inc. +001C3F (base 16) International Police Technologies, Inc. + 4150 S. 87th E. Avenue + Tulsa OK 74145 + UNITED STATES + +00-1C-40 (hex) VDG-Security bv +001C40 (base 16) VDG-Security bv + Radonstraat 10-14 + Zoetermeer ZH 2718 TA + NETHERLANDS + +00-1C-41 (hex) scemtec Transponder Technology GmbH +001C41 (base 16) scemtec Transponder Technology GmbH + Gewerbeparkstr. 20 + Reichshof NRW 51580 + GERMANY + +00-1C-42 (hex) Parallels, Inc. +001C42 (base 16) Parallels, Inc. + 660 SW 39h Street + Suite 205 + Renton WA 98057 + UNITED STATES + +00-1C-43 (hex) Samsung Electronics Co.,Ltd +001C43 (base 16) Samsung Electronics Co.,Ltd + #94-1, Imsoo-Dong + Gumi Gyeongbuk 730-350 + KOREA, REPUBLIC OF + +00-1C-44 (hex) Bosch Security Systems BV +001C44 (base 16) Bosch Security Systems BV + Kapittelweg 10 + 4827 HG Breda Brabant 4827 + NETHERLANDS + +00-1C-45 (hex) Chenbro Micom Co., Ltd. +001C45 (base 16) Chenbro Micom Co., Ltd. + 15Fl., No. 150, Jian Yi Road + Chung Ho City Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-1C-46 (hex) QTUM +001C46 (base 16) QTUM + #507 Byucksan/Kyungin Digital Valley 2 481-10 + Gasan-dong Geumcheon-gu + Seoul 153-783 + KOREA, REPUBLIC OF + +00-1C-47 (hex) Hangzhou Hollysys Automation Co., Ltd +001C47 (base 16) Hangzhou Hollysys Automation Co., Ltd + No.10 Middle Road, Jiancaicheng, Haidian District, + Beijing 100096 + CHINA + +00-1C-48 (hex) WiDeFi, Inc. +001C48 (base 16) WiDeFi, Inc. + 1333 Gateway Blvd + Suite 1012 + Melbourne FL 32901 + UNITED STATES + +00-1C-49 (hex) Zoltan Technology Inc. +001C49 (base 16) Zoltan Technology Inc. + 4F, No.30, Wunsi St. + Jhubei Hsinchu 302 + TAIWAN, REPUBLIC OF CHINA + +00-1C-4A (hex) AVM GmbH +001C4A (base 16) AVM GmbH + Alt-Moabit 95 + Berlin 10559 + GERMANY + +00-1C-4B (hex) Gener8, Inc. +001C4B (base 16) Gener8, Inc. + 897 Independence Ave + Mountain View CA 94043 + UNITED STATES + +00-1C-4C (hex) Petrotest Instruments +001C4C (base 16) Petrotest Instruments + Ludwig-Erhard-Ring 13 + Dahlewitz BBG 15827 + GERMANY + +00-1C-4D (hex) Zeetoo, Inc. +001C4D (base 16) Zeetoo, Inc. + 128 Great Road + Bedford MA 01730 + UNITED STATES + +00-1C-4E (hex) TASA International Limited +001C4E (base 16) TASA International Limited + 5F£¬Building2£¬No.1295 ,Xin Jinqiao Road, + Shanghai 201206 + CHINA + +00-1C-4F (hex) MACAB AB +001C4F (base 16) MACAB AB + Vannhögsgatan 7 + Trelleborg 23166 + SWEDEN + +00-1C-50 (hex) TCL Technoly Electronics(Huizhou)Co.,Ltd +001C50 (base 16) TCL Technoly Electronics(Huizhou)Co.,Ltd + 10/F, Block A , TCL Tower + 1 Gaoxin Nan Road, Nanshan District + Shenzhen Guangdong 518057 + CHINA + +00-1C-51 (hex) Celeno Communications +001C51 (base 16) Celeno Communications + 22 Zarhin Street + Ra'anana 43665 + ISRAEL + +00-1C-52 (hex) VISIONEE SRL +001C52 (base 16) VISIONEE SRL + VIALE DELLA REPUBBLICA, 22 + VILLORBA TREVISO 31050 + ITALY + +00-1C-53 (hex) Synergy Lighting Controls +001C53 (base 16) Synergy Lighting Controls + One Lithonia Way + Conyers GA 30012 + UNITED STATES + +00-1C-54 (hex) Hillstone Networks Inc +001C54 (base 16) Hillstone Networks Inc + A-1905 e-Wing Center + Zhichun Road, Haidian + Beijing 100086 + CHINA + +00-1C-55 (hex) Shenzhen Kaifa Technology Co. +001C55 (base 16) Shenzhen Kaifa Technology Co. + 7006 Caitian Road, Futian District, + Shenzhen Guangdong 518035 + CHINA + +00-1C-56 (hex) Pado Systems, Inc. +001C56 (base 16) Pado Systems, Inc. + #706 Loadland EZ Tower 153 + Gumi-Dong, Bundang-Gu + SungNam Gyung gi-Do 463-810 + KOREA, REPUBLIC OF + +00-1C-57 (hex) Cisco Systems +001C57 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1C-58 (hex) Cisco Systems +001C58 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1C-59 (hex) DEVON IT +001C59 (base 16) DEVON IT + 1100 FIRST AVENUE + SUITE 100 + KING OF PRUSSIA PA 19406 + UNITED STATES + +00-1C-5A (hex) Advanced Relay Corporation +001C5A (base 16) Advanced Relay Corporation + 1896 Columbia St + Eugene OR 97403 + UNITED STATES + +00-1C-5B (hex) Chubb Electronic Security Systems Ltd +001C5B (base 16) Chubb Electronic Security Systems Ltd + Shadsworth Road + Blackburn Lancashire BB1 2PR + UNITED KINGDOM + +00-1C-5C (hex) Integrated Medical Systems, Inc. +001C5C (base 16) Integrated Medical Systems, Inc. + 1984 Obispo Avenue + Signal Hill CA 90755 + UNITED STATES + +00-1C-5D (hex) Leica Microsystems +001C5D (base 16) Leica Microsystems + POBox 80 + 515 Coldhams Lane + Cambridge CB1 3YZ + UNITED KINGDOM + +00-1C-5E (hex) ASTON France +001C5E (base 16) ASTON France + 151 Avenue Gallieni + BAGNOLET ile de france 93177 + FRANCE + +00-1C-5F (hex) Winland Electronics, Inc. +001C5F (base 16) Winland Electronics, Inc. + 1950 Excel Drive + Mankato MN 56001 + UNITED STATES + +00-1C-60 (hex) CSP Frontier Technologies,Inc. +001C60 (base 16) CSP Frontier Technologies,Inc. + 3-2-3,Sasazuka + Shibuya-ku Tokyo 151-0073 + JAPAN + +00-1C-61 (hex) Galaxy Technology (HK) Ltd. +001C61 (base 16) Galaxy Technology (HK) Ltd. + Unit 802, 8/F, Shui Hing Centre, 13 Sheung Yuet Road, + Kowloon Bay Kln., + HONG KONG + +00-1C-62 (hex) LG Electronics Inc +001C62 (base 16) LG Electronics Inc + 60-39, Gasan-Dong + Kumchon-Gu + Seoul 153-023 + KOREA, REPUBLIC OF + +00-1C-63 (hex) TRUEN +001C63 (base 16) TRUEN + 4F SAMWON BLDG., 451-7 + BANGBAE-DONG, SEOCHO-GU + SEOUL 137-818 + KOREA, REPUBLIC OF + +00-1C-64 (hex) Cellnet+Hunt +001C64 (base 16) Cellnet+Hunt + 6436 County Road 11 + Pequot Lakes Minnesota 56472 + UNITED STATES + +00-1C-65 (hex) JoeScan, Inc. +001C65 (base 16) JoeScan, Inc. + 119 E 8th St. + Vancouver WA 98660 + UNITED STATES + +00-1C-66 (hex) UCAMP CO.,LTD +001C66 (base 16) UCAMP CO.,LTD + #1015, Kolon Science Valley ¥± + Seoul Guro-Dong,Guro-gu, 152-848 + KOREA, REPUBLIC OF + +00-1C-67 (hex) Pumpkin Networks, Inc. +001C67 (base 16) Pumpkin Networks, Inc. + 3FL JungHo Bldg, 108-4 Sangdo-Dong, Dongjak-Gu + SEOUL 156-030 + KOREA, REPUBLIC OF + +00-1C-68 (hex) Anhui Sun Create Electronics Co., Ltd +001C68 (base 16) Anhui Sun Create Electronics Co., Ltd + NO.199 Xiangzhang Road + Hefei Anhui 230088 + CHINA + +00-1C-69 (hex) Packet Vision Ltd +001C69 (base 16) Packet Vision Ltd + SC House + Vanwall Road + Maidenhead Berks SL6 4UB + UNITED KINGDOM + +00-1C-6A (hex) Weiss Engineering Ltd. +001C6A (base 16) Weiss Engineering Ltd. + Florastrasse 42 + Uster ZH 8610 + SWITZERLAND + +00-1C-6B (hex) COVAX Co. Ltd +001C6B (base 16) COVAX Co. Ltd + 3-27-22 kitahanada-cho kitaku + sakai-shi oosaka 591-8002 + JAPAN + +00-1C-6C (hex) Jabil Circuit (Guangzhou) Limited +001C6C (base 16) Jabil Circuit (Guangzhou) Limited + 128, Jun Cheng Road,uangzhou Economic and Technological Development District + Guangdong Province + Guangzhou Guangdong 510530 + CHINA + +00-1C-6D (hex) KYOHRITSU ELECTRONIC INDUSTRY CO., LTD. +001C6D (base 16) KYOHRITSU ELECTRONIC INDUSTRY CO., LTD. + 2-5-1, NIPPONBASHI-NISHI, + NANIWA-KU + OSAKA 556-0004 + JAPAN + +00-1C-6E (hex) Newbury Networks, Inc. +001C6E (base 16) Newbury Networks, Inc. + 419 Boylston Street + Boston MA 02116 + UNITED STATES + +00-1C-6F (hex) Emfit Ltd +001C6F (base 16) Emfit Ltd + Konttisentie 8 B + Vaajakoski 40800 + FINLAND + +00-1C-70 (hex) NOVACOMM LTDA +001C70 (base 16) NOVACOMM LTDA + RUA BEIJUI, 70 + SANTO AMARO + SAO PAULO 04689-000 + BRAZIL + +00-1C-71 (hex) Emergent Electronics +001C71 (base 16) Emergent Electronics + Bldg 2 Level 3 Suite 305 + 2591 Wexford-Bayne Road + Sewickley PA 15143 + UNITED STATES + +00-1C-72 (hex) Mayer & Cie GmbH & Co KG +001C72 (base 16) Mayer & Cie GmbH & Co KG + Emil Mayer Strasse 10 + Albstadt Baden Württemberg 72461 + GERMANY + +00-1C-73 (hex) Arastra, Inc. +001C73 (base 16) Arastra, Inc. + P. O. Box 10905 + Palo Alto California 94303-0867 + UNITED STATES + +00-1C-74 (hex) Syswan Technologies Inc. +001C74 (base 16) Syswan Technologies Inc. + 2050 Beavercreek Road + Suite 101 #388 + Oregon City Oregon 97045 + UNITED STATES + +00-1C-75 (hex) RF Systems GmbH +001C75 (base 16) RF Systems GmbH + Einsteinstraße 11 + Viernheim Hessen D 68519 + GERMANY + +00-1C-76 (hex) The Wandsworth Group Ltd +001C76 (base 16) The Wandsworth Group Ltd + Albert Drive + Sheerwater + Woking Surrey GU21 5SE + UNITED KINGDOM + +00-1C-77 (hex) Prodys +001C77 (base 16) Prodys + C/Trigo 54 Pol. Ind. Polvoranca + Leganes MADRID 28914 + SPAIN + +00-1C-78 (hex) WYPLAY SAS +001C78 (base 16) WYPLAY SAS + 200 avenue de Provence + ALLAUCH BdR 13190 + FRANCE + +00-1C-79 (hex) Cohesive Financial Technologies LLC +001C79 (base 16) Cohesive Financial Technologies LLC + 200 South Wacker Dr. + Suite 1500 + Chicago IL 60606 + UNITED STATES + +00-1C-7A (hex) Perfectone Netware Company Ltd +001C7A (base 16) Perfectone Netware Company Ltd + Unit 815, Sun Fung Centre, + Kwok Shui Rd, + Kwai Chung + HONG KONG + +00-1C-7B (hex) Castlenet Technology Inc. +001C7B (base 16) Castlenet Technology Inc. + No.64, Chung-Shan Rd. + Tu-Cheng City Taipei 236 + TAIWAN, REPUBLIC OF CHINA + +00-1C-7C (hex) PERQ SYSTEMS CORPORATION +001C7C (base 16) PERQ SYSTEMS CORPORATION + 2600 LIBERETY AVENUE + P.O. BOX 2600 + PITTSBURGH PA 15230 + UNITED STATES + +00-1C-7D (hex) Excelpoint Manufacturing Pte Ltd +001C7D (base 16) Excelpoint Manufacturing Pte Ltd + 15, Changi Business Park + Central 1, 5th Level + 486057 + SINGAPORE + +00-1C-7E (hex) Toshiba +001C7E (base 16) Toshiba + 2-9,Suehiro-Cho + Ome Tokyo 1988710 + JAPAN + +00-1C-7F (hex) Check Point Software Technologies +001C7F (base 16) Check Point Software Technologies + 3A Jabotinsky St. + Diamond Tower + Ramat Gan 52520 + ISRAEL + +00-1C-80 (hex) New Business Division/Rhea-Information CO., LTD. +001C80 (base 16) New Business Division/Rhea-Information CO., LTD. + 4F 594 Yeong Pung Bldg, Gueui-Dong + Seoul Gwangjin-Gu 143-200 + KOREA, REPUBLIC OF + +00-1C-81 (hex) NextGen Venturi LTD +001C81 (base 16) NextGen Venturi LTD + Technium 2 + Kings Road + Swansea West Glamorgan SA18PJ + UNITED KINGDOM + +00-1C-82 (hex) Genew Technologies +001C82 (base 16) Genew Technologies + 3A3 Building B1, Cyber-tech Zone, + Gaoxin Ave. 7S, Hi-tech Industrial Park, + Shenzhen Guangdong 518057 + CHINA + +00-1C-83 (hex) New Level Telecom Co., Ltd. +001C83 (base 16) New Level Telecom Co., Ltd. + 4Floor, 342-15, ShinDaebang2-Dong, + Dongjak-Gu + Seoul 156-847 + KOREA, REPUBLIC OF + +00-1C-84 (hex) STL Solution Co.,Ltd. +001C84 (base 16) STL Solution Co.,Ltd. + #710, World Meridian Venture Center I + 60-24, Gasan-dong, Geumcheon-gu + Seoul 152781 + KOREA, REPUBLIC OF + +00-1C-85 (hex) Eunicorn +001C85 (base 16) Eunicorn + 226-16 unbo b/d suckchon-dong songpa-gu + seoul 138845 + KOREA, DEMOCRATIC PEOPLE'S REPUBLI + +00-1C-86 (hex) Cranite Systems, Inc. +001C86 (base 16) Cranite Systems, Inc. + 121 Albright Way + Los Gatos CA 95032 + UNITED STATES + +00-1C-87 (hex) Uriver Inc. +001C87 (base 16) Uriver Inc. + 3rd., Fl., Bogwang Bldg., Poi-dong, 238-7 Gangnam-gu, + Seoul 135-964 + KOREA, REPUBLIC OF + +00-1C-88 (hex) TRANSYSTEM INC. +001C88 (base 16) TRANSYSTEM INC. + No. 1-2, Li-Hsin Rd 1, Science-Based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1C-89 (hex) Force Communications, Inc. +001C89 (base 16) Force Communications, Inc. + PO Box 250286 + Plano TX 75025 + UNITED STATES + +00-1C-8A (hex) Verari Systems Inc +001C8A (base 16) Verari Systems Inc + 9449 Carroll Park Drive + San Diego CA 92121 + UNITED STATES + +00-1C-8B (hex) MJ Innovations Ltd. +001C8B (base 16) MJ Innovations Ltd. + 333 Wyecroft Road + Unit 3 + Oakville Ontario L6K 2H2 + CANADA + +00-1C-8C (hex) DIAL TECHNOLOGY LTD. +001C8C (base 16) DIAL TECHNOLOGY LTD. + 6F-4, NO.18, LANE.609, SEC.5, CHONGSIN RD., + SANCHONG CITY TAIPEI COUNTY 241 + TAIWAN, REPUBLIC OF CHINA + +00-1C-8D (hex) Mesa Imaging +001C8D (base 16) Mesa Imaging + Badenerstrasse 569 + Zürich ZH 8048 + SWITZERLAND + +00-1C-8E (hex) Alcatel-Lucent IPD +001C8E (base 16) Alcatel-Lucent IPD + 701 E. Middlefield Rd. + Mountain View CA 94043 + UNITED STATES + +00-1C-8F (hex) Advanced Electronic Design, Inc. +001C8F (base 16) Advanced Electronic Design, Inc. + 344 John L Dietsch Blvd., Unit #2 + North Attleboro MA 02763 + UNITED STATES + +00-1C-90 (hex) Empacket Corporation +001C90 (base 16) Empacket Corporation + Osaki KI bldg. + 1-19-10 Osaki + Shinagawa Tokyo 141-0032 + JAPAN + +00-1C-91 (hex) Gefen Inc. +001C91 (base 16) Gefen Inc. + 6265 Variel Ave. + Woodland Hills CA 91367 + UNITED STATES + +00-1C-92 (hex) Tervela +001C92 (base 16) Tervela + 43 Nagog Park + Suite 201 + Acton MA 01720 + UNITED STATES + +00-1C-93 (hex) ExaDigm Inc +001C93 (base 16) ExaDigm Inc + 2871 Pullman St + Santa Ana CA 92705 + UNITED STATES + +00-1C-94 (hex) LI-COR Biosciences +001C94 (base 16) LI-COR Biosciences + 4647 Superior Street + Lincoln NE 68504 + UNITED STATES + +00-1C-95 (hex) Opticomm Corporation +001C95 (base 16) Opticomm Corporation + 6827 Nancy Ridge Dr + San Diego CA 92121 + UNITED STATES + +00-1C-96 (hex) Linkwise Technology Pte Ltd +001C96 (base 16) Linkwise Technology Pte Ltd + Blk 3, Ang Mo Kio Industrial Park 2A + #06-03. AMK Tech I + 568050 + SINGAPORE + +00-1C-97 (hex) Enzytek Technology Inc., +001C97 (base 16) Enzytek Technology Inc., + 7F, No.35, Hsueh Fu Rd., + Hsinchu 300, + TAIWAN, REPUBLIC OF CHINA + +00-1C-98 (hex) LUCKY TECHNOLOGY (HK) COMPANY LIMITED +001C98 (base 16) LUCKY TECHNOLOGY (HK) COMPANY LIMITED + FLAT/RM 1503 15/F ISLAND BEVERLEY NO 1 GREAT GEORGE STREET CAUSEWAY BAY + 999077 + HONG KONG + +00-1C-99 (hex) Shunra Software Ltd. +001C99 (base 16) Shunra Software Ltd. + 20 Hata'as St. + Kefar-Saba 44425 + ISRAEL + +00-1C-9A (hex) Nokia Danmark A/S +001C9A (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1C-9B (hex) FEIG ELECTRONIC GmbH +001C9B (base 16) FEIG ELECTRONIC GmbH + Lange Straße 4 + Weilburg Hessen 35781 + GERMANY + +00-1C-9C (hex) Nortel +001C9C (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1C-9D (hex) Liecthi AG +001C9D (base 16) Liecthi AG + 10 Unterholz Street + Kriegstetten Solothurn 4566 + SWITZERLAND + +00-1C-9E (hex) Dualtech IT AB +001C9E (base 16) Dualtech IT AB + Banehagsgatan 1F + GOTHENBURG Västra Götaland 41451 + SWEDEN + +00-1C-9F (hex) Razorstream, LLC +001C9F (base 16) Razorstream, LLC + 2381-C Renaissance Drive + Las Vegas NV 89119 + UNITED STATES + +00-1C-A0 (hex) Production Resource Group, LLC +001CA0 (base 16) Production Resource Group, LLC + 539 Temple Hill Road + New Windsor NY 12553 + UNITED STATES + +00-1C-A1 (hex) PRIVATE +001CA1 (base 16) + +00-1C-A2 (hex) PIRELLI BROADBAND SOLUTIONS +001CA2 (base 16) PIRELLI BROADBAND SOLUTIONS + VIALE SARCA 222 + MILANO 20126 + ITALY + +00-1C-A3 (hex) Terra +001CA3 (base 16) Terra + Draugystes str. 22 + Kaunas LT-51256 + LITHUANIA + +00-1C-A4 (hex) Sony Ericsson Mobile Communications +001CA4 (base 16) Sony Ericsson Mobile Communications + Nya Vattentornet + Lund Skåne 22188 + SWEDEN + +00-1C-A5 (hex) Zygo Corporation +001CA5 (base 16) Zygo Corporation + 21 Laurel Brook Rd. + Middlefield CT 06455 + UNITED STATES + +00-1C-A6 (hex) Win4NET +001CA6 (base 16) Win4NET + 1301 KOLON Digital Tower, + 222-7 Kuro-dong + Kuro-gu Seoul 152-848 + KOREA, REPUBLIC OF + +00-1C-A7 (hex) International Quartz Limited +001CA7 (base 16) International Quartz Limited + 2nd Floor, 2, Dai Wang Street, + Tai Po Industrial Estate, Tai Po, N.T. + Hong Kong 852 + CHINA + +00-1C-A8 (hex) AirTies Wireless Networks +001CA8 (base 16) AirTies Wireless Networks + Buyukdere Cad No 103 Kat 5 + Mecidiyekoy, Istanbul 34460 + TURKEY + +00-1C-A9 (hex) Audiomatica Srl +001CA9 (base 16) Audiomatica Srl + Via Manfredi 12 + Florence Italy 50136 + ITALY + +00-1C-AA (hex) Bellon Pty Ltd +001CAA (base 16) Bellon Pty Ltd + Unit 12/12-18 Victoria St East + Lidcombe NSW 2000 + AUSTRALIA + +00-1C-AB (hex) Meyer Sound Laboratories, Inc. +001CAB (base 16) Meyer Sound Laboratories, Inc. + 2832 San Pablo Ave. + Berkeley CA 94702 + UNITED STATES + +00-1C-AC (hex) Qniq Technology Corp. +001CAC (base 16) Qniq Technology Corp. + 5F, No.133, Sec.4, Minsheng E. Rd., + Songshan District, + Taipei 105 + TAIWAN, REPUBLIC OF CHINA + +00-1C-AD (hex) Wuhan Telecommunication Devices Co.,Ltd +001CAD (base 16) Wuhan Telecommunication Devices Co.,Ltd + 88 Youkeyuan Road,Hongshan District + Wuhan Hubei 430074 + CHINA + +00-1C-AE (hex) WiChorus, Inc. +001CAE (base 16) WiChorus, Inc. + 3590 N 1st Street, Suite 300 + San Jose CA 95134 + UNITED STATES + +00-1C-AF (hex) Plato Networks Inc. +001CAF (base 16) Plato Networks Inc. + 2855 Kifer Road + Suite 204 + Santa Clara CA 95051 + UNITED STATES + +00-1C-B0 (hex) Cisco Systems +001CB0 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1C-B1 (hex) Cisco Systems +001CB1 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1C-B2 (hex) BPT SPA +001CB2 (base 16) BPT SPA + Via Stazione,48 + Sesto al Reghena Pordenone 33079 + ITALY + +00-1C-B3 (hex) APPLE, INC +001CB3 (base 16) APPLE, INC + 1 INFINITE LOOP + CUPERTINO CALIFORNIA 95014 + UNITED STATES + +00-1C-B4 (hex) PRIVATE +001CB4 (base 16) + +00-1C-B5 (hex) Neihua Network Technology Co.,LTD.(NHN) +001CB5 (base 16) Neihua Network Technology Co.,LTD.(NHN) + Plot Xinmei Road 102-Q,New District + WuXi Jiangsu 214028 + CHINA + +00-1C-B6 (hex) Duzon CNT Co., Ltd. +001CB6 (base 16) Duzon CNT Co., Ltd. + 14th Floor, IRE building 2 + Yangpyung-dong 4ga, Youngdungpo-gu + Seoul 150-967 + KOREA, REPUBLIC OF + +00-1C-B7 (hex) USC DigiArk Corporation +001CB7 (base 16) USC DigiArk Corporation + 6F Tennoz Central Tower 2-2-24 Higashishinagawa + Tokyo Shinagawa-ku 140-0002 + JAPAN + +00-1C-B8 (hex) CBC Co., Ltd +001CB8 (base 16) CBC Co., Ltd + 2-15-13, Tsukishima, Chuo-ku + Tokyo 104-0052 + JAPAN + +00-1C-B9 (hex) KWANG SUNG ELECTRONICS CO., LTD. +001CB9 (base 16) KWANG SUNG ELECTRONICS CO., LTD. + 201, WORLD VENTURE TOWN 60-24, GASAN-DONG GEUMCHUN-GU, + SEOUL 153-801 + KOREA, DEMOCRATIC PEOPLE'S REPUBLI + +00-1C-BA (hex) VerScient, Inc. +001CBA (base 16) VerScient, Inc. + 7700 Equitable Drive + Suite 100 + Eden Prairie MN 55344 + UNITED STATES + +00-1C-BB (hex) MusicianLink +001CBB (base 16) MusicianLink + 2401 Cory Ave. + San Jose CA 95128 + UNITED STATES + +00-1C-BC (hex) CastGrabber, LLC +001CBC (base 16) CastGrabber, LLC + 6507 Wilkins Avenue + Pittsburgh PA 15217 + UNITED STATES + +00-1C-BD (hex) Ezze Mobile Tech., Inc. +001CBD (base 16) Ezze Mobile Tech., Inc. + 3F, Bubmusa Bldg., 151-31 + Nonhyun-dong, Kangnam-ku + Seoul 135-824 + KOREA, REPUBLIC OF + +00-1C-BE (hex) Nintendo Co., Ltd. +001CBE (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO KYOTO 601-8501 + JAPAN + +00-1C-BF (hex) Intel Corporate +001CBF (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1C-C0 (hex) Intel Corporate +001CC0 (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1C-C1 (hex) Motorola Mobile Devices +001CC1 (base 16) Motorola Mobile Devices + 600 N. US 45 + Libertyville Illinois 60048 + UNITED STATES + +00-1C-C2 (hex) Part II Research, Inc. +001CC2 (base 16) Part II Research, Inc. + 4601 E. Airport Dr. + Ontario CA 91761 + UNITED STATES + +00-1C-C3 (hex) Pace Micro Technology plc +001CC3 (base 16) Pace Micro Technology plc + Salts Mill + Victoria Road + Bradford West Yorkshire BD18 3LF + UNITED KINGDOM + +00-1C-C4 (hex) Hewlett Packard +001CC4 (base 16) Hewlett Packard + 20555 State Highway 249 + ms040801 + Houston TX 77070 + UNITED STATES + +00-1C-C5 (hex) 3COM LTD +001CC5 (base 16) 3COM LTD + 3Com Europe Ltd, Peoplebuilding 2 + Peoplebuilding Estate, Maylands Avenue + Hemel Hempstead Herts HP2 4NW + UNITED KINGDOM + +00-1C-C6 (hex) ProStor Systems +001CC6 (base 16) ProStor Systems + 5555 Central Avenue + Suite 100 + Boulder Colorado 80301 + UNITED STATES + +00-1C-C7 (hex) Rembrandt Technologies, LLC d/b/a REMSTREAM +001CC7 (base 16) Rembrandt Technologies, LLC d/b/a REMSTREAM + 140 South Beverly Drive + Suite 203 + Beverly Hills CA 90212 + UNITED STATES + +00-1C-C8 (hex) INDUSTRONIC Industrie-Electronic GmbH & Co. KG +001CC8 (base 16) INDUSTRONIC Industrie-Electronic GmbH & Co. KG + Carl-Jacob-Kolb-Weg 1 + Wertheim Baden-Wuerttemberg 97877 + GERMANY + +00-1C-C9 (hex) Kaise Electronic Technology Co., Ltd. +001CC9 (base 16) Kaise Electronic Technology Co., Ltd. + No.678, Wunsyue Rd., Zuoying District, + Kaohsiung 813 + TAIWAN, REPUBLIC OF CHINA + +00-1C-CA (hex) Shanghai Gaozhi Science & Technology Development Co. +001CCA (base 16) Shanghai Gaozhi Science & Technology Development Co. + No.283 Qin Jiang Rd. Shanghai,China + Shanghai 200233 + CHINA + +00-1C-CB (hex) Forth Corporation Public Company Limited +001CCB (base 16) Forth Corporation Public Company Limited + 226/12,13,16 Paholyothin Road + Samsennai, Payathai + Bangkok 10400 + THAILAND + +00-1C-CC (hex) Research In Motion Limited +001CCC (base 16) Research In Motion Limited + 305 Phillip Street + Waterloo Ontario N2L 3W8 + CANADA + +00-1C-CD (hex) Alektrona Corporation +001CCD (base 16) Alektrona Corporation + 95 Hathaway Street, Suite 10 + Providence RI 02907 + UNITED STATES + +00-1C-CE (hex) By Techdesign +001CCE (base 16) By Techdesign + C/ Marques de Ahumada 11 + Madrid 28028 + SPAIN + +00-1C-CF (hex) LIMETEK +001CCF (base 16) LIMETEK + #213-1, Byucksan Digital Valley II, 480-10, Gasan-dong, + Geumchen-gu + Seoul 153-783 + KOREA, REPUBLIC OF + +00-1C-D0 (hex) Circleone Co.,Ltd. +001CD0 (base 16) Circleone Co.,Ltd. + 860-1,Noda + Beppu-shi Ooita-ken 874-0016 + JAPAN + +00-1C-D1 (hex) Waves Audio LTD +001CD1 (base 16) Waves Audio LTD + Azrilei Center 3, Triangle tower + 32nd floor + Tel Aviv Central 67023 + ISRAEL + +00-1C-D2 (hex) King Champion (Hong Kong) Limited +001CD2 (base 16) King Champion (Hong Kong) Limited + Unit 1520, 15/F, Phase 1, Metro Centre, + 32 Lam Hing Street, Kowloon Bay, + Kowloon + HONG KONG + +00-1C-D3 (hex) ZP Engineering SEL +001CD3 (base 16) ZP Engineering SEL + via Ardito Desio, 60 + Tecnopolo Tiburtino + ROME 00131 + ITALY + +00-1C-D4 (hex) Nokia Danmark A/S +001CD4 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1C-D5 (hex) Zazzle Technologies, Inc. +001CD5 (base 16) Zazzle Technologies, Inc. + 238 Littleton Road + Suite 200 + Westford MA 01886 + UNITED STATES + +00-1C-D6 (hex) Nokia Danmark A/S +001CD6 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1C-D7 (hex) Harman/Becker Automotive Systems GmbH +001CD7 (base 16) Harman/Becker Automotive Systems GmbH + Becker-Göring-Str. 16 + Karlsbad Baden - Württemberg 76307 + GERMANY + +00-1C-D8 (hex) BlueAnt Wireless +001CD8 (base 16) BlueAnt Wireless + 245 St.Kilda Rd, St Kilda + Melbourne Victoria 3182 + AUSTRALIA + +00-1C-D9 (hex) GlobalTop Technology Inc. +001CD9 (base 16) GlobalTop Technology Inc. + 16 Nan-ke 9th Rd. Science-base Industrial Park, + ShanHua Tainan county 741 + TAIWAN, REPUBLIC OF CHINA + +00-1C-DA (hex) Exegin Technologies Limited +001CDA (base 16) Exegin Technologies Limited + 204 - 2071 Kingsway Avenue + Port Coquitlam BC V3C 6N2 + CANADA + +00-1C-DB (hex) CARPOINT CO.,LTD +001CDB (base 16) CARPOINT CO.,LTD + 1340-6, Namgang Bld 7F, Seocho-Dong + Seocho-Ku, + SEOUL 137-070 + KOREA, REPUBLIC OF + +00-1C-DC (hex) Custom Computer Services, Inc. +001CDC (base 16) Custom Computer Services, Inc. + 1020 Spring City Drive + Waukesha WI 53186 + UNITED STATES + +00-1C-DD (hex) COWBELL ENGINEERING CO., LTD. +001CDD (base 16) COWBELL ENGINEERING CO., LTD. + 1739-1 Nagatoro + SAKU Nagano 385-0021 + JAPAN + +00-1C-DE (hex) Interactive Multimedia eXchange Inc. +001CDE (base 16) Interactive Multimedia eXchange Inc. + NO. 165 Wenlin Road. + Taipei Taiwan 111 + TAIWAN, REPUBLIC OF CHINA + +00-1C-DF (hex) Belkin International Inc. +001CDF (base 16) Belkin International Inc. + 501 W. Walnut St. + Compton Ca 90220 + UNITED STATES + +00-1C-E0 (hex) DASAN TPS +001CE0 (base 16) DASAN TPS + HUMAX Village 6F, 11-4 Sunae-dong, Bundang-gu + Seongnam-si Gyeonggi-do 463-825 + KOREA, REPUBLIC OF + +00-1C-E1 (hex) INDRA SISTEMAS, S.A. +001CE1 (base 16) INDRA SISTEMAS, S.A. + Ctra. de Loeches, n.º 9 + TORREJÓN DE ARDOZ MADRID 28850 + SPAIN + +00-1C-E2 (hex) Attero Tech, LLC. +001CE2 (base 16) Attero Tech, LLC. + 1315 Directors Row - Suite 107 + Fort Wayne Indiana 46808 + UNITED STATES + +00-1C-E3 (hex) Optimedical Systems +001CE3 (base 16) Optimedical Systems + 235 Hembree Park Drive + Roswell GA 30076 + UNITED STATES + +00-1C-E4 (hex) EleSy JSC +001CE4 (base 16) EleSy JSC + Altayskaya street, 161a + Tomsk oblast 634021 + RUSSIAN FEDERATION + +00-1C-E5 (hex) MBS Electronic Systems GmbH +001CE5 (base 16) MBS Electronic Systems GmbH + Ringstrasse 3 + 82319 Starnberg Bavaria 82319 + GERMANY + +00-1C-E6 (hex) INNES +001CE6 (base 16) INNES + 80 avenue des Buttes de Coësmes + RENNES 35700 + FRANCE + +00-1C-E7 (hex) Rocon PLC Research Centre +001CE7 (base 16) Rocon PLC Research Centre + 21 Vek 56A str. + Sofia 1700 + BULGARIA + +00-1C-E8 (hex) Cummins Inc +001CE8 (base 16) Cummins Inc + 1400 73rd Ave NE + Fridley MN 55432 + UNITED STATES + +00-1C-E9 (hex) Galaxy Technology Limited +001CE9 (base 16) Galaxy Technology Limited + 9/F Win Full Commerical Building, 172-176 Wing Lok Street, + Sheung Wan, + HONG KONG + +00-1C-EA (hex) Scientific-Atlanta, Inc +001CEA (base 16) Scientific-Atlanta, Inc + 5030 Sugarloaf Pkwy + ATL 2.T.603 + Lawrenceville GA 30044 + UNITED STATES + +00-1C-EB (hex) Nortel +001CEB (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1C-EC (hex) Mobilesoft (Aust.) Pty Ltd +001CEC (base 16) Mobilesoft (Aust.) Pty Ltd + Suite 2, 27-35 Grosvenor Street + Neutral Bay + Sydney NSW 2089 + AUSTRALIA + +00-1C-ED (hex) ENVIRONNEMENT SA +001CED (base 16) ENVIRONNEMENT SA + 111 bd. Robespierre + POISSY Yvelines 78300 + FRANCE + +00-1C-EE (hex) SHARP Corporation +001CEE (base 16) SHARP Corporation + 22-22,Nagaike-cho,Abeno-ku + Osaka 545-8522 + JAPAN + +00-1C-EF (hex) Primax Electronics LTD +001CEF (base 16) Primax Electronics LTD + 669, Ruey Kuang Road, Neihu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1C-F0 (hex) D-Link Corporation +001CF0 (base 16) D-Link Corporation + NO.289, Sinhu 3rd Rd., + Neihu District, Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1C-F1 (hex) SUPoX Technology Co. , LTD. +001CF1 (base 16) SUPoX Technology Co. , LTD. + 7F, 419 , Chung San Rd. , Sec 2 + Chung Ho Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-1C-F2 (hex) Tenlon Technology Co.,Ltd. +001CF2 (base 16) Tenlon Technology Co.,Ltd. + 4/F.,Shenhua Bldg,No.3155,Binhe Road,Futian District + Shenzhen Guangdong 518033 + CHINA + +00-1C-F3 (hex) EVS BROADCAST EQUIPMENT +001CF3 (base 16) EVS BROADCAST EQUIPMENT + Liege Science Park + rue Bois St Jean 16 + Ougree Liege 4102 + BELGIUM + +00-1C-F4 (hex) Media Technology Systems Inc +001CF4 (base 16) Media Technology Systems Inc + 766 Lakefield Road + Unit F + Westlake Village CA 91377 + UNITED STATES + +00-1C-F5 (hex) Wiseblue Technology Limited +001CF5 (base 16) Wiseblue Technology Limited + Rm G5, 5/F, Kingsford Industrial Building Phase II, 26-32 Kwai Hei Street, + Kwai Chung N.T. + HONG KONG + +00-1C-F6 (hex) Cisco Systems +001CF6 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1C-F7 (hex) AudioScience +001CF7 (base 16) AudioScience + 729 west 16th st + Suite C2 + Costa Mesa California 92627 + UNITED STATES + +00-1C-F8 (hex) Parade Technologies, Ltd. +001CF8 (base 16) Parade Technologies, Ltd. + C/O Parade Technologies, Inc. + 530 Lakeside Dr. Suite 230 + Sunnyvale CA 94085 + UNITED STATES + +00-1C-F9 (hex) Cisco Systems +001CF9 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1C-FA (hex) PRIVATE +001CFA (base 16) + +00-1C-FB (hex) Motorola CHS +001CFB (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-1C-FC (hex) Suminet Communication Technologies (Shanghai) Co., Ltd. +001CFC (base 16) Suminet Communication Technologies (Shanghai) Co., Ltd. + 4F, 3Bld. 647 Long, SongTao Road, ZhangJiang Hi-Tech Park + Shanghai 201203 + CHINA + +00-1C-FD (hex) Universal Electronics +001CFD (base 16) Universal Electronics + 6101 Gateway Drive + Cypress California 90630 + UNITED STATES + +00-1C-FE (hex) Quartics Inc +001CFE (base 16) Quartics Inc + 15241 Laguna Canyon Road + Ste 200 + Irvine CA 92618 + UNITED STATES + +00-1C-FF (hex) Altus Networks +001CFF (base 16) Altus Networks + 7683 SE 27th + Suite 120 + Mercer Island WA 98040 + UNITED STATES + +00-1D-00 (hex) Brivo Systems, LLC +001D00 (base 16) Brivo Systems, LLC + 4330 East West Highway + Suite 250 + Bethesda MD 20814 + UNITED STATES + +00-1D-01 (hex) Neptune Digital +001D01 (base 16) Neptune Digital + Mednarodni mejni prehod 6 + Vrtojba Nova Gorica 5290 + SLOVENIA + +00-1D-02 (hex) Cybertech Telecom Development +001D02 (base 16) Cybertech Telecom Development + Hazenkoog 25 + Alkmaar Noord Holland 1822 BS + NETHERLANDS + +00-1D-03 (hex) Design Solutions Inc. +001D03 (base 16) Design Solutions Inc. + 81 David Love Place + Goleta Ca 93117 + UNITED STATES + +00-1D-04 (hex) Zipit Wireless, Inc. +001D04 (base 16) Zipit Wireless, Inc. + 49 Salters Road. + Suite 6 + Greenville SC 29607 + UNITED STATES + +00-1D-05 (hex) iLight +001D05 (base 16) iLight + Unit 4 Enterprise Centre + Rogues Hill + Penshurst Kent TN11 8BG + UNITED KINGDOM + +00-1D-06 (hex) HM Electronics, Inc. +001D06 (base 16) HM Electronics, Inc. + 14110 Stowe Drive + Poway CA 92064 + UNITED STATES + +00-1D-07 (hex) Shenzhen Sang Fei Consumer Communications Co.,Ltd +001D07 (base 16) Shenzhen Sang Fei Consumer Communications Co.,Ltd + 11 Science and Technology Road, + Science and Technology Industrial Park Nanshan District, + Shenzhen Guangdong 518057 + CHINA + +00-1D-08 (hex) JIANGSU YINHE ELECTRONICS CO., LTD +001D08 (base 16) JIANGSU YINHE ELECTRONICS CO., LTD + 188 NANHUAN ROAD + TANGQIAO + ZHANGJIAGANG JIANGSU 215611 + CHINA + +00-1D-09 (hex) Dell Inc +001D09 (base 16) Dell Inc + One Dell Way, MS RR5-45 + Round Rock Texas 78682 + UNITED STATES + +00-1D-0A (hex) Davis Instruments, Inc. +001D0A (base 16) Davis Instruments, Inc. + 3465 Diablo Ave. + Hayward CA 94545 + UNITED STATES + +00-1D-0B (hex) Power Standards Lab +001D0B (base 16) Power Standards Lab + 1201 Marina Village Parkway #101 + Alameda CA 94501 + UNITED STATES + +00-1D-0C (hex) MobileCompia +001D0C (base 16) MobileCompia + Dongwon Bldg, 725-30, Yeoksam-dong, Gangnam-gu, + Seoul 135-080 + KOREA, REPUBLIC OF + +00-1D-0D (hex) Sony Computer Entertainment inc. +001D0D (base 16) Sony Computer Entertainment inc. + 6-21,2Chome + Minami-Aoyama + Minato-Ku Tokyo 107-0062 + JAPAN + +00-1D-0E (hex) Agapha Technology co., Ltd. +001D0E (base 16) Agapha Technology co., Ltd. + 9F No.121, Shingde Rd., + Sanchung City Taipei County 241 + TAIWAN, REPUBLIC OF CHINA + +00-1D-0F (hex) TP-LINK Technologies Co., Ltd. +001D0F (base 16) TP-LINK Technologies Co., Ltd. + 3/F, Bldg. R1-B, + Hi-tech Industrial Park, Shennan Rd., + Shenzhen Guangdong 518057 + CHINA + +00-1D-10 (hex) LightHaus Logic, Inc. +001D10 (base 16) LightHaus Logic, Inc. + 126-1020 Mainland Street + Vancouver BC V6B 2T4 + CANADA + +00-1D-11 (hex) Analogue & Micro Ltd +001D11 (base 16) Analogue & Micro Ltd + Lakeside House + Lakeside + Llantarnam Industrial Park Cwmbran NP44 3XS + UNITED KINGDOM + +00-1D-12 (hex) ROHM CO., LTD. +001D12 (base 16) ROHM CO., LTD. + 21 Saiin-Mizosaki-cho, + Ukyo-ku, + Kyoto-shi KYOTO 615-8585 + JAPAN + +00-1D-13 (hex) NextGTV +001D13 (base 16) NextGTV + 13F Byucksan/Kyungin Digital Valley ll + Gasan-dong, Geumcheon-gu + Seoul 153-803 + KOREA, REPUBLIC OF + +00-1D-14 (hex) SPERADTONE INFORMATION TECHNOLOGY LIMITED +001D14 (base 16) SPERADTONE INFORMATION TECHNOLOGY LIMITED + Room 1001 NO.418 Gui Ping Road, + Shanghai 200233 + CHINA + +00-1D-15 (hex) Shenzhen Dolphin Electronic Co., Ltd +001D15 (base 16) Shenzhen Dolphin Electronic Co., Ltd + Building21,Baoyuan, No.1 Industrial Zone, + Xixiang, Baoan District, + Shenzhen Guangdong 518103 + CHINA + +00-1D-16 (hex) Efixo +001D16 (base 16) Efixo + 5 avenue de Saint Menet + Immeuble Axiome, Bât B + MARSEILLE PACA 13011 + FRANCE + +00-1D-17 (hex) Digital Sky Corporation +001D17 (base 16) Digital Sky Corporation + 5-5-15 Sotokanda, + Chiyoda-ku Tokyo 101-0021 + JAPAN + +00-1D-18 (hex) Power Innovation GmbH +001D18 (base 16) Power Innovation GmbH + Rehland 2 + Achim Niedersachsen 28832 + GERMANY + +00-1D-19 (hex) Arcadyan Technology Corporation +001D19 (base 16) Arcadyan Technology Corporation + 4F., No. 9 , Park Avenue II, + Science-based Industrial Park, + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1D-1A (hex) OvisLink S.A. +001D1A (base 16) OvisLink S.A. + C/Andres Obispo, 37. Pl. 4. + Madrid 28043 + SPAIN + +00-1D-1B (hex) Sangean Electronics Inc. +001D1B (base 16) Sangean Electronics Inc. + No. 18, Lane 7, Li-De street + Chung Ho City Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-1D-1C (hex) Gennet s.a. +001D1C (base 16) Gennet s.a. + 2 Mesogeion ave. + Pirgos Athinon + Athens Attiki 11527 + GREECE + +00-1D-1D (hex) Inter-M Corporation +001D1D (base 16) Inter-M Corporation + 653-5 Banghak-Dong, Dobong-Ku + Seoul 132-846 + KOREA, REPUBLIC OF + +00-1D-1E (hex) KYUSHU TEN CO.,LTD +001D1E (base 16) KYUSHU TEN CO.,LTD + 2360 YUNOKIMOTOMACHI + SASEBO-City NAGASAKI Prefecture 857-0115 + JAPAN + +00-1D-1F (hex) Siauliu Tauro Televizoriai, JSC +001D1F (base 16) Siauliu Tauro Televizoriai, JSC + Pramones,15 + Siauliai LT-57318 + LITHUANIA + +00-1D-20 (hex) COMTREND CO. +001D20 (base 16) COMTREND CO. + 3F-1 10 LANE 609 CHUNG HSIN ROAD, SEC 5, SAN CHUNG CITY, TAIPEI TAIWAN 241 + TAIPEI 241 + TAIWAN, REPUBLIC OF CHINA + +00-1D-21 (hex) Alcad S.A. +001D21 (base 16) Alcad S.A. + Pol. Ind. Arreche-Ugalde, 1 + Irún Guipúzcoa E-20305 + SPAIN + +00-1D-22 (hex) Foss Analytical A/S +001D22 (base 16) Foss Analytical A/S + Slangerupgade 69 + Hillerød Seeland 3400 + DENMARK + +00-1D-23 (hex) SENSUS METERING SYSTEMS +001D23 (base 16) SENSUS METERING SYSTEMS + 44 CASTILIAN DRIVE + GOLETA CALIFORNIA 93117 + UNITED STATES + +00-1D-24 (hex) DCSI +001D24 (base 16) DCSI + 945 Hornet Drive + Hazelwood MO 63042 + UNITED STATES + +00-1D-25 (hex) Samsung Electronics Co.,Ltd +001D25 (base 16) Samsung Electronics Co.,Ltd + #94-1, Imsoo-Dong + Gumi Gyeongbuk 730-350 + KOREA, REPUBLIC OF + +00-1D-26 (hex) Rockridgesound Technology Co. +001D26 (base 16) Rockridgesound Technology Co. + Fumin Industrial Park, Houjie Town + Dong Guan Guang Dong 523956 + CHINA + +00-1D-27 (hex) NAC-INTERCOM +001D27 (base 16) NAC-INTERCOM + C. QUINTELA, 27 PORTAL 4 LOCAL + VIGO PONTEVEDRA 36209 + SPAIN + +00-1D-28 (hex) Sony Ericsson Mobile Communications AB +001D28 (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund SE 221 88 + SWEDEN + +00-1D-29 (hex) Doro AB +001D29 (base 16) Doro AB + Magistratsvägen 10 + Lund 226 43 + SWEDEN + +00-1D-2A (hex) Tideway Electronic LTD +001D2A (base 16) Tideway Electronic LTD + ZhiJi Industrial Area ,JinYe Road + B4 Dong. kuiyong Town + shengzhen longgang guangdong 518119 + CHINA + +00-1D-2B (hex) Wuhan Pont Technology CO. , LTD +001D2B (base 16) Wuhan Pont Technology CO. , LTD + Building E, Guandong Science and Technology Industry Park, + East Lake High Technology Development Zone, + Wuhan Hubei 430074 + CHINA + +00-1D-2C (hex) Wavetrend Technologies (Pty) Limited +001D2C (base 16) Wavetrend Technologies (Pty) Limited + Wavetrend House, Building 816/3 + Hammets Crossing Office Park,Selbourne road, fourways + Gauteng 2021 + SOUTH AFRICA + +00-1D-2D (hex) Pylone, Inc. +001D2D (base 16) Pylone, Inc. + 22F, 1-12-1 Dogenzaka + Shibuya-ku Tokyo 150-0043 + JAPAN + +00-1D-2E (hex) Ruckus Wireless +001D2E (base 16) Ruckus Wireless + 880 West Maude Ave. + Suite 101 + Sunnyvale CA 94085 + UNITED STATES + +00-1D-2F (hex) QuantumVision Corporation +001D2F (base 16) QuantumVision Corporation + 335 Plantation Way + Roswell Ga 30075 + UNITED STATES + +00-1D-30 (hex) YX Wireless S.A. +001D30 (base 16) YX Wireless S.A. + Av. Vicuña Mackenna #4860 + Edificio 512, piso 3. Macul + Santiago 8580710 + CHILE + +00-1D-31 (hex) HIGHPRO INTERNATIONAL R&D CO,.LTD. +001D31 (base 16) HIGHPRO INTERNATIONAL R&D CO,.LTD. + 3F,No.295,RuiGuang Rd,Nei Hu, + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1D-32 (hex) Longkay Communication & Technology (Shanghai) Co. Ltd +001D32 (base 16) Longkay Communication & Technology (Shanghai) Co. Ltd + No.5 Building, Unit 2, Lane 299 Bisheng Rd, + Shanghai 201204 + CHINA + +00-1D-33 (hex) Maverick Systems Inc. +001D33 (base 16) Maverick Systems Inc. + 908, Daerungposttower 2-cha, 182-13 + Guro-dong, Guro-gu + Seoul 152-790 + KOREA, REPUBLIC OF + +00-1D-34 (hex) SYRIS Technology Corp +001D34 (base 16) SYRIS Technology Corp + 21 F-2, NO. 12, SEC. 1, Taijunggang Rd. + Taichung 403 + TAIWAN, REPUBLIC OF CHINA + +00-1D-35 (hex) Viconics Electronics Inc. +001D35 (base 16) Viconics Electronics Inc. + 9245 Langelier + Saint Leonard Quebec H1P3K9 + CANADA + +00-1D-36 (hex) ELECTRONICS CORPORATION OF INDIA LIMITED +001D36 (base 16) ELECTRONICS CORPORATION OF INDIA LIMITED + CONTROL AND AUTOMATION DIVISION-3 + ECIL POST + HYDERABAD ANDHRA PRADESH 500 062 + INDIA + +00-1D-37 (hex) Thales-Panda Transportation System +001D37 (base 16) Thales-Panda Transportation System + 6th floor, HUIJIE Plaza, 268 Zhongshan Rd. + nanjing jiangsu 210008 + CHINA + +00-1D-38 (hex) Seagate Technology +001D38 (base 16) Seagate Technology + 1280 Disc Drive + Shakopee MN 55379 + UNITED STATES + +00-1D-39 (hex) MOOHADIGITAL CO., LTD +001D39 (base 16) MOOHADIGITAL CO., LTD + Seoul Hightech Venture Center C-307 647-26 + Deungchon-Dong Gangseo-Gu + SEOUL 157-030 + KOREA, REPUBLIC OF + +00-1D-3A (hex) mh acoustics LLC +001D3A (base 16) mh acoustics LLC + 25A Summit Ave + Summit NJ 07901 + UNITED STATES + +00-1D-3B (hex) Nokia Danmark A/S +001D3B (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1D-3C (hex) Muscle Corporation +001D3C (base 16) Muscle Corporation + 2-5-35, Kikawa-higashi + Osaka 532-0012 + JAPAN + +00-1D-3D (hex) Avidyne Corporation +001D3D (base 16) Avidyne Corporation + 202 West Dr + Melbourne FL 32904 + UNITED STATES + +00-1D-3E (hex) SAKA TECHNO SCIENCE CO.,LTD +001D3E (base 16) SAKA TECHNO SCIENCE CO.,LTD + Nishi 105-1 + Kitazuka-machi + Kanazawa Ishikawa 920-0367 + JAPAN + +00-1D-3F (hex) Mitron Pty Ltd +001D3F (base 16) Mitron Pty Ltd + Unit 11 + 12-18 Clarendon Street + Artarmon NSW 2065 + AUSTRALIA + +00-1D-40 (hex) Living Independently Group, Inc. +001D40 (base 16) Living Independently Group, Inc. + 767 Third Ave, 14th Floor + New York NY 10017 + UNITED STATES + +00-1D-41 (hex) Hardy Instruments +001D41 (base 16) Hardy Instruments + 3860 Calle Fortunada + San Diego CA 92123 + UNITED STATES + +00-1D-42 (hex) Nortel +001D42 (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1D-43 (hex) Shenzhen G-link Digital Technology Co., Ltd. +001D43 (base 16) Shenzhen G-link Digital Technology Co., Ltd. + 4F, E Building,Huachuang Da Technology Zone ,Hangcheng Highway,Gushu,Xixiang , + shenzhen GuangDong 518126 + CHINA + +00-1D-44 (hex) Krohne +001D44 (base 16) Krohne + Kerkeplaat 12 + Dordrecht ZH 3313 LC + NETHERLANDS + +00-1D-45 (hex) Cisco Systems +001D45 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1D-46 (hex) Cisco Systems +001D46 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1D-47 (hex) Covote GmbH & Co KG +001D47 (base 16) Covote GmbH & Co KG + Ritterhufen 30 + Berlin 14165 + GERMANY + +00-1D-48 (hex) Sensor-Technik Wiedemann GmbH +001D48 (base 16) Sensor-Technik Wiedemann GmbH + Am Bärenwald 6 + Kaufbeuren Bayern 87600 + GERMANY + +00-1D-49 (hex) Innovation Wireless Inc. +001D49 (base 16) Innovation Wireless Inc. + 4F-1, NO.81, SHUEILI RD. + HSINCHU 30059 + TAIWAN, REPUBLIC OF CHINA + +00-1D-4A (hex) Carestream Health, Inc. +001D4A (base 16) Carestream Health, Inc. + 150 Verona Street + Rochestser NY 14608 + UNITED STATES + +00-1D-4B (hex) Grid Connect Inc. +001D4B (base 16) Grid Connect Inc. + 1630 W. Diehl Rd + Naperville IL 60563 + UNITED STATES + +00-1D-4C (hex) Alcatel-Lucent +001D4C (base 16) Alcatel-Lucent + 601 Data Drive + M/S 320 + Plano TX 75075 + UNITED STATES + +00-1D-4D (hex) Adaptive Recognition Hungary, Inc +001D4D (base 16) Adaptive Recognition Hungary, Inc + Kiralyhago ter 8-9 + Budapest Europe 1126 + HUNGARY + +00-1D-4E (hex) TCM Mobile LLC +001D4E (base 16) TCM Mobile LLC + 11235 Mastin Street + Suite 201 + Overland Park Kansas 66210 + UNITED STATES + +00-1D-4F (hex) Apple Inc +001D4F (base 16) Apple Inc + 1 Infinite Loop + Cupertino California 95014 + UNITED STATES + +00-1D-50 (hex) SPINETIX SA +001D50 (base 16) SPINETIX SA + Parc Scientifique de l'EPFL, Bâtiment C + Lausanne VD 1015 + SWITZERLAND + +00-1D-51 (hex) GE Energy +001D51 (base 16) GE Energy + 11864 Canon Blvd, Suite 105 + Newport News VA 23606 + UNITED STATES + +00-1D-52 (hex) Defzone B.V. +001D52 (base 16) Defzone B.V. + Transportcentrum 10 + Enschede Overijssel 7547 RW + NETHERLANDS + +00-1D-53 (hex) SHARP-ROXY CORP.(M) SDN. BHD. +001D53 (base 16) SHARP-ROXY CORP.(M) SDN. BHD. + LOT 202, BAKAR ARANG + INDUSTRIAL ESTATE, + SUNGAI PETANI, KEDAH. 08000 + MALAYSIA + +00-1D-54 (hex) Sunnic Technology & Merchandise INC. +001D54 (base 16) Sunnic Technology & Merchandise INC. + 6F, NO.74,ZHOU-Z ST., + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1D-55 (hex) ZANTAZ, Inc +001D55 (base 16) ZANTAZ, Inc + 5758 W. Las Positas Avenue + Pleasanton CA 94588 + UNITED STATES + +00-1D-56 (hex) Kramer Electronics Ltd. +001D56 (base 16) Kramer Electronics Ltd. + 3 Am VeOlamo Street + Jerusalem 95463 + ISRAEL + +00-1D-57 (hex) CAETEC Messtechnik +001D57 (base 16) CAETEC Messtechnik + Schlossstrasse 95a + Olching Bayern 82140 + GERMANY + +00-1D-58 (hex) CQ Inc +001D58 (base 16) CQ Inc + 5F, No. 43, Lane 76, Rui Guang Road + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1D-59 (hex) CHEROKEE INTERNATIONAL +001D59 (base 16) CHEROKEE INTERNATIONAL + Boulevard de l'Europe 131 + Wavre 1301 + BELGIUM + +00-1D-5A (hex) 2Wire Inc. +001D5A (base 16) 2Wire Inc. + 1704 Automation Parkway + San Jose California 95131 + UNITED STATES + +00-1D-5B (hex) Tecvan Informatica Ltda +001D5B (base 16) Tecvan Informatica Ltda + Rua Guaicurus, 145 + Vila Conceicão + Diadema São Paulo 09911-630 + BRAZIL + +00-1D-5C (hex) Tom Communication Industrial Co.,Ltd. +001D5C (base 16) Tom Communication Industrial Co.,Ltd. + 1173 Nippa-choh Kohoku-ku + Yokohama Kanagawa 223-0057 + JAPAN + +00-1D-5D (hex) Control Dynamics Pty. Ltd. +001D5D (base 16) Control Dynamics Pty. Ltd. + PO Box 636 + MORLEY Western Australia 6943 + AUSTRALIA + +00-1D-5E (hex) COMING MEDIA CORP. +001D5E (base 16) COMING MEDIA CORP. + BONA Bld. 4th Fl., 548-18 + Dogok-1Dong, Kangnam-Ku, + Seoul 135-158 + KOREA, REPUBLIC OF + +00-1D-5F (hex) OverSpeed SARL +001D5F (base 16) OverSpeed SARL + 15, allee du Bois Cailley + Le Thuit-Signol Normandie 27370 + FRANCE + +00-1D-60 (hex) ASUSTek COMPUTER INC. +001D60 (base 16) ASUSTek COMPUTER INC. + 15,Li-Te Rd.,Peitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-1D-61 (hex) BIJ Corporation +001D61 (base 16) BIJ Corporation + 7F Takamizawa Building,2-7-10, + Kitasaiwai,Nishi + Yokohama Kanagawa 220-0004 + JAPAN + +00-1D-62 (hex) InPhase Technologies +001D62 (base 16) InPhase Technologies + 2000 Pike Road + Longmont Colorado 80501 + UNITED STATES + +00-1D-63 (hex) Miele & Cie. KG +001D63 (base 16) Miele & Cie. KG + Carl-Miele-Str. 29 + Gütersloh 33332 + GERMANY + +00-1D-64 (hex) Adam Communications Systems Int Ltd +001D64 (base 16) Adam Communications Systems Int Ltd + The Mission + Wellington Street + Stockport Cheshire SK1 3AH + UNITED KINGDOM + +00-1D-65 (hex) Microwave Radio Communications +001D65 (base 16) Microwave Radio Communications + 101 Billerica Avemue, Bldg 6 + N. Billerica MA 01862 + UNITED STATES + +00-1D-66 (hex) Hyundai Telecom +001D66 (base 16) Hyundai Telecom + Hyundai Telecom Bldg., 4273-12, Shingil-Dong, Youngdungpo-Gu, + Seoul 150-859 + KOREA, REPUBLIC OF + +00-1D-67 (hex) AMEC +001D67 (base 16) AMEC + 9F,No.360,Ruel Guang Rd,Neihu + Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1D-68 (hex) Thomson Telecom Belgium +001D68 (base 16) Thomson Telecom Belgium + Prins Boudewijnlaan 47 B + Edegem Antwerp B-2650 + BELGIUM + +00-1D-69 (hex) Knorr-Bremse AG +001D69 (base 16) Knorr-Bremse AG + Moosacher Str. 80 + Muenchen BY 80809 + GERMANY + +00-1D-6A (hex) Alpha Networks Inc. +001D6A (base 16) Alpha Networks Inc. + No.8 Li-shing Seventh Road,Science-based + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-1D-6B (hex) Motorola (formerly Netopia, Inc +001D6B (base 16) Motorola (formerly Netopia, Inc + 6001 Shellmound St + 4th Floor + Emeryville CA 94608 + UNITED STATES + +00-1D-6C (hex) ClariPhy Communications, Inc. +001D6C (base 16) ClariPhy Communications, Inc. + 16 Technology Dr., Suite 165 + Irvine CA 92618 + UNITED STATES + +00-1D-6D (hex) Confidant International LLC +001D6D (base 16) Confidant International LLC + 2530 Meridian Pkwy + Durham North Carolina 27713 + UNITED STATES + +00-1D-6E (hex) Nokia Danmark A/S +001D6E (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1D-6F (hex) Chainzone Technology Co., Ltd +001D6F (base 16) Chainzone Technology Co., Ltd + Chainzone Tech. Ind Park, Nanxin 1st Rd. + Guicheng Nanhai + Foshan Guangdong 528200 + CHINA + +00-1D-70 (hex) Cisco Systems +001D70 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1D-71 (hex) Cisco Systems +001D71 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1D-72 (hex) Wistron Corporation +001D72 (base 16) Wistron Corporation + 21F, 88, Sec.1, Hsin Tai Wu Rd., Hsichih, + Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-1D-73 (hex) Buffalo Inc. +001D73 (base 16) Buffalo Inc. + 15,Shibata Hondori 4-chome, + Minami-ku + Nagoya Aichi Pref. 457-8520 + JAPAN + +00-1D-74 (hex) Tianjin China-Silicon Microelectronics Co., Ltd. +001D74 (base 16) Tianjin China-Silicon Microelectronics Co., Ltd. + 301,3F Building 211,No.214 Hongqi Road, Nankai District, Tianjin China + Tianjin 300190 + CHINA + +00-1D-75 (hex) Radioscape PLC +001D75 (base 16) Radioscape PLC + 1 Albany Terrace + Regent's Park London NW1 4DS + UNITED KINGDOM + +00-1D-76 (hex) Eyeheight Ltd. +001D76 (base 16) Eyeheight Ltd. + Unit 34, Park House + 15-19 Greenhill Crescent + Watford Herts WD18 8PH + UNITED KINGDOM + +00-1D-77 (hex) NSGate +001D77 (base 16) NSGate + Rm 1304, 39 Kirpichnaya Street + Moscow 105187 + RUSSIAN FEDERATION + +00-1D-78 (hex) Invengo Information Technology Co.,Ltd +001D78 (base 16) Invengo Information Technology Co.,Ltd + 3/F,No.T2-B,High-Tech Industrial Park South + Shenzhen Guangdong 518057 + CHINA + +00-1D-79 (hex) SIGNAMAX LLC +001D79 (base 16) SIGNAMAX LLC + 1090 Vermont Avenue + Washington Washington D.C. 20005 + UNITED STATES + +00-1D-7A (hex) Wideband Semiconductor, Inc. +001D7A (base 16) Wideband Semiconductor, Inc. + 1350 Pear Ave + Suite C + Mountain View CA 94043 + UNITED STATES + +00-1D-7B (hex) Ice Energy, Inc. +001D7B (base 16) Ice Energy, Inc. + 9351 Eastman Park Drive + Suite B + Windsor Colorado 80550 + UNITED STATES + +00-1D-7C (hex) ABE Elettronica S.p.A. +001D7C (base 16) ABE Elettronica S.p.A. + Via Leonardo da Vinci, 92 + CARAVAGGIO BG 24043 + ITALY + +00-1D-7D (hex) GIGA-BYTE TECHNOLOGY CO.,LTD. +001D7D (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD. + Pin-Jen City, Taoyuan, + Pin-Jen Taoyuan 324 + TAIWAN, REPUBLIC OF CHINA + +00-1D-7E (hex) Cisco-Linksys, LLC +001D7E (base 16) Cisco-Linksys, LLC + 121 Theory Drive + Irvine California 92612 + UNITED STATES + +00-1D-7F (hex) Tekron International Ltd +001D7F (base 16) Tekron International Ltd + 409 Cuba Street, Alicetown + PO Box 31-285 + Lower Hutt Wellington 5010 + NEW ZEALAND + +00-1D-80 (hex) Beijing Huahuan Eletronics Co.,Ltd +001D80 (base 16) Beijing Huahuan Eletronics Co.,Ltd + No.26,Shangdi 6th St.Haidian District, + Beijing 100085 + CHINA + +00-1D-81 (hex) GUANGZHOU GATEWAY ELECTRONICS CO., LTD +001D81 (base 16) GUANGZHOU GATEWAY ELECTRONICS CO., LTD + B20#,4F,No.9 Jiangong Road,Tianhe Software Park,Tianhe District, + GUANGZHOU Guangdong 510665 + CHINA + +00-1D-82 (hex) GN A/S (GN Netcom A/S) +001D82 (base 16) GN A/S (GN Netcom A/S) + Lautrupbjerg 7 + P.O.Box 99 + Ballerup DK - 2750 + DENMARK + +00-1D-83 (hex) Emitech Corporation +001D83 (base 16) Emitech Corporation + 2F,No.7-1,Industry E,Rd.9 + Science-Based Industrial Park, + Hsinchu 308 + TAIWAN, REPUBLIC OF CHINA + +00-1D-84 (hex) Gateway, Inc. +001D84 (base 16) Gateway, Inc. + 610 Gateway Drive + P.O. Box 2000 + North Sioux City South Dakota 57049 + UNITED STATES + +00-1D-85 (hex) Call Direct Cellular Solutions +001D85 (base 16) Call Direct Cellular Solutions + Suite 145, National Innovation Centre + Australian Technology Park + Eveleigh NSW 1430 + AUSTRALIA + +00-1D-86 (hex) Shinwa Industries(China) Ltd. +001D86 (base 16) Shinwa Industries(China) Ltd. + 8 Pingnanzhong Road, Pingnan Industrial Park, Zhongkai No.4 Road, + Huizhou City Guangdong Province 516006 + CHINA + +00-1D-87 (hex) VigTech Labs Sdn Bhd +001D87 (base 16) VigTech Labs Sdn Bhd + 45-11 The Boulevard Mid Valley City + Lingkaran Syed Putra + Kuala Lumpur Selangor 59200 + MALAYSIA + +00-1D-88 (hex) Clearwire +001D88 (base 16) Clearwire + 4400 Carillon Point + Kirkland Washington 98033 + UNITED STATES + +00-1D-89 (hex) VaultStor Corporation +001D89 (base 16) VaultStor Corporation + 1010 Brioso Drive + Costa Mesa CA 92627 + UNITED STATES + +00-1D-8A (hex) TechTrex Inc +001D8A (base 16) TechTrex Inc + 6221 Highway 7, Unit 12 + Woodbridge Ontalio L4H 0K8 + CANADA + +00-1D-8B (hex) PIRELLI BROADBAND SOLUTIONS +001D8B (base 16) PIRELLI BROADBAND SOLUTIONS + VIALE SARCA 222 + MILANO 20126 + ITALY + +00-1D-8C (hex) La Crosse Technology LTD +001D8C (base 16) La Crosse Technology LTD + 2809 Losey Blvd. So. + La Crosse WI 54601 + UNITED STATES + +00-1D-8D (hex) Raytek GmbH +001D8D (base 16) Raytek GmbH + Blankenburger Str. 135 + Berlin 13127 + GERMANY + +00-1D-8E (hex) Alereon, Inc. +001D8E (base 16) Alereon, Inc. + 7600 N. Capital of Texas Hwy + Bldg C, #200 + Austin TX 78731 + UNITED STATES + +00-1D-8F (hex) PureWave Networks +001D8F (base 16) PureWave Networks + 2660-C Marine Way + Mountain View CA 94043 + UNITED STATES + +00-1D-90 (hex) EMCO Flow Systems +001D90 (base 16) EMCO Flow Systems + 2150 Miller Drive + Longmont CO 80501 + UNITED STATES + +00-1D-91 (hex) Digitize, Inc +001D91 (base 16) Digitize, Inc + 158 Edison Road + Lake Hopatcong New Jersey 07849 + UNITED STATES + +00-1D-92 (hex) MICRO-STAR INT'L CO.,LTD. +001D92 (base 16) MICRO-STAR INT'L CO.,LTD. + No.69,Li-De St,Jung-Ho City + Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-1D-93 (hex) Modacom +001D93 (base 16) Modacom + Jinsuk Building 1536-7 + Seocho-Dong, Seocho-Gu + Seoul 137-073 + KOREA, REPUBLIC OF + +00-1D-94 (hex) Climax Technology Co., Ltd +001D94 (base 16) Climax Technology Co., Ltd + No. 258, Hsin Hu 2nd Road + Neihu District + Taipei City Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1D-95 (hex) Flash, Inc. +001D95 (base 16) Flash, Inc. + 3703 N. 200th St. + Elkhorn NE 68022-2922 + UNITED STATES + +00-1D-96 (hex) WatchGuard Video +001D96 (base 16) WatchGuard Video + 3001 Summit Ave. + Plano TX 75074 + UNITED STATES + +00-1D-97 (hex) Alertus Technologies LLC +001D97 (base 16) Alertus Technologies LLC + 11785 Beltsville Drive + Suite 1325 + Beltsville MD 20705 + UNITED STATES + +00-1D-98 (hex) Nokia Danmark A/S +001D98 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1D-99 (hex) Cyan Optic, Inc. +001D99 (base 16) Cyan Optic, Inc. + 1390 N. McDowell Blvd + Suite G-327 + Petaluma CA 94954 + UNITED STATES + +00-1D-9A (hex) GODEX INTERNATIONAL CO., LTD +001D9A (base 16) GODEX INTERNATIONAL CO., LTD + 4F. NO.168, Lian-Cheng Road Chung-Ho City, + Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-1D-9B (hex) Hokuyo Automatic Co., Ltd. +001D9B (base 16) Hokuyo Automatic Co., Ltd. + Niitaka 1-10-9 + Yodogawa-Ku + Osaka 532-0033 + JAPAN + +00-1D-9C (hex) Rockwell Automation +001D9C (base 16) Rockwell Automation + 1 Allen-Bradley Drive + CS-C239 + Mayfield Heights Ohio 44124 + UNITED STATES + +00-1D-9D (hex) ARTJOY INTERNATIONAL LIMITED +001D9D (base 16) ARTJOY INTERNATIONAL LIMITED + Room 1601,No.239 ZhongXing Road,LuoHu District + Shenzhen Guangdong 518001 + CHINA + +00-1D-9E (hex) AXION TECHNOLOGIES +001D9E (base 16) AXION TECHNOLOGIES + 151 RUE PARC INNOVATION + LA POCATIERE QUEBEC G0R1Z0 + CANADA + +00-1D-9F (hex) MATT R.P.Traczynscy Sp.J. +001D9F (base 16) MATT R.P.Traczynscy Sp.J. + Polnocna 44 + Koscian wielkopolskie PL-64000 + POLAND + +00-1D-A0 (hex) Heng Yu Electronic Manufacturing Company Limited +001DA0 (base 16) Heng Yu Electronic Manufacturing Company Limited + Room 1004, HSH Mongkok Plaza, + 794-802 Nathan Road, + Kowloon + HONG KONG + +00-1D-A1 (hex) Cisco Systems +001DA1 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1D-A2 (hex) Cisco Systems +001DA2 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1D-A3 (hex) SabiOso +001DA3 (base 16) SabiOso + 189 S State Suite #250 + Clearfield Utah 84015 + UNITED STATES + +00-1D-A4 (hex) Hangzhou System Technology CO., LTD +001DA4 (base 16) Hangzhou System Technology CO., LTD + ROOM A1505 HuaXing times plaza,NO 478 Wensan Road + Hangzhou Zhejiang 310012 + CHINA + +00-1D-A5 (hex) WB Electronics +001DA5 (base 16) WB Electronics + Langelandsvej 1A + Herning Herning 7400 + DENMARK + +00-1D-A6 (hex) Media Numerics Limited +001DA6 (base 16) Media Numerics Limited + Rodenbacher Chaussee 6 + Hanau Hessen 63457 + GERMANY + +00-1D-A7 (hex) Seamless Internet +001DA7 (base 16) Seamless Internet + 2050 Russett Way Suite 338 + Carson City Nevada 89703 + UNITED STATES + +00-1D-A8 (hex) Takahata Electronics Co.,Ltd +001DA8 (base 16) Takahata Electronics Co.,Ltd + 1188,Kubota,Kubota-machi + Yonezawa-shi Yamagata-Pref. 992-0003 + JAPAN + +00-1D-A9 (hex) Castles Technology, Co., LTD +001DA9 (base 16) Castles Technology, Co., LTD + 2F, No.205, Sec 3 Beishin Rd., + Hsin-Tien City Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-1D-AA (hex) DrayTek Corp. +001DAA (base 16) DrayTek Corp. + No. 26, Fu-Shing Road + HuKou County, Hsin-Chu Industrial Park + Hsin-Chu 303 + TAIWAN, REPUBLIC OF CHINA + +00-1D-AB (hex) SwissQual +001DAB (base 16) SwissQual + Metallstr, 9b + Zug ZG 6301 + SWITZERLAND + +00-1D-AC (hex) Gigamon Systems LLC +001DAC (base 16) Gigamon Systems LLC + 736 S. Hillview Drive + Milpitas CA 95035-5455 + UNITED STATES + +00-1D-AD (hex) Sinotech Engineering Consultants, Inc. Geotechnical Enginee +001DAD (base 16) Sinotech Engineering Consultants, Inc. Geotechnical Enginee + Basement No.7 Lane 26, Yat-Sen Rd. + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-1D-AE (hex) CHANG TSENG TECHNOLOGY CO., LTD +001DAE (base 16) CHANG TSENG TECHNOLOGY CO., LTD + 2F NO.160 BACK BUILDING, LEN CHENG RD., CHUNG HO CITY + TAIPEI HSIEN 235 + TAIWAN, REPUBLIC OF CHINA + +00-1D-AF (hex) Nortel +001DAF (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1D-B0 (hex) FuJian HengTong Information Technology Co.,Ltd +001DB0 (base 16) FuJian HengTong Information Technology Co.,Ltd + No.14-804,Building 2,JinXiuFuCheng,No.338,HuaLin Road + FuZhou City FuJian Province 350001 + CHINA + +00-1D-B1 (hex) Crescendo Networks +001DB1 (base 16) Crescendo Networks + 6 Yoni Netanyahu St. + Or-Yehuda 60376 + ISRAEL + +00-1D-B2 (hex) HOKKAIDO ELECTRIC ENGINEERING CO.,LTD. +001DB2 (base 16) HOKKAIDO ELECTRIC ENGINEERING CO.,LTD. + South15-West23 + Nanporo-Cho Hokkaido 069-0215 + JAPAN + +00-1D-B3 (hex) ProCurve Networking by HP +001DB3 (base 16) ProCurve Networking by HP + 8000 Foothills Blvd + Roseville CA 95747 + UNITED STATES + +00-1D-B4 (hex) KUMHO ENG CO.,LTD +001DB4 (base 16) KUMHO ENG CO.,LTD + 498-13, HYUNDAI B/D 5F + PYEONGRI 3-DONG, SEO-GU + DAEGU 703-835 + KOREA, REPUBLIC OF + +00-1D-B5 (hex) Juniper networks +001DB5 (base 16) Juniper networks + 1194 N Mathilda Ave. + Sunnyvale CA 94089 + UNITED STATES + +00-1D-B6 (hex) BestComm Networks, Inc. +001DB6 (base 16) BestComm Networks, Inc. + 4400 E. Broadway Blvd. + Suite 201 + Tucson AZ 85711 + UNITED STATES + +00-1D-B7 (hex) Tendril Networks, Inc. +001DB7 (base 16) Tendril Networks, Inc. + 5700-D Flatiron Parkway + Suite 5700-D + Boulder CO 80301 + UNITED STATES + +00-1D-B8 (hex) Intoto Inc. +001DB8 (base 16) Intoto Inc. + 3100 De La Cruz Blvd. #300 + Santa Clara CA 95054 + UNITED STATES + +00-1D-B9 (hex) Wellspring Wireless +001DB9 (base 16) Wellspring Wireless + 107 Magella Court + North Wales Pa 19454 + UNITED STATES + +00-1D-BA (hex) Sony Corporation +001DBA (base 16) Sony Corporation + 5-1-12 Kitashinagawa Shinagawa-ku + Tokyo 141-0001 + JAPAN + +00-1D-BB (hex) Dynamic System Electronics Corp. +001DBB (base 16) Dynamic System Electronics Corp. + 5F,NO,9,LANE 130,SEC 1,KUANGG FU RD.SAN CHUNG CITY, + Taipei Hsien 24158 + TAIWAN, REPUBLIC OF CHINA + +00-1D-BC (hex) Nintendo Co., Ltd. +001DBC (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO 601-8501 + JAPAN + +00-1D-BD (hex) Versamed Inc. +001DBD (base 16) Versamed Inc. + 2 Blue Hill Plaza + Pearl River NY 10965 + UNITED STATES + +00-1D-BE (hex) Motorola Mobile Devices +001DBE (base 16) Motorola Mobile Devices + 600 N. US 45 + Libertyville Illinois 60048 + UNITED STATES + +00-1D-BF (hex) Radiient Technologies, Inc. +001DBF (base 16) Radiient Technologies, Inc. + 2084-A Walsh Ave + Santa Clara CA 95050 + UNITED STATES + +00-1D-C0 (hex) Enphase Energy +001DC0 (base 16) Enphase Energy + 201 1st Street, Suite 111 + Petaluma CA 94952 + UNITED STATES + +00-1D-C1 (hex) Audinate +001DC1 (base 16) Audinate + Level 4, 223 Anzac Pde + Kensington NSW 2052 + AUSTRALIA + +00-1D-C2 (hex) XORTEC OY +001DC2 (base 16) XORTEC OY + Höytämöntie 6 + Lempäälä Pirkanmaa 33880 + FINLAND + +00-1D-C3 (hex) RIKOR TV, Ltd +001DC3 (base 16) RIKOR TV, Ltd + Kostomarovsky per.,3 + Moscow 105120 + RUSSIAN FEDERATION + +00-1D-C4 (hex) AIOI Systems Co., Ltd. +001DC4 (base 16) AIOI Systems Co., Ltd. + KDX Omori, Bldg. 8F + 1-6-8 Omori Kita, Ota-ku + Tokyo 143-0016 + JAPAN + +00-1D-C5 (hex) Beijing Jiaxun Feihong Electricial Co., Ltd. +001DC5 (base 16) Beijing Jiaxun Feihong Electricial Co., Ltd. + Electrical Building,No. 31 Jiaoda East Road, + Beijing Haidian District, 100044 + CHINA + +00-1D-C6 (hex) SNR Inc. +001DC6 (base 16) SNR Inc. + VBIC T223ho, ICU, 103-6 Munji-dong, Youseong-gu + Daejeon 305-732 + KOREA, REPUBLIC OF + +00-1D-C7 (hex) L-3 Communications Geneva Aerospace +001DC7 (base 16) L-3 Communications Geneva Aerospace + 4240 International Parkway + Suite 100 + Carrollton Texas 75007 + UNITED STATES + +00-1D-C8 (hex) ScadaMetrcs, LLC. +001DC8 (base 16) ScadaMetrcs, LLC. + 595 Vista Hills Court + Eureka Missouri 63025 + UNITED STATES + +00-1D-C9 (hex) GainSpan Corp. +001DC9 (base 16) GainSpan Corp. + P.O. Box 223580 + Carmel CA 93922 + UNITED STATES + +00-1D-CA (hex) PAV Electronics Limited +001DCA (base 16) PAV Electronics Limited + 7 Laverock Road + Stirling Road Industrial Estate + Airdrie Lanarkshire ML6 7UD + UNITED KINGDOM + +00-1D-CB (hex) Exéns Development Oy +001DCB (base 16) Exéns Development Oy + Kauppakatu 36 + Kajaani Kainuu 87100 + FINLAND + +00-1D-CC (hex) Hetra Secure Solutions +001DCC (base 16) Hetra Secure Solutions + 2350 Commerce Park Dr. + Palm Bay FL 32905 + UNITED STATES + +00-1D-CD (hex) ARRIS Group, Inc. +001DCD (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-CE (hex) ARRIS Group, Inc. +001DCE (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-CF (hex) ARRIS Group, Inc. +001DCF (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-D0 (hex) ARRIS Group, Inc. +001DD0 (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-D1 (hex) ARRIS Group, Inc. +001DD1 (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-D2 (hex) ARRIS Group, Inc. +001DD2 (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-D3 (hex) ARRIS Group, Inc. +001DD3 (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-D4 (hex) ARRIS Group, Inc. +001DD4 (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-D5 (hex) ARRIS Group, Inc. +001DD5 (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-D6 (hex) ARRIS Group, Inc. +001DD6 (base 16) ARRIS Group, Inc. + 3871 Lakefield Drive + Suwanee GA 30024 + UNITED STATES + +00-1D-D7 (hex) Algolith +001DD7 (base 16) Algolith + 400 Isabey + Saint-Laurent Qc H4T 1V3 + CANADA + +00-1D-D8 (hex) Microsoft Corporation +001DD8 (base 16) Microsoft Corporation + One Microsoft Way + Redmond Washington 98052-6399 + UNITED STATES + +00-1D-D9 (hex) Hon Hai Precision Ind.Co.,Ltd. +001DD9 (base 16) Hon Hai Precision Ind.Co.,Ltd. + 66,Chung Shan Rd.Tu-Cheng + Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-1D-DA (hex) Mikroelektronika spol. s r. o. +001DDA (base 16) Mikroelektronika spol. s r. o. + Dráby 849 + Vysoké Mýto CZ 566 01 + CZECH REPUBLIC + +00-1D-DB (hex) C-BEL Corporation +001DDB (base 16) C-BEL Corporation + Futabacho 35-12 + 6F Okada Bildg + Itabashi-ku Tokyo 173-0011 + JAPAN + +00-1D-DC (hex) HangZhou DeChangLong Tech&Info Co.,Ltd +001DDC (base 16) HangZhou DeChangLong Tech&Info Co.,Ltd + Room 1102,KeJi Mansion, + East Software Park,90 WenSan Road. + HangZhou ZheJiang 310012 + CHINA + +00-1D-DD (hex) DAT H.K. LIMITED +001DDD (base 16) DAT H.K. LIMITED + Suite 1405 14/F., City Plaza 4, Tai Koo Wan Rd, + Tai Koo Shing Hong Kong Island 064828 + HONG KONG + +00-1D-DE (hex) Zhejiang Broadcast&Television Technology Co.,Ltd. +001DDE (base 16) Zhejiang Broadcast&Television Technology Co.,Ltd. + Building No.16,Xidoumen Industry Park,Wenyi Road, + Hangzhou Zhejiang 310012 + CHINA + +00-1D-DF (hex) Sunitec Enterprise Co., Ltd. +001DDF (base 16) Sunitec Enterprise Co., Ltd. + 3F., No. 98-1, Mincyuan Rd. + Sindian City Taipei County 231 + TAIWAN, REPUBLIC OF CHINA + +00-1D-E0 (hex) Intel Corporate +001DE0 (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1D-E1 (hex) Intel Corporate +001DE1 (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1D-E2 (hex) Radionor Communications +001DE2 (base 16) Radionor Communications + Ingvald Ystgaards veg 23 + Trondheim TRD 7046 + NORWAY + +00-1D-E3 (hex) Intuicom +001DE3 (base 16) Intuicom + 1880 S. Flatiron Ct. + Suite R + Boulder CO 80301 + UNITED STATES + +00-1D-E4 (hex) Visioneered Image Systems +001DE4 (base 16) Visioneered Image Systems + 10561 Garden Grove Blvd + Garden Grove California 92843 + UNITED STATES + +00-1D-E5 (hex) Cisco Systems +001DE5 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1D-E6 (hex) Cisco Systems +001DE6 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1D-E7 (hex) Marine Sonic Technology, Ltd. +001DE7 (base 16) Marine Sonic Technology, Ltd. + 5508 George Washington Memorial Highway + P.O. Box 730 + White Marsh Virginia 23183 + UNITED STATES + +00-1D-E8 (hex) Nikko Denki Tsushin Company(NDTC) +001DE8 (base 16) Nikko Denki Tsushin Company(NDTC) + 440 Kamoshida-town, Aoba-ku + Yokohama 227-0033 + JAPAN + +00-1D-E9 (hex) Nokia Danmark A/S +001DE9 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1D-EA (hex) Commtest Instruments Ltd +001DEA (base 16) Commtest Instruments Ltd + 28B Moorhouse Ave + Christchurch Canterbury 8243 + NEW ZEALAND + +00-1D-EB (hex) DINEC International +001DEB (base 16) DINEC International + Rue de la Gare, 30 + BRAINE L'ALLEUD BRABANT WALLON 1420 + BELGIUM + +00-1D-EC (hex) Marusys +001DEC (base 16) Marusys + Eunsung Bldg. 5F + 53-8 ChungDam-Dong KangNam-Ku + Seoul 135-763 + KOREA, REPUBLIC OF + +00-1D-ED (hex) Grid Net, Inc. +001DED (base 16) Grid Net, Inc. + 340 Brannan Street + Suite 501 + San Francisco CA 94107 + UNITED STATES + +00-1D-EE (hex) NEXTVISION SISTEMAS DIGITAIS DE TELEVISÃO LTDA. +001DEE (base 16) NEXTVISION SISTEMAS DIGITAIS DE TELEVISÃO LTDA. + Alameda Rio Negro, 1030 - 19o. andar conj. 1904 + Barueri São Paulo 06454-000 + BRAZIL + +00-1D-EF (hex) TRIMM, INC. +001DEF (base 16) TRIMM, INC. + 407 RAILROAD STREET + BUTNER NC 27509 + UNITED STATES + +00-1D-F0 (hex) Vidient Systems, Inc. +001DF0 (base 16) Vidient Systems, Inc. + 4000 Burton Drive + Santa Clara CA 94054 + UNITED STATES + +00-1D-F1 (hex) Intego Systems, Inc. +001DF1 (base 16) Intego Systems, Inc. + 5343 Bowden Road + Jacksonville FL 32216 + UNITED STATES + +00-1D-F2 (hex) Netflix, Inc. +001DF2 (base 16) Netflix, Inc. + 100 Winchester Circle + Los Gatos CA 95032 + UNITED STATES + +00-1D-F3 (hex) SBS Science & Technology Co., Ltd +001DF3 (base 16) SBS Science & Technology Co., Ltd + W2-B5/6 High-tech industrial park + ShenZhen GuangDong 518057 + CHINA + +00-1D-F4 (hex) Magellan Technology Pty Limited +001DF4 (base 16) Magellan Technology Pty Limited + 65 Johnston Street + Annandale NSW 2000 + AUSTRALIA + +00-1D-F5 (hex) Sunshine Co,LTD +001DF5 (base 16) Sunshine Co,LTD + 1-3-5 Kojimachi + Chiyoda-ku + TOKYO Kanto region 102-0083 + JAPAN + +00-1D-F6 (hex) Samsung Electronics Co.,Ltd +001DF6 (base 16) Samsung Electronics Co.,Ltd + #94-1, Imsoo-Dong + Gumi Gyeongbuk 730-350 + KOREA, REPUBLIC OF + +00-1D-F7 (hex) R. STAHL Schaltgeräte GmbH +001DF7 (base 16) R. STAHL Schaltgeräte GmbH + am Bahnhof 30 + Waldenburg Baden Württemberg 74638 + GERMANY + +00-1D-F8 (hex) Webpro Vision Technology Corporation +001DF8 (base 16) Webpro Vision Technology Corporation + 4F., No.573, Cingping Rd. + Anping District 708 + TAIWAN, REPUBLIC OF CHINA + +00-1D-F9 (hex) Cybiotronics (Far East) Limited +001DF9 (base 16) Cybiotronics (Far East) Limited + Unit 1906, Eastern Centre, + 1065 King's Road, + Quarry Bay + HONG KONG + +00-1D-FA (hex) Fujian LANDI Commercial Equipment Co.,Ltd +001DFA (base 16) Fujian LANDI Commercial Equipment Co.,Ltd + Building 23,the 1st section,Software Garden + No.89 Software Road, + Fuzhou Fujian 350003 + CHINA + +00-1D-FB (hex) NETCLEUS Systems Corporation +001DFB (base 16) NETCLEUS Systems Corporation + 9F,Yokohama aioicho Bldg. + 6-104,Aioi-cho,Naka-ku + Yokohama-shi Kanagawa-ken 231-0012 + JAPAN + +00-1D-FC (hex) KSIC +001DFC (base 16) KSIC + #6F, Korea Federation of Teacher's Associations, 114-1, TaeBong-Ro, + Seoul Seocho-Ku 137-715 + KOREA, REPUBLIC OF + +00-1D-FD (hex) Nokia Danmark A/S +001DFD (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1D-FE (hex) Palm, Inc +001DFE (base 16) Palm, Inc + 950 West Maude Ave + Sunnyvale CA 94085 + UNITED STATES + +00-1D-FF (hex) Network Critical Solutions Ltd +001DFF (base 16) Network Critical Solutions Ltd + 12B Southview Park + Reading Berkshire RG45AF + UNITED KINGDOM + +00-1E-00 (hex) Shantou Institute of Ultrasonic Instruments +001E00 (base 16) Shantou Institute of Ultrasonic Instruments + No.77, Jinsha Road, + Shantou Guangdong 515041 + CHINA + +00-1E-01 (hex) Renesas Technology Sales Co., Ltd. +001E01 (base 16) Renesas Technology Sales Co., Ltd. + 2-6-2 + Otemachi + Chiyoda-ku Tokyo 100-0004 + JAPAN + +00-1E-02 (hex) Sougou Keikaku Kougyou Co.,Ltd. +001E02 (base 16) Sougou Keikaku Kougyou Co.,Ltd. + HK2 bld. 2-21-10 + Nishiogiminami + Suginamiku Tokyo 167-0053 + JAPAN + +00-1E-03 (hex) LiComm Co., Ltd. +001E03 (base 16) LiComm Co., Ltd. + 908-1 SEO-RI, IDONG-MYEON + YONGIN-SI GYEONGGI-DO 449-834 + KOREA, REPUBLIC OF + +00-1E-04 (hex) Hanson Research Corporation +001E04 (base 16) Hanson Research Corporation + 9810 Variel Ave. + Chatsworth CA 91311 + UNITED STATES + +00-1E-05 (hex) Xseed Technologies & Computing +001E05 (base 16) Xseed Technologies & Computing + Topaz House, MATAM + 5 Nahum Hat St. + Haifa 39100 + ISRAEL + +00-1E-06 (hex) WIBRAIN +001E06 (base 16) WIBRAIN + 306 JEI Plats B/D 459-11 Gasan-dong, Geumcheon-gu + SEOUL 153-803 + KOREA, REPUBLIC OF + +00-1E-07 (hex) Winy Technology Co., Ltd. +001E07 (base 16) Winy Technology Co., Ltd. + 305-303, Bucheon Techno-park, #365 + Samjeong-dong, Ojeong-gu + Bucheon Gyeonggi-do 421-741 + KOREA, REPUBLIC OF + +00-1E-08 (hex) Centec Networks Inc +001E08 (base 16) Centec Networks Inc + Science Plaza 10F , 328 Airport Rd + Suzhou Industrial Park + Suzhou Jiangsu 215021 + CHINA + +00-1E-09 (hex) ZEFATEK Co.,LTD +001E09 (base 16) ZEFATEK Co.,LTD + 326-4 Gasandong, Geumcheongu + Seoul 153-802 + KOREA, REPUBLIC OF + +00-1E-0A (hex) Syba Tech Limited +001E0A (base 16) Syba Tech Limited + RM1301, Vanta Industrial Centre, + 21-33 Tai Lin Pai Rd. + Kwai Chung + HONG KONG + +00-1E-0B (hex) Hewlett Packard +001E0B (base 16) Hewlett Packard + 20555 State Highway 249 + MS040801 + Houston TX 77070 + UNITED STATES + +00-1E-0C (hex) Sherwood Information Partners, Inc. +001E0C (base 16) Sherwood Information Partners, Inc. + 1120 W, 122nd Ave, Ste 300 + Westminster CO 80234 + UNITED STATES + +00-1E-0D (hex) Micran Ltd. +001E0D (base 16) Micran Ltd. + Vershinina st. 47 + Tomsk Tomsk Region 634034 + RUSSIAN FEDERATION + +00-1E-0E (hex) MAXI VIEW HOLDINGS LIMITED +001E0E (base 16) MAXI VIEW HOLDINGS LIMITED + Suite 2302,23/F Great Eagle Centre, 23 Harbour Road, Wanchai + Hong Kong + CHINA + +00-1E-0F (hex) Briot International +001E0F (base 16) Briot International + 2 rue roger Bonnet + Pont de l'Arche Eure 27340 + FRANCE + +00-1E-10 (hex) ShenZhen Huawei Communication Technologies Co.,Ltd. +001E10 (base 16) ShenZhen Huawei Communication Technologies Co.,Ltd. + HUAWEI INDUSTRIAL PK BANTIAN, LONGGANG DIST SHENZHEN + SHENZHEN GUANGDONG 518077 + CHINA + +00-1E-11 (hex) ELELUX INTERNATIONAL LTD +001E11 (base 16) ELELUX INTERNATIONAL LTD + 3F., NO.103 CHOW TZE STREET + NEI-HU DISTRICT (114) + TAIPEI 114 + TAIWAN, REPUBLIC OF CHINA + +00-1E-12 (hex) Ecolab +001E12 (base 16) Ecolab + 655 Lone Oak Drive + Research Center Dock -- F4416 + Eagan MN 55121 + UNITED STATES + +00-1E-13 (hex) Cisco Systems +001E13 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-14 (hex) Cisco Systems +001E14 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-15 (hex) Beech Hill Electronics +001E15 (base 16) Beech Hill Electronics + Beechcroft, Beech Hill Road + Beech Hill + Reading Berkshire RG7 2AU + UNITED KINGDOM + +00-1E-16 (hex) Keytronix +001E16 (base 16) Keytronix + Ungargasse 64-66/1/109 + Vienna 1030 + AUSTRIA + +00-1E-17 (hex) STN BV +001E17 (base 16) STN BV + Amerikaweg 4 + Hulst Zeeland 4561 PB + NETHERLANDS + +00-1E-18 (hex) Radio Activity srl +001E18 (base 16) Radio Activity srl + Via Ponte Nuovo 8 + Milano MI 20128 + ITALY + +00-1E-19 (hex) GTRI +001E19 (base 16) GTRI + M/S 0821 + Atlanta GA 30332 + UNITED STATES + +00-1E-1A (hex) Best Source Taiwan Inc. +001E1A (base 16) Best Source Taiwan Inc. + 2F, No.16, Lane 56, Jhongjheng W. Rd., + Jhubei City, Hsinchu County 302 + TAIWAN, REPUBLIC OF CHINA + +00-1E-1B (hex) Digital Stream Technology, Inc. +001E1B (base 16) Digital Stream Technology, Inc. + 4,5,6th Fl., TaeChang B/D, 451-1 + SungNae-Dong, GangDong-Ku + Seoul 134-030 + KOREA, REPUBLIC OF + +00-1E-1C (hex) SWS Australia Pty Limited +001E1C (base 16) SWS Australia Pty Limited + 23 Scanlon Drive + Epping Victoria 3076 + AUSTRALIA + +00-1E-1D (hex) East Coast Datacom, Inc. +001E1D (base 16) East Coast Datacom, Inc. + 245 Gus Hipp Blvd., STE 3 + Rockledge FL 32955 + UNITED STATES + +00-1E-1E (hex) Honeywell Life Safety +001E1E (base 16) Honeywell Life Safety + 12 Clintonville Road + Northford CT 0422 + UNITED STATES + +00-1E-1F (hex) Nortel +001E1F (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1E-20 (hex) Intertain Inc. +001E20 (base 16) Intertain Inc. + Suite 608 LG Eclat-2, 245-4 Seohyun-dong, Bundang-gu + Sungngm-shi Kyunggi-do 463-824 + KOREA, REPUBLIC OF + +00-1E-21 (hex) Qisda Co. +001E21 (base 16) Qisda Co. + 157 Shan-Ying Road, Gueishan + Taoyuan 333 + TAIWAN, REPUBLIC OF CHINA + +00-1E-22 (hex) ARVOO Imaging Products BV +001E22 (base 16) ARVOO Imaging Products BV + PO Box 439 + Woerden UT 3440 AK + NETHERLANDS + +00-1E-23 (hex) Electronic Educational Devices, Inc +001E23 (base 16) Electronic Educational Devices, Inc + 1903 S Grant St + Denver CO 80210 + UNITED STATES + +00-1E-24 (hex) Zhejiang Bell Technology Co.,ltd +001E24 (base 16) Zhejiang Bell Technology Co.,ltd + 6 Xidoumen Rd. West Lake district + Hangzhou Zhejiang 310012 + CHINA + +00-1E-25 (hex) Intek Digital Inc +001E25 (base 16) Intek Digital Inc + 1101, 11th Fl., Anyang K-center building, 1591-9 + Gwanyang-dong, Dongan-gu + Anyang Gyeonggi-do 431-815 + KOREA, REPUBLIC OF + +00-1E-26 (hex) Digifriends Co. Ltd +001E26 (base 16) Digifriends Co. Ltd + Joyang B/D 6th Floor + 113 Samsung-dong, Kangnam-gu + Seoul 135-090 + KOREA, REPUBLIC OF + +00-1E-27 (hex) SBN TECH Co.,Ltd. +001E27 (base 16) SBN TECH Co.,Ltd. + #706 Industrial Academic Center, Konkuk University, Hwayang-dong, Gwangjin-gu + Seoul 143-701 + KOREA, REPUBLIC OF + +00-1E-28 (hex) Lumexis Corporation +001E28 (base 16) Lumexis Corporation + 3184 Airway Ave Bldg D + Costa Mesa CA 92626 + UNITED STATES + +00-1E-29 (hex) Hypertherm Inc +001E29 (base 16) Hypertherm Inc + 15 Great Hollow Rd + PO Box 5010 + Hanover NH 03755 + UNITED STATES + +00-1E-2A (hex) Netgear Inc. +001E2A (base 16) Netgear Inc. + 4500 Great America Parkway + Santa Clara CA 95054 + UNITED STATES + +00-1E-2B (hex) Radio Systems Design, Inc. +001E2B (base 16) Radio Systems Design, Inc. + 601 Heron Drive + Logan Twp New Jersey 08085 + UNITED STATES + +00-1E-2C (hex) CyVerse Corporation +001E2C (base 16) CyVerse Corporation + Shoutou Roukubankan Bldg. 4F + 1-28-4, Shoutou + Shibuya-ku Tokyo 150-0046 + JAPAN + +00-1E-2D (hex) STIM +001E2D (base 16) STIM + ZAC les COUSTELLIERS + 6 Rue de L'ABRIVADO + CASTRIES HERAULT 34160 + FRANCE + +00-1E-2E (hex) SIRTI S.p.A. +001E2E (base 16) SIRTI S.p.A. + Via Stamira d'Ancona 9 + MILAN 20127 + ITALY + +00-1E-2F (hex) DiMoto Pty Ltd +001E2F (base 16) DiMoto Pty Ltd + 7 Meljaren Place + Buderim Queensland 4556 + AUSTRALIA + +00-1E-30 (hex) Shireen Inc +001E30 (base 16) Shireen Inc + 8531 Ziggy Lane + Gaithersburg MD 20877 + UNITED STATES + +00-1E-31 (hex) INFOMARK CO.,LTD. +001E31 (base 16) INFOMARK CO.,LTD. + 5F.,Geown Bldg.,1360-53 + Seoul Seocho-dong,Seocho-gu 137-863 + KOREA, REPUBLIC OF + +00-1E-32 (hex) Zensys +001E32 (base 16) Zensys + Emdrupvej 26 + Copenhagen O DK-2100 + DENMARK + +00-1E-33 (hex) Inventec Corporation +001E33 (base 16) Inventec Corporation + Inventec Building, 66 Hou-Kang Street + Shin-Lin District + Taipei 111 + TAIWAN, REPUBLIC OF CHINA + +00-1E-34 (hex) CryptoMetrics +001E34 (base 16) CryptoMetrics + 160 Michael Cowpland Dr + Ottawa Ontario K2M 1P6 + CANADA + +00-1E-35 (hex) Nintendo Co., Ltd. +001E35 (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO KYOTO 601-8501 + JAPAN + +00-1E-36 (hex) IPTE +001E36 (base 16) IPTE + Geleenlaan 5 + Genk Limburg 3600 + BELGIUM + +00-1E-37 (hex) USI +001E37 (base 16) USI + 141, LANE 351, TAIPING RD. + SEC.1, TSAO TUEN + NAN-TOU 542 + TAIWAN, REPUBLIC OF CHINA + +00-1E-38 (hex) Bluecard Software Technology Co., Ltd. +001E38 (base 16) Bluecard Software Technology Co., Ltd. + D-801 Shangdi Science Building + No.8 Shangdi West Road + Beijing 100085 + CHINA + +00-1E-39 (hex) Comsys Communication Ltd. +001E39 (base 16) Comsys Communication Ltd. + 9 Hamenofim st. + Herzelia 46725 + ISRAEL + +00-1E-3A (hex) Nokia Danmark A/S +001E3A (base 16) Nokia Danmark A/S + Frederiskaj + Copenhagen V DK-1790 + DENMARK + +00-1E-3B (hex) Nokia Danmark A/S +001E3B (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1E-3C (hex) Lyngbox Media AB +001E3C (base 16) Lyngbox Media AB + Diskettgatan 11B + Linkoping SE-58335 + SWEDEN + +00-1E-3D (hex) Alps Electric Co., Ltd +001E3D (base 16) Alps Electric Co., Ltd + 1-2-1, Okinouchi + Soma city Fukushim-pref 976-8501 + JAPAN + +00-1E-3E (hex) KMW Inc. +001E3E (base 16) KMW Inc. + 65 Youngchun-ri, Dongtan-myun + Hwasung-si Kyungki-do 445-813 + KOREA, REPUBLIC OF + +00-1E-3F (hex) PRIVATE +001E3F (base 16) + +00-1E-40 (hex) Shanghai DareGlobal Technologies Co.,Ltd. +001E40 (base 16) Shanghai DareGlobal Technologies Co.,Ltd. + 22F, lnfo Tech Building, NO.1555 Kongjiang Road, + Shanghai 200092 + CHINA + +00-1E-41 (hex) Microwave Communication & Component, Inc. +001E41 (base 16) Microwave Communication & Component, Inc. + #204, WOOLIM LION`S VALLEY 2, 680 + Gasan-Dong, Geumchon-GU + Seoul 150-787 + KOREA, REPUBLIC OF + +00-1E-42 (hex) Teltonika +001E42 (base 16) Teltonika + Zirmunu 27 + Vilnius LT - 09105 + LITHUANIA + +00-1E-43 (hex) AISIN AW CO.,LTD. +001E43 (base 16) AISIN AW CO.,LTD. + 6-18 HARAYAMA + OKA-CHO + OKAZAKI AICHI 444-8564 + JAPAN + +00-1E-44 (hex) SANTEC +001E44 (base 16) SANTEC + An der Strusbek 31 + Ahrensburg Schleswig Holstein 22926 + GERMANY + +00-1E-45 (hex) Sony Ericsson Mobile Communications AB +001E45 (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund SE 221 88 + SWEDEN + +00-1E-46 (hex) Motorola CHS +001E46 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-1E-47 (hex) PT. Hariff Daya Tunggal Engineering +001E47 (base 16) PT. Hariff Daya Tunggal Engineering + Jl. Soekarno Hatta No. 450 + Bandung Jawa Barat 40266 + INDONESIA + +00-1E-48 (hex) Wi-Links +001E48 (base 16) Wi-Links + 332 Ayiou street + Limassol 3725 + CYPRUS + +00-1E-49 (hex) Cisco Systems +001E49 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-4A (hex) Cisco Systems +001E4A (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-4B (hex) City Theatrical +001E4B (base 16) City Theatrical + 475 Barell Ave + Carlstadt New Jersey 07072 + UNITED STATES + +00-1E-4C (hex) Hon Hai Precision Ind.Co., Ltd. +001E4C (base 16) Hon Hai Precision Ind.Co., Ltd. + 66,Chung Shan Rd.Tu-Cheng + Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-1E-4D (hex) Welkin Sciences, LLC +001E4D (base 16) Welkin Sciences, LLC + 102 S. Tejon St, Suite 200 + Colorado Springs CO 80903 + UNITED STATES + +00-1E-4E (hex) DAKO EDV-Ingenieur- und Systemhaus GmbH +001E4E (base 16) DAKO EDV-Ingenieur- und Systemhaus GmbH + Ernst-Haeckel-Platz 5/6 + Jena Thuringia 07745 + GERMANY + +00-1E-4F (hex) Dell Inc. +001E4F (base 16) Dell Inc. + One Dell Way, MS RR5-45 + Round Rock Texas 78682 + UNITED STATES + +00-1E-50 (hex) BATTISTONI RESEARCH +001E50 (base 16) BATTISTONI RESEARCH + PARCO DONICA 56 + FISCIANO SALERNO 84084 + ITALY + +00-1E-51 (hex) Converter Industry Srl +001E51 (base 16) Converter Industry Srl + Via Euclide, 12 + Forli' FC 47100 + ITALY + +00-1E-52 (hex) Apple Inc +001E52 (base 16) Apple Inc + 1 Infinite Loop + Cupertino California 95014 + UNITED STATES + +00-1E-53 (hex) Further Tech Co., LTD +001E53 (base 16) Further Tech Co., LTD + 8F,NO 421, Sungshan RD.,Taipei, Taiwn,R.O.C. + Taipei 110 + TAIWAN, REPUBLIC OF CHINA + +00-1E-54 (hex) TOYO ELECTRIC Corporation +001E54 (base 16) TOYO ELECTRIC Corporation + 1-39 HIKISAWA + KAGIYA-CHO + KASUGAI AICHI 480-0393 + JAPAN + +00-1E-55 (hex) COWON SYSTEMS,Inc. +001E55 (base 16) COWON SYSTEMS,Inc. + 6th Fl. COWON TOWER,689-3, + Yeoksam-Dong,Gangnam-Gu, + Seoul 135-080 + KOREA, REPUBLIC OF + +00-1E-56 (hex) Bally Wulff Entertainment GmbH +001E56 (base 16) Bally Wulff Entertainment GmbH + Maybachufer 48-51 + Berlin 12045 + GERMANY + +00-1E-57 (hex) ALCOMA, spol. s r.o. +001E57 (base 16) ALCOMA, spol. s r.o. + Klukovice 313, Praha - 5 + Praha 152 00 + CZECH REPUBLIC + +00-1E-58 (hex) D-Link Corporation +001E58 (base 16) D-Link Corporation + NO.289, Sinhu 3rd Rd., + Neihu District, Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-1E-59 (hex) Silicon Turnkey Express, LLC +001E59 (base 16) Silicon Turnkey Express, LLC + 749 Miner Road + Highland Heights Ohio 44143 + UNITED STATES + +00-1E-5A (hex) Motorola CHS +001E5A (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-1E-5B (hex) Unitron Company, Inc. +001E5B (base 16) Unitron Company, Inc. + 10925 Miller Road + Dallas TX 75238 + UNITED STATES + +00-1E-5C (hex) RB GeneralEkonomik +001E5C (base 16) RB GeneralEkonomik + Bulevar despota stefana 59a + Beograd Serbia 11000 + YUGOSLAVIA + +00-1E-5D (hex) Holosys d.o.o. +001E5D (base 16) Holosys d.o.o. + Matije Gupca 7 + Oroslavje 49243 + CROATIA + +00-1E-5E (hex) COmputime Ltd. +001E5E (base 16) COmputime Ltd. + 17/F Great Eagle Centre + 23 Harbour Road + Wanchai + HONG KONG + +00-1E-5F (hex) KwikByte, LLC +001E5F (base 16) KwikByte, LLC + 2430 W. 12th Street + Tempe AZ 85281 + UNITED STATES + +00-1E-60 (hex) Digital Lighting Systems, Inc +001E60 (base 16) Digital Lighting Systems, Inc + 12302 Sw 128th ct, #105 + Miami FL 33186 + UNITED STATES + +00-1E-61 (hex) ITEC GmbH +001E61 (base 16) ITEC GmbH + Lassnitzthal 300 + A-8200 Gleisdorf + AUSTRIA + +00-1E-62 (hex) Siemon +001E62 (base 16) Siemon + 27 Siemon Company Drive + Watertown CT 06795 + UNITED STATES + +00-1E-63 (hex) Vibro-Meter SA +001E63 (base 16) Vibro-Meter SA + Route de Moncor 4 + Fribourg CH-1701 + SWITZERLAND + +00-1E-64 (hex) Intel Corporate +001E64 (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1E-65 (hex) Intel Corporate +001E65 (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1E-66 (hex) RESOL Elektronische Regelungen GmbH +001E66 (base 16) RESOL Elektronische Regelungen GmbH + Heiskampstr. 10 + Hattingen NRW 45527 + GERMANY + +00-1E-67 (hex) Intel Corporate +001E67 (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1E-68 (hex) Quanta Computer +001E68 (base 16) Quanta Computer + NO. 211, WEN HWA 2RD., KUEI SHAN HSIANG + TAIPEI TAO YUAN SHIEN 333 + TAIWAN, REPUBLIC OF CHINA + +00-1E-69 (hex) Thomson Inc. +001E69 (base 16) Thomson Inc. + 101 West. 103rd Street + Indianapolis IN 46290 + UNITED STATES + +00-1E-6A (hex) Beijing Bluexon Technology Co.,Ltd +001E6A (base 16) Beijing Bluexon Technology Co.,Ltd + Jinqiuzhichun 7-301,Zhichun Rd., + Haidian District + Beijing 100088 + CHINA + +00-1E-6B (hex) Scientific Atlanta, A Cisco Company +001E6B (base 16) Scientific Atlanta, A Cisco Company + 5030 Sugarloaf Parkway + Lawrenceville GA 30044 + UNITED STATES + +00-1E-6C (hex) Spliced Networks LLC +001E6C (base 16) Spliced Networks LLC + 4820 Fisher Road + Athens OH 45701 + UNITED STATES + +00-1E-6D (hex) IT R&D Center +001E6D (base 16) IT R&D Center + 461-25, Jeonmin-dong,Yuseong-Gu + Daejeon 305-811 + KOREA, REPUBLIC OF + +00-1E-6E (hex) Shenzhen First Mile Communications Ltd +001E6E (base 16) Shenzhen First Mile Communications Ltd + 5th Floor, Block R3-A + High-Tech Industrial Park + Shenzhen Guangdong 518057 + CHINA + +00-1E-6F (hex) Magna-Power Electronics, Inc. +001E6F (base 16) Magna-Power Electronics, Inc. + 39 Royal Road + Flemington NJ 08822 + UNITED STATES + +00-1E-70 (hex) Cobham Defence Communications Ltd +001E70 (base 16) Cobham Defence Communications Ltd + Haslingden Road + Blackburn Lancashire BB12EE + UNITED KINGDOM + +00-1E-71 (hex) IgeaCare Systems Inc. +001E71 (base 16) IgeaCare Systems Inc. + 91 Granton Drive + Richmond Hill Ontario L4B 2N5 + CANADA + +00-1E-72 (hex) PCS +001E72 (base 16) PCS + RUE SAINT EXUPERY + BP70322 + LESCAR PYRENEES ATLANTIQUES 64230 + FRANCE + +00-1E-73 (hex) ZTE CORPORATION +001E73 (base 16) ZTE CORPORATION + 12/F ZTE Plaza,Keji Road South,Hi-Tech Industrial Park,Nanshan District, + Shenzhen GUANGDONG 518057 + CHINA + +00-1E-74 (hex) SAGEM COMMUNICATION +001E74 (base 16) SAGEM COMMUNICATION + 14 Rue Paul Dautier + Velizy 78457 + FRANCE + +00-1E-75 (hex) LG Electronics +001E75 (base 16) LG Electronics + 60-39,Kasan-dong,Kumchon-ku + Seoul 153-801 + KOREA, REPUBLIC OF + +00-1E-76 (hex) Thermo Fisher Scientific +001E76 (base 16) Thermo Fisher Scientific + 2215 Grand Avenue Parkway + Austin Texas 78728 + UNITED STATES + +00-1E-77 (hex) Air2App +001E77 (base 16) Air2App + 50 Old Forge Rd + Hanover MA 02339 + UNITED STATES + +00-1E-78 (hex) Owitek Technology Ltd., +001E78 (base 16) Owitek Technology Ltd., + No.18, Wanda Rd., Yangmei + Taoyuan County 326 + TAIWAN, REPUBLIC OF CHINA + +00-1E-79 (hex) Cisco Systems +001E79 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-7A (hex) Cisco Systems +001E7A (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-7B (hex) R.I.CO. S.r.l. +001E7B (base 16) R.I.CO. S.r.l. + via Adriatica, 17 + Castelfidardo AN 60022 + ITALY + +00-1E-7C (hex) Taiwick Limited +001E7C (base 16) Taiwick Limited + 5/F., Block E, Hing Yip Factory Bldg., + 31 Hing Yip Street., Kwun Tong, Kln., HK. + China 852 + HONG KONG + +00-1E-7D (hex) Samsung Electronics Co.,Ltd +001E7D (base 16) Samsung Electronics Co.,Ltd + #94-1, Imsoo-Dong + Gumi Gyeongbuk 730-350 + KOREA, REPUBLIC OF + +00-1E-7E (hex) Nortel +001E7E (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1E-7F (hex) CBM of America +001E7F (base 16) CBM of America + 1455 West Newport Center Drive + Deerfield Beach Florida 33442 + UNITED STATES + +00-1E-80 (hex) Last Mile Ltd. +001E80 (base 16) Last Mile Ltd. + 12/F VIP Commercial Centre + 120 Canton Road + Tsimshatsui + HONG KONG + +00-1E-81 (hex) CNB Technology Inc. +001E81 (base 16) CNB Technology Inc. + #701 Star Valley, 60-11 Gasan-Dong, + Geumcheon-Gu + Seoul 153777 + KOREA, REPUBLIC OF + +00-1E-82 (hex) Pliant Technology, Inc. +001E82 (base 16) Pliant Technology, Inc. + 1501 McCarthy + Suite AE200 + Milpitas CA 95035 + UNITED STATES + +00-1E-83 (hex) LAN/MAN Standards Association (LMSC) +001E83 (base 16) LAN/MAN Standards Association (LMSC) + C/O IEEE Standards Association + 445 Hoes Lane, + Piscataway NJ 08855 + UNITED STATES + +00-1E-84 (hex) Pika Technologies Inc. +001E84 (base 16) Pika Technologies Inc. + 535 Legget Drive + Suite 400 + Ottawa Ontario K2K 3B8 + CANADA + +00-1E-85 (hex) Lagotek Corporation +001E85 (base 16) Lagotek Corporation + 11661 SE 1st St. #208 + Bellevue WA 98005 + UNITED STATES + +00-1E-86 (hex) MEL Co.,Ltd. +001E86 (base 16) MEL Co.,Ltd. + Tsukagoshi 5-5-1,Warabi-shi,Saitama,Japna + Warabi Saitama 335-0002 + JAPAN + +00-1E-87 (hex) Realease Limited +001E87 (base 16) Realease Limited + 15/F, Morrison Commercial Building + 31 Morrison Hill Road + Wan Chai + HONG KONG + +00-1E-88 (hex) ANDOR SYSTEM SUPPORT CO., LTD. +001E88 (base 16) ANDOR SYSTEM SUPPORT CO., LTD. + Minami-Shinagawa 2-15-8 + Sinagawa Tokyo 140-0004 + JAPAN + +00-1E-89 (hex) CRFS Limited +001E89 (base 16) CRFS Limited + Building 7200 + Cambridge Research Park + Waterbeach Cambridgeshire CB25 9TL + UNITED KINGDOM + +00-1E-8A (hex) eCopy, Inc +001E8A (base 16) eCopy, Inc + 1 Oracle Dr + Nashua NH 03062 + UNITED STATES + +00-1E-8B (hex) Hannet Telecom Co., Ltd. +001E8B (base 16) Hannet Telecom Co., Ltd. + 3F. Duksu BD. 234-9 + Nonhyeon-Dong, GangNam-Gu + Seoul 135-830 + KOREA, REPUBLIC OF + +00-1E-8C (hex) ASUSTek COMPUTER INC. +001E8C (base 16) ASUSTek COMPUTER INC. + 15,Li-Te Rd.,Peitou + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-1E-8D (hex) Motorola Mobile Devices +001E8D (base 16) Motorola Mobile Devices + 600 N. US 45 + Libertyville Illinois 60048 + UNITED STATES + +00-1E-8E (hex) Hunkeler AG +001E8E (base 16) Hunkeler AG + Bahnhofstrasse 31 + Wikon Lucerne 4806 + SWITZERLAND + +00-1E-8F (hex) CANON INC. +001E8F (base 16) CANON INC. + 3-30-2 + Shimomaruko + Ohta-Ku Tokyo 146-8501 + JAPAN + +00-1E-90 (hex) Elitegroup Computer Systems Co +001E90 (base 16) Elitegroup Computer Systems Co + No.239, Sec. 2, Ti Ding Blvd + Taipei 11493 + TAIWAN, REPUBLIC OF CHINA + +00-1E-91 (hex) KIMIN Electronic Co., Ltd. +001E91 (base 16) KIMIN Electronic Co., Ltd. + 293-4, Dongdan-Dong + Gumi-city GyeongBuk 730-906 + KOREA, REPUBLIC OF + +00-1E-92 (hex) JEULIN S.A. +001E92 (base 16) JEULIN S.A. + ZI N°1 + rue Jacques Monod + Evreux F27019 + FRANCE + +00-1E-93 (hex) CiriTech Systems Inc +001E93 (base 16) CiriTech Systems Inc + 920 Hillview Ct + #170 + Milpitas CA 95035 + UNITED STATES + +00-1E-94 (hex) SUPERCOM TECHNOLOGY CORPORATION +001E94 (base 16) SUPERCOM TECHNOLOGY CORPORATION + 8F, NO 100-1, Ming-Chuan Rd. + Shing Tien Taipei 231 + TAIWAN, REPUBLIC OF CHINA + +00-1E-95 (hex) SIGMALINK +001E95 (base 16) SIGMALINK + DooSan VentureDigm 1028, + 126-1 Pyungchon-dong, Dongan-Ku + Anyang-City Kyunggi-do 431-070 + KOREA, REPUBLIC OF + +00-1E-96 (hex) Sepura Plc +001E96 (base 16) Sepura Plc + Radio House + St Andrews Road + Cambridge CAMBRIDGESHIRE CB4 1GR + UNITED KINGDOM + +00-1E-97 (hex) Medium Link System Technology CO., LTD, +001E97 (base 16) Medium Link System Technology CO., LTD, + 11F.-2, No.7, Alley 92, Lane 77, Sec. 4, Sinhai Rd., + Wunshan District, Taipei 11693 + TAIWAN, REPUBLIC OF CHINA + +00-1E-98 (hex) GreenLine Communications +001E98 (base 16) GreenLine Communications + Alrabiah, Alrabeea street + Building 8, P.O. Box 921 + Amman Central Region 11953 + JORDAN + +00-1E-99 (hex) Vantanol Industrial Corporation +001E99 (base 16) Vantanol Industrial Corporation + 9F, NO 31 . Shin-Tai Road + Jubei City Shinchu 302 + TAIWAN, REPUBLIC OF CHINA + +00-1E-9A (hex) HAMILTON Bonaduz AG +001E9A (base 16) HAMILTON Bonaduz AG + Via Crusch 8 + Bonaduz Graubuenden 7402 + SWITZERLAND + +00-1E-9B (hex) San-Eisha, Ltd. +001E9B (base 16) San-Eisha, Ltd. + 2-1 Ebara 5-chome + Shinagawa-ku Tokyo 142-8611 + JAPAN + +00-1E-9C (hex) Fidustron INC +001E9C (base 16) Fidustron INC + NO.770-6, Jhongiheng Rd. + Jhonghe City Taipei County 235 + TAIWAN, REPUBLIC OF CHINA + +00-1E-9D (hex) Recall Technologies, Inc. +001E9D (base 16) Recall Technologies, Inc. + 130 Enterprise Ave. + Suite F + Palm Bay FL 32909 + UNITED STATES + +00-1E-9E (hex) ddm hopt + schuler Gmbh + Co. KG +001E9E (base 16) ddm hopt + schuler Gmbh + Co. KG + Koenigsberger Strasse 12 + Rottweil Baden-Wuerttemberg 78626 + GERMANY + +00-1E-9F (hex) Visioneering Systems, Inc. +001E9F (base 16) Visioneering Systems, Inc. + 5931 Sea Lion Place + Suite 109 + Carlsbad California 92010 + UNITED STATES + +00-1E-A0 (hex) XLN-t +001EA0 (base 16) XLN-t + Hoogstraat 52 + Putte Antwerp B2580 + BELGIUM + +00-1E-A1 (hex) Brunata a/s +001EA1 (base 16) Brunata a/s + Vesterlundvej 14 + Herlev 2730 + DENMARK + +00-1E-A2 (hex) Symx Systems, Inc. +001EA2 (base 16) Symx Systems, Inc. + 6320 NW 84th Avenue + Miami Florida 33166 + UNITED STATES + +00-1E-A3 (hex) Nokia Danmark A/S +001EA3 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1E-A4 (hex) Nokia Danmark A/S +001EA4 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1E-A5 (hex) ROBOTOUS, Inc. +001EA5 (base 16) ROBOTOUS, Inc. + Nex Center-201(Lab.), SK n Technopark + Sangdaewon-dong, Jungwon-gu + Seongnam-si Gyeonggi-do 462-120 + KOREA, REPUBLIC OF + +00-1E-A6 (hex) Best IT World (India) Pvt. Ltd. +001EA6 (base 16) Best IT World (India) Pvt. Ltd. + 87/70/93 Mistry Industrial Complex, + MIDC Cross Road 'A', Andheri (East) + Mumbai Maharashtra 400093 + INDIA + +00-1E-A7 (hex) ActionTec Electronics, Inc +001EA7 (base 16) ActionTec Electronics, Inc + 760 North Mary Ave + Sunnyvale CA 94086 + UNITED STATES + +00-1E-A8 (hex) Datang Mobile Communications Equipment CO.,LTD +001EA8 (base 16) Datang Mobile Communications Equipment CO.,LTD + No.29,Xueyuan Rd.,Haidian District,Beijing,100083 P.R.China + Beijing 100083 + CHINA + +00-1E-A9 (hex) Nintendo Co., Ltd. +001EA9 (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO KYOTO 601-8501 + JAPAN + +00-1E-AA (hex) E-Senza Technologies GmbH +001EAA (base 16) E-Senza Technologies GmbH + Blarerstrasse 56 + Konstanz BW 78462 + GERMANY + +00-1E-AB (hex) TeleWell Oy +001EAB (base 16) TeleWell Oy + Alahotie 14 b + Jarvenpaa Uusimaa 04430 + FINLAND + +00-1E-AC (hex) Armadeus Systems +001EAC (base 16) Armadeus Systems + Technopole - 40, rue Marc Seguin + BP 2118 + MULHOUSE cedex Haut-Rhin 68060 + FRANCE + +00-1E-AD (hex) Wingtech Group Limited +001EAD (base 16) Wingtech Group Limited + 6th floor, Unit G, No.668, East Beijing Road, + Shanghai 200001 + CHINA + +00-1E-AE (hex) Continental Automotive Systems +001EAE (base 16) Continental Automotive Systems + 21440 West Lake Cook Road + Deer Park IL 60010 + UNITED STATES + +00-1E-AF (hex) Ophir Optronics Ltd +001EAF (base 16) Ophir Optronics Ltd + POB 45021 + Jerusalem 91450 + ISRAEL + +00-1E-B0 (hex) ImesD Electronica S.L. +001EB0 (base 16) ImesD Electronica S.L. + Entença 81 + Barcelona 08015 + SPAIN + +00-1E-B1 (hex) Cryptsoft Pty Ltd +001EB1 (base 16) Cryptsoft Pty Ltd + P.O. Box 6389 + Fairfield Gardens Queensland 4103 + AUSTRALIA + +00-1E-B2 (hex) LG innotek +001EB2 (base 16) LG innotek + Hanyang Univ. 1271, Sa-dong, Sangrok-gu + Ansan-si Gyeonggi-do 426-791 + KOREA, REPUBLIC OF + +00-1E-B3 (hex) Primex Wireless +001EB3 (base 16) Primex Wireless + 965 Wells Street + Lake Geneva WI 53147 + UNITED STATES + +00-1E-B4 (hex) UNIFAT TECHNOLOGY LTD. +001EB4 (base 16) UNIFAT TECHNOLOGY LTD. + 7/FLOOR SUI HONG IND. BLDG., + 547-549 CASTLE PEAK ROAD + KWAI CHUNG, N.T. + HONG KONG + +00-1E-B5 (hex) Ever Sparkle Technologies Ltd +001EB5 (base 16) Ever Sparkle Technologies Ltd + Unit 403, Nan Fung Commercial Centre + 19, Lam Lok St. + Kowloon Bay Kowloon + HONG KONG + +00-1E-B6 (hex) TAG Heuer SA +001EB6 (base 16) TAG Heuer SA + Rue Louis-Joseph Chevrolet 6A + la Chaux-de-Fonds NE 2300 + SWITZERLAND + +00-1E-B7 (hex) TBTech, Co., Ltd. +001EB7 (base 16) TBTech, Co., Ltd. + 1109, Hyundai Krim, 1330-18, Seocho-dong, + Seocho-Gu, + Seoul 137-070 + KOREA, REPUBLIC OF + +00-1E-B8 (hex) Fortis, Inc. +001EB8 (base 16) Fortis, Inc. + #502 Techno plaza, 149-10 Yatap-dong, + Bundang-gu, + Seongnam-si, Gyeonggi-do, 463-816 + KOREA, REPUBLIC OF + +00-1E-B9 (hex) Sing Fai Technology Limited +001EB9 (base 16) Sing Fai Technology Limited + No.700, Kaohsiung University Rd., Nan-Tzu Dist. + NUK Advanced Business Incubation Center + Kaohsiung 811 + TAIWAN, REPUBLIC OF CHINA + +00-1E-BA (hex) High Density Devices AS +001EBA (base 16) High Density Devices AS + Vestre Strandgate 26 + Kristiansand 4611 + NORWAY + +00-1E-BB (hex) BLUELIGHT TECHNOLOGY INC. +001EBB (base 16) BLUELIGHT TECHNOLOGY INC. + 6472 CAMDEN AVE., SUITE 102B + SAN JOSE CA 95120 + UNITED STATES + +00-1E-BC (hex) WINTECH AUTOMATION CO.,LTD. +001EBC (base 16) WINTECH AUTOMATION CO.,LTD. + #1115, TAEKWANG BLVD. + YOUNGRONG-DONG, YOUNGTONG-GU + SUWON-SI KYUNGGI 443-816 + KOREA, REPUBLIC OF + +00-1E-BD (hex) Cisco Systems +001EBD (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-BE (hex) Cisco Systems +001EBE (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-BF (hex) Haas Automation Inc. +001EBF (base 16) Haas Automation Inc. + 2800 Sturgis Rd + Oxnard CA 93030 + UNITED STATES + +00-1E-C0 (hex) PRIVATE +001EC0 (base 16) + +00-1E-C1 (hex) 3COM EUROPE LTD +001EC1 (base 16) 3COM EUROPE LTD + Peoplebuilding 2 + Maylands Avenue + Hemel Hempstead HERTS. HP2 4NW + UNITED KINGDOM + +00-1E-C2 (hex) Apple, Inc +001EC2 (base 16) Apple, Inc + 1 Inifinte Loop + Cupertino CA 95014 + UNITED STATES + +00-1E-C3 (hex) Kozio, Inc. +001EC3 (base 16) Kozio, Inc. + 2400 Trade Centre Ave + Longmont CO 80503 + UNITED STATES + +00-1E-C4 (hex) Celio Corp +001EC4 (base 16) Celio Corp + 265 E 100 S # 280 + Salt Lake City UT 84111 + UNITED STATES + +00-1E-C5 (hex) Middle Atlantic Products Inc +001EC5 (base 16) Middle Atlantic Products Inc + 300 Fairfield Road + Fairfield NJ 07004 + UNITED STATES + +00-1E-C6 (hex) Obvius Holdings LLC +001EC6 (base 16) Obvius Holdings LLC + 20811 NW Cornell Road + Suite 700 + Hillsboro OR 97124 + UNITED STATES + +00-1E-C7 (hex) 2Wire +001EC7 (base 16) 2Wire + 1704 Automation Prkwy + San Jose Ca 95131 + UNITED STATES + +00-1E-C8 (hex) Rapid Mobile (Pty) Ltd +001EC8 (base 16) Rapid Mobile (Pty) Ltd + Building C,D,E Apex Corporate Park + Quintin Brand Street, Persequor Technopark + Pretoria Gauteng 0020 + SOUTH AFRICA + +00-1E-C9 (hex) Dell Inc +001EC9 (base 16) Dell Inc + One Dell Way, MS RR5-45 + Round Rock Texas 78682 + UNITED STATES + +00-1E-CA (hex) Nortel +001ECA (base 16) Nortel + 8200 Dixie Road + Suite 100 + Brampton Ontario L6T 5P6 + CANADA + +00-1E-CB (hex) "RPC "Energoautomatika" Ltd +001ECB (base 16) "RPC "Energoautomatika" Ltd + Krasnokazarmennaya st., 13/1 + Moscow 111250 + RUSSIAN FEDERATION + +00-1E-CC (hex) CDVI +001ECC (base 16) CDVI + 31 Avenue du Général Leclerc + PANTIN Ile de France 93500 + FRANCE + +00-1E-CD (hex) KYLAND +001ECD (base 16) KYLAND + No95 Building, + Southeast Corner of Xisanqi Bridge, + Haidian Beijing 100096 + CHINA + +00-1E-CE (hex) BISA Technologies (Hong Kong) Limited +001ECE (base 16) BISA Technologies (Hong Kong) Limited + 1102, Trans Asia Centre, + 18 Kin Hong Street, + Kwai Chung + HONG KONG + +00-1E-CF (hex) PHILIPS ELECTRONICS UK LTD +001ECF (base 16) PHILIPS ELECTRONICS UK LTD + PHILIPS CENTRE + GUILDFORD BUSINESS PARK + GUILDFORD SURREY GU2 8XH + UNITED KINGDOM + +00-1E-D0 (hex) CONNEXIUM +001ED0 (base 16) CONNEXIUM + 39 L'ALBAREDE + AUZIELLE 31650 + FRANCE + +00-1E-D1 (hex) Keyprocessor B.V. +001ED1 (base 16) Keyprocessor B.V. + Paasheuvelweg 20 + Amsterdam NH 1105 BJ + NETHERLANDS + +00-1E-D2 (hex) Ray Shine Video Technology Inc +001ED2 (base 16) Ray Shine Video Technology Inc + 6F,No.98,Sec.1,Xintai 5th Rd. + Xizhi City Taipei County 221 + TAIWAN, REPUBLIC OF CHINA + +00-1E-D3 (hex) Dot Technology Int'l Co., Ltd. +001ED3 (base 16) Dot Technology Int'l Co., Ltd. + Unit 1001, Fourseas Building 208-212, Nathan Road + Kowloon + HONG KONG + +00-1E-D4 (hex) Doble Engineering +001ED4 (base 16) Doble Engineering + 85 Walnut Street + Watertown Massachusetts 02472 + UNITED STATES + +00-1E-D5 (hex) Tekon-Automatics +001ED5 (base 16) Tekon-Automatics + Zelenograd, 512-29 + Moscow 124482 + RUSSIAN FEDERATION + +00-1E-D6 (hex) Alentec & Orion AB +001ED6 (base 16) Alentec & Orion AB + Box 108 + 132 23 Saltsjö-Boo + SWEDEN + +00-1E-D7 (hex) H-Stream Wireless, Inc. +001ED7 (base 16) H-Stream Wireless, Inc. + 2595 East Bayshore Road + Suite 100 + Palo Alto CA 94303 + UNITED STATES + +00-1E-D8 (hex) Digital United Inc. +001ED8 (base 16) Digital United Inc. + 9F, No.220, Gangcian Rd. + Taipei 11444 + TAIWAN, REPUBLIC OF CHINA + +00-1E-D9 (hex) Mitsubishi Precision Co.,LTd. +001ED9 (base 16) Mitsubishi Precision Co.,LTd. + 345 KAMIMACHIYA + KAMAKURA-City KANAGAWA-Prefecture 247-8505 + JAPAN + +00-1E-DA (hex) Wesemann Elektrotechniek B.V. +001EDA (base 16) Wesemann Elektrotechniek B.V. + Droogbloem 31 + Rotterdam Zuid-Holland 3068 AW + NETHERLANDS + +00-1E-DB (hex) Giken Trastem Co., Ltd. +001EDB (base 16) Giken Trastem Co., Ltd. + 4-1 Takeda Dankawaracho Fushimiku + Kyoto 612-8414 + JAPAN + +00-1E-DC (hex) Sony Ericsson Mobile Communications AB +001EDC (base 16) Sony Ericsson Mobile Communications AB + Nya Vattentornet + Lund SE 221 88 + SWEDEN + +00-1E-DD (hex) WASKO S.A. +001EDD (base 16) WASKO S.A. + Berbeckiego 6 + Gliwice Silesia 44-100 + POLAND + +00-1E-DE (hex) BYD COMPANY LIMITED +001EDE (base 16) BYD COMPANY LIMITED + NO.1,Baoping Road,Baolong Industrial Town,Longgang + SHEN ZHEN Guangdong 518116 + CHINA + +00-1E-DF (hex) Master Industrialization Center Kista +001EDF (base 16) Master Industrialization Center Kista + Torshamnsgatan 36 + Kista + Stockholm SE-164 80 + SWEDEN + +00-1E-E0 (hex) Urmet Domus SpA +001EE0 (base 16) Urmet Domus SpA + Via Bologna 188/C + Torino TO I-10154 + ITALY + +00-1E-E1 (hex) Samsung Electronics Co.,Ltd +001EE1 (base 16) Samsung Electronics Co.,Ltd + #94-1, Imsoo-Dong + Gumi Gyeongbuk 730-350 + KOREA, REPUBLIC OF + +00-1E-E2 (hex) Samsung Electronics Co.,Ltd +001EE2 (base 16) Samsung Electronics Co.,Ltd + #94-1, Imsoo-Dong + Gumi Gyeongbuk 730-350 + KOREA, REPUBLIC OF + +00-1E-E3 (hex) T&W Electronics (ShenZhen) Co.,Ltd +001EE3 (base 16) T&W Electronics (ShenZhen) Co.,Ltd + 2F Baiying Building, No.19, NanhaiRd., Nanshan Dist + ShenZhen GuangDong 518052 + CHINA + +00-1E-E4 (hex) ACS Solutions France +001EE4 (base 16) ACS Solutions France + Rue Claude Chappe + Guilherand Granges Ardeche 07503 + FRANCE + +00-1E-E5 (hex) Cisco-Linksys, LLC +001EE5 (base 16) Cisco-Linksys, LLC + 121 Theory Drive + Irvine California 92612 + UNITED STATES + +00-1E-E6 (hex) Shenzhen Advanced Video Info-Tech Co., Ltd. +001EE6 (base 16) Shenzhen Advanced Video Info-Tech Co., Ltd. + Tianxiang 11A, Tian'an Cyber Park , Futian + Shenzhen Guangdong 518048 + CHINA + +00-1E-E7 (hex) Epic Systems Inc +001EE7 (base 16) Epic Systems Inc + 390 S. Abbott Ave + Milpitas CA 95035 + UNITED STATES + +00-1E-E8 (hex) Mytek +001EE8 (base 16) Mytek + 151 Lafayette Str 3 Fl + New York NY 10013 + UNITED STATES + +00-1E-E9 (hex) Stoneridge Electronics AB +001EE9 (base 16) Stoneridge Electronics AB + Gårdsfogdevägen 18A + Bromma Stockholm 168 66 + SWEDEN + +00-1E-EA (hex) Sensor Switch, Inc. +001EEA (base 16) Sensor Switch, Inc. + 900 Northrop Road + Wallingford CT 06492 + UNITED STATES + +00-1E-EB (hex) Talk-A-Phone Co. +001EEB (base 16) Talk-A-Phone Co. + 5013 N. Kedzie Ave. + Chicago IL 60625 + UNITED STATES + +00-1E-EC (hex) COMPAL INFORMATION (KUNSHAN) CO., LTD. +001EEC (base 16) COMPAL INFORMATION (KUNSHAN) CO., LTD. + NO. 25, THE 3RD Street + KUNSHAN EXPORT PROCESSING ZONE + KUNSHAN CITY SUZHOU PROVINCE 215300 + CHINA + +00-1E-ED (hex) Adventiq Ltd. +001EED (base 16) Adventiq Ltd. + Technology House + Trafalgar Way + Bar Hill Cambs. CB3 8SQ + UNITED KINGDOM + +00-1E-EE (hex) ETL Systems Ltd +001EEE (base 16) ETL Systems Ltd + Coldwell Radio Station + Madley + Hereford Herefordshire HR2 9NE + UNITED KINGDOM + +00-1E-EF (hex) Cantronic International Limited +001EEF (base 16) Cantronic International Limited + Unit 515-516, Building 15, East Wing, No 8 Science Park West Avenue, Hong Kong Science Park Phase II + Shatin New Territories 852 + HONG KONG + +00-1E-F0 (hex) Gigafin Networks +001EF0 (base 16) Gigafin Networks + 19050 Pruneridge + Suite 200 + Cupertino CA 95014 + UNITED STATES + +00-1E-F1 (hex) Servimat +001EF1 (base 16) Servimat + ZAET Les Haies + Rue Benoit Frachon + St Maximin Oise 60740 + FRANCE + +00-1E-F2 (hex) Micro Motion Inc +001EF2 (base 16) Micro Motion Inc + 7070 Winchester Circle + Boulder CO 80301 + UNITED STATES + +00-1E-F3 (hex) From2 +001EF3 (base 16) From2 + 2F, Mester inc + 1687-3, Sinil-dong + Daejeon 306-230 + KOREA, REPUBLIC OF + +00-1E-F4 (hex) L-3 Communications Display Systems +001EF4 (base 16) L-3 Communications Display Systems + 1355 Bluegrass Lakes Parkway + Alpharetta GA 30004-8458 + UNITED STATES + +00-1E-F5 (hex) Hitek Automated Inc. +001EF5 (base 16) Hitek Automated Inc. + Room C3-901, No.383, Huamen Shijia + Wensanlu Road, + Hangzhou 310012 + CHINA + +00-1E-F6 (hex) Cisco Systems +001EF6 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-F7 (hex) Cisco Systems +001EF7 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1E-F8 (hex) Emfinity Inc. +001EF8 (base 16) Emfinity Inc. + 111 Elm Street + Suite 201 + Sudbury Ontario P3C1T3 + CANADA + +00-1E-F9 (hex) Pascom Kommunikations systeme GmbH. +001EF9 (base 16) Pascom Kommunikations systeme GmbH. + Technologiestr. 4 + Arbing Upper Austria 4332 + AUSTRIA + +00-1E-FA (hex) PROTEI Ltd. +001EFA (base 16) PROTEI Ltd. + 60A B.Sampsonievsky, Business Center + St.Petersburg RU 194044 + RUSSIAN FEDERATION + +00-1E-FB (hex) Trio Motion Technology Ltd +001EFB (base 16) Trio Motion Technology Ltd + Shannon Way + Tewkesbury Gloucestershire GL20 8ND + UNITED KINGDOM + +00-1E-FC (hex) JSC "MASSA-K" +001EFC (base 16) JSC "MASSA-K" + 15, A, Pirogovskaya nab. + Saint-Petersburg Leningradskiy reg. 194044 + RUSSIAN FEDERATION + +00-1E-FD (hex) Microbit 2.0 AB +001EFD (base 16) Microbit 2.0 AB + Nystaden 1 + KALIX 95261 + SWEDEN + +00-1E-FE (hex) LEVEL s.r.o. +001EFE (base 16) LEVEL s.r.o. + Plhovská 1997 + Náchod 547 01 + CZECH REPUBLIC + +00-1E-FF (hex) Mueller-Elektronik GmbH & Co. KG +001EFF (base 16) Mueller-Elektronik GmbH & Co. KG + Franz-Kleine-Str. 18 + Salzkotten NRW 33154 + GERMANY + +00-1F-00 (hex) Nokia Danmark A/S +001F00 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790V + DENMARK + +00-1F-01 (hex) Nokia Danmark A/S +001F01 (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790v + DENMARK + +00-1F-02 (hex) Pixelmetrix Corporation Pte Ltd +001F02 (base 16) Pixelmetrix Corporation Pte Ltd + 31 Kaki Bukit Road 3 + #07-03, Techlink + 417818 + SINGAPORE + +00-1F-03 (hex) NUM AG +001F03 (base 16) NUM AG + Battenhusstrasse 16 + Teufen AR 9053 + SWITZERLAND + +00-1F-04 (hex) Granch Ltd. +001F04 (base 16) Granch Ltd. + 40 Koroleva str. + 53 Pisareva str. + Novosibirsk NSO 630015 + RUSSIAN FEDERATION + +00-1F-05 (hex) iTAS Technology Corp. +001F05 (base 16) iTAS Technology Corp. + No. 6, Industry E., Rd.,III Science Park + Hsinchu 30075 + TAIWAN, REPUBLIC OF CHINA + +00-1F-06 (hex) Integrated Dispatch Solutions +001F06 (base 16) Integrated Dispatch Solutions + 645 Mountain Ave + Wyckoff NJ 07481 + UNITED STATES + +00-1F-07 (hex) AZTEQ Mobile +001F07 (base 16) AZTEQ Mobile + Suite 210, 525 University Ave + Palo Alto CA 94301 + UNITED STATES + +00-1F-08 (hex) RISCO LTD +001F08 (base 16) RISCO LTD + 32 Hacharoshet St + Kiriat Malachi 83101 + ISRAEL + +00-1F-09 (hex) JASTEC CO., LTD. +001F09 (base 16) JASTEC CO., LTD. + Jastec B/D, 92-7 + Kum-gok Dong, Boon-Dang Gu + Seong-nam Si Kyung-gi Do 463-804 + KOREA, REPUBLIC OF + +00-1F-0A (hex) Nortel +001F0A (base 16) Nortel + 1830 Matheson Boulevard + Suite 1 + Mississauga Ontario L4W 0B3 + CANADA + +00-1F-0B (hex) Federal State Unitary Enterprise Industrial Union"Electropribor" +001F0B (base 16) Federal State Unitary Enterprise Industrial Union"Electropribor" + + Penza 440011 + RUSSIAN FEDERATION + +00-1F-0C (hex) Intelligent Digital Services GmbH +001F0C (base 16) Intelligent Digital Services GmbH + Grevesmuehlener Strasse 8 + Mallentin Mecklenburg-Vorpommern 23639 + GERMANY + +00-1F-0D (hex) L3 Communications - Telemetry West +001F0D (base 16) L3 Communications - Telemetry West + 9020 Balboa Ave + San Diego CA 92123 + UNITED STATES + +00-1F-0E (hex) Japan Kyastem Co., Ltd +001F0E (base 16) Japan Kyastem Co., Ltd + 1-4-4 + Nishiki-cho + Tachikawa Tokyo 190-0022 + JAPAN + +00-1F-0F (hex) Select Engineered Systems +001F0F (base 16) Select Engineered Systems + 7991 W. 26 Ave + Hialeah Florida 33016 + UNITED STATES + +00-1F-10 (hex) TOLEDO DO BRASIL INDUSTRIA DE BALANCAS LTDA +001F10 (base 16) TOLEDO DO BRASIL INDUSTRIA DE BALANCAS LTDA + RUA MANOEL CREMONESI, 1 + ESTRADA SAMUEL AIZEMBERG, 345 + SAO BERNARDO DO CAMPO SP 09851-900 + BRAZIL + +00-1F-11 (hex) OPENMOKO, INC. +001F11 (base 16) OPENMOKO, INC. + 7F, No 300, Yang Guang Street + NeiHu + Taipei 11491 + TAIWAN, REPUBLIC OF CHINA + +00-1F-12 (hex) Juniper Networks +001F12 (base 16) Juniper Networks + 1194 N Mathilda Avenue + Sunnyvale CA 94089 + UNITED STATES + +00-1F-13 (hex) S.& A.S. Ltd. +001F13 (base 16) S.& A.S. Ltd. + Boutros Bldg. 1st bsmt + Ghabi Street + Beirut 2067 7808 + LEBANON + +00-1F-14 (hex) NexG +001F14 (base 16) NexG + 5F Seoul Academy Bldg, Daechi-Dong, Gangnam-Gu, + Seoul 135-280 + KOREA, REPUBLIC OF + +00-1F-15 (hex) Bioscrypt Inc +001F15 (base 16) Bioscrypt Inc + 505 Cochrane Drive + Markham Ontario L3R 8E3 + CANADA + +00-1F-16 (hex) Wistron Corporation +001F16 (base 16) Wistron Corporation + 21F, 88, Sec.1,Hsin Tai Wu Rd., Hsichih, + Taipei Hsien 221 + TAIWAN, REPUBLIC OF CHINA + +00-1F-17 (hex) IDX Company, Ltd. +001F17 (base 16) IDX Company, Ltd. + 6-28-11 Shukugawara, Tana-ku + Kawasaki-Shi Kanagawa-Ken 2140021 + JAPAN + +00-1F-18 (hex) Hakusan.Mfg.Co,.Ltd +001F18 (base 16) Hakusan.Mfg.Co,.Ltd + Tomin-Kougyou-Ikebukuro BLD.5F + 2-26-5 Minami-Ikebukuro + Tosima Ward Tokyo-Met. 171-0022 + JAPAN + +00-1F-19 (hex) BEN-RI ELECTRONICA S.A. +001F19 (base 16) BEN-RI ELECTRONICA S.A. + POL. IND. VENTORRO DEL CANO + C/. LOZOYA 8 + ALCORCON MADRID 28925 + SPAIN + +00-1F-1A (hex) Prominvest +001F1A (base 16) Prominvest + 7, Bobruiskaya ulica + Saint-Petersburg North-West Federal District 195009 + RUSSIAN FEDERATION + +00-1F-1B (hex) RoyalTek Company Ltd. +001F1B (base 16) RoyalTek Company Ltd. + Suite 9F-1, No. 1071, Chung Cheng Rd. + Taoyuan Shien Taoyuan 330 + TAIWAN, REPUBLIC OF CHINA + +00-1F-1C (hex) KOBISHI ELECTRIC Co.,Ltd. +001F1C (base 16) KOBISHI ELECTRIC Co.,Ltd. + 1805-1 + Kamiya + Kounosu-shi Saitama-ken 365-0027 + JAPAN + +00-1F-1D (hex) Atlas Material Testing Technology LLC +001F1D (base 16) Atlas Material Testing Technology LLC + 4114 N. Ravenswood Ave. + Chicago IL 60613 + UNITED STATES + +00-1F-1E (hex) Astec Technology Co., Ltd +001F1E (base 16) Astec Technology Co., Ltd + 12F, No.2, Jian Ba Rd. + Chung Ho Taipei Hsien 235 + TAIWAN, REPUBLIC OF CHINA + +00-1F-1F (hex) Edimax Technology Co. Ltd. +001F1F (base 16) Edimax Technology Co. Ltd. + No. 3, Wu-Chuan 3rd Road, Wu-Ku Industrial Park, + Taipei Hsien 248 + TAIWAN, REPUBLIC OF CHINA + +00-1F-20 (hex) Logitech Europe SA +001F20 (base 16) Logitech Europe SA + Moulin du Choc D + Romanel sur Morges CH 1122 + SWITZERLAND + +00-1F-21 (hex) Inner Mongolia Yin An Science & Technology Development Co.,L +001F21 (base 16) Inner Mongolia Yin An Science & Technology Development Co.,L + YinAn Building Yiwei Road.RuYi + Development Zone,Hohhot + Beijing 010010 + CHINA + +00-1F-22 (hex) Fiberxon, Inc. +001F22 (base 16) Fiberxon, Inc. + 5201 Great America Parkway + Suite 340 + Santa Clara CA 95054 + UNITED STATES + +00-1F-23 (hex) Interacoustics +001F23 (base 16) Interacoustics + Drejervaenget 8 + Assens DK 5610 + DENMARK + +00-1F-24 (hex) DIGITVIEW TECHNOLOGY CO., LTD. +001F24 (base 16) DIGITVIEW TECHNOLOGY CO., LTD. + NO. 14-22, TIAN-FU , + SANSIA TOWNSHIP, + TAIPEI COUNTY 237 + TAIWAN, REPUBLIC OF CHINA + +00-1F-25 (hex) MBS GmbH +001F25 (base 16) MBS GmbH + Römerstraße 15 + Krefeld Nordrhein-Westfalen 47809 + GERMANY + +00-1F-26 (hex) Cisco Systems +001F26 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1F-27 (hex) Cisco Systems +001F27 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1F-28 (hex) ProCurve Networking by HP +001F28 (base 16) ProCurve Networking by HP + 8000 Foothills Blvd + Roseville CA 95747 + UNITED STATES + +00-1F-29 (hex) Hewlett Packard +001F29 (base 16) Hewlett Packard + 20555 State Highway 249 + MS040802 + Houston TX 77070 + UNITED STATES + +00-1F-2A (hex) ACCM +001F2A (base 16) ACCM + Obour Industrial City, Industrial zone A, lot14, block 12006. + Cairo + EGYPT + +00-1F-2B (hex) Orange Logic +001F2B (base 16) Orange Logic + #706 AceTechnoTower 10-cha,470-5 + Gasan-dong Geumcheon-gu + SEOUL 153-789 + KOREA, REPUBLIC OF + +00-1F-2C (hex) Starbridge Networks +001F2C (base 16) Starbridge Networks + 3265 Meridian Parkway + Suite 134 + Weston FL 33331 + UNITED STATES + +00-1F-2D (hex) Electro-Optical Imaging, Inc. +001F2D (base 16) Electro-Optical Imaging, Inc. + 4300 Fortune Place, Suite C + West Melbourne FL 32904 + UNITED STATES + +00-1F-2E (hex) Triangle Research Int'l Pte Ltd +001F2E (base 16) Triangle Research Int'l Pte Ltd + 10 Ubi Crescent #05-83 + Ubi Techpark SG 408664 + SINGAPORE + +00-1F-2F (hex) Berker GmbH & Co. KG +001F2F (base 16) Berker GmbH & Co. KG + Klagebach 38 + Schalksmuehle NRW 58579 + GERMANY + +00-1F-30 (hex) Travelping +001F30 (base 16) Travelping + + Leipziger Str. 46 + Chemnitz Saxony 09113 + GERMANY + +00-1F-31 (hex) Radiocomp +001F31 (base 16) Radiocomp + Krakesvej 17 + Hilleroed Copenhagen 3400 + DENMARK + +00-1F-32 (hex) Nintendo Co., Ltd. +001F32 (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO KYOTO 601-8501 + JAPAN + +00-1F-33 (hex) Netgear Inc. +001F33 (base 16) Netgear Inc. + 4500 Great America Pkwy + Santa Clara CA 95054 + UNITED STATES + +00-1F-34 (hex) Lung Hwa Electronics Co., Ltd. +001F34 (base 16) Lung Hwa Electronics Co., Ltd. + 3F, 248, Pei Sheng Rd. Sec. 3, + Sheng Keng + Taipei Hsien 222 + TAIWAN, REPUBLIC OF CHINA + +00-1F-35 (hex) AIR802 LLC +001F35 (base 16) AIR802 LLC + 1169 Banyon Court + Naperville IL 60540 + UNITED STATES + +00-1F-36 (hex) Bellwin Information Co. Ltd., +001F36 (base 16) Bellwin Information Co. Ltd., + 17F-1,No.128,Chung De Rd. + Taichung 404 + TAIWAN, REPUBLIC OF CHINA + +00-1F-37 (hex) Genesis I&C +001F37 (base 16) Genesis I&C + #515 lisantekeunotaun + 1141-1 Baekseok-Dong, lisandong-Gu + Goyang Gyeonggi 410-722 + KOREA, REPUBLIC OF + +00-1F-38 (hex) POSITRON +001F38 (base 16) POSITRON + ESTRADA TELEBRAS-UNICAMP, KM0,97 - CJ.01 + BAIRRO: CIDADE UNIVERSITARIA + CAMPINAS SAO PAULO 13084-971 + BRAZIL + +00-1F-39 (hex) Construcciones y Auxiliar de Ferrocarriles, S.A. +001F39 (base 16) Construcciones y Auxiliar de Ferrocarriles, S.A. + C/ J.M. Iturrioz, 26 + Beasain Guipúzcoa E-20200 + SPAIN + +00-1F-3A (hex) Hon Hai Precision Ind.Co., Ltd. +001F3A (base 16) Hon Hai Precision Ind.Co., Ltd. + 66, Chung Shan Rd.Tu-Cheng + Taipei Hsien 236 + TAIWAN, REPUBLIC OF CHINA + +00-1F-3B (hex) Intel Corporate +001F3B (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1F-3C (hex) Intel Corporate +001F3C (base 16) Intel Corporate + Lot 8, Jalan Hi-Tech 2/3 + Kulim Hi-Tech Park + Kulim Kedah 09000 + MALAYSIA + +00-1F-3D (hex) Qbit GmbH +001F3D (base 16) Qbit GmbH + Zeiloch 3 + Bruchsal Germany 76646 + GERMANY + +00-1F-3E (hex) RP-Technik e.K. +001F3E (base 16) RP-Technik e.K. + Hermann-Staudinger-Str. 10-16 + Rodgau Hessen 63110 + GERMANY + +00-1F-3F (hex) AVM GmbH +001F3F (base 16) AVM GmbH + Alt-Moabit 95 + Berlin 10559 + GERMANY + +00-1F-40 (hex) Speakercraft Inc. +001F40 (base 16) Speakercraft Inc. + 940 Columbia Ave., + Riverside CA 92507 + UNITED STATES + +00-1F-41 (hex) Ruckus Wireless +001F41 (base 16) Ruckus Wireless + 880 West Maude Ave. + Sunnyvale CA 94085 + UNITED STATES + +00-1F-42 (hex) Etherstack Pty Ltd +001F42 (base 16) Etherstack Pty Ltd + 201 National Innovation Centre + Australian Technology Park NSW 2234 + AUSTRALIA + +00-1F-43 (hex) ENTES ELEKTRONIK +001F43 (base 16) ENTES ELEKTRONIK + Y. Dudullu Org. San. Bol. And Sanayi Sit. No.6 + Umraniye + Istanbul Dudullu 34775 + TURKEY + +00-1F-44 (hex) GE Transportation Systems +001F44 (base 16) GE Transportation Systems + 2901 East Lake Road + Erie PA 16501 + UNITED STATES + +00-1F-45 (hex) Enterasys +001F45 (base 16) Enterasys + 50 Minuteman Road + Andover MA 01810 + UNITED STATES + +00-1F-46 (hex) Nortel +001F46 (base 16) Nortel + 2221 Lakeside Blvd + Richardson Texas 75082 + UNITED STATES + +00-1F-47 (hex) MCS Logic Inc. +001F47 (base 16) MCS Logic Inc. + 6F. Samho Center B Bldg., 275-6 + Yangjae-Dong, Secho-Ku + Seoul 137-941 + KOREA, REPUBLIC OF + +00-1F-48 (hex) Mojix Inc. +001F48 (base 16) Mojix Inc. + 11075 Santa Monica Blvd. + Suite 350 + Los Angeles Ca 90025 + UNITED STATES + +00-1F-49 (hex) Eurosat Distribution Ltd +001F49 (base 16) Eurosat Distribution Ltd + 5 Oxgate Centre + Oxgate Lane + London NW2 7JA + UNITED KINGDOM + +00-1F-4A (hex) Albentia Systems S.A. +001F4A (base 16) Albentia Systems S.A. + Albala 13 + Madrid 28037 + SPAIN + +00-1F-4B (hex) Lineage Power +001F4B (base 16) Lineage Power + 3000 Skyline Dr. + Mesquite TX 75149 + UNITED STATES + +00-1F-4C (hex) Roseman Engineering Ltd +001F4C (base 16) Roseman Engineering Ltd + 65 Weizman Street + Givataim Israel 53468 + ISRAEL + +00-1F-4D (hex) Segnetics LLC +001F4D (base 16) Segnetics LLC + Shkiperski protok 14 + Saint-Petersburg 199106 + RUSSIAN FEDERATION + +00-1F-4E (hex) ConMed Linvatec +001F4E (base 16) ConMed Linvatec + 11311 Concept Blvd. + Largo FL 33773 + UNITED STATES + +00-1F-4F (hex) Thinkware Co. Ltd. +001F4F (base 16) Thinkware Co. Ltd. + 15FL, Hanmi Tower, 45, + Bangi-Dong, Songpa-gu + Seoul 138-724 + KOREA, REPUBLIC OF + +00-1F-50 (hex) Swissdis AG +001F50 (base 16) Swissdis AG + Grasweg 7 + Schwarzhaeusern BE 4911 + SWITZERLAND + +00-1F-51 (hex) HD Communications Corp +001F51 (base 16) HD Communications Corp + 2180 Fifth Ave + Ronkonkoma NY 11779 + UNITED STATES + +00-1F-52 (hex) UVT Unternehmensberatung für Verkehr und Technik GmbH +001F52 (base 16) UVT Unternehmensberatung für Verkehr und Technik GmbH + Josefsstr.54-56 + Mainz RLP 55118 + GERMANY + +00-1F-53 (hex) GEMAC Gesellschaft für Mikroelektronikanwendung Chemnitz mbH +001F53 (base 16) GEMAC Gesellschaft für Mikroelektronikanwendung Chemnitz mbH + Zwickauer Str. 227 + Chemnitz Sachsen 09116 + GERMANY + +00-1F-54 (hex) Lorex Technology Inc. +001F54 (base 16) Lorex Technology Inc. + 300 Alden Road + Markham Ontario L3R4C1 + CANADA + +00-1F-55 (hex) Honeywell Security (China) Co., Ltd. +001F55 (base 16) Honeywell Security (China) Co., Ltd. + Block 28, Section 2, Huai De Cui Gang Industrial Estate, Fu Yong, Bao An, ShenZhen, P.R. China + ShenZhen GuangDong 518103 + CHINA + +00-1F-56 (hex) DIGITAL FORECAST +001F56 (base 16) DIGITAL FORECAST + 5th Fl., 507, E&C Venture Dream Tower III, 197-33 + Guro 3-dong, Guro-gu + Seoul Gyunggi-do 152-719 + KOREA, REPUBLIC OF + +00-1F-57 (hex) Phonik Innovation Co.,LTD +001F57 (base 16) Phonik Innovation Co.,LTD + 29/167 Moo2, 345 Rd, Lampo, + Bangbuathong + Nonthaburi 11110 + THAILAND + +00-1F-58 (hex) EMH Energiemesstechnik GmbH +001F58 (base 16) EMH Energiemesstechnik GmbH + Vor dem Hassel 2 + Brackel Niedersachsen 21438 + GERMANY + +00-1F-59 (hex) Kronback Tracers +001F59 (base 16) Kronback Tracers + c/o IHK, M146 + Lautrupvang 15 + Ballerup Copenhagen 2750 + DENMARK + +00-1F-5A (hex) Beckwith Electric Co. +001F5A (base 16) Beckwith Electric Co. + 6190 118th Ave No + Largo Florida 33773 + UNITED STATES + +00-1F-5B (hex) Apple, Inc. +001F5B (base 16) Apple, Inc. + 1 Infinite Loop + MS 35-GPO + Cupertino CA 95014 + UNITED STATES + +00-1F-5C (hex) Nokia Danmark A/S +001F5C (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1F-5D (hex) Nokia Danmark A/S +001F5D (base 16) Nokia Danmark A/S + Frederikskaj + Copenhagen V DK-1790 + DENMARK + +00-1F-5E (hex) Dyna Technology Co.,Ltd. +001F5E (base 16) Dyna Technology Co.,Ltd. + HaoHai Building 1F,No.7,5th Street,Shangdi, + Haidian District + Beijing 100085 + CHINA + +00-1F-5F (hex) Blatand GmbH +001F5F (base 16) Blatand GmbH + Lichtenbergstraße 8 + Garching Bavaria 85748 + GERMANY + +00-1F-60 (hex) COMPASS SYSTEMS CORP. +001F60 (base 16) COMPASS SYSTEMS CORP. + 6F, No. 413, Sec. 2, Ti-Ding Blvd., + Taipei NeihuDist 114 + TAIWAN, REPUBLIC OF CHINA + +00-1F-61 (hex) Talent Communication Networks Inc. +001F61 (base 16) Talent Communication Networks Inc. + Rm. 910 R&F Plaza, #76, Huangpu Ave. West, + Guangzhou (Canton) Guangdong Province 510360 + CHINA + +00-1F-62 (hex) JSC "Stilsoft" +001F62 (base 16) JSC "Stilsoft" + Mayakovskogo 15 + Stavropol 355000 + RUSSIAN FEDERATION + +00-1F-63 (hex) JSC Goodwin-Europa +001F63 (base 16) JSC Goodwin-Europa + 20/5 Marksistskaya st. + Moscow 109147 + RUSSIAN FEDERATION + +00-1F-64 (hex) Beijing Autelan Technology Inc. +001F64 (base 16) Beijing Autelan Technology Inc. + Room B-12B01, Keshi Plaza, Xinxi road, + Shangdi park,Haidian, + Beijing 100085 + CHINA + +00-1F-65 (hex) KOREA ELECTRIC TERMINAL CO., LTD. +001F65 (base 16) KOREA ELECTRIC TERMINAL CO., LTD. + #7-38 SONGDO-DONG + YEONSU-GU INCHEON 406-840 + KOREA, REPUBLIC OF + +00-1F-66 (hex) PLANAR LLC +001F66 (base 16) PLANAR LLC + 32, Elkina str + Chelyabinsk SU 454091 + RUSSIAN FEDERATION + +00-1F-67 (hex) Hitachi,Ltd. +001F67 (base 16) Hitachi,Ltd. + Minamioi 6-27-18, Shinagawa-ku + Tokyo 140-8572 + JAPAN + +00-1F-68 (hex) Martinsson Elektronik AB +001F68 (base 16) Martinsson Elektronik AB + Box 9060 + Hägersten Stockholm 126 09 + SWEDEN + +00-1F-69 (hex) Pingood Technology Co., Ltd. +001F69 (base 16) Pingood Technology Co., Ltd. + Rm1917, South Block, Cangsong Bldg., Tairan Industrial Zone, Futian District + Shenzhen Guangdong 518040 + CHINA + +00-1F-6A (hex) PacketFlux Technologies, Inc. +001F6A (base 16) PacketFlux Technologies, Inc. + 50 11th Avenue + Helena MT 59601 + UNITED STATES + +00-1F-6B (hex) LG Electronics +001F6B (base 16) LG Electronics + 60-39,Kasan-dong,Kumchon-ku + Seoul 153-023 + KOREA, REPUBLIC OF + +00-1F-6C (hex) Cisco Systems +001F6C (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1F-6D (hex) Cisco Systems +001F6D (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1F-6E (hex) Vtech Engineering Corporation +001F6E (base 16) Vtech Engineering Corporation + 20 New England Business Center + Andover MA 01810 + UNITED STATES + +00-1F-6F (hex) Fujian Sunnada Communication Co.,Ltd. +001F6F (base 16) Fujian Sunnada Communication Co.,Ltd. + 7/F£¬Main Building£¬Fujian Torch Hi-Tech Innovation Park£¬#611 Industrial Road£¬ Fuzhou£¬PRC 350002 + 7# Building B District, Software Park, TongPan Road Fuzhou, PRC 350003 + Fuzhou Fujian 350002 + CHINA + +00-1F-70 (hex) Botik Technologies LTD +001F70 (base 16) Botik Technologies LTD + Trudovaya, 1 + Pereslavl-Zalessky Yaroslavskaya 152020 + RUSSIAN FEDERATION + +00-1F-71 (hex) xG Technology, Inc. +001F71 (base 16) xG Technology, Inc. + 240 S. Pineapple Avenue + Suite 701 + Sarasota FL 34236 + UNITED STATES + +00-1F-72 (hex) QingDao Hiphone Technology Co,.Ltd +001F72 (base 16) QingDao Hiphone Technology Co,.Ltd + NO.106,JiangXi Road + QingDao ShanDong 266071 + CHINA + +00-1F-73 (hex) Teraview Technology Co., Ltd. +001F73 (base 16) Teraview Technology Co., Ltd. + 23F, No. 29-5, Sec. 2, Jhongjheng E. Road, + Danshui Township, + Taipei County 251 + TAIWAN, REPUBLIC OF CHINA + +00-1F-74 (hex) Eigen Development +001F74 (base 16) Eigen Development + 1807 W10th Ave + Vancouver BC V6J 2A9 + CANADA + +00-1F-75 (hex) GiBahn Media +001F75 (base 16) GiBahn Media + 1816 Rosedale Suseo-dong + Kangnam-gu + Seoul 135-885 + KOREA, REPUBLIC OF + +00-1F-76 (hex) AirLogic Systems +001F76 (base 16) AirLogic Systems + 3022 Peleke St.Suite 1 + Lihu'e HI 96766 + UNITED STATES + +00-1F-77 (hex) HEOL DESIGN +001F77 (base 16) HEOL DESIGN + 1 bd d'armor + LANNION BRETAGNE 22300 + FRANCE + +00-1F-78 (hex) Blue Fox Porini Textile +001F78 (base 16) Blue Fox Porini Textile + 1208 Pointe Centre Drive + STE 200 + Chattanooga TN 37421 + UNITED STATES + +00-1F-79 (hex) Lodam Electronics A/S +001F79 (base 16) Lodam Electronics A/S + Kærvej 77 + Sønderborg Als DK-6400 + DENMARK + +00-1F-7A (hex) WiWide Inc. +001F7A (base 16) WiWide Inc. + 10B10, Hua Jie Plaza + #13 Da Zhong Si, Haidian + Beijing 100089 + CHINA + +00-1F-7B (hex) TechNexion Ltd. +001F7B (base 16) TechNexion Ltd. + 3F, No. 716, Chung Chen Road, + Chung Ho City Taipei 235 + TAIWAN, REPUBLIC OF CHINA + +00-1F-7C (hex) Witelcom AS +001F7C (base 16) Witelcom AS + Verftsgt 10 + Moss Ostfold 1511 + NORWAY + +00-1F-7D (hex) embedded wireless GmbH +001F7D (base 16) embedded wireless GmbH + Söflinger Str. 100 + Ulm BW 89077 + GERMANY + +00-1F-7E (hex) Motorola Mobile Devices +001F7E (base 16) Motorola Mobile Devices + 600 N. US 45 + Libertyville Illinois 60048 + UNITED STATES + +00-1F-7F (hex) Phabrix Limited +001F7F (base 16) Phabrix Limited + Blindmans Gate Cottage + Woolton Hill + Newbury Hampshire RG20 9XB + UNITED KINGDOM + +00-1F-80 (hex) Lucas Holding bv +001F80 (base 16) Lucas Holding bv + Domein 28 + Gemert NB 5421AR + NETHERLANDS + +00-1F-81 (hex) Accel Semiconductor Corp +001F81 (base 16) Accel Semiconductor Corp + 1F,Mainbldg,149 Chun Xiao Road, + Shanghai 201203 + CHINA + +00-1F-82 (hex) Cal-Comp Electronics & Communications Co., Ltd +001F82 (base 16) Cal-Comp Electronics & Communications Co., Ltd + 3F, #205, Sec.3 Peihsin Rd. + Hsintein Taipei County 231 + TAIWAN, REPUBLIC OF CHINA + +00-1F-83 (hex) Teleplan Technology Services Sdn Bhd +001F83 (base 16) Teleplan Technology Services Sdn Bhd + 2580, Tingkat Perusahaan 4B + Zon Perdagangan Bebas Dua + Perai Penang 13600 + MALAYSIA + +00-1F-84 (hex) Gigle Semiconductor +001F84 (base 16) Gigle Semiconductor + Barcelona Activa - Vivero Glorias + Llacuna 162 + Barcelona 08018 + SPAIN + +00-1F-85 (hex) Apriva ISS, LLC +001F85 (base 16) Apriva ISS, LLC + 6900 E Camelback Rd + Suite 700 + Scottsdale AZ 85251 + UNITED STATES + +00-1F-86 (hex) digEcor +001F86 (base 16) digEcor + 1625 N. 1100 W. + Springville UT 84663 + UNITED STATES + +00-1F-87 (hex) Skydigital Inc. +001F87 (base 16) Skydigital Inc. + #28-9 Wonhyoro1-ga, Yongsan-gu, + Seoul 140-846 + KOREA, REPUBLIC OF + +00-1F-88 (hex) FMS Force Measuring Systems AG +001F88 (base 16) FMS Force Measuring Systems AG + Aspstrasse 6 + Oberglatt Zurich 8154 + SWITZERLAND + +00-1F-89 (hex) Signalion GmbH +001F89 (base 16) Signalion GmbH + Sudhausweg 5 + Dresden Saxony 01099 + GERMANY + +00-1F-8A (hex) Ellion Digital Inc. +001F8A (base 16) Ellion Digital Inc. + Suite 809, Sicox Tower, 513-14, Sangdaewon-dong, Jungwon-gu + Sungnam-city Kyonggi-do 426-726 + KOREA, REPUBLIC OF + +00-1F-8B (hex) Storspeed, Inc. +001F8B (base 16) Storspeed, Inc. + 8601 RR 2222 + Building III, Suite 410 + Austin Texas 78730 + UNITED STATES + +00-1F-8C (hex) CCS Inc. +001F8C (base 16) CCS Inc. + Shimodachiuri-agaru + Karasuma-dori, Kamigyo-ku + Kyoto Kyoto 602-8011 + JAPAN + +00-1F-8D (hex) Ingenieurbuero Stark GmbH und Ko. KG +001F8D (base 16) Ingenieurbuero Stark GmbH und Ko. KG + Rudolf-Diesel-Strasse 44 + Laichingen BW 89150 + GERMANY + +00-1F-8E (hex) Metris USA Inc. +001F8E (base 16) Metris USA Inc. + 12701 Grand River + Brighton MI 48116 + UNITED STATES + +00-1F-8F (hex) Shanghai Bellmann Digital Source Co.,Ltd. +001F8F (base 16) Shanghai Bellmann Digital Source Co.,Ltd. + 404-408 Main Bd, FDUSP, No.11 Guotai Rd. + Shanghai 200433 + CHINA + +00-1F-90 (hex) Actiontec Electronics, Inc +001F90 (base 16) Actiontec Electronics, Inc + 760 North Mary Ave + Sunnyvale CA 94085 + UNITED STATES + +00-1F-91 (hex) DBS Lodging Technologies, LLC +001F91 (base 16) DBS Lodging Technologies, LLC + 21196 Limber + Mission Viejo CA 92692 + UNITED STATES + +00-1F-92 (hex) VideoIQ, Inc. +001F92 (base 16) VideoIQ, Inc. + 213 Burlington Road + Suite 104 + Bedford MA 01730 + UNITED STATES + +00-1F-93 (hex) Xiotech Corporation +001F93 (base 16) Xiotech Corporation + 6455 Flying Cloud Drive + Eden Prairie MN 55344 + UNITED STATES + +00-1F-94 (hex) Lascar Electronics Ltd +001F94 (base 16) Lascar Electronics Ltd + Module House + Whiteparish + Nr Salisbury Wiltshire SP5 2SJ + UNITED KINGDOM + +00-1F-95 (hex) SAGEM COMMUNICATION +001F95 (base 16) SAGEM COMMUNICATION + 14 Rue Paul Dautier + Velizy 78457 + FRANCE + +00-1F-96 (hex) APROTECH CO.LTD +001F96 (base 16) APROTECH CO.LTD + KOLONDIGITAL TOWER ASTON 201, 505-14 + GASAN-DONG,KUMCHON-GU + SEOUL KSXX 0022 + KOREA, REPUBLIC OF + +00-1F-97 (hex) BERTANA SRL +001F97 (base 16) BERTANA SRL + VIALE GALILEO FERRARIS 27 + BRUINO TORINO 10090 + ITALY + +00-1F-98 (hex) DAIICHI-DENTSU LTD. +001F98 (base 16) DAIICHI-DENTSU LTD. + OOMORI 690-1 + KANI GIFU 509-0238 + JAPAN + +00-1F-99 (hex) SERONICS co.ltd +001F99 (base 16) SERONICS co.ltd + #401 Technopolis, + 711Hosan-dong, Dalseo-gu + Daegu Gyeong-buk 704-230 + KOREA, REPUBLIC OF + +00-1F-9A (hex) Nortel Networks +001F9A (base 16) Nortel Networks + 2221 Lakeside Blvd + Richardson TX 75082-4399 + UNITED STATES + +00-1F-9B (hex) POSBRO +001F9B (base 16) POSBRO + ShinyoungGtower 6F, 271-1 + Seohyun-dong, Bundang-gu + Seongnam-si Kyunggi-do 463-824 + KOREA, REPUBLIC OF + +00-1F-9C (hex) LEDCO +001F9C (base 16) LEDCO + 47801 W Anchor Court + Plymouth MI 48170 + UNITED STATES + +00-1F-9D (hex) Cisco Systems +001F9D (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1F-9E (hex) Cisco Systems +001F9E (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1F-9F (hex) Thomson Telecom Belgium +001F9F (base 16) Thomson Telecom Belgium + Prins Boudewijnlaan 47 + Edegem Antwerp B-2650 + BELGIUM + +00-1F-A0 (hex) A10 Networks +001FA0 (base 16) A10 Networks + 2309 Bering Drive + San Jose CA 95131 + UNITED STATES + +00-1F-A1 (hex) Gtran Inc +001FA1 (base 16) Gtran Inc + 2651 Lavery Court + Newbury Park CA 91320 + UNITED STATES + +00-1F-A2 (hex) Datron World Communications, Inc. +001FA2 (base 16) Datron World Communications, Inc. + 3030 Enterprise Court + Vista California 92081 + UNITED STATES + +00-1F-A3 (hex) T&W Electronics(Shenzhen)Co.,Ltd. +001FA3 (base 16) T&W Electronics(Shenzhen)Co.,Ltd. + 2F,Baiying Building, No.1019, + ShenZhen GuangDong 518067 + CHINA + +00-1F-A4 (hex) ShenZhen Gongjin Electronics Co.,Ltd +001FA4 (base 16) ShenZhen Gongjin Electronics Co.,Ltd + 4F,Baiying Building, No.1019,Nanhai RD,Shekou, + ShenZhen GuangDong 518067 + CHINA + +00-1F-A5 (hex) Blue-White Industries +001FA5 (base 16) Blue-White Industries + 5300 Business Drive + Huntington Beach CA 92649 + UNITED STATES + +00-1F-A6 (hex) Stilo srl +001FA6 (base 16) Stilo srl + Via Besana, 4 + 20122 Milano + ITALY + +00-1F-A7 (hex) Sony Computer Entertainment Inc. +001FA7 (base 16) Sony Computer Entertainment Inc. + 2-6-21 Minami-Aoyama, + Minato-ku Tokyo 107-0062 + JAPAN + +00-1F-A8 (hex) ANI Technologies Corp. +001FA8 (base 16) ANI Technologies Corp. + 3044 Bloor St. W. #302 + Etobicoke Ontario M8X 2Y8 + CANADA + +00-1F-A9 (hex) Atlanta DTH, Inc. +001FA9 (base 16) Atlanta DTH, Inc. + 5388 New Peachtree Rd + Chamblee GA 30341 + UNITED STATES + +00-1F-AA (hex) Taseon, Inc. +001FAA (base 16) Taseon, Inc. + 3099 N. First Street + San Jose CA 95134 + UNITED STATES + +00-1F-AB (hex) I.S HIGH TECH.INC +001FAB (base 16) I.S HIGH TECH.INC + 603-1,Sungbon-ri,Daeso-myun + Eumsung-gun Chungcheongbuk-do 369-823 + KOREA, REPUBLIC OF + +00-1F-AC (hex) Goodmill Systems Ltd +001FAC (base 16) Goodmill Systems Ltd + Sinikalliontie 10 + Espoo Uusimaa 02630 + FINLAND + +00-1F-AD (hex) Brown Innovations, Inc +001FAD (base 16) Brown Innovations, Inc + 369 Congress Street + Fourth Floor + Boston MA 02210 + UNITED STATES + +00-1F-AE (hex) Blick South Africa (Pty) Ltd +001FAE (base 16) Blick South Africa (Pty) Ltd + PO Box 1908 + Rivonia + Johannesburg Gauteng 2108 + SOUTH AFRICA + +00-1F-AF (hex) NextIO, Inc. +001FAF (base 16) NextIO, Inc. + 12401 Research Blvd. + Bldg. 2 Suite 200 + Austin TX 78759 + UNITED STATES + +00-1F-B0 (hex) TimeIPS, Inc. +001FB0 (base 16) TimeIPS, Inc. + 3522 N Comotara St + Wichita KS 67226 + UNITED STATES + +00-1F-B1 (hex) Cybertech Inc. +001FB1 (base 16) Cybertech Inc. + 935 Horsham Rd + Unit I + Horsham PA 19044 + UNITED STATES + +00-1F-B2 (hex) Sontheim Industrie Elektronik GmbH +001FB2 (base 16) Sontheim Industrie Elektronik GmbH + Dieselstrasse 7 + Kempten Allgaeu Bavaria D-87437 + GERMANY + +00-1F-B3 (hex) 2Wire +001FB3 (base 16) 2Wire + 1764 Automation Parkway + San Jose CA 95131 + UNITED STATES + +00-1F-B4 (hex) SmartShare Systems +001FB4 (base 16) SmartShare Systems + Marielundvej 46 B + Herlev 2730 + DENMARK + +00-1F-B5 (hex) I/O Interconnect Inc. +001FB5 (base 16) I/O Interconnect Inc. + 1202 E Wakeham Ave + Santa Ana CA 92708 + UNITED STATES + +00-1F-B6 (hex) Chi Lin Technology Co., Ltd. +001FB6 (base 16) Chi Lin Technology Co., Ltd. + No.18, Sheng Li 1st St., Jen Te Hsiang, + Tainan Taiwan 71758 + CHINA + +00-1F-B7 (hex) WiMate Technologies Corp. +001FB7 (base 16) WiMate Technologies Corp. + 14A Building 2, Guimiao Garden, Nanguanglu, Nanshan District + Shenzhen Guangdong 518054 + CHINA + +00-1F-B8 (hex) Universal Remote Control, Inc. +001FB8 (base 16) Universal Remote Control, Inc. + 500 Mamaroneck Avenue + Suite 502 + Harrison NY 10528 + UNITED STATES + +00-1F-B9 (hex) Paltronics +001FB9 (base 16) Paltronics + 1145 Paltronics Ct + Crystal Lake IL 60014 + UNITED STATES + +00-1F-BA (hex) BoYoung Tech. & Marketing, Inc. +001FBA (base 16) BoYoung Tech. & Marketing, Inc. + Youngdeungpo-Gu Munrae3ga 84-2 + Dongguk Mertian 602 + Seoul 150-093 + KOREA, REPUBLIC OF + +00-1F-BB (hex) Xenatech Co.,LTD +001FBB (base 16) Xenatech Co.,LTD + 514-2 Ya Tab-Dong Bun Dang Gu + Seong namsi Gyong gi-do 463-839 + KOREA, REPUBLIC OF + +00-1F-BC (hex) EVGA Corporation +001FBC (base 16) EVGA Corporation + 2900 Saturn St. + Suite B + Brea CA 92821 + UNITED STATES + +00-1F-BD (hex) Kyocera Wireless Corp. +001FBD (base 16) Kyocera Wireless Corp. + 10300 Campus Point Drive + San Diego CA 92121 + UNITED STATES + +00-1F-BE (hex) Shenzhen Mopnet Industrial Co.,Ltd +001FBE (base 16) Shenzhen Mopnet Industrial Co.,Ltd + F 3.No.3 Keyuan Rd. + Shenzhen Nanshan Science&Industry Park + Shenzhen Guangdong 518057 + CHINA + +00-1F-BF (hex) Fulhua Microelectronics Corp. Taiwan Branch +001FBF (base 16) Fulhua Microelectronics Corp. Taiwan Branch + 1F, No.12, R&D Road, + Science-based Ind. Park, + Hsin-Chu, 300 886 + TAIWAN, REPUBLIC OF CHINA + +00-1F-C0 (hex) Control Express Finland Oy +001FC0 (base 16) Control Express Finland Oy + Laitaatsillantie 3 + Savonlinna 57170 + FINLAND + +00-1F-C1 (hex) Hanlong Technology Co.,LTD +001FC1 (base 16) Hanlong Technology Co.,LTD + RM.2220,Block B,New Century Plaza,1 Tai Ping Nan Road, + Nanjing Jiangsu 210002 + CHINA + +00-1F-C2 (hex) Jow Tong Technology Co Ltd +001FC2 (base 16) Jow Tong Technology Co Ltd + 46 Lane 337 Chung Cheng Rd + Yung Kang City Tainan County 71066 + TAIWAN, REPUBLIC OF CHINA + +00-1F-C3 (hex) SmartSynch, Inc +001FC3 (base 16) SmartSynch, Inc + 4400 Old Canton Rd + Suite 300 + Jackson MS 39211 + UNITED STATES + +00-1F-C4 (hex) Motorola CHS +001FC4 (base 16) Motorola CHS + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-1F-C5 (hex) Nintendo Co., Ltd. +001FC5 (base 16) Nintendo Co., Ltd. + 11-1 HOKOTATE-CHO + KAMITOBA, MINAMI-KU + KYOTO KYOTO 601-8501 + JAPAN + +00-1F-C6 (hex) ASUSTek COMPUTER INC. +001FC6 (base 16) ASUSTek COMPUTER INC. + 15,Li-Te Rd.,Peitou,Taipei 112 + Taipei 112 + TAIWAN, REPUBLIC OF CHINA + +00-1F-C7 (hex) Casio Hitachi Mobile Comunications Co., Ltd. +001FC7 (base 16) Casio Hitachi Mobile Comunications Co., Ltd. + 2-229-1, Sakuragaoka + Higashiyamato-shi Tokyo 207-8501 + JAPAN + +00-1F-C8 (hex) Up-Today Industrial Co., Ltd. +001FC8 (base 16) Up-Today Industrial Co., Ltd. + 7/F., Unify Commercial & Industrial Building + 31 Tai Yip Street, Kwun Tong, + Kowloon + HONG KONG + +00-1F-C9 (hex) Cisco Systems +001FC9 (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1F-CA (hex) Cisco Systems +001FCA (base 16) Cisco Systems + 80 West Tasman Dr. + SJC-M/1 + San Jose CA 95134 + UNITED STATES + +00-1F-CB (hex) NIW Solutions +001FCB (base 16) NIW Solutions + P.O. Box 62 + One Tree Hill South Australia 5114 + AUSTRALIA + +00-1F-CC (hex) Samsung Electronics Co.,Ltd +001FCC (base 16) Samsung Electronics Co.,Ltd + #94-1, Imsoo-Dong + Gumi Gyeongbuk 730-350 + KOREA, REPUBLIC OF + +00-1F-CD (hex) Samsung Electronics +001FCD (base 16) Samsung Electronics + #94-1, Imsoo-Dong + Gumi Gyeongbuk 730-350 + KOREA, REPUBLIC OF + +00-1F-CE (hex) QTECH LLC +001FCE (base 16) QTECH LLC + Novozavodskaya st. 18 build. 1 + Moscow Moscow region 121309 + RUSSIAN FEDERATION + +00-1F-CF (hex) MSI Technology GmbH +001FCF (base 16) MSI Technology GmbH + Hanauer Landstraße 328-330 + Frankfurt am Main Hessen 60314 + GERMANY + +00-1F-D0 (hex) GIGA-BYTE TECHNOLOGY CO.,LTD. +001FD0 (base 16) GIGA-BYTE TECHNOLOGY CO.,LTD. + No.215,Nan-Ping Road, + Pin-Jen Taoyuan 324 + TAIWAN, REPUBLIC OF CHINA + +00-1F-D1 (hex) OPTEX CO.,LTD. +001FD1 (base 16) OPTEX CO.,LTD. + 5-8-12 + Ogoto + Otsu Shiga 520-0101 + JAPAN + +00-1F-D2 (hex) COMMTECH TECHNOLOGY MACAO COMMERCIAL OFFSHORE LTD. +001FD2 (base 16) COMMTECH TECHNOLOGY MACAO COMMERCIAL OFFSHORE LTD. + 31,TAI YIP STREET, 7/F KWUN TONG, + KOWLOON, HONGKONG + CHINA + +00-20-00 (hex) LEXMARK INTERNATIONAL, INC. +002000 (base 16) LEXMARK INTERNATIONAL, INC. + 740 NEW CIRCLE ROAD + BLDG. 35 + LEXINGTON KY 40550 + UNITED STATES + +00-20-01 (hex) DSP SOLUTIONS, INC. +002001 (base 16) DSP SOLUTIONS, INC. + 2464 EMBARCADERO WAY + PALO ALTO CA 94303 + UNITED STATES + +00-20-02 (hex) SERITECH ENTERPRISE CO., LTD. +002002 (base 16) SERITECH ENTERPRISE CO., LTD. + FL. 182, NO. 531-1 + CHUNG CHENG ROAD HSIN TIEN CITY + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-20-03 (hex) PIXEL POWER LTD. +002003 (base 16) PIXEL POWER LTD. + UNIT 1, TRINITY HALL FARM + INDUSTRIAL ESTATE, NUFFIELD RD + CAMBRIDGE CB4 1TG + UNITED KINGDOM + +00-20-04 (hex) YAMATAKE-HONEYWELL CO., LTD. +002004 (base 16) YAMATAKE-HONEYWELL CO., LTD. + 54 SUZUKAWA, ISEHARA + KANAGAWA 259-11 + JAPAN + +00-20-05 (hex) SIMPLE TECHNOLOGY +002005 (base 16) SIMPLE TECHNOLOGY + 3001 DAIMLER ROAD + SANTA ANA CA 92705 + UNITED STATES + +00-20-06 (hex) GARRETT COMMUNICATIONS, INC. +002006 (base 16) GARRETT COMMUNICATIONS, INC. + 48531 WARMSPRINGS BLVD. + FREMONT CA 94539 + UNITED STATES + +00-20-07 (hex) SFA, INC. +002007 (base 16) SFA, INC. + 1401 MCCORMICK DRIVE + LANDOVER MD 20785 + UNITED STATES + +00-20-08 (hex) CABLE & COMPUTER TECHNOLOGY +002008 (base 16) CABLE & COMPUTER TECHNOLOGY + 1555 SO. SINCLAIR STREET + ANAHEIM CA 92806 + UNITED STATES + +00-20-09 (hex) PACKARD BELL ELEC., INC. +002009 (base 16) PACKARD BELL ELEC., INC. + 9425 CANOGA AVENUE + CHATSWORTH CA 913211 + UNITED STATES + +00-20-0A (hex) SOURCE-COMM CORP. +00200A (base 16) SOURCE-COMM CORP. + 25020 W. AVENUE STANFORD + UNIT 180 + VALENCIA CA 91355 + UNITED STATES + +00-20-0B (hex) OCTAGON SYSTEMS CORP. +00200B (base 16) OCTAGON SYSTEMS CORP. + 6510 W. 91ST AVENUE + WESTMINSTER CO 80030 + UNITED STATES + +00-20-0C (hex) ADASTRA SYSTEMS CORP. +00200C (base 16) ADASTRA SYSTEMS CORP. + 28310 INDUSTRIAL BLVD.-STE-K + HAYWARD CA 94545 + UNITED STATES + +00-20-0D (hex) CARL ZEISS +00200D (base 16) CARL ZEISS + POSTFACH 1380 + ABT. 1-EL 73444 OBERKOCHEN + GERMANY + +00-20-0E (hex) SATELLITE TECHNOLOGY MGMT, INC +00200E (base 16) SATELLITE TECHNOLOGY MGMT, INC + 3530 HYLAND AVENUE + COSTA MESA CA 92626 + UNITED STATES + +00-20-0F (hex) TANBAC CO., LTD. +00200F (base 16) TANBAC CO., LTD. + SAKURAI DAI 2 BG + 27-4 IRIYA 1-CHOME TAITO-KU TOKYO 110 + JAPAN + +00-20-10 (hex) JEOL SYSTEM TECHNOLOGY CO. LTD +002010 (base 16) JEOL SYSTEM TECHNOLOGY CO. LTD + 3-1-2 Musashino + Akishima-shi Tokyo 196-8558 + JAPAN + +00-20-11 (hex) CANOPUS CO., LTD. +002011 (base 16) CANOPUS CO., LTD. + KOBE HI-TECH PARK + 1-2-2 MUROTANI NISHI-KU KOBE + 651-22 JAPAN + JAPAN + +00-20-12 (hex) CAMTRONICS MEDICAL SYSTEMS +002012 (base 16) CAMTRONICS MEDICAL SYSTEMS + P.O. BOX 950 + HARTLAND WI 53029 + UNITED STATES + +00-20-13 (hex) DIVERSIFIED TECHNOLOGY, INC. +002013 (base 16) DIVERSIFIED TECHNOLOGY, INC. + 112 E. STATE STREET + RIDGELAND MS 39157 + UNITED STATES + +00-20-14 (hex) GLOBAL VIEW CO., LTD. +002014 (base 16) GLOBAL VIEW CO., LTD. + 4F, NO. 23, LANE 306 + FU-TEH 1 RD. HSI-CHIH, TAIPEI, HSIEN + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-20-15 (hex) ACTIS COMPUTER SA +002015 (base 16) ACTIS COMPUTER SA + 16 CHEMIN DES AULX + 1228 PLAN LES OVATES + SWITZERLAND + SWITZERLAND + +00-20-16 (hex) SHOWA ELECTRIC WIRE & CABLE CO +002016 (base 16) SHOWA ELECTRIC WIRE & CABLE CO + NO. 20-25, SEISHIN 8-CHOME + SAGAMIHARA, KANAGAWA + 229 JAPAN + JAPAN + +00-20-17 (hex) ORBOTECH +002017 (base 16) ORBOTECH + INDUSTRIAL ZONE + P.O. BOX 215 70651 YAVNE + ISRAEL + ISRAEL + +00-20-18 (hex) CIS TECHNOLOGY INC. +002018 (base 16) CIS TECHNOLOGY INC. + FL. 9-1, NO. 94, PAO CHUNG RD. + HSIN TIEN CITY + TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-20-19 (hex) OHLER GmbH +002019 (base 16) OHLER GmbH + MAYBACHSTRASE 30 + 71332 WAIBLINGEN + GERMANY + +00-20-1A (hex) MRV Communications, Inc. +00201A (base 16) MRV Communications, Inc. + 20415 Nordhoff St. + Chatsworth CA 91311 + UNITED STATES + +00-20-1B (hex) NORTHERN TELECOM/NETWORK +00201B (base 16) NORTHERN TELECOM/NETWORK + SYSTEMS CORPORATION + 250 SIDNEY STREET BELLEVILLE, ONTARIO + K8N 5B7 + CANADA + +00-20-1C (hex) EXCEL, INC. +00201C (base 16) EXCEL, INC. + 355 OLD PLYMOUTH ROAD + SAGAMORE BEACH MA 02562 + UNITED STATES + +00-20-1D (hex) KATANA PRODUCTS +00201D (base 16) KATANA PRODUCTS + THE STUDIO, QUARRY HILL BOX, + WILTSHIRE SN14 9HT + UNITED KINGDOM + +00-20-1E (hex) NETQUEST CORPORATION +00201E (base 16) NETQUEST CORPORATION + 523 FELLOWSHIP ROAD-STE.#205 + MT. LAUREL NJ 08054 + UNITED STATES + +00-20-1F (hex) BEST POWER TECHNOLOGY, INC. +00201F (base 16) BEST POWER TECHNOLOGY, INC. + P.O. BOX 280 + NECEDAH WI 54646 + UNITED STATES + +00-20-20 (hex) MEGATRON COMPUTER INDUSTRIES PTY, LTD. +002020 (base 16) MEGATRON COMPUTER INDUSTRIES PTY, LTD. + + UNIT 2, 62-64 CHARTER STREET RINGWOOD V + AUSTRALIA + +00-20-21 (hex) ALGORITHMS SOFTWARE PVT. LTD. +002021 (base 16) ALGORITHMS SOFTWARE PVT. LTD. + 83 JOLLY MAKER CHAMBERS II + NARIMAN POINT BOMBAY 400021 + INDIA + INDIA + +00-20-22 (hex) NMS Communications +002022 (base 16) NMS Communications + 100 Crossing Boulevard + Framingham MA 01702 + UNITED STATES + +00-20-23 (hex) T.C. TECHNOLOGIES PTY. LTD +002023 (base 16) T.C. TECHNOLOGIES PTY. LTD + 6/60 FAIRFORD RD. + PADSTOW NSW2211 + AUSTRALIA + +00-20-24 (hex) PACIFIC COMMUNICATION SCIENCES +002024 (base 16) PACIFIC COMMUNICATION SCIENCES + 9645 SCRANTON ROAD + SAN DIEGO CA 92121 + UNITED STATES + +00-20-25 (hex) CONTROL TECHNOLOGY, INC. +002025 (base 16) CONTROL TECHNOLOGY, INC. + 5734 MIDDLEBROOK PIKE + KNOXVILLE TN 37921 + UNITED STATES + +00-20-26 (hex) AMKLY SYSTEMS, INC. +002026 (base 16) AMKLY SYSTEMS, INC. + 15801 ROCKFIELD BLVD., #P + IRVINE CA 92718 + UNITED STATES + +00-20-27 (hex) MING FORTUNE INDUSTRY CO., LTD +002027 (base 16) MING FORTUNE INDUSTRY CO., LTD + 4F, NO. 800 CHUNG CHENG RD, + CHUNG HO CITY, TAIPEI HSIEN + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-20-28 (hex) WEST EGG SYSTEMS, INC. +002028 (base 16) WEST EGG SYSTEMS, INC. + 65 HIGH RIDGE ROAD-STE.#286 + STAMFORD CT 06905 + UNITED STATES + +00-20-29 (hex) TELEPROCESSING PRODUCTS, INC. +002029 (base 16) TELEPROCESSING PRODUCTS, INC. + 4565 E. INDUSTRIAL STREET + BUILDING #7K + SIMI VALLEY CA 93063 + UNITED STATES + +00-20-2A (hex) N.V. DZINE +00202A (base 16) N.V. DZINE + KONING LEOPOLD III LAAN 2 + B - 8500 KORTRIJK + BELGIUM + BELGIUM + +00-20-2B (hex) ADVANCED TELECOMMUNICATIONS MODULES, LTD. +00202B (base 16) ADVANCED TELECOMMUNICATIONS MODULES, LTD. + + MOUNT PLEASANT HOUSE HUNTINGDON ROAD, + Cambridge CB3 OBL + UNITED KINGDOM + +00-20-2C (hex) WELLTRONIX CO., LTD. +00202C (base 16) WELLTRONIX CO., LTD. + 3F, NO. 36-1, HWANG HSI STREET + SHIN-LIN TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-20-2D (hex) TAIYO CORPORATION +00202D (base 16) TAIYO CORPORATION + 1-2-6 SANNOH, OHTA-KU + TOKYO + 143 + JAPAN + +00-20-2E (hex) DAYSTAR DIGITAL +00202E (base 16) DAYSTAR DIGITAL + 5556 ATLANTA HIGHWAY + FLOWERY BRANCH GA 30542 + UNITED STATES + +00-20-2F (hex) ZETA COMMUNICATIONS, LTD. +00202F (base 16) ZETA COMMUNICATIONS, LTD. + ZENITH HOUSE + GRESFORD INDUSTRIAL PARK + WREXHAM, CLWYD, LL12 8LX + UNITED KINGDOM + +00-20-30 (hex) ANALOG & DIGITAL SYSTEMS +002030 (base 16) ANALOG & DIGITAL SYSTEMS + 1/2 LAVELLE ROAD + BANGALORE - 560001 + INDIA + INDIA + +00-20-31 (hex) ERTEC GmbH +002031 (base 16) ERTEC GmbH + AM PESTALOZZIRING 24 + D-91058 ERLANGEN + GERMANY + +00-20-32 (hex) ALCATEL TAISEL +002032 (base 16) ALCATEL TAISEL + 4, MING SHENG STREET TU-CHENG + INDUSTRIAL DISTRICT TAIPEI HSIEH + TAIWAN ROC + TAIWAN, REPUBLIC OF CHINA + +00-20-33 (hex) SYNAPSE TECHNOLOGIES, INC. +002033 (base 16) SYNAPSE TECHNOLOGIES, INC. + 4822 ALBEMARLE ROAD, #104 + CHARLOTTE NC 28205 + UNITED STATES + +00-20-34 (hex) ROTEC INDUSTRIEAUTOMATION GMBH +002034 (base 16) ROTEC INDUSTRIEAUTOMATION GMBH + GUTENBERGSTR. 15 + 76437 RASTATT + GERMANY + +00-20-35 (hex) IBM CORPORATION +002035 (base 16) IBM CORPORATION + P.O. BOX 12195 + CE6A/664 3039 CORNWALLIS + RTP NC 27709-2195 + UNITED STATES + +00-20-36 (hex) BMC SOFTWARE +002036 (base 16) BMC SOFTWARE + 1600 CITY WEST BLVD., #1600 + HOUSTON TX 77042 + UNITED STATES + +00-20-37 (hex) SEAGATE TECHNOLOGY +002037 (base 16) SEAGATE TECHNOLOGY + 8001 E. BLOOMINGTON FWY + M/S - MPS043 + BLOOMINGTON MN 55420 + UNITED STATES + +00-20-38 (hex) VME MICROSYSTEMS INTERNATIONAL CORPORATION +002038 (base 16) VME MICROSYSTEMS INTERNATIONAL CORPORATION + 12090 S. MEMORIAL PARKWAY + HUNTSVILLE AL 35803 + UNITED STATES + +00-20-39 (hex) SCINETS +002039 (base 16) SCINETS + 1575 TENAKA - STE# N8 + SUNNYVALE CA 94087 + UNITED STATES + +00-20-3A (hex) DIGITAL BI0METRICS INC. +00203A (base 16) DIGITAL BI0METRICS INC. + 5600 ROWLAND ROAD- STE.#205 + MINNETONKA MN 55364 + UNITED STATES + +00-20-3B (hex) WISDM LTD. +00203B (base 16) WISDM LTD. + ST. JOHNS INNOVATION CENTRE + COWLEY ROAD CAMBRIDGE CB4 4WS + ENGLAND + UNITED KINGDOM + +00-20-3C (hex) EUROTIME AB +00203C (base 16) EUROTIME AB + BOX 277 + S-53224 SKARA + SWEDEN + SWEDEN + +00-20-3D (hex) NOVAR ELECTRONICS CORPORATION +00203D (base 16) NOVAR ELECTRONICS CORPORATION + 24 BROWN STREET + BARBERTON OH 44203 + UNITED STATES + +00-20-3E (hex) LogiCan Technologies, Inc. +00203E (base 16) LogiCan Technologies, Inc. + 150 KARL CLARK ROAD + EDMONTON, ALBERTA T6N 1E2 + CANADA + +00-20-3F (hex) JUKI CORPORATION +00203F (base 16) JUKI CORPORATION + 8-2-1 KOKURYO-CHO + CHOFU-SHI TOKYO 182 + JAPAN + JAPAN + +00-20-40 (hex) Motorola Broadband Communications Sector +002040 (base 16) Motorola Broadband Communications Sector + 6450 Sequence Drive + San Diego CA 92121 + UNITED STATES + +00-20-41 (hex) DATA NET +002041 (base 16) DATA NET + SUWON P.O. BOX 106, SUWON + KYUNGGI-DO + KOREA 440-600 + KOREA, REPUBLIC OF + +00-20-42 (hex) DATAMETRICS CORP. +002042 (base 16) DATAMETRICS CORP. + 8966 COMANCHE AVE. + CHATSWORTH CA 91311 + UNITED STATES + +00-20-43 (hex) NEURON COMPANY LIMITED +002043 (base 16) NEURON COMPANY LIMITED + 15 KWAI YI ROAD, BLOCK 2, + 21ST FLOOR, FLAT B + KWAI CHUNG, N.T. + HONG KONG + +00-20-44 (hex) GENITECH PTY LTD +002044 (base 16) GENITECH PTY LTD + P.O. BOX 196 + ASQUITH NSW 2077 + AUSTRALIA + AUSTRALIA + +00-20-45 (hex) ION Networks, Inc. +002045 (base 16) ION Networks, Inc. + 1551 South Washington Ave. + Piscataway NJ 08854 + UNITED STATES + +00-20-46 (hex) CIPRICO, INC. +002046 (base 16) CIPRICO, INC. + 2800 CAMPUS DRIVE--SUITE #60 + PLYMOUTH MN 55441 + UNITED STATES + +00-20-47 (hex) STEINBRECHER CORP. +002047 (base 16) STEINBRECHER CORP. + 30 NORTH AVENUE + BURLINGTON MA 01803 + UNITED STATES + +00-20-48 (hex) Marconi Communications +002048 (base 16) Marconi Communications + 1000 Fore Drive + Warrendale PA 15086-7502 + UNITED STATES + +00-20-49 (hex) COMTRON, INC. +002049 (base 16) COMTRON, INC. + SANCATHERINA BLDG. + 36-12 SHINJUKU 1-CHOME SHINJUKU-KU + TOKYO 160 JAPAN + JAPAN + +00-20-4A (hex) PRONET GMBH +00204A (base 16) PRONET GMBH + KARLSTRASSE 49 + D-7805 F VILLINGEN-SCHWENNINGEN + GERMANY + GERMANY + +00-20-4B (hex) AUTOCOMPUTER CO., LTD. +00204B (base 16) AUTOCOMPUTER CO., LTD. + NO. 18, PEI YUAN ROAD + CHUNG-LI CITY, TAO-YUAN HSIEN + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-20-4C (hex) MITRON COMPUTER PTE LTD. +00204C (base 16) MITRON COMPUTER PTE LTD. + 1020 HOUGANG AVENUE 1 #03-3504 + SINGAPORE 1953 + SINGAPORE + +00-20-4D (hex) INOVIS GMBH +00204D (base 16) INOVIS GMBH + HANNS-BRAUN STRASSE 50 + 85375 NEUFAHRN + GERMANY + GERMANY + +00-20-4E (hex) NETWORK SECURITY SYSTEMS, INC. +00204E (base 16) NETWORK SECURITY SYSTEMS, INC. + 9401 WAPLES STREET,STE. #100 + SAN DIEGO CA 92121 + UNITED STATES + +00-20-4F (hex) DEUTSCHE AEROSPACE AG +00204F (base 16) DEUTSCHE AEROSPACE AG + GESCHAEFTSFELD + VERTEIDIGUNG UND ZIVILE SYSTEM 81663 MUE + BUNDESREPUBLIK DEUTSCHLAND + GERMANY + +00-20-50 (hex) KOREA COMPUTER INC. +002050 (base 16) KOREA COMPUTER INC. + 469, DAEHEUNG-DONG + MAPO-GU, SEOUL + KOREA + KOREA, REPUBLIC OF + +00-20-51 (hex) Verilink Corporation +002051 (base 16) Verilink Corporation + 127 Jetplex Circle + Madison AL 35758 + UNITED STATES + +00-20-52 (hex) RAGULA SYSTEMS +002052 (base 16) RAGULA SYSTEMS + 4540 S. JUPITER DRIVE + SALT LAKE CITY UT 84124 + UNITED STATES + +00-20-53 (hex) HUNTSVILLE MICROSYSTEMS, INC. +002053 (base 16) HUNTSVILLE MICROSYSTEMS, INC. + P.O. BOX 12415 + HUNTSVILLE AL 35815 + UNITED STATES + +00-20-54 (hex) Sycamore Networks +002054 (base 16) Sycamore Networks + 220 Mill Rd + Chelmsford MA 01824 + UNITED STATES + +00-20-55 (hex) ALTECH CO., LTD. +002055 (base 16) ALTECH CO., LTD. + OHISHI BLDG., 2-23-11 + NISHI-NIPPORI, ARAKAWA-KU + TOKYO 116 + JAPAN + +00-20-56 (hex) NEOPRODUCTS +002056 (base 16) NEOPRODUCTS + 25 CHAPMAN STREET + BLACKBURN NORTH VICTORIA 3130 + AUSTRALIA + AUSTRALIA + +00-20-57 (hex) TITZE DATENTECHNIK GmbH +002057 (base 16) TITZE DATENTECHNIK GmbH + DIESELSTRASSE 10 + DS-71272 RENNINGEN-2 + GERMANY + +00-20-58 (hex) ALLIED SIGNAL INC. +002058 (base 16) ALLIED SIGNAL INC. + ROUTE 46 + TETERBORO NJ 07608 + UNITED STATES + +00-20-59 (hex) MIRO COMPUTER PRODUCTS AG +002059 (base 16) MIRO COMPUTER PRODUCTS AG + CARL MIELE STR. 4 + D-38112 BRAUNSCHWEIG + GERMANY + +00-20-5A (hex) COMPUTER IDENTICS +00205A (base 16) COMPUTER IDENTICS + 5 SHAWMUT ROAD + CANTON MA 02021 + UNITED STATES + +00-20-5B (hex) Kentrox, LLC +00205B (base 16) Kentrox, LLC + 20010 NW Tanasbourne Dr. + Hillsboro OR 97124 + UNITED STATES + +00-20-5C (hex) InterNet Systems of Florida, Inc. +00205C (base 16) InterNet Systems of Florida, Inc. + P.O. BOX 578 + CRESTVIEW FL 32536 + UNITED STATES + +00-20-5D (hex) NANOMATIC OY +00205D (base 16) NANOMATIC OY + PUISTOLAN RAITTI 4 + 00760 HELSINKI + FINLAND + FINLAND + +00-20-5E (hex) CASTLE ROCK, INC. +00205E (base 16) CASTLE ROCK, INC. + 20 SOUTH SANTA CRUZ AVE. + SUITE #310 + LOS GATOS CA 95030 + UNITED STATES + +00-20-5F (hex) GAMMADATA COMPUTER GMBH +00205F (base 16) GAMMADATA COMPUTER GMBH + GUTENBERGSTR. 13 + 82168 PUCHHEIM + GERMANY + GERMANY + +00-20-60 (hex) ALCATEL ITALIA S.p.A. +002060 (base 16) ALCATEL ITALIA S.p.A. + VIA TRENTO, 30 + 20059 VIMERCATE (MI) + ITALY + +00-20-61 (hex) GarrettCom, Inc. +002061 (base 16) GarrettCom, Inc. + 991 ANNAPOLIS WAY + North Andover MA 01845 + UNITED STATES + +00-20-62 (hex) SCORPION LOGIC, LTD. +002062 (base 16) SCORPION LOGIC, LTD. + 19 BROOKSIDE ROAD + OXHEY, WATFORD + HERTS WD1 4BW + UNITED KINGDOM + +00-20-63 (hex) WIPRO INFOTECH LTD. +002063 (base 16) WIPRO INFOTECH LTD. + UNITS 47-48, SDF BLOCK VII + MEPZ, KADAPPERI MADRAS-600045 + INDIA + +00-20-64 (hex) PROTEC MICROSYSTEMS, INC. +002064 (base 16) PROTEC MICROSYSTEMS, INC. + 297 LABROSSE + POINTE-CLAIRE, QUEBEC H9R 1A3 + CANADA + +00-20-65 (hex) SUPERNET NETWORKING INC. +002065 (base 16) SUPERNET NETWORKING INC. + 16 TOZERET HA'ARETZ ST. + TEL-AVIV 67891 + ISRAEL + +00-20-66 (hex) GENERAL MAGIC, INC. +002066 (base 16) GENERAL MAGIC, INC. + 2465 LATHAM STREET + MOUNTAIN VIEW CA 94040 + UNITED STATES + +00-20-67 (hex) PRIVATE +002067 (base 16) + +00-20-68 (hex) ISDYNE +002068 (base 16) ISDYNE + 11 ROXBURY AVENUE + NATICK MA 01760 + UNITED STATES + +00-20-69 (hex) ISDN SYSTEMS CORPORATION +002069 (base 16) ISDN SYSTEMS CORPORATION + 8320 OLD COURTHOUSE RD. + SUITE #203 + VIENNA VA 22182 + UNITED STATES + +00-20-6A (hex) OSAKA COMPUTER CORP. +00206A (base 16) OSAKA COMPUTER CORP. + 2-8 KOYACHOU NEYAGAW-SHI + OSAKA 572 + JAPAN + JAPAN + +00-20-6B (hex) KONICA MINOLTA HOLDINGS, INC. +00206B (base 16) KONICA MINOLTA HOLDINGS, INC. + 1-6-1, Marunouchi, + Chiyoda-ku + Tokyo 100-0005 + JAPAN + +00-20-6C (hex) EVERGREEN TECHNOLOGY CORP. +00206C (base 16) EVERGREEN TECHNOLOGY CORP. + 231 EMERSON STREET + PALO ALTO CA 94301 + UNITED STATES + +00-20-6D (hex) DATA RACE, INC. +00206D (base 16) DATA RACE, INC. + 11550 IH-10WEST STE#395 + SAN ANTONIO TX 78230 + UNITED STATES + +00-20-6E (hex) XACT, INC. +00206E (base 16) XACT, INC. + P.O. BOX 55 + ARGYLE TX 76226 + UNITED STATES + +00-20-6F (hex) FLOWPOINT CORPORATION +00206F (base 16) FLOWPOINT CORPORATION + 7291 CORONADO DRIVE, STE# 4 + SAN JOSE CA 95129 + UNITED STATES + +00-20-70 (hex) HYNET, LTD. +002070 (base 16) HYNET, LTD. + 102 JABOTINSKY ST. + PO BOX 3638 + PETACH TIKVA 49130 + ISRAEL + +00-20-71 (hex) IBR GMBH +002071 (base 16) IBR GMBH + KOHLERSTR. 45 + D-46286 DORSTEN + GERMANY + +00-20-72 (hex) WORKLINK INNOVATIONS +002072 (base 16) WORKLINK INNOVATIONS + 2452 ARMSTRONG STREET + LIVERMORE CA 9455O + UNITED STATES + +00-20-73 (hex) FUSION SYSTEMS CORPORATION +002073 (base 16) FUSION SYSTEMS CORPORATION + 7600 STANDISH PLACE + ROCKVILLE MD 20855 + UNITED STATES + +00-20-74 (hex) SUNGWOON SYSTEMS +002074 (base 16) SUNGWOON SYSTEMS + YUSUN BLDG.44-4 + SAMSUNG-DONG KANGNAM-KU, SEOUL 135-090 + KOREA + KOREA, REPUBLIC OF + +00-20-75 (hex) MOTOROLA COMMUNICATION ISRAEL +002075 (base 16) MOTOROLA COMMUNICATION ISRAEL + 3 KREMENETSKI STREET + POB 25016 + TEL-AVIV 61250 + ISRAEL + +00-20-76 (hex) REUDO CORPORATION +002076 (base 16) REUDO CORPORATION + 4-1-10 SHINSAN + NAGAOKA CITY, NIIGATA 940-21 + JAPAN + JAPAN + +00-20-77 (hex) KARDIOS SYSTEMS CORP. +002077 (base 16) KARDIOS SYSTEMS CORP. + 26 N SUMMIT AVE. + GAITHERSBURG MD 20877 + UNITED STATES + +00-20-78 (hex) RUNTOP, INC. +002078 (base 16) RUNTOP, INC. + 5/F, NO. 10, ALLEY 8, LANE 45 + PAO SHIN ROAD, HSINTIEN TAIPEI HSIEN + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-20-79 (hex) MIKRON GMBH +002079 (base 16) MIKRON GMBH + BRESLAUERSTR. 1-3 + 85386 ECHING + GERMANY + +00-20-7A (hex) WiSE Communications, Inc. +00207A (base 16) WiSE Communications, Inc. + 130 KNOWLES DRIVE + LOS GATOS CA 95030 + UNITED STATES + +00-20-7B (hex) Intel Corporation +00207B (base 16) Intel Corporation + 2111 NE 25th Avenue + JF3-420 + Hillsboro OR 97124 + UNITED STATES + +00-20-7C (hex) AUTEC GmbH +00207C (base 16) AUTEC GmbH + BAHNHOFSTR. 57 + 55234 FRAMERSHEIM + GERMANY + +00-20-7D (hex) ADVANCED COMPUTER APPLICATIONS +00207D (base 16) ADVANCED COMPUTER APPLICATIONS + 107 PENNS TRAIL + NEWTOWN PA 18940 + UNITED STATES + +00-20-7E (hex) FINECOM Co., Ltd. +00207E (base 16) FINECOM Co., Ltd. + 1108 HWAKOK-DONG, KANGSEO-KU + SEOUL + KOREA, REPUBLIC OF + +00-20-7F (hex) KYOEI SANGYO CO., LTD. +00207F (base 16) KYOEI SANGYO CO., LTD. + DIR. & GEN'L MGR.IND. SYSTEMS + 20-4, SHOTO 2-CHOME SHIBUYA-KU + TOKYO + JAPAN + +00-20-80 (hex) SYNERGY (UK) LTD. +002080 (base 16) SYNERGY (UK) LTD. + HARTCRAN HOUSE + CARPENDERS PARK, + WATFORD HERTS. WD1 5EZ + UNITED KINGDOM + +00-20-81 (hex) TITAN ELECTRONICS +002081 (base 16) TITAN ELECTRONICS + 3033 SCIENCE PARK ROAD + SAN DIEGO CA 92121 + UNITED STATES + +00-20-82 (hex) ONEAC CORPORATION +002082 (base 16) ONEAC CORPORATION + 27944 N. BRADLEY RD. + LIBERTYVILLE IL 60048 + UNITED STATES + +00-20-83 (hex) PRESTICOM INCORPORATED +002083 (base 16) PRESTICOM INCORPORATED + 3275, 1ST STREET, STE. #1 + ST-HUBERT (QUEBEC) + CANADA J3Y 8Y6 + CANADA + +00-20-84 (hex) OCE PRINTING SYSTEMS, GMBH +002084 (base 16) OCE PRINTING SYSTEMS, GMBH + SIEMENSALLEE 2 + D-85586 POING + GERMANY + +00-20-85 (hex) EXIDE ELECTRONICS +002085 (base 16) EXIDE ELECTRONICS + P.O. BOX 58189 + RALEIGH NC 27658 + UNITED STATES + +00-20-86 (hex) MICROTECH ELECTRONICS LIMITED +002086 (base 16) MICROTECH ELECTRONICS LIMITED + LANCASTER ROAD + CRESSEX INDUSTRIAL ESTATE HIGH WYCOMBE, + KINGDOM + UNITED KINGDOM + +00-20-87 (hex) MEMOTEC COMMUNICATIONS CORP. +002087 (base 16) MEMOTEC COMMUNICATIONS CORP. + ONE HIGH STREET + NORTH ANDOVER MA 01845 + UNITED STATES + +00-20-88 (hex) GLOBAL VILLAGE COMMUNICATION +002088 (base 16) GLOBAL VILLAGE COMMUNICATION + 1144 EAST ARQUES AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-20-89 (hex) T3PLUS NETWORKING, INC. +002089 (base 16) T3PLUS NETWORKING, INC. + 2840 SAN TOMAS EXPRESSWAY + SANTA CLARA CA 95051 + UNITED STATES + +00-20-8A (hex) SONIX COMMUNICATIONS, LTD. +00208A (base 16) SONIX COMMUNICATIONS, LTD. + WILKINSON ROAD + CIRENCESTER, GLOS. GL7 1YT + ENGLAND + UNITED KINGDOM + +00-20-8B (hex) LAPIS TECHNOLOGIES, INC. +00208B (base 16) LAPIS TECHNOLOGIES, INC. + 1100 MARINA VILLAGE PKWY + SUITE #100 + ALAMEDA CA 94501 + UNITED STATES + +00-20-8C (hex) GALAXY NETWORKS, INC. +00208C (base 16) GALAXY NETWORKS, INC. + 9348 DE SOTO AVENUE + CHATSWORTH CA 91311 + UNITED STATES + +00-20-8D (hex) CMD TECHNOLOGY +00208D (base 16) CMD TECHNOLOGY + 1 VANDERBILT + IRVINE CA 92718 + UNITED STATES + +00-20-8E (hex) CHEVIN SOFTWARE ENG. LTD. +00208E (base 16) CHEVIN SOFTWARE ENG. LTD. + 2 BOROUGHGATE, OTLEY, + LEEDS, WEST, YORKSHIRE + LS21 3AL UNITED KINGDOM + UNITED KINGDOM + +00-20-8F (hex) ECI TELECOM LTD. +00208F (base 16) ECI TELECOM LTD. + HASIVIM ST. 30, + PETACH-TIKVA 49133 + ISRAEL + +00-20-90 (hex) ADVANCED COMPRESSION TECHNOLOGY, INC. +002090 (base 16) ADVANCED COMPRESSION TECHNOLOGY, INC. + 820 FLYNN ROAD + CAMARILLO CA 93012 + UNITED STATES + +00-20-91 (hex) J125, NATIONAL SECURITY AGENCY +002091 (base 16) J125, NATIONAL SECURITY AGENCY + 9800 SAVAGE ROAD + FT. MEADE MD 20755-6000 + UNITED STATES + +00-20-92 (hex) CHESS ENGINEERING B.V. +002092 (base 16) CHESS ENGINEERING B.V. + NIEUWE GRACHT 74 + 2011 NJ HAARLEM + NETHERLANDS + +00-20-93 (hex) LANDINGS TECHNOLOGY CORP. +002093 (base 16) LANDINGS TECHNOLOGY CORP. + 163 WATER STREET + MERRILL BLOCK UNIT A2 + EXETER NH 03833 + UNITED STATES + +00-20-94 (hex) CUBIX CORPORATION +002094 (base 16) CUBIX CORPORATION + 2800 LOCKHEED WAY + CARSON CITY NV 89706 + UNITED STATES + +00-20-95 (hex) RIVA ELECTRONICS +002095 (base 16) RIVA ELECTRONICS + UNIT 17, BARRSFOLD RD. + WINGATES INDUSTRIAL PARK WESTHOUGHTON, B + LANCASHIRE ENGLAND BL5 3XW + UNITED KINGDOM + +00-20-96 (hex) Invensys +002096 (base 16) Invensys + 1354 Clifford Avenue + Loves Park IL 61111 + UNITED STATES + +00-20-97 (hex) APPLIED SIGNAL TECHNOLOGY +002097 (base 16) APPLIED SIGNAL TECHNOLOGY + 160 SOBRANTE WAY + SUNNYVALE CA 94086 + UNITED STATES + +00-20-98 (hex) HECTRONIC AB +002098 (base 16) HECTRONIC AB + BOX 3002 + S-75003 UPPSALA + SWEDEN + +00-20-99 (hex) BON ELECTRIC CO., LTD. +002099 (base 16) BON ELECTRIC CO., LTD. + 4-4 28, MIZUDO-CHO + AMAGASAKI, 661 + HYOGO HYOGO JAPAN + JAPAN + +00-20-9A (hex) THE 3DO COMPANY +00209A (base 16) THE 3DO COMPANY + 600 GALVESTON DRIVE + REDWOOD CITY CA 94063 + UNITED STATES + +00-20-9B (hex) ERSAT ELECTRONIC GMBH +00209B (base 16) ERSAT ELECTRONIC GMBH + HAARBERGSTR. 61 + D-99097 ERFURT + GERMANY + GERMANY + +00-20-9C (hex) PRIMARY ACCESS CORP. +00209C (base 16) PRIMARY ACCESS CORP. + 10080 CARROLL CANYON RD + SAN DIEGO CA 92131 + UNITED STATES + +00-20-9D (hex) LIPPERT AUTOMATIONSTECHNIK +00209D (base 16) LIPPERT AUTOMATIONSTECHNIK + D-68165 MANNHEIM + KRAPPMUEHLSTR. 34 + GERMANY + GERMANY + +00-20-9E (hex) BROWN'S OPERATING SYSTEM SERVICES, LTD. +00209E (base 16) BROWN'S OPERATING SYSTEM SERVICES, LTD. + ST. AGNES HOUSE, CRESSWELL PK, + BLACKHEATH, London SE3 9RD + UNITED KINGDOM + +00-20-9F (hex) MERCURY COMPUTER SYSTEMS, INC. +00209F (base 16) MERCURY COMPUTER SYSTEMS, INC. + 199 RIVERNECK ROAD + CHELMSFORD MA 01824 + UNITED STATES + +00-20-A0 (hex) OA LABORATORY CO., LTD. +0020A0 (base 16) OA LABORATORY CO., LTD. + 228 KAMIMACHIYA KAMAKURA + KANAGAWA 247 + JAPAN + +00-20-A1 (hex) DOVATRON +0020A1 (base 16) DOVATRON + PRODUCTS DIVISION + 1198 BOSTON AVENUE + LONGMONT CO 80501 + UNITED STATES + +00-20-A2 (hex) GALCOM NETWORKING LTD. +0020A2 (base 16) GALCOM NETWORKING LTD. + P.O. BOX 1568 + RAMAT HASHARON 47113 + ISRAEL + +00-20-A3 (hex) DIVICOM INC. +0020A3 (base 16) DIVICOM INC. + 580 COTTONWOOD DRIVE + MILPITAS CA 95035 + UNITED STATES + +00-20-A4 (hex) MULTIPOINT NETWORKS +0020A4 (base 16) MULTIPOINT NETWORKS + 19 DAVIS DRIVE + BELMONT CA 94002-3001 + UNITED STATES + +00-20-A5 (hex) API ENGINEERING +0020A5 (base 16) API ENGINEERING + 2689 POPLARWOOD WAY + SAN JOSE CA 95132 + UNITED STATES + +00-20-A6 (hex) PROXIM, INC. +0020A6 (base 16) PROXIM, INC. + 295 NORTH BERNARDO AVENUE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-20-A7 (hex) PAIRGAIN TECHNOLOGIES, INC. +0020A7 (base 16) PAIRGAIN TECHNOLOGIES, INC. + 14402 FRANKLIN AVENUE + TUSTIN CA 92680-7013 + UNITED STATES + +00-20-A8 (hex) SAST TECHNOLOGY CORP. +0020A8 (base 16) SAST TECHNOLOGY CORP. + 225 OLD NEW BRUNSWICK RD. + SUITE #101 + PISCATAWAY NJ 08854 + UNITED STATES + +00-20-A9 (hex) WHITE HORSE INDUSTRIAL +0020A9 (base 16) WHITE HORSE INDUSTRIAL + 4F. NO.16, ALLEY 56, LANE 181 + SEC.4, CHUNG HSIAO EAST ROAD TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-20-AA (hex) DIGIMEDIA VISION LTD. +0020AA (base 16) DIGIMEDIA VISION LTD. + CRAWLEY COURT + WINCHESTER, HAMPSHIRE + SO21 2QA UNITED KINGDOM + UNITED KINGDOM + +00-20-AB (hex) MICRO INDUSTRIES CORP. +0020AB (base 16) MICRO INDUSTRIES CORP. + 8399 GREEN MEADOWS DR. N. + WESTERVILLE OH 43081 + UNITED STATES + +00-20-AC (hex) INTERFLEX DATENSYSTEME GMBH +0020AC (base 16) INTERFLEX DATENSYSTEME GMBH + GROBWIESENSTRASE 24 + W-7201 DURCHHAUSEN + WESTGERMANY + GERMANY + +00-20-AD (hex) LINQ SYSTEMS +0020AD (base 16) LINQ SYSTEMS + P.O. BOX 11040 + TUCSON AZ 85734 + UNITED STATES + +00-20-AE (hex) ORNET DATA COMMUNICATION TECH. +0020AE (base 16) ORNET DATA COMMUNICATION TECH. + P.O. BOX 323 + CARMIEL 20100 + ISRAEL + ISRAEL + +00-20-AF (hex) 3COM CORPORATION +0020AF (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + SANTA CLARA CA 95052 + UNITED STATES + +00-20-B0 (hex) GATEWAY DEVICES, INC. +0020B0 (base 16) GATEWAY DEVICES, INC. + 2440 STANWELL DRIVE + CONCORD CA 94520 + UNITED STATES + +00-20-B1 (hex) COMTECH RESEARCH INC. +0020B1 (base 16) COMTECH RESEARCH INC. + 24271 TAHOE + LAGUNA NIGUEL CA 92656 + UNITED STATES + +00-20-B2 (hex) GKD Gesellschaft Fur Kommunikation Und Datentechnik +0020B2 (base 16) GKD Gesellschaft Fur Kommunikation Und Datentechnik + + SAARBURGER RING 10-12 + 68229 MANNHEIM + GERMANY + +00-20-B3 (hex) SCLTEC COMMUNICATIONS SYSTEMS +0020B3 (base 16) SCLTEC COMMUNICATIONS SYSTEMS + 3 APOLLO PLACE + LANE COVE N.S.W. 2066 + AUSTRALIA + AUSTRALIA + +00-20-B4 (hex) TERMA ELEKTRONIK AS +0020B4 (base 16) TERMA ELEKTRONIK AS + HOVMARKEN 4, + DK-8520 LYSTRUP + DENMARK + +00-20-B5 (hex) YASKAWA ELECTRIC CORPORATION +0020B5 (base 16) YASKAWA ELECTRIC CORPORATION + 2-1 KUROSAKI-SHIROISHI + YAHATANISHI-KU KITAKYUSHU-CITY + JAPAN + +00-20-B6 (hex) AGILE NETWORKS, INC. +0020B6 (base 16) AGILE NETWORKS, INC. + 200 BAKER AVENUE + CONCORD MA 01742 + UNITED STATES + +00-20-B7 (hex) NAMAQUA COMPUTERWARE +0020B7 (base 16) NAMAQUA COMPUTERWARE + P.O. BOX 7155 + STELLEN BOSCH 7599 + SOUTH AFRICA + +00-20-B8 (hex) PRIME OPTION, INC. +0020B8 (base 16) PRIME OPTION, INC. + 2341 W. 205TH STREET #116 + TORRANCE CA 90501 + UNITED STATES + +00-20-B9 (hex) METRICOM, INC. +0020B9 (base 16) METRICOM, INC. + 980 UNIVERSITY AVENUE + LOS GATOS CA 95030 + UNITED STATES + +00-20-BA (hex) CENTER FOR HIGH PERFORMANCE +0020BA (base 16) CENTER FOR HIGH PERFORMANCE + COMPUTING OF WPI + SUITE #170 293 BOSTON POST ROAD W. + MARLBORO MA 01752 + UNITED STATES + +00-20-BB (hex) ZAX CORPORATION +0020BB (base 16) ZAX CORPORATION + 20-12 OGIKUBO 5-CHOME + SUGINAMI-KU TOKYO + 167 JAPAN + JAPAN + +00-20-BC (hex) Long Reach Networks Pty Ltd +0020BC (base 16) Long Reach Networks Pty Ltd + Unit 3, 118-122 Bowden St + MEADOWBANK NSW 2114 + AUSTRALIA + +00-20-BD (hex) NIOBRARA R & D CORPORATION +0020BD (base 16) NIOBRARA R & D CORPORATION + PO BOX 3418 + JOPLIN MO 64803-3418 + UNITED STATES + +00-20-BE (hex) LAN ACCESS CORP. +0020BE (base 16) LAN ACCESS CORP. + 2730 MONTEREY STREET, STE.#102 + TORRANCE CA 90503 + UNITED STATES + +00-20-BF (hex) AEHR TEST SYSTEMS +0020BF (base 16) AEHR TEST SYSTEMS + 1667 PLYMOUTH STREET + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-20-C0 (hex) PULSE ELECTRONICS, INC. +0020C0 (base 16) PULSE ELECTRONICS, INC. + 5706 FREDERICK AVENUE + ROCKVILLE MD 20852 + UNITED STATES + +00-20-C1 (hex) SAXA, Inc. +0020C1 (base 16) SAXA, Inc. + 2-3 Shimomeguro 2-Chome + Meguro-Ku, + Tokyo + JAPAN + +00-20-C2 (hex) TEXAS MEMORY SYSTEMS, INC. +0020C2 (base 16) TEXAS MEMORY SYSTEMS, INC. + 11200 WESTHEIMER RD-STE#1000 + HOUSTON TX 77042 + UNITED STATES + +00-20-C3 (hex) COUNTER SOLUTIONS LTD. +0020C3 (base 16) COUNTER SOLUTIONS LTD. + 263 HEAGE ROAD + RIPLEY, DERBYS DE5 3GH + UNITED KINGDOM + +00-20-C4 (hex) INET,INC. +0020C4 (base 16) INET,INC. + 801 E. CAMPBELL-STE.#330 + RICHARDSON TX 75081 + UNITED STATES + +00-20-C5 (hex) EAGLE TECHNOLOGY +0020C5 (base 16) EAGLE TECHNOLOGY + 2865 ZANKER ROAD + SAN JOSE CA 95134 + UNITED STATES + +00-20-C6 (hex) NECTEC +0020C6 (base 16) NECTEC + RAMA VI ROAD + RAJTHEVI BANGKOK 10400 + THAILAND + THAILAND + +00-20-C7 (hex) AKAI Professional M.I. Corp. +0020C7 (base 16) AKAI Professional M.I. Corp. + 1-3, Hiranuma 1-Chome, + Nishi-ku, Yokohama, + 220-0023 + JAPAN + +00-20-C8 (hex) LARSCOM INCORPORATED +0020C8 (base 16) LARSCOM INCORPORATED + 4600 PATRICK HENRY DRIVE + SANTA CLARA CA 95054 + UNITED STATES + +00-20-C9 (hex) VICTRON BV +0020C9 (base 16) VICTRON BV + POB 31 + NL 9700 AA GRONINGEN + THE NETHERLANDS + NETHERLANDS + +00-20-CA (hex) DIGITAL OCEAN +0020CA (base 16) DIGITAL OCEAN + 11206 THOMPSON AVENUE + LENEXA KS 66219-2303 + UNITED STATES + +00-20-CB (hex) PRETEC ELECTRONICS CORP. +0020CB (base 16) PRETEC ELECTRONICS CORP. + 39899 BALENTINE DR. + SUITE #305 + NEWARK CA 94560 + UNITED STATES + +00-20-CC (hex) DIGITAL SERVICES, LTD. +0020CC (base 16) DIGITAL SERVICES, LTD. + 9 WAYTE STREET + COSHAM HAMPSHIRE + ENGLAND PO6 3BS + UNITED KINGDOM + +00-20-CD (hex) HYBRID NETWORKS, INC. +0020CD (base 16) HYBRID NETWORKS, INC. + 10201 BUBB ROAD + CUPERTINO CA 95014-4167 + UNITED STATES + +00-20-CE (hex) LOGICAL DESIGN GROUP, INC. +0020CE (base 16) LOGICAL DESIGN GROUP, INC. + 6301 CHAPEL HILL ROAD + RALEIGH NC 27607 + UNITED STATES + +00-20-CF (hex) TEST & MEASUREMENT SYSTEMS INC +0020CF (base 16) TEST & MEASUREMENT SYSTEMS INC + 2045 SITKA COURT + LOVELAND CO 80538 + UNITED STATES + +00-20-D0 (hex) VERSALYNX CORPORATION +0020D0 (base 16) VERSALYNX CORPORATION + 8950 CARLEY CIRCLE + SAN DIEGO CA 92126 + UNITED STATES + +00-20-D1 (hex) MICROCOMPUTER SYSTEMS (M) SDN. +0020D1 (base 16) MICROCOMPUTER SYSTEMS (M) SDN. + 23-25, JALAN JEJAKA TUJUH + TAMAN MALURI, CHERAS 55100 KUALA LUMPUR + MALAYSIA + MALAYSIA + +00-20-D2 (hex) RAD DATA COMMUNICATIONS, LTD. +0020D2 (base 16) RAD DATA COMMUNICATIONS, LTD. + 8 HANECHOSHET STREET + TEL-AVIV 69710 + ISRAEL + ISRAEL + +00-20-D3 (hex) OST (OUEST STANDARD TELEMATIQU +0020D3 (base 16) OST (OUEST STANDARD TELEMATIQU + RUE DU BAS VILLAGE + BP 158, Z.I. SUD-EST 35515 CESSON-SEVIGN + FRANCE + FRANCE + +00-20-D4 (hex) CABLETRON - ZEITTNET INC. +0020D4 (base 16) CABLETRON - ZEITTNET INC. + 35 INDUSTRIAL WAY + P.O. BOX 5005 + ROHESTER NH 03866-5005 + UNITED STATES + +00-20-D5 (hex) VIPA GMBH +0020D5 (base 16) VIPA GMBH + WETTERKREUZ 27 + D-91058 ERLANGEN + GERMANY + +00-20-D6 (hex) BREEZECOM +0020D6 (base 16) BREEZECOM + ATIDIM TECHNOLOGICAL PK-BLDG.3 + TEL-AVIV 61131 + ISRAEL + ISRAEL + +00-20-D7 (hex) JAPAN MINICOMPUTER SYSTEMS CO., Ltd. +0020D7 (base 16) JAPAN MINICOMPUTER SYSTEMS CO., Ltd. + 3-33-18 TAKAIDOHIGASHI + SUGINAMI-KU + TOKYO 168 + JAPAN + +00-20-D8 (hex) Nortel Networks +0020D8 (base 16) Nortel Networks + 4401 Great America Pkwy. + Santa Clara CA 94588 + UNITED STATES + +00-20-D9 (hex) PANASONIC TECHNOLOGIES, INC./MIECO-US +0020D9 (base 16) PANASONIC TECHNOLOGIES, INC./MIECO-US + 1703 N. RANDALL RD. + ELGIN IL 60123 + UNITED STATES + +00-20-DA (hex) Alcatel North America ESD +0020DA (base 16) Alcatel North America ESD + 26801 West Agoura Road + CALABASAS CA 91301 + UNITED STATES + +00-20-DB (hex) XNET TECHNOLOGY, INC. +0020DB (base 16) XNET TECHNOLOGY, INC. + 426 S. HILLVIEW DRIVE + MILPITAS CA 95035 + UNITED STATES + +00-20-DC (hex) DENSITRON TAIWAN LTD. +0020DC (base 16) DENSITRON TAIWAN LTD. + KYOWA NANABANKAN 5F + 1-11-5 OMORI-KITA OTA-KU, TOKYO 143 + JAPAN + JAPAN + +00-20-DD (hex) Cybertec Pty Ltd +0020DD (base 16) Cybertec Pty Ltd + Unit 11, 41 Higginbotham Road + Gladesville NSW 2111 + AUSTRALIA + +00-20-DE (hex) JAPAN DIGITAL LABORAT'Y CO.LTD +0020DE (base 16) JAPAN DIGITAL LABORAT'Y CO.LTD + JDL KAWASAKI R & D CENTER + 10-1 MINAMI-KUROKAWA ASAO-KU, KAWASKAKI- + KANAGAWA-KEN 215 + JAPAN + +00-20-DF (hex) KYOSAN ELECTRIC MFG. CO., LTD. +0020DF (base 16) KYOSAN ELECTRIC MFG. CO., LTD. + 2-29, HEIAN-CHO, TSURUMI-KU + YOKOHAMA, 230 + JAPAN + +00-20-E0 (hex) Actiontec Electronics, Inc. +0020E0 (base 16) Actiontec Electronics, Inc. + 760 North Mary Ave. + Sunnyvale. CA 94085 + UNITED STATES + +00-20-E1 (hex) ALAMAR ELECTRONICS +0020E1 (base 16) ALAMAR ELECTRONICS + 489 DIVISION STREET + CAMPBELL CA 95008 + UNITED STATES + +00-20-E2 (hex) INFORMATION RESOURCE ENGINEERING +0020E2 (base 16) INFORMATION RESOURCE ENGINEERING + 8029 CORPORATE DRIVE + BALTIMORE MD 21236 + UNITED STATES + +00-20-E3 (hex) MCD KENCOM CORPORATION +0020E3 (base 16) MCD KENCOM CORPORATION + 20950 CASTLE ROCK ROAD + LAGUNA BEACH CA 92651-1115 + UNITED STATES + +00-20-E4 (hex) HSING TECH ENTERPRISE CO., LTD +0020E4 (base 16) HSING TECH ENTERPRISE CO., LTD + NO. 2, LANE 128, SEC. 2 + CHUNG SHAN N. RD. + TEIPEI, + TAIWAN, REPUBLIC OF CHINA + +00-20-E5 (hex) APEX DATA, INC. +0020E5 (base 16) APEX DATA, INC. + 6624 OWENS DRIVE + PLEASANTON CA 94588 + UNITED STATES + +00-20-E6 (hex) LIDKOPING MACHINE TOOLS AB +0020E6 (base 16) LIDKOPING MACHINE TOOLS AB + BOX 910 + 531 19 LIDKOPING + SWEDEN + +00-20-E7 (hex) B&W NUCLEAR SERVICE COMPANY +0020E7 (base 16) B&W NUCLEAR SERVICE COMPANY + SPECIAL PRODUCTS & INTEG.SVCS. + 155 MILL RIDGE ROAD + LYNCHBURG VA 24502 + UNITED STATES + +00-20-E8 (hex) DATATREK CORPORATION +0020E8 (base 16) DATATREK CORPORATION + 4505 WYLAND DRIVE + ELKHART IN 46516 + UNITED STATES + +00-20-E9 (hex) DANTEL +0020E9 (base 16) DANTEL + P.O. BOX 55013 + 2991 NORTH ARGYLE AVE. + FRESNO CA 93727-1388 + UNITED STATES + +00-20-EA (hex) EFFICIENT NETWORKS, INC. +0020EA (base 16) EFFICIENT NETWORKS, INC. + 4201 SPRING VALLEY ROAD + SUITE #1200 + DALLAS TX 75244-3666 + UNITED STATES + +00-20-EB (hex) CINCINNATI MICROWAVE, INC. +0020EB (base 16) CINCINNATI MICROWAVE, INC. + ONE MICROWAVE PLAZA + CINCINNATI OH 45249 + UNITED STATES + +00-20-EC (hex) TECHWARE SYSTEMS CORP. +0020EC (base 16) TECHWARE SYSTEMS CORP. + #100 - 12051 HORSESHOE WAY + RICHMOND, B.C. CANADA + V7A 4V4 + CANADA + +00-20-ED (hex) GIGA-BYTE TECHNOLOGY CO., LTD. +0020ED (base 16) GIGA-BYTE TECHNOLOGY CO., LTD. + 365 CLOVERLEAF + BALDWIN PARK CA 91706 + UNITED STATES + +00-20-EE (hex) GTECH CORPORATION +0020EE (base 16) GTECH CORPORATION + 55 TECHNOLOGY WAY + WEST GREENWICH RI 02817 + UNITED STATES + +00-20-EF (hex) USC CORPORATION +0020EF (base 16) USC CORPORATION + 6-4, OSAKI 1-CHOME + SHINAGAWA-KU TOKYO, + 141 JAPAN + JAPAN + +00-20-F0 (hex) UNIVERSAL MICROELECTRONICS CO. +0020F0 (base 16) UNIVERSAL MICROELECTRONICS CO. + 3, 27TH RD., TAICHUNG IND.PARK + TAICHUN + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-20-F1 (hex) ALTOS INDIA LIMITED +0020F1 (base 16) ALTOS INDIA LIMITED + D-60, OKLHLA INDUSTRIAL + AREA, PHASE 1 NEW DELHI -110020 + INDIA + INDIA + +00-20-F2 (hex) SUN MICROSYSTEMS, INC. +0020F2 (base 16) SUN MICROSYSTEMS, INC. + 4200 Network Circle + Santa Clara CA 95054 + UNITED STATES + +00-20-F3 (hex) RAYNET CORPORATION +0020F3 (base 16) RAYNET CORPORATION + 155 CONSTITUTION DRIVE + MENLO PARK CA 94025 + UNITED STATES + +00-20-F4 (hex) SPECTRIX CORPORATION +0020F4 (base 16) SPECTRIX CORPORATION + 106 WILMOT ROAD, SUITE 250 + DEERFIELD IL 60015-5150 + UNITED STATES + +00-20-F5 (hex) PANDATEL AG +0020F5 (base 16) PANDATEL AG + FASANENWEG 25 + D-22145 HAMBURG + GERMANY + GERMANY + +00-20-F6 (hex) NET TEK AND KARLNET, INC. +0020F6 (base 16) NET TEK AND KARLNET, INC. + LITTLE STREAMS + THE ABBOTSBROOK, BOURNE END BUCKS, SL8 5 + UNITED KINGDOM + UNITED KINGDOM + +00-20-F7 (hex) CYBERDATA +0020F7 (base 16) CYBERDATA + 2700 GARDEN ROAD + MONTEREY CA 93940 + UNITED STATES + +00-20-F8 (hex) CARRERA COMPUTERS, INC. +0020F8 (base 16) CARRERA COMPUTERS, INC. + 23181 VERDUGO DRIVE-STE.#105A + LAGUNA HILLS CA 92653 + UNITED STATES + +00-20-F9 (hex) PARALINK NETWORKS, INC. +0020F9 (base 16) PARALINK NETWORKS, INC. + 4F, NO. 27, SEC.3, PATEH RD. + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-20-FA (hex) GDE SYSTEMS, INC. +0020FA (base 16) GDE SYSTEMS, INC. + P.O. BOX 85468 - BLDG.#61 + SAN DIEGO CA 92186-5468 + UNITED STATES + +00-20-FB (hex) OCTEL COMMUNICATIONS CORP. +0020FB (base 16) OCTEL COMMUNICATIONS CORP. + 1001 MURPHY RANCH RD + MILPITAS CA 95035 + UNITED STATES + +00-20-FC (hex) MATROX +0020FC (base 16) MATROX + 1055 ST. REGIS, + DORVAL, QUEBEC H9P-2T4 + CANADA + +00-20-FD (hex) ITV TECHNOLOGIES, INC. +0020FD (base 16) ITV TECHNOLOGIES, INC. + 6800 OWENSMOUTH AVE. #230 + CANOGA PARK CA 91303 + UNITED STATES + +00-20-FE (hex) TOPWARE INC. / GRAND COMPUTER +0020FE (base 16) TOPWARE INC. / GRAND COMPUTER + CORPORATION + B1, NO. 9, LANE 50 SECTION 3, NAN KANG R + TAIPEI R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-20-FF (hex) SYMMETRICAL TECHNOLOGIES +0020FF (base 16) SYMMETRICAL TECHNOLOGIES + 500 HUNTMAR PARK DRIVE + HERNDON VA 22070 + UNITED STATES + +00-26-54 (hex) 3Com Corporation +002654 (base 16) 3Com Corporation + 5353 Betsy Ross Drive + Bldg 14, M/S 1425 + Santa Clara California 95054-1162 + UNITED STATES + +00-30-00 (hex) ALLWELL TECHNOLOGY CORP. +003000 (base 16) ALLWELL TECHNOLOGY CORP. + 4F, #15, LANE3, SEC.2 + CHIEN KWO N. ROAD TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-01 (hex) SMP +003001 (base 16) SMP + 22, RUE DES COSMONAUTES + 31400 TOULOUSE + FRANCE + FRANCE + +00-30-02 (hex) Expand Networks +003002 (base 16) Expand Networks + Atidim Tech Park, Bldg. 4 + P.O. Box 58142 + Tel-Aviv 61580 + ISRAEL + +00-30-03 (hex) Phasys Ltd. +003003 (base 16) Phasys Ltd. + #100-9404 41st Avenue + Edmonton Alberta T6X 1R2 + CANADA + +00-30-04 (hex) LEADTEK RESEARCH INC. +003004 (base 16) LEADTEK RESEARCH INC. + 18F, No.166, Chien-Yi Road + Chung-Ho Taipei, + Hsien + TAIWAN, REPUBLIC OF CHINA + +00-30-05 (hex) Fujitsu Siemens Computers +003005 (base 16) Fujitsu Siemens Computers + Buergermeister ulrich 100 + 86199 Augsburg + GERMANY + +00-30-06 (hex) SUPERPOWER COMPUTER +003006 (base 16) SUPERPOWER COMPUTER + ELECTRONICS CO., LTD. + NO. 20 WU-GONG 6TH ROAD WU-KU INDUSTR'L + Taipei 248 + TAIWAN, REPUBLIC OF CHINA + +00-30-07 (hex) OPTI, INC. +003007 (base 16) OPTI, INC. + 1440 MCCARTHY BLVD. + MILPITAS CA 95035 + UNITED STATES + +00-30-08 (hex) AVIO DIGITAL, INC. +003008 (base 16) AVIO DIGITAL, INC. + 957 INDUSTRIAL ROAD + SAN CARLOS CA 94070 + UNITED STATES + +00-30-09 (hex) Tachion Networks, Inc. +003009 (base 16) Tachion Networks, Inc. + 2 Meridian Road + Eatontown NJ 07724 + UNITED STATES + +00-30-0A (hex) AZTECH SYSTEMS LTD. +00300A (base 16) AZTECH SYSTEMS LTD. + 31 UBI ROAD 1, AZTECH BUILDING + SINGAPORE 408694 + SINGAPORE + +00-30-0B (hex) mPHASE Technologies, Inc. +00300B (base 16) mPHASE Technologies, Inc. + 250 14th Street + GCATT Bldg. - Room #248A + Atlanta GA 30318 + UNITED STATES + +00-30-0C (hex) CONGRUENCY, LTD. +00300C (base 16) CONGRUENCY, LTD. + 23 HASIVIM STREET + POB 7813 + PETAH-TIKVA 49170 + ISRAEL + +00-30-0D (hex) MMC Technology, Inc. +00300D (base 16) MMC Technology, Inc. + #1502, Seoul Venture Town, Aju Bldg + 679-5, Yeoksam-Dong, Kangnam-Gu + Seoul 135-080 + KOREA, REPUBLIC OF + +00-30-0E (hex) Klotz Digital AG +00300E (base 16) Klotz Digital AG + Hans-Stiessbergerstr. 2A + D-85540 Haar + GERMANY + +00-30-0F (hex) IMT - Information Management T +00300F (base 16) IMT - Information Management T + Gewerbestrasse 8 + CH-9470 Buchs + SWITZERLAND + +00-30-10 (hex) VISIONETICS INTERNATIONAL +003010 (base 16) VISIONETICS INTERNATIONAL + 3F, NO. 3, PROSPERITY ROAD 1 + SCIENCE-BASED INDUSTRIAL PARK HSINCHU + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-11 (hex) HMS FIELDBUS SYSTEMS AB +003011 (base 16) HMS FIELDBUS SYSTEMS AB + PILEFELTSGATAN 93-95 + 30250 HALMSSTAD + SWEDEN + SWEDEN + +00-30-12 (hex) DIGITAL ENGINEERING LTD. +003012 (base 16) DIGITAL ENGINEERING LTD. + 2 TRENCH ROAD, MALLUSK + BELFAST BT36 4TY + NORTHERN IRELAND + IRELAND + +00-30-13 (hex) NEC Corporation +003013 (base 16) NEC Corporation + 1-10 Nisshincho, Fuchu + Tokyo 183-8501 + JAPAN + +00-30-14 (hex) DIVIO, INC. +003014 (base 16) DIVIO, INC. + 997 E. ARQUES AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-30-15 (hex) CP CLARE CORP. +003015 (base 16) CP CLARE CORP. + 78 CHERRY HILL DRIVE + BEVERLY MA 01915 + UNITED STATES + +00-30-16 (hex) ISHIDA CO., LTD. +003016 (base 16) ISHIDA CO., LTD. + 959-1 SHIMOMAGARI + RITTO-CHO KURITA-GUN SHIGA 520-3026 + JAPAN + JAPAN + +00-30-17 (hex) BlueArc UK Ltd +003017 (base 16) BlueArc UK Ltd + Queensgate House + Cookham Road + Bracknell RG12 1RB + UNITED KINGDOM + +00-30-18 (hex) Jetway Information Co., Ltd. +003018 (base 16) Jetway Information Co., Ltd. + 4F, No. 168, LI THE ST. + Chung Ho City 235 Taipei + TAIWAN, REPUBLIC OF CHINA + +00-30-19 (hex) CISCO SYSTEMS, INC. +003019 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-30-1A (hex) SMARTBRIDGES PTE. LTD. +00301A (base 16) SMARTBRIDGES PTE. LTD. + 745 Toa Payoh Lorong 5 + #04-01 + 319455 + SINGAPORE + +00-30-1B (hex) SHUTTLE, INC. +00301B (base 16) SHUTTLE, INC. + 5F, No. 34, Lane 60 + Wen-Hu St., Nei-Hu Dist., + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-30-1C (hex) ALTVATER AIRDATA SYSTEMS +00301C (base 16) ALTVATER AIRDATA SYSTEMS + GMBH & CO. KG + RIEMENSTRASSE 30 74906 BAD RAPPENAU + GERMANY + GERMANY + +00-30-1D (hex) SKYSTREAM, INC. +00301D (base 16) SKYSTREAM, INC. + 455 DeGuigne Drive + Sunnyvale CA 94086-3835 + UNITED STATES + +00-30-1E (hex) 3COM Europe Ltd. +00301E (base 16) 3COM Europe Ltd. + 3COM Centre + Boundary Way, Hemel Hempstead + Herts. HP2 7YU + UNITED KINGDOM + +00-30-1F (hex) OPTICAL NETWORKS, INC. +00301F (base 16) OPTICAL NETWORKS, INC. + 166 BAYPOINTE PARKWAY + SAN JOSE CA 95134 + UNITED STATES + +00-30-20 (hex) TSI, Inc.. +003020 (base 16) TSI, Inc.. + 500 Cardigan Road + Shoreview MN 55126 + UNITED STATES + +00-30-21 (hex) HSING TECH. ENTERPRISE CO.,LTD +003021 (base 16) HSING TECH. ENTERPRISE CO.,LTD + 2F, NO. 22, ALLLEY 38, LANE 91 + SEC. 1, NEI HU ROAD + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-30-22 (hex) Fong Kai Industrial Co., Ltd. +003022 (base 16) Fong Kai Industrial Co., Ltd. + 4F-3, No. 13, Wu Chuan 1st Road + Hsin Chuang City, Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-30-23 (hex) COGENT COMPUTER SYSTEMS, INC. +003023 (base 16) COGENT COMPUTER SYSTEMS, INC. + 10 RIVER ROAD - STE. #205 + UXBRIDGE MA 01569 + UNITED STATES + +00-30-24 (hex) CISCO SYSTEMS, INC. +003024 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE -SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-30-25 (hex) CHECKOUT COMPUTER SYSTEMS, LTD +003025 (base 16) CHECKOUT COMPUTER SYSTEMS, LTD + TOWNSEND FARM ROAD + HOUGHTON REGIS, DUNSTABLE BEDFORDSHIRE + UNITED KINGDOM + UNITED KINGDOM + +00-30-26 (hex) HeiTel Digital Video GmbH +003026 (base 16) HeiTel Digital Video GmbH + Stuthagen 25 + 24113 Molfsee + GERMANY + +00-30-27 (hex) KERBANGO, INC. +003027 (base 16) KERBANGO, INC. + 21771 STEVENS CREEK BLVD. #100 + CUPERTINO CA 95014 + UNITED STATES + +00-30-28 (hex) FASE Saldatura srl +003028 (base 16) FASE Saldatura srl + V.R. Bernardi 5 + 10042 Stupiniqi-Nichelino + TORINO + ITALY + +00-30-29 (hex) OPICOM +003029 (base 16) OPICOM + ROOM #302, STYLE FACTORY 151 + YATAB-DONG, BUNDANG-GU SUNGNAM-SI, KYUNG + KOREA + KOREA, REPUBLIC OF + +00-30-2A (hex) SOUTHERN INFORMATION +00302A (base 16) SOUTHERN INFORMATION + SYSTEM, INC. + NO.8, R&D RD. IV SCIENCE-BASED INDUSTRIA + HSINCHU TAIWAN, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-2B (hex) INALP NETWORKS, INC. +00302B (base 16) INALP NETWORKS, INC. + MERIEDWEG 7 + CH-3172 NIEDERWANGEN + SWITZERLAND + SWITZERLAND + +00-30-2C (hex) SYLANTRO SYSTEMS CORPORATION +00302C (base 16) SYLANTRO SYSTEMS CORPORATION + 1686 DELL AVENUE + CAMPBELL CA 95008 + UNITED STATES + +00-30-2D (hex) QUANTUM BRIDGE COMMUNICATIONS +00302D (base 16) QUANTUM BRIDGE COMMUNICATIONS + ONE HIGH STREET + NORTH ANDOVER MA 01845 + UNITED STATES + +00-30-2E (hex) Hoft & Wessel AG +00302E (base 16) Hoft & Wessel AG + Rotenburger Strasse 20 + 30659 Hannover + GERMANY + +00-30-2F (hex) Smiths Industries +00302F (base 16) Smiths Industries + 3290 Patterson Ave., S.E. + Grand Rapids MI 49512 + UNITED STATES + +00-30-30 (hex) HARMONIX CORPORATION +003030 (base 16) HARMONIX CORPORATION + 1755 OSGOOD STREET + NORTH ANDOVER MA 01845 + UNITED STATES + +00-30-31 (hex) LIGHTWAVE COMMUNICATIONS, INC. +003031 (base 16) LIGHTWAVE COMMUNICATIONS, INC. + 261 PEPE'S FARM ROAD + MILFORD CT 06460 + UNITED STATES + +00-30-32 (hex) MagicRam, Inc. +003032 (base 16) MagicRam, Inc. + 1850 Beverly Blvd. + Los Angeles CA 90057 + UNITED STATES + +00-30-33 (hex) ORIENT TELECOM CO., LTD. +003033 (base 16) ORIENT TELECOM CO., LTD. + MISUNG BULDING 115-7 + NONHYUN-DONG, KANGMAN-KU SEOUL + KOREA + KOREA, REPUBLIC OF + +00-30-34 (hex) SET ENGINEERING +003034 (base 16) SET ENGINEERING + 15750 VINEYARD BLVD. STE. #100 + MORGAN HILL CA 95037 + UNITED STATES + +00-30-35 (hex) Corning Incorporated +003035 (base 16) Corning Incorporated + Data Center + M/S - SP-WW-01 + Corning NY 14831 + UNITED STATES + +00-30-36 (hex) RMP ELEKTRONIKSYSTEME GMBH +003036 (base 16) RMP ELEKTRONIKSYSTEME GMBH + HANNS-MARTIN-SCHLE'R-STR.12-14 + D-47877 WILLICH-MUNCHHEIDE + GERMANY + GERMANY + +00-30-37 (hex) Packard Bell Nec Services +003037 (base 16) Packard Bell Nec Services + 299 avenue Patton, BP 645 + 49006 Angers Cedex 01 + FRANCE + +00-30-38 (hex) XCP, INC. +003038 (base 16) XCP, INC. + 40 ELM STREET + DRYDEN NY 13053 + UNITED STATES + +00-30-39 (hex) SOFTBOOK PRESS +003039 (base 16) SOFTBOOK PRESS + 7745 HERSCHEL AVENUE + LA JOLLA CA 92037 + UNITED STATES + +00-30-3A (hex) MAATEL +00303A (base 16) MAATEL + 495 RUE DE POMMARIN + 38360 VOREPPE + FRANCE + +00-30-3B (hex) PowerCom Technology +00303B (base 16) PowerCom Technology + 2F, No. 34, Industry E. Road IV + Hsinchu Science-based Industrial Park + Hsinchu 300 + TAIWAN, REPUBLIC OF CHINA + +00-30-3C (hex) ONNTO CORP. +00303C (base 16) ONNTO CORP. + 12F-2, NO. 161 + SUNG TEH RD., TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-3D (hex) IVA CORPORATION +00303D (base 16) IVA CORPORATION + 29 HUDSON ROAD + SUDBURY MA 01776 + UNITED STATES + +00-30-3E (hex) Radcom Ltd. +00303E (base 16) Radcom Ltd. + 12 Hanechoshet Street + Tel-Aviv 69710 + ISRAEL + +00-30-3F (hex) TurboComm Tech Inc. +00303F (base 16) TurboComm Tech Inc. + 4F-2, No 171, Sung-Tch Road + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-30-40 (hex) CISCO SYSTEMS, INC. +003040 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE -SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-30-41 (hex) SAEJIN T & M CO., LTD. +003041 (base 16) SAEJIN T & M CO., LTD. + 2ND FL., SAEJIN BLDG. 689 + ILWON-DONG, KANGNAM-GU, SEOUL + 135-230 KOREA + KOREA, REPUBLIC OF + +00-30-42 (hex) DeTeWe-Deutsche Telephonwerke +003042 (base 16) DeTeWe-Deutsche Telephonwerke + Zeughofstrasse 1 + D-10997 Berlin + GERMANY + +00-30-43 (hex) IDREAM TECHNOLOGIES, PTE. LTD. +003043 (base 16) IDREAM TECHNOLOGIES, PTE. LTD. + 54 KALLANG BAHRU, #02-14 + SINGAPORE 339336 + SINGAPORE + SINGAPORE + +00-30-44 (hex) Portsmith LLC +003044 (base 16) Portsmith LLC + 1111 S. Orchard - Ste. #109 + Boise ID 83705 + UNITED STATES + +00-30-45 (hex) Village Networks, Inc. (VNI) +003045 (base 16) Village Networks, Inc. (VNI) + 100 Village Court - Ste. #301 + Hazlet NJ 07730 + UNITED STATES + +00-30-46 (hex) Controlled Electronic Manageme +003046 (base 16) Controlled Electronic Manageme + Unit 4 Ravenhill Business Park + Ravenhill Road + Belfast + IRELAND + +00-30-47 (hex) NISSEI ELECTRIC CO., LTD. +003047 (base 16) NISSEI ELECTRIC CO., LTD. + 32 MIYAWAKE, SHIMONOISHIKI-CHO + NAKAGAWA-KU, NAGOYA 454-0945 + JAPAN + JAPAN + +00-30-48 (hex) Supermicro Computer, Inc. +003048 (base 16) Supermicro Computer, Inc. + 2051 Junction Avenue + San Jose CA 95131 + UNITED STATES + +00-30-49 (hex) BRYANT TECHNOLOGY, LTD. +003049 (base 16) BRYANT TECHNOLOGY, LTD. + P.O. BOX 69557 + BRYANSTON, 2021 + SOUTH AFRICA + SOUTH AFRICA + +00-30-4A (hex) Fraunhofer IPMS +00304A (base 16) Fraunhofer IPMS + Maria-Reiche-Strasse 2 + 01109 + GERMANY + +00-30-4B (hex) ORBACOM SYSTEMS, INC. +00304B (base 16) ORBACOM SYSTEMS, INC. + 1704 TAYLORS LANE + CINNAMINSON NJ 08077 + UNITED STATES + +00-30-4C (hex) APPIAN COMMUNICATIONS, INC. +00304C (base 16) APPIAN COMMUNICATIONS, INC. + 80 CENTRAL STREET + BOXBOROUGH MA 01719 + UNITED STATES + +00-30-4D (hex) ESI +00304D (base 16) ESI + 2601 Summit Avenue + Plano TX 75074 + UNITED STATES + +00-30-4E (hex) BUSTEC PRODUCTION LTD. +00304E (base 16) BUSTEC PRODUCTION LTD. + WORLD AVIATION PARK + Shannon County Clare + IRELAND + +00-30-4F (hex) PLANET Technology Corporation +00304F (base 16) PLANET Technology Corporation + 11F, No. 96, Min-Chuan Road + Hsin-Tien Taipei + TAIWAN, REPUBLIC OF CHINA + +00-30-50 (hex) Versa Technology +003050 (base 16) Versa Technology + 4430 E. Miraloma Ave., - Ste. + Anaheim CA 92807 + UNITED STATES + +00-30-51 (hex) ORBIT AVIONIC & COMMUNICATION +003051 (base 16) ORBIT AVIONIC & COMMUNICATION + SYSTEMS, LTD. + P.O. BOX 3171 INDUSTRIAL ZONE, NETANYA 4 + ISRAEL + ISRAEL + +00-30-52 (hex) ELASTIC NETWORKS +003052 (base 16) ELASTIC NETWORKS + 6120 WINDWARD PARKWAY -STE#100 + ALPHARETTA GA 30005 + UNITED STATES + +00-30-53 (hex) Basler AG +003053 (base 16) Basler AG + An Der Strusbek 60-62 + 22926 Ahrensburg + GERMANY + +00-30-54 (hex) CASTLENET TECHNOLOGY, INC. +003054 (base 16) CASTLENET TECHNOLOGY, INC. + NO. 130 WU-KUNG RD., + WU-KU HSIANG TAIPEI HSIEN + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-55 (hex) Renesas Technology America, Inc. +003055 (base 16) Renesas Technology America, Inc. + 450 Holger Way + San Jose CA 95134 + UNITED STATES + +00-30-56 (hex) Beck IPC GmbH +003056 (base 16) Beck IPC GmbH + Grüninger Weg 24 + Pohlheim D-35415 + GERMANY + +00-30-57 (hex) QTelNet, Inc. +003057 (base 16) QTelNet, Inc. + 400 - 3115 12th Street NE + Calgary Alberta T2E 7J2 + CANADA + +00-30-58 (hex) API MOTION +003058 (base 16) API MOTION + 45 HAZELWOOD DRIVE + AMHERST NY 14228 + UNITED STATES + +00-30-59 (hex) DIGITAL-LOGIC AG +003059 (base 16) DIGITAL-LOGIC AG + NORDSTR. 11/F + CH-4542 LUTERBACH + SWITZERLAND + +00-30-5A (hex) TELGEN CORPORATION +00305A (base 16) TELGEN CORPORATION + 3101 SOVEREIGN DR. - STE. + LANSING MI 48911 + UNITED STATES + +00-30-5B (hex) Toko Inc. +00305B (base 16) Toko Inc. + 18 COMIGAYA, TSURUGASHIMA-SHI + SAITAMA-KEN + JAPAN 350-2281 + JAPAN + +00-30-5C (hex) SMAR Laboratories Corp. +00305C (base 16) SMAR Laboratories Corp. + 10960 Millridge North - Ste. #107 + Houston TX 77070 + UNITED STATES + +00-30-5D (hex) DIGITRA SYSTEMS, INC. +00305D (base 16) DIGITRA SYSTEMS, INC. + 8-61, GAWOL-DONG + YONGSAN-KU SEOUL + KOREA 140-150 + KOREA, REPUBLIC OF + +00-30-5E (hex) Abelko Innovation +00305E (base 16) Abelko Innovation + Box 808 + S-97125 Lulea + SWEDEN + +00-30-5F (hex) Hasselblad +00305F (base 16) Hasselblad + Hejrevej 30 + Copenhagen NV DK-2400 + DENMARK + +00-30-60 (hex) Powerfile, Inc. +003060 (base 16) Powerfile, Inc. + 3350 Thomas Road + Santa Clara CA 95054-2062 + UNITED STATES + +00-30-61 (hex) MobyTEL +003061 (base 16) MobyTEL + 4301 Connecticut Ave. NW + Ste. #454 + Washington DC 20008 + UNITED STATES + +00-30-62 (hex) PATH 1 NETWORK TECHNOL'S INC. +003062 (base 16) PATH 1 NETWORK TECHNOL'S INC. + 3636 NOBEL DRIVE - STE. #275 + SAN DIEGO CA 92122 + UNITED STATES + +00-30-63 (hex) SANTERA SYSTEMS, INC. +003063 (base 16) SANTERA SYSTEMS, INC. + 2901 SUMMIT AVENUE - STE. #100 + PLANO TX 75074 + UNITED STATES + +00-30-64 (hex) ADLINK TECHNOLOGY, INC. +003064 (base 16) ADLINK TECHNOLOGY, INC. + 9F, NO. 166, JIEN-YI R.D. + CHUNG-HO CITY TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-30-65 (hex) APPLE COMPUTER, INC. +003065 (base 16) APPLE COMPUTER, INC. + 20650 VALLEY GREEN DRIVE + CUPERTINO CA 95014 + UNITED STATES + +00-30-66 (hex) Cirronet, Inc. +003066 (base 16) Cirronet, Inc. + 3079 Premiere Pkwy + Suite 140 + Duluth GA 30097 + UNITED STATES + +00-30-67 (hex) BIOSTAR MICROTECH INT'L CORP. +003067 (base 16) BIOSTAR MICROTECH INT'L CORP. + 2FL. NO. 108-2 MIN CHUAN ROAD + HSIN TIEN CITY, TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-30-68 (hex) CYBERNETICS TECH. CO., LTD. +003068 (base 16) CYBERNETICS TECH. CO., LTD. + DAITOH BLDG. 4F 3-32-1 + TAKADA, TOSHIMA-KU, TOKYO + JAPAN 171-0033 + JAPAN + +00-30-69 (hex) IMPACCT TECHNOLOGY CORP. +003069 (base 16) IMPACCT TECHNOLOGY CORP. + 2F, NO. 12, R&D RD. II + SCIENCE-BASED INDUSTRIAL PARK HSIN-CHU + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-6A (hex) PENTA MEDIA CO., LTD. +00306A (base 16) PENTA MEDIA CO., LTD. + E-504 Bundang Technopark,151 + Yatop-dong Bundang-gu + Seongnam Gyeonggi-do + KOREA, REPUBLIC OF + +00-30-6B (hex) CMOS SYSTEMS, INC. +00306B (base 16) CMOS SYSTEMS, INC. + 23440 HAWTHORNE BLVD-STE #290 + TORRANCE CA 90505 + UNITED STATES + +00-30-6C (hex) Hitex Holding GmbH +00306C (base 16) Hitex Holding GmbH + Greschbachstr. 12 + 76229 Karlsruhe + GERMANY + +00-30-6D (hex) LUCENT TECHNOLOGIES +00306D (base 16) LUCENT TECHNOLOGIES + 300 BAKER AVENUE - STE. #100 + CONCORD MA 01742-2168 + UNITED STATES + +00-30-6E (hex) HEWLETT PACKARD +00306E (base 16) HEWLETT PACKARD + 11000 WOLFE ROAD + CUPERTINO CA 95014 + UNITED STATES + +00-30-6F (hex) SEYEON TECH. CO., LTD. +00306F (base 16) SEYEON TECH. CO., LTD. + NAMCHEON BLDG. 6F, + DAECHI-DONG, 957-013 KANGNAM-GU, SEOUL + KOREA 135-280 + KOREA, REPUBLIC OF + +00-30-70 (hex) 1Net Corporation +003070 (base 16) 1Net Corporation + 347 Elizabeth Avenue - Ste. #100 + Somerset NJ 08873 + UNITED STATES + +00-30-71 (hex) Cisco Systems, Inc. +003071 (base 16) Cisco Systems, Inc. + 170 West Tasman Driv - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-30-72 (hex) Intellibyte Inc. +003072 (base 16) Intellibyte Inc. + Canada Trust Tower - BCE Place + 161 Bay St. 27th Floor, + Toronto Ontario M5J 2S1 + CANADA + +00-30-73 (hex) International Microsystems, In +003073 (base 16) International Microsystems, In + 521 Valley Way + Milpitas CA 95035 + UNITED STATES + +00-30-74 (hex) EQUIINET LTD. +003074 (base 16) EQUIINET LTD. + EDISON HOUSE + EDISON ROAD + SWINDON, SN3 5JA + UNITED KINGDOM + +00-30-75 (hex) ADTECH +003075 (base 16) ADTECH + RUE DU VAL ST LAMBERT 191 / i + SERAING 4100 + BELGIUM + +00-30-76 (hex) Akamba Corporation +003076 (base 16) Akamba Corporation + 15595 Los Gatos Blvd. + Los Gatos CA 95032 + UNITED STATES + +00-30-77 (hex) ONPREM NETWORKS +003077 (base 16) ONPREM NETWORKS + 42501 ALBRAE STREET + FREMONT CA 94538 + UNITED STATES + +00-30-78 (hex) Cisco Systems, Inc. +003078 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-30-79 (hex) CQOS, INC. +003079 (base 16) CQOS, INC. + 25 MAUCHLY - STE. #329 + IRVINE CA 92618 + UNITED STATES + +00-30-7A (hex) Advanced Technology & Systems +00307A (base 16) Advanced Technology & Systems + Yokohama Business Park East Tower 9F, + 134 Goudo-cho, Hodogaya-ku, Yokohama, Ka + 240-0005 + JAPAN + +00-30-7B (hex) Cisco Systems, Inc. +00307B (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-30-7C (hex) ADID SA +00307C (base 16) ADID SA + 70 RU ANATOLE FRANCE + 92 300 LEVALLOIS-PERRET CEDEX + FRANCE + +00-30-7D (hex) GRE AMERICA, INC. +00307D (base 16) GRE AMERICA, INC. + 425 HARBOR BLVD. + BELMONT CA 94002 + UNITED STATES + +00-30-7E (hex) Redflex Communication Systems +00307E (base 16) Redflex Communication Systems + 11-29 Eastern Road + South Melbourne Victoria 3205 + AUSTRALIA + +00-30-7F (hex) IRLAN LTD. +00307F (base 16) IRLAN LTD. + 1 HATAMAR STREET + P.O. BOX 288 YOKNEAM 20692 + ISRAEL + ISRAEL + +00-30-80 (hex) CISCO SYSTEMS, INC. +003080 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-30-81 (hex) ALTOS C&C +003081 (base 16) ALTOS C&C + 150-010 RM. 1012, 44-1 + DAE YOUNG B/D, YOVIDO-DONG YOUNGCHUNGPO- + KOREA + KOREA, REPUBLIC OF + +00-30-82 (hex) TAIHAN ELECTRIC WIRE CO., LTD. +003082 (base 16) TAIHAN ELECTRIC WIRE CO., LTD. + Communication Engineering Team + 996 Siheung-Dong Keym Cheon-ku + Seoul + KOREA, REPUBLIC OF + +00-30-83 (hex) Ivron Systems +003083 (base 16) Ivron Systems + 19-20 YORK ROAD + DUN LAOGHAIRE COUNTY DUBLIN + IRELAND + IRELAND + +00-30-84 (hex) ALLIED TELESYN INTERNAIONAL +003084 (base 16) ALLIED TELESYN INTERNAIONAL + CORPORATION + 960 STEWART DRIVE, STE. + SUNNYVALE CA 94086 + UNITED STATES + +00-30-85 (hex) CISCO SYSTEMS, INC. +003085 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-30-86 (hex) Transistor Devices, Inc. +003086 (base 16) Transistor Devices, Inc. + 36A Newburgh Road + Hackettstown NJ 07840 + UNITED STATES + +00-30-87 (hex) VEGA GRIESHABER KG +003087 (base 16) VEGA GRIESHABER KG + AM HOHENSTEIN 113 + 77761 SCHULTACH + GERMANY + GERMANY + +00-30-88 (hex) Siara Systems, Inc. +003088 (base 16) Siara Systems, Inc. + 300 Ferguson Drive - 2nd Floor + Mountain View CA 94043 + UNITED STATES + +00-30-89 (hex) Spectrapoint Wireless, LLC +003089 (base 16) Spectrapoint Wireless, LLC + 1125 E. Collins Blvd. + Richardson TX 75081 + UNITED STATES + +00-30-8A (hex) NICOTRA SISTEMI S.P.A +00308A (base 16) NICOTRA SISTEMI S.P.A + 41 Via Primo Maggio + Baranzate (MI) 20021 + ITALY + +00-30-8B (hex) Brix Networks +00308B (base 16) Brix Networks + 300 Concord Road + Billerica MA 01821 + UNITED STATES + +00-30-8C (hex) ADVANCED DIGITAL INFORMATION +00308C (base 16) ADVANCED DIGITAL INFORMATION + CORPORATION + 10949 E. PEAKVIEW AVE. + ENGLEWOOD CO 80111 + UNITED STATES + +00-30-8D (hex) Pinnacle Systems, Inc. +00308D (base 16) Pinnacle Systems, Inc. + Frankfurter Str. 3c + 38122 Braunschweig + GERMANY + +00-30-8E (hex) CROSS MATCH TECHNOLOGIES, INC. +00308E (base 16) CROSS MATCH TECHNOLOGIES, INC. + 3960 RCA Blvd., Suite 6001 + Palm Beach FL 33410 + UNITED STATES + +00-30-8F (hex) MICRILOR, Inc. +00308F (base 16) MICRILOR, Inc. + 17 Lakeside Office Park + 607 North Avenue + Wakefield MA 01880 + UNITED STATES + +00-30-90 (hex) CYRA TECHNOLOGIES, INC. +003090 (base 16) CYRA TECHNOLOGIES, INC. + 8000 CAPWELL DRIVE + OAKLAND CA 94621 + UNITED STATES + +00-30-91 (hex) TAIWAN FIRST LINE ELEC. CORP. +003091 (base 16) TAIWAN FIRST LINE ELEC. CORP. + 40 Chung-Shan Road + Tu-Cheng Industrial Park + Taipei County + TAIWAN, REPUBLIC OF CHINA + +00-30-92 (hex) ModuNORM GmbH +003092 (base 16) ModuNORM GmbH + Langrutistrasse 33 + CH-8840 Einsledeln + SWITZERLAND + +00-30-93 (hex) SONNET TECHNOLOGIES, INC. +003093 (base 16) SONNET TECHNOLOGIES, INC. + 3390 BUFORD DRIVE - STE. #7 + BUFORD GA 30519 + UNITED STATES + +00-30-94 (hex) Cisco Systems, Inc. +003094 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-30-95 (hex) Procomp Informatics, Ltd. +003095 (base 16) Procomp Informatics, Ltd. + 5F, 69-10, Sec. 2, + Chung Cheng E. Road + Tamshui, Taipei, Hsien R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-96 (hex) CISCO SYSTEMS, INC. +003096 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-30-97 (hex) AB Regin +003097 (base 16) AB Regin + Box 366 + SE-26123 Landskrona + SWEDEN + +00-30-98 (hex) Global Converging Technologies +003098 (base 16) Global Converging Technologies + 1800 Preston Park Blvd. + Suite #250 + Plano TX 75093 + UNITED STATES + +00-30-99 (hex) BOENIG UND KALLENBACH OHG +003099 (base 16) BOENIG UND KALLENBACH OHG + AM SPOERKEL 100 + 44227 DORTMUND + GERMANY + GERMANY + +00-30-9A (hex) ASTRO TERRA CORP. +00309A (base 16) ASTRO TERRA CORP. + 11526 SORRENTO VALLEY ROAD + SAN DIEGO CA 92121 + UNITED STATES + +00-30-9B (hex) Smartware +00309B (base 16) Smartware + 49 AV Aristide + Briand + 92160 Antony + FRANCE + +00-30-9C (hex) Timing Applications, Inc. +00309C (base 16) Timing Applications, Inc. + 4775 Walnut St. + Suite 1B + Boulder CO 80301 + UNITED STATES + +00-30-9D (hex) Nimble Microsystems, Inc. +00309D (base 16) Nimble Microsystems, Inc. + 50 Church Street - 5th Floor + Cambridge MA 02138 + UNITED STATES + +00-30-9E (hex) WORKBIT CORPORATION. +00309E (base 16) WORKBIT CORPORATION. + 1-2-2 Chuou, Yamato + Kanagawa 242-0021 + JAPAN + +00-30-9F (hex) AMBER NETWORKS +00309F (base 16) AMBER NETWORKS + 2475 AUGUSTINE DR. + SANTA CLARA CA 95054 + UNITED STATES + +00-30-A0 (hex) TYCO SUBMARINE SYSTEMS, LTD. +0030A0 (base 16) TYCO SUBMARINE SYSTEMS, LTD. + 250 INDUSTRIAL WAY WEST + EATONTOWN NJ 07724 + UNITED STATES + +00-30-A1 (hex) WEBGATE Inc. +0030A1 (base 16) WEBGATE Inc. + 4F, Pika Bldg., 894-20, Hoyke 2-dong + Dongan-Ku, + Anyang-Si Kyunggi-Do + KOREA, REPUBLIC OF + +00-30-A2 (hex) Lightner Engineering +0030A2 (base 16) Lightner Engineering + P.O. Box 8308 + La Jolla CA 92038-8308 + UNITED STATES + +00-30-A3 (hex) CISCO SYSTEMS, INC. +0030A3 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE -SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-30-A4 (hex) Woodwind Communications System +0030A4 (base 16) Woodwind Communications System + 20300 Century Blvd., Suite 200B + Germantown MD 20874 + UNITED STATES + +00-30-A5 (hex) ACTIVE POWER +0030A5 (base 16) ACTIVE POWER + 11525 STONEHOLLOW - STE.#255 + AUSTIN TX 78758 + UNITED STATES + +00-30-A6 (hex) VIANET TECHNOLOGIES, LTD. +0030A6 (base 16) VIANET TECHNOLOGIES, LTD. + 8 HACHARASH STREET + RAMAT HASHARON 47262 + ISRAEL + ISRAEL + +00-30-A7 (hex) SCHWEITZER ENGINEERING +0030A7 (base 16) SCHWEITZER ENGINEERING + LABORATORIES, INC. + 2350 NE HOPKINS COURT + PULLMAN WA 99163 + UNITED STATES + +00-30-A8 (hex) OL'E COMMUNICATIONS, INC. +0030A8 (base 16) OL'E COMMUNICATIONS, INC. + 1962 ZANKER ROAD + SAN JOSE CA 95112 + UNITED STATES + +00-30-A9 (hex) Netiverse, Inc. +0030A9 (base 16) Netiverse, Inc. + 100 Century Center Court + Suite #600 + San Jose CA 95112 + UNITED STATES + +00-30-AA (hex) AXUS MICROSYSTEMS, INC. +0030AA (base 16) AXUS MICROSYSTEMS, INC. + 2F-4, NO.18/N. 609, SEC. 5 + CHUN-HSIN ROAD, SAN CHUNG TAIPEI COUNTY + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-AB (hex) DELTA NETWORKS, INC. +0030AB (base 16) DELTA NETWORKS, INC. + 8, KON JAN WEST ROAD + LIUTU INDUSTRIAL ZONE KEELUNG + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-AC (hex) Systeme Lauer GmbH & Co., Ltd. +0030AC (base 16) Systeme Lauer GmbH & Co., Ltd. + Kelterstrasse 59 + 72669 Unterensingen + GERMANY + +00-30-AD (hex) SHANGHAI COMMUNICATION +0030AD (base 16) SHANGHAI COMMUNICATION + TECHNOLOGIES CENTER + 15 GUI-QING ROAD SHANGHAI 200233 + P.R. CHINA + CHINA + +00-30-AE (hex) Times N System, Inc. +0030AE (base 16) Times N System, Inc. + 1826 Kramer Lane - Ste. + Austin TX 78758 + UNITED STATES + +00-30-AF (hex) Honeywell GmbH +0030AF (base 16) Honeywell GmbH + Boeblinger Str. 17 + P.O. Box 1164 + D-71098 Schoenaich + GERMANY + +00-30-B0 (hex) Convergenet Technologies +0030B0 (base 16) Convergenet Technologies + 2222 Trade Zone Boulevard + San Jose CA 95131 + UNITED STATES + +00-30-B1 (hex) aXess-pro networks GmbH +0030B1 (base 16) aXess-pro networks GmbH + Vor der Pforte 19 + Dreieich D-63303 + GERMANY + +00-30-B2 (hex) L-3 Sonoma EO +0030B2 (base 16) L-3 Sonoma EO + 428 Aviation Blvd + Santa Rosa CA 95403 + UNITED STATES + +00-30-B3 (hex) San Valley Systems, Inc. +0030B3 (base 16) San Valley Systems, Inc. + 2105 S. Bascom Ave. - Ste. #390 + Campbell CA 95008 + UNITED STATES + +00-30-B4 (hex) INTERSIL CORP. +0030B4 (base 16) INTERSIL CORP. + P.O. BOX 883 + 2401 PALM BAY ROAD + MELBOURNE FL 32902 + UNITED STATES + +00-30-B5 (hex) Tadiran Microwave Networks +0030B5 (base 16) Tadiran Microwave Networks + 4000 Greenbriar Drive + Stafford TX 77477 + UNITED STATES + +00-30-B6 (hex) CISCO SYSTEMS, INC. +0030B6 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-30-B7 (hex) Teletrol Systems, Inc. +0030B7 (base 16) Teletrol Systems, Inc. + Technology Center + 286 Commercial Street + Manchester NH 03101 + UNITED STATES + +00-30-B8 (hex) RiverDelta Networks +0030B8 (base 16) RiverDelta Networks + Three Highwood Drive East + Tewksbury MA 01876 + UNITED STATES + +00-30-B9 (hex) ECTEL +0030B9 (base 16) ECTEL + 22240 COMSAT DRIVE + CLARKSBURG MD 20871 + UNITED STATES + +00-30-BA (hex) AC&T SYSTEM CO., LTD. +0030BA (base 16) AC&T SYSTEM CO., LTD. + ROOM 702, KEUM-WHA PLAZA + 1142-5, SANBON-DONG KOONPO-SHI, KYONGKI- + 435-040 SOUTH KOREA + KOREA, REPUBLIC OF + +00-30-BB (hex) CacheFlow, Inc. +0030BB (base 16) CacheFlow, Inc. + 650 Almanor Drive + Sunnyvale CA 94086 + UNITED STATES + +00-30-BC (hex) Optronic AG +0030BC (base 16) Optronic AG + untereggerstrasse 53 + 9403 Goldach + SWITZERLAND + +00-30-BD (hex) BELKIN COMPONENTS +0030BD (base 16) BELKIN COMPONENTS + 501 WEST WALNUT STREET + COMPTON CA 90220 + UNITED STATES + +00-30-BE (hex) City-Net Technology, Inc. +0030BE (base 16) City-Net Technology, Inc. + 135 E. Chesnut Ave., Ste. + Monrovia CA 91016 + UNITED STATES + +00-30-BF (hex) MULTIDATA GMBH +0030BF (base 16) MULTIDATA GMBH + ALSFELDER STR. 3 + D-64289 DARMSTADT + GERMANY + GERMANY + +00-30-C0 (hex) Lara Technology, Inc. +0030C0 (base 16) Lara Technology, Inc. + 2345 North First Street + San Jose CA 95131 + UNITED STATES + +00-30-C1 (hex) HEWLETT-PACKARD +0030C1 (base 16) HEWLETT-PACKARD + 11000 WOLFE ROAD + CUPERTINO CA 95014 + UNITED STATES + +00-30-C2 (hex) COMONE +0030C2 (base 16) COMONE + Parc De Marticot + 33610 Cestas + FRANCE + +00-30-C3 (hex) FLUECKIGER ELEKTRONIK AG +0030C3 (base 16) FLUECKIGER ELEKTRONIK AG + KIRCHBARGSTRASSE 201 + CH-3400 BURGDORF + SWITZERLAND + SWITZERLAND + +00-30-C4 (hex) Canon Imaging System Technologies, Inc. +0030C4 (base 16) Canon Imaging System Technologies, Inc. + 1-24 Yoneyama, chuo-ku + Niigata-shi Niigata 950-0916 + JAPAN + +00-30-C5 (hex) CADENCE DESIGN SYSTEMS +0030C5 (base 16) CADENCE DESIGN SYSTEMS + CANADA, LTD. + 240-1130 MORRISON DRIVE OTTAWA, ONTARIO + CANADA + CANADA + +00-30-C6 (hex) CONTROL SOLUTIONS, INC. +0030C6 (base 16) CONTROL SOLUTIONS, INC. + 201 85TH AVENUE NW + MINNEAPOLIS MN 55433 + UNITED STATES + +00-30-C7 (hex) Macromate Corp. +0030C7 (base 16) Macromate Corp. + 8F,Universal Center,Number 179 + Sec.1,Ta-Tung Road, Hsi-Chih + Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-30-C8 (hex) GAD LINE, LTD. +0030C8 (base 16) GAD LINE, LTD. + BEIT ROKAR HAR HOTZVIM + JERUSALEM + ISRAEL + +00-30-C9 (hex) LuxN, N +0030C9 (base 16) LuxN, N + 570 Maude Court + Sunnyvale CA 94086 + UNITED STATES + +00-30-CA (hex) Discovery Com +0030CA (base 16) Discovery Com + 4935 Century Street + Huntsville AL 35816 + UNITED STATES + +00-30-CB (hex) OMNI FLOW COMPUTERS, INC. +0030CB (base 16) OMNI FLOW COMPUTERS, INC. + 10701 CORPORATE DRIVE-STE.#300 + STAFFORD TX 77477 + UNITED STATES + +00-30-CC (hex) Tenor Networks, Inc. +0030CC (base 16) Tenor Networks, Inc. + 50 Nagog Park + Acton MA 01720 + UNITED STATES + +00-30-CD (hex) CONEXANT SYSTEMS, INC. +0030CD (base 16) CONEXANT SYSTEMS, INC. + 4311 JAMBOREE ROAD + NEWPORT BEACH CA 92660 + UNITED STATES + +00-30-CE (hex) Zaffire +0030CE (base 16) Zaffire + 2630 Orchard Parkway + San Jose CA 95134-2020 + UNITED STATES + +00-30-CF (hex) TWO TECHNOLOGIES, INC. +0030CF (base 16) TWO TECHNOLOGIES, INC. + 419 SARGON WAY + HORSHAM PA 19044 + UNITED STATES + +00-30-D0 (hex) Tellabs +0030D0 (base 16) Tellabs + 1750 Founder's Parkway + Suite 100 + Alpharetta GA 30004 + UNITED STATES + +00-30-D1 (hex) INOVA CORPORATION +0030D1 (base 16) INOVA CORPORATION + 110 AVON STREET + CHARLOTTESVILE VA 22902 + UNITED STATES + +00-30-D2 (hex) WIN TECHNOLOGIES, CO., LTD. +0030D2 (base 16) WIN TECHNOLOGIES, CO., LTD. + 4F-6, No. 81, Sec. 1 + Hsin Tai Wu Road, Hsi-Chi + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-30-D3 (hex) Agilent Technologies +0030D3 (base 16) Agilent Technologies + 1501 Page Mill Road + Palo Alto CA 94304-1126 + UNITED STATES + +00-30-D4 (hex) AAE Systems, Inc +0030D4 (base 16) AAE Systems, Inc + 642 North Pastoria Avenue + Sunnyvale CA 94085 + UNITED STATES + +00-30-D5 (hex) DResearch GmbH +0030D5 (base 16) DResearch GmbH + Otto-Schmirgal-Str.3 + 10319 Berlin + GERMANY + +00-30-D6 (hex) MSC VERTRIEBS GMBH +0030D6 (base 16) MSC VERTRIEBS GMBH + INDUSTRIESTR. 16 + D-76297 STUTENSEE + GERMANY + GERMANY + +00-30-D7 (hex) Innovative Systems, L.L.C. +0030D7 (base 16) Innovative Systems, L.L.C. + 1000 Innovative Drive + Mitchell SD 57301 + UNITED STATES + +00-30-D8 (hex) SITEK +0030D8 (base 16) SITEK + VIA MONTE FIORINO 9 + 37057 - S. GIOVANNI LUP. VERONA + ITALY + ITALY + +00-30-D9 (hex) DATACORE SOFTWARE CORP. +0030D9 (base 16) DATACORE SOFTWARE CORP. + CORPORATE PARK + 6261 NW 6TH WAY #110 + FORT LAUDERDALE FL 33309 + UNITED STATES + +00-30-DA (hex) COMTREND CO. +0030DA (base 16) COMTREND CO. + 3F-1 10 LANE 609 CHUNG + HSIN ROAD, SEC 5, SAN CHUNG CITY, TAIPEI + TAIWAN 241 + TAIWAN, REPUBLIC OF CHINA + +00-30-DB (hex) Mindready Solutions, Inc. +0030DB (base 16) Mindready Solutions, Inc. + 2800 Marie-Curie Avenue + Saint-Laurent + Quebec H4S 2C2 + CANADA + +00-30-DC (hex) RIGHTECH CORPORATION +0030DC (base 16) RIGHTECH CORPORATION + 4F, NO. 351, CHUNG-SHUN RD. + SEC. 2, CHUNG-HO CITY TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-30-DD (hex) INDIGITA CORPORATION +0030DD (base 16) INDIGITA CORPORATION + 30 Corporate Park Drive + Suite 310 + Irvine CA 92606 + UNITED STATES + +00-30-DE (hex) WAGO Kontakttechnik GmbH +0030DE (base 16) WAGO Kontakttechnik GmbH + Hansastrasse 27 + 32423 Minden + GERMANY + +00-30-DF (hex) KB/TEL TELECOMUNICACIONES +0030DF (base 16) KB/TEL TELECOMUNICACIONES + S.A. DE C.V. + TORRE TELMEX 4 PISO, PLAZA CUICUILCO + Mexico City 14060 + MEXICO + +00-30-E0 (hex) OXFORD SEMICONDUCTOR LTD. +0030E0 (base 16) OXFORD SEMICONDUCTOR LTD. + 25 MILTON PARK + Abingdon Oxon OX14 4SH + UNITED KINGDOM + +00-30-E1 (hex) ACROTRON SYSTEMS, INC. +0030E1 (base 16) ACROTRON SYSTEMS, INC. + 704 GINESI DRIVE - STE. #27 + MORGANVILLE NJ 07751 + UNITED STATES + +00-30-E2 (hex) GARNET SYSTEMS CO., LTD. +0030E2 (base 16) GARNET SYSTEMS CO., LTD. + Sungwon Bldg. 545-7 + Dogok-Dong, Kangnam-Gu + Seoul + KOREA, REPUBLIC OF + +00-30-E3 (hex) SEDONA NETWORKS CORP. +0030E3 (base 16) SEDONA NETWORKS CORP. + 10A HEARST WAY + KANATA, ONTARIO + CANADA K2L 2P4 + CANADA + +00-30-E4 (hex) CHIYODA SYSTEM RIKEN +0030E4 (base 16) CHIYODA SYSTEM RIKEN + 2-7, KANDA-NISHIKI-CHO + CHIYODA-KU TOKYO + JAPAN + JAPAN + +00-30-E5 (hex) Amper Datos S.A. +0030E5 (base 16) Amper Datos S.A. + C/Marconi n*3 (PTM) + Tres Cantos + 28760 Madrid + SPAIN + +00-30-E6 (hex) Draeger Medical Systems, Inc. +0030E6 (base 16) Draeger Medical Systems, Inc. + 6 Tech Drive + Andover MA 01810 + UNITED STATES + +00-30-E7 (hex) CNF MOBILE SOLUTIONS, INC. +0030E7 (base 16) CNF MOBILE SOLUTIONS, INC. + 7722 E. GRAY ROAD + SCOTTSDALE AZ 85260 + UNITED STATES + +00-30-E8 (hex) ENSIM CORP. +0030E8 (base 16) ENSIM CORP. + 1215 Terra Bella Ave. + Mountainview CA 94043 + UNITED STATES + +00-30-E9 (hex) GMA COMMUNICATION MANUFACT'G +0030E9 (base 16) GMA COMMUNICATION MANUFACT'G + MARKETING, (1991) LTD. + 102 JABUTINSKI STREET KIRYAT ARIE, PETAC + ISRAEL ISRAEL 49130 + ISRAEL + +00-30-EA (hex) TeraForce Technology Corporation +0030EA (base 16) TeraForce Technology Corporation + 1100 EXECUTIVE DRIVE + RICHARDSON TX 75081 + UNITED STATES + +00-30-EB (hex) TURBONET COMMUNICATIONS, INC. +0030EB (base 16) TURBONET COMMUNICATIONS, INC. + 19F-1, NO. 171, SUNG-TEH ROAD + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-30-EC (hex) BORGARDT +0030EC (base 16) BORGARDT + DIESELSTR. 15 + D71665 VAIHINGEN/ENZ + GERMANY + GERMANY + +00-30-ED (hex) Expert Magnetics Corp. +0030ED (base 16) Expert Magnetics Corp. + 12/F., Unit D, MTG Bldg., 1-3, Nakase + Mihama-ku, Chiba-city, 261-8501 + JAPAN + +00-30-EE (hex) DSG Technology, Inc. +0030EE (base 16) DSG Technology, Inc. + 6F-4 No. 270, Chwig Hsiao + East Road, Sec. 4 + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-30-EF (hex) NEON TECHNOLOGY, INC. +0030EF (base 16) NEON TECHNOLOGY, INC. + 85 WEST MONTAGUE EXPRESSWAY + MILPITAS CA 95035 + UNITED STATES + +00-30-F0 (hex) Uniform Industrial Corp. +0030F0 (base 16) Uniform Industrial Corp. + 18F, 171, Shung Teh Road + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-30-F1 (hex) Accton Technology Corp. +0030F1 (base 16) Accton Technology Corp. + No. 1, Creation Rd. IV + S.G.Z.P + Hsinchu + TAIWAN, REPUBLIC OF CHINA + +00-30-F2 (hex) CISCO SYSTEMS, INC. +0030F2 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE - SJA-2 + SAN JOSE CA 85134 + UNITED STATES + +00-30-F3 (hex) At Work Computers +0030F3 (base 16) At Work Computers + P.O. Box 947 + Corvallis OR 97339 + UNITED STATES + +00-30-F4 (hex) STARDOT TECHNOLOGIES +0030F4 (base 16) STARDOT TECHNOLOGIES + 6820-H ORANGE THORPE AVE. + BUENA PARK CA 90620 + UNITED STATES + +00-30-F5 (hex) Wild Lab. Ltd. +0030F5 (base 16) Wild Lab. Ltd. + 1-33-17-604 Harayama + Urawa City Saitama prif. 336-0931 + JAPAN + +00-30-F6 (hex) SECURELOGIX CORPORATION +0030F6 (base 16) SECURELOGIX CORPORATION + 13750 SAN PEDRO + SAN ANTONIO TX 78232 + UNITED STATES + +00-30-F7 (hex) RAMIX INC. +0030F7 (base 16) RAMIX INC. + 1672 DONLON STREET + VENTURA CA 93003 + UNITED STATES + +00-30-F8 (hex) Dynapro Systems, Inc. +0030F8 (base 16) Dynapro Systems, Inc. + 800 Carleton Court + Annacis Island + New Westminster British Columbia V3M 6L3 + CANADA + +00-30-F9 (hex) Sollae Systems Co., Ltd. +0030F9 (base 16) Sollae Systems Co., Ltd. + 607 Incheo IT Tower + 592-5, Dohwa-1-dong + Nam-gu Incheon + KOREA, REPUBLIC OF + +00-30-FA (hex) TELICA, INC. +0030FA (base 16) TELICA, INC. + 734 FOREST STREET, BLDG. + SUITE #100 + MARLBORO MA 01752 + UNITED STATES + +00-30-FB (hex) AZS Technology AG +0030FB (base 16) AZS Technology AG + Steinbeisstrasse 2-4 + 72510 Stetten A.K.M. + GERMANY + +00-30-FC (hex) Terawave Communications, Inc. +0030FC (base 16) Terawave Communications, Inc. + 30695 Huntwood Avenue + Hayward CA 94544 + UNITED STATES + +00-30-FD (hex) INTEGRATED SYSTEMS DESIGN +0030FD (base 16) INTEGRATED SYSTEMS DESIGN + 3650-G CENTRE CIRCLE DRIVE + FORT MILL SC 29715 + UNITED STATES + +00-30-FE (hex) DSA GmbH +0030FE (base 16) DSA GmbH + Pascalstr. 28 + 52076 Aachen + GERMANY + +00-30-FF (hex) DATAFAB SYSTEMS, INC. +0030FF (base 16) DATAFAB SYSTEMS, INC. + ROOM #1910, 19F, NO. 333 + KEELUNG ROAD SEC. 1, TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-00 (hex) PCI COMPONENTES DA AMZONIA LTD +004000 (base 16) PCI COMPONENTES DA AMZONIA LTD + RUA JOSEF KRYSS + 129 - SAO PAULO - SP + 01140 BRASIL + BRAZIL + +00-40-01 (hex) ZYXEL COMMUNICATIONS, INC. +004001 (base 16) ZYXEL COMMUNICATIONS, INC. + 4F, 111, CHUNG SHAN N. ROAD + SEC 2, TAIPEI + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-02 (hex) PERLE SYSTEMS LIMITED +004002 (base 16) PERLE SYSTEMS LIMITED + 60 RENFREW DRIVE + MARKHAM ONTARIO + CANADA L3R 0E1 + CANADA + +00-40-03 (hex) Emerson Process Management Power & Water Solutions, Inc. +004003 (base 16) Emerson Process Management Power & Water Solutions, Inc. + 200 Beta Drive + PITTSBURGH PA 15238 + UNITED STATES + +00-40-04 (hex) ICM CO. LTD. +004004 (base 16) ICM CO. LTD. + 4-2-9 NIHONBASHI NANIWA-KU + OSAKA, (556) + JAPAN + JAPAN + +00-40-05 (hex) ANI COMMUNICATIONS INC. +004005 (base 16) ANI COMMUNICATIONS INC. + 8 ANZIO + IRVINE CA 92714 + UNITED STATES + +00-40-06 (hex) SAMPO TECHNOLOGY CORPORATION +004006 (base 16) SAMPO TECHNOLOGY CORPORATION + 26-2 TING-HU, + TA-KANG TSUN KUEI-SHAN HSIANG, TAOYUAN H + 33334 TAIWAN 33334 TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-07 (hex) TELMAT INFORMATIQUE +004007 (base 16) TELMAT INFORMATIQUE + 6 RUE DE L'INDUSTRIE + BP 12 68360 SOULTZ + FRANCE + FRANCE + +00-40-08 (hex) A PLUS INFO CORPORATION +004008 (base 16) A PLUS INFO CORPORATION + 5F, NO.2, LANE 235 + BAO CHIAO ROAD HSIN TIEN, TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-09 (hex) TACHIBANA TECTRON CO., LTD. +004009 (base 16) TACHIBANA TECTRON CO., LTD. + SYSTEMATIC EQUIPMENT DIVISION + 2-2-5 HIGASHIYAMA, MEGUROKU TOKYO, 153 + JAPAN + JAPAN + +00-40-0A (hex) PIVOTAL TECHNOLOGIES, INC. +00400A (base 16) PIVOTAL TECHNOLOGIES, INC. + 100 W. RINCON AVENUE-STE #211 + CAMPBELL CA 95008 + UNITED STATES + +00-40-0B (hex) CISCO SYSTEMS, INC. +00400B (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-40-0C (hex) GENERAL MICRO SYSTEMS, INC. +00400C (base 16) GENERAL MICRO SYSTEMS, INC. + P.O. BOX 3689 + RANCHO CUCAMONGA CA 91729 + UNITED STATES + +00-40-0D (hex) LANNET DATA COMMUNICATIONS,LTD +00400D (base 16) LANNET DATA COMMUNICATIONS,LTD + ATIDIM TECHNOLOG'L PARK, BG.#3 + TEL AVIV 61131 + ISRAEL + ISRAEL + +00-40-0E (hex) MEMOTEC COMMUNICATIONS, INC. +00400E (base 16) MEMOTEC COMMUNICATIONS, INC. + 600 MCCAFFREY + MONTREAL, QUEBEC H4T 1N1 + CANADA + CANADA + +00-40-0F (hex) DATACOM TECHNOLOGIES +00400F (base 16) DATACOM TECHNOLOGIES + 11001 31ST PLACE WEST + EVERETT WA 98204 + UNITED STATES + +00-40-10 (hex) SONIC SYSTEMS, INC. +004010 (base 16) SONIC SYSTEMS, INC. + 575 PASTORIA NORTH AVENUE + SUNNYVALE CA 940867 + UNITED STATES + +00-40-11 (hex) ANDOVER CONTROLS CORPORATION +004011 (base 16) ANDOVER CONTROLS CORPORATION + 300 BRICKSTONE SQUARE + ANDOVER MA 01810 + UNITED STATES + +00-40-12 (hex) WINDATA, INC. +004012 (base 16) WINDATA, INC. + 10 BEARFOOT ROAD + NORTHBORO MA 01532 + UNITED STATES + +00-40-13 (hex) NTT DATA COMM. SYSTEMS CORP. +004013 (base 16) NTT DATA COMM. SYSTEMS CORP. + DEVELOPMENT HEADQUARTERS + TOYOSU CENTER BLDG., 3-3-3 TOYOSU, KOTO- + TOKYO 135 TOKYO 135 JAPAN + JAPAN + +00-40-14 (hex) COMSOFT GMBH +004014 (base 16) COMSOFT GMBH + WACHHAUSSTR. 5A + 7500 KARLSRUHE 41 + GERMANY + GERMANY + +00-40-15 (hex) ASCOM INFRASYS AG +004015 (base 16) ASCOM INFRASYS AG + DPT. EASO 3726 + GLUTZ-BLOTZHEIMSTR. 1 CH-4503 SOLOTHURN + SWITZERLAND + SWITZERLAND + +00-40-16 (hex) HADAX ELECTRONICS, INC. +004016 (base 16) HADAX ELECTRONICS, INC. + 11 TEANECK ROAD + RICHFIELD PARK NJ 07660 + UNITED STATES + +00-40-17 (hex) Silex Technology America +004017 (base 16) Silex Technology America + 157 West 7065 South + Salt Lake City UT 84047 + UNITED STATES + +00-40-18 (hex) ADOBE SYSTEMS, INC. +004018 (base 16) ADOBE SYSTEMS, INC. + 1585 CHARLESTON ROAD + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-40-19 (hex) AEON SYSTEMS, INC. +004019 (base 16) AEON SYSTEMS, INC. + 8401 WASHINGTON PLACE NE + ALBUQUERQUE NM 87113 + UNITED STATES + +00-40-1A (hex) FUJI ELECTRIC CO., LTD. +00401A (base 16) FUJI ELECTRIC CO., LTD. + NEW YURAKUCHO BLDG + 12-1 YURAKUCHO 1-CHOME CHIYODA-KU, TOKYO + JAPAN + JAPAN + +00-40-1B (hex) PRINTER SYSTEMS CORP. +00401B (base 16) PRINTER SYSTEMS CORP. + 207 PERRY PARKWAY + GAITHERSBURG MD 20877-2142 + UNITED STATES + +00-40-1C (hex) AST RESEARCH, INC. +00401C (base 16) AST RESEARCH, INC. + MS 2-78 + 1615 ALTON PARKWAY + IRVINE CA 92618 + UNITED STATES + +00-40-1D (hex) INVISIBLE SOFTWARE, INC. +00401D (base 16) INVISIBLE SOFTWARE, INC. + 1142 CHESS DRIVE + FOSTER CITY CA 94404 + UNITED STATES + +00-40-1E (hex) ICC +00401E (base 16) ICC + 8230 MONTGOMERY ROAD + CINCINNATI OH 45236 + UNITED STATES + +00-40-1F (hex) COLORGRAPH LTD +00401F (base 16) COLORGRAPH LTD + UNIT 2, MARS HOUSE + CALLEVA PARK, ALDERMASTON NR. READING, B + RG7 4QW - UNITED KINGDOM + UNITED KINGDOM + +00-40-20 (hex) Tyco Electronics (UK) Ltd +004020 (base 16) Tyco Electronics (UK) Ltd + Kinmel Park + Bodelwyddan RHYL LL18 5TZ + UNITED KINGDOM + +00-40-21 (hex) RASTER GRAPHICS +004021 (base 16) RASTER GRAPHICS + 285 N. WOLFE ROAD + SUNNYVALE CA 94086 + UNITED STATES + +00-40-22 (hex) KLEVER COMPUTERS, INC. +004022 (base 16) KLEVER COMPUTERS, INC. + 1028 W. MAUDE AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-40-23 (hex) LOGIC CORPORATION +004023 (base 16) LOGIC CORPORATION + 3-14-10 MEIJI-SEIMEI BUILDING + MITA MINATO-KU TOKYO + JAPAN + JAPAN + +00-40-24 (hex) COMPAC INC. +004024 (base 16) COMPAC INC. + 16-7 NIHONBASI HAMACHO 3-CHO + CHUO-KU, TOKYO + JAPAN + JAPAN + +00-40-25 (hex) MOLECULAR DYNAMICS +004025 (base 16) MOLECULAR DYNAMICS + 880 EAST ARQUES AVENUE + SUNNYVALE CA 94086-4536 + UNITED STATES + +00-40-26 (hex) MELCO, INC. +004026 (base 16) MELCO, INC. + MELCO HI-TECH CENTER, + SHIBATA HONDORI 4-15 MINAMI-KU + NAGOYA 457-8520 + JAPAN + +00-40-27 (hex) SMC MASSACHUSETTS, INC. +004027 (base 16) SMC MASSACHUSETTS, INC. + 25 WALKERS BROOK DRIVE + READING MA 01867 + UNITED STATES + +00-40-28 (hex) NETCOMM LIMITED +004028 (base 16) NETCOMM LIMITED + 3 OLYMPIC BUSINESS CENTRE + PAYCOCKE ROAD BASILDON, ESSEX SS14 3EX + UNITED KINGDOM + UNITED KINGDOM + +00-40-29 (hex) COMPEX +004029 (base 16) COMPEX + B.P. 35 + 74371 PRINGY-FRANCE + FRANCE + FRANCE + +00-40-2A (hex) CANOGA-PERKINS +00402A (base 16) CANOGA-PERKINS + 21012 LASSEN STREET + CHATSWORTH CA 91311-4241 + UNITED STATES + +00-40-2B (hex) TRIGEM COMPUTER, INC. +00402B (base 16) TRIGEM COMPUTER, INC. + KISUNG B/D 4F, 784-6 + YEOKSAM-DONG, KANGNAM-GU + SEOUL KOREA 135-080 + KOREA, REPUBLIC OF + +00-40-2C (hex) ISIS DISTRIBUTED SYSTEMS, INC. +00402C (base 16) ISIS DISTRIBUTED SYSTEMS, INC. + 111 SOUTH CAYUGA STREET + SUITE #200 + ITHACA NY 14850 + UNITED STATES + +00-40-2D (hex) HARRIS ADACOM CORPORATION +00402D (base 16) HARRIS ADACOM CORPORATION + 1100 VENTURE COURT + CARROLLTON TX 75006-5412 + UNITED STATES + +00-40-2E (hex) PRECISION SOFTWARE, INC. +00402E (base 16) PRECISION SOFTWARE, INC. + 600 S FEDERAL HWY STE + DEERFIELD BEACH FL 33441-4193 + UNITED STATES + +00-40-2F (hex) XLNT DESIGNS INC. +00402F (base 16) XLNT DESIGNS INC. + 15050 AVENUE OF SCIENCE + SUITE 200 + SAN DIEGO CA 92128 + UNITED STATES + +00-40-30 (hex) GK COMPUTER +004030 (base 16) GK COMPUTER + BASLER STRASSE 103 + D-7800 FREIBURG + GERMANY + GERMANY + +00-40-31 (hex) KOKUSAI ELECTRIC CO., LTD +004031 (base 16) KOKUSAI ELECTRIC CO., LTD + 2-1 YASUUCHI + YATSUO-MACHI NEIGUN + TOYAMA 939-23 JAPAN + JAPAN + +00-40-32 (hex) DIGITAL COMMUNICATIONS +004032 (base 16) DIGITAL COMMUNICATIONS + ASSOCIATES, INC. + 2010 FORTUNE DRIVE, #101 + SAN JOSE CA 95131 + UNITED STATES + +00-40-33 (hex) ADDTRON TECHNOLOGY CO., LTD. +004033 (base 16) ADDTRON TECHNOLOGY CO., LTD. + 46560 FREMONT BLVD. #303 + FREMONT CA 94538 + UNITED STATES + +00-40-34 (hex) BUSTEK CORPORATION +004034 (base 16) BUSTEK CORPORATION + 4151 BURTON DRIVE + SANTA CLARA CA 95054 + UNITED STATES + +00-40-35 (hex) OPCOM +004035 (base 16) OPCOM + 1215 W. CROSBY RD. + CARROLLTON TX 75006 + UNITED STATES + +00-40-36 (hex) TRIBE COMPUTER WORKS, INC. +004036 (base 16) TRIBE COMPUTER WORKS, INC. + 1195 PARK AVENUE-STE #211 + EMERYVILLE CA 94608 + UNITED STATES + +00-40-37 (hex) SEA-ILAN, INC. +004037 (base 16) SEA-ILAN, INC. + 14602 NORTH US HIGHWAY #31 + CARMEL IN 46032 + UNITED STATES + +00-40-38 (hex) TALENT ELECTRIC INCORPORATED +004038 (base 16) TALENT ELECTRIC INCORPORATED + 3RD FL., NO. 260, PA TEH ROAD + SEC. 2 TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-39 (hex) OPTEC DAIICHI DENKO CO., LTD. +004039 (base 16) OPTEC DAIICHI DENKO CO., LTD. + FIBER OPTICS & TELECOM. DIV. + 3-1-1 MARUNOUCHI CHIYODAKU TOKYO 100 + JAPAN + +00-40-3A (hex) IMPACT TECHNOLOGIES +00403A (base 16) IMPACT TECHNOLOGIES + 6 RUE DE L'ACADIE + Z.A. COURTABOEUF 91953 LES ULIS CEDEX + FRANCE + FRANCE + +00-40-3B (hex) SYNERJET INTERNATIONAL CORP. +00403B (base 16) SYNERJET INTERNATIONAL CORP. + 5F, NO 35, KUANG FU S. ROAD + TAIPEI, + TAIWAN R. O. C. + TAIWAN, REPUBLIC OF CHINA + +00-40-3C (hex) FORKS, INC. +00403C (base 16) FORKS, INC. + 1-27-4 IRIYA, + IRIYA 1-27-4 TAITO, + 110 JAPAN + JAPAN + +00-40-3D (hex) TERADATA +00403D (base 16) TERADATA + 100 N. SEPULVEDA BLVD. + EL SEGUNDO CA 90245 + UNITED STATES + +00-40-3E (hex) RASTER OPS CORPORATION +00403E (base 16) RASTER OPS CORPORATION + 2500 WALSH AVENUE + SANTA CLARA CA 95051 + UNITED STATES + +00-40-3F (hex) SSANGYONG COMPUTER SYSTEMS +00403F (base 16) SSANGYONG COMPUTER SYSTEMS + CORPORATION + 60-1, 3GA, CHUNGMU-RO, JUNG-GU SEOUL + KOREA 100-705 + KOREA, REPUBLIC OF + +00-40-40 (hex) RING ACCESS, INC. +004040 (base 16) RING ACCESS, INC. + 957-R INDUSTRIAL ROAD + SAN CARLOS CA 94070 + UNITED STATES + +00-40-41 (hex) FUJIKURA LTD. +004041 (base 16) FUJIKURA LTD. + 1-5-1, KIBA, KOTO-KU + TOKYO 135 + JAPAN + JAPAN + +00-40-42 (hex) N.A.T. GMBH +004042 (base 16) N.A.T. GMBH + GOETHESTR. 2 + 5210 TROISDORF-SIEGLAR + GERMANY + GERMANY + +00-40-43 (hex) Nokia Siemens Networks GmbH & Co. KG. +004043 (base 16) Nokia Siemens Networks GmbH & Co. KG. + Werner-von-Siemens Str. 2-6 + Bruchsal Baden-Würtemberg 76646 + FINLAND + +00-40-44 (hex) QNIX COMPUTER CO., LTD. +004044 (base 16) QNIX COMPUTER CO., LTD. + 8,9F KOREAN TEACHER'S MUT.BLDG + 35-3, YEOUIDO_DONG, YEONGDEUNGPO_GU + SEOUL KOREA 150-010 + KOREA, REPUBLIC OF + +00-40-45 (hex) TWINHEAD CORPORATION +004045 (base 16) TWINHEAD CORPORATION + 1537 CENTRE POINTE DRIVE + MILPITAS CA 95035 + UNITED STATES + +00-40-46 (hex) UDC RESEARCH LIMITED +004046 (base 16) UDC RESEARCH LIMITED + 8A KING WAN INDUSTRIAL BLDG. + 54 HUNG TO ROAD, KWUN TONG + HONG KONG + HONG KONG + +00-40-47 (hex) WIND RIVER SYSTEMS +004047 (base 16) WIND RIVER SYSTEMS + 1010 ATLANTIC AVENUE + ALAMEDA CA 94501 + UNITED STATES + +00-40-48 (hex) SMD INFORMATICA S.A. +004048 (base 16) SMD INFORMATICA S.A. + LARGO MOVIMENTO DAS FORCAS + ARMADAS, 4 ALFRAGIDE, 2700 AMADORA + PORTUGAL + PORTUGAL + +00-40-49 (hex) TEGIMENTA AG +004049 (base 16) TEGIMENTA AG + FORRENSTRASSE + CH-6343 ROTKREUZ + SWITZERLAND + SWITZERLAND + +00-40-4A (hex) WEST AUSTRALIAN DEPARTMENT +00404A (base 16) WEST AUSTRALIAN DEPARTMENT + OF EMPLOYMENT (DEVET) + LEVER 2, 151 ROYAL ST. EAST PERTH 6001 + WESTERN AUSTRALIA + AUSTRALIA + +00-40-4B (hex) MAPLE COMPUTER SYSTEMS +00404B (base 16) MAPLE COMPUTER SYSTEMS + P.O. BOX 10050 + ST. JOHN'S, NF + CANADA ALA 4L5 + CANADA + +00-40-4C (hex) HYPERTEC PTY LTD. +00404C (base 16) HYPERTEC PTY LTD. + P.O. BOX 1782 + MACQUARIE CENTRE NSW, 2113 + AUSTRALIA + AUSTRALIA + +00-40-4D (hex) TELECOMMUNICATIONS TECHNIQUES +00404D (base 16) TELECOMMUNICATIONS TECHNIQUES + M/S + 20400 OBSERVATION DRIVE + GERMANTOWN MD 20876 + UNITED STATES + +00-40-4E (hex) FLUENT, INC. +00404E (base 16) FLUENT, INC. + 594 WORCESTER ROAD-STE.#308 + NATICK MA 01760 + UNITED STATES + +00-40-4F (hex) SPACE & NAVAL WARFARE SYSTEMS +00404F (base 16) SPACE & NAVAL WARFARE SYSTEMS + NUWC + CODE 2222, BLDG 1171-3 + NEWPORT RI 02841-5047 + UNITED STATES + +00-40-50 (hex) IRONICS, INCORPORATED +004050 (base 16) IRONICS, INCORPORATED + 767 WARREN RD + ITHACA N.Y. 14850 + UNITED STATES + +00-40-51 (hex) GRACILIS, INC. +004051 (base 16) GRACILIS, INC. + 623 PALACE STREET + AURORA IL 60506 + UNITED STATES + +00-40-52 (hex) STAR TECHNOLOGIES, INC. +004052 (base 16) STAR TECHNOLOGIES, INC. + 515 SHAW ROAD + STERLING VA 22075 + UNITED STATES + +00-40-53 (hex) AMPRO COMPUTERS +004053 (base 16) AMPRO COMPUTERS + 990 ALMONDOR AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-40-54 (hex) CONNECTION MACHINES SERVICES +004054 (base 16) CONNECTION MACHINES SERVICES + 12 HENSHAW STREET + WOBURN MA 01801-466664 + UNITED STATES + +00-40-55 (hex) METRONIX GMBH +004055 (base 16) METRONIX GMBH + NEUE KNOCHENHAUERSTRABE 5 + D-3300 BRAUNSCHWEIG + WEST GERMANY + GERMANY + +00-40-56 (hex) MCM JAPAN LTD. +004056 (base 16) MCM JAPAN LTD. + SYUUKAEN BLD. 2-11-1 + KOMAZAWA SETAGAYA-KU TOKYO 154 + JAPAN + JAPAN + +00-40-57 (hex) LOCKHEED - SANDERS +004057 (base 16) LOCKHEED - SANDERS + DANIEL WEBSTER HIGHWAY SOUTH + P.O. BOX 868 + NASHUA NH 03061-0868 + UNITED STATES + +00-40-58 (hex) KRONOS, INC. +004058 (base 16) KRONOS, INC. + 400 FIFTH AVENUE + WALTHAM MA 02154 + UNITED STATES + +00-40-59 (hex) YOSHIDA KOGYO K. K. +004059 (base 16) YOSHIDA KOGYO K. K. + TECHNICAL RESEARCH DEPT. + 200 YOSHIDA KUROBE CITY TOYAMA PREF. + 939 JAPAN + JAPAN + +00-40-5A (hex) GOLDSTAR INFORMATION & COMM. +00405A (base 16) GOLDSTAR INFORMATION & COMM. + 533, HOGAE-DONG, ANYANG-SHI + KYONGKI-DO 430-080 + KOREA + KOREA, REPUBLIC OF + +00-40-5B (hex) FUNASSET LIMITED +00405B (base 16) FUNASSET LIMITED + ORCHARDS, 14 TOWNSEND + SOMERSET TA19 OAU ILMINSTER + UNITED KINGDOM + UNITED KINGDOM + +00-40-5C (hex) FUTURE SYSTEMS, INC. +00405C (base 16) FUTURE SYSTEMS, INC. + ROOM 102 DONG BANG B/D, + YEOG SAM-DONG 740-5, KANG NAM-KU + SEOUL 130-080 SEOUL 130-080 KOREA + KOREA, REPUBLIC OF + +00-40-5D (hex) STAR-TEK, INC. +00405D (base 16) STAR-TEK, INC. + 71 LYMAN STREET + NORTHBORO MA 01532 + UNITED STATES + +00-40-5E (hex) NORTH HILLS ISRAEL +00405E (base 16) NORTH HILLS ISRAEL + P.O. BOX 1280 + YOKNEAM 20692 + ISRAEL + ISRAEL + +00-40-5F (hex) AFE COMPUTERS LTD. +00405F (base 16) AFE COMPUTERS LTD. + 62 ANCHORAGE ROAD + SUTTON COLDFIELD WEST MIDLANDS B74 2PG + UNITED KINGDOM + UNITED KINGDOM + +00-40-60 (hex) COMENDEC LTD +004060 (base 16) COMENDEC LTD + ENTERPRISE WAY, + ASTON SCIENCE PARK, ASTON TRIANGLE + BIRMINGHAM BIRMINGHAM ENGLAND + UNITED KINGDOM + +00-40-61 (hex) DATATECH ENTERPRISES CO., LTD. +004061 (base 16) DATATECH ENTERPRISES CO., LTD. + (LIN KOU INDUSTRIAL ZONE SEC,4 + 27, HSI-SHIH LAKE ROAD KUEI-SHAN HSIANG + TAOYUAN COUNTY TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-62 (hex) E-SYSTEMS, INC./GARLAND DIV. +004062 (base 16) E-SYSTEMS, INC./GARLAND DIV. + P.O. BOX 660023 + MAIL STOP 63000 + DALLAS TX 75266-0023 + UNITED STATES + +00-40-63 (hex) VIA TECHNOLOGIES, INC. +004063 (base 16) VIA TECHNOLOGIES, INC. + 5020 BRANDIN COURT + FREMONT CA 94538 + UNITED STATES + +00-40-64 (hex) KLA INSTRUMENTS CORPORATION +004064 (base 16) KLA INSTRUMENTS CORPORATION + 160 RIO ROBLES + SAN JOSE CA 95161-9055 + UNITED STATES + +00-40-65 (hex) GTE SPACENET +004065 (base 16) GTE SPACENET + 1700 OLD MEADOW ROAD + MCLEAN VA 22102 + UNITED STATES + +00-40-66 (hex) HITACHI CABLE, LTD. +004066 (base 16) HITACHI CABLE, LTD. + OPTO ELECTRONIC SYSTEM LAB + 880 ISAGOZAW-CHO, HITACHI-SHI IBARAKI-KE + 319-14 JAPAN + JAPAN + +00-40-67 (hex) OMNIBYTE CORPORATION +004067 (base 16) OMNIBYTE CORPORATION + 245 WEST ROOSEVELT ROAD + WEST CHICAGO IL 60185 + UNITED STATES + +00-40-68 (hex) EXTENDED SYSTEMS +004068 (base 16) EXTENDED SYSTEMS + 6123 NORTH MEEKER AVENUE + BOISE ID 83704 + UNITED STATES + +00-40-69 (hex) LEMCOM SYSTEMS, INC. +004069 (base 16) LEMCOM SYSTEMS, INC. + 2104 WEST PEORIA AVENUE + PHOENIX AZ 85029 + UNITED STATES + +00-40-6A (hex) KENTEK INFORMATION SYSTEMS,INC +00406A (base 16) KENTEK INFORMATION SYSTEMS,INC + 2945 WILDERNESS PLACE + BOULDER CO 80301 + UNITED STATES + +00-40-6B (hex) SYSGEN +00406B (base 16) SYSGEN + 556 GIBRALTAR DRIVE + MILPITAS CA 95035 + UNITED STATES + +00-40-6C (hex) COPERNIQUE +00406C (base 16) COPERNIQUE + 6, MAIL DE L'EUROPE BP 25 + 78170 LA CELLE-SAINT-CLOUD + FRANCE + FRANCE + +00-40-6D (hex) LANCO, INC. +00406D (base 16) LANCO, INC. + 800 WEST AIRPORT FREEWAY + SUITE #1100 + IRVING TX 75062 + UNITED STATES + +00-40-6E (hex) COROLLARY, INC. +00406E (base 16) COROLLARY, INC. + 2802 KELVIN + IRVINE CA 92714 + UNITED STATES + +00-40-6F (hex) SYNC RESEARCH INC. +00406F (base 16) SYNC RESEARCH INC. + 7 STUDEBAKER + IRVINE CA 92718 + UNITED STATES + +00-40-70 (hex) INTERWARE CO., LTD. +004070 (base 16) INTERWARE CO., LTD. + 7F KUDAN NEW CENTRAL BLDG., + 1-4-5 KUDAN-KITA, CHIYODA-KU + TOKYO 102 TOKYO 102 JAPAN + JAPAN + +00-40-71 (hex) ATM COMPUTER GMBH +004071 (base 16) ATM COMPUTER GMBH + BUCKLESTR. 1-5,POSTFACH 101043 + D7750 KONSTANZ + GERMANY + GERMANY + +00-40-72 (hex) Applied Innovation Inc. +004072 (base 16) Applied Innovation Inc. + 5800 Innovation Drive + Dublin OH 43016-3271 + UNITED STATES + +00-40-73 (hex) BASS ASSOCIATES +004073 (base 16) BASS ASSOCIATES + 435 TASSO STREET, STE. #325 + PALO ALTO CA 94301 + UNITED STATES + +00-40-74 (hex) CABLE AND WIRELESS +004074 (base 16) CABLE AND WIRELESS + COMMUNICATIONS, INC. + 1919 GALLOWS ROAD + VIENNA VA 22182-3964 + UNITED STATES + +00-40-75 (hex) M-TRADE (UK) LTD +004075 (base 16) M-TRADE (UK) LTD + 11-12 NORTHFIELD PROSPECT + PUTNEY BRIDGE ROAD LONDON SW18 1HR + UNITED KINGDOM + UNITED KINGDOM + +00-40-76 (hex) Sun Conversion Technologies +004076 (base 16) Sun Conversion Technologies + 100 Commerce Boulevard + Quakertown PA 78951-2237 + UNITED STATES + +00-40-77 (hex) MAXTON TECHNOLOGY CORPORATION +004077 (base 16) MAXTON TECHNOLOGY CORPORATION + 4FK, 249, SEC. 3, + CHUNG HSIAO E. RD., TAIPEI + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-40-78 (hex) WEARNES AUTOMATION PTE LTD +004078 (base 16) WEARNES AUTOMATION PTE LTD + 801 LORONG 7, TOA PAYOH + SINGAPORE 1231 + SINGAPORE + +00-40-79 (hex) JUKO MANUFACTURE COMPANY, LTD. +004079 (base 16) JUKO MANUFACTURE COMPANY, LTD. + FLAT C, 3RD FLOOR, CDW BLDG. + 388 CASTLE PEAK ROAD, TSUEN WAN, N.T. + HONG KONG + HONG KONG + +00-40-7A (hex) SOCIETE D'EXPLOITATION DU CNIT +00407A (base 16) SOCIETE D'EXPLOITATION DU CNIT + 2 GLACE DE LA DEFENSE 92053 + PARIS-LA-DEFENSE + FRANCE + FRANCE + +00-40-7B (hex) SCIENTIFIC ATLANTA +00407B (base 16) SCIENTIFIC ATLANTA + Information Technology + 4311 Communications Drive Mail Code: 30 + Norcross GA 30091-6850 + UNITED STATES + +00-40-7C (hex) QUME CORPORATION +00407C (base 16) QUME CORPORATION + 500 YOSEMITE DRIVE, M/S-29 + MILPITAS CA 95035-5426 + UNITED STATES + +00-40-7D (hex) EXTENSION TECHNOLOGY CORP. +00407D (base 16) EXTENSION TECHNOLOGY CORP. + 30 HOLLIS STREET + FRAMINGHAM MA 01701 + UNITED STATES + +00-40-7E (hex) EVERGREEN SYSTEMS, INC. +00407E (base 16) EVERGREEN SYSTEMS, INC. + 120 LANDING COURT-SUITE + NOVATO CA 94945 + UNITED STATES + +00-40-7F (hex) FLIR Systems +00407F (base 16) FLIR Systems + BOX 3 + 182-11 DANDERYD + SWEDEN + SWEDEN + +00-40-80 (hex) ATHENIX CORPORATION +004080 (base 16) ATHENIX CORPORATION + 675 ALMANOR AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-40-81 (hex) MANNESMANN SCANGRAPHIC GMBH +004081 (base 16) MANNESMANN SCANGRAPHIC GMBH + RISSENER STRASSE 112-114 + W-2000 WEDEL + GERMANY + GERMANY + +00-40-82 (hex) LABORATORY EQUIPMENT CORP. +004082 (base 16) LABORATORY EQUIPMENT CORP. + 1-7-3 MINATOMACHI + TUCHIURA-CITY IBARAGI-KEN, + 300 JAPAN + JAPAN + +00-40-83 (hex) TDA INDUSTRIA DE PRODUTOS +004083 (base 16) TDA INDUSTRIA DE PRODUTOS + ELETRONICOS S.A. + RUE AGOSTINO TOGNERI, 92 04690 - SAO PAU + BRAZIL + BRAZIL + +00-40-84 (hex) HONEYWELL INC. +004084 (base 16) HONEYWELL INC. + HONEYWELL SSDC - M.S. 2300 + 3660 TECHNOLOGY DRIVE + MINNEAPOLIS MN 55418 + UNITED STATES + +00-40-85 (hex) SAAB INSTRUMENTS AB +004085 (base 16) SAAB INSTRUMENTS AB + P.O. BOX 1017 + S-551 11 JONKOPING + SWEDEN + +00-40-86 (hex) MICHELS & KLEBERHOFF COMPUTER +004086 (base 16) MICHELS & KLEBERHOFF COMPUTER + GATHE 117 + 5600 WUPPERTAL 1 + GERMANY + GERMANY + +00-40-87 (hex) UBITREX CORPORATION +004087 (base 16) UBITREX CORPORATION + 19TH FLOOR, 155 CARLTON STREET + WINNIPEG, MANITOBA + CANADA R3C 3H8 + CANADA + +00-40-88 (hex) MOBIUS TECHNOLOGIES, INC. +004088 (base 16) MOBIUS TECHNOLOGIES, INC. + 5835 DOYLE STREET + EMERYVILLE CA 94608 + UNITED STATES + +00-40-89 (hex) MEIDENSHA CORPORATION +004089 (base 16) MEIDENSHA CORPORATION + FACTORY NO.4, 515 KAMINAKAMIZO + HIGASHI MAKADO NUMAZU-CITY SHIZUOKA-PREF + JAPAN + JAPAN + +00-40-8A (hex) TPS TELEPROCESSING SYS. GMBH +00408A (base 16) TPS TELEPROCESSING SYS. GMBH + SCHWADERMUCHLSTRASSE 4-8 + W-8501 CADOLZBURG + GERMANY + GERMANY + +00-40-8B (hex) RAYLAN CORPORATION +00408B (base 16) RAYLAN CORPORATION + 120 INDEPENDENCE DRIVE + MENLO PARK CA 94025 + UNITED STATES + +00-40-8C (hex) AXIS COMMUNICATIONS AB +00408C (base 16) AXIS COMMUNICATIONS AB + SCHEELEVAGEN 16 + S-223 70 LUND + SWEDEN + SWEDEN + +00-40-8D (hex) THE GOODYEAR TIRE & RUBBER CO. +00408D (base 16) THE GOODYEAR TIRE & RUBBER CO. + 1144 EAST MARKET STREET + AKRON OH 44316 + UNITED STATES + +00-40-8E (hex) DIGILOG, INC. +00408E (base 16) DIGILOG, INC. + 2360 MARYLAND ROAD + WILLOW GROVE PA 19090 + UNITED STATES + +00-40-8F (hex) WM-DATA MINFO AB +00408F (base 16) WM-DATA MINFO AB + OLOF ASKLUNDS GATA 14 + BOX 2065 421 02 GOTEBORG + SWEDEN + SWEDEN + +00-40-90 (hex) ANSEL COMMUNICATIONS +004090 (base 16) ANSEL COMMUNICATIONS + 1701 JUNCTION COURT + SAN JOSE CA 95112 + UNITED STATES + +00-40-91 (hex) PROCOMP INDUSTRIA ELETRONICA +004091 (base 16) PROCOMP INDUSTRIA ELETRONICA + AV. KENKITI SIMOMOTO, 767 + 05347 - SAO PAULO / SP + BRAZIL + BRAZIL + +00-40-92 (hex) ASP COMPUTER PRODUCTS, INC. +004092 (base 16) ASP COMPUTER PRODUCTS, INC. + 160 SAN GABRIEL DRIVE + SUNNYVALE CA 94086 + UNITED STATES + +00-40-93 (hex) PAXDATA NETWORKS LTD. +004093 (base 16) PAXDATA NETWORKS LTD. + COMMUNICATIONS HOUSE, + FROGMORE ROAD HEMEL HEMPSTEAD, HERTS HP3 + ENGLAND + UNITED KINGDOM + +00-40-94 (hex) SHOGRAPHICS, INC. +004094 (base 16) SHOGRAPHICS, INC. + 1890 N. SHORELINE BLVD. + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-40-95 (hex) R.P.T. INTERGROUPS INT'L LTD. +004095 (base 16) R.P.T. INTERGROUPS INT'L LTD. + 9F, 50 MIN CHUAN RD + HSIN TIEN, TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-96 (hex) Cisco Systems, Inc. +004096 (base 16) Cisco Systems, Inc. + 170 West Tasman Dr. + San Jose CA 95134 + UNITED STATES + +00-40-97 (hex) DATEX DIVISION OF +004097 (base 16) DATEX DIVISION OF + INSTRUMENTARIUM CORP. + P.O. BOX 446, SF-00101 HELSINKI + FINLAND + FINLAND + +00-40-98 (hex) DRESSLER GMBH & CO. +004098 (base 16) DRESSLER GMBH & CO. + KACKERTSTRASSE 10 + D-52072 AACHEN + GERMANY + GERMANY + +00-40-99 (hex) NEWGEN SYSTEMS CORP. +004099 (base 16) NEWGEN SYSTEMS CORP. + 17580 NEWHOPE STREET + FOUNTAIN VALLEY CA 92708 + UNITED STATES + +00-40-9A (hex) NETWORK EXPRESS, INC. +00409A (base 16) NETWORK EXPRESS, INC. + 2200 GREEN ROAD - STE + ANN ARBOR MI 48170 + UNITED STATES + +00-40-9B (hex) HAL COMPUTER SYSTEMS INC. +00409B (base 16) HAL COMPUTER SYSTEMS INC. + 1315 DELL AVENUE + CAMPBELL CA 95008 + UNITED STATES + +00-40-9C (hex) TRANSWARE +00409C (base 16) TRANSWARE + 21, RUE DU 8 MAI 1945 + 941107 ARCUEIL + FRANCE + FRANCE + +00-40-9D (hex) DIGIBOARD, INC. +00409D (base 16) DIGIBOARD, INC. + 6400 FLYING CLOUD DRIVE + EDEN PRAIRIE MN 55344 + UNITED STATES + +00-40-9E (hex) CONCURRENT TECHNOLOGIES LTD. +00409E (base 16) CONCURRENT TECHNOLOGIES LTD. + 654 THE CRESCENT + COLCHESTER BUSINESS PARK COLCHESTER, ESS + UNITED KINGDOM + UNITED KINGDOM + +00-40-9F (hex) LANCAST/CASAT TECHNOLOGY, INC. +00409F (base 16) LANCAST/CASAT TECHNOLOGY, INC. + 10 NORTHERN BLVD.-UNIT 5 + AMHERST NH 03031-2328 + UNITED STATES + +00-40-A0 (hex) GOLDSTAR CO., LTD. +0040A0 (base 16) GOLDSTAR CO., LTD. + 6 GA 3B MUNLAE YEONGDEUNGPO + SEOUL + KOREA + KOREA, REPUBLIC OF + +00-40-A1 (hex) ERGO COMPUTING +0040A1 (base 16) ERGO COMPUTING + ONE INTERCONTINENTAL WAY + PEABODY MA 01960 + UNITED STATES + +00-40-A2 (hex) KINGSTAR TECHNOLOGY INC. +0040A2 (base 16) KINGSTAR TECHNOLOGY INC. + 1-3F, NO. 185, SEC. 3, + CHENG TEH ROAD + TAIPEI TAIWAN, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-A3 (hex) MICROUNITY SYSTEMS ENGINEERING +0040A3 (base 16) MICROUNITY SYSTEMS ENGINEERING + 255 CASPIAN DRIVE + SUNNYVALE CA 94089-1015 + UNITED STATES + +00-40-A4 (hex) ROSE ELECTRONICS +0040A4 (base 16) ROSE ELECTRONICS + P.O. BOX 742571 + HOUSTON TX 77274-2571 + UNITED STATES + +00-40-A5 (hex) CLINICOMP INTL. +0040A5 (base 16) CLINICOMP INTL. + 4510 EXECCUTIVE DRIVE-STE.#200 + SAN DIEGO CA 92121 + UNITED STATES + +00-40-A6 (hex) Cray, Inc. +0040A6 (base 16) Cray, Inc. + 655F LONE OAK DRIVE + EAGAN MN 55121 + UNITED STATES + +00-40-A7 (hex) ITAUTEC PHILCO S.A. +0040A7 (base 16) ITAUTEC PHILCO S.A. + GRUPO ITAUTEC PHILCO + RUA SANTA CATARINA, 1 03086-020 SAO PAUL + BRAZIL + BRAZIL + +00-40-A8 (hex) IMF INTERNATIONAL LTD. +0040A8 (base 16) IMF INTERNATIONAL LTD. + NO.5 2/F KINGSFORD IND. CENTRE + 13 WANG HOI ROAD KOWLOON BAY, KOWLOON + HONG KONG + HONG KONG + +00-40-A9 (hex) DATACOM INC. +0040A9 (base 16) DATACOM INC. + 146 HIGHWAY ROUTE 34 - STE 250 + HOLMDEL NJ 07733 + UNITED STATES + +00-40-AA (hex) VALMET AUTOMATION INC. +0040AA (base 16) VALMET AUTOMATION INC. + P.O. BOX 237 + SF-33101 TAMPERE + FINLAND + FINLAND + +00-40-AB (hex) ROLAND DG CORPORATION +0040AB (base 16) ROLAND DG CORPORATION + 1227 OKUBO-CHO, HAMAMATSU-SHI + SHIZUOKA-KEN + 432 JAPAN + JAPAN + +00-40-AC (hex) SUPER WORKSTATION, INC. +0040AC (base 16) SUPER WORKSTATION, INC. + 2190 PARAGON DRIVE + SAN JOSE CA 95131 + UNITED STATES + +00-40-AD (hex) SMA REGELSYSTEME GMBH +0040AD (base 16) SMA REGELSYSTEME GMBH + HANNOVERSCHE STR. 1-5 + D 3501 NIESTETAL + GERMANY + GERMANY + +00-40-AE (hex) DELTA CONTROLS, INC. +0040AE (base 16) DELTA CONTROLS, INC. + 13520 78TH AVENUE + SURREY, B.C. + CANADA V3W 8J6 + CANADA + +00-40-AF (hex) DIGITAL PRODUCTS, INC. +0040AF (base 16) DIGITAL PRODUCTS, INC. + 411 WAVERLY OAKS ROAD + WALTHAM MA 02154 + UNITED STATES + +00-40-B0 (hex) BYTEX CORPORATION, ENGINEERING +0040B0 (base 16) BYTEX CORPORATION, ENGINEERING + 13873 PARK CENTER ROAD + HERNDON VA 22071 + UNITED STATES + +00-40-B1 (hex) CODONICS INC. +0040B1 (base 16) CODONICS INC. + 17991 ENGLEWOOD DRIVE + MIDDLEBURG HTS OH 44130 + UNITED STATES + +00-40-B2 (hex) SYSTEMFORSCHUNG +0040B2 (base 16) SYSTEMFORSCHUNG + KONIGSTRASSE 33A + 5300 BONN 1 + GERMANY + GERMANY + +00-40-B3 (hex) PAR MICROSYSTEMS CORPORATION +0040B3 (base 16) PAR MICROSYSTEMS CORPORATION + 220 SENECA TURNPIKE + NEW HARTFORD NY 13413-1191 + UNITED STATES + +00-40-B4 (hex) NEXTCOM K.K. +0040B4 (base 16) NEXTCOM K.K. + 1-12-1 SHIBUYA + SHIBUYA-KU, TOKYO, 150 + JAPAN + JAPAN + +00-40-B5 (hex) VIDEO TECHNOLOGY COMPUTERS LTD +0040B5 (base 16) VIDEO TECHNOLOGY COMPUTERS LTD + 33/F., BLOCK #1, + TAI PING INDUSTRIAL CENTER 57 TING KOK R + N.T. HONG KONG + HONG KONG + +00-40-B6 (hex) COMPUTERM CORPORATION +0040B6 (base 16) COMPUTERM CORPORATION + 111 WOOD STREET + PITTSBURGH PA 15222 + UNITED STATES + +00-40-B7 (hex) STEALTH COMPUTER SYSTEMS +0040B7 (base 16) STEALTH COMPUTER SYSTEMS + 2341 REGINA CT. + SANTA CLARA CA 95054 + UNITED STATES + +00-40-B8 (hex) IDEA ASSOCIATES +0040B8 (base 16) IDEA ASSOCIATES + 29 DUNHAM ROAD + BILLERICA MA 01821 + UNITED STATES + +00-40-B9 (hex) MACQ ELECTRONIQUE SA +0040B9 (base 16) MACQ ELECTRONIQUE SA + RUE DE L'AERONEF 2 + B - 1140 BRUSSELS + BELGIUM + BELGIUM + +00-40-BA (hex) ALLIANT COMPUTER SYSTEMS CORP. +0040BA (base 16) ALLIANT COMPUTER SYSTEMS CORP. + ONE MONARCH DRIVE + LITTLETON MA 01460 + UNITED STATES + +00-40-BB (hex) GOLDSTAR CABLE CO., LTD. +0040BB (base 16) GOLDSTAR CABLE CO., LTD. + 555, HOGYE-DONG, ANYANG-SHI + KYUNGKI-DO, 430-080 + KOREA + KOREA, REPUBLIC OF + +00-40-BC (hex) ALGORITHMICS LTD. +0040BC (base 16) ALGORITHMICS LTD. + 3 DRAYTON PARK + LONDON N5 1NU + ENGLAND + UNITED KINGDOM + +00-40-BD (hex) STARLIGHT NETWORKS, INC. +0040BD (base 16) STARLIGHT NETWORKS, INC. + 444 CASTRO STREET STE + MOUNTAIN VIEW CA 94041 + UNITED STATES + +00-40-BE (hex) BOEING DEFENSE & SPACE +0040BE (base 16) BOEING DEFENSE & SPACE + P.O. BOX 3999 + MAIL STOP 88-12 + SEATTLE WA 98124-2499 + UNITED STATES + +00-40-BF (hex) CHANNEL SYSTEMS INTERN'L INC. +0040BF (base 16) CHANNEL SYSTEMS INTERN'L INC. + 93 SO. LA PATERA LANE + SANTA BARBARA CA 93117 + UNITED STATES + +00-40-C0 (hex) VISTA CONTROLS CORPORATION +0040C0 (base 16) VISTA CONTROLS CORPORATION + 27825 FREMONT COURT + VALENCIA CA 91355 + UNITED STATES + +00-40-C1 (hex) BIZERBA-WERKE WILHEIM KRAUT +0040C1 (base 16) BIZERBA-WERKE WILHEIM KRAUT + GMBH & CO. KG, + WILHELM-KRAUT-STR. 65 P.O. BOX 100164 + D-7460 BALINGEN D-7460 BALINGEN GERMANY + GERMANY + +00-40-C2 (hex) APPLIED COMPUTING DEVICES +0040C2 (base 16) APPLIED COMPUTING DEVICES + ALEPH PARK + 100 SOUTH CAMPUS DRIVE + TERRE HAUTE IN 47802 + UNITED STATES + +00-40-C3 (hex) FISCHER AND PORTER CO. +0040C3 (base 16) FISCHER AND PORTER CO. + 125 E. COUNTY LINE ROAD + WARMINSTER PA 18974 + UNITED STATES + +00-40-C4 (hex) KINKEI SYSTEM CORPORATION +0040C4 (base 16) KINKEI SYSTEM CORPORATION + 1-22-17, KAMIKITA, HIRANOKU + OSAKA, 547 + JAPAN + JAPAN + +00-40-C5 (hex) MICOM COMMUNICATIONS INC. +0040C5 (base 16) MICOM COMMUNICATIONS INC. + 4100 LOS ANGELES AVENUE + SIMI VALLEY CA 93063 + UNITED STATES + +00-40-C6 (hex) FIBERNET RESEARCH, INC. +0040C6 (base 16) FIBERNET RESEARCH, INC. + 1 TARA BOULEVARD-#405 + NASHUA NH 03062 + UNITED STATES + +00-40-C7 (hex) RUBY TECH CORPORATION +0040C7 (base 16) RUBY TECH CORPORATION + 6F-1, NO.3, LANE 250, + SEC. 5 NANKING E.ROAD + TAIPEI TAIWAN, R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-C8 (hex) MILAN TECHNOLOGY CORPORATION +0040C8 (base 16) MILAN TECHNOLOGY CORPORATION + 894 ROSS DRIVE--STE #105 + SUNNYVALE CA 94089 + UNITED STATES + +00-40-C9 (hex) NCUBE +0040C9 (base 16) NCUBE + 919 EAST HILLSDALE BLVD. + SUITE 200 + FOSTER CITY CA 94404 + UNITED STATES + +00-40-CA (hex) FIRST INTERNAT'L COMPUTER, INC +0040CA (base 16) FIRST INTERNAT'L COMPUTER, INC + FIC Building + No 300 Yang Guang Street + Neihu Taipei 114 Taipei 114 + TAIWAN, REPUBLIC OF CHINA + +00-40-CB (hex) LANWAN TECHNOLOGIES +0040CB (base 16) LANWAN TECHNOLOGIES + 1566 LA PRADERA DRIVE + CAMPBELL CA 95008 + UNITED STATES + +00-40-CC (hex) SILCOM MANUF'G TECHNOLOGY INC. +0040CC (base 16) SILCOM MANUF'G TECHNOLOGY INC. + 5620 TIMBERLEA BOULEVARD + MISSISSAUGA, ONTARIO + CANADA L4W 4M6 + CANADA + +00-40-CD (hex) TERA MICROSYSTEMS, INC. +0040CD (base 16) TERA MICROSYSTEMS, INC. + 2500 GREAT AMERICA PARKWAY + STE. #250 + SANTA CLARA CA 95054 + UNITED STATES + +00-40-CE (hex) NET-SOURCE, INC. +0040CE (base 16) NET-SOURCE, INC. + 1265 EL CAMINO REAL + SUITE 101 + SANTA CLARA CA 95050 + UNITED STATES + +00-40-CF (hex) STRAWBERRY TREE, INC. +0040CF (base 16) STRAWBERRY TREE, INC. + 160 SOUTH WOLFE ROAD + SUNNYVALE CA 94086 + UNITED STATES + +00-40-D0 (hex) MITAC INTERNATIONAL CORP. +0040D0 (base 16) MITAC INTERNATIONAL CORP. + 8TH FL. 585 MING SHENG E. RD. + TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-40-D1 (hex) FUKUDA DENSHI CO., LTD. +0040D1 (base 16) FUKUDA DENSHI CO., LTD. + R & D DEPARTMENT NO. 1 + 35-8, HONGO 2-CHOME, BUNKYO-KU TOKYO 113 + JAPAN + JAPAN + +00-40-D2 (hex) PAGINE CORPORATION +0040D2 (base 16) PAGINE CORPORATION + 1961-A CONCOURSE DRIVE + SAN JOSE CA 95131 + UNITED STATES + +00-40-D3 (hex) KIMPSION INTERNATIONAL CORP. +0040D3 (base 16) KIMPSION INTERNATIONAL CORP. + 4701 PATRICK HENRY DRIVE + SUITE 401 + SANTA CLARA CA 95054 + UNITED STATES + +00-40-D4 (hex) GAGE TALKER CORP. +0040D4 (base 16) GAGE TALKER CORP. + 13680 NE 16TH STREET + BELLEVUE WA 98005 + UNITED STATES + +00-40-D5 (hex) SARTORIUS AG +0040D5 (base 16) SARTORIUS AG + WEENDER LANDSTR: 94 - 108 + 3400 GOTTINGEN + GERMANY + GERMANY + +00-40-D6 (hex) LOCAMATION B.V. +0040D6 (base 16) LOCAMATION B.V. + POSTBOX 360 + 7500 AJ ENSCHEDE + HOLLAND + NETHERLANDS + +00-40-D7 (hex) STUDIO GEN INC. +0040D7 (base 16) STUDIO GEN INC. + 3-12-8 TAKANAWA #202 + MINATOKU, TOKYO 108 + JAPAN + JAPAN + +00-40-D8 (hex) OCEAN OFFICE AUTOMATION LTD. +0040D8 (base 16) OCEAN OFFICE AUTOMATION LTD. + 4TH & 5TH FLOOR, KADER BLDG. + 22 KAI CHEUNG ROAD KOWLOON BAY, KOWLOON + HONG KONG + HONG KONG + +00-40-D9 (hex) AMERICAN MEGATRENDS INC. +0040D9 (base 16) AMERICAN MEGATRENDS INC. + 6145F N BELT PARKWAY + NORCROSS GA 30071 + UNITED STATES + +00-40-DA (hex) TELSPEC LTD +0040DA (base 16) TELSPEC LTD + LANCASTER PARKER ROAD + ROCHESTER AIRPORT, ROCHESTER KENT ME1 3Q + ENGLAND + UNITED KINGDOM + +00-40-DB (hex) ADVANCED TECHNICAL SOLUTIONS +0040DB (base 16) ADVANCED TECHNICAL SOLUTIONS + 8050 SEMINOLE OFFICE CENTER + SUITE 210 + SEMINOLE FL 34642 + UNITED STATES + +00-40-DC (hex) TRITEC ELECTRONIC GMBH +0040DC (base 16) TRITEC ELECTRONIC GMBH + ROBERT KOCH STR. 35 + D6500 MAINZ 42 + GERMANY + GERMANY + +00-40-DD (hex) HONG TECHNOLOGIES +0040DD (base 16) HONG TECHNOLOGIES + 532 WEDDELL DRIVE + SUNNYVALE CA 94089 + UNITED STATES + +00-40-DE (hex) ELETTRONICA SAN GIORGIO +0040DE (base 16) ELETTRONICA SAN GIORGIO + ELSAG S.P.A. + VIA G. PUCCINI, 2 + 16154 GENOVA - ITALY + ITALY + +00-40-DF (hex) DIGALOG SYSTEMS, INC. +0040DF (base 16) DIGALOG SYSTEMS, INC. + 3180 SOUTH 166TH STREET + NEW BERLIN WI 53151 + UNITED STATES + +00-40-E0 (hex) ATOMWIDE LTD. +0040E0 (base 16) ATOMWIDE LTD. + 23 THE GREENWAY + ORPINGTON BR5 2AY + UNITED KINGDOM + UNITED KINGDOM + +00-40-E1 (hex) MARNER INTERNATIONAL, INC. +0040E1 (base 16) MARNER INTERNATIONAL, INC. + 1617 93RD LANE NE + BLAINE MN 55449 + UNITED STATES + +00-40-E2 (hex) MESA RIDGE TECHNOLOGIES, INC. +0040E2 (base 16) MESA RIDGE TECHNOLOGIES, INC. + 6725 MESA RIDGE ROAD-STE#100 + SAN DIEGO CA 92121 + UNITED STATES + +00-40-E3 (hex) QUIN SYSTEMS LTD +0040E3 (base 16) QUIN SYSTEMS LTD + OAKLANDS BUSINESS CENTRE + OAKLANDS PARK, WOKINGHAM BERKS RG11 2FD + UNITED KINGDOM + UNITED KINGDOM + +00-40-E4 (hex) E-M TECHNOLOGY, INC. +0040E4 (base 16) E-M TECHNOLOGY, INC. + 9245 SOUTHWEST NIMBUS AVE. + BEAVERTON OR 97005 + UNITED STATES + +00-40-E5 (hex) SYBUS CORPORATION +0040E5 (base 16) SYBUS CORPORATION + 2300 TALL PINE DRIVE-STE. #100 + LARGO FL 34641 + UNITED STATES + +00-40-E6 (hex) C.A.E.N. +0040E6 (base 16) C.A.E.N. + 2, CHEMIN LATERAL + F94290 VILLENEUVE LE ROI + FRANCE + FRANCE + +00-40-E7 (hex) ARNOS INSTRUMENTS & COMPUTER +0040E7 (base 16) ARNOS INSTRUMENTS & COMPUTER + SYSTEMS (GROUP) CO., LTD. + 4/F., EUREKA IND. BLDG., 1-17 SAI LAU KO + TSUEN WAN N.T. HONG KONG + HONG KONG + +00-40-E8 (hex) CHARLES RIVER DATA SYSTEMS,INC +0040E8 (base 16) CHARLES RIVER DATA SYSTEMS,INC + 983 CONCORD STREET + FRAMINGHAM MA 01701 + UNITED STATES + +00-40-E9 (hex) ACCORD SYSTEMS, INC. +0040E9 (base 16) ACCORD SYSTEMS, INC. + 572 VALLEY WAY + MILPITAS CA 95035 + UNITED STATES + +00-40-EA (hex) PLAIN TREE SYSTEMS INC +0040EA (base 16) PLAIN TREE SYSTEMS INC + CHIEF EXECTUVIE OFFICER + 59 IBER ROAD, STITTSVILLE ONTARIO K2S 1E + CANADA + CANADA + +00-40-EB (hex) MARTIN MARIETTA CORPORATION +0040EB (base 16) MARTIN MARIETTA CORPORATION + 12506 LAKE UNDERHILL + ORLANDO FL 32825 + UNITED STATES + +00-40-EC (hex) MIKASA SYSTEM ENGINEERING +0040EC (base 16) MIKASA SYSTEM ENGINEERING + CO., LTD. + 1-3-10, MINAMI-SHINMACHI, CHUO-KU, OSAKA + JAPAN + JAPAN + +00-40-ED (hex) NETWORK CONTROLS INT'NATL INC. +0040ED (base 16) NETWORK CONTROLS INT'NATL INC. + 9 WOODLAWN GREEN + CHARLOTTE NC 28217 + UNITED STATES + +00-40-EE (hex) OPTIMEM +0040EE (base 16) OPTIMEM + 297 N. BERNARDO AVENUE + MOUNTAIN VIEW CA 94043-5205 + UNITED STATES + +00-40-EF (hex) HYPERCOM, INC. +0040EF (base 16) HYPERCOM, INC. + 2851 WEST KATHLEEN ROAD + PHOENIX AZ 85023 + UNITED STATES + +00-40-F0 (hex) MICRO SYSTEMS, INC. +0040F0 (base 16) MICRO SYSTEMS, INC. + 69-52 NAGAKUDE KANIHARA, + NAGAKUT. CH. AICH-GUN AICHI-KEN 480-11 + JAPAN + JAPAN + +00-40-F1 (hex) CHUO ELECTRONICS CO., LTD. +0040F1 (base 16) CHUO ELECTRONICS CO., LTD. + 1-9-9, MOTOHONGO-CHO + HACHIOJI-SHI TOKYO 192 + JAPAN + JAPAN + +00-40-F2 (hex) JANICH & KLASS COMPUTERTECHNIK +0040F2 (base 16) JANICH & KLASS COMPUTERTECHNIK + ZUM ALTEN ZOLLHAUS 20 + W-5600 WUPPERTAL 2 + GERMANY + GERMANY + +00-40-F3 (hex) NETCOR +0040F3 (base 16) NETCOR + 850 AUBURN COURT + FREMONT CA 94538 + UNITED STATES + +00-40-F4 (hex) CAMEO COMMUNICATIONS, INC. +0040F4 (base 16) CAMEO COMMUNICATIONS, INC. + 71 SPITBROOK ROAD, STE #410 + NASHUA NH 030603 + UNITED STATES + +00-40-F5 (hex) OEM ENGINES +0040F5 (base 16) OEM ENGINES + 1190 DELL AVENUE, STE. + CAMPBELL CA 95008 + UNITED STATES + +00-40-F6 (hex) KATRON COMPUTERS INC. +0040F6 (base 16) KATRON COMPUTERS INC. + 4 FL. NO. 2, ALLEY 23 + LANE 91 SEC. 1 NEI HU ROAD + TAIPEI TAIPEI TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-40-F7 (hex) POLAROID MEDICAL IMAGING SYS. +0040F7 (base 16) POLAROID MEDICAL IMAGING SYS. + 300 Baker Avenue + Concord MA 01742 + UNITED STATES + +00-40-F8 (hex) SYSTEMHAUS DISCOM +0040F8 (base 16) SYSTEMHAUS DISCOM + DISTRIBUTED COMPUTING GMBH + ROERMONDERSTR. 615 D-5100 AACHEN + GERMANY + GERMANY + +00-40-F9 (hex) COMBINET +0040F9 (base 16) COMBINET + 333 W. EL CAMINO REAL-STE#310 + SUNNYVALE CA 94087 + UNITED STATES + +00-40-FA (hex) MICROBOARDS, INC. +0040FA (base 16) MICROBOARDS, INC. + 31-8, TAKASECHO,FUNABASHI-CITY + CHIBA 273 CHIBA 273 JAPAN + JAPAN + +00-40-FB (hex) CASCADE COMMUNICATIONS CORP. +0040FB (base 16) CASCADE COMMUNICATIONS CORP. + PRODUCTION QUALITY ENGINEER + 239 LITTLETON ROAD-UNIT 4A + WESTFORD MA 01886 + UNITED STATES + +00-40-FC (hex) IBR COMPUTER TECHNIK GMBH +0040FC (base 16) IBR COMPUTER TECHNIK GMBH + FRANKFURTER STR. 114 + D 6056 HEUSENSTAMM + WEST GERMANY + GERMANY + +00-40-FD (hex) LXE +0040FD (base 16) LXE + 303 RESEARCH DRIVE + NORCROSS GA 30092 + UNITED STATES + +00-40-FE (hex) SYMPLEX COMMUNICATIONS +0040FE (base 16) SYMPLEX COMMUNICATIONS + 5 RESEARCH DRIVE + ANN ARBOR MI 48103 + UNITED STATES + +00-40-FF (hex) TELEBIT CORPORATION +0040FF (base 16) TELEBIT CORPORATION + 1315 CHESAPEAKE TERRACE + SUNNYVALE CA 94089-1100 + UNITED STATES + +00-42-52 (hex) RLX Technologies +004252 (base 16) RLX Technologies + 25231 Grograns Mill Rd + Suite 600 + The Woodlands Tx 77380 + UNITED STATES + +00-45-01 (hex) Versus Technology, Inc. +004501 (base 16) Versus Technology, Inc. + 2600 Miller Creek Road + Traverse City MI 49684 + UNITED STATES + +00-50-00 (hex) NEXO COMMUNICATIONS, INC. +005000 (base 16) NEXO COMMUNICATIONS, INC. + 2ND FL., 160, MINGCHU ROAD + HSINCHU CITY + TAIWAN, REPUBLIC OF CHINA + +00-50-01 (hex) YAMASHITA SYSTEMS CORP. +005001 (base 16) YAMASHITA SYSTEMS CORP. + 5-7-12 IKEGAMI + OTA-KU TOKYO + JAPAN + +00-50-02 (hex) OMNISEC AG +005002 (base 16) OMNISEC AG + RIETSTRASSE 14 + CH-8108 DAELLIKON + SWITZERLAND + +00-50-03 (hex) GRETAG MACBETH AG +005003 (base 16) GRETAG MACBETH AG + ALTHARDSTRASSE 70 + CH-8105 REGENSDORF + SWITZERLAND + +00-50-04 (hex) 3COM CORPORATION +005004 (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + SANTA CLARA CA 95052 + UNITED STATES + +00-50-06 (hex) TAC AB +005006 (base 16) TAC AB + JAGERSHILLGATON 18 + 21375 MALMO + SWEDEN + +00-50-07 (hex) SIEMENS TELECOMMUNICATION SYSTEMS LIMITED +005007 (base 16) SIEMENS TELECOMMUNICATION SYSTEMS LIMITED + NO. 90, SEC. 1, CHIEN KUO NORTH ROAD + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-50-08 (hex) TIVA MICROCOMPUTER CORP. (TMC) +005008 (base 16) TIVA MICROCOMPUTER CORP. (TMC) + 48550 FREMONT BLVD. + FREMONT CA 94538 + UNITED STATES + +00-50-09 (hex) PHILIPS BROADBAND NETWORKS +005009 (base 16) PHILIPS BROADBAND NETWORKS + 64 PERIMETER CENTRE EAST + ATLANTA GA 30346 + UNITED STATES + +00-50-0A (hex) IRIS TECHNOLOGIES, INC. +00500A (base 16) IRIS TECHNOLOGIES, INC. + WESTMORELAND INDUSRIAL PARK + R.R. 12 BOX 36 + GREENSBURG PA 15601 + UNITED STATES + +00-50-0B (hex) CISCO SYSTEMS, INC. +00500B (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + M/S SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-0C (hex) e-Tek Labs, Inc. +00500C (base 16) e-Tek Labs, Inc. + 1057 EAST HENRIETTA RD. + ROCHESTER NY 14623 + UNITED STATES + +00-50-0D (hex) SATORI ELECTORIC CO., LTD. +00500D (base 16) SATORI ELECTORIC CO., LTD. + TIGUSADAI 38-8 MIDORI-KU + YOKOHAMA, KANAGAWA + JAPAN + +00-50-0E (hex) CHROMATIS NETWORKS, INC. +00500E (base 16) CHROMATIS NETWORKS, INC. + 3 BETHESDA METRO CENTER + BETHESDA MD 20814 + UNITED STATES + +00-50-0F (hex) CISCO SYSTEMS, INC. +00500F (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-10 (hex) NovaNET Learning, Inc. +005010 (base 16) NovaNET Learning, Inc. + 125 W. CHURCH STREET-STE. #300 + CHAMPAIGN IL 61820 + UNITED STATES + +00-50-12 (hex) CBL - GMBH +005012 (base 16) CBL - GMBH + DARMSTAEDTER STR. 81 + D-64839 MUENSTER + GERMANY + +00-50-13 (hex) Chaparral Network Storage +005013 (base 16) Chaparral Network Storage + 7420 E. Dry Creek Parkway + Longmont CO 80503 + UNITED STATES + +00-50-14 (hex) CISCO SYSTEMS, INC. +005014 (base 16) CISCO SYSTEMS, INC. + M/S/ SJA-2 + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-15 (hex) BRIGHT STAR ENGINEERING +005015 (base 16) BRIGHT STAR ENGINEERING + 19 ENFIELD DRIVE + ANDOVER MA 01810 + UNITED STATES + +00-50-16 (hex) SST/WOODHEAD INDUSTRIES +005016 (base 16) SST/WOODHEAD INDUSTRIES + 50 NORTHLAND ROAD + WATERLOO + ONTARIO N2V 1N3 + CANADA + +00-50-17 (hex) RSR S.R.L. +005017 (base 16) RSR S.R.L. + VIA SINIGAGLIA, 38 + LURATE CACCIVIO (CO) + 22075 ITALY + ITALY + +00-50-18 (hex) AMIT, Inc. +005018 (base 16) AMIT, Inc. + No.32, Huangong Rd., + Yongkang City, Tainan County 71041 + TAIWAN, REPUBLIC OF CHINA + +00-50-19 (hex) SPRING TIDE NETWORKS, INC. +005019 (base 16) SPRING TIDE NETWORKS, INC. + 85 SWANSON ROAD + BOXBOROUGH MA 01719 + UNITED STATES + +00-50-1A (hex) UISIQN +00501A (base 16) UISIQN + 20361 IRVINE AVENUE + SANTA ANA HEIGHTS CA 92707 + UNITED STATES + +00-50-1B (hex) ABL CANADA, INC. +00501B (base 16) ABL CANADA, INC. + 8550 COTE DE LIESSE + ST-LAURENT (QUEBEC) H4T 1H2 + CANADA + +00-50-1C (hex) JATOM SYSTEMS, INC. +00501C (base 16) JATOM SYSTEMS, INC. + 99 MICHAEL COWPLAND DRIVE + KANATA + ONTARIO, K2M 1X3 + CANADA + +00-50-1E (hex) Miranda Technologies, Inc. +00501E (base 16) Miranda Technologies, Inc. + 3499, Douglas B. Floreani + Sanit-Laurent, QC + H4S 2C6 + CANADA + +00-50-1F (hex) MRG SYSTEMS, LTD. +00501F (base 16) MRG SYSTEMS, LTD. + WILLOW HOUSE, SLAD ROAD + STROUD + GLOS. GL5 1QG England + UNITED KINGDOM + +00-50-20 (hex) MEDIASTAR CO., LTD. +005020 (base 16) MEDIASTAR CO., LTD. + 3FL, SOHUN BLDG. + 951-33 DOGOK-DONG, KANGNAM-KU SEOUL + KOREA + KOREA, REPUBLIC OF + +00-50-21 (hex) EIS INTERNATIONAL, INC. +005021 (base 16) EIS INTERNATIONAL, INC. + 1351 WASHINGTON BLVD. + STAMFORD CT 06902 + UNITED STATES + +00-50-22 (hex) ZONET TECHNOLOGY, INC. +005022 (base 16) ZONET TECHNOLOGY, INC. + 830 ROOM, BLDG. 53, 195, SEC.4 + CHUNG HSIUNG RD, CHUTUNG + HSINCHA + TAIWAN, REPUBLIC OF CHINA + +00-50-23 (hex) PG DESIGN ELECTRONICS, INC. +005023 (base 16) PG DESIGN ELECTRONICS, INC. + 48700 STRUCTURAL DRIVE + CHESTERFIELD MI 48051 + UNITED STATES + +00-50-24 (hex) NAVIC SYSTEMS, INC. +005024 (base 16) NAVIC SYSTEMS, INC. + 74 CRESCENT STREET + NEEDHAM MA + UNITED STATES + +00-50-26 (hex) COSYSTEMS, INC. +005026 (base 16) COSYSTEMS, INC. + 1263 OAKMEAD PARKWAY + SUNNYVALE CA 94086 + UNITED STATES + +00-50-27 (hex) GENICOM CORPORATION +005027 (base 16) GENICOM CORPORATION + 900 CLOPPER ROAD - STE. #110 + GAITHERSBURG MD 20878 + UNITED STATES + +00-50-28 (hex) AVAL COMMUNICATIONS +005028 (base 16) AVAL COMMUNICATIONS + 1777 NORTH CALIFORNIA BLVD. + WALNUT CREEK CA 94596 + UNITED STATES + +00-50-29 (hex) 1394 PRINTER WORKING GROUP +005029 (base 16) 1394 PRINTER WORKING GROUP + P.O. BOX 23158 + SAN JOSE CA 95153 + UNITED STATES + +00-50-2A (hex) CISCO SYSTEMS, INC. +00502A (base 16) CISCO SYSTEMS, INC. + M/S SJA-2 + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-2B (hex) GENRAD LTD. +00502B (base 16) GENRAD LTD. + ORION BUSINESS PARK + BIRDHALL LANE STOCKPORT, CHESHIRE + UNITED KINGDOM SK3 OXG + UNITED KINGDOM + +00-50-2C (hex) SOYO COMPUTER, INC. +00502C (base 16) SOYO COMPUTER, INC. + NO. 21 WU-KUNG 5 RD. + HSING CHUANG CITY TAIPEI HSIEN + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-50-2D (hex) ACCEL, INC. +00502D (base 16) ACCEL, INC. + 1F, NO. 7, R&D 1ST ROAD + SCIENCE-BASED INDUSTRIAL PARK + HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-50-2E (hex) CAMBEX CORPORATION +00502E (base 16) CAMBEX CORPORATION + 115 Flanders Road + Westborough MA 01581 + UNITED STATES + +00-50-2F (hex) TollBridge Technologies, Inc. +00502F (base 16) TollBridge Technologies, Inc. + 872 HERMOSA DRIVE + SUNNYVALE CA 94086 + UNITED STATES + +00-50-30 (hex) FUTURE PLUS SYSTEMS +005030 (base 16) FUTURE PLUS SYSTEMS + 36 OLDE ENGLISH RD. + BEDFORD NH 03110 + UNITED STATES + +00-50-31 (hex) AEROFLEX LABORATORIES, INC. +005031 (base 16) AEROFLEX LABORATORIES, INC. + 35 SOUTH SERVICE ROAD + PLAINVIEW NY 11803 + UNITED STATES + +00-50-32 (hex) PICAZO COMMUNICATIONS, INC. +005032 (base 16) PICAZO COMMUNICATIONS, INC. + 61 DAGGETT DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-50-33 (hex) MAYAN NETWORKS +005033 (base 16) MAYAN NETWORKS + 3350 SCOTT BLVD. - BLDG. #9 + SANTA CLARA CA 95054 + UNITED STATES + +00-50-36 (hex) NETCAM, LTD. +005036 (base 16) NETCAM, LTD. + 6071 N. PASEO ZALDIVAR + TUCSON AZ 85750 + UNITED STATES + +00-50-37 (hex) KOGA ELECTRONICS CO. +005037 (base 16) KOGA ELECTRONICS CO. + 5-8-10, TEHARA, RITTO-CHO + KURITA GUN + SHIGA, 420-3047 + JAPAN + +00-50-38 (hex) DAIN TELECOM CO., LTD. +005038 (base 16) DAIN TELECOM CO., LTD. + 2ND Flr., OH-SUNG BLDG. #2-28 + YANGJAE-DONG, SEOCHO-GU SEOUL + KOREA, REPUBLIC OF + +00-50-39 (hex) MARINER NETWORKS +005039 (base 16) MARINER NETWORKS + 1585 S. MANCHESTER AVE. + ANAHEIM CA 92802-2907 + UNITED STATES + +00-50-3A (hex) DATONG ELECTRONICS LTD. +00503A (base 16) DATONG ELECTRONICS LTD. + CLAYTON WOOD CLOSE + WEST PARK + Leeds LS16 6QE + UNITED KINGDOM + +00-50-3B (hex) MEDIAFIRE CORPORATION +00503B (base 16) MEDIAFIRE CORPORATION + 11317 FREDERICK AVENUE + BELTSVILLE MD 20705 + UNITED STATES + +00-50-3C (hex) TSINGHUA NOVEL ELECTRONICS +00503C (base 16) TSINGHUA NOVEL ELECTRONICS + CO., LTD. + ROOM 1205, HUAYE BUILDING TSINGHUA UNIVE + 100084 100084 CHINA + CHINA + +00-50-3E (hex) CISCO SYSTEMS, INC. +00503E (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + M/S/ SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-3F (hex) ANCHOR GAMES +00503F (base 16) ANCHOR GAMES + 815 PILOT ROAD, Suite G + LAS VEGAS NV 89119 + UNITED STATES + +00-50-40 (hex) Matsushita Electric Works, Ltd. +005040 (base 16) Matsushita Electric Works, Ltd. + 1668, Fujikata + Tsu-shi Mie-ken 514-8555 + JAPAN + +00-50-41 (hex) Coretronic Corporation +005041 (base 16) Coretronic Corporation + NO.11, LI HSIN RD. + SCIENCE-BASED INDUSTRIAL PARK HISNCHU + TAIWAN, REPUBLIC OF CHINA + +00-50-42 (hex) SCI MANUFACTURING SINGAPORE PTE, LTD. +005042 (base 16) SCI MANUFACTURING SINGAPORE PTE, LTD. + 3 DEPOT CLOSE + SINGAPORE 109840 + SINGAPORE + +00-50-43 (hex) MARVELL SEMICONDUCTOR, INC. +005043 (base 16) MARVELL SEMICONDUCTOR, INC. + 645 ALMANOR AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-50-44 (hex) ASACA CORPORATION +005044 (base 16) ASACA CORPORATION + 420 CORPORATE CIRCLE, Unit H + GOLDEN CO 80401 + UNITED STATES + +00-50-45 (hex) RIOWORKS SOLUTIONS, INC. +005045 (base 16) RIOWORKS SOLUTIONS, INC. + 4F, NO.28, LANE 583 + JUI-KWANG ROAD TAIPEI, 11457 + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-50-46 (hex) MENICX INTERNATIONAL CO., LTD. +005046 (base 16) MENICX INTERNATIONAL CO., LTD. + NO.9, MING TSUN ROAD + CHUTUNG, HSINCHU + TAIWAN 310 TAIWAN 310 R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-50-47 (hex) PRIVATE +005047 (base 16) + +00-50-48 (hex) INFOLIBRIA +005048 (base 16) INFOLIBRIA + 411 WAVERLY OAKS RD-STE #323 + WALTHAM MA 02154-8414 + UNITED STATES + +00-50-49 (hex) ELLACOYA NETWORKS, INC. +005049 (base 16) ELLACOYA NETWORKS, INC. + 486 AMHERST STREET + NASHUA NH 03063 + UNITED STATES + +00-50-4A (hex) ELTECO A.S. +00504A (base 16) ELTECO A.S. + ROSINSKA CESTA P.O. BOX C-9 + 01001 ZILINA + SLOVAKIA + SLOVAKIA + +00-50-4B (hex) BARCONET N.V. +00504B (base 16) BARCONET N.V. + LUIPAARDSTRAAT 12 + 8500 KORTRIJK + BELGIUM + BELGIUM + +00-50-4C (hex) Galil Motion Control +00504C (base 16) Galil Motion Control + 270 Technology Way + Rocklin CA 95765 + UNITED STATES + +00-50-4D (hex) Tokyo Electron Device Limited +00504D (base 16) Tokyo Electron Device Limited + 1, Higashikata-machi, Tsuzuki-ku, + Yokohama-shi Kanagawa-ken + JAPAN + +00-50-4E (hex) SIERRA MONITOR CORP. +00504E (base 16) SIERRA MONITOR CORP. + 1991 TAROB COURT + MILPITAS CA 95035 + UNITED STATES + +00-50-4F (hex) OLENCOM ELECTRONICS +00504F (base 16) OLENCOM ELECTRONICS + SOLTAM INDUSTRIAL PARK + P.O. BOX 196 + YOKNEAM 20692 + ISRAEL + +00-50-50 (hex) CISCO SYSTEMS, INC. +005050 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE- SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-51 (hex) IWATSU ELECTRIC CO., LTD. +005051 (base 16) IWATSU ELECTRIC CO., LTD. + 7-41, KUGAYAMA 1-CHOME + SUGINAMI-KU, TOKYO 168-8501 + JAPAN + +00-50-52 (hex) TIARA NETWORKS, INC. +005052 (base 16) TIARA NETWORKS, INC. + 113 FOORIER AVENUE + FREMONT CA 94539 + UNITED STATES + +00-50-53 (hex) CISCO SYSTEMS, INC. +005053 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE-SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-54 (hex) CISCO SYSTEMS, INC. +005054 (base 16) CISCO SYSTEMS, INC. + M/S SJA-2 + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-55 (hex) DOMS A/S +005055 (base 16) DOMS A/S + FORMERVANGEN 28 + DK-2600 GLOSTRUP + DENMARK + DENMARK + +00-50-56 (hex) VMWare, Inc. +005056 (base 16) VMWare, Inc. + 44 ENCINA AVENUE + PALO ALTO CA 94301 + UNITED STATES + +00-50-57 (hex) BROADBAND ACCESS SYSTEMS +005057 (base 16) BROADBAND ACCESS SYSTEMS + 201 FOREST STREET + MARLBOROUGH MA 01752 + UNITED STATES + +00-50-58 (hex) VegaStream Group Limted +005058 (base 16) VegaStream Group Limted + 5 The Western Centre + Western Road + Bracknell Berkshire RG12 1RW + UNITED KINGDOM + +00-50-59 (hex) iBAHN +005059 (base 16) iBAHN + 10757 S. River Front Parkway + Suite 300 + South Jordan UT 84095 + UNITED STATES + +00-50-5A (hex) NETWORK ALCHEMY, INC. +00505A (base 16) NETWORK ALCHEMY, INC. + 1521.5 PACIFIC AVENUE + SANTA CRUZ CA 95060 + UNITED STATES + +00-50-5B (hex) KAWASAKI LSI U.S.A., INC. +00505B (base 16) KAWASAKI LSI U.S.A., INC. + 2570 NORTHFIRST STREET + SUITE #301 + SAN JOSE CA 95131 + UNITED STATES + +00-50-5C (hex) TUNDO CORPORATION +00505C (base 16) TUNDO CORPORATION + 7 GIBOREI ISRAEL STREET + NATANYA 42504 + ISRAEL + +00-50-5E (hex) DIGITEK MICROLOGIC S.A. +00505E (base 16) DIGITEK MICROLOGIC S.A. + SANT JOAN DE LA SALLE 6 + E08022 BARCELONA + SPAIN + SPAIN + +00-50-5F (hex) BRAND INNOVATORS +00505F (base 16) BRAND INNOVATORS + DE PINCK ART 54 + 5674 CC NUENEN + NETHERLANDS + +00-50-60 (hex) TANDBERG TELECOM AS +005060 (base 16) TANDBERG TELECOM AS + Philip Pedersens vei 20 + 1361 Lysaker + NORWAY + +00-50-62 (hex) KOUWELL ELECTRONICS CORP. ** +005062 (base 16) KOUWELL ELECTRONICS CORP. ** + 7F, NO.99, NAN-KANG ROAD + SEC. 3, TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-50-63 (hex) OY COMSEL SYSTEM AB +005063 (base 16) OY COMSEL SYSTEM AB + STORALANGGATAN 28-30 + FIN-65100 VASA + FINLAND + +00-50-64 (hex) CAE ELECTRONICS +005064 (base 16) CAE ELECTRONICS + P.O. BOX 1800 + ST. LAURENT, QUEBEC H4L 4X4 + CANADA + +00-50-65 (hex) DENSEI-LAMBAD Co., Ltd. +005065 (base 16) DENSEI-LAMBAD Co., Ltd. + 36-1 Kasuminosato + Ami-Machi Inashiki-Gun Ibaraki, 300-0396 + JAPAN + JAPAN + +00-50-66 (hex) AtecoM GmbH advanced telecomunication modules +005066 (base 16) AtecoM GmbH advanced telecomunication modules + KAISERSTR. 100 + D-52134 HERZOGENRATH + GERMANY + +00-50-67 (hex) AEROCOMM, INC. +005067 (base 16) AEROCOMM, INC. + 13256 W. 98TH STREET + LENEXA KS 66215 + UNITED STATES + +00-50-68 (hex) ELECTRONIC INDUSTRIES ASSOCIATION +005068 (base 16) ELECTRONIC INDUSTRIES ASSOCIATION + 2500 WILSON BLVD. + ARLINGTON VA 22201 + UNITED STATES + +00-50-69 (hex) PixStream Incorporated +005069 (base 16) PixStream Incorporated + 180 COLUMBIA ST. W. + WATERLOO + Ontario N2L 3L3 + CANADA + +00-50-6A (hex) EDEVA, INC. +00506A (base 16) EDEVA, INC. + 298 S. SUNNYVALE AVE. - #208 + SUNNYVALE CA 94086 + UNITED STATES + +00-50-6B (hex) SPX-ATEG +00506B (base 16) SPX-ATEG + 802 S. MAIN STREET + WAYLAND MI 49348 + UNITED STATES + +00-50-6C (hex) G & L BEIJER ELECTRONICS AB +00506C (base 16) G & L BEIJER ELECTRONICS AB + BOX 325, + SE-201 23 Malmoe + SWEDEN + +00-50-6D (hex) VIDEOJET SYSTEMS +00506D (base 16) VIDEOJET SYSTEMS + INTERNATIONAL INC. + 1500 MITTEL BLVD. + WOODDALE IL 60091-1073 + UNITED STATES + +00-50-6E (hex) CORDER ENGINEERING CORPORATION +00506E (base 16) CORDER ENGINEERING CORPORATION + 151 KALMUS DRIVE - STE #A103 + COSTA MESA CA 92626 + UNITED STATES + +00-50-6F (hex) G-CONNECT +00506F (base 16) G-CONNECT + P.O. BOX 2200 + HERZLIYA 46120 + ISRAEL + +00-50-70 (hex) CHAINTECH COMPUTER CO., LTD. +005070 (base 16) CHAINTECH COMPUTER CO., LTD. + 5TH F, ALLEY 2, LANE 222 + LIEN-CHENG RD., CHUNG-HO TAIPEI-HSIEN + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-50-71 (hex) AIWA CO., LTD. +005071 (base 16) AIWA CO., LTD. + 1-11, KAMITOMATSURI 4-CHOME + UTSUNOMIYA-SHI, TOCHIGI-KEN 320-85 + JAPAN + +00-50-72 (hex) CORVIS CORPORATION +005072 (base 16) CORVIS CORPORATION + 8320 GUILFORD ROAD + COLUMBIA MD 21046 + UNITED STATES + +00-50-73 (hex) CISCO SYSTEMS, INC. +005073 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + M/S SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-74 (hex) ADVANCED HI-TECH CORP. +005074 (base 16) ADVANCED HI-TECH CORP. + 1990 EAST GRAND AVE. + EL SEGUNDO CA 90505 + UNITED STATES + +00-50-75 (hex) KESTREL SOLUTIONS +005075 (base 16) KESTREL SOLUTIONS + 2370 CHARLESTON ROAD + MT. VIEW CA 94043 + UNITED STATES + +00-50-76 (hex) IBM +005076 (base 16) IBM + 3605 HIGHWAY 52 N. + MS: 49C + ROCHESTER MN 55901-7829 + UNITED STATES + +00-50-77 (hex) PROLIFIC TECHNOLOGY, INC. +005077 (base 16) PROLIFIC TECHNOLOGY, INC. + 6F 1, LANE 51, SEC 1 + NAN-CHAN ROAD TAIPEI + 100 + TAIWAN, REPUBLIC OF CHINA + +00-50-78 (hex) MEGATON HOUSE, LTD. +005078 (base 16) MEGATON HOUSE, LTD. + ZIP: 224 NO.1-3-5 NAKAMACHIBAI + TSUDUKI WARD + YOKOHAMA + JAPAN + +00-50-79 (hex) PRIVATE +005079 (base 16) + +00-50-7A (hex) XPEED, INC. +00507A (base 16) XPEED, INC. + 4699 OLD IRONSIDES DRIVE + SUITE #300 + SANTA CLARA CA 95054 + UNITED STATES + +00-50-7B (hex) MERLOT COMMUNICATIONS +00507B (base 16) MERLOT COMMUNICATIONS + BERKSHIRE CORPORATE PARK + 4 BERKSHIRE BLVD. + BETHEL CT 06801 + UNITED STATES + +00-50-7C (hex) VIDEOCON AG +00507C (base 16) VIDEOCON AG + ALBERT-SCHWEITZER-STR. 64 + D-81735 MUNICH + GERMANY + GERMANY + +00-50-7D (hex) IFP +00507D (base 16) IFP + LESSINGSTR. 4 + D-78315 RADOLFZELL + GERMANY + +00-50-7E (hex) NEWER TECHNOLOGY +00507E (base 16) NEWER TECHNOLOGY + 4848 WEST IRVING ST. + WICHITA KS 67209-2621 + UNITED STATES + +00-50-7F (hex) DrayTek Corp. +00507F (base 16) DrayTek Corp. + 26, Fushing Rd. + Hsinchu Industrial Park + Hsinchu Hukou 303 + TAIWAN, REPUBLIC OF CHINA + +00-50-80 (hex) CISCO SYSTEMS, INC. +005080 (base 16) CISCO SYSTEMS, INC. + M/S SJA-2 + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-81 (hex) MURATA MACHINERY, LTD. +005081 (base 16) MURATA MACHINERY, LTD. + 136, TAKEDA-MUKAISHIRO-CHO + FUSHIMI-KU, KYOTO 612-8686 + JAPAN + +00-50-82 (hex) FORESSON CORPORATION +005082 (base 16) FORESSON CORPORATION + 3F, NO.9 SEC.1 + CHANG AN EAST ROAD + TAIPEI 10404 + TAIWAN, REPUBLIC OF CHINA + +00-50-83 (hex) GILBARCO, INC. +005083 (base 16) GILBARCO, INC. + POB 22087 + GREENSBORO NC 27420 + UNITED STATES + +00-50-84 (hex) ATL PRODUCTS +005084 (base 16) ATL PRODUCTS + 2801 KELVIN AVENUE + IRVINE CA 92614-5872 + UNITED STATES + +00-50-86 (hex) TELKOM SA, LTD. +005086 (base 16) TELKOM SA, LTD. + TELKOM LABORATORY + P. BAG X74 + PRETORIA + SOUTH AFRICA + +00-50-87 (hex) TERASAKI ELECTRIC CO., LTD. +005087 (base 16) TERASAKI ELECTRIC CO., LTD. + 7-2-10 HANNAN-CHO ABENO-KU + OSAKA, 545-0021 + JAPAN + +00-50-88 (hex) AMANO CORPORATION +005088 (base 16) AMANO CORPORATION + 275, MAMEDO-CHO + KOUHOKU-KU, YOKOHAMA + 222-8558 + JAPAN + +00-50-89 (hex) SAFETY MANAGEMENT SYSTEMS +005089 (base 16) SAFETY MANAGEMENT SYSTEMS + BRANDERIJSTRAAT 6 + 5223 AS 'S-HERTOGENBOSCH' NETHERLANDS + NETHERLANDS + +00-50-8B (hex) COMPAQ COMPUTER CORPORATION +00508B (base 16) COMPAQ COMPUTER CORPORATION + 20555 S.H. 249 + HOUSTON TX 77070 + UNITED STATES + +00-50-8C (hex) RSI SYSTEMS +00508C (base 16) RSI SYSTEMS + 5555 W. 78TH STREET, Suite F + EDINA MN 55439 + UNITED STATES + +00-50-8D (hex) ABIT COMPUTER CORPORATION +00508D (base 16) ABIT COMPUTER CORPORATION + 3F-7, NO. 79, SEC.1 + HSIN TAI WU ROAD, HSI CHI + TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-50-8E (hex) OPTIMATION, INC. +00508E (base 16) OPTIMATION, INC. + P.O. BOX 14357 + HUNTSVILLE AL 35815 + UNITED STATES + +00-50-8F (hex) ASITA TECHNOLOGIES INT'L LTD. +00508F (base 16) ASITA TECHNOLOGIES INT'L LTD. + UNIT 2 BALLYBRIT BUSINESS PARK + GALWAY + IRELAND + +00-50-90 (hex) DCTRI +005090 (base 16) DCTRI + NO.40 XUE YUAN RD + HAIDIAN DISTRICT BEIJING, 100083, P.R. + CHINA + CHINA + +00-50-91 (hex) NETACCESS, INC. +005091 (base 16) NETACCESS, INC. + 18 KEEWAYDIN DRIVE + SALEM NH 03079 + UNITED STATES + +00-50-92 (hex) RIGAKU INDUSTRIAL CORPORATION +005092 (base 16) RIGAKU INDUSTRIAL CORPORATION + 14-8 AKAOJI-CHO + TAKATSUKI-SHI, OSAKA 569-1146 + JAPAN + +00-50-93 (hex) BOEING +005093 (base 16) BOEING + 3370 Miraloma Avenue + Anaheim CA 92803-3105 + UNITED STATES + +00-50-94 (hex) PACE MICRO TECHNOLOGY PLC +005094 (base 16) PACE MICRO TECHNOLOGY PLC + VICTORIA RD, SALTAIRE + SHIPLEY, W. YORKSHIRE BRADFORD BD28 3LF + ENGLAND + UNITED KINGDOM + +00-50-95 (hex) PERACOM NETWORKS +005095 (base 16) PERACOM NETWORKS + 13000 WESTON PARKWAY + SUITE #105 + CARY NC 27513 + UNITED STATES + +00-50-96 (hex) SALIX TECHNOLOGIES, INC. +005096 (base 16) SALIX TECHNOLOGIES, INC. + 904 WIND RIVER LANE- STE. #101 + GAITHERSBURG MD 20878 + UNITED STATES + +00-50-97 (hex) MMC-EMBEDDED COMPUTERTECHNIK GmbH +005097 (base 16) MMC-EMBEDDED COMPUTERTECHNIK GmbH + ULRICHSBERGERSTR. 17 + D-94469 DEGGENDORF + GERMANY + +00-50-98 (hex) GLOBALOOP, LTD. +005098 (base 16) GLOBALOOP, LTD. + 12 HASHARON ROAD + KFAR SABA 44269 + ISRAEL + +00-50-99 (hex) 3COM EUROPE, LTD. +005099 (base 16) 3COM EUROPE, LTD. + BOUNDARY WAY + HEMEL HEMPSTEAD + HERTS. HP2 7YU + UNITED KINGDOM + +00-50-9A (hex) TAG ELECTRONIC SYSTEMS +00509A (base 16) TAG ELECTRONIC SYSTEMS + GENESIS BUSINESS PARK + Albert Drive + WOKING, SURREY GU21 5RW + UNITED KINGDOM + +00-50-9B (hex) SWITCHCORE AB +00509B (base 16) SWITCHCORE AB + POSITIONEN 153 + 115 74 STOCKHOLM + SWEDEN + SWEDEN + +00-50-9C (hex) BETA RESEARCH +00509C (base 16) BETA RESEARCH + BETASTR. 1 + 85774 UNTERFOEHRING + GERMANY + +00-50-9D (hex) THE INDUSTREE B.V. +00509D (base 16) THE INDUSTREE B.V. + P.O. BOX 462 + 5600 AL EINDHOVEN + THE NETHERLANDS + NETHERLANDS + +00-50-9E (hex) Les Technologies SoftAcoustik Inc. +00509E (base 16) Les Technologies SoftAcoustik Inc. + + 390, RUE SAINT-VALLIER EST, 4th floor + Quebec G1K 3P6 + CANADA + +00-50-9F (hex) HORIZON COMPUTER +00509F (base 16) HORIZON COMPUTER + TRINITY BLDG. 4-22-7 + NISHI-AZABU, MINATO-KU + TOKYO 106 + JAPAN + +00-50-A0 (hex) DELTA COMPUTER SYSTEMS, INC. +0050A0 (base 16) DELTA COMPUTER SYSTEMS, INC. + 11719 NE 95TH STREET - STE. + VANCOUVER WA 98682-2444 + UNITED STATES + +00-50-A1 (hex) CARLO GAVAZZI, INC. +0050A1 (base 16) CARLO GAVAZZI, INC. + 222 PENNBRIGHT DR. - STE.#210 + HOUSTON TX 77090 + UNITED STATES + +00-50-A2 (hex) CISCO SYSTEMS, INC. +0050A2 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-A3 (hex) TransMedia Communications, Inc. +0050A3 (base 16) TransMedia Communications, Inc. + 20 GREAT OAKS BLVD., #210 + SAN JOSE CA 95119 + UNITED STATES + +00-50-A4 (hex) IO TECH, INC. +0050A4 (base 16) IO TECH, INC. + 25971 CANNON ROAD + CLEVELAND OH 44146 + UNITED STATES + +00-50-A5 (hex) CAPITOL BUSINESS SYSTEMS, LTD. +0050A5 (base 16) CAPITOL BUSINESS SYSTEMS, LTD. + 43/44 RIVERSIDE + SIR THOMAS LONGLEY ROAD + ROCHESTER, KENT England ME2 4DP + UNITED KINGDOM + +00-50-A6 (hex) OPTRONICS +0050A6 (base 16) OPTRONICS + 175 CREMONA DRIVE + GOLETA CA 93117 + UNITED STATES + +00-50-A7 (hex) CISCO SYSTEMS, INC. +0050A7 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + M/S SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-A8 (hex) OpenCon Systems, Inc. +0050A8 (base 16) OpenCon Systems, Inc. + 377 HOES LANE + PISCATAWAY NJ 08854 + UNITED STATES + +00-50-A9 (hex) MOLDAT WIRELESS TECHNOLGIES +0050A9 (base 16) MOLDAT WIRELESS TECHNOLGIES + 3 SHIMON ISRAELI STREET + RISHON LE ZION 75654 + ISRAEL + ISRAEL + +00-50-AA (hex) KONICA MINOLTA HOLDINGS, INC. +0050AA (base 16) KONICA MINOLTA HOLDINGS, INC. + 1-6-1, Marunouchi, + Chiyoda-ku + Tokyo 100-0005 + JAPAN + +00-50-AB (hex) NALTEC, Inc. +0050AB (base 16) NALTEC, Inc. + 1-1-15, Nakanogo, Shimizu-ku + Shizuoka-shi Shizuoka 424-0888 + JAPAN + +00-50-AC (hex) MAPLE COMPUTER CORPORATION +0050AC (base 16) MAPLE COMPUTER CORPORATION + 2F, NO. 184, SEC. 2 + CHANG-AN E. RD. + Taipei + TAJIKISTAN + +00-50-AD (hex) CommUnique Wireless Corp. +0050AD (base 16) CommUnique Wireless Corp. + 1070 MARINA VILLAGE PARKWAY + SUITE #206 + ALAMEDA CA 94501 + UNITED STATES + +00-50-AE (hex) IWAKI ELECTRONICS CO., LTD. +0050AE (base 16) IWAKI ELECTRONICS CO., LTD. + 1, KAMANOMAE + JOBAN-KAMIYUNAGAYA-MACHI + IWAKI-CITY, FUKUSHIMA 972-8322 972-8322 + JAPAN + +00-50-AF (hex) INTERGON, INC. +0050AF (base 16) INTERGON, INC. + 5800 RANCHESTER DRIVE + HOUSTON TX 77036 + UNITED STATES + +00-50-B0 (hex) TECHNOLOGY ATLANTA CORPORATION +0050B0 (base 16) TECHNOLOGY ATLANTA CORPORATION + 500 Sugar Mill Road + Suite 202A + Atlanta GA 30350 + UNITED STATES + +00-50-B1 (hex) GIDDINGS & LEWIS +0050B1 (base 16) GIDDINGS & LEWIS + 660 S. MILITARY RD. + FOND DU LAC WI 54935 + UNITED STATES + +00-50-B2 (hex) BRODEL AUTOMATION +0050B2 (base 16) BRODEL AUTOMATION + Distelbusch 24 + 42549 Velbert + GERMANY + +00-50-B3 (hex) VOICEBOARD CORPORATION +0050B3 (base 16) VOICEBOARD CORPORATION + 3151 WEST FIFTH STREET + OXNARD CA 93030 + UNITED STATES + +00-50-B4 (hex) SATCHWELL CONTROL SYSTEMS, LTD +0050B4 (base 16) SATCHWELL CONTROL SYSTEMS, LTD + P.O. BOX 57, 94 FARNHAM ROAD + SLOUGH, + BERKSHIRE SL1 4UH + UNITED KINGDOM + +00-50-B5 (hex) FICHET-BAUCHE +0050B5 (base 16) FICHET-BAUCHE + 15-17 AVE. MORANE-SAULNIER + 78140 VELIZY + FRANCE + FRANCE + +00-50-B6 (hex) GOOD WAY IND. CO., LTD. +0050B6 (base 16) GOOD WAY IND. CO., LTD. + 5F, NO.8, ALLEY 6, + LANE 45 PAO-HSIN RD.-HSIN TIEN TAIPEI HS + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-50-B7 (hex) BOSER TECHNOLOGY CO., LTD. +0050B7 (base 16) BOSER TECHNOLOGY CO., LTD. + 15F-6, 77 HSIN TAI WU ROAD + SEC. 1, HSI-CHI + TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-50-B8 (hex) INOVA COMPUTERS GMBH & CO. KG +0050B8 (base 16) INOVA COMPUTERS GMBH & CO. KG + SUDETENSTRASSE 5 + 87600 KAUFBEUREN + GERMANY + +00-50-B9 (hex) XITRON TECHNOLOGIES, INC. +0050B9 (base 16) XITRON TECHNOLOGIES, INC. + 6295-D FERRIS SQUARE + SAN DIEGO CA 92121 + UNITED STATES + +00-50-BA (hex) D-LINK +0050BA (base 16) D-LINK + 2F, NO. 233L-2, PAO-CHIAO RD. + Hsin-Tien 231 + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-50-BB (hex) CMS TECHNOLOGIES +0050BB (base 16) CMS TECHNOLOGIES + 13955 FARMINGTON RAOD + LIVONIA MI 48154 + UNITED STATES + +00-50-BC (hex) HAMMER STORAGE SOLUTIONS +0050BC (base 16) HAMMER STORAGE SOLUTIONS + 8450 CENTRAL AVENUE + NEWARK CA 94560 + UNITED STATES + +00-50-BD (hex) CISCO SYSTEMS, INC. +0050BD (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-BE (hex) FAST MULTIMEDIA AG +0050BE (base 16) FAST MULTIMEDIA AG + RUEDESHEIMERSTR. 11-13 + 80686 MUNICH + GERMANY + +00-50-BF (hex) MOTOTECH INC. +0050BF (base 16) MOTOTECH INC. + NO.9, PARK AVENUE II + SCIENCE-BASE INDUSTRIAL PARK + HSIN-CHU + TAIWAN, REPUBLIC OF CHINA + +00-50-C0 (hex) GATAN, INC. +0050C0 (base 16) GATAN, INC. + 5933 CORONADO LANE + PLEASANTON CA 94588 + UNITED STATES + +00-50-C1 (hex) GEMFLEX NETWORKS, LTD. +0050C1 (base 16) GEMFLEX NETWORKS, LTD. + 230-6651 FRASERWOOD PL. + RICHMOND, B.C. + CANADA V6W 1J3 + CANADA + +00-50-C2 (hex) IEEE REGISTRATION AUTHORITY +0050C2 (base 16) IEEE REGISTRATION AUTHORITY + 445 HOES LANE + PISCATAWAY NJ 08854 + UNITED STATES + +00-50-C4 (hex) IMD +0050C4 (base 16) IMD + HERBSTRASSE 8 + D-82178 PUCHHEIM + GERMANY + +00-50-C5 (hex) ADS Technologies, Inc +0050C5 (base 16) ADS Technologies, Inc + 12627 Hiddencreek Way + Cerritos CA 90703 + UNITED STATES + +00-50-C6 (hex) LOOP TELECOMMUNICATION INTERNATIONAL, INC. +0050C6 (base 16) LOOP TELECOMMUNICATION INTERNATIONAL, INC. + 2F, NO. 22, PROSPERITY RD. 2 + Science-Based Industrial Park + HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-50-C8 (hex) ADDONICS COMMUNICATIONS, INC. +0050C8 (base 16) ADDONICS COMMUNICATIONS, INC. + 48434 MILMONT DRIVE + FREMONT CA 94538 + UNITED STATES + +00-50-C9 (hex) MASPRO DENKOH CORP. +0050C9 (base 16) MASPRO DENKOH CORP. + ASADA NISSHIN AICHI + 470-0194 + JAPAN + +00-50-CA (hex) NET TO NET TECHNOLOGIES +0050CA (base 16) NET TO NET TECHNOLOGIES + 680 CENTRAL AVENUE - STE. #301 + DOVER NH 03820 + UNITED STATES + +00-50-CB (hex) JETTER +0050CB (base 16) JETTER + GRAETERSTRASSE 2 + D71642 LUDWIGSBURG + GERMANY + +00-50-CC (hex) XYRATEX +0050CC (base 16) XYRATEX + MAIL POINT: 26/13; DEPT: STORAGE SYSTEM + Langstone Road + Havant PO9 1SA + UNITED KINGDOM + +00-50-CD (hex) DIGIANSWER A/S +0050CD (base 16) DIGIANSWER A/S + SKALHUSE 5 + 9240 NIBE + DENMARK + +00-50-CE (hex) LG INTERNATIONAL CORP. +0050CE (base 16) LG INTERNATIONAL CORP. + LG TWIN TOWERS + 20 YOIDO-DONG, YOUNGDUNGPO-GU + SEOUL, 150-606 + KOREA, REPUBLIC OF + +00-50-CF (hex) VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE +0050CF (base 16) VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE + 210 YADI OFFICE BUILDING + NO. 48 BEI SAN Huan Zhong Lu + BEIJING 100088 + CHINA + +00-50-D0 (hex) MINERVA SYSTEMS +0050D0 (base 16) MINERVA SYSTEMS + 1585 CHARLESTON ROAD + MOUNTAIN VIEW CA 84943 + UNITED STATES + +00-50-D1 (hex) CISCO SYSTEMS, INC. +0050D1 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + M/S SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-D2 (hex) CMC Electronics Inc +0050D2 (base 16) CMC Electronics Inc + 600 Dr.Frederik-Philips Blvd + Montreal QC H4M 2S9 + CANADA + +00-50-D3 (hex) DIGITAL AUDIO PROCESSING PTY. LTD. +0050D3 (base 16) DIGITAL AUDIO PROCESSING PTY. LTD. + PO BOX 40 + CONCORD WEST + NSW 2138 + AUSTRALIA + +00-50-D4 (hex) JOOHONG INFORMATION & +0050D4 (base 16) JOOHONG INFORMATION & + COMMUNICATIONS, LTD. + JUNGNAM B/D, 721-39 YEOKSAM-DONG, KANGNA + SEOUL SEOUL KOREA + KOREA, REPUBLIC OF + +00-50-D5 (hex) AD SYSTEMS CORP. +0050D5 (base 16) AD SYSTEMS CORP. + 1-4-1, NAKACHO, MUSASHINO CITY + TOKYO 180-0006 + JAPAN + +00-50-D6 (hex) ATLAS COPCO TOOLS AB +0050D6 (base 16) ATLAS COPCO TOOLS AB + + S-105 23 STOCKHOLM + SWEDEN + +00-50-D7 (hex) TELSTRAT +0050D7 (base 16) TELSTRAT + 3600 AVENUE + PLANO TX 75074 + UNITED STATES + +00-50-D8 (hex) UNICORN COMPUTER CORP. +0050D8 (base 16) UNICORN COMPUTER CORP. + 7 FL., NO. 96 KWANG FU NORTH ROAD + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-50-D9 (hex) ENGETRON-ENGENHARIA ELETRONICA IND. e COM. LTDA +0050D9 (base 16) ENGETRON-ENGENHARIA ELETRONICA IND. e COM. LTDA + VIA SOCRATES M. BITTENCOURT, 1099 + 32010-010 Contagem MG + BRAZIL + +00-50-DA (hex) 3COM CORPORATION +0050DA (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + MS: 4220 + SANTA CLARA CA 95052 + UNITED STATES + +00-50-DB (hex) CONTEMPORARY CONTROL +0050DB (base 16) CONTEMPORARY CONTROL + SYSTEMS, INC. + 2431 CURTISS STREET + DOWNERS GROVE IL 60515 + UNITED STATES + +00-50-DC (hex) TAS TELEFONBAU A. SCHWABE GMBH & CO. KG +0050DC (base 16) TAS TELEFONBAU A. SCHWABE GMBH & CO. KG + + LANGMAAR 25 + D-41238 MONCHENGLADBACH + GERMANY + +00-50-DD (hex) SERRA SOLDADURA, S.A. +0050DD (base 16) SERRA SOLDADURA, S.A. + POL. IND. ZONA FRANCA, + SECTOR C, CALLE D, N. 29 08040 BARCELONA + SPAIN + SPAIN + +00-50-DE (hex) SIGNUM SYSTEMS CORP. +0050DE (base 16) SIGNUM SYSTEMS CORP. + 1211 Flynn Rd, + #104 + Camarillo CA 93021 + UNITED STATES + +00-50-DF (hex) AirFiber, Inc. +0050DF (base 16) AirFiber, Inc. + P.O. BOX 502148 + SAN DIEGO CA 92150-2148 + UNITED STATES + +00-50-E1 (hex) NS TECH ELECTRONICS SDN BHD +0050E1 (base 16) NS TECH ELECTRONICS SDN BHD + NO. 21 & 23 JALAN CANGGIH 10 + TAMAN PERINDUSTRIAN CEMERLANG + 81800 Ulu Tiram-Johor Bahru + MALAYSIA + +00-50-E2 (hex) CISCO SYSTEMS, INC. +0050E2 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-E3 (hex) Motorola, Inc. +0050E3 (base 16) Motorola, Inc. + 2450 Walsh Ave + Santa Clara CA 95051 + UNITED STATES + +00-50-E4 (hex) APPLE COMPUTER, INC. +0050E4 (base 16) APPLE COMPUTER, INC. + 20650 VALLEY GREEN DR. + CUPERTINO CA 95014 + UNITED STATES + +00-50-E6 (hex) HAKUSAN CORPORATION +0050E6 (base 16) HAKUSAN CORPORATION + J TOWER, 1-1, NIKKOU-CHO + FUCHU-SHI TOKYO 183-0044 + JAPAN + JAPAN + +00-50-E7 (hex) PARADISE INNOVATIONS (ASIA) +0050E7 (base 16) PARADISE INNOVATIONS (ASIA) + PTE. LTD. + 25 SERANGOON NORTH AVE. 5 6TH FLOOR URAC + SINGAPORE 554914 + SINGAPORE + +00-50-E8 (hex) NOMADIX INC. +0050E8 (base 16) NOMADIX INC. + 2701 OCEAN PARK BLVD.-STE.#231 + SANTA MONICA CA 90405 + UNITED STATES + +00-50-EA (hex) XEL COMMUNICATIONS, INC. +0050EA (base 16) XEL COMMUNICATIONS, INC. + 17101 E. OHIO DRIVE + AURORA CO 80017 + UNITED STATES + +00-50-EB (hex) ALPHA-TOP CORPORATION +0050EB (base 16) ALPHA-TOP CORPORATION + 19F., NO. 2, LANE 150 + SEC. 5, HSIN-YI ROAD + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-50-EC (hex) OLICOM A/S +0050EC (base 16) OLICOM A/S + NYBROVEJ 114 + DK-2800 LYNGBY + DENMARK + +00-50-ED (hex) ANDA NETWORKS +0050ED (base 16) ANDA NETWORKS + 2921 COPPER ROAD + SANTA CLARA CA 95051 + UNITED STATES + +00-50-EE (hex) TEK DIGITEL CORPORATION +0050EE (base 16) TEK DIGITEL CORPORATION + 20010 CENTURY BLVD. #300 + GERMANTOWN MD 20874 + UNITED STATES + +00-50-EF (hex) SPE Systemhaus GmbH +0050EF (base 16) SPE Systemhaus GmbH + WALDSTRASSE 7 + 63150 HEUSENSTAMM + GERMANY + +00-50-F0 (hex) CISCO SYSTEMS, INC. +0050F0 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + M/S SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-50-F1 (hex) LIBIT SIGNAL PROCESSING, LTD. +0050F1 (base 16) LIBIT SIGNAL PROCESSING, LTD. + P.O. BOX 12670 + 2 SHANKER STREET + HERZLIYA 46766 + ISRAEL + +00-50-F2 (hex) MICROSOFT CORP. +0050F2 (base 16) MICROSOFT CORP. + ONE MICROSOFT WAY + REDMOND WA 98052-6399 + UNITED STATES + +00-50-F3 (hex) GLOBAL NET INFORMATION CO., Ltd. +0050F3 (base 16) GLOBAL NET INFORMATION CO., Ltd. + NORTH TOWER- RM 1305 + WORLD TRADE CENTRE COMPLEX NO.371-375, H + GUANG ZHOU 510095 + CHINA + +00-50-F4 (hex) SIGMATEK GMBH & CO. KG +0050F4 (base 16) SIGMATEK GMBH & CO. KG + A-5112 LAMPRECHTSHAUSEN, + BURMOOSER STRASSE 10 + AUSTRIA + AUSTRIA + +00-50-F6 (hex) PAN-INTERNATIONAL INDUSTRIAL CORP. +0050F6 (base 16) PAN-INTERNATIONAL INDUSTRIAL CORP. + GF, NO. 176, CHANG CHUN RD. + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-50-F7 (hex) VENTURE MANUFACTURING (SINGAPORE) LTD. +0050F7 (base 16) VENTURE MANUFACTURING (SINGAPORE) LTD. + + 5006 ANG MO KIO AVENUE + #05-01 Techplace II 569873 + SINGAPORE + +00-50-F8 (hex) ENTREGA TECHNOLOGIES, INC. +0050F8 (base 16) ENTREGA TECHNOLOGIES, INC. + 25691 ATLANTIC OCEAN DRIVE + SUITE #18 + LAKE FOREST CA 92630 + UNITED STATES + +00-50-F9 (hex) SENSORMATIC ACD +0050F9 (base 16) SENSORMATIC ACD + 70 WESTVIEW STREET + LEXINGTON MA 02173 + UNITED STATES + +00-50-FA (hex) OXTEL, LTD. +0050FA (base 16) OXTEL, LTD. + THE MARKET PLACE + DIDCOT + 0X11 7LE England + UNITED KINGDOM + +00-50-FB (hex) VSK ELECTRONICS +0050FB (base 16) VSK ELECTRONICS + VENETIELAAN 39 + 8530 HARELBEKE + BELGIUM + BELGIUM + +00-50-FC (hex) EDIMAX TECHNOLOGY CO., LTD. +0050FC (base 16) EDIMAX TECHNOLOGY CO., LTD. + 3 WU-CHUN 3rd ROAD + Wu-Ku Industrial Park + TAIPEI Hsien 248 + TAIWAN, REPUBLIC OF CHINA + +00-50-FD (hex) VISIONCOMM CO., LTD. +0050FD (base 16) VISIONCOMM CO., LTD. + 4, 5F, DAEWON B/D + 198-8, SEOBINGGO-DONG + YONGSAN-GU, SEOUL + KOREA, REPUBLIC OF + +00-50-FE (hex) PCTVnet ASA +0050FE (base 16) PCTVnet ASA + STRANDVEILEN 50 + N-1324 LYSAKER + NORWAY + +00-50-FF (hex) HAKKO ELECTRONICS CO., LTD. +0050FF (base 16) HAKKO ELECTRONICS CO., LTD. + 238, KAMIKASHIWANO-MACHI + MATTO-SHI, ISHIKAWA 924-0035 + JAPAN + +00-60-00 (hex) XYCOM INC. +006000 (base 16) XYCOM INC. + 750 N. MAPLE + SALINE MI 48176 + UNITED STATES + +00-60-01 (hex) InnoSys, Inc. +006001 (base 16) InnoSys, Inc. + 3095 RICHMOND PKWY #207 + RICHMOND CA 94806 + UNITED STATES + +00-60-02 (hex) SCREEN SUBTITLING SYSTEMS, LTD +006002 (base 16) SCREEN SUBTITLING SYSTEMS, LTD + THE OLD RECTORY + CHURCH LANE + CLAYDON IPSWICH IP6 OEQ + UNITED KINGDOM + +00-60-03 (hex) TERAOKA WEIGH SYSTEM PTE, LTD. +006003 (base 16) TERAOKA WEIGH SYSTEM PTE, LTD. + 3A TUAS AVENUE 8 + SINGAPORE 639128 + SINGAPORE + +00-60-04 (hex) COMPUTADORES MODULARES SA +006004 (base 16) COMPUTADORES MODULARES SA + AVDA MONTESIERRA S/N + EDIFICIO CONGRESOS 314 + 41020-SEVILLA + SPAIN + +00-60-05 (hex) FEEDBACK DATA LTD. +006005 (base 16) FEEDBACK DATA LTD. + PARK ROAD + CROWBOROUGH + EAST SUSSEX, TN6 2QR + UNITED KINGDOM + +00-60-06 (hex) SOTEC CO., LTD +006006 (base 16) SOTEC CO., LTD + YOKOHAMA BASHAMICHI BLDG., + 4-55 OHTA-CHO NAKA-KU + YOKOHAMA 231 + JAPAN + +00-60-07 (hex) ACRES GAMING, INC. +006007 (base 16) ACRES GAMING, INC. + 815 NW 9TH STREET + CORVALLIS OR 97330 + UNITED STATES + +00-60-08 (hex) 3COM CORPORATION +006008 (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + SANTA CLARA CA 95052 + UNITED STATES + +00-60-09 (hex) CISCO SYSTEMS, INC. +006009 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-60-0A (hex) SORD COMPUTER CORPORATION +00600A (base 16) SORD COMPUTER CORPORATION + 20-7, MASAGO 5-CHOME + MIHAMA-KU, CHIBA-SHI + CHIBA 261 + JAPAN + +00-60-0B (hex) LOGWARE GmbH +00600B (base 16) LOGWARE GmbH + SCHWEDENSTR. 9 + D-13359 BERLIN + GERMANY + +00-60-0C (hex) APPLIED DATA SYSTEMS, INC. +00600C (base 16) APPLIED DATA SYSTEMS, INC. + 9140-A GUILFORD ROAD + COLUMBIA MD 21046 + UNITED STATES + +00-60-0D (hex) Digital Logic GmbH +00600D (base 16) Digital Logic GmbH + Stahlwerkstr. 25 + Mudersbach 57555 + GERMANY + +00-60-0E (hex) WAVENET INTERNATIONAL, INC. +00600E (base 16) WAVENET INTERNATIONAL, INC. + 5825 KENNEDY ROAD + MISSISSAUGA, ONTARIO L4Z 2G3 + CANADA + +00-60-0F (hex) WESTELL, INC. +00600F (base 16) WESTELL, INC. + 75 EXECUTIVE DRIVE + AURORA IL 60504-4101 + UNITED STATES + +00-60-10 (hex) NETWORK MACHINES, INC. +006010 (base 16) NETWORK MACHINES, INC. + 255 OLD NEW BRUNSWICK RD., # N320 + PISCATAWAY NJ 08854 + UNITED STATES + +00-60-11 (hex) CRYSTAL SEMICONDUCTOR CORP. +006011 (base 16) CRYSTAL SEMICONDUCTOR CORP. + P.O. BOX 17847 + AUSTIN TX 78760 + UNITED STATES + +00-60-12 (hex) POWER COMPUTING CORPORATION +006012 (base 16) POWER COMPUTING CORPORATION + 10261 BUBB ROAD + CUPERTINO CA 95014 + UNITED STATES + +00-60-13 (hex) NETSTAL MASCHINEN AG +006013 (base 16) NETSTAL MASCHINEN AG + INDUSTRIESTRASSE + CH-8752 NAEFELS + SWITZERLAND + +00-60-14 (hex) EDEC CO., LTD. +006014 (base 16) EDEC CO., LTD. + 9F OF T.O.C. BUILDING + 7-22-17 NISHIGOTANDA + SHINAGAWAKU, TOKYO + JAPAN + +00-60-15 (hex) NET2NET CORPORATION +006015 (base 16) NET2NET CORPORATION + 131 COOLIDGE STREET + HUDSON MA 01749 + UNITED STATES + +00-60-16 (hex) CLARIION +006016 (base 16) CLARIION + COSLIN DRIVE + Mail Stop C25 + SOUTHBORO MA 01772 + UNITED STATES + +00-60-17 (hex) TOKIMEC INC. +006017 (base 16) TOKIMEC INC. + 2-16, MINAMI-KAMATA, OHTA-KU + TOKYO 144 + JAPAN + +00-60-18 (hex) STELLAR ONE CORPORATION +006018 (base 16) STELLAR ONE CORPORATION + 500 108TH AVE. NE--STE. #2200 + BELLEVUE WA 98004 + UNITED STATES + +00-60-19 (hex) Roche Diagnostics +006019 (base 16) Roche Diagnostics + 9115 Hague Road + Indianapolis IN 46250-0457 + UNITED STATES + +00-60-1A (hex) KEITHLEY INSTRUMENTS +00601A (base 16) KEITHLEY INSTRUMENTS + 30500 BAINBRIDGE RD. + SOLON OH 44139 + UNITED STATES + +00-60-1B (hex) MESA ELECTRONICS +00601B (base 16) MESA ELECTRONICS + 1323 61ST STREET + EMERYVILLE CA 94608-2117 + UNITED STATES + +00-60-1C (hex) TELXON CORPORATION +00601C (base 16) TELXON CORPORATION + 3330 W. MARKET STREET + PO BOX 5582 + AKRON OH 44334-0582 + UNITED STATES + +00-60-1D (hex) LUCENT TECHNOLOGIES +00601D (base 16) LUCENT TECHNOLOGIES + 101 CRAWFORDS CORNER RD. + ROOM 4K-321 + HOLMDEL NJ 07733 + UNITED STATES + +00-60-1E (hex) SOFTLAB, INC. +00601E (base 16) SOFTLAB, INC. + P.O. BOX 8 + CHIMNEY ROCK CO 81127 + UNITED STATES + +00-60-1F (hex) STALLION TECHNOLOGIES +00601F (base 16) STALLION TECHNOLOGIES + 33 WOODSTOCK ROAD + TOOWONG Q-L-D- 4066 + AUSTRALIA + +00-60-20 (hex) PIVOTAL NETWORKING, INC. +006020 (base 16) PIVOTAL NETWORKING, INC. + 7246 SHARON DR., STE + SAN JOSE CA 95129 + UNITED STATES + +00-60-21 (hex) DSC CORPORATION +006021 (base 16) DSC CORPORATION + RECRUIT-SHINOHTSUKA BLDG., + 2-25-15 MINAMIOHTSUKA, TOSHIMA-KU, + TOKYO 170 + JAPAN + +00-60-22 (hex) VICOM SYSTEMS, INC. +006022 (base 16) VICOM SYSTEMS, INC. + 1961 LANDINGS DRIVE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-60-23 (hex) PERICOM SEMICONDUCTOR CORP. +006023 (base 16) PERICOM SEMICONDUCTOR CORP. + 2380 BERING DRIVE + SAN JOSE CA 95131 + UNITED STATES + +00-60-24 (hex) GRADIENT TECHNOLOGIES, INC. +006024 (base 16) GRADIENT TECHNOLOGIES, INC. + 2 MOUNT ROYAL AVENUE + MARLBORO MA 01752 + UNITED STATES + +00-60-25 (hex) ACTIVE IMAGING PLC +006025 (base 16) ACTIVE IMAGING PLC + HATTORI HOUSE + VANWALL BUSINESS PARK + MAIDENHEAD Berkshire SL6 4UB + UNITED KINGDOM + +00-60-26 (hex) VIKING COMPONENTS, INC. +006026 (base 16) VIKING COMPONENTS, INC. + 11 COLUMBIA + LAGUNA HILLS CA 92656 + UNITED STATES + +00-60-27 (hex) Superior Modular Products +006027 (base 16) Superior Modular Products + General Technology Division + 415 PINEDA COURT + MELBOURNE FL 32940 + UNITED STATES + +00-60-28 (hex) MACROVISION CORPORATION +006028 (base 16) MACROVISION CORPORATION + 2830 De La Cruz Boulevard + Santa Clara CA 95050 + UNITED STATES + +00-60-29 (hex) CARY PERIPHERALS INC. +006029 (base 16) CARY PERIPHERALS INC. + 190 COLONNADE ROAD S, UNIT 9 + NEPEAN, ONTARIO K2E 7J5 + CANADA + +00-60-2A (hex) SYMICRON COMPUTER COMMUNICATIONS, LTD. +00602A (base 16) SYMICRON COMPUTER COMMUNICATIONS, LTD. + UNIT 4 GREEN LANE BUSINESS PARK + 238 Green lane + London SE9 3TL + UNITED STATES + +00-60-2B (hex) PEAK AUDIO +00602B (base 16) PEAK AUDIO + 1790 30TH STREET STE #414 + BOULDER CO 80301 + UNITED STATES + +00-60-2C (hex) LINX Data Terminals, Inc. +00602C (base 16) LINX Data Terminals, Inc. + 625 DIGITAL DRIVE-STE #100 + PLANO TX 75075 + UNITED STATES + +00-60-2D (hex) ALERTON TECHNOLOGIES, INC. +00602D (base 16) ALERTON TECHNOLOGIES, INC. + 6670 185TH AVE. N.E. + REDMOND WA 98052 + UNITED STATES + +00-60-2E (hex) CYCLADES CORPORATION +00602E (base 16) CYCLADES CORPORATION + 41934 CHRISTY STREET + FREMONT CA 94538 + UNITED STATES + +00-60-2F (hex) CISCO SYSTEMS, INC. +00602F (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-60-30 (hex) VILLAGE TRONIC ENTWICKLUNG +006030 (base 16) VILLAGE TRONIC ENTWICKLUNG + WELLWEG 95 + 31157 SARSTEDT + GERMANY + +00-60-31 (hex) HRK SYSTEMS +006031 (base 16) HRK SYSTEMS + P.O. BOX 514 + WESTVILLE 3630 + SOUTH AFRICA + +00-60-32 (hex) I-CUBE, INC. +006032 (base 16) I-CUBE, INC. + 2328-C WALSH AVENUE + SANTA CLARA CA 95014 + UNITED STATES + +00-60-33 (hex) ACUITY IMAGING, INC. +006033 (base 16) ACUITY IMAGING, INC. + 9 TOWNSEND WEST + NASHUA NH 03063 + UNITED STATES + +00-60-34 (hex) ROBERT BOSCH GmbH +006034 (base 16) ROBERT BOSCH GmbH + POSTBOX 11 62 + D-64701 ERBACH + GERMANY + +00-60-35 (hex) DALLAS SEMICONDUCTOR, INC. +006035 (base 16) DALLAS SEMICONDUCTOR, INC. + 4401 SOUTH BELTWOOD PARKWAY + DALLAS TX 75244-3292 + UNITED STATES + +00-60-36 (hex) AUSTRIAN RESEARCH CENTER SEIBERSDORF +006036 (base 16) AUSTRIAN RESEARCH CENTER SEIBERSDORF + + A-2444 SEIBERSDORF + AUSTRIA + +00-60-37 (hex) NXP Semiconductors +006037 (base 16) NXP Semiconductors + Millbrook Technology Campus + Millbrook Southampton SO15 0DJ + UNITED KINGDOM + +00-60-38 (hex) Nortel Networks +006038 (base 16) Nortel Networks + Global Operations Engineering + Dep 6800 Program Manager 8200 Dixie Road + Brampton Ontario 16T 5P6 + CANADA + +00-60-39 (hex) SanCom Technology, Inc. +006039 (base 16) SanCom Technology, Inc. + 7719 WOOD HOLLOW DRIVE + SUITE #156 + AUSTIN TX 78731 + UNITED STATES + +00-60-3A (hex) QUICK CONTROLS LTD. +00603A (base 16) QUICK CONTROLS LTD. + DURHAM HOUSE, WARWICK COURT + PARK ROAD, MIDDLETON + MANCHESTER M24 1AE + UNITED KINGDOM + +00-60-3B (hex) AMTEC spa +00603B (base 16) AMTEC spa + LOC. S. MARTINO + 53025 PIANCASTAGNAIO (SIENA) + ITALY + +00-60-3C (hex) HAGIWARA SYS-COM CO., LTD. +00603C (base 16) HAGIWARA SYS-COM CO., LTD. + 2-4-3 NISHIKI NAKA-KU + NAGOYA + AICHI 460 + JAPAN + +00-60-3D (hex) 3CX +00603D (base 16) 3CX + 2085 HAMILTON AVE., -STE.#220 + SAN JOSE CA 95125 + UNITED STATES + +00-60-3E (hex) CISCO SYSTEMS, INC. +00603E (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-60-3F (hex) PATAPSCO DESIGNS +00603F (base 16) PATAPSCO DESIGNS + 5350 PARTNERS COURT + FREDERICK MD 21703 + UNITED STATES + +00-60-40 (hex) NETRO CORP. +006040 (base 16) NETRO CORP. + 3120 SCOTT BLVD. + SANTA CLARA CA 95054 + UNITED STATES + +00-60-41 (hex) Yokogawa Electric Corporation +006041 (base 16) Yokogawa Electric Corporation + 2-9-31 Nakacho, Musashino-shi + Tokyo 180-8750 + JAPAN + +00-60-42 (hex) TKS (USA), INC. +006042 (base 16) TKS (USA), INC. + 1201 COMMERCE + RICHARDSON TX 75081 + UNITED STATES + +00-60-43 (hex) ComSoft Systems, Inc. +006043 (base 16) ComSoft Systems, Inc. + 7405 COLSHIRE DRIVE- STE #240 + MCLEAN VA 22101 + UNITED STATES + +00-60-44 (hex) LITTON/POLY-SCIENTIFIC +006044 (base 16) LITTON/POLY-SCIENTIFIC + 2200 SOUTH MAIN STREET + BLACKSBURG VA 24060 + UNITED STATES + +00-60-45 (hex) PATHLIGHT TECHNOLOGIES +006045 (base 16) PATHLIGHT TECHNOLOGIES + 767 WARREN ROAD + ITHACA NY 14850 + UNITED STATES + +00-60-46 (hex) VMETRO, INC. +006046 (base 16) VMETRO, INC. + 1880 DAIRY ASHFORD- STE #535 + HOUSTON TX 77077 + UNITED STATES + +00-60-47 (hex) CISCO SYSTEMS, INC. +006047 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-60-48 (hex) EMC CORPORATION +006048 (base 16) EMC CORPORATION + 171 SOUTH ST., + HOPKINTON MA 01748 + UNITED STATES + +00-60-49 (hex) VINA TECHNOLOGIES +006049 (base 16) VINA TECHNOLOGIES + 6 UNION SQUARE - STE F + UNION CITY CA 94587 + UNITED STATES + +00-60-4A (hex) SAIC IDEAS GROUP +00604A (base 16) SAIC IDEAS GROUP + 7120 COLUMBIA GATEWAY DRIVE + COLUMBIA MD 21046 + UNITED STATES + +00-60-4B (hex) Safe-com GmbH & Co. KG +00604B (base 16) Safe-com GmbH & Co. KG + Burg Lichtenfels + 35104 Lichtenfels + GERMANY + +00-60-4C (hex) SAGEM COMMUNICATION +00604C (base 16) SAGEM COMMUNICATION + 27 RUE LEBLANC + CEDEX 15 PARIS 75512 + FRANCE + +00-60-4D (hex) MMC NETWORKS, INC. +00604D (base 16) MMC NETWORKS, INC. + 1134 EAST ARQUES AVENUE + SUNNYVALE CA 94086-4602 + UNITED STATES + +00-60-4E (hex) CYCLE COMPUTER CORPORATION, INC. +00604E (base 16) CYCLE COMPUTER CORPORATION, INC. + 20245 STEVENS CREEK BLVD. + CUPERTINO CA 95014 + UNITED STATES + +00-60-4F (hex) SUZUKI MFG. CO., LTD. +00604F (base 16) SUZUKI MFG. CO., LTD. + 552-51 AJIGAURA + HITACHINAKA + IBARAKI, 311-12 + JAPAN + +00-60-50 (hex) INTERNIX INC. +006050 (base 16) INTERNIX INC. + 59-10 TAKAKURA-CHO + HACHIOJI + TOKYO 192 + JAPAN + +00-60-51 (hex) QUALITY SEMICONDUCTOR +006051 (base 16) QUALITY SEMICONDUCTOR + 851 MARTIN AVENUE + SANTA CLARA CA 95050 + UNITED STATES + +00-60-52 (hex) PERIPHERALS ENTERPRISE CO., Ltd. +006052 (base 16) PERIPHERALS ENTERPRISE CO., Ltd. + 3F, NO.10, ALLEY 6, LANE 45 + PAO SHIN ROAD, HSIN TIEN CITY + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-60-53 (hex) TOYODA MACHINE WORKS, LTD. +006053 (base 16) TOYODA MACHINE WORKS, LTD. + 1-7 KITAJIZOYAMA NODACHOU + KARIYA CITY, AICHI + JAPAN + +00-60-54 (hex) CONTROLWARE GMBH +006054 (base 16) CONTROLWARE GMBH + WALDSTRASSE 92 + 63128 DIETZENBACH + GERMANY + +00-60-55 (hex) CORNELL UNIVERSITY +006055 (base 16) CORNELL UNIVERSITY + 110 MAPLE AVENUE + ITHACA NY 14850-4902 + UNITED STATES + +00-60-56 (hex) NETWORK TOOLS, INC. +006056 (base 16) NETWORK TOOLS, INC. + 2975 BOWERS AVENUE, #202 + SANTA CLARA CA 95051-0955 + UNITED STATES + +00-60-57 (hex) MURATA MANUFACTURING CO., LTD. +006057 (base 16) MURATA MANUFACTURING CO., LTD. + 1-18-1 HAKUSAN MIDORI-KU + YOKOHAMA 226 + JAPAN + +00-60-58 (hex) COPPER MOUNTAIN COMMUNICATIONS, INC. +006058 (base 16) COPPER MOUNTAIN COMMUNICATIONS, INC. + 6650 LUSK BLVD.-STE #B103 + SAN DIEGO CA 92121 + UNITED STATES + +00-60-59 (hex) TECHNICAL COMMUNICATIONS CORP. +006059 (base 16) TECHNICAL COMMUNICATIONS CORP. + 100 DOMINO DRIVE + CONCORD MA 01742 + UNITED STATES + +00-60-5A (hex) CELCORE, INC. +00605A (base 16) CELCORE, INC. + 8001 CENTERVIEW PARKWAY + SUITE #201 + MEMPHIS TN 38018 + UNITED STATES + +00-60-5B (hex) IntraServer Technology, Inc. +00605B (base 16) IntraServer Technology, Inc. + 125 HOPPING BROOK PARK + HOLLISTON MA 01746 + UNITED STATES + +00-60-5C (hex) CISCO SYSTEMS, INC. +00605C (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-60-5D (hex) SCANIVALVE CORP. +00605D (base 16) SCANIVALVE CORP. + 1722 N. MADSON STREET + LIBERTY LAKE WA 99019 + UNITED STATES + +00-60-5E (hex) LIBERTY TECHNOLOGY NETWORKING +00605E (base 16) LIBERTY TECHNOLOGY NETWORKING + P.O. BOX 11566 + HATFIELD, PRETORIA 0028 + SOUTH AFRICA + +00-60-5F (hex) NIPPON UNISOFT CORPORATION +00605F (base 16) NIPPON UNISOFT CORPORATION + BR NINGYOCHO 1,2-13-9 + NIHONBASHI-NINGYOCHO, CHUO-KU + TOKYO 103 + JAPAN + +00-60-60 (hex) DAWNING TECHNOLOGIES, INC. +006060 (base 16) DAWNING TECHNOLOGIES, INC. + 409 MASON ROAD + FAIRPORT NY 14450 + UNITED STATES + +00-60-61 (hex) WHISTLE COMMUNICATIONS CORP. +006061 (base 16) WHISTLE COMMUNICATIONS CORP. + 110 MARSH DRIVE-STE #100 + FOSTER CITY CA 94404 + UNITED STATES + +00-60-62 (hex) TELESYNC, INC. +006062 (base 16) TELESYNC, INC. + 5555 OAKBROOK PKWY-STE #110 + NORCROSS GA 30093 + UNITED STATES + +00-60-63 (hex) PSION DACOM PLC. +006063 (base 16) PSION DACOM PLC. + PSION DACOM HOUSE + PRESLEY WAY, + CROWNHILL MILTON KEYNES MK8 0EF + UNITED KINGDOM + +00-60-64 (hex) NETCOMM LIMITED +006064 (base 16) NETCOMM LIMITED + PO BOX 379 + NORTH RYDE, NSW, 2113 + AUSTRALIA + +00-60-65 (hex) BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH +006065 (base 16) BERNECKER & RAINER INDUSTRIE-ELEKTRONIC GmbH + EGGELSBERG 120 + 5142 EGGELSBERG + AUSTRIA + +00-60-66 (hex) LACROIX TECHNOLGIE +006066 (base 16) LACROIX TECHNOLGIE + 1 ere Avenue, 11 eme rue + 06516 CARROS + FRANCE + +00-60-67 (hex) ACER NETXUS INC. +006067 (base 16) ACER NETXUS INC. + 5F-3, 5 HSIN ANN ROAD SBIP + HSINCHU 300 + TAIWAN, REPUBLIC OF CHINA + +00-60-68 (hex) Dialogic Corporation +006068 (base 16) Dialogic Corporation + 9800 Cavendish Blvd, 5th Floor + Montreal Quebec H4M 2V9 + CANADA + +00-60-69 (hex) Brocade Communications Systems, Inc. +006069 (base 16) Brocade Communications Systems, Inc. + 1745 Technology Drive + San Jose CA 95110 + UNITED STATES + +00-60-6A (hex) MITSUBISHI WIRELESS COMMUNICATIONS. INC. +00606A (base 16) MITSUBISHI WIRELESS COMMUNICATIONS. INC. + 2001 CHERRY DRIVE + BRASELTON GA 30517 + UNITED STATES + +00-60-6B (hex) Synclayer Inc. +00606B (base 16) Synclayer Inc. + 1-20 Himegaoka + Kani-City + GIFU 509-0249 + JAPAN + +00-60-6C (hex) ARESCOM +00606C (base 16) ARESCOM + 2833 JUNCTION AVE. - STE #206 + SAN JOSE CA 95134 + UNITED STATES + +00-60-6D (hex) DIGITAL EQUIPMENT CORP. +00606D (base 16) DIGITAL EQUIPMENT CORP. + 550 KING STREET + M/S LKG1-3/A10 + LITTLETON MA 01460 + UNITED STATES + +00-60-6E (hex) DAVICOM SEMICONDUCTOR, INC. +00606E (base 16) DAVICOM SEMICONDUCTOR, INC. + 2457 AUGUSTINE DRIVE + SANTA CLARA CA 95054 + UNITED STATES + +00-60-6F (hex) CLARION CORPORATION OF AMERICA +00606F (base 16) CLARION CORPORATION OF AMERICA + 17 LAKESIDE OFFICE PARK + 607 NORTH AVENUE + WAKEFIELD MA 01880 + UNITED STATES + +00-60-70 (hex) CISCO SYSTEMS, INC. +006070 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-60-71 (hex) MIDAS LAB, INC. +006071 (base 16) MIDAS LAB, INC. + 4 KATAMACHI, + SHINJUKU-KU + TOKYO 160 + JAPAN + +00-60-72 (hex) VXL INSTRUMENTS, LIMITED +006072 (base 16) VXL INSTRUMENTS, LIMITED + PLOT NO. 17, KONAPPANA AGRAHARA + ELECTRONIC CITY + BANGALORE - 561 229 + INDIA + +00-60-73 (hex) REDCREEK COMMUNICATIONS, INC. +006073 (base 16) REDCREEK COMMUNICATIONS, INC. + 3900 NEWPARK MALL ROAD + NEWARK CA 94560 + UNITED STATES + +00-60-74 (hex) QSC AUDIO PRODUCTS +006074 (base 16) QSC AUDIO PRODUCTS + 1675 MACARTHUR BLVD. + COSTA MESA CA 92626 + UNITED STATES + +00-60-75 (hex) PENTEK, INC. +006075 (base 16) PENTEK, INC. + 1 PARK WAY + UPPER SADDLE RIVER NJ 07458 + UNITED STATES + +00-60-76 (hex) SCHLUMBERGER TECHNOLOGIES RETAIL PETROLEUM SYSTEMS +006076 (base 16) SCHLUMBERGER TECHNOLOGIES RETAIL PETROLEUM SYSTEMS + 825-M GREENBRIER CIRCLE + CHESAPEAKE VA 23320 + UNITED STATES + +00-60-77 (hex) PRISA NETWORKS +006077 (base 16) PRISA NETWORKS + 6620 Mesa Ridge Road, + Suite 200 + San Diego CA 92121 + UNITED STATES + +00-60-78 (hex) POWER MEASUREMENT LTD. +006078 (base 16) POWER MEASUREMENT LTD. + 2195 KEATING CROSS ROAD + SAANICHTON, B.C. V8M 2A5 + CANADA + +00-60-79 (hex) Mainstream Data, Inc. +006079 (base 16) Mainstream Data, Inc. + 375 Chipeta Way, Suite B + Salt Lake City UT 84108 + UNITED STATES + +00-60-7A (hex) DVS GmbH +00607A (base 16) DVS GmbH + KREPENSTRASSE 8 + D-30165 HANNOVER + GERMANY + +00-60-7B (hex) FORE SYSTEMS, INC. +00607B (base 16) FORE SYSTEMS, INC. + 1000 FORE DRIVE + WARRENDALE PA 15086 + UNITED STATES + +00-60-7C (hex) WaveAccess, Ltd. +00607C (base 16) WaveAccess, Ltd. + P.O. BOX 2473 + 10 HAYEZIRA STREET + RA'ANANA 43663 + ISRAEL + +00-60-7D (hex) SENTIENT NETWORKS INC. +00607D (base 16) SENTIENT NETWORKS INC. + 2201 CANTU COURT-STE #205 + SARASOTA FL 34232 + UNITED STATES + +00-60-7E (hex) GIGALABS, INC. +00607E (base 16) GIGALABS, INC. + 290 SANTA ANA COURT + SUNNYVALE CA 94086 + UNITED STATES + +00-60-7F (hex) AURORA TECHNOLOGIES, INC. +00607F (base 16) AURORA TECHNOLOGIES, INC. + 176 SECOND AVENUE + WALTHAM MA 02154 + UNITED STATES + +00-60-80 (hex) MICROTRONIX DATACOM LTD. +006080 (base 16) MICROTRONIX DATACOM LTD. + 200 ABERDEEN DRIVE + LONDON, ONTARIO N5V 4N2 + CANADA + +00-60-81 (hex) TV/COM INTERNATIONAL +006081 (base 16) TV/COM INTERNATIONAL + 16516 VIA ESPRILLO + SAN DIEGO CA 92127 + UNITED STATES + +00-60-82 (hex) NOVALINK TECHNOLOGIES, INC. +006082 (base 16) NOVALINK TECHNOLOGIES, INC. + 48511 WARM SPRINGS BLVD. #208 + FREMONT CA 94539 + UNITED STATES + +00-60-83 (hex) CISCO SYSTEMS, INC. +006083 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-60-84 (hex) DIGITAL VIDEO +006084 (base 16) DIGITAL VIDEO + 4920 AVALON RIDGE PKWY + SUITE #600 + NORCROSS GA 30092 + UNITED STATES + +00-60-85 (hex) Storage Concepts +006085 (base 16) Storage Concepts + 14352 Chamber Road + Tustin CA 92780 + UNITED STATES + +00-60-86 (hex) LOGIC REPLACEMENT TECH. LTD. +006086 (base 16) LOGIC REPLACEMENT TECH. LTD. + 14 ARKWRIGHT ROAD + READING BERKS RG20LS + UNITED KINGDOM + UNITED KINGDOM + +00-60-87 (hex) KANSAI ELECTRIC CO., LTD. +006087 (base 16) KANSAI ELECTRIC CO., LTD. + 6-14-9 MIDORII, ASAMINAMI-KU + HIROSHIMA 731-01 + JAPAN + +00-60-88 (hex) WHITE MOUNTAIN DSP, INC. +006088 (base 16) WHITE MOUNTAIN DSP, INC. + 410 AMHERST STREET-STE #325 + NASHUA NH 03063 + UNITED STATES + +00-60-89 (hex) XATA +006089 (base 16) XATA + 151 EAST CLIFF ROAD-STE.#10 + BURNSVILLE MN 55337 + UNITED STATES + +00-60-8A (hex) CITADEL COMPUTER +00608A (base 16) CITADEL COMPUTER + 29 ARMORY RD + MILFORD MA 03055 + UNITED STATES + +00-60-8B (hex) ConferTech International +00608B (base 16) ConferTech International + 12110 N. PECOS STREET + WESTMINSTER CO 80234-2074 + UNITED STATES + +00-60-8C (hex) 3COM CORPORATION +00608C (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + SANTA CLARA CA 95052-8145 + UNITED STATES + +00-60-8D (hex) UNIPULSE CORP. +00608D (base 16) UNIPULSE CORP. + 2-7, SENGENDAI-NISHI + KOSHIGAYA-CITY + SAITAMA 343 + JORDAN + +00-60-8E (hex) HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH +00608E (base 16) HE ELECTRONICS, TECHNOLOGIE & SYSTEMTECHNIK GmbH + AM GNEISENAUFLOT 8 + D-66538 NEUNHIRCHEN + GERMANY + +00-60-8F (hex) TEKRAM TECHNOLOGY CO., LTD. +00608F (base 16) TEKRAM TECHNOLOGY CO., LTD. + B1, NO. 17, LANE 159, SEC. 6 + ROOSEVELT RD, + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-60-90 (hex) ABLE COMMUNICATIONS, INC. +006090 (base 16) ABLE COMMUNICATIONS, INC. + NAKAMURA LK BLDG. + 3-6-6, NISHIKI-CHO TACHIKAWA-SHI, TOKYO + JAPAN + JAPAN + +00-60-91 (hex) FIRST PACIFIC NETWORKS, INC. +006091 (base 16) FIRST PACIFIC NETWORKS, INC. + 871 FOX LANE + SAN JOSE CA 95131 + UNITED STATES + +00-60-92 (hex) MICRO/SYS, INC. +006092 (base 16) MICRO/SYS, INC. + 3447 OCEAN VIEW BLVD. + GLENDALE CA 91208 + UNITED STATES + +00-60-93 (hex) VARIAN +006093 (base 16) VARIAN + 2700 MITCHELL DR. + WALNUT GREEK CA 94598 + UNITED STATES + +00-60-94 (hex) IBM CORP. +006094 (base 16) IBM CORP. + PO BOX 12195 + CE6A/664 3039 CORNWALLIS + RTP NC 27709-2195 + UNITED STATES + +00-60-95 (hex) ACCU-TIME SYSTEMS, INC. +006095 (base 16) ACCU-TIME SYSTEMS, INC. + 420 SOMERS ROAD + ELLINGTON CT 06029 + UNITED STATES + +00-60-96 (hex) T.S. MICROTECH INC. +006096 (base 16) T.S. MICROTECH INC. + 20818 HIGGINS COURT + TORRANCE CA 90501 + UNITED STATES + +00-60-97 (hex) 3COM CORPORATION +006097 (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + SANTA CLARA CA 95052 + UNITED STATES + +00-60-98 (hex) HT COMMUNICATIONS +006098 (base 16) HT COMMUNICATIONS + 4480 SHOPPING LANE + SIMI VALLEY CA 93063 + UNITED STATES + +00-60-99 (hex) SBE, Inc. +006099 (base 16) SBE, Inc. + 2305 Camino Ramon + Suite 200 + San Ramon CA 94583 + UNITED STATES + +00-60-9A (hex) NJK TECHNO CO. +00609A (base 16) NJK TECHNO CO. + N1-25 KAMIYASATO + KOMATSU #923 + JAPAN + +00-60-9B (hex) ASTRO-MED, INC. +00609B (base 16) ASTRO-MED, INC. + 600 EAST GREENWICH AVE. + WEST WARWICK RI 02893 + UNITED STATES + +00-60-9C (hex) Perkin-Elmer Incorporated +00609C (base 16) Perkin-Elmer Incorporated + 710 Bridgeport Ave. + Shelton CT 06484 + UNITED STATES + +00-60-9D (hex) PMI FOOD EQUIPMENT GROUP +00609D (base 16) PMI FOOD EQUIPMENT GROUP + 701 RIDGE AVENUE + TROY OH 45374 + UNITED STATES + +00-60-9E (hex) ASC X3 - INFORMATION TECHNOLOGY STANDARDS SECRETARIATS +00609E (base 16) ASC X3 - INFORMATION TECHNOLOGY STANDARDS SECRETARIATS + 1250 EYE STREET NW - STE #200 + WASHINGTON DC 20005 + UNITED STATES + +00-60-9F (hex) PHAST CORPORATION +00609F (base 16) PHAST CORPORATION + 79 WEST 4500 SOUTH - BLDG.#14 + SALT LAKE CITY UT 84107 + UNITED STATES + +00-60-A0 (hex) SWITCHED NETWORK TECHNOLOGIES, INC. +0060A0 (base 16) SWITCHED NETWORK TECHNOLOGIES, INC. + 13805 1ST AVENUE NORTH + PLYMOUTH MN 55441-5455 + UNITED STATES + +00-60-A1 (hex) VPNet, Inc. +0060A1 (base 16) VPNet, Inc. + 555 N. MATHILDA AVE.,-STE #110 + SUNNYVALE CA 94086 + UNITED STATES + +00-60-A2 (hex) NIHON UNISYS LIMITED CO. +0060A2 (base 16) NIHON UNISYS LIMITED CO. + P.O. BOX 135 + TOKYO-TO, KOUTOU-KU + SHINONOME 1-10-9 + JAPAN + +00-60-A3 (hex) CONTINUUM TECHNOLOGY CORP. +0060A3 (base 16) CONTINUUM TECHNOLOGY CORP. + 220 CONTINUUM DRIVE + FLETCHER NC 28732 + UNITED STATES + +00-60-A4 (hex) GRINAKER SYSTEM TECHNOLOGIES +0060A4 (base 16) GRINAKER SYSTEM TECHNOLOGIES + BOX 912-561 + SILVERTON 0127 + SOUTH AFRICA + +00-60-A5 (hex) PERFORMANCE TELECOM CORP. +0060A5 (base 16) PERFORMANCE TELECOM CORP. + 10 CARLSON ROAD + ROCHESTER NY 14610-1021 + UNITED STATES + +00-60-A6 (hex) PARTICLE MEASURING SYSTEMS +0060A6 (base 16) PARTICLE MEASURING SYSTEMS + 5475 AIRPORT BLVD. + BOULDER CO 80301 + UNITED STATES + +00-60-A7 (hex) MICROSENS GmbH & CO. KG +0060A7 (base 16) MICROSENS GmbH & CO. KG + Kueferstrasse 16 + D-59067 Hamm + GERMANY + +00-60-A8 (hex) TIDOMAT AB +0060A8 (base 16) TIDOMAT AB + + S-12089 STOCKHOLM + SWEDEN + +00-60-A9 (hex) GESYTEC MbH +0060A9 (base 16) GESYTEC MbH + PASCALSTRASSE 6 + D 52076 AACHEN + GERMANY + +00-60-AA (hex) INTELLIGENT DEVICES INC. (IDI) +0060AA (base 16) INTELLIGENT DEVICES INC. (IDI) + 1718-L BELMONT AVENUE + BALTIMORE MD 21244 + UNITED STATES + +00-60-AB (hex) LARSCOM INCORPORATED +0060AB (base 16) LARSCOM INCORPORATED + 1845 MCCANDLESS DRIVE + MILPITAS CA 95035 + UNITED STATES + +00-60-AC (hex) RESILIENCE CORPORATION +0060AC (base 16) RESILIENCE CORPORATION + 1755 EMBARCADERO ROAD-STE #120 + PALO ALTO CA 94303 + UNITED STATES + +00-60-AD (hex) MegaChips Corporation +0060AD (base 16) MegaChips Corporation + 4-1-6,Miyahara + Yodogawa-ku + Osaka 532-0003 + JAPAN + +00-60-AE (hex) TRIO INFORMATION SYSTEMS AB +0060AE (base 16) TRIO INFORMATION SYSTEMS AB + FOGDEVAGEN 4B + S-183 64 TABY + SWEDEN + +00-60-AF (hex) PACIFIC MICRO DATA, INC. +0060AF (base 16) PACIFIC MICRO DATA, INC. + 16751 MILLIKAN AVENUE + IRVINE CA 92714 + UNITED STATES + +00-60-B0 (hex) HEWLETT-PACKARD CO. +0060B0 (base 16) HEWLETT-PACKARD CO. + MS 42LE + 10000 WOLFE ROAD + CUPERTINO CA 95014 + UNITED STATES + +00-60-B1 (hex) INPUT/OUTPUT, INC. +0060B1 (base 16) INPUT/OUTPUT, INC. + 12300 PARC CREST DRIVE + STAFFORD TX 77477-2416 + UNITED STATES + +00-60-B2 (hex) PROCESS CONTROL CORP. +0060B2 (base 16) PROCESS CONTROL CORP. + 6875 MIMMS DRIVE + ATLANTA GA 30340 + UNITED STATES + +00-60-B3 (hex) Z-COM, INC. +0060B3 (base 16) Z-COM, INC. + 7F-2, NO.9, PROSPERITY 1ST RD. + SCIENCE-BASED INDUSTRIAL PARK + HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-60-B4 (hex) GLENAYRE R&D INC. +0060B4 (base 16) GLENAYRE R&D INC. + 1570 KOOTENAY STREET + VANCOUVER, BC V5K 5B8 + CANADA + +00-60-B5 (hex) KEBA GmbH +0060B5 (base 16) KEBA GmbH + GEWERBEPARK URFAHR + A-4041 LINZ + AUSTRIA + +00-60-B6 (hex) LAND COMPUTER CO., LTD. +0060B6 (base 16) LAND COMPUTER CO., LTD. + 7-4-17 NISHINAKAJIMA + YODOGAWAKU 532 + JAPAN + +00-60-B7 (hex) CHANNELMATIC, INC. +0060B7 (base 16) CHANNELMATIC, INC. + 1700 GILLESPIE WAY + EL CAJON CA 92020-0901 + UNITED STATES + +00-60-B8 (hex) CORELIS Inc. +0060B8 (base 16) CORELIS Inc. + 12607 Hiddencreek Way + Cerritos CA 90703 + UNITED STATES + +00-60-B9 (hex) NITSUKO CORPORATION +0060B9 (base 16) NITSUKO CORPORATION + 2-6-1 KITAMIKATA, TAKATSU-KU + KAWASAKI-SHI 213 + JAPAN + +00-60-BA (hex) SAHARA NETWORKS, INC. +0060BA (base 16) SAHARA NETWORKS, INC. + 335 HIGHLAND AVE. + CHESHIRE CT 06410 + UNITED STATES + +00-60-BB (hex) CABLETRON - NETLINK, INC. +0060BB (base 16) CABLETRON - NETLINK, INC. + 35 INDUSTRIAL WAY + P.O. BOX 5005 + ROCHESTER NH 03866-5005 + UNITED STATES + +00-60-BC (hex) KeunYoung Electronics & Communication Co., Ltd. +0060BC (base 16) KeunYoung Electronics & Communication Co., Ltd. + 325-76, DAEHEUNG-DONG, MAPO-GU, + SEOUL + KOREA, REPUBLIC OF + +00-60-BD (hex) HUBBELL-PULSECOM +0060BD (base 16) HUBBELL-PULSECOM + 2900 TOWERVIEW ROAD + HERNDON VA 21071 + UNITED STATES + +00-60-BE (hex) WEBTRONICS +0060BE (base 16) WEBTRONICS + 3B-1 8-2-12 + NISHI-GOTANDA + SHINAGAWA-KU TOKYO 141 + JAPAN + +00-60-BF (hex) MACRAIGOR SYSTEMS, INC. +0060BF (base 16) MACRAIGOR SYSTEMS, INC. + PO BOX 1008 + BROOKLINE VILLAGE MA 02147 + UNITED STATES + +00-60-C0 (hex) Nera Networks AS +0060C0 (base 16) Nera Networks AS + P.O. Box 7090 + Bergen N-5020 + NORWAY + +00-60-C1 (hex) WaveSpan Corporation +0060C1 (base 16) WaveSpan Corporation + 500 N. BERNARDO AVE. + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-60-C2 (hex) MPL AG +0060C2 (base 16) MPL AG + Taefernstrasse 20 + CH-5405 Daettwil + SWITZERLAND + +00-60-C3 (hex) NETVISION CORPORATION +0060C3 (base 16) NETVISION CORPORATION + MS# 1A + ONE COMAC LOOP + RONKONKOMA NY 11779 + UNITED STATES + +00-60-C4 (hex) SOLITON SYSTEMS K.K. +0060C4 (base 16) SOLITON SYSTEMS K.K. + 2-4-3 SHINJUKU, SHINJUKU-KU + TOKYO 160 + JAPAN + +00-60-C5 (hex) ANCOT CORP. +0060C5 (base 16) ANCOT CORP. + 115 CONSTITUTION DR. + MENLO PARK CA 94025 + UNITED STATES + +00-60-C6 (hex) DCS AG +0060C6 (base 16) DCS AG + SALZACHSTRASS 31 + D-14129 BERLIN + GERMANY + +00-60-C7 (hex) AMATI COMMUNICATIONS CORP. +0060C7 (base 16) AMATI COMMUNICATIONS CORP. + 2043 SAMARITAN DRIVE + SAN JOSE CA 95124 + UNITED STATES + +00-60-C8 (hex) KUKA WELDING SYSTEMS & ROBOTS +0060C8 (base 16) KUKA WELDING SYSTEMS & ROBOTS + BLUECHERSTRASSE 144 + DEPT. RE-SH + D-86165 AUGSBURG + GERMANY + +00-60-C9 (hex) ControlNet, Inc. +0060C9 (base 16) ControlNet, Inc. + 747 CAMDEN, STE. A + CAMPBELL CA 95008 + UNITED STATES + +00-60-CA (hex) HARMONIC SYSTEMS INCORPORATED +0060CA (base 16) HARMONIC SYSTEMS INCORPORATED + 199 1ST STREET - STE #302 + LOS ALTOS CA 94022 + UNITED STATES + +00-60-CB (hex) HITACHI ZOSEN CORPORATION +0060CB (base 16) HITACHI ZOSEN CORPORATION + 3-4, SAKURAJIMA 1-CHOME + KONOHANA-KU, OSAKA 554 + JAPAN + +00-60-CC (hex) EMTRAK, INCORPORATED +0060CC (base 16) EMTRAK, INCORPORATED + 7150 CAMPUS DRIVE, STE #180 + COLORADO SPRINGS CO 80920 + UNITED STATES + +00-60-CD (hex) VideoServer, Inc. +0060CD (base 16) VideoServer, Inc. + 5 FORBES ROAD + LEXINGTON MA 02173 + UNITED STATES + +00-60-CE (hex) ACCLAIM COMMUNICATIONS +0060CE (base 16) ACCLAIM COMMUNICATIONS + 5000 OLD IRONSIDES DRIVE + SANTA CLARA CA 95054 + UNITED STATES + +00-60-CF (hex) ALTEON NETWORKS, INC. +0060CF (base 16) ALTEON NETWORKS, INC. + 50 GREAT OAKS BLVD. + SAN JOSE CA 95119 + UNITED STATES + +00-60-D0 (hex) SNMP RESEARCH INCORPORATED +0060D0 (base 16) SNMP RESEARCH INCORPORATED + 3001 KIMBERLIN HEIGHTS ROAD + KNOXVILLE TN 37920-9716 + UNITED STATES + +00-60-D1 (hex) CASCADE COMMUNICATIONS +0060D1 (base 16) CASCADE COMMUNICATIONS + 6 TECHNOLOGY PARK DRIVE + WESTFORD MA 01886 + UNITED STATES + +00-60-D2 (hex) LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD. +0060D2 (base 16) LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD. + #2, INNOVATION ROAD II + SCIENCE-BASED INDUSTRIAL PARK + HSIN CHU + TAIWAN, REPUBLIC OF CHINA + +00-60-D3 (hex) AT&T +0060D3 (base 16) AT&T + 101 CRAWFORDS CORNER ROAD, Rd. 1J321 + P.O. BOX 3030 + HOLMDEL NJ 07733-3030 + UNITED STATES + +00-60-D4 (hex) ELDAT COMMUNICATION LTD. +0060D4 (base 16) ELDAT COMMUNICATION LTD. + 10 HAKISHON STREET + BNEI-BRAK 51203 + ISRAEL + +00-60-D5 (hex) MIYACHI TECHNOS CORP. +0060D5 (base 16) MIYACHI TECHNOS CORP. + 95-3, FUTASUZUKA + NODA CITY, CHIBA, 278 + JAPAN + +00-60-D6 (hex) NovAtel Wireless Technologies Ltd. +0060D6 (base 16) NovAtel Wireless Technologies Ltd. + SUITE 200, 6715-8TH STREET NE + CALGARY, ALBERTA T2E 8M4 + CANADA + +00-60-D7 (hex) ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL) +0060D7 (base 16) ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL) + ECUBLENS + CH-1015 LAUSANNE + SWITZERLAND + +00-60-D8 (hex) ELMIC SYSTEMS, INC. +0060D8 (base 16) ELMIC SYSTEMS, INC. + DAI-ICHI SEIMEI BLDG. + 4-59 BENTEN-DORI, NAKA-KU + YOKOHAMA 231 + JAPAN + +00-60-D9 (hex) TRANSYS NETWORKS INC. +0060D9 (base 16) TRANSYS NETWORKS INC. + 3403 GRIFFITH + ST. LAURENT, QUEBEC H4T 1W5 + CANADA + +00-60-DA (hex) JBM ELECTRONICS CO. +0060DA (base 16) JBM ELECTRONICS CO. + 4645 LaGuardian Drive + ST. LOUIS MO 63134 + UNITED STATES + +00-60-DB (hex) NTP ELEKTRONIK A/S +0060DB (base 16) NTP ELEKTRONIK A/S + KNAPHOLM 7 + DK-2730 HERLEV + DENMARK + +00-60-DC (hex) Toyo Network Systems & System Integration Co. LTD +0060DC (base 16) Toyo Network Systems & System Integration Co. LTD + 18 Nihon-odori,Naka-ku + Yokohama, Kanagawa 231-0021 + JAPAN + +00-60-DD (hex) MYRICOM, INC. +0060DD (base 16) MYRICOM, INC. + 325B N. SANTA ANITA AVE. + ARCADIA CA 91006 + UNITED STATES + +00-60-DE (hex) Kayser-Threde GmbH +0060DE (base 16) Kayser-Threde GmbH + Wolfratshauser Str. 48 + D-81379 Munich + GERMANY + +00-60-DF (hex) Brocade Communications Systems, Inc. +0060DF (base 16) Brocade Communications Systems, Inc. + 1745 Technology Dr. + San Jose CA 95110 + UNITED STATES + +00-60-E0 (hex) AXIOM TECHNOLOGY CO., LTD. +0060E0 (base 16) AXIOM TECHNOLOGY CO., LTD. + 3F, 14, LANE 235 + PAO CHIAO ROAD, HSIN TIEN + TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-60-E1 (hex) ORCKIT COMMUNICATIONS LTD. +0060E1 (base 16) ORCKIT COMMUNICATIONS LTD. + 38 NAHALAT YIZHAK STREET + TEL-AVIV 67448 + ISRAEL + +00-60-E2 (hex) QUEST ENGINEERING & DEVELOPMENT +0060E2 (base 16) QUEST ENGINEERING & DEVELOPMENT + 1345 EAST ROCK WREN ROAD + PHOENIX AZ 85048 + UNITED STATES + +00-60-E3 (hex) ARBIN INSTRUMENTS +0060E3 (base 16) ARBIN INSTRUMENTS + 3206 LONGMIRE DRIVE + COLLEGE STATION TX 77845 + UNITED STATES + +00-60-E4 (hex) COMPUSERVE, INC. +0060E4 (base 16) COMPUSERVE, INC. + 5000 ARLINGTON CENTRE BLVD. + P.O. BOX 20212 + COLUMBUS OH 43220 + UNITED STATES + +00-60-E5 (hex) FUJI AUTOMATION CO., LTD. +0060E5 (base 16) FUJI AUTOMATION CO., LTD. + 3-23-10, NEGISHI + URAWA-SHI, 336 SAITAMA + JAPAN + +00-60-E6 (hex) SHOMITI SYSTEMS INCORPORATED +0060E6 (base 16) SHOMITI SYSTEMS INCORPORATED + 2099 GATEWAY PLACE - STE.#220 + SAN JOSE CA 95110 + UNITED STATES + +00-60-E7 (hex) RANDATA +0060E7 (base 16) RANDATA + PO BOX 209 + HAWTHORN VIC 3122 + AUSTRALIA + +00-60-E8 (hex) HITACHI COMPUTER PRODUCTS (AMERICA), INC. +0060E8 (base 16) HITACHI COMPUTER PRODUCTS (AMERICA), INC. + 3101 TASMAN DRIVE + SANTA CLARA CA 95054 + UNITED STATES + +00-60-E9 (hex) ATOP TECHNOLOGIES, INC. +0060E9 (base 16) ATOP TECHNOLOGIES, INC. + SUITE 305, NO. 47, PARK AVENUE II, + SCIENCE-BASED INDUSTRIAL PARK + HSINCHU 30047 + TAIWAN, REPUBLIC OF CHINA + +00-60-EA (hex) StreamLogic +0060EA (base 16) StreamLogic + 21329 NORDHOFF STREET + CHATSWORTH CA 91311 + UNITED STATES + +00-60-EB (hex) FOURTHTRACK SYSTEMS +0060EB (base 16) FOURTHTRACK SYSTEMS + UNIT 3 THE SYCAMORES + 27 MILL ROAD + MARLOW - SL7 1QB + UNITED KINGDOM + +00-60-EC (hex) HERMARY OPTO ELECTRONICS INC. +0060EC (base 16) HERMARY OPTO ELECTRONICS INC. + 201-4050 GRAVELEY ST + BURNABY, BC V5C-3T6 + CANADA + +00-60-ED (hex) RICARDO TEST AUTOMATION LTD. +0060ED (base 16) RICARDO TEST AUTOMATION LTD. + LOWESMOOR WHARF + WORCESTER, WR12RS + UNITED KINGDOM + +00-60-EE (hex) APOLLO +0060EE (base 16) APOLLO + 3610 BIRCH STREET--STE #100 + NEWPORT BEACH CA 92660 + UNITED STATES + +00-60-EF (hex) FLYTECH TECHNOLOGY CO., LTD. +0060EF (base 16) FLYTECH TECHNOLOGY CO., LTD. + 2FL. NO. 8, LANE 50, SEC.3 + NAN KANG ROAD + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-60-F0 (hex) JOHNSON & JOHNSON MEDICAL, INC +0060F0 (base 16) JOHNSON & JOHNSON MEDICAL, INC + 4110 GEORGE RD. + TAMPA FL 33634 + UNITED STATES + +00-60-F1 (hex) EXP COMPUTER, INC. +0060F1 (base 16) EXP COMPUTER, INC. + 141 EILEEN WAY + SYOSSET NY 11791 + UNITED STATES + +00-60-F2 (hex) LASERGRAPHICS, INC. +0060F2 (base 16) LASERGRAPHICS, INC. + 20 ADA + IRVINE CA 92718 + UNITED STATES + +00-60-F3 (hex) Performance Analysis Broadband, Spirent plc +0060F3 (base 16) Performance Analysis Broadband, Spirent plc + 27349 Agoura Road + Calabasas Hills CA 91301 + UNITED STATES + +00-60-F4 (hex) ADVANCED COMPUTER SOLUTIONS, Inc. +0060F4 (base 16) ADVANCED COMPUTER SOLUTIONS, Inc. + 12675 DANIELSON COURT + SUITE #407 + POWAY CA 92064 + UNITED STATES + +00-60-F5 (hex) ICON WEST, INC. +0060F5 (base 16) ICON WEST, INC. + 3342 SOUTH 300 EAST + SALT LAKE CITY UT 84115 + UNITED STATES + +00-60-F6 (hex) NEXTEST COMMUNICATIONS PRODUCTS, INC. +0060F6 (base 16) NEXTEST COMMUNICATIONS PRODUCTS, INC. + TWO MID AMERICA PLAZA, STE.500 + OAKBROOK TERRACE IL 60181 + UNITED STATES + +00-60-F7 (hex) DATAFUSION SYSTEMS +0060F7 (base 16) DATAFUSION SYSTEMS + P.O. BOX 582 + STELLENBOSCH, 7599 + SOUTH AFRICA + +00-60-F8 (hex) Loran International Technologies Inc. +0060F8 (base 16) Loran International Technologies Inc. + 955 GREEN VALLEY CRESCENT + SUITE #165 + OTTAWA, ONTARIO K2C 3V4 + CANADA + +00-60-F9 (hex) DIAMOND LANE COMMUNICATIONS +0060F9 (base 16) DIAMOND LANE COMMUNICATIONS + 1310 REDWOOD WAY - STE. + PETALUMA CA 94954 + UNITED STATES + +00-60-FA (hex) EDUCATIONAL TECHNOLOGY RESOURCES, INC. +0060FA (base 16) EDUCATIONAL TECHNOLOGY RESOURCES, INC. + 1742 CHURCH STREET + HOLBROOK NY 11741 + UNITED STATES + +00-60-FB (hex) PACKETEER, INC. +0060FB (base 16) PACKETEER, INC. + 10201 N. DE ANZA BOULEVARD + CUPERTINO CA 95014 + UNITED STATES + +00-60-FC (hex) CONSERVATION THROUGH INNOVATION LTD. +0060FC (base 16) CONSERVATION THROUGH INNOVATION LTD. + 1040 WHIPPLE ST.- STE. #225 + PRESCOTT AZ 86301 + UNITED STATES + +00-60-FD (hex) NetICs, Inc. +0060FD (base 16) NetICs, Inc. + 42 NAGOG PARK + ACTON MA 01720 + UNITED STATES + +00-60-FE (hex) LYNX SYSTEM DEVELOPERS, INC. +0060FE (base 16) LYNX SYSTEM DEVELOPERS, INC. + 175N NEW BOSTON STREET + WOBURN MA 01801 + UNITED STATES + +00-60-FF (hex) QuVis, Inc. +0060FF (base 16) QuVis, Inc. + 2921 SW WANAMAKER DRIVE + SUITE #107 + TOPEKA KS 66614 + UNITED STATES + +00-70-B0 (hex) M/A-COM INC. COMPANIES +0070B0 (base 16) M/A-COM INC. COMPANIES + 11717 EXPLORATION LANE + GERMANTOWN MD 20767 + UNITED STATES + +00-70-B3 (hex) DATA RECALL LTD. +0070B3 (base 16) DATA RECALL LTD. + SONDES PLACE + DORKING SURREY RH4 3EF + UNITED KINGDOM + UNITED KINGDOM + +00-80-00 (hex) MULTITECH SYSTEMS, INC. +008000 (base 16) MULTITECH SYSTEMS, INC. + 2205 WOODALE DRIVE + MOUNDS VIEW MN 55112 + UNITED STATES + +00-80-01 (hex) PERIPHONICS CORPORATION +008001 (base 16) PERIPHONICS CORPORATION + 4000 VETERANS MEMORIAL HIGHWAY + BOHEMIA NEW YORK 11716 + UNITED STATES + +00-80-02 (hex) SATELCOM (UK) LTD +008002 (base 16) SATELCOM (UK) LTD + TECHNOLOGY TRANSFER CENTRE + SILWOOD PARK, BUCKHURST ROAD ASCOT, BERK + ENGLAND + UNITED KINGDOM + +00-80-03 (hex) HYTEC ELECTRONICS LTD. +008003 (base 16) HYTEC ELECTRONICS LTD. + 5 CRADOCK ROAD + READING BERKS RG5 4DX + ENGLAND + UNITED KINGDOM + +00-80-04 (hex) ANTLOW COMMUNICATIONS, LTD. +008004 (base 16) ANTLOW COMMUNICATIONS, LTD. + 4 COLTHROP WAY + THATCHAM RG19 4LW + ENGLAND + UNITED KINGDOM + +00-80-05 (hex) CACTUS COMPUTER INC. +008005 (base 16) CACTUS COMPUTER INC. + 1120 METROCREST DRIVE + SUITE 103 + CARROLLTON TX 75006 + UNITED STATES + +00-80-06 (hex) COMPUADD CORPORATION +008006 (base 16) COMPUADD CORPORATION + ENGINEERING + 12303 TECHNOLOGY BLVD. + AUSTIN TX 78727 + UNITED STATES + +00-80-07 (hex) DLOG NC-SYSTEME +008007 (base 16) DLOG NC-SYSTEME + WERNER-VON-SIEMENS STRASSE 13 + D-8037, OLCHING + GERMANY + +00-80-08 (hex) DYNATECH COMPUTER SYSTEMS +008008 (base 16) DYNATECH COMPUTER SYSTEMS + 280 BERNARDO AVENUE + P.O. BOX 7400 + MOUNTAIN VIEW CA 94039-7400 + UNITED STATES + +00-80-09 (hex) JUPITER SYSTEMS, INC. +008009 (base 16) JUPITER SYSTEMS, INC. + 3073 TEAGARDEN STREET + SAN LEANDRO CA 94577-5720 + UNITED STATES + +00-80-0A (hex) JAPAN COMPUTER CORP. +00800A (base 16) JAPAN COMPUTER CORP. + L. K. BLDG. HIGASHI KANDA + 2-6-9 CHIYODA-KU TOKYO 101 + JAPAN + JAPAN + +00-80-0B (hex) CSK CORPORATION +00800B (base 16) CSK CORPORATION + 18F MATSUSHITA IMP BLDG, + 1-3-7 SHIROMI CHUO-KU OSAKA + JAPAN 540 + JAPAN + +00-80-0C (hex) VIDECOM LIMITED +00800C (base 16) VIDECOM LIMITED + NEWTOWN ESTATE + HENLEY-ON-THAMES OXON RG9 1HG + ENGLAND + UNITED KINGDOM + +00-80-0D (hex) VOSSWINKEL F.U. +00800D (base 16) VOSSWINKEL F.U. + AM JOSTENHOF 15 + D-4130 MOERS + GERMANY + GERMANY + +00-80-0E (hex) ATLANTIX CORPORATION +00800E (base 16) ATLANTIX CORPORATION + 5401 NW BROKENSOUND BLVD. + BOCA RATON FL 33431 + UNITED STATES + +00-80-0F (hex) STANDARD MICROSYSTEMS +00800F (base 16) STANDARD MICROSYSTEMS + 300 KENNEDY DRIVE + HAUPPAUGE NY 11788 + UNITED STATES + +00-80-10 (hex) COMMODORE INTERNATIONAL +008010 (base 16) COMMODORE INTERNATIONAL + 1200 WILSON DRIVE + WEST CHESTER PA 19380 + UNITED STATES + +00-80-11 (hex) DIGITAL SYSTEMS INT'L. INC. +008011 (base 16) DIGITAL SYSTEMS INT'L. INC. + 7659 178TH PL. NE + P.O. BOX 908 + REDMOND WA 98073-0908 + UNITED STATES + +00-80-12 (hex) INTEGRATED MEASUREMENT SYSTEMS +008012 (base 16) INTEGRATED MEASUREMENT SYSTEMS + 9525 SW GEMINI DRIVE + BEAVERTON OR 97005 + UNITED STATES + +00-80-13 (hex) THOMAS-CONRAD CORPORATION +008013 (base 16) THOMAS-CONRAD CORPORATION + 1908-R KRAMER LANE + AUSTIN TX 78758 + UNITED STATES + +00-80-14 (hex) ESPRIT SYSTEMS +008014 (base 16) ESPRIT SYSTEMS + 14F, NO. 1, SEC. 4 + NAN KING EAST ROAD 10569 TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-80-15 (hex) SEIKO SYSTEMS, INC. +008015 (base 16) SEIKO SYSTEMS, INC. + SYSTEMS DEVELOPMENT DIVISION + 5-4 HACCHOBORI 4-CHOUME CHUUOU-KU TOKOYO + JAPAN + JAPAN + +00-80-16 (hex) WANDEL AND GOLTERMANN +008016 (base 16) WANDEL AND GOLTERMANN + 1030 SWABIA COURT + RESEARCH TRIANGLE PARK + NC 27709 + UNITED STATES + +00-80-17 (hex) PFU LIMITED +008017 (base 16) PFU LIMITED + NETWORK SEC. + 658-1, TSURUMA MACHIDA-SHI, TOKYO 194-00 + JAPAN + JAPAN + +00-80-18 (hex) KOBE STEEL, LTD. +008018 (base 16) KOBE STEEL, LTD. + KOBE ISUZU RECRUIT BLDG. + 7TH FLOOR 2-2, 4-CHOME, KUMOI-DORI, CHUO + JAPAN + JAPAN + +00-80-19 (hex) DAYNA COMMUNICATIONS, INC. +008019 (base 16) DAYNA COMMUNICATIONS, INC. + 50 SOUTH MAIN STREET-#530 + SALT LAKE CITY UTAH 84144 + UNITED STATES + +00-80-1A (hex) BELL ATLANTIC +00801A (base 16) BELL ATLANTIC + N92 W14612 ANTHONY AVENUE + MENOMONEE FALLS WI 53051 + UNITED STATES + +00-80-1B (hex) KODIAK TECHNOLOGY +00801B (base 16) KODIAK TECHNOLOGY + 2340 HARRIS WAY + SAN JOSE CA 95131 + UNITED STATES + +00-80-1C (hex) NEWPORT SYSTEMS SOLUTIONS +00801C (base 16) NEWPORT SYSTEMS SOLUTIONS + 4019 WESTERLY AVENUE + SUITE 103 + NEWPORT BEACH CA 92660 + UNITED STATES + +00-80-1D (hex) INTEGRATED INFERENCE MACHINES +00801D (base 16) INTEGRATED INFERENCE MACHINES + 1468 EAST KATELLA + ANAHEIM CA 92805 + UNITED STATES + +00-80-1E (hex) XINETRON, INC. +00801E (base 16) XINETRON, INC. + 2330 B. WALSH AVE. + SANTA CLARA CA 95051 + UNITED STATES + +00-80-1F (hex) KRUPP ATLAS ELECTRONIK GMBH +00801F (base 16) KRUPP ATLAS ELECTRONIK GMBH + P.O. BOX 448545 + D-2800 BREMEN 44 + GERMANY + +00-80-20 (hex) NETWORK PRODUCTS +008020 (base 16) NETWORK PRODUCTS + DIVISION OF ANDREW CORPORATION + 2771 PLAZA DEL AMO3 + TORRANCE CA 90503 + UNITED STATES + +00-80-21 (hex) Alcatel Canada Inc. +008021 (base 16) Alcatel Canada Inc. + 349 Terry Fox Drive + Kanata Ontario K2K 2V6 + CANADA + +00-80-22 (hex) SCAN-OPTICS +008022 (base 16) SCAN-OPTICS + 201 TECHNOLOGY DRIVE + IRVINE CA 92718 + UNITED STATES + +00-80-23 (hex) INTEGRATED BUSINESS NETWORKS +008023 (base 16) INTEGRATED BUSINESS NETWORKS + 1BN THE SYSTEMS CENTRE + 14, BRIDGEGATE BUSINESS PARK, GATEHOUSE + BUCKS HP19 3XN - ENGLAND + UNITED KINGDOM + +00-80-24 (hex) KALPANA, INC. +008024 (base 16) KALPANA, INC. + 1154 EAST ARQUES AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-80-25 (hex) STOLLMANN GMBH +008025 (base 16) STOLLMANN GMBH + MAX-BRAUER-ALLEE 81 + D-2000 HAMBURG 50 + GERMANY + GERMANY + +00-80-26 (hex) NETWORK PRODUCTS CORPORATION +008026 (base 16) NETWORK PRODUCTS CORPORATION + 1440 WEST COLORADO BLVD. + PASADENA CA 91105 + UNITED STATES + +00-80-27 (hex) ADAPTIVE SYSTEMS, INC. +008027 (base 16) ADAPTIVE SYSTEMS, INC. + 1400 N.W. COMPTON DRIVE + SUITE 340 + BEAVERTON OR 97006 + UNITED STATES + +00-80-28 (hex) TRADPOST (HK) LTD +008028 (base 16) TRADPOST (HK) LTD + 5/F, STAR CENTRE + 443-451 CASTLE PEAK ROAD KWAI CHUNG, N.T + HONG KONG + HONG KONG + +00-80-29 (hex) EAGLE TECHNOLOGY, INC. +008029 (base 16) EAGLE TECHNOLOGY, INC. + 6800 ORANGETHORPE AVE.UNIT + BUENA PARK CA 90620 + UNITED STATES + +00-80-2A (hex) TEST SYSTEMS & SIMULATIONS INC +00802A (base 16) TEST SYSTEMS & SIMULATIONS INC + 32429 INDUSTRIAL DRIVE + MADISON HEIGHTS MI 48071-1528 + UNITED STATES + +00-80-2B (hex) INTEGRATED MARKETING CO +00802B (base 16) INTEGRATED MARKETING CO + 1360 BORDEAUX DRIVE + BLDG. #4 + SUNNYVALE CA 94089 + UNITED STATES + +00-80-2C (hex) THE SAGE GROUP PLC +00802C (base 16) THE SAGE GROUP PLC + SAGE HOUSE, BENTON PARK ROAD + NEWCASTLE UPON TYNE NE7 7LZ + UNITED KINGDOM + UNITED KINGDOM + +00-80-2D (hex) XYLOGICS INC +00802D (base 16) XYLOGICS INC + 53 THIRD AVENUE + BURLINGTON MA 01803 + UNITED STATES + +00-80-2E (hex) CASTLE ROCK COMPUTING +00802E (base 16) CASTLE ROCK COMPUTING + 20837 BOYCE LANE + SARATOGA CA 95070-4806 + UNITED STATES + +00-80-2F (hex) NATIONAL INSTRUMENTS CORP. +00802F (base 16) NATIONAL INSTRUMENTS CORP. + 11500 North Mopac Expressway + AUSTIN TX 78759-3504 + UNITED STATES + +00-80-30 (hex) NEXUS ELECTRONICS +008030 (base 16) NEXUS ELECTRONICS + 39 SPRINGFIELD ROAD + CAMBRIDGE CB4 1AD + UNITED KINGDOM + UNITED KINGDOM + +00-80-31 (hex) BASYS, CORP. +008031 (base 16) BASYS, CORP. + 501 MACARA AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-80-32 (hex) ACCESS CO., LTD. +008032 (base 16) ACCESS CO., LTD. + HIEI-KUDAN BLDG. B1 + 3-8-11 KUDAN-MINAMI, CHIYODA-KU, TOKYO 1 + JAPAN + JAPAN + +00-80-33 (hex) FORMATION, INC. +008033 (base 16) FORMATION, INC. + 121 WHITTENDALE DRIVE + MOORESTOWN NJ 08057 + UNITED STATES + +00-80-34 (hex) SMT GOUPIL +008034 (base 16) SMT GOUPIL + 3 RUE DES ARCHIVES + 94000 CRETEIL + FRANCE + FRANCE + +00-80-35 (hex) TECHNOLOGY WORKS, INC. +008035 (base 16) TECHNOLOGY WORKS, INC. + 4030 BRAKER LANE #350 + AUSTIN TX 78759 + UNITED STATES + +00-80-36 (hex) REFLEX MANUFACTURING SYSTEMS +008036 (base 16) REFLEX MANUFACTURING SYSTEMS + UNIT D, THE FLEMING CENTRE, + FLEMING WAY, CRAWLEY WEST SUSSEX RH10 2N + ENGLAND + UNITED KINGDOM + +00-80-37 (hex) Ericsson Group +008037 (base 16) Ericsson Group + Telefonaktiebolaget + LM Ericsson Corp. 126 25 STOCKHOLM + SWEDEN + SWEDEN + +00-80-38 (hex) DATA RESEARCH & APPLICATIONS +008038 (base 16) DATA RESEARCH & APPLICATIONS + 9041 EXECUTIVE PARK DR. + SUITE 200 + KNOXVILLE TN 37923-4609 + UNITED STATES + +00-80-39 (hex) ALCATEL STC AUSTRALIA +008039 (base 16) ALCATEL STC AUSTRALIA + 252-280 BOTANY ROAD + ALEXANDRIA, NSW 2015 + AUSTRALIA + AUSTRALIA + +00-80-3A (hex) VARITYPER, INC. +00803A (base 16) VARITYPER, INC. + 900 MIDDLESEX TURNPIKE + BILLERICA MA 01821 + UNITED STATES + +00-80-3B (hex) APT COMMUNICATIONS, INC. +00803B (base 16) APT COMMUNICATIONS, INC. + 9607 DR. PERRY ROAD + IJAMSVILLE MD 21754 + UNITED STATES + +00-80-3C (hex) TVS ELECTRONICS LTD +00803C (base 16) TVS ELECTRONICS LTD + 44, MILLER ROAD + BANGALORE 560 052 + INDIA + INDIA + +00-80-3D (hex) SURIGIKEN CO., LTD. +00803D (base 16) SURIGIKEN CO., LTD. + YOUTH BLDG, 4-1-9 SHINJUKU + SHINJUKU-KU, TOKYO + JAPAN + JAPAN + +00-80-3E (hex) SYNERNETICS +00803E (base 16) SYNERNETICS + 85 RANGEWAY ROAD + NORTH BILLERICA MA 01862 + UNITED STATES + +00-80-3F (hex) TATUNG COMPANY +00803F (base 16) TATUNG COMPANY + 22 CHUNGSHANG N. RD. 3RD SEC. + TAIPEI TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-80-40 (hex) JOHN FLUKE MANUFACTURING CO. +008040 (base 16) JOHN FLUKE MANUFACTURING CO. + P.O. BOX C9090-M/S 244F + EVERETT WA 98206 + UNITED STATES + +00-80-41 (hex) VEB KOMBINAT ROBOTRON +008041 (base 16) VEB KOMBINAT ROBOTRON + GRUNAER STRABE 2, DRESDEN 8010 + GDR EAST GERMANY + GERMANY + +00-80-42 (hex) FORCE COMPUTERS +008042 (base 16) FORCE COMPUTERS + PROF. MESSERSCHMITTSTR.-1 + W - 8014 NEUBIBERG + GERMANY + GERMANY + +00-80-43 (hex) NETWORLD, INC. +008043 (base 16) NETWORLD, INC. + KANDA 3 AMEREX BLDG. + 3-10 KANDAJINBOCHO CHIYODA-KU TOKYO 1 + JAPAN + JAPAN + +00-80-44 (hex) SYSTECH COMPUTER CORP. +008044 (base 16) SYSTECH COMPUTER CORP. + 6465 NANCY RIDGE DRIVE + SAN DIEGO CA 92121 + UNITED STATES + +00-80-45 (hex) MATSUSHITA ELECTRIC IND. CO +008045 (base 16) MATSUSHITA ELECTRIC IND. CO + COMPUTER DIVISION + 1006, KADOMA, + OSAKA 571 JAPAN + JAPAN + +00-80-46 (hex) UNIVERSITY OF TORONTO +008046 (base 16) UNIVERSITY OF TORONTO + DEPT. OF ELECTRICAL ENGIN'ING + 10 KINGS COLLEGE RD. TORONTO, ONTARIO M5 + CANADA + CANADA + +00-80-47 (hex) IN-NET CORP. +008047 (base 16) IN-NET CORP. + 16720 WEST BERNARDO DRIVE + SAN DIEGO CA 92127-1904 + UNITED STATES + +00-80-48 (hex) COMPEX INCORPORATED +008048 (base 16) COMPEX INCORPORATED + 4055 EAST LA PALMA + UNIT + ANAHEIM CA 92807 + UNITED STATES + +00-80-49 (hex) NISSIN ELECTRIC CO., LTD. +008049 (base 16) NISSIN ELECTRIC CO., LTD. + 47, UMEZU - TAKASE - CHO + UKYO-KU, KYOTO, 615 + JAPAN + JAPAN + +00-80-4A (hex) PRO-LOG +00804A (base 16) PRO-LOG + 12 UPPER RAGSDALE DRIVE + MONTEREY CA 93940 + UNITED STATES + +00-80-4B (hex) EAGLE TECHNOLOGIES PTY.LTD. +00804B (base 16) EAGLE TECHNOLOGIES PTY.LTD. + 70 KEYS ROAD + MOORABBIN VIC. 3189 + AUSTRALIA + AUSTRALIA + +00-80-4C (hex) CONTEC CO., LTD. +00804C (base 16) CONTEC CO., LTD. + 3-9-31, HIMESATO + NISHIYODOGAWA-KU OSAKA, 555 + JAPAN + JAPAN + +00-80-4D (hex) CYCLONE MICROSYSTEMS, INC. +00804D (base 16) CYCLONE MICROSYSTEMS, INC. + 25 SCIENCE PARK + NEW HAVEN CT 06511 + UNITED STATES + +00-80-4E (hex) APEX COMPUTER COMPANY +00804E (base 16) APEX COMPUTER COMPANY + 4500 150TH AVENUE, NE + REDMOND WA 98052 + UNITED STATES + +00-80-4F (hex) DAIKIN INDUSTRIES, LTD. +00804F (base 16) DAIKIN INDUSTRIES, LTD. + ELECTRONICS DIVISION + SHIGA PLANT 1000-2 OHTANI OKAMOTO-CHO, K + JAPAN 525 + JAPAN + +00-80-50 (hex) ZIATECH CORPORATION +008050 (base 16) ZIATECH CORPORATION + 3433 ROBERTO COURT + SAN LUIS OBISPO CA 93401 + UNITED STATES + +00-80-51 (hex) FIBERMUX +008051 (base 16) FIBERMUX + 9310 TOPANGA CANYON BLVD. + CHATSWORTH CA 91311 + UNITED STATES + +00-80-52 (hex) TECHNICALLY ELITE CONCEPTS +008052 (base 16) TECHNICALLY ELITE CONCEPTS + 2615 PACIFIC COAST HIGHWAY + HERMOSA BEACH CA 90250 + UNITED STATES + +00-80-53 (hex) INTELLICOM, INC. +008053 (base 16) INTELLICOM, INC. + 20415 NORDHOFF STREET + CHATSWORTH CA 91311 + UNITED STATES + +00-80-54 (hex) FRONTIER TECHNOLOGIES CORP. +008054 (base 16) FRONTIER TECHNOLOGIES CORP. + 10201 NO. PT. WASHINGTON ROAD + MEQUON WI 53092 + UNITED STATES + +00-80-55 (hex) FERMILAB +008055 (base 16) FERMILAB + P.O. BOX 500, MS-234 + BATAVIA IL 60510 + UNITED STATES + +00-80-56 (hex) SPHINX ELEKTRONIK GMBH +008056 (base 16) SPHINX ELEKTRONIK GMBH + WALDMATTENSTR, 13 + 7808 WALDKIRCH 3 RAPPENECKSTRABE 1 + WEST GERMANY + GERMANY + +00-80-57 (hex) ADSOFT, LTD. +008057 (base 16) ADSOFT, LTD. + LANDSTRASSE 27A + CH-4313 MOHLIN + SWITZERLAND + SWITZERLAND + +00-80-58 (hex) PRINTER SYSTEMS CORPORATION +008058 (base 16) PRINTER SYSTEMS CORPORATION + 207 PARRY PARKWAY + GAITHERSBURG MD 20877 + UNITED STATES + +00-80-59 (hex) STANLEY ELECTRIC CO., LTD +008059 (base 16) STANLEY ELECTRIC CO., LTD + R&D LABORATORY + 1-3-1 EDA-NISHI, MIDORI-KU, YOKOHAMA-SHI + JAPAN + JAPAN + +00-80-5A (hex) TULIP COMPUTERS INTERNAT'L B.V +00805A (base 16) TULIP COMPUTERS INTERNAT'L B.V + P.O. BOX 3333 + 5203 DH 'S-HERTOGENBOSCH + THE NETHERLANDS + NETHERLANDS + +00-80-5B (hex) CONDOR SYSTEMS, INC. +00805B (base 16) CONDOR SYSTEMS, INC. + 2133 SAMARILTAN DRIVE + SAN JOSE CA 95124 + UNITED STATES + +00-80-5C (hex) AGILIS CORPORATION +00805C (base 16) AGILIS CORPORATION + 1101 SAN ANTONIO ROAD + SUITE 101 + Mountain View CA 94043-1008 + UNITED STATES + +00-80-5D (hex) CANSTAR +00805D (base 16) CANSTAR + 3900 VICTORIA PARK AVENUE + NORTH YORK ONTARIO, CANADA + M2H 3H7 + CANADA + +00-80-5E (hex) LSI LOGIC CORPORATION +00805E (base 16) LSI LOGIC CORPORATION + 1551 MCCARTHY BOULEVARD + MS G813 + MILPITAS CA 95035 + UNITED STATES + +00-80-5F (hex) COMPAQ COMPUTER CORPORATION +00805F (base 16) COMPAQ COMPUTER CORPORATION + 20555 SH 249 + HOUSTON TEXAS 77070 + UNITED STATES + +00-80-60 (hex) NETWORK INTERFACE CORPORATION +008060 (base 16) NETWORK INTERFACE CORPORATION + 15019 WEST 95 STREET + LENEXA KS 66215 + UNITED STATES + +00-80-61 (hex) LITTON SYSTEMS, INC. +008061 (base 16) LITTON SYSTEMS, INC. + M/S 44-20 + 29851 AGOURA ROAD + AGOURA HILLS CA 91301-0500 + UNITED STATES + +00-80-62 (hex) INTERFACE CO. +008062 (base 16) INTERFACE CO. + 8-26 OZU 5-CHOME MINAMI-KU + HIROSHIMA 732 + JAPAN + JAPAN + +00-80-63 (hex) RICHARD HIRSCHMANN GMBH & CO. +008063 (base 16) RICHARD HIRSCHMANN GMBH & CO. + GESCHAFTSBEREICH + OPTISCHE UBERTRAGUNGSTECHNIK OBERTURKHEI + 7300 ESSLINGEN GERMANY + GERMANY + +00-80-64 (hex) WYSE TECHNOLOGY +008064 (base 16) WYSE TECHNOLOGY + 3471 NORTH FIRST STREET M/S + SAN JOSE CA 95134 + UNITED STATES + +00-80-65 (hex) CYBERGRAPHIC SYSTEMS PTY LTD. +008065 (base 16) CYBERGRAPHIC SYSTEMS PTY LTD. + 290 BURWOOD ROAD + HAWTHORN, VICTORIA 3122 + AUSTRALIA + AUSTRALIA + +00-80-66 (hex) ARCOM CONTROL SYSTEMS, LTD. +008066 (base 16) ARCOM CONTROL SYSTEMS, LTD. + UNIT 8, CLIFTON ROAD + CAMBRIDGE CBI 4WH + UNITED KINGDOM + UNITED KINGDOM + +00-80-67 (hex) SQUARE D COMPANY +008067 (base 16) SQUARE D COMPANY + 4041 NORTH RICHARD STREET + P.O. BOX 472 + MILWAUKEE WI 53201 + UNITED STATES + +00-80-68 (hex) YAMATECH SCIENTIFIC LTD. +008068 (base 16) YAMATECH SCIENTIFIC LTD. + 1255 LAIRD, SUITE 260 + MONTREAL, QUEBEC H3P 2T1 + CANADA + CANADA + +00-80-69 (hex) COMPUTONE SYSTEMS +008069 (base 16) COMPUTONE SYSTEMS + 1100 NORTHMEADOW PARKWAY + SUITE 150 + ROSWELL GA 30076 + UNITED STATES + +00-80-6A (hex) ERI (EMPAC RESEARCH INC.) +00806A (base 16) ERI (EMPAC RESEARCH INC.) + 47560 SEABRIDGE DRIVE + FREMONT CA 94538 + UNITED STATES + +00-80-6B (hex) SCHMID TELECOMMUNICATION +00806B (base 16) SCHMID TELECOMMUNICATION + BINZSTRASSE 35, + CH-8045 ZURICH + SWITZERLAND + SWITZERLAND + +00-80-6C (hex) CEGELEC PROJECTS LTD +00806C (base 16) CEGELEC PROJECTS LTD + DEPT. MDD, + BOUGHTON RD, RUGBY WARKS, CO21 1BU + ENGLAND + UNITED KINGDOM + +00-80-6D (hex) CENTURY SYSTEMS CORP. +00806D (base 16) CENTURY SYSTEMS CORP. + 2-8-12 MINAMI-CHO + KOKUBUNJI-SHI, TOKYO + 185 JAPAN + JAPAN + +00-80-6E (hex) NIPPON STEEL CORPORATION +00806E (base 16) NIPPON STEEL CORPORATION + 31-1 SHINKAWA 2-CHOUME + CHUO-KU TOKYO 104 + JAPAN + JAPAN + +00-80-6F (hex) ONELAN LTD. +00806F (base 16) ONELAN LTD. + P.O. BOX 107 + HENLEY ON THAMES OXFORDSHIRE RG9 3NOQ + UNITED KINGDOM + UNITED KINGDOM + +00-80-70 (hex) COMPUTADORAS MICRON +008070 (base 16) COMPUTADORAS MICRON + GUERRERO 2001 - 19 + IRAPUATO GTO 36660 + MEXICO + MEXICO + +00-80-71 (hex) SAI TECHNOLOGY +008071 (base 16) SAI TECHNOLOGY + 4224 CAMPUS POINT COURT + SAN DIEGO CA 92121-1513 + UNITED STATES + +00-80-72 (hex) MICROPLEX SYSTEMS LTD. +008072 (base 16) MICROPLEX SYSTEMS LTD. + 104-2071 Kingsway + Port Coquitlam, BC V3C 6N2 + CANADA + +00-80-73 (hex) DWB ASSOCIATES +008073 (base 16) DWB ASSOCIATES + 9360 SW GEMINI DRIVE + BEAVERTON OR 97005-7151 + UNITED STATES + +00-80-74 (hex) FISHER CONTROLS +008074 (base 16) FISHER CONTROLS + 1712 CENTRE CREEK DRIVE + AUSTIN TX 78754 + UNITED STATES + +00-80-75 (hex) PARSYTEC GMBH +008075 (base 16) PARSYTEC GMBH + JUELICHER STR. 338 + D5100 AACHEN + F.R. GERMANY + GERMANY + +00-80-76 (hex) MCNC +008076 (base 16) MCNC + P.O. BOX 12889 + RTP NC 27709 + UNITED STATES + +00-80-77 (hex) BROTHER INDUSTRIES, LTD. +008077 (base 16) BROTHER INDUSTRIES, LTD. + RESEARCH LABORATORY + 9-35 HORITA-DORI, MIZUHO-KU NAGOYA, 467 + JAPAN + +00-80-78 (hex) PRACTICAL PERIPHERALS, INC. +008078 (base 16) PRACTICAL PERIPHERALS, INC. + 375 CONEJO RIDGE AVENUE + THOUSAND OAKS CA 91361 + UNITED STATES + +00-80-79 (hex) MICROBUS DESIGNS LTD. +008079 (base 16) MICROBUS DESIGNS LTD. + TREADAWAY HILL + LOUDWATER HIGH WYCOMBE BUCKS HP10 9QL + UNITED KINGDOM + UNITED KINGDOM + +00-80-7A (hex) AITECH SYSTEMS LTD. +00807A (base 16) AITECH SYSTEMS LTD. + 3080 OLCOTT STREET + SUITE 105A + SANTA CLARA CA 95054 + UNITED STATES + +00-80-7B (hex) ARTEL COMMUNICATIONS CORP. +00807B (base 16) ARTEL COMMUNICATIONS CORP. + 22 KANE INDUSTRIAL DRIVE + HUDSON MA 01749 + UNITED STATES + +00-80-7C (hex) FIBERCOM, INC. +00807C (base 16) FIBERCOM, INC. + 3353 ORANGE AVENUE NE + ROANOKE VA 24012 + UNITED STATES + +00-80-7D (hex) EQUINOX SYSTEMS INC. +00807D (base 16) EQUINOX SYSTEMS INC. + 14260 SW 119TH AVENUE + MIAMI FL 33186 + UNITED STATES + +00-80-7E (hex) SOUTHERN PACIFIC LTD. +00807E (base 16) SOUTHERN PACIFIC LTD. + SANWA BLDG., 2-16-20 + MINAMISAIWAI NISHI YOKOHAMA + JAPAN JAPAN 220 + JAPAN + +00-80-7F (hex) DY-4 INCORPORATED +00807F (base 16) DY-4 INCORPORATED + 333 PALLADIUM DRIVE, MS 312 + KANATA, ONTARIO, K2V 1A6 + CANADA + CANADA + +00-80-80 (hex) DATAMEDIA CORPORATION +008080 (base 16) DATAMEDIA CORPORATION + 7401 CENTRAL HIGHWAY + PENNSAUKEN NJ 08109 + UNITED STATES + +00-80-81 (hex) KENDALL SQUARE RESEARCH CORP. +008081 (base 16) KENDALL SQUARE RESEARCH CORP. + 170 TRACER LANE + WALTHAM MA 02154-1379 + UNITED STATES + +00-80-82 (hex) PEP MODULAR COMPUTERS GMBH +008082 (base 16) PEP MODULAR COMPUTERS GMBH + APFELSTRANGER STR. 16 + D - 8950 KAUFBEUREN + WEST GERMANY + GERMANY + +00-80-83 (hex) AMDAHL +008083 (base 16) AMDAHL + 1250 EAST ARQUES AVENUE + M/S 286 P.O. BOX 3470 + SUNNYVALE CA 94088-3470 + UNITED STATES + +00-80-84 (hex) THE CLOUD INC. +008084 (base 16) THE CLOUD INC. + CLOUD BLDG. + 71-1, CHEONG-DAM DONG KANG-NAM KU, SEOUL + KOREA + KOREA, REPUBLIC OF + +00-80-85 (hex) H-THREE SYSTEMS CORPORATION +008085 (base 16) H-THREE SYSTEMS CORPORATION + 100 PARK DRIVE, SUITE 204 + RESEARCH TRIANGLE PARK + NC 27709 + UNITED STATES + +00-80-86 (hex) COMPUTER GENERATION INC. +008086 (base 16) COMPUTER GENERATION INC. + 3855 PRESIDENTIAL PARKWAY + ATLANTA GA 30340 + UNITED STATES + +00-80-87 (hex) OKI ELECTRIC INDUSTRY CO., LTD +008087 (base 16) OKI ELECTRIC INDUSTRY CO., LTD + 10-3 SHIBAURA 4-CHOME + MINATO-KU, TOKYO 108 + JAPAN + +00-80-88 (hex) VICTOR COMPANY OF JAPAN, LTD. +008088 (base 16) VICTOR COMPANY OF JAPAN, LTD. + 58-7 SHINMEI-CHO, YOKOSUKA + KANAGAWA 239 + JAPAN + JAPAN + +00-80-89 (hex) TECNETICS (PTY) LTD. +008089 (base 16) TECNETICS (PTY) LTD. + P.O. BOX/POSBUS 56412 + PINEGOWRIE, 2123 + SOUTH AFRICA + SOUTH AFRICA + +00-80-8A (hex) SUMMIT MICROSYSTEMS CORP. +00808A (base 16) SUMMIT MICROSYSTEMS CORP. + 710 LAKEWAY-STE.#150 + SUNNYVALE CA 940867 + UNITED STATES + +00-80-8B (hex) DACOLL LIMITED +00808B (base 16) DACOLL LIMITED + DACOLL HOUSE, GARDNERS LANE + BATHGATE WEST LOTHIAN + SCOTLAND EH48 1TP + UNITED KINGDOM + +00-80-8C (hex) NetScout Systems, Inc. +00808C (base 16) NetScout Systems, Inc. + 1501 MAIN STREET + SUITE #40 + TEWKSBURY MA 01876 + UNITED STATES + +00-80-8D (hex) WESTCOAST TECHNOLOGY B.V. +00808D (base 16) WESTCOAST TECHNOLOGY B.V. + P.O. BOX 3317 + 2601 DH DELFT + NETHERLANDS + NETHERLANDS + +00-80-8E (hex) RADSTONE TECHNOLOGY +00808E (base 16) RADSTONE TECHNOLOGY + WATER LANE, TOWCESTER + NORTHANTS NN12 7JN + ENGLAND + UNITED KINGDOM + +00-80-8F (hex) C. ITOH ELECTRONICS, INC. +00808F (base 16) C. ITOH ELECTRONICS, INC. + 2505 MCCABE WAY + IRVINE CA 92714 + UNITED STATES + +00-80-90 (hex) MICROTEK INTERNATIONAL, INC. +008090 (base 16) MICROTEK INTERNATIONAL, INC. + 3300 NW 211TH TERRACE + HILLSBOR OR 97124-7136 + UNITED STATES + +00-80-91 (hex) TOKYO ELECTRIC CO.,LTD +008091 (base 16) TOKYO ELECTRIC CO.,LTD + 10-14 UCHIKANDA + 1-CHOME CHIYODA-KU + TOKYO JAPAN 101 + JAPAN + +00-80-92 (hex) JAPAN COMPUTER INDUSTRY, INC. +008092 (base 16) JAPAN COMPUTER INDUSTRY, INC. + 1-6-20 KOSAKAHONMACHI + HIGASHI-OSAKA 577 + JAPAN + JAPAN + +00-80-93 (hex) XYRON CORPORATION +008093 (base 16) XYRON CORPORATION + 7864 LILY COURT + CUPERTINO CA 95014 + UNITED STATES + +00-80-94 (hex) ALFA LAVAL AUTOMATION AB +008094 (base 16) ALFA LAVAL AUTOMATION AB + ADN + S-205 22 MALMO + SWEDEN + SWEDEN + +00-80-95 (hex) BASIC MERTON HANDELSGES.M.B.H. +008095 (base 16) BASIC MERTON HANDELSGES.M.B.H. + DURCHLASS-STRASSE 42 + A - 9020 KLAGENFURT + AUSTRIA + AUSTRIA + +00-80-96 (hex) HUMAN DESIGNED SYSTEMS, INC. +008096 (base 16) HUMAN DESIGNED SYSTEMS, INC. + 421 FEHELEY DRIVE + KING OF PRUSSIA PA 19406 + UNITED STATES + +00-80-97 (hex) CENTRALP AUTOMATISMES +008097 (base 16) CENTRALP AUTOMATISMES + 21, RUE MARCEL PAGNOL 69694 + VENISSIEUX CEDEX + FRANCE + FRANCE + +00-80-98 (hex) TDK CORPORATION +008098 (base 16) TDK CORPORATION + CORP. R&D DEPT. TECH. HDQTERS. + 2-15-7, HIGASHI-OWADA, ICHIKAWA-SHI + CHIBA-KEN 272, JAPAN + JAPAN + +00-80-99 (hex) KLOCKNER MOELLER IPC +008099 (base 16) KLOCKNER MOELLER IPC + FRITZ-KOTZ-STR. 8 + P.O. BOX 13 80 D-5276 WIEHL 1-BOMIG + WEST GERMANY + GERMANY + +00-80-9A (hex) NOVUS NETWORKS LTD +00809A (base 16) NOVUS NETWORKS LTD + JOHN SCOTT HOUSE + MARKET STREET BRACKNELL, BERKW RG12 1JB + ENGLAND + UNITED KINGDOM + +00-80-9B (hex) JUSTSYSTEM CORPORATION +00809B (base 16) JUSTSYSTEM CORPORATION + 3-46 OKINOHAMAHIGASHI + TOKUSIMASHI 770 + JAPAN + JAPAN + +00-80-9C (hex) LUXCOM, INC. +00809C (base 16) LUXCOM, INC. + 3249 LAURELVIEW COURT + FREMONT CA 94538 + UNITED STATES + +00-80-9D (hex) Commscraft Ltd. +00809D (base 16) Commscraft Ltd. + PO BOX 160 + BENTLEY, W.A. 6102 + AUSTRALIA + AUSTRALIA + +00-80-9E (hex) DATUS GMBH +00809E (base 16) DATUS GMBH + INDUSTRIESTR. 2 + D-5102 WURSELEN/AACHEN + WEST GERMANY + GERMANY + +00-80-9F (hex) ALCATEL BUSINESS SYSTEMS +00809F (base 16) ALCATEL BUSINESS SYSTEMS + 54, AVENUE JEAN JAURES + 92707 COLOMBES CEDEX + FRANCE + +00-80-A0 (hex) EDISA HEWLETT PACKARD S/A +0080A0 (base 16) EDISA HEWLETT PACKARD S/A + ALAMEDA RIO NEGRO, + 750-ALPHAVILLE 06454-000 BARUERI SP + BRAZIL + BRAZIL + +00-80-A1 (hex) MICROTEST, INC. +0080A1 (base 16) MICROTEST, INC. + 4747 N. 22ND STREET + PHOENIX AZ 85016-4708 + UNITED STATES + +00-80-A2 (hex) CREATIVE ELECTRONIC SYSTEMS +0080A2 (base 16) CREATIVE ELECTRONIC SYSTEMS + 70 ROUTE DU PONT - BUTIN + CH-1213 PETIT-LANCY GENEVA + SWITZERLAND + SWITZERLAND + +00-80-A3 (hex) Lantronix +0080A3 (base 16) Lantronix + 15353 Barranca Parkway + Irvine CA 92618 + UNITED STATES + +00-80-A4 (hex) LIBERTY ELECTRONICS +0080A4 (base 16) LIBERTY ELECTRONICS + 332 HARBOR WAY + SOUTH SAN FRANCISCO CA 94080 + UNITED STATES + +00-80-A5 (hex) SPEED INTERNATIONAL +0080A5 (base 16) SPEED INTERNATIONAL + 1320 ARBOLITA DR. + LA HABRA CA 90631 + UNITED STATES + +00-80-A6 (hex) REPUBLIC TECHNOLOGY, INC. +0080A6 (base 16) REPUBLIC TECHNOLOGY, INC. + P.O. BOX 141006 + AUSTIN TX 78714 + UNITED STATES + +00-80-A7 (hex) MEASUREX CORP. +0080A7 (base 16) MEASUREX CORP. + 1 RESULTS WAY + CUPERTINO CA 95014-5991 + UNITED STATES + +00-80-A8 (hex) VITACOM CORPORATION +0080A8 (base 16) VITACOM CORPORATION + 1330 CHARLESTON ROAD + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-80-A9 (hex) CLEARPOINT RESEARCH +0080A9 (base 16) CLEARPOINT RESEARCH + 190 NORTH MAIN STREET + NATICK MA + UNITED STATES + +00-80-AA (hex) MAXPEED +0080AA (base 16) MAXPEED + 1120 CHESS DRIVE + FOSTER CITY CA 94404 + UNITED STATES + +00-80-AB (hex) DUKANE NETWORK INTEGRATION +0080AB (base 16) DUKANE NETWORK INTEGRATION + 2900 DUKANE DRIVE + ST. CHARLES IL 60174 + UNITED STATES + +00-80-AC (hex) IMLOGIX, DIVISION OF GENESYS +0080AC (base 16) IMLOGIX, DIVISION OF GENESYS + 1900 SUMMIT TOWER BLVD.STE#770 + ORLANDO FL 32810 + UNITED STATES + +00-80-AD (hex) CNET TECHNOLOGY, INC. +0080AD (base 16) CNET TECHNOLOGY, INC. + 2199 ZANKER ROAD + SAN JOSE CA 95131 + UNITED STATES + +00-80-AE (hex) HUGHES NETWORK SYSTEMS +0080AE (base 16) HUGHES NETWORK SYSTEMS + 11717 EXPLORATION LANE + GERMANTOWN MD 20876 + UNITED STATES + +00-80-AF (hex) ALLUMER CO., LTD. +0080AF (base 16) ALLUMER CO., LTD. + 2-8-8 CHUO-CHO, MEGURO-KU + TOKYO 152 + JAPAN + JAPAN + +00-80-B0 (hex) ADVANCED INFORMATION +0080B0 (base 16) ADVANCED INFORMATION + TECHNOLOGY, INC. + 5F 1-2-6 NIHONBASHI-HONCHO CHUO-KU, TOK + JAPAN + JAPAN + +00-80-B1 (hex) SOFTCOM A/S +0080B1 (base 16) SOFTCOM A/S + STUDIESTRAEDE 21 + DK 1455 COPENNHAGEN K. + DENMARK + DENMARK + +00-80-B2 (hex) NETWORK EQUIPMENT TECHNOLOGIES +0080B2 (base 16) NETWORK EQUIPMENT TECHNOLOGIES + 6900 PASEO PADRE PARKWAY + FREMONT CA 94555 + UNITED STATES + +00-80-B3 (hex) AVAL DATA CORPORATION +0080B3 (base 16) AVAL DATA CORPORATION + MACHIDA ENGINEERING CENTER + 1757-1 KANAI-CHO MACHIDA CITY TOKYO JAPA + JAPAN + JAPAN + +00-80-B4 (hex) SOPHIA SYSTEMS +0080B4 (base 16) SOPHIA SYSTEMS + 3337 KIFER ROAD + SANTA CLARA CA 95051 + UNITED STATES + +00-80-B5 (hex) UNITED NETWORKS INC. +0080B5 (base 16) UNITED NETWORKS INC. + 2178 PARAGON DRIVE + SAN JOSE CA 95131 + UNITED STATES + +00-80-B6 (hex) THEMIS COMPUTER +0080B6 (base 16) THEMIS COMPUTER + 6681 OWENS DRIVE + PLEASONTON CA 94588 + UNITED STATES + +00-80-B7 (hex) STELLAR COMPUTER +0080B7 (base 16) STELLAR COMPUTER + 95 WELLS AVENUE + NEWTON MA 02159 + UNITED STATES + +00-80-B8 (hex) BUG, INCORPORATED +0080B8 (base 16) BUG, INCORPORATED + 1-14 TECHNO-PARK 1-CHOME + SHIMONOPPORO, ATSUBETSU-KU SAPPORO 004, + JAPAN + JAPAN + +00-80-B9 (hex) ARCHE TECHNOLIGIES INC. +0080B9 (base 16) ARCHE TECHNOLIGIES INC. + 48502 KATO ROAD + FREMONT CA 94538 + UNITED STATES MINOR OUTLYING ISLAN + +00-80-BA (hex) SPECIALIX (ASIA) PTE, LTD +0080BA (base 16) SPECIALIX (ASIA) PTE, LTD + 3 WINTERSELLS ROAD + BYFLEET SURREY KT147LF + UNITED KINGDOM + UNITED KINGDOM + +00-80-BB (hex) HUGHES LAN SYSTEMS +0080BB (base 16) HUGHES LAN SYSTEMS + 1225 CHARLESTON ROAD + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-80-BC (hex) HITACHI ENGINEERING CO., LTD +0080BC (base 16) HITACHI ENGINEERING CO., LTD + 4-8-26, OMIKACHO + HITACHI CITY IBARAKI PREFECTURE 319-12 + JAPAN + JAPAN + +00-80-BD (hex) THE FURUKAWA ELECTRIC CO., LTD +0080BD (base 16) THE FURUKAWA ELECTRIC CO., LTD + 6-1, MARUNOUCHI 2-CHOME + CHIYODA-KU, TOKYO + 100 JAPAN + JAPAN + +00-80-BE (hex) ARIES RESEARCH +0080BE (base 16) ARIES RESEARCH + 46791 FREMOND BLVD. + FREMONT CA 94538 + UNITED STATES + +00-80-BF (hex) TAKAOKA ELECTRIC MFG. CO. LTD. +0080BF (base 16) TAKAOKA ELECTRIC MFG. CO. LTD. + KANDA BRANCH OFFICE TONEN + 2-1-11, SARUGAKU-CHO CHIYODA-KU, TOKYO, + JAPAN + JAPAN + +00-80-C0 (hex) PENRIL DATACOMM +0080C0 (base 16) PENRIL DATACOMM + 1300 QUINCE ORCHARD BLVD. + GAITHERSBURG MD 20878 + UNITED STATES + +00-80-C1 (hex) LANEX CORPORATION +0080C1 (base 16) LANEX CORPORATION + 10727 TUCKER STREET + BELTSVILLE MD 20705 + UNITED STATES + +00-80-C2 (hex) IEEE 802.1 COMMITTEE +0080C2 (base 16) IEEE 802.1 COMMITTEE + 802.1 Chair, c/o IEEE Standards Association + 445 Hoes Lane + Piscataway NJ 08854 + UNITED STATES + +00-80-C3 (hex) BICC INFORMATION SYSTEMS & SVC +0080C3 (base 16) BICC INFORMATION SYSTEMS & SVC + 500 CAPABILITY GREEN, LUTON + BEDFORDSHIRE + ENGLAND LU1 3LT + UNITED KINGDOM + +00-80-C4 (hex) DOCUMENT TECHNOLOGIES, INC. +0080C4 (base 16) DOCUMENT TECHNOLOGIES, INC. + 1300 CHARLESTON ROAD + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-80-C5 (hex) NOVELLCO DE MEXICO +0080C5 (base 16) NOVELLCO DE MEXICO + CONSTITUYENTES NO. 907 + COL. LOMAS ALTAS + 11950 MEXICO 11950 MEXICO D.F. + MEXICO + +00-80-C6 (hex) NATIONAL DATACOMM CORPORATION +0080C6 (base 16) NATIONAL DATACOMM CORPORATION + 2F, 28, INDUSTRY EAST 9TH RD. + SCIENCE PARK, HSIN-CHU + TAIWAN 30077 TAIWAN 30077 R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-80-C7 (hex) XIRCOM +0080C7 (base 16) XIRCOM + 26025 MUREAU ROAD + CALABASAS CA 91302 + UNITED STATES + +00-80-C8 (hex) D-LINK SYSTEMS, INC. +0080C8 (base 16) D-LINK SYSTEMS, INC. + 53 Discover Dr. + Irvine CA 92618 + UNITED STATES + +00-80-C9 (hex) ALBERTA MICROELECTRONIC CENTRE +0080C9 (base 16) ALBERTA MICROELECTRONIC CENTRE + 318, 11315 - 87 AVENUE + EDMONTON, AB T6G 2C2 + CANADA + CANADA + +00-80-CA (hex) NETCOM RESEARCH INCORPORATED +0080CA (base 16) NETCOM RESEARCH INCORPORATED + 201 TECHNOLOGY DRIVE + IRVINE CA 92718 + UNITED STATES + +00-80-CB (hex) FALCO DATA PRODUCTS +0080CB (base 16) FALCO DATA PRODUCTS + 440 POTRERO AVENUE + SUNNYVALE CA 94086-4196 + UNITED STATES + +00-80-CC (hex) MICROWAVE BYPASS SYSTEMS +0080CC (base 16) MICROWAVE BYPASS SYSTEMS + 25 BRAINTREE HILL OFFICE PARK + BRAINTREE MA 02184 + UNITED STATES + +00-80-CD (hex) MICRONICS COMPUTER, INC. +0080CD (base 16) MICRONICS COMPUTER, INC. + 45365 NORTHPORT LOOP WEST + FREMONT CA 94538 + UNITED STATES + +00-80-CE (hex) BROADCAST TELEVISION SYSTEMS +0080CE (base 16) BROADCAST TELEVISION SYSTEMS + P.O. BOX 30816 + SALT LAKE CITY, UTAH + Utah 84130-0816 + UNITED STATES + +00-80-CF (hex) EMBEDDED PERFORMANCE INC. +0080CF (base 16) EMBEDDED PERFORMANCE INC. + 3385 SCOTT BLVD. + SANTA CLARA CA 95054-3115 + UNITED STATES + +00-80-D0 (hex) COMPUTER PERIPHERALS, INC. +0080D0 (base 16) COMPUTER PERIPHERALS, INC. + 667 RANCHO CONEJO BLVD. + NEWBURY PARK CA 91320 + UNITED STATES + +00-80-D1 (hex) KIMTRON CORPORATION +0080D1 (base 16) KIMTRON CORPORATION + 1709 JUNCTION COURT + BUILDING 380 + SAN JOSE CA 95112 + UNITED STATES + +00-80-D2 (hex) SHINNIHONDENKO CO., LTD. +0080D2 (base 16) SHINNIHONDENKO CO., LTD. + 6-8 NISHITENMA 2 CHOME + KITA-KU, OSAKA 530 + JAPAN + JAPAN + +00-80-D3 (hex) SHIVA CORP. +0080D3 (base 16) SHIVA CORP. + 205 BURLINGTON ROAD + BEDFORD MA 01730 + UNITED STATES + +00-80-D4 (hex) CHASE RESEARCH LTD. +0080D4 (base 16) CHASE RESEARCH LTD. + 7 CHINEHAM BUSINESS PARK + BASINGSTOKE, RG 24 OWD + ENGLAND + UNITED KINGDOM + +00-80-D5 (hex) CADRE TECHNOLOGIES +0080D5 (base 16) CADRE TECHNOLOGIES + 19545 NW VON NEUMANN DRIVE + BEAVERTON OR 97006 + UNITED STATES + +00-80-D6 (hex) NUVOTECH, INC. +0080D6 (base 16) NUVOTECH, INC. + 2015 BRIDGEWAY, SUITE 204 + SAUSALITO CA 94965 + UNITED STATES + +00-80-D7 (hex) Fantum Engineering +0080D7 (base 16) Fantum Engineering + + P.O. Box 1509 + Rockwall TX 75087 + UNITED STATES + +00-80-D8 (hex) NETWORK PERIPHERALS INC. +0080D8 (base 16) NETWORK PERIPHERALS INC. + 2890 ZONKER ROAD SUITE 209 + SAN JOSE CA 95134 + UNITED STATES + +00-80-D9 (hex) EMK ELEKTRONIK +0080D9 (base 16) EMK ELEKTRONIK + Bergstrasse 16 + Bad Herrenalb + 76332 + GERMANY + +00-80-DA (hex) BRUEL & KJAER +0080DA (base 16) BRUEL & KJAER + 18, NAERUM HOVEDGADE + DK-2850 NAERUM + DENMARK + DENMARK + +00-80-DB (hex) GRAPHON CORPORATION +0080DB (base 16) GRAPHON CORPORATION + 1506 DELL AVE - # + CAMPBELL CA 95008-6911 + UNITED STATES + +00-80-DC (hex) PICKER INTERNATIONAL +0080DC (base 16) PICKER INTERNATIONAL + 595 MINER ROAD + CLEVELAND OH 44143 + UNITED STATES + +00-80-DD (hex) GMX INC/GIMIX +0080DD (base 16) GMX INC/GIMIX + 3223 ARNOLD LANE + NORTHBROOK IL 60062-2406 + UNITED STATES + +00-80-DE (hex) GIPSI S.A. +0080DE (base 16) GIPSI S.A. + 2,BD VAUBAN - B.P. 268 + 78053 ST. QUENTIN EN YVELINES CEDEX + FRANCE + FRANCE + +00-80-DF (hex) ADC CODENOLL TECHNOLOGY CORP. +0080DF (base 16) ADC CODENOLL TECHNOLOGY CORP. + 200 CORPORATE BLVD. SO. + YONKERS NY 10701 + UNITED STATES + +00-80-E0 (hex) XTP SYSTEMS, INC. +0080E0 (base 16) XTP SYSTEMS, INC. + 1900 STATE STREET , STE + SANTA BARBARA CA 93101 + UNITED STATES + +00-80-E1 (hex) STMICROELECTRONICS +0080E1 (base 16) STMICROELECTRONICS + 1000 AZTEC WEST + ALMONDSBURY BRISTOL BS32 4SQ + UNITED KINGDOM + +00-80-E2 (hex) T.D.I. CO., LTD. +0080E2 (base 16) T.D.I. CO., LTD. + DEVELOPMENT DIV. #3 FUJI BLDG + 1-3-13 ITACHIBORI NISHI-KU OSAKA 550 + JAPAN + JAPAN + +00-80-E3 (hex) CORAL NETWORK CORPORATION +0080E3 (base 16) CORAL NETWORK CORPORATION + (NOW BAY NETWORKS) + 4401 GREAT AMERICAN PKWY M/S: SC01-05 + SANTA CLARA CA 95052-8185 + UNITED STATES + +00-80-E4 (hex) NORTHWEST DIGITAL SYSTEMS, INC +0080E4 (base 16) NORTHWEST DIGITAL SYSTEMS, INC + P.O. BOX 15288 + SEATTLE WA 98115 + UNITED STATES + +00-80-E5 (hex) LSI Logic Corporation +0080E5 (base 16) LSI Logic Corporation + 3718 N. Rock Road + Wichita KS 67226-1397 + UNITED STATES + +00-80-E6 (hex) PEER NETWORKS, INC. +0080E6 (base 16) PEER NETWORKS, INC. + 3350 SCOTT BLVD. BLDG. 14 + SANTA CLARA CA 95054 + UNITED STATES + +00-80-E7 (hex) LYNWOOD SCIENTIFIC DEV. LTD. +0080E7 (base 16) LYNWOOD SCIENTIFIC DEV. LTD. + FARNHAM TRADING ESTATE + FARNHAM, SURREY, GU9 9NN + UNITED KINGDOM + UNITED KINGDOM + +00-80-E8 (hex) CUMULUS CORPORATIION +0080E8 (base 16) CUMULUS CORPORATIION + 23500 MERCANTILE ROAD + CLEVELAND OH 44122 + UNITED STATES + +00-80-E9 (hex) Madge Ltd. +0080E9 (base 16) Madge Ltd. + Madge House + Priors Way + Maindenhead Berkshire SL6 2HP + UNITED KINGDOM + +00-80-EA (hex) ADVA Optical Networking Ltd. +0080EA (base 16) ADVA Optical Networking Ltd. + One Technology Parkway South + Norcross GA 30092 + UNITED STATES + +00-80-EB (hex) COMPCONTROL B.V. +0080EB (base 16) COMPCONTROL B.V. + STRATUMSED K31 + 5611 NB EINDHOVEN + THE NETHERLANDS + NETHERLANDS + +00-80-EC (hex) SUPERCOMPUTING SOLUTIONS, INC. +0080EC (base 16) SUPERCOMPUTING SOLUTIONS, INC. + 6175 NANCY RIDGE BLVD. + SAN DIEGO CA 92121 + UNITED STATES + +00-80-ED (hex) IQ TECHNOLOGIES, INC. +0080ED (base 16) IQ TECHNOLOGIES, INC. + 11811 NE FIRST STREET + SUITE 201 + BELLEVUE WA 98005 + UNITED STATES + +00-80-EE (hex) THOMSON CSF +0080EE (base 16) THOMSON CSF + 51 ESPLANADE DU GENERAL + DE GAULLE 92045 - PARIS LA DEFENSE - CE + FRANCE + FRANCE + +00-80-EF (hex) RATIONAL +0080EF (base 16) RATIONAL + 3320 SCOTT BOULEVARD + SANTA CLARA CA 95054 + UNITED STATES + +00-80-F0 (hex) Panasonic Communications Co., Ltd. +0080F0 (base 16) Panasonic Communications Co., Ltd. + 4-1-62 Minoshima Hakata Fukuoka + 812-8531 + JAPAN + +00-80-F1 (hex) OPUS SYSTEMS +0080F1 (base 16) OPUS SYSTEMS + 3000 CORONADO DRIVE + SANTA CLARA CA 95054 + UNITED STATES + +00-80-F2 (hex) RAYCOM SYSTEMS INC +0080F2 (base 16) RAYCOM SYSTEMS INC + 16525 SHERMAN WAY #C-8 + VAN NUYS CA 91406 + UNITED STATES + +00-80-F3 (hex) SUN ELECTRONICS CORP. +0080F3 (base 16) SUN ELECTRONICS CORP. + 250 ASAHI KOCHINO-CHO + KONAN-CITY AICHI + 483 JAPAN + JAPAN + +00-80-F4 (hex) TELEMECANIQUE ELECTRIQUE +0080F4 (base 16) TELEMECANIQUE ELECTRIQUE + 33 BIS AVENUE, + DU MARECHAL JOFFRE 92002 NANTERRE CEDEX + FRANCE + FRANCE + +00-80-F5 (hex) QUANTEL LTD +0080F5 (base 16) QUANTEL LTD + PEAR TREE LANE + NEWBURY, BERKS. RG13 2LT + ENGLAND + UNITED KINGDOM + +00-80-F6 (hex) SYNERGY MICROSYSTEMS +0080F6 (base 16) SYNERGY MICROSYSTEMS + 9605 SCRANTON ROAD-STE #700 + SAN DIEGO CA 92121-1773 + UNITED STATES + +00-80-F7 (hex) ZENITH ELECTRONICS +0080F7 (base 16) ZENITH ELECTRONICS + 1000 MILWAUKEE AVENUE + GLENVIEW IL 60025 + UNITED STATES + +00-80-F8 (hex) MIZAR, INC. +0080F8 (base 16) MIZAR, INC. + 1419 DUNN DRIVE + CARROLLTON TX 75006 + UNITED STATES + +00-80-F9 (hex) HEURIKON CORPORATION +0080F9 (base 16) HEURIKON CORPORATION + 8310 EXCELSIOR DRIVE + MADISON WI 53717 + UNITED STATES + +00-80-FA (hex) RWT GMBH +0080FA (base 16) RWT GMBH + TALANGERSTR. 5-7 + D - 8033 KRAILLING + WEST GERMANY + GERMANY + +00-80-FB (hex) BVM LIMITED +0080FB (base 16) BVM LIMITED + HOBB LANE + HEDGE END SOUTHAMPTON + ENGLAND + UNITED KINGDOM + +00-80-FC (hex) AVATAR CORPORATION +0080FC (base 16) AVATAR CORPORATION + 65 SOUTH STREET + HOPKINTON MA 01748 + UNITED STATES + +00-80-FD (hex) EXSCEED CORPRATION +0080FD (base 16) EXSCEED CORPRATION + 1-15-12, KITAKASE, SAIWAI-KU + KAWASAKI-CITY, 211 KANAGAWA + JAPAN + JAPAN + +00-80-FE (hex) AZURE TECHNOLOGIES, INC. +0080FE (base 16) AZURE TECHNOLOGIES, INC. + 63 SOUTH STREET + HOPKINTON MA 01748-2212 + UNITED STATES + +00-80-FF (hex) SOC. DE TELEINFORMATIQUE RTC +0080FF (base 16) SOC. DE TELEINFORMATIQUE RTC + P.O. BOX 955 PLACE DU PARC + 300 LEO-PARISTAU SUITE 725 MONTREAL ( + CANADA H2W 2N1 + CANADA + +00-90-00 (hex) DIAMOND MULTIMEDIA +009000 (base 16) DIAMOND MULTIMEDIA + 312 SE STONEMILL DRIVE + SUITE #150 + VANCOUVER WA 98684 + UNITED STATES + +00-90-01 (hex) NISHIMU ELECTRONICS INDUSTRIES CO., LTD. +009001 (base 16) NISHIMU ELECTRONICS INDUSTRIES CO., LTD. + 700 TATENO MITAGAWA-CHO + KANZAKI-GUN SAGA PREF. + JAPAN + +00-90-02 (hex) ALLGON AB +009002 (base 16) ALLGON AB + GARDATORGET 1 + 412 50 GOTEBORG + SWEDEN + +00-90-03 (hex) APLIO +009003 (base 16) APLIO + 18 Avenue Du 8 Mai 1945 + 95200 SARCELLES + FRANCE + +00-90-04 (hex) 3COM EUROPE LTD. +009004 (base 16) 3COM EUROPE LTD. + 3COM CENTRE, BOUNDARY WAY + HEMEL HEMPSTEAD + HERTS. HP2 7YU + UNITED KINGDOM + +00-90-05 (hex) PROTECH SYSTEMS CO., LTD. +009005 (base 16) PROTECH SYSTEMS CO., LTD. + 5F, NO. 34, LANE 80, SEC. 3 + NANKANG ROAD + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-90-06 (hex) HAMAMATSU PHOTONICS K.K. +009006 (base 16) HAMAMATSU PHOTONICS K.K. + 812 JOKO-CHO + HAMAMATSU 431-3196 + JAPAN + +00-90-07 (hex) DOMEX TECHNOLOGY CORP. +009007 (base 16) DOMEX TECHNOLOGY CORP. + NO. 2, TECHNOLOGY RD. 1 + SCIENCE-BASED INDUSTRIAL PARK + HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-90-08 (hex) HanA Systems Inc. +009008 (base 16) HanA Systems Inc. + EAHO B/D 740-1 + YEOK SAM-DONG, KANGNAM-KU + SEOUL + KOREA, REPUBLIC OF + +00-90-09 (hex) i Controls, Inc. +009009 (base 16) i Controls, Inc. + 12F Doosan Building, 105-7, + Nonhyun-dong, Gangnam-gu + Seoul 135-714 + KOREA, REPUBLIC OF + +00-90-0A (hex) PROTON ELECTRONIC INDUSTRIAL CO., LTD. +00900A (base 16) PROTON ELECTRONIC INDUSTRIAL CO., LTD. + + 4F, 45, SECTION 1, SAN-MIN RD + Panchiao, Taipei County + TAIWAN, REPUBLIC OF CHINA + +00-90-0B (hex) LANNER ELECTRONICS, INC. +00900B (base 16) LANNER ELECTRONICS, INC. + 8F-4, NO. 77, SEC. 1 + HSIN TAI WU RD., HSICHIH + TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-90-0C (hex) CISCO SYSTEMS, INC. +00900C (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-0D (hex) Overland Storage Inc. +00900D (base 16) Overland Storage Inc. + 4820 Overland Avenue + SAN DIEGO CA 92123 + UNITED STATES + +00-90-0E (hex) HANDLINK TECHNOLOGIES, INC. +00900E (base 16) HANDLINK TECHNOLOGIES, INC. + 5F, 24-2, Industry E. Road IV, + Science-Based Industrial Park, + Hsinchu 30077 + TAIWAN, REPUBLIC OF CHINA + +00-90-0F (hex) KAWASAKI HEAVY INDUSTRIES, LTD +00900F (base 16) KAWASAKI HEAVY INDUSTRIES, LTD + ELEC. & CONTROL TECH CENTER + 1-1 KAWASAKI-CHO AKASHI 673-8666 + JAPAN + +00-90-10 (hex) SIMULATION LABORATORIES, INC. +009010 (base 16) SIMULATION LABORATORIES, INC. + 10078 TYLER PLACE #A + IJAMSVILLE MD 21754 + UNITED STATES + +00-90-11 (hex) WAVTrace, Inc. +009011 (base 16) WAVTrace, Inc. + 1555 132ND AVE. NE + BELLEVUE WA 98005 + UNITED STATES + +00-90-12 (hex) GLOBESPAN SEMICONDUCTOR, INC. +009012 (base 16) GLOBESPAN SEMICONDUCTOR, INC. + 100 SCHULZ DRIVE + RED BANK NJ 07701 + UNITED STATES + +00-90-13 (hex) SAMSAN CORP. +009013 (base 16) SAMSAN CORP. + ELECTRONICS & COMM DIVISION + SAMSAN BLDG., 506-7, AMSA-DONG + Kangdong-Gu Seoul 134-050 + KOREA, REPUBLIC OF + +00-90-14 (hex) ROTORK INSTRUMENTS, LTD. +009014 (base 16) ROTORK INSTRUMENTS, LTD. + CHAUL END LANE + LUTON BEDFORDSHIRE + LU4 8EZ England + UNITED KINGDOM + +00-90-15 (hex) CENTIGRAM COMMUNICATIONS CORP. +009015 (base 16) CENTIGRAM COMMUNICATIONS CORP. + 91 EAST TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-90-16 (hex) ZAC +009016 (base 16) ZAC + TALSTRASSE 18 + D-71272 RENNINGEN + GERMANY + +00-90-17 (hex) Zypcom, Inc +009017 (base 16) Zypcom, Inc + 28400 Kohoutek Way + Suite 170 + Union City CA 94587-1212 + UNITED STATES + +00-90-18 (hex) ITO ELECTRIC INDUSTRY CO, LTD. +009018 (base 16) ITO ELECTRIC INDUSTRY CO, LTD. + 4-26-12 MEIEKI NAKAMURA-KU + NAGOYA-CITY AICHI 450-0002 + JAPAN + +00-90-19 (hex) HERMES ELECTRONICS CO., LTD. +009019 (base 16) HERMES ELECTRONICS CO., LTD. + 3-2-12 YUSHIMA, BUNKYO-KU + TOKYO, 113-0034 + JAPAN + +00-90-1A (hex) UNISPHERE SOLUTIONS +00901A (base 16) UNISPHERE SOLUTIONS + 5 CARLISLE ROAD + WESTFORD MA 01886 + UNITED STATES + +00-90-1B (hex) DIGITAL CONTROLS +00901B (base 16) DIGITAL CONTROLS + 305 PIONEER BLVD. + SPRINGBORO OH 45066-1100 + UNITED STATES + +00-90-1C (hex) mps Software Gmbh +00901C (base 16) mps Software Gmbh + LUDWIGSTR 36 + 85551 KIRCHHEIM + GERMANY + +00-90-1D (hex) PEC (NZ) LTD. +00901D (base 16) PEC (NZ) LTD. + 2 STATION ROAD + P.O. BOX 308 + MARTON + NEW ZEALAND + +00-90-1E (hex) Selesta Ingegneria S.p.A. +00901E (base 16) Selesta Ingegneria S.p.A. + via di Francia, 28 + Genova 16149 + ITALY + +00-90-1F (hex) ADTEC PRODUCTIONS, INC. +00901F (base 16) ADTEC PRODUCTIONS, INC. + 408 RUSSELL STREET + NASHVILLE TN 37206 + UNITED STATES + +00-90-20 (hex) PHILIPS ANALYTICAL X-RAY B.V. +009020 (base 16) PHILIPS ANALYTICAL X-RAY B.V. + LELYWEG 1 + 7602 EA ALMELO + NETHERLANDS + +00-90-21 (hex) CISCO SYSTEMS, INC. +009021 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR. - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-22 (hex) IVEX +009022 (base 16) IVEX + 4295 INTERNATIONAL BLVD. + SUITE + NORCROSS GA 30093 + UNITED STATES + +00-90-23 (hex) ZILOG INC. +009023 (base 16) ZILOG INC. + 910 East Hamilton Ave. + Campbell CA 95008 + UNITED STATES + +00-90-24 (hex) PIPELINKS, INC. +009024 (base 16) PIPELINKS, INC. + 2710 WALSH AVE., STE #300 + SANTA CLARA CA 95051 + UNITED STATES + +00-90-25 (hex) VISION SYSTEMS LTD. PTY +009025 (base 16) VISION SYSTEMS LTD. PTY + SECOND AVE., TECHNOLOGY PARK + MAWSON LAKES SA 5095 + AUSTRALIA + +00-90-26 (hex) ADVANCED SWITCHING COMMUNICATIONS, INC. +009026 (base 16) ADVANCED SWITCHING COMMUNICATIONS, INC. + 8330 BOONE BOULEVARD--5TH FL. + VIENNA VA 22182 + UNITED STATES + +00-90-27 (hex) INTEL CORPORATION +009027 (base 16) INTEL CORPORATION + HF1-06 + 5200 N.E. ELAM YOUNG PARKWAY + HILLSBORO OR 97124 + UNITED STATES + +00-90-28 (hex) NIPPON SIGNAL CO., LTD. +009028 (base 16) NIPPON SIGNAL CO., LTD. + 11 HIRAIDE-KOGIO-DANCHI + UISUNOMIYA TOCHIGI 321-8651 + JAPAN + +00-90-29 (hex) CRYPTO AG +009029 (base 16) CRYPTO AG + P.O. BOX + CH-6301 Zug + SWITZERLAND + +00-90-2A (hex) COMMUNICATION DEVICES, INC. +00902A (base 16) COMMUNICATION DEVICES, INC. + ONE FORSTMANN COURT + CLIFTON NJ 07011 + UNITED STATES + +00-90-2B (hex) CISCO SYSTEMS, INC. +00902B (base 16) CISCO SYSTEMS, INC. + SJA-2 + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-2C (hex) DATA & CONTROL EQUIPMENT LTD. +00902C (base 16) DATA & CONTROL EQUIPMENT LTD. + COUNTY FARM, WENDOVER RD. + STOKE MANDEVILLE + BUCKS. HP22 STA + UNITED KINGDOM + +00-90-2D (hex) DATA ELECTRONICS (AUST.) PTY, LTD. +00902D (base 16) DATA ELECTRONICS (AUST.) PTY, LTD. + 7 SEISMIC COURT + ROWVILLE + VICTORIA 3178 + AUSTRALIA + +00-90-2E (hex) NAMCO LIMITED +00902E (base 16) NAMCO LIMITED + 1-1-32 SHIN-URASHIMA-CHO + KANAGAWA-KU, YOKOHAMA + KANAGAWA 221-0031 + JAPAN + +00-90-2F (hex) NETCORE SYSTEMS, INC. +00902F (base 16) NETCORE SYSTEMS, INC. + 187 BALLARDVALE STREET + WILMINGTON MA 01887 + UNITED STATES + +00-90-30 (hex) HONEYWELL-DATING +009030 (base 16) HONEYWELL-DATING + VIA TINTORETTO, 15 + 21012 CASSANO MAGNAGO (VA) + ITALY + +00-90-31 (hex) MYSTICOM, LTD. +009031 (base 16) MYSTICOM, LTD. + P.O. 8364 + NATANIA 42504 + ISRAEL + +00-90-32 (hex) PELCOMBE GROUP LTD. +009032 (base 16) PELCOMBE GROUP LTD. + MAIN ROAD + DOVERCOURT, HARWICH + ESSEX C012 4LP + UNITED KINGDOM + +00-90-33 (hex) INNOVAPHONE AG +009033 (base 16) INNOVAPHONE AG + Boeblinger Str. 76 + SINDELFINGEN D71065 + GERMANY + +00-90-34 (hex) IMAGIC, INC. +009034 (base 16) IMAGIC, INC. + 235 West Road #7 + Portsmouth NH 03801 + UNITED STATES + +00-90-35 (hex) ALPHA TELECOM, INC. +009035 (base 16) ALPHA TELECOM, INC. + 2F, NO.2, LI HSIN ROAD + SCIENCE-BASED INDUSTRIAL PARK + HSIN-CHU + TAIWAN, REPUBLIC OF CHINA + +00-90-36 (hex) ens, inc. +009036 (base 16) ens, inc. + P.O. BOX 19207 + RALEIGH NC 27619 + UNITED STATES + +00-90-37 (hex) ACUCOMM, INC. +009037 (base 16) ACUCOMM, INC. + 4633 OLD IRONSIDES - STE #310 + SANTA CLARA CA 95054 + UNITED STATES + +00-90-38 (hex) FOUNTAIN TECHNOLOGIES, INC. +009038 (base 16) FOUNTAIN TECHNOLOGIES, INC. + 50 RANDOLPH ROAD + SOMERSET NJ 08873 + UNITED STATES + +00-90-39 (hex) SHASTA NETWORKS +009039 (base 16) SHASTA NETWORKS + 249 HUMBOLDT COURT + SUNNYVALE CA 94089-1300 + UNITED STATES + +00-90-3A (hex) NIHON MEDIA TOOL INC. +00903A (base 16) NIHON MEDIA TOOL INC. + 1875 OYAMA-CHO + YOKKAICHI-CITY + MIE 512-1102 + JAPAN + +00-90-3B (hex) TriEMS Research Lab, Inc. +00903B (base 16) TriEMS Research Lab, Inc. + 1275 N. TUSTIN AVENUE + ANAHEIM CA 92807 + UNITED STATES + +00-90-3C (hex) ATLANTIC NETWORK SYSTEMS +00903C (base 16) ATLANTIC NETWORK SYSTEMS + IMMEUBLE "Kennedy" + ZITER AVENUE JF KENNEDY + 33700 MERIGNAC + FRANCE + +00-90-3D (hex) BIOPAC SYSTEMS, INC. +00903D (base 16) BIOPAC SYSTEMS, INC. + 42 AERO CAMINO + SANTA BARBARA CA 93117 + UNITED STATES + +00-90-3E (hex) N.V. PHILIPS INDUSTRIAL ACTIVITIES +00903E (base 16) N.V. PHILIPS INDUSTRIAL ACTIVITIES + + INTERLEUVENLAAN 74-76 + B-3001 LEUVEN + BELGIUM + +00-90-3F (hex) AZTEC RADIOMEDIA +00903F (base 16) AZTEC RADIOMEDIA + 31, RUE DU CHEMINDEFER + 67200 STRASBOURG + FRANCE + +00-90-40 (hex) Siemens Network Convergence LLC +009040 (base 16) Siemens Network Convergence LLC + Ten Technology Park Drive + Westford MA 01886-3146 + UNITED STATES + +00-90-41 (hex) APPLIED DIGITAL ACCESS +009041 (base 16) APPLIED DIGITAL ACCESS + 9855 SCRANTON ROAD + SAN DIEGO CA 92121 + UNITED STATES + +00-90-42 (hex) ECCS, Inc. +009042 (base 16) ECCS, Inc. + ONE SHEILA DRIVE + TINTON FALLS NJ 07724 + UNITED STATES + +00-90-43 (hex) NICHIBEI DENSHI CO., LTD. +009043 (base 16) NICHIBEI DENSHI CO., LTD. + 1-13-10 SHIROGANE CHUO-KU + FUKUOKA-CITY + JAPAN + +00-90-44 (hex) ASSURED DIGITAL, INC. +009044 (base 16) ASSURED DIGITAL, INC. + 9-11 GOLDSMITH ST. + LITTLETON MA 01460 + UNITED STATES + +00-90-45 (hex) Marconi Communications +009045 (base 16) Marconi Communications + 1000 Fore Drive + Warrendale PA 15086-7502 + UNITED STATES + +00-90-46 (hex) DEXDYNE, LTD. +009046 (base 16) DEXDYNE, LTD. + 15 MARKET PL. + CIRENCESTER + GLOCESTERSHIRE GL7 2PB + UNITED KINGDOM + +00-90-47 (hex) GIGA FAST E. LTD. +009047 (base 16) GIGA FAST E. LTD. + 14F, NO.112, SEC. 1 + HSIN-TAI WU RD. + Hsi-Chih Taipei Hsien + TAIWAN, REPUBLIC OF CHINA + +00-90-48 (hex) ZEAL CORPORATION +009048 (base 16) ZEAL CORPORATION + 301, HIRAIKE + NAGAKUTE-CHO, AICHI-PREF. 480-1155 + JAPAN + +00-90-49 (hex) ENTRIDIA CORPORATION +009049 (base 16) ENTRIDIA CORPORATION + 101 PARK CENTER PLAZA + SUITE #500 + SAN JOSE CA 95113-2218 + UNITED STATES + +00-90-4A (hex) CONCUR SYSTEM TECHNOLOGIES +00904A (base 16) CONCUR SYSTEM TECHNOLOGIES + 2525 WALLINGWOOD DR.-STE. #804 + AUSTIN TX 78746 + UNITED STATES + +00-90-4B (hex) GemTek Technology Co., Ltd. +00904B (base 16) GemTek Technology Co., Ltd. + 11 FL, NO.181, TATUNG RD, SEC 1 + HSICHIH + TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-90-4C (hex) EPIGRAM, INC. +00904C (base 16) EPIGRAM, INC. + 870 WEST MAUDE AVE. + SUNNYVALE CA 94086 + UNITED STATES + +00-90-4D (hex) SPEC S.A. +00904D (base 16) SPEC S.A. + CASP 172 3-B + 08013 BARCELONA + SPAIN + +00-90-4E (hex) DELEM BV +00904E (base 16) DELEM BV + LUCHTHAVEN WEG 42 + 5657 EB EINDHOVEN + NETHERLANDS + +00-90-4F (hex) ABB POWER T&D COMPANY, INC. +00904F (base 16) ABB POWER T&D COMPANY, INC. + 7036 SNOWDRIFT ROAD + ALLENTOWN PA 18106 + UNITED STATES + +00-90-50 (hex) TELESTE OY +009050 (base 16) TELESTE OY + SEPONKATU 1 + LITTOINEN FIN-20660 + FINLAND + +00-90-51 (hex) ULTIMATE TECHNOLOGY CORP. +009051 (base 16) ULTIMATE TECHNOLOGY CORP. + 100 RAWSON ROAD + VICTOR NY 14564 + UNITED STATES + +00-90-52 (hex) SELCOM ELETTRONICA S.R.L. +009052 (base 16) SELCOM ELETTRONICA S.R.L. + VIA GRANDI, 5 + 40013 CASTELMAGGIORE BO + ITALY + +00-90-53 (hex) DAEWOO ELECTRONICS CO., LTD. +009053 (base 16) DAEWOO ELECTRONICS CO., LTD. + DIT RESEARCH CENTER + DAEWOO CENTER 541 NAMDAEMUNNO 5-GA + CHUNG-GU SEOUL 100-714 + KOREA, REPUBLIC OF + +00-90-54 (hex) INNOVATIVE SEMICONDUCTORS, INC +009054 (base 16) INNOVATIVE SEMICONDUCTORS, INC + 2570 W. EL CAMINO REAL + SUITE #205 + MOUNTAIN VIEW CA 94040 + UNITED STATES + +00-90-55 (hex) PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION +009055 (base 16) PARKER HANNIFIN CORPORATION COMPUMOTOR DIVISION + 5500 BUSINESS PARK DRIVE + ROHNERT PARK CA 94928 + UNITED STATES + +00-90-56 (hex) TELESTREAM, INC. +009056 (base 16) TELESTREAM, INC. + 848 GOLD FLAT RD., SUITE 1 + NEVADA CITY CA 95959 + UNITED STATES + +00-90-57 (hex) AANetcom, Inc. +009057 (base 16) AANetcom, Inc. + 4949 LIBERTY LANE - STE. #200 + ALLENTOWN PA 18106-9015 + UNITED STATES + +00-90-58 (hex) Ultra Electronics Ltd., Command and Control Systems +009058 (base 16) Ultra Electronics Ltd., Command and Control Systems + KNAVES BEECH BUSINESS CENTRE + LOUDWATER, HIGH WYCOMBE + BUCKINGHAMSHIRE HP10 9UT England + UNITED KINGDOM + +00-90-59 (hex) TELECOM DEVICE K.K. +009059 (base 16) TELECOM DEVICE K.K. + SANMIYANAGA BLDG. 3F, 1-5-12 + MOTOAKASAKA, MINATO-KU + TOKYO 107 + JAPAN + +00-90-5A (hex) DEARBORN GROUP, INC. +00905A (base 16) DEARBORN GROUP, INC. + 27007 HILLS TECH CT. + FARMINGTON HILLS MI 48331 + UNITED STATES + +00-90-5B (hex) RAYMOND AND LAE ENGINEERING +00905B (base 16) RAYMOND AND LAE ENGINEERING + 208 COMMERCE DR., UNIT #3C + FORT COLLINS CO 80524 + UNITED STATES + +00-90-5C (hex) EDMI +00905C (base 16) EDMI + 626 OLD GYMPIE ROAD + NARANGBA QLD 4504 + AUSTRALIA + +00-90-5D (hex) NETCOM SICHERHEITSTECHNIK GmbH +00905D (base 16) NETCOM SICHERHEITSTECHNIK GmbH + BOPPSTRASSE 38 + 55118 MAINZ + GERMANY + +00-90-5E (hex) RAULAND-BORG CORPORATION +00905E (base 16) RAULAND-BORG CORPORATION + 3450 W. OAKTON ST. + SKOKIE IL 60076 + UNITED STATES + +00-90-5F (hex) CISCO SYSTEMS, INC. +00905F (base 16) CISCO SYSTEMS, INC. + SJA-2 + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-60 (hex) SYSTEM CREATE CORP. +009060 (base 16) SYSTEM CREATE CORP. + 3-13-6 YOSHIKAWA BLD. + KImshi SUMIDA-KU + TOKYO + JAPAN + +00-90-61 (hex) PACIFIC RESEARCH & ENGINEERING CORPORATION +009061 (base 16) PACIFIC RESEARCH & ENGINEERING CORPORATION + 2070 LAS PALMAS DRIVE + CARLSBAD CA 92009 + UNITED STATES + +00-90-62 (hex) ICP VORTEX COMPUTERSYSTEME GmbH +009062 (base 16) ICP VORTEX COMPUTERSYSTEME GmbH + FALTERSTRASSE 51-53 + D 74223 FLEIN + GERMANY + +00-90-63 (hex) COHERENT COMMUNICATIONS SYSTEMS CORPORATION +009063 (base 16) COHERENT COMMUNICATIONS SYSTEMS CORPORATION + 45085 UNIVERSITY DRIVE + ASHBURN VA 20147 + UNITED STATES + +00-90-64 (hex) Thomson Inc. +009064 (base 16) Thomson Inc. + 101 West 103rd Street + Indianapolis IN 46290-1102 + UNITED STATES + +00-90-65 (hex) FINISAR CORPORATION +009065 (base 16) FINISAR CORPORATION + 1389 Moffett Park Dr + Sunnyvale CA 94089 + UNITED STATES + +00-90-66 (hex) Troika Networks, Inc. +009066 (base 16) Troika Networks, Inc. + 2829 Townsgate Road, + Suite 200 + Westlake Village CA 91361 + UNITED STATES + +00-90-67 (hex) WalkAbout Computers, Inc. +009067 (base 16) WalkAbout Computers, Inc. + 2655 N. OCEAN DRIVE--STE. #510 + SINGER ISLAND FL 33404 + UNITED STATES + +00-90-68 (hex) DVT CORP. +009068 (base 16) DVT CORP. + 1670 OAKBROOK DR. - STE. #330 + NORCROSS GA 30093 + UNITED STATES + +00-90-69 (hex) JUNIPER NETWORKS, INC. +009069 (base 16) JUNIPER NETWORKS, INC. + 1194 N. Mathilda Avenue + Sunnyvale CA 94089-1206 + UNITED STATES + +00-90-6A (hex) TURNSTONE SYSTEMS, INC. +00906A (base 16) TURNSTONE SYSTEMS, INC. + 274 Ferguson Drive + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-90-6B (hex) APPLIED RESOURCES, INC. +00906B (base 16) APPLIED RESOURCES, INC. + 9821 WIDMER ROAD + LENEXA KS 66215-1239 + UNITED STATES + +00-90-6C (hex) Sartorius Hamburg GmbH +00906C (base 16) Sartorius Hamburg GmbH + Meiendorferstr. 205 + Hamburg D-22145 + GERMANY + +00-90-6D (hex) CISCO SYSTEMS, INC. +00906D (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR. - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-6E (hex) PRAXON, INC. +00906E (base 16) PRAXON, INC. + 1700 DELL AVENUE + CAMPBELL CA 95008 + UNITED STATES + +00-90-6F (hex) CISCO SYSTEMS, INC. +00906F (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR. - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-70 (hex) NEO NETWORKS, INC. +009070 (base 16) NEO NETWORKS, INC. + 10300 BREN ROAD EAST + MINNETONKA MN 55343 + UNITED STATES + +00-90-71 (hex) Applied Innovation Inc. +009071 (base 16) Applied Innovation Inc. + 5800 Innovation Drive + Dublin OH 43016-3271 + UNITED STATES + +00-90-72 (hex) SIMRAD AS +009072 (base 16) SIMRAD AS + P.O. BOX 111 + 3191 HORTEN + NORWAY + +00-90-73 (hex) GAIO TECHNOLOGY +009073 (base 16) GAIO TECHNOLOGY + OAK-YOKOHAMA BLDG. + 2-15-10 KITA-SAIWAI, + NISHI-KU YOKOHAMA-CITY Kanagawa + JAPAN + +00-90-74 (hex) ARGON NETWORKS, INC. +009074 (base 16) ARGON NETWORKS, INC. + 25 PORTER ROAD + LITTLETON MA 01460 + UNITED STATES + +00-90-75 (hex) NEC DO BRASIL S.A. +009075 (base 16) NEC DO BRASIL S.A. + RODOVIA PRESIDENTE DUTRA, KM 218 + CUMBICA-GUARULHOS + SAO PAULO-SP CEP - 07210-902 + BRAZIL + +00-90-76 (hex) FMT AIRCRAFT GATE SUPPORT SYSTEMS AB +009076 (base 16) FMT AIRCRAFT GATE SUPPORT SYSTEMS AB + + DALASLINGAN 8 + SE-231 32 TRELLEBORG + SWEDEN + +00-90-77 (hex) ADVANCED FIBRE COMMUNICATIONS +009077 (base 16) ADVANCED FIBRE COMMUNICATIONS + PO BOX #751239 + 1 WILLOWBROOK CT + PETALUMA CA 94975 + UNITED STATES + +00-90-78 (hex) MER TELEMANAGEMENT SOLUTIONS, LTD. +009078 (base 16) MER TELEMANAGEMENT SOLUTIONS, LTD. + 5 HATSOREF STR. + IND. AREA + HOLON + ISRAEL + +00-90-79 (hex) ClearOne, Inc. +009079 (base 16) ClearOne, Inc. + 299 WASHINGTON STREET + WOBURN MA 01801 + UNITED STATES + +00-90-7A (hex) Polycom, Inc. +00907A (base 16) Polycom, Inc. + 5755 CENTRAL AVENUE + BOULDER CO 80301 + UNITED STATES + +00-90-7B (hex) E-TECH, INC. +00907B (base 16) E-TECH, INC. + 30, R&D ROAD 2 + SCIENCE PARK + HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-90-7C (hex) DIGITALCAST, INC. +00907C (base 16) DIGITALCAST, INC. + 503, ILKWANG BLDG., 1656-2 + SEOCHO-DONG + SEOCHO-KU SEOUL + KOREA, REPUBLIC OF + +00-90-7D (hex) Lake Communications +00907D (base 16) Lake Communications + Beech House, Greenhills Road + Dublin 24 + IRELAND + +00-90-7E (hex) VETRONIX CORP. +00907E (base 16) VETRONIX CORP. + 2030 ALAMEDE PADRE SERRA + SANTA BARBARA CA 93103 + UNITED STATES + +00-90-7F (hex) WatchGuard Technologies, Inc. +00907F (base 16) WatchGuard Technologies, Inc. + 505 Fifth Ave South + Suite 500 + Seattle WA 98104 + UNITED STATES + +00-90-80 (hex) NOT LIMITED, INC. +009080 (base 16) NOT LIMITED, INC. + 500 ALLERTON STREET, STE #102 + REDWOOD CITY CA 94063 + UNITED STATES + +00-90-81 (hex) ALOHA NETWORKS, INC. +009081 (base 16) ALOHA NETWORKS, INC. + 1001A O'REILLY AVENUE + P.O. BOX 29472 + SAN FRANCISCO CA 94129-0472 + UNITED STATES + +00-90-82 (hex) FORCE INSTITUTE +009082 (base 16) FORCE INSTITUTE + PARK ALLE 345 + DK-2605 BROENDBY + DENMARK + +00-90-83 (hex) TURBO COMMUNICATION, INC. +009083 (base 16) TURBO COMMUNICATION, INC. + 4F-2, NO. 171, SUNG-TEH ROAD + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-90-84 (hex) ATECH SYSTEM +009084 (base 16) ATECH SYSTEM + 4F DAEBOONG BLDG. 1451-78 + SEOCHO-DONG SEOCHO-KU + SEOUL 137-070 + KOREA, REPUBLIC OF + +00-90-85 (hex) GOLDEN ENTERPRISES, INC. +009085 (base 16) GOLDEN ENTERPRISES, INC. + 4450 WEST EAU GALLIE BLVD. + 250 PERIMETER CENTER + MELBOURNE FL 32934 + UNITED STATES + +00-90-86 (hex) CISCO SYSTEMS, INC. +009086 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR. - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-87 (hex) ITIS +009087 (base 16) ITIS + CENTRE ESPACE PERFORMANCE + ALPHASIS-BATIMENT C1 + 35769 SAINT-GREGOIRE CEDEX + FRANCE + +00-90-88 (hex) BAXALL SECURITY LTD. +009088 (base 16) BAXALL SECURITY LTD. + UNIT 1 CASTLEHILL + HORSEFIELD WAY, BREDBURY PARK IND. Estat + STOCKPORT Great Britain SK6 2SV + UNITED KINGDOM + +00-90-89 (hex) SOFTCOM MICROSYSTEMS, INC. +009089 (base 16) SOFTCOM MICROSYSTEMS, INC. + 47509 SEABRIDGE DRIVE + FREMONT CA 94538 + UNITED STATES + +00-90-8A (hex) BAYLY COMMUNICATIONS, INC. +00908A (base 16) BAYLY COMMUNICATIONS, INC. + 105 GREEN COURT + AJAX Ontario L1S 6W9 + CANADA + +00-90-8B (hex) PFU Systems, Inc. +00908B (base 16) PFU Systems, Inc. + 2600 Fernbrook Lane + Suite 130 + Plymouth MN 55447 + UNITED STATES + +00-90-8C (hex) ETREND ELECTRONICS, INC. +00908C (base 16) ETREND ELECTRONICS, INC. + 2F, 22 INDUSTRY E. 9TH ROAD + HSINCHU SCIENCE PARK + TAIWAN, REPUBLIC OF CHINA + +00-90-8D (hex) VICKERS ELECTRONICS SYSTEMS +00908D (base 16) VICKERS ELECTRONICS SYSTEMS + 1151 W. MASON-MORROW RD. + LEBANON OH 45036 + UNITED STATES + +00-90-8E (hex) Nortel Networks Broadband Access +00908E (base 16) Nortel Networks Broadband Access + 39660 Eureka Drive + Newark CA 94560 + UNITED STATES + +00-90-8F (hex) AUDIO CODES LTD. +00908F (base 16) AUDIO CODES LTD. + 3A NETANYAHU STREET + OR YEHUDA 60256 + ISRAEL + +00-90-90 (hex) I-BUS +009090 (base 16) I-BUS + 9174 SKY PARK COURT + SAN DIEGO CA 92123 + UNITED STATES + +00-90-91 (hex) DigitalScape, Inc. +009091 (base 16) DigitalScape, Inc. + 6 MORGAN - STE.#100 + IRVINE CA 92618 + UNITED STATES + +00-90-92 (hex) CISCO SYSTEMS, INC. +009092 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + M/S SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-93 (hex) NANAO CORPORATION +009093 (base 16) NANAO CORPORATION + 153 SHIMOKASHIWANO, MATTO + ISHIKAWA 924-8566 + JAPAN + +00-90-94 (hex) OSPREY TECHNOLOGIES, INC. +009094 (base 16) OSPREY TECHNOLOGIES, INC. + 600 AIRPORT BLVD. - STE. #900 + MORRISVILLE NC 27560 + UNITED STATES + +00-90-95 (hex) UNIVERSAL AVIONICS +009095 (base 16) UNIVERSAL AVIONICS + 11351 WILLOWS ROAD NE + REDMOND WA 98052-2552 + UNITED STATES + +00-90-96 (hex) ASKEY COMPUTER CORP. +009096 (base 16) ASKEY COMPUTER CORP. + 2F, NO. 2, LANE 497 + CHUNG-CHENG RD., HSIN-TIEN + TAIPEI 23136 + TAIWAN, REPUBLIC OF CHINA + +00-90-97 (hex) Sycamore Networks +009097 (base 16) Sycamore Networks + 220 Mill Rd + Chelmsford MA 01824 + UNITED STATES + +00-90-98 (hex) SBC DESIGNS, INC. +009098 (base 16) SBC DESIGNS, INC. + 3077-H LEEMAN FERRY ROAD + HUNTSVILLE AL 35801 + UNITED STATES + +00-90-99 (hex) ALLIED TELESIS, K.K. +009099 (base 16) ALLIED TELESIS, K.K. + NO. 2 TOC BUILDING, 7-21-11Nishi-Gotand + Shinagawa-Ku Tokyo 141 + JAPAN + +00-90-9A (hex) ONE WORLD SYSTEMS, INC. +00909A (base 16) ONE WORLD SYSTEMS, INC. + 1144 EAST ARQUES AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-90-9B (hex) IMAJE +00909B (base 16) IMAJE + Götaverksgatan 6A + Gothenburg 417 55 + SWEDEN + +00-90-9C (hex) Motorola, Inc. +00909C (base 16) Motorola, Inc. + 2450 Walsh Ave + Santa Clara CA 95051 + UNITED STATES + +00-90-9D (hex) NovaTech Process Solutions, LLC +00909D (base 16) NovaTech Process Solutions, LLC + 11500 Cronridge Drive + Suite 110 + Owings Mills MD 21117 + UNITED STATES + +00-90-9E (hex) Critical IO, LLC +00909E (base 16) Critical IO, LLC + 485 E. 17th Street + Suite 2010 + Costa Mesa CA 92627 + UNITED STATES + +00-90-9F (hex) DIGI-DATA CORPORATION +00909F (base 16) DIGI-DATA CORPORATION + 8920-D Route 108 + Columbia MD 21045 + UNITED STATES + +00-90-A0 (hex) 8X8 INC. +0090A0 (base 16) 8X8 INC. + 2445 MISSION COLLEGE BLVD. + SANTA CLARA CA 95054 + UNITED STATES + +00-90-A1 (hex) Flying Pig Systems/High End Systems Inc. +0090A1 (base 16) Flying Pig Systems/High End Systems Inc. + 2105 Gracy Farms Lane + Austin TX 78758 + UNITED STATES + +00-90-A2 (hex) CYBERTAN TECHNOLOGY, INC. +0090A2 (base 16) CYBERTAN TECHNOLOGY, INC. + BLDG.53, 195-56 SEC. 4, + CHUNG HSING ROAD, + CHUTUNG HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-90-A3 (hex) Corecess Inc. +0090A3 (base 16) Corecess Inc. + 135-726, Keopyung B-Town 1F, 203, Nonhyu + Kangnam-gu, + Seoul + KOREA, REPUBLIC OF + +00-90-A4 (hex) ALTIGA NETWORKS +0090A4 (base 16) ALTIGA NETWORKS + 124 GROVE STREET + FRANKLIN MA 02038-3206 + UNITED STATES + +00-90-A5 (hex) SPECTRA LOGIC +0090A5 (base 16) SPECTRA LOGIC + 1700 N. 55TH STREET + BOULDER CO 80301 + UNITED STATES + +00-90-A6 (hex) CISCO SYSTEMS, INC. +0090A6 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR. - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-A7 (hex) CLIENTEC CORPORATION +0090A7 (base 16) CLIENTEC CORPORATION + 8175 S. VIRGINIA ST. + SUITE #850-249 + RENO NV 89511 + UNITED STATES + +00-90-A8 (hex) NineTiles Networks, Ltd. +0090A8 (base 16) NineTiles Networks, Ltd. + 9 Station Road + Waterbeach Cambridge CB5 9HT + UNITED KINGDOM + +00-90-A9 (hex) WESTERN DIGITAL +0090A9 (base 16) WESTERN DIGITAL + 1599 NORTH BROADWAY + ROCHESTER MN 55906 + UNITED STATES + +00-90-AA (hex) INDIGO ACTIVE VISION SYSTEMS LIMITED +0090AA (base 16) INDIGO ACTIVE VISION SYSTEMS LIMITED + THE EDINBURGH TECHNOPOLE + BASH LOAN + Edinburgh EH26 OPJ + UNITED KINGDOM + +00-90-AB (hex) CISCO SYSTEMS, INC. +0090AB (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-AC (hex) OPTIVISION, INC. +0090AC (base 16) OPTIVISION, INC. + 3450 HILLVIEW AVENUE + PALO ALTO CA 94304 + UNITED STATES + +00-90-AD (hex) ASPECT ELECTRONICS, INC. +0090AD (base 16) ASPECT ELECTRONICS, INC. + 12740 EARHART AVE. + AUBURN CA 95602 + UNITED STATES + +00-90-AE (hex) ITALTEL S.p.A. +0090AE (base 16) ITALTEL S.p.A. + LOCALITA' BOSCHETTO + 67100 L'AQUILA + ITALY + +00-90-AF (hex) J. MORITA MFG. CORP. +0090AF (base 16) J. MORITA MFG. CORP. + 680 HIGASHIHAMA MINAMI-CHO + FUSHIMI-KU, KYOTO 612-8213 + JAPAN + +00-90-B0 (hex) VADEM +0090B0 (base 16) VADEM + 1960 ZANKER RD + SAN JOSE CA 95112 + UNITED STATES + +00-90-B1 (hex) CISCO SYSTEMS, INC. +0090B1 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DR. - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-B2 (hex) AVICI SYSTEMS INC. +0090B2 (base 16) AVICI SYSTEMS INC. + 12 ELIZABETH DRIVE + CHELMSFORD MA 01824 + UNITED STATES + +00-90-B3 (hex) AGRANAT SYSTEMS +0090B3 (base 16) AGRANAT SYSTEMS + 1345 MAIN STREET + WALTHAM MA 02154 + UNITED STATES + +00-90-B4 (hex) WILLOWBROOK TECHNOLOGIES +0090B4 (base 16) WILLOWBROOK TECHNOLOGIES + 7120 HAYVENHURST AVE.-STE.#401 + VAN NUYS CA 91406 + UNITED STATES + +00-90-B5 (hex) NIKON CORPORATION +0090B5 (base 16) NIKON CORPORATION + Electronic Imaging Division, Designing D + 1-6-3, NISHI-OHI, SHINAGAWA-KU + TOKYO 140-8601 + JAPAN + +00-90-B6 (hex) FIBEX SYSTEMS +0090B6 (base 16) FIBEX SYSTEMS + 5350 OLD REDWOOD HIGHWAY + PETALUMA CA 94954 + UNITED STATES + +00-90-B7 (hex) DIGITAL LIGHTWAVE, INC. +0090B7 (base 16) DIGITAL LIGHTWAVE, INC. + 601 CLEVELAND STREET- 5TH FL. + CLEARWATER FL 33755 + UNITED STATES + +00-90-B8 (hex) ROHDE & SCHWARZ GMBH & CO. KG +0090B8 (base 16) ROHDE & SCHWARZ GMBH & CO. KG + POSTFACH: 80 14 69/ABT.: 3CK + D-81614 MUNCHEN + GERMANY + +00-90-B9 (hex) BERAN INSTRUMENTS LTD. +0090B9 (base 16) BERAN INSTRUMENTS LTD. + HATCHMOOR INDUSTRIAL ESTATE + TORRINGTON + N DEVON EX38 7HP + UNITED KINGDOM + +00-90-BA (hex) VALID NETWORKS, INC. +0090BA (base 16) VALID NETWORKS, INC. + 6 CROMWELL #102 + IRVINE CA 92618 + UNITED STATES + +00-90-BB (hex) TAINET COMMUNICATION SYSTEM Corp. +0090BB (base 16) TAINET COMMUNICATION SYSTEM Corp. + 3 FL, NO. 6, ALLEY 23, LANE 91 SEC. 1 + Nei-Hu Road + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-90-BC (hex) TELEMANN CO., LTD. +0090BC (base 16) TELEMANN CO., LTD. + 6F DONGSIN BLDG. + 543, DOGOK-DONG, KANGNAM-KU + SEOUL, 135-270 + KOREA, REPUBLIC OF + +00-90-BD (hex) OMNIA COMMUNICATIONS, INC. +0090BD (base 16) OMNIA COMMUNICATIONS, INC. + 100 NICKERSON ROAD + MARLBOROUGH MA 01752 + UNITED STATES + +00-90-BE (hex) IBC/INTEGRATED BUSINESS COMPUTERS +0090BE (base 16) IBC/INTEGRATED BUSINESS COMPUTERS + 2685 C PARK CENTER DRIVE + SIMI VALLEY CA 93065 + UNITED STATES + +00-90-BF (hex) CISCO SYSTEMS, INC. +0090BF (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-C0 (hex) K.J. LAW ENGINEERS, INC. +0090C0 (base 16) K.J. LAW ENGINEERS, INC. + 42300 W. NINE MILE ROAD + NOVI MI 48375 + UNITED STATES + +00-90-C1 (hex) Peco II, Inc. +0090C1 (base 16) Peco II, Inc. + 7060 Huntley Road + Columbus OH 43229 + UNITED STATES + +00-90-C2 (hex) JK microsystems, Inc. +0090C2 (base 16) JK microsystems, Inc. + 1275 YUBA AVENUE + SAN PABLO CA 94806 + UNITED STATES + +00-90-C3 (hex) TOPIC SEMICONDUCTOR CORP. +0090C3 (base 16) TOPIC SEMICONDUCTOR CORP. + 11F-1, NO. 2, WU-LIN RD. + HSIN-CHU + TAIWAN, REPUBLIC OF CHINA + +00-90-C4 (hex) JAVELIN SYSTEMS, INC. +0090C4 (base 16) JAVELIN SYSTEMS, INC. + 1881 LANGLEY AVE. + IRVINE CA 92614 + UNITED STATES + +00-90-C5 (hex) INTERNET MAGIC, INC. +0090C5 (base 16) INTERNET MAGIC, INC. + 6450 LUSK BLVD.-STE. #E-201 + SAN DIEGO CA 92121 + UNITED STATES + +00-90-C6 (hex) OPTIM SYSTEMS, INC. +0090C6 (base 16) OPTIM SYSTEMS, INC. + 8201 GREENSBORO DR.-STE. #1000 + MCLEAN VA 22102 + UNITED STATES + +00-90-C7 (hex) ICOM INC. +0090C7 (base 16) ICOM INC. + 6-9-16 KAMIHIGASHI + HIRANO-KU, OSAKA + JAPAN + +00-90-C8 (hex) WAVERIDER COMMUNICATIONS (CANADA) INC. +0090C8 (base 16) WAVERIDER COMMUNICATIONS (CANADA) INC. + + British Columbia V1E 4R9 + CANADA + +00-90-C9 (hex) DPAC Technologies +0090C9 (base 16) DPAC Technologies + 7321 Lincoln Way + Garden Grove CA 92841 + UNITED STATES + +00-90-CA (hex) ACCORD VIDEO TELECOMMUNICATIONS, LTD. +0090CA (base 16) ACCORD VIDEO TELECOMMUNICATIONS, LTD. + 10, MARTIN GEHL STR, PO BOX 3564 + Petach-Tikva 49130 + ISRAEL + +00-90-CB (hex) Wireless OnLine, Inc. +0090CB (base 16) Wireless OnLine, Inc. + 4410 EL CAMINO REAL, STE #101 + LOS ALTOS CA 94022 + UNITED STATES + +00-90-CC (hex) PLANET COMMUNICATIONS, INC. +0090CC (base 16) PLANET COMMUNICATIONS, INC. + 5F Win KANDA TAKAHASHI BLDG. + 1-7, KANDA-SUDACHO + CHIYODA-KU TOKYO 161 + JAPAN + +00-90-CD (hex) ENT-EMPRESA NACIONAL DE TELECOMMUNICACOES, S.A. +0090CD (base 16) ENT-EMPRESA NACIONAL DE TELECOMMUNICACOES, S.A. + R. ENG FREDERICO ULRICH - APARTADO 3081 + Guardeiras - 4470 Moreira Maia + PORTUGAL + +00-90-CE (hex) TETRA GmbH +0090CE (base 16) TETRA GmbH + GEWERBEPARK "AmWald" 4 + D-98693 ILMENAU + GERMANY + +00-90-CF (hex) NORTEL +0090CF (base 16) NORTEL + 250 SIDNEY STREET + Belleville Ontario K8N 5B7 + CANADA + +00-90-D0 (hex) Thomson Telecom Belgium +0090D0 (base 16) Thomson Telecom Belgium + Prins Boudewijnlaan 47 + B-2650 EDEGEM + BELGIUM + +00-90-D1 (hex) LEICHU ENTERPRISE CO., LTD. +0090D1 (base 16) LEICHU ENTERPRISE CO., LTD. + 8F, NO. 203, PA-TEH ROAD, SEC.2 + TAIPEI CITY + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-90-D2 (hex) ARTEL VIDEO SYSTEMS +0090D2 (base 16) ARTEL VIDEO SYSTEMS + 237 CEDAR HILL ST. + MARLBORO MA 01752 + UNITED STATES + +00-90-D3 (hex) GIESECKE & DEVRIENT GmbH +0090D3 (base 16) GIESECKE & DEVRIENT GmbH + PRINZREGENTENSTRASSE 159 + D-81677 MUNCHEN + GERMANY + +00-90-D4 (hex) BindView Development Corp. +0090D4 (base 16) BindView Development Corp. + 3355 WEST ALABAMA #1200 + HOUSTON TX 77098 + UNITED STATES + +00-90-D5 (hex) EUPHONIX, INC. +0090D5 (base 16) EUPHONIX, INC. + 220 PORTAGE AVE. + PALO ALTO CA 94306 + UNITED STATES + +00-90-D6 (hex) CRYSTAL GROUP +0090D6 (base 16) CRYSTAL GROUP + 850 KACENA RD. + HIAWATHA IA 52233 + UNITED STATES + +00-90-D7 (hex) NetBoost Corp. +0090D7 (base 16) NetBoost Corp. + 390 CAMBRIDGE AVENUE + PALO ALTO CA 94306-1506 + UNITED STATES + +00-90-D8 (hex) WHITECROSS SYSTEMS +0090D8 (base 16) WHITECROSS SYSTEMS + 3A WATERSIDE PARK, COOKHAM RD + BRACKNELL + BERKSHIRE RG12 1RB + UNITED KINGDOM + +00-90-D9 (hex) CISCO SYSTEMS, INC. +0090D9 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + M/S/ SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-DA (hex) DYNARC, INC. +0090DA (base 16) DYNARC, INC. + 1887 LANDINGS DRIVE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-90-DB (hex) NEXT LEVEL COMMUNICATIONS +0090DB (base 16) NEXT LEVEL COMMUNICATIONS + 6085 STATE FARM DRIVE + ROHNERT PARK CA 94928 + UNITED STATES + +00-90-DC (hex) TECO INFORMATION SYSTEMS +0090DC (base 16) TECO INFORMATION SYSTEMS + CO., LTD. + 2841 JUNCTION AVE., STE. #116 + SAN JOSE CA 95134 + UNITED STATES + +00-90-DD (hex) THE MIHARU COMMUNICATIONS CO., LTD. +0090DD (base 16) THE MIHARU COMMUNICATIONS CO., LTD. + + 1285, IWASE, KAMAKURA-CITY + KANAGAWA + JAPAN + +00-90-DE (hex) CARDKEY SYSTEMS, INC. +0090DE (base 16) CARDKEY SYSTEMS, INC. + 1757 TAPO CANYON ROAD + SIMI VALLEY CA 93063 + UNITED STATES + +00-90-DF (hex) MITSUBISHI CHEMICAL AMERICA, INC. +0090DF (base 16) MITSUBISHI CHEMICAL AMERICA, INC. + 445 INDIO WAY + SUNNYVALE CA 94086 + UNITED STATES + +00-90-E0 (hex) SYSTRAN CORP. +0090E0 (base 16) SYSTRAN CORP. + 4126 LINDEN AVENUE + DAYTON OH 45432 + UNITED STATES + +00-90-E1 (hex) TELENA S.P.A. +0090E1 (base 16) TELENA S.P.A. + VIA SAVONA, 146 + 20144 MILANO + ITALY + +00-90-E2 (hex) DISTRIBUTED PROCESSING TECHNOLOGY +0090E2 (base 16) DISTRIBUTED PROCESSING TECHNOLOGY + 140 CANDACE DRIVE + ORLANDO FL 32751 + UNITED STATES + +00-90-E3 (hex) AVEX ELECTRONICS INC. +0090E3 (base 16) AVEX ELECTRONICS INC. + 4807 BRADFORD DRIVE + HUNTSVILLE AL 35805 + UNITED STATES + +00-90-E4 (hex) NEC AMERICA, INC. +0090E4 (base 16) NEC AMERICA, INC. + 3100 N.E. SHUTE ROAD + HILLSBORO OR 97124 + UNITED STATES + +00-90-E5 (hex) TEKNEMA, INC. +0090E5 (base 16) TEKNEMA, INC. + 2656 E. BAYSHORE ROAD + PALO ALTO CA 94303 + UNITED STATES + +00-90-E6 (hex) ACER LABORATORIES, INC. +0090E6 (base 16) ACER LABORATORIES, INC. + 11F, 45 TUNG HSING ROAD + TAIPEI 110 + TAIWAN, REPUBLIC OF CHINA + +00-90-E7 (hex) HORSCH ELEKTRONIK AG +0090E7 (base 16) HORSCH ELEKTRONIK AG + HAAGERSTRASSE + POSTFACH + CH-9473 GAMS + SWITZERLAND + +00-90-E8 (hex) MOXA TECHNOLOGIES CORP., LTD. +0090E8 (base 16) MOXA TECHNOLOGIES CORP., LTD. + 7F, NO. 2, ALY6, LN 235 + PAO-CHIAO RD, + SHIENG-TIEN CITY TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-90-E9 (hex) JANZ COMPUTER AG +0090E9 (base 16) JANZ COMPUTER AG + Im Dörener Feld 8 + D-33100 Paderborn + GERMANY + +00-90-EA (hex) ALPHA TECHNOLOGIES, INC. +0090EA (base 16) ALPHA TECHNOLOGIES, INC. + 3767 ALPHA WAY + BELLINGHAM WA 98226 + UNITED STATES + +00-90-EB (hex) SENTRY TELECOM SYSTEMS +0090EB (base 16) SENTRY TELECOM SYSTEMS + 8664 COMMERCE COURT + BURNABY BC V5A 4N7 + CANADA + +00-90-EC (hex) PYRESCOM +0090EC (base 16) PYRESCOM + 3 ALLEE DU MOULIN + 66680 CANOHES + FRANCE + +00-90-ED (hex) CENTRAL SYSTEM RESEARCH CO., LTD. +0090ED (base 16) CENTRAL SYSTEM RESEARCH CO., LTD. + 4-13-2 HIYOSHICHO + KOKUBUNJI-CITY TOKYO 18500032 + JAPAN + +00-90-EE (hex) PERSONAL COMMUNICATIONS TECHNOLOGIES +0090EE (base 16) PERSONAL COMMUNICATIONS TECHNOLOGIES + 50 STILES ROAD + SALEM NH 03079 + UNITED STATES + +00-90-EF (hex) INTEGRIX, INC. +0090EF (base 16) INTEGRIX, INC. + 2001 CORPORATE CENTER DRIVE + NEWBURY PARK CA 91320 + UNITED STATES + +00-90-F0 (hex) Harmonic Video Systems Ltd. +0090F0 (base 16) Harmonic Video Systems Ltd. + 19 ALON HATAVOR STREET + Zone 3, PO Box 3600 + CAESAREA Industrial Park 38900 + ISRAEL + +00-90-F1 (hex) DOT HILL SYSTEMS CORPORATION +0090F1 (base 16) DOT HILL SYSTEMS CORPORATION + 6305 El Camino Real + Carlsbad CA 92009 + UNITED STATES + +00-90-F2 (hex) CISCO SYSTEMS, INC. +0090F2 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE - SJA-2 + SAN JOSE CA 95134-1706 + UNITED STATES + +00-90-F3 (hex) ASPECT COMMUNICATIONS +0090F3 (base 16) ASPECT COMMUNICATIONS + 1310 Ridder Park Drive + San Jose CA 95131-2313 + UNITED STATES + +00-90-F4 (hex) LIGHTNING INSTRUMENTATION +0090F4 (base 16) LIGHTNING INSTRUMENTATION + BOVERESSES 50 + 1010 LAUSANNE + SWITZERLAND + +00-90-F5 (hex) CLEVO CO. +0090F5 (base 16) CLEVO CO. + 35, WU-GON 6TH ROAD + WU-KU INDUSTRIAL PARK + TAIPEI HSIEN + TAIWAN, REPUBLIC OF CHINA + +00-90-F6 (hex) ESCALATE NETWORKS, INC. +0090F6 (base 16) ESCALATE NETWORKS, INC. + 6 HUGHES + IRVINE CA 92617 + UNITED STATES + +00-90-F7 (hex) NBASE COMMUNICATIONS LTD. +0090F7 (base 16) NBASE COMMUNICATIONS LTD. + INDUSTRIAL PARK + YOQNEAM ILIT P.O. BOX 114 + ISRAEL + +00-90-F8 (hex) MEDIATRIX TELECOM +0090F8 (base 16) MEDIATRIX TELECOM + 4229 GARLOCK + SHERBROOKE + QUEBEC J1L 2C8 + CANADA + +00-90-F9 (hex) LEITCH +0090F9 (base 16) LEITCH + 10 DYAS ROAD + DON MILLS + ONTARIO M3B 1V5 + CANADA + +00-90-FA (hex) EMULEX Corp +0090FA (base 16) EMULEX Corp + 3333 Susan Street + Costa Mesa CA 92626 + UNITED STATES + +00-90-FB (hex) PORTWELL, INC. +0090FB (base 16) PORTWELL, INC. + 7F-4, NO. 160, SEC. 6 + MING-CHUANG E. RD. + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-90-FC (hex) NETWORK COMPUTING DEVICES +0090FC (base 16) NETWORK COMPUTING DEVICES + 301 RAVENDALE DRIVE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-90-FD (hex) CopperCom, Inc. +0090FD (base 16) CopperCom, Inc. + 3255-1 SCOTT BLVD.,--STE.#103 + SANTA CLARA CA 95054 + UNITED STATES + +00-90-FE (hex) ELECOM CO., LTD. (LANEED DIV.) +0090FE (base 16) ELECOM CO., LTD. (LANEED DIV.) + SUMITOMO FUDOSAN + HIGASHI IKEBUKURO BLDG. 6F, 3-13-2 HIGAS + TOSHIMA-KU TOKYO 170-0013 + JAPAN + +00-90-FF (hex) TELLUS TECHNOLOGY INC. +0090FF (base 16) TELLUS TECHNOLOGY INC. + 40990 ENCYCLOPEDIA CIR. + FREMONT CA 94538-2470 + UNITED STATES + +00-91-D6 (hex) Crystal Group, Inc. +0091D6 (base 16) Crystal Group, Inc. + 850 Kacena Rd. + Hiawatha IA 52233 + UNITED STATES + +00-9D-8E (hex) CARDIAC RECORDERS, INC. +009D8E (base 16) CARDIAC RECORDERS, INC. + 34 SCARBORO ROAD + LONDON N4 4L U + UNITED KINGDOM + UNITED KINGDOM + +00-A0-00 (hex) CENTILLION NETWORKS, INC. +00A000 (base 16) CENTILLION NETWORKS, INC. + 359 RAVENDALE DRIVE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-A0-01 (hex) DRS Signal Solutions +00A001 (base 16) DRS Signal Solutions + 700 Quince Orchard Road + Gaithersburg MD 20878-1794 + UNITED STATES + +00-A0-02 (hex) LEEDS & NORTHRUP AUSTRALIA PTY LTD +00A002 (base 16) LEEDS & NORTHRUP AUSTRALIA PTY LTD + PO BOX 4009 + EIGHT MILE PLAINS QLD 4113 + AUSTRALIA + +00-A0-03 (hex) STAEFA CONTROL SYSTEM +00A003 (base 16) STAEFA CONTROL SYSTEM + LAUBISRUETI 50 + 8712 STAEFA + SWITZERLAND + +00-A0-04 (hex) NETPOWER, INC. +00A004 (base 16) NETPOWER, INC. + 545 OAKMEAD PARKWAY + SUNNYVALE CA 94086 + UNITED STATES + +00-A0-05 (hex) DANIEL INSTRUMENTS, LTD. +00A005 (base 16) DANIEL INSTRUMENTS, LTD. + TROLLSTRASSE 33 + CH-8400 WINTERTHUR + SWITZERLAND + +00-A0-06 (hex) IMAGE DATA PROCESSING SYSTEM GROUP +00A006 (base 16) IMAGE DATA PROCESSING SYSTEM GROUP + SHINTOYOFUTA 2-1 + KASHIWA-CITY, CHIBA 277 + JAPAN + +00-A0-07 (hex) APEXX TECHNOLOGY, INC. +00A007 (base 16) APEXX TECHNOLOGY, INC. + 506 S. 11TH + PO BOX 9291 + BOISE ID 83707 + UNITED STATES + +00-A0-08 (hex) NETCORP +00A008 (base 16) NETCORP + 8 PLACE OF COMMERCE--STE #200 + BROSSARD, QUEBEC + CANADA J4W 3H2 + CANADA + +00-A0-09 (hex) WHITETREE NETWORK +00A009 (base 16) WHITETREE NETWORK + TECHNOLOGIES, INC. + 3200 ASH STREET + PALO ALTO CA 94306 + UNITED STATES + +00-A0-0A (hex) Airspan +00A00A (base 16) Airspan + Unitronics Building, Arava Street, Airport City + POB 199 + 70100 + ISRAEL + +00-A0-0B (hex) COMPUTEX CO., LTD. +00A00B (base 16) COMPUTEX CO., LTD. + 432-13 GOJYOBASHI-HIGASHI 4-CHYOME + HIGASHIYAMAKU, KYOTO-CITY 605 + JAPAN + +00-A0-0C (hex) KINGMAX TECHNOLOGY, INC. +00A00C (base 16) KINGMAX TECHNOLOGY, INC. + 2FL., NO. 4, LANE 902, SEC.2 + KUANG FU RD., HSIN-CHU CITY + TAIWAN, REPUBLIC OF CHINA + +00-A0-0D (hex) THE PANDA PROJECT +00A00D (base 16) THE PANDA PROJECT + 5201 CONGRESS AVE. - C-100 + BOCA RATON FL 33487 + UNITED STATES + +00-A0-0E (hex) VISUAL NETWORKS, INC. +00A00E (base 16) VISUAL NETWORKS, INC. + 2092 GAITHER ROAD- STE #220 + ROCKVILLE MD 20850 + UNITED STATES + +00-A0-0F (hex) Broadband Technologies +00A00F (base 16) Broadband Technologies + P.O. Box 13737 + Research Triangle Park, NC 27709-3737 + UNITED STATES + +00-A0-10 (hex) SYSLOGIC DATENTECHNIK AG +00A010 (base 16) SYSLOGIC DATENTECHNIK AG + Bruggerstrasse 69 + CH-5400 Baden + SWITZERLAND + +00-A0-11 (hex) MUTOH INDUSTRIES LTD. +00A011 (base 16) MUTOH INDUSTRIES LTD. + 253 KANAGAWA-KEN, + CHIGASAKI-SHI SHIMOMACHIYA 1-3-1 + JAPAN + JAPAN + +00-A0-12 (hex) B.A.T.M. ADVANCED TECHNOLOGIES +00A012 (base 16) B.A.T.M. ADVANCED TECHNOLOGIES + P.O. BOX 203 + YOKNEAM ELIT 20692 + ISRAEL + +00-A0-13 (hex) TELTREND LTD. +00A013 (base 16) TELTREND LTD. + RINGWAY HOUSE, BELL ROAD + DANESHILL, + BASINGSTOKE HAMPSHIRE RG24 8F + UNITED KINGDOM + +00-A0-14 (hex) CSIR +00A014 (base 16) CSIR + P.O. BOX 395 + PRETORIA 0001 + SOUTH AFRICA + SOUTH AFRICA + +00-A0-15 (hex) WYLE +00A015 (base 16) WYLE + 3000 BOWERS AVENUE + SANTA CLARA CA 95051 + UNITED STATES + +00-A0-16 (hex) MICROPOLIS CORP. +00A016 (base 16) MICROPOLIS CORP. + 21211 NORDHOFF STREET + CHATSWORTH CA 91311 + UNITED STATES + +00-A0-17 (hex) J B M CORPORATION +00A017 (base 16) J B M CORPORATION + 10-1, ARAMOTOSHIN MACHI + HIGASHI OSAKA + 577 + JAPAN + +00-A0-18 (hex) CREATIVE CONTROLLERS, INC. +00A018 (base 16) CREATIVE CONTROLLERS, INC. + 128 KENDRICK LANE + PICAYUNE MS 39466 + UNITED STATES + +00-A0-19 (hex) NEBULA CONSULTANTS, INC. +00A019 (base 16) NEBULA CONSULTANTS, INC. + 1449 DUNCAN DRIVE + DELTA, BC V4L 1R5 + CANADA + +00-A0-1A (hex) BINAR ELEKTRONIK AB +00A01A (base 16) BINAR ELEKTRONIK AB + MAGNETUAGEN 18 + S-46138 TROLLHATTAN + SWEDEN + SWEDEN + +00-A0-1B (hex) PREMISYS COMMUNICATIONS, INC. +00A01B (base 16) PREMISYS COMMUNICATIONS, INC. + 48664 MILMONT DRIVE + FREMONT CA 94538 + UNITED STATES + +00-A0-1C (hex) NASCENT NETWORKS CORPORATION +00A01C (base 16) NASCENT NETWORKS CORPORATION + 277 MAIN STREET, 3RD FLR. + MARLBORO MA 01752 + UNITED STATES + +00-A0-1D (hex) SIXNET +00A01D (base 16) SIXNET + P.O. BOX 767 + CLIFTON PARK NY 12065 + UNITED STATES + +00-A0-1E (hex) EST CORPORATION +00A01E (base 16) EST CORPORATION + 120 ROYALL STREET + CANTON MA 02021 + UNITED STATES + +00-A0-1F (hex) TRICORD SYSTEMS, INC. +00A01F (base 16) TRICORD SYSTEMS, INC. + 2800 NORTHWEST BOULEVARD + PLYMOUTH MN 55441-2625 + UNITED STATES + +00-A0-20 (hex) CITICORP/TTI +00A020 (base 16) CITICORP/TTI + 3100 OCEAN PARK BLVD. + SANTA MONICA CA 90405 + UNITED STATES + +00-A0-21 (hex) General Dynamics +00A021 (base 16) General Dynamics + Communication Systems + 77A Street + Needham Heights MA 02494-2892 + UNITED STATES + +00-A0-22 (hex) CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING +00A022 (base 16) CENTRE FOR DEVELOPMENT OF ADVANCED COMPUTING + UNIVERSITY OF POONA CAMPUS + GANESH KHIND, Pune - 411 008 + INDIA + +00-A0-23 (hex) APPLIED CREATIVE TECHNOLOGY, INC. +00A023 (base 16) APPLIED CREATIVE TECHNOLOGY, INC. + 2626 LOMBARDY LANE--STE.#107 + DALLAS TX 75220 + UNITED STATES + +00-A0-24 (hex) 3COM CORPORATION +00A024 (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + SANTA CLARA CA 95052 + UNITED STATES + +00-A0-25 (hex) REDCOM LABS INC. +00A025 (base 16) REDCOM LABS INC. + ONE REDCOM CENTER + VICTOR NY 14564-0995 + UNITED STATES + +00-A0-26 (hex) TELDAT, S.A. +00A026 (base 16) TELDAT, S.A. + PARQUE TECNOLOGICO MADRID + 28760 TACS CAN TOS (MADRID) + SPAIN + +00-A0-27 (hex) FIREPOWER SYSTEMS, INC. +00A027 (base 16) FIREPOWER SYSTEMS, INC. + 190 INDEPENDENCE DRIVE + MENLO PARK CA 94025 + UNITED STATES + +00-A0-28 (hex) CONNER PERIPHERALS +00A028 (base 16) CONNER PERIPHERALS + 3061 ZANKER ROAD + SAN JOSE CA 95134-2128 + UNITED STATES + +00-A0-29 (hex) COULTER CORPORATION +00A029 (base 16) COULTER CORPORATION + 11800 S.W. 147TH AVE. + MIAMI FL 33196 + UNITED STATES + +00-A0-2A (hex) TRANCELL SYSTEMS +00A02A (base 16) TRANCELL SYSTEMS + 3180 DE LA CRUZ BLVD.-STE#200 + SANTA CLARA CA 95054-2402 + UNITED STATES + +00-A0-2B (hex) TRANSITIONS RESEARCH CORP. +00A02B (base 16) TRANSITIONS RESEARCH CORP. + SHELTER ROCK LANE + DANBURY CT 06810 + UNITED STATES + +00-A0-2C (hex) interWAVE Communications +00A02C (base 16) interWAVE Communications + 656 BAIR ISLAND BLVD.-STE.#108 + REDWOOD CITY CA 94063-2704 + UNITED STATES + +00-A0-2D (hex) 1394 Trade Association +00A02D (base 16) 1394 Trade Association + 3925 WEST BRAKER LANE + AUSTIN TX 78759 + UNITED STATES + +00-A0-2E (hex) BRAND COMMUNICATIONS, LTD. +00A02E (base 16) BRAND COMMUNICATIONS, LTD. + ENTERPRISE HOUSE, CHIVERS WAY, + HISTON, CAMBRIDGE CB4 4ZR + UNITED KINGDOM + +00-A0-2F (hex) PIRELLI CAVI +00A02F (base 16) PIRELLI CAVI + VIALE SARCA 222 + 20126 MILAN + ITALY + +00-A0-30 (hex) CAPTOR NV/SA +00A030 (base 16) CAPTOR NV/SA + DE HENE 13 + B-1780 WEMMEL + BELGIUM + +00-A0-31 (hex) HAZELTINE CORPORATION, MS 1-17 +00A031 (base 16) HAZELTINE CORPORATION, MS 1-17 + 450 E. PULASKI ROAD + GREENLAWN NY 11740 + UNITED STATES + +00-A0-32 (hex) GES SINGAPORE PTE. LTD. +00A032 (base 16) GES SINGAPORE PTE. LTD. + 14 SUNGEI KADUT AVENUE + SINGAPORE 2572 + SINGAPORE + +00-A0-33 (hex) imc MeBsysteme GmbH +00A033 (base 16) imc MeBsysteme GmbH + VOLTASTRASSE 5 + D-13355 BERLIN + GERMANY + +00-A0-34 (hex) AXEL +00A034 (base 16) AXEL + 16, AVENUE DU QUEBEC + Z.A. COURTABOEUF 91962 LES ULIS + FRANCE + +00-A0-35 (hex) CYLINK CORPORATION +00A035 (base 16) CYLINK CORPORATION + 3131 JAY STREET + SANTA CLARA CA 95054 + UNITED STATES + +00-A0-36 (hex) APPLIED NETWORK TECHNOLOGY +00A036 (base 16) APPLIED NETWORK TECHNOLOGY + 319 LITTLETON ROAD--STE #101 + WESTFORD MA 01886-4133 + UNITED STATES + +00-A0-37 (hex) DATASCOPE CORPORATION +00A037 (base 16) DATASCOPE CORPORATION + 580 WINTERS AVENUE + PARAMUS NJ 07653-0005 + UNITED STATES + +00-A0-38 (hex) EMAIL ELECTRONICS +00A038 (base 16) EMAIL ELECTRONICS + P.O. BOX 154 + MOOROOLBARK, 3138 + AUSTRALIA + +00-A0-39 (hex) ROSS TECHNOLOGY, INC. +00A039 (base 16) ROSS TECHNOLOGY, INC. + 5316 HWY 290 WEST - STE. #500 + AUSTIN TX 78735 + UNITED STATES + +00-A0-3A (hex) KUBOTEK CORPORATION +00A03A (base 16) KUBOTEK CORPORATION + 56 NISHIAKETA-CHO, HIGASHIKUJO + MINAMI-KU, KYOTO 601 + JAPAN + +00-A0-3B (hex) TOSHIN ELECTRIC CO., LTD. +00A03B (base 16) TOSHIN ELECTRIC CO., LTD. + 3FL. RIVER-STONE 3RD. BLG.234 + MIZONOKUCHI, TAKATSU-KV, KAWASAKI-SHI, + 213 JAPAN + JAPAN + +00-A0-3C (hex) EG&G NUCLEAR INSTRUMENTS +00A03C (base 16) EG&G NUCLEAR INSTRUMENTS + 100 MIDLAND ROAD + OAK RIDGE TN 37830 + UNITED STATES + +00-A0-3D (hex) OPTO-22 +00A03D (base 16) OPTO-22 + 43044 BUSINESS PARK DR. + TEMECULA CA 92590 + UNITED STATES + +00-A0-3E (hex) ATM FORUM +00A03E (base 16) ATM FORUM + WORLDWIDE HEADQUARTERS + 303 VINTAGE PARK DRIVE + FOSTER CITY CA 94404-1138 + UNITED STATES + +00-A0-3F (hex) COMPUTER SOCIETY MICROPROCESSOR & MICROPROCESSOR STANDARDS C +00A03F (base 16) COMPUTER SOCIETY MICROPROCESSOR & MICROPROCESSOR STANDARDS C + % APPLE COMPUTER, INC. + 1 INFINITE LOOP, + CUPERTINO CA 95014 + UNITED STATES + +00-A0-40 (hex) APPLE COMPUTER +00A040 (base 16) APPLE COMPUTER + 20650 VALLEY GREEN DRIVE + CUPERTINO CA 95014 + UNITED STATES + +00-A0-41 (hex) INFICON +00A041 (base 16) INFICON + 2 Technology Place + E. Syracuse NY 13057 + UNITED STATES + +00-A0-42 (hex) SPUR PRODUCTS CORP. +00A042 (base 16) SPUR PRODUCTS CORP. + 9288 W. EMERALD STREET + BOISE ID 83704 + UNITED STATES + +00-A0-43 (hex) AMERICAN TECHNOLOGY LABS, INC. +00A043 (base 16) AMERICAN TECHNOLOGY LABS, INC. + 115 WEST 3RD STREET + LOWER LEVEL + STEVENSVILLE MT 59870 + UNITED STATES + +00-A0-44 (hex) NTT IT CO., LTD. +00A044 (base 16) NTT IT CO., LTD. + + KANNAI-WISE BLDG., 2-9-1 FUROU-CHO, NAKA + 231 + JAPAN + +00-A0-45 (hex) PHOENIX CONTACT GMBH & CO. +00A045 (base 16) PHOENIX CONTACT GMBH & CO. + POSTFACH 1341 + D-32819 BLOMBERG + GERMANY + GERMANY + +00-A0-46 (hex) SCITEX CORP. LTD. +00A046 (base 16) SCITEX CORP. LTD. + P.O.BOX 330 + HERZLIA B 46103 + ISRAEL + +00-A0-47 (hex) INTEGRATED FITNESS CORP. +00A047 (base 16) INTEGRATED FITNESS CORP. + 26 6TH STREET + STAMFORD CT 06905 + UNITED STATES + +00-A0-48 (hex) QUESTECH, LTD. +00A048 (base 16) QUESTECH, LTD. + EASTHEATH AVENUE + WOKINGHAM + BERKS, RG11 2PP + UNITED KINGDOM + +00-A0-49 (hex) DIGITECH INDUSTRIES, INC. +00A049 (base 16) DIGITECH INDUSTRIES, INC. + PO BOX 2267 + 55 KENOSIA AVENUE + DANBURY CT 06810 + UNITED STATES + +00-A0-4A (hex) NISSHIN ELECTRIC CO., LTD. +00A04A (base 16) NISSHIN ELECTRIC CO., LTD. + 5, MEOTOGOSHI, MUTSUSHI, + SHIKATSU-CYO, NISHIKASUGAI, + AICHI 481 + JAPAN + +00-A0-4B (hex) TFL LAN INC. +00A04B (base 16) TFL LAN INC. + 9F, NO. 499 CHUNG CHENG ROAD + SHIH-LIN DISTRICT, TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-A0-4C (hex) INNOVATIVE SYSTEMS & TECHNOLOGIES, INC. +00A04C (base 16) INNOVATIVE SYSTEMS & TECHNOLOGIES, INC. + 48511 WARM SPRINGS BLVD. + SUITE # 211C + FREMONT CA 94539 + UNITED STATES + +00-A0-4D (hex) EDA INSTRUMENTS, INC. +00A04D (base 16) EDA INSTRUMENTS, INC. + 4 THORNCLIFFE PARK DRIVE + TORONTO, ONTARIO + M4H 1H1 + CANADA + +00-A0-4E (hex) VOELKER TECHNOLOGIES, INC. +00A04E (base 16) VOELKER TECHNOLOGIES, INC. + 22 NEW BOSTON COURT + DANVILLE CA 94526 + UNITED STATES + +00-A0-4F (hex) AMERITEC CORP. +00A04F (base 16) AMERITEC CORP. + 760 ARROW GRAND CIRCLE + COVINA CA 91722 + UNITED STATES + +00-A0-50 (hex) CYPRESS SEMICONDUCTOR +00A050 (base 16) CYPRESS SEMICONDUCTOR + 3901 NORTH FIRST STREET + SAN JOSE CA 95134 + UNITED STATES + +00-A0-51 (hex) ANGIA COMMUNICATIONS. INC. +00A051 (base 16) ANGIA COMMUNICATIONS. INC. + 441 EAST BAY BLVD. + PROVO UTAH 84606 + UNITED STATES + +00-A0-52 (hex) STANILITE ELECTRONICS PTY. LTD +00A052 (base 16) STANILITE ELECTRONICS PTY. LTD + 424, LANE COVE ROAD + NORTH RYDE NSW 2113 + AUSTRALIA + +00-A0-53 (hex) COMPACT DEVICES, INC. +00A053 (base 16) COMPACT DEVICES, INC. + 16795 LARK AVENUE + LOS GATOS CA 95030 + UNITED STATES + +00-A0-54 (hex) PRIVATE +00A054 (base 16) + +00-A0-55 (hex) Data Device Corporation +00A055 (base 16) Data Device Corporation + 105 Wilbur Place + Bohemia NY 11716 + UNITED STATES + +00-A0-56 (hex) MICROPROSS +00A056 (base 16) MICROPROSS + 33, RUE GANTOIS + 59000 LILLE + FRANCE + +00-A0-57 (hex) LANCOM Systems GmbH +00A057 (base 16) LANCOM Systems GmbH + Adenauer Str.20 /B2 + D-52070 AACHEN + Würselen 52146 + GERMANY + +00-A0-58 (hex) GLORY, LTD. +00A058 (base 16) GLORY, LTD. + 1-3-1 SHIMOTENO, HIMEJI + HYOGO PREF. 670 + JAPAN + +00-A0-59 (hex) HAMILTON HALLMARK +00A059 (base 16) HAMILTON HALLMARK + 2105 LUNDY AVENUE + SAN JOSE CA 95131 + UNITED STATES + +00-A0-5A (hex) KOFAX IMAGE PRODUCTS +00A05A (base 16) KOFAX IMAGE PRODUCTS + 3 JENNER STREET + IRVINE CA 92718-3807 + UNITED STATES + +00-A0-5B (hex) MARQUIP, INC. +00A05B (base 16) MARQUIP, INC. + 1245 E. WASHINGTON AVE. + MADISON WI 53703 + UNITED STATES + +00-A0-5C (hex) INVENTORY CONVERSION, INC./ +00A05C (base 16) INVENTORY CONVERSION, INC./ + NEKOTECH DIVISION + 102 TIDE MILL ROAD -SUITE # 6 + HAMPTON NH 03842 + UNITED STATES + +00-A0-5D (hex) CS COMPUTER SYSTEME GmbH +00A05D (base 16) CS COMPUTER SYSTEME GmbH + ISARSTRASSE 3, + 82065 BAIERBRUNN + GERMANY + +00-A0-5E (hex) MYRIAD LOGIC INC. +00A05E (base 16) MYRIAD LOGIC INC. + 1109 SPRING STREET + SILVER SPRING MD 20910 + UNITED STATES + +00-A0-5F (hex) BTG Electronics Design BV +00A05F (base 16) BTG Electronics Design BV + P.O. Box 1543 + 3260 + BA Oud Beijerland + NETHERLANDS + +00-A0-60 (hex) ACER PERIPHERALS, INC. +00A060 (base 16) ACER PERIPHERALS, INC. + 9F, 135 CHIAN KUO N. RD. SEC 2 + TAIPEI, 10479 + TAIWAN, REPUBLIC OF CHINA + +00-A0-61 (hex) PURITAN BENNETT +00A061 (base 16) PURITAN BENNETT + 2200 FARADAY AVENUE + CARLSBAD CA 92008 + UNITED STATES + +00-A0-62 (hex) AES PRODATA +00A062 (base 16) AES PRODATA + 249 BALCATTA ROAD + BALCATTA + WESTERN AUSTRALIA 6021 + AUSTRALIA + +00-A0-63 (hex) JRL SYSTEMS, INC. +00A063 (base 16) JRL SYSTEMS, INC. + 8305 HWY 71 WEST + AUSTIN TX 78735 + UNITED STATES + +00-A0-64 (hex) KVB/ANALECT +00A064 (base 16) KVB/ANALECT + 9420 JERONIMO ROAD + IRVINE CA 92718 + UNITED STATES + +00-A0-65 (hex) Symantec Corporation +00A065 (base 16) Symantec Corporation + 20330 Stevens Creek Blvd. + Cupertino CA 95014 + UNITED STATES + +00-A0-66 (hex) ISA CO., LTD. +00A066 (base 16) ISA CO., LTD. + SHINJUKU LAMBDAX BLDG. 5F., + 2-4-12 OKUBO, SHINJUKU-KU TOKYO + JAPAN + JAPAN + +00-A0-67 (hex) NETWORK SERVICES GROUP +00A067 (base 16) NETWORK SERVICES GROUP + 3421 COMMISSION COURT-STE #202 + WOODBRIDGE VA 22192 + UNITED STATES + +00-A0-68 (hex) BHP LIMITED +00A068 (base 16) BHP LIMITED + GPO BOX 86A + MELBOURNE 3001 VICTORIA + AUSTRALIA + +00-A0-69 (hex) Symmetricom, Inc. +00A069 (base 16) Symmetricom, Inc. + 3750 Westwind Blvd. + Santa Rosa CA 95403 + UNITED STATES + +00-A0-6A (hex) Verilink Corporation +00A06A (base 16) Verilink Corporation + 127 Jetplex Circle + Madison AL 35758 + UNITED STATES + +00-A0-6B (hex) DMS DORSCH MIKROSYSTEM GMBH +00A06B (base 16) DMS DORSCH MIKROSYSTEM GMBH + HOLMLUECK 13-15 + D-24972 STEINBERQKIRCHE + GERMANY + +00-A0-6C (hex) SHINDENGEN ELECTRIC MFG. CO., LTD. +00A06C (base 16) SHINDENGEN ELECTRIC MFG. CO., LTD. + 10-13, MINAMI-CHO, HANNOU-CITY + SAITAMA 357 + JORDAN + +00-A0-6D (hex) MANNESMANN TALLY CORPORATION +00A06D (base 16) MANNESMANN TALLY CORPORATION + P.O. BOX 97018 + KENT WA 98064-9718 + UNITED STATES + +00-A0-6E (hex) AUSTRON, INC. +00A06E (base 16) AUSTRON, INC. + P.O. BOX 14766 + AUSTIN TX 78761-4766 + UNITED STATES + +00-A0-6F (hex) THE APPCON GROUP, INC. +00A06F (base 16) THE APPCON GROUP, INC. + 23 RICHMOND STREET + ROCHESTER NY 14607 + UNITED STATES + +00-A0-70 (hex) COASTCOM +00A070 (base 16) COASTCOM + 1151 HARBOR BAY PARKWAY + ALAMEDA CA 94502-6511 + UNITED STATES + +00-A0-71 (hex) VIDEO LOTTERY TECHNOLOGIES,INC +00A071 (base 16) VIDEO LOTTERY TECHNOLOGIES,INC + 2311 SOUTH 7TH AVENUE + BOZEMAN MT 59715 + UNITED STATES + +00-A0-72 (hex) OVATION SYSTEMS LTD. +00A072 (base 16) OVATION SYSTEMS LTD. + GREAT HASELEY TRAD. EST. + GREAT HASELEY, OXFORDSHIRE OX9 7PF + ENGLAND + UNITED KINGDOM + +00-A0-73 (hex) COM21, INC. +00A073 (base 16) COM21, INC. + 2113 LANDINGS DRIVE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-A0-74 (hex) PERCEPTION TECHNOLOGY +00A074 (base 16) PERCEPTION TECHNOLOGY + 40 SHAWMUT ROAD + CANTON MA 02021-1409 + UNITED STATES + +00-A0-75 (hex) MICRON TECHNOLOGY, INC. +00A075 (base 16) MICRON TECHNOLOGY, INC. + 8000 S. Federal Way + P.O. Box 6 + Boise ID 83707-0006 + UNITED STATES + +00-A0-76 (hex) CARDWARE LAB, INC. +00A076 (base 16) CARDWARE LAB, INC. + 285 SOBRANTE WAY, STE. + SUNNYVALE CA 94086 + UNITED STATES + +00-A0-77 (hex) FUJITSU NEXION, INC. +00A077 (base 16) FUJITSU NEXION, INC. + 289 GREAT ROAD + ACTON MA 01720-4739 + UNITED STATES + +00-A0-78 (hex) Marconi Communications +00A078 (base 16) Marconi Communications + 1000 Fore Drive + Warrendale PA 15086-7502 + UNITED STATES + +00-A0-79 (hex) ALPS ELECTRIC (USA), INC. +00A079 (base 16) ALPS ELECTRIC (USA), INC. + 3553 NORTH 1ST STREET + SAN JOSE CA 95134 + UNITED STATES + +00-A0-7A (hex) ADVANCED PERIPHERALS TECHNOLOGIES, INC. +00A07A (base 16) ADVANCED PERIPHERALS TECHNOLOGIES, INC. + + KOJIMA BUILDING, 1031 FUJISAWA + FUJISAWA-SHI, KANAGAWA-KEN 251 + JAPAN + +00-A0-7B (hex) DAWN COMPUTER INCORPORATION +00A07B (base 16) DAWN COMPUTER INCORPORATION + 6 KEXUEYUAN SOUTH ROAD + ZHONG GUAN CUN BEIJING 100080 + CHINA + +00-A0-7C (hex) TONYANG NYLON CO., LTD. +00A07C (base 16) TONYANG NYLON CO., LTD. + ELECTRONIC RESEARCH LAB + 183, HOGE-DONG, DONGAN-GU + ANYANG-CITY, KYUNGKI-DO 430-080 + KOREA, REPUBLIC OF + +00-A0-7D (hex) SEEQ TECHNOLOGY, INC. +00A07D (base 16) SEEQ TECHNOLOGY, INC. + 47131 BAYSIDE PARKWAY + FREMONT CA 94538 + UNITED STATES + +00-A0-7E (hex) AVID TECHNOLOGY, INC. +00A07E (base 16) AVID TECHNOLOGY, INC. + METROPOLITAN TECHNOLOGY PARK + ONE PARK WEST + TEWKSBURY MA 01876 + UNITED STATES + +00-A0-7F (hex) GSM-SYNTEL, LTD. +00A07F (base 16) GSM-SYNTEL, LTD. + VICTORIA WORKS, QUEENS MILL RD + HUDDERSFIELD WEST YORKSHIRE + HD1 3PG ENGLAND + UNITED KINGDOM + +00-A0-80 (hex) SBE, Inc. +00A080 (base 16) SBE, Inc. + 4000 Executive Parkway + Suite 200 + San Ramon CA 94583 + UNITED STATES + +00-A0-81 (hex) ALCATEL DATA NETWORKS +00A081 (base 16) ALCATEL DATA NETWORKS + 12502 SUNRISE VALLEY DRIVE + RESTON VA 22096 + UNITED STATES + +00-A0-82 (hex) NKT ELEKTRONIK A/S +00A082 (base 16) NKT ELEKTRONIK A/S + NKT ALLE 85 + DK-2605 BRONDBY + DENMARK + +00-A0-83 (hex) ASIMMPHONY TURKEY +00A083 (base 16) ASIMMPHONY TURKEY + ELECTRONICS, LTD. + #160.260 - 6651 ELMBRIDGE WAY RICHMOND B + V7C 4N1 + CANADA + +00-A0-84 (hex) DATAPLEX PTY. LTD. +00A084 (base 16) DATAPLEX PTY. LTD. + Level 4, 16 -18 Cambridge St + EPPING NSW 2121 + AUSTRALIA + +00-A0-85 (hex) PRIVATE +00A085 (base 16) + +00-A0-86 (hex) AMBER WAVE SYSTEMS, INC. +00A086 (base 16) AMBER WAVE SYSTEMS, INC. + 403 MASSACHUSETTS AVENUE + SUITE #202 + ACTON MA 01720 + UNITED STATES + +00-A0-87 (hex) Zarlink Semiconductor Ltd. +00A087 (base 16) Zarlink Semiconductor Ltd. + Cheney Manor, Swindon + Wiltshire SN2 2QW + UNITED KINGDOM + +00-A0-88 (hex) ESSENTIAL COMMUNICATIONS +00A088 (base 16) ESSENTIAL COMMUNICATIONS + 4374 ALEXANDER BLVD. NE-STE + ALBUQUERQUE NM 87107 + UNITED STATES + +00-A0-89 (hex) XPOINT TECHNOLOGIES, INC. +00A089 (base 16) XPOINT TECHNOLOGIES, INC. + 902 CLINT MOORE RD.-STE#132 + BOCA RATON FL 33487 + UNITED STATES + +00-A0-8A (hex) BROOKTROUT TECHNOLOGY, INC. +00A08A (base 16) BROOKTROUT TECHNOLOGY, INC. + 144 GOULD STREET- SUITE #200 + NEEDHAM MA 02194 + UNITED STATES + +00-A0-8B (hex) ASTON ELECTRONIC DESIGNS LTD. +00A08B (base 16) ASTON ELECTRONIC DESIGNS LTD. + 123/127 DEEPCUT BRIDGE ROAD + DEEPCUT, CAMBERLEY SURREY, GU16 6SD + ENGLAND + UNITED KINGDOM + +00-A0-8C (hex) MultiMedia LANs, Inc. +00A08C (base 16) MultiMedia LANs, Inc. + 5600 EXECUTIVE CENTER DRIVE + SUITE #312 + CHARLOTTE NC 28212 + UNITED STATES + +00-A0-8D (hex) JACOMO CORPORATION +00A08D (base 16) JACOMO CORPORATION + 26900 E. PINK HILL ROAD + INDEPENDENCE MO 64057 + UNITED STATES + +00-A0-8E (hex) Nokia Internet Communications +00A08E (base 16) Nokia Internet Communications + 313 Fairchild Drive + Mountain View CA 94043 + UNITED STATES + +00-A0-8F (hex) DESKNET SYSTEMS, INC. +00A08F (base 16) DESKNET SYSTEMS, INC. + 80 BUSINESS PARK DRIVE + ARMONK NY 10504 + UNITED STATES + +00-A0-90 (hex) TimeStep Corporation +00A090 (base 16) TimeStep Corporation + 359 TERRY FOX DRIVE + KANATA, ONTARIO K2K 2E7 + CANADA + +00-A0-91 (hex) APPLICOM INTERNATIONAL +00A091 (base 16) APPLICOM INTERNATIONAL + 43, RUE MAZAGRAN + 76320 CAUDEBEC-LES-ELBEUF + FRANCE + +00-A0-92 (hex) H. BOLLMANN MANUFACTURERS, LTD +00A092 (base 16) H. BOLLMANN MANUFACTURERS, LTD + 26 VICTORIA WAY + BURGESS HILL W. SUSSEX RH 15 9NF + ENGLAND + UNITED KINGDOM + +00-A0-93 (hex) B/E AEROSPACE, Inc. +00A093 (base 16) B/E AEROSPACE, Inc. + 17481 RED HILL + IRVINE CA 92714-5630 + UNITED STATES + +00-A0-94 (hex) COMSAT CORPORATION +00A094 (base 16) COMSAT CORPORATION + 22300 COMSAT DRIVE + CLARKSBURG MD 20871-9475 + UNITED STATES + +00-A0-95 (hex) ACACIA NETWORKS, INC. +00A095 (base 16) ACACIA NETWORKS, INC. + 831 WOBURN STREET + WILMINGTON MA 01887 + UNITED STATES + +00-A0-96 (hex) MITUMI ELECTRIC CO., LTD. +00A096 (base 16) MITUMI ELECTRIC CO., LTD. + 8-8-2, KOKURYO-CHO + CHOFU-SHI TOKYO 182 + JAPAN + +00-A0-97 (hex) JC INFORMATION SYSTEMS +00A097 (base 16) JC INFORMATION SYSTEMS + 4487 TECHNOLOGY DRIVE + FREMONT CA 94538-6343 + UNITED STATES + +00-A0-98 (hex) NETWORK APPLIANCE CORP. +00A098 (base 16) NETWORK APPLIANCE CORP. + 2770 SAN TOMAS EXPRESSWAY + SANTA CLARA CA 95051 + UNITED STATES + +00-A0-99 (hex) K-NET LTD. +00A099 (base 16) K-NET LTD. + SADDLERS HOUSE + 100 READING RD. + YATELEY, SURREY GU17 7RX + UNITED KINGDOM + +00-A0-9A (hex) NIHON KOHDEN AMERICA +00A09A (base 16) NIHON KOHDEN AMERICA + 2446 DUPONT DRIVE + IRVINE CA 92715 + UNITED STATES + +00-A0-9B (hex) QPSX COMMUNICATIONS, LTD. +00A09B (base 16) QPSX COMMUNICATIONS, LTD. + 33 RICHARDSON STREET + WEST PERTH 6005 + AUSTRALIA + +00-A0-9C (hex) Xyplex, Inc. +00A09C (base 16) Xyplex, Inc. + 25 FOSTER STREET + LITTLETON MA 01460 + UNITED STATES + +00-A0-9D (hex) JOHNATHON FREEMAN TECHNOLOGIES +00A09D (base 16) JOHNATHON FREEMAN TECHNOLOGIES + P.O. BOX 880114 + SAN FRANCISCO CA 94188 + UNITED STATES + +00-A0-9E (hex) ICTV +00A09E (base 16) ICTV + 14600 WINCHESTER BLVD. + LOS GATOS CA 95030 + UNITED STATES + +00-A0-9F (hex) COMMVISION CORP. +00A09F (base 16) COMMVISION CORP. + 510 LOGUE AVE. + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-A0-A0 (hex) COMPACT DATA, LTD. +00A0A0 (base 16) COMPACT DATA, LTD. + 58 DITTON WALK + CAMBRIDGE CB5 8QE + UNITED KINGDOM + +00-A0-A1 (hex) EPIC DATA INC. +00A0A1 (base 16) EPIC DATA INC. + 7280 RIVER ROAD + RICHMOND, B.C. + CANADA V6X 1X5 + CANADA + +00-A0-A2 (hex) DIGICOM S.P.A. +00A0A2 (base 16) DIGICOM S.P.A. + VIA VOLTA 39 + 21010 CARDANO AL CAMPO (VA) + ITALY + +00-A0-A3 (hex) RELIABLE POWER METERS +00A0A3 (base 16) RELIABLE POWER METERS + 400 BLOSSOM HILL ROAD + LOS GATOS CA 95032-4511 + UNITED STATES + +00-A0-A4 (hex) MICROS SYSTEMS, INC. +00A0A4 (base 16) MICROS SYSTEMS, INC. + 12000 BALTIMORE AVENUE + BELTSVILLE MD 20705 + UNITED STATES + +00-A0-A5 (hex) TEKNOR MICROSYSTEME, INC. +00A0A5 (base 16) TEKNOR MICROSYSTEME, INC. + 616 CURE BOIVIN + BOISBRIAND QUEBEC + J7G 2A7 + CANADA + +00-A0-A6 (hex) M.I. SYSTEMS, K.K. +00A0A6 (base 16) M.I. SYSTEMS, K.K. + Satsukigaoka 2-7-12- + Ikeda city Osaka 563-0029 + JAPAN + +00-A0-A7 (hex) VORAX CORPORATION +00A0A7 (base 16) VORAX CORPORATION + 1031 EAST DUANE AVENUE, STE H + SUNNYVALE CA 94086 + UNITED STATES + +00-A0-A8 (hex) RENEX CORPORATION +00A0A8 (base 16) RENEX CORPORATION + 2750 KILLARNEY DRIVE + WOODBRIDGE VA 22192 + UNITED STATES + +00-A0-A9 (hex) NAVTEL COMMUNICATIONS INC. +00A0A9 (base 16) NAVTEL COMMUNICATIONS INC. + 55 RENFREW DRIVE + MARKHAM, ONTARIO L3R 8H3 + CANADA + +00-A0-AA (hex) SPACELABS MEDICAL +00A0AA (base 16) SPACELABS MEDICAL + 15220 N.E. 40TH STREET--MS 14 + REDMOND WA 98053 + UNITED STATES + +00-A0-AB (hex) NETCS INFORMATIONSTECHNIK GMBH +00A0AB (base 16) NETCS INFORMATIONSTECHNIK GMBH + KATHARINENSTRASSE 17-18 + D-10711 BERLIN, + GERMANY + GERMANY + +00-A0-AC (hex) GILAT SATELLITE NETWORKS, LTD. +00A0AC (base 16) GILAT SATELLITE NETWORKS, LTD. + 24A HABARZEL STREET + TEL AVIV 69710 + ISRAEL + +00-A0-AD (hex) MARCONI SPA +00A0AD (base 16) MARCONI SPA + VIA NEGRONE, 1A + 16153 GENOVA CORNIGLIANO + ITALY + +00-A0-AE (hex) NUCOM SYSTEMS, INC. +00A0AE (base 16) NUCOM SYSTEMS, INC. + 9F-6, NO 4, LANE + 609 CHUNG HSIN ROAD, SEC. 5, SAN CHUNG C + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-A0-AF (hex) WMS INDUSTRIES +00A0AF (base 16) WMS INDUSTRIES + 3401 N. CALIFORNIA + CHICAGO IL 60618 + UNITED STATES + +00-A0-B0 (hex) I-O DATA DEVICE, INC. +00A0B0 (base 16) I-O DATA DEVICE, INC. + 24-1, SAKURADA-MACHI + KANAZAWA, ISHIKAWA 920 + JAPAN + +00-A0-B1 (hex) FIRST VIRTUAL CORPORATION +00A0B1 (base 16) FIRST VIRTUAL CORPORATION + 3393 OCTAVIUS DR.-STE.# 102 + SANTA CLARA CA 95054 + UNITED STATES + +00-A0-B2 (hex) SHIMA SEIKI +00A0B2 (base 16) SHIMA SEIKI + 85, SAKATA WAKAYAMA-CITY + WAKAYAMA 641 + JAPAN + +00-A0-B3 (hex) ZYKRONIX +00A0B3 (base 16) ZYKRONIX + 7248 SOUTH TUCSON WAY + ENGLEWOOD CO 80112 + UNITED STATES + +00-A0-B4 (hex) TEXAS MICROSYSTEMS, INC. +00A0B4 (base 16) TEXAS MICROSYSTEMS, INC. + 5959 CORPORATE DRIVE + HOUSTON TX 77036 + UNITED STATES + +00-A0-B5 (hex) 3H TECHNOLOGY +00A0B5 (base 16) 3H TECHNOLOGY + 3375 SCOTT BLVD. #336 + SANTA CLARA CA 95054 + UNITED STATES + +00-A0-B6 (hex) SANRITZ AUTOMATION CO., LTD. +00A0B6 (base 16) SANRITZ AUTOMATION CO., LTD. + 4-21 MINAMI NARUSE + MACHIDA CITY TOKYO 194 + JAPAN + +00-A0-B7 (hex) CORDANT, INC. +00A0B7 (base 16) CORDANT, INC. + 11400 COMMERCE PARK DR. + RESTON VA 22091-1506 + UNITED STATES + +00-A0-B8 (hex) SYMBIOS LOGIC INC. +00A0B8 (base 16) SYMBIOS LOGIC INC. + 2001 Danfield Ct. + Fort Collins CO 80525 + UNITED STATES + +00-A0-B9 (hex) EAGLE TECHNOLOGY, INC. +00A0B9 (base 16) EAGLE TECHNOLOGY, INC. + 6800 ORANGETHORPE AVE., UNIT A + BUENA PARK CA 90620 + UNITED STATES + +00-A0-BA (hex) PATTON ELECTRONICS CO. +00A0BA (base 16) PATTON ELECTRONICS CO. + 7622 RICKENBACKER DRIVE + GAITHERSBURG MD 20879 + UNITED STATES + +00-A0-BB (hex) HILAN GMBH +00A0BB (base 16) HILAN GMBH + HAID-UND-NEU-STRASSE 7 + D-76131 KARLSRUHE + GERMANY + +00-A0-BC (hex) VIASAT, INCORPORATED +00A0BC (base 16) VIASAT, INCORPORATED + 6155 El Camino Real + Carlsbad Ca 92009 + UNITED STATES + +00-A0-BD (hex) I-TECH CORP. +00A0BD (base 16) I-TECH CORP. + 10200 VALLEY VIEW ROAD + EDEN PRAIRIE MN 55344 + UNITED STATES + +00-A0-BE (hex) INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP +00A0BE (base 16) INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP + 1271 PARKMOOR AVENUE + SAN JOSE CA 95126-3448 + UNITED STATES + +00-A0-BF (hex) WIRELESS DATA GROUP MOTOROLA +00A0BF (base 16) WIRELESS DATA GROUP MOTOROLA + 1201 E. WILEY ROAD + SCHAUMBURG IL 60173 + UNITED STATES + +00-A0-C0 (hex) DIGITAL LINK CORP. +00A0C0 (base 16) DIGITAL LINK CORP. + 217 HUMBOLDT COURT + SUNNYVALE CA 94089 + UNITED STATES + +00-A0-C1 (hex) ORTIVUS MEDICAL AB +00A0C1 (base 16) ORTIVUS MEDICAL AB + BOX 513 + S-18325 TABY + SWEDEN + SWEDEN + +00-A0-C2 (hex) R.A. SYSTEMS CO., LTD. +00A0C2 (base 16) R.A. SYSTEMS CO., LTD. + 1850-3 HIROOKANOMURA + SHIOJIRI-SHI, NAGAMO 399-07 + JAPAN + JAPAN + +00-A0-C3 (hex) UNICOMPUTER GMBH +00A0C3 (base 16) UNICOMPUTER GMBH + LIMBURGER STRASSE 48 + D-61476 KRONBERG I.T.S. + GERMANY + GERMANY + +00-A0-C4 (hex) CRISTIE ELECTRONICS LTD. +00A0C4 (base 16) CRISTIE ELECTRONICS LTD. + BOND'S MILL + STONEHOUSE + GLOUCESTERSHIRE GL10 3RG + UNITED KINGDOM + +00-A0-C5 (hex) ZYXEL COMMUNICATION +00A0C5 (base 16) ZYXEL COMMUNICATION + 2ND FLR., 58 PARK AVENUE II + SCIENCE BASED INDUSTRIAL PARK + HSINCHU 30077 + TAIWAN, REPUBLIC OF CHINA + +00-A0-C6 (hex) QUALCOMM INCORPORATED +00A0C6 (base 16) QUALCOMM INCORPORATED + 5775 Morehouse Dr + San Diego CA 92121 + UNITED STATES + +00-A0-C7 (hex) TADIRAN TELECOMMUNICATIONS +00A0C7 (base 16) TADIRAN TELECOMMUNICATIONS + P.O. BOX 500 + PETAH-TIKVA 49104 + ISRAEL + +00-A0-C8 (hex) ADTRAN INC. +00A0C8 (base 16) ADTRAN INC. + 901 EXPLORER BLVD. + HUNTSVILLE AL 35806-2807 + UNITED STATES + +00-A0-C9 (hex) INTEL CORPORATION - HF1-06 +00A0C9 (base 16) INTEL CORPORATION - HF1-06 + 5200 NE ELAM YOUNG PARKWAY + HILLSBORO OR 97124 + UNITED STATES + +00-A0-CA (hex) FUJITSU DENSO LTD. +00A0CA (base 16) FUJITSU DENSO LTD. + 3055 ORCHARD DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-A0-CB (hex) ARK TELECOMMUNICATIONS, INC. +00A0CB (base 16) ARK TELECOMMUNICATIONS, INC. + 124 CARMEN LANE--SUITE + SANTA MARIA CA 93454 + UNITED STATES + +00-A0-CC (hex) LITE-ON COMMUNICATIONS, INC. +00A0CC (base 16) LITE-ON COMMUNICATIONS, INC. + 720 S. HILLVIEW DRIVE + MILPITAS CA 95035 + UNITED STATES + +00-A0-CD (hex) DR. JOHANNES HEIDENHAIN GmbH +00A0CD (base 16) DR. JOHANNES HEIDENHAIN GmbH + DR.-JOHANNES-HEIDENHAIN STR. + 83301 TRAUNREUT + GERMANY + +00-A0-CE (hex) ASTROCOM CORPORATION +00A0CE (base 16) ASTROCOM CORPORATION + 2700 SUMMER ST. N.E. + MINNEAPOLIS MN 55413 + UNITED STATES + +00-A0-CF (hex) SOTAS, INC. +00A0CF (base 16) SOTAS, INC. + 2 RESEARCH PLACE, STE. + ROCKVILLE MD 20850 + UNITED STATES + +00-A0-D0 (hex) TEN X TECHNOLOGY, INC. +00A0D0 (base 16) TEN X TECHNOLOGY, INC. + 13091 POND SPRINGS ROAD, Suite B-200 + AUSTIN TX 78729 + UNITED STATES + +00-A0-D1 (hex) INVENTEC CORPORATION +00A0D1 (base 16) INVENTEC CORPORATION + INVENTEC BUILDING + 66 HOU-KANG STREET SHI-LIN DISTRICT, TAI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-A0-D2 (hex) ALLIED TELESIS INTERNATIONAL CORPORATION +00A0D2 (base 16) ALLIED TELESIS INTERNATIONAL CORPORATION + 950 KIFER ROAD + SUNNYVALE CA 94086 + UNITED STATES + +00-A0-D3 (hex) INSTEM COMPUTER SYSTEMS, LTD. +00A0D3 (base 16) INSTEM COMPUTER SYSTEMS, LTD. + WALTON INDUSTRIAL ESTATE + STONE, STAFFORDSHIRE ST15 OLT + UNITED KINGDOM + +00-A0-D4 (hex) RADIOLAN, INC. +00A0D4 (base 16) RADIOLAN, INC. + 454 DEGUIGNE DRIVE - STE + SUNNYVALE CA 94086 + UNITED STATES + +00-A0-D5 (hex) SIERRA WIRELESS INC. +00A0D5 (base 16) SIERRA WIRELESS INC. + #260 - 13151 VANIER PLACE + RICHMOND B.C. + V6V 2J2 + CANADA + +00-A0-D6 (hex) SBE, INC. +00A0D6 (base 16) SBE, INC. + 2305 Camino Ramon + SAN RAMON CA 94583 + UNITED STATES + +00-A0-D7 (hex) KASTEN CHASE APPLIED RESEARCH +00A0D7 (base 16) KASTEN CHASE APPLIED RESEARCH + 5100 ORBITOR DRIVE + MISSISSAUGA, ONTARIO + L4W 4Z4 + CANADA + +00-A0-D8 (hex) SPECTRA - TEK +00A0D8 (base 16) SPECTRA - TEK + OUTGANG LANE + PICKERING NORTH YORKSHIRE + ENGLAND Y018 FJA + UNITED KINGDOM + +00-A0-D9 (hex) CONVEX COMPUTER CORPORATION +00A0D9 (base 16) CONVEX COMPUTER CORPORATION + 3000 WATERVIEW PARKWAY + P.O. BOX 833851 + RICHARDSON TX 75083-3851 + UNITED STATES + +00-A0-DA (hex) INTEGRATED SYSTEMS Technology, Inc. +00A0DA (base 16) INTEGRATED SYSTEMS Technology, Inc. + 4601 PRESIDENTS DRIVE + SUITE #210 + LANHAM MD 20706 + UNITED STATES + +00-A0-DB (hex) FISHER & PAYKEL PRODUCTION +00A0DB (base 16) FISHER & PAYKEL PRODUCTION + MACHINERY LIMITED + P.O. BOX 58-223, GREENMOUNT AUCKLAND + NEW ZEALAND + +00-A0-DC (hex) O.N. ELECTRONIC CO., LTD. +00A0DC (base 16) O.N. ELECTRONIC CO., LTD. + 3-20-27, TARUMI + SUITA, OSAKA 564 + JAPAN + +00-A0-DD (hex) AZONIX CORPORATION +00A0DD (base 16) AZONIX CORPORATION + 900 MIDDLESEX TURNPIKE + BLDG. + BILLERICA MA 01821 + UNITED STATES + +00-A0-DE (hex) YAMAHA CORPORATION +00A0DE (base 16) YAMAHA CORPORATION + ELECTRONIC DEVICES DIVISION + 203 MATSUNOKIJIMA TOYOOKA-MURA IWATA-GUN + 438-01 + JAPAN + +00-A0-DF (hex) STS TECHNOLOGIES, INC. +00A0DF (base 16) STS TECHNOLOGIES, INC. + 13765 ST. CHARLES ROCK RD. + SUITE #108 + BRIDGETON MO 63044 + UNITED STATES + +00-A0-E0 (hex) TENNYSON TECHNOLOGIES PTY LTD +00A0E0 (base 16) TENNYSON TECHNOLOGIES PTY LTD + 14 BUSINESS PARK DRIVE + NOTTING HILL + VICTORIA - 3168 + AUSTRALIA + +00-A0-E1 (hex) WESTPORT RESEARCH ASSOCIATES, INC. +00A0E1 (base 16) WESTPORT RESEARCH ASSOCIATES, INC. + 6102 ARLINGTON + RAYTOWN MO 64133 + UNITED STATES + +00-A0-E2 (hex) Keisokugiken Corporation +00A0E2 (base 16) Keisokugiken Corporation + 2021-5 Houshakuji + Takanezawa-machi + Shioya-gun Tochigi 329-1233 + JAPAN + +00-A0-E3 (hex) XKL SYSTEMS CORP. +00A0E3 (base 16) XKL SYSTEMS CORP. + 8420 154TH AVE. NE + REDMOND WA 98052 + UNITED STATES + +00-A0-E4 (hex) OPTIQUEST +00A0E4 (base 16) OPTIQUEST + 20490 BUSINESS PARKWAY + WALNUT CA 91789 + UNITED STATES + +00-A0-E5 (hex) NHC COMMUNICATIONS +00A0E5 (base 16) NHC COMMUNICATIONS + 5450 COTE DE LIESSE + MONTREAL, QUEBEC H4P 1A5 + CANADA + +00-A0-E6 (hex) DIALOGIC CORPORATION +00A0E6 (base 16) DIALOGIC CORPORATION + 1515 ROUTE 10 + PARSIPPANY NJ 07054 + UNITED STATES + +00-A0-E7 (hex) CENTRAL DATA CORPORATION +00A0E7 (base 16) CENTRAL DATA CORPORATION + 1602 NEWTON DRIVE + CHAMPAIGN IL 61821 + UNITED STATES + +00-A0-E8 (hex) REUTERS HOLDINGS PLC +00A0E8 (base 16) REUTERS HOLDINGS PLC + 85, FLEET STREET + LONDON EC4P 4AJ + ENGLAND + UNITED KINGDOM + +00-A0-E9 (hex) ELECTRONIC RETAILING SYSTEMS INTERNATIONAL +00A0E9 (base 16) ELECTRONIC RETAILING SYSTEMS INTERNATIONAL + 372 DANBURY ROAD + WILTON CT 06897-2523 + UNITED STATES + +00-A0-EA (hex) ETHERCOM CORP. +00A0EA (base 16) ETHERCOM CORP. + 45990 HOTCHKISS ST. + FREEMONT CA 94539 + UNITED STATES + +00-A0-EB (hex) Encore Networks +00A0EB (base 16) Encore Networks + 45472 Holiday Drive + Dulles VA 20166 + UNITED STATES + +00-A0-EC (hex) TRANSMITTON LTD. +00A0EC (base 16) TRANSMITTON LTD. + SMISBY ROAD + ASHBY DE LA ZOUCH + LEICESTERSHIRE LE65 2UG + UNITED KINGDOM + +00-A0-ED (hex) Brooks Automation, Inc. +00A0ED (base 16) Brooks Automation, Inc. + 15 Elizabeth Drive + Chelmsford MA 01824 + UNITED STATES + +00-A0-EE (hex) NASHOBA NETWORKS +00A0EE (base 16) NASHOBA NETWORKS + 9-11 GOLDSMITH ST. + LITTLETON MA 01460 + UNITED STATES + +00-A0-EF (hex) LUCIDATA LTD. +00A0EF (base 16) LUCIDATA LTD. + LUCIDATA HOUSE + SELWYN CLOSE, + GREAT SHELFORD CAMBRIDGE CB2 5HA + UNITED KINGDOM + +00-A0-F0 (hex) TORONTO MICROELECTRONICS INC. +00A0F0 (base 16) TORONTO MICROELECTRONICS INC. + 5149 BRADCO BOULEVARD + MISSISSAUGA, ONTARIO + L4W 2A6 + CANADA + +00-A0-F1 (hex) MTI +00A0F1 (base 16) MTI + 4905 E. LA PALMA AVENUE + ANAHEIM CA 92807 + UNITED STATES + +00-A0-F2 (hex) INFOTEK COMMUNICATIONS, INC. +00A0F2 (base 16) INFOTEK COMMUNICATIONS, INC. + 111 ANZA BLVD., #203 + BURLINGAME CA 94010 + UNITED STATES + +00-A0-F3 (hex) STAUBLI +00A0F3 (base 16) STAUBLI + 183 RUE DES USINES + BP 70 F74210 FAVERGES + FRANCE + FRANCE + +00-A0-F4 (hex) GE +00A0F4 (base 16) GE + W-657 + 3000 N. GRANDVIEW BLVD. + WAUKESHA WI 53188 + UNITED STATES + +00-A0-F5 (hex) RADGUARD LTD. +00A0F5 (base 16) RADGUARD LTD. + 8 HANECHOSHET STREET + TEL-AVIV 69710 + ISRAEL + +00-A0-F6 (hex) AutoGas Systems Inc. +00A0F6 (base 16) AutoGas Systems Inc. + P.O. BOX 6957 + ABIOLENE TX 79608 + UNITED STATES + +00-A0-F7 (hex) V.I COMPUTER CORP. +00A0F7 (base 16) V.I COMPUTER CORP. + 531 ENCINITAS BLVD--#114 + ENCINITAS CA 92024 + UNITED STATES + +00-A0-F8 (hex) SYMBOL TECHNOLOGIES, INC. +00A0F8 (base 16) SYMBOL TECHNOLOGIES, INC. + 1101 SOUTH WINCHESTER BLVD. + SUITE # B-110 + SAN JOSE CA 95128 + UNITED STATES + +00-A0-F9 (hex) BINTEC COMMUNICATIONS GMBH +00A0F9 (base 16) BINTEC COMMUNICATIONS GMBH + SUEDWESTPARK 94 + 90449 NUERNBERG + GERMANY + +00-A0-FA (hex) Marconi Communication GmbH +00A0FA (base 16) Marconi Communication GmbH + Gerberstrasse 33 + D-71522 Bacnknang + GERMANY + GERMANY + +00-A0-FB (hex) TORAY ENGINEERING CO., LTD. +00A0FB (base 16) TORAY ENGINEERING CO., LTD. + 1-45, OE 1-CHOME, OTSU CITY + SHIGA, + 520-21 JAPAN + JAPAN + +00-A0-FC (hex) IMAGE SCIENCES, INC. +00A0FC (base 16) IMAGE SCIENCES, INC. + 7500 INNOVATION WAY + MASON OH 45040 + UNITED STATES + +00-A0-FD (hex) SCITEX DIGITAL PRINTING, INC. +00A0FD (base 16) SCITEX DIGITAL PRINTING, INC. + 3100 RESEARCH BLVD. + DAYTON OH 45420 + UNITED STATES + +00-A0-FE (hex) BOSTON TECHNOLOGY, INC. +00A0FE (base 16) BOSTON TECHNOLOGY, INC. + 100 QUANNAPOWITT PARKWAY + WAKEFIELD MA 01880 + UNITED STATES + +00-A0-FF (hex) TELLABS OPERATIONS, INC. +00A0FF (base 16) TELLABS OPERATIONS, INC. + 1000 REMINGTON BLVD. + BOLINGBROOK IL 60440 + 60440 + UNITED STATES + +00-AA-00 (hex) INTEL CORPORATION +00AA00 (base 16) INTEL CORPORATION + 5200 NE ELAM YOUNG PARKWAY + HILLSBORO OR 97124 + UNITED STATES + +00-AA-01 (hex) INTEL CORPORATION +00AA01 (base 16) INTEL CORPORATION + + UNITED STATES + +00-AA-02 (hex) INTEL CORPORATION +00AA02 (base 16) INTEL CORPORATION + + UNITED STATES + +00-AA-3C (hex) OLIVETTI TELECOM SPA (OLTECO) +00AA3C (base 16) OLIVETTI TELECOM SPA (OLTECO) + 10062 MILLER AVE.-STE.#204 + CUPERTINO CA 95014 + UNITED STATES + +00-B0-09 (hex) Grass Valley Group +00B009 (base 16) Grass Valley Group + P.O. Box 599000 + Nevada City CA 95959-7900 + UNITED STATES + +00-B0-17 (hex) InfoGear Technology Corp. +00B017 (base 16) InfoGear Technology Corp. + 2055 Woodside Road + Redwood City CA 94061 + UNITED STATES + +00-B0-19 (hex) Casi-Rusco +00B019 (base 16) Casi-Rusco + 1155 Broken Sound Pkwy + Boca Raton FL 33498 + UNITED STATES + +00-B0-1C (hex) Westport Technologies +00B01C (base 16) Westport Technologies + 15 Capella Court, Unit 116 + Nepean Ontario + CANADA + +00-B0-1E (hex) Rantic Labs, Inc. +00B01E (base 16) Rantic Labs, Inc. + 702 Brazos, Suite #500 + Austin TX 78701 + UNITED STATES + +00-B0-2A (hex) ORSYS GmbH +00B02A (base 16) ORSYS GmbH + Am Stadtgraben 25 + D-88677 Markdorf + GERMANY + +00-B0-2D (hex) ViaGate Technologies, Inc. +00B02D (base 16) ViaGate Technologies, Inc. + 745 Route 202/206 + Suite 5 + Bridgewater NJ 08807 + UNITED STATES + +00-B0-3B (hex) HiQ Networks +00B03B (base 16) HiQ Networks + 2475 Augustine Drive + Santa Clara CA 95054 + UNITED STATES + +00-B0-48 (hex) Marconi Communications Inc. +00B048 (base 16) Marconi Communications Inc. + 8616 Freeport Parkway + MS A2 + Irving TX 75063 + UNITED STATES + +00-B0-4A (hex) Cisco Systems, Inc. +00B04A (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-B0-52 (hex) Intellon Corporation +00B052 (base 16) Intellon Corporation + 5100 West Silver Springs Blvd. + Ocala FL 34482 + UNITED STATES + +00-B0-64 (hex) Cisco Systems, Inc. +00B064 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-B0-69 (hex) Honewell Oy +00B069 (base 16) Honewell Oy + P.O. Box 168, FIN-78201 + Varkaus + FINLAND + +00-B0-6D (hex) Jones Futurex Inc. +00B06D (base 16) Jones Futurex Inc. + 3715 Atherton Road + Rocklin CA 95765 + UNITED STATES + +00-B0-80 (hex) Mannesmann Ipulsys B.V. +00B080 (base 16) Mannesmann Ipulsys B.V. + Bordewijklaan 18 + 2591 XR The Hague + NETHERLANDS + +00-B0-86 (hex) LocSoft Limited +00B086 (base 16) LocSoft Limited + 7 Bright Street + Clitheroe Lancashire BB7 1NW + UNITED KINGDOM + +00-B0-8E (hex) Cisco Systems, Inc. +00B08E (base 16) Cisco Systems, Inc. + 170 West Tasman Drive -SJA-2 + San Jose CA 95134 + UNITED STATES + +00-B0-91 (hex) Transmeta Corp. +00B091 (base 16) Transmeta Corp. + 3940 Freedom Circle + Santa Clara CA 95054 + UNITED STATES + +00-B0-94 (hex) Alaris, Inc. +00B094 (base 16) Alaris, Inc. + 47338 Fremont Boulevard + Fremont CA 94538 + UNITED STATES + +00-B0-9A (hex) Morrow Technologies Corp. +00B09A (base 16) Morrow Technologies Corp. + 2300 Tall Pines Drive + Largo FL 33771-5342 + UNITED STATES + +00-B0-9D (hex) Point Grey Research Inc. +00B09D (base 16) Point Grey Research Inc. + 305-1847 West Broadway + Vancouver British Columbia V6J 1Y6 + CANADA + +00-B0-AC (hex) SIAE-Microelettronica S.p.A. +00B0AC (base 16) SIAE-Microelettronica S.p.A. + Via Michelangelo Buonarroti, 21 + 20093 Cologno M. (Ml) + ITALY + +00-B0-AE (hex) Symmetricom +00B0AE (base 16) Symmetricom + 2300 Orchard Parkway + San Jose CA 95131 + UNITED STATES + +00-B0-B3 (hex) Xstreamis PLC +00B0B3 (base 16) Xstreamis PLC + Magdalen Centre + Oxford Science Park + Oxford 0X4 4GA + UNITED KINGDOM + +00-B0-C2 (hex) Cisco Systems, Inc. +00B0C2 (base 16) Cisco Systems, Inc. + 170 West Tasman Drive - SJA-2 + San Jose CA 95134 + UNITED STATES + +00-B0-C7 (hex) Tellabs Operations, Inc. +00B0C7 (base 16) Tellabs Operations, Inc. + One Tellabs Center + 1415 West Diehl Road + Naperville IL 60563 + UNITED STATES + +00-B0-CE (hex) TECHNOLOGY RESCUE +00B0CE (base 16) TECHNOLOGY RESCUE + 46 Avenue des Speres Lumiere + 7819 Troppes + FRANCE + +00-B0-D0 (hex) Dell Computer Corp. +00B0D0 (base 16) Dell Computer Corp. + One Dell Way + Round Rock TX 78682 + UNITED STATES + +00-B0-DB (hex) Nextcell, Inc. +00B0DB (base 16) Nextcell, Inc. + 651 East 18th Street + Plano TX 75074 + UNITED STATES + +00-B0-DF (hex) RELDATA Inc +00B0DF (base 16) RELDATA Inc + 1719 Route 10 - Suite #209 + Parsippany NJ 07054 + UNITED STATES + +00-B0-E7 (hex) British Federal Ltd. +00B0E7 (base 16) British Federal Ltd. + Castle Mill Works + Dudley DY1 4DA England + UNITED KINGDOM + +00-B0-EC (hex) EACEM +00B0EC (base 16) EACEM + Avenue Louise 140, Bte 6 + B-1050 BRUSSELS + BELGIUM + +00-B0-EE (hex) Ajile Systems, Inc. +00B0EE (base 16) Ajile Systems, Inc. + 955 Cimmie Ave NE + Suite B + Cedar Rapids IA 52402 + UNITED STATES + +00-B0-F0 (hex) CALY NETWORKS +00B0F0 (base 16) CALY NETWORKS + 295 Santa Anna Court + Sunnyvale CA 94086 + UNITED STATES + +00-B0-F5 (hex) NetWorth Technologies, Inc. +00B0F5 (base 16) NetWorth Technologies, Inc. + 1000 Germantown Pike + ldg. J-1 + Plymouth Metting PA 19462 + UNITED STATES + +00-BA-C0 (hex) Biometric Access Company +00BAC0 (base 16) Biometric Access Company + 2555 North IH 35 + Round Rock Texas 78664 + UNITED STATES + +00-BB-01 (hex) OCTOTHORPE CORP. +00BB01 (base 16) OCTOTHORPE CORP. + 285 WEST GREEN STREET + PASADENA CA 91105 + UNITED STATES + +00-BB-F0 (hex) UNGERMANN-BASS INC. +00BBF0 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-C0-00 (hex) LANOPTICS, LTD. +00C000 (base 16) LANOPTICS, LTD. + P.O. BOX 184 + MIGDAL HA-EMEK + ISRAEL ISRAEL 10551 + ISRAEL + +00-C0-01 (hex) DIATEK PATIENT MANAGMENT +00C001 (base 16) DIATEK PATIENT MANAGMENT + SYSTEMS, INC. + 5720 OBERLIN DRIVE + SAN DIEGO CA 92121-1723 + UNITED STATES + +00-C0-02 (hex) SERCOMM CORPORATION +00C002 (base 16) SERCOMM CORPORATION + 3F,NO.81,YU-YIH ROAD,CHU-NAN CHEN + MIAO-LIH HSUAN 350 + TAIWAN, REPUBLIC OF CHINA + +00-C0-03 (hex) GLOBALNET COMMUNICATIONS +00C003 (base 16) GLOBALNET COMMUNICATIONS + 912, PLACE TRANS CANADA + LONGUEUIL, QC + CANADA J4G 2M1 + CANADA + +00-C0-04 (hex) JAPAN BUSINESS COMPUTER CO.LTD +00C004 (base 16) JAPAN BUSINESS COMPUTER CO.LTD + 1368 FUTOO-CHO, KOHOKU-KU + YOKOHAMA-CITY + 222 JAPAN + JAPAN + +00-C0-05 (hex) LIVINGSTON ENTERPRISES, INC. +00C005 (base 16) LIVINGSTON ENTERPRISES, INC. + 6920 KOLL CENTER PARKWAY #220 + PLEASANTON CA 94566 + UNITED STATES + +00-C0-06 (hex) NIPPON AVIONICS CO., LTD. +00C006 (base 16) NIPPON AVIONICS CO., LTD. + INDUSTRIAL SYSTEM DIVISION + 28-2, HONGOH 2-CHOME, SEYA-KU YOKOHAMA + JAPAN + JAPAN + +00-C0-07 (hex) PINNACLE DATA SYSTEMS, INC. +00C007 (base 16) PINNACLE DATA SYSTEMS, INC. + 1350 WEST FIFTH AVENUE + COLUMBUS OH 43212 + UNITED STATES + +00-C0-08 (hex) SECO SRL +00C008 (base 16) SECO SRL + VIA CALAMANDREI 91 + 52100 AREZZO + ITALY + ITALY + +00-C0-09 (hex) KT TECHNOLOGY (S) PTE LTD +00C009 (base 16) KT TECHNOLOGY (S) PTE LTD + KT BUILDING + 100E PASIR PANJANG ROAD + SINGAPORE 0511 + SINGAPORE + +00-C0-0A (hex) MICRO CRAFT +00C00A (base 16) MICRO CRAFT + 2-4-3 NISHIFURUMATSU + OKAYAMA CITY OKAYAMA PREF. 700 + JAPAN + JAPAN + +00-C0-0B (hex) NORCONTROL A.S. +00C00B (base 16) NORCONTROL A.S. + P.O. BOX 1024 + N-3194 HORTEN + NORWAY + NORWAY + +00-C0-0C (hex) RELIA TECHNOLGIES +00C00C (base 16) RELIA TECHNOLGIES + 1F., NO. 24, INDUSTRY E. 9TH + RD., SCIENCE-BASED INDUSTRIAL PARK HSIN- + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-C0-0D (hex) ADVANCED LOGIC RESEARCH, INC. +00C00D (base 16) ADVANCED LOGIC RESEARCH, INC. + 9401 JERONIMO + IRVINE CA 92618 + UNITED STATES + +00-C0-0E (hex) PSITECH, INC. +00C00E (base 16) PSITECH, INC. + 18368 BANDILIER CIRCLE + FOUNTAIN VALLEY CA 92708 + UNITED STATES + +00-C0-0F (hex) QUANTUM SOFTWARE SYSTEMS LTD. +00C00F (base 16) QUANTUM SOFTWARE SYSTEMS LTD. + 175 TERRENCE MATTHEWS CRESCENT + KANATA, ONTARIO CANADA + K2L 3T5 + CANADA + +00-C0-10 (hex) HIRAKAWA HEWTECH CORP. +00C010 (base 16) HIRAKAWA HEWTECH CORP. + 7F, BLDG.B, OMORI BELLPORT + 6-26-2, MINAMI-OI,SHINAGAWA-KU TOKYO 140 + JAPAN + JAPAN + +00-C0-11 (hex) INTERACTIVE COMPUTING DEVICES +00C011 (base 16) INTERACTIVE COMPUTING DEVICES + 1735 TECHNOLOGY DRIVE-STE #720 + SAN JOSE CA 95110 + UNITED STATES + +00-C0-12 (hex) NETSPAN CORPORATION +00C012 (base 16) NETSPAN CORPORATION + 1411 E. CAMPBELL RD + SUITE #1000 + RICHARDSON TX 75081 + UNITED STATES + +00-C0-13 (hex) NETRIX +00C013 (base 16) NETRIX + 13595 DULLES TECHNOLOGY DRIVE + HERNDON VA 22071 + UNITED STATES + +00-C0-14 (hex) TELEMATICS CALABASAS INT'L,INC +00C014 (base 16) TELEMATICS CALABASAS INT'L,INC + 26630 AGOURA ROAD + CALABASAS CA 91302-1988 + UNITED STATES + +00-C0-15 (hex) NEW MEDIA CORPORATION +00C015 (base 16) NEW MEDIA CORPORATION + 15375 BARRANCA PARKWAY + BUILDING + IRVINE CA 92718 + UNITED STATES + +00-C0-16 (hex) ELECTRONIC THEATRE CONTROLS +00C016 (base 16) ELECTRONIC THEATRE CONTROLS + 3030 LAURA LANE + MIDDLETON WI 53562 + UNITED STATES + +00-C0-17 (hex) Fluke Corporation +00C017 (base 16) Fluke Corporation + 6920 Seaway Blvd. + Everett WA 98203 + UNITED STATES + +00-C0-18 (hex) LANART CORPORATION +00C018 (base 16) LANART CORPORATION + 145 ROSEMARY STREET + NEEDHAM MA 02194 + UNITED STATES + +00-C0-19 (hex) LEAP TECHNOLOGY, INC. +00C019 (base 16) LEAP TECHNOLOGY, INC. + 20 + BURLINGTON MA 01803 + UNITED STATES + +00-C0-1A (hex) COROMETRICS MEDICAL SYSTEMS +00C01A (base 16) COROMETRICS MEDICAL SYSTEMS + 61 BARNES PARK ROAD NORTH + WALLINGFORD CT 06492-0333 + UNITED STATES + +00-C0-1B (hex) SOCKET COMMUNICATIONS, INC. +00C01B (base 16) SOCKET COMMUNICATIONS, INC. + 2823 WHIPPLE RD. + UNION CITY CA 94587 + UNITED STATES + +00-C0-1C (hex) INTERLINK COMMUNICATIONS LTD. +00C01C (base 16) INTERLINK COMMUNICATIONS LTD. + BRUNEL ROAD, + GORSE LANE INDUSTRIAL ESTATE CLACTON-ON- + ENGLAND + UNITED KINGDOM + +00-C0-1D (hex) GRAND JUNCTION NETWORKS, INC. +00C01D (base 16) GRAND JUNCTION NETWORKS, INC. + 3101 WHIPPLE RD., #27 + UNION CITY CA 94587 + UNITED STATES + +00-C0-1E (hex) LA FRANCAISE DES JEUX +00C01E (base 16) LA FRANCAISE DES JEUX + CENTRE DE ROUSSY/DTI + 77230 ROUSSY-LE-VIEUX + FRANCE + FRANCE + +00-C0-1F (hex) S.E.R.C.E.L. +00C01F (base 16) S.E.R.C.E.L. + B.P. 439 + 44474 CARQUEFOU CEDEX + FRANCE + FRANCE + +00-C0-20 (hex) ARCO ELECTRONIC, CONTROL LTD. +00C020 (base 16) ARCO ELECTRONIC, CONTROL LTD. + 2750 NORTH 29TH AVE.-STE.#316 + HOLLYWOOD FL 33020 + UNITED STATES + +00-C0-21 (hex) NETEXPRESS +00C021 (base 16) NETEXPRESS + 989 EAST HILLSDALE BLVD. + SUITE #290 + FOSTER CITY CA 94404-2113 + UNITED STATES + +00-C0-22 (hex) LASERMASTER TECHNOLOGIES, INC. +00C022 (base 16) LASERMASTER TECHNOLOGIES, INC. + 7156 SHADY OAK ROAD + EDEN PRAIRIE MN 55344 + UNITED STATES + +00-C0-23 (hex) TUTANKHAMON ELECTRONICS +00C023 (base 16) TUTANKHAMON ELECTRONICS + 2446 ESTAND WAY + PLEASANT HILL CA 94523 + UNITED STATES + +00-C0-24 (hex) EDEN SISTEMAS DE COMPUTACAO SA +00C024 (base 16) EDEN SISTEMAS DE COMPUTACAO SA + RUA DO OUVIDOR 121 5 ANDAR + RIO DE JANEIRO + BRAZIL + BRAZIL + +00-C0-25 (hex) DATAPRODUCTS CORPORATION +00C025 (base 16) DATAPRODUCTS CORPORATION + 6219 DESOTO AVENUE + WOODLAND HILLS CA 91365-0746 + UNITED STATES + +00-C0-26 (hex) LANS TECHNOLOGY CO., LTD. +00C026 (base 16) LANS TECHNOLOGY CO., LTD. + 153 MINTSU RD. 2F, TAOYUAN, + TAIWAN R. O. C. + TAIWAN, REPUBLIC OF CHINA + +00-C0-27 (hex) CIPHER SYSTEMS, INC. +00C027 (base 16) CIPHER SYSTEMS, INC. + 1800 NW 169th Place + Suite B-100 + Beaverton OR 97006 + UNITED STATES + +00-C0-28 (hex) JASCO CORPORATION +00C028 (base 16) JASCO CORPORATION + 2967-5 ISHIKAWA-CHO, + HACHIOJI-SHI TOKYO 192 + JAPAN + JAPAN + +00-C0-29 (hex) Nexans Deutschland AG - ANS +00C029 (base 16) Nexans Deutschland AG - ANS + Bonnenbroicher Str. 100 + 41238 Moenchengladbach + GERMANY + +00-C0-2A (hex) OHKURA ELECTRIC CO., LTD. +00C02A (base 16) OHKURA ELECTRIC CO., LTD. + 2-90-20 SHIRAKO WAKO CITY + SAITAMA PREF. + 351-01 JAPAN + JAPAN + +00-C0-2B (hex) GERLOFF GESELLSCHAFT FUR +00C02B (base 16) GERLOFF GESELLSCHAFT FUR + ELEKRONISCHE SYSTEMENTWICKLUNG + FASANENWEG 25 W-2000 HAMBURG 73 + GERMANY + GERMANY + +00-C0-2C (hex) CENTRUM COMMUNICATIONS, INC. +00C02C (base 16) CENTRUM COMMUNICATIONS, INC. + 2880 ZANKER ROAD-STE #108 + SAN JOSE CA 95134 + UNITED STATES + +00-C0-2D (hex) FUJI PHOTO FILM CO., LTD. +00C02D (base 16) FUJI PHOTO FILM CO., LTD. + 798 MIYANODAI KAISEI-MACHI + ASHIGARA-KAMI-GUN KANAGAWA + JAPAN + JAPAN + +00-C0-2E (hex) NETWIZ +00C02E (base 16) NETWIZ + 26 GOLOMB STREET + HAIFA 33391 + ISRAEL + ISRAEL + +00-C0-2F (hex) OKUMA CORPORATION +00C02F (base 16) OKUMA CORPORATION + OGUCHI-CHO, NIWA-GUN + AICHI 480-01 + JAPAN + JAPAN + +00-C0-30 (hex) INTEGRATED ENGINEERING B. V. +00C030 (base 16) INTEGRATED ENGINEERING B. V. + ELLERMANSTRAAT 15 + 1099 BW AMSTERDAM + THE NETHERLANDS + NETHERLANDS + +00-C0-31 (hex) DESIGN RESEARCH SYSTEMS, INC. +00C031 (base 16) DESIGN RESEARCH SYSTEMS, INC. + 925 E. EXECUTIVE PARK DR. + SUITE + SALT LAKE CITY UT 84117 + UNITED STATES + +00-C0-32 (hex) I-CUBED LIMITED +00C032 (base 16) I-CUBED LIMITED + UNIT J1, THE POADDOCKS + 347 CHERRY HINTON ROAD CAMBRIDGE + CB1 4DH CB1 4DH ENGLAND + UNITED KINGDOM + +00-C0-33 (hex) TELEBIT COMMUNICATIONS APS +00C033 (base 16) TELEBIT COMMUNICATIONS APS + SKANDERBORGVEJ 234 + DK-8260 VIBY + DENMARK + DENMARK + +00-C0-34 (hex) TRANSACTION NETWORK +00C034 (base 16) TRANSACTION NETWORK + SERVICES, INC. + OMNILINK COMMUNICATIONS DIV. 3101 TECHNO + LANSING MI 48910-8356 + UNITED STATES + +00-C0-35 (hex) QUINTAR COMPANY +00C035 (base 16) QUINTAR COMPANY + 370 AMAPOLA AVE., STE.#106 + TORRANCE CA 90501 + UNITED STATES + +00-C0-36 (hex) RAYTECH ELECTRONIC CORP. +00C036 (base 16) RAYTECH ELECTRONIC CORP. + 2F, NO.6, LANE 497 + CHUNG CHENG RD, HSIN TIEN CITY TAIPEI HS + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-C0-37 (hex) DYNATEM +00C037 (base 16) DYNATEM + 15795 ROCKFIELD BLVD. + SUITE + IRVINE CA 92718 + UNITED STATES + +00-C0-38 (hex) RASTER IMAGE PROCESSING SYSTEM +00C038 (base 16) RASTER IMAGE PROCESSING SYSTEM + 4665 NAUTILUS COURT SOUTH + BOULDER CO 80301 + UNITED STATES + +00-C0-39 (hex) Teridian Semiconductor Corporation +00C039 (base 16) Teridian Semiconductor Corporation + 6440 Oak Canyon + Irvine CA 92618 + UNITED STATES + +00-C0-3A (hex) MEN-MIKRO ELEKTRONIK GMBH +00C03A (base 16) MEN-MIKRO ELEKTRONIK GMBH + WIESENTALSTRASSE 40 + W-8500 NUERNBERG 90 + GERMANY + GERMANY + +00-C0-3B (hex) MULTIACCESS COMPUTING CORP. +00C03B (base 16) MULTIACCESS COMPUTING CORP. + 5350 HOLLISTER AVE., STE. + SANTA BARBARA CA 93111 + UNITED STATES + +00-C0-3C (hex) TOWER TECH S.R.L. +00C03C (base 16) TOWER TECH S.R.L. + VIA RIDOLFI 6,8 + 56124 PISA + ITALY + ITALY + +00-C0-3D (hex) WIESEMANN & THEIS GMBH +00C03D (base 16) WIESEMANN & THEIS GMBH + WITTENER STR. 312 + 5600 WUPPERTAL 2 + GERMANY + GERMANY + +00-C0-3E (hex) FA. GEBR. HELLER GMBH +00C03E (base 16) FA. GEBR. HELLER GMBH + P.O. BOX 1428, DEP. EE7 + 7440 NURTINGEN + GERMANY + GERMANY + +00-C0-3F (hex) STORES AUTOMATED SYSTEMS, INC. +00C03F (base 16) STORES AUTOMATED SYSTEMS, INC. + 1360 ADAMS ROAD + BENSALEM PA 19020 + UNITED STATES + +00-C0-40 (hex) ECCI +00C040 (base 16) ECCI + 15070-B AVENUE OF SCIENCE + SAN DIEGO CA 92128 + UNITED STATES + +00-C0-41 (hex) DIGITAL TRANSMISSION SYSTEMS +00C041 (base 16) DIGITAL TRANSMISSION SYSTEMS + 4830 RIVER GREEN PARKWAY + DULUTH GA 30136 + UNITED STATES + +00-C0-42 (hex) DATALUX CORP. +00C042 (base 16) DATALUX CORP. + 2836 CESSNA DRIVE + WINCHESTER VA 22601 + UNITED STATES + +00-C0-43 (hex) STRATACOM +00C043 (base 16) STRATACOM + 1400 PARKMOOR AVENUE + SAN JOSE CA 95126 + UNITED STATES + +00-C0-44 (hex) EMCOM CORPORATION +00C044 (base 16) EMCOM CORPORATION + 840 AVENUE + PLANO TX 75074 + UNITED STATES + +00-C0-45 (hex) ISOLATION SYSTEMS, LTD. +00C045 (base 16) ISOLATION SYSTEMS, LTD. + 26 SIX POINT ROAD + TORONTO, ONTARIO + CANADA M8Z 2W9 + CANADA + +00-C0-46 (hex) Blue Chip Technology Ltd +00C046 (base 16) Blue Chip Technology Ltd + Chowley Oak Lane + Tattenhall + Chester Cheshire CH3 9EX + UNITED KINGDOM + +00-C0-47 (hex) UNIMICRO SYSTEMS, INC. +00C047 (base 16) UNIMICRO SYSTEMS, INC. + 44382 S. GRIMMER BLVD. + FREMONT CA 94538 + UNITED STATES + +00-C0-48 (hex) BAY TECHNICAL ASSOCIATES +00C048 (base 16) BAY TECHNICAL ASSOCIATES + 200 N. SECOND STREET + P.O. BOX 387 + BAY ST. LOUIS MS 39520 + UNITED STATES + +00-C0-49 (hex) U.S. ROBOTICS, INC. +00C049 (base 16) U.S. ROBOTICS, INC. + 8100 NORTH MCCORMICK BLVD. + SKOKIE IL 60076-2999 + UNITED STATES + +00-C0-4A (hex) GROUP 2000 AG +00C04A (base 16) GROUP 2000 AG + P.O. BOX 331 + TANNAGERTENSTR. 9 CH-8635 DURNTEN + SWITZERLAND + SWITZERLAND + +00-C0-4B (hex) CREATIVE MICROSYSTEMS +00C04B (base 16) CREATIVE MICROSYSTEMS + 9, AVENUE DU CANADA + PARC HIGHTEC 6 Z.A. DE COURTABOEUF + 91966 LES ULIS---FRANC + FRANCE + +00-C0-4C (hex) DEPARTMENT OF FOREIGN AFFAIRS +00C04C (base 16) DEPARTMENT OF FOREIGN AFFAIRS + & TRADE + ADMINISTRATIVE BUILDING PARKES PLACE, P + AUSTRALIA + AUSTRALIA + +00-C0-4D (hex) MITEC, INC. +00C04D (base 16) MITEC, INC. + BR-KAMEIDO 1 BUILDING + Z-33-1, KAMEIDO, KOUTOU-KU TOKYO, 136 + JAPAN + JAPAN + +00-C0-4E (hex) COMTROL CORPORATION +00C04E (base 16) COMTROL CORPORATION + 2675 PATTON ROAD + ST. PAUL MN 55113 + UNITED STATES + +00-C0-4F (hex) DELL COMPUTER CORPORATION +00C04F (base 16) DELL COMPUTER CORPORATION + 1807 WEST BRAKER LANE-BLDG. + AUSTIN TX 78758-3610 + UNITED STATES + +00-C0-50 (hex) TOYO DENKI SEIZO K.K. +00C050 (base 16) TOYO DENKI SEIZO K.K. + 4-6-32 HIGASHIKASHIWAGAYA + EBINASHI + KANAGAWA JAPAN 243-04 + JAPAN + +00-C0-51 (hex) ADVANCED INTEGRATION RESEARCH +00C051 (base 16) ADVANCED INTEGRATION RESEARCH + 2188 DEL FRANCO STREET + SAN JOSE CA 95131 + UNITED STATES + +00-C0-52 (hex) BURR-BROWN +00C052 (base 16) BURR-BROWN + P.O. BOX 11400 + TUCSON AZ 85734-1400 + UNITED STATES + +00-C0-53 (hex) Aspect Software Inc. +00C053 (base 16) Aspect Software Inc. + 6 Technology Park Drive + Westford MA 01886 + UNITED STATES + +00-C0-54 (hex) NETWORK PERIPHERALS, LTD. +00C054 (base 16) NETWORK PERIPHERALS, LTD. + 4TH FLOOR, 17 BOWATER RD. + WESTMINSTER INDUSTRIAL ESTATE LONDON SE + ENGLAND + UNITED KINGDOM + +00-C0-55 (hex) MODULAR COMPUTING TECHNOLOGIES +00C055 (base 16) MODULAR COMPUTING TECHNOLOGIES + 2352 MAIN STREET + CONCORD MA 01742 + UNITED STATES + +00-C0-56 (hex) SOMELEC +00C056 (base 16) SOMELEC + BP 7010 - 95050 + CERGY PONTOISE CEDEX + FRANCE + FRANCE + +00-C0-57 (hex) MYCO ELECTRONICS +00C057 (base 16) MYCO ELECTRONICS + MUSSERONGRAND 1G + S-756 UPPSALA + SWEDEN + SWEDEN + +00-C0-58 (hex) DATAEXPERT CORP. +00C058 (base 16) DATAEXPERT CORP. + 1156 SONOPRA COURTN-KANG RD. + SUNNYVALE CA 94086 + UNITED STATES + +00-C0-59 (hex) NIPPON DENSO CO., LTD. +00C059 (base 16) NIPPON DENSO CO., LTD. + 1-1 SHOWA-CHO + KARIYA CITY AICHI + 448 JAPAN + JAPAN + +00-C0-5A (hex) SEMAPHORE COMMUNICATIONS CORP. +00C05A (base 16) SEMAPHORE COMMUNICATIONS CORP. + 217 HUMBOLDT COURT + SUNNYVALE CA 94089-1300 + UNITED STATES + +00-C0-5B (hex) NETWORKS NORTHWEST, INC. +00C05B (base 16) NETWORKS NORTHWEST, INC. + P.O. BOX 1188 + ISSAQUAH WA 98027 + UNITED STATES + +00-C0-5C (hex) ELONEX PLC +00C05C (base 16) ELONEX PLC + 2 APSLEY WAY + LONDON, NW2 7HF + UNITED KINGDOM + UNITED KINGDOM + +00-C0-5D (hex) L&N TECHNOLOGIES +00C05D (base 16) L&N TECHNOLOGIES + 2899 AGOURA ROAD #196 + WESTLAKE VILLAGE CA 91361-3200 + UNITED STATES + +00-C0-5E (hex) VARI-LITE, INC. +00C05E (base 16) VARI-LITE, INC. + 201 REGAL ROW + DALLAS TX 75247 + UNITED STATES + +00-C0-5F (hex) FINE-PAL COMPANY LIMITED +00C05F (base 16) FINE-PAL COMPANY LIMITED + RM. 9, 11F, KINGSFORD IND. CTR + 13, WANG HOI ROAD KOWLOON BAY, KLN + HONG KONG + HONG KONG + +00-C0-60 (hex) ID SCANDINAVIA AS +00C060 (base 16) ID SCANDINAVIA AS + P.O. BOX 4227 + N-5028 BERGEN + NORWAY + NORWAY + +00-C0-61 (hex) SOLECTEK CORPORATION +00C061 (base 16) SOLECTEK CORPORATION + 6370 NANCY RIDGE DR.-STE.#109 + SAN DIEGO CA 92121 + UNITED STATES + +00-C0-62 (hex) IMPULSE TECHNOLOGY +00C062 (base 16) IMPULSE TECHNOLOGY + 210 DAHLONEGA ST.#204 + CUMMING GA 30130 + UNITED STATES + +00-C0-63 (hex) MORNING STAR TECHNOLOGIES, INC +00C063 (base 16) MORNING STAR TECHNOLOGIES, INC + 1760 ZOLLINGER ROAD + COLUMBUS OH 43221 + UNITED STATES + +00-C0-64 (hex) GENERAL DATACOMM IND. INC. +00C064 (base 16) GENERAL DATACOMM IND. INC. + PARK ROAD EXTENSION + P.O. BOX 1299 + MIDDLEBURY CT 06762 + UNITED STATES + +00-C0-65 (hex) SCOPE COMMUNICATIONS, INC. +00C065 (base 16) SCOPE COMMUNICATIONS, INC. + 100 OTIS STREET + NORTHBORO MA 01532 + UNITED STATES + +00-C0-66 (hex) DOCUPOINT, INC. +00C066 (base 16) DOCUPOINT, INC. + 2701 BAYVIEW DRIVE + FREMONT CA 94538 + UNITED STATES + +00-C0-67 (hex) UNITED BARCODE INDUSTRIES +00C067 (base 16) UNITED BARCODE INDUSTRIES + 12240 INDIAN CREEK COURT + BELTSVILLE MD 20705 + UNITED STATES + +00-C0-68 (hex) PHILIP DRAKE ELECTRONICS LTD. +00C068 (base 16) PHILIP DRAKE ELECTRONICS LTD. + THE HYDEWAY + WELWYN GARDEN CITY HERTS. AL7 3UQ, + UNITED KINGDOM + +00-C0-69 (hex) Axxcelera Broadband Wireless +00C069 (base 16) Axxcelera Broadband Wireless + 111 Castilian Drive + Santa Barbara CA 93117 + UNITED STATES + +00-C0-6A (hex) ZAHNER-ELEKTRIK GMBH & CO. KG +00C06A (base 16) ZAHNER-ELEKTRIK GMBH & CO. KG + P.O. BOX 1846 + THUERINGER STRASSE 12 DW-8640 KRONACH-GU + GERMANY + GERMANY + +00-C0-6B (hex) OSI PLUS CORPORATION +00C06B (base 16) OSI PLUS CORPORATION + 2-1-23 NAKAMEGURO + MEGURO-KU, TOKYO 153 + JAPAN + JAPAN + +00-C0-6C (hex) SVEC COMPUTER CORP. +00C06C (base 16) SVEC COMPUTER CORP. + 3F, 531-1 CHUNG CHENG RD. + HSIN-TIEN CITY, TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-C0-6D (hex) BOCA RESEARCH, INC. +00C06D (base 16) BOCA RESEARCH, INC. + 6401 CONGRESS AVENUE + BOCA RATON FL 33487 + UNITED STATES + +00-C0-6E (hex) HAFT TECHNOLOGY, INC. +00C06E (base 16) HAFT TECHNOLOGY, INC. + DAINI-DOHO BLDG. + 3-CHOME 24-7 NINOMIYA TSUKUBA IBARAGI + 305 JAPAN + JAPAN + +00-C0-6F (hex) KOMATSU LTD. +00C06F (base 16) KOMATSU LTD. + 2597 SHINOMIYA HIRATSUKA-SHI + KANAGAWA 254 + JAPAN + JAPAN + +00-C0-70 (hex) SECTRA SECURE-TRANSMISSION AB +00C070 (base 16) SECTRA SECURE-TRANSMISSION AB + TEKNIKRINGEN 2 + S-583 30 LINKOPING + SWEDEN + SWEDEN + +00-C0-71 (hex) AREANEX COMMUNICATIONS, INC. +00C071 (base 16) AREANEX COMMUNICATIONS, INC. + 3333 OCTAVIUS DRIVE UNIT C + SANTA CLARA CA 95051 + UNITED STATES + +00-C0-72 (hex) KNX LTD. +00C072 (base 16) KNX LTD. + HOLLINGWOOD HOUSE + WEST CHEVIN ROAD OTLEY, W. YORKSHIRE + LS21 3HA UNITED KINGDOM + UNITED KINGDOM + +00-C0-73 (hex) XEDIA CORPORATION +00C073 (base 16) XEDIA CORPORATION + 301 BALLARDVALE STREET + WILMINGTON MA 01887 + UNITED STATES + +00-C0-74 (hex) TOYODA AUTOMATIC LOOM +00C074 (base 16) TOYODA AUTOMATIC LOOM + WORKS, LTD. + 2-1, TOYODA-CHO, KARIYA-SHI AICHI-KEN + 448 JAPAN + JAPAN + +00-C0-75 (hex) XANTE CORPORATION +00C075 (base 16) XANTE CORPORATION + 2559 EMOGENE STREET + MOBILE AL 36606 + UNITED STATES + +00-C0-76 (hex) I-DATA INTERNATIONAL A-S +00C076 (base 16) I-DATA INTERNATIONAL A-S + 35-43 VADSTRUPVEJ + DK-2880 BAGSVAERD + DENMARK + DENMARK + +00-C0-77 (hex) DAEWOO TELECOM LTD. +00C077 (base 16) DAEWOO TELECOM LTD. + PRODUCTS DESIGN DEPT. 1 + PRODUCTS DESIGN CENTER SOCHO. P.O. BOX 1 + SEOUL SEOUL KOREA + KOREA, REPUBLIC OF + +00-C0-78 (hex) COMPUTER SYSTEMS ENGINEERING +00C078 (base 16) COMPUTER SYSTEMS ENGINEERING + 46791 FREMONT BLVD. + FREMONT CA 94538 + UNITED STATES + +00-C0-79 (hex) FONSYS CO.,LTD. +00C079 (base 16) FONSYS CO.,LTD. + 209-5, YANGJAE, SEOCHO + SEOUL A37130 + KOREA + KOREA, REPUBLIC OF + +00-C0-7A (hex) PRIVA B.V. +00C07A (base 16) PRIVA B.V. + P.O. BOX 18 + 2678 ZG DE LIER (Z-H) + NETHERLANDS + +00-C0-7B (hex) ASCEND COMMUNICATIONS, INC. +00C07B (base 16) ASCEND COMMUNICATIONS, INC. + 1701 HARBOR BAY PARKWAY + ALAMEDA CA 94502 + UNITED STATES + +00-C0-7C (hex) HIGHTECH INFORMATION +00C07C (base 16) HIGHTECH INFORMATION + SYSTEM LTD. + UNIT 7, 2/F, PO LUNG CENTRE 11 WANG CHIU + HONG KONG + HONG KONG + +00-C0-7D (hex) RISC DEVELOPMENTS LTD. +00C07D (base 16) RISC DEVELOPMENTS LTD. + 117 HATFIELD ROAD + ST. ALBANS, HERTS AL14J5 + ENGLAND + UNITED KINGDOM + +00-C0-7E (hex) KUBOTA CORPORATION ELECTRONIC +00C07E (base 16) KUBOTA CORPORATION ELECTRONIC + DEVICE DEPT. + 2-35, JINMU-CHO, YAO-CITY OSAKA PREF. + JAPAN #581 + JAPAN + +00-C0-7F (hex) NUPON COMPUTING CORP. +00C07F (base 16) NUPON COMPUTING CORP. + 1391 WARNER AVE., -SUITE + TUSTIN CA 92680 + UNITED STATES + +00-C0-80 (hex) NETSTAR, INC. +00C080 (base 16) NETSTAR, INC. + CEDAR BUSINESS CENTER + 1801 E. 79TH STREET + MINNEAPOLIS MN 55425-1235 + UNITED STATES + +00-C0-81 (hex) METRODATA LTD. +00C081 (base 16) METRODATA LTD. + BLENHEIM HOUSE + CRABTREE OFFICE VILLAGE EVERSLEY WAY, EG + TW20 8RY TW20 8RY ENGLAND + UNITED KINGDOM + +00-C0-82 (hex) MOORE PRODUCTS CO. +00C082 (base 16) MOORE PRODUCTS CO. + SUMNEYTOWN PIKE + SPRING HOUSE PA 19477 + UNITED STATES + +00-C0-83 (hex) TRACE MOUNTAIN PRODUCTS, INC. +00C083 (base 16) TRACE MOUNTAIN PRODUCTS, INC. + 1040 EAST BROKAW ROAD + SAN JOSE CA 95131 + UNITED STATES + +00-C0-84 (hex) DATA LINK CORP. LTD. +00C084 (base 16) DATA LINK CORP. LTD. + 3-15-3 MIDORICHO + TOKOROZAWA-CITY SAITAMA 359 + JAPAN + JAPAN + +00-C0-85 (hex) ELECTRONICS FOR IMAGING, INC. +00C085 (base 16) ELECTRONICS FOR IMAGING, INC. + 2855 CAMPUS DRIVE + SAN MATEO CA 94403 + UNITED STATES + +00-C0-86 (hex) THE LYNK CORPORATION +00C086 (base 16) THE LYNK CORPORATION + 101 QUEENS DRIVE + KING OF PRUSSIA PA 19406 + UNITED STATES + +00-C0-87 (hex) UUNET TECHNOLOGIES, INC. +00C087 (base 16) UUNET TECHNOLOGIES, INC. + 3110 FAIRVIEW PARK DR. #570 + FALLS CHURCH VA 22042 + UNITED STATES + +00-C0-88 (hex) EKF ELEKTRONIK GMBH +00C088 (base 16) EKF ELEKTRONIK GMBH + PHILIPP-REIS-STR. 4 + 4700 HAMM + GERMANY + GERMANY + +00-C0-89 (hex) TELINDUS DISTRIBUTION +00C089 (base 16) TELINDUS DISTRIBUTION + GELDENAAKSEBAAN 335 + 3001 HEVERLEE + BELGIUM + BELGIUM + +00-C0-8A (hex) LAUTERBACH DATENTECHNIK GMBH +00C08A (base 16) LAUTERBACH DATENTECHNIK GMBH + FICHENSTR. 27 + D-85649 HOFOLDING + GERMANY + GERMANY + +00-C0-8B (hex) RISQ MODULAR SYSTEMS, INC. +00C08B (base 16) RISQ MODULAR SYSTEMS, INC. + 39899 BALENTINE DRIVE-STE #375 + NEWARK CA 94560 + UNITED STATES + +00-C0-8C (hex) PERFORMANCE TECHNOLOGIES, INC. +00C08C (base 16) PERFORMANCE TECHNOLOGIES, INC. + 315 SCIENCE PARKWAY + ROCHESTER NY 14620 + UNITED STATES + +00-C0-8D (hex) TRONIX PRODUCT DEVELOPMENT +00C08D (base 16) TRONIX PRODUCT DEVELOPMENT + 4908 E. MCDOWELL RD. STE.#100 + PHOENIX AZ 85008 + UNITED STATES + +00-C0-8E (hex) NETWORK INFORMATION TECHNOLOGY +00C08E (base 16) NETWORK INFORMATION TECHNOLOGY + 10430 S. DE ANZA BLVD. + CUPERTINO CA 95014 + UNITED STATES + +00-C0-8F (hex) Matsushita Electric Works, Ltd. +00C08F (base 16) Matsushita Electric Works, Ltd. + 1668 Fujikata, Tsu-shi + Mie-ken, 514-8555 + JAPAN + +00-C0-90 (hex) PRAIM S.R.L. +00C090 (base 16) PRAIM S.R.L. + VIA MACCANI, 169 + 38100 TRENTO (TN) + ITALY + +00-C0-91 (hex) JABIL CIRCUIT, INC. +00C091 (base 16) JABIL CIRCUIT, INC. + 32275 MALLY ROAD + MADISON HEIGHTS MI 48071 + UNITED STATES + +00-C0-92 (hex) MENNEN MEDICAL INC. +00C092 (base 16) MENNEN MEDICAL INC. + 10123 MAIN STREET + CLARENCE NY 14031-2095 + UNITED STATES + +00-C0-93 (hex) ALTA RESEARCH CORP. +00C093 (base 16) ALTA RESEARCH CORP. + 614 SOUTH FEDERAL HIGHWAY + DEERFIELD BEACH FL 33441 + UNITED STATES + +00-C0-94 (hex) VMX INC. +00C094 (base 16) VMX INC. + 2115 O'NEL DRIVE + SAN JOSE CA 95131 + UNITED STATES + +00-C0-95 (hex) ZNYX +00C095 (base 16) ZNYX + 48421 Milmont Drive + Fremont CA 94538 + UNITED STATES + +00-C0-96 (hex) TAMURA CORPORATION +00C096 (base 16) TAMURA CORPORATION + COMMUNICATION SYSTEMS DIV. + 19-43 HIGASHI OIZUMI 1 CHOME NERIMA-KU, + JAPAN + JAPAN + +00-C0-97 (hex) ARCHIPEL SA +00C097 (base 16) ARCHIPEL SA + 1 RUE DU BULLOZ + F 74940 ANNECY-LE-VIEUX + FRANCE + FRANCE + +00-C0-98 (hex) CHUNTEX ELECTRONIC CO., LTD. +00C098 (base 16) CHUNTEX ELECTRONIC CO., LTD. + 6F., NO.2, ALLEY 6, LANE 235 + PAO CHIAO RD., HSIN TIEN, TAIPEI HSIEN + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-C0-99 (hex) YOSHIKI INDUSTRIAL CO.,LTD. +00C099 (base 16) YOSHIKI INDUSTRIAL CO.,LTD. + 1-38 MATSUGASAKI 2-CHOME + YONEZAWA YAMAGATA + 992 JAPAN + JAPAN + +00-C0-9A (hex) PHOTONICS CORPORATION +00C09A (base 16) PHOTONICS CORPORATION + 2940 NORTH FIRST STREET + SAN JOSE CA 95123-2021 + UNITED STATES + +00-C0-9B (hex) RELIANCE COMM/TEC, R-TEC +00C09B (base 16) RELIANCE COMM/TEC, R-TEC + SYSTEMS INC. + 2100 RELIANCE PARKWAY, MS 22 + BEDFORD TX 76021 + UNITED STATES + +00-C0-9C (hex) HIOKI E.E. CORPORATION +00C09C (base 16) HIOKI E.E. CORPORATION + 81 Koizumi, Ueda, Nagano + Chiyoda-ku + Tokyo 386-1192 + JAPAN + +00-C0-9D (hex) DISTRIBUTED SYSTEMS INT'L, INC +00C09D (base 16) DISTRIBUTED SYSTEMS INT'L, INC + 531 WEST ROOSEVLET RD, STE #2 + WHEATON IL 60187 + UNITED STATES + +00-C0-9E (hex) CACHE COMPUTERS, INC. +00C09E (base 16) CACHE COMPUTERS, INC. + 46600 LANDING PARKWAY + FREMONT CA 94538 + UNITED STATES + +00-C0-9F (hex) QUANTA COMPUTER, INC. +00C09F (base 16) QUANTA COMPUTER, INC. + 7F., 116, HOU-KANG ST., + SHIH-LIN DIST. TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-C0-A0 (hex) ADVANCE MICRO RESEARCH, INC. +00C0A0 (base 16) ADVANCE MICRO RESEARCH, INC. + 2045 CORPORATE COURT + SAN JOSE CA 95131 + UNITED STATES + +00-C0-A1 (hex) TOKYO DENSHI SEKEI CO. +00C0A1 (base 16) TOKYO DENSHI SEKEI CO. + 255-1 RENKOJI, TAMA-SHI + TOKYO + JAPAN 206 + JAPAN + +00-C0-A2 (hex) INTERMEDIUM A/S +00C0A2 (base 16) INTERMEDIUM A/S + ODINSVEJ 19 + DK-2600 GLOSTRUP + DENMARK + DENMARK + +00-C0-A3 (hex) DUAL ENTERPRISES CORPORATION +00C0A3 (base 16) DUAL ENTERPRISES CORPORATION + 9TH FLOOR 48 NAN-KANG ROAD + SEC.3, TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-C0-A4 (hex) UNIGRAF OY +00C0A4 (base 16) UNIGRAF OY + RUUKINTIE 18 + 02320 ESP00 + FINLAND + FINLAND + +00-C0-A5 (hex) DICKENS DATA SYSTEMS +00C0A5 (base 16) DICKENS DATA SYSTEMS + 1175 NORTHMEADOW PKWY-STE #150 + ROSWELL GA 30076 + UNITED STATES + +00-C0-A6 (hex) EXICOM AUSTRALIA PTY. LTD +00C0A6 (base 16) EXICOM AUSTRALIA PTY. LTD + 44-46 MANDARIN STREET + VILLAWOOD NSW 2163 + AUSTRALIA + AUSTRALIA + +00-C0-A7 (hex) SEEL LTD. +00C0A7 (base 16) SEEL LTD. + 3 YOUNG SQUARE + LIVINGSTON EH54 9BJ + SCOTLAND + UNITED KINGDOM + +00-C0-A8 (hex) GVC CORPORATION +00C0A8 (base 16) GVC CORPORATION + 1961 CONCOURSE DRIVE-STE + SAN JOSE CA 95131 + UNITED STATES + +00-C0-A9 (hex) BARRON MCCANN LTD. +00C0A9 (base 16) BARRON MCCANN LTD. + BEMAC HOUSE + FIFTH AVENUE, LETCHWORTH HERTS., SG6 2HF + UNITED KINGDOM + UNITED KINGDOM + +00-C0-AA (hex) SILICON VALLEY COMPUTER +00C0AA (base 16) SILICON VALLEY COMPUTER + 441 N. WHISMAN RD., BLDG.#13 + MT. VIEW CA 94043 + UNITED STATES + +00-C0-AB (hex) Telco Systems, Inc. +00C0AB (base 16) Telco Systems, Inc. + 63 Nathan Street + Norwood MA 02072 + UNITED STATES + +00-C0-AC (hex) GAMBIT COMPUTER COMMUNICATIONS +00C0AC (base 16) GAMBIT COMPUTER COMMUNICATIONS + SOLTAM INDUSTRIAL PARK + P.O. BOX 107 YOKNEAM 20692 + ISRAEL + ISRAEL + +00-C0-AD (hex) MARBEN COMMUNICATION SYSTEMS +00C0AD (base 16) MARBEN COMMUNICATION SYSTEMS + 1 RUE DU BOIS CHALAND + LISSES 91029 EVRY CEDEX + FRANCE + FRANCE + +00-C0-AE (hex) TOWERCOM CO. INC. DBA PC HOUSE +00C0AE (base 16) TOWERCOM CO. INC. DBA PC HOUSE + 841 E. ARTESIA BLVD. + CARSON CA 90746 + UNITED STATES + +00-C0-AF (hex) TEKLOGIX INC. +00C0AF (base 16) TEKLOGIX INC. + 2100 MEADOWVALE BOULEVARD + MISSISSAUGA, ONTARIO, + CANADA L5N 7J9 + CANADA + +00-C0-B0 (hex) GCC TECHNOLOGIES,INC. +00C0B0 (base 16) GCC TECHNOLOGIES,INC. + 580 WINTER STREET + WALTHAM MA 02154 + UNITED STATES + +00-C0-B1 (hex) GENIUS NET CO. +00C0B1 (base 16) GENIUS NET CO. + 4F, HANSOO B/D 210-5 + YANGJAE-DONG, SEOCHO-GU SEOUL + SOUTH KOREA + KOREA, REPUBLIC OF + +00-C0-B2 (hex) NORAND CORPORATION +00C0B2 (base 16) NORAND CORPORATION + 550 2ND STREET SE + CEDAR RAPIDS IA 52401 + UNITED STATES + +00-C0-B3 (hex) COMSTAT DATACOMM CORPORATION +00C0B3 (base 16) COMSTAT DATACOMM CORPORATION + 1720 SPECTRUM DRIVE + LAWRENCEVILLE GA 30243 + UNITED STATES + +00-C0-B4 (hex) MYSON TECHNOLOGY, INC. +00C0B4 (base 16) MYSON TECHNOLOGY, INC. + 2F, NO. 3, INDUSTRY E. RD.IV + SCIENCE-BASED INDUSTRIAL PARK HSINCHU, ( + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-C0-B5 (hex) CORPORATE NETWORK SYSTEMS,INC. +00C0B5 (base 16) CORPORATE NETWORK SYSTEMS,INC. + 5711 SIX FORKS ROAD--STE #306 + RALEIGH NC 27609 + UNITED STATES + +00-C0-B6 (hex) Adaptec, Inc. +00C0B6 (base 16) Adaptec, Inc. + 691 South Milpitas Boulevard + Milpitas CA 95035 + UNITED STATES + +00-C0-B7 (hex) AMERICAN POWER CONVERSION CORP +00C0B7 (base 16) AMERICAN POWER CONVERSION CORP + 267 BOSTON ROAD #2 + NORTH BILLERICA MA 01862 + UNITED STATES + +00-C0-B8 (hex) FRASER'S HILL LTD. +00C0B8 (base 16) FRASER'S HILL LTD. + 27502 W. GILL ROAD + P.O. BOX 189 + MORRISTOWN AZ 85342 + UNITED STATES + +00-C0-B9 (hex) FUNK SOFTWARE, INC. +00C0B9 (base 16) FUNK SOFTWARE, INC. + 222 THIRD STREET + CAMBRIDGE MA 02142 + UNITED STATES + +00-C0-BA (hex) NETVANTAGE +00C0BA (base 16) NETVANTAGE + 201 CONTINENTAL BLVD.-STE.#201 + EL SECUNDO CA 90245 + UNITED STATES + +00-C0-BB (hex) FORVAL CREATIVE, INC. +00C0BB (base 16) FORVAL CREATIVE, INC. + 3-27-12 HONGO + BUNKYO-KU TOKYO 113 + JAPAN + JAPAN + +00-C0-BC (hex) TELECOM AUSTRALIA/CSSC +00C0BC (base 16) TELECOM AUSTRALIA/CSSC + LOCKED BAG 8812 + SOUTHCOAST MAIL CENTRE 2521 N.S.W. + AUSTRALIA + AUSTRALIA + +00-C0-BD (hex) INEX TECHNOLOGIES, INC. +00C0BD (base 16) INEX TECHNOLOGIES, INC. + 3350 SCOTT BLVD. + BLDG.#29 + SANTA CLARA CA 95054 + UNITED STATES + +00-C0-BE (hex) ALCATEL - SEL +00C0BE (base 16) ALCATEL - SEL + LORENZ STR. + 7000 STUTTGART 40 + GERMANY + GERMANY + +00-C0-BF (hex) TECHNOLOGY CONCEPTS, LTD. +00C0BF (base 16) TECHNOLOGY CONCEPTS, LTD. + GRANGE ESTATE + CWMBRAN, GWENT, NP44 3XR + UNITED KINGDOM + UNITED KINGDOM + +00-C0-C0 (hex) SHORE MICROSYSTEMS, INC. +00C0C0 (base 16) SHORE MICROSYSTEMS, INC. + 23 POCAHONTAS AVENUE + OCEANPORT NJ 07757 + UNITED STATES + +00-C0-C1 (hex) QUAD/GRAPHICS, INC. +00C0C1 (base 16) QUAD/GRAPHICS, INC. + N63 W23075 HWY 74 + SUSSEX WI 53089 + UNITED STATES + +00-C0-C2 (hex) INFINITE NETWORKS LTD. +00C0C2 (base 16) INFINITE NETWORKS LTD. + 19 BROOKSIDE ROAD, OXHEY + WATFORD, HERTS WD1 4BW ENGLAND + UNITED KINGDOM + UNITED KINGDOM + +00-C0-C3 (hex) ACUSON COMPUTED SONOGRAPHY +00C0C3 (base 16) ACUSON COMPUTED SONOGRAPHY + 1220 CHARLESTON ROAD + P.O. BOX 7393 + MOUNTAIN VIEW CA 94039-7393 + UNITED STATES + +00-C0-C4 (hex) COMPUTER OPERATIONAL +00C0C4 (base 16) COMPUTER OPERATIONAL + REQUIREMENT ANALYSTS LTD + CORAL HOUSE, 274A HIGH STREET ALDERSHOT, + GU12 4LZ GU12 4LZ ENGLAND + UNITED KINGDOM + +00-C0-C5 (hex) SID INFORMATICA +00C0C5 (base 16) SID INFORMATICA + RUA DR. GERALDO CAMPOS MOREIRA + 240 - 5 ANDAR CEP 04571-020 SAO PAULO - + BRAZIL + BRAZIL + +00-C0-C6 (hex) PERSONAL MEDIA CORP. +00C0C6 (base 16) PERSONAL MEDIA CORP. + 1-7-7 MY BLDG. HIRATSUKA + SHINAGAWA, TOKYO 142 + JAPAN + JAPAN + +00-C0-C7 (hex) SPARKTRUM MICROSYSTEMS, INC. +00C0C7 (base 16) SPARKTRUM MICROSYSTEMS, INC. + 2860 ZANKER ROAD, STE.#210 + SAN JOSE CA 95134 + UNITED STATES + +00-C0-C8 (hex) MICRO BYTE PTY. LTD. +00C0C8 (base 16) MICRO BYTE PTY. LTD. + 197 SHERBOURNE RD. + MONTMORENCY MELBOURNE VIC + AUSTRALIA 3094 + AUSTRALIA + +00-C0-C9 (hex) ELSAG BAILEY PROCESS +00C0C9 (base 16) ELSAG BAILEY PROCESS + AUTOMATION + 29801 EUCLID AVENUE MS-3S1 + WICKLIFFE OH 44092 + UNITED STATES + +00-C0-CA (hex) ALFA, INC. +00C0CA (base 16) ALFA, INC. + 11-1, INDUSTRY EAST ROAD IV + SCIENCE BASED INDUSTRIAL PARK HSINCHU + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-C0-CB (hex) CONTROL TECHNOLOGY CORPORATION +00C0CB (base 16) CONTROL TECHNOLOGY CORPORATION + 25 SOUTH STREET + HOPKINTON MA 01748 + UNITED STATES + +00-C0-CC (hex) TELESCIENCES CO SYSTEMS, INC. +00C0CC (base 16) TELESCIENCES CO SYSTEMS, INC. + 351 NEW ALBANY RD. + MOORESTOWN NJ 08057-1177 + UNITED STATES + +00-C0-CD (hex) COMELTA, S.A. +00C0CD (base 16) COMELTA, S.A. + AVDA. PARC TECNOLOGIC, 4 + 08290 CERDANYOLA DEL VALLES BARCELONA + SPAIN + SPAIN + +00-C0-CE (hex) CEI SYSTEMS & ENGINEERING PTE +00C0CE (base 16) CEI SYSTEMS & ENGINEERING PTE + BLK 73 #02-18 AYER RAJAH CRESC + AYER RAJAH INDUSTRIAL ESTATE + SINGAPORE 0513 + SINGAPORE + +00-C0-CF (hex) IMATRAN VOIMA OY +00C0CF (base 16) IMATRAN VOIMA OY + IVO + P.O. BOX 340 02151 ESPOO + FINLAND + FINLAND + +00-C0-D0 (hex) RATOC SYSTEM INC. +00C0D0 (base 16) RATOC SYSTEM INC. + ASAHI NAMBA BLDG. + 1-6-14 SHIKITSU HIGASHI NANIWAKU OSAKA C + 556 JAPAN + JAPAN + +00-C0-D1 (hex) COMTREE TECHNOLOGY CORPORATION +00C0D1 (base 16) COMTREE TECHNOLOGY CORPORATION + 5F-7, NO. 1, FU-HSING NORTH RD + TAIPEI + TAIWAN R.O.C. + CHINA + +00-C0-D2 (hex) SYNTELLECT, INC. +00C0D2 (base 16) SYNTELLECT, INC. + 15810 N. 28TH AVENUE + PHOENIX AZ 85023 + UNITED STATES + +00-C0-D3 (hex) OLYMPUS IMAGE SYSTEMS, INC. +00C0D3 (base 16) OLYMPUS IMAGE SYSTEMS, INC. + 15271 BARRANCA PARKWAY + IRVINE CA 92718-2201 + UNITED STATES + +00-C0-D4 (hex) AXON NETWORKS, INC. +00C0D4 (base 16) AXON NETWORKS, INC. + 104 SPRUCE STREET + WATERTOWN MA 02172 + UNITED STATES + +00-C0-D5 (hex) QUANCOM ELECTRONIC GMBH +00C0D5 (base 16) QUANCOM ELECTRONIC GMBH + HEINRICH-ESSER-STRASSE 27 + W-5040 BRUHL + GERMANY + GERMANY + +00-C0-D6 (hex) J1 SYSTEMS, INC. +00C0D6 (base 16) J1 SYSTEMS, INC. + 3 DUNWOODY PARK-STE.#103 + ATLANTA GA 30338 + UNITED STATES + +00-C0-D7 (hex) TAIWAN TRADING CENTER DBA +00C0D7 (base 16) TAIWAN TRADING CENTER DBA + TTC COMPUTER PRODUCTS + 3244 N. SKYWAY CIRCLE #102 + IRVING TX 75038 + UNITED STATES + +00-C0-D8 (hex) UNIVERSAL DATA SYSTEMS +00C0D8 (base 16) UNIVERSAL DATA SYSTEMS + 5000 BRADFORD DRIVE + HUNTSVILLE AL 35805-1993 + UNITED STATES + +00-C0-D9 (hex) QUINTE NETWORK CONFIDENTIALITY +00C0D9 (base 16) QUINTE NETWORK CONFIDENTIALITY + EQUIPMENT INC. + 207 - 121 DIMDAS STREET EAST BELLEVILLE, + CANADA K8N 1C3 + CANADA + +00-C0-DA (hex) NICE SYSTEMS LTD. +00C0DA (base 16) NICE SYSTEMS LTD. + 3 TEVUOT HA'ARETZ ST + TEL AVIV 69546 + ISRAEL + ISRAEL + +00-C0-DB (hex) IPC CORPORATION (PTE) LTD. +00C0DB (base 16) IPC CORPORATION (PTE) LTD. + 122 EUNOS AVE., 7 #05-10 + SINGAPORE 1440 + SINGAPORE + +00-C0-DC (hex) EOS TECHNOLOGIES, INC. +00C0DC (base 16) EOS TECHNOLOGIES, INC. + 3945 FREEDOM CIRCLE, STE.#770 + SANTA CLARA CA 95054 + UNITED STATES + +00-C0-DD (hex) QLogic Corporation +00C0DD (base 16) QLogic Corporation + 6321 Bury Dr. + Eden Prarie MN 55346 + UNITED STATES + +00-C0-DE (hex) ZCOMM, INC. +00C0DE (base 16) ZCOMM, INC. + 1050 C EAST DUANE AVENUE + SUNNYVALE CA 94086 + UNITED STATES + +00-C0-DF (hex) KYE Systems Corp. +00C0DF (base 16) KYE Systems Corp. + No. 492 Sec 5, Chung Hsin Road + Taipei Hsien 241 + TAIWAN, REPUBLIC OF CHINA + +00-C0-E0 (hex) DSC COMMUNICATION CORP. +00C0E0 (base 16) DSC COMMUNICATION CORP. + 1000 COIT ROAD, MS#ADVP 3 + PLANO TX 75075 + UNITED STATES + +00-C0-E1 (hex) SONIC SOLUTIONS +00C0E1 (base 16) SONIC SOLUTIONS + 1891 E. FRANCISCO BLVD. + SAN RAFAEL CA 94901 + UNITED STATES + +00-C0-E2 (hex) CALCOMP, INC. +00C0E2 (base 16) CALCOMP, INC. + 2411 W. LAPALMA AVENUE + P.O. BOX 3250, MS22 + ANAHEIM CA 92803-3250 + UNITED STATES + +00-C0-E3 (hex) OSITECH COMMUNICATIONS, INC. +00C0E3 (base 16) OSITECH COMMUNICATIONS, INC. + 679 SOUTHGATE DRIVE + GUELPH, ONTARIO + CANADA N1G 4S2 + CANADA + +00-C0-E4 (hex) SIEMENS BUILDING +00C0E4 (base 16) SIEMENS BUILDING + TECHNOLOGIES, INC. + 1000 DEERFIELD PARKWAY + BUFFALO GROVE IL 60089 + UNITED STATES + +00-C0-E5 (hex) GESPAC, S.A. +00C0E5 (base 16) GESPAC, S.A. + CHEMIN DES AULX 18 + CH-1228 GENEVA + SWITZERLAND + SWITZERLAND + +00-C0-E6 (hex) Verilink Corporation +00C0E6 (base 16) Verilink Corporation + 127 Jetplex Circle + Madison AL 35758 + UNITED STATES + +00-C0-E7 (hex) FIBERDATA AB +00C0E7 (base 16) FIBERDATA AB + P.O. BOX 20095 + S-16102 BROMMA + SWEDEN + SWEDEN + +00-C0-E8 (hex) PLEXCOM, INC. +00C0E8 (base 16) PLEXCOM, INC. + 65 MORELAND ROADENUYE + SIMI VALLEY CA 93065 + UNITED STATES + +00-C0-E9 (hex) OAK SOLUTIONS, LTD. +00C0E9 (base 16) OAK SOLUTIONS, LTD. + BROADWAY HOUSE + 149-151 ST NEOTS RD, HARDWICK CAMBRIDGE + ENGLAND + UNITED KINGDOM + +00-C0-EA (hex) ARRAY TECHNOLOGY LTD. +00C0EA (base 16) ARRAY TECHNOLOGY LTD. + 145 FRIMLEY ROAD + CAMBERLEY, SURREY + ENGLAND GU15 2PS + UNITED KINGDOM + +00-C0-EB (hex) SEH COMPUTERTECHNIK GMBH +00C0EB (base 16) SEH COMPUTERTECHNIK GMBH + Suedring 11 + P.O. BOX 140829 D-33628 Bielefeld + GERMANY + GERMANY + +00-C0-EC (hex) DAUPHIN TECHNOLOGY +00C0EC (base 16) DAUPHIN TECHNOLOGY + 450 EISENHOWER LANE NORTH + LOMBARD IL 60148 + UNITED STATES + +00-C0-ED (hex) US ARMY ELECTRONIC +00C0ED (base 16) US ARMY ELECTRONIC + PROVING GROUND + 1838 PASEO SAN LUIS + SIERRA VISTA AZ 85635 + UNITED STATES + +00-C0-EE (hex) KYOCERA CORPORATION +00C0EE (base 16) KYOCERA CORPORATION + 2-14-9 TAMAGAWADAI + SETAGAYA-KU, TOKYO + 158 JAPAN + JAPAN + +00-C0-EF (hex) ABIT CORPORATION +00C0EF (base 16) ABIT CORPORATION + 29-11 HIRAOKA-CHO + HACHIOUJI-SHI TOKYO + 192 JAPAN + JAPAN + +00-C0-F0 (hex) KINGSTON TECHNOLOGY CORP. +00C0F0 (base 16) KINGSTON TECHNOLOGY CORP. + 17600 NEWHOPE STREET + FOUNTAIN VALLEY CA 92708 + UNITED STATES + +00-C0-F1 (hex) SHINKO ELECTRIC CO., LTD. +00C0F1 (base 16) SHINKO ELECTRIC CO., LTD. + COMPUTER SYSTEM DIVISION + 150 MOTOYASHIKI, SANYA-CHO TOYOHASHI-SHI + JAPAN 441-31 + JAPAN + +00-C0-F2 (hex) TRANSITION NETWORKS +00C0F2 (base 16) TRANSITION NETWORKS + 6475 CITY WEST PARKWAY + MINNEAPOLIS MN 55344 + UNITED STATES + +00-C0-F3 (hex) NETWORK COMMUNICATIONS CORP. +00C0F3 (base 16) NETWORK COMMUNICATIONS CORP. + 5501 GREEN VALLEY DRIVE + BLOOMINGTON MN 55437-1085 + UNITED STATES + +00-C0-F4 (hex) INTERLINK SYSTEM CO., LTD. +00C0F4 (base 16) INTERLINK SYSTEM CO., LTD. + INTERLINK B/D, 476-20 + SEOGYO-DONG, MAPO-KU SEOUL + KOREA + KOREA, REPUBLIC OF + +00-C0-F5 (hex) METACOMP, INC. +00C0F5 (base 16) METACOMP, INC. + 10989 VIA FRONTERA + SAN DIEGO CA 92127 + UNITED STATES + +00-C0-F6 (hex) CELAN TECHNOLOGY INC. +00C0F6 (base 16) CELAN TECHNOLOGY INC. + NO. 101, MIN-HSIANG ST. + HSIN-CHU CITY + TAIWAN TAIWAN R.O.C. + CHINA + +00-C0-F7 (hex) ENGAGE COMMUNICATION, INC. +00C0F7 (base 16) ENGAGE COMMUNICATION, INC. + 9053 SOQUEL DRIVE + APTOS CA 95003-4034 + UNITED STATES + +00-C0-F8 (hex) ABOUT COMPUTING INC. +00C0F8 (base 16) ABOUT COMPUTING INC. + P.O. BOX 172 + BELMONT MA 02178 + UNITED STATES + +00-C0-F9 (hex) Motorola Embedded Computing Group +00C0F9 (base 16) Motorola Embedded Computing Group + 120 Turnpike Road + Southborough MA 01772 + UNITED STATES + +00-C0-FA (hex) CANARY COMMUNICATIONS, INC. +00C0FA (base 16) CANARY COMMUNICATIONS, INC. + 1851 ZANKER ROAD + SAN JOSE CA 95112-4213 + UNITED STATES + +00-C0-FB (hex) ADVANCED TECHNOLOGY LABS +00C0FB (base 16) ADVANCED TECHNOLOGY LABS + 22100 BOTHELL HIGHWAY S.E. + P.O. BOX 3003 + BOTHELL WA 98041-3003 + UNITED STATES + +00-C0-FC (hex) ELASTIC REALITY, INC. +00C0FC (base 16) ELASTIC REALITY, INC. + 925 STEWART STREET + MADISON WI 53713 + UNITED STATES + +00-C0-FD (hex) PROSUM +00C0FD (base 16) PROSUM + 12 RUE SADI-CARNOT + 94370 NOISEAU + FRANCE + FRANCE + +00-C0-FE (hex) APTEC COMPUTER SYSTEMS, INC. +00C0FE (base 16) APTEC COMPUTER SYSTEMS, INC. + P.O. BOX 6750 + PORTLAND OR 97228-6750 + UNITED STATES + +00-C0-FF (hex) DOT HILL SYSTEMS CORPORATION +00C0FF (base 16) DOT HILL SYSTEMS CORPORATION + 6305 El Camino Real + Carlsbad CA 92009 + UNITED STATES + +00-CB-BD (hex) Cambridge Broadband Networks Ltd. +00CBBD (base 16) Cambridge Broadband Networks Ltd. + Selwyn House Cambridge Business Park + Cambridge Business Park + Cambridge CB4 0WZ + UNITED KINGDOM + +00-CF-1C (hex) COMMUNICATION MACHINERY CORP. +00CF1C (base 16) COMMUNICATION MACHINERY CORP. + 1226 ANACAPA + SANTA BARBARA CA 93101 + UNITED STATES + +00-D0-00 (hex) FERRAN SCIENTIFIC, INC. +00D000 (base 16) FERRAN SCIENTIFIC, INC. + 11558 SORRENTO VALLEY ROAD + SUITE #1 + SAN DIEGO CA 92121 + UNITED STATES + +00-D0-01 (hex) VST TECHNOLOGIES, INC. +00D001 (base 16) VST TECHNOLOGIES, INC. + 125 NAGOG PARK + ACTON MA 01720 + UNITED STATES + +00-D0-02 (hex) DITECH CORPORATION +00D002 (base 16) DITECH CORPORATION + 825 EAST MIDDLEFIELD RD + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-D0-03 (hex) COMDA ENTERPRISES CORP. +00D003 (base 16) COMDA ENTERPRISES CORP. + 2F, NO. 501-18, CHUNGCHEN ROAD + HSINTIEN, TAIPEI + TAIWAN TAIWAN ROC + TAIWAN, REPUBLIC OF CHINA + +00-D0-04 (hex) PENTACOM LTD. +00D004 (base 16) PENTACOM LTD. + 8 HASADNAOT STREET + P.O. BOX 12109 HERZLIA 46733 + ISRAEL + ISRAEL + +00-D0-05 (hex) ZHS ZEITMANAGEMENTSYSTEME +00D005 (base 16) ZHS ZEITMANAGEMENTSYSTEME + HARD-UND SOFTWARE GMBH + KREUZBERGER RING 56 65205 WIESBADEN + GERMANY + GERMANY + +00-D0-06 (hex) CISCO SYSTEMS, INC. +00D006 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-D0-07 (hex) MIC ASSOCIATES, INC. +00D007 (base 16) MIC ASSOCIATES, INC. + 1510-1, KAIDOKI + TAMA, TOKYO + JAPAN JAPAN 206-0012 + JAPAN + +00-D0-08 (hex) MACTELL CORPORATION +00D008 (base 16) MACTELL CORPORATION + 7000 CAMERON ROAD + AUSTIN TX 78752 + UNITED STATES + +00-D0-09 (hex) HSING TECH. ENTERPRISE CO. LTD +00D009 (base 16) HSING TECH. ENTERPRISE CO. LTD + NO.2, LANE 128, SEC. 2 + CHUNG SHAN N. RD. TAIPEI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-D0-0A (hex) LANACCESS TELECOM S.A. +00D00A (base 16) LANACCESS TELECOM S.A. + GRAN VIA 8-10 4 1 + 08902- L'HOSPITALET DE LLOBREGAT + SPAIN + SPAIN + +00-D0-0B (hex) RHK TECHNOLOGY, INC. +00D00B (base 16) RHK TECHNOLOGY, INC. + 1050 EAST MAPLE ROAD + TROY MI 48083 + UNITED STATES + +00-D0-0C (hex) SNIJDER MICRO SYSTEMS +00D00C (base 16) SNIJDER MICRO SYSTEMS + P.O. BOX 300 + NL-5750 AH DEURNE + THE NETHERLANDS + NETHERLANDS + +00-D0-0D (hex) MICROMERITICS INSTRUMENT +00D00D (base 16) MICROMERITICS INSTRUMENT + CORPORATION + ONE MICROMEERITICS DRIVE + NORCROSS GA 30093-1877 + UNITED STATES + +00-D0-0E (hex) PLURIS, INC. +00D00E (base 16) PLURIS, INC. + 10455 BANDLEY DRIVE + CUPERTINO CA 95014 + UNITED STATES + +00-D0-0F (hex) SPEECH DESIGN GMBH +00D00F (base 16) SPEECH DESIGN GMBH + INDUSTRIESTR. 1 + D-82110 GERMERING + GERMANY + GERMANY + +00-D0-10 (hex) CONVERGENT NETWORKS, INC. +00D010 (base 16) CONVERGENT NETWORKS, INC. + 2 HIGHWOOD DRIVE + TEWKSBURY MA 01876 + UNITED STATES + +00-D0-11 (hex) PRISM VIDEO, INC. +00D011 (base 16) PRISM VIDEO, INC. + 15851 DALLAS PARKWAY-STE.#1060 + ADDISON TX 75001 + UNITED STATES + +00-D0-12 (hex) GATEWORKS CORP. +00D012 (base 16) GATEWORKS CORP. + 7631 MORRO ROAD + ATASCADERO CA 93422 + UNITED STATES + +00-D0-13 (hex) PRIMEX AEROSPACE COMPANY +00D013 (base 16) PRIMEX AEROSPACE COMPANY + P.O. BOX 97009 + 11441 WILLOWS ROAD NE + REDMOND WA 98073-9709 + UNITED STATES + +00-D0-14 (hex) ROOT, INC. +00D014 (base 16) ROOT, INC. + 8F TOC2 Bldg, 7-21-11 Nishi-Gotanda + Shinagawa-ku + Tokyo 141-0031 + JAPAN + +00-D0-15 (hex) UNIVEX MICROTECHNOLOGY CORP. +00D015 (base 16) UNIVEX MICROTECHNOLOGY CORP. + 2, TZE-CHIANG 3RD ROAD + CHUNG-LI INDUSTRIAL PARK, CHUNG-LI + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-D0-16 (hex) SCM MICROSYSTEMS, INC. +00D016 (base 16) SCM MICROSYSTEMS, INC. + 160 KNOWLES DRIVE + LOS GATOS CA 95032 + UNITED STATES + +00-D0-17 (hex) SYNTECH INFORMATION CO., LTD. +00D017 (base 16) SYNTECH INFORMATION CO., LTD. + 8F, 210, TA-TUNG RD., SEC. 3 + HSI-CHIH, TAIPEI HSIEN + TAIWAN TAIWAN ROC + TAIWAN, REPUBLIC OF CHINA + +00-D0-18 (hex) QWES. COM, INC. +00D018 (base 16) QWES. COM, INC. + 14742 NEWPORT AVE. - STE. #203 + TUSTIN CA 92780 + UNITED STATES + +00-D0-19 (hex) DAINIPPON SCREEN CORPORATE +00D019 (base 16) DAINIPPON SCREEN CORPORATE + REPRESENTATIVES OF AMERICA,INC + 17942 COWAN AVENUE + IRVINE CA 92614 + UNITED STATES + +00-D0-1A (hex) URMET TLC S.P.A. +00D01A (base 16) URMET TLC S.P.A. + VIA DI CASTEL ROMANO 167 + 00128 - ROMA + ITALY + +00-D0-1B (hex) MIMAKI ENGINEERING CO., LTD. +00D01B (base 16) MIMAKI ENGINEERING CO., LTD. + 5-9-41 KITA SHINAGAWA + SHINAGAWA-KU TOKYO 141-0001 + JAPAN + JAPAN + +00-D0-1C (hex) SBS TECHNOLOGIES, +00D01C (base 16) SBS TECHNOLOGIES, + CONNECTIVITY PRODUCTS + 1284 CORPORATE CENTER DRIVE + ST. PAUL MN 55121-1245 + UNITED STATES + +00-D0-1D (hex) FURUNO ELECTRIC CO., LTD. +00D01D (base 16) FURUNO ELECTRIC CO., LTD. + NO. 9-52, ASHIHARA-CHO + NISHINOMIYA-CITY + 662-8580 + JAPAN + +00-D0-1E (hex) PINGTEL CORP. +00D01E (base 16) PINGTEL CORP. + 773 WINTER STREET + N. ANDOVER MA 01845 + UNITED STATES + +00-D0-1F (hex) CTAM PTY. LTD. +00D01F (base 16) CTAM PTY. LTD. + 399 HIGH STREET + ASHBURTON 3147 VICTORIA + AUSTRALIA + AUSTRALIA + +00-D0-20 (hex) AIM SYSTEM, INC. +00D020 (base 16) AIM SYSTEM, INC. + 4TH FLOOR CHUNGWOO B/D 219-1 + POYEE-DONG, GANGNAM-KU SEOL, 135-200 + KOREA + KOREA, REPUBLIC OF + +00-D0-21 (hex) REGENT ELECTRONICS CORP. +00D021 (base 16) REGENT ELECTRONICS CORP. + 200 CENTENNIAL AVE.-STE. #201 + PISCATAWAY NJ 08854 + UNITED STATES + +00-D0-22 (hex) INCREDIBLE TECHNOLOGIES, INC. +00D022 (base 16) INCREDIBLE TECHNOLOGIES, INC. + 1600 HICKS ROAD + ROLLING MEADOWS IL 60008 + UNITED STATES + +00-D0-23 (hex) INFORTREND TECHNOLOGY, INC. +00D023 (base 16) INFORTREND TECHNOLOGY, INC. + 10F, NO. 33 SAN-MIN RD. + SEC. 2 PANCHIAO CITY TAIPEI HSIEN + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-D0-24 (hex) Cognex Corporation +00D024 (base 16) Cognex Corporation + Modular Vision Systems Division + In-Sight Products Group 15865 SW 74th Av + Portland OR 97224 + UNITED STATES + +00-D0-25 (hex) XROSSTECH, INC. +00D025 (base 16) XROSSTECH, INC. + HABDONG B/D 5F 210-2 + YANGJAE-DONG, SEOCHO-KU SEOUL + KOREA + KOREA, REPUBLIC OF + +00-D0-26 (hex) HIRSCHMANN AUSTRIA GMBH +00D026 (base 16) HIRSCHMANN AUSTRIA GMBH + OBERER PASPELSWEG 6 - 8 + 6830 RANKWEIL-BREDERIS + AUSTRIA + AUSTRIA + +00-D0-27 (hex) APPLIED AUTOMATION, INC. +00D027 (base 16) APPLIED AUTOMATION, INC. + P.O. BOX 9999 + BARTLESVILLE OK 74005-9999 + UNITED STATES + +00-D0-28 (hex) OMNEON VIDEO NETWORKS +00D028 (base 16) OMNEON VIDEO NETWORKS + 965 Stewart Drive + Sunnyvale CA 94086-3913 + UNITED STATES + +00-D0-29 (hex) WAKEFERN FOOD CORPORATION +00D029 (base 16) WAKEFERN FOOD CORPORATION + 230 RARITAN CENTER PARKWAY + EDISON NJ 08837 + UNITED STATES + +00-D0-2A (hex) Voxent Systems Ltd. +00D02A (base 16) Voxent Systems Ltd. + Unit 2, Rowan House + Sheldon Business Park + Chippenham Wiltshire SN14 0SQ + UNITED KINGDOM + +00-D0-2B (hex) JETCELL, INC. +00D02B (base 16) JETCELL, INC. + 173 CONSTITUTION DRIVE + MENLO PARK CA 94025-1106 + UNITED STATES + +00-D0-2C (hex) CAMPBELL SCIENTIFIC, INC. +00D02C (base 16) CAMPBELL SCIENTIFIC, INC. + 815 W. 1800 N. + LOGAN UT 84321-1784 + UNITED STATES + +00-D0-2D (hex) ADEMCO +00D02D (base 16) ADEMCO + 165 EILEEN WAY + SYOSSET NY 11791 + UNITED STATES + +00-D0-2E (hex) COMMUNICATION AUTOMATION CORP. +00D02E (base 16) COMMUNICATION AUTOMATION CORP. + 1180 MCDERMOTT DRIVE + WEST CHESTER PA 19380 + UNITED STATES + +00-D0-2F (hex) VLSI TECHNOLOGY INC. +00D02F (base 16) VLSI TECHNOLOGY INC. + 8375 S. RIVER PARKWAY + TEMPE AZ 85284 + UNITED STATES + +00-D0-30 (hex) SAFETRAN SYSTEMS CORP. +00D030 (base 16) SAFETRAN SYSTEMS CORP. + 10655 7TH STREET + RANCHO CUCAMONGA CA 91730 + UNITED STATES + +00-D0-31 (hex) INDUSTRIAL LOGIC CORPORATION +00D031 (base 16) INDUSTRIAL LOGIC CORPORATION + 15 PIEDMONT CENTER-STE #700 + ATLANTA GA 30305 + UNITED STATES + +00-D0-32 (hex) YANO ELECTRIC CO., LTD. +00D032 (base 16) YANO ELECTRIC CO., LTD. + 7-3-1 IBUKIDAIHIGASHIMACHI + NISHI-KU, KOBE, 651-2242 + JAPAN + JAPAN + +00-D0-33 (hex) DALIAN DAXIAN NETWORK +00D033 (base 16) DALIAN DAXIAN NETWORK + SYSTEM CO., LTD. + 98 SHENGLI RD XIGANG DISTRICT DALIAN, P. + CHINA + CHINA + +00-D0-34 (hex) ORMEC SYSTEMS CORP. +00D034 (base 16) ORMEC SYSTEMS CORP. + 19 LINDEN PARK + ROCHESTER NY 14625 + UNITED STATES + +00-D0-35 (hex) BEHAVIOR TECH. COMPUTER CORP. +00D035 (base 16) BEHAVIOR TECH. COMPUTER CORP. + 20F-B, No.98, Sec. 1, + Sintai 5th Rd. + Sijhih City Taipei County 22102 + TAIWAN, REPUBLIC OF CHINA + +00-D0-36 (hex) TECHNOLOGY ATLANTA CORP. +00D036 (base 16) TECHNOLOGY ATLANTA CORP. + 141 W. WIEUCA RD. N.E. + SUITE #300 + ATLANTA GA 30342 + UNITED STATES + +00-D0-37 (hex) PHILIPS-DVS-LO BDR +00D037 (base 16) PHILIPS-DVS-LO BDR + 51, RUE CARNOT + 92156 SURESNES + FRANCE + FRANCE + +00-D0-38 (hex) FIVEMERE, LTD. +00D038 (base 16) FIVEMERE, LTD. + UNIT 1-HERON INDUSTRIAL ESTATE + BASINGSTOKE ROAD SPENCERS WOOD, READING + RG7 1PJ ENGLAND + UNITED KINGDOM + +00-D0-39 (hex) UTILICOM, INC. +00D039 (base 16) UTILICOM, INC. + 323 LOVE PLACE + SANTA BARBARA CA 93112-3289 + UNITED STATES + +00-D0-3A (hex) ZONEWORX, INC. +00D03A (base 16) ZONEWORX, INC. + 40925 COUNTY CENTER DRIVE + SUITE #200 + TEMECULA CA 92592 + UNITED STATES + +00-D0-3B (hex) VISION PRODUCTS PTY. LTD. +00D03B (base 16) VISION PRODUCTS PTY. LTD. + SECOND AVENUE, TECHNOLOGY PARK + MAWSON LAKES + AUSTRALIA 5095 + AUSTRALIA + +00-D0-3C (hex) Vieo, Inc. +00D03C (base 16) Vieo, Inc. + 12416 Hymeadow Drive, + Suite 200 + Austin TX 78750 + UNITED STATES + +00-D0-3D (hex) GALILEO TECHNOLOGY, LTD. +00D03D (base 16) GALILEO TECHNOLOGY, LTD. + MOSHAV MANOF + D.N. MISGAV 20184 + ISRAEL + +00-D0-3E (hex) ROCKETCHIPS, INC. +00D03E (base 16) ROCKETCHIPS, INC. + 7901 XERXES AVE. S. + MINNEAPOLIS MN 55431 + UNITED STATES + +00-D0-3F (hex) AMERICAN COMMUNICATION +00D03F (base 16) AMERICAN COMMUNICATION + TECHNOLIGIES INTERNATIONAL INC + 320 PROFESSIONAL CENTER DR. SUITE #100 + ROHNERT PARK CA 94928 + UNITED STATES + +00-D0-40 (hex) SYSMATE CO., LTD. +00D040 (base 16) SYSMATE CO., LTD. + 1091 WOLPYONG-DONG + SEO-GU, DEAJCON 302-280 + SOUTH KOREA + KOREA, REPUBLIC OF + +00-D0-41 (hex) AMIGO TECHNOLOGY CO., LTD. +00D041 (base 16) AMIGO TECHNOLOGY CO., LTD. + 4F-1B, NO.12, LANE 609, SEC.5, + CHUNG HSIN ROAD, SAN CHUNG TAIPEI HSIEN + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-D0-42 (hex) MAHLO GMBH & CO. UG +00D042 (base 16) MAHLO GMBH & CO. UG + DONAUSTRASSE 12 + D-93342 SAAL/DONAU + GERMANY + GERMANY + +00-D0-43 (hex) ZONAL RETAIL DATA SYSTEMS +00D043 (base 16) ZONAL RETAIL DATA SYSTEMS + 24 FORTH STREET + EDINBURGH + SCOTLAND + UNITED KINGDOM + +00-D0-44 (hex) ALIDIAN NETWORKS, INC. +00D044 (base 16) ALIDIAN NETWORKS, INC. + 1330 W. MIDDLEFIELD ROAD + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-D0-45 (hex) KVASER AB +00D045 (base 16) KVASER AB + BOX 4076 + 511 04 KINNAHULT + SWEDEN + SWEDEN + +00-D0-46 (hex) DOLBY LABORATORIES, INC. +00D046 (base 16) DOLBY LABORATORIES, INC. + 100 Potrero Avenue + San Francisco CA 94103-4938 + UNITED STATES + +00-D0-47 (hex) XN TECHNOLOGIES +00D047 (base 16) XN TECHNOLOGIES + P.O. BOX 350 + CHENEY WA 99004 + UNITED STATES + +00-D0-48 (hex) ECTON, INC. +00D048 (base 16) ECTON, INC. + 5168 CAMPUS DRIVE + PLYMOUTH MEETING PA 19462 + UNITED STATES + +00-D0-49 (hex) IMPRESSTEK CO., LTD. +00D049 (base 16) IMPRESSTEK CO., LTD. + 6F, SPECIALTY CONSTRUCTION CTR + 1290, SUNSAN-DONG,SO-GU + 302-120 KOREA (REP.) + KOREA, REPUBLIC OF + +00-D0-4A (hex) PRESENCE TECHNOLOGY GMBH +00D04A (base 16) PRESENCE TECHNOLOGY GMBH + + CO. KG + SENDENHORSTER STR. 32 D-48317 DRENSTEINF + GERMANY + GERMANY + +00-D0-4B (hex) LA CIE GROUP S.A. +00D04B (base 16) LA CIE GROUP S.A. + 17 RUE AMPERE + 91349 MASSY CEDEX + FRANCE + FRANCE + +00-D0-4C (hex) EUROTEL TELECOM LTD. +00D04C (base 16) EUROTEL TELECOM LTD. + CANISTER HOUSE + JEWRY STREET WINCHESTER B023 8SA + UNITED KINGDOM + UNITED KINGDOM + +00-D0-4D (hex) DIV OF RESEARCH & STATISTICS +00D04D (base 16) DIV OF RESEARCH & STATISTICS + BOG OF THE FEDERAL RESERVE SYS + MAIL STOP 96 20TH & + WASHINGTON DC 20551 + UNITED STATES + +00-D0-4E (hex) LOGIBAG +00D04E (base 16) LOGIBAG + 2, RUE DE LA MANDINIERE + 72300 SABLE/SARTHE + FRANCE + FRANCE + +00-D0-4F (hex) BITRONICS, INC. +00D04F (base 16) BITRONICS, INC. + P.O. BOX 22290 + LEHIGH VALLEY PA 18002-2290 + UNITED STATES + +00-D0-50 (hex) ISKRATEL +00D050 (base 16) ISKRATEL + LJUBLJANSKA C. 24A + 4000 KRANJ + SLOVENIA + SLOVENIA + +00-D0-51 (hex) O2 MICRO, INC. +00D051 (base 16) O2 MICRO, INC. + 2901 TASMAN DRIVE, STE.#205 + SANTA CLARA CA 95054 + UNITED STATES + +00-D0-52 (hex) ASCEND COMMUNICATIONS, INC. +00D052 (base 16) ASCEND COMMUNICATIONS, INC. + ONE ASCEND PLAZA + 1701 HARBOR BAY PARKWAY + ALAMEDA CA 94502-3002 + UNITED STATES + +00-D0-53 (hex) CONNECTED SYSTEMS +00D053 (base 16) CONNECTED SYSTEMS + 126 W. FIGUEROA STREET + SANTA BARBARA CA 93101 + UNITED STATES + +00-D0-54 (hex) SAS INSTITUTE INC. +00D054 (base 16) SAS INSTITUTE INC. + SAS CAMPUS DRIVE, R4 + CARY NC 27511 + UNITED STATES + +00-D0-55 (hex) KATHREIN-WERKE KG +00D055 (base 16) KATHREIN-WERKE KG + ANTON-KATHREIN-STRASS 1-3 + D-83004 ROSENHEIM + GERMANY + GERMANY + +00-D0-56 (hex) SOMAT CORPORATION +00D056 (base 16) SOMAT CORPORATION + 702 KILLARNEY STREET + URBANA IL 61801 + UNITED STATES + +00-D0-57 (hex) ULTRAK, INC. +00D057 (base 16) ULTRAK, INC. + 1301 WATERS RIDGE DRIVE + LEWISVILLE TX 75057 + UNITED STATES + +00-D0-58 (hex) CISCO SYSTEMS, INC. +00D058 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-D0-59 (hex) AMBIT MICROSYSTEMS CORP. +00D059 (base 16) AMBIT MICROSYSTEMS CORP. + 5F-1, 5 HSIN-AN ROAD + SCIENCE-BASED INDUSTRIAL PARK HSINCHU + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-D0-5A (hex) SYMBIONICS, LTD. +00D05A (base 16) SYMBIONICS, LTD. + ST. JOHN'S INNOVATION PARK + CAMBRIDGE CB4 0WS + ENGLAND + UNITED KINGDOM + +00-D0-5B (hex) ACROLOOP MOTION CONTROL +00D05B (base 16) ACROLOOP MOTION CONTROL + SYSTEMS + 3650 CHESTNUT ST. N. + CHASKA MN 55318 + UNITED STATES + +00-D0-5C (hex) TECHNOTREND SYSTEMTECHNIK GMBH +00D05C (base 16) TECHNOTREND SYSTEMTECHNIK GMBH + WILHELM-WOLFF-STRASSE 6 + GER-99099 ERFURT + GERMANY + GERMANY + +00-D0-5D (hex) INTELLIWORXX, INC. +00D05D (base 16) INTELLIWORXX, INC. + 1819 MAIN STREET, STE #1101 + SARASOTA FL 34236 + UNITED STATES + +00-D0-5E (hex) STRATABEAM TECHNOLOGY, INC. +00D05E (base 16) STRATABEAM TECHNOLOGY, INC. + 1943 LANDINGS DRIVE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-D0-5F (hex) VALCOM, INC. +00D05F (base 16) VALCOM, INC. + 1111 INDUSTRY AVENUE + ROANOKE VA 24013 + UNITED STATES + +00-D0-60 (hex) Panasonic Europe Ltd. +00D060 (base 16) Panasonic Europe Ltd. + LABORATORIES GMBH + MONZASTR. 4C D-63225 LANGEN + GERMANY + GERMANY + +00-D0-61 (hex) TREMON ENTERPRISES CO., LTD. +00D061 (base 16) TREMON ENTERPRISES CO., LTD. + 15F, NO. 116, SEC. 1 + HSIN-TAI 5TH ROAD HSICHIH, TAIPEI COUNTY + TAIWAN TAIWAN ROC + TAIWAN, REPUBLIC OF CHINA + +00-D0-62 (hex) DIGIGRAM +00D062 (base 16) DIGIGRAM + PARC DE PRE MILLIET + 38330 MONTBONNOT + FRANCE + FRANCE + +00-D0-63 (hex) CISCO SYSTEMS, INC. +00D063 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-D0-64 (hex) MULTITEL +00D064 (base 16) MULTITEL + 2905 RUE DE CELLES + QUEBEC CITY, QUEBEC PROVINCE + CANADA CANADA G2C-1W7 + CANADA + +00-D0-65 (hex) TOKO ELECTRIC +00D065 (base 16) TOKO ELECTRIC + 4008 KUROHAMA, HASUDA-SHI + SAITAMA 349-0192 + JAPAN + JAPAN + +00-D0-66 (hex) WINTRISS ENGINEERING CORP. +00D066 (base 16) WINTRISS ENGINEERING CORP. + 6344 FERRIS SQUARE + SAN DIEGO CA 92121 + UNITED STATES + +00-D0-67 (hex) CAMPIO COMMUNICATIONS +00D067 (base 16) CAMPIO COMMUNICATIONS + 2033 GATEWAY PL, SUITE #600 + SAN JOSE CA 95110 + UNITED STATES + +00-D0-68 (hex) IWILL CORPORATION +00D068 (base 16) IWILL CORPORATION + NO.10, WU-CHUAN 3 RD, + HSIN-CHUAN CITY TAIPEI + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-D0-69 (hex) TECHNOLOGIC SYSTEMS +00D069 (base 16) TECHNOLOGIC SYSTEMS + 16610 E. LASER DRIVE-STE. #10 + FOUNTAIN HILLS AZ 85268 + UNITED STATES + +00-D0-6A (hex) LINKUP SYSTEMS CORPORATION +00D06A (base 16) LINKUP SYSTEMS CORPORATION + 1190 COLEMAN AVE.- STE #2C + SAN JOSE CA 95110 + UNITED STATES + +00-D0-6B (hex) SR TELECOM INC. +00D06B (base 16) SR TELECOM INC. + 8150 Trans Canada Highway + Montreal + Quebec H4S 1M5 + CANADA + +00-D0-6C (hex) SHAREWAVE, INC. +00D06C (base 16) SHAREWAVE, INC. + 5175 HILLSDALE CIRCLE + EL DORADO HILLS CA 95762 + UNITED STATES + +00-D0-6D (hex) ACRISON, INC. +00D06D (base 16) ACRISON, INC. + 20 EMPIRE BLVD. + MOONACHIE NJ 07074 + UNITED STATES + +00-D0-6E (hex) TRENDVIEW RECORDERS LTD. +00D06E (base 16) TRENDVIEW RECORDERS LTD. + 4 AIRFIELD WAY + CHRISTCHURCH DORSET BH23 3TS + UNITED KINGDOM + UNITED KINGDOM + +00-D0-6F (hex) KMC CONTROLS +00D06F (base 16) KMC CONTROLS + P.O. BOX 497 + 19476 NEW PARIS INDUSTRIAL DR. + NEW PARIS IN 46553 + UNITED STATES + +00-D0-70 (hex) LONG WELL ELECTRONICS CORP. +00D070 (base 16) LONG WELL ELECTRONICS CORP. + 4F, NO. 59-1, TSAO DI WEI + SHENGKENG HSIANG, TAIPEI HSIEN + TAIWAN 222 TAIWAN 222 R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-D0-71 (hex) ECHELON CORP. +00D071 (base 16) ECHELON CORP. + 4015 MIRANDA AVENUE + PALO ALTO CA 94304 + UNITED STATES + +00-D0-72 (hex) BROADLOGIC +00D072 (base 16) BROADLOGIC + 463 S. MILPITAS BLVD. + MILPITAS CA 95035 + UNITED STATES + +00-D0-73 (hex) ACN ADVANCED COMMUNICATIONS +00D073 (base 16) ACN ADVANCED COMMUNICATIONS + NETWORKS SA + RUE DU PUITS-GODET BA CH-2000 NEUCHATEL + SWITZERLAND + SWITZERLAND + +00-D0-74 (hex) TAQUA SYSTEMS, INC. +00D074 (base 16) TAQUA SYSTEMS, INC. + 1600 FALMOUTH RD. - STE + CENTERVILLE MA 02632 + UNITED STATES + +00-D0-75 (hex) ALARIS MEDICAL SYSTEMS, INC. +00D075 (base 16) ALARIS MEDICAL SYSTEMS, INC. + P.O. BOX 85335 + 10221 WATERIDGE CIRCLE + SAN DIEGO CA 92121-2733 + UNITED STATES + +00-D0-76 (hex) Merrill Lynch & Co., Inc. +00D076 (base 16) Merrill Lynch & Co., Inc. + 1100 Merrill Drive + Pennington NJ 08534 + UNITED STATES + +00-D0-77 (hex) LUCENT TECHNOLOGIES +00D077 (base 16) LUCENT TECHNOLOGIES + CLIENT ACCESS BUSINESS UNIT + 101 CRAWFORDS CORNER ROAD ROOM #1E-437AL + HOLMDEL NJ 07733 + UNITED STATES + +00-D0-78 (hex) ELTEX OF SWEDEN AB +00D078 (base 16) ELTEX OF SWEDEN AB + BOX 608 + 34324 ELMHULT + SWEDEN + SWEDEN + +00-D0-79 (hex) CISCO SYSTEMS, INC. +00D079 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-D0-7A (hex) AMAQUEST COMPUTER CORP. +00D07A (base 16) AMAQUEST COMPUTER CORP. + 8/F, 79 HSIN-TAI + 5TH ROAD, SEC. 1 HS1-CHIH, TAIPEI + TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-D0-7B (hex) COMCAM INTERNATIONAL LTD. +00D07B (base 16) COMCAM INTERNATIONAL LTD. + PARK VALLEY CORPORATE CNTR#107 + 1157 PHOENIXVILLE PIKE + WEST CHESTER PA 19380 + UNITED STATES + +00-D0-7C (hex) KOYO ELECTRONICS INC. CO.,LTD. +00D07C (base 16) KOYO ELECTRONICS INC. CO.,LTD. + 1-171 TENJIN-CHO KODAIRA + TOKYO 187-0004 + JAPAN + JAPAN + +00-D0-7D (hex) COSINE COMMUNICATIONS +00D07D (base 16) COSINE COMMUNICATIONS + 1200 BRIDGE PARKWAY + REDWOOD CITY CA 94065 + UNITED STATES + +00-D0-7E (hex) KEYCORP LTD. +00D07E (base 16) KEYCORP LTD. + P.O. BOX 199 + CHATSWOOD NSW 2057 + AUSTRALIA + AUSTRALIA + +00-D0-7F (hex) STRATEGY & TECHNOLOGY, LIMITED +00D07F (base 16) STRATEGY & TECHNOLOGY, LIMITED + Suite 4.2, Clifton Heights + Triangle West + Bristol BS8 1EJ + UNITED KINGDOM + +00-D0-80 (hex) EXABYTE CORPORATION +00D080 (base 16) EXABYTE CORPORATION + 1685 38TH STREET + BOULDER CO 80301 + UNITED STATES + +00-D0-81 (hex) RTD Embedded Technologies, Inc. +00D081 (base 16) RTD Embedded Technologies, Inc. + 103 Innovation Blvd. + State College PA 16803 + UNITED STATES + +00-D0-82 (hex) IOWAVE INC. +00D082 (base 16) IOWAVE INC. + 1010 WISCONSIN AVENUE + WASHINGTON DC 20007 + UNITED STATES + +00-D0-83 (hex) INVERTEX, INC. +00D083 (base 16) INVERTEX, INC. + 1012 MORSE AVENUE- STE.#9 + SUNNYVALE CA 94089 + UNITED STATES + +00-D0-84 (hex) NEXCOMM SYSTEMS, INC. +00D084 (base 16) NEXCOMM SYSTEMS, INC. + SUIT #NAL-903, + SUNGNAM TECHNO-PARK 148 YATAP-DONG, BUND + SUNGNAM-CITY SUNGNAM-CITY KYUNGGI-DO,K + KOREA, REPUBLIC OF + +00-D0-85 (hex) OTIS ELEVATOR COMPANY +00D085 (base 16) OTIS ELEVATOR COMPANY + 5 FARM SPRINGS RD. + FARMINGTON CT 06032 + UNITED STATES + +00-D0-86 (hex) FOVEON, INC. +00D086 (base 16) FOVEON, INC. + 2820 San Tomas Expressway + Santa Clara CA 95051 + UNITED STATES + +00-D0-87 (hex) MICROFIRST INC. +00D087 (base 16) MICROFIRST INC. + 11 EAST OAK STREET + OAKLAND NJ 07436 + UNITED STATES + +00-D0-88 (hex) Motorola, Inc. +00D088 (base 16) Motorola, Inc. + 2450 Walsh Ave + Santa Clara CA 95051 + UNITED STATES + +00-D0-89 (hex) DYNACOLOR, INC. +00D089 (base 16) DYNACOLOR, INC. + 18F-1, NO. 97, SECTION 4 + CHUNG HSIN RD, SAN-CHUNG CITY TAIPEI HSI + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-D0-8A (hex) PHOTRON USA +00D08A (base 16) PHOTRON USA + 1101 S. WINCHESTER BLVD. + SUITE #D-144 + SAN JOSE CA 95128 + UNITED STATES + +00-D0-8B (hex) ADVA Optical Networking Ltd +00D08B (base 16) ADVA Optical Networking Ltd + CLIFTON TECHNOLOGY CENTRE + CLIFTON MOOR + YORK NORTH YORKSHIRE YO30 4GU + UNITED KINGDOM + +00-D0-8C (hex) GENOA TECHNOLOGY, INC. +00D08C (base 16) GENOA TECHNOLOGY, INC. + 5401 TECH CIRCLE + MOORPARK CA 93021 + UNITED STATES + +00-D0-8D (hex) PHOENIX GROUP, INC. +00D08D (base 16) PHOENIX GROUP, INC. + 123 MARCUS BLVD. + HAUPPAUGE NY 11788 + UNITED STATES + +00-D0-8E (hex) NVISION INC. +00D08E (base 16) NVISION INC. + 125 CROWN POINT COURT + GRASS VALLEY CA 95945 + UNITED STATES + +00-D0-8F (hex) ARDENT TECHNOLOGIES, INC. +00D08F (base 16) ARDENT TECHNOLOGIES, INC. + 250 N. WOLFE ROAD + SUNNYVALE CA 94086 + UNITED STATES + +00-D0-90 (hex) CISCO SYSTEMS, INC. +00D090 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-D0-91 (hex) SMARTSAN SYSTEMS, INC. +00D091 (base 16) SMARTSAN SYSTEMS, INC. + 4655 OLD IRONSIDES DR. #480 + SANTA CLARA CA 95054 + UNITED STATES + +00-D0-92 (hex) GLENAYRE WESTERN MULTIPLEX +00D092 (base 16) GLENAYRE WESTERN MULTIPLEX + 1196 BORREGAS AVENUE + SUNNYVALE CA 94089 + UNITED STATES + +00-D0-93 (hex) TQ - COMPONENTS GMBH +00D093 (base 16) TQ - COMPONENTS GMBH + GUT DELLING - MUHLSTR 2 + D-82229 SEEFELD + GERMANY + GERMANY + +00-D0-94 (hex) TIMELINE VISTA, INC. +00D094 (base 16) TIMELINE VISTA, INC. + 1755-B LA COSTA MEADOWS DRIVE + SAN MARCOS CA 92069 + UNITED STATES + +00-D0-95 (hex) Alcatel-Lucent, Enterprise Business Group +00D095 (base 16) Alcatel-Lucent, Enterprise Business Group + 26801 West Agoura Road + CALABASAS CA 91301 + UNITED STATES + +00-D0-96 (hex) 3COM EUROPE LTD. +00D096 (base 16) 3COM EUROPE LTD. + BOUNDARY WAY + HEMEL HEMPSTEAD HERTS. HP2 7YU + UNITED KINGDOM + UNITED KINGDOM + +00-D0-97 (hex) CISCO SYSTEMS, INC. +00D097 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + M/S SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-D0-98 (hex) Photon Dynamics Canada Inc. +00D098 (base 16) Photon Dynamics Canada Inc. + 221 Whitehall Drive + Markham, Ontario + L3R 9T1 + CANADA + +00-D0-99 (hex) ELCARD OY +00D099 (base 16) ELCARD OY + P.O. BOX 120/BECKERINTIC 38 + 51201 KANGASNIEMI + FINLAND + FINLAND + +00-D0-9A (hex) FILANET CORPORATION +00D09A (base 16) FILANET CORPORATION + 931 Benecia Avenue + Sunnyvale CA 94085 + UNITED STATES + +00-D0-9B (hex) SPECTEL LTD. +00D09B (base 16) SPECTEL LTD. + 21 STILLORGAN INDUSTRIAL PARK + STILLORGAN, CO. DUBLIN + IRELAND + IRELAND + +00-D0-9C (hex) KAPADIA COMMUNICATIONS +00D09C (base 16) KAPADIA COMMUNICATIONS + 3925 WEST BROKER LANE + AUSTIN TX 78759 + UNITED STATES + +00-D0-9D (hex) VERIS INDUSTRIES +00D09D (base 16) VERIS INDUSTRIES + 10831 SW CASCADE + PORTLAND OR 97223 + UNITED STATES + +00-D0-9E (hex) 2WIRE, INC. +00D09E (base 16) 2WIRE, INC. + 694 TASMAN DRIVE + MILPITAS CA 95035 + UNITED STATES + +00-D0-9F (hex) NOVTEK TEST SYSTEMS +00D09F (base 16) NOVTEK TEST SYSTEMS + 2170 PARAGON DRIVE + SAN JOSE CA 95131 + UNITED STATES + +00-D0-A0 (hex) MIPS DENMARK +00D0A0 (base 16) MIPS DENMARK + LAUTRUPVANG 2B + 2750 BALLERUP + DK - DENMARK + DENMARK + +00-D0-A1 (hex) OSKAR VIERLING GMBH + CO. KG +00D0A1 (base 16) OSKAR VIERLING GMBH + CO. KG + PRETZFELDER STR. 21 + 91320 EBERMANNSTADT + GERMANY + GERMANY + +00-D0-A2 (hex) INTEGRATED DEVICE +00D0A2 (base 16) INTEGRATED DEVICE + TECHNOLOGY, INC. + 2975 STENDER WAY M/S 0-318 + SANTA CLARA CA 95054 + UNITED STATES + +00-D0-A3 (hex) VOCAL DATA, INC. +00D0A3 (base 16) VOCAL DATA, INC. + 1701 N GREENVILLE #304 + RICHARDSON TX 75081 + UNITED STATES + +00-D0-A4 (hex) ALANTRO COMMUNICATIONS +00D0A4 (base 16) ALANTRO COMMUNICATIONS + 141 STONY CIRCLE, STE. #210 + SANTAROSA CA 95401 + UNITED STATES + +00-D0-A5 (hex) AMERICAN ARIUM +00D0A5 (base 16) AMERICAN ARIUM + 14281 CHAMBERS ROAD + TUSTIN CA 92780 + UNITED STATES + +00-D0-A6 (hex) LANBIRD TECHNOLOGY CO., LTD. +00D0A6 (base 16) LANBIRD TECHNOLOGY CO., LTD. + ROOM A-211, S.B.I. + 647-26, DEUNGCHON-DONG, KANGSEO-GU, SEO + KOREA 157-030 + KOREA, REPUBLIC OF + +00-D0-A7 (hex) TOKYO SOKKI KENKYUJO CO., LTD. +00D0A7 (base 16) TOKYO SOKKI KENKYUJO CO., LTD. + 8-2, MINAMI-OHI 6-CHOME + SHINAGAWA-KU TOKYO + JAPAN 140-8560 + JAPAN + +00-D0-A8 (hex) NETWORK ENGINES, INC. +00D0A8 (base 16) NETWORK ENGINES, INC. + 61 PLEASANT STREET + RANDOLPH MA 02368 + UNITED STATES + +00-D0-A9 (hex) SHINANO KENSHI CO., LTD. +00D0A9 (base 16) SHINANO KENSHI CO., LTD. + ELECTRONIC EQUIPMENT DIVISION + 6-15-26, CHUO, UEDA-SHI NAGANO-KEN, 386- + JAPAN + JAPAN + +00-D0-AA (hex) CHASE COMMUNICATIONS +00D0AA (base 16) CHASE COMMUNICATIONS + ST. LEONARDS ROAD + EAST SHEEN LONDON SW16 7LY + UNITED KINGDOM + UNITED KINGDOM + +00-D0-AB (hex) DELTAKABEL TELECOM CV +00D0AB (base 16) DELTAKABEL TELECOM CV + HANZEWEG 14 + 2803 MC GOUDA + THE NETHERLANDS + NETHERLANDS + +00-D0-AC (hex) GRAYSON WIRELESS +00D0AC (base 16) GRAYSON WIRELESS + 140 VISTA CENTRE DRIVE + FOREST VA 24551 + UNITED STATES + +00-D0-AD (hex) TL INDUSTRIES +00D0AD (base 16) TL INDUSTRIES + 2541 TRACY ROAD + NORTHWOOD OH 43619 + UNITED STATES + +00-D0-AE (hex) ORESIS COMMUNICATIONS, INC. +00D0AE (base 16) ORESIS COMMUNICATIONS, INC. + 14670 NW GREENBRIER PKWY + BEAVERTON OR 97006 + UNITED STATES + +00-D0-AF (hex) CUTLER-HAMMER, INC. +00D0AF (base 16) CUTLER-HAMMER, INC. + PMP CENTER + 240 VISTA PARK DRIVE + PITTSBURGH PA 15205 + UNITED STATES + +00-D0-B0 (hex) BITSWITCH LTD. +00D0B0 (base 16) BITSWITCH LTD. + 3 MEADOW COURT, AMOS ROAD + MEADOWHALL, SHEFFIELD S9 1BX + UNITED KINGDOM + UNITED KINGDOM + +00-D0-B1 (hex) OMEGA ELECTRONICS SA +00D0B1 (base 16) OMEGA ELECTRONICS SA + ROUTE DE SOLEURE 68 + CH-2500 BIENNE 4 + SWITZERLAND + SWITZERLAND + +00-D0-B2 (hex) XIOTECH CORPORATION +00D0B2 (base 16) XIOTECH CORPORATION + 6455 FLYING CLOUD DRIVE + EDEN PRAIRIE MN 55344 + UNITED STATES + +00-D0-B3 (hex) DRS FLIGHT SAFETY AND +00D0B3 (base 16) DRS FLIGHT SAFETY AND + COMMUNICATIONS + 40 CONCOURSE GATE NEPEAN + CANADA K2E 8A6 + CANADA + +00-D0-B4 (hex) KATSUJIMA CO., LTD. +00D0B4 (base 16) KATSUJIMA CO., LTD. + 1-6-1-, SHIRATORI + KATSUSHIKA-KU TOKYO 125-0063 + JAPAN + JAPAN + +00-D0-B5 (hex) IPricot formerly DotCom +00D0B5 (base 16) IPricot formerly DotCom + 10-12, avenue de Verdun + La-Garenne-Colombes F-92250 + FRANCE + +00-D0-B6 (hex) CRESCENT NETWORKS, INC. +00D0B6 (base 16) CRESCENT NETWORKS, INC. + 201 RIVERNECK ROAD + CHELMSFORD MA 01842 + UNITED STATES + +00-D0-B7 (hex) INTEL CORPORATION +00D0B7 (base 16) INTEL CORPORATION + 5200 NE ELAM YOUNG PARKWAY + HF1-08 + HILLSBORO OR 97124 + UNITED STATES + +00-D0-B8 (hex) Iomega Corporation +00D0B8 (base 16) Iomega Corporation + + CANADA + +00-D0-B9 (hex) MICROTEK INTERNATIONAL, INC. +00D0B9 (base 16) MICROTEK INTERNATIONAL, INC. + NO. 6 INDUSTRY EAST ROAD 3 + SCIENCE-BASED INDUSTRIAL PARK HSINCHU + TAIWAN 30077 TAIWAN 30077 R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-D0-BA (hex) CISCO SYSTEMS, INC. +00D0BA (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE- SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-D0-BB (hex) CISCO SYSTEMS, INC. +00D0BB (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-D0-BC (hex) CISCO SYSTEMS, INC. +00D0BC (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE-SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-D0-BD (hex) SICAN GMBH +00D0BD (base 16) SICAN GMBH + GARBSENER LANDSTR. 10 + D-30419 HANNOVER + GERMANY + GERMANY + +00-D0-BE (hex) EMUTEC INC. +00D0BE (base 16) EMUTEC INC. + P.O. BOX 3035 + EVERETT WA 98203 + UNITED STATES + +00-D0-BF (hex) PIVOTAL TECHNOLOGIES +00D0BF (base 16) PIVOTAL TECHNOLOGIES + 70 S. LAKE AVENUE - STE. #900 + PASADENA CA 91101 + UNITED STATES + +00-D0-C0 (hex) CISCO SYSTEMS, INC. +00D0C0 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DR. SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-D0-C1 (hex) HARMONIC DATA SYSTEMS, LTD. +00D0C1 (base 16) HARMONIC DATA SYSTEMS, LTD. + 10 BEIT SHAMAI STREET + TEL-AVIV + ISRAEL 67018 + ISRAEL + +00-D0-C2 (hex) BALTHAZAR TECHNOLOGY AB +00D0C2 (base 16) BALTHAZAR TECHNOLOGY AB + ANKDAMMSGATAN 24 + S-17143 SOLNA + SWEDEN + SWEDEN + +00-D0-C3 (hex) VIVID TECHNOLOGY PTE, LTD. +00D0C3 (base 16) VIVID TECHNOLOGY PTE, LTD. + 1003 BUKIT MERAH CENTRAL + #03-09, S159836 + SINGAPORE + SINGAPORE + +00-D0-C4 (hex) TERATECH CORPORATION +00D0C4 (base 16) TERATECH CORPORATION + 223 MIDDLESEX TRPK. + BURLINGTON MA 01803-3308 + UNITED STATES + +00-D0-C5 (hex) COMPUTATIONAL SYSTEMS, INC. +00D0C5 (base 16) COMPUTATIONAL SYSTEMS, INC. + 835 INNOVATION DRIVE + KNOXVILLE TN 37932 + UNITED STATES + +00-D0-C6 (hex) THOMAS & BETTS CORP. +00D0C6 (base 16) THOMAS & BETTS CORP. + Thomas & Betts Aust. Pty. Ltd. + 23a Nyrang Street + Lidcombe New South Wales 92618 + AUSTRALIA + +00-D0-C7 (hex) PATHWAY, INC. +00D0C7 (base 16) PATHWAY, INC. + 777 BETA DRIVE + MAYFIELD VILLAGE OH 44143 + UNITED STATES + +00-D0-C8 (hex) I/O CONSULTING A/S +00D0C8 (base 16) I/O CONSULTING A/S + LAUTRUPVANG 1B + DK-2750 BALLERUP + DENMARK + DENMARK + +00-D0-C9 (hex) ADVANTECH CO., LTD. +00D0C9 (base 16) ADVANTECH CO., LTD. + FL. 4, NO. 108-3 + MING-CHUAN ROAD SHING-TIEN CITY + TAIPEI TAIPEI TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-D0-CA (hex) Intrinsyc Software int'l, Inc. +00D0CA (base 16) Intrinsyc Software int'l, Inc. + 700 West Pender Street + 10th floor + Vancouver B.C. V6C 1G8 + CANADA + +00-D0-CB (hex) DASAN CO., LTD. +00D0CB (base 16) DASAN CO., LTD. + 6F, KOSMO TOWER + 1002, DAECHI-DONG, KANGNAM-KU SEOUL + KOREA (ZIP 135-280) + KOREA, REPUBLIC OF + +00-D0-CC (hex) TECHNOLOGIES LYRE INC. +00D0CC (base 16) TECHNOLOGIES LYRE INC. + 1200 ST-JEAN-BAPTISTE, + SUITE #120 QUEBEC, QUEBEC + CANADA G2E 5E8 + CANADA + +00-D0-CD (hex) ATAN TECHNOLOGY INC. +00D0CD (base 16) ATAN TECHNOLOGY INC. + #5, ALLEY 18, LANE 81, + CHIEN KANG, 2ND ROAD HINCHU + TAIWAN TAIWAN R.O.C. + TAIWAN, REPUBLIC OF CHINA + +00-D0-CE (hex) ASYST ELECTRONIC +00D0CE (base 16) ASYST ELECTRONIC + BRODISCE 7, 10C TRZIN + 1236 TRZIN + SLOVENIA + SLOVENIA + +00-D0-CF (hex) MORETON BAY +00D0CF (base 16) MORETON BAY + 12/97 JIJAWS STREET + SUMNER PARK. 4074 QLD. + AUSTRALIA + AUSTRALIA + +00-D0-D0 (hex) ZHONGXING TELECOM LTD. +00D0D0 (base 16) ZHONGXING TELECOM LTD. + 8-9F BUILDING 54,301# + ZHONG SHAN DONGLU, NANJING PRC, PC=21000 + CHINA + CHINA + +00-D0-D1 (hex) Sycamore Networks +00D0D1 (base 16) Sycamore Networks + 220 Mill Rd + Chelmsford MA 01824 + UNITED STATES + +00-D0-D2 (hex) EPILOG CORPORATION +00D0D2 (base 16) EPILOG CORPORATION + 500 CORPORATE CIRCLE - STE. + GOLDEN CO 80401 + UNITED STATES + +00-D0-D3 (hex) CISCO SYSTEMS, INC. +00D0D3 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + M/S SJA-2 + SAN JOSE CA 95134 + UNITED STATES + +00-D0-D4 (hex) V-BITS, INC. +00D0D4 (base 16) V-BITS, INC. + 2150 TRADE ZONE BLVD. + SUITE #105 + SAN JOSE CA 95131 + UNITED STATES + +00-D0-D5 (hex) GRUNDIG AG +00D0D5 (base 16) GRUNDIG AG + KURGARTENSGTREET 37 + D-90762 FUERTH/BAYERN + GERMANY + GERMANY + +00-D0-D6 (hex) AETHRA TELECOMUNICAZIONI +00D0D6 (base 16) AETHRA TELECOMUNICAZIONI + VIA MATTEO RICCI, 10 + 60020 ANCONA + ITALY + ITALY + +00-D0-D7 (hex) B2C2, INC. +00D0D7 (base 16) B2C2, INC. + 2020 CHALLENGER DRIVE- + SUITE #101 + ALAMEDA CA 94501 + UNITED STATES + +00-D0-D8 (hex) 3Com Corporation +00D0D8 (base 16) 3Com Corporation + 2133 LEGHORN STREET + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-D0-D9 (hex) DEDICATED MICROCOMPUTERS +00D0D9 (base 16) DEDICATED MICROCOMPUTERS + GROUP, LTD. + 11 OAK STREET, PENDLEBURY SWINTON, MANCH + M274FL UNITED KINGDOM + UNITED KINGDOM + +00-D0-DA (hex) TAICOM DATA SYSTEMS CO., LTD. +00D0DA (base 16) TAICOM DATA SYSTEMS CO., LTD. + 45, WU-KUNG 5 ROAD + WU-KU IND. PAVK TAIPEI-HSIEN + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-D0-DB (hex) MCQUAY INTERNATIONAL +00D0DB (base 16) MCQUAY INTERNATIONAL + 13600 INDUSTRIAL PARK BLVD. + MINNEAPOLIS MN 55441 + UNITED STATES + +00-D0-DC (hex) MODULAR MINING SYSTEMS, INC. +00D0DC (base 16) MODULAR MINING SYSTEMS, INC. + 3289 E. HEMISPHERE LOOP + TUCSON AZ 85706 + UNITED STATES + +00-D0-DD (hex) SUNRISE TELECOM, INC. +00D0DD (base 16) SUNRISE TELECOM, INC. + 22 GREAT OAKS BLVD. + SAN JOSE CA 95119 + UNITED STATES + +00-D0-DE (hex) PHILIPS MULTIMEDIA NETWORK +00D0DE (base 16) PHILIPS MULTIMEDIA NETWORK + SYSTEMS GMBH + FICHTESTRASSE 1A D-02601 BAUTZEN + GERMANY + GERMANY + +00-D0-DF (hex) KUZUMI ELECTRONICS, INC. +00D0DF (base 16) KUZUMI ELECTRONICS, INC. + 28-6 IIJIMA-CHYO, SAKAE-KU + YOKOHAMA-SHI KANAGAWA, 244-0842 + JAPAN + JAPAN + +00-D0-E0 (hex) DOOIN ELECTRONICS CO. +00D0E0 (base 16) DOOIN ELECTRONICS CO. + DOOIN BLDG. 16-6, SOONAE-DONG + BUNDANG-GU, SUNGNAM-SI KYUNGGI-DO + KOREA 463-020 + KOREA, REPUBLIC OF + +00-D0-E1 (hex) AVIONITEK ISRAEL INC. +00D0E1 (base 16) AVIONITEK ISRAEL INC. + 1 ETGAR STREET + TIRAT CARMEL 39120 + ISRAEL + ISRAEL + +00-D0-E2 (hex) MRT MICRO, INC. +00D0E2 (base 16) MRT MICRO, INC. + 14000 S. MILITARY TRAIL + DELRAY BEACH FL 33484 + UNITED STATES + +00-D0-E3 (hex) ELE-CHEM ENGINEERING CO., LTD. +00D0E3 (base 16) ELE-CHEM ENGINEERING CO., LTD. + WINDSTONE OFFICE + 1-803, 275-2 YANGJUE-DONG, SEOCHO-KU + SEOUL 137-130 SEOUL 137-130 KOREA + KOREA, REPUBLIC OF + +00-D0-E4 (hex) CISCO SYSTEMS, INC. +00D0E4 (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-D0-E5 (hex) SOLIDUM SYSTEMS CORP. +00D0E5 (base 16) SOLIDUM SYSTEMS CORP. + 940 BELFAST ROAD 1S.217 + OTTAWA, ONTARIO K1G 4A2 + CANADA + CANADA + +00-D0-E6 (hex) IBOND INC. +00D0E6 (base 16) IBOND INC. + 3160, DE LA CRUZ BLVD. + SUITE #101 + SANTA CLARA CA 95054 + UNITED STATES + +00-D0-E7 (hex) VCON TELECOMMUNICATION LTD. +00D0E7 (base 16) VCON TELECOMMUNICATION LTD. + 22 MASKIT STREET + HERZLIYA 46733 + ISRAEL + ISRAEL + +00-D0-E8 (hex) MAC SYSTEM CO., LTD. +00D0E8 (base 16) MAC SYSTEM CO., LTD. + R&D INSTITUTE + MAC SYSTEM CO., LTD. 219-2 ANANG7-DONG, + KYUNGKI-DO KOREA, 430-017 + KOREA, REPUBLIC OF + +00-D0-E9 (hex) Advantage Century Telecommunication Corp. +00D0E9 (base 16) Advantage Century Telecommunication Corp. + 4F, 41, Tunghsin Rd. + Taipei + TAIWAN, REPUBLIC OF CHINA + +00-D0-EA (hex) NEXTONE COMMUNICATIONS, INC. +00D0EA (base 16) NEXTONE COMMUNICATIONS, INC. + 9700 GREAT SENECA HGHWY + ROCKVILLE MD 20850 + UNITED STATES + +00-D0-EB (hex) LIGHTERA NETWORKS, INC. +00D0EB (base 16) LIGHTERA NETWORKS, INC. + 10201 BUBB ROAD + CUPERTINO CA 95014 + UNITED STATES + +00-D0-EC (hex) NAKAYO TELECOMMUNICATIONS, INC +00D0EC (base 16) NAKAYO TELECOMMUNICATIONS, INC + 1-3-2 SOUJYA-MACHI + MAEBASHI-SHI GUNMA, 371-0853 + JAPAN + JAPAN + +00-D0-ED (hex) XIOX +00D0ED (base 16) XIOX + 150 DOW STREET + MANCHESTER NH 03101 + UNITED STATES + +00-D0-EE (hex) DICTAPHONE CORPORATION +00D0EE (base 16) DICTAPHONE CORPORATION + 3191 BROADBRIDGE AVE. + STRATFORD CT 06614-2559 + UNITED STATES + +00-D0-EF (hex) IGT +00D0EF (base 16) IGT + 9295 PROTOTYPE DRIVE + RENO NV 89511 + UNITED STATES + +00-D0-F0 (hex) CONVISION TECHNOLOGY GMBH +00D0F0 (base 16) CONVISION TECHNOLOGY GMBH + REBENRING 33 + D-38106 BRAUNSCHWEIG + GERMANY + GERMANY + +00-D0-F1 (hex) SEGA ENTERPRISES, LTD. +00D0F1 (base 16) SEGA ENTERPRISES, LTD. + 12-14 HIGASHIKOUJIYA 2-CHOME + OHTA-KU TOKYO 144-8532 + JAPAN + JAPAN + +00-D0-F2 (hex) MONTEREY NETWORKS +00D0F2 (base 16) MONTEREY NETWORKS + 1909 N. GLENVILLE DRIVE + RICHARDSON TX 75081 + UNITED STATES + +00-D0-F3 (hex) SOLARI DI UDINE SPA +00D0F3 (base 16) SOLARI DI UDINE SPA + VIA GINO PIERI 29 + 33100 UDINE + ITALY + ITALY + +00-D0-F4 (hex) CARINTHIAN TECH INSTITUTE +00D0F4 (base 16) CARINTHIAN TECH INSTITUTE + RICHARD-WAGNER STR. 19 + 9500 VILLACH + AUSTRIA + AUSTRIA + +00-D0-F5 (hex) ORANGE MICRO, INC. +00D0F5 (base 16) ORANGE MICRO, INC. + 1400 N. LAKEVIEW AVE. + ANAHEIM CA 92807 + UNITED STATES + +00-D0-F6 (hex) Alcatel Canada +00D0F6 (base 16) Alcatel Canada + 600 March Road + Kanata, Ontario + K2K 2E6 + CANADA + +00-D0-F7 (hex) NEXT NETS CORPORATION +00D0F7 (base 16) NEXT NETS CORPORATION + MITA KOKUSAI BLDG. 17F + 1-4-28 MITA MINATO-KU TOKYO 108-0073 + JAPAN + JAPAN + +00-D0-F8 (hex) FUJIAN STAR TERMINAL +00D0F8 (base 16) FUJIAN STAR TERMINAL + DEVICE CO., LTD. + FUER INDUSTRIAL ZONE STAR SCIENCE & TECH + FUZHOU FUJIAN, CHINA 350002 + CHINA + +00-D0-F9 (hex) ACUTE COMMUNICATIONS CORP. +00D0F9 (base 16) ACUTE COMMUNICATIONS CORP. + NO. 1, CREATION ROAD III + SCIENCE BASED INDUSTRIAL PARK HSINCHU 30 + TAIWAN + TAIWAN, REPUBLIC OF CHINA + +00-D0-FA (hex) RACAL GUARDATA +00D0FA (base 16) RACAL GUARDATA + 1601 N. HARRISON PKWY + BUILDING + SUNRISE FL 33323 + UNITED STATES + +00-D0-FB (hex) TEK MICROSYSTEMS, INCORPORATED +00D0FB (base 16) TEK MICROSYSTEMS, INCORPORATED + ONE NORTH AVENUE + BURLINGTON MA 01803 + UNITED STATES + +00-D0-FC (hex) GRANITE MICROSYSTEMS +00D0FC (base 16) GRANITE MICROSYSTEMS + 10202 N. ENTERPRISE DRIVE + MEQUON WI 53092 + UNITED STATES + +00-D0-FD (hex) OPTIMA TELE.COM, INC. +00D0FD (base 16) OPTIMA TELE.COM, INC. + 200-90 Allstate Parkway + Markham ON L3R 6H3 + CANADA + +00-D0-FE (hex) ASTRAL POINT +00D0FE (base 16) ASTRAL POINT + COMMUNICATIONS, INC. + 27 INDUSTRIAL AVE.,-STE. #3 + CHELMSFORD MA 01824 + UNITED STATES + +00-D0-FF (hex) CISCO SYSTEMS, INC. +00D0FF (base 16) CISCO SYSTEMS, INC. + 170 WEST TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-DD-00 (hex) UNGERMANN-BASS INC. +00DD00 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-01 (hex) UNGERMANN-BASS INC. +00DD01 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-02 (hex) UNGERMANN-BASS INC. +00DD02 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-03 (hex) UNGERMANN-BASS INC. +00DD03 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-04 (hex) UNGERMANN-BASS INC. +00DD04 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-05 (hex) UNGERMANN-BASS INC. +00DD05 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-06 (hex) UNGERMANN-BASS INC. +00DD06 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-07 (hex) UNGERMANN-BASS INC. +00DD07 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-08 (hex) UNGERMANN-BASS INC. +00DD08 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-09 (hex) UNGERMANN-BASS INC. +00DD09 (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-0A (hex) UNGERMANN-BASS INC. +00DD0A (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-0B (hex) UNGERMANN-BASS INC. +00DD0B (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-0C (hex) UNGERMANN-BASS INC. +00DD0C (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-0D (hex) UNGERMANN-BASS INC. +00DD0D (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-0E (hex) UNGERMANN-BASS INC. +00DD0E (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-DD-0F (hex) UNGERMANN-BASS INC. +00DD0F (base 16) UNGERMANN-BASS INC. + 3900 FREEDOM CIRCLE + SANTA CLARA CA 95054 + UNITED STATES + +00-E0-00 (hex) FUJITSU, LTD +00E000 (base 16) FUJITSU, LTD + CO-MAIL NO. HON 180 + 1-1 KAMIKODANAKA 4-CHOME NAKAHARA-KU + KAWASAKI 211-88 + JAPAN + +00-E0-01 (hex) STRAND LIGHTING LIMITED +00E001 (base 16) STRAND LIGHTING LIMITED + GRANT WAY + ISLEWORTH + MIDDLESEX England TW7 5QD + UNITED KINGDOM + +00-E0-02 (hex) CROSSROADS SYSTEMS, INC. +00E002 (base 16) CROSSROADS SYSTEMS, INC. + 9390 RESEARCH BLVD. + SUITE 2-300 + AUSTIN TX 78759 + UNITED STATES + +00-E0-03 (hex) NOKIA WIRELESS BUSINESS COMMUN +00E003 (base 16) NOKIA WIRELESS BUSINESS COMMUN + ACCESS POINT PRODUCTS GROUP + UNIT 6, CAMBRIDGE BUS PARK MILTON RD, CA + CB4 0WS + UNITED KINGDOM + +00-E0-04 (hex) PMC-SIERRA, INC. +00E004 (base 16) PMC-SIERRA, INC. + 105-8555 BAXTER PLACE + BURNABY, BC V5A 4V7 + CANADA + +00-E0-05 (hex) TECHNICAL CORP. +00E005 (base 16) TECHNICAL CORP. + 22-6 MINAMI SENGENCHO + NISHIKU YOKOHAMA CITY + KANAGAWA + JAPAN + +00-E0-06 (hex) SILICON INTEGRATED SYS. CORP. +00E006 (base 16) SILICON INTEGRATED SYS. CORP. + 16, CREATION RD. I + SCIENCE-BASED INDUSTRIAL PARK + HSIN CHU + TAIWAN, REPUBLIC OF CHINA + +00-E0-07 (hex) NETWORK ALCHEMY LTD. +00E007 (base 16) NETWORK ALCHEMY LTD. + 6 THE ORCHARD ON THE GREEN + CROXLEY GREEN, RICKMANSWORTH + HERTFORDSHIRE WD3 3HS + UNITED KINGDOM + +00-E0-08 (hex) AMAZING CONTROLS! INC. +00E008 (base 16) AMAZING CONTROLS! INC. + 1615 WYATT DRIVE + SANTA CLARA CA 95054 + UNITED STATES + +00-E0-09 (hex) MARATHON TECHNOLOGIES CORP. +00E009 (base 16) MARATHON TECHNOLOGIES CORP. + 1300 MASSACHUSETTS AVENUE + BOXBOROUGH MA 01719 + UNITED STATES + +00-E0-0A (hex) DIBA, INC. +00E00A (base 16) DIBA, INC. + 3355 EDISON WAY + MENLO PARK CA 94025 + UNITED STATES + +00-E0-0B (hex) ROOFTOP COMMUNICATIONS CORP. +00E00B (base 16) ROOFTOP COMMUNICATIONS CORP. + 468 PACO DRIVE + LOS ALTOS CA 94024 + UNITED STATES + +00-E0-0C (hex) MOTOROLA +00E00C (base 16) MOTOROLA + 5401 N. BEACH ST. S243 + FT. WORTH TX 76137 + UNITED STATES + +00-E0-0D (hex) RADIANT SYSTEMS +00E00D (base 16) RADIANT SYSTEMS + 1000 ALDERMAN DR. + ALPHARETTA GA 30202 + UNITED STATES + +00-E0-0E (hex) AVALON IMAGING SYSTEMS, INC. +00E00E (base 16) AVALON IMAGING SYSTEMS, INC. + 3133 INDIAN ROAD + BOULDER CO 80301 + UNITED STATES + +00-E0-0F (hex) SHANGHAI BAUD DATA +00E00F (base 16) SHANGHAI BAUD DATA + COMMUNICATION DEVELOPMENT CORP + 3F, GOLD LUCK BUILDING 2507 PUDONG ROAD + SHANGHAI + CHINA + +00-E0-10 (hex) HESS SB-AUTOMATENBAU GmbH +00E010 (base 16) HESS SB-AUTOMATENBAU GmbH + HINDENBURGSTRASSE 27-29 + D-71106 MAGSTADT + GERMANY + +00-E0-11 (hex) UNIDEN SAN DIEGO R&D CENTER, INC. +00E011 (base 16) UNIDEN SAN DIEGO R&D CENTER, INC. + 5808 PACIFIC CENTER BLVD. + SAN DIEGO CA 92121 + UNITED STATES + +00-E0-12 (hex) PLUTO TECHNOLOGIES INTERNATIONAL INC. +00E012 (base 16) PLUTO TECHNOLOGIES INTERNATIONAL INC. + 2511 55TH STREET + BOULDER CO 80301 + UNITED STATES + +00-E0-13 (hex) EASTERN ELECTRONIC CO., LTD. +00E013 (base 16) EASTERN ELECTRONIC CO., LTD. + NO. 4, SHIN-LONG ROAD, + KWEI-SHAN INDUSTRIAL AREA + TAO-YUAN + TAIWAN, REPUBLIC OF CHINA + +00-E0-14 (hex) CISCO SYSTEMS, INC. +00E014 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-15 (hex) HEIWA CORPORATION +00E015 (base 16) HEIWA CORPORATION + 2-3014-8, HIROSAWA-CHO + KIRYU-SHI + GUNMA PREF. 376 + JAPAN + +00-E0-16 (hex) RAPID CITY COMMUNICATIONS +00E016 (base 16) RAPID CITY COMMUNICATIONS + 555 CLYDE AVE. + MOUNTAIN VIEW CA 94043 + UNITED STATES + +00-E0-17 (hex) EXXACT GmbH +00E017 (base 16) EXXACT GmbH + RHEINSTRASE 7 + D-41836 HUCKELHOVEN + GERMANY + +00-E0-18 (hex) ASUSTEK COMPUTER INC. +00E018 (base 16) ASUSTEK COMPUTER INC. + 150 LI-TE RD. + PEITOU, TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-E0-19 (hex) ING. GIORDANO ELETTRONICA +00E019 (base 16) ING. GIORDANO ELETTRONICA + VIA PIETRO COSSA 115/12 + 10146-TORINO + ITALY + +00-E0-1A (hex) COMTEC SYSTEMS. CO., LTD. +00E01A (base 16) COMTEC SYSTEMS. CO., LTD. + 404-9 CHOUNGCHEN-DONG + BUPYOUNG-KU, INCHON + KOREA, REPUBLIC OF + +00-E0-1B (hex) SPHERE COMMUNICATIONS, INC. +00E01B (base 16) SPHERE COMMUNICATIONS, INC. + 2 ENERGY DRIVE + LAKE BLUFF IL 60044 + UNITED STATES + +00-E0-1C (hex) Cradlepoint, Inc +00E01C (base 16) Cradlepoint, Inc + 1199 Shoreline Lane + Suite 301 + Boise ID 83702 + UNITED STATES + +00-E0-1D (hex) WebTV NETWORKS, INC. +00E01D (base 16) WebTV NETWORKS, INC. + 305 LYTTON AVE. + PALO ALTO CA 94301 + UNITED STATES + +00-E0-1E (hex) CISCO SYSTEMS, INC. +00E01E (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-1F (hex) AVIDIA Systems, Inc. +00E01F (base 16) AVIDIA Systems, Inc. + 135 NORTH PLAINS INDUSTRIAL RD + WALLINGFORD CT 06492 + UNITED STATES + +00-E0-20 (hex) TECNOMEN OY +00E020 (base 16) TECNOMEN OY + P.O. BOX 93 + FIN-02271 ESPOO + FINLAND + +00-E0-21 (hex) FREEGATE CORP. +00E021 (base 16) FREEGATE CORP. + 710 LAKEWAY STE.#230 + SUNNYVALE CA 94086 + UNITED STATES + +00-E0-22 (hex) Analog Devices Inc. +00E022 (base 16) Analog Devices Inc. + 777 Bay Street + Suite 2303 + Toronto Ontario M5G 2C8 + CANADA + +00-E0-23 (hex) TELRAD +00E023 (base 16) TELRAD + P.O. BOX 50 + LOD 71100 + ISRAEL + +00-E0-24 (hex) GADZOOX NETWORKS +00E024 (base 16) GADZOOX NETWORKS + 5850 HELLYER AVENUE + SAN JOSE CA 95138 + UNITED STATES + +00-E0-25 (hex) dit CO., LTD. +00E025 (base 16) dit CO., LTD. + Toyocho N Bldg. + 5F 1-6-35 Shinsuna Koto-ku + Tokyo 136 + JAPAN + +00-E0-26 (hex) Redlake MASD LLC +00E026 (base 16) Redlake MASD LLC + 3440 E. Pritannia Dr. + Suite 124 + Tuscon AZ 85706 + UNITED STATES + +00-E0-27 (hex) DUX, INC. +00E027 (base 16) DUX, INC. + 5-18-19, NISHIKAMATA, OTA-KU + TOKYO-TO, 144 + JAPAN + +00-E0-28 (hex) APTIX CORPORATION +00E028 (base 16) APTIX CORPORATION + 2880 N. FIRST STREET + SAN JOSE CA 95134 + UNITED STATES + +00-E0-29 (hex) STANDARD MICROSYSTEMS CORP. +00E029 (base 16) STANDARD MICROSYSTEMS CORP. + 6 HUGHES + IRVINE CA 92718 + UNITED STATES + +00-E0-2A (hex) TANDBERG TELEVISION AS +00E02A (base 16) TANDBERG TELEVISION AS + PHILIP PEDERSENS V 20 + N-1324 LYSAKER + NORWAY + +00-E0-2B (hex) EXTREME NETWORKS +00E02B (base 16) EXTREME NETWORKS + 10460 BANDLEY DRIVE + CUPERINT0 CA 95014 + UNITED STATES + +00-E0-2C (hex) AST COMPUTER +00E02C (base 16) AST COMPUTER + 16215 ALTON PARKWAY + IRVINE CA 92718 + UNITED STATES + +00-E0-2D (hex) InnoMediaLogic, Inc. +00E02D (base 16) InnoMediaLogic, Inc. + 3653 CHEMIN CHAMBLY + LONGUEUIL, QUEBEC J4L J4L IN9 + CANADA + +00-E0-2E (hex) SPC ELECTRONICS CORPORATION +00E02E (base 16) SPC ELECTRONICS CORPORATION + 2-1-3 SHIBASAKI, CHOFU-SHI + TOKYO, 182 + JAPAN + +00-E0-2F (hex) MCNS HOLDINGS, L.P. +00E02F (base 16) MCNS HOLDINGS, L.P. + TCI, INC.-TECHNOLOGY VENTURES + P.O. BOX 5630 + DENVER CO 80217-5630 + UNITED STATES + +00-E0-30 (hex) MELITA INTERNATIONAL CORP. +00E030 (base 16) MELITA INTERNATIONAL CORP. + 5051 PEACHTREE CORNERS CIRCLE + NORCROSS GA 30092 + UNITED STATES + +00-E0-31 (hex) HAGIWARA ELECTRIC CO., LTD. +00E031 (base 16) HAGIWARA ELECTRIC CO., LTD. + 7, SHIMOKOFUKADA, ASADA-CHO + NISSHIN-SHI, AICHI 470-01 + JAPAN + +00-E0-32 (hex) MISYS FINANCIAL SYSTEMS, LTD. +00E032 (base 16) MISYS FINANCIAL SYSTEMS, LTD. + BUCKHOLT DRIVE, + WARNDON, WORCESTER WR49SR + UNITED KINGDOM + +00-E0-33 (hex) E.E.P.D. GmbH +00E033 (base 16) E.E.P.D. GmbH + ROEMER-STRASSE 4 + 85229 MARKT INDERSDORF + GERMANY + +00-E0-34 (hex) CISCO SYSTEMS, INC. +00E034 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-35 (hex) LOUGHBOROUGH SOUND IMAGES, PLC +00E035 (base 16) LOUGHBOROUGH SOUND IMAGES, PLC + LOUGHBOROUGH PARK, ASHBY R0AD + LOUGHBOROUGH, LESCESTERSHIRE LE11 + UNITED KINGDOM + +00-E0-36 (hex) PIONEER CORPORATION +00E036 (base 16) PIONEER CORPORATION + 2610 Hanazono 4-Chome + Tokorozawa-Shi + Saitama Prefecture, 359-8 + JAPAN + +00-E0-37 (hex) CENTURY CORPORATION +00E037 (base 16) CENTURY CORPORATION + WIZEM BLDG., 3F, 3-3-8-, UENO + TAITO-KU, TOKYO 101 + JAPAN + +00-E0-38 (hex) PROXIMA CORPORATION +00E038 (base 16) PROXIMA CORPORATION + 9440 CARROLL PARK DRIVE + SAN DIEGO CA 92121-2298 + UNITED STATES + +00-E0-39 (hex) PARADYNE CORP. +00E039 (base 16) PARADYNE CORP. + 8545 126TH AVENUE NORTH + LARGO FL 33773 + UNITED STATES + +00-E0-3A (hex) CABLETRON SYSTEMS, INC. +00E03A (base 16) CABLETRON SYSTEMS, INC. + 35 INDUSTRIAL WAY - BLDG. #36 + ROCHESTER NH 03867 + UNITED STATES + +00-E0-3B (hex) PROMINET CORPORATION +00E03B (base 16) PROMINET CORPORATION + 110 TURNPIKE RD. - STE. #208 + WESTBOROUGH MA 01581 + UNITED STATES + +00-E0-3C (hex) AdvanSys +00E03C (base 16) AdvanSys + 1150 RINGWOOD COURT + SAN JOSE CA 95131 + UNITED STATES + +00-E0-3D (hex) FOCON ELECTRONIC SYSTEMS A/S +00E03D (base 16) FOCON ELECTRONIC SYSTEMS A/S + DAMVANG, PO BOX 269 + DK-6400 SONDERBORG + DENMARK + +00-E0-3E (hex) ALFATECH, INC. +00E03E (base 16) ALFATECH, INC. + SHIN-OSAKA EITO BLDG. + 4-15-18 NISHINAKAJIMA, YODOGAWA-KU, + OSAKA + JAPAN + +00-E0-3F (hex) JATON CORPORATION +00E03F (base 16) JATON CORPORATION + 556 SOUTH MILPITAS BLVD. + MILPITAS CA 95035 + UNITED STATES + +00-E0-40 (hex) DeskStation Technology, Inc. +00E040 (base 16) DeskStation Technology, Inc. + 15729 COLLEGE BLVD. + LENEXA KS 66219 + UNITED STATES + +00-E0-41 (hex) CSPI +00E041 (base 16) CSPI + 43 Manning Rd. + Billerica MA 01821 + UNITED STATES + +00-E0-42 (hex) Pacom Systems Ltd. +00E042 (base 16) Pacom Systems Ltd. + UNIT 22 38/46 SOUTH ST. + RYDALMERE 2116 NSW + AUSTRALIA + +00-E0-43 (hex) VitalCom +00E043 (base 16) VitalCom + 15222 DEL AMO AVE. + TUSTIN CA 92780 + UNITED STATES + +00-E0-44 (hex) LSICS CORPORATION +00E044 (base 16) LSICS CORPORATION + 3-8-3 NINOMIYA, TSKUKUBA-SHI + IBARAGI-KEN, 305 + JAPAN + +00-E0-45 (hex) TOUCHWAVE, INC. +00E045 (base 16) TOUCHWAVE, INC. + 994 SAN ANTONIO RD. + PALO ALTO CA 94303 + UNITED STATES + +00-E0-46 (hex) BENTLY NEVADA CORP. +00E046 (base 16) BENTLY NEVADA CORP. + PO BOX 157 + MINDEN NV 89423 + UNITED STATES + +00-E0-47 (hex) INFOCUS SYSTEMS +00E047 (base 16) INFOCUS SYSTEMS + 27700B SW PARKWAY AVE. + WILLSONVILLE OR 97070 + UNITED STATES + +00-E0-48 (hex) SDL COMMUNICATIONS, INC. +00E048 (base 16) SDL COMMUNICATIONS, INC. + P.O. BOX 1303 + EASTON MA 02334 + UNITED STATES + +00-E0-49 (hex) MICROWI ELECTRONIC GmbH +00E049 (base 16) MICROWI ELECTRONIC GmbH + ZUSAMSTRASSE 8 + D 86165 AUGSBURG + GERMANY + +00-E0-4A (hex) ENHANCED MESSAGING SYSTEMS, INC +00E04A (base 16) ENHANCED MESSAGING SYSTEMS, INC + 250 WEST SOUTHLAKE BLVD. + SOUTHLAKE TX 76092 + UNITED STATES + +00-E0-4B (hex) JUMP INDUSTRIELLE COMPUTERTECHNIK GmbH +00E04B (base 16) JUMP INDUSTRIELLE COMPUTERTECHNIK GmbH + + VEILCHENGASSE 7 + D94469 DEGGENDORF + GERMANY + +00-E0-4C (hex) REALTEK SEMICONDUCTOR CORP. +00E04C (base 16) REALTEK SEMICONDUCTOR CORP. + 1F, NO. 11, INDUSTRY E. RD. IX + SCIENCE-BASED INDUSTRIAL PARK + HSINCHU 300 + TAIWAN, REPUBLIC OF CHINA + +00-E0-4D (hex) INTERNET INITIATIVE JAPAN, INC +00E04D (base 16) INTERNET INITIATIVE JAPAN, INC + 1-4, SANBAN-CHO, CHIYODA-KU + TOKYO 102 + JAPAN + +00-E0-4E (hex) SANYO DENKI CO., LTD. +00E04E (base 16) SANYO DENKI CO., LTD. + 812-3, Shimonogou, Ueda-Shi + Nagano 386-1211 + JAPAN + +00-E0-4F (hex) CISCO SYSTEMS, INC. +00E04F (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-50 (hex) EXECUTONE INFORMATION SYSTEMS, INC. +00E050 (base 16) EXECUTONE INFORMATION SYSTEMS, INC. + 478 WHEELERS FARMS ROAD + MILFORD CT 06460 + UNITED STATES + +00-E0-51 (hex) TALX CORPORATION +00E051 (base 16) TALX CORPORATION + 1850 BORMAN COURT + ST. LOUIS MO 63146 + UNITED STATES + +00-E0-52 (hex) FOUNDRY NETWORKS, INC. +00E052 (base 16) FOUNDRY NETWORKS, INC. + 680 W. MAUDE AVE. - STE. #3 + SUNNYVALE CA 94086 + UNITED STATES + +00-E0-53 (hex) CELLPORT LABS, INC. +00E053 (base 16) CELLPORT LABS, INC. + 885 ARAPAHOE AVE., + BOULDER CO 80302 + UNITED STATES + +00-E0-54 (hex) KODAI HITEC CO., LTD. +00E054 (base 16) KODAI HITEC CO., LTD. + 2-45 ONUMA HANYU CITY + SAITAMA.348 + JAPAN + +00-E0-55 (hex) INGENIERIA ELECTRONICA COMERCIAL INELCOM S.A. +00E055 (base 16) INGENIERIA ELECTRONICA COMERCIAL INELCOM S.A. + CL. PIQUER NO.3 + 28033 MADRID + SPAIN + +00-E0-56 (hex) HOLONTECH CORPORATION +00E056 (base 16) HOLONTECH CORPORATION + 2039 SAMARITAN DRIVE + SAN JOSE CA 95124 + UNITED STATES + +00-E0-57 (hex) HAN MICROTELECOM. CO., LTD. +00E057 (base 16) HAN MICROTELECOM. CO., LTD. + FASHION BD., 3RD FR, + 1194, DOONSAN 2 + DONG SEO-GU, TAEJON KOREA 302-173 + KOREA, REPUBLIC OF + +00-E0-58 (hex) PHASE ONE DENMARK A/S +00E058 (base 16) PHASE ONE DENMARK A/S + ROSKILDEVEJ 39 + DK-2000 FREDERIKSBERG + DENMARK + +00-E0-59 (hex) CONTROLLED ENVIRONMENTS, LTD. +00E059 (base 16) CONTROLLED ENVIRONMENTS, LTD. + 590 BERRY STREET + WINNEPEG R3H OR9 + CANADA + +00-E0-5A (hex) GALEA NETWORK SECURITY +00E05A (base 16) GALEA NETWORK SECURITY + 2 PLACE du COMMERCE - STE #320 + BROSSARD, QUEBEC J4W 2T8 + CANADA + +00-E0-5B (hex) WEST END SYSTEMS CORP. +00E05B (base 16) WEST END SYSTEMS CORP. + 39 WINNER'S CIRCLE DR., + ARNPRIOR, ONTARIO K7S 3G9 + CANADA + +00-E0-5C (hex) MATSUSHITA KOTOBUKI ELECTRONICS INDUSTRIES, LTD. +00E05C (base 16) MATSUSHITA KOTOBUKI ELECTRONICS INDUSTRIES, LTD. + 247, FUKUTAKE SAIJO + EHIME, 793 + JAPAN + +00-E0-5D (hex) UNITEC CO., LTD. +00E05D (base 16) UNITEC CO., LTD. + KISOGAWA-CHO ICHINOTORI 24 + HAGURI-GUN AICHI 493 + JAPAN + +00-E0-5E (hex) JAPAN AVIATION ELECTRONICS INDUSTRY, LTD. +00E05E (base 16) JAPAN AVIATION ELECTRONICS INDUSTRY, LTD. + + 3-1-1 MUSASHINO AKISHIMA-SHI + TOKYO 196 JAPAN + JAPAN + +00-E0-5F (hex) e-Net, Inc. +00E05F (base 16) e-Net, Inc. + 12325 HYMEADOW DRIVE + SUITE #2-200 + AUSTIN TX 78750 + UNITED STATES + +00-E0-60 (hex) SHERWOOD +00E060 (base 16) SHERWOOD + 21056 FORBES STREET + HAYWARD CA 94545 + UNITED STATES + +00-E0-61 (hex) EdgePoint Networks, Inc. +00E061 (base 16) EdgePoint Networks, Inc. + 2238 MARTIN AVENUE + SANTA CLARA CA 95050 + UNITED STATES + +00-E0-62 (hex) HOST ENGINEERING +00E062 (base 16) HOST ENGINEERING + 200 EAST MAIN STREET -STE.#700 + JOHNSON CITY TN 37604 + UNITED STATES + +00-E0-63 (hex) CABLETRON - YAGO SYSTEMS, INC. +00E063 (base 16) CABLETRON - YAGO SYSTEMS, INC. + 35 INDUSTRIAL WAY + P.O. BOX 5005 + ROCHESTER NH 03866-5005 + UNITED STATES + +00-E0-64 (hex) SAMSUNG ELECTRONICS +00E064 (base 16) SAMSUNG ELECTRONICS + 99 W. TASMAN DRIVE + SAN JOSE CA 95134 + UNITED STATES + +00-E0-65 (hex) OPTICAL ACCESS INTERNATIONAL +00E065 (base 16) OPTICAL ACCESS INTERNATIONAL + 500 WEST CUMMINGS PL. #3400 + WOBURN MA 01801 + UNITED STATES + +00-E0-66 (hex) ProMax Systems, Inc. +00E066 (base 16) ProMax Systems, Inc. + 16 TECHNOLOGY DRIVE--BLDG.#106 + IRVINE CA 92656 + UNITED STATES + +00-E0-67 (hex) eac AUTOMATION-CONSULTING GmbH +00E067 (base 16) eac AUTOMATION-CONSULTING GmbH + HERMSDORFER DAMM 222 + 73467 BERLIN + GERMANY + +00-E0-68 (hex) MERRIMAC SYSTEMS INC. +00E068 (base 16) MERRIMAC SYSTEMS INC. + 2144 MC COY ROAD + CARROLLTON TX 75006 + UNITED STATES + +00-E0-69 (hex) JAYCOR +00E069 (base 16) JAYCOR + 9775 TOWNE CENTRE DRIVE + SAN DIEGO CA 92121 + UNITED STATES + +00-E0-6A (hex) KAPSCH AG +00E06A (base 16) KAPSCH AG + WAGENSEILGASSE 1 + 1120-VIENNA + AUSTRIA + +00-E0-6B (hex) W&G SPECIAL PRODUCTS +00E06B (base 16) W&G SPECIAL PRODUCTS + SCEINCE PARK EINDHOVIN 5049 + 5692 EB SON + NETHERLANDS + +00-E0-6C (hex) AEP Systems International Ltd +00E06C (base 16) AEP Systems International Ltd + Focus 31, West Wing + Cleveland Road + Hemel Hemstead Herts England HP2 7BW + UNITED KINGDOM + +00-E0-6D (hex) COMPUWARE CORPORATION +00E06D (base 16) COMPUWARE CORPORATION + One Campus Martius + Detroit MI 48226 + UNITED STATES + +00-E0-6E (hex) FAR SYSTEMS S.p.A. +00E06E (base 16) FAR SYSTEMS S.p.A. + VIA F. ZENI 8 + 3868 ROVERETO (TN) + ITALY + +00-E0-6F (hex) Motorola, Inc. +00E06F (base 16) Motorola, Inc. + 2450 Walsh Ave + Santa Clara CA 95051 + UNITED STATES + +00-E0-70 (hex) DH TECHNOLOGY +00E070 (base 16) DH TECHNOLOGY + 3003 ROLLIE GATES DRIVE + PASO ROBLES CA 93446 + UNITED STATES + +00-E0-71 (hex) EPIS MICROCOMPUTER +00E071 (base 16) EPIS MICROCOMPUTER + 72458 ALBSTADT + LAUTLINGER STRASSE 147 + 72458 ALBSTADT + GERMANY + +00-E0-72 (hex) LYNK +00E072 (base 16) LYNK + RABIN BUILDING + TERADION INDUSTRIAL PARK + D.N. MISGAV 201 + ISRAEL + +00-E0-73 (hex) NATIONAL AMUSEMENT NETWORK, INC. +00E073 (base 16) NATIONAL AMUSEMENT NETWORK, INC. + 401 N. MICHIGAN AVENUE + CHICAGO IL 60611 + UNITED STATES + +00-E0-74 (hex) TIERNAN COMMUNICATIONS, INC. +00E074 (base 16) TIERNAN COMMUNICATIONS, INC. + 11025 ROSELLE ST. + SAN DIEGO CA 92121 + UNITED STATES + +00-E0-75 (hex) Verilink Corporation +00E075 (base 16) Verilink Corporation + 127 Jetplex Circle + Madison AL 35758 + UNITED STATES + +00-E0-76 (hex) DEVELOPMENT CONCEPTS, INC. +00E076 (base 16) DEVELOPMENT CONCEPTS, INC. + 1000 N. BROAD STREET + LANSDALE PA 19446 + UNITED STATES + +00-E0-77 (hex) WEBGEAR, INC. +00E077 (base 16) WEBGEAR, INC. + 1263 OAKMEAD PKWY + SUNNYVALE CA 94080 + UNITED STATES + +00-E0-78 (hex) BERKELEY NETWORKS +00E078 (base 16) BERKELEY NETWORKS + 683 RIVER OAKS PARKWAY + SAN JOSE CA 95134 + UNITED STATES + +00-E0-79 (hex) A.T.N.R. +00E079 (base 16) A.T.N.R. + BP 966 + 91976 COURTABOEUF + FRANCE + +00-E0-7A (hex) MIKRODIDAKT AB +00E07A (base 16) MIKRODIDAKT AB + Skiffervägen 48 + LUND SE22478 + SWEDEN + +00-E0-7B (hex) BAY NETWORKS +00E07B (base 16) BAY NETWORKS + 125 NAGOG PARK + ACTON MA 01720 + UNITED STATES + +00-E0-7C (hex) METTLER-TOLEDO, INC. +00E07C (base 16) METTLER-TOLEDO, INC. + 1150 DEARBORN DRIVE + WORTHINGTON OH 43085 + UNITED STATES + +00-E0-7D (hex) NETRONIX, INC. +00E07D (base 16) NETRONIX, INC. + 340 THOR PLACE + BREA CA 92821 + UNITED STATES + +00-E0-7E (hex) WALT DISNEY IMAGINEERING +00E07E (base 16) WALT DISNEY IMAGINEERING + 1401 FLOWER ST. + GLENDALE CA 91221 + UNITED STATES + +00-E0-7F (hex) LOGISTISTEM s.r.l. +00E07F (base 16) LOGISTISTEM s.r.l. + VIA PANCIATICHI 94/18 + 50127 FIRENZE + ITALY + +00-E0-80 (hex) CONTROL RESOURCES CORPORATION +00E080 (base 16) CONTROL RESOURCES CORPORATION + 16-00 POLLITT DRIVE + FAIR LAWN NJ 07410 + UNITED STATES + +00-E0-81 (hex) TYAN COMPUTER CORP. +00E081 (base 16) TYAN COMPUTER CORP. + 1753 S. MAIN STREET + MILPITAS CA 95035 + UNITED STATES + +00-E0-82 (hex) ANERMA +00E082 (base 16) ANERMA + SCHAAPSDRIES 25 + 2260 WESTERLO + BELGIUM + +00-E0-83 (hex) JATO TECHNOLOGIES, INC. +00E083 (base 16) JATO TECHNOLOGIES, INC. + 505 EAST HUNTLAND DR. STE #550 + AUSTIN TX 78752 + UNITED STATES + +00-E0-84 (hex) COMPULITE R&D +00E084 (base 16) COMPULITE R&D + 3 HAROSHET STR. NEW IND. ZONE + RAMAT-HASHARON 47279 + ISRAEL + +00-E0-85 (hex) GLOBAL MAINTECH, INC. +00E085 (base 16) GLOBAL MAINTECH, INC. + 6468 CITY WEST PARKWAY + EDEN PRAIRIE MN 55344 + UNITED STATES + +00-E0-86 (hex) CYBEX COMPUTER PRODUCTS +00E086 (base 16) CYBEX COMPUTER PRODUCTS + 4912 RESEARCH DRIVE + HUNTSVILLE AL 35805 + UNITED STATES + +00-E0-87 (hex) LeCroy - Networking Productions Division +00E087 (base 16) LeCroy - Networking Productions Division + 25 BURLINGTON MALL ROAD + BURLINGTON MA 01803 + UNITED STATES + +00-E0-88 (hex) LTX CORPORATION +00E088 (base 16) LTX CORPORATION + 145 UNIVERSITY AVENUE + WESTWOOD MA 02090-2306 + UNITED STATES + +00-E0-89 (hex) ION Networks, Inc. +00E089 (base 16) ION Networks, Inc. + 1551 South Washington Ave. + Piscataway NJ 08854 + UNITED STATES + +00-E0-8A (hex) GEC AVERY, LTD. +00E08A (base 16) GEC AVERY, LTD. + FOUNDRY LANE + SMETHWICK, WARLEY + WEST MIDLANDS, B66 2LP England + UNITED KINGDOM + +00-E0-8B (hex) QLogic Corp. +00E08B (base 16) QLogic Corp. + 26600 Laguna Hills Dr. + Aliso Viejo CA 92656 + UNITED STATES + +00-E0-8C (hex) NEOPARADIGM LABS, INC. +00E08C (base 16) NEOPARADIGM LABS, INC. + 1735 N. FIRST ST., STE #108 + SAN JOSE CA 95112 + UNITED STATES + +00-E0-8D (hex) PRESSURE SYSTEMS, INC. +00E08D (base 16) PRESSURE SYSTEMS, INC. + 34 RESEARCH DRIVE + HAMPTON VA 23666 + UNITED STATES + +00-E0-8E (hex) UTSTARCOM +00E08E (base 16) UTSTARCOM + 33 WOOD AVE. SOUTH + ISELIN NJ 08830 + UNITED STATES + +00-E0-8F (hex) CISCO SYSTEMS, INC. +00E08F (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-90 (hex) BECKMAN LAB. AUTOMATION DIV. +00E090 (base 16) BECKMAN LAB. AUTOMATION DIV. + 90 BOROLINE ROAD + ALLENDALE NJ 07401 + UNITED STATES + +00-E0-91 (hex) LG ELECTRONICS, INC. +00E091 (base 16) LG ELECTRONICS, INC. + 16, WOOMYEON-DONG, + SEOCHO-GU, SEOUL, 137-140, + KOREA, REPUBLIC OF + +00-E0-92 (hex) ADMTEK INCORPORATED +00E092 (base 16) ADMTEK INCORPORATED + 1962 ZANKER ROAD + SAN JOSE CA 95112 + UNITED STATES + +00-E0-93 (hex) ACKFIN NETWORKS +00E093 (base 16) ACKFIN NETWORKS + 575 N. PASTORIA AVE. + SUNNYVALE CA 94086 + UNITED STATES + +00-E0-94 (hex) OSAI SRL +00E094 (base 16) OSAI SRL + VIA TORINO + 603-IVREA (TO) + ITALY + +00-E0-95 (hex) ADVANCED-VISION TECHNOLGIES CORP. +00E095 (base 16) ADVANCED-VISION TECHNOLGIES CORP. + 8F-1, 87 SECTION 3, CHUNG YANG RD, + Tu Cheng Taipei + TAIWAN, REPUBLIC OF CHINA + +00-E0-96 (hex) SHIMADZU CORPORATION +00E096 (base 16) SHIMADZU CORPORATION + 1, NISHINOKYO-KUWABARACHO + NAKAGYO-KU, KYOTO 604 + JAPAN + +00-E0-97 (hex) CARRIER ACCESS CORPORATION +00E097 (base 16) CARRIER ACCESS CORPORATION + 5395 PEARL PARKWAY + BOULDER CO 80301 + UNITED STATES + +00-E0-98 (hex) AboCom Systems, Inc. +00E098 (base 16) AboCom Systems, Inc. + 12F-3, NO. 333, SEC. 1 + GUAN-FU ROAD + HSIN-CHU + TAIWAN, REPUBLIC OF CHINA + +00-E0-99 (hex) SAMSON AG +00E099 (base 16) SAMSON AG + WEISMULLERSTR. 3 + D-60314 FRANKFURT + GERMANY + +00-E0-9A (hex) POSITRON INDUSTRIES, INC. +00E09A (base 16) POSITRON INDUSTRIES, INC. + 5101 BUCHAN STREET + MONTREAL, QUEBEC H4P-2R9 + CANADA + +00-E0-9B (hex) ENGAGE NETWORKS, INC. +00E09B (base 16) ENGAGE NETWORKS, INC. + 316 N. MILWAUKEE ST., STE.#214 + MILWAUKEE WI 53202 + UNITED STATES + +00-E0-9C (hex) MII +00E09C (base 16) MII + LE parc du MOULIN + 2, grande rue Prolongee + F95650 PUISEUX-POTOISE + FRANCE + +00-E0-9D (hex) SARNOFF CORPORATION +00E09D (base 16) SARNOFF CORPORATION + CN 5300 + PRINCETON NJ 08543-5300 + UNITED STATES + +00-E0-9E (hex) QUANTUM CORPORATION +00E09E (base 16) QUANTUM CORPORATION + 500 McCarthy Boulevard + Milpitas CA 95035 + UNITED STATES + +00-E0-9F (hex) PIXEL VISION +00E09F (base 16) PIXEL VISION + 43 NAGOG PARK + ACTON MA 01720 + UNITED STATES + +00-E0-A0 (hex) WILTRON CO. +00E0A0 (base 16) WILTRON CO. + 490 JARVIS DRIVE + MORGAN HILL CA 95037 + UNITED STATES + +00-E0-A1 (hex) HIMA PAUL HILDEBRANDT GmbH Co. KG +00E0A1 (base 16) HIMA PAUL HILDEBRANDT GmbH Co. KG + + POSTBOX 1261 + D-68777 BRUEHL NEAR MANNHEIM + GERMANY + +00-E0-A2 (hex) MICROSLATE INC. +00E0A2 (base 16) MICROSLATE INC. + 9625 IGNACE - STE. D + BROSSARD QC J4Y 2P3 + CANADA + +00-E0-A3 (hex) CISCO SYSTEMS, INC. +00E0A3 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-A4 (hex) ESAOTE S.p.A. +00E0A4 (base 16) ESAOTE S.p.A. + via di CACIOLLE, 15 + 50127 FLORENCE + ITALY + +00-E0-A5 (hex) ComCore Semiconductor, Inc. +00E0A5 (base 16) ComCore Semiconductor, Inc. + 4505 LAS VIRGENES, Suite 202 + CALABASAS CA 91302 + UNITED STATES + +00-E0-A6 (hex) TELOGY NETWORKS, INC. +00E0A6 (base 16) TELOGY NETWORKS, INC. + 20250 CENTURY BLVD. + GERMANTOWN MD 20874 + UNITED STATES + +00-E0-A7 (hex) IPC INFORMATION SYSTEMS, INC. +00E0A7 (base 16) IPC INFORMATION SYSTEMS, INC. + METRO CENTER + ONE STATION PLACE + STAMFORD CT 06907 + UNITED STATES + +00-E0-A8 (hex) SAT GmbH & Co. +00E0A8 (base 16) SAT GmbH & Co. + RUTHNERGASSE 1 + VIENNA A-1210 + AUSTRIA + +00-E0-A9 (hex) FUNAI ELECTRIC CO., LTD. +00E0A9 (base 16) FUNAI ELECTRIC CO., LTD. + 7-1, NAKAGAITO 7-CHOME, DAITO + OSAKA 574 + JAPAN + +00-E0-AA (hex) ELECTROSONIC LTD. +00E0AA (base 16) ELECTROSONIC LTD. + HAWLEY MILL, HAWLEY RD. + DARTFORD, KENT DA2 7SY + UNITED KINGDOM + +00-E0-AB (hex) DIMAT S.A. +00E0AB (base 16) DIMAT S.A. + C/BISCAIA 383 3 + 08023 BARCELONA + SPAIN + +00-E0-AC (hex) MIDSCO, INC. +00E0AC (base 16) MIDSCO, INC. + 710 ROUTE 46 EAST + FAIRFIELD NJ 07004 + UNITED STATES + +00-E0-AD (hex) EES TECHNOLOGY, LTD. +00E0AD (base 16) EES TECHNOLOGY, LTD. + 25 EASTWAYS + WITHAM, ESSEX, CM8 3AL + UNITED KINGDOM + +00-E0-AE (hex) XAQTI CORPORATION +00E0AE (base 16) XAQTI CORPORATION + 1630 OAKLAND RD. #A-214 + SAN JOSE CA 95131 + UNITED STATES + +00-E0-AF (hex) GENERAL DYNAMICS INFORMATION SYSTEMS +00E0AF (base 16) GENERAL DYNAMICS INFORMATION SYSTEMS + COMPUTING DEVICES, LTD. + 3190 FAIRVIEW PA + FALLS CHURCH VA 22042-4523 + UNITED STATES + +00-E0-B0 (hex) CISCO SYSTEMS, INC. +00E0B0 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-B1 (hex) Alcatel-Lucent, Enterprise Business Group +00E0B1 (base 16) Alcatel-Lucent, Enterprise Business Group + 26801 West Agoura Road + Calabasas CA 91301 + UNITED STATES + +00-E0-B2 (hex) TELMAX COMMUNICATIONS CORP. +00E0B2 (base 16) TELMAX COMMUNICATIONS CORP. + 46515 LANDING PARKWAY + FREMONT CA 94538 + UNITED STATES + +00-E0-B3 (hex) EtherWAN Systems, Inc. +00E0B3 (base 16) EtherWAN Systems, Inc. + 14 HUGHES, STE.B-105 + IRVINE CA 92618 + UNITED STATES + +00-E0-B4 (hex) TECHNO SCOPE CO., LTD. +00E0B4 (base 16) TECHNO SCOPE CO., LTD. + 13-6-7 KISHIMATI URAWASI + SAITAMA 336 + JAPAN + +00-E0-B5 (hex) ARDENT COMMUNICATIONS CORP. +00E0B5 (base 16) ARDENT COMMUNICATIONS CORP. + 3801 ZANKER ROAD, Suite A + SAN JOSE CA 95134 + UNITED STATES + +00-E0-B6 (hex) Entrada Networks +00E0B6 (base 16) Entrada Networks + 9020 JUNCTION DRIVE + ANNAPOLIS JUNCTION MD 20701 + UNITED STATES + +00-E0-B7 (hex) PI GROUP, LTD. +00E0B7 (base 16) PI GROUP, LTD. + MILTON HALL, CHURCH LANE + MILTON, CAMBRIDGE CBA 6AB + UNITED KINGDOM + +00-E0-B8 (hex) GATEWAY 2000 +00E0B8 (base 16) GATEWAY 2000 + 610 GATEWAY DRIVE + N. SIOUX CITY SD 57049 + UNITED STATES + +00-E0-B9 (hex) BYAS SYSTEMS +00E0B9 (base 16) BYAS SYSTEMS + 2250 MONROE STREET, #371 + SANTA CLARA CA 95050 + UNITED STATES + +00-E0-BA (hex) BERGHOF AUTOMATIONSTECHNIK GmbH +00E0BA (base 16) BERGHOF AUTOMATIONSTECHNIK GmbH + HARRET STRASSE 1 + D 72800 ENINGEN + GERMANY + +00-E0-BB (hex) NBX CORPORATION +00E0BB (base 16) NBX CORPORATION + 100 BRICKSTONE SQUARE + ANDOVER MA 01810 + UNITED STATES + +00-E0-BC (hex) SYMON COMMUNICATIONS, INC. +00E0BC (base 16) SYMON COMMUNICATIONS, INC. + 10701 CORPORATE DR.-STE. #290 + STAFFORD TX 77477 + UNITED STATES + +00-E0-BD (hex) INTERFACE SYSTEMS, INC. +00E0BD (base 16) INTERFACE SYSTEMS, INC. + 5855 INTERFACE DRIVE + ANN ARBOR MI 48103-9515 + UNITED STATES + +00-E0-BE (hex) GENROCO INTERNATIONAL, INC. +00E0BE (base 16) GENROCO INTERNATIONAL, INC. + 255 ENDERS COURT + SLINGER WI 53086 + UNITED STATES + +00-E0-BF (hex) TORRENT NETWORKING TECHNOLOGIES CORP. +00E0BF (base 16) TORRENT NETWORKING TECHNOLOGIES CORP. + 8181 PROFESSIONAL PLACE + SUITE #160 + LANDOVER MD 20785 + UNITED STATES + +00-E0-C0 (hex) SEIWA ELECTRIC MFG. CO., LTD. +00E0C0 (base 16) SEIWA ELECTRIC MFG. CO., LTD. + 86 TARADA SHIN-IKE, + JOYO, + KYOTO PREFECTURE + JAPAN + +00-E0-C1 (hex) MEMOREX TELEX JAPAN, LTD. +00E0C1 (base 16) MEMOREX TELEX JAPAN, LTD. + YAESUGUCHI KAIKAN, 1-7-20 + YAESU, CHUO-KU + TOKYO 103 + JAPAN + +00-E0-C2 (hex) NECSY S.p.A. +00E0C2 (base 16) NECSY S.p.A. + VIA LISBONA 28 + 35020 PADOVA + ITALY + +00-E0-C3 (hex) SAKAI SYSTEM DEVELOPMENT CORP. +00E0C3 (base 16) SAKAI SYSTEM DEVELOPMENT CORP. + PORTUS CENTER BLD., 4-45-1 + EBISUJIMA-CHO, SAKAI-CITY + OSAKA-FU, 590 + JAPAN + +00-E0-C4 (hex) HORNER ELECTRIC, INC. +00E0C4 (base 16) HORNER ELECTRIC, INC. + 1521 E. WASHINGTON ST. + INDIANAPOLIS IN 46201 + UNITED STATES + +00-E0-C5 (hex) BCOM ELECTRONICS INC. +00E0C5 (base 16) BCOM ELECTRONICS INC. + 8 FL, NO. 64, AN HO ROAD, SEC. 2 + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-E0-C6 (hex) LINK2IT, L.L.C. +00E0C6 (base 16) LINK2IT, L.L.C. + 4256 BECK AVENUE + STUDIO CITY CA 91604 + UNITED STATES + +00-E0-C7 (hex) EUROTECH SRL +00E0C7 (base 16) EUROTECH SRL + VIA JACOPO LINUSSIO 1 + 33030 AMAROO (UD) + ITALY + +00-E0-C8 (hex) VIRTUAL ACCESS, LTD. +00E0C8 (base 16) VIRTUAL ACCESS, LTD. + WOODSIDE HOUSE, WINKFIELD, + WINDSOR, BERKSHIRE SL4 2DX ENGLAND + UNITED KINGDOM + +00-E0-C9 (hex) AutomatedLogic Corporation +00E0C9 (base 16) AutomatedLogic Corporation + 1150 ROBERTS BOULEVARD + KENNESAW GA 30144-3618 + UNITED STATES + +00-E0-CA (hex) BEST DATA PRODUCTS +00E0CA (base 16) BEST DATA PRODUCTS + 21800 NORDHOFF STREET + CHATSWORTH CA 91311 + UNITED STATES + +00-E0-CB (hex) RESON, INC. +00E0CB (base 16) RESON, INC. + 300 LOPEZ ROAD + GOLETA CA 93117 + UNITED STATES + +00-E0-CC (hex) HERO SYSTEMS, LTD. +00E0CC (base 16) HERO SYSTEMS, LTD. + THE BARNES, COOMBELANDS LANE, + ADDLESTONE, WEYBRIDGE + SURREY KT15 1HY England + UNITED KINGDOM + +00-E0-CD (hex) SENSIS CORPORATION +00E0CD (base 16) SENSIS CORPORATION + 5793 WIDEWATERS PARKWAY + DEWITT NY 13214 + UNITED STATES + +00-E0-CE (hex) ARN +00E0CE (base 16) ARN + 51, RUE GASTON LAURIAU + F-93512 MONTREUIL CEDEX + FRANCE + +00-E0-CF (hex) INTEGRATED DEVICE TECHNOLOGY, INC. +00E0CF (base 16) INTEGRATED DEVICE TECHNOLOGY, INC. + + 2975 STENDER WAY, M/S J-019 + SANTA CLARA CA 95054 + UNITED STATES + +00-E0-D0 (hex) NETSPEED, INC. +00E0D0 (base 16) NETSPEED, INC. + 12303 TECHNOLOGY BLVD. + AUSTIN TX 78727 + UNITED STATES + +00-E0-D1 (hex) TELSIS LIMITED +00E0D1 (base 16) TELSIS LIMITED + 16 BARNES WALLACE ROAD + FAREHAM, HAMPSHIRE PO15 5TT ENGLAND + UNITED KINGDOM + +00-E0-D2 (hex) VERSANET COMMUNICATIONS, INC. +00E0D2 (base 16) VERSANET COMMUNICATIONS, INC. + 628 N. DIAMOND BAR BLVD. + DIAMOND BAR CA 91765 + UNITED STATES + +00-E0-D3 (hex) DATENTECHNIK GmbH +00E0D3 (base 16) DATENTECHNIK GmbH + THERESIANUMGASSE 11 + A-1040 WIEN + AUSTRIA + +00-E0-D4 (hex) EXCELLENT COMPUTER +00E0D4 (base 16) EXCELLENT COMPUTER + 551, M.K.N. ROAD + ALANDUR, CHENNAI 600016 + INDIA + +00-E0-D5 (hex) ARCXEL TECHNOLOGIES, INC. +00E0D5 (base 16) ARCXEL TECHNOLOGIES, INC. + 2691 RICHTER AVE.- STE.#106 + IRVINE CA 92606 + UNITED STATES + +00-E0-D6 (hex) COMPUTER & COMMUNICATION RESEARCH LAB. +00E0D6 (base 16) COMPUTER & COMMUNICATION RESEARCH LAB. + + 195 SEC.4, CHUNG HSING RD + CHUTUNG, HSINCHU + TAIWAN, REPUBLIC OF CHINA + +00-E0-D7 (hex) SUNSHINE ELECTRONICS, INC. +00E0D7 (base 16) SUNSHINE ELECTRONICS, INC. + 46560 FREMONT BLVD. -STE. #113 + FREMONT CA 94538 + UNITED STATES + +00-E0-D8 (hex) LANBit Computer, Inc. +00E0D8 (base 16) LANBit Computer, Inc. + 12F, 552 CHUNG HSIAO E., RD. + SEC. 5, TAIPEI 110 + TAIWAN, REPUBLIC OF CHINA + +00-E0-D9 (hex) TAZMO CO., LTD. +00E0D9 (base 16) TAZMO CO., LTD. + 6186 KINOKO, IBARA-SHI + OKAYAMA 715 + JAPAN + +00-E0-DA (hex) Alcatel North America ESD +00E0DA (base 16) Alcatel North America ESD + 26801 West Agoura Road + Calabasas CA 91301 + UNITED STATES + +00-E0-DB (hex) ViaVideo Communications, Inc. +00E0DB (base 16) ViaVideo Communications, Inc. + 8900 SHOAL CREEK BLVD. + BLDG. #300 + AUSTIN TX 78757 + UNITED STATES + +00-E0-DC (hex) NEXWARE CORP. +00E0DC (base 16) NEXWARE CORP. + 825 STEWART DR., STE #4 + SUNNYVALE CA 94086 + UNITED STATES + +00-E0-DD (hex) ZENITH ELECTRONICS CORPORATION +00E0DD (base 16) ZENITH ELECTRONICS CORPORATION + 1000 MILWAUKEE AVENUE + GLENVIEW IL 60025 + UNITED STATES + +00-E0-DE (hex) DATAX NV +00E0DE (base 16) DATAX NV + RINGLAAN 51 + B-2600 BERCHEM + BELGIUM + +00-E0-DF (hex) KE KOMMUNIKATIONS-ELECTRONIK +00E0DF (base 16) KE KOMMUNIKATIONS-ELECTRONIK + KABELKAMP 20 + 30179 HANNOVER + GERMANY + +00-E0-E0 (hex) SI ELECTRONICS, LTD. +00E0E0 (base 16) SI ELECTRONICS, LTD. + 28-16, SHIMOMARUKO 2-CHOME, + TOKYO 146 + JAPAN + +00-E0-E1 (hex) G2 NETWORKS, INC. +00E0E1 (base 16) G2 NETWORKS, INC. + 142 SO. SANTA CRUZ AVE. + LOS GATOS CA 95030-6702 + UNITED STATES + +00-E0-E2 (hex) INNOVA CORP. +00E0E2 (base 16) INNOVA CORP. + 3325 SOUTH 116TH STREET + SEATTLE WA 98168 + UNITED STATES + +00-E0-E3 (hex) SK-ELEKTRONIK GmbH +00E0E3 (base 16) SK-ELEKTRONIK GmbH + HEMMELRATHERWEG 201 + 51377 LEVERKUSEN + GERMANY + +00-E0-E4 (hex) FANUC ROBOTICS NORTH AMERICA, Inc. +00E0E4 (base 16) FANUC ROBOTICS NORTH AMERICA, Inc. + 3900 W. HAMLIN RD. + ROCHESTER HILLS MI 48309-3253 + UNITED STATES + +00-E0-E5 (hex) CINCO NETWORKS, INC. +00E0E5 (base 16) CINCO NETWORKS, INC. + 6601 KOLL CENTER PARK WAY + SUITE #140 + PLEASANTON CA 94566 + UNITED STATES + +00-E0-E6 (hex) INCAA DATACOM B.V. +00E0E6 (base 16) INCAA DATACOM B.V. + P.O. BOX 211 + 7300 AE APELDOORN + NETHERLANDS + +00-E0-E7 (hex) RAYTHEON E-SYSTEMS, INC. +00E0E7 (base 16) RAYTHEON E-SYSTEMS, INC. + 1301 E. COLLINS + RICHARDSON TX 75081 + UNITED STATES + +00-E0-E8 (hex) GRETACODER Data Systems AG +00E0E8 (base 16) GRETACODER Data Systems AG + ALTHARDSTRASSE 150 + CH-8105 REGENSDORF + SWITZERLAND + +00-E0-E9 (hex) DATA LABS, INC. +00E0E9 (base 16) DATA LABS, INC. + 444 NORTH FREDERICK AVE. + SUITE #240 + GAITHERSBURG MD 20877 + UNITED STATES + +00-E0-EA (hex) INNOVAT COMMUNICATIONS, INC. +00E0EA (base 16) INNOVAT COMMUNICATIONS, INC. + 1257 N. PLANO ROAD + RICHARDSON TX 75081 + UNITED STATES + +00-E0-EB (hex) DIGICOM SYSTEMS, INCORPORATED +00E0EB (base 16) DIGICOM SYSTEMS, INCORPORATED + 188 TOPAZ STREET + MILPITAS CA 95035 + UNITED STATES + +00-E0-EC (hex) CELESTICA INC. +00E0EC (base 16) CELESTICA INC. + 844 DON MILLS ROAD + NORTH YORK ONTARIO M3C 1V7 + CANADA + +00-E0-ED (hex) SILICOM, LTD. +00E0ED (base 16) SILICOM, LTD. + 8 HANAGER ST. + P.O. BOX 2164 + KFAR-SAVA 44000 + ISRAEL + +00-E0-EE (hex) MAREL HF +00E0EE (base 16) MAREL HF + Austurhraun 9 + Gardabaer 210 + ICELAND + +00-E0-EF (hex) DIONEX +00E0EF (base 16) DIONEX + PO BOX 3603 + SUNNYVALE CA 94088-3603 + UNITED STATES + +00-E0-F0 (hex) ABLER TECHNOLOGY, INC. +00E0F0 (base 16) ABLER TECHNOLOGY, INC. + 4F, NO. 54 SEC. 4 + MIN-SHENG E. RD. + TAIPEI + TAIWAN, REPUBLIC OF CHINA + +00-E0-F1 (hex) THAT CORPORATION +00E0F1 (base 16) THAT CORPORATION + 734 FOREST STREET + MARLBOROUGH MA 01752 + UNITED STATES + +00-E0-F2 (hex) ARLOTTO COMNET, INC. +00E0F2 (base 16) ARLOTTO COMNET, INC. + 7F-4,55,TUNG-KUANG ROAD + HSIN-CHU, 300 + TAIWAN, REPUBLIC OF CHINA + +00-E0-F3 (hex) WebSprint Communications, Inc. +00E0F3 (base 16) WebSprint Communications, Inc. + 3026 SCOTT BLVD. + SANTA CLARA CA 95054 + UNITED STATES + +00-E0-F4 (hex) INSIDE Technology A/S +00E0F4 (base 16) INSIDE Technology A/S + VENLIGHEDSVEJ 6 + DK-2970 HOERSHOLM + DENMARK + +00-E0-F5 (hex) TELES AG +00E0F5 (base 16) TELES AG + DOVESTR. 2-4 + 10587 BERLIN + GERMANY + +00-E0-F6 (hex) DECISION EUROPE +00E0F6 (base 16) DECISION EUROPE + 3, rue de Lattre de Tassigny + 85170 SAINT DENIS LA CHEVASSE + FRANCE + +00-E0-F7 (hex) CISCO SYSTEMS, INC. +00E0F7 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-F8 (hex) DICNA CONTROL AB +00E0F8 (base 16) DICNA CONTROL AB + STENYXEGATAN 21 C + 213 76 MALMOE + SWEDEN + +00-E0-F9 (hex) CISCO SYSTEMS, INC. +00E0F9 (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-FA (hex) TRL TECHNOLOGY, LTD. +00E0FA (base 16) TRL TECHNOLOGY, LTD. + SHANNON WAY, ASHCHURCH, + TEWKESBURY, GLOS. GL20 8ND + UNITED KINGDOM + +00-E0-FB (hex) LEIGHTRONIX, INC. +00E0FB (base 16) LEIGHTRONIX, INC. + 2330 JARCO DR. + HOLT MI 48842 + UNITED STATES + +00-E0-FC (hex) HUAWEI TECHNOLOGIES CO., LTD. +00E0FC (base 16) HUAWEI TECHNOLOGIES CO., LTD. + KEFA ROAD, SCIENCE-BASED INDUSTRIAL PARK + NANSHAN DISTRICT, + SHENZHEN 518057 + CHINA + +00-E0-FD (hex) A-TREND TECHNOLOGY CO., LTD. +00E0FD (base 16) A-TREND TECHNOLOGY CO., LTD. + 10F, NO. 75, HSIN TAI WU RD., + SEC. 1, HSI CHIH, + TAIPEI HSIEN 221 + TAIWAN, REPUBLIC OF CHINA + +00-E0-FE (hex) CISCO SYSTEMS, INC. +00E0FE (base 16) CISCO SYSTEMS, INC. + 170 W. TASMAN DRIVE + SAN JOSE CA 95134-1706 + UNITED STATES + +00-E0-FF (hex) SECURITY DYNAMICS TECHNOLOGIES, Inc. +00E0FF (base 16) SECURITY DYNAMICS TECHNOLOGIES, Inc. + 20 CROSBY DRIVE + BEDFORD MA 01730 + UNITED STATES + +00-E6-D3 (hex) NIXDORF COMPUTER CORP. +00E6D3 (base 16) NIXDORF COMPUTER CORP. + 2520 MISSION COLLEGE ROAD + SANTA CLARA CA 95054 + UNITED STATES + +02-07-01 (hex) RACAL-DATACOM +020701 (base 16) RACAL-DATACOM + LAN INTERNETWORKING DIVISION + 155 SWANSON ROAD + BOXBOROUGH MA 01719 + UNITED STATES + +02-1C-7C (hex) PERQ SYSTEMS CORPORATION +021C7C (base 16) PERQ SYSTEMS CORPORATION + 2600 LIBERTY AVENUE + P.O. BOX 2600 + PITTSBURGH PA 15230 + UNITED STATES + +02-60-86 (hex) LOGIC REPLACEMENT TECH. LTD. +026086 (base 16) LOGIC REPLACEMENT TECH. LTD. + 14 ARKWRIGHT ROAD + READING BERKS RG2OLS + UNITED KINGDOM + UNITED KINGDOM + +02-60-8C (hex) 3COM CORPORATION +02608C (base 16) 3COM CORPORATION + 2081 N. SHORLINE BLVD. + MOUNTAIN VIEW CA 94043 + UNITED STATES + +02-70-01 (hex) RACAL-DATACOM +027001 (base 16) RACAL-DATACOM + LAN INTERNETWORKING DIVISION + 155 SWANSON ROAD + BOXBOROUGH MA 01719 + UNITED STATES + +02-70-B0 (hex) M/A-COM INC. COMPANIES +0270B0 (base 16) M/A-COM INC. COMPANIES + 11717 EXPLORATION LANE + GERMANTOWN MD 20767 + UNITED STATES + +02-70-B3 (hex) DATA RECALL LTD +0270B3 (base 16) DATA RECALL LTD + SONDES PLACE + DORKING SURREY RH4 3EF + UNITED KINGDOM + UNITED KINGDOM + +02-9D-8E (hex) CARDIAC RECORDERS INC. +029D8E (base 16) CARDIAC RECORDERS INC. + 34 SCARBORO RD + LONDON N4 4L U + UNITED KINGDOM + UNITED KINGDOM + +02-AA-3C (hex) OLIVETTI TELECOMM SPA (OLTECO) +02AA3C (base 16) OLIVETTI TELECOMM SPA (OLTECO) + 20300 STEVENS CREEK BLVD. + CUPERTINO CA 95014 + UNITED STATES + +02-BB-01 (hex) OCTOTHORPE CORP. +02BB01 (base 16) OCTOTHORPE CORP. + 285 WEST GREEN STREET + PASADENA CA 91105 + UNITED STATES + +02-C0-8C (hex) 3COM CORPORATION +02C08C (base 16) 3COM CORPORATION + 5400 BAYFRONT PLAZA + P.O. BOX 58145 + SANTA CLARA CA 95052 + UNITED STATES + +02-CF-1C (hex) COMMUNICATION MACHINERY CORP. +02CF1C (base 16) COMMUNICATION MACHINERY CORP. + 1226 ANACAPA + SANTA BARBARA CA 93101 + UNITED STATES + +02-E6-D3 (hex) NIXDORF COMPUTER CORPORATION +02E6D3 (base 16) NIXDORF COMPUTER CORPORATION + NIXDORF TECHNOLOGY CENTER + 2520 MISSION COLLEGE BLVD + SANTA CLARA CA 95054 + UNITED STATES + +04-0A-E0 (hex) XMIT AG COMPUTER NETWORKS +040AE0 (base 16) XMIT AG COMPUTER NETWORKS + 11 AVENUE DE BAUMETTES + 1020 RENANS + SWITZERLAND + SWITZERLAND + +04-E0-C4 (hex) TRIUMPH-ADLER AG +04E0C4 (base 16) TRIUMPH-ADLER AG + HUNDINGSTRABE 11B + 8500 NURNBURG 80 + GERMANY + GERMANY + +08-00-01 (hex) COMPUTERVISION CORPORATION +080001 (base 16) COMPUTERVISION CORPORATION + 14 CROSBY DRIVE MS 5-1 + BEDFORD MA 01730 + UNITED STATES + +08-00-02 (hex) BRIDGE COMMUNICATIONS INC. +080002 (base 16) BRIDGE COMMUNICATIONS INC. + 2081 STIERLING ROAD + MOUNTAIN VIEW CA 94043 + UNITED STATES + +08-00-03 (hex) ADVANCED COMPUTER COMM. +080003 (base 16) ADVANCED COMPUTER COMM. + 720 SANTA BARBARA ST. + SANTA BARBARA CA 93101 + UNITED STATES + +08-00-04 (hex) CROMEMCO INCORPORATED +080004 (base 16) CROMEMCO INCORPORATED + 280 BERNARDO AVENUE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +08-00-05 (hex) SYMBOLICS INC. +080005 (base 16) SYMBOLICS INC. + 257 VASSAR STREET + CAMBRIDGE MA 02139 + UNITED STATES + +08-00-06 (hex) SIEMENS AG +080006 (base 16) SIEMENS AG + Siemens IT Solutions and Services, SIS GO GIO QS, + POB 2353 + Fuerth 90713 + GERMANY + +08-00-07 (hex) APPLE COMPUTER INC. +080007 (base 16) APPLE COMPUTER INC. + 20650 VALLEY GREEN DRIVE + CUPERTINO CA 95014 + UNITED STATES + +08-00-08 (hex) BOLT BERANEK AND NEWMAN INC. +080008 (base 16) BOLT BERANEK AND NEWMAN INC. + 70 FAWCETT STREET + CAMBRIDGE MA 02138 + UNITED STATES + +08-00-09 (hex) HEWLETT PACKARD +080009 (base 16) HEWLETT PACKARD + ENTERPRISE SYSTEMS TECH.CENTER + 11000 WOLFE ROAD + CUPERTINO CA 95014 + UNITED STATES + +08-00-0A (hex) NESTAR SYSTEMS INCORPORATED +08000A (base 16) NESTAR SYSTEMS INCORPORATED + 2585 EAST BAYSHORE ROAD + PALO ALTO CA 94303 + UNITED STATES + +08-00-0B (hex) UNISYS CORPORATION +08000B (base 16) UNISYS CORPORATION + TOWNSHIP LINE ROAD + BLUE BELL PA 19424 + UNITED STATES + +08-00-0C (hex) MIKLYN DEVELOPMENT CO. +08000C (base 16) MIKLYN DEVELOPMENT CO. + 3613 ANDOVER DIVE + BEDFORD TX 76021 + UNITED STATES + +08-00-0D (hex) INTERNATIONAL COMPUTERS LTD. +08000D (base 16) INTERNATIONAL COMPUTERS LTD. + WENLOCK WAY + WEST GORTON MANCHESTER, M12 5DR + UNITED KINGDOM + UNITED KINGDOM + +08-00-0E (hex) NCR CORPORATION +08000E (base 16) NCR CORPORATION + WORLD HEADQUARTERS + DAYTON OH 45479 + UNITED STATES + +08-00-0F (hex) MITEL CORPORATION +08000F (base 16) MITEL CORPORATION + 350 LEGGET DRIVE + P.O. BOX 13089 KANATA ONTARIO + CANADA K2K 1X3 + CANADA + +08-00-11 (hex) TEKTRONIX INC. +080011 (base 16) TEKTRONIX INC. + TECHNICAL STANDARDS + 13975 SW KARL BRAUN DRIVE PO BOX 500, M + BEAVERTON OR 97077 + UNITED STATES + +08-00-12 (hex) BELL ATLANTIC INTEGRATED SYST. +080012 (base 16) BELL ATLANTIC INTEGRATED SYST. + 40 TALL PINE DRIVE + SUDBURY MA 01776 + UNITED STATES + +08-00-13 (hex) EXXON +080013 (base 16) EXXON + + +08-00-14 (hex) EXCELAN +080014 (base 16) EXCELAN + 1599 FLICKINGER AVENUE + SAN JOSE CA 95131 + UNITED STATES + +08-00-15 (hex) STC BUSINESS SYSTEMS +080015 (base 16) STC BUSINESS SYSTEMS + HOLBROOK HOUSE + COCKFOSTERS ROAD COCKFOSTERS HERTS EN4 O + UNITED KINGDOM + UNITED KINGDOM + +08-00-16 (hex) BARRISTER INFO SYS CORP +080016 (base 16) BARRISTER INFO SYS CORP + ONE TECHNOLOGY CENTER + 45 OAK STREET + BUFFALO NY 14203 + UNITED STATES + +08-00-17 (hex) NATIONAL SEMICONDUCTOR +080017 (base 16) NATIONAL SEMICONDUCTOR + 2900 SEMICONDUCTOR DRIVE + SANTA CLARA CA 95051 + UNITED STATES + +08-00-18 (hex) PIRELLI FOCOM NETWORKS +080018 (base 16) PIRELLI FOCOM NETWORKS + DENTON DRIVE + NORTHWICH CHESHIRE CW9 7LU + ENGLAND + UNITED KINGDOM + +08-00-19 (hex) GENERAL ELECTRIC CORPORATION +080019 (base 16) GENERAL ELECTRIC CORPORATION + 1285 BOSTON AVENUE + BRIDGEPORT CT 06602 + UNITED STATES + +08-00-1A (hex) TIARA/ 10NET +08001A (base 16) TIARA/ 10NET + 7777 WASHINGTON VILLAGE DRIVE + SUITE 200 + DAYTON OHIO 45459-3957 + UNITED STATES + +08-00-1B (hex) EMC Corporation +08001B (base 16) EMC Corporation + 176 South Street + Hopkinton MA 01748 + UNITED STATES + +08-00-1C (hex) KDD-KOKUSAI DEBNSIN DENWA CO. +08001C (base 16) KDD-KOKUSAI DEBNSIN DENWA CO. + FUJI XEROX CO., LTD. TELEGRAPH + NO. 3-5, AKASAKA 3-CHOME MINATO-KU, TOKY + 107 JAPAN + JAPAN + +08-00-1D (hex) ABLE COMMUNICATIONS INC. +08001D (base 16) ABLE COMMUNICATIONS INC. + 17891 CARTWRIGHT ROAD + IRVINE CA 92714-6216 + UNITED STATES + +08-00-1E (hex) APOLLO COMPUTER INC. +08001E (base 16) APOLLO COMPUTER INC. + 15 ELIZABETH DRIVE + CHELMSFORD MA 01824 + UNITED STATES + +08-00-1F (hex) SHARP CORPORATION +08001F (base 16) SHARP CORPORATION + ENGINEERING DEPARTMENT 6 + 492 MINOSHO-CHO YAMATOKOORIYMA-SHI, + NARA 639-11 JAPAN + JAPAN + +08-00-20 (hex) SUN MICROSYSTEMS INC. +080020 (base 16) SUN MICROSYSTEMS INC. + 4200 Network Circle + Santa Clara CA 95054 + UNITED STATES + +08-00-21 (hex) 3M COMPANY +080021 (base 16) 3M COMPANY + Telecom Division + 6801 River Place Boulevard + Austin TX 78726-9000 + UNITED STATES + +08-00-22 (hex) NBI INC. +080022 (base 16) NBI INC. + 3450 MITCHELL LANE + P.O. BOX 9001 + BOULDER CO 80301 + UNITED STATES + +08-00-23 (hex) Panasonic Communications Co., Ltd. +080023 (base 16) Panasonic Communications Co., Ltd. + 4-1-62 Minoshima Hakata Fukuoka + 812-8531 + JAPAN + +08-00-24 (hex) 10NET COMMUNICATIONS/DCA +080024 (base 16) 10NET COMMUNICATIONS/DCA + 7777 WASHINGTON VILLAGE DR. + SUITE 200 + DAYTON OH 45459-3957 + UNITED STATES + +08-00-25 (hex) CONTROL DATA +080025 (base 16) CONTROL DATA + 4201 LEXINGTON AVE NORTH + ARDEN HILLS MN 55112 + UNITED STATES + +08-00-26 (hex) NORSK DATA A.S. +080026 (base 16) NORSK DATA A.S. + P.O. BOX 25 BOGERUD + OSLO 6 + NORWAY + NORWAY + +08-00-27 (hex) CADMUS COMPUTER SYSTEMS +080027 (base 16) CADMUS COMPUTER SYSTEMS + 600 SUFFOLK ST + LOWELL MA 08154 + UNITED STATES + +08-00-28 (hex) Texas Instruments +080028 (base 16) Texas Instruments + 12500 TI Boulevard + M/S 8723 + Dallas TX 75243 + UNITED STATES + +08-00-29 (hex) MEGATEK CORPORATION +080029 (base 16) MEGATEK CORPORATION + 9645 SCRANTON ROAD + SAN DIEGO CA 92121 + UNITED STATES + +08-00-2A (hex) MOSAIC TECHNOLOGIES INC. +08002A (base 16) MOSAIC TECHNOLOGIES INC. + 47 MANNING ROAD + BILLERICA MA 01821-3970 + UNITED STATES + +08-00-2B (hex) DIGITAL EQUIPMENT CORPORATION +08002B (base 16) DIGITAL EQUIPMENT CORPORATION + LKG 1-2/A19 + 550 KING STREET + LITTLETON MA 01460-1289 + UNITED STATES + +08-00-2C (hex) BRITTON LEE INC. +08002C (base 16) BRITTON LEE INC. + 14600 WINCHESTER BLVD + LOS GATOS CA 95030 + UNITED STATES + +08-00-2D (hex) LAN-TEC INC. +08002D (base 16) LAN-TEC INC. + 2131 UNIVERSITY AVENUE + BERKELEY CA 94704 + UNITED STATES + +08-00-2E (hex) METAPHOR COMPUTER SYSTEMS +08002E (base 16) METAPHOR COMPUTER SYSTEMS + 2500 GARCIA AVENUE + MOUNTAIN VIEW CA 94043 + UNITED STATES + +08-00-2F (hex) PRIME COMPUTER INC. +08002F (base 16) PRIME COMPUTER INC. + 100 CROSBY DRIVE + BEDFORD MA 01730-1402 + UNITED STATES + +08-00-30 (hex) NETWORK RESEARCH CORPORATION +080030 (base 16) NETWORK RESEARCH CORPORATION + 2380 N. ROSE AVENUE + OXNARD CA 93010 + UNITED STATES + +08-00-30 (hex) CERN +080030 (base 16) CERN + CH-1211 GENEVE 23 + SUISSE/SWITZ + SWITZERLAND + +08-00-30 (hex) ROYAL MELBOURNE INST OF TECH +080030 (base 16) ROYAL MELBOURNE INST OF TECH + GPO BOX 2476V + MELBOURNE VIC 3001 + AUSTRALIA + +08-00-31 (hex) LITTLE MACHINES INC. +080031 (base 16) LITTLE MACHINES INC. + 4141 JUTLAND DRIVE + SAN DIEGO CA 92117 + UNITED STATES + +08-00-32 (hex) TIGAN INCORPORATED +080032 (base 16) TIGAN INCORPORATED + 4020 FABIAN WAY + SUITE D + PALO ALTO CA 94303 + UNITED STATES + +08-00-33 (hex) BAUSCH & LOMB +080033 (base 16) BAUSCH & LOMB + INTERACTIVE GRAPHICS DIVISION + P.O. BOX 14547 + AUSITN TX 78671 + UNITED STATES + +08-00-34 (hex) FILENET CORPORATION +080034 (base 16) FILENET CORPORATION + 1575 CORPORATE DRIVE + COSTA MESA CA 92626 + UNITED STATES + +08-00-35 (hex) MICROFIVE CORPORATION +080035 (base 16) MICROFIVE CORPORATION + 3560 HYLAND AVENUE + P.O. BOX 5011 + COSTA MESA CA 92626 + UNITED STATES + +08-00-36 (hex) INTERGRAPH CORPORATION +080036 (base 16) INTERGRAPH CORPORATION + ONE MADISON INDUSTRIAL PARK + HUNTSVILLE AL 35807 + UNITED STATES + +08-00-37 (hex) FUJI-XEROX CO. LTD. +080037 (base 16) FUJI-XEROX CO. LTD. + ADVANCED TECH & ENG'G CENTER + 9-50 CHUO 2-CHOME, EBINA-SHI KANAGAWA 24 + JAPAN + JAPAN + +08-00-38 (hex) CII HONEYWELL BULL +080038 (base 16) CII HONEYWELL BULL + 68 ROUTE DE VERSAILLES + 78430 LOUVECIENNES + FRANCE + +08-00-39 (hex) SPIDER SYSTEMS LIMITED +080039 (base 16) SPIDER SYSTEMS LIMITED + SPIDER PARK + STANWELL STREET EDINBURGH EH6 5NG + SCOTLAND + UNITED KINGDOM + +08-00-3A (hex) ORCATECH INC. +08003A (base 16) ORCATECH INC. + 2680 QUEENSVIEW DRIVE + OTTAWA ONTARIO + CANADA K2B 8H6 + CANADA + +08-00-3B (hex) TORUS SYSTEMS LIMITED +08003B (base 16) TORUS SYSTEMS LIMITED + SCIENCE PARK + MILTON ROAD CAMBRIDGE CB4 4BH + UNITED KINGDOM + UNITED KINGDOM + +08-00-3C (hex) SCHLUMBERGER WELL SERVICES +08003C (base 16) SCHLUMBERGER WELL SERVICES + AUSTIN ENGINEERING SERVICES + P.O. BOX 200015 + AUSTIN TX 78720-0015 + UNITED STATES + +08-00-3D (hex) CADNETIX CORPORATIONS +08003D (base 16) CADNETIX CORPORATIONS + 5797 CENTRAL AVENUE + BOULDER CO 80301 + UNITED STATES + +08-00-3E (hex) CODEX CORPORATION +08003E (base 16) CODEX CORPORATION + 50 EAST COMMERCE DRIVE + SUITE M1 + SCHAUMBURG IL 60173 + UNITED STATES + +08-00-3F (hex) FRED KOSCHARA ENTERPRISES +08003F (base 16) FRED KOSCHARA ENTERPRISES + + +08-00-40 (hex) FERRANTI COMPUTER SYS. LIMITED +080040 (base 16) FERRANTI COMPUTER SYS. LIMITED + WYTHENSHAWE DIVISION + WESTERN ROAD BRACKNELL RG12 1RA + UNITED KINGDOM + UNITED KINGDOM + +08-00-41 (hex) RACAL-MILGO INFORMATION SYS.. +080041 (base 16) RACAL-MILGO INFORMATION SYS.. + 400 EMBASSY ROW + SUITE 300 + ATLANTA GA 30328 + UNITED STATES + +08-00-42 (hex) JAPAN MACNICS CORP. +080042 (base 16) JAPAN MACNICS CORP. + + JAPAN + +08-00-43 (hex) PIXEL COMPUTER INC. +080043 (base 16) PIXEL COMPUTER INC. + 260 FORDHAM ROAD + WILMINGTON MA 01887 + UNITED STATES + +08-00-44 (hex) DAVID SYSTEMS INC. +080044 (base 16) DAVID SYSTEMS INC. + 615 TASMAN DRIVE + SUNNYVALE CA 94088 + UNITED STATES + +08-00-45 (hex) CONCURRENT COMPUTER CORP. +080045 (base 16) CONCURRENT COMPUTER CORP. + 2 CRESCENT PLACE + OCEANPORT NJ 07757 + UNITED STATES + +08-00-46 (hex) SONY CORPORATION LTD. +080046 (base 16) SONY CORPORATION LTD. + 5-1-2 Kitashinagawa + Shinagawa-ku + Tokyo 141-0001 + JAPAN + +08-00-47 (hex) SEQUENT COMPUTER SYSTEMS INC. +080047 (base 16) SEQUENT COMPUTER SYSTEMS INC. + 15450 S.W. KOLL PARKWAY . + MAILSTOP COL2-831 + BEAVERTON OR 97006 + UNITED STATES + +08-00-48 (hex) EUROTHERM GAUGING SYSTEMS +080048 (base 16) EUROTHERM GAUGING SYSTEMS + 900 MIDDLESEX TURNPIKE, BDG. 6 + BILLERICA MA 01821 + UNITED STATES + +08-00-49 (hex) UNIVATION +080049 (base 16) UNIVATION + 1037 NORTH FAIR OAKS AVE. + SUNNYVALE CA 94089 + UNITED STATES + +08-00-4A (hex) BANYAN SYSTEMS INC. +08004A (base 16) BANYAN SYSTEMS INC. + 135 FLANDERS ROAD + WESTBORO MA 01581 + UNITED STATES + +08-00-4B (hex) PLANNING RESEARCH CORP. +08004B (base 16) PLANNING RESEARCH CORP. + 1DHS SYSTEMS + 1508 KENNEDY DRIVE-STE#215 + BELLEVUE NE 68--5 + UNITED STATES + +08-00-4C (hex) HYDRA COMPUTER SYSTEMS INC. +08004C (base 16) HYDRA COMPUTER SYSTEMS INC. + 12 MERCER ROAD + NATICK MA 01760 + UNITED STATES + +08-00-4D (hex) CORVUS SYSTEMS INC. +08004D (base 16) CORVUS SYSTEMS INC. + 2100 CORVUS DRIVE + SAN JOSE CA 95124 + UNITED STATES + +08-00-4E (hex) 3COM EUROPE LTD. +08004E (base 16) 3COM EUROPE LTD. + 3COM CENTRE + BOUNDARY WAY, HEMEL HEMPSTEAD HERTFORSHI + UNITED KINGDOM + UNITED KINGDOM + +08-00-4F (hex) CYGNET SYSTEMS +08004F (base 16) CYGNET SYSTEMS + 2560 JUNCTION AVENUE + SAN JOSE CA 95134 + UNITED STATES + +08-00-50 (hex) DAISY SYSTEMS CORP. +080050 (base 16) DAISY SYSTEMS CORP. + 139 KIFER COURT + SUNNYVALE CA 94086 + UNITED STATES + +08-00-51 (hex) EXPERDATA +080051 (base 16) EXPERDATA + 88, RUE BRILLAT SAVARIN + 75013 PARIS + FRANCE + FRANCE + +08-00-52 (hex) INSYSTEC +080052 (base 16) INSYSTEC + 450 LAKEMONT AVENUE + WINTER PARK FL 32792 + UNITED STATES + +08-00-53 (hex) MIDDLE EAST TECH. UNIVERSITY +080053 (base 16) MIDDLE EAST TECH. UNIVERSITY + DEPARTMENT OF + COMPUTER ENGINEERING + ANKARA TURKEY + TURKEY + +08-00-55 (hex) STANFORD TELECOMM. INC. +080055 (base 16) STANFORD TELECOMM. INC. + 1221 CROSSMAN + SUNNYVALE CA 94089 + UNITED STATES + +08-00-56 (hex) STANFORD LINEAR ACCEL. CENTER +080056 (base 16) STANFORD LINEAR ACCEL. CENTER + 2575 SANDHILL ROAD + MENLO PARK CA 94025 + UNITED STATES + +08-00-57 (hex) EVANS & SUTHERLAND +080057 (base 16) EVANS & SUTHERLAND + P.O. BOX 8700 + 580 ARAPEEN DRIVE + SALT LAKE CITY UT 84108 + UNITED STATES + +08-00-58 (hex) SYSTEMS CONCEPTS +080058 (base 16) SYSTEMS CONCEPTS + 520 THIRD STREET + SAN FRANCISCO CA 94107 + UNITED STATES + +08-00-59 (hex) A/S MYCRON +080059 (base 16) A/S MYCRON + PO BOX 6199 + N-0602 OSLO 6 + NORWAY + NORWAY + +08-00-5A (hex) IBM CORPORATION +08005A (base 16) IBM CORPORATION + P.O. BOX 12195 + CE6A/664 3039 CORNWALLIS + RTP NC 27709-2195 + UNITED STATES + +08-00-5B (hex) VTA TECHNOLOGIES INC. +08005B (base 16) VTA TECHNOLOGIES INC. + 2040 SHERMAN STREET + HOLLYWOOD FL 33020 + UNITED STATES + +08-00-5C (hex) FOUR PHASE SYSTEMS +08005C (base 16) FOUR PHASE SYSTEMS + 2001 LOGIC DRIVE + SAN JOSE CA 95124-3452 + UNITED STATES + +08-00-5D (hex) GOULD INC. +08005D (base 16) GOULD INC. + 6901 WEST SUNRISE BLVD. + P.O. BOX 9148 + FT. LAUDERDALE FL 33310-9148 + UNITED STATES + +08-00-5E (hex) COUNTERPOINT COMPUTER INC. +08005E (base 16) COUNTERPOINT COMPUTER INC. + 2127 RINGWOOD AVENUE + SAN JOSE CA 95131 + UNITED STATES + +08-00-5F (hex) SABER TECHNOLOGY CORP. +08005F (base 16) SABER TECHNOLOGY CORP. + 2381 BERING DRIVE + SAN JOSE CA 95131-1125 + UNITED STATES + +08-00-60 (hex) INDUSTRIAL NETWORKING INC. +080060 (base 16) INDUSTRIAL NETWORKING INC. + 3990 FREEDOM CIRCLE + SANTA CLARA CA 95050 + UNITED STATES + +08-00-61 (hex) JAROGATE LTD. +080061 (base 16) JAROGATE LTD. + 197-213 LYHAM ROAD + BRISTON LONDON SW2 5PY + UNITED KINGDOM + UNITED KINGDOM + +08-00-62 (hex) GENERAL DYNAMICS +080062 (base 16) GENERAL DYNAMICS + FORT WORTH DIVISION + P.O. BOX 748 + FT. WORTH TX 76101 + UNITED STATES + +08-00-63 (hex) PLESSEY +080063 (base 16) PLESSEY + PLESSEY - UK LIMITED + 167-55 148TH AVENUE + JAMAICA NY 11434 + UNITED STATES + +08-00-64 (hex) AUTOPHON AG +080064 (base 16) AUTOPHON AG + ABT. TZM 307 + ZIEGELMATTSTRASSE 1-15 4503 SOLOTHURN + SWITZERLAND + SWITZERLAND + +08-00-65 (hex) GENRAD INC. +080065 (base 16) GENRAD INC. + 300 BAKER AVENUE + MAIL STOP 26 + CONCORD MA 01742 + UNITED STATES + +08-00-66 (hex) AGFA CORPORATION +080066 (base 16) AGFA CORPORATION + 200 BALLARDVALE STREET + WILMINGTON MA 01887 + UNITED STATES + +08-00-67 (hex) COMDESIGN +080067 (base 16) COMDESIGN + 751 SOUTH KELLOG AVENUE + GOLETA CA 93117-3880 + UNITED STATES + +08-00-68 (hex) RIDGE COMPUTERS +080068 (base 16) RIDGE COMPUTERS + 2451 MISSION COLLEGE BLVD. + SANTA CLARA CA 95054 + UNITED STATES + +08-00-69 (hex) SILICON GRAPHICS INC. +080069 (base 16) SILICON GRAPHICS INC. + 2011 N. SHORELINE BLVD. + P.O. BOX 7311 CA 94043 + MOUNTAIN VIEW CA 94039-7311 + UNITED STATES + +08-00-6A (hex) ATT BELL LABORATORIES +08006A (base 16) ATT BELL LABORATORIES + 1100 EAST WARRENVILLE ROAD + NAPERVILLE IL 60566 + UNITED STATES + +08-00-6B (hex) ACCEL TECHNOLOGIES INC. +08006B (base 16) ACCEL TECHNOLOGIES INC. + 7358 TRADE STREET + SAN DIEGO CA 92121 + UNITED STATES + +08-00-6C (hex) SUNTEK TECHNOLOGY INT'L +08006C (base 16) SUNTEK TECHNOLOGY INT'L + 586 NO. FIRST STREET + SAN JOSE CA 95112 + UNITED STATES + +08-00-6D (hex) WHITECHAPEL COMPUTER WORKS +08006D (base 16) WHITECHAPEL COMPUTER WORKS + 75 WHITECHAPEL ROAD + LONDON E1 1DU + UNITED KINGDOM + +08-00-6E (hex) MASSCOMP +08006E (base 16) MASSCOMP + ONE TECHNOLOGY PARK + WESTFORD MA 01886 + UNITED STATES + +08-00-6F (hex) PHILIPS APELDOORN B.V. +08006F (base 16) PHILIPS APELDOORN B.V. + P.O. BOX 105 + 7300 AC APELDOORN + THE NETHERLANDS + NETHERLANDS + +08-00-70 (hex) MITSUBISHI ELECTRIC CORP. +080070 (base 16) MITSUBISHI ELECTRIC CORP. + 325 KAMIMACHIYA + KAMAKURA CITY KANAGWA PREFECTURE 247 + JAPAN + JAPAN + +08-00-71 (hex) MATRA (DSIE) +080071 (base 16) MATRA (DSIE) + PARC D'AFFAIRES - B.P. 262 + 27100 VAL DE REUIL + FRANCE + FRANCE + +08-00-72 (hex) XEROX CORP UNIV GRANT PROGRAM +080072 (base 16) XEROX CORP UNIV GRANT PROGRAM + ZEROX SYSTEMS INSTITUTE + M/S 105 50C 800 PHILLIPS ROAD + WEBSTER NY 14580 + UNITED STATES + +08-00-73 (hex) TECMAR INC. +080073 (base 16) TECMAR INC. + 6225 COCHRAN ROAD + SOLON OH 44139 + UNITED STATES + +08-00-74 (hex) CASIO COMPUTER CO. LTD. +080074 (base 16) CASIO COMPUTER CO. LTD. + 3-2-1 SAKAE-CHO + HAMURAMACHI, NISHITMAGUN TOKYO + 190-11 JAPAN + JAPAN + +08-00-75 (hex) DANSK DATA ELECTRONIK +080075 (base 16) DANSK DATA ELECTRONIK + HERLEV HOVEDGADE 199 + DK 2730 HERLEV + DENMARK + DENMARK + +08-00-76 (hex) PC LAN TECHNOLOGIES +080076 (base 16) PC LAN TECHNOLOGIES + 5780 LINCOLN DRIVE SUITE 106 + MINNEAPOLIS MN 55436 + UNITED STATES + +08-00-77 (hex) TSL COMMUNICATIONS LTD. +080077 (base 16) TSL COMMUNICATIONS LTD. + THE LANDSBURY ESTATE + LOWER GUILDFORD ROAD KNAPHIL WOKING SURR + ENGLAND + UNITED KINGDOM + +08-00-78 (hex) ACCELL CORPORATION +080078 (base 16) ACCELL CORPORATION + 50 SAGINAW DRIVE + ROCHESTER NY 14623 + UNITED STATES + +08-00-79 (hex) THE DROID WORKS +080079 (base 16) THE DROID WORKS + P.O. BOX CS 8180 + SAN RAFAEL CA 94912 + UNITED STATES + +08-00-7A (hex) INDATA +08007A (base 16) INDATA + GJERDRUMS VEI 12 C + N-0486 OSLO 4 + NORWAY + NORWAY + +08-00-7B (hex) SANYO ELECTRIC CO. LTD. +08007B (base 16) SANYO ELECTRIC CO. LTD. + 1-18-13 HASHIRIDANI + HIRAKATA-SHI + OSAKA 573 JAPAN + JAPAN + +08-00-7C (hex) VITALINK COMMUNICATIONS CORP. +08007C (base 16) VITALINK COMMUNICATIONS CORP. + 48761 KATO ROAD + FREMONT CA 94538 + UNITED STATES + +08-00-7E (hex) AMALGAMATED WIRELESS(AUS) LTD +08007E (base 16) AMALGAMATED WIRELESS(AUS) LTD + NORTH RYDE DIVISION + P.O. BOX 96 NORTH RYDE NSW + AUSTRALIA 2113 + AUSTRALIA + +08-00-7F (hex) CARNEGIE-MELLON UNIVERSITY +08007F (base 16) CARNEGIE-MELLON UNIVERSITY + INFORMATION TECHNOLOGY + SCHENLEY PARK + PITTSBURGE PA 15213 + UNITED STATES + +08-00-80 (hex) AES DATA INC. +080080 (base 16) AES DATA INC. + 1900 MINNESOTA COURT + MISSISAUGA ONTARIO + CANADA L5N L5N 3C9 + CANADA + +08-00-81 (hex) ,ASTECH INC. +080081 (base 16) ,ASTECH INC. + 670 NORTH COMMERCIAL STREET + MANCHESTER NH 03101 + UNITED STATES + +08-00-82 (hex) VERITAS SOFTWARE +080082 (base 16) VERITAS SOFTWARE + 4800 GREAT AMERICA PARKWAY + SANTA CLARA CA 95054 + UNITED STATES + +08-00-83 (hex) Seiko Instruments Inc. +080083 (base 16) Seiko Instruments Inc. + 8, Nakase 1-chome Mihama-ku + Chiba-shi Chiba 261-8507 + JAPAN + +08-00-84 (hex) TOMEN ELECTRONICS CORP. +080084 (base 16) TOMEN ELECTRONICS CORP. + 1-1 UCHISAIWAI-CHO 2CHOME + CHIYODA-KU TOKYO 100 + JAPAN + JAPAN + +08-00-85 (hex) ELXSI +080085 (base 16) ELXSI + 2334 LUNDY PLACE + SAN JOSE CA 95131 + UNITED STATES + +08-00-86 (hex) KONICA MINOLTA HOLDINGS, INC. +080086 (base 16) KONICA MINOLTA HOLDINGS, INC. + 1-6-1, Marunouchi, + Chiyoda-ku + Tokyo 100-0005 + JAPAN + +08-00-87 (hex) XYPLEX +080087 (base 16) XYPLEX + 295 FOSTER STREET + LITTLETON MA 01460 + UNITED STATES + +08-00-88 (hex) Brocade Communications Systems, Inc. +080088 (base 16) Brocade Communications Systems, Inc. + 1745 Technology Dr. + San Jose CA 95110 + UNITED STATES + +08-00-89 (hex) KINETICS +080089 (base 16) KINETICS + 3182 OLD TUNNEL ROAD + SUITE H + LAFAYETTE CA 94549 + UNITED STATES + +08-00-8A (hex) PERFORMANCE TECHNOLOGY +08008A (base 16) PERFORMANCE TECHNOLOGY + 801 LINCOLN CENTER + 7800 1H10 WEST + SAN ANTONIO TX 78230 + UNITED STATES + +08-00-8B (hex) PYRAMID TECHNOLOGY CORP. +08008B (base 16) PYRAMID TECHNOLOGY CORP. + 1295 CHARLESTON ROAD + MOUNTAIN VIEW CA 94043 + UNITED STATES + +08-00-8C (hex) NETWORK RESEARCH CORPORATION +08008C (base 16) NETWORK RESEARCH CORPORATION + 2380 N. ROSE AVENUE + OXNARD CA 93010 + UNITED STATES + +08-00-8D (hex) XYVISION INC. +08008D (base 16) XYVISION INC. + 101 EDGEWATER DRIVE + WAKEFIELD MA 01880 + UNITED STATES + +08-00-8E (hex) TANDEM COMPUTERS +08008E (base 16) TANDEM COMPUTERS + 14321 TANDEM BLVD. + AUSTIN TX 78728-6610 + UNITED STATES + +08-00-8F (hex) CHIPCOM CORPORATION +08008F (base 16) CHIPCOM CORPORATION + SOUTHBOROUGH OFFICE + 118 TURNPIKE ROAD + SOUTHBOROUGH MA 01772-1886 + UNITED STATES + +08-00-90 (hex) SONOMA SYSTEMS +080090 (base 16) SONOMA SYSTEMS + 4640 ADMIRALTY WAY, STE. #600 + MARINA DEL REY CA 90292-6695 + UNITED STATES + +08-14-43 (hex) UNIBRAIN S.A. +081443 (base 16) UNIBRAIN S.A. + 84, ETHNIKIS ANTISTASEOS + 15231 ATHENS + GREECE + GREECE + +08-BB-CC (hex) AK-NORD EDV VERTRIEBSGES. mbH +08BBCC (base 16) AK-NORD EDV VERTRIEBSGES. mbH + FRIEDRICHSTRASSE 10 + 25436 TORNESCH + GERMANY + +10-00-00 (hex) PRIVATE +100000 (base 16) + +10-00-5A (hex) IBM CORPORATION +10005A (base 16) IBM CORPORATION + P.O. BOX 12195 + CE6A/664 3039 CORNWALLIS + RTP NC 27709-2195 + UNITED STATES + +10-00-E8 (hex) NATIONAL SEMICONDUCTOR +1000E8 (base 16) NATIONAL SEMICONDUCTOR + 2900 SEMICONDUCTOR DRIVE + SANTA CLARA CA 95051 + UNITED STATES + +11-00-AA (hex) PRIVATE +1100AA (base 16) + +80-00-10 (hex) ATT BELL LABORATORIES +800010 (base 16) ATT BELL LABORATORIES + 1100 EAST WARRENVILLE ROAD + NAPERVILLE IL 60566 + UNITED STATES + +A0-6A-00 (hex) Verilink Corporation +A06A00 (base 16) Verilink Corporation + 127 Jetplex Circle + Madison AL 35758 + UNITED STATES + +AA-00-00 (hex) DIGITAL EQUIPMENT CORPORATION +AA0000 (base 16) DIGITAL EQUIPMENT CORPORATION + LKG 1-2/A19 + 550 KING STREET + LITTLETON MA 01460-1289 + UNITED STATES + +AA-00-01 (hex) DIGITAL EQUIPMENT CORPORATION +AA0001 (base 16) DIGITAL EQUIPMENT CORPORATION + LKG 1-2/A19 + 550 KING STREET + LITTLETON MA 01460-1289 + UNITED STATES + +AA-00-02 (hex) DIGITAL EQUIPMENT CORPORATION +AA0002 (base 16) DIGITAL EQUIPMENT CORPORATION + LKG 1-2/A19 + 550 KING STREET + LITTLETON MA 01460-1289 + UNITED STATES + +AA-00-03 (hex) DIGITAL EQUIPMENT CORPORATION +AA0003 (base 16) DIGITAL EQUIPMENT CORPORATION + LKG 1-2/A19 + 550 KING STREET + LITTLETON MA 01460-1289 + UNITED STATES + +AA-00-04 (hex) DIGITAL EQUIPMENT CORPORATION +AA0004 (base 16) DIGITAL EQUIPMENT CORPORATION + LKG 1-2/A19 + 550 KING STREET + LITTLETON MA 01460-1289 + UNITED STATES + +AC-DE-48 (hex) PRIVATE +ACDE48 (base 16) + diff --git a/trunk/gosa-si/server.conf b/trunk/gosa-si/server.conf new file mode 100644 index 000000000..657230c6b --- /dev/null +++ b/trunk/gosa-si/server.conf @@ -0,0 +1,27 @@ +[general] +log-file = /var/log/gosa-si-server.log +pid-file = /var/run/gosa-si-server.pid + +[server] +max-clients = 100 +ldap-uri = ldap://127.0.0.1 +ldap-base = dc=your,dc=domain +ldap-admin-dn = cn=ldapadmin,dc=your,dc=domain +ldap-admin-password = tester +mysql-host = 127.0.0.1 +mysql-username = gosa_si +mysql-password = gosa +mysql-database = gosa_si + +[ClientPackages] +key = secret-server-password + +[ArpHandler] +enabled = false + +[GOsaPackages] +enabled = true +key = secret-gosa-password + +[ServerPackages] +key = secret-foreign-key diff --git a/trunk/gosa-si/server.conf.pod b/trunk/gosa-si/server.conf.pod new file mode 100644 index 000000000..ab90f12b7 --- /dev/null +++ b/trunk/gosa-si/server.conf.pod @@ -0,0 +1,231 @@ + +=head1 NAME + +gosa-si-server.conf - Configuration file for gosa-si-server. + + +=head1 DESCRIPTION + +The gosa-si-server.conf file defines all parameter GOsa-SI-server needs for running. It is normally located in the /etc/gosa-si/ directory and is generated automatically by the gosa-si-server(1) program during installation. + +=head1 DIRECTIVES + + +=head2 [general] + +=over 4 + +=item logfile = /var/log/gosa-si-server.log + +Defines the location for the log file. + +=item pid-file = /var/run/gosa-si-server.pid +Defines the location for the pid file. + +=back + + +=head2 [server] + +=over 4 + +=item ip = 1.2.3.4 + +Defines the ip address GOsa-SI-server should use. Default: GOsa-SI determines the the ip address based on the destination address. + +=item port = 20081 + +Defines the port GOsa-SI-server is listening for incoming messages. + +=item known-clients = /var/lib/gosa-si/clients.db + +Defines the location for the local DB 'known_clients'. + +=item known-server = /var/lib/gosa-si/servers.db + +Defines the location for the local DB 'known_server'. + +=item incoming = /var/lib/gosa-si/incoming.db + +Defines the location for the local DB 'incoming'. + +=item login-users = /var/lib/gosa-si/users.db + +Defines the location for the local DB 'login_users'. + +=item fai-server = /var/lib/gosa-si/fai_server.db + +Defines the location for the local DB 'fai_server'. + +=item fai-release = /var/lib/gosa-si/fai_release.db + +Defines the location for the local DB 'fai_release'. + +=item packages-list = /var/lib/gosa-si/packages.db + +Defines the location for the local DB 'packages_list'. + +=item messaging = /var/lib/gosa-si/messaging.db + +Defines the location for the local DB 'messaging'. + +=item foreign-clients = /var/lib/gosa-si/foreign_clients.db + +Defines the location for the local DB 'foreign_clients'. + +=item source-list = /etc/apt/sources.list + +Defines the location for the sources file. + +=item repo-path = /srv/www/repository + +Defines the location of the dak Archive or local Debian Mirror and is scanned for Debian Packages. + +=item ldap-uri = + +Defines the LDAP uniform resource identifier. + +=item ldap-base = + +Defines the LDAP base. + +=item ldap-admin-dn = + +Defines the distinguished name of the administrator. + +=item ldap-admin-password = + +Defines the password of the administrator. + +=item gosa-unit-tag = + +Forces the Unit-Tag in a tagged environment. If not set, GOsa-SI tries to get the tag from the server entry in LDAP. + +=item max-clients = 10 + +Defines the maximum number of GOsa-SI-clients connected to the GOsa-SI-server. + +=item wol-password = + +Defines the password for wake on LAN (WOL). + +=back + +=head2 [GOsaPackages] + +=over 4 + +=item job-queue = /var/lib/gosa-si/jobs.db + +Defines the location for the local DB 'job_queue'. + +=item job-queue-loop-delay = 3 + +Defines the seconds the job queue is checked. + +=item messaging-db-loop-delay = 3 + +Defines the seconds the messaging queue is checked. + +=item key = none + +Defines the password incoming GOsaPackages messages should be encrypted. This has to be modified, default value will not work!!! + +=item dak-base = /srv/archive + +Base Directory of the local dak Archive. + +=item dak-keyring = /srv/archive/keyrings + +Directory with keyrings that hold the gpg-keys the archive accepts when uploading Debian packages. + +=item dak-queue = /srv/archive/queue + +Directory with the different dak queues. + +=item dak-usr = deb-dak + +User that is used to access dak files. Only needed if you have manually changed the default. + +=back + + +=head2 [ClientPackages] + +=over 4 + +=item key = none + +Defines the password incoming ClientPackages messages should be encrypted. This has to be modified, default value will not work!!! + +=back + + +=head2 [ServerPackages] + +=over 4 + +=item address = + +Comma seperated list of GOsa-si-servers (1.2.3.4:20081,9.8.7.6:123) in network where this SI-server should register. These given SI-servers extend the list of SI-servers found in DNS. + +=item domain = + +Forces the search domain used to get possible foreign servers from DNS. If not set, this server will search the domains found in domain or search statement in /etc/resolv.conf. + +=item key = none + +Defines the password incoming ServerPackages messages should be encrypted. This has to be modified, default value will not work!!! + +=item key-lifetime = 120 + +Defines the lifetime in seconds of a GOsa-SI-server key. After expiring the key will be automatically renewed. + +=item job-synchronization-enabled = true | false + +Defines whether job queue informations are be shared with other GOsa-SI-server in network. + +=item synchronization-loog = 5 + +Defines in seconds after which time the job queue synchronization is being done. + +=back + + +=head2 [ArpHandler] + +=over + +=item enabled = true | false + +Defines whether the ArpHandler is being activated at GOsa-SI-server start. + +=item interface = all + +Space- or comma-separated list of interfaces on which to start an ARP-Daemon. Enter 'all' to use all possible interfaces (Default). + +=back + + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list or to + + +=head1 LICENCE AND COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + + + +=cut + + + diff --git a/trunk/gosa-si/server/events/clMessages.pm b/trunk/gosa-si/server/events/clMessages.pm new file mode 100644 index 000000000..0d3344db5 --- /dev/null +++ b/trunk/gosa-si/server/events/clMessages.pm @@ -0,0 +1,804 @@ +## @file +# @brief Implementation of a GOsa-SI event module. +# @details A GOsa-SI event module containing all functions to handle incoming messages from clients. + +package clMessages; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "confirm_usr_msg", + "PROGRESS", + "FAIREBOOT", + "TASKSKIP", + "TASKBEGIN", + "TASKEND", + "TASKERROR", + "HOOK", + "GOTOACTIVATION", + "LOGIN", + "LOGOUT", + "CURRENTLY_LOGGED_IN", + "save_fai_log", + ); +@EXPORT = @events; + +use strict; +use warnings; +use Data::Dumper; +use GOSA::GosaSupportDaemon; +use MIME::Base64; + + +BEGIN {} + +END {} + + +## @method get_events() +# @details A brief function returning a list of functions which are exported by importing the module. +# @return List of all provided functions +sub get_events { + return \@events; +} + +## @method confirm_usr_msg() +# @details Confirmed messages are set in the messaging_db from d (deliverd) to s(seen). +# @param msg - STRING - xml message with tags 'message', 'subject' and 'usr' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub confirm_usr_msg { + my ($msg, $msg_hash, $session_id) = @_; + my $message = @{$msg_hash->{'message'}}[0]; + my $subject = @{$msg_hash->{'subject'}}[0]; + my $usr = @{$msg_hash->{'usr'}}[0]; + + # set update for this message + my $sql = "UPDATE $main::messaging_tn SET flag='s' WHERE (message='$message' AND subject='$subject' AND message_to='$usr')"; + &main::daemon_log("$session_id DEBUG: $sql", 7); + my $res = $main::messaging_db->exec_statement($sql); + + + return; +} + + +## @method save_fai_log() +# @details Creates under /var/log/fai/ the directory '$macaddress' and stores within all FAI log files from client. +# @param msg - STRING - xml message with tags 'macaddress' and 'save_fai_log' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub save_fai_log { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + my $all_logs = @{$msg_hash->{$header}}[0]; + + # if there is nothing to log + if( ref($all_logs) eq "HASH" ) { + &main::daemon_log("$session_id INFO: There is nothing to log!", 5); + return; + } + + my $client_fai_log_dir = $main::client_fai_log_dir; + if (not -d $client_fai_log_dir) { + mkdir($client_fai_log_dir, 0755) + } + + $client_fai_log_dir = File::Spec->catfile( $client_fai_log_dir, $macaddress ); + if (not -d $client_fai_log_dir) { + mkdir($client_fai_log_dir, 0755) + } + + my $time = &get_time; + $time = substr($time, 0, 8)."_".substr($time, 8, 6); + $client_fai_log_dir = File::Spec->catfile( $client_fai_log_dir, "install_$time" ); + mkdir($client_fai_log_dir, 0755); + + my @all_logs = split(/log_file:/, $all_logs); + foreach my $log (@all_logs) { + if (length $log == 0) { next; }; + my ($log_file, $log_string) = split(":", $log); + my $client_fai_log_file = File::Spec->catfile( $client_fai_log_dir, $log_file); + + open(my $LOG_FILE, ">$client_fai_log_file"); + print $LOG_FILE &decode_base64($log_string); + close($LOG_FILE); + + } + return; +} + +## @method LOGIN() +# @details Reported user from client is added to login_users_db. +# @param msg - STRING - xml message with tag 'LOGIN' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub LOGIN { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $login = @{$msg_hash->{$header}}[0]; + my $res; + my $error_str; + + # Invoke set_last_system; message sets ldap attributes 'gotoLastSystemLogin' and 'gotoLastSystem' + $res = &set_last_system($msg, $msg_hash, $session_id); + + # Add user to login_users_db + my %add_hash = ( table=>$main::login_users_tn, + primkey=> ['client', 'user'], + client=>$source, + user=>$login, + timestamp=>&get_time, + regserver=>'localhost', + ); + ($res, $error_str) = $main::login_users_db->add_dbentry( \%add_hash ); + if ($res != 0) { + &main::daemon_log("$session_id ERROR: cannot add entry to known_clients: $error_str"); + return; + } + + # Share login information with all other si-server + my %data = ( 'new_user' => "$source;$login" ); + my $info_msg = &build_msg("information_sharing", $main::server_address, "KNOWN_SERVER", \%data); + + return ($info_msg); +} + + +## @method LOGOUT() +# @details Reported user from client is deleted from login_users_db. +# @param msg - STRING - xml message with tag 'LOGOUT' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub LOGOUT { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $login = @{$msg_hash->{$header}}[0]; + + my $sql_statement = "DELETE FROM $main::login_users_tn WHERE (client='$source' AND user='$login')"; + my $res = $main::login_users_db->del_dbentry($sql_statement); + &main::daemon_log("$session_id INFO: delete user '$login' at client '$source' from login_user_db", 5); + + return; +} + + +## @method CURRENTLY_LOGGED_IN() +# @details Reported users from client are updated in login_users_db. Users which are no longer logged in are deleted from DB. +# @param msg - STRING - xml message +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub CURRENTLY_LOGGED_IN { + my ($msg, $msg_hash, $session_id) = @_; + my ($sql_statement, $db_res); + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $login = @{$msg_hash->{$header}}[0]; + + if(ref $login eq "HASH") { + &main::daemon_log("$session_id INFO: no logged in users reported from host '$source'", 5); + return; + } + + # Invoke set_last_system; message sets ldap attributes 'gotoLastSystemLogin' and 'gotoLastSystem' + my $res = &set_last_system($msg, $msg_hash, $session_id); + + # fetch all user currently assigned to the client at login_users_db + my %currently_logged_in_user = (); + $sql_statement = "SELECT * FROM $main::login_users_tn WHERE client='$source'"; + $db_res = $main::login_users_db->select_dbentry($sql_statement); + while( my($hit_id, $hit) = each(%{$db_res}) ) { + $currently_logged_in_user{$hit->{'user'}} = 1; + } + &main::daemon_log("$session_id DEBUG: logged in users from login_user_db: ".join(", ", keys(%currently_logged_in_user)), 7); + + # update all reported users in login_user_db + my @logged_in_user = split(/\s+/, $login); + &main::daemon_log("$session_id DEBUG: logged in users reported from client: ".join(", ", @logged_in_user), 7); + foreach my $user (@logged_in_user) { + my %add_hash = ( table=>$main::login_users_tn, + primkey=> ['client', 'user'], + client=>$source, + user=>$user, + timestamp=>&get_time, + regserver=>'localhost', + ); + my ($res, $error_str) = $main::login_users_db->add_dbentry( \%add_hash ); + if ($res != 0) { + &main::daemon_log("$session_id ERROR: cannot add entry to known_clients: $error_str"); + return; + } + + delete $currently_logged_in_user{$user}; + } + + # if there is still a user in %currently_logged_in_user + # although he is not reported by client + # then delete it from $login_user_db + foreach my $obsolete_user (keys(%currently_logged_in_user)) { + &main::daemon_log("$session_id WARNING: user '$obsolete_user' is currently not logged ". + "in at client '$source' but still found at login_user_db", 3); + my $sql_statement = "DELETE FROM $main::login_users_tn WHERE client='$source' AND user='$obsolete_user'"; + my $res = $main::login_users_db->del_dbentry($sql_statement); + &main::daemon_log("$session_id WARNING: delete user '$obsolete_user' at client '$source' from login_user_db", 3); + } + + # Delete all users which logged in information is older than their logged_in_user_date_of_expiry + my $act_time = &get_time(); + my $expiry_date = &calc_timestamp($act_time, "minus", $main::logged_in_user_date_of_expiry); + + $sql_statement = "SELECT * FROM $main::login_users_tn WHERE CAST(timestamp as UNSIGNED)<$expiry_date"; + $db_res = $main::login_users_db->select_dbentry($sql_statement); + + while( my($hit_id, $hit) = each(%{$db_res}) ) { + &main::daemon_log("$session_id INFO: user '".$hit->{'user'}."' is no longer reported to be logged in at host '".$hit->{'client'}."'", 5); + my $sql = "DELETE FROM $main::login_users_tn WHERE (client='".$hit->{'client'}."' AND user='".$hit->{'user'}."')"; + my $res = $main::login_users_db->del_dbentry($sql); + &main::daemon_log("$session_id INFO: delete user '".$hit->{'user'}."' at client '".$hit->{'client'}."' from login_user_db", 5); + } + + # Inform all other server which users are logged in at clients registered at local server + my $info_sql = "SELECT * FROM $main::login_users_tn WHERE regserver='localhost'"; + my $info_res = $main::login_users_db->select_dbentry($info_sql); + my $info_msg_hash = &create_xml_hash("information_sharing", $main::server_address, "KNOWN_SERVER"); + while (my ($hit_id, $hit) = each(%$info_res)) { + &add_content2xml_hash($info_msg_hash, 'user_db', $hit->{'client'}.";".$hit->{'user'}); + } + my $info_msg = &create_xml_string($info_msg_hash); + + return ($info_msg); +} + + +## @method set_last_system() +# @details Message sets ldap attributes 'gotoLastSystemLogin' and 'gotoLastSystem' +# @param msg - STRING - xml message with tag 'last_system_login' and 'last_system' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub set_last_system { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $login = @{$msg_hash->{$header}}[0]; + + # Sanity check of needed parameter + if (not exists $msg_hash->{'timestamp'}){ + &main::daemon_log("$session_id ERROR: message does not contain needed xml tag 'timestamp', ". + "setting of 'gotoLastSystem' and 'gotoLastSystemLogin' stopped!", 1); + &main::daemon_log($msg, 1); + return; + } + if (@{$msg_hash->{'timestamp'}} != 1) { + &main::daemon_log("$session_id ERROR: xml tag 'timestamp' has no content or exists more than one time, ". + "setting of 'gotoLastSystem' and 'gotoLastSystemLogin' stopped!", 1); + &ymain::daemon_log($msg, 1); + return; + } + if (not exists $msg_hash->{'macaddress'}){ + &main::daemon_log("$session_id ERROR: message does not contain needed xml tag 'mac_address', ". + "setting of 'gotoLastSystem' and 'gotoLastSystemLogin' stopped!", 1); + &main::daemon_log($msg, 1); + return; + } + if (@{$msg_hash->{'macaddress'}} != 1) { + &main::daemon_log("$session_id ERROR: xml tag 'macaddress' has no content or exists more than one time, ". + "setting of 'gotoLastSystem' and 'gotoLastSystemLogin' stopped!", 1); + &ymain::daemon_log($msg, 1); + return; + } + + # Fetch needed parameter + my $mac = @{$msg_hash->{'macaddress'}}[0]; + my $timestamp = @{$msg_hash->{'timestamp'}}[0]; + + # Prepare login list + my @login_list = split(' ', @{$msg_hash->{$header}}[0] ); + @login_list = &main::del_doubles(@login_list); + + # Sanity check of login list + if (@login_list == 0) { + # TODO + return; + } + + # Fetch ldap handle + my $ldap_handle = &main::get_ldap_handle(); + + # Get system info + my $ldap_mesg= $ldap_handle->search( + base => $main::ldap_base, + scope => 'sub', + filter => "macAddress=$mac", + ); + if ($ldap_mesg->count == 0) { + &main::daemon_log("$session_id ERROR: no system with mac address='$mac' was found in base '". + $main::ldap_base."', setting of 'gotoLastSystem' and 'gotoLastSystemLogin' stopped!", 1); + return; + } + + my $ldap_entry = $ldap_mesg->pop_entry(); + my $system_dn = $ldap_entry->dn(); + + # For each logged in user set gotoLastSystem and gotoLastSystemLogin + foreach my $user (@login_list) { + # Search user + my $ldap_mesg= $ldap_handle->search( + base => $main::ldap_base, + scope => 'sub', + filter => "uid=$user", + ); + # Sanity check of user search + if ($ldap_mesg->count == 0) { + &main::daemon_log("$session_id ERROR: no user with uid='$user' was found in base '". + $main::ldap_base."', setting of 'gotoLastSystem' and 'gotoLastSystemLogin' stopped!", 1); + + # Set gotoLastSystem and gotoLastSystemLogin + } else { + my $ldap_entry= $ldap_mesg->pop_entry(); + my $do_update = 0; + + # Set gotoLastSystem information + my $last_system_dn = $ldap_entry->get_value('gotoLastSystem'); + if ((defined $last_system_dn) && ($last_system_dn eq $system_dn)) { + &main::daemon_log("$session_id INFO: no new 'gotoLastSystem' inforamtion for ladp entry 'uid=$user', do nothing!", 5); + } elsif ((defined $last_system_dn) && ($last_system_dn ne $system_dn)) { + $ldap_entry->replace ( 'gotoLastSystem' => $system_dn ); + &main::daemon_log("$session_id INFO: update attribute 'gotoLastSystem'='$system_dn' at ldap entry 'uid=$user'!",5); + $do_update++; + } else { + $ldap_entry->add( 'gotoLastSystem' => $system_dn ); + &main::daemon_log("$session_id INFO: add attribute 'gotoLastSystem'='$system_dn' at ldap entry 'uid=$user'!", 5); + $do_update++; + } + + # Set gotoLastSystemLogin information + # Attention: only write information if last_system_dn and system_dn differs + my $last_system_login = $ldap_entry->get_value('gotoLastSystemLogin'); + if ((defined $last_system_login) && ($last_system_dn eq $system_dn)) { + &main::daemon_log("$session_id INFO: no new 'gotoLastSystemLogin' inforamtion for ladp entry 'uid=$user', do nothing!", 5); + } elsif ((defined $last_system_login) && ($last_system_dn ne $system_dn)) { + $ldap_entry->replace ( 'gotoLastSystemLogin' => $timestamp ); + &main::daemon_log("$session_id INFO: update attribute 'gotoLastSystemLogin'='$timestamp' at ldap entry 'uid=$user'!", 5); + $do_update++; + } else { + $ldap_entry->add( 'gotoLastSystemLogin' => $timestamp ); + &main::daemon_log("$session_id INFO: add attribute 'gotoLastSystemLogin'='$timestamp' at ldap entry 'uid=$user'!",5); + $do_update++; + } + + if ($do_update) { + my $result = $ldap_entry->update($ldap_handle); + if ($result->code() != 0) { + &main::daemon_log("$session_id ERROR: setting 'gotoLastSystem' and 'gotoLastSystemLogin' at user '$user' failed: ". + $result->{'errorMessage'}."\n". + "\tbase: $main::ldap_base\n". + "\tscope: 'sub'\n". + "\tfilter: 'uid=$user'\n". + "\tmessage: $msg", 1); + } + } + } + } + + return; +} + + +## @method GOTOACTIVATION() +# @details Client is set at job_queue_db to status 'processing' and 'modified'. +# @param msg - STRING - xml message with tag 'macaddress' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub GOTOACTIVATION { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + + # test whether content is an empty hash or a string which is required + my $content = @{$msg_hash->{$header}}[0]; + if(ref($content) eq "HASH") { $content = ""; } + + # clean up header + $header =~ s/CLMSG_//g; + + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET progress='goto-activation', modified='1' ". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry($sql_statement); + &main::daemon_log("$session_id INFO: $header at '$macaddress'", 5); + return; +} + + +## @method PROGRESS() +# @details Message reports installation progress of the client. Installation job at job_queue_db is going to be updated. +# @param msg - STRING - xml message with tags 'macaddress' and 'PROGRESS' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub PROGRESS { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + + # test whether content is an empty hash or a string which is required + my $content = @{$msg_hash->{$header}}[0]; + if(ref($content) eq "HASH") { $content = ""; } + + # clean up header + $header =~ s/CLMSG_//g; + + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET progress='$content', modified='1' ". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry($sql_statement); + &main::daemon_log("$session_id INFO: $header at '$macaddress' - $content%", 5); + + return; +} + + +## @method FAIREBOOT() +# @details Message reports a FAI reboot. Job at job_queue_db is going to be updated. +# @param msg - STRING - xml message with tag 'macaddress' and 'FAIREBOOT' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub FAIREBOOT { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + + # test whether content is an empty hash or a string which is required + my $content = @{$msg_hash->{$header}}[0]; + if(ref($content) eq "HASH") { $content = ""; } + + # clean up header + $header =~ s/CLMSG_//g; + + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET result='$header "."$content', modified='1' ". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry($sql_statement); + &main::daemon_log("$session_id INFO: $header at '$macaddress' - '$content'", 5); + + return; +} + + +## @method TASKSKIP() +# @details Message reports a skipped FAI task. Job at job_queue_db is going to be updated. +# @param msg - STRING - xml message with tag 'macaddress'. +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub TASKSKIP { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + + # test whether content is an empty hash or a string which is required + my $content = @{$msg_hash->{$header}}[0]; + if(ref($content) eq "HASH") { $content = ""; } + + # clean up header + $header =~ s/CLMSG_//g; + + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET result='$header "."$content', modified='1' ". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry($sql_statement); + &main::daemon_log("$session_id INFO: $header at '$macaddress' - '$content'", 5); + + return; +} + + +## @method TASKBEGIN() +# @details Message reports a starting FAI task. If the task is equal to 'finish', 'faiend' or 'savelog', job at job_queue_db is being set to status 'done' and FAI state is being set to 'localboot'. If task is equal to 'chboot', 'test' or 'confdir', just do nothing. In all other cases, job at job_queue_db is going to be updated or created if not exists. +# @param msg - STRING - xml message with tag 'macaddress'. +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub TASKBEGIN { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + + # test whether content is an empty hash or a string which is required + my $content = @{$msg_hash->{$header}}[0]; + if(ref($content) eq "HASH") { $content = ""; } + + # clean up header + $header =~ s/CLMSG_//g; + + # TASKBEGIN eq finish or faiend + if (($content eq 'finish') + || ($content eq 'faiend') + || ($content eq 'savelog') + ) { + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET status='done', result='$header "."$content', modified='1' ". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry($sql_statement); + &main::daemon_log("$session_id INFO: $header at '$macaddress' - '$content'", 5); + + # set fai_state to localboot + &main::change_fai_state('localboot', \@{$msg_hash->{'macaddress'}}, $session_id); + + # TASKBEGIN eq chboot + } elsif (($content eq 'chboot') + || ($content eq 'test') + || ($content eq 'confdir') + ) { + # just ignor this client message + # do nothing + + # other TASKBEGIN msgs + } else { + # select processing jobs for host + my $sql_statement = "SELECT * FROM $main::job_queue_tn WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->select_dbentry($sql_statement); + + # there is exactly one job entry in queue for this host + if (keys(%$res) == 1) { + &main::daemon_log("$session_id DEBUG: there is already one processing job in queue for host '$macaddress', run an update for this entry", 7); + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET result='$header $content', modified='1', siserver='localhost' ". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + my $err = $main::job_db->update_dbentry($sql_statement); + if (not defined $err) { + &main::daemon_log("$session_id ERROR: cannot update job_db entry: ".Dumper($err), 1); + } + + # there is no entry or more than one enties + } else { + # in case of more than one running jobs in queue, delete all jobs + if (keys(%$res) > 1) { + &main::daemon_log("$session_id DEBUG: there are more than one processing job in queue for host '$macaddress', ". + "delete entries", 7); + + # set job to status 'done', job will be deleted automatically + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET status='done', modified='1'". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry( $sql_statement ); + + } + + # in case of no and more than one running jobs in queue, add one single job + # resolve plain name for host $macaddress + my $plain_name; + my $ldap_handle = &main::get_ldap_handle($session_id); + if( not defined $ldap_handle ) { + &main::daemon_log("$session_id ERROR: cannot connect to ldap", 1); + $plain_name = "none"; + + # try to fetch a 'real name' + } else { + my $mesg = $ldap_handle->search( + base => $main::ldap_base, + scope => 'sub', + attrs => ['cn'], + filter => "(macAddress=$macaddress)"); + if($mesg->code) { + &main::daemon_log($mesg->error, 1); + $plain_name = "none"; + } else { + my $entry= $mesg->entry(0); + $plain_name = $entry->get_value("cn"); + } + } + + # In any case add a new job to job queue + &main::daemon_log("$session_id DEBUG: add job to queue for host '$macaddress'", 7); + my $func_dic = {table=>$main::job_queue_tn, + primkey=>['macaddress', 'headertag'], + timestamp=>&get_time, + status=>'processing', + result=>"$header $content", + progress=>'none', + headertag=>'trigger_action_reinstall', + targettag=>$target, + xmlmessage=>'none', + macaddress=>$macaddress, + plainname=>$plain_name, + modified=>'1', + siserver=>'localhost', + }; + my ($err, $error_str) = $main::job_db->add_dbentry($func_dic); + if ($err != 0) { + &main::daemon_log("$session_id ERROR: cannot add entry to job_db: $error_str", 1); + } + } + } + + return; +} + + +## @method TASKEND() +# @details Message reports a finished FAI task. If task is equal to 'savelog', job at job_queue_db is going to be set to status 'done'. Otherwise, job is going to be updated. +# @param msg - STRING - xml message with tag 'macaddress'. +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub TASKEND { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + + # test whether content is an empty hash or a string which is required + my $content = @{$msg_hash->{$header}}[0]; + if(ref($content) eq "HASH") { $content = ""; } + + # clean up header + $header =~ s/CLMSG_//g; + + if ($content eq "savelog 0") { + &main::daemon_log("$session_id DEBUG: got savelog from host '$target' - job done", 7); + + # set job to status 'done', job will be deleted automatically + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET status='done', modified='1'". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry( $sql_statement ); + + } else { + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET result='$header "."$content', modified='1' ". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry($sql_statement); + &main::daemon_log("$session_id INFO: $header at '$macaddress' - '$content'", 5); + } + + return; +} + + +## @method TASKERROR() +# @details Message reports a FAI error. Job at job_queue_db is going to be updated. +# @param msg - STRING - xml message with tag 'macaddress' and 'TASKERROR' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub TASKERROR { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + + # clean up header + $header =~ s/CLMSG_//g; + + # test whether content is an empty hash or a string which is required + my $content = @{$msg_hash->{$header}}[0]; + if(ref($content) eq "HASH") { $content = ""; } + + # set fai_state to localboot + &main::change_fai_state('error', \@{$msg_hash->{'macaddress'}}, $session_id); + + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET result='$header "."$content', modified='1' ". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry($sql_statement); + &main::daemon_log("$session_id INFO: $header at '$macaddress' - '$content'", 5); + + return; +} + + +## @method HOOK() +# @details Message reports a FAI hook. Job at job_queue_db is going to be updated. +# @param msg - STRING - xml message with tag 'macaddress' and 'HOOK' +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +sub HOOK { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + + # clean up header + $header =~ s/CLMSG_//g; + + # test whether content is an empty hash or a string which is required + my $content = @{$msg_hash->{$header}}[0]; + if(not ref($content) eq "STRING") { $content = ""; } + + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET result='$header "."$content', modified='1' ". + "WHERE status='processing' AND macaddress LIKE '$macaddress'"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry($sql_statement); + &main::daemon_log("$session_id INFO: $header at '$macaddress' - '$content'", 5); + + return; +} + + +=pod + +=head1 NAME + +clMessages - Implementation of a GOsa-SI event module for GOsa-SI-server. + +=head1 SYNOPSIS + + use GOSA::GosaSupportDaemon; + use MIME::Base64; + +=head1 DESCRIPTION + +This GOsa-SI event module containing all functions to handle messages coming from GOsa-SI-clients. + +This module will be automatically imported by GOsa-SI if it is under FPACKAGEMODULEE/> . + +=head1 METHODS + +=over 4 + +=item get_events ( ) + +=item confirm_usr_msg ( ) + +=item PROGRESS ( ) + +=item FAIREBOOT ( ) + +=item TASKSKIP ( ) + +=item TASKBEGIN ( ) + +=item TASKEND ( ) + +=item TASKERROR ( ) + +=item HOOK ( ) + +=item GOTOACTIVATION ( ) + +=item LOGIN ( ) + +=item LOGOUT ( ) + +=item CURRENTLY_LOGGED_IN ( ) + +=item save_fai_log ( ) + +=back + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list Egosa-devel@oss.gonicus.deE or to L + +=head1 COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + +=cut + + +1; diff --git a/trunk/gosa-si/server/events/databases.pm b/trunk/gosa-si/server/events/databases.pm new file mode 100644 index 000000000..687050582 --- /dev/null +++ b/trunk/gosa-si/server/events/databases.pm @@ -0,0 +1,309 @@ +package databases; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "query_jobdb", + "count_jobdb", + "delete_jobdb_entry", + "clear_jobdb", + "update_status_jobdb_entry", + "query_packages_list", + "count_packages_list", + "query_fai_server", + "count_fai_server", + "query_fai_release", + "count_fai_release", + ); +@EXPORT = @events; + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Data::Dumper; + +BEGIN {} + +END {} + +### Start ###################################################################### + +#&main::read_configfile($main::cfg_file, %cfg_defaults); + +sub get_events { + return \@events; +} + +sub query_fai_release{ return &query_db( @_ ); } +sub query_fai_server{ return &query_db( @_ ) ; } +sub query_packages_list { return &query_db( @_ ) ; } +sub query_jobdb { return &query_db( @_ ) ; } +sub query_db { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $table; + my $db; + if( $header =~ /query_jobdb/ ) { + $table = $main::job_queue_tn; + $db = $main::job_db; + } elsif( $header =~ /query_packages_list/ ) { + $table = $main::packages_list_tn; + $db = $main::packages_list_db; + } elsif( $header =~ /query_fai_server/ ) { + $table = $main::fai_server_tn; + $db = $main::fai_server_db; + } elsif( $header =~ /query_fai_release/ ) { + $table = $main::fai_release_tn; + $db = $main::fai_release_db; + } + + + # prepare sql statement and execute query + my $select= &get_select_statement($msg, $msg_hash); + my $where= &get_where_statement($msg, $msg_hash); + my $limit= &get_limit_statement($msg, $msg_hash); + my $orderby= &get_orderby_statement($msg, $msg_hash); + my $sql_statement= "SELECT $select FROM $table $where $orderby $limit"; + my $res_hash = $db->select_dbentry($sql_statement); + + my $out_xml = &db_res2si_msg($res_hash, $header, $source, $target); + #$out_xml =~ s/<\/xml>/$session_id<\/session_id><\/xml>/; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + #&add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + $out_xml =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + my @out_msg_l = ( $out_xml ); + + return @out_msg_l; +} + +sub count_fai_releas{ return &count_db( @_ ); } +sub count_fai_server{ return &count_db( @_ ); } +sub count_packages_list{ return &count_db( @_ ); } +sub count_jobdb{ return &count_db( @_ ); } +sub count_db { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $table; + my $db; + + if( $header =~ /count_jobdb/ ) { + $table = $main::job_queue_tn; + $db = $main::job_db; + } elsif( $header =~ /count_packages_list/ ) { + $table = $main::packages_list_tn; + $db = $main::packages_list_db; + } elsif( $header =~ /count_fai_server/ ) { + $table = $main::fai_server_tn; + $db = $main::fai_server_db; + } elsif( $header =~ /count_fai_release/ ) { + $table = $main::fai_release_tn; + $db = $main::fai_server_db; + } + + + # prepare sql statement and execute query + my $res_hash = $db->select_dbentry("SELECT * FROM $table"); + + my $count = keys(%{$res_hash}); + my $out_xml= "
      answer
      $target$source$count$session_id
      "; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + #&add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + $out_xml =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + my @out_msg_l = ( $out_xml ); + return @out_msg_l; +} + +sub delete_jobdb_entry { + my ($msg, $msg_hash, $session_id) = @_ ; + my $target = @{$msg_hash->{'target'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + + # prepare query sql statement + my $where= &get_where_statement($msg, $msg_hash); + + #my $sql_statement = "DELETE FROM $main::job_queue_tn $where"; + #&main::daemon_log("$session_id DEBUG: $sql_statement",7); + # execute db query + #my $db_res = $main::job_db->del_dbentry($sql_statement); + # + #my $res; + #if( $db_res > 0 ) { + # $res = 0 ; + #} else { + # $res = 1; + #} + + # set job to status 'done', job will be deleted automatically + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET status='done', modified='1' ". + "$where"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry( $sql_statement ); + + # prepare xml answer + my $out_xml = "
      answer
      $target$source$res$session_id
      "; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_xml =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + my @out_msg_l = ( $out_xml ); + return @out_msg_l; + +} + + +sub clear_jobdb { + my ($msg, $msg_hash, $session_id) = @_ ; + my $target = @{$msg_hash->{'target'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + + my $error= 0; + my $out_xml= "1"; + + my $table= $main::job_queue_tn; + + my $sql_statement = "DELETE FROM $table"; + my $db_res = $main::job_db->del_dbentry($sql_statement); + if( not $db_res > 0 ) { $error++; }; + + if( $error == 0 ) { + $out_xml = "
      answer
      $target$source0$session_id
      "; + } + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + #&add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + $out_xml =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + my @out_msg_l = ( $out_xml ); + return @out_msg_l; +} + + +sub update_status_jobdb_entry { + my ($msg, $msg_hash, $session_id) = @_ ; + my $target = @{$msg_hash->{'target'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + + my $error= 0; + my $out_xml= "
      answer
      $target$source1$session_id
      "; + + my @len_hash = keys %{$msg_hash}; + if( 0 == @len_hash) { $error++; }; + + # prepare query sql statement + if( $error == 0) { + my $table= $main::job_queue_tn; + my $where= &get_where_statement($msg, $msg_hash); + my $update= &get_update_statement($msg, $msg_hash); + + # conditions + # no timestamp update if status eq waiting + my $sql_statement = "SELECT * FROM $table $where AND status='processing'"; + my $res_hash = $main::job_db->select_dbentry($sql_statement); + if( (0 != keys(%$res_hash)) && ($update =~ /timestamp/i) ) { + $error ++; + $out_xml = "1there is no timestamp update allowed while status is 'processing'"; + } + + if( $error == 0 ) { + my $sql_statement = "UPDATE $table $update $where"; + # execute db query + my $db_res = $main::job_db->update_dbentry($sql_statement); + + # check success of db update + if( not $db_res > 0 ) { $error++; }; + } + } + + if( $error == 0) { + $out_xml = "0"; + } + + my $out_msg = sprintf("
      answer
      %s%s%s$session_id
      ", $target, $source, $out_xml); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + #&add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + $out_xml =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + my @out_msg_l = ( $out_msg ); + return @out_msg_l; +} + + +=pod + +=head1 NAME + +databases - Implementation of a GOsa-SI event module for GOsa-SI-server. + +=head1 SYNOPSIS + + use GOSA::GosaSupportDaemon; + +=head1 DESCRIPTION + +This GOsa-SI event module containing all functions to handle messages coming from GOsa and concerning GOsa-SI databases. + +This module will be automatically imported by GOsa-SI if it is under FPACKAGEMODULEE/> . + +=head1 METHODS + +=over 4 + +=item get_events ( ) + +=item query_jobdb ( ) + +=item count_jobdb ( ) + +=item delete_jobdb_entry ( ) + +=item clear_jobdb ( ) + +=item update_status_jobdb_entry ( ) + +=item query_packages_list ( ) + +=item count_packages_list ( ) + +=item query_fai_server ( ) + +=item count_fai_server ( ) + +=item query_fai_release ( ) + +=item count_fai_release ( ) + +=back + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list Egosa-devel@oss.gonicus.deE or to L + +=head1 COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +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. + +=cut + + +1; diff --git a/trunk/gosa-si/server/events/gosaTriggered.pm b/trunk/gosa-si/server/events/gosaTriggered.pm new file mode 100644 index 000000000..73a4e95b6 --- /dev/null +++ b/trunk/gosa-si/server/events/gosaTriggered.pm @@ -0,0 +1,1267 @@ +## @file +# @details A GOsa-SI event module containing all functions common used by GOsa +# @brief Implementation of a GOsa-SI event module. + +package gosaTriggered; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "get_login_usr_for_client", + "get_client_for_login_usr", + "gen_smb_hash", + "trigger_reload_syslog_config", + "trigger_reload_ntp_config", + "trigger_reload_ldap_config", + "ping", + "network_completition", + "set_activated_for_installation", + "new_key_for_client", + "detect_hardware", + "get_login_usr", + "get_login_client", + "trigger_action_localboot", + "trigger_action_faireboot", + "trigger_action_reboot", + "trigger_action_activate", + "trigger_action_lock", + "trigger_action_halt", + "trigger_action_update", + "trigger_action_reinstall", + "trigger_action_memcheck", + "trigger_action_sysinfo", + "trigger_action_instant_update", + "trigger_action_rescan", + "trigger_action_wake", + "recreate_fai_server_db", + "recreate_fai_release_db", + "recreate_packages_list_db", + "send_user_msg", + "get_available_kernel", + "trigger_activate_new", + "get_hosts_with_module", +# "get_dak_keyring", +# "import_dak_key", +# "remove_dak_key", +# "get_dak_queue", + ); +@EXPORT = @events; + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Data::Dumper; +use Crypt::SmbHash; +use Net::ARP; +use Net::Ping; +use Socket; +use Time::HiRes qw( usleep); +use MIME::Base64; + +BEGIN {} + +END {} + +### Start ###################################################################### + +## @method get_events() +# A brief function returning a list of functions which are exported by importing the module. +# @return List of all provided functions +sub get_events { + return \@events; +} + +## @method send_usr_msg($msg, $msg_hash, $session_id) +# This function accepts usr messages from GOsa, split mulitple target messages to mulitiple single target messages and put all messages into messaging_db +# @param msg - STRING - xml message +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return (out_msg) - ARRAY - Array containing the answer message from client +sub send_user_msg { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + + #my $subject = &decode_base64(@{$msg_hash->{'subject'}}[0]); # just for debugging + my $subject = @{$msg_hash->{'subject'}}[0]; + my $from = @{$msg_hash->{'from'}}[0]; + my @users = exists $msg_hash->{'user'} ? @{$msg_hash->{'user'}} : () ; + my @groups = exists $msg_hash->{'group'} ? @{$msg_hash->{'group'}} : (); + my $delivery_time = @{$msg_hash->{'delivery_time'}}[0]; + #my $message = &decode_base64(@{$msg_hash->{'message'}}[0]); # just for debugging + my $message = @{$msg_hash->{'message'}}[0]; + + # keep job queue uptodate if necessary + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + # error handling + if (not $delivery_time =~ /^\d{14}$/) { + my $error_string = "delivery_time '$delivery_time' is not a valid timestamp, please use format 'yyyymmddhhmmss'"; + &main::daemon_log("$session_id ERROR: $error_string", 1); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + + # determine new message id + my $new_msg_id = 1; + my $new_msg_id_sql = "SELECT MAX(id) FROM $main::messaging_tn"; + my $new_msg_id_res = $main::messaging_db->exec_statement($new_msg_id_sql); + if (defined @{@{$new_msg_id_res}[0]}[0] ) { + $new_msg_id = int(@{@{$new_msg_id_res}[0]}[0]); + $new_msg_id += 1; + } + + # highlight user name and group name + my @receiver_l; + @users = map(push(@receiver_l, "u_$_"), @users); + @groups = map(push(@receiver_l, "g_$_"), @groups); + + # Sanitiy check of receivers list + if (@receiver_l == 0) { + &main::daemon_log("$session_id ERROR: 'send_usr_msg'-message contains neither a 'usr' nor a 'group' tag. No receiver specified.", 1); + return; + } + + # add incoming message to messaging_db + my $func_dic = {table=>$main::messaging_tn, + primkey=>[], + id=>$new_msg_id, + subject=>$subject, + message_from=>$from, + message_to=>join(",", @receiver_l), + flag=>"n", + direction=>"in", + delivery_time=>$delivery_time, + message=>$message, + timestamp=>&get_time(), + }; + my $res = $main::messaging_db->add_dbentry($func_dic); + if (not $res == 0) { + &main::daemon_log("$session_id ERROR: gosaTriggered.pm: cannot add message to message_db: $res", 1); + } else { + &main::daemon_log("$session_id INFO: gosaTriggered.pm: message with subject '".&decode_base64($subject)."' successfully added to message_db", 5); + } + + return; +} + + +sub recreate_fai_server_db { + my ($msg, $msg_hash, $session_id) = @_ ; + my $out_msg; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + $main::fai_server_db->create_table("new_fai_server", \@main::fai_server_col_names); + &main::create_fai_server_db("new_fai_server",undef,"dont", $session_id); + $main::fai_server_db->move_table("new_fai_server", $main::fai_server_tn); + + my @out_msg_l = ( $out_msg ); + return @out_msg_l; +} + + +sub recreate_fai_release_db { + my ($msg, $msg_hash, $session_id) = @_ ; + my $out_msg; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + $main::fai_release_db->create_table("new_fai_release", \@main::fai_release_col_names); + &main::create_fai_release_db("new_fai_release", $session_id); + $main::fai_release_db->move_table("new_fai_release", $main::fai_release_tn); + + my @out_msg_l = ( $out_msg ); + return @out_msg_l; +} + + +sub recreate_packages_list_db { + my ($msg, $msg_hash, $session_id) = @_ ; + my $out_msg; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + &main::create_packages_list_db; + + my @out_msg_l = ( $out_msg ); + return @out_msg_l; +} + + +sub get_login_usr_for_client { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $client = @{$msg_hash->{'client'}}[0]; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + $header =~ s/^gosa_//; + + my $sql_statement = "SELECT * FROM known_clients WHERE hostname='$client' OR macaddress LIKE '$client'"; + my $res = $main::known_clients_db->select_dbentry($sql_statement); + + my $out_msg = "
      $header
      $target$source"; + $out_msg .= &db_res2xml($res); + $out_msg .= "
      "; + + my @out_msg_l = ( $out_msg ); + return @out_msg_l; +} + + +sub get_client_for_login_usr { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my $usr = @{$msg_hash->{'usr'}}[0]; + $header =~ s/^gosa_//; + + my $sql_statement = "SELECT * FROM known_clients WHERE login LIKE '%$usr%'"; + my $res = $main::known_clients_db->select_dbentry($sql_statement); + + my $out_msg = "
      $header
      $target$source"; + $out_msg .= &db_res2xml($res); + $out_msg .= "
      "; + my @out_msg_l = ( $out_msg ); + return @out_msg_l; + +} + + +sub ping { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + my $error = 0; + my $answer_msg; + my ($sql, $res); + + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + # send message + $sql = "SELECT * FROM $main::known_clients_tn WHERE ((hostname='$target') || (macaddress LIKE '$target'))"; + $res = $main::known_clients_db->exec_statement($sql); + + # sanity check of db result + my ($host_name, $host_key); + if ((defined $res) && (@$res > 0) && @{@$res[0]} > 0) { + $host_name = @{@$res[0]}[0]; + $host_key = @{@$res[0]}[2]; + } else { + &main::daemon_log("$session_id ERROR: cannot determine host_name and host_key from known_clients_db at function ping\n$msg", 1); + $error = 1; + } + + if (not $error) { + my $client_hash = &create_xml_hash("ping", $main::server_address, $host_name); + &add_content2xml_hash($client_hash, 'session_id', $session_id); + my $client_msg = &create_xml_string($client_hash); + &main::send_msg_to_target($client_msg, $host_name, $host_key, $header, $session_id); + + my $message_id; + my $i = 0; + while (1) { + $i++; + $sql = "SELECT * FROM $main::incoming_tn WHERE headertag='answer_$session_id'"; + $res = $main::incoming_db->exec_statement($sql); + if (ref @$res[0] eq "ARRAY") { + $message_id = @{@$res[0]}[0]; + last; + } + + # do not run into a endless loop + if ($i > 100) { last; } + usleep(100000); + } + + # if an answer to the question exists + if (defined $message_id) { + my $answer_xml = @{@$res[0]}[3]; + my %data = ( 'answer_xml' => 'bin noch da' ); + $answer_msg = &build_msg("got_ping", $target, $source, \%data); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa){ + $answer_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + $sql = "DELETE FROM $main::incoming_tn WHERE id=$message_id"; + $res = $main::incoming_db->exec_statement($sql); + } + + } + + return ( $answer_msg ); +} + + + +sub gen_smb_hash { + my ($msg, $msg_hash, $session_id) = @_ ; + my $source = @{$msg_hash->{source}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $password = @{$msg_hash->{password}}[0]; + + my %data= ('hash' => join(q[:], ntlmgen $password)); + my $out_msg = &build_msg("gen_smb_hash", $target, $source, \%data ); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return ( $out_msg ); +} + + +sub network_completition { + my ($msg, $msg_hash, $session_id) = @_ ; + my $source = @{$msg_hash->{source}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $name = @{$msg_hash->{hostname}}[0]; + + # Can we resolv the name? + my %data; + if (inet_aton($name)){ + my $address = inet_ntoa(inet_aton($name)); + my $p = Net::Ping->new('tcp'); + my $mac= ""; + if ($p->ping($address, 1)){ + $mac = Net::ARP::arp_lookup("", $address); + } + + %data= ('ip' => $address, 'mac' => $mac); + } else { + %data= ('ip' => '', 'mac' => ''); + } + + my $out_msg = &build_msg("network_completition", $target, $source, \%data ); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return ( $out_msg ); +} + + +sub detect_hardware { + my ($msg, $msg_hash, $session_id) = @_ ; + # just forward msg to client, but dont forget to split off 'gosa_' in header + my $source = @{$msg_hash->{source}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my $out_hash = &create_xml_hash("detect_hardware", $source, $target); + if( defined $jobdb_id ) { + &add_content2xml_hash($out_hash, 'jobdb_id', $jobdb_id); + } + my $out_msg = &create_xml_string($out_hash); + + my @out_msg_l = ( $out_msg ); + return @out_msg_l; + +} + +sub trigger_reload_syslog_config { + my ($msg, $msg_hash, $session_id) = @_ ; + + # Sanity check of macaddress + # TODO + + my $macaddress = @{$msg_hash->{macaddress}}[0]; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my $out_msg = &ClientPackages::new_syslog_config($macaddress, $session_id); + my @out_msg_l = ( $out_msg ); + + return @out_msg_l; + + +} + +sub trigger_reload_ntp_config { + my ($msg, $msg_hash, $session_id) = @_ ; + + # Sanity check of macaddress + # TODO + + my $macaddress = @{$msg_hash->{macaddress}}[0]; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my $out_msg = &ClientPackages::new_ntp_config($macaddress, $session_id); + my @out_msg_l = ( $out_msg ); + + return @out_msg_l; + +} + +sub trigger_reload_ldap_config { + my ($msg, $msg_hash, $session_id) = @_ ; + my $target = @{$msg_hash->{target}}[0]; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my $out_msg = &ClientPackages::new_ldap_config($target, $session_id); + my @out_msg_l = ( $out_msg ); + + return @out_msg_l; +} + + +sub set_activated_for_installation { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{header}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $mac= (defined($msg_hash->{'macaddress'}))?@{$msg_hash->{'macaddress'}}[0]:undef; + my @out_msg_l; + + # update status of job + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + # If a client gets a 'set_activated_for_installation' msg, always deliver a fresh 'new_ldap_config' + # just for backup and robustness purposes + my $ldap_out_msg = &ClientPackages::new_ldap_config($mac, $session_id); + push(@out_msg_l, $ldap_out_msg); + + # create set_activated_for_installation message for delivery + my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target); + if( defined $jobdb_id ) { + &add_content2xml_hash($out_hash, 'jobdb_id', $jobdb_id); + } + my $out_msg = &create_xml_string($out_hash); + push(@out_msg_l, $out_msg); + + return @out_msg_l; +} + + +sub trigger_action_faireboot { + my ($msg, $msg_hash, $session_id) = @_; + my $macaddress = @{$msg_hash->{macaddress}}[0]; + my $source = @{$msg_hash->{source}}[0]; + + my @out_msg_l; + $msg =~ s/
      gosa_trigger_action_faireboot<\/header>/
      trigger_action_faireboot<\/header>/; + push(@out_msg_l, $msg); + + &main::change_goto_state('locked', \@{$msg_hash->{macaddress}}, $session_id); + &main::change_fai_state('install', \@{$msg_hash->{macaddress}}, $session_id); + + # set job to status 'done', job will be deleted automatically + my $sql_statement = "UPDATE $main::job_queue_tn ". + "SET status='done', modified='1'". + "WHERE (macaddress='$macaddress' AND status='processing')"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->update_dbentry( $sql_statement ); + + return @out_msg_l; +} + + +sub trigger_action_lock { + my ($msg, $msg_hash, $session_id) = @_; + my $macaddress = @{$msg_hash->{macaddress}}[0]; + my $source = @{$msg_hash->{source}}[0]; + + &main::change_goto_state('locked', \@{$msg_hash->{macaddress}}, $session_id); + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my @out_msg_l; + return @out_msg_l; +} + + +sub trigger_action_activate { + my ($msg, $msg_hash, $session_id) = @_; + my $macaddress = @{$msg_hash->{macaddress}}[0]; + my $source = @{$msg_hash->{source}}[0]; + + &main::change_goto_state('active', \@{$msg_hash->{macaddress}}, $session_id); + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $macaddress); + if( exists $msg_hash->{'jobdb_id'} ) { + &add_content2xml_hash($out_hash, 'jobdb_id', @{$msg_hash->{'jobdb_id'}}[0]); + } + my $out_msg = &create_xml_string($out_hash); + + my @out_msg_l = ($out_msg); + return @out_msg_l; + +} + + +sub trigger_action_localboot { + my ($msg, $msg_hash, $session_id) = @_; + $msg =~ s/
      gosa_trigger_action_localboot<\/header>/
      trigger_action_localboot<\/header>/; + &main::change_fai_state('localboot', \@{$msg_hash->{macaddress}}, $session_id); + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my @out_msg_l = ($msg); + return @out_msg_l; +} + + +sub trigger_action_halt { + my ($msg, $msg_hash, $session_id) = @_; + $msg =~ s/
      gosa_trigger_action_halt<\/header>/
      trigger_action_halt<\/header>/; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my @out_msg_l = ($msg); + return @out_msg_l; +} + + +sub trigger_action_reboot { + my ($msg, $msg_hash, $session_id) = @_; + $msg =~ s/
      gosa_trigger_action_reboot<\/header>/
      trigger_action_reboot<\/header>/; + + &main::change_fai_state('reboot', \@{$msg_hash->{macaddress}}, $session_id); + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my @out_msg_l = ($msg); + return @out_msg_l; +} + + +sub trigger_action_memcheck { + my ($msg, $msg_hash, $session_id) = @_ ; + $msg =~ s/
      gosa_trigger_action_memcheck<\/header>/
      trigger_action_memcheck<\/header>/; + + &main::change_fai_state('memcheck', \@{$msg_hash->{macaddress}}, $session_id); + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my @out_msg_l = ($msg); + return @out_msg_l; +} + + +sub trigger_action_reinstall { + my ($msg, $msg_hash, $session_id) = @_; + $msg =~ s/
      gosa_trigger_action_reinstall<\/header>/
      trigger_action_reinstall<\/header>/; + + &main::change_fai_state('reinstall', \@{$msg_hash->{macaddress}}, $session_id); + + my %data = ( 'macaddress' => \@{$msg_hash->{macaddress}} ); + my $wake_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data); + # invoke trigger wake for this gosa-si-server + &main::server_server_com::trigger_wake($msg, $msg_hash, $session_id); + + my @out_msg_l = ($wake_msg, $msg); + return @out_msg_l; +} + + +sub trigger_action_update { + my ($msg, $msg_hash, $session_id) = @_; + $msg =~ s/
      gosa_trigger_action_update<\/header>/
      trigger_action_update<\/header>/; + + &main::change_fai_state('update', \@{$msg_hash->{macaddress}}, $session_id); + + my %data = ( 'macaddress' => \@{$msg_hash->{macaddress}} ); + my $wake_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data); + # invoke trigger wake for this gosa-si-server + &main::server_server_com::trigger_wake($msg, $msg_hash, $session_id); + + my @out_msg_l = ($wake_msg, $msg); + return @out_msg_l; +} + + +sub trigger_action_instant_update { + my ($msg, $msg_hash, $session_id) = @_; + $msg =~ s/
      gosa_trigger_action_instant_update<\/header>/
      trigger_action_instant_update<\/header>/; + + &main::change_fai_state('update', \@{$msg_hash->{macaddress}}, $session_id); + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + + my %data = ( 'macaddress' => \@{$msg_hash->{macaddress}} ); + my $wake_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data); + # invoke trigger wake for this gosa-si-server + &main::server_server_com::trigger_wake($msg, $msg_hash, $session_id); + + my @out_msg_l = ($wake_msg, $msg); + return @out_msg_l; +} + + +sub trigger_action_sysinfo { + my ($msg, $msg_hash, $session_id) = @_; + $msg =~ s/
      gosa_trigger_action_sysinfo<\/header>/
      trigger_action_sysinfo<\/header>/; + + &main::change_fai_state('sysinfo', \@{$msg_hash->{macaddress}}, $session_id); + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + my @out_msg_l = ($msg); + return @out_msg_l; +} + + +sub new_key_for_client { + my ($msg, $msg_hash, $session_id) = @_; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + $msg =~ s/
      gosa_new_key_for_client<\/header>/
      new_key<\/header>/; + my @out_msg_l = ($msg); + return @out_msg_l; +} + + +sub trigger_action_rescan { + my ($msg, $msg_hash, $session_id) = @_; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + + $msg =~ s/
      gosa_trigger_action_rescan<\/header>/
      detect_hardware
      /; + my @out_msg_l = ($msg); + return @out_msg_l; +} + + +sub trigger_action_wake { + my ($msg, $msg_hash, $session_id) = @_; + + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=$jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + # build out message + my $out_hash = &create_xml_hash("trigger_wake", "GOSA", "KNOWN_SERVER"); + foreach (@{$msg_hash->{'macaddress'}}) { + &add_content2xml_hash($out_hash, 'macaddress', $_); + } + if (defined $jobdb_id){ + &add_content2xml_hash($out_hash, 'jobdb_id', $jobdb_id); + } + my $out_msg = &create_xml_string($out_hash); + + # invoke trigger wake for this gosa-si-server + &main::server_server_com::trigger_wake($out_msg, $out_hash, $session_id); + + # send trigger wake to all other gosa-si-server + my @out_msg_l = ($out_msg); + return @out_msg_l; +} + + +sub get_available_kernel { + my ($msg, $msg_hash, $session_id) = @_; + + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $fai_release= @{$msg_hash->{'fai_release'}}[0]; + + my @kernel; + # Get Kernel packages for release + my $sql_statement = "SELECT * FROM $main::packages_list_tn WHERE distribution='$fai_release' AND package LIKE 'linux\-image\-%'"; + my $res_hash = $main::packages_list_db->select_dbentry($sql_statement); + my %data; + my $i=1; + + foreach my $package (keys %{$res_hash}) { + $data{"answer".$i++}= $data{"answer".$i++}= ${$res_hash}{$package}->{'package'}; + } + $data{"answer".$i++}= "default"; + + my $out_msg = &build_msg("get_available_kernel", $target, $source, \%data); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return ( $out_msg ); +} + +sub trigger_activate_new { + my ($msg, $msg_hash, $session_id) = @_; + + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $header= @{$msg_hash->{'header'}}[0]; + my $mac= (defined($msg_hash->{'mac'}))?@{$msg_hash->{'mac'}}[0]:undef; + my $ogroup= (defined($msg_hash->{'ogroup'}))?@{$msg_hash->{'ogroup'}}[0]:undef; + my $timestamp= (defined($msg_hash->{'timestamp'}))?@{$msg_hash->{'timestamp'}}[0]:undef; + my $base= (defined($msg_hash->{'base'}))?@{$msg_hash->{'base'}}[0]:undef; + my $hostname= (defined($msg_hash->{'fqdn'}))?@{$msg_hash->{'fqdn'}}[0]:undef; + my $ip_address= (defined($msg_hash->{'ip'}))?@{$msg_hash->{'ip'}}[0]:undef; + my $dhcp_statement= (defined($msg_hash->{'dhcp'}))?@{$msg_hash->{'dhcp'}}[0]:undef; + my $jobdb_id= (defined($msg_hash->{'jobdb_id'}))?@{$msg_hash->{'jobdb_id'}}[0]:undef; + + # Sanity check for base + if (ref($base) eq "HASH") { + # Incoming msg has a xml tag 'base' but no content + $base = undef; + } + + # In case that the client is sleeping, wake it up + my %data = ( 'macaddress' => $mac ); + my $wake_msg = &build_msg("trigger_wake", "GOSA", "KNOWN_SERVER", \%data); + &main::server_server_com::trigger_wake($msg, $msg_hash, $session_id); + my $sql_statement= "SELECT * FROM $main::known_server_tn"; + my $query_res = $main::known_server_db->select_dbentry( $sql_statement ); + while( my ($hit_num, $hit) = each %{ $query_res } ) { + my $host_name = $hit->{hostname}; + my $host_key = $hit->{hostkey}; + $wake_msg =~ s/\S+<\/target>/$host_name<\/target>/g; + my $error = &main::send_msg_to_target($wake_msg, $host_name, $host_key, $header, $session_id); + } + + my $ldap_handle = &main::get_ldap_handle(); + my $ldap_entry; + my $ogroup_entry; + my $changed_attributes_counter = 0; + + my $activate_client = 0; + + if(defined($ogroup)) { + my $ldap_mesg= $ldap_handle->search( + base => $main::ldap_base, + scope => 'sub', + filter => "(&(objectClass=gosaGroupOfnames)(cn=$ogroup))", + ); + if($ldap_mesg->count == 1) { + $ogroup_entry= $ldap_mesg->pop_entry(); + } elsif ($ldap_mesg->count == 0) { + &main::daemon_log("$session_id ERROR: A GosaGroupOfNames with cn '$ogroup' was not found in base '".$main::ldap_base."'!", 1); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting' WHERE id = $jobdb_id"); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET timestamp = '".(&calc_timestamp(&get_time(), 'plus', 10))."' WHERE id = $jobdb_id"); + return undef; + } else { + &main::daemon_log("$session_id ERROR: More than one ObjectGroups with cn '$ogroup' was found in base '".$main::ldap_base."'!", 1); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting' WHERE id = $jobdb_id"); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET timestamp = '".(&calc_timestamp(&get_time(), 'plus', 10))."' WHERE id = $jobdb_id"); + return undef; + } + + # build the base, use optional base parameter or take it from ogroup + if(!(defined($base) && (length($base) > 0))) { + # Subtract the ObjectGroup cn + $base = $1 if $ogroup_entry->dn =~ /cn=$ogroup,ou=groups,(.*)$/; + &main::daemon_log("$session_id DEBUG: New base for system with mac address '$mac' is '$base'", 5); + } + } + + # prepend ou=systems (configurable through config) + $base = $main::new_systems_ou.",".$base; + + # Search for an existing entry (should be in ou=incoming) + my $ldap_mesg= $ldap_handle->search( + base => $main::ldap_base, + scope => 'sub', + filter => "(&(objectClass=GOhard)(|(macAddress=$mac)(dhcpHWaddress=$mac)))", + ); + + # TODO: Find a way to guess an ip address for hosts with no ldap entry (MAC->ARP->IP) + if($ldap_mesg->count == 1) { + &main::daemon_log("$session_id DEBUG: One system with mac address '$mac' was found in base '".$main::ldap_base."'!", 5); + # Get the entry from LDAP + $ldap_entry= $ldap_mesg->pop_entry(); + + if(!($ldap_entry->dn() eq "cn=".$ldap_entry->get_value('cn').",$base")) { + # Move the entry to the new ou + $ldap_entry->changetype('moddn'); + $ldap_entry->add( + newrdn => "cn=".$ldap_entry->get_value('cn'), + deleteoldrdn => 1, + newsuperior => $base, + ); + # To prevent replication problems just re-queue the job with 10 seconds in the future + my $moddn_result = $ldap_entry->update($ldap_handle); + if ($moddn_result->code() != 0) { + my $error_string = "Moving the system with mac address '$mac' to new base '$base' failed (code '".$moddn_result->code()."') with '".$moddn_result->{'errorMessage'}."'!"; + &main::daemon_log("$session_id ERROR: $error_string", 1); + my $sql = "UPDATE $main::job_queue_tn SET status='error', result='$error_string' WHERE id=$jobdb_id"; + return undef; + } else { + &main::daemon_log("$session_id INFO: System with mac address '$mac' was moved to base '".$main::ldap_base."'! Re-queuing job.", 4); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting' WHERE id = $jobdb_id"); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET timestamp = '".(&calc_timestamp(&get_time(), 'plus', 10))."' WHERE id = $jobdb_id"); + return undef; + } + } + + } elsif ($ldap_mesg->count == 0) { + &main::daemon_log("$session_id WARNING: No System with mac address '$mac' was found in base '".$main::ldap_base."'! Re-queuing job.", 4); + my $sql_statement = "UPDATE ".$main::job_queue_tn. + " SET status='waiting', timestamp = '".(&calc_timestamp(&get_time(), 'plus', 60))."' ". + " WHERE id = $jobdb_id"; + $main::job_db->exec_statement($sql_statement); + return undef; + } + + $ldap_mesg= $ldap_handle->search( + base => $main::ldap_base, + scope => 'sub', + filter => "(&(objectClass=GOhard)(|(macAddress=$mac)(dhcpHWaddress=$mac)))", + ); + + # TODO: Find a way to guess an ip address for hosts with no ldap entry (MAC->ARP->IP) + if($ldap_mesg->count == 1) { + $ldap_entry= $ldap_mesg->pop_entry(); + # Check for needed objectClasses + my $oclasses = $ldap_entry->get_value('objectClass', asref => 1); + foreach my $oclass ("FAIobject", "GOhard", "gotoWorkstation") { + if(!(scalar grep $_ eq $oclass, map {$_ => 1} @$oclasses)) { + &main::daemon_log("$session_id INFO: Adding objectClass '$oclass' to system entry with mac adress '$mac'", 1); + $ldap_entry->add( + objectClass => $oclass, + ); + my $oclass_result = $ldap_entry->update($ldap_handle); + if ($oclass_result->code() != 0) { + &main::daemon_log("$session_id ERROR: Adding the ObjectClass '$oclass' failed (code '".$oclass_result->code()."') with '".$oclass_result->{'errorMessage'}."'!", 1); + } + } + } + + # Set FAIstate + if(defined($ldap_entry->get_value('FAIstate'))) { + if(!($ldap_entry->get_value('FAIstate') eq 'install')) { + $ldap_entry->replace( + 'FAIstate' => 'install' + ); + my $replace_result = $ldap_entry->update($ldap_handle); + if ($replace_result->code() != 0) { + &main::daemon_log("$session_id ERROR: Setting the FAIstate to install failed with code '".$replace_result->code()."') and message '".$replace_result->{'errorMessage'}."'!", 1); + } + } + } else { + $ldap_entry->add( + 'FAIstate' => 'install' + ); + my $add_result = $ldap_entry->update($ldap_handle); + if ($add_result->code() != 0) { + &main::daemon_log("$session_id ERROR: Setting the FAIstate to install failed with code '".$add_result->code()."') and message '".$add_result->{'errorMessage'}."'!", 1); + } + } + + + } elsif ($ldap_mesg->count == 0) { + # TODO: Create a new entry + # $ldap_entry = Net::LDAP::Entry->new(); + # $ldap_entry->dn("cn=$mac,$base"); + &main::daemon_log("$session_id WARNING: No System with mac address '$mac' was found in base '".$main::ldap_base."'! Re-queuing job.", 4); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting' WHERE id = $jobdb_id"); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET timestamp = '".(&calc_timestamp(&get_time(), 'plus', 10))."' WHERE id = $jobdb_id"); + return undef; + } else { + &main::daemon_log("$session_id ERROR: More than one system with mac address '$mac' was found in base '".$main::ldap_base."'!", 1); + } + + # Add to ObjectGroup + my $ogroup_member = $ogroup_entry->get_value('member', asref => 1); + if( (!defined($ogroup_member)) || + (!defined($ldap_entry)) || + (!defined($ldap_entry->dn)) || + (!(scalar grep $_ eq $ldap_entry->dn, @{$ogroup_member}))) { + $ogroup_entry->add ( + 'member' => $ldap_entry->dn(), + ); + my $ogroup_result = $ogroup_entry->update($ldap_handle); + if ($ogroup_result->code() != 0) { + &main::daemon_log("$session_id ERROR: Updating the ObjectGroup '$ogroup' failed (code '".$ogroup_result->code()."') with '".$ogroup_result->{'errorMessage'}."'!", 1); + } + } else { + &main::daemon_log("$session_id DEBUG: System with mac address '$mac' is already a member of ObjectGroup '$ogroup'.", 5); + } + + # Finally set gotoMode to active + if(defined($ldap_entry->get_value('gotoMode'))) { + if(!($ldap_entry->get_value('gotoMode') eq 'active')) { + $ldap_entry->replace( + 'gotoMode' => 'active' + ); + my $activate_result = $ldap_entry->update($ldap_handle); + if ($activate_result->code() != 0) { + &main::daemon_log("$session_id ERROR: Activating system '".$ldap_entry->dn()."' failed (code '".$activate_result->code()."') with '".$activate_result->{'errorMessage'}."'!", 1); + } else { + $activate_client = 1; + } + } else { + $activate_client = 1; + } + } else { + $ldap_entry->add( + 'gotoMode' => 'active' + ); + my $activate_result = $ldap_entry->update($ldap_handle); + if ($activate_result->code() != 0) { + &main::daemon_log("$session_id ERROR: Activating system '".$ldap_entry->dn()."' failed (code '".$activate_result->code()."') with '".$activate_result->{'errorMessage'}."'!", 1); + } else { + $activate_client = 1; + } + } + + if($activate_client == 1) { + + # Create delivery list + my @out_msg_l; + + # Set job to done + $main::job_db->exec_statement("UPDATE jobs SET status = 'done' WHERE id = $jobdb_id"); + + # create set_activated_for_installation message for delivery + my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target); + my $out_msg = &create_xml_string($out_hash); + push(@out_msg_l, $out_msg); + + # Return delivery list of messages + return @out_msg_l; + + } else { + &main::daemon_log("$session_id WARNING: Activating system with mac address '$mac' failed! Re-queuing job.", 4); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting' WHERE id = $jobdb_id"); + $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET timestamp = '".(&calc_timestamp(&get_time(), 'plus', 10))."' WHERE id = $jobdb_id"); + } + return undef; +} + + +#sub get_dak_keyring { +# my ($msg, $msg_hash) = @_; +# my $source = @{$msg_hash->{'source'}}[0]; +# my $target = @{$msg_hash->{'target'}}[0]; +# my $header= @{$msg_hash->{'header'}}[0]; +# my $session_id = @{$msg_hash->{'session_id'}}[0]; +# +# # build return message with twisted target and source +# my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); +# &add_content2xml_hash($out_hash, "session_id", $session_id); +# +# my @keys; +# my %data; +# +# my $keyring = $main::dak_signing_keys_directory."/keyring.gpg"; +# +# my $gpg_cmd = `which gpg`; chomp $gpg_cmd; +# my $gpg = "$gpg_cmd --no-default-keyring --no-random-seed --keyring $keyring"; +# +# # Check if the keyrings are in place and readable +# if( +# &run_as($main::dak_user, "test -r $keyring")->{'resultCode'} != 0 +# ) { +# &add_content2xml_hash($out_hash, "error", "DAK Keyring is not readable"); +# } else { +# my $command = "$gpg --list-keys"; +# my $output = &run_as($main::dak_user, $command); +# &main::daemon_log("$session_id DEBUG: ".$output->{'command'}, 7); +# +# my $i=0; +# foreach (@{$output->{'output'}}) { +# if ($_ =~ m/^pub\s.*$/) { +# ($keys[$i]->{'pub'}->{'length'}, $keys[$i]->{'pub'}->{'uid'}, $keys[$i]->{'pub'}->{'created'}) = ($1, $2, $3) +# if $_ =~ m/^pub\s*?(\w*?)\/(\w*?)\s(\d{4}-\d{2}-\d{2})/; +# $keys[$i]->{'pub'}->{'expires'} = $1 if $_ =~ m/^pub\s*?\w*?\/\w*?\s\d{4}-\d{2}-\d{2}\s\[expires:\s(\d{4}-\d{2}-\d{2})\]/; +# $keys[$i]->{'pub'}->{'expired'} = $1 if $_ =~ m/^pub\s*?\w*?\/\w*?\s\d{4}-\d{2}-\d{2}\s\[expired:\s(\d{4}-\d{2}-\d{2})\]/; +# } elsif ($_ =~ m/^sub\s.*$/) { +# ($keys[$i]->{'sub'}->{'length'}, $keys[$i]->{'sub'}->{'uid'}, $keys[$i]->{'sub'}->{'created'}) = ($1, $2, $3) +# if $_ =~ m/^sub\s*?(\w*?)\/(\w*?)\s(\d{4}-\d{2}-\d{2})/; +# $keys[$i]->{'sub'}->{'expires'} = $1 if $_ =~ m/^pub\s*?\w*?\/\w*?\s\d{4}-\d{2}-\d{2}\s\[expires:\s(\d{4}-\d{2}-\d{2})\]/; +# $keys[$i]->{'sub'}->{'expired'} = $1 if $_ =~ m/^pub\s*?\w*?\/\w*?\s\d{4}-\d{2}-\d{2}\s\[expired:\s(\d{4}-\d{2}-\d{2})\]/; +# } elsif ($_ =~ m/^uid\s.*$/) { +# push @{$keys[$i]->{'uid'}}, $1 if $_ =~ m/^uid\s*?([^\s].*?)$/; +# } elsif ($_ =~ m/^$/) { +# $i++; +# } +# } +# } +# +# my $i=0; +# foreach my $key (@keys) { +# # &main::daemon_log(Dumper($key)); +# &add_content2xml_hash($out_hash, "answer".$i++, $key); +# } +# my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; +# if (defined $forward_to_gosa) { +# &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); +# } +# return &create_xml_string($out_hash); +#} +# +# +#sub import_dak_key { +# my ($msg, $msg_hash) = @_; +# my $source = @{$msg_hash->{'source'}}[0]; +# my $target = @{$msg_hash->{'target'}}[0]; +# my $header= @{$msg_hash->{'header'}}[0]; +# my $session_id = @{$msg_hash->{'session_id'}}[0]; +# my $key = &decode_base64(@{$msg_hash->{'key'}}[0]); +# +# # build return message with twisted target and source +# my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); +# &add_content2xml_hash($out_hash, "session_id", $session_id); +# +# my %data; +# +# my $keyring = $main::dak_signing_keys_directory."/keyring.gpg"; +# +# my $gpg_cmd = `which gpg`; chomp $gpg_cmd; +# my $gpg = "$gpg_cmd --no-default-keyring --no-random-seed --keyring $keyring"; +# +# # Check if the keyrings are in place and writable +# if( +# &run_as($main::dak_user, "test -w $keyring")->{'resultCode'} != 0 +# ) { +# &add_content2xml_hash($out_hash, "error", "DAK Keyring is not writable"); +# } else { +# my $keyfile; +# open($keyfile, ">/tmp/gosa_si_tmp_dak_key"); +# print $keyfile $key; +# close($keyfile); +# my $command = "$gpg --import /tmp/gosa_si_tmp_dak_key"; +# my $output = &run_as($main::dak_user, $command); +# &main::daemon_log("$session_id DEBUG: ".$output->{'command'}, 7); +# unlink("/tmp/gosa_si_tmp_dak_key"); +# +# if($output->{'resultCode'} != 0) { +# &add_content2xml_hash($out_hash, "error", "Import of DAK key failed! Output was '".$output->{'output'}."'"); +# } else { +# &add_content2xml_hash($out_hash, "answer", "Import of DAK key successfull! Output was '".$output->{'output'}."'"); +# } +# } +# +# my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; +# if (defined $forward_to_gosa) { +# &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); +# } +# return &create_xml_string($out_hash); +#} +# +# +#sub remove_dak_key { +# my ($msg, $msg_hash) = @_; +# my $source = @{$msg_hash->{'source'}}[0]; +# my $target = @{$msg_hash->{'target'}}[0]; +# my $header= @{$msg_hash->{'header'}}[0]; +# my $session_id = @{$msg_hash->{'session_id'}}[0]; +# my $key = @{$msg_hash->{'keyid'}}[0]; +# # build return message with twisted target and source +# my $out_hash = &main::create_xml_hash("answer_$header", $target, $source); +# &add_content2xml_hash($out_hash, "session_id", $session_id); +# +# my %data; +# +# my $keyring = $main::dak_signing_keys_directory."/keyring.gpg"; +# +# my $gpg_cmd = `which gpg`; chomp $gpg_cmd; +# my $gpg = "$gpg_cmd --no-default-keyring --no-random-seed --homedir ".$main::dak_signing_keys_directory." --keyring $keyring"; +# +# # Check if the keyrings are in place and writable +# if( +# &run_as($main::dak_user, "test -w $keyring")->{'resultCode'} != 0 +# ) { +# &add_content2xml_hash($out_hash, "error", "DAK keyring is not writable"); +# } else { +# # Check if the key is present in the keyring +# if(&run_as($main::dak_user, "$gpg --list-keys $key")->{'resultCode'} == 0) { +# my $command = "$gpg --batch --yes --delete-key $key"; +# my $output = &run_as($main::dak_user, $command); +# &main::daemon_log("$session_id DEBUG: ".$output->{'command'}, 7); +# } else { +# &add_content2xml_hash($out_hash, "error", "DAK key with id '$key' was not found in keyring"); +# } +# } +# +# my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; +# if (defined $forward_to_gosa) { +# &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); +# } +# return &create_xml_string($out_hash); +#} + + +#sub get_dak_queue { +# my ($msg, $msg_hash, $session_id) = @_; +# my %data; +# my $source = @{$msg_hash->{'source'}}[0]; +# my $target = @{$msg_hash->{'target'}}[0]; +# my $header= @{$msg_hash->{'header'}}[0]; +# +# my %data; +# +# foreach my $dir ("unchecked", "new", "accepted") { +# foreach my $file(<"$main::dak_queue_directory/$dir/*.changes">) { +# } +# } +# +# my $out_msg = &build_msg("get_dak_queue", $target, $source, \%data); +# my @out_msg_l = ($out_msg); +# return @out_msg_l; +#} + +## @method get_hosts_with_module +# Reports all GOsa-si-server providing the given module. +# @param msg - STRING - xml message with tag get_hosts_with_module +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub get_hosts_with_module { + my ($msg, $msg_hash, $session_id) = @_; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $header= @{$msg_hash->{'header'}}[0]; + my $module_name = @{$msg_hash->{'module_name'}}[0]; + my $out_hash = &create_xml_hash($header, $target, $source); + + # Sanity check of module_name + if ((not exists $msg_hash->{'module_name'}) || (@{$msg_hash->{'module_name'}} != 1)) { + &add_content2xml_hash($out_hash, "error_string", "no module_name specified or module_name tag invalid"); + &add_content2xml_hash($out_hash, "error", "module_name"); + &main::daemon_log("$session_id ERROR: no module_name specified or module_name tag invalid: $msg", 1); + return (&create_xml_string($out_hash)); + } + + my $out_msg = &create_xml_string($out_hash); + + # Check localhost for module_name + if (exists @{$main::known_modules->{'GosaPackages'}}[2]->{$module_name}) { + my ($local_ip, $local_port) = split(/:/, $target); + my $network_interface= &get_interface_for_ip($local_ip); + my $local_mac = &get_mac_for_interface($network_interface); + $out_msg =~ s/<\/xml>/host0<\/result> <\/xml>/; + my $host_infos = "$local_ip"; + $host_infos .= " $local_mac"; + $out_msg =~ s/<\/xml>/\n $host_infos <\/answer0> \n <\/xml>/; + } + + # Search for opsi hosts in server_db + my $sql = "SELECT * FROM $main::known_server_tn WHERE loaded_modules LIKE '%$module_name%'"; + my $res = $main::known_server_db->select_dbentry($sql); + while (my ($hit_id, $hit_hash) = each %$res) { + $out_msg =~ s/<\/xml>/host$hit_id<\/result> <\/xml>/; + my $host_infos = "".$hit_hash->{'hostname'}.""; + $host_infos .= " ".$hit_hash->{'macaddress'}.""; + $out_msg =~ s/<\/xml>/\n $host_infos <\/answer$hit_id> \n <\/xml>/; + } + + return $out_msg; +} + +# vim:ts=4:shiftwidth:expandtab +1; diff --git a/trunk/gosa-si/server/events/logHandling.pm b/trunk/gosa-si/server/events/logHandling.pm new file mode 100644 index 000000000..9fdce81d0 --- /dev/null +++ b/trunk/gosa-si/server/events/logHandling.pm @@ -0,0 +1,485 @@ +package logHandling; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "show_log_by_mac", + "show_log_by_date", + "show_log_by_date_and_mac", + "show_log_files_by_date_and_mac", + "get_log_file_by_date_and_mac", + "get_recent_log_by_mac", + "delete_log_by_date_and_mac", + ); +@EXPORT = @events; + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Data::Dumper; +use File::Spec; +use MIME::Base64; + +BEGIN {} + +END {} + +### Start ###################################################################### + + +#=== FUNCTION ================================================================ +# NAME: get_events +# PARAMETERS: none +# RETURNS: reference of exported events +# DESCRIPTION: tells the caller which functions are available +#=============================================================================== +sub get_events { + return \@events +} + + +#=== FUNCTION ================================================================ +# NAME: show_log_by_date +# DESCRIPTION: reporting installed hosts matching to regex of date +# PARAMETERS: [$msg] original incoming message +# [$msg_hash] incoming message transformed to hash concerning XML::Simple +# [$session_id] POE session id +# RETURNS: gosa-si valid answer string +#=============================================================================== +sub show_log_by_date { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $date_l = $msg_hash->{date}; + my $out_msg; + $header =~ s/gosa_//; + + if (not -d $main::client_fai_log_dir) { + my $error_string = "client fai log directory '$main::client_fai_log_dir' do not exist"; + &main::daemon_log("$session_id ERROR: $error_string", 1); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + + # build out_msg + my $out_hash = &create_xml_hash($header, $target, $source); + + # read mac directory + opendir(DIR, $main::client_fai_log_dir); + my @avail_macs = readdir(DIR); + closedir(DIR); + foreach my $avail_mac (@avail_macs) { + # check mac address + if ($avail_mac eq ".." || $avail_mac eq ".") { next; } + + # read install dates directory + my $mac_dir = File::Spec->catdir($main::client_fai_log_dir, $avail_mac); + opendir(DIR, $mac_dir); + my @avail_dates = readdir(DIR); + closedir(DIR); + foreach my $date ( @{$date_l} ) { # multiple date selection is allowed + foreach my $avail_date (@avail_dates) { + # check install date + if ($avail_date eq ".." || $avail_date eq ".") { next; } + if (not $avail_date =~ /$date/i) { next; } + + # add content to out_msg + &add_content2xml_hash($out_hash, $avail_date, $avail_mac); + } + } + } + + $out_msg = &create_xml_string($out_hash); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return ($out_msg); +} + + +#=== FUNCTION ================================================================ +# NAME: show_log_by_mac +# DESCRIPTION: reporting installation dates matching to regex of mac address +# PARAMETERS: [$msg] original incoming message +# [$msg_hash] incoming message transformed to hash concerning XML::Simple +# [$session_id] POE session id +# RETURNS: gosa-si valid answer string +#=============================================================================== +sub show_log_by_mac { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $mac_l = $msg_hash->{mac}; + + $header =~ s/gosa_//; + + if (not -d $main::client_fai_log_dir) { + my $error_string = "client fai log directory '$main::client_fai_log_dir' do not exist"; + &main::daemon_log("$session_id ERROR: $error_string", 1); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + + # build out_msg + my $out_hash = &create_xml_hash($header, $target, $source); + + # read mac directory + opendir(DIR, $main::client_fai_log_dir); + my @avail_macs = readdir(DIR); + closedir(DIR); + foreach my $mac (@{$mac_l}) { # multiple mac selection is allowed + foreach my $avail_mac ( @avail_macs ) { + # check mac address + if ($avail_mac eq ".." || $avail_mac eq ".") { next; } + if (not $avail_mac =~ /$mac/i) { next; } + + # read install dates directory + my $act_log_dir = File::Spec->catdir($main::client_fai_log_dir, $avail_mac); + if (not -d $act_log_dir) { next; } + opendir(DIR, $act_log_dir); + my @avail_dates = readdir(DIR); + closedir(DIR); + $avail_mac =~ s/:/_/g; # make mac address XML::Simple valid + foreach my $avail_date (@avail_dates) { + # check install date + if ($avail_date eq ".." || $avail_date eq ".") { next; } + + # add content to out_msg + &add_content2xml_hash($out_hash, "mac_$avail_mac", $avail_date); + } + } + } + + my $out_msg = &create_xml_string($out_hash); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return ($out_msg); +} + + +#=== FUNCTION ================================================================ +# NAME: show_log_by_date_and_mac +# DESCRIPTION: reporting host and installation dates matching to regex of date and regex of mac address +# PARAMETERS: [$msg] original incoming message +# [$msg_hash] incoming message transformed to hash concerning XML::Simple +# [$session_id] POE session id +# RETURNS: gosa-si valid answer string +#=============================================================================== +sub show_log_by_date_and_mac { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $date = @{$msg_hash->{date}}[0]; + my $mac = @{$msg_hash->{mac}}[0]; + $header =~ s/gosa_//; + + if (not -d $main::client_fai_log_dir) { + my $error_string = "client fai log directory '$main::client_fai_log_dir' do not exist"; + &main::daemon_log("$session_id ERROR: $error_string", 1); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + + # build out_msg + my $out_hash = &create_xml_hash($header, $target, $source); + + # read mac directory + opendir(DIR, $main::client_fai_log_dir); + my @avail_macs = readdir(DIR); + closedir(DIR); + foreach my $avail_mac ( @avail_macs ) { + # check mac address + if ($avail_mac eq ".." || $avail_mac eq ".") { next; } + if (not $avail_mac =~ /$mac/i) { next; } + my $act_log_dir = File::Spec->catdir($main::client_fai_log_dir, $avail_mac); + + # read install date directory + opendir(DIR, $act_log_dir); + my @install_dates = readdir(DIR); + closedir(DIR); + foreach my $avail_date (@install_dates) { + # check install date + if ($avail_date eq ".." || $avail_date eq ".") { next; } + if (not $avail_date =~ /$date/i) { next; } + + # add content to out_msg + &add_content2xml_hash($out_hash, $avail_date, $avail_mac); + } + } + + my $out_msg = &create_xml_string($out_hash); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return $out_msg; +} + + +#=== FUNCTION ================================================================ +# NAME: show_log_files_by_date_and_mac +# DESCRIPTION: reporting installation log files matching exatly to date and mac address +# PARAMETERS: [$msg] original incoming message +# [$msg_hash] incoming message transformed to hash concerning XML::Simple +# [$session_id] POE session id +# RETURNS: gosa-si valid answer string +#=============================================================================== +sub show_log_files_by_date_and_mac { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $date = @{$msg_hash->{date}}[0]; + my $mac = @{$msg_hash->{mac}}[0]; + $header =~ s/gosa_//; + + my $act_log_dir = File::Spec->catdir($main::client_fai_log_dir, $mac, $date); + if (not -d $act_log_dir) { + my $error_string = "client fai log directory '$act_log_dir' do not exist"; + &main::daemon_log("$session_id ERROR: $error_string", 1); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + + # build out_msg + my $out_hash = &create_xml_hash($header, $target, $source); + + # read mac / install date directory + opendir(DIR, $act_log_dir); + my @log_files = readdir(DIR); + closedir(DIR); + + foreach my $log_file (@log_files) { + if ($log_file eq ".." || $log_file eq ".") { next; } + + # add content to out_msg + &add_content2xml_hash($out_hash, $header, $log_file); + } + + my $out_msg = &create_xml_string($out_hash); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return $out_msg; +} + + +#=== FUNCTION ================================================================ +# NAME: get_log_file_by_date_and_mac +# DESCRIPTION: returning the given log file, base64 coded, matching exactly to date and mac address +# PARAMETERS: [$msg] original incoming message +# [$msg_hash] incoming message transformed to hash concerning XML::Simple +# [$session_id] POE session id +# RETURNS: gosa-si valid answer string +#=============================================================================== +sub get_log_file_by_date_and_mac { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $date = @{$msg_hash->{date}}[0]; + my $mac = @{$msg_hash->{mac}}[0]; + my $log_file = @{$msg_hash->{log_file}}[0]; + $header =~ s/gosa_//; + + # sanity check + my $act_log_file = File::Spec->catfile($main::client_fai_log_dir, $mac, $date, $log_file); + if (not -f $act_log_file) { + my $error_string = "client fai log file '$act_log_file' do not exist or could not be read"; + &main::daemon_log("$session_id ERROR: $error_string", 1); + &main::daemon_log("$session_id ERROR: mac='$mac', date='$date', log_file='$log_file'", 1); + &main::daemon_log("$session_id ERROR: could not process message: $msg", 1); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + + # read log file + my $log_content; + open(FILE, "<$act_log_file"); + my @log_lines = ; + close(FILE); + + # prepare content for xml sending + $log_content = join("", @log_lines); + $log_content = &encode_base64($log_content); + + # build out_msg and send + my $out_hash = &create_xml_hash($header, $target, $source); + &add_content2xml_hash($out_hash, $log_file, $log_content); + my $out_msg = &create_xml_string($out_hash); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return $out_msg; +} + + +# sorting function for fai log directory names +# used by get_recent_log_by_mac +sub transform { + my $a = shift; + $a =~ /_(\d{8}?)_(\d{6}?)$/ || return 0; + return int("$1$2"); +} +sub by_log_date { + &transform($a) <=> &transform($b); +} +#=== FUNCTION ================================================================ +# NAME: get_recent_log_by_mac +# DESCRIPTION: reporting the latest installation date matching to regex of mac address +# PARAMETERS: [$msg] original incoming message +# [$msg_hash] incoming message transformed to hash concerning XML::Simple +# [$session_id] POE session id +# RETURNS: gosa-si valid answer string +#=============================================================================== +sub get_recent_log_by_mac { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $mac = @{$msg_hash->{mac}}[0]; + $header =~ s/gosa_//; + + # sanity check + if (not -d $main::client_fai_log_dir) { + my $error_string = "client fai log directory '$main::client_fai_log_dir' do not exist"; + &main::daemon_log("$session_id ERROR: $error_string", 1); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + + opendir (DIR, $main::client_fai_log_dir); + my @avail_macs = readdir(DIR); + closedir(DIR); + my $act_log_dir; + my $act_mac; + foreach my $avail_mac (@avail_macs) { + if ($avail_mac eq ".." || $avail_mac eq ".") { next; } + if (not $avail_mac =~ /$mac/i) { next; } + $act_log_dir = File::Spec->catdir($main::client_fai_log_dir, $avail_mac); + $act_mac = $avail_mac; + } + if (not defined $act_log_dir) { + my $error_string = "do not find mac '$mac' in directory '$main::client_fai_log_dir'"; + &main::daemon_log("$session_id ERROR: $error_string", 1); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + + # read mac directory + opendir(DIR, $act_log_dir); + my @avail_dates = readdir(DIR); + closedir(DIR); + + # search for the latest log + my @sorted_dates = sort by_log_date @avail_dates; + my $latest_log = pop(@sorted_dates); + + # build out_msg + my $out_hash = &create_xml_hash($header, $target, $source); + + # read latest log directory + my $latest_log_dir = File::Spec->catdir($main::client_fai_log_dir, $act_mac, $latest_log); + opendir(DIR, $latest_log_dir); + my @log_files = readdir(DIR); + closedir(DIR); + + # add all log_files to out_msg + foreach my $log_file (@log_files) { + if ($log_file eq ".." || $log_file eq ".") { next; } + &add_content2xml_hash($out_hash, $latest_log, $log_file); + } + + my $out_msg = &create_xml_string($out_hash); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return $out_msg; +} + + +#=== FUNCTION ================================================================ +# NAME: delete_log_by_date_and_mac +# DESCRIPTION: delete installation date directory matching to regex of date and regex of mac address +# missing date or mac is substitutet with regex '.'; if both is missing, deleting is rejected +# PARAMETERS: [$msg] original incoming message +# [$msg_hash] incoming message transformed to hash concerning XML::Simple +# [$session_id] POE session id +# RETURNS: gosa-si valid answer string +#=============================================================================== +sub delete_log_by_date_and_mac { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $date = @{$msg_hash->{date}}[0]; + my $mac = @{$msg_hash->{mac}}[0]; + $header =~ s/gosa_//; + + # sanity check + if (not -d $main::client_fai_log_dir) { + my $error_string = "client fai log directory '$main::client_fai_log_dir' do not exist"; + &main::daemon_log("$session_id ERROR: $session_id", 1); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + if ((not defined $date) && (not defined $mac)) { + my $error_string = "deleting all log files from gosa-si-server by an empty delete message is not permitted"; + &main::daemon_log("$session_id INFO: $error_string", 5); + return &create_xml_string(&create_xml_hash($header, $target, $source, $error_string)); + } + if (not defined $date) { $date = "."; } # set date to a regular expression matching to everything + if (not defined $mac) { $mac = "."; } # set mac to a regular expression matching to everything + + # build out_msg + my $out_hash = &create_xml_hash($header, $target, $source); + + # read mac directory + opendir(DIR, $main::client_fai_log_dir); + my @avail_macs = readdir(DIR); + closedir(DIR); + foreach my $avail_mac ( @avail_macs ) { + # check mac address + if ($avail_mac eq ".." || $avail_mac eq ".") { next; } + if (not $avail_mac =~ /$mac/i) { next; } + my $act_log_dir = File::Spec->catdir($main::client_fai_log_dir, $avail_mac); + + # read install date directory + opendir(DIR, $act_log_dir); + my @install_dates = readdir(DIR); + closedir(DIR); + foreach my $avail_date (@install_dates) { + # check install date + if ($avail_date eq ".." || $avail_date eq ".") { next; } + if (not $avail_date =~ /$date/i) { next; } + + # delete directory and reptorting + my $dir_to_delete = File::Spec->catdir($main::client_fai_log_dir, $avail_mac, $avail_date); + #my $error = rmdir($dir_to_delete); + my $error = 0; + if ($error == 1) { + &main::daemon_log("$session_id ERROR: log directory '$dir_to_delete' cannot be deleted: $!", 1); + } else { + &main::daemon_log("$session_id INFO: log directory '$dir_to_delete' deleted", 5); + &add_content2xml_hash($out_hash, $avail_date, $avail_mac); + } + } + } + + my $out_msg = &create_xml_string($out_hash); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + + return $out_msg; +} + +1; diff --git a/trunk/gosa-si/server/events/mailqueue_com.pm b/trunk/gosa-si/server/events/mailqueue_com.pm new file mode 100644 index 000000000..87642ebd0 --- /dev/null +++ b/trunk/gosa-si/server/events/mailqueue_com.pm @@ -0,0 +1,264 @@ +=pod + +=head1 NAME + +mailqueue_com - Implementation of a GOsa-SI event module. + +=head1 SYNOPSIS + + use GOSA::GosaSupportDaemon; + use Time::HiRes qw(usleep); + use MIME::Base64; + +=head1 DESCRIPTION + +A GOsa-SI event module containing all functions used by GOsa mail queue. This module will +be automatically imported by GOsa-SI if it is under FPACKAGEMODULEE/> . + + +=head1 METHODS + +=cut + +package mailqueue_com; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "mailqueue_query", + "mailqueue_header", +); +@EXPORT = @events; + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Data::Dumper; +use Time::HiRes qw( usleep); +use MIME::Base64; + + +BEGIN {} + +END {} + +### Start ###################################################################### + +=pod + +=over 4 + +=item get_events ( ) + +Returns a list of functions which are exported by the module. + +=back + +=cut + +sub get_events { + return \@events; +} + + +=pod + +=over 4 + +=item mailqueue_query( $msg, $msg_hash, $session_id ) + +This function do for incoming messages with header 'mailqueue_query' the target translation from mac address to ip:port address, updates job_queue, send message to client and wait for client answer. + +Returns the answer of the client. + +=back + +=cut + +sub mailqueue_query { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + my $error = 0; + my $error_string; + my $answer_msg; + my ($sql, $res); + + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + # search for the correct target address + $sql = "SELECT * FROM $main::known_clients_tn WHERE ((hostname='$target') || (macaddress LIKE '$target'))"; + $res = $main::known_clients_db->exec_statement($sql); + my ($host_name, $host_key); # sanity check of db result + if ((defined $res) && (@$res > 0) && @{@$res[0]} > 0) { + $host_name = @{@$res[0]}[0]; + $host_key = @{@$res[0]}[2]; + } else { + &main::daemon_log("$session_id ERROR: cannot determine host_name and host_key from known_clients_db\n$msg", 1); + $error_string = "Cannot determine host_name and host_key from known_clients_db"; + $error = 1; + } + + # send message to target + if (not $error) { + $msg =~ s/GOSA<\/source>/$main::server_address<\/source>/g; + $msg =~ s/<\/xml>/$session_id<\/session_id><\/xml>/; + &main::send_msg_to_target($msg, $host_name, $host_key, $header, $session_id); + } + + # waiting for answer + if (not $error) { + my $message_id; + my $i = 0; + while (1) { + $i++; + $sql = "SELECT * FROM $main::incoming_tn WHERE headertag='answer_$session_id'"; + $res = $main::incoming_db->exec_statement($sql); + if (ref @$res[0] eq "ARRAY") { + $message_id = @{@$res[0]}[0]; + last; + } + if ($i > 100) { last; } # do not run into a endless loop + usleep(100000); + } + # if answer exists + if (defined $message_id) { + $answer_msg = decode_base64(@{@$res[0]}[4]); + $answer_msg =~ s/\S+<\/target>/$source<\/target>/; + $answer_msg =~ s/
      \S+<\/header>/
      $header<\/header>/; + + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa){ + $answer_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + $sql = "DELETE FROM $main::incoming_tn WHERE id=$message_id"; + $res = $main::incoming_db->exec_statement($sql); + } + } + + return ( $answer_msg ); +} + +=pod + +=over 4 + +=item mailqueue_header ( $msg, $msg_hash, $session_id ) + +This function do for incoming messages with header 'mailqueue_header' the target translation from mac address to ip:port address, updates job_queue, send message to client and wait for client answer. + +Returns the answer of the client. + +=back + +=cut +sub mailqueue_header { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $source = @{$msg_hash->{source}}[0]; + my $jobdb_id = @{$msg_hash->{'jobdb_id'}}[0]; + my $error = 0; + my $error_string; + my $answer_msg; + my ($sql, $res); + + if( defined $jobdb_id) { + my $sql_statement = "UPDATE $main::job_queue_tn SET status='processed' WHERE id=jobdb_id"; + &main::daemon_log("$session_id DEBUG: $sql_statement", 7); + my $res = $main::job_db->exec_statement($sql_statement); + } + + # search for the correct target address + $sql = "SELECT * FROM $main::known_clients_tn WHERE ((hostname='$target') || (macaddress LIKE '$target'))"; + $res = $main::known_clients_db->exec_statement($sql); + my ($host_name, $host_key); + if ((defined $res) && (@$res > 0) && @{@$res[0]} > 0) { # sanity check of db result + $host_name = @{@$res[0]}[0]; + $host_key = @{@$res[0]}[2]; + } else { + &main::daemon_log("$session_id ERROR: cannot determine host_name and host_key from known_clients_db\n$msg", 1); + $error_string = "Cannot determine host_name and host_key from known_clients_db"; + $error = 1; + } + + # send message to target + if (not $error) { + $msg =~ s/GOSA<\/source>/$main::server_address<\/source>/g; + $msg =~ s/<\/xml>/$session_id<\/session_id><\/xml>/; + &main::send_msg_to_target($msg, $host_name, $host_key, $header, $session_id); + } + + # waiting for answer + if (not $error) { + my $message_id; + my $i = 0; + while (1) { + $i++; + $sql = "SELECT * FROM $main::incoming_tn WHERE headertag='answer_$session_id'"; + $res = $main::incoming_db->exec_statement($sql); + if (ref @$res[0] eq "ARRAY") { + $message_id = @{@$res[0]}[0]; + last; + } + if ($i > 100) { last; } # do not run into a endless loop + usleep(100000); + } + # if answer exists + if (defined $message_id) { + $answer_msg = decode_base64(@{@$res[0]}[4]); + $answer_msg =~ s/\S+<\/target>/$source<\/target>/; + $answer_msg =~ s/
      \S+<\/header>/
      $header<\/header>/; + + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa){ + $answer_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + $sql = "DELETE FROM $main::incoming_tn WHERE id=$message_id"; + $res = $main::incoming_db->exec_statement($sql); + } + } + + return ( $answer_msg ); +} + + +=pod + +=head1 BUGS + +Please report any bugs, or post any suggestions, to the GOsa mailing list Egosa-devel@oss.gonicus.deE or to L + +=head1 COPYRIGHT + +This code is part of GOsa (L) + +Copyright (C) 2003-2008 GONICUS GmbH + +ID: $$Id$$ + +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 + + +=cut + +# vim:ts=4:shiftwidth:expandtab +1; diff --git a/trunk/gosa-si/server/events/opsi_com.pm b/trunk/gosa-si/server/events/opsi_com.pm new file mode 100644 index 000000000..957b7e67f --- /dev/null +++ b/trunk/gosa-si/server/events/opsi_com.pm @@ -0,0 +1,1292 @@ +## @file +# @details A GOsa-SI-server event module containing all functions for message handling. +# @brief Implementation of an event module for GOsa-SI-server. + + +package opsi_com; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "get_events", + "opsi_install_client", + "opsi_get_netboot_products", + "opsi_get_local_products", + "opsi_get_client_hardware", + "opsi_get_client_software", + "opsi_get_product_properties", + "opsi_set_product_properties", + "opsi_list_clients", + "opsi_del_client", + "opsi_add_client", + "opsi_modify_client", + "opsi_add_product_to_client", + "opsi_del_product_from_client", + ); +@EXPORT = @events; + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Data::Dumper; +use XML::Quote qw(:all); + + +BEGIN {} + +END {} + +## @method get_events() +# A brief function returning a list of functions which are exported by importing the module. +# @return List of all provided functions +sub get_events { + return \@events; +} + +## @method opsi_add_product_to_client +# Adds an Opsi product to an Opsi client. +# @param msg - STRING - xml message with tags hostId and productId +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_add_product_to_client { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my ($hostId, $productId); + my $error = 0; + + # Build return message + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((not exists $msg_hash->{'hostId'}) || (@{$msg_hash->{'hostId'}} != 1) || (@{$msg_hash->{'hostId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "no hostId specified or hostId tag invalid"); + &add_content2xml_hash($out_hash, "error", "hostId"); + &main::daemon_log("$session_id ERROR: no hostId specified or hostId tag invalid: $msg", 1); + + } + if ((not exists $msg_hash->{'productId'}) || (@{$msg_hash->{'productId'}} != 1) || (@{$msg_hash->{'productId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "no productId specified or productId tag invalid"); + &add_content2xml_hash($out_hash, "error", "productId"); + &main::daemon_log("$session_id ERROR: no productId specified or procutId tag invalid: $msg", 1); + } + + if (not $error) { + # Get hostId + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", $hostId); + + # Get productID + $productId = @{$msg_hash->{'productId'}}[0]; + &add_content2xml_hash($out_hash, "productId", $productId); + + # Do an action request for all these -> "setup". + my $callobj = { + method => 'setProductActionRequest', + params => [ $productId, $hostId, "setup" ], + id => 1, }; + + my $sres = $main::opsi_client->call($main::opsi_url, $callobj); + my ($sres_err, $sres_err_string) = &check_opsi_res($sres); + if ($sres_err){ + &main::daemon_log("$session_id ERROR: cannot add product: ".$sres_err_string, 1); + &add_content2xml_hash($out_hash, "error", $sres_err_string); + } + } + + # return message + return ( &create_xml_string($out_hash) ); +} + +## @method opsi_del_product_from_client +# Deletes an Opsi-product from an Opsi-client. +# @param msg - STRING - xml message with tags hostId and productId +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_del_product_from_client { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my ($hostId, $productId); + my $error = 0; + my ($sres, $sres_err, $sres_err_string); + + # Build return message + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((not exists $msg_hash->{'hostId'}) || (@{$msg_hash->{'hostId'}} != 1) || (@{$msg_hash->{'hostId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "no hostId specified or hostId tag invalid"); + &add_content2xml_hash($out_hash, "error", "hostId"); + &main::daemon_log("$session_id ERROR: no hostId specified or hostId tag invalid: $msg", 1); + + } + if ((not exists $msg_hash->{'productId'}) || (@{$msg_hash->{'productId'}} != 1) || (@{$msg_hash->{'productId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "no productId specified or productId tag invalid"); + &add_content2xml_hash($out_hash, "error", "productId"); + &main::daemon_log("$session_id ERROR: no productId specified or procutId tag invalid: $msg", 1); + } + + # All parameter available + if (not $error) { + # Get hostId + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", $hostId); + + # Get productID + $productId = @{$msg_hash->{'productId'}}[0]; + &add_content2xml_hash($out_hash, "productId", $productId); + + +#TODO : check the results for more than one entry which is currently installed + #$callobj = { + # method => 'getProductDependencies_listOfHashes', + # params => [ $productId ], + # id => 1, }; + # + #my $sres = $main::opsi_client->call($main::opsi_url, $callobj); + #my ($sres_err, $sres_err_string) = &check_opsi_res($sres); + #if ($sres_err){ + # &main::daemon_log("ERROR: cannot perform dependency check: ".$sres_err_string, 1); + # &add_content2xml_hash($out_hash, "error", $sres_err_string); + # return ( &create_xml_string($out_hash) ); + #} + + + # Check to get product action list + my $callobj = { + method => 'getPossibleProductActions_list', + params => [ $productId ], + id => 1, }; + $sres = $main::opsi_client->call($main::opsi_url, $callobj); + ($sres_err, $sres_err_string) = &check_opsi_res($sres); + if ($sres_err){ + &main::daemon_log("$session_id ERROR: cannot get product action list: ".$sres_err_string, 1); + &add_content2xml_hash($out_hash, "error", $sres_err_string); + $error++; + } + } + + # Check action uninstall of product + if (not $error) { + my $uninst_possible= 0; + foreach my $r (@{$sres->result}) { + if ($r eq 'uninstall') { + $uninst_possible= 1; + } + } + if (!$uninst_possible){ + &main::daemon_log("$session_id ERROR: cannot uninstall product '$productId', product do not has the action 'uninstall'", 1); + &add_content2xml_hash($out_hash, "error", "cannot uninstall product '$productId', product do not has the action 'uninstall'"); + $error++; + } + } + + # Set product state to "none" + # Do an action request for all these -> "setup". + if (not $error) { + my $callobj = { + method => 'setProductActionRequest', + params => [ $productId, $hostId, "none" ], + id => 1, + }; + $sres = $main::opsi_client->call($main::opsi_url, $callobj); + ($sres_err, $sres_err_string) = &check_opsi_res($sres); + if ($sres_err){ + &main::daemon_log("$session_id ERROR: cannot delete product: ".$sres_err_string, 1); + &add_content2xml_hash($out_hash, "error", $sres_err_string); + } + } + + # Return message + return ( &create_xml_string($out_hash) ); +} + +## @method opsi_add_client +# Adds an Opsi client to Opsi. +# @param msg - STRING - xml message with tags hostId and macaddress +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_add_client { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my ($hostId, $mac); + my $error = 0; + my ($sres, $sres_err, $sres_err_string); + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((not exists $msg_hash->{'hostId'}) || (@{$msg_hash->{'hostId'}} != 1) || (@{$msg_hash->{'hostId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "no hostId specified or hostId tag invalid"); + &add_content2xml_hash($out_hash, "error", "hostId"); + &main::daemon_log("$session_id ERROR: no hostId specified or hostId tag invalid: $msg", 1); + } + if ((not exists $msg_hash->{'macaddress'}) || (@{$msg_hash->{'macaddress'}} != 1) || (@{$msg_hash->{'macaddress'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "no macaddress specified or macaddress tag invalid"); + &add_content2xml_hash($out_hash, "error", "macaddress"); + &main::daemon_log("$session_id ERROR: no macaddress specified or macaddress tag invalid: $msg", 1); + } + + if (not $error) { + # Get hostId + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", $hostId); + + # Get macaddress + $mac = @{$msg_hash->{'macaddress'}}[0]; + &add_content2xml_hash($out_hash, "macaddress", $mac); + + my $name= $hostId; + $name=~ s/^([^.]+).*$/$1/; + my $domain= $hostId; + $domain=~ s/^[^.]+\.(.*)$/$1/; + my ($description, $notes, $ip); + + if (defined @{$msg_hash->{'description'}}[0]){ + $description = @{$msg_hash->{'description'}}[0]; + } + if (defined @{$msg_hash->{'notes'}}[0]){ + $notes = @{$msg_hash->{'notes'}}[0]; + } + if (defined @{$msg_hash->{'ip'}}[0]){ + $ip = @{$msg_hash->{'ip'}}[0]; + } + + my $callobj; + $callobj = { + method => 'createClient', + params => [ $name, $domain, $description, $notes, $ip, $mac ], + id => 1, + }; + + $sres = $main::opsi_client->call($main::opsi_url, $callobj); + ($sres_err, $sres_err_string) = &check_opsi_res($sres); + if ($sres_err){ + &main::daemon_log("$session_id ERROR: cannot create client: ".$sres_err_string, 1); + &add_content2xml_hash($out_hash, "error", $sres_err_string); + } else { + &main::daemon_log("$session_id INFO: add opsi client '$hostId' with mac '$mac'", 5); + } + } + + # Return message + return ( &create_xml_string($out_hash) ); +} + +## @method opsi_modify_client +# Modifies the parameters description, mac or notes for an Opsi client if the corresponding message tags are given. +# @param msg - STRING - xml message with tag hostId and optional description, mac or notes +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_modify_client { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my $hostId; + my $error = 0; + my ($sres, $sres_err, $sres_err_string); + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((not exists $msg_hash->{'hostId'}) || (@{$msg_hash->{'hostId'}} != 1) || (@{$msg_hash->{'hostId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "no hostId specified or hostId tag invalid"); + &add_content2xml_hash($out_hash, "error", "hostId"); + &main::daemon_log("$session_id ERROR: no hostId specified or hostId tag invalid: $msg", 1); + } + + if (not $error) { + # Get hostId + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", $hostId); + my $name= $hostId; + $name=~ s/^([^.]+).*$/$1/; + my $domain= $hostId; + $domain=~ s/^[^.]+(.*)$/$1/; + + # Modify description, notes or mac if defined + my ($description, $notes, $mac); + my $callobj; + if ((exists $msg_hash->{'description'}) && (@{$msg_hash->{'description'}} == 1) ){ + $description = @{$msg_hash->{'description'}}[0]; + $callobj = { + method => 'setHostDescription', + params => [ $hostId, $description ], + id => 1, + }; + my $sres = $main::opsi_client->call($main::opsi_url, $callobj); + my ($sres_err, $sres_err_string) = &check_opsi_res($sres); + if ($sres_err){ + &main::daemon_log("ERROR: cannot set description: ".$sres_err_string, 1); + &add_content2xml_hash($out_hash, "error", $sres_err_string); + } + } + if ((exists $msg_hash->{'notes'}) && (@{$msg_hash->{'notes'}} == 1)) { + $notes = @{$msg_hash->{'notes'}}[0]; + $callobj = { + method => 'setHostNotes', + params => [ $hostId, $notes ], + id => 1, + }; + my $sres = $main::opsi_client->call($main::opsi_url, $callobj); + my ($sres_err, $sres_err_string) = &check_opsi_res($sres); + if ($sres_err){ + &main::daemon_log("ERROR: cannot set notes: ".$sres_err_string, 1); + &add_content2xml_hash($out_hash, "error", $sres_err_string); + } + } + if ((exists $msg_hash->{'mac'}) && (@{$msg_hash->{'mac'}} == 1)){ + $mac = @{$msg_hash->{'mac'}}[0]; + $callobj = { + method => 'setMacAddress', + params => [ $hostId, $mac ], + id => 1, + }; + my $sres = $main::opsi_client->call($main::opsi_url, $callobj); + my ($sres_err, $sres_err_string) = &check_opsi_res($sres); + if ($sres_err){ + &main::daemon_log("ERROR: cannot set mac address: ".$sres_err_string, 1); + &add_content2xml_hash($out_hash, "error", $sres_err_string); + } + } + } + + # Return message + return ( &create_xml_string($out_hash) ); +} + + +## @method opsi_get_netboot_products +# Get netboot products for specific host. +# @param msg - STRING - xml message with tag hostId +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_get_netboot_products { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my $hostId; + my $xml_msg; + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Get hostId if defined + if ((exists $msg_hash->{'hostId'}) && (@{$msg_hash->{'hostId'}} == 1)) { + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", $hostId); + } + + &add_content2xml_hash($out_hash, "xxx", ""); + $xml_msg = &create_xml_string($out_hash); + # For hosts, only return the products that are or get installed + my $callobj; + $callobj = { + method => 'getNetBootProductIds_list', + params => [ ], + id => 1, + }; + &main::daemon_log("$session_id DEBUG: send callobj to opsi_client: ".&opsi_callobj2string($callobj), 7); + &main::daemon_log("$session_id DEBUG: opsi_url $main::opsi_url", 7); + &main::daemon_log("$session_id DEBUG: waiting for answer from opsi_client!", 7); + my $res = $main::opsi_client->call($main::opsi_url, $callobj); + &main::daemon_log("$session_id DEBUG: get answer from opsi_client", 7); + my %r = (); + for (@{$res->result}) { $r{$_} = 1 } + + if (not &check_opsi_res($res)){ + + if (defined $hostId){ + + $callobj = { + method => 'getProductStates_hash', + params => [ $hostId ], + id => 1, + }; + + my $hres = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($hres)){ + my $htmp= $hres->result->{$hostId}; + + # check state != not_installed or action == setup -> load and add + foreach my $product (@{$htmp}){ + + if (!defined ($r{$product->{'productId'}})){ + next; + } + + # Now we've a couple of hashes... + if ($product->{'installationStatus'} ne "not_installed" or + $product->{'actionRequest'} eq "setup"){ + my $state= "".$product->{'installationStatus'}."".$product->{'actionRequest'}.""; + + $callobj = { + method => 'getProduct_hash', + params => [ $product->{'productId'} ], + id => 1, + }; + + my $sres = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($sres)){ + my $tres= $sres->result; + + my $name= xml_quote($tres->{'name'}); + my $r= $product->{'productId'}; + my $description= xml_quote($tres->{'description'}); + $name=~ s/\//\\\//; + $description=~ s/\//\\\//; + $xml_msg=~ s/<\/xxx>/\n$r<\/productId><\/name>$description<\/description><\/item>$state<\/xxx>/; + } + } + } + + } + + } else { + foreach my $r (@{$res->result}) { + $callobj = { + method => 'getProduct_hash', + params => [ $r ], + id => 1, + }; + + my $sres = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($sres)){ + my $tres= $sres->result; + + my $name= xml_quote($tres->{'name'}); + my $description= xml_quote($tres->{'description'}); + $name=~ s/\//\\\//; + $description=~ s/\//\\\//; + $xml_msg=~ s/<\/xxx>/\n$r<\/productId><\/name>$description<\/description><\/item><\/xxx>/; + } + } + + } + } + $xml_msg=~ s/<\/xxx>//; + + # Return message + return ( $xml_msg ); +} + + +## @method opsi_get_product_properties +# Get product properties for a product and a specific host or gobally for a product. +# @param msg - STRING - xml message with tags productId and optional hostId +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_get_product_properties { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my ($hostId, $productId); + my $xml_msg; + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((not exists $msg_hash->{'productId'}) || (@{$msg_hash->{'productId'}} != 1) || (@{$msg_hash->{'productId'}}[0] eq ref 'HASH')) { + &add_content2xml_hash($out_hash, "error_string", "no productId specified or productId tag invalid"); + &add_content2xml_hash($out_hash, "error", "productId"); + &main::daemon_log("$session_id ERROR: no productId specified or productId tag invalid: $msg", 1); + + # Return message + return ( &create_xml_string($out_hash) ); + } + + # Get productid + $productId = @{$msg_hash->{'productId'}}[0]; + &add_content2xml_hash($out_hash, "producId", "$productId"); + + # Get hostId if defined + if (defined @{$msg_hash->{'hostId'}}[0]){ + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", $hostId); + } + + # Load actions + my $callobj = { + method => 'getPossibleProductActions_list', + params => [ $productId ], + id => 1, + }; + my $res = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($res)){ + foreach my $action (@{$res->result}){ + &add_content2xml_hash($out_hash, "action", $action); + } + } + + # Add place holder + &add_content2xml_hash($out_hash, "xxx", ""); + + # Move to XML string + $xml_msg= &create_xml_string($out_hash); + + # JSON Query + if (defined $hostId){ + $callobj = { + method => 'getProductProperties_hash', + params => [ $productId, $hostId ], + id => 1, + }; + } else { + $callobj = { + method => 'getProductProperties_hash', + params => [ $productId ], + id => 1, + }; + } + $res = $main::opsi_client->call($main::opsi_url, $callobj); + + # JSON Query 2 + $callobj = { + method => 'getProductPropertyDefinitions_listOfHashes', + params => [ $productId ], + id => 1, + }; + + # Assemble options + my $res2 = $main::opsi_client->call($main::opsi_url, $callobj); + my $values = {}; + my $descriptions = {}; + if (not &check_opsi_res($res2)){ + my $r= $res2->result; + + foreach my $entr (@$r){ + # Unroll values + my $cnv; + if (UNIVERSAL::isa( $entr->{'values'}, "ARRAY" )){ + foreach my $v (@{$entr->{'values'}}){ + $cnv.= "$v"; + } + } else { + $cnv= $entr->{'values'}; + } + $values->{$entr->{'name'}}= $cnv; + $descriptions->{$entr->{'name'}}= "".$entr->{'description'}.""; + } + } + + if (not &check_opsi_res($res)){ + my $r= $res->result; + foreach my $key (keys %{$r}) { + my $item= "\n"; + my $value= $r->{$key}; + my $dsc= ""; + my $vals= ""; + if (defined $descriptions->{$key}){ + $dsc= $descriptions->{$key}; + } + if (defined $values->{$key}){ + $vals= $values->{$key}; + } + $item.= "<$key>$dsc".xml_quote($value)."$vals"; + $item.= ""; + $xml_msg=~ s/<\/xxx>/$item<\/xxx>/; + } + } + + $xml_msg=~ s/<\/xxx>//; + + # Return message + return ( $xml_msg ); +} + + +## @method opsi_set_product_properties +# Set product properities for a specific host or globaly. Message needs one xml tag 'item' and within one xml tag 'name' and 'value'. The xml tags action and state are optional. +# @param msg - STRING - xml message with tags productId, action, state and optional hostId, action and state +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_set_product_properties { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my ($productId, $hostId); + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((not exists $msg_hash->{'productId'}) || (@{$msg_hash->{'productId'}} != 1) || (@{$msg_hash->{'productId'}}[0] eq ref 'HASH')) { + &add_content2xml_hash($out_hash, "error_string", "no productId specified or productId tag invalid"); + &add_content2xml_hash($out_hash, "error", "productId"); + &main::daemon_log("$session_id ERROR: no productId specified or productId tag invalid: $msg", 1); + return ( &create_xml_string($out_hash) ); + } + if (not exists $msg_hash->{'item'}) { + &add_content2xml_hash($out_hash, "error_string", "message needs one xml-tag 'item' and within the xml-tags 'name' and 'value'"); + &add_content2xml_hash($out_hash, "error", "item"); + &main::daemon_log("$session_id ERROR: message needs one xml-tag 'item' and within the xml-tags 'name' and 'value': $msg", 1); + return ( &create_xml_string($out_hash) ); + } else { + if ((not exists @{$msg_hash->{'item'}}[0]->{'name'}) || (@{@{$msg_hash->{'item'}}[0]->{'name'}} != 1 )) { + &add_content2xml_hash($out_hash, "error_string", "message needs within the xml-tag 'item' one xml-tags 'name'"); + &add_content2xml_hash($out_hash, "error", "name"); + &main::daemon_log("$session_id ERROR: message needs within the xml-tag 'item' one xml-tags 'name': $msg", 1); + return ( &create_xml_string($out_hash) ); + } + if ((not exists @{$msg_hash->{'item'}}[0]->{'value'}) || (@{@{$msg_hash->{'item'}}[0]->{'value'}} != 1 )) { + &add_content2xml_hash($out_hash, "error_string", "message needs within the xml-tag 'item' one xml-tags 'value'"); + &add_content2xml_hash($out_hash, "error", "value"); + &main::daemon_log("$session_id ERROR: message needs within the xml-tag 'item' one xml-tags 'value': $msg", 1); + return ( &create_xml_string($out_hash) ); + } + } + # if no hostId is given, set_product_properties will act on globally + if ((exists $msg_hash->{'hostId'}) && (@{$msg_hash->{'hostId'}} > 1)) { + &add_content2xml_hash($out_hash, "error_string", "hostId contains no or more than one values"); + &add_content2xml_hash($out_hash, "error", "hostId"); + &main::daemon_log("$session_id ERROR: hostId contains no or more than one values: $msg", 1); + return ( &create_xml_string($out_hash) ); + } + + + # Get productId + $productId = @{$msg_hash->{'productId'}}[0]; + &add_content2xml_hash($out_hash, "productId", $productId); + + # Get hostId if defined + if (exists $msg_hash->{'hostId'}){ + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", $hostId); + } + + # Set product states if requested + if (defined @{$msg_hash->{'action'}}[0]){ + &_set_action($productId, @{$msg_hash->{'action'}}[0], $hostId); + } + if (defined @{$msg_hash->{'state'}}[0]){ + &_set_state($productId, @{$msg_hash->{'state'}}[0], $hostId); + } + + # Find properties + foreach my $item (@{$msg_hash->{'item'}}){ + # JSON Query + my $callobj; + + if (defined $hostId){ + $callobj = { + method => 'setProductProperty', + params => [ $productId, $item->{'name'}[0], $item->{'value'}[0], $hostId ], + id => 1, + }; + } else { + $callobj = { + method => 'setProductProperty', + params => [ $productId, $item->{'name'}[0], $item->{'value'}[0] ], + id => 1, + }; + } + + my $res = $main::opsi_client->call($main::opsi_url, $callobj); + my ($res_err, $res_err_string) = &check_opsi_res($res); + + if ($res_err){ + &main::daemon_log("$session_id ERROR: communication failed while setting '".$item->{'name'}[0]."': ".$res_err_string, 1); + &add_content2xml_hash($out_hash, "error", $res_err_string); + } + } + + + # Return message + return ( &create_xml_string($out_hash) ); +} + + +## @method opsi_get_client_hardware +# Reports client hardware inventory. +# @param msg - STRING - xml message with tag hostId +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_get_client_hardware { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my $hostId; + my $error = 0; + my $xml_msg; + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((exists $msg_hash->{'hostId'}) && (@{$msg_hash->{'hostId'}} != 1) || (@{$msg_hash->{'hostId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "hostId contains no or more than one values"); + &add_content2xml_hash($out_hash, "error", "hostId"); + &main::daemon_log("$session_id ERROR: hostId contains no or more than one values: $msg", 1); + } + + if (not $error) { + + # Get hostId + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", "$hostId"); + &add_content2xml_hash($out_hash, "xxx", ""); + } + + # Move to XML string + $xml_msg= &create_xml_string($out_hash); + + if (not $error) { + + # JSON Query + my $callobj = { + method => 'getHardwareInformation_hash', + params => [ $hostId ], + id => 1, + }; + + my $res = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($res)){ + my $result= $res->result; + if (ref $result eq "HASH") { + foreach my $r (keys %{$result}){ + my $item= "\n".xml_quote($r).""; + my $value= $result->{$r}; + foreach my $sres (@{$value}){ + + foreach my $dres (keys %{$sres}){ + if (defined $sres->{$dres}){ + $item.= "<$dres>".xml_quote($sres->{$dres}).""; + } + } + + } + $item.= ""; + $xml_msg=~ s%%$item%; + + } + } + } + + $xml_msg=~ s/<\/xxx>//; + + } + + # Return message + return ( $xml_msg ); +} + + +## @method opsi_list_clients +# Reports all Opsi clients. +# @param msg - STRING - xml message +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_list_clients { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + &add_content2xml_hash($out_hash, "xxx", ""); + + # Move to XML string + my $xml_msg= &create_xml_string($out_hash); + + # JSON Query + my $callobj = { + method => 'getClients_listOfHashes', + params => [ ], + id => 1, + }; + my $res = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($res)){ + foreach my $host (@{$res->result}){ + my $item= "\n".$host->{'hostId'}.""; + if (defined($host->{'description'})){ + $item.= "".xml_quote($host->{'description'}).""; + } + if (defined($host->{'notes'})){ + $item.= "".xml_quote($host->{'notes'}).""; + } + if (defined($host->{'lastSeen'})){ + $item.= "".xml_quote($host->{'lastSeen'}).""; + } + + $callobj = { + method => 'getIpAddress', + params => [ $host->{'hostId'} ], + id => 1, + }; + my $sres= $main::opsi_client->call($main::opsi_url, $callobj); + if ( not &check_opsi_res($sres)){ + $item.= "".xml_quote($sres->result).""; + } + + $callobj = { + method => 'getMacAddress', + params => [ $host->{'hostId'} ], + id => 1, + }; + $sres= $main::opsi_client->call($main::opsi_url, $callobj); + if ( not &check_opsi_res($sres)){ + $item.= "".xml_quote($sres->result).""; + } + $item.= ""; + $xml_msg=~ s%%$item%; + } + } + + $xml_msg=~ s/<\/xxx>//; + return ( $xml_msg ); +} + + + +## @method opsi_get_client_software +# Reports client software inventory. +# @param msg - STRING - xml message with tag hostId +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_get_client_software { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my $error = 0; + my $hostId; + my $xml_msg; + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((exists $msg_hash->{'hostId'}) && (@{$msg_hash->{'hostId'}} != 1) || (@{$msg_hash->{'hostId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "hostId contains no or more than one values"); + &add_content2xml_hash($out_hash, "error", "hostId"); + &main::daemon_log("$session_id ERROR: hostId contains no or more than one values: $msg", 1); + } + + if (not $error) { + + # Get hostId + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", "$hostId"); + &add_content2xml_hash($out_hash, "xxx", ""); + } + + $xml_msg= &create_xml_string($out_hash); + + if (not $error) { + + # JSON Query + my $callobj = { + method => 'getSoftwareInformation_hash', + params => [ $hostId ], + id => 1, + }; + + my $res = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($res)){ + my $result= $res->result; +# TODO : Ist das hier schon fertig??? + } + + $xml_msg=~ s/<\/xxx>//; + + } + + # Return message + return ( $xml_msg ); +} + + +## @method opsi_get_local_products +# Reports product for given hostId or globally. +# @param msg - STRING - xml message with optional tag hostId +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_get_local_products { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my $hostId; + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + &add_content2xml_hash($out_hash, "xxx", ""); + + # Get hostId if defined + if ((exists $msg_hash->{'hostId'}) && (@{$msg_hash->{'hostId'}} == 1)) { + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", $hostId); + } + + # Move to XML string + my $xml_msg= &create_xml_string($out_hash); + + # For hosts, only return the products that are or get installed + my $callobj; + $callobj = { + method => 'getLocalBootProductIds_list', + params => [ ], + id => 1, + }; + + my $res = $main::opsi_client->call($main::opsi_url, $callobj); + my %r = (); + for (@{$res->result}) { $r{$_} = 1 } + + if (not &check_opsi_res($res)){ + + if (defined $hostId){ + $callobj = { + method => 'getProductStates_hash', + params => [ $hostId ], + id => 1, + }; + + my $hres = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($hres)){ + my $htmp= $hres->result->{$hostId}; + + # Check state != not_installed or action == setup -> load and add + foreach my $product (@{$htmp}){ + + if (!defined ($r{$product->{'productId'}})){ + next; + } + + # Now we've a couple of hashes... + if ($product->{'installationStatus'} ne "not_installed" or + $product->{'actionRequest'} eq "setup"){ + my $state= "".$product->{'installationStatus'}."".$product->{'actionRequest'}.""; + + $callobj = { + method => 'getProduct_hash', + params => [ $product->{'productId'} ], + id => 1, + }; + + my $sres = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($sres)){ + my $tres= $sres->result; + + my $name= xml_quote($tres->{'name'}); + my $r= $product->{'productId'}; + my $description= xml_quote($tres->{'description'}); + $name=~ s/\//\\\//; + $description=~ s/\//\\\//; + $xml_msg=~ s/<\/xxx>/\n$r<\/productId><\/name>$description<\/description><\/item>$state<\/xxx>/; + } + + } + } + + } + + } else { + foreach my $r (@{$res->result}) { + $callobj = { + method => 'getProduct_hash', + params => [ $r ], + id => 1, + }; + + my $sres = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($sres)){ + my $tres= $sres->result; + + my $name= xml_quote($tres->{'name'}); + my $description= xml_quote($tres->{'description'}); + $name=~ s/\//\\\//; + $description=~ s/\//\\\//; + $xml_msg=~ s/<\/xxx>/\n$r<\/productId><\/name>$description<\/description><\/item><\/xxx>/; + } + + } + + } + } + + $xml_msg=~ s/<\/xxx>//; + + # Retrun Message + return ( $xml_msg ); +} + + +## @method opsi_del_client +# Deletes a client from Opsi. +# @param msg - STRING - xml message with tag hostId +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_del_client { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + my $hostId; + my $error = 0; + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((exists $msg_hash->{'hostId'}) && (@{$msg_hash->{'hostId'}} != 1) || (@{$msg_hash->{'hostId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "hostId contains no or more than one values"); + &add_content2xml_hash($out_hash, "error", "hostId"); + &main::daemon_log("$session_id ERROR: hostId contains no or more than one values: $msg", 1); + } + + if (not $error) { + + # Get hostId + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", "$hostId"); + + # JSON Query + my $callobj = { + method => 'deleteClient', + params => [ $hostId ], + id => 1, + }; + my $res = $main::opsi_client->call($main::opsi_url, $callobj); + } + + # Move to XML string + my $xml_msg= &create_xml_string($out_hash); + + # Return message + return ( $xml_msg ); +} + + +## @method opsi_install_client +# Set a client in Opsi to install and trigger a wake on lan message (WOL). +# @param msg - STRING - xml message with tags hostId, macaddress +# @param msg_hash - HASHREF - message information parsed into a hash +# @param session_id - INTEGER - POE session id of the processing of this message +# @return out_msg - STRING - feedback to GOsa in success and error case +sub opsi_install_client { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + + + my ($hostId, $macaddress); + + my $error = 0; + my @out_msg_l; + + # Build return message with twisted target and source + my $out_hash = &main::create_xml_hash("answer_$header", $main::server_address, $source); + if (defined $forward_to_gosa) { + &add_content2xml_hash($out_hash, "forward_to_gosa", $forward_to_gosa); + } + + # Sanity check of needed parameter + if ((not exists $msg_hash->{'hostId'}) || (@{$msg_hash->{'hostId'}} != 1) || (@{$msg_hash->{'hostId'}}[0] eq ref 'HASH')) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "no hostId specified or hostId tag invalid"); + &add_content2xml_hash($out_hash, "error", "hostId"); + &main::daemon_log("$session_id ERROR: no hostId specified or hostId tag invalid: $msg", 1); + } + if ((not exists $msg_hash->{'macaddress'}) || (@{$msg_hash->{'macaddress'}} != 1) || (@{$msg_hash->{'macaddress'}}[0] eq ref 'HASH') ) { + $error++; + &add_content2xml_hash($out_hash, "error_string", "no macaddress specified or macaddress tag invalid"); + &add_content2xml_hash($out_hash, "error", "macaddress"); + &main::daemon_log("$session_id ERROR: no macaddress specified or macaddress tag invalid: $msg", 1); + } else { + if ((exists $msg_hash->{'macaddress'}) && + ($msg_hash->{'macaddress'}[0] =~ /^([0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2})$/i)) { + $macaddress = $1; + } else { + $error ++; + &add_content2xml_hash($out_hash, "error_string", "given mac address is not correct"); + &add_content2xml_hash($out_hash, "error", "macaddress"); + &main::daemon_log("$session_id ERROR: given mac address is not correct: $msg", 1); + } + } + + if (not $error) { + + # Get hostId + $hostId = @{$msg_hash->{'hostId'}}[0]; + &add_content2xml_hash($out_hash, "hostId", "$hostId"); + + # Load all products for this host with status != "not_installed" or actionRequest != "none" + my $callobj = { + method => 'getProductStates_hash', + params => [ $hostId ], + id => 1, + }; + + my $hres = $main::opsi_client->call($main::opsi_url, $callobj); + if (not &check_opsi_res($hres)){ + my $htmp= $hres->result->{$hostId}; + + # check state != not_installed or action == setup -> load and add + foreach my $product (@{$htmp}){ + # Now we've a couple of hashes... + if ($product->{'installationStatus'} ne "not_installed" or + $product->{'actionRequest'} ne "none"){ + + # Do an action request for all these -> "setup". + $callobj = { + method => 'setProductActionRequest', + params => [ $product->{'productId'}, $hostId, "setup" ], + id => 1, + }; + my $res = $main::opsi_client->call($main::opsi_url, $callobj); + my ($res_err, $res_err_string) = &check_opsi_res($res); + if ($res_err){ + &main::daemon_log("$session_id ERROR: cannot set product action request for '$hostId': ".$product->{'productId'}, 1); + } else { + &main::daemon_log("$session_id INFO: requesting 'setup' for '".$product->{'productId'}."' on $hostId", 1); + } + } + } + } + push(@out_msg_l, &create_xml_string($out_hash)); + + + # Build wakeup message for client + if (not $error) { + my $wakeup_hash = &create_xml_hash("trigger_wake", "GOSA", "KNOWN_SERVER"); + &add_content2xml_hash($wakeup_hash, 'macaddress', $macaddress); + my $wakeup_msg = &create_xml_string($wakeup_hash); + push(@out_msg_l, $wakeup_msg); + + # invoke trigger wake for this gosa-si-server + &main::server_server_com::trigger_wake($wakeup_msg, $wakeup_hash, $session_id); + } + } + + # Return messages + return @out_msg_l; +} + + +## @method _set_action +# Set action for an Opsi client +# @param product - STRING - Opsi product +# @param action - STRING - action +# @param hostId - STRING - Opsi hostId +sub _set_action { + my $product= shift; + my $action = shift; + my $hostId = shift; + my $callobj; + + $callobj = { + method => 'setProductActionRequest', + params => [ $product, $hostId, $action], + id => 1, + }; + + $main::opsi_client->call($main::opsi_url, $callobj); +} + +## @method _set_state +# Set state for an Opsi client +# @param product - STRING - Opsi product +# @param action - STRING - state +# @param hostId - STRING - Opsi hostId +sub _set_state { + my $product = shift; + my $state = shift; + my $hostId = shift; + my $callobj; + + $callobj = { + method => 'setProductState', + params => [ $product, $hostId, $state ], + id => 1, + }; + + $main::opsi_client->call($main::opsi_url, $callobj); +} + +1; diff --git a/trunk/gosa-si/server/events/server_server_com.pm b/trunk/gosa-si/server/events/server_server_com.pm new file mode 100644 index 000000000..7394fab13 --- /dev/null +++ b/trunk/gosa-si/server/events/server_server_com.pm @@ -0,0 +1,406 @@ +package server_server_com; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + 'information_sharing', + 'new_server', + 'confirm_new_server', + 'new_foreign_client', + 'trigger_wake', + 'foreign_job_updates', + 'confirm_usr_msg', + ); +@EXPORT = @events; + +use strict; +use warnings; +use Data::Dumper; +use GOSA::GosaSupportDaemon; +use Time::HiRes qw( usleep); +use Socket; + + +BEGIN {} + +END {} + +### Start ###################################################################### + +sub get_events { + return \@events; +} + + +sub information_sharing { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + + # Handling of msg tag 'new_user' + if (exists $msg_hash->{'new_user'}) { + my $new_user_list = $msg_hash->{'new_user'}; + + # Sanity check of new_user_list + if (ref($new_user_list) eq 'HASH') { + &main::daemon_log("$session_id ERROR: 'new_user'-tag in incoming msg has no content!", 1); + + } else { + # Add each user to login_users_db + foreach my $new_user_info (@$new_user_list) { + my ($client, $user) = split(/;/, $new_user_info); + &main::daemon_log("$session_id INFO: server '$source' reports user '$user' is logged in at client '$client'"); + my %add_hash = ( table=>$main::login_users_tn, + primkey=> ['client', 'user'], + client=>$client, + user=>$user, + timestamp=>&get_time, + regserver=>$source, + ); + my ($res, $error_str) = $main::login_users_db->add_dbentry( \%add_hash ); + if ($res != 0) { + &main::daemon_log("$session_id ERROR: cannot add entry to known_clients: $error_str", 1); + } + } + } + } + + # Handling of msg tag 'user_db' + if (exists $msg_hash->{'user_db'}) { + my $user_db_list = $msg_hash->{'user_db'}; + + # Sanity check of user_db_list + if (ref($user_db_list) eq 'HASH') { + &main::daemon_log("$session_id ERROR: 'user_db'-tag in incoming msg has no content!", 1); + + } else { + # Delete all old login information + my $sql = "DELETE FROM $main::login_users_tn WHERE regserver='$source'"; + my $res = $main::login_users_db->exec_statement($sql); + + # Add each user to login_users_db + foreach my $user_db_info (@$user_db_list) { + my ($client, $user) = split(/;/, $user_db_info); + &main::daemon_log("$session_id INFO: server '$source' reports user '$user' is logged in at client '$client'"); + my %add_hash = ( table=>$main::login_users_tn, + primkey=> ['client', 'user'], + client=>$client, + user=>$user, + timestamp=>&get_time, + regserver=>$source, + ); + my ($res, $error_str) = $main::login_users_db->add_dbentry( \%add_hash ); + if ($res != 0) { + &main::daemon_log("$session_id ERROR: cannot add entry to known_clients: $error_str", 1); + } + } + } + } + + return; +} + +sub foreign_job_updates { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + + my @act_keys = keys %$msg_hash; + my @jobs; + foreach my $key (@act_keys) { + if ($key =~ /answer\d+/ ) { push(@jobs, $key); } + } + + foreach my $foreign_job (@jobs) { + + # add job to job queue + my $func_dic = {table=>$main::job_queue_tn, + primkey=>['macaddress', 'headertag'], + timestamp=>@{@{$msg_hash->{$foreign_job}}[0]->{'timestamp'}}[0], + status=>@{@{$msg_hash->{$foreign_job}}[0]->{'status'}}[0], + result=>@{@{$msg_hash->{$foreign_job}}[0]->{'result'}}[0], + progress=>@{@{$msg_hash->{$foreign_job}}[0]->{'progress'}}[0], + headertag=>@{@{$msg_hash->{$foreign_job}}[0]->{'headertag'}}[0], + targettag=>@{@{$msg_hash->{$foreign_job}}[0]->{'targettag'}}[0], + xmlmessage=>@{@{$msg_hash->{$foreign_job}}[0]->{'xmlmessage'}}[0], + macaddress=>@{@{$msg_hash->{$foreign_job}}[0]->{'macaddress'}}[0], + plainname=>@{@{$msg_hash->{$foreign_job}}[0]->{'plainname'}}[0], + siserver=>$source, + modified=>"0", + }; + my $res = $main::job_db->add_dbentry($func_dic); + if (not $res == 0) { + &main::daemon_log("$session_id ERROR: ServerPackages: process_job_msg: $res", 1); + } else { + &main::daemon_log("$session_id INFO: ServerPackages: $header, job '".@{@{$msg_hash->{$foreign_job}}[0]->{'headertag'}}[0]. + "' successfully added to job queue", 5); + } + } + + return; +} + + +sub new_server { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $target = @{$msg_hash->{'target'}}[0]; + my $key = @{$msg_hash->{'key'}}[0]; + my $mac = exists $msg_hash->{'macaddress'} ? @{$msg_hash->{'macaddress'}}[0] : "" ; + my @clients = exists $msg_hash->{'client'} ? @{$msg_hash->{'client'}} : qw(); + my @loaded_modules = exists $msg_hash->{'loaded_modules'} ? @{$msg_hash->{'loaded_modules'}} : qw(); + + # sanity check + if (ref $key eq 'HASH') { + &main::daemon_log("$session_id ERROR: 'new_server'-message from host '$source' contains no key!", 1); + return; + } + # add foreign server to known_server_db + my $func_dic = {table=>$main::known_server_tn, + primkey=>['hostname'], + hostname => $source, + macaddress => $mac, + status => "new_server", + hostkey => $key, + loaded_modules => join(',', @loaded_modules), + timestamp=>&get_time(), + }; + my $res = $main::known_server_db->add_dbentry($func_dic); + if (not $res == 0) { + &main::daemon_log("$session_id ERROR: server_server_com.pm: cannot add server to known_server_db: $res", 1); + } else { + &main::daemon_log("$session_id INFO: server_server_com.pm: server '$source' successfully added to known_server_db", 5); + } + + # delete all entries at foreign_clients_db coresponding to this server + my $del_sql = "DELETE FROM $main::foreign_clients_tn WHERE regserver='$source' "; + my $del_res = $main::foreign_clients_db->exec_statement($del_sql); + + # add clients of foreign server to known_foreign_clients_db + my @sql_list; + foreach my $client (@clients) { + my @client_details = split(/,/, $client); + + # workaround to avoid double entries in foreign_clients_db + my $del_sql = "DELETE FROM $main::foreign_clients_tn WHERE hostname='".$client_details[0]."'"; + push(@sql_list, $del_sql); + + my $sql = "INSERT INTO $main::foreign_clients_tn VALUES (" + ."'".$client_details[0]."'," # hostname + ."'".$client_details[1]."'," # macaddress + ."'".$source."'," # regserver + ."'".&get_time()."')"; # timestamp + push(@sql_list, $sql); + } + if (@sql_list) { + my $len = @sql_list; + $len /= 2; + &main::daemon_log("$session_id DEBUG: Inserting ".$len." entries to foreign_clients_db", 8); + my $res = $main::foreign_clients_db->exec_statementlist(\@sql_list); + } + + # fetch all registered clients + my $client_sql = "SELECT * FROM $main::known_clients_tn"; + my $client_res = $main::known_clients_db->exec_statement($client_sql); + + + # add already connected clients to registration message + my $myhash = &create_xml_hash('confirm_new_server', $main::server_address, $source); + &add_content2xml_hash($myhash, 'key', $key); + map(&add_content2xml_hash($myhash, 'client', @{$_}[0].",".@{$_}[4]), @$client_res); + + # add locally loaded gosa-si modules to registration message + my $loaded_modules = {}; + while (my ($package, $pck_info) = each %$main::known_modules) { + foreach my $act_module (keys(%{@$pck_info[2]})) { + $loaded_modules->{$act_module} = ""; + } + } + map(&add_content2xml_hash($myhash, "loaded_modules", $_), keys(%$loaded_modules)); + + # add macaddress to registration message + my ($host_ip, $host_port) = split(/:/, $source); + my $local_ip = &get_local_ip_for_remote_ip($host_ip); + my $network_interface= &get_interface_for_ip($local_ip); + my $host_mac = &get_mac_for_interface($network_interface); + &add_content2xml_hash($myhash, 'macaddress', $host_mac); + + # build registration message and send it + my $out_msg = &create_xml_string($myhash); + my $error = &main::send_msg_to_target($out_msg, $source, $main::ServerPackages_key, 'confirm_new_server', $session_id); + + return; +} + + +sub confirm_new_server { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $key = @{$msg_hash->{'key'}}[0]; + my $mac = exists $msg_hash->{'macaddress'} ? @{$msg_hash->{'macaddress'}}[0] : "" ; + my @clients = exists $msg_hash->{'client'} ? @{$msg_hash->{'client'}} : qw(); + my @loaded_modules = exists $msg_hash->{'loaded_modules'} ? @{$msg_hash->{'loaded_modules'}} : qw(); + + my $sql = "UPDATE $main::known_server_tn". + " SET status='$header', hostkey='$key', loaded_modules='".join(",",@loaded_modules)."', macaddress='$mac'". + " WHERE hostname='$source'"; + my $res = $main::known_server_db->update_dbentry($sql); + + # add clients of foreign server to known_foreign_clients_db + my @sql_list; + foreach my $client (@clients) { + my @client_details = split(/,/, $client); + + # workaround to avoid double entries in foreign_clients_db + my $del_sql = "DELETE FROM $main::foreign_clients_tn WHERE hostname='".$client_details[0]."'"; + push(@sql_list, $del_sql); + + my $sql = "INSERT INTO $main::foreign_clients_tn VALUES (" + ."'".$client_details[0]."'," # hostname + ."'".$client_details[1]."'," # macaddress + ."'".$source."'," # regserver + ."'".&get_time()."')"; # timestamp + push(@sql_list, $sql); + } + if (@sql_list) { + my $len = @sql_list; + $len /= 2; + &main::daemon_log("$session_id DEBUG: Inserting ".$len." entries to foreign_clients_db", 8); + my $res = $main::foreign_clients_db->exec_statementlist(\@sql_list); + } + + + return; +} + + +sub new_foreign_client { + my ($msg, $msg_hash, $session_id) = @_ ; + my $header = @{$msg_hash->{'header'}}[0]; + my $source = @{$msg_hash->{'source'}}[0]; + my $hostname = @{$msg_hash->{'client'}}[0]; + my $macaddress = @{$msg_hash->{'macaddress'}}[0]; + # if new client is known in known_clients_db + my $check_sql = "SELECT * FROM $main::known_clients_tn WHERE (macaddress LIKE '$macaddress')"; + my $check_res = $main::known_clients_db->select_dbentry($check_sql); + + if( (keys(%$check_res) == 1) ) { + my $host_key = $check_res->{1}->{'hostkey'}; + + # check if new client is still alive + my $client_hash = &create_xml_hash("ping", $main::server_address, $hostname); + &add_content2xml_hash($client_hash, 'session_id', $session_id); + my $client_msg = &create_xml_string($client_hash); + my $error = &main::send_msg_to_target($client_msg, $hostname, $host_key, 'ping', $session_id); + my $message_id; + my $i = 0; + while (1) { + $i++; + my $sql = "SELECT * FROM $main::incoming_tn WHERE headertag='answer_$session_id'"; + my $res = $main::incoming_db->exec_statement($sql); + if (ref @$res[0] eq "ARRAY") { + $message_id = @{@$res[0]}[0]; + last; + } + + # do not run into a endless loop + if ($i > 50) { last; } + usleep(100000); + } + + # client is alive + # -> new_foreign_client will be ignored + if (defined $message_id) { + &main::daemon_log("$session_id ERROR: At new_foreign_clients: host '$hostname' is reported as a new foreign client, ". + "but the host is still registered at this server. So, the new_foreign_client-msg will be ignored: $msg", 1); + } + } + + + # new client is not found in known_clients_db or + # new client is dead -> new_client-msg from foreign server is valid + # -> client will be deleted from known_clients_db + # -> inserted to foreign_clients_db + + my $del_sql = "DELETE FROM $main::known_clients_tn WHERE (hostname='$hostname')"; + my $del_res = $main::known_clients_db->exec_statement($del_sql); + my $func_dic = { table => $main::foreign_clients_tn, + primkey => ['hostname'], + hostname => $hostname, + macaddress => $macaddress, + regserver => $source, + timestamp => &get_time(), + }; + my $res = $main::foreign_clients_db->add_dbentry($func_dic); + if (not $res == 0) { + &main::daemon_log("$session_id ERROR: server_server_com.pm: cannot add server to foreign_clients_db: $res", 1); + } else { + &main::daemon_log("$session_id INFO: server_server_com.pm: client '$hostname' successfully added to foreign_clients_db", 5); + } + + return; +} + + +sub trigger_wake { + my ($msg, $msg_hash, $session_id) = @_ ; + + foreach (@{$msg_hash->{'macaddress'}}){ + &main::daemon_log("$session_id INFO: trigger wake for $_", 5); + my $host = $_; + my $ipaddr = '255.255.255.255'; + my $port = getservbyname('discard', 'udp'); + if (not defined $port) { + &main::daemon_log("$session_id ERROR: cannot determine port for wol $_: 'getservbyname('discard', 'udp')' failed!",1); + next; + } + + my ($raddr, $them, $proto); + my ($hwaddr, $hwaddr_re, $pkt); + + # get the hardware address (ethernet address) + $hwaddr_re = join(':', ('[0-9A-Fa-f]{1,2}') x 6); + if ($host =~ m/^$hwaddr_re$/) { + $hwaddr = $host; + } else { + &main::daemon_log("$session_id ERROR: trigger_wake called with non mac address", 1); + } + + # Generate magic sequence + foreach (split /:/, $hwaddr) { + $pkt .= chr(hex($_)); + } + $pkt = chr(0xFF) x 6 . $pkt x 16 . $main::wake_on_lan_passwd; + + # Allocate socket and send packet + + $raddr = gethostbyname($ipaddr); + if (not defined $raddr) { + &main::daemon_log("$session_id ERROR: cannot determine raddr for wol $_: 'gethostbyname($ipaddr)' failed!", 1); + next; + } + + $them = pack_sockaddr_in($port, $raddr); + $proto = getprotobyname('udp'); + + socket(S, AF_INET, SOCK_DGRAM, $proto) or die "socket : $!"; + setsockopt(S, SOL_SOCKET, SO_BROADCAST, 1) or die "setsockopt : $!"; + send(S, $pkt, 0, $them) or die "send : $!"; + close S; + } + + return; +} + + +sub confirm_usr_msg { + my ($msg, $msg_hash, $session_id) = @_ ; + &clMessages::confirm_usr_msg($msg, $msg_hash, $session_id); + return; +} + + +1; diff --git a/trunk/gosa-si/server/events/siTriggered.pm b/trunk/gosa-si/server/events/siTriggered.pm new file mode 100644 index 000000000..7de3c5a7c --- /dev/null +++ b/trunk/gosa-si/server/events/siTriggered.pm @@ -0,0 +1,254 @@ +package siTriggered; +use Exporter; +@ISA = qw(Exporter); +my @events = ( + "got_ping", + "detected_hardware", + "trigger_wake", + "reload_ldap_config", + ); +@EXPORT = @events; + +use strict; +use warnings; +use GOSA::GosaSupportDaemon; +use Socket; + + +BEGIN {} + +END {} + +### Start ###################################################################### + +my $ldap_uri; +my $ldap_base; +my $ldap_admin_dn; +my $ldap_admin_password; +my $mesg; + +my %cfg_defaults = ( + "server" => { + "ldap-uri" => [\$ldap_uri, ""], + "ldap-base" => [\$ldap_base, ""], + "ldap-admin-dn" => [\$ldap_admin_dn, ""], + "ldap-admin-password" => [\$ldap_admin_password, ""], + }, +); +&GOSA::GosaSupportDaemon::read_configfile($main::cfg_file, %cfg_defaults); + + +sub get_events { + return \@events; +} + + +#sub read_configfile { +# my ($cfg_file, %cfg_defaults) = @_; +# my $cfg; +# +# if( defined( $cfg_file) && ( (-s $cfg_file) > 0 )) { +# if( -r $cfg_file ) { +# $cfg = Config::IniFiles->new( -file => $cfg_file ); +# } else { +# &main::daemon_log("ERROR: siTriggered.pm couldn't read config file!", 1); +# } +# } else { +# $cfg = Config::IniFiles->new() ; +# } +# foreach my $section (keys %cfg_defaults) { +# foreach my $param (keys %{$cfg_defaults{ $section }}) { +# my $pinfo = $cfg_defaults{ $section }{ $param }; +# ${@$pinfo[0]} = $cfg->val( $section, $param, @$pinfo[1] ); +# } +# } +#} + + +sub reload_ldap_config { + my ($msg, $msg_hash, $session_id) = @_; + my $header = @{$msg_hash->{header}}[0]; + my $target = @{$msg_hash->{$header}}[0]; + + my $out_msg = &ClientPackages::new_ldap_config($target, $session_id); + my @out_msg_l = ( $out_msg ); + return @out_msg_l; +} + + +sub got_ping { + my ($msg, $msg_hash, $session_id) = @_; + + my $source = @{$msg_hash->{source}}[0]; + my $target = @{$msg_hash->{target}}[0]; + my $header = @{$msg_hash->{header}}[0]; + my $act_time = &get_time; + my @out_msg_l; + my $out_msg; + + $session_id = @{$msg_hash->{'session_id'}}[0]; + + # check known_clients_db + my $sql_statement = "SELECT * FROM known_clients WHERE hostname='$source'"; + my $query_res = $main::known_clients_db->select_dbentry( $sql_statement ); + if( 1 == keys %{$query_res} ) { + my $sql_statement= "UPDATE known_clients ". + "SET status='$header', timestamp='$act_time' ". + "WHERE hostname='$source'"; + my $res = $main::known_clients_db->update_dbentry( $sql_statement ); + } + + # check known_server_db + $sql_statement = "SELECT * FROM known_server WHERE hostname='$source'"; + $query_res = $main::known_server_db->select_dbentry( $sql_statement ); + if( 1 == keys %{$query_res} ) { + my $sql_statement= "UPDATE known_server ". + "SET status='$header', timestamp='$act_time' ". + "WHERE hostname='$source'"; + my $res = $main::known_server_db->update_dbentry( $sql_statement ); + } + + # create out_msg + my $out_hash = &create_xml_hash($header, $source, "GOSA"); + &add_content2xml_hash($out_hash, "session_id", $session_id); + $out_msg = &create_xml_string($out_hash); + my $forward_to_gosa = @{$msg_hash->{'forward_to_gosa'}}[0]; + if (defined $forward_to_gosa) { + $out_msg =~s/<\/xml>/$forward_to_gosa<\/forward_to_gosa><\/xml>/; + } + push(@out_msg_l, $out_msg); + + return @out_msg_l; +} + + +sub detected_hardware { + my ($msg, $msg_hash, $session_id) = @_; + my $address = $msg_hash->{source}[0]; + my $header = $msg_hash->{header}[0]; + my $gotoHardwareChecksum= $msg_hash->{detected_hardware}[0]->{gotoHardwareChecksum}; + + my $sql_statement= "SELECT * FROM known_clients WHERE hostname='$address'"; + my $res = $main::known_clients_db->select_dbentry( $sql_statement ); + + # check hit + my $hit_counter = keys %{$res}; + if( not $hit_counter == 1 ) { + &main::daemon_log("$session_id ERROR: more or no hit found in known_clients_db by query by '$address'", 1); + return; + } + + my $macaddress = $res->{1}->{macaddress}; + my $hostkey = $res->{1}->{hostkey}; + + if (not defined $macaddress) { + &main::daemon_log("$session_id ERROR: no mac address found for client $address", 1); + return; + } + # Build LDAP connection + my $ldap_handle = &main::get_ldap_handle($session_id); + if( not defined $ldap_handle ) { + &main::daemon_log("$session_id ERROR: cannot connect to ldap: $ldap_uri", 1); + return; + } + + # Perform search + $mesg = $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + filter => "(&(objectClass=GOhard)(|(macAddress=$macaddress)(dhcpHWaddress=ethernet $macaddress)))" + ); + + # We need to create a base entry first (if not done from ArpHandler) + if($mesg->count == 0) { + &main::daemon_log("INFO: Need to create a new LDAP Entry for client $address", 4); + my $ipaddress= $1 if $address =~ /^([0-9\.]*?):.*$/; + my $dnsname; + #FIXME: like in ClientPackages! + #if ( defined($heap->{force-hostname}->{$macaddress}) ){ + # $dnsname= $heap->{force-hostname}->{$macaddress}; + # &main::daemon_log("INFO: Using forced hostname $dnsname for client $address", 4); + if (-e "/var/tmp/$macaddress" ){ + open(TFILE, "< /var/tmp/$macaddress"); + $dnsname= ; + close(TFILE); + } else { + $dnsname= gethostbyaddr(inet_aton($ipaddress), AF_INET) || $ipaddress; + } + + my $cn = (($dnsname =~ /^(\d){1,3}\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}/) ? $dnsname : sprintf "%s", $dnsname =~ /([^\.]+)\.?/); + my $dn = "cn=$cn,ou=incoming,$ldap_base"; + &main::daemon_log("INFO: Creating entry for $dn",5); + my $entry= Net::LDAP::Entry->new( $dn ); + $entry->dn($dn); + $entry->add("objectClass" => "GOhard"); + $entry->add("cn" => $cn); + $entry->add("macAddress" => $macaddress); + $entry->add("gotomode" => "locked"); + $entry->add("gotoSysStatus" => "new-system"); + $entry->add("ipHostNumber" => $ipaddress); + if(defined($main::gosa_unit_tag) && length($main::gosa_unit_tag) > 0) { + $entry->add("objectClass" => "gosaAdministrativeUnitTag"); + $entry->add("gosaUnitTag" => $main::gosa_unit_tag); + } + my $res=$entry->update($ldap_handle); + if(defined($res->{'errorMessage'}) && + length($res->{'errorMessage'}) >0) { + &main::daemon_log("ERROR: can not add entries to LDAP: ".$res->{'errorMessage'}, 1); + return; + } else { + # Fill $mesg again + $mesg = $ldap_handle->search( + base => $ldap_base, + scope => 'sub', + filter => "(&(objectClass=GOhard)(|(macAddress=$macaddress)(dhcpHWaddress=ethernet $macaddress)))" + ); + } + } + + if($mesg->count == 1) { + my $entry= $mesg->entry(0); + $entry->changetype("modify"); + foreach my $attribute ( + "gotoSndModule", "ghNetNic", "gotoXResolution", "ghSoundAdapter", "ghCpuType", "gotoXkbModel", + "ghGfxAdapter", "gotoXMousePort", "ghMemSize", "gotoXMouseType", "ghUsbSupport", "gotoXHsync", + "gotoXDriver", "gotoXVsync", "gotoXMonitor", "gotoHardwareChecksum") { + if(defined($msg_hash->{detected_hardware}[0]->{$attribute}) && + length($msg_hash->{detected_hardware}[0]->{$attribute}) >0 ) { + if(defined($entry->get_value($attribute))) { + $entry->delete($attribute => []); + } + &main::daemon_log("INFO: Adding attribute $attribute with value ".$msg_hash->{detected_hardware}[0]->{$attribute},5); + $entry->add($attribute => $msg_hash->{detected_hardware}[0]->{$attribute}); + } + } + foreach my $attribute ( + "gotoModules", "ghScsiDev", "ghIdeDev") { + if(defined($msg_hash->{detected_hardware}[0]->{$attribute}) && + length($msg_hash->{detected_hardware}[0]->{$attribute}) >0 ) { + if(defined($entry->get_value($attribute))) { + $entry->delete($attribute => []); + } + foreach my $array_entry (keys %{{map { $_ => 1 } sort(@{$msg_hash->{detected_hardware}[0]->{$attribute}}) }}) { + $entry->add($attribute => $array_entry); + } + } + } + + my $res=$entry->update($ldap_handle); + if(defined($res->{'errorMessage'}) && + length($res->{'errorMessage'}) >0) { + &main::daemon_log("ERROR: can not add entries to LDAP: ".$res->{'errorMessage'}, 1); + } else { + &main::daemon_log("INFO: Added Hardware configuration to LDAP", 5); + } + } + + # if there is a job in job queue for this host and this macaddress, delete it, cause its no longer used + my $del_sql = "DELETE FROM $main::job_queue_tn WHERE (macaddress='$macaddress' AND headertag='$header')"; + my $del_res = $main::job_db->exec_statement($del_sql); + + return ; +} + +1; diff --git a/trunk/gosa-si/tests/client.php b/trunk/gosa-si/tests/client.php new file mode 100755 index 000000000..56206507d --- /dev/null +++ b/trunk/gosa-si/tests/client.php @@ -0,0 +1,231 @@ +#!/usr/bin/php5 -q +setEncryptionKey("secret-gosa-password"); + #$sock = new Socket_Client("10.89.1.42","20081",TRUE,5); + #$sock->setEncryptionKey("secret-gosa-password"); + + if($sock->connected()){ + + /* Prepare a hunge bunch of data to be send */ + # jobdb add + #$data = "
      gosa_network_completition
      GOSAGOSAws-muc-2
      "; + #$data = "
      job_sayHello
      10.89.1.155:2008300:01:6c:9d:b9:fa00:1B:77:04:8A:6C 20130102133908
      "; + #$data = "
      job_ping
      GOSA 00:01:6c:9d:b9:fa 00:01:6c:9d:b9:fa20130101000000
      "; + + # jobdb delete + #$data = "
      gosa_delete_jobdb_entry
      GOSA GOSA 3
      "; + + # smbhash + #$data = "
      gosa_gen_smb_hash
      GOSAGOSAtester
      "; + + # Reload ldap config + #$data = "
      gosa_trigger_reload_ldap_config
      GOSA00:01:6c:9d:b9:fa
      "; + + # jobdb update + #$data = "
      gosa_update_status_jobdb_entry
      GOSA GOSA 1 19700101000000
      "; + #$data = "
      gosa_update_status_jobdb_entry
      GOSAGOSA 00:01:6c:9d:b9:fa processing update
      "; + + # jobdb query + #$data = "
      gosa_query_jobdb
      GOSA GOSAandgt0le5
      "; + #$data = "
      gosa_query_jobdb
      GOSA GOSA like %0102%
      "; + #$data= "
      gosa_query_jobdb
      GOSA GOSAping03
      "; + #$data= "
      gosa_query_jobdb
      GOSA GOSAtrigger_action_reinstall025timestamp DESC
      "; + #$data= "
      gosa_query_jobdb
      GOSA GOSA
      "; + #$data= "
      gosa_query_fai_server
      GOSA GOSA
      "; + #$data= "
      gosa_query_fai_release
      GOSA GOSA
      "; + #$data= "
      gosa_query_packages_list
      GOSA GOSA
      "; + + + # jobdb count + #$data = "
      gosa_count_jobdb
      GOSA GOSA
      "; + #$data = "
      gosa_count_fai_server
      GOSA GOSA
      "; + #$data = "
      gosa_count_fai_release
      GOSA GOSA
      "; + + # jobdb clear + #$data = "
      gosa_clear_jobdb
      GOSA GOSA
      "; + + # set gosa-si-client to 'activated' + #$data = "
      job_set_activated_for_installation
      10.89.1.31:20083 GOSA 00:01:6c:9d:b9:fa22220101000000
      "; + + + # trigger jobs at client + #$data = "
      gosa_trigger_goto_settings_reload
      00:01:6c:9d:b9:fa GOSA
      "; + #$data = "
      gosa_detect_hardware
      10.89.1.31:20083 GOSA
      "; + #$data = "
      gosa_new_key_for_client
      00:01:6c:9d:b9:fa 10.89.1.31:20081
      "; + #$data = "
      job_trigger_action_wake
      00:01:6c:9d:b9:fa GOSA 19700101000000
      "; + #$data = "
      gosa_trigger_action_faireboot
      00:01:6c:9d:b9:fa GOSA
      "; + #$data = "
      gosa_trigger_action_reboot
      00:01:6c:9d:b9:fa GOSA
      "; + #$data = "
      gosa_trigger_action_halt
      00:01:6c:9d:b9:fa GOSA
      "; + #$data = "
      job_trigger_action_reinstall
      GOSA 00:01:6c:9d:b9:fa 00:01:6c:9d:b9:fa 19700101000000
      "; + #$data = "
      job_trigger_action_instant_update
      00:01:6c:9d:b9:fa GOSA 19700101000000
      "; + #$data = "
      gosa_new_ping
      00:01:6c:9d:b9:fa GOSA
      "; + + # get_login_usr_for_client + #$data = "
      gosa_get_login_usr_for_client
      GOSA GOSA 00:01:6c:9d:b9:fa
      "; + + # get_client_for_login_usr + #$data = "
      gosa_get_client_for_login_usr
      GOSA GOSA rettenbe
      "; + + # List all si-server providing opsi + #$data = "
      gosa_get_hosts_with_module
      GOSA 10.89.1.31:20081 mailqueue_com
      "; + $data = "
      gosa_get_hosts_with_module
      GOSA linux-cl-2:20081 mailqueue_com
      "; + + # Send messages to a user and displayed message via konch + #$data = "
      gosa_send_user_msg
      GOSA GOSA ".base64_encode("eine wichtige nachricht")." admin polle harald 20130101235959 ".base64_encode("kaffeepause")."
      "; + #$data = "
      gosa_send_user_msg
      10.89.1.30:20081 GOSA ".base64_encode("eine wichtige nachricht")." admin polle harald 20130101235959 ".base64_encode("kaffeepause")."
      "; + #$data = "
      gosa_send_user_msg
      10.89.1.30:20081 GOSA ".base64_encode("eine wichtige nachricht")." admin rettenbe 20130101235959 ".base64_encode("kaffeepause")."
      "; + + #$data = "
      gosa_set_last_system
      10.89.1.31:20082 GOSA 00:01:6c:9d:b9:fa 1.2.3.4 20081212000000
      "; + + ################## + # recreate fai dbs + #$data = "
      gosa_recreate_fai_server_db
      GOSA GOSA
      "; + #$data = "
      gosa_recreate_fai_release_db
      GOSA GOSA
      "; + #$data = "
      gosa_recreate_packages_list_db
      GOSA GOSA
      "; + + + ################ + # logHandling.pm + # all date and mac parameter accept regular expression as input unless other instructions are given + # show_log_by_mac, show_log_by_date, show_log_by_date_and_mac, show_log_files_by_date_and_mac, + # get_log_file_by_date_and_mac, delete_log_by_date_and_mac, get_recent_log_by_mac + #$data = "
      gosa_show_log_by_mac
      GOSA GOSA 00:01:6C:9D:B9:FA 00:01:6c:9d:b9:fb
      "; + #$data = "
      gosa_show_log_by_date
      GOSA GOSA 20080313 20080323
      "; + #$data = "
      gosa_show_log_by_date_and_mac
      GOSA GOSA 200803 00:01:6c:9d:b9:FA
      "; + #$data = "
      gosa_delete_log_by_date_and_mac
      GOSA GOSA 00:01:6c:9d:b9:fa
      "; + #$data = "
      gosa_get_recent_log_by_mac
      GOSA GOSA 00:01:6c:9d:b9:fa
      "; + # exact date and mac are required as input + #$data = "
      gosa_show_log_files_by_date_and_mac
      GOSA GOSA install_20080311_090900 00:01:6c:9d:b9:fa
      "; + #$data = "
      gosa_get_log_file_by_date_and_mac
      GOSA GOSA install_20080311_090900 00:01:6c:9d:b9:fa boot.log
      "; + + ######### + # Kerberos test query + #$data = "
      gosa_krb5_create_principal
      00:01:6c:9d:aa:16 horst@WIRECARD.SYSGOSA666
      "; + #$data = "
      gosa_krb5_modify_principal
      00:01:6c:9d:b9:fa horst@WIRECARD.SYSGOSA666
      "; + + #$data = "
      gosa_query_fai_server
      GOSA 10.89.1.131:20081
      "; + #$data = "
      gosa_ping
      00:01:6c:9d:aa:16 GOSA
      "; + #$data = "
      gosa_ping
      00:01:6c:9d:b9:fb GOSA
      "; + #$data = "
      gosa_get_dak_keyring
      GOSA GOSA
      "; + #$data = "
      job_ping
      GOSA 00:0c:29:02:e5:4d 00:0c:29:02:e5:4d29700101000000
      "; + + #$data = "
      gosa_network_completition
      GOSA GOSA localhost
      "; + + #################################################################### + # Opsi testing + + # Get all netboot products + #$data = "
      gosa_opsi_get_netboot_products
      GOSA GOSA
      "; + + # Get netboot product for specific host + #$data = "
      gosa_opsi_get_netboot_products
      GOSA GOSA linux-cl-2.intranet.gonicus.de
      "; + + # Get all localboot products + #$data = "
      gosa_opsi_get_local_products
      GOSA GOSA
      "; + + # Get localboot product for specific host + #$data = "
      gosa_opsi_get_local_products
      GOSA GOSA linux-cl-2.intranet.gonicus.de
      "; + + # Get product properties - global + #$data = "
      gosa_opsi_get_product_properties
      GOSA GOSA xpconfig
      "; + + # Get product properties - per host + #$data = "
      gosa_opsi_get_product_properties
      GOSA GOSA firefox linux-cl-2.intranet.gonicus.de
      "; + + # Set product properties - global + #$data = "
      gosa_opsi_set_product_properties
      GOSA 00:01:6c:9d:b9:fa javavm askbeforeinstfalse
      "; + + # Set product properties - per host + #$data = "
      gosa_opsi_set_product_properties
      GOSA 00:01:6c:9d:b9:fa linux-cl-2.intranet.gonicus.de firefox askbeforeinst false
      "; + + # Get hardware inventory + #$data = "
      gosa_opsi_get_client_hardware
      GOSA GOSA linux-cl-2.intranet.gonicus.de
      "; + #$data = "
      gosa_opsi_get_client_hardware
      GOSA GOSA der_neue.intranet.gonicus.de
      "; + + # Get software inventory + #$data = "
      gosa_opsi_get_client_software
      GOSA GOSA linux-cl-2.intranet.gonicus.de
      "; + + # List Opsi clients + #$data = "
      gosa_opsi_list_clients
      GOSA GOSA
      "; + + # Delete Opsi client + #$data = "
      gosa_opsi_del_client
      GOSA 00:01:6c:9d:b9:fa linux-cl-2.intranet.gonicus.de
      "; + + # Install Opsi client + # Please do always use 'job_...' and never 'gosa_...' otherways the job will never appear in job queue + #$data = "
      job_opsi_install_client
      GOSA 00:01:6c:9d:b9:fa linux-cl-2.intranet.gonicus.de 00:11:25:4b:8c:e5
      "; + + # Add Opsi client + #$data = "
      gosa_opsi_add_client
      GOSA 00:01:6c:9d:b9:fa linux-cl-2.intranet.gonicus.de 00:11:25:4b:8c:e5 Test halt 1.2.3.4 Im a note
      "; + + # Add product to Opsi client + #$data = "
      gosa_opsi_add_product_to_client
      GOSA 00:01:6c:9d:b9:fa 00:11:25:4b:8c:e5 linux-cl-2.intranet.gonicus.de winxppro
      "; + #$data = "
      gosa_opsi_add_product_to_client
      GOSA 00:01:6c:9d:b9:fa 00:11:25:4b:8c:e5 linux-cl-2.intranet.gonicus.de preloginloader
      "; + #$data = "
      gosa_opsi_add_product_to_client
      GOSA 00:01:6c:9d:b9:fa 00:11:25:4b:8c:e5 linux-cl-2.intranet.gonicus.de opsi-adminutils
      "; + #$data = "
      gosa_opsi_add_product_to_client
      GOSA 00:01:6c:9d:b9:fa 00:11:25:4b:8c:e5 linux-cl-2.intranet.gonicus.de xpconfig
      "; + #$data = "
      gosa_opsi_add_product_to_client
      GOSA 00:01:6c:9d:b9:fa 00:11:25:4b:8c:e5 linux-cl-2.intranet.gonicus.de hwaudit
      "; + #$data = "
      gosa_opsi_add_product_to_client
      GOSA 00:01:6c:9d:b9:fa 00:11:25:4b:8c:e5 linux-cl-2.intranet.gonicus.de javavm
      "; + #$data = "
      gosa_opsi_add_product_to_client
      GOSA 00:01:6c:9d:b9:fa 00:11:25:4b:8c:e5 linux-cl-2.intranet.gonicus.de firefox
      "; + #$data = "
      gosa_opsi_add_product_to_client
      GOSA 00:01:6c:9d:b9:fa 00:11:25:4b:8c:e5 linux-cl-2.intranet.gonicus.de flashplayer
      "; + + # Delete product from Opsi client + #$data = "
      gosa_opsi_del_product_from_client
      GOSA 00:01:6c:9d:b9:fa linux-cl-1.intranet.gonicus.de 00:11:25:4b:8c:e5 wipedisk
      "; + + ######################### + # Mailqueue communication + + # Writing data into a mailqueue + #echo sabber | mail -s test horst@woauchimmer.de + + # Querying the mailqueue at + #$data = "
      gosa_mailqueue_query
      GOSA 00:01:6c:9d:b9:fa
      "; + #$data = "
      gosa_mailqueue_query
      GOSA 00:01:6c:9d:b9:fa recipient eq retta
      "; + + # Multiple xml tags msg_id are allowed + #$data = "
      gosa_mailqueue_hold
      GOSA 00:01:6c:9d:b9:fa 99C8ABEF23
      "; + #$data = "
      gosa_mailqueue_unhold
      GOSA 00:01:6c:9d:b9:fa 5657EBEEF7
      "; + #$data = "
      gosa_mailqueue_requeue
      GOSA 00:01:6c:9d:b9:fa 11A09BEF04
      "; + #$data = "
      gosa_mailqueue_del
      GOSA 00:01:6c:9d:b9:fa CEAFDBEF45
      "; + + # Only one xml tag msg_id is allowed + #$data = "
      gosa_mailqueue_header
      GOSA 00:01:6c:9d:b9:fa EFD81BEF45
      "; + + ######################## + # DAK Debian Archive Kit + #$data = "
      gosa_get_dak_keyring
      GOSA 00:01:6c:9d:b9:fa
      "; + #$data = "
      gosa_import_dak_key
      GOSA 00:01:6c:9d:b9:fa
      "; + #$data = "
      gosa_remove_dak_key
      GOSA 00:01:6c:9d:b9:fa
      "; + + + ############################## + # NTP reload + #$data = "
      gosa_trigger_reload_ntp_config
      GOSA GOSA 00:11:25:4B:8C:E5
      "; + + ############################## + # SYSLOG reload + #$data = "
      gosa_trigger_reload_syslog_config
      GOSA GOSA 00:01:6c:9d:b9:fa
      "; + + + + + $sock->write($data); + $answer = "nothing"; + $answer = $sock->read(); + + echo "$count: $answer\n"; + $sock->close(); + }else{ + echo "... FAILED!\n"; + } +} +?> diff --git a/trunk/gosa-si/tests/db-check-clients.pl b/trunk/gosa-si/tests/db-check-clients.pl new file mode 100755 index 000000000..e3027465d --- /dev/null +++ b/trunk/gosa-si/tests/db-check-clients.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "known_clients"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/db-check-fai-release.pl b/trunk/gosa-si/tests/db-check-fai-release.pl new file mode 100755 index 000000000..ac4503dc4 --- /dev/null +++ b/trunk/gosa-si/tests/db-check-fai-release.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "fai_release"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/db-check-fai-server.pl b/trunk/gosa-si/tests/db-check-fai-server.pl new file mode 100755 index 000000000..1d6add484 --- /dev/null +++ b/trunk/gosa-si/tests/db-check-fai-server.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "fai_server"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/db-check-foreign-clients.pl b/trunk/gosa-si/tests/db-check-foreign-clients.pl new file mode 100755 index 000000000..95c420c9e --- /dev/null +++ b/trunk/gosa-si/tests/db-check-foreign-clients.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "foreign_clients"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/db-check-incoming.pl b/trunk/gosa-si/tests/db-check-incoming.pl new file mode 100755 index 000000000..014b22c97 --- /dev/null +++ b/trunk/gosa-si/tests/db-check-incoming.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "incoming"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/db-check-jobs.pl b/trunk/gosa-si/tests/db-check-jobs.pl new file mode 100755 index 000000000..5ecbe49a9 --- /dev/null +++ b/trunk/gosa-si/tests/db-check-jobs.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "jobs"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/db-check-messaging.pl b/trunk/gosa-si/tests/db-check-messaging.pl new file mode 100755 index 000000000..08e45280a --- /dev/null +++ b/trunk/gosa-si/tests/db-check-messaging.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "messaging"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/db-check-packages-list.pl b/trunk/gosa-si/tests/db-check-packages-list.pl new file mode 100755 index 000000000..e99c5e068 --- /dev/null +++ b/trunk/gosa-si/tests/db-check-packages-list.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: sqlite_check_packages_list.pl +# +# USAGE: ./sqlite_check_packages_list.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 28.02.2008 11:09:15 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "packages_list"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/db-check-server.pl b/trunk/gosa-si/tests/db-check-server.pl new file mode 100755 index 000000000..f0caeca3e --- /dev/null +++ b/trunk/gosa-si/tests/db-check-server.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "known_server"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/db-check-users.pl b/trunk/gosa-si/tests/db-check-users.pl new file mode 100755 index 000000000..c86be7c31 --- /dev/null +++ b/trunk/gosa-si/tests/db-check-users.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBmysql; +use Data::Dumper; + +print "START\n"; +my $table_name = "login_users"; + +print "\n############################################################\n"; +print "$table_name\n"; + +my $dbh = GOSA::DBmysql->new('gosa_si', '127.0.0.1', 'gosa_si', 'gosa'); + +my $col_names = $dbh->get_table_columns($table_name); +print join(', ', @{ $col_names } )."\n" ; + +my $answer = $dbh->show_table($table_name); +print $answer."\n"; + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/deploy-gosa-si.pl b/trunk/gosa-si/tests/deploy-gosa-si.pl new file mode 100755 index 000000000..3a19cf441 --- /dev/null +++ b/trunk/gosa-si/tests/deploy-gosa-si.pl @@ -0,0 +1,77 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: deploy-gosa-si.pl +# +# USAGE: ./deploy-gosa-si.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 22.04.2008 11:28:43 CEST +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; + +my $gosa_path = "/home/rettenbe/gonicus/Projekte/gosa/trunk/gosa-si/"; + +my %copies = ( + "/usr/sbin/gosa-si-server" => "gosa-si-server", + "/usr/sbin/gosa-si-client" => "gosa-si-client", + + "/usr/lib/gosa-si/modules/GosaPackages.pm" => "modules/GosaPackages.pm", + "/usr/lib/gosa-si/modules/ClientPackages.pm" => "modules/ClientPackages.pm", + "/usr/lib/gosa-si/modules/ServerPackages.pm" => "modules/ServerPackages.pm", + "/usr/lib/gosa-si/modules/ArpHandler.pm" => "modules/ArpHandler.pm", + + "/usr/share/perl5/GOSA/DBsqlite.pm" => "modules/DBsqlite.pm", + "/usr/share/perl5/GOSA/DBmysql.pm" => "modules/DBmysql.pm", + "/usr/share/perl5/GOSA/GosaSupportDaemon.pm" => "modules/GosaSupportDaemon.pm", + + "/usr/lib/gosa-si/server/ClientPackages/clMessages.pm" => "server/events/clMessages.pm", + "/usr/lib/gosa-si/server/ClientPackages/siTriggered.pm" => "server/events/siTriggered.pm", + + "/usr/lib/gosa-si/server/GosaPackages/databases.pm" => "server/events/databases.pm", + "/usr/lib/gosa-si/server/GosaPackages/gosaTriggered.pm" => "server/events/gosaTriggered.pm", + "/usr/lib/gosa-si/server/GosaPackages/logHandling.pm" => "server/events/logHandling.pm", + "/usr/lib/gosa-si/server/GosaPackages/mailqueue_com.pm" => "server/events/mailqueue_com.pm", + "/usr/lib/gosa-si/server/GosaPackages/opsi_com.pm" => "server/events/opsi_com.pm", + + "/usr/lib/gosa-si/server/ServerPackages/opsi_com.pm" => "server/events/opsi_com.pm", + "/usr/lib/gosa-si/server/ServerPackages/databases.pm" => "server/events/databases.pm" , + "/usr/lib/gosa-si/server/ServerPackages/gosaTriggered.pm" => "server/events/gosaTriggered.pm" , + "/usr/lib/gosa-si/server/ServerPackages/logHandling.pm" => "server/events/logHandling.pm", + "/usr/lib/gosa-si/server/ServerPackages/mailqueue_com.pm" => "server/events/mailqueue_com.pm" , + "/usr/lib/gosa-si/server/ServerPackages/server_server_com.pm" => "server/events/server_server_com.pm" , + + "/usr/lib/gosa-si/client/events/corefunctions.pm" => "client/events/corefunctions.pm", + "/usr/lib/gosa-si/client/events/dak.pm" => "client/events/dak.pm" , + "/usr/lib/gosa-si/client/events/gosaTriggered.pm" => "client/events/gosaTriggered.pm", + "/usr/lib/gosa-si/client/events/installation.pm" => "client/events/installation.pm", + "/usr/lib/gosa-si/client/events/mailqueue.pm" => "client/events/mailqueue.pm", +); + +while( my($new_file, $file_name) = each %copies ) { + #print STDERR "copy ../$file_name to $new_file\n"; + #system("cp ../$file_name $new_file"); + + my $del_cmd = "rm -rf $new_file"; + print STDERR "$del_cmd\n"; + system($del_cmd); + + my $ln_cmd = "ln -s ".$gosa_path.$file_name." $new_file"; + print STDERR "$ln_cmd\n"; + system($ln_cmd); + + print STDERR "\n"; +} + + diff --git a/trunk/gosa-si/tests/log-parser.pl b/trunk/gosa-si/tests/log-parser.pl new file mode 100755 index 000000000..7a7cd5e74 --- /dev/null +++ b/trunk/gosa-si/tests/log-parser.pl @@ -0,0 +1,51 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: log-parser.pl +# +# USAGE: ./log-parser.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 13.03.2008 14:51:03 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use Getopt::Long; +use Data::Dumper; + +my $pattern; +my $log_file = "/var/log/gosa-si-server.log"; + + +### MAIN ###################################################################### + +GetOptions( + "p|pattern=s" => \$pattern, + ); + +open(FILE, "<$log_file") or die "\ncan not open log-file '$log_file'\n"; +my @lines; +my $messages = {}; + +# Read lines +while ( my $line = ){ + chomp($line); + + # start of a new message, plot saved log lines + if ($line =~ /$pattern/ ) { + print "$line\n"; + } + +} + +close FILE; diff --git a/trunk/gosa-si/tests/sqlite-check-clients.pl b/trunk/gosa-si/tests/sqlite-check-clients.pl new file mode 100755 index 000000000..1b197ba14 --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-clients.pl @@ -0,0 +1,46 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; +use Data::Dumper; + +print "START\n"; +my $res; +my $db_name; + + +$db_name = "/var/lib/gosa-si/clients.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "known_clients"; + print "$db_name\n"; + print "$table_name\n"; + + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/sqlite-check-fai-release.pl b/trunk/gosa-si/tests/sqlite-check-fai-release.pl new file mode 100755 index 000000000..efb73d61a --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-fai-release.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; +use Data::Dumper; + +print "START\n"; +my $res; +my $db_name; + +$db_name = "/var/lib/gosa-si/fai_release.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "fai_release"; + print "$db_name\n"; + print "$table_name\n"; + + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/sqlite-check-fai-server.pl b/trunk/gosa-si/tests/sqlite-check-fai-server.pl new file mode 100755 index 000000000..1d237e824 --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-fai-server.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; +use Data::Dumper; + +print "START\n"; +my $res; +my $db_name; + +$db_name = "/var/lib/gosa-si/fai_server.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "fai_server"; + print "$db_name\n"; + print "$table_name\n"; + + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/sqlite-check-foreign-clients.pl b/trunk/gosa-si/tests/sqlite-check-foreign-clients.pl new file mode 100755 index 000000000..e3ebba80e --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-foreign-clients.pl @@ -0,0 +1,46 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; +use Data::Dumper; + +print "START\n"; +my $res; +my $db_name; + + +$db_name = "/var/lib/gosa-si/foreign_clients.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "foreign_clients"; + print "$db_name\n"; + print "$table_name\n"; + + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/sqlite-check-incoming.pl b/trunk/gosa-si/tests/sqlite-check-incoming.pl new file mode 100755 index 000000000..03a40e12d --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-incoming.pl @@ -0,0 +1,46 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; +use Data::Dumper; + +print "START\n"; +my $res; +my $db_name; + + +$db_name = "/var/lib/gosa-si/incoming.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "incoming"; + print "$db_name\n"; + print "$table_name\n"; + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/sqlite-check-jobs.pl b/trunk/gosa-si/tests/sqlite-check-jobs.pl new file mode 100755 index 000000000..b80039b62 --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-jobs.pl @@ -0,0 +1,46 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; +use Data::Dumper; + +print "START\n"; +my $res; +my $db_name; + + +$db_name = "/var/lib/gosa-si/jobs.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "jobs"; + print "$db_name\n"; + print "$table_name\n"; + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/sqlite-check-messaging.pl b/trunk/gosa-si/tests/sqlite-check-messaging.pl new file mode 100755 index 000000000..f7244ad8c --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-messaging.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; + + +print "START\n"; +my $res; +my $db_name; + + +$db_name = "/var/lib/gosa-si/messaging.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "messaging"; + print "$db_name\n"; + print "$table_name\n"; + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/sqlite-check-packages-list.pl b/trunk/gosa-si/tests/sqlite-check-packages-list.pl new file mode 100755 index 000000000..d01644e19 --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-packages-list.pl @@ -0,0 +1,46 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: sqlite_check_packages_list.pl +# +# USAGE: ./sqlite_check_packages_list.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 28.02.2008 11:09:15 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; +use Data::Dumper; + +print "START\n"; +my $res; +my $db_name; + + +$db_name = "/var/lib/gosa-si/packages.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "packages_list"; + print "$db_name\n"; + print "$table_name\n"; + + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/sqlite-check-server.pl b/trunk/gosa-si/tests/sqlite-check-server.pl new file mode 100755 index 000000000..18f59d7b5 --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-server.pl @@ -0,0 +1,45 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; +use Data::Dumper; + +print "START\n"; +my $res; +my $db_name; + + +$db_name = "/var/lib/gosa-si/servers.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "known_server"; + print "$db_name\n"; + print "$table_name\n"; + + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/sqlite-check-users.pl b/trunk/gosa-si/tests/sqlite-check-users.pl new file mode 100755 index 000000000..1f49f8cc5 --- /dev/null +++ b/trunk/gosa-si/tests/sqlite-check-users.pl @@ -0,0 +1,48 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: DBD-SQlite.pl +# +# USAGE: ./DBD-SQlite.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 20.12.2007 08:54:52 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use GOSA::DBsqlite; +use Data::Dumper; + +print "START\n"; +my $res; +my $db_name; + + + + +$db_name = "/var/lib/gosa-si/users.db"; +if (-e $db_name) { + print "\n############################################################\n"; + my $table_name = "login_users"; + print "$db_name\n"; + print "$table_name\n"; + + my $sqlite = GOSA::DBsqlite->new($db_name); + my $col_names = $sqlite->get_table_columns($table_name); + print join(', ', @{ $col_names } )."\n" ; + my $answer = $sqlite->show_table($table_name); + print $answer."\n"; +} + + +print "\nFINISH\n"; diff --git a/trunk/gosa-si/tests/testGOsa.pl b/trunk/gosa-si/tests/testGOsa.pl new file mode 100644 index 000000000..9ecb8f385 --- /dev/null +++ b/trunk/gosa-si/tests/testGOsa.pl @@ -0,0 +1,107 @@ +#!/usr/bin/perl +#=============================================================================== +# +# FILE: testGosa.pl +# +# USAGE: ./testGosa.pl +# +# DESCRIPTION: +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# NOTES: --- +# AUTHOR: (), <> +# COMPANY: +# VERSION: 1.0 +# CREATED: 06.12.2007 14:31:37 CET +# REVISION: --- +#=============================================================================== + +use strict; +use warnings; +use IO::Socket::INET; +use Digest::MD5 qw(md5 md5_hex md5_base64); +use Crypt::Rijndael; +use MIME::Base64; + +sub create_ciphering { + my ($passwd) = @_; + + $passwd = substr(md5_hex("$passwd") x 32, 0, 32); + my $iv = substr(md5_hex('GONICUS GmbH'),0, 16); + print "iv: $iv\n"; + print "key: $passwd\n"; + + my $my_cipher = Crypt::Rijndael->new($passwd ,Crypt::Rijndael::MODE_CBC() ); + $my_cipher->set_iv($iv); + return $my_cipher; +} + +sub decrypt_msg { + my ($crypted_msg, $my_cipher) = @_ ; + $crypted_msg = &decode_base64($crypted_msg); + my $msg = $my_cipher->decrypt($crypted_msg); + return $msg; +} + +sub encrypt_msg { + my ($msg, $my_cipher) = @_; + if(not defined $my_cipher) { print "no cipher object\n"; } + $msg = "\0"x(16-length($msg)%16).$msg; + my $crypted_msg = $my_cipher->encrypt($msg); + chomp($crypted_msg = &encode_base64($crypted_msg)); + return $crypted_msg; +} + + + +my $gosa_server = IO::Socket::INET->new(LocalPort => "9999", + Type => SOCK_STREAM, + Reuse => 1, + Listen => 1, + ); + + + + + +my $client = $gosa_server->accept(); +my $other_end = getpeername($client); +if(not defined $other_end) { + print "client cannot be identified:"; +} else { + my ($port, $iaddr) = unpack_sockaddr_in($other_end); + my $actual_ip = inet_ntoa($iaddr); + print "accept client at gosa socket from $actual_ip\n"; + chomp(my $crypted_msg = <$client>); + print "crypted msg: <<<$crypted_msg<<<\n"; + + my $cipher = &create_ciphering("ferdinand_frost"); + + my $msg = &decrypt_msg($crypted_msg, $cipher); + print "msg: <<<$msg<<<\n"; + + print "\n#################################\n\n"; + + my $answer = "gosa answer: $msg"; + + print "answer: $answer\n"; + + my $out_cipher = &create_ciphering("ferdinand_frost"); + my $crypted_answer = &encrypt_msg($answer, $out_cipher); + + print $client $crypted_answer."\n"; + +} + +sleep(3); +close($client); + + + + + + + + -- 2.30.2